ついで [2006-10-08-2] に bloglines アイテムをクリップボードにコピー する方も改版.こちらは bloglines の変更じゃなくて,Firefox の変更に 対する対応になっていると思う.変更箇所は
というわけで以下を bookmark してください.
javascript:(function(){
/*
setClipboard for Firefox
LastModified : 2006-01-10
http://la.ma.la/misc/js/setclipboard.txt
*/
function setClipboard(text){
var url = [
'data:text/html;charset=utf-8;base64,PGJvZHk+PC9ib2',
'R5PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKGZ1',
'bmN0aW9uKGVuY29kZWQpe3ZhciBzd2ZfZGF0YSA9IFsKICdkYX',
'RhOmFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoO2Jhc2U2',
'NCxRMWRUQjJ3JywKICdBQUFCNG5EUGdZbGpBd01qSTRNejAlMk',
'YlMkY5JTJGZTJaZkJnYUdhV3dNRE1uNUthJywKICdrTU10TjRH',
'ZGdaZ1NJTXdaWEZKYW01UUFFJTJCQm9iaTFCTG5uTXlDcFB6RW',
'9oU0dJJywKICdQRnAlMkZBeHNEREJRa3BGWkRGUUZGQ2d1eVM4',
'QXlqSTRBRVVCaXkwVndBJTNEJTNEJwpdLmpvaW4oIiIpOwpkb2',
'N1bWVudC5ib2R5LmlubmVySFRNTCA9IFsKICc8ZW1iZWQgc3Jj',
'PSInLHN3Zl9kYXRhLCciICcsCiAnRmxhc2hWYXJzPSJjb2RlPS',
'csZW5jb2RlZCwnIj4nLAogJzwvZW1iZWQ+JwpdLmpvaW4oIiIp',
'Owp9KSgi',btoa(encodeURIComponent(text)+'")</'+'script>')
].join("");
var tmp = document.createElement("div");
tmp.innerHTML = '<iframe src="'+url+'" width="0" height="0"></iframe>';
with(tmp.style){
position ="absolute";
left = "-10px";
top = "-10px";
visibility = "hidden";
};
var b;
try { /* modified by swk */
b = top.frames[0].document.body;
} catch (e) {
b = document.body;
}
b.appendChild(tmp);
setTimeout(function(){b.removeChild(tmp)},1000);
}
function extractText(node) {
var text = '';
if (node.nodeType == 3) { /* TEXT_NODE */
text = node.nodeValue;
} else if (node.hasChildNodes()) {
var n = node.childNodes.length;
for (var i = 0; i < n; i++) {
text = text + extractText(node.childNodes[i]);
}
}
return text;
}
function fmt(title, href) {
return '\r\n\t* ' + title + ':\r\n\t- ' + href + '\r\n';
}
var clog = '';
var h3s = top.basefrm.document.getElementsByTagName("h3");
for (var i = 0; i < h3s.length; i++) {
var a = h3s[i].getElementsByTagName("a")[0];
clog = clog + fmt(extractText(a), a.href);
}
setClipboard(clog);
})();
しかしこう bloglines や Firefox に仕様変更がある度に振り回されるのは 何とかならんものか.何か根本的に方針を間違っている気がしないでもない なあ.
いろいろ文句言いながらも,しつこく bloglines 使ってます.
以前書いた keep new を解除する bookmarklet [2006-07-08-1] が動かなく なっていたので修正.
今までの bloglines では keep new のチェックボックスをクリックすると そのたびにページ遷移が発生していたのだけど,最近 Ajax 対応したらしく ページ遷移しなくなった.というわけで bookmarklet の方で自前で Ajax 化 する必要はなくなって,本家が用意してくれている JavaScript 関数を呼び まくるだけでよい.ずいぶんシンプルになった.
javascript:(function(){
var ipts = top.basefrm.document.getElementsByTagName("input");
for (var i = 0, k = 0; i < ipts.length; i++) {
if (ipts[i].type == "checkbox"
&& String(ipts[i].onclick).match(/markUnreadItem\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,.*\)/)
&& ipts[i].checked == true) {
var siteid = RegExp.$1;
var subid = RegExp.$2;
var itemid = RegExp.$3;
ipts[i].checked = false;
top.treeframe.keepItem(siteid, subid, itemid, false);
}
}
})();
* [vurufqpblh] NEW DELHI: Investigators believe an e ma... (2007-11-26 08:47:58)
* [arlmwsxiup] 1 quarterback before suffering a knee in... (2007-11-25 12:50:40)
* [arblknvufi] Dick\'s Sporting Goods said Tuesday that... (2007-11-24 12:01:07)
* [juvhocnpnf] Citroen\'s Sebastien Loeb concluded the ... (2007-11-22 15:16:39)
* [tdhusrtdcp] Camry drivers have led a total of 165 la... (2007-11-19 13:03:19)
* ...
ソースコードなどを blog などに貼りつけるときにどうするのがよいか,と いう話がちょっと前に話題になっていたりして,その 論点の一つに「横に長すぎる場合」をどう扱うかが挙がっていたりするのだ けど,実は似たような問題はほかにもある.連続するASCII 文字列である.
典型的には,長ーい URL 文字列を表示した場合に,枠からはみ出したり, 枠自体がびろーんと伸びて見ずらくなったりする.といっても Firefox の 場合だけなのだけど.
対策法がこちらによくまとまっている:
ざっくり要約すると,まず Firefox ユーザ側の立場としては,
一方,Firefox を使っているかどうかに関らず,ウェブサイトの運営側の立 場としては,
ちょっとややこしいのは,url_breaker には「A要素のみを処理するもの」 と「全文を処理するもの」という 2 系統があり,さらに「xpi版 (つまり普 通の拡張機能)」と「Greasemonkey版」の 2 系統がある,のだが,それらが 直交していない.えーと,こんな感じ?
| A要素のみ処理 | 全文を処理 | |
| xpi | url_breakerの Ver.0.2.2以降 | 同左 (オプション設定) |
| Greasemonkey | url_breakerの Ver.0.2.1 | url_breaker_plus |
というわけで,実はしばらく前からウェブページ側に仕込んでみている. url_breaker_plus の方です.各 HTML ファイルの body 要素の一番最後辺りに,
<script src="/js/url_breaker_plus.user.js" type="text/javascript"> </script>
と入れる. url_breaker_plus.user.js はこちら. オリジナルのままだと開き括弧 {, {, [ の直後でも改行しちゃって(個人的 に)気持ち悪いので,正規表現を以下のようにちょっと修正して使っている.
// var regexp = new RegExp("([!-%'-/:=\\?@\\[-`\\{-~]|&)");
var regexp = new RegExp("([!-%'\\)-/:=\\?@\\\\-`\\|-~]|&)");
さて,実は長い文字列が横に伸びちゃうのが一番うっとうしいと個人的に思っ ているのは bloglines なのけど,url_breaker の効果は有ったり無かった りでどうも挙動が謎である.bloglines の記事表示が table レイアウトな のが問題なのかも.
* [xuxkbgaayp] NEW DELHI: Investigators believe an e ma... (2007-11-26 08:48:20)
* [ldobiofzlo] 1 quarterback before suffering a knee in... (2007-11-25 12:50:35)
* [xyktjpawdx] Dick\'s Sporting Goods said Tuesday that... (2007-11-24 12:00:43)
* [ebpngyrvzl] Henning Solberg (Ford) retired from sixt... (2007-11-22 15:18:50)
* [mtijoofvrl] Citroen\'s Sebastien Loeb concluded the ... (2007-11-22 15:16:36)
* ...
bloglines で keep new していた記事がいくつか行方不明になっている.左 側のフレームで keep new な記事数がかっこ表示されているのに,右側には 何も出てこなかったりする.出てこないから keep new の解除もできなくて かっこ表示残りまくり.気持ち悪い.というか,普段から keep new を酷使 しまくる人なので [2006-07-08-1],とても困る.
該当しそうなアナウンスが一応出ている.
これによると一時的なもので,データのロスはないという.メンテナンス前 のデータが新しいデータベースに移行されていないってことか? …と思って いたら,ついさっき keep new した記事がまた消えている.なんだこれ?
そろそろ livedoor reader 辺りに乗り換えろということだろうか.
改版しました [2006-10-08-2]
他人様のコードをいじっているうちに [2006-07-05-2] [2006-07-05-3] 何となく勘がつかめてきたような気が するので,調子に乗って懸案事項に手をつけてみる.
以前,bloglines で表示中の記事のタイトル名,URL をまとめてクリップボー ドにコピーする bookmarklet (Firefox 専用) を書いた [2006-02-11-1] [2006-04-22-1]. これ使うときは,
という流れが多くて,何とかならんかなと思ってたのだ.
というわけでこんな感じ.
onload を使っているので MSIE では動作しないはず.直すのは簡単だと思 うけど,とりあえず放置.
ソース:
javascript:(function(){
function phandler (paths) {
if (paths.length < 1) {
return;
} else if (paths.length == 1) {
top.treeframe.location = paths[0];
return;
}
var p = paths.shift();
var xhr = new XMLHttpRequest();
xhr.onload = function () { phandler(paths); };
xhr.open('GET', p, true);
xhr.send(null);
}
var paths = new Array;
var ipts = top.basefrm.document.getElementsByTagName("input");
for (var i = 0, k = 0; i < ipts.length; i++) {
if (ipts[i].type == "checkbox"
&& String(ipts[i].onclick).match(/markUnreadItem\(\s*(\d+)\s*,\s*(\d+)\s*\)/)
&& ipts[i].checked == true) {
var subid = RegExp.$1;
var itemid = RegExp.$2;
ipts[i].checked = false;
paths[k++] = '/myblogs_subs?ui=1&subid='+subid+'&itemid='+itemid;
}
}
phandler(paths);
})();
期せずして Ajax デビューしてしまった.(XML 使ってないから Aj デビュー か?)
やってることは単純で,keep new のチェックボックスについている onclick 属性から,その記事の subid と itemid を取り出して,それらか らパス名 '/myblogs_subs?ui=1&subid='+subid+'&itemid='+itemid を生成 して,GET しに行っている.
bloglines で実際に keep new のボタンを押した場合は, parent.treeframe.location にこのパス名を直接代入するコードが実行され るのだけど,複数の記事についてこれを単純に繰り返すと,前のやつの読み 込みが終わる前に次のやつを読みに行ってしまってうまく行かない.という わけで XMLHttpRequest を使ってみた.
(open の第3引数を false にすればもっと簡単に書けるかと思ったけど,そ うすると解除がすべて終わるまで操作を受け付けなくなってしまって,使い にくかった)
ついでなので,まとめてクリップボードにコピーする方もちょっとだけ書き 直しておく.以前のは正規表現で無理矢理抽出してたけど,真面目に DOM ツリーをたどるようにした.
ソース:
javascript:(function(){
function setClipboard(text){
/* 省略 (http://la.ma.la/misc/js/setclipboard.txt) */
}
function fmt(title, href) {
return '\r\n\t* ' + title + ':\r\n\t- ' + href + '\r\n';
}
var clog = '';
var h3s = top.basefrm.document.getElementsByTagName("h3");
for (var i = 0; i < h3s.length; i++) {
var a = h3s[i].getElementsByTagName("a")[0];
clog = clog + fmt(a.firstChild.nodeValue, a.href);
}
setClipboard(clog);
})();
ChangeLogメモ以外の形式に変換したい場合は,fmt() の中身を適当にいじっ てください.
以前公開して [2006-02-11-1],その後 Firefox 1.5.0.1 だと動かないこと が判明した [2006-03-08-2] bloglines to ChangeLogMemo な bookmarklet ですが,Firefox が 1.5.0.2 に自動更新されてから試してみたところ,普 通に動くことが判明.なんですかこれ.
実はちょうど動かない原因を調査していて,回避策が分かった矢先だった. Firefox のJavaScript コンソールによると,フレームのあるページで document.body.appendChild と document.body.removeChild を呼び出そう とすると
エラー: uncaught exception: [Exception... "Node was not found" code: "8" nsresult: "0x80530008 (NS_ERROR_DOM_NOT_FOUND_ERR)" location: (コード略) Line: 1"]
となっていたらしい.
バグフィクスリストを見ても,とくに該当しそうなものに見当がつかないん だけどな.まいいか.
というわけで,Firefox 1.5.0.1 で動かさない限りは動作は変わりませんが, 一応新しいの置いておきます.
以前のは,sacja TTT-protokolo さんの bookmarklet が元ネタでしたが,上記の原因調査の過程で,そ のさらに元ネタである 最速インターフェース研究会さんの に遡りました.
中身は
javascript:(function(){
function setClipboard(text){
(略)
}
var src = top.frames[1].document.body.innerHTML;
var pat = /<h3><a title=%22.*href=%22(.*)%22 target=%22_blank%22>(.*)<\/a>.*<\/h3>/g;
var clog = '';
var result;
while ((result = pat.exec(src)) != null) {
clog = clog + '\r\n\t* ' + result[2] + ':\r\n\t- ' + result[1] + '\r\n';
};
setClipboard(clog);
})();
setClipboard() の中身は http://la.ma.la/misc/js/setclipboard.txt で す.途中の appendChild, removeChild するところをいじってますが, 敢えて Firefox 1.5.0.1 で使わない限りはオリジナルのままでよいです.
ChangeLog じゃなくて他のフォーマット変換したいときは clog = clog + ... のあたりを適当に.
新しくなりました.こちらへ [2006-10-08-3].
bloglines で開いているフィードのアイテムをごっそり ChangeLog 形式に 変換して,クリップボードへコピーする bookmarklet を書いてみた. ただし firefox 専用.
書いてみたというか,下記の「ページタイトル+選択文字列+リンクを clipboardにコピーするbookmarklet」をちょっと書き換えてみただけです. bl2clog() って関数が新しいところで,他はほとんど同じ.
bl2clog() の中の clog = clog + ... のところをいじれば,違う出力フォー マットにも簡単に対応できるはず (実際,自分では ChangeLog とはちょっ と違うフォーマットでメモを取っている).
JavaScript は読むことも書くこともできないので,なんか変なことやって る可能性大.実際,正規表現で力まかせに処理しているのがちょっとダサい 感じ.bloglines のページ構成が変わったらアウト.もっと真面目に element や attribute を抽出するのが正しいんだろうなとか思うのだけど, まあ当面はこれでいいか.
最近は,気になったアイテムはとりあえず keep new しておいて,時間があ るときにまとめて読むことが多いんだけど,ふと気づくと数十個 keep new されていて自分のメモに転記するのも億劫になってしまう(で,さらにたま る).というわけで,keep new なものをまとめて自分メモに変換する手段が 欲しかった.
ついでに keep new の一斉解除もできるといいんだけど,どうすればいいの かな… (追記: できました [2006-07-08-1])
(追記) Firefox 1.5.0.1 だと動かないようです [2006-03-08-2].付け焼き 刃なのでどこをどう直せばよいのかさっぱり分かりません…
(追記) Firefox 1.5.0.2 だと普通に動くようです [2006-04-22-1].なんだ かさっぱり分かりません.
素晴らしい.tab キーで試行錯誤した頃 [2005-09-05-2] がなつかしい.
j で次.k で前.おお vi キーバインド [2005-08-28-1] だ.
なるほど,よくできてる.
つうか「tabで流し読み」っていう概念をはじめて知った.
これは bloglines で大量の記事を流し読みするのにいいかもと思って試し てみたけど,微妙.email this, clip/blog this が邪魔.
お騒がせしております Google News の RSS の件ですが [2005-02-21-2], 問題なく読めるようになった気がします.
ちょっと調べてみると,関連してそうな bloglines の挙動について言及し ているサイトを見つけた.
これによると,エラーが検出された際などに巡回頻度を下げたりするような 処置がなされているっぽい(推測らしいが).というわけで一時的なものだっ たりするんでしょうかね.
昨日 [2005-02-20-1] 書いた google news の RSS の件.あきやんさんが早 速転送スクリプトを修正してくれた.コメントまで頂いてしまって恐縮です.
で,コメントのところにも書きましたが,その後,新・旧 URL とも新着ニュー スが bloglines に現れるようになってます.なんだろう,もしかして単に 時間が必要なだけだったか _| ̄|◯
でも何だか記事の量が減った気がしないでもないので,もうちょっと注意し て見ていようかなあと思う次第.
ちなみに逆に 2ch headline は記事の量が激増したような気がする.何だろ うと思ってよくよく見てみたけど,要するに「あびる優」ネタ多すぎなだけ なんだな.おまいらとっとと飽きて下さい.
先日書いた通り[2005-02-12-1],www.akiyan.com で配布されている Google News の RSS を常用している.特に「関連リンク」を指している方 は,複数のニュースサイトの読み比べが楽なので大変重宝している.ありが たい.
で,ふと気づいたら,関連リンクではない方が表示されるようになって しまっている.つまり,google news からポイントされている各サイトの記 事が直接開くようになった.土曜辺りからか.
不思議に思って調べてみると,RSS の場所が変わったらしい.
旧 URL にアクセスすると,新 URL に Location ヘッダで飛ばしてくれるん だけど,そのときに link=related がなくなるっぽい.新 URL を bloglines に入れ直して解決.
…かと思ったんだけど,どうも bloglines が新しい情報を読み込んでくれ ないようだ.2/20 の午前 5 時台のまま止まっている.他の RSS リーダを 試すと普通に読めるし,逆に bloglines で他の RSS は普通に読めているの で,この組合せに特有っぽい現象.最近 bloglines が何か変更作業してい たようだが,それと関係あるのだろうか.うーむ,お手上げ.
* [かがみ] わざわざコメントありがとうございます.正常に転送されていることが確認できました.... (2005-02-21 22:14:41)
* [あきやん@蓄積多趣味人] あきやん@蓄積多趣味人です。先ほど転送スクリプトを修正いたしました。言及、有難う... (2005-02-21 12:56:54)
2ch 速報 headline の公式 RSS が 2/4 頃から配布されるようになったらし い.
S/N の低さと信憑性の無さを最初から承知してさえいれば,2ch の速報 headline は結構便利だ.実はこれまでも,どなたかの myrss.jp フィード を使って読んでいたのだが,公式版に乗り換えた.
そもそも,一般ニュース (ここでは技術系ニュース以外という程度の意味) をどうやってチェックするかというのはなかなか難問だ.rss feed を読み 始めた頃は,主要 5 紙のニュースサイトを全部つっこんでいた (公式に rss を配布しているのは asahi.com だけだけど,bloglines を使っている ので 3rd party な rss が難なく見つかる.myrss.jp のお世話になること が多いみたい).
で,あっと言う間に読むのが追いつかなくなってやめた.量が多すぎる.か つ同じ記事が何度も出て来てうっとうしい.では読むサイト数をしぼればい いのか? というと,どうにも偏りそうで嫌である.朝日の記事しか読まない とか,産経の記事しか読まないという生活はあまりにも怖い (まあ自分がしっ かりしていればよいのだろうが).
というわけで最近はもっぱら google news を使っている.これの最大の強 みは,ニュースごとの各紙読み比べが非常に楽な点.最大の弱みは,RSS を フィードしていなくて,かつ 3rd party による RSS 配布を認めていない点.
しかし RSS 作って配布しちゃってる方はいるようで,大丈夫ですかと心配 になりながらもありがたく使わせて頂くことにする.
上記 akiyan.com の「関連リンク」の方をすべて bloglines につっこんで いる.記事の重複はどうしても出て来るんだけど,それでも複数のニュース ソースの記事をまとめて読める分,だいぶ効率が上がった気がする.あとは google がうっとうしいことを言って来ないこと (あるいは公式に RSS なり Atom なりをフィードしてくれること) を祈るだけである.
というわけで現在は,bloglines で google news と 2ch headlines を 読 むという,そして物理的な新聞は一紙も取っていないという,一社会人とし てどうよ? な状態に落ち着いている.まあそんな社会人がいてもいいんじゃ ね?
最終更新時間: 2008-04-23 08:31
* [hghajenjql] Hello! Good Site! Thanks you! <a href... (2008-03-26 10:27:46)
* [xrerxwzuqy] NEW DELHI: Investigators believe an e ma... (2007-11-26 08:48:20)
* [dafbefnmkn] 1 quarterback before suffering a knee in... (2007-11-25 12:50:40)
* [xexongxogy] Dick\'s Sporting Goods said Tuesday that... (2007-11-24 12:01:07)
* [jqbplsmjfo] Citroen\'s Sebastien Loeb concluded the ... (2007-11-22 15:16:22)
* ...