また参加したのでメモ.
Welcome - Tatsuhiko Miyagawa
今年はチケットの前売りだけで360人になって,当日券の人とスタッフと発表者を会わせると400人を超えちゃってこれまでのYAPCの中でも最大の人数らしい.
LarryやDamianはいないけどHigher-Order Perlの中の人が来ている.Lightening Talksをやろうといったのもこの人らしい.
あと,恒例のuse Dan::Kogai 'again';
Kwiki and the Symlink - Ingy döt Net
Ingy2.0
法的にIngy döt Netという名前になったようです.おめでとうございます.Ingyがfirst nameでDöt Netがlast nameでDötはmiddle nameじゃないよとか.パスポートだったと思うけど,ASCIIしか駄目らしいのでIngy Dot Netになってしまうとか.あと,ドットネットさんとか呼ばれたりするらしい.ほんとかな.
Kwiki2.0
クィッキーって発音するっぽい.初めて知った.Perlベースのwikiエンジン.2.0になって何が変わったのかというとインストールしやすくなった.svnでチェックアウトするだけ.モジュールの依存関係をどうするのかという点でどうするのかというとsymlinkを使っているらしいのだが,ここはよくわからなかった.メインのところなのに….symlinkなんでwindowsはサポートしていないとのこと.
Kwikiにはプラグインが多いのでどれを使ったらいいのかわからない.そこで,どれを使うかを決める設定のようなもの(フレーバー)を使う.最初は有名なフレーバーをつかって,その後,カスタマイズしたり,設定を継承したりできるらしい.この継承にもsymlinkを使っているらしい.
デモをやろうとしていたのだが,ネットワークのせいか失敗してた.
Virtualization and Package Deployment with EC2 - Emerson Mills
Emerson Millsさんはamazon.co.jpの人.amazon web serviceの日本版を担当しているらしい.日本語ペラペラでした.amazonには好きなだけPerlを書いてよしと言われたので就職したのだとか.
Ingyさんのセッションと同様にcpanモジュールのインストールめんどいよね,という話から始まり,そこで仮想化ですよという話.Amazon EC2というのは仮想化マシンのWeb API?で,ユーザが構築した環境をイメージとして公開することができる,そこで,cpanモジュールをインストールしたイメージを使えばいいんじゃないかと.
Higher-Order Parsing techniques for Perl - Mark Jason Dominus
Perlで再帰降下型パーザといえば,DamianのParse::RecDescentなんだけども,これはclosedなんでカスタマイズしにくい.そこでHOP::Parserを使ってよりopenなコードを書こうとしている.
ただ,カスタマイズしやすいだけでなく,Higher-Orderとあるように関数合成を行ったり,関数を返す関数をつかったりして,分かりやすくパーザを構築していた.
ここでの話はHigher-Order Perlに載っているらしい.あと,Higher-Order Perlはオンラインにのせるらしいけどいつになるかわわからない.
perl I18N in 20 minutes - Dan Kogai
最初のEncode.pmの基礎の部分は去年と同じ感じだった.あとは,Ruby,Python,JavaScriptなどのLLと比較していた.リテラル,charname,識別子,正規表現について比べるとPerlは全部対応している.ほかの言語は大きなコードポイントを表現するのにサロゲートペアを使わなければならなかったり,charnameに対応していなかったり,マルチバイトの識別子を書けなかったり,正規表現のブロックを利用できなかったりする.
Perlネットワークプログラミング再考 - Naoya Ito
ネットワークプログラミングをやっているとI/Oブロッキングが起こって困る.I/Oブロッキングというのはファイルやソケットに読み書きする時にCPUは利用していないの止まってしまうこと.ネットワークプログラミングでは,サーバに複数のクライアントが接続するとき,一つのクライアントへの読み書きで止まってしまい,他のクライアントの処理が出来なくなる.そこで,プロセスのforkとかthreadを使うとかがあるけども,それらはリソースを食うので時間がかかる.
そこで,selectやpollを使う.これらはプロセスやスレッドを生成しないのでリソースを食わない.I/O処理が終わった時点でユーザプロセスに通知して残りの処理を行い,I/O処理をしている間に他の処理をすることができる.でも,selectやpollは古くて効率が悪かったりする.そこで,新しいOSの機能を用いる.それがepoll(linux)や/dev/kqueue(BSD)やdevpoll(Solaris)である.epollを使うモジュールとしてIO::EpollやSys::SysCallなどがある.
他にmodernなモジュールとして
- POE
- Event::Lib
- Danga::Socket
- Stem
- Coro
などがある.これらは共通して,イベントドリブンであり,抽象化を行っている(pollを使っていようとepollを使っていようと同じインターフェース).
あとはPOEとEvent::LibとDanga::Socketの紹介.
Everything Vox - Ben Trott
sixapartの新しいブログサービスVoxの内側について.以下の3つの視点から.
- Web2.0
- Scalability
- Fast
Web2.0
いろいろなものに対してWeb APIを提供.出力形式はRSSとAtom.たくさんのXMLパーザをインストールしたくないし,効率を考えてXML::LibXMLのみ入れてRSSやAtomをを出力したり解析したりしている.また,オープンな規格であるOpenSearchやGDataやMediaRSSをまとめたOpen Media Profileというフォーマットを作って,対応させている.あと,JSONのAPIもある.
Scalability
LiveJournalで使っていたData::ObjectDriverを利用している.その中でキャッシュとパーティショニングを用いることでScalabilityを高めている.キャッシュはmemcachedを使っており,primary keyで検索する物はキャッシュする.パーティショニングはユーザごとのデータはパーティションに分かれており,グローバルなユーザID-パーティションIDのマッピングテーブルからパーティションNoを取得し,そのパーティションNoを指定することでユーザの属するパーティションからユーザのデータを取得する.ここでユーザIDにオートインクリメントは使えないので, 独自のID発行サーバを利用している.これもスケーラビリティに入るらしいのだが,ジョブ管理サーバみたいなものを独自に作って,バッチ処理的なものを実行している.例えば,動画のフォーマットをflvに変換するとか.
Inside livedoor 2006-2007 - Tomohiro Ikebe
livedoorで最近起こったこと.
cvsからsubversionに変更.pserverを使っていたらしいけども,mod_auth_mysqlとmod_dav_svnを用いてmysqlを利用した認証に変更した.
Sledge2.0ということでSledgeも古くなったので2.0にしようと.Catalystみたいなことができるようになったのだが,いつ2.0になるのかは不明.というか,作ろうとしているという行為が2.0だと.
言語は基本的にPerlを使っているのだが,apacheのモジュールを書くのにCを使ったり,luceneを使うためにjavaを使ったりしている.
Sledgeがあるけども,Catalystもちょっとした管理側のツールを作るために使っている.最近はmadeleineというCMSの開発に利用した.
Perl Worst Practices - Marty Pauley
変数使うなとか,OO使うなとか.あともう一つあったけれども忘れました.Regexpだったかな.
Perl 6 Today - Audrey Tang
Perl6の構成とか歴史とかコミュニティとか文法について.マクロとか型推論とか最後の方は意味はわかるのだが,スピード的についていけなかった.
あと,鳳たんと梅田さんネタがあった.