摘要: 想要这么个玩意很久了:电脑自动出加减乘除的题目,并通过语音的方式读出理由很简单,现在出去买点小菜、水果啥的,找零钱的时候的大脑老是短路,就是算不出来,明显不如以前好用了。弄这么个玩意练练脑子,当然,以后买个啥的算的比谁都快也不错~~~电脑出题比较容易,弄些随机数就能搞定;语音很重要,如果题目是显示出来的,那就容易多了,不能达到练习心算的效果。但是对于语音这块觉得有点麻烦,本来想自己录下来一个数字,... 阅读全文
posted @ 2010-10-20 21:41 lzprgmr 阅读(697) 评论(5) 推荐(1) 编辑
摘要: 在VC++ 2008下编译如下代码:[代码]你会发现这段代码可以成功的编译并且运行,但是如果你足够细心,应该会发现EnumType并没有被定义,为什么使用没有定义的类型却能正常编译甚至运行呢? 原因有二:1. 函数中的参数声明enum EnumType type,不但被解析为一个参数声明,也被解析为对EnumType的一个前置声明。其实不光对enum,对class也是一样,比如[代码]也是没有问题... 阅读全文
posted @ 2010-10-16 15:03 lzprgmr 阅读(5593) 评论(5) 推荐(2) 编辑
摘要: Windows下自带的计算器用的也挺多了,但是基本上都是做一些简单的加减乘除,坦白讲,之前我甚至连CE和C两个键的区别都搞不太清楚,更不要说那些MR/MS/M+/M-/MC了。带着学习的心情,我打开了Windows 7下的计算器极其帮助,当然还有baidu/google。想不到,从此一个崭新的世界出现在了我的面前。这个计算器的功能是如此的强大,尤其对于一个程序员,更是相当的上手,不善加利用,简直就... 阅读全文
posted @ 2010-10-12 20:15 lzprgmr 阅读(64195) 评论(5) 推荐(6) 编辑
摘要: 突发奇想,想搞出这么个“老爸的工具箱”系列来,虽然我不确定这个系列中最终会有多少文章,但是感觉在女儿的成长过程中,会有不少内容逐渐添加进来,一来作为记录,二来也希望对其他和我一样的老爸有点参考。好吧,第一个工具是一个照片批量重命名的工具。女儿出生以来,我们每天都要给她拍一张照片来记录她的成长,看着小家伙一天天变样,的确是一件挺喜人的事。但这事操作起来也有点麻烦,基本流程是:... 阅读全文
posted @ 2010-10-10 22:52 lzprgmr 阅读(2448) 评论(6) 推荐(0) 编辑
摘要: 从内存管理方面来讲,C#是个完美的天堂,你不用像在C++中那样万分小心的管理着你的内存;尽管如此,本人还是喜欢C++要多些,正如微软称C++为native代码 - C++对我来讲,的确是要更native一些。其实,很多时候,C++之于C#,就像手动挡之于自动挡。闲话不扯,一般情况下,我们会碰到的内存问题有使用未初始化的指针,使用空指针,释放已经释放过的内存等等。最近工作中也遇到两个内存相关的问题,... 阅读全文
posted @ 2010-09-02 22:23 lzprgmr 阅读(2739) 评论(9) 推荐(3) 编辑
摘要: 一般传统链表的物理结构,是由指针把一个一个的节点相互连接而成:其特点是按需分配节点,灵活动态增长。但是此外,还有另外一种方式是使用数组实现链表,这里所有的node都在预先分配好的数组中,不使用指针,而是用数组下标来指向前一个、下一个元素:其特点是预先分配节点,并且如果需要链表长度随需增加,需要reallocation ,和vector类似。下面就我自己的一些了解,谈一下其优缺点与应用。数组作链表有哪些优点能要省些内存吗?不见得;速度要快吗?没看出来,那么为什么要使用这种不那么直观的方式来实现链表呢?数组的内存布局比较紧凑,能占些局部性原理的光在不提供指针的语言中实现链表结构,如vb等进程间通信 阅读全文
posted @ 2010-08-22 08:05 lzprgmr 阅读(8919) 评论(10) 推荐(1) 编辑
摘要: 这段时间,一直很少有机会写写代码。因为项目的性质本来就不是垒代码,而是玩一些危险、刺激的动作。做个比喻吧,比如你有一个房子,很多项目的性质是给它加个阳台,或者做个屋顶绿化,再或者扩建一间之类的,我们不玩这个,没意思,我们玩的是:恩,看来一楼有根柱子是可以省掉的,我们把他拿掉吧~~~好,拿掉了,预制板要塌下来了,旁边墙也要倒下来了 ---- 我的大量时间就花在了这上面, 寻找方案,讨论方案,选择方案... 阅读全文
posted @ 2010-08-19 22:17 lzprgmr 阅读(1459) 评论(1) 推荐(3) 编辑
摘要: 这是在这个讨论中学到的,虽然该讨论主题并不在此,但贾里同学在描述中很好的呈现出了这种设计。假设我有一个基类Base,然后会有一系列子类从其派生,派生类所代表的类型,可以由一个enum来表示:此处,kType1必须为0,且不允许对其他enum赋值,不难看出,DerivedTypeCount是DerivedType的数量。然后,我们可以有一个数组来容纳每个派生类对象的指针:这里有两个好处,一是利用en... 阅读全文
posted @ 2010-08-11 22:05 lzprgmr 阅读(758) 评论(9) 推荐(1) 编辑
摘要: 使用gtest、或者cppunit之类的框架编写单元测试代码,一个最常见的问题是对类私有成员的测试与验证。理想情况下,我们希望在测试中,类中所有的数据与方法都是可以访问的;而在产品代码中,只暴露实现定义好的接口。gtest官方文档中,也提到了对私有成员的处理,方法不外乎两种:一是使用friend关键字,骗取信任得以通行;二是重构采用Pimpl模式,公共类中只暴露接口,而实现类中暴露所有细节(pub... 阅读全文
posted @ 2010-06-28 16:43 lzprgmr 阅读(11078) 评论(11) 推荐(2) 编辑
摘要: 有1到10000共10000个数,如果我从中随机拿走一个数,你如何知道我拿走了哪个? 相信很多人看过这道题,并知道答案,这几天和同事聊天时听到了这个问题,因为有过自己的思考过程,不妨记录下来。说是逻辑题,其实也算是一道算法题,同事先讲了下他被面试中的思维过程:先把10000个数相乘,然后再将拿走一个数之后的9999个数相乘,两者相除即可。 这个算法是正确的,但是会有两个潜在的问题:如此多的数相乘,其范围必然会超出系统提供的数据类型支持,当然你可以实现自己的大数表示的算法,但那样性能必然有影响。假设扩展一下题目,提供的数组中有0的话,乘法就不可用了。针对前面提出的问题,同事想到了使用加法,先求 阅读全文
posted @ 2010-06-23 21:50 lzprgmr 阅读(6034) 评论(20) 推荐(1) 编辑
摘要: 2009年9月的一天,受当时一些“技术名博”的影响,突然想搞一个独立域名的技术博客。于是开始了无比折腾的过程:买域名、买空间,当然,最痛苦的是想一个自己喜欢、容易记住又未被注册的域名选博客发布系统,在Movable Type和WordPress之间徘徊很长一段时间之后,选择了Movable Type然后就是在MT上使劲折腾了, 为了设计CSS耗费了我无尽的青春;而MT本身的... 阅读全文
posted @ 2010-06-14 19:02 lzprgmr 阅读(1450) 评论(1) 推荐(0) 编辑
摘要: 呃, 不要误会,这不是我给出的建议,我暂时还算不上“优秀”的软件技术人员。是这样,这几天,从美国那边过来几个比较有经验的同事,因为相对来讲,中国这边的团队比较年轻,因此安排了一个“Open Forum” 的讨论会,让他们与中国的同事分享一下成长经验。他们一个是中国人,清华硕士毕业后去了美国,有10年的工作经验了;一个是美国人,有20年的工作经验。其间有一个人问了个问题:“要成为一个比较资深、优秀的... 阅读全文
posted @ 2010-06-08 22:28 lzprgmr 阅读(9419) 评论(52) 推荐(22) 编辑
摘要: 第一次接触Perl,还是2008年10月份的时候,当时因为项目重构,需要进行大量的文本操作,于是便拾起了以“文本操作为己任”的Perl语言。当然,带我入门的还是那本赫赫有名的The Llama Book, 即<Learning Perl> 第四版。 然而,由于主要是为了使用,所以只是快餐式的学习,并没有系统的去了解Perl,这几年来三三两两的也写了不少Perl脚... 阅读全文
posted @ 2010-05-16 09:59 lzprgmr 阅读(3440) 评论(2) 推荐(4) 编辑
摘要: 这是在上周review代码时注意到的三点,感觉有些意思,不妨记录下来。如无必要,勿增虚函数比如我们有以下关于球的类层次设计 ,其中需要判断某种球是否是可以踢的(kickable):乍一看觉得挺合理的,但仔细想想,其实IsKickable是某种球的本质静态属性,用一个虚函数来表示这种信息,是一种浪费,更加合理的方式应该是用一个数据成员和一个普通成员函数:类似这样的设计我碰到过至少两次,一次是被rev... 阅读全文
posted @ 2010-04-25 10:36 lzprgmr 阅读(855) 评论(0) 推荐(0) 编辑
摘要: 公司今年全面铺开Scrum开发流程,于是乎,从年初到现在,那是铺天盖地的培训: 请内部实施过Scrum的team;请美国参加过Mike Cohn同学培训的同事;请外面专业培训机构~~~多是多,但感觉缺乏系统的安排,不免显的有些乱。上周就参加了一堂UPerform的培训,题为<User Stories, Agile Estimating and Planning> ,为期两天。要说对Sc... 阅读全文
posted @ 2010-04-24 17:30 lzprgmr 阅读(1212) 评论(1) 推荐(0) 编辑
摘要: 在刚建立这个博客时,曾写过一篇文章大概总结了一下建站的方方面面。但是之后却一直没有时间好好打理,加上对Movable Type不是很熟悉,而其资料也不是很全,导致网站界面与使用体验都不是很满意。前几天花了些时间整理了一下,至少让自己感觉好了很多。 更改页面主色调为"黑白灰" Movable Type系统提供的几个模板都不是很适合用作技术博客,最开始,在参考了若干个博客的设计之后,自己弄了个css,... 阅读全文
posted @ 2010-03-28 21:19 lzprgmr 阅读(439) 评论(0) 推荐(0) 编辑
摘要: 应该说,这个展望在几个月前写2009年总结的时候就该列出来的,现在写,未免有些晚了。但是晚胜于无,给自己立个标杆在此,还是能够起到提醒作用的。2010年,对自己有五个方面的希望吧:1. 心理在看或者将看一些心理学的书,如《影响力》,《钝感力》,《正见》等,更好的了解自我与他人。追求淡定~~~2. 理财在看《一生的理财计划》,这应该不是一本经典的书,但却是一本很系统的书。很适合FQ较低的人读。有时间... 阅读全文
posted @ 2010-03-17 21:15 lzprgmr 阅读(446) 评论(2) 推荐(0) 编辑
摘要: Thrashing的中文翻译叫"颠簸"吧,听着挺怪的,其实也是,很多技术名词都是可意会而不可言传的。反正就是这么回事吧,当你的物理内存不够用时,之后每从pagefile读入多少内容,就需要先从内存中腾出多少空间写到pagefile先。这一读一写就会让你的系统元气大伤,而且,如果物理内存迟迟得不到释放,之后所有涉及到page fault的操作都会经历这一读一写,结局就是每步操作都慢如蜗牛。 其实,此... 阅读全文
posted @ 2010-03-12 19:04 lzprgmr 阅读(3107) 评论(3) 推荐(0) 编辑
摘要: 前几天我们项目刚刚解决了一个pure virtual function call引起的stopship的bug,乘热打铁,学习总结一下。理论上的case当一个纯虚函数被调用到时,vc++的debug模式下会弹出这么一个对话框:然后就是crash了。在网上找了一下,发现已经有人对此作了详细的介绍:"Pure Virtual Function Called": An Explanation. 这是一篇... 阅读全文
posted @ 2010-03-07 18:50 lzprgmr 阅读(2027) 评论(0) 推荐(1) 编辑
摘要: VBA支持一直是我们发布的组件的内建功能,目的有两个:一是支持内部自动化测试,二是提供给用户宏扩展的能力。但由于我们提供的是一个组件,而用我们这个组件的软件不一定需要VBA的功能,事实上,由于VBA的日渐没落(微软早就停止升级VBA了,这就是为什么VBA没有64位版本的原因,也预示着VBA的必将最终消亡),大家基本都不想要了。然而,在我们库中,VBA并不是一个可选的组件,你用也好,不用也罢,VBA... 阅读全文
posted @ 2010-02-25 16:59 lzprgmr 阅读(1764) 评论(0) 推荐(0) 编辑

黄将军