Month of 6月, 2009

boost::gregorian::dateの月(数値)の取得

boost::gregorian::dateでdateObj.month()すると、NovとかDecとかが返ってくる。dateObj.month().as_number()がデフォルトのほうが僕はいいと思う。月を取得して文字列が返るのは直感的では内容に思うのですが。いや、ハマったから言うのじゃありません... 

それにしても、boost::gregorianは重いですね。Regexなんかと併用するとプリコンパイルのメモリが足りないとか言って(VS2008)きて/zmするハメになります。こうなると大抵Intellisenseが壊れるのでまあ、今回のようにヘッダを読む羽目になるわけです。windowsアプリの場合、無理して使わないようにしようかと思います。

iPhone 3G3買いました

in

とりあえず、落としたりするのが怖いのでこれを注文した。ぱっぱり、ストラップがないのはなんとなく不安だけど、それがアップルのデザインポリシーなんだろうな。尊重したいと想ったけれど、ちょっと無理でした。

SHIELD iPhone 3G用シェルカバー アイボリーブラック
SHIELD iPhone 3G用シェルカバー アイボリーブラック
SHIELD
売り上げランキング : 23957

Amazonで詳しく見る by G-Tools

さぁ、これでどんな風に遊ぼうかなぁ。

鏡の国では不思議がたくさん

comp.lang.objective-cのConfusion with NSMutableStringのトピックに面白い(表現の)トピックがありました。お題は、以下のコードで、

NSString* path = @"~";
path = [path stringByExpandingTiledInPath];

pathが変更できるのは変じゃない?というものなのですが、それに対して

You haven't understood "Through the Looking Glass" :-)

というリプライがあって何か特別な慣用句なのかショボイ英語力の僕には知れませんが、言い得て妙な表現です。英語圏の人にはこれで「あっ!」って感じで腑に落ちるんでしょうかね。

そういえば、Objctive-Cを始めた頃、こんなコードを書いてしまったことがありましたがこれもhaven't understood "Through the Looking Glass"ですね。

Foo* foo = [Foo alloc];
[foo init];

チェシャ猫は何も言ってくれませんでした(*_*)。鏡の国は、不思議の国...です。

for_eachでメンバ関数を使う時の復習的自分メモ

in

for_eachでFuncにメンバ関数を指定するっていうお題はbins1st、mem_fun/mem_fun_refを使えってことになるのですがそれ以外にも落とし穴があります。なかなかまとめて説明しているものが見つからなかったので自分自身のおさらいを兼ねて...

MBTI性格テスト

in

影響されて、MBTIテストというのをお遊びでやってみた。

結果は、ご覧の通り。いいだか、わるいんだか。プログラマには向いているみたいです。一応、二度やってみましたがほぼ同じです。

ご覧の通り、直感力を鍛えねば....達人にはほどお遠い。

『プロダクティブプログラマ』あるいは化石プログラマの行く末

前半戦は読み物としてお気軽に楽しく読めたけど、後半は硬派で、

ソフトウェアの複雑化により技術者は急速に専門化に向かっています。専門化にはアプリケーションの種類別の専門化とプラット-フォーム別の専門化があります。専門化の進む「すばらしい新世界」に対応するためには、多言語プログラミングやドメイン特化言語を取り入れていくべきです。そうしなくては今後多く発生する新たな問題の解決は難しくなるはずです。今後5年の間に、ソフトウェア開発の様相は、今日とは全く違ったものに変わるに違いありません。

のくだりにはちょっとビビってます。

NSRuleEditorのローカライズ(その2)

前回のエントリで書いたようにNSRurleEditorではルールを作成に際してDelegateメソッドを通じて細かい制御をおこなうことができます。必須のDelegeteメソッドは3つ、

  1. ruleEditor:numberOfChildrenForCriterion:withRowType:
  2. ruleEditor:child:forCriterion:withRowType:
  3. ruleEditor:displayValueForCriterion:inRow:

NSRuleEditorのaddRowメソッド呼び出しのタイミングで左辺・述部・右辺についてそれぞれ呼び出されます。今回のサンプルで言えば初回時(ルート)では price/color/sizeの3つの選択肢があるので返す数は3。NSRuleEditorではこの数に基づいて、ruleEditor:child:forCriterion:withRowType:メソッドが3回呼び出します。このメソッドでは左辺3つの情報をNSDictionary形式にパックして返します。パラメータchild:(NSInteger)indexで表示位置を指定してきますのでindex(0)でpriceの情報を、index(1)でcolorの情報・index(2)でsizeの情報を返します。

NSRuleEditorのローカライズ(その1)

数日の間、アップルのサンプルPredicateEditorSampleをベースにNSRredicateEditorに取り組んでいます。複雑なインタフェースを簡単に実装できるのはありがたいのですがローカライズには問題があります。まず、単純なローカライズですがLocalizable.stringでははうまく変換されません。Cocoabuilder/Getting localized NSPredicateEditorによれば、NSPredicateEditorではローカライズファイルを明示する必要があるようで、暗黙にLocaizable.stringを参照してはくれないみたいです。メインバンドルに任意のstringファイルを作成して

[predicateEditor setFormattingStringsFilename:@"predicate.strings"];

として教えてあげる必要があります。また、ポップアップにあたる部分の書式は"%[xxxx]@"というように書きます。