Chicken-Developer Anthony's BLOG
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書く事で広告が消せます。
Apache POI で Excel ファイルのセルコメントを扱う
 Apache POI は Java プログラムから手軽に Excel ファイルなどを扱える Apache の API だが、Shape 系のオブジェクトを扱うには少々お作法的なテクニックが必要だ。

 今回私が苦労したのはセルのコメントが含まれる既存の Excel ファイルを POI で編集する際にセルのコメントを新規に追加するケースだ。

File xlsFile = new File("test.xls");
HSSFWorkbook workbook = new HSSFWorkbook(xlsFile);
HSSFSheet sheet = workbook.getSheet("Test");
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell((short) 0);
HSSFComment comment = cell.getCellComment();
if (comment == null) {
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
HSSFAnchor anchor = new HSSFChildAnchor(0, 0, 6, 3);
comment = patriarch.createComment(anchor);
comment.setString(new HSSFRichTextString("Comment"));
cell.setComment(comment);
}
FileOutputStream out = new FileOutputStream(xlsFile);
workbook.write(out);
out.flush();
out.close();

 上記のコードは既存の Excel ファイルに既にどこかセルコメントが使用されている場合に、1行目のA列にセルコメントが設定されていなければ新規にセルコメントを作成して「Comment」という文字列のコメントを追加するものだ。

 仮にその Excel ファイルにセルコメントやシェイプ系が一切使用されていない場合は特に問題なくセルコメントを設定できるので問題ない。 ちなみにセルコメントといっているものは
セルコメント
こういうものだ。

 ところが既にセルコメントがあった場合に上記コードを実行すると、ファイルを開くときに
Excelエラー
というダイアログが表示されて既存のコメントが欠落してしまう。

 調べてみたが、このメーリングリストによると、どうやら既存のシェイプの操作に関しては制限事項だというのだ。

 つまり
  • セルコメントなどのシェイプを POI で扱う場合は必ず HSSFSheet#createDrawingPatriarch で描画系マネージャを新規作成する
  • createDrawingPatriarch することで既存のシェイプ情報は引き継がれない
  • そのまま保存すると既存のシェイプ情報は欠落する
  • 既存のシェイプは操作できないので、HSSFPatriarch などの描画系マネージャから既存のシェイプを一度削除する、という操作もできない
  • どうしてもシェイプを扱いたい場合は新規にシートを作成して createDrawingPatriarch しなさい

    ということだ。

     これを書いている時点で使用した POI のバージョンは 3.0.2-FINAL-20080204 だ。使用している Excel は Excel 2002 SP3 だ。
    将来のバージョンで対応してもらえることを祈る。


     さて、それではこの制限事項をもとにどのようにすれば既存の Excel ファイルに新しいセルコメントを追加するプログラムが書けるか、だ。

     私が対応した方法はとてもナーバスな方法であるが、簡単に紹介しておこう。
    File xlsFile = new File("test.xls");
    HSSFWorkbook workbook = new HSSFWorkbook(xlsFile);
    HSSFSheet sheet = workbook.getSheet("Test");
    /*
    * ここからシートを新規に作成し、既存のシートからデータをコピーする ==>
    */
    int sheetIndex = workbook.getSheetIndex(sheet);
    workbook.removeSheetAt(sheetIndex);
    HSSFSheet newSheet = workbook.createSheet("Test");
    workbook.setSheetOrder("Test", sheetIndex);
    HSSFPatriarch patriarch = newSheet.createDrawingPatriarch();

    /* ここで既存のシートから新規シートへセルの値や書式、 */
    /* セルコメントがあれば作成してコメント内容を取得して設定 */
    /* 列幅や行幅、シート設定などのプロパティを可能な限りコピーする */

    /*
    * <== ここまで
    */
    // HSSFRow row = sheet.getRow(0);
    HSSFRow row = newSheet.getRow(0);
    HSSFCell cell = row.getCell((short) 0);
    HSSFComment comment = cell.getCellComment();
    if (comment == null) {
    // HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
    HSSFAnchor anchor = new HSSFChildAnchor(0, 0, 6, 3);
    comment = patriarch.createComment(anchor);
    comment.setString(new HSSFRichTextString("Comment"));
    cell.setComment(comment);
    }
    FileOutputStream out = new FileOutputStream(xlsFile);
    workbook.write(out);
    out.flush();
    out.close();

    シートからシートへのコピー部分は割愛させてもらった。
    ここはどこまでの情報をコピーすべきなのかを十分検討したうえで実装してもらいたい。

    私がこのシートコピーで対応したのは
  • セルの値 (CellValue)
  • セルの書式 (HSSFCellStyle)
  • セルのコメント (HSSFComment)
  • 列幅 (HSSFSheet#setColumnWidth)
  • 行幅 (HSSFRow#setHeight)
  • シートのグリッドライン表示 (HSSFSheet#setDisplayGridlines)
    の6点だ。

  • テーマ:プログラミング - ジャンル:コンピュータ

    RAMディスクに仮想ファイル(ページファイル)を置いてXPを高速化
    今日ソースネクストから「驚速RAMディスク」の優待販売案内が来た。
    使い切れていないメインメモリの一部をドライブとして割り当ててHDDのようなディスクアクセスのない高速なドライブ環境を手に入れるためのソフトだ。

    RAMディスクと言えば、随分前に注目して一度使ったことがある。
    それもフリーソフトでだ。

    ソースネクストのソフトは安いので幾つか買っているが、今回はこれに近いことを完全タダ(フリー)で構成してみる。

    使用するのは国産ではない。ERAMなど幾つか試してみたがどうも仮想メモリ(ページファイル)をRAMディスクに割り当てることができない。
    Windows 2000までは対応していたらしいが、XP/2003では仮想メモリの管理方法が変わってうまく機能しなくなっているらしい。
    中にはドライブレターを割り当てられない、しかもRAMディスクのサイズは64Mバイトまでしか認識しないなど、結局私がやりたいことができないものばかり。フリーソフトにあまり多くのことを望めないので仕方が無いことではある。

    こういったとき私はよく海外に出かける。(海外のサイトで探すと言うこと)
    あった。よいのが。FreeRamdisk for Windows Vista, XP, 2000 and 2003 Serverというもの。

    今回はこれを使った構成を紹介する。
    1. まずはここからramdisk.zipファイルをダウンロードしてくる。
    2. zipファイルを解凍する。(一時的な場所でなく今後使うファイルなのである程度考えられた場所がよい)
    3. ramdisk.exeを実行。
    4. Install Ramdiskボタンを押す。
    5. Disk Sizeを選択。(私は512Mを選択)
    6. Drive Letterを選択。(私はRを選択)
    7. Media TypeでFixed Mediaを選択。
    8. Applyボタンを押す。

    Ramdisk

    ※見た目はVistaだが、これはXPにVista風のVisualStyleを適用しているだけ。

    以上で導入は完了。次回からは再起動してもこの設定でドライブは維持してくれる。
    とくにBOOT.INIを編集する必要などはないし、デバイス・マネージャを使ってデバイスの導入などといった多少分かり図らいオペレーションは無い。

    さて、このようにして作成されたRAMディスクをどのように使うかが問題だ。

    私のXPは1Gのメモリが2枚刺さっているので2Gバイトある。そのうちの512MバイトをRAMディスクに割り当てた。
    これだけのサイズを有効に活用するのかは、使いこなしの期間がまだまだ足りない。
    とりあえず、今の段階では私の現時点での使い方を紹介しておくことにする。

  • インターネット一時ファイルの配置場所
  • ページファイルの配置場所
  • TMP、TEMP環境変数

    以上の3点である。

    1. インターネット一時ファイルのキャッシュ配置場所
     Internet Explorerのプロパティ<全般>タブにある設定ボタンで設定する。フォルダの移動ボタンを押して作成したRAMディスクを指定すれば、R:\Temporary Internet Files\と設定することが可能だ。(※私はここで64Mバイトの指定をした。512-64=余り448)
     この設定を行うと再起動するとメモリが開放されるのですべてのファイルが破棄されることになり、再起動時に一時ファイルを全て削除した状態と同じになる。
     最近は昔のようにナローバンドなことは少なくなったので、ネットサーフィンをしているときはむしろキャッシュファイルの管理でディスクアクセスが頻繁に発生してこれがボトルネックになっているような気がしている。
     変わりにネットワーク・トラフィックが増すことになるが、この構成のほうが快適になるはずである。毎回画像ファイルなどをダウンロードするとネット環境が快適でなくなるような人には勧められない。

    2. ページファイルの配置場所
     他のフリーソフトではできなかったのがこれ。
     このソフトではページファイルを割り当てるツールが付いているのでありがたい。コマンドプロンプトからaddswap R:\pagefile.sys 256 384と実行すればRAMディスク上にページファイルが出来上がりシステムへの設定も完了している。(※448-384=64)
     ただし、システムのプロパティの<詳細設定>タブのパフォーマンスの設定で開く、パフォーマンスオプションの<詳細設定>タブにある仮想メモリの変更で表示されるダイアログ、ここには設定されている内容が反映されていないので、カスタムサイズで初期サイズ 256、最大サイズ 384と入力して設定ボタンを押しておいたほうがよい。
     後々の混乱の元にならないように画面上の見た目も合わせておいたほうがよいだろう。もちろん、この設定に関してはシステムへの設定は行われているのでOKや適用ボタンを押してダイアログを閉じていっても再起動を促されるようなことはない。
     これらの設定に加え、他のHDDのドライブに設定されているページファイルはすべてページングファイルなしに設定して再起動したほうがよい。
    Pagefile

     これはあくまで参考設定なので全ての人がこの設定で快適になるとはいえないので注意してもらいたい。

    3. TMP、TEMP環境変数
     いわゆる一時ディレクトリとして様々なアプリケーションがファイルを作ったり変更したり作ったまま放置したりされるディレクトリである。システムのプロパティの<詳細設定>タブにある環境変数ボタンを押して設定する。TMPとTEMPはユーザー環境変数とシステム環境変数にそれぞれ2つずつあり合計で4つある。
     これらの値にR:\TEMPと設定すればよい。一時ディレクトリを使うアプリケーションの動作はかなり快適になるはず。それに再起動やシャットダウンでファイルは消えるので無駄にHDD上に一時ファイルが残っているという気持ちの悪い状態がなくなるのでよい。(※インターネット一時ファイルで64M、ページファイルで最大384M使ったので、この一時ディレクトリは64Mの割り当てとなる。計画的な割り当てをするならaddswap R:\pagefile.sys 384 384の方がよいかもしれない。)

    ■特筆すべき点を発見■
     ERAMの場合、512Mのような大容量RAMディスクを構成する場合BOOT.INIでWindowsがメインメモリとして認識するサイズを1.5Gにしておくなどの対応が必要であったが、このFreeRamdiskは違う。BOOT.INIの変更はしないし、Windowsへのメインメモリの指定も特に変更しない。
     つまりFreeRamdiskではWindows上で2Gがメインメモリであると認識された状態で512MのRAMディスクを使用できるので、ノートPCやVistaで活用している休止状態ではRAMディスクの内容は開放されないのだ。もちろんサスペンドも。
    つまり、私の環境の場合2Gまるまるhiberfil.sysに保存されて休止状態になるため、そこにRAMディスクが含まれているというわけだ。

     別の言い方をすると、大容量RAMディスクの場合BOOT.INIを使うERAMなどでは512MのRAMディスクを作成した場合、OS管理上のメモリサイズが1.5Gになるため、hiberfil.sysも1.5Gになる。つまり、Windowsは休止状態になるときhiberfil.sysへメインメモリとして認識している1.5Gしか保存しないため、RAMディスクの内容(512M分)は破棄されてしまうと言うことだ。

    FreeRamdisk、なかなかよいソフトを見つけたな、と思う。



    今日一日(2008.02.22)上記設定で使用してみた感想。

    □良かった点
  • ネットサーフィンは体感できるほど快適になった。
  • ディスクアクセスが確実に減った。ページファイルをRAMディスクにした効果がある。
  • 圧縮ファイルの解凍は一時ディレクトリを使用するため凄く早くなった。

    ■悪かった点
  • 一時ファイルに指定しているRAMディスクサイズが足りなくなると大きなファイルのダウンロードが失敗する。今日Eclipse(128Mくらい)をダウンロードしたら途中でディスク領域が足りませんと警告されDLが失敗した。
  • 仮想メモリ(ページファイル)は256-386で設定していると256Mで足りなくなったときに増加させることを通知されるので初めから386-386で設定した方が良さそうだ。

    やはり、一番気になったのは大きなファイルのダウンロードで一時ファイルのサイズが足りなくなったとき。ダウンロードは他のダウンローダー系ソフトに任せるとこれは回避できるが・・・
    これに関しては今後も使用してみて考えてみることにする。

  • PPTP VPNの接続エラー 720、609など
    連日PCの不調に出会い、大変な時間を割いている・・・

    今回はWindows XP標準で備わっているVPN接続機能(仮想プライベートネットワーク)のエラーについてまとめる。

    出会ったエラーは2つ。
    エラー 720 リモート接続できません(メッセージはもう少し違った感じであった)
    エラー 609 指定されたデバイスの種類はありません。

    720のエラーはPPTPが正常に構成できていないことが原因であることが分かった。
    これを修復する手順は、

    1. regeditで
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}
      の00xxからWANミニポート(PPTP)を探し、その00xxを削除。
    2. デバイス・マネージャのネットワーク・アダプタから非表示のデバイスの表示で表示されるWANミニポート(PPTP)を削除。
    3. Microsoftからdevcon.exeをダウンロードしてきて
      devcon.exe install C:\WINDOWS\inf\netrasa.inf MS_PptpMiniport
      を実行してWANミニポート(PPTP)を再インストール。

    である。
    この手順を間違ったり、PPTPを示すレジストリ上のリンクが切れた状態やPPTPが存在しないと認識されているときに609のエラーが出る。

    「XP PPTP VPN エラー 720」で検索するとMicrosoftなどの情報からTCP/IPを再インストールしなければならないとかいう情報が得られるが、これは的外れであった。

    ちなみにXPではTCP/IPは再インストールできない代わりに再インストールと同様の結果を得られるコマンドが用意されている。

    netsh int ip reset C:\resetlog.txt


    これを実行すれば良いのだが、私が今回であった事象はこれでは解決できなった。


    今回この事象を調査している際に思わぬことまで分かったのでここに残しておく。
    ThinkPad固有の問題であるとは思うが、ネットワークアダプタにサービスとして導入され、デバイスマネージャにすら登場してくるこれらはどうようにレジストリから削除した後、デバイスマネージャから削除することできれいにアンインストールできる。

  • TVT Packet Filter
  • Wireless Intermediate Driver

    ネットワークのプロパティからこれらのサービスだけをアンインストールしてもデバイスマネージャ上で黄色いアイコンでエラーが報告されるなどの状態になるため、この方法は有効であると思う。

    これら2つのサービスは普通に個人で使用する分にはまったく関係のないものなので、特定の管理者が存在するような環境(プロジェクトルームやオフィスや学校など)以外では不要であると思ってよいだろう。

    ちなみに今回紹介したdevcon.exeであるが、今回の調査中に誤って削除してしまったWANミニポート(IP)などもこれで修復可能である。手順は同様。
    C:\WINDOWS\inf\netrasa.inf に記述されているデバイスであれば引数を変えることで対応できる。
  • テーマ:PC不調 - ジャンル:コンピュータ

    KURO-BOX/PROのDebian ARMELでJava
    玄人指向のLinuxBOXであるKURO-BOX/PROはCPUにARM926EJ-S(ARMv5TEJ)というものを搭載している。
    ARMは主に組み込み系で多く採用されているCPUであるが、TEJのJ部分にJavaに関する機能が搭載されていることが示されている。今回はこれに注目したい。

    ARMプロセッサのモデルナンバーにJが付くモデルはJazelleというテクノロジに対応しているということを示している。
    Jazelleに関する詳しい説明はhttp://www.jp.arm.com/uk/uk_jazelle.htmlを参考にしてもらうとして、簡単に説明すると、CPUがJavaのバイトコードを実行する命令を持っているため高速に動作させることができる、というものだ。

    KURO-BOX/PROに搭載されているARMプロセッサは400MHzと現行のPCに比べたらかなり遅い。メモリも128MBしかない。
    この環境でなんとかJavaを高速に動作させて、KURO-BOX/PROをJavaプログラムの動作をベースとしたWebアプリケーション・サーバーを構築したいと言うのが私の狙いだ。

    しかし、このJazelleというもの。調べてもなかなか情報が出てこない。
    CPUレベルで対応しているJazelleの機能を使うためにはJavaVMが対応していないといけないことは想像できるのだが、それに対応したJavaVMはまったく見つからない。

    色々と調査を行い私が辿り着いた結論は、Jazelleを有効に活用するためのJavaVMは有償である、ということ。つまり、ライセンスが絡む。ライセンス契約を結べば、SunのCLDC Implementsなど商用の環境にバンドルするJazelle対応のJavaVMが入手できる。
    一部の携帯電話などはこのJazelle対応のJavaVMが搭載されているらしい。

    ここまで分かった時点で、KURO-BOX/PROにTEJのモデルが採用されている理由が分からなくなった。てっきり、はやりのJavaを有効に活用できる組み込みサーバーとして、という狙いがあったと思っていたのだが、、、結局、個人レベルではJazelleの恩恵は授かれないのか。たまたまこのモデルを搭載しただけなのか?それともなにか方法はあるのか?


    Jazelleは心残りではあるが、JavaベースのWebアプリケーション・サーバーをあきらめるわけにはいかない。

    KURO-BOX/PROのカスタマイズではDebianにするのが有名である。
    実は私もDebian化している。カーネル2.6.22をARM用にクロスコンパイルしたものの上で、DebianのARM版が動作している。しかし、まともに使えるJavaVMが少ない。
    私が試してうまくいったのは、Tomcat+SableVM+free-java-sdkのセットだ。
    しかし、この組み合わせは非常に動作が重く、とても快適なサーバー環境とは言えない。なんとかぎりぎり動いているというようにしか感じられない。

    最近は、Sunから評価版としてARM - Headlessというのが入手できるようになった。
    前述の組み合わせに比べたらこのJavaVMは非常に高速である。私の求めていた環境はこれで十分なものとなった。

    さて、ここまで書いていまだにタイトルのARMELが登場しないのは、ここから先の話だからある。

    評価版のSunのJavaVMは確かに速い。しかし所詮は評価版であるということ。
    また、DebianのARM版は現在ARMプロセッサのためにコードを書き直し、ARMELという版で開発中である。これにはOABI、EABIなどの説明が必要であるが、ここでは割愛する。

    最終系はARMELでSunのJavaVMと同等の速さのJavaVMが動作すれば良いはずである。

    まず検証のため、QEMUのARM版を使ってARMELを導入し、SunのJavaVMを導入してみた。しかしそれは動作しなかった。実際のKURO-BOX/PROの環境ではまだ確認を行っていないが、QEMUの環境で動作しないとなると実際の環境でも動作しない可能性がある。
    やはりARMEL版は専用にビルドされたプログラムでないと駄目なようだ。

    まだARMELでSunのJavaVMが動かないと分かっただけであるが、ここから先はなかなか足が進まない。
    仮にKURO-BOX/PROをARMELに移行しても暫定的に使おうと思っていたSunのJavaVMが使えないのではちょっと困る。ARMELで動作するGNUのgcjがどこまで速いか試していないので分からないが、今までの経験によるとちょっと期待できない。

  • 実際の環境でもARMEL版でSunのJavaVMが動作しないのか。
  • ARMELにすることにより得られるメリットは何なのか。(なにか大きな違いは?)
  • Jazelleを有効に活用できるJavaVMは無償で手に入れることはできないのか。

    ということに関しては今後も調査が必要である。
    現在までの情報ではARMELに移行することはできないので、ARM版でSunのJavaVMを使う状態を維持するしかない。
  • テーマ:自作・改造 - ジャンル:コンピュータ

    Rescue and Recovery
    とある事がきっかけとなって今までバックアップ系のソフトはHDDのサイズばかり圧迫するので使っていなかったのだが初めて恩恵を授かることができた。
    初のブログ書き込みでいきなりだが、備忘録を兼ねて今回はThinkPadに導入されているRescue and Recoveryについて書くことにする。

    私のThinkPad T60pには、はじめRescue and Recovery 3.01が導入されていたのだが、Lenovoのサイトを見ると新しい4.x系がリリースされている。
    どうせなら今後のためにも新しいバージョンを入れてバックアップを取り直そうと思った。
    1. 今までとったバックアップをRnRから削除
    2. RnR3.01をアンインストール
    3. RnR4.2をインストール
    が、しかし、エラーが出てインストールできない。
    Rescue and Recovery 環境のドライブ名を取得できませんでした。

    海外も含めさんざん検索したがこれを解決できる情報は見つからなかった。

    と、ここでZドライブへIBM_SERVICEのボリュームがマウントされていることに気が付いた。これ、普段はEISA構成で普通には割り当てができないものであるはず。
    もしかしたらRescue and RecoveryをWindows上へ導入するときにはこのEISA構成のバックアップ領域へもバージョンアップの更新があるのか?
    せっかくなので、(というか、とりあえず、)2nd HDDにコピーしておく。サイズは4.4Gバイト弱。

    4.2が駄目なら4.1を試してみようと思い、Lenovoから4.1をダウンロードして導入してみたらすんなりインストールすることができた。
    この後、レジストリ等をクリーナーできれいにして、デフラグして、バックアップを開始。
    しかし、4時間たってもバックアップが終わらず、最後の「システムを構成しています」みたいなメッセージ・ダイアログのあと、RnRがなにも反応しなくなったしまった。
    せっかく4.xにバージョンアップしたのに、バックアップが取れないんじゃ意味がない。
    しかたがないので、ちゃんとバックアップが取れていた3.xに戻すことにする。
    1. 中途半端で終わってしまったバックアップを消す(RRbackupsに所有者権限を与えてまるごと削除、15Gほどあった)
    2. RnR4.1をアンインストール
    3. RnR3.1をインストール
    が、今度は
    Rescue and Recovery の新しいバージョンがインストールされました。このセットアップを続けることはできません。

    と出る。
    一度4.1を入れてしまったから駄目なのか?と思いつつ、レジストリからRescue and Recovery関連のエントリを全て探して削除してみた。
    でもやっぱり同じエラーが出る。
    ちょっと気になって、起動直後にThinkVantageボタンを押してリカバリーモードに入ってみたら「Rescue and Recovery 4」と出ている!
    もしやインストール時にバックアップ領域に入っているRnRのバージョンをチェックしているのか・・・?

    さきほどたまたまバックアップ領域を2nd HDDにコピーできていたので、もう一度4.2のインストールを試みてZドライブにIBM_SERVICEを割り当てさせて、コピーしておいたファイルを上書きで戻す。
    確認のためもう一度再起動時にThinkVantageボタンを押してリカバリーモードで起動する。
    「Rescue and Recovery 3」とロゴが戻った。

    では、RnR3.1をインストールしてみようと思い、Windowsを起動してセットアップを始めたが、
    Rescue and Recovery の新しいバージョンがインストールされました。このセットアップを続けることはできません。

    まだ、このエラーがでる。

    やけになってもう一度4.2をインストールしようと思ったが、
    Rescue and Recovery 環境のドライブ名を取得できませんでした。

    ・・・なにも先に進んでいない。
    もはや、このPCにRescue and Recoveryを入れることはできないのか・・・

    と、散々悩んだが、そういえば環境のドライブ名ってなんのことだ?と考え、ふとディスク管理を見たら2nd HDDがディスク0になっている。
    このエラーはウルトラベイに入れている2nd HDDが原因か?
    XPのディスク管理で見てみると2nd HDDがディスク0になっていると、このエラーが出る。

    じゃあ、次はウルトラ・ベイから2nd HDDを外してシャットダウンして電源を投入し、改めてRnR4.2の導入を試みる。
    Rescue and Recovery の新しいバージョンがインストールされました。このセットアップを続けることはできません。

    あ、進んだ。さっきのエラーは出なくなった。
    でも、なんかおかしい、4.2より新しいバージョンはリリースされていないし、リカバリー領域も3に戻したはずなのでこのエラーは明らかにおかしい・・・

    ThinkaVantage系のソフトをかたっぱしからアンインストールしていって確認。入らないはずはない、絶対に何かが邪魔しているはずなのだ。
    気になっていたのは、サービスに登録されている「TVT Scheduler」と「ThinkVantage Registry Monitor Service」。
    これが消えるのはどれだ?と順番に気になるものからアンインストール。
    と、気になるサービスが消えたのが、ThinkVantage System Update。
    再度Rescue and Recovery 4.2のセットアップを試みたら、やっと、すんなり入った。

    この2つの意味不明なエラーのお陰で、2日ほども時間がかかってしまった。時間にして16時間以上。

    きっと他にも同様の現象で困っている人がいるのではないか、ということと。
    私自身が将来同じ現象にあったときのためにここに記録を残す。これでこそブログということなのかな?

    テーマ:PC不調 - ジャンル:コンピュータ