<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[堕落兽人的专栏]]></title><description><![CDATA[A good developer should know that development is not just programming; a great developer should know that development is not jus]]></description><link>https://blog.youkuaiyun.com/FallenOrc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; FallenOrc]]></copyright><item><title><![CDATA[Unix与佛教]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/479200</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/479200</guid><author>FallenOrc</author><pubDate>Tue, 13 Sep 2005 13:40:00 +0800</pubDate><description><![CDATA[上个周末去了一趟山西五台山玩，五台山有一百多座寺庙，包括信奉密宗的喇嘛庙和信奉禅宗的和尚庙，时间有限，我只逛了五座庙，不过对佛教的发展还是游了一些了解。佛教从印度起源，结果现在印度的佛教几乎绝迹了，如今只有中国和泰国广泛信奉佛教，释伽摩尼当初可能没有料到，由于佛教向中国发展的时候走了几条不同的道路，所以在中国产生了几个分支，包括汉土的禅宗和源于西藏的密宗，不过密宗又分黄教、红教、花教，实在是繁杂的]]></description><category></category></item><item><title><![CDATA[软件从林生存法则]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/422588</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/422588</guid><author>FallenOrc</author><pubDate>Tue, 12 Jul 2005 15:33:00 +0800</pubDate><description><![CDATA[						<!--		@page { size: 8.27in 11.69in; margin: 0.79in }		P { margin-bottom: 0.08in }	-->						<!--		@page { size: 8.27in 11.69in; margin: 0.79in }]]></description><category></category></item><item><title><![CDATA[Linux线程的一些特点]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/422403</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/422403</guid><author>FallenOrc</author><pubDate>Tue, 12 Jul 2005 13:42:00 +0800</pubDate><description><![CDATA[Linux的线程是通过进程来模拟的，也就是说Linux里的线程本质上就是进程。Linux的线程机制是通过内核和库混合实现的，所以线程的实现在Linux的核心态和用户态都有执行，内核实现线程／进程的调度，libpthread库实现线程之间的同步。这也就是为什么多线程程序需要连接一个libpthread库的原因。Linux程序如果用pthread_create启动一个新的线程，实际上启动了两个轻量进程]]></description><category></category></item><item><title><![CDATA[打印自己源代码的程序]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/412934</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/412934</guid><author>FallenOrc</author><pubDate>Mon, 04 Jul 2005 15:11:00 +0800</pubDate><description><![CDATA[几天前网上看到一篇用Java写的打印自己源代码的程序，感觉挺有意思，于是写了一个C语言打印自己的程序。所谓打印自己，就是不是通过打开源代码文件，而是代码的目的就是打印出和源代码一样的字符来。这是我写的：#include #include static char *stats[100];static int  count=0;char *convert(char *str){  int len = ]]></description><category></category></item><item><title><![CDATA[优化(Optimization)和剖析器(Profiler)概要]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/406321</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/406321</guid><author>FallenOrc</author><pubDate>Tue, 28 Jun 2005 19:51:00 +0800</pubDate><description><![CDATA[为什么要优化？能够运行的程序不一定是可以发布的程序，功能齐全而且能够以用户可以接受的效率运行、消耗可以接受的资源的才是可以发布的程序，所以，在保证程序功能正确齐全的前提下，可能还需要做代码优化。何时优化？过早的优化往往带来代码可读性下降，引入bug，一般在项目后期才考虑“系统的优化”，但是在coding的过程中，程序员应该有意识的采用高效的算法，在一些编程细节上采用优化的代码风格。程序整个体系结构]]></description><category></category></item><item><title><![CDATA[C＋＋的成员函数指针简要]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/404960</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/404960</guid><author>FallenOrc</author><pubDate>Mon, 27 Jun 2005 16:41:00 +0800</pubDate><description><![CDATA[C++的成员变量指针和普通的指针没有什么大的区别，int类型成员变量的指针就是和int *， Foo类型的成员变量的指针就是Foo *，但是成员函数就不大一样了，主要是因为非静态成员函数实际上都隐藏这一个调用对象的指针的参数。静态成员函数指针，和普通的C函数指针没什么两样class Foo{public:    static int foo();};int (*fp)() = Foo::foo()]]></description><category></category></item><item><title><![CDATA[突然发现好多文章我看不懂了]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/404205</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/404205</guid><author>FallenOrc</author><pubDate>Mon, 27 Jun 2005 11:56:00 +0800</pubDate><description><![CDATA[看这么多铺天盖地的文章和帖子，我居然没有几篇能够看得懂，真是惭愧啊，仔细一象，也是自然外面都在研究企业级架构和应用，我在作客户端应用，所以看不懂；外面都在使用Java，要不就是.NET技术，我还在用C/C++编程，所以看不懂；外面都在使用Symbian或者Windows Mobile,我还在用Linux开发手机软件，所以看不懂；外面都在讨论使用Visual Sudio. NET， Eclipse或]]></description><category></category></item><item><title><![CDATA[我在开发中经常听到的托词]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/394038</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/394038</guid><author>FallenOrc</author><pubDate>Tue, 14 Jun 2005 12:02:00 +0800</pubDate><description><![CDATA[1） “我们目前没有这种需求“凡是有人质疑某个功能为什么没有实现的时候，这句托词可以推的一干二净，既然没有这个需求，所以自然可以不实现。但是客户的需求一开始往往就不是完整清晰的，往往只有一两句话的描述，从纯职业道德的角度出发，开发人员有责任为客户着想，当发现某个功能用户肯定需要但是没有在需求中涉及的时候，需要给出反馈提示客户，而且，客户如果不满意，项目也不得善终，与其到项目结尾被客户新的需求追的焦]]></description><category></category></item><item><title><![CDATA[混沌理论和项目管理]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/393523</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/393523</guid><author>FallenOrc</author><pubDate>Mon, 13 Jun 2005 16:46:00 +0800</pubDate><description><![CDATA[瀑布模型已经被实践证明是不适用于绝大部分软件开发项目的，如果说还有项目“可以”采用瀑布模型的话，它也完全可以采用更加先进的开发模型获得更好的效果。事实上，还是有很多项目采用瀑布模型开发，与此对应的事实是，一半的软件开发项目都可以称之为“失败”。最近看了本书叫Manage Project with Growth,从理论上解释了为什么瀑布式模型不适用于软件开发，以及为什么这样的模式还在大量被采用。瀑布]]></description><category></category></item><item><title><![CDATA[巧妙的利用C++的特性实现Profiling]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/391761</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/391761</guid><author>FallenOrc</author><pubDate>Fri, 10 Jun 2005 15:28:00 +0800</pubDate><description><![CDATA[软件中Profile的解释很多，有时候指的是一组设置值，这里说的Profile是对运行程序的数据采样，获得内存使用和运行时间的纪录，通过分析得以优化代码。1）内存Profile。C++提供宏和函数重载的功能，由此可以添加对内存的纪录，将一下代码放在头文件中，项目中每个.cpp文件都include这个头文件，使其产生效应。#ifdef _DEBUG#define new((x)) newObj((_]]></description><category></category></item><item><title><![CDATA[Ｃ++代码优化Ｔｉｐｓ]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/379496</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/379496</guid><author>FallenOrc</author><pubDate>Tue, 24 May 2005 11:35:00 +0800</pubDate><description><![CDATA[看很多关于代码优化的资料，都说代码优化是必要的，但是应该推迟到项目的最后阶段进行。原因很多：１）　过早的优化容易引入ｂｕｇ，一个慢但是ｂｕｇ-ｆｒｅｅ的程序总比快但是总ｃｒａｓｈ的程序好；２）　当今硬件性能今非昔比。不过对一个在ＰＣ上运行的程序可以说只能在ＸＸＸ主频以上的机器上才能运行，但是在某些项目中，比如手机，硬件环境是ｆｉｘｅｄ的，只能优化代码来迁就ＣＰＵ了。３）　在迭代开发中，现阶段的优化]]></description><category></category></item><item><title><![CDATA[老手 vs 高手]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/377041</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/377041</guid><author>FallenOrc</author><pubDate>Fri, 20 May 2005 17:47:00 +0800</pubDate><description><![CDATA[最近看老外写的软件开发书籍，看到一个词veteran，当初准备GRE的时候学过，就是“老兵“的意思，引申为有经验的人。以往看书形容有经验的人都是说experienced，现在觉得还是这个veteran更加贴切形容干软件这行需要的状态。《野战排》里说：“新兵的命不值钱，因为没有作战经验。” 做软件这行业一样，眼看着应届毕业生的工资一年比一年低，一方面是干这行的人多了，另一方面也是因为新手的价值对公司]]></description><category></category></item><item><title><![CDATA[程序员的叹息]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/373964</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/373964</guid><author>FallenOrc</author><pubDate>Thu, 12 May 2005 20:21:00 +0800</pubDate><description><![CDATA[今天得到消息，辛苦了半年的项目，又被取消了，因为客户取消了订单，取消的原因不清楚，但是鉴于软件质量，我觉得原因不言而喻。一年之中这已经是第二次了。开发过程中经历和很多的困苦，如果产品最后能够推出，不管买的怎么样，好歹也算是成功的做了一款产品，结果又一次败下阵来。《七武士》里面年老武士说“我也没有什么，不过多打了一些仗，而且打的都是败仗”，我突然发现自己虽然在这一行里干了两年，经历了几个项目，但是也]]></description><category></category></item><item><title><![CDATA[Diff程序的原理]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/372716</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/372716</guid><author>FallenOrc</author><pubDate>Fri, 06 May 2005 16:43:00 +0800</pubDate><description><![CDATA[使用版本控制工具CVS或者ClearCase中有merge的概念，而merge又是基于diff的，Linux/Unix下面的dif程序就能够获得两个文本文件的不同。Diff程序可以获得两个文本文件以行为单位的差异，基于LCS（Longest Common Subsequnece）算法。一个Subsequence的概念是......举例说明吧，一个字符串“FallenOrc”,“FaOrc"是一个s]]></description><category></category></item><item><title><![CDATA[线程真不是好玩的]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/372701</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/372701</guid><author>FallenOrc</author><pubDate>Fri, 06 May 2005 15:58:00 +0800</pubDate><description><![CDATA[						<!--		@page { size: 8.27in 11.69in; margin: 0.79in }		P { margin-bottom: 0.08in }	-->早就耳闻线程是一个可怕的东西，弄不好会让人疯掉的，所以长期以来，我一向对线程相当谨慎，甚至有点敬而远之，我相信1）决不设计过于复杂的多线程代码；2）必]]></description><category></category></item><item><title><![CDATA[有限状态机的实现]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/369548</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/369548</guid><author>FallenOrc</author><pubDate>Sat, 30 Apr 2005 18:49:00 +0800</pubDate><description><![CDATA[有限状态机（Finite State Machine或者Finite State Automata)是软件领域中一种重要的工具，很多东西的模型实际上就是有限状态机。最近看了一些游戏编程AI的材料，感觉游戏中的AI，第一要说的就是有限状态机来实现精灵的AI，然后才是A*寻路，其他学术界讨论比较多的神经网络、模糊控制等问题还不是很热。FSM的实现方式：1） switch/case或者if/else这无]]></description><category></category></item><item><title><![CDATA[减少低级劳动： 优化UI测试方法]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/367961</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/367961</guid><author>FallenOrc</author><pubDate>Fri, 29 Apr 2005 14:18:00 +0800</pubDate><description><![CDATA[涉及到UI的测试是一个噩梦，面多成千的test case，测试者需要按照描述进行UI操作，同时观察响应。这种纯手工的测试方式操作上很容易出错，而且相当耗时，尤其对regression test。要是能够象用xUnit测试非UI代码一样方便的自动化组织和执行UI测试，那将是多么美妙的事清以手机开发测试为例，不管是触摸屏方式还是键盘方式的输入方式，用户的操作总是通过硬件产生信号，引发硬件驱动程序，继而]]></description><category></category></item><item><title><![CDATA[以数据为中心的软件，一例]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/364065</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/364065</guid><author>FallenOrc</author><pubDate>Tue, 26 Apr 2005 18:48:00 +0800</pubDate><description><![CDATA[最近看《Game Programming Gems 1》，第一篇是关于以数据为中心的游戏开发，如果能够把一些数据属性甚至是逻辑抽取出来放在plain-text文件里面，就能够获得巨大的灵活性，因为engine programmer和game designer很可能不是同样的人员，game designer能够在不“打扰”engine programmer的情况下通过修改plain-text文件的内]]></description><category></category></item><item><title><![CDATA[Framework感悟]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/353147</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/353147</guid><author>FallenOrc</author><pubDate>Mon, 18 Apr 2005 20:07:00 +0800</pubDate><description><![CDATA[现在有很多Framework概念的额东西，Framework顾名思义就是一个骨架，就是一个semp-complete的application，application的开发者可以在framework上添加血肉。自然，Framework实现了比较generic的功能，但是这个"generic"也是有限的，还没有见过一个framework能够适用于任何应用的。现代的Framework都是要面对用户交互的]]></description><category></category></item><item><title><![CDATA[ 小议手机软件平台开发(4) - 政治问题]]></title><link>https://blog.youkuaiyun.com/FallenOrc/article/details/348647</link><guid>https://blog.youkuaiyun.com/FallenOrc/article/details/348647</guid><author>FallenOrc</author><pubDate>Fri, 15 Apr 2005 11:30:00 +0800</pubDate><description><![CDATA[不用多说，程序员也逃脱不了政治问题，尤其是公司内部的政治问题。公司花钱开发手机软件平台，是用来赚钱的，不是为了花钱而花钱的，如果开发出来的东西不能赚钱,那就有被cut掉的危险。别忘了，有很多现成的成熟的手机软件平台，公司是买手机的，不是买平台的，最终用户夸也只夸手机号不夸平台好，骂也只骂手机烂不骂平台烂，所以一个平台不行，就换一个。平台面对的是时间问题，现在手机产品层出不穷，隔一段时间就有新产品，]]></description><category></category></item></channel></rss>