2008-12-17 mootoh
* due date selection:
今日、明日、それ以外で選びたいところ。
あと、 postpone があるとよいね。
* Localize:
iPhone 側の設定で locale 変えるだけだと、曜日とかが日本語にならない。
=> なった。設定の書式のとこも日本語に変えたらOKだった。
2008-11-25 mootoh
* PriorityView:
TaskView で、priority を選択するためのパーツとして PriorityView というのを
つくりはじめていたんだけど、よく考えてみるとこれは UIButton だけで実現で
きそうだよな。
2008-11-21 mootoh
* edit bit:
オフラインでタスクの属性を変更したときに、オンラインとどう同期するか。
どのフィールドが編集されたかについての情報さえあればよい。
そこで、task table に 'edit bit' というフィールドを追加する。
bit が立っていれば、そのフィールドはオフラインで編集された、
同期しないといけない、ということを示すとする。
これでどうか。
RTMTask のフィールドは12項目あるので、16ビットの整数でよいだろう。
SQLiteに入る整数のエンディアンとビルドしたプラットフォームのエンディアンが
あってないとまずそうなので、そこには注意する必要があるな。
2008-11-18 mootoh
* Goal:
主眼をどこに置くか。
- オフラインアクセス
- 同期
- CRUD ができること
- 速い
これらが最低ライン。
* Models:
- Task
- List
- Note
- Tag
- (Location)
* Sync:
- create:
- upload a new entity created at offline
- download a new entity created at online
- update:
- overwrite online attributes editted attributes at offline
- overwrite offline attributes editted attributes at online
- merge:
- update based on last modified date
- delete:
- delete an entity deleted on another side,
based on last modified date
2008-11-14 mootoh
* advantages:
公式アプリもでてきた今、どう特色を出していくか。
フリーだというだけじゃ弱い。
- UI
- Review しやすいように
- 統計を出す
- グラフを出す
よりタスクを達成しやすくなるように。助けられることは何か?
完了したときのエフェクトを派手に出すというのも手。
2008-11-05 mootoh
* offline editted task:
別テーブルを用意しておいて、IDはいっしょにしておく。
Web との同期時にテーブル間で異なるフィールドがある場合は、
別テーブルの方の情報で update する。
List の移動とか、元の情報が必要な場合に有効では。
2008-11-03 mootoh
* API:
API に渡す引数は NSString になる。
2008-10-30 mootoh
* RTMStorage:
けっきょく、 Web からとってきた情報も DB に入っている情報も、単なる
Dictionary でしかないわけだ。
しかも構成要素が固定であるという。
* Task, TaskSeries:
TaskSeries を使っているから、同期がややこしくなってる感。
TaskSeries の詳細については API で DL したときにぜんぶ処理し終えといて、
DB の方でケアしなくてよいというふうにすると、ローカルにつくってuploadし
てないタスクも、downloadしてあるタスクも透過的に使えるんじゃないか。
TaskSeries を展開してしまった、task テーブルにつっこんでしまうとよいか。
* 同期のプロトコル:
1. ローカルで追加された task をリストアップ
いまは pending task を select してる
ここを、dirty フラグをみるようにする
2. task を web に upload
addTask
3. response から ID とかいった属性を取得
4. とってきた ID をもとに、task の attribute を web に upload
5. ローカルでつくっていた task を remove
6. web からとってきた task を DB に insert
この順でやることで、ローカルの DB table につくっていた task の ID が web
にある task の ID とかぶらないことが保証できる、だろう。
ローカル用の TaskSeries ID を特別なものとしておけばよいかもしれない。
-1 とか。
-> よくない。TaskSeries は name とかいう task 固有の情報をもっているので、
複数の task をひとつのローカル用 TaskSeries にまとめられない。
dirty にも複数の種類がある。
0: 最新
1: 新しくつくられた
2: 属性が更新された
で、TaskSeriesとTaskの両方にある。
2008-10-22 mootoh
* Beta 01 release:
first release!
* source code on github:
now Milpon source code is open!
* sort tasks:
priority, due でソートできるようにした。
SQL で `ORDER BY task.due IS NULL ASC, task.due ASC` といった具合に
空のものを最後にするように書けることを知った。
2008-10-21 mootoh
* 名前:
Milpon でいいんじゃないか。みるぽん。
2008-10-19 mootoh
* complete button:
スライドしたら出るようにしたいんだけど、うまく touch event を拾うことがで
きてない。2時間くらいやってるんだけど...
2008-10-16 mootoh
* DataPicker:
デフォルトで展開されてるのは使い勝手わるいか。
2008-10-10 mootoh
* RTMList:
{id, name} のペアであればよい、ということに気づいた。
2008-10-07 mootoh
* RTMTaskSeries:
repeat task かどうかは、taskseries が task を複数持つかどうかに
かかっている。
-> ほんとに? API つかって試してみよう。
rrule というのがあるはず。
-> そうだった。 (2008-10-10)
* Task:
ここで必要なフィールドはなにか。
- TaskSeries:
- id
- name
- url
- location_id
- list_id
- tags
- notes
- Task
- id
- due
- completed
- priority
- postponed
- estimate
逆に要らないフィールドは:
- TaskSeries:
- created
- modified
- source
- participants
- Task
- has_due_time
- added
- deleted
* DB GC:
いつ、deletedやcompletedなエントリをDBから消すか、
というのが明確じゃない。
deleted のほうは、API で list get したときに
deleted なものがあれば、DBからも消す、とすればよいか。
* やりたいこと:
List を選択 → その List にある Task 一覧を表示
2008-10-04 mootoh
* Navigation Controller:
誤解していた。
Interface Builder でつくられる TabBarController から参照されてる
NavigationController は、デフォルトのもの。
ここで View xib への参照を指定するのだけど、そのVIewのFile Owner は
NavigationController にしてるとだめ。
ViewController とか TableViewController とかにしとかないと落ちる。
2008-08-28 mootoh
* SQLite types:
NULL, INTEGER, REAL, TEXT, and BLOB
2008-08-27 mootoh
* classes:
- Auth
- Token
- Permission
- User
- id
- name
- fullname
- Frob
- Contact
- id
- fullname
- username
- Group
- id
- name
- contacts
= List
- id:integer
- name:string
- deleted:0|1
- locked:0|1
- archived:0|1
- position:integer
- smart:0|1
- sort_order:0
= filter:string
% tasks
= Location
- id
- name
- longitude
- latitude
- zoom
- address
- viewable
- Setting
- timezone
- dataformat
- timeformat
- defaultlist
- TaskSeries
- id
- created
- modified
- name
- source
- tags *
- participants *
- notes *
- tasks *
- url
- location_id
- rrule ?
- every
- text
- Task
- id
- due
- has_due_time
- added
- completed
- deleted
- priority
- postponed
- estimate
- Note
- id
- created
- modified
- title
- text (element)
- Time
- timezone
- precision
- Timeline
- text
- Timezone
- id
- name
- dst
- offset
- current_offset
- Transaction
- id
- undoable (bool, 0 | 1)
- Error
- code
- message ?
* RTM4iPhone: started.