(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. 9 x系の OS なら "\i386\winnt /ox"、 NT 系なら "\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. 所々壊れているので Windows Update を行う。
 ...やれやれ。

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\\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 迄の間に行われているものだってあるのだから。

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

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

 追記: 現在ではこのサイトに存在します > "Diff.chm"

 今回作成したのはリファレンスではなく、各バージョンの詳細な差異を調べるためのものです (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 にはそれとは別のバージョン識別子を用意してはあるものの)。

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


08/07/26

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

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

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

 追記: 現在ではこのサイトに存在します > "Delphi の製品情報"


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