<script language="JavaScript">
<!--
var doc = new ActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM")
//加载文档
//doc.load("b.xml");
//创建文件头
var p = doc.createProcessingInstruction("xml","version='1.0' encoding='gb2312'");
//添加文件头
doc.appendChild(p);
//用于直接加载时获得根接点
//var root = doc.documentElement;
//两种方式创建根接点
// var root = doc.createElement("students");
var root = doc.createNode(1,"students","");
//创建子接点
var n = doc.createNode(1,"ttyp","");
//指定子接点文本
//n.text = " this is a test";
//创建孙接点
var o = doc.createElement("sex");
o.text = "男"; //指定其文本
//创建属性
var r = doc.createAttribute("id");
r.value="test";
//添加属性
n.setAttributeNode(r);
//创建第二个属性
var r1 = doc.createAttribute("class");
r1.value="tt";
//添加属性
n.setAttributeNode(r1);
//删除第二个属性
n.removeAttribute("class");
//添加孙接点
n.appendChild(o);
//添加文本接点
n.appendChild(doc.createTextNode("this is a text node."));
//添加注释
n.appendChild(doc.createComment("this is a comment\n"));
//添加子接点
root.appendChild(n);
//复制接点
var m = n.cloneNode(true);
root.appendChild(m);
//删除接点
root.removeChild(root.childNodes(0));
//创建数据段
var c = doc.createCDATASection("this is a cdata");
c.text = "hi,cdata";
//添加数据段
root.appendChild(c);
//添加根接点
doc.appendChild(root);
//查找接点
var a = doc.getElementsByTagName("ttyp");
//var a = doc.selectNodes("//ttyp");
//显示改接点的属性
for(var i= 0;i<a.length;i++)
{
alert(a[i].xml);
for(var j=0;j<a[i].attributes.length;j++)
{
alert(a[i].attributes[j].name);
}
}
//修改节点,利用XPATH定位节点
var b = doc.selectSingleNode("//ttyp/sex");
b.text = "女";
//alert(doc.xml);
//XML保存(需要在服务端,客户端用FSO)
//doc.save();
//查看根接点XML
if(n)
{
alert(n.ownerDocument.xml);
}
//-->
</script>
7.4、文档对象模型(DOM)
文档对象模型(DOM)是表示文档(比如HTML和XML)和访问、操作构成文档的各种元素的应用程序接口(API)。一般的,支持Javascript的所有浏览器都支持DOM。本文所涉及的DOM,是指W3C定义的标准的文档对象模型,它以树形结构表示HTML和XML文档,定义了遍历这个树和检查、修改树的节点的方法和属性。
7.4.1、DOM眼中的HTML文档:树
在DOM眼中,HTML跟XML一样是一种树形结构的文档,<html>是根(root)节点,<head>、<title>、<body>是<html>的子(children)节点,互相之间是兄弟(sibling)节点;<body>下面才是子节点<table>、<span>、<p>等等。如下图:
这个是不是跟XML的结构有点相似呢。不同的是,HTML文档的树形主要包含表示元素、标记的节点和表示文本串的节点。
7.4.2、HTML文档的节点
DOM下,HTML文档各个节点被视为各种类型的Node对象。每个Node对象都有自己的属性和方法,利用这些属性和方法可以遍历整个文档树。由于HTML文档的复杂性,DOM定义了nodeType来表示节点的类型。这里列出Node常用的几种节点类型:
接口 | nodeType常量 | nodeType值 | 备注 |
Element | Node.ELEMENT_NODE | 1 | 元素节点 |
Text | Node.TEXT_NODE | 3 | 文本节点 |
Document | Node.DOCUMENT_NODE | 9 | document |
Comment | Node.COMMENT_NODE | 8 | 注释的文本 |
DocumentFragment | Node.DOCUMENT_FRAGMENT_NODE | 11 | document片断 |
Attr | Node.ATTRIBUTE_NODE | 2 | 节点属性 |
DOM树的根节点是个Document对象,该对象的documentElement属性引用表示文档根元素的Element对象(对于HTML文档,这个就是<html>标记)。Javascript操作HTML文档的时候,document即指向整个文档,<body>、<table>等节点类型即为Element。Comment类型的节点则是指文档的注释。具体节点类型的含义,请参考《Javascript权威指南》,在此不赘述。
Document定义的方法大多数是生产型方法,主要用于创建可以插入文档中的各种类型的节点。常用的Document方法有:
方法 | 描述 |
createAttribute() | 用指定的名字创建新的Attr节点。 |
createComment() | 用指定的字符串创建新的Comment节点。 |
createElement() | 用指定的标记名创建新的Element节点。 |
createTextNode() | 用指定的文本创建新的TextNode节点。 |
getElementById() | 返回文档中具有指定id属性的Element节点。 |
getElementsByTagName() | 返回文档中具有指定标记名的所有Element节点。 |
对于Element节点,可以通过调用getAttribute()、setAttribute()、removeAttribute()方法来查询、设置或者删除一个Element节点的性质,比如<table>标记的border属性。下面列出Element常用的属性:
属性 | 描述 |
tagName | 元素的标记名称,比如<p>元素为P。HTML文档返回的tabName均为大写。 |
Element常用的方法:
方法 | 描述 |
getAttribute() | 以字符串形式返回指定属性的值。 |
getAttributeNode() | 以Attr节点的形式返回指定属性的值。 |
getElementsByTabName() | 返回一个Node数组,包含具有指定标记名的所有Element节点的子孙节点,其顺序为在文档中出现的顺序。 |
hasAttribute() | 如果该元素具有指定名字的属性,则返回true。 |
removeAttribute() | 从元素中删除指定的属性。 |
removeAttributeNode() | 从元素的属性列表中删除指定的Attr节点。 |
setAttribute() | 把指定的属性设置为指定的字符串值,如果该属性不存在则添加一个新属性。 |
setAttributeNode() | 把指定的Attr节点添加到该元素的属性列表中。 |
Attr对象代表文档元素的属性,有name、value等属性,可以通过Node接口的attributes属性或者调用Element接口的getAttributeNode()方法来获取。不过,在大多数情况下,使用Element元素属性的最简单方法是getAttribute()和setAttribute()两个方法,而不是Attr对象。
7.4.3、使用DOM操作HTML文档
Node对象定义了一系列属性和方法,来方便遍历整个文档。用parentNode属性和childNodes[]数组可以在文档树中上下移动;通过遍历childNodes[]数组或者使用firstChild和nextSibling属性进行循环操作,也可以使用lastChild和previousSibling进行逆向循环操作,也可以枚举指定节点的子节点。而调用appendChild()、insertBefore()、removeChild()、replaceChild()方法可以改变一个节点的子节点从而改变文档树。
需要指出的是,childNodes[]的值实际上是一个NodeList对象。因此,可以通过遍历childNodes[]数组的每个元素,来枚举一个给定节点的所有子节点;通过递归,可以枚举树中的所有节点。下表列出了Node对象的一些常用属性和方法:
Node对象常用属性:
属性 | 描述 |
attributes | 如果该节点是一个Element,则以NamedNodeMap形式返回该元素的属性。 |
childNodes | 以Node[]的形式存放当前节点的子节点。如果没有子节点,则返回空数组。 |
firstChild | 以Node的形式返回当前节点的第一个子节点。如果没有子节点,则为null。 |
lastChild | 以Node的形式返回当前节点的最后一个子节点。如果没有子节点,则为null。 |
nextSibling | 以Node的形式返回当前节点的兄弟下一个节点。如果没有这样的节点,则返回null。 |
nodeName | 节点的名字,Element节点则代表Element的标记名称。 |
nodeType | 代表节点的类型。 |
parentNode | 以Node的形式返回当前节点的父节点。如果没有父节点,则为null。 |
previousSibling | 以Node的形式返回紧挨当前节点、位于它之前的兄弟节点。如果没有这样的节点,则返回null。 |
Node对象常用方法:
方法 | 描述 |
appendChild() | 通过把一个节点增加到当前节点的childNodes[]组,给文档树增加节点。 |
cloneNode() | 复制当前节点,或者复制当前节点以及它的所有子孙节点。 |
hasChildNodes() | 如果当前节点拥有子节点,则将返回true。 |
insertBefore() | 给文档树插入一个节点,位置在当前节点的指定子节点之前。如果该节点已经存在,则删除之再插入到它的位置。 |
removeChild() | 从文档树中删除并返回指定的子节点。 |
replaceChild() | 从文档树中删除并返回指定的子节点,用另一个节点替换它。 |
接下来,让我们使用上述的DOM应用编程接口,来试着操作HTML文档。
posted @
2006-06-22 12:28 xzc 阅读(970) |
评论 (0) |
编辑 收藏
http://www.blogjava.net/eamoi/archive/2005/10/31/17489.aspx
posted @
2006-06-22 12:23 xzc 阅读(257) |
评论 (0) |
编辑 收藏
判定浏览器类型:if(document.uniqueID)如果为TRUE是IE,否则非IE。
1向表中追加行
2通过JAVASCRIPT设置元素的样式
3设置元素的CLASS属性
4创建输入元素
5向输入元素增加事件处理程序
6创建单选按钮
- 1.
- <table id="MyTable>
- <tbody id="MyTableBody"></tbody>
- </table>
- var cell = documentcreateElement("td").appendChild(document.createTextNode("foo"));
- var row = document.createElement("tr").appendChild(cell);
- document.getElementById("MyTableBoyd").appendChild(row);
- 2.
- var spanElement = document.getElementById("myspan");
- //spanElement.setAttribute("style","font-weight:bold;color:red");
- spanElement.style.cssText="font-weight:bold;color:red";
- 3.
- element.setAttribute("class","stylename");//非IE
- element.setAttribute("className","stylename");//IE
- 4.
- var button = document.createElement("input");
- button.setAttribute("type","button");
- document.getElementById("form").appendChild(button);
- 5.
- var element = document.getElementById("ee");
- element.onclick=function(){todo();};
- 6.
- var ration = document.createElement("<input type='radio' name='radioa' value='checked'>);//ie
- vat radion = document.createElement("input");
- radion .setAttribute("type","radio");
- radion.setAttribute("name","radionsss");
- radion.setAttribute("value","checked");
posted @
2006-06-21 21:55 xzc 阅读(285) |
评论 (0) |
编辑 收藏
长期以来,程序员被看作是沉默寡言的典型。他们能够长时间独自坐下来,不跟别人讨论,面对纸张及电脑屏幕来工作的人。现在,这种现象早已经不尽然了,新的尤其是敏捷方法论更强调的是人们之间的有效沟通,而最有效的沟通便是面对面的交流,这也是结对编程取得巨大成功之所在。正如水晶方法论创始人Alistair Cockburn对软件开发活动的总结:“软件开发是一场资源有限的创建与交流的协作性游戏。游戏的主要目标是交付有用的可工作的软件,次要目标,是为下一场游戏做准备,既知识的累积。下一场游戏可以是改变或者替代当前的系统,或是创建另一个相关的系统。”
一个软件开发团队的成功依赖于合作、交流及协调,而这些因素却都以人为核心,恰恰是人这个大的因素左右了项目的成败,而不是所选择的任何过程与技术,而这个因素却常常被人们所忽视。当技术与人们的认识和文化价值观相抵触时,技术就不会再产生效力。一个拥有充足人员且具有良好机能的团队往往能更好地完成项目,而不在乎让他们使用什么样的过程及技术。
然而,人的能力却是不可预测的,他们善于寻找、学习并有主动性,特别是善于进行非正式面对面交流,但同时,人们也具有会犯错误、墨守成规、只想创新、积习难改与变化无常等缺点。正因为人是变化无常的,我们不能指望人会成为可预料的或每个人都会变成一个样子。正如你不能希望给一个人双倍的酬劳,制定双倍的惩罚制度,并付出双倍工作时间,就希望能够得到双倍的成果输出一样。这是因为,人不是机器,而是复杂的情感生物,输出的成果最终取决于当时的思考质量、思考速度、主动性、身体状况、情绪等诸多因素。但是,人的内在潜力却是非常巨大的,只要用纪律和宽容来应付人们的共同弱点,便可以去其短,扬其长,来激发人们的内在潜力。当人们有了工作自豪感和公民感,再加上善于寻找和主动性后,我们会发现人们每天都会积极地完成工作,这将使项目长期处于最佳状态。在这方面,XP(极限编程)采用丰富的、短的、非正式交流途径,同时强调技能、纪律、个人理解水平,将中间件需求降到最低的方法,来获得尽可能高的质量和生产力。
变化总是在发生
他们总是不断地拿走你的奶酪。
预见变化
随时做好奶酪被拿走的准备。
追踪变化
经常闻一闻你的奶酪,以便知道它产什么时候开始变质。
尽快适应变化
越早放弃旧的奶酪,你就会越早享用新的奶酪。
改变
随着奶酪的变化而变化
享受变化
尝试冒险,去享受新奶酪的美味!
做好迅速变化的准备,不断地去享受变化
记住:他们仍会不断的拿走你的奶酪,如果你不改变,你就会被淘汰。
-- 引自<谁动了我的奶酪>
面对市场经营的特殊挑战,只有那些具有高度灵活机制的企业才能立于不败之地。不能适应变化,变化就会把你变得面目全非。再完美的计划也时常遭遇不测。软件中的所有东西都在变化。需求在变、设计在变、业务在变、技术在变、团队在变、团队成员在变。问题不在于变化,因为变化总在发生,问题在于在发生变化时没有能力应付。只有变化是不变的,时刻准备着这样调整一点,那样调整一点。通过许多小的调整,而不是几次大的调整来控制软件的开发,也就是说我们需要利用及时反馈来知道我们何时出现了错误,我们需要很多机会来纠正这些错误,而且,我们必须能够以比较合理的成本完成这样的纠正,即使你不得不朝完全不同的方向前进,这就是作为一名程序员的生活。敏捷就是快速、轻松和灵活,迅速行动的能力,以最少的开销完成工作的能力,适应不断变化条件的能力。
这就像XP方法论创始人Kent Beck对XP所做的比喻:“XP团队应该是智慧的游牧人,随时准备迅速收起帐篷,跟随牧群到处流浪。这里的牧群可能是与预期不同方向的设计、与预期不同方向的客户、离开团队的成员、突然升温的技术或者是不断变换的商业环境。”敏捷软件开发的根本是相信在我们混乱的业务环境中有不可预测性,相信人们或团队在面对这种不可预测性时,有能成功交付软件能力的可预测性,而这些,这是由于开发人员之间的有效沟通、与客户和管理者之间的有效沟通,才使得这种被称为富于创造与交流的协作性软件开发游戏取得成功。
再富裕的国家,也会因为浪费人才而变得贫穷。与之类似,企业生存的最大课题就是培养人才,有了好员工,不愁没有好顾客。企业的发达,乃人才的发达;人才的繁荣,既事业的繁荣。把人放在第一位,其他事情就会少发愁。
-- 引自<管理智典>
<资本论>指出:一切剩余价值皆是由人创造的,而不是其它任何机器。在软件开发中的任何分析和设计工具不管有多先进,都不可能自动产生设计及代码,而真正产生设计及代码的,恰恰是操作它们的人,过分信赖过程与工具以及低估人的智力和经验都是一切灾难的源泉。
与此同时,<设计模式>一书也指出:在软件开发和维护中,从长远来看,真正引起软件低效的原因,是人,人的低效才是最主要的。这看起来有点自相矛盾,其实为一体,既:成也在人,败也在人!
软件开发和维护中的低效,初看起来,使人联想到的首先可能会是:开发及维护人员技术水平不够了、软件文档支持不足了、软件人员偷懒了、开发或维护团队内部人员关系不好了等等。但深究起来,一般却和一个企业的内部组织文化有很大的关系。
目前,国内很多国企、私企普遍存在的内部现象是:一马在前,万马齐拍;前面的马向后看到的是后面马的笑脸,后面马向前看到的是前面马的屁股。故才会有后面群马齐拍,前面马飘飘不知所以然的壮丽场景。在这种企业文化中,人人只会以乾隆年间的和?和大人为偶像,以“厚而无形,黑而无色”的厚黑精神为人生最高境界。试想在这种企业组织文化中,真正老实实干的人只能忍气吞声、本着不求有功、但求无过之心,整天提心掉胆,人人皆自卫。而奸滑的人却会善于滥竽充数、邀功请赏、见风驶舵,只要嘴巴甜、马屁拍的好、拍的妙,定会升官发财,内部则猜疑、谴责、以及微妙和间接的勾心斗角与明挣暗斗随处可见。这种企业最终是不会留下真正的人才的,留下的只会是一些马屁精。如果一个企业文化如此,开发及维护团队会如何,内部员工又会怎么做,可想而知!如果你所处的环境不是这样,恭喜你。
最好的环境应该是互相信任,彼此互相尊重,彼此之间都相信对方会把自己的最高利益和整个团体的利益放在心中,彼此都愿意切磋技巧、经验及看法。而要成为一个有效的团队成员,首先需要认识到自己的无知,每个人都要向别人学习,应该相信直觉,并且开放和诚实的交流环境常常是保证有效团队合作的最好策略。
作为一个组织,核心就在于对人的信赖,在于一个适应性强的文化氛围,这能够将人捆在一起,获得有效的协作关系。一个企业做的是否成功,关键是看它有多强,而不是有多大。把人放在第一位,管理层次少,内部信息沟通及时、各职能部门协作意识强的企业才更容易成功。 在激励一个人按某种特定方式工作时,报酬比惩罚更有效,惩罚要尽量避免。你若能在他人心中激起一种急切的需求,并能引导这种需求,你便能无往不胜。渴望得到别人的认可和赞赏,是人类隐藏最深的本性。
-- 引自<管理智典>
<孙子兵法-作战篇>中指出:“杀敌者,怒也;取敌之利者,货也。车战,得车十乘以上,赏其先得者。”意思是说,要使军队勇敢杀敌,就要激发士兵对敌人的仇恨;要使军队夺取敌人的物资,就要以财货奖赏士兵。所以在车战中,凡缴获战车十辆以上的,要奖最先夺得战车的人。
同理,<素书六章>中也指出:小功不赏,则大功不立;小怨不赦,则大怨必生。这和前面是一样的道理,然而,国内很多软件企业领导者,满脑子想的仍是:中国人,多的是,有什么用,走一个,马上还能来一群,怕什么!殊不知,你就再是铁打的营盘,也架不住流水的兵,不注重人,必会留不住人。
冰冻三尺,非一日之寒,做软件的,少则数月,多则几年。三天两头换人,每天看到的都是新面孔,那还象是做软件的,就象是在选秀。这样的软件能成功么?既使侥幸成功,也定不会长久,因为他们不可能织起一个强而稳定的团队,组织起来的只能是临时应战的雇佣兵而已。有上面这种想法的领导大多通常是以指令性过程方法和产品为中心,把做作软件的人看做是“即插即用”的机器,这些高层管理者往往抱着一种“菜谱哲学”的思想,认为如果组织机构有了明确定义的软件过程方法,详细地规定了每个开发活动的步骤,那么所有问题都将被解决。如果“正确”的过程已经开发好,他们就可以雇用任何人(当然,最好不用人全部由机器自动生成最好),只要遵循制定好的过程,完美的软件就将准时且不超预算地大量产出,这种信条是建立在把软件开发当成是一门科学的基础之上的,然而,残酷的现实却向他们证明,软件开发更多的是一门艺术而非科学,是一门需要技能、手艺精巧的人互相协作的艺术。如果公司领导成天跟员工斤斤计较,抓住员工小辫子不放,动不动就大声呵斥、摆脸色看、给小鞋穿,还要经常免费加班、扣工资、罚资金。试想,在这种环境下,员工会怎么做,大部分会直接走人,留下的人却学会了磨洋工。工作时看着忙忙碌碌,实则作秀也。老板可能还会纳闷,怎么员工这么买力,产品质量还日渐下降。殊不知,这就和菜场买菜一样,你越和卖菜的讨价还价,卖菜的给你菜时越会和你斤斤计较(既缺斤少两)是一个道理,只有这样两方心理才能够平衡。虽然,聪明一些的高层领导者总是宣称员工是组织机构中最重要的方面,但骨子里仍把员工看作随意可替换的资产,这也正是人类的一大缺点:嘴上说的和实际做的往往是两回事。
所谓“道”,就是让部属与领导者的价值观相一致,这样部属就会与领导者同生共死,不会畏惧什么困难和危险,表现出崇高的献身精神。如何让部属与领导者的价值观相一致,其实很简单,将员工利益看作第一位,以人为本,重视他们、信任他们、支持他们。其实,员工们对公司的要求其实很低,一般如下:
第一、 按时发工资(基本保证)。
第二、 得到办公室配送的饮料或食品。
第三、 得到领导赏识。
第四、 获得特别授权去完成某艰巨任务。
第五、 多发奖金(不吃大锅饭)。
第六、 职位上的提升。
第七、 加薪。
以上几条,对于每一个有远见的公司领导都是不难做到的。那怕能做一半,员工们也会心存感激之情了。
帮助他人,可说是一种最直接有效、可以激发自身价值与责任感的方法。在全神贯注帮助他人解决问题的过程中,在悉心呵护照顾他人的过程里,不但我们的无限潜力会因此而充分发挥出来。而且,相对而来的成就感,也会让人觉得自己任重而道远,并能更积极地来面对人生了。
-- 引自<好习惯、好人生>
近两年,书面上流行的狼系列丛书<狼文化>、<狼图腾>等。也同样给中国软件业发展以极大的启示,强调拥用像狼群般的高度紧密协作的团队意识、敏锐的嗅觉(既可以察觉到细小或即将来到的变化)、始终保持野性(既持续的积极进取的态度和精神)等。中国人喜欢窝里斗这是出了名的,就是软件人员内部也经常在彼此攻击、无休无止。要知道,在一个有效团队中是没有“我”这个字的,只有“我们”。这里借用曹植曹帅哥一句话:“本是同根生,相煎何太急!” 来真心希望中国软件业能真正团结一致,齐心合力,建立自己的狼群文化,早日走出低谷,向全世界宣布:我们是狼,不是羊!
创建一个有效的团队是一项艰苦的任务,它对项目的成功是必不可少的。首先是通过招募好的开发人员,从好的材料开始,他们可能不具备所有需要的技能,但至少应该愿意去学习。其次是在团队内培养正确的态度,既他们只有团结一心才能走向成功,每个人都应该积极参与系统开发。建设和培养一个有效团队需要时间,但这样做是组织机构能做的最好的投资之一。
若是你在一年中不曾有过失败的记录,你就未曾勇于尝试各种应该把握的机会。害怕失败,就等于拒绝了成功。那些盼望并且追求成功的人,要比那些成天担心而且接受失败的人要快乐得多,其成就也会高的多。
-- 引自<管理智典>
假如软件的第一版就做得很好,那么人们就会再次使用该软件。由于世界上所有的事情都在迅速变化着,因此,软件也需要不断更新、扩充、改变及修改。而想要得到稳定不变软件的唯一方法就是让产品坏到没有人再想用它,稳定意味着无知觉的产品。要明白,稳定的要求是敌人而不是朋友。改变要求是生活中严酷的现实,明智的软件人员应事先预想并处理它而不是抱怨它。而使软件创建更加快速与健壮的,是软件复用。有关软件复用的问题从表面上看是技术上的,实则真正的问题还是来自人。
开发人员需要摆脱不相信也不想理解别人成果或只想重头做来增加个人经验的看法,如果不解决人的问题,那么技术问题也就变得无关紧要了。开明的领导和合适的奖赏制度有时能克服这些问题,假如企业文化把重复使用搁置起来,不与重视,那么在实现重复使用方面的投资、开发以及努力都将没有多大的成果。克服人的问题最主要的还是有效沟通的问题,虽然我们已经学会把感情生活与工作分开,但是如果队员间不能持续进行有效的沟通、没人承认自己的错误、怨气得不到平息、欢乐没有人共享,那么整个团队就无法高效率地工作。如果我们每个人都能够放下生活中所带的虚假面具,说出自己真实的感觉,也认真倾听别人的想法,那么任何工作的进展都会顺利的多。
一个人并不是生来就要被打败的,你尽可以消灭他,却不能打败他。
-- 引自<老人与海>
生命原本脆弱,我们只能坚强地活着,并努力寻找欢乐,就这样。这里有一点我想告诉大家,大家在积极进取、努力拼搏的同时,一定要多加注意自己的身体。要知道,留着青山在,不怕没柴烧,身体乃革命的本钱也。千万不要有这样思想:三十岁前我用命换钱,三十岁后我用钱换命。要好好想想,没有了好的身体,我们还能做什么!所以,请记住:努力工作,从珍惜生命做起!
生活并不是笔直通畅的走廊,让我们轻松自在地在其中旅行。生活是一座迷宫,我们必须从中找到自己的出路。我们时常会陷入迷茫,在死胡同中搜寻。但如果我们始终深信不疑,有一扇门就会向我们打开,它或许不是我们曾经想到的那扇门,但我们最终将会发现,它是一扇有益之门。
-- 引自<谁动了我的奶酪>
最后,让我引用<WINDOWS游戏编程大师技巧>书中一句话来结束本文:“当你看到眼前有列过山车,请坐上去,不要犹豫。张开你的臂膀,尽情体验个中滋味,一直坚持到游戏的最后,这就象生活一样。你的生活将不会留下太多回忆,除非你曾经反抗过、呐喊过,并用坚持不懈的努力向着完美伸出双臂。世上没有不可能实现的事情,只要你相信能做到,你就能做到!”
posted @
2006-04-01 08:48 xzc 阅读(331) |
评论 (0) |
编辑 收藏