Hatena::Groupperlmemo

Perlメモ

2008年09月18日 より開始
最新5件(RSS 2.0)
古いモジュールの更新

Plagger(Fedora10)
Plagger(Ubuntu9.04)

CPAN::Mini

Remedie(Ubuntu 9.04、Vine4.9(5α)、Fedora11Preview)
Remedie(Fedora10) 見れたサイトまとめ
編集

2008-11-30

MENTA

| MENTA - Perlメモ を含むブックマーク はてなブックマーク - MENTA - Perlメモ MENTA - Perlメモ のブックマークコメント

lightweight Web application framework


$ svn co http://svn.coderepos.org/share/lang/perl/MENTA/trunk/ menta

$ cd menta

$ perl bin/cgi-server.pl

http://localhost:5555/


MENTA/app/controller/demo にいろいろ入っているので

http://localhost:5555/demo/hello とかで実行できます。


MENTA/app/controller/demo/hello.mt を作成して、

<!doctype html>
<title>Hello MENTA world.</title>

<p>Hello World!</p>

http://localhost:5555/demo/hello


カウンター

MENTA/app/controller/demo/counter.mt を作成して、

? my $count = counter_increment('test')
<!doctype html>
<title>MENTA カウンター</title>

<h1>わたしのホームページ</h1>
<p>
あなたは世界で <strong><?= $count ?> 人目</strong>のスピリチュアルな訪問者です。</p>

http://localhost:5555/demo/counter

カウントのデータは、MENTA/app/data/test が自動生成され、

http://localhost:5555/demo/counter を開く度に1増えます。

counter_increment は、MENTA/plugins/counter.pl で定義されています。


クエリーで値を受ける

MENTA/app/controller/demo/hello.mt を開いて

<!doctype html>
<title>Hello MENTA world.</title>

<p>Hello to <?= param('user') ?></p>

http://localhost:5555/demo/hello?user=kazuhooku


ヘッダー と フッター

MENTA/app/controller/demo/hello.mt を開いて

?= render('header.mt')

<!doctype html>
<title>Hello MENTA world.</title>

<p>Hello World!</p>

?= render('footer.mt')

http://localhost:5555/demo/hello

(MENTA/app/controller/header.mt が読み込まれます)

? my $title = shift
<!doctype html>
<head>
<title><? if ($title) { ?><?= "$title - " ?><? } ?>MENTA</title>
<link rel="stylesheet" type="text/css" href="<?= static_file_path('style-sites.css') ?>">
</head>
<body>
<div class="container">
<a href="<?= docroot() ?>" title="Web Application Framework - MENTA"><img src="<?= static_file_path('menta-logo.png') ?>" alt="MENTA"></a>
<h1 class="maintitle"><? if ($title) { ?><?= "$title - " ?><? } ?>MENTA</h1>
<div class="bodyContainer">

(MENTA/app/controller/footer.mt が読み込まれます)

</div>
<p><a href="<?= uri_for('index') ?>">トップにもどる</a></p>
</div>
</body>

OpenSSL のパスを表示します(*nix系OSでのみ動作)

MENTA/app/controller/demo/openssl_path.mt を作成して

?= render('header.mt')

<p>あなたの OpenSSL は <code>
<?= `which openssl` ?>
</code></p>

?= render('footer.mt')

http://localhost:5555/demo/openssl_path


perlinfo

MENTA/app/controller/demo/perlinfo.mt を作成して

http://localhost:5555/demo/perlinfo


リダイレクト

MENTA/app/controller/demo/goto_wassr.pl を作成して

use MENTA::Controller;

sub run { redirect('http://wassr.jp/') }

http://localhost:5555/demo/goto_wassr


OpenID

http://localhost:5555/demo/openid

mixilivedoor のIDでログインできます。


SQLite をつかった一行掲示板

http://localhost:5555/demo/bbs_sqlite

(http://localhost:5555/demo/bbs.mt も使われてます)


MENTA 取り扱い説明書 - MENTA


MENTA

Mojo

| Mojo - Perlメモ を含むブックマーク はてなブックマーク - Mojo - Perlメモ Mojo - Perlメモ のブックマークコメント

次世代 web framework

$ sudo cpan Mojo


$ mojolicious generate app BBS

$ cd test

$ perl bin/bbs daemon

http://127.0.0.1:3000


bbs/templates/example/welcome.html を変更

% my $c = shift
<!doctype html>
<head><title>Mojolicious 掲示板</title></head>
<body>
    <h1>Mojolicious 掲示板</h1>
    <form method="post" action="<%= $c->url_for %>">
        <input type="text" name="body">
        <input type="submit" value="送信">
    </form>

    <ul>
% for my $entry (@{$c->stash->{rows}}) {
        <li><%= $entry->[0] %> <%= $entry->[1] %></li>
% }
    </ul>
</body>
</html>

bbs/lib/BBS/Example.pm を変更

package BBS::Example;
use strict;
use warnings;

use base 'Mojolicious::Controller';
use DBI;

sub welcome {
    my ($self, $c) = @_;
    my $path = '/tmp/bbs.sqlite';

    # データベースハンドラをひらく
    my $dbh = DBI->connect("dbi:SQLite:dbname=${path}", '', '') or die $DBI::errstr;
    # schema を定義する
    $dbh->do(q{CREATE TABLE IF NOT EXISTS entries (id INTEGER PRIMARY KEY, body VARCHAR(255))}) or die $dbh->errstr;

    if ($c->tx->req->method eq 'POST') {
        # POST のときは投稿。

        # クエリをとりだす
        my $body = $c->tx->req->params->param('body') || '';

        # INSERT する
        if ($body) {
            my $sth = $dbh->prepare('INSERT INTO entries (body) VALUES (?)') or die $dbh->errstr;
            $sth->execute($body) or die $dbh->errstr;
        }

        # リダイレクトする
        my $res = $c->tx->res;
        $res->code(302);
        $res->headers->header('Location' => $c->tx->req->url); # 本当は URL をとりだすコードのかきかたがあるとおもうのだけど、うまくうごかない
    } else {
        # GET のときは掲示板表示
        my $sth = $dbh->prepare('SELECT id, body FROM entries ORDER BY id DESC LIMIT 30') or die $dbh->errstr;
        $sth->execute() or die $dbh->errstr; # 実行
        my $rows = $sth->fetchall_arrayref(); # 取得
        $c->stash->{rows} = $rows; # テンプレートエンジンにわたす
        $c->render(); # テンプレートエンジンで描画
    }
}

1;

perl bin/bbs daemon

http://127.0.0.1:3000


Mojolicious 入門 - モダンなPerl入門

2008-11-25

Catalyst (Vine 4.2、Fedora 10)

| Catalyst (Vine 4.2、Fedora 10) - Perlメモ を含むブックマーク はてなブックマーク - Catalyst (Vine 4.2、Fedora 10) - Perlメモ Catalyst (Vine 4.2、Fedora 10) - Perlメモ のブックマークコメント

$ sudo cpan Task::Catalyst


$ catalyst.pl MyApp

$ cd MyApp

$ script/myapp_server.pl でサーバー起動

http://localhost:3000


MyApp/lib/MyApp/Controller/Root.pm に

sub hello : Global {

   my ($self, $c) = @_;

   $c->response->body('Hello, World!');

}

を追加。$ script/myapp_server.pl 再起動(script/myapp_server.pl -r にしておくと再起動がいらない)

http://localhost:3000/hello


ヘルパー・スクリプトによるアクションの生成

$ script/myapp_create.pl controller hi で自動生成

http://localhost:3000/hi


MyApp/lib/MyApp/Controller/hi.pm を開いて

$c->response->body('Hi!'); に変更

http://localhost:3000/hi


テンプレートで表示

MyApp/root/hi.tt を作成して、

<p>Hi! Catalyst!</p>

MyApp/lib/MyApp/Controller/hi.pm を開いて

$c->stash->{template} = 'hi.tt'; に変更

http://localhost:3000/hi


クエリーで値を受ける

MyApp/root/hi.tt を開いて

Hi! [% username | html %]!

 に変更

MyApp/lib/MyApp/Controller/hi.pm を開いて

$c->stash->{template} = 'hi.tt';

$c->stash->{username} = $c->req->param('name') || 'Catalyst'; # この行追加

に変更

http://localhost:3000/hi?name=Jack


Catalystの超簡単チュートリアル/楽


Perlフレームワーク Catalystインストールした/楽


Perl Catalyst Programming (入門編)‐ニコニコ動画(秋)


Catalyst::Manual::Intro - はじめてのCatalyst


PHP使いによるCatalyst初心者記事 - perl-mongers.org


Task::Catalyst で入るもの

Catalystに必要なもの - 徒委記


perlフレームワーク比較

ウェブアプリケーションフレームワークの比較 - モダンなPerl入門


福ろぐ - Perl フレームワーク Catalyst


perl:catalyst [kazusa wiki:bookmark]