本を読む

読書やコンピュータなどに関するメモ

YAPC::Asia 2008 Tokyoに行ってきました

 日本最大、というか世界最大級のPerlイベント、「YAPC::Asia Tokyo」が、2008.5.16~17に開かれました。2006や2007もすごく面白かったので、今回も参加してきました。

 ただし、今回は仕事の合間にこっそりなので、限られたセッションしか参加できませんでした。それでもえらく楽しかったなぁ。あと、1日目は会場に行けなかったけど、ustreamでちょろちょろ聴いていました。というわけで、参加したセッションのメモ。

Moose(Yuval Kogman)

 Perl 5でOOPを普通のOOPっぽく書けるようにする仕組み「Moose」のセッション。Mooseは「まるごとPerl!」で名前を知りました。bashでOOPっぽい書き方をしてみたりする人間としてはwktkなのですが、Moose自体は「おもちゃではなく、実用品」ということで。

 Mooseのいいところは、自分でOOPの仕組みを書くような「退屈なこと」を減らせること。アクセッサとかコンストラクタとかValidationとかを自分で書かなくてもいい。こうしていつもの記述を減らして短く書ければ、typoを減らせるしテストする要素も少ない、読みやすくて、プログラミングの本質に集中できる。今年のbuzzwordだね(笑)と。で、XML+FlashなWebアプリで、XMLスキーマ→クラスをうまく実装して楽勝だった(意訳)とか。

 弱点としては、ロード時間が増える(でもMooseX::Compieもあるよ)とか、いくつかの機能が遅い(でも使った分だけだよ)とか、hashrefじゃないクラスの拡張はトリッキーだよ(でもMooseX:GlobRef::Objectもあるよ)とか。

 詳細としては、has_aとか、before/after/aroundとか。Javaのinterfaceに近いRoleというのがあって、実装も書けるからRubyのmixinっぽいよね、でもaliasもできて安心だね、とか。で、MooseはClass::MOP(Meta Object Protocol)のjust sugarだから、メタクラスを触れるしそいういうモジュールも用意されていて便利だよ、と。

How to defend Apache/CGI against multi-byte XSS attacks(Yoshinori TAKESAKO)

 HDR写真の話を枕に、Webサイトのセキュリティの話につないで、「XSSやSQL Injectionはなぜなくならないのか」という話。

 HTML Escapeは大事だけど、それだけではだめなケースとして、文字コードの解釈を突いたXSSを実演。そのあたりから、Apache側にリクエストのパターンでホワイトリストを設定して防ぐmod_waffulを紹介した(WAF=Web Application Firewall)。URLの正規表現や文字コード、整数値の範囲、必須パラメータなどを、httpd.confなどに設定できる。「達人プログラマ」いうところの「Design by Contract」で、今年はValidationがアツい、と。

 mod_waffulは実用に耐えるようパフォーマンスチューニング中で、近日公開予定とのこと。

Introduction to DBIx::MoCo(Naoya Ito)

 はてなオリジナルのO/Rマッパー「DBIx::MoCo」の紹介。ある程度の規模のサーバーを動かすうえで、泥臭いところに手を入れられるように自作したとのこと。

 基本的には生SQL+プレースホルダで書くほうが便利、という感じで、それに加えてRubyのActiveRecordあたりの影響を受けている。名前つきプレースホルダとか、メソッドチェーンで操作できる配列List::RubyLikeとか、fixtureで回帰テストとか。一方、has_manyとかで関連づけしたときにクエリーを多発させないためのプリフェッチとか、現場でよくあるパターンにも対応している。

 また、あとからでもmemcachedを簡単にかませたりできる透過キャッシュを紹介。はてなスターとかで実験してかなり有効だったとのこと。SQLの更新系のメソッドでは、検知してキャッシュ操作するとか。BKとしては、start_sessionとend_sessionで囲むと、不要になったキャッシュを整理してくれるという話も。

 CPANに上がっているので(jkondo氏作)、cpanシェルからインストールできる。ただし、テストが通りにくいものもあるのでforceが必要かも。ドキュメントが少なかったり古かったりするのが欠点かも、少しバグもあるみたいなのでパッチ募集中(jcondo氏宛)、とのことだった。

Perl Love for JavaScript Hackers(Ingy döt Net)

 みんな大好きIngyのセッション。本人いわく、「略称はMr. I.D.と呼んでくれ」とのこと。

 コンピュータの三大発明はシンボリックリンクとmakeとPerlで、makeの素晴らしさを教えるぜ、と(え?)

 えーと、理解できた範囲では、

「「JavaScriptのライブラリであるjQuery」を使ってメソッドチェーン風に定義したイベント」を定義して「「CPANからJavaScriptをダウンロードするJS.pm」を使ってPerlから入手した「Javascript版Template-ToolkitであるJemplate」」を使って「YAMLで書かれたデータからPerlで生成したJSONデータ」を読み込んでページを切り替える「「PerlのテンプレートエンジンであるTemplate-Toolkit」で出力したHTML」を、makeを使って生成する

だったような。

おまけ:昼飯

 2日目の昼には、Yahoo! Japan提供のカップラーメンが配られました。天気がよかったので、みんな外で食べて、とてものどかな光景。ただ、お湯の調達は大変だったみたいで、スタッフの方々がポットを持って食堂と往復していて、まるで少林寺の修行のようでした。感謝。

 で、おいしかったので調子に乗って2杯食べたら、さすがに喉が渇きました。自業自得。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/394-a20b7485

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad