« 2006年9月 | Main | 2006年11月 »
2006年10月 1日
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月 4日
ずっと積まれていたDVDを観てみました。
話としてはまあ予想しやすくてわかりやすい。 なのでこれに関しては特に云うことはないかな。
原作は読んでないのでどれくらい変わってるのか分からないけど、 ちょっと2時間にうまく詰め込めてないかなという印象を受けました。 あと、CGが割としょぼい気がする… 2004年の作品だけど、こんなもんだっけ? 特に、終盤で重要になるミシガン湖のシーンがかなりがっかりする。
んー、どうだろう、まあ一度は観てみてもいいかも。
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月 6日
化粧惑星
知ってますか、化粧惑星。 …ふむ、まあ、多くの人が名前くらいは聞いたことがあるのではないでしょうか。 びしばし広告も打ってますし、地上波でもCM流れてますし。
では、どこで購入できるかご存じですか。 …そうです、コンビニです。 コンビニに入ったことがある女性の多くは知ってるでしょう。 コンビニ通いしてる男性もある程度は知ってるかもしれません。 というわけで、逆にコンビニで見たことがあるから知ってる、 という人も多いのかもしれません。
さて、ブランドについてはどうでしょう。 価格帯とかターゲットとか。 …はい、コスメにしては非常に安価な価格帯です。 コンビニでの販売をメインにしていることからもわかるように、 女子中高生、広めに見ても大学1年生くらいまでがメインターゲットではないかと思われます。 すなわち、本気系コスメではなくてまねごとをしたい女の子がターゲットであると。
それではそれでは。 化粧惑星が資生堂のブランドだと云うことは知ってますか。 …これは結構知らなかった人もいるかもしれません。 そうです、化粧惑星は資生堂なんです。
資生堂のトップページを見ても、 化粧惑星は載っていません。 ブランド一覧を見るとやっと載っている程度です。 しかも販売会社は別会社のオービット(資生堂の100%出資子会社)。 そもそも、 資生堂にはMAQuillAGEやTSUBAKIなどのイメージを強く持っている人も多いのではないでしょうか。 これらは中堅〜高級コスメ位置づけなので、 すなわち資生堂もこのイメージになっているはずです。
ところがそれだけではない。 本体を高級コスメのイメージを維持したまま、 うまく廉価版コスメのマーケットもターゲットにしているのです。 もう少し具体的には、MAQuillAGEやMA CHERIE(これは高校生もつかってそう)は大学生後半から20代中盤くらいまで、 S(エス)やTSUBAKIなんかはそこから40代前半くらいまでがターゲットではないかと (さすがにそこまで詳細には詳しくないので嘘かもしれない)。 で、ぽっかり空いている大学生前半未満のところを、 資生堂のブランドであることを極力抑えて取りに行ってるのですね。 ここには、未開のマーケットを取りに行くという意味がひとつ。 さらに、使っているうちに化粧惑星が資生堂であることに気づいてもらえれば、 まともなコスメを買えるだけの財力がついたときに、 そのまま資生堂の主力ブランドにシフトしてもらえるという意味もあるのでしょう。
ところでどーでもいいんですが、 化粧惑星って「化粧はくせえ」に聞こえるのでかなりよろしくないと思うんですが、 ブランド名決めるときにそういう意見を出した人はいないんですかね。 ちょっと残念な感じ(このエントリはこれが書きたかっただけとも云う)。
2006年10月14日
OSXで『デ{1,2}フラグ』
最近、シリアルで4Mくらいのファイルを転送することが多いので、 その待ち時間に小ネタを書くことにしてみた。
しげやさんがOSXでもデフラグが結構効くなんて話を書いてたので、 ではこっちはこれで。 手元の環境にはTechTools Proみたいな何かはないので、 残念ながらというか当然というか、試してません。 勇気のあるかたは是非どうぞ! もちろん当方でも責任はとりませんのであしからず。
2006年10月22日
暗号解読—ロゼッタストーンから量子暗号まで
もう一週間ほど前のことになりますが、 ようやくこの本を読みました。
サイモン・シンといえばフェルマーの最終定理なんでしょうが、 実はまだ読んでなくて、暗号解読を先に読みました。 しかし、彼の実力をひしひしと感じ取ることのできる、すばらしい本でした。
基本的に暗号に関する技術は、暗号化・復号化を問わず公表されにくいものですが、 本書は逆にその闇の部分にスポットライトを当てたものです。 暗号の生まれた背景とそれに立ち向かう解読者たち、あるいは、 解読者たちに逆襲するべくあたらしいアルゴリズムを開発する暗号屋。 特に注目すべきは、暗号が解読できたことにって、 あるいは解読できなかったことによって起こった結末までに言及していることでしょう。 すなわち、技術屋の仕事がどれだけ多くの人生に影響を与えているかということを、 まざまざと生々しく見せつけてくれるのです。
もちろん、現在使われている暗号の多くは最新の数学技術を多く取り入れたものです。 そのため、そのあたりは具体的なアルゴリズムの説明も少ないです (というか、これに興味のある人は自分でやればいいし)。 ただ、古典暗号については、 上記の通り歴史的背景をふまえながら具体的なアルゴリズムまで言及されていて、 その意味でも暗号に興味を覚えるのには十分な一冊でしょう。
というわけで、とってもお勧め。
| 暗号解読―ロゼッタストーンから量子暗号まで | |
![]() | サイモン シン Simon Singh 青木 薫 おすすめ平均 ![]() 暗号をめぐる人類の熱き戦いの物語 人間ドラマと,数式を使わない分かりやすい解説が秀逸! 執念とコラボレーションが思考空間を拡げる 多面的で総合的な暗号技術の最前線書 おもしろい!Amazonで詳しく見る by G-Tools |
2006年10月27日
騙される人が増えなければいいんですが。
ええ、某携帯会社のことです。下駄マークのね。〓これ。
あの詐欺まがいのプラン設定とトークはいったいなんなのか。 山ほど制約があるくせに虫眼鏡が必要なくらい小さい文字でしか書いてないし、 他社のプランを全部そろえておいて「他社は複雑」とはよく云ったものだ。 で、しかも、騙されたと気づいたときには解約料が馬鹿高くてやめるにやめられないと。
もちろん端末0円も大嘘で、端末分は分割払いで払わされます。 で、その分が基本料金から引かれるので端末無料と。 すなわち、分割払いが終わらない間にMNPでほかのキャリアに移動すると、 分割料金を払わされるわけですよ。
ひどいね。現行利用者でこのひどさに気づいた人はさっさとやめるべきだ。
2006年10月28日
フェルマーの最終定理 ー ピュタゴラスに始まり、ワイルズが証明するまで
というわけで、暗号解読に続いてこちらも読んでしまいました。
結論から云うと、こんな時間まで読んでたということからも察せられる通り、 こちらもすばらしい本でした。
暗号解読と同様に、 フェルマーの最終定理に取り組む数学者たちと、 その背後に広がるドラマをうまく扱っているんですが、 暗号解読よりも圧倒的にテンポがよい。 まあ、その昔のほんの一時期、 自分が数学者に憧れていた時代があったことや、 ワイルズのように、そのシンプルな形に魅せられたことがある、 ということによってそのように感じたのかもしれません。 しかし、暗号が秘密のベールに覆われている世界なのに対し、 数学というオープンな世界であること、 および、全編を通して「フェルマーの最終定理」というゴールがある、 という点がテンポを軽快なものにしているのではないでしょうか。
もちろん、ワイルズの証明は現代数学の粋を尽くしたものなので、 私のような一般人とても分かるものではないでしょう。 なので、核心に近づけば近づくほど、数学的な話は少なくなっていきます。 その点で、 少しでも数学をかじったことがある人には物足りない感じがするかもしれません。 しかし逆の観点から云えば、 これだけ数学の核心をさわらずして、 存分にフェルマーの最終定理のおもしろさを伝え、 ひとつの物語として完成させてしまうところは、 さすがサイモン・シンだと云うべきでしょう。
なんだか、久しぶりに『純粋数学やっぱりいいなー』なんて思ってしまいました。
| フェルマーの最終定理―ピュタゴラスに始まり、ワイルズが証明するまで | |
![]() | サイモン シン Simon Singh 青木 薫 おすすめ平均 ![]() 数学史を紐解くようで 読ませる! 数学の一般書として最高の名著 数学者のプロジェクト 日本人研究者の活躍Amazonで詳しく見る by G-Tools |
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を試行するので接続するまでにやたら時間がかかる
なんてところでしょうか。うーん、はやくなおしてよー。
2006年10月30日
Armadillo-210でNetBSD
久々かもしれない、NetBSDねた。 といっても、たいしたことはなくて、 Arimadillo-210というARMな超小型計算機でNetBSDを動かしました、 という話です。
この手の小型計算機でNetBSDというネタは、 とくださんのところがとても参考になるわけで、 Armadillo-210に関してもやっぱりいろいろ書いていただいているわけです。 なのでぶっちゃけ、 Armadillo-210でNetBSDしたいひとはそこを見ていただければいいわけですが…
で、ブートするとこんな感じ。
Hermit-At v1.0.7 (Armadillo-210C/ttyAM1) compiled at 19:04:02, Oct 12 2006
Uncompressing kernel...........................................................
................................................................................
...........................done.
Doing console=ttyAM1,115200
Doing mtdparts=armadillo210-nor:0x10000(bootloader)ro,0x3e0000(kernel),-(config)
NetBSD/Armadillo-210 booting ...
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
The NetBSD Foundation, Inc. All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
NetBSD 4.0_BETA (ARMADILLO210) #1: Sat Oct 14 16:34:52 JST 2006
naoto@takayama.xxxxx:/usr/home/naoto/tmp/armadillo/src/sys/arch/evbarm/c
ompile/obj/ARMADILLO210
total memory = 32768 KB
avail memory = 26360 KB
mainbus0 (root)
cpu0 at mainbus0: ARM920T rev 0 (ARM9TDMI core)
cpu0: DC enabled IC enabled WB enabled EABT
cpu0: 16KB/32B 64-way Instruction cache
cpu0: 16KB/32B 64-way write-back-locking-A Data cache
epsoc0 at mainbus0: Cirrus Logic EP93xx SoC rev E1
epsoc0: fclk 199.99 MHz hclk 99.99 MHz pclk 49.100 MHz
epclk0 at epsoc0 addr 0x80810000-0x8081008f intr 4
epgpio0 at epsoc0 addr 0x80840000-0x808400cb intr 59
gpio0 at epgpio0: port A: 8 pins
gpio1 at epgpio0: port B: 8 pins
gpio2 at epgpio0: port C: 8 pins
gpio3 at epgpio0: port D: 8 pins
gpio4 at epgpio0: port E: 8 pins
gpio5 at epgpio0: port F: 8 pins
gpio6 at epgpio0: port G: 8 pins
gpio7 at epgpio0: port H: 8 pins
epled0 at epgpio0: port E bit1 1 bit2 0
armadillo9iic0 at epgpio0: port B bit1 4 bit2 5
iic0 at armadillo9iic0: I2C bus
seeprom0 at iic0 addr 0x50: AT24Cxx EEPROM
epe0 at epsoc0 addr 0x80010000-0x8001ffff intr 39
epe0: MAC address 00:11:0c:03:03:e3
lxtphy0 at epe0 phy 0: LXT971/2 10/100 media interface, rev. 2
lxtphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
epcom0 at epsoc0 addr 0x808c0000-0x808c0fff intr 52
epcom1 at epsoc0 addr 0x808d0000-0x808d0fff intr 54
epcom1: console
epwdog0 at epsoc0 addr 0x80940000-0x80940007 intr 36
eprtc0 at epsoc0 addr 0x80920000-0x8092010b intr 37
md0: internal 4096 KB image area
boot device:
root on md0a dumps on md0b
root file system type: ffs
WARNING: clock lost 13444 days
WARNING: CHECK AND RESET THE DATE!
Thu Jan 1 00:00:06 GMT 1970
Setting tty flags.
Starting network.
Hostname: armadillo210
IPv6 mode: autoconfigured host
Configuring network interfaces: epe0.
Adding interface aliases:
Building databases...
Mounting all filesystems...
Setting securelevel: kern.securelevel: 0 -> 1
Starting local daemons:.
Setting date via ntp.
Starting ntpd.
Starting rtsold.
Starting sshd.
Mon Oct 23 13:43:20 GMT 2006
NetBSD/evbarm (armadillo210) (console)
login:
注意するべきがいくつかあります。
まず、上記のページにあるブートローダはHermit-At 1.0.2なので、ちょっと古い。 最近Armadillo-210を手にした人は基盤がRev.Cになっているので、これでは動きません。 というわけで、自分で作らないといけません…が、それもなんですので、 このあたりに転がしておきます。 もちろん無保証。基本的には濱嶋さんのパッチを1.0.7ベースに取り込んだだけです。 書き込みは以下の通り。
$ hermit download -i loader-armadillo210.bin -r bootloader --force-locked
次に、nfs_rootするならいいんですが、in-kernel mdでブートしようとすると、 initでこけます。 どうも、コンソールにメッセージを吐くためのopenlogでブロックしているらしい。 めんどくさいのでまじめに追ってませんが、 log関係を全部捨てれば普通にあがります。
あとはあれですね、いかに4Mに押さえ込むかという勝負でしょうか。 戦略としては、昔の1FD BSDのように全部crunchするか、 あるいは必要な分だけをcrunchして、残りをvnode diskにつっこみ、 vndcompressして容量を稼ぐか、でしょう。 私の場合は後者の戦略で、dhclient/ntpd/ntpupdate/sshdまで入れて、 残りが200kbってところです。




暗号をめぐる人類の熱き戦いの物語