こんなControllerを書いた

Controller. - Lazy Programmer :-pこのまえCatalystをいじってたときはこんなのを書きました。/entry (エントリ一覧表示) /entry/create (フォーム表示) /entry/create/cofirm (確認画面) /entry/create/save (エントリ保存) package Form::Web::Controller…

Catalystでロジックをどこに置くかという話

Catalystをちゃんと勉強しはじめてからずっと頭の片隅にあるけどまだ解決せず。 俺以外にも悩む人はぜったいいるはずだと思っていたけどMLを検索する方法がよくわかんなかったのでいまいち網羅できず。ひとまず、 Catalyst MVCの覚え書き - libnitsuji.so こ…

DBICの検索条件にMySQLの関数使う

あーわからん!とおもってググったら search_literal - Hatena::Diary::Neko::kak 500 Internal Server Error を見つけた。確かにsearch_literalを使うとうまく行く。 でも今回はINTERVAL 7 DAYとか固定の値を使うからSQLインジェクション関係ないからふつー…

DBIx::Class::Manual::Intro

テキトーに訳す。 DBIx::Class::Manual::Intro - Introduction to DBIx::Class - metacpan.org INTRODUCTION SQLを書くのに飽きてPerlネイティブのDB I/Fが欲しい人。 Class::DBIより優れた方法を探してる人。 そういう人向け。 THE DBIx::Class WAY DBIx::C…

FormValidator::Simple::Plugin::Number::Phone::JPのテストが通らない件

Number::Phone::JPのバージョンが0.10だとFormValidator::Simple::Plugin::Number::Phone::JPのテストが失敗するようです。 失敗するのは26個のテストのうち最初の13個。これはinvalidじゃないことをテストして失敗してるので、要は26個の電話番号が全部inva…

Catalyst MVCの覚え書き

NecessaryBackgroundKnowledge - Catalyst::Wiki ここのMVCパターンの所を起点にして The Catalyst August 2005 Archive by thread のスレッド(ちょっと古いけど)と Andy Wardley: MVC: No Silver Bullet を読んだ。 - 重要なのは関心の分離(Separation of …

Catalyst::Manual::Cookbook::Test

さらに分割。 テストについては外部からリクエストを送って、みたいな方法しかない?ようなので、内部のモジュール、特にモデル部分のテストをどうやってやるかが問題。 そこは普通のPerlモジュールと同じ方法でできるのかね。http://search.cpan.org/~jrock…

Catalyst::Manual::Cookbook::Deployment

Cookbook長いので分割。 デプロイについてのレシピ。Webサーバーエンジンとアプリケーションの効率化も含む。 http://search.cpan.org/~jrockway/Catalyst-Manual-5.700701/lib/Catalyst/Manual/Cookbook.pod#Deployment mod_perl Deployment mod_perlは多く…

Catalyst::Manual::Cookbook

Catalyst::Manual::Cookbook - Cooking with Catalyst - metacpan.org Basics Catalystを使う人が知っておいた方がいいこと。 Delivering a Custom Error Page アプリケーションでエラーが発生したときはCatalystは独自のエラーページを表示する。-Debugモー…

Catalyst::Manual::ActionsとCatalyst::Action系のモジュールの個人的な要約

Catalyst::Manual::Actions - Catalyst Reusable Actions - metacpan.org DESCRIPTION 再利用可能なアクションについて。どう動くか。既存のアクションとあなたが書くアクションについて。アクションはメソッドの属性でメソッドコールの前後に機能する。共通…

Catalyst::Manual::Aboutの個人的な要約

読みながらメモっただけなので超適当な日本語だと思います。読み返してもいないし。Catalyst::Manual::About - The philosophy of Catalyst - metacpan.orgCatalystはWebアプリケーションフレームワーク。Webアプリケーションのタスクにはこんなものがある。…

vimでChangeLog

忘れないだろうと思ってメモらないと激しく忘れそうなのでメモっておく。 $ vi changelog \o「バックスラッシュ+アルファベットのオー」で新しいエントリ?ができる。 ファイル名はchangelogとかChangeLogとかそんな感じで。

WebService::Livedoor::Auth

使ってみたんだけど。以下のエラーメッセージが出てました。 [Sun May 20 02:22:23 2007] [error] [client 192.168.0.3] [Sun May 20 02:22:23 2007] livedoor.cgi: Use of uninitialized value in string eq at /usr/lib/perl5/site_perl/5.8.8/WebService/…

WebService::Gnavi使ってみた

http://d.hatena.ne.jp/lestrrat/20070510#1178769165 ページャーがなんか変。 #!/usr/bin/perl use strict; use warnings; use WebService::Gnavi; use YAML; my $gnavi = WebService::Gnavi->new( access_key => '...' ); my $res = $gnavi->search({ cate…

Rubyist Magazine 出張版 正しいRubyコードの書き方講座 1

Rubyは使ったことがないけど、 青木さんの本 添削なので言語が違っても学ぶことがあるはず ということで買った。 せっかくなんでPerlで同じコードを書いた。 http://takatoshi.dyndns.org/repos/tktsh/rubima/trunk/pukipa/ 正規表現の使い方とか、いろいろ…

Munin on Fedora Core 6

とりあえず動かすだけ。 $ su - $ yum install munin munin-node $ /etc/init.d/munin-node startmuninのcronは/etc/cron.d/muninで5分毎に動くようになってる。 $ tail -f /var/log/munin/munin-updateしてそれっぽいログが流れてればおk。 デフォルトの設…

vimのplugin

vimのsnippetsEmuがすばらしい - otsune's SnakeOil - subtech を見て入れてみようと思ったんだけどプラグインなんて使ったことなくて30分くらい苦戦したのでメモ。 Linuxでvim7使ってます。 $ mkdir -p ~/.vim/after/ftplugin $ cd ~/temp $ wget http://ww…

魔方陣

「憂鬱なプログラマのためのオブジェクト指向開発講座」に魔法陣(正しくは魔方陣らしい)プログラムが載っているので、Perlでも書いてみた(C++のプログラムを書き写しただけ)。C++だと3×3の魔法陣を解くのにそれほど時間はかからなくてサクサクと答えが出…

Catalystで使ってるモジュールのバージョン管理って

Catalystを使うために perl -MCPAN -e 'install Task::Catalyst'とかすると、大量のモジュールがインストールされるけど、実際にサービスとして運用環境にあるサーバーの場合、これらのモジュールのバージョン管理ってどうやるんだろうか、と思った。という…

Mixi::Shell

http://d.hatena.ne.jp/lestrrat/20070412#1176352515 Twitter-Shell-0.02 - Twitter From Your Shell! - metacpan.org を見てTerm::Shellというモジュールを知ったので、全面的にまねをしてMixi::Shellというのを作った。 でもまねしすぎてちょっと反省。 m…

chrootするとsyslog関連が・・

ふつうのLinuxプログラミングもやっと最後まで終わりました。 で、HTTPサーバを作るところの終わりでchrootするコードを追加するんだけど、chrootするとsyslogに書き込まれなくなるようです。 Cのソースを模倣しているPerlプログラムのほうではdieしてしまう…

HTTPサーバを作る

ふつうのLinuxプログラミングもやっと16章。HTTPサーバを作るってところまで来ました。 17章になるともうちょっと複雑になるようなので、そのまえにPerlでも同じコードを書いてみた。 なにごともやってみることが大事、ということで。 ふつうのLinuxプログラ…

MyISAMの読み取りロックについて

MyISAMのテーブルに対してSELECTするとテーブルに対して読み取りロックがかかるけど同時INSERTが可能な場合もある。具体的には可変長カラムのUPDATE、レコードの削除が発生していないテーブルに対しては同時INSERTが可能。これはSHOW TABLE STATUSした時のDa…

continuation(SmallTalkの場合?)

Smalltalkはまったくわからないけど。 継続(continuation)では、センダ(呼び出し元)が後でやらなければならない処理を、ブロッククロージャ(継続)にして、レシーバ(呼び出された側)に渡していき、メッセージを受信したレシーバは、自分のやらなければならな…

strace

久しぶりに「ふつうのLinuxプログラミング」をやってる。だいぶさぼっていたおかげでまだ6章。 straceというコマンドを知った。プログラム中で使用されるシステムコールを表示してくれるツール。 使い方はコマンドの前にstraceと書くだけ。たとえばlsだった…

Lingua::JA::Summarize

Lingua::JA::Summarizeのテストがこける。 t/02-keyword....NOK 13 # Failed test 'file_keyword_summary' # at t/02-keyword.t line 60. # got: '京' # expected: '京都' t/02-keyword....NOK 14 # Failed test 'charset' # at t/02-keyword.t line 63. # g…

部分的GET

HTTP/1.1にはリソースの一部だけを要求する部分的GETというのがあります。 部分的GETではリクエストに次のようなRangeヘッダというのが使われます。 Range:bytes=0-499これを受け取ったWebサーバーはレスポンスに次のようなContent-Rangeヘッダを付加してリ…

DjangoをFastCGIで動かす

まずはflupを入れる。少し苦労した気がするのだがもうだいぶ時間が経ってしまったので忘れた。 FastCGIサーバーを動かすのは簡単。 FastCGIをExternalServerで動かすのは初めてだったのでなんか新鮮。 それよりmod_rewriteで苦戦。mod_rewriteにはいつもいつ…

Djangoのフォーム処理と汎用ビュー(チュートリアル その4)

フォーム処理はごく普通。tryがあるとラクでいいですね。 汎用ビューは便利なのかどうかまだよくわかんない。なれないせいか設定(urlpatterns)の複雑さの方が目についてしまう。 これだとぱっと見でよくわからん。汎用的にすると省けるところもあるけどその…

Djangoのビュー(チュートリアル その3)

URLとそれに対応するビューの定義から始めるというのはとてもわかりやすくていい。ここでビューって呼ばれているものはテンプレートとかのことじゃなくて、いわゆるコントローラというもののことだと思う。ビューが単なるコールバック関数だというのもシンプ…