All Stories

换项目部后第3次搜简历

换项目部后第3次搜简历

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

每天只能睡6个小时

每天只能睡6个小时

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

终于熬到周末休息了

终于熬到周末休息了

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

装了个VS2005Pro版

装了个VS2005Pro版

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

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

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除了要带比较大的库外,用起来也不怎么不好用的,呵呵。

中午去见belovedog了

中午去见belovedog了

  话说昨天晚上才知道她也来这边大队培训了,于是两人约好今天中午一起吃饭。当然是我跑去培训中心找她,虽然两年没见了,但她的样子还是没变,一如既往的漂亮,皮肤之好,典型的重庆美女啊!两人一起吃了顿自助,也算是见过面了,拍了照,在主培楼外面晃悠,雨下大了,于是各自回自己该回的地方去。她还带给我一包重庆产的牛肉干,呵呵。  今天在公司,又发现一个严重问题,还是因为BSTR内存分配的问题,以前虽然也有些比较奇怪的现象,但一直没重视,以为是其它原因,今天才知道是这里错了。纠正一个大bug的感觉真爽啊,不过好多地方我都没有怎么仔细考虑容错处理,要写出一个强壮的程序来,还真的不太容易呢!  另外,那个日志类啊,一拿到公司里去用用,发现好多不对的地方,实在是经不起实践的检验啊,而且实在很难用,风格也很丑,怪不得boost一直没有一个日志库,要做好一个日志库也很难啊!

日志类的回调函数可以是类成员函数喽

日志类的回调函数可以是类成员函数喽

  下午躺在床上突然想到,原来在TclSuck中是怎么做的,看了一下,这么简单,虽然不想给日志类加个模板参数,所以不能有模板成员变量,但一个作为回调的成员函数属于哪个类是未知的,所以一定要用模板,要把这个信息保存起来,只要先定义一个普通的非模板类作为基类,给这个基类添加一个虚函数,再从这个基类派生成一个模板类,就可以保存相应的类型信息了,而日志类中保存的是基类的指针,所以那个虚函数的作用也很明显了,狠一点的,可以把那个虚函数声明为纯虚函数,因为基类实在不需要让它做什么事,只是为了中间过渡一下而已!  傍晚去百草园见了一下hover,他进上研所了,来深圳大队培训,周四就走。吃完饭回到家,给afei打了个电话,她却告诉我belovedog也在大队培训,还说下午她们去见面的时候忘记叫我了,我当然要埋怨死afei了,于是给belovedog打电话,约时间见面。  熟识的人进公司越来越多了,从普通校友,到老乡,到同班同学,还有……