Your SlideShare is downloading. ×
0
The Schwartz plugin by yokohama.pm #3
The Schwartz plugin by yokohama.pm #3
The Schwartz plugin by yokohama.pm #3
The Schwartz plugin by yokohama.pm #3
The Schwartz plugin by yokohama.pm #3
The Schwartz plugin by yokohama.pm #3
The Schwartz plugin by yokohama.pm #3
The Schwartz plugin by yokohama.pm #3
The Schwartz plugin by yokohama.pm #3
The Schwartz plugin by yokohama.pm #3
The Schwartz plugin by yokohama.pm #3
The Schwartz plugin by yokohama.pm #3
The Schwartz plugin by yokohama.pm #3
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

The Schwartz plugin by yokohama.pm #3

1,064

Published on

yokohama.pm #3 masartz prezentaion

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,064
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. TheSchwartz の拡張 @masartz
  • 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. 自己紹介 <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. TheSchwartz の使用目的と実績 <ul><li>NW 的に分離されている </li></ul><ul><li>負荷的に処理が詰まる可能性 </li></ul><ul><li>TheSchwartz ?ナニソレ、美味しいの? </li></ul><ul><li>使ってみるとちょいちょい問題が </li></ul>
  • 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. 今回やった拡張 - 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. 今回やった拡張 - 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. 今回やった拡張 - Parallel ※ after use TheSchwartz::Worker::Plugin::Parallel; my @classes = qw/ MyApp::Worker1 MyApp::Worker2 /; TheSchwartz::Worker::Plugin::Parallel->work( @classes );
  • 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. 今回やった拡張 – 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. もっとやりたいこと <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. まとめ <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. ご清聴ありがとうございました!

×