YAPC::Asia 2008 2日目

今日は6時に起きて前日のレポートを書きました。自宅から会場まで Door to Door で 1時間くらいかかるので、9:45 の一番初めのセッションに出るためには 8:45 に家を出ないといけません。すごい朝型!さきほど帰宅しましたが、もうすでに相当眠いです・・。

FormValidator::Assets

  • FormValidator::Simple はそこそこ使いやすい
  • もっと DRY にしたい
  • input の name をベースに設定する
  • 設定を username.pl, password.pl みたいに作ってディレクトリ以下にごそっと置く
  • Catalyst の setup 時などにまとめて設定を読み込む
  • 絶賛開発者募集中

Moose

  • Class:MOP のシンタックスシュガー
  • 型がある
  • 型変換がある
  • プロパティの読み取り、書き込み属性の設定
  • 抽象クラスっぽい Role というものがある
  • 多少遅い
  • 2008年のバズワード

How to defend Apache/CGI against multibyte XSS attacks

  • mod_imagefight
    • 試験用に作成した Apache モジュール
  • mod_わっふる
    • パフォーマンスにも気をつかって作成

DBIx::MoCo

  • 大規模で使いたいために自作
  • Light and Fast Model Component
  • CDBI / ActiveRecord
  • Ruby ライクなリスト操作
  • 透過キャッシュ
    • 使うのが簡単
    • 更新や削除のタイミングでキャッシュも更新してくれる
    • start_session, end_session を書いた方がいい場合がある(ちょとバッドノウハウ
  • テストが簡単
    • YAML で書いておく
  • cpan にあります
  • SQL を書く
  • 名前つきプレースフォルダ

Introducing "MobaSiF" (Mobile Simple Framework)

  • 今日からオープンソースとしてリリース
  • 2003年から開発
  • レガシーだが安定
  • もばおく
  • ポケットアフィリエイト
  • モバゲータウン
    • 毎日5億PV
    • ユーザー1000万人
  • もばこれ
  • 絵文字変換
  • キャリア検地
  • 端末の種類と機種名と端末ID
  • テンプレートエンジン
  • 薄いフレームワーク
  • 環境
  • DoCoMo: FOMA(ただし https では i-mode ID が取れない)のみ
  • au: WINのみ
  • SoftBank: 3Gのみ
  • MobileEnv.pm
    • 接続元の IP を見てキャリアを判断
  • 絵文字
    • 3つのキャリアで違う
    • エンコードも違う
    • i絵文字で入れる
    • ない場合は似た絵文字が出る
  • テンプレートエンジン
    • バイナリ化されてメモリにキャッシュされる
    • シンプルな文法
    • エスケープ
    • IF, LOOP
    • 簡単なページで TT の10倍速い
    • ちょっと複雑なページで TT の22倍速い
  • 絵文字変換
    • Encode::JP:Mobile の3倍速い
  • Catalyst の 6倍速い
  • O/R マッパはない(SQLベタ書き)
  • Daemon.pm でデーモンを書きやすくする
  • MLog.pm
  • メール配信エンジン(mobamail)は後ほど公開されます
  • http://sourceforge.jp/projects/moba/
  • MySQL に依存した部分はそんなにないので他のものが使いたければ書き換えてね
  • リアルタイム性が結構重要なのでキャッシュはあんまりしていない

Improving your Catalyst application

  • 本を書きました
    • 初心者に最適
  • アクション
    • Local
    • Local('name')
    • Path
    • Path Args(0)
    • index はもう使わない
    • default は 404 を返すときなどに
  • Chained 便利
  • Catalyst::Action::REST 使おう
    • GET と POST で If 文を書かなくてすむよ
    • action_GET と action_POST が自動で呼ばれます
  • irc.perl.org/#catalyst
  • 太ったコントローラ
    • テストできないよ
    • 再利用できないよ
  • Moose を使ってロジックを書く例
  • DBICx::TestDatabase
  • Catalyst::Model::Apaptor
    • なんでも Catalyst にくっつけるよ
    • Adaptor は最初だけ作る
    • Factory はその度作る
    • PerRequest はリクエストの度作る
  • コントローラは本当に小さくするべきだよ
  • Config::Any で yaml, ini, perl, json でも設定がかけるよ
  • Moose の使いどころ
    • モデル
    • コントローラ(たぶん動くけど・・)
package MyApp:Controller::Foo;
use Moose;
BEGIN { extends 'Catalyst::Controller' };
  • 次のバージョンからは Moose を全面的に使うよ
  • App::TemplateServer

From POE to Erlang

  • 通常はシングルスレッド
  • ithread が最近できたけどつかっている人は少ない
  • fork() するもの
  • fork() は遅い
  • select ループは使いこなすのが難しい
  • スレッドは危険
  • POE でシンプルな例を作ったけどデッドロック対策とか難しいよ
  • GUI プログラミングはもっと難しいよ
  • POE はイベント駆動、協調モデル
  • Erlangアクターモデル
  • ムーアの法則が続いていれば2009年には32GHzになるはず
  • 速度は増えずにCPUコアが増えてる
  • マルチスレッドプログラミングが必須になりつつある
  • 並列プログラミング
    • 共有モデルはいろいろ気をつけないといけないよ
    • メッセージ交換モデルは何も共有しないよ(Erlangはこっち)
  • Erlang
    • 動的型付け
    • リアルタイム
    • パターンマッチ
    • リスト
    • サーバー・クライアントを作るのが簡単

Gungho and cloud computing, a scalable crawling and processing framework

  • クローラ ≠ スクレーパ
  • スクレイピングはもっと固定的な目的
  • 速度の限界
  • robot.txt
  • ユーザーエージェント偽装
  • I/O
    • strage
    • read / write
  • ゴール
  • アーキテクチャ
  • Gungho
    • ハイパフォーマンス
    • 非同期HTTPれクエス
    • 同期DNS検索
    • Provider
    • Engine
    • Handler
  • Amazon EC2
    • Xenベース
    • 使った時間ごとの課金
    • オープンベータ
    • S3 に HTML を溜める
    • EC2 -> S3 の転送は早くて無料
  • Gungho クローラ
    • 20 個の EC2 スモール版
    • 1.7GB メモリ 1 仮想コア
  • コーディング量もホスティングコストもだいぶ下がったよ
  • 数百万サイトのクロール

Perl Is unDead

  • 脳みそ〜
  • Perl は脳みそが必要です
  • PerlCOBOL みたい?
  • Perl は死んだ?
  • CPAN 登録速度はむしろ上がっています
  • Perl カンファレンスとハカソンの合計も増えています
  • Ruby は無視して
  • PHP は笑って
  • Python と戦って
  • 90年代、Perl 以外は遅かった
  • Perl はどこでも入っていた
  • Web 1.0 を制覇
  • Web 2.0 で見失った
    • PHPRuby が幅を利かせてきた
  • PHP, Ruby, Python も速くなってきたし
  • フォークソングみたいなプログラミング
  • シンプルさはどこに行った?
  • 今のフォークソングみたいなプログラミングは Javascript
  • Perl はいつもボトムアップトップダウンで使われることはない)
  • Perl は他の人たちと上手く付き合えない
  • 独自ドメインをとる
  • 世の中の人にもっと使われていることを知ってもらおう
  • SEO 対策をする
  • プログラムはユーザーが好きだ
  • 次のすげーアプリケーションを Perl で書こう
  • PHP アプリケーションをインストールしてみよう
  • ダウンロードしてきたらすぐ使える
  • 最初の10分を簡単にしよう
  • 他のギークのイベントに行こう
  • ランチを一緒にして新しいアイデアを取り入れよう