nDiki : PPM パッケージ
PPM パッケージ - PPM package
パッケージマネージャ PPM で扱うことのできるソフトウェアパッケージ。 通常 Perl モジュールをパッケージングしてある。
スポンサード リンク
Related term
2005年2月23日 (水)
■ ActivePerl で Ming

ActivePerl で Ming を使えるようにしておきたい。
@ Visual Studio で
Ming 0.3 beta1 のソースパッケージには Visual Studio 6.0 用のプロジェクトファイルが含まれている。 Cygwin の Bison と flex があればライブラリをビルドできるようだ。 横着して Linux 側で bison と flex で生成したファイルをコピーして(それから unistd.h をインクルードしている部分を消して)、ビルドしてみたところ一応 lib ファイルは作成成功。
しかし ActivePerl 用にPerl モジュールの make は失敗。
@ MinGW + nmake で ActivePerl のモジュールをビルドできるらしい
調べたところ ExtUtils::FakeConfig を使うと Visual Studio が無くても MinGW + nmake でモジュールをビルドできるらしい(全てではないと思うが)。
ということで Ming を MinGW でビルドした後、そのまま ActivePerl 用モジュールの作成まで持ち込むことにしてみる。
@ MinGW + MSYS + GnuWin32 で開発環境を構築
コンパイルに必要な環境を MinGW で、configure に必要な環境を MSYS で用意する。
@ bison は GnuWin32 で
Ming のビルドに必要な Bison は MinGW、MSYS のインストーラに含まれていない。 bison-1.875.0-2003.02.10-1.exe というのが別途あるがうまく動かない。
ソースパッケージ(bison-2.0.tar.gz、bison-1.875.tar.gz)からはビルドできず。 MinGW/MSYSのプロジェクトにある bison-1.875-2003.02.10-1-src.tar.gz はビルドできるものの make check が通らない。
とうことで GnuWin32 の bison-1.875-4.exe (インストーラ形式)をインストール。 c:/usr/local/GnuWin32 にインストールした後、MSYS の /etc/fstab で /GnuWin32 にマウントし、/GnuWin32/bin に PATH を通しておく。
@ flex はソースパッケージから
flex-2.5.4a.tar.gz を展開して
./configure; make; make check; make install
インストール時ハードリンクが作れなくてエラーがでているようだが無視。
@ zlib (Ming で必要)
MSYS 上でビルドしてインストール。zlib-1.2.2.tar.gz を展開して
./configure; make; make check; make install
@ LibUnGif for Windows (Ming で必要)
MSYS 上でビルドしてインストール。 libungif-4.1.0b1-src.zip を展開して
rm config.cache; config.h内の-DHAVE_VARARGS_Hをコメントアウト。 ./configure; make; make install
make check はエラーが出るが無視。
@ libpng (Ming で必要)
MSYS 上でビルドしてインストール。libpng-1.2.8-config.tar.gz を展開して
CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure make; make check; make install
@ いよいよ Ming
MSYS 上でビルド。ming-0.3beta1.tar.gz を展開して
CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib make static
@ ActivePerl 用モジュール作成
ExtUtils::FakeConfig と PPM::Make で Ming の SWF PPM パッケージを作成する。 (MSYSのシェルではなく)コマンド プロンプトを開いて、Mingソースパッケージの中の perl_ext に移動。 MSYS、MinGW、nmake にPATHを通しておく。
それから Makefile.PL の実行で -lz を発見できないので、libz.a を Makefile.PL と同じディレクトリにコピーしてしまう(-L/usr/local/lib を指定しても効かなかったので)。 libpng.a、libungif.a も同じくコピーしておく。
Makefile を作成。Makefile.PL では -lz しか指定していないが、libpng と libungif も必要なのでコマンドラインオプションで指定する。ExtUtils::FakeConfig の Config_m を使用して MinGW を使用するようにする。
perl -MConfig_m Makefile.PL LIBS="-lpng -lungif -lz"
ここで生成される Makefile の中で libperl58.a を指定している部分があるが、ActivePerl では perl58.lib になるので、エディタで書き換え。 後はいつも通り
nmake nmake test make_ppm
で PPM パッケージ作成完了。
簡単なPerlプログラムでSWFファイルが作れる事を確認。 やった。
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- Module::Build でソースパッケージング (2005-08-24)
- Windows 用 GNU Make (2004-07-24)
- 自前 PPM リポジトリの管理 (2006-07-03)
- Windows 用 GNU tar (2004-08-05)
2005年3月31日 (木)
■ Wineを入れてみる

Linux 上で Win32 用の ActivePerl を動かして、PPM パッケージの作成や PAR による実行可能ファイルの作成をできるようにしたい。
調べたところ Wine 上でも ActivePerl が動くらしい。 さっそく Debian GNU/Linux の sid 環境にインストールしてみる。
debパッケージは以下をインストール。
- wine
- wine-utils
- winesetuptk
- wine-doc
- msttcorefonts
winesetup を実行して ~/.wine 以下を作成。 winesetup が古いのか wine を実行すると
Please use the registry key HKEY_CURRENT_CONFIG\Software\Fonts\LogPixels to set the screen resolution and remove the "Resolution" entry in the config file
という警告がでるので、[fonts] の中の
"Resolution" = "96"
をコメントアウト。
次に msi 形式になっている ActivePerl インストーラを動かすために、Windows Installer をインストールする。
失敗。設定がうまくいっていないのか、何かが足りないのか。
usr/share/wine/wineinstall で ~/.wine 以下を作っても駄目。
要調査。
- ActivePerl で Ming (2005-02-23)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- Debian GNU/Linux sid 環境を新 HDD へ (2006-07-29)
- 納品前日なのに /var が壊れた! HDDからのブートで Debian ... (2005-09-27)
- NSIS 2.22 は Linux でビルドできず (2006-12-20)
2005年4月10日 (日)
■ Windows 上での Apache 2.0.53 では PATH_INFO が シフト JIS に

WiKicker の Windows 上での動作確認の続き。 WiKicker のPPM パッケージを作成して ActivePerl 5.8.6.811 上にインストール。 依存するモジュールで、ActivePerl に入っていないものは以下の通り。
- Algorithm::Diff
- Jcode
- Log::Log4perl
- Time::Zone (TimeDate)
既に手元で PPM パッケージ化済みなので、これもインストールしておく。
後は RCS をパスの通っているディレクトリに入れてタイムゾーンを設定。
TZ=JST-9
で CGI プログラムとして実行。 お、表示できた。 書き込みはと。
エラー。
予想していたけれど、sendmail に依存していたところ。 sendmail が見つからない場合はメールの送信をスキップするように修正。
これでうまく動くかなと思ったら、日本語名のページを作るとうまく表示できない問題を発見。
@ PATH_INFO がシフト JIS で渡される
WiKicker では UTF-8 文字列をURIエスケープして WikiPage のURLを生成している。 このURIにアクセスされると WiKicker は、PATH_INFO から WikiName を取り出す。 この文字列がシフト JIS になってしまっている。
Windows がファイル名に使用する charset にあわせて、Apache が変換してしまっているようだ。 調べてみると他の WikiEngine でも同様の問題にあっているという記事が見つかった。
将来の 2.0 系でパッチが取り込まれて修正されるとか、そうでないとか。
現状どうするかなぁ。 WiKicker 側でシフト JIS から UTF-8 に戻すというのもできない事はないけれど、あまりやりたくはないな。 いったんシフト JIS を介しているという時点で、シフト JIS に無い文字の扱いに関する問題をかかえてしまっているし(Apache が)。
対策案:
- Apache 1.x 系を使う (まだ未確認だが、こちらだと勝手に変換されないらしい)
- WiKicker に PATH_INFO を使わないオプションをつける(URI Query Component は勝手に変換されない)
- WiKicker 側でシフト JIS から UTF-8 に変換する
- WiKicker における PageName 最長文字数 (2006-06-10)
- WiKicker 0.35 リリース - 添付機能の修正など (2006-06-20)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- amaroK で Linux 上の iTunes 音楽データを聞く (2006-01-22)
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
2006年2月9日 (木)
■ ActivePerl と PAR PPM パッケージは合わせる必要あり

以前 ActivePerl にインストールした PAR で Windows 実行形式ファイルに変換しておいたプログラムが実は動かなかった事に気がつく。
プログラム名 - エントリポイントが見つかりません。
プロシージャ エントリ ポイント PL_memory_wrap がダイナミックリンク ライブラリ perl58.dll から見つかりませんでした。
おや。
どうやら ActivePerl 5.8.7 Build 813 上で、 ActivePerl 5.8.6 Build 811 で PPM パッケージ化しておいた PAR を使ったのがまずかったようだ。
ActivePerl は 5.8 系の間ではバイナリ互換だったと思うが(5.6系とは駄目)、PAR に限ってはそうはいかないらしい。まぁ、考えてみればそうなってもおかしくない。
ということで PAR PPM パッケージを作り直してインストールし、こちらであらためて exe ファイルを作成。 うまく動くようになったことを確認。
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- 自前 PPM リポジトリの管理 (2006-07-03)
- ActivePerl で Ming (2005-02-23)
- PAR を ActivePerl 5.6.1 build 638 に (2004-07-20)
2006年7月3日 (月)
■ 自前 PPM リポジトリの管理

Windows Perl アプリケーション用に PPM リポジトリを久しぶりに整理。
自分が使用する PPM パッケージは以下の理由から、以前より基本的に自前でビルド/保存し PPM リポジトリをローカルに作成するようにしている。
- 後でオフラインでインストールできるようにする。
- 「公開リポジトリが無くなった」あるいは「公開リポジトリに欲しいパッケージが無くなった」時に困らないようにする。
- 動作確認された組み合わせでの PPM パッケージセットを作成・保持できるようにする。
- ライセンス的にクリアなものだけを含むリポジトリを用意する。 (芋蔓式インストールで、ライセンス的にクリアでないパッケージが入ってしまうのを防ぐ)。
@ 手元では以下のように管理
PPM
|-- <category>
| `-- 8xx
| |-- <projects A> [ 公開 / export ]
| | |-- module1.ppd -> (A)
| | |-- module1.tar.gz -> (B)
| | `-- ...
| `-- ...
`-- pool
|-- module1-x.yy
| |-- module1.x.yy.tar.gz
| |-- some documents...
| `-- build817
| |-- module1.ppd (A)
| `-- module1.tar.gz (B)
`-- ...
@ pool
- pool ディレクトリに「[モジュール]-[バージョン]」ディレクトリを作成する。同じバージョンでも、異なるバージョンは両方とも別々にキープしておく。
- その下にソース tarball を置く。
- ライセンス情報ファイルなども置く (touch Perl-License 等空のファイルを作成しておく)
- PPM パッケージを PPM::Make で作成し、その時に使用した ActivePerl のビルド番号別にサブディレクトリを作って .tar.gz と .ppd を置く。
@ リポジトリ
- ActivePerl のビルド番号別にリポジトリを作成する。基本的には 6xx 系、8xx 系それぞれの中ではバイナリ互換性がある (PAR などは、ビルド番号に1対1でしか互換性がない)。
- 必要に応じてカテゴリ別サブディレクトリを用意 (アクセス制限の都合などにより)
- 必要に応じてプロジェクト毎にサブディレクトリを用意 (プロジェクト毎にパッケージセットを作るため)
- リポジトリディレクトリからは pool 内の .ppd、.tar.gz へシンボリックリンクを張る。欲しいモジュールのバージョン、ビルド番号を選んでリンクする。
@ 公開
- Samba、Apache などで、PPM ディレクトリ全部あるいは特定のリポジトリ部分を公開する。
- 必要なら export して別サーバに置く。rsync や cp の -L オプションでシンボリックリンクを実ファイルに置き換えてアーカイブを作成する。
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- ActivePerl で Ming (2005-02-23)
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- XAMPP で WiKicker を動かしてみた。PPM インストール OK。 (2007-02-09)
- rsync の --copy-unsafe-links (2004-08-21)
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)
2006年12月13日 (水)
■ wxPerl PPM パッケージ

PAR リポジトリでいろいろ遊べそうなので、GUI 作成に wxPerl の方も久しびりにまた使おうかなと。
ただ wxPerl の本家が配布しているビルド済み PPM パッケージは、いまだに Wx 0.26 + wxWidgets 2.6.2 だったりして使う気になれない。 かといって、自分でビルドするのも結構手間だし。
で探していたところ Wx::Perl::Packager の開発者が、自身のサイトで PPM パッケージを配布しているのを発見。
最新のパッケージがあるのが嬉しい。
というか12月12日 にリリースされた wxWidgets 2.8.0 と、 CPAN にもまだない CVS 版 Wx (次の 0.66 のためのスナップショット)が、同じ12月12日に公開されているという早さ。
これがあれば、最新の機能が堪能できそうだ。
- 私的10大ニュース2004 [ comp ] (2004-12-31)
- Wx::ActiveX をビルド (2004-08-27)
- wxPerl + ActivePerl 5.6.1 build 638 (2004-07-21)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- bundle を作成して Perl モジュールをまとめてインストール。 (2004-10-21)
2007年2月5日 (月)
■ ActivePerl 5.8.8.820 の PPM では ppd/tar.gz を置いただけの PPM リポジトリを使えなくなった

ActivePerl 5.8.8.819 までは .ppd と .tar.gz ファイルを置いたディレクトリを Web サーバで公開しておけば、そのディレクトリの URL を PPM リポジトリとして指定して使うことができた。
これが build 820 付属の PPM だとスキャンしてくれなくなった。 リポジトリの URL を指定する際、package.xml を指定しないと駄目らしい。
@ PPM リポジトリとして必要なファイル群を生成する
PPM リポジトリとして必要なファイル群は PPM-Make に含まれている rep_summary コマンドで生成することができる。
rep_summary --rep /path/to/ppm/repository
今後はこれで package.xml その他のファイルを生成しておくことにする。
@ 複数の PPM リポジトリ
一方複数の PPM リポジトリの扱いは良くなった。build 819 付属の PPM では、複数のリポジトリにまたがってパッケージの依存解決ができなくなっていて不便だったのだが、build 820 のものでは、以前のバージョンのもののようにまたがれるようになった。
基本的な PPM パッケージ群用と、プロジェクト毎の PPM パッケージ群用の PPM リポジトリを組み合わせて使うときに、依存解決できないと厄介だったのでこれは○。
@ PATH
build 819 のインストーラでは site\bin に PATH を通してくれないので、site にインストールしたパッケージ付属のコマンドが呼び出せず不便であった(もちろん自分で PATH を通せばよいのだが)。
build 820 のインストーラでは site\bin も PATH にいれてくれるようになった。○。
[ ActivePerl ]
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- 自前 PPM リポジトリの管理 (2006-07-03)
- XAMPP で WiKicker を動かしてみた。PPM インストール OK。 (2007-02-09)
- ActivePerl で Ming (2005-02-23)
- bundle を作成して Perl モジュールをまとめてインストール。 (2004-10-21)
2007年2月9日 (金)
■ XAMPP で WiKicker を動かしてみた。PPM インストール OK。

Perl で書いた Web アプリケーションのポータブルな Win32 デモ環境として XAMPP を使ってみるとどんな感じになるか試してみた。
使ったバージョンは以下。
(http://www.apachefriends.org/jp/xampp-windows.html)
@ C: ドライブで試す
それぞれ 自己解凍型 7-ZIP アーカイブをとってくる。 最初に XAMPP を展開し、次にその xampp ディレクトリの中で Perl アドオンを展開。 xampp ディレクトリを c: の直下に移動する。
次にコマンドプロンプトを開き c:\xampp\perl\bin へ移動後 ppm コマンドを起動して作成済みの PPM パッケージをインストールする。 インストール先は \xampp\perl 以下とドライブ無しのパスで指定されているようで、問題なく必要な Perl ライブラリをインストールできた。
次に \xampp\xampp-control.exe を実行して GUI 管理ツールを立ち上げ、その画面から Apache を起動。 普通の Win32 版 Apache もインストールしてある PC だったため、xampp-control から Apache を起動したらそちらが立ち上がってしまったが、これは Svc にチェックが入っていたからだった。Svc を外せば \xampp 以下の Apache がきちんと起動する。
あとは \xampp\htdocs 以下で WiKicker CGI プログラムの配置や設定ファイルを作成すれば OK。 もともと WiKicker は相対パスだけで動くようになっている*1ので、問題なく実行することができた。
*1多分
@ 他のドライブに移す
一度セットアップできた \xampp ディレクトリを TrueCrypt 仮想ドライブにコピーして起動してみた。
こちらも問題なく OK。
ということで XAMPP でお手軽に Perl CGI プログラムの動く Web サーバ環境を作れることを確認できた。
問題があるとすれば XAMPP + Perl アドオンが馬鹿でかいところか。400MB オーバー。 今回何が一番時間がかかったかって、XAMPP + Perl アドオンを展開した直後の xampp ディレクトリを、後でまた使えるように 7-ZIP の最高圧縮する処理に時間がかかった。 使っている PC では 50分以上かかったよ。
- 自前 PPM リポジトリの管理 (2006-07-03)
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- [ WiKicker ] SpeedyCGI (2003-10-17)
- CGI プログラム、Out of memory! に泣く (2001-01-04)
2008年8月5日 (火)
■ Twitter への書き込みを自動的に Skype ムードメッセージに設定する for Windows

半年ぐらい前に Skype for Linux で Twitter への書き込みを自動的に Skype ムードメッセージに設定するスクリプト(記事)を作って cron で 10分毎に更新するようにした。
Windows BOX 上 Skype を使っている時も同様にできるように、Skype4COM を使うバージョンも書いてみた。 D-Bus ではなく Skype4COM を使うようにすることと、Skype4COM にはシフト JIS の文字列を渡すようにすること以外はほとんど同じ。
Skype4COM の DLL を登録し、Skype が起動している状態で以下の Perl スクリプトを実行。
#!/usr/bin/perl
use strict;
use warnings;
use Win32::OLE;
use URI::Fetch;
use XML::RSS;
use Date::Parse;
use Encode;
my $id = '自分の Twitter ID';
my $time = time;
my $fetch_response
= URI::Fetch->fetch(
"http://twitter.com/statuses/user_timeline/$id.rss?dummy=$time")
or die URI::Fetch->errstr;
my $rss = XML::RSS->new;
$rss->parse($fetch_response->content);
die 'no items' if @{$rss->{items}} == 0;
my $item = $rss->{items}->[0];
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
= localtime(str2time($item->{pubDate}));
my $title = $item->{title};
my $mood
= sprintf("$title [%02d/%02d %02d:%02d]", $mon + 1, $mday, $hour, $min);
$mood = Encode::encode('shiftjis', $mood);
my $skype = Win32::OLE->new('Skype4COM.Skype');
$skype->Client->Start unless $skype->Client->IsRunning;
my $profile = $skype->CurrentUserProfile;
$profile->{MoodText} = $mood;
インストール済みだった ActivePerl 5.8.8.822 で動作を確認(ちなみに現時点での最新は ActivePerl 5.10.0.1003)。なお URI::Fetch、XML::RSS、Date::Parse(TimeDate) は標準では入っていないので PPM パッケージでインストール。
タスク スケジューラで10分毎に上記のスクリプトを wperl.exe で実行するように設定。 これで Windows 上でもさえずりをムードメッセージに設定できるようになった。
- Twitter への書き込みを自動的に Skype ムードメッセージに設定する (2008-02-25)
- ActivePerl で Ming (2005-02-23)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- Twitter ステータスを nDiki サイドバーに表示 (2007-11-09)
- ちょっと複雑なネット用統合アドレス帳 Ripplex (2008-04-30)
■よく検索されるキーワード
torrent(201) expressions(99) 竹内まりや(76) x31(38) ドラマ(30) perl(29) ノート(22) debian(21) thinkpad(21) usb(19) mp3(17) 壁紙(17) windows(17) 手帳(16) linux(16) 動画(15) 秋葉原(14) 使い方(14) wiki(13) システム手帳(13) a6(12) ssh(11) svn(11) google(11) 方眼(10) 提案書(10) 山口日記(10) 藤倉みのり(10) 交換(10) nikon(10) 竹内(10) ダイソー(9) 画像(9) 変換(9) ヨドバシカメラ(9) tc-1(9) 竹内まりあ(9) 写真(9) 作り方(9) skype(8) 書き方(8) 無料(8) 無印良品(8) centos(8) 設定(8) ほぼ日手帳(8) dropbox(8) インストール(7) xp(7) 本名(7) subversion(7) 万年筆(7) 生年月日(7) フルハルター(7) 腕時計(7) ubuntu(7) gtd(7) 冷蔵庫(7) 修理(7) ボールペン(6) バッグインバッグ(6) 購入(6) kernel(6) 2009(6) リフィル(6) 機内持ち込み(6) the(6) xampp(6) 結婚式(6) java(6) kde(6) porter(6) ペンケース(5) cgi(5) memcached(5) cvs(5) gpt(5) ダウンロード(5) elio(5) サイズ(5)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 方法 設定 サンプル ダウンロード セール 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 最新 MP3 動画 Torrent 解説 意味 用語集 参考文献 お薦め お勧め おすすめ 便利 Blog ブログ mixi 待受画面 修理Process Time: 0.779762s / load averages: 1.36, 0.92, 0.62
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク