nDiki : 2006年02月18日
2006年2月18日 (土)
■ 11:00 床屋

いつものアドバンストヘアーナカタニで。
2005年12月10日以来2カ月ぶり。
- 10:30 床屋 - 御船千鶴子の悲劇 (2009-01-11)
- 10:00 床屋 (2005-02-26)
- 床屋 (2004-07-02)
- 14:00 床屋 (2006-12-17)
- 10:00 床屋 (2005-10-15)
■ Mozex を使って Firefox 1.5.0.1 の textarea の内容を Emacs で編集する

uim、uim-skk と Firefox のキーバインディングをきちんと設定していないせいか、どうも textarea での日本語編集にストレスを感じる。 Wiki 等で textarea での編集作業も少なくないので、Mozex を使って Emacs で編集できるように設定しておくことにした。
より降旗氏が公開されている Firefox 1.5以降用 mozex 1.07.1 日本語 version (1.5.0.1 インストール対応)を Firefox にインストール。
そういえば今まで emacsclient も使ったことがなかったな。Emacs 立ち上げっぱなしのくせに。まずは起動している Emacs 上で M-x server-start (.emacs で (server-start))しておく。
Mozex の設定で
Directory for temporary files: /tmp Textareas: /usr/bin/emacsclient %t
を設定。自分の環境だと Commands は絶対パスでないとうまく呼べないようだ。
これで textarea 上で右クリックし、[mozex] -> [Edit Textarea] で開いている Emacs 上に Textarea の内容が新しいバッファで開く。 編集して保存して C-x # し、Web ブラウザ側に戻ると反映される。
便利便利。
ところで Emacs server と gnuserv とどっちがいいのかな? 特に設定なしでどちらも使える。 何も設定していない状態だと gnuserv の方は新しい frame が開いて好みじゃないので、とりあえずは Emacs server を使うことにする。
ついでに EDITOR 環境変数も emacsclient に直しておこう。 これで CVS、Subversion のコミット時に新しい Emacs を起動しなくてよくなる。
とっとと設定しておけば良かった。
- skkinput がよく落ちるので uim-skk に乗り換え (2005-09-22)
- vc-svn.el / psvn.el (2004-07-30)
- Linux で使えるデスクトップ検索ツール Beagle でローカルファイ... (2006-08-08)
- X-Deep/32 Xサーバ (2005-03-30)
- Linux 母艦ノート PC を使わずに仕事ができるかチャレンジ (2007-08-20)
■ Perl CGI プログラムのテストには WWW::Mechanize::CGI を

CGI プログラムを書いていて、いつも困るのがリグレッションテスト。
パッケージのビルド時に実行するテストスーツ (make check / make test 用テストプログラム群) に含めておきたいが、さすがにその場で Web サーバの下へセットアップするわけにもいかない。 ミニ Web サーバを同梱してテストスーツ内で起動する方法はちょっとおおがかかりだし、ポート番号の選択やらサーバの停止の問題もあって、かなり面倒。
結局、テストスーツの中で環境変数や標準入力など CGI リクエスト環境をセットアップして、CGI プログラムを実行するという王道(?)かつ泥臭いテストを書くことになったりする。
何かいいものはないかと探していたところ、WWW::Mechanize::CGI というものをみつけた。
LWP::UserAgent を継承した WWW::Mechanize モジュールは Web ブラウジングを容易にする有名どころのモジュールである。
WWW::Mechanize::CGI モジュールはさらにこれを拡張したモジュールで、HTTP リクエストを、仮想的に CGI プログラムやサブルーチンへの呼出しにしてくれる。 これを用いるとあたかも Web サーバ上の CGI プログラムにリクエストしレスポンスを受けとっているかのように、テストプログラムを書くことができる。
素晴しい。
さっそく WiKicker のテストを書き換えてみた:
use Test::More tests => 2;
use WiKicker::WikICGI::Controller;
use WWW::Mechanize::CGI;
use File::Temp qw(tempdir);
use File::Spec;
my $www_dir = tempdir(CLEANUP => 1);
my $mech = WWW::Mechanize::CGI->new;
$mech->cgi(sub {
$ENV{PATH_INFO} = '' if $ENV{PATH_INFO} eq '/';
WiKicker::WikiCGI::Controller->new->run});
$mech->env($mech->env,
SCRIPT_FILENAME => File::Spec
->catfile($www_dir . '/wiki'),
SCRIPT_NAME => '/wiki');
my $response = $mech->get('http://localhost/wiki');
ok($response->is_success);
like($response->content,
qr|<title>WikiForum\[WiKicker\]: FrontPage</title>|);
WWW::Mechanize::CGI オブジェクトを new した後、cgi メソッドで CGI サブルーチンを指定するか、cgi_application メソッドで外部 CGI プログラムを指定する。 ここでは直接、CGI サブルーチン (WiKicker::WikiCGI::Controller->new->run を実行)を指定した。
なおここで WWW::Mechanize::CGI が使っている HTTP::Request::AsCGI 0.5 における PATH_INFO の扱いが Apache などとは違って、空でも必ず '/' が入るようになっている。 これだと WiKicker では困るので、サブルーチンのところで修正している。
後は必要ならば WWW::Mechanize::CGI::env で、追加の環境変数設定を行っておく。
セットアップが済めば通常の WWW::Mechanize と同様に get 等でリクエストを行いレスポンスを受けとることができるようになる。
いい。しばらく試してみて不具合がなさそうなら、定番のテストスタイルにしたい。
ちなみに Test::Harness 用の Test::WWW::Mechanize にあわせて、Test::WWW::Mechanize::CGI というものもある。 これらを用いるとさらにテストを書くのが楽になるが、依存するモジュールも多いので無理に使わないほうがいいかもしれない。
- 一般ユーザで Apache 2.0 を起動する最小限の httpd.conf (2006-07-15)
- Test::WWW::Mechanize で Web アプリケーションをテ... (2006-09-13)
- [ WiKicker ] SpeedyCGI (2003-10-17)
- XAMPP で WiKicker を動かしてみた。PPM インストール OK。 (2007-02-09)
- 他の Web サイトの情報を URI::Fetch でキャッシュ付き取得 (2005-10-29)
■ 母と妹からのバレンタインデーのチョコレートを貰いにいく

母と妹は律儀にも毎年バレンタインデーのチョコレートを用意してくれる。 ただし決して渡しにはこないので、味が悪くなる前に受け取りに出向く必要があるのだ。
ということで、今日実家に受け取りにいく。
母の失せ物騒動でちょっとごたごたしたものの、無事いただいて帰ってくる。
- 年始に家族とダラダラする気持ちの変化 (2009-01-02)
- 毎年恒例の鴨川日帰り墓参り (2004-05-02)
- 息子にスーツを作ってやりたい親心 (2005-06-11)
- 妊娠と死 (2004-04-18)
- 今日のさえずり - リサ(とガスパールのリサ)って直立不動するのか (2009-12-12)
■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.016527s / load averages: 0.06, 0.16, 0.15
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)





◇ Twitter やってます。この記事が気にいったらぜひ twitter.com/Naney の follower になってください。