2008年3月の過去ログ
よくファイルをダウンロードするときにファイルの情報に関して表示されているところにMD5というのを目にすることがある。そしてその近くに数字とアルファベットの暗号のような文字列が並んでいるのを目にすることがあるだろう。技術系の方ならご存知だろうと思うが、それぞれのファイルには「指紋」があり、1バイトのデータが違っただけでもその指紋が変わってしまう。これを英語でハッシュ(Hash)という。ハッシュをファイルから取り出すにはいくつかのアルゴリズムがありMD5やSHA1やSHA256などというのがある。
つい最近Sunによって買収されたMySQLのダウンロードページにはそれぞれのファイルにMD5のハッシュ記号が書かれている。
例えばWindows ZIP/Setup.EXE (x86)をダウンロードしてそのファイルにMD5のアルゴリズムでハッシュを生成してやると809e1efe69dc1ed255d0e24421f0d096という文字列が得られるという意味なのだ。逆に言えばMD5でハッシュを生成してその文字列にならなければダウンロードされたファイルがサーバ側にあったファイルとは違い問題があるということになる。さらにダウンロードしているときに悪意のある人がそのファイルにウィルスを入れたかもしれないということも考えられる。そういった意味でハッシュを使ってファイルの整合性を確認することは大切である。
そこでPowerShellを使ってそれをやってみようと思う。
param
(
$filePath,
[string] $hash
)
$h = [System.Security.Cryptography.MD5]::Create()
$inputStream = New-Object IO.StreamReader $filePath
$hashBytes = $h.ComputeHash($inputStream.BaseStream)
$inputStream.Close()
$builder = New-Object System.Text.StringBuilder
$hashBytes | Foreach-Object { [void] $builder.Append($_.ToString("X2")) }
if ($builder.ToString().ToLower() -eq $hash.ToLower())
{
return "Good!"
}
else
{
return "Bad!"
}
上のコードをファイルに保存して下のようにして実行してみよう。(set-executionpolicyを忘れずに。)
こうしてファイルの整合性が確認された。もちろんMD5や他のアルゴリズムでファイルの整合性を確認するツールはあちこちにあるが、PowerShellが使えるのだから別にそういうのをダウンロードする必要もないと思う。上のコードをちょっと変えればSHA1やSHA256のようなアルゴリズムでの整合性の確認はすぐにできてしまう。逆にコンピュータに存在するファイルのハッシュの生成にも使える。dirを使ってファイルをリストしその結果に対してMD5のハッシュを一気に生成するということも簡単にできてしまいそうだ。
MacBook Pro 2.6GHz+4GBメモリの威力をビデオに撮ってみた。
左上はRSSリーダーのVienna、上の真ん中はDivXのビデオ、右上は仮想マシン上で動いているWindows XP上でLANネットワークを介して再生されているWMV形式の日本のテレビ、中段の左はiTunesで槙原の遠く遠くを再生。このビデオでも聞くことができるだろう。真ん中はこっちで買った千と千尋の神隠しのDVD。これは日本語で見ることができる。中段の右はNetBeansの統合開発環境。左下はSafariブラウザ。下段の真ん中はアクティビティモニター。そして右下はTorrentクライアントのAzureus。どれもヘビー級なアプリだが最新のMacBook Proでは全然遅くなることはなかった。多分もっといけたと思う。実際のところはこんな使い方をすることはないが、どれだけすごいか分かっていただけると思う。
あ、もう寝なきゃ・・・
今日MacBook Pro用のメモリが届いた。メモリの取替え・増設についてはYouTubeで予習済みだった。ほんの10分もかからずできてしまった。
上の写真は裏側のバッテリーを取り外して三つのネジを取り外したところだ。
上は三つのネジを取り外した後にメモリのカバーを取り外してさらに一つ目のメモリを取り外したところ。メモリは斜めに奥に入れてやり上から押すと両側の金属に引っかけて固定されるようになっている。iPhoneで写真を撮ったのであまりぼやけてしまった。御免。
メモリを入れたらふたをしてネジをしめてバッテリーを入れてやると完了。あとは起動してOSが4GBのメモリを認識しているか確認。
思った以上に簡単だった。これだったらAppleから直接買うときにメモリを4GBにする必要は全くなし。だってアメリカのサイトでですが、4GBにすると400ドルも追加されてしまう。私がこの4GBのメモリに払った金額は100ドル弱。日本のAppleのサイトだと47,000円も追加される。マックのメモリの増設は自分でやるに限る。
Questソフトウェア社が無料でActive Directoryを操るPowerShellのCmdletを提供しています。実際に会社のADで試して見ました。(汗)すばらしいできです。これはアドミンさんたちには強力な道具になるに違いありません。
技術書は特に一ページから最後のページまで読むことはほとんどない。知っているところや興味がないところは容赦なく飛ばす。しばらくはあまりにも多くなるので買わない時期があったが最近はちょっと遅れを取り戻すためにまた買い始めてしまった。最近になって4冊ぐらい購入しただろうか。
ずっと前に電子書籍について触れたことがあった。英語ではあるがつい最近普通の書籍と一緒に技術書の電子書籍を売っているサイトを見つけた。すべての書籍ではないがPDF形式の書籍がその場で買えてダウンロードもできるようになっている。
技術書に関してはデジタル形式が一番いい。一番の利点は検索だ。特に新しいプログラミング言語でプロジェクトをこなさなくてはいけないときはこれが非常に役に立つ。出版社によってはコピーを恐れてそういう販売方法をとらないところもあるかもしれないが、そういう姿勢はどちらかというとビジネスの機会を逃していると思うのだ。
検索した結果日本には下のようなところから電子書籍が販売されているようなのでまとめておこう。
しかし実際の本を手にとって読むということも捨てがたいですな。
仮想マシンを作成したときにディスクを20GBに設定した。後になってそれを拡張したいと思い次の方法を試してみた。もちろんパーティションマジックなどの製品を使えばすぐにできるのだろうがお金を払わずにこれを実現する方法を編み出したくやってみた。
- VMWare Fusionで仮想マシンに50GBの仮想ドライブを追加する。
- Drive ImageなどのソフトでCドライブを追加したドライブにコピーする。
- 仮想マシンを停止する。
- コピー元のドライブを削除する。
- 仮想マシンを起動すると20GBのCドライブが表れる。ディスク管理を開くと確かに仮想ドライブが50GBであることが確認できる。
- Knoppixを使ってCドライブを50GBに拡張する。
- Windows XPに戻ってマイコンピュータでCドライブを確認するとまだ20GBのドライブとして認識されているようだ。しかしディスク管理で確認すると50GBのドライブだと認識されている。
これって成功したのか失敗したのかわからない。デフラグをしたりチェックディスクをしてみたが状況は変わらなかった。Drive Imageでディスクをコピーしたときに何かを設定してやるべきだったのか。それともNTFSの整合性をチェックしてくれるソフトなんかがあるのだろうか。
結局は気持ちが悪いのでWindows XPをインストールし直してるが、ディスクを拡張する方法は仮想環境にしても実際の環境にしても確立しておきたいものだ。後でまたやってみることにする。
