Assetsで管理するファイルは1MBまでという制約というか。
大林の22MBファイルをAssetsに放り込んで、Helperでdata/data〜/databasesに複写するよう仕込みーの、走らせーの、AssetManager#readAssetでIO例外。
例外トレースの前にデータサイズ超過云々のメッセージが吐かれていたので調べてみると、1MBの話に辿り着く。
そんな制約要らない。
面倒臭いけど、22MBファイルを1MB単位で分割し、複写時に結合するよう修正。
して、DBファイルの複写が正常に行われた後のデバッグ

INSTALL_FAILED_INSUFFICIENT_STORAGE

とインストールエラー。
他のアプリは難なく起動するので、大林だけの問題なのですが、一体全体何のことやら。
して、調べてみると、エミュのパーティションサイズの問題らしく、ほら、22MBファイルなんて放り込むからーて話らしい。なので、エミュ起動オプションで-partition-sizeを与えてクリア。
んー
それで、2万件のフルスィングかましたらOutOfMemoryError発生。
ヒープサイズはデフォのままだから、いじれば良いのでしょうけど。
泥はダサい癖に面倒臭い。
やる気無くす。
ノノl∂Д∂'ル<ニマンケンワルイ!!!!!!!!!!

大林さんのアレを泥タブに移植しようとして。
数万件データを非力デバイスで扱う場合のテクニック吸収という名目。
で、既にiOS上で扱っているSQLiteファイルをコピって、泥に持って行き、ormliteでシャコシャコって軽い気持ちで作業を開始。
そう言えば、CoreData特有の隠しフィールドなどもそのまま持って行くので、マッピングモデルも合わせないとねーと鼻歌鳴らしていたら、ふと不安が過ぎった。
例えば、隠しのPKフィールドは

@DatabaseField(generatedId = true, columnName = "Z_PK")

こんな感じの定義で良い?
そう言えば、あのZ系の付加文字てCoreData特有だよねぇと、ormliteの場合は未定義の場合、素直にプロパティ名=カラム名になるの?と、なんか次々と疑問点が湧き出てきて、泥タブのSQLiteファイルをPCに持ってきてpupろうとファイラーで探すと、あれ?dataディレクトリは?ありゃりゃ?となって、adbで接続したら見えたのでdataから下ろうとすると権限エラー。んんん。先日パスワード管理アプリ作っているときは、バシバシSQLiteファイル削除していたのですが。。あ、DDMS上でか。それでDDMS上からdataを下ろうとしても配下が見えない。
んな!
んな、馬鹿な!
正解->バシバシ削除していたのはエミュレータ上のDBファイルでした。
これで、A500のroot奪取する利点が見つかったような気がする。

ムジュラのカーフェイイベントにて。
1回目:サコンに見つかって撃沈
2回目:赤ボタン踏みまくって、めおとのお面回収失敗
3回目:アンジュにカーフェイのペンダント渡すのを忘れ、お面回収して宿戻ってきたらアンジュいない
完全に呪われたイベント。
残すは、めおとのお面だけなのに。
もう疲れたよ。
気分転換にバテンカイトスを積み崩して初プレイ。
よく分からないシステムだけど、何となくやれてしまうので適当に進めたり。
デッキとか言う言葉が普通に使われているのですけど、なんだっけ?デッキて。これ、シミュレーション系からだっけ。デッキを組み立てるとか、んー、モンサマであったような。
デッキと言えばニューロマンサーでしょ。ジャックインでしょ。
それと混同するからイミフになるんかね。

PSPWiFiは使わない派。なのでPSP-E1000はゴキな感じも相まって、次に買うならばコレにしよう!と思った矢先に日本発売なし。
何気に手持ちの1000は頑丈だしな。アナログスティック以外。
結局、3000とGOは買っていない。買っても出動回数の微弱感が強烈過ぎて。
おまけにPS1専用機状態。PSPの新作とか冗談抜きで知らない。

検索を実施してからキャンセルをタップしリストをフリックすると落ちる。
例外原因はIndexPathのsection値が不当値といふ。
NSFetchedResultsController#objectAtIndexPathで発生していたが、挙動を見る限り、キャンセルした後のフェッチオブジェクト群が検索時のフェッチオブジェクト群のままである様相。
という訳で。

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
	[self.fetchedResultsController.fetchRequest setPredicate:nil];
	NSError *error = nil;
    	if (![self.fetchedResultsController performFetch:&error]) {
        	NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        	abort();
	}
}

てな具合で、検索条件を解除してリフェッチして解決。
確かに絞ったままでした。例外が出て当たり前。
SearchBarにキャンセルが自動付与されるので、気分的にキャンセルしてくれているんでしょと勘違いしてしまう。GUI的なキャンセル挙動はしてくれるけど、内部データに関してはあちらから触りようがないもんね。

大林on1Gが落ちる件で、本当にフェッチ件数の所為で枯渇落ちしている?という検証。
Limit20件掛けて様子を見てみると

2011-08-16 18:00:29.838 GameCatalog[204:207] CoreData: annotation: total fetch execution time: 30.2275s for 20 rows.

なんじゃこりゃ。
牛歩というレベルではないぞ。
て。
あ、推測メモ。
恐らく、ゲーム紹介と裏技のデータ量が多いから。
リストはタイトルとデベロッパだけが必要で、その他のデータは詳細画面に行く際に別途単発フェッチするようにすればパフォは稼げる。
はず。
はずはず。
そう言えば、CoreDataでフェッチする際に特定プロパティ(カラム)はSELECT対象にしないという制御を実施したことがないですねぇ。
NSFetchRequest#setPropertiesToFetchで、フェッチ対象とするプロパティを指定すれば意図通りの検索となります。
肝心の結果は

2011-08-16 18:26:36.032 GameCatalog[218:207] CoreData: annotation: total fetch execution time: 18.6226s for 20 rows

速くはなっていますね。
ええ。
えぇ。
ぇ。
それでもメチャトロです。この程度はmsecオーダで駆け抜けて欲しいものです。
更に改善が必要みたい。
面白いな。
DBパフォチューンて専門ではないので難儀しそう(初動はチューンてより馬鹿実装が問題でしたけど)。
この際、勤しもう。
4Gで試してみました。

2011-08-16 18:41:14.223 GameCatalog[1764:307] CoreData: annotation: total fetch execution time: 0.0117s for 20 rows.

SQLiteの問題なの?CoreDataの問題なの?スペックの問題なの?
意味不明。

東京月曜22時ドラマ枠が打ち切りという。
IS面白いのに。
鈴木先生なんて神ドラだったのに。
モリアサなんて神キャスだったのに。
残念。
残念だけど、録画ドラマ消化に割かれる時間を考えると「まいっか」という軽い気持ち。
ドラマ24枠が残っていれば。
ドラマ24枠て録画予約するときのイライラ(スポーツニュース同時)も一興ちゅうかね。

iOS版パスワード管理アプリ完成。
折角だけど身内だけに公開し一般は非公開に。
泥版も作ったのは良いけど、中間言語系は何か気持ち悪い。簡単に破ることが可能。

青空文庫のリストを眺めていると、如何に自分が本を読まない人間かよく分かる。
本を読む時間があれば、コードを書いているか、ゲームをしているか、録画消化しているかといふスタイル。テレビ止めたら、きっとゲーム比重が増えるだけ。
恵まれた環境(例えば青空文庫)を活かせないのは罪だと思う。

VCのPCEとGGはどうなったのでしょうか。
PCEはPCEAがあるから特に思うところは無いのですが、GGちゅうか、GGアレスタ。
ちゅうかね、コンパイルシューてアーカイブスにしてPS3でもPSVでも360でも3DSでも何でも良いですけど、出せば炸裂すると思いますよ。コンソール跨りが尋常ではないから、ほぼ絶望的な見解になりますけど。
ザナザナにMSXザナが入っていたらなーとか、もうね、なんちゅうのか、アレですよ。
絶望ですよ。絶望しかそこには無いですよ。

大林リップアプリを1Gにインストしてみたら、モノの見事にメモリ枯渇で(ほぼ)起動せず。
4Gのスペックに助けられて2万フェッチでも辛うじて使えているレベルだと実感。
やはり、最低でもコンソールで絞らないと携帯端末のメモリでは逼迫するよなーちゅうことで、抽出条件を入れることにした。ストアイン出来る代物でもないし、あくまでも個人利用だから頑張る必要性はないけど、手前の端末で動作しないというのは許せない。
あれ?
コンソール縛りにすると、コンソールを跨がった移植物の検索に不便ではないかと気が付く。そもそも、仕事でこのような案件(数万件データの抽出)が来た場合どうするの?と自問自答。
再考。
だけど、ページングちゅうてもそのようなインタフェースてどうなのでしょう。。
て。
あれ。
そう言えば、TableViewフッタに「続きを表示」や「もっと読む」て表示して制御するインタフェースがあると思い出した。
そうだ。これだ。
て。
普通に考えると、あれって、ページ単位にフェッチ数を増やすのだから、続けていくと枯渇落ちするじゃん。
よくあるページ切替とは様相が違うからなぁ。
打開策になれば良いのだけど。

暗号ノートアプリに着手。
DataModelを作成する際に暗号プロパティのタイプを"バイナリデータ"とした訳です。それで、NSManagedObject継承クラスを自動生成掛けてみたところ、該当プロパティが"NSDate"に見えて、一瞬にして奈落の底へ。
日付型なんかにしてないやい!とか、NSDateで併用しているの?馬鹿?て、泣きながら確認していると、実は"NSData"だったというオチ。
脳内で"NSBinary"や"NSSerialize"とか、そういうタイプだろうと思い込んでいた節あり。

A500がシェア1位て。最近の値下がりで拍車が掛かったのかな。
ビッグウェーブに乗ってしまった感があるけど、さすがにiPad2には太刀打ち出来ないですよ、これ。あくまでも新しい物好きで、泥ハニカムに興味があって。。あ、アンチ林檎が流れたのか。3.1より3.0の方がキビキビしていたのですが、3.2も予定あるし、気長に遊んで待っています。電子書籍と動画を手軽にリビングで!というユーザさんには、確かにオススメ。個人的には開発用に購入したので、全く問題なし。シメジの重さがイライラするくらい。

最初は、セグメントを使ってコンソール単位のフェッチ機構にしようと考えていましたが、あれだけのコンソール数をセグメントで実現するのは、2段にしたところで強烈過ぎだろうと脳内却下。
全件フェッチは起動時だけで、今回のアプリはViewerに特化(編集なし)しているためリフェッチのパフォ劣化も度外視。
それでインデックスを施して凌ぐ方向に。

セクションのソートはアルファベット順にしているため、恐ろしい並びに。
拘りがあると、コンソールは発売順に並んで欲しいものです。
それ以上に、大林はPCEをPCと表記したり、GB/GBC、WS/WSC、NGP/NGPCの区分けもしていないという私的逆鱗に触れる訳ですが、これは後ほどDB修正ちゅうことで。

タイトル検索も良好。
良い感じ。

詳細画面は上記の通り。
大林さん、VCやアーカイブスのデータまで載せてくれているので助かります。

復号完了

とりあえず、すべてDBにインポしてみようと思う。
お次はER図。

ER図ちゅうか、元データがCSVでリレーションも何もないから。
それで2万件を突っ込み。

フル出力してみた。
ローカルだと、インジケータは2万件でも不要な感じがする。
どの様な抽出インタフェースにしようか、色は何色にしようか、楽しくて仕方が無い。

あ、テザの良い点、もう一つ見つけた。
家にネット引いてない場合だ。
例えば、家にネット引いてなくて、ノートやタブが欲しいとか、そういう場合。
プロバイダ登録手続きとかAP設置とか煩わしい。
テザってれば、別途プロバイダ料金も掛からないし安いもんだ。
うちなんて、プロバイダ料金=パケホ料金な感じだから、意地でも3g使わずにwifiで乗り切ろうと躍起になっているけど、そうでない場合は良いです。ある意味、有線プロバイダキラーにもなり得るのか。
単身赴任とか独り暮らしの学生さんとかは重宝するわ。

daigirinからデータベース抽出してタッチに突っ込もうと解析していて、mdbとかmdfとかdbファイルを埋め込みリソースにしているのだろうとサーチ掛けているのですが目ぼしいものにヒットせず。それで、あれれー、xml形式にしている?とサーチ掛けていたら、ありゃ?csvて見えたよね?genre.csvとかmedia.csvとか釣れ始めた。ado.netフロントでバックエンドがcsvて有り?と調べてみると有りらしい。ちょっと兆し。
おっとmedia.csvぽいのが抜けた。

genre.csvも抜けた。

console.csvも抜けた。
肝心のdaigirin.csvが抜けていない。
これらのcsvデータは検索条件で扱うマスタであり(本来ならばDBから引っ張るのが筋だけど)、やはりコアデータはデータベース化されている模様。恐らくデフォ窓で使えるプロバイダを使っていると推測しつつも難儀中。
ありゃ?XMPか?
何だか、逝ける気がしてきた。
にしても、この大技林、トイレで読んでいると膝がガクガクするな。
重すぎ。タウンページと同等レベル。

daigirin.csvが見つからないし、どこをどう考えてもあのデータ量をcsvで云々て有り得ないし。メタサーチ掛けたけどそれらしいものもないので、やはり組み込みデータベースで実現しているのではないかと。SQLite使っていると推測し、.dbや.sqliteサーチしてもヒットせず。まぁファイル名は何でも良いしなーと、そうだdaigirin.csvとか言いながら、あれSQLiteファイルのフェイクじゃないのか?と、ヘッダストリング狙いで「SQLite format」でサーチしてもヒットしない。
絶望的。
ださっ!

モジュール名を抽出して眺めていたら

System.Security.Cryptography
DESCryptoServiceProvider
ICryptoTransform
CreateDecryptor
CryptoStream
CryptoStreamMode

ずらずらと。ダメだ、暗号使っている(当たり前か)。キー不明。キーが"daigirin"だったら別だけど(笑

あ。
C#実装か。
打開。
やはり、daigirin.csvはレコード単位でDES暗号化されていた。
おまけにデリミタがパイプ。
ちゅか、csvかよ!
明日は、復号プログラムをちょいと組んで、SQLiteファイルにインポするよ!