Jan 11, 2009 No Comments
2008年的工作,我只觉得很一般,不满意,也不遗憾。不满意的是自己做的工作太过杂乱,其中涉及到了很多项目很多模块,但我觉得都是一些添砖加瓦、拾遗补漏的工作,所以并不喜欢。虽然对于工作的内容并感到不满意,但我还是硬着头皮并且尽力做下去了,而且基本上在保证质量的情况下按时完成了各项任务,所以我也并不感到遗憾。 一年的工作下来,大的收获不敢奢求,但小的认识我想还是有的,比如在代码阅读方面,比如在软件架构和重构方面。 接触过这么多不同的项目,代码看的多是一定的。看的代码多,自然也还是有好处的,当然前提是代码不能太烂,烂到那种鬼画符的地步。 因为经验不足,初次接触到大量代码,难免手忙脚乱,脑袋膨胀。所以在刚开始看的时候会经常被迷惑,会失去方向,会无形中在后期的开发中去模仿,毕竟模仿是一生中做的最多的事。随着看的代码越来越多,我似乎也能渐渐的明白,哪里写的比较好,哪里需要改一下,以及怎么改才好,等等诸如此类的问题。也许这就是一个晋级的过程,虽然很无形,但你不能否认它的存在。 说到看代码,以前我也像大多数人一样,认为代码还是只看好的,好的看的多,自然学到的也都是好的,不是有句话叫“近朱者赤,近墨者黑”嘛。不过在硬着头皮看了一大堆有问题的代码后,发现看这类代码也并不是一点收获都没有,至少我认为它更能激发人去思考。碰到这些代码,潜意识里会产生一种排斥感,这种排斥感促使着我总想找到更好的实现,于是乎,我会不断的去怀疑,去思考,直到我发现了能取代之的更好的实现方法,虽然这不总能成功,但至少这个过程让我学到了更多,也正因为如此,我才能渐渐的有了判断代码好与差的能力,并且在实践中将其一步步完善。 所以说看差的代码也并非一无是处。差的代码,尤能让人去怀疑和思考,并且由于此认知是出于自己思考感悟得出的,而常常能被记得更牢。总的来说,不管是好的代码还是差的代码,关键还是要在看的过程中去怀疑去思考,若非这样,即使是看好的代码,收获也是很有限的。 软件的架构和重构,对于我来说,也只是看了一些这方面的书,在接触过的代码中认识到了其重要性,至于在实现方面,也还是经验不足,捉襟见肘。不过,这并没有妨碍我停止寻求好的实现的信心。 维护一段代码,特别是扩展已有的代码,都是一件吃力不讨好的事情。如果已有的代码设计很烂,那更是一件在挣扎中前进的工作。当需要在差的设计上做一些扩展的工作时,我时常要在“是否要重构”这个问题上做一些决定,虽然我很不情愿,但实在不忍放任手头的代码再继续混乱下去。如果我按现在的设计扩展下去,我便会做很多伤神费力的工作,而且还需要足够的细心,不能有一处的遗漏;如果我将前期的设计做些修改,那么当前的扩展便会很容易,但这个工作又会带来其他的一些工作,比如考虑这个设计对依赖于它的模快的影响,以及修改后的测试等一系列的工作等等,另外你还得估计下时间,因为老板给你的时间可不包括你额外考虑的这些工作。 维护或扩展一段设计不好的代码,有时就像是在做着帮人圆谎的工作。因为前期的一个设计不佳,在碰到了改变后,我便要痛苦地去做出更多的工作才能继续下去,而且这样的继续只会带来更多的混乱与漏洞。其实这就是所谓的“破窗理论”:没修复的破窗,会导致更多的窗户被打破。
Read more...Dec 14, 2008 5 Comments
现在老板都不跟我叽歪,因为他怕他一叽歪,我就跟他叽歪他不想叽歪的。 老板一说多,就会说到我的工作态度,说我现在不怎么积极了。那是有点,当初我很积极的时候,您不积极,现在我不积极了,您倒急了!唉,造化弄人啊! 完了,老板又想翻他那本《你在为谁工作》,找了半天没找到。我急了,老板,我是在为自己工作(书上的旨意,我如是奉上),我不是为您工作,希望您能继续给我发工资。 说到这本书,我就很反感,无非是要一个人抱着一个崇高的个人修养,甭管是虚情还是假意,总之什么都别管别顾,闷头给我老老实实认认真真地工作,完了,坚持下去了,你就成功了。我晕(想呸来着),这要是成了,我只能说你运气好,不成,只能说你太老实了。 回头老板跟我说,这本书他也没怎么看,哦…我还真猜着了,其实我也没怎么看,看了下目录,翻了两页,就丢了。 工作总结: 老板的话:你不是很笨,工作完成的不错! 唉,不知道这家伙是在损我,还是在夸我,还是又想夸我又怕我骄傲,整句听着这么不是味儿的话! 告我的亲人和朋友们:其实我也没那么在意,也没必要在意这些不会带给我留恋的人和事,只能说这就是生活,总会遇到很多预想不到的,甭管自己乐意还是不乐意。也许当初还抱有”幻想”,现在依然一如既往,但都不要太较劲,发生的事就当它是一种自然而然的过程,自当经历而又尽力就是了。
Read more...Dec 18, 2007 No Comments
MFC开发中,利用LoadCursor(该函数有两个,一个是SDK的,一个是类CWinApp中的)来加载光标。 1.使用系统预设的光标: HCURSOR hCursor = ::LoadCursor(NULL, IDC_ARROW); 第一个参数须为NULL。注意,传递IDC_HAND(设置手形的光标)的时候,如果系统是Windows 98/Me, Windows 2000/XP,须在 #include <afxwin.h> 语句前加上 #define WINVER 0×0500 (主要是用来指明所运行的系统类别),方得以成功编译并实现手形光标的加载。 2.使用自定义的光标,假如已在资源中建立ID为 IDC_MYCURSOR 的光标, HCURSOR hCursor = ::LoadCursor(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDC_MYCURSOR)); 据同事及网上的朋友介绍,他们以前这样用基本上都是没问题的。不过在我的程序中,就奇了怪了,获得的hCursor 值一直为空。经测试,AfxGetInstanceHandle() 返回的值正确,下面考虑是不是MAKEINTRESOURCE()这个宏里出了问题,具体有待解决。 替代方案: HCURSOR hCursor = AfxGetApp()->LoadCursor(IDC_MYCURSOR); // OK, no problem here! 疑惑,这里又有点不明白。按理说,类中的LoadCursor在底层实现的时候还是要调用SDK的LoadCursor… Next a problem 在网上讨论了一阵,还是没有解决,最后还是冷静地停了下来,仔细地想了想,就这样,也竟然发现了问题的根源。 关于所建资源的ID号,外加引号的问题。经证实,若某个资源ID号的定义并不在该资源文件所包含的头文件中时,系统(这里指VC++6)会自动给该资源ID加上引号。一旦加上引号,貌似有些调用就得修改了,具体情况似乎得具体对待。当然也可以自行加上引号,然后一切按字符串方式传递。 有时觉得自己在钻牛角尖,也经常犹豫,在想这些繁多而琐碎的细节到底值不值得去花时间关注。对于这样的工作,细节的问题不可避免,但一直这样,总觉得难成气候,但如果不去解决,工作就会受阻,总之挺烦人的。 可能是我还没平衡好吧,希望这只是暂时的… 没有什么是放之四海而皆准的,写程序时也是,最好把各个接口的条件给限制好了,当然也得说明清楚!
Read more...Apr 5, 2007 No Comments
最近在准备找工作,网上看到的一篇有关面试的文章。这年头,IT方面工作不好找,所以面试的时候可能就更得注意些了。希望能找到一份满意的工作。 Late to the interview means late on projects and deadlines 面试迟到不仅是礼貌问题,更重要的是会让面试官觉得你将来不可能按时完成工作。 Lack of enthusiasm means you don’t care about your work 面试的时候要表现出对此工作的热情,而不是我不愿意干这个,不愿意干那个。 Little to no company knowledge means you lack research skills 知己知彼百战不殆,面试前要做好功课,对这个公司多了解一点你的胜算就增加一点。 Inappropriate dress translates to inappropriate work 面试衣着不要走极端,要跟公司文化符合,最好面试前能去看一眼这个公司员工的着装,给自己一个参考。还要注意一点的是,有些IT精英面试的时候上身穿的很整洁,结果桌子下面却是破旧的牛仔和”锃亮”的皮鞋。 Too negative is too much: Spells P-R-O-B-L-E-M 不管你现在工作如何糟糕,现在环境如何恶劣,都不要在面试中表现出过分的消极和过度的抱怨,因为这样会给人以“问题雇员”的印象。
Read more...Jan 27, 2007 No Comments
All is in a Hurry now, even my sleep! 最近很忙,也很急,手头的事情太多:设计,报告,考试。上网?博客? ,时间真的不多。 接连做了几天的模具设计。每天早上8点多从床上爬起来,紧接着便是一整天的涂涂画画。虽然并不是很紧张,但晚上回来,还是感觉很累,连敲键盘的力气似乎都没了。 今天晚上加了点班,算是把前期的设计给完成了,现在感觉轻松不少,希望明天一天等把真正的图纸给画完了。 其实满喜欢这种忙碌的感觉,有点像是在工作, 很有规律的早出晚归,好象很长时间都没有这样规律的生活了! WordPress 2.1 已经发布了……更新?等有空了! 不说了,早睡早起
Read more...