今年もYAPC::Asiaに行ってきたので記念にエントリー。本当にただのメモ。
一部は聞くことができませんでしたが、充実した内容で楽しく、眩しかったです。こういうことやりたいなぁ・・。
一部は聞くことができませんでしたが、充実した内容で楽しく、眩しかったです。こういうことやりたいなぁ・・。
1日目
Perl 18N 弾さん
- Encode.pmはインターフェース
- Encode.pmのencodeとdecode
- encodeの代わりにPerlIOのencodig
- decode の代わりにbinmodeでSTDOUT
- encodeとdecodeは他言語でもできる
- だけど漢字とかのマッチができるのはPerlだけ
- seriousなinternationalizationsならperlがよい
- UTF-8
- Python/JSは文字によっては二つのコード番号をペアで書かないといけない
- unicodeリテラルをまともにサポートしてるのはPerl/HTML/XMLくらい
- EUCでは完全なマッチは無理。
- Unicodeはこんなのもある
- ?p{han}
- ?p{Latin}
Perl and UNIX Network Programing 伊藤さん
- http飽きてきた
- AC3はsocketのAPIをサポートしてる
- パフォーマンスはそんなに悪くない。
- 正しいアーキテクチャを選択すれば言語の選択肢は支配的ではない
- SocketはC言語をマップしてるだけ
- IO::Socket使えばわかりやすい
- sysread syswrite
- blocking中はCPUは仕事をしない
- blockが発生しないように並列で仕事しないといけない
- fork()
- thread
- signal I/O
- I/O多重化
- I/O多重化
- linuxの場合forkとthreadはほぼ同じ
- perlでselectコールが使える。でも難しい。IO::Selectなら簡単
- selectよりepollがいい
- Sys::Syscall
- epoll
- sendlife
- IO::Epoll
- だけどコードが複雑になる問題は解消されない
- モダンなPerlでのネットワークプログラミング
- POE
- Event::Lib
- とか
- 共通して大きく二つの機能を備えている
- イベントドリブンのプログラムにしてしまうというもの
- selectとかepollとかは速いやつを選んでくれるとか
- はてなフレームワークはPOE
- はてなのサーバ監視プログラムのbotはPOEとか。
- POEのyieldは非同期。終了するのを待たない。これがPOEの特徴
- strace -etree =selelect,read,write -p ''
- POEを使うとselectとかepollとか意識しなくていい。かつシングルスレッド
- POEのHTTP Clintは非同期だよ
- 巡回プログラムなどは向いてる
- そのためのフレームワークをMakiさんが作ってる
- POEはマルチタスクではない。POEの中でblockするとPOEがすべて止まる
- 2.6ならuse POE qw/Loop::Epoll/
- Event::libはlibeventのラップでシンプル。Event.pmに似てる
- Danga::SocketはMobileFSで使ってる
- ネットワークプログラミングはOSの知識が必要。
How we Build Vox 宮川さん & benn
- Net::Amazonとか使わない
- All of our tools use XML::LibXML
- PerlのXMLパーサなど使わない。特性がいろいろあるしmod_perlでロードしたくない
- AmazonのOpenSearch
- GoofleのGdata
- YahooのMedia RSS
- とか標準化されたもんを使ってる
- これらをまとめてMedia Prodfleとよぶことにした
- エントリーに付随するメディアデータをatomにかいてる。リッチなデータを付加している、と
- JSON使ってる。パースが軽い
- Catalyst + JSON+RPC
- SixApart内で作っているJSライブラリを使っている
- 大規模にスケールするアプリケーション
- DataObjectDriver
- O/Rマッパ
- Voxではmemcashedとかが重要だと思ってた
- memcachedと組み合わせることができる
- TheSchwartz
- Jobをさばくアプリ
- Catalystは柔軟性が高い
- そして十分に速い
- TTは速いけど遅いときもある
- TTはリクエストタイムの6割を占めている
- ユーザ毎にDBをパーティショニング
Inside livedoor 2006-2007 池邉さん
- CVS to SVN
- mod_dav_svn
- 認証はmod_auth_mysqlとBASIC認証
- あとtrac
- Sledge2.0はなんかぁゃふゃ
- 9割がPerl。Cはapacheモジュールくらい
- 検索系にJavaがあったり
- Apacheモジュールは非常に速い
- Cは大変だがApacheのAPR使うと楽
- 認証周りをapacheモジュールでやっとくとPHPのプロダクトあっても統合が簡単。
- トップページはApacheモジュール。ClearSilver template。C。
- ClearSilverは超速い。TTの50倍とか。ただ複雑なことはできない。HTML::Templateくらいの機能はある
- Catalyst
- Madeleine CMS
- Catalyst + DBIx::Class
- OpenSource
- 検索
- Senna + MySQL
- HyperEstraier
- Lucene
- Crawler
- いろいろ試した
- 今は二つ
- Xango : POE & not stable
- Parallel::ForkManager : Simple & stable
- 今後
- no RDMS. SQLはコストが高い
- 分散FS作りたい
- 小さい仕事をするデーモンを用意したい。
- 文書のクラスタリング
2日目
s/ Perl5 Regular Expression / Perl6 Regex and Rule /mixes; - Yoshinori Takesako
- 正規表現にフォーカスしたPerl6ガイド
- 正規表現はPerl6で大きく変わった
- ~~演算子。右辺と左辺入れ替えできる
- m修飾子の廃止
- /xがデフォルトに。スペースが無視される
- スペースは<space><ws>
- ?nはどんな端末の改行にもマッチするようになった
- /gは/eに
- (?:pattern)は[pattern]に
- [abc]は<[abc]>に
- マッチ失敗が実装された
- grammer
- m:perl5/とかけばperl5互換
(Ab)?using Class::C3 - Daisuke Maki
- C3とは。クラス継承、メソッドディスパッチの順番を決めるアルゴリズム
- Python/Perl5/DBLx::Classで使われている
- これが自分のプログラムで使える
- SUPERは@ISAのの左側から探索するから多重検証時に複数の親を呼べない
- そこでNEXTとかC3
- NEXTは次のメソッドがなくても呼び出せるがC3だとエラー
- NEXTは子の次に親を呼んでその後で子を読みに行くが、C3は子が沢山あれば子を先に読みに行く
- NEXTより倍以上速い。SUPERだけを使うよりは遙かに遅い
- プラグインと違ってインスタンスは常に一つ
- @ISAの汚染に弱い
- 大きめのフレームワーク向け
- 単一機能のコンポーネント化がしやすい
CDBI => DBIC - Tokuhiro Matsuno
- できることには大差ない
- CDBIの欠点
- スカラで呼んだ時のイテレータ
- firstでもLIMIT OFFSETしてない。オーバーヘッド高すぎる
- baseはIma::DBI。connections pooling勝手にしてる。無効化するの難しい
- プラグイン多すぎる。それコアでやれよ
- インスタンスメソッドはコピペでいける
- set_sqlとかしなくてもいける
入門DBIC::Schema::Loader - Atsushi Kobayash
- Loader使える。スキーマをモジュールに書き起こさなくていい
- リレーションとかプライマリキーの設定は自動的
- 外部キーの設定しておかないとリレーション設定は自動にならない
- だからMyISAMはだめ
- なのでラップすると良い
Writing Pluggable software - Tatsuhiko Miyagawa
- Ackをプラグイン化してみる
- Class:Trigger
- Observer Pattern
- Module::Pluggeble
- require => 1
- 本体に追加した行は2行で、もうplaggebleに
- 宿題。File::Extract使えばいろんなメディアのファイルに対応できるはずなのでやってみよう
- この二つはモジュールをプラグインで拡張できるようにしているもの。アプリは?
- Catalystのはプラグインではなくコンポーネント
- qpsmtpd
Way to the NAPC - Kenichi Ishigaki
- 今のCPANのボトルネックは作者だ
- CPANモジュール賢くなってる
- notest
- PPMイラネ
Assurer - a pluggable server testing/monitoring framework - Gosuke Miyashita
- Plaggerライクなサーバ監視テストフレームワーク
- YAMLファイルで設定
- テストは並列実行。POE::Wheel::Runで。
Perlbal - 小林さん
- ソフトウェアロードバランサ
- httpd機能も
- SSLもok
- Poundみたいなもん
- プラグイン拡張できる
- MogileFS使う場合は必須
ブラウザ履歴からRSS autodiscovery - ma.laさん
Moxy - ふしはらかん
- Mobile Deverovpent Proxy
- firefoxで携帯サイトみたい
- プロクシとしてMoxyを設定
- ドメイン単位でUA切替
- auの端末番号も送信
- 絵文字も一応だせる。今後はMoxy自体に機能を持たせる予定
i-revo
- 動画 + 静止画 + IRC
Expect - 長野さん
- 10数台のサーバのセットアップをどうするか
- 同じコマンドにSSHでコマンド実行。自動化したい
- ツール作った。mssh
Perl Program Repair Shop and Red Flags - Mark Jason Dominus
- コードを繰り返すのは間違っている