All Stories

又瞎忙乎了一天

  又瞎忙乎了一天。上午先搜简历到10点,然后开始整代码,把VSS接口部分的模块和GT3000接口模块完善了一下,其实就是增加了几个方法。下午没做什么事,只是增加了个花哨的工具栏,并且借此机会,让右键菜单也可以有图标了,图标都是从其它程序里抠出来的,哈哈。主要是找了好久都不知道怎么给菜单项加关联图标,只好通过工具栏来实现了。加了个工具栏,还发现个问题,突然发现鼠标移到工具栏按钮上去时,界面刷新挺慢的,后来发现原来是我的代码里有问题,每次刷新都会调用那个函数,那个函数会不停地输出日志信息,于是我把打印日志的语句都删掉了,还以为会快起来了,结果还是慢。最后才发现,原来是有一个要判断GT3000是否登录的动作,会每次都要调用GT3000的COM接口,它又是个进程外组件,效率当然低了,改了后,效果就差不多了。  还有两天这周就结束了,我给自己定下的目标能完成么!加油加油!  好好整一下那个日志库,再看一遍《应用密码学》,写个库来玩玩。

要好好做一下设计

  虽然需求写得是把每个要做的方面都考虑到了,但实现的时候,突然发现一团乱麻啊!还是得好好设计一下才行,两个交互模块都得写一堆代码啊!  今天无聊的时候,用工具统计了一下我写的两个cpp文件,注释率超过40%啊,哈哈,平常自己在家里写着玩的,基本上都是不写注释的,在公司全是因为有了那几个宏,可以一下生成一片一片的注释块,哈哈,而且很有趣的是,在公司基本没怎么写特别长特别复杂的函数过,都是一小段一小段的,然后每个函数前面都有一块说明性注释,稍微长一点的函数里就有一块一块的注释,也是用宏生成的,就这样,注释率就上去了,哈哈。  争取这周内,应该把主要功能都实现了,之后只是做些修饰润色补全工作。越来越喜欢用VC了,说实话,MFC真的还算好用的,呼呼,尽管不喜欢它会增大文件体积。  那个花里糊哨的日志类也是比较有趣,针对当前的项目改了一下,还可以再改进一下的。不过对于那回调功能需要Boost::function支持,这比较要求高,今天尝试把那部分自己来改一下,结果没弄出来,我的泛型程序设计水平太低了,需要继续努力学习啊!

换项目部后第3次搜简历

  上午搜了一个小时简历,好多公司的人啊!然后开了两个小时会,讨论了些最近的工作上的问题,我基本上没有说话,确实没什么好说的。还决定周末搞活动,去爬南山,然后吃饭。  下午基本也没干什么事,就是把日志部分替换掉了,没怎么花时间。最重要的是,把之后要做的那东西确认下来了,可以开始做了,我突然都有点怀疑自己这次怎么条理这么清晰,头脑这么清楚,把原来看起来乱糟糟的一堆需求整理得有条不紊的,自己都佩服自己了,哈哈。而且老大问我做不做得完哦,6月30号前,我很小心翼翼地说,不完善点的话,功能部分应该能实现吧,其实我心里想的是,6月1号前我就能把它做出来吧,顶多就是bug多点,容错部分考虑不全罢了。老大很是替我担心,说先把重要的几个功能实现了吧!我当然点头称是,下班前把像以前用BCB时一样,先把界面整出来,然后照着界面把后台功能实现,我把视图上的右键菜单项都添加上了,发现要做的事情就是这些了,把这些功能整出来就行,还暗暗地想,要做的真的不多哦!  还是像往常一样,吃完晚饭就回家了。上codeproject看了看,上面好多好东东啊,于是down了一些WTL的文章和代码下来。大部分是些讲做界面的,因为用VCL的时候,从来没想过界面是怎么用代码来实现的。最近可是懒死了啊,在家里怎么都不想动手。想了想,那个要做完全灵活的插件扩展的平台,可以由主程序提供界面,做成MDI的,就可以有多种界面了,比如TreeView、ListView、WebBrowser、Edit等,然后把这个Handle传递给插件按约定导出的函数,插件就可以为所欲为了,对于DLL类型的插件,当然可以直接调用Win32 API来做,对于脚本插件,看来是应该有一个简单的操作Win32 API的函数集才行。另外,不同的界面还需要定义些各自的事件,让插件在事件触发时能做相应的动作,比如鼠标点击等。这种约定后具体实现的函数名可以通过配置文件来指明,这样就比较自由。当然最大的自由应该是能在插件之间的相互调用,通过组合插件的功能来实现更强大的功能,就像Eclipse一样,那才是我想要的东西。

每天只能睡6个小时

  真可怜,虽然是周末,明明是个让人睡懒觉的日子,可是每到那个时间点,就会自动醒来,然后睡不着,然后翻来覆去也睡不着,然后躺着觉得狠狠的无聊,然后起来开电脑!  昨晚睡下之前,发现了让日志类的表现像标准流一样的方法,其实很简单,就是加个成员变量,是一个标准流的对象,然后用一个方法把它的引用返回出去,外部用户就可以用标准流提供的各种设施了。不过这样有一个东西我还没搞明白,怎么知道人家一次IO完成了呢,我只是希望能通过它来接受用户的输出,之后我要把这些输出处理一下再用我的方式输出,这个时机我就不知道了。现在的办法是,到下一次再输出上一次保存的内容,很不爽啊,很不可靠啊!估计方法还是有的,只是我不知道而已。  于是可以不用一个特定的结束符了。还加了个过滤功能,比较有趣。用了一堆编译开关的代码调试起来还真是麻烦的呢,因为很可能写的某段代码是从来没被编译到的,所以错误一直都不会暴露出来。比如这个日志类,涉及到是否是Win32平台、是否是UNICODE编译、是否带有Boost库,几个分支一混合,就是n多种情况,哪那么容易都覆盖到啊!

终于熬到周末休息了

  最近一直过得很忙很累啊,搞得每天回到家都不想动了,只是点点鼠标发发呆了。今天还算比较有成果的,把需求整理了一遍,写了个word文档,给几个相关的人看了下,基本上是pass了,接下去就可以照着这个文档做了。下午就是在画UML图,写概要设计。前些天看以前的《程序员》杂志提到,这是传统的瀑布模型的软件开发流程,如果用TDD,是可以省掉概要设计和详细设计的。哈哈,我回想一下我平常自己写着玩的代码,虽然不是TDD,但也是遵循TDD的原则啊,每次都增加一点功能,让这点功能能正常工作了才开始下一个功能,这样看来原来就是这样,所以我从来没写过概要设计和详细设计,也能整出些小玩意儿来,不过就是从来没有重构过,所以代码一般只有一个版本,之后变得很难看也从来不管,如果要我从头来过,我太懒了,基本上不可能,看看那个到现在还歇菜的LLYF Spy。下周争取努力把那个需求实现了,然后就到了6月份了,剩下的时间里就用来查错、纠错和优化吧!还有另外一个任务呢,唉,真烦!  今天提到了日志,我顺便自告奋勇要改进一下项目中的日志部分内容,要好好研究一下怎么做一下好用又强大的日志系统。今天提到一个需求是,应该能方便地进行过滤。  跟妈妈打了大半个小时电话,说着以后找什么样的老婆,找了老婆怎么样,使劲yy了一把,呵呵。

装了个VS2005Pro版

  从电骡上拖了个VS2005Pro下来,之前装的那个Team Suit居然没有MFC和ATL,我也不记得是不是我当时自己就没装上,感觉这种可能性不大,还是弄个Pro版来用用,公司里装的也是Pro版,虽然公司里现在是用2003来工作的。我心里想着是慢慢摆脱BCB,从VCL中解脱出来,转用MFC或WTL。其实说实话,我还是多佩服VCL的易用性的,只是它跟Boost的兼容性实在不如VC啊,为了一个类库而放弃使用了5年多的东西,还是有点点犹豫的,毕竟很多时候,遇到一个问题,用VCL的话,是很快就能想到怎么做,用WTL或MFC就不行了。  现在反而开始来学10年前流行的东西,真是讽刺啊!很茫然啊,小丫头说我连自己养都不够钱花,我也很心虚啊,一个人过惯了大手大脚不计后果花钱的生活,要是突然真的两个人了,还真的很难适应呢,说不定还会引出一大堆的问题来。说到底,就是得想办法多赚钱啊。

VSS接口用起来还是比较容易的

  VSS提供的接口使用起来还是比较容易的,今天大概用了一下,可以把里面的内容都列出来了,估计其它的什么checkin、checkout、get latest version等也不会很复杂吧,不过没找到怎么get某个特定版本的方法,难道是从version的接口中去找?其它时间还是都花到改bug上去了,得好好研究一下需求才行了啊!另外整了一会儿日志部分,把日志输出到一起去了,当然原来的部分还是简单了点,我自己的难用了点,但信息可以多一点。  又大概看了一下Boost.Log的文档和代码,觉得这个库还是挺不错的,在网上看了maillist上的存档,原来当时是作者自己要求不要被accepted的,因为他觉得这个接口看起来不舒服,他觉得抽空从头再设计一个新的日志库,当时说的可能需要半年或更多时间,现在半年过去了,他果然还没有什么新的东西拿出来。  我准备自己设计一个日志库,初始目标是完全依赖STL和Boost,先能支持标准C++的输出,和Windows环境下的输出,并针对VC编译器,加入遍历堆栈的特性!然后从Booost wiki上取一些需求。最好是能不编译就可以使用,而且不依赖那些需要编译后才能使用的Boost库,比如date_time、threads等等。其实做个简单的,花不了多少时间的。  跟小丫头打了一个多小时电话,小丫头懒洋洋的,真可爱,呵呵。

无聊啊

  挺无聊的,在公司里,在家里,都无聊。这些天突然觉得很迷茫了。

睡到闹钟响

  今天终于是睡到闹钟响才醒来的!  还是觉得挺累的,在公司里没怎么做事,昏昏地过了一天,接到一个新任务,做跟VSS交互的模块,当前的主要问题在于需求尚不明确,而且可能会有些比较麻烦的需求。也懒得去仔细研究需求,就先看些文档和代码,VSS提供的一个ssapi.dll就暴露了所有接口,不过比较怪的是,在VC.NET2003中import时,6.0版的saapi.dll里IVSSDatabase接口居然没有Close方法,而8.0版的是有的!这也不合理啊,难道是真的没提供,亦或是VC的bug?  回到家后,就不怎么想动了,脑子接近处于停滞状态了。这些天越来越不喜欢用BCB了,感觉VC挺好用的,其实一大原因是得意于它的编译器对标准的支持程度好,还有一大原因是对Boost支持好!WTL也还算好用啊,VCL用Object Pascal写成就是感觉不爽了。MFC除了要带比较大的库外,用起来也不怎么不好用的,呵呵。