自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

堕落兽人的专栏

A good developer should know that development is not just programming; a great developer should know that development is not jus

  • 博客(25)
  • 收藏
  • 关注

原创 Unix与佛教

上个周末去了一趟山西五台山玩,五台山有一百多座寺庙,包括信奉密宗的喇嘛庙和信奉禅宗的和尚庙,时间有限,我只逛了五座庙,不过对佛教的发展还是游了一些了解。佛教从印度起源,结果现在印度的佛教几乎绝迹了,如今只有中国和泰国广泛信奉佛教,释伽摩尼当初可能没有料到,由于佛教向中国发展的时候走了几条不同的道路,所以在中国产生了几个分支,包括汉土的禅宗和源于西藏的密宗,不过密宗又分黄教、红教、花教,实在是繁杂的

2005-09-13 13:40:00 1666

原创 软件从林生存法则

<!-- @page { size: 8.27in 11.69in; margin: 0.79in } P { margin-bottom: 0.08in } --> <!-- @page { size: 8.27in 11.69in; margin: 0.79in }

2005-07-12 15:33:00 2360

原创 Linux线程的一些特点

Linux的线程是通过进程来模拟的,也就是说Linux里的线程本质上就是进程。Linux的线程机制是通过内核和库混合实现的,所以线程的实现在Linux的核心态和用户态都有执行,内核实现线程/进程的调度,libpthread库实现线程之间的同步。这也就是为什么多线程程序需要连接一个libpthread库的原因。Linux程序如果用pthread_create启动一个新的线程,实际上启动了两个轻量进程

2005-07-12 13:42:00 2529

原创 打印自己源代码的程序

几天前网上看到一篇用Java写的打印自己源代码的程序,感觉挺有意思,于是写了一个C语言打印自己的程序。所谓打印自己,就是不是通过打开源代码文件,而是代码的目的就是打印出和源代码一样的字符来。这是我写的:#include #include static char *stats[100];static int  count=0;char *convert(char *str){  int len =

2005-07-04 15:11:00 4600 1

原创 优化(Optimization)和剖析器(Profiler)概要

为什么要优化?能够运行的程序不一定是可以发布的程序,功能齐全而且能够以用户可以接受的效率运行、消耗可以接受的资源的才是可以发布的程序,所以,在保证程序功能正确齐全的前提下,可能还需要做代码优化。何时优化?过早的优化往往带来代码可读性下降,引入bug,一般在项目后期才考虑“系统的优化”,但是在coding的过程中,程序员应该有意识的采用高效的算法,在一些编程细节上采用优化的代码风格。程序整个体系结构

2005-06-28 19:51:00 2381

原创 C++的成员函数指针简要

C++的成员变量指针和普通的指针没有什么大的区别,int类型成员变量的指针就是和int *, Foo类型的成员变量的指针就是Foo *,但是成员函数就不大一样了,主要是因为非静态成员函数实际上都隐藏这一个调用对象的指针的参数。静态成员函数指针,和普通的C函数指针没什么两样class Foo{public:    static int foo();};int (*fp)() = Foo::foo()

2005-06-27 16:41:00 10347

原创 突然发现好多文章我看不懂了

看这么多铺天盖地的文章和帖子,我居然没有几篇能够看得懂,真是惭愧啊,仔细一象,也是自然外面都在研究企业级架构和应用,我在作客户端应用,所以看不懂;外面都在使用Java,要不就是.NET技术,我还在用C/C++编程,所以看不懂;外面都在使用Symbian或者Windows Mobile,我还在用Linux开发手机软件,所以看不懂;外面都在讨论使用Visual Sudio. NET, Eclipse或

2005-06-27 11:56:00 2562 1

原创 我在开发中经常听到的托词

1) “我们目前没有这种需求“凡是有人质疑某个功能为什么没有实现的时候,这句托词可以推的一干二净,既然没有这个需求,所以自然可以不实现。但是客户的需求一开始往往就不是完整清晰的,往往只有一两句话的描述,从纯职业道德的角度出发,开发人员有责任为客户着想,当发现某个功能用户肯定需要但是没有在需求中涉及的时候,需要给出反馈提示客户,而且,客户如果不满意,项目也不得善终,与其到项目结尾被客户新的需求追的焦

2005-06-14 12:02:00 2672 1

原创 混沌理论和项目管理

瀑布模型已经被实践证明是不适用于绝大部分软件开发项目的,如果说还有项目“可以”采用瀑布模型的话,它也完全可以采用更加先进的开发模型获得更好的效果。事实上,还是有很多项目采用瀑布模型开发,与此对应的事实是,一半的软件开发项目都可以称之为“失败”。最近看了本书叫Manage Project with Growth,从理论上解释了为什么瀑布式模型不适用于软件开发,以及为什么这样的模式还在大量被采用。瀑布

2005-06-13 16:46:00 2876 1

原创 巧妙的利用C++的特性实现Profiling

软件中Profile的解释很多,有时候指的是一组设置值,这里说的Profile是对运行程序的数据采样,获得内存使用和运行时间的纪录,通过分析得以优化代码。1)内存Profile。C++提供宏和函数重载的功能,由此可以添加对内存的纪录,将一下代码放在头文件中,项目中每个.cpp文件都include这个头文件,使其产生效应。#ifdef _DEBUG#define new((x)) newObj((_

2005-06-10 15:28:00 3305

原创 我的2005高考作文:出人意料和情理之中

“出人意料和情理之中”的事情,作为中国人,我觉得是藏南问题,这么多年中国一日千里,国力强大,本来以为可以重夺失地,结果胡哥温哥还是签了条约,基本上是放弃藏南了,痛啊!!!亿万同胞都难以接受这个事实,但是仔细一想,还能怎么样呢?现在中国危机四伏,北有俄罗斯日本沆瀣一气,西有三种势力蠢蠢欲动,东有台海局势风起云涌,南有南海诸岛支离破碎,这时候,中央决定顾全大局,也是情有可原。“出人意料和情理之中”的事

2005-06-10 13:39:00 1650

原创 C++代码优化Tips

看很多关于代码优化的资料,都说代码优化是必要的,但是应该推迟到项目的最后阶段进行。原因很多:1) 过早的优化容易引入bug,一个慢但是bug-free的程序总比快但是总crash的程序好;2) 当今硬件性能今非昔比。不过对一个在PC上运行的程序可以说只能在XXX主频以上的机器上才能运行,但是在某些项目中,比如手机,硬件环境是fixed的,只能优化代码来迁就CPU了。3) 在迭代开发中,现阶段的优化

2005-05-24 11:35:00 2945

原创 老手 vs 高手

最近看老外写的软件开发书籍,看到一个词veteran,当初准备GRE的时候学过,就是“老兵“的意思,引申为有经验的人。以往看书形容有经验的人都是说experienced,现在觉得还是这个veteran更加贴切形容干软件这行需要的状态。《野战排》里说:“新兵的命不值钱,因为没有作战经验。” 做软件这行业一样,眼看着应届毕业生的工资一年比一年低,一方面是干这行的人多了,另一方面也是因为新手的价值对公司

2005-05-20 17:47:00 2329 3

原创 程序员的叹息

今天得到消息,辛苦了半年的项目,又被取消了,因为客户取消了订单,取消的原因不清楚,但是鉴于软件质量,我觉得原因不言而喻。一年之中这已经是第二次了。开发过程中经历和很多的困苦,如果产品最后能够推出,不管买的怎么样,好歹也算是成功的做了一款产品,结果又一次败下阵来。《七武士》里面年老武士说“我也没有什么,不过多打了一些仗,而且打的都是败仗”,我突然发现自己虽然在这一行里干了两年,经历了几个项目,但是也

2005-05-12 20:21:00 6099 17

原创 Diff程序的原理

使用版本控制工具CVS或者ClearCase中有merge的概念,而merge又是基于diff的,Linux/Unix下面的dif程序就能够获得两个文本文件的不同。Diff程序可以获得两个文本文件以行为单位的差异,基于LCS(Longest Common Subsequnece)算法。一个Subsequence的概念是......举例说明吧,一个字符串“FallenOrc”,“FaOrc"是一个s

2005-05-06 16:43:00 6090 1

原创 线程真不是好玩的

<!-- @page { size: 8.27in 11.69in; margin: 0.79in } P { margin-bottom: 0.08in } -->早就耳闻线程是一个可怕的东西,弄不好会让人疯掉的,所以长期以来,我一向对线程相当谨慎,甚至有点敬而远之,我相信1)决不设计过于复杂的多线程代码;2)必

2005-05-06 15:58:00 3267

原创 有限状态机的实现

有限状态机(Finite State Machine或者Finite State Automata)是软件领域中一种重要的工具,很多东西的模型实际上就是有限状态机。最近看了一些游戏编程AI的材料,感觉游戏中的AI,第一要说的就是有限状态机来实现精灵的AI,然后才是A*寻路,其他学术界讨论比较多的神经网络、模糊控制等问题还不是很热。FSM的实现方式:1) switch/case或者if/else这无

2005-04-30 18:49:00 10100

原创 减少低级劳动: 优化UI测试方法

涉及到UI的测试是一个噩梦,面多成千的test case,测试者需要按照描述进行UI操作,同时观察响应。这种纯手工的测试方式操作上很容易出错,而且相当耗时,尤其对regression test。要是能够象用xUnit测试非UI代码一样方便的自动化组织和执行UI测试,那将是多么美妙的事清以手机开发测试为例,不管是触摸屏方式还是键盘方式的输入方式,用户的操作总是通过硬件产生信号,引发硬件驱动程序,继而

2005-04-29 14:18:00 2121 1

原创 以数据为中心的软件,一例

最近看《Game Programming Gems 1》,第一篇是关于以数据为中心的游戏开发,如果能够把一些数据属性甚至是逻辑抽取出来放在plain-text文件里面,就能够获得巨大的灵活性,因为engine programmer和game designer很可能不是同样的人员,game designer能够在不“打扰”engine programmer的情况下通过修改plain-text文件的内

2005-04-26 18:48:00 1791

原创 Framework感悟

现在有很多Framework概念的额东西,Framework顾名思义就是一个骨架,就是一个semp-complete的application,application的开发者可以在framework上添加血肉。自然,Framework实现了比较generic的功能,但是这个"generic"也是有限的,还没有见过一个framework能够适用于任何应用的。现代的Framework都是要面对用户交互的

2005-04-18 20:07:00 1282 1

原创 小议手机软件平台开发(4) - 政治问题

不用多说,程序员也逃脱不了政治问题,尤其是公司内部的政治问题。公司花钱开发手机软件平台,是用来赚钱的,不是为了花钱而花钱的,如果开发出来的东西不能赚钱,那就有被cut掉的危险。别忘了,有很多现成的成熟的手机软件平台,公司是买手机的,不是买平台的,最终用户夸也只夸手机号不夸平台好,骂也只骂手机烂不骂平台烂,所以一个平台不行,就换一个。平台面对的是时间问题,现在手机产品层出不穷,隔一段时间就有新产品,

2005-04-15 11:30:00 1636 1

原创 小议手机软件平台开发(4) - 开发平台需要CMM吗?

简单的回答:不需要。复杂一点的回答:非但不需要,CMM可能会成为平台开发的绊脚石。说这话可能会得罪一些CMM的支持者,本人曾供职过一个某软件强国的CMM5/PCMM-4的企业,现服务于一家移动开发世界数二数三的公司,自认为对CMM和移动开发都有心得,不是睁眼说瞎话。首先声明,我并没有贬损CMM规范的意思,CMM对某些应用软件的开发还是很有作用的,我只是说它不适用于手机软件平台的开发。Why? 微软

2005-04-13 19:21:00 1613 1

原创 小议手机软件平台开发(3) - 模块化

一个手机软件平台开发是一个大工程,包含底层驱动、类库,还有上层的基本应用,必定要分成很多个模块来分别开发,我参与过得两个平台都有几十个模块。需要模块化是常识,但是怎么样模块化就是需要功力了。模块化首先需要分级别,这样易于管理,比如,操作系统级的模块是UI类库的基础,UI类库上层需要UI的应用的基础,这样可以比较合理的把模块分为3个级别。在管理上,每个级别的release都要把关,不然,会给依赖它的

2005-04-13 15:17:00 1408

原创 小议手机软件平台开发(2) - 开发一个开放平台

要开发手机软件平台,一定要已开始就要确立这个平台将来是要开放出去的目标,也就是说,开发的这点东西,将来应该是给外面的人继续开发的。我参加的一个手机软件平台就贯彻了这一点,遵从OSGi协议(这是一个现在很多厂商组织都在支持的协议,Eclipse 3.x开始也支持这种协议了)。这样的一个好处就是整个团队(往往是几百人)都有一个统一的vision,当出现技术决策的时候,考虑的是,我们做的东西将来拿出去给

2005-04-10 17:20:00 1728 1

原创 小议手机软件平台开发(1)

本人有幸在一年之内参与过某大型外企的两个手机软件平台的开发(首先申明,这两个平台既不是Symbian也不是Windows Mobile:) ),对这类平台的开发算是有点体会,有的话觉得不吐不快,于是在这里说说。什么是手机软件平台?大家可以把现在的手机想象成你现在看此文章用的PC机,PC之所以有这么丰富的功能,因为有操作系统,还有操作系统之上的软件,你的手机之所以能够炫酷之极,也是因为有其操作系统和

2005-04-07 20:37:00 2141

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除