YAPC::Asia2008 2日目レポート
昨日に引き続き、YAPC::Asia2008Tokyoに行ってきました
今年のYAPCは2日間なので、今回が最終日のレポートです
メモした内容を書けるだけ書いていったら長くなってしまいました
会場到着
- 5分ほど遅刻しましたorz
JavaScript::Writer fun. (gugod)
- PerlのコードからJavaScriptを生成
- 例
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); });
- 例>
- I reallylike jQuery
- 動機
- RJS (Ruby-Generated Javascript) cool sexy
- prototype.js :(
- Javascript::Codeは完備&Objectiveだが冗長 :(
- js = Singleton Object & Global Valiable (笑)
js->dothis(sub { js->alert(); #$_[0] {);
- @DB::args self.pmを作って解決
FormValidator::Assets (typester)
- 同じことを何度も書かないため(DRY)のモジュール
Opensource TypePad Mobile (ziguzagu)
- TypePadの説明
- 共通HTML生成 -> キャリア向けのHTML生成
- 画像縮小・圧縮
-
- URLはMTが物のみ対応。後で抽象化
- MTOSテンプレートエンジン
- MTタグを使用したテンプレート
- フィルタリング
- HTML書き換え
- DOCTYPE、accesskey
- 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はできる
- 監視は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
- last.fmが開発
- Cache::Memcached::Fast
- memcachedプロトコル互換の開発が活発
- TokyoTyrant
- DBMにTokyoCabinetを使用する
- mixiではログイン時間の保存に使用している
How to defend apache/CGI against multibyte XSS attacks (takesako)
- パンフの画像はHDRという手法使ってます
- shibuya.jpegで教えてもらった
- サウンドハウスの機材買ったら、情報漏えいでクレカ再発行になりました
- 情報漏えいがなかなかなくならないのはなぜか
- 大人の事情で開発が遅れる
- waffle.org
- mod_imagefight
- apachefilter
- mod_imagefight
- サニタイズ言うな
- HTML Scapeしてもダメな場合
- IEのEUC-JPのバグ
- 定義外の文字を使ってごにょごにょするとダブルクオーテーションが作れてJavaScriptを動かせる
- mod_waffle
- The Apache Modules Bookいいよ
20 modules I haven't yet talked about (miyagawa)
- 2.pQuery
- Web::Scraper's friend
- 5.Numbers
- 8. Hepburn Romanization
- 9. Online id/pw mangament
- 10. XML
DBIx::Class Crash Course (Emerson Mills - dhsonny)
- Catalystのモデルでよく使われる
- ORマッパー
- テーブル連携(1:1, 1:多, 多:多)
- やはりjoinは難しい
mod_perlをjob workerとして使う(kazeburo)
- 昔
- DBに接続しっぱなし
- XML::Paserで古くて遅い
- 新RSS crawler
- LibXML
- atom 1.0対応
- Scalability, Avalability
- それPla
- Aggregator
- HTTP::Async
- NetHTTP::NB
- コンテンツが数Gだとまずいから頓挫
- Aggregator
- mod_perlをjobworkerに
- HTTP::Async
- kicker / kicker managerで冗長化
- memcachedも導入
- POE::Wheel::Run
- POE::Component::Server::HTTP
- 複数のmanagerを走らせたときに2重に処理しないようにDBにも工夫
- urlごとにfetcher_seedに0-59の値を割り当て
- mod_perlを使うと何がいいか
- tips
- jobは細かく分けよう
Perlとリアルデバイスを繋げるって快感 (Yappo)
- termでプレゼン
- make:tokyoが開かれたし、今ハードが熱い!
Perlの!数学!妄想夢芝居! (Shinya Hayakawa)
- 私のuse strictとらないで〜
From POE to Erlang (Faiz Kazi)
- 最初だけすごくうまい日本語で、後はずっと鬼のような早口の英語で、英語を記録するのがやっとでした
- とりあえず、書き取れた部分だけ公開します。スライドはあとで日本語つきで公開するらしいです
- 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
- erlangシンプル書ける
- Thread are dead
- STM may help
- Message passing is worth a lock
- influence Java
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
- HTML from Engine
- POE COMponents Message Queue
- pluggable strage engine
- swarmage
- Engine
- Amazon EC2
- Xen Based
- Intergrating EC2
- store raw HTML for S3
- Result
- MILLION of sites
- 開発効率高い
- Q:HTTP::Asyncと比べた?
- A:知らなかった