右舷

宇宙,人类最后的边疆

iTimeLog是我的一个个人项目,由于开发者只有一人,所以目标也很简单,iTimeLog集中关注两个功能,一个是记录,一个是检视。其中检视很重要,而从功能上讲,记录最优先。为什么这么说呢,因为检视是记录的目的,而记录本身只是一个不得不做的事情罢了。至于记录为什么是不得不做的事情。《奇特的一生》中有一段很好的表述:

我们的记忆是靠什么?靠事件。我们的生活是拿事件来做标志的。它们仿佛是路标,路标之间却是一片空白……比方说,我自从写柳比歇夫的小说以来,最近这几个月的时光都跑到哪儿去了?伏案写作的时间本身并不多,这些日子都干什么了?我可是干事儿来着,一直忙得很;究竟忙些什么,却记不起来。是瞎忙还是忙的正事——这九十天该怎么总结呢?光这几个月倒也罢了……以往,年轻的时候,每逢过年,我总猛然想起,一年又过去了,我决心要做的,并且也向别人保证了的,又没有做成——一部小说没有写完,诺沃戈罗奇纳没有去成,有些信没有回复,同谁没有见成面,又是什么没有做……拖啊拖,结果是无可再拖了。   
如今我尽量不去回顾。随遇而安吧,干了就算了。债务太多了。   
当然,我也不愿意承认我是破产了。最好不去想它。最聪明的办法是对自己的生活别去思考。    

对于工具的设计来说,最好是能把不得不做的事情自动化,如果做不到自动化,就简单化。iTimeLog在简化记录部分做了许多工作,比如快速输入,Redo按钮,模版,更好的模版,还有一些你们看不到的工作,比如加快程序启动速度,减少资源占用降低程序在后台被K的概率等。回顾开发过程,我发现到现在为此几乎所有的工作都是在和录入这事儿较劲。其实做iTimeLog的最初原因就是app store上能找到的timelog app都不够简单。或者说得不得罪人一点,以我的使用习惯来说不够简单,而我刚好是一枚码农。

刚刚提交的1.5.0是一个分界版本,在1.5.0之前,iTimeLog的重心是记录,之后,重心移到检视部分,具体来说,就是报表。iTimeLog将会从记账类软件那里学到许多统计报表相关的功能。时间就是金钱,其实人类对金钱记录方面的努力很多时候也可以用为时间记录上。那么为什么不直接使用记账类软件?因为它们的输入部分不够简单嘛:)

检视和统计功能能带来什么呢?举个例子就很清楚了。根据我七月的记录,由于住在离公司较远的地方,交通时间和骑车时间加起来接近31个小时,这看起来好像没什么,但是比较一下花在个人项目iTimeLog上的时间才24小时21分,以纯时间来看,是一个巨大的浪费,这个一事实帮助我们做出一个决策,搬到离公司近一点的地方住,哪怕租金贵一点。

这就是记录和检视工作的方法,找出时间黑洞,然后想办法避开它。希望iTimeLog能持续给用户带来这样的价值。

###最重要更新:预算

这是一项从记账软件中学到的功能,(邹老师在试用了iTimeLog之后也提了这个建议)设置预算,所谓预算就是你事先设定了这一天中你应该花多少时间在哪件事情上面。

budgetSetting

先来看看设置界面,我们设计几个可设置的点,你可以设定这个预算是属于类型的预算,还是事件预算。事件预算当然是指单个事件,例如我设置了每天为公司工作7小时以下,这当然不是为了摸鱼,而是一种效率要求,我希望7小时完全成别人8小时的工作,多出来的1小时完全可以为用做投资用(这里的投资是指重要而不紧急的事)。

对于看漫画,看美剧,喝喝咖啡聊聊天这些活动,统计为消遣,设置每天不超过3小时实际是对自己是很好的,一般通过2个小时就很幸福了。

除此之后,还可以设置预算是不是“仅工作日”的预算,工作日预算指的是每周只算周一到周五。

接下来让我们看看统计结果。

budgetShow

统计结果现在只在统计列表中,我们做预算时只做了日预算时间,周预算和月预算其实是根据日预算累加出来的,如果是工作日事件,累加时会自动刨去假日。在这里我们用红色代表未达到预算要求(不管是多了还是少了)。绿色表示安全达成预算。

上图是我这个月的实际统计结果,可以看出工作和消遣都在最初的计划内,但是投资时间还差少许。

根据这个结果可以为下个月做出更好的预算,定出更好的目标了。

dontwarning

###免打扰

作为上版推出通知功能的一项补充。我们在本版加入了免打扰功能,因为我们发现如果你设定了退出程序之后隔一段时间提示,iTimeLog有可能会在不适当的时间发出通知,比如说在睡眠时间每隔25分钟提示一次,这是很烦人的。

很抱歉我们之前考虑不周,这一版我们补上了这一缺失,您可能设定iTimeLog在一天中的任一时段保持静默。

###其它改进:

####下滑收键盘

在主输入界面中,出现键盘或模版选择时,下滑列表,自动收键盘。

####类型显示事件

从类型列表进入详情列表时,显示具体对应的事件名称。

这一版在苹果审核的抽屉里放了两周多吧,其实是两版合一。主要是改过是增加了通知,通知的目的是这样的:您花了十二块大洋买了这个app,别让它在角落里落灰了。

我们收到过很多反馈,说记录时间虽然不难,但坚持却不容易。我们的想法是初期先由软件在特定的时间时行提醒,辅助您养成习惯,习惯养成了,提醒的使命也就完成了。

notiinterface

好了,先看一眼,iPhone上的通知差不多是这样的,每到需要通知的时间,无论你在做什么,都会在屏幕上方看到这样的东西,点击它,就直接进入iTimeLog软件了。

noti

通知提醒的设置功能在设定界面中,点击“提醒”,会发现有两种可设置的提醒项,一种是退出app提醒(来自邹老师的建议),app退到后台后,时不时地提醒你要注意记录时间,可设定从15分钟到60分钟不等的时间。个人建议设定在25分钟以上,时间太短的话会有不断被打扰的感觉。设成25分钟的话,也可以当简易番茄钟用:)

还有一类,共三种,就是回顾反思提醒,定时提醒你要进行时间记录的检查,总结,反思。记录当然是为了反思的,不然记录就没什么意义了。

###新输入

本版我们提示另一种输入方法,估且叫作模版式输入,主要的想法就是在输入事件的同时能把类型给填了,而不需要在事件上点击编辑专门去下一个页面填写类型。

tempinput

模版式输入的格式是“事件:类型”,即你在主界面输入事件的地方,直接填入事件+冒号(全半角冒号都支持)+类型,app自动将输入的内容切开,前半部分作为事件名称,后半部分作为类型名称。

###化学反应

这种输入方式极大地简化了类型输入的操作,开发完成后,我们意外地发现它跟模版发生了化学反应,也就是说这使得模版这个东西,真正地好用起来。

模版是iTimeLog 1.3.5版推出的功能,分成事件模版和类型模版,初衷当然是为了更方便地输入,然而分开的模版有个问题,就是多次输入同一事件后,还需要一个个分别是修改它的类型,并不方便,所以我一般也只使用事件模版来处理没有类型的事件。

有了模版式输入之后,这个问题就解决了,以下是我的事件模版:

tempinputtype

主要是一些美剧,这类事件对我来说是不定时的,可能一周一次,可能一个月一次,基本不可能是主界面上找到重做按钮,是典型的应该使用模版的事件,而每次输入事件后再输入类型却也很麻烦。于是我把它处理地这样,使用事件模版,同时把事件和类型输入。

至此,模版输入这个功能真正地好用起来了。

###详情页

detailwithnote

本版在事件详情页也有一个小改进,我们在这个页面把事件笔记展示出来了。在iTimeLog中你可以给每一个事件加笔记,标识当时所思所想,状态,自我效率评价等一切可描述的东西,现在你可以对这一数据时行通览了。我们觉得数据要展现出来,才会有用。

我们好像从来没有正式地介绍过详情页,刚好在这里说一下吧,用过iTimeLog的人应该都知道,iTimeLog的统计分为列表和图表两种。在列表中,列出了某个时间段某个事件的花费时间总和,如果你点击这一记录,事件就会被展开,列出详细时间使用清单。在这个页面,我们还为记录控们准备了一个叫作“全部”的小按钮,于是你可以查看有记录以来,该事件的所有记录,以及时间的总和。

iTimeLog 1.4版正式上线。

修改了几个bug,从这版开始,你可能把自己的图表分享到国内外热门微博上了。

shareit

caak

Inbox,在GTD的定义里面是收集材料的工具。最好的Inbox工具是纸和笔。而Remember在Orgmode里面算是较好的Inbox工 具。它比每次打开org文件来写好非常非常多。它提供的是在emacs启动的情况下,快速的录入工具。如果你的emacs没启动,那用便箋或纸笔会好得 多。原因很简单,emacs什么都好,就是启动太龟了。

配置和基本使用

remember.el在emacs23以上版本是自带的,emacs22及以下版本如果发现没有自带,请自行放狗搜。

  (setq org-default-notes-file "~/.notes")
  

在.emacs中作如上设置,表示你希望将remember产生的note存放在~/.notes中,要我说这可一点也不重要,重要的是下面这一行:

(define-key global-map [f12] 'org-remember)  

快键键。当然,快捷键从来很重要。不过在remember模式中,它显得尤其重要。因为本身remember是随时需要的东西,用完后又应该随时忘 掉。所以调用remember应该越不影响当前的思路又好。一个要键入”M-x org-remember”这么多字符才能调出来的remember又有什么用?

我觉得remeber的用法应该是这样的:

现在我想起来晚上海贼王的汉化应该出新的了,接F12调出remember,输入OP,然后“C-c C-c”保存(C-c C-k是取消),remember buffer自动消失,整个emacs又恢复成写这篇blog的界面。

现在的问题是,我一天可能乱七八糟的出现不少想法,每次都按F12来记录是好的,晚上回家一看,~/.noet里面充满了记录,一条一条分门另类地 复制了不同的org文件中。我承认这是重要的工作,无可避免。可是有些想法我在记录的时候就知道它应该是todo还是普通的笔记,能不能让它们自动归位 呢?

于是我们应该开始介绍:

模版

模版的配置文件如下:

     (setq org-remember-templates
      '(("TODO" ?t "* TODO %?\n %x\n %a" "~/doc/org/home.org" "Tasks")
    ("IDEA" ?i "* IDEA %?\n %i\n %a" "~/doc/org/home.org" "Idea")
    ))  

它的参数是这样的,”TODO”是这个模版的名,”?t”是快捷键,”* TODO %?\n %x\n %a”是整个模版体,然后是该模版要保存的文件,保存后的项目在文件中处于哪个父节点下面(如果没有会自动新建)。

我们以第一个模版为例说一下使用中会发生什么?

当你按下F12(这是我的快捷键)时,会看到buffer被切分成两块,下面出现一个rememeber fuffer。以及一个输入提示(如下图的上半部分所示),按我们之前的设定,出现两个快捷提示。

temp

这时按下“t”,在remember buffer中,会自动接模版体的格式显示出补好的TODO,第一行是“* TODO”,第二行是%x,%x是你触发remember时kill ring(类似于剪贴板)中的内容。最后一行是%a,一个指向你触发remember的地方的link。

这时如果你按下”C-c C-c”保存,这一条TODO项目将会被送到”~/doc/org/home.org”文件中的”Tasks”条目下面。

0%