C::M::App

[ C::M::App ]

フレームワーク

フレームワーク # お昼過ぎ、ふと思い立ってフレームワークを作り始めたので、記録残し CGI::Simple か CGI::Minimal を使って、機能を減らして、もうちっとシンプルな俺仕様 CGI::Application が欲しい。CGI::Application 使ってると、いろんなことを覚えることができないワシはコピペが増えて困る ↓ イチから必要な機能だけ実装した方が楽かも。自分で実装したら覚えること減りそうだし ↓ CGI::Simple よさげだけど、どうせなら CGI::Minimal 使った方が極端で楽しいかも。これで CGI::Application より重くなったら、自分の実装が悪いということで ↓ CGI::Application のマネをするため、コード斜め読み ...

フレームワーク (2)

フレームワーク (2) # 「HikiDoc を使った WEB アプリケーション 」の時にはしりきれとんぼだったので、今回はちょっと続けてみようかと思う。今のところは 名称は CGI::Minimal::App (仮) ロジックは CGI::Application をほぼそのまま頂く 使い方が変わると、自分自身が使いづらくなるので 細かいあたりは、コーディングを楽しめるように自分流で CGI::Minimal の perldoc に「warnings と vars は重て!」とか書いてあるが、どうするかは作ってから考える CGI::Application::Plugin で、いつも使っているものは最初からいれてしまう

フレームワーク (3) - $obj->query() と $obj->param()

フレームワーク (3) - $obj->query() と $obj->param() # package CGI::Minimal::App; use strict; use warnings; use UNIVERSAL::require; sub query { my $self = shift; my $query = shift; # If query object is not exist, set a new query object. unless ( exists $self->{__QUERY_OBJ} ) { if ( defined $query ) { $self->{__QUERY_OBJ} = $query; } else { my $module = 'CGI::Minimal'; unless ( exists $INC{$module} ) { $module->require or die $!; } $self->{__QUERY_OBJ} = $module->new(); } } return $self->{__QUERY_OBJ}; } sub param : lvalue { my $self = shift; my @data = @_; # First use? Create new __PARAMS! $self->{__PARAMS} = {} unless exists $self->{__PARAMS}; if ( ref($data[0]) eq 'HASH' ) { # param($hash_ref) %{$self->{__PARAMS}} = (%{$self->{__PARAMS}}, %{$data[0]}); } elsif ( scalar(@data) % 2 == 0 ) { # param(@array) %{$self->{__PARAMS}} = (%{$self->{__PARAMS}}, @data); } scalar(@data) == 1 ? $self->{__PARAMS}->{$data[0]} : $self->{__PARAMS}; } C::A::P::Stash 的に param を使いたかった & lvalue 使ってみたかった ...

フレームワーク (4) - 枠組み完成

フレームワーク (4) - 枠組み完成 # 大枠できた。簡単なコマンドラインアプリは作れるレベル PATH_INFO or QUERY_STRING で実行するメソッド振り分ける部分できた REQUEST_METHOD で実行するメソッド振り分ける部分できた TT 使う部分は未実装だが、構想はまとまった HTTP header をあつかう部分を構想中 CGI::Minimal の全機能使いたいかなぁ。。。と思案中 mod_perl とか fcgi とかについて思案中

フレームワーク (5) - 最低限の実装完了。。。したけど

フレームワーク (5) - 最低限の実装完了。。。したけど # 最低限の実装は完了した。。。が、このまま作り続けていくと「CGI::Application じゃあかんの? 自分用のラッパ書いたらええやん」ということになりそうな香りがプンプンと。。。そんだけ CGI::Application がよくできてるってことだなぁ ...

フレームワーク (6) - lvalue で validation もしたい

フレームワーク (6) - lvalue で validation もしたい # header_type というメソッドを実装していた時のこと。 package CGI::Minimal::App; sub header_type :lvalue { my $self = shift; $self->{__HEADER_TYPE}; } これで $self->header_type(‘redirect’); $self->header_type = ‘redirect’; どちらの書き方でも setter として動作し、$self->header_type は getter にもなる。が、header_type に set できる値は制限したいので、 ...

フレームワーク (9) - DBIx::Simple::DeadObject

フレームワーク (9) - DBIx::Simple::DeadObject # 今日は DBIx::Simple 周り DB 関連のエラー拾うために、よく $dbh->select(…) or die $dbh->error; とかするが、わざとエラーにしてみるために $dbh->disconnect; $dbh->select(…) or die $dbh->error; してみたら、 Database object no longer usable (because of …) ...

フレームワーク (10) - 現状整理

フレームワーク (10) - 現状整理 # 少し間があいてしまったが、やっていないわけではなくて、Template-Toolkit 関連部分の実装を終えたので、現在試用しながら実装変更中 ...

Copyright © 髭。/ Hugo + hugo-book