tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

YAPC::Asia 2日目のまとめ

もう一週間もたってしまいましたが、YAPC::Asia 2日目をまとめました。

※あくまでも私の聞いた(つもりの)内容と私が書いたメモが元になっておりますので、実際のセッションや発言とは異なる可能性があります。今回は資料がアップされていることが多いので、資料も見てくださいね!

How regular expressions work internally

Jose Castroさん
資料: 現時点ではアップされていないようです

  • Internally っていうから、コアな話かと思ったら、意外と初心者向けでした
  • 箱を使って、マッチとかバックトラックとかを説明してて、いい感じでした
  • 正規表現を説明する際のいい方法だと思う
  • QA
    • aaaaaaaaaa =~ /a+a+a+a+b/ のマッチ(バックトラックを延々繰り返すので非常に遅い)でアンカー($)をつけたらどうなる?(速くなるのではないか?)

=> 分からないけど、もっと遅くなるかも

    • 電話番号の国際的、汎用的なマッチとかどうする?

=> *::MobilePhone::{JP,UK}みたいなのを作れば良いのではないか?

The Way To Rakudo *

Jonathan Warthingtonさん
資料: http://www.jnthn.net/papers/2009-yapc-asia-rakudo.pdf

eval ('use CGI; $cgi = new CGI', :lang<perl5>)
$cgi.header #perl6 style

とかやっていた。

      • 発表の前日にできたらしい。
      • DBI もいけたって言ってた気がする
    • Rakudo * は実行速度が遅いかも
      • 機能追加が優先なので
    • Concurrency (言語レベルでのトランザクションサポート)は無理かも
  • 今回正式リリースするのは、フィードバックがほしいから
    • 開発版だとあまり使ってもらえない
  • 徒歩と空路
    • 徒歩: やること多いけど、楽しい (Rakudo *のコンパイラがこれにあたる)
    • 空路: 楽 (Rakudo * の目指すところ)
  • QA
    • inline module がどうとか、他の言語のマッピングがどうとか言っていたようなのですが、ちゃんと聞き取れませんでした...

Practical Bug Reporting/もしもバグを見つけたら

Kenichi Ishigakiさん
資料: http://www.slideshare.net/charsbar/practical-bug-reporting

CPAN は良くテストされてる
=> 数字を交えつつ説明
けど、2割くらいは通らないテストがある
=> いつかはバグにぶつかる

そのとき、どうするか、という話

  • CPAN:Reporter, RT, その他のトラッカ
    • バグレポートをあげる先を探す
    • CPAN やソースのコメントなどを見る
    • 最近では、META.yml に連絡先やトラッカがあることも

などなど。割と文化的な話。

QA

  • RT 受ける側の話(Encode の Dan さんより)
    • 何度も RT をあげてきて、reject したいのだけど、 RT をあげた方の気を悪くせず reject するにはどうしたらいいか?「テストとかパッチくれ、というと黙ってしまい、RFC ほげほげを読め」 とか言われるらしい。

=> 難しい。。。どうしましょ?

    • より上流に上げるとか?

=> SQLite なら本体(library)とか、RFC なら自分で RFC 書くとか?

小規模 Web サイトのための CGI フレームワーク「Sabae」

Susumu IWATA さん
資料: http://www.slideshare.net/issm/20090911-yapcasia-2009

  • Web Application Framework の話
    • もともとCGI で比較的小さな Web アプリを開発していた
    • 繰り返しが比較的多いので、楽をするためにフレームワークを作ったとのこと
  • URI に対するアクションを YAML で定義する
  • view は TT(Template Toolkit)
  • デザインがきれい
  • Perl とは関係ないらしいのですが、自己紹介で使っていた dqwm(http://www.dqwm.net/) が面白かった

job queue manager Qudo

Atsushi Kobayashiさん
資料: http://nekokak.org/presen/yapcasia2009-qudo/

  • Qudo(駆動)と読むらしい
  • TheSchewartz の代替
  • Job queue
  • Skinny/DBI 対応
  • Hook point あり(Schewartz にはない)
  • シリアライズ形式が複数対応
    • JSON/Storeble/MessagePack
    • Schewartz は Storeble だけ
  • エラーを勝手に捨てない(Schewartz は2000 件超えると捨てるらしい)
  • Job の再実行を容易に
  • worker process を複数サーバに分けるとかもできるらしい

"Lego programming" with Lorzy

Chia-liang Kao さん
資料: http://www.slideshare.net/clkao/lego-programming-with-lorzy

  • パーツを組み立てるような感覚でプログラミングできる環境
  • RTシステムを使ったデモで説明
  • 内部的には Perl を拡張した Lisp っぽい DSL
  • 型付けをもつ
    • 引数/戻り値のチェックができる

※英語が早くて、1/3 くらいしか理解できませんでした。。。

Basic Mechanism of Object-Oriented Programming Language

makoto kuwata さん
資料: 現時点ではアップされていません。ここ(http://www.kuwata-lab.com/)にアップされる(?)

=> とくに目新しい話は無く、正直言って失敗でした。。。素直に Dan さんのセッションを聞いておくべきでした orz

はてなブックマークのシステムについて

Naoya Ito さん
資料: http://d.hatena.ne.jp/naoya/20090911/1252670407

  • はてなブックマーク(http://b.hatena.ne.jp/)の実装に関する説明
  • 規模
    • 30万 users
    • 400万 sessions/月
    • 1600万 URIs
    • 4700万 BookMarks
    • 5000万 tags
    • あるテーブルを select count(*) すると 3億レコード
  • データベース
    • MyISAM
    • エントリー 3GB
    • ブックマーク 5.5GB
    • タグ 4.8GB
    • HTML 200GB(zlib で圧縮している)
  • サーバ
    • httpd 20〜30台くらい
    • mysqld 20〜30台くらい
    • その他をあわせて合計で 70台くらい
  • Perlソースコード
    • 10万行ぐらい
      • WAF, ORM を含む
      • 本体だけだと 45,000 行くらい
    • 1200ファイル(.pm ファイル), 本体だけだと 600ファイル
  • 開発体制
  • 8名くらい
    • director 1名(伊藤さん)
    • Engineer 3名 + アルバイト1名
    • Designer 1名 + アルバイト1名
  • アーキテクチャ
  • Perl
    • 5.8
    • mod_perl
    • WAF は自社製(Ridge)
    • ORM も自社製(DBIx::Moco)
  • JavaScript
    • Ten.js(自社製のライブラリ)
  • C++
  • 本文抽出
    • 検索・カテゴライズの精度に関わるので重要
  • HTML::ExtractContent
    • 自社で開発したモジュール。CPAN にもアップされている
    • HTML からサイドバーなどを除き、本文を抜く
    • HTML をブロックに分け、スコアリングし、スコアの高い部分を本文とみなす仕組み
  • HTML::LayerdExtractor
    • 自社開発のモジュールで非公開
    • ヒューリスティックに基づいて抽出する
    • 構造が決まっているサイトなどで使う
      • google の ad_sense_start タグ
      • Web API
      • XPath
      • RSS フィード
      • Chain of Responsibility パターンを使って順に試していく
  • 2chまとめサイトが抽出が難しいらしい
  • 全文検索
    • 全文書検索 => PFI 社の Sedue
    • 自分のブックマークから => 自社開発
  • Sedue
  • 個人用(全文検索)
  • 関連エントリ
    • ブックマークに関連するほかのエントリを探す機能
      • PFI 社のレコメンドエンジンを使っている
      • いろいろ試したところ、ブックマークのタグを入れるのが一番精度が良かった
  • カテゴリー分け

お手軽・お気軽・お気楽なサーバー&クライアント

Yuji Suzuki さん
資料: http://docs.google.com/present/view?id=dhjm998r_172gvndsfg3

  • POEIKC による、クライアント・サーバのデモが中心
  • POE::Component::IKC というモジュールがある
    • クライアント・サーバを作れる
    • リモートの関数を実行できる
    • P2P 通信も可能
    • が、面倒

=> POE::Component::IKC を簡単に使える POEIKC を作った

  1. . サーバとして、poeikdc start する => 空のサーバが立ち上がる
  2. . モジュールを書く(普通の Perl のクラスを書く)
  3. . パス(@INC)を通す
  4. . サブルーチンを呼び出す

という簡単な手順で通信ができるらしい。

all your base32 are belong to us

Yoshinori TAKESAKO さん
資料: 現時点ではアップされていませんが、 http://conferences.yapcasia.org/ya2009/talk/2226 からコードを見ることができます

  • ネタ系のセッション
  • 記号プログラムの紹介
    • 同じソースで、Perl, JS, Ruby, DOSアセンブラとして実行できる
    • どのように記号から、文字や数字や print 文を生成するかの説明

ネタ系だが、セキュリティの研究をしていて、こういったもので
ファイアウォールのルールをすり抜けてしまうよ、という警告的な
意味もあるみたいです。

基調講演

Jonathan Rockway さん
なぜ Perl を使い続けているのか、という話。
モジュール、フレームワークPerl コミュニティに関する深い話でした。jrockway さんの Perl コミュニティに関する思いが凄く感じられて、感動的なセッションでした。