Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

Yokohama Perl Mongers Technical Talk #2

仕事の都合でちょっと遅刻して、18:40着です。

最近の Sledge の使い方 / clouderさん

  • CGIの頃と初期のSledgeと今のSledgeの比較
  • Dispatcher
  • Config
  • Template
  • Validation
    • Data::FormValidator (App::Data::Baseなどにvalidate()を定義)
    • Pageクラスから呼ぶ

Inside wasaco / kanさん

Perlじゃない話(1)。

  • wassrperlで出来ている
    • Perlの話はこれだけ
  • wasaco / adobe AIR、角丸ウインドウ
  • DBObject (DBIC風のASのORマッパ)
    • 先にCREATE TABLE
    • 欠点: 構造を変えにくい、リレーションの心配、パフォーマンス
    • 永続的なhashとして使う(keyとvalue、AMFでシリアライズ、EncryptedLocalStoreとの統合)
  • UIにmx.controls.HTML (WebKitベース。HTMLでかける)を利用
  • テンプレエンジンが欲しいね → tt風のTemplate作った
    • IFのネスト、FORには対応してない
  • Viewとしてのクライアント
    • MとCはWEBサーバ側に。
    • クライアントをビューに
    • 自分用キャッシュはクライアント、全体のキャッシュはサーバで
  • AIRの利点

as3orm / lyokatoさん

Perlじゃない話(2)。

  • ORMとは? → 略
  • Flashの近い道
    • 広告、メディアコンテンツ、WEBアプリ、AIR
  • インタネットを使えるデバイ
  • AIR+SQLiteの欠点
    • インストーラが作れない → create dbが使えない
    • update後も同様 → alter table無理
    • 非同期処理が辛い
  • as3orm
    • テーブル設計をAPIで行う。インデクスも追加可能
    • getTable() でDBICのResultsetみたいのを得られる
    • searchLiteralでSQL直書き
    • DBRowオブジェクトで、getColumnやsetColumn、removeできる
  • TODO
    • dynamicに
    • datetimeが文字列
    • inflate/deflate
    • migrationのコントロールの追加

PerlFlash Media Server! / typesterさん

  • AMF: Flash Playerのシリアライザ形式
    • 公開済
    • 0と3のバージョンがある
    • Data::AMF (AMF0)
  • RTMP
  • RTMPFlash Media Serverで何ができる?
    • Flash Player <=> FMSで相互呼び出し、オブジェクト共有、ストリーミング
  • RTMP実装
  • カマイタチ(Perl用実装)を作ってる
    • Remotingをサポート
    • ストリーミングサポート
    • Shared Objectは未実装
  • ストリーミング
    • Flash Playerからの配信(Webカメラなど) → これは楽
    • FMSだけでの配信 → こっちはパケット分割等必要。むずい。
      • MP3のみ簡単(CPANモジュール使用)*1
  • 各パケットの先頭に、種類、ビットレート等を示すバイトをつける(0x2f=MP3の例)
  • WEBカメラでのデモ

mod_securityとParse::ModSecurity::AuditLog Enough With Default Allow in Web Applications / trombikさん

  • mod_security
    • HTTPやApacheの情報を理解
    • 見識者の設計は必要
  • シグネチャの書き方
    • 正規表現とかでURL指定し、深刻度等
    • PHPのエラー画面を止めたりできる
    • Luaでルールを書ける
  • インストールした後何をする?
    • SecRuleEngine DetectionOnly → 全てをwarningに
    • アプリケーションのインタフェースを決めて、ルールの実装に落とし込む
  • ログは、 audit.log ← パースの仕方教えて下さい、とのこと
    • access_logは情報が少な過ぎる → Parse::ModSecurity::AuditLog
    • ログのタイプに、Serial(1ファイル)とConcurrent(1リクエスト1ファイル)がある
  • Test::HTTP::WAF
    • Test::Base ベース
    • リクエストと、それに対するレスポンスをシートに書いて、テストできる
  • Default Allowを辞めよう
  • WAFの問題
    • 設計が辛い(任意のリクエスト受ける画面もあるし、仕様書なんてあるの?w)

ここからLTです。

Perlモジュールだけで挑戦「画像の物体認識類似検索」/ yusukebeさん

  • Image::Seek
    • Pythonのimgseek(?)の移植
    • これは、写真全体の比較
  • Image::ObjectDetectで認識した部分をImage::Seek
    • 全体、顔、目を取り出す
  • デモ
    • 日本タレント名鑑で688名を比較
  • まとめ
    • 精度いまいち。
    • 角度

自作DBIC Pluginあれこれ / nekokakさん

acotie ちゃんのドキドキPerlプログラミング / acotieさん

プレゼン前に色々トラブって大変そうでした。

  • Plusenでプレゼン(Yappo!さん作)
  • Twitterのログを解析
    • WWW::Mechanize
    • XML::RSS
    • Macab(名詞、動詞、形容詞)
  • 頻度を調べる
    • その前に余計な単語のフィルタリング(自作ルーチン)
  • Google::Chartでグラフ化・・・は未実装

Monday Module / xcezxさん

  • PHPの人(Xなんとかさん)
  • MMとは??
    • 2003年に流行った。CPANモジュールを適当にピックアップしてコードを書く
    • 予行演習一回で終わった
  • 原因
    • モジュールの選択が難しい → モジュールって利用目的決まってるし
  • MMMを提唱 (Modern Monday Module)
    • 新しいモジュールを使う
    • Monday "Make" Moduleもいいかも
  • 結論: 勝手にやりゃあいいんじゃないの

いまどきじゃないテンプレートエンジン / kazeburoさん

  • HTML::Template::Pro, HTML::Template::Expr
    • HTML::Template::Proが熱い!(社内だけで
  • HTML::Template::Pro は HTML::Template::Expr の XS版
  • EXPR が使える
  • ユーザ定義関数が使える(register_function)
  • 速度
    • HTML::Templateの2〜5倍くらいの速度
    • TTと比べると20倍
  • 注意
    • オブジェクト使えない
    • 配列にはhashrefを入れる
  • まとめ: TT使う

最速Perl伝説 / zigorouさん

  • BenchmarkとB::Deparse でベンチ
  • B::Deparse で、最適化を見れる
  • インクリメント → ++$a が最速
    • B::Deparseを見ると、$a++は最適化で++$aになる
  • カンマ連結 → joinが最速*2
  • 文字連結 → ドット演算子が速いが、数が多くなるとjoinが速くなる*3
  • 同じ文字列の繰り返し連結 → x が速い
  • ループ → for(0 .. $max) が速い
  • 変数代入 → シングルクオートが速いが、ほとんど変わらない

まとめ

*1:ffmpeg使えば、動画も行けるんじゃないかなあ。

*2:メモ間違ってるかも

*3:メモ間違ってるかも