おとといすごい地震がありましたね。
過去最大級だとか・・・・・
みなさん無事だったでしょうか??
地震があっても東京は1日経てば何事もなかったかのように仕事が始まり、いつも通りの生活になってしまって
現地の人大丈夫かなぁと思いつつもプログラムしてます。
CoreDataとSQLiteですが、これって非常に重いってことに最近気づきました。
CoreDataもSQLiteもどちらもSQLを作って、それを実行してデータをうけとるという行程を含むんですが、
どうやらこのSQLの実行がかなり重い様子・・・・・
なんと1回のSQLに0.05秒とかかかってしまうときがあるんです!
・・・・・・少なく見えるって??
そんなことはないんです。
例えばテーブルでデータを表示しようと言うとき、もしcellの生成ごとにSQLを読んでいたらスクロールがかくかくにってしまうのがわかるぐらいの遅さです。
早くするにはどうしたらいいかと言えば、SQLを発行しなければいいということで、tableを作ったときに一度全部のデータを取り出してメモリに補完しておくとか
そういった対策が必要になります。
自分は画像データをバイナリとしてデータベースに突っ込んで保存してたんですが、
テーブルの表示でかなり遅いことに気づいて
データベースには画像ファイル名だけ書いて、画像ファイルはdocumentディレクトリにおいてロードするようにしただけでかなり早くなりました!
最近CoreDataにはまって、CoreData Loveになりそうですヾ(@°▽°@)ノ
CoreDataってただのデータ保存用の関数とかがあるだけって思ったら
どちらかと言えばモデル作成キットみたいな感じなんですね!
CoreDataとSQLiteを比べていた昔が懐かしい・・・・
そもそも方向性が違ったなんて考えてもいませんでしたよ
で、最近CoreDataのUndo / Redo を実装してるんですが、
ちょっと使い方をミスったのでここで紹介しときます
自分はUndo/Redoのテストとして、ボタンをクリックしたらUndoするとかの方式ではなくて
NSLogをつかってテストしてたんですね。
すると、Undoをするとなぜか最初の状態に戻っちゃうんです・・・
1、2、3って値を入れてUndoすると2になってほしいのに1になっちゃうんです
Redoすると3になって「あれ?2は????」ってなったんですね
で、しばらく(3日ぐらい)悩んだ結果わかったのが、自動グループ機能の効果でこうなってることがわかりました
なんと、UndoManagerには自動グループ機能があって、それにより
「2、3を入れるので一つの動作」
と覚えたらしいんですよ
それでUndoすると「ひとつもとに戻す」=「2、3を入れる前の状態にする」ってことで
1になっちゃったんですね
こんな機能いらない!!って思ったんですけど、
グループ機能をよく知るとかなり便利だったりするんですよ
グループ化されるのは1ループごと(システムに制御が戻るまで)らしいので、
一気に3つデータを変えるとかやったときに、それをグループ化して勝手に一つの動作って覚えてくれるんです
今回のNSLogでのテストみたいに、システムに制御が戻る前にUndo/Redoをやろうとするとあれ?へん??ってなるんですが、実際損な風に使うことって滅多にないんですよね
CoreDataってただのデータ保存用の関数とかがあるだけって思ったら
どちらかと言えばモデル作成キットみたいな感じなんですね!
CoreDataとSQLiteを比べていた昔が懐かしい・・・・
そもそも方向性が違ったなんて考えてもいませんでしたよ
で、最近CoreDataのUndo / Redo を実装してるんですが、
ちょっと使い方をミスったのでここで紹介しときます
自分はUndo/Redoのテストとして、ボタンをクリックしたらUndoするとかの方式ではなくて
NSLogをつかってテストしてたんですね。
すると、Undoをするとなぜか最初の状態に戻っちゃうんです・・・
1、2、3って値を入れてUndoすると2になってほしいのに1になっちゃうんです
Redoすると3になって「あれ?2は????」ってなったんですね
で、しばらく(3日ぐらい)悩んだ結果わかったのが、自動グループ機能の効果でこうなってることがわかりました
なんと、UndoManagerには自動グループ機能があって、それにより
「2、3を入れるので一つの動作」
と覚えたらしいんですよ
それでUndoすると「ひとつもとに戻す」=「2、3を入れる前の状態にする」ってことで
1になっちゃったんですね
こんな機能いらない!!って思ったんですけど、
グループ機能をよく知るとかなり便利だったりするんですよ
グループ化されるのは1ループごと(システムに制御が戻るまで)らしいので、
一気に3つデータを変えるとかやったときに、それをグループ化して勝手に一つの動作って覚えてくれるんです
今回のNSLogでのテストみたいに、システムに制御が戻る前にUndo/Redoをやろうとするとあれ?へん??ってなるんですが、実際損な風に使うことって滅多にないんですよね
学校が受験やら春休みやらで結構しまってしまうので、ちょっと前からいい活動場所をさがしていたんですが、やっとちゃんとした活動場所ができました!
なんと、ワセダのインキュベーションセンターのコミュニティ会員になったのです!
場所は早稲田(都電荒川線の駅の近く)。
入居した訳ではないので専用のスペースがある訳ではないですが、
共用のスペースやデスクがあり、とっても活動しやすいです!!
そしておかげで住所ができました^^
いままできちんとした住所がなかったので、これはとてもうれしいです
さらに来客があるときに会議室を使えたり、もうこの活動場所ははなせない!!ってぐらい便利になりました
欠点は駅から遠いところ・・・・
都電荒河川の駅には近いんですが、普段使う高田馬場からは歩いて20分ぐらいかかるという・・・・
まぁ健康のための日比野を-キングと思えばそこまでクでもないかな~って感じ
自分は高校のときは通学がそれぐらい歩いていたので、ちょっと懐かしいなと思いつつ
やっぱり近いって便利なんだなぁと再認識しつつ歩いてます
