2011年2月19日土曜日

[メモ] ThinkPad X60 SSD 換装

WEB検索すると方々にやり方が見つかるので、
それらを利用したうえで実施した作業メモ。

■次の要件を満たす
・現状使用しているHDDの内容をそのままSSDに移行する
・現状使用しているHDDにはTrueCryptによりシステムドライブ暗号化
  されているが、解除せずにそのまま移行する

■使用したもの

  • SSD
    • Intel SSD 120GB SATA 2.5inch MLC w/Cable Retail K SSDSA2MH120G2K5
    • 現在使用しているHDDと同サイズの上、評判がよろしいようなので
  • USBメモリ
    • BUFFALO USBメモリー バリュータイプ 4GB RUF2-K4GE-WH
    • なんでもいい
    • CD-ROMドライブが付属しておらず、外付けドライブも所持していないため、HDD→SSDディスクコピーツールのブートドライブとして使用
  • ディスクコピーツール
    • EASEUS Disk Copy
    • ブートして利用する
  • 2.5inchHDDケース
    • 玄人志向 2.5型HDDケース SATA接続 HDD/SSD対応 USB2.0対応 ブラック GW2.5AV-SU2
    • SATA接続の2.5inchHDDケースなら、たぶんなんでもいい
    • 上記SSDをUSBで接続してディスクコピーするために利用する
  • ブートローダ
    • syslinux-3.86
    • ディスクコピーツールをUSBメモリからブートするために利用する
■作業手順

①ディスクコピーツールブート用のUSBメモリを作成する
ここにのってるの通りやればOK


以下に一応手順をそのままコピっておく

// コピースタート ↓
EASEUS Disk Copy というフリーのディスクそのままコピーソフトがあるんですが、ダウンロードできるのはCDイメージなんです。
容量も少ないし、ディスクの引越しとかでしか使わないだろうからUSBから起動できたら便利ってことで試してみました。
結論から言うと syslinux 使えばOKと。
では、手順をテキストだけで説明。

用意するもの。
・USBメモリ
・ISOをマウントできるツール(Daemon Tool とか Alchol 52% とか)
・syslinux-3.86

1.EASEUS Disk Copy をダウンロード&解凍
 →http://www.easeus.com/disk-copy/download.htm

2.1で出てきたISOをマウントしておく。

3.ついでにUSBメモリもFAT32でフォーマットしておく。
 ※フォーマットは必須ではないかも。他のデータが入っていても問題ないはず

4.2でマウントしたCDイメージの中にあるファイルをすべてUSBメモリにコピーする。
 (ISOLINUX, BOOT.CAT, BZIMAGE, INTRD.IMG)
 ※BOOT.CAT はなくてもOKかも。面倒なのですべてコピーした。

5.USBメモリのISOLINUX内のファイルを編集する
 その1 ISOLINUX.CFGを編集。
   default /isolinux/vesamenu.c32 の行の isolinux を syslinux へ変更
 その2 STDMENU.CFGを編集
   同じように menu background ~の行の isolinux を syslinux へ変更

6.編集が終わったらファイル名を変更する。変更するファイルは2つ
 その1 ISOLINUX.CFG を syslinux.cfg へ変更
 その2 "ISOLINUXフォルダ" を syslinux へ変更

7.syslinux 3.86 をダウンロード&解凍
 ※ 4.03 はうまく起動できなかったので、3.86で。
 →http://www.kernel.org/pub/linux/utils/boot/syslinux/

8.コマンドプロンプトを開き、7で解凍した syslinux の win32 ディレクトリへ移動
 ※ cd ~~win32

9.コマンドプロンプトで次のコマンドを実行
 syslinux.exe -mad syslinux z:
  ↑zはUSBメモリのドライブレターに読み替えてください。

10.お疲れ様でした。USBメモリからブート可能なようにBIOS設定して起動してください。
// コピー終了 ↑

・作業メモとして
・CDイメージのマウントにはDaemonToolを利用した
・BIOSでブートドライブを指定するには、ThinkPadのロゴが出ているときにF1キー

②ディスクコピーツールでディスクコピー

1.HDDケースにSSDをつっこんでUSB接続

2.上記USBメモリをつっこんでPC起動

3.ロゴが出たらF1キーを押すとブートドライブが選択できる画面が表示されるのでUSBメモリを選択

4.あとは指示にしたがってディスクコピー

③ThinkPadのHDD→SSDドライブ差換え
ここにくわしく写真付きでのっかっているので参照


以上でおわり
TrueCryptでシステムドライブ暗号化されていても問題なし

2011年2月2日水曜日

[メモ] [JavaScript] 関数、クロージャ

JavaScript 関数/クロージャ

  • JavaScriptの関数はオブジェクトであり、使用時にはインスタンスが生成される
  • 呼び出すごとにインスタンスが生成され、その参照を変数に格納して保持できる
  • 参照を保持した関数であっても、呼び出すごとにローカル変数は初期化される(ローカル変数の定義を通るから)
  • 関数内部で定義された関数の参照を関数外部で保持していれば、外側の関数のインスタンス、ローカル変数の値も破棄されない
  • 保持している内部関数を呼び出しても、外側の関数のローカル変数は初期化されない(外側の関数の変数定義を通らないから)
  • それによりクロージャを再現している


こんなイメージかな~

  • var c で無名関数を参照している間は関数aのインスタンスも保持される
  • var c で無名関数を呼び出しても、関数aが新たに呼び出されない限りは、var iの値は保持される
  • したがってクロージャを再現できる


                 +----------------------------+
                 |   function a(param1){      |
                 |        var i=param1;       |
var c ------------------->return function(){  |
                 |            i++;            |
                 |            return i;       |
                 |        };                  |
                 |   }                        |
                 +----------------------------+


function a(param1) {

    // 関数aのローカル変数
  var i=param1;

    // 関数aのローカル変数iをインクリメントして返す無名関数を返す
  return function() {
  i++;
  return i;
  };
}


// 関数aを実行し、返ってきた内部の無名関数の参照を保持
var c = a(1);
// 保持した関数a内部の無名関数を実行
alert(c());
alert(c());


// 結果として
// 2
// 3
// と表示される