Category Archives: 计算机与 Internet

捉虫 05 未完成

乘PDF能够工作的时候,我用日志文件记录了GetAllEnableGTypeID()对LayerData.vTypeID的写入操作,然后换掉了SAttrInf::GetAllEnableGTypeID(…)函数,取而代之的是一个for循环把正确的值写入LayerData.vTypeID。Robot报告,程序运行正常了。   看来问题不在PDF模块里面。打点行装,我又向SAttrInf模块进发了。   事情总不会象他们表面看起来那么单纯,这次捉虫之旅也是这样。实际上在上面的叙述当中我有意无意的疏忽了这样一个情节,那就是DeBug工具。   实际上在捉虫之初,师傅就提到了两个工具,他们是BoundCheck,和GodeGuard。BoundCheck似乎是一个Delphi下的工具,跟我门派有别,我没有轻易粘惹。GodeGuard倒是本门正宗,原来也曾听师兄们提起,只是我一直认为还不到时候来使用它。前些天在捉虫之初,我也像模像样的架起了它,只是在程序正在启动,还没有一个眉眼的时候,GodeGuard就神情亢奋,连连呼号,弹出若干对话框,上面如同天书一般写了一些数字和外文。   我沉思良久。如果为了找到PDF的症结所在,是否要先把其它GodeGuard觉得不爽的地方改掉?如果要改这些地方,从哪里下手呢?GodeGuard又想向我述说什么呢?也许终究是没有缘分,也是因为交流困难,我对GodeGrard轻轻说了一句,“再见。”   “对,当时就是那样。”我喃喃自语,一边走着,思绪又回到了眼前。   Tags: debug|bigSword

Posted in 计算机与 Internet | Leave a comment

“面向接口”编程

简介                                                                                 “面向接口编程”,英文的定义是“Program to an interface, not an implementation”。他是面向对象编程里面的一个设计原则。所谓原则,就是“你最好按我的样子来搞,实在不行也可以违反”。   “面向接口编程”在整个OO世界里面的推演关系大概是这样的(因为个人所学有限,这里的解释不免偏颇和粗陋):面向对象编程有三个主要的特性,即是封装,多态,继承。面向接口编程是多态特性的一个表现,就是说你的设计遵循了面向接口编程的原则,那么你就具有了面向对象的多态特性,你的设计就更OO一点。面向接口编程落实到设计上/代码上就是尽量利用C++中的抽象基类。   下面的口舌大部分都是解释上一段最后一句话。   解释什么是接口,什么是面向接口                                                       个人感觉英文的定义还明白一点,所以下面针对英文定义来解释。   1.         什么是interface? C++的教科书上没有提到过interface,倒是Java,UML,VCL(?)里面有相应的提法。 比如,在Java里面,一个interface是“an abstract type with methods that a class can implement”,type是什么是一件神秘的事情,暂时用“东西”来代替。an abstract type中的abstract说明这个神秘的东西不干什么实事,实际上他的作用相当于一个目录,告诉读者书里都有什么内容,书的正文,要靠实现这个接口的具体类来实现。具体到代码里面,一个interface是这个样子:public interface Comparable {    int compareTo(Object other); } 看起来很像一个类,因为不干什么实事,所以更像一个抽象基类(C++的和Java的)。那么区别在哪里呢?在Java里面,interface不允许有实现代码(default … Continue reading

Posted in 计算机与 Internet | Leave a comment

绕过防火墙和URL过滤的方法

主要针对(我所在)公司的封锁,GFW的过滤也包括。   http://www.ieproxy.com 选中“Use base64 encoding on the URL”,可以绕过URL过滤。 不过这个网站有好多广告。   http://anonymouse.org/anonwww.html 起码可以看www.eastgame.net了,其它的(比如带mail字样的)还不可以。   TOR 这个软件很好用,也方便,不过在公司内无法工作。  

Posted in 计算机与 Internet | 3 Comments

交错

  Google marketing principles    Originally uploaded by niallkennedy. 这个图片出现已经有几天了,在我订阅的RSS里面,大概有4个站点提及,还引起了一些转载不注明来源和原作者的议论。实际上我也不知道哪个是原作者了。 第二个要说的是,Google fans,热情到有点八卦的地步了。 最后,虽然这七条已然有人翻译过了,还是给出我的翻译。 The 7 principles Google marketingGoogle市场准则 * Results must be trackable(效果必须可以追踪)* Promote trial(鼓励试用)* Let others speak for you(建立好的口碑)* Data. Not hype.(数据,不要臆测)* You’re smart.(你聪明)* And your time matters.(你的时间很重要)* We’re … Continue reading

Posted in 计算机与 Internet | Leave a comment

捉虫 04

“有时大踏步的后退,是为了大踏步的前进。”在一筹莫展的时候,我又想起来了师傅的教诲,一丝苦笑掠过脸庞。好久没有理论学习了,我从包袱里面拿出“捉虫宝典”,翻开第二页,上面又是四个字:“代码走查。”刚刚掠过的苦笑又掠了回来。 洗洗睡吧,今夜无话。 清晨醒来,凉风习习。我披了一件外套,坐在床边,一边吃大饼一边看PDF模块的代码。这个模块很小,大概6~7百行的样子。草草看过一遍,有些语句是很怪异,跟惯常的用法不同。忍不住做了一些修改,看起来让人放心了一些。只是每做一个修改都要编译,然后验证,这么改Bug是有点盲目了。 还是不要太纠缠于细节了,先把调用树画出来吧,看看模块是怎么执行的。吃完了大饼,调用树也出来了(因为不用PDF模块里面执行任何操作,就可以复现Bug,所以我只需要FormCreate()的调用树就好了):FormCreate()-AddLayer() -YFieldComboBoxChange()-AddData()-pdf()-YFieldComboBoxChange(this)虽然比较诡异,比如两个YFieldComboBoxChange()函数调用,不过还算简单。 看到了这棵调用树,让我忍不住拿出了“化简法”这个法宝。注释代码里面调用的函数,编译、执行、加载数据、PDF、关闭,一遍又一遍。再有耐心的人也有烦乱的时候,看着外面大好秋光,一个外国人说的话出现在我的脑海里:“And never work harder than you have to, work smarter instead.”聪明的人一定已经想出了办法,我要做的就是找到他。 确实我找到了他(或者说他找到了我),还是一个外国人。他说他叫Robot。 Robot体格魁梧,动作迟缓,说话瓮声瓮气的,嘴角总是挂着天真的微笑。总之有点让人摸不着头脑。 那天他出现在我的篱笆墙外的时候我着实吃了一惊,问了半天才知道他是来帮忙的。我有些将信将疑,又怕他给我添乱。最终我还是收留了他,我们一同住在这个租来的小院里面。 你还别说,Robot干其活来还真不含糊,虽然启动慢点,有点认死理,手脚十分麻利,而且不知疲倦,“不愧是吃牛排长大的,身体素质真好。” 从此以后我的生活轻松了不少,毕竟有了一个帮手。Robot告诉我,经过他逐一排差,PDF模块其它的函数都没有问题,问题在FormCreate()函数不足30行代码里面。 有两行代码引起了我的注意:SAttrInf::GetAllEnableLayerID(vLayerID);还有SAttrInf::GetAllEnableGTypeID(vLayerID[LayerIdx],DATA_ALL,LayerData.vTypeID);是不是他们出现问题呢?用注释法似乎不行,因为把他们注释掉后,PDF模块就不工作了,是用“替换法”的时候了。 Tags: debug

Posted in 计算机与 Internet | Leave a comment

无聊到一种境界

这个可是说来话长了。说在网上有个叫“毒药”的人,以前是混论坛,后来又写Blog,似乎很讨人喜欢。他在msn spaces上有个空间,就叫做“毒药”。在“天涯社区”有一个叫pitta的人,来路不明,不知道什么原因,在“天涯”上写了一系列帖子,所谓揭露“毒药”的真实身份,主要就是利用Google来搜索“毒药”的前世今生。 竟然很轰动,在天涯上引起一阵骚动,或者道德劝诫,或者破口打骂,或者拍手称快,或者煽风点火,不亦乐乎。最后,pitta被“天涯”的正义之士删除了帖子,弄得很憋屈。索性在msn spaces上又建立了一个空间,名为“Project Poison B -基于google的‘毒药’验尸报告”,进行专题研究,又是满热闹的样子。 我对“毒药”没有什么兴趣,我对pitta也没有什么兴趣,他们在做自己喜欢的事情,或者为了满足虚荣,或者为了抵御空虚,总之他们玩他们自己的。本来是没有什么大不了的事情,却被众人掺呼成似燎原之势。那一班看客,为什么似乎比上面说的两个人更加投入和亢奋?也许被别人的气氛感染了? 这世间本没有所谓伟大的事,掺呼的人多了,便有了。   Tags: poison, pitta

Posted in 计算机与 Internet | 4 Comments

Google pages

刚看到幻灭的报道:  Google网页编辑器正式推出!-幻灭的麦克风 | http://www.kenwong.cn |   这个人报告新闻太快了些,哈哈。 感觉这个东东有点回潮(原来的个人主页)。如果它跟Blogger和Google ig(个性化主页)能够紧密结合,就有点意思了。 我的试验田: http://bigsword.googlepages.com/home     Tags: google| google pages| homepage| bigSword

Posted in 计算机与 Internet | 1 Comment

新家的地址

鼓捣了一天,把原来的帖子转到了下面的地址: http://www.cyland.cn   新的系统是: blogger.com + flickr.com + feedburner.com + a free ftp site(sitesled.com) + domain name.   原来有一堆垃圾,现在有两堆了。

Posted in 计算机与 Internet | Leave a comment

msn spaces is NOT Blog

msn spaces不是Blog,原来就是这样。他提供相册和音乐上传,同时因为与msn的绑定,使他成为一个一个小圈子。而Blog不具有这些功能,Blog也没有小圈子的概念,读者通常从搜索引擎而来。   现在,msn spaces加强了权限的设定,用户可以选择更加封闭的方式发布自己的内容,更加倾向于小圈子,让我想起了MyWallop.com。   我不是说封闭不好,也许这个真是msn的成功之道(再加上绑定),不过我更相信开放能够促进知识的传播。

Posted in 计算机与 Internet | 2 Comments

Freedom is not free

Google.cn上线了,对于一些“非法”的内容,Google.cn会作出过滤,并在页面上显示根据当地法律,有部分内容被屏蔽了。   国人对此的反应颇为理性,认为此事不坏。   Google原来的时候因为坚持自由的理想,不妥协,被认为是自由的斗士,国人的救星。然后就被GCD屏蔽(2002年),然后被解禁,不过GFW用上了关键词防火墙,发现有敏感的词语出现,马上断开Google与用户的连接,然后就是短时间不能访问Google.com。   随着Google向国际扩张,火气也小了不少,“提供部分服务,比一点服务也提供不了要好”。国人也认识到Google是一个企业,不是一个政党,他虽然有自己的理想,也要与“当地政府”合作。国人也渐渐接受了Google不是救星的这个事实。   自由还要自己争取,而不是靠别人提供。

Posted in 计算机与 Internet | 1 Comment