北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

YAPC::Asia 2007 開催中(1)

適当に実況します。ネットワークとバッテリーが続く限り。

9:15

開場されました。結構ガラガラな感じです。

9:30

FONによる無線LANの繋ぎ方の説明。でも、回線安定しないのでEDGE使ってます。スケジュールは早くも押してて、38分スタートらしいです。

9:38 Welcome / Tatsuhiko Miyagawa

世界最大のYAPCらしいです。

9:48 Kwiki and the Symlink / Ingy dot Net

  • ドラエモンな猫 × 3
  • Ingy dot Netを本名にしたっぽい
    • "Ingy döt Net" in Hatena ... orz
  • Kwiki2.0の紹介
  • Symlinkを色々使っている
    • 依存するモジュール
    • ドキュメント
    • 継承
  • インストールを手早くするノウハウ?
  • やっぱ英語きつい(笑)

10:25 Virtualization and Package Deployment with EC2 / Emerson Mills

  • 日本語だ、やったヽ( ´-`)ノ
  • 再利用は素晴らしいが、開発環境が複雑になる
    • 再現がむずかしい
    • インストール時の依存の解決が大変
  • 仮装化の利点は?
    • リソースの最適化
    • 完成した環境をそのまま配布できる*1
  • EC2
  • Catalystの配布も便利になるかも
  • CGや自然言語処理やピークに対する補強などに利用されている
  • 微妙に違うイメージがたくさんできると、起動したいイメージがわかりにくい可能性がある
  • 使いたい人が好きなだけ使える環境ができたら、Beta版じゃなくなるでしょう

11:05 Higher-Order Parsing techniques for Perl / Mark Jason Dominus

12:00 ランチタイム

唐揚げ定食。

13:32 perl I18N in 20 minutes / Dan Kogai

また無線LANが繋がらなくなったよ。

  • perlI18Nは、Unicode
  • decode()してperlに取り込み、encode()して出力
  • PerlIO(新たに開くもの)とbinmode(既に開いてるもの)
  • サロゲートペアに関しては、JavaScriptPerlで表記が違うので注意
  • \N{文字名}
  • シンボルにUTF-8が使える
  • 正規表現UTF-8
  • \p{Katakana}
  • perluniinfoとperlunicode
  • Encode-JIS2K

13:52 Perlネットワークプログラミング再考 / Naoya Ito

  • httpdに飽きた( ´△`)
  • Perlで書いてもそんなに遅くない
  • Socket とか IO::Socket で Socket API 呼べます
  • sysreadとsyswriteで、バッファリングを迂回する
  • blockingの見分け方 (STAT = R or S, read_chan, CPU TIME 等)
  • sleepからHardware割り込みが発生するまでblockingされる
  • I/O Multiplexing: forkやthreadを使わないI/Oの並行処理*2
  • ※select()は引き数の数で動きが変わる
  • IO::Select で実現が可能
  • select(2)の弱点: C10K、効率 → epoll, kqueue, devpoll
  • Sys::Syscall または IO::Epoll (:compatモードでIO::Poll互換)
  • システムコールを抽象化し、イベントドリブンで書けるようにするperlフレームワーク
  • POE: 自社フレームワークのWEBサーバやIRCのボット
    • POE::Sessionをcreateし、Kernelをrunする
    • Kernelのselect_read()メソッドで非同期読み込みをする
    • POE::Wheel::〜 プラグイン的な部品??
    • POE::Component::〜 最上位のコンポーネント
    • IRCやCron, EasyDBI, Cron, MSN, Linger などのコンポーネントがある
    • 注意:blockingするコードを書いてはイケナイ
    • POE::Loop::EPoll による高速化
  • Event::Lib Event.pmと似ていて、よりシンプル
  • Danga::Socket 実績がある

14:46 Everything Vox / Ben Trott

  • 同時通訳(miyagawaさんthanksヽ(‘ ∇‘ )ノ!)
  • Six Apartの4つめのサービス
  • WEB2.0ってウェブトゥーポイントオーって読むのか・・・
  • XML::LibXMLを使ってる
  • GData, OpenSearch, Media RSS → Open Media Profile
  • Ajaxに関してはCatalyst + JSON-RPCを使っている
  • JavaScriptに関しては自作ライブラリ(ソースも公開されている)
  • Data::ObjectDriver
    • キャッシュがサポートされている
    • 透過的なパーティショニング*3
    • AUTO_INCREMENTは利用できない
  • yuidd ユニークなIDを発行するサーバを用意した
  • TheSchwartz ジョブの分散。Workerがポーリングしてジョブを処理する
  • TheSchwwartzはVideo変換や、キャッシュのクリアや、更新履歴処理に利用
  • Catalystは拡張性が高く、十分高速
  • TTはちょっと遅い
  • TTのテンプレートにアプリのバージョンを入れている(キャッシュ防止)
  • Perlbal
    • Staticなデータ
    • JSやCSSを結合してクライアントに送るプラグインを組み込んである
  • パーティショニングに関する横断検索のTips
    • インデックステーブルを別のサーバに作成する

15:37 Inside livedoor 2006-2007 / Tomohiro Ikebe

16:30 Perl Worst Practices / Marty Pauley

  • 変数の悪い例
    • グローバル
    • パッケージ名が長過ぎ?
    • local
    • myは局所的に使う
    • $1, $2等を使わずにmy変数で受ける
  • 正規表現の問題
    • クオートせずに使うと大変
    • Mail::RFC822::Address
    • Regexp::Common
  • OO不要

16:57 Perl 6 Today / Audrey Tang

  • Perl6の開発状況
  • Perl6の開発方法
  • IRC(様々なボットの利用)
  • *.pugscode.org
  • ML
  • Tie::Google!?
  • Perl5
    • 抽象化
    • 自然な省略
    • DRY、CPAN、Community
  • pugs 〜 v6-alpha 〜 v6-std
  • Perl6
    • 構文を単純に
    • 自然な規律
    • 動的?静的? → アノテーション+型推論
    • DSLGPL? → マクロ (Lexer?)
    • 遅延?先攻? → lazyキーワード
    • クラス継承?プロトタイプ? → メタオブジェクト
    • スレッド?プロセス? → STMトランザクション ( contend{ } )
    • SIMD?MIMD? → Hyper Operator ... 等
    • 様々の言語とMixできる
  • リリースは・・・クリスマス!(いつの?)

*1:これに対して、IngyのKwikiのアイディアはSVNを使って配布を行うってもの

*2:Apacheはforkやthreadを利用、LiteHttpdはシングルスレッド

*3:Data::ObjectDriver::Driver::Partition