All Stories

Bug多多

  其实静下心来想想,这也是正常的,这样匆匆忙忙赶出来的东西,质量能好到哪里去,而且事实上不但稳定性差,易用性也是极差。照我自己的估计,再给两个月,才能基本到可用的程度,即稳定性和易用性都为大多数普通用户接受的程度。  心里好烦啊!  中午在菠菜里吃出一条虫子,我都怀疑我有没有吃下去更多条,晕!拿去换了10块钱和1盘西瓜,然后去买卡士喝了。疯丫头也吃出一个小蚊蚊,这是以前某人常用的叫法,然后也是换了10块钱和1盘西瓜。  唉,我终究是很普通一人,有时候确实太高估自己了。  asio用了这么些天,还是没掌握具体用法,用来用去还是问题一堆。  COM也是很烦人一东西,无奈的是有些时候不得不用COM啊,再加上组里最有话语权决策权的几人,都是COM的忠实粉丝拥趸,郁闷。也不知道是不是我自己太高傲了,总是要跟别人唱反调。但总是觉得人家确实也没多少让我佩服的地方,唉。  对于一牛x的编辑器,以UltraEdit为榜样来说,要直接支持脚本扩展,可以通过方便地激活一外部脚本,来操作编辑器,比如移动光标,输入字符,查找替换,复制粘贴,删除撤消等等,这是一类最基本最通用的扩展方式,可以有任意数量的脚本。另外一类方式是,可以配置宿主程序的界面,比如增加菜单项,增加工具栏按钮,而且这些菜单项和按钮的位置、文字、图标等内容是可以定制的,当然点击后,就会触发一个脚本的运行,这种脚本也可以有任意数量,任意配置。还有一类方式,是事件处理脚本,当宿主程序遇到某一事件时,就会执行相应的脚本,比如打开一个文件时,文件关闭时等等,理论这类脚本也可以有任意多个,但实际上不能太多,因为如果某事件触发时,结果要分别运行一堆脚本,这种性能问题应该会比较明显,并可能让用户受不了。暂时想到的是这3类脚本扩展支持,最近又因为对多种脚本语言的简单接触,又没有哪种让我觉得特别喜欢,所以我反而想要能同时支持多种脚本语言的扩展。这时,SWIG出场的机会来了,至少Python、Ruby、Lua、TCL都是被它支持的。  除了可以用脚本扩展外,是否还要提供2进制扩展接口,这点我还不太确定,2进制扩展可以有普通DLL和COM两种方式,差别不大,只是怀疑其必要性,它有多少价值,多少能力,有多少情况下需要它出场解决问题。  最后一点是,正则引擎需要能挂接,随时任意替换吗,UltraEdit是这样做的。

日产代码500行

  今天看到什么代码圈复杂度度量的理论和工具等等内容,找个Source Monitor对我这两个月来写的一体化平台的代码嚼了一遍,发现我基本上写了约20000行代码,当然,包括注释和空行。无心算了一下,以一个月20天计算,两个月来我平均日产代码500行呀!有种说不出的感觉,没想到我写代码是这样的。光是看数量20000行似乎并不多,前不久数的时候才14000。但从日产量看,这个数字太高了,我自己对自己的要求是有200就不错了。然后从Source Monitor的分析数据看,有不少地方写的复杂度高了点,最高的是21,从公司的宣传ppt上看,大概4、5之类的比较合适吧。不过我顺便让它分析了一把Impeller的代码,那编辑器模块一初始化函数,复杂度是137,哇哈哈,真吓人,还有好些八九十的。不过这也不能说明多少其它的含义,最多只能说,也许我这点代码的可维护性比Impeller中的要好一点点。那也是归功于doxygen的推动和促进,如果不是因为一直想着要留一份可以生成良好文档的代码,我也不会写那么多注释了。当然另外一部分原因是,对Boost库的逐渐了解和熟悉,在Boost的帮助下,有不少代码可以简化。  明后天就要把这两个月来的东西拿出去见人了,希望一切顺利啊!

强大的Boost无所不能

  最近渐渐会用Boost.Bind和Boost.Lambda了,真是爽快啊。现在明白,要用Boost,就得尽量使用STL,配合它的容器、算法才能发挥功效。如果自己写了容器,也要看情况写些方法,适应它的需求。今天写了好久代码,挺累人的,到后来真的头昏脑胀了,郁闷。  回来继续搞SocketHelper,除了要有像Wireshark的抓包功能外,还要加上nmap似的扫描功能,以后有机会再搞个可以支持无线网卡的抓包功能,呵呵。  现在Wireshark和nmap都用lua来做扩展了呀,呵呵。

加了1G内存

  今天项目组组织活动爬笔架山,然后去华强北毛家饭店吃中饭,吃完中饭就地解散,我去地铁站办了张深圳通,顺便去问了一下内存条。一问现在930可以买一根1G的原装,750就有TPOP的,立马就心动了,跑回家,背了电脑出去加了一根TPOP的。现在就有1.5G内存了,心里感觉就是爽啊,哈哈!

又累又困

  最近感觉是又累又困,每天早上起床都很是困难啊!今天在公司里几乎没做什么事,这几天心里焦虑感很重,唉,不知不觉的压力就这样袭上来。  好像脾气也变得比较急躁了,或者说神经也更脆弱了,很是在意别人的话,也许根本不是针对我的。  昨天弄到快凌晨2点才睡觉,asio还是有点难用,主要是参考资料太少,自带的文档看得不明不白,例子程序也是不明不白。  我有病,真的。

我真土,真的

  调了一会儿,用tcp连接还是有问题,无奈之下放弃了,想想用udp试试,只是发个消息而已,为什么会这么困难。没想到udp不但代码简单,而且效果上也达到我希望的要求了。我只能说,我真土,真的,到现在也没搞明白为什么用tcp的就不行呢,晕死了。  点对点通信基本稳定后,心里突然就轻松了很多,仔细想了想剩下的事,虽然还有不少,但是心中还是很高兴。   不过boost真的是个好东西,很多库很有用,呵呵。

socket还是有问题

  自从写完那段代码,一直以来都有问题,服务器端读内容时,总是返回一个错误码,结果什么都读不到。都不知道是服务器端写得有问题,还是客户端的代码有问题,仔细看了看asio带的那些个例子的代码,尤其是里面的http服务端和客户端以及chat的服务端和客户端,下午在那里找原因,一会儿以为是服务端的问题,一会儿又以为是客户端的问题,结果到最后还是没找到具体原因,郁闷。  看来一个好用的调试工具是不可少了。但是用Wireshark抓包的结果看,客户端是确实把内容发送过来了,只是看netstat看连接状态立马变成CLOSE_WAIT,然后连接消失,现在我又怀疑是客户端的问题。

我还真是弱

  周末整了好久,想在程序里嵌入Ruby解释器,可是发现在MFC程序里,只要include了ruby.h,编译就会不过,说什么fd_set啥子啥子的,很是郁闷,今天在公司,同事说只要include一下WinSock2.h就行了,晕,我当时怎么没试试。  SWIG果然能一下生成一大片的代码,而且可以通过宏来比较灵活地进行配置。只是最后效果怎么样,还没有试。总的说来,自从改用VC以来,得到不少好处,主要是很多开源的东西都会主力支持VC这编译器,相对来讲对Borland的支持就要弱一些了。

我还真是无聊

  跑去华强北买了个TP-Link的无线路由器,只是觉得好玩,其实完全是多余和浪费。最多只是少了一根线插到电脑上而已。  以前在学校的时候,还以为路由器是好大一个机器,后来见到过一个同学拿来一个小盒子,才觉得好笑。不过再想想,更早些的时候不也认为交换机是好大一个设备嘛,后来去电脑城跟同学装电脑时,看到8口的交换机也才200多块钱,而且那都是快5年前的事了。昨天去帮公司一同事MM搬家,偶然间谈起说她有个无线路由器,当时觉得她好高档哦,呵呵。  买回来后,飞快看了一遍它那薄薄4页的说明,很简单,然后就把原本插在电脑上的网线插到路由器上,打开无线网卡的网络连接属性,搜索一下,再通过Web登录上去设置一下。因为本来就是一个交换网络里了,再设置时,选静态地址分配,并把默认的路由器IP改掉,不跟交换网络的同一网段就行了。因为要用eMule,所以还要设一个转发选项。另外就是,一切正常了,可以加个密码,免得让其它人家的人偷偷使用我们的带宽,呼呼。