2010年5月アーカイブ

2010年5月31日
| コメント(0) | トラックバック(0) App-Genpassを試してみた

CPANのモジュールの履歴を眺めていたら、面白そうなものがあったので試してみた。

App::Genpass - Quickly and easily create secure passwords

cpanmでさくっとインストール。
と思ったら、minicpanでミラーできていなかったのでインストール失敗。
そういう事もあるのか。

環境変数でmirror設定しているので、変更するのが面倒だったので、アーカイブファイルを直接指定するやり方でインストールした。

cpanm http://search.cpan.org/CPAN/authors/id/X/XS/XSAWYERX/App-Genpass-0.08.tar.gz

依存しているモジュールが結構あってそこそこ時間がかかったが、インストールは成功。

実行したスクリプトはSYNOPSISそのままだったのだが、Mooseに依存しているせいか動作も重い。
流石に20文字は長いが、眺めてみてもパスワードとしては遜色ない感じ。

1&3XXFXAQG8tIzAi0eC2
9Ukqb!t02bGWPyj#N&uZ
%oywF%)(#*gU%QUA9w2f
#7%A7w)RQoZGEfb$16uh
ifU91Ls2S^KzD#h$tOdu
jGIl2oc9$lTX#6MHVhwV
uiAU*uVszyxsQKY6@#Z&
z3z)%hfffgbYTqflC0rU
XGeR10#pD9g#AZ^HEXrj
Os6c4$MNlSn6XUcIzL6^

色々と細かく設定もできるけれど、すべてデフォルトでも問題はなさそう。
まあ、すべてデフォルトだったら、ここまで重いスクリプトを使うまでも無いか。

Accessorの比較は、App::Benchmark::Accessorsが有名ですよね。
しかし、NanoAで使われている、Class::Accessor::Lite等、比較されていないモジュールもあります。
Accessorとして使う分には十分な機能を持っているLiteを比較してみたかったので、いくつかのモジュールを選んでベンチマークを取ってみました。

cpanmを快適に使っていますが、毎回minicpanをミラー指定するのも疲れたので、ちょっと考えてみました。

helpによると、「PERL_CPANM_OPT」という環境変数にパラメータを入れておけば良いようなので、「--mirror file:///C:/strawberry/minicpan」を指定します。
Windowsの場合、マイコンピュータのプロパティあたりから環境変数の設定ができると思います。

WS000001.gif

これで、ミラー指定をしなくてもminicpanを使ってくれるようになりました。
めでたしめでたし。

ちょっと前に作ったプログラムを見ていて、悪い習慣だなぁ、と思ったので、改めるためにメモ。


Perlを覚えていく中で、関数の返り値を偽として判定させたいときは「undefを返す」という事をやっていた。

return undef;

しかし、これは返り値を配列で受け取るときに微妙になり、わかりにくいバグを発生させてしまう原因にもなる。
どういう場合に問題になるかを、実際にコードを書いて試してみる。

試行錯誤してきましたが、ようやく正解にたどり着きました。
これで、cpanmとcpan-outdatedの組み合わせでも、minicpanを有効に使うことができます。

minicpanの場所(minicpanを実行する時のlオプションの場所)が「C:\strawberry\minicpan」の場合は、以下のように書きます。

cpan-outdated --mirror file:///C:/strawberry/minicpan | cpanm --mirror file:///C:/strawberry/minicpan

考えてみれば、fileプロトコルでちゃんとアクセスすることを考えればよかったのです。

ミラー指定がちゃんと動いてなさそうな件については、ソースを見たところ、cpan-outdatedだけでミラー指定しても意味が無いことがわかった。

cpan-outdatedは取得するファイルは「02packages.details.txt.gz」だけなのでした。
つまり、ミラー指定をするのであれば、cpanmでも指定する必要があるので、以下のように書いて試してみた。

cpan-outdated --mirror file:///strawberry/minicpan | cpanm --mirror file:///stwawberry/minicpan

しかし、結果的にはうまくいかなかった。
ダウンロードに失敗している。

ミラーの指定方法が間違っているのだろうが、どう指定すればよいか。
ちょっと考えてみよう。

先ほどのコマンドが動き始めました。

画面のログを見る限りでは、httpから取ってきています。
タスクマネージャでも確認しましたが、fetchingの時にネットワークが動いたので、ミラー指定は効いていないのかも。

cpanm(cpanminusのコマンド名)と共によく使われているのを見るのだが、何をしているのかよくわかっていなかった。

で、ちゃんと検索したらあっさりと見つかった。
要するに

cpan -r

のminusバージョンという感じのアプリケーションでした。

で、これとcpanmを組み合わせることで、古いモジュールを楽に更新できる、という仕組みです。
Windowsではxargsがないので、以下のように試してみました。

cpan-outdated | cpanm

今、実施中ですが、upgradeをかなりサボっていたので結構時間がかかっています。

途中でミラーも設定できそうなことに気がついたので、minicpanの保存先を使って試してみました。

cpan-outdated --mirror file:///strawberry/minicpan | cpanm

…が、今度はなかなか動きません。
何かがいけないのかもしれません。

Twitterデビューしたので、こういうのも試してみる。

最近はやりのTwitterに、エントリーのタイトルとパーマリンクのTinyURLを投稿するプラグインを作ってみました。

ちゃんと投稿出来るかどうか、テストも兼ねて。

これまた今更な感じですが。
Twitterデビューしました。

気が向いたら、フォローしてやって下さい。

2010年5月12日

乗り遅れも甚だしいですが。
cpanminusを使ってみました。

CPANの環境がすでにあるので、インストールはCPANから。
strawberryperl v5.10.1ですが、全く問題なくインストール出来ました。

使い勝手も上々です。

Google検索

Last.fm

このアーカイブについて

このページには、2010年5月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2010年4月です。

次のアーカイブは2010年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Creative Commons License
このブログのライセンスは クリエイティブ・コモンズライセンス.
Powered by Movable Type