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

930

Published on

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

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total Views
930
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 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. ご清聴ありがとうございました
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×