memori

Alternative facts

php と xdebug-profiler できれいな画像をだしてみた

おひさしぶりです!何ヶ月ぶりだっていう感じですが,たまにはブログを書いてみますか。

僕は今オトバンクという会社で開発をしたりしなかったりしているんですが,自社のサービスの速度に不満があるわけです。とはいうものの,どこが遅いのかとか真面目に調べたことがなかったので,いっちょやってみっかと言う話です。

で,最初は PEAR の Benchmark_Timer とか Benchmark_Profiler とかをあちこちに仕込んでたんですが,xdebug にも profiler があることを思い出して,いろいろやってみました。(といっても,たいしたことしてないですが)

うまくいくと,下のような画像ができます。

profiler

今回試した環境はざっくりこんなかんじ。

とりあえず,xdebug の profiler を有効にします。

xdebug.profiler_enable=1
xdebug.profiler_output_dir="/var/log/xdebug"
xdebug.profiler_output_name = cachegrind.out.%s

こうすると,/var/log/xdebug ディレクトリに cachegrind.out._path_to_hoge_php みたいなファイルが出来ます。あ,もちろん Apache とかに書き込み権限が無いとだめですよ。

生成されたファイルは WinCacheGrind とかを使って開くことができます。このままでも楽しいんですが,もっとステキに見たいわけです。見える化ってやつですね。(たぶん)

そこで,xdebugtoolkit というものを使います。

こいつは,さっきのファイルを graphviz とかで扱える dot ファイルにしてくれます。dot ファイルにしてしまえば graphviz で好き勝手出力できるわけですよ。ほら,簡単でしょ。

./cg2dot.py /var/log/xdebug/cachegrind.out._path_to_hoge_php | dot -Tpng -ooutput.png

こんな感じで叩いてあげれば output.png として出力されます。(graphviz が対応している format なら何でも出せると思う)

こいつで作ったのが最初に貼りつけた画像(例としてOpenpearのトップページを実行したもの)です。

こうやってみると,楽しいですよね。いろいろフレームワークの比較とかもしてみたい気になりますね。誰かやってくれるよねきっと。

「sotarokを勝手に祝う会」についてなど

あまりにもふざけきったエントリだけでは申し訳ないので,ちゃんとイベントについても感想を。

イベントの発案自体は 8/5 17時あたり。その数分後に atnd が立ち,みるみるうちに 50人も集まってびっくり。

最初は集まった何人かで sotarok を囲んでどこか飲みにいければいいかな,という程度にしか考えて居なかったので「エラいことになってしまった…」と思った。

最初は僕と wozozo で「どうしよねこれ..」と途方にくれていたけれど,nequal のみんなはやはり最高の仲間だった。いやほんとみんなありがとう。って俺が言うのもなんか変かな。

その日の夜には wedding.nequal.jp を公開した。これは僕が帰宅してからさくっとでっち上げたもので,インターネットエクスなんとかなど全く考慮しない素敵な素敵なコーディングを披露できた。ごめんなさい。

ちなみに,ハートマークに sotaro が二人並んでいる,冷静に考えるととても気持ちの悪い素敵な Happy Wedding 画像は,アシアルの方にサクっと作っていただいた,というよりは,いつの間にかあった。すごい。

慣れない大規模なイベント,しかも準備期間は2週間。今回のイベントの MVP は @yuchimiri ですね。会場の手配からいろいろな調整もゆちがいないと全然できなかったと思う。ほんともう頭が上がりません。言いだしっぺの僕は結局ロクに何も出来なかったなー。

イベント前後の様子は このtogetter でまとめられています。うん,バタバタしてますね。イベント当日も togetter で見たほうがきっと臨場感が伝わるんじゃないかなとかとか。

写真とか,いろんな人が撮ってたので,気が向いたら見せてくださいね。進行やらなんやらで結局あまり記録できなかったのが心残りです…。

二人には喜んでもらえたかな。幸せになってくれるとうれしいな。

2007年末に nequal を立ち上げたときは,こんなことになるなんて想像できなかったけど,本当に素敵な仲間が集まったなーー。とかつらつら書こうと思ったけど,先月からずっと draft 状態だった記事をとりあえず公開してしまおうと思いました。なんだか中途半端な感想なのはそのせいです。nequal の生い立ちとかそのへんもいつかまとめてみたい。

最後に。

二度目は無いからな!w

sotarok の結婚を勝手に祝った

発案からわずか 2週間。こんなに慌しくイベント開催の準備をしたことはあっただろうか…。

事の発端は 8/5の sotarok の Tweet から。

婚姻届提出なう

Twitter / Sotaro KARASAWA: 婚姻届提出なう

イマドキ,結婚の報告は Twitter で行われるようで,みるみるうちに 100件以上の「おめでとう」という Reply / ReTweet の嵐。

しまいには全くの他人からまで祝われていた sotarok。

sotarok の人脈に感心すると同時に,Twitter の凄さを目の当たりにした気分でした。

というわけで,そんなすごい TwitterPHP から操作する方法について,いろいろなブログ記事はありますが,今月いっぱいで Basic 認証が使えなくなることもあり,今一度改めてまとめてみようと思った次第です。

今回はとりあえず,コマンドラインから任意のメッセージを送信する方法についてのみ解説しますが,そこさえわかればあとは API ドキュメントとかでなんとかなります。ええ,なりますとも。

実際に動作させた環境は以下のとおりですが,5.2 とかでも動くと思います。

さて,まずは PEAR パッケージをインストールします。

pear install -af Services_Twitter

オプションの「af」は,alldeps と force です。つまり「依存関係を解決しつつ,何があってもとりあえず強制的にインストールする」といった感じですね。Services_Twitter が依存しているパッケージが beta だったり alpha だったりするので,何も考えずに force しちゃいました。

おっと,忘れていましたが,もちろん Twitter への OAuth の登録も必須です。それくらいは,できますよね?

お次は,プログラムを書きますよ。と行っても,何ら特別なことはしません。

http://gist.github.com/585649

これだけ。

世の中には便利なパッケージがたくさんありますね。めでたしめでたし。

nequal で開発合宿した

世の中が勝間和代をバカにして盛り上がっていた GW 中の 5/4~5 にかけて,我々 nequal は開発合宿をしていました。

開発合宿とは言っても連休中に突発的な合宿で宿も取れず,路頭に迷っていた(無計画な)我々を快く受け入れて下さったアシアルは素晴らしい会社ですね。

というわけで,会場はみんな大好きアシアル。

nequal の皆がそれぞれ目標を定めてPCに向かってひたすらキーボードを叩いていました。GWなのに。

おいらは Openpear。もうかれこれ一年近く作る作る詐欺を続けていますが,とりあえず今回の合宿でリリース作業の書き直しをしました。rhaco2 と PEAR の相性がわるくて(っていうか PEAR が酷過ぎる。アホだあれ。)途中まで書いたコードを全部フレームワークを使わずに書き直したりと,毎度毎度なにか苦しめられていますね。GWなのに。

なんだかんだで作業は捗るので,またやりたいなー。

ゆどうふさんごちそうさまでした。