2009年12月25日金曜日

HDD の Load_Cycle_Count が異常

研究室で 24時間稼働させている MacBook Pro の HDD は、smartmontools によって監視しています。Load_Cycle_Count が悪化していることに気付いたため、ここ数日注視していました。ちなみに、Load_Cycle_Count は、HDD のヘッドが待避領域へ移動し、再度ディスク上へ移動した回数です。

データが 4日分しかないのですが、記憶を総合すると、VALUE (100 で正規化されており、THRESH の値を下回ると寿命) が 1週間ほどの間に 33 → 31 へ変化していました。100で正規化されているので、このペースで行くと、あと3ヶ月ほどで寿命を迎えることになります。

ID# ATTRIBUTE_NAME   VALUE THRESH RAW_VALUE (日付)
193 Load_Cycle_Count 031   000    690701    (2009-12-25)
193 Load_Cycle_Count 032   000    688884    (2009-12-24)
193 Load_Cycle_Count 032   000    687067    (2009-12-23)
193 Load_Cycle_Count 032   000    685243    (2009-12-22)

このデータは、毎日指定時刻に自動的に収集したものです。RAW_VALUE の増分を見ると、1日あたり、1800程度増えています。1800を24で割ると、1時間あたり75回のヘッド待避・再ロードが繰り返されています。何か、とても臭う増え方をしています…。SMC リセット、P-RAM クリア、バッテリの交換、緊急モーションセンサーの無効化などを試してみたのですが、ことごとくダメでした。

結論から言うと、hdapm を使うとピタリと止みます。HDD のパワーマネジメントを変更するツールだそうです。と言っても、完全に 0 になるわけではないようです。今のところの計測では、1時間あたり15回程度にまで削減されました。1日あたり360回、現在の主流の 2.5インチの HDD は 60〜100万回程度は耐えられるようですから、5年くらいの寿命という計算になります。妥当な線でしょう。

インストールは、上記のページから .dmg を落としてきて、マウントした後、Terminal から以下のようにタイプします。Finder でファイルをコピーすると、ファイルオーナーの関係でうまく動作しません※。

sudo mkdir -p /usr/local/bin
sudo cp /Volumes/hdapm/hdapm /usr/local/bin
sudo cp /Volumes/hdapm/hdapm.plist /Library/LaunchDaemons

インストールしたら、再起動してください。

国内のブログで hdapm を紹介している記事を読むと、この問題について HDD からクリック音がしてうるさいとか、HDD のアクセスが一瞬止まると言った観点から取り上げられていますが、そういう「感覚」の問題ではありません。これは HDD の寿命を確実に縮めます。

※ /Library/LaunchDaemons から起動されるプロセスのオーナーは root です。このため、.plist ファイルのオーナーは root:wheel 、パーミッションは rw-r--r-- でなければなりません。launchd はオーナーやパーミッションが異常な .plist ファイルを無視します。

2009年12月22日火曜日

WMWifiRouter は悪くない?

WMWifiRouter 1.6.0 がリリースされましたが、DMZ をオフにできない問題は解消されていません。

しばらく前から、WifiSnap に乗り換えたのですが、WifiSnap でも DMZ をオフにできません。こちらも問い合わせているのですが、調査をするので時間をいただきたい、というメールが返ってきて、音沙汰なしです。難航しているのでしょうか。

2つの同種のソフトで、同じ問題が発生しているところを見ると、ソフト側の問題ではないのかもしれません。Touch diamond S21HT の問題か、Windows Mobile のセキュリティホールなのか、Windows Mobile が既にクラックされているのか…。

早くイーモバイルの回線で iPhone が使えるようになりませんかねぇ…。

2009年10月31日土曜日

iPhone / iPod Touch 用動画を作る (VLC 1.0 対応版)

VLC 1.0 以降を使って、iPhone / iPod Touch 用動画を作成するシェルスクリプトです。Mac OS X 10.6.1 と VLC 1.0.3rc (Intel, 32bit 版) で動作を確認しています。64bit 版の VLC 10.0.x は、今のところうまく動作しないようです。

以下のシェルスクリプト mpg2mp4 にまとめました。入力には、1440x1080 29.97fps の MPEG-PS 動画を想定しています。

#!/bin/sh
VLC=/Applications/VLC.app/Contents/MacOS/VLC
OUTPUT=`basename $1 .mpg`.mp4
SIZE="width=480,height=270"
ASPECT="canvas-aspect=1:1"
FPS="fps=29.97"
CROPPADD="cropbottom=2,paddtop=2,paddbottom=2"
X264_OPTS="profile=baseline,level=30,keyint=30,bframes=0,ref=1,nocabac"
VIDEO="venc=x264{$X264_OPTS},vcode=h264,vb=1536"
AUDIO="acodec=mp4a,ab=128"
OPTS="deinterlace,audio-sync"
MUX="mux=mp4"

$VLC --intf=dummy --sout="#transcode{$SIZE,$FPS,$ASPECT,vfilter=croppadd{$CROPPADD},$VIDEO,$AUDIO,$OPTS}:standard{$MUX,dst=$OUTPUT,access=file}" $1 vlc://quit

X264_OPTS から始まる行は、長いので折り返して表示されていますが、nocabac" まで 1行で入力してください。同様に $VLC から始まる行は、vlc://quit まで 1行で入力してください。

使い方

foo.mpg を入力とし、foo.mp4 を作るには、シェルから以下のようにタイプします。

mpg2mp4 foo.mpg

VLC がコマンドラインモードで動作し、しばらくすると、カレントディレクトリに foo.mp4 が吐き出されます。

注意事項

iPhone / iPod Touch で再生できる H.264 形式の動画は、ベースラインプロファイル 3.0 以下である必要があります。上記シェルスクリプトの設定を変更する場合は、VLC の出力するメッセージの以下に示す箇所を見て確認してください。メインプロファイルになると、再生できません。例えば、CABAC を有効にすると、とたんにメインプロファイルになってしまいます。

[0x5012f8] main interface error: no interface module matched "globalhotkeys,none"
[0x5012f8] main interface error: no suitable interface module
[0x20a218] main libvlc error: interface "globalhotkeys,none" initialization failed
[0x28c3f8] dummy interface: using the dummy interface module...
[0x100f8a8] a52 packetizer: A/52 channels:2 samplerate:48000 bitrate:256000
No accelerated IMDCT transform found
x264 [info]: using threads=3
x264 [info]: using cpu capabilities: MMX2 Cache64
x264 [info]: profile Baseline, level 3.0)

こちらではAutomator を使って、簡易な GUI を付けてる方法を紹介しています。

2009年9月28日月曜日

シリアルポートようやく全廃

連休中、思い出したようにハンダゴテを持って電子工作をしていました。後片づけをしている時、ふと「シリアルポート関係の機材要らなくなってね?」と気づきました。今回の工作のために購入した機材と、出来上がった作品で、USB への置き換えが済んでいたのです。単純な置き換えではなく、機能向上が目的だったので、全然意識していませんでした。iMac が USB を採用してから、10年くらい経ったでしょうか。我が家でもようやくレガシーインターフェースが無くなりました。

それにしても、意外とレガシーインターフェースしぶとかったです。アヤシゲな自作品とかが USB に対応できなかったことが原因です。外付けUSB-シリアル変換器は持っていましたが、改めて秋月電子からUSB-シリアル変換モジュール FT232RLを買ってきました。950円です。Mac OS X 用のドライバもあります。なぜ変換器がダメかという理由は明確で、シリアルポートポート用のケーブルやら変換アダプタやらを相変わらず必要とします。それに電源の供給がないので、別途 AC アダプタが必要になります。変換モジュールで組み込んでしまえば、実態はともかく見た目は USB ですし、USB から給電される電力が使えるので、全体としてはスッキリした構成になります。

最後まで残っていた、こいつらは、全部退役です。今までありがとう。そしておつかれさま。

2009年8月30日日曜日

ここが非互換 Mac OS X 10.6 -- iCal

Mac OS X 10.6 Snow leopard が発売になりました。

当サイトでは、よく iCal 関係の AppleScript を扱っていますが、Mac OS X 10.6 では、少し挙動が変わりました。試しに、iCal でカレンダー「テスト」に「テスト」というイベントを作って、AppleScript から観察してみます。

tell application "iCal"
  tell calendar "テスト"
    properties of event 1
  end tell
end tell

以下は 10.5.8 (iCal 3.0.8) の結果です。

{
  allday event:false,
  class:event,
  description:missing value,
  end date:date "2009年 9月 2日 水曜日 1:00:00 PM",
  excluded dates:{},
  id:"C0DC5F01-4183-412E-95AB-9414FD8111C6",
  location:missing value,
  recurrence:"",
  sequence:2,
  stamp date:date "2009年 8月 30日 日曜日 2:27:03 PM"
  start date:date "2009年 9月 2日 水曜日 10:00:00 AM",
  status:none,
  summary:"テスト",
  url:missing value,
}

以下は 10.6 (iCal 4.0) の結果です。

{
  allday event:false,
  class:event,
  description:missing value,
  end date:date "2009年9月2日水曜日 16:00:00",
  excluded dates:{},
  id:"6A5888C1-D872-4C5F-B053-09CD8FC5067D"
  location:missing value,
  recurrence:missing value,
  sequence:2,
  stamp date:date "2009年8月30日日曜日 14:20:48",
  start date:date "2009年9月2日水曜日 13:00:00",
  status:none,
  summary:"テスト",
  url:missing value,
}

プロパティリストの結果は、比較しやすいように辞書順に並べ替えています。以上のように、recurrence に値が設定されていない時の結果が違います。description に "" (空文字列) を設定した時の挙動も違い、iCal 3.0.8 では "" になりますが、iCal 4.0 では missing value になります。

なお、missing value を文字列に変換して扱ってはいけません。AppleScript では missing value as string は "missing value" という文字列になるというよく分からない仕様なので、気をつけましょう。

2009年8月25日火曜日

XSLT で属性値に中括弧 {} を書く

XSLT の <xsl:value-of select="..."/> などで、属性値 select の値に中括弧 { ... } を使うと、その中は XPath 式として評価されます。それはそれで便利なのですが、中括弧自体を出力したい時は、以下のように中括弧を二重に書くことで、エスケープできます。

  <xsl:value-of select="{{1234}}"/>  

このように書くと {1234} が出力されます。

先日、困ったので、メモ書きしておきます。

2009年8月23日日曜日

Bento 2.0.5 リリース

Bento 2.0.5 アップデータがリリースされました。

Bento 2.0.4 の、アドレスブックや iCal のイベントが増殖する問題は、今回のアップデータで解決されたようです。

AppleScript のサポートは依然として改善されてません…。