Landscape トップページ | < 前の日 2004-11-28 2004-11-29 次の日 2004-11-30 >

Landscape - エンジニアのメモ 2004-11-29

chalow が出力する RSS に CDATA で全文を入れる


* chalow が出力する RSS に CDATA で全文を入れる

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [chalow] [ChangeLog メモ] [RSS]

たつをさんが面白そうなことを始めてるなあ、と思ったらあっという間にいろいろできてた。さすがだ。

- chalowでitem別ページ

http://nais.to/~yto/clog/2004-11-27-3.html

item 別ページ大歓迎。私もこれやろうとしたんですよ。削除アイテムの扱いをどうするか、2004-01-25 の「記事単位での html 出力と記事の削除」で悩んだり。そのときの結論も「削除しない」とか、「削除したらダミーの記事を追加する」とかだった。でも結局、一個ずつファイル作ってたら infoseek では 50MB しかディスク容量が使えないためにあっという間に制限を超えてしまうので断念。もっと容量を使えるサーバに移転すればいいんだけど URL 変えたくないしなあ。

「一記事一 URI」って美しい。SEO を意識してというよりも、自分を含む読み手のことを考えると自然とこうなる。Google の検索結果で、「Landscape - エンジニアのメモ 2004-01-08 」って表示されるより、そのものズバリの「gpg で標準入力からパスワードを渡してバッチ処理で暗号化」って表示された方がわかりやすい。

- item 数と html 生成・ファイル転送

5671 - 「たつをの ChangeLog」の公開item数
http://nais.to/~yto/clog/2004-11-28-2.html
今までの日付ページ1650、月ページ59も引き続き出力するので、8400ページ近くになる。昨晩、rsyncでWebサーバに転送したら35分かかった。

すごい数・・・。こうなってくると DB 使ったり動的生成したくなってきたりするなあ。これもいつもジレンマなんだよなあ。ChangeLog メモの良さを損なわずにいかに便利にスケーラブルにするかは悩ましい問題。

- ChangeLog パーサ

ChangeLogの読み込みとハッシュへの格納
http://nais.to/~yto/clog/2004-11-28-5.html
こういうライブラリがあると実に便利。あとはハッシュへのアクセスを抽象化してあげれば ChangeLog メモクラスとして完成するなあ。エンティティクラスであるためシンプルで使いやすそう。

- RSS に全文入れる

chalow の RSS の description で CDATA
http://nais.to/~yto/clog/2004-11-29-1.html
これからは CDATA で全部どかっと行く。

bloglines で読んでいたら突然全文を読めるようになったのはこういうわけか。素晴らしい。2004-10-26 の「content:encodedが足りねぇ… じゃんじゃん 持ってこい」でも書いたように、私は全文入った RSS が大好き。記事単位でサクサク読めるのが最高。

で、その RSS を Bloglines で見てみると、
相対URLがおかしくなってるなあ。2004-11-27-3.html を
http://nais.to/2004-11-27-3.html にしちゃってる。

私は RSS 中の 相対 URL の補完は以下のように簡単に置換しています。私の場合、../ などの処理は考慮する必要がなかったので楽でした。複雑な相対パスを指定してる場合はちょっとだけ手間が増えますね。
# " のあとに http が無かったら補完。
my $home_page_url = 'http://sonic64.com/';
my $content = RSS_DOCUMENT

$content =~ s%(<a href|<img src)="(?!(https?|JavaScript):)%$1="$home_page_url%ig;

- chalow の機能強化

chalow の不満な所が一気に無くなってゆく
http://tokuhirom.tdiary.net/20041129.html#p03
これまでのバージョンの chalow で気にくわなかった所は

エントリごとのページが生成されない
SEO 的にマズー
見た目的にもマズー
RSS に本文そのものが入らない
という所だったのですが、全部解消って感じですね。

あと、なんかあったっけ?

私は記事の通し番号が変わるという問題を解決したいですね。この問題は私の使い方が変わっていることが原因ですが。

私は LAN の中にだけ公開したい文書は L: カテゴリを指定しています。L カテゴリの文書は、web に出す html を生成するときは p: を指定したプライベートアイテムと同じように削除されます。

この結果、LAN の中だけに公開される文書と web で公開可能な記事が入り交じると、出力先によって記事の数が変わってしまい、同じ記事なのに LAN の中と外で番号が変わってしまうという問題があります。その結果、2004-11-29-1 という日付参照 + アイテム参照の順序が狂います。

これは記事番号の採番を一元的に行う主体や方法がないのが原因で、シンプルなツールなら仕方のないことなんですけどね。

あ、でもなんとかできそうな気がしてきた。結局、出力ファイルの名前空間が YYYY-MM-DD.html や YYYY-MM-DD-ITEM.html しかないから問題になる。だったら、パースの時に独立した名前空間ごとに記事を格納するようにして、html 出力の時も NameSpace-YYYY-MM-DD.html みたいにして名前空間付きでファイル名を生成すればいい。

以前に、「p: を指定されたプライベートアイテムだけを出力したページが欲しい」という要望があったけど、これならできそう。パーサはプライベートアイテムだけのエントリを消すのではなく、プライベートアイテムだけを独立した名前空間に格納してやると。で、html 出力部分 にどの名前空間のデータを渡すかはコントローラが決めるので、p 付きのデータを出力するようなコントローラを書けばいい。

すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。