6月 22

メモ代わりに今使ってる AddOn 達。

  • AutoAuth
    ベーシック認証とかのパスワードを記憶してくれて、いちいち認証のダイアログが出てこないようにしてくれる。
    ダイアログが出てくると、それに処理を持って行かれてしまうのでかなり便利。
  • ColorZilla
    表示されているページ上の文字色・背景色・画像の色などを調べられる。
    人のサイトのデザインを参考にする場合に意外と便利だけど滅多に使わない。
  • Delicious Bookmarks
    del.icio.us というソーシャルブックマークを使うとき便利。はてぶ派の人には関係なし。
    簡単に del.icio.us にブックマークが出来るボタンが出来る。
    個人的にはメインのブックマークは del.icio.us にするようにして、よくアクセスするブックマークのみを Firefox のブックマークでするようにしてる。
    ツールバー上にブックマークツールバーを表示するようにして、そこによく使うブックマークを配置。
  • DownThemAll!
    ページ内の画像やリンクなどをまとめてダウンロードできる。
    面白い画像を集めてるサイトなどの画像を一括で保存するときなどに使う。
    今までは個別でダウンロードしていたけど、どこで拾ってきた画像なのか分からなくなることが多かったので、
    DownThemAll! の「別名で保存」を「*url*_*subdirs**name*.*ext*」の様にして、どこで拾ってきたのかがすぐ分かるようにして管理。
    画像全体の管理は、Google の Picasa2 を使ってまとめて管理。
  • Fierr
    Firefox のページを開けなかったときのエラー画面を、ちょっとカッコよくしてくれる。
    ただそれだけ。
  • Firebug
    HTML や CSS をちょっとずつ編集しながらデザインを変更するときに便利。
    あと、JavaScript のデバッグをしたりするときにも。
    ただ、Firefox 2 時代、これを使っているとものすごく Firefox が重かったので、デフォルトで無効にしている。
    開発をしたり、参考にしたサイトが現れたときのみ有効。
  • FireGestures
    マウスジェスチャーを使えるように。マウスの右ドラッグで←とかの線を描くと「戻る」、リンク上で↑で新しいタブでリンクを開く、
    とかのある程度マウスだけでサクサク操作ができる機能。
    もともとは、 All-in-One Gestures を使っていたけど、Firefox 3 に対応していないので乗り換え。
    JavaScript で独自の動作を作ったりも出来て便利。
    All-in-One Gestures では標準であった画像を拡大とかの JavaScript も FireGuestures のサイトにあるので導入。
  • Gmail Space
    Gmail をファイル置き場に使える。バックアップとか、出先でも見れるようにとかそんな時用。
    最近両方使ってないけど、Windows の場合エクスプローラにGmail をドライブとして追加できる Gmail Drive を使う方が便利かもしれない。
  • Greasemonkey
    猿。
    JavaScript で色んな機能を追加できる。
    主に Stealth Kiwi という、Web での調査中(?)に脱線して帰ってこないときにしかってくれるのを使うために導入してます。
    仕事と関係ないサイトを 30分 Web を徘徊したら、1時間30分は Web 徘徊禁止とかが出来て便利。
    Greasemonkey を無効にすると簡単に黙らせることが出来るのが玉に瑕。
  • Html Validator
    ページのソースを表示したときに、HTML の構文チェックをしてくれる。表示がおかしいときは、ページ作成中に便利。
  • IE Tab
    Firefox ではどうしても見ることが出来ないサイトを IE で見ることが出来るので便利。
  • NoScript
    JavaScript を、こちらで指定したサイト以外無効に出来る。
    JavaScript を多用したサイトに行ったときにはいろいろと面倒だけど、悪意のあるサイトやトラッキングから守ってくれる。
  • Resizeable Textarea
    これは便利すぎる。 textarea のサイズをドラッグで無理矢理広げることが出来る。
    メールやコメントを書くときに textarea を広げられるのは非常に便利。
  • Scrap Book
    ブックマークに登録する感覚でページを保存できる。ウェブ魚拓のローカル版。
    消されても後で見たい情報、ネタ、新聞記事などをページ毎保存できて、しかもブックマークのように管理できる。
    実際保存したサイトを見るかと言われたらほとんど見ないけど、自己満足で保存することはよくあります。
  • Stealther
    クッキーとか、こちらからサイトに対して送信している情報を遮断できる。
    一時的にクッキーの情報を消してアクセスしたいときとか、たまに使用。
  • Tab Mix Plus
    もはやこれがないと Firefox の価値が半減・・・。タブ関係の機能強化ツール。
    全快終了時のタブを記録しておいて復元できるセッションや、
    ブックマークを新しいタブに開かせる機能、ロケーションバーからのURL入力を新しいタブで開く、タブの多段表示、
    その他細々かゆいところに手が届いて素晴らしいです。
    ただ、Firefox 3 では、 2008/06/22 現在、Firefox Add-ons から普通には更新できなくなっているので注意
  • User Agent Switcher
    ブラウザの種類によって挙動を変えるサイト様に、他のブラウザのフリをするときに使用。
    携帯のフリをしてみたりとか。
  • Web Developer
    Web 開発に便利なツール。
    form の hidden の情報や、name 属性などを目に見えるようにしたり、その他いろいろページやデザイン作成中に便利な機能満載。
  • ラインマーカー
    よんでるサイトに、線を引いたり色を付けたり出来る。たまに便利。
    ページ内をあっちこっち移動しながら読んでるときとかに便利。
  • 中止ボタンがしいたけに見えて困る
    中止ボタンが椎茸になる素晴らしいアドオン。

他にもあるけど、今、主に使っているのはこんな感じ。

あと、 lolifox という Firefox (2008/06/22 現在 Firefox2) のクローンも併用。
Firefox のアドオンがそのまま使えて、ほぼ Firefox なのに設定の保存先などの管理が全く別なので、
Web 系の開発をしたりするときに重宝。
余計なアドオンを排除してサクサク動かしたいときや、ほぼまっさらの状態の Firefox で見たときのページを確認できたり非常に便利。

6月 19

Firefox 3.0 でページ内のインクリメンタル検索をしようとしたところ、できない・・・。
編集メニューの「検索」を選んだ場合も、C-F をおした場合も同様。

正常なら C-F を押した後、Firefox のステータスバー付近にインクリメンタル検索用のバーが表示されるはずなのが、
Firefox が無反応で検索用のバーが表示されない。

いろいろ調べた結果、/Find Bar/ というアドオンが悪さをしているらしい。

環境:
Windows XP SP2 + Firefox 3.0 + /Find Bar/ 1.0 でこの症状。

解決策:
/Find Bar/ を泣く泣く無効にする。

6月 19

注意! 2009/01/07 現在 Tab Mix Plus は普通にインストールできます。かなり前からできてたけど・・・・
ここにある Tab Mix Plus のソースをいじる改造をしていると、正常に自動アップデートできないので、いったん Tab Mix Plus を削除する必要があります。

Firefox 3.0.1 にアップグレードして、Tab Mix Plus が再び使えなくなった場合はこちら

Firefox 3 にバージョンアップしたら、今まで使っていた AddOn が使えなくなっていて途方に暮れる・・・。

All-in-One Gestures が使えなくなったので、 FireGestures に乗り換えてみることで解決。

Tab Mix Plus は他に代わりが見つからず途方に暮れる・・・。
Tab Mix Plus のレビュー をよく読んでみたら、Firefox 3 で使用可能な Tab Mix Plus が↓の URL に存在する模様。

wondersz1 – 日時: 2008年 6月 18日
http://tmp.garyr.net/tab_mix_plus-dev-build.xpi

Firefox3 は予想よりもだいぶサクサク動くけど、Tab Mix Plus が使えないと思いの外不便でした。
ブックマークを新しいタブで開くが使えないと・・・ orz。

「このアドオンには安全な更新方法が用意されていません。」と表示されて、普通のアドオンの更新で upgrade できない、アドオンもいくつかあったのもワナ・・・。
一旦削除してからインストールし直せばいいのに気づくのにだいぶ時間を使った気がする。

Mouseless Browsing も復活しないかな・・・。

5月 11

emacs(Meadow 3.00-dev) の elscreen と iswitchb と mcomplete が便利でよかったんだけど、いつの頃からか、
C-z b(elscreen-find-and-goto-by-buffer) をしたときに、ミニバッファが↓の様になって、うまくいかない事件が発生。
[No match] [No match] [No match] [No match] [No match] ...

調べてみると、*Message* バッファに次のエラーが。(数値の部分はその時々で変わる)
Error in pre-command-hook: (args-out-of-range 41 63)

ウチちの環境でこのエラーを再現する方法:

  1. emacs を起動。 (elscreen, iswitchb, mcomplete が使える状態)
  2. C-z b *Message* と入力しようとする
  3. [No match] [No match] … と出て、全くバッファ名にマッチしなくなる
  4. *Message* バッファに Error in pre-command-hook: (args-out-of-range 41 63) が出てる
  5. *Message* [No match] [No match] [No match] [No match] とかいう名前のバッファが新規作成される

ちなみに、 C-x b などでバッファを選ぶと問題ない。 C-z b の時だけ。

原因究明:
pre-command-hook とか言われても、どの hook がダメなのかさっぱりだったので、いろいろ追っかけて、elscreen と mcomplete の連携がうまくいってないことが判明。
ずっと、iswitchb が原因と思って iswitchb.el をデバッグしてたのに・・・。

mcomplete.el の 1093 行目付近の以下の箇所を修正。
修正前:

(mapcar #'(lambda (f) (put f 'mcomplete-mode '(:mode off)))
        '(iswitchb-buffer iswitchb-buffer-other-window
          iswitchb-display-buffer iswitchb-buffer-other-frame

          ido-find-file ido-find-alternate-file ido-write-file
          ido-insert-file ido-switch-buffer ido-insert-buffer
          ido-kill-buffer ido-find-file-other-window
          ido-find-file-other-window ido-switch-buffer-other-window
          ido-display-buffer ido-find-file-other-frame
          ido-switch-buffer-other-frame))

修正後:

(mapcar #'(lambda (f) (put f 'mcomplete-mode '(:mode off)))
        '(iswitchb-buffer iswitchb-buffer-other-window
          iswitchb-display-buffer iswitchb-buffer-other-frame

          ido-find-file ido-find-alternate-file ido-write-file
          ido-insert-file ido-switch-buffer ido-insert-buffer
          ido-kill-buffer ido-find-file-other-window
          ido-find-file-other-window ido-switch-buffer-other-window
          ido-display-buffer ido-find-file-other-frame
          ido-switch-buffer-other-frame

          elscreen-find-and-goto-by-buffer
          ))

どうやら、mcomplete は、 iswitchb とかと競合しないように気を遣っているようだけど、elscreen は眼中になかったらしい。

4月 30

php-mode.el を修正。

↓の様なインデントをサポートするように改造。

$a = array(
    'aaaa' => 1,
    'bbbb' => 2,
);

あと、もともと入っていた template という、ウィザード形式の入力支援が苦手だったので、全部その処理をしているところをばっさり削除。
便利な入力支援は yasnippet を使うことにする方がいいかも。
http://code.google.com/p/yasnippet/

4月 21

ひさしぶりに、 SQLite を触ってみたら変なエラーが出たのでメモ。

    環境

  • Windows XP SP2
  • FedoraCore7 on coLinux
  • SQLite 3.4.2

perl から sqlite を操作しても、 sqlite3 のコンソールから直接操作しても、cofs 上の database ファイルは扱えなかった。
※ファイルの作成はできるけど、 CREATE DATABASE とかの操作をすると
disk I/O error(10) at dbdimp.c line 403

解決策は、データベースを保存する場所を、cofs じゃない場所にしただけ。
tmpfs 上、ext3 上にデータベースを作成した場合はOKだった。

#!/bin/perl

use strict;
use warnings;
use DBI;

my $dbname;

$dbname = 'test.db'; # OK:ext*,tmpfs NG:cofs
unlink($dbname) if (-e $dbname); # テストだから毎回新規作成したい

unless (-e $dbname) {
    my ($dbh, $sql, $rc);

    $dbh = DBI->connect("dbi:SQLite:dbname=$dbname", "", "", {PrintError=>0});
    die "Error: $DBI::errstr\n" unless ($dbh);

    # cofs の時は CREATE のタイミングで↓のエラーが発生する
    # disk I/O error(10) at dbdimp.c line 403
    $sql = "CREATE TABLE users (id integer primary key, name varchar(32), age integer)";
    $rc = $dbh->do($sql);
    print "$DBI::errstr\n" unless ($rc);
}
4月 11

ペペロンチーノを作る。

使う Makefile の中身:

INSTALLDISH = /dish
PAN  = /tmp/fryingpan
POT  = /tmp/pot
CUP  = /tmp/cup

all : peperoncino

install :
	mv ${PAN}/* ${INSTALLDISH}

peperoncino : source boiled-pasta consomme.o
	split -d -b 100cc ${POT}/water.o water-
	mv ${POT}/water-00 > ${CUP}
	mv consomme.o ${CUP}
	rm ${POT}/water*
	find ${POT} -name "pasta-*" -exec mv {} ${PAN} \;
	fry -t 1m ${PAN}

source : garlic.o red-pepper.o olive-oil.o
	split -d -b 2 garlic.o garlic-
	mv   garlic-* ${FRYINGPAN}
	split -d -b 15 red-pepper.o red-pepper-
	mv   red-pepper-* ${FRYINGPAN}
	mv   olive-oil.o ${FRYINGPAN}
	fry  ${PAN}

boiled-pasta : water.o salt.o pasta.o
	mv water.o ${POT}
	boil  ${POT}
	split -d -b 150 pasta.o pasta-
	mv pasta-* ${POT}
	mv salt.o ${POT}
	sleep 6m

garlic.o :
	cat /dev/garlic > garlic.o

red-pepper.o :
	cat /dev/red-pepper > red-pepper.o

olive-oil.o :
	cat /dev/olive-oil > olive-oil.o

water.o :
	cat /dev/water > water.o

salt.o :
	cat /dev/salt > salt.o

pasta.o :
	cat /dev/pasta > pasta.o

consomme.o :
	cat /dev/consomme > consomme.o

clean :
	rm -R ${INSTALLDISH}/*
	rm -R ${PAN}/*
	rm -R ${POT}/*

作って食べる:

% ls
Makefile
% make
% make install
% eat /dish/*
4月 09

AutoHotkey
M-Space (Alt+Space) で Launchy を起動していたけど M-Space 他の機能に割り当てたい気がしてきたので、何かのランチャーがやってたみたいに Shift を素早く2回押しで起動するようにする。

窓使いの憂鬱でしようと思ったけど、「Shift キーを素早く2回押し」の「素早く」の部分ができないっぽいので、AutoHotkey を導入。
AutoHotkeyを流行らせるページ の説明が詳しかった。

AutoHotkey を導入する前に、Launchy を起動させるホットキーを Win+Space に変更する(他のホットキーと被らないように)。

  • まずは、ここから AutoHotkey のインストーラを取ってきてインストール。
  • D:\Settings\AutoHotkey というディレクトリにスクリプトを置くことにして、 D:\Settings\AutoHotkey\MyAutoHotkey.ahk というファイルを作成。
  • #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
    SendMode Input
    
    ~Shift up::
    if(A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < 180)
    Send,#{Space}
    return
    
  • AutoHotkey のショートカットを作成して、 リンク先を↓の様に変える。
  • "C:\Program Files\AutoHotkey\AutoHotkey.exe" "D:\Settings\AutoHotkey\MyAutoHotkey.ahk"

  • あとは、このショートカットをダブルクリックすれば、素早く Shift 2回押しが Win+Space に変換されて、Launchy が開くようになる。
  • このショートカットをスタートアップに登録しておけば便利。
  • (ホントは、ショートカットを作成しなくても、MyAutoHotkey.ahk をダブルクリックするだけでいい。)
3月 31

My Happy Hacking Keyboard Lite 2

Happy Hacking Keyboard Lite2 を使い始めて、手首を浮かすことがだいぶ少なくなったので、手首が腱鞘炎っぽくなることがほぼ無くなった。

それでも今度は、Emacs 使いの所為か左手小指にかなり負荷がかかっていて、
一日の終わりに頭よりも目よりも先に、左小指が一番最初にガタが来る症状に悩まされたあげく、自分なりの解決策にたどり着いた。

解決策:一番丈夫なのにスペースキーくらいしか叩いてない親指に働いてもらう

↑の画像のようにキーを入れ替える。

  • 半角/全角左Alt
  • 無変換左Control
  • 変換右Control
  • カタカナ/ひらがな右Alt
  • 左Altメニュー
  • ;(セミコロン)Enter
  • Ctrl+;(Ctrlを押しながら;);(セミコロン)

キーの入れ替えには「窓使いの憂鬱」というソフトを使用。
このソフトはかなり便利で、いろんなソフトで Emacs ライクなキーバインドを使える。

窓使いの憂鬱の設定ファイル .mayu に以下を追加。

mod control += 無変換       # 無変換 を LControl に
key *無変換 = *LControl     #       〃
mod control += 変換         # 変換を を LControl に
key *変換   = *LControl     #       〃
mod alt       += ひらがな   # ひらがな を LAlt に
key *ひらがな = *LAlt       #      〃

if ( HHKBLite2 )
  mod alt        -= RAlt       # RAlt を 右クリックメニューの出るやつに
  key *RAlt      = *APPS       #      〃
  mod alt        += 半角/全角  # 半角/全角 を LAlt に
  key *半角/全角 = *LAlt       #      〃
  key Escape     = &Default    # Escape を元に戻す
endif

if ( LetsNoteCFY2 )
  key *半角/全角  = *Esc       # 半角/全角を Esc に
  #key *Esc       = *半角/全角 # Esc はそのまま
  key *Escape     = *Escape    # Escape を元に戻す
endif

key *IC-SemiColon      = Enter       # セミコロン を Enter に
key *IC-C-~S-SemiColon = SemiColon   # Ctrlを押しながらだとセミコロンに;
#key *IC-C-~S-I          = Tab        # Ctrlを押しながらだとTabに

↑の設定では、デスクトップの HHKBLite2 と、Laptop の Let’s note CF-Y2 で同じ設定を共有できるように、
デスクトップで使用する場合は、シンボルに HHKBLite2 を、
Laptop で使用する場合は、シンボルに LetsNoteCFY2 を定義して切り分けるようにしてある。

これで、Control キーを押しっぱなし、Alt キーを押しっぱなしといったことがほとんど親指の仕事になったので、
左小指への負担はだいぶ軽減された。相当酷使しない限り今のところ平気。

あとは、さらに小指の負担が減るように、 Ctrl+i で Tab になるようにしてある。

「窓使いの憂鬱」を使い始めて、何も Happy Hacking Keyboard Lite2 じゃなくても、
同じくらいか、もう少し小さめのキーを押しやすいキーボードがあればそれでいい気がしてきた・・・。
英語版キーボードも、スペースキーの周りにもっとキーがいっぱいあればな・・・。

関連:キーボード(Happy Hacking Keyboard Lite2)

3月 31

Happy Hacking Keyboard Lite2 日本語

今現在、デスクトップPC用のキーボードで Happy Hacking Keyboard Lite2 の日本語配列を使用中。(キーを入れ替えて使用)
選んだ理由は、使い始めた当時、Happy Hacking Keyboard は使いやすいと噂で聞いていたのと、
Happy Hacking Keyboard Professional が英語配列しかなくて、しかも高かったので、 HHKB Lite2 を選択。

Continue reading »