2006.06.11

JavaScript のリファレンス

まとまった JavaScript のリファレンスどっかに無いかなと思ったら、hail2u.net で紹介されてました。でも Internet Archive のリンクが切れているようなので、備忘録をかねて載せておきます。

Microsoft の Windows Script ドキュメントは p7zip で解凍出来ます。出てきた chm ファイルは Chmox日本語対応版) という Mac 用のビューワで見ることが出来ました。

Tags: ,


スポンサーサイト



Posted at 17:12 | Script | COM(0) | TB(0) |
2006.05.23

SpiderMonkey で JavaScript のお勉強

JavaScript の勉強にと SpiderMonkey をインストールしてみました。

% curl -O http://ftp.mozilla.org/pub/mozilla.org/js/js-1.5.tar.gz 
% tar xzf js-1.5.tar.gz
% cd js/src
% BUILD_OPT=1 make -f Makefile.ref

これで実行ファイルである Darwin_OPT.OBJ/js が出来るので、お好きな所にインストール。

% sudo install -m 755 Darwin_OPT.OBJ/js /usr/local/bin

これで irb みたいに対話的に JavaScript を実行出来たり、ファイルを実行出来たりします。

 % js
js> print(a);
1: ReferenceError: a is not defined
js> var a;
js> print(a);
undefined
% js -f test.js

Tags: , ,


Posted at 20:41 | Script | COM(0) | TB(0) |
2006.03.24

AppleScript の make new Finder window で with properties が反映されない

AppleScript で make 命令を使って新しいオブジェクトを作る時、 with properties で属性を指定することが出来ます。

tell application "Finder"
  make new folder at desktop with properties {name:"ほげほげ"}
end tell

ところが Finder ウインドウの場合にはこれが反映されない。

tell application "Finder"
  make new Finder window with properties  {bounds:{0, 10, 500, 500}, current view:icon view}
end tell

これだとうまくいくんですが。

tell application "Finder"
  make new Finder window
  set properties of window 1 to {bounds:{0, 10, 500, 500}, current view:icon view}
end tell

検索すると、バグらしいとのこと。10.2 で直ったと書かれているページもあるので、再発したんだろうか。


Posted at 21:46 | Script | COM(0) | TB(0) |
2006.02.28

スクリプトからアプリケーションのパスを得る幾つかの方法

スクリプトを書いていてインストール済みアプリケーションのパスを得たいときが結構あるので、その方法をまとめてみました。AppleScript なら path to 命令、10.4 なら mdfind コマンドを使うのが楽かと思います。

path to application "application name"
AppleScript ならこの命令でコロン区切り( : )のエイリアス値を得られます。POSIX path 命令でスラッシュ区切り( / )のファイル値に変換出来ます。Mac の場合はスペースやシェルの特殊文字が含まれる場合が多々あるので、quoted form も付けておいた方が無難です。
path to application "Firefox"
⇒ alias "Mac:Applications:ThirdParty:Firefox.app:"

quoted form of POSIX path of (path to application "Firefox")
⇒ '/Applications/ThirdParty/Firefox.app/'
呼び出すアプリケーションが起動してしまうのが少し鬱陶しいです。シェルスクリプトから使いたい場合は osascript コマンドを使うことになりますが、かなり遅いです。
/usr/bin/mdfind
10.4 の新機能「Spotlight」のコマンドラインツール。引数としてメタデータを指定します。アプリケーションに関係あるメタデータは「kMDItemKind」、「kMDItemContentType」あたりでしょうか(メタデータリファレンス)。
% mdfind 'kMDItemKind == "アプリケーション" && kMDItemFSName == "Firefox.app"'
⇒ /Applications/ThirdParty/Firefox.app
もしくは
% mdfind '(kMDItemContentType=="com.apple.application-file" || kMDItemContentType=="com.apple.application-bundle") && kMDItemFSName=="Firefox.app"'
⇒ /Applications/ThirdParty/Firefox.app
「kMDItemKind」が英語だったり日本語だったり優先言語によって異なるので、「kMDItemContentType」を使った方が良いように思います。ただこれもバンドル形式とそうでないものとでは値が異なるので、どちらか解らなければ「||」で区切ってどちらか一方にマッチするように指定しておく方が無難です。また当然ながら 10.4 以降しか使えません。メタデータの情報は /usr/bin/mdls コマンドで調べられます。

追記(3月2日)

アプリケーションかどうかを判断するには、「kMDItemContentTypeTree」を使うのが良さそうです。「kMDItemContentTypeTree」には UTI が階層的に保持されており、アプリケーションならば値として「com.apple.application」を含んでいますのでこれを条件にしてやります。
% mdfind 'kMDItemContentTypeTree=="com.apple.application" && kMDItemFSName=="Firefox.app"'
⇒ /Applications/ThirdParty/Firefox.app
/usr/bin/find
コマンドラインで検索と言えば find でしょうか。
% find /Applications -type d -name Firefox.app
⇒ /Applications/ThirdParty/Firefox.app
便利なんですが、検索するパスを限定して実行しないとかなり時間がかかってしまいます。
/usr/bin/locate
find と同じく unix 由来の検索コマンドです。find と違うのは専用のデータベースを使って、素早く結果を得ることが出来ます。
% locate Firefox.app | grep 'Firefox\.app$'
⇒ /Applications/ThirdParty/Firefox.app
なかなか素敵なコマンドですが、データベースの更新には時間と負荷が結構かかります。更新も weekly スクリプト内で実行されている為(手動で更新も出来ますが)、リアルタイムでの検索にはあまりむいていません。

Posted at 22:13 | Script | COM(0) | TB(0) |