【Perl】Date::Manip モジュールで日付文字列を解析する(関数型インターフェイス編)

さまざまな形式の日付文字列を解析するには、DateTime::Manip モジュールが使いやすい。これは口語で時間・時刻を表す様々な文字列を、いとも簡単に解析してくれる優れもの。英語に限られるのが残念ではあるが、簡単なスクリプトを書くときには重宝する。

ただ、このモジュールは Ver.6 以降、従来の関数型インターフェイスとは別にオブジェクト指向型インターフェイスがサポートされて、使い方ががらりと変わってしまった。今回は古くから使われている関数型インターフェイスについて書いてみる。

Date::Manip – search.cpan.org
http://search.cpan.org/~sbeck/Date-Manip-6.11/lib/Date/Manip.pod

Continue reading

【Perl, Python】日本の祝日の一覧を取得する

とかく日本は祝日の多い国である。しかも祝日となる日付は毎年異なり、その法則も他国のように単純なものではない。

2007 年(平成 19 年)からは国民の祝日が合計 15 日となった。これは先進国では最多であり、「ワーカホリック」ともいわれる日本の意外な一面でもある。
http://ja.wikipedia.org/wiki/国民の祝日

Perl の場合

Perl で祝日判定を行うならば Calendar::Japanese::Holiday モジュールが使いやすい。

Calendar::Japanese::Holiday – search.cpan.org
http://search.cpan.org/~kztomita/Calendar-Japanese-Holiday-0.03/lib/Calendar/Japanese/Holiday.pm

Perl 祝日名の取得 – とみぞーノート
http://wiki.bit-hive.com/tomizoo/pg/Perl%20%BD%CB%C6%FC%CC%BE%A4%CE%BC%E8%C6%C0

インストールは次のコマンドを打つだけだ。

Windows(ActivePerl)の場合

C:\> ppm install Calendar::Japanese::Holiday

Linux、Mac OS X 等の場合

$ cpan -i Calendar::Japanese::Holiday

Continue reading

C::P::FormValidator::Simple のバグ

久々に環境を再構築してたところ Catalyst アプリへ全くアクセスできなくて焦った。

$ ./myapp_server.pl
〜中略〜
[info] MyApp powered by Catalyst 5.80024
You can connect to your server at http://xerxes-linux:3000
[info] *** Request 1 (0.062/s) [30044] [Thu Jun 17 18:50:08 2010] ***
[debug] "GET" request for "/" from "192.168.30.60"
[debug] Path is "/"
[error] Caught exception in engine "Can't use string ("MyApp") as a HASH ref while "strict refs" in use at /usr/local/lib/perl5/site_perl/5.12.1/Catalyst/Plugin/FormValidator/Simple.pm line 36."

何これ……? エラーメッセージを色々切り分けてググったり、果ては Apache や mod_perl の問題かと思ってコンパイルしまくったけど全然関係なかった。

Bug #58363 for Catalyst-Plugin-FormValidator-Simple: typo at line 36
https://rt.cpan.org/Public/Bug/Display.html?id=58363

C::P::FormValidator::SImple の 36 行目を、

$c->maybe::next::method(@_);

$c = $c->maybe::next::method(@_);

このように書き換えるだけで万事 ok。こんなことに時間を費やしたのかorz

【Perl】いつの間にか Plagger が動かなくなっていた件

ニュースサイトの Atom / RSS を取得して加工する Plagger スクリプトがいつの間にか動かなくなっていた。備忘録として解決策を載せておく。

その 1. euc-jp に未対応?

エラーメッセージを見てみると次のように表示される。

failed: Parsing content failed: Couldn't open encmap euc-jp.enc:
No such file or directory
at /opt/local/lib/perl5/site_perl/5.12.0/darwin-multi-2level/XML/Parser.pm line 187
at /opt/local/lib/perl5/site_perl/5.12.0/Plagger/Plugin/Aggregator/Simple.pm line 77

ググってみると、XML::Parser::Encodings::euc-jp.enc というファイルがないことが原因のようだ。

Continue reading

【Perl】HTML / XML の 整形には tidy“p”?

HTML や XML の整形ツールとして有名なものに HTML Tidy(以下、単に tidy と呼ぶ) がある。このツールは既に 10 年以上の歴史を持つが、最近では更新頻度がだいぶ落ちてた。tidy を Perl 上から使うには HTML::Tidy というモジュールを使うのだが、tidy の最新版がうちの環境(Mac OS X 10.6 + Perl 5.10.1)ではうまく動かず、えらい苦労させられた。

【MovableType】Tidy を使って HTML を整形するプラグイン | blog.delphinus.dev
https://blog.delphinus.dev/2010/03/tiding-movabletype.html

HTML::Tidyについて追試 | blog.delphinus.dev
https://blog.delphinus.dev/2010/03/resit-html-tidy-install.html

こうした中、HTML::Tidy の作者は一向に更新されぬ tidy に業を煮やしたのか、自ら互換プロダクトを開発することにしたらしい。それが tidyp だ。

Continue reading

【MovableType】AWStats を使って人気記事ランキングを作る

MT で人気記事ランキングを作るとすると MT-MostVisited プラグインを使うのが一般的だ。

MTで人気記事ランキングを作る - #BLOG
http://www.masahiko.info/blog/archives/000100.html

このプラグインは Apache のログから直接統計データを得て作成するものだが、次のような欠点がある。

  1. ログファイルが大容量になると時間がかかりすぎる。
  2. URL に entry_id を使うことを想定しているので、(このブログのように)URL をカスタマイズしているとうまくデータを拾えない。

これを解決するために MostVisitedAlternative プラグインというのを自作してみた。このサイトの左に見えているランキングがそれだ。

Continue reading

【MovableType】iPhone 用に Youtube を縮小表示する

Youtube の動画を記事に貼り付ける場合、該当する動画にあるリンクをコピペするわけだが、その際に動画のサイズを自由に設定できる。

YouTube 動画のブログへの取り込み方とサイズ変更 ブログパーツナビ Blogparts-NAVI
http://blog-parts-navi.seesaa.net/article/54679632.html

100517-0001.png

最近の動画は横幅 640px(縦横比 16:9)、480px(縦横比 4:3)と言った大型のものが主流になっており、通常のブラウザなら問題ないのだが、iPhone では横にはみ出してしまう。以前、「【MovableType】エントリーの中でタグを使う」で行った方法と同じように Javascript でいじる方法を試したのだが、これはうまくいかなかった。しょうがないので MT のプラグインでこれを実現してみる。

Continue reading