2006.06.11
JavaScript のリファレンス
まとまった JavaScript のリファレンスどっかに無いかなと思ったら、hail2u.net で紹介されてました。でも Internet Archive のリンクが切れているようなので、備忘録をかねて載せておきます。
Microsoft の Windows Script ドキュメントは p7zip で解凍出来ます。出てきた chm ファイルは Chmox(日本語対応版) という Mac 用のビューワで見ることが出来ました。
Tags: javascript, reference
スポンサーサイト
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: javascript, spidermonkey, compile
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 で直ったと書かれているページもあるので、再発したんだろうか。
2006.02.28
スクリプトからアプリケーションのパスを得る幾つかの方法
スクリプトを書いていてインストール済みアプリケーションのパスを得たいときが結構あるので、その方法をまとめてみました。AppleScript なら path to 命令、10.4 なら mdfind コマンドを使うのが楽かと思います。
- path to application "application name"
- AppleScript ならこの命令でコロン区切り( : )のエイリアス値を得られます。POSIX path 命令でスラッシュ区切り( / )のファイル値に変換出来ます。Mac の場合はスペースやシェルの特殊文字が含まれる場合が多々あるので、quoted form も付けておいた方が無難です。
呼び出すアプリケーションが起動してしまうのが少し鬱陶しいです。シェルスクリプトから使いたい場合は osascript コマンドを使うことになりますが、かなり遅いです。path to application "Firefox" ⇒ alias "Mac:Applications:ThirdParty:Firefox.app:" quoted form of POSIX path of (path to application "Firefox") ⇒ '/Applications/ThirdParty/Firefox.app/'
- /usr/bin/mdfind
- 10.4 の新機能「Spotlight」のコマンドラインツール。引数としてメタデータを指定します。アプリケーションに関係あるメタデータは「kMDItemKind」、「kMDItemContentType」あたりでしょうか(メタデータリファレンス)。
もしくは% mdfind 'kMDItemKind == "アプリケーション" && kMDItemFSName == "Firefox.app"' ⇒ /Applications/ThirdParty/Firefox.app
「kMDItemKind」が英語だったり日本語だったり優先言語によって異なるので、「kMDItemContentType」を使った方が良いように思います。ただこれもバンドル形式とそうでないものとでは値が異なるので、どちらか解らなければ「||」で区切ってどちらか一方にマッチするように指定しておく方が無難です。また当然ながら 10.4 以降しか使えません。メタデータの情報は /usr/bin/mdls コマンドで調べられます。% mdfind '(kMDItemContentType=="com.apple.application-file" || kMDItemContentType=="com.apple.application-bundle") && kMDItemFSName=="Firefox.app"' ⇒ /Applications/ThirdParty/Firefox.app
追記(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 と違うのは専用のデータベースを使って、素早く結果を得ることが出来ます。
なかなか素敵なコマンドですが、データベースの更新には時間と負荷が結構かかります。更新も weekly スクリプト内で実行されている為(手動で更新も出来ますが)、リアルタイムでの検索にはあまりむいていません。% locate Firefox.app | grep 'Firefox\.app$' ⇒ /Applications/ThirdParty/Firefox.app
| HOME |