コマンドラインで OS X のエイリアスを解決する
シンボリックリンクと異なり、ターミナルのコマンドは (OS X の) エイリアスを解決してくれません。
$ cd 名称未設定フォルダ\ のエイリアス -bash: cd: 名称未設定フォルダ のエイリアス: Not a directory
エイリアスを解決してくれるコマンドがあればよいのですが、見当たらなかったのでシェルスクリプトを書いてみました。
osascript コマンドを使えばコマンドラインからAppleScriptを実行出来るので、これを利用します。
#!/bin/sh # エイリアスへのパスを引数として渡すと、そのエイリアスが指す先を標準出力に出力する # エイリアスでないものへのパスや、存在しないパスを渡した場合はそれをそのまま出力する osascript -e ' on run fname try tell application "Finder" return POSIX path of (original item of (fname as POSIX file as alias) as alias) end tell on error return fname end try end run ' "$1" 2>/dev/null
とりあえず以上のスクリプトを resolve_osx_alias という名前で保存し、実行権限をつけてパスの通ったところに置けば以下のような感じでエイリアスを解決出来ます。
$ resolve_osx_alias 名称未設定フォルダ\ のエイリアス /Users/nakt/Desktop/名称未設定フォルダ/ $ pwd /Users/nakt/Desktop $ cd "`resolve_osx_alias 名称未設定フォルダ\ のエイリアス`" $ pwd /Users/nakt/Desktop/名称未設定フォルダ
おまけ: bash でエイリアスに直接 cd 出来るように
以下の記述を ~/.bashrc に加えることで直接フォルダのエイリアスに cd 出来るようになります。
cd(){ command cd "`resolve_osx_alias "$1"`" }
$ pwd /Users/nakt/Desktop $ cd 名称未設定フォルダ\ のエイリアス $ pwd /Users/nakt/Desktop/名称未設定フォルダ
おまけ2: Emacsで
Emacsもエイリアスを解決してくれません。
上記の resolve_osx_alias をパスの通ったところに置いた上で .emacs.d/init.el に以下の記述を加えれば、
C-x C-f や dired などでファイルを開く際にエイリアスを解決してくれるようになります。
(when (= (shell-command "which resolve_osx_alias") 0) ; resolve_osx_alias コマンドが存在すれば ; find-file-noselect の第一引数を resolve_osx_alias コマンドに通す (defadvice find-file-noselect (before resolve-osx-alias) (ad-set-arg 0 (replace-regexp-in-string "\n$" "" (shell-command-to-string (concat "resolve_osx_alias " (shell-quote-argument (ad-get-arg 0))))))) (ad-activate 'find-file-noselect))
■
3年ぶりに更新してみたり。
■
フラクタルアート - Wikipediaに載っていた「リアプノフ・フラクタル」なるものを描くプログラムを書いてみました。
http://walkure.net/lyapunov/
「フラクタル地形」っていうのも面白そうですね。
球面上のランダムな点
(3次元)単位球面上から、偏りなくランダムに点を得たいとします。
単位円上であれば、区間上の一様乱数を生成すれば点が目的のものとなりますが、
球座標で同様に「は、は上の一様乱数」としてしまうと極付近に点が偏ってしまいます。
方法1
区間上の一様乱数を3つ生成し、とする。
点が単位球に含まれていれば、
が目的のもの。含まれていなければやり直し。
分かりやすくて良いですね。
ただ、1回で点が得られるとは限らないのが残念です。
は単位球内から偏りなく選ばれるので、もちろんも単位球面上から偏りなく選ばれます。
方法2
を上の、を上の一様乱数とすれば、
が目的のもの。
これだとまた極方向に偏ってしまいそうですが、そうはなりません。
球座標でを一様乱数にすると、微小面積に対して(?)一様に点が
分布することになるため、が小さい極付近に点が集まってしまいます。
ここで
とすれば
となり、とを一様乱数とすれば偏りは無くなります。
初等関数の範囲内での積分
「ある関数が初等関数の範囲内で積分出来るか」を判定するにはどうするか、というのが長年の疑問だったんですが、
リッシュのアルゴリズムというものを使って調べられるようですね。すっきりしました。
しかし、ざっと調べても具体的な内容が出てきませんでした。解析の教科書には載っているものだそうなので、買えということでしょうか。
数学は真面目に独習したいのでちょうどいいかもしれませんね。