2012年10月29日月曜日

pref続き

久々にxcode。font settingに続きleft-hand modeとかphotoのresolutionとかview modeとかやった。
もーtimeline modeやる前に公開してまうかなー。でもやっぱsinglepost+timeline+univはいるか。
ていうかiPad mini欲しい。kindle store日本版来たし、日経iPhone5も全然来んし、買っちゃうか。
でも今期中にretina来たら泣くな。MBP13retinaも欲しい。2008macbookでやってるけどもう限界。
いまんとこ今年157杯ラーメン食べてる。2日に1回ペースになるよう、頑張る。
金曜東京出張やったからラーメン二郎@目黒行こうと思ってたけど結局叶わんかった。
あーとりとめない。酒弱いなー。幸あれかし。

2012年10月17日水曜日

since_id再最適化とfont size

since_id、short状態がなかなか完了しない状態が発生(これは前から認識)、とりあえずアクセラレータをつけてみた。なんとなく解消はされたけどもっともっと最適化はできそう。meta traderで為替の規則性を追っかけてた頃を思い出す。結局後付けの、理論というか言い訳というか、引力発見以前の惑星軌道計算みたいに、ゴテゴテ足していってとりあえずは計算ずくのように見せかけて実は近似がたまたまうまく行ってるように見えてただけでした、という感じ。そこまでひどくはないか。ひとまず、こんな感じで。今までのところの最適解。
if(!offsetflg){
if(lastid>topid){
NSLog(@"short! tid:%lld/sid:%lld/lid:%lld/difid:%lld (acc:%d/brk:%d)",topid,since_id,lastid,difid,acc,brk);
brk=2;difid=lastid-topid;difid*=acc++;since_id+=difid;
offsinceval=[NSString stringWithFormat:@"%lld",since_id];[self reqDB];
return;
}else if(lastid<=[[[bd valueForKeyPath:post(@"id")]lastObject]longLongValue]){
NSLog(@"over! tid:%lld/sid:%lld/lid:%lld/difid:%lld (acc:%d/brk:%d)",topid,since_id,lastid,difid,acc,brk);
acc=1;
if(difid){since_id-=difid;difid/=brk++;since_id+=difid;}
else since_id-=(topid-[[[bd valueForKeyPath:post(@"id")]lastObject]longLongValue]);
offsinceval=[NSString stringWithFormat:@"%lld",since_id];[self reqDB];
return;
}else{
NSLog(@"ok");
difid=0,acc=1,brk=2;
for(id idnum in [bd valueForKeyPath:post(@"id")]){
if(lastid<=[idnum longLongValue]) skip++;
else break;
}
}
}
あと、type毎のfont size設定も完了。これは別に何の苦労もなくできた。

iPhone5のケース到着。あらためて、これ
素晴らしい。

2012年10月16日火曜日

since_id再最終版

もうsince_idアルゴリズムは完成したつもりでデバッグというより普通にdashboard潜ってたらover(読み込み済みのpostの最後のidよりおかわりしたJSONの最後のidのほうが新しい現象)がいきなり出てきた。since_idは-=してるので原則short(おかわりしたJSONの最初のidが最後のpostidより古い)がまず起こるはずだが、おかしいなーと調べてたら多分おかわりしたJSONの最後のidと最後のpostidが一緒というケースが発生してる様子。
なのでoverはshortの時に足し過ぎて起こるだけでなく、いきなり出てくることもありうるという前提で、若干コードを書き換えた。
if(lastid<=[[[bd valueForKeyPath:post(@"id")]lastObject]longLongValue]){
NSLog(@"over/match! tid:%lld/sid:%lld/lid:%lld/difid:%lld (brk:%d)",topid,since_id,lastid,difid,brk);
if(difid){since_id-=difid;difid/=brk++;since_id+=difid;}
else since_id-=(topid-[[[bd valueForKeyPath:post(@"id")]lastObject]longLongValue]);
offsinceval=[NSString stringWithFormat:@"%lld",since_id];[self reqDB];
return;
}

できた。これにNSTimerで自動的にぽんぽん次へ次へと行く仕組みを作ってデバッグ。
特に問題は無さそう。10,000件オーバーまで普通に行った。さすがにもー大丈夫だろう。

あとiPhone5用にまたケース買った。5用に3つ目。これ。
フィルムはマイクロソリューションのARSH買おうと思ってたけどぶっちゃけ今のsoftbankのフィルムでそんなに大きい不満はないからなー。3G時代からずーっとパワサポのアンチグレアやったけどこれからはやっぱり光沢系かな。

夜はマッチョで並野菜マシマシにんにくちょびっと背脂ちょいマシカラメ。美味い。

2012年10月14日日曜日

since_id決定アルゴリズム最終版

account,data source,post type,color themeがひと通りできてルンルンでデバッグしてたらjsonのおかわりがうまく動かないケースに遭遇。6月に、
since_idを確定できるのは、lastidがおかわりしたJSONの中に含まれ、且つlastidとJSONの最後のidが等しくない場合なので、それ以外のケースでは、
1.lastidよりおかわりしたJSONの最初のidが小さい場合
2.lastidよりおかわりしたJSONの最後のidが大きい場合
に切り分けて、1の場合はlastidとJSONの最初のidの差分をsince_idに+=し、2の場合は逆に-=して再度おかわりして確定できるまで繰り返していた。
などと書いていたが、そもそも2のケースは1での足し方がおかしい(足し過ぎ)から発生するのであって、任意の数値を引くんじゃなくて、一旦元に戻して足すべき差分を減らして(それでも2になれば減らし方を激しくする)再度「足す」のが正しい。2つのケースがあるんじゃなくて後者をエラー処理として考えてやればすっきりとまとまった。
if(!offsetflg){
if(lastid>topid){
difid=lastid-topid;since_id+=difid;
offsinceval=[NSString stringWithFormat:@"%lld",since_id];[self reqDB];
NSLog(@"short! sid:%lld/lad:%lld (brk:%d)\n%@",since_id,lastid,brk,[bd valueForKeyPath:post(@"id")]);
return;
}else if(lastid<=[[[bd valueForKeyPath:post(@"id")]lastObject]longLongValue]){
since_id-=difid;difid/=brk++;since_id+=difid;
offsinceval=[NSString stringWithFormat:@"%lld",since_id];[self reqDB];
NSLog(@"over! sid:%lld/lad:%lld (brk:%d)\n%@",since_id,lastid,brk,[bd valueForKeyPath:post(@"id")]);
return;
}else{
NSLog(@"ok");
brk=2;
for(id idnum in [bd valueForKeyPath:post(@"id")]){
if(lastid<=[idnum longLongValue]) skip++;
else break;
}
}
}
できた。あとはいよいよタイムラインか。
昨日は姫路でイベント。帰りに手打ち麺やす田@新大阪で塩と白飯。うまかった。

2012年10月11日木曜日

うーん

メッセージの書式が[]なので、配列の添字も同じだと見難いような気が。
例えば、[idArr addObject:[bd valueForKeyPath:post(@"id")][i]]; とか。
最初は狂ってるとしか思えなかったobj-cの記法にいつの間にか慣れてしまったのか。
まあとりあえずmodern化は全自動で一気にやったけどね。

preferencesはとりあえずtype選択とcolor theme選択は完了。
color themeは黒がしまって見えるので良い。こっちをデフォルトにしよう。
そろそろtimeline版も考えなくては。楽しい。

2012年10月7日日曜日

iPhone5+iOS6対応完了

iPhone5はちゃんと発売日に手に入れて楽しく触ってたけど仕事が結構忙しくて更に友人の結婚式の映像とかも作っててxcodeは全然いじれてなかった。とりあえず4.5にするだけしてほったらかしてたけどそろそろやっとくかーと再開してDefault-568h@2x.pngだけ作ってビルドしてみるも、パッと見動いてるけど細々不具合があって潰してた。

一つはvideoで、全画面再生をdoneしたら1番目のpostに飛んじゃうエラー。あまりにも意味不明なので泣きながらstackoverflowを舐めるように見てみるも同様の現象は見つからず。結局アカウントをpreferencesで変更したとき用にviewDidAppearでrefleshしてたのが原因。あまりの間抜けさに脱力。

それからphotoとaudioで、tapのジェスチャーを拾ってセレクタ投げた瞬間にdeallocatedで怒られてた。ちゃんと宣言してるし理由がよくわからず色々調べて、UIViewControllerのviewだけarrayに入れてたから新しくUIViewControllerをallocする度にその前のやつが保管されずにdeallocされてた様子。ていうかiOS5の時は動いてたと思うんですけど。。。とりあえずarrayにはvcで入れておいて使うときに[[vc objectAtIndex:hoge]view]をaddsubviewするようにしたら動いた。これでiPhone5+iOS6対応はたぶん完了。

あとは配列の添字の記法とかをmodernなものに変更して、Preferencesの続きやろう。

今日は高知出張。かつおたたき(塩)うまかった。
その前は京都だったので新福菜館。久々に行ったがやはりうまい。