﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-Welcome To Oliver_Yin's  Blog!</title><link>http://www.cnitblog.com/oliver_yin/</link><description>打字--&gt; 死打字--&gt;抄写程序--&gt;研究程序--&gt;分析需求 
--&gt;分析架构--&gt;项目管理--&gt;企业信息化--&gt;.........</description><language>zh-cn</language><lastBuildDate>Tue, 05 May 2026 10:49:53 GMT</lastBuildDate><pubDate>Tue, 05 May 2026 10:49:53 GMT</pubDate><ttl>60</ttl><item><title>Java规则引擎：开源Drools项目(转载)</title><link>http://www.cnitblog.com/oliver_yin/archive/2006/11/23/19533.html</link><dc:creator>生活像一团麻</dc:creator><author>生活像一团麻</author><pubDate>Thu, 23 Nov 2006 02:58:00 GMT</pubDate><guid>http://www.cnitblog.com/oliver_yin/archive/2006/11/23/19533.html</guid><wfw:comment>http://www.cnitblog.com/oliver_yin/comments/19533.html</wfw:comment><comments>http://www.cnitblog.com/oliver_yin/archive/2006/11/23/19533.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/oliver_yin/comments/commentRss/19533.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/oliver_yin/services/trackbacks/19533.html</trackback:ping><description><![CDATA[
		<span id="BlogViewId" be:lasthandle="cns!B3ECA62141FF5FE0!189" be:firsthandle="cns!B3ECA62141FF5FE0!199" be:sortkey="" be:sortmode="Normal">
				<h4 class="TextColor1" id="subjcns!B3ECA62141FF5FE0!189" style="MARGIN-BOTTOM: 0px">Java规则引擎：开源Drools项目</h4>
				<div id="msgcns!B3ECA62141FF5FE0!189">
						<div>
								<h2>（转载）<strong>  </strong>原文参见<a href="http://www.theserverside.com/articles/content/Drools/article.html"><u><font color="#0000ff">这里</font></u></a>。 </h2>
								<div>
										<strong>
										</strong> </div>
								<div>
										<strong>内容提要</strong>
										<br />       在本文的第一部分，我将讨论规则引擎如何帮助你从软件的应用逻辑中分离出商业规则逻辑，以实现商业应用的灵活性。另外，我还将介绍JSR－94规则引擎 API，及其开源实现Drools项目，它是这一新技术的先驱。在第二部分，我们将介绍一个规则引擎例子，并深入地研究Drools引擎及其JSR－94 扩展的复杂性。</div>
								<div>
										<br />
										<strong>为什么使用规则引擎</strong>
										<br />       商业世界充满了关于变化的陈词滥调，如任何事物都会改变，唯一不变的是变化等等。而在技术领域里，情况正好相反。我们仍然在试图解决30年前软件业中同样的一堆问题－－也许比30年前还要多的问题。在过去的十年，IT从业人员淹没在软件方法学的大量文献中，如快速软件开发，极限编程，敏捷软件开发等，它们无一例外地强调灵活和变化的重要性。<br />       但商业通常比开发团队所依赖的软件过程和技术改变得更加迅速。当商业策划人员试图重整IT部门，以支持新的业务转型时，仍然觉得很费劲。</div>
								<div>
										<br />
										<strong>Lost in Translation</strong>
										<br />       虽然IT团队反应迅速，但他们通常带来"电话效应"――IT给商业计划的执行带来的阻力和它带来的利益一样多。不幸的是，在开发团队完全理解商业决策规则并实现之前，规则已经改变了。在软件进入市场前，它已经过时了，需要进行重构以满足新的业务需求。如果你是一个开发人员，你会知道我在说什么。再也没有比在需求变动的情况下构造软件让开发人员更沮丧的事情了。作为软件开发人员，你必须比业务人员更了解业务，有时还要了解更多。<br />       试想一下你是一位商业决策者。假如公司的成功依赖于你对于市场趋势敏锐的洞察力，它常常帮助你领先于竞争者利用变化的市场环境获利。每天你都会得到更多更好的市场信息，但并不要紧。完成新产品开发可能需要6－9个月，在此期间，对于市场大胆和敏锐的洞察和信息优势可能已经浪费了。而且，当产品发布时，有这样几种可能：产品没有什么吸引人的特性，预算超支，过了产品的最佳发布期限，或三者兼而有之。<br />       情况可能还会更糟，在完成产品开发时，市场环境和规划产品开发时相比，已经发生了根本变化。现在你必须要遵守新的规则，你已经丧失了你的边际优势，而且设计软件的五人中的三人已经离开了公司。你必须给接手的新人重新讲解复杂的业务。如果事情不顺利，你可能发现自己要对付一个缺少文档，并且你完全不了解的遗留应用。<br />       你的战略在哪出现了问题？你在哪里应该可以做到更好？最近的轻量级软件过程，如极限编程，敏捷软件开发等都在强调自动单元测试和软件功能优先级的重要性。除此之外，还有其他的原则，你的开发团队可能也很熟悉，这些原则可以帮助他们对需求的变动作出迅速反应并缩短项目的开发周期。这些原则的大多数，如系统分解，多年前就已经出现，并得到了Java平台的支持（如JMX等），还有如面向对象和角色建模，已经内建在Java语言中。<br />       但Java仍然是一门相当年轻的语言，而且Java平台远远还没有完备。当前在Java社区，一个引人注目的新技术是，分离商业决策者的商业决策逻辑和应用开发者的技术决策，并把这些商业决策放在中心数据库，让它们能在运行时（即商务时间）可以动态地管理和修改。这是一个你值得考虑的策略。<br />       为什么你的开发团队不得不象商业经理人一样，在代码中包含复杂微妙的商业决策逻辑呢？你怎样才能向他们解释决策推理的微妙之处呢？你这样做是否谨慎呢？可能不是。象bottom line一样，某些东西在解释的过程中丢失了。为什么要冒这样的风险，让应用代码或测试代码错误地表达你的商业决策逻辑呢？如果这样做的话，你怎样检查它们的正确性呢――难道你自己想学习如何编程和编写测试代码，或者你的客户会为你测试软件？你一方面要应付市场，一方面要应付软件代码，这实在太困难了。<br />       如果能将这些商业决策规则集中地放在一个地方，以一种你可以理解的格式定义，让你可以直接管理，而不是散落在代码的各个角落，那该有多好。如果你能把商业决策规则独立于你的软件代码，让开发团队作出技术决策，你将会获得更多好处。你的项目开发周期会更短，软件对于变动的需求更灵活。</div>
								<div>
										<br />
										<strong>规则引擎标准Java API</strong>
										<br />       2003年11月，Java社区通过了Java Rule Engine API规范（JSR－94）的最后草案。这个新的API让开发人员在运行时访问和执行规则有了统一的标准方式。随着新规范产品实现的成熟和推向市场，开发团队将可以从应用代码中抽取出商业决策逻辑。<br />       这就需要新一代的管理工具，帮助商务经理人可以定义和细化软件系统的行为。不必通过开发过程来修改应用，并假定可以得到正确的结果，经理人将可以随时根据需要修改决策规则，并进行测试。<br />       但这将需要开发人员在设计系统时作出某些改变，并可以得到合适的开发工具。</div>
								<div>
										<br />
										<strong>分离商务和技术的关注点</strong>
										<br />       这是一个非常简单的例子，从经理人的角度，说明如何分离商务和技术的关注点。<br />       你管理着一个反向投资基金。你公司计算机系统的一部分用于分析股票价格，收益和每股净资产，并在需要时向你提出预警。这个计算机系统的工作是，识别出PE比率比市场平均值低的股票，并标记出来以便进一步的检查。<br />       你的IT部门拥有一大堆数据，并开发了一系列你可以在规则中引用的简单数据对象。现在，为简单起见，假设你是一名受过良好教育的，了解技术的管理人，你了解XML的基本知识，可以让你编写和修改简单的XML规则文件。<br />       你的第一个规则是，给道琼斯所有的股票估值，并剔除P/E比率大于10的股票（这有点过分简化，但这里只作为一个例子）。保留下来的股票用来生产一系列报表。对于这个简单的例子，你的规则文件看起来如下（我们将会过头来讨论这个文件的结构）：</div>
								<div>
										<br />&lt;stock:overvalued&gt;<br />    &lt;stock:index&gt; DJIA &lt;/stock:index&gt;<br />    &lt;stock:pe&gt; over 10.0 &lt;/stock:pe&gt;<br />&lt;/stock:overvalued&gt;</div>
								<div>
										<br />       一个月后，你接到一家巴西分析师公司的电话，雇佣你的公司生成一系列巴西股市的报表，但他们有更严格的标准。而目前在巴西，P/E比率市场平均值是个位数，因此你用来评估被市场低股票的阈值需要改变。除了较低的P/E比率，你的新客户还要求以Price-to-Book比率作为参考标准。<br />       你启动规则编辑器，并修改规则以匹配新的评估条件。现在，规则引擎剔除巴西股市中P/E比率大于6.5，以及Price to Book 比率小于等于1的股票。完成规则文件修改后，看起来如下：</div>
								<div>
										<br />&lt;stock:overvalued&gt;<br />    &lt;stock:index&gt; Brazil &lt;/stock:index&gt;<br />    &lt;stock:pe&gt; over 6.5 &lt;/stock:pe&gt;<br />    &lt;stock:pb&gt; over 1.0 &lt;/stock:pb&gt;<br />&lt;/stock:overvalued&gt;</div>
								<div>
										<br />       你无需为此向开发团队作任何解释。你无需等待他们开发或测试程序。如果你的规则引擎的语义足够强大，让你描述工作数据，你可以随时按需修改商业规则。<br />       如果限制因素是规则的定义语言和数据模型，你可以确信这两者将会标准化，并出现先进的编辑器和工具，以简化规则的定义，保存和维护。<br />       现在，我希望你已经清楚以下的原则：在这个例子中，哪只股票是否被选择是一个商务决策，而不是技术决策。决定将哪只股票交给你的分析师是经理人的逻辑 ――"logic of the bottom line"。经理人作出这些决策，并可以按需定制应用。这些规则因此变成了一种控制界面，一种新的商业系统用户界面。</div>
								<div>
										<br />
										<strong>使用Rule开发</strong>
										<br />       如果在这个应用场景中，你是一个开发人员，你的工作会稍微轻松一些。一旦你拥有了一种用于分析股票的规则语言，你可以取出数据对象并交给规则引擎执行。我们将会到规则语言的讨论，但现在我们继续刚才的例子。<br />       你的系统将一系列的stock bean输入规则引擎。当规则执行后，你可以选出符合条件的股票并可以对它们作进一步处理。也许是把它们输入报表生成系统。分析师使用这些报表帮助他们分析股市。同时，老板也可能让你使用新的技术分析工具，并用Dow理论预测股市的底部和顶部。<br />       规则引擎可以让你的系统变得更简单，因为你无需在代码中编写商务逻辑，如怎样选择股票，选择股票过程中奇怪的条件组合等。这些逻辑不再进入你的代码。你将可以专注于数据模型。<br />       现在可以这么认为，通过从应用代码中剥离出易变的商业逻辑，你的效率会更高。但凡是总有例外――简单应用可能并不能从规则系统中获益。但如果你开发一个大型系统，有很多易变的商业逻辑，你可以考虑在应用中集成规则引擎。<br />       除了从应用代码中剥离出商业决策逻辑外，规则引擎还有其他用处。有时候你需要应用成百上千的规则进行决策，并且有上千个对象和这些规则一起使用。很难想象有什么先进的人工智能引擎可以处理这种情况。遇到这种情况，你需要一个极快的决策算法或是大型机。大型机并不便宜，但你可以非常便宜的得到效率和可伸缩性最好的算法。</div>
								<div>
										<br />
										<strong>Bob McWhirter的Drools项目</strong>
										<br />       现在，我要介绍Drools项目，Charles Forgy Rete算法的一个增强的Java语言实现。Drools是一个Bob McWhirter开发的开源项目，放在The Codehaus上。在我写这篇文章时，Drools发表了2.0-beata-14版。在CVS中，已完整地实现了JSR94 Rule Engine API并提供了单元测试代码。<br />       Rete算法是Charles Forgy在1979年发明的，是目前用于生产系统的效率最高的算法（除了私有的Rete II）。Rete是唯一的，效率与执行规则数目无关的决策支持算法。For the uninitiated, that means it can scale to incorporate and execute hundreds of thousands of rules in a manner which is an order of magnitude more efficient then the next best algorithm。Rete应用于生产系统已经有很多年了，但在Java开源软件中并没有得到广泛应用（讨论Rete算法的文档参见<a href="http://herzberg.ca.sandia.gov/jess/docs/61/rete.html"><u><font color="#0000ff">http://herzberg.ca.sandia.gov/jess/docs/61/rete.html</font></u></a>。）。<br />       除了应用了Rete核心算法，开源软件License和100％的Java实现之外，Drools还提供了很多有用的特性。其中包括实现了JSR94 API和创新的规则语义系统，这个语义系统可用来编写描述规则的语言。目前，Drools提供了三种语义模块――Python模块，Java模块和 Groovy模块。本文余下部分集中讨论JSR94 API，我将在第二篇文章中讨论语义系统。<br />       作为使用javax.rules API的开发人员，你的目标是构造一个RuleExecutionSet对象，并在运行时通过它获得一个RuleSession对象。为了简化这个过程，我编写了一个规则引擎API的fa?ade，可以用来解释代表Drools的DRL文件的InputStream，并构造一个 RuleExecutionSet对象。<br />       在上面提到了Drools的三种语义模块，我接下来使用它们重新编写上面的例子XML规则文件。这个例子中我选择Java模块。使用Java模块重新编写的规则文件如下：</div>
								<div>
										<br />&lt;rule-set name="StockFlagger"<br />      xmlns="<a href="http://drools.org/rules"><u><font color="#0000ff">http://drools.org/rules</font></u></a>"<br />      xmlns:java="<a href="http://drools.org/semantics/java"><u><font color="#0000ff">http://drools.org/semantics/java</font></u></a>"&gt;</div>
								<div>  &lt;rule name="FlagAsUndervalued"&gt;<br />    &lt;parameter identifier="stock"&gt;<br />      &lt;java:class&gt;org.codehaus.drools.example.Stock&lt;/java:class&gt;<br />    &lt;/parameter&gt;<br />    &lt;java:condition&gt;stock.getIndexName().equals("DJIA");&lt;/java:condition&gt;<br />    &lt;java:condition&gt;stock.getPE() &gt; 10 &lt;/java:condition&gt;<br />    &lt;java:consequence&gt;<br />      removeObject(stock);   ( 译注：应该是retractObject(stock) )<br />    &lt;/java:consequence&gt;<br />  &lt;/rule&gt;<br />&lt;/rule-set&gt;</div>
								<div>
										<br />       现在的规则文件并没有上面的简洁明了。别担心，我们将在下一篇文章讨论语义模块。现在，请注意观察XML文件的结构。其中一个rule-set元素包含了一个或多个rule元素，rule元素又包含了parameter，condition和consequence元素。Condition和 consequence元素包含的内容和Java很象。注意，在这些元素中，有些事你可以做，有些事你不能做。目前，Drools使用 BeanShell2.0b1作为它的Java解释器。我在这里并不想详细的讨论DRL文件和Java语义模块的语法。我们的目标是解释如何使用 Drools的JSR94 API。<br />       在Drools项目CVS的drools-jsr94模块中，单元测试代码包含了一个ExampleRuleEngineFacade对象，它基于 Brian Topping的Dentaku项目。这个fa?ade对象通过javax.rules API，创建了供RuleExecutionSet和RuleSession使用的一系列对象。它并没有完全包括了Drools引擎API的所有特性和细微差别，但可以作为新手使用API的一个简单例子。<br />      下面的代码片断显示如何使用规则引擎的facade构造一个RuleExecutionSet对象，并通过它获得一个RuleSession对象。</div>
								<div> </div>
								<div>import java.io.InputStream;<br />import javax.rules.*;<br />import org.drools.jsr94.rules.ExampleRuleEngineFacade;</div>
								<div>public class Example {<br />    private ExampleRuleEngineFacade engine;<br />    private StatelessRuleSession statelessSession;</div>
								<div>    /* place the rule file in the same package as this class */<br />    private String bindUri = "myRuleFile.drl"</div>
								<div>    public Example() {<br />        /* get your engine facade */<br />        engine = new ExampleRuleEngineFacade();</div>
								<div>        /* get your input stream */<br />        InputStream inputStream =<br />                Example.class.getResourceAsStream(bindUri);</div>
								<div>        /* build a RuleExecutionSet to the engine */<br />        engine.addRuleExecutionSet(bindUri, inputStream);</div>
								<div>        /* don't forget to close your InputStream! */<br />        inputStream.close();</div>
								<div>        /* get your runtime session */<br />        this.statelessSession = engine.getStatelessRuleSession(bindUri);<br />    }<br />    ...<br />}</div>
								<div>
										<br />       在以上的例子代码中，你需要处理InputStream的IOException例外，这里为了简单起见省略了。你要做的只是构建InputStream 对象，并把它输入ExampleRuleEngineFacade，用来创建一个RuleExecutionSet对象。然后，你可以得到一个 StatelessRuleSession，并用它来执行所有的规则。使用StatelessRuleSession相对简单。我们可以给上面的类添加一个方法，用来对一个对象列表执行规则：</div>
								<div>
										<br />public List getUndervalued(List stocks) {<br />    return statelessSession.executeRules(stocks);<br />}</div>
								<div>
										<br />       该方法输入一个stock对象列表给规则引擎，然后使用规则评估输入的股票对象，并剔除那些不符合价值低估标准的股票。它是个简单的例子，但足以说明问题。<br />       在ExampleRuleEngineFacade类中，代码会稍微有些复杂。ExampleRuleEngineFacade类创建了一个 RuleServiceProvider对象，并用它创建RuleAdministrator，RuleExecutionSetProvider和 RuleRuntime对象。RuleExecutionSetProvider负责解释InputStream，并创建一个 RuleExecutionSet对象。RuleRuntime对象用来得到一个session，RuleAdministrator用来管理所有的对象。在往下是Drools核心API，它的核心是Rete算法实现。我在这里不打算详细讨论，但你可以看看 ExampleRuleEngineFacade的代码。<br />       现在你已经看到了在商业和科研方面使用规则引擎的一些例子，并对Drools项目有了基本的了解。在下一篇文章里，我将讨论DRL文件的结构和Java语义模块，让你可以编写自己的DRL文件。还将向你解释如何编写你自己的语义模块，讨论salience和working memory的概念。</div>
								<div>
										<br />
										<strong>资源</strong>
										<br />· <a href="http://www.drools.org/"><u><font color="#0000ff">Drools Project</font></u></a><br />· <a href="http://www.jcp.org/en/jsr/detail?id=94"><u><font color="#0000ff">JSR-94 Specification</font></u></a></div>
						</div>
				</div>
		</span>
<img src ="http://www.cnitblog.com/oliver_yin/aggbug/19533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/oliver_yin/" target="_blank">生活像一团麻</a> 2006-11-23 10:58 <a href="http://www.cnitblog.com/oliver_yin/archive/2006/11/23/19533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 存储过程返回结果集</title><link>http://www.cnitblog.com/oliver_yin/archive/2006/01/03/5989.html</link><dc:creator>生活像一团麻</dc:creator><author>生活像一团麻</author><pubDate>Tue, 03 Jan 2006 15:50:00 GMT</pubDate><guid>http://www.cnitblog.com/oliver_yin/archive/2006/01/03/5989.html</guid><wfw:comment>http://www.cnitblog.com/oliver_yin/comments/5989.html</wfw:comment><comments>http://www.cnitblog.com/oliver_yin/archive/2006/01/03/5989.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/oliver_yin/comments/commentRss/5989.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/oliver_yin/services/trackbacks/5989.html</trackback:ping><description><![CDATA[<STRONG><FONT face=Arial size=2>Oracle 存储过程返回结果集<BR><BR></FONT></STRONG>过程返回记录集： <BR>CREATE OR REPLACE PACKAGE pkg_test <BR>AS <BR>&nbsp; &nbsp; TYPE myrctype IS REF CURSOR; <BR>&nbsp;&nbsp;<BR>&nbsp; &nbsp; PROCEDURE get (p_id NUMBER, p_rc OUT myrctype); <BR>END pkg_test; <BR>/ <BR>&nbsp;&nbsp;<BR>CREATE OR REPLACE PACKAGE BODY pkg_test <BR>AS <BR>&nbsp; &nbsp; PROCEDURE get (p_id NUMBER, p_rc OUT myrctype) <BR>&nbsp; &nbsp; IS <BR>&nbsp; &nbsp;&nbsp; &nbsp; sqlstr&nbsp; &nbsp;VARCHAR2 (500); <BR>&nbsp; &nbsp; BEGIN <BR>&nbsp; &nbsp;&nbsp; &nbsp; IF p_id = 0 THEN <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; OPEN p_rc FOR <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; SELECT ID, NAME, sex, address, postcode, birthday <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;FROM student; <BR>&nbsp; &nbsp;&nbsp; &nbsp; ELSE <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; sqlstr := <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 'select id,name,sex,address,postcode,birthday <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;from student where id=:w_id'; <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; OPEN p_rc FOR sqlstr USING p_id; <BR>&nbsp; &nbsp;&nbsp; &nbsp; END IF; <BR>&nbsp; &nbsp; END get; <BR>END pkg_test; <BR>/ <BR>&nbsp;&nbsp;<BR>函数返回记录集: <BR>建立带ref cursor定义的包和包体及函数： <BR>CREATE OR REPLACE <BR>package pkg_test as <BR>/* 定义ref cursor类型 <BR>&nbsp; &nbsp; 不加return类型，为弱类型，允许动态sql查询， <BR>&nbsp; &nbsp; 否则为强类型，无法使用动态sql查询; <BR>*/ <BR>&nbsp; &nbsp;type myrctype is ref cursor;&nbsp;&nbsp;<BR>&nbsp; &nbsp;<BR>--函数申明 <BR>&nbsp; &nbsp;function get(intID number) return myrctype; <BR>end pkg_test; <BR>/ <BR>&nbsp; &nbsp;<BR>CREATE OR REPLACE <BR>package body pkg_test as <BR>--函数体 <BR>&nbsp; &nbsp; function get(intID number) return myrctype is <BR>&nbsp; &nbsp;&nbsp; &nbsp;rc myrctype;&nbsp;&nbsp;--定义ref cursor变量 <BR>&nbsp; &nbsp;&nbsp; &nbsp;sqlstr varchar2(500); <BR>&nbsp; &nbsp; begin <BR>&nbsp; &nbsp;&nbsp; &nbsp;if intID=0 then <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;--静态测试，直接用select语句直接返回结果 <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;open rc for select id,name,sex,address,postcode,birthday from student; <BR>&nbsp; &nbsp;&nbsp; &nbsp;else <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;--动态sql赋值，用:w_id来申明该变量从外部获得 <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;sqlstr := 'select id,name,sex,address,postcode,birthday from student where id=:w_id'; <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;--动态测试，用sqlstr字符串返回结果，用using关键词传递参数 <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;open rc for sqlstr using intid; <BR>&nbsp; &nbsp;&nbsp; &nbsp;end if; <BR>&nbsp; &nbsp;<BR>&nbsp; &nbsp;&nbsp; &nbsp;return rc; <BR>&nbsp; &nbsp; end get; <BR>&nbsp; &nbsp;<BR>end pkg_test; <BR>/ <img src ="http://www.cnitblog.com/oliver_yin/aggbug/5989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/oliver_yin/" target="_blank">生活像一团麻</a> 2006-01-03 23:50 <a href="http://www.cnitblog.com/oliver_yin/archive/2006/01/03/5989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>半個屁股</title><link>http://www.cnitblog.com/oliver_yin/archive/2005/10/12/3261.html</link><dc:creator>生活像一团麻</dc:creator><author>生活像一团麻</author><pubDate>Wed, 12 Oct 2005 06:57:00 GMT</pubDate><guid>http://www.cnitblog.com/oliver_yin/archive/2005/10/12/3261.html</guid><wfw:comment>http://www.cnitblog.com/oliver_yin/comments/3261.html</wfw:comment><comments>http://www.cnitblog.com/oliver_yin/archive/2005/10/12/3261.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/oliver_yin/comments/commentRss/3261.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/oliver_yin/services/trackbacks/3261.html</trackback:ping><description><![CDATA[<STRONG><FONT size=6>&nbsp;半個屁股</FONT><FONT face="Times New Roman"><SPAN> / </SPAN></FONT><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">王文華</SPAN></STRONG>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><STRONG><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></STRONG></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-layout-grid-align: none; mso-char-indent-count: 1.5"><SPAN><STRONG>剛到史丹佛念書時，發現教室的設計很特別：劇場式階梯、馬蹄型桌子，坐下來，看到桌上有一條長長的細縫。<o:p></o:p></STRONG></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p><FONT face="Times New Roman">&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 23.8pt; mso-layout-grid-align: none; mso-char-indent-count: 1.98"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">白蟻蛀的嗎？怎麼可能這麼整齊！「這是插名牌的！」同學告訴我。註冊時，教務處發給你一張橫式長方形厚紙卡，上面寫著「王文華」三個字。上課時你要把名牌插進細縫，好讓老師看清楚你的名字，方便點你發言。階梯式教室、馬蹄型桌子，都是為了讓老師同學看到彼此，討論時容易產生火花。</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p><FONT face="Times New Roman">&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22pt; mso-layout-grid-align: none; mso-char-indent-count: 1.0"><SPAN style="Z-INDEX: -3; LEFT: 0px; MARGIN: 0px auto auto 0px; WIDTH: 758px; POSITION: absolute; HEIGHT: 799px; mso-ignore: vglayout"><FONT face="Times New Roman"></FONT></SPAN><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">學期中我把學校發給我的名牌搞掉了，自己做了一個，插進細縫中。下課後老師跟我說：「</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">我看不清楚你的名字。」「為什麼？」「因為你做的名牌，名字和紙張底部之間的留白不夠，插進有深度的縫隙，一半名字都塞進縫隙裏。」我拿出名牌，果然是這樣，「你應該叫教務處幫你重做，他們做的名牌都是精密量過的，插進細縫中剛剛好。」老師臨走前一語雙關地說：「把你那張</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><FONT face="Times New Roman">half-assed</FONT></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">的名牌丟了吧，那張名牌只讓我們看到一半的你。」</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p><FONT face="Times New Roman">&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-layout-grid-align: none; mso-char-indent-count: 2.0"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">當時我聽不懂「</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><FONT face="Times New Roman">half-assed</FONT></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">」（直譯：半個屁股）是什麼意思。去查字典，上面寫著「凡事只</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">做一半，不注細節。」</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p><FONT face="Times New Roman">&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-layout-grid-align: none; mso-char-indent-count: 2.0"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">沒錯，在那之前，我一直是個大而化之、半個屁股的人。好的學校，連學生名牌上名字和頁</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">緣之間的距離都斤斤計較，而過去的我，只會嘲笑這樣的人龜毛。</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p><FONT face="Times New Roman">&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-layout-grid-align: none; mso-char-indent-count: 2.0"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">史丹佛第一年暑假，我和一位帶著兩歲小孩的朋友去拜訪在蘋果計算機工作的學長。在員工餐廳吃午餐，朋友抱著小孩，吃不到兩口。學長走到角落，拿來一張兒童椅。「你們的員工餐廳還有兒童椅？」「當然啊！雖然很少員工會把小孩帶到公司，但我們總要預防那種『萬一』！」</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p><FONT face="Times New Roman">&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-layout-grid-align: none; mso-char-indent-count: 2.0"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">畢業開始工作後，常常出差。有一次我坐新航的長程飛機。第一餐</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><FONT face="Times New Roman">\</FONT></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">結束後，機艙的燈變暗。空服員問我要不要睡覺，我說要。於是她把一張貼紙貼在我的椅子上，上面寫著客人要休息，下次餐</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><FONT face="Times New Roman">\</FONT></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">飲不要打擾。大部分的航空公司會拍醒你，問你要不要用餐</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><FONT face="Times New Roman">\</FONT></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">，你說不要，但被吵醒後再也睡不著。新航用一張貼紙，兩全其美地解決問題。</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p><FONT face="Times New Roman">&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-layout-grid-align: none; mso-char-indent-count: 2.0"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">工作這些年來，我發現成功</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><FONT face="Times New Roman">\</FONT></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">的人和公司，屁股都很完整。不論大事小事，他們總能做到滴水</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">不漏。他們不靠革命性的創意，因為革命性的創意可遇不可求。他們有耐心和能力把例行公事做到完美，和二流之間的差別就在細節。</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p><FONT face="Times New Roman">&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-layout-grid-align: none; mso-char-indent-count: 2.0"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">我永遠記得史丹佛的細縫、蘋果的兒童椅，和新航的貼紙。它們代表的，是一種細緻和體貼</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">，一種成本很小、容易做到，卻是大家最不屑一</SPAN></B><?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:PersonName><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">顧</SPAN></B></st1:PersonName><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-TW">的美德。所以，就叫我龜毛吧！因為我終於醒悟到工作和愛情路上的顛跛，都是因為我行走時少了半邊屁股。</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="mso-font-kerning: 0pt; mso-ansi-language: ZH-TW; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></B></P><img src ="http://www.cnitblog.com/oliver_yin/aggbug/3261.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/oliver_yin/" target="_blank">生活像一团麻</a> 2005-10-12 14:57 <a href="http://www.cnitblog.com/oliver_yin/archive/2005/10/12/3261.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>这个世界上最美的是什么?</title><link>http://www.cnitblog.com/oliver_yin/archive/2005/10/07/3104.html</link><dc:creator>生活像一团麻</dc:creator><author>生活像一团麻</author><pubDate>Fri, 07 Oct 2005 02:05:00 GMT</pubDate><guid>http://www.cnitblog.com/oliver_yin/archive/2005/10/07/3104.html</guid><wfw:comment>http://www.cnitblog.com/oliver_yin/comments/3104.html</wfw:comment><comments>http://www.cnitblog.com/oliver_yin/archive/2005/10/07/3104.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnitblog.com/oliver_yin/comments/commentRss/3104.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/oliver_yin/services/trackbacks/3104.html</trackback:ping><description><![CDATA[<P>鄙人工作近十年了, 综合这么长时间的工作与生活的经历, 一直反复思考如下问题。<BR>这个世界上最美的是什么?<BR><BR>工作4年答案:&nbsp;&nbsp; 女人<BR>工作6年答案:&nbsp;&nbsp; 女情人<BR>工作8年答案:&nbsp;&nbsp; 有钱的女情人<BR>工作10年答案:&nbsp;&nbsp; 数学（同时是最真实的东西）<BR><BR><BR></P><img src ="http://www.cnitblog.com/oliver_yin/aggbug/3104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/oliver_yin/" target="_blank">生活像一团麻</a> 2005-10-07 10:05 <a href="http://www.cnitblog.com/oliver_yin/archive/2005/10/07/3104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>把握现在</title><link>http://www.cnitblog.com/oliver_yin/archive/2005/09/12/2604.html</link><dc:creator>生活像一团麻</dc:creator><author>生活像一团麻</author><pubDate>Mon, 12 Sep 2005 03:06:00 GMT</pubDate><guid>http://www.cnitblog.com/oliver_yin/archive/2005/09/12/2604.html</guid><wfw:comment>http://www.cnitblog.com/oliver_yin/comments/2604.html</wfw:comment><comments>http://www.cnitblog.com/oliver_yin/archive/2005/09/12/2604.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/oliver_yin/comments/commentRss/2604.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/oliver_yin/services/trackbacks/2604.html</trackback:ping><description><![CDATA[昨天的现在是回忆，<BR>今天的现在是现在，<BR>明天的现在是期待。<BR>把握现在！！！！<img src ="http://www.cnitblog.com/oliver_yin/aggbug/2604.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/oliver_yin/" target="_blank">生活像一团麻</a> 2005-09-12 11:06 <a href="http://www.cnitblog.com/oliver_yin/archive/2005/09/12/2604.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>希望就在前面</title><link>http://www.cnitblog.com/oliver_yin/archive/2005/09/12/2603.html</link><dc:creator>生活像一团麻</dc:creator><author>生活像一团麻</author><pubDate>Mon, 12 Sep 2005 03:03:00 GMT</pubDate><guid>http://www.cnitblog.com/oliver_yin/archive/2005/09/12/2603.html</guid><wfw:comment>http://www.cnitblog.com/oliver_yin/comments/2603.html</wfw:comment><comments>http://www.cnitblog.com/oliver_yin/archive/2005/09/12/2603.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/oliver_yin/comments/commentRss/2603.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/oliver_yin/services/trackbacks/2603.html</trackback:ping><description><![CDATA[新团队， 按部就班步入正轨中。。。<BR>看到希望了。。。<img src ="http://www.cnitblog.com/oliver_yin/aggbug/2603.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/oliver_yin/" target="_blank">生活像一团麻</a> 2005-09-12 11:03 <a href="http://www.cnitblog.com/oliver_yin/archive/2005/09/12/2603.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Open source， I am coming</title><link>http://www.cnitblog.com/oliver_yin/archive/2005/08/31/2425.html</link><dc:creator>生活像一团麻</dc:creator><author>生活像一团麻</author><pubDate>Wed, 31 Aug 2005 06:48:00 GMT</pubDate><guid>http://www.cnitblog.com/oliver_yin/archive/2005/08/31/2425.html</guid><wfw:comment>http://www.cnitblog.com/oliver_yin/comments/2425.html</wfw:comment><comments>http://www.cnitblog.com/oliver_yin/archive/2005/08/31/2425.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/oliver_yin/comments/commentRss/2425.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/oliver_yin/services/trackbacks/2425.html</trackback:ping><description><![CDATA[昨晚做梦微软倒闭了， 今天赶紧决定学Java！<BR>TNND， 真累。<BR><BR><img src ="http://www.cnitblog.com/oliver_yin/aggbug/2425.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/oliver_yin/" target="_blank">生活像一团麻</a> 2005-08-31 14:48 <a href="http://www.cnitblog.com/oliver_yin/archive/2005/08/31/2425.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>可以学习正则表达式的网站</title><link>http://www.cnitblog.com/oliver_yin/archive/2005/08/23/2276.html</link><dc:creator>生活像一团麻</dc:creator><author>生活像一团麻</author><pubDate>Tue, 23 Aug 2005 09:35:00 GMT</pubDate><guid>http://www.cnitblog.com/oliver_yin/archive/2005/08/23/2276.html</guid><wfw:comment>http://www.cnitblog.com/oliver_yin/comments/2276.html</wfw:comment><comments>http://www.cnitblog.com/oliver_yin/archive/2005/08/23/2276.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/oliver_yin/comments/commentRss/2276.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/oliver_yin/services/trackbacks/2276.html</trackback:ping><description><![CDATA[<P>可以学习正则表达式的网站：<BR><A href="http://www.regxlib.com">http://www.regxlib.com</A><BR><BR><BR><A href="http://www.regxlib.com/REDetails.aspx?regexp_id=580">http://www.regxlib.com/REDetails.aspx?regexp_id=580</A></P><img src ="http://www.cnitblog.com/oliver_yin/aggbug/2276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/oliver_yin/" target="_blank">生活像一团麻</a> 2005-08-23 17:35 <a href="http://www.cnitblog.com/oliver_yin/archive/2005/08/23/2276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>中文正则表达式用法</title><link>http://www.cnitblog.com/oliver_yin/archive/2005/08/23/2271.html</link><dc:creator>生活像一团麻</dc:creator><author>生活像一团麻</author><pubDate>Tue, 23 Aug 2005 07:08:00 GMT</pubDate><guid>http://www.cnitblog.com/oliver_yin/archive/2005/08/23/2271.html</guid><wfw:comment>http://www.cnitblog.com/oliver_yin/comments/2271.html</wfw:comment><comments>http://www.cnitblog.com/oliver_yin/archive/2005/08/23/2271.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/oliver_yin/comments/commentRss/2271.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/oliver_yin/services/trackbacks/2271.html</trackback:ping><description><![CDATA[<FONT face=Verdana>这有个中文的例子，可以参考。<BR>由于中文的ASCII码是有一定的范围的。所以你可以用下面的正则表达式来表示中文。<BR><BR>/^[chr(0xa1)-chr(0xff)]+$/<BR><BR>下面是一个使用的例子：<BR><BR>$str = "超越PHP";<BR>if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str)) {<BR>echo "这是一个纯中文字符串";<BR>} else {<BR>echo "这不是一个纯中文字串";<BR>}<BR><BR>--------- VB Script&nbsp; ---------<BR>匹配中文字符的正则表达式： [\u4e00-\u9fa5]</FONT><img src ="http://www.cnitblog.com/oliver_yin/aggbug/2271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/oliver_yin/" target="_blank">生活像一团麻</a> 2005-08-23 15:08 <a href="http://www.cnitblog.com/oliver_yin/archive/2005/08/23/2271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VS.NET 2003 控件命名规范</title><link>http://www.cnitblog.com/oliver_yin/archive/2005/08/22/2249.html</link><dc:creator>生活像一团麻</dc:creator><author>生活像一团麻</author><pubDate>Mon, 22 Aug 2005 03:22:00 GMT</pubDate><guid>http://www.cnitblog.com/oliver_yin/archive/2005/08/22/2249.html</guid><wfw:comment>http://www.cnitblog.com/oliver_yin/comments/2249.html</wfw:comment><comments>http://www.cnitblog.com/oliver_yin/archive/2005/08/22/2249.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/oliver_yin/comments/commentRss/2249.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/oliver_yin/services/trackbacks/2249.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: TypePrefixExampleArrayarrarrShoppingListBooleanblnblnIsPostBackBytebytbytPixelValueCharchrchrDelimiterDateTimedtmdtmStartD...&nbsp;&nbsp;<a href='http://www.cnitblog.com/oliver_yin/archive/2005/08/22/2249.html'>阅读全文</a><img src ="http://www.cnitblog.com/oliver_yin/aggbug/2249.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/oliver_yin/" target="_blank">生活像一团麻</a> 2005-08-22 11:22 <a href="http://www.cnitblog.com/oliver_yin/archive/2005/08/22/2249.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>