个人信息管理整合方案(上)

0. 动机

如果你是一个没什么事情的人,估计这篇文章对你来说一点作用都没,甚至觉得有点无病呻吟。
如果你是个忽然间陷入忙碌的工作中的人,你可能还没意识到工作和生活可以有一套方法去管理。恭喜你,这篇文章目标就是写给你的。当然这里的方案都是我在使用的方案,很多时候也许对你来说,还存在着更好的方案。(举个例子,我用联通,也许你用移动,那么恭喜你你可以用飞信。飞信是开放API的你知道吗?这种优势,写个程序,也许可以让你的烤面包机给你发SMS呢。)
如果你和我一样是一个被事情缠住根本无法脱身而不得不做,而且和我一样是一个崇尚高效鄙夷浪费时间的人,看过这篇文章之后,一定会产生共鸣吧。我希望你能够在下面留言,告诉我你的方法,我们共同进步。

1. 圣经

s2754540 《时间管理——给系统管理员》,Thomas A. Limoncelli
这本书是圣经。
记得第一次读这本书纯属比较懒的一种动机。2008发生了很多事情,在这一年里,我在2月、3月、4月、5月、6月、7月、8月、9月都回家一次。在回家的火车里,读一本书俨然是routine。记得以前拿着Java编程思想啃,也学习过打印出书的某一章读完这样破坏环境的事情。其实拿起这本书的时候我的角色是一个新系统管理员想学点东西,放下这本书的时候是一个激动的我寻找到了知音一晚上没睡着觉满脑子想架一套个人信息管理系统。
可惜豆瓣没有六颗星。

2. 信息中心——E-mail

别告诉我看到这个题目你很惊讶。我也知道很多人一个月都不一定打开一次Email。记得我入职MSRA Intern的第一天,被HR MM(97分!!)领着去见我的Mentor,海东见到我第一件事情是领我到计算机旁边,然后让我先建好工作环境,说,这是Outlook,用你的域帐户登陆。Outlook是你的最重要的工作工具,重于Visual Studio。其实那个时候我已经很重视了Email的作用。

身份:
我知道你是个忙人,你一定有很多种身份吧~你也许喜欢注册很多很NB的邮箱,但是注册了就忘记了。其实,Gmail可以管理这样的多重身份,最终效果就是你只需要在一个Gmail里检查邮件就可以,不需要一次性登录到所有的邮箱。那样真的很麻烦,估计这也是某些人远离Email的原因之一。

[singlepic=18227,600,413]

解决多重身份问题,使用Gmail的Accounts概念。原理其实很简单,大家都知道Email发件人其实是可以伪造的吧。Gmail其实是在你授权之下伪造发件人地址,使用你指定的发件人。

当然不是能乱用的,必须先加入到Gmail中,有一个邮件验证的过程。

[singlepic=18228]

利用Gmail Accounts,你可以用任何一个邮箱的名义发送邮件。
也许你会问,怎么收呢?答案是邮件转发,你只需要简单地登陆进那些邮箱,设置自动转发,然后把所有邮件转发到你的主Gmail,然后在主Gmail把这个帐户设置成Accounts之一,就可以完全不必登录进那个邮箱,进行收发操作了。

[singlepic=18229]

进一步,如果你用126等等一些垃圾提供商的服务,会发现转发是不允许或者需要收费的,这时候我的选择就是不用这家的邮件。当然可能有点偏激,其实Gmail还可以用POP协议登陆进这些邮箱进行收信。不过我总是觉得不爽啊,尤其是Gmail如果自动POP进QQ邮箱收信,每次登陆QQ的时候都会发现,上次登录地点是美国,让人很不爽。原理其实是QQ把POP登陆QQ邮箱也算作帐户登陆了,这样Gmail服务器登陆QQ的POP时,记录的IP就是Gmail服务器,当然在美国了。
如果你用的是Google Apps或者其他Gmail邮箱,会发现这个过程是迅速准确而且令人愉悦的。这也是为什么我极力推荐Gmail的原因,它免费,好用,进取,竭力把所有功能都给你,而且不会想方设法对你收费。

备份:
你的数据,重要的数据,应当备份到哪里比较安全?
回答脑子的,不错,不过我比较笨,记不住那么多。
回答U盘的,赶快去买彩票吧。
回答硬盘的,相信你不久会遇到一次人生重大波折。
回答服务器的,我想告诉你,万一你的网管比较不负责任怎么办。
个人认为,Gmail是个不错的选择。Gmail提供了7273 MB空间(到我写作的这一刻),虽然不够放几百GB的照片,但是放写重要的文档(比如爱人曾经给我发过的全部短信,我都有保留。怎么保留,请见第8部分)还是足够的,这些文档极度极度重要,但是很小,几兆而已。

3. 统一数据集

协同工作的精华在于数据的统一。即,不管你人在什么地方,用哪台计算机,都可以对同一个数据进行工作。这里的数据,可以指照片、Word文档、程序源代码都可以。就是说需要一种方法,使得可以在任何地方都可以立刻开展工作。
简单的做法是拿个U盘…唉,解释一下吧。拿个U盘,拷贝你的全部需要用的数据到处走。缺点,容易丢失,导致严重的个人隐私泄露问题。另外,U盘基于文件系统,到处插,中毒是必然的,不考虑这个,万一文件系统损坏,丢失数据为大。
使用统一数据集这里的方法主要有:
数据同步方法
数据同步是获取统一数据集的最直观的方法,目的是能够在任何地方,很快地获取到最新的版本。
简单的一种方式是用一个FTP软件,在一台服务器上架设一个FTP服务器,然后在每个地方展开工作前,下载工作副本,工作完成后上传过去更新数据集。这种方式缺点明显:带宽占用相对较大,此外不能协同工作。想象这样一种情况:你和另外一个人同时做这件事情。你下载一个版本,修改过程中,另一个人也想修改。他不知道你在改,也下载了版本。你修改结束后上传更新了文件,然后他修改完也上传更新了版本。最后就是服务器上的版本是他修改的版本,你的修改丢失了。
我觉得比较好的解决方案是用SVN。SVN是用于程序开发源代码的版本控制系统。支持多人开发,能够合并简单的更新冲突问题。SVN需要服务器支持,简单的说就是需要一个SVN服务器,然后里面可以设置几个账号,大家一起协同工作。工作前,进行Checkout检出最新的工作数据,然后修改,然后Commit提交修改。服务器会保留每一个版本,这样可以随时恢复到任意一个版本状态。这样可以避免走了弯路回不来的现象。此外,SVN还可以集成到第5部分介绍的Redmine系统中,记录每次更新的详细信息。SVN也有缺点,Windows下还是需要装个软件的,不像FTP一样Windows Explorer可以直接打开。
一张图胜过千个字,下面展示一下同样一个数据集,注意,同一个数据集,在SVN的掌管下,可以呈现的状态:

[singlepic=18251,600,453]

上图是导入了SVN的一个文件夹,在Vista系统中。在这里你可以对文件进行和原来一样的修改,修改结束,右键,提交更新,写上本次更新的内容,SVN会自动提交到服务器去。

[singlepic=18249]

上图是Vista下SVN工具TortoiseSVN中,查看服务器上的目录结构和文件。

[singlepic=18250]

上图是通过浏览器访问SVN的样子,访问的时候一样需要用户名密码。在你特别想在一个地方下载某一个文件的时候非常有用,能上网就行,不需要装任何软件。

[singlepic=18248,600,479]

上图是通过第5节重点介绍的Redmine.NET查看SVN的样子。注意,你在提交中的注释,这里都可以看到,并且可以关联到Redmine的问题,显示当前问题的状态。删除线划掉的表示问题已经关闭。具体解释在第5节。
你要是心动了,需要一个可以在外网使用的SVN,可以联系我~

远程连接方法
远程连接方法主要是解决如何在任何地方连接到你的数据的问题。
基本上看,这个问题是怎么做端口映射的问题。不管是在家里在学校实验室还是在公司,估计共享上网方式是最普遍的。如果是在家里和宿舍,那么你可以对路由器进行设置,映射TCP 3389到你的计算机,这样可以在外网使用任何Windows都会自带的远程桌面软件连接到你的计算机,既然连上了你的计算机,自然数据集的问题不用再烦恼了。
远程桌面可以在任何Windows上打开,在运行中输入mstsc回车即可。

[singlepic=18253]

第一次打开mstsc的你一定和当年的我一样迷惑,输入什么呢?
在这里是一个问题,如何确定你的计算机IP的问题。如果在公司内网,IP一般是固定的,这个好说。如果在家里使用ADSL拨号方式,IP每次拨号都会变动,这就产生了问题,你怎么知道当前这一刻你家的路由器获取到了哪个IP?因为不知道IP,纵然你做好了3389端口映射一样连不上。
解决方案有以下三种:

  • 人肉法:每天上班之前我进入路由器状态页面,拿小纸条抄下IP,然后狂奔到公司,并且一路上祈祷不要断线不要重启不要换IP。
  • 花生壳:花生壳是一款动态DNS软件,有免费的域名可以申请。你装一个花生壳在你机器,这样程序就会自动每隔一段时间向服务器报告IP,然后你访问你注册的免费域名,解析到最新的IP。这是一种不错的选择,甚至某些街机路由器都内置上一个。不过我不太信任,因为很多关键时刻花生壳掉线!然后做网管的我就被人看起来像个傻瓜。
  • 我的办法:我自己写了一个软件,使用花生壳的这种方式,程序运行在后台,我为这个位置(计算机)设置一个名字。程序每半小时会访问一个页面,那个页面把IP和时间和位置记录到数据库。然后我访问一个页面,根据位置的名字,可以查出最新的IP,然后我用这个IP直接连。这也是上图mstsc中Magic IP的来源。和花生壳的区别?至少我可以知道最后一个IP吧。在花生壳里,保持最后一个IP是需要付费的。

[singlepic=18252,600,437]

4. 个人事务管理

第3节介绍个人事务管理,第4节会介绍一般事务管理。首先说说有什么区别。
个人事务主要是个人日常生活的事情,生活琐事之类,特点是与时间非常相关的,在某个特定的时间你必须出现在某个地方做某件事情,比如回家吃饭,去超市买东西都算上。对这种事情你的一般期望是能够避免冲突地办好这些事情,毕竟你不能分身。
一般事务是相对持久的事情,可能是个人兴趣的某种开发工作,写本书,写个程序这种,可以用阶段性来量度(章节、子系统、功能、短期目标等),这些事情可能会遭遇延期,其实也是很正常的事情,所以要可以容纳延期。

[singlepic=18230,600,430]

个人事务管理我推荐Google Calendar。其实Google Calendar做的最主要的事情任何日程管理软件包括Outlook都能做。也许你的手机或者PDA也有同样的功能。不过我总觉得为了查个日程,随身带个Macbook或者HP PDA,绝对是装B的行为。不如礼貌地问问你的客户,我能用一下你的电脑吗?然后打开随便一个浏览器,登陆即可。此外,这叫“云计算”,不会丢失数据哦~

[singlepic=18233,600,300]

此外,Google Calendar最吸引我的地方是它可以用SMS短信方式把任务发到你的手机上,支持中国!移动自然没话说,联通的号码也支持。你需要做的,就是在你的Google Calendar里注册一下手机号码。

[singlepic=18232,600,355]

然后在需要短信通知的项目中设置SMS提醒即可。

[singlepic=18231,600,466]

Gmail的新版本中,Email发送界面中已经加入了实时任务添加,越来越接近Outlook了,我觉得这个功能是Outlook的精华,总有一天,Gmail+Google Calendar可以替代Outlook的地位。
这件事情的极致是这样的,最终,你给一群人发开会通知,带上一个Google Calendar event,然后接受邀请的人的日程表里这个时间变成忙碌状态。这样,你甚至可以查看某个人到底是在哪个时间段有空。

5. 一般事务管理

重点在一般事务里推出Redmine.NET
Redmine.NET是我创建并维护的一个项目管理站点。每个人可以免费注册一个自己的项目,进行进度控制和版本库控制。为什么我要做这件事情呢?原因很简单,我自己的生活和Redmine.NET高度的集成。
Redmine是一个基于Ruby on Rails的开源项目管理软件。

[singlepic=18247,600,356]

Redmine支持: Subversion、Darcs、Mercurial、Cvs、Bazaar、Git和Filesystem这些几乎全部的版本管理系统。
像典型的项目管理系统一样,Redmine可以称为是问题驱动的,以SVN为中心的项目管理系统。

[singlepic=18234,600,447]

上图是一个典型的项目在Redmine中的首页。主要展示一些概要信息。

[singlepic=18238,600,515]

Redmine的核心是问题。一个问题可以是三种:

  • Bug:项目中发现的行为与预想不同的现象,可以称为缺陷或者错误。
  • Feature:计划做的事情,计划的项目应该具有的特性或功能。
  • Support:反馈任务,或者沟通任务,或者支持项目开发继续的任务。

按照项目管理理论,问题需要区分优先级,三级优先级足够处理所有任务。 高优先级类别中保存尽可能少的问题是必要的,可以避免开发团队感到过于沮丧。
如果你的问题列表中包含了过多的S1优先级问题,说明你混淆了问题优先级和问题紧迫性的概念。问题应当具有优先级别和截止时间两个属性。一个问题也许已经延期了几天,但是仍旧没有必要因为延期而提升其优先级。除非因为这个延期导致了其他同级别或更高级别问题无法进行,在这种情况下才导致问题优先级的提升。虽然看起来是因为延期导致了优先级提升,但是真正的原因并不是这样。因此,截止时间近的问题不应当盲目赋予高优先级。

  • High/S1 :S1级别的问题是必须立刻修复的问题。通常有一些突如其来的问题,破坏了发布代码或者耽误了*所有*当前开发。当遇到一个S1优先级的问题时,必须立刻分配开发人员和开发时间处理这个问题,除非有其他S1级别的问题排在这个队列前面。所有的特性(Features)开发和不如它严重的问题都应该放到一边,直到这个S1问题解决为止。
  • Normal/S2 : S2级别涵盖了重要的但无需停止人们正在进行工作的问题。这可能包括非常重要的特性和相当重要的错误修复,但是只要这些重要问题没有影响到发布和阻止掉所有人的开发,优先级仍应该保持为S2级别。按照微软“零错误方法学”,在开发人员打算接受一个新的任务之前,应当首先着手解决现有的S2级别的问题,然后处理S3级别的或者没有归类的问题。如果发现某S2问题由于某种原因无法继续进行工作,或者重要性降低,则应当将其降级为S3。
  • Low/S3 :最低层次的问题。S3应该用在新特性的*相关工作*和*非基础性*的缺陷修复上。S3问题应该在S1和S2中都没有问题时才开始处理。S3中的任务通常可以在规划时拟好大纲,即在设计项目路线图时现行提出题目并加入问题列表,随着项目开发逐渐完善其内容,直至解决。

下半部分:http://lizheng.me/2008/12/personal-life-management-2

1 comment

发表评论