2005-11-22 (Tue)

* Visual Studio ユーザーグループ フォーラムの OPML

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [RSS] [.net] [C#]

先日、Visual Studio のユーザーグループ VSUG が発足した。

Visual Studio User Group > ホーム
http://vsug.jp/

vsug.jp にはユーザーが投稿できるフォーラムと呼ばれる掲示板があり、RSS も提供されている。しかし、それらを一気に RSS リーダーに登録する簡単な方法がない。RSS Auto Discovary もないし、OPML もない。

手軽に登録したいので OPML を作った。以下をファイル名 opml.xml などとして文字コード UTF-8 で保存し、OPML 対応の RSS リーダーに読ませればすべてのフォーラムを一気に購読できる。

<?xml version="1.0"?>
<opml version="1.1">
<head>
  <title>Planet .NET Japan</title>
  <dateCreated>Tue, 22 Nov 2005 15:18:02 +0000</dateCreated>
  <dateModified>Tue, 22 Nov 2005 15:18:02 +0000</dateModified>
  <ownerName>Saito Hiroaki</ownerName>
  <ownerEmail><img src="http://sonic64.com/img/mail.png" /></ownerEmail>
</head>

<body>
  <outline text="VSUG - .NET Framework" title="VSUG - .NET Framework" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=51&amp;nossl=x"/>
  <outline text="VSUG - Office 開発・VSTO" title="VSUG - Office 開発・VSTO" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=54&amp;nossl=x"/>
  <outline text="VSUG - VSUGからのお知らせ" title="VSUG - VSUGからのお知らせ" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=70&amp;nossl=x"/>
  <outline text="VSUG - Visual Basic" title="VSUG - Visual Basic" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=44&amp;nossl=x"/>
  <outline text="VSUG - Visual C#" title="VSUG - Visual C#" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=45&amp;nossl=x"/>
  <outline text="VSUG - Visual C++/CLI その他" title="VSUG - Visual C++/CLI その他" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=46&amp;nossl=x"/>
  <outline text="VSUG - Visual Studio 2005" title="VSUG - Visual Studio 2005" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=42&amp;nossl=x"/>
  <outline text="VSUG - Visual Studio 旧環境" title="VSUG - Visual Studio 旧環境" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=43&amp;nossl=x"/>
  <outline text="VSUG - Web アプリケーション" title="VSUG - Web アプリケーション" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=47&amp;nossl=x"/>
  <outline text="VSUG - Web ホスティングアプリケーション" title="VSUG - Web ホスティングアプリケーション" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=55&amp;nossl=x"/>
  <outline text="VSUG - データベース・データアクセス" title="VSUG - データベース・データアクセス" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=49&amp;nossl=x"/>
  <outline text="VSUG - マイグレーション・COM 相互運用" title="VSUG - マイグレーション・COM 相互運用" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=53&amp;nossl=x"/>
  <outline text="VSUG - モバイル・スマートクライアント" title="VSUG - モバイル・スマートクライアント" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=50&amp;nossl=x"/>
  <outline text="VSUG - ライティング・セキュアコード" title="VSUG - ライティング・セキュアコード" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=56&amp;nossl=x"/>
  <outline text="VSUG - リッチクライアント・UI コントロール" title="VSUG - リッチクライアント・UI コントロール" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=48&amp;nossl=x"/>
  <outline text="VSUG - 談話室" title="VSUG - 談話室" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=58&amp;nossl=x"/>
  <outline text="VSUG - 運用管理" title="VSUG - 運用管理" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=57&amp;nossl=x"/>
  <outline text="VSUG - 開発プロセス" title="VSUG - 開発プロセス" type="rss" xmlUrl="http://vsug.jp/Rss/GetRss.aspx?forumid=52&amp;nossl=x"/>
</body>
</opml>

VSUG に投稿しておいた。

Visual Studio User Group > フォーラム > VSUG フォーラム RSS の OPML を作りました
http://vsug.jp/tabid/63/forumid/58/postid/479/view/topic/Def ...

2005-11-02 (Wed)

* sonic64.com の転送量の80%が RSS

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [sonic64.com] [Apache] [ネットワーク] [RSS]

当サイト Landscape が infoseek isweb から移転して sonic64.com を使うようになってから、1か月ほど経った。というわけでアクセスログを見てみる。

- Landscape - エンジニアのメモ 2005年10月のアクセス

総ページビューとか、人気のあったページとかはまあどうでもいいんだけど、いちおうメモ。ページビューは372969。約37万。Webalizer によるページビューなので、今までとはカウント方法が異なっている可能性はある。

月間総転送量は 63557488KB。約60GB、一日あたり2GBというところか。なんだか減ってる気がする。旧サイトを置いていた infoseek isweb では、多いときで一日5GB、少ないときで1GBくらいだったと思う。平均すると一日あたり 3GB から 4GB くらいだったかな。移転後に転送量が減ってる理由は、移転に伴って検索エンジンの順位が下がったりとか、あとは 2005-09-15 の「mod_rewrite でリクエストに応じて gzip 圧縮ファイルを返す」などの効果のためだろう。

- sonic64.com の転送量の80%が RSS

興味深かったのが、転送量の内訳。infoseek ではこういう統計は提供されなかったし、httpd の生のアクセスログも提供されなかったので調べられなかったけど、今は生ログがもらえるので解析できた。

解析の結果、転送量のほとんどが http://sonic64.com/cl-full.xml に集中してることがわかった。60GB の転送量のうち、50816191KB、すなわち 50GB 程度がこの RSS の転送のために使われていた。cl-full.xml は「すべての記事全文を含む RSS」 なので、サイズが大きいのは仕方がないが、それが sonic64.com の転送量の約80%を占めているとは、ちょっと意外だった。20%80%のパレートの法則を超えるような状態だ。

ちなみに、トップページ http://sonic64.com/ の月間転送量は 471425KB で、471MB。全体に占める割合はたったの 0.74%。まあ、こんなものでしょ。

月間60GBという転送量は、私の見積もりの範囲内なのでまったく問題ない。必要ならどんどんアクセスしてほしい。全体の転送量の80%が RSS というのはちょっと意外だったのだけど。infoseek からの移転先としてさくらインターネットを選んだ理由の一つは、転送量制限の値が高めで余裕があるからだ。

- HTTP リクエストヘッダ Accept-Encoding: gzip をちゃんと送ってる?

気になるのは、http://sonic64.com/cl-full.xml へアクセスするときに、HTTP リクエストヘッダ Accept-Encoding: gzip を送ってないクライアントが多いんじゃないかということ。

cl-full.xml は今日現在 4MB 弱のサイズがあるが、Accept-Encoding: gzip をつけて送れば900KB くらいに圧縮されたデータがサーバから返される。そのために 2005-09-15 の「mod_rewrite でリクエストに応じて gzip 圧縮ファイルを返す」などの仕組みを取り入れたんだけど、それが使われてなかったとしたら残念だ。無駄は嫌いなんだ。無駄、無駄、と。昨日のアクセスログを grep して調べてみる。

grep 'GET /cl-full.xml' ~/log/access_log_`date +%Y%m%d` |grep ' 200 '

上記のようにして 200 OK で完結したリクエストのログをざーっと眺めてみる。うん、以下の Mozilla Thunderbird は圧縮された cl-full.xml を取ってきてるね。返された cl-full.xml のサイズが 942606 バイトになってる。

"GET /cl-full.xml HTTP/1.1" 200 942606 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.10) Gecko/20050716 Thunderbird/1.0.6"

一方、 Accept-Encoding: gzip をリクエストにつけていないため、圧縮してないデータを返されたクライアントも結構あった。とくに、ロボットや Web 型 RSS リーダーのクローラーにこの傾向が強いように感じる。

"GET /cl-full.xml HTTP/1.1" 200 4147427 "-" "Mozilla/4.0 (compatible; Google Desktop)"

以下、UserAgent 名だけ列挙。

InfoSeek RssReader/0.1"
FEEDBRINGER/0.1 (http://feedbringer.net/; 10 subscribers)"
Google Desktop
blogWatcher_crawler/0.2
Accelatech RSSCrawler/0.4
HepCat: http://www.witha.jp/
Hatena RSS/0.2 (http://r.hatena.ne.jp; 7 subscribers)
cococ/1.04
gooRSSreader2/2.0-build 20050818 (based on glucose)
Headline-Reader [t] (http://www.infomaker.jp/)

Bloglines はちゃんと Accept-Encoding: gzip をつけてリクエストしてる。さすがだね。

- Accept-Encoding: gzip なしのリクエストは mod_rewrite でリダイレクト

今のところ転送量にはまだ余裕がある。Accept-Encoding: gzip なしのリクエストを、圧縮しなきゃダメと 403 Forbidden で追い返したり、問答無用で圧縮したファイルを返すようなことはしたくない。でも、今時の HTTP クライアントなら Accept-Encoding: gzip くらい送ってきて欲しい。一般的なクライアント型 RSS リーダーだと、ファイアウォールソフトや proxy によって Accept-Encoding: gzip を削除されてしまうことがあるようだけど、ロボット系はそんなこともないだろうしなあ。

そうだ。Accept-Encoding: gzip を送ってきてないクライアントは、HTTP 302 Moved Temporarily で RSS 広告社の Trend Match の RSS http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0002 にリダイレクトするようにしよう。Trend Match から 返される RSS は gzip 圧縮がかかってないから、問答無用で圧縮したファイルを返すよりもずっといい。

2005-10-12 の「RSS広告社の広告プログラム Trend Match に参加」で書いたように、http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0002 にアクセすると、Internal Server Error になってしまっていた。その後、2005-10-26 の「RSS広告社の Trend Match の RSS サイズ制限が緩和された?」で、エラーにならずにアクセスできるようになったのを確認した。正式対応のアナウンスはまだ無いが、いまのところ問題がない。そのうち cl-full.xml への全リクエストをリダイレクトしようかと思っていた。でもやっぱりいきなり全リクエストをリダイレクトするのは不安なので、まず一部だけでテストしたいところ。Accept-Encoding: gzip を送ってきてないリクエストにそのテスターになってもらうことにしよう。

さっそく mod_rewrite の RewriteRule を書こう。

RewriteCond %{REQUEST_URI} cl-full\.xml(\.gz)?$
RewriteCond %{HTTP:Accept-Encoding} !gzip
RewriteRule .+ http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0002 [L,R]

できた。これを .htaccess に設定して、Firefox と LiveHttpHeaders の HTTP リクエストリプレイ機能で、Accept-Encoding: gzip があるリクエストと、ないリクエストの両方でテスト。よし、OK だ。これで全員が幸せになれるね。Win-Win-Win だ。

2005-10-26 (Wed)

* RSS広告社の Trend Match の RSS サイズ制限が緩和された?

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

2005-10-12 の「RSS広告社の広告プログラム Trend Match に参加」の続き。http://sonic64.com/cl-full.xml の広告入りバージョン http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0002 にアクセスすると、HTTP 500 Internal Server Error になってしまう件の回答を頂いた。回答のメールは10月14日の夜に送られてきていた。質問メールを送ったのは10月12日の朝。待たされた感じはなかった。

「Trend Match」カスタマーサポートセンターです。
平素より「Trend Match」をご利用いただきましてありがとうございます。

下記の件につきまして調査を致しましたので、ご報告いたします。

弊社システムにおいて、読み込むRSSのファイルサイズについて、
上限値については正確な値はお答えできませんが、10KB程度を想定しており
ました。
一方、ご登録いただいた斎藤様のサイトのRSSのサイズは約4MBと、
著しく乖離しております。
これが原因となり、正常に読み込むことができなかったようです。

つきましては、現状のままでは読み込むことができませんので、
RSS内に入れる文章量をご調整いただき、再度ご設置いただければ
幸いです。

弊社においても、今後システムのバージョンアップにより、
徐々に対応範囲を広げて参りたいと思いますので、
何卒ご理解のほどよろしくお願いいたします。

想定外なら仕方ない。4MB というサイズは RSS としては大きめだし。全記事全文入り RSS に広告を設定するのは諦めよう。ちなみに、全記事全文入りの RSS はアーカイブとして使ったり、これを使ってなにか面白いことをやる人が出てくるんじゃないかと思って公開しているもの。実用だけを目的としているものではない。当サイト Landscape の最新の記事をチェックするだけなら、直近7日分の RSS http://sonic64.com/cl.xml を使えば事足りる。

ただ、エラーで落ちてしまうのはまずいと思う。システムとしては、RSS 登録時にサイズをチェックして処理対象外の RSS ならばエラーを表示するようにすると、より良いシステムになるんじゃないかな。

- アクセスできた

今日たまたま http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0002 にアクセスしてみたら、HTTP 500 Internal Server Error にはならずに RSS が返された。ただ、返された RSS には広告が一切入っていない。内容も妙に古く、10月19日頃のものだ。一週間遅れの RSS って、三日前の古新聞どころじゃないぞ。うーん、これだとやっぱり全記事全文の RSS へのリクエストを rssad.jp にリダイレクトするわけにはいかないな。

http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0002

GET /rss/qArzgZHGLg5Z/rss_0002 HTTP/1.1
Host: rss.rssad.jp
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.12) Gecko/20050919 Firefox/1.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html; q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 OK
Date: Wed, 26 Oct 2005 13:36:05 GMT
Server: Apache/2.0.52 (CentOS)
Content-Length: 4111104
Connection: close
Content-Type: text/xml

正式に対応した旨のアナウンスがあったわけじゃないし、単にエラーを出なくする対応をしたんだろうな。500 Internal Server Error とかだと監視系にイベントが上がって来ちゃうだろうし、本当の障害に気づきにくくなるからね。

2005-10-12 (Wed)

* RSS広告社の広告プログラム Trend Match に参加

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [sonic64.com] [RSS]

RSS広告社の広告プログラム Trend Match に参加した。

RSS広告社
https://www.rssad.jp/mp/

- RSS広告社の RSS 広告の仕組み

RSS広告社にアカウントを申し込み、サイトの審査に通過すると、自分の RSS を登録することができる。登録すると広告の入った RSS の URL を発行してもらえるので、それを自分のページの RSS として使うという流れ。

RSS は blog や CMS (Content Management System) の普及のおかげで多くのサイトで配布されるようになった。しかし、RSS広告社のシステムの場合、RSS の URL を自由に変更したり、HTML テンプレートを柔軟に変更できる環境にない場合は、導入が難しいかもしれない。とくに、一般の無料 blog サービスの場合、広告入りの RSS を広報するには、ほぼ不可能だと思う。システム側のサポートが不可欠だ。

- RSS広告社への申し込み

私のサイトくらいの規模だと収益が上がるかどうかは疑問だが、とりえあえずやってみることにする。レンタルサーバとドメインを維持する費用の足しになればいいな。

RSS広告社の個人向けページ https://www.rssad.jp/mp/ からアカウントを申し込む。審査は非常に迅速で、私の場合は一日くらいで審査通過の連絡が届いた。その後管理画面で RSS を登録して、広告入り RSS の URL を発行してもらう。私の場合、http://sonic64.com/cl.xml の広告入り URL として http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0003 を割り当てられた。

- 広告の入った RSS へのリダイレクト

あとは、http://sonic64.com/cl.xml ではなく、広告の入った URL である http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0003 にアクセスしてもらうようにするだけだ。2005-09-12 の「Landscape - エンジニアのメモは sonic64.com に移転しました」では、サーバの管理権が全くないので HTTP のリダイレクトを使えなかった。そのせいで URL の変更には多大な手間がかかってしまった。しかし、今は管理権付きのサービスを利用しているので、リダイレクトなどは自由に使える。Bloglines などの RSS リーダーで購読しているユーザーに手間をかけさせることがなくなり、非常に喜ばしい。

リダイレクトするための mod_rewrite の RewriteRule を書いた。

RewriteRule cl\.xml(\.gz)?$ http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0003 [R,L]

あんまり凝ったことはせずに、cl.xml または cl.xml.gz にアクセスされたら、http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0003 に HTTP 302 Moved Temporarily でリダイレクトしているだけ。ちなみに、cl.xml.gz は 2005-09-15 の「mod_rewrite でリクエストに応じて gzip 圧縮ファイルを返す」で設定した gzip 圧縮を施したファイル。cl.xml と中身は同じ。

これで良し。・・・と思ったけど、この程度なら mod_rewrite なんか使わなくても Redirect や RedirectMatch で十分だ。なんでわざわざ mod_rewrite を使おうとしたんだろう?

RedirectMatch cl\.xml(\.gz)?$ http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0003

よしよし、これでいいね。あとは RSS広告社のクローラーが RSS を取りに来てくれれば OK。・・・と思ったけど、上記のリダイレクトには間違いがある。上記のルールだけだと RSSad のクローラーが最新の RSS を取りに来ても、必ず http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0003 にリダイレクトされてしまう。

これじゃいつまで経っても RSS が更新されない。何らかの方法でRSS広告社からのアクセスを判別して、RSS広告社からのアクセスだったときのみ最新の RSS を返し、それ以外のアクセスは http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0003 にリダイレクトする必要がある。

RSS広告社からのアクセスをどうやって判別しよう? UserAgent も IP アドレスもわからないんだよな。仕方がない、別の http://sonic64.com/cl.xml とは別の URL で RSS を置いて、それを RSS広告社に登録しよう。で、http://sonic64.com/cl.xml は常に 302 Moved Temporarily を返してリダイレクトするようにしよう。サーバ上で cl.xml にシンボリックリンクを張れば簡単に実現できるね。

- 過去の全記事の全文を収録した RSS にアクセスすると Internal Server Error

当サイト Landscape は 過去の全記事の全文を収録した RSS http://sonic64.com/cl-full.xml も配布している。これもRSS広告社に登録しておこう。

登録し、割り当てられた URL http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0002 にテストのためにアクセスすると HTTP 500 Internal Server Error となってしまった。Tomcat から The server encountered an internal error () that prevented it from fulfilling this request. というエラーメッセージが出力されている。あ、RSS広告社のシステムは Java なんだね。

過去の全記事の全文を収録した RSS http://sonic64.com/cl-full.xml はサイズが 4MB 弱と大きめなので、それが原因かな。それとも、過去の記事の中に存在する半角カナや機種依存文字が悪さをしてるのかな? 私が推測しても仕方がないので、サポートに質問メールを送ることにする。

株式会社RSS広告社 サポート担当者様

Trend Match ユーザーの斎藤と申します。
お世話になっております。

広告導入をの手続きをおこない、RSS の URL を割り当てられましたが、
アクセスすると 500 Internal Server Error  になってしまいます。

URL は http://rss.rssad.jp/rss/qArzgZHGLg5Z/rss_0002 で、
私が作成している RSS は http://sonic64.com/cl-full.xml です。
RSS のサイズが大きいことが原因でしょうか?

HTTTP トランザクションの内容を付記します。

GET /rss/qArzgZHGLg5Z/rss_0002 HTTP/1.1
Host: rss.rssad.jp
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.12)
Gecko/20050919 Firefox/1.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;
q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 500 Internal Server Error
Date: Tue, 11 Oct 2005 22:43:25 GMT
Server: Apache/2.0.52 (CentOS)
Content-Length: 1023
Connection: close
Content-Type: text/html;charset=utf-8

以上、よろしくお願いいたします。

上記メールをサポートに送信した。あ、よく見ると HTTP が HTTTP になってたり、誤字があったりするな。恥ずかしい。あわただしい時間帯に送信したメールなので、読み返さなかったのが災いしたなあ。しかも、今 FAQ のページを見ていたら、質問用のテンプレートが用意されてるじゃん。完全に無視して質問メールを投げてしまった。エンジニアとして恥ずかしい。

よくある質問
https://www.rssad.jp/mp/faq.html#f41
41.メールで問合せをしたいのですが・・・

FAQをご覧頂いた上で、それでもおわかりにならない場合のみ、以下に注意してメールをお送り下さい。

(1)アカウント取得前・取得後で、お問い合わせ先メールアドレスが異なります。

●アカウント申請前のご質問(ご登録に関するご質問・審査報告の遅延など)
問い合わせ先:rss-support@rssad.jp

●アカウント取得後のご質問(広告挿入の手順・お支払い状況・登録内容/銀行口座の変更・退会処理など)
問い合わせ先:rss-adhelp@rssad.jp

(2)お問い合わせの際、お客様のご質問に迅速に対応させて頂くため、本文に以下のフォーマットを記入してお送り下さい。

1.【氏名】
2.【サイトURL】
3.【E-mail】(アカウントをお持ちの方は登録時のE-mail)
4.【お使いのブログサービス会社】Livedoor Blog、ココログ、Excite Blog 等
5.【利用ブラウザ】IE6.0、firefox、Netscape、Sleipneir等
6.【質問ジャンル】登録申請・審査報告の遅延・広告挿入・レポート・お支払い・支払い状況・登録内容/銀行口座の変更・退会・その他 (うち一つをお選び下さい)
7.【詳しい質問内容】

テンプレートを完全に無視した質問メールだったが、ちゃんと返事をくれた。調査してくれるとのこと。回答待ちだな。

斎藤様

お問い合わせありがとうございます。
「Trend Match」カスタマーサポートセンターと申します。

現在、本件に関しては、技術部門で原因を追求中です。
斎藤様のご指摘のとおり、RSSのサイズが大きいことが原因である
可能性が高いと思われます。

早急に調査し、ご連絡申し上げますので、
ご迷惑をおかけ致しますが、今しばらくお待ちください。

何卒よろしくお願いいたします。

2005-09-23 (Fri)

* 「bloglinesスパム」はできるけど、ユーザへの恩恵もある

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

以下の指摘への考察。

kokepiの日記 - 「bloglinesスパム」ができる
http://d.hatena.ne.jp/kokepi/20050921/1127303066
bloglinesやmyYahooのツールバー、ブックマークレット等をから、「このページを追加」みたいな機能を使うと、サイトのRSSフィード登録画面に、第三者のフィードが表示されることがある。

確かに「bloglinesスパム」はできますが、明確なスパム行為でない場合はユーザへの恩恵もあります。現状では指摘の問題をはらんでいますが、RSS リーダー提供側はちょっと仕様を変えるだけで、ユーザをはじめ皆に恩恵があるようにできます。RSS リーダー提供側は頑張って欲しいところです。

- 一概に悪い仕様とはいえない

私の言いたいことは以下の3点。

この機能は利点もあり、一概に悪い仕様とは言い切れない。
RSS の URL を直指定させる登録 URL なら、他の RSS が紛れ込むことはない。
Bloglines や Yahoo などの RSS リーダー提供側は、公式 RSS の表示順位を上げて最優先扱いにして欲しい。

確かに、公式な RSS を押しのけて他の RSS を紛れ込ませることができる。ただ、私は他のサイトが配布する非公式 RSS に恩恵を受けているので、必ずしも悪い仕様とは言い切れないと思っている。たとえば、2005-05-10 の "「なんでも RSS」で RSS が無いサイトから RSS を生成" を使って生成した RSS を誰かが bloglines に登録していれば、他のユーザがその RSS を購読することが簡単にできる。第三者のフィードが少ないうちなら、ユーザーへの恩恵もある。

- RSS の URL を直指定すればノイズは出てこない

RSS の URL を直指定すればノイズは出てこない。たとえば、以下のように RSS フィード を直指定した Bloglines への登録 URL ならば、余計な RSS は表示されない。

http://www.bloglines.com/sub/http://sonic64.com/cl.xml

当サイト Landscape 内の RSS 登録 URL は、すべて上記のように RSS の URL を直指定するようにしている。ただ、提供している RSS の数が少ない場合はこれでよいのだが、たとえばカテゴリごとに RSS を用意しているサイトだと、サイト内にその数の分だけ登録用リンクを記述設定しなければならない。

これを解決するには、サイトで提供している RSS を RSS AutoDiscovery で見つけられるように、HTML ヘッダに全部列挙するのが良い。2004-02-14 の「RSS Auto discovery で複数の RSS を提供するには」の手法が使える。

- 公式フィードの表示順位を上げる

Bloglines のフィード一覧画面は、どういう順番でフィードが並んでいるのかわからないという問題がある。以下のような場合に、表示順位を最上位にしたり、何かマークを付けたりするなどして欲しい。

RSS AutoDiscovery で明示されている RSS の場合
RSS が提供されている URL のドメインと RSS が言及しているドメインが一致した場合

RSS リーダー提供側がこういう配慮をしてくれれば、スパマーがいくら大量にゴミのような RSS を用意した場合でも、ユーザーはある程度対応できるだろう。

2005-05-15 (Sun)

* Bloglines に「本文が表示されない現象」をバグ報告

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

2005-05-13 の「Bloglines で本文が表示されない現象の原因と対処」で書いた現象を Bloglines に報告した。現象は、channel 要素内の title 要素にマルチバイト文字列を使っていて、かつタイトルの長さが長い場合、 本文が表示されないというもの。

- 英語でバグレポート

私は英語嫌いじゃないけど、普段使ってないからうまく書けないんだよなあ。時間もかかるし。2005-01-09 の「favicon.ico が bloglines で表示されない理由」で書いたバグレポートを送ったときもちょっと大変だった。

もっとも、日本語でも英語でもバグレポートの基本は一緒だよね。

発生した現象
期待する動作
再現手順や環境

この3つを書けばいいだけ。

- 既知の問題かどうかと、バグレポートの送り先を確認する

さて、まず同様のレポートが既に提出されているかどうかと、送り先を確認する。

以下を読んだけど、それらしき物はない。FAQ ってどこかにあったような気もするけど、どこだっけ?

Bloglines | Bloglinesからお知らせ
http://www.bloglines.com/about/news

送信先について。専用のメールアドレスがあるわけではなく、以下のフォームから送ればいい。前送ったときもそうだったっけ。すっかり忘れちゃってる。

Bloglines | お問い合わせ
http://www.bloglines.com/contact

・・・って、フォームもお問い合わせページも日本語で書いてあるんだけど、バグ報告も日本語でいいの? せっかく 英語で書かなきゃ! と気合い入れたのにね。前は英語のページしかなかったから英語で書いたんだけど。

あ、「よくある質問」があった。よくある質問 http://www.bloglines.com/help/faq の中には本バグレポートの現象は載ってないね。よし、書くぞ。

- Bloglines に送ったバグ報告メール

Bloglines で本文が表示されない現象の原因と対処
http://sonic64.com/2005-05-13.html

上記のウェブページに書いたから読んでね、というだけのレポートでも良いのかもしれないけど、もらった方としてはそれでは処理に困るかもしれない。もしかしたらフォームから送信した文面は自動翻訳されて開発チームに届くかもしれないし、BTS (Bug Tracking System - バグ追跡システム) にそのまま掲載されるかもしれないし。そもそも、「質問は以下のウェブサイトに書きました」とか「質問は添付ファイルの通りです」といったメールって、もらう立場から考えると嬉しい物じゃないし。メール本文に書いてくれればいいのに、って思っちゃう。

というわけで、本文に全部盛り込むようにし、以下をフォームから送信した。

長いマルチバイト文字列をタイトルに使った RSS だと本文が表示されません。

Bloglines の MyFeed でフィードを閲覧しようとすると、フィードのタイトルだけ表示されて本文が表示されないという現象が発生します。この現象について調査した結果を私のウェブサイトに載せています。

Bloglines で本文が表示されない現象の原因と対処
http://sonic64.hp.infoseek.co.jp/2005-05-13.html


以下に要約を書きます。

http://sonic64.hp.infoseek.co.jp/test/index.rdf の RSS を Bloglines で表示させると、タイトルのみ表示され、本文が表示されません。http://www.bloglines.com/preview?siteid=1840248 が問題のあるプレビューです。

RSS の Item 要素には Description と content:encoded が含まれています。通常であれば、フィードの item が表示されるはずですが、フィードのタイトルしか表示されません。ただし、この現象が発生するのは Internet Explorer を使ったときで、Firefox を使うとこの現象は発生しませんでした。

使用している Ineternet Explorer と Firefox のバージョンは以下の通りです。
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Mozilla/5.0 (Windows; U; Windows NT 5.0; ja-JP; rv:1.7.7) Gecko/20050414 Firefox/1.0.3


http://sonic64.hp.infoseek.co.jp/test/index.rdf の RSS は channel 要素内の title 要素が非常に長いものとなっています。試しに channel 要素内の title 要素を短くした RSS を作って Bloglines で表示させてみると、Internet Explorer でも Firefox でも問題なく表示されました。

channel 要素内の title 要素を短くした RSS と、Bloglines におけるプレビュー
http://sonic64.hp.infoseek.co.jp/test/index_short.rdf
http://www.bloglines.com/preview?siteid=1840267


以下は私の推測です。
channel 要素内の title 要素が非常に長く、かつ日本語などのマルチバイトを必要とする文字コードで記述されていた場合、バイト境界を無視して文字を途中で切断してしまうようです。この結果、Bloglines が出力する HTML に文字化けが発生し、本文が表示されなくなってしまうのではないでしょうか。

フォームから送ると以下のメッセージが表示された。

あなたのメッセージは Bloglinesに送信されました。Bloglinesがメッセージを拝見させて頂くのには、2営業日はお待ち頂く必要があります。

送信完了。

2005-05-13 (Fri)

* Bloglines で本文が表示されない現象の原因と対処

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

Bloglines で本文が出ないという現象の原因と対処法。

- Bloglines でタイトルだけ出て本文が出ない「ExpandできないCollapse状態」

Bloglinesがおかしい ただのにっき
http://sho.tdiary.net/20050506.html#p01
ここ数日、本文が出ない(出るときもある)。ようするに「ExpandできないCollapse状態」になっている。これではBloglinesを使っている意味がないじゃないか。つーか、ただのアンテナだよ、これじゃ。すげー不便。

Bloglinesがおかしい(2) ただのにっき
http://sho.tdiary.net/20050512.html#p01
SleipnirでBloglinesを使っていると、ExpandできないCollapse状態になって困ると書いたら、Firefoxだと起きないと聞いたので、BloglinesだけFirefoxを使っている。実際、Firefox導入以来、問題は起きていない。なんでだ。

私もこの現象に悩まされてました。しばらく悩んだ後、この現象が発生する法則に気づきました。この現象は、長くてマルチバイト文字を使ったタイトルを持ったフィードが原因のようです。私の場合、それらのフィードを別ディレクトリに隔離することで問題を回避できました。

- 「今日のなんでやねん」が更新されると本文が表示されなくなる

最初に断っておく。当記事は単に技術的興味から「Bloglines において本文が出ない」という現象の原因を追及し、対処法を見いだそうとするものだ。究明の過程で特定のサイト名や URL、RSS が登場するが、究明の手がかりとして使っているだけで、それらを糾弾したり批判する意図は全くない。

私は、きたさんの tDiary 日記「今日のなんでやねん」 http://kitaj.no-ip.com/tdiary/ が更新されると本文が表示されないという現象が発生することに気づいた。また、やねうらおさんのはてなダイアリー日記「やねうらお−よっちゃんイカを買いに行ったついでに家を買う男」 http://d.hatena.ne.jp/yaneurao/ が更新されても同じ現象が出ることに気づいた。

どちらも、タイトルが長く、かつ日本語文字列が使われている。直感的に、これらの RSS が問題の原因であることを悟った。

今日のなんでやねん,っつーか今月のなんでやねんになりつつあるね…
やねうらお−よっちゃんイカを買いに行ったついでに家を買う男

対処は 2005-04-18 の「Bloglines から エクスポートした OPML が文字化けする現象への対処」で書いたように、問題を引き起こす RSS フィードを zzz_broken というディレクトリに隔離することだ。そして、問題のあるフィードと問題のないフィードを同時に開かないこと。問題のあるフィードはBloglines においては本文を読めないので、「アンテナ的」にしか使えないけど、他のフィードに問題が波及するよりは良い。

ここまでが、私が経験から導き出した対策。今日は、もう少し突っ込んで調べてみることにする。

- RSS の文法チェック

まず、RSS の文法が正しいことを確認しておく。2004-12-19 の「RSS Validator RSS/RDF の構文・妥当性と文法チェック」で紹介した Feed Validator と RSS Validator、W3C RDF Validation Service でチェックする。

対象 RSS は http://kitaj.no-ip.com/tdiary/index.rdf だ。

Feed Validator Results: http://kitaj.no-ip.com/tdiary/index.rdf
http://feedvalidator.org/check.cgi?url=http%3A%2F%2Fkitaj.no ...
Your feed appears to be encoded as "UTF-8", but your server is reporting "US-ASCII" [help]
line 9, column 1: Undefined channel element: copyright [help]

2つエラーが出ている。一つ目は、UTF-8 って XML 中に書いてるけどサーバは US-ASCII って HTTP レスポンスヘッダを返してるぞ、というエラー。これは当サイト Landscape でも同じエラーが出ているので、たぶん今回追跡している現象とは関係ないと思う。二つ目は、copyright 要素なんてスキーマにないよ、というエラー。二つ目はちょっとだけ怪しいかもしれない。

RSS Validator
http://rss.scripting.com/?url=http%3A%2F%2Fkitaj.no-ip.com%2 ...
Congratulations -- the RSS feed validates! You may include the following
logo text into your page if you want to express your support for RSS.

RSS Validator ではエラーなしと判定された。

W3C RDF Validation Service RDF Validator Results
http://www.w3.org/RDF/Validator/ARPServlet?RDF=%3C%3Fxml+ver ...
Validation Results
Your RDF document validated successfully.

W3C RDF Validation Service でもエラー無しと判定された。

基本的に、RSS に重大な文法違反があるわけではなさそうだ。次は Bloglines の出力している HTML を調べる。

- Bloglines が どんな HTML を出力しているか調べてみる

Bloglines が どんな HTML を出力しているか調べてみる。

http://www.bloglines.com/preview?siteid=273546 を開くと、Bloglines で今日のなんでやねんを表示させたときのプレビューが見られる。この時点でもうタイトルがおかしい。「今月のなんでやねんになりお」になってる。「お」って、Bloglines 開発陣には 2ちゃんねる VIP 板 (びっぷいた) 常駐の VIPPER でもいるのかな? 「それが Bloglines クオリティ」とか言ってたりして。

HTML がどうなっているかを調べるため、IE というか Sleipnir でページをレンダリングさせて、ページのソースを表示させる。

今日のなんでやねん,っつーか今月のなんでやねんになりお
http://www.bloglines.com/preview?siteid=273546
itemList = new Array();

itemText="";
itemText+="<h3><a title=\"サイト: 今日のなんでやねん,っつーか今月のなんでやねんになり縺\" href=\"http://kitaj.no-ip.com/tdiary/20050511.html#c01\" target=_blank>2005-05-11縺繝繧繝歇1] (O縺九b縺)</a></h3>";
itemText+="<p class=\"author\">";

「今日のなんでやねん,っつーか今月のなんでやねんになり」の後ろが文字化けしてる。2005-04-18 の「Bloglines から エクスポートした OPML が文字化けする現象への対処」と似たような化け方だ。UTF-8で78バイト目までは化けずに表示され、それより後で文字化けが始まっている。

http://www.bloglines.com/preview?siteid=273546 を Firefox で開いてみると、確かにタイトルは文字化けしているが本文は問題なく表示される。Firefox なら大丈夫というのは本当のようだ。使った Firefox は Mozilla/5.0 (Windows; U; Windows NT 5.0; ja-JP; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 。1.0.4 には日本語版が出たらアップデートしよう。

Firefox でソースを表示させてみる。
itemText="";
itemText+="<h3><a title=\"サイト: 今日のなんでやねん,っつーか今月のなんでやねんになり■\" href=\"http://kitaj.no-ip.com/tdiary/20050511.html#c01\" target=_blank>2005-05-11のツッコミ[1] (Oかもと)</a></h3>";

「今日のなんでやねん,っつーか今月のなんでやねんになり」の後ろにバイナリがくっついているが、その後に影響はないようだ。これが Firefox では問題が起こらない理由か。ちなみに、当サイトの RSS や HTML にバイナリを紛れ込ませたくはないので、上記引用においてバイナリは■に置き換えてある

RSS のchannel要素内の title 要素を見てみる。

今日のなんでやねんの RSS
http://kitaj.no-ip.com/tdiary/index.rdf
<channel rdf:about="http://kitaj.no-ip.com/tdiary/index.rdf">
<title>今日のなんでやねん,っつーか今月のなんでやねんになりつつあるね…</title>

ぱっと見では問題なさそう。RSS の文法チェックでも問題なかったし、やっぱりタイトルが長いことが原因か?

- テストケースを作ってみる

文字化けが起こる最小の RSS を作ってみる。さすがに 実在のドメインの RSS を勝手に配布するのはどうかと思ったので、link 要素は example.com で作成した。

http://sonic64.com/test/index.rdf
<?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:content="http://purl.org/rss/1.0/modules/content/"
xml:lang="ja-JP">
<channel rdf:about="http://sonic64.hp.infoseek.co.jp/test/index.rdf">
    <title>今日のなんでやねん,っつーか今月のなんでやねんになりつつあるね…</title>
    <link>http://example.com/</link>
    <description></description>
    <items>
        <rdf:Seq>
            <rdf:li rdf:resource="http://example.com/1"/>
        </rdf:Seq>
    </items>
</channel>
<item rdf:about="http://example.com/1">
<link>http://example.com/1</link>
<dc:date>2005-05-11T12:20:47+09:00</dc:date>
<title>2005-05-11のツッコミ[1] (Oかもと)</title>
<dc:creator>Oかもと</dc:creator>
<description>漏れも同じ現象だった。</description>
<content:encoded><![CDATA[漏れも同じ現象だった。]]></content:encoded>
</item>
</rdf:RDF>

上記 RSS を Bloglines に読ませてプレビューしてみる。

Bloglines | Preview Feed
http://www.bloglines.com/preview?siteid=1840248
ビンゴ。文字化け発生。

次に、問題が発生しなくなる最小の RSS を作る。

http://sonic64.com/test/index_short.rdf
<?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:content="http://purl.org/rss/1.0/modules/content/"
xml:lang="ja-JP">
<channel rdf:about="http://sonic64.com/test/index_short.rdf">
    <title>今日のなんでやねん</title>
    <link>http://example.com/</link>
    <description></description>
    <items>
        <rdf:Seq>
            <rdf:li rdf:resource="http://example.com/1"/>
        </rdf:Seq>
    </items>
</channel>
<item rdf:about="http://example.com/1">
<link>http://example.com/1</link>
<dc:date>2005-05-11T12:20:47+09:00</dc:date>
<title>2005-05-11のツッコミ[1] (Oかもと)</title>
<dc:creator>Oかもと</dc:creator>
<description>漏れも同じ現象だった。</description>
<content:encoded><![CDATA[漏れも同じ現象だった。]]></content:encoded>
</item>
</rdf:RDF>

Bloglines | Preview Feed
http://www.bloglines.com/preview?siteid=1840267
タイトルを短くした方は問題なく表示された。やはりタイトルが長いことが原因になっている。

ひとまずここまでにしておこう。本当は、バイナリエディタでどんなデータが混入しているのかとか、ASCII 文字だとどうなのか、日本語文字列でも大丈夫な文字があるのか、とかいろいろ調べたいところだが、まあ再現するテストケースが作れたからこれで良いでしょう。

- 考察

RSS 1.0 では、channel 要素内の title 要素の長さは40バイト以内に収めることを推奨しているが、それに引っかかっている・・・わけじゃあなさそう。単に Bloglines の文字列処理に不具合があるだけかな。DB のタイトル格納カラムを varchar(80) で定義してて、UTF-8 文字列のバイト境界を無視して切ってしまっているとかね。nvarchar などの文字列長での定義ならば良いんだけど。ちなみに、「Landscape - エンジニアのメモ」は UTF-8 で36バイト。まだまだ大丈夫。

Channel 要素内の Description 要素の中身が空なのが良くないのかなと思ったが、そうではなかった。文法チェックでもエラーでなかったし。

これを悪用して Bloglines ユーザ向けの DoS (Denial of Service) 攻撃ができるなあ。普段は有用な記事ばっかり書いて購読者を集めておいて、数日に一度だけ channel 要素内の title 要素を長くした RSS を配布するとか。なんか手間がかかるばっかりで攻撃の効果が薄いけど。

あと、本文や Description の html が不完全だったりすると表示が乱れることがある。閉じタグのない a 要素とかを書かれたりすると、それより後の本文が全部リンクになっちゃうとか。いちいち 記事の html が整形式 (well-formed) かどうかをチェックするのは大変なので仕方ないことだと思うけど。

channel 要素内の title 要素が長い場合に発生する問題については、Bloglines に報告した方が良さそうだ。

- Bloglines にバグレポートしよう

よし、2005-01-09 の「favicon.ico が bloglines で表示されない理由」の時みたいに、Bloglines にバグレポートしよう。もちろん、テストケースもちゃんと添えてね。と思ったけど、ねむくなったので今日はここまで。

追記。本件は 2005-05-15 の Bloglines に「本文が表示されない現象」をバグ報告 でBloglies にバグレポートした。

2005-05-10 (Tue)

* 「なんでも RSS」で RSS が無いサイトから RSS を生成

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

2005-05-09 で書いた RSS 生成サービス 「なんでも RSS」 http://blogwatcher.pi.titech.ac.jp/nandemorss/ をいくつかのサイトで適用してみた。適用後の RSS を RSS リーダーなどに一括登録するための OPML も記事の末尾に付けておいた。

- RSS がないサイトから RSS を生成する

以下のサイトは、RSS がなかった頃は時々見に行っていたサイトたち。その後、更新チェックに手間がかかるので見に行かなくなってしまった。

しかし、なんでも RSS を使って RSS を生成すれば、Bloglines などの RSS リーダーで簡単に更新チェックできる。これぞなんでも RSS の真骨頂。

メモ http://tabesugi.net/memo/cur/cur.html
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Bloglines でプレビュー: http://www.bloglines.com/preview?siteid=1806864
新山さんのサイト。http://tabesugi.net/memo/2004/53.html#211514 などのドサ屋の話がとっても美味しそうで好き。マサラドサの辛いジャガイモ食べたい。あと ed エディタの訳はとても笑えた。「これらは単語ですらない!!! 」が実に良い。

妖精現実 フェアリアル http://www.faireal.net/
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Bloglines でプレビュー: http://www.bloglines.com/preview?siteid=1808673
コアな話題が多い。著作権の話とか好き。

日記。 http://homepage1.nifty.com/bee/diary/
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Bloglines でプレビュー: http://www.bloglines.com/preview?siteid=1807491
自分の意見を確立している人。

TECHSIDE http://www.iris.dti.ne.jp/~spec/news2/bbsf.html
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Bloglines でプレビュー: http://www.bloglines.com/preview?siteid=1808609
埼玉の TECH さん。ゲームの話題とかが好きだった。

Shudo's Notes (技術フェチ日記) http://www.shudo.net/diary/
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Bloglines でプレビュー: http://www.bloglines.com/preview?siteid=1818836
Java のすごい人。画像が表示されないね。パスを上手く変換できてないのかな。

バーチャルネットアイドル・ちゆ12歳 http://tiyu.to/title.html
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Bloglines でプレビュー: http://www.bloglines.com/preview?siteid=1818792
マニアックな世界をわかりやすく解説してくれる。「野望の王国」の「なんちゅうでかいチャウチャウや!」ネタとか好きだったな。いまでも人気あるみたいだね。

連邦 http://www.renpou.com/cgi-bin/news/index.html
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Bloglines でプレビュー: http://www.bloglines.com/preview?siteid=1818784
筆者の周りの愉快な人たちの話が好きだった。Bloglines の中にあの色合いのテーブルが再現される。

憂鬱なプログラマによるオブジェクト指向日記 http://umi.no-ip.com/simple/
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Bloglines でプレビュー: http://www.bloglines.com/preview?siteid=1818781
統計ネタとか好きだった。おおー、今でも専業主婦を攻撃している模様。よく続いてるなあ。

- 見出しや要約だけの RSS を配信しているサイトを全文入り RSS にする

以下のサイトたちは公式に RSS などを配信してるけど、RSS に入っているのは見出しや要約だけで本文が入っていない。私は 2004-10-26 の 「content:encodedが足りねぇ… じゃんじゃん 持ってこい」などで書いたように、全文入った RSS が好き。だって、いちいちそのサイトに見に行かなくても、Bloglines などの RSS リーダーで一気に読めるから。

というわけで、全文入り RSS を配信していないサイトを、なんでも RSS の力を使って全文入りに変えてみる。

切込隊長BLOG(ブログ)〜俺様キングダム〜 http://kiri.jblog.org/
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Bloglines でプレビュー: http://www.bloglines.com/preview?siteid=1819711
左の青い帯は何だろう?

My Life Between Silicon Valley and Japan http://d.hatena.ne.jp/umedamochio/
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Bloglines でプレビュー: http://www.bloglines.com/preview?siteid=1820168
梅田望夫さん。C|NET の「梅田望夫・英語で読むITトレンド」で有名。
追記。その後全文入りの RSS を公式に配布するようになったので、なんでも RSS で全文入り RSS を生成する必要はなくなった。

趣味のWebデザイン http://deztec.jp/design/
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Bloglines でプレビュー: http://www.bloglines.com/preview?siteid=1820496
考察が独特で好き。

未来のいつか/hyoshiokの日記 http://d.hatena.ne.jp/hyoshiok/
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Bloglines でプレビュー: http://www.bloglines.com/preview?siteid=1820581
バリバリの開発者。実体験からつづられる方法論は興味深い。

大器晩成型:洸史郎 http://moai.blog.ocn.ne.jp/
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Bloglines でプレビュー: http://www.bloglines.com/preview?siteid=1820268
公式に配信されている RSS では洸史郎くんの写真が見られないが、なんでも RSS で変換すれば写真が見られるようになる。かわいい。

itoya_laboratory*net_news http://www.uzura.jp/
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Bloglines で プレビュー: http://www.bloglines.com/preview?siteid=1807813
あの独特の色合いが Bloglines 上で再現される。なんだか新鮮な感じだ。

NGM - Text for Video Game http://ngm.web.infoseek.co.jp/
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Bloglines でプレビュー: http://www.bloglines.com/preview?siteid=1820786

- なんでも RSS で RSS に変換できなかったサイト

Radium Software Development は RSS に変換できなかった。年の表記が 2005 などではなく、05 と頭2桁が省略されているためだろう。残念だ。

Radium Software Development http://www.radiumsoftware.com/diary.html
http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...
Radium Software Developmentの解析結果
http://www.radiumsoftware.com/diary.html
日付情報が見つかりませんでした.

- 今回紹介した RSS の OPML

上記サイトを一つ一つ RSS リーダーに登録するのは手間がかかる。OPML を使えば一気に登録できる。
ただし、「憂鬱なプログラマによるオブジェクト指向日記」と「ちゆ」は文字化けしてたので除外した。

<?xml version="1.0" encoding="utf-8"?>
<opml version="1.0">
<head>
    <title>Bloglines Subscriptions</title>
    <dateCreated>Tue, 10 May 2005 15:27:33 GMT</dateCreated>
    <ownerName></ownerName>
</head>
<body>
  <outline title="Subscriptions">
    <outline title="tmp">
        <outline title="2005年 5月 (1)。" htmlUrl="http://tabesugi.net/memo/cur/cur.html" type="rss" xmlUrl="http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url=http%3A%2F%2Ftabesugi.net%2Fmemo%2Fcur%2Fcur.html&amp;key=body%2F%2F%2F%2Fh4%2Fa" />
        <outline title="itoya_laboratory*net_news[今月のニュース]" htmlUrl="http://www.uzura.jp/" type="rss" xmlUrl="http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url=http%3A%2F%2Fwww.uzura.jp%2F&amp;key=body%2Fdiv%2Ftable%2Ftr%2Ftd%2Ffont%2Fb" />
        <outline title="My Life Between Silicon Valley and Japan" htmlUrl="http://d.hatena.ne.jp/umedamochio/" type="rss" xmlUrl="http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url=http%3A%2F%2Fd.hatena.ne.jp%2Fumedamochio%2F&amp;key=body%2Fdiv%2Fdiv%2Fdiv%2Fh2%2Fa%2Fspan" />
        <outline title="NGM - Text for Video Game" htmlUrl="http://ngm.web.infoseek.co.jp/" type="rss" xmlUrl="http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url=http%3A%2F%2Fngm.web.infoseek.co.jp%2F&amp;key=body%2Fdiv%2Fdiv" />
        <outline title="renpou" htmlUrl="http://www.renpou.com/cgi-bin/news/index.html" type="rss" xmlUrl="http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url=http%3A%2F%2Fwww.renpou.com%2Fcgi-bin%2Fnews%2Findex.html&amp;key=body%2Ftable%2Ftr%2Ftd%2Ftable%2Ftr%2Ftd%2Ffont%2Fb" />
        <outline title="Shudo's Notes (2005/5)" htmlUrl="http://www.shudo.net/diary/" type="rss" xmlUrl="http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url=http%3A%2F%2Fwww.shudo.net%2Fdiary%2F&amp;key=body%2Fdl%2Fdt%2Fa%2Ffont" />
        <outline title="TECHSIDE" htmlUrl="http://www.iris.dti.ne.jp/~spec/news2/bbsf.html" type="rss" xmlUrl="http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url=http%3A%2F%2Fwww.iris.dti.ne.jp%2F%7Espec%2Fnews2%2Fbbsf.html&amp;key=body%2Ftable%2Ftr%2Ftd%2Ftable%2Ftr%2Ftd%2Fsmall%2Fb" />
        <outline title="切込隊長BLOG(ブログ)" htmlUrl="http://kiri.jblog.org/" type="rss" xmlUrl="http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url=http%3A%2F%2Fkiri.jblog.org%2F&amp;key=body%2Fdiv%2Fdiv%2Fdiv%2Fh3" />
        <outline title="大器晩成型:洸史郎" htmlUrl="http://moai.blog.ocn.ne.jp/gt/" type="rss" xmlUrl="http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url=http%3A%2F%2Fmoai.blog.ocn.ne.jp%2Fgt%2F&amp;key=body%2Fdiv%2Fdiv%2Fdiv%2Fdiv%2Fdiv%2Fh2" />
        <outline title="妖精現実 フェアリアル" htmlUrl="http://www.faireal.net/" type="rss" xmlUrl="http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url=http%3A%2F%2Fwww.faireal.net%2F&amp;key=body%2Fdiv%2Fdiv%2Fh3" />
        <outline title="日記。" htmlUrl="http://homepage1.nifty.com/bee/diary/" type="rss" xmlUrl="http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url=http%3A%2F%2Fhomepage1.nifty.com%2Fbee%2Fdiary%2F&amp;key=body%2Fh2" />
        <outline title="未来のいつか/hyoshiokの日記" htmlUrl="http://d.hatena.ne.jp/hyoshiok/" type="rss" xmlUrl="http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url=http%3A%2F%2Fd.hatena.ne.jp%2Fhyoshiok%2F&amp;key=body%2Fdiv%2Fdiv%2Fdiv%2Fh2%2Fa%2Fspan" />
        <outline title="趣味のWebデザイン" htmlUrl="http://deztec.jp/design/" type="rss" xmlUrl="http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url=http%3A%2F%2Fdeztec.jp%2Fdesign%2F&amp;key=body%2Fdiv%2Fh3" />
    </outline>
</outline>
</body>
</opml>

2005-05-09 (Mon)

* RSS 生成サービス なんでも RSS と Bloglines の連携

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

なんでも RSS は、HTML を解析して RSS にしてしまうサービス。

- なんでも RSS 公式サイト

なんでもRSS 0.1b
http://blogwatcher.pi.titech.ac.jp/nandemorss/

- なんでも RSS はすごい

なんでも RSS はすごい。http://tabesugi.net/memo/cur/cur.html のように RSS を提供してないサイトでも、難なく RSS を生成してくれる。こんな感じ。http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ...

日付文字列を区切り文字として使っているとのこと。類似のサービスに MyRSS.jp http://myrss.jp/ があるが、MyRSS.jp はリンクから HTML を解析して RSS を生成するというところが違う。

なんでも RSS では以下のような Bookmarklet も用意している。これを使うと、お気に入りから直接なんでも RSS のサービスを呼び出せる。
javascript:location.href='http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url=' + encodeURIComponent(location.href)

- Bloglines と なんでも RSS の連携

なんでも RSS の Bookmarklet と Bloglines の サイト登録 Bookmarklet を組み合わせて、Bloglines の登録画面を呼び出す Bookmarklet を作ってみる。

以下は Bloglines のサイト登録 Bookmarklet。お気に入りに登録してから、Bloglines に登録したいページをブラウザで表示した状態で呼び出すと、http://www.bloglines.com/sub/http://sonic64.com/cl.xml のような登録画面が出る。登録済みのサイトだと、すでに登録してるよって言われるけど。
javascript:location.href='http://www.bloglines.com/sub/'+location.href

で、2つを組み合わせると以下のようになる。実行すると、現在表示中のページの URL をなんでも RSS になげて RSS に変換し、さらにその URL を Bloglines に投げて Bloglines の RSS 登録画面を呼び出す、という動きをするはずだ。

javascript:location.href = 'http://www.bloglines.com/sub/http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url=' + encodeURIComponent(location.href)

上記 Bookmarklet を実行すると・・・あれ? なんか変。
http://www.bloglines.com/preview?siteid=1811750

あー、RSS そのものじゃなくて、なんでも RSS の画面を出す Bookmarklet だからこういう結果になったのか。

ん? RSS そのものの URL http://blogwatcher.pi.titech.ac.jp/nandemorss/index.cgi?url= ... には、key ってのが入ってるね。

こいつは曲者だな。日付文字列を分離するための情報として key に記述された html タグを使ってるんだろうな。となると、key には html ごとに異なる値が設定されることになるし、汎用の Bloglines 登録 Bookmarklet に仕立てるにはちょっと手間がかかるな。ねむくなってきたし、残念だけどあきらめるか。

2005-04-30 (Sat)

* Readme! が RSS を配信していた

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

ReadMe! Japan が http://readmej.com/report/report.rdf で更新情報の RSS を配信していた。気づかなかった。

http://www.bloglines.com/preview?siteid=1109137
ReadMe! JAPAN
コラム・日記など「読み物」を対象とした、更新情報&ランキングサイトです。
http://readmej.com [http://readmej.com/report/report.rdf]

最近配信を始めた CodeZine の RSS http://codezine.jp/rss/new/10/index.xml は bloglines で subscribe したけど、ReadMe! の RSS は一般読者としては使い道を思いつきにくいな。要するに WeblogUpdates.ping サイトが受理した ping 一覧ってことだもんね。

2005-04-18 (Mon)

* Bloglines から エクスポートした OPML が文字化けする現象への対処

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

http://www.bloglines.com/export にブラウザでアクセスしたとき、XML を正常に表示できない場合がある。原因の一つとして、OPML 中のサイト名に文字化けが発生していることが挙げられる。たとえば IE では以下のようなエラーが表示される。

XML ページを表示できません

XSL スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。
-----------------------------------------------------

テキストの内容に無効な文字が見つかりました。リソース 'http://www.bloglines.com/export' の実行エラーです。ライン 971、位置 76

http://www.bloglines.com/export をブラウザに表示させるのではなく、右クリックして直接ファイルに保存すると、該当行付近で盛大に文字化けしているのが分かる。

- OPML の文字化け原因の傾向と対策

私も原因をはっきりつかんでいるわけではないが、文字化けを起こすサイトを見ていると以下の傾向があるように思える。

・サイト名に ASCII 以外の文字が使われている
・サイト名が長い

私は文字化けを起こすようなサイトは Bloglines 上で zz_broken というディレクトリに入れることにしている。Bloglines の OPML エクスポートは ディレクトリ名とサイト名のアルファベット順だ。文字化けを引き起こすサイトの出現位置を最後にすることで、文字化けの影響範囲を最小限にするという狙いだ。ただ、設定によってはアルファベット順にサイトが並ばないかもしれない。そういう場合は文字化けを起こすサイトを OPML の末尾に持ってくる工夫が要る。

RSS のバージョンによっては title の文字数を制限している。もしかしたら、それを無視しているサイトがひっかかっているのかも。

追記。2005-05-13 の「Bloglines で本文が表示されない現象の原因と対処」で述べたことが OPML の文字化けにも関連していると思われる。

2005-04-17 (Sun)

* Bloglines の登録データをバックアップする シェルスクリプト

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [バックアップ] [シェルスクリプト] [RSS]

bloglines に登録したサイト一覧を定期的に自動で OPML にエクスポートしてバックアップする方法。

- Bloglines の登録データをバックアップするシェルスクリプトの概要

http://www.bloglines.com/export に Bloglines の Cookie 付きで HTTP GET し、返ってきたレスポンスを保存する。あとはこれを cron などで定期的に自動実行すれば OK。

やっぱり自分のデータは手元に置いておきたい。他の RSS リーダに乗り換えるときに手元に OPML があれば楽だろうから、定期的なバックアップは取っておきたいし。

- Bloglines の登録データは OPML でエクスポートできる

Bloglines のアカウントを持っている人なら、http://www.bloglines.com/export にアクセスすると Bloglines で購読しているサイトの一覧を OPML でエクスポートすることができる。http://www.bloglines.com/export には特にユーザを識別するようなクエリが付いていない。おそらく Cookie にユーザーデータが入っていて、それでユーザを識別しているんだろう。Web アプリケーションの定石だね。

2005-04-18 追記。「Bloglines から エクスポートした OPML が文字化けする現象への対処」という記事を書いた。

- Live Http headers で HTTP トランザクションの中身を調べる

どんな Cookie が Bloglines に送信されているかを見てみる。

Firefox を起動し、2005-04-16 の「Live Http headers - HTTP ヘッダ表示ツール」で書いた Live Http headers で HTTP ヘッダを表示させながら Bloglines にアクセスする。Bloglines の登録に使ったメールアドレスとか、色々それらしき情報を見ることができた。私のアカウントを保護するため、一部伏せ字や文字の削除をした。

http://www.bloglines.com/export

GET /export HTTP/1.1
Host: www.bloglines.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; ja-JP; rv:1.7.6) Gecko/20050318 Firefox/1.0.2
Accept: text/xml,application/xml,application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: BloglinesLang=0; BloglinesTracker=MXk4zPhcOWV3tjEJV14gNY; BloglinesEmail=blog****@**********.com; clickedFoldersubtree=; clickedFoldermanagetree=

HTTP/1.x 200 OK
Date: Sun, 17 Apr 2005 12:47:22 GMT
Server: Apache/1.3.31 (Unix)
Cache-Control: no-cache, must-revalidate, no-cache="Set-Cookie", private
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Pragma: no-cache
Set-Cookie: BloglinesLang=0; path=/; expires=Monday, 17-Apr-2006 23:59:59 GMT
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/xml; charset=utf-8

ちなみに Cookie を無効にして http://www.bloglines.com/export にアクセスすると、ログイン画面に飛ばされた。つまり、http://www.bloglines.com/export に Cookie 付きでアクセスすればいいということ。

Cookie の有効期限は expires=Monday, 17-Apr-2006 23:59:59 GMT なので、一年間だ。

- Bloglines の登録データをバックアップするシェルスクリプト

Perl などで書いても良いけど、これくらいだったらシェルスクリプトで十分。wget で HTTP リクエストを投げ、date コマンドで7世代分残す。

wget で送信する Cookie は --header='' に記述する。さっきの Live Http headers で表示させた Cookie をそのまま使えばいい。

#!/bin/sh

wget --header='Cookie: BloglinesLang=0; BloglinesTracker=MXk4zPhcOWV3tjEJV14gNY; BloglinesEmail=blog****@**********.com; clickedFoldersubtree=; clickedFoldermanagetree=' http://www.bloglines.com/export -O $HOME/etc/bloglines`date +%u`.opml

ちなみに、date コマンドの引数の +%u は 月曜日を1とし、日曜日を7とする数字で、毎日出力が変わる。7世代分残したいからこれを使った。
date --help の結果から抜粋。
%u  day of week (1..7);  1 represents Monday"

上記スクリプトを export_bloglines_opml.sh というファイル名で保存する。
crontab に登録し、毎日 01:01 に実行する。
1 1 * * * nice -19 /home/aqua/script/export_bloglines_opml.sh

ホームディレクトリは 2004-11-09 の「GMail をバックアップストレージとして使う」で書いたスクリプトで毎日バックアップしている。これでとりあえず大丈夫でしょう。Cookie の有効期限までは自動でバックアップがとれる。

- public 設定の人は Cookie 不要

2005-04-19 追記。Public 設定にしておけば Cookie 不要で OPML をエクスポートできる。

void GraphicWizardsLair( void ); // http://www.otsune.com/diary/ の otsune さんから以下のメールを頂いた。ありがとうございます。

public設定になっているIDの人は
http://www.bloglines.com/export?id=hoge
というURLでもエクスポートできるようです。

なるほど。public ってどこで設定するんだろう? ちょっと調べてみよう。

わかった。Bloglines にログインして、右上の「アカウント」の「ブログ設定」から Public 属性を設定できる。パンくずリストで言うと、「ホーム > アカウント > ブログ設定」。ここでユーザ名を登録して、「ブログの公開設定」を「はい」にすれば良い。

ブログの公開設定:
○ はい、ブログとブログロールを公開します
● いいえ、ブログを公開しません

あなたのアカウントを非公開にすると、あなだだけ見ることができます。
公開すると、あなたのブログにアクセスできます http://www.bloglines.com/blog/************

やり方も分かったし、Public 設定を試してみたい。テスト用のアカウントを登録して Public にしてみよう。アカウント名は最近鉄拳5のおまけにも付いた StarBlade がいいかな。

http://www.bloglines.com/export?id=StarBlade
<?xml version="1.0" encoding="utf-8"?>
<opml version="1.0">
<head>
    <title>Bloglines Subscriptions</title>
    <dateCreated>Mon, 18 Apr 2005 15:03:26 GMT</dateCreated>
    <ownerName>StarBlade</ownerName>
</head>
<body>
  <outline title="Subscriptions">
    <outline title="Bloglines | News" htmlUrl="http://www.bloglines.com" type="rss" xmlUrl="http://www.bloglines.com/rss/about/news" />
    <outline title="Landscape - エンジニアのメモ" htmlUrl="http://sonic64.com/" type="rss" xmlUrl="http://sonic64.com/cl.xml" />
    <outline title="Landscape - エンジニアのメモ" htmlUrl="http://sonic64.com/" type="rss" xmlUrl="http://sonic64.com/cl-full.xml" />
    <outline title="@IT" htmlUrl="http://www.atmarkit.co.jp" type="rss" xmlUrl="http://www.atmarkit.co.jp/rss/rss.xml" />

</outline>
</body>
</opml>

なるほど、そのまま OPML でエクスポートできた。確かにこれならいちいち Cookie をセットしなくていいので簡単かつ確実に OPML をエクスポートできる。公開してる人にはこっちの方が楽で良いね。秘密主義の私にはできないけど。、

ちなみに、RSS 登録時に「非公開」扱いにしたサイトは表示されない。
フィードを登録していることを:
  公開
  非公開

非公開の登録はブログロールには表示されません

もうひとつ分かったこと。「ホーム > アカウント > ブログ設定」でユーザ名だけ登録しておいて「いいえ、ブログを公開しません」を選んで http://www.bloglines.com/export?id=************ にアクセスすると Internal Server Error になる。Bloglines 開発チームの考慮漏れかな?

いろいろ調べて好奇心を満たした後、ふと Bloglines を見ると「共有」という怪しげなタブがあった。見てみると、試したことがちゃんと書いてあった。最初に見ておけば良かったね。

Bloglines | あなたの登録をシェア
http://www.bloglines.com/help/share
ホーム > ヘルプ > ブログロールウィザード

Bloglinesではあなたが登録しているフィードを2通りの方法でほかの人と共有することができます。1つ目の方法はあなたのプロファイルで共有を許可する方法です。共有設定をオンにすると、あなたが登録しているフィードがすべて公開されます。登録フィードの一覧を表示した状態で編集リンクをクリックすれば個別のフォルダや登録フィードを非公開にすることができます。非公開フォルダや非公開登録フィードはブログロールや/blogビューには表示されません。

/public

ブログロールに加えて、公開登録フィードはBloglinesのウェブサイトで公開されます。あなたの公開フィードは次のURLから参照できます:

http://www.bloglines.com/public/StarBlade
あなたの公開フィードはOPMLファイルとしてエクスポートされます。

Public 設定にしていれば http://www.bloglines.com/export?id=StarBlade だけじゃなく、 http://www.bloglines.com/public/StarBlade という URL でも OPML をエクスポートできるんだね。

- http://www.bloglines.com/public/StarBlade が OPML エクスポートじゃなくなった?

2005-04-19 追記。
なんかいろいろいじってたら http://www.bloglines.com/public/StarBlade が OPML エクスポートじゃなくて単なるフィード紹介ページみたいになっちゃった。OPML をバックアップするという使い方なら、http://www.bloglines.com/export?id=StarBlade の記法が一番確実な模様。

- w3m を使って Bloglines の OPML をエクスポート

public 設定にできない人向けの楽なエクスポート方法を、読書記録ChangeLog http://dkiroku.com/ のうぞよとさんが書いてくださった。

Bloglines の登録データをバックアップする シェルスクリプト
http://dkiroku.com/2005-04-19-2.html
w3mを使用すればもっと簡単です。
(1)w3mでhttp://www.bloglines.com/exportなどにアクセス。
(2)手作業でログインする。
(3)いったんw3mを終了
(4)以下のコマンドを実行
w3m \
-config /home/usename/.w3m/config \
-cookie \
http://www.bloglines.com/export > export.xml

w3mを使用すれば簡単にクッキーを食わせることが可能なのです。
Yahooファイナンスのポートフォリオ機能などでも使用できます。

おお、なるほど。HTTP リクエストヘッダを表示させるといった、面倒なことが必要ないというところが素晴らしい。w3m はテキストベースのウェブブラウザだし、コマンドラインとの相性も良いはず。さっそくやってみよう・・・と思ったけど、手元の FreeBSD マシンには w3m 入ってないや。あとで試すことにする。

2005-04-13 (Wed)

* XML の CDATA 中では ]]> のエスケープが必要

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

XML の CDATA 中では ]]> のエスケープが必要だ。

- エスケープ必要だよね?

RSS の content::encoded には < や > " をエスケープせずに CDATA として直接記述できる。でも、CDATA の開始や終了を示す <![CDATA や ]]> が登場したらどうなるんだろう? CDATA の終了を判別できなくなるよね。XML というより SGML の規則のような気もするが、調べてみる。

XML用語事典 [CDATAセクション]
http://www.atmarkit.co.jp/aig/01xml/cdata.html
CDATAセクションは、<![CDATA[という文字列で始まり、]]>という文字列で終わる。CDATAセクションの内部には、XMLで利用可能な文字をすべて記述することができる。唯一の例外は]]>という文字列だけで、これを記述することはできない。記述しても、CDATAセクションの終了を示すと解釈されてしまう。

Studying XML -- second step -- [ エスケープ ]
http://www.asahi-net.or.jp/~ps8a-okzk/xml/xml_2/escape.html
 CDATAセクションは、 <や&をエスケープしなくてよい場所ですが、 ]]>という文字列が含まれる場合には ]]&gt;のようにエスケープする必要があります。

あ、やっぱりエスケープしなきゃいけないんだね。

Chalow の RSS 出力部分は私好みになるようにほとんど書き換えてしまってるんだけど、そこでは ]]> のエスケープはやってなかったなあ。まずいな。・・・と思ったけど、データには無条件にhtml エスケープを施してるし、その上で html を追加しているから、Chalow 側で明示的に ]]> を追加しない限り問題ないんだな。

- ]]> を CDATA 中に直接記述する

CDATA 中に ]]> が生で登場したらどうなるか試す。

まずは ]]> が登場しない XML を書いてブラウザに表示させてみる。

<?xml version="1.0" encoding="euc-jp"?>
<sonic>
  <![CDATA[<a href="http://sonic64.com/">Landscape - エンジニアのメモ</a>]]>
</sonic>

うん、問題なく表示された。あたりまえだけどね。で、Landscape に続く - の文字を ]]> に変えてみる。

<?xml version="1.0" encoding="euc-jp"?>
<sonic>
  <![CDATA[<a href="http://sonic64.com/">Landscape ]]> エンジニアのメモ</a>]]>
</sonic>

XML パースエラー: タグの対応が間違っています. 閉じタグが必要です: </sonic>.
URL: file:///d:/tmp/test.xml
行番号: 3, 列番号: 80:  <![CDATA[<a href="http://sonic64.com/">Landscape ]]> エンジニアのメモ</a>]]>
-------------------------------------------------------------------------------^

Firefox で予想通りエラー。^ が示す位置が微妙に違う気がするけど、まあ気にしないでおこう。

XML ページを表示できません
XSL スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。


--------------------------------------------------------------------------------

終了タグ 'a' が開始タグ 'sonic' と一致していません。リソース 'file:///d:/tmp/test.xml' の実行エラーです。ライン 3、...

  <![CDATA[<a href="http://sonic64.com/">Landscape ]]> エンジニアのメモ</a>]]>
-----------------...

IE でもエラー。

- ]]> を ]]&gt; にエスケープ

エスケープして記述する。

<?xml version="1.0" encoding="euc-jp"?>
<sonic>
  <![CDATA[<a href="http://sonic64.com/">Landscape ]]&gt; エンジニアのメモ</a>]]>
</sonic>

Firefox での表示。スタイルシートはなし。ところで、エスケープした ]]&gt; を ]]> にアンエスケープしてくれないのかな。
<sonic>
<a href="http://sonic64.com/">Landscape ]]&gt; エンジニアのメモ</a>
</sonic>

IE スタイルシートなしで表示させても同くアンエスケープされない。うーん。まあ Firefox や IE の XML 閲覧機能はおまけみたいなものだから仕方ないかな。
  <?xml version="1.0" encoding="euc-jp" ?>
- <sonic>
- <![CDATA[ <a href="http://sonic64.com/">Landscape ]]&gt; エンジニアのメモ</a>
  ]]>
  </sonic>

2005-03-23 (Wed)

* 巨大な RSS/RDF/Atom を求めて

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

巨大な RSS は男のロマンだという話。

- 108 件のRSS

Dead bookmark - 徹人28号が行く++
http://kitsune.info/blog/?itemid=434
さて、この freshmeat の RSS フィードですが、数ヶ月前まではほんの数件(たしかひと桁だったと思う)しかフィードしてくれませんでした。オープンソースソフトウェアは世界中で日夜開発が続けられているので、これではあっという間にフィードの中身が入れ替わってしまいます。当然見落としがあるでしょうから、これは不便な話でした。

ところがある時から、freshmeat のフィード件数が増えたのです。それもふたつみっつ増えたなんてレベルじゃありません。クリックするとモニタの下限まで行ってまだ余るくらいの数です。今までにいろいろな RSS フィードを見てきましたが、こんなに件数が多いフィードは見たことがありません。freshmeat に登録されているプロジェクトは 3万6千件以上あるらしいので、それもまた当然といえば当然なのですが、それにしても多すぎます。

先ほどふと思い立って、いったい何件フィードされているのか調べてみることにしました。方法は簡単。全フィードを個別のタブで開けばよいのです。私の Firefox は多段タブにしてあるので、全部開けばかけ算でフィード件数がわかります。

……あれ、Firefox が入力を受け付けなくなってしまった。さすがにこんなに開いたらメモリの食い過ぎか?

待つこと 10分。ようやくコントロールを取り戻した Firefox のタブを数えてみました。その数なんと 108枚。まさか 3桁の大台に乗るとは。普通 RSS フィードつーたらあーた、多くても 30件くらいでしょうが。

ちょうど108件なんて、除夜の鐘みたいだ。煩悩が詰まった RSS か。読んでみたいな。

でも、108件のフィードなんて大したこと無いですよ。手前味噌ながら、当サイト Landscape の RSS http://sonic64.com/cl-full.xml にはこの記事を含めて677件のフィードが入ってますから。freashmeat の RSS の約7倍の件数だから、70分あれば Firefox でも開けます。たぶん。

少食な RSS リーダの方には http://sonic64.com/cl.xml がおすすめ。直近7日分の記事しか入れていないので、全記事を格納した RSS に比べてとてもコンパクトです。

- 膨大な情報が詰まったテキストファイルは男のロマン

108件しか入ってないとはいえ、大きな RSS フィードというだけで興味をそそられる。ファイルサイズも巨大だとなお良い。2004-02-17 の「攻殻機動隊 S.A.C. 第5話を見る」でも書いたけど、テキストファイルに膨大な情報が詰まっているっていうだけでワクワクする。男のロマンだ。蛇足だけど、2004-02-17 に書いた「とあるデータファイル」とは、前述の Landscape の 全記事を格納したRSSのこと。

よし、freashmeat の RSS を見に行ってみよう。「俺より強い奴に会いに行く」って感じかな。

- freashmeat の RSS

http://freshmeat.net/ にアクセスすると、右上に XML アイコンがある。これかな。

freashmeat XML アイコンのリンク先
http://download.freshmeat.net/backend/
Files

fm-projects-0.1.dtd Mon May 5 08:14:45 2003  7979 bytes
fm-projects-0.2.dtd Mon May 5 08:15:15 2003  8140 bytes
fm-projects-0.3.dtd Mon Nov 10 00:04:05 2003  9209 bytes
fm-projects-0.4.dtd Mon Jan 3 01:38:10 2005  9454 bytes
fm-projects.rdf.bz2 Wed Mar 23 04:01:38 2005  7172546 bytes
fm-releases-global.xml Wed Mar 23 08:55:14 2005  80365 bytes
fm-releases-handhelds.xml Wed Mar 23 08:55:15 2005  1570 bytes
fm-releases-osx.xml Wed Mar 23 08:55:16 2005  9021 bytes
fm-releases-themes.xml Wed Mar 23 08:55:16 2005  394 bytes
fm-releases-unix.xml Wed Mar 23 08:55:29 2005  79254 bytes
fm-search-0.1.dtd Sun May 5 11:05:31 2002  7774 bytes
fm-search-0.2.dtd Mon Jan 3 01:37:54 2005  9194 bytes
fm-trove-0.1.dtd Tue Nov 4 04:30:30 2003  7113 bytes
fm-trove.rdf Wed Mar 23 04:03:08 2005  10186180 bytes
recentnews.txt Wed Mar 23 08:50:04 2005  953 bytes
rss-0.91.dtd Sun Nov 28 05:07:41 2004  8361 bytes

こりゃすごい。fm-trove.rdf がとくに突き抜けてる。10186180 bytes だって。カンマを振らないと読みにくいな。10,186,180 だから・・・約10メガバイトか。すごいな。当サイトの RSS の約3倍強のサイズだ。これは中も見てみなきゃね。bloglines で読んでみるか。

・・・って、あれ? http://www.bloglines.com/sub/http://download.freshmeat.net/b ... から購読しようとしたけどエラーになっちゃうな。

No feeds were found. Please verify that the website publishes an RSS feed.
あれ? これって RSS じゃないの?

- fm-trove.rdf の中身テキストエディタで見てみる

bloglines で見られないので、ダウンロードしてテキストエディタで開いてみる。

fm-trove.rdf
http://download.freshmeat.net/backend/fm-trove.rdf
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE trove-listing SYSTEM "http://freshmeat.net/backend/fm-trove-0.1.dtd">
<trove-listing>
  <descriminator>
    <id>6</id>
    <name>Development Status</name>
    <parent_id>0</parent_id>
    <root_id>0</root_id>
  </descriminator>
  <descriminator>
    <id>7</id>
    <name>Development Status :: 1 - Planning (disabled category)</name>
    <parent_id>6</parent_id>
    <root_id>6</root_id>
    <projects>
      <project_id>302</project_id>
      <project_id>4754</project_id>
      <project_id>7408</project_id>
      <project_id>8708</project_id>
      <project_id>8805</project_id>
      <project_id>10136</project_id>
      <project_id>12161</project_id>
      <project_id>12568</project_id>
      <project_id>12784</project_id>
      <project_id>12850</project_id>
      <project_id>13629</project_id>
      <project_id>13896</project_id>
      <project_id>13960</project_id>
      <project_id>14018</project_id>
      <project_id>14045</project_id>
      <project_id>14295</project_id>
      <project_id>14408</project_id>
      <project_id>15813</project_id>
      <project_id>15865</project_id>
      <project_id>15919</project_id>
      <project_id>16233</project_id>
      <project_id>16315</project_id>
      <project_id>16339</project_id>
      <project_id>16978</project_id>
      <project_id>16979</project_id>
      <project_id>17218</project_id>
      <project_id>17303</project_id>
      <project_id>17336</project_id>
      <project_id>17337</project_id>
      <project_id>17692</project_id>
      <project_id>17906</project_id>
      <project_id>17966</project_id>
      <project_id>18118</project_id>
      <project_id>18336</project_id>
      <project_id>18759</project_id>
      <project_id>19086</project_id>
      <project_id>19763</project_id>
      <project_id>19923</project_id>
      <project_id>20175</project_id>
      <project_id>20317</project_id>
      <project_id>20329</project_id>
      <project_id>20415</project_id>
      <project_id>21161</project_id>
      <project_id>28022</project_id>
      <project_id>30241</project_id>
      <project_id>30545</project_id>
      <project_id>33206</project_id>
      <project_id>34481</project_id>
      <project_id>34484</project_id>
      <project_id>34517</project_id>
      <project_id>34767</project_id>
      <project_id>36449</project_id>
      <project_id>37421</project_id>
      <project_id>37855</project_id>
      <project_id>38283</project_id>
      <project_id>38800</project_id>
      <project_id>41048</project_id>
      <project_id>44057</project_id>
      <project_id>45123</project_id>
      <project_id>45242</project_id>
      <project_id>45682</project_id>
      <project_id>45747</project_id>
      <project_id>45759</project_id>
      <project_id>46083</project_id>
      <project_id>47001</project_id>
      <project_id>47421</project_id>
      <project_id>48002</project_id>
      <project_id>48778</project_id>
      <project_id>49010</project_id>
      <project_id>49154</project_id>
      <project_id>49984</project_id>
      <project_id>50637</project_id>
      <project_id>50810</project_id>
      <project_id>52002</project_id>
      <project_id>52649</project_id>
      <project_id>52707</project_id>
      <project_id>52747</project_id>
      <project_id>53131</project_id>
      <project_id>53231</project_id>
    </projects>
  </descriminator>

(以下略)

RDF ではあるけど、RSS じゃあないのか。残念。せっかく巨大な RSS に巡り会えたと思ったのにね。

というか、
<!DOCTYPE trove-listing SYSTEM "http://freshmeat.net/backend/fm-trove-0.1.dtd">
ってちゃんと書いてある。同じディレクトリに fm-trove-0.1.dtd などのファイルが置いてある時点で気づくべきだったな。

RSS で最大サイズなのは fm-releases-global.xml かな。
http://download.freshmeat.net/backend/fm-releases-global.xml

サイズは 80365バイト。うーん、大したことないね。「もっと強い奴と戦いたい!」って感じ。

あー、どこかに巨大な RSS や Atom は無いかな。アルバム1枚分の mp3 を Base64 エンコードして RSS に入れて配信するとか・・・これは巨大ではあるけど品性に欠けるか。そうだなあ、Wikipedia の全データを RSS に叩き込むとか、青空文庫の全作品を RSS にして配布するとか、そういうクールでアグレッシブなことをどこかでやってないかなあ。

2005-03-16 (Wed)

* RSS を XSLT で html に変換して見栄え良く表示する

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

Landscape の RSS に XSL (スタイルシート) を付けて、RSS を XSLT (XSL Transformations) を施した html として表示するようにした。

- XSLT で RSS を見栄え良く

当サイト Landscape は直近7日分の記事の全文入り RSS と、全記事・全文入りの RSS を配布している。

直近7日分の記事全文を含む RSS
http://sonic64.com/cl.xml

すべての記事全文を含む RSS
http://sonic64.com/cl-full.xml

これらは生の XML ファイルなので、そのままブラウザで閲覧しようとすると XML データがそのまま表示される。Mozilla などで Landscape の RSS を表示すると、以下のように「XSL が無いから仕方なく XML ドキュメントツリーを表示するよ」といった主旨のメッセージが表示される。
この XML ファイルにはスタイル情報が関連づけられていないようです。以下にドキュメントツリーを表示します。

実際に RSS のデータを利用するときは Bloglines や RSS リーダーで処理して表示させることがほとんどだと思われるので、 XSL が無くても問題はない。ただ、XSL があった方がブラウザで生の XML データを表示させたときに見やすい。というわけで、XSL を書いて RSS を html に変換して表示するようにしてみる。

- 先達の知恵を使え

ゼロから XSL を書き起こすのは大変そうなので、先達の書いた XSL を修正して自分好みの XSL を作ることにする。

日本で RDF/RSS やセマンティックウェブといったら The Web KANZAKI http://www.kanzaki.com/ だ。http://www.kanzaki.com/info/memo.xsl を参考に Landscape の XSL を記述する。

- RSS の content:encoded を XSL 変換後の文書に表示

2004-10-26 の「content:encodedが足りねぇ… じゃんじゃん 持ってこい」で書いたように、私は RSS に記事全文を入れる派だ。なので、今回の XSL でも content:encoded のデータをそのまま表示させるようにしたいところだ。

Web KANZAKI の XSL は content:encoded ではなく description を表示するようにしているので、ここは修正が必要。以下のようにした。

content モジュールの指定を追加。
description を呼び出している部分を content:encoded を呼ぶようにし、disable-output-escaping 属性を属性値 yes で追加。

  xmlns:content="http://purl.org/rss/1.0/modules/content/"
(略)
<xsl:value-of select="content:encoded" disable-output-escaping="yes"/>

- 完成した XLS

html で使っていたスタイルシート (CSS) を XSL 変換後の文書にも流用したかったので、同じような論理構造で html を出力するように XSL を仕上げた。以下に仕上げた XSL を引用しておく。favicon を呼び出すための記述なども追加しておいた。

http://sonic64.com/rss.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:rss="http://purl.org/rss/1.0/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  exclude-result-prefixes="rdf rss dc content"
>

<xsl:template match="/">
  <xsl:apply-templates select="rdf:RDF"/>
</xsl:template>

<xsl:template match="rdf:RDF">
  <html xml:lang="ja" lang="ja">
  <head>
    <title><xsl:value-of select="rss:channel/rss:title"/></title>
    <meta http-equiv="Content-Script-Type" content="text/javascript" />
    <link rel="stylesheet" href="diary.css" type="text/css" />
    <link rel="alternate" type="application/rss+xml" title="RSS" href="http://sonic64.com/cl.xml" />
    <link rel="alternate" type="application/rss+xml" title="RSS full archive" href="http://sonic64.com/cl-full.xml" />
    <link rel="shortcut icon" href="favicon.ico" />
  </head>
  <body>
    <h1><a href="{rss:channel/rss:link}"><xsl:value-of select="rss:channel/rss:title"/></a></h1>

    <p><a href="{rss:channel/rss:link}"><xsl:value-of select="rss:channel/rss:title"/></a> の記事<xsl:value-of select="count(rss:item)"/>件の全文です。RSS フィードを XSL 変換して表示しています。この RSS フィードをお使いの RSS リーダーに登録すれば <a href="{rss:channel/rss:link}"><xsl:value-of select="rss:channel/rss:title"/></a> の RSS を購読できます。</p>

    <xsl:apply-templates select="rss:item"/>

    <p class="credit">斎藤 宏明 <a href="mailto:sonic64@infoseek.jp">sonic64@infoseek.jp</a></p>
  </body>
  </html>
</xsl:template>

<xsl:template match="rss:item">
  <div class="day">
  <p class="pdate"><span class="date"><a href="{rss:link}"><xsl:value-of select="substring(dc:date, 1, 10)" /> </a></span></p>
  <div class="section">
    <div class="subtitle"><h2><a href="{rss:link}"><span class="sanchor">*</span></a> <strong class="clitemheader"><xsl:value-of select="rss:title"/></strong></h2>
    </div>
    <div class="sec_body">
    <xsl:value-of select="content:encoded" disable-output-escaping="yes"/>
    </div>
  </div>
  </div>
</xsl:template>

</xsl:stylesheet>

- RSS にスタイルシートを呼び出す記述を追加

RSS からスタイルシートを呼び出すための記述を追加する。

以下を RSS に追加するだけ。非常に簡単。
<?xml-stylesheet href="rss.xsl" type="text/xsl" media="screen"?>

- Mozilla の XSLT プロセッサは disable-output-escaping="yes" を無視する

Mozilla で動作確認をしてみると、content:encoded 部分が意図したとおりに表示されない。content:encoded 中の html タグがエスケープされているような動きをしている。

エスケープされるのを防ぐために、disable-output-escaping="yes" を追加しておいたが、それが効いていないようだ。
<xsl:value-of select="content:encoded" disable-output-escaping="yes"/>

どうやら、Mozilla に搭載されてる XSLT プロセッサは disable-output-escaping="yes" の指定を無視するようだ。その結果、content:encoded の中身がそのまま表示されてしまうわけだ。この現象は Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.5) Gecko/20041108 Firefox/1.0 の環境で発生した。

なんとかならないかなあ。JavaScript を使って UserAgent が Mozilla のときは document.write でレンダリングさせたりすればいいのかな。なんか手間がかかるなー。仕方ないので今回はとくに対処しないことにする。

追記。2005-03-19 に「Mozillaで XSLT適用後のDOMのinnerHTML にアクセスするとエラー」を書いた。結局問題は解決できなかったけど。

- xsl:output を付けると IE6 で文字化け

実は IE でも問題が発生していた。

<xsl:output method="html" encoding="utf-8" />
XSL に上記の指定を付けると WindowsXP の IE6 では盛大に文字化けしてくれる。どうやら出力を Shift_JIS として解釈してる模様。仕方がないので、xsl:output は指定しないことにした。

- さあ XSLT 付きの RSS を見てみよう

さあ、丹誠込めて作った XSL を適用した RSS をぜひ見て欲しい。

直近7日分の記事全文を含む RSS
http://sonic64.com/cl.xml

すべての記事全文を含む RSS
http://sonic64.com/cl-full.xml

直近7日分の方はせいぜい数十KB のサイズなのですぐにレンダリングされるけど、すべての記事全文の方はかなり重い。そもそも RSS 自体が 3MB 程度もあるからなー。

で、なにが便利なの? って聞かれるとちょっと困る。

「すべての記事全文を含む RSS」の方は利用価値があるかも。ブラウザの検索機能などを使って全文検索をしたいときに使えるだろうしね。あとは、Landscape の中身を全部印刷して読みたいときとかに有用かな。たぶん合計で数百ページ以上になると思うけど。

- 今後の野望

今回は比較的質素な XSL を書いたが、もっといろんな機能を盛り込んだ html を出力する XSL を書いても面白いかも。Google の検索窓を付けたり、amazon のライブリンク付けたり、記事一覧を付けたりして html 版と同じような見た目を再現してみようかな。あんまり意味ないけどね。

あとは http://sonic64.com/rss.xsl にアクセスすると生の XML 文書が表示されるのはなんか中途半端なので、XSL を XSL で見栄え良くするというのはどうだろう。

2005-02-11 (Fri)

* 2ちゃんねる ニュースヘッドラインの公式 RSS

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [2ch] [RSS]

2ちゃんねる ニュースヘッドラインの公式 RSS
http://headline.2ch.net/bbynews/news.rss

2ちゃんねる ヘッドラインの中身を RSS にしたもの。
2ちゃんねる ヘッドライン BBY (news)
http://headline.2ch.net/bbynews/

- RSS の中身

こんな感じ。
RSS は2.0。スレの >>1 の内容が description に入っている。板名は略記されたものが category としてマークアップされている。 pubDate はスレ立ての時刻。

<item>
  <title>[速+] 【国際】ロシアとウクライナ、サウジアラビア、ベトナムの世界貿易機関(WTO)年内加盟実現を…欧州委員</title>
  <link>http://news19.2ch.net/test/read.cgi/newsplus/1108175125/</link>
  <category>速+</category>
  <description>★ロシアなどWTOの年内加盟実現を・欧州委員  【ワシントン11日共同】訪米中の欧州連合(EU)のマンデルソン欧州委員(通商担当)は 11日、ワシントン市内で講演し、ロシアなど4カ国の世界貿易機関(WTO)加盟について、 今年12月に香港で開くWTO閣僚会議で実現したい考えを明らかにした。  マンデルソン委員は「WTO加盟国の拡大は優先事項だ。中国との経験がその有益さを 示している」と述べ、新興国をWTOルールに取り込んでいく重要性を指摘した。  4カ国は、加盟交渉が大詰めを迎えているロシアとウクライナ、サウジアラビア、ベトナム。  同委員はまた、イラク戦争を機にあつれきが生じた米国と欧州の関係修復の必要性も強調。 新多角的貿易交渉(ドーハ・ラウンド)成功に向けた協力を呼び掛けた。 日経新聞 http://www.nikkei.co.jp/news/kaigai/20050212STXKG000812022005.html</description>
  <pubDate>Sat, 12 Feb 2005 11:25:25 +0900</pubDate>
</item>

- bloglines で読むのには適してない

bloglines で購読するようにしてみたが、あまりの玉石混淆ぶりにもう購読をやめようかと思ってる。
だって、以下のようなニュースに混じって、

【社会】中国が東シナ海で勝手に進めるガス田開発に、日本の銀行が130億融資
http://news19.2ch.net/test/read.cgi/newsplus/1108168025/
[速+] 【社会】中国が東シナ海で勝手に進めるガス田開発に、日本の銀行が130億融資に

★中国・ガス田のパイプライン敷設 旧輸銀が130億円融資 ・東シナ海で中国が開発を進めている天然ガス田から上海まで海底パイプ  ラインを敷設する事業に対して、政府系金融機関の旧日本輸出入銀行  (現在の国際協力銀行)が一九九六年八月に、総額一億二千万ドル  (約百三十億円)の融資を実施していたことが分かった。

ちんこもげた
http://live14.2ch.net/test/read.cgi/liveplus/1108149263/
[実+] ちんこもげた
だkdljぁ

とかいうニュースが入ってくるんだもん。2ちゃんねるはそういう場所だってことはわかるが、bloglines だとカテゴリ毎にフィルタリングする機能がないし、読みにくい。オフィシャルな RSS なのは良いことだし、板ごとに配信するなどの工夫があると利用価値がさらに増すだろう。

あと、スレがものすごい勢いで立つから、すぐに bloglines の1フィードあたり200件の制限に引っかかってしまう。全記事を追跡するには向かない。もっとも、全記事を追跡なんて読むのが大変でやってられないと思うけど。

bby -- スレッド情報一元管理システム構築スレ2 から。
http://qb5.2ch.net/test/read.cgi/operate/1086868799/l50

2005-02-03 (Thu)

* .net で RSS を扱うためのライブラリ RSS.NET

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [RSS] [.net]

RSS.NET: An open-source .NET class library for RSS feeds
http://www.rssdotnet.com/
RSS.NET is an open-source .NET class library for RSS feeds. It provides a reusable object model for parsing and writing RSS feeds. It is fully compatible with RSS versions 0.90, 0.91, 0.92, and 2.0.1, implementing all constructs.

RSS.NET はオープンソースの RSS フィード用の .NET クラスライブラリです。RSS のパースや出力用の再利用可能なオブジェクトモデルを提供します。実装や構造は RSS バージョン 0.90, 0.91, 0.92, 2.0.1 互換です。

2005-01-27 (Thu)

* 自分の名前やあだ名を RSS 検索に登録しておく

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

RSS によって、特定のキーワードの出現をチェックし続けることが簡単になっている。RSS じゃなくてもできるけど、RSS という標準的なフォーマットがあるおかげで追跡しやすくなっている。

[結] 検索結果をRSSでウォッチするという方法 - 結城浩の日記
http://www.hyuki.com/diary/20050126064005
RSSを使った検索サイトの中には、(1)「BlogのRSS配信を対象として検索する」だけではなく、 (2)「特定のキーワードを検索した結果をRSSで配信する」という機能を持つものがある。
(略)
たとえば、結城の場合には、私のサイトに言及してくれている人を追うために「結城浩」と「hyuki」という単語をウォッチしている。それから「Java」「Perl」「暗号」なども。

これ、私もやってます。私の場合はネットワーク上でよく使う名前と本名。私を本名で名指しにする記事ってまず無いと思うけど、まあいつかそんな日も来るかもしれないので登録。

で、笑ったのが以下の記事。

フィッシング [dk]読書記録ChangeLog / 2005-01-26
http://dkiroku.com/2005-01-26.html#2005-01-26-47
「結城浩」
「hyuki」
「Java」
「Perl」
「暗号」

記事の内容はこれだけで、最初はどんな意味を持つ記事なのかわからなかった。記事の意図がわかったところでかなり笑った。名前検索スパムとでも呼ぶのがふさわしいかな。というか、私のこの記事もか。

2005-01-09 (Sun)

* favicon.ico が bloglines で表示されない理由

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

当サイトの favicon は なぜか bloglines では表示されない。過去に bloglines に質問メールを送ったことがあるが、修正されないままになっている。favicon については 2004-04-11 の「favicon.ico を作る」の説明を参照。

- bloglines で favicon が表示されるサイトと表示されないサイト

X *ole.net : フォーラム
http://blog.xole.net/forum/topic.php?tid=6
ところでBloglinesでは、特にRSSにfavicon埋め込まなくても表示できたりするはず。
でも表示できるblogとできないblogがあって、そろそろ探らないとなー、と思いつつめんどくさい・・・。

私も過去にこの疑問を持ったことがあり、bloglines のサポートに問い合わせたことがある。以下にそのメールを転載。

- bloglines のサポートに送った質問メール

From: sonic64@example.com
Subject: Web Form: [Feeds]
Date: 10 Aug 2004 06:17:15 -0000


Hello I am Saito Hiroaki, bloglines user and I provide RSS in my website.

I made favicon.ico and upload it, but I can not browse that favicon.ico
in the bloglines.

My website URL: http://sonic64.hp.infoseek.co.jp/
favicon.ico URL: http://sonic64.hp.infoseek.co.jp/favicon.ico
RSS URL: http://sonic64.hp.infoseek.co.jp/cl.xml

I subscribe my RSS ( http://sonic64.hp.infoseek.co.jp/cl.xml ) myself in
bloglines, but I can not see it
in blosliens "My feeds" list ( http://www.bloglines.com/myblogs?mode=2 ).

How can I browse my favicon.ico in bloglines?
I searched http://www.bloglines.com/help/faq ,
but I can not find answer.

If bloglines RSS crawler check favicon.ico only once,
would you change that methods?
For example, crawler check favicon.ico every new subscribing.

Thank you.

私の英語は拙いので、質問したかったことを日本語でも書いておく。

From: sonic64@example.com
Subject: Web Form: [Feeds]
Date: 10 Aug 2004 06:17:15 -0000

こんにちは。saito hiroaki と申します。
私は bloglines ユー