表示テスト

表示テスト

      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

      

Hello, Amon2!

username: [% username %]

Amon2のほんのさわり

Amon2のほんのさわり

コンフィグ:ファイル

config/*.pl

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

Amon2のほんのさわり

コンフィグ:アクセス

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

      # in Dispatcher
      my $config = $c->config;
      my $foo    = $c->config->{hello}{foo};
    
      
      [% 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', \&_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?