« 2006年7月 | Main | 2006年9月 »

2006年8月 4日

マツダが純正オーディオをiPod対応に!

[ カテゴリ: Hobby ]

どうもカーオーディオのiPod接続キットってぐっと来るものがなかったんですが、 悩みに悩んで今まで手を出さなくて正解でした (FMトランスミッタは買ったんですけどね)。 遂にマツダが純正オーディオ用のiPod接続キットを発売するようです。

さて、対応しているのか、マツダに行って聞いてみよう。

2006年8月 6日

ゲド戦記 IMDb

[ カテゴリ: Movie ]

ゲド戦記、観てきました。

まず、監督の宮崎吾朗氏が宮崎駿監督の長男だと云うことは周知の通りです。 鈴木プロデューサーが吾朗氏を監督として抜擢した際、 駿監督は猛反対したそうで、 制作過程ではほとんど口をきかなかったとか。 クランクアップ後の関係者試写会に突如現れた駿監督は、 後日、人づてで「素直でよかった」という感想を述べられたそうです。 その話を聞いたときは、 「素直とはいったいなんじゃいな」と思ったんですが、 ああ、こういう意味だったのかとわかりました。 確かに素直というか、 良くも悪くも観てるこちらが赤面するような素直さですね。

吾朗監督が駿監督を意識したかという問いに対しては、 物心ついた頃から駿監督の作品に接していたわけで、 そこが原点になること以外はあり得なかった、 という趣旨のことを云っていたと記憶しています。 実際、過去の駿監督の作品を彷彿とさせるシーンが数多く見られました。 原点であって、もちろん強く影響されていることは間違いなく、 第一回作品なのでまあやむを得ないかなというところです。 独自の世界を確立するには数作品の試行錯誤が必要ではないかな。

全体的には、かなりバランスが悪いという印象を受けました。 テンポも悪いし、不必要に説明的なシーンがある一方、 必要だと思われる説明が省かれているような感じ。 これは吾朗監督だけではなくて、 千と千尋の神隠しやハウルの動く城など、 最近のジブリの作品にはこの傾向が強い気がします。 そろそろ昔みたいな絶妙なバランスの作品を観たいなあ。

声優陣はあいかわらずすばらしいですね。 特に田中裕子が秀逸でした。

というわけで、 おそらく若干厳しめの評価が多いのではないかと予想。 吾朗監督の作品はしばらく同様の傾向が続くでしょうが、 その後のブレークスルーに期待したいです。

2006年8月 7日

VMware Virtualization for Mac OS X!

[ カテゴリ: MacOSX ]

待ってました、遂に来た! VMware for Mac OS X! WWDCで発表されるんじゃないかと云われてますが、 ベータテスタの先行登録が始まってます。 これでだいぶ幸せになれそうだ!

ところでこの先行登録のページ、どこにもVMware for "Intel" Mac OS Xとは書いてないんだよね… PowerPCではエミュレーションするのかなあ。遅そう。

2006年8月 8日

GNU idutils-4.2

[ カテゴリ: Technology ]

気づいてなかったんですが、 GNU idutils-4.2がリリースされてました。 4.1からは不具合修正だけらしいですが、 4系は3系からjavaやlispのサポートが追加されているので、 このあたりを使ってるひとにはうれしいかもしれないですね。

2006年8月11日

だめになったプロ野球

[ カテゴリ: Hobby ]

別にプロ野球に愛があるわけではないからどーでもいいんですけど。 あまりにくだらない誤審が多すぎませんか、今年。

今日(すでに昨日)の阪神・横浜戦の誤審なんて、誰が見ても当たってる。 100歩ゆずって球審からは影になって見えなかったとしても、 3人の塁審全員が見てないなんてあり得ない。 こんな誤審をするのは、

  • 実は審判は素人のボランティア
  • 実は審判は買収されている

のどっちかじゃないすかね。 まあどっちでもいいんですけど、 いずれにしてもいい加減ファンが見放す日も近いのではないかと。 いい試合も審判にぶちこわされるから観てても面白くないし。 相変わらず老害もひどいし、いまの日本のプロ野球、ほんとにだめになったなあ。

2006年8月16日

やっぱりコマンドラインでしょ。

[ カテゴリ: MacOSX ]

MacOSXに対するイメージというか使い方は人それぞれだと思いますが、 個人的には、ちょっときれいなウィンドウ・システムを持った、 でもちょっと脆弱なBSDというイメージで使っています。 で、「ちょっときれいな」とか「ちょっと脆弱な」はここではひとまず忘れると、 やっぱりBSDなわけです。そうするとどうしてもターミナルでの作業が中心になりますね。

このような民生用商用OSでは、基本的にGUIでの作業が必須となることも多いですが、 MacOSXでは、

  • ソフトウェア・アップデート
  • ディスク・イメージのマウント
  • パッケージのインストール

なんかも、コマンドラインで処理できます。これはかなりうれしい!

ソフトウェア・アップデート

ちょっと脆弱なBSDであるところのMacOSXは、 Windowsに負けないくらい頻繁なソフトウェア・アップデートが必要です。 コマンドラインからソフトウェア・アップデートを実行するためには、 softwareupdate(8)を使います。

Invoke softwareupdate by specifying a command followed by zero or more args.

ってことですが、 基本的には-iオプション(インストール)と-aオプション(すべて)をつければいいでしょう。

softwareupdate -i -a

なお、--listというオプションで利用可能なアップデートの一覧が確認できます。

ディスク・イメージのマウント

「そんなん、openすればええんちゃうん」というあなた、はい、正解です。 ただ、ディスク・イメージ(.dmgファイル)をopenすると、 Finderのウィンドウが開いてフォーカスが奪われます。 そんなときには、hdiutil(1)のmountコマンドを使います。

hdiutil mount xcode_2.4_8k1079_6936199.dmg

パッケージのインストール

MacOSXでアプリケーションなどをインストールする代表的な方法としては、 アプリケーションのアイコン(実は名前が.appで終わるディレクトリ) をアプリケーション・フォルダにDrag&Dropするか、 パッケージ・ファイル(これも実は.pkgまたは.mpkgで終わるディレクトリ) からインストールするかのどちらかです。 このうち、後者のパッケージ・ファイルを使うパターンの場合は、 そのファイルをopenするとインストーラが起動することになります。

このファイルをコマンドラインからインストールするためには、 installer(8)を使います。

The installer command is used to install Mac OS X installer packages to a specified volume. The installer will install a single package per invo- cation. This package can be either a single package or a metapackage.

-pkgオプションでパッケージ・ファイルを、 -targetオプションでインストール先のボリュームを指定します。 また、上記のとおり、通常のパッケージだけでなくメタ・パッケージもインストールできます。

installer -pkg XcodeTools.mpkg -target /

2006年8月25日

teTeX3とvfxdvi

[ カテゴリ: MacOSX / NetBSD ]

pkgsrcでteTeX3をいれると、vfxdviも動きません。

Unexpected error in "read_ZEIT_char()"

環境をMacBook Proに乗り換えたこともあって、まっさら状態。 これteTeX2のときもあったなー、なんだったけなー、と記憶をたどると、 そういえばフォントが足りないんだったような気がしてきた。

ってことで、fonts/watanabe_vfをインストールすると…正解! まあ、最近X11あがってないから使わないんですけどね、これ。

2006年8月26日

Ruby 1.8.5

[ カテゴリ: Technology ]

おお、若干予定から遅れてRuby 1.8.5がリリースされたようだ。

2006年8月27日

MacOSXでpkgsrc

[ カテゴリ: MacOSX ]

繰り返しになりますが、 MacOSXでpkgsrcを使う人は物好きらしいです。 そんな物好きに贈る、pkgsrc on MacOSX講座。 ただし、pkgsrcの若干の知識を前提としています。あしからず。

前準備(前編)

まずは、 特にpkgsrcに限らず一般的にやっておいた方がいいと思われることから。

なににつけても、まずは開発環境が必要です。 Xcodeを入手してインストールしましょう。 OSXのインストールメディアにも入ってますが、 ADC (Apple Developer Connection)からも入手可能です。 ADCのメンバじゃない場合は適当にサインアップしてください。 ちなみに、最新版はXcode 2.4です。

それから、 なにかにつけX11が(使わなくても)インストールされているほうがよいです。 こいつはOSXのインストール時にカスタマイズで選択するのですが、 あとからインストールすることもできます。 正式なインストール方法はいまいちよく分からないんですが、 インストールメディアをつっこんで Optional Installsを起動すればいいようです。

前準備(後編)

次に、pkgsrcに特化した準備を。

前提として、 pkgsrcを使うためにはcase-sensitiveなファイルシステムが必要です。 すなわち、ファイル名で大文字と小文字の区別ができなければなりません。 以下、bootstrap/README.Darwin (このファイルはまだみなさんの手元にありません)から抜粋。

(Why can't you just use the HFS+ filesystem you've already got? Because pkgsrc currently requires the underlying filesystem to be case-sensitive, and HFS+ isn't.)

OSXで普通に使えるcase-sensitiveなファイルシステムは、 UFSとHFSXのふたつです。 前者はOSXのインストール時に 「UNIXファイルシステム」として選択できるものです… が、このフォーマットでシステムをインストールした場合、 市販の多くのアプリケーションが動かない可能性が高いのです。 したがって、この選択肢は捨てた方がよいでしょう。

一方、後者はHFS+のcase-sensitive拡張です。 HFSXでOSXをインストールするには、 インストール時に「ディスクユーティリティ」を起動してごにょごにょする必要があり、 という若干難易度が高いかもしれません。 昔は起動パーティションをHFSXにすると不具合があると言われてましたが、 実際にやってみたところ、特に問題は見あたりませんでした。 ATOK2006も普通に動くし。 とはいえ、 未だにcase-insensitiveなファイルシステムを前提にしている市販アプリケーションもありそうなので、 猛者でなければお勧めはできないことも事実です。

ではどうするのか。 前出のbootstrap/README.Darwinでは、 UFSのディスクイメージを利用する方法が説明されています。 つまり、システムはHFS+のままインストールし、 pkgsrcの部分だけをディスクイメージにしてマウントしちゃおうという作戦です。 若干遅くなるかもしれませんが、後で自由が効くのでお勧めです。 というわけで、この方法を採用することにします。

まず、 このディスクイメージとマウントポイントを置くためのディレクトリを作ります。

$ sudo mkdir -p /PKGSRC/mnt
$

次に、適当な大きさのディスクイメージを作ります。 「適当な大きさ」は、 どれくらいのパッケージをインストールするかに依存しまするわけですが、 多くの場合で4Gもあれば十分だと思います。 ファイルシステムは、上記の通りUFSにしてもかまいませんが、 折角なのでHFSXにしましょう。 サイズが大きいと若干時間がかかるかもしれません。

$ sudo hdiutil create /PKGSRC/HFSX.dmg \
  -size 4g -layout SPUD -type UDIF -volname pkgsrc \
  -partitionType Apple_HFSX -fs 'Case-sensitive Journaled HFS+'
...............................................................................
created: /PKGSRC/HFSX.dmg
$

ディスクイメージができたらマウントします。

$ sudo hdiutil attach /PKGSRC/HFSX.dmg \
  -mountpoint /PKGSRC/mnt \
  -owners on -nobrowse -notremovable
/dev/disk1              Apple_partition_scheme         
/dev/disk1s1            Apple_partition_map            
/dev/disk1s2            Apple_HFSX                      /PKGSRC/mnt
$

以下のように、必要なディレクトリを作ります。 つまり、pkgsrcに必要な部分だけをHFSX.dmgに押し込め、 シンボリックリンクを張るぜという方針です。 /varは必要ないのではないかと思われるかもしれませんが、 これがあるとディスクイメージごとほかのホストに移動して利用できます。 また、pkgsrcに関係のあるファイルの実体を、 全てディスクイメージに入れられるので、 システムとの切り分けという意味でも望ましいでしょう。

$ sudo mkdir -p /PKGSRC/mnt/{usr/pkg/etc,var/db/pkg{,.refcount}}
$

で、これらを所定の場所へシンボリックリンクを張ります。 これがいやな場合は、PREFIXを変更するという手もありますが、 無用なトラブルを避けたいのであれば、 シンボリックリンクをお勧めします。

$ sudo ln -s /PKGSRC/mnt/usr/pkg{,src} /usr
$ sudo ln -s /PKGSRC/mnt/var/db/pkg{,.refcount} /var/db
$

/PKGSRC/mnt/usr/pkgsrcなんてmkdirしてないよ? というあなた、正解です。 このディレクトリはあとでpkgsrcを取得するときにできるのですが、 先走ってシンボリックリンクを張っています。

というわけで、ここまでで準備はほぼ終わりました。

pkgsrcで、ごー。

それでは、pkgsrcをチェックアウトしましょう。 Xcodeはインストール済みのはずなので、 cvsは既に利用可能です。

$ cvs -d :pserver:anoncvs@anoncvs.netbsd.org/cvsroot login
Logging in to :pserver:anoncvs@anoncvs.netbsd.org:2401/cvsroot
CVS password:                                    ←anoncvs
$ cd /PKGSRC/mnt/usr
$ sudo cvs -d :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot co -P pkgsrc
cvs checkout: Updating pkgsrc
U pkgsrc/Makefile
U pkgsrc/README
    :
U pkgsrc/x11/zenity
$

NetBSDであればこのままお好みのパッケージをインストールすればいいのですが、 それ以外のプラットフォームの場合は、 pkgsrc用のコンパイル環境、bootstrapが必要です。 といっても、BSD makeとかそのあたりの軽いものばかりですけど。

$ cd /usr/pkgsrc/bootstrap
$ sudo ./bootstrap
===> bootstrap command: ./bootstrap 
===> bootstrap started: Sat Aug 26 21:49:10 JST 2006
Working directory is: /usr/pkgsrc/bootstrap/work
   :
Hopefully everything is now complete.
Thank you
===> bootstrap started: Sat Aug 26 21:49:10 JST 2006
===> bootstrap ended:   Sat Aug 26 21:51:47 JST 2006
$

余談ですが、このbootstrapというディレクトリの中に、 前述のREADME.Darwinがあります。

さて、pkgsrcでは、 コンパイル時のさまざまなオプション指定に /etc/mk.conf、または、/usr/pkg/etc/mk.confというファイルで使います。 NetBSDのmakeの場合は前者、bootstrapが提供するbmakeの場合は後者です。 したがって、MacOSXの場合は/usr/pkg/etc/mk.confに設定を記述します。

mk.confは、 システムにあらかじめインストールされているなにかを、 pkgsrcで提供されているものより優先的に使う、 という指定も可能です。 例えば、MacOSXではzlibがシステムで提供されているので、 特に必要がなければこれを優先して使いたい、と思うわけです。 mk.confの内容は試行錯誤ですが、 MacOSXではおおよそ以下のような感じで問題ないと思います (というか、あまり綿密にチェックしてないので、 意味をなしてない設定も多いかもしれません)。

.ifdef BSD_PKG_MK   # begin pkgsrc settings

PKG_DBDIR=      /var/db/pkg
LOCALBASE=      /usr/pkg
FETCH_CMD=      ${LOCALBASE}/bin/ftp
PAX=            ${LOCALBASE}/bin/pax

PREFER_NATIVE=  readline freetype2 Xft2 fontconfig \
                Xrender render Xrandr randrext xcursor \
                MesaLib glu xpm zlib iconv openssl pam \
                dlcompat curl ncurses sun-jre13 sun-jre14 \
                tcp_wrappers openldap openldap-client cups \
                net-snmp pthread cyrus-sasl2 libxml2 libpcap \
                tcl mit-krb5 libltdl gmake bzip2 bunzip \
                flex pth unzip

TOOLS_PLATFORM.unzip?=  /usr/bin/unzip
TOOLS_PLATFORM.gm4?=    /usr/bin/gm4

PKG_DEFAULT_OPTIONS+=   inet6

.endif              # end pkgsrc settings

個々のパッケージのオプションに関してはお好みで追加してください。 このへんは、NetBSDでつかうpkgsrcとまったく同じです。 たとえば、w3mだったら以下のようなものを追加すればいいでしょう。

PKG_OPTIONS.w3m=        w3m-image-imlib2 w3m-m17n w3m-unicode

あとはがんがんインストールするのみです。 日本語でTeXを使いたいのであれば、

$ cd /usr/pkgsrc/textproc/ja-ptex
$ sudo make install
   :

ってな感じです。

起動時にマウントしたいんですけど。

とりあえずこれでpkgsrcが使えるようになりました。 が、実はOSXを再起動するとマウントが外れてしまいます。 なんとか起動時に自動的にマウントするようにしたいものです。 OSXでは、 /System/Library/StartupItemsや /Library/StartupItemsにある設定を起動時に実行するので、 これを使って自動マウントを実現しましょう。 なお、上記ディレクトリのうち、前者はシステムで提供されているもの、 後者はローカルで利用するものです。 /etcと/usr/local/etcの関係と同じと云えばわかりやすいでしょうか。

まずはPKGSRC用StartupItemsディレクトリを作成します (注意!これはシンボリックリンクでは動作しません)。

$ sudo mkdir /Library/StartupItems/PKGSRC
$

ここに、 PKGSRCおよびStartupParameters.plistというふたつのファイルを準備します。 PKGSRCの内容は以下の通り。

#!/bin/sh

exec > /tmp/PKGSRC.log 2>&1

##
# Mount HFSX Filesystem for PKGSRC
##

. /etc/rc.common

PKGSRC_DISKIMAGE="/PKGSRC/HFSX.dmg"
PKGSRC_MOUNTPOINT="/PKGSRC/mnt"

StartService ()
{
    local device

    if [ ! -f "${PKGSRC_DISKIMAGE}" ]; then
        ConsoleMessage "No diskimage ${PKGSRC_DISKIMAGE}"
        return 0;
    fi

    ConsoleMessage "Mounting HFSX Filesystem for PKGSRC"

    hdiutil attach ${PKGSRC_DISKIMAGE} \
        -mountpoint ${PKGSRC_MOUNTPOINT} \
        -owners on -nobrowse -notremovable
    sleep 1

    if [ -d /usr/pkg/etc/rc.d ]; then
        for rc in /usr/pkg/etc/rc.d/*; do 
            ConsoleMessage "Starting ${rc##*/}";
            sh ${rc} start;
        done;
    fi
}

StopService ()
{
    return 0;
}

RestartService ()
{
    return 0;
}

RunService "$1"

これは実行可能でなければなりません。

$ sudo chmod 755 /Library/StartupItems/PKGSRC/PKGSRC
$

一方、StartupParameters.plistはこれ。

{
  Description     = "Mount Filesystem for PKGSRC";
  Provides        = ("PKGSRC");
  Requires        = ("Disks");
}

これで再起動すると自動的にマウントしてくれるようになります。

2006年8月28日

Copy&Pasteもやっぱりコマンドラインでしょ。

[ カテゴリ: MacOSX ]

コマンドラインでがんばろうシリーズ(いつの間にシリーズに…?)、 今回はpbcopy(1)とpbpaste(1)です。

manの概要から引用。

pbcopy, pbpaste - provide copying and pasting to the pasteboard (the Clipboard) from command line

要するに、コマンドラインからクリップボードを扱えるわけです。 例えば、次のように使います。

$ cal | pbcopy
$ pbpaste
    August 2006
 S  M Tu  W Th  F  S
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

$

すなわち、pbcopyは標準入力をクリップボードに転送し、 pbpasteはクリップボードの内容を標準出力に出力するわけです。 当然、pbcopyしてEmacsに貼り付けとかその逆も可能です。

2006年8月29日

Scancode Mapでらくらくキーマップ変更

[ カテゴリ: Windows ]

特にUNIX系列のOSを使ってる人がWindows(だけに限らないけど)を使う場合、 キーボード上のAの左がControlなのとCaps Lockなのとでは、 作業効率が20倍くらい違うことが多いのではないかと思います。 あるいは、右Altで全角半角(日本語アルファベット)切り替えしたい、 などと云うこともあるでしょう。 これを実現するために、 古からAltIMEなど多くのフリーソフトが開発されてきましたが、 ここではレジストリをいじることで変更してみましょう。

Windows 2000/XP/VistaにはScancode Mapというレジストリのキーがあります (NT3.51/NT4はどうだったか忘れました…)。 インストール直後はこのキーは存在しないのですが、 キーを追加することでキーボードのキーマップを変更することができます。

この方法、私はWindows 2000時代から使ってるんですが、 XPではもちろん、Vistaでもベータ版で動作を確認してます。 で、変更はちょっとめんどくさいので、 scancodemap.zipを用意しました。

このレジストリファイルは非保証です!
利用した際のいかなる不具合に対しても責任を負うものではありません!

アーカイブを開くと3つのファイルが含まれています。 必要なファイルをダブルクリックして、レジストリに書き込んでください。 変更できるキーマップと必要なファイルは以下の通りです。

AX105キーボード(右Altで全角半角を切り替え)に変更
必要なファイル:ax105key.reg
Caps LockをControlに変更
必要なファイル:swapcapsctrl.reg
AX105キーボードでCapsLockをControlに変更
必要なファイル:ax105key.reg + swapcapsctrl(ax105key).reg

レジストリに書き込んだら、再起動して変更終了です。 最後のパターンはふたつのファイルを書き込む必要があるので注意してください (私はこれを使っています)。

いずれにしても、復元ポイントを作っておくなど、 元に戻れるような準備をしておくことが重要でしょう。 繰り返しになりますが、このレジストリは非保証なので、 ご自分の責任の下でお使いください。