YAPC::Asia 2008で見たいセッション
YAPC::Asia 2008は気になるセッションがたくさんあって困っていたんだけど、実際にはセッションを見ることはほとんどできなかったので今チェックしています。実はスライドはほとんどWeb上にあるし、動画もアップされるし、内容をチェックするだけなら会場に行かなくてもそれほど不自由はしないんですね。
それでも会場に行くメリットは、「実感できる」ということだと思いました。会場である(今回は)東工大の環境の素晴らしさとか、どれだけたくさんの人が参加しているのかとか、みんなとても楽しそうにしていることとか、日本語だけじゃなくて英語が普通に飛び交ってたりとか。さらにスタッフとして参加して、イベントを作り上げるためにどれだけの人ががんばっているかとか、最近は当たり前のように見ているストリーミング中継が実際にみんなの努力によって行われていることとか、そういうことを「実感できて」よかった。すごく楽しかったです!
で、以下が気になるセッションとチェックした結果。まだ全部チェックしきれてない・・ので随時更新する予定。
Tatsuhiko Miyagawa - Welcome to YAPC::Asia 2008
Kang-min Liu (gugod) - Continuous Testing
http://blog.gugod.org/2008/05/test-continuous-tool-that-makes-module.html
Test::Continuous
ファイルの変更を監視して必要なテストだけ実行できる。
継承関係も追って監視できる?
package Bar; use base 'Foo'; 1;
でFoo.pmが変更されたときBar.pmをテストするbar.tを走らせられる?
Tokuhiro Matsuno (tokuhirom) - about Perl5.10
http://svn.coderepos.org/share/docs/tokuhirom/20080515-yapc-perl510/
- say
- dor(//)
- state
- switch(given-when, foreach-when)
- 正規表現のnamed capture(?
)を$+{keyword}で参照? - stacked filetest(if -e -f -x $file)
などなど
Dan Kogai - PSL = Perl as a Second Language
http://www.dan.co.jp/~dankogai/yapcasia2008/psl.html
- Perl does NOT have an OO built-in.
Perl5のOOは
-
- reference - データを格納できる
- bless - オブジェクトが何をできるか見つけられる
だけ。だからOOをやろうと思ったら
-
- データの格納方法を決めて
- 何ができるか見つける方法をデータに教えればよい
InsideOutとかMooseとか。
- Perl is a context-oriented language.
- scalar/list
Kenichi Ishigaki (charsbar) - Web is not the only one that requires frameworks
Jesse Vincent - Step 3: Prophet - A peer to peer replicated property database
http://www.slideshare.net/obrajesse/prophet-a-peer-to-peer-replicated-disconnected-database
よくわかんなかった。
Chia-liang Kao (clkao) - Running Perlish Small Business with Perl
Daisuke Murase (typester) - FormValidator::Assets
http://svn.coderepos.org/share/docs/typester/formvalidator-assets/
- 同じ入力項目はフォームが違ってもルールを1回だけ定義したい。DRY!
- inputフィールドのnameベースのバリデーション
- assets
Hiroshi Sakai (ziguzagu) - OpenSource TypePad Mobile
http://www.slideshare.net/ziguzagu/open-source-type-pad-mobile
Masahiro Nagano (kazeburo) - memcached in mixi
Yuval Kogman (nothingmuch) - Moose
http://conferences.yapcasia.org/ya2008/talk/1017
- Moose is not experimental, toy, accessor builder, source filter, black magic, perl 6 in perl5
- Moose is a complete modern object framework for perl
- Moose is syntac sugar for Class::MOP
- Moose is stable & production ready
- lazyはdefaultを遅延させる。newではなく最初に$object->staffが呼ばれたときに呼ばれる
- 欠点
- ロード時間
- MooseX::Compile
- いくつかの機能が遅い
- hashrefじゃないクラスの拡張はトリッキー
- ロード時間
- 利点
Daisuke Maki - Getting Your Feet Even Wetter With XS
- PerlとC言語をつなげるためのフレームワーク
- SV
- SV以外
- SVの中身を取得する
- SVの中身は何?
- Perlの代わりにXSを書かない。XSはつなぎ役だから!
- Cの構造体をPerlとやりとりする
- typemap
- GCのタイミング
- SvMAGIC
XSは1回しか書いたことがないんだけど用語とかの意味がわかんなくて苦労した。それこそSVとかSvOKとか。
てきとーなXSコードを見ながらこつこつ調べていって書いた覚えがある。
typemapとかMAGICとかは初めて聞いた。そして意味わからない><
Naoki Tomita (tomi-ru) - use Encode::JP::Mobile; - Perl標準の機能を使った絵文字の相互変換
http://www.slideshare.net/tomita/use-encodejpmobile
- Perl標準のEncodeモジュールの方式で絵文字を含んだ文字列をencode/decodeできる
- FormからPOSTされたデータをdecodeしてアプリ内ではUnicode(flagged utf-8)で扱い、DBにはutf-8でencodeして格納
- DBから取り出す時にdeocdeしてアプリ内ではUnicode(flagged utf-8)で扱い、モバイル端末用にencodeして表示
これがキホン。さらに、
- 文字列から絵文字を除去
- PC向けに絵文字を画像で表示
といったことも可能。
Naoya Ito - Introduction to DBIx::MoCo
tokiharu noto - Introducing "MobaSiF" (Mobile Simple Framework)
http://conferences.yapcasia.org/ya2008/talk/1014
- MobaSiF == "Mobile Simple Framework"
- 2003年11月から開発
- 一部ではXSも使ってる
- large-scale mobile servicesでの実績がある
- Linux/Perl 5.8x/Apache/MySQL5.0.x
- DoCoMo FOMA/au WIN/SoftBank 3GC
- 絵文字
- MTemplate
- dispatcher
- URL rewrite
- benchmark
- TT, Encode::JP::Mobile, Catalystと比較して高速
- misc
- DA.pm - DBハンドルの管理
- Daemon.pm - デーモンを簡単に作るためのヘルパー
- MLog.pm - ログの記録
- mobamail - will be available
- License
- Attistic or GPLv2
- Now available!
Emerson Mills - DBIx::Class Crash Course: Using DBIx::Class and other modules to make DB driven apps easy
Masahiro Nagano (kazeburo) - mod_perlをjob workerとして使う
Jonathan Rockway (jrockway) - Improving your Catalyst application
http://conferences.yapcasia.org/ya2008/talk/1036
- Action Dispatching(Catalystを知ろう!)
- Catalyst::Action::REST(GETとPOSTを分けるのが簡単)
- Controllerにロジックを書くとテストできないし再利用もできない
- Catalystに依存しないようにロジックを書けばテストができるようになる
- Catalystからそれを使う場合はCatalyst::Model::Adaptorが使える
- configを書く場所
- Class
- デフォルト値を書く
- MyApp
- デフォルト値を上書き
- config file
- Class/MyAppの設定を上書き
- Class
- ACCEPT_CONTEXT
- Moose
- Base Controllerを書こう
- DBIx::Class
- MapMaker
- Restricted resultsets
- New Authentication system
おまけ
- App::TemplateServer
- アプリなしでテンプレートファイルをserveする
- データをYAMLで与えることができる(っぽい)
- テンプレートのテストに使える
Jesse Vincent - Everything but the secret sauce
http://conferences.yapcasia.org/ya2008/talk/984
- Hiveminderを作る過程で便利なツールをいっぱい作った
- バグを素早く検出
- テストがたくさんあって全部実行するのに時間がかかる(30min)
- prove -j 5 --fork(テストを並列実行、22min)
- TAP::Harness::Remoteを使ってサーバーで実行(16.5min)
- サーバーで並列実行(12min)
- EC2の4台のサーバーで実行(89sec)
- テストがたくさんあって全部実行するのに時間がかかる(30min)
- Carp::REPL
- Template::Declare
- Perlでテンプレートを書ける
- CSS::Squish
- App::ChangeLogger
- リリースは手作業が多くて大変
- shipitすればだいぶ楽だけど変更履歴は?
- Shipwright
- 依存モジュールが多いアプリはインストールが大変
- すべてをバージョン管理下においてパッケージングする
- 過去のビルドを再現できる
- あの依存モジュールが変更されたよ!といって慌てる必要がなくなる
- ビルド順も制御できるよ
- Date::Extract
- 文字列から日付を抽出
- ユーザーがフィードバックしやすくすること
- 返信すること
- Net::IMAP::Server
- タスク管理
Shipwrightは実際に使ってるけど便利です。一番始めに依存関係の解決とインストール順の解決が必要で、それは全自動というわけにはいかなくて大変だけど、これが終わってしまうと後はラク。インストール時に実行するコマンドも完全に制御できるってのもいい。例えば絶対にインストールが成功して動くことがわかってる場合にはmake testをスキップするようにすれば時間の節約にもなるし。適当なディレクトリを作ったりとか、なんかのシェルスクリプトをインストール後にコピーするとかmake installしたあとになんでもできるのも便利。
Atsushi Kobayashi (nekokak) - 古今東西ORマッパー
Casey West (cwest) - Build Domain Specific Languages with Perl
Kazuho Oku - Architecture of Pathtraq - building a computation-centric web service
- スケールアウトの話
- memory intensiveなサービスではサーバあたり32GB - 64GBのメモリ容量が最安
- データベース分割はしない。タスク単位で別サーバへ移動
- データの圧縮
- クエリキャッシュ
- ログ分析は集約演算(重い)
- Cache::Swifty
- 読み込みが速い
- Filter::SQL
- メッセージキュー
Faiz Kazi (fuzz) - From POE to Erlang
http://conferences.yapcasia.org/ya2008/talk/1055
- Perlの並行プログラミング
- ithread
- スレッドは難しい
- fork
- slow, overhead
- select
- 理解しづらい
- POE
- selectは難しいけどフレームワークがある
- イベント駆動
- POE with .. Kernel, Process, Session, Event, yield
- ithread
- プロセッサ
- マルチコア
- Models for Concurrency
- 2つの理論
- Shared State Concurrency
- Message Passing Concurrency
- Erlang
最近Perlネットワークプログラミングを読んでPerlの並列プログラミング(fork, thread, select, 非同期IOなど)を勉強していたので興味深かった。Erlang勉強したい。