|
HMDT - Back Number / April, 2002 |
April, 2002
長らくほっておいた Project Sketch BP、見直して再編するよ! ほら、Mac OS X に Developer CD を入れると、サンプルとして Sketch っていうアプリケーションが入ってるじゃない?でも、あれってシンプルすぎてあんまり使えないでしょ。せめてベジエツールぐらいは欲しいよな、じゃ作ってみるか、っていうのが始まりだったんだ。 でも、当時の実力じゃ、力がなさすぎて、結局ほっておかれた。そろそろ、もう一回挑戦してみようか!ってとこだ。 とりあえず、前に書き散らしたやつを整理した。そして、新たなページを加えたよ。 Project Sketch BP こんな感じで、しばらくは Sketch の study が続くよ。今度こそ続くといいな。
Obj-C 最適化、今回は並行プログラミングの値の更新の問題だ。グローバル変数にアクセスするときは、どうしてロック機構が必要なのか?Foundation を使って、ロックするのを最適化する方法は?って感じの話題だよ。今回は、比較的平易な内容だね。
Obj-C 最適化、不可分な操作(後編)。atomic operation を最適化する話の続き。 PowerPC の命令である lwarx/stwcx を使うのは、果たして安全なのか?Apple はどういう見解を持ってるのか?という話。 あと、ひらかわさんから指摘を受けましたので、前半の訳を少し変更しました。冒頭の部分です。ありがとうございました!
いじっているとなかなか楽しい Google Web API。コマンドラインはめんどくさいので、簡単にアプリケーションを作ってみた。
文字列を入力して、Google でそれを検索するアプリケーションだ。Web で検索するのとまったく同じ結果が得られるよ。Google にアクセスするところは、Development Kit に付いてきた JAR ファイルをそのまま使って、Cocoa + Java で GUI を作った。こういうときって Cocoa + Java って便利〜。Java のライブラリをすぐ使える。 とりあえず使えるようになったけど、さてこいつで何をしよう?いいアイディアがある人は、こっそり教えて下さい。
こないだ話した Google API だけど、proxy の後ろからでもアクセスできるパッチが公開されてたよ。これでつながるかな?試してみる、、、おぉ、つながった。ちゃんととってくることができたぜ。 てなわけで、少しまとめてみた。 Google API with OS X Google を猿のように使っている人はぜひ。
Obj-C 最適化、不可分な操作(前編)。atomic operation を最適化する話だ。 まずは、retain カウントの操作を、PPC のアセンブラを使ってスレッドセーフにしてやる、っていう話からだよ。
各所で話題沸騰なのか、ぜんぜん盛り上がってないのか知らないけど、こないだ Google Web API が公開されたよね。SOAP を使って Google の検索エンジンにアクセスできるサービスだ。開発に必要な手順は、Development Kit のダウンロードと、アカウントの作成だ。 Development Kit には、Java と .NET のサンプルが入ってる。Mac OS X なら、すぐ Java のサンプルを起動できるはずだよ。っつーか、これは SOAP を送ることができれば利用できるサービスなんで、最近 XML と SOAP のサポートが加わった AppleScript でもオッケーだ。そんなわけで、早速 AppleScript のサンプルが公開されてます。 極めて面白そうなんで、使ってみたいんだけど、アカウントを作成するページにつながらないのだ。サーバが落ちてるのか?しくしく、、、 追記:アカウント取れた!ライセンスキーも取れた!でも、いまのところ proxy を通してのアクセスには問題があるらしい。しくしく、、、
きょうも、せこせこ翻訳でもしてるかー、と思ってたら、"atomic operation" という語が出てきた。えっと、"atomic operation" の日本語訳はなんだ?そりゃ「アトミック・オペレーション」でしょ。この方が誤解なく伝わるし。 でも定番の訳があったらいやだなー、というわけで Google で調べる。いきあたったのが、この「辞書バグ」のページ。英和辞典の計算機用語のバグを探すページです。これが読んでみると、楽しいのでした。 で、『エクシード英和辞典』の atomic operation の項によると、
ま、そんなところかー。検索をかけたときは、「原子的操作」っていうのがひっかからないか、とどきどきしていたんだけどな。(原子的操作もあったよ、一応) あと、「ベジェ曲線」って「ベジエ曲線」って訳すんだね。知らなかった。
Obj-C 最適化の、オブジェクト生成の最適化(後編)。これにてこの記事はおしまい。 たしかに、この記事のまとめに書かれているように、NSObject の alloc/dealloc を書き換えたら、初期化時を除いて、速くなりそう。poseAs: でのっとりができる Objective-C だからだよなぁ。
リンクとか備忘録とか日記とかさんや、セキュリティホール memo さんとかで言われている通り、IE にバッファオーバーランによる脆弱性が見つかったそうな。さっそく利用してみよう!(え、違うって?) バッファオーバーランとは? 結構古典的なセキュリティホールなんだけどね。コンピュータのメモリ空間の中に、「スタック」と呼ばれる領域がある、と考えてくれ。このスタックは、プログラムが関数を呼ぶときに使われるんだ。で、ある関数が別の関数を呼ぶでしょ。そのとき、呼び出した関数の実行が終わったときに、どこに戻るか?っていう情報を覚えておかなくちゃいけないんだ(具体的にはメモリのアドレス)。これをリターンアドレスっていうんだ。 ということは、このアドレスを書き換えれば、もとの関数じゃなくて好きなところにいける!?たとえば、他のプログラムの先頭アドレスを指定すれば、それを起動することができるんじゃない?これが、バッファオーバーランによる脆弱性だ。 どうやってバッファオーバーランを引き起こす? じゃあ、どうやってそれを起こせばいいんだ?まず、まっとうなプログラムなら、これは起きない。当たり前だ。ただし、バグを含んだプログラムならできるときがある。そして世の中には、バグを含んだプログラムがいっぱいある。 今回の IE の場合は、ある HTML ファイルを読み込ませることで、バッファオーバーランを引き起こせるらしい。簡単だね!さらに、HTML ファイルに書いてある値で、リターンアドレスを書き換えることもできるらしい。すばらしい!ありがとう、Microsoft! 具体的にどういうコードかっていうと、SecuriTeam.com に書いてある。サンプルへのリンクがあるんだけど、404 Not Found なんだよな。でも、抜粋が載ってて、
と、いった感じのコードらしい。%41%42%43%44 がリターンアドレスになるらしい。 どのリターンアドレスに書き換える? これで好きな値に書き換えることができるけど、じゃあどのアドレスに書き換えるんだ?まずは、われらが Microsoft のページを見てみよう。用語説明のページに「バッファのオーバーラン攻撃」がある。それを見てみよう。
そんなわけねーじゃん!!! これを読んだら、「なーんだ、IE が落ちるだけか。それなら、攻撃を受けなくても、いつも落ちてるから、いっしょだー、アハハ」って思っちゃうじゃないか。多くの攻撃者が狙うのは、/bin/sh でしょ。シェルを立ち上げるれば、そこからすべてのコマンドが実行できるからな。それが危険なんでしょ、バッファオーバーランは。 じゃ、/bin/sh のアドレスの求め方は?、、、これは、けっこうめんどくさいし、実際にやる人が出るといやなので、この辺でやめときます。やりたい人は、「趣味と実益のスタック破壊」とかを読むと、懇切丁寧に解説されてるよ。 今回思ったんだけど、Mac OS X になると、/bin/sh を実行される恐れがあるんだよね。前までは、「Mac OS は非常にセキュアなコンピュータだ。なぜならターミナルがないからだ」っていう話(半分冗談、半分本気)もあったんだけど、普通の UNIX になったおかげで、UNIX の手慣れたクラッカーも引き寄せることになるんだよね。「Mac OS X になれば、多くの UNIX プログラマがやってくる」って言ってたけど、それは多くのクラッカーがやってくる、っていうことでもあるんだ。
Obj-C 最適化の、オブジェクト生成の最適化(中編)。前の続きをちょこっと。
ひさびざの Obj-C 最適化だ!このシリーズは、かなり低レベルなところで、Obj-C を最適化してやろうぜ!っていう試みだ。おいおい、そこまでやるかよ、それはもう、Obj-C 使わない方がいいんじゃない?ってとこまでやられているんだ。 そんな Obj-C 最適化から、オブジェクト生成の最適化(前編)の話だ。比較的、おとなしい方法で allock/init/autorelease を最適化する方法について書かれているよ。
ご無沙汰! さて、いまになって気付いたことを一つ。Apple のサイトのここを見ると、ある QuickTime ムービーが見れるんだ。このムービーは、Project Buidler から API ドキュメントを見る素早い方法を教えてくれる。 その方法とは、
おぉーっ、こんな方法があったのか!特に一番目の Option + ダブルクリックは便利。知らなかったよ。これで、さらに速くプログラミングができそう。
|
|
Home | Link | Download | Back Number | Speciall Issue
|