Bloglinesチャンネル 0.01をリリースします。
Bloglinesチャンネルは、Bloglinesを閲覧するための、Heimdallrのプラグインです。
Bloglinesチャンネルを使うと、こんな感じのウィンドウをデスクトップに貼り付けておくことができます。
(スキンはポレポレ素材屋さん作の「紅葉を踏みしめる猫」です。)
表示されているのは、Bloglinesに登録されているFeedのうち、未読記事が存在するFeedです。クリックするとFeedを閲覧できます。閲覧すると、Bloglines上でも既読になります。
Bloglinesチャンネルを動作させるためにはHeimdallr 1.08以降が必須です。Heimdallrをインストールしていない方は、まずHeimdallrをインストールしましょう。
Heimdallrのインストール後、インストールフォルダにあるpluginフォルダの中に、BloglinesChannnel.dllをコピーした後、Heimdallrを再起動すればインストール完了です。
Heimdallr起動後、タスクトレイのアイコンを右クリックしてビュー設定を選択し、チャンネル追加ボタンを押してBloglinesチャンネルを選んで下さい。あとはBloglinesで使っているメールアドレスとパスワードを入力すれば使えるようになります。
Heimdallrに最初から登録されているニュースサイトは、Bloglinesチャンネルを使うときは不要ですので全部削除してしまいましょう。
既読ボタンとサイトの短縮名も役に立たないので非表示にしておくと良いと思います。
Bloglinesに登録されているサイトによっては、Bloglinesチャンネルがまったく機能しないことがあります。これはBloglines側のバグです。一応報告はしておきましたが直る気配が無いですね。
例えば加藤ローサさんのBlogを登録している方はBloglinesチャンネルを使えません。
このサイトのアクセス解析結果を見る限り、ここをBloglinesから見ている方は1~2人です。というわけでBloglinesユーザのそこのあなた(?)だけが頼りです。
Windows環境をお持ちでしたらちょっと使ってみて下さい。
導入が大変かもしれませんし、上記「既知の問題」に記した問題により動かないかもしれませんが、ぜひトライを。
次のHeimdallrのバージョンである1.09で何を実装するのか明確にしてみます。
メインとなるのはプラグインの追加です。どのプラグインを追加するのかは検討中です。
実はまだこれぞ!というプラグインが無くて・・・。
あとは自動学習機能のアルゴリズムを強化したいですね。長いこと使ってそろそろ弱点が見えてきましたので何か手が打てそうです。
以下のリストのうち、上に書いてあるものから優先的に実装していきます(実際のところ、リストの下の方に書いてあるものは、書いてあるだけで実装されることは当面無いでしょう)。上からいくつか実装した時点でバージョン1.09としてリリースします。
実装する際の難易度を難、普、易の三段階で評価し、効果を大、中、小の三段階で評価します。
そろそろ「効果が大」という機能がなくなってきましたね。一応1項目ありますけど大物なのでなかなか手が出せず。うーんこれからどうしましょうか。
最近、DES、AES、Blowfishといった幾つかの暗号方式の実装を眺めているのですが、AESのサンプルコードに面白いコードが入っているのを見つけました。
AESのサンプルコードは、「AES暗号化ライブラリ」で紹介したものです。
DESもAESもBlowfishもブロック暗号です。ブロック暗号は、ブロック長単位で暗号化を行う方式です。
例えば、DESであればブロック長は8バイトです。
ということは、8バイトのデータを与えて暗号化すると、8バイトの暗号化データが得られるわけです。
こうした暗号方式の場合、データのバイト長がブロック長の整数倍の場合、ブロック長毎に暗号化すれば問題なさそうですが、ブロック長の整数倍ではない場合、どうやって暗号化すればいいんでしょうね???
という疑問に対する答えが、AESのサンプルコードに入っていた「面白いコード」です。
データの最後の2ブロックを上手い具合に入れ替えて、ブロック長の整数倍ではない場合でも暗号化しています。もちろん暗号化データが長くなることもありません。
これはどうやらThe Cipher Text Stealingという方式(以下CTS)のようです。
AESに限らず、ブロック暗号ならばなんでも適用できそうです。
詳細な方法についてはGoogleで検索して下さい。
いやーこんな方法があるとは。考えた人は頭が良いですね。
RSSリーダーHeimdallrについてですが、折角プラグインを追加できる仕組みを作ったので、幾つかプラグインを作ってみようと考えています。
今考えているのは以下の3つです。
サーバ型RSSリーダーBloglinesユーザのためのプラグインです。
Bloglinesの未読FeedをHeimdallrのビューに表示させることができます。
これは結構開発も進んでいるので、そろそろリリースできそうです。
しかし、このチャンネルをHeimdallrに標準で添付しても、嬉しい人はあまりいないと思います。リリース方法も考えないとなりませんね。
以前は作る気でしたのでちょっとだけ開発を行ったのですが、今この開発を止めようかどうか迷っています。
その理由は以下の通り。
さてどうしたものか・・・
これは、「ヤフオク Ticker」を見たときに思いつきました。まだアイデアだけで、何も形にはしていません。
Yahooオークションでは検索結果のRSS配信を行っていますので、こうしたものを作るのもさほど難しくはなさそうです。入札終了1時間前に再表示するような機能を付けるのもなんとかなるでしょう。
問題は、私がヤフオクを利用していないので、どんな情報をユーザに提示するべきなのか良く分からないことです。さてはて・・・。
天気予報チャンネル、地震速報チャンネル、(最近の流行を追いかける)トレンドチャンネルなどアイデアだけは色々。
皆様も何かアイデアありましたらコメント頂ければと思います。
チャンネル拡張プラグインのインターフェースの仕様は、「ChannelExtensionPluginAPI仕様」で(途中まで)公開されているので、開発できる方は作っちゃってもOKです。
「AES暗号化ライブラリ」の続きです。
AESで暗号化/復号化を行うVisual C++.NET 2003用スタティックライブラリの作り方を説明します。 「libdesのライブラリ化」のAES版です。
まず、Brian Gladman氏のサイトで配布しているAESの暗号化/複号化を行えるCのコードをダウンロードします。ファイル名がaes.zipとなっているファイルです。
次に、以下のファイルをダウンロードします。
そして、両方とも解凍し、aes.vcprojをaes.hと同じフォルダにコピーして、aes.vcprojをVisual C++.NET 2003で開きましょう。
あとはバッチビルドを行うだけです。
ところでこのライブラリって何か名前ないんですかね。何も付いていないので勝手にaesって呼んでいますが正式名称は不明です。
以前、「暗号化ライブラリlibdes」でlibdesを紹介しました。
今回は、Visual C++.NET 2003で使えるlibdesの静的ライブラリを作成する方法を紹介します。
「MFCにおけるzlibの使い方」と同様に、6種類のlibファイルを作成します。
まずは、libdes配布元からlibdes-l-4.04b.tar.gzをダウンロードしてきましょう。URLを見た限りではここが公式の配布ではなさそうです。公式な配布元をご存知の方は公式の配布元からダウンロードしてきて下さい。
次に、libdes-l-4.04b.tar.gzを解凍し、des.hが存在するフォルダに次のプロジェクトファイルを置きます。
開いた後、全構成のバッチビルドを行ってください。libというフォルダが作成され、その中に6つのライブラリファイルができているはずです。
あとは使う側の都合に合わせてお好きなライブラリファイルをご使用下さい。
「AES暗号化ライブラリ」の続きです。
AES暗号化ライブラリが結構いい感じだったのでこれを使おうかと思いましたが、
最後にライセンスフリーで評判のBlowfishを試してみることにしました。
今更ですが、ライセンスフリーの暗号化方式と言えばBlowfishが有名でしたね。
すっかり忘れていました。
暗号化方式がライセンスフリーでも、実装(ライブラリ)の方がライセンスフリーであるとは限りません。というわけで実装を見てみることにします。
Bruce Schneier氏のサイトでソースコードが配布されています。C/C++は4つありますね。全部試してみましょう。
サンプルコードからライブラリを作るのは面倒ですので、最初からライブラリになっているものを使いたいと思います。
コードを見た限りで一番良いのは「C by Paul Kocher」ですが、ライセンスがLGPLというとても厳しいものになっています。
LGPLだと、静的リンクして実行形式のファイルを作ると、実行形式のファイルのソースコードを公開する必要があります。
しかし、私がいま作ろうと思っているもの(Bloglinesチャンネル)は、ソースコードの中に暗号化鍵が埋め込まれています。これを公開すると暗号化鍵がばれますので、公開できません。
ですので、残念ながら「C by Paul Kocher」は使えません。
残りの候補は、「C++ by Jim Conger」だけです。
バグがあることと、ライセンスが不明であることが気になるところですが、一応そのまま使えそうなのでこれを使おうと思います。
暗号化ライブラリlibdesの続きです。
より使いやすいライセンスの暗号化ライブラリは無いかと探し回っていたところ、
Brian Gladman氏のサイトでAESの暗号化/複号化を行えるCのコードを配布しているのを見つけました。
aes.zipというアーカイブをダウンロードしてちょっと使ってみましたがこれもVisual C++.NET 2003で問題なく使える模様です。Brian Gladmanさんに感謝!
ライセンスも、広告条項がないのでlibdesより使いやすくなっています。
あとBlowFishについて調べてみてそれとAESとでどちらを使うか決めようかと思っています。
Bloglinesチャンネル開発における課題の1つとして、パスワード保存方法があります。
これをなんとかするため、C++又はCの暗号化ライブラリを探していましたところ、libdesというDESの暗号化ライブラリを見つけました(libdesの公式サイトってどこだろう?)。
DESが暗号方式として強いのか弱いのかは良く分かりませんが、カジュアルクラッキング対策としては十分でしょう。
このライブラリの最終アップデートはなんと1998年1月8日。7年前です。こんな古くて大丈夫かと思いましたが、Visual C++.NET 2003で問題なくコンパイルできるようです。
ちょっと使ってみましたが、特に大きな問題はなく暗号化/復号化ができました。1998年にリリースしたソースコードが2003年にリリースされたコンパイラで問題なく使えるのですから、すごいことです。作者のEric Youngさんに感謝。
しかし問題が1つ。ライセンスです。
こんな条項があります。
3. All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by Eric Young (eay@cryptsoft.com)これはいわゆるBSDライセンスの広告条項というやつですね。
iostreamの拡張について書かれたサイトを見つけました。
「iostreamの拡張」
私が以前の記事で作ったbasic_filterbufやbasic_inflatebufと比べてみます。
basic_streambufの拡張方法に着目すると、
私はxputnをオーバーライドして自力でバッファ制御を行い、あちらはoverflowをオーバーライドしてsetpでバッファ制御を行っているようです。
どうもあちらの方が正しいようです。
私が行った拡張は、basic_ostreamのwriteだけ使う場合は問題がありませんが、
operator <<を使って文字列などを書き込むとボロが出ます。
ううむ作り直しですねぇ・・・。
でももう公開してしまっているんですよねぇ・・・。恥ずかしいなぁ・・・。
まあいいか。良くあることです。
Bloglinesをしばらく使うことにより、Bloglinesチャンネル(Heimdallrのプラグイン)を作る上での課題が見えて来ました。
なぜHeimdallrのチャンネル拡張プラグインを作ったのか。
使う人にとってはどうでもいいことだと思いますけれど書きたいので書きます。
主な理由は実はこれなんです。
そろそろ新しいソフトを作りたい。
私は時々作りたい病にかかるんです。
Heimdallrを開発していて色々なサービスに触れ、あれとこれとそれを組み合わせればこんなことがそんなことができるのになーと思ったことが発端でした。
結構色々なネタを思い付きました(ネタの一部はこのサイトで公開したこともあります)。
しかし、どのネタも、データ処理の方法についてのネタであり、ユーザインターフェースに関するものではなかったのです。
しかし、ネタを具現化してソフトとして世に送り出すのでしたら、ユーザインターフェースは必須です。
では、どうしようか?新しいのを考えようか?どんなユーザインターフェースが良いのだろう?っていうかHeimdallrのGUIで行けるんでは?ううむ行けそうだ。これで行こう。
というわけで、Heimdallrのユーザインターフェースを利用できるデータ処理部だけのソフトを世に送り出すことにしました。
こうしてチャンネル拡張プラグインは生まれました。
Internet Explorerというアプリケーションがあります。
最新版はバージョン6 SP2です。
Microsoftという会社が配布しているフリーソフトです。
本日はこの便利なアプリケーションを紹介したいと思います。
このアプリケーションの主な機能は、XMLデータのエラーチェックです。
XMLデータに含まれているエラーを確実に見つけ、分かりやすく表示してくれます。
HeimdallrのようなXMLデータ(RSS FeedはXMLデータです)を扱うアプリケーションを作っている人にとっては実に便利な機能だと思います。
例えば、Heimdallrで読み込めないRSS Feedを見つけたとき、
私は、原因を探るためにまずInternet ExplorerでそのRSS Feedを見ています。
Internet Explorerがエラーを検出したら、RSS Feed配信側の問題とすぐ分かります。この機能には何度もお世話になりました。
FirefoxというアプリケーションもXMLデータを表示できますが、エラーチェック機能はInternet Explorerに比べて劣っていると思います。
Internet Explorerが検出できる数々のXML仕様違反に、Firefoxは気付きません。
私はHeimdallrを開発していて、XML仕様に準拠しているデータに対してInternet Explorerがエラーを検出したこと(誤検出)と、XML仕様に準拠していないデータに対してInternet Explorerがエラーを検出しなかったこと(見逃し)は一度も記憶にありません。開発者のお供として心強いツールです。
そんなわけでXMLデータを扱う開発者の方にはお勧めです。
まだ使っていない方は是非お試しを!
何日かブラウザ型RSSリーダーのBloglinesを使ってみましたので、感想を書いてみようと思います。
といっても私はRSSリーダーHeimdallrの開発者なので、Heimdallrと比べてどうか、という視点で書きます。
普通に使っている限りでは、Heimdallrは記事のタイトル一覧を見てから記事を読む、という感じがするのに対し、Bloglinesはサイトのタイトル一覧を見てからそのサイトのRSS Feedを読む、という感じがしました。
Heimdallrよりも、生にRSS Feedを読んでいる感じです。まさしくFeedリーダーですね。これに比べればHeimdallrは記事リーダーという感じです。
既読管理もFeed単位で行うことが推奨されているような感じです。
記事単位の既読管理も(Keep Newで)できなくはないようですが使い難いです。
Feed単位の既読管理だと、Heimdallrのように記事タイトルの一覧を表示させておいて気になった記事だけ見る、ということができないので、登録されているFeedの数が多くなって全部読みきれなくなると不便だと思うのですが、どうなんでしょうか。私がまだBloglinesを使い切れていないからそう感じるだけなんですかね。
Bloglinesのフロントエンド(Bloglinesチャンネル)を作るためには、
普通のBloglinesユーザが、全部で何件位Feedを登録し、そして毎日何件のFeedを読んでいるのか、そこらへんを知る必要がありそうですね。Feed登録数が10件の場合と100件の場合では、適切な表示方法は異なるものになるでしょうし。
あ、こんなときこそキーワードチャンネルの出番です。
デスクトップに常駐しているHeimdallrのビューを右クリックしてビュー設定→チャンネル追加→キーワードチャンネル→キーワードに「Bloglines」と入力→OK
とりあえず一回「最新の情報に更新」
おお色々出てきました。これで新たな情報が得られそうです。とさり気なくキーワードチャンネルの使い方を紹介したり。
Heimdallrのチャンネル拡張プラグインの1つであるキーワードチャンネルのソースコードをリリースします。
キーワードチャンネル 0.03 ソースコード(Visual C++.NET 2003用) ダウンロード
このソースコードは、著作権は放棄しませんがご自由にお使い下さい。もしソースコードのライセンスを明確にしたいという方がおりましたらご相談下さい。そのときに考えます。
Heimdallrとチャンネル拡張プラグインの間のインターフェースは、ChannelExtensionPluginAPIという名前が一応ついています。仕様の一部は以下のページで公開されています。
「ChannelExtensionPluginAPI仕様」
このページはWikiにより誰でも編集できるようになっています。
私が更新するペースはとても遅いと思いますので、
適当にソースコードを解析してさくさく書き足していって下さい。
キーワードチャンネルのソースコードは、Heimdallr本体よりもずっとビルドが容易になっています。
但しboostライブラリは必須です。
boostライブラリのヘッダファイルがあるフォルダをインクルードファイルのパスに含めてからビルドして下さい。
なお、変な場所にDLLファイルを出力するのでちょっと気を配っておいて下さい。
また、Visual C++.NETのStandard Editionを使う場合は、MFCの静的リンクができなかったと思うのでそこら辺も変更する必要があるかもしれません。
以下はどうでもよい話です。
一応キーワードチャンネルにバージョン番号が付いています。0.03です。
このバージョン番号はかなり適当につけました。
Heimdallr 1.08(安定版)をリリースするときまでに作りこんだので1.00を名乗っても良いんですよね。でももう1.08をリリースしちゃったので今更変えるのも面倒なのでとりあえずはこのままということで。
Heimdallr 1.08をリリースします。
安定版です。
バージョン1.07のリリースが去年の12/3でしたので、おおよそ3ヶ月ぶりの安定版リリースとなります。
1.08のポイントは、チャンネル拡張プラグインを追加できる仕組みを作り、キーワードチャンネルとトピックチャンネルの2つのプラグインを追加したことです。
キーワードチャンネルは、キーワードを設定するだけでそのキーワードが含まれている記事をインターネットから集めてきます。従来から、登録されているRSS Feedの中からキーワードが含まれた記事を抽出する機能はありましたが、このキーワードチャンネルは、RSS検索サイトを使って記事を集めてくるため、登録されていないRSS Feedから記事を集めてくることができます。
トピックチャンネルは、「社会」「政治」「経済」などのトピックを選択することにより、それに関連した記事を集めてきます。
これもキーワードチャンネルと同様に登録されていないRSS Feedから記事を集めてきます。
どちらのプラグインも、すぐに結果が得られないかも知れません。ちょっと気長にお使い下さい。
前に作成したbasic_filterbufクラスを使って、Inflateを行うクラスを作ってみました。
InflateについてはRFC1950を参照して下さい。Deflateにより圧縮されたデータを展開する方式です。
zlibを使っていますので、前に説明した方法を使ってzlib.libをリンクしておく必要があります。
また、basic_filterbufクラスを定義したヘッダファイルをfilterbuf.hというファイル名で用意しておく必要があります。
コードは以下のようになります。
ちょっと長いですがご勘弁を。
機能としては、このクラスを使ってDeflateにより圧縮されたデータの書き込みを行うと、それが展開されて出力先に出力される、という機能を持っていることになります。
普通、この手のクラスは書き込みで圧縮され、読み込みで展開されます。それとは逆なので注意してください。
また、このクラスは読み込みについては未実装です。そのため、展開専門です。圧縮されたデータが事前に存在しないとまったく役に立ちません。
ところでこのクラスは読み込み時に何をするべきなんでしょうね。書き込みで展開されるということは読み込みで圧縮するべきなのかな?
しかし関数名がbasic_inflatebufなので、読み込みでも展開するという考えもありですね。
(注意)本コードは正しく動作しません。詳細は「C++ストリームの拡張方法について」を参照して下さい。
#include "filterbuf.h" #include <vector> #include <zlib.h> template <class Elem, class Tr = std::char_traits<Elem> > class basic_inflatebuf : public basic_filterbuf<Elem, Tr> { public: explicit basic_inflatebuf(std::basic_streambuf<Elem, Tr>* _Buffer, bool _Delete = false) : basic_filterbuf<Elem, Tr>(_Buffer, _Delete), _read_phase(init_phase), _write_phase(init_phase) { } virtual ~basic_inflatebuf(void) { switch (_write_phase) { case data_phase: write_end_init(); break; } } protected: virtual std::basic_streambuf<Elem, Tr>* setbuf(char_type* _Buffer, std::streamsize _Count) { // 未実装 return this; } virtual pos_type seekoff(off_type _Off, std::ios_base::seekdir _Way, std::ios_base::openmode _Which = std::ios_base::in | std::ios_base::out) { return traits_type::eof(); } virtual pos_type seekpos(pos_type _Sp, std::ios_base::openmode _Which = std::ios_base::in | std::ios_base::out) { return traits_type::eof(); } virtual int sync() { switch (_write_phase) { case data_phase: if (!flush_write()) { return traits_type::eof(); } break; } // 出力/入力先もsyncする。 return basic_filterbuf<Elem, Tr>::sync(); } virtual std::streamsize xsgetn(char_type* _Ptr, std::streamsize _Count) { // 未実装 return 0; } virtual std::streamsize xsputn(const char_type* _Ptr, std::streamsize _Count) { std::streamsize _Result = 0; switch (_write_phase) { case init_phase: if (!write_init()) { return 0; } _write_phase = data_phase; case data_phase: _Result = write_data(_Ptr, _Count); if (_Result == _Count) { return _Result; } if (!write_end_init()) { return 0; } _write_phase = end_phase; case end_phase: default: return _Result; } } private: bool write_init(void) { _write_zstream.zalloc = Z_NULL; _write_zstream.zfree = Z_NULL; _write_zstream.opaque = Z_NULL; _write_zstream.next_in = NULL; _write_zstream.avail_in = 0; _write_zstream.next_out = NULL; _write_zstream.avail_out = 0; // -MAX_WBITSの意味が不明。しかしこうしないと動かない。 if (inflateInit2(&_write_zstream, -MAX_WBITS) != Z_OK) { return false; } _write_buffer.resize(default_buffer_size); _write_zstream.next_out = reinterpret_cast<Bytef*>(&_write_buffer[0]); _write_zstream.avail_out = static_cast<uInt>(_write_buffer.size() * sizeof(buffer_type::value_type) / sizeof(Bytef)); return true; } std::streamsize write_data(const char_type* _Ptr, std::streamsize _Count) { _write_zstream.next_in = const_cast<Bytef*>(reinterpret_cast<const Bytef*>(_Ptr)); _write_zstream.avail_in = static_cast<uInt>(_Count * sizeof(char_type) / sizeof(Bytef)); do { int iResult = inflate(&_write_zstream, Z_SYNC_FLUSH); switch (iResult) { case Z_OK: if (_write_zstream.avail_out == 0) { if (!flush_write()) { return 0; } } break; case Z_STREAM_END: if (!flush_write()) { return 0; } return _Count - static_cast<std::streamsize>(_write_zstream.avail_in * sizeof(Bytef) / sizeof(char_type)); default: return 0; } }while (_write_zstream.avail_in != 0); return _Count; } bool write_end_init(void) { int iResult = inflateEnd(&_write_zstream); if (iResult == Z_OK) { return true; } return false; } bool flush_write(void) { std::streamsize _Count = static_cast<std::streamsize>(_write_buffer.size() - _write_zstream.avail_out * sizeof(Bytef) / sizeof(char_type)); std::streamsize _Result = basic_filterbuf<Elem, Tr>::xsputn(&_write_buffer[0], _Count); if (_Count != _Result) { return false; } _write_zstream.next_out = reinterpret_cast<Bytef*>(&_write_buffer[0]); _write_zstream.avail_out = static_cast<uInt>(_write_buffer.size() * sizeof(char_type) / sizeof(Bytef)); return true; } z_stream _write_zstream; enum phase_type { init_phase, data_phase, end_phase, }; enum { default_buffer_size = 2048, }; phase_type _read_phase; phase_type _write_phase; typedef std::vector<char_type> buffer_type; buffer_type _write_buffer; };
xsputnをオーバーライドしてそこで主な処理を行っています。
xsputnをオーバーライドする以外にもbasic_streambufを拡張するやり方は色々あるので、これは1つのやり方だと思っておいて下さい。
東京新聞の「逐条点検 日本国憲法」という記事で、日本国憲法が1条ずつ解説されています。
いやー勉強になりました。知らないことだらけ。
こんな記事を無料で読ませてもらい、東京新聞には感謝しております。
憲法論争に興味がない方(私もないですが)でも、現状の憲法がどんなものか位は知って置いても良いのではないか思います。
一応国の中では頂点に位置する決まりごとですし。
もちろんこの解説は東京新聞が書いたので東京新聞の主観が入っています。
これだけ読んで知ったつもりになるのは少し危険でしょう。
他の主観を基にした解説記事も読んでみたいですね。
他の会社もこうした記事を書いてくれないかなぁ・・・
「続・Bloglinesのススメ」というBloglinesの解説記事を見つけました。
Bloglines素人の私にとっては大変ありがたい記事です。
この記事を見ながら色々な機能を使ってみましたが、RecommendationsとRelated Feedsが面白い機能だと思いました。
どんなアルゴリズムを使っているのかは分かりませんが、なんか面白いBlog無いかな~というニーズを見事に満たしてくれる、ような気がします。
まだあまり使っていないのでいつもそうなのかは良く分かりませんが。
BloglinesというRSSリーダーを使い始めました。これは有名なRSSリーダーだと思いますので説明は省略。
このサイトのRSS FeedをBloglinesで見ている人が何人いるか知りたかったので登録だけはだいぶ前にしていたのですが、最近、普通のBlogのRSS Feedを何件か登録してRSSリーダーとして活用し始めました。
活用し始めた理由は、Bloglines閲覧用のHeimdallrのプラグインを作れないかと思ったからです。こんな理由でBloglinesを使い始めた人は私だけだろうな・・・。
Bloglines APIを見たときからこのアイデアだけはありまして、Heimdallr側のプラグインを受け入れる部分の実装がもうじき完成(1.08安定版リリース=完成)する予定なので、そろそろこのBloglines閲覧用プラグインも形にしてみようかと思います。
名称は「Bloglinesチャンネル」になる予定です。そのまんまですが。
さて、この「Bloglinesチャンネル」は、既存のBloglinesユーザにとって役に立つものに仕上げなければなりません。そんなわけで、まず私がBloglinesユーザになってその気持ちを知ろう、ということで活用し始めたわけです。
しばらくBloglinesを活用してみたら感想等を書いてみたいと思います。
Heimdallr 1.08beta1をリリースします。
安定版ではありません。
フル版 Heimdallr 1.08beta1 ダウンロード
軽量版 Heimdallr 1.08beta1 ダウンロード
安定版はHeimdallr 1.07です。
ようやくbeta版になりました。一週間位使って問題が無いことを確認した上、ドキュメントを1.08に合わせて修正したら安定版としてリリースします。
今回から軽量版も一緒にリリースしてみることにしました。
軽量版とは、Heimdallrから全てのプラグインを除いたバージョンです。
フル版と軽量版の違いは以下の通りです。
名称 | インストール パッケージサイズ |
動作時の 使用メモリ |
備考 |
---|---|---|---|
フル版 | 3.5MByte | 18MByte | 従来と同じもの(全機能使用可能) |
軽量版 | 1.5MByte | 12MByte | 自動学習機能、キーワードチャンネル、トピックチャンネル使用不能 |
動作時の使用メモリは、WindowsXP Proで、Heimdallrをデフォルト設定で起動し、一つ記事を閲覧した後測定した値です。
軽いRSSリーダーがお好みの方は軽量版をお使い下さい。
ちょっと重たくても構わない方はフル版をお使い下さい。
軽量版の方は、しばらくしても反響が無ければ必要が無いものと判断してリリースを止める予定です。
軽量版の説明が長くなりましたが、今回の主な変更はトピックチャンネルとキーワードチャンネルの強化です。トピックチャンネルの方に「国際」「健康」の2つのトピックを追加しました。さらに若干ですが両方のチャンネルのダウンロード時間が短くなっています。
goo RSSリーダーの検索機能がどんなものか知りたかったので、ちょっと使ってみました。
どうやらgooブログが提供しているブログ検索サービスを使っているようです。
gooブログってこんなサービスを提供しているんですね。知りませんでした・・・。
gooブログだけに限らず、他のブログも検索してくれているみたいですし、検索結果のRSSを出力してくれるので、FeedbackやBulkfeedsと同じように扱えます。
ちょっと使ってみましたが、普通にまともな結果を出しますね。良い感じです。
そして応答速度が非常に速いようです。
200ミリ秒~500ミリ秒で結果を返してくれます(これは凄い!)。
しばらく様子を見て特に結果に偏りなどを感じなければHeimdallrのキーワードチャンネルのアクセス先にしようと思います。
でも、Heimdallrもそろそろ1.08のbeta版を出したいし、beta版の時点で機能的にはFixさせておきたいのでしばらく様子を見ないで導入してしまうかもしれません。
ついでに、未来検索 livedoorが最近やたらと重い(20秒くらい待っても結果を返してくれない)のでこれをキーワードチャンネルのアクセス先から外そうと思います。
2月中にHeimdallrを紹介して頂いた方々に対し、トラックバックを送ると共にお礼を込めてコメントなどを書かせて頂きたいと思います。
透明スキン+マルチビューを使ったスクリーンショットは結構圧巻。
こういうスクリーンショットは、どのような使い方をしているのか一目で分かるので開発者にとって参考になります。
Vectorサイトの方へのリンクだったので危うく見逃すところでした。
お手軽にニュースのチェックができる様子が良く分かります。
恐らくHeimdallrのインターフェースはシンプルだろう・・・と思っているのですが、実のところシンプルというのはあまり定量的な単語ではないので、自分で「シンプル」と言うのは難しいものがありますね。
そんなわけでVectorのHeimdallr紹介文の「特徴」も、こうした主観的な言葉はできる限り排除して説明していたりします。
でもこうした主観的な言葉を用いた方が魅力的な宣伝文句になるんですよね。悩ましいところです。
RSSナビがRSSフィード検索、最新ヘッドライン検索の結果を受け取るためのRSET APIを公開しました。
RSSナビ REST API
Heimdallrでの活用方法を考えてみますと・・・
とりあえずヘッドライン検索の方がFeedbackのようなRSS検索サイトと同じように使えるみたいですのでキーワードチャンネルのアクセス先として使えますね。
でもdescriptionが無いため使い物になるかどうかは微妙なところ。
あとタイトルに付く(個)や(企)がちょっとうっとおしい。
さらにHeimdallrで検索すると検索結果0件なのがちょっと(これはどうでも良いのですが)
しばらく使ってみて良さそうな検索結果が得られるならばキーワードチャンネルのアクセス先に追加してみます。
あと実はトピックチャンネルの方にも活用できたりします。
RSSナビ REST APIの下の方にカテゴリIDの一覧がありますが、この一覧にあるものならなんでもトピックチャンネルのトピックにできます。さてどうしましょうかね。
でも一番のメリットはHeimdallrをRSSナビで紹介してもらえることのような気がします(笑)。
※ご利用になりましたらご連絡ください。RSSナビの中で紹介させていただきます。って書いてありますし。
Heimdallr 1.08alpha5をリリースします。
安定版ではありません。
安定版はHeimdallr 1.07です。
今回の主な変更はトピックチャンネルの強化です。一回あたりのダウンロード時間がだいぶ短くなりました。さらに、「経済」「社会」の2つのトピックを追加しました。
もう1.08で追加する機能はほとんど無いので、次はalpha版ではなくbeta版をリリースする予定です。