てきとうなメモ

本の感想とか技術メモとか

YAPC::Asia 2007 2日目

2日目.あんまりまとまってないが.

Abusing Domain Specific Languages for Fun and Profit - Jesse Vincent

  • DSLを作ろうという話
  • DSLにはinternal DSLとexternal DSLがある.
  • internal DSLはそのDSLを定義するホスト言語の構文で表現できる範囲で表現し,external DSLはホスト言語に制限されずに記述できるもの
  • Jiftyで使われているinternal DSLを紹介する
    • English風
  • Jifty::DBI::Schema
    • DBIx::SearchBuilderではスキーマをハッシュで表現しているのだが醜い
    • より直感的なsyntaxになるように実装
  • Template::Declare
    • CGI.pmっぽい
    • HTMLライクなテンプレート言語は使わない.
    • HTMLのリファクタリングはめんどい
    • デザインはCSSを使えば良い
    • stashは関数呼び出しで実装.UNIVERSALを使えば
  • Test::WWW::Declare
    • mechanizeっぽい
  • このプレゼンもDSL
  • japanese dsl作るのどうよ

Introduction to DBIx::Class - Jonathan Rockway

DBIx::Classの紹介.基本的な使い方がメインだった.

Asynapse - The missing links between servers and clients - Kang-min Liu

これはよくわからなかった.web apiを使いやすくするためのフレームワークらしいのだが.

Patterns in Perl - Dave Rolsky

Perlにおけるデザインパターン(Gang of Fourのやつ).全体的に言語やCPANモジュールにあるのでそれを用いるべきという話でした.

走り書き

  • Singleton
    • synchronize, construction, global config
    • Class::Singleton
  • Factory
    • OS, file type
    • File::Locker
  • Strategy
    • Tk::grid, Tk::pack, Tk::Tiler
  • Observer
    • Parser
    • xml::libxml::sax ... parser
    • xml::sax::writer ... observer
  • facade
    • design
  • memento
    • Storable
  • Iterator
  • Decorator
    • Class::Trait
  • http://blog.plover.com/prog/design-patterns.html

Behind the Scene at LiveJournal: Scaling Storytime - Brad Fitzpatrik

スライドが見えず,ほんと走り書きのみ.

history
  • one server
  • two server
    • 1db 1web
  • 4 servers
    • 負荷分散

- 5 servers

  • more servers
  • 書き込みがおおい
  • クラスタのなかの2,3個に書く
  • DRBD
software
  • cache
  • perlbal
    • 大きなファイルを返す
  • mogileFS
  • gearmand
    • 保証なし,ディスク使わない
  • theschwarts
    • 信頼性高い,ディスクを使う
  • djabberd
  • djabberdでのdebugどうする

Jifty Now! - Audrey Tang

Audrey Tangではないった.スライドがよく見えなくてついていけなかった.

Writing Pluggable software - Tatsuhiko Miyagawa

Way to NAPC - Kenichi Ishigaki

  • Plaggercpanでインストールしてはダメ
  • Module::Installなどを先に入れておく必要がある
CPAN.pm
  • CPAN.pmは結構がんばっている
  • distroprefというdev版の機能はinstall時の依存関係にあるモジュールを自動的にインストールするかどうかの質問に自動的にyesと答えたり,インストール時にpatchを入れるように設定することができる
  • CPAN::SQLiteをいれて検索を高速にすることができる
  • CPAN::Reporterは失敗したテスト結果をcpanに送ることができる
  • forceはテストをしてしまうので時間はほとんど変わらない.その代わりにnotest install Plagger
  • テストを無くしても,XS系は外部ライブラリがインストールされていなければ無理
ppm
  • make ppdしてtarで固めるだけでレポジトリが作成できた.
  • ppm3の後,activestate買収で質の悪くなっていたppmを見放した人はvanillaperlやstrawberryperlなどと新しいプロジェクトに移動した.
  • その後activestateは独立してppm4.0を出したが,あんまり安定していない.
NAPC
  • 新しいものを作ろうという話かな
  • cpanをreverseしたのか napster plus cpanという意味のどちらかが発祥
  • Ingyが言い出した
  • tipsとしてレポジトリには自分の使いたいものを置くべき
    • 例えばmod_perlはバージョン1.3と2.0,eapiありなしで計4種類のバイナリが存在する

Assurer - a pluggable server testing/monitoring framework - Gosuke Miyashita

  • もともとサーバ構築テストのためのフレームワークだったけど,監視にも使えるのでは
  • テスト結果をグラフィカルに表示できる
  • Plaggerライクである
    • yamlで設定
    • Test::Base
    • assets
  • 4つのフェーズ
    • Test ... テストを行う.HTTPやFTPIMAPなど
      • テストはyaml形式で書く
    • Notify ... 通知する.現在IRCしかない
    • Format ... 変換する.HTML,TEXTなど
    • Publish ... 配信する.Term, File, Mailなど
  • Test->NotifyかTest->Format->Publishという流れになる
  • yamlのvalidationを行うことができる
  • シェルモードを用いて対話的にテスト
  • 複数のサーバから同時にテストを行うことができる.
  • ポートスキャンして自動的にconfigを作成
  • Assurer::TestでTest::Moreっぽくテストコードを書ける
    • Assurer::Test::WWW::Mechanize
    • Mechanizeはyamlでは扱いにくいので

Lightening Talks

正規表現信者の憂鬱 - にぽたん
  • danさんのモノマネ似てた
  • なぜs/foo/bar/は'/'を使ってるの?
  • Number::Phone::JPの途中で終了
Perlbal selector Plugin - Atsushi Kobayashi]

ちょっとselectorが何のことなのかよくわからなかった.

ブラウザ履歴を利用したRSS Auto-discovery - ma.la]
  • http://ma.la/files/yapcasia2007/
  • サイトのRSSがみつからないとき,自動的に見つけたい.
  • ブラウザの履歴からまだ登録していないものを抽出するとか.
  • LDRに登録されているサイトから探せばいいのでは?
  • LDRに登録されている50万サイトのURLのハッシュ値を生成してマッピングを作る.
  • RSSを取得したいサイトのURLからハッシュ値を生成.マッピングに存在するかチェックする.
  • そのURLがLDRに登録されているURLと同じ階層にあるとはかぎらないので,階層構造を遡りながら毎回ハッシュ値を作成しチェックする
  • 存在すれば,そのサイトのURLからRSSを配信するURLを取得するのかな?
  • この辺で終了
BabelBee - Collaborative Translation Tool - Chia-liang Kao
  • Asynapseの人
  • ソフトウェアの翻訳をsocialにやろうという感じかな?
  • 似たような文を検索する機能があり,一度に編集することができるっぽい
Moxy - Mobile Development Proxy - ふしはらかん
  • wemaの人
  • 携帯サイトをブラウザから見れるようにするためのプロクシ
  • 既存の方法では形が崩れたりしていた
  • 絵文字変換も可能
  • クッキーにドメインを保存していつでもプロクシ
(ミニ)カンファレンス中継のあれこれ - 堂前清隆
Bytecode for Wikipedia - Ingy dot Net

なんか新しいパーザをつくったとかいう話だっただが,よくわからなかった.表題とは別物?

Angerwhale - Jonathan Rockway
  • blog2.0
  • RDBMSを使わず,記事はファイルにして書き込む.
  • webから投稿するのではないみたい
Expectをつかったサーバ管理レシピ - 長野雅広
  • 複数のサーバに対して同じコマンドを同時に行う.
  • sudoとかでパスワード入力でこまる
  • そこでExpect.pmを使う
    • passwordというプロンプトが出たときはパスワードを入力する
  • IO::PromptとString::ShellQuoteを使っている
Debugging the De Bruijn Sequence - Mark Jason Dominus

何もないところからプログラムを作るのではなく,彫刻のようにいらないものを削って行くべきみたいな話で,任意のASCII列を含むテキスト(Bruijn Sequence)からプログラムを削り出すみたいなことを言ってた(ネタ)

Device::USB::MissileLaunchers (live) - Yappo

USBにミサイルをくっつけて発射.ほんとに生中継でした.

Spidernomic - A self-modifying HTML/Perl/JS file/game - Thilo Planz

本題に入る前に終ってしまった.

Perl Program Repair Shop and Red Flags - Mark Jason Dominus

  • Perlのコードの添削.
  • 同じようなコードを書くな.コードが読みにくくなりバグがあっても気づかなくなる.
  • 日付は内部で扱いやすいようにしておいて,出力するときのみ変換する