(08/07/01~)
08/07/06

・多忙
 ここ2週間で8つのPC復旧を行った。

・PC1
 XP。SP3適用後に運用していたらどうやらSP3の何かしらのファイルが書き換えられてしまった模様。起動時に"SP3のCD"を要求してくる。SP+メーカーでSP3適用済CD(DVD)を作成し、喰わせてやる。

・PC2
 XP。起動しないPC。メモリの抜き差しで起動するようになった。SP3等を適用。お約束でYAMAHAの音源がエラーを出すのでメーカーサイトからYAMAHAの音源ドライバをDLしてきてインストール。後はSP3をあてたりイロイロ。

・PC3
 Vista。珍しくS.M.A.R.T.がエラーを出す(突然死の方が圧倒的に多いので)。故障予想日は本日(作業日)...orz。急いでHDDを調 達し、移行する事に。ただ、これは社内のPCでソフトウェアがてんこもりでインストールされているので、再インストールなしで復旧したい。

 VistaはXPと違い、BartPEを用いた単純コピーでは動作しない(コピーできないものが存在する)ので、Acronis Migrate Easy 7.0を購入。起動CDイメージを作成し、BartPEに組み込んだBCDWにてマルチブート可能にした。その後、Acronis Migrate Easy 7.0で新しいHDDにクローン作成して完了。BartPEのソースにはPC1で作成したXP-SP3を使用。それに伴ってBartPEもアップデート。

 Vistaの現状復旧(再インストールせずに正常時の状態にする)はこれが初めてだったが、単純コピーが通用しない以上、Acronis Migrate Easy 7.0のような商用ツールを使わざるを得ない。この先、Vistaの現状復旧は増えてくるだろうから、無駄な出費ではないと思う。

・PC4
 XP。HDDが故障しているようだが起動はする。客先の要望で現状復旧なので、BartPEでコピー復旧。その後、XP-CD(DVD)から修復セットアップ。

・PC5
 NT4.0。調子が悪いので、予防策でVirtual PC 2007用イメージを作成して欲しいとの事。このPCは既にサブPCで、メインPCはXPに移行されているのだが、古いアプリケーションがXPで動作しないのでサブとして運用されている。メインPCはメモリが2GBあるので、NT4.0程度はVirtual PC 2007で余裕だ。Virtual PC 2007上のゲストPCの方が、実機よりも高速に動作するかもしれない。

 さて、調査。うげぇ、このPC、調子悪いどころか壊れてるじゃねーか。とりあえず、仮想HDDを作ってみる。手持ちのNT4.0仮想HDDへファイルをフルコピー...できない。やはりHDDが壊れている。FINAL DATAでファイルを復元してコピー....できない?あれ?容量不足?しまった、このNT4.0仮想HDDはCドライブが4GBだ。

  一般人はこういう体験をする事がまずないのでチラシの裏だが、NT4.0は普通では4GB以上のブートパーティションを作れない。これは、NT4.0の セットアップが一旦FAT32でインストールした後にNTFSへ変換するためだ。なので、NT4.0で4GB以上のブートパーティションを作るには、別のNT4.0(恐らくSP4以上)に繋いであ らかじめHDDをNTFSでフォーマットしなくてはならない。ちなみに、この作業はNT4.0以外で行う事はできない...NTFSのバージョンが異なる ためだ。さらに言えば、SP6a以下のNT4.0のHDDをXP等で読み込んではいけない。一度でもこの作業を行ってしまうと、NT4.0は起動しなく なってしまう。データ救出だけならいいが、その他の目的でNT4.0のHDDをXP等で読みたい場合には最新の注意が必要となる。

 NT4.0のブートパーティションはこれまた制限8000MB(7.8GB)以内でなくてはならないので、そのようにフォーマットする。このような事をするためにVirtual PC 2007用の各種OS用イメージを持っているのだ。さらに、古いNT4.0のCDではIDEドライバが7.8GB以上のHDDを認識しないので、
  1. 他のOSで作業(恐らくVista不可)。
  2. NT4.0のCDを挿入し、コマンドプロンプトを起動。
  3. 9x系のOSなら"<NTのCDドライブ>\i386\winnt /ox"、NT系なら"<NTのCDドライブ>\i386\winnt32 /ox"でセットアップFD3枚を作成する。
  4. NT用IDEドライバをDL。これを展開してドライバFDを作成。
  5. セットアップFDからインストール。
  6. 途中で"追加のドライバ"として先のドライバFDを突っ込む。
 ...とここまでやってやっとこさNT4.0をインストールできる。今回はVirtual PC 2007を使用しているし、FDは腐りやすいので、先にRawWriteにてFDイメージを作って作業した。こうしておけば、実機用のFDを作るのが楽だし、Virtual PC 2007ではFDイメージからのインストールが可能なので短時間で作業できる。
  1. Virtual PC 2007へNT4.0を適当にインストール
  2. Virtual PC 2007BartPEを起動(HDDは1.のNT4.0)
  3. 実機をBartPEで起動し、ネットワークで共有を行う。
  4. Virtual PC 2007で実機のHDDをネットワークドライブに割り当てる。
  5. 実機のBartPEFINAL DATAを起動、復元を試みる。復元先はVirtual PC 2007を割り当てたネットワークドライブ。
  6. Virtual PC 2007BartPEからNT4.0のレジストリハイブに細工をして再起動。
 6.はBSoD 0x0000007B対策。NT系のOSで有効なテだ。レジストリハイブの操作は今度また雑談でやりたいと思う。

 そしてNT4.0をセーフモードで起動し、ゴニョゴニョ。通常起動するとビデオカードとネットワークが死んでいるので(構成が変わっているので当然だけれども)、
 へそれぞれ変更。これでなんとかなった。
・PC6
 XP。起動しない。BartPEで見てみるとパーティションテーブルが飛んでる。当然CDからの修復セットアップも行えない。急いでHDDを調達。
  1. 調達した新しいHDDのみを接続
  2. XPを適当にインストール
  3. 古いHDDをスレーブに接続
  4. BartPEを起動
  5. FINAL DATAでファイルを復元
  6. 所々壊れているのでWindowsUpdateを行う。
 ...やれやれ。

・PC7
 XP+Vista。なんだかんだやっていたら、自分のPCを壊してしまった。本業であるソフトウェア開発ができなくなってしまう。XPでPC3用のBartPEを作成終了した所でVistaに戻ろうとしたらエラーが。作ったばっかりのBartPEで確認してみたら、よりにもよってソースが入っているパーティションが消えている。どうやらパーティションテーブルを飛ばしてしまったようだ。運がいいのか悪いのか...。

 急いでHDDを調達。Acronis Migrate Easy 7.0で新しいHDDにクローン作成。しかし、パーティションテーブルが飛んでおり、肝心のパーティションは未割り当てになっている。新しいHDDでここにパーティションを作成、BartPEFINAL DATAでファイルを復元。

 しかし、このままでは起動しない。XPのCDで回復コンンソールを起動、"fixmbr"と"fixboot"を実行し、MBRの復旧とXPのブートマネージャを復旧。

  厄介なのはこれから。デュアルブートなので、そのままではXPしか起動しない。VistaのDVDを突っ込み、復旧を行う。回復コンソールから "bootrec /fixboot"でVistaのブートマネージャを復旧。クローン作成からここまでの作業を数回繰り返した...何故か?ブートマネージャを復旧するの はいいがデュアルブートのため、このままVistaを復旧すると、Vistaの起動ドライブがC:ではなくなってしまうの だ。これではレジストリとの整合性が取れず、"Document and Settings"の位置が違うので、Vistaは一時的なアカウントを作ろうとする("デスクトップの準備をしています"で非常に長い時間が掛かる)。 このアカウントが生成されてしまうと、その後でレジストリを復旧したとしても、正常動作はしなくなってしまう。

 そこで、一度は壊すつもりで起動。ドライブがどうなっているのかを調べる。調べたら、クローン作成からもう一度やって、通常起動、そしてできるだけ早く Ctrl+Alt+ Deleteでタスクマネージャを起動。タスクマネージャの[ファイル | 新しいタスクを実行]から"regedit.exe"を起動。"HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices"を 書き換える。"\DosDevices\C:"とかになっているのがドライブレターとドライブを結びつけているキーなので、これらをすべて書き換えて速や かに再起動。

 Vistaは正常に動作するようになったが、ブートマネージャがメニューに"Vista(復旧済)"なんてのを作りやがったので、Vista Boot Proを使ってブートマネージャのメニューを書き換え。

  とりあえず、うまく行ったが、XPの方は"Generic Host Process"のエラーでエラーダイアログでOKを押下すると、その後一切の操作を受け付けなくなってしまった。なんだかんだやってたらBSoD 0xC0000428でコケるようになった。メイン環境はVistaに移ってるし、復旧させようと思えばいつでもできるのでとりあえず放置中。VM環境も あるしね。

・PC8
 PC4の続き。やはりあちこち壊れているらしく、特にOutLookがおかしい。新規作成するとエラーになるし、添付ファイルを開けない。「添付ファイルの重要なデータが読めないと困る」との事だったので、壊れたHDDを引っ張り出して、一旦Virtual PC 2007環 境を構築。OutLookを起動し、アカウント情報のバックアップを取り、"C:\Documents and Settings\<user>\Local Settings\ApplicationData\Microsoft\Outlook"をコピーでバックアップ。これをPC4へそのまま持って行って も状況は変わらないだろうから、Portable Thunderbirdをインストールしてインポート。これで添付ファイルも読めるだろう。ポータブル版なので、客先へ持って行ってコピーするだけで動作するハズだ。

・現状復旧
 僕のPCが壊れた時もそうなのだけれども、重要なデータやアプリケーションがそのPCにしかない場合には"全く仕事にならない"。それは理解しているの で、例えばOSを入れ直して「はい、できました」で済む訳ない事も承知している。お客さんに言わせれば「直った」と「すぐに業務で使える」が同義な訳で、 HDDが壊れたPCであろうが修理が終わったら、"壊れる前と同様に使える"のを期待している。

 気持ちはよく解るのだけれども、自分の休日を何度も潰して作業しなくてはならない事には理不尽さを感じる事もある。修理代は他のトコで購入したPCで あっても(作業に見合った金額を)貰えない事が多い。PCをメンテしてくれる会社を(ウチから)変えた時に初めて理解する事になると思うのだが、その時に は手遅れだったりする。"感謝してくれ"とか恩着せがましい事を言うつもりはないけれど、"これが当然"とは思って欲しくはない。

 ...というか、僕は自分の職業を"ソフトウェア開発者"だと思っているんだがな...違うのか?

08/07/10

・Windows XP SP3
 そういえば、ちょっと思いだしたのだけれど、WindowsXPのSP3を導入するとバッチファイル内のパスの記述でパスをパスデリミタ(日本なら\)で終端させないといけない場合があるような気がするのは僕だけでしょうか?

 NG: cd D:\TestDir
 OK: cd D:\TestDir\

  確か、このように記述されたバッチファイルをD:ドライブ上で実行した時にパスデリミタで終端されていないと、カレントフォルダが移動しないという現象が 発生しました。ただ、これの再現方法がわかりません。テストコードを書いても正しく動作しますしねぇ...。ま、SP3でバッチファイル絡みで何かしらの問題に遭遇したら、「あーDEKOが何か言っていたなぁ...」と
思い出して頂ければ幸いです。

 要はこのバッチファイルをSP2以前で実行していた時には正常に動作していたのに、SP3にして正常動作しなくなったというものです。サンプル的に部分抽出するとそれは正しく動作してしまうので、原因が未だに特定できていません。

 CreateProcess限定の現象だったかもしれませんが、追試できていません(理由?...僕のPCのXPがマトモに動作しないから)。

08/07/14

・休日らしい休日
 ウチの親を高千穂まで連れて行った。高千穂峡天岩戸神社巡り。天岩戸神社は天照大神が祀られている所。八百万の神が祀られているという天安河原(八百万の神がドンチャン騒ぎをした所ですね)へも行った。ちなみに天岩戸は天安河原へ行く道の対岸から見れるのだが、通行止めになっている。天岩戸神社の社務所へ問い合わせれば天岩戸(この神社の御神体)を拝観する事ができるそうで。

 ちょっとした手違い(?)で2日連続で親を高千穂へ連れていく事になってしまった。初日は父親、2日目は母親。初日は高千穂峡でボートに乗った。ちなみに、子供達に買ったお土産は

"曲ったまんまの勾玉"

 高千穂峡天岩戸神社、どちらもかなり涼しいので、夏休みに行くのもいいかもしれない。

08/07/16

Delphi & C++Builder(Tiburon)が7~9月にリリース?
 色んな意味で...
マジですか?

 ...まぁ、少なくとも今月中は有り得ないと思うのですが。これって、今年の話ですよね?来年じゃなくて。
08/07/23

某FT。
 何気に伏せてないに等しくなってるけど...まぁいいか。

 Delphiに対する知識の範囲ってのはヒトによって偏っている。FTに割ける時間てのもヒトによってバラバラだ。Delphiってのは統計によって中小企業で使われる事が多いってのが判明している。正直、家庭持ちで中小企業で仕事やりながらFTやるってのは無理に近い...学生さんだって世間で思われてる程ヒマじゃない...だけどだ。FTに参加してROMってるのはまだしも、(ピー)(ピー)もやんないってのはあんまりだ。

 愚痴っていても状況は好転しないので、その原因を考えてみる事にした...そして、僕は一つ大きなミスに気付いた。

"日本でClassic Delphi(7以前)を使っている割合は80%"

 大きな原因の一つは多分コレだ。例えばガリレオ以前のIDEしか使ってないヒトがガリレオIDEを検証しようとしても、その使い方が解らないのだから、問題があってもバグなのか仕様なのかを知る術がない。VCL/RTLにしたって、新たに追加されたVCL/RTLの他にも初めて見る物があったり、持っているバージョンのDelphiから仕様が変更になっていて、その仕様変更がD2007迄の間に行われているものだってあるのだから。

 Delphi7からDelphi2007への変更点はCodeGearに資料がある(IDE/VCL/言語・コンパイラ)のだが、詳細な差異ってのは結構無関心なヒトが多いと思う。そこで...という訳でもないけど、Delphiのサイトを特設してみた(多分FT期間内限定)。

 http://deko.no-ip.org/delphi/sources/

 今回作成したのはリファレンスではなく、各バージョンの詳細な差異を調べるためのものです(CodeGearさんから苦情が来たら消します)。DDNSなので急に繋がらなくなる事もあるかもしれません...念のためにアーカイブ(88.8MB)も用意しておきました(解凍すると45,000+のファイルが解凍され、719MBを消費するのでご注意下さい)。CLXはオミットしてあります。また、ソースの提供されていないサードパーティ製コンポーネントやOCX(VBX)の資料はありません。

 関数一覧や変数一覧を眺めて「これって何?」と思ったら、お手持ちのヘルプを参照してみて下さい。そしてヘルプにも載っていない便利なものがあるかもしれませんよ...ちなみにTiburonのもあるのですが、Web上だとどうしてもFT以外の方に見られてしまう可能性がありますので公開しておりません(それ以前に、製品版同士を比較しないと意味ないですし)。

 ちなみに第2弾も準備中です(FTの妨げにならない程度にやります)。
08/07/24

昨日の。
 思うトコロがあったのでやり直し。アーカイブ(90.7MB)も新たに用意しておきました(解凍すると46,000+のファイルが解凍され、729MBを消費するのでご注意下さい)。本当はDescriptionも表示されるトコロは表示されるのだけれど、Descriptionはドキュメントの類にカテゴライズされると思うのでポストプロセッサで除去してあります(容量の関係もありますが)。ローカル(或いは社内サーバ)で運用し、Descriptionにメモを書き加えたりすると実用性が向上するやもしれません。

・クラスヘルパー
 Delphi2007のソースを眺めていて思ったのだけれども、forms.pasにはクラスヘルパーが2つ定義されている。一般のプログラマがクラスヘルパーを使うのならともかく、VCLでクラスヘルパーを定義する意味ってあるのだろうか?何故普通にクラスのメンバではいけないのだ?

08/07/25

昨日の。
 思うトコロと忘れていた事があったのでちょっと追加。アーカイブ(92.5MB)も新たに用意しておきました(解凍すると47,000+のファイルが解凍され、744MBを消費するのでご注意下さい)。

・クラスヘルパー
 天から声が降ってきた気がした。なるホド...バイナリ互換のためですか。そういや、コンパイラバージョンも2006と2007で同一でしたっけね(2007にはそれとは別のバージョン識別子を用意してはあるものの)。

・Delphi1
 Delphi2とかに収録されてるんで捨てちゃった気がしますが、ソースってあんなものでしたっけ?*.intというインターフェイス部分のみのファイル(implementation節以下がない)の存在を思い出して昨日のに追加しておいたのですが、昔は*.intを*.pasにリネームして何かに使っていた記憶があるのですが...?

08/07/26

・第2弾
 まだ完全ではありませんが、それなりに使えるのでアップしておきます。

 http://deko.no-ip.org/delphi/products/

 今回のは製品の緒元と、製品個別の情報についての一覧です。

 BACK   古いのを読む   新しいのを読む