zshのヒストリサーチ

zshでヒストリサーチをしようとして

history-search-end: function definition file not found

というエラーがでることがある。これはFPATHにzshのfunctionへのパスが通っていないから。

findとか使ってなんとかしてhistory-search-endの場所を探し、そこにFPATHを通す。多分/usr/share/zsh/とかの下にある。某所では/usr/share/zsh/4.3.10/functionsにあったので、

export FPATH=/usr/share/zsh/4.3.10/functions:$FPATH

でOK。

ターミナルからmiでファイルを開く

以前同じことではまったのに忘れてたので覚え書き。

Mac OS Xのターミナルから、miでファイルを開くには、

alias mi="open $1 -a /Applications/mi.app/Contents/MacOS/mi"

としてから

$ mi filename.txt

とする。

Mac OSでファイルのフルパスをコマンドラインからコピー

クリップボードにファイルのフルパスをコピーしたいことがよくある。svnなんかでファイルをディレクトリ深く掘って管理している時に、そのファイルをウェブにアップロードする場合とか。そういう時のために、コマンドラインからクリップボードにフルパスをコピーするコマンドを作った。

まず、以下のスクリプトをパスの通ったディレクトリに置く。

#!/usr/bin/ruby
require 'pathname'

if ARGV.size == 0
  file = '.'
else
  file = ARGV[0]
end

begin
  `echo #{Pathname.new(file).realpath} | pbcopy`
  puts "#{Pathname.new(file).realpath} is copied to clipboard."
rescue
  puts "#{file} is not found."
end

そして、以下のaliasを作る。

alias ccp='ccp.rb $1'

これにより、単にccpでカレントディレクトリが、ccp filenameでファイル名のフルパスがコピーできる。地味に便利。

navigateToURL

ボタンを押したら特定のページに飛ぶようなスクリプトを書こうとして、

    private function onURLButtonClick(e:MouseEvent):void{
      navigateToURL(new URLRequest("http://hogehoge/index.html"),"_blank");
    }

みたいなコードを書いたが、実際におしても何もならない。これはどうもフラッシュのセキュリティの問題のようだ。

対応するセキュリティは、allowScriptAccessというパラメータで、デフォルト値は "sameDomain"、すなわちフラッシュが置かれているドメインと同じところとしか通信しない。

デバッグ時にこれでは面倒なので、とりあえずは"always"にしておき、実際に運用するサイトにアップロードするときには"sameDomain"にするのがよさそう。

ちなみにallowScriptAccessはswfを表示するHTMLにおいて、以下のように指定する。

<embed src="./hoge.swf" type="application/x-shockwave-flash"  width="320" height="320" bgcolor="#000000" allowScriptAccess="always" pluginspage="http://www.adobe.com/go/getflashplayer_jp"/>

IEだとOBJECTタグ使ったほうが良いかも。詳しくは知らん。