2010-03-05(金)
今日は Yokohama.pm #5 の日です
19:00 にスタートです。詳細はこちら。
出ますので、いつものようにメモをまとめる予定です。ustreamはこちららしいです。
モダンコマンドラインツール - xaicronさん
cpanminus
- CPAN::Shellの代替
- Plackのリリースが伸びる原因に!?
- cpan の問題点
- 起動、メモリ
- Bundle::CPANを入れるのが大変
- コードがカオス
- CPANPLUS
- 5.10 からコア入りしているけど・・・
- 重過ぎる
- miyagawaさんが40分くらいで作った
- 特徴
- 単一のPerl Script
- 高速、省メモリ
- プラガブル
- インストール → ダウンロードしてchmod +x か、普通にインストール
- コマンドは cpanm
- デフォルトでは表示をほとんど捨ててる。Y/Nが必要な時は --interactive
- Pluginは17個
- backpan とか
- 今のとこは開発者向け。自己責任で
- ~/.cpanm/plugins に保存する
- DEMO
- cpanm CGI とか
- github:miyagawa/Plack なども(本当は)できる
cpan-outdated
- cpan -rの代替
- cpan-outdated | xargs cpanm
- cpan-outdated | perl -lne 'system("cpanm $_")'
- DEMO
- cpan-outdatedの表示
- 速い!
Kamui - Plack base frame work / nekokakさん
- 過去6回(前夜祭込)全部発表してる!
- 特徴
- CLIでの使用を想定
- Plackベース、Arkも参照 (元はSledge系)
- Mobileのプラグインが豊富
- 運用実績も入る予定(作っているとこ)
- Object::Container
- 設定はperlのコードで書ける - config.pl
- Container の利用例
- registerの使用, nameの使用
- View はTT, TMTE, JSONに対応
- Dispatcher は自前。アトリビュートは使ってない
- before_dispatch などのフック
- authorize は、アトリビュートで個別に指定可能
- DEMO
- Kamui + moxy
- 絵文字切り替えのプラグインのデモ
- {emoji:E6D3}
- モバイルやりたいなら、オススメ
- 他、DoCoMoのguidやcss展開等
- 人柱募集
AnyEvent::IRC::Server / kanさん
- IRCとは・・・略
- AnyEvent::IRC::Server
- 拡張することを想定
- githubにて開発中
- tokuhiromさんがほとんど作ってる
- まだ不具合はありそう。クライアントから繋げるのは可能
- DEMO
- TwitterのStreaming
- Proxy (AnyEvent::IRC::Clientと組み合わせ)
- ギャル文字に変換
- 今後
- ミニIRCサーバとして使える程度の実装
- bot的な拡張(自動応答やタイトル表示等)
- xircdを対応させる
- AnyEvent::IRCに同梱?
Inside mbga Open Platform 予告編 / ZIGOROuさん
- DeNA Technical Seminar の予告編
- People API
- ユーザプロフィール、フレンドの取得
- モバゲーでは最高64万人フレンドの人が居る
- テーブルが色々散っていて、JOINできない
- friend , app_owner, people テープルなど
- 例
- 最初にfriendテーブル(ここで10万かも)
- 次にapp_ownerテーブル
- max_allowed_packet この値を超えると怒られる
- 5.1だと1MB
- int(10) なので 10万件ほど
- 安全な件数になるように、peopleテーブルを分割する(MEMORYテーブル)
- 自前の並列ベンチマークツール
- 例: INとtemporary table とどっちが速いのか
- Message API, Acrtivity API
- 即時性は不要 ← Q4Mを利用
- 生成日時でパーティショニング(1日単位)
- サマリーテーブル、メッセージ用のqueue
- MySQL Partitioningについて
- rangeで分割でき、selectにrange条件が入る場合
- primary key や UNIQUE 制約が必要
- queuが2つある
- notification queue と cache queue(memcachedにキャッシュを作る)
- selectしてmemcachedへ入れる部分が重かった
- この部分を分離。slaveからselect。
- ただし、レプリ遅延によって古いデータをselectしてしまうことが
- IDにて、最新かのチェックが必要
- 質疑応答
- Q. マスタから引いて重いのは校正の問題では?
- A. そうでもない。件数がすさまじい。構成も初めしょぼかった
Data::ObjectDriver / clouderさん
- D::ODとは?
- 元々MT::ObjectDriver
- キャッシング+パーティショニングのサポート
- マスタースレーブ構成の意識 (r_handle, rw_handle)
- thin → 自分で実装する必要がある。has_aはかろうじてある
- クラス構成
- Driverクラス→キャッシュへの接続方法等
- Objectクラス→モデル
- 他、ResultSet(開発途上?), Profiler, GearmanDBIなど
- モデルはBaseObjectのサブクラスとして定義
- insert → new & save または bulk_insert
- select → lookup または search または lookup_multi
- update → save
- delete → remove
- has_a (キャッシュの指定も可能)
- add_trigger → 豊富
- キャッシュの使用 → Driverを変更するとよい
- Driver::Cache::Memcached など
- Master/Slave → Driverのr_handleとrw_handleをoverride
- パーティショニング → Driver::Partition を利用
- 希望
- Data::Pageに対応して欲しい
- count関数使いたい
- 素のSQLの実行
- JOINとか
Introduce Application Framework Polocky / polockyさん
- Polockyとは? - livedoor wiki のキャラ
- WAFの下にあるフレームワーク
- ソースはgithub
- 使い方
- Polocky::Core をインストール
- polocky-setup コマンド
- config は perlスクリプト
- Plocky::WAF::CatalystLike を利用
- Catalyst的になる
- plackup で起動可能
- stashとか、Catalystチック。
- 最後は __POLOCKY__
- WAF::Simple → 軽量
- CLIツール
- FileGenerator → ファイルを作成
- Wikiranking はPolockyで動いている
Twib - 一人で作るはてブもどき編 / yusukebeさん
- Twibはツイートを元にしたはてブもどき
- ハードウェアは?
- Appサーバ×1 と DBサーバ×1 を共有
- 初期構成
- Twitter API から httpで正規表現
- Twitter側 / AnyEvent::Feed
- LWP::UserAgent + cron
- 問題
- ツイートが多い : 1.5/秒
- Q4Mを導入、Crawlerを別プロセスへ
- StreamReader を導入
- 実際のログを表示 / ツ一ターのログとCrawlerのログ
- 画像API: ついブ数、ユーザ画像、favicon
- Noe - 2クラス程度の似非フレームワーク
- テンプレは Text::MicroTemplate
- チューニング
- DBIx::Class のクエリを調整
- 非正規化、likeの廃止
- とりこぼし対策 → プロセス数増加、 topsy APIなど
- 今後 → はてブもどき? マーケティング? がんばりんごする
OpenSocial Moblie Application Development / typesterさん
Moxy for OpenSocial
- moxy
- モバイルアプリ開発用のプロクシサーバ
- OpenSocialプラグイン
- OAuth署名
- リンクを辿れるように (通常はパラメータのみを渡すので)
- OpenSocialコンテナを通さなくても開発が可能
- デモ: OAuth機能
- 直接appにはGETリクエストできない (OAuthの署名があるもののみ)
- プラグインがあると、OAuthの情報を送れる(設定タブも加わる)
- 制約: POSTはまだ無理な気がする。開発者募集
API呼び出し用非同期プロクシサーバ
- appからOpenSocialコンテナにAPIを送る必要がある
- APIの待ち時間が勿体ない
- 外部API(twitterなど)を叩く場合も同様
- 問題: 非同期は大変
- モジュールが使えない
- PHPとか非同期
- 対策: APIの待ちのみを非同期
- Plack::App::Reproxy
- X-Reploxy-Callback を追加 (結果をPOSTする先)
- 高速化したい
Module::Setup 2 / yappoさん
- スマイリーハッカソンで機能追加された
- みんながパッチあててくれた
- h2xs, pmsetup, ModuleStarter
- pmsetupベースに、雛形から作れるように
- チュートリアル
- cpanm Module::Setup
- module-setup --init で設定 : フレーバーができる
- config.yaml いじれば初期情報は変えられる
- module-setup Your::Class
- GitHub フレーバー
- githubにリポジトリ作ってくれる
- pushまでしてくれる
- 他、CatalystStarter, PBP, XS などのフレーバー
- フレーバーの編集方法
- ~/.module-setup/flavors/ の中のディレクトリを編集
- 再配布したいときは、--pack機能を
- --executable で、専用スクリプトを作る
- --test でフレーバーのテスト
- フレーバーの継承 (パッチ)
- プラグイン
- 依存が多過ぎる
- 今後 Module::Setup::Coreを作る予定
- 質疑応答
- Q. Module::Starter のような後からファイルの追加は?
- A. 仕組みはある。使い方を忘れた。今後もっと簡単にするのでそちらを。
Template::Semantic / tomi-ruさん
- pure HTML に埋め込む
- Template::Refine → ループがない。TTと違い過ぎ
- 注意: XMLじゃないと駄目
- XML::LibXML ベース
- 用途
- テンプレへの埋め込み、の仕事を減らせる
- アプリの出力をちょこっと修正
- process にハッシュリファレンスで値を渡す
- X-Path, CSSセレクタ的な指定
- @xxx で属性の変更
- 通常はHTMLエスケープされる。リファレンス渡しするとHTML
- undefを渡すと消去
- ループも可能
- processメソッドで、複数回の適用
- Template::Semantic::CookBook を見よう
- XML::LibXML を XML::Liberal程度の厳格さにしてる
- 質疑応答
- Q. HTML5だとXMLじゃなくなるんじゃ?
- A. XML::LibXMLの進化に期待
最新Perl事情 - 5.12の新機能完全解説! / gfxさん
- Parrot上で動く噂はなかったことに
- 5.10の後継
- 機能の整理 (Depricatedするなど)
- use 5.011 = use strict
- sub foo { ... } が動く (... はdie)
- keys @array や each @array (Perl6的)
- values @array もできるけど・・・
- delete local $hash{elem}
- package Foo 0.009001 ← コンパイルと同時にバージョン設定
- overload
- qr : 正規表現を返す
- -X : ファイルテスト演算子 (-r, -s, -f などをまとめたもの)
- PL_keyword_plugin : よりよいソースフィルタ
- deprecations
- *.pl は軒並み駄目
- UNIVERSAL isa や can (blessedとかを使う)
- Switch (switchを使う)
- bytes.pm
- Perl 5.14へ (妄想)
- 質疑応答
- Q. ブロック渡しは今でもできるのでは?
- A. sub {} で。
"Webを支える技術"の告知 / ikasam_aさん
- 4月に出る
- WEBの基本形
- URI, HTTP, Hyper media
- WEBサービスの実践的な設計
- WEBらしい設計
- Text::Acme::Inao ではパースできない
- レビューアとして参加してます!!
感想
kidとかTeedaとか好きだったんで、Template::Semanticには興味津々でした。
後、 5.12 の話も大変参考になりました。 ...演算子(Yada-Yada-Yada operator)はシンプルでいいですねww 5.14の開発にも期待です。
最後に、主催のid:clouderさんと懇親会幹事のid:masartzさん、お疲れ様でした!
*1:やっぱ Mouse ?懇親会で、Mouseはコアにするのはちょっとなーって話。





