|
HMDT - Back Number / March, 2002 |
March, 2002
Apple のページをさまよっているうちに見つけた、Aqua のポーティングガイドの図。
"Respect the Dock" っていう項目があるけど、これは Dock の位置をちゃんと気にしておけ、っていうことらしい。たとえば、ズームボタンを押した時に、ウィンドウが Dock の下に重ならないようにするとか。IE はこれ守ってないじゃん。
いままでリンクページをほとんどほったらかしてあったんで、一念発起して再編することにしたよ。だけど、普通のリンクページ作っても、手間がかかるし、おれ根性ないからまた途中でほっぽってしまいそうだし、他にすごい人がいっぱいいるしな。どうしようかな〜。 と、考えた結果、技術系ドキュメントやサンプルコードに特化してみることにしたよ。ADC にあるドキュメントへのリンクと、ひとこと解説をつけてみた。これなら、「らしさ」が出るし、自分にも役に立ちそうだし。まずは Mac OS X 関連ドキュメントからやってます。
オブジェクトカルトクイズ。オブジェクト指向のカルトクイズだ。やるな、オージス総研。っつーか、変だよ、オージス総研。 で、なぜ反応したかというと、一問目が Dylan がらみだったから。おぉー、Dylan!なつかしいなー。ちなみに Dylan は、昔の Apple の研究所が作った言語で、「オブジェクト指向やろうか」「でも、どの言語もいまいち気に入らないんだよ」「じゃ、作るか」と、いった感じで作られた言語だそうな(適当)。 あの頃の Apple は、役に立たない研究にどんどん金を注ぎ込んで、おもしろそうで中途半端な技術をいっぱい作って、赤字を垂れ流してたんだよな。端から見てると、そっちの方が面白いのに。 ちなみに、カルトクイズは一問目しか分かりませんでした。
Mac で使っているのに、デフォルトの dpi が 96 にされてるよ。 なぜだ。しかも直し方がよく分からん。Web Settings で Browser profiles を作っても、起動し直すと消えてしまう。なぜだ。ゆるせん。
動作は、あいかわらず重いです。PowerBook ではきつい。この、すかすかのページでもそんなに快適にエディットできない。レイアウトとソースコード画面が分割表示できるのはうれしいなー。 でも、いちばんうれしいのは、Web DAV サーバ接続機能だったりする。これで、iDisk につなぐとき、あの、すったこの Finder の Web DAV を使わなくていいんだー!Finder さぁ、使いにくいのはがまんするから、iDisk につなぐと 30 秒虹色カーソル回すのはやめてくれ。まったく使い物にならん。それにくらべて、GoLive の Web DAV は、ちゃんと使い物になるよ。Goliath は、なんか proxy 通すとうまく動かなかったし。あと、Web DAV は Windows の IE でもサポートしてるから、iDisk につなぐには Windows の方がずっと快適だったりしてた。
こないだ zlib に脆弱性が見つかったぜ、っていうニュースがあったよね。CERT/CC Vulnerability Note とか、ZDNN:zlib圧縮ライブラリに脆弱性,Linuxほか多数のプログラムに影響とかで。Mac と見せかけて UNIX である Mac OS X でもその影響が心配されたんだけど、リンクとか備忘録とか日記とかさんや、pigmon.log(ぴぐもん禄)さんで知りましたが、Apple が問題ねーぜという見解を出してた。おぉ、力強いお言葉。というか、ぜんぜん情報がねーじゃん。てなわけで、自分でおっかけてみました。 まず、zlib の脆弱性とはなにか?CET/CC によれば、zlib を使って展開するときに、悪意のあるデータが来ると、malloc の二重解放をしてしまう恐れがある、と。じゃ、malloc の二重解放っていうのはなにか?メモリの割り当てと解放をする関数に、malloc と free っていうのがあるんだ。malloc はメモリを割り当てて、free で解放する。問題になるのは、一回 free で解放した領域をもう一度 free しちゃったとき。多くの場合、動作は不定になる。動作不定っていうのは、何が起こるかわからない。アプリケーションが異常終了するかもしれないし、他のメモリ領域を壊すかもしれないし、OS がパニックするかもしれないし、ハードディスクがクラッシュするかもしれないし、Mac に翼が生えて飛んでいってしまうかもしれない。ま、要は、そんなことするな、っていうことだ。 zlib は、あるデータが来ると、malloc の二重解放をしてしまうらしい。これは、明らかなバグだね。直さないといけない。Mac OS X の zlib はどうなっているのか?うーんと、よく知らない。 だけど、もうちょっと考えてみると、そもそも malloc の二重解放で致命的な事態が引き起こされなければいいわけだよね。セキュリティーホール memo さんの 3.12 の追記によると、FreeBSD では malloc を二重解放してもだいじょぶだよ、と作者が言っているらしい。 これどういうことかっていうと、malloc を実装するときは、空きメモリを管理する必要があるんだけど、多くの実装では空きメモリのリストを、malloc で割り当てられたメモリのそばにおいてあるんだ。もっと詳しい説明は、ここでは手に余るから K&R を読んでくれ。だから、一回 free されちゃうと、そのリストが壊されちゃう、と。それに対して FreeBSD では、空きメモリの管理を別のところで行っている。だから malloc の二重解放をしてもだいじょぶだよ、ということだそうだ。 ほうほう。じゃ、Mac OS X でどうなっているのか?まず、軽く実験。malloc の二重解放をしてみる。
お、ちゃんと二重解放に対して warning を出してるじゃない。つまり malloc の二重解放をしても致命的な事態は起きないようだ。じゃ、実際の管理はどうなっているの?ということで、Darwin のソースコードをのぞきにいく。Darwin CVS からたどれるよ。それによると、Darwin の内部では、zone 構造体を使って malloc の管理をしているらしい。
これを使って、使用メモリと空きメモリの管理をしている。で、これが保存されている場所は malloc されるとこからは離れている。実際に free するときは、
で、malloc された領域かどうかチェックしている。(でもここ ASSERT するのかな、、、?) というわけで、結論は、
ということかな。うーん、これであっているのかどうか、自信はないぞー。
Cocoa 1001、NSDictinoary を ASCII 表示にしよう、という話。 Cocoa 1001
Adobe の GoLive 6.0 を注文したよ。なにはなくとも Mac OS X 上で使いたいから。理由それだけ。
Studying HTTPっていうサイトがあります。その名のとおり、HTTP の解説をしています。RFC のガイド的な解説といったスタンスです。理解しやすいです。人に読ませることを前提に、サイトと文章を作っていて、好感が持てます。 「HTTP 勉強しなきゃいけないど、いきなり RFC 読むのはめんどくさいよなー」っていう人にお勧めです。それは、おれか。 Studying HTTP - http://www.studyinghttp.net
Cocoa 1001、Interface Builder を使うと簡単にテーブルが使えるけど、その中身はどうなってるの?自分で作るにはどうすればいいの?って話です。 Cocoa 1001 - AppKit/NSTableView
Cocoa 1001、view の階層構造の話なのです。subview を辿っていって、どういう親子関係になっているか調べよう、という話だ。 Cocoa 1001
しばらくは、リハビリモードで、こんな感じでそろそろと。
ひさしぶりに Cocoa プログラミングをやったよ。一月ぐらい、あっちへふらふら、こっちをちょろちょろ、とつまみ食いばかりしてしまった。で、なかなか勘が戻らないので、こんな簡単な話題から。 Cocoa 1001 - AppKit/NSPopUpButton どうってことのない話なんだけど、これができるまで 1 時間かかってしまった。だめだねー。
|
|
Home | Link | Download | Back Number | Speciall Issue
|