■2004-06-26
* [Perl] PurePerlなXML::Atom
前回、PurePerlなXML::Atomを目標にと書きましたが、昨日完成したPuerPerlなXMLパーサを利用したところ、意外とすぐできました。以下、経過について。
まずベースとなるXML::XPathはXML::Parserを利用しています。これをXML::Parser::LiteHeavyに置き換えたところ、テストを全てパスしました。ちなみにX::XPathはAttlistハンドラをX::Parserに登録しますが、X::P::LiteHeavyはAttlistを登録できませんので、Attlist宣言のあるxmlはXPathが正しく動作しないでしょう。ただXML::Atomで使う分にはさほど問題にならないかも。
次にXML::Atomですが、このモジュールはX:XPathの他にも、DateTimeやDigest::SHA1などを要求してきます。さらにDateTimeはParams::Validateやら何やらが必要で……とにかく面倒くさいです。本来はCPAN.pmを使えばいいわけですが、ここではとにかくそういう便利なものを一切使わずにインストールするのが目標です。さて、DateTimeもParams::ValidateもXSモジュールを使うのでコンパイラが必要ですが、これらはPurePerl版も同梱しているので問題無し。Digest::SHA1もXSモジュールですがこちらはズバリDigest::SHA::PurePerlというのがあります。こうしてどんどん必要なものを適切なディレクトリに収めていって、モジュールの呼び出し部分を書き換えていきます。さらにPerl5.005でも動作するようにXML::Atomのファイルに適宜修正を加えます。こうして最後にPerl5.8、5.00503の両方でテストを全てパスしました。ふぅ、やれやれ。
DateTimeはあまりに多くのモジュールを必要としますが、XML::Atomが使うのはそのほんの一部のようです。これも新しくダミーモジュールを作ってしまいましょう。近々パッケージにして公開できたらいいな。
追記:→XMl::Atom 楽々設置版
* [Perl][CGI] XML::AtomとLWP::Authen::Wsse
レンタルサーバにPurePerlベースのXML::Atom(XML::Atom::*自体はDigest::SHA1→Digest::SHA::PurePerlにして、これらのモジュールがPerl5.005で動作するようにbaseやourを修正しているだけ)を設置してみました。→ http://www.donzoko.net/cgi-bin/atom/(直接ブラウザからみようとしても楽しくありません)。上記のアドレスにアクセスするためのAtomクライアントが必要かと思ったのですが、LWP::Authen::Wsseなる便利なものがあるそうですので、これをPCに入れて使ってみました。
GET http://www.donzoko.net/cgi-bin/atom/
username : foo
password : bar
と入力すると……確かに何か返ってきました。実験成功です。サーバのソースは→XML-Atom-Limited。修正したXML::XPathやDigest::SHA::PurePerlは準備中。