2008年8月24日星期日

给MonkeyGTD初学者的信

你好:
首先,你要知道GTD的基本知识。
GTD是用来管理日常事务的一种工作方法。而MonkeyGTD则是一种帮助你实现GTD的软件。其实存在许多的GTD软件,而且许多人也采用Gmail、Outlook等常用工具来实现GTD。而我则是将MonkeyGTD与纸笔结合来使用的。GTD的宗旨在于提高工作效率,对于究竟采用某种工具并不是很重要的。最重要的是工具要能符合你目前的工作需要脱离目前的工作需求而单纯的学习GTD软件是不会成功的。毕竟它不是Word、也不是Java。
如何确定自己的工作需求呢?先准备一张大白纸和几种颜色的笔,然后将你所能想到的要做的工作写下来(用色笔标注其不同的优先等级),然后用线段将其中有关联的工作联起来。比如:"整理办公桌""将文件夹中的下载歌曲整理""刻录工作日常文件"等。当你完成这步后,你就可以开始使用MonkeyGTD了。
打开MonkeyGTD,先创建一个Project(项目),然后在项目中建立一些Action(行动)。比如"工作文档的整理"项目中就可以将上面的"刻录工作日常文件"作为一个Action。在GTD中Action是有优先次序的,如"Next(立即要做)""WaitFor(等待某人或某事发生时做""Future(暂时不急日后再做)",将不同的Action标识上不同的优先级。MonkeyGTD会自动将不同的Project中的"Next"工作组合给你看。这样你要做的事情就清晰了。
注意GTD是手段,一定要循序渐进,创建适合自己的GTD,提高生活质量是最重要的。

2008年8月3日星期日

用dot绘制有向图

Dot 是 Graphviz 套件中的一个重要工具,其可以方便地绘制有向图。
有向图是计算机科学中重要的表述手段,常见的 流程图 就是一种有向图。

Dot采用一种很简单的语言来描述有向图中的Node(节点)和Edge(边)。

在使用Dot前,应先浏览 Graphviz 安装目录下的 share/graphviz/doc/pdf/
下的 dotguide.pdf 文件,其中
P5 一个很好的样例,描述了Dot的基本使用方法,涵盖大多数 有向图 绘制
P10 Node(节点)的属性设置表
P11 Edge(边)的属性设置表
P12 Graph(图)的属性设置表,上述三张表可以打印出来作为常用参考
P26 介绍 subgraph 的使用样例,其可以更好地简化和复用
P38 Node(节点)的样式
P39 Arrow Head (边箭头)的样式
P40 Color(颜色)名称目录

在看完上述使用手册后,可以编写一个简单的样例代码试用一下 dot 命令。

dot 命令的详细手册在 dot.pdf 中

建议:
(1)在Windows平台下不要采用dot后缀,其和Word的DocumentTemplate相冲突,会自动打开Word而不是Dot命令,所以采用 dotg 后缀。
(2)如果要在图中采用中文,则要将文本存储为UTF-8格式,并且按照下面的方式来定义节点或者边中的文本字体

node[shape="box",fontname="simyou.ttf",fontsize="10"];


对于有向图,Graphviz套件中还有其它几个工具,都可以使用相同的Dot语言来描述,其生成的图按照不同的算法,呈现的形式有所不同,以适用不同的表述需求。

比如建立一个sample.dotg源代码文件后,可通过下面的批处理来生成多个有向图进行比较


dot -Tpng sample.dotg -o sample.dot.png
neato -Tpng sample.dotg -o sample.neato.png
twopi -Tpng sample.dotg -o sample.twopi.png
circo -Tpng sample.dotg -o sample.circo.png
fdp -Tpng sample.dotg -o sample.fdp.png

2008年7月29日星期二

Windows平台下gVim中的Grep工具的使用

Grep是Unix/Linux平台下重要的搜索工具,如何在Windows平台下gVim中也能使用Grep工具呢?
  • 下载Grep For Win:这是一个开源软件,可以很好的在Windows平台下实现Grep功能
  • 下载Grep.vim:这是gVim的一个插件,用来集成外部Grep工具
  • 配置Grep.vim:在vimrc文件中用命令来配置Grep For Win工具


    " 配置Grep插件
    let Grep_Path = 'D:\InstallSoft\GrepForWin\grep.exe -S'



这样在Vim中采用命令 ":Grep sample E:\CppSource\*.cpp" 就可以在Vim中直接进行Grep了

2008年7月27日星期日

欢迎来到MonkeyGTD 3.0

"GTD"是一门高效实用的工作信念,而"MonkeyGTD3"则是实现GTD的工具。
本文将基于GTD学习与实现的一些经验基础上,介绍MonkeyGTD3的基本概念与新增功能。适用对象:了解GTD,具有强烈工作优化欲望,使用Firefox作为主浏览器。

1.GTD使用经验
在讨论MonkeyGTD3之前,先对于GTD谈一些我的学习与使用经验,因为掌握正确的GTD精神,方能发挥MonkeyGTD3的真正效能。

首先,GTD不是目标、不是道路,而是信念作为GTD的学习新手,常会将GTD作为一种类似与ISO9001的工作流程规范或是CMM5的软件开发规范来看待。在学习的初期就希望能实现如《GTD》作者David Allen所述的工作方案,这是不好甚至有害于GTD学习的。绝大多数人都不可能面对David Allen所面对的工作强度,所以也没有必要照着他的方案来工作。否则就是"教条",会陷入繁文缛节中,最终损失的是时间、精力与对GTD的信心。我曾向一些朋友推荐"GTD"工作法,但他们在学习尝试一段时间后都放弃了,其中最主要的原因即在于此。要明确,GTD的精髓是:用自己的脑和手来解决问题,而不是搁置问题。所以要针对自己的特殊情况来设计工作方法,用Gmail、Palm或者纸笔,每天、每周或者不定期的进行检查,只要是有利于提高工作效率、解放大脑的都是GTD方法。没有什么"GTD规范操作手册",也没有什么"GTD标准进阶路线"。从自我做起,从小处提高,用自我的力量来解放自己,这方能从GTD中体味GTD的快乐。所以GTD是一种信念,类似于宗教中的"自我心理启示"。

其次,GTD要需求驱动,与时俱进。起先应以当前需求为主,从最小处做起,在不断修改增进自我工作方案的基础上,将GTD逐步推广到其它领域。比如我最先只是为了学习GTD,并且找寻对自己目前工作最适宜的GTD工具,所以我只限制用GTD来管理自己的计算机编程语言方面的学习事务,其它的工作仍按照既往习惯来进行。然后随着对GTD的认识深入与对于GTD软件(如MonkeyGTD)的操作熟练后,将其它的工作甚至部分生活琐事都用GTD来完成。虽然《GTD》作者本人可以用GTD来管理极其繁杂的商业事务,而且网上达人能用Gmail、BlackBerry等能实现国际化全天候的GTD,但我尚没有达到这样的境界。目前我只能在PC机前进行GTD,但这已经很不错了,而且也满足了我的需求。随着以后工作生活需求的驱动,我可能会添置一些设备(Blackberry甚至Iphone),并学习如何使用它们来构建更大的GTD系统。但目前不需要,我只要不断地完善目前的GTD系统就可以了。

最后,GTD是一种习惯。要以养成GTD习惯为目标。GTD的道路是很不容易的,其最重要的是要和既有的习惯做抗争。以往当一件事情做完时,我总想去吃点东东放松放松(这也是我肥胖的原因所在),而GTD则要求在事情完成后回顾(Review)一下工作列表,将完成事务设置为完成,并着手准备下一事务。类似这样的对个人自身习性的变更是很难的,由性急到沉稳,由拖沓到守时,都是利用GTD来进行自我修炼的过程。虽然GTD的规模不同,方法各异,但"Get Things Done"的实用目标是一致的。GTD不是用空想或文本设计的完美来衡量其实施价值,而是以所完成的事务的质量和数量为依据来衡量的。而要能坚持GTD的唯一方法,就是将GTD化作自己的习惯,用"GTD的惯性"来改造自己,提升自己的效能。

以GTD为信念,从小做起,以需求为驱动,不断将新的GTD手段内化为自己的日常习惯,是我这几年学习与实践GTD的一些心得。放在本文之前,希望在使用MonkeyGTD之前能先确立对GTD的信心,做好GTD的准备,使MonkeyGTD真正成为有效的GTD工具。

2.MonkeyGTD3简介

MonkeyGTD是一款基于单个网页文件的GTD系统。我从MonkeyGTD1.0就开始使用这个工具(当年的博文)。其小巧精致的结构,单个文件的便捷,与Firefox的完美搭配和GTD理念的精彩诠释是我当年选中这款软件的最重要的原因。自1.0,2.0到今天的3.0,MonkeyGTD正逐渐成为TiddlyWiki平台下最流行的GTD工具。而每次升级,MonkeyGTD都给人以更新的概念,更方便的操控与更美观实用的界面。

虽然MonkeyGTD使用容易,但其最重要的缺点在于文档的缺少和与《GTD》的概念不一致,对于初学者造成许多困扰。所以在本文中,我着重介绍MonkeyGTD的概念,希望能对初学者有所帮助。

3.MonkeyGTD3的组织架构

MonkeyGTD3中的组织结构与《GTD》所述有所不同,其更契合基于Web的组织与管理。就想操作系统用(硬盘、文件夹、子文件夹、文件)这样的多层次系统来组织管理文档一样,MonkeyGTD中采用多层形式来管理事务(在《GTD》中称为"行为(Action)")。
  • Realm:最高级别的组织单元,其从整体上将所属事务进行划分,如在两万高空俯瞰地球。其以标签页的形式在MonkeyGTD3的左上角显示。默认分类是"Personal(私事)"与"Work(公事)"。这个概念是从MonkeyGTD2新增的。
    请注意,虽然MonkeyGTD3提供了新增/修改/删除Realm的菜单,但本人强烈建议新手不要进行修改。MonkeyGTD3提供了足够多的低级别组织单元来进行管理。

  • Areas与Context:第二级别的组织单元。其将所属事务进行大体划分。Areas,即"工作区域",偏重于行为;而Context,即"场景",偏重于空间。Context是《GTD》的概念,而Areas是MonkeyGTD2中新增加的概念。
    举例而言,你可以新增一个 Web Publish 的Areas作为管理 博客发表、论坛发布或者个人网页修改等相关事务(Action)或项目(Project),而增加一个 OnBed 的Context作为在床上时要做的事务的管理单元。建议默认的Areas与Context不要做删除。

  • Project与Subproject:第三级别的组织单元。其是一组具有明确目标与严格时间顺序的操作事务(Action)的集合。注意Project与Subproject是有明确时间限制的,而Areas与Context则没有。Project是《GTD》的概念,而Subproject是MonkeyGTD3新增的概念。由于MonkeyGTD3是基于Javascript的系统,所以建议少用Subjective,最好不要将甘特图的多层Project方式移植到MonkeyGTD中,这样会极大地减慢系统运行速度。

  • Action与Tickler:MonkeyGTD中的最小组织单元。Action是一个具有明确目标的操作事务,而Tickler是具有时间提醒功能的Action。Action是《GTD》概念,而Tickler是MonkeyGTD3新增的概念(会在本文后面介绍)

4.MonkeyGTD3的Action多维空间
在GTD系统中,Action是最核心的基本单元,所有的管理都围绕Action而展开,从此角度来看,MonkeyGTD就是Action的管理系统。在MonkeyGTD中,Action的属性是由多个角度的不同属性来进行描述的,就像Action是一个多维度空间中的一个点一样。
  • 组织维度:Action隶属于某个Realm中的某个Project或Subproject
  • 进度维度:Action是Next、WaitFor或是Future
    • Next:马上要做的事
    • WaitFor:等待某个事件触发而要做的事。这个触发时间可能是别人,或者是某个时间,或者是其它的某个动作。其中某个时间触发是最常见的形式,如开会等。在MonkeyGTD3中,其单独成Tickler对象。
    • Future:未来不确定某个时间而要做的事。比如要看一本不是很急但很想看的书、或者学习打太极拳等。
  • 空间维度:Action是操作者在某个Context(场景)下完成的,比如Call场景就说明其是在电话机旁操作的,而Office场景说明其在办公室完成,而Errand则是在出差路上完成的
  • 区域维度:Action是在某个Areas下完成的,比如其是一个Research(科研)工作,或者是个Training(教育培训)工作
  • 关联维度:在MonkeyGTD3中新增了Contact,其可以将Action与其它的Project或者Action等相互关联起来,在同一个视图中呈现出来。
5.MonkeyGTD3新增的对象

基于前两个版本,MonkeyGTD3对程序在功能与界面上做了许多改动,其中新增了两个重要对象,即Tickler与Contact
  • Tickler应该是MonkeyGTD1.0中的Reminder的增强版。其是具有时间提醒性质的Action。其进度维度指标是"WaitingFor"。其可以很方便地解决如开会、约会等具有确切时间的操作事务,而且其具有Repeat功能,可以方便地进行周期设置。不仅如此,其还可以用来设置一些"Deadline",从而有效提高工作效率,防止过多的过时Action还放在MonkeyGTD中。
    在MonkeyGTD2中将Reminder去掉了,这给我原有的GTD操作带来不少的麻烦。在MonkeyGTD3中Tickler的出现解决了许多困扰。
  • Contact是MonkeyGTD3中新增加的功能,也是我期盼很久的好东东。随着GTD规模的增大,需要将一些在不同Project中的Action放在同一个视图中显示。原来的方式是采用TiddleWiki的Tag,但这样的显示不是GTD化的,其不能够显示Action的其它属性(如进度属性等)。而Contact的出现则(部分地)解决了这个问题。其就像一个张贴便签条的BBS面板,可以将不同的Action放在一起显示,从而提供了从自定义角度来查看整个事务多维空间的能力。由于每个Action只能关联一个Contact,所以这样的功能还是有些弱,但不好总比没有强呀。
虽然MonkeyGTD3提供了不少新特性,但其本质框架变化不大,对于学习GTD和采用MonkeyGTD的新手,我的建议是:
  • 如果每日事务<10件,或者管理action项目<100件(累积),则用monkeygtd1.0。其界面简单,速度快,概念清晰
  • 如果每日事务>20件,或者管理Action项目>300件(累积),则一定要用MonkeyGTD3.0。其优化的面板和新功能会极大提升你的GTD效率。
关于MonkeyGTD3的具体使用,可以通过Email:yankchina@gmail.com与我联系。

2008年7月24日星期四

网络化的工作图

http://websequencediagrams.com/是一个基于网页的工作流图生成软件,其通过简单的脚本语言生成美观的工作流图,有趣且有用。

2008年7月23日星期三

将Txt文档也绑定到Latex-Suite上

用Latex-Suite习惯后,连Txt文档也要绑定上去,同时解决一个问题,即Vim需要检查Tex的格式来决定是否启动Latex-Suite。而我并不用ConTex和PaintTex,故将之屏蔽。修改后的$VIM/vim71/filetype.vim相关代码如下

" TeX
au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl setf tex
"au BufNewFile,BufRead *.tex call s:FTtex()
"yankchina@gmail.com 2008-07-24
au BufNewFile,BufRead *.tex setf tex
au BufNewFile,BufRead *.txt setf tex

这样在编写Txt文件时也能用Latex-Suite快速插入Latex标签了。

2008年6月18日星期三

用Astyle批量美化C++程序代码

astyle是一款很好的C++/Java/C#代码美化工具。可采用下列代码来进行批量美化

REM yankchina@gmail.com
REM
批量将本目录中的所有C++文件用Astyle进行代码美化操作
REM
2008-06-16
REM
设置Astyle命令位置和参数
set astyle
="D://InstallSoft//astyle//astyle.exe"
set mode
=ansi
REM
循环遍历目录
for /r . %%a in (*.hpp) do %astyle% --style=%mode% "%%a"
for /r . %%a in (*.cpp) do %astyle% --style=%mode% "%%a"
for /r . %%a in (*.h) do %astyle% --style=%mode% "%%a"
REM
删除所有的astyle生成文件
for /r . %%a in (*.orig) do del "%%a"
pause

2008年5月6日星期二

Goolge Guice是什么?

阅读《程序员》2008.05期P96的《设计决定、反悔、散弹式修改和架构污染》一文,对于其中的Google Guice不明白,于是上Google搜索一下,直到这是一个Java的IoC容器实现,有利于写成满足DIP(Dependence Inversion Principle)的程序代码。要学习这样的架构,需要很多的编程实践方可以。
参考文献:

2008年4月27日星期日

VIM与Latex-Suite中的问题解决

1.在装载Template时会有自动进行缩进,从而影响了原来的格式。我给Latex-Suite的作者Email后,想到可以在template.vim中的ReadTemplate函数中在exec IMAP_PutTextWithMovement前后进行filetype indent on/off 开关Vim的indent功能;
2.在main.vim文件中修改了$$映射修改成~$<++>$~<++>,从而可以解决在CJK文件中将英文与中文隔离开。
3.增加了一个F3的映射到noh命令,清除匹配搜索结果高亮。

2008年3月20日星期四

bras的自动拨号

我原以为要像Linux系统一样建立一个l2tp的协议,所以从l2tp上下手来查找bras系统的自动拨号程序。今天突然想到bras拨号也是放在“拨号链接”中,是否可以用adsl的自动拨号脚本呢?于是Google一下,果然找到了Windows的命令,是 rasdial linkname username password。再用命令 hh netcfg.chm 可以查到 rasdial 的详细手册。于是做了一个bat脚本。格式如下:

rasdial bras /disconnect

if %1 == a goto opena
if %1 == b goto openb
goto :EOF

:opena
rasdial bras username@a pwd
goto :EOF

:openb
rasdial bras username@b pwd
goto :EOF


如果要想类似服务一样自动启动的话,可以采用VBS脚本,如:
Dim Wsh
set Wsh=wscript.createobject("wscript.shell")
Wsh.Run "RASDIAL cqcnc username password",1,flase
WScript.quit
注意在WindowsXP或Windows2003下面要对目录安全性进行设置,这样在“计划任务”中添加该脚本,就能自动拨号和断开链接了。

2008年2月21日星期四

Windows下的文本查找

原来我一直使用Editplus的“多文件搜索”功能作为Windows下文本查找工具。但现在我离开Editplus转向Vim后,就没有如此“利器”了。想在Linux下的Grep是专门用于文本搜索的工具,所以Google“Windows grep”,找到一个“Grep for Windows”的压缩包,解压并将目录填入系统“环境变量”的PATH中,就可以在Vim中调用如下命令来进行多文件查找了
:! grep -S "sampletext" C:\\samplesrc\*.cpp

另:在TotalCmd中可利用其Alt+7开启搜索框,选中查找文本即可。

2008年1月20日星期日

GVim中更改编码方式

最近在学XeTeX+Zhspacing,GVim中需将文件编码在UTF-8与GB2313之间频繁切换,如果单纯变换文本编码则GVim界面中的提示符都成了乱码,故编写一个键盘宏如下:

"" 更换显示编码
"" 2008-01-21
map :set encoding=utf-8:let $Lang="zh_CN.UTF-8"
map :set encoding=cp936:let $Lang="zh_CN"

与物理学同行——读《几何学的故事》

这部数学史写得比较浅显,但前后有些割断,前面主要叙述了几何的一个重要分支——欧几里德几何的发展与非欧几何的诞生,而后面则介绍了近现代物理学与几何 学,特别是非欧几何、微分几何之间的关系。这就需要读者具有比较好的近现代物理学知识,至少对于“黑洞”“弦论”“广义相对论”“色相”等物理学名词不感 冒。
  ========================================================
  下面是我阅读该书的摘录 {}中是随想
  
  P18 泰勒斯主张,借助于观察与推理,人们能解释自然界中发生的一切。——{自然界是服从规律的}
  
  P27 毕达哥拉斯提出区别自己成员的方法,一是不在公众场所小便;二是在别人面前不进行色情活动。——{可见当时社会风俗,当众小便与性行为是很普遍的,蛮荒呀}
  
  P32 欧几里德《几何原本》最重要的贡献是革新了逻辑方法。——{直到今天,这样的逻辑能力仍需要长期训练方能获得}
  
  P33 每一条论断都必须证明,直觉虽然是一种有价值的指导,但必须在证明的大门口得到检验。......许多时候直觉是失败与错误的,而审慎的形式推理将揭示真 理。——{这是现代很多人所不知道的,现在社会过于渲染直觉的重要,造成许多人的盲从。现实多能归化于博弈,而在博弈中审慎的形式推理的作用是绝对性的}
  
  P35 {方形游戏在日常生活中很常见。能发现公平下的微小差别的人方能积累财富——这是《长尾理论》应用几何学的一个很好例子。这种能力大多要求后天培养训练,会计是基石}
  
  P69 所谓“奥卡姆剃刀”,简单地说就是:一个人应该根据尽可能少的假定为创建理论而努力。——{专门有一本书《奥卡姆剃刀》来论述此种思想对于当今社会的深刻影响}
  
  P87 笛卡尔:“我的全部物理除了几何就一无所有了”。——{现代弦论好像也如此}
  
  P98 平行公理与欧几里德理论其它部分的关系难以捉摸,不亚于它的深奥。
  
  P103 没有平行,距离变得捉摸不定。——{应用到人际关系中,只有保持宽容,你和他人的关系方能稳定}
  
  P123 庞加莱直线——圆的任意一段与圆盘的边界相交成直角的弧。——{初看不明确,细想一想真佩服数学家语言抽象能力,一流的数学家必然是一流的文学家}
  
  P124 双曲空间的庞加莱模型是一个实验室。在这个实验室里,容易发现某些不寻常的定理和性质,这些定理与性质是早先研究过的数学家极不容易揭示出来的。
  
  P128 微分几何是曲面的理论。......高斯指出:一个曲面可以看成本身就是一个空间;二是一个给定空间的弯曲程度可以只在曲面本身上加以研究,而与一个可能包含它或者可能不包含它的较大空间无关。
  
  P137 黎曼说明了如何把球面解释为一个二维的椭圆空间。
  
  P139 {吹起来的呼啦圈,看来世间许多事务都在黎曼几何上,而非在欧式几何上}
  
  P142 避免由于措词有限而导致循环论证的唯一方法,是在这本词典中容纳一些不加定义的术语。.......数学系统也容纳了一些不加定义的术语,并寻求为了使系统有意义所必需的最少术语。
  
  P177 爱因斯坦:“一个人为了考试,必须把所有这些资料都塞入大脑,不管这个人愿意不愿意。这种强制手段对我有这么大的威慑作用,以致我在通过期末考试以后的一 整年的时间内,发现自己考虑任何科学问题都兴味索然。”——{真知灼见,看来爱因斯坦也为“应试教育”而苦恼过}
  
  P210 爱因斯坦:“当一个无识别能力的高度近视的人从地球表面走过时,他不会意识到他走过的轨迹路线是弯曲的。我为发现这一事实而感到十分幸运”。

2008年1月8日星期二

Cterm的自动登录

采用Cterm的默认自动登录方式,不能跳过BBS前面的“十大”等页,所以根据BBS特点,修改自动登录过滤器如下:(当遇到/则执行/说明)
1.请输入帐号 %U\n 输入帐号
2.请输入代号 %U\n 输入代号
3.请输入密码 %C\n 输入密码
4.上次连线时间 \n\n 跳过连线时间页面
5.继续 \n 当遇到继续时都默认跳过
6.好朋友列表 q%e 跳过在线好友页面
7.主菜单 %e 停止在主页面上
8.主选单 %e 停止在主页面上

这样登录就“清爽”多了。

2008年1月7日星期一

Acrobat安装20225问题的解决方法

今天安装Acrobat时遇到20225问题(如图所示),这样就无法使用Acrobat PDF Printer功能。同实验室的也遇到这个问题,解决方法是:
1.修改Windows系统的Path环境变量。
打开“我的电脑-属性-高级-环境变量”,找到Path一栏,复制保存Path栏中的字符串,然后在该字符串的最前面填入
SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;
2.重新启动计算机
3.重新安装Acrobat,这时就不出现20225问题了
4.最后将保存的原始Path字符串再复制回去
Posted by Picasa

2008年1月6日星期日

TotalCmd中F4呼唤Vim

TotalCmd中F4呼唤Vim的命令如下:
D:\Program Files\gvim.exe -p --remote-tab-silent
这样只打开一个Vim,且不同文件在不同的Tab中。