2007-09-20

UNIX上でFirefoxとThunderbirdを連繋させる自分用メモ

FreeBSD上でFirefoxとThunderbirdを使っているが、Windows上での場合と違って、デフォルトでは、mailto: や http: のリンクをクリックしても、相互に連繋して目的の動作をしてくれるわけではない。で、こんなことは、ちょっとした設定の問題だろうとググったら、すぐみつかった。

Linux Memo (thunderbird on gentoo) のfirefox と thunderbird の連携によると、互いの user.js 内で、目的のプロトコルハンドラで呼び出すプログラムを正しく設定すればよいだけである。このページでは、一旦シェルスクリプトを呼んで、そこからthunderbirdやfirefoxを起動する形になっているが、直接これらを記述して何も問題ない。変更したときにいちいち再起動するより、スクリプトを修正すればすぐ適用できるという点は利点か。

~/.mozilla/firefox/hoge/user.js:

user_pref("network.protocol-handler.app.mailto",
"/usr/local/bin/thunderbird");

~/.thunderbird/hoge/user.js:
user_pref("network.protocol-handler.app.http",
"/usr/local/bin/firefox");
となる。https: や ftp: も必要になりがちなので、加えておけばよい。
上のページには
user_pref("mail.strictly_mime.parm_folding", 0);
もあるけど、必要性は不明。とりあえず削除して問題ないみたいだが。

2007-08-21

Emacs 22で日本語isearchをするときはMule-UCSが邪魔

先月emacs22がportsの標準となったので、今月になって手元のマシンでもアップデートしたが、特に問題も見当たらず順調に動いていた。しかし、編集していたファイルで、たまたま日本語のサーチをしたくなり、isearchで日本語を入れたところ、

I-search: [か] あ [(error Invalid character: 131072, #o400000, #x20000)]
のようなエラーが出て、目的のサーチが一切できなくなっていた。

見てのとおりSKKの環境でもあるので、考えられる原因が複数あり、とりあえずエラーメッセージでググる。出てきたのは、Meadowのtrac内のバグ報告と、メーリングリストの記事

バグ報告の方は、同様にSKKを使っている場合のようで、Mule-UCSをはずすととりあえず回避できるとある。そういえば、Emacs 22はUnicodeをきちんとサポートしているので、Mule-UCSの機能とかぶるような気もする。そのあたりが原因か?で、~/.emacs内のjisx0213をrequireしてる部分をコメントアウトしてみたら、たしかに問題なくサーチできるようになった。

その後いろいろ試すと、ファイルのcoding-systemにも依存するようで、sjisだと問題が起きない。eucだと確実に起きる。jisだと最初は問題ないが、一度問題が出るとその後も出るという感じ(正確ではないかも)。

メーリングリストの記事では、euc-jisx0213がどうのと書かれているので、やはりeucに関係があるのか。しかし、それに続くスレッドでは、Mule-UCSがなくても同じ問題が発生する手順が示してあり、Emacs 22でも同様の結果になった。

当面の使用では、Mule-UCSをはずしておけば問題は発生しないだろうが、ちゃんと直ってほしいところ。あと、Emacs 22ならMule-UCSって使わなくても済むのかな。

2007-08-03

fontconfigアプリケーションのフォント設定

最近gnucash 2.2.0が出たのでちょっと遊んでみようとしたが、まあ日本語化がほとんどできていない(1.xのころの訳がそのまま放置されてる感じ)のはいいとして、フォントがギザギザして見た目がなんとも不恰好。同じfontconfigを使っているはずのfirefoxやopenoffice.orgはちゃんとアンチエイリアシングがかかってるのに。そういえば、インストールだけして使ってないgimpとか、mousepadとかもギザギザしている。

で、原因を調べるうちに、japanese/ipa-ttfontsを入れるとついてくる /usr/local/etc/fonts/conf.d/62-fonts-ipattfonts.confのsans-serifからIPAPGothicとIPAUIGothicの行を消してみると、当然M+フォントになってしまうもののきちんとアンチエイリアスされたフォントが表示されることがわかった。ということは、オリジナルのIPAフォントに含まれている組込ビットマップが表示されてしまっているだけという感じである。

あとは、~/.fonts.confあたりをいじればいいんだろうということで、書体関係 Wiki - X でのフォント設定を参考に、

<match target="font">
<test name="family" compare="eq">
<string>IPAPMincho</string>
<string>IPAPGothic</string>
<string>IPAUIGothic</string>
<string>IPAGothic</string>
<string>IPAMincho</string>
</test>
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
</match>
のように加えたところ、gnucash, gimp, mousepadともアンチエイリアスが有効になった。というか、組込ビットマップフォントを使わなくなった。antialiasの部分は付けなくても同じ。falseにすると当然ギザギザになる。mode="assign"もこの場合はなくても同じ。IPAフォントに限らず全部やりたいという場合は、test要素を省けばよいが、match要素の中に入れておかないと効かない。

ついでにサブピクセルレンダリングは、conf.avail/10-sub-pixel-rgb.confをconf.dにリンクするか、その中身を~/.fonts.confに入れればよい。ただ、rgbかbgrかなどは、クライアント側の問題ではなくサーバ(ディスプレイ)側の問題なんだから、本来ここで固定的に変更するのはおかしいのではないかと思う。

さらにもう一件、以前の記事で、Firefoxでboldを出すにはuserContent.cssをいじって<b>のfont-weightをboldにすればよいと書いたが、あれはやはりただの対症療法だったと悟った。やはりhtml的に<b>の中にさらに<b>を書いてより強調したいようなこともあるかもしれない。なので、問題の本質は、1回の<b>でちゃんと太字にならないフォント処理側にあって、css側にあるわけではない。

解決は同様に~/.fonts.confでできる。
<match target="font">
<test name="weight" compare="less_eq">
<const>medium</const>
</test>
<test target="pattern" name="weight" compare="more">
<const>medium</const>
</test>
<edit name="embolden" mode="assign">
<bool>true</bool>
</edit>
</match>

2007-07-31

Windows XPでフロッピーイメージファイルをマウントする自分用メモ

最近の(特にノート)PCにはフロッピーディスクドライブが付いてるものが少なく、USB-FDDもどこか遠くに旅していたりして、さらにFDDのついてるデスクトップPCにはFreeBSDが入っていて、日本語名のファイルが入ったFDを渡されて、日本語化したmtoolsを入れたり日本語対応でmount -t msdosするのがめんどくさい・・・というよくある(?)状況を打開するための自分用メモ。

使うのはVirtual Floppy Drive(日本製、オープンソース)。

イメージファイルをドライブに見せかけるドライバが主体だが、そのためのインタフェースもGUIになっており使い易い。

  1. VFDをダウンロードして(ローカルフォルダに)展開し、その中のvfdwin.exeを動かすと、GUI画面が出る。
  2. ドライバタブで開始種別は手動のまま、ドライバを「インストール」し、さらに「開始」しておく。必要なら関連付けタブで.flpを関連付けてしまう。
  3. ddなりなんなりでフロッピーのイメージを取得し、Windowsのマシンに転送。
  4. ちゃんと関連付けていればダブルクリックするなり、GUIから開くなりすれば、それだけでマウントされて、ドライブとして開かれる。
  5. 使い終わったらGUIから閉じる。閉じなくても停止すればライトバックされるが。
  6. ドライバを「停止」して「アンインストール」まですれば元の状態に戻る。
という感じで、非常にあっさりできる。
素晴らしい。

2007-06-20

Windows XPで古いファイルの圧縮をさせない自分用メモ

再インストールしたマシンでディスクのクリーンアップをしようとして、古いファイルの圧縮のところでまたひっかかったのでメモ。

regeditで、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
CurrentVersion\Explorer\VolumeCaches\Compress old files を消す。

参考:Windows XPスマートチューニング (64) ディスククリーンアップから圧縮ファイルを外す, 古いファイルの圧縮中にディスク クリーンアップ ツールが応答を停止する

2007-06-19

Windows XPでクラシックなユーザーアカウントダイアログを出す自分用メモ

ちょっとユーザーアカウントをいじろうとしたら、以前はタブ形式のダイアログだったはずなのに、再インストールしたころから、XPスタイルのダイアログになってしまっていた。ユーザータブとか詳細設定タブとか出したいのに。

MSのサイトにはコントロールパネルをクラシック表示にすればよさそうなことが書いてあるが、やってみても変化なし。

で、探したら、ともかく

rundll32 netplwiz.dll,UsersRunDll
を実行すればよいらしい。というわけでとりあえず解決。

ところがここには、Professionalなら
control userpassword2
でもいいと書いてあるが、やってみても何も起きない。どういうことだろ。


追記(6/25)

つづりミスだったらしい。
control userpasswords2
が正解。

2007-05-29

reCAPTCHAの可能性

CMUの始めたreCAPTCHAには、ユーザにちょっとしたサービスを提供してその見返りにちょっとしたボランティア的仕事をしてもらおうという、Google Image Labelerと同じような思想が入っている。

ユーザにとっては単なるキャプチャサービスで、サイト運営者は無料でその機能を利用できる。ところが、提示される2単語のうち一方は、デジタイズしたい本をスキャンして切り出した未知の単語で、ユーザは知らないうちに人力OCRさせられてしまうわけである。

なので、キャプチャとしては、もう一方の既知の単語の方だけが有効で、そちらがちゃんと入力できていれば、未知の方は適当に嘘を入れても認証が成功してしまう。ただし、どちらが既知でどちらが未知かはランダムに提示されるので、50%の確率で認証失敗してしまうリスクをおかしてわざと嘘を入れる可能性は非常に小さいと考えられ、同じ単語を何人かに入力してもらってそれが一致しているなら、その結果は高い確率で信用できると言える。

現在のreCAPTCHAで、もうちょっとだけチューニングされるといいのは、非ネイティブにも読める程度のノイズにおさえてほしいという点である。もともとスキャンしたノイズ込みの画像を波打たせ、さらにまぎらわしい位置に波線まで入ってしまっている。下のような画像を提示されても、英単語を知らないユーザにはcとeとoの区別がつかないと思う。

もっとも、日本語のOCRをしたいとして同じようなサービスを使うことにすると、日本語ネイティブにしか解けないキャプチャになるのは明らかで、ある程度はしかたないのだろうか。サイト運営者にノイズレベルや言語やなんやかやが調整できるようになっていると尚いいのかもしれない。

ところでこのような人力提供のアイデアは、何か人海戦術を使わないといけない他の種類の作業にも応用できそうだ。今は思いつかないけど。

2007-04-27

IPAフォントによるFirefoxの文字化け

以前から気になっていたIPAフォントを利用する際に発生するFirefoxの文字化け(グリフのコードポイント34個分のずれ)に関して、ttt: FreeBSDのMozilla Firefoxで文字化け (というかフォント化け?)にも触れられているが、再現できるわけでもなく、気付いたら発生していて、再起動したら直るという状況だったので、手がつけられないでいた。FreeBSDが悪いのか、Firefoxか、IPAフォントか、ライブラリか、それ以外の設定の問題かさえ、手がかりがなかった。

そんなおり、LANG=ja_JP.eucJPで起動してGoogle Calendarを開き、設定ページに行くと、タイムゾーン選択メニューのGMT+09:00がGM2+09:00に、下の方のGoogleがGMMgleに、確実に化けることがわかった。しかし、LANG=Cでは化けず、LANG=ja_JP.UTF-8やLANG=fooでは化け、意味わからず。しかもAJAXの奥底なので、htmlのコードが得られない。CSSViewerを入れて調べてみたフォントファミリをまねてarial,sans-serifのテキストを書いたりしても化けるわけでもなし。

その後、ここに行くと、起動したてのLANG=ja_JP.eucJP firefoxで確実に化けることを発見。道が開ける。試行錯誤により、LANGに関係なく、次のコードで文字化けさせられるようになった。

<html><head><title>test</title></head><body>
H g<br>
&icirc;<br>
DEFGHIJK defghijk<br>
<b>
DEFGHIJK defghijk<br>
</b>
</body></html>
スクリーンショットはこんな感じ。



つまり、IPAフォントが持っていないようなラテン文字が出てくると、それまでにキャッシュした分は化けないが、それ以外の文字のグリフがすべて34個分ずれる。フェイスが変わると化けない。ここには現れていないが、サイズを変えても化けたまま。Google Calendarの設定ページについても、上の方に言語や国の選択メニューがあり、そこのラテン文字が化けてそれ以降がおかしくなっていたようである。

で、まず、libXftに山のようにデバッグプリントを入れ、XFT_DEBUG=1023にして、ログをとったところ、グリフ番号をキャッシュするためのハッシュ部分は問題なく、文字コードをグリフ番号に変換する部分の問題らしいことをつきとめる。次に、libfontconfigのfcfreetype.cにあるFcFreeTypeCharIndex()にもデバッグプリントを入れ、デフォルトのunicodeエンコーディングでグリフがみつからないと、AdobeSymbol, AppleRomanの順にエンコーディングを試し、みつかるとそのフェイスに対してそのエンコーディングをデフォルトにしてしまうことがわかる。

この先は、フォントの中身まで調べなきゃいけなくなりそうで、結局手に負えないのだろうかと思いつつ、とりあえずfontconfigとipaでググると、fcFontDecodersとか書いてあるそれっぽいブログを一件だけ発見。ueno's codeblog (IPAフォントのグリフ化けを直す)その(2)である。

これによれば、IPAフォント中のグリフ番号が完全に狂ってるとのことで(よく理解してないけど)、親切にもそれを修正するrubyスクリプトまで置いてあった。さっそくありがたく使わせてもらい、ipagp.ttf, ipamp.ttf, ipagui.ttfを修正してみると、文字化けがピタリとおさまった。素晴らしい。化けるメカニズムについては、自分が追跡したことがだいたい合っていたようである。

ただ、'î' (&icirc; = iの上に^)とかが出せないが、どうすればいい?

2007-04-11

moodleのloginhttpsで自分をロックアウトさせてしまった場合の自分用メモ

moodleのフォーラムにも紹介されているが、mdl_configのname='loginhttps'のvalueを0にすればよい。

UPDATE mdl_config SET value=0 where name='loginhttps';

ちなみに、1.8無印ではloginhttpsが効かないバグが存在していたが、現在は修正済。

2007-04-04

moodleを1.8にアップグレード

プロダクションサイトを一旦は1.7.1+にアップグレードしてはみたものの、ロールがらみの問題がいくつかみつかり、結局1.6.2に戻してしまっていた。

  1. コース設定で学生からコースを隠すと、そのコースの教師からも見えなくなってしまう[#MDL-7939]
  2. 各コースの参加者リストに「コース作成者」全員がリストされてしまう[#MDL-7582][#MDL-7943][#MDL-8222]。フォーラムではここここ(日本語)にパッチあり。Roles FAQにも対策 (How can I prevent course creators being listed as course participants?) が記されていた。
で、待ちに待った1.8 releaseが日本時間で新年度早々に出たので、半ば期待薄ながら、テストサイトで試してみた。結果は非常に良好。

1.6からの直接のアップグレードは1.8 betaではデータベースの更新ができずに失敗するため、1.7.1を経由するしかなかった。1.8 releaseでは直接アップグレードしてもまったく問題なし。

上のロールがらみの問題はどちらも解消。Roles FAQからも該当する項目は消えていた。

ついでに、NWikiが正式に1.8対応になったので、1.7対応版をおそるおそる1.8で使わずに済むようになった。(とはいえ、discuss問題は残っているが)

というわけで、プロダクションサイトもいきなり1.8にしてしまった。カスタマイズは後日ということで。

2007-03-21

Bloggerの投稿記事ページだけを検索サイトに(その2)

以前の記事で書いたように、Bloggerの通常記事だけが検索エンジン(特にgoogle)で検索されるよう、metaタグで制御しようとしたが、その顛末。

1月22日
"item"以外の全ページでrobotsを"NOINDEX"とする。
2月6日まで
"index", "archive"のページは順調にgoogleから消えるが、1月15日以降の通常記事が一向にインデックスされない。1月22日の記事だけインデックスされたが外部にリンクがあるためっぽい。
2月6日
FOLLOWを明示する必要があるせいかと考え、"NOINDEX,FOLLOW"に変更する。
2月8日
1月30日の記事がインデックスされたがこれもトラックバックによる外部リンクがあるためっぽい。
2月11日
あきらめて一旦robots記述を削除。
2月21日まで
"index", "archive"のページがほぼ順調に復活。異なるURLでほぼ同じ内容のページは一方しかインデックスされないことに気付く(例えばあるラベルの記事が1個しかない場合)。
2月21日
robots記述に"noindex,follow"を再度加えるが、ルートページはインデックスされるように修正しておく。ついでに全部小文字に。
3月5日まで
"index"のうちラベルのページ、"archive"のページがインデックスからほぼ消える。
これまで
通常記事のページはほぼ単調に増加。

というわけで、おそらく"follow"は意味なさそうで、ルートページに"noindex"はよろしくなさそう。

ちなみに、現在のrobots部分は、
<b:if cond='data:blog.pageType != "item"'><b:if cond='data:blog.url != data:blog.homepageUrl'><meta content='noindex,follow' name='robots'/></b:if></b:if>
としている。
&&の条件をどう書けばいいか調べてないので、b:ifを単に2重にしてあるのが不恰好。

2007-03-15

パーティション暗号化機構gbdeとgeliの比較

moodleサーバの個人情報保護用にファイルシステムの暗号化を導入する目的で、性能比較を行った。

gbdeの基本的な使い方

まず、5.xまででも実装されているgbdeについては、次のようにすると利用することができる。ここでは、SATAの320GBハードディスク/dev/ad12をまるまる使うことを前提に作業。

ロックファイル用の場所を用意しておき、次のコマンドでロックファイルとデバイス内のロックセクタの作成。ロックセクタというのは暗号化したマスターキーを分散配置したもので、その位置情報を暗号化したものがロックファイル(gbde(4)を読んだ理解が正しければ)。

# gbde init ad12 -i -L /etc/gbde/ad12
手動でやるだけならgeom_bde.koを明示的にロードする必要はない。-iでパラメータをファイルではなくインタラクティブに(というかエディタでいじって)与える。sector_sizeの初期値は512になっているが、これをフラグメントサイズ(通常は2048)にする方が性能劣化が多少まし。エディタを終了すると、パスフレーズを聞かれるので与える。3文字未満は不可らしい。

次に暗号化パーティションをデバイスとして認識させるためにアタッチ。
# gbde attach ad12 -l /etc/gbde/ad12
パスフレーズを聞かれるので、作成したロックファイルのパスフレーズを入力。間違えても文句を言わずに成功してしまうので注意。正しければ、/dev/ad12.bdeができる。もう一回アタッチしようとすると、今度は文句を言われる。あとは、/dev/ad12.bdeをnewfsしたり、mountしたり、やりたいほうだい。再起動したらattachをやりなおす必要がある。用が済んで、デタッチすれば、パスフレーズを知っている人しか使えない。
# gbde detach ad12
ちなみに、このad12.bdeをさらにgbdeでinit, attachすると、/dev/ad12.bde.bdeとかができあがり、2重に暗号化することもできる(が、たぶん遅くなる以上の意味はない)。setkeyを使えばパスフレーズを変更してロックファイルとロックセクタの暗号化をやり直せる。

パスフレーズを知らない、あるいはロックファイルがない状態では、ディスクを解読するのは不可能に近いが、絶対に安全なわけではない。destroyはパスフレーズを有効に保ったままマスターキーを塗り潰してしまう。nukeはマスターキーを破壊するっぽい(あやふや)。

geliの基本的な使い方

次に6.xから使えるようになったgeli。まず、乱数の鍵ファイルを作成する。
# dd if=/dev/random of=/etc/geli/ad12.key bs=64 count=1 
そして、パスフレーズを設定してパーティション内を初期化。1文字でも受け付ける。
# geli init -s 4096 -K /etc/geli/ad12.key ad12
アタッチ。
# geli attach -k /etc/geli/ad12.key ad12
パスフレーズを入力するが、間違えればエラーで教えてくれる。アタッチした時点でgeom_eli.koその他が自動的にロードされる。あとは、newfs, mountすればよい。デタッチはgbdeと同様。

比較

まず、必要な領域のオーバヘッドが違う。gbdeでは領域全体の0.8%ほどが消費されてしまうが、geliでは2KBしか消費しない。
Filesystem        1K-blocks Used     Avail Capacity  Mounted on
/dev/ad12 302732078 4 278513508 0% /mnt
/dev/ad12.bde 300385910 4 276355034 0% /mnt
/dev/ad12.bde.bde 298058518 4 274213834 0% /mnt
/dev/ad12.eli 302732076 4 278513506 0% /mnt
次に速度。暗号化なし、gbdeで2048バイトセクタ、512バイトセクタ、geliで4096バイトセクタ、2048バイトセクタのそれぞれの場合について、soft updatesなしとありで、bonnie++-1.93.03_1(bonnie++ -s 1024 -n 128 -x 3)で測定した。下の表がその結果。%CPUが99とかにはりついてI/O性能と実質無関係な列(read系やputc/getc系)は除外。Latencyも特にsoft updatesありで変動が大きいので除外。


Sequential OutputRandom
Seeks
Sequential CreateRandom Create
BlockRewriteCreateDeleteCreateDelete
K/secK/sec/sec/sec/sec/sec/sec
normal69588584923902202244581960491
64861573443938196143641987582
64223573533939198843901980563
normal
/soft
7027957874408026168530442284057746
6408457227408126206535072303157089
6422957951404226269532612273257586
bde2048183882473312335371213544265
207622643111605391227542290
202082542011185361226544256
bde2048
/soft
198232561811741253646733814652938
176262572710761428741221921452761
159812231310591502543788952151912
bde512192341741312964211133452148
190081746412964471156448145
190991702013004541167451141
bde512
/soft
190941696011861149945933826852772
1864717138117812016463051000853334
188721738411851204145969985753266
eli4096636715680238297531582760353
626385783638287531581760497
622215760537707541573759521
eli4096
/soft
6689958708372820798534621812656330
5980157577368321123534211853057748
5906957151365221010515031791857765
eli2048652285682340607501580749576
641135872441827521567755590
618955782940637561578753572
eli2048
/soft
6640658087403621286523581826757784
5837357774409021119524871788457678
5913557429407121257535611759257969

これを見ると、gbdeでは暗号化なしに比べてスループットが3分の1以下に低下し、2048と512にも有意な差があることがわかる。これに対して、geliではcreateやdeleteで差が出るものの、writeは遜色ない速度。4096と2048にも有意な差はない。

というわけで、gbdeは忘れることにする。ただし、geliの方はgbde(4)のようなドキュメントが用意されていないので、メカニズムがよくわからないのは一つの問題。

2007-03-05

N Wikiを使うにはテーマ設定が必須

NWikiはmoodle 1.7.1+でとりあえず動いていそうだったが、Wikiとして実際に使おうとしてみると、重大な問題があった。編集ボタンがなく、インデックスや更新記録や検索のためのブロックを表示できなくなってしまっていた。古いサイトを復活させないと、1.7の問題かNWikiの問題かが切り分けができない状態になってしまったので、面倒さを天秤にかけて、直接ソースにあたった。

その結果、$CFG->showblocksonmodpagesという変数が設定されないと、それらのブロックがまったく表示されない状態になってしまうことがわかった。DFWiki 1.0にはこのようなコードはなかったので、最近のDFWikiあるいはNWikiの問題。しかし、この変数の設定箇所であるadmin/settings/appearance.phpをどうやって実行すればいいかを探すのに手間取る。

結局、サイト管理->外観->テーマ->テーマ設定がそれであることが判明し、解決。

しかし、Wikiの重要な機能がこんなところで他のモジュールとひとくくりで設定されていいものだろうか。

2007-03-02

moodleの1.8へのアップグレードはドキュメント重要

とりあえずmoodleのテストサイトで1.7.1+にしてみて問題がなかったので、プロダクションサイトもアップグレードした。カスタマイズはまだ何も入れていないが、そのうちに。

で、1.8を試してみようと、再びテストサイトを作って、普段どおりまず管理者権限でログインしようとしたら、アカウントが無効と言われはまる。ゲストもログインできないし自分のアカウントでもログインできない。これまでの経験で管理者でログインしたらデータベースの更新が行われるものと思っていたので、それができないのは1.8のバグでは。

と思ったが、全然ちがってた。Installation problemsのフォーラムでMoodle 1.8というディスカッションがあり、そこではwww.yoursite.edu/adminに直接アクセスしろとアドバイスされていた。その通りにやったところ、データベースの更新が始まって1.8への移行ができた。実はMoodle DocsのUpgradingには、ちゃんと書いてあった。

The last step is to trigger the upgrade processes within Moodle.
To do this just visit the admin page of your installation e.g. http://example.com/moodle/admin
ドキュメントはよく読みましょう。

外見上の違いは特になし。ただ、ベータなりの不具合がちらほら。トップページに出る各コースの説明文の位置がずれている。IEで横幅が狭いときにログインページ右半分の説明文の位置がずれている。HTMLエディタにならず変なjavascriptの一部が表示されてしまう。

NWikiモジュールは1.7用をそのまま入れてみたが、タブの表示が一部おかしくなる以外はとりあえず動いてそう。編集はまだ試していないが。

ともかく、1.8でぜひ使いたい機能は、ユーザプロフィールのフィールドを独自に定義できることである。半月以内くらいに安定してくれたら、一気に1.8に行ってしまうのだが。

2007-02-28

DFWikiからN Wikiへの移行

moodleは早くもまもなく1.8 releaseが出そうな勢いであるが、とりあえず現在の1.6.2から1.7系に移行する準備として、非標準のDFWikiのデータ移行を調べていた。そうすると、どうやら、DFWikiから派生したMoodle N Wiki(NWiki)というのが1.9から採用されることになるようで、まずはこれにデータを移行させてしまう方が安全そうである。

というわけで、DFWikiのサイトにあるHOWTO - Install N-Wiki in Moodle 1.6 ?を参考に入れようとしてはまった。

書いてあるとおりに、wiki_rev2007011901.zipをダウンロードして展開し、moodleのディレクトリにコピーしてmoodleに接続すると、テーブル等の更新が行われて…、まではよかったが、モジュール管理に行くと、dfwikiの活動数が0になっておりWikiモジュールが見あたらない。つまり、データ移行まで自動的に行われてしまったのにモジュールが使えない状態になった。さらに悪いことに、元々の設定では、DFWikiがあるからと思い、Wikiを非表示に設定していた。このために、どのコースからも実体が見えなくなってしまった。

で、何度も運用版のmoodleとデータをコピーしなおしては試していて、ふと、ブロック名の一部が???とかになっているのに気付く。日本語っぽい雰囲気からja_utf8/wiki.phpを見ると、すべて文字化けしていた。zipで配布されている元のファイルが壊れていた。で、日本語のモジュール名になっているせいで表示できない可能性もあると思い、とりあえずこのファイルを消したところ、Wikiモジュールが復活し、元からあったDFWikiの活動が移行されていることが確認できた。

次は1.7。Wikiモジュールをちゃんと更新してから接続しないといけないので、ちょっと二の足ぎみ。

2007-02-26

moodleでloginhttpsを選択可能にする自分用メモ

SSLの鍵と証明書を/usr/local/etc/apache2の下に(でもどこでも)置いてssl.confを設定し、/etc/rc.confでapache2ssl_enable="YES"とすればhttpsでのアクセスもできるようになる。

しかし、moodleでログイン時のみhttpsにするloginhttpsの設定ができるようにするには、phpからhttpsがfopenできなければならず、それにはsecurity/php5-opensslをインストールしておく必要がある。php.iniは特にいじる必要なし。

それにしても、最近のサーバ証明書は、5年有効再発行付き法人後払い可で2万円で手に入るのか。OとかOUとかまともにつかないけど、moodle用途なら十分。

2007-02-25

Yahoo! Site Explorerがmetaタグ認証に対応

ずいぶん前にYahoo! Site Explorer(Google Webmaster Toolsのyahoo.com版)にこのサイトを登録したが、これまで認証はファイルベースであったため、blogspotのブログは認証できていなかった。

で、今日見てみたところ、いつのまにやら(どうやら1月末ごろから)metaタグでAuthentication(GoogleでいうVerification)ができるように改良されていたようで、早速やってみた。

2007-02-24

Core 2 Duoマシンのcpufreqによるクロック周波数制御

このCore 2 Duo E6600のPCはわりとつけっぱなしにするので、(FreeBSD)そのパソコン、無意味に熱くなってませんか? ――― CPUの消費電力を減らす方法を参考にいじって電力を調べることにした。

もともと、sysctlでは、

dev.cpu.0.freq: 2400
dev.cpu.0.freq_levels: 2400/88000 1600/56000
dev.acpi_perf.0.freq_settings: 2400/88000 1600/56000
となっていたが、書いてあるとおりにkldload cpufreqをすると、
dev.cpu.0.freq: 2400
dev.cpu.0.freq_levels: 2400/88000 2100/77000 1800/66000 1600/56000 1400/49000 1200/42000 1000/35000 800/28000 600/21000 400/14000 200/7000
dev.acpi_perf.0.freq_settings: 2400/88000 1600/56000
となり、非常にキメ細かくコントロールできそうに見える。

そこで実際に、dev.cpu.0.freqをいろいろいじって、本当に速度が変化しているか実測してみた。ベンチマークはmake -j4 buildkernel。まずは、cpufreqをロードする前の状態。

周波数設定ユーザCPU時間システムCPU時間
240046251
160046153

次に、cpufreqをロードした後の状態。
周波数設定ユーザCPU時間システムCPU時間
240046251
210054060
180064572
1600Invalid argument
1400Invalid argument
120080888
1000Invalid argument
800Invalid argument
6001637170
400Invalid argument
200Invalid argument

つまり、cpufreqをロードしていない場合は周波数を設定しても無意味であり、ロードした後でもすべての周波数が設定できるとは限らない(Invalid argumentが出ても実はdev.cpu.0.freqの値は設定されてしまうが、設定するたびにバラバラの性能になる)。きちんと設定できていれば、性能はほぼ比例している。

続いてワットチェッカーで電力を調べた。
周波数設定アイドル時電力ピーク電力
2400102148
2100102143
1800102140
1200102135
600102126

つまり、アイドル時電力は周波数とはまったく無関係であった。ピーク電力はそれなりに周波数に依存するが、全体に比べて大した差が出るわけでもない。

PCをほったらかしにしているようなアイドリング時に自動的に周波数を下げて消費電力を抑えてやろうと思っていたが、これではほとんど何の役にも立たないことになる。別の見方をすれば、最近のCPUの技術では、アイドリング時はあちこちのクロック(あるいは電源?)供給をカットして、止まっているのとほとんど同じにできるんだろうなと想像される。

とりあえずグラフ化してみた。


追記(2/26)

上のグラフを出すのにgnuplotに食わせたソース(自分用メモ):
set terminal png large
set output "cpufreq.png"

set xrange [0:2500]
set xlabel "Frequency (MHz)"

set yrange [0:1.1]
set ytics nomirror
set ylabel "Performance (normalized at 2400MHz)"

set y2range [0:150]
set y2tics 20
set y2label "Power consumption (W)"

set label "Performance (make -j4 buildkernel)" at 600,0.25
set label "Power (idling)" at 600,0.72
set label "Power (peak for make -j4 buildkernel)" at 600,0.9

plot "-" using 1:(513/($2+$3)) notitle with lp, \
"-" using 1:2 notitle axes x1y2 with l, \
"-" using 1:2 notitle axes x1y2 with lp

# f u s
2400 462 51
2100 540 60
1800 645 72
1200 808 88
600 1637 170
e
# f W
2400 102
600 102
e
# f W
2400 148
2100 143
1800 140
1200 135
600 126
e

2007-02-22

RTL8110SCは7-currentでも動作せず

RTL8110SCによるre0: watchdog timeout問題は、6.2-STABLE, 7-CURRENT (2/22時点)ともに解消していなかった。というわけで、心置きなく、6.2-RELEASE + Realtek謹製ドライバを使い続けることにする。

2007-02-02

FreeBSDのRealtek RTL8110SC用イーサネットドライバ

マザーボード内蔵のRTL8110SCでre0: watchdog timeoutが出るおかげでacpiを切ってしまった新マシンであるが、ダメもとでRealtekのサイトに行ってみたところ、ダウンロードページで8110で検索して出てきたRTL8110SC(L) (Software)のページに、FreeBSD用があっさりと置いてあった。Readme.txtによれば、4.x/5.x/6.0でテストしたとのことである。

Readme.txtにはいろいろと細かい手順が書いてあるが、ようは、

  1. reのない(適当にnodevice reとかした)configファイルを用意する。
  2. /usr/src/sys/modules/Makefileからreを消す。
  3. 付属のif_rl.cとif_rlreg.hを/usr/src/sys/pci内の同名ファイルに上書きコピーする。
  4. カーネルを普通にコンパイルしてインストールする。
  5. いじったファイルを元に戻しておく(でないと、忘れてcsupとかしてどうなるか予測不能)。
だけである。ただし、3.で、if_rlreg.hをそのまま使ってしまうと、/usr/src/sys/dev/mii/rgephy.cが参照しているRL_GMEDIASTAT*のマクロが消えてしまうので、もとのif_rlreg.hから該当する定義をそのままコピーしておけばよい(たぶん)。

そして、/etc/rc.confのifconfig_re0をifconfig_rl0に書き換え、/boot/device.hintsのhint.acpi.0.disabled="1"を消し、再起動した。そうすると、見事に、
rl0: <Realtek RTL8169SC Gigabit Ethernet Adapter> port 0xce00-0xceff mem 0xfdeff000-0xfdeff0ff irq 21 at device 6.0 on pci3
と認識され(8110SCは8169SC扱いになるようだ)、rl0による接続が可能になった。

ネットワークの負荷を上げてみても、re0のようにwatchdog timeoutとlinkのDOWN/UPを起こしたりしないし、acpiを切った状態でもtcpdumpを開始したり終了したりする際に、
re0: promiscuous mode disabled
re0: link state changed to DOWN
re0: link state changed to UP
となっていた問題も解消した。

最近もif_re.cとかはよく更新されているようであるが、早くこの手間をかけずに済むようになることを期待。

2007-01-31

FreeBSDのRealtek ALC883用サウンドドライバ

引越した新マシンでサウンド関係の設定をし忘れていたので、とりあえず/boot/loader.confにsnd_driver_load="YES"を入れてみたが、音沙汰なしだった。このマシンはもともと静音PCとして売られているものだが、だからといってサウンドが鳴らなくていいわけではない;-)。

マザーボードのMSI P965 Neo-Fに塔載さているサウンドデバイスはRealtek ALC883というものらしいが、FreeBSD 6.2ではまだサポートされていないようである。

で、さっそく検索してみたら、turutani diary(妄想日記)(ALC833は誤記っぽい)にて、http://people.freebsd.org/~ariff/HDA/にsnd_hdaというドライバがあるということで行ってみると、そのページの内容自体はobsoleteだったが、http://people.freebsd.org/~ariff/以下にサウンドまわり全般の差分とバイナリが置いてあった。

とりあえず、READMEのとおりにバイナリを置き換え、loader.confにsnd_hda_load="YES"として再起動したところ、

pcm0: <Intel 82801H High Definition Audio Controller> mem 0xfdff8000-0xfdffbfff irq 22 at device 27.0 on pci0
pcm0: <HDA Codec: Realtek ALC883>
pcm0: <HDA Driver Revision: 20070105_0038>

と表示され、見事にサウンドが使えるようになった。

この先、installkernelするたびにこれも置き直さないといけないけど、しかたないか。早くマージしてほしい。

NISアカウント環境でacroread7を使う自分用メモ

ようやく新マシンに引越した。結局ghostscript-afplは消して、ghostscript-gnuにした:-)。

で、acroreadを使おうとして、いきなり

(acroread:98396): GLib-WARNING **: getpwuid_r(): failed due to unknown user id (xxxx)

とか言われ、あわててググったら、昔同じところで行きづまっていたことを思いだしたので、メモ。

FreeBSDのLinuxulatorで動くいくつかのアプリケーションをNISアカウントで動かすには、/compat/linux/etc/nsswitch.confをきちんと設定する必要がある。具体的には、passwd, shadow, groupの各行を、

passwd:     files nis
shadow: files nis
group: files nis
とすること。

2007-01-30

FreeBSDのghostscript-afplでIPAフォントによる日本語表示

portsの依存関係でghostscriptが必要な場合、Mk/bsd.port.mkにより、デフォルトではprint/ghostscript-gnu (7.07)が入るようになっている。これとjapanese/ghostscript-gnu-jpnfontがあれば、日本語に関して特に何も文句のない環境ができあがるが、引越し前に他の版で遊んでみることにした。

TeX Wikiによれば、8.15は何かと不完全っぽいので、そこまで冒険するつもりもなく、print/ghostscript-afpl (8.54)を入れてみた。

最初に何も考えずに日本語PSファイルをgvで表示させると、kochi-mincho-subst.ttfがないと言われた。既に入っているのに見つけられないらしいが、どうせIPAにするからいいやと次に進む。フォントの設定はすぐにみつかり、/usr/local/share/ghostscript/8.54/lib/cidfmapにあった。

しかし単純にkochi-mincho-subst.ttfなどを/usr/local/share/fonts/TrueType/ipam.ttfなどに変更しただけでは、表示されなかった。フルパスなのでファイルがないとは言われないが、

Error: /invalidfileaccess in --.libfile--

となり、はまる。

まず、ソースを読んで、.libfileはGS_LIB内あるいはフルパス指定のファイルをオープンする演算子であることをつきとめる。しかし、ファイルは当然読めるし、どうしてinvalidなのかがわからず、右往左往する。TeX WikiにあるようにCIDFontとFontのディレクトリを掘ってリンクしたりファイルを作ったりしても、文字化けしたりしてうまくいかない。

ひょんなことから、gvではなくgs直接ならどうかとやってみたら、なんと日本語が表示されてしまった。ではgvでなぜだめかとコマンドラインを横取りしてみて、いくつも指定されたオプションを一つずつ調べていたら、どうやら-dSAFERが指定されているとだめらしい。gvに-nosaferを付け続けるのもいやなので、さらにSAFERが何をしてるか調べると、gs_init.ps内で、/PermitFileReadingなどを設定して、読むことまで禁止しているっぽい。

そしてさらに勘を働かせて、GS_LIB内のファイルならSAFERであっても読み出し禁止にならないだろうと、GS_LIBをきちんと設定してやると、ようやくgvでも日本語が表示されるようになった。GS_LIBを設定するのも避けるには、make時のマクロGS_LIB_DEFAULTに/usr/local/share/ghostscript/fontsが含まれていることから、ここに必要なフォントを入れるのが最善の解であろう。

サブディレクトリも扱えるのがわかり、最終的な解決として、cidfmap内のkochi-{mincho,gothic}-subst.ttfをTrueType/ipa{m,p}.ttfに変更し、/usr/local/share/ghostscript/fonts/TrueTypeを作ってipa{m,p}.ttfのリンクを置くことにした。

で、このように日本語が扱えるようになったghostscript-afplを今後使うかどうかは実は微妙。全体に薄い感じの表示になるのは設定でなんとかなるかもしれないが、最大の問題は、遅いこと。TrueTypeなどのバイナリをPSのレベルで解釈しているのか、ページができあがっていくのが見えてしまう。たぶん、すぐ消してghostscript-gnuを入れてしまう気がする。

それにしても、gsのエラー表示がもっとわかりやすければ、もっと楽に解決できそうなものなのに。

追記

-dSAFERで探したら、ふログでは、ps2pdfwr内の-dSAFERを削除することでps2pdfに関して解決していた。gvとかghostviewとかcups/プリンタドライバ系とかのgs依存ツールを他に使わないのならそれでもいっか。

2007-01-27

Xのnvドライバで画面サイズ制限

新しいマシンにはnVidiaのGeForce 6200 TurboCache系グラフィックボードが載っているが、同じnVidiaのRIVA TNT2で動いていたxorg.confをそのまま持ってきたら、

(II) NV(0): Mode "1600x1200" is larger than BIOS programmed panel size of 1280 x 1024. Removing.

と表示されて、1280x1024になってしまった。

そんな設定項目ないしと思ってググってもあまりパっとした解決策がなかったが、nvidia-xconfigを動かしてみればというヒントからportsを探して、nvidia-driverやらnvidia-xconfigやらがあるのをみつけた。で、この二つを入れて、nvidia-xconfigを動かすと、xorg.confのDriverのところが"nvidia"に書き換わった。

このままXを起動すると、問題なく1600x1200で表示され、解決。

そろそろ引越しの準備ができるかな。

2007-01-26

おニューのCore 2 DuoマシンでFreeBSD

現在使っている2年前の轟音マシンに堪えられなくなり、仕事環境の改善のためメインマシンを新調することにした。静音PCが専門のとあるBTOショップでいろいろ探しまわった結果、こんな構成を選んだ。

M/B: MSI P965 Neo-F
CPU: Core 2 Duo E6600 (2.4GHz)

一番の心配はマザーボード周り。

今のマシンでMarvellのオンボードNICに懲りているので選択肢がかなり狭まってしまった。Intelとか積んでいればかなり安心できるけど、あいにくBTOメニューになかった。このマザーボードはRealtekのRTL 8110SCというのを積んでおり、一応FreeBSDのサポートリストに入っていることを確認した。

スラドとかで脅されたICH8問題も気になった。kern/103602でもJMicronのatapiコントローラがどうのという問題が未解決のまま。万一CDが読み込めないとインストールにかなり手間どるかもしれない。

などという心配をよそに到着してしまったマシンを相手に、とりあえずCDに焼いたFreeBSD 6.2-RELEASEを入れてみたら、atapiの問題は一切発生せず、あっさりとインストールできてしまった。めでたし。

ところが、問題はやはり心配したところにあって、リモートからmake buildworldの時間を計ったりして遊んでいると、

re0: watchdog timeout

が頻発して、とうとう一度はsshまで切れてしまった。あわてて検索したら、古いスラドには「蟹を使ってる時点で負け」とか書いてあるし。ともかくworkaroundをいろいろ探したところ、8139なら古いrlで使えるようにしたら良くなったとかの情報もあったが、一番役に立ったのがLinuxQuestions.orgにあった情報で、/boot/device.hintsでapicとacpiをdisableにしたらおさまったというもの。とりあえず書いてあるとおりに、

hint.apic.0.disabled="1"
hint.acpi.0.disabled="1"

を加えてリブートしてみたら、見事におさまった。しかしこれでは、SMPも電源オフもできない。どっちか一方だけではどうかと、片方ずつdisableにしてみると、実は両方がenableのときだけ問題が発生することがわかった。SMPと電源ではどちらを取るかは自明で、acpiだけdisableとする。

でもやはり電源を切れるようにしたいところなので、いずれfxpかemのカードを買うことになりそう。

2007-01-22

Bloggerの投稿記事ページだけを検索サイトに

どんな検索語で閲覧されているかをたまにアクセス解析で調べてみると、単独の投稿記事ではなく、ラベル検索やアーカイブのページにヒットしてしまっているケースが少なからずあるようである。これは検索して来た読者の時間の浪費であろうし、私の本意とするところでもないので、そういったページがヒットしにくいように工夫してみる。

ようは、そういったページのmetaタグで、robotsのindexおことわりを入れればいいわけである。

Bloggerでは、テンプレート機能を使って、ページのタイプによって任意の内容を条件表示することができる。例えば<b:if cond='data:blog.pageType != "item"'>と</b:if>で囲めば、その部分は個別記事では表示されない。

ページのタイプには、

  • "archive": 月別のアーカイブ
  • "index": トップページと検索結果ページ
  • "item": 個別の投稿記事
があるようである。Bloggerのヘルプには"all"、"archive"、"main"、"item"があると書かれているが、試したところ、"all"や"main"に一致するページがないので、ヘルプ内容が古いのだろうか。

というわけで、headタグの直後に、
<b:if cond='data:blog.pageType != "item"'><META CONTENT='NOINDEX' NAME='ROBOTS'/></b:if>
を入れてみた。

結果が出るまで相当かかると思うので、そのうち何かわかれば報告する予定。

あとは、アーカイブリストの各記事タイトルや、ラベルリストの各ラベルもインデックスからはずしたいところだが、どうしたものか。

2007-01-15

Mew 5.2に独自Content-Typeを追加

Mewを5.2に上げたとたんに問題発生。どのメールを見ても、本文が表示されずに見慣れない

 ####### #     # #     #  #####  #######   ###   ####### #     #
# # # ## # # # # # # # ## #
# # # # # # # # # # # # # #
##### # # # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # ## # # # # # # # ##
# ##### # # ##### # ### ####### # #
というバナーが表示されるようになった。

あちこちにデバッグプリントを入れたりして調べるうちに、mew-mime-content-typeの中身を独自に追加していたのが悪さをしているのがわかった。

5.1までは、mew-vars2.elでmew-mime-content-typeにContent-Typeリストを初期設定していたので、~/.mew.elでこの変数に必要なContent-Typeを追加しておくだけでよかった。ところが、5.2では、mew-vars2.elではこの変数をnilに初期設定しており、~/.mew.elの後で読み込まれるmew-varsx.elで、この値がnilのときに限りリストを設定するようになっているため、mew-mime-content-typeをいじった結果、"text/plain"を含む基本的なContent-Typeがすべて抜けおちてmew-mime-functionが呼ばれてしまっていた。

なので、mew-varsx.el読込みの後で実行されるmew-init-hookでローカルな設定関数を呼んでもらうしかないようだ。

というわけで、~/.mew.elに
(defvar mew-prog-dvi '("xdvi" ("-geometry" "+0+0") t))
(add-hook 'mew-init-hook
(lambda ()
(setq mew-mime-content-type
(cons
'("application/x-dvi" "\\.dvi$" mew-b64
mew-prog-dvi mew-icon-text)
mew-mime-content-type))
))
を加えてみて、うまく動作することを確認した。

ちなみに、lambdaはself-quotingなのでquoteやfunctionする必要はない。


追記(1/17)

cons作ってsetqするより、add-to-listを使う方が洗練されてそうで見た目もすっきりするので変更。
(add-hook 'mew-init-hook
(lambda ()
(add-to-list 'mew-mime-content-type
'("application/x-dvi" "\\.dvi$" mew-b64
mew-prog-dvi mew-icon-text))
))



追記(1/17)

Mew5FAQに載っていた。

2007-01-12

ja-acroread7をFirefoxのpluginとして動作させる自分用メモ

japanese/acroreadとwww/linuxpluginwrapperを入れて、サンプルのlibmap.conf-FreeBSD6を/etc/libmap.confとして置くだけでは、FirefoxでPDFを見ようとしても

LoadPlugin: failed to initialize shared library /usr/X11R6/Adobe/Acrobat7.0/JPN/Browser/intellinux/nppdf.so [/usr/X11R6/Adobe/Acrobat7.0/JPN/Browser/intellinux/nppdf.so: Undefined symbol "__ctype_b_loc"]

と言われるだけである。/etc/libmap.confの

[/usr/X11R6/Acrobat7/Browser/intellinux/nppdf.so]
の行を
[/usr/X11R6/Adobe/Acrobat7.0/JPN/Browser/intellinux/nppdf.so]
に変更しておかなければならない。

2007-01-10

OOoコンパイル問題2

VMware PlayerのFreeBSDゲストでOpenOffice.org 2.1.0をコンパイルしようとすると、OSごとハングした。Alt+F2等の仮想コンソール切り替えは動作するが、プロセスが全部停止。FreeBSDは6.1-RELEASE-p10から不要な機能を除いたもの。デーモン類は基本的なもの以外はsmbd程度。メモリ割当ては256MB, swapは増設して1GB。swapをさらに2GBまで増やしても同じ。

で、メモリ割当てを384MBにしてやってみるとコンパイルが完了した。どう見てもOSの問題。再現性はあるけど、再現させる手間が大変。当面は対症療法で逃げよう。

ちなみに、メモリ384MBで、消費したswapは600MB強。1GBではぎりぎり足りるか足りないかなので、make時の2GBの表示はかなり安全側。WITHOUT_MOZILLAで消費したディスクは/usr/ports内で6.2GBほど。gcc-oooの分とか、mozillaとか、ソースとかの考慮も必要。

2007-01-07

FreeBSDでswap領域を一時増設する自分用メモ

OOoのコンパイルには多量のswap領域が必要と以前書いたが、make時のメッセージにそのことが追記されていた。はじめ1GB必要となって、10月に2GBに修正された。

それはともかく、swap一時増設などという滅多にしない作業はすぐ忘れるので、自分用にメモ。

基本的にはブロックデバイスをswaponすればいいだけだが、余分なパーティションがあるとは限らないので、適当なサイズの通常ファイルを作ってmd化することにする。

# dd if=/dev/zero of=/path/to/swapfile bs=1m count=512
# mdconfig -a -t vnode -f /path/to/swapfile -u 3
# swapon /dev/md3
# お仕事
# swapoff /dev/md3
# mdconfig -d -u 3
# rm /path/to/swapfile
/etc/rc.confに swapfile="/path/to/swapfile" を書いて、再起動するか /etc/rc.d/addswap start という方法もあるが、2回以上実行することを想定していないので、一時的あるいは実験的な用途向きではない。

2007-01-04

東芝PORTEGE R100のHDD換装

丸3年間使い倒してきたR100(dynabook SS S8とほぼ同スペックで、キーボードとグラフィックスコントローラが違う程度)の40GB HDDを80GBのものに換装した。

1日に数回、移動のための電源断はあるものの、ほぼ24時間稼動だった。東芝ヨーロッパによると、このHDDの製品寿命は5年または2万(通電)時間となっている(どうして日本のサイトにこの情報がない?)ので、たぶん後者はとっくに越えている。

最初の徴候は回転のキュルキュル音で、1ヶ月の間に数回観測。軸受がかなりへたってそう。次の徴候はアクセスの数十秒間の停止と規則的なヘッドシーク音の連発。CRCエラーのリトライあたりか。cygwinで該当するファイルをアクセスしてみるとIOエラーが出る。念のために調べたら、他の複数のファイルにもエラーがある。これだけ問題があるのに、HDD Healthはまだ2年も大丈夫とか予測している。セクターエラーだけならソフト的に回避できるかもしれないが、キュルキュル音があまりにもやばそうなので換装を決意。

というわけで、HDDを急拠調達し、正月休みに作業することにした。R100に元から塔載されていたのは、1.8インチのTOSHIBA MK4004GAH。2chモバイル板にはS8でのMK8007GAHへの換装実績が報告されていたが、念のためIDEコントローラがIntel(R) 82801DBM Ultra ATA Storage Controller - 24CAで、S8と同じであることを確認し、MK8007GAHを購入。

True Image系で現在の環境をそのまま移行させる方法も考えたが、どうせならまっさらにしてみることにした。ただし、当然Documents and Settingsは命綱なので、手元のUSB HDDにしっかりバックアップ。たぶん使わないだろうけど、C:直下の他のフォルダも全部バックアップ。

交換作業そのものは大したことなし。HDD格納箇所の蓋を開け、まわりにくっついてしまったたぶんシリコンゴム系のクッションごとHDDをソケットから慎重にはずし(のはずが、慎重でなかったので、ゴムのベロがちぎれてしまったが無視)、HDDからクッションをはがし、新しいHDDにくっつけ、ソケットにさしこんで、蓋をして終了。

付属のリカバリCD-ROM 3枚を使ってシステムを再構築し、アップデートを何回も適用し、バックアップしたApplication DataとMy Documentsあたりを中心に復元し、主要なアプリケーションを入れ直す。純正のCD-ROMドライブがあるとやはり心強い。無線LANのWEPキーとアンチウイルスのパスワードをちゃんとメモしておいてよかった。

細かいアプリケーションや設定のもれはあるだろうけど、バックアップ開始から丸々2日かけて、当面の作業には支障ない程度に復旧できた。何よりも、流体軸受のおかげで、HDDの回転音が非常に静かになった。相対的にシーク音(リトラクト音?)が目立つようになったが。

これであと3年は使える…か?

(3/5: 誤字訂正)