YAPC::Asia2008 2日目レポート

昨日に引き続き、YAPC::Asia2008Tokyoに行ってきました
今年のYAPCは2日間なので、今回が最終日のレポートです

メモした内容を書けるだけ書いていったら長くなってしまいました

会場到着

  • 5分ほど遅刻しましたorz
JavaScript::Writer fun. (gugod)
js->alert("niihao");
print js->as_string;

>alert("nihao");

js->object("jQuery('#msg')")->show();

>jQuery('#msg').show();

#AUTOLOAD

js->jQuery("#msg")->show();

>jQuery("#msg").show();

#if(...){...}else{...}

js(false)->do(sub {
        js->alert(42);
    },
    sub {
        #otherwise
        js->alert(42);
    });
  • Javascript::Codeは完備&Objectiveだが冗長 :(
  • js = Singleton Object & Global Valiable (笑)
js->dothis(sub {
    js->alert();    #$_[0]
{);
  • @DB::args self.pmを作って解決
FormValidator::Assets (typester)
  • 同じことを何度も書かないため(DRY)のモジュール
  • Form::Validator
    • 複雑
  • Form::Validator::Simple
    • シンプル lyokato++
  • HTML::FormFu
    • 最近出たモジュール、いいアイディアいっぱい
    • でも大きすぎる
  • PlaggerEFTをインスパイア
  • inputのnameベースでvalidation
  • サイト全体で共有
  • ディレクトリに設定ファイル(.pl)をいっぱい置く
  • CodeReposで開発中
  • Q:なぜ設定ファイルがpl?
    • A:DSL使いたかった
  • Q:デフォルトの設定ファイルほしい
    • Q:考えておきます
Opensource TypePad Mobile (ziguzagu)
  • TypePadのケータイからの閲覧部分のみOSS
  • 共通HTML生成 -> キャリア向けのHTML生成
  • 画像縮小・圧縮
    • URLはMTが物のみ対応。後で抽象化
  • MTOSテンプレートエンジン
    • MTタグを使用したテンプレート
  • フィルタリング
  • HTML書き換え
    • DOCTYPE、accesskey
  • CSS
    • 外部CSSの内部化、style化
  • Encode
    • Encode::JP::Mobile
  • HTML::Split作った
    • HTMLタグの構造、ツリーを壊さずにページを分割できる
  • HTML::Mobilefilter
  • HTML::Paserを継承
  • 絵文字をGPL2/CCで公開
  • Open Mobile Development
  • 今までmobileの開発はオープンじゃなかったから、もっとオープンに開発しようよ
memcached in mixi (kazeburo)
  • memcachedとは
    • 分散メモリキャッシュシステム
    • ハッシュ的に使う
    • オンメモリなのでrestartで消える
  • さまざまなサービスで使われている
  • クライアントの分散アルゴリズムで分散する
  • Cache::Memcached
    • memcached作者が作成したモジュール
    • get, get_multi
    • add , replace, set
    • deleteの第2引数で上書き禁止の文字列を設定できるが、禁止できるのはaddのみでsetはできる
  • 事例
    • Pentium 4 / Pentium D
    • MEM 4G
    • Kernel 2.6.x x86_64
    • 100台以上
    • 1つで3G使用
    • poolは70数台
    • HIT率94%
    • メモリ使用率88%
  • 監視はnagois
    • max: 15000req/s
    • 普通: 7000-8000req/s
    • トラフィック: 400Mbps 10000connect
    • CPU Usage: 低い
    • load avarage: 1以下
  • 無限ループ
    • assoc_findでloop busyが起こる
    • おそらくlinked lsitが壊れるのが原因
    • hashpowerを増やすpatchで対処
  • 分散アルゴリズム
  • Consistent-Hashing
    • nodeを広大なID空間に配置し、hash値からそれよりも大きい値のnodeを使用
    • ketama
  • Cache::Memcached::Fast
    • 高速・軽量
    • Cで書かれている
    • memcachedサーバとのconnectionをキャッシュしない
    • rehashしない
    • mixiでもこれに移行しようとしている
  • memcachedプロトコル互換の開発が活発
How to defend apache/CGI against multibyte XSS attacks (takesako)
  • パンフの画像はHDRという手法使ってます
  • shibuya.jpegで教えてもらった
  • サウンドハウスの機材買ったら、情報漏えいでクレカ再発行になりました
  • 情報漏えいがなかなかなくならないのはなぜか
    • 大人の事情で開発が遅れる
20 modules I haven't yet talked about (miyagawa)
  • 20 -> 10
  • 1.YAPC and Wifi
    • HTTTP::ProxyPac
  • 3.Migrating PHP apps to Perl
    • Crazy Idea: share PHP session with Perl
    • /tmp{session_id}
    • PHP::Session
    • I've never used it
DBIx::Class Crash Course (Emerson Mills - dhsonny)
  • Catalystのモデルでよく使われる
  • ORマッパー
  • テーブル連携(1:1, 1:多, 多:多)
  • やはりjoinは難しい
mod_perlをjob workerとして使う(kazeburo)
  • mixiでは、自分の日記に外部ブログを設定する部分でRSS crawlerを使っている
    • 22万件(5月現在)
    • 2時間以内ですべて巡回
    • DBに接続しっぱなし
    • XML::Paserで古くて遅い
  • RSS crawler
    • LibXML
    • atom 1.0対応
    • Scalability, Avalability
  • それPla
    • Aggregator
      • HTTP::Async
    • NetHTTP::NB
    • コンテンツが数Gだとまずいから頓挫
  • mod_perlをjobworkerに
  • 複数のmanagerを走らせたときに2重に処理しないようにDBにも工夫
    • urlごとにfetcher_seedに0-59の値を割り当て
  • mod_perlを使うと何がいいか
    • Apacheでメモリ管理ができる
    • Apacheで並列処理をしてくれる
    • startup.plで効率化できる
  • tips
    • jobは細かく分けよう
Perlとリアルデバイスを繋げるって快感 (Yappo)
  • termでプレゼン
  • make:tokyoが開かれたし、今ハードが熱い!
Perlの!数学!妄想夢芝居! (Shinya Hayakawa)
  • 私のuse strictとらないで〜
From POE to Erlang (Faiz Kazi)
  • 最初だけすごくうまい日本語で、後はずっと鬼のような早口の英語で、英語を記録するのがやっとでした
  • とりあえず、書き取れた部分だけ公開します。スライドはあとで日本語つきで公開するらしいです
  • Perlプログラマによる並列志向プログラミング
  • apache::Multiple
  • Perlに並列は必要?
  • Perl6から並列処理をサポート
  • Perl5ではめったに使わない
  • fork
    • dark slow
  • Thread
    • scary
  • select loop
    • 低レベルの知識、難しい
  • POE
    • Select loop framework
    • No Thread
    • No Lock
    • イベントドリブン
  • example
  • sillyサンドイッチ作る
  • sillyサンドイッチ作るの飽きたー
  • スレッドにGTK+使えるけど注意が必要
  • POE
    • highfy modular
    • protocol stack abstraction
    • Non blocking Event driven
    • currency without Locks
    • flavors and variation
  • ムーアの法則を覚えてますか?
    • クロック数ではなく、core数が増える
  • Erlang
    • フォルトトレント
    • currency without Locks
    • lightweight process
    • さまざまな場所で使われている
    • 関数型言語
    • sinble Assignment (asin Haskell)
    • 動的型付け
    • lambda
    • List comprehensions
    • More List Comprehentions (coun'd not registed)
    • Building servers is intuitive
      • A parallel server
    • digression into real - time stuff
    • Doubleclick Problem
    • Thread are dead
    • STM may help
    • Message passing is worth a lock
Gungho and cloud computing, a scalable crawling and processing framework (Jeff Kim)
  • Makiさんが作った
  • scalable crawler
  • Provider
    • Extended: Gungho::Provider
    • Pull URL Processing
    • Gungho::Engine::POE
    • Gungho::Components::Throttle::Provider
    • Gungho::Components::Core
  • Handler
  • swarmage
  • Engine
  • Amazon EC2
  • Xen Based
    • Intergrating EC2
    • store raw HTML for S3
  • Result
    • MILLION of sites
    • 開発効率高い
  • Q:HTTP::Asyncと比べた?
    • A:知らなかった
感想
  • 超楽しかった
  • 名前だけで顔を知らない人にもいっぱい会えてよかった
  • 予想はしていましたが英語が辛かったです
  • 英語の勉強がまだまだ足りてない!

主催者の皆さん、発表者の皆さん、参加者の皆さん、関係者の皆さま本当にお疲れ様でした。