All Stories

小作坊使用开源软件协助软件开发

  这是一个总结,也是一个开端。所谓总结,即是到现在我已经发现并已尝试使用过这些东西,现在整理一下,罗列出来。所谓开端,即是从现在开始,我要好好使用这些东西,应用到实际中去,提高效率或减轻负担。  小作坊,适合于个人单干,或小型几人十几人的团队,如果对于大型的团队,我觉得我们公司那套其实挺不错的,毕竟人家花了我也不知道多少钱从IBM引进来的。所以小作坊有一点很明显的区别是,资源很有限,从硬件到软件,从资金到人力,都是很匮乏的。这里罗列出来的东东,全部都是开源的,而且是相对比较成熟的,就是为了应对上面提到的小作坊的各种可能面临的困难和不足。另外还要提到的是,这里讲的是“协助”软件开发,其实是针对整个软件开发周期中各阶段的活动,而不是单纯的在编码调试阶段的活动。最后一点,这是面向Windows环境下使用VC/Delphi等桌面应用开发人员的方案。1、建模——StarUML这个东东据说是个韩国人开发的,用Delphi写成,功能也许没有Rational Rose那么强悍霸道,但用来画个UML图、序列图什么的,已经足够了,而且安装包才20MB左右,快速轻巧。想想Rose需要多少钱,其实我也不知道,嘿嘿!2、版本控制——TortoiseSVN当然用SVN,传说中CVS的替代者,而Tortoise这个shell扩展真的方面。在Windows下用SVN如果不用命令行,就用它了,没啥好说的。不过说实话,VSS也不错,尤其是2005版文件传输效率较6.0提高了不少,而且和VC的IDE集成得很好。所以见仁见智了,对于不用VS工具的,就强烈推荐这个东东了。在单机上可以直接找个文件夹作为仓库就可以直接使用。3、项目管理——Open Workbench项目管理?我用得上吗,我自己也怀疑。但它号称可以和MS的Project匹敌,本来是一个公司开发的,后来捐献给开源社区,貌似他们也比较有钱的说,安装包还是用InstallShield做的。我大概最多也就是用来作作日程安排而已吧。4、持续集成——Cruise Control不用多说了,就用Cruise Control了,刚刚才学会,其实也没咋学,就是把同事那个脚本抄来改了改,真的挺好用挺喜欢的,现在最新版已经是2.7.1了,拿2.5上可用的脚本直接就能正常使用,而且比起2.5来,还少了乱码问题。5、Bug跟踪——MantisBug跟踪系统好像很多,商业的、开源的都有,比如FrogCreek,BugZilla、BugFree等等,选择Mantis只是因为我已经有点习惯它了,主页上有打包好的,直接运行一个批处理文件就能正常工作,特别提醒一下,要把config_default_inc.php和config_inc.php里的SMTP配置都改好,然后默认的账号administrator和它的密码root,这个我颇花了点时间去搞,开始没看明白帮助,晕!6、开发文档编写——doxygen也就是在写代码的时候插入一些规定格式的注释,然后运行一把doxygen,就能从中提取出内容生成多种格式的文档。不过似乎好像,我自己很少写注释的说,只有开源的项目才这样做得比较多。7、用户帮助文档编写——CTeX也没啥好多说的,用户帮助文档Windows上以chm/html格式的最为流行,很多大型软件公司的产品都会配上PDF格式的manual。如果想生成PDF格式的帮助文档,就用CTeX吧,这个东东还真的不错,相比Word来,完全相反的两种思想和作法。Word一开始会觉得上手很容易,所见即所得,但是内容格式一多,再进行修改什么的就很容易乱,而TeX则相反,一开始觉得很麻烦,所想即所得,但是一旦初稿已经形成,再进行修改什么的,就不容易乱了,呵呵。8、安装程序制作——Inno Setup以前用过Wise,感觉还不错,不过人家是商业软件。后来找到了Inno Setup,就喜欢上了。它用Pascal的脚本,可以调用Windows的API,可以完成很多高级的任务。其它还有NSIS之类的也应该不错,但没用过,暂不考虑了,而InstallShield一方面是商业软件,另一方面好像显得有点杀鸡用牛刀的感觉,嘿嘿。  就是这些了。

生活真他妈的无聊啊

  其实是因为人太懒,要做的事情很多,我却宁可无聊地消磨时间!  明天打算去看一下相机,要是价钱合适就买个。

持续集成

  今天突然想起来,要一个同事教我怎么冒烟。项目组里用的是CruiseControl这个持续集成框架,通过编写xml格式的脚本,可以让它自动从版本控制系统里获取最新的代码,自动编译,自动打包,最后进行发布。同事大致给我讲了一个需要进行修改的三个xml配置文件的用途及里面一些元素的使用方法,然后我就开始在自己的电脑上进行实验,开始遇到一点困难,怎么都弄不好。先是要用它来启一个Web服务器,好像自带的是apache,因为要用JSP,还要用ANT,所以还得装JDK,装好JDK却不知道还得在环境变量里添加一个JAVA_HOME设到JDK的目录去,所以总是连网页都显示不出来,后来在同事的指点下,设好环境变量,页面终于出来了。不过取代码、编译、发布的过程总是失败,最后发现,好像是首先,指定的路径不能再空格,即使是使用8.3格式也不行,然后,得小心地设置各个源代码、工程等的存放路径,这样才能继续,保证编译时能取到正确的工程文件。其实到后来才了解到本质,就是一堆命令行的集合,只不过有些常用的功能它提供更方便的命令来执行,比如文件操作、版本控制管理系统操作等等。  现在,我给自己也建了个本地的CruiseControl,可以每天冒烟了,哈哈,这有一个好处,每天可以自己设定一个时间,然后让它自己运行,编译完后执行安装程序的脚本,制作好安装包,再压缩打包,最后就是一个完整的程序包。  仔细想想,转项目部后的近半年,还是学了一些有用的东西。比如除了这个外,还有MFC编程,至少现在能用MFC+Codejock的库写些简单的程序了,使得我现在几乎完全放弃使用C++Builder/Delphi了。对COM编程也有了很肤浅的了解,对Scintilla的使用方法的了解……等等等等,说不定对我以后都有帮助。  现在要做的一体化平台已经决定用Boost了,老大应该也不会太反对了,因为我的方案已经基本确定,Demo都给他看过了,现在可以好好使劲用一把Boost中的一堆堆让人眼花缭乱的模板了,哈哈哈哈,真是开心!

长吐一口气

  今天老大来跟我讨论那东东的设计方案,居然说要用PHP/ASP之类的东西做个网站,把我郁闷了一把,不过好在我最后发现用这样的设计是无法比较方便地实现P2P文件传输的,最后老大只好同意照我的想法来实现了,真是有点庆幸,不然我就要郁闷了!不知道为什么他那么喜欢Web的东西,而不知道为什么我那么不喜欢Web的东西!而且那帮人真的是COM/DCOM技术的狂热爱好者,只要搭得上边的都想用这个来做,真是晕倒,而恰恰我是一点都不感冒,如果有可替代的其它技术,我就宁可不用的。有些地方不用COM实在没有其它方便的方法了,也就没办法了,比如Shell扩展之类的。  除了把设计方案讨论了一下,今天都没怎么做,还在担心那个流程图怎么画,昨天后来想了想,光是Graphviz还是不够的,Graphviz只是根据依赖关系自动给出图形,但具体的节点处于什么位置,却好像没有提到。  另外,又学到一个东西,在HTML页面中表单内容通过URL传递时,像中文之类的非标准ASCII字符,会先经过编码,以ASCII可见的方式传递,开始我看asio那个例子里面的代码,只是简单的转换,后来我把Google桌面搜索的页面改了一下,发现就变了,最后发现人家是用UTF-8编码来转换的,经过反复的试验,最后得出结论,IE打开的HTML页面如果是UTF-8保存的,就会把表单传递的内容也以UTF-8格式转换,如果以ANSI格式保存的,则也以ANSI格式转换。如果要从UTF-8转到ANSI,可以用Win32 API MultiByteToWideChar先把UTF-8转成UNICODE的,再用WideCharToMultiByte转换回ANSI就可以了。

今天写了点代码

  我等不下去了,今天先自己写了点代码,把asio那个http server的代码copy过来用了用,效果很不错啊,哈哈,仰天狂笑三声先!  现在是很确信这个东东的最大难点是流程图的自动构成,再生成带有热点链接的html页面。跟老大稍微讨论了一下,他提到我们可以让用户自己填一个规定格式的表格,我们再从表格中生成流程图。这确实也是一种解决问题的思路,而且让我突然感觉眼前一亮,似乎这个问题也不再是不能解决的了。老大提到可以用VML这样的东东,我没听说过,不过却知道有Graphviz这个东东,似乎可以解决我这个问题。  看起来业务逻辑相对是一个很简单的任务了,但如果确定要用Graphviz的话,还得学习一下它的dot语言,虽然我可能最后只用到它很小一个功能子集。时间只有3个月,11月底就要有可用的版本来试点,可能会有点紧哦。抓紧时间,争取快点把那些不是很困难的部分早点完成,然后来攻关这个流程图生成、html页面生成问题。  晚上afei打电话来慰问了一下,应该是xcc跟她说了我的事。然后谈了一会儿关于工作的事情,心里又舒畅了不少,等这个项目完成了,如果没有什么大意外的话,我一定要走了。

asio真是牛x啊

  今天开始搞新项目了,这个项目需求好久好久前就出来了,一直拖着,大概的设计思路我也已经有了,但从工作的角度讲,今天才是真正的开始,从需求分析开始。其实我觉得需求已经比较明确了,只是那些人到时候估计会不停地改口,这是很让人郁闷和气愤的,但也是不可避免的。  鉴于打算用类似Google桌面搜索那样的界面技术,所以得先研究下本地建一个http服务器有困难,看了看asio的例子程序,估计所有代码加起来不到100KB吧,但确实已经是一个可用的http服务器了,我都用bjam编译运行过来,效果很让我欣喜若狂,本来这样的只是为了本地建一个给本机用的服务器,足够了啊!所以不禁要感叹一下,asio真是牛x啊!  老大一直很担心到时候拿不出东西来,总是叫我好好讨论一下需求。我自己的想法,这个东西要是把所有支撑模块都做好了,业务逻辑其实是很简单的一块,随便怎么改都行,应该很灵活,即使到时候发现他们的要求变了,我应该也能快速作出响应。  中午没睡着,下午就虚了,晚上就又累又困了。

睡不着

  梦中无数次出现她那羞羞答答用手压着嘴唇跟我说的情景。我使劲儿安慰自己。这是第一天,这样的日子还会有多少。

挺意外的

  居然接到luolu打来的电话。正在看小说的我,先是看到一个看不到号码的来电,接通后断来,后来是一个很奇怪的号码,还在那里用普通话问我知不知道她是谁,我一开始当然听不出来了,毕竟也是好久了嘛,于是老实地说听不出来。好像前一次打电话是我刚来深圳不久,她刚好回国,我就打到她家里,到现在也近两年了。而且这些年来每次只能通过电话才会听到一下她的声音,每次听到的声音好像差别又都挺大的。不过几句话下来,还是猜出来了,我马上说,这么多年了,我哪会这么容易能听出来啊。并且我真的挺意外的,因为从来没想过她会打电话给我,我也一直在疑惑她怎么会知道我的手机号的,而她却说是我以前在QQ上告诉她的,晕,我自己是一点印象都没有了。其实这么多年不见,真的能说的话题已经挺少了,她说知道hw死了人了,来慰问一下,居然连她这个身处异国他乡远在欧洲的人都能知道这个事,这个影响真是太坏了。顺便还问我结婚没,我说你都没结,我哪会结啊,然后问我有GF没,很惭愧地告诉她,本人魅力不够,还没有,唉,刚刚正在郁闷着呢!另外又闲扯了几句,问她回国之日之类的,实在没什么话题可以说的,最后她就说,多联系啊,只是她在上班,不能开QQ,不能开MSN。然后我说用邮件就行了,她说她是小女孩,当然我要主动写给她先,呵呵,能这么跟我说话的,大概也只有她了吧,呵呵。

失落,然后解脱

  虽然早已隐约感觉到了,但是亲耳听到从她口中亲自说出来,还是觉得挺失落的。虽然一直以来都告诫自己,动什么也千万别动感情,可是我还是一步一步陷入了自己造出来的那个泥潭中去了。细细数来,这样的情况已经不是第一次了。总是一开始自己装清高扮酷,然后等日子长了久了,自己慢慢投入进去了,而人家却已经要离去了。  快下班的时候,小妞和小思宇突然发邮件说一起吃饭去。我真想说,你们是我这颗漂泊的心避风的港湾啊。吃饭完,三个人慢慢走回百草园,我什么也没跟她们说,但心里觉得比较安稳。回到家,给xcc打了个电话,倾诉了一下。xcc还是比较会安慰人的,分析形势,价值取舍,说得头头是道的,真的很让我觉得舒坦。  失落过后,接着的是解脱,因为可能会面临的很多困扰都没有了,大概我的食欲也会慢慢好起来吧。至少我很孔雀地感觉到她还是比较在乎我的,或者说曾经在乎过我的。  让人不能自拔的,除了牙齿,还有爱情。