nDiki : WWW::Mechanize
WWW::Mechanize
Perl モジュール。 LWP::UserAgent のサブクラス。
ページをキャッシュする機能を持つ WWW::Mechanize のサブクラスとして WWW::Mechanize::Cached がある。
スポンサード リンク
Related term
2005年9月30日 (金)
■ mixi のプロフィールをランダム更新

mixi であるが、何だかんだといって登録以来定期的に巡回している。
あたり。
mixi で残念なのは、マイミクシィとコミュニティの紹介文を、(他人からみた)自分のトップページに表示できないこと。 マイミクシィの紹介文は相手のところに書くことができるけれど自分のところでは紹介できない。 コミュニティも「なぜ参加(登録)してみた」のか一言書いてみたい。
今の mixi だとトップページで比較的自由になるのは、写真と自己紹介の欄ぐらい。 写真は既に一言コメントを画像に埋め込んでいるから、あとはいじるとしたら自己紹介。
ということで、この部分を定期的にランダムに更新できるように、スクリプトを書いてみることにした。
最初は WWW::Mixi で行こうと思ったが、フォームの一部分だけ変更してPOSTするには LWP::RobotUA のサブクラスである WWW::Mixi より WWW::Mechanize の方が楽そうなので、そちらでスクリプトを書くことにした。 ログイン後の refresh あたりの処理以外は面倒なこともなく、さらりと。
あるディレクトリの下にあるテキストファイルからランダムに1つ選び、その内容で*1自己紹介を更新するスクリプトを書き cron で定期的に更新するようにしてみた。
今のところテスト的なテキストしかないのでランダムといってもほとんど変わらないけれど、そのうちマイミクシィの紹介とかネタとかを増やしていく予定。
*1実際にはフッタとヘッタをつけて
- mixipress でコミュニティ掲示板もチェック (2005-10-01)
- mixi 用画像アップローダ (2004-11-21)
- 今日のさえずり - 「はてなMobileGateway」かましてから、OK... (2008-01-03)
- Firefox mixiツールバー 0.0.4 (2005-02-04)
- mixi の写真にメッセージを (2004-11-28)
2005年10月29日 (土)
■ 他の Web サイトの情報を URI::Fetch でキャッシュ付き取得

WiKicker や DiKicker でうまく他のサイトの情報を取り込んで利用できるようにしたい。 相手サイト・自サイトともに負荷をかけないように処理するには、うまくキャッシングする必要がある。
キャッシュ機能のあるPerl用HTTPユーザエージェントには
- WWW::Mechanize::Cached
- LWP::UserAgent::WithCache
- URI::Fetch
などがある。
@ WWW::Mechanize::Cached 1.32
WWW::Mechanize::Cached は1度取得したレスポンスを無条件に1日間キャッシュする。 WWW::Mechanize のサブクラスで、便利な機能が利用できるが、キャッシュは適当。
キャッシュは Cache::FileCache決め打ち。
@ LWP::UserAgent::WithCache 0.03
LWP::UserAgentのサブクラス。 Expires、Last-Modified、Etag ヘッダを考慮して処理する。
キャッシュは Cache::FileCache決め打ち。
@ URI::Fetch 0.04
fetch サブルーチンのみを提供するシンプルなモジュール。
キャッシュは Cache 系APIのモジュールを指定する。実際には Cache::Cache 系でもOK。 Last-Modified、Etag を考慮して処理する。
前回のアクセスから一定時間はキャッシュを返すようにする機能があり、RSS や Atom フィードを取得して利用するのに便利。
@ 今回は
URI::Fetch をチョイス。 our を使っているのでそのままでは Perl 5.005_03 では動かないが、use vars に書き換えれば問題なく動く。
- Perl CGI プログラムのテストには WWW::Mechanize::... (2006-02-18)
- はてなブックマーク上の検索結果を nDiki に (2005-10-30)
- Cache::Memcached 1.13 の Perl 5.005_03 対応 (2004-06-05)
- [ Perl ] Memcached を使ってみる (2004-01-12)
- Twitter ステータスを nDiki サイドバーに表示 (2007-11-09)
2006年2月18日 (土)
■ 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 というものもある。 これらを用いるとさらにテストを書くのが楽になるが、依存するモジュールも多いので無理に使わないほうがいいかもしれない。
- 他の Web サイトの情報を URI::Fetch でキャッシュ付き取得 (2005-10-29)
- Test::WWW::Mechanize で Web アプリケーションをテ... (2006-09-13)
- 一般ユーザで Apache 2.0 を起動する最小限の httpd.conf (2006-07-15)
- CGI プログラム、Out of memory! に泣く (2001-01-04)
- [ WiKicker ] 「最近のアクセスログ」処理思案 (2004-01-17)
2006年7月15日 (土)
■ 一般ユーザで Apache 2.0 を起動する最小限の httpd.conf

- CGI.pm のデバッグ機能を用いたテスト
- WWW::Mechanize::CGI を用いた直接呼出しによるテスト
- WWW::Mechanize のテストのように自前で Perl で書かれたテスト用ミニサーバを立てる
- Apache から実行できるように配置して、Test::WWW::Mechanize でテスト
- Apache から実行できるように配置して、HTTP::WebTest でテスト
などがある。 Apache を使うのがより実際の環境に近いテストができるのだが、通常動いている Apache を使って make test でテストできるようにするとすると「どこに配置するか」などの問題がでてくる。
となればいっその事、自分(一般ユーザ)で専用に Apache を起動した方が良さそうだ。 httpd.conf を用意するのが面倒だが、highperformance.conf 等をみる限り実はそれほど必須の設定は多くないようである。
@ httpd.conf を書く
ということで Debian GNU/Linux sid の Apache (2.0.55-4) で必要な設定は何か試してみた。少なくとも以下の設定は書いておく必要があるようだ。
# httpd.conf for Debian GNU/Linux Apache 2.0.55-4 Listen 9100 ServerRoot . DocumentRoot /home/naney/htdocs ErrorLog error_log TypesConfig /etc/mime.types PidFile apache2.pid
これを httpd.conf として保存して、
/usr/sbin/apache2ctl -f httpd.conf
で起動すればアクセスできるようになる。
/usr/sbin/apache2ctl -f httpd.conf -k stop
で停止。
ServerRoot は起動時の -d オプションでも指定できるのだが、httpd.conf に書いておかないとうまく起動してくれなかった (-X を一緒に指定してデバッグモードにする場合は ServerRoot 無しに -d 指定だけでも動く)。
@ CGI プログラムを動くようにする。
CGI プログラムを動くようにするとすると例えば次のような感じ。
# httpd.conf for Debian GNU/Linux Apache 2.0.55-4 Listen 9100 ServerRoot . DocumentRoot /home/naney/htdocs ErrorLog error_log TypesConfig /etc/mime.types PidFile apache2.pid LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so Options +ExecCGI AddHandler cgi-script .cgi
@ make test で動くようにするには……
ディストリビューション独自のパッケージングなどに対応するように、多少泥臭く環境検出する必要があるが、なんとか make test から呼べそうだな。
最近は WWW::Mechanize::CGI がお気に入りなのだが、2つ以上の CGI プログラムにまたがるようなアプリケーションのテストには向かなさそうなので、今度この方法でも試してみたい。
- Perl CGI プログラムのテストには WWW::Mechanize::... (2006-02-18)
- [ WiKicker ] SpeedyCGI (2003-10-17)
- SpiderMonkey の素のインタプリタでは CGI プログラムには役立たず (2006-12-11)
- Debian に RSS リーダ「フレッシュリーダー」をインストール (2006-03-06)
- [ 日記 ] SpeedyCGI による、同時処理数制御 (2004-01-20)
2006年9月13日 (水)
■ Test::WWW::Mechanize で Web アプリケーションをテストファースト開発

テストファースト開発に慣れてしまうと、テストコード無しにプログラムを書くというのは不安でたまらなく感じてくる。
テストが欲しい。安らぎが欲しい。
今開発している WiKicker ベースの Web アプリケーションもだんだん機能が増えてきて、コードを触るのがコワくなってきた。
今回は Basic 認証等もあるので、WWW::Mechanize::CGI ではなくてきちんと deploy してから Test::WWW::Mechanize でテストすることにした。
Test::WWW::Mechanize、使ってみると WWW::Mechanize + Test::More よりテストを書くのも読むのも楽になった。
deploy が必要なリグレッションテストはさすがに t/ の下に入れておくのはどうかと思う。 プロジェクト的にはビルドサーバを用意して、そこで自動的にテストできるような環境を用意するのが良さそうだ。
- Perl CGI プログラムのテストには WWW::Mechanize::... (2006-02-18)
- 一般ユーザで Apache 2.0 を起動する最小限の httpd.conf (2006-07-15)
- 来年の目標 (2003-12-21)
- Linux 上で Flex 2 SDK を使った Flash コンテンツ開... (2007-09-11)
- SQLite とか DbUnit とか (2005-05-23)
2006年12月12日 (火)
■ PAR::Repository でビルド済み Perl モジュールをネットワーク配信

@ 実行可能ファイル作成としての PAR
PAR といえば Perl スクリプトを実行可能ファイル(Windows なら EXE 形式ファイル)に変換するモジュールとして有名である。
ちなみに実行可能ファイルを作成する部分はは PAR 0.97 より PAR-Packer パッケージに分けられ、PAR 自体はインストールしやすい pure Perl なパッケージになっている。
@ PAR モジュールアーカイブからのローダとしての PAR
PAR が提供するもう一つの(こちらが本来はメイン?)機能は、プログラムの実行時に必要な Perl モジュールを PAR ファイルと呼ばれる Perl モジュールアーカイブファイルからロードする機能である。 XS モジュールなどもコンパイルすることができるどこかの環境で1度ビルドして PAR ファイルにしておけば、同じアーキテクチャのホスト上でそのまま利用することができる。
@ PAR リポジトリ
ロードしたい PAR ファイルはファイルパスだけではなく URL でも指定することができ、必要な時にオンデマンドでフェッチさせることができる。 これを使えば Perl プログラムの集中管理可能だ。
PAR 0.951 からは PAR リポジトリというコンセプトが追加され、パッケージ毎に作った PAR ファイルをサーバ上(あるいはローカル)のリポジトリに蓄積してオンデマンドでロードできるようになった。
個別に PAR ファイルを指定する従来の方式に比べてかなり便利そうである。 ということで試用してみた。
まずは
- PAR
- PAR::Repository
- PAR::Repository::Client
- PAR::Repository::Query
- PAR::Dist
- PAR::Packker
あたりをインストールし準備 OK。
@ 1. PAR リポジトリを作成する
最初に PAR-Repository に含まれている parrepo で。
parrepo create -r /tmp/PAR
PAR リポジトリファイルの中にはデータベースファイルが作成されるが、これは DBM::Deep というアーキテクチャ非依存のものを使っているので、Linux でも Windows でもどちらからでもアクセス可能である (つまり Linux 上でリポジトリをメンテできるということだ)。
@ 2. Perl パッケージを PAR ファイル化する
次に必要な PAR ファイルを作成する。 作成したいパッケージを展開してビルドし、blib ができている状態で PAR::Dist を使ってパッケージ化する。
perl Makefile.PL make make test perl -MPAR::Dist -e blib_to_par
例えば ActivePerl*1 上で WWW-Mechanize-1.20 を PAR ファイル化すると
WWW-Mechanize-1.20-MSWin32-x86-multi-thread-5.8.8.par
というファイルが作成される。
普段から ActivePerl で必要なライブラリは基本的に自前で PPM パッケージ化して、動作確認した上で PPM リポジトリに蓄積するようにしているので、合わせて次の手順でパッケージを作ることになる。
perl Makefile.PL nmake nmake test perl -MPAR::Dist -e blib_to_par make_ppm
@ 3. PAR リポジトリに PAR ファイルを登録する
PAR ファイルができたら parrepo でリポジトリに登録する。
parrepo inject -r /tmp/PAR -f xxx.par
@ 4. PAR リポジトリ上のライブラリを使用してみる
例えば先ほどの WWW::Mechanize がリポジトリに登録されている状態で
#!/usr/bin/perl
use PAR { repository => 'file:///tmp/PAR/' };
use WWW::Mechanize;
my $mech = WWW::Mechanize->new;
$mech->get('http://www.example.com');
print $mech->content;
というスクリプトを書いて実行すると、PAR リポジトリから WWW::Mechanize がロードされて正しく実行される。
ここでリポジトリを Web サーバへアップロードして、repository のところに URL を指定するようにすることもできる。 例えばリポジトリを http://www.example.com/PAR/ に配置したとすると
#!/usr/bin/perl
use PAR { repository => 'http://www.example.com/PAR/' };
use WWW::Mechanize;
my $mech = WWW::Mechanize->new;
$mech->get('http://www.example.com');
print $mech->content;
と書き換えることで、インストールしていない WWW::Mechanize を使用できるようになる。
@ Perl プログラムを実行形式化する
先ほどの Perl スクリプトを get_top_page.pl という名前で保存して pp で実行可能ファイル化する。
pp -o get_top_page.exe -M PAR::Repository::Client get_top_page.pl
とすれば get_top_page.exe という実行可能ファイルが作成される。 WWW::Mechanize はオンデマンドで http://www.example.com/PAR/ からフェッチされるので、アップデートが必要な場合は新しい PAR ファイルを作成してリポジトリを更新するだけでよい。 EXE ファイルを作成しなおして利用者に配付しなすといった作業も不要だ。
@ スクリプトもリポジトリにおく
さらには実行するスクリプトをも PAR リポジトリに置いておくことが可能だ。
例えば WWW-Mechanize に含まれている mech-dump をオンデマンドにフェッチして実行する実行形式ファイルは以下のコマンドで作成できる。
pp -o mech-dump.exe -M PAR::Repository::Client \
-e "use PAR { repository => 'http://www.example.com/PAR/', \
run => 'mech-dump' }"
@ まとめ
ActivePerl では PPM があるとはいえ、普通のユーザにちょっとしたプログラムを使ってもらうのに「ActivePerl をインストールして、PPM パッケージをインストールして、……」というのは手間すぎる。
pp で プログラムに必要なものを全てバンドルした実行形式化ファイルにするという方法ももちろんあるのだが、頻繁にアップデートするようなスクリプトの場合には、起動のための部分だけ pp で作成しておいてあとは PAR リポジトリで集中管理するというのもちょっと魅力的である。
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- 自前 PPM リポジトリの管理 (2006-07-03)
- ActivePerl で Ming (2005-02-23)
- ActivePerl 5.8.8.820 の PPM では ppd/tar... (2007-02-05)
- bundle を作成して Perl モジュールをまとめてインストール。 (2004-10-21)
2008年3月13日 (木)
■ Twitter のアイコンを Perl スクリプトで更新する

API 経由では Twitter のアイコンを変更できなさそうなので、WWW::Mechanize でアイコン画像をアップロードする Perl スクリプトを書いてみた。
#!/usr/bin/perl
use strict;
use warnings;
use WWW::Mechanize;
die "no file name" if @ARGV == 0;
my $file_name = $ARGV[0];
my $name = 'ユーザ名';
my $password = 'パスワード';
my $mechanize = WWW::Mechanize->new();
$mechanize->get('http://twitter.com/');
die unless $mechanize->success;
$mechanize->submit_form(form_number => 1,
fields => {
username_or_email => $name,
password => $password});
die unless $mechanize->success;
$mechanize->follow_link(text => 'Settings');
die unless $mechanize->success;
$mechanize->follow_link(text => 'Picture');
die unless $mechanize->success;
$mechanize->submit_form(
form_number => 1,
fields => {'profile_image[uploaded_data]' => $file_name}
);
die unless $mechanize->success;
- Twitter を使い始めて1年 (2008-04-06)
- Flickr の写真を自動的に Twitter アイコンにする (2008-03-13)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- Twitter への書き込みを自動的に Skype ムードメッセージに設定する (2008-02-25)
- 他の Web サイトの情報を URI::Fetch でキャッシュ付き取得 (2005-10-29)
2008年3月14日 (金)
■ 今日のさえずり - ホワイトデーはシガールにした

@ 2008年03月13日
- 13:01 WWW::Mechanize で Twitter のアイコンを変更するスクリプト書いた。
- 19:00 みんなの写ツ見てた。自分が follow している人だけのバージョンも見てみたい。[mb]
- 19:16 ホワイトデーはシガールにした。[mb]
- 22:40 [photo] SALE http://tinyurl.com/2q6mla
@ 2008年03月14日
- 15:22 さいきんブルーベリーをきらしていたせいか、目がしょぼしょぼする(あるいは寝不足)。
- 16:22 ASHFORD のミニ6穴保存バインダ(20mm)を買ってきたが、ASHFORD のリフィルがスムーズにはいらない。アホか。
- 17:04 Google カレンダーの保存が終わらないと思ったら、Google 系サービス軒並駄目なのか。
- 17:07 Google 復活。
- ほぼ日手帳をやめてミニ6穴見開き1週間ダイアリーに (2008-01-21)
- 今日のさえずり - やはりデジにはない歓びが味わえるな (2008-04-08)
- 今日のさえずり - 今日から、寄りかからないで生きていく (2008-01-21)
- 今日のさえずり - みどりの窓口で、明日からの乗車券つかまされてた (2008-04-10)
- フレッシュリーダーから Google リーダーに乗り換え (2007-10-29)
2008年4月29日 (火)
■ 今日のさえずり - 一緒に洗濯機で雑巾を洗ってしまっていた

@ 2008年04月28日
- 11:19 今から行くところ / ジャスコ。 http://logpi.jp/naney
- 12:27 ジャスコ到着。[mb]
- 13:02 ジャスコ満喫中。[mb]
- 13:05 未来屋書店で探していた「2分以内で仕事は決断しなさい」を見つけたので購入。平積みになってた。[mb]
- 14:53 フードコートでジャンク食ってアイスクリーム食って、まだジャスコで遊んでいるところ。[mb]
- 16:12 ようやくジャスコ出た。[mb]
@ 2008年04月29日
- 09:28 今やったこと / Twitter のページ構造変更にあわせて、WWW::Mechanize スクリプトを修正した。 http://logpi.jp/naney
- 13:36 今気づいた事 / 引退した5本指ソックスはワイヤーシェルフの掃除に好適。 http://logpi.jp/naney
- 13:39 今気づいた事 / 他の洗濯物と一緒に洗濯機で雑巾を洗ってしまっていたようだ。 http://logpi.jp/naney
- 18:36 今やったこと / Linux がスワップ使いきってどうにもならなくなったのでリブートしたところ。 http://logpi.jp/naney
- 19:46 気になるモノ / ユニクロのガンダムTシャツ。ズゴック・ゾック・パーフェクトジオング、カッコイイ! http://logpi.jp/naney
- 22:34 ドコモ料金案内iアプリ入れてなかったのでダウンロードした。[mb]
- 今日のさえずり - 4C-0.4 芯って予想以上に細い (2008-02-21)
- ActivePerl で Ming (2005-02-23)
- Twitter への書き込みを自動的に Skype ムードメッセージに設定する (2008-02-25)
- Twitter を使い始めて1年 (2008-04-06)
- Twitter への書き込みを自動的に Skype ムードメッセージに設定... (2008-08-05)
2008年7月27日 (日)
■ 今日のさえずり - 新聞の集金かなと思ったら黄金のキョロ缶

@ 2008年07月24日
- 09:37 今日はスーツ日なので半袖ワイシャツ着てみた。長袖と比べると着てない感じだ。[mb]
- 12:23 来年のアクションプランナー昨日発売開始か。早いなー。
- 14:27 イマココ! L:千葉駅[mb]
- 14:45 浴衣姿を見ると「今日はどっかで花火大会?」と思ってしまう短絡さ。[mb]
- 16:53 イマココ! L:蘇我駅[mb]
- 17:46 モバイル Gmail で archive が効かない。[mb]
- 18:40 今日も例の方法でウナギを温めますよ。 http://tinyurl.com/6chg4p
- 24:53 twitter.com トップページがちょっと変わって WWW::Mechanize がエラー返してたので今日修正しといた。username_or_email と password がそれぞれ session[~] になったようだ。
@ 2008年07月25日
- 09:42 iモードだとモバイル Gmail が四角数字を使うようになった。あいかわらず archive は効かない。[mb]
- 13:22 nDiki に貼った Google トークのゲストチャットに初めて人が来た。Hello. って打ったら Guest has left. *Tw*
- 23:18 夜玄関のチャイムが鳴ったので新聞の集金かなと思ったら黄金のキョロ缶だった。と思ったらしばらくして新聞の集金もきた。
- 23:21 Google Sites に Issue List (課題リスト) テンプレートがあった。
@ 2008年07月26日
@ 2008年07月27日
- メールボックスを Gmail に集約 (2007-08-08)
- ケータイ用にプライベート Wiki を設置 (2008-01-07)
- 今日のさえずり - 「MSシュレッダー~」って口ずさんだけれど誰も知らなかった (2008-08-29)
- 今日のさえずり - 金メダルのネックストラップには、ケータイ用のヒモが付い... (2008-08-24)
- 今日のさえずり - 鳩三郎が会社にきた (2008-09-25)
Related web page
* mixi2gmail.rb少し前から mixi のちょこちょこした変更もあって以前書いたmixi2gmail.rb の挙動が怪しくなっていたので、<strong>WWW::Mechanize</strong> 0.7.5 への対応も兼ねてコードを書き直した。最近のバージョンでは取得結果を Hpricot::Doc で返すようになり、XPath での検索も出来るようなので、以前の正規表現で切り出す形から XPath で抜き出す形に変更。画像の扱いもHTMLの中にインラインで表示さhttp://yoosee.net/d/archives/2008/04/04/002.html
」の「UNIX 処方箋」にて「<strong>WWW::Mechanize</strong> モジュールによる Web アクセスの自動化」というコラムがあったので読んでみたら、<strong>WWW::Mechanize</strong> なコードを生成してくれる HTTP::Recorder なるモジュールが紹介されていて、これは便利げ! と思い、ちと使ってみた。 てか、Perl.com に "Web Testing with HTTP::Recorder" つって詳細な解説がありますね。 HTTP::Recorder は、HTTP::Proxy によるプロクシサーバの user ahttp://antipop.gs/mt/2004/12/18/042322
Scanning cache /home/kuli/.cpan/build for sizesWWW-Mechanize-1.12/WWW-Mechanize-1.12/ChangesWWW-Mechanize-1.12/MANIFESTWWW-Mechanize-1.12/META.ymlWWW-Mechanize-1.12/lib/WWW-Mechanize-1.12/lib/WWW/WWW-Mechanize-1.12/lib/WWW/Mechanize/WWW-Mechanize-1.12/lib/WWW/Mechanize/Image.pmWWW-Mechanize-1.12/lib/WWW/Mechanize/FAQ.podWWW-Mechanize-1.12/lib/WWW/Mechanize/Examples.podWWW-Mechanize-1.12/lib/WWW/Mechanize/Cookbook.podWWW-Mechanize-1.12/lib/WWW/Mechanize/Link.pmWWW-Mechanize-1.12/lib/WWW/Mechanize.pmWWW-Mechhttp://shinshu.fm/MHz/23.23/archives/0000042302.html
■よく検索されるキーワード
torrent(173) expressions(80) 竹内まりや(58) x31(25) ドラマ(23) linux(23) 手帳(21) 壁紙(21) perl(21) windows(20) 動画(19) wiki(17) porter(17) debian(16) 使い方(16) 画像(15) thinkpad(15) 作り方(15) gmail(14) usb(14) 秋葉原(13) ヨドバシ(13) ほぼ日手帳(13) 提案書(12) 活用(12) 竹内(12) 古川小百合(12) 修理(12) ノート(11) 無印(11) ヨドバシカメラ(11) nikon(11) 書き方(10) ダイソー(10) 万年筆(10) 生年月日(10) 大井町(10) ミニ6穴(9) ほぼ日(9) tc-1(9) 冷蔵庫(9) 設定(9) ニコン(9) java(9) mp3(8) 故障(8) 方眼(8) xp(8) 日誌(8) 感想(8) カメラ(8) allinanchor:*.torrent(8) バッグ(8) firefox(7) インストール(7) キーボード(7) mixi(7) 無料(7) リフィル(7) 小林麻耶(7) nikkor(7) ジョイントラック(7) madwifi(7) 原田夏希(7) skype(6) 変更(6) 三条まゆみ(6) ペンケース(6) web(6) emacs(6) home(6) ポーター(6) 2009(6) itunes(6) a6(6) 無印良品(6) デジカメ(6) finepix(6) 無線lan(6) 評判(6)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 方法 設定 サンプル ダウンロード セール 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 最新 MP3 動画 Torrent 解説 意味 用語集 参考文献 お薦め お勧め おすすめ 便利 Blog ブログ mixi 待受画面 修理Process Time: 1.279653s / load averages: 2.09, 1.19, 1.09
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)





スポンサード リンク