• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Perl WAF Overview, with mod_perl - Hokkaido.pm#7 #hokkaidopm
 

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

on

  • 1,042 views

このスライドは ...

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

Statistics

Views

Total Views
1,042
Views on SlideShare
1,042
Embed Views
0

Actions

Likes
1
Downloads
1
Comments
1

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • アップ時点でのスライドの中で言及していませんが、コードをアップロードしたGistのURLは https://gist.github.com/3207493 です。
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \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 Perl WAF Overview, with mod_perl - Hokkaido.pm#7 #hokkaidopm Presentation Transcript

  • Perl WAF Overview, with mod_perl 株式会社fonfun 尾形 鉄次 (OGATA Tetsuji) Twitter: @xtetsuji 2012/05/12 Hokkaido.pm#7
  • *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 Hacker…なのか?
  • 所属紹介• 株式会社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• Lightweight• Controller oriented
  • 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)は Request/Responseを良く抽象化している
  • mod_perl2 handler’ssimple “Hello world”
  • 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>
  • これをSinatra Likeに すればいい
  • ならばと書いてみたMyApache2::Sinatratic
  • 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; };}
  • 概要はこんな感じ
  • mod_perl2 handler’sSinatratic “Hello world”
  • 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>
  • Sinatraっぽくなった!mod_perl2もWAFだ!
  • MyApache2::Sinatratic• …というのは完全なるジョーク• 足りない機能、バグ満載 • プレースホルダに対応したつもり程度
  • MyApache2::Sinatratic• 物好きのためにGistに放り込んだ• 使う人はいないと思うけど、使おうと 思う勇者はCAVEATSを熟読して!• 勇者が集まればModPerl::Sinatratic(仮称) プロジェクトもやっちゃうかも!
  • MyApache2::Sinatratic• 書いていて思った事 • Sinatra LikeなWAFって、Plack無しでも こう作ればいいんだと勉強できた • シンボルテーブルいじり楽しい♪ • I ♡ Perl!
  • ご清聴ありがとうございました