Blogs

error: 'io_user_reference_t' undeclared here (not in a function)

in

デバグ途中に突如現れた謎のエラー。

error: 'io_user_reference_t' undeclared here (not in a function)...(以下続く)

サードパーティのFrameworkをいくつかのバージョンで切り替えながらテストしていたらいつの間にかコンパイルできなくなっていました。調べてみると任意のパスにインストールしていたフレームワークのパス(FRAMEWORK_SEARCH_PATH)がどんどん追加されていくようでサーチパスがすごいことになっていました。フレームワークのバージョン毎のテストをする場合でも、ターゲットバージョンを素直に/Library/Frameworkにコピーするのが賢明かもしれません...

"行の読み込み"のそれぞれ2 やっぱり....

in

"行の読み込み"のそれぞれでCocoaでファイルの行単位での読み込みをするコードを晒してましたが(やっぱり)もっとスマートなのがありました。

NSArray* lines = [rdata componentsSeparatedByString:@"\n"];

そう、たった一行。変な位置計算なんか必要なし。なんで、気づかなかったのだろうか?

Mac::Growlでメール通知

Mac::Growlというモジュールがあったので勉強を兼ねて(とっても陳腐すぎる例題なんですが...へへ)新着メールを通知するスクリプトを作ってみました。未読メールのチェックはMail::IMAPClientモジュールを使って簡単にできます。

未だ遠い、perl使いへの道

in

perl勉強中です。昨日仕事でちょこっとした集計をする必要があってperlで書こう思いがんばったのですがわからず時間切れ。結局、awkで書いて間に合わせましたが、う〜ん。まだまだ遠い、perl使いへの道。

awk -v x=$1 -F: 'BEGIN{sum=0;}{a= substr($2,1,8);gsub(/¥//,"",a);\
  if(a+0>080701&&a+0<080731){b=substr($2,30,5);sum+=(b+0);}}END{print x "," sum;}' \
  /path/to/data/data.txt

書いたperlは、

vi(m)用のCocoaキーワードファイル

in

CocoaでGUI抜きのアプリケーション開発をすることが多くなってきたのでCocoa(Objective-C)のvi(m)用キーワードファイルを作成しました。元は、シンタックス用の定義ファイル(これはどこかからダウンロードしました。出自は失念しました。気前よく提供された方ごめんなさい)で今はperlの勉強中なのでperlでやりました。

cat ~/.vim/syntax/objc.vim | \
perl -wnl -e'if (m/^syn\s+keyword\s+/) {s/^syn\s+keyword\s+\w+\b//;
  foreach (split /\s/) {print if (!m/^$/);}}'>objc_keyword

作成したキーワードファイルを${HOME}/.vimrcに、

set complete+=k~/.vim/keyword/objc_keyword

としておけば、^N/^Pでキーワード補完ができるようになります。これでタイポも減って楽になります。ビルドも以前はXcodeに戻って
実行していたのですが、最近ようやくxcodebuildoコマンドの存在に気がつきました。

xcodebuild -configuration Debug

快適です。perlはもっとスマートに書けるようになりたいですね。空行を処理するとこなんか二度手間っぽくて嫌だけど、これで用が足りるのならこれ以上突っ込めない性格です。(^^ゞ

"行の読み込み"のそれぞれ

in

プログラムを作成するにあたって、ファイルからテキストを一行ずつ読み込んで処理をするっていうのは、HelloWorldの次にやることなんですが、Cocoa(Objctive-C)でこれをやろうとして結構面倒なことに気がつきました。Cocoaではいくつアプリケーションを作成しているのですが、これまで"テキストを一行ずつ読み込んで"処理をするという場面には出くわさなかったんですね。例えば、C++(STD)では

exiftoolはとっても楽ちん

デジカメの日付設定を丸々一年間違えてました。写真はiPhotoで管理していたのですが、いつも「最後の読み込み」で確認していたのでしばらく日付が間違っているのに気がつきませんでした。とりあえず、一括して日付を変更する方法を模索。perlでEXIFを扱うライブラリを探したところexiftoolを発見。やっぱありましたよ。

kqueueを試す

ファイルの書き込み監視をする要件がでてきたので以前から気になっていたkqueueを試してみました。このあたりはBSD*なOSXの強みですね。

manしてみればわかるのですがインタフェースは

HotKeyでコンテクストメニュー(もうまくいかない)

in

昨日もあれやこれやいじくり回してみたがダメだった。やっているうちに、メニューを開く(展開する)というよりやっぱりコンテクストメニューの方がいいのじゃないかと思って切り替えてみたのだがマウス位置にメニューが表示されない。(表示はするけれど、常にデスクトップ左下隅に表示されます。)

NSEvent* e =
   [NSEvent mouseEventWithType:NSLeftMouseDown location:[NSEvent mouseLocation] 
     modifierFlags:NSControlKeyMask timestamp:nil windowNumber:nil context:nil 
     eventNumber:nil clickCount:1 pressure:nil];
[NSMenu popUpContextMenu:[NSApp mainMenu] withEvent:e forView:nil];

左下隅の原点に表示されるということは、NSEventの中のmouseLocationが正しくないのだと思うのですが...他にもwindowNumber:nil、forView:nilも怪しいのだけれどそもそもwindowもviewも持たないアプリだから指定のしようがないです。

コンテクストメニューについては割と情報があるのだが、ほとんどのサンプルはmouseDown:とかからのサンプルで自前でNSEventを作成している例はなかなかないですね。自分が最初の例になれれば良かったのですが、まだダメみたい。

中途半端に表示されたメニュー

in

今日一日粘ったのだが未だ解決できず。やりたいことは、Spotlightのように通常はウィンドウを持たずメニューバーにアイコンだけ表示していてホットキーを押されたときだけメニューを開くという動作なんです。

コンテンツの配信


Apple Store(Japan)