vimperatorでStumbleUpon!

今まで見た事がないようなサイトがちょっと見たくなったので、StumbleUponの拡張を入れた。
StumbleUponてのは、サイトでユーザー登録して拡張を入れ、Stumbleボタンってのを押すと、あらかじめ設定しといた自分の興味あるカテゴリのWebページをランダムに表示してくれる。んでそのページを"I like it"か"Not for me"で評価していく。そんなWebサービス。

認識が間違ってるかもしれないので、突っ込みお願いします。
ともかく、はてブとかでは見つけられなかったWebページが見れてとても面白いです。


さて、そのStumbleUponの拡張、vimperatorと一緒に使うにはいくつか不便な所があった。


まず一つ目。ステータスバーの文字がちっちゃくなっちゃう。
フォントも変わっちゃって、コマンドラインがやたら使いづらくなっちゃいます。
そこで僕は、ここのスタイルシートを使って、スタイルを変更しました。
"Vimperatorのスタイルを変更する - YKMbPP"
新しくpluginを入れるのがめんどかったので、もともと入ってた拡張、Stylishにコピペした。
これでステータスバーとコマンドラインの見辛さは解決。


二つ目。キーボードショートカットが使えない。
StumbleUponの拡張でキーボードショートカットが設定できるんだけど、その設定のキーはvimperatorをPATH THROUGHにしないと使えない。
それはすごいめんどかったので、プラグインないかなーって検索したら見つけた。
"[Vimperator] [script] StumbleUpon plugin"
ここのattachment.jsってのをvimperatorのpluginファイルに入れれば:stumbleとかのコマンドとそれを実行させるキーボードショートカットが使えるようになりました。ちなみに僕のvimperatorのバージョンは1.2です。


これでvimperatorを使いながら、便利にStumbleUponが使えるようになった。
ただ、それでも解決しない問題がある。
それは、日本語のサイトを評価するとタイトルが文字化けしちゃうって事。今のところ特に支障はないんですが、ちょっと気持ち悪いんだよね。
でも面白いので、みんなも使ってみてください!

行って来ましたよ!

鉄道博物館に!
Suicaで遊ぼう鉄道博物館'08秋


イベント最初の日だから混んでるかと思ったけど、すいてた。団体のお客さんがいなかったせいかな?
すいてたおかげでタッチラリーをスイスイやって、抽選をしたら…


…1等が当たった。びっくり。

当たったペンギントラベルセットは南極に行った時に使う事にします。


年間パスはまだ切れないので、イベント中にもう一回行ってもいいかなとか思っている。

ポケモンのプレイ時間が24時間を超えたので感想を。

ギンガ団とかとよく分からない理由で絡ませられる、やらされてる感が高いストーリーとかの感想はしません。


でもUIデザインにはいろいろ言いたい事がある。
だってポケモンって4作も出てるわけじゃん。
それなのに、未だにやってて萎える操作性とかUIデザインってどうかと思う。


ボタンを押しても戦闘アニメが飛ばせないとかさ。
最初に見る戦闘アニメは見たいけど、何回も見てる戦闘アニメなんて飛ばしたい。


戦闘中に ポケモン>わざをみる を選択しないとわざの詳細が分かんないとか。
わざをみる で詳細が見えるんだから、戦闘画面で直にわざの詳細見れたっていいじゃんか。
なんでいちいちいらん手間を増やすの、ゲームの難易度と関係ないところに。


あとポケモンセンターのパソコン。
ポケモンをあずける・ポケモンをうけとる って何。なんで単方向のメニュー用意するの。
ポケモンをせいりする、っていう双方向にやりとりできるメニューがあるんだからみんなそっち使うよ。
そのせいで十字ボタンを二回も押さないといけないって何かの拷問ですか。


じてんしゃ。
なんでボタン数が少ないのに、移動を早くするボタンを二つも用意するんですか。
冷静に考えると明らかにおかしい。ポケッチのアプリとして、ひつようなもの をすぐに呼び出せるアプリがあると便利だったのに。


どうぐ を持てる数に制限がないってことは、整理がしづらいって事にもなる。
モンハンみたいに、道具の自動整頓機能があると分かりやすくなると思うんだけどなー。



ゲームの難易度とか雰囲気とは関係ないところで、操作が増えるUIデザインって最悪だと思います。
ポケモンセンターの回復は何回やってもタダなんだから、話しかけたらすぐ回復してくれるぐらいの方が遊びやすい。
「こんばんは、ポケモンをかいふくさせますね。ティーティーティーロティーン! おまたせしました」とかなら雰囲気もテンポもいいと思うんだけどなー。



ゲーム内容はポケモンの面白さそのままなので、クリア後もそれなりに遊ぶでしょうけど、努力値とか考えて遊ぶのはたぶん無理です。


は!もしかして、今挙げたような操作しづらさをあえて残す事で、それに我慢できるマゾなプレイヤーだけが上級者になれるとかそういうゲーム性なのかな、ポケモンて。そう考えると操作性の悪さも仕方のない事に思えますね。

オトメディウスまたやった。

鉄道博物館に行った帰り、大宮でやって来た。


鉄道博物館で、10月8日から14日までsuicaのペンギンのグッズが買えたりもらえたりするイベントがあるので、また行く。
これ。
Suicaで遊ぼう鉄道博物館'08秋


スーパーレールカーゴのストラップ出ないかなー。

忘れないように。

9月15日、マジアカ5とオトメディウスを始めた。
こういう風にメモっとかないと、データ保存期間6ヶ月を超えてしまうので。

マジアカ3も4も、どっちも忘れててデータ消えて涙目になった。

前の記事の補足。

バージョンを明記してほしい、とブコメにあったので言っておくと、Firefox3です。
Tab mix plusは、正式版はFirefox3に対応してないですが開発版の0.3.7pre.080728が対応してるのでそっちを使ってます。今のところ、自分のところでは問題は起きてないですねー。
ここでダウンロードできますね。
Index of /dev-builds


Easy DragToGoは何回も言いますがすげー便利です。中クリックが使えないノートPCを使ってるからかもしれませんが。
中クリックで「新しいタブで開く」が出来ない、かといって新しいタブを開く時にキーボードを押しながらクリックするっていうのもなんか違和感があるんですよね。
この拡張入れとけば、設定次第ですが、リンクを上にドラッグするだけで新しいタブで開けるし、下にドラッグするとリンクを保存できるし。

僕は、リンクと画像を、下にドラッグすると保存するように設定してます。共通にしとくと覚えやすくて使いやすいです。


それと、vimperatorの使い方で気に入ってるのが、Firefoxのデフォルトのブックマーク機能にキーワードを付けてそれを:tabopenとか:openで簡単に読み込む方法。
Firefoxのブックマークの管理のウィンドウで「詳細を表示」をクリックし、キーワード:って項目に文字を入れときます。

こうしておくと:tabopenの後にその文字を入力するだけで読み込めます。ブックマークレットにもキーワードは設定できるのでブックマークレットも簡単に動きます。
…難点は、あんまり多くを登録しとくのはけっこうめんどいってとこですかね。Livedoorreaderとかふぁぼったーの自分のページとか、いつもよく見る何ページかに設定しておいてます。


こんなところで。

なんとなく、Firefoxの環境をまとめてみたくなったのでまとめてみた。

(2010.01.28追記)古い記事なのでもっといいアドオンとかがいっぱいある気がします。

夏休みで暇だし!ごめん嘘、現実逃避!!

入れてるアドオン29種類

基本的なアドオン


  • Adblock Plus
    いらない広告を表示しないためのアドオン。

  • NoScript
    スクリプトを禁止したりできる。

  • Tab Mix Plus
    タブ周りを快適にする。

お気に入りなアドオン


  • Easy DragToGo
    リンクや画像をドラッグすると、ドラッグした方向によって保存したり、新しいタブに開いたりできるアドオン。
    中クリックが使えないノートPCとかには必須のアドオンだと思う。Drag de Goってちょっと高機能なのもあるけどFirefox3では動かないっぽい…?

  • Vimperator
    いろんなスクリプトを動かせるキーコンフィグいじりアドオン。
    Vim本家のキーとか分からないので、自己流にキーコンフィグいじったりスクリプト入れたりしてる。

  • Link Alert
    リンク先にカーソルを合わせるとそれぞれのファイル形式によりアイコンが表示されるアドオン。
    .jsとか最後についてるとURIであってもjsのアイコンが表示されたりするが、便利。PDFトラップも回避しやすい。

  • RefControl
    サイトに送るリファラを偽装できるアドオン。
    LDR読む際に画像が表示できたりしてとても重宝する。

  • Delicious Bookmarks
    SBMサービスの「del.icio.us」のアドオン。
    とても出来が良くてRSSフィードをツールバーに表示できたりする。

スクリプト系

入れてるスクリプトは以下にまとめた。

開発系アドオン

表示改良するアドオン

ウェブサービスとの組み合わせで効果を発揮するアドオン


  • SBMカウンタ
    SBM各種のブックマーク数を確認できる。コメントも見れる。

  • LDR Counter
    LivedoorReaderでの購読者数を確認できる。

  • Tombloo
    Tumblrにポストするとき必須のアドオン。他のウェブサービスにもいろいろ対応してる。

  • SearchStatus
    Googleページランクを確認できる。…アドオンだが、これを入れとくとGoogleのウェブ履歴に見たページを全部保存しておける。
    多少怖いところもあるけど、まあ便利。

ブラウザいじいじ

エンタメ的な物

ダウンロード補助


  • BatchDownload
    画像保存用。バッチ処理が出来る。

  • DownThemAll!
    そのページ内のリンク全てとかをダウンロードする時とかに使ってる。

入れてるスクリプト

基本的なグリモン


MinibufferとAutoPagerizeLDRizeの組み合わせ最強!!

LivedoorReader用グリモン

Tumblr用グリモン

はてなブックマーク用グリモン

ニコニコ動画用グリモン

Google用グリモン

Twitter関連グリモン

その他のサイト用グリモン

いろんなサイトで使えるグリモン

Userchrome.jsのスクリプト

Userchrome.jsのスクリプトの使い方はこの辺で。

Firefoxを鍛え直せ! フォクすけブートキャンプ:第4日目:クラフトマンシップを持て——userChrome.js - ITmedia エンタープライズ


Stylishのユーザースタイルシート


そして、上のURIに書き換えるやつを流用してLDR上のクリップブラウザにもURIを表示させるようにした自作スタイルシートがこれ。

/*Name: LDRクリップブラウザにURIを表示
URI:http://d.hatena.ne.jp/jumitaka
 */
@-moz-document domain("reader.livedoor.com") {
ul#ldcbrowser_items a::after{
    visibility: visible ;
    content: attr(href) ;
}
span.clip-count{
	visibility: hidden !important; 
}
span.clip-count a::after {
	visibility: hidden !important;
}

こんな感じ。
ニコ動は全部一発クリップで放り込んでるのでひどいことになってます!

と、ここまでまとめて気づいた。

Vimperatorの環境ファイルの事をすっかり忘れていた…
とりあえず、コピペで成り立ってる感じだけど貼っとく。
その前に入れてるスクリプトは…


  • copy.js

  • direct_bookmark.js

  • feedSomeKeys.js

  • ldrize_cooperation.js

  • matanico.js

  • nicontroller.js

  • sbmcommentsviewer.js

  • tombloo.js

  • twitter.js

このへん。

" 0.5.3 (created: 2007/12/21 19:26:07)
set guioptions=T
" vim: set ft=vimperator:
" ニコ動
" :autocmd PageLoad .* :js modes.passAllKeys = /www\.nicovideo\.jp\/watch/.test(buffer.URL)
" title
set titlestring=Firefox

set wildoptions=auto
set complete=sl

" 開いているページがひとつだけならタブを非表示にする
set showtabline=1

"ビープ音を鳴らさない
set visualbell

" bhg
set complete=sl
set ds=ggle

" ]]/[[ にヒットする文字列追加
set nextpattern+=次(の)?ページ,→\b,下一頁,Следующая,다음,次へ
set previouspattern+=prev, 前(の)?ページ,\b前.*,\b←,前へ

" 選択文字列ののコピーを <C-c> に割り当て
map <C-c> :echo Yank!<CR>Y

" j/k でのスクロール幅を1行から3行に変更
map j 3<C-e>
map k 3<C-y>

" Backspace に戻るを割り当て
map <BS> <A-Left>
map <S-BS> <A-Right>

" h/l に戻るや進むを割り当て
map H <A-Left>
map L <A-Right>

"  ← → でタブ移動
map <Left>  gT
map <Right> gt

" Shift + ← → で現在のタブの位置変更
map <S-Right> :tabmove! +1<CR>
map <S-Left>  :tabmove! -1<CR>

map l gt
map h gT

map x :q<CR>

map m o
map M O

map <M-t> :twitter<space>
map <C-c> :copy<CR>
map <M-;> :m<space>

map ,ni :nicoinfo<CR>
map ,np :nicopause<CR>
map ,nm :nicomute<CR>
map ,nv :nicommentvisible<CR>
map ,nz :nicosize
map ,ns :nicoseek
map ,mn :matanico<CR>


" ***ldrize_cooperation.js***
let g:ldrc_captureMappings = "['j','k','p','o','?']"
let g:ldrc_intelligence_bind = "true"
let g:ldrc_skip = "0.15"
"map ,l :toggleldrc<CR>

map a :viewSBMComments<CR>
let g:def_sbm_format = "id,timestamp,tagsAndComment"

map b :sbm<space>
let g:direct_sbm_use_services_by_tag = "h" 
let g:direct_sbm_use_services_by_post = "h"

" ***copy.js***
javascript <<EOM
liberator.globalVariables.copy_templates = [
{ label: 'titleAndURL',    value: '%TITLE% %URL%' },
{ label: 'titleLfURL',     value: '%TITLE%\n%URL%', map: '<C-C>' },
{ label: 'title',          value: '%TITLE%' },
{ label: 'hatena',         value: '[%URL%:title=%TITLE%]' },
{ label: 'hatenacite',     value: '>%URL%:title=%TITLE%>\n%SEL%\n<<' },
{ label: 'markdown',       value: '[%SEL%](%URL% "%TITLE%")' },
{ label: 'htmlblockquote', value: '<blockquote cite="%URL%" title="%TITLE%">%HTMLSEL%</blockquote>' }
];
EOM

" ***feedSomeKeys.js***
autocmd LocationChange .* :fmapc

" Tumblr (要ReblogCommand)
autocmd LocationChange http://.*\.tumblr\.com/ :fmap i tj
autocmd LocationChange http://.*\.tumblr\.com/ :fmap e tj

" favotter (要Twit Fav command Minibuffer)
autocmd LocationChange http://favotter\.matope\.com/ :fmap f F

" Gmail
js <<EOF
autocommands.add('LocationChange',/mail\.google\.com\/(mail|a)\//,[
  'js plugins.feedKey.setup(',
  '"c / y j k n p o u e x s r a # [ ] z ? gi gs gt gd ga gc".split(/ +/).map(function(i) [i, "4" + i])', 
  ');'
].join(''));
EOF

" livedoor Reader/Fastladder/OpenFL
js <<EOF
autocommands.add('LocationChange',/reader\.livedoor\.com\/reader\//,
  'js plugins.feedKey.setup("j k s a p o v c e <Space> <S-Space> z Z < > q w i f u n y B N T <BS> <Del>".split(/ +/));');
EOF
js <<EOF
autocommands.add('LocationChange',/(fastladder\.com|0\.0\.0\.0\:3000)\/reader\//,
  'js plugins.feedKey.setup("j k s a p v c e <Space> <S-Space> z Z < > q w ".split(/ +/));');
EOF
autocmd LocationChange http://(reader\.livedoor\.com|fastladder\.com|0\.0\.0\.0\:3000)/reader/ :fmap v vj
autocmd LocationChange (?!http://(reader\.livedoor\.com|fastladder\.com|0\.0\.0\.0\:3000)/reader/) :set! browser.tabs.loadDivertedInBackground=false
autocmd LocationChange http://(reader\.livedoor\.com|fastladder\.com|0\.0\.0\.0\:3000)/reader/ :set! browser.tabs.loadDivertedInBackground=true
autocmd LocationChange http://(reader\.livedoor\.com|fastladder\.com|0\.0\.0\.0\:3000)/reader/ :fmap f g
autocmd LocationChange http://(reader\.livedoor\.com|fastladder\.com|0\.0\.0\.0\:3000)/reader/ :fmap T t

" Reblog用 (要tombloo.xpi)
autocmd LocationChange http://fastladder\.com/reader/ :fmap i T
autocmd LocationChange http://fastladder\.com/reader/ :fmap e T

" ======================================================================
" ステータスバーにfeedボタンを表示
" http://d.hatena.ne.jp/teramako/20071205/p1
js <<EOM
(function(){
 var feedPanel = document.createElement('statusbarpanel');
 var feedButton = document.getElementById('feed-button');
 feedPanel.setAttribute('id','feed-panel-clone');
 feedPanel.appendChild(feedButton.cloneNode(true));
 feedButton.parentNode.removeChild(feedButton);
 document.getElementById('status-bar').insertBefore(feedPanel,document.getElementById('security-button'));
})();
EOM

" wildoption=auto でウザいmap対策
" http://unsigned.g.hatena.ne.jp/Trapezoid/20080620/1213961754
js <<EOM
[
    ['<S-Right>',':tabmove! -1'],
    ['<S-Left>',':tabmove! +1'],
    ['a',':viewSBMComments'],
	['b',':sbm'],
].forEach(function([key,command]){
    liberator.mappings.addUserMap([liberator.modes.NORMAL], [key],
        "User defined mapping",
        function () { liberator.execute(command); },
        {
            rhs: key,
            noremap: true
        });
});
EOM

いじょーです。