2010年8月アーカイブ

2010年8月31日
| コメント(0) | トラックバック(0) 昔書いたスクリプトをグレードアップした

WWW::MechanizeとWeb::ScraperでLast.fmからfreemp3をダウンロードするスクリプトを久しぶりに動かしてみたら、エラーになった…。

確認したところ、どうやらコンフィグ(Config::YAML)の使い方に問題があったようだ。
なんとも恥ずかしい。

そこで、最近使い方を覚えた小技をいくつか加えてグレードアップすることにした。
Config::Pitを使ってみたり、autodieを使ってみたり。

Config::PitはWindowsでは使えないと勝手に思い込んでいたけど、普通に使えた。
スクリプトにアカウント情報を入れなくても済むので、ブログで公開するときにも気を使わなくて済むのが良いです。
Config::Pitは、getとsetが組になっていて、まずはsetでアカウント情報を記録しておきます。
やり方は幾つかあるのですが、とりあえず今回のスクリプトに合わせて作ったスクリプトを晒しておきます。

# utf8
# use Acme::PerlTidy;
use strict;
use warnings;
use Config::Pit;
 
# 設定
Config::Pit::set(
    "last.fm",
    data => {
        username => "username",
        password => "password",
    }
);

usernameとpasswordの値を、実際のアカウント情報に変更してから実行すると、私の環境では

C:\Users\<username>\.pit

の中に、YAMLファイルで入力した情報が保管されていました。
あとは使うときにsetで使ったキー(今の場合は「last.fm」)で引いてやると、このアカウント情報がちゃんと使えます。
便利ですね。

autodieは、Fatalの自動版という感じでしょうか。
use autodieとしておくだけで、色々なエラーを捕まえてdieしてくれます。
例えば以下のようなスクリプトでは、ファイルがなかった時にはdieします。

# utf8
use strict;
use autodie;
 
open my $fh, '<:utf8', 'autodie.dat';
close $fh;

便利ですね。

8月15日のエチカの鏡を見ていて、ハーバード大学で活躍している日本人(名前は失念)の言葉が記憶に残った。

自らの手で科学を推し進めている感覚がある。 この計算が解ければ世界が変わる。

細かいニュアンスは覚えていないが、最先端にいる人の感覚が、その発する言葉から伝わってきた。
何のためらいもなく「世界を変えている」と言えることが、素直に素晴らしいと感じた。


そういう事を考えていたときに、ふと思い出したことがあった。
昨年参加したKansai.pmで話していた(というか聞いた)ことを思い出したのだ。

最先端を行っている人は、そのまま突っ走って欲しい。 色々なソフトウェアを開発したり、モジュールを作ったりする人は、初心者にわかるような詳細なドキュメントを作るよりも、もっと開発に時間をかけて欲しい。 ドキュメント作成は、ソースコードを読んでソフトウェアやモジュールを使える人がやっていくほうが、全体としてプラスになる気がする。

そんな想いを聞いたのだ。
その時に、オレもPerlの入り口に立った人に何かできることをしよう、と思ったことを同時に思い出した。

うまく文章にはまとめられないけど、書きたい、という気持ちが熱いうちに言葉にしたいと思った。
まとめようと思えば思うほど、書こうとした言葉がどこかに行ってしまうのが悔しい。

しばらく前に、POSIXにstrftimeという便利なコマンドがあるのを発見した。
DateTime等とのベンチマークだったと思う。
はてブしたハズなのだが、見つからず。
タグのつけ方が安定しない…。

ともかく。
日付時刻を表示するときは、localtimeをスカラーコンテキストで表示することが多いのだが、日本風に表示しようとすると、それなりに面倒。

my @now = localtime;
$now[5] += 1900;
$now[4]++;
printf qq{%04d/%02d/%02d %02d:%02d:%02d}, reverse(@now[0..5]);

そこで便利なのが、POSIXのstrftimeですよ。

use POSIX;
print POSIX::strftime '%Y/%m/%d %H:%M:%S', localtime;

これで同じ出力を得ることが出来る。
しかも、手元の環境では、strftimeを使ったほうが速い。

Google検索

Last.fm

このアーカイブについて

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

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

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

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

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