読者です 読者をやめる 読者になる 読者になる

ぱいぱいにっき

Pythonが好きすぎるけれど、今からPerlを好きになりますにっき

#hachiojipm にいってわいわいがやがやしてきましたのとMongoDB.pmをMooに書き換えてみた話

Perl

実ははちぴー2回目です、マコピーです。

そんなわけでHachioji.pm #27 : ATNDにいってまいりました。


今回はハッカソンからの参加です〜
なのでこんなことやってLTでわいわいがやがやしゃべってきました。

なぜかslideshareに上げれないのでspeakerdeckに

要は前にやってたMongoDB with MouseのやつをMooに変えるやつですね。
だいたいの流れはMouseでやった時と同じなんですが、MongoってAUTOLOADでDB名を$conn->db_nameでアクセス出来るみたいな機能があるんですが、そこで大文字メソッド(実際にハマったのはDESTROY)を除外するようなことをしていなくて、コケまくっていました。
????ってなっていたところを@さんや@さんに助けてもらいました。ありがとうございます。

あとテスト見てたらold_hogehogeみたいなやつがあって過去のモジュールとの互換性をとるためのやつがあって、例えばMongoDB::Connectionで豪快にdelegateしてるやつがあるんですよね。具体的にはこういうの。

has '_client' => (
    isa => 'MongoDB::MongoClient',
    is => 'ro',
    handels => [
      grep { $_ =~ /^(new|meta)/ }
      map { $_->name } Class::MOP::Class->initialize('MongoDB::MongoClient')->get_all_methods
    ],
);

やっていることは、MongoDB::Connectionにきた
にMongoDB::MongoClientにあるメソッドを全部丸投げ。
こちらとしてはmetaはMoose使っちゃうのであまり使いたくないのですが、ここの解決だけは出来なかった感じです。

でもベンチは動いたので晒します。

同名モジュールを切り替える奴は2013-04-01 - 酒日記 はてな支店を参考にしました。
で、結果がスライドの通り遅くなっているわけですが、こいつはまだMooX::lateとか使っていて、あとmetaの抑制(Moo::sification)もしていないのでこんなかんじになったんだと思います。
そういうところを洗練していけばMoose版を上回る結果になっていくと思います。

あ、あとperlcodesampleさんに前回の記事のコメントで教えていただいたMangoなんですが、PP実装でベンチはしていないもののすっきりしているもんだからどうかなーと見てみたら、依存にMojo入ってるんですよね。
Mojo使ってないのでちょっと手を出しづらくなってしまいました。すみません。さすがにDB使うのに使わないWAFを入れたくはない。

参考:
MooX::late をためす


さて、Hachioji.pmですが、2回目の参加ということで、1度目の失敗を踏まずにお題ガン無視の複数枚スライドで挑みました。
他の方は順調にノルマを達成していて置いてけぼりになっていった感はありますが、他の人の発表を聞いていて「お題、『今でしょ!』だったんだなあ」と知った次第です。許してください。

さて、他の方々のLTだと、「CPANのAlgorithm以下のネームスペースがスカスカだから狙い目」だとか、「mod_perl芸人」だとか、「Javaにハメラレタ話」だとか、「XS期」だとか、「無料ホームページスペースでplackup!!!!!!!!!!!!」だとか、そういうのが興味深かったです。
他の人のスライドが(大人の事情で公開できないものを除いて)アップされると思うのでお待ちしております!!!111

そのあとにあずまさんとソシャゲー開発の話とかで盛り上がっていました。いやー、ゲーム作りって楽しいんですよね。次、運が良ければ一番初めの企画段階から関わりたいところです。。
あと「Redisのorder setだけ切り出して欲しい、10年前に」という発言だとか、新卒ISUCONの話だとかもしてきました。はぁ〜ISUCON怖い〜。

というわけでみなさん嵐の中お疲れ様でした!
2回目なので若干近めに感じた八王子でした〜