
ここは CalendarMemo 紹介のページ、なのに何故か RSSBrowser の話ばかり。そこで専用のページを作る事にしました。RSS (RDF Site Summary) って何か理解しないまま流行に乗って RSS 記事をブラウズするアプリケーション作っています。
CFXML を使おうかと思ったのですが時間がなくてできませんでした。CDATA には対応したので iBlog の UTF-8 RSS なら読めると思います。CFXMLは正月休みに試してみようかと思っています。
ブックマーク、ちょっと手狭になってきたのでどうしようかと考えています。
いつもお世話になっている木下誠さんの Web ページ にあるCocoa Programming Tips 1001 を見ていたら CFXML というページ があるではないですか!
Cocoa に XML パーサがあるんですね! 考えてみたら Cocoa で書き出すファイルの多くは XML なので Cocoa に XML パーサが無いと思っていた私があさはかでした(あるのは当たり前ですよね)。どうせ Safari が RSS 対応するまでと手抜き XML パーサを使ってきたのですが、 Cocoa の中に DOM や SAX のお仲間が潜んでいたとは、これを使うべきなのかもしれません。ちらっと試してみたら、いちおう文字のエンコードまでしてくれるではないですか。それに CDATA も、さすが iBlog が書き出す &#xxxx; のエンコードまではやってくれませんが! なかなか使えそう。実は何で iBlog は &#xxxx; のようなコードを吐き出すのかいまいち理解できません。そんな訳で &#xxxx; は今のところ無視することにしています。
こんな事を書くとまたメールが来るだろうな〜 あまり深く考えないでください。というか私も深く考えている訳ではありませんので。この段階では読める文字が表示されるかされないかだけの話なので。いずれにしろ Cocoa に XML パーサの機能があるので RSSBrowser でもこれを使うべきなんでしょうね。でもな〜 いまいち XML 自体が何かすっきりしない、というか自由度が高すぎて。テキストにするのは大賛成なのですが構造化によって大きな矛盾を抱え込むような、何か違和感を感じるのは私だけなんでしょうか?
まあ使う方としては mc(matrix calculator) に取り込んでインタープリタにしてしまった方がすっきりするのかな〜
WhatNew にも書いたよう、ようやく私も Panther ユーザになりました。さっそく RSSBrowser を Xcode でコンパイル。実は最初にコンパイルしたのは CalendarMemo で何事もなく終了(TextEdit は色々と改良されているようです、楽しめました!)。
そこで、 RSSBrowser も問題ないだろうと Xcode でコンパイル、そして無事終了。それから実行してみると、なな、なんと RSS 記事の更新ができない!何で?。調べると stringWithContentsOfFile で nil が返る。 MacOS X 10.2.8 では問題なくダウンロードした html データが返るのに (#_#;;
そこでいつもお世話になっている macosx-dev-ml にお伺いを。そうしたら一時間も経たないうちにフォローが(助かります!)。そもそも stringWithContentsOfFile の使い方が悪かったようです( 10.2.8 ではたまたま動作していたようです)。それで、まあ stringWithContentsOfFile を使わない macosx-dev-ml で教えていただいた方法を使わさせていただきました。これで問題なく RSSBrowser も動作しました。 Xcode でコンパイルした RSSBrowser は MacOS X 10.2.8 でも問題なく動作するようです。もう少し様子をみてから公開します。
macosx-dev-ml で、もう少し別の方向へ話題 (strncpy) がそれてしまいまして、別の方からこの関数を使うようでは、他の部分にも同様な問題が内在している可能性があり心配だとの指摘を受けました。そう心配されても....そうですか?としか言いようが無いような.... ???
まあ今回の strncpy 関数は stringWithContentsOfFile が上手く動作しなかったので試しに使ってみたもです。 sscanf の話はよく聞きますが strncpy もそうだったとは。 strncpy 関数が嫌いな方っているのですね。 RSSBrowser には標準関数はまったく出てきませんが、 CalendarMemo には山のように使っています。なにせ計算エンジンの mc (matrix calculator) はすべて標準関数でコンパイルできるようにしているので。心配(??)な方は使わない方が良いでしょう。
いろいろ試しているうち PowerBookG4 (PBG4) の動作が不安定になってきました。メニューバーにある「ことえり」のペンアイコンがアンマウントの画像に???。考えてみたら PBG4 っていつ起動したんだっけ? そうとう前のような。確かこの前のバージョンアップだから 10月の終わり頃だったような。
これを思い出し、リスタート。ついでに Safari をキャッシュもクリア。なんとなく PBG4 の動作も気持ちキビキビしてきたような。
で再度ダウンロードを試してみました。その結果、ダウンロードファイルはエラーも無くファイル展開、マウントできるようになりました。しかも、これまでアイコンが消えていたのがきちんと表示され起動もできるようです。
原因は PBG4 にあったんでしょうか。昼に試した時、 PBG4 で作った .dmg ファイルで異常があり、仕事場の G4 で作ったファイルは問題がなかった。PBG4 に問題があると考えたらつじつまがあうような。でも何で PBG4 で作った .dmg ファイルを PBG4 でマウントできたのでしょうか? それに AppleShare では問題が発生しなかった事も。
いずれにしろ PBG4 のリスタートで何となく良くなったらしいのでしばらく様子をみようかと思っています。せめて1〜2週間に一回程度はリスタートした方が良いのかな〜
はっきり言って、判らなくなりました。
(1)AppleShare でマウントした場合には全てのファイルが問題なし
AppleShare でマウントした場合には全てのファイル(公開ファイル)が問題なくマウントもしくは展開できます。
(2)iBookDualUSB からも全てのファイルが問題なし
iBookDualUSB を使って Web からダウンロードした場合には全てのファイル(公開ファイル)が問題なくマウントもしくは展開できます。(4)
(3)仕事場で使っている G4 (グレーのポリタンク)でも全てのファイルが問題なし
G4 (グレーのポリタンク)でも全てのファイル(公開ファイル)が問題なくマウントもしくは展開できます。
(4)持ち歩いている PowerBookG4 12" では一部に問題あり
PowerBookG4 12" では .sit ファイルにファイル展開中にエラーが発生。展開した .dmg ファイルをマウントしてもアプリにアイコンが付かなかったり、アイコンがあっても起動できなかったりする。
これら全てのマシンは MacOS X 10.2.8 をインストールしています。使っているマシンによって挙動が異なるのはどうして?
それから、ダウンロードする前に safari のキャッシュをクリアした方が無難です(ダメージを受けたファイルを使ってしまう)。
サーバの問題かもしれないので家に電話しリスタート。その結果、何にも変わらない。作成日と更新日、時制が違ってもいいのかもしれない(そうかな〜)。作成日はダウンロードした日付。更新日はオリジナルのファイルが更新された日付。そう考えるといいのかもしれない(納得いかないな〜)。いずれにしろ .sit の方のファイルは問題なく展開できる。
もっと変なのは持ち歩いている PowerBookG4 12" では正常にダウンロードし .dmg ファイルのマウントができるのに、仕事場で使っている PowerMacG4 ではダウンロードした .dmg ファイルのマウントができない。
そこで今度は .dmg ファイルを作るマシンを疑ってみた。サーバに置いている .dmg ファイルは PowerBookG4 12" を使って作成したもの。それではと職場の PowerMacG4 で .dmg ファイルはを作成してみる。これをサーバに置いてみたところ。
やや!!!
ダウンロードしてみると PowerMacG4 でも PowerBookG4 12" でも正常にダウンロードでき .dmg ファイルをマウントする事ができた。
結局原因は?
PowerBookG4 12" で作成した .dmg ファイルだけが PowerMacG4 によるダウンロード後にマウントできない。原因は .dmg ファイルを PowerBookG4 12" で作った事? ん〜納得できないな〜
誰かダウンロード試していただけませんかね。肝心のファイルは
です。よろしければレポートなど報告していただければ嬉しいです。
今日、メールを開いたら ver 0.4.9 のダウンロードはできるのだがマウントする事が出来ないとのメールが数件ありました。私のところでは問題ないのですが。そこで仕事場で試してみたら。本当にできませんね。
ファイルを調べてみたら、ダウンロードは正常に実行できるのにマウント時に検証でひっかかります。でその原因は変更日より作成日の方が未来なんです。何でこんな事が起こるんだろう。ここいらへんがいまいち不明。
原因が判るまで sit にて提供します。ダウンロードファイルは .sit ファイルの方に変更したので再度ダウンロードお願いします。
マニュアルを読み返していたら書くのを忘れていた項目がありました。ブックマークに登録されている項目は Safari アイコンのボタンをクリックするとデフォルトブラウザで開くのですが、肝心の RSS 記事の開き方を書いていませんでした。右上に表示されている RSS 記事のリスト、この項目をダブルクリックしてください、デフォルトブラウザで開きます。まだ書いていないのがあるような、気が付いたらまた書きます。
今日、家族で TheMatrix を見にいってきました。コンピュータグラフィックスの迫力は凄かったです。でもストーリーは陳腐というか明らかに逃げていますね。マトリックスの外にある現実、その現実が実はシミュレーションだったという期待で見たのですが裏切られました。何重にも折り重なっているシミュレーション世界をどう表現するのか期待して見ていたのですが、残念です。
使い勝手を改良した RSSBrowser ver 0.4.9 を公開します。改良点は「ver 0.4.9 改良点」にあるので参考にして下さい。
● 2003.11.07 RSS を利用するようになってから
RSS を利用するようになってから、ようやく RSS のメリットが分かってきました(たぶん)。これまで検索は主に Google を使っていたのですが、ヒット数が多すぎ目的のサイトにたどり着くまで大変でした。
RSSBrowser だとヒット数も少なく早いんです。 で何故かって、ちょっと考えてみました。探したいものって一度読んだ事がある記事で、もう一度読みたいのでは。その検索では断片的に覚えている言葉を検索文字列にしているような。探したい記事は過去に訪問した Web ページだとすると、自分が訪問したサイトを探せばいいことになります(これ、いままで気が付かなかった)。自分が訪問したサイトの履歴データベースを作りそれを検索する、これが早く記事を探す秘けつなのでは。 ただしこれは私だけで他の方は違うかもしれません!
RSSBrowser を作ってなにげなく履歴をすべて残していました。RSS ページをアクセスする度に同じ記事をまた出すのもなんだから履歴に記録されていれば記事を表示しない、とまあこんな単純な考えで履歴をすべて保存していたのです。RSSBrowser ではこの履歴を検索に使っています。これが Google より早く記事にたどりつける方法とは気が付きませんでした。RSS ってこんな使い方ができたんですね!
RSSBrowser 、使いはじめて3週間になります。記事の件数は 6500 件をこえるところまできました。知りたい記事のほとんどがこの中にあり検索するとすぐに見つかります(あまり古い記事は検索しませんね!)。だからといって Google 検索を使わなくなった訳ではありませんが(探し当てた記事をベースにして新たな検索は Google を使っています)。
safari の履歴が利用できればデータベースにできるよな〜
こんな機能、作ってくれないかな〜
作るしか無いかな〜
そうなると自分が作った Web ブラウザを使うしかないよな〜
ブラウザなら safari の方が良いし、
また新しいブラウザがでてきたら、それを使うだろうし、
ん??
そうだ履歴を集める専用のプロキシを作れば
通過する情報はすべて履歴にすることができる!
そうかプロキシ〜〜〜か!
でもプロキシてどうやって作るんだろう?
そういえば、 Web ページにはタイトルがついている
これを RSS 化してしまえばWeb ページの履歴ができる。
自分のWeb アクセス履歴の RDF ?
まずはこれから試してみるか!
そういえば Kent さんのページに何か似ている
Perl のプログラムがあったような。
あれはサイト内の検索だったかな〜〜?と、まあこんな感じで私の夢は広がりその中の何%かは実際にプログラミングのまねごとをし、作ったつもりになってます。
今、考えているのは Web ページに表示した文字列を直接検索文字列にして Google 検索する事。そうするともう少し便利になるのでは。でも肝心の WebDocument がいまいちよく分からない。週末なんでちょっと考えてみるか!
もうすぐバージョンアップ予定だよ〜〜〜〜
RSSBrowser の WebView は Web キットそのままなのでだいぶハンディがあります。私に Web ブラウザを作る能力はありません。ホームセンターから材料を調達し作っているようなものなので。そんな訳ですから選択肢として safari で読めるようにしておくと便利だな〜と思ってしまいます。そこで
(1)RSS 記事をデフォルトブラウザで開く事もできるようにしました。
(2)Host サイトもデフォルトブラウザで開く事もできるようにしました。RSS ページの url が変更になる場合があるようです。これは毎日新聞が読めなくなった事で気が付きました。 RSS 化しているサイトの事情のようです。そこで
(3)url が変更されても編集できるように。また過去記事が読めるよう履歴も自動変更
RSS ページの中にはアクセスに時間がかかるものがあります。また yahoo ニュースのように頻繁に更新され五月蝿いものもあります。これらに対応するため記事更新で一括スキャンするか否かを指定できるようにしました。
(4)ブックマークの RSS ページ、一括スキャン対応の有無を指定できるようにしました。
一括更新時の記事リスト、特にニュースの場合には RSS ページが複数あると重複する場合がある。最新の記事リストで選択した記事をリストから削除できるようにした。
(5)記事リストのクリア(削除ではない)できるようにしました。
まだ何か有ったような気がするが忘れてしまった。使っていて気になるとそのつど改良してしまうので。どのバージョンで何を改良したか忘れてしまいます。気が付いたら後で書くことにします。
バージョンアップは週末を予定しています。ダウンロード数は多いのですが、本当に使っている方、いるのですかね?
● 2003.11.04 BLoger って何? コメントがいるのか?
新聞記事の RSS ページには無いが個人のRSS ページでは記事の最後にコメントが送信できるようになっている。そうしないと Blog ページじゃないのかな〜 もう少し調べてみないと。
そうそう、このページの RSS を NetNewsWire Lite に登録してみたら開いてくれない。どうもこの NetNewsWire Lite はエンコードを UTF-8 でないと開いてくれないようだ。今のところ xml をテキストエディットで作っているので Shift_JIS で書いている。そのうち UTF-8 にしようかと思う。
他の RSS ページのソースを読んでいたら妙な url (http://my.netscape.com/publish/formats/rss-0.91.dtd) が書かれているのを発見。どうも RDF の文法みたいです。最初から知ってたらと悔やみつつ他の RSS ページのソースを読んでいたら、あれれ別のバージョンもある(http://www.w3.org/1999/02/22-rdf-syntax-ns#)。楽しようとした私が情けない。 XML って????何?
まあ作ったとは言っても簡単なもので、このページの各項目にアンカーを付け、更にエディタで XML を書いただけ。毎日書く訳じゃないのでこれでも良いかな〜 まだ試験中なので
これで私もブロッガ〜のお仲間!
ようやく WebDataSource からダウンロードした生データを取得する事ができました。出来上がってみればたいした事がないのに理解するまで苦労しました。これで無駄なアクセスが無くなりレスポンスも少しだけ向上。
ついでに、これまで検出できなかった RSS サイトのデータ、原因が判りました。原因はサイトにリンク指定している url と実際に RSS のデータが置かれている url が異なるためでした。例えば Web ページでは http://www.xxx.jp/yyy.rdf 。これが実際には http://www.xxx.jp/zzz.rdf という感じです。何でこんな事するんでしょうかね?
でもまあ理由が判ったので解決です。他の RSS リーダも同様の問題で表示できないものもあるようですね。送られてきた html から本当の url を取得すると正しい RSS のデータが置かれている url が見つかります。まだ iBlog というアプリ(かな?)を使っているサイトではどうも私の勉強の範疇をこえた XML を書き出しているようです。もう少し勉強しないといけませんね。
RSS 記事のリストに記事元のサイトタイトルを表示
そうそう、ver 0.4.4 で RSS 記事リストのテーブルにサイトのタイトルを表示するよう改良しています。
サイトのタイトルは後で変更される可能性もあるので情報は url で持つようにしました(表示する時にタイトルに変換しています)。ブックマークのクリックで RSS ページをアクセスした時には同じサイト名が表示され、ちょっとうざったいです。でも RSS 記事一括更新の時には何処の RSS サイト記事なのか判るので便利です。もう少し様子をみたら ver 0.4.4 以降として公開するつもりです。
私が作った新しいアプリケーションはいつも「
新しもの好きのダウンロード」で紹介していただいてます(>早川さん、感謝!です)。で、今回の RSSBrowser も紹介していただいたのですが、私がアイコン画像を送るのを忘れたため
になってしまいました。でも何故かこれが気にいってしまって、そのままにしています。いつクラッシュするか分からない RSSBrowser にぴったりでは! 私自身アプリのアイコンって何でも良いと思っているので。
ちなみに本当(何が?)のアイコンは
です。何にしようかと色々迷ったのですが、基本的に絵心も美的感覚も全く欠如している私にとってアイコンを作るのが一番の苦手。どうしようも無く、結局は CalendarMemo の mc(matrix calculator) の機能を使って描いてしまいました。
m = 30; n = 60;
t = |0,π||0,π|;
t = hokan(t,m,n);
u = |0,2*π||0,2*π|';
u = hokan(u,m,n);
r = 3・cos(t)^2-1;
x = r・cos(t);
y = r・sin(t)・sin(u);
z = r・sin(t)・cos(u);
setParametricPlot3D(|300,300,50,40,30,2.8|);
a# = parametricPlot3DColor(x,y,z);
changePictSize(a#,|128,128|/2)+0;だからこのアイコンには何の意味もありません。早川さんが付けた
の方がぴったりかも。CalendarMemo のメモエディタに上記プログラムを Copy & Paste し実行してみると面白いかも。プログラム部分を選択(ハイライト)し esc キーを押すだけでグラフが得られます。
最初は新聞記事だけと「日本で配付されているRSS/RDF 」位しか調べてなかったのですが「MyBlogJapan」というサイトを見つけてしまいました(無茶苦茶ありますね!)。でも「Syndicate this site (XML) 」という検索文字列で Google 検索すると、あるはあるは5万件以上もあります。全部が Blog サイトという訳じゃないと思いますが、相当な数あるんでしょうね。
そうそう「HotWiredJapan(XML)」を見つけてしまいました。ページの最後に小さく RDF って書いてあったの見過ごしていたようです。これまで Bulknews の XML を利用していたのですがリンクが独自なのでいつまでリンクできるのか不安でした。これで安心して「HotWired」のニュースが読めます。
○ 泣き言
実は「日本で配付されているRSS/RDF 」や「MyBlogJapan」で RSS サイトを見つけ RSSBrowser でアクセスしても稀に RSS と認識しない場合があります。原因は RSSBrowser で、指定した url が RSS なのかそれとも普通の Web ページなのか判定する所にあります。一つの Web ページを開くにも何個もの 別の url を開きます。前はその度毎に RSS の判断をしていたのですがうざったいのでメインフレームの時だけ RSS の判断をするようにしました。その結果、何故か RSS と判定できないのです。そんな時はサイトにある XML(RSS/RDF) のリンクをクリックするのではなく RSSBrowser の url フィールドに直接書き込んで試してみて下さい。これが有効なときがあります。
● 2003.11.01 RSSBrowser で気になっていること!
RSSBrowser でちょっと気になっている事があります。実は RSS ページにアクセスした結果はすべて履歴として残し記事検索に利用しています。RSSBrowser を使いはじめてから約3週間弱なんですが、今日までの記事数が6千件をこえています。履歴のデータは約 1.7MB で、まだそう大きくはありません。でもこれから何か月か使い続けると記事の表示が遅くなり使い勝手が悪くなるような気がします。例えば、このペースで使い続けると1年で10万件近くの記事で履歴のデータベースは約 30MB 程度になると予想されます。一年後にはどうなるのでしょうかね〜
現在、 RSS ページにアクセスする度に履歴データベースを検索し記事リストテーブルに表示しています。まだデータベースが小さいので表示が遅いという感じはしません。でも RSSBrowser を使い続けデータベースが大きくなると遅くなるような。今の調子で使ったらどれだけ耐えれるのか、ちょっと気になっています。
まあ、記事の表示が遅くなり使い勝手に問題が出たら RSS ページ(サイト)毎にデータベースを分割することを考えれば良いだけなので、あまり大きな問題ではないと思いますが。
その前に safari が RSS に対応してくれたりして!
(他力本願)
レイアウトを変更してみました。それから色々と気になる点を改良しています。例えば、既読/未読の指定、未読記事だけのリストアップ、最新記事のリストアップ、その他。詳しくは説明を参照して下さい(だいぶ使いやすくなったのでは)。
使っているとボタンがダサイのが気になりました。アイコンを貼付ける事にしました。これまで RSS 記事のダウンロードに NSURLDownload を使っていたのですがソースが汚くなるので全部 curl に変更。
来週からお仕事モードに入るので現時点の最新バージョンを公開します。操作性が改善されていると思います。それと、とりあえず Web アクセス簡易履歴。この履歴は最終的な形ではありません、とりあえずあった方が便利だったというだけで不満たらたらの履歴です。同じよう、とりあえず表示された Web ページ内の検索をウインドウ下に付けています。これも Web ページから選択した文字列を取り出す方法が分からなかったので不満たらたらのページ文章検索です。
それからユーザというか古い友人(申し訳ない)からブックマークのリストが小さすぎて見えないとのクレームが。 19" のモニターで見たら、本当に小さいですね。という訳で 12Point に変更。その他、色々と見えない改良しています。たぶん相当軽くなったのではと思います。
ちょっと思い付いてアプリケーションを作りはじめると、どうしてもそれが頭から離れなくなってしまう。そんな訳で RSSBrowser を使っていると気になるところがどんどん出てきて困ってしまいます。
今日も使っていたら RSS の XML なのに展開できないページがありました。ソースを見たら、<?xml version="1.0" encoding="EUC-JP"?> だって!ん〜〜〜〜 RSS には UTF-8 以外の文字コードもあったんですね。
てなわけで EUC-JP のエンコードを追加しました。ちなみにこの RSS ページは
です。現在はエビスディックとユニコードのエンコードだけです。でも EUC があるという事は他に JIS もあれば ShiftJIS もある訳で、そうなると encoding="XXX" の XXX はどんな文字列になるんでしょう? 知っている方がいたら教えて下さい。
ちなみに新しい RSSBrowser ver 0.2.5 は下記にあります。ベータバージョンですが試しに使ってみて下さい。
最新バージョンダウンロード:RSSBrowser ver 0.2.5
本体だけでマニュアルはまだ書いていません。でも分かると思います。ちょっとアクセスが軽くなっています。また RSS 記事の一括更新すると更新した記事だけが表示されるようにしました。あと若干の GUI の変更ですか!
そうそう、ダウンロードできないというメールをいただいています。ダウンロードには問題ないと思います。もしあるとするとダウンロードしたファイルがファインダーで表示されないのかも。Drop_dmg というアプリを試しているのですが、これが問題なのかも。対策としてはデフォルトのダウンロード先フォルダーをカラム表示のファインダーで見るとか、ファインダーの検索で「RSSBrowser」を検索文字列に指定すると見つかると思います(たぶん)。
週末 RSS ブラウザを改良してみました。ちょっと使いやすくなったのではないかと思います。詳しくは RSSBrowser ver 0.2.2 の説明 をどうぞ。
で、本体は RSSBrowser ver 0.2.2 にあります。
ちょっと変わった RSS ブラウザを作ってみました。でも RSS/RDF っていまいち解らんです。 RSS 用のアプリをダウンロードして使ってみたのですが単に記事一覧が表示されるだけ。内容を見ようとすると別の Web ブラウザで開くだけ。これなら最初から Web ブラウザを使った方が便利なのでは。