プログラム

time2

書き忘れ。
上の記事で書こうとした本題はフィードの回収スクリプトが50秒もかかってます。というお話。
新規購読フィードが増えたから重かったのか、はたまた時間帯の問題なのか、それともこれが限界なのか?

比較表

結構、あちこちにありますが一応メモがてら。
変数(or 信号線)Aは4bit幅、Rubyの場合は%4bでフォーマットして表示させて、内部で処理させる符号は扱わないとしています。

操作内容 VHDL Ruby
ビット反転 not A (~a) & 0xf
2の補数 (not A) + '1' ((~a) + 1) & 0xf)
左1bitシフト A & '0' a << 1
右1bitシフト '0' & A(3 downto 1) a >> 1
LSBを0ビット目とした場合のxビット目 A(x) a[x]

フィード解析

お昼前から自作フィードリーダに機能を追加実装中。
ちょっと以前から試したかったこと(その1)を実装してみた。

フィードリーダで回収されたフィードで且つ、未読のもののフィード本文を解析してその単語の出現回数に応じてフォントのサイズを調整して表示するとタグクラウド(tag cloud)のようなものができるのでは?と。
つまりソーシャルブックマークの様なものだとブックマークされた傾向でその人(とか、コミュニティ全体)が持ってる興味・関心の方向がタグの雲として表現される訳だけど、この場合は自動的に回収されたフィードの内容に従って、自分が興味のある人たち(=フィードリーダに登録しているblog等を書いている人)が何に関心を持ってたりするかが浮かんでくるという考え。

例えば、ユーザーは"twitter"のことを知らないのに、自分が購読してるフィードの人たちが"twitter"のことを急にblogに書き始めると雲にその単語が大きく表示され始めるので興味を持ってみて見る行為につながる。(に違いない)
得てして自分が興味を持っている人の興味・関心は被ることが多い(と思う)のでハッピーになることができる(かなぁ)。

まぁ、やってみることが大切ってことで、ざっくり実装。
とりあえずこんな感じになった。

f:id:hideack:20070519151938p:image

…。もうちょっとkakasiの使い方勉強しないとダメですね。妙なところで要素に分解されちゃってる。(接続詞とかそのまんま出てますね)
あと、問題としては、エンジニア系の方々のblogで内容にプログラムのソースコードとかが書かれていた場合、えらいことになりそうだと。。。
もう少し試行錯誤が続きます。

Ajax利用時にIEだとキャッシュされる問題

自作のフィードリーダのAjaxで描画を切り替えているところでIEとFirefoxで挙動が異なる原因がわかったのでメモ。

問題になっていたのは、ボタンをクリックしてAjaxでDOMで指定する箇所の更新を行う際、クリックした際のDBの内容の状況によって出力されるアイコン(この場合は既読・未読のアイコン)がIEだと更新されなかったという点。
普段使っているFirefoxだとこの点が想定する

未読のフィード選択→内容表示→閉じるボタンをクリック。一覧が表示され、先ほど未読だった箇所が既読アイコンで表示。

という動きになっていたのだが、IEだと未読のものを読んでもアイコンが未読のままだった。
ということで調べているとすぐ原因は見つかった。

Jaslabsにて、IEでAjaxリクエストをキャッシュさせない方法が掲載されています。

IEの場合Ajaxを用いた通信を行うと、GETメソッドの場合一度実行されるとデータがキャッシュされて、2回目以降の通信はそのキャッシュされたデータを読みに行くようになってしまいます。

なるほど、確かにGETで取りにいっていた。
解決策として次の方法が書かれている。

  1. GETメソッドではなくPOSTメソッドで取得する
  2. GETメソッドで取得する場合、URLにユニークID(タイムスタンプ等)を付与する
  3. If-Modified-Sinceヘッダを付与する

シンプルにGET→POSTに変更して対応しました。無事解決。すばらしい。

クラスの作り方

ハードウェアの検証モデリングにRubyを利用してみた。
Rubyはprintfでのビット列での表示等でハードウェアモデリングに使うと便利な気がする。

value = 0xfa50
printf("%016b", value)    # 1111101001010000

あと、変数を_で区切って入れられるのも検証モデル作るときに便利。16進数文字列を4文字ずつで区切るときとか...

val = 0xffff_aaaa_5555_3333  # 0xffffaaaa55553333

なので、Rubyのクラスの作り方の復習。

class Car
attr_reader :oil
def initialize(oil)
@oil = oil
end
def charge(add_oil)
@oil += add_oil
end
end

そういえば、if文も if 〜 elsif 〜 end だし、VHDL書く人には自然かもしれない。

union

union=共用体。
同じアドレスからのメモリを共有する。

// int = 4byteの場合
union uData{
int foo;
unsigned char bar[4];
}data

連想配列

JavaScript連想配列を定義するとき、{}で包んで

var obj = {...};

の様に書く。このとき、

var obj = {
'foo'  : 'bar1',
'hoge' : 'bar2'
};

と書けば、Firefox, IE両方でエラー無く通るが、PHP等で書く様に

var obj = {
'foo'  : 'bar1',
'hoge' : 'bar2',
};

と、末尾の配列の要素の定義の後ろに「,」を付けているとIEではエラーとなる。

開発中。

個人で作ってるWebアプリが動きつつあります。
スクリーンショットを初公開。"積ん読型"フィードリーダです。
本屋さんで本をいくつか買ったときに机の上に置いていく様なイメージ。
とりあえず最新のものが上部に表示されて設定次第では当日だけの配信のみを画面に出せたり、過去の配信データも表示できたりします。

f:id:hideack:20070321213751p:image

配信フィード単位で閲覧できます。
全て自分が普段使う機能を載せた感じですが…。
はてなブックマーク等々へのショートカットも載せてあります。

f:id:hideack:20070321220354p:image

いかんせん開発時間が休日の気が向いたときと、平日のバス・電車の中+帰宅後、寝る体制になって意識がなくなる直前まで。といった状況なのでバグ多々ですが。
普段使える状態まで早く持って行きたいところ。
でも、それなりにいい感じです。

test

てすとてすと。