tokuhirom's blog.

'; DROP DATABASE database();

POE と Danga::Socket に思う

POE と Danga::Socket は、両方とも似たようなところで使われることが多い部品なわけです。

が、なんだかんだで結構違いがあるなーと思います。

POE はそれぞれの機能が綺麗にモジュール化されていて good なのですが、その裏で実装はお世辞にも綺麗とはいえない感じ。混沌としています。妙なところから coderef ぶっこんでたりしてわけわかめ。

一方 Danga::Socket は素朴です。Brad products なので、brad らしさがにじみでており、よくも悪くも brad です。Perlbal, DJabberd, Gearman::Client::Async などで実績もあります。

POE や Danga::Socket のような領域のアプリケーションは非同期に動作するのでバグが発生するとワケワカメになるわけですが、POE を使っていた場合の方がワケワカメ率が高い気がします。POE の場合、どこでふんづまってるのか調査するのがめんどい印象。Danga::Socket は素朴な実装なのですぐにわかるます。

POE はいろんなパーツをくみあわせて使うことになるんだけども、バグが起きるとどのパーツでつまってるのか全部ばらして調査することになるから厳しい。

とかまあ、そんな感じの POE のアレコレの雑感でした。

PoCo::Client::YahooMessenger+PoCo::Client::HTTP でボット書いててバグがみつからねーよーと1ヶ月探したあげくにまんどいから Danga::Socket+Gearman::Client::Async で全部かきなおしたヘタレによる愚痴でした。

# けっこういいことかいてるつもりなんだけど、こんなネタじゃスターもつかないよ!