All Stories
昨天审视了一下那些概念,猛然发现一个严重的Bug的原因,原来一直是因为我对BSTR等的概念不了解,才造成了这样的问题,哈哈,纠正一个严重bug的感觉真爽啊!现在也许真的是可以把那个任务搁一会儿了!除非到时候又有什么新的需求,或者要对某一块内容重构,对,有一块,现在的设计很傻很笨,缺少灵活性和弹性,如果要扩充新的内容,就比较麻烦,而且如果那个结构内容一多,就看起来特别怪异。 突然很想自己写一个简单的日志系统,那个胖子曾经还跟我吹牛他们设计日志系统的时候参考了ACE的很多东西,我看了一下,只不过是每天新建个文件,把文件名、行号和消息内容写进去而已啊,只能说它真的是个日志,根本没有所谓的系统的概念! 要日志系统,就看ACE、Pantheios、log4cxx、log4cpp、log4cplus、Boost.log(没被Boost接受)。其中log4cxx、log4cpp、log4cplus都是从log4j派生来的,后两个都好久没有更新了,log4cxx最后的发布版也是好久以前的了,svn里倒是可以取出最新的版本,不过对于Windows平台来说,它没了直接的VC的工程文件了,需要用ANT才能编译了,看过它的文档,功能还是很强大的,大概是得益于log4j的强大吧,而且它可以支持配置文件。ACE里的日志功能,设计得也是很强大,它还能自动缩进输出消息,这点比较有趣,但是使用时需要链接整个ACE库,这就比较不爽了,要是能单独把日志部分提取出来,或许用的人还多一点。Pantheios基于STLSoft这个库,功能也很不错,它使用Syslog协议,这个协议在RFC3164有描述,甚至自己在Windows平台上实现了这个协议。不过我除了Boost,很不习惯再用其它的非标准通用库了,所以这个Pantheios就这样被我cancel掉了。大概看了一个Boost.log的文档,发现大部分需要的功能,它确实也都有了,或许不如ACE的强大,但之后也存在着不小的提升空间,不知道当时Boost怎么没有接受它,现在它好像被搁置下来了,也没在maillist里提起过了,而我看boost-consult的vault上那个,照那个样子,应该不会被接受的,看来要让Boost加入一个日志库,还得等待一段时间了! 所以近期一段时间内自己写个小巧适用的,还是有点必要的哈!不过有一点很重要的是,需要能同时让VC7.1/VC8/BCB5.6.4/BCB5.81编译,最好还能在Unix-like的系统上用Syslog协议。
今天收邮件,发现有封主题是“我是Afeilink的忠实用户”的,里面提到他最近在玩1.0beta版,问我里面一首背景音乐的事。真是让我意外啊,竟然还有重邮以外的人玩这个,呵呵。想当年,一方面为了逗阿菲,另一方面为了能让自己玩过瘾连连看,才整的这个小游戏,当初整出最早的版本后,就只在学校的E383上发了一下,在BBS上稍微宣传了一下,一段时间内还把BBS上自己的昵称改为“阿菲连连看xxxx...”,真是令人怀念的时光啊!当时BBS上Software版的人开了个群,xiaotnt在《电脑迷》工作,NAOH就把这个东西传给她,她就压到某一期的光盘里去了,还说有20块钱的稿费!有那么段时间,我还多想见见xiaotnt本人的,其实也是chuanking的原因吧,可惜的是,直到我毕业离校,也没有见到xiaotnt,而曾经一起在Software灌水的人,也没剩下几个还有联系的,当然那20块钱的稿费,也被xiaotnt拿去买零食吃掉了吧,呵呵。 有的事总要过去,有的人总要忘记……
手头的工作算是可以暂时告一个段落了,但不知道为什么,也许是不够自信吧,总觉得会有什么bug突然冒出来,然后就得一把屎一把尿的debug。其实大概想想,大多数会蹦bug出来的地方,基本上在前段时间做demo的时候发现并解决了的,这几天也就是把原来那个demo的代码合并到他们的代码库里,并改一下界面上的一部分代码,加了个用OLE实现的拖拽,这个拖拽效果比直接判断鼠标动作来实现的效果好看多了。给TreeView加了图标,感觉就是爽很多啊! 用了几天MFC后,突然觉得其实MFC挺好用的,甚至比VCL还好用-_-b说这话真是很冒风险,会被人口水淹死的。不过呢,可能是我自己的问题,用了几天Xtreme Toolkit Pro后,迷上了这样的界面库。说起来其实它也没有什么创新,都是模仿的别人,大部分是MS的,MS就是牛x啊,Shell、Office、VS等等等等推陈出新的界面风格,引得无数Windows桌面应用软件竞相模仿。 另外一个让我觉得使用MFC好过使用VCL的地方是,自从VC7.1出来后,VC已经成为众多C++程序库兼容的首要需求了,确实让人感觉,它的编译器已经比Borland的要好了。 再回来说在公司整的那玩意儿,我负责的模块其实真的是很小很小的一个模块,总的代码量大概就是几百行吧!今天下午感到无所事事了,还改了一下输出Debug信息的类,让它能根据宏定义分别实现向文件输出,向OutputDebugString输出,向那个程序的输出窗口输出。昨天看了下boost-consult上的vault,有个logging,想做个日志库合入Boost,看过代码后,觉得以这样的水平,是肯定不会让Boost接受的,一个小小的日志库,居然还要求Boost::thread和Boost::date&time,而这两库都是需要编译后才能使用的,这就对人们使用logging造成了巨大的障碍!另外,代码实现的风格已经库的使用等编程手法上看,目前也不是很细致,远称不上大师水平。最后就是,现在它实现的功能也挺有限的!看过ACE的日志功能的介绍,觉得功能还比较强大,曾经也想过自己写个日志库,现在想来,日志库的实现可能比较麻烦,至少功能上应该达到ACE的水平,不过如果真要静下心来慢慢写,也不是不可能完成的。
这两天在公司里,真是忙得有点昏啊,连邮件都经常是过好久才看一下回一下。其实静下来想想,也不是很忙吧,只不过是我自己偷懒闲惯了,这样有点事情做就不爽了。今天下午的时候还在想,今晚要加班了,不加班完成不了了,结果到下班时间,又决定不加了,还是回家算了。分给我的任务其实真的很少,代码量和难度都应该算是最低的。就是以前没这样被逼着干过,所以突然有点适应不了,甚至差点儿睡觉的时候都在想那里应该怎么写,真是郁闷啊,被逼到这份儿上。不过现在已经完成得差不多了,核心功能基本实现了,明天去把那些扫尾工作处理了,18号应该能顺利交付吧!完成了这个,应该就要投入到那个单板软件开发,和SharePoint架设上去了。都是没经验的,正好学一下,这两样东西也是两个截然不同的方面的东西。现在做的是Windows桌面应用开发,用MFC,说起来MFC并不是以前想像中那么不好用,呵呵,也许是因为前段时间直接用API写Demo写得快吐血了吧,又画TreeView又画分隔条,还要实现TreeView之间的拖拽,唉,当时没问清楚,做了很多无用功啊,早知道就应该把精力重点放在核心接口设计上。之后的单板软件开发让我既兴奋又紧张,这样的嵌入式软件开发参与一下,才不枉来公司一次啊!SharePoint倒不是很期待,好像目前的需求要实现的话,基本只是填几个框,鼠标点几下就好了。 今天看了别人的blog,才明白过来,不要用代码量来衡量一个人的水平。代码量过少,固然很可能实践经验不够,但当达到一定量后,之后就是瓶颈期了,很可能3w代码量经验的人,水平跟30w代码量经验的人差不多呢!代码写得精炼、优美才是作为一个编码人员应该追求的。
看到云风blog上关于C和C++的争论,有点反感。本来对云风的印象也不深,只知道当时网上有个关于游戏编程的个人主页,上面有些有趣好玩的东西,一个学生写出一个游戏开发包,也有点让人佩服的。自从他出了本书,看过那本书后,印象就不怎么好,总觉得书上全是吹嘘自夸的,没有多少实际有用的东西。现在再看这blog上的一些他的做法、观点,实在有点恶心。 他居然说用C写的模块比用C++写的好维护!真不知道怎么妄自得出这样的结论来的,难道那些研究出OO,发明改善C++的先辈们真的全是做的无用功。只是写过个游戏开发包,做过一两个网游,就敢这样大放厥词,实在让人不爽啊!而且看过他在书上列出的那点代码,也实在没什么水平可言,总让我感觉是自己不行然后去批判别个不好用。再怎么样,说说我们公司那些产品,应该也是几百万行代码规模吧,也是嵌入式,又是对性能要求比较高的场合,现在不也是用C++了么,不也是用STL了么,还是本领域内市场占有率世界第二呢!有点想骂人,唉……
下班回家坐328,结果渐渐闻到一股什么东西烧焦的味道,结果车停下来了,坐后排的人往后面看了看,还说这车子烧着了,突然一车的人都开始往外跑,几个女的还被弄倒在地,还有丢掉鞋子的,呼呼。
在经过Beta、RC后终于在5月12日在主页上宣布1.34.0发布了!相比之前的1.33.1改动是比较多哈,当然,加入的新库都是些小规模的,好在不用编译,哈哈! 昨晚堂哥告诉我二伯被人砍了,今天打电话去问候了一下,背上、头上、臂上各中一刀,所幸都没中要害,力道也不致命,那种凶手真是猪啊,老大的年纪了脾气还这么坏,这样的大人都教育出什么样的小孩来呢! 参加一个正式的项目对人的锻炼还真是有点用的哈,至少我现在知道有序列图,UML图这些东西了,哈哈,而且逼得我用MFC写程序,确实不知道为什么,用VC写代码风格总比在BCB下写的好看,呼呼! 用StarUML来建模,呵呵,只要开源软件足够好用,还是很能吸引人的。 从微软的网站上下了个XML Notepad 2007来写简单的XML文件,也挺好用的,至少比直接用UltraEdit来写方便多了,哈哈,这也是免费的。 关键是这些工具比起那些商业付费的同类来说,很小巧啊,而且功能上已经能够满足我目前的需求了。但是有些软件是不得不用D版啊,比如Office、VS、BDS……
心血来潮,又去Songbird的网站看了一下,还把编译好的Preview的安装程序,以及SVN里的源代码都下下来了。只可惜看了半天的编译说明,还是没看懂,唉,这个说明也太烦琐了,条理都不清晰。这样看来,Mozilla的XUL解决方案怎么推广得了哦,想想Adobe、MS这些大厂商的解决方案,一整套完整的流程支持,各个环节都可能会有比较完善的工具支持,而且安装部署都会很容易,一张光盘,一个ISO镜像,一个setup.exe文件就搞定所有的事,一切都准备好给人使用,有多少比例的人愿意去花那么些时间搞那么麻烦的mozilla的东西。Mozilla社区确实应该好好想想,反思一下,为什么XUL技术出来这么多年,Mozilla里也用了那么久,却一直没有被大众接受,直到现在这些大厂商出来推,才火起来。也许从技术的角度讲,各个解决方案间没有特别大的区别或差距,但是易用性、友好性方面呢,可能差得太多了。其实这也是众多开源项目的通病啊,孤芳自赏的hacker想法是走不出hacker圈子的。 装上Songbird,听了几首MP3,就把它卸载了,现在的条件用XUL技术来实现这样的桌面应用时候还早了点,连一个窗口里点菜单,点右键,来回换输入焦点都会卡好几秒钟,有几个人受得了,换回foobar2000,看起来轻巧多了。所说Firefox3.0也是基于XulRunner来实现的了,就像Songbird一样,进程管理器里可能就看不到firefox.exe了,而是一个XulRunner.exe。这样就像Java之类的了,虚拟机实现的东西,除非是开发效率或其它有什么特别突出的优点,不然是不会被大众接受的。 Mozilla能有那样好的扩展能力,其实从某方面讲,跟Eclipse、Emacs等是一个原因,那就是脚本语言和本地代码的结合。它用XUL描述界面,用C/C++实现真正的逻辑,再用JavaScript把两者结合起来。这样看来,只要能把描述界面的部分规范下来,真正的核心逻辑用C/C++实现,再设计一个良好的两者互动通信机制,那么一个弹性极佳的系统也就设计出来了!LLYF Spy中,是应该好好设计一下了,2.0可以只做预研性的设计和实现,3.0可以考虑实现成一个程序员工具平台了,只要扩展机制实现得好,可以给它添加各种扩展功能,比如编辑器,比如听MP3,比如下载上传……
正式版就要发布啦! 好困好累哦!都不想动了!开心就好!