All Stories

再见,2007;你好,2008

  又到了年终总结的时候了。感觉这一年过得飞快啊,刚刚翻了一下上个元旦放假时的blog,原来我和跟雨烟一起去打了个耳洞,现在雨烟和小于都已经在北京了好久了。上个元旦还跟一群同事一起去笔架山,然后去吃自助烤肉,这次只是一个人在屋里蹲着,今天白天去购书中心逛了一会儿,觉得挺无聊的。总之似乎生活越来越单调枯燥了。  首先回顾一下即将结束的2007年吧。在原来的测试组中度过了第1个季度后,便被释放到了现在的系统组,从纯粹的测试工作中解放出来,做工具开发,当时还心里隐隐有点兴奋,以为可以大展身手了,结果当然跟许多故事一样,现实总是不能跟理想完全一致的,相反反而过得很无趣很苦闷。有几次我都想起当年自己不知从哪里听来的一句话,把自己感兴趣的事当作职业,是男人最不成熟的表现了。当然不得不承认的是,我确实不成熟,已经被好几个mm说过好几次了。也许我真的是一种奇怪的存在,与现在社会流行的类型风格步调格格不入。再转回正题,转到系统组后,先无所事事地看了足足一个月的文档,真的是无所事事哦!  终于一个月后,一个工具项目因为进度紧张,把我召唤过去支援,支援了5个月,从5月一直到8月底,那时统计了一下,5个月共写了有效代码6000行,不计注释和空行。这样算来大概平均不到60行/天,呵呵,似乎挺少的。当时觉得有点沮丧,我的产能这么低,其实回想当时在大队培训教材上看到国外的人均日产代码量,似乎也是几十行吧,呵呵。  9月份开始,就把我从该项目中抽出来,单独回去再搞原来的一个文档共享系统,美其名曰,业务流程一体化平台,其实概括一下,就是一个可以自定义文档组织方式的可以点对点传输文件的共享系统。就为了这么简单一个东西,跟那帮人扯皮扯了近两个月,几乎天天是无所事事的状态,因为总是要讨论需求,因为怕到时候做不出来。而我则是每次讨论完花个30分钟回顾整理一下讨论的内容,然后继续无所事事等待下一次讨论。  终于到10月底的时候老大拍板说可以做了,我感觉顿时像一只出笼的鸟儿。不过一直到现在,才勉强算是有个东西了,毕竟2个月时间能做出个啥东西呢!一个人的项目,自由度还是比较大的,比如我用了Boost,这个东东据说在Impeller时期,被老大驳回的,真不知道出于什么原因。其它的,真的一点技术含量都没有,所以做得一点兴趣都没有,一点成就感都没有。整来整去就是写几句SQL,调一下界面控件。  回顾完工作,再来回顾点别的。小丫头被我稀里糊涂地弄到成都去了,这让我当时很咬牙切齿了好一阵,这变态的人生,这变态的命运。然后是一年来在感情上一无所获,屡屡受挫。  总之,2007,一无所有的一年,再见了。  接着是即将来临的2008了。仍然先从工作开始说吧,其实工作上的事自己能把握的太少,只是我现在还是满怀期望地把手头那个一体化平台项目甩手后,把投入到Impeller中去,把想做的东西做一下,就是前两天说的,先把查找替换功能重构了,再把编辑器支持脚本扩展部分先自己给它做了,他们总是想着用COM来做,我并不喜欢,所以不认同,我要用SWIG的方式来做。然后是一个simulator,可能还有图形部分的内容。我现在最想弄的就是socket、图形、脚本与C/C++混合编程这几方面的东东了,呵呵,当然这全是我自己一厢情愿的美好愿景而已。  我一直很清楚,要从公司那老实安分地干下去,靠那点儿钱是没指望的,我要买车买房,讨老婆生小孩,好多事要做,好多钱要赚。所以还得想办法怎么多赚点钱,也许小思宇和孙同学说的真的很有道理,只要有钱了,愁啥。  接着就是上半年学车,考完后,靠工资和年终奖,去买个车。  最后还是一年复一年的期待,希望新的一年里,能遇到命中的那个人,嗯!  你好,2008,我来了!

真是贱啊

  真tmd的太郁闷了,平常要上班的日子,早上总是醒不来,闹钟响了之后还想继续睡,起不来。每到周末节假日可以好好休息的时候,却又睡不着了,早早就醒了,郁闷死了!  在家里写代码总是不行,是不是没有压力的缘故啊,感觉在公司里就流畅得多啊。现在在整的一个用来自动换墙纸的东东,用MFC怎么都弄不好啊,晕,连界面都费好多时候来整!

真是烦死了

  接了无数个电话,当然人家也是打了无数个电话。也许换位思考一下,或许人家更烦一点,那种完全寄希望于别人,自己毫无掌控之力的无力感、恐慌,也许比我的心烦意乱更不爽吧,哈哈。  现在的问题大部分是由于程序运行环境变化,考虑不周引起的。开发环境毕竟是最不容易出现问题的了,呵呵。  下午去参加一个测试行业TMG的会,看到一人介绍了一个叫iTEST的工具。据说这是一美国公司,有80个人开发的,还是基于Eclipse的RCP,看功能似乎比较有趣,说起来没有什么核心技术,但是能解决一类问题,每个license要20000USD,还真是贵呀。其实是一基于录制、重放技术的自动化工具。它的不同点在于,它本身支持多种终端协议,通过它来进行输入,对远端操作,它自动记录下所有的操作,并自动将操作转换成TCL脚本,之后就能重用这些操作序列,进行自动测试。跟平常的Robot之类的自动化体系工具理念不同的一点是,它一开始没有定义为一个自动化工具,只是作为一个操作终端,所以不需要进行测试设计,自动化设计,脚本编写等传统的自动化流程阶段,它的定位在于保存历史操作记录,并在需要时重用这些操作。想了想,似乎有些地方,跟TDL有点点像,因为TDL宣扬的是脚本就是用例,用例就是脚本,有脚本就可以直接手工测试,也可以直接通过Impeller来自动化测试,从人工介入的行为上看,似乎很相似。回来跟同事一说,他们似乎觉得很不屑。再想想也没什么的,他们就那脾气,觉得自己多牛x似的,会点MFC和COM外,也再不会其他什么了吧。  另外,负责那Impeller工具开发的同事还在担心,到时候一季度这套体系推广不了,这个项目就要解散了。我倒是觉得没什么的哈。只是我还想做着玩玩,除了那查找替换部分要重构之外,剩下的网元模拟器、图形化配置环境以及脚本扩展编辑器,都是比较感兴趣的,呵呵。

好多问题,好烦

  那36字节的内存泄漏似乎是在Boost里的,昨天从CodeProject上下了一个跟踪内存分配情况的代码,放在工程里用了一下,看到走到Boost.system里去了。这让我觉得有点泄气,对Boost对崇敬的心情啊!不过想想,这36字节一直存在于整个进程的始末,也许它像个普通的singleton一样是不需要释放的呢,而且说不定release就没问题了呢。  MS SQL Server居然不支持双引号,晕,Access就好好的。气死人了。  问题太多了,改来改去整出一堆一堆的问题。下午的时候都烦死了,于是在那里抱怨,当初决定用Excel来作为流程文件格式,根本就是一个错误的决策。因为用户在用Excel编辑的时候,我的程序是跟踪不到各种变化的,最大限度的只能了解到变化前后的状态。今天又偶然发现另一个让人头疼的问题。本来那图形通过Excel的自动化接口直接Copy到系统剪贴板中,然后再从剪贴板中取出存成一个图片文件。但在Copy时有一问题是,它并不从Sheet左上角(0,0)位置开始,而是从所有Shape的最大边界值开始,而我关心的只是Rectangle、Ellipse等几个图形,对于Line等都是直接丢弃掉的。另一方面,Copy图形时,是会把所有Shape都选进去的,这样当有line是在rectangle之类的最大边界以外时,就不能再计算出定义精确的位置偏移了。为了这个问题,跟同事讨论了好一会儿,也没有人根本性的从技术上解决的方案,最后我灵机一动,说不如我们定个模板,该模板固定在左上角(0,0)处开始有个Shape,放个logo上去,用户的流程文件只能从该文件修改而来,这样就保证能获取不用计算偏移的图片了。说改就改,我都为我的灵机一动感到犹如神来之笔啊,哈哈!  还有很多易用性的问题,确实,最早的时候自己也觉得易用性太差,后来根据同事意见,作了一定的修改,易用性有了一定的提高,今天得到一些意见,果然易用性还是太差,嗯,写程序的人确实很难去理解最终用户的使用习惯,这是一大弊端啊,要改要改!  这样弄得心好烦啊!两年计划真的能好好实施下去吗?我不知道,我太懒了,所以我不敢拍胸脯。

解决了一些问题

  今天专心把几个比较严重的问题整了一下。  首先是程序在退出的时候,全弹出出错消息框,我都不清楚这个问题是什么时候开始有的,无奈之下,把那些遗留在那里的,暂时没用上的,准备以后有机会用的代码绝大部分都删掉了,最后发现是由于文件系统实时监控引起的。  我估计是因为一个驱动器一个线程来监视,最后程序退出时没有让线程自己返回,而是强制结束,可能就会有问题。于是我就在OnClose时向每个驱动器都创建个临时文件,这样ReadDirectoryChangeW就会返回,线程就有机会主动退出了。试了一下,有时候还是不正常,通过打印消息看到并不是每个线程都能正常退出。后来通过在线程中打断点试了试,发现好像其它线程还挂在EnterCriticalSection上了,就是说还没主动退出就被强制结束了。于是我通过减少临界区的执行时间,暂时解决了这个问题。我猜,也许在OnClose中每创建个临时文件后加入一点延时,也可以达到目的吧,不过仅仅是猜测罢了,呵呵。  解决了这个崩溃的问题后,转向内存泄漏问题。本来一开始是只有一处36字节的泄漏,一直没找到原因。后来不知道加入了什么代码,有七八处不同大小的泄漏,这让人看了觉得很不爽。通过在程序开始处加入_CrtSetBreakAlloc语句,可以让程序在启动时如果分配了指定序号的内存块时自动断下。马上发现有一处是因为一个singleton没有在退出时主动delete,加上就行。后来,又发现其他几处是因为UDP服务器端的问题,该模块基于asio写成,调试器自动在io_service相关的代码处断下了,看了看代码,我估计是退出时服务器没有释放必要的资源引起的,确实,当时因为不熟悉asio,也不熟悉socket,所以都是胡乱拼凑的代码。再看了一下asio自带的那些例子代码,在退出时主动关闭socket,内存泄漏果然都消失了。  只是最后还是剩下那一直以来的36字节泄漏,调到晚上还是没找到原因。尝试用Windbg,还是没解决,不过我确实也不会用Windbg,郁闷!

两年计划

  昨天晚上,跟小思宇在电话里,又跟孙同学在QQ语音上聊了很久,最后她们竟不约而同地叫我好好工作,多赚点钱,之后就好了。都说现在的人现实得很,我也没有其他办法了。  早上醒来,突然想到一个两年计划,就是之后两年里,要实现的几个大目标,当然这些要在这里实现,才更有意义。首先,过完农历年回来,开始去学车,一边学车,一边攒钱,等车学完,买个十来万的车来用用。然后,再攒钱,看在两年之期内能攒下多少钱,对于买房这个目标,能有多少完成度。两年,就到2009年12月31日为止。反正我还小,到那时也才26,接近27而已。我还有时间。

再一次失败

  实在觉得奇怪,为什么,我到底哪里错了?很是怀疑背后有一只手在操控这一切,可是这只手在哪里,谁的手,为什么什么要这样?

明天,希望一切顺利

  我都厌倦那一直失败的感觉了,说磨难也算是经历够了吧。明天,希望一切都顺利啊!给我一个寄托,给我一个精神依靠和支撑!

见到马姐姐了

  这个称呼我觉得肉麻了一点儿,呵呵,不过就是有几个同事喜欢这样叫。中午在食堂见到她时,还是被吓到了,怎么变成这样儿了,这个脸是怎么了,跟毁容一样了,变成一麻脸了,本来多好一姑娘啊。排队打饭的时候,她站在旁边一排,我就在那儿喊她名字,然后她说我瘦了,呵呵。宣宣就在那里说,以后千万不要走女强人类型。吃过饭后,她走的时候还叫我们注意身体,我心想,你才是最应该注意身体的人呢。真是变化太大了,才大半年时间啊,怎么就变成这样了呢!  这女人啊,还是得保养啊,曾经有光网第一美女已经不在了,只存在于一些人的记忆中了!