Lens*Spark

Flickrに投稿されてる写真をレンズごとに分類して一覧できるLens*Sparkというサイトを発見しました。
FlickrからAPIで取得できるExif情報にはレンズ名までは入ってないはずなので、どうやって取得してるのだろう?!
参考: 焦点距離別レンズ一覧

戦場より帰還

ここ半年ばかり、戦場と形容されるプロジェクトに派遣されていたのですが、ようやく戦時状態宣言解除されそうな今日この頃。

いろんな方面で不義理をしまくっていた気がするので、徐々に課外活動にも復帰したいと思います。

MacBook Pro買った

CA390077.JPG

流行に流されて10日ほど前にMacを買ってしまいました。MacBook AirじゃなくてあえてMacBook Pro 15inch。

買った後なんだかんだで忙しく遊ぶ暇が無かったのですが、今日ようやく1日かけてVAIOからデータを移行したりヤフオクに出したり、Leopard上の開発環境構築したり出来ました。

以下しばらく使ってみた感想。

  • 色んな意味でOSがVistaより軽快
  • Safari 3速い
  • マルチタッチトラックパッド快適、2本指でスクロールとか3本指で進む戻るとか
  • フォントの綺麗なUNIX
  • Ruby on Rails標準装備
  • eclipseもあるし
  • VMware Fusionの出来がまたいい
  • ハードウェア的というか、物理的にもう少し液晶パネルを後ろに倒せるようにして欲しかった

一時期、Mac OS Xが出てすぐの頃にMacを使ってたんですが、その頃と比べるとWindowsじゃないと困る事が激減してる事にあらためて気付かされますね。

いやしかし、あらためてMacとMac OS Xいいわー


影舞 0.8.7

久々にバグトラッキングシステム 影舞のバグ修正版Ver. 0.8.7がリリースされてます。


価格.comの写真共有サイト「PHOTOHITO」はレンズ別検索機能付き

photohito.gif

価格.comが新しく始めた写真共有サイト「PHOTOHITO」は、レンズメーカー別絞込み機能搭載だそうです。

Exifのレンズ情報解析は同一焦点距離の純正レンズとレンズメーカー製とでレンズIDが重複してるようなケースが非常に多いので、どうやってるのか気になって試してみた所、メーカー名や機種名は自動認識されるものの、レンズ名に関しては一度投稿した後「情報編集」画面で手動で入力するようになってました。(でも、なぜか今はプルダウンに登録レンズがありませんと出て入力できない・・・)
全自動は無理だとしても、PhotoXPのexifcodecライブラリ(GPLで公開中)を使えば半自動入力くらいにはなると思うので、ぜひ実現していただきたい:-) >価格.comの中の人

参考:


自分もそろそろPHPについて一言いっとくか

各所*1でPHPがネタになってるので、ここらで自分も一言いっとく事にする。

というのも、ここ最近必要に迫られてPHPのコードばかり(普段はJavaかRubyが多い)書いてた事もあって、PHPが叩かれてる理由は非常によく分かるんですね。

自分的には、PHP5のオブジェクト指向関係での微妙なJavaからのパクリ具合とか、Rubyより新しく出てきた言語にもかかわらず脈絡なく整理されてない標準ライブラリ関数とか言語仕様とか・・・
突っ込みどころを挙げるときりがありません。

だがしかしです、PHP5前夜の2003年、たまたまオリジナルのPHP作者であるRasmus Lerdorfと話す機会にに恵まれ、本人から聞いた所だと以下のような感触でした。

  • PHPはあくまでテンプレートエンジンだよ。

 これは、まつもとさんもRasmusがPHPは言語じゃない(ツールだ)と言ってたと日記に書いてますね。元々はPHP/FI(Personal Home Page/Form Interpreter)と呼ばれてた事からもみてとれます。

  • 大規模なシステムを作るにはC++とかJavaとかStrongly Typedな言語を使うべき。

これも、PHP作るくらいの人なら、もっと大規模なシステムならC++なり何なりで作って、PHPエクステンションにすればいいやといった感覚だと思われます。

Rubyのまつもとゆきひろ、PerlのLally Wallといった人々と比べると、PHPのRasmus Lerdorf はあまりBlogや公演等で語る事が少ないのか、PHPを作った動機とかスタンスについてあまり理解されてない気がするのですが、驚き最小の法則をモットーにシンプルで美しい記述が出来るオブジェクト指向言語を目指したRubyと、最初からApacheモジュールとして実装して、それまでのCGIスクリプトに比べ圧倒的に軽量な動作をするテンプレート言語を目指したPHPとでは、その出自の違いから、PHPの言語仕様が微妙かつ場当たり的になっちゃってるのは、まあ無理もないといった感じでありましょう。

それでも、Ruby以上の速度で世の中に受け入れられて行ったのは、Apacheモジュールに特化した言語という目の付け所の良さ、MySQL等DB接続ライブラリのサポートの良さ、Zend以降の高速化等当時必要とされていた利点が多々あったからであって、大規模システムや複雑なクラスライブラリをPHP言語だけで実装するという事が、そもそもの不幸の始まりなのではと思えてなりません。

その他、印象に残った話題としては、

  • 生まれはグリーンランド(デンマーク領だって初めて知った)
  • 日本のプログラマーの年収を聞いてびっくり!シリコンバレーのプログラマーは大卒初任給でも1000万くらいからスタート、シニアエンジニア級なら2000万以上も普通に居るよみたいな。。。
  • 前の職場はLinuxCare、その前はIBMに勤めてたけどIBMみたいな研究寄りカルチャーの会社ではPHPを作った事とかは全然評価されなくてショボーン、Yahoo!に入ってからはPHPを活用してもらえて嬉しい。

ってな話をしてくれたのを記憶してます。

なにぶん5年前、酒の入った席で僕のつたない英語力で聞いた話なので正確性は保障できませんが、以上が2003年秋@六本木の忍者コスプレ居酒屋にてPHP作者から直接聞いた話でした。

各所:


Rails 2.0への移行

近頃開発停滞中なPhotoXP 2.0αをRuby on Rails 2.0に対応させてみました。

参考までに、以下に移行に必要になった作業をメモしておきます。

1. デフォルトではセッションをCookieに格納するようになったため、config/environment.rbに設定を追加。


config.action_controller.session = { :session_key => "_photoxp_session", :secret => "ba41124efc149ce2f17a85b4b206a" }

2. pagenate機能はプラグインに分離されたので、classic_paginationプラグインを導入。

参考URL: http://d.hatena.ne.jp/idesaku/20071210/1197260363

3. Reloadableモジュールは廃止されたので、明示的にinclude Reloadableしている場合削除する。
今回はGoogle Mapsプラグインがそれに当たりました。

4. scoped_accessプラグインをRails 2.0対応版に更新。

参考URL: http://wota.jp/ac/?date=20060704

一言感想を言うとしたら、メジャーバージョンアップした割には意外とすんなり動いてびっくり。:-)


PPPoEマルチセッションで回線増強

あけましておめでとうございます。

しかし、新年早々あまりめでたくないネットワークトラブルのお話から・・・

昨日1/7 21時頃~1/8 0時頃まで、PhotoXP掲示板やこのblogの表示が非常に遅い状態が続いていたのですが、どうやら1年半ほど前に帯域制限かけられた時と同じく、プロバイダーの帯域制限にひっかかってしまったようです。

traf-week.pngグラフで見ると、月曜日(Mon)はきっかり帯域1Mbpsで抑えられてるのが分かりますね・・・

最近は投稿画像の枚数も増えてきて、1日のデータ転送量が十数GBに達する事もあるので、個人向けのBフレッツで運用している以上文句も言えないのかなと思い、急遽別のISPを契約して1つのサーバに2個の固定IPアドレス/PPPoEセッションを持たせて乗り切る事にしました。

以下、その記録です。(Linux/Fedora Core 6での例)

まず固定IPの使えるISPを調査(DynamicDNSでも良いのですが、一応安定性を考えて固定IPで)。EditNetという所が安そうだったのでここに決定。オンラインサインアップでBフレッツのPPPoE用アカウントとパスワードを発行してもらい準備完了。

まず、サーバに2本目のPPPoE設定を行う。ppp0の設定を元にppp1用の設定ファイルを作るため、まずはコピー

$ cd /etc/sysconfig/network-scripts
$ sudo cp -p ifcfg-ppp0 ifcfg-ppp1

次に、以下の設定項目をppp1用に編集、default routeやDNS(resolv.conf)はnoと書いてppp1接続確立時にppp1のISPに書き換えないようにするのがポイントです。
これで、ppp1用に割り当てられたIPへのアクセスのみ2つ目のプロバイダー回線を通るようになります。

NAME=DSLppp1
DEVICE=ppp1
PIDFILE=/var/run/pppoe-adsl-ppp1.pid
DEFROUTE=no
PROVIDER=DSLppp1
USER=userid@yourprovider.ne.jp
PEERDNS=no

さらに、パスワードは/etc/ppp/pap-secrets, chap-secretsに記述して設定完了。

adsl-startコマンドでPPPoE接続を有効にします。

$ sudo /sbin/addl-start ifcfg-ppp1

ifconfigコマンドで確認。

$ /sbin/ifconfig -a
...
ppp0
...
ppp1      Link encap:Point-to-Point Protocol
          inet addr:218.219.148.133  P-t-P:218.219.145.35  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1454  Metric:1
          RX packets:431220 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:28049357 (26.7 MiB)  TX bytes:54 (54.0 b)

ppp1インターフェースが表示されて、inet addrに正しくIPアドレスが表示されていれば繋がっているはず。
別のネットワークから、ブラウザに直接 http://%5BIPアドレス%5D/と入力してみたり、pingを打ってみたりして疎通確認をしてみましょう。

うまく行かない場合は、/var/log/messages にエラーが出力されているはずなので確認します。

これで、2つのIPのどちらでも同じ自宅サーバにアクセスできるようになったので、PhotoXP掲示板の画像は全てhttp://[ppp1のIPアドレス]/image/foo/bar.jpgといった名前でアクセスするようにphotoxpのconfig.rb内のIMAGE_URLを変更して完了です。

以上、負荷分散や片方のISPの障害時の対応等を考えると、もう少しやれる事はあるかと思いますが、
Bフレッツで自宅サーバを運用している人向けの、安く簡単に自宅サーバの回線増強をする方法でした。

追記:

ある日突然ppp1回線が使えなくなったのでいろいろ試してみたところ、
以下を参考にソースルーティングの設定をする事で復旧しました。

http://dsas.blog.klab.org/archives/50326299.html

ip route add dev ppp1 table 100
ip rule  add from www.xxx.yyy.xxx table 100 pref 100

しかし、今まで何故ソースルーティング設定無しで動いてたのだろう。。。

続きを読む »


メンテナンスリリース PhotoXP 1.7.5

約1年ぶりの1.7系であるPhotoXP 1.7.5をリリースしました。
主な変更点は以下の通り。

  • オリンパスの新しいMakerNote(E-410以降)に対応。
  • レンズデータの追加。
  • Ruby 1.9.0でのエラーを修正。

修正といっても、オリンパスのMakerNote形式が大きく変わっていたので、その対応と1年分のレンズデータの追加といった程度なので、バージョンアップの方はlib/exifcodec以下を上書きするだけでOKでしょう。

あと、ruby 1.9.0になってString#[](引数が数値1つの場合)の戻り値が文字コードから長さ1の文字列に変わってるようで、[0,1]のように書くことで1.8と1.9で同じ動作を期待できるのですが、逆に1.9で文字コードを取得したい場合はどうすればいいのだろう。。。

# ruby-1.8.6
p "a"[0] => 97
p "a"[0,1] => "a"
# ruby-1.9.0
p "a"[0] => "a"
p "a"[0,1] => "a"

PhotoXPのダウンロード

現在の最新バージョンは1.7.5(2007-12-31)です。

このプログラムはフリーソフトウェアであり、無保証です。
GNU GPLに基づいてこのプログラムを使用・変更・再配付することが出来ます。

<!–
PhotoXPに関する既知のバグについては、こちらを参照してください。
–>