home link download back number special issue

HMDT - Back Number / April, 2002


April, 2002


April 30 - Sketch 再編!
keywords: Sketch

長らくほっておいた Project Sketch BP、見直して再編するよ!

ほら、Mac OS X に Developer CD を入れると、サンプルとして Sketch っていうアプリケーションが入ってるじゃない?でも、あれってシンプルすぎてあんまり使えないでしょ。せめてベジエツールぐらいは欲しいよな、じゃ作ってみるか、っていうのが始まりだったんだ。

でも、当時の実力じゃ、力がなさすぎて、結局ほっておかれた。そろそろ、もう一回挑戦してみようか!ってとこだ。

とりあえず、前に書き散らしたやつを整理した。そして、新たなページを加えたよ。

Project Sketch BP

Sketch に見る MVC アーキテクチャ

こんな感じで、しばらくは Sketch の study が続くよ。今度こそ続くといいな。

April 28 - Obj-C 最適化:並行プログラミングの値の更新の問題
keywords: concurrent programming

Obj-C 最適化、今回は並行プログラミングの値の更新の問題だ。グローバル変数にアクセスするときは、どうしてロック機構が必要なのか?Foundation を使って、ロックするのを最適化する方法は?って感じの話題だよ。今回は、比較的平易な内容だね。

April 26 - Obj-C 最適化:不可分な操作(後編)
keywords: atomic operation, lwarx, stwcx

Obj-C 最適化不可分な操作(後編)。atomic operation を最適化する話の続き。

PowerPC の命令である lwarx/stwcx を使うのは、果たして安全なのか?Apple はどういう見解を持ってるのか?という話。

あと、ひらかわさんから指摘を受けましたので、前半の訳を少し変更しました。冒頭の部分です。ありがとうございました!

April 25 - Google API で遊ぶ
keywords: Google

いじっているとなかなか楽しい Google Web API。コマンドラインはめんどくさいので、簡単にアプリケーションを作ってみた。

文字列を入力して、Google でそれを検索するアプリケーションだ。Web で検索するのとまったく同じ結果が得られるよ。Google にアクセスするところは、Development Kit に付いてきた JAR ファイルをそのまま使って、Cocoa + Java で GUI を作った。こういうときって Cocoa + Java って便利〜。Java のライブラリをすぐ使える。

とりあえず使えるようになったけど、さてこいつで何をしよう?いいアイディアがある人は、こっそり教えて下さい。

April 24 - Google API with OS X
keywords: Google

こないだ話した Google API だけど、proxy の後ろからでもアクセスできるパッチが公開されてたよ。これでつながるかな?試してみる、、、おぉ、つながった。ちゃんととってくることができたぜ。

てなわけで、少しまとめてみた。

Google API with OS X

Google を猿のように使っている人はぜひ。

April 23- Obj-C 最適化:不可分な操作(前編)
keywords: atomic operation, lwarx, stwcx

Obj-C 最適化不可分な操作(前編)。atomic operation を最適化する話だ。

まずは、retain カウントの操作を、PPC のアセンブラを使ってスレッドセーフにしてやる、っていう話からだよ。

April 22 - Google Web API と Mac OS X
keywords: Google, SOAP

各所で話題沸騰なのか、ぜんぜん盛り上がってないのか知らないけど、こないだ Google Web API が公開されたよね。SOAP を使って Google の検索エンジンにアクセスできるサービスだ。開発に必要な手順は、Development Kit のダウンロードと、アカウントの作成だ。

Development Kit には、Java と .NET のサンプルが入ってる。Mac OS X なら、すぐ Java のサンプルを起動できるはずだよ。っつーか、これは SOAP を送ることができれば利用できるサービスなんで、最近 XML と SOAP のサポートが加わった AppleScript でもオッケーだ。そんなわけで、早速 AppleScript のサンプルが公開されてます。

極めて面白そうなんで、使ってみたいんだけど、アカウントを作成するページにつながらないのだ。サーバが落ちてるのか?しくしく、、、

追記:アカウント取れた!ライセンスキーも取れた!でも、いまのところ proxy を通してのアクセスには問題があるらしい。しくしく、、、

April 19 - 辞書バグ
keywords: atmoic operation

きょうも、せこせこ翻訳でもしてるかー、と思ってたら、"atomic operation" という語が出てきた。えっと、"atomic operation" の日本語訳はなんだ?そりゃ「アトミック・オペレーション」でしょ。この方が誤解なく伝わるし。

でも定番の訳があったらいやだなー、というわけで Google で調べる。いきあたったのが、この「辞書バグ」のページ。英和辞典の計算機用語のバグを探すページです。これが読んでみると、楽しいのでした。

で、『エクシード英和辞典』の atomic operation の項によると、

「atomic operation」の訳語としては「不可分な操作」あたりが妥当であろう。

ま、そんなところかー。検索をかけたときは、「原子的操作」っていうのがひっかからないか、とどきどきしていたんだけどな。(原子的操作もあったよ、一応)

あと、「ベジェ曲線」って「ベジエ曲線」って訳すんだね。知らなかった。

April 18- Obj-C 最適化:オブジェクト生成の最適化(後編)
keywords: Objective-C, optimization

Obj-C 最適化の、オブジェクト生成の最適化(後編)。これにてこの記事はおしまい。

たしかに、この記事のまとめに書かれているように、NSObject の alloc/dealloc を書き換えたら、初期化時を除いて、速くなりそう。poseAs: でのっとりができる Objective-C だからだよなぁ。

April 17 - IE のセキュリティ脆弱性を利用する
keywords: buffer overrun

リンクとか備忘録とか日記とかさんや、セキュリティホール memo さんとかで言われている通り、IE にバッファオーバーランによる脆弱性が見つかったそうな。さっそく利用してみよう!(え、違うって?)

バッファオーバーランとは?

結構古典的なセキュリティホールなんだけどね。コンピュータのメモリ空間の中に、「スタック」と呼ばれる領域がある、と考えてくれ。このスタックは、プログラムが関数を呼ぶときに使われるんだ。で、ある関数が別の関数を呼ぶでしょ。そのとき、呼び出した関数の実行が終わったときに、どこに戻るか?っていう情報を覚えておかなくちゃいけないんだ(具体的にはメモリのアドレス)。これをリターンアドレスっていうんだ。

ということは、このアドレスを書き換えれば、もとの関数じゃなくて好きなところにいける!?たとえば、他のプログラムの先頭アドレスを指定すれば、それを起動することができるんじゃない?これが、バッファオーバーランによる脆弱性だ。

どうやってバッファオーバーランを引き起こす?

じゃあ、どうやってそれを起こせばいいんだ?まず、まっとうなプログラムなら、これは起きない。当たり前だ。ただし、バグを含んだプログラムならできるときがある。そして世の中には、バグを含んだプログラムがいっぱいある。

今回の IE の場合は、ある HTML ファイルを読み込ませることで、バッファオーバーランを引き起こせるらしい。簡単だね!さらに、HTML ファイルに書いてある値で、リターンアドレスを書き換えることもできるらしい。すばらしい!ありがとう、Microsoft!

具体的にどういうコードかっていうと、SecuriTeam.com に書いてある。サンプルへのリンクがあるんだけど、404 Not Found なんだよな。でも、抜粋が載ってて、

<html>
<body>
<img src=file:///[1313 characters]%41%42%43%44>
</body>
</html>

と、いった感じのコードらしい。%41%42%43%44 がリターンアドレスになるらしい。

どのリターンアドレスに書き換える?

これで好きな値に書き換えることができるけど、じゃあどのアドレスに書き換えるんだ?まずは、われらが Microsoft のページを見てみよう。用語説明のページに「バッファのオーバーラン攻撃」がある。それを見てみよう。

多くの場合、攻撃者はプログラムを異常終了させることを意図し、それをおこないます。

そんなわけねーじゃん!!!

これを読んだら、「なーんだ、IE が落ちるだけか。それなら、攻撃を受けなくても、いつも落ちてるから、いっしょだー、アハハ」って思っちゃうじゃないか。多くの攻撃者が狙うのは、/bin/sh でしょ。シェルを立ち上げるれば、そこからすべてのコマンドが実行できるからな。それが危険なんでしょ、バッファオーバーランは。

じゃ、/bin/sh のアドレスの求め方は?、、、これは、けっこうめんどくさいし、実際にやる人が出るといやなので、この辺でやめときます。やりたい人は、「趣味と実益のスタック破壊」とかを読むと、懇切丁寧に解説されてるよ。

今回思ったんだけど、Mac OS X になると、/bin/sh を実行される恐れがあるんだよね。前までは、「Mac OS は非常にセキュアなコンピュータだ。なぜならターミナルがないからだ」っていう話(半分冗談、半分本気)もあったんだけど、普通の UNIX になったおかげで、UNIX の手慣れたクラッカーも引き寄せることになるんだよね。「Mac OS X になれば、多くの UNIX プログラマがやってくる」って言ってたけど、それは多くのクラッカーがやってくる、っていうことでもあるんだ。

April 14- Obj-C 最適化:オブジェクト生成の最適化(中編)
keywords: Objective-C, optimization

Obj-C 最適化の、オブジェクト生成の最適化(中編)。前の続きをちょこっと。

April 12 - Obj-C 最適化:オブジェクト生成の最適化(前編)
keywords: Objective-C, optimization

ひさびざの Obj-C 最適化だ!このシリーズは、かなり低レベルなところで、Obj-C を最適化してやろうぜ!っていう試みだ。おいおい、そこまでやるかよ、それはもう、Obj-C 使わない方がいいんじゃない?ってとこまでやられているんだ。

そんな Obj-C 最適化から、オブジェクト生成の最適化(前編)の話だ。比較的、おとなしい方法で allock/init/autorelease を最適化する方法について書かれているよ。

April 9 - API ドキュメントの素早い見方
keywords: Project Builder

ご無沙汰!

さて、いまになって気付いたことを一つ。Apple のサイトのここを見ると、ある QuickTime ムービーが見れるんだ。このムービーは、Project Buidler から API ドキュメントを見る素早い方法を教えてくれる。

その方法とは、

  • ソースコードの中で、シンボルを Option + ダブルクリックする
  • Find パネルの中の、本のアイコンをクリックする
  • Classes パネルの中の、本のアイコンをクリックする

おぉーっ、こんな方法があったのか!特に一番目の Option + ダブルクリックは便利。知らなかったよ。これで、さらに速くプログラミングができそう。


Home | Link | Download | Back Number | Speciall Issue

mailto: mkino@xd5.so-net.ne.jp

HMDT