2010年1月30日土曜日

cocoa: ファイルの読み書き

Cocoa framework ではファイルから 1 行ずつ読み込むような API は存在しないようだ。 まあ自分で作ればいいんだけど、文字コードとか改行文字の違いとか、めんどう。

メモリは無駄になるけど、NSString stringWithContentsOfFile: 全部読み込み込んで、 lineRangeForRange: と substringWithRange: で 1 行ずつパースするのがよさそう (参考)。今どき数MB なんて気にしない方がいいのかな。

やっぱりテキストを扱うときは Python とかの方が楽。

2010年1月27日水曜日

cocoa: ファイルパスの操作

String Representations of File Paths にまとまっている。

やりたかったのはホームディレクトリの参照:

NSString *path = [@"~/Documents/sample.txt"];

=> path is "/Users/your-name/Documents/sample.txt"

misc: 静的解析ツール

オープンソースなツールでもいろいろあるのね: wikipedia:静的コード解析 やっぱり C/C++ が多い。みんな苦労してるのだろうか。

2010年1月24日日曜日

mac: Quicksilver プラグイン初めの一歩

ようやくプラグインがビルドできるところまでいった。 忘れないうちにメモ。

  • svn checkout http://blacktree-alchemy.googlecode.com/svn/tags/B54 quicksilver-b54
  • cd quicksilver-b54/Quicksilver
  • unzip Quicksilver.xcodeproj.zip (パスワードは archaic)
  • ln -s /path/to/quicksilver-b54/Quicksilver /Developer/Apps/Quicksilver
  • open Quicksilver.xcodeproj
  • ビルド
  • いくつか失敗したけど、Framework(QSCore, QSFoundation) ができたので OK

で、Quicksilverプラグインのつくりかた に戻って、 フレームワークのパスを /path/to/quicksilver-b54/Quicksilver/build/Debug にする。環境によっては Debug じゃなくて Release かも。後はつくりかたの通り。

今日はこんなもんかな。結局準備しただけで終わってしまった。

mac: Quicksilver のプラグイン作成でハマる

http://blog.deadbeaf.org/2007/12/15/howto-write-quicksilver-plugin-ja/ を見て Quicksilver のプラグインを作りはじめたものの、ハマりまくってなかなか 進まない。

まず Quicksilver Develop版 (http://getqs.com/dev/) が存在しない。

やれやれと思って、ソースコードをビルドしてみたものの、失敗。

  • 材料: http://code.google.com/p/blacktree-alchemy/source/browse/#svn/branches/B5X
  • /Developer/Apps/Quicksilver にコードツリーを置いてやらないとビルドが進まない
  • QS_SOURCE_ROOT はちゃんと書き換えてるんだけどなぁ。まあいいや
  • ビルドが進むと NSWindowDelegate なんて知らねーよってエラーメッセージが。
  • はて? ちゃんと import されてそうだが、と思ってコードをながめてたら...
  • NSWindowDelegate って Snow Leopard からの API なのね (reference)
  • 家 Mac は今だに Leopard。

なんかしょぼい (自分が、です)。つまるところ、

  • branches/B5X の head は 10.6 でないと build できなさげ
  • tags/B54 はタイムスタンプ的に 10.5 で build できそう

であると。後者を試してみよう。

2010年1月20日水曜日

misc: Bing へのサイトの登録

Bing へのサイトの登録は http://www.bing.com/webmaster/SubmitSitePage.aspx から。

操作は CAPTCHA と URL の入力のみ。 URL の登録しかできない分、 Google Web Master Tool や Yahoo Site Explorer のように認証が必要なく、 操作が簡単。

2010年1月12日火曜日

mac: Norton AntiVirus 11 for Mac で Live Update に失敗する

Snow Leopard にしてから Live Update が成功しない。 次のようなエラーダイアログが表示される:

マイクロ定義エラー
LiveUpdate had an error updating the irus definitions.

an error を教えて欲しいところだけど、不審なログにも特になくお手上げ。

http://service1.symantec.com/SUPPORT/num.nsf/docid/19986514459 から Virus definitions をダウンロード & 手動インストールでとりあえずしのぐことに。 ああ、めんどくさ。

2010年1月10日日曜日

mac: launchd で anacron っぽいことをする

anacron では指定した時刻に電源が落ちていた場合でも 次に起動した時にスクリプトが実行される (cron では指定時刻に電源が入っていないと、そのイベントはスキップされてしまう)。 よくサスペンドしておくノートPCでは便利で、anacron 相当を launchd でやってみた。 といっても StartCalendarInterval で指定するだけ。

たとえば毎日 2:50 に ~/script/test.sh を実行する:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd" >
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.example</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/zakkie/script/test.sh</string>
    </array>

    <!-- 起動条件 -->
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>2</integer>
        <key>Minute</key>
        <integer>50</integer>
    </dict>
</dict>
</plist>

Hour, Minute の他に Day, Weekday, Month を指定可能。

これを ~/Library/LaunchAgents/example.plist として保存する。 反映は launchctl load ~/Library/LaunchAgents/example.plist 。 次回ログイン時は自動的にロードされる。

設定ファイルの置き場所は 3 種類。

~/Library/LaunchAgents
ユーザ毎の設定
/Library/LaunchAgents
全てのユーザに共通で適用される。
/System/Library/LaunchAgents
Mac OSX によって適用される。この下のファイルはいじらない方がよさそう。

また、起動条件は複数指定可能で、例えば毎時 0 分と 30 分に起動するなら、:

<key>StartCalendarInterval</key>
<array>
<dict>
    <key>Minute</key>
    <integer>0</integer>
</dict>
<dict>
    <key>Minute</key>
    <integer>30</integer>
</dict>
</array>

となる。

ちなみにスキップされたイベントが複数あっても、起動後には 1 回だけ実行される。

2010年1月5日火曜日

mac: 年賀状

今年は Mac で年賀状を作ってみました。 といっても絵心はないので、いきおいツールに頼りきりです。

色々試してみて、次の組み合わせに落ち着きました。

宛名書きは住所録も管理できるツールを使うより、アドレスブック.app にためておいた方がいろいろ活用できそう (どこかに流すとか、そう意味ことではないですよ)。

はがきデザインキットは日本郵政 (名前違ったかな) が作成しているツールで、 いわば公式ツール。添付のイラストを使って、写真入れて、自分の住所書いて、と 機能は必要十分でした。