上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--|スポンサー広告||TOP↑

環境
OS: Mac OS X 10.4.10 (PPC)

ネットワーク環境設定で、こんな感じの PAC ファイルを適用した「場所」をいくつか用意して

function FindProxyForURL(url, host)
{
if (shExpMatch(host, "*.imagegarden.net") || shExpMatch(host, "*.imgscan.com"))
return "PROXY XXX.XXX.XXX.XXX:XXXX";
else
return "DIRECT";
}


ときどきアップルメニューから切り替えて使っているのですが、ふと
http://www.cybersyndrome.net/evc.html
のときもプロキシを通したいと考えました。
本当に PAC ファイルが適用されているかどうかの確認用ですね。
でも *.cybersyndrome.net などと書いてしまうと使い勝手が悪いので
あくまで ENV Checker のページだけに適用したいわけです。

そこで検索開始。
しかしなかなか見つかりません。
かなり細かく解説されたサイトがたくさんあるのですが、特定の HTML だけ、という例文がない。
応用を利かすのが苦手な私は何事に関しても例文のあるサイトを最優先で探します。
需要ないのかそれとも探し方が悪いのかサンプルよこせサンプルなどと思いつつだらだらと検索。
「うぁ FindProxyForURL() の引数が url じゃん!」
と気づいたときはすでに 1 時間が経過。

要するに「引数 url が ... と等しければ」という JavaScript の条件式にすりゃいいんですよね。
こうしたらうまくいきましたよ。

function FindProxyForURL(url, host)
{
if (shExpMatch(host, "*.imagegarden.net") || shExpMatch(host, "*.imgscan.com") || url=='http://www.cybersyndrome.net/evc.html')
return "PROXY XXX.XXX.XXX.XXX:XXXX";
else
return "DIRECT";
}

JavaScript をちゃんと勉強している人なら 1 秒で気付きそうな話ではありますが。
普段コピペでつまみ食いばかりしているのでこういうときに苦労します。

PAC ファイルの書き方・使い方リンク
JavaScript または JScript を使った自動プロキシ ファイルの例
osaru: プロキシの自動設定
Proxy Client Autoconfig File Format
PROXY.PAC の作成例
Proxyサーバー続編
自動プロキシ設定について
暴想: プロキシを使うならPACを使うのが便利。
他にも山ほど。


07/13|Macコメント(0)トラックバック(0)TOP↑

(なんかこの記事はおかしい、あやしい。追記参照)

環境:
Mac OS X 10.4.10 (PPC)
ターミナル 1.5 - ウインドウ設定の文字セットエンコーディング: Unicode (UTF-8)

まずターミナルを起動して、以下を実行します。

$ echo "宮﨑あおい" | iconv -f UTF-8 -t UTF-16 > file.txt
$ echo "维吾尔自治区" | iconv -f UTF-8 -t UTF-16 >> file.txt

こんなテキストファイルが作成されます。
bom.png

テキストエディタのカーソルを移動して一行目と二行目の間を行ったり来たりしてみて下さい。
追記された二行目の行頭でカーソルが一瞬引っかかりますよね。
iconv で UTF-16 (LE でも BE でもないやつ) に変換されたテキストの先頭には必ず BOM がつくため、追記するたびに文中に見えない文字が増えていくのです。
このままでもとりたてて困ることはないものの、なんとなく気持ちが良くない。
そこで BOM を取り除く定番の方法があるのではと探したのですが、見つけられなかったため次のようにしてみました。

$ echo "宮﨑あおい" | iconv -f UTF-8 -t UTF-16 > file.txt
$ echo "维吾尔自治区" | iconv -f UTF-8 -t UTF-16 | tail -c +3 >> file.txt


先頭 2 バイトが BOM だそうなので、iconv の実行結果から tail -c +3 で 3 バイト目以降を取り出しています。
本当にこのやり方で正しいのかどうかはわかりませんが、今のところトラブルは起きていません。

追記 (070708)
そもそも「UTF-16 に変換してから BOM を削除したい」という考え方をしたのは

cat "UTF-8 のテキストファイル" | iconv -f UTF-8 -t UTF-16BE >> "iconv 経由で UTF-16 にしたテキストファイル"

を実行したときに文字化けして当惑したという経験がきっかけなのですが、ついさっき同じことを試したところ……あれ、文字化けしない?
いやそうなんですけどね。
Mac OS X 10.4.10 の時点で標準インストールされている iconv (GNU libiconv 1.9) がサポートする UTF-16 のエンコーディングは

UTF-16 (BOM 付き - ビッグエンディアン)
UTF-16BE (BOM 無し - ビッグエンディアン)
UTF-16LE (BOM 無し - リトルエンディアン)

の三種類で、UTF-16 (つまり BOM 付きビッグエンディアン) に変換してから書き出したファイルに BOM 無しで追記したかったら UTF-16BE に変換すれば事足りるはずなのです。
ではあのとき文字化けしたのは単なるポカミスだったのかもと思えてきました。
こう書くだけでいいのかもなと。

$ echo "宮﨑あおい" | iconv -f UTF-8 -t UTF-16 > file.txt
$ echo "维吾尔自治区" | iconv -f UTF-8 -t UTF-16BE >> file.txt


ようわからんので何かわかったらまた追記します。


06/29|Macコメント(0)トラックバック(0)TOP↑

環境:
Mac OS X 10.4.10 (PPC)
bc 1.06
iTunes 7.2

タイトルがちょっとわかりづらかったかも。
{1, 2, 3 ... 999, 1000} のようなリスト内の数値を repeat 文を使わずに合計する方法です。
AppleScript's text item delimiters を " + " に設定し、リストを足し算の計算式に変換してから bc に渡します。

set numList to {1, 2, 3}
set asdlm to AppleScript's text item delimiters
set AppleScript's text item delimiters to " + "
try
set calcString to (numList as string)
set AppleScript's text item delimiters to asdlm
on error
set AppleScript's text item delimiters to asdlm
return
end try
do shell script "echo " & quoted form of calcString & " | bc"

iTunes で選択されたトラックのサイズ合計も素早く求めることができます。

tell application "iTunes"
set sizeList to (size of selection)
end tell
set asdlm to AppleScript's text item delimiters
set AppleScript's text item delimiters to " + "
try
set calcSize to sizeList as string
set AppleScript's text item delimiters to asdlm
on error
set AppleScript's text item delimiters to asdlm
end try
set calcString to "scale=3; ( " & calcSize & " ) / 1024 / 1024"
do shell script "echo " & quoted form of calcString & " | bc"

(本当はこのあとに数値の大きさを見ながら MB やら GB やらに換算するスクリプトが続かなければならないのですが、iTunes がどういった基準で切り上げ/切り捨てを行っているのかいまひとつ把握できていないため、ここには書かないでおきます。
試行錯誤を繰り返せば iTunes のウインドウに表示される数値と全く同じ結果を求めることは可能だと思います。)

参考: bc

追記
do shell script は文字列をシェルスクリプトとして実行しますが
文字列を AppleScript として実行する方法があるのをすっかり忘れていました。
はい、run script です。

set x to "(100 + 20 + 30) / 15"
run script x

do shell script を実行 > シェルを起動 > bc を起動 > 計算
よりも
run script を実行 > 文字列を AppleScript としてコンパイル > 計算
のほうが若干速いのかもしれませんね。勘ですが。
bc と AppleScript では割り算をしたときの結果表示のされ方が異なるので、スクリプトの目的やその日の気分、好き嫌いなどによって使い分けると幸せになれるかもしれません。

bc
除算を行うとデフォルトでは計算結果を小数点以下切り捨てで表示する
scale=2 などと記述することで小数点以下を何桁まで表示するか指示できる
不正な計算式のときエラーを返さず空文字を返す (※do shell script の場合)
AppleScript
除算の結果をできる限り細かく表示しようとする
除算を行って割り切れても 10.0 のように小数点以下第一位まで表示する
不正な計算式のときエラーを返す

参考: OSAX/標準機能追加/run script


06/25|Macコメント(0)トラックバック(0)TOP↑

環境:
Mac OS X 10.4.9 (PPC)
GNU bash, version 2.05b.0(1)-release (powerpc-apple-darwin8.0)

コマンド du 指定ディレクトリ以下のディスク使用量を再帰的に表示する
UNIXの部屋 検索:du (*BSD/Linux/Solaris)

アプリケーションフォルダ直下をサイズが大きい順にソート
$ du -d 1 -k /Applications | sort -nr

一階層分だけ再帰的に表示
$ du -d 1

ブロック単位ではなく 1KB 単位で表示
$ du -k

指定した項目だけを表示 (再帰しない。 -d 0 と同じ)
$ du -s

で、

mask にマッチする項目を無視
$ du -I mask

「.app」で終わる項目を無視
$ du -d 1 -k -I "*.app" /Applications

複数指定 (-I を mask の数だけ繰り返し書く)
$ du -d 1 -k -I "*.app" -I "*Apple*" /Applications

「タマ」を含む項目を無視
$ du -d 1 -k -I "*タマ*" /Applications

濁点・半濁点を含む日本語にマッチ (ターミナルの設定によるかも)
$ str=$(echo -n "パイン" | iconv -f UTF-8 -t UTF-8-MAC); du -d 1 -k -I "*${str}*" /Applications
またはこれでもいけるぽい。
echo -n "*パイン*" | iconv -f UTF-8 -t UTF-8-MAC | xargs -0 -J str du -d 1 -k -I str /Applications
パターン ("*パイン*" のとこ) に空白が含まれるとき、その空白をエスケープしておくか、xargs に -0 をつけておかないと空白の前の文字列だけが渡されてしまう。上の例の場合はつけてもつけなくても良い。

パス名ではなく項目名にマッチするらしい。以下のように書いても Utilities フォルダは無視されない
$ du -d 1 -k -I "/Applications/Utilities" -I "*.app" /Applications
次のように書くと無視される
$ du -d 1 -k -I "Utilities" -I "*.app" /Applications
以下のようにすると何も表示されなくなる。
$ du -d 1 -k -I "Applications" -I "*.app" /Applications
mask にマッチした項目は無視だからその項目以下も無視して当然か。
もし /Applications/Applications というフォルダがあって下の Applications だけを無視したいときはどうするんだろう?

感想。
man du に mask の使用例をひとつふたつ書いておいてくれれば済む話だと思ったorz

追記
/Applications/Applications を無視したいときは
find /Applications -maxdepth 1 ! -iname "Applications" -print0 | xargs -0 du -sk
または
find /Applications -maxdepth 1 ! -iname "Applications" -exec du -sk {} \;
でいいかも。


06/08|Macコメント(0)トラックバック(0)TOP↑

環境:
Mac OS X 10.4.9 (PPC)
TextWrangler 2.2.1

defaults write com.barebones.textwrangler Filing:WriteExtendedAttributes Never
TextWrangler : Archived Release Notes : TextWrangler 2.2 Release Notes

ダブルクリックで実行するタイプのシェルスクリプト(.command)を書くときなどに。
一応これでタイプとクリエータの付加を抑止できますが、リンク先の HFS Type/Creator という言葉は初めて聞いたので何か思い違いをしてるかもしれんです。目的外の設定をしてしまっている可能性も。英語だし。
ちなみに Never の他に Always と Smart という値があります。
Smart がデフォルトだとか。


06/03|Macコメント(0)トラックバック(0)TOP↑
プロフィール

AquaBowler

  • Author:AquaBowler
  • 現在の Mac 環境:
    iBook Late2001
    Mac OS X 10.4.11
フリーエリア
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブログ内検索
RSSフィード
リンク
del.icio.us
feed meter

RSS feed meter for http://kotoerisan.blog16.fc2.com/

FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。