ぼちぼち散歩

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--/-- --:-- | スポンサー広告 | トラックバック(-) | コメント(-)

ページの先頭へ

MacでWindows版IEを動かす

ies4osxを試す(2) - soundscape outを参考にさせて頂いて,ies4osxをインストールしてみた.

自分はLeopardなので,ies4osxのページを参考にDarwineの0.9.49をインストール.次に落としてきたInstall Ies4osxをダブルクリックして,IE6とIE7 betaを選択し日本語でインストールしてみた.先ほどのsoundscape outさんのページを参考に,IE6及びIE7 betaのパッケージを開いた中の/Contents/Resources/ie6/drive_c/windows/fontsにMS系フォントを突っ込んで完了.MS系フォントはMac版MS Officeを買わなくても体験版を落としてきてインストールしてからアンインストールすれば~/Library/FontsにMS系フォントが残るんだったと思う.多分.そして,ライセンス的にもフォントだけならそのまま使ってもよかったはず.多分.ちなみに,自分はMac版のMS Office X持ってます.

実際に使ってみると,X11なので日本語入力できないしキーボードはUS配列として認識されるしで,ちょっと使いにくいもののページのレンダリング自体は問題なく行える模様.Acid 2もちゃんと(?)めちゃくちゃになった状態で表示された.あと,コピペするにもMacのCommand+C(or V)とかじゃなくてWindowsのようにControl+C(or V)とかにしないとだめ.でも,クリップボードの中身はちゃんとやりとりしてくれるみたい.どうせこんなブラウザ常用するはずもなく,表示チェックができれば十分なので,ies4osxは必要十分な感じだと思った.

日本語入力できない問題は,たぶんkinputとかのX11で使えるIMをインストールすればいいんだろけど,面倒くさいからやってない.キーボード配列もあれだけど,コピペができるのでとりあえず困らなそう.

スポンサーサイト

2007/11/26 01:09 | Mac | トラックバック(0) | コメント(0)

ページの先頭へ

QuickLookでSWFファイルを見れないこともない

SWFファイルそのものはQuickLookできないけど,SWFファイルを読み込んでるHTMLファイルをQuickLookしたらちゃんとSWFが再生された.ムービーとか他のファイルも見れたりするのかなぁ.気が向いたらやってみよう.

2007/11/23 20:23 | Mac | トラックバック(0) | コメント(0)

ページの先頭へ

livedoor クリップのUserCSSを更新

livedoor クリップがバージョンあっぷして少し見た目が変わったので,それに合わせてというか,自分の好きなように変えるCSSを作り直した.サイドバーの幅を広げて,見た目を調整して,適当にいらない部分を削る感じ.

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

@-moz-document domain("clip.livedoor.com") {
/* コンテンツの左マージンを広げる */
#content {
    margin-right: 300px !important;
}

/* サイドバーを広げる */
#right {
    width: 290px !important;
}

/* サイドバーの背景画像削除 */
.side-normal-box,
.side-normal-box div,
.side-normal-box dl,
.side-normal-box dt,
.side-normal-box dd {
    background: none !important;
}

/* 背景色とボーダーを指定し直す */
.side-normal-box {
    background: #fafaff !important;
    border-left:   1px solid #aaf !important;
    border-right: 1px solid #aaf !important;
}
.side-normal-box dt {
    border-bottom: 1px solid #aaf !important;
}

/* タグで探すのinputの幅広げる */
#tagsearch {
    width: 200px !important;
}

/* タグをjustify */
#htmltagcloud {
    text-align: justify !important;
}

/* タグにマウスオーバーをわかりやすくする */
#htmltagcloud a:hover {
    text-decoration: underline !important;
    background: #eef !important;
}

/* タグクラウドの色も変える */
span.tagcloud0 a {color: #88f !important;}
span.tagcloud1 a {color: #66f !important;}
span.tagcloud2 a {color: #44f !important;}
span.tagcloud3 a {color: #22f !important;}
span.tagcloud4 a {color: #00f !important;}

/* 広告消す */
#header,
#sideadbnrmember,
#sideadbnr
{
    display: none !important;
}
}

2007/11/22 16:32 | CSS | トラックバック(0) | コメント(0)

ページの先頭へ

おれの.vimrc

.vimrcの解説のようなものを書こうと思ったけどめんどくさいので実際のものを見た方が早い気がしたので,現段階での.vimrcと.gvimrcを晒してみる..gvimrcはGUI版のVim(GVim)のみ読み込まれる設定ファイルなので,GUI固有の設定はそっちに書いとくとよさげ.

.vimrc

" ==================== 基本の設定 ==================== "
" 全般設定
set nocompatible            " 必ず最初に書く
set viminfo='20,<50,s10,h,! " YankRing用に!を追加
set shellslash              " Windowsでディレクトリパスの区切り文字に / を使えるようにする
set lazyredraw              " マクロなどを実行中は描画を中断
colorscheme desert          " カラースキーム

" タブ周り
" tabstopはTab文字を画面上で何文字分に展開するか
" shiftwidthはcindentやautoindent時に挿入されるインデントの幅
" softtabstopはTabキー押し下げ時の挿入される空白の量,0の場合はtabstopと同じ,BSにも影響する
set tabstop=4 shiftwidth=4 softtabstop=0
set expandtab              " タブを空白文字に展開
set autoindent smartindent " 自動インデント,スマートインデント

" 入力補助
set backspace=indent,eol,start " バックスペースでなんでも消せるように
set formatoptions+=m           " 整形オプション,マルチバイト系を追加

" コマンド補完
set wildmenu           " コマンド補完を強化
set wildmode=list:full " リスト表示,最長マッチ

" 検索関連
set wrapscan   " 最後まで検索したら先頭へ戻る
set ignorecase " 大文字小文字無視
set smartcase  " 大文字ではじめたら大文字小文字無視しない
set incsearch  " インクリメンタルサーチ
set hlsearch   " 検索文字をハイライト

" ファイル関連
set nobackup   " バックアップ取らない
set autoread   " 他で書き換えられたら自動で読み直す
set noswapfile " スワップファイル作らない
set hidden     " 編集中でも他のファイルを開けるようにする

" ヘルプファイル
if has('mac')
    helptags ~/.vim/doc/
endif
if has('win32')
    helptags ~/vimfiles/doc/
endif

"表示関連
set showmatch         " 括弧の対応をハイライト
set showcmd           " 入力中のコマンドを表示
set number            " 行番号表示
set wrap              " 画面幅で折り返す
set list              " 不可視文字表示
set listchars=tab:>  " 不可視文字の表示方法
set notitle           " タイトル書き換えない
set scrolloff=5       " 行送り

" ステータスライン関連
set laststatus=2
set statusline=%<%F %r%h%w%y%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%4v(ASCII=%03.3b,HEX=%02.2B) %l/%L(%P)%m

" エンコーディング関連
set ffs=unix,dos,mac " 改行文字

" 文字コードの自動認識
" 適当な文字コード判別
set termencoding=utf-8
set encoding=utf-8
set fileencodings=iso-2022-jp,utf-8,cp932,euc-jp

" 厳密な文字コード判別
" http://www.kawaz.jp/pukiwiki/?vim#content_1_7
" http://d.hatena.ne.jp/hazy-moon/20061229/1167407073
" if &encoding !=# 'utf-8'
    " set encoding=japan
    " set fileencoding=japan
" endif
" if has('iconv')
    " let s:enc_euc = 'euc-jp'
    " let s:enc_jis = 'iso-2022-jp'
    " iconvがeucJP-msに対応しているかをチェック
    " if iconv("?x87?x64?x87?x6a", 'cp932', 'eucjp-ms') ==# "?xad?xc5?xad?xcb"
        " let s:enc_euc = 'eucjp-ms'
        " let s:enc_jis = 'iso-2022-jp-3'
    " iconvがJISX0213に対応しているかをチェック
    " elseif iconv("?x87?x64?x87?x6a", 'cp932', 'euc-jisx0213') ==# "?xad?xc5?xad?xcb"
        " let s:enc_euc = 'euc-jisx0213'
        " let s:enc_jis = 'iso-2022-jp-3'
    " endif
    " fileencodingsを構築
    " if &encoding ==# 'utf-8'
        " let s:fileencodings_default = &fileencodings
        " let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932'
        " let &fileencodings = &fileencodings .','. s:fileencodings_default
        " unlet s:fileencodings_default
    " else
        " let &fileencodings = &fileencodings .','. s:enc_jis
        " set fileencodings+=utf-8,ucs-2le,ucs-2
        " if &encoding =~# '^?(euc-jp?|euc-jisx0213?|eucjp-ms?)$'
            " set fileencodings+=cp932
            " set fileencodings-=euc-jp
            " set fileencodings-=euc-jisx0213
            " set fileencodings-=eucjp-ms
            " let &encoding = s:enc_euc
            " let &fileencoding = s:enc_euc
        " else
            " let &fileencodings = &fileencodings .','. s:enc_euc
        " endif
    " endif
    " 定数を処分
    " unlet s:enc_euc
    " unlet s:enc_jis
" endif

" UTF-8の□や○でカーソル位置がずれないようにする
" Terminal.appはどっちにしてもダメ,PrivatePortsのiTermでやる
set ambiwidth=double

" ファイルタイプ関連
" 使用できる色は
" :edit $VIMRUNTIME/syntax/colortest.vim
" :source %
" で、設定名と現在の色は
" :highlight

syntax on " シンタックスカラーリングオン

" なぜか動かない
" highlight ZenkakuSpace ctermbg=6 guibg=white
" match ZenkakuSpace /s+$| /

set complete+=k    " 補完に辞書ファイル追加
filetype indent on " ファイルタイプによるインデントを行う
filetype plugin on " ファイルタイプごとのプラグインを使う

" Omni補完関連
" $VIMRUNTIME/autoload/htmlcomplete.vimの645行目をコメントアウントしておくとhtmlの補完が小文字になる

set completeopt=menu,preview,menuone " 補完表示設定

" TabでOmni補完及びポップアップメニューの選択
function InsertTabWrapper(is_shift)
    if pumvisible()
        return a:is_shift ? "<C-p>" : "<C-n>"
    endif
    let col = col('.') - 1
    if !col || getline('.')[col - 1] !~ 'k|<|/' " htmlで補完できるように<,/でもOmni補完
        return "<tab>"
    elseif exists('&omnifunc') && &omnifunc == ''
        return a:is_shift ? "<C-p>" : "<C-n>"
    else
        return "<C-x><C-o>"
    endif
endfunction
inoremap <tab> <C-r>=InsertTabWrapper(0)<CR>
" Shift-Tabはうまくいかないようだ
" inoremap <S-tab> <C-r>=InsertTabWrapper(1)<CR>

" CRでOmni確定&改行
function InsertCrWrapper()
    return pumvisible() ? "<C-y><CR>" : "<CR>"
endfunction
inoremap <CR> <C-r>=InsertCrWrapper()<CR>

" ポップアップメニューの色変える
highlight Pmenu ctermbg=lightcyan ctermfg=black 
highlight PmenuSel ctermbg=blue ctermfg=black 
highlight PmenuSbar ctermbg=darkgray 
highlight PmenuThumb ctermbg=lightgray

" バイナリモード
" bviとかHexEditor.appの方が楽
" vim -b : edit binary using xxd-format!
" augroup BinaryXXD
  " autocmd!
  " autocmd BufReadPre *.bin,*.swf let &binary =1
  " autocmd BufReadPost * if &binary | silent %!xxd -g 1
  " autocmd BufReadPost * set ft=xxd | endif
  " autocmd BufWritePre * if &binary | %!xxd -r | endif
  " autocmd BufWritePost * if &binary | silent %!xxd -g 1
  " autocmd BufWritePost * set nomod | endif
" augroup END

" Migemo
if has('migemo')
    set migemo
    set migemodict=/opt/local/share/migemo/utf-8/migemo-dict
endif

" Kaoriya
if has('kaoriya')
    " imを無効にする
    set iminsert=0
    set imsearch=0
endif

" ==================== キーマップ ==================== "
" 表示行単位で移動
noremap j gj
noremap k gk
vnoremap j gj
vnoremap k gk

" ハイライト消す
nmap <silent> gh :nohlsearch<CR>

" コピペ
" Macの場合は普通にComamnd-C,Command-Vも使えたりする
if has('mac')
    map <silent> gy :call YankPB()<CR>
    function! YankPB()
        let tmp = tempname()
        call writefile(getline(a:firstline, a:lastline), tmp, 'b')
        silent exec ":!cat " . tmp . " | iconv -f utf-8 -t shift-jis | pbcopy"
    endfunction
endif
if has('win32')
    noremap gy "+y
    " ペーストがうまく動いてない
    noremap gp "+p
endif

" マウス操作を有効にする
" iTermのみ,Terminal.appでは無効
if has('mac')
    set mouse=a
    set ttymouse=xterm2
endif

" ==================== プラグインの設定 ==================== "

" Rails
autocmd FileType ruby,eruby,yaml set softtabstop=2 shiftwidth=2 tabstop=2
autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1
autocmd FileType ruby,eruby let g:rubycomplete_rails = 1
autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1
let g:rails_level = 4

" CakePHP
au BufNewFile,BufRead *.thtml setfiletype php
au BufNewFile,BufRead *.ctp setfiletype php

" .vimperatorrc
au BufNewFile,BufRead .vimperatorrc,_vimperatorrc setfiletype vimperator

" Lusty Explorer
" nmap <unique> <silent> <C-b> :BufferExplorer<CR>
" nmap <unique> <silent> <C-e> :FilesystemExplorer<CR>

" NERD_comments
let NERDSpaceDelims = 1
let NERDShutUp = 1

" NERD_tree
nmap <unique> <silent> <C-e> :NERDTreeToggle<CR>

" Fuzzy
nmap <unique> <silent> <C-b> :FuzzyFinderBuffer<CR>
nmap <unique> <silent> <C-f> :FuzzyFinderFile<CR>
nmap <unique> <silent> <Leader>m :FuzzyFinderMruFile<CR>
nmap <unique> <silent> <Leader>c :FuzzyFinderMruCmd<CR>
nmap <unique> <silent> <Leader>d :FuzzyFinderDir<CR>

" AutoComplete
" 330行目らへんを修正してある
let g:AutoComplPop_IgnoreCaseOption = 0
let g:AutoComplPop_CompleteoptPreview = 1

" Project
" let g:proj_flags = "imstg"
" let g:proj_window_width = 30
" nmap <silent> <Leader>p <Plug>ToggleProject

" surround
autocmd FileType php let b:surround_45 = "<?php 
 ?>"

" php-doc
autocmd FileType php inoremap <C-p> <ESC>:call PhpDocSingle()<CR>i
autocmd FileType php nnoremap <C-p> :call PhpDocSingle()<CR>
autocmd FileType php vnoremap <C-p> :call PhpDocRange()<CR>
let g:pdv_cfg_Type = "string"
let g:pdv_cfg_Package = ""
let g:pdv_cfg_Version = ""
let g:pdv_cfg_Author = "tsukkee <takayuki0510@gmail.com>"
let g:pdv_cfg_Copyright = ""
let g:pdv_cfg_License = ""

" Firefoxリロード
" 要MozRepl
function ReloadFirefox()
    if has('ruby')
        :ruby <<EOF
            require "net/telnet"

            telnet = Net::Telnet.new({
                "Host" => "localhost",
                "Port" => 4242
            })

            telnet.puts("content.location.reload(true)")
            telnet.close
EOF
    endif
endfunction
nmap <silent> <Leader>r :call ReloadFirefox()<CR>

" vimsh
nmap <silent> <Leader>s :so ~/.vim/vimsh/vimsh.vim<CR>

" visual studio
if has('win32')
    let g:visual_studio_python_exe = "C:/Python25/python.exe"
endif

.gvimrc

" ==================== フォント設定 ==================== "
" 普通のMac版GVim
if has('gui_mac')
    set guifont=Osaka-Mono:h14
"   set guifontwide=Osaka-Mono:h14
"   set guifont=Yutapon_coding_Regular:h14:cUTF-8
endif

" 実験版MacVim
if has('gui_macvim')
    set showtabline=2
endif

" Windows版GVim
if has('win32')
    set guifont=M+2VM+IPAG_circle:h10:cSHIFTJIS
"   set guifont=ゆたぽん(コーディング)Heavy:h11:cSHIFTJIS
endif

" ==================== 画面表示設定 ==================== "
set title       " タイトル表示
set linespace=4 " 行間
set columns=110 " 幅
set lines=30    " 高さ

if has('mac')
    set guioptions+=aeT
endif
set transparency=240

" ポップアップメニューの色変える
highlight Pmenu  guibg=#3333ff guifg=#000000
highlight PmenuSel guibg=#0000dd guifg=#000000
highlight PmenuSbar guibg=#333333
highlight PmenuThumb guibg=#aaaaaa

2007/11/21 03:15 | Vim | トラックバック(0) | コメント(1)

ページの先頭へ

Vimの設定をいじる

Vimはデフォルトのままだけじゃなくて,いろいろ設定いじることによってより高度な機能が使えたり,自分好みにできる.設定項目はやたら多いので全然把握しきれないというか,なんか調べるたびに新たな発見があって面白い.で,設定の方法は普通のGUIアプリケーションとは違って(普通のCUIアプリケーションと一緒で),自分のホームフォルダにテキストで設定を書くことによって設定を行う.Macの場合は自分のホームフォルダ(/Users/<ユーザ名>/)に.vimrcという名前の,Windowsの場合はGVim.exeがあるフォルダか自分のホームフォルダ(Documents and Settings<ユーザ名> だっけ?)に_vimrcという名前のテキストファイルを作る.どうせならVimでやるのがいいので,コマンドラインで

vim ~/.vimrc

とするか,Vimを起動した状態で,

:e ~/.vimrc

と入力してリターンで.vimrcを編集できる.保存とかどうすんだっけ?というときはvimtutorからやり直しで(^-^;).で,まずは一行目に

set nocompatible

と入力する.Vim(Vi Improved)はViというエディタのクローンというかパワーアップ版という感じで,デフォルトでは互換性を持つ状態なので,まずは互換性とか捨ててVimのパワフルな機能を使えるようにする.で,あとは好きな設定を書いていく.基本的にオンかオフかの2値の設定は,hogeに対してnohogeといった感じで「no」が付いたバージョンがある.ちなみに,「"」より後ろはコメント.例えば,

set expandtab   " タブをスペースで置き換える
set noexpandtab " タブはタブのまま

set showmatch   " ()や{}の対応関係をハイライトする
set noshowmatch " ()や{}の対応関係をハイライトしない

set number   " 行数表示
set nonumber " 行数非表示

ほとんど(全部?)のコマンドに略称があって,例えば

set nu   " set numberと一緒
set nonu " set nonumberと一緒

といった感じ.数値や文字列を指定するタイプの設定は,set fuga=xxxとかいった感じで設定する.例えば,

set laststatus=2 " ステータスラインを表示するかどうか 0は表示しない,1は2つ以上ウィンドウがあったら,2は常に表示
set scrolloff=5  " スクロール時に余分に表示する行数,画面の行数より大きくするとカーソルが常に画面中央にくるようになる

とかいったような感じ.どういうオプションがあるかは,Vimの全オプションあたりを参照したり,「vimrc」でググったりするといっぱい出てくる(例:オレの .vimrcvim7 用に少し .vimrc を書き直した - cooldaemonの備忘録.vimrc弄ってたらこんな時間に……。 - Initialized Completely)のでいろいろ調べて自分好みにしていくのが良いと思う.

設定はVimの再起動か,

:source ~/.vimrc

で反映される..vimrcは実はVimScriptという独自のスクリプト言語になっていて,そこに関数定義なんかを書いてると:sourceの場合は関数の再定義エラーが出たりするので工夫が必要だけど,それについてはまた今度書くかも知れない.また,.vimrcをググったりしてると知らない設定が出てくるので,調べたい場合は

:help コマンド名
または
:h コマンド名

で,意味を調べることができる(英語のみ,ただし適当にググるとヘルプの日本語訳があったりするので参考になる).ちなみにTabキーで補完が効くので適当に先頭何文字か入力してからTabでおっけー(設定によるかも知れない).その他,コマンドなんかもほとんど:helpコマンドで調べることができる.Vimはやたらと機能があるけど,こんな感じでちゃんとヘルプが用意されているのである程度慣れてこれば,新しく知ったコマンドや設定でもすぐにどういう動作のものなのか把握できるようになると思う.

気が向いたら,さらに詳しい設定やプラグインとかの話もしたいなぁ.あと,ブログのテンプレートも作り直したい.

2007/11/18 00:19 | Vim | トラックバック(0) | コメント(0)

ページの先頭へ

Vimの使い方を覚える

Vimは使い方を覚えないとそもそも文字の入力すらできない変態エディタ(いい意味で)なので,使い慣れるまでは大変なものの慣れるとやばい.というわけで,基本的な使い方を覚えるためのコマンドが用意されており,コマンドラインから使う場合は,

vimtutor

と入力するだけでおっけー.GVimから行いたいときは,GVimを起動して

:Tutorial

と入力してリターンでおっけー.するとチュートリアルがはじまるので指示に従って一通り最後までやると基本的な操作について学べるようになってる.一回で覚えるのは難しいから,何回もやったり普段のプログラミングをVimでやったりして少しずつ慣れていくのが良いと思う.自分も思ってる通りにカーソル動かせるようになるまでだいぶかかった(-.-;).で,ただ覚えるのもなんなのでGraphical vi-vim Cheat Sheet and Tutorialにあるチートシートなんかも使うのがおすすめ.このチートシートは結構使い慣れてからでも新しい発見があったりして何回もお世話になった.あとはやや発展的な内容として,Peace Pipe: 【便乗】はてな vim 勉強会勝手にリファクタリング [memo]とかも読んでおくと,お?Vimすごい!的な空気を味わえるような感じ.

2007/11/17 23:40 | Vim | トラックバック(0) | コメント(0)

ページの先頭へ

Vimのインストール

Windows

Windowsの場合はKaoriYa.netから日本語周りを強化したVimを落としてきて適当なとこに展開するだけでおっけー.以前は文字コード自動判別や変換を使うためには同じサイトで配布されているLibiconvが必要だったけど,Vimの最新版であるVim7.1については何も書いてないから,今はいらないのかな?コマンドプロンプトから起動するVimと,GUIがついてるGVimがあるけど,Windowsのコマンドプロンプトは貧弱過ぎて話にならないので,自分は基本的にはGVimのみ使ってる.

Mac

MacははじめからVimが入ってるけど,いくつか機能が無効なビルドな上に最新版でもないので,MacPortsを使って自分でビルドするのが良いと思う.PrivatePortfile/Vim - MacPortsWiki-JPで落とせるPrivatePortfileを使うことによって,Kaoriyaさんとこのパッチが当たる上に,CocoaなGVimが使えてとても幸せ.MacPortsについてはこのPrivatePortfileがあるWikiやBeginning OS Xが大変参考になる.自分でビルドするのが面倒くさい場合は,splhack: vim7.1.33 universal バイナリより辿ることで先ほどのPrivatePortfileの作者の方がビルドしたバイナリを落とすことができる.素晴らしい!

Mac版のGVimはGUIを強化したバージョンが絶賛開発中で,先ほどのPrivatePortfileの作者の方がまたもやPrivatePortfileをPrivatePortfile/MacVim - MacPortsWiki-JPにて配布してくれているので,気軽に試すことができる.まだ,動作がやや不安的はところもあるけど,着々と開発が進んでいるようで超期待!

2007/11/17 23:15 | Vim | トラックバック(0) | コメント(0)

ページの先頭へ

Firefoxをこう使ってます的な何か その8

Firefoxは拡張機能を入れてなんぼなところがあるものの,どれを入れたらいいのかわからなかったり,どこまで標準でできるのかわからなくて拡張機能探すのもなんかよくわからんっていうのがあると思う.自分もちゃんとわかってるかは怪しいものの,今わかっている範囲でいろいろ書いてみたので誰かの参考になれば良いなぁと思った.

Firefoxはまだ発展途上のソフトウェアで,年末か来年初頭に出そうなFirefox 3にも魅力的な機能がある.早くもFirefox 4の話も出ていて今からわくわくしながら待っている.

参考リンク

というわけで,このシリーズは終わり.気が向いたら加筆,修正ぐらいするかも知れないし,しないかも知れない.

2007/11/10 23:42 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

Firefoxをこう使ってます的な何か その7

Greasemonkey

任意のページのに任意のJavaScript(User JavaScriptとか言う)を当てて,ページの挙動を変えたり,機能を追加したりいろいろできる拡張機能.最近では,他のブラウザでもUser JavaScriptは使えるようになっていて,Operaは標準搭載,SafariならGreaseKitを使って,SleipnirならSeaHorse,IE7でもIE7Proでできるようになっているようだ.しかし,独自拡張があったり,そもそもFirefoxと他のブラウザではJavaScriptの挙動が違ったりで互換性のあるスクリプトはそんなに多くはないので,一番ユーザが多そうなGreasemonkeyを使うのが一番便利という感じ.また,IEではXPathが使えないのでスクリプト書くのが面倒くさそう.

他の人が書いたのを使わせてもらっているのを列挙しておく.

livedoorクリップに各種ソーシャルブックマークのコメントを埋め込むGreasemonkeyスクリプト(管理人日記) - むぅもぉ.jp
livedoor クリップから主要SBMのコメントが見れるようになる.
blog.8-p.info: del.icio.us の IME まわりをましに
日本人のdel.icio.usユーザみんなが困ってそうな問題を解決してくれる.
livedoor Clip Cross Post - labs.37to.net
ブックマークは基本的にこちらのスクリプトを借りて,del.icio.usとlivedoor クリップに同時に投げるようにしている.投稿するときのインタフェースはlivedoor クリップになるので,layered del.icio.us bookmarklet (swdyh)のアイディアを拝借して,livedoor クリップ用のを自作して使っている.使いたい人はこれを持っていってください.
そのへんにぺろっと貼ってあるgreasemonkeyスクリプトにインストールボタンを付けるgreasemonkeyスクリプト
はてダとかに貼ってあるGreasemonkeyスクリプトにインストールボタンをつける.
AutoPagerize – Userscripts.org
いろんなページでAutoPagerできるようになる.AutoPagerが何かわからなければこのスクリプトをインストールしたあと,Googleの検索結果のページに行ってみたらわかると思う.いろんなページで使えるように,ページの継ぎ足しに関する情報はWikiで管理されていて,誰もが追加,編集できるようになっている.自動でページをつなげる部分と人力でページ情報を編集する部分がうまく組み合わさっていると思う.主要なサイトはほとんど使えるので,ブラウジング効率がかなり上がり,一番のおすすめ.類似のスクリプトにsilog - script/LDRizeというのもある.こちらはいろんなページでlivedoor Readerっぽい操作ができるようになるらしい.
ldrのレートを++/--できるようにするgreasemonkeyスクリプト
自分は一応livedoor Readerはレートで管理してるつもりになってるけど,適当過ぎてあんまり意味がないので,このスクリプトでちょっとはましになることを期待している.

日常から使ってるのはだいたいこのぐらいだと思う.他にも一時的に試してみてたり,しばらく使ってたけどやめたものがあったりで,いろいろありすぎて紹介しきれないのでこのへんにしておく.次に,自分で書いて使ってるやつ.全然大したことないけどあると便利なので.ちなみに,XPath, $X function, NSResolver < 16 < March < 2006 < nulog, NULL::something : out of the headphoneの$X関数を使わせてもらっている.

mixi show alt
mixiのマイミクシィ最新アルバムとか動画とかミュージックとかが,画像のみでタイトルを出さないから何のこっちゃわからない,と思ったらalt属性にタイトルが入っていたのでそれを表示するスクリプト.$X関数のおかげで簡単にできた.一応Safari 3 + GreaseKitでも動く.
// ==UserScript==
// @name           mixi show alt
// @namespace      relaxedcolumn.blog8.fc2.com
// @description    show alt attribute
// @include        http://mixi.jp/*
// ==/UserScript==

(function() {
    var w = unsafeWindow || window;
    var d = w.document;

    $X('//tr[@class="itemList"]//a/img').forEach(function(item) {
        item.parentNode.appendChild(d.createElement('br'));
        item.parentNode.appendChild(d.createTextNode(item.getAttribute('alt')));
        item.style.fontSize = '10px';
    });

    $X('//tr[@class="itemList"]//td').forEach(function(item) {
        item.style.verticalAlign = 'top';
    });

    function $X(exp, context) {
        if (!context) context = document;
        var resolver = function (prefix) {
            var o = document.createNSResolver(context)(prefix);
            return o ? o : (document.contentType == "text/html") ? "" : "http://www.w3.org/1999/xhtml";
        }
        var exp = document.createExpression(exp, resolver);

        var result = exp.evaluate(context, XPathResult.ANY_TYPE, null);
        switch (result.resultType) {
            case XPathResult.STRING_TYPE : return result.stringValue;
            case XPathResult.NUMBER_TYPE : return result.numberValue;
            case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
            case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: {
                result = exp.evaluate(context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
                var ret = [];
                for (var i = 0, len = result.snapshotLength; i < len ; i++) {
                    ret.push(result.snapshotItem(i));
                }
                return ret;
            }
        }
        return null;
    }
})();
Alc modify link
スペースアルクの英和・和英辞書はいつもお世話になっているものの,なぜかリンクが全部JavaScriptで中クリックで新規タブとかができないので,強引にリンクを普通のaタグに置き換えるスクリプト.
// ==UserScript==
// @name           Alc modify link 
// @namespace      relaxedcolumn.blog8.fc2.com
// @description    modify javascript link to normal link
// @include        http://eow.alc.co.jp/*
// ==/UserScript==

(function() {
    var w = unsafeWindow || window;
    var d = w.document;

    var BASE_URL = 'http://eow.alc.co.jp';
    var ENCODING = d.f1.ie.value;
    var WORD     = d.f1.q.value;
    var DK       = d.f1.dk.value;
    var PAGE     = d.f1.pg.value;

    function modifyLinks() {
        var links = d.getElementsByTagName('a');

        for(var i = 0, len = links.length; i < len; ++i) {
            if(!links[i].href.match(/^javascript:/)) {
                continue;
            }

            if(links[i].href.match(/goWordLink("(.+)")/)) {
                links[i].href = BASE_URL + '/' + RegExp.$1 + '/' + ENCODING + '/?ref=wl';
                continue;
            }

            if(links[i].href.match(/goPage("(d+)")/)) {
                links[i].href = BASE_URL + '/' + WORD + '/' + ENCODING + '/?pg=' + RegExp.$1;
                continue;
            }

            if(links[i].href.match(/goWordLinkHistory/)) {
                links[i].href = BASE_URL + '/' + links[i].innerHTML + '/' + ENCODING + '/?ref=wh';
                continue;
            }

            if(links[i].href.match(/goGradable("(.+)")/)) {
                links[i].href = BASE_URL + '/' + RegExp.$1 + '/' + ENCODING + '/?ref=hk';
                continue;
            }

            if(links[i].href.match(/goFairWord("(.+)")/)) {
                links[i].href = BASE_URL + '/' + RegExp.$1 + '/' + ENCODING + '/?ref=sp';
                continue;
            }

            if(links[i].href.match(/goFullText("(.+)",s*"(.+)")/)) {
                links[i].href = BASE_URL + '/' + WORD + '/' + ENCODING + '/?ref=ex&exp=' + RegExp.$1 + '&dn=' + RegExp.$2 + '&dk=' + DK + '&pg=' + PAGE;
                continue;
            }

            if(links[i].href.match(/goBack/)) {
                links[i].href = BASE_URL + '/' + WORD + '/' + ENCODING + '/' + (PAGE == '' ? '' : ('?pg=' + PAGE));
                continue;
            }
        }
    }

    w.addEventListener('load', function() {
        modifyLinks();

        var org_show_link = w.show_link;
        w.show_link = function(flag) {
            org_show_link(flag);
            modifyLinks();
        };
    }, false);
})();
LDR open entire site with key
何でもかんでもlivedoor Readerで管理したいので,フィードを配信してないところは,My RSSを使ってフィード化して読んでいる.ところが,生成されるフィードはそんなに精度が良くないので,ほとんど更新があったかどうかしか情報量がなく,結局元サイトを見に行くことになる.元サイトを開くキーボードショートカットがなかったので,適当にそれっぽいURLを取得して開くのを作った.またもや$X関数のおかげで簡単に書けている.
// ==UserScript==
// @name           LDR open entire site with key
// @namespace      http://relaxedcolumn.blog8.fc2.com/
// @include        http://reader.livedoor.com/reader/*
// ==/UserScript==
//
(function() {
    var w = unsafeWindow;
    var d = w.document;
    var _onload = w.onload;

    var onload = function(){with(w){
        Keybind.add("V", function() {
            w.open($X('//h1//a')[0].href);
        });
    }};

    w.onload = function(){
        _onload();
        onload();
    }

    function $X(exp, context) {
        if (!context) context = document;
        var resolver = function (prefix) {
            var o = document.createNSResolver(context)(prefix);
            return o ? o : (document.contentType == "text/html") ? "" : "http://www.w3.org/1999/xhtml";
        }
        var exp = document.createExpression(exp, resolver);

        var result = exp.evaluate(context, XPathResult.ANY_TYPE, null);
        switch (result.resultType) {
            case XPathResult.STRING_TYPE : return result.stringValue;
            case XPathResult.NUMBER_TYPE : return result.numberValue;
            case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
            case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: {
                result = exp.evaluate(context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
                var ret = [];
                for (var i = 0, len = result.snapshotLength; i < len ; i++) {
                    ret.push(result.snapshotItem(i));
                }
                return ret;
            }
        }
        return null;
    }
})();

Greasemonkeyについては語り尽くせないというか,それだけで世界が広がりまくってるので把握しきれてないけど,もはやGreasemonkeyなしではウェブブラウジングできない体になってしまっている.次回に適当になんかまとめっぽいこと書いて終わる予定.

2007/11/10 21:04 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

Firefoxをこう使ってます的な何か その6

Stylish

userchrome.cssおよびusercontent.cssを管理したり,CSSの更新チェックができたり,Firefoxの再起動なしに適用できたりする拡張機能で,FirefoxのUIからウェブページまでCSSでカスタマイズできる.ある程度CSSが書ければ好きなようにできるし,userstyles.orgに投稿されているスタイルを適当にインストールして使うこともできる.userstyles.orgなどから使わせてもらっているのは以下のCSS.

Combine Stop/Reload buttons
ブラウザのストップボタンとリロードボタンは機能が時間的に排他的なので同時に表示する必要がないということで,どっちかしか表示しないようにする.Safariでは標準でこのようになっているので,たぶんそれの真似だと思う.
del.icio.us Plus
del.icio.usのような人気サイトはたくさんのCSSが投稿されていて,その中で気に入った一つ.ただし,タグクラウドは元の位置に元の大きさでいて欲しかったのでその部分だけコメントアウトして使っている.
Gmail - display keyboard shortcuts
contentプロパティをうまく使ってGmailのキーボードショートカットを表示してくれるCSS.最近のGmailの大幅な変更にも対応している.
Google Calendar - colorize Sat/Sun (start on Sun)
Google Calendarの土日に色をつけてくれる.
livedoor Clip CSS
自分でもlivedoor クリップのUserCSSを書いているので,記述がかぶってたりぶつかってたりするような気もするけど,気にせず使っている.
livedoor Reader
livedoor Readerの広告とかを消すCSS.ヘルプまで消されちゃうのでそのへんはコメントアウトして適当に使っている.
Remember The Milk - display keyboard shortcuts
GmailのやつのRemember The Milk版.そもそもRemember The Milkをちゃんと使ってないけど気にしない.

続きまして,自分で書いたやつを列挙しときます.ほとんど人様の分をパクっただけのやつもある上に,名前が変だったり,適当過ぎたりするけど大目に見てやってください.

Bookmark Toolbar - Bookmarklet Icon
ソースを失念してしまったけど,多分人様の分を書き換えたやつ.ブックマークバーにあるブックマークのうちBookmarkletなもののアイコンをスパナに変えます.ちなみに,人気の高いreinというテーマにも同様の機能があった気がする.
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
.bookmark-item[statustext^="javascript:"] {
    list-style-image: url("data:image/gif;base64,R0lGODlhEAAQAMQAAHR0dK2trdbW1pmZmby8vO/v74SEhKWlpczMzNzc3I2NjZmZmba2tnt7e8XFxeXl5ff39////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUABEALAAAAAAQABAAAAVlYCSOJKIYCqmKgkEox6oeh3EUxyCLQe0MBsOuMKAFFalVonEIAIOCFWIQCBgaBISM0KgaBgVVQSBgKBg1sCqBapwPXRm1xwAydjDgKYZvFBhBOjsCYwBAfDsRDYsAYYkRDw5ajyEAOw==") !important;
}
Google multicolumn
-moz-column-*系プロパティが真価を発揮するとき - Hatena::agendaのエントリを参考にGoogleの検索結果を二列にするCSS.
@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("www.google.co.jp"), domain("www.google.com") {
div#res > div {
    -moz-column-width: 25em;
    -moz-column-gap: 1em;
}

div#res table {
    width: 100%;
}
}
livedoor clip
以前書いたlivedoor clipのタグクラウドをちょっと変えるをもう少し変えたやつ.
@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("clip.livedoor.com") {
#content {margin-right: 300px !important;}
#right {width: 285px !important;}
#sidesearchbox {
    width: 285px !important;
}
#tagsearch {
    width: 200px !important;
    margin-left:20px !important;
}


#htmltagcloud {line-height: 1.2 !important;}
#htmltagcloud a:hover {
text-decoration: underline !important;
background: #ffa !important;
}
span.tagcloud0 a{color: #88f !important;}
span.tagcloud1 a{color: #66f !important;}
span.tagcloud2 a{color: #44f !important;}
span.tagcloud3 a{color: #22f !important;}
span.tagcloud4 a{color: #00f !important;}

#header,
#footer,
#sideadbnrmember,
#sideadbnr
{
    display: none !important;
}
}
mixi
mixiのデザイン変わってからアレな感じだったので適当にでっち上げたCSS.広告削って二列にします.あと,細かいずれを直したり枠線引いたりとかそんな感じです.
@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("mixi.jp") {
/* 広告削除 */
  iframe {
    display: none !important;
  }

  #adBanner,
  .adBanner {
    display: none !important;
  }

  div#login_main {
    display: none !important; 
  }

/* 幅減らしてセンタリング */
  div#login_all,
  div#headerArea,
  div#bodyArea,
  div#oldMain,
  div#footerArea {
    margin: 0 auto !important;
    width: 725px !important;
    position: static !important;
  }

/* フッター削除 */
  div#footerArea .footerNavigation01,
  div#footerArea .footerNavigation02 {
    display: none !important;
  }

/* 右カラム削除 */
  #bodySub,
  td[width="224"] {
    display: none !important;
  }
  
/* メニュー削減 */
  #globalNavigation li.home,
  #globalNavigation li.movie,
  #globalNavigation li.photo,
  #globalNavigation li.mikly,
  #localNavigation li.top,
  #localNavigation li.video,
  #localNavigation li.photo {
    display: none !important;
  }

/* 検索修正 */
  div.searchForm01 ul.searchCategory01 {
    width: 404px !important;
  }

  li.searchCommunity a {
    width: auto !important;
    padding: 0 2px !important;
  }

  li.searchEventDate a {
    width: 130px !important;
  }

/* mixiプレミアム削除 */
  #myProfile p.statusIcon {
    display: none !important;
  }

/* 最新情報修正 */
  #mymixiUpdate div.contents,
  #myUpdate div.contents,
  #intro div.contents {
    border: 1px solid #FF9900 !important;
    border-width: 0 1px 1px 1px !important;
  }

  dl.contentsList01 dd {
    width: 280px !important;
  }
  
  dl.contentsList01 dd dl dt {
    width: 8em !important;
  }

/* xxさんの最新情報修正 */
  dl.contentsList02 dd dl dt {
    width: 8em !important;
  }

  ul.actionIcon03 {
    display: none !important;
  }
  
  #newMyDiary div.contents dl.contentsList02 {
    background-image: none !important;
  }

/* マイミクシィからの紹介文修正 */
  #intro div.contents dt {
    width: 72px !important;
  }
}
transparent tooltip
くでんな日々や公開どう? ツールチップを透過させてみるをそのまま頂いたもの.
@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

tooltip {
  -moz-appearance: none !important;
  font: message-box !important;
  color: #ffffff !important;
  background-color: transparent !important;
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABmJLR0QA/wD/AP+gvaeTAAAAGElEQVR42mNkYGCoZyACMDEQCUYVUkchANsIAJN3G7QXAAAAAElFTkSuQmCC") !important; 
  border: 1px solid #000000 !important;
}

今回はStylishだけで終わってしまった.他のブラウザにもUserCSSの仕組みはあったりするけど,userstyle.orgのようなサイトからワンクリックでインストールできたり,再起動なしにCSSを適用できたり(できないときもあるけど),というのがStylishのいいところであり,StylishがあるからFirefoxを使っているという面もある.

2007/11/10 19:08 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

Firefoxをこう使ってます的な何か その5

Firebug

ウェブ開発するなら必ず入れておきたい拡張機能.かなり多機能で,JavaScriptのデバッグ,HTMLの構造やCSSの解析,ネットワークの通信状況の表示と便利な機能が詰まっている.その反面,livedoor Readerおよびlivedoor クリップのページでは動作がおかしくなったり,Gmailを重くしてしまうなので問題もある.幸いページごとに有効,無効を指定できるので,これらのページでは無効にしたり,しょっちゅう使わないなら無効にしておくのが良いのかも知れない.追記(2007/11/17 15:37):Firebugは真剣に一部ページで不具合があるので注意!ステータスバーのFirebugのアイコンを右クリックして,「Disable Firebug for xxx」か「Alloed Sites ...」を選択して,livedoor Reader,livedoor クリップ,Gmailあたりは無効にしておくと良いです.

Web Developer

主にHTMLやCSSを書いたり解析したりするときに便利な機能を提供する拡張機能.ツールバーにWeb Developerのボタンを置いておくとWeb Developerツールバーをトグルできるようになる.Firebugが素敵なので使う機会があんまりないけど,たまにW3C Validator呼んだり,画像やテーブルのアウトライン表示するのに使っている.でも,この程度ならBookmarkletでも十分代用可能なので,そのうち外すかも知れない.BookmarkletといえどもXRAYのような強力なものもあるし,拡張機能でなくても構わないものは入れない方がFirefoxがちょっとは軽くなっても良さそうである.

vimperator

これぞ変態拡張機能(褒め言葉)というべき拡張機能.Vimっぽい操作でFirefoxを操作できるようになる.jkhlで上下左右にスクロールしたり,ブックマークと履歴から補完してタブを開けたりとか,Hit-a-Hintスタイルのリンク選択できたりとか,とにかく何でもかんでもキーボードのみで操作できる.設定ファイルもVimっぽいく.vimperatorrcを置くことができる.設置方法は環境設定ファイル vimperatorrc の詳しい手順 - k0yの日記のエントリを参考してもらうにして,自分の.vimperatorrcを晒しておく.

" options
set activate=quickmark,paste
set complete=bshf
set guioptions=mTb
set hlsearch
set ignorecase
set incsearch
set popups=2
set preload
set showstatuslinks=2
set wildmode=list:full

" key mappings
" Windows環境のCtrl+cでコピーを殺すのを回避
map <C-c> Y 

" 多めにスクロールするようにする
map j 5<C-e>
map k 5<C-y>
map h 5<Left>
map l 5<Right>

echo '.vimperatorrc loaded'

思いっきりFirefoxのUIをいじるためテーマによったら表示がおかしくなるかも知れないし,他の拡張機能とコンフリクト起こすことも考えられる.けど,今のところ奇跡的に(?)自分の環境ではだいたいうまいこと動いている.ただ,FIREGESTURESのステータスバーへの表示が消されてしまう.

また,livedoor ReaderやGmailのようにウェブページ側でキーボードショートカットを設定している場合は全部vimperatorが吸い取ってしまう.Shift+iでvimperatorを一時的に無効にできて,吸い取る問題は回避できるもののそういうのがめんどくさい人には向かないかも知れない.また,Mac環境では(その他の環境は分からない)Flashへの文字入力(ニコニコ動画のコメント入力など)も吸い取ってしまうし,逆にFlashにフォーカスがあるとvimperatorがちゃんと動かなかったりと,不安定な部分もある.その他,不意に操作できなくなったりといろいろあるので,やっぱりチャレンジャー向けな気がする.

しかし,vimperator + SplitBrowser で :sp[lit] コマンド - hogehogevimperator + SplitBrowser のフォーカス移動 - hogehogeといった野心的なことをやっている人もいるし,vimperator自体の開発も活発に行われているようであるし,何より「こんなんFirefoxじゃないとできんやろ!」的な面白さがたまらないので今後に期待したい拡張機能である.

2007/11/10 18:00 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

Firefoxをこう使ってます的な何か その4

Ctrl-Tab

前回のタブ関連で書き忘れた.朝顔日記 - Ctrl-Tab を試してみたで知ったんやけど,手元のMac環境ではうまく動かないので期待しながら待つ方向で.最新版はFirefox 3 Onlyになってるので,Firefox 3になってからもう一回試してみる予定.

Adaptive Referer Remover

正規表現で,リファラを送らないサイトを指定できる拡張機能.まーなんだほげほげなサイトでもげもげするときに役に立ったり立たなかったり.

Growl Notifications

Mac専用で,ダウンロード終了をGrowlに通知できる拡張機能.Firefox 3では標準で取り込まれるっぽい.

SQLite Manager

名前そのままSQLiteデータベースのビューワ.FirefoxはSQLiteのAPIを持っているので開発者はたぶん便利なんだろう.livedoor Clip IncSearchの日本語検索通らない問題を調べるときに役に立った.

Zotero

Firefoxで文献管理できる拡張機能.ACMとかそういうサイトから適当にスクレイピングして取り込んだり,BibTeXで吐き出したりいろいろできるみたいだけど,あんまり活用してない.文献管理といえばCiteULikeもあったり,デスクトップアプリケーションではBibDeskがあったりするけど,もう一つどれも活用しきれていない.

MozLab

Telnet経由で外からFirefoxにJavaScriptを流し込めるMozReplと,MozUnitを合わせた拡張機能.MozUnitの方はよくわかってないけど,MozReplの方は結構面白いことができる.例えば,2006-10-05 - WDFを参考にしてVimの場合は.vimrcに

function ReloadFirefox()
    if has('ruby')
        :ruby <<EOF
            require "net/telnet"

            telnet = Net::Telnet.new({
                "Host" => "localhost",
                "Port" => 4242
            })

            telnet.puts("content.location.reload(true)")
            telnet.close
EOF
    endif
endfunction
nmap <silent> <Leader>r :call ReloadFirefox()<CR>

とか書いておくと,バックスラッシュ,rと押すことでVimからFirefoxをリロードできる.さらに,ポートフォワーディングも組み合わせるとMacのVimからとなりのWindowsのFirefoxをリロードできたりする.Firefoxを自動リロードして快適開発生活 - Ruby>DRb>MozLab>Firefox:TKMR.blog.showといった感じで,さらに高度なこともできるようだ.

タブ関連でがんばったのが今回はあっさり風味.まだまだ続く.

2007/11/10 17:12 | Firefox | トラックバック(0) | コメント(2)

ページの先頭へ

Firefoxをこう使ってます的な何か その3

今回はタブ関係の拡張機能でまとめてみようと思う.

about:configの設定

Firefoxはロケーションバーにabout:configと入れることで,GUIにない細かい設定も行うことができる.フィルタでインクリメンタルに項目を探せるので,適当に「tab」とか入れるとタブ関連の項目を探せます.タブ関係で自分が設定しているのは以下の項目.

browser.tabs.closeButtons 2
タブの閉じるボタンの表示方法に関する設定.2にしとくとボタンが表示されなくなる.タブを閉じるときは,マウスジェスチャかタブを中クリックかキーボードショートカットなので,ボタンは不要.
browser.tabs.loadBookmarksInBackground true
ブックマークを中クリックで新規タブに開いたときにフォーカスを移さない設定.ちなみに,ノートパソコンのタッチパッドなど中クリックがないときは,Macの場合はCommandキー(リンゴキー)+ クリックで代用できる.右クリックはControl + クリック.Windowsの場合はどうなんやろ?
browser.tabs.loadDivertedInBackground true
たぶん,JavaScriptのwindow.openなどで新規タブが開かれるときにフォーカスを移さない設定.livedoor Readerで記事を読むときには必須.livedoor Readerでは,sおよびjを連打して,面白そうな記事があればvで開くというのを繰り返してタブを垂れ流すという使い方をしてる.あとで紹介するツリー型タブと使うと快適.
browser.tabs.loadFolderAndReplace false
これをtrueにしておくとフォルダにまとめられたブックマークを一気に開くときに,既存のタブが上書きされてしまう.
browser.tabs.loadInBackground true
これはたぶん,設定の「タブ」→「リンクを新規タブで開いたとき、すぐにそのタブに切り替える」に対応してるけど念のため.これもフォーカスを移さない設定にしている.
dom.popup_maximum 9999
JavaScriptのwindow.openなどで新規タブを開くとき,何回まで許可するかという設定.たしかデフォルトは20ぐらいになってて,livedoor Readerから30とか記事を開こうとすると途中でできなくなってしまう.9999もタブを開くことは絶対ないけど,適当に大きな数を指定しておけば際限なくタブを開くことができる.

about:configに関しては,about:config と user.js による Firefox のカスタマイズ - えむもじらが詳しいので参考になる.また,About:config entries - MozillaZine Knowledge Base(和訳:about:config - Firefox - index)に,各項目の説明がある.さらに,FirefoxやThunderbirdのメモリ消費量を劇的に減らす方法 - GIGAZINEというのもあるが,自分はやっていない.

タブ関連の拡張機能では,Tab Mix Plusが有名だけど,about:configの設定や以前に書いたFirefoxが便利になる小技Firefoxが便利になる小技2にある小技の運用や他の拡張機能で,思い通りの動作になるので使っていない.

ツリー型タブ

タブを縦置きにして,かつ,新規タブを開く際には親子関係を認識してツリー型に配置,さらには,ドラッグ&ドロップで再配置まで可能な個人的には神のような拡張機能.特に,livedoor Reader(以下,ldr)との組み合わせで力を発揮する.ldrでvで新規タブを開くとldrを表示しているタブの子としてタブが追加されていき,さらにそのタブから参照されているリンクをタブで開くとldrから見ると孫の位置にタブが開かれる.というわけで,どのタブがどのタブから開かれたのかを視覚的に保存するため,効率的にブラウジングできる.調べものをする際にもGoogleの検索キーワードごとにタブを作りそれぞれからタブで開けばキーワードごとのツリーを作れるし,あとで並べ替えたりもできるので情報を整理しながら検索できる.

ただし,テーマによっては,縦置きしたときにタブの表示がおかしくなるので,困ることがあるかも知れない.これはLocationbar2も同様で,せっかくかっこいいテーマがあってもコンフリクトすることがある.ちなみに自分は,Kempeltonというテーマがお気に入り.

マルチプルタブハンドラ

複数のタブをまとめて操作できる拡張機能.特に便利なのが,「すべてのURIをコピー」で,設定で「ページのタイトルとURI」や「HTMLのリンク」にしておけば,まとめてタイトルとリンクをコピーできるので,人に複数ページを伝えるときにはかなり簡単にコピペできる.例えば,「PHPについて聞きたいんやけど?」と言われれば,livedoor Clip IncSearchで「PHP」で絞り込んだのち,適当によさそうなのをタブで開いていく.もちろんこのときツリー型タブでlivedoor Clip IncSearchのタブの子としてまとめられるので,他の作業中でもタブが混ざったりしない.そしてさらに内容を吟味して3?4個に絞り込んだらまとめてコピーして,メッセンジャーなりメールなりで投げるといった感じ.

ツリー型タブとマルチプルタブハンドラの作者は同じ方(piroさん,サイト:outsider reflex)で,かなりの数の拡張機能を作っていらっしゃる.どれもがFirefoxとブラウジングをよく理解し,かつ安定した実装となっていると思う.しかも,いくつかの機能はFirefox黎明期より存在したタブブラウザ拡張の機能としても実装されていたとかで,驚きである.つまり,世の中のほとんどの人がまたタブブラウザの「タ」も知らなかった頃から「タブをツリーにしたら良さそう」とか「タブはまとめて選択して操作できるべき」などと考え実装していたのである.Latest topics > 使う道具が人の考え方を決めるということと、自分が「自分を変えたくない」と思いこの場所に留まり続けているということ - outsider reflexというブログエントリでも,インタフェースに関する哲学が感じられるし,本当にすごい人だと思う.

テキストリンク

タブは関係ないけど,piroさんシリーズということでここで紹介しておく.これは,リンクになっていないURLっぽい文字列をダブルクリックで選択したり開いたりする拡張機能.ウェブ上では何故かリンクが貼っていなかったり,意図的に貼っていないURL文字列らしきものが多くあるので,これを入れてくと簡単に開けて便利.よくあるhを削ってttp://...となっているのも開けたと思う.

もひとつpiroさん関連で,Latest topics > 大量のタブを管理するための様々なアプローチ - outsider reflexのエントリにてタブ関係の拡張機能が分類,まとめられているので参考になると思う.

iswitchb-tabs

タブをたくさん開いていると,タブ間の移動も大変になってくる.マウスがあるときはいいけど,キーボードで何でも操作したい派なので,今度紹介する予定のVimperatorに加えて,この拡張機能も使っている.これは,F9でタブ一覧が開いて,そこからタブ名で絞り込みをかけてタブを選択できるというもの.Vimでもバッファをインクリメンタルに絞り込んで選択するfuzzyfinder.vimというプラグインがあるので同じようなのがないかと思って探したらあった.

ショートカットキーはデフォルトはF9キーだけど,ExposeとかぶるのでMacでは「システム環境設定」→「マウスとキーボード」→「キーボードショートカット」にFirefox.appを足して,「M-x iswitchb-tabs」にControl + b(^Bと表示される)を追加している.Firefox関係ないけど,Macではこんな感じでメニューの項目名に直接ショートカットキーを割り当てることができる.さらに脱線すると,Leopardからは,/System/Library/CoreServices/Finder.appに「パッケージの内容を表示」を割り当てられるようになっている.どうやら非表示でメニューに「パッケージの内容を表示」が追加されていて,ショートカットキーを割り振れるようになったらしい.Command + Option + oとかに割り当てると便利.

たぶんタブ関連はこんなもんだと思う.さらに続きます

2007/11/10 16:23 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

Firefoxをこう使ってます的な何か その2

It's All Text!

フォームのtextareaを外部エディタで編集できるようにする拡張機能.ついでに,あとで紹介する予定のStylishのCSSも外部エディタで編集できるようになる.textareaにEditボタンを表示するけど,うっとうしいので非表示にしてコンテクストメニューかショートカットキーから利用するようにしている.どっちかと言えばStylishのために入れているような感じ.また,リンク先にもあるようにMacへの対応が中途半端で外部エディタのパスの指定をちょっと工夫しないといけない.例えば,CotEditorを使うなら,

/Applications/CotEditor.app

ではなくて,

/Applications/CotEditor.app/Contents/MacOS/CotEditor

と,パッケージの中の本体を指定しなければならない.

Make Link

コンテクストメニューから,表示中のページのURLやタイトルを適当に整形してクリップボードに転送する拡張機能.ブラウザの特性上,よく考えるとページのタイトルをコピペするのはめんどくさいので,あると便利.例えば,このエントリを書いてるときも,前項のIt's All Text!でブログの新しい記事を書くところのtextareaを開いて,前回のエントリにあるStart Commandを使って目的の拡張機能を検索して,Make Linkでアンカータグ作って貼って,といった具合である.あと,メッセンジャーで人にURL教えるときもタイトルとURLを同時にコピーできるようにしておいてさくっと貼れるので便利.複数ページをコピペする場合は,あとで出てくる予定のマルチプルタブハンドラの方が便利かも知れない.

livedoor clip IncSearch

livedoor クリップのブックマークをローカルに同期して,タイトル,タグ,コメント全部ひっくるめてインクリメンタルサーチできる拡張機能.同種類の拡張機能の中では圧倒的な速さで検索でき,自分の場合4600件以上ブックマークがあるのだが,ほぼ一瞬で検索できる.del.icio.us IncSearchHatebu IncSearchもあるけど,自分の環境ではdel.icio.usはたまに同期通信がつながらなくて,はてブは使ってないので,livedoor クリップ版を使っている.ちなみにあとで出てくるGreasemonkeyを使ってdel.icio.usとlivedoor クリップに同時にブックマークしてるんだけど,なぜか両者でブックマーク数が微妙に違う.

あと,かなりレアなケースではあると思うけど,Macでは日本語検索が通らなくなるケースがあるので紹介しておく.MacではGUIアプリケーション(X11含む)の環境変数を設定するために,ホームフォルダに.MacOSXというフォルダを作ってその中にenvironment.plistを作ることがあるけど,そこでLANG変数をUTF-8などに指定していると日本語検索ができなくなる.livedoor clip IncSearchでは内部的にFirefoxのSQLite機能を使っていて検索用のフィールドを持っているようなのだが,そこに文字列を登録する際にアルファベットの大文字小文字を無視するためにUPPER関数を通してあって,そいつがLANG変数の値によっては日本語部分に悪さをするようである.environment.plistがないと困るひとは両立が難しそうだが,特に理由もなくenvironment.plistを置いてる人は消しておくと良い.

More Tools Menu

Firefoxに拡張機能をたくさん入れているとメニューバーの「ツール」のとこがいっぱいになって何がなんだかわからなくなるのだが,デフォルトのメニューは「ツール」に残しておき,新たに「追加ツール」という項目を作って拡張機能によって追加されるメニューを分離する拡張機能.単に表示を分けるだけなので,なくても困らないけどメニューが若干すっきりして分かりやすくなるので入れておくと良いと思う.

ちなみに,この拡張機能はThunderbirdでも使える.Thunderbirdについては,以前にThunderbirdのいいところというエントリを書いたけど,最近はWindowsではSylpheedもかなり良さそう.Thunderbirdを使ってるのは縦3列表示がかなり大きな要因の一つなのだが,Sylpheedでも実装されそうなので,実装され次第移行するかも知れない.MacではGmailと.MacをIMAPで受信してるけど,Mac版ThunderbirdのIMAP同期が遅すぎて話にならないので,Leopardに移行してからはMail.appを使っている.WideMailを使うと縦3列表示にできるし軽いので今のところ一応満足.ただ,キーボードショートカットによる操作が弱いのでMail Act-Onでなんとかしてるけど,その辺はまだThunderbirdの方がよい.Sylpheedは一応Macでも使えるけどX11になっちゃうのがネック.3つのいいとこが合体したようなメーラないかなぁ.

MR Tech Local Install

拡張機能を管理する拡張機能といった感じの拡張機能.現在インストールしている拡張機能のリストを書き出したり,バージョンの都合で対応してない拡張機能を強引にインストールしたりできるようになる.その他,細かい挙動も変更できる.今のところ,次に紹介するResize Search Boxのために使っているようなものなのだが,Firefox 3でResize Search Boxが本体に取り込まれるし,アドオン管理も少し改良されるのでゆくゆくはこの拡張機能は使わなくなりそう

Resize Search Box

検索ボックスをハンドルでリサイズできるようにする拡張機能.Firefox 2に対応していないので,前項のMR Tech Local Installを使って無理矢理インストールしている.前項でも書いた通りFirefox 3で本体に取り込まれる.ちなみに,Safariには昔から同様の機能が実装されている.FirefoxはUIに関してはかなりMacを意識しており,Windows版であってもツールバーをドラッグ&ドロップで並び替えれたり,オプション画面もMacのものを模倣した感じになっている.

今回はここまで.次回からはさらにディープな拡張機能になっていく予定.

2007/11/10 14:28 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

Firefoxをこう使ってます的な何か その1

超久しぶりの更新.

友人がFirefoxを使いはじめるというので,何回かに分けて,Firefoxの使い方というか,最近はこうやってウェブをウロウロしていますよ的なことを書こうと思う.過去のFirefox関連のエントリは以下の通り.古い内容やけど,まぁ参考までに.

とりあえず,どこから書いたらよくわからないから,入ってる拡張機能を適当に列挙して,そこから話を広げることにする.と,その前にFirefoxのインストールから.

Firefoxのインストール

Firefoxはオープンソースなので,その気になれば誰でもビルドすることができる.公式にダウンロードできるやつは,どの環境でも動くようにビルドされているので最適化がもう一つなので,最適化ビルドを入れる.Windowsでは公式ビルドを使ってるけど,Macの場合はフォーム部品がちょっとだけかっこよくなるおまけ付きのlzycビルドを使わせていただいている.

FIREGESTURES

Firefox用のマウスジェスチャ拡張機能は,Mouse Gestures(Macではちゃんと動かない)やAll-in-One Gestures(Macでも動く)が有名どころやけど,最近はFIREGESTURESを使っている.Mouse Gesturesは柔軟にカスタマイズできるけどMacでは動かなくて,All-in-One GesturesはMacでも動くけどもう一つ柔軟性に欠けると,Macユーザとしてはジレンマに悩まされていた.その点,FIREGESTURESの作者のGomitaさんはMac,Windows,Linuxのどの環境でも動くように気を使ってくれていて,Macでもすこぶる順調に動作する.しかも,機能的にも必要十分な感じで大変すばらしいと思う.ちなみに,一応,Macでの動作確認には協力させていただいている.設定としては,ホイールジェスチャとキープレスジェスチャのみ有効にして,右クリック + スクロールを「前のタブへ」「次のタブへ」にしている.さらに,「マッピング」の「特殊機能」で,「[ポップアップ]検索エンジンを選択してWeb検索」を適当に割り当てておくと,ページ中のテキストを適当に選択しておいて,登録済みの適当な検索エンジンで検索することができる.

検索エンジンといえば,多くのブラウザで検索エンジンをカスタマイズできるが,Firefoxでも可能である.Mozilla Japan - アドオン - Firefox - 検索エンジンMycroft Project: Sherlock & OpenSearch Search Engine Pluginsで,適当によく使う検索エンジンを追加しておくと便利.学生なら,ACMやGoogle Scholar,WeblioやWikipediaあたりを追加すると良いと思う.その他,Google Map,Google Image,Amazonあたりが多分便利.自分の場合は,StartCommand ソーシャルコマンドサービスを使って,さらに何でもありな感じにしている.tsukkeeのスタンドページ - StartCommandが一応自分のページ.PHPやらRubyのリファレンス引いたり,Vim ScriptやFirefox,Thunderbirdのアドオンを検索できるようにしてある.関係ないけど,Vimもだいぶ慣れてきたのでそのうちエントリ書こうかなぁ.

マウスジェスチャの話に戻ると,「タブを閉じる」を下方向のみのジェスチャ,「閉じたタブを元に戻す」を上方向のみのジェスチャに割り当てている.あとでまた書くと思うけど,Firefoxの使い方が大量にタブ開いたり閉じたりする使い方なので,気軽にタブを閉じたり勢い余って閉じちゃっても元に戻せるようにしてある.

dragdropupload

ファイルのアップロード時に,わざわざファイル選択ダイアログを開かずともドラッグ&ドロップでファイルを指定できる拡張機能.ドロップ時にはファイルパスを表示する部分ではなくて,ダイアログを開くボタン部分にドロップしないといけないので注意が必要.Safariなんかは標準でこの機能があったりする.Gmailで複数のファイルを添付したいときなんかは,いちいちダイアログを開かなくてもいいので楽である.これは標準機能として取り込まれてもいいと思う.

Locationbar2

Firefox 3に機能が取り込まれることが決定している拡張機能.ロケーションバーを見やすくするというか機能を拡張してくれる.デフォルトでは,httpとかhttpsとかいうプロトコル部分が消されるけど,設定で「非表示プロトコル」を空欄にして,さらにFaviconも表示している.便利なのが「リンク化」機能で,上端のみチェックして,階層をさかのぼりたいときは,ロケーションバーに上からカーソルを入れてクリックしている.中クリックによる新規タブで開くも有効なので,検索とかで深い階層のページがひっかかったときでも,マウス操作だけで上の階層を辿れるのが便利.

そろそろ,しんどくなってきたので,今回はこのへんで.まったくスクリーンショットもなく適当に書いたので分かりにくいけど,まぁいいや.今アクティブになってる拡張機能は24個あるので,まだまだ先は長い

2007/11/10 14:27 | Firefox | トラックバック(0) | コメント(1)

ページの先頭へ

トップページへ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。