[Top] > [Records May, 2004]

Platitudinous Records May, 2004

【<旧日記】【一覧】【新日記>】

● May. 10, 2004 (Mon.)

_私に一体何をせよというのだ.

_CreateRemoteThread(),実験もせずいい加減なことを書くでない.やはりユーザ引数も対象のプロセス空間で有効なアドレスでなければならないようだ.LoadLibraryのエントリポイントに関しては,kernel32.dllがどのプロセス空間でも同じ場所にマップされていることから簡単に分かるが,ユーザ引数に関しては何せ他人のプロセス空間が故に簡単にはわからない.もちろん何らかのプロセス間通信を行うなら知る手段がないわけではないが,そもそもそれが可能なら特にCreateRemoteThread()なんぞ使わなくてもなんとかなりそうなものだ.ならないかもしれないが.

_じゃあどうするのだ.というと,分かってみれば話はそれほど難しくはなかった.要するに対象のプロセス空間にメモリを確保し,そこに引数を書き込んでやればいいのだ.なるほど,なるほど.ここまで分かればとりあえずdllねじ込むのもそう難しいことではないし,そんなことしないでも複雑なことをしない関数なら関数ごとねじ込んでしまえということも出来てしまう.まあでもやっぱり,CreateRemoteThreadそのものとかそのあたりのAPIが9x系OSでサポートされないあたりが問題なのだな.結局のところ.

● May. 27, 2004 (Thu.)

_比較的良く分からない生活ぶり.確実に自由度は高いが,とはいえ高ければ高いほどいいというわけでもないか.

_自分が喋るとろくなことにならないと思い始めると何も喋ることがなくなりここの存在意義は極めて希薄になる.今はというかしばらく前からそんな状態.時々勢いに乗ると良く喋るのだが喋りすぎたかと後になって思ったりする.言ってみれば怖いのだ.だが同時に寂しい.同時に解決するというのは所謂ジレンマなので,結局のところ折衷案を模索するしかない.今のところは独り言であれればそれでよいとしよう.

_Javaは結局あまり好きになれなかったのだが,先人が残してくれたJavaの資産があるので,いずれ別の言語に移植することを考えるにしろ,とりあえずはJavaのまま作業中.半年間の訓練は無駄にならなかったということでよしとしよう.

_JavaのいいところはEclipse開発環境の出来がなかなか良いことだ.コードフォーマッターやリファクタリングとかは素敵な機能で実に気に入っている.逐一ビルドしてみなくても勝手にコンパイルエラーや警告を指摘してくれるのもいい.ある変数がどこで使われているのか分からなくなったら,まずその変数の名前を変更してみる.するとその変数を参照しているところがエラーとして全部列挙されるので,他人のコードを読むときなんかは便利だ.あるいはメソッドのアクセスレベルをpublicからprivateにしてみれば外から呼ばれている場所が列挙される.さらにprivateで使用されていないという警告も表示されればそのメソッドは外からしか呼ばれていないことがはっきりする.今Javaを使っている理由は単に他人が残したJavaの資産を再利用するためなので,こういった機能はそのプログラムの解読に非常に役立つ.変数の解析が終わったらリファクタリング機能で名前変更が安全かつ一挙に出来るのも嬉しい.一斉置換だと修正されるべきでない場所まで修正されてしまうのでおちおち使っていられないのだが,この機能ならきちんと言語仕様上のスコープなども考慮してくれる.

_MicrosoftのVS.NETも悪くはないのだが,いちいちビルドしなければ分からないのでそのあたりが面倒だ.コードフォーマッターはindentあたりで代用できるにしろ,リファクタリング系機能がさそうなのはかなり残念だ.ただ,IntelliSenseはVS.NETの方が使いやすいと思う.慣れの問題なのかもしれないが.

_Eclipse問題を挙げるなら動作が少々もたつくことだ.起動にかなり時間がかかるし,しばらく最小化していると復帰するのに時間がかかるようになったりする.しばらくすれば気にならない程度に動くスペックのマシンが主流になるだろうが,今のところまだ気になる程度にはもたつくのだ.もともとWindowsネイティブのVS.NETの方が快適具合では遥かに良い.起動にある程度時間がかかるのは確かだがEclipseよりは遥かにマシである.

_言語仕様やクラスライブラリは悪くないと思うし実のところC++よりマシなんじゃないかとも思うが,C#と比べるとC#の方がいいかもしれないなどと思ってしまう.C#のほうが後発なだけに有利なのは間違いないのだけれども..NET Frameworkの出来はそれほど悪くないし,むしろ良いといってもいいと思う.

_現時点で既にManaged C++には全く魅力を感じない.Managed C++を使うくらいならC#を使った方が遥かにマシである.C++の方が慣れていることを含めてだ.ただJavaもそうだが,早々にGenericsの実装は期待される.Genericsが使えるようになれば,.NET Framework内で完結できるようなアプリケーションならC++よりもC#を選択するということも十分に考えられる.JavaもGenericsやboxing/unboxing,Enumあたりを1.5から導入するつもりのようで,このあたりが実装されればJavaも言語仕様的にはC#に並ぶだろうか.あとJavaに足りないのはdelegateとoprator overloadingだ.delgeteの方はともかくとしてもoperator overloadingは欲しい.せっかくBigDecimalなんていうクラスが用意されているのに,発狂しかねない構文でしか使えないのは残念でならない.そして今のところ私が知っているうちでoperator overloadingが一番まともなのはD言語だと思う.C#はC++の流れを汲んでいるのでC++そのままの野暮ったさを持ち込んでしまった.一部の演算子はペアはにしなければならないという制限こそあるものの,結局重度の意味破壊が可能なのは変わりがない.JavaはぜひD形式で実装してもらいたいものだ.もっとも意味破壊が可能なことはいずれにせよ同じなのだが,それでも幾分マシだろうとは思う.それとも折衷案としてはC#は悪くないのだろうか?

_ここまで言語がらみの話をしておいてLispが出てこないのは私なりの意地とかなんというかまあそういうあたりである.ただの反骨精神とも言うがこのあたりは譲らない.

● May. 29, 2004 (Sat.)

_まだあった.Javaに足りないもの.unsigned整数型.

_C#はunsignedもちゃんとサポートしてるんだよな.それだけでも魅力な気がしてしまうのは多分何かの勘違いだろうけど.明確に0未満が必要ない場合はunsignedにしてしまったほうが0未満を気にしなくてすむので楽で良いし意味的にもはっきりするんだけど,エラー値に負を返す習慣だとか,singedとの比較だとかそういうあたりで微妙な問題を抱えるのもまた事実か.

_どうもマウスのホイールの調子がおかしい.時折急に上向きスクロールの入力が連続して入る.非常に不便だ.が,問題はこのマウスの替えはないということだ.チルト自体はまあいいとするにしても,ボタンの位置と割り当て機能がダメすぎなので新IntelliMouse Explorerは使えない.古いものだとボタンの割り当てはいいのだがボタンが片側でなく両側で左右対称なので,片側に慣れてしまった身としてはちょっといただけない.さてどうするか.多少金がかかることは許容するにしても,モノがないのでは買おうにも買えない.古いのは安く売っているし新しいものは店頭に普通に並んでいるのだが,私が今使ってるものだけは何故かどこにも見ないのだ.売っているうちに買いだめしておくべきだったのかもしれない.


【<旧日記】【一覧】【新日記>】
[Top] > [Records May, 2004]
管理者:Wayne mail address