ついで [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); } } })();
* [Pragnesh] Wow, this is in every rseepct what I nee... (2013-01-01 19:28:22)
ソースコードなどを 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 レイアウトなのが問題なのかも.
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() の中身を適当にいじってください.
* [Sandroo] An inetlglinet point of view, well expre... (2013-01-01 20:46:17)
以前公開して [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 + ... のあたりを適当に.
* [Nickey] The expertise shines through. Thanks for... (2012-12-30 17:30:07)
新しくなりました.こちらへ [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].なんだかさっぱり分かりません.
* [online pharmacy] food allergy rash hair transplant surgeo... (2019-02-27 08:11:26)
* [Consuelo Hornibrook] Hello, it\'s Consuelo here!I\'m pinging ... (2019-02-20 13:05:58)
* [Manueltak] [url=http... (2019-02-20 10:36:13)
* [JesusAvemn] [url=http... (2019-02-20 00:53:25)
* [asiameewz] amazon online and as a result Flipkart i... (2019-02-19 18:32:43)
* ...
素晴らしい.tab キーで試行錯誤した頃 [2005-09-05-2] がなつかしい.
j で次.k で前.おお vi キーバインド [2005-08-28-1] だ.
* [Jennica] That\'s the perfect inishgt in a thread ... (2013-07-03 12:58:19)
なるほど,よくできてる.
つうか「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 は記事の量が激増したような気がする.何だろうと思ってよくよく見てみたけど,要するに「あびる優」ネタ多すぎなだけなんだな.おまいらとっとと飽きて下さい.
* [Umarfarooq] People nomrlaly pay me for this and you ... (2012-12-30 15:59:23)
先日書いた通り[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 が何か変更作業していたようだが,それと関係あるのだろうか.うーむ,お手上げ.
* [Trish] That takes us up to the next level. Grea... (2013-07-03 23:07:26)
* [かがみ] わざわざコメントありがとうございます.正常に転送されていることが確認できました.... (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 を 読むという,そして物理的な新聞は一紙も取っていないという,一社会人としてどうよ? な状態に落ち着いている.まあそんな社会人がいてもいいんじゃね?
最終更新時間: 2009-01-04 15:31