NanoA

NanoA を mod_perl で使用する方法

svn 版を適当な公開ディレクトリに展開 以下のような感じで httpd.conf と startup.pl を記述 (パスは適当に書き換えてください) ウマー httpd.conf Alias /nanoa /Users/kazuho/dev/NanoA RedirectMatch permanent ^/nanoa/$ /nanoa/nanoa.pl PerlRequire /…

SDBM_File のサイズ制限

There are a number of limits on the size of the data that you can store in the SDBM file. The most important is that the length of a key, plus the length of its associated value, may not exceed 1008 bytes. SDBM_File - Tied access to sdbm f…

NanoA の管理用機能

NanoA に標準で管理者ログイン機能をつけました。 インストール直後、初回アクセス時に管理用パスワードの入力を求められます 管理権限が必要な機能を実装する場合は、Admin プラグイン を使用すれば、設定とか気にする必要はありません パスワードを忘れた…

NanoA の View-Controller 実装

簡潔な View-Controller モデル コンテナ指向 遅延ロードによる高速動作 てのが NanoA の特徴だと思うけど、View-Controller モデルの話。要点として、 PATH_INFO の利用による、ディスパッチテーブルレス設計 View と Controller が可換 てのは Shibuya.pm …

HTML::AutoForm (フォームビルダー&バリデータの話)

NanoA 用に作ったフォームビルダー&バリデータを HTML::AutoForm (svn link) として独立させました。フォームを定義したり my $form = HTML::AutoForm->new( fields => [ username => { type => 'text', required => 1, min_length => 6, max_length => 8, …

OpenID 認証に対応しました

例: 掲示板のサンプルコード的には、 use plugin::openid; # プラグインをロード sub run { ... my $user = $app->openid_user or $app->redirect($app->openid_login_uri('https://mixi.jp/openid_server.pl')); ...のように、3行ばかり書くだけで、OpenID…

テンプレートエンジン作りたい

いちおうまとめておきます。先週末の NanoA のテンプレートエンジン - kazuhoのメモ置き場 は妥協の産物で、本当は、 なぜ、いちいちエスケープを手動で指定しなければいけないのか 文脈によって、自動的にエスケープ手法は決定できるはず と思ってます。言…

NanoA のテンプレートエンジン

NanoA のテンプレートエンジン (ということはつまり MENTA::Template) は、エスケープの有無を明示的に指定する方式なんだけど、めんどくさいなーと思った (TT よりマシだけど)。なので、確か Ruby on Rails がそうだったけかなとか思いながら、RawString 型…

DebugScreen におけるシグナルハンドラの正書法

11/21追記: id:tokuhirom がモジュール化してくれた CGI::ExceptionManager を使いましょうってことでよろしく (参照: http://d.hatena.ne.jp/tokuhirom/20081119/1227113506)$SIG{__DIE__} をオーバーライドしてきれいなデバッグ画面を出してあげることは W…

NanoA に MENTA をバンドルするようにした

MENTA と NanoA は別に競合してるわけじゃなくて、むしろお互いいい刺激になってるんじゃないかと思ってます。具体的に言うと、NanoA の強みは、従来の Perl フレームワークとは方向性の異なる要素を、たとえば PHP のいいところを導入したりとかそういうと…

NanoA でカウンタを書けるようにした

? load_plugin('counter') <h1>ぼくのほーむーぺーじ</h1> 現在の訪問者数は: 人です。 </html>こんな感じでかけます。とても簡単だね。 http://d.hatena.ne.jp/tokuhirom/20081117/1226922006 PHP インスパイヤな NanoA では、以下のように書けるようにしました。プラグイ…

そういえば CGI::Application::URIMapping

パストラック用に自作した CGI::Application::URIMapping が、1ファイル1コントローラーのディスパッチャ。各コントローラの先頭でマッピングを宣言すると、パッケージ名の basename を関数として呼び出す感じ。たとえば、MyApp::Users を register してお…

NanoA のセールスポイント

初心者や小規模アプリケーションむけ 1コントローラ1ファイル ディスパッチテーブルレス PHP のような、テンプレート中心のコーディングも可能 CGI での速度遅延が少ない 遅延ロードを駆使 テンプレートをコンパイルしてキャッシュ 実行時に必要なコントロ…

NanoA のデータディレクトリ

nanoa-conf.cgi で設定 *1 絶対パスあるいは相対パスが使用可能 相対パスの場合は .htaccess が必須 (かつ .htaccess が使用できること) .htaccess の使用可否は自動検出, なければ自動生成 という形にしました。かつ、初期値は相対パスの var なので、 多く…

NanoA で掲示板作ってみた (と、NanoA の今後)

dmaki さんが dist 作れるようにしてくれたりとかいろいろ手をいれてくれて、だいぶ構造がきれいになりました。ありがとうございます。というわけで、何も機能がない掲示板作ってみました。http://kazuho.31tools.com/nanoa/nanoa.cgi/tinybbs/.pm ファイル…

NanoA のエラー画面が美麗な件

http://d.hatena.ne.jp/tokuhirom/20081113/1226592335コピペしたので NanoA のエラー画面も美麗です。ありがとうございます。実際のエラー画面

彼氏が CGI 使ってた。別れたい…

CGI だと勉強会で並ばれた時なんか恥ずかしいww 下向いちゃうしww ウェブプログラマにはせめて mod_perl 使って欲しい・・・ 参考: 彼氏が軽自動車に乗ってた。別れたい…ちなみに Japanize は CGI で動いてますよっと。

NanoA のデモサイト作った

http://kazuho.31tools.com/nanoa/nanoa.cgi

軽量ウェブフレームワークで大切な3つのこと

Perlの軽量ウェブアプリケーションフレームワーク最新事情 - とほほのN88-BASIC日記 関連で今日出た話。 index.cgi ではなく フレームワーク名.cgi にすべき DirectoryIndex を設定した .htaccess を一緒に配布すべき Japanize や AutoPagerize のような配布…

NanoA を ASP 化 (PHP 化) した

Mojo::Template を使えるようにしました。たとえば、MyApp/mojo.mt というファイルを作って <html> <head> <title>hello world</title> </head> <body> Hello to <%= $app->query->param('user') || '' %>. </body> </html>とか書いて、index.cgi/mojo にアクセスすると、「Hello to 誰々」なんて表示されます。コン…

NanoA というウェブアプリケーションフレームワークをかいてみた

CGI というシーンにおける現状の Perl のウェブアプリケーションフレームワークの問題点とは 都度 perl のインタープリタインスタンスを起動するのでモジュールの読みこみ/コンパイルコストを無視できない bless の速度を無視できない といったあたりである…