YAPC::Asia 2010 で「映画にでてくるハッカーになりたい」というタイトルで発表してきました
- 動画:http://www.youtube.com/watch?v=Je-262ExU-Y
- スライド:https://docs.google.com/present/view?id=dcsh7dq6_2k43s7sdf
- realtime* 系のレポジトリ:http://github.com/cho45/realtimeresponsegraph
- KYTProf のレポジトリ:http://github.com/onishi/perl5-devel-kytprof
大変恐縮ながら投票でエンターテナー賞を頂きました。聞き間違えかと思うぐらいびびりました。ありがとうございます。ちょうど iPad の Safari でお絵描きツールを作りたいけど、継続的に使える実機がなくて困っていたので嬉しいです。
以下補足
realtime*
realtime* 系は動かすのにちょいと設定がいるので説明しておきますと (この説明でわかるかわかりませんが……)
~/.rrggc に以下のような感じのことを書く
Format::Apache::LogFormat->define_logformats(q[
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %{X-DCMGUID}i %{X-UP-SUBNO}i %{X-JPHONE-UID}i %{X-SID}i" mylog
]);これは realtime* が実行されるときに do されるファイルで、define_logformats の中は Apache のログフォーマットをそのままコピペするとたぶん動きます (動かないかも) responsegraph をとりたい場合には %D が必須で、accesstrack をみたいときは X-JPHONE-UID とか、ユーザど同定するセクションが必須です。
それで
tail ... | realtimeresponsegraph.pl --format mylog
とかやるとでてくる気がします。ほか、オプションがいくかありますが --format だけ必須です。
Devel::KYTProf
- http://github.com/onishi/perl5-devel-kytprof
- 僕がフォークしてるやつは前パッチ書いたときにやったやつなので、onishi さんのが一番新しいはずです (今はコラボレータに入れてもらったので直接コミットしてます)。
use するだけで
- DBI
- LWP::UserAgent
- Cache::Memcached::Fast
- MogileFS::Client
のメソッドコールが表示されるようになりますが、任意のメソッドの対して設定できるようになっているので自力で設定することもできるようになっているようです
あと、いくつか正規表現を設定できて、例えば
Devel::KYTProf->namespace_regex(qr/Hatena/);
とかやると、フックしたメソッドが呼ばれたとき、表示されるパッケージ名を、指定した regexp にマッチするパッケージまでたどるので、「自分のアプリ内で、どこからよばれているか」がわかるようになって便利です。