2003年9月2日
addfilter
っていうのが、どこかにあったはずですよ。 一歩さん(http://member.nifty.ne.jp/ippo/s_d200309.html#d2_t3,一歩さん)。でもこれは特定の日にフィルターをあてるヤツだった記憶あり。
やっぱりあった。でした。
2003年9月3日
RSSとuconv
あ〜びっくりした。帰ってきてメールチェックしたら、一歩さんとをいなりさんからツッコミがあった旨、メールが数通きていたもんで。ありがとうございますm(_ _)m
では、一歩さんのおっしゃっていた、解凍後フォルダごとまとめて移動でチャレンジ。
ん〜uconvがありませんっていうメッセージはでてないようです。が、parse errorだらけ。適当に思いつくままに作ったからなぁ。そりゃ文法ただしいわけがない。
あ。文法でエラーでなくなったようですが、どうもuconv.soをおいただけではダメのような?uconv通してUTF-8でindex.rdfというファイルに吐き出させてますが、中身無し。で、uconv通さずにそのままindex.rdfに吐き出させると、もちろん文字コードはsjisのままでしょうが、RSSの文がちゃんと書き込まれている。
それともあれかな?ボクが知らない文法ミスがあったり?その可能性は大だなぁ。
あう。どうも予想的中。putsをprintにしたらうまく吐き出すようになった・・・
やっとできた。でも、あれだな。をいなりさんの作ったなんちゃってRSS出力プラグインをテンプレートを用意しなくていいように全部つめこんだだけで、あまり中身は変わってない。いや、参考にさせていただいたので、変わろうはずが無い。
・・・しまった。この書き方だと、最新日記を含む月の全トピックに対して、RSSで書いてしまふ。これはいかんな。
おや?ファイルから1行毎に読み込むのはわかるが、これを逆順に最後の行から順に読むのってreverse_eachじゃだめなのかな?
それはそうと、をいなりさんがおっしゃっていた、descriptionをいれるためには、をいなりさん作のプラグインでやっている*.topicからの読み込みでは実現しないなぁ。どうすっか。同じやり方をトレースしていたので、これじゃぁ同じものしかできんと気づいたので、再度練り上げる。
ボクにおもいつくのは、最新日記ファイル、たとえばボクの場合だとindex.html。これをそのまま読み込んでタグでマッチさせて、処理していけばなんとかなりそう?でもこの最新日記のHTMLって:HTMLでいけるのかな?どう判別すりゃいいんだろ。
RSSとして処理するだけならともかく、ndiary.confで設定してあるMAX_DIARYの数の分だけ最新日からその日数分読み込むのをどうするかで悩む。悩む悩む。
ん〜む、ちょっと前進。
@maxDiaries = @diary.config['MAX_DIARY'] if @diary.config.key?('MAX_DIARY')
@diaries = @diary.allDiaries.keys.sort.reverse[0...@maxDiaries]とすることで、最新日記の日付から数えて、MAX_DIARY日分の日付を取得できる、と。そんで、その日付ごとにlogDirectoryを開く。さぁ、ここからが問題だ。1行毎に読み込んでみましょう。そんで、その配列をどう処理するか。行頭記号から始まる要素がタイトルで、改行が入るからその次の要素がまぁdescriptionにすればいいか、なんて簡単に考えてたのですが。どうやってとりだすかでストップ。
arr_topics.each_index{|index|
if /[○●◎□■◇◆△▲▽▼☆★](.*)\[.*\]/ =~ arr_topics[index].to_s then
topics << [arr_topics[index],arr_topics[index+1]]とか、やってみたけど。
[["■RSSとuconv[nDiary]"],nil]という結果に。まぁ、正規表現とか文法の問題で、タイトルはなんとかなりそうだけど、そのあとに続くdescriptionがどうしても抜き出せん。Array[title,description]って具合でうまく抜き出したかったのだが。限界です。ヘルプ版のリファレンスマニュアルとたのしいRubyをひもといてやってみたけども、もういっぱいいっぱいです。Rubyでおなかいっぱい。
やはりおとなしくnot様による本家での対応を待つとしましょうか・・・
2003年9月4日
onDiary
バージョンアップしてみたのでテスト。
おや?念のため、最初に「-nonet」付で生成してみたけどもその場合は
-- nDiary version 0.9.3 --
CHK; cannot read cahce. FILE; ./bookcache/amz/isbn4091868762.txt
CHK; cannot read cahce. FILE; ./bookcache/bk1/isbn4091868762.txt
CHK; cannot read cahce. FILE; ./bookcache/esb/isbn4091868762.txt
CHK; cannot read cahce. FILE; ./bookcache/ash/isbn4091868762.txt
CHK; cannot read cahce. FILE; ./bookcache/jbk/isbn4091868762.txt
CHK; cannot read cahce. FILE; ./bookcache/kin/isbn4091868762.txt
CHK; cannot read cahce. FILE; ./bookcache/sky/isbn4091868762.txt
Filter error: 'price'
CHK; ISBN; 4-09-186876-2
CHK; reviewlink; ISBN4-09-186876-2
CHK; cannot read cahce. FILE; ./bookcache/amz/isbn4091868762.txt
WAR; maybe data-error, no-title.
CHK; cannot read cahce. FILE; ./bookcache/bk1/isbn4091868762.txt
WAR; maybe data-error, no-title.
CHK; cannot read cahce. FILE; ./bookcache/esb/isbn4091868762.txt
WAR; maybe data-error, no-title.
CHK; cannot read cahce. FILE; ./bookcache/ash/isbn4091868762.txt
WAR; maybe data-error, no-title.
CHK; cannot read cahce. FILE; ./bookcache/jbk/isbn4091868762.txt
WAR; maybe data-error, no-title.
CHK; cannot read cahce. FILE; ./bookcache/kin/isbn4091868762.txt
WAR; maybe data-error, no-title.
CHK; cannot read cahce. FILE; ./bookcache/sky/isbn4091868762.txt
WAR; maybe data-error, no-title.
CHK; cannot read cahce. FILE; ./bookcache/rcm/isbn4091868762.txt
CHK; reviewlink; ../topics/200309.html#04_t1_1
make '../../../topics/200309.html'
CHK; ISBN; 4-09-186876-2
CHK; reviewlink; ISBN4-09-186876-2
CHK; cannot read cahce. FILE; ./bookcache/amz/isbn4091868762.txt
WAR; maybe data-error, no-title.
CHK; cannot read cahce. FILE; ./bookcache/bk1/isbn4091868762.txt
WAR; maybe data-error, no-title.
CHK; cannot read cahce. FILE; ./bookcache/esb/isbn4091868762.txt
WAR; maybe data-error, no-title.
CHK; cannot read cahce. FILE; ./bookcache/ash/isbn4091868762.txt
WAR; maybe data-error, no-title.
CHK; cannot read cahce. FILE; ./bookcache/jbk/isbn4091868762.txt
WAR; maybe data-error, no-title.
CHK; cannot read cahce. FILE; ./bookcache/kin/isbn4091868762.txt
WAR; maybe data-error, no-title.
CHK; cannot read cahce. FILE; ./bookcache/sky/isbn4091868762.txt
WAR; maybe data-error, no-title.
CHK; cannot read cahce. FILE; ./bookcache/rcm/isbn4091868762.txt
CHK; reviewlink; topics/200309.html#04_t1_1
make '../../../index.html'
make '../../../topics/topics2003.html'
make '../../../topics/books.html'
make '../../../topics/ndiary.html'
make '../../../topics/pda.html'
make '../../../link.html'
make '../../../bibliomania.html'
make '../../../topics/all_topics.html'
finish. (1.712662sec.)で、次ぎ。「-nonet」無しで生成。以下の如し。
CHK; cannot read cahce. FILE; ./bookcache/amz/isbn4091868762.txt
CHK; access; http://www.amazon.co.jp/ -> 4-09-186876-2
NDiaryFatalErrorだった。まぁ、いいか。
RSS出力
さぁ、再度考えてみよう。昨日はほぼこれのために徹夜してしまったので、ちゃんと寝た今日ならば(*1)、少しはまともに思考能力がはたらくやも。
えーと。昨日は、
@maxDiaries = @diary.config['MAX_DIARY'] if @diary.config.key?('MAX_DIARY')
@diaries = @diary.allDiaries.keys.sort.reverse[0...@maxDiaries]として、最新日記の日付から数えてMAX_DIARY日分だけ、logDirectoryから*.diaryファイルを読み込んで、なんとか処理しようとして、困っていた。
それ以上はボクには考えても、無理っぽいので、上記の方法で最新日記の日付から数えてMAX_DIARY日分取得したら、その日付とfilter側で:onedayとか:AFTER_TOPICとか:AFTER_Pとかからの日付でつき合わせてやりゃ、もっと簡単にdescriptionがひっこぬけるかな?
そんで、トピック一つづつに対して
20030905 title descriptionとかって風に、処理して、適当な拡張子つけてファイルに書き出す。それをプラグインで読み込み、RDFにはきださせる?やってる流れは、リンク集生成のfilter/pluginと同じでいけるんかな?
ん〜む。filterでファイルに吐き出すのはできた。それをプラグイン側で読み込んで*.rdfに吐き出すのがうまくいかんな。できればテンプレートを用意しないでそのままfilter/pluginで完結するようにしたいんだが。
2003年9月5日
続RSS
まだやっとります。手に負えないような気もしてきたので、おとなしく小人さん達の手にまかせてしまおうか。
結局、filterだけで完結するように書き換え中。あ。エラーだ。
undefined method 'each_index' for "":Stringだって。形式がちがうっていってんのかなぁ。よくわかんないや。
あと少しでできあがる。はず。最後の所で、#{}に文字が入らん。ここさえうまくいけば、あとはUTF-8で*.rdfに書き出すだけなのに。なのになのに。
限界です。なんでうまくいかないんだろ〜。
class Filter
def rssp(str, type)
require 'uconv'
@topic_arr = []
@tp_arr = []
@arr = []
topiclist = ''
topics = ''
#最新日記からM数えてAX_DIARYの日数分の日記の日付を取得
@maxDiaries = @diary.config['MAX_DIARY'] if @diary.config.key?('MAX_DIARY')
@diaries = @diary.allDiaries.keys.sort.reverse[0...@maxDiaries]
@diaries.each{|d|
case type
when :ONEDAY
#行頭記号から始まるトピックスとその後に続く最初のパラグラフの1行目にマッチさせる
str.scan(/^[○●◎□■◇◆△▲▽▼☆★](.*)\[.*\]\n\n(.*)$/){
if @diary.date == d then
topic_description = $2[0...40].chomp
@tp_arr << @diary.date + "\t" + $1 + "\t" + topic_description + "\t"
end
}
end
}
#各トピックスに番号を振る
@diaries.each{|d|
arr = ''
i = 0
@tp_arr.each{|elem|
if elem[0...8] == d then
i += 1
@arr << elem + i.to_s + "\n"
end
}
}
#RSSのタグをつける
@arr.each{|elem|
date, title, description, tpnum = elem.chomp.split(/\t/)
topic_url = "http://aturust.com/topics/#{date[0..5]}.html##{date[6..7]}_t#{tpnum}"
topiclist << " <rdf:li rdf:resource=\"#{topic_url}\" />\n"
topics << " <item rdf:about=\"#{topic_url}\">\n"
topics << " <title>#{title}</title>\n"
topics << " <link>#{topic_url}</link>\n"
topics << " <description>#{description}</description>\n"
topics << " </itme>\n"
}
#RSS全文に仕上げる
update_time = Time.now.strftime('%Y-%m-%d')
rss = <<RSS_END
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1"
xmlns:sy="http://purl.org/rss/modules/syndication/"
xml:lang="ja">
<channel rdf:about="http://http://aturust.com/index.rdf">
<title>猫小屋</title>
<link>http://aturust.com/</link>
<description>日々平々凡々</description>
<dc:creator>猫旦那</dc:creator>
<dc:language>ja</dc:language>
<dc:date>#{update_time}</dc:date>
<items>
<rdf:Seq>
#{topiclist}
</rdf:Seq>
</items>
</channel>
#{topics}
</rdf:RDF>
RSS_END
#*.rdfファイルにUTF-8で書き出す
open(@diary.outputDirectory + 'index.rdf', 'w'){ |f|
f.print Uconv.sjistou8(rss)
}
end
endと、いう具合になっとります。で、問題の部分はrss〜RSS_ENDまでの間の#{topiclist}と#{topics}に文字がはいってくれないことですな。つまり結果としては以下のようになるのです。
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1"
xmlns:sy="http://purl.org/rss/modules/syndication/"
xml:lang="ja">
<channel rdf:about="http://http://aturust.com/index.rss">
<title>猫小屋</title>
<link>http://aturust.com/</link>
<description>日々平々凡々</description>
<dc:creator>猫旦那</dc:creator>
<dc:language>ja</dc:language>
<dc:date>2003-09-06</dc:date>
<items>
<rdf:Seq>
</rdf:Seq>
</items>
</channel>
</rdf:RDF>で、をいなりさんがつくったような、*.topicファイルからdescription無しのもをいなりさんのを参考に作ったのですが、そっちではうまくいった。最後の部分のrss〜RSS_ENDそのままコピーしてきたのになぁ。
2003年9月6日
角川文庫
角川文庫版の横溝正史氏の本を以前より収集していたが、なんとなく整理してみようと思い立ち、 横溝正史エンサイクロペディア(http://member.nifty.ne.jp/jiichi_kakeya/ys_pedia/ys_pedia_index.html,横溝正史エンサイクロペディア)から角川文庫のリストをダウンロードし表紙絵をHPでみつつ、自分のもってる本を一冊づつチェック。
飽きた。表紙絵をjiichiさんとこからまるごといただくのもアレなので、自分のもってる本の表紙をスキャナで取り込んでみる。とりあえず、必要な書誌情報をエクセルにてりスト化しておいて、表紙の画像とあわせて、後々Hikiにでもつっこむか。
2003年9月7日
The INUGAMI CLAN
- The Inugami clan―A gothic tale of murder from Japan’s master of crime: 本: Seishi Yokomizo,Yumiko Yamazaki by Seishi Yokomizo,Yumiko Yamazaki" />
Amazon.co.jp: The Inugami clan―A gothic tale of murder from Japan’s master of crime: 本: Seishi Yokomizo,Yumiko Yamazaki - 著Seishi Yokomizo
- 訳Yumiko Yamazaki
- ISBN4-925080-76-8
- 発行ICGミューズ出版
- 発売日2003.4
- 価格\1,680
- 説明戦後間もない信州。戦前から「製薬王」として名を馳せた犬神佐兵衛が他界し、遺言状が遺される。過熱した相続合戦が凄惨な殺人事件に−。探偵の金田一耕助が事件解決のためにやって来る。横溝ミステリーの真髄を初英訳。
先週末、仕事の帰りにとある大きい本屋に寄って、『犬神家の一族』の英語版を買ってきたのを忘れてて、バッグに入れっぱなしだったのを思い出し、取り出してパラパラとめくってみる。佐清、佐武、佐智がそれぞれ「Kiyo」「Take」「Tomo」になっている。Suketakeとかじゃ発音しづらいからかな?日本語版での小説はたっぷり読み込んでいるから、英語が多少わからなくとも、多分読み進められるだろうと思われ。
さすが洋書。bookstore_xにかけてみたがamazonにも無いし、題はエラー。そりゃ当然か。オンライン書店になければ書誌情報はひっぱってこれんし。
2003/09/09追記:
ISBNコードの記述ミスだったのがエラーの原因だった。でも正しいISBNコードを書いてもamazonからは書誌情報を間違って引っ張ってきている。洋書だから?書誌情報も体裁がちがうのかな?
2003年9月8日
ISBNコードとか
先日より、角川版の金田一シリーズの整理をしている。昭和40年代とか50年代からものなので、まだISBNコードが普及してないころの本がおおく、ちがうコードが書いてある。これは角川独自の管理用の出版コードか何かなのか?
たとえば。横溝正史氏の金田一シリーズには『夜歩く』という本がある。うちには昭和52年6月30日付の21版と昭和62年11月20日の36版がある(*1)。21版は『0193-130407-0946(2)』であり36版は『ISBN4-04-130407-5』である。もちろん、ISBNコードの方はオンラインで紹介・解説してるサイトがあるのでご存知の方もいらっしゃるだろうが、グループ記号 - 出版者記号 - 書名記号 - 検査数字となっている。でも、古いほうの21版にあるようなコードは?出版社記号は一致してるのでそれとわかるが、それ以外についてはわからない。
ちょっと気になるので調べてみるか。とりあえず検索してみて参考になりそうなところを羅列。明日にでもゆっくり読みに行って見ることにする。
日本図書コード(http://member.nifty.ne.jp/rain/misc/isbn.html,日本図書コード)
ISBN(http://member.nifty.ne.jp/Fe/other/ISBN.html#publisher,ISBN)
通信用語の基礎知識(http://www.wdic.org/?word=ISBN+%3ACUL,通信用語の基礎知識)
2003年9月9日
コードとか
有里さんからのツッコミをいただいたので、昨日の日記に書いたコードがなんなのかが判明。ありがとうございましたm(_ _)m
で、早速見に行ってきました。おかげで書籍コードがどうなってきたのかがわかりました。
日本では、1970年から日本書籍出版協会と日本出版取次協会が制定した日本独自の書籍コードと呼ばれるコードを使用していましたが、1981年からEANコードに基づく日本図書コードに移行しはじめ、書籍コードは1983年に廃止されました。その後、1991年からは、日本図書コードをJANコード体系に割り付け、さらにコンビニエンス・ストアーなどで用いられているPOSシステムで扱えるように、書籍の分類や定価を入れたバーコードを2段目に印刷するようになりました。これらを書籍JANコードと呼びます。
CyberLibrarian(http://www.asahi-net.or.jp/~ax2s-kmtn/index.html,CyberLibrarian)内の バーコード(http://www.asahi-net.or.jp/~ax2s-kmtn/bcodes.html,バーコード)より。
いくつか読んでみると、書籍コードは1970年に始まり1981年からはISBNと書籍コードを合わせた図書コードに変わっているようだ。1970年というと昭和45年か。昭和45年以前の版とかだとコードがなくなるんかなぁ。なかなかこういう見方もおもしろいですな。
今回の調べで、現行の図書コードがどうなってるのかが分かった。通常、書籍の裏表紙には2段のバーコードとISBNから始まるISBNコード、Cから始まる分類コード、¥からはじまる価格コードの4つからなる。上記のCyberLibrarian中に絵付きで詳細が解説されているが、こちらにも紹介がてら載せてみる。まるごと引用するのもアレなので、手元にあったハチクロからスキャナでとりこんでやってみる。
■現行の図書コード[Memo]
- @書籍JANコード(上段)
- 例のハチクロ5巻では9784088651392です。
- 『フラッグ-ISBN-チェックデジット』という構造。
- フラッグ(3桁):978はEANコードで決められている書籍JANコードであることを表す。
- ISBN(9桁):408865139はISBNからチェック・デジットを除いた番号を表す
- チェックデジット(1桁):数字の間違えをチェックするための数字またはアルファベット
- A書籍JANコード(下段)
- 例のハチクロ5巻では1929979004002です。
- 『フラッグ-分類コード-価格コード-チェックデジット』という構造。
- フラッグ(3桁):191または192で始まる数字で表される。消費税が3%(内税)から5%(外税)に改正された時(平成9年4月1日)に「191」から「192」に変更された
- 分類コード(4桁):9979は日本図書コードの分類コード(Cコード)です。この場合、最初の1桁目が9なので雑誌扱いということを意味しています。
- 価格コード(5桁):00400は定価を表しています。この場合は400円。
- チェックデジット(1桁):2
- BISBN
- 例のハチクロ5巻ではISBN4-08-865139-1です。
- ISBN(International Standard Book Number)は『グループコード-出版社コード-書名コード-チェックデジット』から成ります。
- グループコード(1桁):日本語圏の場合が4です。
- 出版社コード:出版社によって桁数がかわるようです。08は集英社を表しています。詳細はの チロリン徒然草(http://chiro-h.hp.infoseek.co.jp/essay.html,チロリン徒然草)で解説があります。
- 書名コード:出版者が割り与えられている範囲内でその書籍に与える番号です
- チェックデジット
- C分類コード
- 例のハチクロ5巻ではC9979です。
- 『フラッグ-販売対象コード-発売形態コード-内容コード』で表されます。
D価格コード
頭に「\」がついている場合は消費税5%(外税)で、「P」がついている場合は消費税3%(内税)を意味します。最後の「E」はコードの終わりを示しています。
なんだか見栄えよろしく無いな。別のページにまとめよう。
作成中で、まだ中途半端なのだけども、とりあえず アップ(http://aturust.com/bookcode.html,日本図書コード)
2003年9月10日
書籍コード
先日の日記に、画像入りでネットで収集した情報について書いておいたら、どうも見栄えがよくないので、別ページにて作成。まとまりきらん。つーか、いろいろなサイトで解説はあるが、過去から現在にいたるまでの流れとか各コードを網羅していたり、といったような総説的サイトがないので、 書籍コード(http://aturust.com/bookcode.html,書籍コード)を作る時に、あちこちのページを見に行くのがめんどくさい。いっそのこと図書館にいって、司書の偉い人に講義をぶちかましてもらうか。
そんなコネはないが。
まだ作成中ですが、放置してはいません。ちゃんと進めてますよ。あ、に拾われてる。どうもありがとうございます。励みになるっつーか、後に引けないっつーか。いやいや、ちゃんと形にして残しておかねば。
まだ、内容も全部書ききれてないし、スタイルシートも考えてないので大変お見苦しいかと思われますが、気長にお待ちくださいませ。
2003年9月14日
書籍コード更新
やっぱり、旧書籍コードの件が気になるので、ネットで検索。多少は情報があるものの、まとまったものがなかったように見受けられる。しょうがないので、図書館まで行って、本を探して来ました。みつかったのは2冊。
・コードが変える出版流通 ISBNの全て
・出版事典
旧書籍コードに関しては、出版事典の方にまとめてコードが載っていたのでコピーのみ。実際に借りて帰ってきたのは前者の2冊です。にまとめた内容が、かなり詳細に解説されていました。今日は、この本に載っている情報と、コピーしてきた旧書籍コードについてを追記しておきました。よかったら何かの参考にしてやってくださいまし。これで、気になっていたものが大体すっきりしました。この本には雑誌コードについても記載があるから、もしかしたら近日中にさらに追記するやも。
RSS出力
掲示板に一歩さんが書き込んでくれてたことに今気づきました。どうも申し訳ない。
で、遅いレスですが、えっと。うちではトピックスを拾えてるのはまちがいないようなのです。uconvに通す前に
print topiclistとかいれてみると
-- nDiary version 0.9.3 --
<item rdf:about="http://aturust.com/topics/200309.html#12_t1">
<title>書籍コード</title>
<link>http://aturust.com/topics/200309.html#12_t1</link>
<description>一応 書籍コード(http://aturust.com/book</description>
</itme>
<item rdf:about="http://aturust.com/topics/200309.html#14_t1">
<title>書籍コード更新</title>
<link>http://aturust.com/topics/200309.html#14_t1</link>
<description>やっぱり、旧書籍コードの件が気になるので</description>
</itme>
make 'c:/www/aturust/public_html/topics/200309.html'
<item rdf:about="http://aturust.com/topics/200309.html#14_t1">
<title>書籍コード更新</title>
<link>http://aturust.com/topics/200309.html#14_t1</link>
<description>やっぱり、旧書籍コードの件が気になるので</description>
</itme>
<item rdf:about="http://aturust.com/topics/200309.html#12_t1">
<title>書籍コード</title>
<link>http://aturust.com/topics/200309.html#12_t1</link>
<description>一応 書籍コード(http://aturust.com/book</description>
</itme>
make 'c:/www/aturust/public_html/index.html'
make 'c:/www/aturust/public_html/topics/topics2003.html'
make 'c:/www/aturust/public_html/topics/books.html'
make 'c:/www/aturust/public_html/topics/ndiary.html'
make 'c:/www/aturust/public_html/topics/pda.html'
make 'c:/www/aturust/public_html/link.html'
make 'c:/www/aturust/public_html/bibliomania.html'
make 'c:/www/aturust/public_html/topics/all_topics.html'
finish. (10.297sec.)
CHK; reviewlink; ISBN4-09-186876-2
CHK; reviewlink; ../topics/200309.html#04_t1_1
CHK; reviewlink; ISBN4-925080-76-8
WAR; maybe data-error, no-title.
CHK; reviewlink; ../topics/200309.html#07_t1_1
CHK; reviewlink; ISBN4-10-771113-7
CHK; reviewlink; ../topics/200309.html#11_t1_1
と出てます。一応、これは拾えてるってことでいいんじゃないかと思ってました。ボクの勘違いでなければ。で、これを
#RSS全文に仕上げる
update_time = Time.now.strftime('%Y-%m-%d')
rss = <<RSS_END
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1"
xmlns:sy="http://purl.org/rss/modules/syndication/"
xml:lang="ja">
<channel rdf:about="http://http://aturust.com/index.rdf">
<title>猫小屋</title>
<link>http://aturust.com/</link>
<description>日々平々凡々</description>
<dc:creator>猫旦那</dc:creator>
<dc:language>ja</dc:language>
<dc:date>#{update_time}</dc:date>
<items>
<rdf:Seq>
#{topiclist}
</rdf:Seq>
</items>
</channel>
#{topics}
</rdf:RDF>
RSS_END
#*.rdfファイルにUTF-8で書き出す
open(@diary.outputDirectory + 'index.rdf', 'w'){ |f|
f.print Uconv.sjistou8(topiclist)
}に展開させようとすると空っぽ。これの1行前でprint topiclistとかprint topicsてやるとちゃんと拾えてる風な感じでメッセージでるのに、RSS_ENDまでの中には入ってくれんのです。
2003年9月15日
rssp.rb
しかしあれです、半端知識で確度の無い事をほざいてるので、
公開されてる日記よりはこっそりメールでごにょごにょしたいなあとか(笑)
まったくおっしゃるとおり(笑)ボクも冷静なときは、そう思っててメールで聞いてみようかな〜とか思うのですが、一度プラグインとかフィルターをいじり始めると、ボクは一歩さんよりも知識が少ないので、たいがいうまくいかないのです。そんで、はじめてしまうとうまくいくまでやめられない性分なので、やってる間はほぼ常にとさかにきてる状態でして。
で、「ちくしょーうまくいかねーよ、コンチクショウ」とかいって、勢いでここまでの流れ日記にアップしてやる〜ってな具合。
メールはですね、の方へよろしくお願いします。
あれこれ書き換えてみたけどうまくいかんなぁ。そもそも拾えてるようなに、入ってくれないんじゃ、限られたボクの知識ではもう手の打ちようが無い。しょうがないから一からチェック。最新日記から数日分ひろえてるかどうかはおいといて、とりあえずトピックスとかがひろえてるか見てみた。
case type
when :ONEDAY
#行頭記号から始まるトピックスとその後に続く最初のパラグラフの1行目にマッチさせる
str.scan(/^[○●◎□■◇◆△▲▽▼☆★](.*)\[.*\]\n\n(.*)$/){
topic_description = $2[0...40].chomp
@tp_arr << @diary.date + "\t" + $1 + "\t" + topic_description + "\t"
}
end
この後RSSタグをつけると以下のようになる
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#01_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#01_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#02_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#02_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#03_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#04_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#04_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#04_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#05_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#06_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#07_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#08_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#09_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#09_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#10_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#10_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#11_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#11_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#12_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#14_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#14_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#15_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#15_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#14_t" />
<rdf:li rdf:resource="http://aturust.com/topics/200309.html#14_t" />なんでか、最新日記から2日分(つまりMAX_DIARY=2と設定している分)を最後に繰り返している。なんでじゃ。そういう仕様だっけ?それともボクが書き間違えてんのかな?そういやpick_ip_link.rb(日記中のリンクをひろうフィルタ)でも同じことがおこってたなぁ。
と言ってる間に、一歩さんとnotさんからご指摘いただいた。多謝。とりあえず、ここらでとめておかないと本末転倒的に明日遅刻or欠席なんてハメになりそうだから、課題は明日へ・・・って今夜に持ち越しってことにしておこう。ひとまずはnotさんのおっしゃっていた、@diaryをLastDiaryかPastDiaryかを判別する方法を調べる也。
!!!もう notさん(http://www14.cds.ne.jp/~not/tawagoto/200309b.html#15_t2,nonsense talk)がフィルタ書き上げてんじゃん!!早っ。あぁあぁあぁあぁ・・・・今すぐ解読したいが、もう寝ないと明日遅刻するはず。いやすでにギリギリアウトかも。また、今夜にしよう。
2003年9月16日
RSSフィルター
美しい・・・(http://www14.cds.ne.jp/~not/tawagoto/200309b.html#15_t2,nonsense talk)。ボクも自分であれこれ考えて作ろうとしていたので、大変感動しましたです。読んでみましたが、全部解釈しきれないなぁ。まだまだ未熟ってことか。return unless @diary.kind_of?(LastDiary)で最新日記だけひっかけて、:TOPICとか:ONEDAYとかから必要な情報をぬきだす、ということかな?
長さが400固定なのはカスタムできるようにしない?
というかRDFの規定があるのか?
一歩さんより
そういう規定があるわけじゃないはず。channel内の各rdf li・・・に対する説明がitem内のdescriptionという認識なので別に文字数に制限はないはず〜。その辺は RSSによるサイト情報の要約と公開(http://www.kanzaki.com/docs/sw/rss.html,RSSによるサイト情報の要約と公開)に詳しく構造が解説されてますです。
filter/rss.rbを一部修正。今のところボクは毎日日記を更新してますが、いつまたとぎれとぎれになるかわからんので、以下のようにしてみた。
<sy:updatePeriod>daily</sy:updatePeriod>
<sy:updateBase>#{@diary.instance_eval{@now}.strftime('%Y-%m-%dT%H:%M:%S+09:00')}</sy:updateBase>
↓
<dc:date>#{Time.now.strftime('%Y-%m-%d')}</dc:date>定期的に更新するならば、どういうタイミングで更新するのか?また、次回更新予定時間を算定するために前回更新したのはいつなのか?をかくのが上記syの2行。でも、毎日必ず更新できるとはいえないので、dc:date、つまり最新更新日のみ記述するようにした。上で紹介したサイトだけみてるので、もしかしたら現在のRDF(RSS)と一部違う部分があるかも。
もうちょっと調べてみる必要がかるかな。
で、上記サイト中に RSS Validate(http://feeds.archive.org/validator/,RSS Validate)ってのがあったのでチェックしてみた。2行ほど変だといわれたので、その通りに訂正して完了。
2003年9月17日
RSS
ちはやさん(http://sein.pobox.ne.jp/nowhere/diary/200309b.html#d16_t3,ちはやさん)も試しておられたですか・・・結局、ボクがやってたアレは、とあるお人によると、トピックとかが抜き立たせた風な挙動ですが、単にポインタが渡されてただけなので最終的に空っぽで出力されてたのでは?ということで。
でも、ボクもnotさんの美しいブツを見たらそっちが気に入ってしまったので、自分でやってたのはうっちゃってます。
って、 nDiaryUserWiki(http://sein.pobox.ne.jp/nowhere/cgi-bin/hiki/hiki.cgi?FrontPage,nDiaryUserWiki)に補足されてるじゃないか!びっくりした〜。あんな中途半端なものをひろっていただけたとは。うれしいやら悲しいやら?次になんか書くときは、ちゃんとしたものが残せるようにがんばりませう。nDiaryのえらいひととちょっとおちかづきになれたことですしもうちょっとレベルアップしたい自分。
notさん(http://www14.cds.ne.jp/~not/tawagoto/200309b.html#16_t1,nonsense talk)が修正版をだされているが、ちょっと自分で中身を書き換えているのでそのまま上書きしないように、ダウンロードはもすこし待っとこう。
2003年9月18日
CSS
ちょっと、CSSを変更。 MAX DESIGN(http://www.maxdesign.com.au/,MAX DESIGN)を参考に、左右2段組に見えるように(*1)書き換えてみた。
nDiaryアレコレ
ここのところ、RSS出力フィルタ作成や、CSSいじりであまりアンテナをチェックしてなかった。といっても、今週はですが。さっきCSSも大体できあがったので、恒例のアンテナ巡り。
楠見さん(http://www1.skz.or.jp/~kusumi/klee/notiz/200309.html#d18_t1,klee-Notiz)のおっしゃるRSSはrdfが推奨ってことでしたらndiary.confでRSS_FILENAMEを・・・.rdfにしておけば良いですよ。ボクはそうしとります。link_rel.rbはなんででしょうねぇ。title_formatを『%04d年%d月』ではなく『%Y年%0m月』ではいかがでしょう?そういう問題ではないんだろか。
2003年9月19日
■X-MEN2[映画]
映画でなくビデオですが。なかなかおもろかった〜。3作目もつくるのかなぁ。
あ、指輪物語の2作目のレンタル開始を予告してたけど、DVDいつでるんだろう。買わな。
decorate.conf
なんとなく一歩さんが普段つかっているplugin/filterがどんなのかを知りたくなり、 ここ(http://ippo.s5.xrea.com/x/ondiary/www/decorate.html,一歩さん)を見に行ってみた。
今日は何の日?にフロド君とビルボさんが出ててニヤリとしてもうた。が、それはさておき、いろいろ一歩さんのカスタムファイルがありますなぁ。あ。今日は何の日?のフィルタミステリ版とかだれかもってないかなぁ。たとえば、『犬神家の一族』第一の殺人発生とか。『石岡さん御手洗さんと出会う』とか。まとまった推理小説があるのは横溝正史氏の金田一ものと、島田荘司氏の御手洗ものと、高木彬光さんの神津ものか。事件発生日を全部読み出すのは骨だなぁ。
2003年9月20日
今日は何の日?別バージョン
今日はずっと立ちっぱなしの仕事だったので、足がとっても痛くなり家に帰ってきてからはなるべく動きたくないのでだるだるとしていたら、それはそれで暇なので今日は何の日?御手洗版のtxtファイルをつくってた。ちょっとだるかった。
つっこみでおばたさんが教えてくださった御手洗事件年表をそのままコピーペーストでエクセルにはりつけ、ちまちまと修正し、それをちょっとRubyでtoday.rbの参照ファイルになるようなフォーマットへ変換するスクリプトを書いて仕上げた。
けども。そのままfilter/today.rbを使ってしまうと、SFカレンダーへリンクを張られてしまうなぁと思いつつ。かといって御手洗事件年表にリンクはっても日付順に書いてあるわけじゃないから、困るといった具合だ。だって、年表だもの西暦順で当然だよね。これを手元にあるMMDD(tab)date(tab)stringなフォーマットのtxtファイルを元に、SFカレンダーのようなHTMLのページを書き上げるRubyを組んで自分のサイトで晒してみるか?などと思ったり。
2003年9月21日
■booksotre_x[nDiary|本]
昨日からの続きで一歩さんがbooksotore_xを練り上げてくださったので、早速いれてみよう。なぜならば
半端で申し訳有りませんが、0.9.3でbookstore_xを利用している方は、あっちの方から、
filter/bookstore_x.rb
filter/sum_price_x.rb(使ってる人は、同期してverupしないと変になり得る)
lib/cache.rb
lib/cache_bib_tmp.rb(書店解析ダミー。bookstoreぽくなる)
lib/amazon.rb
lib/bk1.rb
ぐらいを落として修正して利用してください。すると、多少安定したり(ほんまか?)、bookstoreとの互換性があがってたり、漏れなく人身御供になったりします。
と、一歩さんとは別環境でテスターが必要だから?でも同じxreaだしなぁ。まぁネット書店巡回をかえてみればいいかな。うちではndiary.confに以下の様に書いた。
#bookstore_x用
CACHE_EXPIRE = 12
CACHE_DIRECTORY = './bookcache/'
BOOKSTORE_SHOP_LIST = 'amazon bk1 asahiya kinokuniya esbooks'
amazonとbk1だけでは寂しい気もするし、かといって今までめぐってた書店全部巡回させるのは遅いから少し減らしてみた。esbooksを使うことあるから、amazonとbk1とesbooksだけでもよさそうだが、まぁおいおい様子を見つつ。
そういえば 一歩さんのdecorate.html(http://ippo.s5.xrea.com/x/ondiary/www/decorate.html,一歩さんのdecorate.html)ではlib/cache.rbとamazon.rbとbk1.rbはリンクが.rbだけになっててファイルがなかったので、手元にあるファイルをそのまま使ってますが(*1)問題はないのかな?ちょっとこれから動かしてみよう。
忘れてた。sum_price_xのほうもディレクトリ変えなきゃいけないんだった。一歩さんは ../user/lib/以下に各ファイルを置いてらっしゃるようですが、ボクはfilterフォルダにまとめていれてまする。bookcacheはscriptと同階層にフォルダつくってありますが。
テストしてみたけどエラーがでるなぁ。変換されてないもの。
Exception 'NameError' at ./filter/bookstore_x.rb:190 - undefined 'empty?' for nil
Filter Error: 'bookstore_x'だって。あ、キャッシュディレクトリ書き間違えてら。1階層間違えて書いてた。
修正。でもやっぱりエラー出てて変換されないなぁ。debugオプション付きで日記を生成してみたが、メッセージが多すぎて肝心なbookstore_xのエラーメッセージの部分がながれてしもうた。わからん。
empty?をto_s.empty?にしてみて、日記生成。そしたら今度は途中でとまるようになった。NDiaryFatalErrorだ。to_s.empty?にする前はISBNの変換はできなくても日記生成まではできてたのに。じゃぁnil?にしてみる。だめだ同じだ。
debugオプションつけて調べてみる。今度は途中でとまるからdos窓から流れて見えなくなることはないだろう。
Exception 'TypeError' at ./filter/bookstore_x.rb:299 - faled to convert Fixnum into Stringだってさ。ちぇっ。まぁこれならわかる。
mes_str << '<a href="' + info['url_bibinfo'] + '"><img src="'+ info['image'] + '" height="' + height + '" width="' + width + '" alt="amazon" class="bookimage"></a> '
↓
mes_str << '<a href="' + info['url_bibinfo'] + '"><img src="'+ info['image'] + '" height="' + height.to_s + '" width="' + width.to_s + '" alt="amazon" class="bookimage"></a> 'と、このようにheightとwidthをheight.to_sとwidth.to_sにすればなんとかなるだろう。で、生成。
やっとうまくいった。あとはHTMLを眺めつつ表示をCSSかソースをいじって調整してみるか。ちょっとソース内のHTML部分をいじってみた。それはさておき、不要な書店分はrequire...のあたりをコメントアウトしてみたのだが、これはつまり巡回をしなくなるってことでいいのかな?でも、生成されたものをみるとコメントアウトした書店へのリンクが張られてるけどこれはタグを挿入してるだけ?
と思ったらちがった。ndiary.confで書店の順番が設定できるようになっててその順番に書店がならんでるだけだった。requireでコメントアウトしたら、書店名からリンクが張られるだけで在庫情報とかは表示されないってことか。ちょっと書店順を調整。
んむ。表示も調整完了。
■今日は何の日?御手洗版[nDiary|本]
暇な気がするので、御手洗潔事件簿のカレンダーを作成。とあるサイトで公開されていたものは年表形式の西暦順なので、今日は何の日フィルターから飛べるように年表にして、各日付のタグにname属性も突っ込んでおいた。エクセルでちまちまとデータをコピペで整形しておいて、RubyでHTMLに書き上げるものを書いて実行。ちょっと手間がかかったけども。
できあがったものは これ(http://aturust.com/mitarai.html,御手洗潔の事件簿カレンダー)です。さぁ、これから今日は何の日フィルターを見てみよう。
でけた。filter/today.rbも入れてみた。でも、今日の日付のイベントはファイル中に無いから表示はされませんが。内容はほぼ元のファイルのままなので晒しません。興味ある方は一歩さんのところからファイルを落として除いてみてください。一歩さん版はSF版なので、SF用のカレンダーへとリンクを張るようになってますが、ボクは御手洗潔事件簿カレンダーをデータだけとあるところから引っ張ってきてカレンダー的な表示で作って、自分のサイトで晒してるので、today.rb中でもそのページにリンクを張るように変えただけ、と。
2003年9月22日
filter/rss.rb
HoLYさん(http://holy.enyou.org/d/200309.html#d22_t1,HoLYさん)のおっしゃっている、dc:dateをいれるならばdc:languageの次行にでも
<dc:date>#{Time.now.strftime('%Y-%m-%d')}</dc:date>を入れれば良いですよ。とつぶやいてみた。お目にとまりますかどうか。
plugin/schedule
nDiaryUserWiki(http://sein.pobox.ne.jp/nowhere/cgi-bin/hiki/hiki.cgi?FrontPage,nDiaryUserWiki)で未公開?とかつぶやかれてしまったので、あわてて公開(笑)。すでに晒していたつもりだったんだが。
えと、元のschedule.rbは今日を基準に数日前〜数日後までの予定を、あらかじめ用意しておいたtxtファイルから読み込んで表示させるものですが、ボクは今月の予定をまとめて表示させたかったので、そうするように書き換えました。まぁ、今月の予定っつーか、うちでは今月かう予定の本の一覧になってしまってますが、txtファイルの中身を本の購入予定いがいの予定にすればなんでもありですな。以下に中身を晒しておくので、好きに持ってってくださいまし。
=begin
schedule_at.rb
日記を作成した際、同月のスケジュールを一覧表示できるようカスタマイズ。
オリジナルのschedule.rbでは今日を中心に○日前〜○日後まで、というオプション指定でしたが
このスクリプトでは、日を指定しなくても、自動的に同月のスケジュールを。
option:
format=str str は任意の文字列。以下の文字列は展開されます。
%A 曜日の名称(Sunday, Monday...)
%a 曜日の省略名(Sun, Mon...)
%B 月の名称(January, February...)
%b 月の省略名(Jan, Feb...)
%c 日付と時刻
%d 日(01-31)
%j 年中の通算日(001-366)
%m 月を表す数字(01-12)
%U 週を表す数.最初の日曜日が第1週の始まり(00-53)
%W 週を表す数.最初の月曜日が第1週の始まり(00-53)
%w 曜日を表す数.日曜日が0(0-6)
%x 日付
%Y 西暦を表す数
%y 西暦の下2桁(00-99)
%% %自身
title=str スケジュールに付けるタイトルを指定します。
exsample:
<!--plug=schedule_at?file=c:/home/www/cds/tawagoto/log/schedule.txt-->
=end
def plug(opt)
today = Time::now
tmonth = today.month
schedule = {}
opt['format'] = opt['format'] ? opt['format'] : '%0m/%0d'
begin
open(opt['file'], 'r'){ |file|
file.each{ |line|
date, value = line.split(/\t/)
date.gsub!(/[-\/]/, '')
d = Time::local(date[0..3].to_i, date[4..5].to_i, date[6..7].to_i)
dmonth = d.month
if dmonth == tmonth then
schedule[date] = [] unless schedule[date]
schedule[date] << value
end
}
}
rescue Errno::ENOENT
return '<!--plug-in error: schedule file not found-->'
end
str = ''
str << "<ul>\n"
schedule.sort.each{ |date, schedules|
t = nil
t = Time::local(date[0..3].to_i, date[4..5].to_i, date[6..7].to_i)
day = t.day #strftime2(opt['format'])
schedules.sort.each{ |line|
str << "\t<li><strong>#{day}日</strong> : #{line}</li>\n"
}
}
str << "</ul>\n"
if opt['title'] then
str = "<div class=\"schedule\">\n<p>#{opt['title']}</p>\n#{str}\n</div>\n"
end
return str
end■指輪物語[DVD]
毎度のコトながら一歩さんの所より。お礼をいわれるほどではありませんぞ〜。楽しんでおりますので。それに一歩さんにはご教授いただきましたしのう。こちらが感謝しておりますですよ。
それはさておき、指輪物語-二つの塔はレンタルは始まってますが、発売は10月1日?コレクターズエディションを予約したので、まだ入手してないんですよ。まぁ、映画見たから内容知ってるんですけどもね。小説のほうも何度となく読んだので、こう、省略しすぎだろう?と毎回思うわけですよ。
ロードスとは懐かしいですな。ちょっと本部屋から発掘してこようかなぁ。無理か。古い地層にまぎれてて所在がわからん。エルフの永遠の国って、海の向こうだったっけかなぁ。指輪物語のずっと古い時代を書いた、『シルマリル』という物語がありますが、それより前?の時代にエルフは元々海の向こうからやってきたようなことをどこかで見たような。で、時代が下って今はロスロリエンとリーベンデール(*1)魔法使い達も海の向こうからやってきたんだっけかな。シルマリルは2,3回読み返したけど毎回挫折するんだよなぁ。読みきれてない。ハードカバーでたった2分冊なんですが・・・
ちなみにボクのもってる指輪物語は評論社からでてる今の文庫版10分冊ではなく、以前の6分冊のタイプなので、文字がぎっしりです。とても読みづらくて一回目は挫折したです。
RSSアンテナ
ないのかなぁ、と思ってたらやっぱりあったんですね。RSSを集めるアンテナ。探してたんだけども、滝川さん(http://www.alles.or.jp/~spiegel/200309.html#d22_t1,辺境から戯言)経由行き。xreaにおいてみたい気もするがpure perlですか。perlってまじめに取り組んでないからわかんないなぁ。でも、いいなぁこのRSSアンテナ。
■bookstore_x[nDiary|本]
をぉ。今気づいた。今回の一歩さんの修正で、ネット書店巡回をある程度調整できるようになり、且つ毎回?日記生成するたびにちゃんとキャッシュチェックしにいってるようなので時間がかかるがデータはきちんとしてるらしい。が、毎回だと長いので、その日の最初の日記生成時だけ書店巡りさせて、2回目以降は-nonetつけて短縮〜とか思ってたらば。ISBNは変換されないんですね。知らなんだ。
2003年9月23日
filter/rss.rb
をいなりさんからのツッコミ。トピックごとにdc:dateを入れたいってのは、できるのかなぁ。nDiaryって更新日は挿入できるようになってるけど、トピックごとの更新時間ってチェックしてないよなぁ。仮にもしdc:dateを入れるならば?rdfが生成されるタイミングで一括して入れちゃうと過去数日分も同じdc:dateになってしまっておもしろくないな。ndiaryの方で、トピックごとに更新時間をいれりゃいいのか。日記を後から追記したらわかるようにってことで、そういうトピック更新時間挿入filter/pluginってのを作って・・・?
filterとして作れたならば。このフィルタより後にflter/rss.rbを登録すれば更新時刻が拾えるか。じゃぁ、そういう方向で 誰か(#ff0000)作ってくだされ(笑)
一応、自分でもやってみようと思い、作成しみたけど、良く考えりゃ、日記生成した時間を挿入しても意味ないよなぁ。生成済みの日記の更新時刻と比較して、これから生成しようとする日記が更新されていれば更新時刻を今の時間で挿入ってな具合か。こりゃボクには思いつかんな。
nDiaryあれこれ
あれこれっつーか、一歩さんへの返信だよなぁ。ロードスを本部屋の古い地層を掘り返すも見つからず。そんでツタヤにいってTRICK2借りてきて見てたので返信おくれたですよ。
bookstore_xについては、ネット巡回とかキャッシュあたりをもちっと勉強したいと思ってるのでまだまだ気が向く限りはいじりますですよ〜。表示の自由度ですか。直接中身のHTML部分をいじっちゃったから汎用性は皆無だ。その辺考えていじらないかんか。
rssについて。更新時刻についてですがCNETのrdfを見てみたけども、channelとitem要素内のdc:dateには時刻まで入っていますねぇ。やはりニュース系のサイトでは更新時刻は重要だということか。でも、一般のサイトならばニュースのようにリアルタイムな生情報ってのは必要ないだろうし、更新時刻は一般的じゃないんだろうなぁ。スラッシュドットジャパンでもやっぱり時間までdc:dateに入れてるな〜。フォーマットは ここ(http://www.kanzaki.com/docs/sw/rss.html,RSS -- サイト情報の要約と公開)にも書いてるし、YYYY-MM-DDThh:mmTZDという表記に従えば含めてもよさげ。
をいなりさんは元々RSS読みとしてトピックの更新時刻が欲しい、ということなのでrssにも仕様として更新時刻がいれられるようにできるかなぁ?と思って、『だれか』とつぶやいてみたのですが。ここ(http://www.kanzaki.com/docs/sw/dublin-core.html#rdf-dc-refine,Dublin Core: メタデータを記述するボキャブラリ)とかを見て炊けども、なんか個人運用な日記とかblog系でそんなに更新時刻いるんかいな?とか思ってちょっと萎えてきた。
といってもボクが振った話なので、とりあえず導入&動作確認。ボクのところでも動いてる。問題なし。以前も書いたようにこの先毎日更新できるか自信ないのでsyはやめてdc:dateのみにした。
あぁ・・・なんかあちこちいじってら良く分からなくなったので元の一歩さんの作られたのに戻しちゃった。時間の表現もきになるからそれをいじりたいが、そうするとupdate.rdfとの時間の比較する部分も書き換えなきゃあかんし・・・あぁ知恵熱。
一歩さん毎度すんません。早速decorateの方から落として導入しましたが、もう寝ないとやばいのでチェックは今夜にでも。ただいま3時30分。
■Amazon[ndiary|本]
指輪物語の二つの塔スペシャルエディション?とかいうのが12月に発売されるらしいので、それをAmazonで予約した。そんで、ついでにアソシエイトに加入。bookstore_x用のamazonもndiary.confで修正。
2003年9月24日
filter/rss
やっぱり(http://holy.enyou.org/d/200309.html#d24_t1,HoLY Diary)。トピックごとに欲しいんですか。それだと一歩さんのお手製のRSS改が良いでしょう。日記のトピックごとに更新時刻を入れてみたいな、と思ったのですがそれはとてもめんどくさいので。いや、ボクの手には負えないのだ。
だってだって。トピックごとに更新時刻を入れるならば、一歩さんと同様な考え方でいくのが簡単そうですが、トピックごとの更新時刻入りのファイルをどこかに吐き出しといて、次ぎの日記生成時にその各更新時刻と比較する必要がある。いやその前に日記の内容が更新されたかどうかを比較して判定しなければ。あ、でもRSSってことならばこれを最新日記だけでやればいいのか。じゃぁ、せいぜいHTMLで1ファイル吐き出したり、タグ除去したりするだけか。RSS改を見ながらやってみるか。って、これ以上踏み込むと 今日も眠れなくなる(#FF0000)のでやめておこう。
一歩さん毎度どうも〜。
update.rdfとndiary.rdfと同じようなの2つ作るけど、その部分のソースってもっとコンパクトにできないか?
ん〜・・・update.rdfではなく、nDiaryではおなじみのテキストファイルに更新時刻入りで吐き出させておくってのは?date[tab]title[tab]link[tab]descっての。そんでdateには時刻まで含むようにいれておくというのは?あぁupdate.rdfがテキストファイルに変わるだけか。ま、ソース中でタグ除去とかRSS部分は最後に一度吐き出す時に書かせるだけでよくなるくらい?
そもそものリクエストって、どうなんだろう。『トピックごとに更新時刻が欲しい』というだけだから日記中に更新時刻を埋め込んで、それを更新判定して抜き出してっていう流れはなんか効率悪い?単にボクが更新時間をチェックするならば、日記にうめこんじまうか?ってな具合で試そうとしただけで。一歩さんのRSS改が美しいかと思いますので、これでいいんじゃないかと。
後は、これをRSS読みな方々に意見承りたく。ぼくは今回の件でRSSの構造とかを勉強しただけなので。readerとかparserでRDF読んでる方々は、どういう表示(要素)が今の主流なんでしょう?
まぁ,もちろんこの際,一日の中の複数トピックの記述時刻の差は置いておくとして.:)
って、そういうを個別にチェックするならば?と考えてたからいっぱいいっぱいになってしまったわけで。
2003年9月25日
1988(昭和663)年9月25日 2晩で5人の娼婦の腹部を切開され、臓物を引きずり出されるという猟奇な殺人(切り裂きジャック・百年の孤独 ) →
filter/rss
本家(http://www14.cds.ne.jp/~not/tawagoto/200309c.html#24_t1,nonsense talk)でも更新時刻について動きが。もおっしゃってるけど、生成する段階で更新したかどうかをチェックしてると、たとえばnotさんのようにまとめて数日分書いてからアップするような運用の場合は問題があるっつーか、リアルタイムじゃないわけだ。かといって、日記を書いた時点での時間とかトピックに追記した時間なんてのは、手書きで入れるしかないし。それに、更新日を吐き出すことはできても時刻までひろってないもんなぁ。
まぁ、ボクの場合は日記数日分ためこんでアップということはしてないので、一歩さんのRSS改でいいかな、という気分。だって、追記したらすぐ日記生成してるもの。で、そのままローカルで放置せずすぐアップするし。ボクの場合は、日記更新時刻=日記生成時刻なのです。
じゃ、本家のほうと一歩さんのほうでrss.rbが更新されてるので落として見てみよう。
本家でトピック行頭文字削除のオプションを設定できるようにしてあったので、一歩さんのrssの方にも加えてみた。ついでに、 アサノさん(http://www.mushline.com/junk/,Mushline)やうちとかでやっている[]でトピックの行末に分類用の文字をいれているサイトのために、オプションでdc:subjectをだせるように加えてみた。もちろんupdate.rdfとndiary.rdfとの更新判定で破綻しないように、2ヶ所に同じ修正加えております。
以下の2行が2ヶ所あるので、
items << %Q! <title>#{t}</title>\n!
items << %Q! <link>#{link_base+l}</link>\n!
以下の如く修正した。
if @diary.config['RSS_DELETE_HEADCHAR'] != false then
/^.\s*(.+)$/ =~ t
topic = $1
if @diary.config['RSS_SUBJECT'] != false then
/(.*?)\[(.*?)\]/ =~ topic
tp, sub = $1, $2
items << %Q! <title>#{tp}</title>\n!
items << %Q! <link>#{link_base+l}</link>\n!
items << %Q! <dc:subject>#{sub}</dc:subject>\n!
else
items << %Q! <title>#{topic}</title>\n!
items << %Q! <link>#{link_base+l}</link>\n!
end
else
items << %Q! <title>#{t}</title>\n!
items << %Q! <link>#{link_base+l}</link>\n!
end
ndiary.configにて以下の2行を設定できる。
RSS_DELETE_HEADCHAR = true/false
RSS_SUBJECT = true/falseめずらしくエラーを出さずに修正できた。
と、そういえば、一歩さんのrssの古いほうのを改造してもうた。さっきおとしてきた新しいほうはトピック行頭文字削除オプションついてんじゃん!じゃぁRSS_SUBJECTだけ同様に修正しておこう。ところで先生!秘密オプションはndiary.confでflag_syupdate = trueでいいんでしょうか?
そいや、アサノさんの画像タグを手打ちでいれてるっておっしゃってましたが、inlineimage.rbを知ってて使わないのかしら?とつぶやいてみた。
金田一耕助の帰還
- 金田一耕助の帰還―傑作推理小説: 本: 横溝 正史 by 横溝 正史" />
Amazon.co.jp: 金田一耕助の帰還―傑作推理小説: 本: 横溝 正史 - 著横溝 正史
- ISBN4-334-73262-3
- 発行光文社
- 発売日2002.1
- 価格\680
- 説明名探偵・金田一耕助は、77編の作品で活躍したが、横溝正史には、改稿癖があり、一度発表した作品を後にまったく別の作品に仕立て直している。本書は金田一シリーズのエッセンスともいうべき原形作品群を集大成したもので、横溝ファンにとって貴重であると同時に、初めてこの名探偵に接する読者にとっても格好の入門書となるに違いない。
改稿されるまえの原形作品を集めたそうな。読み比べてみっかな。
2003年9月26日
imageplus.rb
テスト。
image(img/yubiwa.jpg yubiwa 100x100)
できた。すでに アサノさん(http://www.mushline.com/junk/200309.html#d26_t1,Mushline)が公開されてますが、つっこみコメントをいただいてから一応ボクも考えてたのでした。filter/inlineimage.rbをちょっと書き換えてみた。まぁ、replaceをつかってdivではさむだけなんですけども・・・念のため、divタグにCSS用のclassを入れたい場合はオプションで設定できるようにしてみた。以下に晒したとおり。
=begin
inlineimage.rbをオプションでdivで囲むかどうかをつけてみる
でも、align属性はCSSでなんとかしてもらおうと思いまして削除しちゃいました。
image(../img/foo.jpg foo 120x40)
-> <img src="../img/foo.jpg" alt="foo" width="120" height="40">
IMG_DIV = hogehoge で、いいかな?
この場合、<div class="hogehoge"><img src="../img/foo.jpg" alt="foo" width="120" height="40"></div>
と、なります。
=end
class Filter
def imageplus(str, type)
case type
when :P
img = ''
str.gsub!(/image\((.*?)\)/x){
iurl, ialt, isize = $1.split(/ /)
img = %Q!<img src="#{iurl}" alt="#{ialt}"!
if /^(\d+)x(\d+)$/ =~ isize then
w, h = $1, $2
img << %Q! width="#{w}" height="#{h}">!
css = @diary.config['IMG_DIV'].to_s unless @diary.config['IMG_DIV'].nil?
img.replace("<div class=\"#{css}\">" + img + "<\/div>")
end
}
end
end
enddivで囲むとinlineじゃなくなるかなぁってことで、imageplusって名前に。安直だね。正規表現も考えるのめんどくさいから半角カッコ内を丸ごと抜き出してみた。ま、ご参考までにってことで。
2003年9月27日
bookstore_x
今気づいた。なんで毎回bookstore_xは書店巡りしてんだろうと思えば。ndiary.confでキャッシュフォルダを1階層間違えて指定していた。そりゃフォルダが無いから、キャッシュも残らんし、毎回巡回するよなぁ。毎回数分かかるわけだ。
おや?変更したが、うちの環境ではelseifはダメといわれる。しょうがないのでelseに直す。んむ。うごいてくれた。でもpriceファイルがナゼに残らんの?なんでなんで〜?
エラーもでてないし原因が分からんなぁ。こまったなぁ。bookstore_xもエラー出てないし。一歩さんと環境が違うつっても、違うのはrequireのあたりとキャッシュフォルダの位置と、ndiary.confの中の設定か。しかし。その辺が間違ってpriceファイルが出ないってのはあり得るのか。いや、エラー出てないからその前提がありえん。
confの中のフィルタの登録順かねぇ?登録順だったらしい。うちでは
FILTER = 'pick_up_links'
FILTER = 'inlinedecorate'
FILTER = 'bookstore_x'
FILTER = 'sum_price_x'
FILTER = 'enikki'
FILTER = 'imageplus'
FILTER = 'comment'
FILTER = 'footnote'
FILTER = 'topic_sort'
FILTER = 'rss2'
FILTER = 'today'
となってましたが、bookstore_xとsum_price_xを入れ替えたらpriceファイル出てきた。sum_price_xはてっきりキャッシュから引っ張ってきてpriceファイルを吐き出してるのかと思ってたからbookstore_xより下のほうがいいのかと思ってた。
おぅっ?nDiaryでruby diary 200301-200309とかやると、sum_price_xでpriceファイルはでないらしい。一ヶ月ずつじゃないとダメってことがわかりました。
2003年9月28日
filter,plugin/x
bookstore_xとsum_price_xの件は了解なのです。>一歩さん。
最近、amazonアソシエイトに参加したので、ちょっとbookstore_xなどに興味が高まりつつある気配。ん〜む。
filter/imageplus.rb
アサノさんのお言葉を頂いてから、なんとなく書き上げてみたフィルタですが、アサノさんのおっしゃるとおり、普通に日記生成すりゃぁ本文中だもんなぁ。pタグの中にブロック要素のdivが入ることになる。どうしたものかのう。ちょっと考え中。
う〜ん。よくわからんな。どこかで、:hogehogeとか書いて偽装して通すってのを見た気がするんだがどうだったかなぁ・・・
結局わからずじまい。しょうがないのでAFTER_Pでdivの外のpタグを除こうとしたがうまくいかず。あきらめた。
ほぼ日
ほぼ日(http://www.1101.com/index0.html,ほぼ日刊イトイ新聞)のほぼ日手帳が明日から注文受付開始だった。いかんいかん。忘れるところだった。来年の手帳はほぼ日手帳にしようと思ってたんだよ。基本的にですな、PDAがシステム帳にはいるようなのが欲しいんだけども、持っているシステム手帳カバーはVisorとかPalmのような大きさのははいるけど、CLIEのNRとかNXのような縦長だと(ギリギリ入るけど)ちょっと厳しいのだ。ジッパーが閉めづらいのだね。
で、今は、CLIEと手帳を両方とも持ち歩いているのだ。どうしても手書きで手帳に書き込む方が早いからね。でも、営業の合間とか待ち時間はCLIEです。手帳のほうはといえば、とくにメーカーを決めてませんが、1日1ページのものというのは決めているのです。今年はモールスキンの手帳でしたが、来年はほぼ日手帳だね。
2003年9月30日
■指輪物語[DVD]
二つの塔のDVD入手。コレクターズエディション也。これからゆっくり見るのだ。
見終わった。あぁ早く次が見たい。いや、小説読んだほうが早いか。でも、小説と映画だと感動が違うしなぁ。
memoとtxtファイル
手帳と併用しているCLIEのNX60ですが。どうにも不満なことがある。CLIEに限らんことだが、PalmOSでも標準なMemoソフトは4kbyteまでなのだ。では4k以上の文章を保存するには?
答えは別のフォーマットなソフトを使うしかない。現状では4k以上のメモはどうにもならん。どうしてもmemoで保存するには分割保存するしかないのだ。最近のPDAだと外部メモリの対応は当たり前になってきてるので、txtファイルを外部メモリに置いた状態で読み書きしたいところだが、これまた対応ソフトがあまりない。知ってる限りだと2つか。
ボクがつかってるのはCrsMemo。これもtxtファイルに対応しているが、txtファイル専用のではないのだ。もっとサクサクと動くtxtファイル専用のエディタが欲しい。・・・自分で作るか?







