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.
Perl WAF Overview,  with mod_perl        株式会社fonfun   尾形 鉄次 (OGATA Tetsuji)       Twitter: @xtetsuji   2012/05/12 Hokkaido...
*Preface for readers*• このスライドは 2012/05/13に行われた Hokkaido.pm#7にて「飛び入りLT」を 行った際に休憩時間中の10分で作った 即席スライドに、実際のトーク内容を 織りまぜて再編集したものです
自己紹介
自己紹介• 尾形 鉄次 (OGATA Tetsuji)• Twitter: @xtetsuji• Blog: http://post.tetsuji.jp/• 出身は北海道河東郡音更町(帯広市の隣)• 大学で上京して現在は東京の会社に勤務
自己紹介• Hokkaido.pm 3回目の参加• Hokkaido.pm#5「mod_perl温故知新」• Hokkaido.pm#6「mod_perl Hacks PHP」• モダンPerlに乗れていない30代• mod_perl Hack...
所属紹介• 株式会社fonfun(フォンファン) http://www.fonfun.co.jp/ • 主力製品:リモートメール   http://rmail.jp/
Perl WAF,ancient and modern
Perl WAF, ancient• raw (not WAF?)• CGI::Application• ...etc
Perl WAF, modern• Catalyst• Jifty• ...etc
Perl WAF, post-modern• Dancer• Mojolicious• Amon2• Kossy• ...etc
What is WAF?• 「MVC分離」を促進するもの? • 違う• Catalystの失敗例? • ModelをWAFに密着させると、外側の  管理ツール等から使いづらくなる
What is WAF?• 私はこう思う… HTTP Request/Responseの抽象化
What is WAF?• HTTP Request/Responseの抽象化 • Web Serverごとの差異を吸収 • Catalyst::Engine:: とかのバッドノウハウ• PSGI/Plackの結実へ
そんな細かい事より mod_perl2
みんな大好きmod_perl2
Latest Perl WAF fashion• Sinatra (WAF, powered by Ruby) Like• Perl post-modern WAFs almost have  Sinatratic syntax• Lightw...
WAF by mod_perl2• mod_perl1 は割愛、mod_perl2 を使う• mod_perl2 のResponseHandlerを Sinatra  Like にすれば WAF って言っていいん  ジャマイカ?
WAF by mod_perl2• 「Web Serverごとの差異を吸収」とか  さっき言っていた事は無視!• Apache2/mod_perl2べったり• mod_perl2の $r (Apache2::RequestRec)は  Requ...
mod_perl2 handler’ssimple “Hello world”
package MyApache2::Hello;use strict;use warnings;use Apache2::RequestRec;use Apache2::RequestIO;use Apache2::Const -compil...
これをSinatra Likeに   すればいい
ならばと書いてみたMyApache2::Sinatratic
package MyApache2::Sinatratic;use strict;use warnings;# $CALLBACK->{$handler_package}->{$http_method} = [ [$url, $handler]...
概要はこんな感じ
mod_perl2 handler’sSinatratic “Hello world”
package MyApache2::Hello2;use strict;use warnings;use Apache2::RequestRec;use Apache2::RequestIO;use Apache2::Const -compi...
Sinatraっぽくなった!mod_perl2もWAFだ!
MyApache2::Sinatratic• …というのは完全なるジョーク• 足りない機能、バグ満載 • プレースホルダに対応したつもり程度
MyApache2::Sinatratic• 物好きのためにGistに放り込んだ• 使う人はいないと思うけど、使おうと 思う勇者はCAVEATSを熟読して!• 勇者が集まればModPerl::Sinatratic(仮称) プロジェクトもやっちゃ...
MyApache2::Sinatratic• 書いていて思った事 • Sinatra LikeなWAFって、Plack無しでも   こう作ればいいんだと勉強できた • シンボルテーブルいじり楽しい♪ • I ♡ Perl!
ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

Perl WAF Overview, with mod_perl - Hokkaido.pm#7 #hokkaidopm

1,302 views

Published on

このスライドは 2012/05/13に行われたHokkaido.pm#7にて「飛び入りLT」を行った際に休憩時間中の10分で作った即席スライドに、実際のトーク内容を織りまぜて再編集したものです

Published in: Technology

Perl WAF Overview, with mod_perl - Hokkaido.pm#7 #hokkaidopm

  1. 1. Perl WAF Overview, with mod_perl 株式会社fonfun 尾形 鉄次 (OGATA Tetsuji) Twitter: @xtetsuji 2012/05/12 Hokkaido.pm#7
  2. 2. *Preface for readers*• このスライドは 2012/05/13に行われた Hokkaido.pm#7にて「飛び入りLT」を 行った際に休憩時間中の10分で作った 即席スライドに、実際のトーク内容を 織りまぜて再編集したものです
  3. 3. 自己紹介
  4. 4. 自己紹介• 尾形 鉄次 (OGATA Tetsuji)• Twitter: @xtetsuji• Blog: http://post.tetsuji.jp/• 出身は北海道河東郡音更町(帯広市の隣)• 大学で上京して現在は東京の会社に勤務
  5. 5. 自己紹介• Hokkaido.pm 3回目の参加• Hokkaido.pm#5「mod_perl温故知新」• Hokkaido.pm#6「mod_perl Hacks PHP」• モダンPerlに乗れていない30代• mod_perl Hacker…なのか?
  6. 6. 所属紹介• 株式会社fonfun(フォンファン) http://www.fonfun.co.jp/ • 主力製品:リモートメール http://rmail.jp/
  7. 7. Perl WAF,ancient and modern
  8. 8. Perl WAF, ancient• raw (not WAF?)• CGI::Application• ...etc
  9. 9. Perl WAF, modern• Catalyst• Jifty• ...etc
  10. 10. Perl WAF, post-modern• Dancer• Mojolicious• Amon2• Kossy• ...etc
  11. 11. What is WAF?• 「MVC分離」を促進するもの? • 違う• Catalystの失敗例? • ModelをWAFに密着させると、外側の 管理ツール等から使いづらくなる
  12. 12. What is WAF?• 私はこう思う… HTTP Request/Responseの抽象化
  13. 13. What is WAF?• HTTP Request/Responseの抽象化 • Web Serverごとの差異を吸収 • Catalyst::Engine:: とかのバッドノウハウ• PSGI/Plackの結実へ
  14. 14. そんな細かい事より mod_perl2
  15. 15. みんな大好きmod_perl2
  16. 16. Latest Perl WAF fashion• Sinatra (WAF, powered by Ruby) Like• Perl post-modern WAFs almost have Sinatratic syntax• Lightweight• Controller oriented
  17. 17. WAF by mod_perl2• mod_perl1 は割愛、mod_perl2 を使う• mod_perl2 のResponseHandlerを Sinatra Like にすれば WAF って言っていいん ジャマイカ?
  18. 18. WAF by mod_perl2• 「Web Serverごとの差異を吸収」とか さっき言っていた事は無視!• Apache2/mod_perl2べったり• mod_perl2の $r (Apache2::RequestRec)は Request/Responseを良く抽象化している
  19. 19. mod_perl2 handler’ssimple “Hello world”
  20. 20. package MyApache2::Hello;use strict;use warnings;use Apache2::RequestRec;use Apache2::RequestIO;use Apache2::Const -compile => qw(OK);sub handler { my $r = shift; $r->content_type("text/plain"); $r->print("Hello, world"); return Apache2::Const::OK;}1;__END__<Location /> PerlResponseHandler MyApache2::Hello</Location>
  21. 21. これをSinatra Likeに すればいい
  22. 22. ならばと書いてみたMyApache2::Sinatratic
  23. 23. package MyApache2::Sinatratic;use strict;use warnings;# $CALLBACK->{$handler_package}->{$http_method} = [ [$url, $handler], ... ];my $CALLBACK = {};sub import { my $pkg = shift; my @args = @_; my $callpkg = caller(0); for my $method (qw(get post put del)) { $CALLBACK->{$callpkg}->{$method} = []; } # sub handler definition require Apache2::RequestRec; require Apache2::RequestUtil; require APR::Table; no strict refs; *{"$callpkg::handler"} = &import_handler; for my $method (qw(get post put del)) { *{"$callpkg::$method"} = sub { my ($url, $handler) = @_; push @{$CALLBACK->{$callpkg}->{$method}}, [$url, $handler]; }; } *{"$callpkg::default"} = sub { my $handler = shift; $CALLBACK->{$callpkg} ||= {}; $CALLBACK->{$callpkg}->{default} = $handler; };}
  24. 24. 概要はこんな感じ
  25. 25. mod_perl2 handler’sSinatratic “Hello world”
  26. 26. package MyApache2::Hello2;use strict;use warnings;use Apache2::RequestRec;use Apache2::RequestIO;use Apache2::Const -compile => qw(OK);use MyApache2::Sinatratic;get / => sub { my $r = shift; $r->content_type("text/plain"); $r->print("Hello, world"); return Apache2::Const::OK;};1;__END__<Location /> PerlResponseHandler MyApache2::Hello2</Location>
  27. 27. Sinatraっぽくなった!mod_perl2もWAFだ!
  28. 28. MyApache2::Sinatratic• …というのは完全なるジョーク• 足りない機能、バグ満載 • プレースホルダに対応したつもり程度
  29. 29. MyApache2::Sinatratic• 物好きのためにGistに放り込んだ• 使う人はいないと思うけど、使おうと 思う勇者はCAVEATSを熟読して!• 勇者が集まればModPerl::Sinatratic(仮称) プロジェクトもやっちゃうかも!
  30. 30. MyApache2::Sinatratic• 書いていて思った事 • Sinatra LikeなWAFって、Plack無しでも こう作ればいいんだと勉強できた • シンボルテーブルいじり楽しい♪ • I ♡ Perl!
  31. 31. ご清聴ありがとうございました

×