Dashboard にあって HTA にない
Dashboard みたいな JavaScript + HTML + CSS でデスクトップ向けのソフトウェアを書くってのは珍しい考えじゃない。Microsoft には HTML Application (HTA) があるし。で、JavaScript を デスクトップに持っていくとき、素の JavaScript にはファイルの読み書きなんて無いので、なんらかの外へのアクセス手段が必要になる。
HTA の場合、Microsoft には COM というかっこいいものがあるので、それを呼び出す。Dashboard の場合、そんなかっこいいものは無いので widget.system という system(3) の親戚みたいなものを呼び出す。
そんなわけで、今日書いたコード。
File = new Object(); File.exist = function(path) { return widget.system('/bin/test -f ' + path, null).status == 0; } File.mtime = function(path) { var s = widget.system("/usr/bin/ruby -e 'puts File.mtime(ARGV.shift).tv_sec * 1000' " + path, null).outputString; return new Date(s); }
Mac OS X のありものまとめた感はすごく hack っぽい。冷蔵庫の残り物で炒飯を作るくらいの hack だ。
Hejlsberg も Cutler も引っ張ってこれる、リソースがあるところには hack なんていらないよね ;-)