<?xml version="1.0" encoding="gb2312"?>

<!-- RSS generated by oioj.net on 4/16/2004 ; 感谢LeXRus提供 RSS 2.0 文档; 此文件可自由使用，但请保留此行信息 --> 
<!-- Source download URL: http://blogger.org.cn/blog/rss2.asp       -->
<rss version="2.0">

<channel>
<title>ideation_shang的blog</title>
<link>http://blogger.org.cn/blog/blog.asp?name=dashee</link>
<description>ideation的博客</description>
<copyright>blogger.org.cn</copyright>
<generator>W3CHINA Blog</generator>
<webMaster>webmaster@blogger.org.cn</webMaster>
<item>
<title><![CDATA[Delphi写的表达式解析器]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=40975</link>
<author>dashee</author>
<pubDate>2008/11/3 3:30:01</pubDate>
<description><![CDATA[<P>Delphi写的表达式解析器，支持的运算符:+,-,*,/,^,div,mod,()。支持的数学函数(请参照Delphi中参数定义):<BR>abs,acos,asin,atan,ceil,cos,cosh,avg,cotan,floor,frac,max,min,power,sign,sin,<BR>sinh,sqr,sqrt,sum,tan,tanh,trunc<BR><A><IMG src="http://blogger.org.cn/blog/images/file/zip.gif" border=0></A><A href="http://blogger.org.cn/blog/uploadfile/200811332754338.RAR" target=_blank>ExpressionDemo.rar</A></P>]]></description>
</item><item>
<title><![CDATA[prototype.js开发笔记(CHM版)]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=37616</link>
<author>dashee</author>
<pubDate>2008/7/11 0:53:54</pubDate>
<description><![CDATA[
<P>prototype.js开发笔记</P>
<P class=title>原文链接地址</P>
<P class=title><A href="https://compdoc2cn.dev.java.net/prototype/html/prototype.js.cn.html">https://compdoc2cn.dev.java.net/prototype/html/prototype.js.cn.html</A></P>
<P class=title>CHM版仅为本人整理,所有版权归原作者所有.<BR></P>
<P class=title><IMG src="http://blogger.org.cn/blog/images/file/zip.gif" border=0><A href="http://blogger.org.cn/blog/uploadfile/20087111845778.RAR" target=_blank>prototype.js开发笔记.rar</A></P>]]></description>
</item><item>
<title><![CDATA[Heiro发布，我的震撼和伤感]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=36789</link>
<author>dashee</author>
<pubDate>2008/6/13 1:52:53</pubDate>
<description><![CDATA[
<P>近一年的时间一直在研发P2P视频会议直播网络,目前产品已经上线,产品网址<A href="http://www.leadusee.cn/">http://www.leadusee.cn</A>. 在宣传的同时，有个朋友说Heiro和你的很相似。我兴奋，也有些悲伤，我辛辛苦苦架构的p2p网络别人也已经研制出来了？我抱着嫉妒和很多复杂的心情，找到了Herio的报道，新浪网[2008年05月29日]:Heiro网络实时流媒体平台发布(<A href="http://tech.sina.com.cn/s/2008-05-29/18242225607.shtml">http://tech.sina.com.cn/s/2008-05-29/18242225607.shtml</A>).<BR>摘抄最重要的一段内容：<BR></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 5px; BACKGROUND: #f3f3f3; PADDING-BOTTOM: 5px; MARGIN: 5px 20px; BORDER-LEFT: #cccccc 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #cccccc 1px solid">
<P>“2008年5月29日，由武汉大学计算机学院成功研发的Heiro网络实时流媒体平台在人民大会堂正式发布。在主题为“开创媒体未来，赢造‘i’时代”的新闻发布会上，来自政府有关部门的领导、业内专家与数十家新闻媒体一起亲身体验了这一具有“技术独创性和世界首创性”的实时流媒体平台，并对Heiro平台所实现的“高速直播、高速收看、实时互动”效果感到非常的振奋。</P>
<P>　　据Heiro项目负责人、武汉大学计算机学院院长何炎祥介绍，目前世界上无论是基于P2P的流媒体“直播”系统还是基于CDN的IPTV系统，速度的瓶颈使得这两种系统都无法完全发挥流媒体技术的价值，也无法实现大范围的应用。Heiro平台则是应用了多种全球首创、具有自主知识产权的互联网信息技术，这些技术突破了流媒体的速度制约，首次使多媒体信号在互联网上高速实时直播成为可能，是迄今为止互联网上唯一能真正构架于视频源与用户之间的一条“流媒体高速公路”。</P>
<P>　　关于技术重大创新上，Heiro平台技术负责人华仁红谈到了四点：第一，是用户节点在互联网上准确快速定位，这使得本平台的P2P性能达到了理想上的最优；第二，采用与运营商网络相同架构，使Heiro平台实现高效、高速、双赢；第三项创新是带宽自适应技术，这让Heiro平台保证所有无论是宽带、窄带还是移动网络用户，都能享受到Heiro流媒体的优质服务；第四项创新是实现了流媒体在不可靠的互联网上的快速可靠传输，这也是所有多媒体人追求的目标。正因为Heiro卓越的性能以及广阔的应用空间，使Heiro成为了一种全新的新媒体平台，它的出现将引领媒体未来的发展方向。</P>
<P>　　毋庸置疑，Heiro对流媒体“流动”速度的提升，是一次真正的互联网应用革命。目前，市场上商用P2P流媒体直播系统的延迟时间大约1分钟左右，而Heiro的延迟却在1秒以内，这超越当前速度60倍的“1秒钟”必然能够给我们带来全新的应用。”<BR></P></DIV>
<P>讲的很好，很对，简直和我们的架构思想出奇的一致，将P2P技术推向了一个新的高度，不再需要服务器来转发数据。我对此深表佩服。由倪光南院士致辞，可见意义非同凡响。我并不对此表示怀疑，因为我们的技术就实现了如此的效果。我将该技术称为Neighbours.P2P实时数据分享技术。作为该技术的创始人，从2007年11月的思想雏形到今天的LeadUSee产品,我一直以为这样的技术两年之内不可能有其他人研发出来。看来是我错了。但是，我仍然有一个疑问,就是当前的网络环境，大部分是adsl接入，能达到1秒以内的延时，我们是做不到。我们能做到的只是adsl之间百客户端延时1秒-3秒之间。<BR>同时，我登录了Heiro官方网站<A href="http://www.heiro.cn/">http://www.heiro.cn</A>,我是河北网通adsl,主页无法打开。朋友的电信可以打开。并且下载了客户端HeiroSetup1.9.9.7。想着是感受一下如此震撼的技术，可是无论如何都是链接服务器失败，我和朋友都是如此。已经在人民大会堂正式发布并且由倪光南院士来致辞的具有划时代意义的习题，竟然会测试不了？我有些疑问和怀疑了。<BR>本来还想对我们的产品以及Neighbours.P2P申请专利，看来要考虑有没有必要了，我们没有实力来惊动科学院院士，更没有实力在人民大会堂开发布会。我真诚的希望heiro不是汉芯第二，不是面子工程。</P>
<P>本文地址 <A href="http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=36789">http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=36789</A></P>]]></description>
</item><item>
<title><![CDATA[msxml常用对象与对应的ProgID]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=36623</link>
<author>dashee</author>
<pubDate>2008/6/8 1:16:23</pubDate>
<description><![CDATA[<STRONG>对象&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProgID <BR></STRONG>//DOMDocument对象<BR>DOMDocument(msxml 2.0)&nbsp;&nbsp;&nbsp; MSXML.DOMDocument <BR>DOMDocument(msxml 3.0)&nbsp;&nbsp;&nbsp; MSXML2.DOMDocument 或者 MSXML2.DOMDocument.3.0<BR>DomDocument(msxml 4.0)&nbsp;&nbsp;&nbsp; Msxml2.DOMDocument.4.0 <BR>DomDocument(msxml 5.0)&nbsp;&nbsp;&nbsp; Msxml2.DOMDocument.5.0 <BR>DomDocument(msxml 6.0)&nbsp;&nbsp;&nbsp; Msxml2.DOMDocument.6.0 <BR>//XMLHTTP对象<BR>XMLHTTP(msxml 2.0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Microsoft.XMLHTTP<BR>XMLHTTP(msxml 3.0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MSXML2.XMLHTTP 或者 MSXML2.XMLHTTP.3.0 <BR>XMLHTTP(msxml 4.0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Msxml2.XMLHTTP.4.0 <BR>XMLHTTP(msxml 5.0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Msxml2.XMLHTTP.5.0 <BR>XMLHTTP(msxml 6.0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Msxml2.XMLHTTP.6.0]]></description>
</item><item>
<title><![CDATA[XPath 函数]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=36622</link>
<author>dashee</author>
<pubDate>2008/6/8 0:34:20</pubDate>
<description><![CDATA[
<STYLE>
DIV#wrapper {
 BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: url(/i/site_wrapper.gif) repeat-y left top; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px auto; WIDTH: 966px; PADDING-TOP: 0px;  PADDING-TOP: 0px; TEXT-ALIGN: left; BORDER-RIGHT-WIDTH: 0px
}
DIV#maincontent {
 BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 637px; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px
}
TABLE.dataintable {
 BORDER-RIGHT: #888 1px solid; BORDER-TOP: #888 1px solid; MARGIN-TOP: 10px; BORDER-LEFT: #888 1px solid; WIDTH: 100%; BORDER-BOTTOM: #888 1px solid; FONT-FAMILY: "Courier New", Courier, monospace; BORDER-COLLAPSE: collapse;FONT: 12px Verdana, Arial, Helvetica, sans-serif;
}
TABLE.dataintable PRE {
 BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: auto; PADDING-TOP: 0px; BACKGROUND-COLOR: transparent; BORDER-RIGHT-WIDTH: 0px
}
TABLE.dataintable TH {
 BORDER-RIGHT: #888 1px solid; PADDING-RIGHT: 15px; BORDER-TOP: #888 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #888 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #888 1px solid; BACKGROUND-COLOR: #ccc
}
TABLE.dataintable TD {
 BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 15px; BORDER-TOP: #aaa 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; VERTICAL-ALIGN: text-top; BORDER-LEFT: #aaa 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #efefef
}
TABLE.dataintable P {
 MARGIN: 0px 0px 2px
}</STYLE>

<DIV id=wrapper>
<DIV id=maincontent>
<DIV>
<H2><A id=accessor>存取函数</A></H2>
<TABLE class=dataintable>
<TBODY>
<TR>
<TH style="WIDTH: 40%">名称</TH>
<TH style="WIDTH: 60%">说明</TH></TR>
<TR>
<TD>fn:node-name(node)</TD>
<TD>返回参数节点的节点名称。</TD></TR>
<TR>
<TD>fn:nilled(node)</TD>
<TD>返回是否拒绝参数节点的布尔值。</TD></TR>
<TR>
<TD>fn:data(item.item,...)</TD>
<TD>接受项目序列，并返回原子值序列。</TD></TR>
<TR>
<TD>
<UL>
<LI>fn:base-uri() 
<LI>fn:base-uri(node)</LI></UL></TD>
<TD>返回当前节点或指定节点的 base-uri 属性的值。</TD></TR>
<TR>
<TD>fn:document-uri(node)</TD>
<TD>返回指定节点的 document-uri 属性的值。</TD></TR></TBODY></TABLE></DIV>
<DIV>
<H2><A id=error>错误和跟踪函数</A></H2>
<TABLE class=dataintable>
<TBODY>
<TR>
<TH style="WIDTH: 40%">名称</TH>
<TH style="WIDTH: 60%">说明</TH></TR>
<TR>
<TD>
<UL>
<LI>fn:error() 
<LI>fn:error(error) 
<LI>fn:error(error,description) 
<LI>fn:error(error,description,error-object) </LI></UL></TD>
<TD>
<P>例子：error(fn:QName('http://example.com/test', 'err:toohigh'), 'Error: Price is too high')</P>
<P>结果：向外部处理环境返回 http://example.com/test#toohigh 以及字符串 "Error: Price is too high"。</P></TD></TR>
<TR>
<TD>fn:trace(value,label)</TD>
<TD>用于对查询进行 debug。</TD></TR></TBODY></TABLE></DIV>
<DIV>
<H2><A id=numeric>有关数值的函数</A></H2>
<TABLE class=dataintable>
<TBODY>
<TR>
<TH style="WIDTH: 40%">名称</TH>
<TH style="WIDTH: 60%">说明</TH></TR>
<TR>
<TD>fn:number(arg)</TD>
<TD>
<P>返回参数的数值。参数可以是布尔值、字符串或节点集。</P>
<P>例子：number('100')</P>
<P>结果：100</P></TD></TR>
<TR>
<TD>fn:abs(num)</TD>
<TD>
<P>返回参数的绝对值。</P>
<P>例子：abs(3.14)</P>
<P>结果：3.14</P>
<P>例子：abs(-3.14)</P>
<P>结果：3.14</P></TD></TR>
<TR>
<TD>fn:ceiling(num)</TD>
<TD>
<P>返回小于 num 参数的最小整数。</P>
<P>例子：ceiling(3.14)</P>
<P>结果：4</P></TD></TR>
<TR>
<TD>fn:floor(num)</TD>
<TD>
<P>返回不大于 num 参数的最大整数。</P>
<P>例子：floor(3.14)</P>
<P>结果：3</P></TD></TR>
<TR>
<TD>fn:round(num)</TD>
<TD>
<P>把 num 参数舍入为最接近的整数。</P>
<P>例子：round(3.14)</P>
<P>结果：3</P></TD></TR>
<TR>
<TD>fn:round-half-to-even()</TD>
<TD>
<P>例子：round-half-to-even(0.5)</P>
<P>结果：0 </P>
<P>例子：round-half-to-even(1.5)</P>
<P>结果：2</P>
<P>例子：round-half-to-even(2.5)</P>
<P>结果：2</P></TD></TR></TBODY></TABLE></DIV>
<DIV>
<H2><A id=string>有关字符串的函数</A></H2>
<TABLE class=dataintable>
<TBODY>
<TR>
<TH style="WIDTH: 40%">名称</TH>
<TH style="WIDTH: 60%">说明</TH></TR>
<TR>
<TD>fn:string(arg)</TD>
<TD>
<P>返回参数的字符串值。参数可以是数字、逻辑值或节点集。</P>
<P>例子：string(314)</P>
<P>结果："314"</P></TD></TR>
<TR>
<TD>fn:codepoints-to-string(int,int,...)</TD>
<TD>
<P>根据代码点序列返回字符串。</P>
<P>例子：codepoints-to-string(84, 104, 233, 114, 232, 115, 101)</P>
<P>结果：'Thérèse'</P></TD></TR>
<TR>
<TD>fn:string-to-codepoints(string)</TD>
<TD>
<P>根据字符串返回代码点序列。</P>
<P>例子：string-to-codepoints("Thérèse")</P>
<P>结果：84, 104, 233, 114, 232, 115, 101</P></TD></TR>
<TR>
<TD>fn:codepoint-equal(comp1,comp2)</TD>
<TD>根据 Unicode 代码点对照，如果 comp1 的值等于 comp2 的值，则返回 true。(http://www.w3.org/2005/02/xpath-functions/collation/codepoint)，否则返回 false。</TD></TR>
<TR>
<TD>
<UL>
<LI>fn:compare(comp1,comp2) 
<LI>fn:compare(comp1,comp2,collation) </LI></UL></TD>
<TD>
<P>如果 comp1 小于 comp2，则返回 -1。如果 comp1 等于 comp2，则返回 0。如果 comp1 大于 comp2，则返回 1。（根据所用的对照规则）。</P>
<P>例子：compare('ghi', 'ghi')</P>
<P>结果：0</P></TD></TR>
<TR>
<TD>fn:concat(string,string,...)</TD>
<TD>
<P>返回字符串的拼接。</P>
<P>例子：concat('XPath ','is ','FUN!')</P>
<P>结果：'XPath is FUN!'</P></TD></TR>
<TR>
<TD>fn:string-join((string,string,...),sep)</TD>
<TD>
<P>使用 sep 参数作为分隔符，来返回 string 参数拼接后的字符串。</P>
<P>例子：string-join(('We', 'are', 'having', 'fun!'), ' ')</P>
<P>结果：' We are having fun! '</P>
<P>例子：string-join(('We', 'are', 'having', 'fun!'))</P>
<P>结果：'Wearehavingfun!'</P>
<P>例子：string-join((), 'sep')</P>
<P>结果：''</P></TD></TR>
<TR>
<TD>
<UL>
<LI>fn:substring(string,start,len) 
<LI>fn:substring(string,start) </LI></UL></TD>
<TD>
<P>返回从 start 位置开始的指定长度的子字符串。第一个字符的下标是 1。如果省略 len 参数，则返回从位置 start 到字符串末尾的子字符串。</P>
<P>例子：substring('Beatles',1,4)</P>
<P>结果：'Beat'</P>
<P>例子：substring('Beatles',2)</P>
<P>结果：'eatles'</P></TD></TR>
<TR>
<TD>fn:string-length(string) fn:string-length() </TD>
<TD>
<P>返回指定字符串的长度。如果没有 string 参数，则返回当前节点的字符串值的长度。</P>
<P>例子：string-length('Beatles')</P>
<P>结果：7</P></TD></TR>
<TR>
<TD>
<UL>
<LI>fn:normalize-space(string) 
<LI>fn:normalize-space() </LI></UL></TD>
<TD>
<P>删除指定字符串的开头和结尾的空白，并把内部的所有空白序列替换为一个，然后返回结果。如果没有 string 参数，则处理当前节点。</P>
<P>例子：normalize-space(' The&nbsp;&nbsp;&nbsp;XML ')</P>
<P>结果：'The XML'</P></TD></TR>
<TR>
<TD>
<UL>
<LI>fn:normalize-unicode() 
<LI>fn:upper-case(string) </LI></UL></TD>
<TD>
<P>把 string 参数转换为大写。</P>
<P>例子：upper-case('The XML')</P>
<P>结果：'THE XML'</P></TD></TR>
<TR>
<TD>fn:lower-case(string)</TD>
<TD>
<P>把 string 参数转换为小写。</P>
<P>例子：lower-case('The XML')</P>
<P>结果：'the xml'</P></TD></TR>
<TR>
<TD>fn:translate(string1,string2,string3)</TD>
<TD>
<P>把 string1 中的 string2 替换为 string3。</P>
<P>例子：translate('12:30','30','45')</P>
<P>结果：'12:45'</P>
<P>例子：translate('12:30','03','54')</P>
<P>结果：'12:45'</P>
<P>例子：translate('12:30','0123','abcd')</P>
<P>结果：'bc:da'</P></TD></TR>
<TR>
<TD>fn:escape-uri(stringURI,esc-res)</TD>
<TD>
<P>例子：escape-uri("http://example.com/test#car", true())</P>
<P>结果："http%3A%2F%2Fexample.com%2Ftest#car"</P>
<P>例子：escape-uri("http://example.com/test#car", false())</P>
<P>结果："http://example.com/test#car"</P>
<P>例子：escape-uri ("http://example.com/~bébé", false())</P>
<P>结果："http://example.com/~b%C3%A9b%C3%A9"</P></TD></TR>
<TR>
<TD>fn:contains(string1,string2)</TD>
<TD>
<P>如果 string1 包含 string2，则返回 true，否则返回 false。</P>
<P>例子：contains('XML','XM')</P>
<P>结果：true</P></TD></TR>
<TR>
<TD>fn:starts-with(string1,string2)</TD>
<TD>
<P>如果 string1 以 string2 开始，则返回 true，否则返回 false。</P>
<P>例子：starts-with('XML','X')</P>
<P>结果：true</P></TD></TR>
<TR>
<TD>fn:ends-with(string1,string2)</TD>
<TD>
<P>如果 string1 以 string2 结尾，则返回 true，否则返回 false。</P>
<P>例子：ends-with('XML','X')</P>
<P>结果：false</P></TD></TR>
<TR>
<TD>fn:substring-before(string1,string2)</TD>
<TD>
<P>返回 string2 在 string1 中出现之前的子字符串。</P>
<P>例子：substring-before('12/10','/')</P>
<P>结果：'12'</P></TD></TR>
<TR>
<TD>fn:substring-after(string1,string2)</TD>
<TD>
<P>返回 string2 在 string1 中出现之后的子字符串。</P>
<P>例子：substring-after('12/10','/')</P>
<P>结果：'10'</P></TD></TR>
<TR>
<TD>fn:matches(string,pattern)</TD>
<TD>
<P>如果 string 参数匹配指定的模式，则返回 true，否则返回 false。</P>
<P>例子：matches("Merano", "ran")</P>
<P>结果：true</P></TD></TR>
<TR>
<TD>fn:replace(string,pattern,replace)</TD>
<TD>
<P>把指定的模式替换为 replace 参数，并返回结果。</P>
<P>例子：replace("Bella Italia", "l", "*")</P>
<P>结果：'Be**a Ita*ia'</P>
<P>例子：replace("Bella Italia", "l", "")</P>
<P>结果：'Bea Itaia'</P></TD></TR>
<TR>
<TD>fn:tokenize(string,pattern)</TD>
<TD>
<P>例子：tokenize("XPath is fun", "\s+")</P>
<P>结果：("XPath", "is", "fun")</P></TD></TR></TBODY></TABLE></DIV>
<DIV>
<H2><A id=anyuri>针对 anyURI 的函数</A></H2>
<TABLE class=dataintable>
<TBODY>
<TR>
<TH style="WIDTH: 40%">名称</TH>
<TH style="WIDTH: 60%">说明</TH></TR>
<TR>
<TD>fn:resolve-uri(relative,base)</TD>
<TD>&nbsp;</TD></TR></TBODY></TABLE></DIV>
<DIV>
<H2><A id=boolean>关于布尔值的函数</A></H2>
<TABLE class=dataintable>
<TBODY>
<TR>
<TH style="WIDTH: 40%">名称</TH>
<TH style="WIDTH: 60%">说明</TH></TR>
<TR>
<TD>fn:boolean(arg)</TD>
<TD>返回数字、字符串或节点集的布尔值。</TD></TR>
<TR>
<TD>fn:not(arg)</TD>
<TD>
<P>首先通过 boolean() 函数把参数还原为一个布尔值。如果该布尔值为 false，则返回 true，否则返回 true。</P>
<P>例子：not(true())</P>
<P>结果：false</P></TD></TR>
<TR>
<TD>fn:true()</TD>
<TD>
<P>返回布尔值 true。</P>
<P>例子：true()</P>
<P>结果：true</P></TD></TR>
<TR>
<TD>fn:false()</TD>
<TD>
<P>返回布尔值 false。</P>
<P>例子：false()</P>
<P>结果：false</P></TD></TR></TBODY></TABLE></DIV>
<DIV>
<H2><A id=datetime>有关持续时间、日期和时间的函数</A></H2>
<P>日期、时间、持续时间的组件提取函数</P>
<TABLE class=dataintable>
<TBODY>
<TR>
<TH style="WIDTH: 40%">名称</TH>
<TH style="WIDTH: 60%">说明</TH></TR>
<TR>
<TD>fn:dateTime(date,time)</TD>
<TD>把参数转换为日期和时间。</TD></TR>
<TR>
<TD>fn:years-from-duration(datetimedur)</TD>
<TD>返回参数值的年份部分的整数，以标准词汇表示法来表示。</TD></TR>
<TR>
<TD>fn:months-from-duration(datetimedur)</TD>
<TD>返回参数值的月份部分的整数，以标准词汇表示法来表示。</TD></TR>
<TR>
<TD>fn:days-from-duration(datetimedur)</TD>
<TD>返回参数值的天部分的整数，以标准词汇表示法来表示。</TD></TR>
<TR>
<TD>fn:hours-from-duration(datetimedur)</TD>
<TD>返回参数值的小时部分的整数，以标准词汇表示法来表示。</TD></TR>
<TR>
<TD>fn:minutes-from-duration(datetimedur)</TD>
<TD>返回参数值的分钟部分的整数，以标准词汇表示法来表示。</TD></TR>
<TR>
<TD>fn:seconds-from-duration(datetimedur)</TD>
<TD>返回参数值的分钟部分的十进制数，以标准词汇表示法来表示。</TD></TR>
<TR>
<TD>fn:year-from-dateTime(datetime)</TD>
<TD>
<P>返回参数本地值的年部分的整数。</P>
<P>例子：year-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))</P>
<P>结果：2005</P></TD></TR>
<TR>
<TD>fn:month-from-dateTime(datetime)</TD>
<TD>
<P>返回参数本地值的月部分的整数。</P>
<P>例子：month-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))</P>
<P>结果：01</P></TD></TR>
<TR>
<TD>fn:day-from-dateTime(datetime)</TD>
<TD>
<P>返回参数本地值的天部分的整数。</P>
<P>例子：day-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))</P>
<P>结果：10</P></TD></TR>
<TR>
<TD>fn:hours-from-dateTime(datetime)</TD>
<TD>
<P>返回参数本地值的小时部分的整数。</P>
<P>例子：hours-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))</P>
<P>结果：12</P></TD></TR>
<TR>
<TD>fn:minutes-from-dateTime(datetime)</TD>
<TD>
<P>返回参数本地值的分钟部分的整数。</P>
<P>例子：minutes-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))</P>
<P>结果：30</P></TD></TR>
<TR>
<TD>fn:seconds-from-dateTime(datetime)</TD>
<TD>
<P>返回参数本地值的秒部分的十进制数。</P>
<P>例子：seconds-from-dateTime(xs:dateTime("2005-01-10T12:30:00-04:10"))</P>
<P>结果：0</P></TD></TR>
<TR>
<TD>fn:timezone-from-dateTime(datetime)</TD>
<TD>返回参数的时区部分，如果存在。</TD></TR>
<TR>
<TD>fn:year-from-date(date)</TD>
<TD>
<P>返回参数本地值中表示年的整数。</P>
<P>例子：year-from-date(xs:date("2005-04-23"))</P>
<P>结果：2005</P></TD></TR>
<TR>
<TD>fn:month-from-date(date)</TD>
<TD>
<P>返回参数本地值中表示月的整数。</P>
<P>例子：month-from-date(xs:date("2005-04-23"))</P>
<P>结果：4</P></TD></TR>
<TR>
<TD>fn:day-from-date(date)</TD>
<TD>
<P>返回参数本地值中表示天的整数。</P>
<P>例子：day-from-date(xs:date("2005-04-23"))</P>
<P>结果：23</P></TD></TR>
<TR>
<TD>fn:timezone-from-date(date)</TD>
<TD>返回参数的时区部分，如果存在。</TD></TR>
<TR>
<TD>fn:hours-from-time(time)</TD>
<TD>
<P>返回参数本地值中表示小时部分的整数。</P>
<P>例子：hours-from-time(xs:time("10:22:00"))</P>
<P>结果：10</P></TD></TR>
<TR>
<TD>fn:minutes-from-time(time)</TD>
<TD>
<P>返回参数本地值中表示分钟部分的整数。</P>
<P>例子：minutes-from-time(xs:time("10:22:00"))</P>
<P>结果：22</P></TD></TR>
<TR>
<TD>fn:seconds-from-time(time)</TD>
<TD>
<P>返回参数本地值中表示秒部分的整数。</P>
<P>例子：seconds-from-time(xs:time("10:22:00"))</P>
<P>结果：0</P></TD></TR>
<TR>
<TD>fn:timezone-from-time(time)</TD>
<TD>返回参数的时区部分，如果存在。</TD></TR>
<TR>
<TD>fn:adjust-dateTime-to-timezone(datetime,timezone)</TD>
<TD>如果 timezone 参数为空，则返回没有时区的 dateTime。否则返回带有时区的 dateTime。</TD></TR>
<TR>
<TD>fn:adjust-date-to-timezone(date,timezone)</TD>
<TD>如果 timezone 参数为空，则返回没有时区的 date。否则返回带有时区的 date。</TD></TR>
<TR>
<TD>fn:adjust-time-to-timezone(time,timezone)</TD>
<TD>如果 timezone 参数为空，则返回没有时区的 time。否则返回带有时区的 time。</TD></TR></TBODY></TABLE></DIV>
<DIV>
<H2><A id=qname>与 QNames 相关的函数</A></H2>
<TABLE class=dataintable>
<TBODY>
<TR>
<TH style="WIDTH: 40%">名称</TH>
<TH style="WIDTH: 60%">说明</TH></TR>
<TR>
<TD>fn:QName()</TD>
<TD>&nbsp;</TD></TR>
<TR>
<TD>fn:local-name-from-QName()</TD>
<TD>&nbsp;</TD></TR>
<TR>
<TD>fn:namespace-uri-from-QName()</TD>
<TD>&nbsp;</TD></TR>
<TR>
<TD>fn:namespace-uri-for-prefix()</TD>
<TD>&nbsp;</TD></TR>
<TR>
<TD>fn:in-scope-prefixes()</TD>
<TD>&nbsp;</TD></TR>
<TR>
<TD>fn:resolve-QName()</TD>
<TD>&nbsp;</TD></TR></TBODY></TABLE></DIV>
<DIV>
<H2><A id=node>关于节点的函数</A></H2>
<TABLE class=dataintable>
<TBODY>
<TR>
<TH style="WIDTH: 40%">名称</TH>
<TH style="WIDTH: 60%">说明</TH></TR>
<TR>
<TD>
<UL>
<LI>fn:name() 
<LI>fn:name(nodeset) </LI></UL></TD>
<TD>返回当前节点的名称或指定节点集中的第一个节点。</TD></TR>
<TR>
<TD>
<UL>
<LI>fn:local-name() 
<LI>fn:local-name(nodeset) </LI></UL></TD>
<TD>返回当前节点的名称或指定节点集中的第一个节点 - 不带有命名空间前缀。</TD></TR>
<TR>
<TD>
<UL>
<LI>fn:namespace-uri() 
<LI>fn:namespace-uri(nodeset) </LI></UL></TD>
<TD>返回当前节点或指定节点集中第一个节点的命名空间 URI。</TD></TR>
<TR>
<TD>fn:lang(lang)</TD>
<TD>
<P>如果当前节点的语言匹配指定的语言，则返回 true。</P>
<P>例子：Lang("en") is true for &lt;p xml:lang="en"&gt;...&lt;/p&gt;</P>
<P>例子：Lang("de") is false for &lt;p xml:lang="en"&gt;...&lt;/p&gt;</P></TD></TR>
<TR>
<TD>
<UL>
<LI>fn:root() 
<LI>fn:root(node) </LI></UL></TD>
<TD>返回当前节点或指定的节点所属的节点树的根节点。通常是文档节点。</TD></TR></TBODY></TABLE></DIV>
<DIV>
<H2><A id=sequence>有关序列的函数</A></H2>
<H3>一般性的函数</H3>
<TABLE class=dataintable>
<TBODY>
<TR>
<TH style="WIDTH: 40%">名称</TH>
<TH style="WIDTH: 60%">说明</TH></TR>
<TR>
<TD>fn:index-of((item,item,...),searchitem)</TD>
<TD>
<P>返回在项目序列中等于 searchitem 参数的位置。</P>
<P>例子：index-of ((15, 40, 25, 40, 10), 40)</P>
<P>结果：(2, 4)</P>
<P>例子：index-of (("a", "dog", "and", "a", "duck"), "a")</P>
<P>Result (1, 4)</P>
<P>例子：index-of ((15, 40, 25, 40, 10), 18)</P>
<P>结果：()</P></TD></TR>
<TR>
<TD>fn:remove((item,item,...),position)</TD>
<TD>
<P>返回由 item 参数构造的新序列 - 同时删除 position 参数指定的项目。</P>
<P>例子：remove(("ab", "cd", "ef"), 0)</P>
<P>结果：("ab", "cd", "ef")</P>
<P>例子：remove(("ab", "cd", "ef"), 1)</P>
<P>结果：("cd", "ef")</P>
<P>例子：remove(("ab", "cd", "ef"), 4)</P>
<P>结果：("ab", "cd", "ef")</P></TD></TR>
<TR>
<TD>fn:empty(item,item,...)</TD>
<TD>
<P>如果参数值是空序列，则返回 true，否则返回 false。</P>
<P>例子：empty(remove(("ab", "cd"), 1))</P>
<P>结果：false</P></TD></TR>
<TR>
<TD>fn:exists(item,item,...)</TD>
<TD>
<P>如果参数值不是空序列，则返回 true，否则返回 false。</P>
<P>例子：exists(remove(("ab"), 1))</P>
<P>结果：false</P></TD></TR>
<TR>
<TD>fn:distinct-values((item,item,...),collation)</TD>
<TD>
<P>返回唯一不同的值。</P>
<P>例子：distinct-values((1, 2, 3, 1, 2))</P>
<P>结果：(1, 2, 3)</P></TD></TR>
<TR>
<TD>fn:insert-before((item,item,...),pos,inserts)</TD>
<TD>
<P>返回由 item 参数构造的新序列 - 同时在 pos 参数指定位置插入 inserts 参数的值。</P>
<P>例子：insert-before(("ab", "cd"), 0, "gh")</P>
<P>结果：("gh", "ab", "cd")</P>
<P>例子：insert-before(("ab", "cd"), 1, "gh")</P>
<P>结果：("gh", "ab", "cd")</P>
<P>例子：insert-before(("ab", "cd"), 2, "gh")</P>
<P>结果：("ab", "gh", "cd")</P>
<P>例子：insert-before(("ab", "cd"), 5, "gh")</P>
<P>结果：("ab", "cd", "gh")</P></TD></TR>
<TR>
<TD>fn:reverse((item,item,...))</TD>
<TD>
<P>返回指定的项目的颠倒顺序。</P>
<P>例子：reverse(("ab", "cd", "ef"))</P>
<P>结果：("ef", "cd", "ab")</P>
<P>例子：reverse(("ab"))</P>
<P>结果：("ab")</P></TD></TR>
<TR>
<TD>fn:subsequence((item,item,...),start,len)</TD>
<TD>
<P>返回 start 参数指定的位置返回项目序列，序列的长度由 len 参数指定。第一个项目的位置是 1。</P>
<P>例子：subsequence(($item1, $item2, $item3,...), 3)</P>
<P>结果：($item3, ...)</P>
<P>例子：subsequence(($item1, $item2, $item3, ...), 2, 2)</P>
<P>结果：($item2, $item3)</P></TD></TR>
<TR>
<TD>fn:unordered((item,item,...))</TD>
<TD>依据实现决定的顺序来返回项目。</TD></TR></TBODY></TABLE>
<H3>测试序列容量的函数</H3>
<TABLE class=dataintable>
<TBODY>
<TR>
<TH style="WIDTH: 40%">名称</TH>
<TH style="WIDTH: 60%">说明</TH></TR>
<TR>
<TD>fn:zero-or-one(item,item,...)</TD>
<TD>如果参数包含零个或一个项目，则返回参数，否则生成错误。</TD></TR>
<TR>
<TD>fn:one-or-more(item,item,...)</TD>
<TD>如果参数包含一个或多个项目，则返回参数，否则生成错误。</TD></TR>
<TR>
<TD>fn:exactly-one(item,item,...)</TD>
<TD>如果参数包含一个项目，则返回参数，否则生成错误。</TD></TR></TBODY></TABLE>
<H3>Equals, Union, Intersection and Except </H3>
<TABLE class=dataintable>
<TBODY>
<TR>
<TH style="WIDTH: 40%">名称</TH>
<TH style="WIDTH: 60%">说明</TH></TR>
<TR>
<TD>fn:deep-equal(param1,param2,collation)</TD>
<TD>如果 param1 和 param2 与彼此相等（deep-equal），则返回 true，否则返回 false。</TD></TR></TBODY></TABLE>
<H3>合计函数</H3>
<TABLE class=dataintable>
<TBODY>
<TR>
<TH style="WIDTH: 40%">名称</TH>
<TH style="WIDTH: 60%">说明</TH></TR>
<TR>
<TD>fn:count((item,item,...))</TD>
<TD>返回节点的数量。</TD></TR>
<TR>
<TD>fn:avg((arg,arg,...))</TD>
<TD>返回参数值的平均数。例子：avg((1,2,3)) 结果：2 </TD></TR>
<TR>
<TD>fn:max((arg,arg,...))</TD>
<TD>返回大于其它参数的参数。例子：max((1,2,3)) 结果：3 例子：max(('a', 'k')) 结果：'k' </TD></TR>
<TR>
<TD>fn:min((arg,arg,...))</TD>
<TD>返回小于其它参数的参数。例子：min((1,2,3)) 结果：1 例子：min(('a', 'k')) 结果：'a' </TD></TR>
<TR>
<TD>fn:sum(arg,arg,...)</TD>
<TD>返回指定节点集中每个节点的数值的总和。</TD></TR></TBODY></TABLE>
<H3>生成序列的函数</H3>
<TABLE class=dataintable>
<TBODY>
<TR>
<TH style="WIDTH: 40%">名称</TH>
<TH style="WIDTH: 60%">说明</TH></TR>
<TR>
<TD>fn:id((string,string,...),node)</TD>
<TD>Returns a sequence of element nodes that have an ID value equal to the value of one or more of the values specified in the string argument</TD></TR>
<TR>
<TD>fn:idref((string,string,...),node)</TD>
<TD>Returns a sequence of element or attribute nodes that have an IDREF value equal to the value of one or more of the values specified in the string argument</TD></TR>
<TR>
<TD>fn:doc(URI)</TD>
<TD>&nbsp;</TD></TR>
<TR>
<TD>fn:doc-available(URI)</TD>
<TD>如果 doc() 函数返回文档节点，则返回 true，否则返回 false。</TD></TR>
<TR>
<TD>
<UL>
<LI>fn:collection() 
<LI>fn:collection(string) </LI></UL></TD>
<TD>&nbsp;</TD></TR></TBODY></TABLE></DIV>
<DIV>
<H2><A id=context>上下文函数</A></H2>
<TABLE class=dataintable>
<TBODY>
<TR>
<TH style="WIDTH: 40%">名称</TH>
<TH style="WIDTH: 60%">说明</TH></TR>
<TR>
<TD>fn:position()</TD>
<TD>
<P>返回当前正在被处理的节点的 index 位置。</P>
<P>例子：//book[position()&lt;=3]</P>
<P>结果：选择前三个 book 元素 </P></TD></TR>
<TR>
<TD>fn:last()</TD>
<TD>
<P>返回在被处理的节点列表中的项目数目。</P>
<P>例子：//book[last()]</P>
<P>结果：选择最后一个 book 元素</P></TD></TR>
<TR>
<TD>fn:current-dateTime()</TD>
<TD>返回当前的 dateTime（带有时区）。</TD></TR>
<TR>
<TD>fn:current-date()</TD>
<TD>返回当前的日期（带有时区）。</TD></TR>
<TR>
<TD>fn:current-time()</TD>
<TD>返回当前的时间（带有时区）。</TD></TR>
<TR>
<TD>fn:implicit-timezone()</TD>
<TD>返回隐式时区的值。</TD></TR>
<TR>
<TD>fn:default-collation()</TD>
<TD>返回默认对照的值。</TD></TR>
<TR>
<TD>fn:static-base-uri()</TD>
<TD>返回 base-uri 的值。</TD></TR></TBODY></TABLE></DIV></DIV></DIV>]]></description>
</item><item>
<title><![CDATA[Delphi获取网卡真实(物理)Mac地址]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=32879</link>
<author>dashee</author>
<pubDate>2008/3/25 21:36:12</pubDate>
<description><![CDATA[<P>网卡的Mac地址是唯一的,可以作为共享软件的注册机制,可以作为客户端软件的唯一标识,但是在Windows操作系统下无论通过NETAPI32.DLL中NetWkstaTransportEnum,还是iphlpapi.dll中的 GetAdaptersInfo方法，都只能获取到注册表保存的Mac地址,因为Windows启动之前将会检测注册表中是否有Mac地址保存，如果没有就会读入真实Mac地址以备后用，否则就使用注册表保存的Mac地址。但是真的没有办法获取到物理的Mac地址吗?计算机的每个设备在操作系统启动后都会分配有一个设备标识,那么通过这个设备标识可以获取任何设备的硬件信息.当然前提是这个设备工作正常并且允许被获取。有些设备在需要ring0才可以操作。不过庆幸的是网卡的物理地址可以在ring3级别被读取。<BR><A><IMG src="http://blogger.org.cn/blog/images/file/zip.gif" border=0></A><A href="http://blogger.org.cn/blog/uploadfile/2009711181811710.RAR" target=_blank>PhysicalMac.rar</A> <BR></P>]]></description>
</item><item>
<title><![CDATA[RemoteAdo 互联网数据库开发中间件]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=29278</link>
<author>dashee</author>
<pubDate>2009/1/15 1:40:21</pubDate>
<description><![CDATA[
<P>RemoteAdo takes the burden of developers and help you fast to build Efficient, secure, 100% Compatible Ado,The three-tier Database applications that can run over the Internet.<BR>We want you to concentrate on coding your application rather than dealing with low level issues like network Data transmission, encryption, or data remote update . <BR>support language: Delphi5,Delphi6,delphi7,delphi2006,delphi2007.<BR><BR>remoteado帮助开发者快速建立高效，安全的，100%兼容ado的，运行于互联网的,三层的数据库应用软件。 <BR>让您专注于应用层编码，而不用处理底层编码的问题，如网络数据传输，加密，或数据远程更新。<BR><BR></P>
<P align=center><IMG src="http://www.remoteado.cn/images/RemoteAdoPrivew.gif" border=0></P>
<P>&nbsp;官方主页：<A href="http://www.remoteado.cn/">http://www.remoteado.cn</A><BR><BR><BR>&nbsp; 技术讨论群:50379320<BR><BR></P>]]></description>
</item><item>
<title><![CDATA[Winsock2 udp协议高速文件传输]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=26841</link>
<author>dashee</author>
<pubDate>2007/7/29 16:01:55</pubDate>
<description><![CDATA[
<P>WinSock2 异步消息模型写的udp文件传输，使用滑窗算法提高发送速度，数据效验保证数据的完整性。内网速度可以达到每秒10M.</P>
<P><IMG src="http://blogger.org.cn/blog/images/file/zip.gif" border=0><A href="http://blogger.org.cn/blog/uploadfile/2007111222027427.RAR" target=_blank>udp.rar</A><A href="http://blogger.org.cn/blog/uploadfile/2007920102245666.RAR" target=_blank></A></P>]]></description>
</item><item>
<title><![CDATA[dll函数动态调用工具1.0（Delphi+asm实现）]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=26415</link>
<author>dashee</author>
<pubDate>2007/7/17 17:10:21</pubDate>
<description><![CDATA[[<A>本人编写]</A> 
<P>&nbsp;&nbsp;&nbsp; DLL函数动态调用工具1.0 使用Delphi + Asm编写，只要知道DLL中函数的名字和参数，就可以对任意Dll的函数进行调用。目前已经可以支持以下类型的参数和返回值：Boolean,Byte,Shortint,Word,Smallint,Longword,Integer,Int64,Float,<BR>Double,String</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>预览图片如下：</P>
<P><IMG style="BORDER-LEFT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-COLOR: #000000; BORDER-RIGHT-COLOR: #000000" src="http://blogger.org.cn/blog/uploadfile/2007717171419454.PNG" border=0><BR></P>
<P>下载地址 <IMG src="http://blogger.org.cn/blog/images/file/zip.gif" border=0><A href="http://blogger.org.cn/blog/uploadfile/20071121112524471.RAR" target=_blank>DLL_RT.rar</A></P>
<P>&nbsp;</P>]]></description>
</item><item>
<title><![CDATA[【企业应用开发平台】路向何方？]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=25209</link>
<author>dashee</author>
<pubDate>2007/6/1 16:24:30</pubDate>
<description><![CDATA[<A><FONT size=2>　</FONT></A><A><FONT size=2>　</FONT></A><FONT size=2> </FONT>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">(*</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">在此为避免造成对某些企业的攻击性言论，本文内容均不列举相关公司名称。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN lang=EN-US><FONT size=2>&nbsp;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在如今的软件行业，向平台进军已经是每个软件开发商宣传的口号，基本上每一家开发商都号称自己拥有软件开发平台，平台概念就和炒</SPAN><SPAN lang=EN-US>ERP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一样被炒烂了。更离奇的是对平台的自我评价</SPAN><SPAN lang=EN-US>(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或许该称为吹嘘</SPAN><SPAN lang=EN-US>)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">都非常类似，总结一些宣传的比较“好”的归纳如下：</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=2><SPAN lang=EN-US>1</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、快速开发：开发速度比手工</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">写代码提高</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">xx</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">倍，应用系统开发只需要</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">xx%</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">的代码量或者可以零代码开发；</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">2</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">、面向构件，工厂模式：开发软件可以像汽车组装流水线一样方便和快捷；</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">3</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">、扩展性：灵活的业务配置和扩展能力；</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">4</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">、低成本，易于维护；</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">5</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">、平台的设计能力：平台可以根据用户的需求，很灵活的设计出符合用户要求的系统。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">6</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">、商业智能</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">(BI)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">、划时代意义、</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">ERP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">的第三次浪潮（</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">ERP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">都没搞清楚），诸如此类的陈词滥调。</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><FONT size=2>&nbsp;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">这些宣传真的是非常到位，就此而言，如果平台产品真的实现了这些目标，我感觉真的是企业之福了，可是实际情况是怎样呢？下面先了解一下现有平台的分类，根据现有的平台厂商调查，大致分为如下四类：</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo8; tab-stops: list 39.0pt"><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">1、<SPAN style="FONT: 7pt 'Times New Roman'"><FONT face=宋体>&nbsp; </FONT></SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">[</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">恶搞类</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">]</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">平台：这类平台大部分是在</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">word,excel</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">里面写了几个宏文件，连系统都谈不上，愣说自己是平台，不说也罢。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo8; tab-stops: list 39.0pt"><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">2、<SPAN style="FONT: 7pt 'Times New Roman'"><FONT face=宋体>&nbsp; </FONT></SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">[</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">设置类</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">]</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">平台：此类平台以应用为基础，设置一些开关变量，以适应不用的情况和场合，可以说让应用的灵活性有一定提高。可是再灵活也只能称为应用，而且扩展性非常差。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo8; tab-stops: list 39.0pt"><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">3、<SPAN style="FONT: 7pt 'Times New Roman'"><FONT face=宋体>&nbsp; </FONT></SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">[</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">应用转行类</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">]</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">平台：这是比较成功的一类，暂且称只为平台，以行业应用为基础，封装了行业</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">或典型企业</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">的诸多相对通用的业务逻辑，而且业务逻辑是对某个行业经过深刻研究后才能得到的结果。可是只能在行业内部应用，增加业务逻辑模块仍然需要编写代码，如果开发新的行业的应用，等于从零做起。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo8; tab-stops: list 39.0pt"><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">4、<SPAN style="FONT: 7pt 'Times New Roman'"><FONT face=宋体>&nbsp; </FONT></SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">[</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">协同类</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">]</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">平台：这是比较成功而且是见的最多的一种平台</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">具有应用转行平台的所有优点和缺点，但是其局限性要小的多</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">，以</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">OA</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">或者</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">ERP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">为基础，以工作流为核心。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt"><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><FONT size=2>&nbsp;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">纵观这些平台，再看平台的宣传，平台解决了什么问题？其实这些宣传正是他们没有解决的问题。那么问题出在哪里？其实最重要的还是平台软件厂商的没有认识清楚平台的概念，还没有从应用的开发当中解放出来，不忍丢下现有的行业应用。那么这就导致了这些平台产品的局限性，同时制约了本身的技术进步和思想进步，最终将会沦为与传统行业应用软件开发商相同的层次，到时候只能宣告：向平台进军失败。或者说这些行业软件商不具备开发平台的条件。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">在此插一句：为什么国内</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">ERP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">的实施失败的案例很多？</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">做了几年的</SPAN><SPAN lang=EN-US>ERP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的软件开发商都不知道何为</SPAN><SPAN lang=EN-US>ERP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，开发商自己都不用还要高价卖给客户，这能成功才怪。</SPAN><SPAN lang=EN-US>ERP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是改变工作方式、合理利用资源，而大部分开发商和企业只是将其认为是软件，是数据库应用，暂且不评论</SPAN><SPAN lang=EN-US>ERP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">软件的质量。或许是开发商的售前鼓吹、或许是企业对</SPAN><SPAN lang=EN-US>ERP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">期望太高，</SPAN><SPAN lang=EN-US>ERP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的实施费用是相当昂贵的，少则</SPAN><SPAN lang=EN-US>10</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">万</SPAN><SPAN lang=EN-US>20</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">万，多则几千万。企业花了高价来实施</SPAN><SPAN lang=EN-US>ERP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">产品，却收效甚微，甚至出现影响现有工作的情况，大多是因为企业管理人员对</SPAN><SPAN lang=EN-US>ERP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的错误认识或者</SPAN><SPAN lang=EN-US>ERP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">软件本身就不能满足现有需求。软件满足不了需求最好、有</SPAN><SPAN lang=EN-US>BUG</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">更好，我们提供升级，提供服务啊。现在都在卖服务不是，好像有了服务就是好软件了，那么修改</SPAN><SPAN lang=EN-US>BUG</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也要用户来买单，还美其名曰是服务，我倒！开发商钱赚到手了？那么</SPAN><SPAN lang=EN-US>ERP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的疗效去了哪里？深思吧</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><FONT size=2>&nbsp;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">言规正传，平台软件到底能不能满足企业信息化建设的需求？回答是肯定的，但不是上述几类平台能解决的。一个能满足企业信息化建设的平台应该是什么样子？其实就是实现上述平台所宣传的目标，那么这个目标如何实现，关键还是定位问题。还得用一下生产汽车的例子：其实组装汽车并不复杂，因为我们是用制造好的零部件组装，所以显得很容易。软件也是如此，因为平台里面集成了了很多业务逻辑和功能模块，所以平台都号称零代码或者面向构件，因为他们忽略了最重要的环节，也就是这些业务逻辑和功能模块的的开发，这才是问题的关键，也是为什么平台没有实现所宣传的目标的原因。软件开发与组装汽车不同，因为汽车零部件都有相应的标准，而且都是批量生产，具有模式化；软件则不同，没有办法来统一，需求千变万化，如果拿做车的路子来套软件生产，无疑是死路一条。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">如何改善这个问题？有人说</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">SOA</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">，可以灵活的实现业务基础架构，这里不再多说</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">SOA,</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">从它一开始到现在所走的路，自己是死是活都不一定，可以去</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">CSDN</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">搜索相关文章自己感受一下。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><FONT size=2>&nbsp;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">那么现在需要什么样的平台？我认为是汽车制造零部件的工厂，也就是快速构建功能模块的平台。这样的平台与行业应用没有直接关系，只是能快速根据图纸生产零件，当然能组装成产品更好。这必须要遵循三个原则：</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo9; tab-stops: list 39.0pt"><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">1、<SPAN style="FONT: 7pt 'Times New Roman'"><FONT face=宋体>&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">在编程语言上层实现。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 18pt"><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">写代码虽然灵活，可随心所欲，毕竟效率很低，修改起来也困难。可是不写代码可能灵活性尽失，又要走前面一些平台的老路。其实程序员都知道，写代码也无非那几招，数据输入（数据采集，合法性验证）</SPAN><SPAN style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"> </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">、逻辑处理（条件判断、循环遍历、递规调用）、执行处理（数据运算、数据库操作）、显示处理（界面显示、报表），很符合</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">MVC</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">思想。如果这些处理都不再需要编码，那么会节省大量的时间。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo9; tab-stops: list 39.0pt"><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">2、<SPAN style="FONT: 7pt 'Times New Roman'"><FONT face=宋体>&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">与行业应用无关。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 18pt"><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">因为我们是要做平台，是将需求转换为思维再转换为应用系统。当然这个平台不能说只能做进销存，或者只能做</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">OA</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">。它应该能更灵活的做信息化应用。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo9; tab-stops: list 39.0pt"><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt">3、<SPAN style="FONT: 7pt 'Times New Roman'"><FONT face=宋体>&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">能快速将思维图纸转换为业务模型。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 18pt"><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">思维来源于需求，对于有行业经验的业务人员，根据需求产生思维意识的解决方案是很容易的事，但是实践到产品开发上面还要经过大量的时间，概要设计，详细设计，模块划分等等。那么如果平台可以给业务人员一个展示才华的机会，可以让他用我们的平台来实现他的思维，那么这个环节将省去大量的劳动力和宝贵的时间。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 18pt"><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><FONT size=2>&nbsp;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312">当然，平台的稳定性、安全性、可部署性、是否可以在满足互联网环境等等问题，都要平台设计当中考虑，这不是本文的范围，不加详细说明。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: &#718;&#805;_GB2312; mso-bidi-font-size: 10.5pt"><FONT size=2>&nbsp;<o:p></o:p></FONT></SPAN></P><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: &#718;&#805;_GB2312; mso-hansi-font-family: &#718;&#805;_GB2312; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><FONT size=2>本文仅代表本人观点，欢迎批评和交流。</FONT></SPAN>]]></description>
</item><item>
<title><![CDATA[古墓长明灯永不熄灭之谜]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=22948</link>
<author>dashee</author>
<pubDate>2007/2/28 16:17:47</pubDate>
<description><![CDATA[<P>原文地址<A href="http://ks.cn.yahoo.com/question/?qid=1307022801475&amp;source=ysearch_ks_question_zjknowledge">http://ks.cn.yahoo.com/question/?qid=1307022801475&amp;source=ysearch_ks_question_zjknowledge</A></P>
<P>世界各地都有盗墓者，他们想尽千方百计，到古墓中去偷窃埋藏了千百年的金银珠宝，古墓往往与世隔绝，使宝物历经千年还保存得相当完好。在这终年不见天日的古墓中，盗墓者通常会认为里面应该是伸手不见五指。可是他们有时却惊恐地发现，在一些古墓的拱顶上，一盏明灯霰射着幽幽的光芒。 <BR>神灯屡次现身<BR><BR>公元527年，叙利亚处于东罗马帝国的统治，当时在叙利亚境内的东罗马士兵们曾发现，在一个关隘的壁龛里亮着一盏灯，灯被精巧的罩子罩着，罩子好像是用来挡风的。根据当时发现的铭文可知，这盏灯是在公元27年被点亮的。士兵们发现它时，这盏灯竟然已经持续燃烧了500年！遗憾的是，野蛮的士兵们很快毁坏了它，这盏神秘的灯的原理已为人知晓。<BR><BR>一位希腊历史学家曾记录了在埃及太阳神庙门上燃烧着的一盏灯。这盏灯不用任何燃料，亮了几个世纪，无论刮风下雨，它都不会熄灭。据罗马神学家圣·奥古斯丁描述，埃及维纳斯神庙也有一盏类似的灯，也是风吹不熄，雨浇不灭，真有点像从《西游记》所述的火焰山上寻找的火种。<BR><BR>公元1400年，人们发现古罗马国王之子派勒斯的坟墓里也点燃着这样一盏灯，这盏灯已持续燃烧了2000多年！风和水都对它无可奈何，熄灭它的唯一的方式就是抽走灯碗里那奇怪的液体。这难道是神话中的阿拉丁的神灯吗？<BR><BR>公元1534年，英国国王亨利八世的军队冲进了英国教堂，解散了宗教团体，挖掘和抢劫了许多坟墓。他们在约克郡挖掘罗马皇帝康斯坦丁之父的坟墓时，发现了一盏还在燃烧的灯，康斯坦丁之父死于公元300年，这意味着这盏灯燃烧了1200年！<BR><BR>公元1540年，罗马教皇保罗三世在罗马的亚壁古道(一条古罗马大道)旁边的坟墓里发现了一盏燃烧的灯。这个坟墓据说是古罗马政治家西塞罗的女儿之墓，西塞罗的女儿死于公元前44年。显然，这盏灯在这个封闭的拱形坟墓里燃烧了1584年！更有趣的是，坟墓里的尸体浸在一种未知的液体中，看起来像是刚刚才死去一样，原来古人用这种液体来保存尸体。<BR><BR>这些长明灯只是全世界所有发现中的几例。考古记录显示，这种古庙灯光或古墓灯光的现象在世界各地都有发现，例如印度、中国、埃及、希腊、南美、北美等许多拥有古老文明的国家和地区，就连意大利、英国、爱尔兰和法国等地也出现过。<BR><BR>古人的魔咒<BR><BR>如此神奇的长明灯为何没有保留到今天？古代人对所发现的长明灯不够重视吗？其实古代人的确保存这些神灯，可是很奇怪，上述这些灯一旦现身，就会以某种方式很快毁坏掉，例如被野蛮的掠夺者和挖掘者毁坏。难道古人在利用某种魔咒来保守他们的技术秘密？<BR><BR>17世纪中期，在法国的格勒诺布尔，一位叫杜·普瑞兹的瑞士士兵偶然发现了一个古墓的入口。费尽九牛二虎之力进入古墓后，这个年轻人并没有发现任何他想要的金银珠宝。不过，让他更惊讶的是，在这与世隔绝的坟墓，竟然还有一盏正在燃烧的玻璃灯，惊异之余，他把这盏神秘的灯带出了坟墓，送给了修道院，修道院里的僧侣们同样目瞪口呆，这盏灯至少已经燃烧了千年。他们像宝一样保存着它，可惜的是，几个月后，一位老年僧侣竟然不小心把它碰掉在地上，摔碎了。<BR><BR>另一件趣事发生在英格兰，一个神秘的不同寻常的坟墓被打开了。打开这个坟墓的人发现，在坟墓拱顶上悬挂着一盏灯，照亮了整个坟墓。当这个人往前走时，地板的一部分随着他的走动在颤动。突然，一个身着盔甲、原本固定的雕像开始移动，举着手中的某种武器，移动到灯附近，伸出手中的武器击毁了这盏灯。这个宝贵的灯就这样被毁坏了。<BR><BR>古人的目的一次又一次地达到了：灯的奥秘被严密地保守着，再也没有后人知道。</P>
<P>参考:blog凤凰</P>
<DIV class=posttime>贡献时间：2007-02-28 11:04:22</DIV>
<P><BR>长明灯，谁的杰作？<BR><BR>这种不寻常的灯代表着远古的高科技吗？我们的祖先如何出发明这些永不熄灭的灯？<BR><BR>不熄之火最早出现在各种神话故事中。据说这种不熄的火光是天宫之火，是普罗米修斯把它偷偷带给了人类。总之，人类由于机缘凑巧，知道了这个秘密。也许是某位先哲把它传给了人类，就像神农氏教会了人类种植农作物，有巢氏教会了人类建造住所。一旦人类得知如何制造永久的灯光时，消息不胫而走，全世界的庙宇都想装上这种永不熄灭的灯。<BR><BR>根据古埃及、希腊和罗马等地的风俗，死亡的人也需要灯光驱逐黑暗，照亮道路。因此，在坟墓被密封前，习惯于放一盏灯在里面。而富贵荣华之家就要奢侈一些，放上一盏不熄的灯，永远为死者照亮。千百年以后，当这些坟墓的拱顶被打开时，挖掘者发现里面的灯还在好好地燃烧着。<BR><BR>制造不熄的灯，古人是否轻车熟路？并非如此，一般平民的墓穴里都并没有这种灯。不过，并不富贵奢华的古代炼金术士的墓穴里也会出现这种灯。例如，公元1610年，一位叫洛斯克鲁兹的炼金术士的坟墓在他死后120年被掘开，人们发现里面也亮着这样一盏不熄的灯。于是人们怀疑古时的炼金术士和铸工懂得制造这种长明灯的技术。难道不熄的灯光与金属有关？<BR><BR>长明灯不熄之谜<BR><BR>遗憾的是，这种不熄的灯现在再无踪影，那些过去记载的见闻是不是真实的呢？永不熄灭的灯很自然成为学术界争论的话题。一部分人认为，世界各国有关长明灯的记录足以让人肯定，确实存在这样一种不熄的灯，或者长久燃烧的灯，只是技术失传，我们现在的人理解不了。中世纪时期的大部分有识之士认为，确实存在这种不熄的灯，并且认为这种灯具有某种魔力。另一部分人则认为，虽然有那么多有关长明灯的记录，但现实中并没有一盏长明灯摆在众目睽睽之下，而且这种灯的 能量问题严重违背能量守恒定律，因此这种不熄的灯应该不存在。还有许多人认为，这也许是古人在书中开的一种聪明的玩笑。<BR><BR>如果长明灯真的存在，那么它们的能量来源是什么？或者它们并不是永久长明的，但千百年长久地燃烧，若是普通的煤油灯，就要耗费多少万升的煤油。难道它们的燃料是能够不断补充的？中世纪以后，许多思想家曾经试图用补充燃料的方式制造一盏长明灯，即在燃料将耗尽时，快速补充燃料。但是没有一个实验成功过。即使利用现代的燃料连续补充技术，制造一个千百年长明的灯，也不太现实。<BR><BR>还有一些人大胆推测，这种灯就是使用电的灯，灯碗里那看似燃料的液体可能就是用来导电的汞，所以“燃料”看起来永不见少，这种用电的灯也不会怕风吹雨打。古时的希伯来人就秘密地保守着现代叫做电的技术。据描述，13世纪，一个叫杰彻利的法国人拥有一盏灯，没有任何油或灯芯。通常灯被放置在他房间的前廊，每一个人都可以看见。当杰彻利被问及灯为什么会亮时，他总是微微一笑：“保密！”杰彻利做过许多与电有关的实验。为了保护自己不被仇家侵犯，他发明了一种放电按钮，能够放出一股电流到门上的铁把手。当杰彻利按下按钮时，闪亮的蓝色火花就会突然冒出来。<BR><BR>如果神灯真的是用电能点亮，那么电能是如何产生的？难道庙宇或古墓中安装有能够发电的机器吗？要做到一劳永逸地不断供应电能，只有窗体底端<BR><BR>太阳能发电可以做到。神灯真的是利用太阳能发电吗？古人似乎不愿告诉我们秘诀。</P>]]></description>
</item><item>
<title><![CDATA[关于玛雅人2012年说法的解释[转载]]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=22945</link>
<author>dashee</author>
<pubDate>2007/2/28 15:15:47</pubDate>
<description><![CDATA[<P>最近看到了又有些人说到2012年是世界的末日。为什么？因为考古学家们说的玛雅文明的预言。预言中说到公元2012年地球会发生完全的变化，进入新的时代。但是我要说的是玛雅人说的进入新的时代不是说世界要毁灭了，他们有我们不能理解的科学作为根据提出预言。我们不要认为是世界末日，因为玛雅人也没有预言2012年是世界末日。&nbsp;<BR><BR>玛雅的金字塔可说是仅次于埃及金字塔的最出名的金字塔建筑了。他们看起来不太一样，埃及金字塔是金黄色的，是一个四角锥形，经过几千年风吹雨打已经有点腐蚀了。玛雅的金字塔比较矮一点，也是由巨石堆成，石头是灰白色的，整个金字塔也是灰白色的，他不完全是锥形的，顶端有一个祭神的神殿。玛雅金字塔四周各有四座楼梯，每座楼梯有九十一阶，四座楼梯加上最上面一阶共三六五阶（91x4＋1=365），刚刚好是一年的天数。 <BR><BR>玛雅人非常重视天文学的数据，他的建筑里处处都是这些关于天体运行规律的数字。除了阶梯数目外，金字塔四面各有五十二个四角浮雕，表示玛雅的一世纪五十二年。 <BR><BR>玛雅的天文台也是充满特色的建筑物。以今天的眼光来看，不论是在功能上或外观上，玛雅的天文台与现在的天文台十分类似。以凯若卡天文观测塔为例，建筑在巨大而精美的平台上，有小的台阶一阶阶地通往大平台。与现在的天文台有些相似，也是一个圆筒状的底楼建筑，上面有一个半球型的盖子，这个盖子在现在天文台的设计是天文望远镜伸出的地方。底楼的四个门刚好对准四个方位。这个地方的窗户与门廊形成六条连线，其中至少三条是与天文相关的。其一与春（秋）分有关，另两个与月亮活动有关。 <BR><BR>这座凯若卡天文观测塔是遗迹中最大的天文观测塔，其它遗迹也有类似的建筑。他们在位置上都与太阳及月亮对齐，近年来考古学家认为古时候玛雅的天文学家建立了一个地区性的天文观测网。 <BR><BR>这些建筑物以今天的角度看也足以令人称奇。以玛雅金字塔来说，巨大的石块如何切凿，搬运到丛林的深处，再把一块块十几吨的石块堆积起来，堆高至七十米处，要是没有先进的交通工具及起重设备，是难以完成这个任务的。而生活在丛林里的民族，为什么要花这么大的功夫，建立一个天文观测网？历史记载，望远镜是伽利略十六世纪才发明的，接着才有大型天文台的出现，而天文观测网的观念是近代才出现的，这样的观念可说是相当先进。由此可以肯定的是，玛雅人当时的科学与今天相比毫不逊色。 <BR><BR>失传已久的天文数字与历法 <BR><BR>我们从小学的阿拉伯数字一定没有人会觉得很了不起吧！不过就是1、2、3、4、5、6、7、8、9、0这十个数字的排列。也许大家不知道，这个0的观念是阿拉伯人从印度带到欧洲的，古时候欧洲人没有这么简单的数字概念。希腊人擅于发明，但他们必须用字母来写数目；罗马人虽然会使用数字，但只能用图解方式以四个数字来代表。 <BR><BR>玛雅人使用一点、一横、与一个代表零的贝形符号来表示数字 <BR>考古学家研究玛雅人的数字系统时，发现他们的数字表达与算盘的算珠有异曲同工之妙。他们使用三个符号：一点、一横、一个代表零的贝形符号──就可以表示任何数字。类似的原理今天被应用在电脑的“二进位制”上。 <BR>玛雅的历法非常复杂，有以二六○日为周期的卓金历，六个月为周期的太阴历，二十九日及三十日为周期的太阴月历，三六五日为周期的太阳历等，不同周期的不同历法。我们用现代天文观测知道一年是三六五&amp;#1836;二四二二天，而玛雅人已测出一年是三六五&amp;#8226;二四二○天。 <BR><BR>玛雅人运算出来著名的金星公式： <BR>（月球）20x13=260　260x2x73=37,960 <BR>（太阳）8x13=104 　104x5x73=37,960 <BR>（金星）5x13=65　 65x8x73=37,960 <BR><BR>这些公式的意思是说，每一种周期经过三万七千九百六十天后，便会相遇在一条直线上，而根据玛雅人的神话传说，那时“神祉”就会到一处宁静的休息处所。 金星历年是指金星环绕太阳一周所需要的时间，玛雅人费了三八四年的观察期，算出五八四天的金星历年（他们发觉金星在八个地球年中恰恰走了五圈，然后再重复循环，便用五除八个地球年的天数──二九二○──得出五八四天），而今日计算则为五八三&amp;#1837;九二天，误差率每天不到十二秒，每月只有六分钟。以这么高的精确度计算出金星历来，实在是件不可思议之事。 <BR><BR>玛雅计日的单位出奇的大，考古学家已经知道的数值为： <BR><BR>二○日为一维纳尔 <BR>一八维纳尔为一屯等于三六○日 <BR>二○屯为一卡屯等于七二○○日 <BR>二○卡屯为一巴克屯等于一四万四○○○日 <BR>二○巴克屯为一匹克屯 等于二八八万日 <BR>二○匹克屯为一卡拉布屯 等于五七六○万日 <BR>二○卡拉布屯为一金奇耳屯 等于一一亿五二○○万日 <BR>二○金奇耳屯为一阿拉屯等于二三○亿四○○○万日 <BR><BR>为何要发展出这么大的数字？这个数字单位大到即使是现代人也用不到。以今天的科学眼光来看，这么大的数字也许只有一种学科会用到，那就是天文学。天文学家常常要用很大的数字单位表示星系间的距离，只有天文学的“天文数字”才会这么大。 <BR><BR>历法中的玛雅预言 <BR><BR>在玛雅历法中，有一个叫“卓金历”的历法，这种历法以一年为二六○天计算，但奇怪的是，在太阳系内却没有一个适用这种历法的星球。依照这种历法，这颗行星的大致位置应在金星和地球之间。 <BR><BR>“卓金历”中的这个符号，表达了玛雅人所描述的银河核心，并与我们所熟知的太极阴阳图非常相似。 <BR><BR>有玛雅学者认为，这个叫“卓金历”的历法记载了“银河季候”的运行规律，而据“卓金历”所言：我们的地球现在已经在所谓的“第五个太阳纪”了，这是最后一个“太阳纪”。在银河季候的这一段时期中，我们的太阳系正经历着一个历时五千一百多年的“大周期”。时间是从公元前三一一三年起到公元二○一二年止。在这个“大周期”中，运动着的地球以及太阳系正在通过一束来自银河系核心的银河射线。这束射线的横截面直径为五一二五地球年。换言之，地球通过这束射线需要五一二五年之久。 <BR><BR>玛雅人把这个“大周期”划分为十三个阶段，每个阶段的演化都有着十分详细的记载。在十三个阶段中每一个阶段又划分为二十个演化时期。每个时期历时约二十年。 <BR><BR>这样的历法循环与中国的“天干”、“地支”十分相似，历法是循环不已的，而不是像西元纪年一直线似的没有终点。他们认为自创世以来，地球已经过四个太阳纪。 <BR><BR>当太阳系诸星体经历完了这束银河射线作用下的“大周期”之后，将会发生根本的变化，玛雅人称这个变化为“同化银河系”。 <BR><BR>从玛雅预言中的“大周期”的时间上看，到今天已经接近尾声了。从一九九二年到二○一二年这二十年的时期中，我们的地球已进入了“大周期”最后阶段的最后一个时期。玛雅人认为这是“同化银河系”之前的一个十分重要的时期。他们称之为“地球更新期”。在这个时期中，地球要完全达到净化。而在“地球更新期”过后地球将走出银河射线，进入“同化银河系”的新阶段。 <BR><BR>我们不知道‘地球更新期’‘同化银河系’的概念是说什么。世界是有一天迟早要毁灭的但不是在2012年的。可能毁灭是从那时开始吧？</P>]]></description>
</item><item>
<title><![CDATA[基于互联网的数据传输解决方案 DbAnyWhere-Java 平台介绍]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=20425</link>
<author>dashee</author>
<pubDate>2006/11/30 16:39:26</pubDate>
<description><![CDATA[<A></A>
<P>　　DbAnyWhere-Java平台用于解决c/s程序在互联网数据访问的问题，可以说是b/s和c/s的一种结合形式，它更类似于数据库访问引擎，是比较理想的互联网三层应用解决方案。<BR><STRONG>平台环境</STRONG>:<BR>　　服务端为标准j2ee Web应用程序，可以方便的部署在tomcat,resin等应用服务器下，不需要二次开发，可以配合客户端组件支持java功能扩展。<BR>客户端开发使用delphi组件，类似于ado开发模式，以至于您原来用ado开发的应用程序可以很轻松的移植到这个平台下来。<BR><STRONG>数据传输</STRONG>:<BR>　　传输采用http协议传输压缩二进制数据，因为采用http协议，所以没有防火墙限制问题，数据库并不暴露在公网上面，所以更安全。<BR><STRONG>数据库支持</STRONG>:<BR>　　目前支持sqlserver2000，陆续支持oracle,db2,mysql等等<BR><STRONG>跨平台支持</STRONG>:<BR>　　服务端为j2ee应用，所以服务器端天生可以支持跨平台。客户端为delphi组件，由于delphi有linux版本(Kylix)，所以也支持跨平台。<BR><STRONG>性能</STRONG>:<BR>　　数据访问形式采用http无状态连接方式，也就是模拟b/s的访问，所以不需要实时占用tcp连接 或者 udp 连接，因此服务端可以负载更多的用户；并且服务端进行了优化处理，服务端不需要专业的服务器，普通pc机就可以(当然如果数据量很大、并发量也高，还是建议采用高性能的机器)。</P>
<P>目前已进入测试阶段<BR>测试环境：</P>
<P>线路:网通adsl(下行2M,上行512K),由于跨网响应比较慢，所以电信用户会相对慢很多。<BR>服务器环境<BR>硬件:AMD Sempron 2800+ ,内存 512M<BR>数据库: sqlserver2k<BR>j2ee服务器: resin</P>
<P>测试数据为 50000条记录</P>
<P>demo下载地址 <A href="http://catula.vicp.net/demo.rar">http://catula.vicp.net/demo.rar</A></P>
<P>欢迎下载测试 [附demo的代码]，下载和测试时间：每天 9:00 - 17:00。</P>
<P>版权所有:通达科技发展有限公司<BR>技术咨询QQ:67189250,113017429</P>]]></description>
</item><item>
<title><![CDATA[参与开发 DbAnyWhere-Java 的初衷]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=20424</link>
<author>dashee</author>
<pubDate>2006/11/30 16:32:23</pubDate>
<description><![CDATA[<A><FONT size=3></FONT></A>
<P><FONT size=3>　　刚刚毕业的时候，互联网还不是很发达。那个时候我最喜欢C和delphi，写程序是我的兴趣和爱好，为了生活，当然更多的是因为我的爱好，在朋友的介绍下进入了一家用Delphi做应用软件的公司。delphi确实不错，做什么程序都很方便，当然现在也没有扔下。网络版的软件大部分是局域网内使用，ODBC,BDE,ADO都不错，方便，跟开发单机软件没什么不同；后来Borland的三层架构midas、微软的com/com+，当然还有很多。无疑这些技术在网络版软件中都曾经产生了巨大的价值,也造就了很多优秀的产品和技术高手。后来互联网越来越热，越来越普及，当时出于机会和热情，投身到互联网的开发当中，也就是B/S模式的开发。在经历了cgi,asp,php,java的实践，最终选择了java，因为跟我最喜欢的C很像啊.结果java一搞就是5年,java真是好东西,各种先进的思想、框架层出不穷。5年？不是一个很短的时间，如果只是研究别人的技术，那岂不是太没有水准了！自己也写框架，搞开源，风风火火，一腔热忱，构建了我的MVC思维框架 jideation,本来是准备今年9月份发布的,可是因为种种原因，迟迟没有发布...... </FONT></P>
<P><FONT size=3>　　开发了这么久的b/s,我不得不承认其优势很大，尤其是在互联网上，显然ado,midas,com效果都不是很理想，但是在有效数据传输、界面灵活性、用户易操作上，也暴露出严重的不足。以至于现在的ajax技术，努力的来弥补这些问题，虽然解决了一部分问题，但是问题仍然很多.....归根结底是因为ajax是基于JavaScript和dhtml,而JavaScript本身必须要靠浏览器来执行，这样就能力有限，没有办法对数据做进一步的处理。所以一直在思考如何将这两者的优势结合起来，鉴于这样的理想，而且dbanywhere的作者也有同样的思路，不谋而合，最终投入到dbanywhere-java的开发当中。</FONT></P>]]></description>
</item><item>
<title><![CDATA[我不是你的儿子----谈java类调用机制]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=20394</link>
<author>dashee</author>
<pubDate>2006/11/29 11:20:59</pubDate>
<description><![CDATA[<P>&nbsp;&nbsp;&nbsp; 在java应用当中,我们经常遇到这样一种情况，我们不希望我们的class被其他应用程序调用，<BR>我们可以通过sun.reflect.Reflection来实现。下面来看这样一个故事。</P>
<P>从前有两个父亲，Tom 和 Jack ，Tom有一个儿子TomDong，可是Jack想要TomDong当自己的儿子。TomDong由于从小就没有见过父亲，没有办法辨认。Tom很伤心，于是去求太阳神sun想个办法，sun果然厉害，使用魔法将记忆加给了TomDong,于是TomDong就有了辨认父亲的能力。下面让我们来看一下sun的魔法是<BR>怎样做到的：</P>
<P><BR>//父亲Tom<BR>public class Tom <BR>{<BR>&nbsp;&nbsp;&nbsp; public Tom() <BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; public TomDong getChild()<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new TomDong();<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>//父亲Jack<BR>public class Jack <BR>{<BR>&nbsp;&nbsp;&nbsp; public Jack() <BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; public TomDong getChild()<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new TomDong();<BR>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <BR>}</P>
<P>//没有记忆的Tom的儿子TomDong<BR>public class TomDong <BR>{<BR>&nbsp;&nbsp;&nbsp; public TomDong() <BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("你好父亲!");<BR>&nbsp;&nbsp;&nbsp; }<BR>}</P>
<P>//测试<BR>public class Test<BR>{<BR>&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tom tom=new Tom();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Tom get TomDong:");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tom.getChild();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Jack jack=new Jack();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Jack get TomDong:");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jack.getChild();<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>运行 输出结果：<BR>Tom get TomDong:<BR>父亲你好!<BR>Jack get TomDong:<BR>父亲你好!<BR>----------------------------------------------<BR>显然 TomDong 不认识自己的父亲</P>
<P>下面是被sun加了记忆的TomDong</P>
<P>//有记忆的Tom的儿子TomDong<BR>public class TomDong {<BR>&nbsp;&nbsp;&nbsp; public TomDong() <BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Reflection.getCallerClass(2) == Tom.class)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("父亲你好!");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("坏蛋,我不是你的儿子!");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>运行Test,输出结果</P>
<P>Tom get TomDong:<BR>父亲你好!<BR>Jack get TomDong:<BR>坏蛋,我不是你的儿子!</P>
<P>----------------------------------------------</P>
<P><BR>本文主要讲解了 sun.reflect.Reflection，0 是getCallerClass自身，1 是class自身，2 是class的调用方，3 根据类加载机制而定<BR>如有不明之处，qq 联系我。</P>
<P>尚兴林</P>]]></description>
</item><item>
<title><![CDATA[Web2.0概念之企业分析]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=15551</link>
<author>dashee</author>
<pubDate>2006/6/16 14:32:53</pubDate>
<description><![CDATA[<P>&nbsp;&nbsp;&nbsp; 在Web2.0概念依旧沸沸扬扬的今天，企业CEO的大脑越来越清晰了，Web2.0并不是高科技，不是我们拥有了它就能在互联网的竞争中驰骋。<BR><BR>&nbsp;&nbsp;&nbsp; 很多技术人员对此概念不屑一顾，因为这些都是平时的普通技术，不过是对技术的总结，怎么能这么炒做，认为企业很幼稚，更是反对把Web2.0戴上 "互联网web2.0时代"的大帽子。不错，这是事实，对于我们搞技术的来说，这确实很幼稚。Web2.0是一个最最尊重用户的概念，用户的地位是第一位的。其实没有web2.0，我们的产品一样要这样设计，一样要方便用户。用户第一是任何产品成功的关键，比如微软，就是以友好的用户界面来赢得了用户，赢得了市场。<BR><BR>&nbsp;&nbsp;&nbsp; web2.0能不能盈利？。对于企业，依靠Web2.0这一概念，可以包装、炒作、营销自己的产品，可以融到巨资，可以缩短项目周期，可以起到宣传作用，那么我们的web2.0就盈利了，这些已经够了。 如果一个有实力的企业，有了Web2.0，一定会有更好发展；如果只是靠web2.0炒做来创业，融资，解决企业资金问题，而没有相应的产品，没有可持续性发展计划，那最终要还是要被淹没在互联网的潮流之中。<BR>跟随时代潮流，有的企业成功了，有些失败了，我们不再为成功或者失败而欢喜和沮丧，真正理解时代的需求，正确的看待市场，灵活的运用我们的技术，打造企业自己的品牌，这才是最重要的。<BR></P>]]></description>
</item><item>
<title><![CDATA[VC6.0 通过http下载文件]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=14834</link>
<author>dashee</author>
<pubDate>2006/5/29 15:20:21</pubDate>
<description><![CDATA[<P>接上一篇<BR>//下载文件的方法<BR>//url:网络文件地址,filename:保存到磁盘的文件名<BR>bool DownFile(LPCTSTR url,CString filename)<BR>{<BR>&nbsp;bool result=false;<BR>&nbsp;try{</P>
<P>&nbsp;//自定义http头信息<BR>&nbsp;char* headers="Accept:*/*\r\n"<BR>&nbsp; "Accept-Language:zh-cn\r\n"<BR>&nbsp; "User-Agent:VCTestClient\r\n";</P>
<P>&nbsp;HINTERNET hNet = InternetOpen("Outlook",PRE_CONFIG_INTERNET_ACCESS,NULL,INTERNET_INVALID_PORT_NUMBER,0) ;</P>
<P>&nbsp;HINTERNET hUrlFile = InternetOpenUrl(hNet,url,headers,strlen(headers),INTERNET_FLAG_RELOAD,0);</P>
<P>&nbsp;char buffer[10*1024] ;<BR>&nbsp;DWORD dwBytesRead = 1;<BR>&nbsp;BOOL bRead=TRUE;<BR>&nbsp;CFile file;</P>
<P>&nbsp;file.Open(filename,CFile::modeCreate|CFile::modeWrite);//创建本地文件,准备写入数据<BR>&nbsp;while(bRead&amp;&amp;dwBytesRead&gt;0)<BR>&nbsp;{<BR>&nbsp; bRead = InternetReadFile(hUrlFile,buffer,sizeof(buffer),&amp;dwBytesRead);<BR>&nbsp; if(dwBytesRead&gt;0)<BR>&nbsp; file.Write(buffer,dwBytesRead);<BR>&nbsp;}<BR>&nbsp;InternetCloseHandle(hUrlFile) ;<BR>&nbsp;InternetCloseHandle(hNet) ;<BR>&nbsp;file.Close();<BR>&nbsp;result=true;<BR>&nbsp;}catch(CException *e)<BR>&nbsp;{<BR>&nbsp; result=false;<BR>&nbsp;}<BR>&nbsp;return result;<BR>}</P>
<P>&nbsp;</P>]]></description>
</item><item>
<title><![CDATA[VC++6.0 通过HTTP方式获取网页]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=14828</link>
<author>dashee</author>
<pubDate>2006/5/29 14:43:38</pubDate>
<description><![CDATA[<P>最近做了个项目,用VC开发,很有技术难度,习惯了Java开发,VC都忘差不多啦,呵呵~ 为了吃饭,硬着头皮也得做下去啊。<BR>项目里面用到了获取网页数据,需要http header 来验证客户端合法性,找了些资料,都有问题。还是自己写吧,用 CInternetSession</P>
<P>//头部包含afxinet.h<BR>&nbsp;#include &lt;afxinet.h&gt;</P>
<P>CInternetSession::OpenURL函数原型为： </P>
<P>CStdioFile* OpenURL( LPCTSTR pstrURL, //文件URL地址<BR>&nbsp; DWORD dwContext = 1, //上下文ID<BR>&nbsp; DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII, //标记<BR>&nbsp; LPCTSTR pstrHeaders = NULL, //发送到服务器的数据头<BR>&nbsp; DWORD dwHeadersLength = 0 );//发送到服务器的数据头长度</P>
<P>dwFlags可以为：<BR>INTERNET_FLAG_RELOAD 强制重读数据 <BR>INTERNET_FLAG_DONT_CACHE 不保存到缓存 <BR>INTERNET_FLAG_TRANSFER_ASCII 使用文本数据 <BR>INTERNET_FLAG_TRANSFER_BINARY 使用二进制数据 </P>
<P>//获取网页的方法代码如下<BR>CString getURLContext(LPCTSTR pstrURL)<BR>{<BR>&nbsp;//自定义http头信息<BR>&nbsp;char* headers="Accept:*/*\r\n"<BR>&nbsp; "Accept-Language:zh-cn\r\n"<BR>&nbsp; "User-Agent:VCTestClient\r\n";</P>
<P>&nbsp;CString m_strHTML;<BR>&nbsp;try<BR>&nbsp;{<BR>&nbsp;&nbsp;CInternetSession sess;//建立会话<BR>&nbsp;&nbsp;CHttpFile* pF=(CHttpFile*)sess.OpenURL(pstrURL,1,INTERNET_FLAG_TRANSFER_ASCII||INTERNET_FLAG_RELOAD,headers,strlen(headers));//打开文件<BR>&nbsp;&nbsp;注意:OpenURL 方法的dwFlags参数 必须选择传输模式为INTERNET_FLAG_TRANSFER_ASCII 或者 INTERNET_FLAG_TRANSFER_BINARY <BR>&nbsp;&nbsp;CString szData,szAllData;<BR>&nbsp;&nbsp;while(pF-&gt;ReadString(szData))<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;//读取文件<BR>&nbsp;&nbsp;&nbsp;szAllData+="\r\n";<BR>&nbsp;&nbsp;&nbsp;szAllData+=szData;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;pF-&gt;Close();<BR>&nbsp;&nbsp;sess.Close();<BR>&nbsp;&nbsp;m_strHTML=szAllData;<BR>&nbsp;}<BR>&nbsp;catch(CException *e)<BR>&nbsp;{<BR>&nbsp;&nbsp;AfxMessageBox("获取数据失败");<BR>&nbsp;}<BR>&nbsp;return m_strHTML;<BR>}</P>
<P>希望能对需要的朋友有帮助。</P>]]></description>
</item><item>
<title><![CDATA[web2.0泡沫将在一年半内破灭！]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=12911</link>
<author>dashee</author>
<pubDate>2006/3/26 13:21:23</pubDate>
<description><![CDATA[<A><SPAN style="LETTER-SPACING: 0px"><FONT color=#1f1f1f><SPAN class=Contents><FONT face=新宋体 size=2>
<P>2002年，SP和网游救活了中国互联网，之后中国互联网猛发展了3年，这三年，发展的太快太快了，这三年，也出现了太多的让人激动人心的网络传奇。于是，大家都不会怀疑的坚信，中国互联网市场会越来越好！</P>
<P>中国的互联网市场肯定会越来越好，这是必然的。 但是随着2005年的web2.0概念的鼓吹，吹的天使投资商看到了商机，吹得风险投资商头发昏，以为又发现了新大陆，怕自己跟不上班，于是在2005年，大批的所谓的web2.0的网站都融到了巨资，2005年确实是让许多IT人都兴奋的一年。</P>
<P>当我们客观的看待这些所谓的web2.0的网站的时候，你会发现，这些网站大多都非常的好面子。这些网站的CEO张口就是我们的网站有短短几个月就从几十人增长到几百个员工了、我们的alexa排名涨到多少位了、我们要成为中国互联网的下一代领袖了.......</P>
<P>赢利模式不清晰不要紧，可以慢慢探索，但是探索过程中一定要控制成本。这样说，可能许多CEO看了不服气，说融到了这么多钱不花拿在手里有压力, 为了给自己面子工作做好看，为了给自己打气，只能拼命的烧钱了......</P>
<P>web2.0是一个非常好的理念，用这种理念来做网站有非常多的好处，其中最大的好处就是低成本。</P>
<P>如果你没有理解到这一点，只是把它当作一个新概念来忽悠，钱烧得差不多的时候，也该是你哭得时候了。</P>
<P>现在的中国互联网环境不是上个世纪的中国互联网环境，摸着石头过河的话，死掉的可能性会更高一些。</P>
<P>在2006年年初，王通做一下预言： 一年半内，web2.0概念网站泡沫必会破灭！</P>
<P>当然，这中间会产生一些成功的web2.0网站，不过想成为，还是需要少吹概念，多干实事，控制成本，快速赢利。能够这样做的web2.0网站太少太少了， 用概念吹起来的泡沫，迟早都是会破灭的。</P>
<P>在这一年半中，将会有越来越多的web2.0网站走以下三条路：</P>
<P>1、卖掉：目前，很多天使投资之所以投web2.0网站，目的就是炒热概念，卖掉套现，今年上半年，这种事可能会多一些！</P>
<P>2、倒掉：下半年一些web2.0网站因为烧钱太多，找不到很好的盈利模式，股东不满，导致内部出现分歧、内耗厉害，然后种种原因夹杂到一块儿，最好只能倒掉。</P>
<P>3、转型：明年上半年，低成本运作的web2.0网站，虽然融到了钱，但是却小心翼翼的话，通过一年半后将逐渐摸索到属于自己的路子，然后转型，做些其他实实在在赚钱的事情。</P>
<P><BR>以上预言，让时间来证明！</P></FONT></SPAN></FONT></SPAN></A>]]></description>
</item><item>
<title><![CDATA[jsp+javascrip 动态构造树]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=dashee&amp;id=12531</link>
<author>dashee</author>
<pubDate>2006/3/14 14:40:30</pubDate>
<description><![CDATA[
<P>昨天一个朋友说要构造一棵1W多个节点的树，如果用递规速度非常之慢，于是想到首先显示根节点，当点击每个节点的时候再去查询其子节点，子节点以此类推。<BR>肯定显示速度不会受节点深度和数量的影响。<BR>代码如下：<BR>index.htm//显示树的html文件<BR></P>
<DIV class=HtmlCode title=点击运行该代码！ style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;>
<P>&lt;HTML&gt;<BR>&lt;HEAD&gt;<BR>&lt;TITLE&gt;动态装载树jsp+script代码&lt;/TITLE&gt;<BR>&lt;style&gt;<BR>body,td{font:12px verdana}<BR>&lt;/style&gt;<BR>&lt;script language="JavaScript"&gt;<BR>/**<BR>&nbsp;* auth:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shangxinglin<BR>&nbsp;* create time: 2006年3月14日 12:51:40<BR>&nbsp;*/</P>
<P>/**<BR>&nbsp;* 创建子节点<BR>&nbsp;*/<BR>function createNodes(peid,pid)<BR>{<BR>&nbsp; var tminnerHTML="";<BR>&nbsp; var nodeSplit;<BR>&nbsp; var subNodes;<BR>&nbsp; var isLeaf=false;//叶子节点标志<BR>&nbsp; var isBottom=false;//末端节点标准<BR>&nbsp; eval("subNodes=getSubNodes_"+pid+"();");</P>
<P>&nbsp; for(var i=0;i&lt;subNodes.length;i++)<BR>&nbsp; {&nbsp; <BR>&nbsp;&nbsp; nodesplit=subNodes[i].split("|");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isLeaf=(nodesplit[3]=="1");<BR>&nbsp;&nbsp; isBottom=(i==(subNodes.length-1));</P>
<P>&nbsp;&nbsp; tminnerHTML+="&lt;table width=\"100\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"&gt;";<BR>&nbsp;&nbsp; tminnerHTML+"&lt;tr&gt;";<BR>&nbsp;&nbsp; if(isLeaf)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; tminnerHTML+="&lt;td id=\""+nodesplit[0]+"\" isBottom=\""+(isBottom?"true":"false")+"\" onclick=\"leafClick(this)\" width=\"18\" height=\"18\"&nbsp; style=\"cursor:hand\"&gt;&lt;img src=images/leafline"+(isBottom?"bottom":"")+".gif&gt;&lt;/td&gt;&lt;td&gt;"+nodesplit[2]+"&lt;/td&gt;";<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; else<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; tminnerHTML+="&lt;td id=\""+nodesplit[0]+"\" status=\"plus\" isBottom=\""+(isBottom?"true":"false")+"\" onclick=\"nodeOC(this)\" width=\"18\" height=\"18\"&nbsp; style=\"cursor:hand\"&gt;&lt;img src=images/plus"+(isBottom?"bottom":"")+".gif&gt;&lt;/td&gt;&lt;td&gt;"+nodesplit[2]+"&lt;/td&gt;";<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; tminnerHTML+="&lt;/tr&gt;";&nbsp;&nbsp; <BR>&nbsp;&nbsp; if(!isLeaf)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; tminnerHTML+="&lt;tr id=\""+nodesplit[0]+"sub\" style=\"display:none\"&gt;";<BR>&nbsp;&nbsp;&nbsp; tminnerHTML+="&lt;td "+(isBottom?"":"background=\"images/line.gif\"")+" width=\"18\" height=\"18\"&gt;&lt;/td&gt;&lt;td id=\""+nodesplit[0]+"list\"&gt;&lt;/td&gt;";<BR>&nbsp;&nbsp;&nbsp; tminnerHTML+="&lt;/tr&gt;";<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; tminnerHTML+="&lt;/table&gt;\n";<BR>&nbsp; }&nbsp; <BR>&nbsp; tminnerHTML=tminnerHTML==""?"":tminnerHTML;<BR>&nbsp; document.getElementById(peid).innerHTML=tminnerHTML;<BR>}<BR>/*<BR>&nbsp;* 处理节点的打开/关闭事件<BR>&nbsp;*/<BR>function nodeOC(ocObj)<BR>{<BR>&nbsp;if(ocObj.status=="plus")<BR>&nbsp;{<BR>&nbsp;&nbsp;ocObj.status="minus";<BR>&nbsp;&nbsp;ocObj.innerHTML="&lt;img src=images/minus"+(ocObj.isBottom=="true"?"bottom":"")+".gif&gt;";<BR>&nbsp;}<BR>&nbsp;else<BR>&nbsp;{<BR>&nbsp;&nbsp;ocObj.status="plus";<BR>&nbsp;&nbsp;ocObj.innerHTML="&lt;img src=images/plus"+(ocObj.isBottom=="true"?"bottom":"")+".gif&gt;";<BR>&nbsp;}<BR>&nbsp;document.getElementById(ocObj.id+"sub").style.display=document.getElementById(ocObj.id+"sub").style.display=="none"?"":"none";<BR>&nbsp;&nbsp;&nbsp; if(document.getElementById(ocObj.id+"list").innerHTML!="") return;//处理缓存<BR>&nbsp;document.getElementById("queryScript").src="query.jsp?peid="+ocObj.id+"list"+"&amp;pid="+ocObj.id;<BR>}<BR>/*<BR>&nbsp;* 处理叶子节点的点击事件<BR>&nbsp;*/<BR>function leafClick(leafObj)<BR>{<BR>&nbsp;//<BR>}<BR>/*<BR>&nbsp;* 初始化树根节点<BR>&nbsp;*/<BR>function initTree()<BR>{<BR>&nbsp;&nbsp; document.getElementById("queryScript").src="query.jsp?peid=treeView&amp;pid=0";<BR>}</P>
<P>&lt;/script&gt;</P>
<P>&lt;script id="queryScript" language="JavaScript" src=""&gt;&lt;/script&gt;<BR>&lt;script language="JavaScript"&gt;<BR>window.onload=initTree;<BR>&lt;/script&gt;<BR>&lt;/HEAD&gt;<BR>&lt;BODY&gt;<BR>&lt;table border="0" cellpadding="0" cellspacing="0"&gt;<BR>&lt;tr&gt;<BR>&nbsp; &lt;td id="treeView"&gt;&lt;/td&gt;<BR>&lt;/tr&gt;<BR>&lt;/table&gt;<BR>&lt;/BODY&gt;<BR>&lt;/HTML&gt;<BR></P></DIV>
<P>query.jsp//用于查询子节点的jsp，可以根据需要改为查询数据库</P>
<DIV class=HtmlCode title=点击运行该代码！ style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;>
<P>&lt;%@ page contentType="text/html; charset=GBK" import="java.io.RandomAccessFile,java.io.File,java.util.ArrayList,java.util.HashMap,java.util.Iterator"%&gt;<BR>&lt;%<BR>RandomAccessFile dataFile=new RandomAccessFile(new File(application.getRealPath("./treeData.txt")), "r");<BR>ArrayList nodes=new ArrayList();<BR>String line=dataFile.readLine();<BR>while(line!=null)<BR>{<BR>&nbsp;line=new String(line.getBytes("ISO_8859_1"),"GBK");<BR>&nbsp;String[] lineItems=line.split("<A href="file://t/">\\t</A>");<BR>&nbsp;HashMap node=new HashMap();<BR>&nbsp;node.put("id",lineItems[0]);<BR>&nbsp;node.put("pid",lineItems[1]);<BR>&nbsp;node.put("name",lineItems[2]);<BR>&nbsp;node.put("isend",lineItems[3]);<BR>&nbsp;nodes.add(node);<BR>&nbsp;line=dataFile.readLine();&nbsp;<BR>}<BR>dataFile.close();</P>
<P>String peid=request.getParameter("peid");<BR>String pid=request.getParameter("pid");<BR>ArrayList subNodes=new ArrayList();</P>
<P>Iterator nodeIt=nodes.iterator();<BR>while(nodeIt.hasNext())<BR>{<BR>&nbsp;HashMap tmnode=(HashMap)nodeIt.next();<BR>&nbsp;if(tmnode.get("pid").equals(pid))<BR>&nbsp;{<BR>&nbsp;&nbsp;subNodes.add(tmnode);<BR>&nbsp;}<BR>}<BR>%&gt;<BR>function getSubNodes_&lt;%=pid%&gt;()<BR>{<BR>/*定义子节点数组*/<BR>var subNodes=new Array();<BR>&lt;%<BR>for(int i=0;i&lt;subNodes.size();i++)<BR>{<BR>&nbsp;HashMap tmnode=(HashMap)subNodes.get(i);<BR>%&gt;<BR>subNodes[&lt;%=i%&gt;]=new String("&lt;%=tmnode.get("id")%&gt;|&lt;%=tmnode.get("pid")%&gt;|&lt;%=tmnode.get("name")%&gt;|&lt;%=tmnode.get("isend")%&gt;");<BR>&lt;%<BR>}<BR>%&gt;<BR>return subNodes;<BR>}<BR>createNodes("&lt;%=peid%&gt;","&lt;%=pid%&gt;");</P></DIV>
<P><BR>&nbsp;</P>
<P>treeData.txt//存放数据的文本文件</P>
<P>id&nbsp;pid&nbsp;name&nbsp;&nbsp; isend<BR>1&nbsp; 0&nbsp;&nbsp; 分类A&nbsp;&nbsp;0<BR>2&nbsp; 0&nbsp;&nbsp; 分类B&nbsp; 0<BR>3&nbsp; 0&nbsp;&nbsp; 分类C&nbsp; 0<BR>4&nbsp; 0&nbsp;&nbsp; 分类D&nbsp; 0<BR>5&nbsp; 0&nbsp;&nbsp; 分类E&nbsp; 0<BR>6&nbsp; 1&nbsp;&nbsp; 分类A1&nbsp;0<BR>7&nbsp; 1&nbsp;&nbsp; 分类A2&nbsp;1<BR>8&nbsp; 1&nbsp;&nbsp; 分类A3&nbsp;1<BR>9&nbsp; 2&nbsp;&nbsp; 分类B1&nbsp;1<BR>10&nbsp;2&nbsp;&nbsp; 分类B2&nbsp;1<BR>11&nbsp;3&nbsp;&nbsp; 分类C1&nbsp;1<BR>12&nbsp;3&nbsp;&nbsp; 分类C2&nbsp;1<BR>13&nbsp;3&nbsp;&nbsp; 分类C3&nbsp;1<BR>14&nbsp;4&nbsp;&nbsp; 分类D1&nbsp;1<BR>15&nbsp;4&nbsp;&nbsp; 分类D2&nbsp;1<BR>16&nbsp;5&nbsp;&nbsp; 分类E1&nbsp;1<BR>17&nbsp;6&nbsp;&nbsp; 分类A11&nbsp;1</P>
<P><BR>源文件下载 <IMG src="http://blogger.org.cn/blog/images/file/zip.gif" border=0><A href="http://blogger.org.cn/blog/uploadfile/200631414540186.RAR" target=_blank>tree.rar</A></P>]]></description>
</item>
</channel>
</rss>