九月の日記/メモ

 

2000.09.03(日) 23:56:56
なんというか、OS と 標準ライブラリ と アプリケーション を含んだシステム全体をどうやってバージョンアップを重ねつつ開発しているのか? とか思って、まぁ、ただ興味本位であって高尚なことを考えているわけではないが、Linux で libc5 から glibc2(libc6) に移行するのを手動でやってみようとちょっと前からやっているところ。 漠然といじっていてもなかなか全体の事はわからんし、どうも、tcltk を make したらライブラリが奇妙な動作をしているので、解説を探したところよさそうなのがちゃんとあった。 ちなみに奇妙な動作というのは、tclだと、format %g 1.0 が正しく動くが、tk(wish) だと、同じコマンドが、errno=84 になるというもの。そこの strtod 自体は正しく機能しているんだけど。

GNU C LibraryFAQのGlibc Links の所からも直接リンクがあるが、Glibc2 HOWTO の 2. Choosing your installation method. で、セカンダリのライブラリとしてインストールする方法として挙げられている、Installing glibc-2 on Linux がなかなかよさそう。
Introduction で述べている、 "What I wanted to achieve was the creation of an easy-to-use compilation environment, which would allow me to compile applications with either libc-5 or libc-6 without having to modify Makefiles or add command-line arguments to the compiler. I also wanted to do this by compiling all sources myself, and without using any binary distributions." というのがつまりやるべきだと思ってたことだ。

2000.09.06(水) 10:46:45
昨日知った、Win95/98 と WinNT/2000 の非互換性。 FAT/FAT32ボリュームに 8.3 に収まる 全小文字エントリを作るとき、
Win95/98 は、LFNエントリ を作るが、
WinNT/2000 は、全小文字フラグを利用する。
でもって、リード時に、Win95/98 は、全小文字フラグを無視している。 だから、WinNT/2000 で 作成/コピーし、Win95/98 で読むと同一性が失われて不幸。
※ちなみに、Linxu(2.2.9) は、NTと同じ方だが、全大文字の時もLFNエントリを作る。

なんでそんなことを気にするかというと、マシンを新調して新しいハードディスクに元の環境をそっくりそのままコピーしようとしたときに、問題になったから。 そっくりそのままとは、つまり、ディレクトリエントリの順番も代わらず、ファイル名も一字一句同じで、タイムスタンプも保存されているということ。
実は、タイムスタンプの方も問題で、Win32 API で出来るのだが、Win95/98 だと、一部実装が省略されているせいでディレクトリのタイムスタンプが変更できない。結局、我々は、Win95 で コピーして、その後 2000 で タイムスタンプを書き換えるという方法で、対処するしかなかった。

2000.09.13(水) 02:01:22
Windows2000 になって、かれこれ、7ヶ月、βの時からつきあってるなどは、もっとになるわけだが、その間ずーっと悩まされている問題が一つある。んで、それは、SP1を入れても解決されないことが分かったので、自力解決を模索することにした。
実は問題は、Win98 でも起こるらしく、Microsoftは、
http://www.asia.microsoft.com/mscorp/worldwide/japan/support/kb/articles/j044/9/51.htm
の様なページを掲載している。 (関係ないが、Compatibility95 を検索しても、これしか出てこないというのはけしからんぞ。意味のあるものならその名前を見出し含む記事があるべきだし、変更したんならその時に知らされるべきだし。)
Windows2000 に関しては、
INFO: Changing the Foreground Window in Windows 98 and Windows 2000
INFO: SetActiveWindow() and SetForegroundWindow() Clarification
の二つの記事がそれだ。 前者には、変更の詳細が、後者には回避方法が書いてある。が、実際試してみると全然回避方法になっていない。というのは、変更によって、起こりうる限りあらゆる種類の動作不良が起こるようになっているからだ。いくつか挙げれば、

といった具合である。すべての問題に共通する事は、予測不可能な動作をするということだ。予測可能ならば毎度毎度余計にキーやボタンを押せばよいのでまだ我慢できるかもしれないが、予測不可能なのは非常にイライラさせられる動作だ。(UIの基本がなってないと言えないか?) そもそも何でこのような変更を思いついたのか、推測するに、例えばICQだかといった インスタントメッセンジャー系のソフトなどが無礼にも唐突にダイアログを出してきて他の作業中を妨害するのを防ぐためなのだろう。作法をわきまえたソフトしか使っていない者としては、スタートメニューからいくつかのアプリケーションを起動しようとした時に、先に起動したアプリケーションのウィンドウが開く前にスタートメニューを開くと、ウィンドウが開いたときにスタートメニューが勝ってに閉じられてしまうという問題の方をよく経験するが、上述の前者のリンクをみるかぎり、これにつては、最初考慮しておらず、Windows2000 の時に付け足されている。いったい何を考えているんだと思わずにいられない。変更するなら ポリシーもはっきり示して欲しいもんだ。
ついでに言うならエクスプローラはウィンドウマネージャなのだから、(これは当然分離してほしいと思っているが、) 特別扱いするのが当たり前のはずなのだ。なんだってこんな問題が起こるのか!
以上グチである。
さて、別の言葉で言えば再現性が悪いということにもなり、なにか手段を講じたときに有効性を確認しづらいのが困るので、再現性を上げる方法はないかと探ってみた。どうやら、重い処理が走っている時によく再現する様である。次の操作を試して欲しい。

エクスプローラ等任意のウィンドウを10個程度開く。レジストリエディタ(regedit.exe)を起動し、ヒットしない単語を検索する。レジストリエディタが検索を実行中に、タスクバーのボタンを順繰りに押していく。フォアグラウンドにならずに、ボタンが点滅するところが観測できるはずである。タスクマネージャでレジストリエディタのプロセスの優先度を「高」にするとさらに効果的である。

求む解決策!!

2000.09.17(日) 02:26:25
ATOK-X を買った。emacs 20.7 とかがなんかちゃんと対応していて、まったく問題ない感じ。カナ入力を考えなければ。カナ入力は、ASTEC-X からしか試してないからなんともいえないが、自動カナロックとかの機能がないとつらいし、カナロック状態だとCTRL+なんとかも使えなくなってしまうし。ま、それはいいとして、ATOK-X は期待以上の感動的な出来ではないだろうか。

2000.09.17(日) 02:31:25
K6-2+ を買った。K6-2 500 が動いて、Vcore=2.0V に設定できるマザーボードに挿しても動かない。とりあえず、動作確認はしたいんだけど、どうしたもんか。

八月の日記/メモ