2006/05/20(土)グローバル変数とプラグインの罠

ここ最近,グローバル変数のデストラクタが2回呼ばれて困っていたんだけど,その原因が分かりました.

メインプログラムで定義されているグローバル変数と,プラグインで定義されているグローバル変数が同じ名前の場合,同じ実体を指してしまうようです.そのため,プラグインが終了するとき,メインプログラムが終了するときの2回同じ実体に対してデストラクタが呼ばれてしまう模様.ただし,これは,-rdynamicで変数を動的に割り当てている場合に発生する様です.

extern宣言しなければ,グローバル変数のスコープはファイル有効範囲であり,それより上のスコープの変数は隠蔽されると思っていたので...っていうか,普通そうだと思うんだけどなぁ.

このへんは,C,C++の仕様というより,Linuxにおけるダイナミックリンクの仕様なのかな.

2006/05/14(日)java -続き-

javaはクラスに対しても指定できたんだね.知りませんでした.というか,これが原因でClassLoaderがきちんと動作しなかった.

現状での問題点は,global変数が無いこと.アプリケーションオブジェクトを作るのはいいけど,そこにアクセスする手段が無い.仕方が無いので,staticメンバを使ってごまかしてます.通常アクセスする必要が出たときは,どうするんでしょう?

public class application{

// アプリケーションクラスのオブジェクト

 static application app;

 public static application getApplication(){ return app; };

 public static void main (String argv[])

 {

  // アプリケーションクラスのオブジェクトを生成

  app = new application();

  // ----- 略 -----

 }

}

2006/05/12(金)java

どこぞの研究室の影響を受けて,ちょっといじってみた.で,とりあえず思ったこと...

環境変数の設定がめどい.インストーラーに設定して欲しいなぁ...

あと,CLASSPATHをどうしたらいいかも不明.現状,javac, javaの両方とも"-cp ."を付けて対処してるけど,環境変数にjavaのソースを置いてるフォルダを登録してしまうべきか,面倒もきちんとオプション付けるべきか...

C++で,ほどほどのオブジェクト指向はやってるけど,Javaはその先に行ってるね.windowオブジェクト作って表示.main関数終わっても,window閉じるまではjavaが終了しない.

個人的には,window開いた時点でmainの方はsleepさせたいなぁ.で,閉じたらmainに戻ってきて終了処理して終わり.Win32APIのDialogで言うところのmodal dialogのほう.って,javaにもそのままのやつがありそうだけど.

今後

・モーダルで表示する方法

・イベントの処理

 listener使うとインターフェースに登録されてる関数全部いれなきゃいけないからめどい

 必要なやつだけオーバーロードしたい

・タイマーとスレッド

・自前のイベント処理

・グローバル変数

 っていうか,一番上のアプリケーションオブジェクトにはさわれる?さわれない?

・MFCでいうところのドキュメント・ビューにすべきか

・コンパイルがめどい

 makeが欲しい

2006/05/10(水)アルバムのプラグイン

今回のアルバムは,他言語に対応すべくたらたら書いてたのですが,結局プラグインフォルダにある

・PLUGIN.so.txt

・PLUGIN.so.CHARSET

の2つのファイルをロードすることにしました.

txtの方はプラグインのデフォルトの言語ファイルで,

CHARSETのほうは現在のキャラクタセットに対応した言語ファイルでtxtとの差分だけ入れておけばいいファイル.

ついでに,各プラグインの設定も,config.iniからPLUGIN.iniへと変えることにしました.

現在,1行掲示板用のプラグインを作成中.

掲示板くらいは今夜中には公開できるかも.

2006/05/04(木)PC不調の原因

結局先日秋葉で勝ってきたHDDが悪いらしい...

載せ替えて,XP入れたのはいいけど,数日して起動しなくなりました.で,昨日あたりから,BIOSでは認識するもののブートシーケンスに移行しない...結局HDDを正常に認識していないのが原因っぽいです.

一応認識してるし,XPインスコ出来てはいたものの,初期不良扱いになるのかな.明日買ったとこに問い合わせたいけど,レシートが残ってないかも(汗)

2006/05/03(水)PCが...

マザーボードが逝ってしまったのか、起動しなくなった。BIOSまでは出るんだけど、ブートしない。もしかして、今までの異音はHDDではなく、マザーボードが原因だったのか?

しかた無いので、明日近くの電気屋さんに代わりとなるマザーボードっていうかAPoenのCubeシリーズを探しに行くことにする。

というより、現行機でいまのCPUとかを使い回しできるのはEZ65IIだけ?微妙に高いんですけど...