Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
TheSchwartz の拡張 @masartz
Agenda <ul><li>自己紹介 </li></ul><ul><li>TheSchwartz の使用時に・・・ </li></ul><ul><li>今回やってみた拡張 </li></ul><ul><ul><li>Reload </li><...
自己紹介 <ul><li>名前:星野 将 ( ホシノ マサル ) </li></ul><ul><li>id  : masartz( マサルツ ) </li></ul><ul><li>yokohama.pm は皆勤賞です </li></ul><u...
TheSchwartz の使用目的と実績 <ul><li>NW 的に分離されている </li></ul><ul><li>負荷的に処理が詰まる可能性 </li></ul><ul><li>TheSchwartz ?ナニソレ、美味しいの? </li>...
今回やった拡張  - Reload <ul><li>worker プロセスは起動しっぱなし </li></ul><ul><li>が、 use しているモジュー ルは改修が入る </li></ul><ul><li>再読込されない->不具合動作 o...
今回やった拡張  - Parallel <ul><li>ジョブを作るたびの pl 作成手間削減 </li></ul><ul><ul><li>Package main  部分以外は Name Space 以外一緒 </li></ul></ul><...
今回やった拡張  - Parallel ※ before package  MyApp::Worker1; use base qw/ TheSchwartz::Worker /; sub work{ my ( $class , $job ) =...
今回やった拡張  - Parallel ※ after use TheSchwartz::Worker::Plugin::Parallel; my @classes = qw/ MyApp::Worker1 MyApp::Worker2 /; ...
今回やった拡張 –  Log <ul><li>TheSchwartz のログ管理  </li></ul><ul><li>エラー時に error テーブルにインサートのみ </li></ul><ul><li>でも error テーブルの構成もいけ...
今回やった拡張 –  Manager <ul><li>Reload , Parallel , Log  のメソッドを包含 </li></ul><ul><li>Manager 自体が TheSchwartz::Worker を継承 </li></...
もっとやりたいこと <ul><li>PreData </li></ul><ul><li>社内では実装済み </li></ul><ul><li>下準備で DB に必要情報を格納 (YAML 形式 ) </li></ul><ul><li>+----...
まとめ <ul><li>全体的に他力すぎる件 </li></ul><ul><li>今回のモジュール群 </li></ul><ul><li>google code </li></ul><ul><li>coderepos にもコミットします>< <...
ご清聴ありがとうございました!
Upcoming SlideShare
Loading in …5
×

The Schwartz plugin by yokohama.pm #3

1,321 views

Published on

yokohama.pm #3 masartz prezentaion

Published in: Technology
  • Be the first to comment

The Schwartz plugin by yokohama.pm #3

  1. 1. TheSchwartz の拡張 @masartz
  2. 2. Agenda <ul><li>自己紹介 </li></ul><ul><li>TheSchwartz の使用時に・・・ </li></ul><ul><li>今回やってみた拡張 </li></ul><ul><ul><li>Reload </li></ul></ul><ul><ul><li>Parallel </li></ul></ul><ul><ul><li>Log </li></ul></ul><ul><ul><li>Manager </li></ul></ul><ul><li>もっとやりたいこと </li></ul><ul><ul><li>PreData </li></ul></ul>
  3. 3. 自己紹介 <ul><li>名前:星野 将 ( ホシノ マサル ) </li></ul><ul><li>id : masartz( マサルツ ) </li></ul><ul><li>yokohama.pm は皆勤賞です </li></ul><ul><li>前回までは「 filsturas 」とか名乗ってました </li></ul><ul><li>「ネコケーエーケ」が読まれなかった nekokak さんに読めないと言われ改名 </li></ul><ul><li>所属: SNS の中の人 </li></ul><ul><li>use base qw/ bonnu kazeburo lyokato /; </li></ul>
  4. 4. TheSchwartz の使用目的と実績 <ul><li>NW 的に分離されている </li></ul><ul><li>負荷的に処理が詰まる可能性 </li></ul><ul><li>TheSchwartz ?ナニソレ、美味しいの? </li></ul><ul><li>使ってみるとちょいちょい問題が </li></ul>
  5. 5. 今回やった拡張 - Reload <ul><li>worker プロセスは起動しっぱなし </li></ul><ul><li>が、 use しているモジュー ルは改修が入る </li></ul><ul><li>再読込されない->不具合動作 orz </li></ul><ul><li>TheSchwartz::Worker::Plugin::ModuleReload </li></ul><ul><li>ModuleReload をラップしただけ </li></ul><ul><li>参考: HTTP::Engine:: Plugin :: ModuleReload </li></ul><ul><ul><li>yappo++ </li></ul></ul><ul><li>ちなみにプロセスを kill すればいいので は? </li></ul><ul><li>こればっかりは弊社内の運用体制に依 る </li></ul>
  6. 6. 今回やった拡張 - Parallel <ul><li>ジョブを作るたびの pl 作成手間削減 </li></ul><ul><ul><li>Package main 部分以外は Name Space 以外一緒 </li></ul></ul><ul><li>共通部分もまとめられてややスッキリ </li></ul><ul><li>中身は Parallel:: Prefork </li></ul><ul><ul><li>kazuho ++ </li></ul></ul><ul><li>実装面は こちら をかなり参考に </li></ul><ul><ul><li>tokuhirom++ </li></ul></ul>
  7. 7. 今回やった拡張 - Parallel ※ before package MyApp::Worker1; use base qw/ TheSchwartz::Worker /; sub work{ my ( $class , $job ) = @_; # blah blah blah } package main; use TheSchwartz; my $client = TheSchwartz->new( ・・・ ); $client->can_do(‘MyApp::Worker1’); $client->work();
  8. 8. 今回やった拡張 - Parallel ※ after use TheSchwartz::Worker::Plugin::Parallel; my @classes = qw/ MyApp::Worker1 MyApp::Worker2 /; TheSchwartz::Worker::Plugin::Parallel->work( @classes );
  9. 9. 今回やった拡張 – Log <ul><li>TheSchwartz のログ管理 </li></ul><ul><li>エラー時に error テーブルにインサートのみ </li></ul><ul><li>でも error テーブルの構成もいけてない </li></ul><ul><li>簡単でいいので、処理結果が欲しいよぅ </li></ul><ul><li>とりあえずファイル出力だけ実装・運用 </li></ul><ul><li>汎用的でない部分が残ってる </li></ul><ul><li>Log::Dispatch とか使ってみたい </li></ul>
  10. 10. 今回やった拡張 – Manager <ul><li>Reload , Parallel , Log のメソッドを包含 </li></ul><ul><li>Manager 自体が TheSchwartz::Worker を継承 </li></ul><ul><li>これまで use base qw/TheSchwartz::Worker /; としてたところを置き換える </li></ul><ul><li>拡張メソッドを持った、 worker のベースクラス </li></ul>
  11. 11. もっとやりたいこと <ul><li>PreData </li></ul><ul><li>社内では実装済み </li></ul><ul><li>下準備で DB に必要情報を格納 (YAML 形式 ) </li></ul><ul><li>+-----------+------------------------+------+-----+---------------------+-------+ </li></ul><ul><li>| Field | Type | Null | Key | Default | Extra | </li></ul><ul><li>+-----------+------------------------+------+-----+---------------------+-------+ </li></ul><ul><li>| id | bigint(20) unsigned | | PRI | 0 | | </li></ul><ul><li>| data | text | | | | | </li></ul><ul><li>+-----------+------------------------+------+-----+---------------------+-------+ </li></ul><ul><li>ジョブの push 時に id を渡す </li></ul><ul><li>worker で data 内容を取得・解析して処理実行 </li></ul>
  12. 12. まとめ <ul><li>全体的に他力すぎる件 </li></ul><ul><li>今回のモジュール群 </li></ul><ul><li>google code </li></ul><ul><li>coderepos にもコミットします>< </li></ul><ul><li>今回の内容に関するエントリー </li></ul><ul><li>http://d.hatena.ne.jp/masartz/20081118/1226987031 </li></ul>
  13. 13. ご清聴ありがとうございました!

×