うまいぼうぶろぐ

linuxとhttpdとperlのメモ

YAPC::Asia 2008 1日目

畑違いなのは重々承知ですが、去年に続いて今年も参加させていただきました。
というわけで覚えてる限りの内容メモ。

tatsuhiko miyagawaさん - Welcome to YAPC::Asia 2008

  • 仕事で来れない人がちらほら
    • 仕事とYAPCどっちが大事なんだとw
  • YAPCに来たらみんなPerl Mongers

Larry Wall - A Standard That Is Meant To Be Broken, 本当に!

全く理解できませんでした(’A`) わかったのは

  • Perl6は冗談ではない

ということw

matsuno tokuhiroさん - about Perl5.10

  • perl 5.10 を使うべき510の理由 (はてぶ的に)
  • 5.12は開発中
  • perl6はいつかのクリスマスに出る
    • いつ出るかは聞いてはいけないらしい
  • 本題 2007年に5.10出たけどつかってる人少なくね?
  • 5.8互換なのでモジュールも問題なし
    • use featureしなければ、完全に5.8互換
  • dor operator
    • $c = $a || $b;
    • $aが空文字、0のときにうっかり嵌る
    • use featrue qw/dor/; $c = $a // $b;
  • state変数
    • キャッシュする
    • Cのstaticみたいな?
  • switch構文も出来たよ
  • stack ファイルテスト演算子
    • -x -f -s $file

dankogaiさん - Perl as a Second Language

  • なぜ外国語を習うのか
    • 他の言語を学ぶことで自分の言語を見直せる
  • プログラミング言語も同様
  • perlruby,pythonと似ている点
  • perlschemeにも似ている
  • perlrubyと異なる点
    • rubyは何でもかんでもオブジェクト
      • 1.methodみたいなことが出来ない
    • でもuse autoboxしたら出来るのがすごいところ
  • オブジェクト指向(OO)を学習するなら、Perlを使うべき!
    • PerlはOOが言語自身に組み込まれていないので、何らかの方法で実装する必要あり
    • OOの仕組みを学習することができる
    • 初めから実装されてたら、勉強する気おきないよね
  • perlruby, jsと違う点
    • 文字列の"1"と"1"を+(足した)場合。ruby, jsは11だけど、perlは2
  • perlは文脈指向言語
  • perlは空気を読む
    • DWIM = Do what I mean
    • でもたまに空気を読み間違える
    • ex) print localtime() => print scalar localtime()
  • perlが構文をどう解釈しているか調べる
    • use B::Deparse
    • perl -MO=Deparse

daisuke makiさん - Perl Testing Basics

結論: テストしなくてよいのは小学生まで

  • 動くはず、手動で確認した
    • 現実の頻繁に起きる仕様変更の前には役にたたない
  • テストは必須
    • テストは全自動でやろう
    • テストは正常に動作したという証明
  • テストという視点からのperl使いの利点
    • テストの仕組みが色々用意されてる
    • CPANなんか頼んでもないのに世界中からテストされるよ
  • まずはCPAN化から
    • make && make test
    • t/mytest.t
  • Test::Continuous
    • 変更があった場合に必要なところだけテストされる
  • Catalyst
    • Catalst::Test
  • mod_perl
  • Regresions
    • バグはテスト用の再現コードとして必ず残しておく
  • Be Portable
    • 色んな環境で走らせる環境を想定する(OSとか)
  • テストの後片付け
    • ENDブロックを活用して、unlinkなどのごみ掃除処理
    • テストが途中でこけてしまっても、ENDブロックは実行される
  • Test::More
    • SKIP
    • TODO
  • Test::MockObject
    • 指定されたオブジェクトのフリをする

Kenichi Ishigaki - Web is not the only one that requires frameworks

  • webだけがframeworksを必要としてるんじゃないよ
    • CLI、scriptも
  • script
    • use App::CLI;
    • use App::CLI::Commands;
  • App::CLI
    • インストールは割りと簡単
    • 今のCPANにあがってるのはいくつかバグがある
      • そのうち修正される
    • manualがない
  • App::Cmd
    • manual、tutorialあり
    • インストール面倒、コンパイラ要りそう
    • 依存するモジュールのいくつかは5.10でもCOREではない
  • MooseX::App::Cmd
    • 2008
    • インストールは難しい
    • 依存モジュール多い、コンパイラ必須

Gosuke Miyashitaさん - Easy system administration programming with a framework

去年assurer発表してた人。

  • System Admin App Framework
  • Punc
    • Perlで作ってるFuncクローン
    • 複数のホストに何かしらのコマンドを実行する
    • HTTP over SSL
    • JSON-RPCで取得
    • master
      • puncmasterd
    • slave
      • puncd
      • 将来的には仮想OSの起動なども可能に

Ikuhiro Iharaさん - ‎ライブドア内のサービス共通スパムフィルタ「スパムちゃんぷるー」

  • スパムちゃんぷるー
  • 仕組み
  • workers life cycle
  • mother proccessの役割
  • 子プロセスを定期的に再起動
    • SIGINIT SIGTERM
  • apacheのRewriteMap
  • 5/13~5/14に判定した1000件をサンプリング
    • blog,wiki,したらば掲示板
    • 200件ほどをspam判定
      • false positiveは0
      • false negativeが40ぐらい?
  • 今後の課題
    • あけおめ問題
    • spamじゃないけど、大量に類似の文章が書かれてしまう
    • ソース、black listを公開したいなぁ
  • 質疑応答にて質問者からの提案
    • HTTPヘッダの中身を見てみては
      • spamの場合、特定のヘッダが無い/特徴があるよ
      • Hostヘッダの中身がIPになってるとか