2008-12-31

display-about-screen

2008年最後の Emacs 22 をビルド。

(emacs-version)
"GNU Emacs 22.3.1 (i386-mingw-nt5.1.2600)
 of 2008-12-31 on ASPIRIN"

Emacs 22.3 のリリース以降は、

2008-10-19  Stefan Monnier  <monnier@snip>

        * international/mule-conf.el: Fix last change.

2008-10-17  Stefan Monnier  <monnier@snip>

        * international/mule-conf.el (emacs-internal): New coding system alias.

2008-09-05  Chong Yidong  <cyd@snip>

        * Version 22.3 released.

というの以外に変更は無かったようです。ETC/NEWS には Emacs 22.4 の文字があるのでもしかしたらリリースされるのかな?

来年にはいよいよ Emacs 23 のリリースでしょうか。Cygwin も 1.5 系列が終わって新しい 1.7 がリリースされていそうだし…。Windows も新しいバージョンになっているかも。いろいろ変わりそうですね。

さっきたまたま気づいたけど、F1 C-a (display-about-screen) で表示される *About GNU Emacs* バッファは、フレームの大きさによっても fancy になったりならなかったりするんですね。

AboutGNUEmacs_20081231_Fancy AboutGNUEmacs_20081231

2008-10-05

ActiveState Perl Dev Kit 7.3 released

PDK 7.3 が出てた。
モジュールの依存関係解析の改善が主な変更点かな。日本語圏のユーザだと、このへんは自力解析して手動で追加しておくのが普通だと思うので(そうでないと動かないので)、ほとんど影響が無さそう。

2008-09-26

Firefox add-ons

使っている Firefox 用 add-on のリスト。
IE7 から Firefox3 へ本格的に移行してちょうど 3ヶ月。使い方もだいぶ落ち着いて、なにをするにも困らなくなってきたので、ほぼ自分用メモ。

Adblock Plus

http://adblockplus.org/

主に広告をフィルタするものだけど、それ以外にもとにかく目にしたくないものをなんでもフィルタ。
Java Script が動かなければそもそも広告が表示されないページも多いので、NoScript とセットで使えば、かなり選択的・限定的にフィルタできる。
cookie については Firefox 標準の機能で十分に制御できるのでそちらで。

Delicious Bookmarks

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

ソーシャルブックマーク。
ソーシャルな使い方はまったくしないものの、この extension の出来が良くてすごく使い勝手が良いので、手放せなくなってしまった。…それまで使ってた Google Bookmarks が Notebooks に統合されてあまりにうんこだったので余計に。

FaviconizeTab

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

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

FireGestures

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

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

Firebug

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

仕事柄定番。ノーコメント。

Firemacs

http://www.mew.org/~kazu/proj/firemacs/

Emacs 風のキーバインド。
わりと使い所がむずかしい。どこで使うか、なにを使うか、きちんと設定してあげれば大丈夫。常時・全機能を使うのは、キーボード操作前提の Ajax なページで悲しくなったり、Windows で Alt 食いあってしょんぼりするので無理。

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

Google Toolbar 3
http://www.google.com/tools/firefox/toolbar/FT3/intl/en/index.html
http://tools.google.com/firefox/toolbar/FT3/intl/en/index.html

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 でなんでもやろうとするより日和ったほうが楽なことはいっぱいある。

NoScript

http://noscript.net/

許可したサイトだけで JavaScript を有効化。
一見さんとしてお邪魔するページで、JavaScript が本当に必要なところは少ない。

Tab Mix Plus

http://tmp.garyr.net/

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

追記@Thu Jul 02 04:06:45 2009

追記@Sat Jan 23 00:22:05 2010

2008-09-06

ActivePerl 5.10.0 Build 1004 released

5.8.8.824 と共に 5.10.0.1004 がリリース。5.8 の Windows 版は約一年ぶりのアップデート。

何が変更されたのか調べられなかったけど、5.10 Windows 版で ap-update-html が失敗する不具合は発生しなくなったみたい。うーん。(u-ch: ActivePerl のドキュメントが不完全なときの対処方法)

2008-08-27

Emacs 22.2.91 pretest

出ました。

  Emacs pretest version 22.2.91 is now available.  This is the second
pretest for Emacs 22.3, which will be a bugfix release.

ざっと眺めたところ、22.2.90 から細かなバグと docstring の typo が主な修正点な様子。

(emacs-version)
"GNU Emacs 22.2.91.1 (i386-mingw-nt5.1.2600) of 2008-08-27 on ASPIRIN"

関連

追記@Wed Sep 03 11:16:37 2008

追記@Sat Sep 06 11:44:20 2008

2008-08-17

Emacs 22.2.90 pretest

昨日公開されたようで。

Emacs pretest version 22.2.90 is now available.  This is the first
pretest for Emacs 22.3, which will be a bugfix release.

The source tarball is available here:

http://alpha.gnu.org/gnu/emacs/pretest/emacs-22.2.90.tar.gz

作り方はこれまでどおり(u-ch: Emacs 22.1.50 を作ってみたメモ。)で変わらず問題無しですが、Windows で (format-time-string "%z %Z" (current-time)) の %Z が "JST" を返してくれないのも変わらず…。

(emacs-version)
"GNU Emacs 22.2.90.1 (i386-mingw-nt5.1.2600) of 2008-08-17 on ASPIRIN"

追記@Thu Sep 25 10:39:47 2008

NTEmacs 22.2 以降の (format-time-string "%Z") 関連

2008-08-12

NTEmacs のフォント設定

Emacs 22.3 のリリースが近づいているらしいので、EMACS_22_BASE を作り直すついでに、ようやく重い腰をあげてフォントの設定を見直してみた。

NTEmacs は自分メモどおりに作りなおし。

フォントの設定自体は NTEmacs 22.1 のフォント設定 を参照すれば十分な情報が得られる感じです。感謝感謝。

ただ一点だけ。

3.1. 英文字フォントを選ぶ

先ず、英文字フォント(ascii)を選びます。この時、使えるフォントは、

(insert (prin1-to-string (x-list-fonts "*iso8859-1*")))

を、評価して得られるフォントです。

"*iso8859-1*" の "-" が通らないので、(x-list-fonts "*") なり (x-list-fonts "*iso8859?1") なりでリストを出すようです。

最初は view-hello-file をぜんぶ綺麗に表示させてやるかくらいの勢いで set-fontset-font していってたんだけど、細々したところを考えるかなりめんどくさい感じ。…なので MacEmacs JP の fixed-width-fontset をありがたく使わせてもらうことに。

(require 'ntemacs-font)
(fixed-width-set-fontset "msgothic" 14)

いままでと同様に MS ゴシックを使うだけならこの二行だけで終了とか。楽すぎだなあ、感謝感謝。

それじゃあってことでメイリオを使ってみようと思った。
ところが、fixed-width-fontset の仕組みを利用させてもらっても、それでも、メイリオの幅やら高さやらを納得いくようにしたいとなると、フォントのファイル自体に手を入れたりしなくちゃいけないようで、もう果てしなくめんどくさい感じ。…なのでへこたれました。

(require 'ntemacs-font)
(setq ntemacs-font-encode-family-list-uu2
      '((ascii . "Consolas*")
	(cyrillic-iso8859-5 . "Consolas*")
	(japanese-jisx0208 . "MS ゴシック*")
	(katakana-jisx0201 . "MS ゴシック*")
	(chinese-gb2312 . "Microsoft Yahei*")
	(chinese-big5-1 . "Microsoft JhengHei*")
	(korean-ksc5601 . "Malgun Gothic*")
	(mule-unicode-0100-24ff . "Arial Unicode MS*")
	(mule-unicode-2500-33ff . "Arial Unicode MS*")
	(mule-unicode-e000-ffff . "Arial Unicode MS*")))
;;(setq ntemacs-font-defined-sizes '(12 7 8 9 10 11 14 16 18 20 24))
(fixed-width-create-fontset "uu2" '(13) ntemacs-font-encode-family-list-uu2) ;;; default-frame (add-to-list 'default-frame-alist '(font . "fontset-uu2")) ;;; initial-frame (add-to-list 'initial-frame-alist '(font . "fontset-uu2"))

view-hello-file

Consolas を使ったぶんだけ、ほんの少し見易くなったし、これでいっか、と。

view-hello-file から、まったく表示できない行を取り除いたのが、右の画像です。
右から左へ書く言語は、いちど右から左へ再表示させてるけど、これで合ってるのかどうか…読めないから分かんないけど。
あと Malgun Gothic は漢字の幅がおかしいぽいです。朝鮮語の漢字を使う機会は無いからこのままでいいや。

XP で使うフォントは以下から。

参考

追記

追記@Fri Jan 21 23:05:46 2011

2008-07-27

TortoiseSVN 1.5.1 コンテキストメニューのショートカットキー

Subversion 1.5.1 のリリースを受けて TortoiseSVN 1.5.1 もリリースされた。ので、先日いじった Explorer のコンテキストメニューがどうなったかと調べてみた。

u-ch: TortoiseSVN コンテキストメニューのショートカットキー無効化

svn r13489 で、コンテキストメニューの文字列をリソースから読み込むように変更されて、アクセラレーターも TortoiseSVN から TortoiseSVN に変更されていた。それでも T だって Cut の T じゃんよ…。まぁこれはまず使わないからいいけど。

Visual Studio があれば TortoiseSVN.dll を開いて string table をいじってもいいし、たぶんそこらへんのリソースエディタでもそのままいじれるんじゃないかと思います。

2008-07-20

UTF-8 Cygwin での .screen ファイル

メモ。

CygwinUTF-8 Cygwin と日本語化 PuTTY と CygTerm での .screen  ファイル。

escape ^z^z
vbell off
startup_message off
defscrollback 1000

defencoding UTF-8
encoding UTF-8 UTF-8

PuTTY の文字コード設定は UTF-8 とか UTF-8/Auto-Detect Japanese とか UTF-8 (CJK) とか。

2008-07-18

Luminous Arc ルミナス アーク

古本市場へ古本買い漁りに行ったら、ルミナスアークの中古があったのでついでに買ってしまった…。¥1,500.-
こないだ出た 2 ウィルのほうも買ったまま封も切らずに未プレイなのに…。

それどころか 4月に買った世界樹の迷宮 II だってまだクリアしていないのに…。なかなか進まないんだよなあ。ちょっとずつやってるけど、飽きずに、やること忘れずにいるのが不思議なくらいだ。RPG ってしばらくプレイのあいだがあいちゃうと「いまなにやってるんだったっけ?」ってなると思うけど、そうならないのは親切設計だからなのかな。

Mew で stunnel を使うときのイベントログ出力を抑制する

Mew version 6.1.50(cvs HEAD), NTEmacs 22.2.50(cvs EMACS_22_BASE), stunnel 4.25 (Cygwin) の環境で、Cygwin と stunnel によるイベントログ大放出を抑制してみる。

Index: mew-ssl.el
===================================================================
RCS file: /cvsmew/mew/mew-ssl.el,v
retrieving revision 1.54
diff -u -r1.54 mew-ssl.el
--- mew-ssl.el  5 May 2008 10:03:48 -0000       1.54
+++ mew-ssl.el  18 Jul 2008 05:41:44 -0000
@@ -101,6 +101,7 @@
       (insert (format "verify=%d\n" (mew-ssl-verify-level case)))
       (insert "foreground=yes\n")
       (insert "debug=debug\n")
+      (insert "syslog=no\n")
       (insert "CApath=" (expand-file-name (mew-ssl-cert-directory case)) "\n")
       (insert (format "[%d]\n" localport))
       (insert (format "accept=%s:%d\n" mew-ssl-localhost localport))

Cygwin の syslog は、syslog-ng がインストールされていなければ、Windows のイベントログへだだ流しになるようで。これまでイベントログ監視用のソフトウェアでフィルタしてたけど、生のログを見ながら作業するときには、あまりに量が多いのでうざくなってきた…。

Cygwin のサーバ類は使っていないし、これだけのために syslog-ng 入れるのもイヤなので、Mew 側で stunnel に syslog = no を渡すようにしてみた。Cygwin の syslog まわりで他にやり方がありそうな気もするけど。

Mew で stunnel が使われる様子をみるときには都度 z d か (setq mew-debug t) して *Mew debug* バッファをみる感じで。

追記@Tue Jul 22 18:55:10 2008
mew-ssl.el の revision 1.55 (Mew 6.1.50) で syslog=no を追加してもらえました。

2008-07-04

FKBN87ML/EB 届いたよ

FKBN87ML-EB

u-ch: FKBN87ML/EB マジェスタッチ テンキーレス 黒軸 US-ASCII

先日発表されて今日発売になった FKBN87ML/EB が届きました。
もうね、ほんとうに何も言うことがないくらい普通のキーボード(褒め言葉)。使い心地もキー配置も普通。(褒め言葉)

リニアのキーを使うのはすごく久しぶりなので、キーが軽く感じられて自然とタイプが速くなりそうな気がするくらい。
軽いっていっても、いままで使っていたのと比べてということなので、そこらへんのオマケ級キーボードよりは重い‥‥のかな多分。

リニアっていうのは、タイプするとカチカチじゃなくてスカスカするやつ。ゴムでペコペコいうのとはちゃうよ。
同じキー配置でカチカチいうタイプ(スイッチが違う)の FKBN87M/EB も同時に発売されています。近いうちにこっちも買っておこうと思います。メカニカル大好きなので‥‥。

これまで 8年くらい使っていたのが ALPS メカニカルの Ortek MCK-84 / MCK-86, DIATEC FILCO FKB-86E という少し特殊なキー配置(詰め込み型)のキーボードだったので 、FKBN87ML/EB と比べると、Insert, Delete, Home, End, PageUp, PageDown とカーソルキーがホームポジションから遠くなって、右手首の負担が少し気になります。が、これはまぁ、普通のキーボードに戻っただけなのですぐに慣れるだろうね。

MCK-86 と FKB-86E が入手できなくなって、買い込んでおいたストックも尽きて、キーボードの替えが無くなって、もうほんとうに困っていたので、ダイヤテックには、どうか末永くこのキーボードを販売し続けて欲しいと思います。

FKBN87ML-EB and FKB-86E
FKBN87ML/EB と退役する FKB-86E

2008-07-01

TortoiseSVN コンテキストメニューのショートカットキー無効化

TortoiseSVN が 1.5.0 になって、Explorer のコンテキストメニュー・トップレベルで V をショートカットキー(正確にはアクセラレーター / アクセラレーションキー)に使用するようになった。(svn revision 11938 の ContextMenu.cpp)

のでそれを無効化。だって使い難いんだもん。V は View で使ってんだろーよ。ばかばか!

$ svn diff ContextMenu.cpp
Index: ContextMenu.cpp
===================================================================
--- ContextMenu.cpp     (revision 13316)
+++ ContextMenu.cpp     (working copy)
@@ -1023,7 +1023,7 @@
        SecureZeroMemory(&menuiteminfo, sizeof(menuiteminfo));
        menuiteminfo.cbSize = sizeof(menuiteminfo);
        menuiteminfo.fType = MFT_STRING;
-       menuiteminfo.dwTypeData = _T("TortoiseS&VN\0\0");
+       menuiteminfo.dwTypeData = _T("TortoiseSVN\0\0");

        UINT uIcon = bShowIcons ? IDI_APP : 0;
        if (folder_.size())

TortoiseSVN.dll は Visual Studio 2008 がないとビルドできない(Express Edition では無理)のでバイナリを置いておきます。C:\Program Files\TortoiseSVN\bin で上書きして、再ログオンすればおけ。

TortoiseSVN-1.5.0.13316-win32-svn-1.5.0_bin_TortoiseSVN.dll.zip
SHA-1: 0de9218f7fc048ee760bc563bd4bea6c08440d94
MD5: 760a7f860b1214d1403d1144017d2af7
CRC32: ed7ac371

TortoiseSVN-1.5.0.13316-win32-svn-1.5.0.msi / TortoiseSVN 1.5.0 Build 13316 32 Bit Windows の TortoiseSVN.dll をリプレースします。

使う人はもちろん自己責任でどうぞ。

追記@Sun Jul 27 01:49:56 2008

u-ch: TortoiseSVN 1.5.1 コンテキストメニューのショートカットキー

追記@Tue Apr 21 01:34:41 2009

TortoiseSVN.dll 公開終了。

2008-06-26

FKBN87ML/EB マジェスタッチ テンキーレス 黒軸 US-ASCII

Majestouch Tenkeyless 「マジェスタッチ テンキーレス」・黒軸・英語ASCII

やっときた。やっときた。やっときた!DIATEC 信じて待ってたよ!
やっとキーボード難民を卒業できそうです。茶軸はぼくのタイプでは騒音公害がひどいので黒軸でいきます。あとは 7/4 を待つだけだ。

2008-05-20

Debian etch の bind9 パッケージに含まれる db.root ファイルは古い

昨年末のことなので、まさかと思っていたら‥‥

$ cat /etc/bind/db.root | grep 'L\.'
.                       518400  IN      NS      L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.     3600000 IN      A       198.32.64.12
$ dpkg -c /var/cache/apt/archives/bind9_1%3a9.3.4-2etch1_i386.deb \
> | grep 'db\.root'
-rw-r--r-- root/root      1507 2007-07-25 07:13 ./etc/bind/db.root

うへ。

アップデートされたパッケージが出るかも知れないですが、とりあえず自分で書き換えておくのが良さそうです。

追記@Tue May 20 23:20:49 2008

# dig ns . @m.root-servers.net > /etc/bind/db.root
# /etc/init.d/bind9 restart
Stopping domain name service...: bind.
Starting domain name service...: bind.

乱暴だけど、こんな感じで。

追記@Fri Jul 11 13:22:05 2008

先日アップデートされた bind9_9.3.4-2etch3 にはこの件の修正が含まれています。

The updated bind9 packages contain changes originally scheduled for the next stable point release, including the changed IP address of L.ROOT-SERVERS.NET (Debian bug #449148).

2008-05-17

ActivePerl 5.10.0 Build 1003 released

ActivePerl 5.10.0 Build 1003 が出た。

ASPN に載ってるドキュメントはまだ Build 1002 のままだけど、標準構成に含まれる Perl モジュールが増えてたり、Win32 系モジュールの PPM 構成が大幅に変わったりしている。release notes, ActivePerl 5.10 Change Log

インストール時や PPM パッケージインストール後に ap-update-html の中で、ActivePerl::DocTools::Pod の pod2html で rename が失敗して HTML ドキュメントの生成が不完全になる問題は健在です。
Windows XP SP3 + NTFS(SATA AHCI, Intel ICH7 接続)で確認。

いちおうバグリポート出してあるけど、再現しないのかなあ。相手にされていない感じです。

2008-05-14

Debian の ssh ホスト鍵を再生成

過去の Debian 固有の OpenSSL への誤った修正により、この修正のあとに OpenSSL で作られた鍵(ssh のホスト鍵など)を再生成しないといけないようです。

Debian セキュリティ勧告 DSA-1571-1 openssl -- 予測可能な乱数の生成

Debian システムで、バージョン 0.9.8c-1 以降の OpenSSL で作成された、暗号鍵に関するデータは捨てて作り直す必要があります。さらに、影響を受ける Debian システムで、署名や本人認証の目的で使われた全ての DSA 鍵は脆弱であると考えてください。デジタル署名アルゴリズムは、署名生成時の秘密の乱数の値に依存しているからです。

この欠陥を持つ最初のバージョンは 0.9.8c-1 で、不安定版に 2006-09-17 にアップロードされており、その後テスト版 (testing) や安定版 (etch) に流れています。旧安定版 (sarge) には影響はありません。

去年の暮れ気紛れに SSH のホストキーを作り直したので、たぶん影響を受けてるんだろうな‥‥。

titania:/etc/ssh# ls -alF
合計 168
drwxr-xr-x  2 root root   4096 2007-11-18 23:03 ./
drwxr-xr-x 73 root root   4096 2008-05-14 15:14 ../
-rw-r--r--  1 root root 132777 2007-03-06 01:38 moduli
-rw-r--r--  1 root root   1424 2007-03-06 01:38 ssh_config
-rw-------  1 root root    672 2007-11-18 22:55 ssh_host_dsa_key
-rw-r--r--  1 root root    602 2007-11-18 22:55 ssh_host_dsa_key.pub
-rw-------  1 root root    883 2007-11-18 22:55 ssh_host_rsa_key
-rw-r--r--  1 root root    222 2007-11-18 22:55 ssh_host_rsa_key.pub
-rw-r--r--  1 root root   1871 2007-11-18 23:03 sshd_config
titania:/etc/ssh# tar cvzf ssh_old_keys.tar.gz ssh_host_*
ssh_host_dsa_key
ssh_host_dsa_key.pub
ssh_host_rsa_key
ssh_host_rsa_key.pub
titania:/etc/ssh# chmod go= ssh_old_keys.tar.gz
titania:/etc/ssh# rm ssh_host_*
titania:/etc/ssh# dpkg-reconfigure openssh-server
Creating SSH2 RSA key; this may take some time ...
Creating SSH2 DSA key; this may take some time ...
Restarting OpenBSD Secure Shell server: sshd.

あとはクライアント側で known_hosts やそれに類する情報を修正して完了。

追記@Mon May 19 16:39:01 2008

Open Tech Press | セキュリティ警報:多数のシステムに影響を及ぼすDebian OpenSSLの不具合が発覚

2008-04-05

htpasswd のやってることを Perl で

Apache の htpasswd で作るパスワードのダイジェストと同じものを Perl で作るメモ。

CRYPT

htpasswd のスイッチ -n はダイジェストを STDOUT に出力する。
-d は CRYPT を使ってダイジェストを作るスイッチ。 
-b はパスワードをコマンドラインから指定するスイッチですが、ここでは例示を単純にするために使っているだけで、使用は推奨されてません。

$ htpasswd -ndb user password
user:ScRpgNPWh3biw

出力されたダイジェストのうち最初の二文字、ここでは Sc が SALT になっています。

同じことを Perl でやるには crypt 関数を使います。

$ perl -E "say crypt('password', 'Sc')"
ScRpgNPWh3biw

-E スイッチや say は 5.10 以降の安定版 Perl で使えます。
5.8 以前の安定版 Perl では代わりにそれぞれ -le スイッチと print を使います。

$ perl -le "print crypt('password', 'Sc')"
ScRpgNPWh3biw

以降は同様に適宜読みかえてください。

SHA (SHA-1)

-s はダイジェストを作るのに SHA を使うスイッチ。

$ htpasswd -nsb user password
user:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=

出力されたダイジェストは Base64 でエンコードされています。

Perl では CPAN モジュールの Digest::SHA1 を使います。
Perl の Digest 系のモジュールは Base64 でエンコードされた文字列を出力できるので‥‥

$ perl -MDigest::SHA1 -E \
> "say Digest::SHA1->new()->add('password')->b64digest"
W6ph5Mm5Pz8GgiULbPgzG37mj9g

と、簡単に終わせたいところですが、ぱっと見て分かるように = でパディングされておらず、Base64 として不完全な文字列が出力されてしまっています。

Base64 は RFC 2045 で定義されているデータの符号化方式で、データをアルファベットと数字そしていくつかの記号だけで表現するために使われています。
Base64 は 3バイトのデータをひとかたまりとして、それを 4文字の文字列で表現します。そして、データの終端で元のデータが 3バイトに満たない場合に、符号化後の文字列の足りない部分を = で埋めて 4文字にします。

Digest::SHA1 の b64digest、正確にはベースクラスである Digest::base の b64digest は標準モジュールの MIME::Base64 を使っているのですが、MIME::Base64::encode が返した文字列からわざわざ文字列終端の = を削除しています。Digest::SHA のドキュメントによると互換性のためのようですが‥‥なんだかなぁ。

しょうがないので MIME::Base64 を使って自分でエンコードします。

$ perl -MDigest::SHA1 -MMIME::Base64 -E \
> "say encode_base64(Digest::SHA1->new()->add('password')->digest)"
W6ph5Mm5Pz8GgiULbPgzG37mj9g=

このダイジェストを .htpasswd ファイルなどで使う場合には、「ユーザ名:{SHA}パスワードのダイジェスト」といった書式にしなければならないことを忘れないでください。

ユーザ名:{SHA}パスワードのダイジェスト
user:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=

Perl 5.10 では Digest::SHA が標準モジュールになっているので、普段 SHA を使う場合にはこちらを使うのが良さそうです。今後はあまり SHA-1 を使う機会は無いかも知れませんが、いちおう同様に書けます。

$ perl -MDigest::SHA -MMIME::Base64 -E \
> "say encode_base64(Digest::SHA->new('sha-1')->add('password')->digest)"
W6ph5Mm5Pz8GgiULbPgzG37mj9g=

Digest::SHA のコンストラクタは引数の数字しか見ていないので、new(1) でも new('sha-1') でも new('しゃ1') でも同じです。

MD5

最後に htpasswd の -m スイッチによる MD5 のダイジェスト。

$ htpasswd -nmb user password
user:$apr1$MWo/B...$VlC12Us2.D82inoA7m9w81

これも Perl 標準モジュールの Digest::MD5 で‥‥といきたいところですが、MD5 といっても単純に MD5 のダイジェストがそのまま使われているわけではなく、htpasswd は MD5 を使ってごにょごにょした後のものを出力しているので、ここは素直に CPAN にある Crypt::PasswdMD5 モジュールの apache_md5_crypt を使うのが良さそうです。

$ perl -MCrypt::PasswdMD5 -E \
> "say apache_md5_crypt('password', 'MWo/B...$')"
$apr1$MWo/B...$VlC12Us2.D82inoA7m9w81

2番目の引数は SALT で、htpasswd で作られた SALT と同じものを指定するのでなければ、引数自体を省略できます。

2008-04-04

DS 版イース / 世界樹の迷宮 II

DS版「イース」「イースII」にサントラも付いたパッケージが発売

またか。
いったいいつまでリメイクし続けるつもりだ。それでも売れてるんだろうか?

ぼくも最初の Windows 版イースは買ったけど、やっぱりオリジナルにはかなわないと思ったなぁ。あの時代だったからこそ、あの時代にしかできなかった体験ってあるよね。
…と言ってもザナドゥなら再挑戦してみたい気もするかな。うまいこと DS に完全移植してくれないかしら。

イースは、いつでもオリジナルの NEC PC-88/PC-98 版がごにょってプレイできるから、老後の楽しみに取っておこうと思っています。:)

実は同じ古代祐三氏が音楽を担当している世界樹の迷宮II 諸王の聖杯を買いました。

まだ少ししかプレイしていないから、ぜんぶの曲は聴いていないけれど、いまのところ、なんというか、言い難いけど、メロディも音色も精彩を欠いているように感じられてしまいます。なんだろうなあ。聴いているぼくも変わったのかなあ。

ゲーム自体は長く楽しめそうな感じです。買って良かった!

なにしろマッピングが楽しい。むか~しむかしのブラックオニキスで、方眼紙と色ペンを使ってダンジョンのマップを作っていたのを思い出します。DS の下画面でマッピングができるから面倒が無いのもいいです。

ぼくの傾向からすると、おそらくクリアするのは数年後ですけどね。w

2008-03-28

Picasa

NTEmacs22.2.50

この blog へスクリーンショットや写真を載せるために Picasa Web Albums を使ってみた。

しかし、どうも Picasa Web Albums は、画像のフォーマットとして JPEG しか使えないみたいだ。
写真を主なターゲットにしているからなんだろうけど、右のスクリーンショットみたいな文字とベタ塗りが主成分な画像の場合は、PNG が使えないとつらいね。PNG ならば可逆圧縮なうえに、こういう画像だと JPEG より小さくなるし。

ところが、Picasa Web Uploader APIPicasa Button API が発表されて、画像のホスト先を Picasa Web Albums にこだわらなければ、Picasa から、Picasa の扱うオリジナルのファイルをアップロードできるようになった。

シンプルな API なので、画像掲示板のような画像をホストするサーバプログラムに、Picasa からアップロードする機能を組み込むのも難しくなさそうだ。個人的には Picasa Web Albums で PNG がサポートされれば、今のところ十分だけど。

Google Code Blog: Add your own buttons to Picasa, upload photos all over the Web
http://google-code-updates.blogspot.com/2008/03/add-your-own-buttons-to-picasa-upload.html

Picasa
http://picasa.google.com/

グーグル、「Picasa」の新APIで写真共有をさらに容易に:ニュース
http://japan.cnet.com/news/media/story/0,2000056023,20370329,00.htm

アドビの無料オンライン画像編集ソフト『Photoshop Express』
http://wiredvision.jp/news/200803/2008032820.html

2008-03-27

Windows Live OneCare

Windows Live OneCare をべたぼめする話。

ひそかに、確実にPCを守るセキュリティ対策ソフト--マイクロソフト 「Windows Live OneCare」:レビュー - CNET Japan

4ページにわたるレビュー。
必要な機能を備えて、控え目で軽くて、安くて、安心ブランド。Microsoft の Live なんとかの中で唯一、ぼくが積極的にお薦めできるプロダクト。

ぼくはこの Windows Live OneCare と Norton Internet Security 2008 を使っていて、語弊を恐れずに言えば、きちんと固めたい PC には NIS2008 を入れ、他はとりあえず Windows Live OneCare をぜんぶ入れとけ的に使っています。

なにしろ使っていていろんな意味で邪魔にならない。無料製品のような不安が無い。90日使える試用版とあわせて優待版を使うことで、3台の PC に 90日 + 1年使えて約 2,500円。

右の Amazon.co.jp の価格とは違うけど(リンク先にいくと割引の価格も見られまス)、発売以降、ほぼずっと割引をやっているのでだいたいこんな値段。

他のセキュリティ製品でもそうだと思いますが、試用版を入れて試用ライセンスが切れたら、優待版のライセンス投入という使い方です。再インストールは不要で、Microsoft Passport で管理されるアクティベーションのみでそのまま使えます。

最低限の機能でえらい軽かった Windows Live OneCare 1.5 から、LAN 内の PC 管理機能などが追加された Windows Live OneCare 2.0 へのバージョンアップで、ゴテゴテの重いソフトになるんじゃないかと懸念していたのですが、これはまったくの杞憂でした。

従来のヘビー級のセキュリティ製品と違って、通信するプログラムごとに設定するパーソナルファイアウォール機能は、許可するか拒否するかしか選択肢がないので、とにかく細かく制御したいというような場合には不向きです。

PC に詳しい人からしたら物足りないと感じるかも知れないけど、こういう製品は他に探しても無いんですよね。

設定を失敗するとにっちもさっちもいかなくなるような危険なオプションも無いから、あまり PC に詳しくない人に使ってもらうときなんかは特にお薦め。ぼくは家族には Windows Live OneCare を使ってもらっています。NIS は軽くなったと言ってもやっぱりヘビーだし、ウィルスバスターは信用してないし、無料製品は論外だし、というぼくの求めていたタイプの製品だった感じです。

2008-03-16

ActivePerl のドキュメントが不完全なときの対処方法

ActivePerl のインストール時に POD や HTML ファイルの生成が中途半端になる問題。

ActivePerl 5.10をLeopardにインストール

PerlはLeopardについてくるから(5.8だけど)それを使えばいいと思っていた。ところが、意外なところでひっかかった。

% perldoc perldoc
No documentation found for "perldoc".
% perldoc perlre
No documentation found for "perlre".
% which perldoc
/usr/bin/perldoc
%

えー。

「Mac OS X の ActivePerl でも同じ現象が出るの?」と早とちりしたけど、どうやら別の話。

ぼくの使っている Windows の ActivePerl は、最近のバージョンではインストール直後からドキュメントがまともに読めなかったりすることがあって、それが困ったちゃんだなぁという話。

不特定の perldoc が読めなかったり、ブラウザで読む User Guide から Core Documentation がごっそり抜け落ちてたりという現象が起きるんです。なんとなくしか覚えていないのですが、ぼくのところでは、この問題は ActivePerl 5.8.8 build 820 で発生しはじめたと思います。なんだか根が深そうに見えるのできちんとは調べられず、以下のようなひどいやりかたで対処しています。

ActivePerl::DocTools::Pod モジュールは、Windows の場合 <ActivePerl のインストールディレクトリ>\lib\ActivePerl\DocTools\Pod.pm です。

$ diff -u Pod.pm~ Pod.pm
--- Pod.pm~     2006-12-06 11:55:20.000000000 +0900
+++ Pod.pm      2008-01-20 20:44:05.415842100 +0900
@@ -144,7 +144,9 @@
     }
     close (TMPFILE) || die "Couldn't write all of $outfile.tmp: $!";
     close (HTMLFILE);
-    unlink($outfile); # bug 61127
+    unlink($outfile) # bug 61127
+      or die "Couldn't unlink $outfile: $!";
+    sleep 0 while (-e $outfile);
     rename("$outfile.tmp", $outfile) || die "Couldn't rename $outfile.tmp back to $outfile: $!";
 }

このあと以下のコマンドを実行すればどのドキュメントも読めるようになるかと思います。

# ap-update-html --force

以下、中途半端な考察。

ActivePerl のインストールプロセスには、User Guide などの HTML ファイルをまとめて生成する処理がある。ここで使われている ActivePerl::DocTools::Pod モジュールの pod2html がうまく処理できずに死んでしまうと、POD ファイルと HTML ドキュメントの生成が中途半端な状態になります。
同様の処理は PPM を使ってモジュールをインストールしたときにも実行されます。

ActivePerl と一緒にインストールされる ap-update-html を実行すると、ActivePerl の基本的な POD ファイルとすべてのモジュールの HTML ドキュメントが生成・更新されます。

> ap-update-html --force --verbose

この修正を加えない場合、なにかの不運なタイミングで unlink したファイルがファイルシステム的にまだ(不完全な状態で?)残っていて rename に失敗することがあります。--force を付けずに繰り返し実行すればそのうち完走しますが。

> ap-update-html --force
Couldn't rename C:\Perl\html/lib/pods/perldos.html.tmp back to C:\Perl\html/lib/
pods/perldos.html: Permission denied at C:/Perl/lib/ActivePerl/DocTools/Pod.pm l
ine 148.

ぼくが調べたときには、どのファイルを処理している時に止まるのかは不定でした。rename できずに die した場合でも、人間の反応速度で確認した限りでは $outfile は既に消えてなくなっていたので、じゃあ消えるまで待ってあげればいいのかなぁという単純な対策です。

この問題が発生するのは OS やそのファイルシステム、はたまた時の運や日頃の行ないに依存するのかも知れません。

Bug #61127 Summary: Table of contents incomplete, non-ap links missing

Pod.pm のコメントからも分かるとおり ActiveState は Bug #61127 を認識しているものの、再現はできないそうで。ぼくの使う Windows + NTFS では 5割に迫る高確率で再現するんですけどね。;-)

でも、これは unlink の仕様を踏んじゃった ActiveState の作りのマズさなんじゃないかと思います。
このケースにあてはまるかは知りませんが、プログラミング Perl 第3版日本語版によれば、unlink が返ってきたからといって必ずしもファイルが削除済みであるわけではないように読みとれますし(unlink の項の脚註)。

 

追記@Sat Sep 06 13:46:08 2008

u-ch: ActivePerl 5.10.0 Build 1004 released

DS 美文字トレーニング

DS美文字トレーニング

テレビの CM でこの美文字トレーニングを見て、任天堂 DS を買おうかと悩みはじめてしまった。
前から脳トレ系のソフトのために、買おうかどうかとちょくちょく軽く悩んではいたんだけど今回はちょっと本気で。

でも DS なんか買ったらきっとゲームもしたくなるわけで。生活パターンやなにかの習慣を変えないことには、ゲームの時間を捻出するのは無理なんだよなあ。

親に使わせるのに辞書系のソフトがどれくらい使えるものなのか見ておきたいっていうのもあるしなあ。

Wi-Fi USB コネクタがあれば、ネットにつないで体験版やお手軽版のソフトをダウンロードするなんてこともできるんですね。しかも安い。いつのまにか進化してるもんだ。

訂正@Sun Mar 23 15:52:54 2008

「体験版やお手軽版のソフトをダウンロード」は、ニンテンドー Wi-Fi USB コネクタ でやるんじゃなくって、DS ステーション へ行ってやるみたいだ。家でダウンロードできるわけじゃないのね。。。