<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[网络家园]]></title>
<link>http://www.zhoukai.com/blog/</link>
<description><![CDATA[我们是网络家园辛勤的工作者]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog2 v2.4]]></copyright>
<webMaster><![CDATA[zkdxs@163.com(网络工作者)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>网络家园</title> 
	<url>http://www.zhoukai.com/blog/images/logos.gif</url> 
	<link>http://www.zhoukai.com/blog/</link> 
	<description>网络家园</description> 
</image>

			<item>
			<link>http://www.zhoukai.com/blog/default.asp?id=7</link>
			<title><![CDATA[使用模板实现ASP代码与页面分离]]></title>
			<author>zkdxs@163.com(admin)</author>
			<category><![CDATA[技术篇]]></category>
			<pubDate>Sun,09 Jul 2006 11:51:49 +0800</pubDate>
			<guid>http://www.zhoukai.com/blog/default.asp?id=7</guid>	
		<description><![CDATA[　　每个进行过较大型的ASP-Web应用程序设计的开发人员大概都有如下的经历：ASP代码与页面HTML混淆难分，业务逻辑与显示方式绞合，使得代码难以理解、难以修改；程序编写必须在美工之后，成为项目瓶颈；整合的程序代码和HTML静态页面时，花费大量的时间才能得到理想的效果，兼作了美工。的确，用脚本语言开发Web应用不容易将数据的处理和数据的显示分开，但在多人合作的情况下，如果无法将数据和显示分开，将大大影响开发的效率，专业分工的发挥。<br/>　　其它的脚本语言，如JSP、PHP都有自己的解决方案，ASP的后一代产品ASP.NET也实现了代码与页面，似乎直接过渡到ASP是不错的选择。但是总有这样或那样的原因让我们不能或暂时不能放弃ASP直奔.NET大营。从公司角度来看，转换语言是一笔不少的投资，包括雇佣熟手.NET程序员、培训原有程序员、开发工具的转型、开发风格的转型、界面风格转变、接口风格、软件架构、文档、开发流程等等；这还意味着原有的代码必须在新语言环境里重写以实现最佳的效果和稳定性；同时将直接影响这段时间内项目的进度，更有可能导致个别程序员出走。由此看来在您决定转换语言之前，在原基础上寻求一种解决方案，才是最好的选择。<br/>　　PHP通过模板实现代码与页面，可供选择的有FastTemplate、PHPLIB、Smarty等多种，其中PHPLIB的影响最大、使用最多。既然如此，我们直接把它搬到ASP来，对于同时使用PHP和ASP的公司还有很有好处：一、美工处理页面时，不管将要套用PHP还是ASP，处理方式是一样，无须经过培训；二、程序员编写代码时，两种语言间的思路接近或一致，相同功能在两种语言实现时，只需拷贝过来略作修改即可，保证了工作效率和项目进度。<br/><br/>1、模板类的设计<br/>　　实现代码封装成为模板类，即是为了与PHPLIB兼容，也使得代码方便管理与扩展。<br/>　　模板类要实现的目标为：从模板文件中读入显示的HTML代码，将这些显示代码中需要动态数据的地方替换为ASP程序运算所得出的数据，然后按照一定的顺序输出。其中，替换的部分可以自由的设定。因此它必须完成如下任务：<br/>&nbsp;&nbsp;&nbsp;&nbsp;·从模板文件中读取显示用的HTML代码。<br/>&nbsp;&nbsp;&nbsp;&nbsp;·将模板文件和实际生成的数据结合，生成输出的结果。<br/>&nbsp;&nbsp;&nbsp;&nbsp;·允许同时处理多个模板。<br/>&nbsp;&nbsp;&nbsp;&nbsp;·允许模板的嵌套。<br/>&nbsp;&nbsp;&nbsp;&nbsp;·允许对模板中的某个单独的部分进行处理。<br/><br/>实现方法：<br/>&nbsp;&nbsp;&nbsp;&nbsp;采用FSO读取模板文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;采用正则替换实现模板文件和数据的结合<br/>&nbsp;&nbsp;&nbsp;&nbsp;处理多个模板用数组存储来实现。<br/>&nbsp;&nbsp;&nbsp;&nbsp;模板的嵌套的实现主要的想法是：将模板和输出（任何中间的分析结果）一视同仁，都可拿来做替换，即可实现。<br/>&nbsp;&nbsp;&nbsp;&nbsp;单独部分的处理的通过在模板文件中设定标注，然后在正则替换中结合标注来控制，实现部分替换。<br/><br/>2、模板类的实现<br/>　　给出具体代码之前，先把主要函数列出，用过PHPLIB的朋友应该对此很熟悉了：<br/>　　1）Public&nbsp;Sub&nbsp;set_root(ByVal&nbsp;Value)　设定模板默认目录<br/>　　2）Public&nbsp;Sub&nbsp;set_file(ByVal&nbsp;handle,ByVal&nbsp;&nbsp;filename)　读取文件<br/>　　3）Public&nbsp;Sub&nbsp;set_var(ByVal&nbsp;Name,&nbsp;ByVal&nbsp;Value,&nbsp;ByVal&nbsp;Append)　设置映射数据-替换变量<br/>　　4）Public&nbsp;Sub&nbsp;unset_var(ByVal&nbsp;Name)　取消数据映射<br/>　　5）Public&nbsp;Sub&nbsp;set_block(ByVal&nbsp;Parent,&nbsp;ByVal&nbsp;BlockTag,&nbsp;ByVal&nbsp;Name)　设置数据块<br/>　　6）Public&nbsp;Sub&nbsp;set_unknowns(ByVal&nbsp;unknowns)　设定未指定映射的标记处理方式<br/>　　7）Public&nbsp;Sub&nbsp;parse(ByVal&nbsp;Name,&nbsp;ByVal&nbsp;BlockTag,&nbsp;ByVal&nbsp;Append)　执行模板文件与数据的结合&nbsp;<br/>　　8）Public&nbsp;Sub&nbsp;p(ByVal&nbsp;Name)　输出处理结果<br/><br/>实现代码：<br/>&lt;%<br/>&#39;=======================================================================<br/>&#39;&nbsp;CLASS&nbsp;NAME:&nbsp;&nbsp;kktTemplate&nbsp;ASP页面模板对象<br/>&#39;&nbsp;DESIGN&nbsp;BY&nbsp;:&nbsp;&nbsp;彭国辉<br/>&#39;&nbsp;DATE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2004-07-05<br/>&#39;&nbsp;WEBSITE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://kacarton.yeah.net/" target="_blank">http://kacarton.yeah.net/</a><br/>&#39;&nbsp;EMAIL:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kacarton@sohu.com<br/>&#39;<br/>&#39;&nbsp;本对象中使用了set_var、set_block等命名方法是为了兼容phplib<br/>&#39;=======================================================================<br/><br/>Class&nbsp;kktTemplate<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Private&nbsp;m_FileName,&nbsp;m_Root,&nbsp;m_Unknowns,&nbsp;m_LastError,&nbsp;m_HaltOnErr<br/>&nbsp;&nbsp;&nbsp;&nbsp;Private&nbsp;m_ValueList,&nbsp;m_BlockList<br/>&nbsp;&nbsp;&nbsp;&nbsp;Private&nbsp;m_RegExp&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&nbsp;构造函数<br/>&nbsp;&nbsp;&nbsp;&nbsp;Private&nbsp;Sub&nbsp;Class_Initialize<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;m_ValueList&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;Cr&#101;ateObject(&#34;Scripting.Dictionary&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;m_BlockList&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;Cr&#101;ateObject(&#34;Scripting.Dictionary&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;m_RegExp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;New&nbsp;RegExp<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_RegExp.IgnoreCase&nbsp;=&nbsp;True<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_RegExp.Global&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;True<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_FileName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#34;&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#34;&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Unknowns&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#34;remove&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_LastError&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#34;&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_HaltOnErr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;true<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&nbsp;析构函数<br/>&nbsp;&nbsp;&nbsp;&nbsp;Private&nbsp;Sub&nbsp;Class_Terminate<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;m_RegExp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;Nothing<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;m_BlockMatches&nbsp;=&nbsp;Nothing<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;m_ValueMatches&nbsp;=&nbsp;nothing<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Property&nbsp;Get&nbsp;ClassName()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClassName&nbsp;=&nbsp;&#34;kktTemplate&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Property<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Property&nbsp;Get&nbsp;Version()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Version&nbsp;=&nbsp;&#34;1.0&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Property<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Sub&nbsp;About()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write(&#34;kktTemplate&nbsp;ASP页面模板类&lt;br&gt;&#34;&nbsp;&amp;&nbsp;vbCrLf&nbsp;&amp;_<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#34;程序设计：彭国辉&nbsp;2004-07-05&lt;br&gt;&#34;&nbsp;&amp;&nbsp;vbCrLf&nbsp;&amp;_<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#34;个人网站：&lt;a&nbsp;href=&#39;<a href="http://kacarton.yeah.net" target="_blank">http://kacarton.yeah.net</a>&#39;&gt;<a href="http://kacarton.yeah.net" target="_blank">http://kacarton.yeah.net</a>&lt;/a&gt;&lt;br&gt;&#34;&nbsp;&amp;&nbsp;vbCrLf&nbsp;&amp;_<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#34;电子邮件：&lt;a&nbsp;href=&#39;mailto:kacarton@sohu.com&#39;&gt;kacarton@sohu.com&lt;/a&gt;&lt;br&gt;&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;检查目录是否存在<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Function&nbsp;FolderExist(ByVal&nbsp;path)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;fso<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;fso&nbsp;=&nbsp;Cr&#101;ateObject(&#34;Scripting.FileSystemObject&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FolderExist&nbsp;=&nbsp;fso.FolderExists(Server.MapPath(path))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;fso&nbsp;=&nbsp;Nothing<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Function<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;读取文件内容<br/>&nbsp;&nbsp;&nbsp;&nbsp;Private&nbsp;Function&nbsp;LoadFile()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;Filename,&nbsp;fso,&nbsp;hndFile<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Filename&nbsp;=&nbsp;m_Root<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Right(Filename,&nbsp;1)&lt;&gt;&#34;/&#34;&nbsp;And&nbsp;Right(Filename,&nbsp;1)&lt;&gt;&#34;\&#34;&nbsp;Then&nbsp;Filename&nbsp;=&nbsp;Filename&nbsp;&amp;&nbsp;&#34;/&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Filename&nbsp;=&nbsp;Server.MapPath(Filename&nbsp;&amp;&nbsp;m_FileName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;fso&nbsp;=&nbsp;Cr&#101;ateObject(&#34;Scripting.FileSystemObject&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Not&nbsp;fso.FileExists(Filename)&nbsp;Then&nbsp;ShowError(&#34;模板文件&#34;&nbsp;&amp;&nbsp;m_FileName&nbsp;&amp;&nbsp;&#34;不存在!&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;hndFile&nbsp;=&nbsp;fso.OpenTextFile(Filename)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoadFile&nbsp;=&nbsp;hndFile.ReadAll<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;hndFile&nbsp;=&nbsp;Nothing<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;fso&nbsp;=&nbsp;Nothing<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;LoadFile&nbsp;=&nbsp;&#34;&#34;&nbsp;Then&nbsp;ShowError(&#34;不能读取模板文件&#34;&nbsp;&amp;&nbsp;m_FileName&nbsp;&amp;&nbsp;&#34;或文件为空!&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Function<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;处理错误信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;Private&nbsp;Sub&nbsp;ShowError(ByVal&nbsp;msg)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_LastError&nbsp;=&nbsp;msg<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write&nbsp;&#34;&lt;font&nbsp;color=red&nbsp;style=&#39;font-size;14px&#39;&gt;&lt;b&gt;模板错误：&#34;&nbsp;&amp;&nbsp;msg&nbsp;&amp;&nbsp;&#34;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;m_HaltOnErr&nbsp;Then&nbsp;Response.End<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;设置模板文件默认目录<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;Ex:&nbsp;kktTemplate.set_root(&#34;/tmplate&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&nbsp;&nbsp;&nbsp;&nbsp;kktTemplate.Root&nbsp;=&nbsp;&#34;/tmplate&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;=&nbsp;kktTemplate.get_root()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;=&nbsp;kktTemplate.Root<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;使用类似set_root这样的命名方法是为了兼容phplib，以下将不再重复说明<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Sub&nbsp;set_root(ByVal&nbsp;Value)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Not&nbsp;FolderExist(Value)&nbsp;Then&nbsp;ShowError(Value&nbsp;&amp;&nbsp;&#34;不是有效目录或目录不存在!&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Root&nbsp;=&nbsp;Value<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Function&nbsp;get_root()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get_root&nbsp;=&nbsp;m_Root<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Function&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Property&nbsp;Let&nbsp;Root(ByVal&nbsp;Value)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set_root(Value)<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Property<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Property&nbsp;Get&nbsp;Root()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Root&nbsp;=&nbsp;m_Root<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Property<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;设置模板文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;Ex:&nbsp;kktTemplate.set_file(&#34;hndTpl&#34;,&nbsp;&#34;index.htm&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;本类不支持多模板文件，handle为兼容phplib而保留<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Sub&nbsp;set_file(ByVal&nbsp;handle,ByVal&nbsp;&nbsp;filename)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_FileName&nbsp;=&nbsp;filename<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_BlockList.Add&nbsp;Handle,&nbsp;LoadFile()<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Function&nbsp;get_file()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get_file&nbsp;=&nbsp;m_FileName<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Function<br/>&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Property&nbsp;Let&nbsp;File(handle,&nbsp;filename)<br/>&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set_file&nbsp;handle,&nbsp;filename<br/>&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Property<br/>&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Property&nbsp;Get&nbsp;File()<br/>&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;=&nbsp;m_FileName<br/>&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Property<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;设置对未指定的标记的处理方式，有keep、remove、comment三种<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Sub&nbsp;set_unknowns(ByVal&nbsp;unknowns)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Unknowns&nbsp;=&nbsp;unknowns<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Function&nbsp;get_unknowns()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get_unknowns&nbsp;=&nbsp;m_Unknowns<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Function<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Property&nbsp;Let&nbsp;Unknowns(ByVal&nbsp;unknown)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Unknowns&nbsp;=&nbsp;unknown<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Property<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Property&nbsp;Get&nbsp;Unknowns()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Unknowns&nbsp;=&nbsp;m_Unknowns<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Property<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Sub&nbsp;set_block(ByVal&nbsp;Parent,&nbsp;ByVal&nbsp;BlockTag,&nbsp;ByVal&nbsp;Name)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;Matches<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_RegExp.Pattern&nbsp;=&nbsp;&#34;&lt;!--\s+BEGIN&nbsp;&#34;&nbsp;&amp;&nbsp;BlockTag&nbsp;&amp;&nbsp;&#34;\s+--&gt;([\s\S.]*)&lt;!--\s+END&nbsp;&#34;&nbsp;&amp;&nbsp;BlockTag&nbsp;&amp;&nbsp;&#34;\s+--&gt;&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Not&nbsp;m_BlockList.Exists(Parent)&nbsp;Then&nbsp;ShowError(&#34;未指定的块标记&#34;&nbsp;&amp;&nbsp;Parent)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;Matches&nbsp;=&nbsp;m_RegExp.Execute(m_BlockList.Item(Parent))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;Each&nbsp;Match&nbsp;In&nbsp;Matches<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_BlockList.Add&nbsp;BlockTag,&nbsp;Match.SubMatches(0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_BlockList.Item(Parent)&nbsp;=&nbsp;Replace(m_BlockList.Item(Parent),&nbsp;Match.Value,&nbsp;&#34;{&#34;&nbsp;&amp;&nbsp;Name&nbsp;&amp;&nbsp;&#34;}&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Next<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;Matches&nbsp;=&nbsp;nothing<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Sub&nbsp;set_var(ByVal&nbsp;Name,&nbsp;ByVal&nbsp;Value,&nbsp;ByVal&nbsp;Append)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;Val<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;IsNull(Value)&nbsp;Then&nbsp;Val&nbsp;=&nbsp;&#34;&#34;&nbsp;Else&nbsp;Val&nbsp;=&nbsp;Value<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;m_ValueList.Exists(Name)&nbsp;Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Append&nbsp;Then&nbsp;m_ValueList.Item(Name)&nbsp;=&nbsp;m_ValueList.Item(Name)&nbsp;&amp;&nbsp;Val&nbsp;_<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else&nbsp;m_ValueList.Item(Name)&nbsp;=&nbsp;Val<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_ValueList.Add&nbsp;Name,&nbsp;Value<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Sub&nbsp;unset_var(ByVal&nbsp;Name)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;m_ValueList.Exists(Name)&nbsp;Then&nbsp;m_ValueList.Remove(Name)<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Private&nbsp;Function&nbsp;InstanceValue(ByVal&nbsp;BlockTag)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;keys,&nbsp;i<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InstanceValue&nbsp;=&nbsp;m_BlockList.Item(BlockTag)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keys&nbsp;=&nbsp;m_ValueList.Keys<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;i=0&nbsp;To&nbsp;m_ValueList.Count-1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InstanceValue&nbsp;=&nbsp;Replace(InstanceValue,&nbsp;&#34;{&#34;&nbsp;&amp;&nbsp;keys(i)&nbsp;&amp;&nbsp;&#34;}&#34;,&nbsp;m_ValueList.Item(keys(i)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Next<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Function<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Sub&nbsp;parse(ByVal&nbsp;Name,&nbsp;ByVal&nbsp;BlockTag,&nbsp;ByVal&nbsp;Append)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Not&nbsp;m_BlockList.Exists(BlockTag)&nbsp;Then&nbsp;ShowError(&#34;未指定的&nbsp;块标记&#34;&nbsp;&amp;&nbsp;Parent)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;m_ValueList.Exists(Name)&nbsp;Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Append&nbsp;Then&nbsp;m_ValueList.Item(Name)&nbsp;=&nbsp;m_ValueList.Item(Name)&nbsp;&amp;&nbsp;InstanceValue(BlockTag)&nbsp;_<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else&nbsp;m_ValueList.Item(Name)&nbsp;=&nbsp;InstanceValue(BlockTag)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_ValueList.Add&nbsp;Name,&nbsp;InstanceValue(BlockTag)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Private&nbsp;Function&nbsp;finish(ByVal&nbsp;content)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sel&#101;ct&nbsp;Case&nbsp;m_Unknowns<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;&#34;keep&#34;&nbsp;finish&nbsp;=&nbsp;content<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;&#34;remove&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_RegExp.Pattern&nbsp;=&nbsp;&#34;\{[^&nbsp;\t\r\n}]+\}&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finish&nbsp;=&nbsp;m_RegExp.Replace(content,&nbsp;&#34;&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;&#34;comment&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_RegExp.Pattern&nbsp;=&nbsp;&#34;\{([^&nbsp;\t\r\n}]+)\}&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finish&nbsp;=&nbsp;m_RegExp.Replace(content,&nbsp;&#34;&lt;!--&nbsp;Template&nbsp;Variable&nbsp;$1&nbsp;undefined&nbsp;--&gt;&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;Else&nbsp;finish&nbsp;=&nbsp;content<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sel&#101;ct<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Function<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Sub&nbsp;p(ByVal&nbsp;Name)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Not&nbsp;m_ValueList.Exists(Name)&nbsp;Then&nbsp;ShowError(&#34;不存在的标记&#34;&nbsp;&amp;&nbsp;Name)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write(finish(m_ValueList.Item(Name)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub<br/>End&nbsp;Class<br/>%&gt;<br/><br/>3、使用例子<br/>　　下面举三个例子进行说明。<br/>1)简单的值替换<br/>模板文件为myTemple.tpl，内容：<br/>&lt;html&gt;&lt;title&gt;ASP模板简单替换&lt;/title&gt;&lt;body&gt;<br/>祝贺！你赢了一辆{some_color}法拉利！<br/>&lt;/body&gt;<br/><br/>下面是ASP代码（kktTemplate.inc.asp就是上面给出的模板类）：<br/>&lt;!--#INCLUDE&nbsp;VIRTUAL=&#34;kktTemplate.inc.asp&#34;--&gt;<br/>&lt;%<br/>dim&nbsp;my_color,&nbsp;kkt<br/>my_color&nbsp;=&nbsp;&#34;红色的&#34;<br/>set&nbsp;kkt&nbsp;=&nbsp;new&nbsp;kktTemplate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;创建模板对象<br/>kkt.set_file&nbsp;&#34;hndKktTemp&#34;,&nbsp;&#34;myTemple.tpl&#34;&nbsp;&#39;设置并读取模板文件myTemple.tpl<br/>kkt.set_var&nbsp;&#34;some_color&#34;,&nbsp;my_color,&nbsp;false&nbsp;&#39;设置模板变量&nbsp;some_color&nbsp;=&nbsp;my_color的值<br/>kkt.parse&nbsp;&#34;out&#34;,&nbsp;&#34;hndKktTemp&#34;,&nbsp;false&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;模板变量&nbsp;out&nbsp;=&nbsp;处理后的文件<br/>kkt.p&nbsp;&#34;out&#34;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;输出out的内容<br/>set&nbsp;kkt&nbsp;=&nbsp;nothing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;销毁模板对象<br/>%&gt;<br/><br/>执行后输出为：<br/>&lt;html&gt;&lt;title&gt;ASP模板简单替换&lt;/title&gt;&lt;body&gt;<br/>祝贺！你赢了一辆红色的法拉利！<br/>&lt;/body&gt;<br/><br/><br/>2)循环块演示例子<br/>模板文件myTemple2.tpl：<br/>&lt;html&gt;&lt;title&gt;ASP模板－块的演示&lt;/title&gt;&lt;body&gt;<br/>&lt;table&nbsp;cellspacing=&#34;2&#34;&nbsp;border=&#34;1&#34;&gt;&lt;tr&gt;&lt;td&gt;下面的动物您喜欢哪一种&lt;/td&gt;&lt;/tr&gt;<br/>&lt;!--&nbsp;BEGIN&nbsp;AnimalList&nbsp;--&gt;<br/>&lt;tr&gt;&lt;td&gt;&lt;input&nbsp;type=&#34;radio&#34;&nbsp;name=&#34;chk&#34;&gt;{animal}&lt;/td&gt;&lt;/tr&gt;<br/>&lt;!--&nbsp;END&nbsp;AnimalList&nbsp;--&gt;<br/>&lt;/table&gt;<br/>&lt;/body&gt;<br/><br/>ASP代码：<br/>&lt;!--#INCLUDE&nbsp;VIRTUAL=&#34;kktTemplate.inc.asp&#34;--&gt;<br/>&lt;%<br/>dim&nbsp;animal,&nbsp;kkt,&nbsp;i<br/>animal&nbsp;=&nbsp;Array(&#34;小猪&#34;,&#34;小狗&#34;,&#34;小强&#34;)<br/>set&nbsp;kkt&nbsp;=&nbsp;new&nbsp;kktTemplate<br/>kkt.set_file&nbsp;&#34;hndKktTemp&#34;,&nbsp;&#34;myTemple2.tpl&#34;<br/>kkt.set_block&nbsp;&#34;hndKktTemp&#34;,&nbsp;&#34;AnimalList&#34;,&nbsp;&#34;list&#34;<br/>for&nbsp;i=0&nbsp;to&nbsp;UBound(animal)<br/>&nbsp;&nbsp;&nbsp;&nbsp;kkt.set_var&nbsp;&#34;animal&#34;,&nbsp;animal(i),&nbsp;false<br/>&nbsp;&nbsp;&nbsp;&nbsp;kkt.parse&nbsp;&#34;list&#34;,&nbsp;&#34;AnimalList&#34;,&nbsp;true<br/>next<br/>kkt.parse&nbsp;&#34;out&#34;,&nbsp;&#34;hndKktTemp&#34;,&nbsp;false<br/>kkt.p&nbsp;&#34;out&#34;<br/>set&nbsp;kkt&nbsp;=&nbsp;nothing<br/>%&gt;<br/>&nbsp;&nbsp;<br/>执行结果：<br/>&lt;html&gt;&lt;title&gt;ASP模板－块的演示&lt;/title&gt;&lt;body&gt;<br/>&lt;table&nbsp;cellspacing=&#34;2&#34;&nbsp;border=&#34;1&#34;&gt;&lt;tr&gt;&lt;td&gt;下面的动物您喜欢哪一种&lt;/td&gt;&lt;/tr&gt;<br/>&lt;tr&gt;&lt;td&gt;&lt;input&nbsp;type=&#34;radio&#34;&nbsp;name=&#34;chk&#34;&gt;小猪&lt;/td&gt;&lt;/tr&gt;<br/>&lt;tr&gt;&lt;td&gt;&lt;input&nbsp;type=&#34;radio&#34;&nbsp;name=&#34;chk&#34;&gt;小狗&lt;/td&gt;&lt;/tr&gt;<br/>&lt;tr&gt;&lt;td&gt;&lt;input&nbsp;type=&#34;radio&#34;&nbsp;name=&#34;chk&#34;&gt;小强&lt;/td&gt;&lt;/tr&gt;<br/>&lt;/table&gt;<br/>&lt;/body&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>3)嵌套块演示<br/>模板文件myTemple3.tpl：<br/>&lt;html&gt;&lt;title&gt;ASP模板－嵌套块演示&lt;/title&gt;<br/>&lt;body&gt;&lt;table&nbsp;width=&#34;400&#34;&nbsp;border=&#34;1&#34;&nbsp;bordercolor=&#34;#000000&#34;&gt;<br/>&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;&lt;div&nbsp;align=&#34;center&#34;&gt;{myname}测试&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;<br/>&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;我的动植物园：&lt;/td&gt;&nbsp;&lt;/tr&gt;<br/>&lt;!--&nbsp;BEGIN&nbsp;animalList&nbsp;--&gt;<br/>&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;{animal}&lt;/td&gt;&lt;/tr&gt;<br/>&nbsp;&nbsp;&lt;!--&nbsp;BEGIN&nbsp;plantList&nbsp;--&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;{plant}&lt;/td&gt;&lt;/tr&gt;<br/>&nbsp;&nbsp;&lt;!--&nbsp;END&nbsp;plantList&nbsp;--&gt;<br/>&lt;!--&nbsp;END&nbsp;animalList&nbsp;--&gt;<br/>&lt;/table&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;<br/><br/>ASP代码：<br/>&lt;!--#INCLUDE&nbsp;VIRTUAL=&#34;kktTemplate.inc.asp&#34;--&gt;<br/>&lt;%<br/>dim&nbsp;my_color,&nbsp;kkt,&nbsp;myname,&nbsp;animal,&nbsp;plant<br/>set&nbsp;kkt&nbsp;=&nbsp;new&nbsp;kktTemplate&nbsp;<br/>myname&nbsp;=&nbsp;&#34;kktTemplate&nbsp;block&nbsp;test...&#34;<br/>animal&nbsp;=&nbsp;array(&#34;动物&#34;,&nbsp;&#34;植物&#34;)<br/>plant&nbsp;&nbsp;=&nbsp;array(array(&#34;小猪&#34;,&#34;小白&#34;,&#34;小强&#34;),&nbsp;array(&#34;玫瑰&#34;,&#34;向日葵&#34;))<br/><br/>kkt.set_file&nbsp;&#34;hndKktTemp&#34;,&nbsp;&#34;myTemple3.tpl&#34;<br/>kkt.set_var&nbsp;&#34;myname&#34;,&nbsp;myname,&nbsp;false<br/>kkt.set_block&nbsp;&#34;hndKktTemp&#34;,&nbsp;&#34;animalList&#34;,&nbsp;&#34;a&#34;<br/>kkt.set_block&nbsp;&#34;animalList&#34;,&nbsp;&#34;plantList&#34;,&nbsp;&#34;p&#34;<br/><br/>for&nbsp;i=0&nbsp;to&nbsp;UBound(animal)<br/>&nbsp;&nbsp;&nbsp;kkt.set_var&nbsp;&#34;animal&#34;,&nbsp;animal(i),&nbsp;False<br/>&nbsp;&nbsp;&nbsp;kkt.unset_var&nbsp;&#34;p&#34;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&#39;kkt.set_var&nbsp;&#34;p&#34;,&nbsp;&#34;&#34;,&nbsp;false<br/>&nbsp;&nbsp;&nbsp;for&nbsp;j=0&nbsp;to&nbsp;UBound(plant(i))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kkt.set_var&nbsp;&#34;plant&#34;,&nbsp;plant(i)(j),&nbsp;false<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kkt.parse&nbsp;&#34;p&#34;,&nbsp;&#34;plantList&#34;,&nbsp;true<br/>&nbsp;&nbsp;&nbsp;next<br/>&nbsp;&nbsp;&nbsp;kkt.parse&nbsp;&#34;a&#34;,&nbsp;&#34;animalList&#34;,&nbsp;true<br/>next<br/>kkt.parse&nbsp;&#34;out&#34;,&nbsp;&#34;hndKktTemp&#34;,&nbsp;false<br/>kkt.p&nbsp;&#34;out&#34;<br/>%&gt;<br/><br/>执行结果：<br/>&lt;html&gt;&lt;title&gt;ASP模板－嵌套块演示&lt;/title&gt;<br/>&lt;body&gt;&lt;table&nbsp;width=&#34;400&#34;&nbsp;border=&#34;1&#34;&nbsp;bordercolor=&#34;#000000&#34;&gt;<br/>&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;&lt;div&nbsp;align=&#34;center&#34;&gt;kktTemplate&nbsp;block&nbsp;test...测试&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;<br/>&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;我的动植物园：&lt;/td&gt;&nbsp;&lt;/tr&gt;<br/>&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;动物&lt;/td&gt;&lt;/tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;小猪&lt;/td&gt;&lt;/tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;小白&lt;/td&gt;&lt;/tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;小强&lt;/td&gt;&lt;/tr&gt;<br/>&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;植物&lt;/td&gt;&lt;/tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;玫瑰&lt;/td&gt;&lt;/tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;向日葵&lt;/td&gt;&lt;/tr&gt;<br/>&lt;/table&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;<br/><br/><br/>本文提及的所有代码可从此处下载：<a href="http://image.ahaoz.com/files/20040710/12037.rar" target="_blank">http://image.ahaoz.com/files/20040710/12037.rar</a>(3.53K)<br/><br/><br/>4、小结<br/>　　本文主要介绍了基于ASP利用模板类实现代码与页面分离的方法，当然还有其它更好的解决方案。本文旨在抛砖引玉各位读者、WEB开发参与进来，多提宝贵意见，多作交流，共同进步！<br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.zhoukai.com/blog/default.asp?id=6</link>
			<title><![CDATA[淘宝城的出现有何积极意义]]></title>
			<author>zkdxs@163.com(admin)</author>
			<category><![CDATA[市场研究]]></category>
			<pubDate>Thu,06 Jul 2006 22:05:04 +0800</pubDate>
			<guid>http://www.zhoukai.com/blog/default.asp?id=6</guid>	
		<description><![CDATA[　　&nbsp;近日淘宝大张旗鼓地开辟线下实体店铺，在业界引发了极大轰动。虽然是采取合作的形式，淘宝只提供冠名而没有任何投资，也不从中获取收益，但“淘宝城”的出现与淘宝网上交易依然有着密切关系，因为淘宝卖家入驻“淘宝城”能够享受到一定幅度的租金优惠。<br/><br/>　　&nbsp;据悉，今年8月初第一家“淘宝城”将在上海正式开张。而按照淘宝的设想，继上海之后，准备开实体店的城市还包括深圳、广州和北京等地，未来“淘宝城”将会在全国范围内铺开。对淘宝此举很多人都不看好，毕竟线下交易增加了商品成本，也背离了电子商务的本质。不过笔者以为，“淘宝城”的出现还是有着很大积极意义的。<br/><br/>　　首先是解决了“网上开店要注册”这个难题。众所周知，我国的C2C市场经过多年来的发展，已经达到了一定的规模。2005年，我国的C2C电子商务市场交易额高达137.1亿元，规模已超过了沃尔玛等传统商店。但非常遗憾的是，尽管这一市场规模不小，但国家从中所获得税收却少得可怜，网店也成为了“逃税天堂”。<br/><br/>　　&nbsp;有业内人士按国内几大主要拍卖网站的成交额估算，全国C2C交易逃掉的税收总金额接近1亿元。之所以会出现这种情况，主要是因为网上交易通常都不需要注册相关执照，税务部门自然没法监管。据了解，国内目前有99%的C2C电子商务都没有进行相关注册。针对网上商店逃税这一问题，国家有关部门已经注意到了并开始着手整治。日前商务部在其网站上公布了《中华人民共和国商务部关于网上交易的指导意见(征求意见稿)，明确提出了网上交易者“应当经过工商管理机关和其他主管部门的审批”。虽然暂时还没有出现C2C个人网店需强制工商登记注册上的规定，但可以预见国家政策对网上交易的管理将日趋严格，“网上开店要注册”也是大势所趋。在这种背景下，“淘宝城”的出现给众多的淘宝卖家们带来了极大的便利，他们只需要以相对较为低廉的租金便可以开设线下实体店，获得工商登记注册的机会，再也不必担心由于国家政策的限制而无法继续从事C2C交易。<br/><br/>　　其次是增强了网上交易的可靠性。由于国内信用体系和相关法律法规的不健全，使得交易风险严重制约着我国电子商务的发展。尽管淘宝的“支付宝”和eBay易趣的“安付通”从某种程度上解决了网上支付的安全性问题，但交易的整体风险却并没有丝毫减少，网络购物者仍然常常会遇到这样的难题，就是自己想要购买的商品和卖家最终提供给自己的货物存在着不少差异，而要换货、退货的话又相当麻烦。如果网上卖家有实体店铺让买家“眼见为实”的话，那么这个难题也有望得到解决。淘宝网也指出，国内网上购物群体对“眼见为实”有较强烈的要求;且目前的网上购物纠纷绝大部分由对物品描述的理解偏差导致。而“淘宝城”普及后，消费者需要在网上购物的时候，完全可以在卖家在当地的“淘宝城”开设的实体店铺去查看实物，同时由于卖家有线下的实体商店，所以消费者减少了对卖家诚信的质疑和对所购买商品售后服务的担心。虽然到现场查看实物是比较麻烦，但是增强了交易的安全性，尤其适合于消费者在网上购买一些较为贵重的和对售后服务要求比较高的物品。<br/><br/>　　最后是为C2C盈利模式提供了一种新的思路。尽管C2C市场的出现已经6年之久，也出现了淘宝、EBay易趣等知名企业，但坦白地讲，到现在为止没有哪一家网站找到了合适的盈利模式。虽然淘宝从2003年7月正式上线起就做出了“三年免费”的承诺，并在到期之前决定将免费的政策再继续三年，但淘宝在免费的同时一直都在思考如何向用户提供收费服务，前段时间推出的“招财进宝”就是一次尝试之举。这次尝试最终虽失败，但淘宝追求盈利的目标的欲望并同有降低。淘宝此次推出“淘宝城”，就是又一次大胆的探索。据媒体披露，根据淘宝网与上海韩城的协议，淘宝店主在淘宝城中开店，将得到租金的6折优惠，这些优惠金额合计起来每年高达1700多万元。换句话讲，这家商场只是使用了“淘宝城”的名义，每年需要支出的费用就高达千万元。分析人士指出，淘宝网每年的销售额高达数十亿元，如果进入传统百货领域将可能成为一个“商业巨无霸”，而它即使并不介入经营，单是依靠品牌授权，鉴于其较高的品牌知名度，也将获得一笔很大的收入。假若最终“淘宝城”能如预计中的那样在全国各地到处开花的话，那么不管淘宝采用的是品牌授权形式还是直接经营，从中获利都不会是一笔小数目，甚至可能从根本上解决C2C网站无法盈利这一难题。<br/><br/>　　不过，尽管淘宝推出线下商铺有很多积极意义，但我们也不可能否认一个事实，那就是这种方式提高了商品的成本。按照淘宝最大的竞争对手Ebay易趣的说法，“对于网络卖家来说，实体店铺存在水、电、租金等一系列费用”，这都增加了卖家的经营成本，并最终要转嫁到消费者身上。事实上C2C电子商务的出现，为了减少这些经营成本以帮助卖家获得更大的利润，同时也让消费者得到真正实惠的。如何解决开设线下商店增加的成本对网络交易的响，是“淘宝城”最终能否成功的关键所在。]]></description>
		</item>
		
			<item>
			<link>http://www.zhoukai.com/blog/default.asp?id=5</link>
			<title><![CDATA[马云和他的王国正遭受严峻挑战]]></title>
			<author>zkdxs@163.com(admin)</author>
			<category><![CDATA[互联网]]></category>
			<pubDate>Thu,06 Jul 2006 22:03:19 +0800</pubDate>
			<guid>http://www.zhoukai.com/blog/default.asp?id=5</guid>	
		<description><![CDATA[　　&nbsp;八年磨一剑。阿里巴巴耗资数亿美金，成为一个具备全球竞争力的电子商务平台。辅之以雅虎中国，马云舰队完成最初的装备，从企业和个人电子商务到搜索和门户。在过分务实的互联网行业，马云独自瞄准中国电子商务产业发展的大战略，布局电子支付等基础领域。<br/><br/>　　2005年10月，阿里巴巴收购雅虎中国，陡然间马云愈来愈发声名鼎盛，鲜花着锦、烈火烹油。但是，马云自己预言未来两三年会是非常不平静，半年时间过去，马云的雅虎中国之旅毁誉相参。<br/><br/>　　在丁磊、陈天桥、李彦宏之后，马云和他的阿里巴巴最有可能会改变中国互联网的财富版图和产业格局，而在他的身后，一场电子商务之战也正在酝酿当中。（董晓常&nbsp;何佳艳&nbsp;明叔）&nbsp;]]></description>
		</item>
		
			<item>
			<link>http://www.zhoukai.com/blog/default.asp?id=4</link>
			<title><![CDATA[文澜印象：采访刘可风副书记等（组图）]]></title>
			<author>zkdxs@163.com(admin)</author>
			<category><![CDATA[媒体传真]]></category>
			<pubDate>Thu,06 Jul 2006 21:57:55 +0800</pubDate>
			<guid>http://www.zhoukai.com/blog/default.asp?id=4</guid>	
		<description><![CDATA[&nbsp;&nbsp;&nbsp;文澜新闻网11月4日消息(文澜记者团组稿)&nbsp;<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;2005年11月3日下午2点，中国大学生在线法律援助网、中部崛起网揭牌暨中南财经政法大学文澜网络集团授牌仪式在校新图书馆多功能报告厅举行。会后，文澜记者采访了与会的部分领导与嘉宾。<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;中国大学生在线副理事长、中南财经政法大学党委副书记刘可风教授指出,文澜网络不但作为本校师生了解我校内部事务的一个重要渠道，有利于全校师生更多的互动，更是外界了解我校的一个窗口，一个平台。刘书记希望文澜网络成为中南大所有学生的精神家园；成为学生与学校之间沟通最畅通的渠道；成为学生权利保障的法律顾问。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;中国大学生在线发展中心副主任、运行总监王磊第三次来到我校，他觉得文澜网络集团有了很大的进步。第一，硬件设备有所改进，装备精良了许多，配置了DV，数码相机；第二，工作规范了很多，管理机构更加完善，使文澜网络更像一个集团，而非只是一个简单的团体；第三，工作人员的专业素质提高了，之前的懵懂和摸爬滚打变成了现在井然有序、按部就班的工作。他对文澜网络给予了很高的评价，我校的文澜网络作为一个综合的网络集团，已经初具规模。他认为，应该把文澜网络踏踏实实的工作作风作为大学生网站的榜样与示范，以各种形式推荐给全国的高校。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;湖北省教育厅思政处副处长童静菊，首先对大学生痴迷网络的现象提出看法，认为网络本身就是一个矛盾的东西，关键在于大学生自己的选择，选择本身就是一种能力。对于文澜网络今后发展的建议，她说，文澜网络是大学生自己参与创作的网站，与一些经典的网站相比当然还存在一些不足，但是这也正是我们网站的特色所在，那就是，立足于当代大学生之中，体现当代大学生关注的热点，引领大学生的思想潮流。她对文澜网在保持共产党员先进性教育中的作用给予了很大的肯定，她对网站在大学生中取得的成绩感到很满意。在保持共产党员先进性上她认为关键在于教育的方式和方法，既要有传统的说教教育又要有新式的方法，这样才能让党员先进性教育深入大学生群体。<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;武汉大学学生工作部网络教育科李永辉科长结合我校的文澜网与武大的自强网、未来网，谈了自己的感受。他认为，三者都是以学生为主体，为学生服务并达到锻炼学生综合能力的目的。而且，他也谈到了我校文澜网和武大的这两个网站的一些异同点，我校的文澜网是由党委宣传部主办，而自强网和未来网分别是由学工部和校团委为主来主办的，但是基本的操作都主要依靠学生。最后，他对我校的文澜网提出了若干建议，他认为，要让校网络发展得更好，在给予为学生服务的同时，应该定下远期或者近期的目标，便于今后的发展，而且还要利用网络资源的优势，提高自己的知名度。<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;中国搜索武汉公司技术总监兼文澜网络技术总监周凯，认为网络就是能把想象到的东西写出来，就是最好的。他给现在的新人的经验之谈是：从实践中去体会去做去学，不要浪费时间。对于我们的学习与工作上可能产生的冲突他说并不会冲突，计算机技术是每个人都必须学习的，非专业的学生并不用学的那么深。说到对文澜网络的建议他说，其实我们的网络可以更市场化一些，这样有利于学生更快的融入市场。看过我们的办公室之后他很满意，也很高兴的赞扬我们工作规范，人员素质高，是学校里最优秀的行列。最后他对网站现在的工作人员提出一点意见即拿出最大的热情投入的到网站的建设当中去。<br/><br/><a href="http://news.znufe.edu.cn/2005-11/2005114123334.htm" target="_blank">http://news.znufe.edu.cn/2005-11/2005114123334.htm</a>]]></description>
		</item>
		
			<item>
			<link>http://www.zhoukai.com/blog/default.asp?id=3</link>
			<title><![CDATA[我校中部崛起网测试版“震惊”中国大学生在线总部]]></title>
			<author>zkdxs@163.com(admin)</author>
			<category><![CDATA[媒体传真]]></category>
			<pubDate>Thu,06 Jul 2006 21:53:45 +0800</pubDate>
			<guid>http://www.zhoukai.com/blog/default.asp?id=3</guid>	
		<description><![CDATA[　　10月10日上午，我校独立举办的“中国大学生在线中部崛起网”测试版联结到学校校园网，进行必要的程序测试。<br/>　　当天，校内外访问流量剧增、局部页面显示时出现了阻塞情况。但是，第一天的总体情况基本正常，尽管目前是黑客活动的高峰期，整体系统仍然没有受到干扰。<br/>　　下午3时，中国大学生在线运行总监王磊（原新浪网技术副总监、东方网技术总监），亲自致信“中部崛起网”指导老师和技术总监，对我校设计的页面效果、栏目设置和内容更新等工作，表示“震惊”、“震撼”和“振奋”，并表示将“密切配合，鼎力协助”，共同建设好这个中国大学生在线最大的一级区域网站。<br/>　　当晚11时，中国大学生在线已经将“中部崛起网”直接嵌入“中国大学生在线测试版（<a href="http://exp.univchina.org/uol/" target="_blank">http://exp.univchina.org/uol/</a>）”之“法律援助”栏目下，进行同步测试。而我校与武汉大学合办的“法律援助网”，则是内部测试后50多天，才进入了同步测试阶段。<br/>　　消息传来，中部崛起网工作人员均感到十分激动。全体工作人员纷纷表示，他们一定要团结一致、振奋精神，继续完成后续任务，争取按时全线开通，为文澜网络、为学校、为湖北高校争取更大光荣！<br/><br/>附：中国大学生在线运行总监王磊贺信<br/>宋斌，周凯，<br/>以及所有为中部崛起栏目而工作和奉献的老师、同学们，<br/><br/>您们好！<br/>　　看到你们发来的中部崛起栏目页面，深为震惊，深觉震撼，深感振奋！<br/>　　在此，为你们的创造力、创新精神和工作热情表示崇高敬意！<br/>　　我方将密切配合，鼎力协助。希望通过共同努力，将该栏目办成中国大学生<br/>在线共建栏目中一道亮丽的风景线！<br/>　　<br/>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　Richard&nbsp;Wang&nbsp;<br/>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　2004-10-10<br/><a href="http://www.znufe.edu.cn/news/news/200410/1586.htm" target="_blank">http://www.znufe.edu.cn/news/news/200410/1586.htm</a>]]></description>
		</item>
		
			<item>
			<link>http://www.zhoukai.com/blog/default.asp?id=2</link>
			<title><![CDATA[18条不错的建议,仅做参考]]></title>
			<author>zkdxs@163.com(admin)</author>
			<category><![CDATA[天下杂侃]]></category>
			<pubDate>Thu,06 Jul 2006 17:01:15 +0800</pubDate>
			<guid>http://www.zhoukai.com/blog/default.asp?id=2</guid>	
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;一、读大学，究竟读什么？&nbsp;<br/>　　大学生和非大学生最主要的区别绝对不在于是否掌握了一门专业技能……一个经过独立思考而坚持错误观点的人比一个不假思索而接受正确观点的人更值得肯定……草木可以在校园年复一年地生长，而我们却注定要很快被另外一群人替代……尽管每次网到鱼的不过是一个网眼，但要想捕到鱼，就必须要编织一张网……&nbsp;<br/>　　&nbsp;<br/>　　二、人生规划：三岔路口的抉择&nbsp;<br/>　　不走弯路就是捷径……仕途，商界，学术。在这人生的三岔路口，你将何去何从……与其跟一百个人去竞争五个职位，不如跟一个人去竞争一个职位……学术精神天然的应当与尘嚣和喧哗保持足够的距离……商场不忌讳任何神话。你也完全可能成为下一个传奇……&nbsp;<br/>　　&nbsp;<br/>　　三、专业无冷热，学校无高低&nbsp;<br/>　　没有哪个用人单位会认为你代表了你的学校或者你的专业……既然是概率，就存在不止一种可能性……如果是选择学术，冷门专业比热门专业更容易获得成就……跨专业几乎早已成为一种流行一种时尚……大学之间的实力之争到了考研考场和人才市场原来是那样的微不足道……&nbsp;<br/>　　&nbsp;<br/>　　四、不可一业不专，不可只专一业&nbsp;<br/>　　千招会，不如一招熟……十个百分之十并不是百分之百，而是零……在这个现实的社会，真正实现个人价值才是最体面最有面子最有尊严的事情……要想知道需要学什么，最好的方式就是留意招聘信息……很多专业因为不具备专长的有效性，所以成为了屠龙之术……为什么不将“买一送一”的促销思维运用到求职应聘的过程中来呢……&nbsp;<br/>　　&nbsp;<br/>　　五、不逃课的学生不是好学生&nbsp;<br/>　　什么课都不逃，跟什么课都逃掉没什么两样……读大学，关键是学会思考问题的方法……逃课没有错，但是不要逃错课……英语角绝对不是学英语的地方……为了英语丢了专业，那就舍本逐末了……招聘单位是用人才的地方，而不是培养人才的地方……既要逃课，又要让老师给高分……&nbsp;<br/>　　&nbsp;<br/>　　六、勤工俭学的辩证法&nbsp;<br/>　　对于贫困生来说，首先要做的不是挣钱，而是省钱……大部分女生将电脑当成了影碟机，大部分男生将电脑当成了游戏机……在这个处女膜都可以随意伪造的年代，还有什么值得轻易相信……态度决定一切……当学习下降到次要的地位，大学生就只能说是兼职的学生了……&nbsp;<br/>　　&nbsp;<br/>　　七、做事不如做人，人脉决定成败&nbsp;<br/>　　学问好不如做事好，做事好不如做人好……会说话，就能减少奋斗三十年……一个人有多少钱并不是指他拥有多少钱的所有权，而是指他拥有多少钱的使用权……一个人赚的钱，12.5%是靠自身的知识，87.5%则来自人脉关系……三十岁以前靠专业赚钱，三十岁以后拿人脉赚钱……你和世界上的任何一个人之间只隔着四个人……&nbsp;<br/>　　&nbsp;<br/>　　八、互联网：倚天剑与达摩克利斯之剑&nbsp;<br/>　　花两个小时就写出一篇天衣无缝的优秀毕业论文……在互联网领域创业的技术门槛并不高，关键的是市场眼光和营销能力……轻舞飞扬已经红颜薄命了，而痞子蔡却继续跟别的女孩发生着一次又一次的亲密接触……很多大学生的网友遍布祖国大江南北，可他们却从未主动向周围的人说一声：你好，我们可以聊聊吗……&nbsp;<br/>　　&nbsp;<br/>　　九、恋爱：花开堪折方须折&nbsp;<br/>　　爱情是不期而至的，可以期待，但不可以制造……越是寂寞，越要警惕爱情……既然单身是可耻的，那西门庆是不是应该被评为宋朝十大杰出青年……花开堪折方须折，莫让鲜花败残枝……一个有一万块钱的人为你花掉一百元，你只占了他的百分之一；而一个只有十块钱的人为你花掉十块，你就成了他的全部……&nbsp;<br/>　　&nbsp;<br/>　　十、性：上帝死了，众神在堕落&nbsp;<br/>　　爱要说，爱要做……我只有在肉体一下一下的撞击中才感到快乐。经过之后，将是更大的寂寞更大的空虚……为何要让别人的虚荣成为对自己的伤害……当她机械地躺在床上张开双腿，她的父母正在憧憬着女儿的未来……一朝春尽红颜老，花落人亡两不知……&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;十一、考研：痛苦的安乐死&nbsp;<br/>　　没有比浪费青春更失败的事情了……研究生扩招的速度是30%，也就意味着硕士学历贬值的速度是30%……同样是付出三年的努力，你可以让E1的值增加1，也可以让E2的值增加2甚至增加3……读完硕士或博士并不等于工作能力更强……面对13.54万的成本，你还会毫不犹豫地投资读研究生吗……努力就会有结果，但不一定是好结果……&nbsp;<br/>　　&nbsp;<br/>　　十二、留学：“海龟”变“海带”&nbsp;<br/>　　月薪2500元的工作，居然引得三个“海归”硕士争相竞聘……对于某些专业而言，去美国留学和去埃塞俄比亚留学没什么两样……既然全世界的公司都想到中国的市场上来瓜分蛋糕，为什么中国人还要一门心思到国外去留学然后给外国人打工……&nbsp;<br/>　　&nbsp;<br/>　　十三、非统招：养卑照样处优&nbsp;<br/>　　她在中国信息产业界创下了几项纪录。她被称为中国的“打工皇后”。而她不过是一名自考大专生……要想把曾经输掉的东西赢回来，就必须把自己比别人少付出的努力补上来……非统招生不但要有一定的实力，而且必须掌握一定的技巧，做到扬长避短出奇制胜……路在脚下。好走，走好……&nbsp;<br/>　　&nbsp;<br/>　　十四、毕业：十面埋伏的陷阱&nbsp;<br/>　　母校不把自己当母亲，你又何必把自己当儿女……听辅导班不过是花钱买踏实……人才市场就是一个地雷阵……通过多种方式求职固然没有错，但是千万不要饥不择食……只要用人单位一说要你交钱，你掉头就走便是了……这年头立字尚且不足以为据，更何况一个口头约定……&nbsp;<br/>　　&nbsp;<br/>　　十五、求职：做人不要太厚道&nbsp;<br/>　　求职简历必须突出自己的核心竞争力……求职的时候大可不必像严守一那样“有一说一”……一个人说假话并不难，难的是把假话说到底，并且不露一丝破绽……在填写自己的特长时，一定要尽可能详细……一份求职简历只要用一张A4纸做个表格就足够了……面试其实是有规律的，每次面试的时候只要背标准答案就行了……&nbsp;<br/>　　&nbsp;<br/>　　十六、骑一头能找千里马的驴&nbsp;<br/>　　美国铁路两条铁轨之间的标准距离是4英尺8.5英寸，为什么呢？因为两匹马臀部之间的宽度是4英尺8.5英寸……垃圾是放错位置的人才……世界上最大的悲剧莫过于有太多的年轻人从来没有发现自己真正想做什么……中小型企业或许能够让你得到更充分的锻炼……从基层做起并不意味着可以从基层的每一个职位做起……要“钱途”，更要前途……&nbsp;<br/>　　&nbsp;<br/>　　十七、写字楼政治：白领必修课&nbsp;<br/>　　大公司是做人，小公司是做事……职员能否得到提升，很大程度不在于是否努力，而在于老板对你的赏识程度……公司的事情和秘密永远比你想象的还要复杂和深奥……在适当的时候装糊涂不但是必要的，而且是睿智的……就把你的同事当成一群你可以叫得出名字的陌生人好了……&nbsp;<br/>　　&nbsp;<br/>　　十八、创业：29岁以前做富翁&nbsp;<br/>　　瘦死的骆驼比马大……撑死胆大的，饿死胆小的……不再是“大鱼吃小鱼”，而是“快鱼吃慢鱼”……对于趋势的把握是一个创业者最重要的能力……高科技行业留给毕业生的空间已经很小……欲速则不达。在创业以前通过给别人打工而积累经验是非常必要的……市场永远比产品更重要……钱不够花，怎么办？第一，看菜吃饭；第二，借鸡生蛋……&nbsp;]]></description>
		</item>
		
			<item>
			<link>http://www.zhoukai.com/blog/default.asp?id=1</link>
			<title><![CDATA[集训归来：假若都是因为明天(一大早宋老师发在我的QQ上)]]></title>
			<author>zkdxs@163.com(admin)</author>
			<category><![CDATA[个人日记]]></category>
			<pubDate>Thu,06 Jul 2006 12:39:05 +0800</pubDate>
			<guid>http://www.zhoukai.com/blog/default.asp?id=1</guid>	
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果，重新回到30年前，我6&nbsp;岁的时候，要设想30年以后的生活，我想，可能会有很多的不同。有一点是可以肯定的，就是：我必须，也肯定会过一种有激情、有信心、有胆识和有知识的生活。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;人生太短了，给我的机会和时间都不多，奋斗是我唯一的选择。我不想从天上飞过，却没有翅膀的痕迹。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;然而，和同龄人相比，我却仿佛过着一种另类的生活，一种不容易被理解或者说被广泛认同的生活。我倒不反对其它人的生活观念，因为，世界已经给我一颗可以容忍别样生活方式、生存方式的心。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;人类的发展已经证明，生物的多样性和多元化，是地球不同于其它星球的一个重要标志。正当你发现了很多人，当然，几乎是变态人、偏面人、单向度的人，也在过着幸福的生活的时候，你不得不，也是终于发现：原来，人也可以这样生活！甚至于比你更有幸福的感觉、快乐的感觉！<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;在远离你的价值观、世界观、人生观的另外一个世界，自然而然地形成了一个全新的世界——仿佛比你的世界更加精彩、更加有趣。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;我也这样发现过、观察过、体验过，一种自己不能理解、无法想像，但是却真实存在的、属于别人自己的生活。因此，从内心深处，我是尊重这样的人，也感谢这样的人，给了我一个丰富多彩的世界，一个推陈出新的世界。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;风格，一个人的风格，往往是人们自觉或者不自觉衡量一个人的标准。基于多年苦难、成功、痛苦和快乐基础上的，一个人独具一格的、无法取代的风格，就是无法抵抗的个人魅力。我相信也是如此。世界，本来就是如此。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;如同一个人，最担心的莫过于消失于人海，没有任何标志，没有任何特征，没有任何个性，你无法从人群中认识他、理解他、记得他。然而，你说台湾的李敖，几乎人人都知道、都会想到那张大嘴，那张近乎于天真的笑脸。这个，就像昨天周凯告诉我的一句话，你对他的感觉就是三个“不”：看不懂、想不通、赶不上。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;做网站的是人，网站也会和人一样，具有其内在的风格。我倒不担心我没有风格，我担心我们的网站，是否没有标记？一个清晰的标记？能否让我在茫茫网海中，第一眼就看到我们自己的网站？不会有人，白痴一样的思考这样的问题；也不会有人如此变态地思考问题。当然，在某个领域，在某个地方，许多人永远无法超越我、漠视我、对抗我，因为，我总在思考他们做梦也不会想到的问题。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;成功和失败，从来不是偶然的。偶然的事件，却能够改变二者之间的方向。我们没有时间去寻找偶然的机会，偶然的因素，人类发展了将近一万年，终于找到了偶然以外的因素，这就是：必然。我们的辛勤劳动，我们的励精图治，我们的不懈努力，都是成功的必然因素。武汉大学的一个老师，和我一起到上海开会的时候，听我滔滔不绝、口如悬河地谈计划、谈方案、谈策略，沉默了许久，然后慢慢地说了一句话：今后，武汉，再也不是武汉大学的武汉了。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;一年后，看到文澜网络的异军突起、迅猛发展，有多少人想到过、猜测到了？但是，如果你曾经看到老宋、义明和周凯三更半夜从床铺上爬起来讨论，写计划、写方案、写陈述，一边喝酒一边大声争吵，玩命似的干工作，苦口婆心地找学生过来干活。。。那个时候，只有我们三个人知道，成功只是时间问题。一个聪明的人、一个拼命的人、一个发愤的人、一个痛苦的人，都可以成功，何况，这样四种人合成为一个人，一个集体化的个人，怎么能够不成功？怎么能够没有幸福感？那是2004年，也就是二年前。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;我走过，所以我知道。我经历过，所以我理解。IT行业，永远属于哲学家。只有永远的、如此的不懈努力，发愤图强式的前进，才能有存在的可能、生活的可能。许多远离过、离开过文澜网络的人，经常会不由自主地怀念那样的人、那样的生活、那样的气氛、那样的集体。因为，他们失去的，是一种真正具备成功条件的生活，一种富有激情和活力的生活。那样的生活，往往只是在梦中出现过。我们，却把它变成了现实，一种现实的生活。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;不管如何，不管怎样，我们，将走得很远、很远，不仅仅只是思想。]]></description>
		</item>
		
</channel>
</rss>