Sunday, January 31, 2010

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!

Saturday, January 23, 2010

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 もときどき使います。

Friday, January 22, 2010

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 から抜いて外してやるけどね。

Thursday, January 7, 2010

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) ぜんぶ表示してみた

Tuesday, January 5, 2010

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

年末にメインの 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 なんたら" って表記するのばっさりやめれば良かったのにね。