-
HOME
-
Tags
[ Perl ]
HikiDoc を使った WEB アプリケーション (9) # そろそろ記事の編集画面作らないといけないんだが(でないと自分で使えない)、その前に思いついたのでメモ。
画像などのファイル添付機能は実装しない。flickr 等の Plugin を作って、画像表示はそれで対応することにする。なぜかというと、画像を添付するとその画像を管理したくなるわけだが、今作ろうとしているアプリの主役は文章なので、それ以外の機能は肥大化させたくない。画像管理するアプリが必要なら別途用意すればいいわけで。
...
HikiDoc を使った WEB アプリケーション (10) # そろそろ記事の編集画面作らないといけないんだが(でないと自分で使えない)
ということで、作った。最低限の機能はそろったので、次は整理・再構成。
TL というフレームワーク # http://tripletail.jp/ ふむ。日本人の日本人による日本人のためのフレームワークという雰囲気だな。つうか、今日公開ですか。後でじっくり見てみよう。
Test::WWW::Mechanize # まぁ、だまされたと思って使ってみるがよろし。つうか、今さらですねごめんなさい。
t/01-dummy.t
use Test::More 'no_plan'; BEGIN { use_ok('Test::WWW::Mechanize') or exit; } my $mech = Test::WWW::Mechanize->new(); my $page = 'http://haro.jp/path/to/app.cgi'; $mech->get_ok($page,'GET app.cgi'); $mech->title_is('PageTitle', 'app.cgi title is PageTitle'); で、
prove -v t/01-dummy.t とかする。結構依存関係あるが、インストールは何回もするわけじゃないし。
CGI::Application で、REQUEST_METHOD で dispatch したい # 今日は今さらなネタばかりなんだが、最近 REST が気になる。で、CGI::Application で、REQUEST_METHOD に応じて AutoDispatch して欲しいのだが、 CGI::Application::Dispatch にはそういう機能はないっぽい。
...
CGI::Application::Plugin::DispatchRequestMethod 作ってみた # 昨日 の続き。
CGI::Application::Plugin::AutoRunmode 、CGI::Application::Plugin::ActionDispatch を参考に書いてみた。他にもいろいろ参考にしてるので、コピペ祭りの様相
package CGI::Application::Plugin::DispatchRequestMethod; use strict; use warnings; use base qw(Exporter); use Class::Inspector; sub import { my $caller = scalar(caller); $caller->add_callback('prerun', ?&_prerun_callback_test); goto &Exporter::import; } sub _prerun_callback_test { my $self = shift; my $class = ref $self || $self; # initialize runmode my %runmodes = $self->run_modes(); my $request_method = uc($self->query->request_method); for my $method_name ( map {${$_}[2]} @{Class::Inspector->methods($class, 'expanded','public') || [[]]} ) { next if exists $runmodes{$method_name}; if ( ( $method_name =~ /^post_dispatch_(?w+)$/ and $request_method eq 'POST' ) or ( $method_name =~ /^put_dispatch_(?w+)$/ and $request_method eq 'PUT' ) or ( $method_name =~ /^delete_dispatch_(?w+)$/ and $request_method eq 'DELETE' ) or ( $method_name =~ /^get_dispatch_(?w+)$/ ) ) { $self->run_modes( $1, $method_name); } } } 1; 使い方は大体こんな感じ。
...
ディレクトリツリーを使った設定ファイル管理・その 1 # 会社で相談を受けた。その場での結論としては「まぁ、どうにでもなるよね」って事だったんだが、せっかくなので書き残しておく。
...
ディレクトリツリーを使った設定ファイル管理・その 2 # File::Slurp::Tree の slurp_tree は、File::Find::Rule を利用して取得するファイルの絞り込みも可能
my $rule = File::Find::Rule->name('license.txt'); my $tree = slurp_tree('/path/to/config', (rule => $rule)); print Dumper $tree; 実行結果
$VAR1 = { 'path' => { 'to' => { 'config' => { 'app00' => { 'license.txt' => '500' }, 'app01' => { 'license.txt' => '0' } } } } };
ディレクトリツリーを使った設定ファイル管理・その 3 # 設定ファイルとかだと場所は固定だろうから、アドホックに、しかし多少は頭を使って、というのでちょっとだけお遊び。お遊びなのでそのままでは使えません。
...
Text::HikiDoc r1_010 公開 # HikiDoc.pm r1_010 を公開。フルパッケージは「B’s Soft 」のコーナーからどうぞ。今回のバージョンアップで HikiDoc から Text::HikiDoc に変更したためご注意を。以下変更点
to_html で全てのパラメータを指定できるように変更 HikiDoc から Text::HikiDoc に変更 文字修飾記述が入れ子構造に対応していなかったバグの修正 バグフィクスの影響で、オリジナルの hikidoc.rb とビミョーな非互換が出てしまったので書き残しておく。が、とりあえずそのままで。
...