• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
PSGIへの誘い
 

PSGIへの誘い

on

  • 4,747 views

 

Statistics

Views

Total Views
4,747
Views on SlideShare
3,276
Embed Views
1,471

Actions

Likes
3
Downloads
2
Comments
0

8 Embeds 1,471

http://www.perl-beginners.org 1399
https://cybozulive.com 49
http://firecracker.ytnobody.net 10
http://www.blogger.com 3
http://webcache.googleusercontent.com 3
http://paradeless29.kassuri.com 3
http://translate.googleusercontent.com 2
http://beginners429.rssing.com 2
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    PSGIへの誘い PSGIへの誘い Presentation Transcript

    • 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 perluse strict;### HTTPレスポンスヘッダprint “Content-type: text/htmlnn”;### HTTPレスポンスボディprint <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOF
    • CGI.pmをつかってみる#!/usr/bin/env perluse 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>EOFsub { [ 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>EOFsub { [ 200, [ Content-Type => text/html ], [ $body ] ]};
    • PSGI-appの基本use strict;my $body = <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOFsub { [ 200, [ Content-Type => text/html ], [ $body ] ]};← PSGI-appは、コードリファレンス(sub {...})を返す。
    • PSGI-appの基本use strict;my $body = <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOFsub { [ 200, [ Content-Type => text/html ], [ $body ] ] ← コードリファレンスは、配列リファレンスを返す。};
    • PSGI-appの基本use strict;my $body = <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOFsub { [ 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デーモンを必要としない
    • DEMOPSGI-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 付けて 「教えてください」っていうと、意外と教えてくれる人がいるかもしれないので やってみるといいんじゃないでしょうか。
    • ご清聴ありがとうございました