D-7 <altijd in beweging>

Day to day life of a Perl/Go/C/C++/whatever hacker. May include anything from tech, food, and family.

2005年08月

  use XML::RSS::LibXML;
  my $rss = XML::RSS::LibXML->new;
  $rss->parse_file('rss.xml');

  print $rss->as_string();

これは前からできたけど、今度はちゃんとRSSを作れるぜ!

  my $rss = XML::RSS::LibXML->new(version => '1.0');
  $rss->channel(
    title => "RSS title",
    link  => 'http://example.com'
  );
  ... その他いろいろ ...
  $rss->save("foo.xml");

一応RSS 1.0ならかなりの制度で $rss2->parse($rss1->as_string) して、$rss1 == $rss2のようにできるはず!

今回一番手こずったのはXMLネームスペース。結果的に作成したいRSSはこういうふうに始まってほしい:

  
  <rdf:RDF</pp>
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns="http://purl.org/rss/1.0/"
    .... other declaration ...    
  >

最初は

  $xml  = XML::LibXML::Document->new('1.0', 'UTF-8');
  $root = $xml->createElementNS($RDF_NS, 'RDF');
  $root->setNamespace($RDF_NS, 'rdf', 1);
  $root->setNamespace($DEFAULT_NS. '', 1);

ってやってたんだが、これをやるとxmlns:rdfとxmlns(default)が同じになってしまう。いろいろ試してみてようやくたどり着いたのが

  $xml  = XML::LibXML::Document->new('1.0', 'UTF-8');
  $root = $xml->createElementNS($DEFAULT_NS, 'RDF');
  $root->setNamespace($RDF_NS, 'rdf', 1);

なるほど、createElementNS()はXMLノードのデフォルトネームスペースを設定するAPIだったのね・・・。昨日の夜から今朝にかけて2時間半はたっぷり悩みました。とほほ。

    このエントリーをはてなブックマークに追加 mixiチェック


お昼はスパゲティの残りに茄子を足して、またスパゲティ。茄子のトマトソース、うまいなぁ。



    このエントリーをはてなブックマークに追加 mixiチェック


漫画喫茶で「クロサギ」と「ストーンオーシャン」を合わせて15冊読んできました。だいぶリフレッシュ。電磁波の浴び過ぎかなぁ。さー、仕事しよ。



    このエントリーをはてなブックマークに追加 mixiチェック


手持ち無沙汰というか、つまんないというか、な~んか微妙な気分なのでどこか出かけようかなぁ。人と会いたい気もするんだが、こういうときは一人でぼ~っとするのが吉のような気がする。誘ってくれるなら行くけど!(こういうこと書くとストーカーだけしか反応しなくて落ち込む)



    このエントリーをはてなブックマークに追加 mixiチェック


一段落ついたっぽい。あちらさんでテスト中。



    このエントリーをはてなブックマークに追加 mixiチェック


なんか数日前からスイッチが入ってしまったので時折ギターを取り出してStand By MeをJohn Lennonキー(A)で弾きながら歌いまくり。ひさしぶりだな、なんか。



    このエントリーをはてなブックマークに追加 mixiチェック


おなかが減ったので家にあるもので簡単スパゲティ。タマネギとニンニクと豚ひき肉を炒めて、トマト缶をどばどばーっと。あとはオレガノ、クローブ、塩、胡椒で香りと味付け。15分で出来上がり。


スパゲティができてわーいわーいと食べていたら地震。ずいぶん長い事揺れてたなぁ。



    このエントリーをはてなブックマークに追加 mixiチェック


なんか思い立ってXML::RSS::LibXMLでRSSを作成する機能を作り始めてしまった。とりあえずRSS2.0はできたけど、RSS1.0は結構難しいのでまだできない。メームスペースとかあると面倒くさいねぇ。


とりあえず1.0ができたらリリースしちゃおうかな。



    このエントリーをはてなブックマークに追加 mixiチェック


うきゃーーーXangoが使われてるよ。


ど、ドキュメント書きます・・・。っていうか、ProcessorもCPANに出すべきかなぁ。robots.txtとかの処理も面倒くさいもんな。



    このエントリーをはてなブックマークに追加 mixiチェック


cpansearch.bulknews.netでうっかりみたらXML::RSS::LibXMLが使われてるのに気づいたのでちょっと細かい修正とかを入れて先ほど0.07アップロード。0.06から一部XML::RSSより使いやすいと言える部分がちょっと出てきたのでこの調子でXML::RSSを駆逐したい、とか思う今日この頃。ま、とはいえすぐにポートできるような機能なんだけどね(<foo attr="bar">baz<foo>をまともにパースできるってことだけ)



    このエントリーをはてなブックマークに追加 mixiチェック


メールが来たのでそれにそって「24」のシーズン2を裏で流しながらちょこちょこ修正。あとはどうもフロントエンド側でやってくれそうな気がするのでこちらとしてはあとは基本的に統合テストに備えて作業ですなー。


ちなみにもらってきたメカブは250gだった(どちらにしろたっぷり)。今朝もたくさん食べた。この間友達の家に行ったときにもらってきた出汁醤油をつかってうまうま。



    このエントリーをはてなブックマークに追加 mixiチェック


返事がないのと、ちょっと飽きたのと、腹が下ってるのでYAML::XSについてでも考えてみようかなぁ。とりあえずノートに環境だけは作ってみようっと。



    このエントリーをはてなブックマークに追加 mixiチェック


めかぶをもらってきたので早速めかぶたっぷりスープ。なんせ500グラムも乾燥めかぶがあるのでたっぷり贅沢に使える。マグカップにめかぶを大量に入れてお湯を注ぎ、あとは少量の醤油で味を整える。それだけかんせーい。


あといい加減茄子がへたりそうなので軽く炒めて砂糖と味噌で味付け。うまー。



    このエントリーをはてなブックマークに追加 mixiチェック


開発してたら突然



DateTime::Format::HTTP->parse_datetime($hoge)

がコアダンプを吐くようになった。しかもgdbで見るとpp_leavesub()なんてところでエラーになっててわけがわからん状態。エラー条件がtime_zone => '+01:00'とかが指定されてるかどうかなのだけどXSでそんなへんな事してないはずだしなぁ、と思ってデバッグしてた。


結果的にはどうもDateTime::TimeZoneをCVSからインストールしたあとまたCPANからインストールした時にUNINST=1を指定しなくて古いファイルが残ってたのが問題みたい。perldoc -l DateTime::TimeZoneして、パスを探してからrm -rf, force install DateTime::TimeZoneしたらなおった。


不思議な問題だったなぁ。



    このエントリーをはてなブックマークに追加 mixiチェック


リブート機能つくってみたー。しかしあいかわらず連絡取れず。



    このエントリーをはてなブックマークに追加 mixiチェック


テストテスト。



    このエントリーをはてなブックマークに追加 mixiチェック


だららら。



    このエントリーをはてなブックマークに追加 mixiチェック


今さっき新日記才人用のBuild.PLを書いてたら結構色んな物使ってるなぁ、と。



requires => {
'mod_perl2' => '2.0.0',
'Apache::Session::Wrapper' => 0, # patched manually by me
'Apache2::Request' => 0,
'Cache::FastMmap' => 0,
'Class::Singleton' => 0,
'Class::DBI' => '>= 0.96',
'Class::DBI::AbstractSearch' => 0,
'Class::DBI::LazyInflate' => 0,
'Class::DBI::Loader' => 0,
'Crypt::CBC' => 0,
'DateTime' => 0,
'DateTime::Format::HTTP' => 0,
'DateTime::Format::Pg' => 0,
'DateTime::Format::W3CDTF' => 0,
'Exception::Class' => 0,
'HTML::Mason' => '>= 1.30',
'HTML::Parser' => 0,
'HTML::Prototype' => 0,
'JSON' => 0,
'Mail::Address' => 0,
'Mail::Mailer' => 0,
'Proc::Pidfile' => 0,
'Xango' => '>= 0.07',
'XML::Atom::Client' => 0,
'XML::RSS::LibXML' => 0,
'XMLRPC::Lite' => 0, # patched by me
'YAML' => 0,
}

あれ、そういえばApache::Session::WrapperのパッチをDaveに送ったはずなんだけどなぁ。忘れられてるのかな。



    このエントリーをはてなブックマークに追加 mixiチェック


離婚してましたかー。っていうか多分あのあけっぴろげ(芸かもしれんけど)な人とおぼっちゃまじゃ無理だろ。無理無理。



    このエントリーをはてなブックマークに追加 mixiチェック


ドキュメンテーションとリブート関連のコーディング。ドキュメントはレビューに出して、ついでに色々細かい整理。


こっそり日記才人で「複数日記一気投票」機能つけてみた。



    このエントリーをはてなブックマークに追加 mixiチェック

このページのトップヘ