2009/11/13(金)
きのうは早く寝ようと思っていたのに、ある経歴詐称疑惑のページに突き当たって、あまりの面白さに2時過ぎまで読みふけってしまった。こんなほら吹きに東京大学がお墨付きを与えたらあかんやろ。でも、この人に「心酔」している取り巻きの人たちは、どんなにインチキが明らかになっても、この人を「信じ続ける」んだろうなあ。そういう人が世の中にいっぱいいる、という現実にはちょっと萎える。
2009/11/11(水)
Alchemusica のイベントリストテーブルが時々妙な挙動をする。セルを編集した後別のセルに移ると、普通は編集に使ったテキストフィールドがいったん隠されて、新しいセルに移る。ところが、このテキストフィールドが元の位置に残ったままで、新しいセルの編集を始めてしまうことがある。確か 10.4 までは起きなかったぞ、10.5 でどこか仕様が変わったんか? いろいろ調べて、結局 tableView:setObjectValue:forTableColumn:row: の中で Objective C の例外が投げられているらしい、とつきとめた。例外が起きるコードはこれ。
[[[self undoManager] prepareWithInvocationTarget: self] changeValue: ed2 ofType: code atPosition: position inTrack: trackNo];
デバッガコンソールには、こんなメッセージが出る。
+[NSMethodSignature signatureWithObjCTypes:]: unsupported type encoding spec '(' in '4(MDEventFieldData=llf{MDSMPTERecord=b1b6b6b6b5b8}i[4C]*^v)8i12l16l20'
えーっと、シグネチャの文字列のドキュメントってどこにあったんだっけな。MDEventFieldData は union なんで、これがどうも臭い。テストプログラムを書いてみた。
#import <Cocoa/Cocoa.h> typedef union A { int a; float b; } A; @interface MyObject : NSObject { } - (BOOL)changeValue: (A)value; @end @implementation MyObject - (BOOL)changeValue: (A)value { return YES; } @end int main(int argc, const char **argv) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; MyObject *x = [[MyObject alloc] init]; NSMethodSignature *sig = [x methodSignatureForSelector: @selector(changeValue:)]; int i, n; NSLog(@"sig = %@", sig); n = [sig numberOfArguments]; for (i = 0; i < n; i++) { const char *p = [sig getArgumentTypeAtIndex: i]; NSLog(@"arg %d : %s", i, p); } return 0; }
10.5 での実行結果。ビンゴですね。
2009-11-11 22:34:11.984 a.out[1503:10b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSMethodSignature signatureWithObjCTypes:]: unsupported type encoding spec '(' in '4(A=if)8'' 2009-11-11 22:34:11.987 a.out[1503:10b] Stack: ( 2478833643, 2468544059, 2478841071, 2478842271 ) Trace/BPT trap
ちなみに、Mac OS 10.4 では正常終了。
2009-11-11 22:54:38.840 a.out[2036] sig = NSMethodSignature: types=c@:(A=if) nargs=3 sizeOfParams=160 returnValueLength=1; 2009-11-11 22:54:38.841 a.out[2036] arg 0 : @ 2009-11-11 22:54:38.841 a.out[2036] arg 1 : : 2009-11-11 22:54:38.842 a.out[2036] arg 2 : (A=if)
実はちゃんと NSInvocation のドキュメントに書いてあるじゃん。読めよ自分。
NSInvocation does not support invocations of methods with either variable numbers of arguments or union arguments.
10.5 でチェックが厳しくなって、今まで素通りだったコードが許されなくなった、という話らしい。
2009/11/08(日)
ヒメのピアノ発表会の練習が始まった。今年はエステンの「人形の夢と目覚め」で、ヒメはいまいち乗り気でない。まあ無理もない話ではある。ヒメに限らず今の子供は、家やら幼稚園やら学校やらですごい量の音楽を耳にしているわけで、音楽に興味のある子なら自然と耳が肥えてくる。この程度の曲だと、何回か弾いただけで内容の薄さがわかってしまうんじゃないかな。さあ、4月まで興味が持続するかどうか。
親子連弾もやるのだが、候補曲の編曲がどれもイマイチ。一番ひどかったのは「ラプソディ・イン・ブルー」で、主要なエピソードをワンフレーズずつ全部ハ長調でつなぎあわせたというとんでもない代物だった。この曲、最近やたらとお子様の発表会で人気のようで、どうやら「のだめカンタービレ」の影響らしい。だいたいにおいてテレビドラマの影響なんてろくなものではないけど(漫画だけならたぶんこうはならない)、こんなトホホな編曲がまかり通っているようではいけませんね。結局、同じガーシュウィンつながりだが、「サマータイム」をアレンジして使うことにした。
2009/11/03(火)
絵本「じごくのそうべえ」(田島征彦作・絵、童心社)を図書館で借りてきた。上方落語が元なので、これは読んでやらねばなるまい、と風呂上がりに子供たちに読んでやった。これは傑作ですねえ。子供たちが読むにはちょっと関西弁がむつかしいかも知れんけどな。僕はネイティブだけど子供たちには外国語だし。
同時に、「基本の六路盤」(鶴田郁夫著、あかね書房)も借りてきた。六路盤でときどき子供たち(主にヒメ)と石取りゲームをしているのだが、どうやったら本碁に移行できるかがわからなかったので、ちょうどよかった。残念なことに、坊が全く興味を示さない。対戦型ゲームはあかんのかな。
2009/11/01(日)
そろそろこのサイトの容量が限界に近づいている。実は半分ぐらいは LinuxSampler のページにこっそり上げてある mp3 ファイルだったりする。ただのテスト結果なので別に消してしまってもいいんだけど、ちょっともったいない。昔の DTM 作品の mp3 もいずれ公開したいと思っているし、ぼちぼち置き場所を探すかな。ヤマハの MySound を狙ってたのに、終了しちゃうのは残念。
2009/10/30(金)
Transcend の USBコンパクトカードリーダー TS-RDP5K を購入。佐川メール便が発送から到着まで一週間かかってちょっとはらはらした。10/18 に Mac から microSD への書き込みができないのは仕様なんですかね、
と書いたけど、これを使うとちゃんと書き込みできた。やっぱり今まで使っていたカードリーダーが古すぎたんだな。キャップがゆるいのがちょっと困りものだが、コンパクトだし(でも無くす心配があるほど小さくもないし)、なかなか気に入った。Transcend って実はけっこう好きなんだな。
2009/10/29(木)
2日間、とある講習会で名古屋へ通う。ラッシュ時の地下鉄東山線って混んでるのね。並んでいる人たちが当たり前のように満員の電車を見送っているのを見て、やっぱり名古屋って大都会なんだなと改めて思った。いやあ、名城線とか乗ってるとどこの田舎の電車かと思うぐらい空いてるんでね。
2009/10/27(火)
C/C++ のプログラムを Xcode でデバッグしているとき、時々ブレークポイントで止まってからステップ実行がうまくいかないことがある。step とか next で1行だけ実行しようとしても、そのまま止まらずに continue と同じ動作になってしまったり、全然とんちんかんなところで止まったりする。stepi でもだめ。advance N はうまくいったりいかなかったり。C++ から C 関数を呼び出したときに起きやすいようだが、いまいち規則性がつかめていない。その関数から C 関数を呼び出しているとき、その関数の中でブレークポイントで止めた後 finish で元の関数に戻ると、その後は step も next も正しく動作する(ことが多い。確実に動作するかどうかは自信なし)。Xcode だけでなく、ターミナルから gdb XXXX.app で走らせても同じなので、gdb の問題らしい。gdb と C++ は相性がよくないという話も聞くけど、デバッガが思うように動かないのはすごくストレスがたまるんだよなあ。
2009/10/25(日)
ヒメが「千と千尋の神隠し」を気に入って、主題歌の CD を繰り返しかけたり、エンドレスリピートで歌ったりしている。まあそれはいいんだけど、木村弓さんのこのアルバム、聞いているとちょっといらいらしてくるんだな。歌詞もメロディーも歌い方も、なんか妙に素人くさい。巧いだけの音楽には感動がない、としたり顔で語る人もいるけど、プロとして人に聞かせる時に「巧い」ことは最初の必要条件なんじゃないですか。技術をいったん究めた上でわざと崩していく、という芸風なら歓迎するけど、そういうのとも少し違う。なんか、「がんばらなくていいんだよ、これぐらいでいいんだよ」と語りかけられている気がして、落ち着かなくなる。どうにも後味が悪いので、波多野睦美さんの「アルフォンシーナと海」あたりで耳直ししたいところ。
2009/10/24(土)
坊がワミーで作った魚。わりとよくできとるやないか。ちゃんと色も左右対称になってるし、しっぽが少し下を向いているところなんかも味がある。ちょっと鯛焼きみたいに見えなくもないが。
