2005年4月10日
MacOSXで環境変数を設定する
VMwareのBIOSの分際でおちるWindows XPに辟易として、 先日からMacOSXに乗り換えました。 まあ、Windowsを完全に避けて通ることはできないので、 両刀ということにはなるかと思いますが、メインの生活環境を移したということで。
さて、ログインしたらセッション・グローバルな環境変数を設定したくなります。 たとえば、DISPLAYなんて設定したくなりますね。 そんなときには、~/.MacOSX/environment.plistに書くようです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>DISPLAY</key>
<string>localhost:0.0</string>
<key>XAPPLRESDIR</key>
<string>/usr/pkg/lib/X11/app-defaults</string>
</dict>
</plist>
2005年11月25日
MacOS Xでldd
調べてもすぐに忘れてしまうのでメモ。
otool -L
2005年12月 7日
MacOSXでisoイメージを焼く
これまたよく忘れるのでメモ。
graffiti:~[505]% hdiutil burn i386cd.iso ディスクに書き込むデータを準備中 セッションを開いています トラックを開いています トラックを書き込み中 ............................................................................ トラックを閉じています ............................................................................ セッションを閉じています .............................................................................. ディスクの作成を終了中 ディスク作成の検証中... 検証 ............................................................................... ディスクの作成は問題なく完了しました ............................................................................... hdiutil: burn: completed graffiti:~[506]%
ってかんじ。
2005年12月 9日
Gtk on MacOSX
Imedio ABってところが、Gtkのポーティングを始めたらしい。 噂は聞いてたんだけど、すばらしいことですな。 これでetherealつかえるよー。
2006年1月26日
Quartz2DExtreme
MacOSXユーザの中では、まあ知らない人はあまりいないと思われる、 Quartz2DExtremeを有効にするための技。
defaults write /Library/Preferences/com.apple.windowserver Quartz2DExtremeEnabled -bool YES
しかしついにやって参りました、システムクラッシュ。 100%再現する手順を見つけてしまったので、 これはさすがにちょっと使えない。 というわけで、無効にしました。
2006年2月21日
Carbon Emacs
久しぶりにCarbon Emacsを更新したら、いまいち調子が悪い。 WanderlustでPluggedなときにSuspendすると、 ResumeしたときにEmacsがささる。しくしく。
ちなみに、毎回コンパイルの仕方を探し出すのも大変なのでメモ。 使うパッチは以下の通り。
- hide_menubar
- inline-patch
- transparency2
適当にパッチをあてたら、
$ CFLAGS="-DUSE_ATSUI" \
./configure --without-x \
--enable-carbon-app=/Applications \
--prefix=/Applications/Emacs.app/Contents/Resources
…
$ make
…
$ cd lisp
$ make recompile EMACS=../src/emacs
…
$ cd ..
$ make
…
$ sudo make install
…
$
という感じで。
2006年3月10日
Intel MacでVMware???
Mac OS X使いならほとんどの人が読んでるであろう、海上さんの「OS Xハッキング」ですが、Intel Mac強化計画 〜 Intel MacでVMwareが動いた!!なんて記事があったので、うひょーと思ってみてみた。 つくってるのではないかという噂だけ微妙に流れたVMware for Mac OS X(Intel)が、 早くも動き出したのか???
結果はまあ、みていただければわかるんですが、KNOPPIXの上でVMwareってことらしい。 海上さんも冒頭で書いてるけど、これ単に趣味の領域じゃん。わけわからん。 LinuxでVMware動かすんだったらPC/ATでやればいい話でしょ。
2006年3月17日
Intel MacでWindows XP
注目していたWindows XP on an Intel Macプロジェクトですが、 遂にWindows XPとMac OS Xのdual bootに成功したようです。 すばらしい。
2006年3月20日
libpq.dylib: No such file or directory
話に聞くところでは、MacOS X使いでパッケージシステムにpkgsrcを使っているひとは、 相当少ないらしい。NetBSDから移ったひとでさえ「なんでpkgsrc?」とまで云うありさま。 その中には、その昔、*BSDで統一的なパッケージシステムを目指してたひともいるはずなのに、 なんなんでしょうね。あがっちゃったということでしょうか。
それはさておき、やはりNetBSD以外で使おうとすると問題が多いことも確か。 たとえば、databases/postgresql80-clientもすんなりとはコンパイルが通りません。
で、ちゃんと追いかけてないので、だっさいworkaroundなんですが、 とりあえず動かないと困るひとも多い(かもしれない)ので、メモ程度に。
# cd work/postgresql-8.0.7/src/interfaces/ecpg/compatlib # for i in ../../libpq/.libs/*.dylib; do > ln -s $i > done
ってなもんで。
2006年7月18日
Virtual PC Is Now Free!
Whether Microsoft virtualization technology is an important component of your existing infrastructure or you're just a Virtual PC enthusiast, you can now download Virtual PC 2004 absolutely free. Microsoft is also offering the free download of Virtual PC 2007, with support for Windows Vista in 2007.
へー。なんでもただにしないと戦えないんですなあ。
2006年7月28日
teTeX3とdvipdfmx
MacOSXでpkgsrcを使ってるのは物好きらしいですが、その物好きなわけです。 理由はいろいろあるんだけど、まあそこは今回の主題ではないので触れないことで。
で、いつだったかteTeXを3系統に更新しました。 バージョン2ではコンパイルのときにちょっくら細工をしないとだめだったんですが、 そういうこともなくなり快適…かとおもいきや、思わぬ落とし穴が。 dvipdfmxがまともに動かないのです。
これ、ちゃんと調べてませんが、おそらくpkgsrcがどうこうというよりは、 teTeX3ではちゃんと環境にあった設定をしろよって方針に変わったんですかね。 結論から書くと、設定がことごとくされてなかったと云うことです。 まず、
** WARNING ** Could not locate a virtual/physical font for TFM "rml". ** WARNING ** >> There are no valid font mapping entry for this font. ** WARNING ** >> Font file name "rml" was assumed but failed to locate that font. ** ERROR ** Cannot proceed without .vf or "physical" font for PDF output...
って怒られます。dvipdfmxではフォントはcid-x.map (pkgsrcでは/usr/pkg/share/texmf-local/dvipdfm/config/cid-x.map) に書かれてるんですけど、見事に空っぽ。 ってことで、お好みに応じてなんですけど、次のような感じに。
%% This file 'cid-x.map' is read by dvipdfmx for default %% dvipdfmx.cfg setting. Please append fontmap entries here. rml H Ryumin-Light gbm H GothicBBB-Medium rmlv V Ryumin-Light gbmv V GothicBBB-Medium
さて、これで万事解決かというとそういうわけにもいかず。
** WARNING ** No image converter available for converting file "xxxxx.eps" to PDF format. ** WARNING ** >> Please check if you have 'D' option in config file. ** WARNING ** pdf: image inclusion failed for "xxxxx.eps". ** WARNING ** Failed to read image file: xxxxx.eps ** WARNING ** Interpreting special command PSfile (ps:) failed. ** WARNING ** >> at page="4" position="(141.304, 552.345)" (in PDF) ** WARNING ** >> xxx "PSfile="xxxxx.eps" llx=0 lly=0 urx=1039 ury=612 rwi=103"
まーじで。teTeX2ではこんなことはなかったんだがなーとおもいつつ、 云われるがままにDオプションを確認するとdvipdfmx.cfg (/usr/pkg/share/texmf-local/dvipdfm/config/dvipdfmx.cfg) を確認すると(ちょっと長いので途中折り返してます)、
%% *Examples* for GhostScript (PS-to-PDF)%% %% The following example decode all DCT (i.e., JPEG) encoded images %% and then recompress images with Flate (zlib, same as PNG) encode %% filter. If you are using recent version of gs, then please remove %% -dAutoFilterXXXImages and -dXXXImageFilter. %% /FlateEncode is introduced to avoid quality loss of "EPS JPEG" %% images. %% %% Also note that PAPERSIZE=a0 is specified below. This convert PS %% files (including EPS) to A0 papersize PDF. This is necessary to %% prevent gs from clipping PS figure at some papersize. (A0 above %% simply means large size paper)%% %% GhostScript (Unix/Linux): %D "gs -q -dNOPAUSE -dBATCH -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dUseFlateCompression=true -sOutputFile=%o %i -c quit" (略)
全部コメントアウトされてるじゃん… ってことで、gsのコメントアウトをはずして、めでたしめでたし。 ちなみに、Windowsの場合はその次のgswin32cを使えばいいだろうし、 Acrobat持ってるひとはdistill使えばいいってことでしょうね。 MacOSXのAcrobatではDistillerを単独起動できなさそうなので、 まあgsを使って満足。
2006年8月 7日
VMware Virtualization for Mac OS X!
待ってました、遂に来た! VMware for Mac OS X! WWDCで発表されるんじゃないかと云われてますが、 ベータテスタの先行登録が始まってます。 これでだいぶ幸せになれそうだ!
ところでこの先行登録のページ、どこにもVMware for "Intel" Mac OS Xとは書いてないんだよね… PowerPCではエミュレーションするのかなあ。遅そう。
2006年8月16日
やっぱりコマンドラインでしょ。
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
pkgsrcでteTeX3をいれると、vfxdviも動きません。
Unexpected error in "read_ZEIT_char()"
環境をMacBook Proに乗り換えたこともあって、まっさら状態。 これteTeX2のときもあったなー、なんだったけなー、と記憶をたどると、 そういえばフォントが足りないんだったような気がしてきた。
ってことで、fonts/watanabe_vfをインストールすると…正解! まあ、最近X11あがってないから使わないんですけどね、これ。
2006年8月27日
MacOSXでpkgsrc
繰り返しになりますが、 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もやっぱりコマンドラインでしょ。
コマンドラインでがんばろうシリーズ(いつの間にシリーズに…?)、 今回は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年9月 4日
ハードウェアとかソフトウェアの詳細もコマンドラインで。
「…がうまく動かないんだけどさー」
「OSXのバージョンは?」
なんて会話、よくありますよね。 そんなときは林檎のアイコンから「このMacについて」を選択すると、 OSXのバージョンとプロセッサ、および、メモリについて簡単な情報を得ることができます。 もうちょっと詳しい情報が必要な場合は、 システムプロファイラを起動します。 これは、 上記の「このMacについて」で現れるダイアログから「詳しい情報…」をクリックしてもいいし、 ユーティリティから直接起動することもできます。
でも…こんな情報もコマンドラインで知りたいですよね、ふつー。 ってことで、今回はシステムに関する情報を得る、です。
unameとsw_ver
まず、OSXに関する情報から。 上記の会話のように、OSXのバージョンを得るには… ええ、もちろんunameでもいいんですよ、unameでも。 これはBSDでもLinuxでもSolarisでも(略)でも使えるので、 説明するまでもないですが、
$ uname -a Darwin xxxx.xxxx 8.7.1 Darwin Kernel Version 8.7.1: Wed Jun 7 16:19:56 PDT 2006; root:xnu-792.9.72.obj~2/RELEASE_I386 i386 i386 $
ってな具合です。 一方、sw_verというOSX用のコマンドもあります…が、 実はunameのほうが情報量が多いかもしれない。 sw_verで勝ってるのはBuildVersionが得られることくらいです。
$ sw_ver ProductName: Mac OS X ProductVersion: 10.4.7 BuildVersion: 8J2135 $
system_profiler
一方、上記のシステムプロファイラのコマンドライン版がsystem_profilerです。 -detailLevelで情報量を指定することができます。 可能な値はmini/basic/fullで、省略するとbasicです。
$ system_profiler -detailLevel mini
Hardware:
Hardware Overview:
Machine Name: MacBook Pro 15"
Machine Model: MacBookPro1,1
CPU Type: Intel Core Duo
Number Of Cores: 2
CPU Speed: 2 GHz
L2 Cache (shared): 2 MB
Memory: 2 GB
Bus Speed: 667 MHz
Boot ROM Version: MBP11.0055.B02
SMC Version: 1.2f10
Sudden Motion Sensor:
State: Enabled
…(略)…
AirPort Card:
AirPort Card Information:
Wireless Card Type: AirPort Extreme (0x168C, 0x86)
Wireless Card Locale: Japan
Wireless Card Firmware Version: 0.1.24
Wireless Channel: 11
$
-detailLevel fullにするとアプリケーションからStartupItemsに至るまで、 ありとあらゆる情報が出力されます。 これだけの情報が出ればさすがに十分ではないかと。
ちなみに-xmlオプションをつけると、上記の情報をXMLで出力できます。 その出力を.spxという拡張子で保存すると、 システムプロファイラで見ることができるようです。 まあ、コマンドラインでやろうぜという趣旨からすると、 どうでもいい機能ですねー。
2006年9月18日
PowerBook G4は工業製品として失敗だ
|
|
と、数年前に吠えた人がいましたが、ほんとに品質低いなあ。 今使っているMacBook Proも使い始めて一ヶ月くらいだというのに、 なんと内蔵スピーカを認識しなくなった。 先日もiPod shuffleのバグを踏んだしさ。 さて、そうすると何が起きるか。 サウンド出力デバイスとして内蔵スピーカは死んでいる。 ライン出力には何も挿さっていない。 そうすると残っているのは、なんとS/P-DIFなんですな。 というわけで手元のMacBook Pro、ライン出力端子が赤く光っております。 …ていうか、Apple、いい加減にしろよ。
追記
その後、突然スピーカデバイスが認識されました。 PMU Resetしても見えなかったのに、 再起動もせず、ログアウトすらしてないのに。意味不明…
2006年9月21日
iTunes7とAirMac Express
ちまたではiTunes7の新機能がどうだという話題で持ちきりですが(ほんとか?)、 実はすてきな機能が追加されていました。
|
ご存じの通り、 iTunesからはAirMac Expressに接続されたスピーカに出力できるわけですが、 たとえば家中にAirMac Expressを配置して音楽で埋め尽くそうとしても、 同時にひとつのスピーカしか選択できなかったのです。 しかし、iTunes7では複数のスピーカを同時に選択できるようになりました。 これで家中を音楽の洪水で満たすことができます!
なお、「iTunes7では」と書きましたが、 ちゃんと見ていたわけではないので、 iTunes6の後半で既にサポートされていたのかもしれません。
2006年10月 2日
CrashReporterとcore dump
ひょっとして常識かもしれないし、 あるいは、意外に知られてないかもしれないし、ってことで、 OSXでのCrashReporterとcore dumpについて。
クラッシュ・ダイアログでデバッグ情報を。
|
|
アプリケーションを使っていると、
このアプリケーションは予期せず終了しました。
みたいなダイアログが出て終了することがありますね。 心の中で「ちっ」とか云いながら再起動したりするわけですが、 もしもそのアプリケーションが自分の開発したものだったりすると、 もうちょっと詳細なデバッグ情報が欲しくなるわけです。 そんなときは、CrashReporterPrefsで設定を変更しましょう。
$ open -a CrashReporterPrefs $
これでDeveloperを選んでおくと、 アプリケーションが落ちたときに、 その原因とバックトレースが表示されるようになります。 ちなみに、バックグラウンドで動いているdaemonなんかでもレポートが来ます(たぶん)。
クラッシュのログをみたい
上記のダイアログは、最初は「おぉ」なんて思うかもしれませんが、 常用するにはうざすぎます。 そもそも「ふつーコマンドライン」と思う人には、 閉じるボタンを押さないと消えてくれないなんて邪魔以外の何者でもありません。
そんなときでも大丈夫。 実は、OSXでは何もしなくてもクラッシュをログに残しておいてくれるのです。 システム関係であれば/Library/Logs/CrashReporterに、 ユーザ権限で動いているものであれば~/Library/Logs/CrashReporterに、 それぞれクラッシュ・レポートが残っているはずです。 たまに見ると、 ATOK19がびしばし落ちている形跡なんかが残っていて驚愕できます。
core吐けよ、core
OSXでコードを書いていると、
「あれ?げろってるのにcoreないぞ」意味不明
なんてことはないでしょうか。 実は、OSXではcore dumpがデフォルトで無効になっているのです。 coreを吐かせるには、/etc/hostconfigに
COREDUMPS=-YES-
を追加して再起動してください。 きっと、/cores/core.### (###はpid)というファイルがたくさんできるでしょう。 え、できない? それは、シェルでリソース制限がかかってるんじゃないですか。
$ limit coredumpsize coredumpsize 0kB $ limit coredumpsize 100M $ limit coredumpsize coredumpsize 100MB $
とかなんとか、どんなシェルでも大差はないと思うんですが、 まあシェルにあった方法でリソースを設定してあげてください。
ちなみにこれで吐いてくれるcoreファイル、Mach-Oだからかばかでかいです。 NetBSDなんかで吐かせている感覚でいくと大変です。 というわけで、実は実用的ではありません。 なので、現実的にはgdb使うことになるんだろうと思います。
2006年10月 5日
ネットワーク環境の切り替えもコマンドラインでしょ。
いまどきネットワークに繋がってない計算機なんて滅多にないわけで、 なぜかこのブログを見ているあなたもネットワークに繋がってるわけですね。 で、ラップトップを使っていると接続するネットワークが頻繁に変わるので、 環境に応じた設定をプロファイルとして保存しておき、 接続先によって切り替えてあげるわけです。 この仕組みはOSやハードウェアのベンダによってさまざまで、 ThinkPad+Windows XPではAccessConnectionsだったり、 OSXではネットワーク環境設定だったりします。
今回は、例によってOSXのネットワーク環境設定をコマンドラインから切り替えてあげましょう、という趣旨です。
scselectを使う
OSXにはSystem Configurationという枠組みがあって、 configdが管理しているわけですが、 こいつをいじるためには以下のようなコマンドがあります。
- configd(8)
- scutil(8)
- scselect(8)
今回使うのは一番最後のscselectです。 scという割にSystem Configurationに汎用的ななにかではなく、 ネットワーク環境を切り替えられるだけです。
さて、すでにPowerBookとかMacBookを使っている人は、 ネットワーク環境がいくつも定義されていることだと思います。 scselectを引数なしで実行すると、 定義されている環境の一覧が表示されます (下記の例は適当に削ってますが)。
$ scselect Defined sets include: (* == current set) F770774D-ABDC-4686-90ED-BBB7D686D1E4 (???) F89CD707-21C5-4121-99F3-1C6AF4805CF5 (DHCP (Wireless)) 0 (Automatic) * 0BACA6E6-9B74-4B3C-858D-79E5D2F2314D (DHCP (Wired)) 575CFD8C-1A50-42FF-B7AD-64A27CE6B611 (OFF) $
最初の十六進数の羅列が識別子で、 続く括弧の中はユーザが定義したネットワーク環境の名称です。 また、先頭にアスタリスクがついているものが現在利用中の環境です。
ネットワーク環境を切り替えるには、 scselectの引数に識別子か名称を指定します。
$ scselect F770774D-ABDC-4686-90ED-BBB7D686D1E4 CurrentSet updated to F770774D-ABDC-4686-90ED-BBB7D686D1E4 (???) $
名称が???になっているのは日本語を使っているからです。 残念ながら日本語は扱えないようなので、 こういうときは上記のように識別子を使うしかありません。 ちなみに、-nというオプションもあるようで、 これをつけると再起動時にネットワーク環境が切り替わる…らしいですが、 使ったことがないので分かりません。
以上でおしまい…というのもあんまりなので、 ついでにzshを使っている皆様へ、 scselectで補完するための定義を載せておきます。 いつも通り、fpathの通ったところに_scselectというファイル名でおいてください (正しさに責任は持てません…)。
#compdef scselect
local curcontext="$curcontext" context state line ret=1
_arguments -C \
'-n[Delay changing the next system boot]' \
'(-n)1::locations:->locations' \
&& ret=0
if [[ -n "$state" ]]; then
local tmp desc list identifiers names expl
tmp=( "${(@f)$(_call_program locations scselect 2>&1)}" )
desc="$tmp[1]"
list=( "${(@M)tmp[2,-1]:##(( |\*)#${PREFIX//\\/}*|[^(]#\(${PREFIX//\\/}*\))}" )
names=( "${(@)${(@)list#*\(}%\)}" )
identifiers=( "${(@M)${(@)list##( |\*)#}##[[:xdigit:]-]#}" )
if (( ${#list} )); then
_message -r $desc
_message -r ${(F)list}
fi
zstyle ":completion:${curcontext}:$1" sort off
_wanted locations expl 'Locations' \
compadd "$@" -n -a names identifiers && ret=0
fi
return ret
2006年10月14日
OSXで『デ{1,2}フラグ』
最近、シリアルで4Mくらいのファイルを転送することが多いので、 その待ち時間に小ネタを書くことにしてみた。
しげやさんがOSXでもデフラグが結構効くなんて話を書いてたので、 ではこっちはこれで。 手元の環境にはTechTools Proみたいな何かはないので、 残念ながらというか当然というか、試してません。 勇気のあるかたは是非どうぞ! もちろん当方でも責任はとりませんのであしからず。
2006年10月29日
ちょっと悲しい最近のMacOSX
Tigerを使っていると、最新のバージョンは10.4.8ですが、 10.4の初期にはなかったバグがかなり増えてきて、 だいぶ悲しいことになっています。
最も悲しいのは次のふたつ。
IPv6リンクローカルの挙動がおかしい
リンクローカルの挙動というか経路を引くあたりではないかと予想しますが、 RAが降ってこない環境において、
$ ping6 -w -I en0 ff02::1 PING6(72=40+8+24 bytes) fe80::216:cbff:fe8b:9df2%en0 --> ff02::1 44 bytes from fe80::xxxx:xxxx:xxxx:xxxx%en0: xxx 37 bytes from fe80::yyyy:yyyy:yyyy:yyyy%en0: yyy 31 bytes from fe80::zzzz:zzzz:zzzz:zzzz%en0: zzz ^C --- ff02::1 ping6 statistics --- 1 packets transmitted, 1 packets rece $
というのはいいとして、こいつらに個別に撃つと、
$ ping6 fe80::yyyy:yyyy:yyyy:yyyy%en0 ping6: UDP connect: No route to host $
おーい。…といいつつ、実はif indexを指定すると通る。
$ ping6 fe80:4::yyyy:yyyy:yyyy:yyyy PING6(56=40+8+8 bytes) fe80::xxxx:xxxx:xxxx:xxxx%en0 --> fe80::yyyy:yyyy:yyyy:yyyy%en0 16 bytes from fe80::yyyy:yyyy:yyyy:yyyy%en0, icmp_seq=0 hlim=64 time=0.4 ms ^C --- fe80:4::yyyy:yyyy:yyyy:yyyy ping6 statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.400/0.400/0.400 ms $
おーい、なんだよこれー。 使えないことはないと云っても、超KAME実装依存なんですけど。
ちなみに、RAが降ってくる環境では微妙に挙動が違った気がする…
「ネットワーク環境」とAirMacの仲が悪い
初期のTigerは、AirMacの設定を定義したネットワーク環境ごとに独立して保持していました。 というか、これが本来の正しい姿。 ところが最近は、あるネットワーク環境でAirMacの設定を変更すると、 ほかのネットワーク環境の定義でも設定が変わってしまう。 すなわち、システムで単一のAirMac設定セットしかもてないようなのです。
なんだかよく分かりませんね、はい。 ええと、要するに、あるネットワーク環境の定義でAirMacを使う場合、 SSIDとWEPなんかをひとつにしたいわけですよ。 「職場」のネットワーク環境定義には、職場のSSIDとWEP。 「自宅」のネットワーク環境定義には、自宅のSSIDとWEP。 ところが、このようにネットワーク環境定義ごとに独立してAirMacの設定を保持できないということです。
これによってどのような被害を被るか、ですが。
- SSIDをばらまくので、そのノートの持ち主の行動範囲が分かる
- すべてのSSIDを試行するので接続するまでにやたら時間がかかる
なんてところでしょうか。うーん、はやくなおしてよー。
2007年1月 6日
Gtk on MacOSX (pkgsrc編)
昔、Gtk on MacOSXの開発が進められているらしいということを書きましたが、 pkgsrcでも使えるようになりました。
とはいえ、まあ開発途上という感じですが、使えないことはない。 少なくとも、wiresharkはなんとなく使えました。 /usr/pkg/etc/mk.confに以下のような記述を追加してください。
PKG_OPTIONS.pango= -x11 PKG_OPTIONS.cairo= -x11 PKG_OPTIONS.glitz= -x11 PKG_OPTIONS.gtk2+ = -x11 quartz
どーでもいいことですが、PKG_OPTIONS.gtk2+と=の間は、 スペースを挿入しないとだめです…
2007年1月16日
imlib2 on MacOSX
imlib2 1.3.0をMacOSX(Intel)でコンパイルしようとしても、そのままでは通りません。 CPUがIntelだとMMXを有効にするために一部のコードがアセンブラに入れ替わるのですが、 そのアセンブラがMach-O用ではないからです。
で、解決法としては、
- MMXを無効にする
- コードを修正する
ですが、別に激しく使ってるわけではないので前者で逃げます。 これを実現する一番簡単な方法は、configureに--disable-mmxをつけること。 多くの場合はこれでいいでしょう。
では、pkgsrcでgraphics/imlib2を使ってる場合はどうすればいいでしょう。 CONFIGURE_ARGSに上記のオプションを追加してもいいんですが、 そもそもimlib2自体の問題なので、configure{,.in}にパッチを当てる方向で。 graphics/imlib2/pathcesに、 以下のファイルをpatch-local-aaおよびpatch-local-abとして置くと、 DarwinではMMXのデフォルト値がoffになります。 もちろん、--enable-mmxするとonになりますが、コンパイルは通りません。
--- configure.in.orig 2007-01-15 14:59:39.000000000 +0900 +++ configure.in 2007-01-15 14:59:52.000000000 +0900 @@ -116,6 +116,7 @@ case $host_os in solaris*) mmx="no";; + darwin*) mmx="no";; esac dnl
--- configure.orig 2007-01-15 15:01:34.000000000 +0900 +++ configure 2007-01-15 15:01:45.000000000 +0900 @@ -21224,6 +21224,7 @@ case $host_os in solaris*) mmx="no";; + darwin*) mmx="no";; esac # Check whether --enable-mmx was given.
2007年2月10日
MacOSXのホスト名を固定したい
そういえば、これ書くの忘れてた。 MacOSXでホスト名を固定したい。 ここでいうホスト名とは、mDNSで応えるxxx.localってやつではなくて、 hostnameで表示されるほうです。 これを固定しないと、たとえばDHCPでアドレスを拾ったときに、 一緒に名前を配られるとそれになっちゃいます。
やり方は簡単で、/etc/hostconfigに以下の行を追加するだけ。
HOSTNAME=hoge.fuga.com
特に、シェルでホスト名を表示してると気になるかも。
2007年2月14日
SSHKeychain
ssh-agentのMacOSX用フロントエンドであるSSHKeychainですが、 sleep/wakeupの瞬間にクラッシュしたり、逆に無限ループに入るという不具合がありました。 この不具合がsubversionの先頭(r96)で修正されたようです。 対応するバグ報告はこちら。
2007年2月22日
Spanning Syncすごい!
スケジュール管理、みんなが頭を悩ませるところです。 普段の生活環境はOSXなのでiCal使ってるんですが、例えばMacBook ProとMacProのiCalをどうやって同期するんだとか、みんなで共有して変更できるカレンダーが欲しい、とか、そういうことができないわけです。
|
いや、できるんですよ。.macつかえばね。 でもやっぱり使わないでしょ、ふつう。
と、あきらめかけていたわけですが、そこに突如現れた(というか発見しただけですが)Spanning Syncです。 このツール、なんとiCalとGoogle Calendarの同期ができるのです。 これで一気にさまざまな問題が解決…
- Google Calendar経由で複数台のOSXでiCalを同期できる
- Google Calendarは他の人とカレンダーを共有できるので、事実上iCalでも共有カレンダーをサポートできる
- 手元にOSXがなくてもスケジュールを確認できる
すばらしい、すばらしすぎるぞSpanning Sync… 今はベータ版ですが、今のところは特に不具合もなく動いているようです。 もうすぐ正式版が発売されるようですが、いくらになるんだろう。
2007年2月28日
OSXクラッシュしまくり
OSXクラッシュしまくりです。ひどいです。Windowsとかわりません。
まずひとつめ。AFPでのマウントを外したときに(だとおもう、Backtraceからはちょっと微妙)、マウントされてる側でクラッシュするというもので、比較的再現性あり。
panic(cpu 0 caller 0x0035BEAC): freeing free mbuf
Backtrace, Format - Frame : Return Address (4 potential args on stack)
0x24efbdb8 : 0x128d1f (0x3c9540 0x24efbddc 0x131df4 0x0)
0x24efbdf8 : 0x35beac (0x3e9c7c 0x441838 0x0 0x19778c)
0x24efbe38 : 0x7034a4 (0x36c1dc00 0x0 0x23757000 0x23757000)
0x24efbe58 : 0x9d4454 (0x23757000 0x36c1dc00 0x0 0x2)
0x24efbe88 : 0x9d2ad0 (0x23757000 0x36c1dc00 0x0 0x384ba00)
0x24efbea8 : 0x9d5d7c (0x23757000 0x0 0x40000000 0x0)
0x24efbf08 : 0x398a1f (0x23757000 0x384ba00 0x1 0x371c06c)
0x24efbf58 : 0x397bf1 (0x384ba00 0x0 0x24efbf98 0x0)
0x24efbf88 : 0x397927 (0x384c900 0x0 0x24efbfc8 0x202b3f)
0x24efbfc8 : 0x19a74c (0x384c900 0x0 0x19d0b5 0x4285f78)
Backtrace terminated-invalid frame pointer 0x0
Kernel loadable modules in backtrace (with dependencies):
com.apple.iokit.AppleYukon(1.0.7b3)@0x9d0000
dependency: com.apple.iokit.IONetworkingFamily(1.5.1)@0x6fc000
dependency: com.apple.iokit.IOPCIFamily(2.1)@0x57f000
com.apple.iokit.IONetworkingFamily(1.5.1)@0x6fc000
いまどきfreeing free mbufですよ。そんな根っこがばぐっててどーすんの。
ふたつめ、こっちはちょっと特殊。今のところ再現性なし。ParallelsでゲストOSをインストールしていないときに電源を入れたらクラッシュ。まあ、Parallelsいろいろやってるからやむを得ないともいえるけど、なんだかなー。
panic(cpu 1 caller 0x001A329B): Unresolved kernel trap (CPU 1, Type 27=Unknown), registers:
CR0: 0x8001003b, CR2: 0x50a1c000, CR3: 0x00e25000, CR4: 0x000006e0
EAX: 0x0000000a, EBX: 0x6d626572, ECX: 0x00000000, EDX: 0x00ed6fc0
CR2: 0x50a1c000, EBP: 0x36403b18, ESI: 0x6d616769, EDI: 0x63216e75
EFL: 0x00000246, EIP: 0x4fa8a2d1, CS: 0x00000008, DS: 0x50a10010
Backtrace, Format - Frame : Return Address (4 potential args on stack)
0x36403908 : 0x128d08 (0x3c9ac4 0x3640392c 0x131de5 0x0)
0x36403948 : 0x1a329b (0x3cf784 0x1 0x1b 0x3c8f8c)
0x36403a58 : 0x19a934 (0x36403a70 0x36400048 0x36400010 0x190010)
0x36403b18 : 0x4ed4d10a (0x4b13a98 0x0 0x4b13a84 0x169)
0x36403bd8 : 0x4ed4d862 (0x4b13a84 0x36403eb8 0x18 0x6)
0x36403d38 : 0x4ed4a8c7 (0x4b13a84 0xc0185401 0x36403eb8 0x6)
0x36403d68 : 0x1ef52e (0xd000000 0xc0185401 0x36403eb8 0x81)
0x36403da8 : 0x1e63b0 (0x36403dd0 0x297 0x36403e08 0x55e79c4)
0x36403e08 : 0x1de1b1 (0x5acebdc 0xc0185401 0x36403eb8 0x81)
0x36403e58 : 0x330795 (0x51fcc80 0xc0185401 0x36403eb8 0x55e79c4)
0x36403e88 : 0x34eaf1 (0x51fcc80 0xc0185401 0x36403eb8 0x55e79c4)
0x36403f58 : 0x3788ea (0x55e79c4 0x5687f38 0x5687f7c 0x0)
0x36403fc8 : 0x19ad0e (0x78ac180 0x0 0x10 0x0) No mapping exists for frame pointer
Backtrace terminated-invalid frame pointer 0xbfffdf58
Kernel loadable modules in backtrace (with dependencies):
com.parallels.kext.vmmain(2.2)@0x4ed49000
2007年3月 7日
メモリ不具合疑惑
最近、OSXの不具合ばっかりですが、また落ちました。
とはいっても、今度は前回までとちと様子がちがう。
panic(cpu 0 caller 0x001944A8): pmap_enter: null pv_list! Backtrace, Format - Frame : Return Address (4 potential args on stack) 0x363fbd28 : 0x128d08 (0x3c9ac4 0x363fbd4c 0x131de5 0x0) 0x363fbd68 : 0x1944a8 (0x3cd0cc 0x1519000 0x0 0x0) 0x363fbdf8 : 0x160ab6 (0x657ac70 0x1519000 0x0 0x76783) 0x363fbf48 : 0x1a350e (0x52cc000 0x1519000 0x0 0x1) 0x363fbfc8 : 0x19a864 (0x5bbd180 0x0 0x19d0b5 0x5442960) No mapping exists for f rame pointer Backtrace terminated-invalid frame pointer 0xbfffe808
これ、まさにターミナルからmakeって打った瞬間に落ちたんですけど、さすがに今どきpmapまわりが腐ってることはないだろうと。そんなことがあったら、先日のmbufよりたちが悪い。しかも、前日の夜にFinderは激しく落ちるわ、gccは転けまくるわ(しかも転ける場所は不定)、Terminalも落ちるわのお祭りでした。なので、このpanicでさすがにこれはメモリが腐ってるでしょうと疑わざるを得なくなったわけです(というか、重い腰をあげたって感じ)。
さて、i386なら(って、MacBook Proもi386だけど、EFIじゃないふつーのBIOSならってことね)memtest86で終わりなんですが、いかんせんMacBook Proなのでどうしたものかと。で、ちょっと探してみるとRemberというメモリチェッカがありました。本家はここで、日本語化したのはMacのメモリ専用ショップ(これもすごいと思うが)のマックメムさん。本家から取得してもたぶん日本語化されていると思います。メモリチェッカなので英語のままでもいいと思いますけど。
RemberはOSXの上で動きます。本当はこんなでかいOSの上で動かさない方がいいんだけど、面倒な気分でいっぱいなのでこれでいくことにします。以下、一部整形済み結果。
Memtest version 4.13 (32-bit) Copyright (C) 2004 Charles Cazabon Copyright (C) 2004, 2005 Tony Scaminaci (Macintosh port) Licensed under the GNU General Public License version 2 only MacOS X (Darwin) running in multiuser mode POSIX version 200112 Pagesize is 4096 Requested memory: 2598MB (2724560896 bytes) Available memory: 2598MB (2724560896 bytes) Allocated memory: 2269MB (2380234752 bytes) at local address 0x02008000 Attempting memory lock... locked successfully Creating test buffers... Buffer A: 1134MB (1190117376 bytes) at local address 0x02008000 Buffer B: 1134MB (1190117376 bytes) at local address 0x48f04000 Running 1 test sequence... Test sequence 1 of 1: Stuck Address : FAILURE: possible bad address line at offset 0x0f473802. Skipping to next test... Random Value : FAILURE: 0xc2b75a9b != 0xf2b75a9b at offset 0x0f473802. FAILURE: 0xd7ffd72b != 0x77ffd72b at offset 0x0f47380a. FAILURE: 0x677fe5da != 0xf77fe5da at offset 0x0f473812. (略) FAILURE: 0xcc9c8bdd != 0x5c9c8bdd at offset 0x0f473bfa. FAILURE: 0x4bbf0351 != 0xfbbf0351 at offset 0x0f473df2. Compare XOR : FAILURE: 0xc608ce22 != 0x9608ce22 at offset 0x0f473802. FAILURE: 0xd3404392 != 0x13404392 at offset 0x0f47380a. FAILURE: 0x63c07163 != 0x93c07163 at offset 0x0f473812. (略) FAILURE: 0xc8231f64 != 0x38231f64 at offset 0x0f473bfa. FAILURE: 0x4f0097e8 != 0x9f0097e8 at offset 0x0f473df2. Compare SUB : FAILURE: 0xce1a3c5a != 0x9e1a3c5a at offset 0x0f473802. FAILURE: 0x5b51b1ca != 0x1b51b1ca at offset 0x0f47380a. FAILURE: 0x6bd1df9b != 0x9bd1df9b at offset 0x0f473812. (略) FAILURE: 0xc0348d9c != 0x40348d9c at offset 0x0f473bfa. FAILURE: 0x47120620 != 0xa7120620 at offset 0x0f473df2. Compare MUL : FAILURE: 0xcafacae4 != 0x2afacae4 at offset 0x0f473802. FAILURE: 0x585d8244 != 0xc85d8244 at offset 0x0f47380a. FAILURE: 0x66772bde != 0x46772bde at offset 0x0f473812. (略) FAILURE: 0xc8edac58 != 0xb8edac58 at offset 0x0f473bfa. FAILURE: 0x4f016b40 != 0xaf016b40 at offset 0x0f473df2. Compare DIV : FAILURE: 0x40000000 != 0x00000000 at offset 0x0f473802. FAILURE: 0x50000000 != 0x00000000 at offset 0x0f47380a. FAILURE: 0x40000000 != 0x00000000 at offset 0x0f473812. (略) FAILURE: 0x20000000 != 0x00000000 at offset 0x0f473bf2. FAILURE: 0xc0000000 != 0x00000000 at offset 0x0f473bfa. Compare OR : FAILURE: 0xcda73066 != 0xada73066 at offset 0x0f473802. FAILURE: 0xdda73066 != 0xada73066 at offset 0x0f47380a. FAILURE: 0x6da73066 != 0xada73066 at offset 0x0f473812. (略) FAILURE: 0xcda73066 != 0xada73066 at offset 0x0f473bfa. FAILURE: 0x4da73066 != 0xada73066 at offset 0x0f473df2. Compare AND : FAILURE: 0xc9853002 != 0x29853002 at offset 0x0f473802. FAILURE: 0x59853002 != 0x29853002 at offset 0x0f47380a. FAILURE: 0x69853002 != 0x29853002 at offset 0x0f473812. (略) FAILURE: 0xc9853002 != 0x29853002 at offset 0x0f473bfa. FAILURE: 0x49853002 != 0x29853002 at offset 0x0f473df2. Sequential Increment: FAILURE: 0xcef9e7ff != 0x8ef9e7ff at offset 0x0f473802. FAILURE: 0x5ef9e807 != 0x8ef9e807 at offset 0x0f47380a. FAILURE: 0x6ef9e80f != 0x8ef9e80f at offset 0x0f473812. (略) FAILURE: 0xcef9ebf7 != 0x8ef9ebf7 at offset 0x0f473bfa. FAILURE: 0x4ef9edef != 0x8ef9edef at offset 0x0f473df2. Solid Bits : FAILURE: 0xcfffffff != 0xffffffff at offset 0x0f473802. FAILURE: 0x6fffffff != 0xffffffff at offset 0x0f473812. FAILURE: 0x6fffffff != 0xffffffff at offset 0x0f473822. (略) FAILURE: 0xcfffffff != 0xffffffff at offset 0x0f473bfa. FAILURE: 0x5fffffff != 0xffffffff at offset 0x0f473df2. Block Sequential : FAILURE: 0x40000000 != 0x00000000 at offset 0x0f473802. FAILURE: 0x50000000 != 0x00000000 at offset 0x0f47380a. FAILURE: 0x40000000 != 0x00000000 at offset 0x0f473812. (略) FAILURE: 0x20000000 != 0x00000000 at offset 0x0f473bf2. FAILURE: 0xc0000000 != 0x00000000 at offset 0x0f473bfa. Checkerboard : FAILURE: 0xc5555555 != 0x55555555 at offset 0x0f473802. FAILURE: 0xd5555555 != 0x55555555 at offset 0x0f47380a. FAILURE: 0x65555555 != 0x55555555 at offset 0x0f473812. (略) FAILURE: 0xc5555555 != 0x55555555 at offset 0x0f473bfa. FAILURE: 0x45555555 != 0x55555555 at offset 0x0f473df2. Bit Spread : FAILURE: 0xc0000005 != 0x00000005 at offset 0x0f473802. FAILURE: 0x50000005 != 0x00000005 at offset 0x0f47380a. FAILURE: 0x40000005 != 0x00000005 at offset 0x0f473812. (略) FAILURE: 0x20000005 != 0x00000005 at offset 0x0f473bf2. FAILURE: 0xc0000005 != 0x00000005 at offset 0x0f473bfa. Bit Flip : FAILURE: 0xcffffffe != 0xfffffffe at offset 0x0f473802. FAILURE: 0x6ffffffe != 0xfffffffe at offset 0x0f473812. FAILURE: 0x6ffffffe != 0xfffffffe at offset 0x0f473822. (略) FAILURE: 0xcffffffe != 0xfffffffe at offset 0x0f473bfa. FAILURE: 0x5ffffffe != 0xfffffffe at offset 0x0f473df2. Walking Ones : FAILURE: 0xcffffffe != 0xfffffffe at offset 0x0f473802. FAILURE: 0x6ffffffe != 0xfffffffe at offset 0x0f473812. FAILURE: 0x6ffffffe != 0xfffffffe at offset 0x0f473822. (略) FAILURE: 0xcffffffe != 0xfffffffe at offset 0x0f473bfa. FAILURE: 0x5ffffffe != 0xfffffffe at offset 0x0f473df2. Walking Zeroes : FAILURE: 0x40000001 != 0x00000001 at offset 0x0f473802. FAILURE: 0x50000001 != 0x00000001 at offset 0x0f47380a. FAILURE: 0x40000001 != 0x00000001 at offset 0x0f473812. (略) FAILURE: 0x20000001 != 0x00000001 at offset 0x0f473bf2. FAILURE: 0xc0000001 != 0x00000001 at offset 0x0f473bfa. *** Address Test Failed *** One or more DIMM address lines are non-functional. *** Memory Test Failed *** Please check transcript for details.
…すげえ、ぼろぼろだ。このMacBook Proは1+2の3Gなんですけど、一応抜き差ししてみる…のついでに、とりあえず1GにしてRemberを走らせてみよう。
Memtest version 4.13 (32-bit) Copyright (C) 2004 Charles Cazabon Copyright (C) 2004, 2005 Tony Scaminaci (Macintosh port) Licensed under the GNU General Public License version 2 only MacOS X (Darwin) running in multiuser mode POSIX version 200112 Pagesize is 4096 Requested memory: 740MB (776441856 bytes) Available memory: 740MB (776441856 bytes) Allocated memory: 740MB (776441856 bytes) at local address 0x02008000 Attempting memory lock... locked successfully Creating test buffers... Buffer A: 370MB (388220928 bytes) at local address 0x02008000 Buffer B: 370MB (388220928 bytes) at local address 0x19244800 Running 1 test sequence... Test sequence 1 of 1: Stuck Address : ok Random Value : ok Compare XOR : ok Compare SUB : ok Compare MUL : ok Compare DIV : ok Compare OR : ok Compare AND : ok Sequential Increment: ok Solid Bits : ok Block Sequential : ok Checkerboard : ok Bit Spread : ok Bit Flip : ok Walking Ones : ok Walking Zeroes : ok All tests passed.
ほほう。じゃあ次に、2Gにしてやってみよう。てか、石がひとつやられてるだけだと思うんだけど、運が悪ければOSがあがることすら無理かもしれず…が、なんかあがったので、以下Remberの一部整形済み結果。
Memtest version 4.13 (32-bit) Copyright (C) 2004 Charles Cazabon Copyright (C) 2004, 2005 Tony Scaminaci (Macintosh port) Licensed under the GNU General Public License version 2 only MacOS X (Darwin) running in multiuser mode POSIX version 200112 Pagesize is 4096 Requested memory: 1754MB (1839308800 bytes) Available memory: 1754MB (1839308800 bytes) Allocated memory: 1754MB (1839308800 bytes) at local address 0x02008000 Attempting memory lock... locked successfully Creating test buffers... Buffer A: 877MB (919654400 bytes) at local address 0x02008000 Buffer B: 877MB (919654400 bytes) at local address 0x38d15000 Running 1 test sequence... Test sequence 1 of 1: Stuck Address : FAILURE: possible bad address line at offset 0x1209e80a. Skipping to next test... Random Value : FAILURE: 0x3fff225d != 0x5bff225d at offset 0x0455b402. (ばっさり略) *** Address Test Failed *** One or more DIMM address lines are non-functional. *** Memory Test Failed *** Please check transcript for details.
ぼろぼろー。あと考えられるのは、Remberが2Gのメモリと仲悪い…なんてことは考えにくいでしょうが、一応3GのMBPのひとにもテストをお願いしました。待て次号!
ってわけで、現在1G状態…
2007年3月 8日
続:メモリ不具合疑惑
ってことで、同じ3GのMBPでRember試してもらいましたが、ちゃんとpassしたそうです。 やっぱりメモリ不良でした…
2007年3月15日
SpanningSync 1.0
you'll be able to choose either a $25 one-year subscription or a $65 one-time payment.
ううむ、予想よりも高い…
2007年10月17日
LeopardのKeychainはいかがなものか
というわけで、10月26日に出荷と正式にアナウンスがあったわけですが。 このへんに300+ New Featuresという情報が掲載されています。
Keychainは複数のクライアント証明書の扱いがちょーへたくそで、これが頭痛の種だったわけですが、前述のページでKeychainと証明書に関する記述は以下のような感じ。
Multiple User CertificatesHave more flexibility in choosing a digital certificate for encrypting email messages. With support for multiple user certificates, you can use the Keychain application to associate your certificates with various email addresses.
…いやなんとも微妙。Mail.appで扱えるのはいいとして、Safariはどうなんでしょう。 こちらのほうが切実なんですけど。
2007年12月19日
またおちた
ひょっとして相性悪いのか?
Wed Dec 19 01:03:27 2007
panic(cpu 1 caller 0x0039CD77): "m_free: freeing an already freed mbuf"@/SourceCache/xnu/xnu-1228.0.2/bsd/kern/uipc_mbuf.c:2742
Backtrace, Format - Frame : Return Address (4 potential args on stack)
0x35b7b708 : 0x12b0e1 (0x455670 0x35b7b73c 0x133238 0x0)
0x35b7b758 : 0x39cd77 (0x48e03c 0x1 0x35a9e01c 0x35b7b7c4)
0x35b7b798 : 0x39d073 (0x3006b300 0x0 0x40fcbdc4 0x40fccb18)
0x35b7b7b8 : 0x34fa5821 (0x3006b300 0x0 0x20 0x35001f1c)
0x35b7b8e8 : 0x34fae9e5 (0x1 0x0 0x40fa0410 0x40fccb94)
0x35b7bc08 : 0x34fb393a (0x237b22c8 0x0 0x237b3d98 0x40d9c000)
0x35b7bde8 : 0x34fb4fb1 (0x237b22c8 0x1ae25 0x35b7be18 0x1a6d13)
0x35b7bf18 : 0x41d149 (0x237b2000 0x3b27b00 0x1 0x19ccc1)
0x35b7bf68 : 0x41c2a6 (0x3b27b00 0x4917048 0x35b7bf98 0x1368db)
0x35b7bf98 : 0x41bf88 (0x4132600 0x4132600 0x35b7bfc8 0x4917048)
0x35b7bfc8 : 0x19e2ec (0x4132600 0x0 0x1a10b5 0x46be128)
Backtrace terminated-invalid frame pointer 0
Kernel loadable modules in backtrace (with dependencies):
com.apple.driver.AirPort.Atheros(300.22)@0x34f80000->0x3500afff
dependency: com.apple.iokit.IO80211Family(200.7)@0x346f6000
dependency: com.apple.iokit.IOPCIFamily(2.4)@0x2e230000
dependency: com.apple.iokit.IONetworkingFamily(1.6.0)@0x346d9000
BSD process name corresponding to current thread: kernel_task
Mac OS version:
9B18
Kernel version:
Darwin Kernel Version 9.1.0: Wed Oct 31 17:46:22 PDT 2007; root:xnu-1228.0.2~1/RELEASE_I386
System model name: MacBookPro1,1 (Mac-F425BEC8)
mbufか…またメモリ怪しいのかなあ。
2008年7月16日
Dictionary.app
最近、LeopardのDictionary.appではWikipediaの検索もできると云うことを知りました。ほんとうはWikibooksも索けるとうれしいんですけど、Wikipediaだけでもまあまあ便利。
で、まあだからというわけでもないんですが、Emacsから手軽にDictionary.app使えるとうれしいなー、なんて。
(defvar open-dictionary-history nil)
(defun open-dictionary (&optional word)
(interactive)
(let ((word (or word (read-string "Open Dictionary.app for: "
(cons (thing-at-point 'word) 0)
'open-dictionary-history))))
(start-process "dictionary.app" nil "open"
(format "dict:///%s" (encode-coding-string word 'utf-8)))))
(global-set-key "\M-l" 'open-dictionary)
あーWikibooks索きたい。





