7月 13

Mac標準のことえりがどうもイマイチなのでATOK入れて使ってます。定額制サービス月300円のやつです。今月ATOK2011相当に更新されました。ATOK2010のころに比べると若干軽くなったような気がする。ジャストシステムのATOK定額制サービスのページはここ。ATOK2011をamazonで検索するならここをクリック。Win版ATOK定額制サービスも契約して使ってますが、残念なことにWin版とMac版は別々に契約しなければなりません。しくしく。ま、安いからいいけどね。

で、入力ソースが多くなってしまって日本語と英語の切り替えが面倒なのですが、

この入力ソースって標準設定で絞れるんですね。最近まで知りませんでした。やり方は「システム環境設定」ー「言語とテキスト」ー「入力ソース」でチェックON・OFFです。私の場合ことえりをOFFにしてATOKはひらがなだけをONにしてます。これで「英語」or「ひらがな(ATOK)」だけになり、切り替えが楽になります。

6月 22

Xcodeでとりあえず覚えておきたいショートカット(自分用)。
Xcodeでコーディングしたりデバッグしたりするとき、とりあえずこれだけ覚えておけばサクサクできるんじゃね?というショートカット。

Command + B ビルド
Command + Return ビルド+実行
Command + Shift + K クリーン
Command + / 選択行を//(C++的コメント)でコメント・アンコメント
Command + Shift + R デバッグコンソール起動(gdb)
Command + L 行番号にジャンプ
Command + Option + ↑
Command + Ctrl + ↑
ヘッダファイル・ソースファイル間を行き来する
Command + Shift + Y デバッガ起動
6月 03

Macのlessコマンドでcompressやgzip圧縮されたテキストファイルを自動展開して閲覧できるようにするやりかた。(Macに限った話ではないですけどね…)
1. lesspipe.shファイルをどこかに作成する。

#!/bin/sh
case "$1" in
*.Z) uncompress -c $1 2>/dev/null ;;
*.gz) gzip -dc $1 2>/dev/null ;;
*.bz2) bzip2 -dc $1 2>/dev/null ;;
esac

2. lesspipe.shに実行権限を付与。

chmod +x lesspipe.sh

3. LESSOPEN環境変数を以下のように設定。lesspipe.shのパスは環境に合わせて変更すること。

export LESSOPEN="|~/Documents/shells/lesspipe.sh %s"

以上で、less readme.txt.gz などとすれば拡張子にあわせて自動的に展開してくれるようになります。詳しいことはlessのオンラインマニュアル(man less)を参照。
ターミナル起動するたびに有効にしたいときは.bashrcにexport LESSOPEN…行を書いておけばいいのですが、Macだと多分.bashrcも.bash_profileもないでしょうからそれぞれ以下のように設定しておいてください。
~/.bashrc

export LESSOPEN="|~/Documents/shells/lesspipe.sh %s"

~/.bash_profile

if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi

6月 02

MacBook Pro の無線LANが使ってる最中にブツブツ切れるようになってしまったが、「システム環境設定」の「ネットワーク」-「詳細」-「AirMac」-「使ったことのあるネットワーク」にある該当する設定を一旦消してから再設定したら直った。原因不明。現象としては、起動直後しばらく問題なく使えるが途中で突然接続が切れる。
接続が切れるとき/var/log/kernel.logに以下のログが出力される。

AirPort: Link Down on en1. Reason 2 (Previous authentication on longer valid).

認証に失敗しているようでルータ側でも認証失敗のログが出てた。この間やったことはVMware Fusionを2から3にアップグレードしたことくらい。なんか関係あるのかな?ま、設定し直したら直ったからよしとするか。

6月 02

#pragma mark でコメントを書くとそれがXcodeの関数リストに表示されるのでわかりやすくていい感じです。

こんな感じでコメントが関数リストに表示されます。日本語使えるのがいいですね。
コメント部分を”-“(ハイフン)にするとセパレータになります。

ちょっとしたことですが有効活用すれば効率上げられそうです。

6月 02

Xcode環境から現在作成中のアプリケーションを起動するときに引数を付けて起動したい!なんてことが度々あります。これをやるにはXcodeの左側ツリーの「実行可能ファイル」内の対象ファイルを選択してから右クリックして「情報を見る」ー「引数」です。

ここに「起動時に渡される引数」を設定できます。追加した引数毎にチェックボックスが付いていてON・OFFで有効・無効を指定できるので結構便利です。

NSLogを使って引数リストを出力してみます。

NSProcessInfo * processInfo = [NSProcessInfo processInfo];
NSLog(@”arguments=%@”, [processInfo arguments]);

出力結果は以下のとおり。(「実行」ー「コンソール」の出力)

2011-06-02 00:58:19.541 Args[34204:a0f] arguments=(
“/Users/foo/Documents/Args/build/Debug/Args.app/Contents/MacOS/Args”,
“-d”,
“/tmp”,
“-d”,
“/tmp”,
“-d /tmp”
)

設定画面でチェックボックスを付けた引数文字列を空白デリミタで単純連結して実行しているようです。設定画面の3番目の -d /tmp はそれぞれ別の引数として解釈されています。空白を含めたい場合は5番目の”-d /tmp”のようにダブルクォーテーションで括ればいいみたいです。このあたりはUnixそのままですね。ABCという引数はチェックボックスがOFFなので引数として渡されません。

引数の設定画面では各引数の編集ができるほか、ドラッグすれば順番の入れ替えもできますのでテストする上でかなり便利に使えると思います。

5月 27

echoコマンドはオプションなしだと指定文字列に改行を付けて表示します。-nオプションを付けると改行を出力しなくなります。odコマンドでダンプ出力してみるとよくわかります。

$ echo ABC | od -t x1
0000000 41 42 43 0a
0000004
$ echo -n ABC | od -t x1
0000000 41 42 43
0000003

ところがMacの場合、シェルスクリプト内で echo -n を使うと -n 部分を文字列として出力してしまい、かつ、改行を付けてしまいます。

$ cat echoABC1.sh ←内容表示
#!/bin/sh
echo -n ABC
$ sh echoABC1.sh ←実行
-n ABC

なんでこうなるか詳しく調べてませんが、どうもシェルスクリプトでechoとするとシェルの内部コマンドのechoを呼び出してしまいそのechoは改行抑制オプションがないっぽいです。なので、外部コマンドの/bin/echoを絶対パス指定で実行すればこの問題を回避できます。

$ cat echoABC2.sh ←内容表示
#!/bin/sh
/bin/echo -n ABC
$ sh echoABC1.sh ←実行
ABC

LinuxとかFreeBSDだとシェルスクリプト内での echo -n が有効なので、そうなっているシェルスクリプトをそのままMacに持ってきて使おうとするとハマるかもしれませんね。MD5ハッシュ取ったりBase64エンコードしたりするとき改行が邪魔になるので-nオプションは結構使うんですよね。気をつけましょう。

5月 03

MacBookPro(13inch 2009 mid)のHDD交換ではHDDのアダプタを外すためにトルクスドライバーが必要になります。

今回使ったのは、ベッセル(VESSEL) パワーグリップ トルクスドライバー T6 No.B-5400TX です。

重要なのはT6の部分。これはネジ頭部星形穴の大きさのことで今回の作業ではT6じゃないとダメでした。T7とかT8とかだと星形穴に入りません。一応下にamazonリンク張っておきます。

2月 16

先日のMacBookPro HDD 交換の続き。注文したHDD(HGST, HTS725050A9A364, 500GB)が届いたので早速交換してみる。動いた!スリープ後の復帰でもフリーズしない。よしよし。システムプロファイラの確立リンク速度は3ギガビットになってる。(標準HDDだと1.5ギガビット)いろいろ試したけど問題はなさそう。やっぱり性能が上がってる分標準HDD搭載時よりもきびきび動いているかも。でも気のせいかもしれない。しばらくこの状態で使ってみて問題があれば報告します。

2月 15

Windowsで使っていた320GB HDD(WD3200BEVT)が余ったのでMacBookPro標準の160GBと交換してみました。が、スリープからの復帰時にレインボーカーソルになったまま応答がない。特定アプリケーションではなくOS全体でそうなる。HDDアクセスの応答待ちでブロックされてフリーズしてるような感じ。強制再起動(command+ctrl+power switch)するしかありませんでした。
ちなみにMacBookProは2009 mid 13インチの一番安いモデル。EFIファームウェアは最新の1.7なのでAppleがサポートしませんといっているバージョンですね。(泣)
apple.comのユーザフォーラムで同じ構成でのフリーズ報告を見つけましたが原因&対策がよくわからん。非公式ファームウェア入れれば問題は発生しないという情報もあるけど…
時間作って違うHDDで試してみようと思います。しくしく。

preload preload preload