Stylishでtumblrのダッシュボードを軽くできた件2008年09月21日 19時05分51秒

以前、Firefox3でtumblrのダッシュボードが重いって愚痴エントリを書いたのだが、ふとしたことでこれが解決したのでメモ。

やっぱりメインはFirefox3、なんだけど。

ChromeでもMinibuffer+LDRizeが動くのでダッシュボードをつらつらと見たりして遊んでるうちに、やっぱりこの操作感が気持ちいいので久々にFirefox3でもLDRizeをONにしてみたのだが、やっぱり重い。

いや、LDRize云々以前に、普通にスクロールさせるだけでも猛烈なストレスなわけで、「やっぱPC買い替えかぁ?」とか思ってたのだが、ふと「なにがボトルネックになってるのだろうか」と疑問。

Firebugでスタイルを表示してみて、いろいろ試したところ、「ol#posts li.post」(個別エントリの要素)に

    -moz-border-radius-bottomleft: 10px;
    -moz-border-radius-bottomright: 10px;
    -moz-border-radius-topleft: 10px;
    -moz-border-radius-topright: 10px;
なんて、不思議な指定があるのを見つけた。名前から推測するに、ボックスの角を丸めてるっぽい。

ためしにFirebug上でこれらを0px指定にしてみたら、スクロールがかなり軽くなった。これが原因か!

で、Stylishの導入ですよ

ということで、tumblrのダッシュボード向けに-moz-border-radius-*を無効にできれば快適なダッシュボード生活がまた戻ってくると判明したのだが、どうやってそうやるんだ?

ユーザスタイルシートやらいうキーワードは聞いたことがあったので調べてみると、Stylishという機能拡張を導入すると、グリモンでユーザJSを適用できるようにサイトごとにスタイルシートを設定できる、と。

さっそくインストール、見よう見まねでこんなスタイルを書いてみた。

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

@-moz-document domain("www.tumblr.com") {
    ol#posts li.post {
        -moz-border-radius-bottomleft: 0px !important;
        -moz-border-radius-bottomright: 0px !important;
        -moz-border-radius-topleft: 0px !important;
        -moz-border-radius-topright: 0px !important;
    }
}
ちなみに後ろの「!important」をつけないとうまく適用されなかった。

やっぱり重く感じてた人は他にもいたんだねぇ。

で、あんまりうれしくなったので上のスタイルをtumblrにPOSTしたら、さらに徹底的に改良したreblogが。

特にアバター(ユーザのアイコンみたいなもの)にまで適用したことで、notesを表示するときのアコーディオンエフェクトもずいぶん軽くなり、ほんとに快適。ありがたや、ありがたや。やっぱりv4になってから重たいと感じてた人は他にもいたのだなぁ。

最終的には先のtizooo氏のをベースに自分のPOSTと他の人のPOSTを若干色分けするルールを追加してこんな感じに落ち着いた。

こちらが適用前(デフォルト)。
ユーザスタイル適用前
で、カクカク適用後はこんな感じ。
ユーザスタイル適用後

ついでにGoogleも。

実はGoogleの検索結果も、表示している内容のわりに妙に重かった。これまたFirebugで調べて突き止めた原因が、font-familyのArial指定。これでなんでそこまで重くなるのかはわからんけど、ともかくarial指定を解除することで軽快になることだけは確か。ってか、俺のPCどんだけ重いのかと。

ということで、Google向けにこんなのやってみたり。

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

@-moz-document domain("www.google.co.jp") {
    body, td, div, .p, a {
        font-family: sans-serif !important;
    }
}

まぁ他にも重いサイトはあり、場合によってはユーザスタイルシートじゃどうもならんところもあるんだろうけど、利用頻度が高いところをこうやって潰せるとまだまだこのPCでも使えるかなぁ、と思ったり。

pgrep.cmd / pkill.cmd2008年09月29日 12時51分41秒

なんちゃってコマンド・番外編

ほんとはもうこの関連やらないつもりだっだんだけど、「FORコマンドで遊んでみる。」のコメント欄で、たけチンさんからリクエストをいただいたのでちょろっとやってみました。やっぱ同一名称のプロセス全殺しの需要があったか。

内容からして、基本は「FORコマンドで遊んでみる。」の「killでメモ帳を全て終了」で例示したコマンドをほぼそのまま使えるのでスクリプト作成なし、バッチファイルのみでやってます。

ただ、リクエストいただいたpgrep、pkillとも普段使ってないコマンドであまり詳しくないので、

最低限はプロセス名称でのgrepができればいいのですが、、、
という最低限の実装しかしてません。ご容赦くださいな。 > たけチンさん

pgrep.cmd

まずはプロセスIDを列挙するpgrepから。基本はforコマンドにps+findstrの出力を渡してechoするだけなんだけども、

バッチ プログラムで FOR コマンドを使用するときは、%変数の代わりに、%%変数を使用してください。
for /? より抜粋
ってな注意書きがあるので、そのあたりに気をつけてこんな感じ。
@echo off
for /f "tokens=1" %%p in ( '"ps -a| findstr -i %1"' ) do @echo %%p

この内容を「pgrep.cmd」とか「pgrep.bat」とかでパスが通ったところに保存すればOKです。まぁ、前提としてps.js、ps.cmd、kill.cmdがパスの通ったところに設置済みである必要がありますが。

いちおう以前配布したzipに含めたので、ps.jsとかを設置していない場合はこちらをダウンロードして、こちらのエントリを参考にして設置してみてくださいな。

技術的もは、findstr(というかクォートされたコマンド)にそのまま%1でバッチの引数渡せるか心配だったんだけど、やってみたらすんなり通ったのでこれで完成。

あ、findstrは無条件に -i オプション(ignore case)をつけちゃってます。だってwindowsだし。

pkill.cmd

もうね、さっきのバッチの「@echo」を「@kill」に変えるだけなんですよ。えぇ。

@echo off
for /f "tokens=1" %%p in ( '"ps -a| findstr -i %1"' ) do @kill %%p

設置の仕方はpgrep.cmdと同じです。当然zipに含めてあります。

試してみる

まず、メモ帳2つと、NOTEPAD++を起動した状態で、ps+findstrで確認。

C:\Documents and Settings\dara-j>ps -a | findstr -i notepad
 9564   164 dara-j               4940     4940    0:00:00 notepad.exe
 6456   164 dara-j               5048     5048    0:00:00 notepad.exe
 8360   888 dara-j                828    17328    0:00:00 notepad++.exe

C:\Documents and Settings\dara-j>
んでpgrepしてみる。
C:\Documents and Settings\dara-j>pgrep notepad
9564
6456
8360

C:\Documents and Settings\dara-j>
うん、3つ表示されますな。

じゃ、今度はメモ帳だけに限定。

C:\Documents and Settings\dara-j>pgrep "notepad.exe"
9564
6456

C:\Documents and Settings\dara-j>
うん、ちゃんとnotepad++(PID:8360)が除外されてますな。あ、パターンをクォートするときはダブルクォートにしてください。シングルクォートだとキチンとパターン(バッチ中の「%1」)に渡せないので。

最後にpkillの確認。メモ帳だけ全殺し。

C:\Documents and Settings\dara-j>pkill "notepad.exe"

C:\Documents and Settings\dara-j>pgrep "notepad.exe"

C:\Documents and Settings\dara-j>pgrep notepad
8360

C:\Documents and Settings\dara-j>
はい、notepad++だけは生き残ってます。当然画面上でもメモ帳のウィンドウがばっさり切られたと思います。ちなみに「pkill notepad」にするとnotepad++も殺されます。

関連記事