不完全版 twitter 検索結果ページから特定キーワードを見えなくする bookmarklet

もろもろのtwitterクライアント使った方が100倍マシ、もしくはFirefox使ってるならgreasemonkey使えばいいんだろうだけど、やってみたことをとりあえずあげてみる。

目的:http://twitter.com/#search?q=%23C78などの検索結果から、野良RTや【拡散】などの特定キーワードを見えなくして可読性の効率を上げたい。

CSSで可能かとも思ったけど、パッと見無理っぽい。
E:contains("foo")使えば楽勝w→css構文解析エラーなんで?→それ2005年時点で仕様バグで取り下げ食らってるから。最新仕様くらい知っとけ→\(^o^)/
参考:
http://www.w3.org/TR/css3-selectors/
http://www1.ttcn.ne.jp/amotohiko/css/selectors.html
https://bugzilla.mozilla.org/show_bug.cgi?id=221981#c9


じゃあもう画面から特定キーワードのつぶやきが見えなくなるならある程度妥協する。→でもDOMとか分からん→javascript + xpath が手っ取り早そう→greasemonkeyの導入コストよく分からない→bookmarklet連打なら許容できる、気が、しなくも、ない

//2010/08/28修正 xpathの範囲絞るの忘れてた&発言の枠自体削除するように。
//2010/08/31修正 TL上に公式RTが表示されて、それも消したくなったため修正
// + ハッシュタグついた実況twitも消したくなったため、それようのbookmarklet追加
//2010/09/14修正 search.twitter.comのhtmlタグ変更に今更気づいて対応

//見やすく改行版
//公式RTと非公式RT,QT,拡散,リツイートを消す
javascript:(
  function(){
    //公式RT削除
    var rt=document.evaluate(
      '//li[contains(concat("",@class,"")," share ")]'
      ,document,null,7,null);
    for(var i=0;i<rt.snapshotLength;i++) {
      rt.snapshotItem(i).style.cssText="display: none;";
    }
    //非公式RTなど特定の文字列があったら削除
    var a=["RT","QT","拡散","リツイート"];
    for(var i=0;i<a.length;i++){
      var d=document.evaluate(
        '//span[@class="status-content"]/span[@class="entry-content"]/text()[contains(.,"'+a[i]+'")]',
        document,null,7,null);
      for(var j=0;j<d.snapshotLength;j++){
        d.snapshotItem(j).parentNode.parentNode.parentNode.parentNode.style.cssText="display: none;";
      }
      //search.twitter.com ではhtmlタグが異なるようになったので対応
      d=document.evaluate(
        '//span[@class="status-body"]/span[contains(concat("",@class,""),"msgtxt")]/text()[contains(.,"'+a[i]+'")]',
        document,null,7,null);
      for(var j=0;j<d.snapshotLength;j++){
        d.snapshotItem(j).parentNode.parentNode.parentNode.style.cssText="display: none;";
      }
    }
  }
)()


//bookmarklet用に一行で。ブラウザによっては文字のURLエンコードとかしないと貼り付け+実行じゃ動かないのかも。
javascript:( function(){ var rt=document.evaluate( '//li[contains(concat("",@class,"")," share ")]' ,document,null,7,null); for(var i=0;i<rt.snapshotLength;i++) { rt.snapshotItem(i).style.cssText="display: none;"; } var a=["RT","QT","拡散","リツイート"]; for(var i=0;i<a.length;i++){ var d=document.evaluate( '//span[@class="status-content"]/span[@class="entry-content"]/text()[contains(.,"'+a[i]+'")]', document,null,7,null); for(var j=0;j<d.snapshotLength;j++){ d.snapshotItem(j).parentNode.parentNode.parentNode.parentNode.style.cssText="display: none;"; } d=document.evaluate( '//span[@class="status-body"]/span[contains(concat("",@class,""),"msgtxt")]/text()[contains(.,"'+a[i]+'")]', document,null,7,null); for(var j=0;j<d.snapshotLength;j++){ d.snapshotItem(j).parentNode.parentNode.parentNode.style.cssText="display: none;"; } } })()

//返信削除
//こっちはsearch.twitter.comのhtmlタグ変更の対応はしてない
javascript:(
  function(){
    //ハッシュタグ削除用のclassプロパティ  :hashtag
    //ユーザへの返信削除用のclassプロパティ:username
    //URL入力削除用のclassプロパティ       :web
    var a = ["hashtag","username","web"];
    for(var i = 0; i < a.length; i++) {
      //a[i].toString()が必要な理由は調査してない
      var ht=document.evaluate('//span[@class="status-content"]/span[@class="entry-content"]/a[contains(concat("",@class,""),"'+a[i].toString()+'")]',document,null,7,null);
      for(var j = 0; j < ht.snapshotLength; j++) {
        ht.snapshotItem(j).parentNode.parentNode.parentNode.parentNode.style.cssText="display: none;";
      }
    }
  }
)();

//一行版(ハッシュタグあったらツイート消す
javascript:(function(){var a = ["hashtag"];for(var i=0;i< a.length;i++){var ht=document.evaluate('//span[@class="status-content"]/span[@class="entry-content"]/a[contains(concat("",@class,""),"'+a[i].toString()+'")]',document,null,7,null);for(var j=0;j< ht.snapshotLength;j++){ht.snapshotItem(j).parentNode.parentNode.parentNode.parentNode.style.cssText="display: none;";}}})();

結論:やっぱり不便だからお前はクライアント入れろよJK
またやってみたくなったら修正するかー。

参考:
http://piro.sakura.ne.jp/xul/tips/x0032.html#getNodesFromXPath

http://d.hatena.ne.jp/Cherenkov/20090111/p1

http://www.tohoho-web.com/js/dom.htm#createElement

http://www.catch.jp/wiki/index.php?Bookmarklet%A4%CE%BA%EE%A4%EA%CA%FD

http://let.hatelabo.jp/

http://d.hatena.ne.jp/amachang/20071112/1194856493

http://d.hatena.ne.jp/amachang/20071112/1194856493#c1195010128

firefox 3.6 + stylish + gmail(簡易HTML版) で 本文部分のtextarea を user css で幅を広げた。

最近メモをgmailの下書きに突っ込むことが多くなったので。
標準HTMLは機能とUIが落ち着いたようなら使ってみる。

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("mail.google.com") {
  textarea.mi {
    width:  100%  !important;
    height: 450px !important;
  }
}

windows xp + python 2.6.2 + openCV 2.1 をインストール、sample実行までの自分用覚え書き

1. python 2.6.2 のインストール
配布先:
http://www.python.jp/Zope/download/pythoncore
直リンク:
http://www.python.org/ftp/python/2.6.2/python-2.6.2.msi

参考:
http://d.hatena.ne.jp/paraches/20100721
http://www.pythonweb.jp/install/setup/index1.html

インストール実行:
python-2.6.2.msi
適当なフォルダにインストール。
基本的に次へ次へでいいと思う。

インストール完了後、以下の環境変数を設定。

PYTHON_HOME=C:\Python2.6 #必須ではない
PYTHONPATH=%PYTHON_HOME%\Lib\site-packages #これを設定しておくと良いらしい
PATH=%PATH%;%PYTHON_HOME%; #pythonをコマンドプロンプトから実行するのに使う
> python --help

とか実行できたらOK

2. openCV 2.1のインストール
配布先:
http://sourceforge.net/projects/opencvlibrary/files/
直リンク:
http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.1/OpenCV-2.1.0-win32-vs2008.exe/download

参考:
http://opencv.jp/opencv2-x-tips/install-on-windowswindows32bit-64bit-visual-studio-opencv21
http://d.hatena.ne.jp/paraches/20100721
http://d.hatena.ne.jp/niitsuma/20080209

インストール実行:
OpenCV-2.1.0-win32-vs2008.exe
基本的に次へ次へで。環境変数設定しない?それともする?みたいなメッセージだけ、する。を選択。

インストール完了後、openCVインストールフォルダ以下に以下のファイルが出来てるはず。

\OpenCV2.1\Python2.6\Lib\site-packages
cv.lib
cv.pyd

これを%PYTHONPATH%にコピペ

で、\OpenCV2.1\samples\python以下の適当な.pyファイルを実行できればOK

ruby + mechanize 使ってみたたときの個人的なBK

個人的なBK。
そ れ p l a。きゃははruby+mechanizeでhtmlパースとか小学(ry。

1.firefox + firebug 使って xpathとるとハマる。
動的に要素を取得するので、サイトによってはdiv要素が多く取得されててハマる。
(といってもfc2.comでしかあったことない)
また、tableのtbodyタグを補完してくれるのでこれもハマる。
(これはたまにある)
対応としては、JavaScriptを切ることでまあまあ正常に要素を取得できる。

firebugはolタグなどの閉じるタグが必須で無い場合に続くタグを一段下の階層する。
mechanizeはそういうタグは無視する。
動作未確認だけどこんな感じのhtmlで発生したはず。

<html>
<body>
  <div>
    <span>
    <ol>
      <li>hoge</li>
    </span>
    <span>
      <li>fuga</li>
    </span>
  </div>
</body>
</html>

firebug:/html/body/div/span/ol/span/li
mechanize:/html/body/div/span/li
そういう書き方できるからしょうがないんだけど、対応したい場合には地道にxpathの最後尾を削っていって要素の取得状況から判断するのが早いと思う。
htmlがきれいなサービスならいきなりソース表示でもいいかもしれない。


2.meta タグ のcontent-type、もしくは http ヘッダのcontent-typeと本文の文字コードが違う性でハマる
本文がEUC-JPなのにmetaタグUTF-8って書いてあったり逆だったり。
対応としては、以下のような感じに。

require "rubygems"
gem "mechanize", "=1.0.0"
require "mechanize"
require "nkf"

agent = Mechanize.new
agent.get('http://localhost')
if NKF::UTF8 != NKF.guess(agent.page.body)
  agent.page.encoding = 'EUC-JP'
  agent.page.body = NKF.nkf("-e m0" agent.page.body) #これは不要かも
end

参考:http://d.hatena.ne.jp/kitamomonga/20100712/ruby_mechanize_loses_to_euc_html_tips

常識の範疇ですかそうですか。

Firefox 3.6.7 でメニューバーからブックマークを消す方法

ブックマークしすぎでフォーカス当たったとき重すぎ笑えないので。

参考:
http://d.hatena.ne.jp/mpen/20090418/p1

環境:
Windows XP SP3

Firefox 3.6.7

http://getfirebug.com/
Firebug 1.5.4

アドレスバーに入力

chrome://browser/content/browser.xul

Firebug起動。

矩形にマウスカーソルのアイコン「ページ内の調べたい要素をクリックしてください」を押下して、メニューバーのブックマークをクリック。

デフォルト画面下の表示域で反転する部分を確認する。
自分の環境では以下のようになってた。

userChrome.cssを変更するため、以下のディレクトリ表示。

C:\Documents and Settings\[UserName]\Application Data\Mozilla\Firefox\Profiles\[xxxxxxxx.default]\chrome

初めて変更するのでuserChrome.cssファイル作成

mv userChrome-example.css userChrome.css

cssファイル変更

vi userChrome.css
//最下行に以下を追加
/*
 * メニューバーからブックマークを消す
 */
#bookmarksmenu {
  display: none !important;
}

Firefox再起動

情弱の俺が秋葉原に行かないと手に入りづらい系統のCD6枚欲しかったのでamazonさんに注文したまま任せてたらえらく待たされたでござるの巻

メールボックス、行動順に時系列で昇順ソート

amazonへ注文 7/2 14:30
amazonから支払い番号 7/2 14:50
入金 7/2 23:00くらい
amazonから入金確認 7/2 23:30
amazonから発送連絡 7/3 16:20
発送確認の認証キーを印刷 7/6 17:30
amazonから認証キー連絡 7/6 19:10
 内訳:
 2010/7/3 --- 東京都 JP
 2010/7/4 --- 神奈川県 JP
 2010/7/6 --- ご指定のコンビニ JP
コンビニに受け取り 20:10くらい
 端末に「現在配達状況が混乱しているため認証キーを受け付けられない場合があります。配送については配送会社に問い合わせてください」みたいな画面が表示。
amazonから受領確認 7/6 21:30
コンビニで荷物の着日確認 7/4

JPExpress担当者さんマジ大変なんですね。

thunderbird3でメールが受信できなくなりインデックス作りっぱなしになったのちエラー

thunderbird3を使っていてinboxが4GBを超えたのが原因で突然メールを受信できなくなった。エラーとかは「受信トレイの容量がいっぱいです」みたいな感じ。
最適化、牽引の再作成とかでも無理だった。
以下の操作で復旧。
・受信トレイ以下のサブフォルダの移動
・受信トレイ内のメールの移動
・inboxファイルの削除