前の日 / 次の日 / 最新

swk's log

2008-04-13 Sun

* Google News の関連記事をまとめて読む Greasemonkey スクリプト [firefox] 10 users

新聞は複数紙を比べながら読みなさいと小学校で習ったわけですが,そうい う意味でも Googleニュースの「関連記事」機能はとても便利.しかし,表 示された記事を一つずつ開いて読まないといけないのが面倒くさい.なんと かAutoPagerize っぽい感じで一気に読めないものか.

レイアウトもスタイルもバラバラな複数のサイトをまとめて表示することに なるので,ページ連結はちと難しそうな感じ.というわけで,やや不本意だ けど inline frame を使うことにした.

動作例はこの辺をご覧下さい.


最初は全記事の iframe を一気に展開していたのだけど,冗談かと思うほど 重かったので方針変更.ある記事の iframe にマウスポインタを重ねると次 のを読み込み始めることにした.ついでなので,はてなブックマークのコメ ントも展開.はてブ関連のコードははてなブックマークコメントビューワを真似しました.

基本的には,画面の上の方にマウスポインタを置いて,ホイールで下向きに スクロールし続けて行くとそのまま全部読めるはずです.読み飛ばしたいと きはポインタをインラインフレームの右か左に外してスクロールさせればよ いのですが,読み飛ばしが早過ぎると次のページがまだ読み込まれていなく て逆にイライラする罠.

あ,順番に読まなくても,該当記事の見出しをマウスオーバすればその記事 が展開されるようにはなってます.けど読み込み待ち時間がうざいかも.

既知の問題 (というか作ってみてわかった問題):

  • iframe のサイズが決め打ち.なんかいい方法ないんですかね.
  • ホイール付マウスがないと,かなり使いにくいはずです.本当はキーボードのみでも読めるようにしたい.適当なショートカットキーを設定して iframe にフォーカスできるようにすればよい?
  • マウスポインタをピクリとも動かさず,ホイールだけでスクロールして新しい iframe に突入しても,onmouseover は反応しないようです.まあ実際にマウスを使っている場合はピクリとも動かないことはあり得ないのだけど,例えば Let's Note のホイールパッドでクルクルしているとこの問題に当たります.
  • まだ割と重い.(単に私のマシンが非力なだけか?)
  • ていうかぶっちゃけ iframe うざい.むしろタブをぶわーっと開きまくるようにした方が便利かも?

* tb-standalone の perl 5.005 → 5.8 移行 [logging][homenet]

Storable の互換性の問題 [2006-03-25-3] で「Byte order is not compatible」とか言われるため perl 5.005_03 で使い続けていた tb.cgi だが,さくらインターネットで使われている OS が FreeBSD 6.x になり perl 5.005_03 が無くなったため,動かなくなっていた.というわけでしば らくトラックバックを送ることも受け取ることも,過去のものを表示するこ ともできなくなっていたのだけど,ようやく重い腰を上げて対応することに した.

ここにある「$Storable::interwork_56_64bitをtrue値に設定」は,Out of memory とか言われてダメだった.

というわけでここの真似をして,いったん perl 5.6.2 で読んでから Data::Dumper で Dump して,改めて perl 5.8.8 で store し直すことにし た.

*.stor を *.stor.old にリネームしてから dump.pl,restore.pl の順に 走らせる.一応うまくいったっぽい.

dump.pl:

#!/usr/local/bin/perl5.6.2

use strict;
use lib ".";  # 古い Storable 一式をカレントディレクトリに置いた
use Storable;
use Data::Dumper;
$Data::Dumper::Indent = 0;
$Data::Dumper::Useqq  = 1;

while (<*.stor.old>) {
    my $new_file = $_;
    $new_file =~ s/stor$/txt/;
    open(NF, "> $new_file") or die;
    my $data = Storable::retrieve($_);
    print NF Data::Dumper->Dump([$data], ["data"]), "\n";
    close(NF);
}

restore.pl:

#!/usr/local/bin/perl5.8.8

use strict;
use Storable;

while (<*.txt>) {
    my $new_file = $_;
    $new_file =~ s/txt$/stor/;
    open(OF, $_) or die;
    my ($line, $data);
    $line = <OF>;
    eval $line;
    close(OF);
    Storable::store($data, $new_file);
}
<< 2008-04 >>
SuMoTuWeThFrSa
12345
6789101112
13141516171819
20212223242526
27282930

2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
2000 : 01 02 03 04 05 06 07 08 09 10 11 12
1999 : 01 02 03 04 05 06 07 08 09 10 11 12
1998 : 01 02 03 04 05 06 07 08 09 10 11 12
1997 : 01 02 03 04 05 06 07 08 09 10 11 12
1996 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2008-04-30 00:16


Shingo W. Kagami - swk(at)kagami.org