Hatena::ブログ(Diary)

”><xmp>TokuLog 改メ tokuhirom’s blog このページをアンテナに追加 RSSフィード

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

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

CGI 用のウェブアプリケーションフレームワークにはどういうものが最適か」という問いに対する自分なりの解答。

CGI というシーンにおける現状の Perlウェブアプリケーションフレームワーク問題点とは

といったあたりであると認識している。

こういった問題を解決するために、いわゆる KENT スタイルといわれる手法がとられるケースが多かったようにおもう。つまり、一枚のスクリプトで全てを行い、ほとんどの部分を自前実装するというスタイルである。

このようなスタイルは複数人による開発には適しておらず、スケールしない開発スタイルであるといえる。

  • 高速
  • MVC の適度な分離
  • use strict; use utf8; をつかった近代的な perl5

といったあたりを目指した、いいとこどりのフレームワークをつくりたいとおもったので、つくってみた、というわけです。

要するに、CGI で速度が低下するのは

  • モジュールの多用
  • bless の多用

といったところであるから、標準添付モジュール以外はつかわないようにし、できるだけ高速に動作するようにした。

また、テンプレートエンジンには Mojo::Template を採用Mojo::Template は、テンプレートコンパクトperlソースコードに展開することができるので、perlソースコードに変換したものをサーバ側にはあげるようにした。

設定ファイルPerl で直書きでもよかったのだが、Config::Tiny でよみこむようにしてみました。

ソース自体は 122 行しかないので、とてもコンパクトだし、速度的にもかなり上々だとおもいます。

HTTP::Server::Simple をつかったスタンドアロンサーバも附属させているので、いいかんじです。

nohohon_xnohohon_x 2008/12/06 18:51 Perl学習中の者です。
ところで、↓こちらのサイトは作者様のサイトでしょうか?
http://gp.ath.cx/menta/

tokuhiromtokuhirom 2008/12/06 20:01 です

don007don007 2008/12/07 07:01 はじめまして。

MENTAをさくらインターネットで試しています。
render_and_print('index.mt', 'ほげほげ');
とやると、表示する時にテンプレートに渡した日本語が文字化けしてしまいます。
解決方法等ございますでしょうか。

tokuhiromtokuhirom 2008/12/07 11:13 ソースコードファイルを utf8 で保存していますか?utf8 で保存していないと文字化けます。

don007don007 2008/12/07 13:08 さっそく返信ありがとうございます。

ソースコードファイルはmt、plともにut8で保存していますが、文字化けしてしまいます。

don007don007 2008/12/07 13:23 すいません、追記です。

die 'あああ';
とやると、
あああ at app/controller//index.pl line 16.

1. in MENTA::Controller::index::run at app/controller//index.pl line 16

13: die 'あああ';
14: render_and_print('index.mt', \@rows);
15: }
16:
のように、エラー箇所のソースは正しく表示され、エラーメッセージは文字化けするようです。

don007don007 2008/12/09 01:04 続けざまですいません。自己解決しました。
先頭に
use utf8;
付けることで解決しました。

すばらしいフレームワークなのでどんどん使いたいと思います!

tokuhiromtokuhirom 2008/12/09 16:49 うおっつ。最新版だと use METNA::Controller; と書くといい感じに処理してくれるようになっております。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証