2009-12-09

Emacs 23.1.90 pretest

NTEmacs 23.1.90 pretest

Emacs 23.2 リリースに向けた pretest が始まりました。

相変わらず、以前書いた上記のメモと同じ手順で作ってます。メインの PC を Windows 7 にしたら、Cygwin 1.7 に移行して、それが落ち着いたら MinGW でのビルド環境作ろうかと。年末、お正月か、来年か…。orz

ちなみに 23.2 では  Windows 7 のタスクバーでうまいこと動くよう runemacs や emacsclient に改良が加えられています。

etc/NEWS を眺めて個人的に気になったのは以下の項目。

  • system-move-file-to-trash
  • make-pointer-invisible
  • help-downcase-arguments
  • kill-do-not-save-duplicates
  • completion-styles '(initials)
  • M-r is bound to the new `move-to-window-line-top-bottom'.
  • js.el is a new major mode for JavaScript files.
  • htmlfontify.el turns a fontified Emacs buffer into an HTML page.
  • You can give the `fullscreen' frame parameter the value `maximized'. This maximizes the frame.
  • On MS-Windows, `display-time' now displays the system load average as well as the time, as it does on GNU and Unix.

forward-word とかが長音符 "ー" に引っ掛らなくなったのが地味に嬉しい。

2009-12-06

NTEmacs で FTP サイトにあるファイルを編集

Emacs は、FTP で接続した先にあるファイルを、ローカルにあるファイルと同じ感覚で編集できます。

古くは ange-ftp、現在では tramp という仕組みを使います。(実際のところ tramp で FTP を扱うときは、裏で ange-ftp が動いているみたいです)

Linux など UNIX 系 OS の Emacs では、OS のディストリビューションに含まれている /usr/bin/ftp など BSD 由来(たぶん?)の ftp が使われます。

Windows にも C:\WINDOWS\system32\ftp.exe がありますけれど、これは Emacs から使うことはできません。

そこで Emacs のお膝元で配布している BSD 由来の Windows 用 ftp を使います。
(追記参照のこと)

これの Release\ftp.exe を適当なディレクトリに置いて使います。ぼくは横着なので Emacs と同じディレクトリに置いてます。
ange-ftp にこの ftp.exe を使うように指示するには以下のようにします。

(setq ange-ftp-ftp-program-name "C:\\emacs\\23\\bin\\ftp.exe")

M-x customize-group RET ange-ftp で Ange Ftp Ftp Program Name を編集しても良いです。個人的には customize を使った方法が好みです(どうでもいい)。

これで、あとはいつも通り C-x C-f /ftp:user@ftpserver:/path/to/file こんな感じでファイルを開けるようになります。

/ftp:user@ftpserver: TAB とすれば補完も効きます。パスワードは一回入れたらあとは聞かれないです。保存するのはもちろん C-x C-s です。

だいたいのファイル操作を透過的に扱えるようになるのが tramp / ange-ftp の利点です。

FTP ではなくて SFTP とか SSH を使いたい人は tramp の info を読んでみてください。その場合、Windows では PuTTY の plink + pageant を使うのが楽です。

すごく雑な駆け足の説明ですが。(・∀・;)

file insight ftp-exe

上で紹介した ftp.exe を NIS2010 のファイルインサイトにかけたら「100人未満」とか言われちゃって…。
いくら FTP が使われなくなりつつあると言っても、まったく使わないわけでもないし、Emacs から直接ファイル編集できたら便利ですし、知られていなかったらもったいないので紹介してみました。

ftp.exe 使うよりもいい方法があるよ!って場合はぜひ教えてください。

追記@Tue Dec 15 07:17:04 2009

ftp-for-win32.zip に含まれる ftp.exe は Passive mode (PASV) がデフォルトになっているため、active mode でも ftp を使いたい場合にはデフォルトを変更する必要があります。ange-ftp の PASV 関連の設定を有効に使うためにもこちらを使うのが良さそうです。

$ diff -pu main.c~ main.c
--- main.c~     1999-07-19 17:06:00.000000000 +0900
+++ main.c      2009-12-15 07:07:18.739744200 +0900
@@ -215,7 +215,7 @@ int main(int argc, char *argv[])
                verbose++;
        cpend = 0;           /* no pending replies */
        proxy = 0;      /* proxy not active */
-    passivemode = 1; /* passive mode *is* active */
+       passivemode = 0; /* passive mode is *not* active */
        crflag = 1;    /* strip c.r. on ascii gets */
        /*
         * Set up the home directory in case we're globbing.

が、白井秀行さんが他のバグも含めて直してコンパイルしてくださったファイルがあるので、それを使うのがお手軽なようです。

ftp-for-win32.new.tar.gz の Release\ftp.exe で置き換えてそのまま使えます。

passive も使えるけど active じゃないとダメという環境がありまして、自分とこで VS2008 を使ってバイナリを作ってみたけど warning だらけの上にまともに動きませんでした。

ともあれ先達に感謝。

2009-12-05

携帯遍歴

これまでに使ってきた携帯を、なんとなく調べたので表にしてみた(手抜きだけど)。
画像を集めたものの、拾い物なので載せられない…。

| 購入時期 | キャリア       | 種別     | 型番         |
| 1995/05? | NTT ドコモ     | ポケベル | センティーA  |
| 1995/09  | ツーカー       | 携帯     | TH251        |
| 1996/04? | NTT パーソナル | PHS      | 202S         |
| 1996/09  | NTT ドコモ     | 携帯     | P101         |
| 1997/05? | NTT ドコモ     | 携帯     | P203         |
| 1997/09  | NTT ドコモ     | ポケベル | キッズベル   |
| 1998/11? | NTT ドコモ     | 携帯     | P207         |
| 2001/06? | NTT ドコモ     | 携帯     | P503iS       |
| 2004/12  | NTT ドコモ     | 携帯     | SH901iC      |
| 2008/02  | NTT ドコモ     | 携帯     | P905i        |
| 2009/12  | NTT ドコモ     | 携帯     | P01B         |

初携帯はツーカーの TH251 だった。これはジョグダイヤルがついたソニーのやつ。発売から大々的に宣伝しててコレしかないと思った。ドコモで欲しかったけど、ドコモからは出なかった(後に後継機かなんかは出た)ので、しかたなくツーカーで。

当時某社に勤めていたのでツーカーを使うのは肩身が狭かった。それが耐え切れなくなったところで P デビュー。根っからの P 儲かと思ってたら、こう並べてみるとそうでもないかな。

1999年までは買ったか買ってないのか記憶にない P がいくつかあるけど、画像見ても確証が持てなかったので、それは載せていない。

ポケベルももう一つあったはずだけど、型番とかまったく記憶に無し。

2000年以降は新機種が出る度に替えるということはしなかったので P503iS 以降は正確なはず…。

2009-11-19

Diskeeper 2010 の新機能 IntelliWrite がすごい件

Windows のデフラグツールの新バージョン、Diskeeper 2010 (DK14) の新機能 IntelliWrite がすごいので簡易なベンチマークを取ってレビューします。

IntelliWrite とは

IntelliWrite はディスクの断片化(フラグメントの発生)を事前に防止する機能です。日本では 19日に発売となった Diskeeper 2010 に初めて搭載されました。

その昔フラグメントが起こりにくいとされていたくせに、実はめちゃくちゃフラグメントしまくる NTFS の、まさに弱点を補うような機能です。(FAT については追記参照)

IntelliWrite はファイルシステムのフィルタドライバとして実装されています。

IntelliWrite の効果

ベンチマークのテストプログラムは、無駄に並列に、無駄に細切れに、無駄にフラグメントを起こすような形で、ディスクへの書き込みを行なうものにしました。

では、早速、ベンチマークの結果を。

IntelliWrite OS 試行回 所要秒数 超過断片数
無効 Windows XP 1 83 18,810
    2 76 18,810
    3 72 18,810
    4 73 18,810
    5 70 18,810
有効 Windows XP 1 38 30
    2 43 30
    3 36 30
    4 31 30
    5 37 30
IntelliWrite OS 試行回 所要秒数 超過断片数
無効 Windows 7 1 119 18,810
    2 132 18,386
    3 136 18,158
    4 146 18,544
    5 139 18,810
有効 Windows 7 1 51 84
    2 53 84
    3 55 87
    4 60 84
    5 55 85
IntelliWrite OS 試行回 所要秒数 超過断片数

テストプログラムの実行によって発生した超過断片の数と、その所要時間です。Windows XP と Windows 7 の二台は別のマシンで、CPU もディスクもコントローラも性能が異なります。「自動デフラグ」はオフにしてあります。断片数の値にあまりぶれがないのは、かなり地ならしした後の計測だからです。

解説は…いらないかな。IntelliWrite の有効 / 無効のあいだで、所要秒数と超過断片数の違いを見てください。

断片数は桁が三つ違いますから放っておいて、所要秒数の平均値をグラフで見易くすると以下のようになります。(繰り返しますが Windows 7 と Windows XP ではマシンの性能が異なります。Windows 7 と Windows XP の比較ではありません)

DK2020_graph

Netbook や Note PC でバッテリが気になる使い方をしていれば、この違いが強烈に効いてくると分かってもらえると思います。

IntelliWrite を使うと、

  1. 断片化の発生がすごく防止される
  2. 伴なって、ディスク書き込みのパフォーマンスが上がる
    (結果、測定してないけど、読み込みのパフォーマンスは下がらない)

です。

これまでのデフラグソフトは「パフォーマンスを低下させない」あるいは「低下したパフォーマンスを元に戻す」ものでした。しかし Diskeeper 2010 の IntelliWrite はパフォーマンスを向上させます。

この記事、別に回し者じゃないけどべた褒めする気で書いてます。(・∀・;)
もっとも、断片化が発生しないディスク I/O の場合にはそもそも違いはでませんけどね。

見えないとこでも断片化防止

ベンチマークの結果は、もう、なんつーか、びっくりでしょう?ぼくもびっくりしました。

これだけ断片化しまくる NTFS も酷いけどw、対してそれをほとんど阻止する IntelliWrite がすごい。

DK2010_IntelliWrite

Diskeeper 2010 のダッシュボードでは、その日に発生した断片化のうち、IntelliWrite がどれだけ防止したのかが表示されます。このベンチマークのような極端な場合には 99% 表示となりますが、通常の使用では 60% ~ 80% 程度になるようです。公称は最大約 85% と言われています。もちろんディスクの使われ方によりますけど。

Diskeeper 2010 のエディションの選び方

これまで Diskeeper を使ったことがない人にもぜひ試して欲しいので、どのエディションを買ったら良いのか、選び方を書いてみます。この blog の他の記事を見てもらえれば分かりますが、普段はさすがにここまで書かないです…。

Home Edition

安いです。とりあえずあらゆる Windows PC に入れとけ的なエディションです。

それでも、IntelliWrite と InvisiTasking が使えるので、Windows 標準のデフラグや他の似たような製品とは違うのがすぐに体感できると思います。Netbook や Note PC にちょうど良くて、かつ、コストパフォーマンスが抜群だと思います。
いまどきの子ならお小遣いで十分買えるんじゃないかな。

ProPremier Edition

このエディションを最もお勧めします。
ミッドレンジ~ハイエンドのノート PC とデスクトップ PC には ProPremier 一択です。

Diskeeper の特徴的な機能はすべて使えます。サイズ 60GB 以上の HDD ボリュームでは、TVE という特別なデフラグエンジンを利用できます。元はハイエンドサーバ向けのデフラグエンジンでしたが、下位のエディションに降りてきました。いまどき一般的な 250GB 以上とかの HDD 容量があるなら違いが顕著です。500GB ~最近のテラバイト級の HDD を使っているなら下位のエディションとはデフラグ速度の性能差が 4倍~ 5倍くらいは出ると言われています。
母親の PC にこれをインストールしてあげたら 10歳は若返ったと喜んでます。(本人の感想であり効果効能をあらわすものではありませn)
4年前は十ン万円してたエンジンがいまなら一万以下。やりくり上手なあなたならきっと買えますよ。

Server Edition

業務用です。機能は ProPremier 相当です。

IntelliWrite は本来サーバでこそ待ち望まれた機能だと思います。一般的な web サーバ、ファイルサーバ、その他なんでも Windows Server ならこれで(Home Server は除く)。
SQL Server 使ってますか?効きますよ。お父さんなら決済通せるよね。

企業のネットワークで効率的に Diskeeper を展開・管理する場合、Administrator Edition の使用を検討してください。プッシュインストール便利です。

学校・企業で導入の場合、また、クライアント版で 10本以上、サーバー版で 2本以上を導入する場合には、ボリュームライセンスが利用できます。

EnterpriseServer Edition

エンタープライズ用、あるいは廃人用です。

現在最高性能のデフラグエンジン Titan Defrag Engine を積んでます。数年未来を先取りしたい人、デフラグがどうしても好きな人、これで勝てます。2TB のディスクいっぱい繋いじゃってボリューム組んでるとか(棒読み)、痛なんとか Itanium の人もこれです。

DK2010_EnterpriseServer
うふふ。

エディション選択の注意

Diskeeper の各エディションが動作可能な Windows の SKU は購入前に必ず確認してください。トライアル版で試用してみるのが安心です。

Home エディションは Windows のビジネス向け SKU (Vista Business, Vista/7 Enterprise) にはインストールできません。但し、7 Professional にはインストールできます。

今回紹介した IntelliWrite は Diskeeper 2010 の Administrator を除く全エディションに搭載されています。テストプログラムの実行環境では ProPremier を使いました。

以前のバージョンにあったエディションごとの最大ボリュームサイズの制限は、Diskeeper 2010 から無制限になったようです。

SSD も使う場合は "with HyperFast" 版か "HyperFast 追加パック" で。

関連記事

販売元の記事
他サイトの記事
開発元の記事

以下は開発元 Diskeeper Corporation のサイト。ぜんぶ英語です。

テストプログラム

ベンチマークに使ったテストプログラムは以下の Perl スクリプトです。

2009-11-16

yaml-mode

YAML(YAML Ain't Markup Language) を扱うシンプルなモード。

site-lisp 以下に yaml-mode.el をこぴって M-x byte-compile-file しておしまい。

(require 'yaml-mode)
(add-to-list 'auto-mode-alist '("\\.yml$" . yaml-mode))
(add-hook 'yaml-mode-hook
      '(lambda ()
        (define-key yaml-mode-map "\C-m" 'newline-and-indent)
        (setq indent-tabs-mode nil)))

フックとかなるべく custom に入れるようにしていますが、これだけで他いじらないで使えそうなのでそのまま .emacs (実際には ~/.emacs.d/init.el から呼ぶファイル)に入れて済ました。

追記@Tue Mar 02 08:14:44 2010

2009-11-01

NTEmacs からうまいこと GnuPG を呼び出す patch

mew-dist にあった Kentaro KAWAMOTOさんの NTEmacs から Cygwin の GnuPG 1.4.9 を呼び出すのにうまいことする patch を、GnuPG 1.4.10 の util/ttyio.c にあたるように手を入れただけの patch です。1ヶ所 reject されたのを直しただけで、ほぼそのままです。

参考

余談

Cygwin 環境での configure とか make とか子プロセスぽこぽこ作るプロセスが NIS2010 の SONAR に刺さるのでいちいち鬱陶しいです…。現在配布が中止されている 17.1 の問題が解決されて配布が再開されれば、少しは SONAR が賢くなるらしいんだけど。

追記@Wed Oct 20 07:31:55 2010

GnuPG 1.4.11 に当たるように修正。

SKK-JISYO.L.cdb を最新にする

ddskk / skkime から使っている Debian GNU/Linux  lenny の dbskkd-cdb の SKK-JISYO.L.cdb を最新のファイルで更新するメモ。

$ wget http://openlab.jp/skk/skk/dic/SKK-JISYO.L
$ wget http://openlab.jp/skk/skk/dic/SKK-JISYO.edict
$ skkdic-expr SKK-JISYO.edict + SKK-JISYO.L \
> | skkdic-sort > SKK-JISYO.edictL
$ sudo makeskkcdbdic SKK-JISYO.edictL /usr/share/skk/SKK-JISYO.L.cdb

ついでに SKK-JISYO.edict もくっつけて。

追記@Tue Mar 02 08:19:49 2010

追記@Mon Dec 13 23:36:54 2010

辞書が置かれている URL や配布形式が変わっていたので更新した。

#!/bin/sh
# skk の辞書を更新して
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.L.gz
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.jinmei.gz
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.geo.gz
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.propernoun.gz
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.station.gz
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.law.gz
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.requested.gz
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.edict.tar.gz
wget -N http://openlab.ring.gr.jp/skk/dic/zipcode.tar.gz

# 展開して
echo "extracting..."
gunzip < SKK-JISYO.L.gz > SKK-JISYO.L
gunzip < SKK-JISYO.jinmei.gz > SKK-JISYO.jinmei
gunzip < SKK-JISYO.geo.gz > SKK-JISYO.geo
gunzip < SKK-JISYO.propernoun.gz > SKK-JISYO.propernoun
gunzip < SKK-JISYO.station.gz > SKK-JISYO.station
gunzip < SKK-JISYO.law.gz > SKK-JISYO.law
gunzip < SKK-JISYO.requested.gz > SKK-JISYO.requested
tar xafO zipcode.tar.gz ./zipcode/SKK-JISYO.zipcode > SKK-JISYO.zipcode
tar xaf SKK-JISYO.edict.tar.gz SKK-JISYO.edict
echo "done."

# くっつけて
echo "merging..."
skkdic-expr SKK-JISYO.L \
 + SKK-JISYO.jinmei + SKK-JISYO.geo + SKK-JISYO.propernoun \
 + SKK-JISYO.station + SKK-JISYO.law + SKK-JISYO.edict + SKK-JISYO.zipcode \
 + SKK-JISYO.requested \
 | skkdic-sort > SKK-JISYO.merged
echo "done."
skkdic-count SKK-JISYO.merged

# dbskkd-cdb 用に更新する(手動)
echo "sudo makeskkcdbdic SKK-JISYO.merged /usr/share/skk/SKK-JISYO.L.cdb"

2009-10-26

ActiveState Perl Dev Kit 8.1 released

先週、PDK 8.1 が出ました。

Windows 用の Graphical Debugger はデフォルトではインストールされなくなり、今後は Komodo IDE 使えばいいよってことのようです。Komode ねぇ…。Graphical Debugger がもし今後ディスコンされるようなら PDK の価値が実質減ることになりますかねえ。IDE が欲しいんじゃなくて、困ったときだけ頼れるデバッガがあれば良いんですけども。

2009-10-19

"postini 障害" キーワード

postini outage keywords

日本のアクセス解析なのに空白を正規化しないって…というのは置いといて、先週 2009/10/14(Wed) ~ 2009/10/16(Fri) の検索キーワードの 20% を Google postini の障害関係が占めました。(その他に紛れてるキーワード含む)

System 7 は北米ユーザに使われているため日本にはユーザがいなさそうというのが理由なのか、日本のどこのメディアもニュースにしなかったようで、うちが上位に表示されちゃう始末。はずかしいな…。

google postini outage - Google Search だともう少しマシな記事がでるようです。

postini 使われてないんですかねぇ。

Windows 7 で ReadyBoost やってみた

Acer Aspire One D250 (AOD250) のメモリカードスロット(all in one カードリーダ)を一度も使ったことが無いのに気づいたので、SDHC カードを買って ReadyBoost をやってみた。

上海問屋のセレクトで買ったら Transcend Class6 8GB が届いた。上海問屋セレクトは何が来るか分からないのが恐楽しい。あんまりガッカリするのは来ないと思うけど、たぶん。

CrystalDiskMark でベンチ取ってみたら、速度はいまいちな感じ。ReadyBoost にギリギリ使えるという程度。Class 6 ではそんなもんなのかなぁ。カードリーダが腐ってるのかなぁ。

random アクセスとかなんでこんなに遅いんでしょうね。
ぼく自身の認識の問題だけども、ほんと、SSD のときもそうだったけど、フラッシュメモリが速いなんていう幻想は捨てなきゃいけないな。…というか妄想幻想で期待し過ぎなんですけども。ま、値段も値段ですしね。

SDHC ReadyBoostとにかくさておき、ReadyBoost を設定してみた。

Windows 7 の ReadyBoost では、Vista のときあったような容量やデバイス数の制限は取っ払われたそうだ。

フォーマットは FAT32, exFAT, NTFS が使えて、どれが良いという結論は無いっぽい。少しぐぐってみたところ、「ReadyBoost として使えたならどれでも良し」という感じのようだ。 Vista の時の情報では Microsoft は NTFS で ReadyBoost をテストしていないなんて情報もあった。

動けばおkなら、ぼくとしてはわざわざ FAT 系を選ぶ理由も無いから NTFS にした。

割り当てる容量は物理メモリの 2倍あれば良し、3倍あれば尚良しという感じらしい。

そもそも ReadyBoost.sfcache がどんな用途に使われるのか、どの資料を読んでも明確には判然としない。Superfetch の結果がキャッシュされるとか、page file がキャッシュされるとか、あらゆる HDD へのアクセスがキャッシュされるとか、まぁとにかくそんな感じらしい。

ぼくはこの SDHC カードを他で使う予定もないので ReadyBoost 専用に設定してみたところ、実効容量 7.46GB 中 7.39GB の ReadyBoost.sfcache が出来上がって、5.28MB が余った。なんか微妙な余り具合…。

さて、肝心の効果の程は…はっきりいってイマイチ分からない。

昨日設定したばかりだし。そもそもこんなおもちゃ Netbook でごりごり作業なんてしないし…。物理メモリを 2GB に増設してみたけど、出荷時の 1GB だったときでも、そんなに困っていたわけでもない。(・∀・;)

そんなわけで、なにか目に見えて効果があったりしたらまた書くかも知れない。書かないかも知れない。

追記@Mon Oct 19 09:17:38 2009

そういえば不満が一つあったので追記。

メディアを ReadyBoost 専用として使う場合でも drive letter を割り当てなければいけないようだ。割り当て無しと junction point に mount した場合を試してみたけど ReadyBoost のタブが出てこなかった。ユーザアプリケーションじゃないんだから、drive letter なんかいらんだろうに。ぶつぶつ…。

関連

2009-10-15

nerrasssx.co.uk

昨日から届きはじめた phishing メールなんだけど…

$ whois nerrasssx.co.u

    Domain name:
        nerrasssx.co.uk
- snip -
    Relevant dates:
        Registered on: 14-Oct-2009
        Renewal date:  14-Oct-2011
        Last updated:  14-Oct-2009
- snip -

釣りまくるために登録したんですかね…。

$ host non-existent.example.net.nerrasssx.co.uk
non-existent.example.net.nerrasssx.co.uk has address 59.115.87.245
non-existent.example.net.nerrasssx.co.uk has address 77.52.27.221
non-existent.example.net.nerrasssx.co.uk has address 93.173.242.168
non-existent.example.net.nerrasssx.co.uk has address 121.162.21.166
non-existent.example.net.nerrasssx.co.uk has address 121.177.253.53
non-existent.example.net.nerrasssx.co.uk has address 124.122.220.54
non-existent.example.net.nerrasssx.co.uk has address 190.0.167.217
non-existent.example.net.nerrasssx.co.uk has address 190.160.9.94
non-existent.example.net.nerrasssx.co.uk has address 190.226.113.30
non-existent.example.net.nerrasssx.co.uk has address 211.225.240.192
non-existent.example.net.nerrasssx.co.uk has address 218.37.82.155
non-existent.example.net.nerrasssx.co.uk has address 218.165.217.216
non-existent.example.net.nerrasssx.co.uk has address 221.157.184.47
non-existent.example.net.nerrasssx.co.uk has address 222.97.131.193
non-existent.example.net.nerrasssx.co.uk has address 222.237.27.83

どんなホスト名もお返事するようです。

All of our trap domains are seeing a new spam campaign today where the website being spammed actually SEEMS to be the email recipient's own domain.

2009-10-14

postini system status

Google postini の一部が障害に見舞われているみたいです。

使ってる postini system を特定する

自ドメインのメール配送に使われている system は、MX レコードを調べれば分かる。
うちのドメインの場合、

$ host -t mx hoso.net 
hoso.net mail is handled by 10 HOSO.NET.S9A1.PSMTP.COM. 
hoso.net mail is handled by 20 HOSO.NET.S9A2.PSMTP.COM. 
hoso.net mail is handled by 30 HOSO.NET.S9B1.PSMTP.COM. 
hoso.net mail is handled by 40 HOSO.NET.S9B2.PSMTP.COM.

MX レコードのホストに含まれている S9 がそれ。System 9 を使っている。

postini system の status を調べる

Status for System 9 / Postini Portal - System Status
http://www.postini.com/support/systemstatus_ext.php?system=9

URL 末尾のクエリ文字列に system の番号を指定します。

今回障害が起きている System 7 の status では、Email Delivery Status に Secondary Data Center Enabled / The Secondary Data Center has been enabled and the primary data center is offline. という表示がでていますね…。

たまに、postini のサーバに呑まれて 10分くらい出てこないメールを見かけることがありますけれど、こんなに障害になったのを見たのは初めてな気がする。

Google Apps Premier で postini を利用しているユーザでは、Postini Support Portal に入れないようなので情報が得られなくて不便な感じ。postini だって Apps Premier のサービスの一つなんだから、Apps Status Dashboard に載せてくれるとありがたいんですけども。

追記@Wed Oct 14 15:50:08 2009

We also realize that we should have provided more information about the issue through the Forum, rather than only on the Postini Support Portal. Moving forward, we will post status updates as soon as they are available to this Forum.

追記@Thu Oct 15 00:01:16 2009

追記@Thu Oct 15 17:26:58 2009

incident report が公開されています。

The root cause of the delivery problem was an unintended side effect of a filter update, compounded by database issues that further slowed message processing.

フィルタのアップデートとそれに刺さるメッセージが引き金になって過負荷状態となり、さらに電源系の障害が併発して今回の障害に陥ったとのこと。

情報公開が遅い・無いことをフォーラムでぼろくそに言われてたので、フォーラムはもちろん Apps Status Dashboard への掲載と電話対応も含めて改善していくとのことです。

追記@Tue Mar 02 04:54:40 2010

Easily check Google Apps and Postini status here: www.google.com/appsstatus

Postini Services のステータスが Apps Status Dashboard で見られるようになった。

2009-10-13

search box から administrator 権限で実行

search box

Windows orb の search box でコマンド名入力して実行するときに、Ctrl + Shift + Enter すると administrator 権限で実行されるんだそうな。

administrator cmd box

この search box はめちゃくちゃ便利だな…。ぼくは他の launcher を使ったりせずにスタートメニューをキーボードで操作するひとですけれど、Windows 7 のスタートメニューもキーボード主体で使っている人にはかなり使い易い部類なんじゃなかろうか。これまで検索機能なんて OS のインストール後まっさきに無効化したりアンインストールしてたから気づかんかった。もったいない。

Windows 7 のデスクトップにもだいぶ慣れてきました。メインマシンを Windows 7 にするのはもうしばらく先ですけれど…。

2009-10-08

AOD250 のメモリを 2GB に換装してみた

BIOS

Acer AspireOne D250 (AOD250) のメモリを 2GB に載せ替えてみた。

買ったのは BUFFALO ノートPC用増設メモリ PC2-6400 (DDR2-800) 2GB D2/N800-2G/E この 2GB のやつ。

ぼくはハードウェアが大嫌いで(壊れるから)、こういうちっこい Netbook のメモリ載せ替えなんて、どんな面倒な仕打ちが待ってるんだろうと戦々恐々としてましたが、あっさり簡単に換装できたので、メモもあっさり簡単に書いとこうと思います。

メモリふた

まず OS を shutdown して、電源抜いて、 バッテリ抜いて引っくり返す。

真ん中のシールはがす。小さめのプラスネジがあるので外す。

これシール外すとメーカの保証無くなります。気にしない。

この写真の向きで、奥と手前にツメがあるので、右下のミゾにマイナスドライバを差し込んで上向きに力加えて、フタをぱこっと引っこ抜く。

メモリのツメ

フタを外したら、両脇のツメを外側に押してメモリを浮かせる。

メモリ外す

で、上に持ち上げる。斜めにして、この写真で言う左上方向に引っこ抜く。

メモリのツメ合わせる

新しいメモリを差し込む。ツメと凹みのところを合わせてしっかり押し込む。

で、メモリを倒して、両脇のツメがしっかりはまってるのを確認しておしまい。

View basic information about your computer

BIOS の設定をリセットして設定し直して、page file と hibernation file を作り直して完了。

ほっ。しかし、こんな簡単ならもっと早くやっときゃ良かった…。

Windows 起動してから Experience Index 測り直したら下がっちゃった。メモリじゃなくて Graphics の項目が。。。でも見なかったことにする、と。

2009-09-15

CSS でヘッダ要素にカウンタ

これやってみたかったんだ。早速まねっこ。

h4

h5
h5

h4

h5
h5

h4

h5
この書き方だと、番号振りたくないときとかちょっと柔軟性に欠けるけど、手間だからいいや…。

2009-09-10

read more

Blogger も標準で「続きを読む」が書けるようになった。らしい。

2009-08-20

新版暗号技術入門 秘密の国のアリス

新版暗号技術入門 秘密の国のアリス、購入から 5 ヶ月経ってようやく読了。

これまでだいぶ長いこと曖昧な理解のままにしてきた暗号技術について、身近で使われる PGP, SSL/TLS の仕組みについて、靄が晴れるようにすっきりと理解できたと思う。

少しずつ読み進めて、時には睡眠誘導剤になったりw、理解の浅かったところを読み返しながらでしたけれど、ほんとうに読み易かった。

親切な作りというんでしょうか、章立ても、各パラグラフも、読者を決して置いてけぼりにしない、不安にさせない心配りが随所にあって、この著者(結城浩さん)の本ならば、どんな分野でも理解できちゃうんじゃないかと思ってしまうくらい。

ポイントごとに参考文献の紹介も挟まれており、更に理解を深めたい向きへの配慮も忘れられていません。(もちろん巻末にもまとめられている)

些細なことかも知れないけれど、索引も良かった。 読んでる最中には索引を引かず、ページを繰って読み返して理解を深めることにして、読了後に初めてじっくり索引を見ました。ほんとうは索引を引きたかったところも、ちょっと我慢して。期待してたんです、索引に。この著者の索引は、きっと「使える」索引だろうと。思ったとおりでした。形だけじゃない、実用的な索引でした。

ぼくはまったく数学が得意なほうではないのに、ここまできちんと読ませる著者の文章力・構成力はすごいと思う。ぼくは結城さんのファンなので多少バイアスかかってるかも知れないけど。

前から気になってた数学ガール のシリーズも読んでみる予定です。数学好きになっちゃったりしてね。

内容とは関係ないけど、この本の背表紙の製本方法(?)は、(名称は忘れちゃった)ちょっと特殊なものらしく、著者と編集者のこだわりの作りなんだなぁと感じました。読み易いし使い易いです、物理的な意味で。

2009-08-18

AOD250 のキーボードを US-ASCII 配列に換装してみた

AOD250 US-ASCII Keybaord

Acer AspireOne D250 (AOD250) のキーボードを、ヤフオクで買った US-ASCII 配列の英語キーボードに換装してみました。

英語キーボードは AOA150 用のものがそのまま使えます。A150, D150 は共通として売っているものが多いようなので、加えて D250 も共通の部品ということになると思います。

キーボードの外し方とコネクタの差し方は AOA150 と AOD250 は少し異なるようです。

キーボードの外し方

AOD250 キーボードを抑えるツメ

AOD250 の場合、キーボードを抑えている可動するツメは F8 キーの上にある一カ所だけです。

加えて、キーボードの両サイドに二カ所ずつ、固定のツメがあります。

外すためのポイントは、F8 キー上のツメを液晶側へ押しながら、キーボードを∩状にたわませることです。

F8 キーのすぐ隣りあたりにクレジットカード状のものを軽く差し込んで液晶側に倒し、キーボードが上へ浮き上がるように梃子の力を加えておきます。液晶は最大限に開いておくのが良いです。

その状態で、マイナスドライバなどのしっかり厚みと幅のあるもので F8 キー上のツメを液晶側に押してあげると、キーボードが∩状にたわんで、「ぽこっ」と浮きます。

F8 キー上のツメから外れたら、あとは∩状のたわみを維持しながら、両サイドのツメから抜き出すだけです。

コネクタの差し替え

コネクタを抑えるツメ

キーボードを浮かせたら、こんどはキーボードと本体を繋いでいるリボン状のケーブルをコネクタから外します。

AOA150 では「コネクタで挟んである」ようですが、AOD250 は違いました。挟んであるのは同じなのですが、解放するには、コネクタの両サイドにあるツメをスライドさせます。

両サイドのツメをスライドさせると、するっと抜けます。

接続するときも同様に、ケーブルをしっかり奥まで入れてから、ツメをスライドさせて固定します。

キーボードの戻し方

戻すのは簡単で、すべてのツメにはまるように押し込むだけです。

…中のリボン状のケーブルが変な形に折れないことを祈りながら。(-人-)

参考サイト

2009-08-10

espresso-mode

espresso-mode is a Javascript-mode for GNU Emacs.

これくらいシンプル(?)なモードも良い気がしてきた。ちょっと使ってみようかな。js2-mode の高機能 + 柔軟なインデンテーションに慣れていると厳しいかな…。

追記@Tue Mar 02 07:49:49 2010

Emacs 23 くらいから espresso-mode は javascript-mode と名前を変えて標準ディストリビューションの lisp/progmodes/js.el に含まれています。
espresso-なんたらの prefix が js-なんたらに変わった程度の変更なので、単純に prefix を置換すれば周辺の elisp も動くようです。

2009-08-01

NTEmacs 23 を作ってみたメモ。

NTEmacs 23.1

Emacs 23.1 がリリースされたので、Windows 用の NTEmacs 23.1 をビルドするときの個人的な手順メモ。

IME 対応などのパッチを使わない点を除けば、上記のページで広松さんが公開してくださっている手順と同じです。

ほかの部分も、ぼくが NTEmacs 22 を作っていた上記の手順とだいたい同じです。

Cygwin

コンパイルには Cygwin 1.5 の gcc 3.4.4-3, MinGW パッケージ, GNU Make 3.80 を使います。

$ uname -a
CYGWIN_NT-5.1 aspirin 1.5.25(0.156/4/2) 2008-11-18 15:24 i686 Cygwin

$ gcc --version
gcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ make --version
GNU Make 3.80
Copyright (C) 2002  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

$ cygcheck -s | egrep '^(gcc|mingw|make)'
gcc                     3.4.4-3
gcc-core                3.4.4-3
gcc-g++                 3.4.4-3
gcc-mingw               20040810-1
gcc-mingw-core          20050522-1
gcc-mingw-g++           20050522-1
make                    3.80-1
mingw-bzip2             1.0.5-3
mingw-libbz2-devel      1.0.5-3
mingw-libbz2_1          1.0.5-3
mingw-runtime           3.15.2-1
mingw-zlib              1.2.3-3
mingw-zlib-devel        1.2.3-3
mingw-zlib0             1.2.3-3

Cygiwn 1.5 は UTF-8 Cygwin の cygwin1.dll を利用させてもらっています。たぶん NTEmacs のビルドには関係ないですが。
Cygwin 1.7 は現時点でリリースされておらず、環境を作っていないので状況は分かりません。もうすぐリリースなのかな。もう MinGW アプリケーション作れるのだろうか…。

gcc は alternatives 対応直前の gcc-3.4.4-3 を使います。一連の gcc のパッケージのバージョンを keep しておきます。 
gcc-3.4.4-999 を使う場合には alternatives の symlink (ショートカット)をどうにかするか、configure.bat を修正して、COMPILER=gcc-3 を指定する必要があると思います(未確認)。
gcc-4 系は現時点では MinGW アプリケーションを作るための "-mno-cygwin" フラグがサポートから外されているので使用できません。

MinGW はどのパッケージが最低限必要なのか調べていないので、mingw と名のつくパッケージを適当に…。

GNU Make は、emacs/nt/INSTALL によれば 3.81 は使えないらしいので 3.80 に keep してあります。

その他の Cygwin のパッケージは、サーバ系と X 関係、フォント、グラフィック関係を除いて自分が使うものをテキトーに入れてます。

画像サポート用のライブラリ DLL

emacs/nt/INSTALL の "* Optional image library support" を参考にして、DLL とヘッダファイルを用意します。

実験的サポートの SVG は入れてません。

$ \ls -Rgo src/GnuWin32
src/GnuWin32:
total 3524
drwx------+ 3      0 Feb  8 16:57 DLL
-rwx------+ 1 189242 May 15  2005 jpeg-6b-4-bin.zip
-rwx------+ 1  38186 May 15  2005 jpeg-6b-4-lib.zip
-rw-r--r--  1 401037 Jun  5 05:53 libpng-1.2.37-bin.zip
-rw-r--r--  1 134939 Jun  5 05:55 libpng-1.2.37-lib.zip
-rwx------+ 1 285963 Mar  2  2007 libungif-4.1.4-1-bin.zip
-rwx------+ 1  12272 Mar  2  2007 libungif-4.1.4-1-lib.zip
-rwx------+ 1 928480 Mar  2  2007 libungif-4.1.4-1-src.zip
-rwx------+ 1 687244 Mar 31  2006 tiff-3.8.2-1-bin.zip
-rwx------+ 1  38372 Mar 31  2006 tiff-3.8.2-1-lib.zip
-rwx------+ 1  35884 Feb 15  2005 xpm-3.5.1-1-bin.zip
-rwx------+ 1  42484 Feb 15  2005 xpm-3.5.1-1-lib.zip
-rwx------+ 1 622191 Feb 15  2005 xpm-3.5.1-1-src.zip
-rwx------+ 1  99777 Jul 26  2005 zlib-1.2.3-bin.zip
-rwx------+ 1  71569 Jul 26  2005 zlib-1.2.3-lib.zip

src/GnuWin32/DLL:
total 1297
drwx------+ 2      0 May  9  2008 X11
-rwx------+ 1  16189 Oct 25  2005 gif_lib.h
-rwx------+ 1   1800 May 14  2005 jconfig.h
-rwx------+ 1  14488 May 15  2005 jerror.h
-rwx------+ 1  14567 May 14  2005 jmorecfg.h
-rwx------+ 1 127488 May 15  2005 jpeg62.dll
-rwx------+ 1  46359 May 15  2005 jpeglib.h
-rwx------+ 1   2245 Jun  4 22:41 libpng12-config
-rwx------+ 1   4645 Jun  4 22:55 libpng12.def
-rwx------+ 1 260096 Jun  4 22:48 libpng12.dll
-rwx------+ 1 376832 Mar 28  2006 libtiff3.dll
-rwx------+ 1  31232 Mar  1  2007 libungif4.dll
-rwx------+ 1 153839 Jun  4 22:40 png.h
-rwx------+ 1  45382 Jun  4 22:40 pngconf.h
-rwx------+ 1   4959 Oct 25  2004 simx.h
-rwx------+ 1  33725 Dec 27  2005 tiff.h
-rwx------+ 1   2968 Mar 23  2006 tiffconf.h
-rwx------+ 1  23216 Mar 28  2006 tiffio.h
-rwx------+ 1    410 Mar 23  2006 tiffvers.h
-rwx------+ 1  52224 Feb 13  2005 xpm4.dll
-rwx------+ 1  75264 Jul 20  2005 zlib1.dll

src/GnuWin32/DLL/X11:
total 16
-rwx------+ 1 16286 Jan 25  2004 xpm.h

Emacs のソースのチェックアウト

リリースの tarball を入手するか、CVS / git リポジトリから emacs モジュールをチェックアウトします。

Emacs 23.1 で使用する branch は EMACS_23_1_RC です。

CVS
$ cd ~/src/anoncvs
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs \
> checkout emacs
$ cd emacs
$ cvs update -r EMACS_23_1_RC
git
$ cd ~/src/git
$ git clone git://git.savannah.gnu.org/emacs.git
$ cd emacs
$ git checkout --track origin/EMACS_23_1_RC

gmake.defs の修正

Cygwin 環境でビルドするために nt/gmake.defs を修正します。Cygwin で検索すると出てくるので分かりやすいです。

$ cd nt
$ git --no-pager diff gmake.defs
diff --git a/nt/gmake.defs b/nt/gmake.defs
index 018ca15..d860c42 100644
--- a/nt/gmake.defs
+++ b/nt/gmake.defs
@@ -84,9 +84,9 @@ MAKETYPE=gmake
 # remedied before putting this cygpath kludge back in.

 # Convert CURDIR to native file name, if in Cygwin format
-#ifeq "$(shell cygpath $(CURDIR))" "$(CURDIR)"
-#CURDIR                := $(shell cygpath -m $(CURDIR))
-#endif
+ifeq "$(shell cygpath $(CURDIR))" "$(CURDIR)"
+CURDIR         := $(shell cygpath -m $(CURDIR))
+endif

 THISDIR                = .

@@ -276,7 +276,7 @@ ifeq "$(ARCH)" "i386"
 ifdef NOOPT
 ARCH_CFLAGS     = -c $(DEBUG_FLAG) $(NOCYGWIN)
 else
-ARCH_CFLAGS     = -c $(DEBUG_FLAG) $(NOCYGWIN) $(MCPU_FLAG) -O2 \
+ARCH_CFLAGS     = -c $(DEBUG_FLAG) $(NOCYGWIN) $(MCPU_FLAG) -O3 \
                  # -fbuiltin \
                  # -finline-functions \
                  # -fomit-frame-pointer

上記後半の -O3 optimization の修正と、以下の configure.bat の修正は必要なわけではないです。

$ git --no-pager diff configure.bat
diff --git a/nt/configure.bat b/nt/configure.bat
index 56b8570..21e683a 100755
--- a/nt/configure.bat
+++ b/nt/configure.bat
@@ -325,10 +325,10 @@ set COMPILER=gcc
 echo Using 'gcc'
 rm -f junk.c junk.o
 Rem It is not clear what GCC version began supporting -mtune
-Rem and pentium4 on x86, so check this explicitly.
+Rem and prescott on x86, so check this explicitly.
 echo main(){} >junk.c
-echo gcc -c -O2 -mtune=pentium4 junk.c >>config.log
-gcc -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1
+echo gcc -c -O3 -mtune=prescott junk.c >>config.log
+gcc -c -O3 -mtune=prescott junk.c >>config.log 2>&1
 if not errorlevel 1 goto gccMtuneOk
 echo The failed program was: >>config.log
 type junk.c >>config.log
@@ -336,8 +336,8 @@ set mf=-mcpu=i686
 rm -f junk.c junk.o
 goto gccdebug
 :gccMtuneOk
-echo GCC supports -mtune=pentium4 >>config.log
-set mf=-mtune=pentium4
+echo GCC supports -mtune=prescott >>config.log
+set mf=-mtune=prescott
 rm -f junk.c junk.o
 :gccdebug
 rem Check for DWARF-2 debug info support, else default to stabs

なんでいじったのか覚えていないけど、たぶん Cygwin 1.5 の gcc-4 が使えるようになるのを期待して準備していたような…。 make 時に ARCH_CFLAGS を指定するほうが綺麗なのかも。

configure

$ cd ~/src/git/emacs/nt
$ LANG=C ./configure.bat --with-gcc --no-cygwin --no-debug \
> --cflags=-I/cygdrive/c/Users/yu-ji/src/GnuWin32/DLL \
> --prefix=C:/emacs/23 \
> 2>&1 | tee config.log.yu-ji

うまくいけば "building with PNG support" とかの表示とともに makefile ができあがります。

make して install

$ LANG=C make bootstrap
$ LANG=C make info
$ LANG=C make install

info を作るとき以外は LANG=C の指定いらないかも。tarball からのインストールなら bootstrap は不要らしいです。

bootstrap のあと、../src/oo-spd/i386/emacs.exe が出来てるはずなので -q つけて起動したりして、ちゃんと動くか確認します。

画像用の DLL を PATH の通ったディレクトリか emacs.exe と同じディレクトリにコピーして、NTEmacs 自体のインストールはこれで完了です。

その他の elisp とか

以下はぼくが使っている elisp とかのインストール手順メモ。

emacs-clientw.vbs

上記ページを参考にして emacs-clientw.vbs を使っています。
Emacs の server がいれば emacsclientw -n を、いなければ runemacs するスクリプトです。

'
' C:\emacs\23\bin\emacs-clientw.vbs
'
Set objShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

If WScript.Arguments.Count = 1 Then
  strComputer = "."
  Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
  Set colItems = objWMIService.ExecQuery("Select * From Win32_Process")
  Dim isRunning
  isRunning = False
  For Each objItem in colItems
    If InStr(objItem.CommandLine, "emacs.exe") Then
      isRunning = True
    End If
  Next
  If isRunning Then
    objShell.Run("""" & fso.GetParentFolderName(WScript.ScriptFullName) & "/emacsclientw.exe"" -n """ & WScript.Arguments(0) & """")
  Else
    objShell.Run("""" & fso.GetParentFolderName(WScript.ScriptFullName) & "/runemacs.exe"" """ & WScript.Arguments(0) & """")
  End If
Else
  objShell.Run(fso.GetParentFolderName(WScript.ScriptFullName) & "/runemacs.exe")
End If

個人的には Emacs の外からファイルを開かせることはそれほど無いのですが、やっぱり使えないと困るときもあるので。

APEL

Daredevil SKK で使われている APEL

$ cd ~/src/anoncvs/apel
$ cvs update -dP
$ cvs diff -u makeit.bat | nkf -w
Index: makeit.bat
===================================================================
RCS file: /cvs/root/apel/makeit.bat,v
retrieving revision 1.1
diff -u -r1.1 makeit.bat
--- makeit.bat  1 Feb 2001 03:19:36 -0000       1.1
+++ makeit.bat  25 Mar 2009 01:27:54 -0000
@@ -102,9 +102,10 @@
 rem --- なお、DEFAULT_MAKE_ARG に可能な値は make1.bat を御覧ください。
 rem --- (Please see make1.bat for possible values of DEFAULT_MAKE_ARG.)

-set PREFIX=
-set EMACS=
-set LISPDIR=
+set PREFIX=c:\emacs
+set EMACS=%PREFIX%\23\bin\emacs.exe
+set LISPDIR=%PREFIX%\site-lisp
+set VERSION_SPECIFIC_LISPDIR=%PREFIX%\23\site-lisp
 set DEFAULT_MAKE_ARG=


$ ./makeit.bat install
Daredevil SKK / ddskk

Emacs 内では ddskk を、Windows の他のアプリケーションでは skkime を使っています。

$ cd ~/src/anoncvs/skk/main
$ cvs update -dP
$ cvs diff -u makeit.bat | nkf -w
Index: makeit.bat
===================================================================
RCS file: /circus/cvsroot/skk/main/makeit.bat,v
retrieving revision 1.4
diff -u -r1.4 makeit.bat
--- makeit.bat  3 Oct 2008 15:03:39 -0000       1.4
+++ makeit.bat  25 Mar 2009 01:39:39 -0000
@@ -102,9 +102,10 @@
 rem --- なお、DEFAULT_MAKE_ARG に可能な値は make1.bat を御覧ください。
 rem --- (Please see make1.bat for possible values of DEFAULT_MAKE_ARG.)

-set PREFIX=
-set EMACS=
-set LISPDIR=
+set PREFIX=c:\emacs
+set EMACS=%PREFIX%\23\bin\emacs.exe
+set LISPDIR=%PREFIX%\site-lisp
+set VERSION_SPECIFIC_LISPDIR=%PREFIX%\23\site-lisp
 set DEFAULT_MAKE_ARG=


$ ./makeit.bat install
color-theme

site-lisp 以下に展開するだけ。

emacs-w3m
$ cd ~/src/anoncvs/emacs-w3m
$ cvs update -dP
$ ./configure \
> --with-lispdir=/cygdrive/c/emacs/23/site-lisp/w3m \
> --infodir=/cygdrive/c/emacs/23/info \
> 2>&1 | tee config.log.yu-ji
$ make
$ make install
Mew
$ cd ~/src/anoncvs/mew
$ cvs update -dP
$ ./configure \
 --prefix=/cygdrive/c/emacs/23 \
 --with-elispdir=/cygdrive/c/emacs/23/site-lisp/mew \
 --with-etcdir=/cygdrive/c/emacs/23/site-lisp/mew/etc \
 --infodir=/cygdrive/c/emacs/23/info \
 --mandir=/usr/man \
 2>&1 | tee config.log.yu-ji
$ make
$ make install && make install-info && make install-jinfo

info を自分で作るときは info/Makefile を修正したり、Cygwin じゃなくてコマンドプロンプトから作ったりの手順が必要っぽいです。環境によるかも。ちゃんと調べてないですが。

おしまい。

別の記事で載せてるフォント指定の設定はそのうち整理します。

関連記事

追記@Sun Aug 30 18:17:22 2009

「Emacs 23 で使用する branch は EMACS_23_1_RC」と書いてたのを修正。23.2 で新しい branch を切るか、このまま trunk から出すか、まだ決まってないっぽいです。メンテナは trunk からのつもりっぽい?

追記@Mon Jul 05 10:11:06 2010

この記事は Cygwin 1.5 の gcc 3 系を使って MinGW アプリケーションとして Emacs をビルドするものです。
Cygwin 1.5 の gcc 4 系および Cygwin 1.7 の gcc は MinGW アプリケーションのコンパイルをサポートしていません。

新たにビルド環境を整えるかたには、MSYS + MinGW によるビルドをお薦めします。

"msys mingw gcc emacs" あたりでぐぐってくだささい…。

2009-07-31

yahoo.co.jp による SPF テスト

Yahoo! Japan からのバックスキャッタが続くわけですが…。

X-YahooFilteredBulk: 115.83.181.158
X-Originating-IP: [115.83.181.158]
Return-Path: <johndoe@hoso.net>
Received-SPF: unknown (msa.hinet.net: domain of johndoe@hoso.net encountered
  an error while parsing (check SPF record hoso.net for errors))
Authentication-Results: mta315.mail.ogk.yahoo.co.jp
  from=hoso.net; domainkeys=neutral (no sig)
Received: from 115.83.181.158  (HELO msa.hinet.net) (115.83.181.158)
  by mta315.mail.ogk.yahoo.co.jp with SMTP; Fri, 31 Jul 2009 12:01:30 +0900
Reply-To: johndoe@hoso.net
From: 小田<johndoe@hoso.net>
Subject: マイケルジャクソン記念
Date: Fri, 31 Jul 2009 12:02:23 +0900
MIME-Version: 1.0
Content-Type: text/plain;
	charset="shift_jis"
Content-Transfer-Encoding: 7bit
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook Express 6.00.2800.1081
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1081

せっかく SPF テストしてるんだから、もう少し頑張って欲しい。

Received-SPF: unknown (msa.hinet.net: domain of johndoe@hoso.net encountered
  an error while parsing (check SPF record hoso.net for errors))

いや、おまえ、そのうんこパーサを先にチェックしろよ。そのパーサが SPF レコードをうまく扱えない可能性がないかどうかを先にチェックしていただきたくお願いいたします。

2009-07-24

TELEPHONE LOCATION SIGN

Gmail labs の Sender Time Zone で表示される、

Gmail TELEPHONE LOCATION SIGN

このなんか丸いやつ、これ、なんだろうとふと思って拡大してみたら、

TELEPHONE LOCATION SIGN \x{2706}, #x2706

受話器のマークだった。へー。

2009-07-09

Emacs 23.0.96 pretest

NTEmacs 23.0.96 20090709

Emacs 23.0.96 pretest が公開されました。

問題が無ければ 7/22 には 23.1 がリリースされるようです。

× MULTIPLICATION SIGN の文字幅が…という話題があった気がしますが、どうなったのかな。フォント指定を見直したら広い幅で表示されたりするのかしら。

2009-07-03

How to install ActiveState PDK license on linux

ActiveState の Perl Dev Kit を、バージョン 7系から 8系にアップグレードしたので新しいライセンスをインストール…しようとしたのですが、インストール方法が分からない。 前もやったはずなのに、なんか、もう、久しぶりですっかり忘れてしまっていた。

いかんなぁ(・∀・;)
たぶん、次も忘れると思うので、文字通り備忘のためのメモ。

ActiveState からダウンロードしてきたライセンスファイル自体が license installer の実行ファイルになってるんですね。

$ file PDK_Linux_x86_xxxxxxxxxx.bin
PDK_Linux_x86_xxxxxxxxxx.bin: ELF 32-bit LSB executable, Intel 80386, version 1 
(SYSV), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), stripped
$ chmod u+x PDK_Linux_x86_xxxxxxxxxx.bin
$ ./PDK_Linux_x86_xxxxxxxxxx.bin
ActiveState license installed successfully.
$ /opt/pdk/bin/perlapp --version
PerlApp 8.0.1 build 289861
Copyright (C) 1998-2009 ActiveState Software Inc. All rights reserved.
Standard license for John Doe <nobody@example.com>

ライセンスファイルに実行権つけて、PDK を使うユーザで実行してあげれば ok と。Windows にインストールしたライセンスから ActiveState.lic ファイルをコピーしてくるだけでも ok らしいです。

2009-07-02

Firefox 3.5 addons

リリースされたばかりの Firefox 3.5 にアップデートしたので、使っている addon をまとめなおしました。

Firefox 3.0.11 まで使っていた addon は以下のエントリに。

いくつか入れ替わっていますが、基本的にはあまり変わらず…かな。定番ばっかりだと思います。

Adblock Plus

http://adblockplus.org/

主に広告をフィルタするものだけど、それ以外にもとにかく目にしたくないものをなんでもフィルタ。

Delicious Bookmarks

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

ソーシャルブックマーク。
ソーシャルな使い方はまったくしないものの、この extension の出来が良くてすごく使い勝手が良いので、手放せなくなってしまった。

FaviconizeTab

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

タブの表示を Favicon だけに。
常時開いていて C-1 ~ C-4 あたりで使うようなタブで必携。

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 くらい。一筆落書にも使える。

Firesizer

ウィンドウを指定サイズに。
山椒小粒ピリリ系。

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/

Firefox の場合、IE と違ってわざわざ Google Toolbar を入れる必要は無い気がする。でも捨てられない自作の button / gadget があるので…。

Greasemonkey

http://www.greasespot.net/

JavaScript でごにょ。
なにかをごにょるときこれほど便利な extension は無い。

Hide Menubar

http://forum.moztw.org/viewtopic.php?t=15303

Alt 押したときだけメニューバーを表示。
山椒小粒ピリリ系。

IE Tab

http://ietab.mozdev.org/

Firefox の中で IE を使う。
無理して Firefox でなんでもやろうとするより日和ったほうが楽なことはいっぱいある。

Make Link

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

現在のページの URL やタイトルなどを好みの書式でクリップボードにコピー。似たような addon はいくらもあるけど、「好みの書式」というところがポイントです。

RequestPolicy

http://www.requestpolicy.com/

NoScript を捨てて使い始めました。NoScript は機能は過不足ないと考えていましたけど、RequestPolicy のほうがより適切な対応というか匙加減に思えたので。あと、やっぱり NoScript はもう信用できません。

SQLite Manager

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

SQLite のデータベースファイルをいじるのに手軽で便利です。データベースに繋ぐときには、普段は sql-sqlite モードやら sql-mysql モードなど、sqlite3 (1) や mysql (1) のフロントエンドになる Emacs のモードを使っていて、たまに楽したくなったときに、やっぱりこういうのは便利です。

Tab Mix Plus

http://tmp.garyr.net/

タブの挙動を細かく制御。
Firefox のバージョンアップ直後などに、それに対応したバージョンが AMO に無いときには、大抵サポートサイトのフォーラムに新しい開発版がアップロードされています。

TwitterFox

http://twitterfox.net/

Twitter のクライアント。Twitter 自体そんなに使いこんでいないからなんとも言えないけど…たぶん過不足ない機能。

Tumblr

http://www.tumblr.com/goodies

addon ではないですが、Tumblr の bookmarklet を使っています。

追記@Sat Jan 23 00:04:45 2010

2009-07-01

ActivePerl v5.10 + Windows CP932 (Shift JIS) 日本語ファイル名の扱い

自分用のメモ。

#!perl
# -*- mode: cperl; coding: utf-8-dos; -*-

#
# JapaneseFileName.pl
# ActivePerl v5.10 + Windows CP932 (Shift JIS) 日本語ファイル名の扱い
#

use 5.010;
use utf8;
use strict;
use warnings;

use Encode;
use IO::File;

# コマンドプロンプトで標準入出力・エラー出力を使う場合には、
# エンコーディングをコードページに合わせる
binmode $_, ':encoding(CP932):crlf'
  for qw(STDIN STDOUT STDERR);

my $filename_cp932 = shift @ARGV
  or die "ファイル名指定して";
my $filename = decode('CP932', $filename_cp932);
say "ファイル名: $filename";

say "内部形式でテスト: ", -e $filename ? 'あるよ' : 'ないよ';
say "CP932 でテスト: ", -e $filename_cp932 ? 'あるよ' : 'ないよ';
say -f _ ? 'ファイルだよ' : 'ファイルじゃないよ';
say -r _ ? '読めるよ' : '読めないよ';
say -w _ ? '書けるよ' : '書けないよ';

my $fh = IO::File->new($filename_cp932, '>:encoding(CP932):crlf')
  or die "$!";
$fh->print("CP932で書かれるよ ①~ \\n は CRLF \n");
undef $fh;

print "nkf: ";
system 'nkf', '--guess', $filename_cp932;

print "$ENV{COMSPEC} の type: ";
system $ENV{COMSPEC}, '/C', 'type', $filename_cp932;

print "$ENV{COMSPEC} の dir: ";
system $ENV{COMSPEC}, '/C', 'dir', '/B', $filename_cp932;

コマンドプロンプトでの実行結果

> dir /B "新規テキスト ドキュメント.txt"
新規テキスト ドキュメント.txt

> perl JapaneseFileName.pl ".\新規テキスト ドキュメント.txt"
ファイル名: .\新規テキスト ドキュメント.txt
内部形式でテスト: ないよ
CP932 でテスト: あるよ
ファイルだよ
読めるよ
書けるよ
nkf: CP932 (CRLF)
C:\WINDOWS\system32\cmd.exe の type: CP932で書かれるよ ①~ \n は CRLF
C:\WINDOWS\system32\cmd.exe の dir: 新規テキスト ドキュメント.txt

>

素直に使えそうで「ほっ」

追記@Fri Jul 03 04:56:35 2009

binmode $_, ':encoding(CP932):crlf'
  for qw(STDIN STDOUT STDERR);

の代わりに

use open IO => ':encoding(cp932)';
use open ':std';

のほうが良さそうですね。

locale support のある Linux やなんかだと

use open IO => ':locale';

として、何も考えなくても良さそう?

2009-06-27

ウサギの気持ちが 100% わかる本

ウサギの気持ちが 100% わかるようになった…かどうかは、ちょっとわからない、読む前より少しはわかるようになった気はする、でも、これはいい本だと思った。

少なくとも、マッサージでウサギを恍惚状態に陥れられる(?)のは スゲー と思った。極楽マッサージ恐るべし。

健康にいいツボとか、どこが極楽ポイントかとか書いてあって、ただなでるだけじゃないふれ合いができるようになったと思う。

マッサージしてあげると、床にぺったんこになったり、喉?歯?を鳴らしたり、ひくひく(?)したり、気持ち良さそうです。

なんか、前よりなついた気がする。というかデキた下僕になれた気がするw

動画は恍惚じゃないけど、はしゃぐうーちゃん。

2009-06-20

Emacs 23.0.95 pretest

Emacs 23.0.95 pretest が公開されました。もうしばらくしたら Emacs 23.1 の branch が切られるようです。

追記@Mon Jun 22 00:48:27 2009

EMACS_23_1_RC という branch ができました。trunk の EMACS_23_1_BASE tag から、ということかな。

Emacs 23.1 に向けて使いたいひとは EMACS_23_1_RC branch を使っていけば良いようです。EMACS_23_BASE とか EMACS_23_RC になるのかと思ってたんだけどな…。

2009-06-07

世界の Yahoo!

Yahoo! アクセス解析にでてきた「世界の Yahoo!」

世界の Yahoo!

ははは。この書き方にくすっときた。

2009-06-02

薬のネット販売

改正薬事法が施行されたので、Yahoo! Japan ショッピングのケンコーコム 医薬品 痛み止めカテゴリを見に行ったら、商品がすっからかんだった。ざっとみまわしてみても特に説明などは無し。

そんなもんなのかなと思いつつ、ケンコーコムに行ってみたら、「6月1日より 取り扱い 医薬品の範囲が変わります」との表示を発見。

ケンコーコムで販売される医薬品について - 【ケンコーコム】

第1類医薬品はネット販売ができなくなります。
第2類医薬品は5月31日までの購入者または離島にお住まいの方しかネットで購入できなくなります。
第3類医薬品は従来通りネットで購入することが可能です。

(略)

ケンコーコムは、第1類医薬品はネット販売しません。第2類医薬品は5月31日まで購入された方、または離島にお住まいの方のみに、ネット販売いたします(詳しくはこちら)。第3類医薬品は従来通りネット販売いたします。

以前に第2類医薬品をここで買っていれば継続して購入できるのね。

ケンコーコムのお客様へ - 【ケンコーコム】

追伸:今回の改悪省令の骨子が示されたのは5月11日、公布されたのは5月29日のことです。あまりに突然のことであり、継続購入に対する履歴確認を行うシステム上の仕組みが整っておりません。現在、急ピッチでシステム開発を進めています。
仕組みが完成するまで、第2類医薬品のネット販売はすべて一旦休止させていただきます。目安としては6月5日頃に販売を再開できる見込みです。ただし、販売が再開できても、継続購入の方、離島にお住まいの方のみにしか販売できません。

Yahoo! Japan ショッピングのケンコーコムで買った分でも継続購入できるのかな?

とりあえず、456 ショッピングでアスピリンを買っときました。価格や容量を比較していくつかのサイトをまわってみたけども、なんか、いろんな意味で、ぼくの場合は今後も個人輸入で良い気がしました。

改正薬事法のもとでは、店頭販売であれば薬剤師がいなくても「登録販売者」がいれば一般用医薬品(処方箋無しで購入できる医薬品・OTC 医薬品)の 9割を販売できるのだそうで。スーパーやコンビニなどの参入があって価格競争がはじまるだろうとのニュースもありました。

でも、価格競争っていってもねえ。ネットで検索しても価格が出てこない・価格比較もできないってんじゃ、10年前の買い物かよ!ってなもんで、一消費者としてはあんまりやる気がでないですね。巣ごもりひっきーとしては尚更。

出先で薬局を探さなくっても、そこらへんのコンビニで頭痛薬を買えるくらいになるんだったら、ちょっといいかなとは思いますけどね。セブンイレブンの麹町駅前店ではすでに買えるようで。だけど、どこのコンビニでも 24時間資格者常駐っていうのはちょっと無いだろうなぁ。

ケンコーコムを応援しときつつ、しばらくは動向に注目しておこうと思います。

2009-05-27

ActivePerl 5.10.0 Build 1005 released

5.8.9.826 と共に 5.10.0.1005 がリリースされていました。OpenSSL 関係のモジュールのセキュリティ修正が含まれています。

上記の Change Log を含めウェブ上のドキュメントは、現時点ではまだ更新されていません。

Yahoo! Japan アクセス解析 使ってみた

2009年5月26日
これまでYahoo!ジオシティーズのジオプラス会員限定で公開していたYahoo!アクセス解析(ベータ版)を一般公開しました。Yahoo! JAPAN IDをお持ちであればどなたでも無料でお使いいただけます。
Yahoo!アクセス解析は、今後もコンバージョンの測定機能(2009年夏追加予定)をはじめとして、さまざまな機能の追加を予定しています。

使ってみた。

ざっとレポートを眺めてみたところ、わりとミクロな、細かいデータが見えるタイプのアクセス解析のようです。

この blog 程度の規模ならば見ていて楽しい(?)というか、なんだか昔ながらの懐しい分析な感じですね。Google Analytics のようなマクロな分析に慣れているとこういった細々としたレポートは煩わしいかも?

トラフィックや訪問者属性、ナビゲーション、経路分析など、ひととおりのレポートが揃っていて個人利用には必要十分で良い印象です。

ただ、せっかく Flash を使用しているのに大してそれが活かされたレポートを表示できるわけでもないし、レポートを切り替えるたびにページ遷移が発生するし、メニューがうんこすぎでクリック数が多い上に項目の開閉によってマウスのポイントがずれたり(逃げたり)、作りとしては残念な出来。

導入はすごく簡単で、登録するサイトの URL と名前(プロジェクト名)を入れて、自分のページにスニペットを挿入するだけです。さすが Yahoo! このお手軽さや良し。

2009-05-25

Emacs 23.0.94 pretest

Emacs 23.0.94 pretest が公開されてました。

目下のところ、line-move-visual のデフォルト値が t となっていることが議論を呼んでいるようです。 慣れればどっちでもいいわけで、気にくわなければ変えればいいわけで、きちんと読んでいないので、なにが問題なのか良く分からづ。

ぜんぜん blog 書いてないなぁ。。。

2009-05-02

Emacs 23.0.93 pretest

Emacs 23.0.93 pretest が公開されました。

Windows 用のバイナリはまだ。
NTEmacs も問題無く元気ですが、フォントまわりの設定をもういちど見直したいな…。

追記@Mon May 04 14:22:12 2009

Windows binary Index of /gnu/emacs/pretest/windows

2009-04-21

さよなら Page Creator

Google Page Creator がいよいよ終了するということで、GPC 上にホストしていたファイルを Sites に移したり、他所に移したり、引き上げたりしました。

まとめて管理していないから、自分でも、どこになにを、どのアカウントで置いてるのかを忘れてしまっていた…。自分ところのサーバに置いておけば見晴しは良いんですけど、もう、なんてか、細々がめんどくさく…。(・∀・;)

GPC はページからリンクされていなくっても単独でファイルをアップロードしておけたので、ちょっとしたファイル置場としては使い易かった。肝心のページ編集機能はかなり物足りないものだったので、たぶん、この一点でこれまで需要があったのじゃないかと。てか、それが Google がさっさと店仕舞いしたい理由の一つかも知れない。

ま、なんにしろ、長いことお疲れさまでシタ。

追記@Fri Apr 24 01:44:28 2009

2009-04-20

Realforce86U SE0500

りあふぉ買いました。りあふぉ。

Realforce86U FKBN87ML/EB

去年の 6月に乗り換えた FKBN87ML/EB (写真手前)には特別な不満もなく満足していたんですが、定期買い換えのついでに、予備もいっしょに買ったつもりで(金額的な意味で)、Realforce86U SE0500 (写真奥)に浮気してみました。

ちなみに、写真では分からないかも知れませんが、この FKBN87ML/EB は左 Ctrl キーが曲がってます。左下方向に。

どこが曲がったんでしょうね。基盤?まさか。スイッチ?まさかねえ。感覚的にはスイッチの軸かあるいはキートップ内の支えが曲がったような感じ。開けてまで調べはしませんけど。

PC の Ctrl キーは、ぼくは掌の小指付け根側で押す派なので、他のキーとは負荷が明らかに異なり、もっともヘタれやすいキー No.1 です。同型の前の一枚は、普通に良く使うキーのキータッチが一様にヘタれて取り換えたので、こんなヘタれかたをしたのには驚きました。初めての経験。

とはいっても、ぼくはキーボードは半年から一年も持てば良いと思っているので、これが FKBN87ML/EB の瑕疵だとは思っていません。FKBN87ML/EB は十分にぼくの要求に応える良キーボードです。 Realforce86U のエントリで書くことじゃないけどな。

てことで Realforce86U です。ぼく史上、初りあふぉです。

4月になってから使いはじめてのインプレッション。
FKBN87ML/EB との相対的な比較になっていると思います。

根本的な違いとして、FKBN87ML/EB がリニア(Cherry 黒軸)なのに対し、Realforce86U はソフトタクタイル風?(静電容量無接点方式、変加重)のスイッチです。

押下時にゆるいクリック感があります。タイプしていると、キーが戻ったときにキートップかスイッチがどこかが当たって音のする場合があります。この音さえ高級品っぽく聞こえてしまうけど、たぶん気のせいでしょうね。

FKBN87ML/EB の "87" と、Realforce86U の "86" の違いは、右 Windows キーの有無です。(ダイヤテックが限定販売している Realforce87U SE0700 / SE1700 には右 Windows キーがある)

ぼくは右の Shift, Alt, Win, Ctrl キーは一切使わないのでまったく影響無し。App キーは代替キーがないので右で使います。

まず感じたのが、Z から始まる最下段キーの異様なタイプのしやすさ。
まじで。なんなんだ、これは。

どんなキーボードでも、大なり小なりステップスカルプチャ的ななにかでキーの配置が考えられていると思いますけれど、ここまで手にフィットしたのは初めてかも知れない。

ステップスカルプチャというのは、この用語自体は意味不明ですが、キーボードの段ごと(1 の段、Q の段、A の段、Z の段がありますよね)に、キートップの形状、高さや角度を手や指に合わせて整える(変える)構造のことです。単純な段々になっているだけのものから、指の長さを考慮したもの、酷いものになると Natural Ergonomic人間工学に基づいて設計されたものなどがあります。些細なことと思われがちですが、これによってタイプのしやすさ、フィーリングががらっと変わります。

Realforce86U

それに加えて Realforce の特徴の一つであるキーの重さ(軽さ)。

たぶん、軽い順に、小指(1QAZ, 2WSX列と 0P;/列から右)、それ以外、ESC + SPC の三種類かな?小指のキーの軽さは、とてもタイプしやすいです。

一様な重さのキーボードでタイプしたあとに Realforce86U をタイプすると、気持ちが悪いくらいにその違いが分かります。良い意味で。

一方、スペースキーがダメです。重い。重すぎるよ。

他のキーが流れるようにタイプできる反動で、スペースをタイプするときにものすごい違和感を感じます。他のキーと比べて自然と強めの力で押下してしまうので、キーを放したときに鳴る音がすごく気になります。物理的に大きなキーだけに、音も一際大きいです。押下の重さと音の二点、これは正直、ぶっちゃけ、気が散ります。集中力が乱れます。それくらいイヤな感じ。

形状・長さは申し分ないんだけど。これも何かに裏打ちされた根拠のある重さなんだろうか?しばらく使って慣れれば平気ってのだと嬉しいんだけど…。

このスペースキーだけが、ほんとうに惜しいです。

関係ないところで、キーボード自体はけっこう重いです。ずっしり。古き良き時代のキーボードみたいな重量感が感じられます。キーの隙間から鉄板が見えてるしね。

こんなもんかな。いまのところまぁまぁの満足感だと思う。スペースキーさえ文句無ければべた誉めのはずでした。

残る評価は耐久性です。一年から二年は持ってくれると嬉しいな。値段的に。その前にスペースキーでウンザリして使うのを辞めてしまう可能性も捨てきれないけど。

言っても栓のないホントの本音を言えば、Ortek の今は無き MCK-86 みたいに、安価な良キーボードをばんばん使い倒して、半年ごとに新しい綺麗な打ち心地を楽しみたい。でも、もうそういう時代じゃないってことなんですかねえ。Realforce86U じゃ 4倍の値段だもんなあ…。

追記@Fri Mar 05 15:10:16 2010

2009-04-09

redo in Emacs

こういう記事っていつまで経っても読めると嬉しい。大歓迎。続きが楽しみです。

Emacs は学習曲線がなかなか落ち着かないエディタだと思う。かなり基本的な編集機能においても、使っている日々に新しい発見があったりする。Emacs Lisp を読んだり書いたり、様々なモードを使いはじめたりしたら、それこそもう天井が見える気がしない。初めて UNIX で Emacs に触れてから #x10 年くらいを経てもなお、です。ま、学習の方法が間違っていた可能性は否定しないけど。

Editors - The Random Musings of Maulkin
classical learning curves for some common editors

この曲線はネタですけど、他のエディタはともかく、Emacs については特徴を良くあらわしてるなぁと思う。

最近気づいて、調べてみて「へ~」と思ったのは、Emacs の redo 機能(編集を「やり直す」)について。

超入門の記事にもあるように、Emacs では編集を「元に戻す」とき、C-_ をタイプしてアンドゥ undo します。

標準のキーバインディングでは C-_ だけでなく、C-/ または C-x u または M-x undo RET またはもちろんメニューから Edit → Undo でもまったく同一の undo です。

歴史的経緯か、端末の機能によらず使えるようにするためか、はたまた何か他の理由でかは知りませんが、現在はどれも同じ undo です。

入門 GNU Emacs 第3版訳注では C-/ の使用をオススメしているように読めます。いちばんキー数が少ないですからね。

ぼくは当初 C-x u を使っていて、その後、C-_ を使うようになりました。実際のキーストロークは Ctrl + Shift + - で、意識的にタイプするには十分な「面倒さ」を備えた組み合わせだと思います。Windows の標準的なエディットコントロールで Ctrl + Z や ESC を押して編集を失ないイラッとした経験のある人には、この微妙な言い回しが分かってもらえるかと…。

繰り返し C-_ すれば、次々と編集を元に戻していきます。で、戻し過ぎて、「あ!ここまで戻すつもりじゃなかった!」となったときに肝心の redo 機能です。

redo というのは本質的には「undo で元に戻したその編集を、さらに undo する」ことなので、Emacs は特別には redo 関数を用意していません。Emacs では undo を使って redo します。ややこし…。
こう書くと面倒ですが、実際にはぜんぜんそんなことはなくって「さっきの undo はナシにして!」という意思を Emacs が汲み取ってくれます。Emacs はユーザが直前に何をしたのか?を調べて undo なのか redo なのかを判別するわけです。

C-_ で undo して「あ!」となったときには、落ち着いて C-g C-_ すれば redo になります。落ち着かずに慌てて C-g C-_ しても redo になります。

Emacs を使っていると、なにか間違ったことをしたときに C-g しちゃうクセがつきますから、すごく直感的ですよね。:)

simple.el の undo 関数まわりを読んでみると「へ~」ってなると思います。別に C-g じゃなくっても構わなかったりしますし。

追記@Mon Jul 05 10:18:54 2010

"redo emacs" を検索してこのページを開いたあなたがお探しの redo は、おそらく redo.el や undo-tree.el などでしょう。

Emacs 標準の undo に理解を深めることが目的でなければ、便利な elisp の導入をお薦めします。

2009-03-31

Emacs 23.0.92 pretest

NTEmacs 23.0.92 20090331

Emacs 23.0.92 pretest が公開されました。

23.0.91 pretest からの変更で、個人的に影響があったのはフォントまわりくらいかな…。

なんにしろ NTEmacs は今日もかわらずに元気です…。