トラックバックをどうすべきか
トラックバックをどうすべきか # 今に始まったことじゃないが、FreeStyleWiki からトラックバックしようとすると NG のことが多いので、そろそろ何とかすべきかどうか考え中
トラックバックをどうすべきか # 今に始まったことじゃないが、FreeStyleWiki からトラックバックしようとすると NG のことが多いので、そろそろ何とかすべきかどうか考え中
フレームワーク # お昼過ぎ、ふと思い立ってフレームワークを作り始めたので、記録残し CGI::Simple か CGI::Minimal を使って、機能を減らして、もうちっとシンプルな俺仕様 CGI::Application が欲しい。CGI::Application 使ってると、いろんなことを覚えることができないワシはコピペが増えて困る ↓ イチから必要な機能だけ実装した方が楽かも。自分で実装したら覚えること減りそうだし ↓ CGI::Simple よさげだけど、どうせなら CGI::Minimal 使った方が極端で楽しいかも。これで CGI::Application より重くなったら、自分の実装が悪いということで ↓ CGI::Application のマネをするため、コード斜め読み ...
フレームワーク (2) # 「HikiDoc を使った WEB アプリケーション 」の時にはしりきれとんぼだったので、今回はちょっと続けてみようかと思う。今のところは 名称は CGI::Minimal::App (仮) ロジックは CGI::Application をほぼそのまま頂く 使い方が変わると、自分自身が使いづらくなるので 細かいあたりは、コーディングを楽しめるように自分流で CGI::Minimal の perldoc に「warnings と vars は重て!」とか書いてあるが、どうするかは作ってから考える CGI::Application::Plugin で、いつも使っているものは最初からいれてしまう
フレームワーク (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) - 枠組み完成 # 大枠できた。簡単なコマンドラインアプリは作れるレベル PATH_INFO or QUERY_STRING で実行するメソッド振り分ける部分できた REQUEST_METHOD で実行するメソッド振り分ける部分できた TT 使う部分は未実装だが、構想はまとまった HTTP header をあつかう部分を構想中 CGI::Minimal の全機能使いたいかなぁ。。。と思案中 mod_perl とか fcgi とかについて思案中
フレームワーク (5) - 最低限の実装完了。。。したけど # 最低限の実装は完了した。。。が、このまま作り続けていくと「CGI::Application じゃあかんの? 自分用のラッパ書いたらええやん」ということになりそうな香りがプンプンと。。。そんだけ CGI::Application がよくできてるってことだなぁ ...
フレームワーク (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 できる値は制限したいので、 ...
フレームワーク (7) - lvalue で validation もしたい - その2 - # もっとスマートな実装方法はないものか って、絶対あるはず。Class::Accessor::Lvalue とかあるんじゃね? と思ったら、やっぱりあった。速度比較とかしているこんなサイトも見つけた ...
フレームワーク (8) - サブクラスでのメソッドのオーバーライドを禁止する # C::M::App は、CGI::Application と同様、自分のクラスから継承されることを想定している ...
よく使うコマンド # みんながやっている時にやらないのがひねくれ者の真骨頂。日常よく使っている系を history から抜き出してみた クライアントマシン # 無差別 86 l 66 dream 62 cd 39 for 29 ssh-agent 28 ssh-add 28 jobs 21 oneroad 21 myrsync 18 gcp 除 alias や自前コマンド 62 cd 39 for 29 ssh-agent 28 ssh-add 28 jobs 16 clear 11 curl 10 open 8 mkdir 7 tar サーバマシン # 無差別 197 fg 173 perl 44 l 17 jobs 9 vim 8 w3m 8 rm 8 emacs 5 clear 4 mv 除 alias や自前コマンド 197 fg 173 perl 17 jobs 9 vim 8 w3m 8 rm 8 emacs 5 clear 4 mv 4 ls クライアントマシンとサーバマシンの傾向がはっきりしていておもしろかった あと、長めなのに手入力しているやつは、頭では覚えていないのに手が覚えているらしくておもしろかったので、書き残しておく ...