■2009-09-02
* [Perl] Acme大全 in YAPC::Asia2009
先日の追記にもありますが、9月10〜11日のYAPC::Asia 2009で、『Acme大全2009』を販売します(専らお昼休み)。販売スペースを確保していただき、ありがとうございます。>台場さん、岩切さん
そういうわけで、オライリーさんなどに混じって売ることになるわけで……当初Acme大全の表紙に'MO=REILLY'とつけようとしたのですが、つけなくて良かったよかった。
はてぶ、twitter等で確認できた方々の分も合わせて、結構な冊数持っていきますので、手に入らないってことはないかと思います。参加されない方で欲しい方は……ごめんなさい、誰かに託すなどで……
あとついでに、去年の夏コミに出した『Pythons & PerlMongers』もコピー誌から製本に刷り直して若干持っていきます。TRPG好きーな方は、話のタネにでも。
■2009-09-04
* [Perl] Acme大全 2009 追補
前書きでAcme 315ディストリビューションとか書いた割にはsearch.cpan.orgで調べると、さらにいくつかのモジュールが出てきます。抽出に02packages.details.textを使っているのですが、どうもこれらのモジュールはリスト化されないようで……すみません。
コミケの直前ではAcme::Tinyのみ気づいて急遽ペーパーをはさんだのですが、今ちゃんと調べたら全部で7 Acme取りこぼしてます。
そういうわけで、既に購入された方、これからされる方は、こちらのページから追補をご確認ください。
■2009-09-14
* [Perl] YAPC::Asia 2009にうってきました
10〜11日に大岡山で開催されたYAPC::Asia 2009に行ってきました。
Acme大全とP&Pを運んでいったのですが、いやはや、重かった。当初2人がかりで同人誌を運ぶ予定だったのですが、私が週初めに風邪を引いて治りかけで本調子ではなく、おまけに相方も風邪でダウンしたので一人で全部運ぶことに。旅行かばん、大きなリュックサック、大きな手提げ…… 家から大岡山まで何度かの乗り換えでは、階段を上ったり降りたり。現地についた時は精も根も尽き果てて、もう帰ろうかしらとか。
ともかく、スタッフの方から机と椅子をお借りして、ブースの設営です。オライリーさんの斜め前に陣取ります。さらに正誤表や折込チラシをはさまなければならなかったのですが、石垣さんと加藤敦さんが手伝ってくれました。本当に助かりました。ありがとうございます。
・折込チラシ(PDF)
・訂正、追補等はこちらから
おかげさまで、たくさんの方に手にとって頂くことができました(大全90冊、P&P35冊)。ありがとうございます。以下雑感:
・弾さんから「PODにしないの?」と。私自身、Acme大全についてはWikiベースの方が良いと考えているのですが、どうしても「触れる実感」といいますか、本の形態にこだわっていて、なかなか踏ん切りつきません。いずれ検討。
・「献本キボンヌ」のyappoさんに献本し忘れた。「謹呈」の紙プリントしてきたのに。
・kyannyさんとのお話。過分な言葉を頂いた。他、色々な方に同人誌の感想を頂いた。嬉しい。
・領収書を用意する必要があるとわかった。
・ブースの写真ぐらい記念に撮っておけばよかった。
・孤立行政法人トタン葺き推進機構
とりあえずこんな感じ。ここまでの文章、どこをどう見てもYAPC::Asiaの話とは思えない。
ここからは、YAPC::Asia 2009の内容についての感想。体が本調子じゃなかったので、できるだけ省エネモード。なのであまり回れなかった。以下、いくつかについて。
PlackとPSGI(miyagawaさん、tokuhiromさん):早速色々試してみたい。
Perlハッカーのための遊べるPostgreSQL(Kaga Makotoさん):普段PostgreSQL使っているので。最初は8.4の話で、その後PL/Perl。
AnyEventとCoro(miyagawaさん):これも色々試したい。冒頭、AnyEventの作者にメールすると罵倒されるという小ネタ。私もJSON::XSがらみのメールで怒られたことがあったので(そして「すいません」というと、そのことで「何でネガティブになるのよ?」とまた突っ込まれる)、思い出して笑った。
DBIx::Skinny(nekokakさん)の話、行きたかった。が、仕事が入り、泣く泣く外で作業。
スケールするウェブアプリケーションを20分でつくる方法(Oku Kazuhoさん):こういう作業に直面する経験はないけれど、面白い。
kamaitachi - perl flash media server(typesterさん):仕事で使えそう。
大規模画像配信を支えるPerl(kazeburoさん):画像変換のモジュールの長短が興味深かった。
Asynchronouso Programming for (A)synchronous Communication(malaさん):内容の密度濃いので追いつけない。後で資料ゆっくり確認したい。
記憶(nothingmuchさん):前々から使ってみたいと思っていたモジュール。今朝加藤さんがKiokuDB::Tutorialを翻訳してくれてた。
それと、Where are "Casual Perlers" ?を読んで、自分ももっと積極的にならないとダメだな、と強く感じた。ここ数年Acme〜だけで日誌が埋まっている状況を打破したい。なので、これからはもっと色々書こう。
水曜日は特別研修に行ってきます。
■2009-09-18
* [Perl][近況] YAPC::Asia特別研修にいってきました
YAPC::Asia特別研修のDBIX::ClassとMySQLによるPerlアプリケーションのスケーリング術(講師:John Napiorkowskiさん)に参加しました。
午前中はDBIx::Class関連とスケーリング、パフォーマンス向上のための技術の紹介。まず最初にカードの山から特定のものを取り出す作業を通じて、一人より数人同時が、数人同時より予めindexした方が早いということを体験。→しかしその後の話には絡まない。
話は結構行きつ戻りつで、あまり体系だってはいなかったので、大雑把にまとめると:
DBICとかSQL関連
- DBICが吐くSQLは遅い件について→最近はかなり良くなってきている
- 複雑なjoinも可能。ドキュメント、tディレクトリ参照。
- DBIC_TRACE=1は友達。実行SQL全部吐かせる。さらに1=log_fileでファイルに出す。
- DBIx::Class::QueryLogも便利
- DBICのResultSetをうまく使いこなしてパフォーマンス向上
- ページング
- column指定による取得カラムの制限
- prefetch(データ不要ならjoin)
- HashRefInflatorで単純なhashrefを返す
- PKにauto_incrementだとスケーリングの際に問題になるかも→そういう時はUUID使う
レプリケーション
- 最近のDBICはレプリケーション機能のサポートが充実してきている
例:マスター・スレーブ間の許容遅延時間を設定できる。
(許容値を超えたらレプリケーションプールから取り除かれる) - マルチマスタはサポートしていない→誰かやらない?
ジョブキュー
- TheSchwartzとかGearmanとかQ4M
キャッシュ
- CatalystでESI(エッジサイドインクルード)
- カーソルキャッシュ(有効時間設定)
- 滅多に変わらないデータなら最初にourな変数に保存してしまう
さらにHashRefInflatorで、ただのハッシュレフにしておく
デバッグ、プロファイリング用
- DBIx::Class::QueryLog(Catalyst 5.8系ではtraitされる)
- MySQL::Sandboxで簡単にリプリケーション環境がつくれる
make_replication_sandbox /path/to/tarball...
- Test::DBIx::Class
mysqlかpostgresqlがあれば自動的にテストテーブルつくってくれる
レプリケーションサポートは未実装
午後から課題:
テーブル毎にチームに分かれてアプリをつくる。レプリケーション、ジョブキュー、キャッシュのうち、少なくともどれか一つの技術を使う。また、DBICのResultSetでの効率化の小技を使う。
自分のいたテーブル:
メンバー3人。お問い合わせフォームに入力すると一端DBに内容を保存時した上でジョブが発生し、Workerが管理者にメールを送信するアプリ。使ったものCatalyst、TheSchwartz、Email::Send。最初にTheSchwartzのdoc読んで使い方把握して、担当分けて作業。Funaki Taroさんとこのノートに集約。しかしうまくログインできないため、コードはgithubに置くことに。githubうまく使えなくてFunaki Taroさんに教えてもらう。時間足りなくなってきてFunakiさんガシガシコーディング。すみません、本当にお世話になりました。>Funakiさん
以上、スケーリングの話がメインになると期待していたのでちょっと拍子抜けで残念。Napiorkowskiさんに何か質問すればよかったのだろうけれど、後半作業で一杯いっぱいになって、そんなこと考えてる余裕がなかった……反省。この日の最大の収穫はgithubの使い方がわかったことです。
↑一部から奇異の目でみられた私のノート。これペアプログラミングができるんですよ。
反対側の人は心の目でディスプレイを見なければならないんですけど。
追記(2009-09-21):ziguzaguさんのレポート→YAPC::Asia 2009 特別研修 - DBIx::Class と MySQL による Perl アプリのスケーリング(おまえのログ)。細かくメモされていています。