2012-01-17

xcode4のcoredataでone-to-manyを設定する方法

relationshipのinspectorがどこででてくるか全くわからなかったので
メモ。

1. add new fileでデータモデルを選んで、Hogehoge.xcdatamodeldを追加
2. xcdatamodeldを選択すると、Core Data Model Editorが右ペインに表示される
3. Entityを追加する。CategoryはSubCategoryを複数持ち、SubCategoryは1つのCategoryを持つとする
3-1 EntityにCategoryを追加。
3-2 EntityにSubCategoryを追加。

3-3 CategoryのEntityに、relationshipでsubcategoriesを追加
このとき、
View→Utilities→Show Data Model Inspectorを選べば、
one-to-manyが選べるペインが右に表示される
Name:subcategories
Destination : SubCategory
OptionalとTo-Many Relationshipにチェックをつける
(Inverseはそのまま)

3-4 SubCategoryにrelationshipでcategoryを追加
同様にrelationshipを選んだ状態で、Data Model Inspectorを表示。
Name : category
Destination : Category
Inverse : subcategories

チャート図でみたときに
CategoryとSubCategoryが1つの線で結ばれ、
Category <------->> SubCategory
と SubCategory側に>>がついていれば正しい状態

2012-01-06

nginxのdebパッケージをカスタマイズする

ubuntu 11.10 serverでnginxのtcp_proxy_moduleを使用したかったのでdebファイルを生成するための記録

1 create working directory
$ mkdir -p src/deb
$ cd src/deb

2 install source packages
$ apt-get source nginx-full

3 install build packages and other dependency packages
$ sudo apt-get install devscripts
$ sudo apt-get build-dep nginx-full

4 download tcp_proxy_module
$ cd nginx-1.0.5/debian/modules
$ git clone https://github.com/yaoweibin/nginx_tcp_proxy_module.git

5 apply patch tcp.patch
$ cd ../../
$ pwd
/home/ry/src/deb/nginx-1.0.5
$ patch -p1 < debian/modules/nginx_tcp_proxy_module/tcp.patch

6 edit changelog
$ cd ../../
$ debchange -i
(add your change log)

7 edit debian/rules
$ vi debian/rules
--add-module=$(MODULESDIR)/nginx_tcp_proxy_module \

8 build package!
$ pwd
/home/ry/src/deb/nginx-1.0.5
$ debuild -us -uc

wait

9 install new deb
$ cd ../
$ ls nginx*.deb
nginx_1.0.5-1ry_all.deb (and other packages)
$ sudo dpkg -i nginx_1.0.5-1ry_all.deb





2011-11-22

iOSシミュレータでの画像保存

Titanium Mobile (1.7.5)経由で Ti.Media.saveToPhotoGalleryを実行するとエラーがかえってくる(errorのcallbackハンドラがよばれる)
内部で結局はUIImageWriteToSavedPhotosAlbumが呼ばれる。
よくよく調べてみると、
シミュレータ上で写真機能を一度は実行しておかないと保存用のディレクトリが作成されないらしく、そのせいでエラーになる。
(Safariの横の写真アプリをクリックすればおk)

やられたわ。

2011-11-21

Titanium Mobile (1.7.5)のtableviewsection - iOS

Titanium Mobile (1.7.5)のtableviewsection

ボタンを押すなどのイベント時に、tableview上のあるセクションのすべての行の値を取得する必要があったので、APIを見たところ、rowに対するアクセサがない。
(あるのはrowCountという件数取得のみ)

しかしながら、githubにあるソース(TiUITableViewSectionProxy.h)を見るとしっかり、rowsがプロパティとして宣言されている。

var row = aTableviewSection.rows[i];

とやったら、取得できた。APIへの記載漏れなのかな。


2011-11-15

Titanium Mobile(1.7.5)でのcookie - iOS

Titanium Mobileでcookieについてのメモ書き(for iOS)

・SDK 1.7.5での挙動。
・サーバから発行されたcookieはURL(のホスト部)をキーにNSHTTPCookieStorageに保存される。
・このcookieを消したい場合、xhr.clearCookies("http://foo.bar.jp/");とやれば消せる
・clearCookiesメソッドは今のところAPIリファレンスには載っていない。
・有効なcookieがNSHTTPCookieStorageにある場合、自動でリクエストに付与される(未確認)
・そのため、「有効なcookieがリクエストにある場合、cookie発行しねーよ」というサーバだった場合、this.getResponseHeader('Set-Cookie');は2回目以降nullになる可能性がある。

2011-10-30

Unity3Dで作ったゲームにAdMobを表示する方法(iOS編)

忘れないうちにメモ書き

現時点ではAdmobSDKの仕様上、ViewControllerが必要になるので、
UnityでbuildしたxcodeプロジェクトのAppController.mmにコードを追加する。

Step1
-(void)registerAdmobなどとして、admobの表示ロジックをメソッドとして追加する

Step2
applicationDidFinishLaunchingの最後に、Step1で作ったメソッドをdelayさせて呼び出す。


以下はlandscapeLeft固定で右上に320x50のバナーを表示する場合。 以下をapplicationDidFinishLaunchingメソッドの最後に追加。
[self performSelector:@selector(registerAdmob) withObject:nil afterDelay:0.4];

2011-10-29

個人でのUnity3Dについて

Unity3D でiOS/Android向けゲームをリリースできたのでまとめ

将来どうかわっているかわからないが、現時点での所感。

・Unity3D自体は本当にすばらしい。
・モバイル向けにはライセンスが必要だが、400$は安いと思う。
・行列の演算が必要になってくるが、数学が好きなら苦にならない。
・サンプルなどでだいたいパターンが見えてくるので、3D空間の計算方法がわかるようになる。
・OpenGLかける人はすらすらできると思う。
・MonoでC#を書く時間より、Blenderで3Dモデルを作る時間のほうが長かった。
・リアルタイムのLightの計算がコストが高い。(ので、mobile/Unlitを使った)
・Lightmappingもパフォーマンスに有効。
・実機に転送して、FPSを表示させながらやると捗る
・ワンソースでiOS/Androidへビルドできるが、Switch Platformすると、コンバートがかかるので、これが結構長い。アセットが増えてきた後半は特に。
・最初は1つのプラットフォームで開発し、できてからswitchしたほうが効率はいいと思う。
・3Dモデリングとそれに正しくテクスチャを貼れる人は神だと思う。
・容量を気にしないで作ったら、20MBを余裕で超えたので、次回への反省材料