2013年12月4日水曜日

Google MapをObjective-Cで任意のViewに表示させる


画面いっぱいにGoogle Mapを表示させるのではなく、特定のViewに表示させたい場合。


Storyboardで UIView を作る。
 -> IBOutlet としてコードに追加。
 -> 以下のコードを実装(ViewController.m)。

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:38
                                                        longitude:135
                                                             zoom:4.5];
self.mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
_viewGoogleMap = self.mapView;

_viewGoogleMap は ViewController.h に IBOutlet として追加したもの。

このコードでは何も表示されない。


解決方法として、
Storyboardで UIView を作る。
 -> GMSMapView として IBOutlet で追加する。
 -> 以下のコードを実装(ViewController.m)。


GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:38
                                                        longitude:135
                                                             zoom:4.5];
[_viewGoogleMap setCamera:camera];



これでちゃんと表示される。

2013年8月23日金曜日

App Storeで購入できない


App Store で Mac OS X Mountain Lion を購入しようとした時の話。

購入するをクリックすると、Apple IDにサインインすることが求められ、IDとパスワードを入力。
ここまではよかったが、このあと

購入を完了できませんでした 詳細についてはiTunesサポートwww.apple.com/support/itunes/ww/へご連絡ください。」

というメッセージと、

「App Store でエラーが発生しました。時間を置いてもう一度お試しください。 (100)」

というメッセージが出て購入できない。


時間をおいてやってみてもダメ。
違うネットに接続してもダメ。
App Store をログアウトしてもダメ。
再起動してもダメ。


ということで、エラーメッセージの通り、サポートに連絡してみた。

すると、
・原因はよくわからない(一時的なものかも)
・カード情報などを更新して30分以内だとエラーがでるかも
・必要な対処をしたから再度やってみてほしい

ということだったので、再びやってみたらうまくいった。


というわけで、問題は解決したが、いまいちすっきりしない。
こちら側ではどうすることもできないエラーだったのか。。

ただ、サポートに問い合わせて翌日に調査するとの連絡があり、さらにその翌朝には対処してくれた。
かなり早い対応だと思う。


2013年7月9日火曜日

awkでの桁数調整


bash とか使ってて、0埋めして表示桁数を調整したい場合の話。

たとえば、月を表す時に 5 ではなく、05 と表示させたいとき
before=5
after=`echo $before | awk '{printf "%02d", $1}'`
echo $after

結果
05

となる。

Javaで拡張子の置換

Javaで文字列を変換する場合には、 String クラスの

・replaeAll (置換したい文字列, 置き換える文字列)
・replaceFirst(置換したい文字列, 置き換える文字列)

のどちらかを使う。
違いは、最初に一致した部分だけか、一致した全部置換するか。


文字列の置換で一番頻度が高いのは、拡張子を変更する場合だと思う。

たとえば、"abc.dat"を"abc.txt"に変更する場合。
このときは単純に
String before = "abc.dat";
String after = before.replaceFirst("dat", "txt");
もしくは
String after = before.replaceAll("dat", "txt");
で問題ない。
しかし、"abcdat.dat"を"abcdat.txt"に変えたい場合は、上の方法だと
前者は "abctxt.dat"
後者は "abctxt.txt"
になってしまう。

そこで、".dat"を".txt"で置換すればいいが、これらのメソッドでは "."(ドット)は「任意の文字」というワイルドカードを意味してしまうので、エスケープしなければならない。
String before = "abc.dat";
String after = before.replaceFirst("\\.dat", "\\.txt");
もしくは
String after = before.replaceAll("\\.dat", "\\.txt");


ちなみに、indexOf とかではワイルドカード扱いにならないのでエスケープはいらない。

2013年5月29日水曜日

gmtのマスターcptファイルのディレクトリ


makecptコマンドでカラースケールを作成する際に、拡張子".cpt"を付けずに指定すると、マスターのカラーテーブルが呼ばれる。

そのマスターのカラーテーブルがある場所
(gmt directory)/share/cpt

2013年2月22日金曜日

記号の入力


一般的には shift を使って記号を入力できるし、何の問題もない。
ただ、ごくまれに、フランス語キーボードを使っていたりして、配置が違ったり、記号が入力できない場合もある。

そんなときには、alt コードを使う。
例えば、
http://www.alt-codes.net/
を参照。

縦バー( | )の場合は、 alt + 124 だったり、アットサイン(@)の場合には、 alt + 64 だったり。

ちなみに、これを使うことで、ウムラウトやアクセント付きの文字も打てる。