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,289 views

Published on

yokohama.pm #3 masartz prezentaion

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,289
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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. ご清聴ありがとうございました!

×