SlideShare a Scribd company logo
PSGIへの誘い
~CGIと比較して利便性を実感~
  Perl Beginners #2 Lightning Talk
            @ytnobody
対象とねらい



 これからCGIについて学ぼうとしている方
いまCGIについて学んでいる方に言いたい。

「ぜひPSGIを触ってみてくれ!」と。
PSGIとは?
●   Webサーバレイヤを抽象化するための仕様。
    ●   http://d.hatena.ne.jp/keyword/PSGI
●   Plack
    ●   PerlでのPSGIリファレンス実装
●   類似品(というか大体は兄貴分みたいなの)
    ●   Ruby
        –   Rack
    ●   Python
        –   WSGI
よくわかんねえw
要するにPSGIというのは

     CGIと同じように

webページを動的に生成する技術です
シンプルなCGI
#!/usr/bin/env perl

use strict;

### HTTPレスポンスヘッダ
print “Content-type: text/htmlnn”;

### HTTPレスポンスボディ
print <<EOF;
<html>
<body>
 <h1>Hello, world!</h1>
</body>
</html>
EOF
CGI.pmをつかってみる
#!/usr/bin/env perl

use strict;
use CGI;

### CGIインスタンス生成
my $cgi = CGI->new;

### HTTPレスポンスヘッダ
print $cgi->header( -type => 'text/html' );

### HTTPレスポンスボディ
print <<EOF;
<html>
<body>
 <h1>Hello, world!</h1>
</body>
</html>
EOF
PSGIならこうなる
●   下記ファイルをapp.psgiとして保存。
use strict;

my $body = <<EOF;
<html>
<body>
 <h1>Hello, world!</h1>
</body>
</html>
EOF

sub {
   [
     200,
     [ 'Content-Type' => 'text/html' ],
     [ $body ]
   ]
};
PSGI-appの基本
use strict; ← shebang(#!/usr/bin/env perl)は無し。

my $body = <<EOF;
<html>
<body>
 <h1>Hello, world!</h1>
</body>
</html>
EOF

sub {
   [
     200,
     [ 'Content-Type' => 'text/html' ],
     [ $body ]
   ]
};
PSGI-appの基本
use strict;

my $body = <<EOF;
<html>
<body>
 <h1>Hello, world!</h1>
</body>
</html>
EOF

sub {
  [
     200,
     [ 'Content-Type' => 'text/html' ],
     [ $body ]
  ]
};← PSGI-appは、コードリファレンス(sub {...})を返す。
PSGI-appの基本
use strict;

my $body = <<EOF;
<html>
<body>
 <h1>Hello, world!</h1>
</body>
</html>
EOF

sub {
   [
      200,
      [ 'Content-Type' => 'text/html' ],
      [ $body ]
   ] ← コードリファレンスは、配列リファレンスを返す。
};
PSGI-appの基本
use strict;

my $body = <<EOF;
<html>
<body>
 <h1>Hello, world!</h1>
</body>
</html>
EOF

sub {
   [
     200, ← レスポンスコード。
     [ 'Content-Type' => 'text/html' ], ← HTTPレスポンスヘッダ
     [ $body ] ← HTTPボディ
   ]
};
CGIのデプロイ(?)
●   httpデーモン(Apacheとか)側での設定
    ●   特定のパス以下にリクエストが来た場合にCGIを実行
        する指定
    ●   上記で指定されたパスに相当するディレクトリにプログ
        ラムを設置
    ●   プログラムに実行権限を与える(パーミッションの設定)
PSGI-appのデプロイ
●   あらかじめサーバにPlackをインストールしておく
    ●   cpanm Plack
●   plackupコマンドでアプリケーションサーバを起動
    ●   plackup ./app.psgi
デプロイの相違点
●   app.psgiに実行権限を与える必要はない
●   apacheなどのhttpデーモンを必要としない
DEMO
PSGI-appのライブコーディング
          &
        デプロイ
PSGIを導入できる条件
●   SSHなどでシェルを実行できる環境であること
    –   いわゆるレンタルwebスペースだと、この点はクリアできない
●
    プロセスを常駐させても怒られないこと
    –   いわゆるレンタルwebスペースだと(ry
●   (必須じゃないけど推奨)perlbrew+cpanmが使えること
    –   いわゆるレン(ry
オススメのデプロイ先
●   VPS
    ●   さくらVPS
    ●   WebARENA
    ●
        などなど。。。
●   お手持ちのMac
●
    自宅サーバ
    ●   各種LinuxやBSDなど
●   PaaS
    ●   DotCloud
        –   但しデプロイ方法が独特。慣れると楽。
まとめ
●   PSGIは難しくない
    ●   CGIより簡単
●   デプロイするにはそれなりの環境が必要。
    ●   CGIみたいにレンタルスペースじゃ動かせない
    ●   VPS/自宅サーバ/MacBookあたりがあれば楽々。
●   今から学習するなら、断然PSGI
    ●   CGIについて学習するのがダメなんじゃなくて、先に
        PSGIを触っておいたほうが、動くものを手早く作れる。
    ●   PSGIならWAFも色々あるよ!
    ●   まずは恐れずにPSGIを触ろうよ!
さいごに


     Twitterで #perl 付けて

    「教えてください」っていうと、

意外と教えてくれる人がいるかもしれないので

 やってみるといいんじゃないでしょうか。
ご清聴

ありがとうございました

More Related Content

What's hot

Re: WebServer BenchMarking
Re: WebServer BenchMarkingRe: WebServer BenchMarking
Re: WebServer BenchMarking
Ryo Tomidokoro
 
Zend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探るZend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探るYoshio Hanawa
 
JIT for PHP を試した
JIT for PHP を試したJIT for PHP を試した
JIT for PHP を試した
y-uti
 
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説するphp-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
Yoshio Hanawa
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
shigeki_ohtsu
 
Windows で PHP をビルドしてみた
Windows で PHP をビルドしてみたWindows で PHP をビルドしてみた
Windows で PHP をビルドしてみた
y-uti
 
apachehereというPHPのBuiltin Serverっぽいやつをつくった
apachehereというPHPのBuiltin ServerっぽいやつをつくったapachehereというPHPのBuiltin Serverっぽいやつをつくった
apachehereというPHPのBuiltin Serverっぽいやつをつくった
Junichi Ishida
 
WordPress on HHVM + Hack
WordPress on HHVM + HackWordPress on HHVM + Hack
WordPress on HHVM + Hack
Takayuki Miyauchi
 
PHPの今とこれから2015
PHPの今とこれから2015PHPの今とこれから2015
PHPの今とこれから2015
Rui Hirokawa
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
 
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
y-uti
 
Hashicorpツールズ
HashicorpツールズHashicorpツールズ
Hashicorpツールズ
Uchio Kondo
 
RFC: "var" Deprecation
RFC: "var" DeprecationRFC: "var" Deprecation
RFC: "var" Deprecation
y-uti
 
Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?
Uchio Kondo
 
PHPエクステンションの開発tips
PHPエクステンションの開発tipsPHPエクステンションの開発tips
PHPエクステンションの開発tipsYoshio Hanawa
 
PHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニックPHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
 
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
Yoshio Hanawa
 
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そうgulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
Toshimichi Suekane
 
Pinoco phptal-phpcon-kansai
Pinoco phptal-phpcon-kansaiPinoco phptal-phpcon-kansai
Pinoco phptal-phpcon-kansai
Hisateru Tanaka
 

What's hot (20)

Re: WebServer BenchMarking
Re: WebServer BenchMarkingRe: WebServer BenchMarking
Re: WebServer BenchMarking
 
Zend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探るZend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探る
 
JIT for PHP を試した
JIT for PHP を試したJIT for PHP を試した
JIT for PHP を試した
 
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説するphp-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
 
Windows で PHP をビルドしてみた
Windows で PHP をビルドしてみたWindows で PHP をビルドしてみた
Windows で PHP をビルドしてみた
 
apachehereというPHPのBuiltin Serverっぽいやつをつくった
apachehereというPHPのBuiltin ServerっぽいやつをつくったapachehereというPHPのBuiltin Serverっぽいやつをつくった
apachehereというPHPのBuiltin Serverっぽいやつをつくった
 
WordPress on HHVM + Hack
WordPress on HHVM + HackWordPress on HHVM + Hack
WordPress on HHVM + Hack
 
PHPの今とこれから2015
PHPの今とこれから2015PHPの今とこれから2015
PHPの今とこれから2015
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
 
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
 
Hashicorpツールズ
HashicorpツールズHashicorpツールズ
Hashicorpツールズ
 
RFC: "var" Deprecation
RFC: "var" DeprecationRFC: "var" Deprecation
RFC: "var" Deprecation
 
Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?
 
PHPエクステンションの開発tips
PHPエクステンションの開発tipsPHPエクステンションの開発tips
PHPエクステンションの開発tips
 
PHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニックPHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニック
 
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
 
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そうgulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
 
Pinoco phptal-phpcon-kansai
Pinoco phptal-phpcon-kansaiPinoco phptal-phpcon-kansai
Pinoco phptal-phpcon-kansai
 

Viewers also liked

Movable Type のサステナビリティと今後の戦略について
Movable Type のサステナビリティと今後の戦略についてMovable Type のサステナビリティと今後の戦略について
Movable Type のサステナビリティと今後の戦略について
Six Apart KK
 
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題Masahiro Nagano
 
A jensen-shannon
A    jensen-shannonA    jensen-shannon
A jensen-shannonUnirio
 
Lectionline xiv domenica del t o 6 luglio
Lectionline xiv domenica del t o 6 luglioLectionline xiv domenica del t o 6 luglio
Lectionline xiv domenica del t o 6 luglioMaike Loes
 
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1azuma satoshi
 
Monthly highlights
Monthly highlightsMonthly highlights
Monthly highlights
Bennett Gordon Cfa Cfp
 
[STP]비타500
[STP]비타500[STP]비타500
[STP]비타500
hyunjung89
 
Anexo3 cómics eu
Anexo3 cómics euAnexo3 cómics eu
Anexo3 cómics euKatalogador
 
Triduo Mons. Giuseppe Fagnano_2° giorno
Triduo Mons. Giuseppe Fagnano_2° giorno Triduo Mons. Giuseppe Fagnano_2° giorno
Triduo Mons. Giuseppe Fagnano_2° giorno
Maike Loes
 
Lectionline xxvii domenica del t o anno a_5 ottobre 2014
Lectionline xxvii domenica del t o  anno a_5 ottobre 2014Lectionline xxvii domenica del t o  anno a_5 ottobre 2014
Lectionline xxvii domenica del t o anno a_5 ottobre 2014Maike Loes
 
Sunshine Coast Library, 3rd place IFLA BibLibre Marketing award 2016
Sunshine Coast Library, 3rd place IFLA BibLibre Marketing award 2016Sunshine Coast Library, 3rd place IFLA BibLibre Marketing award 2016
Sunshine Coast Library, 3rd place IFLA BibLibre Marketing award 2016
Bibliothèque publique d'information - Centre Pompidou
 
Continuous Delivery via Docker (in Chinese)
Continuous Delivery via Docker (in Chinese)Continuous Delivery via Docker (in Chinese)
Continuous Delivery via Docker (in Chinese)
Yi Yang
 
Triduo Sr Angela Vallese_3 giorno eng
Triduo Sr Angela Vallese_3 giorno engTriduo Sr Angela Vallese_3 giorno eng
Triduo Sr Angela Vallese_3 giorno engMaike Loes
 
Los Hernandez at Making Believe
Los Hernandez at Making BelieveLos Hernandez at Making Believe
Los Hernandez at Making Believe
Evangelina Guerra
 
Global commercial opportunities derived from glyphosate industry
Global commercial opportunities derived from glyphosate industryGlobal commercial opportunities derived from glyphosate industry
Global commercial opportunities derived from glyphosate industryMartin lau
 
Kozma Szilárd: Az emberek az ítélkezői felületességükön keresztül tévesztik m...
Kozma Szilárd: Az emberek az ítélkezői felületességükön keresztül tévesztik m...Kozma Szilárd: Az emberek az ítélkezői felületességükön keresztül tévesztik m...
Kozma Szilárd: Az emberek az ítélkezői felületességükön keresztül tévesztik m...
Violetta Joó
 
Giornata Missionaria Mondiale 2013
Giornata Missionaria Mondiale 2013Giornata Missionaria Mondiale 2013
Giornata Missionaria Mondiale 2013Maike Loes
 

Viewers also liked (20)

Movable Type のサステナビリティと今後の戦略について
Movable Type のサステナビリティと今後の戦略についてMovable Type のサステナビリティと今後の戦略について
Movable Type のサステナビリティと今後の戦略について
 
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
 
A jensen-shannon
A    jensen-shannonA    jensen-shannon
A jensen-shannon
 
Lectionline xiv domenica del t o 6 luglio
Lectionline xiv domenica del t o 6 luglioLectionline xiv domenica del t o 6 luglio
Lectionline xiv domenica del t o 6 luglio
 
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
 
Monthly highlights
Monthly highlightsMonthly highlights
Monthly highlights
 
[STP]비타500
[STP]비타500[STP]비타500
[STP]비타500
 
Anexo3 cómics eu
Anexo3 cómics euAnexo3 cómics eu
Anexo3 cómics eu
 
Kindergarten registration key points 2012 v_jan20
Kindergarten registration key points 2012 v_jan20Kindergarten registration key points 2012 v_jan20
Kindergarten registration key points 2012 v_jan20
 
Triduo Mons. Giuseppe Fagnano_2° giorno
Triduo Mons. Giuseppe Fagnano_2° giorno Triduo Mons. Giuseppe Fagnano_2° giorno
Triduo Mons. Giuseppe Fagnano_2° giorno
 
Lectionline xxvii domenica del t o anno a_5 ottobre 2014
Lectionline xxvii domenica del t o  anno a_5 ottobre 2014Lectionline xxvii domenica del t o  anno a_5 ottobre 2014
Lectionline xxvii domenica del t o anno a_5 ottobre 2014
 
Sunshine Coast Library, 3rd place IFLA BibLibre Marketing award 2016
Sunshine Coast Library, 3rd place IFLA BibLibre Marketing award 2016Sunshine Coast Library, 3rd place IFLA BibLibre Marketing award 2016
Sunshine Coast Library, 3rd place IFLA BibLibre Marketing award 2016
 
Continuous Delivery via Docker (in Chinese)
Continuous Delivery via Docker (in Chinese)Continuous Delivery via Docker (in Chinese)
Continuous Delivery via Docker (in Chinese)
 
Triduo Sr Angela Vallese_3 giorno eng
Triduo Sr Angela Vallese_3 giorno engTriduo Sr Angela Vallese_3 giorno eng
Triduo Sr Angela Vallese_3 giorno eng
 
Los Hernandez at Making Believe
Los Hernandez at Making BelieveLos Hernandez at Making Believe
Los Hernandez at Making Believe
 
Global commercial opportunities derived from glyphosate industry
Global commercial opportunities derived from glyphosate industryGlobal commercial opportunities derived from glyphosate industry
Global commercial opportunities derived from glyphosate industry
 
Kozma Szilárd: Az emberek az ítélkezői felületességükön keresztül tévesztik m...
Kozma Szilárd: Az emberek az ítélkezői felületességükön keresztül tévesztik m...Kozma Szilárd: Az emberek az ítélkezői felületességükön keresztül tévesztik m...
Kozma Szilárd: Az emberek az ítélkezői felületességükön keresztül tévesztik m...
 
Scuola dante alighieri
Scuola dante alighieriScuola dante alighieri
Scuola dante alighieri
 
Giornata Missionaria Mondiale 2013
Giornata Missionaria Mondiale 2013Giornata Missionaria Mondiale 2013
Giornata Missionaria Mondiale 2013
 
Farewell (Mae, batch 2011)
Farewell (Mae, batch 2011)Farewell (Mae, batch 2011)
Farewell (Mae, batch 2011)
 

Similar to PSGIへの誘い

WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
Start python with fastapi
Start python with fastapiStart python with fastapi
Start python with fastapi
ku_taka
 
配布用Cacti running with cherokee
配布用Cacti running with cherokee配布用Cacti running with cherokee
配布用Cacti running with cherokee
yut148atgmaildotcom
 
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 とPHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
do_aki
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
Toru Yamaguchi
 
Php in ruby
Php in rubyPhp in ruby
Php in rubydo_aki
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築Hideharu MATSUFUJI
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
Kentaro Ebisawa
 
Clack meetup #1 lt
Clack meetup #1 ltClack meetup #1 lt
Clack meetup #1 lt
Atsushi Odagiri
 
php-src の歩き方
php-src の歩き方php-src の歩き方
php-src の歩き方
do_aki
 
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CI
Wataru MIYAGUNI
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門Hiroaki Murayama
 
Apacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasiaApacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasia
鉄次 尾形
 
Ansible quickstart
Ansible quickstartAnsible quickstart
Ansible quickstart
Hideki Saito
 
Power shell で DSL
Power shell で DSLPower shell で DSL
Power shell で DSLurasandesu
 
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudyPHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
Hikari Fukasawa
 
静的サイトどこにする?
静的サイトどこにする?静的サイトどこにする?
静的サイトどこにする?
ogawatti
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法Naruto TAKAHASHI
 

Similar to PSGIへの誘い (20)

WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
Start python with fastapi
Start python with fastapiStart python with fastapi
Start python with fastapi
 
配布用Cacti running with cherokee
配布用Cacti running with cherokee配布用Cacti running with cherokee
配布用Cacti running with cherokee
 
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 とPHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
Php in ruby
Php in rubyPhp in ruby
Php in ruby
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
 
Niigata.pm #1
Niigata.pm #1Niigata.pm #1
Niigata.pm #1
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
Clack meetup #1 lt
Clack meetup #1 ltClack meetup #1 lt
Clack meetup #1 lt
 
php-src の歩き方
php-src の歩き方php-src の歩き方
php-src の歩き方
 
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CI
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門
 
Apacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasiaApacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasia
 
Ansible quickstart
Ansible quickstartAnsible quickstart
Ansible quickstart
 
Power shell で DSL
Power shell で DSLPower shell で DSL
Power shell で DSL
 
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudyPHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
 
静的サイトどこにする?
静的サイトどこにする?静的サイトどこにする?
静的サイトどこにする?
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
 

More from azuma satoshi

finally (not finally)
finally (not finally)finally (not finally)
finally (not finally)
azuma satoshi
 
時を駆けるINSERT.pptx
時を駆けるINSERT.pptx時を駆けるINSERT.pptx
時を駆けるINSERT.pptx
azuma satoshi
 
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャできる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャ
azuma satoshi
 
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyPerlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyazuma satoshi
 
Perlbeginnes 9 opening
Perlbeginnes 9 openingPerlbeginnes 9 opening
Perlbeginnes 9 openingazuma satoshi
 
Perlbeginners proposal
Perlbeginners proposalPerlbeginners proposal
Perlbeginners proposalazuma satoshi
 
Chibapm01 lt
Chibapm01 ltChibapm01 lt
Chibapm01 lt
azuma satoshi
 
入れ子構造を分解する
入れ子構造を分解する入れ子構造を分解する
入れ子構造を分解する
azuma satoshi
 
YAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししようYAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししよう
azuma satoshi
 
ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向azuma satoshi
 
Perlbeginnes 4 keynote
Perlbeginnes 4 keynotePerlbeginnes 4 keynote
Perlbeginnes 4 keynoteazuma satoshi
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話azuma satoshi
 
Perlbeginners 3 opening talk
Perlbeginners 3 opening talkPerlbeginners 3 opening talk
Perlbeginners 3 opening talkazuma satoshi
 
Perlbeginnes 2 keynote
Perlbeginnes 2 keynotePerlbeginnes 2 keynote
Perlbeginnes 2 keynoteazuma satoshi
 
Perl Beginners #1 keynote
Perl Beginners #1 keynotePerl Beginners #1 keynote
Perl Beginners #1 keynoteazuma satoshi
 
大ざっぱにオブジェクト指向
大ざっぱにオブジェクト指向大ざっぱにオブジェクト指向
大ざっぱにオブジェクト指向
azuma satoshi
 
Hachioji.pm #13 LT
Hachioji.pm #13 LTHachioji.pm #13 LT
Hachioji.pm #13 LT
azuma satoshi
 
Alluren of prototype-based OOP
Alluren of prototype-based OOPAlluren of prototype-based OOP
Alluren of prototype-based OOPazuma satoshi
 

More from azuma satoshi (20)

finally (not finally)
finally (not finally)finally (not finally)
finally (not finally)
 
時を駆けるINSERT.pptx
時を駆けるINSERT.pptx時を駆けるINSERT.pptx
時を駆けるINSERT.pptx
 
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャできる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャ
 
L tthon
L tthonL tthon
L tthon
 
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyPerlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
 
Perlbeginnes 9 opening
Perlbeginnes 9 openingPerlbeginnes 9 opening
Perlbeginnes 9 opening
 
Perlbeginners proposal
Perlbeginners proposalPerlbeginners proposal
Perlbeginners proposal
 
Chibapm01 lt
Chibapm01 ltChibapm01 lt
Chibapm01 lt
 
入れ子構造を分解する
入れ子構造を分解する入れ子構造を分解する
入れ子構造を分解する
 
YAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししようYAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししよう
 
ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向
 
Perlbeginnes 4 keynote
Perlbeginnes 4 keynotePerlbeginnes 4 keynote
Perlbeginnes 4 keynote
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
 
Perlbeginners 3 opening talk
Perlbeginners 3 opening talkPerlbeginners 3 opening talk
Perlbeginners 3 opening talk
 
Perlbeginnes 2 keynote
Perlbeginnes 2 keynotePerlbeginnes 2 keynote
Perlbeginnes 2 keynote
 
Hachiojipm 14 LT
Hachiojipm 14 LTHachiojipm 14 LT
Hachiojipm 14 LT
 
Perl Beginners #1 keynote
Perl Beginners #1 keynotePerl Beginners #1 keynote
Perl Beginners #1 keynote
 
大ざっぱにオブジェクト指向
大ざっぱにオブジェクト指向大ざっぱにオブジェクト指向
大ざっぱにオブジェクト指向
 
Hachioji.pm #13 LT
Hachioji.pm #13 LTHachioji.pm #13 LT
Hachioji.pm #13 LT
 
Alluren of prototype-based OOP
Alluren of prototype-based OOPAlluren of prototype-based OOP
Alluren of prototype-based OOP
 

Recently uploaded

FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 

Recently uploaded (14)

FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 

PSGIへの誘い

  • 1. PSGIへの誘い ~CGIと比較して利便性を実感~ Perl Beginners #2 Lightning Talk @ytnobody
  • 3. PSGIとは? ● Webサーバレイヤを抽象化するための仕様。 ● http://d.hatena.ne.jp/keyword/PSGI ● Plack ● PerlでのPSGIリファレンス実装 ● 類似品(というか大体は兄貴分みたいなの) ● Ruby – Rack ● Python – WSGI
  • 5. 要するにPSGIというのは CGIと同じように webページを動的に生成する技術です
  • 6. シンプルなCGI #!/usr/bin/env perl use strict; ### HTTPレスポンスヘッダ print “Content-type: text/htmlnn”; ### HTTPレスポンスボディ print <<EOF; <html> <body> <h1>Hello, world!</h1> </body> </html> EOF
  • 7. CGI.pmをつかってみる #!/usr/bin/env perl use strict; use CGI; ### CGIインスタンス生成 my $cgi = CGI->new; ### HTTPレスポンスヘッダ print $cgi->header( -type => 'text/html' ); ### HTTPレスポンスボディ print <<EOF; <html> <body> <h1>Hello, world!</h1> </body> </html> EOF
  • 8. PSGIならこうなる ● 下記ファイルをapp.psgiとして保存。 use strict; my $body = <<EOF; <html> <body> <h1>Hello, world!</h1> </body> </html> EOF sub { [ 200, [ 'Content-Type' => 'text/html' ], [ $body ] ] };
  • 9. PSGI-appの基本 use strict; ← shebang(#!/usr/bin/env perl)は無し。 my $body = <<EOF; <html> <body> <h1>Hello, world!</h1> </body> </html> EOF sub { [ 200, [ 'Content-Type' => 'text/html' ], [ $body ] ] };
  • 10. PSGI-appの基本 use strict; my $body = <<EOF; <html> <body> <h1>Hello, world!</h1> </body> </html> EOF sub { [ 200, [ 'Content-Type' => 'text/html' ], [ $body ] ] };← PSGI-appは、コードリファレンス(sub {...})を返す。
  • 11. PSGI-appの基本 use strict; my $body = <<EOF; <html> <body> <h1>Hello, world!</h1> </body> </html> EOF sub { [ 200, [ 'Content-Type' => 'text/html' ], [ $body ] ] ← コードリファレンスは、配列リファレンスを返す。 };
  • 12. PSGI-appの基本 use strict; my $body = <<EOF; <html> <body> <h1>Hello, world!</h1> </body> </html> EOF sub { [ 200, ← レスポンスコード。 [ 'Content-Type' => 'text/html' ], ← HTTPレスポンスヘッダ [ $body ] ← HTTPボディ ] };
  • 13. CGIのデプロイ(?) ● httpデーモン(Apacheとか)側での設定 ● 特定のパス以下にリクエストが来た場合にCGIを実行 する指定 ● 上記で指定されたパスに相当するディレクトリにプログ ラムを設置 ● プログラムに実行権限を与える(パーミッションの設定)
  • 14. PSGI-appのデプロイ ● あらかじめサーバにPlackをインストールしておく ● cpanm Plack ● plackupコマンドでアプリケーションサーバを起動 ● plackup ./app.psgi
  • 15. デプロイの相違点 ● app.psgiに実行権限を与える必要はない ● apacheなどのhttpデーモンを必要としない
  • 17. PSGIを導入できる条件 ● SSHなどでシェルを実行できる環境であること – いわゆるレンタルwebスペースだと、この点はクリアできない ● プロセスを常駐させても怒られないこと – いわゆるレンタルwebスペースだと(ry ● (必須じゃないけど推奨)perlbrew+cpanmが使えること – いわゆるレン(ry
  • 18. オススメのデプロイ先 ● VPS ● さくらVPS ● WebARENA ● などなど。。。 ● お手持ちのMac ● 自宅サーバ ● 各種LinuxやBSDなど ● PaaS ● DotCloud – 但しデプロイ方法が独特。慣れると楽。
  • 19. まとめ ● PSGIは難しくない ● CGIより簡単 ● デプロイするにはそれなりの環境が必要。 ● CGIみたいにレンタルスペースじゃ動かせない ● VPS/自宅サーバ/MacBookあたりがあれば楽々。 ● 今から学習するなら、断然PSGI ● CGIについて学習するのがダメなんじゃなくて、先に PSGIを触っておいたほうが、動くものを手早く作れる。 ● PSGIならWAFも色々あるよ! ● まずは恐れずにPSGIを触ろうよ!
  • 20. さいごに Twitterで #perl 付けて 「教えてください」っていうと、 意外と教えてくれる人がいるかもしれないので やってみるといいんじゃないでしょうか。