月別アーカイブ: 2014年5月

Git移行自分備忘録-1

今までSubversion使っていて、
一人開発でドミノストッパー程度にしか使ってないのでそれで十分なんだけど、
SubversionをWeb経由で閲覧するTracが超絶クソ重いという理由で移行を決意。
Mac用のイカしたクライアントアプリがないというのもある。svnXで十分っちゃ十分なんだけど。
あとGitHubともうまくやれるようになりたいというのもある。

あのTracの超絶クソ重さはSubversionとPythonは使えないやつだと思わせるに十分だ。
とばっちりなんだろうけど。
まあPythonはあのインデントの扱いが宗教上の理由で受け入れられないのでアレ

で、gitのMac用のクライアントアプリは SourceTree がいいらしい。
MacAppStore上のは更新されてなくてバージョンが古いので開発元から直接DL。

続く

UIActivityViewControllerで画像を投げる時にUIImageだとExif情報が欠落する

画像ファイルからUIImageを作ってUIActivityViewControllerに渡すとファイルのExif情報が欠落する。

画像ファイルからNSDataを作ってUIActivityViewControllerに渡すとファイルのExif情報もそのまま渡る。NSDataでもちゃんと画像として認識してくれる。

floatだったりdoubleだったりするCGFloatの定数をどう書くか問題

いや全然問題ってほどじゃないんだけど。

CGFloatは今まではfloatだったので、例えば

みたく何気なく数値に ‘f’ を付けて単精度浮動小数点リテラルにしてたのですが。

これが64bitのarm64バイナリ向けのビルドではCGFloatがdoubleになった。
armv7/armv7s/arm64 の3バイナリをファットバイナリにぶっこむ現状ではCGFloatがfloatだったりdoubleだったりする。なので f を付けるとarm64用コンパイルでdoubleに単精度リテラルを渡すことになり、かといって f を外すとarmv7(s)用コンパイルでfloatに倍精度リテラルを渡すことになってしまう。

さて、ではどうするか。

・そんなとこ気にしても仕方ない。気にしない。すでにfを付けてしまってるものは放っておく。
・今後時間が経つにつれ32bit端末はどんどん減っていくので、今後書くコードについてはCGFloatの定数に f を付けるのをやめる

落としどころはこんなところだろうか。

しかし。しかしである。
doubleに単精度リテラルを代入したりfloatに倍精度リテラルを代入したりするのは気に喰わーーーんヽ(`Д´)ノ!!!!という人もいるであろう。いませんか? いますよね。 ぼくだけじゃないですよね。。。。

というワケで、C++11の中で「あってもなくてもどうでもいい新機能選手権」で必ず上位に入賞する「ユーザー定義リテラル」を使った解決を試みる。

どっかのヘッダにこれを書いておくと、 1.0_cgf とか 320.0_cgf って記述するとこれがCGFloatリテラルになる。
つまり、32bitバイナリの時はfloatのCGFloatリテラルに、64bitバイナリの時はdoubleのCGFloatリテラルになる。

ブラボー!

ただし、 1.0_cgf って記法はなんなのよ。アンダースコア気に喰わねー! ユーザー定義リテラル要らねー! っていう意見はごもっともである。
あとC++11 を有効にするために .m ファイルを .mm ファイルにしなきゃいけない。

まあなんというか、こんなことしても実行速度とかこれっぽっちも改善しないだろうし自己満足にしかならんのは判ってます。はい。