2010-01-31

Emacs pretest 23.1.92

NTEmacs 23.1.92

予定どおりに 23.1.92 が出たようです。

bzr を使って追っかけするのにもだいぶ慣れてきました。

が、やっぱ、なにをするにも遅いんだよなぁ。
Cygwin 1.7 の bzr は 2.0.0 なんですけど、これが遅いんですかね?なんだろうな。

公式で git を使えるようになったらすぐに乗り換えると思います。

一応、有志による git ミラーは以下にあります。

さて、こないだから MinGW + MSYS でビルドするようになったので、そこらへんを少しだけ。

うちでは Windows 7 Enterprise x64, MinGW 5.1.6, MSYS 1.0.13-2, gcc 4.4.0 でビルドしています。

$ msysinfo
msysinfo-1.3: Send this to the MSYS support list:

MSYS 1.0.13(0.47/3/2) 2010-01-27 23:29 i686 unknown; targ=MINGW32
GNU bash, version 3.1.17(1)-release (i686-pc-msys); ENV=.profile
GNU Make 3.81This program built for i686-pc-msys; MAKE_MODE=unix
gcc.exe (GCC) 4.4.0; targ=MINGW32
GNU ld (GNU Binutils) 2.20
00 2010-01-28 13:31:10.000000000 +0900 /bin/msys-1.0.dll
92 2009-07-11 15:34:34.000000000 +0900 /bin/msys-bz2-1.dll
74 2010-01-06 19:46:31.000000000 +0900 /bin/msys-lzma-1.dll
52 2009-11-08 10:09:15.000000000 +0900 /bin/make.exe
2009-06-23 11:46:39.000000000 +0900 /c/MinGW/bin/gcc.exe
8 2009-10-24 09:13:00.000000000 +0900 /c/MinGW/bin/ld.exe
HOME=/c/Users/yu-ji/home
Sysname=MINGW32_NT-6.1  OSTYPE=msys  TERM=cygwin
PATH=.:/usr/local/bin:/mingw/bin:/bin:/usr/bin:/c/MinGW/bin:/c/Windows/system32:/c/Windows

普段使いの環境は Cygwin 1.7 に合わせてあるので、msys.bat で MinGW + MSYS 用の環境を調整しています。Emacs をビルドするときには、cmd でも bash でも大丈夫ですが、なんとなく bash からやってます。

$ diff msys.bat~ msys.bat
1a2,3
> set Path=C:\msys\1.0\bin;C:\MinGW\bin;%SystemRoot%\system32;%SystemRoot%
> set LANG=C

間違って Cygwin 環境でやっちゃうとややこしいことになるので、configure と make はそれぞれシェルスクリプトをかませてやっています。

emacs.config.sh とかファイル名つけて…、

#!/bin/sh
if [[ $MSYSTEM != "MINGW32" ]]; then
    echo emacs.config.sh must run under the MSYS shell;
    exit;
fi
export LANG=C
time $COMSPEC /c \
    'configure.bat --with-gcc --no-cygwin --no-debug --prefix=C:/emacs/23' \
    2>&1 | tee config.log.yu-ji;

引数とか忘れますしね。

以下は emacs.make.sh とかファイル名つけて…、

#!/bin/sh
if [[ $MSYSTEM != "MINGW32" ]]; then
    echo emacs.make.sh must run under the MSYS shell;
    exit;
fi
export LANG=C
time make \
    --jobs=4 XMFLAGS="--jobs=3" \
    ARCH_CFLAGS="-c -mno-cygwin -march=native -O3 -fno-tree-vectorize -mfpmath=sse -mthreads -pipe" \
    $1 $2 $3 $4 $5 \
    2>&1 | tee make.log.yu-ji;

うちの CPU は一昨年くらいの Core 2 Duo です。-O3 だけだと temacs をダンプするとき(だったと思う)にこけるので optimization 関係のオプションを調整した結果 -O3 -fno-tree-vectorize になりました。これが何を意味するかは知りませんし、他のマシンにバイナリを持っていくことも考えてません…。
※追記参照のこと

普段追っかけるときには、以下のようにやってます。ローカルのリポジトリの持ち方によって違う気がします。ワーキングコピーに merge してから diff して commit するほうが通信量も少ない気がします。

$ cd ~/src/wc/emacs/trunk/
(emacs のワーキングコピーに移動)
$ bzr merge --preview | lv
(変更点を眺めてみる)
$ bzr merge --pull
(変更点を取り込む)
$ cd nt
$ ../../../emacs.make.sh all
(上に載せたシェルスクリプトです)
$ ../../../emacs.make.sh recompile EMACS=../src/oo-spd/i386/emacs.exe
(lisp/ 以下に変更があったときにはこれやらないと .elc が古いままです)
$ ../../../emacs.make.sh install
(いんすこ)

なにかおかしくなったら、ワーキングコピーを綺麗にして bootstrap からやりなおします。

$ ../../../emacs.make.sh realclean
$ ../../../emacs.make.sh distclean
$ ../../../emacs.config.sh
$ ../../../emacs.make.sh bootstrap

こんな感じで。

MinGW-w64 で x64 Emacs はビルドできるんですかねえ。画像用の DLL 作るあたりが鬼門そうだ…。

追記Sun Feb 14 02:39:06 2010

@dnerkxさんが -O3 -fno-tree-vectorize の件を調べてくれました。thx!

2010-01-23

Firefox 3.6 addons

Firefox 3.6

Firefox 3.6 がリリースされたので、使っている addon をまとめなおしました。

Firefox 3.5 以前に使っていた addon は以下のエントリに。

もう、紹介というより、もう自分向けのただのメモですね…。

Personas はいくつか使ってみて、結局 Default に毛が生えた程度のシンプルなものにしました。スクリーンショットの Monty Python のはさすがにちょっと見辛い…。

Adblock Plus

http://adblockplus.org/

広告のフィルタリングというより、単に目にしたくないものをフィルタしてほっとするために。なので subscription は使っていません。

Coral IE Tab (Self-Hosted Version)

http://coralietab.mozdev.org/

IE Tab が更新されないので派生版のこっちで。

Delicious Bookmarks

http://delicious.com/
http://support.delicious.com/forum/
http://tech.groups.yahoo.com/group/delicious-firefox-extension/

ソーシャルブックマーク。
ソーシャルな使い方はまったくしないけど手放せません。

Echofon for Twitter (Formerly TwitterFox)

http://echofon.com/

Twitter クライアント。
他に良さそうなのがあればいつでも乗り換える気満々。惰性で使ってます。

FaviconizeTab

http://espion.just-size.jp/archives/06/308085916.html

タブの表示を Favicon だけに。

Firebug

http://getfirebug.com/
http://groups.google.com/group/firebug

これ無しは無理。

FireGestures

http://www.xuldev.org/firegestures/

マウスジェスチャー。
使っているのは、Reload, Close Tab, Undo Close Tab, Previous Tab, Next Tab くらい。あと一筆落書。

FireMobileSimulator

http://firemobilesimulator.org/

携帯端末のブラウザをシミュレート。

FireQuery

http://firequery.binaryage.com/

Firebug のお供。

Firesizer

ウィンドウを指定サイズに。

FxIF

http://ted.mielczarek.org/code/mozilla/fxif/

画像のプロパティに EXIF 情報も表示してくれる。

Google Toolbar for Firefox

Google Toolbar 5
http://www.google.com/tools/firefox/toolbar/FT5/intl/en/index.html
http://tools.google.com/firefox/toolbar/FT5/intl/en/index.html
http://toolbar-forum-announcements.blogspot.com/

最近追加されている機能はことごとく使わないが…。

Greasemonkey

http://www.greasespot.net/

なにかしらごにょりたいときに。

Hide Find Bar with Ctrl+F

http://ashphy.blogspot.com/2009/09/firefox-add-on-hide-find-bar-with-ctrlf.html

Ctrl + F でファインドバーの表示をトグル。
ESC に指を伸ばすのが億劫なので。

Make Link

http://www.soylentred.net/projects/make-link

現在のページの URL やタイトルなどを好みの書式でクリップボードにコピー。

QuickProxy

http://projects.ozzie.id.au/

シンプルなプロキシ切り替え。

RequestPolicy

http://www.requestpolicy.com/

これ無しは無理。

SQLite Manager

http://code.google.com/p/sqlite-manager/

SQLite のデータベースファイルをいじるのに手軽で便利。

SQLite Optimizer

http://miyafx.blogspot.com/2009/03/sqlite-firefox.html

プロファイルで使っている SQLite データベースを最適化。
構造上完全ではないけれどお手軽です。

Tab Mix Plus

http://tmp.garyr.net/

タブの挙動を細かく制御。

Tombloo

http://code.google.com/p/tombloo/
http://wiki.github.com/to/tombloo/

これ無しは無理(駄目)。
tumblr. 謹製の bookmarklet もときどき使います。

2010-01-22

Windows 7 で安全にキーボードを掃除する

作業中のデスクトップを残したままロックしてキーボードを掃除していたところ、気がついたらいつのまにか Windows がシャットダウンしていました…。

怒らないぞ泣かないぞ。(つД`)
ということで、懐かしの Ctrl + Alt + Del に戻ってきてもらう方法。

netplwiz
netplwiz.exe (Advanced User Accounts Control Panel) を実行して、

Advanced User Accounts Control Panel
"Require users to press Ctrl+Alt+Delete" にチェックを入れる。

ログオンやロック解除時に Ctrl + Alt + Del の入力を要求されるようになります。(Ease of Access は動いちゃうけど)

これなら気軽にキーボードを掃除できますね。ちゃんと掃除するときは USB から抜いて外してやるけどね。

2010-01-07

Emacs 23.1.91 pretest

NTEmacs 23.1.91

大晦日に 23.1.91 が出ました。

Emacs のリポジトリが、VCS を CVS から Bazaar(bzr) に乗り換えたので、emacs-devel はまだ混乱中のようです。
ぼくもとりあえず local の branch を作っただけで、他の使い方は知りません…。CVS と同期した git の使い勝手が良かったので、Bazaar のリポジトリでも git から使えるようになると良いのですが。

Cygwin を 1.5 系から 1.7 系に乗り換えたので(完全移行したので)、Cygwin + MinGW + gcc-3 で -mno-cygwin のバイナリが作れなくなりました。

なので、今回から MinGW + MSYS + gcc 4.4 の環境でビルドしてみました。

NTEmacs 23.1.91 Win7 Ent ENU view-hello-file

英語版の Windows 7 で emacs -Q して F1 h (view-hello-file) するとこんな感じです。すぐ表示できないのは、ビルマ語(Burmese)とオリヤー語(Oriya)、あとなぜか日本語の半角カナだけ。Windows も Emacs もすごいなー。

もちろんフォント入れればぜんぶ表示できるはず。
参考: u-ch: NTEmacs 23 で (view-hello-file) ぜんぶ表示してみた

2010-01-05

スタートメニューのようなもの

年末にメインの PC を Windows 7 へ載せ替えたので使い方をちょっとだけ試行錯誤してみた。

W7

けっきょくスタートメニュー(のようなもの)は捨てられず…。こんな具合に旧来のフォルダメニューを出すようにした。

もともと良く使うショートカットを Win 1キー 1キー の 3ストロークちょっとで使えるように集めていたので、mklink を使ってそのフォルダをほぼそのまま %USERPROFILE% 以下に symlink した。Win TAB Enter Enter 1キーとキーストロークは増えたものの、まぁ、悪くない感じです。search box や taskbar に pin したやつを Win + 数字キーで使うのも便利だし。でもさっき power button を誤爆して logoff しかけたので lock に変えるかも…。

元の My Documents 的なディスクボリュームを %USERPROFILE%\home の junction にマウントし、%USERPROFILE% 以下の各 junction はターゲットを振り替えて使っています。

Windows Explorer の使い勝手が良いので(悪くなったところもあるけど!)普段使いでは気にすることはないが、%USERPROFILE% のあたりはほんっと使い辛いというか分かりづらい。これだけぐちゃぐちゃにしてまで互換性を保ったのは偉い、でも、頭がどうかしてるとしか思えん。あとどうせ変えるなら "My なんたら" って表記するのばっさりやめれば良かったのにね。