Perlの最近のブログ記事

いくつかActivePerl 5.10.x用のppmを作ったので公開してみる

Win32-FindWindowというPerlモジュールを作ってCPANにUPしてあるんだけど、そのモジュールのテストで必要なTest-Perl-CriticをWin32環境で手軽にインストールできないかなあといろいろやってるうちにVC6で自分でppm作っちゃったという...。

つかいかた:

  ppm repo add http://www.kreis-net.jp/downloads/activeperl/5.10/ppm/ "WAY TO GO"
  ppm install Test-Perl-Critic
  ppm install Test-Spelling

trac立ててみた。リポジトリURL変えなきゃならなかったので変更。
tracのためにmod_pythonとか必要だったけど、すでに入ってたw
次のHackはMTのWiki化もしくはリンク集(右サイドバーの「Links」)プラグインかな…
すでに誰かが作ってたりするかなやっぱ…
まぁプラグイン作成の練習ついでにやってみようかなとか。

Plaggerプラグイン、突発的に作っちゃった。
とりあえずmiyagawaさんと#plagger-jaには告知済み。
ひとまずここに上げておきます。
どうぞご利用ください

今巷で話題の(?)Plaggerで遊んでみました。
ちょっと乗り遅れた感もありますが、まぁ乗っとこうかなと。
すごい便利に使わせていただいてます。
お気に入りはPublish::MTWidgetですね。こいつを使えば、取得したFeedをMTのサイドバーに表示できるという。
ただし、MTプラグインのSidebar Manager必須です。そのためだけにSidebar Manager導入しました。
Sidebar ManagerもUIがAJAXしててかなり便利ですねこれ。
今は、mixiの最新日記をgmailに、CPANの最新モジュールをMTのサイドバーに表示&gmailに送信してみています。
けど、サイドバーに表示する際のタイトルを任意に指定する方法がどうもわからない。教えて偉い人...
YAMLを晒してみたりするテスト。



※その後miyagawaさんから#plagger-jaで直々に教えていただきましたとさ。
「globalのasset_pathで指定できます」と...ああ...仰るとおりだorz

ひそかにリポジトリにObject-AutoAccessor-YAMLとObject-AutoAccessor-JSONをUPしてみた。
けど、そんなんじゃなくて、O-AA自体を拡張した方が良いのでは無いかと考え中。

  use Object::AutoAccessor (input => 'YAML', output => 'JSON');
  my $obj = Object::AutoAccessor->build(<<'__EOYAML__');
  name: PIA
  url: http://www.kreis-net.jp/blog/
  __EOYAML__
  $obj->dump; # dump to JSON

とかできた方がいいよね。
あくまで案だけど。

いや~、最近むちゃくちゃ忙しいっす。
そんなわけでアレに全然手が付けられなかったわけですが。
現行の0.04はちょっと余計なメソッド多いな~と思い直して、というかずっと思ってたんだけど、今日あたりにでもばっさりシェイプアップしてみようかと思ってます。
コレも止まってるし。自分の時間が無い…
がんがります。

O-AAの開発が割りと加速してきた風なので、標題のようなことを考え付いていろいろ調べてみたところ、SVN::Logというモジュールを発見。
...が、ソースを読んでみるとまだまだって感じ。SWIGでAPI叩く方法とsvnコマンドラインをopenしてパイプ(!)する方法から選べる実装なんだけど、SWIGでは「特定のリポジトリに関する最新のリビジョン番号を取得する」方法がない(subversionのAPIにはあるけどモジュールで対応してない)し、コマンドラインだとなぜか引数が固定(!)になってて「こっからここまでのりビジョンを取得」しかできない上に、存在しない番号を与えるとこける...。これじゃあ「特定のリポジトリのtrunkに関するログをとりあえず全部取得」とかできないじゃん。
# でもまぁつい先日バージョンアップしたみたいだし、今後に期待ってところですな

というわけで仕方なく自力(かつ力技)でゴリゴリと。
長いのでいったん区切り。以下読みたい人だけどうぞ。

ちまちまと修正。リポジトリPAUSEにもUP済み。
今回はバグ修正です。なんと、せっかく

  $obj->param(foo => $obj->renew);

とかやっても、あとで

  $obj->foo->param(bar => 'baz');

とかできないことが発覚(汗
もうひとつ、param() を1組のキーと値だけで setter メソッドとして用いたとき、即 getter の役目もするように修正 (また get するの面倒だしね)

こういった割と厄介な不具合があっても、テストさえちゃんと書いとけば、修正によるエンバグの心配とかしなくて良くなるってのは精神衛生上すごいイイっすね。w
年末はこの調子でサクサク行きたいところ。実はこのモジュール (略して 'O-AA') は Abyss の足回りとして採用する予定なので、いま水面下でいろいろ準備中だったりします。
今回の不具合もその過程で見つけたんだけど(汗

標題のブツを例のごとくリポジトリにUP。PAUSEにもUPしたのでおいおいCPANに反映されていくと思います。
変更点はほとんどないけど、new()とrenew()がどんなパラメータも受け取るように変更。0.01では%default_optionsにあるキーしか受け付けなくて他は捨てるので、継承して使うときに非常に使い勝手が悪かったw
ひょっとしたら改悪かもしれませんが、ぜーんぜん知名度ないので、テスターも居ないに等しい…
だれかrenew()周りのテストしてくれないかなー。
ついでに「t/04_renew.t」書いてくれるとすごく喜びます。
いや、喜ぶだけですが。(ぉぃ

http://namazu.org/~takesako/ppencode/demo.html
Hatena::Diary::naoyaより:

  #!/usr/bin/perl
  cos xor print chr hex ord uc qq qr q xor print chr length q q truncate
  substr exists sleep tell exists getnetent chop select gethostent
  setgrent gethostent msgctl readdir do select lcfirst chdir s
  endprotoent msgctl endpwent q xor print chr hex ord uc qq qr q xor
  print chr length q q syscall flock getgrgid s exec rand oct
  getservbyname undef next rmdir print chmod chdir readdir index uc
  gmtime msgrcv lt gethostent getpwnam lstat values getpwuid q xor print
  chr hex ord uc qq or do xor print chr length q x connect syswrite q
  getprotobyname shmget quotemeta reverse pop s sethostent getpeername
  getprotobyname splice ref push splice getnetbyname fork getprotoent
  chop x xor print chr hex ord uc qq eq ge xor print chr oct ord qw q do
  q xor print chr hex ord uc qq qr q xor print chr oct hex length q q
  sprintf syscall close endpwent values untie reverse for rindex sin xor
  close exec abs getprotobyname warn my exec import xor alarm q xor print
  chr hex ord uc qq qr q xor print chr length q x sqrt le sethostent
  dbmopen msgget ge setgrent glob semop my stat open getnetbyname
  endpwent shmctl getpriority or cos return getprotobyname endgrent read
  eval lc x xor print chr hex ord uc qq eq le xor print chr oct ord qw q
  do q xor print chr hex ord uc qq or no xor print chr oct hex length q
  q bind and delete local localtime shmread vec chr lc getservbyname eval
  oct goto next map setpriority pack q xor print chr hex ord uc qq eq ge
  xor print chr oct hex ord uc qw q uc q

ネーミングがおもしろいですね。
Ruby版のrrencodeもあるらしいです。

2009年11月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

ウェブページ

Profile

name: Michiya Honda
nick: PIA
birth: 21-Nov-1975
e-mail: pia at this domain
SNS: mixi, nowa
起業・独立サポート「katana」

このアーカイブについて

このページには、過去に書かれたブログ記事のうちPerlカテゴリに属しているものが含まれています。

前のカテゴリはOpenSocialです。

次のカテゴリはPHPです。

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

Powered by Movable Type 4.1