miau's blog?

«Prev | 1 | 2 | 3 | 4 | 5 | Next»

2005年 2月 23日 (水曜日)

Win32::CaptureIE

- Perl on miau's blog?
Win32::CaptureIE
また MFPM で見つけたモジュール。

Win32::IE::Mechanize と違ってインターフェイスは特殊だけど、
・そのぶん柔軟な設定が可能(?)
・スクリーンショットが取れる
といった感じの特徴が。


依存関係は↓な感じ。

Win32::CaptureIE
 + Win32::Screenshot
 + Image::Magick

(ActivePerl に Image::Magick 入れる方法は
 きりしま屋: WindowsにImage::Magickをインストールする
 を参照ということで。)


使ってみた感じでは・・・OO っぽくないインターフェイスがやっぱり気に食わないですけど、一応ちゃんと機能しています。
Win32::IE::Mechanize よりも動作軽い気も。

とりあえず Web サイトの画面遷移図とか作るのに使えな気が。
00:24:12 - miau - No comments - No Trackbacks - Permalink

Win32::IE::Mechanize

- Perl on miau's blog?
Win32::IE::Mechanize なんてモジュールを MFPM で発見。
OLE で IE を動かすんだけど、WWW::Mechanize っぽいインターフェイスを備えてるという特長が。

WWW::Mechanize と違って JavaScript や特殊な redirection にも対応できるということで、Web アプリのテスト自動化(独自の Testing Framework 構築とか)に使ったりできないかなー、とか企んだりもしたんですが・・・
実際やってみるとなんか動作重くて使い物にならなそうなことがわかりました

非効率な実装になってるのかなー?と思って軽くソースを覗いたりもしたけど、一応キャッシングなんかもしてるっぽいし・・・。
今後そういう応用を真面目にやりたくなったら再調査してみます。
00:18:17 - miau - No comments - No Trackbacks - Permalink

2005年 2月 02日 (水曜日)

Perl Design Patterns

- Perl on miau's blog?
なんかググってる最中にたまたま見かけたページ。

Perlish Patterns: Secrets of the Cpan Masters

へー・・・なんか面白そうな本だけど、情報が少なすぎるな。
と、Amazon.com のほうで検索してみた。


なんか検索しても出てこない。どういうこと?

ということでさらに調べてみると・・・

PERL Miscellaneous - "Perlish Patterns" by Phil Crow

Could be any number of reasons why a book would get cancelled, but often
it's because the publisher doesn't think it will sell (i.e., they try
preselling the book and if they don't get enough orders they don't go to
press with it). If you're really that interested, though, why not try asking
the author directly:

http://www.perl.com/pub/au/Crow_Phil

なんて書き込みが。
よくわからないけど、結局出版中止ってこと?

でもとりあえずリンク先見ると参考になりそうな記事があったので、とりあえずメモ。
あと公式サイトぽいのも立ち上がってるのでメモ。

Perlish Patterns
19:13:57 - miau - No comments - No Trackbacks - Permalink

2005年 2月 01日 (火曜日)

STDOUT

- Perl on miau's blog?
共通関数のテストをしてる、みたいなことを書きましたが。
その中の関数で、エラー時にそのままprint "$!";みたいなことやってる関数がありました。

いや・・・標準出力以外に出力したくなったらどうするんですか。
Web サイトとかだとそのままユーザの画面に出力ですか。
ファイルハンドル受け取ってそこに出力できるようにするとか、もっと testability というものを考えて(ry

なんてことを思ってましたが、結構どうにでもなるんでした。そういえば。

my $stdout;
{
local *STDOUT;
open(STDOUT, ">", \$stdout) or die "can't open STDOUT: $!";
print "hoge"; # "hoge" は $stdout に格納される
}
print "fuga"; # ここでは標準出力に吐かれる

こんな感じ。
ラクダ本だかなんだかでちゃんと読んだはずなのに忘れてた。

ちなみにうまくいってるか確認しようとして、local なスコープ内でprint $stdout;とかやって「あれー?うまくいかないなー?」とかやって数分格闘してた。
色々まだまだだ。
21:09:46 - miau - 1 comment - No Trackbacks - Permalink

2005年 1月 28日 (金曜日)

Devel::Calltree つづき

- Perl on miau's blog?
関数一覧の出力にはあっさり成功したわけですが、いくつかつまづいてたのでメモがてら。
[Read More!]
20:13:09 - miau - No comments - No Trackbacks - Permalink

2005年 1月 25日 (火曜日)

Devel::Calltree

- Perl on miau's blog?
仕事で共通関数のテストをやってることは以前書いた気がしますけど。
仕様がわからない関数があってテストのやりようがなかったりも。

とりあえず「こういう場合はどういう動作が正しいんですか?」みたいな質問を送ると「この関数ってどこで使われてます?」みたいな質問が返ってきて。
結局すべての共通関数に関して呼び出し元を調べる必要があるんだろうなー、と。

で、Perl には C でいうところの cflow みたいのないかなー?
ということで見つけたが Devel::Calltree。

でもなんかうまく実行できなかったり。

Re: Perl call tree utility

とかで紹介されてるほうのモジュールでも似たようなエラーが。

Re: CallTree.pm

なんかを参考にバージョンを色々変えてみたけどダメ。


で、結局 Windows 上(ActivePerl)じゃなくて Solaris 上で実行するとあっさり動きました。
丸々一日無駄にした・・・。

まぁ自分の未熟っぷりを再認識するいい機会になったのでよしとしますか。
もっと Perl 勉強しないとなー。
18:07:22 - miau - No comments - No Trackbacks - Permalink

2005年 1月 21日 (金曜日)

ActivePerl + CPAN 補足

- Perl on miau's blog?
PPM を使わずにモジュールをインストールした場合、そのモジュールの Pod はインストールされますけど HTML はインストールされません。
# PPM 使ったら OK なのかも未確認ですが → 確認しました(2005/01/24)

perldoc コマンドでも最低限のことはできるけど、Windows 2000 の more コマンドがヘッポコなもんだから使いにくいことこの上ない。

ということで、スタートメニューから行ける ActivePerl User Guide に HTML を追加する方法。

perl -MActivePerl::DocTools -e "UpdateHTML()"

これだけでいけるっぽいです。



(2005/01/22 修正)
UpdateHTML はちゃんと @EXPORT に入ってたのでパッケージ指定消しました。



(2005/05/09 補足)
冗長なのが嫌いなら、↓でもいけます。念のため。

perl -MActivePerl::DocTools -eUpdateHTML



(2005/12/01 補足)
ActivePerl 5.8.7.815 以降ならたぶんこういうの不要。
ExtUtils::MakeMaker now generates and installs HTML documentation automatically.
Regardless how modules are being installed
(via PPM, through the CPAN shell, or by manual compilation and installation),
the HTML documentation is always kept up-to-date.

ということらしいので。
08:31:15 - miau - No comments - No Trackbacks - Permalink

2005年 1月 20日 (木曜日)

Perl の Testing Framework とか

- Perl on miau's blog?
仕事で「Perl で作った標準関数の単体テストをやるように」という指令が来まして。
まぁ色々メモ。

(2005/01/21 ちょっぴり追記)
[Read More!]
19:06:11 - miau - 1 comment - No Trackbacks - Permalink

2005年 1月 17日 (月曜日)

ActivePerl + CPAN

- Perl on miau's blog?
先日 My Favorite Perl Modules というのを教えてもらいまして。
面白そうなモジュールがいくつかあったんですが、実は ActivePerl では PPM に頼りっきりなので CPAN からのインストール方法知らないんですよね。

ということで調べてみると・・・

Perlモジュール/インストール(CPAN) - ActivePerl+CPANによるモジュールインストール方法。

というまさにそのまんまのページが。


んー・・・tar とか gzip とか色々インストールしないといけないのか・・・面倒そうだなー・・・。
と思ったら家のデスクトップには cygwin とか VisualStudio とか入ってるので特に何もインストールする必要はない様子。

ということで早速やってみたんですが・・・つまづきまくりましたのでメモ。

・ファイアウォール内にいるので普通に ftp は使えない。
 t e s t d r i v e - Perl 5.8.0インストールメモ によると FTP_PASSIVE=1 を設定してから実行する必要があるとのことで、
>set FTP_PASSIVE=1
>cpan

 とりあえず OK。

・初期設定完了後、実際にモジュールをインストールしようとすると、途中で
  G:\Microsoft Visual Studio\VC98\bin\nmake.EXE  -- OK
Running make test
'G:\Microsoft' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
G:\Microsoft Visual Studio\VC98\bin\nmake.EXE test -- NOT OK

 とかなんとか言ってコケる。
# VisualStudio が変なドライブに入れてますが、とりあえず気にしないでください。

 スペースが入ってるのがまずいんだろうけど、真っ当な解決方法わからないので・・・とりあえずショーとネームで指定すればいいんだろう、ということで。
 ショートネーム調べるのは↓な感じ。

G:\>dir /x micros*
ドライブ G のボリューム ラベルは Apps です
ボリューム シリアル番号は B0F8-535E です

G:\ のディレクトリ

2003/11/30 20:51 <DIR> MICROS~1 Microsoft Chat
2003/11/30 20:51 <DIR> MICROS~2 microsoft frontpage
2003/11/30 20:52 <DIR> MICROS~3 Microsoft Office
2003/11/30 20:52 <DIR> MICROS~4 Microsoft Reference
2003/11/30 20:59 <DIR> MIAF9D~1 Microsoft Visual Studio


 MIAF9D~1?なんか変だけどまぁ置いといて。
 cpan のシェル上で

cpan>o conf make G:\\MIAF9D~1\\VC98\\bin\\nmake.EXE


 とすれば OK。面倒だから初期設定時にちゃんと設定しておいたほうがいいです。


そんな感じで cpan のシェルは普通に使えるようになったけど、モジュールインストール時にテストでコケる・・・。
手動でコピーするかな・・・。
02:21:43 - miau - No comments - No Trackbacks - Permalink

2005年 1月 06日 (木曜日)

Perl でパスワード入力

- Perl on miau's blog?
ちょっと忙しいので小ネタ。

最近 Spidering Hacks の影響で LWP::UserAgent やら WWW::Mechanize を使うことが多いんですが、パスワードによる認証が必要なページとかもありまして。
今まではパスワードをソースコードにベタ書きしてたんですが、配布しやすいようにユーザに入力を求めるようにしたいなと。
でも普通に STDIN 使うと入力が画面に表示されてしまうわけで。

何か良い方法はないかなということで調べてみると・・・FAQ(perlfaq8) にありました。

use Term::ReadKey;

ReadMode('noecho');
$password = ReadLine(0);

だそうで。

ppm install TermReadKey とかやってインストール→試してみるとあっさり成功。

これで怪しげなスクリプトもそのまま配布できるように。
23:17:45 - miau - No comments - No Trackbacks - Permalink

2005年 1月 05日 (水曜日)

EPIC

- Perl on miau's blog?
EPIC - Eclipse Perl Integration

Perl での開発を Eclipse 上で行うためのプラグイン。

ハイライト表示、変数名やメソッド名の補完機能、テンプレートの使用、PerlDoc との連携、文法チェック、デバッグ支援となかなか便利そうな機能が揃ってます。

ですが、私が今やってる作業は保守っぽい作業なので、他人のコードを読むことのほうが多いわけで。
そういう視点で見ると、

・use や require してるモジュールの一覧が表示されるわりに、そのモジュールのソースにジャンプできない
・タグジャンプの機能がない

あたりがかなり不便。
そんな感じで、ソース読むだけならサクラエディタ+ctags とか使ったほうが便利っぽいです。


あと、その他目に付いた問題点。

・文字コードの自動判別ができない
・日本語表示しているせいか改行コードのせいか、エラー表示の位置がずれる


その他「あったらいいのに」的機能もついでに。
# こういう機能がついてるエディタ等ご存知な方は教えてください

・Pod から HTML 等の生成
・Test::Inline 等の実行
22:54:05 - miau - No comments - No Trackbacks - Permalink

2004年 12月 26日 (日曜日)

Perl + 機種依存文字

- Perl on miau's blog?
Perl で open (FH, "<:encoding(shiftjis)", "hoge.txt"); とかやって、ShiftJIS で入力 → UTF-8 で処理 → 再度 ShiftJIS で出力、なんて処理を今までよく書いてたわけですが。
どうもこの変換の過程で機種依存文字がおかしくなってしまうみたいです。
(出力結果を見ると \xff とか出力されたり?)

なんかこのあたり仕事で使うこともありそうなので、解決方法を調べてみました。

http://saba.three-a.co.jp/~toku/diary/?200307c&to=200307295#200307295

あたりにまとまってまして。
encode 周りを使う場合は "shiftjis" でなく "cp932" を指定してやればいいそうです。

んー・・・ShiftJIS と CP932 って別物だったんですね。
やっぱ体系的に学習してない分野の知識はかなり怪しいなぁ。


で、実際それでうまく処理できてるみたいです。
今後よほど特殊な条件(機種依存文字を出力するとまずい場合や、古い Encode モジュールしか使えない場合)以外は "cp932" 指定で行こうと思います。
12:45:50 - miau - No comments - No Trackbacks - Permalink

2004年 12月 06日 (月曜日)

WWW::MechanizeJHack

- Perl on miau's blog?
この前ちらっと「なんか本読んでたら〜」と書いたけど、その本というのは Spidering Hacks

LWP::UserAgent とか、WWW::Mechanize とか便利そうな Perl モジュールが色々紹介されてるけど、WWW::Mechanize は日本語の処理に問題があるとか。
そんなわけで、日本語版には HACK101 として日本語版のモジュールである WWW::MechanizeJHack が収録されてます。
(これは上記のサイトから落とせます)


で、インストール方法は

(1) ppm で WWW::Mechanize 0.72 のインストール
(2) http://search.cpan.org/src/PETDANCE/WWW-Mechanize-1.02/lib/WWW/Mechanize.pm を落として、先ほどインストールしたファイルを上書き
(3) さらに HTML::FormJHack.pm と WWW::Mechanize をコピー

だそうで、ちょっぴり面倒そうです。
私は少なくとも 3 台のマシンに対してこの操作を行う予定がある(しかもそのうち一台はインターネットに接続できない)ので、簡単にインストールできるように準備しておきました。
[Read More!]
01:11:59 - miau - No comments - No Trackbacks - Permalink

2004年 12月 03日 (金曜日)

Pod その後

- Perl on miau's blog?
ちょっと深く使おうとすると、色々問題が見えてきたのでメモ。
[Read More!]
00:07:49 - miau - 3 comments - No Trackbacks - Permalink

2004年 11月 29日 (月曜日)

最近の Perl (おもに Pod 周り)

- Perl on miau's blog?
今のプロジェクト、バッチ処理が全部 Perl で記述されてたりします。
で、私は現在このバッチ処理周りを見てることが多いです。

そんなわけで Perl の話題も溜まってきたので適当に。
[Read More!]
01:54:57 - miau - No comments - No Trackbacks - Permalink
«Prev | 1 | 2 | 3 | 4 | 5 | Next»