2011年2月20日日曜日

仕事の面接に行ってきた。

真剣に入りたい会社だったのでログを残しておく。
受かっても受からなくても、ここが人生の転機になりそうな予感あり。

Moneyha 1.0.5を申請した

昨日の昼間に申請した。

金額にカンマが入るようにしただけ。

[request setReturnsObjectsAsFaults:NO]; を指定したら <fault>が消えた件

CoreData使っててログを出力したら <fault>って出て困った。
詳細はわかってないし、詳細も書かないですけど、出なくなったのでメモ残しとく。

NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
NSMutableArray *mutableFetchResults = [[[context executeFetchRequest:request error:&error] mutableCopy] autorelease];

executeFetchRequest:error: で取ってきた結果を NSLogで見てみると、dataの中身が<fault>になってる。実際は登録してあるtimeStampが入ってくるはずなのに。

"<NSManagedObject: 0x612da10> (entity: Event; id: 0x612ccc0 <x-coredata://61949995-D9C8-40AE-A339-D6C9FB160179/Event/p1> ; data: <fault>)"

調べてみると、

[request setReturnsObjectsAsFaults:NO];

を入れればいいと。入れてみた。データ取れてるの確認できた。

"<NSManagedObject: 0x6132890> (entity: Event; id: 0x6131ae0 <x-coredata://61949995-D9C8-40AE-A339-D6C9FB160179/Event/p1> ; data: {\n timeStamp = \"2011-02-19 12:54:27 +0000\";\n})"

2011年2月11日金曜日

sizeofは型のサイズを返す

だから、ポインター変数を指定した場合、ポインターの指している先に確保されているメモリサイズを返すのではなく、ポインターのサイズ(32bitCPUならたぶん4)が返る。

size_t sz = sizeof("abcdefghij"); // \nが含まれて 11

const char *p = "abcdefghij";
size_t sz = sizeof(p); // 型のサイズ 4

// 文字列の長さもとめるならstrlen
strlen("abcdefghij") // 10
strlen(p) // 10

座標からtableViewのindexPathってわかる?

わかる。


// 表示しているtableVIewの現状のオフセットを取得する。
// ・tableVIewのオフセットはスクロールさせると値が変わるよ。
CGPoint offset = self.myTableView.contentOffset;

// オフセットの位置からy軸に120ポイント下に座標を指定してみよう。
// ・この場合だと、見た目上(画面上)の(10, 120)の位置を常にCGPointで取得してるってこと。
CGPoint p = CGPointMake(10.0, 120.0 + offset.y);

// で、オフセット分を調整した座標(p)からindexPathが取得できるようになると。
NSIndexPath *indexPath = [self.myTableView indexPathForRowAtPoint:p];

NSLogPoint(offset);
NSLog(@"%d", indexPath.row);

[self setDetailView:indexPath];



ついでに、スクロールしたときのドラッグ感知やスクロール停止時の感知のデリゲートメソッド

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
[self hogel];
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
if (!decelerate) {
[self hoge];
}
}

2011年1月17日月曜日

Mac OSX10.6とHDDと復元と

MacBook(白)(late2006)のHDD換装作業。
確か今回で3度目の交換になる。
80GB > 160GB > 320GB > 750GB
現在、2.5インチで1TBのHDDも出てるけど厚さが合わないので使えない。
9.5mm厚のもので最大容量は750GB、これに換装する。

換装から復元までの今回の手順
1.320GBの内蔵HDDを750GBの新HDDに交換する
2.320GBのを外付けHDDケースに入れる
3.DVDからディスクユーティリティを起動する
4.750GBのにパーティションを作成する
5.パーティションを消去(初期化)する
6.2.の外付けHDDを接続する
7.復元タブを開いて、「復元先を消去」を外す。
8.ソースと復元先を、外付けHDDと内蔵HDDをそれぞれ選択する。
9.復元〜ん。
10.寝て起きたら終わってるはず。

やりかたは色々ある。
80GB > 160GB へ換装したときは rsync を使って復元した。
160GB > 320GB へ換装したときも rsync を使って復元した。
320GB > 750GB へ今回換装するとき、最初はタイムマシンから復元する予定だった。
でも失敗したので今回やった方法で復元した。
後からもう少し調べたところ、タイムマシンからの復元は一度クリーンインストールした後に復元作業にすすむらしい。

みんな好き好きな方法をでやってみればいい。

2011年1月4日火曜日

Moneyha 1.0.4を申請した

今日の夕方。
完全なるバグ、修正したの申請した。
1月1日で新規登録が出来ないっていう最悪なバグ。バグバグ。
ごめんなさい。

YYYY じゃなくて yyyy

バグが出るとすれば元日あたりに出るだろうなぁと思ったら出た。
Moneyha ってiPhoneアプリで出た。不具合出た。
レビューは優しさに満ち溢れていたのでとても嬉しかった。
(バグありなのに星4と3を付けてレビューしていただけた。)

Objective-C でのはなし。 Xcode 3.2.5 and iOS SDK 4.2.1 で試してる。

単純な話で、YYYY が間違いだった。 yyyy が正しい。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy"]; // ここを @"YYYY" ってしてた。

これだけだとなんなので、調べる過程で出てきた NSDate のポイントをいくつか。

// とりあえずタイムゾーンを確かめておこうよ
NSLog(@"%@", [NSTimeZone defaultTimeZone]); // Asia/Tokyo (GMT+09:00) offset 32400

// NSLogはタイムゾーン関係ないから注意。
NSLog(@"%@", [NSDate date]);

// もうちょいわかり易く。
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *d = [formatter dateFromString:@"2011-01-01 00:00:00"]; // d は日本時間だよ
NSLog(@"%@", [formatter stringFromDate:d]); // 当然 2011-01-01 00:00:00
NSLog(@"%@", d); // こっちは? 2010-12-31 15:00:00 +0000 が正解。タイムゾーンは日本じゃなくてグリニッジ標準時。


そんな感じで。

YYYY と yyyy の違いはこちらの方のブログに書かれてました。ありがとう。
『NSDateFormatterのYYYY利用時の注意点』
http://d.hatena.ne.jp/mmasashi/20101111/1289489570