今天看了hax的blog,不知道哪个项里面提到了CSS面对表格的col的时候的尴尬。后来深入思考了一下,发现这其实是一个本质性的困难。而且问题并不是出现在CSS上,而是出现在XML上。
由于XML要求任何一个元素(除了根元素)都必须有且只有一个父元素,这就导致XML的table模型有些不自然,因为,一个cell显然是一个row的子,但是我们也可以说它同时也是col的子,可是由于XML(DOM)强制的树状模型,导致这个没有办法实现。这可以说是层次型数据和关系型数据的一个典型分野。在关系型数据库中,col可以认为是描述row数据的数据,也就是元数据,或者叫做关系。想要真正的解决这个问题,也就是说 ...
- 22:37
- 浏览 (75)
- 评论 (0)
一个定时器队列
实现了一个高性能的定时器队列处理系统,基本的实现思路是把所有的定时器请求按超时的前后顺序排入队列中,然后不断的查看是否开始的定时器超时已经到达,如果到达则调用回调处理函数。
这个定时器队列依赖于时间处理的函数和线程,这两个都是平台相关的,不过幸运的是我把他们包装起来了,也就意味着这儿有一个简单的线程包装库。同时有一个小小的可用的可池化的线程的实现。
- 16:38
- 浏览 (148)
- 评论 (0)
只适合在Windows系统下[包括WinCE]使用。主要是因为依赖于Windows平台的CString和FindFirstFile、FindNextFile以及FindClose系列函数。其实对于CString的依赖并不是必要的,只是方便了Find*系列函数的调用而已。
examples里面是一些使用这个简单遍历器的例子。包括删除目录中所有文件,复制到另一个目录,生成vector或者一个别的表达等等。
StringOp实现了std::string和CString之间的转换。
当然,我知道,boost实现了一个更漂亮的目录访问器,并且显然功能更强,适应性更好,但是由于我想到我仍然不得不在自 ...
- 15:46
- 浏览 (145)
- 评论 (0)
有限状态机
实现了一个确定型的有限状态机,可以向它注册状态跃迁规则和动作,然后在事件发生的时候通知它,别的都由它实现了。动作的原型是一个void (*)(void* params)的函数指针。
FSM的实现不依赖于任何超越标准C++的内容,也就是说,它可以使用在任何支持标准C++的环境中。顺便说一下,我在WinCE和Windows上都使用过它。
HTML2TEXT
一 个简单的例子使用有限状态机,它能够实现快速的把HTML文件转换为TEXT文件,具体的说,就是把标签(头尾tag)去掉,同时其属性也被去掉,把注释 内容去掉,把脚本和内嵌样式单中的内容去掉,把实体引用转换为实体代表 ...
- 13:33
- 浏览 (130)
- 评论 (0)
在合适的地方使用合适的技术,我想这一点没有人会反对。而且大多数人都会觉得做到这一点极端简单,无需乎强调。大家可能会觉得问题倒是在于怎么断定什么是合适的技术这个问题。
但其实这两个问题(1、使用合适的技术,2、判定技术是否合适)并没有明确的分界线。因为显然如果不能判定技术是否合适,我们就不能使用合适的技术。
现在说一下我判断技术是否合适的基本原则。1、要经过时间的考验。2、要有比较严密的理论基础。3、技术本身的流行度高。
看看软件开发过程中涉及到的问题。1、理解问题域。这个过程叫做什么业务建模也罢,叫做什么需求分析也罢,主要的目的就是理解问题域。2、设定解决方案。 这个区间承上 ...
- 18:24
- 浏览 (371)
- 评论 (0)
C和C++语言是流行和常用的依赖于顺序的语言。C++略为有点改进,在类范围内部不依赖于顺序。依赖于顺序是一种惩罚,是一种不重视程序员感受的表现,并且在深层次要求采用采用声明和实现分开,因而也就不能维持DRY原则。违背DRY会导致维护复杂。
我详细说明一下为什么依赖顺序是罪恶的。
大家都知道抽象是一种强大的能力,但是,依赖于顺序强迫我们只能从低层次的细节开始,这跟现如今流行的IDE的智能完成一样。我们不得不把所有的细节描述完备,才能构造更大的构件。
我还是用一个实例来说明吧。
我为了练习的目的,试图写一个HTTP Client,自然,我是从阅读RFC规范开始的。通过扫描RFC的目录和快速 ...
- 19:23
- 浏览 (575)
- 评论 (0)
关于这个话题,我似乎说过好多次了。软件系统其实就是现实系统的抽象,就是现实系统的模型。最近,看到一个论点,是这样说的:软件建模(架构)的过程其实就是一个定理证明的过程。我得说,在我看来,这有一定的真理性。但是事实有一定的差异。基本原因是:我们碰到问题的时候,并不总是对问题的解决方案一无所知的,或者更确切的说,对问题的解决方案几乎总是有一定的了解得。这时候,证明的过程其实并不是很明显,反而是表达的过程成了重头戏。
这儿,我在阐述一遍我的观点,软件就是模型,就是抽象。基于上面的描述,软件开发过程也就是构思模型和表达模型的过程。由于表达和构思互相影响,密不可分(大家可以参照语言和思维的关系来理解这 ...
- 13:46
- 浏览 (626)
- 评论 (0)
interface EventTarget {
void addEventListener(in DOMString type, in EventListener listener, in boolean useCapture);
void removeEventListener(in DOMString type, in EventListener listener, in boolean useCapture);
boolean dispatchEvent(in Event evt) raises(E ...
- 18:43
- 浏览 (495)
- 评论 (0)
interface StyleSheet {
readonly attribute DOMString type;
attribute boolean disabled;
readonly attribute Node ownerNode;
readonly attribute StyleSheet parentStyleSheet;
readonly attribute DOMString href;
readonly attribute DOMString ...
- 18:43
- 浏览 (490)
- 评论 (0)
由于Ajax的火爆,所以我会重点介绍与它相关的一些技术。下面的文档已经写了很久了,由于上一篇的尖括号搞的我非常之烦,现在才贴出来,见谅。
我将从Window,XMLHttpRequest等这几个主要接口出发(Document前面已经描述了),描述客户端Javascript编程的主要轮廓。另外,值得注意的是,这个领域的变化仍然非常剧烈,我不保证我描述的东西都可用。无论是现在(我描述的东西还太新)还是以后(而且还没有定型)。
interface XMLHttpRequest {
attribute EventListener onreadystatechange;
...
- 18:29
- 浏览 (1776)
- 评论 (0)







评论排行榜