<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lifeNet的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lifeNet</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lifeNet]]></copyright><item><title><![CDATA[模块化-续]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83360809</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83360809</guid><author>lifeNet</author><pubDate>Mon, 09 Mar 2009 12:08:55 +0800</pubDate><description><![CDATA[我先从现有的模块结构说起，然后做一个分类和总结，同时预测一下未来的趋势
最初的Fortran语言就提供了各种模块机制【当然，按照现在普遍的认识，不认为它们是模块，不过按照我的看法，它们显然是】。比如Routine，DataBlock等。后来出现了ADT，出现了Object，这些都是模块的具体例子。

例程	主要用于重用一个抽象
数据块	表达用于加工的原材料和结果的一种模块，可以认为是被动的...]]></description><category></category></item><item><title><![CDATA[关于模块化]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83358727</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83358727</guid><author>lifeNet</author><pubDate>Mon, 02 Mar 2009 18:20:31 +0800</pubDate><description><![CDATA[模块化是迄今为止对付复杂软件系统的最好的办法。
问题并不在于上面这句话。问题在于怎么模块化。这儿的“怎么模块化”并不是说不知道模块化是把系统分拆成几个模块，组合而成系统。而是说不知道以什么规则指导我们进行模块分拆。
当然，关于模块化，有很多非常著名的指导原则，最著名的莫过于“高内聚，低耦合”。可是这个原则有点太过空泛。即便如此，我们也很有必要研究一下这个原则。高内聚的好处是什么？为什么要高内聚...]]></description><category></category></item><item><title><![CDATA[CSS和表格]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83220419</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83220419</guid><author>lifeNet</author><pubDate>Fri, 29 Feb 2008 22:37:04 +0800</pubDate><description><![CDATA[今天看了[url=http://hax.iteye.com/]hax的blog[/url]，不知道哪个项里面提到了CSS面对表格的col的时候的尴尬。后来深入思考了一下，发现这其实是一个本质性的困难。而且问题并不是出现在CSS上，而是出现在XML上。

由于XML要求任何一个元素（除了根元素）都必须有且只有一个父元素，这就导致XML的table模型有些不自然，因为，一个cell显然是一个row...]]></description><category></category></item><item><title><![CDATA[TimerAgent]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83194742</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83194742</guid><author>lifeNet</author><pubDate>Tue, 13 Nov 2007 16:38:01 +0800</pubDate><description><![CDATA[一个定时器队列
实现了一个高性能的定时器队列处理系统，基本的实现思路是把所有的定时器请求按超时的前后顺序排入队列中，然后不断的查看是否开始的定时器超时已经到达，如果到达则调用回调处理函数。
这个定时器队列依赖于时间处理的函数和线程，这两个都是平台相关的，不过幸运的是我把他们包装起来了，也就意味着这儿有一个简单的线程包装库。同时有一个小小的可用的可池化的线程的实现。...]]></description><category></category></item><item><title><![CDATA[一个简单的目录遍历器]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83194735</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83194735</guid><author>lifeNet</author><pubDate>Tue, 13 Nov 2007 15:46:36 +0800</pubDate><description><![CDATA[只适合在Windows系统下[包括WinCE]使用。主要是因为依赖于Windows平台的CString和FindFirstFile、FindNextFile以及FindClose系列函数。其实对于CString的依赖并不是必要的，只是方便了Find*系列函数的调用而已。
examples里面是一些使用这个简单遍历器的例子。包括删除目录中所有文件，复制到另一个目录，生成vector或者一个别的表达等...]]></description><category></category></item><item><title><![CDATA[一点实用代码]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83194708</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83194708</guid><author>lifeNet</author><pubDate>Tue, 13 Nov 2007 13:33:10 +0800</pubDate><description><![CDATA[
有限状态机
实现了一个确定型的有限状态机，可以向它注册状态跃迁规则和动作，然后在事件发生的时候通知它，别的都由它实现了。动作的原型是一个void (*)(void* params)的函数指针。
FSM的实现不依赖于任何超越标准C++的内容，也就是说，它可以使用在任何支持标准C++的环境中。顺便说一下，我在WinCE和Windows上都使用过它。  
HTML2TEXT
一 个简单的例子使用有限状...]]></description><category></category></item><item><title><![CDATA[合适的地方使用合适的技术]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83159510</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83159510</guid><author>lifeNet</author><pubDate>Wed, 06 Jun 2007 18:24:22 +0800</pubDate><description><![CDATA[在合适的地方使用合适的技术，我想这一点没有人会反对。而且大多数人都会觉得做到这一点极端简单，无需乎强调。大家可能会觉得问题倒是在于怎么断定什么是合适的技术这个问题。

但其实这两个问题（1、使用合适的技术，2、判定技术是否合适）并没有明确的分界线。因为显然如果不能判定技术是否合适，我们就不能使用合适的技术。

现在说一下我判断技术是否合适的基本原则。1、要经过时间的考验。2、要有比较严密的理论基础...]]></description><category></category></item><item><title><![CDATA[依赖顺序是罪恶]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83130543</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83130543</guid><author>lifeNet</author><pubDate>Fri, 16 Feb 2007 19:23:30 +0800</pubDate><description><![CDATA[C和C++语言是流行和常用的依赖于顺序的语言。C++略为有点改进，在类范围内部不依赖于顺序。依赖于顺序是一种惩罚，是一种不重视程序员感受的表现，并且在深层次要求采用采用声明和实现分开，因而也就不能维持DRY原则。违背DRY会导致维护复杂。
我详细说明一下为什么依赖顺序是罪恶的。
大家都知道抽象是一种强大的能力，但是，依赖于顺序强迫我们只能从低层次的细节开始，这跟现如今流行的IDE的智能完成一样。我...]]></description><category></category></item><item><title><![CDATA[软件开发的本质]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83124040</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83124040</guid><author>lifeNet</author><pubDate>Mon, 04 Dec 2006 13:46:36 +0800</pubDate><description><![CDATA[关于这个话题，我似乎说过好多次了。软件系统其实就是现实系统的抽象，就是现实系统的模型。最近，看到一个论点，是这样说的：软件建模（架构）的过程其实就是一个定理证明的过程。我得说，在我看来，这有一定的真理性。但是事实有一定的差异。基本原因是：我们碰到问题的时候，并不总是对问题的解决方案一无所知的，或者更确切的说，对问题的解决方案几乎总是有一定的了解得。这时候，证明的过程其实并不是很明显，反而是表达的过...]]></description><category></category></item><item><title><![CDATA[Event系统相关接口]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83103843</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83103843</guid><author>lifeNet</author><pubDate>Sun, 15 Oct 2006 18:43:40 +0800</pubDate><description><![CDATA[interface EventTarget {
  void               addEventListener(in DOMString type, in EventListener listener, in boolean useCapture);
  void               removeEventListener(in DOMString type, in Eve...]]></description><category></category></item><item><title><![CDATA[Style&CSS的编程接口]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83103842</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83103842</guid><author>lifeNet</author><pubDate>Sun, 15 Oct 2006 18:43:06 +0800</pubDate><description><![CDATA[interface StyleSheet {
  readonly attribute DOMString        type;
           attribute boolean          disabled;
  readonly attribute Node             ownerNode;
  readonly attribute StyleSheet ...]]></description><category></category></item><item><title><![CDATA[Web Application API]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83103841</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83103841</guid><author>lifeNet</author><pubDate>Sun, 15 Oct 2006 18:29:55 +0800</pubDate><description><![CDATA[由于Ajax的火爆，所以我会重点介绍与它相关的一些技术。下面的文档已经写了很久了，由于上一篇的尖括号搞的我非常之烦，现在才贴出来，见谅。

我将从Window，XMLHttpRequest等这几个主要接口出发（Document前面已经描述了），描述客户端Javascript编程的主要轮廓。另外，值得注意的是，这个领域的变化仍然非常剧烈，我不保证我描述的东西都可用。无论是现在（我描述的东西还太新...]]></description><category></category></item><item><title><![CDATA[XML基础]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83103840</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83103840</guid><author>lifeNet</author><pubDate>Sun, 15 Oct 2006 18:16:37 +0800</pubDate><description><![CDATA[虽说我认为上面的东西基本上不言自明，但我也意识到，很多人并不是很清楚XML的基本概念。所以，我准备把上面的东西解释一遍，只解释那些我认为确实有必要解释的东西。
一个XML文档就是一个文本文档。跟普通文本文档完全相同。只不过，它可能会比别的文本文档多了一些限制而已。一般来说，我们对于XML文档的直观认识就是：里面有大量的尖括号：）。是的，确实如此。XML文档被要求是Unicode字符集的文本文档。...]]></description><category></category></item><item><title><![CDATA[JavaScript in Browser]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83103839</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83103839</guid><author>lifeNet</author><pubDate>Sun, 15 Oct 2006 18:10:00 +0800</pubDate><description><![CDATA[介绍host概念
与普通的语言不同的是，JavaScript一开始就被设计为一个嵌入式的语言。这意味着，它是寄生在某个环境中而不是自足的。当然，这也意味着其运行环境的边境就是JavaScript的能力边境。JavaScript所寄居的那个运行环境叫做JavaScript的Host。JavaScript跟Host环境之间可以进行非常方便的交流和沟通，并且，以其寄宿的Host作为自己的世界。Java...]]></description><category></category></item><item><title><![CDATA[JavaScript RegExp]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83103837</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83103837</guid><author>lifeNet</author><pubDate>Sun, 15 Oct 2006 18:04:51 +0800</pubDate><description><![CDATA[上面的描述中，我特意的省略掉了RegExp的具体描述。RegExp就是大名鼎鼎的规则表达式，我准备用一章描述之。
规则表达式是用来在文本中进行高效查找和替换的一种语言体系。按照分类，它是正则文法。
按照惯例，先说RegExp的literal。
/.../...，这就是RegExp的literal，两个斜线中间夹着RegExp的主体内容，后面是可有可无的一些选项。
我会先试图描述JavaSc...]]></description><category></category></item><item><title><![CDATA[JavaScript语言教程]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83103836</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83103836</guid><author>lifeNet</author><pubDate>Sun, 15 Oct 2006 18:02:59 +0800</pubDate><description><![CDATA[接下来我似乎应该给出各个对象的属性了？我给还是不给呢？给出吧。免得大家说我不厚道。
arguments: callee, caller, length，同时，需要注意的是，它是一个数组，可以通过[]来访问它的各个具体的元素。其元素就是各个参数。
Array: constructor, index, input, length, prototype concat(), join(), pop()...]]></description><category></category></item><item><title><![CDATA[JavaScript系列教程-JavaScript语言教程]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83103835</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83103835</guid><author>lifeNet</author><pubDate>Sun, 15 Oct 2006 18:01:06 +0800</pubDate><description><![CDATA[概述
JavaScript是一个基于对象的面向对象语言，同时是一个函数式语言。
跟我们常见的基于类的面向对象语言不同，JavaScript是基于对象的。这意味着JavaScript没有类的存在，只有对象的存在。这个同时也避免了基于类的面向对象语言学理上对于元类的要求，那会导致无限递归。原因是：类作为一种特殊的对象，其也应该有模版，也就是元类，依次类推下来。没有了类，这就要求我们的思路进行完全的...]]></description><category></category></item><item><title><![CDATA[模型及其他]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83103834</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83103834</guid><author>lifeNet</author><pubDate>Sun, 15 Oct 2006 17:59:04 +0800</pubDate><description><![CDATA[首先，是哲学的。柏拉图的理型世界。我们的世界是不完美的，但是有一个完美的世界作为我们的模型存在。比如：马，一匹马可能是三条腿，另一匹马的牙长得不好，但是它们都是马，它们都是理型世界中马的具体化。亚里士多德的反驳。亚里士多德认为，我们的世界并不需要一个先于我们的理型的世界的存在，因为：1、会导致事物的数量倍增。比如：理型的世界中的事物是不是另一个理型的世界中的事物的具体化？2、根据观察的经验，我们都...]]></description><category></category></item><item><title><![CDATA[安全问题考虑]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83103833</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83103833</guid><author>lifeNet</author><pubDate>Sun, 15 Oct 2006 17:57:53 +0800</pubDate><description><![CDATA[安全问题分成两个方面，一个是类型方面的，一个是对象方面的。类型方面的是对于一个对象集合作为一个整体进行考虑的时候的安全性问题，对象方面的是针对一个单独的对象考虑的时候的安全性问题。
举个例子，只有外科手术医生可以给病人做手术，这就是一个类型方面的安全性描述，而张三这个神刀手可以不受限制的使用医院的医疗器械，这是一个对象方面的安全性描述。
在计算机领域，我们经常看到所谓的基于对象的安全性和基于角...]]></description><category></category></item><item><title><![CDATA[String的length]]></title><link>https://blog.youkuaiyun.com/lifeNet/article/details/83103832</link><guid>https://blog.youkuaiyun.com/lifeNet/article/details/83103832</guid><author>lifeNet</author><pubDate>Sun, 15 Oct 2006 17:54:06 +0800</pubDate><description><![CDATA[Java有一个叫做String的类，可以通过length得到String对象的长度。
现在我要问一个问题，三秒钟给出答案：
这个length是属性（Field）还是方法（Method）。
1、2、3。
你说是属性？
你确认你说的对么？我们可以int n = String.length;但是不可以String.length = n;Why？你见过那个类的某个属性只可读不可写过？
或许你能...]]></description><category></category></item></channel></rss>