表示テスト

表示テスト

use 5.12.0;
say 'hello';
% echo hello
hello

OSC 2011 Nagoya での展示
または
Amon2でWebアプリを作ってみる

2011-11-20 Nagoya.pm #2 (#nagoyapm)
岩田 享 / issm
type "?" to show help

おまえだれよ?

アジェンダ

アジェンダ

展示用Webアプリ概要

いきさつ

とりあえずできた

とりあえずできた
(当日の夜)

デモ

アジェンダ

Amon2のほんのさわり

Amon2とは

Amon2のほんのさわり

簡単スタートガイド

% cpanm Amon2

% amon2-setup.pl myproj

% cd myproj

% plackup

http://localhost:5000/

Amon2のほんのさわり

ディスパッチャ

lib/myproj/Web/Dispatcher.pm

any '/' => sub {
    my ($c) = @_;
    $c->render('index.tt');
};

$c が「コンテキスト」オブジェクト

tmpl/index.tt がテンプレート

Amon2のほんのさわり

ディスパッチャ

lib/myproj/Web/Dispatcher.pm

get '/hello' => sub {
    my ($c) = @_;
    $c->render('hello.tt', { username => '@issm' });
};

tmpl/hello.tt

<h1>Hello, Amon2!</h1>
<h2>username: [% username %]</h2>

Amon2のほんのさわり

Amon2のほんのさわり

コンフィグ:ファイル

config/*.pl

環境変数 PLACK_ENV の値のものが読まれる

Amon2のほんのさわり

コンフィグ:アクセス

コンテキストオブジェクトの config プロパティ

# in Dispatcher
my $config = $c->config;
my $foo    = $c->config->{hello}{foo};
<!-- in template -->
[% c().config.hello.foo %]

Amon2のほんのさわり

プラグイン

いろいろ拡張できる

# in myproj::Web.pm
__PACKAGE__->load_plugins(
    'Web::CSRFDefender',           # Amon2::Plugin 以下
    '+myproj::Plugin::FooBar',  # 任意
);
# in Dispatcher
$c->render_json({ foo => bar });
$c->foobar();

Amon2のほんのさわり

プラグイン

いろいろ拡張できる

package myproj::Plugin::FooBar;
use warnings;
use Amon2::Util;
sub init {
  my ($class, $c, $conf) = @_;
  Amon2::Util::add_method(
    $c, 'foobar', \&amp;_foobar,
  );
}
sub _foobar { warn 'foobar!!' }
1;

Amon2のほんのさわり

プラグイン

# in myproj::Web.pm
__PACKAGE__->load_plugins(
    '+myproj::Plugin::FooBar',
);
# in Dispatcher
$c->foobar();
foobar!! at lib/myproj/Plugin/FooBar.pm line 10.
127.0.0.1 - - [20/11/2011:12:27:26 +0900] "GET /hello HTTP/1.1" 200 132 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.51.22 (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22"

Amon2のほんのさわり

トリガ

# in myproj::Web
__PACKAGE__->add_trigger(
  HTML_FILTER => sub { ... }
);
__PACKAGE__->add_trigger(
  BEFORE_DISPATCH => sub { ... }
);
__PACKAGE__->add_trigger(
  AFTER_DISPATCH => sub { ... }
);

未勉強><

Amon2のほんのさわり

コンテキスト:2つの「コンテキスト」

ソースを見てみると...

Amon2のほんのさわり

コンテキスト:個人的解釈

アジェンダ

展示用Webアプリの少し奥

使ったモジュール

アジェンダ

まとめ

One More Thing...

ニコニコ動画観てますか?

よく観ますよね!

ニコニコ動画にて

観てると...

ニコニコ動画にて

作ってみた

作りなおしてみた
(3年ぶり1度目)

にこぐらふ
http://www.nicograph.jp/

にこぐらふの概要

主な機能

にこぐらふの概要

グラフ表示ページ

にこぐらふの概要

だいたいの構成

にこぐらふの概要

だいたいの構成

  • Perl
    • Amon2
    • Teng
    • AnyEvent::Filesys::Notify
    • Chart::Clicker
    • XML::LibXML
    • LWP::UserAgent
    • OAuth::Lite
    • Net::Twitter::Lite
  • デモ

    まとめ

    おまけ

    ネトラン 2008年11月号
    「ベスト・オブ・悪用厳禁ツール&サイト 2008
    サイト部門・検索カテゴリ」
    金賞

    Q?