[2011/05/07 21:19:08] Linda Linda: DBオンリーの内容はこっちで話すか。 [2011/05/07 21:19:31] Shu: 了解 [2011/05/07 21:19:52] Shu: チャットログのまとめ、Lindaにお願いしたい [2011/05/07 21:20:05] Shu: さっきも言ったけど、今日体調悪いので… [2011/05/07 21:20:19] Linda Linda: おうおう [2011/05/07 21:20:28] Shu: 申し訳ない [2011/05/07 21:20:34] Linda Linda: いやいや別にそれぐらいええよ [2011/05/07 21:23:55] Shu: さて、まず何をしなきゃいけないかまだよく分かってない僕 [2011/05/07 21:24:37] Shu: とりあえず、先週の会議で貼ってくれたURLの「SQLiteの使い方」みたいなんは読んだ [2011/05/07 21:25:40] Linda Linda: 十分やん。 [2011/05/07 21:25:49] Shu: そうか [2011/05/07 21:25:49] Linda Linda: ただ、BLOBの使い方がイマイチ分からんね。 [2011/05/07 21:26:01] Shu: Blob今まで使った事ないからなあ [2011/05/07 21:26:14] Linda Linda: どういう形でJavaに取り出せるのかとかが。 [2011/05/07 21:26:19] Shu: GAEのDBのドキュメント読んで、存在は知ってたけど [2011/05/07 21:26:25] Linda Linda: まあ、とりあえず、まずクラス名決めよう。 [2011/05/07 21:26:31] Shu: そうか、クラス名 [2011/05/07 21:30:12] Shu: DB操作と、データ加工だったよね [2011/05/07 21:30:12] Linda Linda: とりあえず、俺が作ったアプリのデータベース扱うクラスをupしようか。役に立つか怪しいけど。 [2011/05/07 21:30:18] Linda Linda: やね。 [2011/05/07 21:30:22] Shu: みしてみしてー [2011/05/07 21:31:16] *** Linda LindaがDataBaseOperator.java,...を送信しました *** [2011/05/07 21:32:08] Linda Linda: DatabaseOperatorがデータベースを扱うクラスで、DataBaseOpenHelperがデータベース開く時に使うクラス [2011/05/07 21:32:20] Shu: Helperの方は例のHelperを継承するやつか [2011/05/07 21:32:55] Linda Linda: やね。 [2011/05/07 21:32:59] Linda Linda: これ使うと、 [2011/05/07 21:33:05] Shu: これってリムーブチェッカーのやつか [2011/05/07 21:33:33] Linda Linda: 既存のデータベースがある場合はそれを開く、無ければ作成する。とかをやってくれるから、データベースが今あるかどうか気にしなくていい。 [2011/05/07 21:33:47] Shu: なるほど [2011/05/07 21:33:58] Linda Linda: そそ、リムーブチェッカーのやつ。 [2011/05/07 21:34:23] Shu: オペレータの方がなんやかんややるわけか [2011/05/07 21:34:34] Linda Linda: 使ってるデータベースはかなりシンプルにしてる。 [2011/05/07 21:34:36] Shu: あいや [2011/05/07 21:35:05] Shu: この二つのクラスでDB操作だから、加工はまた別になるんだな [2011/05/07 21:35:24] Linda Linda: そうやね [2011/05/07 21:35:55] Linda Linda: 直接データベースいじるのが、SQLiteOpenHelperを継承したクラスと合わせて [2011/05/07 21:36:00] Linda Linda: 2つ。 [2011/05/07 21:36:12] Linda Linda: データを加工するクラスが別に1つ [2011/05/07 21:36:15] Linda Linda: って感じやな。 [2011/05/07 21:36:21] Shu: ほむほむ [2011/05/07 21:36:26] Shu: 取り敢えず名前決めるか [2011/05/07 21:36:31] Linda Linda: やね。 [2011/05/07 21:36:59] Shu: 操作屋はこれと同じ名前でいいかな [2011/05/07 21:37:24] Linda Linda: そうやな。 [2011/05/07 21:37:25] Shu: 加工屋はどうしよ [2011/05/07 21:37:31] Linda Linda: うーん [2011/05/07 21:37:57] Shu: GUI組に渡す準備って感じだよね [2011/05/07 21:38:17] Linda Linda: または、GUIから受け取ったデータをデータベースに合うものに加工する [2011/05/07 21:38:25] Shu: 可換 [2011/05/07 21:38:34] Linda Linda: 懐かしい響き… [2011/05/07 21:38:54] Shu: こういう、仲介屋みたいなのって標準的な名前ないのかな [2011/05/07 21:39:02] Linda Linda: うーん、感覚的にはインターフェースが正しい気がするけど、JavaのInterfaceとかぶるしな [2011/05/07 21:39:13] Shu: 思い付かんー [2011/05/07 21:39:48] Shu: ニュアンスとしてはAPIとかに近いかも知れん [2011/05/07 21:40:06] Linda Linda: うむん。 [2011/05/07 21:40:42] Linda Linda: Application Programming Interface [2011/05/07 21:40:44] Linda Linda: よね。 [2011/05/07 21:40:49] Shu: うむ [2011/05/07 21:41:02] Linda Linda: 若干紛らわしい気もするけど、インターフェース使うか。 [2011/05/07 21:41:04] Shu: 変換器とかだと Transformer [2011/05/07 21:41:28] Linda Linda: TimetableDataInterface [2011/05/07 21:41:33] Linda Linda: みたいな感じで。 [2011/05/07 21:41:37] Shu: それでいっか [2011/05/07 21:42:26] Linda Linda: まあ、向こうに知らせるまでは変更効くし、もっといい名前があれば変えればええよね [2011/05/07 21:42:58] Linda Linda: よしじゃあ、DataBaseOperator.javaを作成する [2011/05/07 21:47:41] Shu: 一緒に操作屋さんを作るって言っても、どう分ける? [2011/05/07 21:48:18] Linda Linda: とりあえず、shuはopenhelperの継承クラス作ってみてくれ。 [2011/05/07 21:48:25] Shu: 分かった [2011/05/07 21:51:22] Linda Linda: あ、そうや [2011/05/07 21:51:40] Linda Linda: データベースの名前と、各rowの名前決めないと。 [2011/05/07 21:51:52] Shu: お [2011/05/07 21:52:30] Shu: 各列の名前は図書館会議のまとめに書いてある名前でいいのかな [2011/05/07 21:52:40] Linda Linda: やね [2011/05/07 21:52:42] Shu: あれ暫定的に書いたんだけど [2011/05/07 21:52:45] Linda Linda: データベース名だけか。 [2011/05/07 21:52:51] Linda Linda: いや、あれで問題無いかと。 [2011/05/07 21:52:57] Shu: 了解 [2011/05/07 21:53:19] Shu: 「時刻表の表」なんだよなー [2011/05/07 21:53:40] Linda Linda: TimetableDatabaseかな? [2011/05/07 21:53:56] Shu: それでいいか [2011/05/07 21:54:29] Linda Linda: まあ、名前はこだわりすぎても仕方ないしなー [2011/05/07 21:55:01] Linda Linda: んじゃあ、名前はDataBaseOperatorで、定数変数として宣言するか。 [2011/05/07 21:55:28] Shu: どこに宣言するの [2011/05/07 21:55:47] Shu: あ、ごめん、DBOに宣言するんだな [2011/05/07 21:56:33] Linda Linda: そうやな。 public static final String で。 [2011/05/07 21:57:08] Linda Linda: DataBaseOpenHelperをDataBaseOperatorの内部クラスにするなら、privateでもいい。 [2011/05/07 21:57:23] Shu: あー [2011/05/07 21:57:33] Shu: まとめた方がいいのか、分けた方がいいのか [2011/05/07 21:57:48] Linda Linda: ソース長くなるのを嫌うなら分けたほうがいいかも。 [2011/05/07 21:57:58] Linda Linda: ちなみに俺は嫌うw [2011/05/07 21:58:04] Shu: そうか、なら分けよう [2011/05/07 21:58:09] Linda Linda: おけい [2011/05/07 21:58:15] Shu: 変数名なにがいい? [2011/05/07 21:58:34] Shu: public static final String dbname でいい? [2011/05/07 21:58:47] Shu: あ、DBNAMEの方がいいか [2011/05/07 21:59:15] Linda Linda: どっちかが作ってからそれアップしたほうがいいかな [2011/05/07 21:59:21] Linda Linda: 今どのクラス作成した? [2011/05/07 21:59:31] Shu: 今オープンヘルパーだけ [2011/05/07 22:00:15] Linda Linda: DataBaseOperator内に作るわー。ちょいまってね。 [2011/05/07 22:00:38] Shu: ほいほい [2011/05/07 22:01:18] Linda Linda: p1nameとかのrowはもう直書きでいいか。 [2011/05/07 22:01:41] Linda Linda: って、それ言ったらデータベース名もべた書きでいいんかな… [2011/05/07 22:01:57] Shu: まあ、いっこしか表作らんからな… [2011/05/07 22:02:07] Linda Linda: 今後変えることも無さそうやしなぁ。 [2011/05/07 22:02:17] Linda Linda: んじゃあ、やっぱり直書きでいくか… [2011/05/07 22:02:38] Shu: じゃあそうしとく [2011/05/07 22:02:53] Linda Linda: あいさ [2011/05/07 22:42:57] Shu: 一応ヘルパーできたっぽいけどどうしよ [2011/05/07 22:43:06] Shu: どっか分かり易い所にうpしといた方がいい? [2011/05/07 22:43:27] Linda Linda: DropboxのDBディレクトリに入れてくれー [2011/05/07 22:46:47] Shu: DB直下に置いたけどここでええんかな [2011/05/07 22:46:51] Linda Linda: おk− [2011/05/07 22:47:04] Linda Linda: ちょっと必要そうなメソッド洗い出してるのでくつろいどいてくれー [2011/05/07 23:05:58] Linda Linda: pattern1がnot nullになってるけど、 [2011/05/07 23:06:06] Linda Linda: これ若干きつい気がする。 [2011/05/07 23:06:25] Shu: あれ? [2011/05/07 23:06:35] Shu: not null にするって話してなかったっけ [2011/05/07 23:06:40] Linda Linda: いや、確かにデータとしては最終的にはパターン最低1つは必要なんだけど、 [2011/05/07 23:06:47] Shu: ああ、作る時か [2011/05/07 23:06:55] Linda Linda: 最初テーブル作成した時点でパターンが確定してないと思う。 [2011/05/07 23:07:26 | 23:07:42を編集しました] Shu: そういえば全部0とヌルって区別されるんかな… [2011/05/07 23:07:30] Linda Linda: p1nameとp1timeは初期値あるだろうけど [2011/05/07 23:07:44] Linda Linda: 0で初期化にするか [2011/05/07 23:07:49] Linda Linda: 区別されるはず [2011/05/07 23:08:04] Linda Linda: でないと、電車0本の時刻表が作れない(キリッ [2011/05/07 23:08:24 | 23:08:32を編集しました] Shu: きりっ [2011/05/07 23:09:09] Shu: で、not null は外しといた方がいいんよね [2011/05/07 23:10:10] Linda Linda: うーん [2011/05/07 23:10:12] Shu: ってあれ、0で初期化にするんならnot nullでもおk、か? [2011/05/07 23:10:56] Linda Linda: そうなんよな [2011/05/07 23:11:14] Linda Linda: というか、最初、何かしら初期化しとかないときついな [2011/05/07 23:11:29] Shu: うーむ [2011/05/07 23:11:30] Linda Linda: でないと、すでに値があるか、それともnullかで処理わけないといけない気がする [2011/05/07 23:11:52] Linda Linda: p1〜5まで全部初期化しておけばいいか [2011/05/07 23:12:11] Shu: ふむ [2011/05/07 23:12:35] Linda Linda: というのは、説明下手すぎて伝わってない気がするからもう少し説明する [2011/05/07 23:12:57] Shu: よしこい [2011/05/07 23:13:38] Linda Linda: ぐぬぬ [2011/05/07 23:13:41] Linda Linda: まず、 [2011/05/07 23:13:56] Linda Linda: よしんかー「1時間単位でデータ保存させろ」 [2011/05/07 23:14:00] Linda Linda: って言ってくると思う [2011/05/07 23:14:14] Shu: それはまあそうか [2011/05/07 23:14:24] Linda Linda: んで、アプリの設定画面を開いて、0時の項目をユーザが設定する [2011/05/07 23:14:43] Linda Linda: GUIから0時の部分の設定をデータベースに反映させるように要求される [2011/05/07 23:14:51] Shu: うん [2011/05/07 23:15:03] Linda Linda: ここで、0時の分を登録するんやけど、 [2011/05/07 23:15:20 | 23:15:51を編集しました] Linda Linda: すでにデータが登録済みか、それともはじめての登録でまだデータが無いかで [2011/05/07 23:15:33] Linda Linda: 処理分岐しないといけない [2011/05/07 23:15:40] Linda Linda: 初期値nullの場合。 [2011/05/07 23:15:49] Shu: うんうん [2011/05/07 23:16:06] Linda Linda: それなら、最初に全部0で初期化しておけば [2011/05/07 23:16:22] Linda Linda: 常にデータが登録済みのところから始まるからいいのでは [2011/05/07 23:17:10] Shu: えーっと [2011/05/07 23:17:15] Shu: うん、把握した [2011/05/07 23:27:49] Linda Linda: DataBaseOperator.java作ってみたけど、骨組みこんな感じでどうやろ。 [2011/05/07 23:28:15] Shu: 読む [2011/05/07 23:28:57] Shu: ほうほう [2011/05/07 23:29:54] Shu: 大体分かった [2011/05/07 23:30:04] Shu: 問題は中身か [2011/05/07 23:31:03] Linda Linda: blobが何者かやな。 [2011/05/07 23:31:06] Linda Linda: 他は簡単。 [2011/05/07 23:31:25] Linda Linda: 多分、加工するクラスが結構しんどいと思うわ [2011/05/07 23:31:32] Shu: BLOBはよく分からんなー… [2011/05/07 23:31:37] Shu: for文ぐるぐる? [2011/05/07 23:31:45] Linda Linda: いや [2011/05/07 23:32:12] Linda Linda: たとえば、p1の時刻表データ取って来たいなら、 [2011/05/07 23:32:58] Linda Linda: select p1 from TimetableDatabase where name=hoge ; [2011/05/07 23:33:23] Linda Linda: これで、とりあえず720バイト丸々取って来れるから [2011/05/07 23:33:35] Shu: うん [2011/05/07 23:33:48] Linda Linda: 加工は加工屋に任せればいいかな。どう加工するかも今のところ分からんし… [2011/05/07 23:34:05] Shu: GUI次第の部分も多いっぽいしなー [2011/05/07 23:34:38] Linda Linda: とりあえず、データベースから生のデータ取ってくるところだけ実装やな [2011/05/07 23:34:50] Linda Linda: だから、今のところは720バイトのままでいいかと。 [2011/05/07 23:35:09] Shu: 了解 [2011/05/07 23:36:49] Shu: さっきのDB-OperatorのソースこっちのEclipseで開いたら [2011/05/07 23:37:11 | 23:37:25を編集しました] Shu: linda_pp.twiccaPlugin.Dbg の部分に赤線入ってて何事かと思った [2011/05/07 23:39:43] Linda Linda: あれ、まじか [2011/05/07 23:41:07] Linda Linda: さっきの っていうのは、android.fireupdate.oreoreパッケージのほう? [2011/05/07 23:41:12] Linda Linda: 同じ名前やからややこしいw [2011/05/07 23:41:24] Shu: オレオレの方だよ [2011/05/07 23:42:14] Shu: DBフォルダ直下に置いてあるやつ [2011/05/07 23:44:09] Linda Linda: あれ、Dbgとか混じってたのか。こっちには無いぞ(´・ω・`) [2011/05/07 23:44:34] Shu: あれ? [2011/05/07 23:44:53] Linda Linda: あ、すまんあった [2011/05/07 23:44:58] Linda Linda: 消しといてくれ [2011/05/07 23:45:16] Shu: うむ、まあ消したらちゃんとコンパイル、 [2011/05/07 23:45:28] Shu: 返り値が無いメソッドがあるから通らないけど [2011/05/07 23:45:30] Linda Linda: 俺のほうにはlinda_pp.twiccaPlugin.Dbgが別プロジェクトにあるからエラー出なかったのか [2011/05/07 23:45:48] Shu: 無理矢理そのパッケージからimportしてたんだな [2011/05/07 23:45:54] Linda Linda: みたい。 [2011/05/07 23:46:01] Linda Linda: とりあえず、今日はこんなところにしとくか [2011/05/07 23:46:11] Shu: ほむほむ [2011/05/07 23:46:37] Linda Linda: どのメソッド作るかとか分担したほうがええんかなー [2011/05/07 23:47:24] Shu: DB-Operatorの中身はあんまり大した事ないと思うけども、どうしよう [0:01:24] Linda Linda: うーん [0:01:50] Linda Linda: とりあえず、適当にメソッドで担当決めるか [0:02:11] Shu: おう [0:29:50] Linda Linda: この隙に担当決めようか [0:30:04] Shu: うむ [0:30:09] Shu: (静観してた [0:30:30] Linda Linda: 俺が get*とcreate*作るわ。それでいい? [0:30:54] Shu: じゃあ僕がセッターになるのかな [0:31:07] Linda Linda: やね [0:31:13] Shu: おk [0:31:22] Linda Linda: 期限は来週のミーティングまでで。 [0:31:33] Shu: 了解 [0:45:32] Linda Linda: そういや、DBのデバッグどうしよか [0:45:51] Shu: 考えてなかった [0:50:11] Linda Linda: http://www.javadrive.jp/android/sqlite_shell/index1.html [0:50:16] Linda Linda: こんな方法があった。 [0:50:52] Shu: これはつまり、何 [0:51:06] Shu: 中身が直で見れるって事かな [0:51:37] Linda Linda: そういうことみたい [0:51:46] Shu: なるほど [0:51:58] Linda Linda: あれ、なんかちがう? [0:52:10] Linda Linda: databasesのディレクトリ内を見てるだけかこれ [0:52:25] Shu: お? [0:52:27] Shu: どうなんだろ [0:53:50] Linda Linda: 端末をマウントして、sqliteでコンソールから見るしかないんかな [0:54:07] Shu: うーん [0:54:13] Linda Linda: それならもう、ログに表示させたほうがええか [0:54:25] Shu: まあそうするのが楽かもな [0:54:40] Shu: DBのデバッグ手法、僕はよく分からんというのが本音 [0:55:11] Linda Linda: 同じく分からん [0:55:45] Linda Linda: こないだ作ったのはデータベースがすごく単純やったからバグすら出なかった。 [0:56:07] Shu: うちのbotのDB、なんかバグってる気がするんだが放置してる [0:56:33] Linda Linda: botは何て言うデータベース使ってるん? [0:56:46] Shu: GAEのデータベースだなー [0:57:17] Linda Linda: ほむほむ [0:57:31] Shu: フレームワークとしては、GAEがデフォルトで提供してるモノじゃなくて、slim3っていうラッパーを使ってる [0:57:44] Linda Linda: そうなんか [0:57:47] Shu: これの扱い方を学ぶのに結構時間かかった。 [0:57:54] Shu: あと扱い方そろそろ忘れてる [0:58:04] Linda Linda: Androidも簡単なラッパーがあればええのになー。直にSQL文でいじるの面倒だし [0:58:20] Linda Linda: ああ、rowQuery()とかはあるけどな… [0:58:36] Shu: 一応って感じだな… [0:58:50] Linda Linda: ほとんどSQL文書くのと変わらんからなw [0:58:57] Shu: slim3はデータベース用のクラスを作らなきゃいけなくて、結構制約ガチガチでめんどくさかった [0:59:14] Shu: ガチガチって言うほどでもなかった [0:59:21] Linda Linda: ふむ。なるほど。 [0:59:30] Linda Linda: まあ、とりあえずDB組は今日はここまでにしとこう [0:59:35] Shu: ほいほい [0:59:43] Linda Linda: 体調よろしくないやろし。 [1:00:08] Shu: でもslim3使ったら、SQLなんて全く書かなくていいようになった [1:00:15] Shu: 体調はちょっと回復した [1:00:18] Linda Linda: 裏山 [1:00:32] Linda Linda: まあ、SQL文書くのも若干楽しかったけどな [1:00:48] Shu: あ、SQL書いて問い合わせする事もできるよ [1:00:55] Linda Linda: fromをformにtypoしててエラー吐いてたのには残念な気持ちになった [1:01:10] Linda Linda: まあ、書かなくていいなら越したことは無いなw [1:01:22] Shu: ていうか、うちのbotだとSQL書くような問い合わせを必要としなかった [1:01:42] Shu: DBの全タップル引っ張ってきてfor文で処理するからな… [1:01:58] Linda Linda: ほむん。 [1:02:18] Linda Linda: あーそうや、さっきのDataBaseOperatorやけど、 [1:02:25] Shu: うん [1:02:27] Linda Linda: public void closeDB(){ db.close(); } [1:02:33] Linda Linda: 末尾にこれ追加しといてくれ。 [1:02:37] Shu: おk [1:02:42] Linda Linda: データベース閉めないと怒られる [1:03:20] Linda Linda: んじゃまあ、俺らはこれでお開きにするか。 [1:03:28] Shu: おつおつ [1:03:32] Linda Linda: おつーん