読者です 読者をやめる 読者になる 読者になる

北海道苫小牧市出身の壮年PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

今日は Hokkaido.pm#6 の日です

レポート perl

実家に帰るついでにふらっと立ち寄りました(2)。次はHokkaido.pmです。

Carton使ってみた / @aloelight さん

  • carton → RubyのBundler を Perlに移植したもの
  • carton install
    • local::lib にインストールされる
    • 依存情報はcarton.lock に書き込まれる
    • バージョン指定が可能 → インストール済みのもののアップデートにも必要
    • carton.lock から依存情報を取り出してインストール
  • carton uninstall
  • carton exec
    • pluckup などのコマンドの実行
    • PATH にlocal/bin も追加
  • バージョン的には ALPHA なので自己責任
  • 利用例(1) Tweet::ToDelicious
    • Makefile.PLでは12個指定していたが、実際は53個のモジュールに依存
    • 移行も簡単だった
  • 利用例(2) JSON RPC Server
    • Makefileでは39個、依存を入れて131個
    • OrePANを使うなら、PERL_CARTON_MIRRORを使う (ドキュメントにはまだないかも。内部でPERL_CPANM_OPT は無効にされるのでこっち)
  • Carton があまりに簡単すぎて話すことがない・・・!!
  • おまけ:プロジェクト環境の構築
    • perlbrew install-cpanm, install, create, switch
    • cpanm install Carton
    • carton install
  • OrePANにない外部モジュールに依存しているとうまくいかない → mirror_only をパッチ当てて切ってる
  • Q. Macで開発してFreeBSDにアップ?
  • A. はい
  • 5.14 はいいので、使おう

botのつくりかた / @akiym さん

  • botとは
    • 自動で色々やってくれる
  • cpanm AnySan
    • 今回はAdvent Calendarの記事を参考
  • Twitterbot → #hokkaidopm を拾ってRTするbot
  • 高校生はIRCをあまり使わない → Skype
    • AnySan は Skype に対応してない
    • AnySan::Provider:: を作った
  • SkypeAPI、Win32::Skype, Net::DBus::Skype
    • 全て環境依存 → Skype::Any を作成した
  • SkypeでURLの内容を表示するデモ
  • まとめ
    • AnySan で 簡単に bot を書こう
    • Skype::Any 作りたいけどMac対応が・・・
  • Q. AnyEvent 対応は?
  • A. むずかしそう

Clutch - distributed job system / @nekokak さん

  • Job Queue → Q4M、TheSchwartz、Gearman、Qudo、Jonk、ZeroMQ、RabbitMQ
    • 「使ってる人?」 → ほとんどなし
  • Job Queue と Message Queueの違い → 結果を受けるか否か
    • 作ってる人はあまり気にしてないのであまりきにしなくていい
  • どういう風なフローで作っているかを紹介する
  • きっかけ : daemontools の情報をWEBで見たい
    • sudo専用のプロセスを作って、webからはそこにジョブを投げる
  • 不満から始まる
    • gearmandを立ち上げるのは大げさすぎる
    • ZeroMQは仕様が変わるかも・・・
    • クライアントが直接listen するのがいい
  • 「とにかく考える」
    • 仕事で忙しいときなど、風呂などのちょっとした時間に考える
    • インタフェースをさっくり書いてみる → インタフェースをベースに開発を進める
  • 初期実装にかかった時間 → 電車の帰りの時間
  • 設計、実装の仕方は人によって違う → 他人と比べるとわかる
  • Clutch
    • 簡単なプロトコル
    • Data::MessagePack によるシリアライズ
    • Storable はPerlのバージョンによる互換性がないことがあるので危険
    • 自前でSocketを操作する部分を隠して簡単に
    • 中間daemonがいらない。Data::WeightedRoundRobin
  • Data::WeightedRoundRobin
    • 重み付けをしてラウンドロビンできる
    • デモ・・・は、保存場所を忘れたのでなしで
    • 分散(distributed)
    • 多くのdaemon を借りするためadmin daemon も一応ある(workerのIPを管理する)
  • Clutch のデモ
  • admin を使った場合のデモ (workerとclient が自IPの代わりにadminをIPを指定)
  • やりたいこと
    • Adminで死活管理をしたい
    • Clientでmulticast リクエスト
    • Clientでレスポンスを待たずにジョブキュー的な振る舞い
  • Job Queue を作る上で気をつけること
    • 保護が必要なジョブか
    • RDBMS使うか、lock周り、qps
  • 重要なこと → 様々なモジュールを知っていること。できることの幅が広がる

まもなくgithubへ上げて下さるそうです。

mod_perl hacks PHP / @xtetsuji さん

  • mod_perlの振り返り
    • ApacheモジュールでできることをPerlで書けるようにした
    • mod_perl2 のみのお話
  • PHP : 非常に色々なところで使われているソフト
    • PHP製の成果物が社内にあって、触れないことがある
    • PHPに手を加えず、Perlで機能追加したい
  • mod_perlPHP実行の前後に処理を突っ込む
  • 処理フェーズ。WEBアプリは PerlResponseHandler
  • 今回はPHPに限ったお話
    • PHPはレスポンスフェーズ以外では何もしていない(らしい)ので
  • 例: PHPのセッション処理を使わずに自前で認証をつける
    • Access, Authen, AuthzのHandlerでCookieを読み書きする
    • Apache2::AuthCookie 割とメンテされてる
  • Output Filter Hacksの使い道
    • PHPから独自マークアップを残しておき、Perlで最後に置換する
    • i-mode絵文字周りなど
    • $f->ctx でフィルタのチェーンの最初化がわかる → Content-Lengthを除く
    • チャンク読み
  • mod_filter → パイプ処理で置換できる。遅い
  • まとめ : PHPは処理が控えめなので、mod_perl で色々突っ込める
  • mod_perlの情報がWEBに少なすぎる。
  • 文献: mod_perl2 User's Guide
  • PukiWiki にフィルタを噛ませて文字を置換するデモ

循環参照のはなし / @hirataraさん

後でスライドを上げておきます。スライド

YAPC::Asia Hokkaido 実現に向けて / @onagatani さん

  • YAPC Asia Hokkaido をやりたい
    • 札幌で開催
    • 100人以上参加して欲しい
    • 7月前後
  • 運営委員を集めて定例会議
    • 来月札幌にてキックオフを開催
    • @hokkaidopm アカウントにて詳細をアナウンス
  • JPA がお金の管理。運営委託。
  • 100人はできる? → 北海道他の言語の開発者を呼び込む
  • 課題 → 運営事務局、スタッフ、マーケティング
  • まとめ: スタッフ募集中! 参加社増の施策!

LT

たのしい記号Perlプログラミング / @sugyan さん

北海道へ雪駄で登場したすぎゃーんさんのLTです。

  • Perlでチケットをゲットした!
  • 北海道の形の記号プログラム
  • 7 symbols program
  • 画像から、自動でプログラムの形を作れように拡張
困ったときのAcme::* / @koji_magi さん
  • Acmeモジュールでお祝い Acme::Omedetou
    • おめでとうが画面上に表示される気合い系のAcme::*
  • Advent Calendar の Acme Trackに参加しましょう
  • まとめ: Hokkaido.pm に参加して嫁を作ろう
GUIアプリに必要な3つのこと - ツール編 / @techno_neko さん
  • 人見知りの人こそ、スピーカーになって話しかけてもらう
    • 感想、アドバイス、知り合い
  • 3位 単純明快
  • 2位 キャンセルできる
    • 適用せずにキャンセル。長い処理の中断。
    • 戻す、やり直す
  • 1位 痒いところに手が届く
    • ユーザーは成長する → UIを使いこなすと、改善を要求する
    • 微調整ができること
  • まとめ: 触りたくなるUI、痒い所に手が届く、他にも色々ある
Object::Container::Exporter - lazy programming / @nekokak さん
  • Object::Container → シングルトンでオブジェクトを管理してくれる
  • Object::Container::Exporter
    • import に渡した引数、さらに渡した引数を名前空間にしてnewを呼んでくれる
    • use 文が少なくてすむ。
  • ここで Data::WeightedRoundRobin のデモが見つかったのでデモ
YAPC::Asia Hokkaido 実現に向けてへの補足(仮) / @charsbar さん
  • 海外で色々あるよ
    • 7月はOSCON
    • 6月はYAPC::NA
    • 8月はYAPC::Europe
    • 4月はOSDC.TW