目次
- 2010/05/26 - 毎回、コンソールを探しまわっています。- デバッガコンソール - xcode
- 2010/05/26 - xcodeプロジェクトのテンプレートを用意する
- 2010/05/26 - eclipseのパッケージエクスプローラーからターミナルを起動 - osxです。
- 2010/05/24 - elicpse内からxcodeprojを起動する(たいしたものではないです)
- 2010/05/24 - [アイデア]Eclipseで作成したプロジェクトの配下にXcodeのプロジェクトを配置する。
- 2010/05/22 - ジオコード知っているのならgetLatLngを使うより、直接GLatLngをつくって使ったほうがよいかも。- google map api
- 2010/05/22 - クラッシュクラッシュクラッシュ レイヤーからアニメショーンをとりのぞけ - MKMapViewがらみ
- 2010/05/15 - [はしり書き]MKMapViewのアノテーションのピン画像を変更
- 2010/05/09 - 360を1〜10で割ってみる
毎回、コンソールを探しまわっています。- デバッガコンソール - xcode 2010/05/26
xcodeプロジェクトのテンプレートを用意する
2010/05/26
xcodeです。
参考リンクだけおいてもよかったけど、僕にとって今後重要そうなtipsなのでメモしておきます。
基本方針としてiphone,ipod,ipadの開発にはIB(InterfaceBuilder)使わないことにしたので、Xcodeのプロジェクトのテンプレートをxibなしにして用意していきます。
上記のサイトを参考(すごくまとまってます.gitignoreまで用意してます!!)
で、Xcodeは新規プロジェクトを作成する際のテンプレートを用意してくれてます。それをカスタマイズして追加していきます。
Window-based Applicationをターゲットにして作業していきます。
まず、テンプレートの位置
中身はこんな感じ
これらがテンプレートプロジェクトになります。
$ ls
TemplateChooser.plist
Window-based Universal Application
Window-based Universal Core Data Application
Window-based iPad Application
Window-based iPad Core Data Application
Window-based iPhone Application
Window-based iPhone Core Data Application
Window-based-non-IB-iPhone Application
色がついたところは僕が追加しました。
(1)
「Window-based iPhone Application」をコピーして、「Window-based-non-IB-iPhone Application」を作成
「Window-based-non-IB-iPhone Application」にあるファイルをひとつづ編集していきます。
(2)
「main.m」のUIApplicationMainの4番目の引数を@"___PROJECTNAME___AppDelegate"にします。
(3)
「___PROJECTNAMEASIDENTIFIER___-Info.plist」
xib使ってる項目を削除
<key>NSMainNibFile</key>
<string>MainWindow</string>
(4)
MainWindow.xibファイルをばっさり削除
(5)次が面倒だけど、___PROJECTNAME___.xcodeprojの中にあるproject.pbxprojファイルの中から、MainWindow.xibと記述されている行を削除していきます。結構あります....
(6)最後に、/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/Application/Window-based Application直下にあるTemplateChooser.plistを編集します。
ここに追加されてはじめてXcodeはテンプレートを選択肢にあげてくれます。
TemplateChooser.plistをみると追加するところはすぐにわかります。
で、結果どうなるかといいますと、
新規プロジェクトでテンプレートを選択できます。

今後は、ボタンをのっけたテンプレートを用意したりして、トライアンドエラーを繰り返せる環境を用意しようかなと。
何度も同じ作業しないためにも!!テンプレート重要!!
ほんと、反省してるのは、現在進行中のプロジェクト上で、プログラミング検証用のコードとか、振る舞いをコードをいろいろ書いてコメントアウトしたりしてトライアンドエラーしてること。
お試し用のプロジェクトと本番プロジェクトをきっちりわけておきたいところ。
eclipseのパッケージエクスプローラーからターミナルを起動 - osxです。
2010/05/26
mac osxです。
eclipseを使っていて、いま開いている位置でターミナルを開きたいなということ思うことがしばしばしばしあります。
で、そういうときどうするかなーと考えていて、以下の方法でやってみました。
terminal.commandをプロジェクト内に追加します。
実行するときはsystem editorにしておきます。これでダブルクリックで起動します。
あと、面倒ですが、別のターミナルを開いて
chmod 755 terminal.command
上記を実行します。これが面倒です。
terminal.commandの内容は下記です。
#/bin/sh
#echo $0
base=`dirname $0`
cd $base
bash
なんとなく,
いいような気がします。どうでしょうかね。
bashってシェルを実行しているだけなのでなんかひねりもないですね。
>_<!
elicpse内からxcodeprojを起動する(たいしたものではないです)
2010/05/24
Eclipse内にxcodeのプロジェクトを配置してみるとフォルダとして認識されてしまってダブルクリックで起動しなかった...
ので、xxx.commandを作成してそこから起動することにしてみました。
ちなみに、osxではxxx.commandというファイルを作成するとターミナルから実行できるようになります。
#/bin/sh
#echo $0
base=`dirname $0`
echo $base
open $base/xxxxx.xcodeproj
sleep 5
[アイデア]Eclipseで作成したプロジェクトの配下にXcodeのプロジェクトを配置する。
2010/05/24
ブラウザとメーラと同じぐらいずーと立ち上げぱっなしなのはeclipseです。
で、xcodeのプロジェクトをどうバージョン管理していこうかと悩んでいて、アイデアとして、どうせならeclipseで何でもかんでも管理しようという乱暴な結論にいたりました。
僕の場合、スクリプトを書くより先にeclipseでJavaをRunさせてしまうのと、osxのファインダーより、eclipseのパッケージエクスプローラーの振る舞いに慣れてること、subversionとかeclipseのプラグインにも慣れている。gitもプラグインとしてあるわけですし。
まあ、アイデアどまりかもしれませんが、ちょっといろいろ試してみよう。
ジオコード知っているのならgetLatLngを使うより、直接GLatLngをつくって使ったほうがよいかも。- google map api
2010/05/22
グーグルさんのMap APIです。
GClientGeocoderには、getLatLng(address:String, callback:function) というメソッドがあってそれを使用していました。
でaddressに、例)「35.7524424,139.8022971」とかいうデータを渡して使っていました。
で、この結果で得られる、GLatLngがのlat.lngが僕が期待している値と違う場合がありました。
冷静に考えれば、ジオコードわかってるのなら、検索かけて作る必要がないわけで....
結論ですが、ジオコードがわかってるなら、getLatLngを使わず、直接、GLatLngを作成して、GMarkerを使うべしというわけです。
反省してます。。。
var point = new GLatLng(ss[0], ss[1]);
var marker = new GMarker(point);
クラッシュクラッシュクラッシュ レイヤーからアニメショーンをとりのぞけ - MKMapViewがらみ
2010/05/22
自分自身でおきている問題が100%そうなのかというとまったくもって自信はないが、クラッシュしずらくなった感じがするので、メモります。
ことのはじまりは、
どうも、
プログラマメモ2: [はしり書き]MKMapViewのアノテーションのピン画像を変更
このあとから、シュミレータで突然おちることがおおくて、まれに実機でもおちるようになりました。
半分あきらめかけていたのですが、上記の記事でなるほどと思い、まず、ユーザーロケーションを使わなくしたら落ちなくなりました。
mapView.showsUserLocation = NO;
ようはアニメーションしている間に、画面オブジェクトが破棄されようとすると起きる事象のようですね。
で、ユーザロケーションをしめす動作でいろいろアニメーションしているから、問題がおきるというわけ。
(※この辺は、どう実験していいのかわかってないので僕自身100%保証できないけど)
この件に関しての具体的な解決方法は、下記のページを参考にしました。
ベストな解決方法は、
viewWillDisappearでmapViewのレイヤーアニメーションをとりのぞくということを行う。
アニメーションを使う際の、必須コードなのかもしれない...
コードは、
- (void)viewWillDisappear:(BOOL)animated {
[mapView.layer removeAllAnimations];
}
そういえば先月,
Core Animationの本買ったんだった自分
Orz...
追記:改善できたと思ったけど、なんかだめ....
どうしてだろう、とりあえずこんなコードをためしてみてます。
- (void)viewWillDisappear:(BOOL)animated {
mapView.showsUserLocation=NO;
[mapView.layer removeAllAnimations];
}
なんかもうだめだ...
追記:ではこれでどうだろう。delegateしているので、
- (void)viewWillDisappear:(BOOL)animated {
mapView.showsUserLocation=NO;
mapView.delegate=nil;
[mapView.layer removeAllAnimations];
}
参考
さあ、どうだ、これでどうだ
Orz...
[はしり書き]MKMapViewのアノテーションのピン画像を変更
2010/05/15
2010/05/15
はしり書きメモです。
iphoneです。MKMapViewのアノテーションのピンをオリジナル画像に変更してみます。
なんかこみいっててよく理解しきれていないのですが。
まずはインターフェイスから。デリゲートを使います。
@interface MapViewController : UIViewController<MKMapViewDelegate> {
MKMapView* mapView;
}
で、実装部分で、MKMapViewを生成するときに、デリゲートで自分自身を渡して、
// delegate
mapView.delegate = self;
で、addAnnotationするときに、実際のところviewForAnnotationがよばれてMKAnnotationViewが返される(返す)。
で、viewForAnnotationを実装してあげます。
ここで、いろいろ切り分けて画像を指定できる感じかな。
実装部分はここを参考
[iPhone] MapKit にアイコン画像でピンを立ててタップ可能にする | Sun Limited Mt.
-(MKAnnotationView*)mapView:(MKMapView*)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
MKAnnotationView *annotationView;
NSString* identifier = @"Pin";
annotationView = (MKAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if(nil == annotationView) {
annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier] autorelease];
}
annotationView.image = [UIImage imageNamed:@"my_pin.png"];
annotationView.canShowCallout = YES;
annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
annotationView.annotation = annotation;
return annotationView;
}
うーん、いまいちこれでいいのか不安になってきた...
<ため息>
コードはなんとなくできたのだけども、問題は自分でつくった画像がマップとそぐわない。
デフォルトのピンの画像みるとしっかり影もハイライトもついている。。。。
</ため息>
参考
iPhone - Annotation image disappears on touch - Stack Overflow
iPhoneのGPSとMapKitを使った地図を連動させる方法 - iPhoneSDK他いろいろ 開発メモ
iPhone Mapkitの使い方
360を1〜10で割ってみる
2010/05/09
先日買った関数電卓の使い方の本で知ったのですが、角度の単位には
グラード (単位) - Wikipedia
というのがあるそうです。
360°は400グラードだそうです。
で、360度は割やすいということを知りました。
三分の一ですと120度ですが、グラードですと、きっちり割れません...
ちなみに、円の角度360度は、1〜10で割ると割ることができないのは7だけです。
public class Test_360wowaru {
public static void main(String[] args) {
a();
}
static void a() {
final int i360 = 360;
for(int i=1;i<=10;i++){
System.out.printf("%d を %d で 割って余が %d %n", i360, i, (i360 % i));
}
}
}
360 を 1 で 割って余が 0
360 を 2 で 割って余が 0
360 を 3 で 割って余が 0
360 を 4 で 割って余が 0
360 を 5 で 割って余が 0
360 を 6 で 割って余が 0
360 を 7 で 割って余が 3
360 を 8 で 割って余が 0
360 を 9 で 割って余が 0
360 を 10 で 割って余が 0
