<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[Cxty's Blog]]></title>
  <subtitle type="html"><![CDATA[嘻嚓啼歪的小窝窝]]></subtitle>
  <id>http://www.openx.cn/</id> 
  <link rel="alternate" type="text/html" href="http://www.openx.cn/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.openx.cn/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.4.1022">PJBlog2</generator> 
  <updated>2010-11-08T22:08:12+08:00</updated> 

  <entry>
	  <title type="html"><![CDATA[“百度身边” 有感]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=5" label="点点滴滴" /> 
	  <updated>2010-11-08T22:08:12+08:00</updated>
	  <published>2010-11-08T22:08:12+08:00</published>
		  <summary type="html"><![CDATA[“百度身边”是一个以美食、购物、休闲娱乐、酒店、健身等为主的本地生活信息搜索和分享平台，致力于通过用户贡献的方式汇集更多更好的本地商户信息，为用户的消费决策提供支持。<a href="http://shenbian.baidu.com/login" target="_blank">http://shenbian.baidu.com/login</a><br/><br/>PS：<br/>&nbsp;&nbsp;&nbsp;&nbsp; 百度也开始整合资源，利用广大无私的廉价劳动力提纯各类信息，生产出有针对性的信息。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 相信Google、Facebook、Twitter也即将突破现有瓶颈（发展到一定阶段的核心转移），推出类似的应用。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 互联网是一个开放的社会，这是互联网存在的初衷，虽然因政治、商业等利益的博弈现在的开放有点变为，但我坚信一定会有一种机制或方式将互联网中的各个个体，再次有机的融合成一个交互的开放的整体，任何事物的发展总是呈现两头尖中间宽的状态（开放-&gt;闭塞-&gt;开放；分散-&gt;聚合-&gt;分散；简单-&gt;繁琐-&gt;简单），这种过程是不可逆的，新的顶点必定是原点的升华，然后成为新的原点。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 我的理解其实这就是第三代互联网的基础（第一代互联网：信息是单向的，用户被动接收；第二代互联网：信息是双向的，用户在获取信息的同时可以推送信息；第三代互联网:信息是智能的，获取与推送过程中信息就具有了生命，还是会思考的生命）。有了信息的重新整理，信息的融合与交互，再加上人为参与的逻辑分析，信息才会智能。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 但必须理解个人隐私，将个人隐私与人为参与划分界限（主动行为分析，潜意识行为分析，被动行为分析），用户的各种行为肯定会被各种方式记录，有利于个人更好的获取有价值信息的行为记录经过用户授权的，并且可以转换成公共行为记录的（如：用户A看了一张图片，给图片打标记为“苹果”，其中为该图片打标记的用户中有80%也标记为“苹果”）才是可用的，针对的是相同行为的分析，而不是个体用户的行为的记录。并且必须有一个用户行为记录生存期，在用户允许记录的时间范围内记录，超过则必须销毁与该用户相关的行为记录，不然想想挺恐怖的。<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=473" /> 
	  <id>http://www.openx.cn/default.asp?id=473</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[[转]重装系统后ORACLE的恢复的几种方法]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2009-08-28T11:20:11+08:00</updated>
	  <published>2009-08-28T11:20:11+08:00</published>
		  <summary type="html"><![CDATA[第一种：<br/>首先，备份数据库(X:\oracle\oradata)下的数据文件，重新命名即可(否则装数据库的时候会提示sid已存在)。重新安装数据库，当然数据库的名字就是你要恢复的名字。安装完成后，打开控制面板，停止oracle的服务。把(X:\oracle\oradata)下新生成的文件改名，把原先目录下的文件恢复名字。再重新启动oracle服务和监听。用sys/as dba 登陆数据库，可能会提示权限不够（ora-01031）修改（X:\oracle\ora92\network\admin )文件夹下的sqlnet.ora文件，添加SQLNET.AUTHENTICATION_SERVICES= (NTS)，增加权限。登陆进去后，打开table提示不能打开。打开common页，执行命令alert database open；这时再刷新table，发现原先的表可以打开了。恢复成功了。再用原先数据库的普通用户进入。发现一切正常。至此，大功告成。<br/><br/>第二种：<br/>1、首先，将原来的ORACLE文件夹改名，原来的路径是D:/oracle。我暂时改成D:/oracle_old。找来ORACLE（我用的是ORACLE 9I）安装光盘，将ORACLE安装在原来安装的目录下，这样恢复起来更加方便，主要是注册表的内容不用修改。 <br/><br/>2、安装完了之后，系统中又有一个可以使用的ORACLE了。这个时候要做的就是将原来的文件和数据恢复过来。第一步，先关闭ORACLE的所有已经启动的项目，在“服务”里面逐一关闭。然后，将安装目录改名。我现在用的是D:/oracle。改成D:/oracle_new。再将D:/oracle_old改成D:/oracle。 <br/>这样理论上说从物理层面恢复了ORACLE了。但是我们发现，现在还不能启动ORACLE的监听程序和服务程序。我们还要从逻辑上解决。<br/> <br/>3、在dos环境下执行一个删除命令：oradim -del&#101;te -sid mm，其中mm为创建oracle时候创建的实例 建议执行这个命令后重新启动机器，重启后就可以建立和原来实例名相同的实例。当然你懒，不重新启动也可以，但是你的实例名就不能和原来的一样了。 <br/><br/>4、在dos环境下执行命令 o&#114;adim -new -sid mm -startmode a -pfile &#34;D:\oracle\admin\mm\pfile\initmm.ora &#34;创建一个新的实例，其中 “mm“为新数据库的名称。 <br/><br/>5、启动服务，先打开数据库，然后可以用以前的用户名和密码登陆进去。 <br/>要补充的是，一般的ORACLE数据库的监听程序都是用电脑的名称来识别地址的，而不是127.0.0.1或者localhost。所以，如果我们安装系统的时候用的是不同的电脑名称（比如我原来用的是wm_mm。重新安装后用的是wenming_mm），那么我们还有一个工作要做，就是修改文件 listener.ora。将里面的相关的东西改过来就可以了。 <br/><br/>需要耐心、细心，可能在一步里有一个细小的差别就会出些古怪的错误提示，有时需要根据错误提示采取策略，总之原理是，先装一个一模一样的ORACLE，安装目录、数据库名称都一样，这样保证注册表里不用更改；再覆盖物理文件，最后重新实例化，打开数据库就可以进去了。<br/><br/>注：恢复必须要有以下文件 <br/>a、初始化参数文件INIT.ORA <br/>b、所有数据文件 .dbf <br/>c、所有重做日志文件（联机日志、归档日志）redo <br/>d、所有控制文件 crtl <br/>e、internal密码文件<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=472" /> 
	  <id>http://www.openx.cn/default.asp?id=472</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[正准备弄个语音识别的，转个材料“.Net平台下开发中文语音应用程序”]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=7" label="移动开发" /> 
	  <updated>2009-07-10T14:24:50+08:00</updated>
	  <published>2009-07-10T14:24:50+08:00</published>
		  <summary type="html"><![CDATA[摘要：<br/>语音是人类最自然的交互方式，也是现阶段软件用户界面发展的最高目标。微软公司一直积极推动语音技术的发展，并且公布了语音开发平台Speech SDK帮助开发人员实现语音应用。<br/>随着.net技术深入人心，越来越多的程序员开始转到.net平台上进行开发。然而，在新发布的.net speech SDK里面并没有对中文语音进行支持，目前支持中文的Speech SDK最高版本为Windows平台下的SAPI 5.1()，本文介绍如何在.net平台下利用SAPI5.1开发中文语音应用程序。<br/><br/>--------------------------------------------------------------------------------<br/><br/>目录：<br/>1. SAPI.51 SDK浅析以及安装<br/>2. 导入COM对象到.Net<br/>3. 用C#开发中文TTS应用程序示例<br/>4. 结论<br/>5. 参考文献<br/><br/>--------------------------------------------------------------------------------<br/><br/>1． SAPI.51 SDK浅析以及安装<br/>SAPI SDK是微软公司免费提供的语音应用开发工具包，这个SDK中包含了语音应用设计接口（SAPI）、微软的连续语音识别引擎（MCSR）以及微软的语音合成（TTS）引擎等等。目前的5.1版本一共可以支持3种语言的识别 (英语，汉语和日语)以及2种语言的合成（英语和汉语）。SAPI中还包括对于低层控制和高度适应性的直接语音管理、训练向导、事件、语法编译、资源、语音识别(SR)管理以及TTS管理等强大的设计接口。其结构如图(1)：<br/><br/><br/>图(1)<br/>语音引擎则通过DDI层（设备驱动接口）和SAPI(SpeechAPI)进行交互，应用程序通过API层和SAPI通信。通过使用这些API，用户可以快速开发在语音识别或语音合成方面应用程序。<br/>SAPI5.1 SDK可以从微软网站下载：<a href="http://www.microsoft.com/speech/download/sdk51/" target="_blank">http://www.microsoft.com/speech/download/sdk51/</a> 需要安装程序的有Speech SDK 5.1（68M）和5.1 Language Pack （81.5M）。<br/><br/>--------------------------------------------------------------------------------<br/><br/>2． 导入COM对象到.Net<br/>SAPI5.1的基于Windows平台的，通过COM接口进行调用。在.Net平台下要应用SAPI5.1，我们可以利用.Net Framework自带的强大工具TlbImp.exe来把SAPI SDK的COM对象导入到.Net中。TlbImp.exe产生一个管制的包装类，管理客户端可以使用它。包装类管理实际的COM对象的参考数。当包装类当作收集的垃圾时，包装类释放掉它包装的COM对象。当然，你也可以在VS.NET环境中通过从项目参考对话框选择COM对象，实现COM对象的导入，这个过程也是通过TlbImp.exe来完成的。<br/>下面演示如何导入SAPI的COM对象：<br/>D:\Program Files\Common Files\Microsoft Shared\Speech&gt;Tlbimp sapi.dll /out: DotNetSpeech.dll<br/><br/>在安转SDK以后，可以在D:\Program Files\Common Files\Microsoft Shared\Speech\目录下面找到SAPI.dll，这里面定义了SAPI的COM对象，用Tlbimp.exe工具将该dll转换成.net平台下的Assembly---DotNetSpeech.dll，转换的过程会提示不少的警告(warning)，但这部影响我们的开发，可以忽略。最后，我们可以用ildasm查看DotnetSpeech.dll里面的对象。<br/><br/>--------------------------------------------------------------------------------<br/><br/>3． 用C#开发中文TTS应用程序示例<br/>下面通过一个实例来介绍如何利用C# 进行开发语音应用程序，开发环境为：<br/>操作系统： Windows 2000 中文版+ SP3<br/>.Net Framework: 1.0.3705（英文版）<br/>Visual Studio.Net 7.0.9466（英文版）<br/>首先，新建一个C#的Windows Application工程SpeechApp，在开发环境的右边的解决方案管理器(Solution Explorer)中，添加DotNetSpeech对象库。右键点击&#34;Reference&#34;(参考)，选择&#34;Add Reference&#34;（添加参考），在弹出的文件选择对话框中找到刚才生成的DotNetSpeech.dll。<br/><br/><br/>图(2)<br/>打开Form1.cs代码文件,在代码开头添加名字空间（注意大小写）。<br/>using DotNetSpeech;<br/>这样就实现了SAPI SDK的导入，下面我们就可以开始编写应用代码了。本示例演示如何把文本通过喇叭朗读出来以及把文本转化成语音信号（Wave声音文件），程序界面如图(3)：<br/><br/><br/>//朗读<br/>private void buttonSynthesis_Click(object sender, System.EventArgs e)<br/>{<br/>&#160;&#160;&#160;&#160;try<br/>{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SpVoice Voice = new SpVoice();&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Voice.Speak(this.textBoxText.Text, SpFlags);<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;catch(Exception er)<br/>&#160;&#160;&#160;&#160;{<br/>MessageBox.Show(&#34;An Error Occured!&#34;,&#34;SpeechApp&#34;, MessageBoxButtons.OK, MessageBoxIcon.Error);<br/>&#160;&#160;&#160;&#160;}<br/>}<br/>//生成声音文件(Wav)<br/>private void buttonTTStoWave_Click(object sender, System.EventArgs e)<br/>{<br/>&#160;&#160;&#160;&#160;try<br/>{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SpVoice Voice = new SpVoice();&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SaveFileDialog sfd = new SaveFileDialog();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sfd.Filter = &#34;All files (*.*)|*.*|wav files (*.wav)|*.wav&#34;;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sfd.Title = &#34;Save to a wave file&#34;;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sfd.FilterIndex = 2;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sfd.RestoreDirectory = true;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (sfd.ShowDialog()== DialogResult.OK) <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SpeechStreamFileMode SpFileMode = SpeechStreamFileMode.SSFMCr&#101;ateForWrite;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SpFileStream SpFileStream = new SpFileStream();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SpFileStream.Open(sfd.FileName, SpFileMode, false);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Voice.AudioOutputStream = SpFileStream;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Voice.Speak(txtSpeakText.Text, SpFlags);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Voice.WaitUntilDone(Timeout.Infinite);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&nbsp;&nbsp;&nbsp;&nbsp; SpFileStream.Close();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;catch(Exception er)<br/>&#160;&#160;&#160;&#160;{<br/>MessageBox.Show(&#34;An Error Occured!&#34;,&#34;SpeechApp&#34;, MessageBoxButtons.OK, MessageBoxIcon.Error);<br/>&#160;&#160;&#160;&#160;}<br/>}<br/><br/>接下来,还要去控制面板配置Speech SDK引擎当前所处理语言。打开&#34;控制面板&#34;，打开&#34;语音&#34;配置项目，可以看到在这里我们可以指定当前可以对何种语言进行识别或者合成，还可以配置相关的硬件设备以及控制语速。（如图4）<br/><br/><br/>在&#34;文字-语音转换&#34;的&#34;语音选择&#34;组合框中选择简体中文(Microsoft Simplified Chinese)。这样就可以合成汉语文字了。<br/>回到VS.Net，F5编译运行刚才的应用程序，在文本框里输入汉字，戴上耳机，点击&#34;朗读&#34;按钮，开始体验新一代的智能人机界面吧，呵呵：）<br/><br/>--------------------------------------------------------------------------------<br/><br/>4． 结论<br/>微软为语音人机界面提供了强大的平台，.net环境更使这种开发方便快捷。赶快去下载SAPI5.1 SDK，让你的应用程序&#34;绘声绘色&#34;，体现Nature UI，Let’s GO!!!<br/><br/>--------------------------------------------------------------------------------<br/><br/>5． 参考文献<br/>[1] Speech SDK自带的说明文档(SAPI.chm)<br/>[2] MSDN (msdn.microsoft.com)<br/><br/>--------------------------------------------------------------------------------<br/><br/>作者：陈本峰<br/><br/><br/>摘自：<a href="http://www.microsoft.com/china/community/program/originalarticles/TechDoc/Cnspeech.mspx" target="_blank">http://www.microsoft.com/china/community/program/originalarticles/TechDoc/Cnspeech.mspx</a>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=471" /> 
	  <id>http://www.openx.cn/default.asp?id=471</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[很久没更新了，发一个delphi的]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2009-05-06T17:13:21+08:00</updated>
	  <published>2009-05-06T17:13:21+08:00</published>
		  <summary type="html"><![CDATA[关于delphi中开发activex控件，并从activex控件中调用html页面中的javascript。<br/><br/>这几天在搞个需要activex控件来实现的项目，丫丫的activex控件应该属于都快被人遗忘的技术了。<br/><br/>delphi中开发activex控件其实挺简单的，唯一的问题就是怎么调用页面中的javascript呢。<br/><br/>搜了n久发现一个c＋＋写的通过接口调用方法，看上去贼复杂。<br/><br/>其实delphi中调用页面上的javascript贼简单。<br/><br/>方法如下：<br/>1.创建一个方法-&gt;SetDoc-&gt;procedure SetDoc(const Doc: IUnknown); safecall;<br/><br/>用了一个IUnknown类型.<br/><br/>2.就一句话将IUnknown转成IHTMLDocument2-&gt;代码如下:<br/>procedure TCxty_Lib.SetDoc(const Doc: IUnknown);<br/>begin<br/>&nbsp;&nbsp;if Assigned(Doc) then<br/>&nbsp;&nbsp;begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;HTMLDoc := IHTMLDocument2(Doc as IHTMLDocument);<br/>&nbsp;&nbsp;end;<br/>end;<br/><br/>注意前头要申明一个 HTMLDoc ,是IhtmlDocument2类型,我申明在 private 中.<br/><br/>3.就是写一个调用javascript的方法咯,代码如下:<br/>procedure TCxty_Lib.CallJavascript(script: string);<br/>var<br/>&nbsp;&nbsp;win: IHTMLWindow2;<br/>begin<br/>&nbsp;&nbsp;if not Assigned(HTMLDoc) then<br/>&nbsp;&nbsp;&nbsp;&nbsp;Exit;<br/><br/>&nbsp;&nbsp;win := HTMLDoc.parentWindow;<br/>&nbsp;&nbsp;if not Assigned(win) then<br/>&nbsp;&nbsp;&nbsp;&nbsp;Exit;<br/><br/>&nbsp;&nbsp;win.execScript(script, &#39;JavaScript&#39;);<br/>end;<br/><br/>delphi部分就已完成.<br/><br/>贼简单吧,还没完重要的在html页面上,代码如下:<br/>创建OBJECT<br/>&lt;OBJECT<br/>&#160;&#160;&#160;&#160;&nbsp;&nbsp;classid=&#34;clsid:C15DFE4C-B668-4178-A64B-3945365725F2&#34;<br/>&#160;&#160;&#160;&#160;&nbsp;&nbsp;codebase=&#34;Cxty_LibProj1.ocx#version=1,0,0,0&#34;<br/>&#160;&#160;&#160;&#160;&nbsp;&nbsp;width=0<br/>&#160;&#160;&#160;&#160;&nbsp;&nbsp;height=0<br/>&#160;&#160;&#160;&#160;&nbsp;&nbsp;align=center<br/>&#160;&#160;&#160;&#160;&nbsp;&nbsp;hspace=0<br/>&#160;&#160;&#160;&#160;&nbsp;&nbsp;vspace=0<br/>&#160;&#160;&#160;&#160;&nbsp;&nbsp;id=&#34;Cxty&#34;<br/>&gt;<br/>&lt;/OBJECT&gt;<br/><br/>&lt;SCRIPT LANGUAGE=&#34;JavaScript&#34;&gt;<br/>var Yannyo_Net = document.getElementById(&#39;Yannyo_Net&#39;);<br/><br/>Yannyo_Net.SetDoc(document);//这句就吧页面上的document传给了activex,然后activex就为所欲为了.<br/>&lt;/SCRIPT&gt;<br/><br/>activex中调用脚本的时候只需调用 CallJavascript(&#39;javascript函数名称(参数)&#39;);]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=470" /> 
	  <id>http://www.openx.cn/default.asp?id=470</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[改进电子商务网站易用性的10个方法]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2008-11-10T09:46:31+08:00</updated>
	  <published>2008-11-10T09:46:31+08:00</published>
		  <summary type="html"><![CDATA[<p>　　今天消费者网络购物的支出越来越多，可是太多的网站并没有考虑到他们网站和订购流程的易用性，最终导致用户很快就放弃了他们的订购。这里有10种可以提高你的电子商务网站易用性的方法，可以帮助你最大可能的提高网站的转化率，将用户的&ldquo;购物篮里的商品&rdquo;换为订单。</p>
<p>　　<strong>1、用email来标识用户(登陆名)</strong></p>
<p>　　你曾经在网上购物中，用过多少不同的用户名作为账号？又用过多少不同的Email作为账号？我敢打赌，你不仅不同的Email用的很少，而且你会发现Email比用户名，更容易记忆。大多数情况下，用Email标识用户比用户名更好。因为Email容易记忆，更标准，这意味着你不必担心去记忆哪些乱七八糟的字符。他们永远是独一无二的，永远不会像用户名那样出现重名。</p>
<p>　　<strong>2、将下订单的过程划分成几个大步骤（让用户一次处理一个任务）</strong></p>
<p>　　订购流程通常非常复杂，比较典型的场景可能包括: 用户输入一个配送地址，选择配送方式，选择输入支付方式，最后确认自己的订单。试图让用户在一个步骤里做完这些事会有问题，因为用户要输入太多的信息了！</p>
<p>　　将这些步骤分解，让用户每次能处理一个步骤，确保每个步骤需要思考和输入的信息相对较少。</p>
<p>　　举个例子，亚马逊(Amazon.com)将订购流程分解成以下步骤: </p>
<p>　　1. Login 登陆<br />　　2. Choose delivery address&nbsp; 选择配送方式<br />　　3. Choose delivery options&nbsp; 选择配送选项<br />　　4. Enter payment details&nbsp; 输入支付信息(如信用卡等)<br />　　5. Review and submit the order&nbsp; 核对并提交订单。</p>
<p>　　<strong>3、告诉用户他们在哪儿，将要去那儿？</strong></p>
<p>　　（注: 关于网络用户迷失的位置感描述，请参考&lt;Don't make me think&gt;一书）</p>
<p>　　在你的旅行中，如果你不知道自己已经走了多远，或者不知道自己还要走多远，这难道不是一件糟糕的事情吗？对用户来说，当他们试图在线买点什么东西，如果他们不知道最终完成订购还需要多少步骤，他们会倍感挫折。这就是为什么在订购过程中，告诉用户他在什么位置，而且还需要多少步骤，是多么重要！ </p>
<p>&nbsp;</p>
<p align="center">[img]http://www.webcredible.co.uk/i/dixons-order-steps.gif[/img]</p>
<p>　　举个例子，<a href="http://www.dixons.co.uk/" target="_blank">Dixons14</a>显示当前预订步骤，下一步要去的步骤。作为一种选择，你可以只是在预订步骤中简单的设定步骤号码就可以了，比如: 输入配送地址(步骤1)。</p>
<p>　　<strong>4、不要让下订单过程不必要的复杂</strong></p>
<p>　　令人惊奇的是，有太多的电子商务网站把他们的订单流程搞的无比复杂，超过他们实际需要的。据个例子，用户经常被要求按照月份输入他们的信用卡或者借记卡的有效日期(注: 这里意思是必须输入英文的日期，Jan, Feb, March之类的)，而不是简单的01，02，03等等。这就强制用户将他们卡片上显示的数字转换成单词，却无法直接输入数字。</p>
<p>　　作为产品设计人员，对每个订购步骤都要仔细考虑，以使其更简单。举个例子，预订过程中，所有的输入框都必须用户输入吗？(注: 如果不是必须的，请尽量简化)。通过不断简化流线化订单流程，你可以将用户订购过程中的体验问题降低到最少。</p>
<p>　　<strong>5、解决客人常见问题</strong></p>
<p>　　在整个订购流程中，告诉用户通常会遇到的问题和疑问的解决办法是非常重要的。举个例子，用户通常需要知道他订购的产品多久才能送到，或者当用户需要输入生日的时候，告诉他为什么要收集他的生日信息等等。</p>
<p>　　仔细走一遍预订流程并在每个步骤问问你自己: 用户可能会有什么疑问？在屏幕上给予用户提示，并且提供一个超链接，连接到详细的帮助信息。</p>
<p align="center">[img]http://www.webcredible.co.uk/i/marks-contact.gif[/img]</p>
<p>　　举个例子，<a href="http://www.marksandspencers.com/" target="_blank">Markts&amp; Spencers</a>向用户解释了他们为什么需要输入联系人电话。</p>
<p>　　<strong>6、高亮必填项</strong></p>
<p>　　再也没有比填写完一个订单后，却因为没有填写必填项，不得不返回重新填写更令人恼火的事情了。在填写一个订单中，必须非常清楚标识出哪些项目是必填的，哪些是可选的。　其实很简单，只需要在必填项前加一个&ldquo;*&rdquo;。</p>
<p align="center">[img]http://www.webcredible.co.uk/i/dabs-required-fields.gif[/img]</p>
<p>　　<a href="http://www.dabs.com/" target="_blank">dabs.com</a>这点做的非常好，可以参考。</p>
<p>　　<strong>7、让订购流程更加灵活。</strong></p>
<p>　　通过让流程更加灵活，用户不仅会感到更多的可控性，而且也不太可能遇到关键性的问题。据个例子，一些电子商务网站，当用户输入地址的时候，自动帮助用户查找邮编。这对于哪些非正式的或者新的地址可能会有问题，因为这种情况下不会为用户返回邮编。这就意味着，用户不可能简单直接输入地址就可下订单(我自己就碰到好几次这种情况了)。</p>
<p>　　一个好的例子，<a href="http://www.cdwow.com/" target="_blank">CD WOW!</a>的订购流程就非常灵活，他们允许用户不用注册直接下订单。这就意味着那些对注册感到不适的用户，仍然可以下订单。</p>
<p>　　<strong>8、让用户感到安全放心</strong></p>
<p>　　很多消费者在线购买东西时，仍然不是100%放心。他们常常担心提交了信用卡账号，却收不到货。因此努力去缓解用户的担忧，让用户感到放心是非常重要的。仔细考虑用户在订购过程中的每一步可能碰到的疑虑，并对这些疑虑进行说明。</p>
<p>　　例如<a href="http://www.tesco.com/" target="_blank">Tesco</a>在他们的订购流程的支付步骤，向用户解释在Tesco购物是安全的。</p>
<p align="center">[img]http://www.webcredible.co.uk/i/tesco-secure.gif[/img]</p>
<p>　　<strong>9、让用户下订单前再次确认</strong></p>
<p>　　订购的最后一个步骤通常会让用户确认他们的订单。用户可以看到订单的清单，包括他们需要支付多少钱，什么时候货送到。他们也可以取消或者提交此订单。最好不要拷贝亚马逊的&ldquo;<a href="http://www.amazon.com/exec/obidos/tg/browse/-/468480/ref=hp_hp_ls_2_6/002-7974525-8492044" target="_blank">amazon's &quot;1-click&quot; ordering system</a>&rdquo;, 因为这样会让用户在没有检查和确认订单细节情况下，直接提交订单。比如配送地址和送货的费用等等。(注:处理配送地址错误的订单，或者因为配送费用导致退货的问题处理，成本非常高。) </p>
<p>　　在订单提交后，应该显示订单的最终确认信息，以便让用户知道他的订单是否成功。订单最终确认信息应该包括: </p>
<p>　　* The expected delivery date　期望的送货时间<br />　　* The order number 订单号<br />　　* How to track the order online (if this is possible) 如何在线跟踪订单状态(如果可能) </p>
<p>　　<strong>10、订单成功后，发一个确认邮件。</strong></p>
<p>　　一旦用户成功提交订单，需要立刻给用户发送一个确认邮件。依据<a href="http://www.useit.com/alertbox/20031208.html" target="_blank">Jakob Nielsen's Alertbox, December 8, 2003</a>，一个确认邮件应该: </p>
<p>　　简明扼要。</p>
<p>　　告诉用户他们想要的，比如: 订单号。</p>
<p>　　应该象公司客服代表一样。</p>
<p>　　记住，在线解决问题比致电客服中心成本低得多。在线提示用户，比如告诉用户他订购的产品多久才能送到等等，将会大幅度减少客户服务的电话数量。</p>
<p>　　<strong>结论:</strong></p>
<p>　　本文概述了改进电子商务网站的10个方法，遵循这些原则不仅让你的电子商务网站更加可用，而且最终也更成功。当然，通过这些原则，你只能走这么远(实践才是检验真理的唯一标准--译者注)，这就是为什么进行可用性测试是每个电子商务网站重要部分的原因。遵循可用性原则并让真实用户进行可用性测试，你会发现你的电子商务网站不仅仅可用，而且更加有效。</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=469" /> 
	  <id>http://www.openx.cn/default.asp?id=469</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Windows Mobile 中开关 WIFI 的“通用”代码]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=7" label="移动开发" /> 
	  <updated>2008-08-13T15:04:51+08:00</updated>
	  <published>2008-08-13T15:04:51+08:00</published>
		  <summary type="html"><![CDATA[<span style="COLOR: #ff6600">#pragma once<br />#include &quot;UniBase.h&quot;<br />#include &quot;Reg.h&quot;<br />#include &lt;PM.h&gt;<br /><br />class CWiFiHelper<br />{<br />private:<br />&nbsp;&nbsp;&nbsp; TCHAR m_tzDevice[MAX_NAME];</span>
<p><span style="COLOR: #ff6600">public:<br />&nbsp;&nbsp;&nbsp; CWiFiHelper()<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCHAR tzKey[MAX_PATH];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CReg reg(HKEY_LOCAL_MACHINE, TEXT(&quot;Comm&quot;));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (UINT i = 0; reg.EnumKey(i, tzKey) == S_OK; i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (tzKey[UStrLen(tzKey) - 1] == '1')<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CReg dev(reg, tzKey);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCHAR tzDisplayName[MAX_PATH];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dev.GetStr(TEXT(&quot;DisplayName&quot;), tzDisplayName))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (UStrStrI(tzDisplayName, TEXT(&quot;WiFi&quot;)) || <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UStrStrI(tzDisplayName, TEXT(&quot;Wi-Fi&quot;)) || <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UStrStrI(tzDisplayName, TEXT(&quot;Wireless&quot;)) || <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UStrStr(tzDisplayName, TEXT(&quot;802.11&quot;)))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UStrPrint(m_tzDevice, PMCLASS_NDIS_MINIPORT TEXT(&quot;</span><a href="http://www.openx.cn/file://%25s/"><span style="COLOR: #ff6600">\\%s</span></a><span style="COLOR: #ff6600">&quot;), tzKey);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //MessageBox(NULL, m_tzDevice, STR_AppName, MB_ICONINFORMATION);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_tzDevice[0] = 0;<br />&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="COLOR: #ff6600">&nbsp;&nbsp;&nbsp; BOOL IsEnabled()<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CEDEVICE_POWER_STATE s = D4;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (m_tzDevice [0])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetDevicePower(m_tzDevice, POWER_NAME, &amp;s);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return s == D0;<br />&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="COLOR: #ff6600">&nbsp;&nbsp;&nbsp; HRESULT Enable(BOOL bEnable = TRUE)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (m_tzDevice [0])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return SetDevicePower(m_tzDevice, POWER_NAME, bEnable ? D0 : D4);<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; return ERROR_DEVICE_NOT_AVAILABLE;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />};</span></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=468" /> 
	  <id>http://www.openx.cn/default.asp?id=468</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[PPC中检查某程序是否运行 ]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=7" label="移动开发" /> 
	  <updated>2008-07-28T16:19:31+08:00</updated>
	  <published>2008-07-28T16:19:31+08:00</published>
		  <summary type="html"><![CDATA[第一种:<br />HANDLE hMutex=::CreateMutexW(NULL,true,L&quot;程序名&quot;);<br />&nbsp;DWORD dwError=GetLastError();<br />&nbsp;if(dwError==ERROR_ALREADY_EXISTS)<br />&nbsp;{<br />&nbsp;&nbsp;::AfxMessageBox(L&quot;The program is running!&quot;);<br />&nbsp;&nbsp;return ;<br />&nbsp;}<br />&nbsp;::ReleaseMutex(hMutex);<br /><br />第二种:<br />HWND hWmp=::FindWindowW(L&quot;Dialog&quot;,L&quot;程序窗口名&quot;);<br />&nbsp;if(hWmp)<br />&nbsp;{<br />&nbsp;&nbsp; ::AfxMessageBox(L&quot;The program is running!&quot;);<br />&nbsp;&nbsp;return FALSE;<br />&nbsp;}<br /><br />第三种:<br />PROCESSENTRY32&nbsp;&nbsp; lppe; <br />&nbsp;memset(&amp;lppe,0,sizeof(PROCESSENTRY32));&nbsp;&nbsp; <br />&nbsp;HANDLE handle=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);<br />&nbsp;lppe.dwSize=sizeof(PROCESSENTRY32);<br />&nbsp;::Process32First(handle,&amp;lppe);<br />&nbsp;do<br />&nbsp;{<br />&nbsp;&nbsp;HANDLE hh=::OpenProcess(PROCESS_ALL_ACCESS,FALSE,lppe.th32ProcessID);<br />&nbsp;&nbsp;CString temp(lppe.szExeFile);<br />&nbsp;&nbsp;if(temp.Find(L&quot;程序名&quot;)&gt;=0)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;::AfxMessageBox(L&quot;The program is running!&quot;);<br />&nbsp;&nbsp;&nbsp;::TerminateProcess(hh,0xffffffff);<br />&nbsp;&nbsp;&nbsp;::CloseHandle(hh);<br />&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;::CloseHandle(handle);<br />&nbsp;&nbsp; <br />&nbsp;}while(Process32Next(handle,&amp;lppe));<br />&nbsp;::CloseHandle(handle);<br /><br />以上三种方法,只能检查其它程序,而不能检查自身是否正在运行,因为windows mobile 系统的运行机制和PC机上的windows XP是不太一样的.<br />]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=467" /> 
	  <id>http://www.openx.cn/default.asp?id=467</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[window mobile 5.0截获来电]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=7" label="移动开发" /> 
	  <updated>2008-07-28T16:18:39+08:00</updated>
	  <published>2008-07-28T16:18:39+08:00</published>
		  <summary type="html"><![CDATA[<p>在开发来电防火墙或来电大头贴时，首先就是要截获来电，然后再加以分析，截获来电的方法一般就是用TAPI提供的api函数，这些函数在tapi.h下．<br />１．初始化线路，并打开线路<br />&nbsp; DWORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lineHandleCount;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *lineHandles;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HLINEAPP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lineApp;<br /><br />if(lineInitialize(&amp;lineApp,theApp.m_hInstance,(LINECALLBACK)LineCallback,L&quot;Video&quot;,&amp;lineHandleCount)==0)<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp; lineHandles = new HLINE[lineHandleCount];</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(DWORD i = 0; i &lt; lineHandleCount; i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int rc;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD ver;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LINEEXTENSIONID extensionID;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( lineNegotiateAPIVersion( lineApp, i, 0x00010000, 0x00020000, &amp;ver, &amp;extensionID ) == 0 )<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rc = lineOpen( lineApp,i,&amp;lineHandles[ i ],ver,0,(DWORD)0,LINECALLPRIVILEGE_MONITOR|LINECALLPRIVILEGE_OWNER,LINEMEDIAMODE_INTERACTIVEVOICE,NULL);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;}<br /><br />２.编写回调函数，在这个函数里实现功能<br />VOID CALLBACK LineCallback(DWORD hDevice, DWORD dwMsg, DWORD dwCallbackInstance, DWORD dwParam1, DWORD dwParam2, DWORD dwParam3)<br />{<br />　//dwMsg是线路消息<br />&nbsp;&nbsp; //dwParam1,dwParam2是具体的事件<br />}<br /><br />3.当结束程序时，关闭线路<br />for ( DWORD i=0; i&lt;lineHandleCount; i++ )<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lineClose( lineHandles[i]);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete[] lineHandles;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lineShutdown( lineApp );</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=466" /> 
	  <id>http://www.openx.cn/default.asp?id=466</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[遗忘的命令]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2008-07-02T16:34:05+08:00</updated>
	  <published>2008-07-02T16:34:05+08:00</published>
		  <summary type="html"><![CDATA[转化磁盘格式<br/>format e: /fs:fat32<br/>format e: /fs:ntfs]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=465" /> 
	  <id>http://www.openx.cn/default.asp?id=465</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[获得国内中国电信,网通,铁通的最新ip段的方法]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2008-06-19T09:12:10+08:00</updated>
	  <published>2008-06-19T09:12:10+08:00</published>
		  <summary type="html"><![CDATA[<p>APNIC是管理亚太地区IP地址分配的机构，它有着丰富准确的IP地址分配库，同时这些信息也是对外公开的！下面就让我们看看如何在Linux下获得一些电信运营商的IP地址分配情况：<br /><br />wget http://ftp.apnic.net/apnic/dbase/tools/ripe-dbase-client-v3.tar.gz<br /><br />tar xzvf ripe-dbase-client-v3.tar.gz<br />cd whois-3.1<br />./configure<br />make<br />完成上述编译安装工作后，我们开始获取IP地址段；<br /><br />中国网通：<br />./whois3 -h whois.apnic.net -l -i mb MAINT-CNCGROUP &gt; /var/cnc<br /><br />中国电信：<br />./whois3 -h whois.apnic.net -l -i mb MAINT-CHINANET &gt; /var/chinanet<br /><br />中国铁通：<br />./whois3 -h whois.apnic.net -l -i mb MAINT-CN-CRTC &gt; /var/crtc<br /><br />打开获取后的文件可以看到里面的信息非常详细，甚至可以看到各个分公司的负责人、电话、电子邮件等等信息。如果想得到一份整齐干净的IP地址段文件，只要用grep和awk简单过滤就可以了。</p>
<p>过滤提取IP段</p>
<p>中国网通：<br />sed -e '/./{H;$!d;}' -e 'x;/CNCGROUP/!d' /var/cnc | grep 'inetnum' &gt;/var/cnc.txt</p>
<p>中国电信：<br />sed -e '/./{H;$!d;}' -e 'x;/CHINANET/!d' /var/chinanet | grep 'inetnum' &gt;/var/chinanet.txt</p>
<p>中国铁通：<br />sed -e '/./{H;$!d;}' -e 'x;/CN-CRTC/!d' /var/crtc | grep 'inetnum' &gt;/var/crtc.txt</p>
<p>&nbsp;</p>
<div style="FONT-SIZE: 12px"><font face="Arial">
<p><font face="Arial">其中已经包括了<strong>全国电信级网通和铁通IP地址分配段</strong></font></p>
<p><font face="Arial">[广东ip段北京网通ip段,辽宁ip段,网通ip段北京ip段,电信ip段,浙江ip段,湖南ip段,广东电信ip段,浙江电信ip段,中国ip段,山东网通ip段,山东ip段,广州ip段,福建ip段,上海电信ip段,铁通ip段,广西ip段,<br />太原ip段,辽宁网通ip段,北京电信ip段,adsl ip段,广东省ip段,河北ip段,黑龙江网通ip段,上海ip段,山西ip段,四川ip段,江西ip段,<br />河北网通ip段,四川电信ip段,广州电信ip段,广西电信ip段,广东电信adsl的ip段,服务器ip段,地区ip段,中国网通ip段,联通ip段,公网ip段,成都ip段,河南ip段,厦门ip段,<br />大连ip段,贵州ip段,陕西ip段,广州adsl ip段,济南ip段,电信adsl ip段,福州的ip段,河南网通ip段,黑龙江ip段,山东省ip段,四川网通ip段]</font></p>
<p><font face="Arial">我在网上也查了一上，有人提供：（ip段查询器下载,ip段查询软件,ip段扫描器,ip段搜索）不过我觉得不太好因，因为都不是最新的.</font><font face="Arial"><br />国外IP段如[美国ip段,韩国ip段,,日本ip段,最新美国ip段,日本的ip段,]请到http://ftp.apnic.net&nbsp;上查询</font></p>
</font></div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=464" /> 
	  <id>http://www.openx.cn/default.asp?id=464</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Web前端开发工程师必备技术列表[转]]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2008-05-26T14:45:03+08:00</updated>
	  <published>2008-05-26T14:45:03+08:00</published>
		  <summary type="html"><![CDATA[<p>要打造<strong>一流的Web产品</strong>开发团队，在团队成员基础能力上一定要下功夫。对于Web前端产品开发来说，仅仅掌握Web1.0时代简单的&quot;网页套接&quot;是完全不够的。我结合自己的团队配备，特此罗列了Web前端产品工程师所涉及的技能列表如下：</p>
<p>通过许多实际项目，个人认为一个完备的前端产品开发团队，必须拥有如下的人才配备，也希望大家补充：</p>
<ul>
    <li>团队全体成员达到所有技能中的a级标准 </li>
    <li>团队全体成员必须掌握两项技能中的b级标准，并保证所有的b级标准在该团队中有50%以上成员能达到 </li>
    <li>团队全体成员必须掌握一项技能中的c级标准，并保证所有的c级标准在该团队中有25%以上成员能达到 </li>
</ul>
<p>具体技能描述：</p>
<ul>
    <li><strong>【必备】UserInterface</strong> </li>
    <li style="LIST-STYLE-TYPE: none">
    <ol>
        <li>PhotoShop/Fireworks Design<br />a - 配合美工将草图形成具体的符合WebPage的设计<br />b - 有快速制作分层高品质PSD、PNG的能力<br />c - 能迅速将PSD、PNG的内容构思成div+css或者table等HTML代码 </li>
        <li>Flash Design<br />a - 基本动画效果<br />b - 复杂的交互体系设计，了解第三方swf辅助设计软件<br />c - 复杂的交互体系设计以及较强的对各类外埠资源（PNG、JPG、MP3、WAV等）的整合能力。精通部分第三方辅助设计软件（AE、SwishMax、Swift3D等）<br /></li>
    </ol>
    </li>
    <li><strong>【必备】Browser-side (Web Application)</strong> </li>
    <li style="LIST-STYLE-TYPE: none">
    <ol>
        <li>XHTML/CSS<br />a - 基本的layout实现<br />b - 严格跨平台的layout实现以<br />c - 优雅的HTML code，尽可能符合标准并有SEO的考虑因素。在任何平台、浏览器下基本保持一致。不要求了解各种CSS的hacks，但要求知道遇到问题应该如何查阅资料以在第一时间内解决。能够为JavaScript开发人员提供最好操作的DOM结构，让JS开发人员在开发的时候认为&quot;一切都已经准备就绪了&quot;，而不是&quot;捉襟见肘&quot;。 </li>
        <li>JavaScript/Ajax/DOM<br />a - 基本的DOM操作，了解AJAX，可以实现数据通信<br />b - 基本的DOM操作，能写高效率的OOP代码，以降低维护成本<br />c - 基于需求，进行不同的开发，选择合适的框架，做到代码效率最高，用户体验最好，代码下载量最小，并且可以在单独甚至更多产品线中最大限度重用代码 </li>
        <li>Flash Developement<br />a - 基于Timeline的ActionScript操作，能实现简单交互<br />b - 掌握a外，能实现数据层通信（与服务器以及本地SharedObject）<br />c - 精通AS1-3，能根据需求进行各类RIA开发。无论是要求支持FlashPlayer8的，还是FlashPlayer9的，都能做到开发效率最高、灵活性最大（比如对HTML层的接口设计，等等）。<br /></li>
    </ol>
    </li>
    <li><strong>【必备】Client-side (Desktop Application)</strong>
    <ol>
        <li>Apollo<br />a - 产品级的封装，基本技术了解（如何打包、如何加入HTML和JavaScript等）<br />b - 掌握a的同时，能利用Apollo的API独立设计、开发OS的文件I/O功能。<br />c - 掌握基本技能的同时，对&quot;3D概念体系&quot;有所认知。这里&quot;3D&quot;即：Design（设计）、Development（开发）、Deploy（产品部署）。能用Apollo </li>
        <li>Windows Presentation Foundation、WPF/E（Silverlight）<br />（待定，欢迎补充）<br /></li>
    </ol>
    </li>
    <li><strong>【增补】Server-side</strong> （修改：经考虑，这个技能不参与评级）<br />本来列举了&quot;1、Server端简单的技术、脚本&quot;和&quot;2、MediaServer（Red5）接口&quot;作为&quot;<strong>Web前端工程师技能列表</strong>&quot;的一种（服务器、数据逻辑层技能的）评判标准。但似乎很多朋友对于前端工程师是否应该掌握Server端技能的必要性表示怀疑。确实，要掌握好上述的展现层技能不是意见容易的事情，而且前端工程师的确非常辛苦。但是，站在另一方面来说，辛苦的原因是什么，我不知道在你日夜奋战div+CSS的时候思考过没有。就我的经验，前端的辛苦在于以下几个方面：
    <ol>
        <li><strong>重复劳动多</strong>，大量的div+css都是重复的，即便可以复制粘贴，但几千行的div海洋中去寻找一个入口恐怕都非常痛苦 </li>
        <li><strong>需求变更多</strong>，往往你折腾几个小时终于把跨平台问题解决好了，而且在IE6、7和Firefox下面都能显示同样的效果了，甚至连JavaScript交互都已经快搞定了。突然上面说需求要变。这无疑是莫大的痛苦。 </li>
    </ol>
    <p>也许表面上看，这跟Server端技能无关，但我觉得有好的Server端的意识，一定会有所帮助（当然不可能解决所有的问题）。毕竟信息结构和数据库是密切相关的，而Server是连接数据库的唯一渠道（至少大多数B/S应用是如此）。掌握Server端的基本技能，对于同逻辑层开发人员设计接口是非常重要的。而且HTML表现层在开发时与数据的分离，也与Server端的各种模板技术有关。例如PHP中的Smarty模板（我曾经用的）、jsp的model2概念等等。HTML结构如何设计，如何让HTML重用，甚至在HTML层进行OOP的开发（我现在在新产品线中设计的前端开发流程），都需要Server端的支持。最起码，你要告诉php程序员你需要什么。如果你完全对PHP一无所知的话，那也无从谈起了。<br />此外，对于创业团队，往往人手非常有限。为了让运营成本降到最低，所有的技术人员都有义务对Server端技术有所了解。如果为了修改一个网页的标题还要跑去喊PHP程序员连接Remote Server的话，那实在是增加了整个公司的运营成本。<br />总结：我认为，可以不了解技术细节，但应该知道原理，最好能掌握一两套设计思想（毕竟数据逻辑都在这里走，光看HTML和JavaScript，对人的见识还是有局限的，这种局限限制了我自己很久的时间），那将是一比宝贵的财富。<br /></p>
    </li>
    <li><strong>【增补】Mobile-side</strong>（不参与评级）<br />
    <ol>
        <li style="LIST-STYLE-TYPE: none">看到很多朋友留言说前端工程师没前途，我在想，同时掌握移动设备的技能是否也是拓展前途的一个必要性？这里再多说几句，关于技术人员的前途，目前在国内确实得用&quot;惨淡&quot;来形容。浮躁的氛围让技术人才往往过早放弃了自己的技术生涯，而尔虞我诈的整体道德水平也让单纯的技术人员痛不欲生（我身边太多了，恩，不说具体细节了，呵呵）。<br />作为一个技术人员，开发人员，在<strong>保持纯粹地敬业心态（这是前提，这么没有，啥也别谈）</strong>外，更要学会如何保护自己，如何壮大自身，社会不会同情你，只有你自己才能保护你自己。<br /></li>
        <li>Flashlite<br />（待定，欢迎补充） </li>
        <li>Java？<br />（待定，欢迎补充）</li>
    </ol>
    </li>
</ul>
<p>转自：http://www.awflasher.com/blog/archives/906</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=463" /> 
	  <id>http://www.openx.cn/default.asp?id=463</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[举国之殇,全民同咽]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=5" label="点点滴滴" /> 
	  <updated>2008-05-19T09:36:25+08:00</updated>
	  <published>2008-05-19T09:36:25+08:00</published>
		  <summary type="html"><![CDATA[<div align="center"><strong>国 务 院 公 告</strong></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;为表达全国各族人民对四川汶川大地震遇难同胞的深切哀悼，国务院决定，2008年5月19日至21日为全国哀悼日。在此期间，全国和各驻外机构下半旗志哀，停止公共娱乐活动，外交部和我国驻外使领馆设立吊唁簿。5月19日14时28分起，全国人民默哀3分钟，届时汽车、火车、舰船鸣笛，防空警报鸣响。<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=462" /> 
	  <id>http://www.openx.cn/default.asp?id=462</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[一方有难八方支援！向四川人民伸出援手！]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=5" label="点点滴滴" /> 
	  <updated>2008-05-14T10:41:40+08:00</updated>
	  <published>2008-05-14T10:41:40+08:00</published>
		  <summary type="html"><![CDATA[<p>[img]http://www.openx.cn/attachments/month_0805/k2008514104731.jpg[/img]</p>
<p>中国红十字基金会：http://www.crcf.org.cn/</p>
<p>在线募捐通道：http://www.crcf.org.cn/donationol/index.htm</p>
<p>估计这几天募捐的人太多了，页面需要多刷几次才能显示。</p>
<p><strong><font color="#ff0000" size="4">一方有难八方支援！向四川人民伸出援手！</font></strong></p>
<p>[img]http://www.openx.cn/attachments/month_0805/d2008514104022.jpg[/img]</p>
<p><font color="#ff0000" size="4"><strong>我已经伸出去了～虽然不多，你呢？一起加入吧！</strong></font></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=461" /> 
	  <id>http://www.openx.cn/default.asp?id=461</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Windows Mobile 常用键值(VK)对应表 ]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=7" label="移动开发" /> 
	  <updated>2008-04-28T14:50:05+08:00</updated>
	  <published>2008-04-28T14:50:05+08:00</published>
		  <summary type="html"><![CDATA[<span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> VK_TSOFT1&nbsp;&nbsp; VK_F1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Softkey 1</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> VK_TSOFT2&nbsp;&nbsp; VK_F2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Softkey 2</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> VK_TTALK&nbsp;&nbsp;&nbsp; VK_F3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Talk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> VK_TEND&nbsp;&nbsp;&nbsp;&nbsp; VK_F4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> VK_THOME&nbsp;&nbsp;&nbsp; VK_LWIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Home&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> VK_TBACK&nbsp;&nbsp;&nbsp; VK_ESCAPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Back&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #000000"><br /><br /></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> VK_TACTION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VK_RETURN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Action&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> VK_TRECORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VK_F10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Record</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> VK_TFLIP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VK_F17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Flip</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> VK_TPOWER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VK_F18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Power</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> VK_TVOLUMEUP&nbsp;&nbsp;&nbsp; VK_F6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Volume Up&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> VK_TVOLUMEDOWN&nbsp; VK_F7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Volume Down</span>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=460" /> 
	  <id>http://www.openx.cn/default.asp?id=460</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[我们家乐鑫上报纸啦～]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=4" label="照片" /> 
	  <updated>2008-04-23T13:11:59+08:00</updated>
	  <published>2008-04-23T13:11:59+08:00</published>
		  <summary type="html"><![CDATA[<p>[img]http://www.openx.cn/attachments/month_0804/d2008423131036.jpg[/img]</p>
<p>我们家乐鑫小朋友上报纸啦，大家来投票哇～<br />http://wfw.fznews.com.cn/zp.asp?id=6598<br /></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=459" /> 
	  <id>http://www.openx.cn/default.asp?id=459</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Baby 80天艺术照二家爆光]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2008-04-15T20:35:01+08:00</updated>
	  <published>2008-04-15T20:35:01+08:00</published>
		  <summary type="html"><![CDATA[看偶80天就能抬这么高的头哇～～～<br/><img src="http://www.wuquanquan.com/attachments/month_0804/w2008415201231.jpg" border="0" alt=""/><br/><br/>我是奥运宝宝～～～～<br/><img src="http://www.wuquanquan.com/attachments/month_0804/s200841520209.jpg" border="0" alt=""/><br/><br/>首家曝光在这里:<a target="_blank" href="http://www.wuquanquan.com/article.asp?id=2">http://www.wuquanquan.com/article.asp?id=2</a>,特此申明<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=458" /> 
	  <id>http://www.openx.cn/default.asp?id=458</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[关闭默认共享　禁止ipc$空连接]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2008-04-13T15:06:26+08:00</updated>
	  <published>2008-04-13T15:06:26+08:00</published>
		  <summary type="html"><![CDATA[<p>默认共享： <br />在Windows 2000/XP/2003系统中，逻辑分区与Windows目录默认为共享，这是为管理员管理服务器的方便而设，但却成为了别有用心之徒可趁的安全漏洞。</p>
<p>IPC$ <br />IPC$(Internet Process Connection)是共享&quot;命名管道&quot;的资源，它是为了让进程间通信而开放的命名管道，可以通过验证用户名和密码获得相应的权限，在远程管理计算机和查看计算机的共享资源时使用。</p>
<p>利用IPC$,连接者可以与目标主机建立一个空的连接，即无需用户名和密码就能连接主机，当然这样连接是没有任何操作权限的。但利用这个空的连接，连接者可以得到目标主机上的用户列表。 <br />利用获得的用户列表，就可以猜密码，或者穷举密码，从而获得更高，甚至管理员权限。</p>
<p>只要通过IPC$，获得足够的权限，就可以在主机上运行程序、创建用户、把主机上C、D、E等逻辑分区共享给入侵者，主机上的所有资料，包括QQ密码、email帐号密码、甚至存在电脑里的信用卡资料都会暴露在入侵者面前。</p>
<p>要防止别人用ipc$和默认共享入侵，需要禁止ipc$空连接，避免入侵者取得用户列表，并取消默认共享。</p>
<p><br />禁止ipc$空连接进行枚举 <br />运行regedit，找到如下组键[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA]把RestrictAnonymous = DWORD的键值改为：00000001 <br />Value：0x0(缺省) <br />0x1 匿名用户无法列举本机用户列表 <br />0x2 匿名用户无法连接本机IPC$共享 <br />说明:不建议使用2，否则可能会造成你的一些服务无法启动，如SQL Server</p>
<p>关闭139与445端口 <br />ipc$连接是需要139或445端口来支持的，139端口的开启表示netbios协议的应用，通过139,445(win2000)端口实现对共享文件/打印机的访问，因此关闭139与445端口可以禁止ipc$连接。</p>
<p>关闭139端口可以通过禁用 netbios 协议来实现。 <br />139端口关闭方法：控制面板-&gt;网络和拨号连接-&gt;本地连接，点属性按钮进入&ldquo;本地连接 属性&rdquo;页面，选择&ldquo;Internet 协议 (TCP/IP)&rdquo;，然后点属性按钮，在弹出窗口点高级按钮，然后选择WINS标签，点&ldquo;禁用 TCP/IP 上的 NetBios&rdquo;，最后确定退出。</p>
<p>445端口关闭方法：运行regedit，找到项[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters]，建立名称为SMBDeviceEnabled，DWORD类型的键，值为00000000。</p>
<p>关闭默认共享：</p>
<p>1、删除已有的共享 <br />运行 <br />net share ipc$ /del <br />net share admin$ /del <br />net share c$ /del <br />net share d$ /del <br />&hellip;&hellip;&hellip;&hellip;（有几个删几个）</p>
<p>OR：建立新TXT文件，输入： <br />ECHO OFF <br />NET SHARE C$ /Delete <br />NET SHARE D$ /Delete <br />NET SHARE E$ /Delete <br />NET SHARE F$ /Delete <br />NET SHARE G$ /Delete <br />NET SHARE H$ /Delete <br />NET SHARE ADMIN$ /Delete <br />NET SHARE IPC$ /Delete <br />ECHO ON <br />（有更多分区的话继续加，I$ J$ &hellip;&hellip;） <br />另存为 noshare.bat 放在系统目录下，建立快捷方式到&ldquo;开始&rdquo;菜单的&ldquo;启动&rdquo;组。 这样每次启动的时候都自动删除共享。</p>
<p>或者在&ldquo;控制面板-&gt;管理工具-&gt;计算机管理&rdquo;里的&ldquo;共享文件夹-&gt;共享&rdquo;中删除。</p>
<p>2、修改注册表 <br />删除了共享，下一次启动时还是会自动打开共享，要永久关闭需要修改注册表</p>
<p>IPC$、Admin$和C$、D$都不同，在注册表的修改是不同的。你所改的只是禁止了C$、D$。而没有禁止IPC$。 <br />禁止C$、D$管理共享 <br />对于服务器而言： <br />修改HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters <br />Name：AutoShareServer <br />Type：DWORD <br />Value：0 <br />对于工作站而言： <br />修改HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters <br />Name：AutoShareWks <br />Type：DWORD <br />Value：0 <br />修改注册表后需要重启Server服务或重新启动机器。 <br />注：这些键值在默认情况下在主机上是不存在的，需要自己手动添加。</p>
<p>禁止ADMIN$缺省共享 <br />HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters <br />Name：AutoShareWks <br />Type：REG_DWORD <br />Value：0x0</p>
<p><br />另外:</p>
<p>A、关闭ipc$和默认共享依赖的服务（不推荐） <br />net stop lanmanserver <br />可能会有提示说，XXX服务也会关闭是否继续。因为还有些次要的服务依赖于lanmanserver。一般情况按y继续就可以了。</p>
<p>B、最简单的办法是设置复杂密码，防止通过ipc$穷举密码。但如果你有其他漏洞，ipc$将为进一步入侵提供方便。</p>
<p>C、装防火墙，或者端口过滤。</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=457" /> 
	  <id>http://www.openx.cn/default.asp?id=457</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[嘿秀~~~日志换皮肤咯!]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=5" label="点点滴滴" /> 
	  <updated>2008-04-08T17:59:04+08:00</updated>
	  <published>2008-04-08T17:59:04+08:00</published>
		  <summary type="html"><![CDATA[<p>嘿秀~终于搞定换了一套Blog,也换了一套皮肤,数据库也从Access转成SQL的啦~</p>
<p>重新温习了一次ASP代码,发现宝刀未老,ASP基本没忘,不错不错,ASP其实还是很强大的说.</p>
<p>&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=456" /> 
	  <id>http://www.openx.cn/default.asp?id=456</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[系统架构师]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2008-04-08T13:01:37+08:00</updated>
	  <published>2008-04-08T13:01:37+08:00</published>
		  <summary type="html"><![CDATA[<p>系统架构师负责设计系统整体架构，从需求到设计的每个细节都要考虑到，把握整个项目，使设计的项目尽量效率高，开发容易，维护方便，升级简单，等等<br />系统架构师的职责： </p>
<p><br />一、理解系统的业务需求，制定系统的整体框架（包括：技术框架和业务框架）</p>
<p><br />二、对系统框架相关技术和业务进行培训，指导开发人员开发。并解决系统开发、运行中出现的各种问题。 系统架构师的目的： </p>
<p><br />对系统的重用、扩展、安全、性能、伸缩性、简洁等做系统级的把握。 系统架构师能力要求： </p>
<p><br />一、系统架构相关的知识和经验。 </p>
<p><br />二、很强的自学能力、分析能力、解决问题的能力。</p>
<p><br /><br />三、写作、沟通表达、培训。</p>
<p><br />角色 <br /><br />软件架构师Software Architect 定义 <br /><br />主导系统全局分析设计和实施、负责软件构架和关键技术决策的角色 职责 </p>
<p><br />l、领导与协调整个项目中的技术活动（分析、设计和实施等）</p>
<p>&nbsp;2、推动主要的技术决策，并最终表达为软件构架 </p>
<p>3、确定和文档化系统的相对构架而言意义重大的方面，包括系统的需求、设计、实施和部署等&ldquo;视图&rdquo; </p>
<p>4、确定设计元素的分组以及这些主要分组之间的接口 </p>
<p>5、为技术决策提供规则，平衡各类涉众的不同关注点，化解技术风险，并保证相关决定被有效的传达和贯彻</p>
<p>&nbsp;6、理解、评价并接收系统需求 </p>
<p>7、评价和确认软件架构的实现 专业技能 </p>
<p><br />l、技术全面、成熟练达、洞察力强、经验丰富，具备在缺乏完整信息、众多问题交织一团、模糊和矛盾的情况下，迅速抓住问题要害，并做出合理的关键决定的能力 l、具备战略性和前瞻性思维能力，善于把握全局，能够在更高抽象级别上进行思考； l、对项目开发涉及的所有问题领域都有经验，包括彻底地理解项目需求，开展分析设计之类软件工程活动等 2、具备领导素质，以在各小组之间推进技术工作，并在项目压力下做出牢靠的关键决策 3、拥有优秀的沟通能力，用以进行说服、鼓励和指导等活动，并赢得项目成员的信任； 4、以目标导向和主动的方式来不带任何感情色彩地关注项目结果，构架师应当是项目背后的技术推动力，而非构想者或梦想家（追求完美） 5、精通构架设计的理论、实践和工具，并掌握多种参考构架、主要的可重用构架机制和模式（例如J2EE架构等）； 6、具备系统设计员的所有技能，但涉及面更广、抽象级别更高； 活动 <br /><br />确定用例或需求的优先级、进行构架分析、创建构架的概念验证原型、评估构架的概念验证原型的可行性、组织系统实施模型、描述系统分布结构、描述运行时刻构架、确定设计机制、确定设计元素、合并已有设计元素 工件 <br /><br />软件构架文档、参考构架、分析模型、设计模型、实施模型、部署模型、构架概念验证原型、接口、事件、信号与协议 系统架构师 <br /></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=455" /> 
	  <id>http://www.openx.cn/default.asp?id=455</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[收到百度HI邀请。]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2008-03-30T17:53:37+08:00</updated>
	  <published>2008-03-30T17:53:37+08:00</published>
		  <summary type="html"><![CDATA[<p>装麦咖啡的朋友注意咯～</p>
<p>安装百度Hi时候出现imcs.dll无法写入的错误。</p>
<p>[img]/attachments/month0803/pmes_bHI_1.jpg[/img]</p>
<p>这是由于麦咖啡的访问保护中屏蔽了百度搜霸造成的。</p>
<p>[img]/attachments/month0803/3zr6_bHI_2.jpg[/img]</p>
<p>去掉阻止就可以顺利安装啦。</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=448" /> 
	  <id>http://www.openx.cn/default.asp?id=448</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[软件项目版本号的命名格式]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2008-03-30T16:35:52+08:00</updated>
	  <published>2008-03-30T16:35:52+08:00</published>
		  <summary type="html"><![CDATA[版本控制比较普遍的 3 种命名格式 :<br /><br />一、 GNU 风格的版本号命名格式 :<br />主版本号 . 子版本号 [. 修正版本号 [. 编译版本号 ]]<br />英文对照 : Major_Version_Number.Minor_Version_Number[.Revision_Number[.Build_Number]]<br />示例 : 1.2.1, 2.0, 5.0.0 build-13124<br /><br />二、 Windows 风格的版本号命名格式 :<br />主版本号 . 子版本号 [ 修正版本号 [. 编译版本号 ]]<br />英文对照 : Major_Version_Number.Minor_Version_Number[Revision_Number[.Build_Number]]<br />示例: 1.21, 2.0<br /><br />三、.Net Framework 风格的版本号命名格式:<br />主版本号.子版本号[.编译版本号[.修正版本号]]<br />英文对照: Major_Version_Number.Minor_Version_Number[.Build_Number[.Revision_Number]]<br />版本号由二至四个部分组成：主版本号、次版本号、内部版本号和修订号。主版本号和次版本号是必选的；内部版本号和修订号是可选的，但是如果定义了修订号部分，则内部版本号就是必选的。所有定义的部分都必须是大于或等于 0 的整数。<br /><br />应根据下面的约定使用这些部分：<br />Major ：具有相同名称但不同主版本号的程序集不可互换。例如，这适用于对产品的大量重写，这些重写使得无法实现向后兼容性。<br />Minor ：如果两个程序集的名称和主版本号相同，而次版本号不同，这指示显著增强，但照顾到了向后兼容性。例如，这适用于产品的修正版或完全向后兼容的新版本。<br />Build ：内部版本号的不同表示对相同源所作的重新编译。这适合于更改处理器、平台或编译器的情况。<br />Revision ：名称、主版本号和次版本号都相同但修订号不同的程序集应是完全可互换的。这适用于修复以前发布的程序集中的安全漏洞。<br />程序集的只有内部版本号或修订号不同的后续版本被认为是先前版本的修补程序 (Hotfix) 更新。<br /><br />版本号管理策略<br /><br />一、 GNU 风格的版本号管理策略：<br />1．项目初版本时 , 版本号可以为 0.1 或 0.1.0, 也可以为 1.0 或 1.0.0, 如果你为人很低调 , 我想你会选择那个主版本号为 0 的方式 ;<br />2．当项目在进行了局部修改或 bug 修正时 , 主版本号和子版本号都不变 , 修正版本号加 1;<br />3. 当项目在原有的基础上增加了部分功能时 , 主版本号不变 , 子版本号加 1, 修正版本号复位为 0, 因而可以被忽略掉 ;<br />4．当项目在进行了重大修改或局部修正累积较多 , 而导致项目整体发生全局变化时 , 主版本号加 1;<br />5．另外 , 编译版本号一般是编译器在编译过程中自动生成的 , 我们只定义其格式 , 并不进行人为控制 .<br /><br />二、 Window 下的版本号管理策略：<br />1．目初版时 , 版本号为 1.0 或 1.00;<br />2. 当项目在进行了局部修改或 bug 修正时，主版本号和子版本号都不变 , 修正版本号加 1;<br />3. 当项目在原有的基础上增加了部分功能时 , 主版本号不变 , 子版本号加 1, 修正版本号复位为 0, 因而可以被忽略掉 ;<br />4. 当项目在进行了重大修改或局部修正累积较多 , 而导致项目整体发生全局变化时 , 主版本号加 1;<br />5. 另外 , 编译版本号一般是编译器在编译过程中自动生成的 , 我们只定义其格式 , 并不进行人为控制 .<br /><br />另外 , 还可以在版本号后面加入 Alpha, Beta, Gamma, Current, RC (Release Candidate), Release, Stable 等后缀 , 在这些后缀后面还可以加入 1 位数字的版本号 .<br />对于用户来说 , 如果某个软件的主版本号进行了升级 , 用户还想继续那个软件 , 则发行软件的公司一般要对用户收取升级费用 ; 而如果子版本号或修正版本号发生了升级 , 一般来说是免费的 .<br />附： alphal 内部测试版<br />　　 beta 外部测试版<br />　　 demo 演示版<br />　　 Enhance 增强版或者加强版 属于正式版<br />　　 Free 自由版<br />　　 Full version 完全版 属于正式版<br />　　 shareware 共享版<br />　　 Release 发行版 有时间限制<br />　　 Upgrade 升级版<br />　　 Retail 零售版<br />　　 Cardware 属共享软件的一种，只要给作者回复一封电邮或明信片即可。（有的作者并由此提供注册码等），目前这种形式已不多见。<br />　　 Plus 属增强版，不过这种大部分是在程序界面及多媒体功能上增强。<br />　　 Preview 预览版<br />　　 Corporation &amp; Enterprise 企业版<br />　　 Standard 标准版<br />　　 Mini 迷你版也叫精简版只有最基本的功能<br />　　 Premium -- 贵价版<br />　　 Professional -- 专业版<br />　　 Express -- 特别版<br />　　 Deluxe -- 豪华版<br />　　 Regged -- 已注册版<br />　　 CN -- 简体中文版<br />　　 CHT -- 繁体中文版<br />　　 EN -- 英文版<br />　　 Multilanguage -- 多语言版<br /><br />注释：<br /><br />&alpha;版<br />此版本表示该软件仅仅是一个初步完成品，通常只在软件开发者内部交流，也有很少一部分发布给专业测试人员。一般而言，该版本软件的 bug 较多，普通用户最好不要安装。<br /><br />&beta;（beta）版<br />该版本相对于&alpha;版已有了很大的改进，消除了严重的错误，但还是存在着一些缺陷，需要经过大规模的发布测试来进一步消除。这一版本通常由软件公司免费发布，用户可从相关的站点下载。通过一些专业爱好者的测试，将结果反馈给开发者，开发者们再进行有针对性的修改。该版本也不适合一般用户安装。<br /><br />&gamma;版<br />该版本已经相当成熟了，与即将发行的正式版相差无几，如果用户实在等不及了，尽可以装上一试。<br /><span class="sp874">// 本文转自 C++Builder研究 - http://www.ccrun.com/article.asp?i=1006&amp;d=6074sk</span><br /><br />trial（试用版）<br />试用版软件在最近的几年里颇为流行，主要是得益于互联网的迅速发展。该版本软件通常都有时间限制，过期之后用户如果希望继续使用，一般得交纳一定的费用进行注册或购买。有些试用版软件还在功能上做了一定的限制。<br /><br />unregistered（未注册版）<br />未注册版与试用版极其类似，只是未注册版通常没有时间限制，在功能上相对于正式版做了一定的限制，例如绝大多数网络电话软件的注册版和未注册版，两者之间在通话质量上有很大差距。还有些虽然在使用上与正式版毫无二致，但是动不动就会弹出一个恼人的消息框来提醒你注册，如看图软件 acdsee 、智能陈桥汉字输入软件等。<br /><br />demo版<br />也称为演示版，在非正式版软件中，该版本的知名度最大。 demo 版仅仅集成了正式版中的几个功能，颇有点像 unregistered 。不同的是， demo 版一般不能通过升级或注册的方法变为正式版。<br />以上是软件正式版本推出之前的几个版本，&alpha;、&beta;、&gamma;可以称为测试版，大凡成熟软件总会有多个测试版，如 windows 98 的&beta;版，前前后后将近有 10 个。这么多的测试版一方面为了最终产品尽可能地满足用户的需要，另一方面也尽量减少了软件中的 bug 。而 trial 、 unregistered 、 demo 有时统称为演示版，这一类版本的广告色彩较浓，颇有点先尝后买的味道，对于普通用户而言自然是可以免费尝鲜了。<br /><br />正式版<br />不同类型的软件的正式版本通常也有区别。<br /><br />release<br />该版本意味&ldquo;最终释放版&rdquo;，在出了一系列的测试版之后，终归会有一个正式版本，对于用户而言，购买该版本的软件绝对不会错。该版本有时也称为标准版。一般情况下， release 不会以单词形式出现在软件封面上，取而代之的是符号 (r) ，如 windows nt(r) 4.0 、 ms-dos(r) 6.22 等。<br /><br />registered<br />很显然，该版本是与 unregistered 相对的注册版。注册版、 release 和下面所讲的 standard 版一样，都是软件的正式版本，只是注册版软件的前身有很大一部分是从网上下载的。<br /><br />standard<br />这是最常见的标准版，不论是什么软件，标准版一定存在。标准版中包含了该软件的基本组件及一些常用功能，可以满足一般用户的需求。其价格相对高一级版本而言还是&ldquo;平易近人&rdquo;的。<br /><br />deluxe<br />顾名思义即为&ldquo;豪华版&rdquo;。豪华版通常是相对于标准版而言的，主要区别是多了几项功能，价格当然会高出一大块，不推荐一般用户购买。此版本通常是为那些追求&ldquo;完美&rdquo;的专业用户所准备的。<br /><br />reference<br />该版本型号常见于百科全书中，比较有名的是微软的 encarta 系列。 reference 是最高级别，其包含的主题、图像、影片剪辑等相对于 standard 和 deluxe 版均有大幅增加，容量由一张光盘猛增至三张光盘，并且加入了很强的交互功能，当然价格也不菲。可以这么说，这一版本的百科全书才能算是真正的百科全书，也是发烧友们收藏的首选。<br /><br />professional（专业版）<br />专业版是针对某些特定的开发工具软件而言的。专业版中有许多内容是标准版中所没有的，这些内容对于一个专业的软件开发人员来说是极为重要的。如微软的 visual foxpro 标准版并不具备编译成可执行文件的功能，这对于一个完整的开发项目而言显然是无法忍受的，若客户机上没有 foxpro 将不能使用。如果用专业版就没有这个问题了。<br /><br />enterprise（企业版）<br />企业版是开发类软件中的极品（相当于百科全书中的 reference 版）。拥有一套这种版本的软件可以毫无障碍地开发任何级别的应用软件。如著名的 visual c++ 的企业版相对于专业版来说增加了几个附加的特性，如 sql 调试、扩展的存储过程向导、支持 as/400 对 ole db 的访问等。而这一版本的价格也是普通用户无法接受的。如微软的 visual studios 6.0 enterprise 中文版的价格为 23000 元。<br /><br />其他版本<br />除了以上介绍的一些版本外，还有一些专有版本名称。<br /><br />update（升级版）<br />升级版的软件是不能独立使用的，该版本的软件在安装过程中会搜索原有的正式版，如果不存在，则拒绝执行下一步。如 microsoft office 2000 升级版、 windows 9x 升级版等等。<br /><br />oem版<br />oem 版通常是捆绑在硬件中而不单独销售的版本。将自己的产品交给别的公司去卖，保留自己的著作权，双方互惠互利，一举两得。<br /><br />单机（网络）版<br />网络版在功能、结构上远比单机版复杂，如果留心一下软件的报价，你就会发现某些软件单机版和网络版的价格相差非常大，有些网络版甚至多一个客户端口就要加不少钱。<br /><br />普及版<br />该版本有时也会被称为共享版，其特点是价格便宜（有些甚至完全免费）、功能单一、针对性强（当然也有占领市场、打击盗版等因素）。与试用版不同的是，该版本的软件一般不会有时间上的限制。当然，如果用户想升级，最好还是去购买正式版。<br /><br /><br />以上是一些常见软件版本的简要介绍，随着软件市场行为的变化，现在也出现了一些新的版本命名方式，比如windows xp中的xp是取自于experience中的第二、第三个字母。希望以上内容能够对大家的购买、使用和下载软件有所帮助。<br /><br /><br />基于商业上考虑，很多的软件都不是非常严谨的遵循这个规则的。最有名的就是微软了。例如他的 NT 系列版本。大家比较熟悉的是从 NT 4.0 开始的。 99 年推出了 windows 2000 ， 2001 年退出了 windows xp ， 2003 年推出了 windows 2003 ，乍一看版本区别蛮大的，但是看他们的内部版本号就会发现，变化其实并不大，只是界面变化的大了而已。这是软件公司经常干的事情。 Window 2000 的版本号是 NT 5.0 ， windows xp 的版本号是 NT 5.1 ， windows 2003 的版本号是 NT 5.2 ，而现在的 longhorn 才是真正的 NT 6.0 （印象中是，不敢确认）。这样就可以持续的赚广大客户的钱。毕竟人的眼睛看得东西是最直观的，所以给人感觉也是变化最大的<br />]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=447" /> 
	  <id>http://www.openx.cn/default.asp?id=447</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[国际：如何识别真正的程序员]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2008-03-22T20:14:13+08:00</updated>
	  <published>2008-03-22T20:14:13+08:00</published>
		  <summary type="html"><![CDATA[<p>如何识别优秀的程序员？并不是像听起来那么容易。在这儿工作经验的作用是很有限的，因为伟大的程序员不一定要&lsquo;正式&rsquo;的工作经历来证明他们的伟大。</p>
<p><strong>1，激情。</strong></p>
<p>我曾经遇到许多&ldquo;职业程序员&rdquo;，他们从事IT是因为觉得这是一种职业，他们只在工作时间编程，除非送去培训否则他们不会学习新东西，这不是好的程序员。我认为一个好的程序员总是对编程充满激情，而且好的开发者会做一些编程工作即使这没有报酬。激情是一个优秀程序员的重要指标。</p>
<p><strong>2，自学好学</strong></p>
<p>编程领域始终发展变化着，不出一年有些新技术就变成了老技术，这并不是说好的程序员要对所有新技术跟进，但有些却对学习任何新技术都没有兴趣。他们通常在学校学习了编程，然后工作后单位安排学什么就学什么。如果在招聘中你听到&ldquo;让我培训一个星期我就会胜任这个工作&rdquo;那不要雇佣他。实际上，真正优秀的程序员始终谈论着你所不知道的新技术，向人们解释为什么你必须用这个技术，哪怕没有听众听得明白，哪怕他自己也不明白。</p>
<p><strong>3，聪明</strong></p>
<p>聪明包括很多因素，情绪和社会交际只是其中之一。好的程序员绝不木讷，他们是最聪明的人，他们中的许多善于交际，健谈、兴趣广泛。</p>
<p><strong>4，隐性的经验</strong></p>
<p>&mdash;好的程序员通。常有自己的私人的一些研究、爱好、项目，而这些是他们不写在简历上 (通常觉得不值得写)，但表现出来却可能恰恰是他的潜能、深度和后劲所在。</p>
<p><strong>5，技术多样性</strong></p>
<p>由于好的程序员喜欢学习和涉猎新技术，所以一般来说超过22岁的都熟知很多新技术，而且对多种技术的长短有 &ldquo;强烈&rdquo;的个人意见/见解，喜好尝试新鲜技术。</p>
<p><strong>6，资格证书</strong></p>
<p>资格证书并不是识别真正程序员的方法，MCSE、SCJP、说明不了什么，它们只是让别人认识和获取的，顶多代表这个人在某个技术有一定的知识。</p>
<p>原文作者在文末写道：以上所说的标准并不是绝对的，因为有些优秀的程序员确实不符合上述，而有些bad程序员却符合了。但相信这些对大多数真正的程序员都适用。</p>
<p>&nbsp;</p>
<p><strong>总结而言，优秀的程序员通常有一下特点：</strong></p>
<p>n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对技术充满激情；</p>
<p>n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将编程作为一种爱好</p>
<p>n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果你允许会滔滔不绝地跟你谈论技术</p>
<p>n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有过个人的开发经历（与4意思相同）</p>
<p>n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 坚持认为某种技术最好</p>
<p>n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果让他用他认为不好的技术他会非常别扭</p>
<p>n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 聪明、健谈、兴趣广泛</p>
<p>n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在大学和工作前就开始接触程序</p>
<p>&nbsp;</p>
<p>摘:http://news.csdn.net/n/20080117/112853.html</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=446" /> 
	  <id>http://www.openx.cn/default.asp?id=446</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Linux系统指令大全]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2008-03-17T14:11:18+08:00</updated>
	  <published>2008-03-17T14:11:18+08:00</published>
		  <summary type="html"><![CDATA[<span class="a14c" id="zoom">&nbsp;
<p style="TEXT-INDENT: 2em">名称：cat </p>
<p style="TEXT-INDENT: 2em">使用权限：所有使用者 </p>
<p style="TEXT-INDENT: 2em">使用方式：cat [-AbeEnstTuv] [--help] [--version] fileName </p>
<p style="TEXT-INDENT: 2em">说明：把档案串连接后传到基本输出（萤幕或加 &gt; fileName 到另一个档案） </p>
<p style="TEXT-INDENT: 2em">参数： </p>
<p style="TEXT-INDENT: 2em">-n 或 --number 由 1 开始对所有输出的行数编号 </p>
<p style="TEXT-INDENT: 2em">-b 或 --number-nonblank 和 -n 相似，只不过对于空白行不编号 </p>
<p style="TEXT-INDENT: 2em">-s 或 --squeeze-blank 当遇到有连续两行以上的空白行，就代换为一行的空白行 </p>
<p style="TEXT-INDENT: 2em">-v 或 --show-nonprinting </p>
<p style="TEXT-INDENT: 2em">范例： </p>
<p style="TEXT-INDENT: 2em">cat -n textfile1 &gt; textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 </p>
<p style="TEXT-INDENT: 2em">cat -b textfile1 textfile2 &gt;&gt; textfile3 把 textfile1 和 textfile2 的档案内容加上行号（空白行不加）之后将内容附加到 textfile3 </p>
<p style="TEXT-INDENT: 2em">名称 : cd </p>
<p style="TEXT-INDENT: 2em">使用权限 : 所有使用者 </p>
<p style="TEXT-INDENT: 2em">使用方式 : cd [dirName] </p>
<p style="TEXT-INDENT: 2em">说明 : 变换工作目录至 dirName。 其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略，则变换至使用者的 home directory (也就是刚 login 时所在的目录)。 </p>
<p style="TEXT-INDENT: 2em">另外，&quot;~&quot; 也表示为 home directory 的意思，&quot;.&quot; 则是表示目前所在的目录，&quot;..&quot; 则表示目前目录位置的上一层目录。 </p>
<p style="TEXT-INDENT: 2em">范例 : 跳到 /usr/bin/ : </p>
<p style="TEXT-INDENT: 2em">cd /usr/bin </p>
<p style="TEXT-INDENT: 2em">跳到自己的 home directory : </p>
<p style="TEXT-INDENT: 2em">cd ~ </p>
<p style="TEXT-INDENT: 2em">跳到目前目录的上上两层 : </p>
<p style="TEXT-INDENT: 2em">cd ../.. </p>
<p style="TEXT-INDENT: 2em">指令名称 : chmod </p>
<p style="TEXT-INDENT: 2em">使用权限 : 所有使用者 </p>
<p style="TEXT-INDENT: 2em">使用方式 : chmod [-cfvR] [--help] [--version] mode file... </p>
<p style="TEXT-INDENT: 2em">说明 : Linux/Unix 的档案存取权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所存取。 </p>
<p style="TEXT-INDENT: 2em">把计 : </p>
<p style="TEXT-INDENT: 2em">mode : 权限设定字串，格式如下 : [ugoa...][[+-=][rwxX]...][,...]，其中u 表示该档案的拥有者，g 表示与该档案的拥有者属于同一个群体(group)者，o 表示其他以外的人，a 表示这三者皆是。 </p>
<p style="TEXT-INDENT: 2em">+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。 </p>
<p style="TEXT-INDENT: 2em">r 表示可读取，w 表示可写入，x 表示可执行，X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。 </p>
<p style="TEXT-INDENT: 2em">-c : 若该档案权限确实已经更改，才显示其更改动作 </p>
<p style="TEXT-INDENT: 2em">-f : 若该档案权限无法被更改也不要显示错误讯息 </p>
<p style="TEXT-INDENT: 2em">-v : 显示权限变更的详细资料 </p>
<p style="TEXT-INDENT: 2em">-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更) </p>
<p style="TEXT-INDENT: 2em">--help : 显示辅助说明 </p>
<p style="TEXT-INDENT: 2em">--version : 显示版本 </p>
<p style="TEXT-INDENT: 2em">范例 :将档案 file1.txt 设为所有人皆可读取 : </p>
<p style="TEXT-INDENT: 2em">chmod ugo+r file1.txt </p>
<p style="TEXT-INDENT: 2em">将档案 file1.txt 设为所有人皆可读取 : </p>
<p style="TEXT-INDENT: 2em">chmod a+r file1.txt </p>
<p style="TEXT-INDENT: 2em">将档案 file1.txt 与 file2.txt 设为该档案拥有者，与其所属同一个群体者可写入，但其他以外的人则不可写入 : </p>
<p style="TEXT-INDENT: 2em">chmod ug+w,o-w file1.txt file2.txt </p>
<p style="TEXT-INDENT: 2em">将 ex1.py 设定为只有该档案拥有者可以执行 : </p>
<p style="TEXT-INDENT: 2em">chmod u+x ex1.py </p>
<p style="TEXT-INDENT: 2em">将目前目录下的所有档案与子目录皆设为任何人可读取 : </p>
<p style="TEXT-INDENT: 2em">chmod -R a+r * </p>
<p style="TEXT-INDENT: 2em">此外chmod也可以用数字来表示权限如 chmod 777 file </p>
<p style="TEXT-INDENT: 2em">语法为：chmod abc file </p>
<p style="TEXT-INDENT: 2em">其中a,b,c各为一个数字，分别表示User、Group、及Other的权限。 </p>
<p style="TEXT-INDENT: 2em">r=4，w=2，x=1 </p>
<p style="TEXT-INDENT: 2em">若要rwx属性则4+2+1=7； </p>
<p style="TEXT-INDENT: 2em">若要rw-属性则4+2=6； </p>
<p style="TEXT-INDENT: 2em">若要r-x属性则4+1=7。 </p>
<p style="TEXT-INDENT: 2em">范例： </p>
<p style="TEXT-INDENT: 2em">chmod a=rwx file </p>
<p style="TEXT-INDENT: 2em">和 </p>
<p style="TEXT-INDENT: 2em">chmod 777 file </p>
<p style="TEXT-INDENT: 2em">效果相同 </p>
<p style="TEXT-INDENT: 2em">chmod ug=rwx,o=x file </p>
<p style="TEXT-INDENT: 2em">和 </p>
<p style="TEXT-INDENT: 2em">chmod 771 file </p>
<p style="TEXT-INDENT: 2em">效果相同 </p>
<p style="TEXT-INDENT: 2em">若用chmod 4755 filename可使此程式具有root的权限 </p>
<p style="TEXT-INDENT: 2em">指令名称 : chown </p>
<p style="TEXT-INDENT: 2em">使用权限 : root </p>
<p style="TEXT-INDENT: 2em">使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file... </p>
<p style="TEXT-INDENT: 2em">说明 : Linux/Unix 是多人多工作业系统，所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说，这个指令只有是由系统管理者(root)所使用，一般使用者没有权限可以改变别人的档案拥有者，也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。 </p>
<p style="TEXT-INDENT: 2em">把计 : </p>
<p style="TEXT-INDENT: 2em">user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group)-c : 若该档案拥有者确实已经更改，才显示其更改动作-f : 若该档案拥有者无法被更改也不要显示错误讯息-h : 只对于连结(link)进行变更，而非该 link 真正指向的档案-v : 显示拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)--help : 显示辅助说明--version : 显示版本 </p>
<p style="TEXT-INDENT: 2em">范例 : </p>
<p style="TEXT-INDENT: 2em">将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie : </p>
<p style="TEXT-INDENT: 2em">chown jessie:users file1.txt </p>
<p style="TEXT-INDENT: 2em">将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport : </p>
<p style="TEXT-INDENT: 2em">chmod -R lamport:users * </p>
<p style="TEXT-INDENT: 2em"><span class="a14c" id="zoom">
<p style="TEXT-INDENT: 2em">名称：cp </p>
<p style="TEXT-INDENT: 2em">使用权限：所有使用者 </p>
<p style="TEXT-INDENT: 2em">使用方式： </p>
<p style="TEXT-INDENT: 2em">cp [options] source dest </p>
<p style="TEXT-INDENT: 2em">cp [options] source... directory </p>
<p style="TEXT-INDENT: 2em">说明：将一个档案拷贝至另一档案，或将数个档案拷贝至另一目录。 </p>
<p style="TEXT-INDENT: 2em">把计 </p>
<p style="TEXT-INDENT: 2em">-a 尽可能将档案状态、权限等资料都照原状予以复制。 </p>
<p style="TEXT-INDENT: 2em">-r 若 source 中含有目录名，则将目录下之档案亦皆依序拷贝至目的地。 </p>
<p style="TEXT-INDENT: 2em">-f 若目的地已经有相同档名的档案存在，则在复制前先予以删除再行复制。 </p>
<p style="TEXT-INDENT: 2em">范例： </p>
<p style="TEXT-INDENT: 2em">将档案 aaa 复制(已存在)，并命名为 bbb : </p>
<p style="TEXT-INDENT: 2em">cp aaa bbb </p>
<p style="TEXT-INDENT: 2em">将所有的C语言程式拷贝至 Finished 子目录中 : </p>
<p style="TEXT-INDENT: 2em">cp *.c Finished </p>
<p style="TEXT-INDENT: 2em">名称：cut </p>
<p style="TEXT-INDENT: 2em">使用权限：所有使用者 </p>
<p style="TEXT-INDENT: 2em">用法：cut -cnum1-num2 filename </p>
<p style="TEXT-INDENT: 2em">说明：显示每行从开头算起 num1 到 num2 的文字。 </p>
<p style="TEXT-INDENT: 2em">范例： </p>
<p style="TEXT-INDENT: 2em">shell&gt;&gt; cat example </p>
<p style="TEXT-INDENT: 2em">test2 </p>
<p style="TEXT-INDENT: 2em">this is test1 </p>
<p style="TEXT-INDENT: 2em">shell&gt;&gt; cut -c0-6 example ## print 开头算起前 6 个字元 </p>
<p style="TEXT-INDENT: 2em">test2 </p>
<p style="TEXT-INDENT: 2em">this i </p>
<p style="TEXT-INDENT: 2em">名称 : find </p>
<p style="TEXT-INDENT: 2em">用法 : find </p>
<p style="TEXT-INDENT: 2em">使用说明 : </p>
<p style="TEXT-INDENT: 2em">将档案系统内符合 expression 的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合，只有完全相符的才会被列出来。 </p>
<p style="TEXT-INDENT: 2em">find 根据下列规则判断 path 和 expression，在命令列上第一个 - ( ) , ! 之前的部份为 path，之后的是 expression。如果 path 是空字串则使用目前路径，如果 expression 是空字串则使用 -print 为预设 expression </p>
<p style="TEXT-INDENT: 2em">expression 中可使用的选项有二三十个之多，在此只介绍最常用的部份。 </p>
<p style="TEXT-INDENT: 2em">-mount, -xdev : 只检查和指定目录在同一个档案系统下的档案，避免列出其它档案系统中的档案 </p>
<p style="TEXT-INDENT: 2em">-amin n : 在过去 n 分钟内被读取过 </p>
<p style="TEXT-INDENT: 2em">-anewer file : 比档案 file 更晚被读取过的档案 </p>
<p style="TEXT-INDENT: 2em">-atime n : 在过去 n 天过读取过的档案 </p>
<p style="TEXT-INDENT: 2em">-cmin n : 在过去 n 分钟内被修改过 </p>
<p style="TEXT-INDENT: 2em">-cnewer file :比档案 file 更新的档案 </p>
<p style="TEXT-INDENT: 2em">-ctime n : 在过去 n 天过修改过的档案 </p>
<p style="TEXT-INDENT: 2em">-empty : 空的档案-gid n or -group name : gid 是 n 或是 group 名称是 name </p>
<p style="TEXT-INDENT: 2em">-ipath p, -path p : 路径名称符合 p 的档案，ipath 会忽略大小写 </p>
<p style="TEXT-INDENT: 2em">-name name, -iname name : 档案名称符合 name 的档案。iname 会忽略大小写 </p>
<p style="TEXT-INDENT: 2em">-size n : 档案大小 是 n 单位，b 代表 512 位元组的区块，c 表示字元数，k 表示 kilo bytes，w 是二个位元组。-type c : 档案类型是 c 的档案。 </p>
<p style="TEXT-INDENT: 2em">d: 目录 </p>
<p style="TEXT-INDENT: 2em">c: 字型装置档案 </p>
<p style="TEXT-INDENT: 2em">b: 区块装置档案 </p>
<p style="TEXT-INDENT: 2em">p: 具名贮列 </p>
<p style="TEXT-INDENT: 2em">f: 一般档案 </p>
<p style="TEXT-INDENT: 2em">l: 符号连结 </p>
<p style="TEXT-INDENT: 2em">s: socket </p>
<p style="TEXT-INDENT: 2em">-pid n : process id 是 n 的档案 </p>
<p style="TEXT-INDENT: 2em">你可以使用 ( ) 将运算式分隔，并使用下列运算。 </p>
<p style="TEXT-INDENT: 2em">exp1 -and exp2 </p>
<p style="TEXT-INDENT: 2em">! expr </p>
<p style="TEXT-INDENT: 2em">-not expr </p>
<p style="TEXT-INDENT: 2em">exp1 -or exp2 </p>
<p style="TEXT-INDENT: 2em">exp1, exp2 </p>
<p style="TEXT-INDENT: 2em">范例: </p>
<p style="TEXT-INDENT: 2em">将目前目录及其子目录下所有延伸档名是 c 的档案列出来。 </p>
<p style="TEXT-INDENT: 2em"># find . -name &quot;*.c&quot; </p>
<p style="TEXT-INDENT: 2em">将目前目录其其下子目录中所有一般档案列出 </p>
<p style="TEXT-INDENT: 2em"># find . -ftype f </p>
<p style="TEXT-INDENT: 2em">将目前目录及其子目录下所有最近 20 分钟内更新过的档案列出 </p>
<p style="TEXT-INDENT: 2em"># find . -ctime -20 </p>
<p style="TEXT-INDENT: 2em">名称：less </p>
<p style="TEXT-INDENT: 2em">使用权限：所有使用者 </p>
<p style="TEXT-INDENT: 2em">使用方式： </p>
<p style="TEXT-INDENT: 2em">less [Option] filename </p>
<p style="TEXT-INDENT: 2em">说明： </p>
<p style="TEXT-INDENT: 2em">less 的作用与 more 十分相似，都可以用来浏览文字档案的内容，不同的是 less 允许使用者往回卷动 </p>
<p style="TEXT-INDENT: 2em">以浏览已经看过的部份，同时因为 less 并未在一开始就读入整个档案，因此在遇上大型档案的开启时，会比一般的文书编辑器(如 vi)来的快速。 </p>
<p style="TEXT-INDENT: 2em">范例： </p>
<p style="TEXT-INDENT: 2em">指令名称 : ln </p>
<p style="TEXT-INDENT: 2em">使用权限 : 所有使用者 </p>
<p style="TEXT-INDENT: 2em">使用方式 : ln [options] source dist，其中 option 的格式为 : </p>
<p style="TEXT-INDENT: 2em">[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}] </p>
<p style="TEXT-INDENT: 2em">[--help] [--version] [--] </p>
<p style="TEXT-INDENT: 2em">说明 : Linux/Unix 档案系统中，有所谓的连结(link)，我们可以将其视为档案的别名，而连结又可分为两种 : 硬连结(hard link)与软连结(symbolic link)，硬连结的意思是一个档案可以有多个名称，而软连结的方式则是产生一个特殊的档案，该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中，而软连结却可以跨越不同的档案系统。 </p>
<p style="TEXT-INDENT: 2em"><span class="a14c" id="zoom">
<p style="TEXT-INDENT: 2em">ln source dist 是产生一个连结(dist)到 source，至于使用硬连结或软链结则由参数决定。 </p>
<p style="TEXT-INDENT: 2em">不论是硬连结或软链结都不会将原本的档案复制一份，只会占用非常少量的磁碟空间。 </p>
<p style="TEXT-INDENT: 2em">-f : 链结时先将与 dist 同档名的档案删除-d : 允许系统管理者硬链结自己的目录-i : 在删除与 dist 同档名的档案时先进行询问-n : 在进行软连结时，将 dist 视为一般的档案-s : 进行软链结(symbolic link)-v : 在连结之前显示其档名-b : 将在链结时会被覆写或删除的档案进行备份-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾-V METHOD : 指定备份的方式--help : 显示辅助说明--version : 显示版本 </p>
<p style="TEXT-INDENT: 2em">范例 : </p>
<p style="TEXT-INDENT: 2em">将档案 yy 产生一个 symbolic link : zz </p>
<p style="TEXT-INDENT: 2em">ln -s yy zz </p>
<p style="TEXT-INDENT: 2em">将档案 yy 产生一个 hard link : zz </p>
<p style="TEXT-INDENT: 2em">ln yy xx </p>
<p style="TEXT-INDENT: 2em">名称：locate </p>
<p style="TEXT-INDENT: 2em">使用权限：所有使用者 </p>
<p style="TEXT-INDENT: 2em">使用方式： locate [-q] [-d ] [--database=] </p>
<p style="TEXT-INDENT: 2em">locate [-r ] [--regexp=] </p>
<p style="TEXT-INDENT: 2em">locate [-qv] [-o ] [--output=] </p>
<p style="TEXT-INDENT: 2em">locate [-e ] [-f ] &lt;[-l ] [-c] </p>
<p style="TEXT-INDENT: 2em">&lt;[-U ] [-u]&gt; </p>
<p style="TEXT-INDENT: 2em">locate [-Vh] [--version] [--help] </p>
<p style="TEXT-INDENT: 2em">说明： </p>
<p style="TEXT-INDENT: 2em">locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的资料库，之后当寻找时就只需查询这个资料库，而不必实际深入档案系统之中了。 </p>
<p style="TEXT-INDENT: 2em">在一般的 distribution 之中，资料库的建立都被放在 contab 中自动执行。一般使用者在使用时只要用 </p>
<p style="TEXT-INDENT: 2em"># locate your_file_name </p>
<p style="TEXT-INDENT: 2em">的型式就可以了。 参数： </p>
<p style="TEXT-INDENT: 2em">-u </p>
<p style="TEXT-INDENT: 2em">-U </p>
<p style="TEXT-INDENT: 2em">建立资料库，-u 会由根目录开始，-U 则可以指定开始的位置。 </p>
<p style="TEXT-INDENT: 2em">-e </p>
<p style="TEXT-INDENT: 2em">将 </p>
<p style="TEXT-INDENT: 2em">排除在寻找的范围之外。 </p>
<p style="TEXT-INDENT: 2em">-l </p>
<p style="TEXT-INDENT: 2em">如果 是 1．则启动安全模式。在安全模式下，使用者不会看到权限无法看到的档案。这会始速度减慢，因为 locate 必须至实际的档案系统中取得档案的权限资料。 </p>
<p style="TEXT-INDENT: 2em">-f </p>
<p style="TEXT-INDENT: 2em">将特定的档案系统排除在外，例如我们没有到理要把 proc 档案系统中的档案放在资料库中。 </p>
<p style="TEXT-INDENT: 2em">-q </p>
<p style="TEXT-INDENT: 2em">安静模式，不会显示任何错误讯息。 </p>
<p style="TEXT-INDENT: 2em">-n </p>
<p style="TEXT-INDENT: 2em">至多显示 个输出。 </p>
<p style="TEXT-INDENT: 2em">-r </p>
<p style="TEXT-INDENT: 2em">使用正规运算式 做寻找的条件。 </p>
<p style="TEXT-INDENT: 2em">-o </p>
<p style="TEXT-INDENT: 2em">指定资料库存的名称。 </p>
<p style="TEXT-INDENT: 2em">-d </p>
<p style="TEXT-INDENT: 2em">指定资料库的路径 </p>
<p style="TEXT-INDENT: 2em">-h </p>
<p style="TEXT-INDENT: 2em">显示辅助讯息 </p>
<p style="TEXT-INDENT: 2em">-v </p>
<p style="TEXT-INDENT: 2em">显示更多的讯息 </p>
<p style="TEXT-INDENT: 2em">-V </p>
<p style="TEXT-INDENT: 2em">显示程式的版本讯息 范例： </p>
<p style="TEXT-INDENT: 2em">locate chdrv : 寻找所有叫 chdrv 的档案 </p>
<p style="TEXT-INDENT: 2em">locate -n 100 a.out : 寻找所有叫 a.out 的档案，但最多只显示 100 个 </p>
<p style="TEXT-INDENT: 2em">locate -u : 建立资料库 </p>
<p style="TEXT-INDENT: 2em">名称 : ls </p>
<p style="TEXT-INDENT: 2em">使用权限 : 所有使用者 </p>
<p style="TEXT-INDENT: 2em">使用方式 : ls [-alrtAFR] [name...] </p>
<p style="TEXT-INDENT: 2em">说明 : 显示指定工作目录下之内容（列出目前工作目录所含之档案及子目录)。 </p>
<p style="TEXT-INDENT: 2em">-a 显示所有档案及目录 (ls内定将档案名或目录名称开头为&quot;.&quot;的视为隐藏档，不会列出) </p>
<p style="TEXT-INDENT: 2em">-l 除档案名称外，亦将档案型态、权限、拥有者、档案大小等资讯详细列出 </p>
<p style="TEXT-INDENT: 2em">-r 将档案以相反次序显示(原定依英文字母次序) </p>
<p style="TEXT-INDENT: 2em">-t 将档案依建立时间之先后次序列出 </p>
<p style="TEXT-INDENT: 2em">-A 同 -a ，但不列出 &quot;.&quot; (目前目录) 及 &quot;..&quot; (父目录) </p>
<p style="TEXT-INDENT: 2em">-F 在列出的档案名称后加一符号；例如可执行档则加 &quot;*&quot;, 目录则加 &quot;/&quot; </p>
<p style="TEXT-INDENT: 2em">-R 若目录下有档案，则以下之档案亦皆依序列出 </p>
<p style="TEXT-INDENT: 2em">范例： </p>
<p style="TEXT-INDENT: 2em">列出目前工作目录下所有名称是 s 开头的档案，愈新的排愈后面 : </p>
<p style="TEXT-INDENT: 2em">ls -ltr s* </p>
<p style="TEXT-INDENT: 2em">将 /bin 目录以下所有目录及档案详细资料列出 : </p>
<p style="TEXT-INDENT: 2em">ls -lR /bin </p>
<p style="TEXT-INDENT: 2em">列出目前工作目录下所有档案及目录；目录于名称后加 &quot;/&quot;, 可执行档于名称后加 &quot;*&quot; : </p>
<p style="TEXT-INDENT: 2em">ls -AF </p>
<p style="TEXT-INDENT: 2em"><span class="a14c" id="zoom">
<p style="TEXT-INDENT: 2em">名称：more </p>
<p style="TEXT-INDENT: 2em">使用权限：所有使用者 </p>
<p style="TEXT-INDENT: 2em">使用方式：more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..] </p>
<p style="TEXT-INDENT: 2em">说明：类似 cat ，不过会以一页一页的显示方便使用者逐页阅读，而最基本的指令就是按空白键（space）就往下一页显示，按 b 键就会往回（back）一页显示，而且还有搜寻字串的功能（与 vi 相似），使用中的说明文件，请按 h 。 </p>
<p style="TEXT-INDENT: 2em">参数：-num 一次显示的行数 </p>
<p style="TEXT-INDENT: 2em">-d 提示使用者，在画面下方显示 [Press space to continue, q to quit.] ，如果使用者按错键，则会显示 [Press h for instructions.] 而不是 哔 声 </p>
<p style="TEXT-INDENT: 2em">-l 取消遇见特殊字元 ^L（送纸字元）时会暂停的功能 </p>
<p style="TEXT-INDENT: 2em">-f 计算行数时，以实际上的行数，而非自动换行过后的行数（有些单行字数太长的会被扩展为两行或两行以上） </p>
<p style="TEXT-INDENT: 2em">-p 不以卷动的方式显示每一页，而是先清除萤幕后再显示内容 </p>
<p style="TEXT-INDENT: 2em">-c 跟 -p 相似，不同的是先显示内容再清除其他旧资料 </p>
<p style="TEXT-INDENT: 2em">-s 当遇到有连续两行以上的空白行，就代换为一行的空白行 </p>
<p style="TEXT-INDENT: 2em">-u 不显示下引号 （根据环境变数 TERM 指定的 terminal 而有所不同） </p>
<p style="TEXT-INDENT: 2em">+/ 在每个档案显示前搜寻该字串（pattern），然后从该字串之后开始显示 </p>
<p style="TEXT-INDENT: 2em">+num 从第 num 行开始显示 </p>
<p style="TEXT-INDENT: 2em">fileNames 欲显示内容的档案，可为复数个数 </p>
<p style="TEXT-INDENT: 2em">范例： </p>
<p style="TEXT-INDENT: 2em">more -s testfile 逐页显示 testfile 之档案内容，如有连续两行以上空白行则以一行空白行显示。 </p>
<p style="TEXT-INDENT: 2em">more +20 testfile 从第 20 行开始显示 testfile 之档案内容。 </p>
<p style="TEXT-INDENT: 2em">名称：mv </p>
<p style="TEXT-INDENT: 2em">使用权限：所有使用者 </p>
<p style="TEXT-INDENT: 2em">使用方式： </p>
<p style="TEXT-INDENT: 2em">mv [options] source dest </p>
<p style="TEXT-INDENT: 2em">mv [options] source... directory </p>
<p style="TEXT-INDENT: 2em">说明：将一个档案移至另一档案，或将数个档案移至另一目录。 </p>
<p style="TEXT-INDENT: 2em">参数：-i 若目的地已有同名档案，则先询问是否覆盖旧档。 </p>
<p style="TEXT-INDENT: 2em">范例： </p>
<p style="TEXT-INDENT: 2em">将档案 aaa 更名为 bbb : </p>
<p style="TEXT-INDENT: 2em">mv aaa bbb </p>
<p style="TEXT-INDENT: 2em">将所有的C语言程式移至 Finished 子目录中 : </p>
<p style="TEXT-INDENT: 2em">mv -i *.c </p>
<p style="TEXT-INDENT: 2em">名称：rm </p>
<p style="TEXT-INDENT: 2em">使用权限：所有使用者 </p>
<p style="TEXT-INDENT: 2em">使用方式：rm [options] name... </p>
<p style="TEXT-INDENT: 2em">说明：删除档案及目录。 </p>
<p style="TEXT-INDENT: 2em">把计 </p>
<p style="TEXT-INDENT: 2em">-i 删除前逐一询问确认。 </p>
<p style="TEXT-INDENT: 2em">-f 即使原档案属性设为唯读，亦直接删除，无需逐一确认。 </p>
<p style="TEXT-INDENT: 2em">-r 将目录及以下之档案亦逐一删除。 </p>
<p style="TEXT-INDENT: 2em">范例： </p>
<p style="TEXT-INDENT: 2em">删除所有C语言程式档；删除前逐一询问确认 : </p>
<p style="TEXT-INDENT: 2em">rm -i *.c </p>
<p style="TEXT-INDENT: 2em">将 Finished 子目录及子目录中所有档案删除 : </p>
<p style="TEXT-INDENT: 2em">rm -r Finished </p>
<p style="TEXT-INDENT: 2em">名称：rmdir </p>
<p style="TEXT-INDENT: 2em">使用权限：于目前目录有适当权限的所有使用者 </p>
<p style="TEXT-INDENT: 2em">使用方式： rmdir [-p] dirName </p>
<p style="TEXT-INDENT: 2em">说明： 删除空的目录。 </p>
<p style="TEXT-INDENT: 2em">参数： -p 是当子目录被删除后使它也成为空目录的话，则顺便一并删除。 </p>
<p style="TEXT-INDENT: 2em">范例： </p>
<p style="TEXT-INDENT: 2em">将工作目录下，名为 AAA 的子目录删除 : </p>
<p style="TEXT-INDENT: 2em">rmdir AAA </p>
<p style="TEXT-INDENT: 2em">在工作目录下的 BBB 目录中，删除名为 Test 的子目录。若 Test 删除后，BBB 目录成为空目录，则 BBB 亦予删除。 </p>
<p style="TEXT-INDENT: 2em">rmdir -p BBB/Test </p>
<p style="TEXT-INDENT: 2em">名称：split </p>
<p style="TEXT-INDENT: 2em">使用权限：所有使用者 </p>
<p style="TEXT-INDENT: 2em">使用方式：split [OPTION] [INPUT [PREFIX]] </p>
<p style="TEXT-INDENT: 2em">说明： </p>
<p style="TEXT-INDENT: 2em">将一个档案分割成数个。而从 INPUT 分割输出成固定大小的档案，其档名依序为 PREFIXaa, PREFIXab...；PREFIX 预设值为 `x。若没有 INPUT 档或为 `-，则从标准输入读进资料。 </p>
<p style="TEXT-INDENT: 2em">匡兜 </p>
<p style="TEXT-INDENT: 2em">-b, --bytes=SIZE </p>
<p style="TEXT-INDENT: 2em">SIZE 值为每一输出档案的大小，单位为 byte。 </p>
<p style="TEXT-INDENT: 2em">-C, --line-bytes=SIZE </p>
<p style="TEXT-INDENT: 2em">每一输出档中，单行的最大 byte 数。 </p>
<p style="TEXT-INDENT: 2em">-l, --lines=NUMBER </p>
<p style="TEXT-INDENT: 2em">NUMBER 值为每一输出档的列数大小。 </p>
<p style="TEXT-INDENT: 2em">-NUMBER </p>
<p style="TEXT-INDENT: 2em">与 -l NUMBER 相同。 </p>
<p style="TEXT-INDENT: 2em">--verbose </p>
<p style="TEXT-INDENT: 2em">于每个输出档被开启前，列印出侦错资讯到标准错误输出。 </p>
<p style="TEXT-INDENT: 2em">--help </p>
<p style="TEXT-INDENT: 2em">显示辅助资讯然后离开。 </p>
<p style="TEXT-INDENT: 2em">--version </p>
<p style="TEXT-INDENT: 2em">列出版本资讯然后离开。 </p>
<p style="TEXT-INDENT: 2em"><span class="a14c" id="zoom">
<p style="TEXT-INDENT: 2em">SIZE 可加入单位: b 代表 512， k 代表 1K， m 代表 1 Meg。 </p>
<p style="TEXT-INDENT: 2em">范例： </p>
<p style="TEXT-INDENT: 2em">PostgresSQL 大型资料库备份与回存： </p>
<p style="TEXT-INDENT: 2em">因 Postgres 允许表格大过你系统档案的最大容量，所以要将表格 dump 到单一的档案可能会有问题，使用 split进行档案分割。 </p>
<p style="TEXT-INDENT: 2em">% pg_dump dbname | split -b 1m - filename.dump. </p>
<p style="TEXT-INDENT: 2em">重新载入 </p>
<p style="TEXT-INDENT: 2em">% createdb dbname </p>
<p style="TEXT-INDENT: 2em">% cat filename.dump.* | pgsql dbname </p>
<p style="TEXT-INDENT: 2em">名称：touch </p>
<p style="TEXT-INDENT: 2em">使用权限：所有使用者 </p>
<p style="TEXT-INDENT: 2em">使用方式： </p>
<p style="TEXT-INDENT: 2em">touch [-acfm] </p>
<p style="TEXT-INDENT: 2em">[-r reference-file] [--file=reference-file] </p>
<p style="TEXT-INDENT: 2em">[-t MMDDhhmm[[CC]YY][.ss]] </p>
<p style="TEXT-INDENT: 2em">[-d time] [--date=time] [--time={atime,access,use,mtime,modify}] </p>
<p style="TEXT-INDENT: 2em">[--no-create] [--help] [--version] </p>
<p style="TEXT-INDENT: 2em">file1 [file2 ...] </p>
<p style="TEXT-INDENT: 2em">说明： </p>
<p style="TEXT-INDENT: 2em">touch 指令改变档案的时间记录。 ls -l 可以显示档案的时间记录。 </p>
<p style="TEXT-INDENT: 2em">参数： </p>
<p style="TEXT-INDENT: 2em">a 改变档案的读取时间记录。 </p>
<p style="TEXT-INDENT: 2em">m 改变档案的修改时间记录。 </p>
<p style="TEXT-INDENT: 2em">c 假如目的档案不存在，不会建立新的档案。与 --no-create 的效果一样。 </p>
<p style="TEXT-INDENT: 2em">f 不使用，是为了与其他 unix 系统的相容性而保留。 </p>
<p style="TEXT-INDENT: 2em">r 使用参考档的时间记录，与 --file 的效果一样。 </p>
<p style="TEXT-INDENT: 2em">d 设定时间与日期，可以使用各种不同的格式。 </p>
<p style="TEXT-INDENT: 2em">t 设定档案的时间记录，格式与 date 指令相同。 </p>
<p style="TEXT-INDENT: 2em">--no-create 不会建立新档案。 </p>
<p style="TEXT-INDENT: 2em">--help 列出指令格式。 </p>
<p style="TEXT-INDENT: 2em">--version 列出版本讯息。 </p>
<p style="TEXT-INDENT: 2em">范例： </p>
<p style="TEXT-INDENT: 2em">最简单的使用方式，将档案的时候记录改为现在的时间。若档案不存在，系统会建立一个新的档案。 </p>
<p style="TEXT-INDENT: 2em">touch file </p>
<p style="TEXT-INDENT: 2em">touch file1 file2 </p>
<p style="TEXT-INDENT: 2em">将 file 的时间记录改为 5 月 6 日 18 点 3 分，公元两千年。时间的格式可以参考 date 指令，至少需输入 MMDDHHmm ，就是月日时与分。 </p>
<p style="TEXT-INDENT: 2em">touch -c -t 05061803 file </p>
<p style="TEXT-INDENT: 2em">touch -c -t 050618032000 file </p>
<p style="TEXT-INDENT: 2em">将 file 的时间记录改变成与 referencefile 一样。 </p>
<p style="TEXT-INDENT: 2em">touch -r referencefile file </p>
<p style="TEXT-INDENT: 2em">将 file 的时间记录改成 5 月 6 日 18 点 3 分，公元两千年。时间可以使用 am, pm 或是 24 小时的格式，日期可以使用其他格式如 6 May 2000 。 </p>
<p style="TEXT-INDENT: 2em">touch -d &quot;6:03pm&quot; file </p>
<p style="TEXT-INDENT: 2em">touch -d &quot;05/06/2000&quot; file </p>
<p style="TEXT-INDENT: 2em">touch -d &quot;6:03pm 05/06/2000&quot; file </p>
<p style="TEXT-INDENT: 2em">名称 : at </p>
<p style="TEXT-INDENT: 2em">使用权限 : 所有使用者 </p>
<p style="TEXT-INDENT: 2em">使用方式 : at -V [-q queue] [-f file] [-mldbv] TIME </p>
<p style="TEXT-INDENT: 2em">说明 : at 可以让使用者指定在 TIME 这个特定时刻执行某个程式或指令，TIME 的格式是 HH:MM其中的 HH 为小时，MM 为分钟，甚至你也可以指定 am, pm, midnight, noon, teatime(就是下午 4 点锺)等口语词。 </p>
<p style="TEXT-INDENT: 2em">如果想要指定超过一天内的时间，则可以用 MMDDYY 或者 MM/DD/YY 的格式，其中 MM 是分钟，DD 是第几日，YY 是指年份。另外，使用者甚至也可以使用像是 now + 时间间隔来弹性指定时间，其中的时间间隔可以是 minutes, hours, days, weeks </p>
<p style="TEXT-INDENT: 2em">另外，使用者也可指定 today 或 tomorrow 来表示今天或明天。当指定了时间并按下 enter 之后，at 会进入交谈模式并要求输入指令或程式，当你输入完后按下 ctrl+D 即可完成所有动作，至于执行的结果将会寄回你的帐号中。 </p>
<p style="TEXT-INDENT: 2em">把计 : </p>
<p style="TEXT-INDENT: 2em">-V : 印出版本编号 </p>
<p style="TEXT-INDENT: 2em">-q : 使用指定的伫列(Queue)来储存，at 的资料是存放在所谓的 queue 中，使用者可以同时使用多个 queue，而 queue 的编号为 a, b, c... z 以及 A, B, ... Z 共 52 个 </p>
<p style="TEXT-INDENT: 2em">-m : 即使程式/指令执行完成后没有输出结果, 也要寄封信给使用者 </p>
<p style="TEXT-INDENT: 2em">-f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入，可以先将所有的指定先写入档案后再一次读入 </p>
<p style="TEXT-INDENT: 2em">-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l) </p>
<p style="TEXT-INDENT: 2em">-d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d) </p>
<p style="TEXT-INDENT: 2em">-v : 列出所有已经完成但尚未删除的指定 </p>
<p style="TEXT-INDENT: 2em">例子 : </p>
<p style="TEXT-INDENT: 2em">三天后的下午 5 点锺执行 /bin/ls : </p>
<p style="TEXT-INDENT: 2em">at 5pm + 3 days /bin/ls </p>
<p style="TEXT-INDENT: 2em">三个星期后的下午 5 点锺执行 /bin/ls : </p>
<p style="TEXT-INDENT: 2em">at 5pm + 2 weeks /bin/ls </p>
<p style="TEXT-INDENT: 2em">明天的 17:20 执行 /bin/date : </p>
<p style="TEXT-INDENT: 2em">at 17:20 tomorrow /bin/date </p>
<p style="TEXT-INDENT: 2em">1999 年的最后一天的最后一分钟印出 the end of world ! </p>
<p style="TEXT-INDENT: 2em">at 23:59 12/31/1999 echo the end of world ! </p>
<p style="TEXT-INDENT: 2em">&nbsp;</p>
</span></p>
<p>&nbsp;</p>
</span></p>
<p>&nbsp;</p>
</span></p>
<p>&nbsp;</p>
</span></p>
<p>&nbsp;</p>
</span>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=445" /> 
	  <id>http://www.openx.cn/default.asp?id=445</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[P4P]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2008-03-16T11:04:31+08:00</updated>
	  <published>2008-03-16T11:04:31+08:00</published>
		  <summary type="html"><![CDATA[P2P, or peer-to-peer, is the protocol currently used by many file sharing networks for moving large files over the internet. Now, a new protocol, P4P - aka Proactive network Provider Participation for P2P - is being introduced by Verizon. P4P's goal is to reduce backbone traffic and lower network operation costs. Will P4P bring us the bandwidth we've been waiting for?
<div class="asset-more" id="more">
<p>Unlike P2P, which selects random peers to share with, when using P4P the peers are intelligently selected as the protocol utilizes network topology data to maximize the efficiency of routing between the peer-to-peer connections. </p>
<p>Verizon just tested P4P with <a href="http://www.pando.com/">Pando </a>and received performance boosts of 200 percent on average and increases of up to 600 percent in some cases.</p>
<p>What's most remarkable about this story is that Verizon is looking towards working with P2P traffic instead of throttling it like Comcast has been doing lately. </p>
<p>At an upcoming conference in New York, Verizon will present their test results, which show that when an ISP cooperates with file-sharing, they can speed downloads an average of 60 percent.</p>
<p><img alt="" src="http://www.readwriteweb.com/images/pando_logo.gif" align="left" />&quot;This test signifies a turning point in the history of peer-to-peer technology and ISPs,&quot; said Robert Levitan, chief executive of Pando Networks Inc. &quot;It will definitely show ISPs that the problem is not peer-to-peer technology, the problem is how you deploy it. It is possible to deploy P2P to their advantage. The Internet is quickly transforming into a media distribution platform, and there are people who say: 'It will break. It's not built to move music and movies and games and software.' New technologies are needed, and this is one of those technologies.&quot;</p>
<p>The P4P protocol may even be ready by next month, when <a href="http://www.pandoblog.com/?p=254">NBC begins offering HD downloads</a> of popular TV shows via the Pando software.<br /></p>
<p>摘:http://www.readwriteweb.com/archives/goodbye_p2p_p4p_is_coming.php</p>
</div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=444" /> 
	  <id>http://www.openx.cn/default.asp?id=444</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[IE不支持Javascript的解决方案]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2008-03-14T12:02:30+08:00</updated>
	  <published>2008-03-14T12:02:30+08:00</published>
		  <summary type="html"><![CDATA[<p>regsvr32 actxprxy.dll /s<br />regsvr32 shdocvw.dll /s<br />Regsvr32 URLMON.DLL /s<br />Regsvr32 actxprxy.dll /s<br />Regsvr32 shdocvw.dll /s<br />regsvr32 oleaut32.dll /s<br />rundll32.exe advpack.dll /DelNodeRunDLL32 C:\WINNT\System32\dacui.dll<br />rundll32.exe advpack.dll /DelNodeRunDLL32 C:\WINNT\Catroot\icatalog.mdb<br />regsvr32 setupwbv.dll /s<br />regsvr32 wininet.dll /s<br />regsvr32 comcat.dll /s<br />regsvr32 shdoc401.dll /s<br />regsvr32 shdoc401.dll /i /s<br />regsvr32 asctrls.ocx /s<br />regsvr32 oleaut32.dll /s<br />regsvr32 shdocvw.dll /I /s<br />regsvr32 shdocvw.dll /s<br />regsvr32 browseui.dll /s<br />regsvr32 browseui.dll /I /s<br />regsvr32 msrating.dll /s<br />regsvr32 mlang.dll /s<br />regsvr32 hlink.dll /s<br />regsvr32 mshtml.dll /s<br />regsvr32 mshtmled.dll /s<br />regsvr32 urlmon.dll /s<br />regsvr32 plugin.ocx /s<br />regsvr32 sendmail.dll /s<br />regsvr32 comctl32.dll /i /s<br />regsvr32 inetcpl.cpl /i /s<br />regsvr32 mshtml.dll /i /s<br />regsvr32 scrobj.dll /s<br />regsvr32 mmefxe.ocx /s<br />regsvr32 proctexe.ocx mshta.exe /register /s<br />regsvr32 corpol.dll /s<br />regsvr32 jscript.dll /s<br />regsvr32 msxml.dll /s<br />regsvr32 imgutil.dll /s<br />regsvr32 thumbvw.dll /s<br />regsvr32 cryptext.dll /s<br />regsvr32 rsabase.dll /s<br />regsvr32 triedit.dll /s<br />regsvr32 dhtmled.ocx /s<br />regsvr32 inseng.dll /s<br />regsvr32 iesetup.dll /i /s<br />regsvr32 hmmapi.dll /s<br />regsvr32 cryptdlg.dll /s<br />regsvr32 actxprxy.dll /s<br />regsvr32 dispex.dll /s<br />regsvr32 occache.dll /s<br />regsvr32 occache.dll /i /s<br />regsvr32 iepeers.dll /s<br />regsvr32 wininet.dll /i /s<br />regsvr32 urlmon.dll /i /s<br />regsvr32 digest.dll /i /s<br />regsvr32 cdfview.dll /s<br />regsvr32 webcheck.dll /s<br />regsvr32 mobsync.dll /s<br />regsvr32 pngfilt.dll /s<br />regsvr32 licmgr10.dll /s<br />regsvr32 icmfilter.dll /s<br />regsvr32 hhctrl.ocx /s<br />regsvr32 inetcfg.dll /s<br />regsvr32 trialoc.dll /s<br />regsvr32 tdc.ocx /s<br />regsvr32 MSR2C.DLL /s<br />regsvr32 msident.dll /s<br />regsvr32 msieftp.dll /s<br />regsvr32 xmsconf.ocx /s<br />regsvr32 ils.dll /s<br />regsvr32 msoeacct.dll /s<br />regsvr32 wab32.dll /s<br />regsvr32 wabimp.dll /s<br />regsvr32 wabfind.dll /s<br />regsvr32 oemiglib.dll /s<br />regsvr32 directdb.dll /s<br />regsvr32 inetcomm.dll /s<br />regsvr32 msoe.dll /s<br />regsvr32 oeimport.dll /s<br />regsvr32 msdxm.ocx /s<br />regsvr32 dxmasf.dll /s<br />regsvr32 laprxy.dll /s<br />regsvr32 l3codecx.ax /s<br />regsvr32 acelpdec.ax /s<br />regsvr32 mpg4ds32.ax /s<br />regsvr32 voxmsdec.ax /s<br />regsvr32 danim.dll /s<br />regsvr32 Daxctle.ocx /s<br />regsvr32 lmrt.dll /s<br />regsvr32 datime.dll /s<br />regsvr32 dxtrans.dll /s<br />regsvr32 dxtmsft.dll /s<br />regsvr32 vgx.dll /s<br />regsvr32 WEBPOST.DLL /s<br />regsvr32 WPWIZDLL.DLL /s<br />regsvr32 POSTWPP.DLL /s<br />regsvr32 CRSWPP.DLL /s<br />regsvr32 FTPWPP.DLL /s<br />regsvr32 FPWPP.DLL /s<br />regsvr32 FLUPL.OCX /s<br />regsvr32 wshom.ocx /s<br />regsvr32 wshext.dll /s<br />regsvr32 vbscript.dll /s<br />regsvr32 scrrun.dll mstinit.exe /setup /s<br />regsvr32 msnsspc.dll /SspcCreateSspiReg /s<br />regsvr32 msapsspc.dll /SspcCreateSspiReg /s</p>
<p>&nbsp;</p>
<p>以上另存为 ierepar.bat 并运行.</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=443" /> 
	  <id>http://www.openx.cn/default.asp?id=443</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[IdHTTP ＋ RegExpr]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2008-03-14T10:55:10+08:00</updated>
	  <published>2008-03-14T10:55:10+08:00</published>
		  <summary type="html"><![CDATA[<p>关键词：IdHTTP ，RegExpr，正则表达式，链接</p>
<p>目的：取得Web页面中的链接及链接文字。</p>
<p>操作：</p>
<p>&nbsp; 1.使用IdHTTP获取网页的源码。</p>
<p>&nbsp; 2.使用RegExpr定义正则表达式，获取网页中的链接及链接文字。</p>
<p><br />实现方法如下：</p>
<p>//使用正则表达式，匹配网页源码，抽取内容。<br />procedure GetLinkFromHtml(Const SourceHtmlTxt,Pattern:String; var aList:TStringList);<br />var RegExp : TRegExpr;<br />&nbsp;&nbsp;&nbsp; HasMatch:Boolean;<br />begin<br />&nbsp; RegExp := TRegExpr.Create;</p>
<p>&nbsp; try<br />&nbsp;&nbsp;&nbsp; RegExp.Expression := Pattern;&nbsp;&nbsp; //范式<br />&nbsp;&nbsp;&nbsp; HasMatch:=RegExp.Exec(SourceHtmlTxt);<br />&nbsp; <br />&nbsp;&nbsp;&nbsp; while HasMatch do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //aList.Add(RegExp.Match[0]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aList.Add(RegExp.Match[2]+'='+RegExp.Match[1]); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HasMatch := RegExp.ExecNext;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;<br />&nbsp; finally<br />&nbsp;&nbsp;&nbsp;&nbsp; FreeAndNil(RegExp);<br />&nbsp; end;<br />end;</p>
<p>&nbsp;</p>
<p>//解析网页源码内容，用正则表达式读取所需链接。<br />procedure ParsePageContent(pageText:String; var aList:TStringList);<br />var aPattern:String;<br />begin<br />&nbsp;&nbsp; //正则表达式<br />&nbsp;&nbsp; //链接形如：&lt;A href=&quot;<a href="http://ex01/public/abcdf.doc?attach=1">http://ex01/public/abcdf.doc?attach=1</a>&quot; TARGET=&quot;_blank&quot; &gt;&lt;FONT color=&quot;#000000&quot;&gt;附件1.doc(37KB)&lt;/FONT&gt;&lt;/A&gt;<br />&nbsp;&nbsp; aPattern:= '&lt;A\s+href\s*=\s*&quot;&quot;{0}([^&gt;].*?)\?attach=1&quot;&quot;{0}\s*TARGET\s*=\s*&quot;&quot;{0}_blank&quot;&quot;{0}\s*&gt;\s*&lt;FONT\s+color\s*=\s*&quot;&quot;{0}#000000&quot;&quot;{0}&gt;(.*?)\(([\d]+)KB\)\s*&lt;/FONT&gt;\s*&lt;/A&gt;';</p>
<p>&nbsp;&nbsp; GetLinkFromHtml(pageText,aPattern,aList); //使用正则表达式，匹配网页内容。<br />end;</p>
<p><br />//读取网页源码，从网页中得到文件的链接地址以及文件名称等内容。<br />//返回参数：HrefList。<br />procedure GetLinkList(EFileLink,Domain,UserName,PassWD:string; var HrefList:TStringList);<br />var aIdHTTP:TIdHTTP;<br />&nbsp;&nbsp;&nbsp; WebHTTPContent:String;<br />begin<br />&nbsp;&nbsp; aIdHTTP:=TIdHTTP.Create(nil);</p>
<p>&nbsp;&nbsp; try<br />&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.BasicAuthentication:=True;&nbsp; //设置权限<br />&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.Username:=Domain+'\'+UserName;<br />&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.Password:=PassWD;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; //识别浏览器<br />&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)';<br />&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.Accept:='image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*';<br />&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.ContentType:='text/xml; charset=''UTF-8''';</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.Connection:='Keep-Alive';<br />&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.Method:=(hmGet);//设置Request的方法</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; //得到网页的内容（以OWA方式可打开）<br />&nbsp;&nbsp;&nbsp;&nbsp; //EFileLink:='http://ex01/public/工作流程/关于调整设备类型的通知.EML';<br />&nbsp;&nbsp;&nbsp;&nbsp; WebHTTPContent:=aIdHTTP.Get(EFileLink);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; //UTF8解码<br />&nbsp;&nbsp;&nbsp;&nbsp; WebHTTPContent:=Utf8Decode(WebHTTPContent);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; //解析网页源码&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; ParsePageContent(WebHTTPContent, HrefList);<br />&nbsp;&nbsp; finally<br />&nbsp;&nbsp;&nbsp;&nbsp; FreeAndNil(aIdHTTP);<br />&nbsp;&nbsp; end;<br />end;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=442" /> 
	  <id>http://www.openx.cn/default.asp?id=442</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[活动目录（Active Directory）小结]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2008-03-14T10:50:26+08:00</updated>
	  <published>2008-03-14T10:50:26+08:00</published>
		  <summary type="html"><![CDATA[<P>1.活动目录（AD）</P>
<P>&nbsp; Active Directory 是用于 Windows Server 的目录服务。<BR>&nbsp; 它存储着网络上各种对象的有关信息，并使该信息易于管理员和用户查找及使用。<BR>&nbsp; Active Directory 目录服务使用结构化的数据存储作为目录信息的逻辑层次结构的基础。 <BR>&nbsp; 通过登录验证以及目录中对象的访问控制，将安全性集成到 Active Directory 中。</P>
<P>&nbsp; 目录服务，如 Active Directory，提供了用于存储目录数据并使该数据可由网络用户和管理员使用的方法。<BR>&nbsp; 例如，Active Directory 存储了有关用户帐户的信息，如名称、密码、电话号码等，并允许相同网络上的其他已授权用户访问该信息。</P>
<P><BR>2.LDAP</P>
<P>&nbsp; LDAP是轻量目录访问协议，英文全称是Lightweight Directory Access Protocol。<BR>&nbsp; LDAP是基于X.500标准的。<BR>&nbsp; LDAP 仅通过使用原始 X.500目录存取协议 (DAP) 的功能子集而减少了所需的系统资源消耗。<BR>&nbsp; 与X.500不同，LDAP支持TCP/IP，这对访问Internet是必须的。<BR>&nbsp; LDAP和关系数据库是两种不同层次的概念，后者是存贮方式（同一层次如网格数据库，对象数据库），前者是存贮模式和访问协议。<BR>&nbsp; LDAP是一个比关系数据库抽象层次更高的存贮概念，与关系数据库的查询语言SQL属同一级别。</P>
<P><BR>3.ADSI</P>
<P>&nbsp; 在Delphi中可以使用微软的ADSI（活动目录服务接口）来访问活动目录。<BR>&nbsp; ADSI是一组以COM接口的形式提供目录服务的，是为基于目录服务提供的通用接口。<BR>&nbsp; 一些标准的ADSI提供者（Provider）有WinNT、IIS、LDAP和NDS。<BR>&nbsp; 可以通过ADSI存取四种网络目录结构：<BR>&nbsp; WinNT (Microsoft SAM 数据库)、LDAP (轻量目录存取协议)、NDS (NetWare目录服务)和NWCOMPAT(Novell NetWare 3.x)。&nbsp; <BR>&nbsp; ADSI可以使Windows NT 管理员的工作变得轻松。<BR>&nbsp; ADSI支持管理员执行一些一般的管理任务，比如添加新用户、管理打印机、安全设定和控制NT域。<BR>&nbsp; 因为ADSI使用COM接口，任何支持COM的编程语言像Delphi、BCB、VB、VC等都可以调用ADSI。</P>
<P><BR>&nbsp; 如在Delphi中调用ADSI，则需要引入活动目录类型库。<BR>&nbsp; 操作如下：<BR>&nbsp; 在IDE中，Project---&gt;Import Type Library。<BR>&nbsp; 选择“Active Ds Type Library(Version 1.0)”，单击“Create Unit”。<BR>&nbsp; Delphi会做相应的封装，生成ActiveDs_TLB.pas文件。<BR>&nbsp; Uses ActiveDs_TLB，就可以在Delphi程序中使用ADSI了。</P>
<P><BR>4.JAVA+LDAP访问Window 2000 Server AD。</P>
<P>package ADOper;</P>
<P>import java.util.Hashtable;<BR>import javax.naming.Context;<BR>import javax.naming.ldap.LdapContext;<BR>import javax.naming.ldap.InitialLdapContext;<BR>import javax.naming.NamingEnumeration;<BR>import javax.naming.directory.SearchControls;<BR>import javax.naming.directory.SearchResult;<BR>import javax.naming.NamingException;<BR>import javax.naming.directory.Attribute;<BR>import javax.naming.directory.Attributes;<BR>import java.util.Enumeration;</P>
<P>public class ADOperTest {<BR>&nbsp; public ADOperTest() {<BR>&nbsp; }</P>
<P>&nbsp; public void GetADInfo() {<BR>&nbsp;&nbsp;&nbsp; Hashtable HashEnv = new Hashtable();</P>
<P>&nbsp;&nbsp;&nbsp; String LDAP_URL = "<a href="http://www.openx.cn/ldap://192.168.100.3:389/">ldap://192.168.100.3:389</A>"; //LDAP访问地址<BR>&nbsp;&nbsp;&nbsp; //String adminName = "CN=OAWebUser,CN=Users,DC=Hebmc,DC=com";//AD的用户名<BR>&nbsp;&nbsp;&nbsp; String adminName = "Hebmc\\OAWebUser"; //注意用户名的写法：domain\User 或 <a href="http://www.openx.cn/mailto:User@domain.com">User@domain.com</A><BR>&nbsp;&nbsp;&nbsp; adminName = "<a href="http://www.openx.cn/mailto:OAWebUser@Hebmc.com">OAWebUser@Hebmc.com</A>"; //注意用户名的写法：domain\User 或 <a href="http://www.openx.cn/mailto:User@domain.com">User@domain.com</A><BR>&nbsp;&nbsp;&nbsp; String adminPassword = "chenzuooaup02"; //密码</P>
<P>&nbsp;&nbsp;&nbsp; HashEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); //LDAP访问安全级别<BR>&nbsp;&nbsp;&nbsp; HashEnv.put(Context.SECURITY_PRINCIPAL, adminName); //AD User<BR>&nbsp;&nbsp;&nbsp; HashEnv.put(Context.SECURITY_CREDENTIALS, adminPassword); //AD Password<BR>&nbsp;&nbsp;&nbsp; HashEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory"); //LDAP工厂类<BR>&nbsp;&nbsp;&nbsp; HashEnv.put(Context.PROVIDER_URL, LDAP_URL);</P>
<P>&nbsp;&nbsp;&nbsp; try {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LdapContext ctx = new InitialLdapContext(HashEnv, null);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SearchControls searchCtls = new SearchControls(); //Create the search controls<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE); //Specify the search scope</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String searchFilter = "objectClass=User"; //specify the LDAP search filter<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //String searchFilter = "objectClass=organizationalUnit";//specify the LDAP search filter</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String searchBase = "DC=Hebmc,DC=com"; //Specify the Base for the search//搜索域节点<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int totalResults = 0;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Specify the attributes to return<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //String returnedAtts[] = {"memberOf"};//定制返回属性<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String returnedAtts[] = {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "url", "whenChanged", "employeeID", "name", "userPrincipalName",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "physicalDeliveryOfficeName", "departmentNumber", "telephoneNumber",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "homePhone", "mobile", "department", "sAMAccountName", "whenChanged",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "mail"}; //定制返回属性</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; searchCtls.setReturningAttributes(returnedAtts); //设置返回属性集</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Search for objects using the filter<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NamingEnumeration answer = ctx.search(searchBase, searchFilter,searchCtls);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (answer.hasMoreElements()) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SearchResult sr = (SearchResult) answer.next();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("************************************************");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(sr.getName());</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Attributes Attrs = sr.getAttributes();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Attrs != null) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (NamingEnumeration ne = Attrs.getAll(); ne.hasMore(); ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Attribute Attr = (Attribute) ne.next();</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("&nbsp; AttributeID=" + Attr.getID().toString());</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //读取属性值<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (NamingEnumeration e = Attr.getAll(); e.hasMore();totalResults++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("&nbsp;&nbsp;&nbsp; AttributeValues=" + e.next().toString());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("&nbsp;&nbsp;&nbsp; ---------------");</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //读取属性值<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enumeration values = Attr.getAll();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (values != null) { // 迭代<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (values.hasMoreElements()) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("&nbsp;&nbsp;&nbsp; AttributeValues=" + values.nextElement());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("&nbsp;&nbsp;&nbsp; ---------------");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (NamingException e) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println("Throw Exception : " + e);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Number: " + totalResults);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ctx.close();<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; catch (NamingException e) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println("Throw Exception :&nbsp; " + e);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; }</P>
<P>&nbsp; public static void main(String args[]) {<BR>&nbsp;&nbsp;&nbsp; ADOperTest ad = new ADOperTest();<BR>&nbsp;&nbsp;&nbsp; ad.GetADInfo();<BR>&nbsp; }<BR>}</P>
<P>备注：</P>
<P>&nbsp; 使用LADP访问AD，注意用户名的写法：domain\User 或 <a href="http://www.openx.cn/mailto:User@domain.com">User@domain.com</A>。</P>
<P>&nbsp; 如用户名不正确，则可能会出现如下异常：</P>
<P>javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 525, vece</P>
<P><BR>5.Delphi7使用WinNT Provider访问Window 2000 Server AD。</P>
<P>unit Unt_AD;</P>
<P>interface</P>
<P>uses<BR>&nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<BR>&nbsp; Dialogs, StdCtrls, ComCtrls, ActiveDs_TLB, ActiveX, ComObj;</P>
<P>type<BR>&nbsp; TMainFrm = class(TForm)<BR>&nbsp;&nbsp;&nbsp; grp1: TGroupBox;<BR>&nbsp;&nbsp;&nbsp; cbUseLogin: TCheckBox;<BR>&nbsp;&nbsp;&nbsp; lbl1: TLabel;<BR>&nbsp;&nbsp;&nbsp; ADSIUsername: TEdit;<BR>&nbsp;&nbsp;&nbsp; lbl2: TLabel;<BR>&nbsp;&nbsp;&nbsp; ADSIPassword: TEdit;<BR>&nbsp;&nbsp;&nbsp; ADSIDomainName: TEdit;<BR>&nbsp;&nbsp;&nbsp; btn1: TButton;<BR>&nbsp;&nbsp;&nbsp; lbl3: TLabel;<BR>&nbsp;&nbsp;&nbsp; GroupListView: TListView;<BR>&nbsp;&nbsp;&nbsp; ComputerListView: TListView;<BR>&nbsp;&nbsp;&nbsp; SeverListView: TListView;<BR>&nbsp;&nbsp;&nbsp; UserListView: TListView;<BR>&nbsp;&nbsp;&nbsp; lbl4: TLabel;<BR>&nbsp;&nbsp;&nbsp; lbl5: TLabel;<BR>&nbsp;&nbsp;&nbsp; Label1: TLabel;<BR>&nbsp;&nbsp;&nbsp; lbl6: TLabel;<BR>&nbsp;&nbsp;&nbsp; procedure btn1Click(Sender: TObject);<BR>&nbsp; private<BR>&nbsp;&nbsp;&nbsp; { Private declarations }<BR>&nbsp;&nbsp;&nbsp; procedure GetDomainInformation(Domain: IADsContainer);<BR>&nbsp;&nbsp;&nbsp; procedure AddUserToList(ADsObj:IADs);<BR>&nbsp;&nbsp;&nbsp; procedure AddGroupToList(ADsObj:IADs);<BR>&nbsp;&nbsp;&nbsp; procedure AddComputerToList(ADsObj:IADs);<BR>&nbsp; public<BR>&nbsp;&nbsp;&nbsp; { Public declarations }<BR>&nbsp; end;</P>
<P>//连接 Win NT 目录服务就是找到域控制器然后绑定到相应的对象上。<BR>//绑定可以通过 ADsGetObject 或 ADsOpenObject 函数来实现。<BR>//第一个函数使用登录用户缺省的信任级别，<BR>//第二个函数允许开发者指定特殊的安全信任机制来绑定 ADSI 对象。</P>
<P>//缺省条件下，ADsGetObject函数根据当前用户进行安全认证。<BR>function ADsGetObject(lpszPathName: PWideChar;&nbsp;&nbsp; //第一个参数是对象的路径名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const riid: TIID;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //第二个参数是对象的接口标识符<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out obj): HResult; stdcall; external 'activeds.dll';// 第三个参数用于返回得到的被请求的接口指针</P>
<P>//ADsOpenObject 函数在不同的安全认证机制下绑定 ADSI 对象，<BR>//它主要是通过调用参数返回的用户名和口令来认证的<BR>function ADsOpenObject(lpszPathName: PWideChar;&nbsp;&nbsp;&nbsp; //第一个参数是对象的路径名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lpszUserName: PWideChar;&nbsp;&nbsp;&nbsp; //第二个参数是调用者提供的用户名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lpszPassword: PWideChar;&nbsp;&nbsp;&nbsp; //第三个参数是调用者提供的口令<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dwReserved: LongInt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //第四个参数是一个保留的 provider 标识，用来确定绑定的认证方法<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const riid: TIID;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //第五个参数是请求接口的接口标识符，<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out obj): HResult; stdcall; external 'activeds.dll'; //最后一个参数用来返回请求的接口指针。</P>
<P>var<BR>&nbsp; MainFrm: TMainFrm;</P>
<P>implementation</P>
<P>{$R *.dfm}</P>
<P>// 获取域信息&nbsp; <BR>procedure TMainFrm.GetDomainInformation(Domain: IADsContainer);<BR>var<BR>&nbsp; Enum: IEnumVariant;<BR>&nbsp; ADsTempObj: OLEVariant;<BR>&nbsp; ADsObj: IADs;<BR>&nbsp; Value: LongWord;<BR>begin<BR>&nbsp; //清空用户、组和计算机列表<BR>&nbsp; UserListView.Items.Clear;<BR>&nbsp; GroupListView.Items.Clear;<BR>&nbsp; ComputerListView.Items.Clear;</P>
<P>&nbsp; //获取枚举对象，并赋值给 Enum 变量<BR>&nbsp; Enum := (Domain._NewEnum) as IEnumVariant; </P>
<P>&nbsp; //利用枚举对象查找，把每个子对象赋值给临时的 OLEVariant 对象<BR>&nbsp; while (Enum.Next(1, ADsTempObj, Value) = S_OK) do<BR>&nbsp;&nbsp;&nbsp; begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADsObj := IUnknown(ADsTempObj) as IADs;&nbsp; //获得临时对象：OLEVariant 变量赋值给 ADSI 对象<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if AdsObj.Class_ = 'User' then&nbsp;&nbsp;&nbsp; //如果是用户对象<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddUserToList(ADsObj);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if AdsObj.Class_ = 'Group' then&nbsp;&nbsp; //如果是组对象<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddGroupToList(ADsObj);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if AdsObj.Class_ = 'Computer' then //如果是计算机对象<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddComputerToList(ADsObj);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADsTempObj:=Null; //释放OLEVariant<BR>&nbsp; end;&nbsp; <BR>end; </P>
<P>procedure TMainFrm.AddUserToList(ADsObj:IADs);<BR>var aListItem:TListItem;<BR>begin<BR>&nbsp; aListItem:=UserListView.Items.Add;<BR>&nbsp; aListItem.Caption:=ADsObj.Name;<BR>&nbsp; aListItem.SubItems.Add(ADsObj.Class_);<BR>&nbsp; aListItem.SubItems.Add(ADsObj.ADsPath);<BR>&nbsp; aListItem.SubItems.Add(ADsObj.Parent);<BR>&nbsp;// aListItem.SubItems.Add(ADsObj.Get('sAMAccountName'));<BR>end;</P>
<P>procedure TMainFrm.AddGroupToList(ADsObj:IADs);<BR>var aListItem:TListItem;<BR>begin<BR>&nbsp; aListItem:=GroupListView.Items.Add;<BR>&nbsp; aListItem.Caption:=ADsObj.Name;<BR>&nbsp; aListItem.SubItems.Add(ADsObj.Class_);<BR>&nbsp; aListItem.SubItems.Add(ADsObj.ADsPath);<BR>end;</P>
<P>procedure TMainFrm.AddComputerToList(ADsObj:IADs);<BR>var aListItem:TListItem;<BR>begin<BR>&nbsp; aListItem:=ComputerListView.Items.Add;<BR>&nbsp; aListItem.Caption:=ADsObj.Name;<BR>&nbsp; aListItem.SubItems.Add(ADsObj.Class_);<BR>&nbsp; aListItem.SubItems.Add(ADsObj.ADsPath);<BR>end;</P>
<P>procedure TMainFrm.btn1Click(Sender: TObject);<BR>var<BR>&nbsp;&nbsp;&nbsp; UnknownObject: IUnknown;<BR>&nbsp;&nbsp;&nbsp; DomainPath,ADUser,ADPass: WideString;<BR>&nbsp;&nbsp;&nbsp; Domain: IADsContainer;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>begin<BR>&nbsp; // 指定域路径<BR>&nbsp; DomainPath := 'WinNT://' + ADSIDomainName.Text;<BR>&nbsp; ADUser:= ADSIUsername.Text;<BR>&nbsp; ADPass:= ADSIPassword.Text;</P>
<P>&nbsp; DomainPath := 'WinNT://Hebmc.com';<BR>&nbsp; ADUser:&nbsp; ADUser:= 'Hebmc\OAWebUser'; //注意用户名称的写法：domain\User 或 <a href="http://www.openx.cn/mailto:User@domain.com">User@domain.com</A><BR>&nbsp; ADUser:= <a href="http://www.openx.cn/mailto:'OAWebUser@Hebmc.com'">'OAWebUser@Hebmc.com'</A>; //注意用户名称的写法：domain\User 或 <a href="http://www.openx.cn/mailto:User@domain.com">User@domain.com</A><BR>&nbsp; ADPass:= 'chenzuooaup02';<BR>&nbsp; <BR>&nbsp; // 如果使用用户登录了信息<BR>&nbsp; if cbUseLogin.Checked then&nbsp; // 使用用户登录的信息创建域对象<BR>&nbsp;&nbsp;&nbsp;&nbsp; OleCheck(AdsOpenObject(PWideChar(DomainPath),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PWideChar(ADUser),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PWideChar(ADPass),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IID_IADsContainer,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UnknownObject))<BR>&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp; OleCheck(ADsGetObject(PWideChar(DomainPath),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IID_IADsContainer,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UnknownObject));</P>
<P>&nbsp; // 设定域对象<BR>&nbsp; Domain := UnknownObject as IADsContainer;</P>
<P>&nbsp; // 从域中获得信息列表<BR>&nbsp; GetDomainInformation(Domain); <BR>end;</P>
<P>end.</P>
<P><BR>备注：</P>
<P>&nbsp; *.注意用户名的写法：domain\User 或 <a href="http://www.openx.cn/mailto:User@domain.com">User@domain.com</A>。</P>
<P>&nbsp; *.Delphi使用WinNT Provider方式访问AD，在使用ADsObj.Get('属性')时，会有一个报错：“高速缓存中找不到目录属性。”&nbsp; （The directory property cannot be found in the cache）。<BR>&nbsp;&nbsp;&nbsp; 目前该问题还不知如何解决。</P>
<P>&nbsp; *.资料参考《Delphi深度探索-活动目录开发》。<BR>&nbsp;&nbsp;&nbsp; 作者：陈省（Hubdog）。&nbsp; <A href="http://hubdog.csdn.net/">http://hubdog.csdn.net/</A>。</P>
<P><BR>6.Delphi7使用LDAP访问Window 2000 Server AD。</P>
<P>unit Main;</P>
<P>interface</P>
<P>uses<BR>&nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<BR>&nbsp; Dialogs, StdCtrls, ActiveDs_TLB, ActiveX, ComObj;</P>
<P>type<BR>&nbsp; TMainFrm = class(TForm)<BR>&nbsp;&nbsp;&nbsp; Button1: TButton;<BR>&nbsp;&nbsp;&nbsp; ObjMemo: TMemo;<BR>&nbsp;&nbsp;&nbsp; OUMemo: TMemo;<BR>&nbsp;&nbsp;&nbsp; UserMemo: TMemo;<BR>&nbsp;&nbsp;&nbsp; cbUseLogin: TCheckBox;<BR>&nbsp;&nbsp;&nbsp; Obj_Label: TLabel;<BR>&nbsp;&nbsp;&nbsp; OU_Label: TLabel;<BR>&nbsp;&nbsp;&nbsp; Users_Label: TLabel;<BR>&nbsp;&nbsp;&nbsp; procedure Button1Click(Sender: TObject);<BR>&nbsp; private<BR>&nbsp;&nbsp;&nbsp; { Private declarations }<BR>&nbsp; public<BR>&nbsp;&nbsp;&nbsp; { Public declarations }<BR>&nbsp;&nbsp;&nbsp; procedure GetADInfo(aUser,aPass,aDomainPath: WideString);<BR>&nbsp; end;</P>
<P> <BR>//连接 Win NT 目录服务就是找到域控制器然后绑定到相应的对象上。<BR>//绑定可以通过 ADsGetObject 或 ADsOpenObject 函数来实现。<BR>//第一个函数使用登录用户缺省的信任级别，<BR>//第二个函数允许开发者指定特殊的安全信任机制来绑定 ADSI 对象。</P>
<P>//缺省条件下，ADsGetObject函数根据当前用户进行安全认证。<BR>function ADsGetObject(lpszPathName: PWideChar;&nbsp;&nbsp; //第一个参数是对象的路径名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const riid: TIID;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //第二个参数是对象的接口标识符<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out obj): HResult; stdcall; external 'activeds.dll';// 第三个参数用于返回得到的被请求的接口指针</P>
<P>//ADsOpenObject 函数在不同的安全认证机制下绑定 ADSI 对象，<BR>//它主要是通过调用参数返回的用户名和口令来认证的<BR>function ADsOpenObject(lpszPathName: PWideChar;&nbsp;&nbsp;&nbsp; //第一个参数是对象的路径名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lpszUserName: PWideChar;&nbsp;&nbsp;&nbsp; //第二个参数是调用者提供的用户名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lpszPassword: PWideChar;&nbsp;&nbsp;&nbsp; //第三个参数是调用者提供的口令<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dwReserved: LongInt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //第四个参数是一个保留的 provider 标识，用来确定绑定的认证方法<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const riid: TIID;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //第五个参数是请求接口的接口标识符，<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out obj): HResult; stdcall; external 'activeds.dll'; //最后一个参数用来返回请求的接口指针。</P>
<P>var<BR>&nbsp; MainFrm: TMainFrm;</P>
<P>implementation</P>
<P>{$R *.dfm}</P>
<P>procedure TMainFrm.Button1Click(Sender: TObject);<BR>var DomainPath,ADUser,ADPass: WideString;<BR>begin<BR>&nbsp; DomainPath := 'LDAP://192.168.100.3/OU=省公司,OU=组织架构,DC=Hebmc,DC=com';//LDAP访问AD的路径。</P>
<P>&nbsp; ADUser:='Hebmc\OAWebUser'; //注意用户名称的写法：域名称 + 用户名称 或 <a href="http://www.openx.cn/mailto:User@domain.com">User@domain.com</A><BR>&nbsp; ADUser:='OAWebUser@Hebmc.com'; //注意用户名称的写法：域名称 + 用户名称 或 <a href="http://www.openx.cn/mailto:User@domain.com">User@domain.com</A><BR>&nbsp; ADPass:='chenzuooaup02';&nbsp;&nbsp; //用户密码。<BR>&nbsp; <BR>&nbsp; GetADInfo(ADUser,ADPass,DomainPath);&nbsp; <BR>end;</P>
<P>procedure TMainFrm.GetADInfo(aUser,aPass,aDomainPath: WideString);<BR>var<BR>&nbsp; UnknownObject: IUnknown;<BR>&nbsp; Enum: IEnumVariant;<BR>&nbsp; ADsTempObj: OLEVariant;<BR>&nbsp; Domain: IADsContainer;<BR>&nbsp; ADsObj: IADs;<BR>&nbsp; Value: LongWord;<BR>begin</P>
<P>&nbsp; // 如果使用AD用户信息登录<BR>&nbsp; if cbUseLogin.Checked then&nbsp; // 使用用户登录的信息创建域对象<BR>&nbsp;&nbsp;&nbsp;&nbsp; OleCheck(AdsOpenObject(PWideChar(aDomainPath),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PWideChar(aUser),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PWideChar(aPass),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IID_IADsContainer,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UnknownObject))<BR>&nbsp; else <BR>&nbsp;&nbsp;&nbsp;&nbsp; OleCheck(ADsGetObject(PWideChar(aDomainPath),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IID_IADsContainer,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UnknownObject));</P>
<P>&nbsp; // 设定域对象<BR>&nbsp; Domain := UnknownObject as IADsContainer;</P>
<P>&nbsp; //获取枚举对象，并赋值给 Enum 变量<BR>&nbsp; Enum := (Domain._NewEnum) as IEnumVariant;</P>
<P>&nbsp; //利用枚举对象查找，把每个子对象赋值给临时的 OLEVariant 对象<BR>&nbsp; while (Enum.Next(1, ADsTempObj, Value) = S_OK) do<BR>&nbsp;&nbsp;&nbsp; begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADsObj := IUnknown(ADsTempObj) as IADs;&nbsp; //获得临时对象：OLEVariant 变量赋值给 ADSI 对象</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjMemo.Lines.Add(AdsObj.Class_); //对象类型</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if AdsObj.Class_ = 'organizationalUnit' then //如果是组织单元对象<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OUMemo.Lines.Add(ADsObj.Name) ;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if AdsObj.Class_ = 'user' then //如果是用户对象<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UserMemo.Lines.Add(ADsObj.Name+'（用户代码='+ADsObj.Get('sAMAccountName')+'）');</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //递归。得到组内相关用户。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetADInfo(aUser,aPass,ADsObj.ADsPath);&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADsTempObj:=Null; //释放OLEVariant<BR>&nbsp; end;</P>
<P>end;</P>
<P>end.</P>
<P>备注：</P>
<P>&nbsp;*. 注意用户名的写法：domain\User 或 <a href="http://www.openx.cn/mailto:User@domain.com">User@domain.com</A></P>
<P>&nbsp;*. Delphi使用LDAP方式访问AD，可以使用ADsObj.Get('属性')时得到相关属性值。<BR>&nbsp;&nbsp;&nbsp; 属性的取值域可以通过JAVA程序得到。</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=441" /> 
	  <id>http://www.openx.cn/default.asp?id=441</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[陈乐鑫的推车终于到了~]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2008-02-26T17:27:47+08:00</updated>
	  <published>2008-02-26T17:27:47+08:00</published>
		  <summary type="html"><![CDATA[<P>历经一个多月,乐鑫他亲阿姨买的推车终于到了,真是几经周折呀(这快递公司都可以把这车子从地球送一圈了都)~</P>
<P>&nbsp;</P>
<P>看我家宝宝最新装备,好孩子C880C,超级敞篷跑车~哈哈~</P>
<P>&nbsp;</P>
<P>[img]/attachments/month0802/wtl1_006907_0_02.jpg[/img]</P>
<P>1、靠背坐、躺、卧三档调节。<BR>2、前轮避震，后轮有刹车功能。<BR>3、前扶手可打开。<BR>4、坐垫板可加长。<BR>5、布质置物篮筐。<BR>6、配头部护枕和头托。<BR>7、三点式安全带保护系统。</P>
<P>&nbsp;</P>
<P>配置够强悍的吧~哈哈</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=440" /> 
	  <id>http://www.openx.cn/default.asp?id=440</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[我的超级宝宝生活写真地址公布咯!]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=4" label="照片" /> 
	  <updated>2008-01-24T11:36:36+08:00</updated>
	  <published>2008-01-24T11:36:36+08:00</published>
		  <summary type="html"><![CDATA[<p>我的超级宝宝生活写真地址公布咯</p>
<p>[img]/attachments/month0801/ig9m_1.jpg[/img]</p>
<p>http://picasaweb.google.com/cxtyopenx/MySuperBaby</p>
<p>内还附有视频哦.<br /></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=439" /> 
	  <id>http://www.openx.cn/default.asp?id=439</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[IPv4,IPv6,IPv9 三代协议比较]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2008-01-24T11:26:38+08:00</updated>
	  <published>2008-01-24T11:26:38+08:00</published>
		  <summary type="html"><![CDATA[<P><STRONG>IPv4</STRONG></P>
<P>优点</P>
<P>实际证明符合当初的设计（1960-1980），是现有国际互联网技术的基础。</P>
<P>不足</P>
<P>原设计没想到互联网发展这么快，IP地址不够<BR>预测表明，到2010年地址分配完毕。<BR>比如,整个中国的IP地址还不及美国一个大学的地址多。<BR>不安全，不能进行保密传送。<BR>地址分配效率低只有0.33～0.22%。<BR>不适合无线应用。<BR>不能适合多媒体传送，<BR>只适合数据传送，<BR>图象和声音质量都比较差。</P>
<P>&nbsp;</P>
<P><STRONG>IPv6</STRONG></P>
<P>优点</P>
<P>增加了地址长度(为2128),<BR>增加了安全保密算法，<BR>增加了常规的图象和声音的传输。<BR>增加了无线上网手段。 </P>
<P>不足</P>
<P>效率特别低，只有0.01～0.03%(实际试下来比IPV4多不了多少)。<BR>其设计地址理论容量为30年(特别是IDSN的位长为10<SUP>50</SUP>，ATM位长为2<SUP>160</SUP>。均在设计时考虑了地址的长度)。<BR>但IPV6设计时只有10<SUP>15</SUP>地址，所以远远不能满足人类对IP地址的需要。<BR>没有地理位置，所有国家均消失, 只留下商业、国际组织和美国本土。<BR>其安全保密算法均控制在IPV6设计者手中。<BR>没有从根本上解决图象和声音协议的方法。<BR>无法用数字按键上网(特别是手机)。<BR>不能直接用IP地址表示，必须经过DNS翻译。<BR>联网用的算法复杂，有二进制、八进制、十六进制、英文、多国文字等。<BR>没有紧急用类别，不适合在紧急和战争状况下使用。</P>
<P><STRONG>IPv9</STRONG></P>
<P>1、地址容量大为2<SUP>256</SUP>，效率高。在今后很长的一段时间内，可以给世界上的人类需求分配一个永久的IP地址。而且以后还可以自动按顺序增加，因此，IP地址容量足够大。可以和现有的IPV4、IPV6网络互通。<BR>2、采用了定长不定位的方法，可以减少网络开销，可像电话一样进行不定长使用。<BR>3、符合可持续发展和环保要求。根据需求可以实现端到端，做到低成本、高效率、经济性特别好。同时，对用户隐私权的保护得到了加强。并在设计时考虑到了环保问题。<BR>4、采用特定的加密机制。特别考虑到计算机网络技术领域的发展趋势，今后会出现诸如生物芯片和量子计算机等高新技术，预见了将现有计算机的解密能力超越了热力学的范围。加密算法控制权掌握在设计者手中，因而不存在IPV6那样受制于他国，所以网络特别安全。<BR>5、采用了绝对码类和长流码类似的协议，解决了声音和图象在模拟电路中传输的矛盾。<BR>6、可以直接将IP地址和MAC地址作为域名使用，特别适合于使用手机和家庭的上网。<BR>7、采用十进制算法。简化了计算机和计算机互联算法的基础，从而为今后计算机互联网发展确定了新的游戏规则。并确定了将杂乱无序的互联网算法逐步统一为十进制算法。<BR>8、有紧急类别，可以解决在战争和国家紧急情况下的线路畅通问题。做到军民两用。<BR>9、特别适合无线网络传输。<BR>10、采用了特别的语言表示法，简化了网络管理中的管理难度，便于推广普及。<BR>11、采用了IPV9和IPV4过渡策略，有利于延长现有IPV4网络资源的生命期。</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=438" /> 
	  <id>http://www.openx.cn/default.asp?id=438</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[我家宝宝游泳记!]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=4" label="照片" /> 
	  <updated>2008-01-18T22:30:44+08:00</updated>
	  <published>2008-01-18T22:30:44+08:00</published>
		  <summary type="html"><![CDATA[<p><embed src="http://www.tudou.com/v/43kzVtpuzXI" width="400" height="300" type="application/x-shockwave-flash" allowfullscreen="true" wmode="transparent" allowscriptaccess="always"></embed></p>
<p>haha~</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=437" /> 
	  <id>http://www.openx.cn/default.asp?id=437</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[我的超级奥运金猪宝宝，照片首次瀑光！！！绝对独家！]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=4" label="照片" /> 
	  <updated>2008-01-18T21:45:42+08:00</updated>
	  <published>2008-01-18T21:45:42+08:00</published>
		  <summary type="html"><![CDATA[<P>2008年1月15日凌晨 5点53分,我的奥运金猪宝宝经过273天的闭关修炼,终于提前5天修成正果出关啦!</P>
<P>哈哈就是这小子:P</P>
<P>[img]/attachments/month0801/3zs7_MySuperBaby.jpg[/img]</P>
<P>&nbsp;</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=436" /> 
	  <id>http://www.openx.cn/default.asp?id=436</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[ADIS IIS 部分属性 备忘]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2008-01-06T11:01:09+08:00</updated>
	  <published>2008-01-06T11:01:09+08:00</published>
		  <summary type="html"><![CDATA[ServerBindings&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;IIS虚拟站点绑定的IP、端口、域名<BR>ServerComment&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;IIS虚拟站点的名称<BR>MaxConnections&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;IIS虚拟站点的最大连接数<BR>AnonymousUserName&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>AnonymousUserPass&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>AccessRead&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>AccessExecute&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>AccessWrite&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>AccessScript&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>AccessSSL&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;支持SSL<BR>AuthBasic&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;支持Basic<BR>AuthNTLM&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;支持NTLM<BR>EnableDefaultDoc&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>EnableDirBrowsing&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>DefaultDoc&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>Path&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;&nbsp;&nbsp;&nbsp;&nbsp;主目录<BR>AppPoolId&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>
<P class=ContentAuthor>引用内容</P>
<DIV class=UBBContent>AccessExecute&nbsp;=&nbsp;False<BR>AccessFlags&nbsp;=&nbsp;513<BR>AccessNoPhysicalDir&nbsp;=&nbsp;False<BR>AccessNoRemoteExecute&nbsp;=&nbsp;False<BR>AccessNoRemoteRead&nbsp;=&nbsp;False<BR>AccessNoRemoteScript&nbsp;=&nbsp;False<BR>AccessNoRemoteWrite&nbsp;=&nbsp;False<BR>AccessRead&nbsp;=&nbsp;True<BR>AccessScript&nbsp;=&nbsp;True<BR>AccessSource&nbsp;=&nbsp;False<BR>AccessSSL&nbsp;=&nbsp;False<BR>AccessSSL128&nbsp;=&nbsp;False<BR>AccessSSLFlags&nbsp;=&nbsp;0<BR>AccessSSLMapCert&nbsp;=&nbsp;False<BR>AccessSSLNegotiateCert&nbsp;=&nbsp;False<BR>AccessSSLRequireCert&nbsp;=&nbsp;False<BR>AccessWrite&nbsp;=&nbsp;False<BR>AdminACLBin&nbsp;=&nbsp;<BR>AnonymousPasswordSync&nbsp;=&nbsp;True<BR>AnonymousUserName&nbsp;=&nbsp;IUSR_THINKPAD-X22<BR>AnonymousUserPass&nbsp;=&nbsp;h0jJJ:AA$8|~*0<BR>AppAllowClientDebug&nbsp;=&nbsp;False<BR>AppAllowDebugging&nbsp;=&nbsp;False<BR>AppFriendlyName&nbsp;=&nbsp;默认应用程序<BR>AppOopRecoverLimit&nbsp;=&nbsp;-1<BR>AppPoolId&nbsp;=&nbsp;DefaultAppPool<BR>AppWamClsid&nbsp;=&nbsp;<BR>AspAllowOutOfProcComponents&nbsp;=&nbsp;True<BR>AspAllowSessionState&nbsp;=&nbsp;True<BR>AspAppServiceFlags&nbsp;=&nbsp;0<BR>AspBufferingLimit&nbsp;=&nbsp;4194304<BR>AspBufferingOn&nbsp;=&nbsp;True<BR>AspCalcLineNumber&nbsp;=&nbsp;True<BR>AspCodepage&nbsp;=&nbsp;0<BR>AspDiskTemplateCacheDirectory&nbsp;=&nbsp;%windir%\system32\inetsrv\ASP&nbsp;Compiled&nbsp;Templates<BR>AspEnableApplicationRestart&nbsp;=&nbsp;True<BR>AspEnableAspHtmlFallback&nbsp;=&nbsp;False<BR>AspEnableChunkedEncoding&nbsp;=&nbsp;True<BR>AspEnableParentPaths&nbsp;=&nbsp;False<BR>AspEnableSxs&nbsp;=&nbsp;False<BR>AspEnableTracker&nbsp;=&nbsp;False<BR>AspEnableTypelibCache&nbsp;=&nbsp;True<BR>AspErrorsToNTLog&nbsp;=&nbsp;False<BR>AspExceptionCatchEnable&nbsp;=&nbsp;True<BR>AspExecuteInMTA&nbsp;=&nbsp;0<BR>AspKeepSessionIDSecure&nbsp;=&nbsp;0<BR>AspLCID&nbsp;=&nbsp;2048<BR>AspLogErrorRequests&nbsp;=&nbsp;True<BR>AspMaxDiskTemplateCacheFiles&nbsp;=&nbsp;2000<BR>AspMaxRequestEntityAllowed&nbsp;=&nbsp;204800<BR>AspPartitionID&nbsp;=&nbsp;<BR>AspProcessorThreadMax&nbsp;=&nbsp;25<BR>AspQueueConnectionTestTime&nbsp;=&nbsp;3<BR>AspQueueTimeout&nbsp;=&nbsp;-1<BR>AspRequestQueueMax&nbsp;=&nbsp;3000<BR>AspRunOnEndAnonymously&nbsp;=&nbsp;True<BR>AspScriptEngineCacheMax&nbsp;=&nbsp;250<BR>AspScriptErrorMessage&nbsp;=&nbsp;处理&nbsp;URL&nbsp;时服务器出错。请与系统管理员联系。<BR>AspScriptErrorSentToBrowser&nbsp;=&nbsp;True<BR>AspScriptFileCacheSize&nbsp;=&nbsp;500<BR>AspScriptLanguage&nbsp;=&nbsp;VBScript<BR>AspScriptTimeout&nbsp;=&nbsp;90<BR>AspSessionMax&nbsp;=&nbsp;-1<BR>AspSessionTimeout&nbsp;=&nbsp;20<BR>AspSxsName&nbsp;=&nbsp;<BR>AspTrackThreadingModel&nbsp;=&nbsp;False<BR>AspUsePartition&nbsp;=&nbsp;False<BR>AuthAdvNotifyDisable&nbsp;=&nbsp;True<BR>AuthAnonymous&nbsp;=&nbsp;True<BR>AuthBasic&nbsp;=&nbsp;False<BR>AuthChangeDisable&nbsp;=&nbsp;True<BR>AuthChangeUnsecure&nbsp;=&nbsp;False<BR>AuthChangeURL&nbsp;=&nbsp;/iisadmpwd/achg.asp<BR>AuthExpiredUnsecureURL&nbsp;=&nbsp;/iisadmpwd/aexp3.asp<BR>AuthExpiredURL&nbsp;=&nbsp;/iisadmpwd/aexp.asp<BR>AuthFlags&nbsp;=&nbsp;1<BR>AuthMD5&nbsp;=&nbsp;False<BR>AuthNotifyPwdExpUnsecureURL&nbsp;=&nbsp;/iisadmpwd/anot3.asp<BR>AuthNotifyPwdExpURL&nbsp;=&nbsp;/iisadmpwd/anot.asp<BR>AuthNTLM&nbsp;=&nbsp;False<BR>AuthPassport&nbsp;=&nbsp;False<BR>AuthPersistence&nbsp;=&nbsp;64<BR>AuthPersistSingleRequest&nbsp;=&nbsp;True<BR>AzEnable&nbsp;=&nbsp;False<BR>AzImpersonationLevel&nbsp;=&nbsp;0<BR>AzScopeName&nbsp;=&nbsp;<BR>AzStoreName&nbsp;=&nbsp;<BR>CacheControlCustom&nbsp;=&nbsp;<BR>CacheControlMaxAge&nbsp;=&nbsp;0<BR>CacheControlNoCache&nbsp;=&nbsp;False<BR>CacheISAPI&nbsp;=&nbsp;True<BR>Caption&nbsp;=&nbsp;<BR>CGITimeout&nbsp;=&nbsp;300<BR>ContentIndexed&nbsp;=&nbsp;True<BR>CreateCGIWithNewConsole&nbsp;=&nbsp;False<BR>CreateProcessAsUser&nbsp;=&nbsp;True<BR>DefaultDoc&nbsp;=&nbsp;Default.htm,Default.asp,index.htm,iisstart.htm,Default.aspx<BR>DefaultDocFooter&nbsp;=&nbsp;<BR>DefaultLogonDomain&nbsp;=&nbsp;<BR>Description&nbsp;=&nbsp;<BR>DirBrowseFlags&nbsp;=&nbsp;1073741886<BR>DirBrowseShowDate&nbsp;=&nbsp;True<BR>DirBrowseShowExtension&nbsp;=&nbsp;True<BR>DirBrowseShowLongDate&nbsp;=&nbsp;True<BR>DirBrowseShowSize&nbsp;=&nbsp;True<BR>DirBrowseShowTime&nbsp;=&nbsp;True<BR>DisableStaticFileCache&nbsp;=&nbsp;False<BR>DoDynamicCompression&nbsp;=&nbsp;False<BR>DontLog&nbsp;=&nbsp;False<BR>DoStaticCompression&nbsp;=&nbsp;False<BR>EnableDefaultDoc&nbsp;=&nbsp;True<BR>EnableDirBrowsing&nbsp;=&nbsp;False<BR>EnableDocFooter&nbsp;=&nbsp;False<BR>EnableReverseDns&nbsp;=&nbsp;False<BR>FrontPageWeb&nbsp;=&nbsp;False</DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=435" /> 
	  <id>http://www.openx.cn/default.asp?id=435</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[让BugFreeHelper支持BugFree2.0的修改]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2007-12-26T15:15:36+08:00</updated>
	  <published>2007-12-26T15:15:36+08:00</published>
		  <summary type="html"><![CDATA[<P>修改了BugFree2中的Login.php并添加QueryBug_X.php文件<BR>重新修改了BugFreeHelper中的代码使其又能支持BugFree2.0啦~<BR><BR>BugFree是个很好的开源软件,特此推荐推荐.</P>
<P>&nbsp;</P>
<P>下载地址:http://www.openx.cn/down.asp?downID=21&action=Url_1</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=434" /> 
	  <id>http://www.openx.cn/default.asp?id=434</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[光荣啦!周维两年后见!]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=4" label="照片" /> 
	  <updated>2007-12-10T21:16:07+08:00</updated>
	  <published>2007-12-10T21:16:07+08:00</published>
		  <summary type="html"><![CDATA[<P>一个热血青年,投入了部队的大熔炉,特此留影.两年后他会是啥样,我们等你--周维. </P>
<P>[img]/attachments/month0712/kh0n_IMG_71301.JPG[/img]</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=433" /> 
	  <id>http://www.openx.cn/default.asp?id=433</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[宝宝见面倒计时~~~嘿嘿~]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-12-05T11:00:20+08:00</updated>
	  <published>2007-12-05T11:00:20+08:00</published>
		  <summary type="html"><![CDATA[[img]http://sign.liba.com/img_expected214803_1513531.png[/img]]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=432" /> 
	  <id>http://www.openx.cn/default.asp?id=432</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[javascript小技巧  全了都！]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2007-11-02T10:35:39+08:00</updated>
	  <published>2007-11-02T10:35:39+08:00</published>
		  <summary type="html"><![CDATA[<UL>
<LI><FONT size=2><STRONG>事件源对象</STRONG> <BR>event.srcElement.tagName <BR>event.srcElement.type</FONT> 
<LI><FONT size=2><STRONG>捕获释放 <BR></STRONG>event.srcElement.setCapture();&nbsp; <BR>event.srcElement.releaseCapture();&nbsp; </FONT>
<LI><FONT size=2><STRONG>事件按键</STRONG> <BR>event.keyCode <BR>event.shiftKey <BR>event.altKey <BR>event.ctrlKey</FONT> 
<LI><FONT size=2><STRONG>事件返回值</STRONG> <BR>event.returnValue</FONT> 
<LI><FONT size=2><STRONG>鼠标位置 <BR></STRONG>event.x <BR>event.y</FONT> 
<LI><FONT size=2><STRONG>窗体活动元素 <BR></STRONG>document.activeElement</FONT> 
<LI><FONT size=2><STRONG>绑定事件</STRONG> <BR>document.captureEvents(Event.KEYDOWN);</FONT> 
<LI><FONT size=2><STRONG>访问窗体元素 <BR></STRONG>document.all("txt").focus(); <BR>document.all("txt").select();</FONT> 
<LI><FONT size=2><STRONG>窗体命令</STRONG> <BR>document.execCommand</FONT> 
<LI><FONT size=2><STRONG>窗体COOKIE <BR></STRONG>document.cookie</FONT> 
<LI><FONT size=2><STRONG>菜单事件</STRONG> <BR>document.oncontextmenu</FONT> 
<LI><FONT size=2><STRONG>创建元素 <BR></STRONG>document.createElement("SPAN");&nbsp; </FONT>
<LI><FONT size=2><STRONG>根据鼠标获得元素： <BR></STRONG>document.elementFromPoint(event.x,event.y).tagName=="TD <BR></FONT><FONT size=2>document.elementFromPoint(event.x,event.y).appendChild(ms)&nbsp; </FONT>
<LI><FONT size=2><STRONG>窗体图片</STRONG> <BR>document.images[索引]</FONT> 
<LI><FONT size=2><STRONG>窗体事件绑定 <BR></STRONG>document.onmousedown=scrollwindow;</FONT> 
<LI><FONT size=2><STRONG>元素</STRONG> <BR>document.窗体.elements[索引]</FONT> 
<LI><FONT size=2><STRONG>对象绑定事件 <BR></STRONG>document.all.xxx.detachEvent('onclick',a);</FONT> 
<LI><FONT size=2><STRONG>插件数目</STRONG> <BR>navigator.plugins</FONT> 
<LI><FONT size=2><STRONG>取变量类型 <BR></STRONG>typeof($js_libpath) == "undefined"</FONT> 
<LI><FONT size=2><STRONG>下拉框 <BR></STRONG></FONT><FONT size=2>下拉框.options[索引] <BR>下拉框.options.length</FONT> 
<LI><FONT size=2><STRONG>查找对象</STRONG> <BR>document.getElementsByName("r1"); <BR>document.getElementById(id); </FONT>
<LI><FONT size=2><STRONG>定时 <BR></STRONG>timer=setInterval('scrollwindow()',delay); <BR>clearInterval(timer);</FONT> 
<LI><FONT size=2><STRONG>UNCODE编码 <BR></STRONG>escape() ,unescape</FONT> 
<LI><FONT size=2><STRONG>父对象</STRONG> <BR>obj.parentElement(dhtml) <BR>obj.parentNode(dom)</FONT> 
<LI><FONT size=2><STRONG>交换表的行 <BR></STRONG>TableID.moveRow(2,1)</FONT><FONT size=2><STRONG> 
<LI><FONT size=2><STRONG>替换CSS</STRONG> <BR></FONT>document.all.csss.href = "a.css";<FONT size=2><STRONG> 
<LI><FONT size=2><STRONG>并排显示</STRONG> <BR></FONT>display:inline<FONT size=2> 
<LI><FONT size=2><STRONG>隐藏焦点 <BR></STRONG>hidefocus=true</FONT> 
<LI><FONT size=2><STRONG>根据宽度换行 <BR></STRONG></FONT>style="word-break:break-all"<FONT size=2> 
<LI><FONT size=2><STRONG>自动刷新 <BR></STRONG>&lt;meta HTTP-EQUIV="refresh" CONTENT="8;URL=http://c98.yeah.net"&gt;</FONT> 
<LI><FONT size=2><STRONG>简单邮件 <BR></STRONG>&lt;a&nbsp; href="</FONT><a href="http://www.openx.cn/mailto:aaa@bbb.com?subject=ccc&body=xxxyyy"><FONT size=2>mailto:aaa@bbb.com?subject=ccc&body=xxxyyy</FONT></A><FONT size=2>"&gt;&nbsp; </FONT>
<LI><FONT size=2><STRONG>快速转到位置 <BR></STRONG></FONT>obj.scrollIntoView(true)<FONT size=2> 
<LI><FONT size=2><STRONG>锚 <BR></STRONG>&lt;a name="first"&gt; <BR>&lt;a href="#first"&gt;anchors&lt;/a&gt;</FONT> 
<LI><FONT size=2><STRONG>网页传递参数 <BR></STRONG>location.search();</FONT> 
<LI><STRONG>可编辑 <BR></STRONG>obj.contenteditable=true 
<LI><FONT size=2><STRONG>执行菜单命令</STRONG> <BR>obj.execCommand</FONT> 
<LI><FONT size=2><STRONG>双字节字符</STRONG> <BR>/[^\x00-\xff]/ <BR>汉字 <BR>/[\u4e00-\u9fa5]/</FONT> 
<LI><STRONG>让英文字符串超出表格宽度自动换行</STRONG> <BR>word-wrap: break-word; word-break: break-all; 
<LI><STRONG>透明背景</STRONG><FONT size=2> <BR>&lt;IFRAME src="1.htm" width=300 height=180 allowtransparency&gt;&lt;/iframe&gt;</FONT> 
<LI><FONT size=2><STRONG>获得style内容 <BR></STRONG>obj.style.cssText</FONT> 
<LI><FONT size=2><STRONG>HTML标签</STRONG> <BR>document.documentElement.innerHTML</FONT> 
<LI><FONT size=2><STRONG>第一个style标签</STRONG> <BR>document.styleSheets[0]</FONT> 
<LI><FONT size=2><STRONG>style标签里的第一个样式</STRONG> <BR>document.styleSheets[0].rules[0]</FONT> 
<LI><STRONG>防止点击空链接时，页面往往重置到页首端。 <BR></STRONG>&lt;a href="javascript:function()"&gt;word&lt;/a&gt; 
<LI><STRONG>上一网页源</STRONG> <BR>asp: <BR>request.servervariables("HTTP_REFERER") <BR><FONT size=2>javascript: <BR>document.referrer </FONT>
<LI><FONT size=2><STRONG>释放内存 <BR></STRONG>CollectGarbage();</FONT> 
<LI><STRONG>禁止右键</STRONG> <BR>document.oncontextmenu = function() { return false;} 
<LI><FONT size=2><STRONG>禁止保存</STRONG> <BR>&lt;noscript&gt;&lt;iframe src="*.htm"&gt;&lt;/iframe&gt;&lt;/noscript&gt; </FONT>
<LI><FONT size=2><STRONG>禁止选取</STRONG>&lt;body&nbsp;oncontextmenu=<SPAN style="COLOR: #ff00ff">"return&nbsp;false"</SPAN>&nbsp;ondragstart=<SPAN style="COLOR: #ff00ff">"return&nbsp;false"</SPAN>&nbsp;onselectstart&nbsp;=<SPAN style="COLOR: #ff00ff">"return&nbsp;false"</SPAN>&nbsp;onselect=<SPAN style="COLOR: #ff00ff">"document.selection.empty()"</SPAN>&nbsp;oncopy=<SPAN style="COLOR: #ff00ff">"document.selection.empty()"</SPAN>&nbsp;onbeforecopy=<SPAN style="COLOR: #ff00ff">"return&nbsp;false"</SPAN>onmouseup=<SPAN style="COLOR: #ff00ff">"document.selection.empty()&gt;</SPAN><SPAN style="COLOR: #ff00ff">&nbsp;</SPAN></FONT> 
<LI><FONT size=2><STRONG>禁止粘贴</STRONG> <BR>&lt;input type=text onpaste="return false"&gt;</FONT> 
<LI><FONT size=2><STRONG>地址栏图标</STRONG> <BR>&lt;link rel="Shortcut Icon" href="favicon.ico"&gt; <BR>favicon.ico 名字最好不变16*16的16色,放虚拟目录根目录下</FONT> 
<LI><FONT size=2><STRONG>收藏栏图标</STRONG> <BR>&lt;link rel="Bookmark" href="favicon.ico"&gt; </FONT>
<LI><FONT size=2><STRONG>查看源码</STRONG> <BR>&lt;input type=button value=查看网页源代码 onclick="window.location = 'view-source:'+ 'http://www.csdn.net/'"&gt; </FONT>
<LI><FONT size=2><STRONG>关闭输入法</STRONG> <BR>&lt;input style="ime-mode:disabled"&gt; </FONT>
<LI><STRONG>自动全选</STRONG> <BR>&lt;input type=text name=text1 value="123" onfocus="this.select()"&gt; 
<LI><FONT size=2><STRONG>ENTER键可以让光标移到下一个输入框 <BR></STRONG>&lt;input onkeydown="if(event.keyCode==13)event.keyCode=9"&gt;</FONT> 
<LI><STRONG>文本框的默认值 <BR></STRONG>&lt;input type=text value="123" onfocus="alert(this.defaultValue)"&gt; 
<LI><STRONG>title换行 <BR></STRONG>obj.title = "123&#13sdfs&#32" 
<LI><FONT size=2><STRONG>获得时间所代表的微秒 <BR></STRONG>var n1 = new Date("2004-10-10".replace(/-/g, "\/")).getTime()</FONT> 
<LI><FONT size=2><STRONG>窗口是否关闭 <BR></STRONG>win.closed </FONT>
<LI><FONT size=2><STRONG>checkbox扁平 <BR></STRONG>&lt;input type=checkbox style="position: absolute; clip:rect(5px 15px 15px 5px)"&gt;&lt;br&gt;</FONT> 
<LI><STRONG>获取选中内容 <BR></STRONG>document.selection.createRange().duplicate().text 
<LI><STRONG>自动完成功能 <BR></STRONG>&lt;input&nbsp; type=text&nbsp; autocomplete=on&gt;打开该功能&nbsp; <BR>&lt;input&nbsp; type=text&nbsp; autocomplete=off&gt;关闭该功能&nbsp;&nbsp;&nbsp; 
<LI><FONT size=2><STRONG>窗口最大化</STRONG> <BR>&lt;body onload="window.resizeTo(window.screen.width - 4,window.screen.height-50);window.moveTo(-4,-4)"&gt;</FONT> 
<LI><FONT size=2><STRONG>无关闭按钮IE <BR></STRONG>window.open("aa.htm", "meizz", "fullscreen=7"); </FONT>
<LI><STRONG>统一编码/解码 <BR></STRONG>alert(decodeURIComponent(encodeURIComponent("http://你好.com?as= hehe"))) <BR>encodeURIComponent对":"、"/"、";" 和 "?"也编码 
<LI><STRONG>表格行指示 <BR></STRONG>&lt;tr onmouseover="this.bgColor='#f0f0f0'" onmouseout="this.bgColor='#ffffff'"&gt; 
<P><BR><STRONG>//各种尺寸</STRONG> </P>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">s&nbsp;&nbsp;+=&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"\r\n网页可见区域宽："</SPAN>+&nbsp;&nbsp;document.body.clientWidth;&nbsp;&nbsp; <BR>s&nbsp;&nbsp;+=&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"\r\n网页可见区域高："</SPAN>+&nbsp;&nbsp;document.body.clientHeight;&nbsp;&nbsp; <BR>s&nbsp;&nbsp;+=&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"\r\n网页可见区域高："</SPAN>+&nbsp;&nbsp;document.body.offsetWeight&nbsp;&nbsp;+<SPAN style="COLOR: #ff00ff">"&nbsp;&nbsp;(包括边线的宽)"</SPAN>;&nbsp;&nbsp; <BR>s&nbsp;&nbsp;+=&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"\r\n网页可见区域高："</SPAN>+&nbsp;&nbsp;document.body.offsetHeight&nbsp;&nbsp;+<SPAN style="COLOR: #ff00ff">"&nbsp;&nbsp;(包括边线的宽)"</SPAN>;&nbsp;&nbsp; <BR>s&nbsp;&nbsp;+=&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"\r\n网页正文全文宽："</SPAN>+&nbsp;&nbsp;document.body.scrollWidth;&nbsp;&nbsp; <BR>s&nbsp;&nbsp;+=&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"\r\n网页正文全文高："</SPAN>+&nbsp;&nbsp;document.body.scrollHeight;&nbsp;&nbsp; <BR>s&nbsp;&nbsp;+=&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"\r\n网页被卷去的高："</SPAN>+&nbsp;&nbsp;document.body.scrollTop;&nbsp;&nbsp; <BR>s&nbsp;&nbsp;+=&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"\r\n网页被卷去的左："</SPAN>+&nbsp;&nbsp;document.body.scrollLeft;&nbsp;&nbsp; <BR>s&nbsp;&nbsp;+=&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"\r\n网页正文部分上："</SPAN>+&nbsp;&nbsp;window.screenTop;&nbsp;&nbsp; <BR>s&nbsp;&nbsp;+=&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"\r\n网页正文部分左："</SPAN>+&nbsp;&nbsp;window.screenLeft;&nbsp;&nbsp; <BR>s&nbsp;&nbsp;+=&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"\r\n屏幕分辨率的高："</SPAN>+&nbsp;&nbsp;window.screen.height;&nbsp;&nbsp; <BR>s&nbsp;&nbsp;+=&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"\r\n屏幕分辨率的宽："</SPAN>+&nbsp;&nbsp;window.screen.width;&nbsp;&nbsp; <BR>s&nbsp;&nbsp;+=&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"\r\n屏幕可用工作区高度："</SPAN>+&nbsp;&nbsp;window.screen.availHeight;&nbsp;&nbsp; <BR>s&nbsp;&nbsp;+=&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"\r\n屏幕可用工作区宽度："</SPAN>+&nbsp;&nbsp;window.screen.availWidth;&nbsp;&nbsp; </DIV></FONT></FONT></FONT></STRONG></FONT></STRONG></FONT></LI></UL>
<P><FONT size=2><STRONG>//过滤数字</STRONG> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;input&nbsp;type=text&nbsp;onkeypress=<SPAN style="COLOR: #ff00ff">"return&nbsp;event.keyCode&gt;=48&&event.keyCode&lt;=57||(this.value.indexOf('.')&lt;0?event.keyCode==46:false)"</SPAN>&nbsp;onpaste=<SPAN style="COLOR: #ff00ff">"return&nbsp;!clipboardData.getData('text').match(/\D/)"</SPAN>&nbsp;ondragenter=<SPAN style="COLOR: #ff00ff">"return&nbsp;false"</SPAN>&gt; </DIV></FONT>
<P></P>
<P><FONT size=2><STRONG>//特殊用途</STRONG> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;input&nbsp;type=button&nbsp;value=导入收藏夹&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"window.external.ImportExportFavorites(true,'http:<SPAN style="COLOR: #008000">//localhost');"</SPAN>&gt; </SPAN><BR>&lt;input&nbsp;type=button&nbsp;value=导出收藏夹&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"window.external.ImportExportFavorites(false,'http:<SPAN style="COLOR: #008000">//localhost');"</SPAN>&gt; </SPAN><BR>&lt;input&nbsp;type=button&nbsp;value=整理收藏夹&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"window.external.ShowBrowserUI('OrganizeFavorites',&nbsp;null)"</SPAN>&gt; <BR>&lt;input&nbsp;type=button&nbsp;value=语言设置&nbsp;&nbsp;&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"window.external.ShowBrowserUI('LanguageDialog',&nbsp;null)"</SPAN>&gt; <BR>&lt;input&nbsp;type=button&nbsp;value=加入收藏夹&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"window.external.AddFavorite('http:<SPAN style="COLOR: #008000">//www.google.com/',&nbsp;'google')"</SPAN>&gt; </SPAN><BR>&lt;input&nbsp;type=button&nbsp;value=加入到频道&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"window.external.addChannel('http:<SPAN style="COLOR: #008000">//www.google.com/')"</SPAN>&gt; </SPAN><BR>&lt;input&nbsp;type=button&nbsp;value=加入到频道&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"window.external.showBrowserUI('PrivacySettings',null)"</SPAN>&gt; </DIV></FONT>
<P></P>
<P><FONT size=2><STRONG>//不缓存</STRONG> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;META&nbsp;HTTP-EQUIV=<SPAN style="COLOR: #ff00ff">"pragma"</SPAN>&nbsp;CONTENT=<SPAN style="COLOR: #ff00ff">"no-cache"</SPAN>&gt; <BR>&lt;META&nbsp;HTTP-EQUIV=<SPAN style="COLOR: #ff00ff">"Cache-Control"</SPAN>&nbsp;CONTENT=<SPAN style="COLOR: #ff00ff">"no-cache,&nbsp;must-revalidate"</SPAN>&gt; <BR>&lt;META&nbsp;HTTP-EQUIV=<SPAN style="COLOR: #ff00ff">"expires"</SPAN>&nbsp;CONTENT=<SPAN style="COLOR: #ff00ff">"0"</SPAN>&gt; </DIV>
<P></P></FONT>
<P></P>
<P><FONT size=2></FONT></P><BR><FONT size=2><STRONG>//正则匹配</STRONG></FONT> 
<P></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">匹配中文字符的正则表达式：&nbsp;[\u4e00-\u9fa5] <BR>匹配双字节字符(包括汉字在内)：[^\x00-\xff] <BR>匹配空行的正则表达式：\n[\s|&nbsp;]*\r <BR>匹配HTML标记的正则表达式：/&lt;(.*)&gt;.*&lt;\/\1&gt;|&lt;(.*)&nbsp;\/&gt;/&nbsp; <BR>匹配首尾空格的正则表达式：(^\s*)|(\s*$)（像vbscript那样的trim函数） <BR>匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* <BR>匹配网址URL的正则表达式：http:<SPAN style="COLOR: #008000">//([\w-]+\.)+[\w-]+(/[\w-&nbsp;./?%&=]*)? </SPAN><BR>以下是例子： <BR>利用正则表达式限制网页表单里的文本框输入内容： <BR>用正则表达式限制只能输入中文：onkeyup=<SPAN style="COLOR: #ff00ff">"value=value.replace(/[^\u4E00-\u9FA5]/g,'')"</SPAN>&nbsp;onbeforepaste=<SPAN style="COLOR: #ff00ff">"clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"</SPAN> <BR>1.用正则表达式限制只能输入全角字符：&nbsp;onkeyup=<SPAN style="COLOR: #ff00ff">"value=value.replace(/[^\uFF00-\uFFFF]/g,'')"</SPAN>&nbsp;onbeforepaste=<SPAN style="COLOR: #ff00ff">"clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"</SPAN> <BR>2.用正则表达式限制只能输入数字：onkeyup=<SPAN style="COLOR: #ff00ff">"value=value.replace(/[^\d]/g,'')&nbsp;"</SPAN>onbeforepaste=<SPAN style="COLOR: #ff00ff">"clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"</SPAN> <BR>3.用正则表达式限制只能输入数字和英文：onkeyup=<SPAN style="COLOR: #ff00ff">"value=value.replace(/[\W]/g,'')&nbsp;"</SPAN>onbeforepaste=<SPAN style="COLOR: #ff00ff">"clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"</SPAN> </DIV>
<P><FONT size=2><STRONG>//消除图像工具栏</STRONG> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee"><STRONG>&lt;IMG&nbsp;SRC=<SPAN style="COLOR: #ff00ff">"mypicture.jpg"</SPAN>&nbsp;HEIGHT=<SPAN style="COLOR: #ff00ff">"100px"</SPAN>&nbsp;WIDTH=<SPAN style="COLOR: #ff00ff">"100px"</SPAN>&nbsp;GALLERYIMG=<SPAN style="COLOR: #ff00ff">"false"</SPAN>&gt;&nbsp; <BR>or <BR>&lt;head&gt; <BR>&lt;meta&nbsp;http-equiv=<SPAN style="COLOR: #ff00ff">"imagetoolbar"</SPAN>&nbsp;content=<SPAN style="COLOR: #ff00ff">"no"</SPAN>&gt; <BR>&lt;/head&gt;</STRONG> </DIV></FONT>
<P></P></FONT>
<P><FONT size=2><STRONG>//无提示关闭 <BR></STRONG></FONT></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;Close() <BR>{ <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;ua=navigator.userAgent <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;ie=navigator.appName==<SPAN style="COLOR: #ff00ff">"Microsoft&nbsp;Internet&nbsp;Explorer"</SPAN>?<SPAN style="COLOR: #0000ff">true</SPAN>:false <BR>&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(ie) <BR>&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;IEversion=parseFloat(ua.substring(ua.indexOf(<SPAN style="COLOR: #ff00ff">"MSIE&nbsp;"</SPAN>)+5,ua.indexOf(<SPAN style="COLOR: #ff00ff">";"</SPAN>,ua.indexOf(<SPAN style="COLOR: #ff00ff">"MSIE&nbsp;"</SPAN>)))) <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(IEversion&lt;&nbsp;5.5) <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;str&nbsp;&nbsp;=&nbsp;'&lt;object&nbsp;id=noTipClose&nbsp;classid=<SPAN style="COLOR: #ff00ff">"clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"</SPAN>&gt;' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;+=&nbsp;'&lt;param&nbsp;name=<SPAN style="COLOR: #ff00ff">"Command"</SPAN>&nbsp;value=<SPAN style="COLOR: #ff00ff">"Close"</SPAN>&gt;&lt;/object&gt;'; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.body.insertAdjacentHTML(<SPAN style="COLOR: #ff00ff">"beforeEnd"</SPAN>,&nbsp;str); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.all.noTipClose.Click(); <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.opener&nbsp;=<SPAN style="COLOR: #0000ff">null</SPAN>; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.close(); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <BR>&nbsp;&nbsp;&nbsp;} <BR>&nbsp;else <BR>&nbsp;{ <BR>&nbsp;&nbsp;window.close() <BR>&nbsp;&nbsp;&nbsp;} <BR>} </DIV></FONT>
<P><FONT size=2><STRONG>//取得控件得绝对位置(1)</STRONG> <BR></FONT></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;script&nbsp;language=<SPAN style="COLOR: #ff00ff">"javascript"</SPAN>&gt;&nbsp; <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;getoffset(e) <BR>{&nbsp; <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;t=e.offsetTop;&nbsp; <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;l=e.offsetLeft;&nbsp; <BR>&nbsp;<SPAN style="COLOR: #0000ff">while</SPAN>(e=e.offsetParent) <BR>&nbsp;{&nbsp; <BR>&nbsp;&nbsp;t+=e.offsetTop;&nbsp; <BR>&nbsp;&nbsp;l+=e.offsetLeft;&nbsp; <BR>&nbsp;}&nbsp; <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;rec&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;<SPAN style="COLOR: #ff0000">Array</SPAN>(1); <BR>&nbsp;rec[0]&nbsp;&nbsp;=&nbsp;t; <BR>&nbsp;rec[1]&nbsp;=&nbsp;l; <BR>&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;rec <BR>}&nbsp; <BR><FONT size=2>&lt;/script&gt; </FONT></DIV>
<P><STRONG>//获得控件的绝对位置(2)</STRONG> </P></FONT>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">oRect&nbsp;=&nbsp;obj.getBoundingClientRect(); <BR>oRect.left <BR>oRect. </DIV>
<P><FONT size=2><STRONG>//最小化,最大化,关闭</STRONG> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;object&nbsp;id=min&nbsp;classid=<SPAN style="COLOR: #ff00ff">"clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"</SPAN>&gt;&nbsp; <BR>&lt;param&nbsp;name=<SPAN style="COLOR: #ff00ff">"Command"</SPAN>&nbsp;value=<SPAN style="COLOR: #ff00ff">"Minimize"</SPAN>&gt;&lt;/object&gt;&nbsp; <BR>&lt;object&nbsp;id=max&nbsp;classid=<SPAN style="COLOR: #ff00ff">"clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"</SPAN>&gt;&nbsp; <BR>&lt;param&nbsp;name=<SPAN style="COLOR: #ff00ff">"Command"</SPAN>&nbsp;value=<SPAN style="COLOR: #ff00ff">"Maximize"</SPAN>&gt;&lt;/object&gt;&nbsp; <BR>&lt;OBJECT&nbsp;id=close&nbsp;classid=<SPAN style="COLOR: #ff00ff">"clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"</SPAN>&gt;&nbsp; <BR>&lt;PARAM&nbsp;NAME=<SPAN style="COLOR: #ff00ff">"Command"</SPAN>&nbsp;value=<SPAN style="COLOR: #ff00ff">"Close"</SPAN>&gt;&lt;/OBJECT&gt;&nbsp; <BR>&lt;input&nbsp;type=button&nbsp;value=最小化&nbsp;onclick=min.Click()&gt;&nbsp; <BR>&lt;input&nbsp;type=button&nbsp;value=最大化&nbsp;onclick=max.Click()&gt;&nbsp; <BR>&lt;input&nbsp;type=button&nbsp;value=关闭&nbsp;onclick=close.Click()&gt;&nbsp; </DIV></FONT>
<P></P>
<P></P>
<P><FONT size=2></FONT></P><FONT size=2><STRONG>//光标停在文字最后</STRONG> <BR></FONT>
<P></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;script&nbsp;language=<SPAN style="COLOR: #ff00ff">"javascript"</SPAN>&gt; <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;cc() <BR>{ <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;e&nbsp;=&nbsp;event.srcElement; <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;r&nbsp;=e.createTextRange(); <BR>&nbsp;r.moveStart('character',e.value.length); <BR>&nbsp;r.collapse(<SPAN style="COLOR: #0000ff">true</SPAN>); <BR>&nbsp;r.select(); <BR>} <BR>&lt;/script&gt; <BR>&lt;input&nbsp;type=text&nbsp;name=text1&nbsp;value=<SPAN style="COLOR: #ff00ff">"123"</SPAN>&nbsp;onfocus=<SPAN style="COLOR: #ff00ff">"cc()"</SPAN>&gt; </DIV></FONT>
<P><FONT size=2><STRONG>//页面进入和退出的特效 <BR></STRONG></FONT></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">进入页面&lt;meta&nbsp;http-equiv=<SPAN style="COLOR: #ff00ff">"Page-Enter"</SPAN>&nbsp;content=<SPAN style="COLOR: #ff00ff">"revealTrans(duration=x,&nbsp;transition=y)"</SPAN>&gt; <BR>推出页面&lt;meta&nbsp;http-equiv=<SPAN style="COLOR: #ff00ff">"Page-Exit"</SPAN>&nbsp;content=<SPAN style="COLOR: #ff00ff">"revealTrans(duration=x,&nbsp;transition=y)"</SPAN>&gt;&nbsp; <BR>这个是页面被载入和调出时的一些特效。duration表示特效的持续时间，以秒为单位。transition表示使 <BR>用哪种特效，取值为1-23: <BR>　　0&nbsp;矩形缩小&nbsp; <BR>　　1&nbsp;矩形扩大&nbsp; <BR>　　2&nbsp;圆形缩小 <BR>　　3&nbsp;圆形扩大&nbsp; <BR>　　4&nbsp;下到上刷新&nbsp; <BR>　　5&nbsp;上到下刷新 <BR>　　6&nbsp;左到右刷新&nbsp; <BR>　　7&nbsp;右到左刷新&nbsp; <BR>　　8&nbsp;竖百叶窗 <BR>　　9&nbsp;横百叶窗&nbsp; <BR>　　10&nbsp;错位横百叶窗&nbsp; <BR>　　11&nbsp;错位竖百叶窗 <BR>　　12&nbsp;点扩散&nbsp; <BR>　　13&nbsp;左右到中间刷新&nbsp; <BR>　　14&nbsp;中间到左右刷新 <BR>　　15&nbsp;中间到上下 <BR>　　16&nbsp;上下到中间&nbsp; <BR>　　17&nbsp;右下到左上 <BR>　　18&nbsp;右上到左下&nbsp; <BR>　　19&nbsp;左上到右下&nbsp; <BR>　　20&nbsp;左下到右上 <BR>　　21&nbsp;横条&nbsp; <BR>　　22&nbsp;竖条&nbsp; <BR>　　23&nbsp; </DIV></FONT>
<P><FONT size=2><STRONG>//网页是否被检索</STRONG> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;meta&nbsp;name=<SPAN style="COLOR: #ff00ff">"ROBOTS"</SPAN>&nbsp;content=<SPAN style="COLOR: #ff00ff">"属性值"</SPAN>&gt; <BR>　　其中属性值有以下一些: <BR>　　属性值为<SPAN style="COLOR: #ff00ff">"all"</SPAN>:&nbsp;文件将被检索，且页上链接可被查询； <BR>　　属性值为<SPAN style="COLOR: #ff00ff">"none"</SPAN>:&nbsp;文件不被检索，而且不查询页上的链接； <BR>　　属性值为<SPAN style="COLOR: #ff00ff">"index"</SPAN>:&nbsp;文件将被检索； <BR>　　属性值为<SPAN style="COLOR: #ff00ff">"follow"</SPAN>:&nbsp;查询页上的链接； <BR>　　属性值为<SPAN style="COLOR: #ff00ff">"noindex"</SPAN>:&nbsp;文件不检索，但可被查询链接； <BR>　　属性值为<SPAN style="COLOR: #ff00ff">"nofollow"</SPAN>:&nbsp; </DIV></FONT>
<P></P>
<P><BR><FONT size=2><STRONG>//打印分页</STRONG> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;p&nbsp;&nbsp;style=<SPAN style="COLOR: #ff00ff">"page-break-after:always"</SPAN>&gt;page1&lt;/p&gt;&nbsp;&nbsp; <BR>&lt;p&nbsp;&nbsp;style=<SPAN style="COLOR: #ff00ff">"page-break-after:always"</SPAN>&gt;page2&lt;/p&gt;&nbsp;&nbsp; </DIV></FONT>
<P></P>
<P><BR><FONT size=2><STRONG>//设置打印</STRONG> <BR></FONT></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;object&nbsp;id=<SPAN style="COLOR: #ff00ff">"factory"</SPAN>&nbsp;style=<SPAN style="COLOR: #ff00ff">"display:none"</SPAN>&nbsp;viewastext <BR>&nbsp;&nbsp;classid=<SPAN style="COLOR: #ff00ff">"clsid:1663ed61-23eb-11d2-b92f-008048fdd814"</SPAN> <BR>&nbsp;&nbsp;codebase=<SPAN style="COLOR: #ff00ff">"http:<SPAN style="COLOR: #008000">//www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360"</SPAN> </SPAN><BR>&gt;&lt;/object&gt; <BR>&lt;input&nbsp;type=button&nbsp;value=页面设置&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"factory.printing.PageSetup()"</SPAN>&gt; <BR>&lt;input&nbsp;type=button&nbsp;value=打印预览&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"factory.printing.Preview()"</SPAN>&gt; <BR>&nbsp; <BR>&lt;script&nbsp;language=javascript&gt; <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;window.onload() <BR>{ <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #008000">//&nbsp;--&nbsp;advanced&nbsp;features </SPAN><BR>&nbsp;&nbsp;&nbsp;factory.printing.SetMarginMeasure(2)&nbsp;<SPAN style="COLOR: #008000">//&nbsp;measure&nbsp;margins&nbsp;in&nbsp;inches </SPAN><BR>&nbsp;&nbsp;&nbsp;factory.printing.SetPageRange(<SPAN style="COLOR: #0000ff">false</SPAN>,&nbsp;1,&nbsp;3)&nbsp;<SPAN style="COLOR: #008000">//&nbsp;need&nbsp;pages&nbsp;from&nbsp;1&nbsp;to&nbsp;3 </SPAN><BR>&nbsp;&nbsp;&nbsp;factory.printing.printer&nbsp;=&nbsp;<SPAN style="COLOR: #ff00ff">"HP&nbsp;DeskJet&nbsp;870C"</SPAN> <BR>&nbsp;&nbsp;&nbsp;factory.printing.copies&nbsp;=&nbsp;2 <BR>&nbsp;&nbsp;&nbsp;factory.printing.collate&nbsp;=&nbsp;true <BR>&nbsp;&nbsp;&nbsp;factory.printing.paperSize&nbsp;=&nbsp;<SPAN style="COLOR: #ff00ff">"A4"</SPAN> <BR>&nbsp;&nbsp;&nbsp;factory.printing.paperSource&nbsp;=&nbsp;<SPAN style="COLOR: #ff00ff">"Manual&nbsp;feed"</SPAN> <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #008000">//&nbsp;--&nbsp;basic&nbsp;features </SPAN><BR>&nbsp;&nbsp;&nbsp;factory.printing.header&nbsp;=&nbsp;<SPAN style="COLOR: #ff00ff">"居左显示&b居中显示&b居右显示页码，第&p页/共&P页"</SPAN> <BR>&nbsp;&nbsp;&nbsp;factory.printing.footer&nbsp;=&nbsp;<SPAN style="COLOR: #ff00ff">"（自定义页脚）"</SPAN> <BR>&nbsp;&nbsp;&nbsp;factory.printing.portrait&nbsp;=&nbsp;false <BR>&nbsp;&nbsp;&nbsp;factory.printing.leftMargin&nbsp;=&nbsp;0.75 <BR>&nbsp;&nbsp;&nbsp;factory.printing.topMargin&nbsp;=&nbsp;1.5 <BR>&nbsp;&nbsp;&nbsp;factory.printing.rightMargin&nbsp;=&nbsp;0.75 <BR>&nbsp;&nbsp;&nbsp;factory.printing.bottomMargin&nbsp;=&nbsp;1.5 <BR>} <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;Print(frame)&nbsp;{ <BR>&nbsp;&nbsp;factory.printing.Print(<SPAN style="COLOR: #0000ff">true</SPAN>,&nbsp;frame)&nbsp;<SPAN style="COLOR: #008000">//&nbsp;print&nbsp;with&nbsp;prompt </SPAN><BR>} <BR>&lt;/script&gt; <BR>&lt;input&nbsp;type=button&nbsp;value=<SPAN style="COLOR: #ff00ff">"打印本页"</SPAN>&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"factory.printing.Print(false)"</SPAN>&gt; <BR>&lt;input&nbsp;type=button&nbsp;value=<SPAN style="COLOR: #ff00ff">"页面设置"</SPAN>&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"factory.printing.PageSetup()"</SPAN>&gt; <BR>&lt;input&nbsp;type=button&nbsp;value=<SPAN style="COLOR: #ff00ff">"打印预览"</SPAN>&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"factory.printing.Preview()"</SPAN>&gt;&lt;br&gt; <BR>&lt;a&nbsp;href=<SPAN style="COLOR: #ff00ff">"http:<SPAN style="COLOR: #008000">//www.meadroid.com/scriptx/docs/printdoc.htm?static"</SPAN>&nbsp;&nbsp;target=_blank&gt;具体使用手册，更多信息，点这里&lt;/a&gt; </SPAN><BR><STRONG>&nbsp;</STRONG> </DIV>
<P><STRONG>//自带的打印预览</STRONG> </P></FONT><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">WebBrowser.ExecWB(1,1)&nbsp;打开&nbsp; <BR>Web.ExecWB(2,1)&nbsp;关闭现在所有的IE窗口，并打开一个新窗口&nbsp; <BR>Web.ExecWB(4,1)&nbsp;保存网页&nbsp; <BR>Web.ExecWB(6,1)&nbsp;打印&nbsp; <BR>Web.ExecWB(7,1)&nbsp;打印预览&nbsp; <BR>Web.ExecWB(8,1)&nbsp;打印页面设置&nbsp; <BR>Web.ExecWB(10,1)&nbsp;查看页面属性&nbsp; <BR>Web.ExecWB(15,1)&nbsp;好像是撤销，有待确认&nbsp; <BR>Web.ExecWB(17,1)&nbsp;全选&nbsp; <BR>Web.ExecWB(22,1)&nbsp;刷新&nbsp; <BR>Web.ExecWB(45,1)&nbsp;关闭窗体无提示&nbsp; <BR>&lt;style&nbsp;media=print&gt;&nbsp; <BR>.Noprint{display:none;}&lt;!--用本样式在打印时隐藏非打印项目--&gt;&nbsp; <BR>.PageNext{page-break-after:&nbsp;always;}&lt;!--控制分页--&gt;&nbsp; <BR>&lt;/style&gt;&nbsp; <BR>&lt;object&nbsp;&nbsp;id=<SPAN style="COLOR: #ff00ff">"WebBrowser"</SPAN>&nbsp;&nbsp;width=0&nbsp;&nbsp;height=0&nbsp;&nbsp;classid=<SPAN style="COLOR: #ff00ff">"CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"</SPAN>&gt;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&lt;/object&gt;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp; <BR>&lt;center&nbsp;class=<SPAN style="COLOR: #ff00ff">"Noprint"</SPAN>&nbsp;&gt; <BR>&lt;input&nbsp;type=button&nbsp;value=打印&nbsp;onclick=document.all.WebBrowser.ExecWB(6,1)&gt;&nbsp; <BR>&lt;input&nbsp;type=button&nbsp;value=直接打印&nbsp;onclick=document.all.WebBrowser.ExecWB(6,6)&gt;&nbsp; <BR>&lt;input&nbsp;type=button&nbsp;value=页面设置&nbsp;onclick=document.all.WebBrowser.ExecWB(8,1)&gt;&nbsp; <BR>&lt;/p&gt;&nbsp; <BR>&lt;p&gt;&nbsp;&lt;input&nbsp;type=button&nbsp;value=打印预览&nbsp;onclick=document.all.WebBrowser.ExecWB(7,1)&gt;&nbsp; <BR>&lt;/center&gt; </DIV></FONT>
<P><FONT size=2><STRONG>//去掉打印时的页眉页脚</STRONG> <BR></FONT></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;script&nbsp;&nbsp;language=<SPAN style="COLOR: #ff00ff">"JavaScript"</SPAN>&gt;&nbsp;&nbsp; <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;HKEY_Root,HKEY_Path,HKEY_Key; <BR>HKEY_Root=<SPAN style="COLOR: #ff00ff">"HKEY_CURRENT_USER"</SPAN>; <BR>HKEY_Path=<SPAN style="COLOR: #ff00ff">"\\Software\\Microsoft\\Internet&nbsp;Explorer\\PageSetup\\"</SPAN>; <BR><SPAN style="COLOR: #008000">//设置网页打印的页眉页脚为空 </SPAN><BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;PageSetup_Null() <BR>{ <BR>&nbsp;try <BR>&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;Wsh=<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;<SPAN style="COLOR: #ff0000">ActiveXObject</SPAN>(<SPAN style="COLOR: #ff00ff">"WScript.Shell"</SPAN>); <BR>&nbsp;&nbsp;HKEY_Key=<SPAN style="COLOR: #ff00ff">"header"</SPAN>; <BR>&nbsp;&nbsp;Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,<SPAN style="COLOR: #ff00ff">""</SPAN>); <BR>&nbsp;&nbsp;HKEY_Key=<SPAN style="COLOR: #ff00ff">"footer"</SPAN>; <BR>&nbsp;&nbsp;Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,<SPAN style="COLOR: #ff00ff">""</SPAN>); <BR>&nbsp;} <BR>&nbsp;<SPAN style="COLOR: #0000ff">catch</SPAN>(e){} <BR>} <BR><SPAN style="COLOR: #008000">//设置网页打印的页眉页脚为默认值 </SPAN><BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;&nbsp;PageSetup_Default() <BR>{&nbsp;&nbsp; <BR>&nbsp;try <BR>&nbsp;{ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;Wsh=<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;<SPAN style="COLOR: #ff0000">ActiveXObject</SPAN>(<SPAN style="COLOR: #ff00ff">"WScript.Shell"</SPAN>); <BR>&nbsp;&nbsp;HKEY_Key=<SPAN style="COLOR: #ff00ff">"header"</SPAN>; <BR>&nbsp;&nbsp;Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,<SPAN style="COLOR: #ff00ff">"&w&b页码,&p/&P"</SPAN>); <BR>&nbsp;&nbsp;HKEY_Key=<SPAN style="COLOR: #ff00ff">"footer"</SPAN>; <BR>&nbsp;&nbsp;Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,<SPAN style="COLOR: #ff00ff">"&u&b&d"</SPAN>); <BR>&nbsp;} <BR>&nbsp;<SPAN style="COLOR: #0000ff">catch</SPAN>(e){} <BR>} <BR>&lt;/script&gt; <BR>&lt;input&nbsp;type=<SPAN style="COLOR: #ff00ff">"button"</SPAN>&nbsp;value=<SPAN style="COLOR: #ff00ff">"清空页码"</SPAN>&nbsp;onclick=PageSetup_Null()&gt; <BR>&lt;input&nbsp;type=<SPAN style="COLOR: #ff00ff">"button"</SPAN>&nbsp;value=<SPAN style="COLOR: #ff00ff">"恢复页码"</SPAN>&nbsp;onclick=PageSetup_Default()&gt; </DIV>
<P><FONT size=2><STRONG>//浏览器验证</STRONG> <BR></FONT></P></FONT><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;checkBrowser() <BR>{&nbsp; <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ver=navigator.appVersion&nbsp; <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.dom=document.getElementById?1:0&nbsp; <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ie6=(<SPAN style="COLOR: #0000ff">this</SPAN>.ver.indexOf(<SPAN style="COLOR: #ff00ff">"MSIE&nbsp;6"</SPAN>)&gt;-1&nbsp;&&&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.dom)?1:0;&nbsp; <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ie5=(<SPAN style="COLOR: #0000ff">this</SPAN>.ver.indexOf(<SPAN style="COLOR: #ff00ff">"MSIE&nbsp;5"</SPAN>)&gt;-1&nbsp;&&&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.dom)?1:0;&nbsp; <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ie4=(document.all&nbsp;&&&nbsp;!<SPAN style="COLOR: #0000ff">this</SPAN>.dom)?1:0;&nbsp; <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ns5=(<SPAN style="COLOR: #0000ff">this</SPAN>.dom&nbsp;&&&nbsp;parseInt(<SPAN style="COLOR: #0000ff">this</SPAN>.ver)&nbsp;&gt;=&nbsp;5)&nbsp;?1:0;&nbsp; <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ns4=(document.layers&nbsp;&&&nbsp;!<SPAN style="COLOR: #0000ff">this</SPAN>.dom)?1:0;&nbsp; <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.mac=(<SPAN style="COLOR: #0000ff">this</SPAN>.ver.indexOf('Mac')&nbsp;&gt;&nbsp;-1)&nbsp;?1:0;&nbsp; <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ope=(navigator.userAgent.indexOf('Opera')&gt;-1);&nbsp; <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ie=(<SPAN style="COLOR: #0000ff">this</SPAN>.ie6&nbsp;||&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ie5&nbsp;||&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ie4)&nbsp; <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ns=(<SPAN style="COLOR: #0000ff">this</SPAN>.ns4&nbsp;||&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ns5)&nbsp; <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.bw=(<SPAN style="COLOR: #0000ff">this</SPAN>.ie6&nbsp;||&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ie5&nbsp;||&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ie4&nbsp;||&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ns5&nbsp;||&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ns4&nbsp;||&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.mac&nbsp;||&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.ope)&nbsp; <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.nbw=(!<SPAN style="COLOR: #0000ff">this</SPAN>.bw)&nbsp; <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>; <BR>} </DIV>
<P><STRONG>//计算内容宽和高</STRONG><FONT size=2> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;SCRIPT&nbsp;&nbsp;language=<SPAN style="COLOR: #ff00ff">"javascript"</SPAN>&gt;&nbsp;&nbsp; <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;&nbsp;test(obj)&nbsp;&nbsp; <BR>{&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;&nbsp;range&nbsp;&nbsp;=&nbsp;&nbsp;obj.createTextRange();&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(<SPAN style="COLOR: #ff00ff">"内容区宽度:&nbsp;&nbsp;"</SPAN>&nbsp;&nbsp;+&nbsp;&nbsp;range.boundingWidth&nbsp;&nbsp;&nbsp;&nbsp; <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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"px\r\n内容区高度:&nbsp;&nbsp;"</SPAN>&nbsp;&nbsp;+&nbsp;&nbsp;range.boundingHeight&nbsp;&nbsp;+&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"px"</SPAN>);&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>}&nbsp;&nbsp; <BR>&lt;/SCRIPT&gt;&nbsp;&nbsp; <BR>&lt;BODY&gt;&nbsp;&nbsp; <BR>&lt;Textarea&nbsp;id=<SPAN style="COLOR: #ff00ff">"txt"</SPAN>&nbsp;height=<SPAN style="COLOR: #ff00ff">"150"</SPAN>&gt;sdf&lt;/textarea&gt;&lt;INPUT&nbsp;&nbsp;type=<SPAN style="COLOR: #ff00ff">"button"</SPAN>&nbsp;&nbsp;value=<SPAN style="COLOR: #ff00ff">"计算内容宽度"</SPAN>&nbsp;&nbsp;onClick=<SPAN style="COLOR: #ff00ff">"test(txt)"</SPAN>&gt;&nbsp;&nbsp; <BR>&lt;/BODY&gt; </DIV>
<P><STRONG>//无模式的提示框</STRONG><FONT size=2> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;modelessAlert(Msg) <BR>{ <BR>&nbsp;&nbsp;&nbsp;window.showModelessDialog(<SPAN style="COLOR: #ff00ff">"javascript:alert(\""</SPAN>+escape(Msg)+<SPAN style="COLOR: #ff00ff">"\");window.close();"</SPAN>,<SPAN style="COLOR: #ff00ff">""</SPAN>,<SPAN style="COLOR: #ff00ff">"status:no;resizable:no;help:no;dialogHeight:height:30px;dialogHeight:40px;"</SPAN>); <BR>} </DIV></FONT>
<P></P></FONT>
<P></P></FONT>
<P></P>
<P><FONT size=2></FONT></P><STRONG><FONT size=2>//屏蔽按键</FONT></STRONG> 
<P></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;html&gt; <BR>&lt;head&gt; <BR>&nbsp;&nbsp;&lt;meta&nbsp;http-equiv=<SPAN style="COLOR: #ff00ff">"Content-Type"</SPAN>&nbsp;content=<SPAN style="COLOR: #ff00ff">"text/html;&nbsp;charset=gb2312"</SPAN>&gt; <BR>&nbsp;&nbsp;&lt;noscript&gt;&lt;meta&nbsp;http-equiv=<SPAN style="COLOR: #ff00ff">"refresh"</SPAN>&nbsp;content=<SPAN style="COLOR: #ff00ff">"0;url=about:noscript"</SPAN>&gt;&lt;/noscript&gt; <BR>&nbsp;&nbsp;&lt;title&gt;屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键&lt;/title&gt; <BR>&lt;/head&gt; <BR>&lt;body&gt; <BR>&lt;script&nbsp;language=<SPAN style="COLOR: #ff00ff">"Javascript"</SPAN>&gt;&lt;!-- <BR>&nbsp;&nbsp;<SPAN style="COLOR: #008000">//屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键 </SPAN><BR>&nbsp;&nbsp;<SPAN style="COLOR: #008000">//Author:&nbsp;meizz(梅花雨)&nbsp;2002-6-18 </SPAN><BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;document.oncontextmenu(){event.returnValue=<SPAN style="COLOR: #0000ff">false</SPAN>;}<SPAN style="COLOR: #008000">//屏蔽鼠标右键 </SPAN><BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;window.onhelp(){<SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;<SPAN style="COLOR: #0000ff">false</SPAN>}&nbsp;<SPAN style="COLOR: #008000">//屏蔽F1帮助 </SPAN><BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;document.onkeydown() <BR>{ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;((window.event.altKey)&& <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((window.event.keyCode==37)||&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #008000">//屏蔽&nbsp;Alt+&nbsp;方向键&nbsp;← </SPAN><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(window.event.keyCode==39)))&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #008000">//屏蔽&nbsp;Alt+&nbsp;方向键&nbsp;→ </SPAN><BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(<SPAN style="COLOR: #ff00ff">"不准你使用ALT+方向键前进或后退网页！"</SPAN>); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=<SPAN style="COLOR: #0000ff">false</SPAN>; <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #008000">/*&nbsp;注：这还不是真正地屏蔽&nbsp;Alt+&nbsp;方向键， <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因为&nbsp;Alt+&nbsp;方向键弹出警告框时，按住&nbsp;Alt&nbsp;键不放， <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用鼠标点掉警告框，这种屏蔽方法就失效了。以后若 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有哪位高手有真正屏蔽&nbsp;Alt&nbsp;键的方法，请告知。*/</SPAN> <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;((event.keyCode==8)&nbsp;&nbsp;||&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #008000">//屏蔽退格删除键 </SPAN><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(event.keyCode==116)||&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #008000">//屏蔽&nbsp;F5&nbsp;刷新键 </SPAN><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(event.ctrlKey&nbsp;&&&nbsp;event.keyCode==82)){&nbsp;<SPAN style="COLOR: #008000">//Ctrl&nbsp;+&nbsp;R </SPAN><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.keyCode=0; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=<SPAN style="COLOR: #0000ff">false</SPAN>; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;(event.keyCode==122){event.keyCode=0;event.returnValue=<SPAN style="COLOR: #0000ff">false</SPAN>;}&nbsp;&nbsp;<SPAN style="COLOR: #008000">//屏蔽F11 </SPAN><BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;(event.ctrlKey&nbsp;&&&nbsp;event.keyCode==78)&nbsp;event.returnValue=<SPAN style="COLOR: #0000ff">false</SPAN>;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #008000">//屏蔽&nbsp;Ctrl+n </SPAN><BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;(event.shiftKey&nbsp;&&&nbsp;event.keyCode==121)event.returnValue=<SPAN style="COLOR: #0000ff">false</SPAN>;&nbsp;&nbsp;<SPAN style="COLOR: #008000">//屏蔽&nbsp;shift+F10 </SPAN><BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;(window.event.srcElement.tagName&nbsp;==&nbsp;<SPAN style="COLOR: #ff00ff">"A"</SPAN>&nbsp;&&&nbsp;window.event.shiftKey)&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.event.returnValue&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">false</SPAN>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #008000">//屏蔽&nbsp;shift&nbsp;加鼠标左键新开一网页 </SPAN><BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;((window.event.altKey)&&(window.event.keyCode==115))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #008000">//屏蔽Alt+F4 </SPAN><BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.showModelessDialog(<SPAN style="COLOR: #ff00ff">"about:blank"</SPAN>,<SPAN style="COLOR: #ff00ff">""</SPAN>,<SPAN style="COLOR: #ff00ff">"dialogWidth:1px;dialogheight:1px"</SPAN>); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;<SPAN style="COLOR: #0000ff">false</SPAN>; <BR>&nbsp;&nbsp;} <BR>} <BR>&lt;/script&gt; <BR>屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键 <BR>&lt;/body&gt; <BR>&lt;/html&gt; </DIV>
<P><STRONG>//屏蔽打印</STRONG> <BR>&lt;style&gt; <BR>@media print{ <BR>* {display:none} <BR>} <BR>&lt;/style&gt; </P></FONT>
<P><FONT size=2><STRONG>//移动的图层，拖动 <BR></STRONG></FONT></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">1.&lt;span&nbsp;style='position:absolute;width:200;height:200;background:red'&nbsp;onmousedown=MouseDown(<SPAN style="COLOR: #0000ff">this</SPAN>)&nbsp;onmousemove=MouseMove()&nbsp;onmouseup=MouseUp()&gt;meizz&lt;/span&gt; <BR>&lt;script&nbsp;language=javascript&gt; <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;Obj; <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;MouseDown(obj) <BR>{ <BR>&nbsp;&nbsp;Obj=obj; <BR>&nbsp;&nbsp;Obj.setCapture(); <BR>&nbsp;&nbsp;Obj.l=event.x-Obj.style.pixelLeft; <BR>&nbsp;&nbsp;Obj.t=event.y-Obj.style.pixelTop; <BR>} <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;MouseMove() <BR>{ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(Obj!=<SPAN style="COLOR: #0000ff">null</SPAN>) <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;Obj.style.left&nbsp;=&nbsp;event.x-Obj.l; <BR>&nbsp;&nbsp;&nbsp;&nbsp;Obj.style.top&nbsp;=&nbsp;event.y-Obj.t; <BR>&nbsp;&nbsp;} <BR>} <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;MouseUp() <BR>{ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(Obj!=<SPAN style="COLOR: #0000ff">null</SPAN>) <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;Obj.releaseCapture(); <BR>&nbsp;&nbsp;&nbsp;&nbsp;Obj=<SPAN style="COLOR: #0000ff">null</SPAN>; <BR>&nbsp;&nbsp;} <BR>} <BR>&lt;/script&gt; <BR>2. <BR>&lt;div&nbsp;id=<SPAN style="COLOR: #ff00ff">"myDiv"</SPAN>&nbsp;src=<SPAN style="COLOR: #ff00ff">"logo.gif"</SPAN>&nbsp;ondrag=<SPAN style="COLOR: #ff00ff">"doDrag();"</SPAN>&nbsp;onmouseover=<SPAN style="COLOR: #ff00ff">"this.style.cursor='hand'"</SPAN>&nbsp;style=<SPAN style="COLOR: #ff00ff">"position:absolute;left=100;top=100;"</SPAN>&nbsp;onmousedown=<SPAN style="COLOR: #ff00ff">"doMouseDown();"</SPAN>&gt; <BR>&lt;a&nbsp;href=<SPAN style="COLOR: #ff00ff">"#"</SPAN>&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"return&nbsp;false"</SPAN>&gt;&lt;h1&gt;wlecome&lt;/h1&gt;&lt;/a&gt; <BR>&lt;/div&gt; <BR>&lt;script&nbsp;language=<SPAN style="COLOR: #ff00ff">"JavaScript"</SPAN>&nbsp;type=<SPAN style="COLOR: #ff00ff">"text/javascript"</SPAN>&gt; <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;orgMouseX; <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;orgMouseY; <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;orgObjX; <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;orgObjY; <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;doDrag() <BR>{ <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;myObject=document.all.myDiv; <BR><BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;x=event.clientX; <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;y=event.clientY; <BR>myObject.style.left=x-(orgMouseX-orgObjX); <BR>myObject.style.top=y-(orgMouseY-orgObjY); <BR>&nbsp; <BR>} <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;doMouseDown() <BR>{ <BR>orgMouseX=event.clientX; <BR>orgMouseY=event.clientY; <BR>orgObjX=parseInt(document.all.myDiv.style.left); <BR>orgObjY=parseInt(document.all.myDiv.style.top); <BR>} <BR><BR>&lt;/script&gt; <BR>&nbsp; </DIV>
<P><FONT size=2><STRONG>//文档状态改变 <BR></STRONG></FONT></P></FONT><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;iframe&nbsp;src=<SPAN style="COLOR: #ff00ff">"a.html"</SPAN>&nbsp;id=<SPAN style="COLOR: #ff00ff">"f"</SPAN>&nbsp;name=<SPAN style="COLOR: #ff00ff">"f"</SPAN>&nbsp;scrolling=<SPAN style="COLOR: #ff00ff">"no"</SPAN>&nbsp;frameborder=0&nbsp;marginwidth=0&nbsp;marginheight=0&gt;&lt;/iframe&gt; <BR>&lt;script&gt; <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;doc=window.frames[<SPAN style="COLOR: #ff00ff">"f"</SPAN>].document; <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;s(){ <BR>&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;(doc.readyState==<SPAN style="COLOR: #ff00ff">"complete"</SPAN>){ <BR>&nbsp;&nbsp;document.all.f.style.height=doc.body.scrollHeight <BR>&nbsp;&nbsp;document.all.f.style.width=doc.body.scrollWidth <BR>&nbsp;} <BR>} <BR>doc.onreadystatechange=s <BR>&lt;/script&gt; <BR><SPAN style="COLOR: #008000"></SPAN></DIV></FONT>
<P><FONT size=2><STRONG>//刷新后不变的文本框</STRONG> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px, ; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;HTML&gt; <BR>&lt;HEAD&gt; <BR>&lt;META&nbsp;NAME=<SPAN style="COLOR: #ff00ff">"save"</SPAN>&nbsp;CONTENT=<SPAN style="COLOR: #ff00ff">"history"</SPAN>&gt; <BR>&lt;STYLE&gt; <BR>&nbsp;&nbsp;&nbsp;.sHistory&nbsp;{behavior:url(#default#savehistory);} <BR>&lt;/STYLE&gt; <BR>&lt;/HEAD&gt; <BR>&lt;BODY&gt; <BR>&lt;INPUT&nbsp;class=sHistory&nbsp;type=text&nbsp;id=oPersistInput&gt; <BR>&lt;/BODY&gt; <BR>&lt;/HTML&gt; </DIV></FONT>
<P></P>
<P><FONT size=2><STRONG>//访问剪贴板</STRONG> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">(1)拖拽访问 <BR>event.dataTransfer.setData(<SPAN style="COLOR: #ff00ff">"URL"</SPAN>,&nbsp;oImage.src); <BR>sImageURL&nbsp;=&nbsp;event.dataTransfer.getData(<SPAN style="COLOR: #ff00ff">"URL"</SPAN>) <BR>(2)普通访问 <BR>window.clipboardData.setData(<SPAN style="COLOR: #ff00ff">"Text"</SPAN>,oSource.innerText); <BR>window.clipboardData.getData(<SPAN style="COLOR: #ff00ff">"Text"</SPAN>); </DIV></FONT>
<P></P>
<P><FONT size=2><STRONG>//操作COOKIE</STRONG> <BR></FONT></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;SetCookie(sName,&nbsp;sValue) <BR>{ <BR>&nbsp;document.cookie&nbsp;=&nbsp;sName&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">"="</SPAN>&nbsp;+&nbsp;escape(sValue)&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">";&nbsp;"</SPAN>; <BR>} <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;GetCookie(sName) <BR>{ <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;aCookie&nbsp;=&nbsp;document.cookie.split(<SPAN style="COLOR: #ff00ff">";&nbsp;"</SPAN>); <BR>&nbsp;for&nbsp;(<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;i=0;&nbsp;i&nbsp;&lt;&nbsp;aCookie.length;&nbsp;i++) <BR>&nbsp;{ <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;aCrumb&nbsp;=&nbsp;aCookie[i].split(<SPAN style="COLOR: #ff00ff">"="</SPAN>); <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;(sName&nbsp;==&nbsp;aCrumb[0])&nbsp; <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;unescape(aCrumb[1]); <BR>&nbsp;} <BR>&nbsp; <BR>} <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;DelCookie(sName) <BR>{ <BR>document.cookie&nbsp;=&nbsp;sName&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">"="</SPAN>&nbsp;+&nbsp;escape(sValue)&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">";&nbsp;expires=Fri,&nbsp;31&nbsp;Dec&nbsp;1999&nbsp;23:59:59&nbsp;GMT;"</SPAN>; <BR>} </DIV>
<P><STRONG>//setTimeout增加参数</STRONG> </P></FONT>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;script&gt; <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;_st&nbsp;=&nbsp;window.setTimeout; <BR>window.setTimeout&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">function</SPAN>(fRef,&nbsp;mDelay)&nbsp;{ <BR>&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(typeof&nbsp;fRef&nbsp;==&nbsp;'<SPAN style="COLOR: #0000ff">function</SPAN>'){ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;argu&nbsp;=&nbsp;<SPAN style="COLOR: #ff0000">Array</SPAN>.prototype.slice.call(arguments,2); <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;f&nbsp;=&nbsp;(<SPAN style="COLOR: #0000ff">function</SPAN>(){&nbsp;fRef.apply(<SPAN style="COLOR: #0000ff">null</SPAN>,&nbsp;argu);&nbsp;}); <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;_st(f,&nbsp;mDelay); <BR>&nbsp;} <BR>&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;_st(fRef,mDelay); <BR>} <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;test(x){ <BR>&nbsp;alert(x); <BR>} <BR>window.setTimeout(test,1000,'fason'); <BR>&lt;/script&gt; </DIV>
<P><BR><FONT size=2><STRONG>//自定义的apply,call</STRONG></FONT> </P>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">Function.prototype.apply&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;(obj,&nbsp;argu)&nbsp;{ <BR>&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;(obj)&nbsp;obj.constructor.prototype._caller&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>;&nbsp; <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;argus&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;<SPAN style="COLOR: #ff0000">Array</SPAN>(); <BR>&nbsp;for&nbsp;(<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;i=0;i&lt;argu.length;i++) <BR>&nbsp;&nbsp;argus[i]&nbsp;=&nbsp;<SPAN style="COLOR: #ff00ff">"argu["</SPAN>&nbsp;+&nbsp;i&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">"]"</SPAN>; <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;r; <BR>&nbsp;eval(<SPAN style="COLOR: #ff00ff">"r&nbsp;=&nbsp;"</SPAN>&nbsp;+&nbsp;(obj&nbsp;?&nbsp;(<SPAN style="COLOR: #ff00ff">"obj._caller("</SPAN>&nbsp;+&nbsp;argus.jo&#105;n(<SPAN style="COLOR: #ff00ff">","</SPAN>)&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">");"</SPAN>)&nbsp;:&nbsp;(<SPAN style="COLOR: #ff00ff">"this("</SPAN>&nbsp;+&nbsp;argus.jo&#105;n(<SPAN style="COLOR: #ff00ff">","</SPAN>)&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">");"</SPAN>))); <BR>&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;r; <BR>}; <BR>Function.prototype.call&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;(obj)&nbsp;{ <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;argu&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;<SPAN style="COLOR: #ff0000">Array</SPAN>(); <BR>&nbsp;for&nbsp;(<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;i=1;i&lt;arguments.length;i++) <BR>&nbsp;&nbsp;argu[i-1]&nbsp;=&nbsp;arguments[i]; <BR>&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;<SPAN style="COLOR: #0000ff">this</SPAN>.apply(obj,&nbsp;argu); <BR>};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </DIV>
<P><BR><FONT size=2><STRONG>//下载文件</STRONG></FONT> </P>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;DownURL(strRemoteURL,strLocalURL) <BR>{ <BR>&nbsp;try <BR>&nbsp;{ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;xmlHTTP=<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;<SPAN style="COLOR: #ff0000">ActiveXObject</SPAN>(<SPAN style="COLOR: #ff00ff">"Microsoft.XMLHTTP"</SPAN>); <BR>&nbsp;&nbsp;xmlHTTP.open(<SPAN style="COLOR: #ff00ff">"Get"</SPAN>,strRemoteURL,<SPAN style="COLOR: #0000ff">false</SPAN>); <BR>&nbsp;&nbsp;xmlHTTP.send(); <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;adodbStream=<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;<SPAN style="COLOR: #ff0000">ActiveXObject</SPAN>(<SPAN style="COLOR: #ff00ff">"ADODB.Stream"</SPAN>); <BR>&nbsp;&nbsp;adodbStream.Type=1;<SPAN style="COLOR: #008000">//1=adTypeBinary </SPAN><BR>&nbsp;&nbsp;adodbStream.Open(); <BR>&nbsp;&nbsp;adodbStream.write(xmlHTTP.responseBody); <BR>&nbsp;&nbsp;adodbStream.SaveToFile(strLocalURL,2); <BR>&nbsp;&nbsp;adodbStream.Close(); <BR>&nbsp;&nbsp;adodbStream=<SPAN style="COLOR: #0000ff">null</SPAN>; <BR>&nbsp;&nbsp;xmlHTTP=<SPAN style="COLOR: #0000ff">null</SPAN>; <BR>&nbsp;&nbsp; <BR>&nbsp;} <BR>&nbsp;<SPAN style="COLOR: #0000ff">catch</SPAN>(e) <BR>&nbsp;{ <BR>&nbsp;&nbsp;window.confirm(<SPAN style="COLOR: #ff00ff">"下载URL出错!"</SPAN>); <BR>&nbsp;} <BR>&nbsp;<SPAN style="COLOR: #008000">//window.confirm(<SPAN style="COLOR: #ff00ff">"下载完成."</SPAN>); </SPAN><BR>} </DIV>
<P><BR><FONT size=2><STRONG>//检验连接是否有效</STRONG> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;getXML(URL)&nbsp; <BR>{ <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;xmlhttp&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;<SPAN style="COLOR: #ff0000">ActiveXObject</SPAN>(<SPAN style="COLOR: #ff00ff">"microsoft.xmlhttp"</SPAN>); <BR>&nbsp;xmlhttp.Open(<SPAN style="COLOR: #ff00ff">"GET"</SPAN>,URL,&nbsp;<SPAN style="COLOR: #0000ff">false</SPAN>);&nbsp; <BR>&nbsp;try <BR>&nbsp;{&nbsp; <BR>&nbsp;&nbsp;xmlhttp.Send(); <BR>&nbsp;} <BR>&nbsp;<SPAN style="COLOR: #0000ff">catch</SPAN>(e){} <BR>&nbsp;<SPAN style="COLOR: #0000ff">finally</SPAN>&nbsp; <BR>&nbsp;{ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;result&nbsp;=&nbsp;xmlhttp.responseText; <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(result)&nbsp; <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(xmlhttp.Status==200) <BR>&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>(<SPAN style="COLOR: #0000ff">true</SPAN>); <BR>&nbsp;&nbsp;&nbsp;} <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">else</SPAN>&nbsp; <BR>&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>(<SPAN style="COLOR: #0000ff">false</SPAN>); <BR>&nbsp;&nbsp;&nbsp;} <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">else</SPAN>&nbsp; <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>(<SPAN style="COLOR: #0000ff">false</SPAN>); <BR>&nbsp;&nbsp;} <BR>&nbsp;} <BR>} </DIV>
<P><FONT size=2><STRONG>//POST代替FORM</STRONG></FONT><FONT size=2> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;SCRIPT&nbsp;language=<SPAN style="COLOR: #ff00ff">"VBScript"</SPAN>&gt; <BR>Function&nbsp;URLEncoding(vstrIn) <BR>&nbsp;&nbsp;&nbsp;&nbsp;strReturn&nbsp;=&nbsp;<SPAN style="COLOR: #ff00ff">""</SPAN> <BR>&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;i&nbsp;=&nbsp;1&nbsp;To&nbsp;Len(vstrIn) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ThisChr&nbsp;=&nbsp;Mid(vStrIn,i,1) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Abs(Asc(ThisChr))&nbsp;&lt;&nbsp;&HFF&nbsp;Then <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strReturn&nbsp;=&nbsp;strReturn&nbsp;&&nbsp;ThisChr <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;innerCode&nbsp;=&nbsp;Asc(ThisChr) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;innerCode&nbsp;&lt;&nbsp;0&nbsp;Then <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;innerCode&nbsp;=&nbsp;innerCode&nbsp;+&nbsp;&H10000 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hight8&nbsp;=&nbsp;(innerCode&nbsp;&nbsp;And&nbsp;&HFF00)\&nbsp;&HFF <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Low8&nbsp;=&nbsp;innerCode&nbsp;And&nbsp;&HFF <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strReturn&nbsp;=&nbsp;strReturn&nbsp;&&nbsp;<SPAN style="COLOR: #ff00ff">"%"</SPAN>&nbsp;&&nbsp;Hex(Hight8)&nbsp;&&nbsp;&nbsp;<SPAN style="COLOR: #ff00ff">"%"</SPAN>&nbsp;&&nbsp;Hex(Low8) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If <BR>&nbsp;&nbsp;&nbsp;&nbsp;Next <BR>&nbsp;&nbsp;&nbsp;&nbsp;URLEncoding&nbsp;=&nbsp;strReturn <BR>End&nbsp;Function <BR>Function&nbsp;bytes2BSTR(vIn) <BR>&nbsp;&nbsp;&nbsp;&nbsp;strReturn&nbsp;=&nbsp;<SPAN style="COLOR: #ff00ff">""</SPAN> <BR>&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;i&nbsp;=&nbsp;1&nbsp;To&nbsp;LenB(vIn) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ThisCharCode&nbsp;=&nbsp;AscB(MidB(vIn,i,1)) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;ThisCharCode&nbsp;&lt;&nbsp;&H80&nbsp;Then <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strReturn&nbsp;=&nbsp;strReturn&nbsp;&&nbsp;Chr(ThisCharCode) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NextCharCode&nbsp;=&nbsp;AscB(MidB(vIn,i+1,1)) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strReturn&nbsp;=&nbsp;strReturn&nbsp;&&nbsp;Chr(CLng(ThisCharCode)&nbsp;*&nbsp;&H100&nbsp;+&nbsp;CInt(NextCharCode)) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;i&nbsp;+&nbsp;1 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If <BR>&nbsp;&nbsp;&nbsp;&nbsp;Next <BR>&nbsp;&nbsp;&nbsp;&nbsp;bytes2BSTR&nbsp;=&nbsp;strReturn <BR>End&nbsp;Function <BR>dim&nbsp;strA,oReq <BR>strA&nbsp;=&nbsp;URLEncoding(<SPAN style="COLOR: #ff00ff">"submit1=Submit&text1=中文"</SPAN>) <BR>set&nbsp;oReq&nbsp;=&nbsp;CreateObject(<SPAN style="COLOR: #ff00ff">"MSXML2.XMLHTTP"</SPAN>) <BR>oReq.open&nbsp;<SPAN style="COLOR: #ff00ff">"POST"</SPAN>,<SPAN style="COLOR: #ff00ff">"http:<SPAN style="COLOR: #008000">//ServerName/VDir/TstResult.asp"</SPAN>,false </SPAN><BR>oReq.setRequestHeader&nbsp;<SPAN style="COLOR: #ff00ff">"Content-Length"</SPAN>,Len(strA) <BR>oReq.setRequestHeader&nbsp;<SPAN style="COLOR: #ff00ff">"CONTENT-TYPE"</SPAN>,<SPAN style="COLOR: #ff00ff">"application/x-www-form-urlencoded"</SPAN> <BR>oReq.send&nbsp;strA <BR>msgbox&nbsp;bytes2BSTR(oReq.responseBody) <BR>&lt;/SCRIPT&gt; </DIV>
<P>//readyState是xmlhttp返回数据的进度，0=载入中,1=未初始化,2=已载入,3=运行中,4=完成</P></FONT>
<P></P></FONT>
<P></P>
<P><FONT size=2><STRONG>//组件是否安装</STRONG> <BR>isComponentInstalled("{6B053A4B-A7EC-4D3D-4567-B8FF8A1A5739}", "componentID")) </FONT></P>
<P><FONT size=2><STRONG>//检查网页是否存在</STRONG> <BR></FONT></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;CheckURL(URL) <BR>{ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;xmlhttp&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;<SPAN style="COLOR: #ff0000">ActiveXObject</SPAN>(<SPAN style="COLOR: #ff00ff">"Microsoft.XMLHTTP"</SPAN>); <BR>&nbsp;&nbsp;xmlhttp.Open(<SPAN style="COLOR: #ff00ff">"GET"</SPAN>,URL,&nbsp;<SPAN style="COLOR: #0000ff">false</SPAN>); <BR>&nbsp;&nbsp;try <BR>&nbsp;&nbsp;{&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;xmlhttp.Send();&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;result&nbsp;=&nbsp;xmlhttp.status; <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">catch</SPAN>(e)&nbsp;{<SPAN style="COLOR: #0000ff">return</SPAN>(<SPAN style="COLOR: #0000ff">false</SPAN>);&nbsp;} <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(result==200) <BR>&nbsp;&nbsp;{&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;<SPAN style="COLOR: #0000ff">true</SPAN>; <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;xmlhttp&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">null</SPAN>; <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;<SPAN style="COLOR: #0000ff">false</SPAN>; <BR>} </DIV></FONT>
<P><FONT size=2><STRONG>//连接数据库</STRONG> <BR></FONT></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;script&nbsp;language=<SPAN style="COLOR: #ff00ff">"javascript"</SPAN>&gt; <BR>&nbsp;&nbsp;<SPAN style="COLOR: #008000">//用&nbsp;JavaScript&nbsp;写服务器端连接数据库的代码示例 </SPAN><BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;conn&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;<SPAN style="COLOR: #ff0000">ActiveXObject</SPAN>(<SPAN style="COLOR: #ff00ff">"ADODB.Connection"</SPAN>); <BR>&nbsp;&nbsp;conn.Open(<SPAN style="COLOR: #ff00ff">"Provider=SQLOLEDB.1;&nbsp;Data&nbsp;Source=localhost;&nbsp;User&nbsp;ID=sa;&nbsp;"</SPAN> <BR>&nbsp;&nbsp;&nbsp;&nbsp;+<SPAN style="COLOR: #ff00ff">"Password=;&nbsp;Initial&nbsp;Catalog=pubs"</SPAN>); <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;rs&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;<SPAN style="COLOR: #ff0000">ActiveXObject</SPAN>(<SPAN style="COLOR: #ff00ff">"ADODB.Recordset"</SPAN>); <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;sql=<SPAN style="COLOR: #ff00ff">"select&nbsp;*&nbsp;from&nbsp;authors"</SPAN>; <BR>&nbsp;&nbsp;rs.open(sql,&nbsp;conn); <BR>&nbsp;shtml&nbsp;=&nbsp;<SPAN style="COLOR: #ff00ff">"&lt;table&nbsp;width='100%'&nbsp;border=1&gt;"</SPAN>; <BR>&nbsp;shtml&nbsp;+=<SPAN style="COLOR: #ff00ff">"&lt;tr&nbsp;bgcolor='#f4f4f4'&gt;&lt;td&gt;au_id&lt;/td&gt;&lt;td&gt;au_lname&lt;/td&gt;&lt;td&gt;au_fname&lt;/td&gt;&lt;td&gt;phone&lt;/td&gt;&lt;td&gt;address&lt;/td&gt;&lt;td&gt;&nbsp;city&lt;/td&gt;&lt;td&gt;state&lt;/td&gt;&lt;td&gt;zip&lt;/td&gt;&lt;/tr&gt;"</SPAN>; <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">while</SPAN>(!rs.EOF) <BR>&nbsp;&nbsp;{ <BR>&nbsp;shtml&nbsp;+=&nbsp;<SPAN style="COLOR: #ff00ff">"&lt;tr&gt;&lt;td&gt;"</SPAN>&nbsp;+&nbsp;rs(<SPAN style="COLOR: #ff00ff">"au_id"</SPAN>)&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">"&lt;/td&gt;&lt;td&gt;"</SPAN>&nbsp;+&nbsp;rs(<SPAN style="COLOR: #ff00ff">"au_lname"</SPAN>)&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">"&lt;/td&gt;&lt;td&gt;"</SPAN>&nbsp;+&nbsp;rs(<SPAN style="COLOR: #ff00ff">"au_fname"</SPAN>)&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">"&lt;/td&gt;&lt;td&gt;"</SPAN>&nbsp;+&nbsp;rs(<SPAN style="COLOR: #ff00ff">"phone"</SPAN>)&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">"&lt;/td&gt;&lt;td&gt;"</SPAN>&nbsp;+&nbsp;rs(<SPAN style="COLOR: #ff00ff">"address"</SPAN>)&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">"&lt;/td&gt;&lt;td&gt;"</SPAN>&nbsp;+&nbsp;rs(<SPAN style="COLOR: #ff00ff">"city"</SPAN>)&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">"&lt;/td&gt;&lt;td&gt;"</SPAN>&nbsp;+&nbsp;rs(<SPAN style="COLOR: #ff00ff">"state"</SPAN>)&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">"&lt;/td&gt;&lt;td&gt;"</SPAN>&nbsp;+&nbsp;rs(<SPAN style="COLOR: #ff00ff">"zip"</SPAN>)&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">"&lt;/td&gt;&lt;/tr&gt;"</SPAN>; <BR>&nbsp;rs.moveNext; <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;shtml&nbsp;+=&nbsp;<SPAN style="COLOR: #ff00ff">"&lt;/table&gt;"</SPAN>; <BR>&nbsp;&nbsp;document.write(shtml); <BR>&nbsp;&nbsp;rs.close();&nbsp; <BR>&nbsp;&nbsp;rs&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">null</SPAN>;&nbsp; <BR>&nbsp;&nbsp;conn.close();&nbsp; <BR>&nbsp;&nbsp;conn&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">null</SPAN>; <BR>&lt;/script&gt; </DIV>
<P><STRONG>//使用数据岛</STRONG> <BR><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;html&gt; <BR>&lt;body&gt; <BR>srno：&lt;input&nbsp;type=text&nbsp;datasrc=#xmldate&nbsp;DataFLD=srno&nbsp;size=<SPAN style="COLOR: #ff00ff">"76"</SPAN>&gt;&lt;BR&gt; <BR>times：&lt;input&nbsp;type=text&nbsp;datasrc=#xmldate&nbsp;DataFLD=times&nbsp;size=<SPAN style="COLOR: #ff00ff">"76"</SPAN>&gt;&lt;BR&gt; <BR>&lt;input&nbsp;id=<SPAN style="COLOR: #ff00ff">"first"</SPAN>&nbsp;TYPE=button&nbsp;value=<SPAN style="COLOR: #ff00ff">"&lt;&lt;　第一条记录"</SPAN>&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"xmldate.recordset.moveFirst()"</SPAN>&gt; <BR>&lt;input&nbsp;id=<SPAN style="COLOR: #ff00ff">"prev"</SPAN>&nbsp;TYPE=button&nbsp;value=<SPAN style="COLOR: #ff00ff">"&lt;上一条记录"</SPAN>&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"xmldate.recordset.movePrevious()"</SPAN>&gt;&nbsp;&nbsp; <BR>&lt;input&nbsp;id=<SPAN style="COLOR: #ff00ff">"next"</SPAN>&nbsp;TYPE=button&nbsp;value=<SPAN style="COLOR: #ff00ff">"下一条记录&gt;"</SPAN>&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"xmldate.recordset.moveNext()"</SPAN>&gt;&nbsp;&nbsp; <BR>&lt;input&nbsp;id=<SPAN style="COLOR: #ff00ff">"last"</SPAN>&nbsp;TYPE=button&nbsp;value=<SPAN style="COLOR: #ff00ff">"最后一条记录&gt;&gt;"</SPAN>&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"xmldate.recordset.moveLast()"</SPAN>&gt;&nbsp;&nbsp;&nbsp; <BR>&lt;input&nbsp;id=<SPAN style="COLOR: #ff00ff">"Add"</SPAN>&nbsp;TYPE=button&nbsp;value=<SPAN style="COLOR: #ff00ff">"添加新记录"</SPAN>&nbsp;onclick=<SPAN style="COLOR: #ff00ff">"xmldate.recordset.addNew()"</SPAN>&gt;&nbsp;&nbsp; <BR><BR>&lt;XML&nbsp;ID=<SPAN style="COLOR: #ff00ff">"xmldate"</SPAN>&gt; <BR>&lt;infolist&gt; <BR>&lt;info&nbsp;&gt;&lt;srno&gt;20041025-01&lt;/srno&gt;&lt;times&gt;<SPAN style="COLOR: #0000ff">null</SPAN>&lt;/times&gt;&lt;/info&gt; <BR>&lt;info&nbsp;&gt;&lt;srno&gt;20041101-09&lt;/srno&gt;&lt;times&gt;2004年10月1日2点22分0秒&lt;/times&gt;&lt;/info&gt; <BR>&lt;/infolist&gt; <BR>&lt;/XML&gt; <BR>&lt;/body&gt; <BR>&lt;/html&gt; </DIV>
<P><STRONG>//获得参数</STRONG><FONT size=2> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;body&gt; <BR>&lt;a&nbsp;href=<SPAN style="COLOR: #ff00ff">"javascript:location.href=location.href&nbsp;+&nbsp;'?a=1&b=2'"</SPAN>&gt;search&lt;/a&gt; <BR>&lt;script&nbsp;language=<SPAN style="COLOR: #ff00ff">"JavaScript"</SPAN>&gt; <BR>&lt;!-- <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;a&nbsp;=&nbsp;location.search.substr(1); <BR><SPAN style="COLOR: #0000ff">if</SPAN>(a.length&gt;0) <BR>{ <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;re&nbsp;=&nbsp;/([^&]*?)\=([^&]*)/g <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;s&nbsp;=&nbsp;a.match(re); <BR>&nbsp;for(<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;i=&nbsp;0;i&lt;s.length;i++) <BR>&nbsp;{ <BR>&nbsp;&nbsp;alert(s[i]); <BR>&nbsp;&nbsp;alert(s[i].split(<SPAN style="COLOR: #ff00ff">"="</SPAN>)[1]); <BR>&nbsp;} <BR>} <BR><SPAN style="COLOR: #008000">//--&gt; </SPAN><BR>&lt;/script&gt; <BR>&lt;/body&gt; </DIV>
<P><STRONG>//可编辑SELECT</STRONG><FONT size=2> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;input&nbsp;type=text&nbsp;name=re_name&nbsp;style=<SPAN style="COLOR: #ff00ff">"width:100px;height:21px;font-size:10pt;"</SPAN>&gt;&lt;span&nbsp;style=<SPAN style="COLOR: #ff00ff">"width:18px;border:0px&nbsp;solid&nbsp;red;"</SPAN>&gt;&lt;select&nbsp;name=<SPAN style="COLOR: #ff00ff">"r00"</SPAN>&nbsp;style=<SPAN style="COLOR: #ff00ff">"margin-left:-100px;width:118px;&nbsp;background-color:#FFEEEE;"</SPAN>&nbsp;onChange=<SPAN style="COLOR: #ff00ff">"document.all.re_name.value=this.value;"</SPAN>&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option&nbsp;value=<SPAN style="COLOR: #ff00ff">"1"</SPAN>&gt;11111111&lt;option&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option&nbsp;value=<SPAN style="COLOR: #ff00ff">"2"</SPAN>&gt;222222&lt;/option&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option&nbsp;value=<SPAN style="COLOR: #ff00ff">"3"</SPAN>&gt;333333&lt;/option&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/select&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/span&gt; </DIV></FONT>
<P></P></FONT>
<P></P></FONT>
<P></P></FONT>
<P><FONT size=2><STRONG>//设置光标位置 <BR></STRONG></FONT></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;getCaret(textbox) <BR>{ <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;control&nbsp;=&nbsp;document.activeElement; <BR>&nbsp;textbox.focus(); <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;rang&nbsp;=&nbsp;document.selection.createRange(); <BR>&nbsp;&nbsp;rang.setEndPoint(<SPAN style="COLOR: #ff00ff">"StartToStart"</SPAN>,textbox.createTextRange()) <BR>&nbsp;control.focus(); <BR>&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;rang.text.length; <BR>} <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;setCaret(textbox,pos) <BR>{ <BR>&nbsp;try <BR>&nbsp;{ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;r&nbsp;=textbox.createTextRange(); <BR>&nbsp;&nbsp;&nbsp;r.moveStart('character',pos); <BR>&nbsp;&nbsp;&nbsp;r.collapse(<SPAN style="COLOR: #0000ff">true</SPAN>); <BR>&nbsp;&nbsp;&nbsp;r.select(); <BR>&nbsp;} <BR>&nbsp;<SPAN style="COLOR: #0000ff">catch</SPAN>(e) <BR>&nbsp;{} <BR>} <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;selectLength(textbox,start,len) <BR>{ <BR>&nbsp;try <BR>&nbsp;{ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;r&nbsp;=textbox.createTextRange(); <BR>&nbsp; <BR>&nbsp;&nbsp;r.moveEnd('character',len-(textbox.value.length-start)); <BR>&nbsp;&nbsp;r.moveStart('character',start); <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;r.select(); <BR>&nbsp;} <BR>&nbsp;<SPAN style="COLOR: #0000ff">catch</SPAN>(e) <BR>&nbsp;{<SPAN style="COLOR: #008000">//alert(e.description)} </SPAN><BR>} <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;insertAtCaret(textbox,text) <BR>{ <BR>&nbsp;textbox.focus(); <BR>&nbsp;document.selection.createRange().text&nbsp;=&nbsp;text; <BR>} </DIV></FONT>
<P><BR><FONT size=2><STRONG>//页内查找</STRONG> <BR></FONT></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;findInPage(str) <BR>{ <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;txt,&nbsp;i,&nbsp;found,n&nbsp;=&nbsp;0; <BR>&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;(str&nbsp;==&nbsp;<SPAN style="COLOR: #ff00ff">""</SPAN>) <BR>&nbsp;{ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;<SPAN style="COLOR: #0000ff">false</SPAN>; <BR>&nbsp;} <BR>&nbsp;txt&nbsp;=&nbsp;document.body.createTextRange(); <BR>&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;=&nbsp;n&nbsp;&&&nbsp;(found&nbsp;=&nbsp;txt.findText(str))&nbsp;!=&nbsp;<SPAN style="COLOR: #0000ff">false</SPAN>;&nbsp;i++) <BR>&nbsp;{ <BR>&nbsp;&nbsp;txt.moveStart(<SPAN style="COLOR: #ff00ff">"character"</SPAN>,&nbsp;1); <BR>&nbsp;&nbsp;txt.moveEnd(<SPAN style="COLOR: #ff00ff">"textedit"</SPAN>); <BR>&nbsp;} <BR>&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;(found) <BR>&nbsp;{ <BR>&nbsp;&nbsp;txt.moveStart(<SPAN style="COLOR: #ff00ff">"character"</SPAN>,&nbsp;-1); <BR>&nbsp;&nbsp;txt.findText(str); <BR>&nbsp;&nbsp;txt.select(); <BR>&nbsp;&nbsp;txt.scrollIntoView(); <BR>&nbsp;&nbsp;n++;&nbsp;&nbsp; <BR>&nbsp;} <BR>&nbsp;else <BR>&nbsp;{ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;(n&nbsp;&gt;&nbsp;0) <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;n&nbsp;=&nbsp;0; <BR>&nbsp;&nbsp;&nbsp;findInPage(str); <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;else <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;alert(str&nbsp;+&nbsp;<SPAN style="COLOR: #ff00ff">"...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您要找的文字不存在。\n&nbsp;\n请试着输入页面中的关键字再次查找！"</SPAN>); <BR>&nbsp;&nbsp;} <BR>&nbsp;} <BR>&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;<SPAN style="COLOR: #0000ff">false</SPAN>; <BR>} </DIV>
<P><STRONG>//书</STRONG> </P>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee"><A href="http://www.itpub.net/attachment.php?s=&postid=1894598"><FONT size=2>http://www.itpub.net/attachment.php?s=&postid=1894598</FONT></A> <BR><A href="http://www.wrclub.net/down/listdown.aspx?id=1341"><FONT size=2>http://www.wrclub.net/down/listdown.aspx?id=1341</FONT></A><SPAN style="COLOR: #008000"> 
<P><FONT size=2><STRONG>//操作EXECL</STRONG></FONT> </P></SPAN></DIV></FONT>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;script&nbsp;language=<SPAN style="COLOR: #ff00ff">"javascript"</SPAN>&gt; <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;jStartExcel()&nbsp;{ <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;xls&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;<SPAN style="COLOR: #ff0000">ActiveXObject</SPAN>&nbsp;(&nbsp;<SPAN style="COLOR: #ff00ff">"Excel.Application"</SPAN>&nbsp;); <BR>&nbsp;xls.visible&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">true</SPAN>; <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;newBook&nbsp;=&nbsp;xls.Workbooks.Add; <BR>&nbsp;newBook.Worksheets.Add; <BR>&nbsp;newBook.Worksheets(1).Activate; <BR>&nbsp;xls.ActiveWorkBook.ActiveSheet.PageSetup.Orientation&nbsp;=&nbsp;2; <BR>&nbsp;xls.ActiveWorkBook.ActiveSheet.PageSetup.PaperSize&nbsp;=&nbsp;5; <BR>&nbsp;newBook.Worksheets(1).Columns(<SPAN style="COLOR: #ff00ff">"A"</SPAN>).columnwidth=50; <BR>&nbsp;newBook.Worksheets(1).Columns(<SPAN style="COLOR: #ff00ff">"A"</SPAN>).WrapText&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">true</SPAN>; <BR>&nbsp;newBook.Worksheets(1).Columns(<SPAN style="COLOR: #ff00ff">"B"</SPAN>).columnwidth=50; <BR>&nbsp;newBook.Worksheets(1).Columns(<SPAN style="COLOR: #ff00ff">"B"</SPAN>).WrapText&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">true</SPAN>; <BR>&nbsp;newBook.Worksheets(1).Range(<SPAN style="COLOR: #ff00ff">"A1:B1000"</SPAN>).NumberFormat&nbsp;=&nbsp;<SPAN style="COLOR: #ff00ff">"0"</SPAN>; <BR>&nbsp;newBook.Worksheets(1).Range(<SPAN style="COLOR: #ff00ff">"A1:B1000"</SPAN>).HorizontalAlignment&nbsp;=&nbsp;-4131; <BR>&nbsp;newBook.Worksheets(1).Cells(1,1).Interior.ColorIndex=<SPAN style="COLOR: #ff00ff">"15"</SPAN>; <BR>&nbsp;newBook.Worksheets(1).Cells(1,1).value=<SPAN style="COLOR: #ff00ff">"First&nbsp;Column,&nbsp;First&nbsp;Cell"</SPAN>; <BR>&nbsp;newBook.Worksheets(1).Cells(2,1).value=<SPAN style="COLOR: #ff00ff">"First&nbsp;Column,&nbsp;Second&nbsp;Cell"</SPAN>; <BR>&nbsp;newBook.Worksheets(1).Cells(1,2).value=<SPAN style="COLOR: #ff00ff">"Second&nbsp;Column,&nbsp;First&nbsp;Cell"</SPAN>; <BR>&nbsp;newBook.Worksheets(1).Cells(2,2).value=<SPAN style="COLOR: #ff00ff">"Second&nbsp;Column,&nbsp;Second&nbsp;Cell"</SPAN>; <BR>&nbsp;newBook.Worksheets(1).Name=<SPAN style="COLOR: #ff00ff">"My&nbsp;First&nbsp;WorkSheet"</SPAN>; <BR>} <BR>&lt;/script&gt; </DIV>
<P><BR><FONT size=2><STRONG>//自定义提示条 <BR></STRONG></FONT></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;a&nbsp;href=<SPAN style="COLOR: #ff00ff">"#"</SPAN>&nbsp;title=<SPAN style="COLOR: #ff00ff">"这是提示"</SPAN>&gt;tip&lt;/a&gt; <BR>&lt;script&nbsp;Language=<SPAN style="COLOR: #ff00ff">"JavaScript"</SPAN>&gt; <BR><SPAN style="COLOR: #008000">//***********默认设置定义.********************* </SPAN><BR>tPopWait=50;<SPAN style="COLOR: #008000">//停留tWait豪秒后显示提示。 </SPAN><BR>tPopShow=5000;<SPAN style="COLOR: #008000">//显示tShow豪秒后关闭提示 </SPAN><BR>showPopStep=20; <BR>popOpacity=99; <BR><SPAN style="COLOR: #008000">//***************内部变量定义***************** </SPAN><BR>sPop=<SPAN style="COLOR: #0000ff">null</SPAN>; <BR>curShow=<SPAN style="COLOR: #0000ff">null</SPAN>; <BR>tFadeOut=<SPAN style="COLOR: #0000ff">null</SPAN>; <BR>tFadeIn=<SPAN style="COLOR: #0000ff">null</SPAN>; <BR>tFadeWaiting=<SPAN style="COLOR: #0000ff">null</SPAN>; <BR>document.write(<SPAN style="COLOR: #ff00ff">"&lt;style&nbsp;type='text/css'id='defaultPopStyle'&gt;"</SPAN>); <BR>document.write(<SPAN style="COLOR: #ff00ff">".cPopText&nbsp;{&nbsp;&nbsp;background-color:&nbsp;#F8F8F5;color:#000000;&nbsp;border:&nbsp;1px&nbsp;#000000&nbsp;solid;font-color:&nbsp;font-size:&nbsp;12px;&nbsp;padding-right:&nbsp;4px;&nbsp;padding-left:&nbsp;4px;&nbsp;height:&nbsp;20px;&nbsp;padding-top:&nbsp;2px;&nbsp;padding-bottom:&nbsp;2px;&nbsp;filter:&nbsp;Alpha(Opacity=0)}"</SPAN>); <BR>document.write(<SPAN style="COLOR: #ff00ff">"&lt;/style&gt;"</SPAN>); <BR>document.write(<SPAN style="COLOR: #ff00ff">"&lt;div&nbsp;id='dypopLayer'&nbsp;style='position:absolute;z-index:1000;'&nbsp;class='cPopText'&gt;&lt;/div&gt;"</SPAN>); <BR><BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;showPopupText(){ <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;o=event.srcElement; <BR>MouseX=event.x; <BR>MouseY=event.y; <BR><SPAN style="COLOR: #0000ff">if</SPAN>(o.alt!=<SPAN style="COLOR: #0000ff">null</SPAN>&nbsp;&&&nbsp;o.alt!=<SPAN style="COLOR: #ff00ff">""</SPAN>){o.dypop=o.alt;o.alt=<SPAN style="COLOR: #ff00ff">""</SPAN>}; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(o.title!=<SPAN style="COLOR: #0000ff">null</SPAN>&nbsp;&&&nbsp;o.title!=<SPAN style="COLOR: #ff00ff">""</SPAN>){o.dypop=o.title;o.title=<SPAN style="COLOR: #ff00ff">""</SPAN>}; <BR><SPAN style="COLOR: #0000ff">if</SPAN>(o.dypop!=sPop)&nbsp;{ <BR>sPop=o.dypop; <BR>clearTimeout(curShow); <BR>clearTimeout(tFadeOut); <BR>clearTimeout(tFadeIn); <BR>clearTimeout(tFadeWaiting); <BR><SPAN style="COLOR: #0000ff">if</SPAN>(sPop==<SPAN style="COLOR: #0000ff">null</SPAN>&nbsp;||&nbsp;sPop==<SPAN style="COLOR: #ff00ff">""</SPAN>)&nbsp;{ <BR>dypopLayer.innerHTML=<SPAN style="COLOR: #ff00ff">""</SPAN>; <BR>dypopLayer.style.filter=<SPAN style="COLOR: #ff00ff">"Alpha()"</SPAN>; <BR>dypopLayer.filters.Alpha.opacity=0; <BR>} <BR><SPAN style="COLOR: #0000ff">else</SPAN>&nbsp;{ <BR><SPAN style="COLOR: #0000ff">if</SPAN>(o.dyclass!=<SPAN style="COLOR: #0000ff">null</SPAN>)&nbsp;popStyle=o.dyclass&nbsp; <BR><SPAN style="COLOR: #0000ff">else</SPAN>&nbsp;popStyle=<SPAN style="COLOR: #ff00ff">"cPopText"</SPAN>; <BR>curShow=setTimeout(<SPAN style="COLOR: #ff00ff">"showIt()"</SPAN>,tPopWait); <BR>} <BR>} <BR>} <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;showIt(){ <BR>dypopLayer.className=popStyle; <BR>dypopLayer.innerHTML=sPop; <BR>popWidth=dypopLayer.clientWidth; <BR>popHeight=dypopLayer.clientHeight; <BR><SPAN style="COLOR: #0000ff">if</SPAN>(MouseX+12+popWidth&gt;document.body.clientWidth)&nbsp;popLeftAdjust=-popWidth-24 <BR><SPAN style="COLOR: #0000ff">else</SPAN>&nbsp;popLeftAdjust=0; <BR><SPAN style="COLOR: #0000ff">if</SPAN>(MouseY+12+popHeight&gt;document.body.clientHeight)&nbsp;popTopAdjust=-popHeight-24 <BR><SPAN style="COLOR: #0000ff">else</SPAN>&nbsp;popTopAdjust=0; <BR>dypopLayer.style.left=MouseX+12+document.body.scrollLeft+popLeftAdjust; <BR>dypopLayer.style.top=MouseY+12+document.body.scrollTop+popTopAdjust; <BR>dypopLayer.style.filter=<SPAN style="COLOR: #ff00ff">"Alpha(Opacity=0)"</SPAN>; <BR>fadeOut(); <BR>} <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;fadeOut(){ <BR><SPAN style="COLOR: #0000ff">if</SPAN>(dypopLayer.filters.Alpha.opacity&lt;popOpacity)&nbsp;{ <BR>dypopLayer.filters.Alpha.opacity+=showPopStep; <BR>tFadeOut=setTimeout(<SPAN style="COLOR: #ff00ff">"fadeOut()"</SPAN>,1); <BR>} <BR><SPAN style="COLOR: #0000ff">else</SPAN>&nbsp;{ <BR>dypopLayer.filters.Alpha.opacity=popOpacity; <BR>tFadeWaiting=setTimeout(<SPAN style="COLOR: #ff00ff">"fadeIn()"</SPAN>,tPopShow); <BR>} <BR>} <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;fadeIn(){ <BR><SPAN style="COLOR: #0000ff">if</SPAN>(dypopLayer.filters.Alpha.opacity&gt;0)&nbsp;{ <BR>dypopLayer.filters.Alpha.opacity-=1; <BR>tFadeIn=setTimeout(<SPAN style="COLOR: #ff00ff">"fadeIn()"</SPAN>,1); <BR>} <BR>} <BR>document.onmouseover=showPopupText; <BR>&lt;/script&gt; </DIV>
<P><STRONG>//插入文字</STRONG> </P></FONT>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">document.onclick&nbsp;=<SPAN style="COLOR: #0000ff">function</SPAN>(){&nbsp; <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;oSource&nbsp;=&nbsp;window.event.srcElement;&nbsp; <BR><SPAN style="COLOR: #0000ff">if</SPAN>(oSource.tagName!=<SPAN style="COLOR: #ff00ff">"DIV"</SPAN>)&nbsp; <BR><SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;<SPAN style="COLOR: #0000ff">false</SPAN>;&nbsp; <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;sel&nbsp;=&nbsp;document.selection;&nbsp; <BR><SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;(sel!=<SPAN style="COLOR: #0000ff">null</SPAN>)&nbsp;{&nbsp; <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;rng&nbsp;=&nbsp;sel.createRange();&nbsp; <BR><SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;(rng!=<SPAN style="COLOR: #0000ff">null</SPAN>)&nbsp; <BR>rng.pasteHTML(<SPAN style="COLOR: #ff00ff">"&lt;font&nbsp;color=red&gt;插入文字&lt;/font&gt;"</SPAN>);&nbsp; <BR>}&nbsp; <BR>}&nbsp; </DIV>
<P><FONT size=2><STRONG>//netscapte下操作xml</STRONG> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">doc&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;<SPAN style="COLOR: #ff0000">ActiveXObject</SPAN>(<SPAN style="COLOR: #ff00ff">"Msxml2.DOMDocument"</SPAN>); <BR>doc&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;<SPAN style="COLOR: #ff0000">ActiveXObject</SPAN>(<SPAN style="COLOR: #ff00ff">"Microsoft.XMLDOM"</SPAN>) <BR>-&gt;&gt; <BR>doc&nbsp;=&nbsp;(<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;DOMParser()).parseFromString(sXML,'text/xml') </DIV></FONT>
<P></P>
<P><FONT size=2><STRONG>//判断键值</STRONG> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;html&gt; <BR>&lt;meta&nbsp;http-equiv=<SPAN style="COLOR: #ff00ff">"Content-Type"</SPAN>&nbsp;content=<SPAN style="COLOR: #ff00ff">"text/html;&nbsp;charset=gb2312"</SPAN>&gt; <BR>&lt;head&gt; <BR>&lt;script&nbsp;language=<SPAN style="COLOR: #ff00ff">"javascript"</SPAN>&gt; <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;ie&nbsp;&nbsp;=navigator.appName==<SPAN style="COLOR: #ff00ff">"Microsoft&nbsp;Internet&nbsp;Explorer"</SPAN>?<SPAN style="COLOR: #0000ff">true</SPAN>:<SPAN style="COLOR: #0000ff">false</SPAN>; <BR>&nbsp;&nbsp; <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;keyDown(e) <BR>{ <BR>&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(!ie) <BR>&nbsp;{ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;nkey=e.which; <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;iekey='现在是ns浏览器'; <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;realkey=<SPAN style="COLOR: #ff0000">String</SPAN>.fromCharCode(e.which); <BR>&nbsp;} <BR>&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(ie) <BR>&nbsp;{ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;iekey=event.keyCode; <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;nkey='现在是ie浏览器'; <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;realkey=<SPAN style="COLOR: #ff0000">String</SPAN>.fromCharCode(event.keyCode); <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(event.keyCode==32){realkey='\'&nbsp;空格\''} <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(event.keyCode==13){realkey='\'&nbsp;回车\''} <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(event.keyCode==27){realkey='\'&nbsp;Esc\''} <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(event.keyCode==16){realkey='\'&nbsp;Shift\''} <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(event.keyCode==17){realkey='\'&nbsp;Ctrl\''} <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(event.keyCode==18){realkey='\'&nbsp;Alt\''} <BR>&nbsp;} <BR>&nbsp;alert('ns浏览器中键值:'+nkey+'\n'+'ie浏览器中键值:'+iekey+'\n'+'实际键为'+realkey); <BR>} <BR>document.onkeydown&nbsp;=&nbsp;keyDown; <BR>&lt;/script&gt; <BR>&lt;/head&gt; <BR>&lt;body&gt; <BR><SPAN style="COLOR: #008000">//Javascript&nbsp;Document. </SPAN><BR>&lt;hr&gt; <BR>&lt;center&gt; <BR>&lt;h3&gt;请按任意一个键。。。。&lt;/h3&gt; <BR>&lt;/center&gt; <BR>&lt;/body&gt; <BR>&lt;/html&gt; </DIV></FONT>
<P></P>
<P><FONT size=2><STRONG>//禁止FSO</STRONG> <BR></FONT></P>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">1.注销组件 <BR>regsvr32&nbsp;/u&nbsp;scrrun.dll <BR>2.修改PROGID&nbsp; <BR>HKEY_CLASSES_ROOT\Scripting.FileSystemObject <BR>Scripting.FileSystemObject <BR>3.对于使用object的用户，修改HKEY_CLASSES_ROOT\Scripting. </DIV>
<P><BR><FONT size=2><STRONG>//省略号</STRONG> 
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;DIV&nbsp;STYLE=<SPAN style="COLOR: #ff00ff">"width:&nbsp;120px;&nbsp;height:&nbsp;50px;&nbsp;border:&nbsp;1px&nbsp;solid&nbsp;blue; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;overflow:&nbsp;hidden;&nbsp;text-overflow:ellipsis"</SPAN>&gt; <BR>&lt;NOBR&gt;就是比如有一行文字，很长，表格内一行显示不下.&lt;/NOBR&gt; <BR>&lt;/DIV&gt; </DIV></FONT>
<P></P>
<P><FONT size=2><STRONG>//检测media play版本 <BR></STRONG>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;IE:clientCaps&nbsp;ID=<SPAN style="COLOR: #ff00ff">"oClientCaps"</SPAN>&nbsp;style=<SPAN style="COLOR: #ff00ff">"{behavior:url(#default#clientcaps)}"</SPAN>&nbsp;/&gt; <BR>&lt;SCRIPT&gt; <BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;flash=<SPAN style="COLOR: #ff00ff">""</SPAN>; <BR>&nbsp;&nbsp;&nbsp;&nbsp;WMPVersion=&nbsp;oClientCaps.getComponentVersion(<SPAN style="COLOR: #ff00ff">"{22D6F312-B0F6-11D0-94AB-0080C74C7E95}"</SPAN>,<SPAN style="COLOR: #ff00ff">"ComponentID"</SPAN>);&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;(WMPVersion&nbsp;!=&nbsp;<SPAN style="COLOR: #ff00ff">""</SPAN>)&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;flash&nbsp;=&nbsp;<SPAN style="COLOR: #ff00ff">""</SPAN>; <BR>&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;version&nbsp;=&nbsp;WMPVersion.split(<SPAN style="COLOR: #ff00ff">","</SPAN>); <BR>&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;i; <BR>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;version.length;&nbsp;i++)&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;(i&nbsp;!=&nbsp;0) <BR>&nbsp;&nbsp;&nbsp;&nbsp;flash&nbsp;+=&nbsp;<SPAN style="COLOR: #ff00ff">"."</SPAN>; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flash&nbsp;+=&nbsp;version[i]; <BR>&nbsp;&nbsp;&nbsp;&nbsp;} <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(<SPAN style="COLOR: #ff00ff">"您的Windows&nbsp;Media&nbsp;Player&nbsp;版本是:"</SPAN>+flash+<SPAN style="COLOR: #ff00ff">"&lt;p&gt;"</SPAN>); <BR>&nbsp;&nbsp;} <BR>&lt;/SCRIPT&gt; </DIV>
<P><BR></P></FONT>
<P></P>
<P><FONT size=2><STRONG>//图象按比例 <BR></STRONG>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;script&nbsp;language=<SPAN style="COLOR: #ff00ff">"JavaScript"</SPAN>&gt; <BR>&lt;!-- <BR><SPAN style="COLOR: #008000">//图片按比例缩放 </SPAN><BR><SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;flag=<SPAN style="COLOR: #0000ff">false</SPAN>; <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;DrawImage(ImgD){ <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;image=<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;Image(); <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;iwidth&nbsp;=&nbsp;80;&nbsp;&nbsp;<SPAN style="COLOR: #008000">//定义允许图片宽度 </SPAN><BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;iheight&nbsp;=&nbsp;80;&nbsp;&nbsp;<SPAN style="COLOR: #008000">//定义允许图片高度 </SPAN><BR>&nbsp;image.src=ImgD.src; <BR>&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(image.width&gt;0&nbsp;&&&nbsp;image.height&gt;0){ <BR>&nbsp;flag=<SPAN style="COLOR: #0000ff">true</SPAN>; <BR>&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(image.width/image.height&gt;=&nbsp;iwidth/iheight){ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(image.width&gt;iwidth){&nbsp;&nbsp; <BR>&nbsp;&nbsp;ImgD.width=iwidth; <BR>&nbsp;&nbsp;ImgD.height=(image.height*iwidth)/image.width; <BR>&nbsp;&nbsp;}<SPAN style="COLOR: #0000ff">else</SPAN>{ <BR>&nbsp;&nbsp;ImgD.width=image.width;&nbsp;&nbsp; <BR>&nbsp;&nbsp;ImgD.height=image.height; <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;ImgD.alt=image.width+<SPAN style="COLOR: #ff00ff">"×"</SPAN>+image.height; <BR>&nbsp;&nbsp;} <BR>&nbsp;<SPAN style="COLOR: #0000ff">else</SPAN>{ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>(image.height&gt;iheight){&nbsp;&nbsp; <BR>&nbsp;&nbsp;ImgD.height=iheight; <BR>&nbsp;&nbsp;ImgD.width=(image.width*iheight)/image.height;&nbsp;&nbsp; <BR>&nbsp;&nbsp;}<SPAN style="COLOR: #0000ff">else</SPAN>{ <BR>&nbsp;&nbsp;ImgD.width=image.width;&nbsp;&nbsp; <BR>&nbsp;&nbsp;ImgD.height=image.height; <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;ImgD.alt=image.width+<SPAN style="COLOR: #ff00ff">"×"</SPAN>+image.height; <BR>&nbsp;&nbsp;} <BR>&nbsp;} <BR>}&nbsp; <BR><SPAN style="COLOR: #008000">//--&gt; </SPAN><BR>&lt;/script&gt; <BR>&lt;img&nbsp;src=<SPAN style="COLOR: #ff00ff">".."</SPAN>&nbsp;onload&nbsp;=&nbsp;<SPAN style="COLOR: #ff00ff">"DrawImage(this)"</SPAN>&gt; </DIV>
<P><BR></P></FONT>
<P></P>
<P><FONT size=2><STRONG>//细线SELECT</STRONG> <BR>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;<SPAN style="COLOR: #808000"><SPAN style="COLOR: #0000ff">span</SPAN>&nbsp;style=<SPAN style="COLOR: #ff00ff">"border:1px&nbsp;solid&nbsp;#000000;&nbsp;position:absolute;&nbsp;overflow:hidden;"</SPAN>&nbsp;</SPAN>&gt; <BR>&lt;<SPAN style="COLOR: #808000"><SPAN style="COLOR: #0000ff">select</SPAN>&nbsp;style=<SPAN style="COLOR: #ff00ff">"margin:-2px;"</SPAN></SPAN>&gt; <BR>&lt;<SPAN style="COLOR: #808000"><SPAN style="COLOR: #0000ff">option</SPAN></SPAN>&gt;1111&lt;<S, PAN style="COLOR: #808000">/<SPAN style="COLOR: #0000ff">option</SPAN></SPAN>&gt; <BR>&lt;<SPAN style="COLOR: #808000"><SPAN style="COLOR: #0000ff">option</SPAN></SPAN>&gt;11111111111111&lt;<SPAN style="COLOR: #808000">/<SPAN style="COLOR: #0000ff">option</SPAN></SPAN>&gt; <BR>&lt;<SPAN style="COLOR: #808000"><SPAN style="COLOR: #0000ff">option</SPAN></SPAN>&gt;111111111&lt;<SPAN style="COLOR: #808000">/<SPAN style="COLOR: #0000ff">option</SPAN></SPAN>&gt; <BR>&lt;<SPAN style="COLOR: #808000">/<SPAN style="COLOR: #0000ff">select</SPAN></SPAN>&gt;&lt;<SPAN style="COLOR: #808000">/<SPAN style="COLOR: #0000ff">span</SPAN></SPAN>&gt; </DIV>
<P><BR><STRONG>//Import</STRONG> <BR></P>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;Import()&nbsp;{ <BR>&nbsp;for(&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;i=0;&nbsp;i&lt;arguments.length;&nbsp;i++&nbsp;)&nbsp;{ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;file&nbsp;=&nbsp;arguments[i]; <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">if</SPAN>&nbsp;(&nbsp;file.match(/\.js$/i))&nbsp; <BR>&nbsp;&nbsp;&nbsp;document.write('&lt;script&nbsp;type=\"text/javascript\<SPAN style="COLOR: #ff00ff">"&nbsp;src=\"'&nbsp;+&nbsp;file&nbsp;+&nbsp;'\"&gt;&lt;/sc'&nbsp;+&nbsp;'ript&gt;'); <BR>&nbsp;&nbsp;else <BR>&nbsp;&nbsp;&nbsp;document.write('&lt;style&nbsp;type=\"text/css\"</SPAN>&gt;@import&nbsp;\"'&nbsp;+&nbsp;file&nbsp;+&nbsp;'\"&nbsp;;&lt;/style&gt;'); <BR>&nbsp;} <BR>}; </DIV>
<P><BR><FONT size=2><STRONG>//js枚举</STRONG></FONT> </P></FONT>
<P></P><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;getComputerName() <BR>{ <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;objWMIService&nbsp;=&nbsp;GetObject(<SPAN style="COLOR: #ff00ff">"Winmgmts:root\cimv2"</SPAN>); <BR>&nbsp;for(e&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;Enumerator(objWMIService)&nbsp;;&nbsp;!e.atEnd()&nbsp;;&nbsp;e.moveNext()) <BR>&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;getComputer&nbsp;=&nbsp;e.item(); <BR>&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">return</SPAN>&nbsp;getComputer.Name; <BR>&nbsp;} <BR>} </DIV>
<P><BR><BR><STRONG>//条件编译</STRONG> <BR><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;script&nbsp;language=javascript&gt; <BR><SPAN style="COLOR: #008000">/*@cc_on&nbsp;@*/</SPAN> <BR><SPAN style="COLOR: #008000">/*@if&nbsp;(@_win32&nbsp;&&&nbsp;@_jscript_version&gt;5) <BR>function&nbsp;window.confirm(str) <BR>{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;execScript("n&nbsp;=&nbsp;msgbox('"+&nbsp;str&nbsp;+"',&nbsp;257)",&nbsp;"vbscript"); <BR>&nbsp;&nbsp;&nbsp;&nbsp;return(n&nbsp;==&nbsp;1); <BR>} <BR>@end&nbsp;@*/</SPAN> <BR>&lt;/script&gt; </DIV>
<P><BR><BR><STRONG>//取得innerText</STRONG> <BR></P></FONT>
<P></P></FONT><FONT size=2>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;SCRIPT&nbsp;LANGUAGE=<SPAN style="COLOR: #ff00ff">"JavaScript"</SPAN>&gt; <BR>&lt;!-- <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;xmlDoc&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">new</SPAN>&nbsp;<SPAN style="COLOR: #ff0000">ActiveXObject</SPAN>(<SPAN style="COLOR: #ff00ff">"Msxml2.DOMDocument.4.0"</SPAN>); <BR>&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;currNode; <BR>&nbsp;xmlDoc.async&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">false</SPAN>; <BR>&nbsp;xmlDoc.async&nbsp;=&nbsp;<SPAN style="COLOR: #0000ff">false</SPAN>; <BR>&nbsp;xmlDoc.loadXML(<SPAN style="COLOR: #ff00ff">"&lt;TABLENAME&gt;&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;&lt;/TABLENAME&gt;"</SPAN>); <BR>&nbsp;currNode&nbsp;=&nbsp;xmlDoc.documentElement; <BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;s&nbsp;=&nbsp;currNode.xml; <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;r&nbsp;=&nbsp;/\&lt;([^\&gt;\s]*?)[^\&gt;]*?\&gt;([^\&lt;]*?)\&lt;\/\1\&gt;/ <BR>&nbsp;&nbsp;<SPAN style="COLOR: #0000ff">var</SPAN>&nbsp;b&nbsp;=&nbsp;s.replace(r,<SPAN style="COLOR: #ff00ff">"$2"</SPAN>); <BR>&nbsp;&nbsp;alert(b); <BR><SPAN style="COLOR: #008000">//--&gt; </SPAN><BR>&lt;/SCRIPT&gt; </DIV>
<P><STRONG>//mergeAttributes 复制所有读/写标签属性到指定元素。</STRONG> </P>
<DIV style="BORDER-RIGHT: #8a8a8a 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #8a8a8a 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 4px; OVERFLOW: auto; BORDER-LEFT: #8a8a8a 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #8a8a8a 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #eeeeee">&lt;SCRIPT&gt; <BR><SPAN style="COLOR: #0000ff">function</SPAN>&nbsp;fnMerge(){ <BR>oSource.children[1].mergeAttributes(oSource.children[0]); <BR>} <BR>&lt;/SCRIPT&gt; <BR>&lt;SPAN&nbsp;ID=oSource&gt; <BR>&lt;DIV <BR>ID=<SPAN style="COLOR: #ff00ff">"oDiv"</SPAN> <BR>ATTRIBUTE1=<SPAN style="COLOR: #ff00ff">"true"</SPAN> <BR>ATTRIBUTE2=<SPAN style="COLOR: #ff00ff">"true"</SPAN> <BR>onclick=<SPAN style="COLOR: #ff00ff">"alert('click');"</SPAN> <BR>onmouseover=<SPAN style="COLOR: #ff00ff">"this.style.color='#0000FF';"</SPAN> <BR>onmouseout=<SPAN style="COLOR: #ff00ff">"this.style.color='#000000';"</SPAN> <BR>&gt; <BR>This&nbsp;is&nbsp;a&nbsp;sample&nbsp;&lt;B&gt;DIV&lt;/B&gt;&nbsp;element. <BR>&lt;/DIV&gt; <BR>&lt;DIV&nbsp;ID=<SPAN style="COLOR: #ff00ff">"oDiv2"</SPAN>&gt; <BR>This&nbsp;is&nbsp;another&nbsp;sample&nbsp;&lt;B&gt;DIV&lt;/B&gt;&nbsp;element. <BR>&lt;/DIV&gt; <BR>&lt;/SPAN&gt; <BR>&lt;INPUT <BR>TYPE=<SPAN style="COLOR: #ff00ff">"button"</SPAN> <BR>VALUE=<SPAN style="COLOR: #ff00ff">"Merge&nbsp;Attributes"</SPAN> <BR>onclick=<SPAN style="COLOR: #ff00ff">"fnMerge()"</SPAN> <BR>&gt; </DIV></FONT>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=431" /> 
	  <id>http://www.openx.cn/default.asp?id=431</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[热烈庆祝中华人民共和国成立58周年]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-10-01T08:22:50+08:00</updated>
	  <published>2007-10-01T08:22:50+08:00</published>
		  <summary type="html"><![CDATA[<IMG style="WIDTH: 619px; HEIGHT: 124px" height=152 src="http://www.openx.cn/include/Editor/UploadFile/20071018221268.jpg" width=848 border=0>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=430" /> 
	  <id>http://www.openx.cn/default.asp?id=430</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Windows下Apache相关安装指南]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-09-11T17:44:58+08:00</updated>
	  <published>2007-09-11T17:44:58+08:00</published>
		  <summary type="html"><![CDATA[<P>本文介绍了在Windows下安装Apache、PHP、mod_perl、mod_python、subversion的方法。 <A id=more-92></A><!-- begin Pukiwiki generated code-->
<DIV class=contents><A id=contents_1></A>
<UL class=list2 style="PADDING-LEFT: 16px; MARGIN-LEFT: 16px">
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_0">所需安装文件</A> 
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_1">安装 Apache 2.0.59</A> 
<UL class=list3 style="PADDING-LEFT: 16px; MARGIN-LEFT: 16px">
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_2">安装后的说明</A> 
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_3">修改默认配置</A> 
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_4">常见错误及修正方法</A> 
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_5">为什么不使用最新版的 Apache 2.2.3</A></LI></UL>
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_6">安装 php 5.1.6</A> 
<UL class=list3 style="PADDING-LEFT: 16px; MARGIN-LEFT: 16px">
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_7">PHP各个目录的作用</A> 
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_8">添加 mysql 支持</A></LI></UL>
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_9">安装 ActivePerl 5.8.8</A> 
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_10">安装 mod_perl 2.0.2</A> 
<UL class=list3 style="PADDING-LEFT: 16px; MARGIN-LEFT: 16px">
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_11">测试CGI脚本的执行</A> 
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_12">测试 mod_perl Apache Handler 的执行</A></LI></UL>
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_13">安装 python 2.3.5</A> 
<UL class=list3 style="PADDING-LEFT: 16px; MARGIN-LEFT: 16px">
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_14">为什么不使用 python 2.4 或 python 2.5 版本</A></LI></UL>
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_15">安装 mod_python</A> 
<LI><A href="http://tech.idv2.com/2006/08/31/apache-install-note/#content_1_16">安装 subversion</A></LI></UL></DIV>
<HR class=full_hr>

<H3 id=content_1_0>所需安装文件</H3>
<UL class=list1 style="PADDING-LEFT: 16px; MARGIN-LEFT: 16px">
<LI><STRONG>Apache 2.0.59</STRONG>：<A href="http://httpd.apache.org/download.cgi" rel=nofollow>下载 Apache HTTP Server 2.0.59 Win32 Binary (MSI Installer)</A> 
<LI><STRONG>php 5.1.6</STRONG>：<A href="http://www.php.net/downloads.php" rel=nofollow>下载 Windows Binaries - php 5.1.6 zip package</A> 
<LI><STRONG>ActivePerl 5.8.8</STRONG>：<A href="http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl" rel=nofollow>下载 ActivePerl 5.8.8.817 Windows MSI</A> 
<LI><STRONG>mod_perl 2.0.2</STRONG>：通过 ppm 安装，无须事先下载 
<LI><STRONG>Python 2.3.5</STRONG>：<A href="http://www.python.org/download/" rel=nofollow>下载Python 2.3.5</A> 
<LI><STRONG>mod_python</STRONG>：<A href="http://www.meisei-u.ac.jp/mirror/apache/dist/httpd/modpython/win/3.2.10/" rel=nofollow>下载mod_python 3.2.10</A>，注意要下载 mod_python-3.2.10.win32-py2.3-apache2.0.exe 文件。 
<LI><STRONG>subversion</STRONG>：<A href="http://subversion.tigris.org/project_packages.html" rel=nofollow>下载 subversion 1.3.2</A>，建议下载 zip 版 svn-win32-1.3.2.zip。</LI></UL>
<P>另外，为了在安装失败时查找原因，最好事先准备好 <A href="http://www.dependencywalker.com/" rel=nofollow>Dependency Walker</A> 这个工具。该工具可以查看程序运行所必需的 .dll 文件。如果你已经安装了 Microsoft Visual C++ 6.0，那么其中已经包含了该工具，就不必再重新下载了。</P>
<H3 id=content_1_1>安装 Apache 2.0.59</H3>
<P>双击 apache_2.0.59-win32-x86-no_ssl.msi 文件开始安装。安装过程很简单，一路Next即可。途中要求输入服务器的域名、服务器名及管理员信箱，输入相应的正确信息。如果仅仅是安装在本地用于测试，则可按照下图所示输入。</P>
<DIV class=img_margin style="TEXT-ALIGN: left"><IMG title=apache2_install.png height=381 alt=apache2_install.png src="http://tech.idv2.com/wp-content/uploads/2006/09/apache2_install.png" width=504></DIV>
<P>安装成功之后打开浏览器，在地址栏中输入 <A href="http://localhost/" rel=nofollow>http://localhost/</A>。如果你能看到 Apache 的欢迎页面以及 Apache 的红羽毛的图标，则说明安装成功。否则请参考下面的说明查找失败原因。</P>
<H4 id=content_1_2>安装后的说明</H4>
<P>默认安装路径为 C:\Program Files\Apache Group\Apache2。安装程序会建立一个名为 Apache2 的系统服务并自动启动它，可以通过<STRONG>右键单击我的电脑-&gt;管理-&gt;服务</STRONG>确认其存在，如下图。</P>
<DIV class=img_margin style="TEXT-ALIGN: left"><IMG title=apache2_service.png height=370 alt=apache2_service.png src="http://tech.idv2.com/wp-content/uploads/2006/09/apache2_service.png" width=472></DIV>
<P>另外，安装结束后系统托盘中会多出一个 Apache 的控制图标（如下图），可以通过它来控制 Apache 的启动与停止。如果你想通过系统服务来控制 Apache 的话，可以从<STRONG>开始菜单-&gt;程序-&gt;启动</STRONG>中删除<STRONG>Monitor Apache Servers</STRONG> 项，下次启动计算机时就不会启动该图标。</P>
<DIV class=img_margin style="TEXT-ALIGN: left"><IMG title=apache2_monitor_trayicon.png height=31 alt=apache2_monitor_trayicon.png src="http://tech.idv2.com/wp-content/uploads/2006/09/apache2_monitor_trayicon.png" width=155></DIV>
<P>Apache的安装目录结构如下图：</P>
<DIV class=img_margin style="TEXT-ALIGN: left"><IMG title=apache2_tree.png height=237 alt=apache2_tree.png src="http://tech.idv2.com/wp-content/uploads/2006/09/apache2_tree.png" width=155></DIV>
<P>其中各个目录的含义如下。</P>
<UL class=list1 style="PADDING-LEFT: 16px; MARGIN-LEFT: 16px">
<LI><STRONG>bin</STRONG> - Apache的程序文件和库文件(.dll)。 
<LI><STRONG>cgi-bin</STRONG> - 网站的脚本的保存位置。 
<LI><STRONG>conf</STRONG> - 配置文件。 
<LI><STRONG>error</STRONG> - 各种错误页面。 
<LI><STRONG>htdocs</STRONG> - 网站的内容。 
<LI><STRONG>icons</STRONG> - Apache生成文件列表时使用的各种图标。 
<LI><STRONG>include</STRONG> - 程序开发时使用的头文件。 
<LI><STRONG>lib</STRONG> - 程序开发时使用的静态库文件。 
<LI><STRONG>logs</STRONG> - 服务器访问日志和错误日志。 
<LI><STRONG>manual</STRONG> - 使用手册。 
<LI><STRONG>modules</STRONG> - 扩展模块，其下有许多扩展名为 .so 的文件，实质上都是Windows .dll文件。 
<LI><STRONG>proxy</STRONG> - 使用Apache作代理时的缓存目录。</LI></UL>
<H4 id=content_1_3>修改默认配置</H4>
<P>默认情况下网站内容位于 Apache2/htdocs 下，而实际应用中很少讲网站内容和服务器程序放在一起。因此我们要做的第一步就是修改网站内容的位置。</P>
<P>我们假设网站的静态内容位于 D:\wwwroot\htdocs 下，而脚本程序位于 D:\wwwroot\cgi-bin 下。那么首先要建立这两个目录。</P>
<P>之后打开 httpd.conf 文件，找到这一行：</P><PRE> DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs"</PRE>
<P>将其修改成：</P><PRE> DocumentRoot "D:/wwwroot/htdocs"</PRE>
<P>然后找到这样的内容（各行之间可能夹杂着注释）：</P><PRE> &lt;Directory "C:/Program Files/Apache Group/Apache2/htdocs"&gt;
     Options Indexes FollowSymLinks
     AllowOverride None
     Order allow,deny
     Allow from all
 &lt;/Directory&gt;</PRE>
<P>这一段是定义网站主目录的权限。我们应当修改主目录的位置。另外，Indexes 权限表示当某个目录下不存在 index.html 文件时，显示该目录的文件列表。实际应用中这会造成安全漏洞，应当将其删除。修改之后的内容如下：</P><PRE> &lt;Directory "D:/wwwroot/htdocs"&gt;
     Options FollowSymLinks
     AllowOverride None
     Order allow,deny
     Allow from all
 &lt;/Directory&gt;</PRE>
<P>然后找到这一行：</P><PRE> ScriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache2/cgi-bin/"</PRE>
<P>将其修改为：</P><PRE> ScriptAlias /cgi-bin/ "D:/wwwroot/cgi-bin/"</PRE>
<P>再找到这样的内容：</P><PRE> &lt;Directory "C:/Program Files/Apache Group/Apache2/cgi-bin"&gt;
     AllowOverride None
     Options None
     Order allow,deny
     Allow from all
 &lt;/Directory&gt;</PRE>
<P>将其修改为：</P><PRE> &lt;Directory "D:/wwwroot/cgi-bin"&gt;
     AllowOverride None
     Options None
     Order allow,deny
     Allow from all
 &lt;/Directory&gt;</PRE>
<P>这样配置文件修改完毕。在系统服务中选择 Apache2 服务单击“重新启动服务”按钮，或者在系统托盘的Apache图标中选择Restart，或者通过命令行输入以下命令来重新启动 Apache。</P><PRE> C:\&gt; net stop apache2
 C:\&gt; net start apache2</PRE>
<P>如果配置文件修改无误，则应当正常重新启动。之后打开浏览器输入 <A href="http://localhost/" rel=nofollow>http://localhost/</A>，你应当看到一条“Forbidden”的错误信息。然后建立 D:\wwwroot\htdocs\index.html 文件，内容随意。再次用浏览器打开 <A href="http://localhost/" rel=nofollow>http://localhost/</A>，应当能看到建立的 index.html 文件的内容。</P>
<P>为了以后安装其他模块，我们应当修改系统变量 PATH 以便其他模块能够找到 Apache 的程序库。在<STRONG>控制面板-&gt;系统-&gt;高级-&gt;环境变量</STRONG>对话框中，编辑系统变量中的 <STRONG>Path</STRONG>，在其最前面添加以下内容：</P><PRE> C:\Program Files\Apache Group\Apache2\bin;</PRE>
<P>修改之后，继续安装下面的模块之前，建议重新启动计算机以避免不必要的错误。</P>
<H4 id=content_1_4>常见错误及修正方法</H4>
<H4 id=content_1_5>为什么不使用最新版的 Apache 2.2.3</H4>
<P>Apache 2.0.x 版本的 Windows 版使用 Visual C++ 6.0 编译，而 Apache 2.2.x 版本的 Windows版使用 Visual Studio .NET 编译。由于编译器不同，导致使用的程序库也不同，因此 Apache 2.0.x 和 Apache 2.2.x 不能兼容。目前，许多 Apache 的功能扩展模块仅能工作于 Apache 2.0.x 下，包括 php、subversion 等。要想使用这些功能，就必须要安装 Apache 2.0.x 版。</P>
<P>当然，这仅限于 Windows 版。其他操作系统上的 Apache 不受此限。</P>
<H3 id=content_1_6>安装 php 5.1.6</H3>
<P>php的安装相对较简单。为了管理方便，我们将 php 与 Apache 放在一起。</P>
<P>首先将 php-5.1.6-Win32.zip 解压到 C:\Program Files\Apache Group\Apache2\php5 目录下。</P>
<P>php5中的 Apache2 模块为 <STRONG>php5apache2.dll</STRONG>（注意不是 php5apache.dll，那个是 Apache 1.3.x 的模块）。修改 Apache2/conf 目录下的 httpd.conf 以加载 php5 模块。查找 <STRONG>LoadModule</STRONG>，然后在其附近添加以下内容以加载php5模块，并设置 php.ini 的位置。</P><PRE> LoadModule php5_module php5/php5apache2.dll
 PHPIniDir php5</PRE>
<P>然后查找<STRONG>AddType</STRONG>，在其附近添加以下内容，以增加 php 的类型。</P><PRE> AddType application/x-httpd-php .php</PRE>
<P>再查找<STRONG>DirectoryIndex</STRONG>命令，将其修改为以下内容，增加目录的默认文档 index.php。</P><PRE> DirectoryIndex index.html index.html.var index.htm index.php</PRE>
<P>然后进入 php5 目录，复制 <STRONG>php.ini-dist</STRONG> 文件为 <STRONG>php.ini</STRONG>。然后修改 php.ini，查找 <STRONG>extension_dir</STRONG>，该变量指定了 php 功能模块的位置。将其修改为以下的内容。</P><PRE> extension_dir = "./php5/ext"</PRE>
<P>注意，这个路径是从 Apache2 下开始算起，而不是从 Apache2/php5 下开始。</P>
<P>查找 session.save_path，这个变量指定session的保存位置。将其前面的分号去掉，然后修改该行为以下内容：</P><PRE> session.save_path = "C:\Program Files\Apache Group\Apache2\tmp"</PRE>
<P>然后在 Apache2 目录下建立 <STRONG>tmp</STRONG> 目录，作为session的保存目录。</P>
<P>最后重新启动 Apache 服务器（方法参考 Apache 安装一节）。为测试 php 是否安装成功，在文档目录 D:\wwwroot\htdocs 下建立 phpinfo.php 文件，内容如下：</P><PRE> &lt;?php
   phpinfo();
 ?&gt;</PRE>
<P>然后打开浏览器，访问 <A href="http://localhost/phpinfo.php" rel=nofollow>http://localhost/phpinfo.php</A> 。如果能看到 php 的信息页，即表明php安装成功。</P>
<H4 id=content_1_7>PHP各个目录的作用</H4>
<UL class=list1 style="PADDING-LEFT: 16px; MARGIN-LEFT: 16px">
<LI><STRONG>dev</STRONG> - 开发用 php 静态库。 
<LI><STRONG>ext</STRONG> - php扩展模块。 
<LI><STRONG>extras</STRONG> - 相关文件。 
<LI><STRONG>PEAR</STRONG> - 访问php模块网站 PEAR 的必要文件。</LI></UL>
<P>另外，php目录下的部分文件功能如下。</P>
<UL class=list1 style="PADDING-LEFT: 16px; MARGIN-LEFT: 16px">
<LI><STRONG>php.exe</STRONG> - php的命令行解释程序，也可用作 CGI 解释器。 
<LI><STRONG>php5apache2.dll</STRONG> - Apache 2.0的PHP模块。 
<LI><STRONG>php5apache.dll</STRONG> - Apache 1.3的PHP模块。 
<LI><STRONG>php5isapi.dll</STRONG> - Microsoft IIS的PHP模块。 
<LI><STRONG>php5nsapi.dll</STRONG> - Netscape Server的PHP模块。 
<LI><STRONG>php5ts.dll</STRONG> - PHP及其扩展模所需的库文件。</LI></UL>
<H4 id=content_1_8>添加 mysql 支持</H4>
<P>php4之前的版本自带mysql，而在php5中，mysql不再默认支持。为了使php5支持mysql，我们需要稍稍修改一下设置。</P>
<P>打开 php5/php.ini 文件，查找下面这一行，并将其前面的注释符号分号 ; 去掉。</P><PRE> extension=php_mysql.dll</PRE>
<P>但是这样还不能使用mysql功能，因为 php_mysql.dll 需要 php5 目录下的 php5ts.dll 和 libmysql.dll （可以使用 Dependency Walker 打开 php_mysql.dll 查看），但是这两个 DLL 文件既不与 php_mysql.dll 位于同一目录下，也没有和可执行文件Apache.exe 位于同一目录下，因此 php_mysql.dll 找不到这两个DLL，不能启动。解决方法就是将 php5ts.dll 和 libmysql.dll 复制到 Apache2/bin 下，然后重新启动 Apache2。</P>
<P>使用浏览器打开前面的 phpinfo.php 页面，可以看到页面输出的中部有 mysql 模块的配置，说明 mysql 模块已经正常安装。</P>
<H3 id=content_1_9>安装 ActivePerl 5.8.8</H3>
<P>ActivePerl是Perl的一个Win32移植版。安装方法很简单，运行 ActivePerl-5.8.8.817-MSWin32-x86-257965.msi ，即出现安装界面，一路 Next 即可。默认情况下安装到 C:\Perl 下。注意在选择功能时务必选择 PPM 3.0，该程序能够很方便地安装各种Perl模块。</P>
<P>下一步需要在系统环境变量中增加 Perl 所在的位置。如果你在安装Perl时选择了 Add Perl to the PATH enviroment variable，则可以省略这一步。否则打开<STRONG>控制面板-&gt;系统-&gt;高级-&gt;环境变量</STRONG>，修改系统变量中的 Path，在其最前面增加以下内容：</P><PRE> C:\Perl\bin;</PRE>
<P>修改环境变量后，在安装 mod_perl 之前，最好能重新启动计算机。</P>
<H3 id=content_1_10>安装 mod_perl 2.0.2</H3>
<P>mod_perl是Apache的Perl扩展模块。它模拟了一个Perl的CGI执行环境，以便在Apache中执行Perl脚本。但是mod_perl要比真正的Perl CGI的性能高上百倍。</P>
<P>Apache 2.0.x 系列对应的 mod_perl 第二版，mod_perl目前最新版本是 2.0.2。可以使用Perl包管理工具 ppm 进行安装。</P>
<P>首先启动命令行提示符（<STRONG>开始-&gt;运行-&gt;输入cmd，OK</STRONG>），然后输入 <STRONG>ppm</STRONG>，即可启动 ppm。如果启动失败，看看是否在安装 ActivePerl 的时候忘记添加 Path 环境变量了。下面以 ppm&gt; 开头的行为输入的命令，其他行为输出结果。 # 符号后面为注释。</P><PRE> # 添加repository。repository为存放Perl模块的网站。
 ppm&gt; repos add "uwinnipeg Perl 5.8 repository" http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer58
 Repositories:
 [1] ActiveState Package Repository
 [2] uwinnipeg Perl 5.8 repository
 
 # 搜索 mod_perl 模块
 ppm&gt; search mod_perl
 Searching in Active Repositories
   1. Apache-mod_perl_guide        [1.31] Apache-mod_perl_guide
   2. mod_perl                    [2.0.2] Embed a Perl interpreter in the Apache/2.0 HTTP server
   3. mod_perl-1            [1.29_01-dev] Embed a Perl interpreter in the Apache/1.3.27 HTTP server
   4. mod_perl-2.2            [2.0.3-dev] Embed a Perl interpreter in the Apache/2.2 HTTP server
   5. mod_perl-eapi-1       [1.29_01-dev] Embed a Perl interpreter in the Apache/1.3.27 HTTP server (with EAPI support)
 
 # 搜索结果中第2项为我们要安装的 mod_perl 2.0.2，使用install命令进行安装
 ppm&gt; install 2
 Package 2:
 ====================
 Install 'mod_perl' version 2.0.2 in ActivePerl 5.8.8.817.
 ====================
 Downloaded 948125 bytes.
 ......
 
 # 安装途中会询问 Apache 的模块安装位置，输入 C:\Program Files\Apache Group\Apache2\modules
 Fetching http://theoryx5.uwinnipeg.ca/ppms/x86/mod_perl.so ...  done!
 Where should mod_perl.so be placed? [D:/Apache2/modules] C:\Program Files\Apache Group\Apache2\modules   # 输入路径
 ......
 Successfully installed mod_perl version 2.0.2 in ActivePerl 5.8.8.817.</PRE><PRE> # 退出 ppm
 ppm&gt; exit</PRE>
<P>安装完毕之后，我们可以在 Apache2/modules 目录下发现刚刚安装的 mod_perl.so 文件。下面我们要将此文件加载到 Apache 中。</P>
<P>打开 Apache2/conf 目录下的 httpd.conf文件，查找 <STRONG>LoadModule</STRONG>，在其附近添加以下内容：</P><PRE> 
 #LoadFile "C:/Perl/bin/perl58.dll"    # 如果你没有在环境变量path中添加 C:\Perl\bin 则需要这一行
 LoadModule perl_module modules/mod_perl.so
 
 # 添加mod_perl配置内容，并利用其处理 cgi-bin 下的脚本文件
 &lt;Directory "D:/wwwroot/cgi-bin"&gt;
     SetHandler perl-script
     PerlResponseHandler ModPerl::Registry
     PerlOptions +ParseHeaders
     Options +ExecCGI
     AllowOverride None
     Order allow,deny
     Allow from all
 &lt;/Directory&gt;</PRE>
<P>修改完成之后重新启动 Apache，mod_perl 即安装成功。你可以在系统服务中看到 Apache2 服务的描述中多了 mod_perl/2.0.2 Perl/v5.8.8 的字样。</P>
<H4 id=content_1_11>测试CGI脚本的执行</H4>
<P>上面我们已经设置 cgi-bin 目录下的所有程序都使用 mod_perl 进行处理。这里我们执行一个脚本以确认其是否正常。</P>
<P>在 D:/wwwroot/cgi-bin 目录下建立 hello.cgi 文件，内容如下。 (实际上，该文件可以是任意扩展名，我们在Apache配置中用 Directory 指令指定 cgi-bin 目录，因此 cgi-bin 下所有的文件都将被 mod_perl 处理。)</P><PRE> # hello.cgi
 print "Contennt-Type: text/html\n\n";
 print "Hello, world! This is a CGI.";</PRE>
<P>保存之后在浏览器中输入 <A href="http://localhost/cgi-bin/hello.cgi" rel=nofollow>http://localhost/cgi-bin/hello.cgi</A> ，如能得到下面的结果则说明 mod_perl 工作正常。</P><PRE> Hello, world! This is a CGI.</PRE>
<P>如果显示 Internal Server Error，可参考 logs/httpd-error.log 文件中的错误信息。</P>
<H4 id=content_1_12>测试 mod_perl Apache Handler 的执行</H4>
<P>mod_perl 的另一种执行方法就是编写 Apache Handler。Apache Handler 是一个Perl模块，在 Apache 启动时读入并常驻内存，用来处理Web请求。</P>
<P>在 D:/wwwroot 下建立 lib 目录，用于保存 Perl 模块。我们将建立 HelloWorld::Hello 模块，内容为显示 “Hello, world”。为建立这个模块，我们需要进行以下的工作。</P>
<UL class=list1 style="PADDING-LEFT: 16px; MARGIN-LEFT: 16px">
<LI>建立模块本身 
<LI>将模块的位置放到 @INC 变量中以便 mod_perl 能找到我们建立的模块 
<LI>修改 httpd.conf，设置使用该模块的位置</LI></UL>
<P>在 lib 下建立 HelloWorld 目录，并在 HelloWorld 目录下建立 Hello.pm 文件，其内容如下。</P><PRE> package HelloWorld::Hello;
 
 use strict;
 use warnings;
 use Apache2::RequestRec ();
 use Apache2::RequestIO ();
 use Apache2::Const -compile =&gt; qw(OK);
 
 sub handler {
     my $r = shift;
     $r-&gt;content_type('text/plain');
     print "Hello, world! This is an Apache Handler.\n";
     return Apache2::Const::OK;
 }
 1;</PRE>
<P>书写Perl模块时注意不要忘记最后的 1; ，如果没有的话 mod_perl 会出错。（该文件的完整路径为 D:\wwwroot\lib\HelloWorld\Hello.pm，不要弄错了。）</P>
<P>然后我们需要将 HelloWorld::Hello 模块的位置告诉 mod_perl。在 D:\wwwroot\lib 下建立 startup.pl 文件，内容如下：</P><PRE> use lib qw(D:/wwwroot/lib);
 1;</PRE>
<P>然后修改 httpd.conf，加入下面的设置。</P><PRE> PerlRequire "D:/wwwroot/lib/startup.pl"</PRE>
<P>现在这个模块已经可以使用了。我们只需告诉 Apache 在什么情况下使用该模块。修改 httpd.conf，加入下面的设置。</P><PRE> &lt;Location /hello&gt;
     SetHandler perl-script
     PerlResponseHandler HelloWorld::Hello
 &lt;/Location&gt;</PRE>
<P>最后重新启动 Apache。在浏览器中打开 <A href="http://localhost/hello" rel=nofollow>http://localhost/hello</A>，应当能看到下面的文字：</P><PRE> Hello, world! This is an Apache Handler.</PRE>
<H3 id=content_1_13>安装 python 2.3.5</H3>
<P>双击 Python-2.3.5.exe 进行安装。默认的安装目录为 C:\Python23。</P>
<H4 id=content_1_14>为什么不使用 python 2.4 或 python 2.5 版本</H4>
<H3 id=content_1_15>安装 mod_python</H3>
<P>双击 mod_python-3.2.10.win32-py2.3-apache2.0.exe 进行安装。安装程序会检测 Python 和 Apache 的安装路径，并将 mod_python.so 安装至 Apache2/modules 目录下。</P>
<P>打开 Apache2/conf/httpd.conf，查找 <STRONG>LoadModule</STRONG>，并在其附近添加以下内容。</P><PRE> LoadModule python_module modules/mod_python.so</PRE>
<P>最后重新启动 Apache2。</P>
<H3 id=content_1_16>安装 subversion</H3>
<P>subversion是一个优秀的版本控制系统，它能够完整地记录软件开发过程中源代码的变动，并可以随时将源代码恢复到以前的任意版本。subversion的服务器可以单独使用，也可以作为 Apache 的模块，通过 WebDAV 协议使用。</P>
<P>在 subversion 的<A href="http://subversion.tigris.org/project_packages.html" rel=nofollow>下载页面</A>上，你会看到关于 Windows 版的说明，简单来讲就是 subversion 没有 Python 2.4 binding，也就是说，使用 Python 2.4 不能对 subversion 进行编程，这也是我们不使用 Python 2.4 的一个原因。</P>
<P>将 svn-win32-1.3.2.zip 解压到 C:\svn 下。由于 svn 的 Apache2 模块需要 C:\svn\bin 下的 intl3_svn.dll 和 libdb43.dll 文件，所以要在环境变量 Path 中增加下面的内容，并重新启动计算机。</P><PRE> C:\svn\bin;</PRE>
<P>将 C:\svn\bin 下的 mod_dav_svn.so 文件复制到 Apache2/modules 目录下。</P>
<P>打开 Apache2/conf/httpd.conf 文件，然后查找下面这一行，去掉其前面的注释符号 # 。</P><PRE> LoadModule dav_module modules/mod_dav.so</PRE>
<P>查找 <STRONG>LoadModule</STRONG>，并在其附近添加以下内容。</P><PRE> LoadModule dav_svn_module modules/mod_dav_svn.so</PRE>
<P>最后重新启动 Apache2。</P><!-- end Pukiwiki generated code--><BR>源:http://tech.idv2.com/2006/08/31/apache-install-note/]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=429" /> 
	  <id>http://www.openx.cn/default.asp?id=429</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[[PHP备忘]QuickForm可添加的表单元素快速参考]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2007-09-10T11:25:05+08:00</updated>
	  <published>2007-09-10T11:25:05+08:00</published>
		  <summary type="html"><![CDATA[<DIV class=content>
<H3 class=guide><A name=doc_chap7_sect2><FONT color=#336699>advcheckbox</FONT></A></H3>
<P>通常当一个checkbox被选择时仅仅传递一个值。未被选择的checkbox不但没有值，而且这个checkbox变量在传递给正常的处理过程时也不存在。The <CODE><FONT face=新宋体>advcheckbox</FONT></CODE> overcomes these problems. </P><PRE>  addElement('advcheckbox',
             string element-name,   // name of advcheckbox
             string element-label,  // label output before advcheckbox
             string text,           // label output after advcheckbox
             mixed attributes,      // string or array of attributes
             mixed values);         // see below
  </PRE>
<P>如果values被忽略，则如果此复选框没有被选择时返回一个空字符串，如果被选择了则返回1。若果一个字符串值被传递，那么返回值是空字符串或者被提供的字符串，如果有两个字符串元素的数组被传递they are taken as the unchecked/checked values to return. </P>
<H3 class=guide><A name=doc_chap7_sect3><FONT color=#336699>button</FONT></A></H3><A name=doc_chap7_pre2></A><PRE>  addElement('button',
             string element-name,   // name of button
             string value,          // text of button
             mixed attributes);     // string or array of attributes
  </PRE>
<H3 class=guide><A name=doc_chap7_sect4><FONT color=#336699>checkbox</FONT></A></H3><PRE>  addElement('checkbox',
             string element-name,   // name of checkbox
             string element-label,  // label output before checkbox
             string text,           // label output after checkbox
             mixed attributes);     // string or array of attributes
  </PRE>
<H3 class=guide><A name=doc_chap7_sect5><FONT color=#336699>date</FONT></A></H3>
<P>这并不是一个标准的Html表单元素，但可以构建一个具有多个下拉列表框的日期时间选择器。</P><PRE>  addElement('date',
             string element-name,   // name of date
             string element-label,  // label output before date
             array options,         // see below
             mixed attributes);     // string or array of attributes
  </PRE>
<P><CODE><FONT face=新宋体>options</FONT></CODE> is an array which sets the language, the date/time format, and the minimum and maximum year offered in the select boxes. The format string determines not only the date/time format, but also the number of select boxes shown. The value of the date returned is an associative array, each element key being the relevant format character and the value being the value selected by the user. An example should make this clear: </P><PRE>  &lt;?php
      require_once "HTML/QuickForm.php";
      $form = new HTML_QuickForm('frmTest', 'get');
      $options = array(
          'language'  =&gt; 'en',
          'format'    =&gt; 'dMYHi',
          'minYear'   =&gt; 2001,
          'maxYear'   =&gt; 2005
      );
      $form-&gt;addElement('date', 'mydate', 'Choose date', $options);
      $form-&gt;addElement('submit', 'btnSubmit', 'Submit');

      if ($form-&gt;validate()) {
          // Form is validated, then processes the data
          $form-&gt;freeze();
          $form-&gt;process('process_data', false);
      }
      else {
          $form-&gt;display();
      }

      function process_data ($values) {
          echo "&lt;pre&gt;";
          var_dump($values);
          echo "&lt;/pre&gt;";
      }
  ?&gt;</PRE>
<P>The possible values for the format string are: </P><PRE>  D = Short names of days
  l = Long names of days
  d = Day numbers
  M = Short names of months
  F = Long names of months
  m = Month numbers
  Y = Four digit year
  h = 12 hour format
  H = 23 hour  format
  i = Minutes
  s = Seconds
  a = am/pm
  A = AM/PM
  </PRE>
<P>To set default values for the <CODE><FONT face=新宋体>date</FONT></CODE> element simply create an array and assign the required values to the format string elements defined above. For example, to set the default date to 28th February 2005: </P><PRE>  $form-&gt;setDefaults(array(
    'my_date' =&gt; array('d'=&gt;28, 'F'=&gt;"February", 'Y'=&gt;2005)));
  </PRE>
<P>Here's a complete example that sets the default date to today's date: </P><PRE>  &lt;?php
    require_once "HTML/QuickForm.php";
    $form = new HTML_QuickForm('frmTest', 'get');
    $options = array(
        'language'  =&gt; 'en',
        'format'    =&gt; 'dMYHi', 
        'minYear'   =&gt; 2000, 
        'maxYear'   =&gt; 2010 
    ); 
    $date_defaults = array(
        'd' =&gt; date('d'),        
        'M' =&gt; date('n'),
        'Y' =&gt; date('Y'),
        'H' =&gt; date('H'),
        'i' =&gt; date('i')
    );

    $form-&gt;setDefaults(array('mydate' =&gt; $date_defaults));
    $form-&gt;addElement('date', 'mydate', 'Choose date', $options);
    $form-&gt;addElement('submit', 'btnSubmit', 'Submit');
    
    if ($form-&gt;validate()) {
        // Form is validated, then processes the data
        $form-&gt;freeze();
        $form-&gt;process('process_data', false);
    }
    else {
        $form-&gt;display();
    }
     
    function process_data ($values) {
        echo "&lt;pre&gt;";
        var_dump($values);
        echo "&lt;/pre&gt;";
    }
?&gt;</PRE>
<H3 class=guide><A name=doc_chap7_sect6><FONT color=#336699>element</FONT></A></H3>
<P>For user-defined elements. This section to be completed. </P>
<H3 class=guide><A name=doc_chap7_sect7><FONT color=#336699>file</FONT></A></H3>
<P><B>Note: </B>The 'file' documentation was submitted by Leonie Price</P><PRE>  addElement('file',
             string element-name,   // name of file element
             string element_label,  // label for file element
             mixed attributes);     // string or array of attributes
  </PRE>
<P>This is a pseudo-element that displays a text box and button, and provides all the supporting functions needed to manage the uploading of files. </P>
<P><B>Warning: </B>The official documentation records this element as being depreciated, and may not be supported in future versions of QuickForm.</P>
<P>Let's look at an example of the use of the <CODE><FONT face=新宋体>file</FONT></CODE> element: </P><PRE>  &lt;?php
      require_once "HTML/QuickForm.php";
      $uploadForm = new HTML_QuickForm('upload_form', 'post');
      $path = "/path/to/uploads";
      $file =& $uploadForm-&gt;addElement('file', 'filename', 'File:');
      $uploadForm-&gt;addRule('filename', 'You must select a file', 'uploadedfile');
      $uploadForm-&gt;addElement('submit', 'btnUpload', 'Upload');
      if ($uploadForm-&gt;validate()) {
          $uploadForm-&gt;process('process', true);
      }
      else {
          $uploadForm-&gt;display();
      }

      function process($values) {
          global $file;
          if ($file-&gt;isUploadedFile()) {
              $file-&gt;moveUploadedFile($path);
          }
          else {
              print "No file uploaded";
          }
      }
  ?&gt;</PRE>
<P>There are a couple of points to note in this code. Firstly, the code segment </P><PRE>$file =& $uploadForm-&gt;addElement('file', 'filename', 'File:');</PRE>
<P>creates a reference called <CODE><FONT face=新宋体>$file</FONT></CODE> to the file being uploaded, which is used later in the <CODE><FONT face=新宋体>process</FONT></CODE> function. </P>
<P>Secondly, the rule to check that a file has been selected, <CODE><FONT face=新宋体>uploadedfile</FONT></CODE>, exists specifically for the <CODE><FONT face=新宋体>file</FONT></CODE> element. There are other custom rules for the file element: </P>
<P><CODE><FONT face=新宋体>maxfilesize</FONT></CODE> - sets the maximum file size that may be uploaded. For example: </P><PRE>  $uploadForm-&gt;addRule('filename', 'The file you selected is too large', 'maxfilesize', 524288);</PRE>
<P><CODE><FONT face=新宋体>mimetype</FONT></CODE> - defines the type of file which may be uploaded. For example: </P><PRE>  $uploadForm-&gt;addRule('filename', 'Must be a jpeg', 'mimetype', array('image/jpeg', 'image/jpeg') );</PRE>
<P>Finally, after validation the process function is called. The final argument, <CODE><FONT face=新宋体>true</FONT></CODE>, indicates that the uploaded file(s) should be processed with the form. </P>
<H3 class=guide><A name=doc_chap7_sect8><FONT color=#336699>header</FONT></A></H3><PRE>  addElement('header',
             string element-name,   // name of header
             string text);          // text of header
  </PRE>
<H3 class=guide><A name=doc_chap7_sect9><FONT color=#336699>hidden</FONT></A></H3><PRE>  addElement('hidden',
             string element-name,   // name of hidden element
             string value,          // value of hidden element
             mixed attributes);     // string or array of attributes
  </PRE>
<P></P>
<H3 class=guide><A name=doc_chap7_sect10><FONT color=#336699>hiddenselect</FONT></A></H3>
<P>This section to be completed. </P>
<H3 class=guide><A name=doc_chap7_sect11><FONT color=#336699>hierselect</FONT></A></H3>
<P>This pseudo-element dynamically creates two HTML Select elements. The values available in the second Select element are determined by the value selected in the first. For example, the first box could list countries and the second cities; only the cities which exist in the selected country would be available. </P><PRE>  addElement('hierselect',
             string element-name,   // name of hierselect element
             string label,          // text label
             mixed attributes);     // string or array of attributes
  </PRE>
<P>The methods <CODE><FONT face=新宋体>setMainOptions</FONT></CODE> and <CODE><FONT face=新宋体>setSecOptions</FONT></CODE> are used to populate the two select boxes. The argument to setMainOptions is a single dimension array; the argument to setSecOptions is a two-dimension array, the first dimension being the key used to associate the secondary option to the appropriate main option. The value returned is a two-element array, the first element being the value of the main option and the second element being the value of the secondary options. An example should make the use of hierselect easier to understand: </P><PRE>  &lt;?php
      require_once "HTML/QuickForm.php";
      $form = new HTML_QuickForm('frmTest', 'get');

      $main = array();
      $secondary = array();

      $main[0] = "England";
      $main[1] = "Scotland";
      $main[2] = "USA";

      $secondary[0][0] = "London";
      $secondary[0][1] = "Manchester";
      $secondary[0][2] = "Liverpool";
      $secondary[1][3] = "Edinburgh";
      $secondary[1][4] = "Glasgow";
      $secondary[2][5] = "Fort Worth";
      $secondary[2][6] = "Boston";
      $secondary[2][7] = "Los Angles";

      $sel =& $form-&gt;addElement('hierselect', 'location', 'Location:');
      $sel-&gt;setMainOptions($main);
      $sel-&gt;setSecOptions($secondary);    
      $form-&gt;addElement('submit', 'btnSubmit', 'Submit');

      if ($form-&gt;validate()) {
          // Form is validated, then processes the data
          $form-&gt;freeze();
          $form-&gt;process('process_data', false);
      }
      else {
          $form-&gt;display();
      }

      function process_data ($values) {
          echo "&lt;pre&gt;";
          var_dump($values);
          echo "&lt;/pre&gt;";
      }
  ?&gt;</PRE>
<P><B>Warning: </B>Note that if a default value for the main box is set this does not automatically set the contents for the secondary box</P>
<P>Set default as follows: </P><PRE>      // First part of form as previous example
      $form-&gt;setDefaults(array('location'=&gt;array(1,4)));
      $sel =& $form-&gt;addElement('hierselect', 'location', 'Location:');
      $sel-&gt;setMainOptions($main);
      $sel-&gt;setSecOptions($secondary);    
      $form-&gt;addElement('submit', 'btnSubmit', 'Submit');
      // Rest of form as previous example</PRE>
<H3 class=guide><A name=doc_chap7_sect12><FONT color=#336699>html</FONT></A></H3>
<P>This pseudo-element adds raw HTML to a form. </P><PRE>  addElement('html',
             string html-text);     // the HTML to add
  </PRE>
<H3 class=guide><A name=doc_chap7_sect13><FONT color=#336699>image</FONT></A></H3>
<P>Adds an image to a form. </P><PRE>  addElement('image',
             string element-name,   // name for image
             string src,            // source file of image
             mixed attributes);     // string or array of attributes
  </PRE>
<H3 class=guide><A name=doc_chap7_sect14><FONT color=#336699>link</FONT></A></H3>
<P>Creates a link. </P><PRE>  addElement('link',
             string element-name,   // name for link
             string label,          // label for link field
             string href,           // URI of link
             string text,           // text to display
             mixed attributes);     // string or array of attributes
  </PRE>
<H3 class=guide><A name=doc_chap7_sect15><FONT color=#336699>password</FONT></A></H3><PRE>  addElement('password',
             string element-name,   // name for password
             string label,          // label for password field
             mixed attributes);     // string or array of attributes
  </PRE>
<H3 class=guide><A name=doc_chap7_sect16><FONT color=#336699>radio</FONT></A></H3>
<P><FONT color=#336699></FONT></P><PRE>  addElement('radio',
             string element-name,   // name for radio button
             string label,          // text to display before button
             string text,           // text to display after button
             int value,             // the value returned
             mixed attributes);     // string or array of attributes
  </PRE>
<P><B>Note: </B>Adding multiple radio buttons with the same element-name will cause them to behave as a group (ie, only one can be selected).</P>
<P>To select a default radio button from a group, use: </P><PRE>  $form-&gt;setDefaults(array(element-name =&gt; value));
  </PRE>
<H3 class=guide><A name=doc_chap7_sect17><FONT color=#336699>reset</FONT></A></H3><PRE>  addElement('reset',
             string element-name,   // name of reset
             string value,          // text of button
             mixed attributes);     // string or array of attributes
  </PRE>
<H3 class=guide><A name=doc_chap7_sect18><FONT color=#336699>select</FONT></A></H3><PRE>  addElement('select',
             string element-name,   // name of select
             string label,          // label for select
             mixed data,            // data for select; see earlier text
             mixed attributes);     // string or array of attributes
  </PRE>
<H3 class=guide><A name=doc_chap7_sect19><FONT color=#336699>static</FONT></A></H3>
<P>This element displays static text on the form. </P><PRE>  addElement('static',
             string label,          // label to display
             string text);          // text to display
  </PRE>
<H3 class=guide><A name=doc_chap7_sect20><FONT color=#336699>submit</FONT></A></H3><PRE>  addElement('submit',
             string element-name,   // name of submit
             string value,          // text of button
             mixed attributes);     // string or array of attributes
  </PRE>
<H3 class=guide><A name=doc_chap7_sect21><FONT color=#336699>text</FONT></A></H3><PRE>  addElement('text',
             string element-name,   // name of text box
             string label,          // label
             mixed attributes);     // string or array of attributes
  </PRE>
<H3 class=guide><A name=doc_chap7_sect22><FONT color=#336699>textarea</FONT></A></H3><PRE>  addElement('textarea',
             string element-name,   // name of textarea
             string label,          // label
             mixed attributes);     // string or array of attributes
</PRE></DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=428" /> 
	  <id>http://www.openx.cn/default.asp?id=428</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[国内居然有人成功破解iPhone了!特转改帖!!!!!!!]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-08-07T09:22:11+08:00</updated>
	  <published>2007-08-07T09:22:11+08:00</published>
		  <summary type="html"><![CDATA[<DIV class=t_msgfont id=message51534>转贴源:http://www.weiphone.com/thread-3849-1-2.html</DIV>
<DIV class=t_msgfont>&nbsp;</DIV>
<DIV class=t_msgfont>&nbsp;</DIV>
<DIV class=t_msgfont>恭喜n000b成为了让iphone能打电话的第一个中国人！<A href="http://www.weiphone.com/thread-3837-1-1.html" target=_blank>http://www.weiphone.com/thread-3837-1-1.html</A>这是他的帖子！整个破解iphone的过程由他详细阐述了。我在这里为大家详细讲解sim卡的破解。<BR><BR><A href="http://www.weiphone.com/thread-4026-1-1.html" target=_blank>http://www.weiphone.com/thread-4026-1-1.html</A></DIV>
<DIV class=t_msgfont>&nbsp;</DIV>
<DIV class=t_msgfont>一先讲解sim的基本知识<BR><B>SIM卡名词解释</B> <BR><BR>　　SIM卡（Subscriber Identity Module），即用户识别卡，它是一张符合GSM规范的“智慧卡”，SIM卡有大小之分，大卡尺寸54mmx84mm（约为名片大小），小卡尺寸为25mmx15mm（比普通邮票还小）。其实“大卡”上面真正起作用的是它上面的那张“小卡”，“小卡”上起作用的部分只有小指甲盖那么大。目前国内流行样式是“小卡”，小卡也可以换成“大卡”（有个卡托即可）。“大卡”和“小卡”分别适用于不同类型的GSM移动电话，早期的机型如摩托罗拉GC87C、308C等手机用的是“大卡”，现在新出的机型基本上都是用“小卡”。SIM卡可以插入任何一部符合GSM规范的移动电话中，“实现电话号码随卡不随机的功能”，而通话费则自动计入持卡用户的帐单上，与手机无关。<BR><B>SIM卡知识进阶</B> <BR><BR>　　（一）SIM卡内保存的数据可以归纳为以下四种类型： <BR>　　（1）由SIM卡生产厂商存入的系统原始数据。 <BR>　　（2）由GSM网络运营部门或者其他经营部门在将卡发放给用户时注入的网络参数和用户数据。包括： <BR>　　　　*鉴权和加密信息Ki（Kc算法输入参数之一：密匙号）； <BR>　　　　*国际移动用户号（IMSI）； <BR>　　　　*A3：IMSI认证算法； <BR>　　　　*A5：加密密匙生成算法； <BR>　　　　*A8：密匙（Kc）生成前，用户密匙（Kc）生成算法； <BR>　　（3）由用户自己存入的数据。比如，短消息、固定拨号，缩位拨号，性能参数，话费记数等。 <BR>　　（4）用户在用卡过程中自动存入和更新的网络接续和用户信息类数据。包括最近一次位置登记时的手机所在位置区识别号（LAI），设置的周期性位置更新间隔时间，临时移动用户号（TMSI）等。 <BR>　　这些数据都存放在各自的目录项内，第一类数据放在根目录，当电源开启后首先进入根目录，再根据指令进入相关的子目录，每种目录极其内部的数据域均有各自的识别码保护，只有经过核对判别以后才能对数据域中的数据进行查询，读出和更新。上面第一类数据通常属永久性的数据，由SIM卡生产厂商注入以后无法更改，第二类数据只有网络运行部门的专门机构才允许查阅和更新，再第三、四类数据中的大部分允许用户利用任何手机对其进行读/写操作。 <BR><BR>　　（二）SIM卡结构 <BR>　　（1）SIM卡能够储存多少电话号码取决于卡的EEPROM的容量（有2K、3K、8K容量），若有8KB的存储容量，可供储存以下信息： <BR>　　　　*100组电话号码及其对应的性名文字； <BR>　　　　*15组短信息（Short Message）； <BR>　　　　*25组以上最近拨出的号码； <BR>　　　　*4位SIM卡密码（PIN）。 <BR>　　（2）SIM卡是带有微处理器的芯片卡，内有5个模块，每个模块对应一个功能：CPU（8位）、程序存储器ROM（6-16kbit）、工作存储器RAM（128-256kbit）、数据存储器EEPROM（2-8kbit）和串行通信单元，这5个模块集成在一块集成电路中。SIM卡在与手机连接时，最少需要5个连接线： <BR>　　　　*电源（Vcc） <BR>　　　　*时钟（CLK） <BR>　　　　*数据I/Q口（Data） <BR>　　　　*复位（RST） <BR>　　　　*接地端（GND） <BR>（4）SIM卡背面上20位数字iccd所代表的含义如下： <BR>　　　　*前6位（898600）：是中国的代号； <BR>　　　　*第7位：业务接入号，对应于135、136、137、138、139中的5、6、8、9； <BR>　　　　*第8位：SIM卡的功能位：一般为0，现在的预付费SIM卡为I； <BR>　　　　*第9、10位：各省的编码； <BR>　　　　*11、12位：年号； <BR>　　　　*13位：供应商代码； <BR>　　　　*14-19位：用户识别码； <BR>　　　　*20位：校验位。 <BR><BR><BR></DIV>
<DIV class=t_msgfont>
<TABLE class=t_table cellSpacing=0 width="98%" align=center>
<TBODY>
<TR>
<TD colSpan=3><B>GSM网络登录步骤</B></TD></TR>
<TR>
<TD width="3%"></TD>
<TD>1. 手机开机后会从SIM卡中读取IMSI(15个数字)和TMSI(4字节)；<BR>2. 手机登录网络时，将会IMSI或TMSI发给网络；<BR>3. 网络判断到该IMSI或TMSI有效，要生成一个128bit的<B>RAND</B>，然后发给手机；<BR>4. 手机收到RAND后，将RAND发给SIM卡；<BR>5. SIM以里面的KI为密钥对RAND进行<B>A3A8运算</B>，生成(SRES+Kc)；<BR>6. 手机读取(<B>SRES+Kc</B>)(32bit+64bit)，并将SRES发给网络；<BR>7. 网络自己进行一次A3A8运算，如果结果与手机返回的SRES相同，则认为该用户合法。<BR><BR><FONT color=red>这个方法破解iphone的原理，主要就是利用了sim的网络登录原理为突破口，iphone是利用要at&t卡的imsi在中国移动的网络里取得进网许可，此时中国移动认为这个卡是at&t国际漫游过来的，就分配给他一个tmsi（临时的imsi），此时tmsi与ki配合登录个人帐户系统的时候中国移动发现他是国内的用户，但是忘记了之前进网是以漫游身份进来的（系统没有料到我们会搞这样的卡），然后按照正常帐户处理了。</FONT><BR><FONT color=#ff0000>&nbsp; &nbsp;为什么不能在待机状态下不能接听电话，而在通话中可以呢？</FONT><BR><FONT color=#ff0000>&nbsp; &nbsp;原因也就是出在了，手机在接收系统呼叫的时候，移动系统要求imsi验证此时知道你是非网内用户，而拒绝服务。</FONT><BR><FONT color=#ff0000>在通话中可以接收呼叫，就是此时系统不进行imsi验证了，直接认为你是合法用户！</FONT><BR><FONT color=#ff0000></FONT><BR><FONT size=4><FONT color=green>我自己的想法就是：</FONT></FONT><BR><FONT size=4><FONT color=green>在超级sim卡（复制卡）里，重新编写程序，使之具有双imsi，at&t的用于蒙蔽iphone的验证机制，另一个你自己的合法的imsi用于在接收呼叫的时候，返回给移动的系统验证！</FONT></FONT><BR><FONT size=4><FONT color=green>&nbsp; &nbsp;不过程序肯定不简单，不是我所能及的！一个思路而已</FONT></FONT><BR><FONT size=4><FONT color=#008000></FONT></FONT><BR><FONT size=4><FONT color=#008000>下图是手机的登录网络的过程图！</FONT></FONT><BR><BR><FONT color=#445059><BR><IMG onmousewheel="return imgzoom(this);" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="" src="http://www.weiphone.com/attachments/month_0708/20070804_2779de223b7e58ca1d7eOis6o3XQt7Jg.jpg" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0><BR><BR><BR></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=t_msgfont><BR><B>前期准备工作</B><BR>&nbsp; &nbsp;你必须拥有一套SIM卡复制设备，包括usb读卡器一个，可用于iphone的空卡一张，还有相关的软件，不是很落后的电脑一台<BR>&nbsp; &nbsp; SIM卡复制设备购买<A href="http://www.weiphone.com/thread-3848-1-1.html" target=_blank>http://www.weiphone.com/thread-3848-1-1.html</A>交易区里有啦。<BR><BR>开始工作：<BR><BR>&nbsp; &nbsp; 第一步，确定你自己的sim卡是v1版的卡还是v0版的卡（目前国内只有这两种卡，3g的at&t卡是v2版本不可破解）规律如下<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;中国移动的卡：看你的SIM卡背面的iccid码，第三行的前面两位是sim卡的制造年份。如果是00、01、02、03、04，那么你这个卡是v1卡，破解非常容易。<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;如果是05、06、07，那么可以肯定是v0卡，同样可以破解！<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;中国联通：界限比较模糊，它的年份区别是iccid的第二行第2、3位数字表示。00、01、02、03、04都是v1卡，05上半年是v1卡，下半年是v0的，之后都是v0.但是根据地区的不同，依然有05、06年的卡是v1的卡。<BR><BR>&nbsp; &nbsp;第二步：安装读卡器的驱动程序，一路“下一步”就可以了（光盘有）<BR><BR>&nbsp; &nbsp;第三步：安装simmax7.0。也是一路“下一步”直到完成。（光盘有）<BR><BR>&nbsp; &nbsp;第四步：插入读卡器，电脑提示找到新硬件，一路“下一步”自动安装，知道提示安装成功。<BR><BR><BR><FONT color=red><B>&nbsp;&nbsp;如果你的卡是v1卡（根据判断，如果不能判断做v0卡处理）&nbsp;&nbsp;</B></FONT><BR>&nbsp; &nbsp;第五步：把你的SIM卡插进读卡器，点击桌面“开始”--“所有程序”--simmax--simscaner7.0，打开应用程序。<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 出现软件界面后在菜单栏点击“扫描备份”选择“扫描备份” 出现提示不用管它“确定”&nbsp;&nbsp;程序开始链接读卡器。链接成功后出现解码界面，直接点击"扫描”<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 1小时左右，提示破解成功，并得将到一个dat文件提示你保存，需要输入密码，可以为空，直接回车存放路径自己选择！<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 此时你不要着急，不能用这个这个dat文件直接写入空SIM卡，如果直接写入后插入iphone是不能通过验证的。<BR><BR><B>&nbsp;&nbsp;正确的做法是</B>：使用“转换器”将这个dat文件打开（也可以用其他软件比如simeasy），你会看见这个dat文件包含有iccid，imsi，ki，smsp这几样信息。<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 我们要做的就是更改dat文件的iccid和imsi，生成新的dat文件，用于蒙骗iphone的验证机制。<BR><BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<FONT color=seagreen><U> iccid和imsi可以直接由simscaner查看，无需破解，而你自己的sim卡ki是要破解得到。<BR></U></FONT><BR>比较详细的做法由n000b的帖子阐述<BR><B>准备必要的数据<BR><BR></B>需要记录下以下数据（ICCID和IMSI读卡器软件都能从卡里直接读出，Ki在上面已经解出，使用的软件是simscner7.0，套餐有的）：<BR>1、iPhone的随机AT&T卡：IMSI，ICCID，以下分别把他们称为：<FONT color=blue>IMSI-a</FONT>和<FONT color=blue>ICCID-a</FONT><BR>2、移动SIM卡：IMSI，ICCID，Ki，以下分别把他们成为：<FONT color=red>IMSI-b</FONT>，<FONT color=red>ICCID-b</FONT>和<FONT color=red>Ki-b</FONT><BR><FONT color=#ff0000></FONT>3、短信中心号码<BR><BR><B>生成写卡文件</B><BR><BR>用套餐里面的一个叫做“转换器”的软件可以生成写卡文件，我们需要2个文件（因为要写2次）。<BR>第一次：填入: <FONT color=blue>ICCID-a</FONT>，<FONT color=red>IMSI-b</FONT>，<FONT color=red>Ki-b</FONT>，短信中心号码，然后存盘生成一个写卡文件，下面称作文件1；<BR>第二次：填入：<FONT color=blue>ICCID-a</FONT>，<FONT color=blue>IMSI-a</FONT>，<FONT color=red>Ki-b</FONT>，短信中心号码，然后存盘生成另一个写卡文件，下面称作文件2；<BR><BR>注意：（由于iphone的验证机制是关系到iccid，所以iccid的填法很重要，普通的复制是需要填写iccid的）<BR>1、我写好后放到普通手机里看，显示的短信中心号码是20个0，而用读卡器读出的却显示正确，不知道哪里有错，由于这个短信中心号不对，所以我无法发出短信。<BR><FONT color=#ff0000></FONT><BR>2、“转换器”写文件时会把ICCID号码每2位颠倒，例如123456写入文件会变成214365，读出时又颠倒回来。而用SimScanner读取“转换器”生成的文件并写入的时候不会自行颠倒，所以写入的ICCID是错的。我<FONT color=red>填写时把ICCID每2位颠倒后再填写</FONT>的，再用SimScanner写入时刚好正常。<BR><BR><B>写卡<BR><BR></B>用套餐里面的SimScanner写卡，要写2次。<BR>第一次：先用<FONT color=blue><B>文件1</B></FONT>写卡，写完后把卡放到一个普通的手机里面，开机后等待知道网络注册完成（出现移动名称和有信号）；<BR>第二次：把上面试用过的卡放回写卡器中，这一次用<FONT color=red><B>文件2</B></FONT>写卡，覆盖掉第一次记录，然后把卡直接放进iPhone（<FONT color=red>这一次不要放进普通手机里，我实际实验的结果就是如果第二次的卡先放进普通手机，再放进iPhone就不认了</FONT>）。<BR><BR>注意：<BR>虽然两次写卡看起来有点奇怪，既然第二次把第一次覆盖了，似乎没必要作第一次的写，但是我实验的结果是，如果不在第一次把卡放进普通手机进行网络登录一次，第二次写出的卡就不行。<BR><BR><B>激活<BR>如果你的看已经激活，那么就可以直接用啦。<BR></B>现在先把做好的卡放进iPhone。虽然iPhone激活有很多种方法，但是用这个特殊卡就必须使用iASign的方法来激活。具体的激活方法可以到下面网站去看：<BR><BR>&nbsp; &nbsp;用Intel Mac: <A href="http://www.hacktheiphone.com/iphone_using_cingular_for_intel_mac.html" target=_blank>iPhone Using Cingular (Intel Mac Version)</A><BR><BR>&nbsp; &nbsp;用Windows: <A href="http://www.weiphone.com/viewthread.php?tid=3688&highlight=%E3%80%90%E6%96%B0%E6%95%99%E7%A8%8B%E3%80%91%E7%A0%B4%E8%A7%A3Cigular%E5%AE%8C%E5%85%A8%E7%89%88-windows" target=_blank>weiphone外翻组【新教程】破解Cigular完全版-windows</A><BR>&nbsp; &nbsp;或者原版：<A href="http://iphone_using_cingular_for_windows.html/" target=_blank>iPhone Using Cingular (Windows Version)</A> <BR><BR>注意：<BR>1、<FONT color=red>在生成证书文件的时候要用自己制作的那张卡的信息（或者就用AT&T的卡信息），不能用原来的移动卡信息</FONT>，一旦成功激活，屏幕上就会出现信号指示和China Mobile字样了。<BR>2、如果还是“No Service”，先把iPhone关掉（长按Power键直到出现红色的关机按钮），再重新开机就应该可以了。<BR><BR><BR><B><FONT color=red>如果你手上的是v0卡</FONT></B><BR><B><FONT color=red>最为关键的是v0卡的破解！</FONT></B><BR><B><FONT color=#ff0000></FONT></B><BR><B><FONT color=black>第一步：安装读卡器驱动，过程比较简单，光盘有带插图的说明。</FONT></B><BR><B><FONT color=#000000></FONT></B><BR><B><FONT color=#000000>第二步：插如读卡器（你的SI</FONT></B><B><FONT color=#000000>M卡也插入读卡器），电脑提示新硬件，选择自动安装知道完成，如果已经安装过读卡器了，那么就会听见“崩崩”声音。说明电脑</FONT></B><BR><B><FONT color=#000000>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 已经识别读卡器了。</FONT></B><BR><B><FONT color=#000000></FONT></B><BR><B><FONT color=#000000>第三步：进入“设备管理器” 查看读卡器的端口&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;A-men开头的那个设备就是读卡器，括号里的com几就是端口了。</FONT></B><BR><B><FONT color=#000000></FONT></B><BR><B><FONT color=#000000>第四步：打开v2卡 软件包里的“破解卡”文件夹，里边是一个放大镜图标的程序，它就是破解v2卡的一个主力工具kisearch。打开这个软件。在com框选择好刚才在设备管理器看到的端口号 com x&nbsp;&nbsp;频率设置成19200（高速），然后点击“连接”&nbsp; &nbsp;上方的大框就会显示ATR=一串数字，那就表示“连接”成功，然后按“读卡”软件就开始破解sim卡了，“次数”那个框格在数数。这需要等待，你准备一个晚上吧。快的数40000次就可以了，慢的要100万。</FONT></B><BR><B><FONT color=#000000>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; </FONT></B><BR><B><FONT color=#000000></FONT></B><BR><B><FONT color=#000000>注意：如果你的按链接后ATR返回值=00，那就端口不对，或者是频率不对。请检查你读卡器边上的小开关，靠近接口是高速19200.远离接口那端是9600</FONT></B><B><FONT color=#000000>（低速），有的sim卡是不支持高速破解的，那么就要跳到低速破解！</FONT></B><BR><B><FONT color=#000000></FONT></B><BR><B><FONT color=red>第五步：耐心等待之后，kisearch计算成功！小方框里会提示你，恭喜你，你的卡可破解，第x组ki：xxxx&nbsp;&nbsp;（到了这里，你就注定能成功了），如果没有等它解卡成功夜不要气馁，还有其他方法可以破解的。那些是进级的方法就不在这里说先了。</FONT></B><BR><B><FONT color=#000000></FONT></B><BR><B><FONT color=#000000>第六步：关闭第五步的软件，打开v2卡软件包里的woronscan1.09.exe。同样先要设置端口，在菜单栏点击”选项“选择“phonix卡”，然后点“配置”选择正确的com和速率 然后点“确定”。</FONT></B><BR><B><FONT color=#000000></FONT></B><BR><B><FONT color=#000000></FONT></B><BR><B><FONT color=#000000>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 然后点“ki”图标，弹出一个窗口。会看见有个圆点默认在第1列的位置。你需要把点&nbsp;&nbsp;点在刚才提示的&nbsp;&nbsp;第x组</FONT></B><BR><B>的x+1列！<FONT color=red>举例，你得到第2组ki 1245，那么你就将圆点点在第3列的位置，把下方的“勾”也点上，然后把，12填在“勾”下方的框格，再把45填在再下方的框格。然后点击“开始”</FONT></B><BR><B>软件开始数数，数512次，就有结果，它会提示“可能的配对“</B><BR><B>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;如果能够得到可能的配对，就表示当前列的ki是正确的，得到的可能配对用于“下一个列”&nbsp; &nbsp;下一个列是第几列呢？这个顺序决定于，刚才第一个软件提示的：第x组ki”的x。我们的测试顺序以“列”为标准。</B><BR><B><FONT color=red>测试顺序非常重要，要严格遵循</FONT></B><BR><B><FONT color=#000000>提供第0对KI时,就填在1列 调试顺序为: 5，3，7，2，6，4，8</FONT></B><BR><B><FONT color=#000000>提供第1对KI时,就填在2列 调试顺序为: 6，4，8，1，5，3，7</FONT></B><BR><B><FONT color=#000000>提供第2对KI时,就填在3列 调试顺序为: 7，1，5，2，6，4，8</FONT></B><BR><B><FONT color=#000000>提供第3对KI时,就填在4列 调试顺序为: 8，2，6，1，5，3，7</FONT></B><BR><B><FONT color=#000000>提供第4对KI时,就填在5列 调试顺序为: 1，3，7，2，6，4，8 </FONT></B><BR><B><FONT color=#000000>提供第5对KI时,就填在6列 调试顺序为: 2，4，8，1，5，3，7</FONT></B><BR><B><FONT color=#000000>提供第6对KI时,就填在7列 调试顺序为: 3，1，5，2，6，4，8</FONT></B><BR><B><FONT color=#000000>提供第7对KI时,就填在8列 调试顺序为: 4，2，6，1，5，3，7</FONT></B><BR><BR><B><FONT color=green>圆点与勾的规则：圆点是是测试某一列就点在某一列，勾 就是测试过的和测试中的（圆点所在列）都要打上。</FONT></B><BR><B><FONT color=green></FONT></B><BR><B><FONT color=#000000><FONT color=red>注意</FONT>：有的朋友有可能会碰到最后一组ki出不来，原因是：前面的某一列存在两组ki值能够得到可能值，你只是测试到了一组有可能值，就往下一列测试了，这就是原因。建议测试过程中用一张纸记录，并且测试完得到的所有“可能配对”。</FONT></B><BR><B><FONT color=#000000></FONT></B><BR>只要你有第一个ki，那么就一定能成功的。<BR>成功后，会提示ki是什么（一串很长的字串）还有imsi也会提示出来<BR>复制出来，粘贴在写字板里 去掉中间的空格。<BR><BR><FONT color=red>然后偶就开始之作dat文件。制作dat文件，前面以前阐述了！</FONT><BR><FONT color=#ff0000></FONT><BR><FONT color=#ff0000>大家看起来可能有点吃力，但是光盘的教程是有截图的，会容易很多。</FONT><BR><BR><BR>祝大家iphone成功。顺变广告一下，我有sim卡复制套餐出售，并且提供技术支持！<BR><A href="http://auction1.taobao.com/auction/50008090-1502-50003680/item_detail-0db1-f9b799a187c7b252f46edf7f8ce4de79.jhtml" target=_blank>http://auction1.taobao.com/auction/50008090-1502-50003680/item_detail-0db1-f9b799a187c7b252f46edf7f8ce4de79.jhtml</A>（淘宝）<BR>qq16245472&nbsp; &nbsp; 手机13527696234<BR><BR>[<I> 本帖最后由 huczi 于 2007-8-6 17:12 编辑 </I>]</DIV><BR style="CLEAR: both"><FONT style="FONT: 12px Tahoma, Verdana; COLOR: #445059"><BR><BR>
<DIV class=msgbody>
<DIV class=msgheader>
<DIV class=right><A href="http://www.weiphone.com/member.php?action=credits&view=getattach" target=_blank><IMG alt=查看积分策略说明 src="http://www.weiphone.com/images/Weiphone_iPhoneBackStyle/credits_attachlist.gif" border=0></A></DIV>附件</DIV>
<DIV class=msgborder style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: 0px">
<DIV class=t_attachlist>
<DIV class="right smalltxt">2007-8-4 21:37<BR></DIV><IMG class=absmiddle alt="" src="http://www.weiphone.com/images/attachicons/image.gif" border=0> <A class=bold href="http://www.weiphone.com/attachment.php?aid=2383&nothumb=yes" target=_blank>gsm_login.jpg</A> <SPAN class=smalltxt>(24.34 KB)</SPAN> <BR>&nbsp; <BR><IMG onmousewheel="return imgzoom(this)" onmouseover="attachimg(this, 'mouseover')" onclick="attachimg(this, 'click', 'attachments/month_0708/20070804_2779de223b7e58ca1d7eOis6o3XQt7Jg.jpg')" alt="" src="http://www.weiphone.com/attachments/month_0708/20070804_2779de223b7e58ca1d7eOis6o3XQt7Jg.jpg" border=0> </DIV></DIV></DIV><BR></FONT>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=427" /> 
	  <id>http://www.openx.cn/default.asp?id=427</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Web网站服务器DDOS安全解决方案]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-08-03T15:40:16+08:00</updated>
	  <published>2007-08-03T15:40:16+08:00</published>
		  <summary type="html"><![CDATA[<DIV><FONT color=#ff00ff>一、现象分析</FONT></DIV>
<DIV>网站服务器运营商的互联网接入形式主要有两种： 一种是主机托管，另外一种是自拉网络专线，但基于接入费用的考虑，绝大多数采用前者，但也有不少网吧主会采用后者。无论是前者还是后者接入，在正常情况下，用户都可以正常访问网站，浏览网页、在线听音乐看电影或者是参与论坛发帖，假定可排除线路和硬件故障的情况下，突然发现网页打不开或打开连接服务器困难，正在游戏的用户掉线等现象，则说明很有可能是遭受了DDOS攻击，具体判定方法如下：</DIV>
<DIV>1、&nbsp; 服务器端分析方法</DIV>
<DIV>（1）SYNFlood攻击判定</DIV>
<DIV>A：网上邻居-&gt;右键选“属性”-&gt;双击网卡，每秒收到的包数量大于500。</DIV>
<DIV>B：开始-&gt;程序-&gt;附件-&gt;命令提示符-&gt;C:\&gt;netstat –na，观察到大量的SYN_RECEIVED的连接状态。</DIV>
<DIV>C：网线插上后，服务器立即凝固无法操作，拔出后有时可以恢复，有时候需要重新启动机器才可恢复。</DIV>
<DIV>（2）TCP多连接攻击判定</DIV>
<DIV>开始-&gt;程序-&gt;附件-&gt;命令提示符-&gt;C:\&gt;netstat –na，若观察到多个IP地址与本机的服务端口建立了几十个以上的ESTABLISHED状态的连接。</DIV>
<DIV>2、客户端现象</DIV>
<DIV>（1）用户无法访问网站页面或打开过程非常缓慢。</DIV>
<DIV>（2）正在访问的用户突然变得非常缓慢甚至中断。</DIV>
<DIV>&nbsp;<FONT color=#ff00ff>二、解决方案</FONT></DIV>
<DIV>多年的统计数据表明，想彻底解决DDOS是几乎不可能的，就好比治疗感冒一样，我们可以治疗，也可以预防，但却无法根治，但我们若采取积极有效的防御方法，则可在很大程度上降低或减缓生病的机率，防治DDOS攻击也是如此，拥有充足的带宽和配置足够高的主机硬件是必需的，那么什么算是充足的带宽呢？一般来说至少应该是100M共享，那么什么算配置足够高的主机硬件呢？一般来说至少应该是P4 2.4G的CPU、512M内存和Intel等品牌网卡。拥有此配置的带宽和主机理论上可应对每秒20万以上的SYN攻击，但这需要借助于专业配置和专用软件才可实现，默认情况下，绝大多数服务器难以抵御每秒1000个以上SYN的攻击。</DIV>
<DIV>&nbsp;1、免费DDOS解决方案</DIV>
<DIV>通过优化Windows 2000或2003系统的注册表，可有效对抗每秒约1万个左右的SYN攻击，方法是把以下文本内容存盘为antiddos.reg然后导入注册表并重新启动即可，当然也可从地址 <A href="http://www.bingdun.com/tools/antiddos.reg" target=_blank><FONT color=#000000>http://www.bingdun.com/tools/antiddos.reg</FONT></A> 直接下载antiddos.reg文件。</DIV>
<DIV>Windows Registry Editor Version 5.00</DIV>
<DIV>&nbsp;</DIV>
<DIV>[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]</DIV>
<DIV>"SynAttackProtect"=dword:00000002</DIV>
<DIV>"TcpMaxHalfOpen"=dword:000001f4</DIV>
<DIV>"TcpMaxHalfOpenRetried"=dword:00000190</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp; 此方案的优点是，采用系统自身的能力来解决问题，而无需任何花费，缺点是只能抵御每秒少于10000的SYN攻击，并且无法解决TCP多连接攻击。</DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=426" /> 
	  <id>http://www.openx.cn/default.asp?id=426</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[当好主人办好奥运 迎奥运倒计时一周年动员誓师大会举行]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-07-25T21:43:42+08:00</updated>
	  <published>2007-07-25T21:43:42+08:00</published>
		  <summary type="html"><![CDATA[<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在离2008年奥运会开幕还有380天的时间，举办奥运会是中华民族历史上具有重要意义的大事，标志着我们国家综合实力的增强，标志着我们国家国际地位的提高，标志着改革开放后中国人民正在以朝气蓬勃、昂扬向上的精神风貌昂首阔步走向世界。百年奥运梦想，百年的期待向往，终于要在我们这一代人的手中实现了，我们深感责任重大、使命光荣。</P>
<P>&nbsp;</P>
<P>为记念这一历史时刻特在日志上放了一个 北京2008奥运倒计时牌.</P>
<P>&nbsp;</P>
<P>原文:http://www.beijing2008.cn/bocog/bocognews/headlines/n214114723.shtml</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=425" /> 
	  <id>http://www.openx.cn/default.asp?id=425</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[WEB网络负载平衡方案(转)]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-07-20T21:52:37+08:00</updated>
	  <published>2007-07-20T21:52:37+08:00</published>
		  <summary type="html"><![CDATA[一、网络负载平衡的优点<BR>　　1.网络负载平衡允许你将传入的请求传播到最多达32台的服务器上，即可以使用最多32台服务器共同分担对外的网络请求服务。网络负载平衡技术保证即使是在负载很重的情况下它们也能作出快速响应。<BR>　　2.网络负载平衡对外只须提供一个IP地址（或域名）。<BR>　　3.如果网络负载平衡中的一台或几台服务器不可用时，服务不会中断。网络负载平衡自动检测到服务器不可用时，能够迅速在剩余的服务器中重新指派客户机通讯。此保护措施能够帮助你为关键的业务程序提供不中断的服务。可以根据网络访问量的增多来增加网络负载平衡服务器的数量。<BR>　　4.网络负载平衡可在普通的计算机上实现。<BR>　　在Windows Server 2003中，网络负载平衡的应用程序包括Internet信息服务(IIS)、ISA　Server 2000防火墙与代理服务器、VPN虚拟专用网、终端服务器、Windows Media Services（Windows视频点播、视频广播）等服务。同时，网络负载平衡有助于改善你的服务器性能和可伸缩性，以满足不断增长的基于Internet客户端的需求。<BR>　　网络负载平衡可以让客户端用一个逻辑Internet名称和虚拟IP地址（又称群集IP地址）访问群集，同时保留每台计算机各自的名称。<BR>　　下面，我们将在两台安装Windows Server 2003的普通计算机上，介绍网络负载平衡的实现及应用。<BR>二、网络负载平衡的实现<BR>　　这两台计算机中，一台计算机名称为w2003-1，IP地址为202.206.197.190，另一台名为w2003-2，IP地址为202.206.197.191。<BR>　　规划网络负载平衡群集使用的IP地址为202.206.197.195，规划网络负载平衡群集完整的计算机名称为cluster.heinfo.edu.cn。你需要在heinfo.edu.cn域中注册此主机名称并将地址设置为202.206.197.195。如果你没有DNS，可以在需要访问网络负载平衡的客户机（包括网络负载平衡主机）上编辑%systemroot%\system32\drivers\etc目录下的hosts文件，添加一条信息“202.206.197.195&nbsp;&nbsp;&nbsp; cluster.heinfo.edu.cn”，即可解决DNS域名解析的问题。<BR>　　当正式应用时，客户机只需要使用cluster.heinfo.edu.cn或IP地址202.206.197.195来访问服务器，网络服务平衡会根据每台服务器的负载情况自动选择202.206.197.190或者202.206.197.191对外提供服务。<BR>　　网络负载平衡的实现过程如下：<BR>　　在实现网络负载平衡的每一台计算机上，只能安装TCP/IP协议，不要安装任何其他的协议（如IPX协议或者NetBEUI协议），在网络属性中，“网络负载平衡”也不能被选择，这可以从“网络连接属性”中查看。<BR>　　①先进入第一台计算机，以管理员身份登录，从“管理工具”中运行“网络负载平衡管理器”，用鼠标右键单击“网络负载平衡群集”，从出现的菜单中选择“新建群集”，进入“群集参数”界面（图1）。<BR><BR>图1<BR>　　在“IP地址”后面输入规划的群集参数地址202.206.197.195，在子网掩码处使用默认值，在“完整Internet名称”后面输入cluster.heinfo.edu.cn（也可以是其他的名称，但输入的DNS名称必须与输入的IP地址相符）。<BR>　　如果允许远程控制，请选中“允许远程控制”，并在“远程密码”和“确认密码”处输入可以进行远程控制的密码。<BR>②点击“下一步”按钮，进入群集IP地址页面后再进入“端口规则”界面，点击“下一步”按钮，进入“连接”界面（图2）。<BR><BR>图2<BR>　　③在“连接”界面的“主机”栏中输入当前计算机的名称w2003-1，然后点击“连接”按钮，将在“对配置一个新的群集可用的接口”框中显示出连接的计算机的网卡及IP地址。选择与群集IP地址同一网段的地址（用于对外提供网络应用的网卡），然后点击“下一步”按钮，进入设置“主机参数”界面，点击“完成”按钮，系统将自动开始网络负载平衡群集的配置。几分钟后，网络负载平衡群集配置完成。<BR>　　④打开第二台计算机，并以管理员的身份登录进入。<BR>　　注意：在网络负载平衡中的每个节点上，管理员账号的用户名和密码最好一致。<BR>　　⑤然后，在第一台计算机上，用鼠标右键单击新创建的群集，从出现的菜单中选择“添加主机到群集”。将出现“连接”界面，在“主机”中输入第二台计算机的计算机名称，点击“连接”按钮，将会在“对配置群集可用的接口”下面显示出连接的计算机上的网络配置。选择202.206.197.191的网卡，进入主机参数界面，点击“完成”按钮，即可返回网络负载平衡管理器（图3）。<BR><BR>图3<BR>　　⑥关闭网络负载平衡管理器后再进入网络负载平衡管理器。用鼠标右键单击“网络负载平衡群集”，从出现的菜单中选择“连接到现存的”，将会弹出“连接”界面。<BR>　　输入第一台计算机的名称，点击“连接”按钮，在“群集”下面将列出群集的IP地址，选择此IP地址，并点击“完成”按钮，连接群集即可完成。<BR>以后，如果这两台服务器不能满足需求，可以按以上步骤添加第3台、第4台计算机到网络负载平衡中以满足要求。<BR>　三、用IIS服务验证网络负载平衡<BR>　　网络负载平衡配置好后，为了实现某项具体的服务，需要在网络负载平衡的计算机上安装相应的服务。例如：为了实现IIS网站的负载平衡，需要在相应的网络负载平衡的计算机上安装IIS服务。<BR>　　安装网络负载平衡的应用程序时，不需要特别的方法，只需要在配置好网络负载平衡的计算机上安装相应的服务即可。但是为了让每个用户在通过网络负载平衡访问到不同的计算机时，能够访问到一致的数据，需要在网络负载平衡的每台计算机上保持数据的一致性。举例来说：实现了两个节点的IIS的网络负载平衡，为了保证两个网站内容的一致性，除了这两个IIS服务器的配置相同外，相应的网站数据必须一致。<BR>　　为了检验网络负载平衡，我们可以通过IIS来进行验证，其他的一些应用如终端服务、Windows Media服务与IIS的应用相类似。<BR>　　在网络负载平衡的每一台计算机上安装IIS服务，方法如下：<BR>　　在“添加/删除程序”中，点击“添加Windows组件”，进入Windows组件向导，双击“应用程序服务器”，进入“应用程序服务器”（图4）。 <BR><BR>图4<BR>　　选中ASP.NET、Internet信息服务及应用网络COM+访问后，即可开始安装IIS服务。<BR>　　安装之后，进入第一台计算机的inetpub\wwwroot目录，新建一个文本文件，输入以下内容：<BR>　　&lt;html&gt;<BR>　　This win2003-1<BR>　　&lt;/html&gt;<BR>　　然后将它保存为default.htm文件。这个网页在IE中将显示如下内容：<BR>　　This w2003-1<BR>　　在第二台计算机的inetpub\wwwroot目录，新建一个文本文件，并输入下面的内容：<BR>　　&lt;html&gt;<BR>　　This win2003-2<BR>　　&lt;/html&gt;<BR>　　这个网页在IE浏览器中将显示“This w2003-2”，随后将这个文件以default.htm名称保存。<BR>　　然后，在其他计算机上的IE浏览器中键入http //cluster.heinfo.edu.cn，将会显示为“This win2003-1”或“This win2003-2”，根据网络的负载，网络负载平衡会自动转发到第一台计算机或第二台计算机。为了验证效果，你可以在浏览的时候，拔掉第一台计算机的网线或拔掉第二台机器的网线，将会发现浏览到的将是不同内容。当然，我们只是测试的时候，为了验证网络负载平衡的效果，两个网站的内容不一致，而在正式应用的时候，网络负载平衡群集的每个节点计算机的内容将是一致的，这样，不管使用那一个节点响应，都保证访问的内容是一致的。<BR>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=424" /> 
	  <id>http://www.openx.cn/default.asp?id=424</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[蛙泳进步了~哈哈]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-07-09T12:57:09+08:00</updated>
	  <published>2007-07-09T12:57:09+08:00</published>
		  <summary type="html"><![CDATA[<P>记得最后一次游泳应该是04年的事情了.那时候还只能勉强游十来米就下沉了.</P>
<P>&nbsp;</P>
<P>昨天应邀跟朋友游了一回哈哈,居然发现自己的蛙泳进步了,停都没停的可以游半场,还可以拐弯的哈哈.只奇怪的是潜水不行了,潜下去游两下就浮起来了~丫丫的~</P>
<P>&nbsp;</P>
<P>不过现在蛙泳还可以一边游一边讲话聊天嘎嘎~~~~~</P>
<P>&nbsp;</P>
<P>很想对当年的体育老师说:哈哈,老师我游泳可以考满分啦~~~~~哈哈.(当年勉强及格,还好没挂科)</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=423" /> 
	  <id>http://www.openx.cn/default.asp?id=423</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[转贴-最远30公里！-DIY无线网卡天线大集合(新增大量内容）]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-07-04T08:59:16+08:00</updated>
	  <published>2007-07-04T08:59:16+08:00</published>
		  <summary type="html"><![CDATA[<FONT size=4>&nbsp;&nbsp; <SPAN style="COLOR: royalblue">以下是我花了很大力气从多处收集来的DIY 2.4G WIFI 天线的方案，集中在这里，供网友学习，制作。我在本论坛上提过很多问题，也从回帖里学到了很多的东西，以此帖向各位网友表示感谢！</SPAN><BR>&nbsp; &nbsp; 无线路由器越来越普及，引出的讨论也越来越多。特别是信号强度，接收性的问题相当值得注意。而大家最经常想到、比较可行的办法就是采用增益天线。因此，编者特收集整理相关制作天线的例子，从国内外、从低端到终极，以一种比较客观的角度，展示天线制作的技巧方法、天线的作用有多大、能达到什么样的效果。<BR><BR><SPAN style="COLOR: red">初学者型　奶粉罐天线</SPAN><BR><BR>一、选型<BR><BR>　　先上网收集天线资料，看到很多国外的天线DIYER做出来的WIFI天线真是五花八门！有螺旋天线、有八木天线、有菱形天线、有栅网天线、还有罐头天线......让人看得眼花缭乱。经过再三筛选，最终把制作目标锁定在罐头天线上。选择它为DIY对象主要是因为这种天线取材方便、效率高！十分适合初学者制作。<BR><BR>二、制作<BR><BR>　　圆筒天线之所以取材方便，是由于人人家里必定有铁罐、金属筒之类的东西。笔者就是随便拿了一个奶粉罐制作的。<BR><BR>　　下面是参照外国WIFI网站的图片而画的制作图。<BR><BR><BR>各数据如下：<BR><BR>中心频点＝2.445G<BR>圆筒直径＝127mm<BR>圆筒长度＝111mm<BR>振子长度＝31mm<BR>振子距圆筒底部边距＝37mm<BR><BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/20060607_5.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/20060607_5.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><BR>　　从图片可以看出，馈线的屏蔽网连接金属圆筒，信号通过圆筒反射到振子上，当然振子就是馈线的芯线了，芯线与金属筒是绝缘的，这点必须注意！<BR><BR>　　在参照外国爱好者制作WIFI天线的同时，笔者加入了自己的想法：很多爱好者都喜欢在圆筒加装N座或BNC座，然后在馈线的连接处做对应的N头或BNC头，用于连接。但笔者觉得虽然该方法对使用十分方便，但同时也对信号造成了损耗（估计1－2DBI），尤其在2.4G的频段更加明显！因此，mr7决定把屏蔽网直接焊在圆筒上（焊接前先把外壳打磨光滑），而作为振子的芯线则保留其原来的泡沫绝缘。这样一来把损耗减到最低。有点专线专用的味道了！<BR><BR>　　建议大家最好在焊接前找根直径稍比馈线粗一点的小铜管和热缩套管，先把铜管套在馈线上，然后跟屏蔽网一起焊牢在金属圆筒的外壳上，然后用热风筒把热缩套管来回吹多次，把馈线固定在铜管上，这样一来可以很好的减低由于调节天线时给馈线和振子带来的影响！<BR><BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/20060607_4.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/20060607_4.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/20060607_1.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/20060607_1.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><BR>　　馈线笔者是选用双屏蔽的RG-58电缆，接头是SMA母头，用于接在WIFI的AP上面。一般来说馈线直径越粗越好，而且长度要尽量短，不然馈线过长所造成的损耗比天线增益还大，失去DIY的意义！笔者使用的馈线直径由于比较小，所以长度取在1米这个数值。良好的馈线是制作天线的关键，2.4G频段的信号在线材中的损耗和泄漏比400Mhz的大很多，所以馈线必须用屏蔽网加铝薄双屏蔽，而且芯线要尽量粗。<BR><BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/20060607_6.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/20060607_6.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><BR>三、测试<BR><BR>　　开始的时候，我浏览外国爱好者们讨论WIFI 天线增益如何如何的高，改善情况如何如何的好，总觉得有点吹嘘的感觉。但当实际测试时发现使用效果真的发生了天大的变化!<BR><BR>　　在这次测试中，我使用的设备是D-LINK的DWL-G810（800AP）五合一AP，该AP可以通过软件刷机同时拥有AP、网桥、中继等功能，发射功率是32mW。<BR><BR>　　测试地点时家里阳台，在防盗网内（没办法，金属圆筒直径粗了点，伸不出防盗网外）。按照经验，一般WIFI设备放在防盗网内使用的效果时十分差的，因此mr7也没抱多大希望。在使用原配天线时，mr7用AP搜索到3－4个外界信号（正常现象），当换上自制的WIFI圆筒天线后惊奇地发现居然可以收到7－8个外界信号，接收数目是更换天线前多出100％左右，真是出乎意料之外！不禁暗暗为自己制作的天线叫好。<BR><BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/20060607_3.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/20060607_3.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/20060607_2.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/20060607_2.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><BR>小结：<BR><BR>1、该天线的确适合初学者业余制作，大家不要被未尝试过的制作而难倒，要相信自己相信科学。笔者也是新手，之前也没抱多少希望制作天线的，当果断迈出第一步之后，你会尝试到实践带来的无穷乐趣和知识！<BR><BR>2、多与身旁的同好们交流心得，听取各方意见，边做边学，这样会少走弯路。<BR><BR>3、制作天线时的尺寸和用料是成功的关键，要把握好尺寸的精确度，材料要选质量过关的。在这次制作中我每次裁剪时都要反复量度尺寸，精确度起码是mm级。材料方面，我用的是厚底的铁罐，而馈线则是进口的双屏蔽电缆。<BR><BR>4、由于附近比较多写字楼，自然用无线网络的公司也比较多，同时楼宇之间距离比较宽，所以在家中的阳台可以收到这么多网络的信号，这一点再次验证了<SPAN style="COLOR: red">“好机不如好天线，好天线不如好传播！”</SPAN>这个经验。<BR><BR>5、根据玩家提供的数据，该WIFI圆筒天线的增益在12DBI左右。假如改进一下，在天线外口加一个喇叭状的金属圆环，该天线还可以增加3DBI的增益，大家不妨试试！<BR><BR>　　同时说明一下该天线不适合担当无线中继功能的AP用，建议做无线中继时最好使用高增益的同轴全向天线。<BR><BR><SPAN style="COLOR: red">楼主提示：需要说明的是，微波天线的制作精度相当高，起码要达到毫米级，否则很容易导致天线不可用，由于每个人得到的圆筒不同，这里有一个圆筒天线的通用计算器，可以精确的计算各参数，从而使这款天正在制作上达到实用化！</SPAN><BR></FONT><A href="http://www.saunalahti.fi/elepal/antenna2calc.php" target=_blank><FONT color=#000000 size=4>http://www.saunalahti.fi/elepal/antenna2calc.php</FONT></A><BR><FONT size=4>另外，在桶型天线的外围加一个喇叭口，能使增益增加3db。具体见下面的“镀锌铁皮桶天线”<BR><BR><SPAN style="COLOR: red">加强改进型　漏勺天线</SPAN><BR><BR>　　如果无线路由器或无线AP不适合加装增益天线，那么我们该如何增加无线信号的传输距离和效率呢?显然，只有给无线网卡增加增益天线了。下面笔者以USB无线网卡为基础元件，介绍一下如何制作无线网卡增益天线。<BR><BR>一、寻找材料<BR><BR>　　首先寻找有规则抛物面的金属器具，那么你会想到什么呢?很快你就会想到家里的铁锅，但是铁锅质量较重且不适合固定和安装，也不美观。好在，我们的祖先在千年以前就为我们发明了制作增益天线的好物件“漏勺”(图3)，是不是有点疑问?马上你就知道它除了可以用来捞饺子和面条，还能用来制作增益天线。<BR><BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/20060607_2_1.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/20060607_2_1.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><BR>二、准备工具<BR><BR>　　制作过程中可能用到的工具有手锯、尖头钳子、橡胶管以及USB连接线等。手锯是用于将漏勺把锯掉或让它长短合适。尖头钳子则用于在漏勺中心为橡胶管剪一个合适的缺口(图4)。橡胶管的作用就是根据焦点的距离将USB接头固定在漏勺上;而USB连接线就是为了将无线网卡与电脑连接起来。<BR><BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/20060607_1_1.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/20060607_1_1.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><BR>当然，你还是要准备好一把尺子，如果必要也需要纸、笔和计算器，以测量和计算焦点位置。<BR><BR>三、计算焦点位置<BR><BR>　　确定了焦点位置才可以确定胶皮管的长度，才能固定胶皮管和无线网卡。<BR><BR>　　计算出焦点距离漏勺底部中心(胶皮管安放处)的长度，要注意的是要考虑USB网卡的长度，因为USB无线网卡的天线是内置的。<BR><BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/20060607_4_1.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/20060607_4_1.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><BR>&nbsp; &nbsp; 打开USB无线网卡，内置天线就位于左侧白色位置。这样只要保证USB无线网卡的底部位于焦点位置即可，如果USB无线网卡本身长度不够，则需要用胶皮管来支撑USB无线网卡。<BR>四、固定USB无线网卡<BR><BR>　　在确定焦点位置之后，就可以对USB无线网卡进行固定了。一定要注意测量好USB网卡的长度和胶皮管的长度，二者连接后的长度之和应等于计算好的焦点距离。<BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/20060607_3_1.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/20060607_3_1.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR>五、为天线制作支架<BR><BR>　　可以使用漏勺原来的竹板作为支撑，不过每次使用都需要找合适的位置固定，这种情况下就需要给天线制作一个支架，做一个三脚支架就很牢固。材料可以任意选择，只要支架材料与漏勺天线绝缘即可。例如，可以使用三只竹筷子做成一个支架，当然你也可以奢侈一点，用废旧的照相机的三脚架来做支架。<BR><BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/20060607_5_1.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/20060607_5_1.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><BR>　　经过以上五个步骤，一个超酷的USB无线网卡增益天线就制作成功了，使用USB连接线与你的电脑相连，你就可以体验自制增益天线给你带来的“快感”了。<BR>&nbsp; <SPAN style="COLOR: blue">楼主提示：以上是转贴，我觉得漏勺的反射面并不大，你可以买微波炉用的铝箔，贴在漏勺表面，反射性能会更好。</SPAN><BR>&nbsp; <SPAN style="COLOR: red">另一张漏勺天线图:</SPAN><BR>&nbsp; 这是国外同行使用中国油漏来制作的，他使用的是一个价格便宜的USB接口的无线网卡，便于连接，因为高频信号对馈线质量和工艺要求极高，使用USB口便于摆位。通过简单的焦点计算公式得出焦点位置，固定，一个提升十多点信号值的高增益定向天线就做好了，如果发射端也做一个，估计室外无阻碍通讯可达2公里左右。<BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_06821c9034c0b9f.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_06821c9034c0b9f.jpg" onload="if(this.width>'800')this.width='800';" border=0> <BR>小结：<BR>这种方法也是根据我们所介绍的制作增益天线的基本原理，将USB无线网卡的原有天线改装为效果更好的增益天线，关键也在于要选择合适的金属抛物面材料，计算好抛物面焦点，其特点是效果显著、简单、零成本，是从末端增强无线信号收发效果的最佳解决方案。<BR><BR><SPAN style="COLOR: deeppink">终极BT型　卫星接收器天线</SPAN><BR><BR>　　奶粉罐天线、漏勺天线都看过了，觉得还不够强劲？国外狂热的无线网络爱好者成功的DIY了一台无线信号发射器，并且通过旧的10英尺卫星天线建立了一个125英里范围的无线网络区域。下面我们就来详细看一下这究竟是如何实现的。<BR><BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/000112972.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/000112972.jpg" onload="if(this.width>'800')this.width='800';" border=0><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/000112973.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/000112973.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><BR>&nbsp; 工具准备好了，我们就来开始制作吧。首先将一根比较粗的铜丝通过工具折成下图的样子。<BR><BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/000112977.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/000112977.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/000112978.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/000112978.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><BR>整个天线的主题部分是一个银制的连接器，铜质天线将通过这个连接器与底板相连。<BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/000112979.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/000112979.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><BR>天线通过连接器固定<BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/000112982.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/000112982.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><BR>天线安装的位置<BR><BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/000112983.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/000112983.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><BR>&nbsp; &nbsp; 天线通过银质连接器固定在底板上，需要注意的是，天线不能和底板接触，因此在安装的时候可以借助一些支撑工具，保持天线和底板的距离。<BR>&nbsp; 接下来就是天线的组装工作了，利用旧的卫星接受天线我们很容易的就装好了这台无线网络信号发射器。<BR><BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/000112985.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/000112985.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR><BR>卫星天线的高频头<BR><IMG onclick="if(this.width>=800) window.open('http://www.pconline.com.cn/network/pingce/0606/pic/000112986.jpg');" src="http://www.pconline.com.cn/network/pingce/0606/pic/000112986.jpg" onload="if(this.width>'800')this.width='800';" border=0><BR>连接天线的底座<BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_2486c31f839ed09.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_2486c31f839ed09.jpg" onload="if(this.width>'800')this.width='800';" border=0> <BR><BR>天线和底座的连接<BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_2fb14da269987ff.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_2fb14da269987ff.jpg" onload="if(this.width>'800')this.width='800';" border=0> <BR>最终成品<BR>　　从上面的图片我们可以看到，当摆放在水平面上的时候，接收器的盆与水平成了大概45度的角度，而与接收器的盆平行的天线也和地面成了45度。<BR><BR>　　对于DIY的成果，我们也做了简单的测试，请看下图。<BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_2b7e5b683fe2afd.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_2b7e5b683fe2afd.jpg" onload="if(this.width>'800')this.width='800';" border=0> <BR>　　从测试软件中看，CH6的信号发涞阍赥own B，距离测试点英里；CH5的信号发射点在Town A，距离测试点2.4英里；而在CH1的两个AP桥接自Town A和距离发射点2.6英里的Town C。可以看到，自制的无线信号发射器覆盖范围还是很广的。<BR><BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_6d32090ad66c887.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_6d32090ad66c887.jpg" onload="if(this.width>'800')this.width='800';" border=0> 更多AP测试<BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_057ae18b2a5e209.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_057ae18b2a5e209.jpg" onload="if(this.width>'800')this.width='800';" border=0> <BR><BR>安装在车上，便于移动<BR>小结：<BR><BR>　　虽然现在DIY之风流行，不过这个变态型的无线信号发射器的制作对于一般用户稍显难了一些，并且对制作者网络和动手能力要求较高，而最后部分的的测试，更是普通用户无法完成的，同时如此大面积的无线网络覆盖在安全性方面也存在一些问题，不过这种DIY的精神还是只等推崇的，试想一下，今后在广袤的田野上使用笔记本通过无线网络聊天的情景是多么的惬意。<BR><BR>还有其它的天线：<BR><BR><SPAN style="COLOR: red">2.4G无线网卡天线馈源(设计图见下面菱形天线）</SPAN><BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_e4e61b39810f54c.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_e4e61b39810f54c.jpg" width=800 onload="if(this.width>'800')this.width='800';" border=0> <BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_00077e22fde8932.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_00077e22fde8932.jpg" width=800 onload="if(this.width>'800')this.width='800';" border=0> <BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_6a4a32452612606.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_6a4a32452612606.jpg" width=800 onload="if(this.width>'800')this.width='800';" border=0> <BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_1d67de5ba6daff5.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_1d67de5ba6daff5.jpg" width=800 onload="if(this.width>'800')this.width='800';" border=0> <BR><SPAN style="COLOR: red">易拉罐天线:</SPAN><BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_c9e99bf09cda270.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_c9e99bf09cda270.jpg" onload="if(this.width>'800')this.width='800';" border=0> <BR><SPAN style="COLOR: red">铁锅天线:</SPAN><BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_667723211097377.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_667723211097377.jpg" onload="if(this.width>'800')this.width='800';" border=0> <BR><SPAN style="COLOR: red">烤盘做的抛物面天线，增益8db</SPAN><BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_8b61df2d1d2b879.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_8b61df2d1d2b879.jpg" onload="if(this.width>'800')this.width='800';" border=0> <BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_69ac661013b6ecd.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_69ac661013b6ecd.jpg" onload="if(this.width>'800')this.width='800';" border=0> <BR><SPAN style="COLOR: red">镀锌铁皮桶天线：</SPAN><BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_0a0507846c5443c.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_0a0507846c5443c.jpg" onload="if(this.width>'800')this.width='800';" border=0> <BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_8839cf6e23acc8b.gif');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_8839cf6e23acc8b.gif" onload="if(this.width>'800')this.width='800';" border=0> <BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_122e003de62dfaf.gif');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_122e003de62dfaf.gif" onload="if(this.width>'800')this.width='800';" border=0> <BR><BR>　 </FONT><FONT size=4><SPAN style="COLOR: coral">lg=176mm<BR>　　lo=122mm (2.45G)<BR>　　90mm&lt;D&lt;110MM<BR>　　D2&gt;170mm<BR>　　R1=D<BR>　　R2=D2<BR>　　R1/R2是半径，D/D2是直径</SPAN><BR><SPAN style="COLOR: red">铝盆天线：</SPAN><BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_4c6ff16044d48ed.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_4c6ff16044d48ed.jpg" onload="if(this.width>'800')this.width='800';" border=0> <BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_aa33fb5a575f81d.gif');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_aa33fb5a575f81d.gif" onload="if(this.width>'800')this.width='800';" border=0> <BR><BR><SPAN style="COLOR: red">菱形天线/蚊香盘/铁皮桶盖天线设计图：</SPAN><BR><B></B><BR><IMG onclick="if(this.width>=800) window.open('http://bbs.deepin.org/attachment/Mon_0702/96_204735_95cd5bd95496279.jpg');" src="http://bbs.deepin.org/attachment/Mon_0702/96_204735_95cd5bd95496279.jpg" onload="if(this.width>'800')this.width='800';" border=0> <BR>这款天线体积小巧，然而效果非常好！<BR></FONT><SPAN style="COLOR: blue"><FONT size=4>&nbsp; 楼主提示：要说最好的定向天线，当然是成品的卫星抛物面天线了，此天线不贵，听说连天线带接收机，总共还不到300元，可以只单买一个天线使用。<BR>&nbsp; <BR>&nbsp; &nbsp; 各位网友制作天线时应注意： 微波天线精度很高，很小的尺寸误差即可使做出的天线不可用,这就是为什么网站上说此天线多么多么好，而实际做出的天线却未必好的原因，所以，要 </FONT>
<DIV style="FILTER: glow(color=red,strength=2); WIDTH: 255px">精确计算，精确施工</DIV>。</SPAN><BR><BR><BR><SPAN style="COLOR: red">全文总结：</SPAN><BR><BR>　　科技是不断不发展的，而我们DIY的精神更是永无止境。多么强大的天线，都有它鞕长莫及的距离，而人的思想却是无边界的。看了上面这些由浅到深的天线DIY案例，您觉得如何呢？欢迎大家展开热烈的讨论。<BR><BR>以下是国外的DIY天线的网站：<BR><BR><SPAN style="COLOR: orangered"><A href="http://www.saunalahti.fi/elepal/antennie.html" target=_blank><FONT color=#000000>http://www.saunalahti.fi/elepal/antennie.html</FONT></A><BR><A href="http://www.frars.org.uk/cgi-bin/render.pl?pageid=1058" target=_blank><FONT color=#000000>http://www.frars.org.uk/cgi-bin/render.pl?pageid=1058</FONT></A><BR><A href="http://martybugs.net/wireless/biquad/" target=_blank><FONT color=#000000>http://martybugs.net/wireless/biquad/</FONT></A><BR><A href="http://trevormarshall.com/waveguides.htm" target=_blank><FONT color=#000000>http://trevormarshall.com/waveguides.htm</FONT></A><BR><A href="http://seattlewireless.net/index.cgi/CardboardHorn" target=_blank><FONT color=#000000>http://seattlewireless.net/index.cgi/CardboardHorn</FONT></A></SPAN><BR><BR>本贴内容太多，又开了一个新贴：USB无线网卡的改造:<BR><A href="http://bbs.deepin.org/read.php?tid=116019&fpage=2" target=_blank><FONT color=#000000>http://bbs.deepin.org/read.php?tid=116019&fpage=2</FONT></A><BR><BR>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=422" /> 
	  <id>http://www.openx.cn/default.asp?id=422</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[变形金钢 官网]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-06-30T07:14:27+08:00</updated>
	  <published>2007-06-30T07:14:27+08:00</published>
		  <summary type="html"><![CDATA[<A href="http://www.transformersmovie.com/">http://www.transformersmovie.com/</A>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=421" /> 
	  <id>http://www.openx.cn/default.asp?id=421</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[格式化数据和DataBinder.Eval用法范例 备忘]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2007-06-28T09:41:02+08:00</updated>
	  <published>2007-06-28T09:41:02+08:00</published>
		  <summary type="html"><![CDATA[DataBinder.Eval 它带有三个参数：数据项的命名容器、数据字段名称和格式化字符串。 在模板列表如DataList、DataGrid、或 Repeater，命名容器总是Container.DataItem。 Page 是另一个可以被DataBinder.Eval使用的命名容器。 <BR>&lt;%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %&gt; 
<P>格式化字符串参数是可选的。如果忽略参数，DataBinder.Eval 返回对象类型的值，</P>
<P><BR>//显示二位小数<BR>//&lt;%# DataBinder.Eval(Container.DataItem, "UnitPrice", "${0:F2}") %&gt; </P>
<P>//{0:G}代表显示True或False</P>
<P><BR>//&lt;ItemTemplate&gt;<BR>// &lt;asp:Image Width="12" Height="12" Border="0" runat="server"<BR>// AlternateText='&lt;%# DataBinder.Eval(Container.DataItem, "Discontinued", "{0:G}") %&gt;'<BR>// ImageUrl='&lt;%# DataBinder.Eval(Container.DataItem, "Discontinued", "~/images/{0:G}.gif") %&gt;' /&gt;<BR>// &lt;/ItemTemplate&gt;</P>
<P>&nbsp;</P>
<P><STRONG>转换类型</STRONG><BR>Specifier Type &nbsp;&nbsp;&nbsp;&nbsp;Format&nbsp; &nbsp;Output (Passed Double 1.42) &nbsp;Output (Passed Int -12400) <BR>c&nbsp; Currency &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {0:c} &nbsp;&nbsp;&nbsp; $1.42&nbsp;&nbsp;&nbsp;&nbsp; -$12,400 <BR>d&nbsp; Decimal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;{0:d} &nbsp;&nbsp; System.FormatException&nbsp;&nbsp;-12400 <BR>e&nbsp; Scientific &nbsp;&nbsp;&nbsp;&nbsp; {0:e} &nbsp;&nbsp; 1.420000e+000 &nbsp;&nbsp;&nbsp;-1.240000e+004 <BR>f&nbsp; Fixed point&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0:f} &nbsp;1.42&nbsp;&nbsp;&nbsp;&nbsp;-12400.00 <BR>g&nbsp; General &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {0:g} &nbsp;1.42 &nbsp;&nbsp;&nbsp;&nbsp;-12400 <BR>n&nbsp; Number with commas for thousands &nbsp;{0:n} &nbsp;1.42 &nbsp;&nbsp;&nbsp;&nbsp;-12,400 <BR>r&nbsp; Round trippable &nbsp;&nbsp;&nbsp;{0:r} &nbsp;1.42 &nbsp;&nbsp;&nbsp;&nbsp;System.FormatException <BR>x&nbsp; Hexadecimal &nbsp;&nbsp;&nbsp;{0:x4} &nbsp;System.FormatException &nbsp;&nbsp;cf90 </P>
<P><BR>{0:d} 日期只显示年月日<BR>{0:yyyy-mm-dd} 按格式显示年月日</P>
<P><BR>样式取决于 Web.config 中的设置</P>
<P>{0:c}&nbsp; 或 {0:￡0,000.00} 货币样式&nbsp; 标准英国货币样式<BR>&lt;system.web&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;globalization requestEncoding="utf-8" responseEncoding="utf-8" <FONT color=#ff0066>culture="en-US" uiCulture="en-US"</FONT> /&gt;<BR>&lt;/system.web&gt;<BR>显示为 ￡3,000.10</P>
<P>{0:c}&nbsp; 或 string.Format("{0:C}", price); 中国货币样式<BR>&lt;system.web&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;globalization requestEncoding="utf-8" responseEncoding="utf-8" <FONT color=#ff0066>culture="zh-cn" uiCulture="zh-cn"</FONT> /&gt;<BR>&lt;/system.web&gt;<BR>显示为 ￥3,000.10</P>
<P>{0:c}&nbsp; 或 string.Format("{0:C}", price); 美国货币样式<BR>&lt;system.web&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;globalization requestEncoding="utf-8" responseEncoding="utf-8" /&gt;<BR>&lt;/system.web&gt;<BR>显示为 $3,000.10</P>
<P>-------------------------------------------------</P>
<P>一、DataBinder.Eval的基本格式 在绑定数据时经常会用到这个句程序：<!--DataBinder.Eval(Container.DataItem,"xxxx"-->或者<!--DataBinder.Eval(Container,"DataItem.xxxx"--> 今天又学到一种，而且微软也说这种方法的效率要比以上两种高。 <!--((DataRowView)Container.DataItem)["xxxx"-->很有用的，这样可以在前台页面做好多事情了。 还要记住要这样用必须要在前台页面导入名称空间System.Data,否则会生成错误信息。 <!--Import namespace="System.Data"-->这种用法其实和<!--((DictionaryEntry)Container.DataItem).Ke-->是一个道理。 Text='<!--DataBinder.Eval(Container.DataItem, "字段")-->' 这样的方法是最快的 Text='<!--GetPrice()-->' 也可以绑定方法，但方法要是public的 Text='<!--"CarDetails.aspx?CarID=" + DataBinder.Eval(Container.DataItem, "CarID")-->' 还可以连接多个字段 关键是Container这个东西，它比较神秘。它的名称空间是System.ComponentModel。对于它我还需要进一步理解。 二、DataBinder.Eval实现判断选择 <?XML:NAMESPACE PREFIX = ASP /><ASP:TEMPLATECOLUMN headertext="性别"><ITEMTEMPLATE></ITEMTEMPLATE><!--DGFormatSex(Convert.ToString(DataBinder.Eval(Container.DataItem,"xb")))--></ASP:TEMPLATECOLUMN>cs里定义DGFormatSex方法 protected string DGFormatSex(string xb) { if(xb == "1") return "男"; else return "女"; } DataBinder.Eval用法范例 DataBinder.Eval用法范例 //显示二位小数 //<!--DataBinder.Eval(Container.DataItem, "UnitPrice", "${0:F2}")--> //{0:G}代表显示True或False //<ITEMTEMPLATE></ITEMTEMPLATE> // <ASP:IMAGE height="12" width="12" runat="server" border="0" alternatetext='<%# DataBinder.Eval(Container.DataItem, "Discontinued", "{0:G}") %>' imageurl='<%# DataBinder.Eval(Container.DataItem, "Discontinued", "~/images/{0:G}.gif") %>'></ASP:IMAGE>// //转换类型 ((string)DataBinder.Eval(Container, "DataItem.P_SHIP_TIME_SBM8")).Substring(4,4) {0:d} 日期只显示年月日 {0:yyyy-mm-dd} 按格式显示年月日 {0:c} 货币样式<BR></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=420" /> 
	  <id>http://www.openx.cn/default.asp?id=420</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[SQL 函数备忘]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2007-06-27T22:14:37+08:00</updated>
	  <published>2007-06-27T22:14:37+08:00</published>
		  <summary type="html"><![CDATA[<FONT color=#ff0000><STRONG>串函数<BR></STRONG></FONT><FONT color=teal>ASCII(char)</FONT><BR>返回char首字母的ASCII代码值<BR><FONT color=teal>Char(int)</FONT><BR>返回ASCII值为int所对应的字符<BR><FONT color=teal>Charindex(char1,char2)</FONT><BR>返回char1在char2中的开始位置<BR><FONT color=teal>Patindex(char1,char2)</FONT><BR>返回字符串char1在char2中的开始位置<BR><FONT color=teal>Difference(char1,char2)</FONT><BR>返回char1与char2两字符的相似性,返回整数<BR><FONT color=teal>Left(char,int)</FONT><BR>返回字符char的左边int个字符<BR><FONT color=teal>Right(char,int)</FONT><BR>返回字符char的右边int个字符<BR><FONT color=teal>Substring(char,int1,int2)</FONT><BR>返回字符char从int1个位置起,int2个字符<BR><FONT color=teal>Stuff(char1,int1,int2,char2)</FONT><BR>将char1从int1起,int2个字符替换为char2<BR><FONT color=teal>Len(char)</FONT><BR>返回Char的长度<BR><FONT color=teal>Lower(char)</FONT><BR>转化为小写<BR><FONT color=teal>Upper(char)</FONT><BR>转化为大写<BR><FONT color=teal>Ltrim(char)</FONT><BR>去前空格<BR><FONT color=teal>Rtrim(char)</FONT><BR>去后空格<BR><FONT color=teal>Reverse(char)</FONT><BR>倒置字符串<BR><FONT color=teal>Space(int)</FONT><BR>返回int个空格<BR><FONT color=teal>STR(float,int1,int2)</FONT><BR>数字转化为字符,int1为字符长度,int2为小数点后位数<BR><BR><FONT color=red><B>日期函数</B></FONT><BR><FONT color=teal>Getdate()</FONT><BR>返回当前日期的日期和时间<BR><FONT color=teal>Dateadd(datepart,number,date)</FONT><BR>将datepart的number加到date上<BR><FONT color=teal>Datediff(datepart,date1,date2)</FONT><BR>计算两个日期之间datepart的个数<BR><FONT color=teal>Datename(datepart,date)</FONT><BR>以字符值返回列出日期的datepart<BR><FONT color=teal>Datepart(datepart,date)</FONT><BR>以一个整数返回列出日期的datepart<BR>附:<BR>date为表中日期字段datepart为日期部件.<BR>datepart字符如下:<BR>年:yy或yyyy<BR>季度:qq或q<BR>月:mm或m<BR>年之日:dy或y<BR>月之日:dd或d<BR>年之星期:wk或ww<BR>周之星期:dw<BR>小时:hh<BR>分钟:mi或n<BR>秒:ss或s<BR>毫秒:ms<BR><BR><FONT color=red><B>数学函数</B></FONT><BR><FONT color=teal>Pi()</FONT><BR>返回圆周率PI<BR><FONT color=teal>Radians(num)</FONT><BR>返回度数值num的弧度值<BR><FONT color=teal>Degrees(num)</FONT><BR>返回弧度值num对应的度数值<BR><FONT color=teal>Sin(float),Cos(float),Tan(float),Cot(float)</FONT><BR>返回角度float的正弦,余弦,正切,余切值<BR><FONT color=teal>Asin(float),Acos(float),Atan(float)</FONT><BR>返回角度的弧度,它的反正弦,反余弦,反正切是一个浮点值<BR><FONT color=teal>Exp(float)</FONT><BR>返回float的指数值<BR><FONT color=teal>Floor(num)</FONT><BR>返回小于或等于所给数字表达式num的最大整数<BR><FONT color=teal>Log(float)</FONT><BR>返回float的自然对数<BR><FONT color=teal>Power(num,int)</FONT><BR>返回给定表达式num的int次方的值<BR><FONT color=teal>Round(num,int)</FONT><BR>返回num四舍五入后长度为int位的值<BR><FONT color=teal>Sign(num)</FONT><BR>返回num的正(+1),零(0)或负(-1)号<BR><FONT color=teal>Sqrt(float)</FONT><BR>返回给定表达式float的平方根<BR><BR><FONT color=red><B>数据转换函数</B></FONT><BR><FONT color=teal>ca&#115;t(expression as data_type)</FONT><BR><FONT color=teal>CONVERT(data_type[(length)],expression[,style])</FONT><BR>expression为任何有效sql表达式<BR>data_type为数据类型<BR>length为nchar,nvarchar,char,varchar,binary或varbinary数据类型的可选参数<BR>style是日期格式样式<BR>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=419" /> 
	  <id>http://www.openx.cn/default.asp?id=419</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[什么是ARP?如何防范ARP欺骗?]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-06-22T14:06:02+08:00</updated>
	  <published>2007-06-22T14:06:02+08:00</published>
		  <summary type="html"><![CDATA[<DIV style="FONT-SIZE: 12px"><FONT size=+0>什么是ARP?<BR>&nbsp; &nbsp; ARP（Address Resolution Protocol，地址解析协议）是一个位于TCP/IP协议栈中的低层协议，负责将某个IP地址解析成对应的MAC地址。<BR><BR>什么是ARP欺骗?<BR>&nbsp; &nbsp; 从影响网络连接通畅的方式来看，ARP欺骗分为二种，一种是对路由器ARP表的欺骗；另一种是对内网PC的网关欺骗。<BR>&nbsp; &nbsp; 第一种ARP欺骗的原理是——截获网关数据。它通知路由器一系列错误的内网MAC地址，并按照一定的频率不断进行，使真实的地址信息无法通过更新保存在路由器中，结果路由器的所有数据只能发送给错误的MAC地址，造成正常PC无法收到信息。第二种ARP欺骗的原理是——伪造网关。它的原理是建立假网关，让被它欺骗的PC向假网关发数据，而不是通过正常的路由器途径上网。在PC看来，就是上不了网了，“网络掉线了”。<BR><BR>&nbsp; &nbsp;&nbsp;&nbsp;近期，一种新型的“ ARP 欺骗”木马病毒正在校园网中扩散，严重影响了校园网的正常运行。感染此木马的计算机试图通过“ ARP 欺骗”手段截获所在网络内其它计算机的通信信息，并因此造成网内其它计算机的通信故障。ARP欺骗木马的中毒现象表现为：使用校园网时会突然掉线，过一段时间后又会恢复正常。比如客户端状态频频变红，用户频繁断网，IE浏览器频繁出错，以及一些常用软件出现故障等。如果校园网是通过身份认证上网的，会突然出现可认证，但不能上网的现象（无法ping通网关），重启机器或在MS-DOS窗口下运行命令arp -d后，又可恢复上网。ARP欺骗木马十分猖狂，危害也特别大，各大学校园网、小区网、公司网和网吧等局域网都出现了不同程度的灾情，带来了网络大面积瘫痪的严重后果。ARP欺骗木马只需成功感染一台电脑，就可能导致整个局域网都无法上网，严重的甚至可能带来整个网络的瘫痪。该木马发作时除了会导致同一局域网内的其他用户上网出现时断时续的现象外，还会窃取用户密码。如盗取QQ密码、盗取各种网络游戏密码和账号去做金钱交易，盗窃网上银行账号来做非法交易活动等，这是木马的惯用伎俩，给用户造成了很大的不便和巨大的经济损失。<BR><BR>&nbsp;&nbsp;如何检查和处理“ ARP 欺骗”木马的方法<BR></FONT></DIV>
<DIV style="FONT-SIZE: 12px" align=left><FONT color=#0080ff>1 ．检查本机的“ ARP 欺骗”木马染毒进程</FONT><BR><IMG height=417 alt="" src="http://netsupport.tsinghua.edu.cn/images/clip_image001.jpg" width=404 border=0><BR><FONT color=#0080ff>同时按住键盘上的“ CTRL ”和“ ALT ”键再按“ DEL ”键，选择“任务管理器”，点选“进程”标签。察看其中是否有一个名为“ MIR0.dat ”的进程。如果有，则说明已经中毒。右键点击此进程后选择“结束进程”。参见右图。<BR><BR>2 ．检查网内感染“ ARP 欺骗”木马染毒的计算机<BR>在“开始” - “程序” - “附件”菜单下调出“命令提示符”。输入并执行以下命令：<BR>ipconfig<BR>记录网关 IP 地址，即“ Default Gateway ”对应的值，例如“ 59.66.36.1 ”。再输入并执行以下命令：<BR>arp –a<BR>在“ Internet Address ”下找到上步记录的网关 IP 地址，记录其对应的物理地址，即“ Physical Address ”值，例如“ 00-01-e8-1f-35-54 ”。在网络正常时这就是网关的正确物理地址，在网络受“ ARP 欺骗”木马影响而不正常时，它就是木马所在计算机的网卡物理地址。<BR>也可以扫描本子网内的全部 IP 地址，然后再查 ARP 表。如果有一个 IP 对应的物理地址与网关的相同，那么这个 IP 地址和物理地址就是中毒计算机的 IP 地址和网卡物理地址。<BR><BR>3 ．设置 ARP 表避免“ ARP 欺骗”木马影响的方法<BR>本方法可在一定程度上减轻中木马的其它计算机对本机的影响。用上边介绍的方法确定正确的网关 IP 地址和网关物理地址，然后在 “命令提示符”窗口中输入并执行以下命令：<BR>arp –s 网关 IP 网关物理地址<BR><BR>4.态ARP绑定网关<BR>&nbsp;&nbsp;步骤一：<BR>&nbsp;&nbsp;在能正常上网时，进入MS-DOS窗口，输入命令：arp －a，查看网关的IP对应的正确MAC地址， 并将其记录下来。<BR>&nbsp;&nbsp;注意：如果已经不能上网，则先运行一次命令arp －d将arp缓存中的内容删空，计算机可暂时恢复上网（攻击如果不停止的话）。一旦能上网就立即将网络断掉（禁用网卡或拔掉网线），再运行arp －a。<BR>&nbsp;&nbsp;步骤二：<BR>&nbsp;&nbsp;如果计算机已经有网关的正确MAC地址，在不能上网只需手工将网关IP和正确的MAC地址绑定，即可确保计算机不再被欺骗攻击。<BR>&nbsp;&nbsp;要想手工绑定，可在MS-DOS窗口下运行以下命令：<BR>&nbsp;&nbsp;arp －s 网关IP 网关MAC<BR>&nbsp;&nbsp;例如：假设计算机所处网段的网关为192.168.1.1，本机地址为192.168.1.5，在计算机上运行arp －a后输出如下：<BR>&nbsp;&nbsp;Cocuments and Settings&gt;arp -a<BR>&nbsp;&nbsp;Interface:192.168.1.5 --- 0x2<BR>&nbsp;&nbsp;Internet Address Physical Address Type<BR>&nbsp;&nbsp;192.168.1.1&nbsp;&nbsp;00-01-02-03-04-05 dynamic<BR>&nbsp;&nbsp;其中，00-01-02-03-04-05就是网关192.168.1.1对应的MAC地址，类型是动态（dynamic）的，因此是可被改变的。<BR>&nbsp;&nbsp;被攻击后，再用该命令查看，就会发现该MAC已经被替换成攻击机器的MAC。如果希望能找出攻击机器，彻底根除攻击，可以在此时将该MAC记录下来，为以后查找该攻击的机器做准备。<BR>&nbsp;&nbsp;手工绑定的命令为：<BR>&nbsp;&nbsp;arp －s 192.168.1.1&nbsp;&nbsp;00-01-02-03-04-05<BR>&nbsp;&nbsp;绑定完，可再用arp －a查看arp缓存：<BR>&nbsp;&nbsp;Cocuments and Settings&gt;arp -a<BR>&nbsp;&nbsp;Interface: 192.168.1.5 --- 0x2<BR>&nbsp;&nbsp;Internet Address Physical Address Type<BR>&nbsp;&nbsp;192.168.1.1&nbsp;&nbsp;00-01-02-03-04-05 static<BR>&nbsp;&nbsp;这时，类型变为静态（static），就不会再受攻击影响了。<BR>&nbsp;&nbsp;但是，需要说明的是，手工绑定在计算机关机重启后就会失效，需要再次重新绑定。所以，要彻底根除攻击，只有找出网段内被病毒感染的计算机，把病毒杀掉，才算是真正解决问题。<BR><BR>5 .作批处理文件<BR>&nbsp;&nbsp;在客户端做对网关的arp绑定，具体操作步骤如下：<BR>&nbsp;&nbsp;步骤一：<BR>&nbsp;&nbsp;查找本网段的网关地址，比如192．168．1．1，以下以此网关为例。在正常上网时，“开始→运行→cmd→确定”，输入：arp －a，点回车，查看网关对应的Physical Address。<BR>比如：网关192.168.1.1 对应00－01－02－03－04－05。<BR>&nbsp;&nbsp;步骤二：<BR>&nbsp;&nbsp;编写一个批处理文件rarp.bat，内容如下：<BR>&nbsp;&nbsp;@echo off<BR>&nbsp;&nbsp;arp －d<BR>&nbsp;&nbsp;arp -s&nbsp;&nbsp;192.168.1.1&nbsp;&nbsp;00－01－02－03－04－05<BR>&nbsp;&nbsp;保存为：rarp.bat。<BR>&nbsp;&nbsp;步骤三：<BR>&nbsp;&nbsp;运行批处理文件将这个批处理文件拖到“Windows→开始→程序→启动”中，如果需要立即生效，请运行此文件。<BR>&nbsp;&nbsp;注意：以上配置需要在网络正常时进行<BR><BR>6.使用安全工具软件<BR>&nbsp;&nbsp;及时下载Anti ARP Sniffer软件保护本地计算机正常运行。具体使用方法可以在网上搜索。<BR>&nbsp;&nbsp;如果已有病毒计算机的MAC地址，可使用NBTSCAN等软件找出网段内与该MAC地址对应的IP，即感染病毒的计算机的IP地址，然后报告单位的网络中心对其进行查封。<BR>&nbsp;&nbsp;或者利用单位提供的集中网络防病毒系统来统一查杀木马。另外还可以利用木马杀客等安全工具进行查杀。<BR><BR>7.应急方案<BR>&nbsp;&nbsp;网络管理管理人员利用上面介绍的ARP木马检测方法在局域网的交换机上查出受感染该病毒的端口后，立即关闭中病毒的端口，通过端口查出相应的用户并通知其彻底查杀病毒。而后，做好单机防范，在其彻底查杀病毒后再开放相应的交换机端口，重新开通上网。<BR>附录一<BR>清华大学校园网络安全响应小组编的一个小程序<BR>下载地址：</FONT> <A href="ftp://166.111.8.243/tools/ArpFix.rar"><FONT color=#0080ff>ftp://166.111.8.243/tools/ArpFix.rar</FONT></A><BR><BR><FONT color=#0080ff>清华大学校园网络安全响应小组编了一个小程序，它可以保护您的计算机在同一个局域网内部有ARP欺骗木马计算机的攻击时，保持正常上网。具体使用方法：<BR>1、 程序运行后请先选择网卡，选定网卡后点击“选定”按钮。<BR>2、 选定网卡后程序会自动获取您机器的网关地址。<BR>3、获得网关地址后请点击获取MAC地址按钮获取正确的网关MAC地址。<BR>4、 确认网关的MAC地址后请点击连接保护，程序开始保护您的机器。<BR>5、 点击程序右上角的叉，程序自动隐藏到系统托盘内。<BR>6、要完全退出程序请在系统托盘中该程序图标上点击右键选择EXIT。<BR>注意：<BR>1、这个程序只是一个ARP攻击保护程序，即受ARP木马攻击时保持自己计算机的MAC地址不被恶意篡改，从而在遭受攻击时网络不会中断。本程序并不能清除已经感染的ARP木马，要预防感染或杀除木马请您安装正版的杀毒软件！<BR><BR><BR>附录二<BR>Anti Arp Sniffer 的用法<BR>下载地址：</FONT><A href="http://www.wipe.edu.cn/Files/wlzx/Antiarp.rar"><FONT color=#0080ff>http://www.wipe.edu.cn/Files/wlzx/Antiarp.rar</FONT></A><BR><BR><FONT color=#0080ff>双击Antiarp文件，出现图二所示对话框。<BR><IMG style="WIDTH: 520px; HEIGHT: 327px" alt="" src="http://www.wipe.edu.cn/Files/wlzx/2.JPG" border=0><BR>图二<BR>输入网关地址（网关地址获取方式：[开始] --&gt;[程序]--&gt; [附件]菜单下调出“命令提示符”，输入ipconfig，其中Default Gateway即为网关地址）；点击获取网关MAC地址，点击自动防护保证当前网卡与网关的通信不被第三方监听。<BR>点击恢复默认，然后点击防止地址冲突，如频繁的出现IP地址冲突，这说明攻击者频繁发送ARP欺骗数据包。<BR><IMG style="WIDTH: 520px; HEIGHT: 327px" alt="" src="http://www.wipe.edu.cn/Files/wlzx/3.JPG" border=0><BR>右击[我的电脑]--&gt;[管理]--&gt;点击[事件查看器]--&gt;点击[系统]--&gt;查看来源为[TcpIP]---&gt;双击事件可以看到显示地址发生冲突，并记录了该MAC地址，请复制该MAC地址并填入Anti ARP Sniffer的本地MAC地址输入框中(请注意将:转换为-)，输入完成之后点击[防护地址冲突]，为了使MAC地址生效请禁用本地网卡然后再启用网卡，在CMD命令行中输入Ipconfig /all，查看当前MAC地址是否与本地MAC地址输入框中的MAC地址相符，如果成功将不再会显示地址冲突。<BR>注：1、如果您想恢复默认MAC地址,请点击[恢复默认],为了使MAC地址生效请禁用本地网卡然后再启用网卡；本软件不支持多网卡，部分网卡可能更改MAC会无效。</FONT></DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=418" /> 
	  <id>http://www.openx.cn/default.asp?id=418</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[福州网通DNS]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-06-14T17:25:44+08:00</updated>
	  <published>2007-06-14T17:25:44+08:00</published>
		  <summary type="html"><![CDATA[<FONT size=2>福州<FONT color=#cc0033>网通</FONT>首选<FONT color=#cc0033>DNS</FONT> <FONT color=#cc0033>地址</FONT>：58.22.96.66 备用<FONT color=#cc0033>DNS 地址</FONT>：218.104.128.106</FONT>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=417" /> 
	  <id>http://www.openx.cn/default.asp?id=417</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[发现一个可以查Md5的站]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-05-18T21:40:17+08:00</updated>
	  <published>2007-05-18T21:40:17+08:00</published>
		  <summary type="html"><![CDATA[<P>
<TABLE id=table1 style="FONT-SIZE: 12px; FONT-FAMILY: verdana, arial, sans-serif" cellSpacing=0 cellPadding=0 width=750 align=center border=0>
<TBODY>
<TR>
<TD style="FONT-SIZE: 12px; FONT-FAMILY: verdana, arial, sans-serif" vAlign=center align=left width=* height=50>
<P><STRONG>以下是该站的申明,开始不相信,弄了几个Md5后的字符搜一下还真出来明文了,</STRONG></P>
<P><STRONG>稍微简单的如数字组合基本都有.....</STRONG></P>
<P><STRONG></STRONG>&nbsp;</P>
<P><STRONG>md5破解</STRONG>、<STRONG>动网论坛密码破解</STRONG>等不再需要用穷举法，本站共有md5记录235亿条，还在不断增长中，已包含10位及10位以下数字、7位字母、部分7位字母＋数字,全部6位及以下字母加数字等组合，并针对国内用户做了大量优化，例如已经包含所有手机号码、全国部分大中城市固定电话号码、百家姓、常用拼音等大量组合，另加入了某大型网站真实会员密码数据10万条。本站数据量大，查询速度快，同时支持16位及32位密码查询。通过对10万会员的真实动网论坛样本数据的测试，本站对于<STRONG>动网论坛密码</STRONG>的命中率达到83%。<STRONG>全国独此一家</STRONG>。<BR><FONT color=red>最新消息：</FONT>本站4T的硬盘已经上线，正在生成数据，预计需要2个月左右时间，到时候本站能查询到12位数字和9位字母，宇宙第一，请大家相互转告！另感谢一热心网友给本站奉上数百万条数据库原始密码样本，大大提高了命中率！</P></TD></TR></TBODY></TABLE><!-- /HEADER --><!-- MASTHEAD --></P>
<P><A href="http://www.cmd5.com/default.aspx">http://www.cmd5.com/default.aspx</A></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=416" /> 
	  <id>http://www.openx.cn/default.asp?id=416</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[世界十大名表鉴赏]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-05-18T21:17:09+08:00</updated>
	  <published>2007-05-18T21:17:09+08:00</published>
		  <summary type="html"><![CDATA[<DIV><FONT size=3><SPAN style="COLOR: #2f4f4f"><B>　　<BR>十、芝柏(Girard-Perregaux)芝柏表的创始人J. F. Bautte1791年制作出他的第一块手表。1854年，芝柏(Girard-Perregaux)这一名字正式诞生。到20世纪初，芝柏的知名度不断扩大。1930年，当手表销售量首次超过怀表销量时，芝柏50年前就定下的发展手表的策略被证明是正确的。1998年，芝柏在日本建立分支机构，并有一款手表入选日本“年度最佳手表”。2000年，芝柏在美国建立了分支机构。<BR><IMG src="http://image2.sina.com.cn/nx/n/2004-07-06/U204P133T3D9483F57DT20040706182131.jpg" border=0><BR>　　<BR>九、劳力士(Rolex)劳力士创始人为汉斯.威尔斯多夫，1908年他在瑞士将劳力士注册为商标。20世纪20年代，劳力士公司研制了防水手表。1953年，劳力士推出了专为潜水夫设计的潜水表。劳力士手表的设计本着庄重、实用、不显浮华的风格，受到大批人喜爱。<BR><IMG src="http://image2.sina.com.cn/nx/n/2004-07-06/U204P133T3D9481F57DT20040706182125.jpg" border=0><BR>　　<BR>八、积家(Jaeger LeCoultre)安东尼.拉考脱(AntoineLeCoultre)1833年在瑞士成立工作坊。1844年，他发明了测量精度达到1/1000毫米的微米仪，使钟表零件加工精度大大提高。积家在1907年推出了世界上最薄的机械机芯，在1929年推出了世界上最小的机械机芯。积家1931年专为马球选手所推出的腕表是为高档腕表中罕见的经典之作。目前隶属瑞士历峰集团。<BR><IMG src="http://image2.sina.com.cn/nx/n/2004-07-06/U204P133T3D9478F57DT20040706182116.jpg" border=0><BR>　　<BR>七、卡地亚(Cartier)卡地亚拥有150多年历史，是法国珠宝金银首饰的制造名家。1888年，卡地亚尝试在镶嵌钻石的黄金手镯上装上机械女装表。 1938年，卡地亚制造了世界上最小的腕表，并把它送给了英国伊莉莎白公主。卡地亚手表一直是上流社会的宠物，历久不衰。目前隶属瑞士历峰集团。<BR><IMG src="http://image2.sina.com.cn/nx/n/2004-07-06/U204P133T3D9480F57DT20040706182122.jpg" border=0><BR>　　<BR>六、伯爵(Piaget) 1874年，Georges EdouardPiaget以机芯制作起家。1940年，Piaget的孙子为伯爵表的发展开拓了国际市场。1956年伯爵表推出了超薄机芯。上世纪60 年代以来，伯爵一边致力于复杂机芯的研究，一面发展顶级珠宝首饰的设计。从设计、制作蜡模型到镶嵌宝石，伯爵表始终秉承精益求精的宗旨。其“手铐腕表” (cuffwatches)和“硬币腕表”(coin watches)设计出众，是伯爵表中的珍品。目前隶属瑞士历峰集团。<BR><IMG src="http://image2.sina.com.cn/nx/n/2004-07-06/U204P133T3D9477F57DT20040706182113.jpg" border=0><BR>　　<BR>五、万国(IWC)创立于1868年的万国表有“机械表专家”之称，每只万国腕表都要经历28次独立测试。创始人是美国人佛罗伦汀.钟斯 (Florentine AJones)。20世纪初，万国表在德国、奥地利等地销售量大增。如今，万国表在全球有700多个销售点，产品主要销往远东、瑞士和德国。目前隶属瑞士历峰集团。<BR><IMG src="http://image2.sina.com.cn/nx/n/2004-07-06/U204P133T3D9482F57DT20040706182128.jpg" border=0><BR>　　<BR>四、宝玑(Breguet) 1775年，A.路易士.宝玑(A. Loui***reguet)创办了宝玑这一品牌。这位举世公认的钟表史经典人物首先在巴黎发展这一品牌，后至瑞士。宝玑手表深受皇族垂青，法国国王路易十六和玛利皇后都是宝玑的推崇者。巴尔扎克、普希金、大仲马、雨果等文豪的著作中也都曾提及宝玑表。英国女王维多利亚和英国首相邱吉尔等名人都是宝玑的顾客。如今，宝玑隶属瑞士斯沃琪集团。<BR><IMG src="http://image2.sina.com.cn/nx/n/2004-07-06/U204P133T3D9476F57DT20040706182111.jpg" border=0><BR>　　<BR>三、爱彼(Audemars Piguet) 1875年，朱尔斯-路易士.奥德莫斯(Jules-LouisAudemars)与朋友爱德华-奥古斯蒂.皮捷特(Edward- AugustePiguet)一同创立了爱彼表。1972年，爱彼推出了全精钢材质的高端运动表系列“皇家橡树”(RoyalOak)，成为表业经典。爱彼公司在瑞士设有钟表学校，每名学徒必须在钟表学校中修完4年课程，才能取得钟表匠资格。此外，还要经过1至2年训练，才能制造超薄机芯，而要开始制造复杂机芯前，还需10年训练。<BR><IMG src="http://image2.sina.com.cn/nx/n/2004-07-06/U204P133T3D9475F57DT20040706182108.jpg" border=0><BR>　　<BR>二、江诗丹唐(VacheronConstantin)始创于1775年的江诗丹唐已有250年历史，是世界上历史最悠久、延续时间最长的名表之一。创始人让.马克.瓦什隆(Jean-Marc Vacheron)是一位渊博的人文学家。江诗丹唐被誉为贵族中的艺术品，一直在瑞士制表业上担当着关键角色。目前隶属瑞士历峰集团。<BR><IMG src="http://image2.sina.com.cn/nx/n/2004-07-06/U204P133T3D9479F57DT20040706182119.jpg" border=0><BR>　　<BR>一、百达翡丽(PatekPhilippe)创立于1839年的百达翡丽是瑞士现存惟一一家完全由家族独立经营的钟表制造商。百达翡丽表一向重视外形设计与制作工序，制表工序全部在日内瓦原厂完成，是全球众多品牌表中惟一一家全部机芯获“日内瓦优质印记”(Geneva Seal)的品牌。<BR><IMG src="http://image2.sina.com.cn/nx/n/2004-07-06/U204P133T3D9474F57DT20040706182107.jpg" border=0></B></SPAN></FONT></DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=415" /> 
	  <id>http://www.openx.cn/default.asp?id=415</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[本本有了大内存,特此留影.]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-05-09T10:48:38+08:00</updated>
	  <published>2007-05-09T10:48:38+08:00</published>
		  <summary type="html"><![CDATA[<P>哈哈本本加了根1G内存活活现在是1.25G啦. <BR>[img]http://www.openx.cn/include/Editor/UploadFile/200759103832613.gif[/img] <BR>共享了256Mb给了显卡(原先才64Mb),现在运行啥都爽死了. <BR>[img]http://www.openx.cn/include/Editor/UploadFile/200759103856860.gif[/img] <BR>之前玩DODs还会晃,现在如履平地嘎嘎~~~~~</P>
<P>做开发的我平时一运行几个开发环境内存就占900Mb(包括虚拟内存),本本硬盘本来就慢,切换程序,编译代码时就明显感到吃力.</P>
<P>现在不同啦,强烈推荐R20的本本一族快加内存吧,性能提升不少的说哦.</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=414" /> 
	  <id>http://www.openx.cn/default.asp?id=414</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[转点点学习资料]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-01-25T17:11:30+08:00</updated>
	  <published>2007-01-25T17:11:30+08:00</published>
		  <summary type="html"><![CDATA[<DIV align=left>一位聪明的使用者，往往在使用任何一件器具之前 ，会先详阅制造厂商的说明书。此对使用地图者亦然。摊开任何一张地图，其周围、边缘都有印文字、数字、 图例等，而称之为「图廓资料」。 <BR><BR>不同地图的图廓数据也不尽相同，因此在使用地图时，即需先检查其图廓数据，图即为五万分之一等高线图的图廓资料说明 。 <BR><BR>﹙一﹚图名 在图廓顶部中央，代表一幅地图的名称。一般而言 ，一幅地图常按其地理上或人文上之显著地形、地物而命名。 <BR><BR>﹙二﹚图组名称及比例尺标示于地图左上角，此项目为某一图组之名称及比例尺。一个图组通常包含相同比例尺的一组类似地图，并用相同的图廓线或式样，以涵盖某一特定之地理区域。我国以省名为图组名称，如「中华民国台湾地区，二万五千分之一地形图」。 <BR><BR>﹙三﹚图号 图号位在地图的右上﹙有些在右下角亦有标示﹚。 它是以任一坐标为依据，而此任一坐标制中，每幅比例尺十万分之一的地图，系分配一个四位数之数字，前二位数表横坐标、后二位数表纵坐标，以78年版二万五千分之一的台湾地形图图幅接合表及图号为例，图号以东 经70°30′、北纬14°为其标准分幅经纬线，十万分之 一的地形图各以30′的经纬差给予其横、纵坐标之值。如东经70°30′～71°之间为01，71°～71°30′之间为02，依此类推，台湾本岛在94与97之间；同理，纵坐标在16到23之间。 而五万分之一的图号制定系将十万分之一划为四幅 ，由右上角以顺时钟的顺序加注罗马数字Ⅰ、Ⅱ、Ⅲ、 Ⅳ，如9621Ⅱ。 由于一幅二万五千分之一的图恰是五万分之一地形 图的四分之一，故只要在五万分之一的地形图号后面加上代表地理四象限的NE、SE、NW、SW即可，如9621ⅡSW 。另外因一幅一万分之一的地图，恰等于五万分之一 地形图的二十五分之一，故只要在五万分之一的图号后 面加上01～25的二位数即可，如9621-Ⅰ-09。 又因一幅五千分之一的图，恰等于五万分之一地形图的一百分之一，故只要在五万分之一的图号后面加上 001～100的三位数即可，如9621-Ⅰ-001。 <BR><BR>﹙四﹚图组号码 标示于右上角，是一种国际性系统的代号，说明该 幅地图所在的地区及比例尺，详细说明请见登山百科全书中册。惟目前台湾地区之地形图仅剩五万分之一图有此标记，本省至62年版起之五万分之一地图的图组号码已改为L7001。 <BR><BR>﹙五﹚ 版次 标示于右上角，版次乃代表各该地图对其相同地图其它各版之年代关系。 <BR><BR>﹙六﹚图幅接合表 位于图廓右下角，系用以显示该幅地图周围之各幅地图，以便查图，如下图左。　　　 <BR>﹙七﹚边界索引图﹙行政界线略图﹚ 在图廓之右下方，此索引图为各该地图之一分缩图 ，表示该图区域内所有边界及主要海岸线，以下图右为例。 <BR><BR>﹙八﹚高程示意图 位图廓下方，行政界线略图左方，为该地图之一分 缩图，表示该图区域内大致之高程分布，如图左。 <BR><BR>﹙九﹚图料表 位于边界索引图左方，系指出该图调制的方法，采 取数据的种类、时间及精确度等，如图右。此表在72年版之五万分之一地图未出现，而出现于78年版的二万五千分之一的地图。 <BR><BR>﹙十﹚地点指示例 位于图廓下方，高程示意图左方。含有关于识别图上所代表各该地图所在位置之方格带或方格区域。以及十万公尺等资格，如下图上。欲了解地点指示的方法， 须对坐标有深入认识，后面另辟「坐标」一节，再详细讨论。 <BR><BR>﹙十一﹚比例尺 位于图廓正下方，其地图比例尺注记系按一项分数表示，用以显示地图距离对实地距离的比率。计有文字 、分数及图标三种表现方法，如下图下。 <BR><BR>﹙十二﹚偏角图 位于图廓下方偏左，用以指出地图上地形、地物对 于正北、磁北及方格北间的关系及彼此偏差的角度。在台湾，磁北恒在正北的左方，如图。 <BR><BR>﹙十三﹚图例 位图廓左下角，用以说明及识别地图上所有的各种 符号及意义，如表。值得一提的是，在地图上的铁道及一般道路的符号与一般地图之表示法不同。 <BR><BR>﹙十四﹚其它注记 在比例尺之下方，如表。 地图定位方位判定欲将方向按一种角度度量单位表示，必先有某一方向之零值量度，一般称之为「基线」。 <BR><BR>而地图的使用者所关切的，正是这所谓基线的北方，但图上所显示的北有三种北方线。 <BR><BR>﹙一﹚ 真北：地球是一个球体，中心假设有一条地轴贯通，地轴北端为北极，从地球表面任一点通至北极之直线，均指示真正方向，故所有的经线均是真北线,真北通常以「*」号 表示。 <BR><BR>﹙二﹚ 磁北：即指北针所指方向，磁北通常以半个箭头符号「↑」表示。因两磁极的位置不等于两极，故指北针所指的是磁北而非真北，北磁极在1960年时在加拿大之韦尔斯岛北部，约为北纬74°西经 101°，磁极会因时而不同，所以一般的地图均会注明磁偏 角的年月。 <BR><BR>﹙三﹚ 方格北：即地图上方网格线所确定的北方。 <BR><BR>最普通 使用的基线是磁北与方格北，当在野外作业时，使用磁北；图上作业则使用方格北 。 <BR><BR>方向 系按角度度量单位表示之。角度度量单位常见者为度与米位，而度又是最常使用者。一圆可分为 360 度，度下更小的区分为「分」，分下又有「秒」。另外，一圆又可分为6400米位。最常用来表达方向的一种方法称为方位角。 <BR><BR>方位角 之定义为：从一条基准﹙通常为北方﹚按顺时钟方向所量得的水平角度。以真北为基线者，称真方位角；以磁北与方格北为基线者分别称为磁方位角与方格方位角。「反方向角」乃是一方位角的倒转形式，故两者之差必为 180°，若方位角为 180°以下，则反方位角系方位角加上180°；若方位角超过180°，则反方位角系方位角减去 180°。 　　 <BR><BR>前面提过，野外作业与图上作业所使用之基线不同 ，故我们须知磁方位角与方格方位角的关系，使用如图及其说明。 <BR><BR>坐标 坐标的种类有许多，而在我们常使用的地形图上， 有地理坐标及世界横麦卡脱方格坐标两种。 <BR><BR>就以一张五 万分之一的等高线图来说，细心的山友可能会发现，图 幅的四个端点有地理坐标，即经纬度坐标，且每 5′尚有标示，而在图中每经度 5′与纬度 5′相交的地方有 「＋」的标示，这些都是为了读取坐标准确而划。另外，每隔两公分便有一条直线与横线，且有00～99的标示 ，这便是世界横麦卡脱方格坐标，简称U.T.M.坐标，或通用坐标。因在地面上行走的人，如陆军或登山者移动的距离小，更需以此等小方格来标示位置。 <BR><BR>以下分别对地理坐标与通用坐标加以说明。 <BR><BR>﹙一﹚ 地理坐标 <BR>地理坐标是最古老而有系统的确定位置方法。系以两条直线为依据，一条称为赤道；另一条称为本初子午线，地球表面的任何一点均能以这两条直线为坐标轴，表示其位置，以下略述地理坐标的相关名词： <BR><BR>(1) 南北极与地轴---地球上端为北极，下端为南极，通过地心而连 接南北极的直线，称为地轴。 <BR><BR>(2) 赤道、纬线与纬度---环绕地球周围东西向之圆环最大者，称为赤道 ，其直径与地轴垂直。而与赤道平行，环绕地球表面的圆环即为「纬度平行圈」，简称为「纬线」。以地心为原点，赤道为零度，向南及向北均可编至九十度，即北极是北纬90°，南极是南纬90°，赤道之北称北纬、之南称南纬，地球上各地纬线与赤道的弧长，称为纬度。 <BR><BR>(3) 子午线、本初子午线及经度---通过地球两极而与赤道直交的圆弧即为子午线 ，又称经线。而本初午线为通过英国「格林威治天文台」的经线，又称零度子午线。经度是地球上各地的经线与本初子午线之间所截赤道的弧长。以本初子午线为零度分东西两半球为东西经各 180°。 地理坐标中，北纬以「N」、南纬以「S」、东经以 「E」、西经以「W」表示，所使用的度量单位为度﹙° ﹚、分﹙′﹚、秒﹙〞﹚。一圆为 360°，一度为60分 ，每分又可分为60秒。地理坐标的报告为先纬后经，如北纬21°56′30〞N。东经 122°44′52〞E。通常在山难搜救中，请求直升机支持时，所使用的即是地理坐标。 <BR><BR>﹙二﹚ 通用坐标---世界横麦卡脱方格坐标是一种有系统的方格坐标制 ，原文是 Universal Transverse Marcuts Syoteur，简称U.T.M.坐标。 <BR><BR>读过高中通论地理课本的人可能知道麦卡脱投影法 ，此法是将光源置于球心，以一围成圆柱形之纸张切于赤道，所得之坐标制。而横麦卡脱方格坐标即是将圆柱旋转90度，切地表于某一子午线而得，此U.T.M.坐标设计时，系供北纬84度与南纬80度间使用。 <BR><BR>(1)U.T.M.的形成---由 180°经度子午线起，向东将地球分为60个狭带，每一狭带的宽度为经度 6°，以阿拉伯数字 1 到60为编记。 <BR><BR>每带均有称为「中央子午线」之一 条子午线，贯穿各方格带中央。利用中央子午线与 赤道之交会点，作为一个原点，即可列举某一位置 ，方格带内各点之指示即依「向右向上判读」之规则。 <BR><BR>U.T.M.方格之每一条一定间隔之线条，均标记其假性向东读数与假性向北读数，以显示其与方格带原点之关系。大比例尺之地图，此方格距离大都 为一千公尺﹙目前台湾地区五千分之一地形图的方格距离为五百公尺﹚。 <BR><BR>除了由地图左下角处向右向上之第一条方格线有标示其数值外，在一千公尺方 格的地图上，此数值之最后三位数字﹙000﹚均省略。此项数值之二位数字系按大写之字体印制，称为 「主要数字」。系指该线在该方格区中央 子午线以东323000公尺； 系指该线在赤道以北2684000公尺，其主要数字各为23与84,某一点 之指示，经常均按「向右向上判读」之原则。 <BR><BR>坐标2384乃是辨认从方格线23及方格线84交叉处向右及向上所座落之整个方格，但此方格之指示仍不够精确，故通常将方格之每一边再细分为十等分，而得 六位数，如234843。 U.T.M.方格之每一组数字在六十个方格带中均会出现一次，且又有南北半球之分,故将会出现120次，美军之军用方格坐标制﹙简称MGRS﹚即是为避免这种错误发生的设计，我国军用地图之地点指示亦是采此坐标制， 以下简述此坐标制。 <BR><BR>(2)MGRS制---此坐标制系与U.T.M.方格共同使用，即其带号同U.T.M.之分法，亦为60个方格带，MGRS制系在南 纬80°S与北纬84°N之间，将世界分成许多「西─ 东6°，南─北8°」之区域，称为方格带编号。 <BR><BR>此编号之共纵列与U.T.M.方格带同，而其横排则以英文字母识别之，由南纬80°S向北至北纬84°N为止，采用英文字母C至X为字母编号，其中I与O省略不用，如图。 <BR><BR>为便于较小区域内的目标指示，又带「带」、 「区」再划分成许多十万公尺方格。纵行与横列均是以一个英文字母代替。横列在180°经线开始，沿赤道往东进行18°﹙即三个纵带﹚，每十万公尺纵行各赋予A至Z之字母代号，但I与O省略不用，此种字母，每隔18°重复一次。从南到北，每十万公尺横列，各赋予A至V之字母代号，I与O省略不用。 <BR><BR>此部分之字母每两万公尺重复一次。任何十万公尺 方格代号，系由两个英文字母组成，第一个字母是向右读定之，第二个字母是向上读定之，如图。 <BR><BR>(3)地点指示要领 MGRS坐标的读图要领为先向右、后向上，报导 方法为带号、区号、十万公尺方格代号、向右读数、向上读数，依序列出，如图之地点指示例，向右向上读数不一定只有六位数，有时军事上为求更精确起见，亦有使用八位数者，惟一般仅使用六位。 <BR><BR><BR>等高线的读法 <BR><BR>﹙一﹚等高线的意义---等高线是地图上用以代表地面上想象中的一条线， 此在线之所有各点，均有相当之标高。 <BR><BR>简单的说，等高线是由地面上高度相等的各点所连成的曲线，而投影在一平面上的许多水平曲线。如图便可知道等高线图是如何绘成。 等高线是指高于或低于一基准面的垂直距离，此基准面通常为平均海平面，于图廓资料之标高注记说明，台湾地区系以基隆平均海平面起算。 <BR><BR>等高线间之垂直距离称为「等高线间距」，此项等高线间距之数量于图廓 资料之注记有所说明；一般地图的等高线，均用棕色印制。 由零﹙0﹚标高处开始,每逢第五条等高线，均以一条较粗之线条描绘，便于计算分辨。比较粗黑之等高线称为「计曲线」，常沿每一计曲线适当之处，使之中断，注记其标高。而位在两计曲线间之各条等高线，称之为「首曲线」。若地势较缓，首曲线不足以显示高低起 伏时，则可使用「间曲线」与「助曲线」，间曲线以断线表示，系在二分之一等高线间距处描绘之，而助曲线以点线表示，系在四分之一等高线间距处描绘之。下表即为目前台湾地图各种地形图之等高线距。 1:50000 1:25000 1:10000 1:5000 计曲线 100ｍ　 　　50ｍ 　　　50ｍ 25ｍ 首曲线 20ｍ 10ｍ 10ｍ 5ｍ 间曲线 10ｍ　　　　5ｍ 5ｍ 2.5ｍ 助曲线 5ｍ　　　2.5ｍ 2.5ｍ 1.25ｍ　 <BR><BR><BR>﹙二﹚等高线的特性 <BR><BR>(1) 等高线通常以海平面的平均海潮位线为基准线。 <BR><BR>(2) 每条等高线的高度必相等。 <BR><BR>(3) 每一条等高线必封闭，即使在一幅地图上等高线未必封闭，但与连接的地图，等高线将必封闭。 <BR><BR>(4) 除悬崖、峭壁处，等高线不会重迭。 <BR><BR>(5) 等高线愈密，表示坡度愈陡；愈疏表示坡度愈缓。 <BR><BR>(6) 形成若干闭合的环线，表示一山丘，如图。 <BR><BR>(7) 形成若干闭合的环线，而带有各项短线记号，则表 示一洼地。各短线通常画在等高线之低侧。如图 。 <BR><BR>(8) 「V」字形尖端指向低处，则表示棱线。如图。 <BR><BR>(9) 「V」字形尖端指向高处，则表示溪谷。如图。 <BR><BR>(10) 现示于两山之间，而围入于一等高线以内者，表 示为一鞍部，如图。 <BR><BR>﹙三﹚ 常见地形的辨示 一个区域的地形必然有高有低，若此区域下雨，则雨水将由高处往低处流，高处之最顶分水者称为分水岭 ，棱线即是分水岭，而雨水汇流者称为谷，棱线与谷间雨水径流之面称为坡。没有低自然显不出高，因此相邻 两条棱之间必有一条谷，这是相对的概念。山峰、鞍部都是自然分水岭的一部分，故也同属于棱线，以下附图 请以两种不同色调的笔分别连出棱线与溪谷，值得注意的是棱线不会切过溪谷而相接，否则溪谷四面皆高必成湖泊。 </DIV>
<DIV>&nbsp;</DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=413" /> 
	  <id>http://www.openx.cn/default.asp?id=413</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[WGS84墨卡托投影转换C#源码]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-01-25T13:39:50+08:00</updated>
	  <published>2007-01-25T13:39:50+08:00</published>
		  <summary type="html"><![CDATA[<P>开发环境：C#</P>
<P>代码：</P>
<BLOCKQUOTE>
<P>WGS84&nbsp;Mercator&nbsp;project转换的算法（C#）</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;N0&nbsp;=&nbsp;6378137.0&nbsp;/&nbsp;Math.Sqrt(&nbsp;1-Math.Pow(0.081819190843,2)*Math.Pow(Math.Sin（RefLat*Math.PI/180),2)&nbsp;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q1&nbsp;=&nbsp;Math.Log(&nbsp;Math.Tan(&nbsp;(180.0/4.0+dLat/2.0)*Math.PI/180.0&nbsp;)&nbsp;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q2&nbsp;=&nbsp;0.081819190843/2&nbsp;*&nbsp;Math.Log(&nbsp;(1+0.081819190843*Math.Sin(dLat*Math.PI/180.0)&nbsp;)&nbsp;/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1-0.081819190843*Math.Sin(dLat*Math.PI/180.0)&nbsp;)&nbsp;&nbsp;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q&nbsp;=&nbsp;q1&nbsp;-&nbsp;q2&nbsp;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;N0&nbsp;*&nbsp;Math.Cos(RefLat*Math.PI/180.0)&nbsp;*&nbsp;((dLong-CentralMeridian)/57.29577951)&nbsp;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;=&nbsp;N0&nbsp;*&nbsp;Math.Cos(RefLat*Math.PI/180.0)&nbsp;*&nbsp;q&nbsp;;</P>
<P><BR>式中<BR>输入参数：dLat----纬度</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dLong----经度</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RefLat----基准纬度</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CentralMeridian----中央子午线</P>
<P>输出：x----横坐标,y----纵坐标</P>
<P>其余参数为中间过程参数<BR></P></BLOCKQUOTE>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=412" /> 
	  <id>http://www.openx.cn/default.asp?id=412</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[摘一些GIS地图的基础知识(温习温习)]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-01-25T10:25:41+08:00</updated>
	  <published>2007-01-25T10:25:41+08:00</published>
		  <summary type="html"><![CDATA[<P><BR>GIS&nbsp;地&nbsp;图&nbsp;知&nbsp;识&nbsp;　　　　&nbsp;<BR>1.&nbsp;地图、地图制图学&nbsp;.&nbsp;<BR>2.&nbsp;地图基本概念-特性、分类、用途、工艺&nbsp;(国家基本比例尺地形图)　　　　　　　　　<BR>　　　&nbsp;<BR>3.&nbsp;地图数学基础&nbsp;(椭球、投影、高斯-克吕格直角坐标、地形图分幅)&nbsp;<BR>4.&nbsp;地图符号&nbsp;<BR>5.&nbsp;普通地图的内容要素及表示方法&nbsp;<BR>6.&nbsp;专题地图的内容要素及表示方法&nbsp;<BR>7.&nbsp;传统测绘与“3S”、“数字地球”&nbsp;</P>
<P>------------------------------------------------------------------------------<BR>--<BR>1.&nbsp;地图、地图制图学:　<BR>　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>一.什么是地图&nbsp;<BR>　　地图是按一定的数学法则和综合法则，以形象－符号表达制图物体(现象)的地理分布<BR>、组合和相互联系及其在时间中的变化的空间模型，它是地理信息的载体，又是信息传递<BR>的通道。&nbsp;</P>
<P>&nbsp;&nbsp;<BR>二.地图制图学及其理论基础&nbsp;<BR>　　地图制图学属地球科学中的一门学科。主要是研究地图的实质(性质、内容及其表示方<BR>法)发展、制图理论和技术方法的的一门科学。它的任务是获取各种类型的、高速优质的地<BR>图。是制作地图的科学。地图是人类认识客观世界、反映自然的特殊形式。地图的制作不<BR>是单纯的技术问题，而是人类认识客观的能力和水平的反映。&nbsp;&nbsp;</P>
<P>&nbsp;&nbsp;<BR>三.地图制图学及其组成部分&nbsp;<BR>　　地图概论：研究地图的发展规律、特点以及地图的性质、分类、用途、内容及表示方<BR>法等。&nbsp;<BR>　　地图投影学：研究地图上点的平面直角坐标(或极坐标)同地球椭球体表面上相应点的<BR>地理坐标(经纬度坐标)之间的函数关系，研究投影的理论、性质、变形规律、计算方法投<BR>影的判别和选择，以及在编制地图中不同投影的转换问题。&nbsp;</P>
<P><BR>　　地图编制学：研究制图资料编制地图的理论、技术方法和程序。&nbsp;<BR>　　地图绘制学：研究绘制出适合于制印要求的出版原图的理论和技术。&nbsp;<BR>　　地图整饰：研究地图内容的表现形式，如色彩、线划、符号、图名的设计、地貌立体<BR>表示等&nbsp;<BR>　　地图制印学：研究复制地图生产过程和有关的理论、技术方法、设备、材料性质及使<BR>用等。&nbsp;<BR>　　地图量测学：研究地图上量测方向、距离、面积、体积等的方法和技术。&nbsp;<BR>　　地图设计：研究地图的编辑设计，地图设计的理论基础及提高地图表现力的理论依据<BR>。&nbsp;</P>
<P>------------------------------------------------------------------------------<BR>--<BR>2.&nbsp;地图基本概念-特性、分类、用途、工艺:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>一.地图的特征&nbsp;<BR>　　地图的特征包括：由于特殊的数学法则而产生的可量测性；由于使用符号表象事物而<BR>产生的直观性；由于制图综合而产生的一览性。&nbsp;</P>
<P>&nbsp;&nbsp;<BR>二.地图的分类&nbsp;<BR>　　一.按区域范围分类：分为世界图、国家图、分区图、省图、市县图、乡镇图等；<BR>　　二.按地图内容分类：分为两大类，普通地图和专题地图。<BR>　　　　普通地图是以相对平衡的详细程度表示地球表面上的自然地理和社会经济要素(基<BR>本要素包括居民地、交通网、水系、地貌、境界、土质植被等)的地图。其中详细表示地面<BR>的各基本要素的叫地形图；内容比较概略，但主要目标很突出，以反映各要素基本分布规<BR>律为主的地图称为地理图；介于两者之间的叫地形地理图。<BR>　　　　专题地图是以普通地图作为底图基础的，重点反映某一种或几种专门的要素，依<BR>内容要素可分为：自然地理图、社会经济地图和工程技术图。<BR>　　三.按比例尺分类<BR>　　　　大比例尺地形图：1：5千—1：2.5万比例尺地形图<BR>　　　　中比例尺地形图：1：5万—1：25&nbsp;万比例尺地形图<BR>　　　　小比例尺地形图：1：50万-1：100万比例尺地形图&nbsp;&nbsp;</P>
<P><BR>　　我国称1：1万、1：2.5万、1：5万、1：10万、1：25万、1：50万、1：100万七种比例<BR>尺普<BR>通地图为国家基本比例尺地形图&nbsp;按国家测绘局制定的统一技术标准制图(规范、图式)。&nbsp;</P>
<P>相关内容&nbsp;<BR>功能演示栏目下的转换及投影中的标准图框&nbsp;<BR>三.地图的用途&nbsp;<BR>四.地图生产的基本过程&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P>
<P>------------------------------------------------------------------------------<BR>--<BR>3.&nbsp;地图数学基础:　<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>一.地球椭球体&nbsp;<BR>　　地球是一个表面很复杂的球体，人们以假想的平均静止的海水面形成的“大地体”为<BR>参照，推求出近似的椭球体，理论和实践证明，该椭球体近似一个以地球短轴为轴的椭园<BR>而旋转的椭球面，这个椭球面可用数学公式表达，将自然表面上的点归化到这个椭球面上<BR>，就可以计算了。&nbsp;&nbsp;</P>
<P><BR>　　常用的一些椭球及参数&nbsp;<BR>　　海福特椭球(1910)　　　　　　　　　　　　　　　　　　　　我国52年以前基准椭<BR>球&nbsp;<BR>　　a=6378388m&nbsp;b=6356911.9461279m&nbsp;α=0.33670033670&nbsp;<BR>　　克拉索夫斯基椭球(1940&nbsp;Krassovsky)&nbsp;　　　　　　　　　　　北京54坐标系基准椭<BR>球&nbsp;<BR>&nbsp;　　a=6378245m&nbsp;b=6356863.018773m&nbsp;α=0.33523298692&nbsp;<BR>　　1975年I.U.G.G推荐椭球(国际大地测量协会1975)&nbsp;　　　　　　西安80坐标系基准椭<BR>球&nbsp;<BR>　　a=6378140m&nbsp;b=6356755.2881575m&nbsp;α=0.0033528131778&nbsp;<BR>　　WGS-84椭球(GPS全球定位系统椭球、17届国际大地测量协会)　&nbsp;WGS-84&nbsp;GPS&nbsp;基准椭球<BR>&nbsp;<BR>　　a=6378137m&nbsp;b=6356752.3142451m&nbsp;α=0.00335281006247&nbsp;<BR>　　地球椭球面上任一点的位置，可由该点的纬度(B)和精度(L)确定，即地面点的地理坐<BR>标值，由经线和纬线构成两组互相正交的曲线坐标网叫地理坐标网。由经纬度构成的地理<BR>坐标系统又叫地理坐标系。&nbsp;&nbsp;</P>
<P><BR>　　地理坐标分为天文地理坐标和大地地理坐标&nbsp;<BR>　　天文地理坐标是用天文测量方法确定的，大地地理坐标是用大地测量方法确定的。&nbsp;</P>
<P>　　我们在地球椭球面上所用的地理坐标系属于大地地理坐标系，简称大地坐标系<BR>　　确定椭球的大小后，还要进行椭球定向，即把旋转椭球面套在地球的一个适当的位置<BR>，这一位置就是该地理坐标系的“坐标原点”，是全部大地坐标计算的起算点,俗称“大地<BR>原点”&nbsp;</P>
<P><BR>&nbsp;&nbsp;<BR>二.地图投影&nbsp;&nbsp;<BR>　　是为解决由不可展的椭球面描绘到平面上的矛盾，用几何透视方法或数学分析的方法<BR>，将地球上的点和线投影到可展的曲面(平面、园柱面或圆锥面)上，将此可展曲面展成平<BR>面，建立该平面上的点、线和地球椭球面上的点、线的对应关系。&nbsp;</P>
<P><BR>相关内容&nbsp;<BR>功能演示栏目下的转换及投影&nbsp;<BR>&nbsp;&nbsp;<BR>三.高斯-克吕格直角坐标&nbsp;<BR>　　高斯－克吕格投影是设想用一个椭圆柱横套在地球椭球的外面，并与设定的中央经线<BR>相切。&nbsp;<BR>　　高斯－克吕格投影分带规定:该投影是国家基本比例尺地形图的数学基础，为控制变形<BR>，采用分带投影的方法，在比例尺&nbsp;1：2.5万-1：50万图上采用6°分带，对比例尺为&nbsp;1：<BR>1万及大于1：1万的图采用3°分带。&nbsp;</P>
<P><BR>　　6°分带法：从格林威治零度经线起，每6°分为一个投影带，全球共分为60个投影带<BR>，东半球从东经0°-6°为第一带，中央经线为3°，依此类推，投影带号为1-30。其投影<BR>代号n和中央经线经度L0的计算公式为：L0=(6n-3)°；西半球投影带从180°回算到0°，<BR>编号为31-60，投影代号n和中央经线经度L0的计算公式为L0=360-(6n-3)°。<BR>　　3°分带法：从东经1°30′起，每3°为一带，将全球划分为120个投影带，东经1°3<BR>0′-4°30′，...178°30′-西经178°30′，...1°30′-东经1°30′。&nbsp;&nbsp;</P>
<P><BR>　　东半球有60个投影带，编号1-60，各带中央经线计算公式：L0=3°n&nbsp;,中央经线为3°<BR>、6°...180°。<BR>　　西半球有60个投影带，编号1-60，各带中央经线计算公式：L0=360°-3°n&nbsp;,中央经线<BR>为西经177°、...3°、0°。&nbsp;</P>
<P><BR>　　我国规定将各带纵坐标轴西移500公里，即将所有y值加上500公里，坐标值前再加各带<BR>带号以18带为例，原坐标值为y=243353.5m，西移后为y=743353.5，加带号通用坐标为y=1<BR>8743353.5&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>四.我国地形图分幅与编号&nbsp;<BR>　　我国基本比例尺地形图分幅与编号，以1：100万地形图为基础，延伸出1：50万、1：<BR>25万&nbsp;<BR>1：10万，再以1：10万为基础，延伸出1：5万、1:2.5万及1：1万三种比例尺。&nbsp;<BR>　　1：100万从赤道起向两极每纬差4°为一行，至88°，南北半球各分为22横列，依次编<BR>号A、B、...&nbsp;V；由精度180°西向东每6°一列，全球60列，以1-60表示，如海南所在1：<BR>100万图在第5行，第49列，其编号为&nbsp;E-49&nbsp;&nbsp;<BR>　　在1：100万图上，按经差3°纬差2°分成四幅1：50万地形图，编为A、B、C、D，如&nbsp;<BR>E-49-A&nbsp;按经差1°30′纬差1°分成16幅1：25万地形图，编为[1]、...[16]，如&nbsp;E-49-[1<BR>]。按经差30′纬差20′分成144幅1：10万地形图，编为1、...144，如&nbsp;E-49-1。既后三种<BR>比例尺各自独立地与1：100万地图的图号联系。&nbsp;<BR>　　1：10万图上每经差15′纬差10′分成四幅1：5万地形图，编为A、B、C、D，如&nbsp;E-49<BR>-1-A　&nbsp;<BR>　　1：5万图上每经差7′30″纬差5′分成四幅1：2.5万，编为1、2、3、4，如&nbsp;E-49-1-<BR>A-1&nbsp;<BR>　　1：10万图上每经差3′45″纬差2′30″分成64幅1：1万地形图，编为(1)、...(64)，<BR>如<BR>E-49-1-A-(1)　&nbsp;</P>
<P>　　1：1万图上每经差1′52″纬差1′15″分成四幅1：5000地形图，编为a、b、c、d，如</P>
<P>E-49-1-A-(1)-a&nbsp;</P>
<P>------------------------------------------------------------------------------<BR>--<BR>4.&nbsp;地图符号　&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>一.地图符号的意义&nbsp;<BR>　　地图符号是地图上各种形状、大小和颜色的图形和文字的总称。它是地图内容体现的<BR>一种主要手段。是地图的基本特征之一。&nbsp;</P>
<P>&nbsp;&nbsp;<BR>二.地图符号的分类&nbsp;<BR>　　按几何精确性分类，分为：依比例符号、不依比例符号、半依比例符号。<BR>　　依比例符号是实地占有较大面积的物体，比例尺缩小后，仍能显示其轮廓，如大面积<BR>街区、大湖等。&nbsp;通常以线划表示其外轮廓，并填绘符号或普染颜色。<BR>　　不依比例符号实地上面积较小一般具有方位意义的物体，缩至图上只能显示一个点。<BR>这类符号仅以其定位点表示物体的位置。<BR>　　半依比例符号是实地上的狭长物体，其长度能依比例表示，而宽度则需夸大，如狭长<BR>街区、铁路、公路、土堤等符号，其宽度在图上均已扩大。在图上只能测其长度，不能测<BR>其宽度。&nbsp;</P>
<P><BR>三.地图符号表示地物的原则&nbsp;<BR>　　符号的“比例”概念：地面物体与符号图形的缩小比率并非总是一致，同一物体在较<BR>大比例尺图上能依比例表示，而在较小比例尺图上则为半依比例号和非依比例符号。符号<BR>的比例关系具有一定的相对性。<BR>　　符号的定位：不依比例符号都是扩大了的图形，一般在设计时就已规定了符号的哪一<BR>部分代&nbsp;&nbsp;表地物的真实位置，这些规定的点和线，就叫定位点和定位线。&nbsp;</P>
<P>&nbsp;&nbsp;关于MAPGIS的符号请看功能演示栏目下的编辑子系统中编辑符号库的功能菜单&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>------------------------------------------------------------------------------<BR>--<BR>5.&nbsp;普通地图的内容要素及表示方法:　&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>一.普通地图上的内容要素-数学要素、地理要素和图廓外要素&nbsp;<BR>　　数学要素——坐标网、地图比例尺、地图定向等　　<BR>　　地理要素——包括自然地理要素、社会经济要素和其他标志<BR>　　自然地理要素有水系、地貌和图质植被；<BR>　　社会经济要素有居民地、交通网、境界和行政中心；<BR>　　其他标志为方位物、经济标志、科学文化标志等。<BR>　　图廓外要素——图名、图号、接图表、图例、图廓、分度带、比例尺、坡度尺及坐标<BR>系统等&nbsp;</P>
<P>&nbsp;&nbsp;<BR>二.水系及其在图上表示&nbsp;<BR>　　水系是指海洋、江河、湖泊、水库、水渠、井泉各种自然的人工的水文物体的总称。</P>
<P>　　关于河流及沟渠的表示：我国1971年《图式》中规定河流单双线的分界宽为0.4mm，即<BR>凡双线河就表示真实的河宽。<BR>　　对中小比例尺地形图(如1：5万)补充规定“实地宽100m以上的合理就扩大绘为双线”<BR>(从0.2扩大到0.4）实地河宽100米到200米这段成为符号性双线河(或称记号双线河)，它不<BR>表示真宽，要注明河宽注记。<BR>　　对小比例尺图上的河流有两种表示方法，其一，单线配合不依比例尺双线(又称过度性<BR>符号)和依比例双线的表示方法；其二，是单线配合单线真形符号表示。&nbsp;所谓单线真形符<BR>号是将河流全部填满与水涯线相同的普染色。&nbsp;</P>
<P>&nbsp;&nbsp;<BR>三.居民地及其在图上表示&nbsp;<BR>　　居民地是指各种建筑物组成的城市、集镇、农村或其他居住区的总称。<BR>　　当居民地受比例尺限制不能用真形表示时，可用圈形符号来表示居民地的位置，符号<BR>的定位点表示居民地的中心区域，符号与地物的相对关系表示居民地中心区域与地物的相<BR>对关系。&nbsp;</P>
<P>&nbsp;&nbsp;<BR>四.交通及其在图上表示&nbsp;<BR>　　交通网是各种运输的总称。它包括陆地交通、水陆交通和空中交通及管线运输几类。</P>
<P>　　道路符号是线状的，但在比例尺缩小后，它的宽度是夸大的，以我国地形图为例，铁<BR>路宽0.6mm，在1：10万图上等于实地60m，在1：50万图上为300m。　　&nbsp;<BR>&nbsp;&nbsp;<BR>五.地貌及其在图上表示&nbsp;<BR>　　晕渲法，假定光源在固定的方向上，用浓淡渐变的半色调(墨和颜色)在图上显示地貌<BR>主体形态，其实质是光彩立体感在地图上的应用。&nbsp;&nbsp;</P>
<P>　　等高线法，用一组有一定间隔(高差)的等高线的组合来反映地面的起伏形态。<BR>　　首曲线，按相应比例尺规定的等高距测绘的等高线，图上用细线表示。<BR>　　计曲线，为方便查看等高线的高程，规定从零米起算，每隔四条基本等高线加粗成粗<BR>实线。<BR>　　间曲线，按等高距的二分之一测绘的等高线，用与首曲线等粗的虚线表示，补充显示<BR>局部形态&nbsp;&nbsp;</P>
<P><BR>　　分层设色法，在不同高程带，普染不同色调的颜色来表示地貌起伏的方法。&nbsp;<BR>&nbsp;&nbsp;<BR>六.境界及其在图上表示&nbsp;<BR>　　境界是地区政治行政管辖的界线。普通地图上，可分为政区界和其他境界两大类。&nbsp;</P>
<P>　　地形图上境界的表示有以下的规定：<BR>　　两级以上的境界重合时，只表示出高一级的境界。飞地的界线用其所属的行政单位的<BR>境界符号表示，并在其范围内加隶属注记。<BR>　　境界沿河流、道路、山脊等线状地物延伸的，可以省略重合部的境界符号或在线状地<BR>物的中心，两侧或一测描绘其符号。以河流为例：当一河流中心线或主航道线为界时，境<BR>界符号在水域内或河流符号两侧不间断的交错绘出。以共有河流为界的，在河流两侧每3-<BR>4厘米交错绘出。以河流一侧为界的，在相应一侧不间断绘出。以山脊、山谷为界的不间断<BR>绘出，其通过的山头、山口、谷地等的中心位置不变，保持与地貌图形的协调性。&nbsp;<BR>------------------------------------------------------------------------------<BR>--<BR>七.&nbsp;传统测绘与“3S”“数字地球”:　&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>　　传统测绘主要包括三个组成部分即大地测量、航空摄影测量、制图，在与计算机和通<BR>讯技术融合的过程中发展出新的测绘体系，以“3S”为基础的产业技术体系即地理信息系<BR>统GIS、全球定位系统GPS、遥感RS。“数字地球”的美好前景，更使得地理信息产业再次<BR>唤起全球的关注。&nbsp;</P>
<P>　　按国际上当前发展的趋势，测绘必将与社会经济应用领域更紧密的结合起来，缩短与<BR>用户的差距，更符合用户的需要，测绘必将从专业化走向大众化。数字制图与GIS工作者正<BR>是这种趋势的重要推动力！&nbsp;<BR></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=411" /> 
	  <id>http://www.openx.cn/default.asp?id=411</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[泰坦尼克号2 深海魅影—杰克归来  预告片]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-01-25T09:15:33+08:00</updated>
	  <published>2007-01-25T09:15:33+08:00</published>
		  <summary type="html"><![CDATA[<P>《泰坦尼克号》续集：<BR>中文名称：泰坦尼克号2 深海魅影—杰克归来<BR>英文名称：Titanic2 - Jack is back<BR>资源类型：DVDRip 版本：AC3 发行时间：2007年夏<SPAN class=fullpost><BR>电影导演：詹姆斯·卡梅伦James Cameron<BR>电影演员：莱昂纳多·迪卡普里奥Leonardo DiCaprio　　　　　<BR>凯特·温丝莱特Kate Winslet　　　　　<BR>比利·赞恩Billy Zane　　　　　<BR>凯茜·贝茨Kathy Bates　　　　　<BR>格罗丽亚·斯图尔特Gloria Stuart<BR>地区：美国语言：英语<BR></SPAN></P>
<P><SPAN class=fullpost>在这个名为《Titanic:2：jack is back》预告片中，讲述为救爱人露斯而溺毙的杰克，几十年后被人发现冰冻于深海中，获得解救后的杰克对现代人的生活十分之不习惯，于是决定从研究所逃出去，找寻露斯的芳踪，期间还遭到警方及研究所人员的追捕，险象环生。预告片末尾还特别注明，这个夏天影片将正式上映。　　<BR><BR>由于制作预告的影迷，用了不少莱昂纳多在《泰》片的片段，以及一些他的旧作，如《猫鼠游戏》、《赤子本色》及《罗密欧与朱丽叶》等电影片段来剪辑预告片，加上影星约翰·库萨克和珍妮弗·康纳莉等人都于片中现身，认真的制作和巧妙的剪接令不少网友都以为《泰》片真的秘密拍了续集，以为是真的预告片。</P></SPAN>
<P>[swf]http://video.qq.com/res/qqplayerout.swf?vid=0bg0U6D3S2b[/swf]</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=410" /> 
	  <id>http://www.openx.cn/default.asp?id=410</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[服务器安全设置]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-01-24T11:22:24+08:00</updated>
	  <published>2007-01-24T11:22:24+08:00</published>
		  <summary type="html"><![CDATA[<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><SPAN class=content>
<P><STRONG class="style2 style8"><FONT color=#ff0000 size=3>1、<SPAN class=style9>服务器安全设置之--</SPAN>硬盘权限篇</FONT></STRONG><A name=1></A><BR><BR>&nbsp;&nbsp;&nbsp;这里着重谈需要的权限，也就是最终文件夹或硬盘需要的权限，可以防御各种木马入侵，提权攻击，跨站攻击等。本实例经过多次试验，安全性能很好，服务器基本没有被木马威胁的担忧了。</P>
<P>===================================================</P>
<P>===================================================</P>
<DIV></DIV>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\</FONT></STRONG></SPAN> <SPAN class=warningColor><STRONG><FONT color=#ff0000>D:\</FONT></STRONG></SPAN> <SPAN class=warningColor><STRONG><FONT color=#ff0000>E:\</FONT></STRONG></SPAN> <SPAN class=warningColor><STRONG><FONT color=#ff0000>F:\</FONT></STRONG></SPAN> 类推 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=9>
<DIV align=left></DIV>
<DIV align=center>无<BR><SPAN class=style7><FONT color=#0000ff>如果安装了其他运行环境，比如PHP等，则根据PHP的环境功能要求来设置硬盘权限，一般是安装目录加上users读取运行权限就足够了，比如c:\php的话，就在根目录权限继承的情况下加上users读取运行权限，需要写入数据的比如tmp文件夹，则把users的写删权限加上，运行权限不要，然后把虚拟主机用户的读权限拒绝即可。如果是mysql的话，用一个独立用户运行MYSQL会更安全，下面会有介绍。如果是winwebmail，则最好建立独立的应用程序池和独立IIS用户，然后整个安装目录有winwebmail进程用户的读/运行/写/权限，IIS用户则相同，这个IIS用户就只用在winwebmail的WEB访问中，其他IIS站点切勿使用，安装了winwebmail的服务器硬盘权限设置后面举例</FONT></SPAN></DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹:<SPAN class=warningColor><STRONG><FONT color=#ff0000> C:\Inetpub\</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=9>
<DIV align=left></DIV>
<DIV align=center>无</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;继承于c:\&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;继承于c:\&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;继承于c:\&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹:<STRONG><FONT color=#ff0000><SPAN class=warningColor> C:\Inetpub\</SPAN><SPAN class=warningColor>AdminScripts</SPAN></FONT></STRONG> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=6>
<DIV align=left></DIV>
<DIV align=center>无</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Inetpub\wwwroot </FONT></STRONG></SPAN>
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>IIS_WPG</DIV></TD>
<TD width="31%">
<DIV align=left>读取运行/列出文件夹目录/读取</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD></TD>
<TD>
<DIV align=left>该文件夹，子文件夹及文件</DIV></TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD>
<DIV align=right>Users</DIV></TD>
<TD>读取运行/列出文件夹目录/读取</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD colSpan=2 rowSpan=3>
<DIV class=style7 align=center>
<DIV align=right>这里可以把虚拟主机用户组加上<BR>同Internet 来宾帐户一样的权限<BR>拒绝权限</DIV></DIV></TD>
<TD>
<DIV align=right>Internet 来宾帐户 </DIV></TD>
<TD>创建文件/写入数据/:拒绝<BR>创建文件夹/附加数据/:拒绝 <BR>写入属性/:拒绝<BR>写入扩展属性/:拒绝 <BR>删除子文件夹及文件/:拒绝<BR>删除/:拒绝</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Inetpub\wwwroot\aspnet_client</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>Users</DIV></TD>
<TD width="31%">读取</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=3>&nbsp;</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Documents and Settings </FONT></STRONG></SPAN>
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=6>
<DIV align=left></DIV>
<DIV align=center>无</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Documents and Settings\All Users</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>Users</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=3>
<DIV class=style7 align=center>USERS组的权限仅仅限制于读取和运行，<BR>绝对不能加上写入权限</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Documents and Settings\All Users\「开始」菜单</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=6>
<DIV align=center>无</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Documents and Settings\All Users\Application Data</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>Users</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD>
<TD width="21%">
<DIV align=right>Users</DIV></TD>
<TD width="31%">写入</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD>
<TD></TD>
<TD>该文件夹，子文件夹</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=5>
<DIV class=style7 align=center>两个并列权限同用户组需要分开列权限</DIV></TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Documents and Settings\All Users\Application Data\Microsoft</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>Users</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=3>
<DIV class=style7 align=center>此文件夹包含 Microsoft 应用程序状态数据</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>Everyone</DIV></TD>
<TD width="31%">
<P>列出文件夹、读取属性、读取扩展属性、创建文件、创建文件夹、写入属性、写入扩展属性、读取权限 
<DIV></DIV></TD></TR>
<TR>
<TD></TD>
<TD>只有该文件夹</TD>
<TD rowSpan=2>
<DIV class=style7 align=center>Everyone这里只有读写权限，不能加运行和删除权限，仅限该文件夹</DIV></TD>
<TD>只有该文件夹</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\DSS\MachineKeys</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>Everyone</DIV></TD>
<TD width="31%">
<P>列出文件夹、读取属性、读取扩展属性、创建文件、创建文件夹、写入属性、写入扩展属性、读取权限 
<DIV></DIV></TD></TR>
<TR>
<TD></TD>
<TD>只有该文件夹</TD>
<TD rowSpan=2><SPAN class=style7><FONT color=#0000ff>Everyone这里只有读写权限，不能加运行和删除权限，仅限该文件夹</FONT></SPAN></TD>
<TD>只有该文件夹</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Documents and Settings\All Users\Application Data\Microsoft\HTML Help</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>Users</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=3>
<DIV align=center></DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Cm</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>Everyone</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=3>
<DIV class=style7 align=center>Everyone这里只有读和运行权限</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Documents and Settings\All Users\Application Data\Microsoft\Network\Downloader</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=6>
<DIV align=center>无 </DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Documents and Settings\All Users\Application Data\Microsoft\Media Index</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>Users</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;继承于上一级文件夹&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD>
<DIV align=right>Users</DIV></TD>
<TD>创建文件/写入数据<BR>创建文件夹/附加数据<BR>写入属性<BR>写入扩展属性<BR>读取权限 </TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD></TD>
<TD>只有该文件夹</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD colSpan=2 rowSpan=3>&nbsp;</TD>
<TD>
<DIV align=right>Users</DIV></TD>
<TD>创建文件/写入数据<BR>创建文件夹/附加数据<BR>写入属性<BR>写入扩展属性</TD></TR>
<TR>
<TD></TD>
<TD>只有该子文件夹和文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Documents and Settings\All Users\DRM</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD colSpan=2 rowSpan=15>
<DIV align=center>这里需要把GUEST用户组和IIS访问用户组全部禁止<BR>Everyone的权限比较特殊，默认安装后已经带了<BR>主要是要把IIS访问的用户组加上所有权限都禁止</DIV></TD>
<TD width="21%">
<DIV align=right>Users</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>Guests</DIV></TD>
<TD>拒绝所有</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>Guest</DIV></TD>
<TD>拒绝所有</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD rowSpan=3>
<DIV align=right>IUSR_XXX<BR>或某个虚拟主机用户组</DIV></TD>
<TD>拒绝所有</TD></TR>
<TR>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Documents and Settings\All Users\Documents</FONT></STRONG></SPAN> (共享文档) 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=11>
<DIV align=center>无</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Program Files</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD class=style7 width="21%">
<DIV align=right>IIS_WPG</DIV></TD>
<TD class=style7 width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD class=style7></TD>
<TD class=style7>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD class=style7></TD>
<TD class=style7>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD>
<TD rowSpan=3>
<DIV class=style2 align=right>IUSR_XXX<BR>或某个虚拟主机用户组</DIV></TD>
<TD class=style2>列出文件夹/读取数据 ：拒绝</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD>
<TD class=style2>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD>
<TD class=style2>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=3>
<DIV class=style7 align=center>IIS虚拟主机用户组禁止列目录，可有效防止FSO类木马<BR>如果安装了aspjepg和aspupload</DIV></TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Program Files\Common Files</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD class=style7 width="21%">
<DIV align=right>IIS_WPG</DIV></TD>
<TD class=style7 width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD class=style7></TD>
<TD class=style7>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD class=style7></TD>
<TD class=style7>&lt;继承于上级目录&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD>
<TD class=style2 rowSpan=3>
<DIV class=style2 align=right>Users</DIV></TD>
<TD class=style2>读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD>
<TD class=style2>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD>
<TD class=style2>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=3>
<DIV class=style2 align=center>复合权限，为IIS提供快速安全的运行环境</DIV></TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Program Files\Common Files\Microsoft Shared\web server extensions</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=11>
<DIV align=center>无</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Program Files\Microsoft SQL Server\MSSQL</FONT></STRONG></SPAN> (程序部分默认装在C：盘) 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=3>
<DIV align=center>无</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>E:\Program Files\Microsoft SQL Server</FONT></STRONG></SPAN> (数据库部分装在E：盘的情况) 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=11>
<DIV align=center>无</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>E:\Program Files\Microsoft SQL Server\MSSQL</FONT></STRONG></SPAN> (数据库部分装在E：盘的情况) 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=6>
<DIV align=center>无</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Program Files\Internet Explorer\iexplore.exe</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=6>
<DIV align=center>无</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Program Files\Outlook Express</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=11>
<DIV align=center>无</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Program Files\PowerEasy5</FONT></STRONG></SPAN> (如果装了动易组件的话) 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=11>
<DIV align=center>无</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Program Files\Radmin</FONT></STRONG></SPAN> (如果装了Radmin远程控制的话) 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=11>
<DIV align=center>无<BR><SPAN class=style7><FONT color=#0000ff>对应的c:\windows\system32里面有两个文件<BR>r_server.exe和AdmDll.dll<BR>要把Users读取运行权限去掉<BR>默认权限只要administrators和system全部权限</FONT></SPAN></DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Program Files\Serv-U</FONT></STRONG></SPAN> (如果装了Serv-U服务器的话) 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=11>
<DIV align=center>无<BR><FONT color=#0000ff><SPAN class=style7>这里常是提权入侵的一个比较大的漏洞点<BR>一定要按这个方法设置<BR>目录名字根据Serv-U版本也可能是</SPAN><BR></FONT><FONT color=#ff0000><SPAN class=style2>C:\Program Files\RhinoSoft.com\Serv-U</SPAN><BR></FONT></DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Program Files\Windows Media Player</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=11>
<DIV align=center>无<BR></DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Program Files\Windows NT\Accessories</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=11>
<DIV align=center>无<BR></DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\Program Files\WindowsUpdate</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=11>
<DIV align=center>无<BR></DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\WINDOWS</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>Users</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD>
<TD class=style2 rowSpan=3>&nbsp;</TD>
<TD class=style2>&nbsp;</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD>
<TD class=style2>&nbsp;</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD>
<TD class=style2>&nbsp;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=3>
<DIV class=style7 align=center></DIV></TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\WINDOWS\repair</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%" rowSpan=3>
<DIV class=style2 align=right>IUSR_XXX<BR>或某个虚拟主机用户组</DIV></TD>
<TD class=style2 width="31%">列出文件夹/读取数据 ：拒绝</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD class=style2>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD class=style2>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=8>
<DIV class=style7 align=center>虚拟主机用户访问组拒绝读取，有助于保护系统数据<BR>这里保护的是系统级数据<SPAN class=style2><FONT color=#ff0000>SAM</FONT></SPAN></DIV></TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\WINDOWS\IIS Temporary Compressed Files</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="18%">
<DIV align=right>Administrators</DIV></TD>
<TD width="27%">完全控制</TD>
<TD width="21%" rowSpan=3>
<DIV class=style7 align=right>USERS</DIV></TD>
<TD width="34%">读取和写入/删除</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;继承于C:\windows&gt;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD>
<TD width="21%" rowSpan=3>
<DIV align=right><SPAN class=style7><FONT color=#0000ff>IIS_WPG</FONT></SPAN></DIV></TD>
<TD width="34%">读取和写入/删除</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;继承于C:\windows&gt;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=9>
<DIV align=center><SPAN class=style2><FONT color=#ff0000>建议装了MCAFEE或NOD的用户把此文件夹，禁止写入一些文件类型比如*.EXE和*.com等可执行文件或vbs类脚本</FONT></SPAN></DIV></TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;继承于C:\windows&gt;</TD></TR>
<TR>
<TD width="18%" rowSpan=3>
<DIV class=style2 align=right>IUSR_XXX<BR>或某个虚拟主机用户组</DIV></TD>
<TD class=style2 width="27%">列出文件夹/读取数据 ：拒绝</TD></TR>
<TR>
<TD class=style2>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD class=style2>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD rowSpan=3>
<DIV class=style2 align=right>Guests</DIV></TD>
<TD class=style2 width="27%">列出文件夹/读取数据 ：拒绝</TD></TR>
<TR>
<TD class=style2>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD class=style2>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD colSpan=4>
<DIV class=style2 align=center></DIV>
<DIV class=style7 align=right></DIV></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\WINDOWS\Microsoft.NET\Framework\版本\Temporary ASP.NET Files</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="21%">
<DIV align=right>Administrators</DIV></TD>
<TD width="31%">完全控制</TD>
<TD width="21%" rowSpan=3>
<DIV class=style7 align=right>ASP.NET 计算机帐户</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;继承于C:\windows&gt;</TD>
<TD>&lt;继承于C:\windows&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD>
<TD width="21%" rowSpan=3>
<DIV align=right><SPAN class=style7><FONT color=#0000ff>ASP.NET 计算机帐户</FONT></SPAN></DIV></TD>
<TD width="31%">写入/删除</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;继承于C:\windows&gt;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD rowSpan=3>
<DIV class=style7 align=right></DIV>
<DIV class=style7 align=right>IIS_WPG</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;继承于C:\windows&gt;</TD>
<TD>&lt;继承于C:\windows&gt;</TD></TR>
<TR>
<TD width="21%" rowSpan=3>
<DIV class=style2 align=right>IUSR_XXX<BR>或某个虚拟主机用户组</DIV></TD>
<TD class=style2 width="31%">列出文件夹/读取数据 ：拒绝</TD>
<TD rowSpan=3>
<DIV class=style7 align=right></DIV>
<DIV align=right><SPAN class=style7><FONT color=#0000ff>IIS_WPG</FONT></SPAN></DIV></TD>
<TD width="31%">写入(<SPAN class=style2><FONT color=#ff0000>原来有删除权限要去掉</FONT></SPAN>)</TD></TR>
<TR>
<TD class=style2>该文件夹，子文件夹及文件</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD class=style2>&lt;不是继承的&gt;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD rowSpan=3>
<DIV class=style2 align=right>Guests</DIV></TD>
<TD class=style2 width="31%">列出文件夹/读取数据 ：拒绝</TD>
<TD align=middle rowSpan=3>
<DIV class=style7 align=right>LOCAL SERVICE</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD class=style2>该文件夹，子文件夹及文件</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD class=style2>&lt;不是继承的&gt;</TD>
<TD>&lt;继承于C:\windows&gt;</TD></TR>
<TR>
<TD rowSpan=3>
<DIV align=right>USERS</DIV></TD>
<TD width="31%">读取和运行</TD>
<TD align=middle rowSpan=3>
<DIV align=right><SPAN class=style7><FONT color=#0000ff>LOCAL SERVICE</FONT></SPAN></DIV></TD>
<TD width="31%">写入/删除</TD></TR>
<TR>
<TD>该文件夹，子文件夹及文件</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&lt;继承于C:\windows&gt;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD align=middle rowSpan=3>
<DIV class=style7 align=right>NETWORK SERVICE</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD>&lt;继承于C:\windows&gt;</TD></TR>
<TR>
<TD class=style7 colSpan=2 rowSpan=3>
<DIV class=style2 align=center>建议装了MCAFEE或NOD的用户把此文件夹，禁止写入一些文件类型，比如*.EXE和*.com等可执行文件或vbs类脚本</DIV></TD>
<TD align=middle rowSpan=3>
<DIV align=right><SPAN class=style7><FONT color=#0000ff>NETWORK SERVICE</FONT></SPAN></DIV></TD>
<TD width="31%">写入/删除</TD></TR>
<TR>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\WINDOWS\system32</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>Users</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD>
<TD width="21%" rowSpan=3>
<DIV class=style2 align=right>IUSR_XXX<BR>或某个虚拟主机用户组</DIV></TD>
<TD class=style2 width="31%">列出文件夹/读取数据 ：拒绝</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD>
<TD class=style2>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD>
<TD class=style2>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=5>
<DIV class=style7 align=center>虚拟主机用户访问组拒绝读取，有助于保护系统数据</DIV></TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\WINDOWS\system32\config</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>Users</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD>
<TD width="21%" rowSpan=3>
<DIV class=style2 align=right>IUSR_XXX<BR>或某个虚拟主机用户组</DIV></TD>
<TD class=style2 width="31%">列出文件夹/读取数据 ：拒绝</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD>
<TD class=style2>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD>
<TD class=style2>&lt;继承于上一级目录&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=5>
<DIV class=style7 align=center>虚拟主机用户访问组拒绝读取，有助于保护系统数据</DIV></TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\WINDOWS\system32\inetsrv\</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>Users</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD>
<TD width="21%" rowSpan=3>
<DIV class=style2 align=right>IUSR_XXX<BR>或某个虚拟主机用户组</DIV></TD>
<TD class=style2 width="31%">列出文件夹/读取数据 ：拒绝</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD>
<TD class=style2>只有该文件夹</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD>
<TD class=style2>&lt;继承于上一级目录&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=5>
<DIV class=style7 align=center>虚拟主机用户访问组拒绝读取，有助于保护系统数据</DIV></TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\WINDOWS\system32\inetsrv\ASP Compiled Templates</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>IIS_WPG</DIV></TD>
<TD width="31%">完全控制</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD colSpan=2 rowSpan=4>&nbsp;</TD>
<TD width="21%" rowSpan=3>
<DIV class=style2 align=right>IUSR_XXX<BR>或某个虚拟主机用户组</DIV></TD>
<TD class=style2 width="31%">列出文件夹/读取数据 ：拒绝</TD></TR>
<TR>
<TD class=style2>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD class=style2>&lt;继承于上一级目录&gt;</TD></TR>
<TR>
<TD colSpan=2 rowSpan=3>
<DIV class=style7 align=center>虚拟主机用户访问组拒绝读取，有助于保护系统数据</DIV></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\WINDOWS\system32\inetsrv\iisadmpwd</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD colSpan=2 rowSpan=11>
<DIV align=center>无</DIV></TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#cccccc>
<TD colSpan=4>硬盘或文件夹: <SPAN class=warningColor><STRONG><FONT color=#ff0000>C:\WINDOWS\system32\inetsrv\MetaBack</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%">
<DIV align=right>Users</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD>
<TD width="21%" rowSpan=3>
<DIV class=style2 align=right>IUSR_XXX<BR>或某个虚拟主机用户组</DIV></TD>
<TD class=style2 width="31%">列, 出文件夹/读取数据 ：拒, 绝</TD></TR>
<TR>
<TD></TD>, 
<TD>只有子文件夹及文件</TD>
<TD class=style2>该文件夹，子文件夹及文件</TD></TR><T, R>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD>
<TD class=style2>&lt;继承于上一级目录&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=5>
<DIV class=style7 align=center>虚拟主机用户访问组拒绝读取，有助于保护系统数据</DIV></TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#ffff66>
<TD colSpan=4><SPAN class=warningColor><STRONG><FONT color=#ff0000>Winwebmail 电子邮局安装后权限举例：目录E:\</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%" rowSpan=3>
<DIV class=style7 align=right><FONT color=#ff0000><SPAN class=style2>IUSR_XXXXXX</SPAN><BR></FONT>这个用户是WINWEBMAIL访问WEB站点专用帐户</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD>
<TD colSpan=2 rowSpan=8>
<DIV class=style7 align=center></DIV></TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=2 width="90%" align=center border=2>
<TBODY>
<TR bgColor=#ffff66>
<TD colSpan=4><SPAN class=warningColor><STRONG><FONT color=#ff0000>Winwebmail 电子邮局安装后权限举例：目录E:\WinWebMail</FONT></STRONG></SPAN> 
<DIV align=left></DIV></TD></TR>
<TR>
<TD class=style6 bgColor=#000000 colSpan=2>主要权限部分：</TD>
<TD class=style6 bgColor=#006600 colSpan=2>其他权限部分：</TD></TR>
<TR>
<TD width="19%">
<DIV align=right>Administrators</DIV></TD>
<TD width="29%">完全控制</TD>
<TD width="21%" rowSpan=3>
<DIV class=style7 align=right><FONT color=#ff0000><SPAN class=style2>IUSR_XXXXXX</SPAN><BR></FONT>WINWEBMAIL访问WEB站点专用帐户</DIV></TD>
<TD width="31%">读取和运行</TD></TR>
<TR>
<TD></TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;继承于E:\&gt;</TD>
<TD>&lt;继承于E:\&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>CREATOR OWNER</DIV></TD>
<TD>完全控制</TD>
<TD width="21%" rowSpan=3>
<DIV align=right>Users</DIV></TD>
<TD width="31%">修改/读取运行/列出文件目录/读取/写入</TD></TR>
<TR>
<TD></TD>
<TD>只有子文件夹及文件</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD></TD>
<TD>&lt;继承于E:\&gt;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD>
<DIV align=right>SYSTEM</DIV></TD>
<TD>完全控制</TD>
<TD rowSpan=3>
<DIV class=style7 align=right><FONT color=#ff0000><SPAN class=style2>IUSR_XXXXXX</SPAN><BR></FONT>WINWEBMAIL访问WEB站点专用帐户</DIV></TD>
<TD width="31%">修改/读取运行/列出文件目录/读取/写入</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>该文件夹，子文件夹及文件</TD>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&lt;继承于E:\&gt;</TD>
<TD>&lt;不是继承的&gt;</TD></TR>
<TR>
<TD colSpan=2 rowSpan=3>
<DIV align=center><SPAN class=style7><SPAN class=style2><FONT color=#ff0000>IUSR_XXXXXX</FONT></SPAN></SPAN>和<FONT color=#ff0000><SPAN class=style7><SPAN class=style2>IWAM_XXXXXX </SPAN></SPAN><BR></FONT>是winwebmail专用的IIS用户和应用程序池用户<BR>单独使用，安全性能高</DIV></TD>
<TD rowSpan=3>
<DIV class=style7 align=right><FONT color=#ff0000><SPAN class=style2>IWAM_XXXXXX</SPAN><BR></FONT>WINWEBMAIL应用程序池专用帐户</DIV></TD>
<TD width="31%">修改/读取运行/列出文件目录/读取/写入</TD></TR>
<TR>
<TD>该文件夹，子文件夹及文件</TD></TR>
<TR>
<TD>&lt;不是继承的&gt;</TD></TR></TBODY></TABLE></SPAN></TD></TR></TBODY></TABLE></SPAN><BR>摘:http://xiong.blog.51cto.com/blog/811/15934]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=409" /> 
	  <id>http://www.openx.cn/default.asp?id=409</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[在 SQL Server 2005 中使用表值函数来实现空间数据库]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-01-24T10:24:00+08:00</updated>
	  <published>2007-01-24T10:24:00+08:00</published>
		  <summary type="html"><![CDATA[<H1>在 SQL Server 2005 中使用表值函数来实现空间数据库</H1>
<H2 class=subtitle></H2>
<DIV class=date>发布日期： 1/6/2006<SPAN class=datePipe> | </SPAN>更新日期： 1/6/2006</DIV>
<DIV class=overview>
<P>Gyorgy Fekete 和 Alex Szalay<BR>约翰霍普金丝大学</P>
<P>Jim Gray<BR>Microsoft（联系作者）</P>
<P>适用于<BR>Microsoft SQL Server 2005 </P>
<P><B>摘要：</B>本文说明了如何使用 C# 和表值函数将空间搜索函数（“邻近点的点”和“多边形内的点”）添加到 Microsoft SQL Server 2005。使用此库可以在不编写任何特殊代码的情况下向应用程序中添加空间搜索。此库实现了来自约翰霍普金丝大学的公共域 C# 分层三角网格 (HTM) 算法。该 C# 库使用一组标量值函数和表值函数连接到 SQL Server 2005。这些函数起空间索引的作用。 </P>
<P>您可以<A href="http://download.microsoft.com/download/1/3/4/134644FD-05AD-4EE8-8B5A-0AED1C18A31E/Table_Valued_Functions.doc">下载</A>本文档的 Microsoft Word 版本。</P></DIV>
<CENTER><IMG title="" height=6 alt=* src="http://img.microsoft.com/library/gallery/templates/MNP2.Common/images/3squares.gif" width=30 border=0></CENTER>
<DIV style="HEIGHT: 18px"></DIV>
<H5 style="PADDING-TOP: 2px">本页内容</H5>
<TABLE style="MARGIN-TOP: 7px; MARGIN-BOTTOM: 12px" cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR vAlign=top>
<TD><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#E1B"><IMG height=9 alt=简介 hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></A></TD>
<TD class=onThisPage><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#E1B">简介</A></TD></TR>
<TR vAlign=top>
<TD><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#EPC"><IMG height=9 alt=表值函数：主要概念 hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></A></TD>
<TD class=onThisPage><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#EPC">表值函数：主要概念</A></TD></TR>
<TR vAlign=top>
<TD><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#ELD"><IMG height=9 alt=使用表值函数添加空间索引 hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></A></TD>
<TD class=onThisPage><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#ELD">使用表值函数添加空间索引</A></TD></TR>
<TR vAlign=top>
<TD><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#EHF"><IMG height=9 alt=数据集 hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></A></TD>
<TD class=onThisPage><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#EHF">数据集</A></TD></TR>
<TR vAlign=top>
<TD><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#E2PAC"><IMG height=9 alt=典型查询 hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></A></TD>
<TD class=onThisPage><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#E2PAC">典型查询</A></TD></TR>
<TR vAlign=top>
<TD><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#EVDAE"><IMG height=9 alt=结束语 hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></A></TD>
<TD class=onThisPage><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#EVDAE">结束语</A></TD></TR>
<TR vAlign=top>
<TD><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#EDEAE"><IMG height=9 alt="附录 A：参考资料" hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></A></TD>
<TD class=onThisPage><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#EDEAE">附录 A：参考资料</A></TD></TR>
<TR vAlign=top>
<TD><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#EYEAE"><IMG height=9 alt="附录 B：基本 HTM 例程" hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></A></TD>
<TD class=onThisPage><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#EYEAE">附录 B：基本 HTM 例程</A></TD></TR></TBODY></TABLE><A name=E1B></A>
<H2>简介</H2>
<P>空间数据搜索常用于商业和科学应用程序。结合在针对天文领域构建 SkyServer (<A href="http://skyserver.sdss.org/"><EM>http://skyserver.sdss.org/</EM></A>)方面的努力，我们开发了一种空间搜索系统。SkyServer 是一个几千 GB 大小的数据库，其中收录了大约 3 亿个天体对象。天文学家需要对该数据库进行的许多查询都会涉及到空间搜索。典型的查询包括：“邻近此点的对象有哪些”、“此区域内包含哪些对象”以及“哪些区域与此区域有重叠”？</P>
<P>在本文中，我们向天文学家的赤经/赤纬 (ra/dec) 天球（天空）网格添加了纬度/经度 (lat/lon) 地球网格。这两种网格大致相同，但并非精确对应，传统顺序 lat-lon 与 dec-ra 相对应。这一顺序上的颠倒迫使我们必须明确坐标系。我们将格林尼治子午线-赤道大地坐标系称为 LatLon 坐标系。该库支持三种坐标系： </P>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P>格林尼治纬度-经度，称为 LatLon。 </P></TD></TR>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P>天文赤经-赤纬，称为 J2000。 </P></TD></TR>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P>笛卡尔 (x, y, z)，称为笛卡尔。 </P></TD></TR></TBODY></TABLE>
<P>天文学家使用弧度分作为标准的距离度量。由于一海里为一弧度分，因此距离转换非常简单。其他许多概念也极为相似。为了说明这些问题，本文将演示如何使用此空间库针对两个 USGS 数据集构建空间索引，这两个数据集是：美国城市和美国流量计。本文使用这些索引和一些空间函数提供了若干示例，来说明如何搜索邻近某一点的城市、如何查找邻近某一城市的流量计以及如何查找某个州（多边形区域）内的流量计或城市。 </P>
<P>我们认为此方法具有通用性。可以向几乎所有应用程序中添加空间数据核心架构和空间数据函数以便进行空间查询。这些概念也适用于其他的多维索引方案。例如，这些技术可用于搜索颜色空间或其他任何低维度度量空间。</P>
<DIV style="MARGIN-TOP: 3px; MARGIN-BOTTOM: 10px"><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#top"><IMG height=9 alt=返回页首 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width=7 border=0></A><A class=topOfPage href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#top">返回页首</A></DIV><A name=EPC></A>
<H2>表值函数：主要概念</H2>
<P>关系代数的主要概念是，每个关系运算符均使用一个或多个关系，并生成一个输出关系。SQL 是对这一概念的语法修饰，使您可以定义关系（数据定义语言）和用选择-插入-更新-删除语法来操作关系。</P>
<P>定义自己的标量函数使您可以对关系数据库进行扩展：您可以发送邮件，可以执行命令脚本，还可以计算非标准标量和聚合值，例如 <B>tax()</B> 或 <B>median()</B>。</P>
<P>但是，如果您可以创建表，则可以成为关系引擎的一部分：既是关系表的生成者，也是其使用者。这就是 OLEDB 的概念，此概念允许任何数据源生成数据流。这也是 SQL Server 2000 表值函数蕴含的概念。 </P>
<P>在 Transact-SQL 中实现表值函数很简单：</P><PRE class=codeSample>create function t_sql_tvfPoints() 
returns @points table (x float, y float)
as begin
insert @points values(1,2);
insert @points values(3,4);
return;
end
</PRE>
<P>如果可以完全在 Transact-SQL 中执行函数，这样做就可以了。但是，在 SQL Server 2000 中，要在 Transact-SQL 外部实现 OLEDB 数据源或表值函数确实非常困难。 </P>
<P>而 SQL Server 2005 集成了公共语言运行库，可以容易地创建表值函数。您可以创建列表、数组或任意 <B>IEnumerable</B> 对象（可以对其进行 foreach 操作的任意对象），然后将其转换为表。</P><PRE class=codeSample>[SqlFunction(TableDefinition   = "x float, y float" ,
FillRowMethodName = "FillPair")]
public static IEnumerable csPoints( )
   {
int[,] points = { { 1, 2 }, { 3, 4 } };
return (IEnumerable) points;
   }
</PRE>
<P>在 Visual Studio 中编译这段代码，然后单击 <B>Deploy</B>（部署）。表值函数将被安装到数据库中。</P>
<DIV style="MARGIN-TOP: 3px; MARGIN-BOTTOM: 10px"><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#top"><IMG height=9 alt=返回页首 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width=7 border=0></A><A class=topOfPage href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#top">返回页首</A></DIV><A name=ELD></A>
<H2>使用表值函数添加空间索引</H2>
<P>对于索引，人们存在许多困惑。事实上，索引非常简单：它们只是带有一些特殊属性的表： </P>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P>SQL Server 仅有一种关联（按值）索引：B 树。B 树可以具有多字段键，但最常选择的是第一个字段。 </P></TD></TR>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P>从概念上说，B 树索引是由 B 树键字段、基表键字段以及您要添加到索引的任何包含字段所组成的表。 </P></TD></TR>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P>B 树索引将根据索引键（例如邮政编码或客户 ID）来排序，以便按该键进行查找或顺序扫描会很快。 </P></TD></TR>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P>索引通常比基表小，只包含最重要的属性，以便与检查整个表相比，在索引中进行查找所涉及的字节数小得多。通常情况下，索引非常小，以致能完全装在主内存中，从而省去更多的磁盘存取。 </P></TD></TR>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P>当您执行索引查找时，可能仅仅是搜索索引（基表的垂直部分），也可能是先搜索索引，再利用基表主键将符合要求的索引逐行加入基表中（书签查找）。 </P></TD></TR></TBODY></TABLE>
<P>中心思想是，空间索引可为您提供一小部分数据。索引会告诉您查找的位置，并通常附带一些有用的搜索信息（专家将其称为包含列或覆盖列）。索引的选择性表明了初始缩减的程度（图 1 所示的粗略子集）。找到相应的子集后，将仔细检查该子集的每个成员并舍弃假正值。图 1 中的菱形框指明了该过程。好的索引只含有少量的假正值。在整篇文章中，我们都将使用图 1 中的说法（粗略子集和仔细检查）。 </P>
<DIV style="WIDTH: 276px"><IMG height=141 alt="" src="http://www.microsoft.com/china/msdn/library/data/sqlserver/art/tvf_figure_1.gif" width=276 border=0><BR>
<P class=figureCaption><B>图 1</B></P>
<DIV class=figureRule></DIV></DIV>
<P>B 树和表值函数可以如下组合，以使您可以构建自己的空间索引来生成粗略子集： </P>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P>创建一个函数，以生成将相关数据聚集在一起的键。例如，如果项目 A 和 B 相关，则 A 和 B 的键在 B 树键空间中应该是邻近的。 </P></TD></TR>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P>创建一个表值函数，以便在给出了对所需子集的说明后，返回包含所有相关值的键范围（“覆盖”）列表。 </P></TD></TR></TBODY></TABLE>
<P>您无法始终让每个键与其所有相关项邻近，因为键是在一个维度中排序的，而相关项是在二维或更高维数的空间中与其邻近。但是可以尽量这样做。假正值与正确答案的比率衡量了您所采取的方式的好坏。 </P>
<P>标准方法是，找到某一条空间填充曲线，并使键空间沿该曲线穿过。例如，使用标准墨卡托地图，可以将西北中的每个人分配给西北键范围，将东南中的每个人分配给东南键范围。图 2 显示了第二种顺序空间填充曲线，它横穿所有这些象限，按顺序分配键。西北-西南象限中的每个人都具有键前缀 nwsw。如果您的区域与图 2 中所示的圆圈类似，就可以知道您的键范围</P><PRE class=codeSample>   key between 'nwsw' and 'nwse'
</PRE>
<DIV style="WIDTH: 170px"><IMG height=200 alt="" src="http://www.microsoft.com/china/msdn/library/data/sqlserver/art/tvf_figure_2.gif" width=170 border=0><BR>
<P class=figureCaption><B>图 2</B></P>
<DIV class=figureRule></DIV></DIV>
<P>此搜索空间占整个表的八分之一，并且含有大约 75% 的假正值（由圆圈外但位于两个方框内的区域表示）。改进不大，但传达了一种概念。更好的索引要使用更精细的单元格分区。如果单元格足够精细，则聚合区域中的假正值就会非常少。要详细查看空间填充曲线和空间分区树，您可以参阅 Hanan Samet [Samet] 的书籍。</P>
<P>现在，我们要定义一种空间填充曲线：分层三角网格 (HTM)，它特别适用于球面。地球是圆的，天球也是圆的，因此，这种球面系统对于地理学家和天文学家来说非常方便。我们可以对任何度量空间做一些类似的事情。空间填充曲线提供了一些键来作为空间索引的基础。那么，如果某人具有所需的区域时，我们的表值函数将为其提供一组适当的键范围供查找（图 1 中的粗略筛选）。这些键范围将覆盖带有球面三角形的区域（称为 trixel），这与图 2 中覆盖圆圈的两个方框非常相似。搜索函数只需查看这些 trixel 的键范围内的所有对象，以确定它们是否符合要求（图 1 中的仔细检查）。</P>
<P>我们可以用一个具体的例子进行说明，假设有一个对象表</P><PRE class=codeSample>create table Object (objID bigint primary key,
lat   float, -- Latitude
lon   float, -- Longitude
HtmID bigint) -- The HTM key
</PRE>
<P>和一个距离函数 <B>dbo.fDistanceLatLon(lat1, lon1, lat2, lon2)</B>，该函数可计算出两点之间的海里（弧度分）数。进一步假设以下表值函数给出了位于某个 lat-lon 点的定长半径范围内的 HtmID 点的键范围列表。</P><PRE class=codeSample>define function 
fHtmCoverCircleLatLon(@lat float, @lon float, @radius float)
returns @TrixelTable table(HtmIdStart bigint, HtmIdEnd bigint)
</PRE>
<P>然后，以下查询会查找旧金山 (lat,lon) = (37.8,-122.4) 周围 40 海里范围内的点。</P><PRE class=codeSample>select O.ObjID, dbo.fDistanceLatLon(O.lat,O.lon, 37.8, -122.4)
from fHtmCoverCircleLatLon(37.8, -122.4, 40) as TrixelTable 
jo&#105;n Object O 
on O.HtmID between TrixelTable.HtmIdStart        -- coarse test
and TrixelTable.HtmIdEnd      
where dbo.fDistanceLatLon(lat,lon,37.8, -122.4) &lt; 40   -- careful test
</PRE>
<P>现在，我们必须定义 HTM 键生成函数、距离函数和 HTM 覆盖函数。下一步我们将以两组美国地质空间数据集为例执行这些操作。如果您不相信其中包含的对象达数十亿，请访问 <A href="http://skyserver.sdss.org/"><EM>http://skyserver.sdss.org/</EM></A> 并浏览一下该网站。该网站使用相同的代码来对几千 GB 的天文数据库进行空间查找。 </P>
<P>本文主要讲述如何使用 SQL 表值函数和像 HTM 这样的空间填充曲线来构建空间索引。同样地，我们将 HTM 代码本身当作一种在别处 [Szalay] 存档的黑色方框，我们只关注如何使其在 SQL 应用程序内适合我们的需要。</P>
<DIV style="MARGIN-TOP: 3px; MARGIN-BOTTOM: 10px"><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#top"><IMG height=9 alt=返回页首 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width=7 border=0></A><A class=topOfPage href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#top">返回页首</A></DIV><A name=EHF></A>
<H2>数据集</H2>
<P>美国地质勘探局 (USGS) 收集并发布了美国的相关数据。图 3 显示了由 USGS 维护的 18000 台用于测量河流水流量和级别的流量计。USGS 还发布了 23000 个地点的地名及其人口的列表。</P>
<DIV style="WIDTH: 547px"><IMG height=196 alt="" src="http://www.microsoft.com/china/msdn/library/data/sqlserver/art/tvf_figure_3.gif" width=547 border=0><BR>
<P class=figureCaption><B>图 3</B></P>
<DIV class=figureRule></DIV></DIV>
<P><B>USGS 居民点（23000 个城市）</B></P>
<P>USGS 在 1993 年发布了地点名称及其某些属性的列表。USGS 网站上有一些更新的列表，但由于它们是按州来分段的，因此很难获得一个全国范围的列表。旧的列表足以能够演示空间索引。数据格式如下：</P><PRE class=codeSample>create table Place(
PlaceName   varchar(100) not null, -- City name
State       char(2)      not null, -- 2 char state code
Population  int          not null, -- Number of residents (1990)
Households  int          not null, -- Number of homes (1990)
LandArea    int          not null, -- Area in sqare KM
WaterArea   int          not null, -- Water area within land area
Lat         float        not null, -- Latitude in decimal degrees
Lon         float        not null, -- Longitude decimal degrees
HtmID       bigint       not null primary key --spatial index key
)
</PRE>
<P>为了加快名称查找，我们添加了一个名称索引，但数据是按空间键聚集在一起的。邻近的对象共同位于聚集 B 树中，并因此位于相同或相邻的磁盘页上。</P><PRE class=codeSample>create index Place_Name on Place(PlaceName)
</PRE>
<P>可以从 USGS 网站下载除 HtmID 数据以外的其他所有数据。可以用 SQL Server 2005 数据导入向导来导入数据（我们已在示例数据库中进行了此操作）。HtmID 字段是根据 LatLon 按以下方法计算出的：</P><PRE class=codeSample>update Place set HtmID = dbo.fHtmLatLon(lat, lon)
</PRE>
<P><B>USGS 流量计（17000 台仪器）</B></P>
<P>USGS 自 1854 起一直在维护河流流量记录。到 2000 年 1 月 1 日，他们已累积了超过 43 万年的测量数据。大约有六千个活动的测量站处于活动状态，而有大约四千个处于联机状态。<A href="http://waterdata.usgs.gov/nwis/rt"><EM>http://waterdata.usgs.gov/nwis/rt</EM></A> 中对这些流量计进行了详细介绍。有个 NOAA 站点以非常便利的方式显示了来自几百个最普遍的测量站的数据：<A href="http://weather.gov/rivers_tab.php"><EM>http://weather.gov/rivers_tab.php</EM></A>。 </P>
<P>我们的数据库只包含美国大陆的测量站（见图 3）。关岛、阿拉斯加、夏威夷、波多黎各和维京群岛也有测量站，但不包含在此数据库内。流量计测量站表为：</P><PRE class=codeSample>create table Station (
StationName   varchar(100) not null,     -- USGS Station Name
State         char(2)      not null,     -- State location
Lat           float        not null,     -- Latitude in Decimal
Lon           float        not null,     -- Longitude in Decimal
DrainageArea  float        not null,     -- Drainage Area (km2)
FirstYear     int          not null,     -- First Year operation 
YearsRecorded int          not null,     -- Record years (at Y2k)
IsActive      bit          not null,     -- Was it active at Y2k?
IsRealTime    bit          not null,     -- On Internet at Y2K?
StationNumber int          not null,     -- USGS Station Number
HtmID         bigint       not null,     -- HTM spatial key
-- (based on lat/lon)
primary key(htmID, StationNumber) )  
</PRE>
<P>如上所述，HtmID 字段是根据 LatLon 按以下方法计算出的：</P><PRE class=codeSample>update Station set HtmID = dbo.fHtmLatLon(lat, lon)
</PRE>
<P>由于一个位置有多达 18 个测量站，因此主键必须包括测量站编号以便区分它们。但是，在 B 树中，HTM 键将所有邻近的测量站聚集在一起。为了加快查找，我们添加了测量站编号和名称索引：</P><PRE class=codeSample>create index Station_Name   on Station(StationName)
create index Station_Number on Station(StationNumber)
</PRE>
<P><B>空间索引表</B></P>
<P>现在，我们就可以创建自己的空间索引了。我们本可以将字段添加到基表，但要使存储过程对多个不同的表均有效，我们发现，只需将所有对象加入到一个空间索引中即可。您可以选择 (type,HtmID) 作为键来隔离不同类型的对象；我们选择了 (HtmID, key) 作为键，以便将所有类型（城市和流量计）的邻近对象聚集在一起。该空间索引为：</P><PRE class=codeSample>create table SpatialIndex (
HtmID   bigint   not null , -- HTM spatial key (based on lat/lon)
Lat     float    not null , -- Latitude in Decimal
Lon     float    not null , -- Longitude in Decimal
x       float    not null , -- Cartesian coordinates,
y       float    not null , -- derived from lat-lon
z       float    not null , --,
Type    char(1)  not null , -- Place (P) or gauge (G)
ObjID   bigint   not null , -- Object ID in table
primary key (HtmID, ObjID) )
</PRE>
<P>此主题后面将对笛卡尔坐标进行说明。至于现在，我们只需要知道，<B>fHtmCenterPoint(HtmID)</B> 函数将返回该 HTM 三角形中心点的笛卡尔 (x,y,z) 单位向量。这就是该 HTM 的极限点，因为此中心被细分为无穷个小的 trixel。</P>
<P>SpatialIndex 表将根据 Place 和 Station 表的数据来填充，如下所示：</P><PRE class=codeSample>insert SpatialIndex
select   P.HtmID, Lat, Lon, XYZ.x, XYZ.y, XYZ.z, 
'P' as type, P. HtmID as ObjID
From   Place P cross apply fHtmLatLonToXyz(P.lat, P.lon)XYZ

insert SpatialIndex
select S.HtmID, Lat, Lon, XYZ.x, XYZ.y, XYZ.z, 
'S' as type, S.StationNumber as ObjID
from   Station S cross apply fHtmLatLonToXyz(S.lat, S.lon) XYZ
</PRE>
<P>为了清理数据库，应执行以下命令：</P><PRE class=codeSample>DBCC INDEXDEFRAG    (spatial  , Station, 1)
DBCC INDEXDEFRAG    (spatial  , Station, Station_Name)
DBCC INDEXDEFRAG    (spatial  , Station, Station_Number)
DBCC INDEXDEFRAG    (spatial  , Place,   1)
DBCC INDEXDEFRAG    (spatial  , Place,   Place_Name)
DBCC INDEXDEFRAG    (spatial  , SpatialIndex, 1)  
DBCC SHRINKDATABASE (spatial  , 1  ) - 1 percent spare space
</PRE>
<P><B>题外话：笛卡尔坐标</B></P>
<P>您可以选择跳过此部分。此部分对于使用该库并不是必需的。HTM 代码必须依靠一种技巧来避开球面几何问题：它从球面的二维表面移到了三维空间。这就使得“在多边形内”和“在点附近”查询的检查进行得非常快。 </P>
<P>球面上的每个 lat/lon 点都可以表示为三维空间中的一个单位向量 v = (x,y,z)。北极和南极（90° 和 -90°）的单位向量分别为 v = (0,0,1) 和 v = (0,0,-1)。Z 代表旋转轴，XZ 平面代表本初（格林尼治）子午线，其经度为 0° 或 180°。正式的定义为：</P><PRE class=codeSample>x = cos(lat)cos(lon)
y =cos(lat)sin(lon)
z = sin(lat)
</PRE>
<P>这些笛卡尔坐标的使用方法如下：给定单位球面上的两点 p1=(x1,y1,z1) 和 p2 = (x2,y2,z2)，则它们的点乘积 p1&p2 = x1*x2+y1*y2+z1*z2 就是这两点所代表的单位向量之间的角度的余弦值。它是一个距离度量。图 4 显示了笛卡尔坐标如何使得对“多边形内的点”和“邻近点的点”的检查快速进行。每个 lat/lon 点均具有一个对应的 (x,y,z) 单位向量。</P>
<DIV style="WIDTH: 239px"><IMG height=222 alt="" src="http://www.microsoft.com/china/msdn/library/data/sqlserver/art/tvf_figure_4.gif" width=239 border=0><BR>
<P class=figureCaption><B>图 4</B></P>
<DIV class=figureRule></DIV></DIV>
<P>如果我们要查找 p1 点周围 45 海里（弧度分）范围内的点，则它与 p1 点最多成 45/60 度。这些点与 p1 的点乘积将小于 d=acos(radians(45/60)。该“邻近”检查即变为 { p2 | p2&p1 &lt; d}，它将很快进行。在图 5 中，每个大圆圈或小圆圈都是一个平面与该圆圈的交集，如果某一点与平面法向量的点乘积小于 cos(?¨)（其中 2?¨ 是该圆圈的弧度角直径），则该点就在圆圈内部。</P>
<DIV style="WIDTH: 334px"><IMG height=113 alt="" src="http://www.microsoft.com/china/msdn/library/data/sqlserver/art/tvf_figure_5.gif" width=334 border=0><BR>
<P class=figureCaption><B>图 5</B></P>
<DIV class=figureRule></DIV></DIV>
<P>笛卡尔坐标还可以使得对“多边形内的点”的检查快速进行。所有的多边形都具有大圆边或小圆边。这些边沿着与球面交叉的某个平面分布。因此，可以通过与该平面垂直的单位向量 v 及其位移来定义这些边。例如，赤道就是向量 v = (0,0,1)，且位移为零。纬度 60° 由向量 v = (0,0,1) 及位移 0.5 来定义，而围绕巴尔的摩市的 60° 纬度圈由向量 v = (0.179195, -0.752798, 0.633392) 及 0.5 个位移来定义。对于地点 p2，如果 p2&v &lt; 0.5，则该地点就位于巴尔的摩市 60° 纬度圈内。同样，可以通过计算出三个这种点乘积来确定某个点位于 HTM 三角形内部还是外部。这是 HTM 代码如此有效和快捷的主要原因之一。</P>
<P>我们实现了若干辅助过程来进行从 LatLon 到笛卡尔坐标的转换。</P>
<P><BR><BR><BR></P>
<P>本文稍后将用到这些函数，它们存档在 API spec and Intellisense [Fekete] 中。 </P>
<P>在此，该库的默认设置为 21 级深度的 HTM 键（第一级将球面分成八个表面区域，随后每一级将球面三角形分成四个子三角形）。从表 1 中可看出，21 级深度的 trixel 相当小。最多可以将代码修改为 31 级深度，这是因为不能超出 64 位表示法所占用的位数。</P>
<P>在表 1 中，每个 HTM 级别都会细分球面。对于每个级别，此表均以度数、弧度分、弧度秒和米四种单位的平方形式表示了面积。trixel 列显示了一些特征大小：默认的 21 级深度的 trixel 大约为 0.3 平方弧度秒。USGS 数据在每 12 级深度的 trixel 具有大约半个对象。</P>
<TABLE class=dataTable id=EAAAC cellSpacing=0 cellPadding=0>
<THEAD>
<TR>
<TD class=tableHeader colSpan=8>表 1</TD></TR>
<TR class=stdHeader vAlign=top>
<TD id=colEDAAC>HTM 深度</TD>
<TD id=colEHAAC>&nbsp;</TD>
<TD id=colEJAAC>&nbsp;</TD>
<TD id=colELAAC>面积</TD>
<TD id=colEPAAC>&nbsp;</TD>
<TD id=colERAAC>&nbsp;</TD>
<TD id=colETAAC>&nbsp;</TD>
<TD id=colEVAAC style="BORDER-RIGHT: #cccccc 1px solid">对象/trixel</TD></TR></THEAD>
<TBODY>
<TR class=record vAlign=top>
<TD></TD>
<TD>
<P class=lastInCell><B>deg</B><SUP>2</SUP></P></TD>
<TD>
<P class=lastInCell><B>arc min</B><SUP>2</SUP></P></TD>
<TD>
<P class=lastInCell><B>arc sec</B><SUP>2</SUP></P></TD>
<TD>
<P class=lastInCell><B>earth m</B><SUP>2</SUP></P></TD>
<TD>
<P class=lastInCell><B>trixel</B></P></TD>
<TD>
<P class=lastInCell><B>SDSS</B></P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid">
<P class=lastInCell><B>USGS</B></P></TD></TR>
<TR class=evenRecord vAlign=top>
<TD>
<P class=lastInCell>球面</P></TD>
<TD>
<P class=lastInCell>41253</P></TD>
<TD>
<P class=lastInCell>148,510,800</P></TD>
<TD>
<P class=lastInCell>534,638,880,000</P></TD>
<TD>
<P class=lastInCell>5.E+14</P></TD>
<TD></TD>
<TD></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=record vAlign=top>
<TD>
<P class=lastInCell>0</P></TD>
<TD>
<P class=lastInCell>5157</P></TD>
<TD>
<P class=lastInCell>18,563,850</P></TD>
<TD>
<P class=lastInCell>66,829,860,000</P></TD>
<TD>
<P class=lastInCell>6E+13</P></TD>
<TD></TD>
<TD>
<P class=lastInCell>3E+8</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=evenRecord vAlign=top>
<TD>
<P class=lastInCell>1</P></TD>
<TD>
<P class=lastInCell>1289</P></TD>
<TD>
<P class=lastInCell>4,640,963</P></TD>
<TD>
<P class=lastInCell>16,707,465,000</P></TD>
<TD>
<P class=lastInCell>2E+13</P></TD>
<TD></TD>
<TD>
<P class=lastInCell>8E+7</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=record vAlign=top>
<TD>
<P class=lastInCell>2</P></TD>
<TD>
<P class=lastInCell>322</P></TD>
<TD>
<P class=lastInCell>1,160,241</P></TD>
<TD>
<P class=lastInCell>4,176,866,250</P></TD>
<TD>
<P class=lastInCell>4E+12</P></TD>
<TD></TD>
<TD>
<P class=lastInCell>2E+7</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=evenRecord vAlign=top>
<TD>
<P class=lastInCell>3</P></TD>
<TD>
<P class=lastInCell>81</P></TD>
<TD>
<P class=lastInCell>290,060</P></TD>
<TD>
<P class=lastInCell>1,044,216,563</P></TD>
<TD>
<P class=lastInCell>1E+12</P></TD>
<TD></TD>
<TD>
<P class=lastInCell>5E+6</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=record vAlign=top>
<TD>
<P class=lastInCell>4</P></TD>
<TD>
<P class=lastInCell>20</P></TD>
<TD>
<P class=lastInCell>72,515</P></TD>
<TD>
<P class=lastInCell>261,054,141</P></TD>
<TD>
<P class=lastInCell>2E+11</P></TD>
<TD></TD>
<TD>
<P class=lastInCell>1E+6</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid">
<P class=lastInCell>30,000</P></TD></TR>
<TR class=evenRecord vAlign=top>
<TD>
<P class=lastInCell>5</P></TD>
<TD>
<P class=lastInCell>5</P></TD>
<TD>
<P class=lastInCell>18,129</P></TD>
<TD>
<P class=lastInCell>65,263,535</P></TD>
<TD>
<P class=lastInCell>6E+10</P></TD>
<TD></TD>
<TD>
<P class=lastInCell>3E+5</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid">
<P class=lastInCell>7,500</P></TD></TR>
<TR class=record vAlign=top>
<TD>
<P class=lastInCell>6</P></TD>
<TD>
<P class=lastInCell>1</P></TD>
<TD>
<P class=lastInCell>4,532</P></TD>
<TD>
<P class=lastInCell>16,315,884</P></TD>
<TD>
<P class=lastInCell>2E+10</P></TD>
<TD>
<P class=lastInCell>1 deg<SUP>2</SUP></P></TD>
<TD>
<P class=lastInCell>73242</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid">
<P class=lastInCell>1,875</P></TD></TR>
<TR class=evenRecord vAlign=top>
<TD>
<P class=lastInCell>7</P></TD>
<TD>
<P class=lastInCell>3E-1</P></TD>
<TD>
<P class=lastInCell>1,133</P></TD>
<TD>
<P class=lastInCell>4,078,971</P></TD>
<TD>
<P class=lastInCell>4E+9</P></TD>
<TD></TD>
<TD>
<P class=lastInCell>18311</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid">
<P class=lastInCell>468</P></TD></TR>
<TR class=record vAlign=top>
<TD>
<P class=lastInCell>8</P></TD>
<TD>
<P class=lastInCell>8E-2</P></TD>
<TD>
<P class=lastInCell>283</P></TD>
<TD>
<P class=lastInCell>1,019,743</P></TD>
<TD>
<P class=lastInCell>1E+9</P></TD>
<TD></TD>
<TD>
<P class=lastInCell>4578</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid">
<P class=lastInCell>117</P></TD></TR>
<TR class=evenRecord vAlign=top>
<TD>
<P class=lastInCell>9</P></TD>
<TD>
<P class=lastInCell>2E-2</P></TD>
<TD>
<P class=lastInCell>71</P></TD>
<TD>
<P class=lastInCell>254,936</P></TD>
<TD>
<P class=lastInCell>2E+8</P></TD>
<TD></TD>
<TD>
<P class=lastInCell>1144</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid">
<P class=lastInCell>29</P></TD></TR>
<TR class=record vAlign=top>
<TD>
<P class=lastInCell>10</P></TD>
<TD>
<P class=lastInCell>5E-3</P></TD>
<TD>
<P class=lastInCell>18</P></TD>
<TD>
<P class=lastInCell>63,734</P></TD>
<TD>
<P class=lastInCell>6E+7</P></TD>
<TD></TD>
<TD>
<P class=lastInCell>286</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid">
<P class=lastInCell>7</P></TD></TR>
<TR class=evenRecord vAlign=top>
<TD>
<P class=lastInCell>11</P></TD>
<TD>
<P class=lastInCell>1E-3</P></TD>
<TD>
<P class=lastInCell>4</P></TD>
<TD>
<P class=lastInCell>15,933</P></TD>
<TD>
<P class=lastInCell>2E+7</P></TD>
<TD></TD>
<TD>
<P class=lastInCell>72</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid">
<P class=lastInCell>2</P></TD></TR>
<TR class=record vAlign=top>
<TD>
<P class=lastInCell>12</P></TD>
<TD>
<P class=lastInCell>3E-4</P></TD>
<TD>
<P class=lastInCell>1</P></TD>
<TD>
<P class=lastInCell>3,983</P></TD>
<TD>
<P class=lastInCell>4E+6</P></TD>
<TD>
<P class=lastInCell>1 amin<SUP>2</SUP></P></TD>
<TD>
<P class=lastInCell>18</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid">
<P class=lastInCell>0.5</P></TD></TR>
<TR class=evenRecord vAlign=top>
<TD>
<P class=lastInCell>13</P></TD>
<TD>
<P class=lastInCell>8E-5</P></TD>
<TD>
<P class=lastInCell>3E-1</P></TD>
<TD>
<P class=lastInCell>996</P></TD>
<TD>
<P class=lastInCell>943816</P></TD>
<TD></TD>
<TD>
<P class=lastInCell>4</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid">
<P class=lastInCell>0.1</P></TD></TR>
<TR class=record vAlign=top>
<TD>
<P class=lastInCell>14</P></TD>
<TD>
<P class=lastInCell>2E-5</P></TD>
<TD>
<P class=lastInCell>7E-2</P></TD>
<TD>
<P class=lastInCell>249</P></TD>
<TD>
<P class=lastInCell>235954</P></TD>
<TD></TD>
<TD>
<P class=lastInCell>1</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=evenRecord vAlign=top>
<TD>
<P class=lastInCell>15</P></TD>
<TD>
<P class=lastInCell>5E-6</P></TD>
<TD>
<P class=lastInCell>2E-2</P></TD>
<TD>
<P class=lastInCell>62</P></TD>
<TD>
<P class=lastInCell>58989</P></TD>
<TD></TD>
<TD>
<P class=lastInCell>0.3</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=record vAlign=top>
<TD>
<P class=lastInCell>16</P></TD>
<TD>
<P class=lastInCell>1E-6</P></TD>
<TD>
<P class=lastInCell>4E-3</P></TD>
<TD>
<P class=lastInCell>16</P></TD>
<TD>
<P class=lastInCell>14747</P></TD>
<TD></TD>
<TD>
<P class=lastInCell>.</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=evenRecord vAlign=top>
<TD>
<P class=lastInCell>17</P></TD>
<TD>
<P class=lastInCell>3E-7</P></TD>
<TD>
<P class=lastInCell>1E-3</P></TD>
<TD>
<P class=lastInCell>4</P></TD>
<TD>
<P class=lastInCell>3687</P></TD>
<TD></TD>
<TD></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=record vAlign=top>
<TD>
<P class=lastInCell>18</P></TD>
<TD>
<P class=lastInCell>8E-8</P></TD>
<TD>
<P class=lastInCell>3E-4</P></TD>
<TD>
<P class=lastInCell>1</P></TD>
<TD>
<P class=lastInCell>922</P></TD>
<TD></TD>
<TD></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=evenRecord vAlign=top>
<TD>
<P class=lastInCell>19</P></TD>
<TD>
<P class=lastInCell>2E-8</P></TD>
<TD>
<P class=lastInCell>7E-5</P></TD>
<TD>
<P class=lastInCell>2E-1</P></TD>
<TD>
<P class=lastInCell>230</P></TD>
<TD>
<P class=lastInCell>1 asec<SUP>2</SUP></P></TD>
<TD></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=record vAlign=top>
<TD>
<P class=lastInCell>20</P></TD>
<TD>
<P class=lastInCell>5E-9</P></TD>
<TD>
<P class=lastInCell>2E-5</P></TD>
<TD>
<P class=lastInCell>6E-2</P></TD>
<TD>
<P class=lastInCell>58</P></TD>
<TD>
<P class=lastInCell>1 km<SUP>2</SUP></P></TD>
<TD></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=evenRecord vAlign=top>
<TD>
<P class=lastInCell>21</P></TD>
<TD>
<P class=lastInCell>1E-9</P></TD>
<TD>
<P class=lastInCell>4E-6</P></TD>
<TD>
<P class=lastInCell>2E-2</P></TD>
<TD>
<P class=lastInCell>14</P></TD>
<TD></TD>
<TD></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=record vAlign=top>
<TD>
<P class=lastInCell>22</P></TD>
<TD>
<P class=lastInCell>3E-10</P></TD>
<TD>
<P class=lastInCell>1E-6</P></TD>
<TD>
<P class=lastInCell>4E-3</P></TD>
<TD>
<P class=lastInCell>4</P></TD>
<TD></TD>
<TD></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=evenRecord vAlign=top>
<TD>
<P class=lastInCell>23</P></TD>
<TD>
<P class=lastInCell>7E-11</P></TD>
<TD>
<P class=lastInCell>3E-7</P></TD>
<TD>
<P class=lastInCell>9E-4</P></TD>
<TD>
<P class=lastInCell>1</P></TD>
<TD>
<P class=lastInCell>1 m<SUP>2</SUP></P></TD>
<TD></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=record vAlign=top>
<TD>
<P class=lastInCell>24</P></TD>
<TD>
<P class=lastInCell>2E-11</P></TD>
<TD>
<P class=lastInCell>7E-8</P></TD>
<TD>
<P class=lastInCell>2E-4</P></TD>
<TD>
<P class=lastInCell>2E-1</P></TD>
<TD></TD>
<TD></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=evenRecord vAlign=top>
<TD>
<P class=lastInCell>25</P></TD>
<TD>
<P class=lastInCell>5E-12</P></TD>
<TD>
<P class=lastInCell>2E-8</P></TD>
<TD>
<P class=lastInCell>6E-5</P></TD>
<TD>
<P class=lastInCell>6E-2</P></TD>
<TD></TD>
<TD></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR>
<TR class=record vAlign=top>
<TD>
<P class=lastInCell>26</P></TD>
<TD>
<P class=lastInCell>1E-12</P></TD>
<TD>
<P class=lastInCell>4E-9</P></TD>
<TD>
<P class=lastInCell>1E-5</P></TD>
<TD>
<P class=lastInCell>1E-2</P></TD>
<TD></TD>
<TD></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid"></TD></TR></TBODY></TABLE>
<DIV class=dataTableBottomMargin></DIV>
<DIV style="MARGIN-TOP: 3px; MARGIN-BOTTOM: 10px"><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#top"><IMG height=9 alt=返回页首 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width=7 border=0></A><A class=topOfPage href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#top">返回页首</A></DIV><A name=E2PAC></A>
<H2>典型查询</H2>
<P>现在，您应当可以执行一些查询了。</P>
<P><B>查询 1：查找邻近点的点：查找邻近某一地点的城镇</B></P>
<P>最常见的查询是查找邻近某个特定地点或点的所有地点。考虑以下查询，“查找马里兰州巴尔的摩市周围 100 海里内的所有城镇”。通过下面的方法来得到覆盖巴尔的摩市周围 100 海里（100 弧度分）范围的 HTM 三角形</P><PRE class=codeSample>select * -- find a HTM cover 100 NM around Baltimore
from fHtmCoverCircleLatLon(39.3, -76.6, 100)  
</PRE>
<P>它将返回表 2 中所示的 Trixel 表。即，<B>fHtmCoverCircleLatLon()</B> 函数将返回“覆盖”该圆圈（在本例中，是单个 trixel）的一组 HTM 三角形。该圆圈内所有对象的 HTM 键也位于这些三角形中之一内。现在，我们需要检查所有这些三角形并舍弃假正值（图 1 中的仔细检查）。我们将按照与巴尔的摩市的距离对答案集进行排序，因此，如果我们需要找出最近的地点，只需选择 TOP 1 WHERE distance &gt; 0 即可（我们要从中排除巴尔的摩市本身）。</P><PRE class=codeSample>declare @lat float, @lon float
select @lat = lat, @lon = lon 
from Place 
where Place.PlaceName = 'Baltimore' 
and State = 'MD' 
select ObjID, dbo.fDistanceLatLon(@lat,@lon, lat, lon) as distance
from SpatialIndex jo&#105;n fHtmCoverCircleLatLon(@lat, @lon, 100)  
On HtmID between HtmIdStart and HtmIdEnd           -- coarse test
and type = 'P'
and dbo.fDistanceLatLon(@lat,@lon, lat, lon) &lt; 100 -- careful test
order by distance asc
</PRE>
<P><B>表 2. 巴尔的摩市 HTM 覆盖纬度圈</B></P>
<TABLE class=dataTable id=ENAAE cellSpacing=0 cellPadding=0>
<THEAD>
<TR class=stdHeader vAlign=top>
<TD id=colEPAAE>HtmIdStart</TD>
<TD id=colETAAE style="BORDER-RIGHT: #cccccc 1px solid">HtmIdEnd</TD></TR></THEAD>
<TBODY>
<TR class=record vAlign=top>
<TD>
<P class=lastInCell>14023068221440</P></TD>
<TD style="BORDER-RIGHT: #cccccc 1px solid">
<P class=lastInCell>14027363188735</P></TD></TR></TBODY></TABLE>
<DIV class=dataTableBottomMargin></DIV>
<P>此覆盖联接将返回 2928 行（粗略检查）；其中 1122 行在 100 航空英里以内（仔细检查）。它给出了 61% 的假正值：全部操作在 9 毫秒内完成。 </P>
<P>由于这些是常见的任务，因此具有针对它们的标准函数： </P><PRE class=codeSample>fHtmNearbyLatLon(type, lat, lon, radius)
fHtmNearestLatLon(type, lat, lon)
</PRE>
<P>这样，上述查询就变为</P><PRE class=codeSample>select ObjID, distance 
from fHtmNearestLatLon('P', 39.3, -76.61)   
</PRE>
<P><B>查询 2：查找某个方框内的地点</B></P>
<P>在显示正方形的地图或窗口时，应用程序通常需要查找某个正方形视区内的所有对象。科罗拉多州几乎完全是正方形的，它的西北角点为 (41°N-109°3'W)，西南角点为 (37°N-102° 3'E)。该州的中心点为 (39°N, -105°33'E)，因此可以用以该点为中心的圆圈覆盖该正方形。</P><PRE class=codeSample>declare @radius float
set @radius = dbo.fDistanceLatLon(41,-109.55,37,-102.05)/2
select * 
from Station 
where StationNumber in (
select ObjID 
from fHtmCoverCircleLatLon(39, -105.55, @radius) jo&#105;n SpatialIndex 
on HtmID between HtmIdStart and HtmIdEnd
and lat between 37 and 41
and lon between -109.05 and -102.048
and type = 'S')
OPTION (FORCE ORDER)
</PRE>
<P>本例在大约 46 毫秒内返回了 1030 个流量计。科罗拉多州的其他五个流量计正好在其边界上，散布于距离南纬 37°纬度圈不超过一海里的范围内。如果将南纬从 37° 调整到 36.98°，则其他这五个测量站就会出现。（GIS 系统和天文应用程序通常需要某一区域周围具有缓冲区。此 HTM 代码包含对缓冲区的支持，在实际的应用程序经常会用到缓冲区。请查看参考资料 [Szalay] 以了解具体操作方式。）此覆盖圆圈返回了 36 个三角形。与 SpatialIndex 表的联接返回了 1975 个流量计。其中包含 47% 的假正值。下一节将演示如何通过使用 HTM 区域指定多边形覆盖而非圆圈覆盖对此进行改进。 </P>
<P>FORCE ORDER 子句比较麻烦：如果缺少该子句，查询的运行时间会长十倍，因为优化器会将空间索引作为外部表进行嵌套循环联接。如果这些表更大（包含数百万行），优化程序有可能会采取其他计划，但我们不能指望它。优化程序不可能无需提示就能针对上一部分中的所有查询选择正确的计划。</P>
<P><B>查询 3：查找某个多边形内的地点</B></P>
<P>HTM 代码允许我们将此区域指定为圆圈、矩形、凸球面或这些区域的组合。特别地，HTM 库允许使用下面的线性语法来指定区域：</P><PRE class=codeSample>circleSpec  := 'CIRCLE LATLON '      lat lon radius  
|  'CIRCLE J2000 '       ra  dec radius
|  'CIRCLE [CARTESIAN ]' x y z   radius  
rectSpec    := 'RECT LATLON '        { lat lon }2
|  'RECT J2000 '         { ra  dec }2
|  'RECT [CARTESIAN ]'   { x y z   }2
hullSpec    := 'CHULL LATLON '       { lon lat }3+
|  'CHULL J2000 '        { ra dec  }3+
|  'CHULL [CARTESIAN ]'  { x y z   }3+
convexSpec  := 'CONVEX ' [ 'CARTESIAN '] { x y z D }*
areaSpec    := rectSpec | circleSpec | hullSpec | convexSpec 
regionSpec  := 'REGION ' {areaSpec}* | areaSpec 
</PRE>
<P>下面给出了区域指定示例： </P>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P><B>圆圈。</B>指定一个点和大小为 1.75 海里（弧度分）的半径。</P><PRE class=codeSample>'CIRCLE LATLON 39.3 -76.61 100'
'CIRCLE CARTESIAN 0.1792 -0.7528 0.6334 100'
</PRE></TD></TR>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P><B>矩形。</B>指定用来定义最小和最大 lat,lon 的两个角点。经度坐标以折回方式确定，即 lonmin=358.0 和 lonmax=2.0，这是一个四度宽的范围。纬度必须介于北极和南极之间。矩形边是纬度或经度保持不变的直线，而非凹形和凸形的大圆边。</P><PRE class=codeSample>'RECT LATLON 37 -109.55  41 -102.05'
</PRE></TD></TR>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P><B>凹形。</B>指定用来定义凸球面三个或更多个点，且该凸球面的边用大圆圈将相邻的点连接起来。这些点必须位于单个半球内，否则会发生错误。这些点的顺序无关紧要。</P><PRE class=codeSample>'CHULL LATLON 37 -109.55 41 -109.55 41 -102.051 37 -102.05'
</PRE></TD></TR>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P><B>凸形。</B>以笛卡尔向量 (x,y,z) 及该向量单位长度的分量的形式指定任意多个（包括零个）约束。</P><PRE class=codeSample>'CONVEX   -0.17886 -0.63204 -0.75401 0.00000
          -0.97797  0.20865 -0.00015 0.00000
           0.16409  0.57987  0.79801 0.00000
           0.94235 -0.33463  0.00000 0.00000'
</PRE></TD></TR>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P><B>区域。</B>区域是零个或更多个圆圈、矩形、凹形和凸形区域的组合。</P><PRE class=codeSample>'REGION CONVEX 0.7 0.7 0.0 -0.5 CIRCLE LATLON 18.2 -22.4 1.75'
</PRE></TD></TR></TBODY></TABLE>
<P>可以这些区域描述中的任意一个应用于 <B>fHtmCoverRegion()</B> 例程，以返回一个 trixel 表，用来描述覆盖该区域的一组 trixel（三角形区域）。用于此科罗拉多州查询的较简单的代码为：</P><PRE class=codeSample>select S.* 
from (select ObjID 
from fHtmCoverRegion('RECT LATLON 37 -109.55  41 -102.05') 
loop jo&#105;n SpatialIndex
on HtmID between HtmIdStart and HtmIdEnd
and lat between 37 and 41
and lon between -109.05 and -102.048
and type = 'S') as G 
jo&#105;n Station S on G.objID = S.StationNumber
OPTION (FORCE ORDER)
</PRE>
<P>有必要使用这种不寻常的查询格式来准确告诉优化器联接的执行顺序（以使“强制顺序”选项正确运行）。很难以这种方式修改优化器，直到表值函数具有统计信息为止，估计它们会非常耗费资源。您必须强制使它们进入内部循环联接。 </P>
<P>此查询将返回 1030 个流量计，而有 1365 个来自覆盖范围的候选项，因此包含 25% 的假正值。请注意，矩形覆盖优于圆形覆盖，因为后者包含 61% 的假正值。对于非矩形形状的州，可以使用多边形语法，但本文仅讲述表值函数，而不讲述 HTM 算法。您可以在项目中以及项目的相关文档中查看 HTM 代码。</P>
<P>可以转换为凸球面进行类似的查询。</P><PRE class=codeSample>select S.* 
from (select ObjID 
from fHtmCoverRegion(
'CHULL LATLON 37 -109.55 41 -109.55 41 -102.05 37 -102.05') 
loop jo&#105;n SpatialIndex
on HtmID between HtmIdStart and HtmIdEnd
and lat between 37 and 41
and lon between -109.05 and -102.048
and type = 'S') as G 
jo&#105;n Station S on G.objID = S.StationNumber
OPTION (FORCE ORDER) 
</PRE>
<P>此查询将返回 1030 个流量计，而有 1193 个来自覆盖范围的候选项，因此包含 14% 的假正值。在本例中，凸球面覆盖比同等的矩形覆盖更好。 </P>
<P><B>查询 4：高级主题：复杂区域</B></P>
<P>前面的示例给出了用于区域的语法，并对“邻近点的点”和“矩形内的点”搜索进行了论述。区域可能会十分复杂。它们是多个凸形区域的布尔组合。我们无法在此详细解释区域的概念，但伴随项目中的 HTM 库包含对区域进行布尔组合、简化区域、计算区域顶点和计算区域面积的逻辑，还包含许多其他特性。[Fekete]、[Gray] 和 [Szalay] 中介绍了这些概念。 </P>
<P>为了初步理解这些概念，我们以犹他州为例。它的边界可用两个矩形来近似地定义：</P><PRE class=codeSample>declare @utahRegion varchar(max)
set @utahRegion = 'region '  
+ 'rect latlon 37 -114.0475  41 -109.0475 ' -- Main part
+ 'rect latlon 41 -114.0475  42 -111.01  '  -- Ogden and Salt Lake.
</PRE>
<P>现在，我们可以用以下查询来查找犹他州中的所有流量计：</P><PRE class=codeSample>select S.* 
from (
select ObjID 
from fHtmCoverRegion(@utahRegion) 
loop jo&#105;n SpatialIndex
on HtmID between HtmIdStart and HtmIdEnd
and (((     lat between 37        and      41)  -- Careful test
and (lon between -114.0475 and -109.04)) -- Are we inside 
or ((   lat between 41        and      42)  -- one of the two
and (lon between -114.0475 and -111.01)) -- boxes?
          )
and type = 'S' ) as G   
jo&#105;n Station S on G.objID = S.StationNumber  
OPTION (FORCE ORDER) 
</PRE>
<P>覆盖返回了 38 个 trixel。联接返回了 775 个测量站。仔细检查找到了犹他州中的 670 个测量站，另外有怀俄名州的两个测量站正好位于接壤处（14% 的假正值）。 </P>
<P>大多数州需要使用复杂得多的区域。例如，近似地将加利福尼亚州的边界连起来的区域为：</P><PRE class=codeSample>declare @californiaRegion varchar(max)
set @californiaRegion = 'region '
+ 'rect latlon 39    -125 '    -- Nortwest corner
+   '42    -120 '    -- Center of Lake Tahoe 
+ 'chull latlon 39    -124 '    -- Pt. Arena
+ '39    -120 '    -- Lake Tahoe.
+ '35    -114.6 '  -- Start Colorado River
+ '34.3  -114.1 '  -- Lake Havasu
+ '32.74 -114.5 '  -- Yuma
+ '32.53 -117.1 '  -- San Diego
+ '33.2  -119.5 '  -- San Nicholas Is
+ '34    -120.5 '  -- San Miguel Is.
+ '34.57 -120.65 ' -- Pt. Arguelo
+ '36.3  -121.9 '  -- Pt. Sur 
+ '36.6  -122.0 '  -- Monterey
+ '38    -123.03 ' -- Pt. Rayes
select stationNumber
from fHtmCoverRegion(@californiaRegion) 
loop jo&#105;n SpatialIndex
on HtmID between HtmIdStart and HtmIdEnd
/* and &lt;careful test&gt; */
and type = 'S'    
jo&#105;n Station S on objID = S.StationNumber 
OPTION (FORCE ORDER)
</PRE>
<P>覆盖返回了 108 个 trixel，一共包含 2132 个测量站。其中，1928 个位于加利福尼亚州内，因此假正值比率大约为 5%。但是仔细检查并非小事。 </P>
<P>针对地点而非测量站进行的相同查询（包括仔细检查）类似于以下代码：</P><PRE class=codeSample>select * 
from Place 
where HtmID in 
(select distinct SI.objID
from fHtmCoverRegion(@californiaRegion)  
loop jo&#105;n SpatialIndex SI
on SI.HtmID between HtmIdStart and HtmIdEnd 
and SI.type = 'P'
jo&#105;n place P on SI.objID = P.HtmID
cross jo&#105;n fHtmRegionToTable(@californiaRegion) Poly
group by SI.objID, Poly.convexID 
having min(SI.x*Poly.x + SI.y*Poly.y + SI.z*Poly.z - Poly.d) &gt;= 0   
   )    
OPTION (FORCE ORDER) 
</PRE>
<P>此查询使用加利福尼亚州的凸形半空间表示法和 [Gray] 中介绍的技术来快速检查某个点是否位于加利福尼亚州凸球面内。它返回了 885 个地点，其中 7 个位于与加利福尼亚州毗邻的亚利桑那州（多边形近似于加利福尼亚州的边界）。它在 1GHz 的处理器上运行了 0.249 秒。如果不用 <B>OPTION(FORCE ORDER)</B> 子句，其运行速度将变慢，需要花费 247 秒。</P>
<P>由于此要求十分常见，而且代码极具技巧性，因此我们添加了 <B>fHtmRegionObjects(Region,Type)</B> 过程，用来从空间索引中返回对象 ID。由于此过程封装了前面所示的两个技巧性代码，因此这两个针对加利福尼亚州的查询变为了：</P><PRE class=codeSample>select *                 -- Get all the California River Stations
from Station
where stationNumber in   -- that are inside the region
(select ObjID 
from fHtmRegionObjects(@californiaRegion,'S')) 
 
select *                 -- Get all the California cities
from Place
where HtmID in           -- that are inside the region
(select ObjID 
from fHtmRegionObjects(@californiaRegion,'P'))
</PRE>
<P>针对科罗拉多州和犹他州的查询也可以使用此例程来简化。</P>
<DIV style="MARGIN-TOP: 3px; MARGIN-BOTTOM: 10px"><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#top"><IMG height=9 alt=返回页首 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width=7 border=0></A><A class=topOfPage href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#top">返回页首</A></DIV><A name=EVDAE></A>
<H2>结束语</H2>
<P>在此所述的 HTM 空间索引库本身是有趣而又有用的。基于球面为“多边形内的点”查询索引数据是一种便利的方法。但是，该库还作为一个示例很好地说明了如何通过添加以诸如 C#、C++、Visual Basic 或 Java 之类的语言进行实际计算的类库来扩充 SQL Server 和其他数据库系统。实现功能强大的表值函数和标量函数并将这些查询及其永久数据集成到数据库中的能力是一种非常强大的扩充机制，它将在保证对象关系数据库的基础上传递。这仅仅是个开头。在接下来的十年中，编程语言和数据库查询语言有可能获得更好的数据集成方式。这对于应用程序开发人员来说将是一件好事。</P>
<P><B>详细信息请参见：</B></P>
<P><a href="http://www.openx.cn/file:///C:/Documents%20and%20Settings/Bluewater/桌面/2005SLE/2006.1.4/chs/chs/TblValFuncSQL_files/sql.htm"><EM>http://msdn.microsoft.com/sql/</EM></A></P>
<P>项目编辑：Susanne Bonney</P>
<DIV style="MARGIN-TOP: 3px; MARGIN-BOTTOM: 10px"><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#top"><IMG height=9 alt=返回页首 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width=7 border=0></A><A class=topOfPage href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#top">返回页首</A></DIV><A name=EDEAE></A>
<H2>附录 A：参考资料</H2>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P>[Gray]“<A href="http://go.microsoft.com/fwlink/?LinkId=54790"><EM>There Goes the Neighborhood:Relational Algebra for Spatial Data Search</EM></A>”。Jim Gray、Alexander S. Szalay、Gyorgy Fekete、Wil O'Mullane、Maria A. Nieto-Santisteban、Aniruddha R. Thakar、Gerd Heber、Arnold H. Rots，MSR-TR-2004-32，2004 年 4 月 </P></TD></TR>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P>[Szalay]“Indexing the Sphere with the Hierarchical Triangular Mesh”。Alexander S. Szalay、Jim Gray、George Fekete、Peter Z. Kunszt、Peter Kukol、Aniruddha R. Thakar，Microsoft SQL Server 2005 Samples。 </P></TD></TR>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P>[Fekete]“SQL SERVER 2005 HTM Interface Release 4”。George Fekete、Jim Gray、Alexander S. Szalay，2005 年 5 月 15 日，Microsoft SQL Server 2005 Samples。 </P></TD></TR>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P>[Samet1]“Applications of Spatial Data Structures:Computer Graphics, Image Processing, and GIS”。Hanan Samet，Addison-Wesley, Reading, MA, 1990。ISBN0-201-50300-0。 </P></TD></TR>
<TR>
<TD class=listBullet vAlign=top>•</TD>
<TD class=listItem>
<P>[Samet2]“The Design and Analysis of Spatial Data Structures”。Hanan Samet，Addison-Wesley, Reading, MA, 1990。ISBN 0-201-50255-0。 </P></TD></TR></TBODY></TABLE>
<DIV style="MARGIN-TOP: 3px; MARGIN-BOTTOM: 10px"><A href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#top"><IMG height=9 alt=返回页首 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width=7 border=0></A><A class=topOfPage href="http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx#top">返回页首</A></DIV><A name=EYEAE></A>
<H2>附录 B：基本 HTM 例程</H2>
<P>本节将介绍 HTM 例程。附带文档 [Szalay] 中含有用于每个例程的手册页，并且这些例程本身带有批注以支持 IntelliSense。</P>
<P>在下面，lat 和 lon 以十进制度数表示（南部和西部纬度为负），距离以海里（弧度分）表示。</P>
<P><B>HTM 库版本：fHtmVersion() 将返回版本字符串</B></P>
<P>例程将返回一个 <B>nvarchar(max)</B> 字符串来给出 HTM 库版本。</P>
<P>使用示例：</P><PRE class=codeSample>   print dbo.fHtmVersion()
</PRE>
<P>返回的内容类似以下结果：</P><PRE class=codeSample>   'C# HTM.DLL V.1.0.0 1 August 2005'
</PRE>
<P><B>生成 HTM 键：fHtmLatLon (lat, lon) 将返回 HtmID</B></P>
<P>例程将返回该 LatLon 点的 21 级深度的 HTM ID。 </P>
<P>使用示例：</P><PRE class=codeSample>   update Place set HtmID = dbo.fHtmLatLon(Lat,Lon)
</PRE>
<P>还有 <B>fHtmXyz()</B> 和 <B>fHtmEq()</B> 函数可供天文学家使用。 </P>
<P><B>LatLon 到 XYZ：fHtmLatLonToXyz (lat,lon) 将返回点 (x, y, z)</B></P>
<P>例程将返回该 Lat Lon 点的笛卡尔坐标。 </P>
<P>使用示例（这是标识函数）：</P><PRE class=codeSample>Select LatLon.lat, LatLon.lon-360    
from fHtmLatLonToXyz(37.4,-122.4) as XYZ cross apply 
fHtmXyzToLatLon(XYZ.x, XYZ.y, XYZ.z) as LatLon
</PRE>
<P>还有 fHtmEqToXyz() 函数可供天文学家使用。 </P>
<P><B>XYZ 到 LatLon：fHtmXyzToLatLon (x,y,z) 将返回点 (lat, lon)</B></P>
<P>例程将返回该 Lat Lon 点的笛卡尔坐标。 </P>
<P>使用示例（这是标识函数）：</P><PRE class=codeSample>Select LatLon.lat, LatLon.lon-360    
from fHtmLatLonToXyz(37.4,-122.4) as XYZ cross apply 
fHtmXyzToLatLon(XYZ.x, XYZ.y, XYZ.z) as LatLon
</PRE>
<P>还有 <B>fHtmXyzToEq()</B> 函数可供天文学家使用。 </P>
<P><B>查看 HTM 键：fHtmToString (HtmID) 将返回 HTM 字符串</B></P>
<P>如果给定了 HtmID，则例程将返回一个 <B>nvarchar(32)</B>，其形式为 <B>[N|S]t1t2t3...tn</B>，其中每个三角数字 ti 均为 {0,1,2,3} 格式，用以说明三角网格中该深度的 HTM trixel。 </P>
<P>使用示例：</P><PRE class=codeSample>print 'SQL Server development is at: ' + 
dbo.fHtmToString(dbo.fHtmLatLon(47.646,-122.123))
</PRE>
<P>返回结果：'N132130231002222332302'。</P>
<P>还有 <B>fHtmXyz()</B> 和 <B>fHtmEq()</B> 函数可供天文学家使用。</P>
<P><B>HTM trixel 中心点：fHtmToCenterpoint(HtmId) 将返回点 (x, y, z)</B></P>
<P>返回由 HtmID 指定的 HTM trixel 的笛卡尔中心点。 </P>
<P>使用示例：</P><PRE class=codeSample>select * from fHtmToCenterPoint(dbo.fHtmLatLon(47.646,-122.123)) 
</PRE>
<P><B>HTM trixel 角点：fHtmToCornerpoints(HtmId) 将返回点 (x, y, z)</B></P>
<P>返回由 HtmID 指定的 HTM trixel 的三个笛卡尔角点。 </P>
<P>使用示例：</P><PRE class=codeSample>select * from fHtmToCornerPoints(dbo.fHtmLatLon(47.646,-122.123)) 
</PRE>
<P><B>计算距离：fDistanceLatLon(lat1, lon1, lat2, lon2) 将返回距离</B></P>
<P>以海里（弧度分）为单位计算两点之间的距离。 </P>
<P>使用示例：</P><PRE class=codeSample>declare @lat float, @lon float
select @lat = lat, @lon = lon 
from  Place 
where PlaceName = 'Baltimore' and State = 'MD' 
select PlaceName, 
dbo.fDistanceLatLon(@lat,@lon, lat,  lon) as distance
from Place
</PRE>
<P>还有 <B>fDistanceXyz()</B> 和 <B>fDistanceEq()</B> 函数可供天文学家使用。 </P>
<P>下面的例程可返回一个用作空间索引的表。所返回空间索引表的数据定义为： </P><PRE class=codeSample>SpatialIndexTable table (
HtmID   bigint   not null , -- HTM spatial key (based on lat/lon)
Lat     float    not null , -- Latitude in Decimal
Lon     float    not null , -- Longitude in Decimal
x       float    not null , -- Cartesian coordinates,
y       float    not null , -- derived from lat-lon
z       float    not null , --,
Type    char(1)  not null , -- place (P) or gauge (G)
ObjID   bigint   not null , -- object ID in table
distance float   not null , -- distance in arc minutes to object
primary key (HtmID, ObjID) )
</PRE>
<P><B>查找邻近的对象：fHtmNearbyLatLon(type, lat, lon, radius) 将返回空间索引表</B></P>
<P>返回半径范围内特定类型的对象列表及它们到给定点的距离。该列表将按对象的位置由近到远排列。 </P>
<P>使用示例：</P><PRE class=codeSample>   select distance, Place.*
from fHtmNearbyLatLon('P', 39.3, -76.6, 10) I jo&#105;n Place 
on I.objID = Place.HtmID
order by distance
</PRE>
<P>还有 <B>fHtmGetNearbyEq()</B> 和 <B>fHtmGetNearbyXYZ()</B> 函数可供天文学家使用。</P>
<P><B>查找最近的对象：fHtmNearestLatLon(type, lat, lon) 将返回空间索引表</B></P>
<P>返回包含距离该点最近的特定类型对象的列表。 </P>
<P>使用示例：</P><PRE class=codeSample>   select distance, Place.*
from fHtmNearestLatLon('P', 39.3, -76.6) I jo&#105;n Place 
on I.objID = Place.HtmID
</PRE>
<P>还有 <B>fHtmGetNearbyEq()</B> 和 <B>fHtmGetNearbyXYZ()</B> 函数可供天文学家使用。 </P>
<P>下面的例程将返回一个表，用以说明覆盖所需区域的一组 trixel（HIM 三角形）的 HtmIdStart 和 HtmIdEnd。表的定义为：</P><PRE class=codeSample>TrixelTable table (
HtmIdStart   bigint not null , -- min HtmID in trixel
HtmIdEnd     bigint not null   -- max HtmID in trixel   
      )
</PRE>
<P><B>圆圈区域 HTM 覆盖：fHtmCoverCircleLatLon(lat, lon, radius) 将返回 trixel 表</B></P>
<P>返回覆盖指定圆圈的 trixel 表。 </P>
<P>使用示例：</P><PRE class=codeSample>declare @answer nvarchar(max)
declare @lat float, @lon float
select @lat = lat, @lon = lon 
from Place 
where Place.PlaceName = 'Baltimore' 
and State = 'MD' 
set @answer = ' using fHtmCoverCircleLatLon() it finds:      '
select @answer = @answer  
+ ca&#115;t(P.placeName as varchar(max)) + ', ' 
+ str( dbo.fDistanceLatLon(@lat,@lon, I.lat, I.lon) ,4,2) 
+ '  arc minutes distant.' 
from SpatialIndex I jo&#105;n fHtmCoverCircleLatLon(@lat, @lon, 5)  
On HtmID between HtmIdStart and HtmIdEnd -- coarse test
and type = 'P'                           -- it is a place
and dbo.fDistanceLatLon(@lat,@lon, lat, lon) 
between 0.1 and 5  -- careful test
jo&#105;n Place P on I.objID = P.HtmID
order by dbo.fDistanceLatLon(@lat,@lon, I.lat, I.lon) asc
print 'The city within 5 arc minutes of Baltimore is: ' 
+ 'Lansdowne-Baltimore Highlands, 4.37 arc minutes away'
</PRE>
<P>还有 <B>fHtmCoverCircleEq()</B> 函数可供天文学家使用。 </P>
<P><B>HTM 覆盖的常规区域指定：fHtmCoverRegion(region) 将返回 trixel 表</B></P>
<P>返回覆盖指定区域的 trixel 表（本主题前面对区域进行了介绍）。</P><PRE class=codeSample>select S.* 
from  (select ObjID 
from fHtmCoverRegion('RECT LATLON 37 -109.55  41 -102.05') 
loop jo&#105;n SpatialIndex
on HtmID between HtmIdStart and HtmIdEnd
and lat between 37 and 41
and lon between -109.05 and -102.048
and type = 'S') as G 
jo&#105;n Station S on G.objID = S.StationNumber
OPTION (FORCE ORDER)
</PRE>
<P><B>常规区域指定：fHtmRegionToNormalFormString(region) 将返回区域字符串</B></P>
<P>返回格式为 REGION {CONVEX {x y z d}* }* 的字符串，其中已从每个凸形删除多余的半空间；如 [Fekete] 中所述，凸形已被简化。</P><PRE class=codeSample>print dbo.fHtmToNormalForm('RECT LATLON 37 -109.55  41 -102.05')
</PRE>
<P>下面的例程将返回一个表，用以说明覆盖所需区域的一组 trixel（HIM 三角形）的 HtmIdStart 和 HtmIdEnd。表的定义为：</P><PRE class=codeSample>RegionTable (convexID     bigint not null , -- ID of the convex, 0,1,...
halfSpaceID bigint not null     -- ID of the halfspace 
-- within convex, 0,1,2,
x           float  not null     -- Cartesian coordinates of
y           float  not null     -- unit-normal-vector of 
z           float  not null     -- halfspace plane
d           float  not null     -- displacement of halfspace 
)                               -- along unit vector [-1..1]
</PRE>
<P><B>将区域字符串转换为表：fHtmRegionToTable(region) 将返回区域表</B></P>
<P>返回一个表，用以将区域作为凸形组合来说明，其中每个凸形均为 x，y，z，d 半空间的交集。如 [Fekete] 中所述，凸形已被简化。本文第 4 节介绍了此函数的用法。</P><PRE class=codeSample>select *
from dbo.fHtmToNormalForm('RECT LATLON 37 -109.55  41 -102.05')
</PRE>
<P><B>查找区域内的点：fHtmRegionObjects(region, type) 将返回对象表</B></P>
<P>返回一个表，其中包含空间索引中具有指定类型且位于区域内的对象的对象 ID。</P><PRE class=codeSample>select *            -- find Colorado places.
from Places jo&#105;n 
where HtmID in
select objID 
from dbo. fHtmRegionObjects('RECT LATLON 37 -109.55  41 -10, 2.05','P')
</PRE>
<P><B>常规区域诊断：fHtmRegionError(region ) 将返回消息</B></P>
<P>如果区域定义有效，则返回“OK”；否则，返回描述区域定义问题的诊断信息，并且后跟区域的语法定义。 </P><PRE class=codeSample>print dbo.fHtmRegionError ('RECT LATLON 37 -109.55 41 -102.05')
</PRE><PRE class=codeSample>&nbsp;</PRE><PRE class=codeSample>摘:http://www.microsoft.com/china/msdn/library/data/sqlserver/TblValFuncSQL.mspx?mfr=true</PRE>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=407" /> 
	  <id>http://www.openx.cn/default.asp?id=407</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Google maps,51diitu切割方法]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-01-18T17:15:41+08:00</updated>
	  <published>2007-01-18T17:15:41+08:00</published>
		  <summary type="html"><![CDATA[<P>Google maps切割方法 <BR>
<P>1. &nbsp; &nbsp; &nbsp; &nbsp; 缩放等级与图幅数 <BR>
<P>Google maps的缩放等级是0-17共18个等级，比例尺与缩放等级是成反比的（比例尺越大地图越详细），其第17 等级只有一幅世界地图，某一等级下所含地图数的计算公式为2^(17-n)^2（n为缩放等级）。 <BR>
<P>2. &nbsp; &nbsp; &nbsp; &nbsp; 图幅生成与编号 <BR>
<P>可以假设Google maps在每一缩放等级下的地图上都建立了一个坐标系，坐标原点为（西经180度，北纬90度），正方向分别为向东向南，经度跨度为360度，纬度跨度为180度。一般情况下，为便于理解可以这么认为，若在缩放等级n的情况下，共需生成（2^(17-n)）^2副图片，其编号形如(x,y)（0&lt;=x&lt;=2^(17-n)-1,0&lt;=y&lt;=2^(17-n)-1）。 <BR>
<P>但由于制图区域的范围、形状和地理位置等的不同需要选择不同的投影方式，以减少投影成平面地图后的误差值。在世界地图中常用墨卡托投影绘制世界航线图、世界交通图与世界时区图；我国出版的世界地图多采用等差分纬线多圆锥投影，选用这个投影，对于表现中国形状以及与四邻的对比关系较好，但投影的边缘地区变形较大。根据不同的需要还有许多其它的投影方式，在此不再赘述，当然国家基本比例尺地形图的投影、分幅等，是由国家测绘主管部门研究制订，不容许任意改变的，另外编制小区域大比例尺地图，无论采用什么投影，变形都是很小的。 <BR>
<P>由于Google是面向全世界的，故其不同比例尺下并且相同比例尺下不同地区不同国家其投影方式都是不同的，我猜测为使整个世界范围内的地图达到相对的精确是以牺牲海洋两极 <BR>等人烟稀少地图的变形为代价的，当然这也只是针对小比例尺下的地图，随着比例尺的不断放大这种投影上的差距会越来越小。 <BR>
<P>3. &nbsp; &nbsp; &nbsp; &nbsp; 结论 <BR>
<P>每个切割的小图片是256*256（像素），常识来判断每个小图片代表的实际区域长宽之比应为2：1，但由于投影不同的存在，其实它是1：1 的，至于中间过程怎么处理的我也没搞明白。 <BR>关于51ditu <BR>
<P>1. &nbsp; &nbsp; &nbsp; &nbsp; 缩放等级 <BR>
<P>使用的比例级别总共有0-12级共13个级别，他们和实际的比例尺的对应关系分别是： <BR>
<P>0级 -------------------- 1:2,500 <BR>
<P>1级 -------------------- 1:5,000 <BR>
<P>2级 -------------------- 1:10,000 <BR>
<P>3级 -------------------- 1:25,000 <BR>
<P>4级 -------------------- 1:50,000 <BR>
<P>5级 -------------------- 1:100,000 <BR>
<P>6级 -------------------- 1:250,000 <BR>
<P>7级 -------------------- 1:500,000 <BR>
<P>8级 -------------------- 1:1,000,000 <BR>
<P>9级 -------------------- 1:2,500,000 <BR>
<P>10级 ------------------- 1:5,000,000 <BR>
<P>11级 ------------------- 1:10,000,000 <BR>
<P>12级 ------------------- 1:50,000,000 <BR>
<P>简单的说，0级地图最详细，12级地图最简单。 <BR>
<P>以上是其官方发布的数据。 <BR>
<P>2. &nbsp; &nbsp; &nbsp; &nbsp; 与Google的比较 <BR>
<P>51地图和Google maps都开放了API，有人结合两者的API 把它们集成到一块，发现两者的经纬度吻合的非常好，我想这也主要是在大比例尺地图下只要两者的切割方法相同就可以做到的，故为了以后能更好的兼容并向领先者学习&shy;我们也争取达到这种比较好的吻合效果。 <BR>
<P>但分析两者的切割图片发现Google的是256*256（像素），而51ditu是128*128（像素）。如下图（1）、图（2）两幅图（两幅图均没有包含到最南端的曾母暗沙）: 由于两者是采用的不同的投影方式，故地图在外形上有着比较大的差别，但应该注意的是每一小片上只是面积上的差别，通俗点来讲要有都有要没有都没有；由于两者每一&shy;幅图片是不等的，在实际中Google的每一图幅的面积应该是51ditu的4倍，但我们将两者放在同样大小的比例中发现两者吻合的比较好，由此也可推测随着比例的放大吻合程度将会更好，也就是说两者的切割方法是相同的，只不过导出图片的&shy;大小不同而已。 <BR>
<P>3. &nbsp; &nbsp; &nbsp; &nbsp; 坐标系统 <BR>
<P>同样可以假设51ditu在每一缩放等级下的地图上也都建立了一个坐标系，不同的是其坐标原点为（西经11.25度，北纬0度），正方向分别为向东向北，跨度范围基本上就是覆盖中国的国土面积，即经度跨度为【67.5，135】，纬度跨度为【0，56.25】，而中国领土北起漠河以北的黑龙江江心（北纬53°30′），南到南沙群岛南端的曾母暗沙（北纬4°），跨纬度49度多；东起黑龙江与乌苏里江汇合处（东经135°05′），西到帕米尔高原（东经73°40′），跨经度60多度。 <BR>
<P>[img]/attachments/Google.PNG[/img] 
<P>图（1） <BR>
<P>[img]/attachments/51ditu.PNG[/img]<BR>
<P>图（2） <BR>拟采用的方案 <BR>
<P>1. &nbsp; &nbsp; &nbsp; &nbsp; 方案简述 <BR>
<P>由于Google maps并没有提供大比例尺下的中国地图，故将其作为参照系不是一个很好的选择，为便于以后的比较，我们采用与51ditu相同的坐标系统，即编号方式。 <BR>
<P>如上图（2）所示，小图片12-1-7.png,是缩放等级12之下的一副图片，1是纬度方向上的序号，7是经度方向上的序号，从以上分析我们得知，缩放等级1&shy;2之下，整个地球的切图共是*张，在投影影响的基础上，每个图片的跨度为11.25*11.25度，图片12-1-7.png左下角点的经纬度为（67.5，11.25），很明显（67.5+11.25）/11.25=7，11.25/11.25=1。这样我们就得到了切割图片序号的计算公式，一般化如下： 
<P>在缩放等级为n之下，切割图片的边长（设为d）d=360度/2^(17-n)，若小图片左下角坐标为（x,y）,并设经度方向上的序号为bx, 纬度方向上的序号为by,可得到其表达式为bx=(x+11.25)/d;by=y/d.。 <BR>
<P>由于我们只是针对中国范围，故取经度跨度为【67.5，135】，纬度跨度为【0，56.25】，在切割时可以适当延展，延展单位以11.25为准。 <BR>
<P>2. &nbsp; &nbsp; &nbsp; &nbsp; 命名规则、存储方案 <BR>
<P>在最大比例尺即缩放等级为0之下，取经度跨度为【67.5，135】，纬度跨度为【0，56.25】，可以计算出共需切割的图片数量为2^17*（67.5 /360）*2^17*（56.25/360）=131072*（3/16）*131072*（5/32）=112,442,880.缩放等级n之下,所需图片数量的计算公式为2^(17-n)*（67.5/360）*2^(17-n)*（56.25/360）=15*2^(25-2n)(0&lt;=n&lt;=12) <BR>
<DIV>以下为各比例尺之下的对应关系 </DIV>
<P>
<TABLE cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2><STRONG>缩放级别</STRONG><STRONG></STRONG></FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2><STRONG>比例尺</STRONG></FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2><STRONG>图幅数</STRONG></FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2><STRONG>存储空间（4K/</STRONG><STRONG>幅）</STRONG></FONT></DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>0级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:2,500</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>503,316,480</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1920G</FONT></DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:5,000</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>125,829,120</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>480G</FONT></DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>2级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:10,000</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>31,457,180</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>120G</FONT></DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>3级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:25,000</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>7,864,320</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>30G</FONT></DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>4级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:50,000</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1,966,080</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>7.5G</FONT></DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>5级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:100,000</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>491,520</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1.875G</FONT></DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>6级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:250,000</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>122,880</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2></FONT></DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>7级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:500,000</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>30,720</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2></FONT>&nbsp;</DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>8级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:1,000,000</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>7,680</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2></FONT>&nbsp;</DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>9级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:2,500,000</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1,920</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2></FONT>&nbsp;</DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>10级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:5,000,000</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>480</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2></FONT>&nbsp;</DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>11级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:10,000,000</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>120</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2></FONT>&nbsp;</DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>12级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:50,000,000</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>30</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2></FONT>&nbsp;</DIV></TD></TR></TBODY></TABLE>
<P class=MsoNormal style="MARGIN-LEFT: 21pt; TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">由以上分析可见在大比例尺下若全部生成</SPAN><SPAN lang=EN-US>,</SPAN><SPAN style="FONT-FAMILY: 宋体">其数量是很巨大的</SPAN><SPAN lang=EN-US>,</SPAN><SPAN style="FONT-FAMILY: 宋体">考虑到某些大比例尺地图只是在某些地区或特殊要求时是必须的</SPAN><SPAN lang=EN-US>,</SPAN><SPAN style="FONT-FAMILY: 宋体">我们没有必要全部生成</SPAN><SPAN lang=EN-US>,</SPAN><SPAN style="FONT-FAMILY: 宋体">只需生成规定经纬度范围内的某一缩放级别下的地图。但即使这样小缩放级别下的图幅数量仍然不小</SPAN><SPAN lang=EN-US>,</SPAN><SPAN style="FONT-FAMILY: 宋体">所以我们应该分区域在不同文件夹下存放。从级别</SPAN><SPAN lang=EN-US>n</SPAN><SPAN style="FONT-FAMILY: 宋体">到级别</SPAN><SPAN lang=EN-US>n+1,</SPAN><SPAN style="FONT-FAMILY: 宋体">图片数量后者是前者的</SPAN><SPAN lang=EN-US>4</SPAN><SPAN style="FONT-FAMILY: 宋体">倍</SPAN><SPAN lang=EN-US>,</SPAN><SPAN style="FONT-FAMILY: 宋体">即放大一个级别原级别一张图片裂变为四张</SPAN><SPAN lang=EN-US>,</SPAN><SPAN style="FONT-FAMILY: 宋体">这样我们可以借鉴四杈树的组织形式</SPAN><SPAN lang=EN-US>,</SPAN><SPAN style="FONT-FAMILY: 宋体">即若树的深度为</SPAN><SPAN lang=EN-US>N,</SPAN><SPAN style="FONT-FAMILY: 宋体">深度为</SPAN><SPAN lang=EN-US>N-1</SPAN><SPAN style="FONT-FAMILY: 宋体">的节点子节点均为</SPAN><SPAN lang=EN-US>30</SPAN><SPAN style="FONT-FAMILY: 宋体">个</SPAN><SPAN lang=EN-US>,</SPAN><SPAN style="FONT-FAMILY: 宋体">其余节点子节点为四个</SPAN><SPAN lang=EN-US>(</SPAN><SPAN style="FONT-FAMILY: 宋体">当深度为</SPAN><SPAN lang=EN-US>1</SPAN><SPAN style="FONT-FAMILY: 宋体">时</SPAN><SPAN lang=EN-US>,</SPAN><SPAN style="FONT-FAMILY: 宋体">根结点子节点为</SPAN><SPAN lang=EN-US>5*6=30</SPAN><SPAN style="FONT-FAMILY: 宋体">个</SPAN><SPAN lang=EN-US>),</SPAN><SPAN style="FONT-FAMILY: 宋体">树的深度与缩放级别的对应关系为</SPAN><SPAN lang=EN-US>N=13-n</SPAN><SPAN style="FONT-FAMILY: 宋体">。</SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt; TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">树的节点的命名即为对应文件夹的名称，根结点即以缩放级别命名，叶节点对应图片以形如“</SPAN><SPAN lang=EN-US>bx-by.png</SPAN><SPAN style="FONT-FAMILY: 宋体">”的形式命名，其它节点则是形如“</SPAN><SPAN lang=EN-US>0-0</SPAN><SPAN style="FONT-FAMILY: 宋体">”、“</SPAN><SPAN lang=EN-US>0-1</SPAN><SPAN style="FONT-FAMILY: 宋体">”、“</SPAN><SPAN lang=EN-US>1-0</SPAN><SPAN style="FONT-FAMILY: 宋体">”、“</SPAN><SPAN lang=EN-US>1-1</SPAN><SPAN style="FONT-FAMILY: 宋体">”的形式命名。</SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt; TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">这样一来生成图片的时候就有一个路径判断和生成的问题。在确定了经度跨度为【</SPAN><SPAN lang=EN-US>67.5</SPAN><SPAN style="FONT-FAMILY: 宋体">，</SPAN><SPAN lang=EN-US>135</SPAN><SPAN style="FONT-FAMILY: 宋体">】，纬度跨度为【</SPAN><SPAN lang=EN-US>0</SPAN><SPAN style="FONT-FAMILY: 宋体">，</SPAN><SPAN lang=EN-US>56.25</SPAN><SPAN style="FONT-FAMILY: 宋体">】，并且在最小比例尺（缩放等级为</SPAN><SPAN lang=EN-US>12</SPAN><SPAN style="FONT-FAMILY: 宋体">）之下我们已知图片是</SPAN><SPAN lang=EN-US>5*6</SPAN><SPAN style="FONT-FAMILY: 宋体">张，即经度方向为</SPAN><SPAN lang=EN-US>6</SPAN><SPAN style="FONT-FAMILY: 宋体">，纬度方向为</SPAN><SPAN lang=EN-US>5</SPAN><SPAN style="FONT-FAMILY: 宋体">，这两个值很重要直接影响到我们的命名，当然前提变了这个值也随着变了。我们制定规则如下：</SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt; TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">如前树的深度为</SPAN><SPAN lang=EN-US>N</SPAN><SPAN style="FONT-FAMILY: 宋体">，经度方向上的序号为</SPAN><SPAN lang=EN-US>bx,</SPAN><SPAN style="FONT-FAMILY: 宋体">纬度方向上的序号为</SPAN><SPAN lang=EN-US>by</SPAN><SPAN style="FONT-FAMILY: 宋体">。则当</SPAN><SPAN lang=EN-US>1&lt;N&lt;max(N)</SPAN><SPAN style="FONT-FAMILY: 宋体">时，经度方向上的节点值</SPAN><SPAN lang=EN-US>Lng</SPAN><SPAN style="FONT-FAMILY: 宋体">＝</SPAN><SPAN lang=EN-US>ToString(((bx-7*N)/6)%2), </SPAN><SPAN style="FONT-FAMILY: 宋体">纬度方向上的节点值</SPAN><SPAN lang=EN-US>Lat</SPAN><SPAN style="FONT-FAMILY: 宋体">＝</SPAN><SPAN lang=EN-US>ToString((by/5)%2),</SPAN><SPAN style="FONT-FAMILY: 宋体">则节点名称命名为</SPAN><SPAN lang=EN-US>Lng+”-”+Lat</SPAN><SPAN style="FONT-FAMILY: 宋体">。</SPAN><BR></P>
<P>&nbsp;</P>
<P>源自:http://tangf.cnblogs.com/</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=406" /> 
	  <id>http://www.openx.cn/default.asp?id=406</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[JOYES炒饭：“独立WAP消失论”不成立]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-01-15T18:09:02+08:00</updated>
	  <published>2007-01-15T18:09:02+08:00</published>
		  <summary type="html"><![CDATA[<DIV class=ce26>来源: 捉鱼JOYES 2007-1-8 作者:JOYES炒饭 责任编辑:微蓝</DIV>
<TABLE style="MARGIN: 10px 0px 20px" height=260 cellSpacing=0 cellPadding=0 width=556 border=0>
<TBODY>
<TR>
<TD class=f14 vAlign=top align=left height=200><SPAN style="FONT-SIZE: 14px">　　写这个话题是有点百无聊赖。和朋友讨论这个问题已经是N个月之前的事了。当时是由于传闻移动要封杀免费WAP站而聊到这上面的。3G越来越近，不少人觉得WAP几乎没有存在的必要了，3G手机功能强大，支持WEB将不再是少数人的特权。那么WAP会消失吗？<BR><BR>　　<B>我认为WAP是不会消失的，而且会很茁壮的成长</B>。<BR><BR>　　以下只是我个人的拙见，写出来供大家乐一乐。说到无线网络就不得不提一下目前中国的接入方式。大家最熟悉的CMWAP和CMNET两种。其实前者是很具有中国特色的接入方式，是移动专门为了能够在现有网络状况下能够浏览WAP站点而弄出来的这么一个独生子。价格低廉是符合中国国情的，于是中国的WAP站也就围绕此“子”而茁壮成长起来。<BR><BR>　　当传闻移动将封杀免费WAP站，关掉CMWAP接入方式的时候，好多人慌了。甚至可以说好多人开始制造恐慌了。这些所谓的行家们开始大肆宣扬毁灭论，当然作为新闻热点也是茶余饭后不错的话题。想想看，如果WAP接入方式被封，真的会对众多免费WAP站产生致命打击吗？<BR><BR>　　<B>关掉CMWAP对WAP影响微乎其微，甚至还有促进作用</B><BR><BR>　　首先从免费WAP站的发展来看，近两年免费WAP站如同雨后春笋，成长势头可以用“疯狂”来形容了。大大小小的免费WAP多入牛毛。从高端技术到自建站系统，任何一个人都可以几分钟轻松拥有自己的WAP站。如同当初的PC建站风靡一时一样，玩WAP开始成为关注IT的年轻人的新时尚。如此众多的WAP站，内容同质化严重，其中大部分还都只是个人的娱乐行为。更残酷的是免费WAP站靠什么而活？广告！没错，就是广告。SP的广告即使到现在仍然是免费WAP的主要收入来源。有些人甚至将建立WAP站赚钱等同于在TAOBAO上开店。从小站到大站，从每月几百元到每月几十万，都是广告收入。WAP联盟的产生也就是在这样的环境下迅成长起来的。有实力的SP可以自建联盟，没有实力的就靠人肉法去挨家挨户推广。<BR><BR>　　现在这个行业在洗牌，广告投放少了，免费WAP站自然也开始过的不自在了。其实广告投放减少对大WAP站的影响比对小WAP站更严重一些。小WAP站大都是个人站，有几个人真正指着这个去赚钱呢？没有收入了，租不起空间了，域名到期了，不做也就不做了，反正大家站内内容都差不多，甚至用的是一个联盟的东西，对于小站哪有什么用户粘性呢？骗得一分广告钱是赚，骗不到那也没什么大不了。<BR><BR>　　这么看来，即使CMWAP接入方式不被封，该洗牌的还是要洗牌，该淘汰的还是要淘汰。个人站就是个人站，拿到VC的活下来了，剩下的还是塌塌实实的回家抱老婆孩子去挣死工资好了。<BR><BR>　　<B>假设CMWAP接入方式被封，情况会如何</B><BR><BR>　　那么，排除了接入方式对免费WAP站的致命影响，我们再来假设如果真的没有了CMWAP接入方式，情况又会如何？<BR><BR>　　WAP和NET两种方式速度和价格我就不多介绍了。各位肯定都清楚的很。用户不使用后者的原因主要还是因为价格昂贵。那么如果运营商真的封杀了便宜货，免费WAP就真的没人看了吗？真的就要毁灭了吗？这些所谓的行家，所谓的恐慌制造者们好象忽略了一个很明显也很简单的问题。运营商不是3岁孩子，他再牛也不会冒着让中国无线网络倒退的风险而做这种损人不利己的事情。封杀WAP接入方式，那么运营商自然会相应的调整NET接入方式的价格，甚至是推出套餐等等。否则，真的让所有中国手机上网用户只去看梦网吗？恐怕他还不敢这么做。那么更快的接入方式，更便宜的价格对免费WAP来说只能是福音。是的，是福音。速度快了，大家可以做以前不能做的东西了，价格便宜了，更多的人可以用手机上网了。那么免费WAP站会朝向内容更加丰富，个性更加鲜明，竞争更加激烈的方向发展。同时，这样的WAP站也将更加向3G时代靠拢，更加具有新一代WAP站的特点。<BR><BR>　　<B>3G时代来临，WAP移动互联网不会消失</B><BR><BR>　　接入方式的恐慌排除了，那么3G时代的来临会让WAP这种移动互联网的协议消失吗？从WAP1.0一直到WAP2.0。WAP一直是那种简单的文字表现形式，WAP2.0显然还是不能满足用户的需求。它只是在这样的网络环境下诞生的妥协版本而已。3G的到来真的会让WAP一下跨越到WEB吗？<BR><BR>　　一个协议的诞生是有多方面因素的，从硬件到软件，从市场到技术。这是一个行业的标准，怎么可能是你说没有就没有的。随着无线网络的逐渐完善，WAP肯定会越来越向WEB的丰富表现形式靠近，甚至可以说完全相同。但是WAP协议是不可能消失的，即使是拥有了所有有线互联网的功能，WAP依然只能叫WAP。这种针对无线互联网量身定做而诞生的标准趋向的是内容更加丰富，标准更加完善，更加符合无线移动存储设备的高效快捷。移动存储设备要的就是方便携带，一些完全没必要体现的内容将会得到精简和省略，这也是WAP的宗旨。在丰富内容、高速网络和简约快捷中取得一个平衡才是WAP要考虑的问题。<BR><BR>　　写到此处不想再写下去了，再写下去就干脆把WAP2.0拿出来然后开个技术研讨会了。相信WAP的明天会很美好。作为正在从事WAP方面工作的我来说，如何更加制作出独特化、个性化的WAP站，如何让更多初涉无线网络的手机用户能够体会到WAP的魅力是我07年也是今后努力的方向。愿所有同行新年前程似锦，再创辉煌！<BR><BR><B>　　以上文章经业内资深人士“炒饭”授权独家发布，如需转载，请注明出处“捉鱼JOYES”及作者“JOYES炒饭”，并及时与微蓝取得联系，如非法转载，我们将保留追究违权方法律责任的权力。</B><BR></SPAN></TD></TR></TBODY></TABLE>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=405" /> 
	  <id>http://www.openx.cn/default.asp?id=405</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[福州电信互联网DNS升级通知]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-01-09T14:12:46+08:00</updated>
	  <published>2007-01-09T14:12:46+08:00</published>
		  <summary type="html"><![CDATA[<P>福州电信DNS升级咯,福州的朋友注意咯,记得晚上回家换DNS咯.</P>
<P>具体内容摘自:http://www.fj.ct10000.com/view/news/news_content.jsp?newsid=5175</P>
<P>=============================================================</P>
<P>发表时间：2007-01-08</P>
<P>
<P>尊敬的用户：</P>
<P>　　为了提升福州电信互联网服务品质，福州电信互联网DNS已经升级，现主用DNS：218.85.157.99;备用DNS：202.101.98.55。<BR>&nbsp; 　　2007年1月9日0：00，原备用DNS（202.101.98.54）将停闭。若您主用DNS为202.101.98.54的用户请修改DNS指向，具体配置方法如下：<BR>一、动态IP用户建议配置：</P>
<P><IMG src="http://www.fj.ct10000.com/view/news/AttchMap/3386/自动获取01.jpg"><BR>二、静态IP用户建议配置：</P>
<P><IMG src="http://www.fj.ct10000.com/view/news/AttchMap/3387/不自动获取01.jpg"></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=404" /> 
	  <id>http://www.openx.cn/default.asp?id=404</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[web3.0是一种思想的进步]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2007-01-08T09:26:24+08:00</updated>
	  <published>2007-01-08T09:26:24+08:00</published>
		  <summary type="html"><![CDATA[<P>当web3.0处于初期的时候，很多人对此发表不同的观点：</P>
<P>&nbsp;</P>
<P>　　纽约时报对此的解释是(转自博友木的，在这篇文章中有引用：Web3.0的“初步概念”)， “Referred to as Web 3.0, the effort is in its infancy, and the very idea has given rise to skeptics who have called it an unobtainable vision…”</P>
<P>&nbsp;</P>
<P>　　Mezi.Bulunbulei博士在其博客中这样写到：“web3.0，就是让个人和机构之间建立一种互为中心而转化的机制，也就是说个人在一定程度上可以转化为机构，机构在一定的环境下也可以像个人一样，拟人化的进行他们的商业行为，而进一步拉近和网民的距离……”</P>
<P>&nbsp;</P>
<P>　　有文章这么来描述web3.0，</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “web3.0的最大价值在于，最重要的不是提供信息，而是提供基于不同需求的过滤器，每一种过滤器都是基于一个市场需求。”</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基于此得出“web3.0会变成一种全员营销的模式，参与者与网站共同获利。”这样的结论。</P>
<P>&nbsp;</P>
<P>　　Qiantu.org认为，“其实很简单Web3.0将是语义网的天下，按照雨禅的说法应该还加上P2P，但P2P只是一种信息传播渠道而已，而语义网则是根本上改变信息的产生和组织的。”，“2.0已经是以用户为中心了，3.0似乎应该是以用户信息需求的最大满足为中心了。”，于是得出“ 新瓶装旧酒，但愿能让这酒卖的更好些。”</P>
<P>&nbsp;</P>
<P>　　土豆空间的博友认为，“web3.0跟web2.0一样，仍然不是技术的创新，而是思想的创新，进而指导技术的发展和应用。”</P>
<P>&nbsp;</P>
<P>　　也有网友这么来调侃web3.0的，说web3.0就是“吃喝买卖随己”。</P>
<P>&nbsp;</P>
<P>　　看来真是仁者见仁智者见智，对我个人而言，我首先认同土豆空间以及东村吉普赛在博客中所描述的观点，无论是web2.0也好，web3.0也好都是一种思想的创新，这也符合纽约时报所谓的web3.0是开拓视野的观点。方兴东在其博客中引用了Dion Hinchcliffe在其博客中用到的这样一个图片(如下所示)：</P>
<P align=center><IMG style="BORDER-LEFT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-COLOR: #000000; BORDER-RIGHT-COLOR: #000000" src="http://column.chinabyte.com/imagelist/06/49/ke01390912d6.jpg" border=1></P>
<P>　　在文中Dion Hinchcliffe说， “Web 2.0 Is Much More About A Change In People and Society Than Technology…But this is still just another aspect in the way that we, ourselves, have changed the way we use the Web. …“(web2.0相对于技术变化来说，在人与社会之间的变化显得更加多一些…web2.0使我们改变了我们自己使用互联网的方式…)。</P>
<P>&nbsp;</P>
<P>　　谈到Web3.0我的观点是，相对于技术而言，的的确确web3.0让我们再度开拓了视野，基于此，我在Dion Hinchcliffe关于”Web1.0 VS Web2.0“的图片的基础上，制作了我理解的Web3.0的图片：</P>
<P align=center><IMG style="BORDER-LEFT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-COLOR: #000000; BORDER-RIGHT-COLOR: #000000" src="http://column.chinabyte.com/imagelist/06/49/r5mm481idnv8.JPG" border=1></P>
<P>　　实际上我想要说明的的是，对于互联网来说每个10年都会有突飞猛进的发展，现有Web2.0的有少量用户产生内容，再有BSP也好的平台提供商提供内容发 布。但到了Web3.0时代，这项革新则变成所有的内容产生，发布都有用户来完成，而BSP等平台商仅仅是提供一个媒介罢了，才能真正实现 collective intelligence所保护的包括技术因素在内的更多的思想的因素。</P>
<P>&nbsp;</P>
<P>　　就目前而言，要实现collective intelligence尚且有些困难，要改变我们自己的思维模式，从Web2.0时代的”Read-Write Web“到Web3.0时代的”Write-Read Web“也行并不仅仅是一个“写”(Write)与“读”(Read)谁先谁后的简单排列。我期望这一切在十年后(2016年)真正实现。</P>
<P>&nbsp;</P>
<P>源自:http://column.chinabyte.com/206/2704706_1.shtml</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=403" /> 
	  <id>http://www.openx.cn/default.asp?id=403</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[推荐一个计算域名价值的网站]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-01-06T21:03:12+08:00</updated>
	  <published>2007-01-06T21:03:12+08:00</published>
		  <summary type="html"><![CDATA[<P>可以计算域名的价值,呵呵快来看看自己的域名能值多少钱哦哈哈</P>
<P><A href="http://www.dnscoop.com/">http://www.dnscoop.com/</A></P>
<P>&nbsp;</P>
<P>请看Openx.cn的价值,哈哈.</P>
<DIV style="BORDER-BOTTOM: #444444 1px dotted">Site Value Report</DIV>
<DIV style="FLOAT: left"><IMG hspace=8 src="http://www.dnscoop.com/include/images/tools/value.gif" vspace=3></DIV>
<P><SMALL>The estimated value of http://www.openx.cn is: <B>$13,780</B><BR><BR>This value is calculated based on several factors shown above, including: Links, Traffic (Alexa), age of the domain, site category, domain keyword popularity, and overall occurences of the domain name on the web.</SMALL></P>
<P><SMALL></SMALL>&nbsp;</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=402" /> 
	  <id>http://www.openx.cn/default.asp?id=402</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Internet Explorer 7 针对网页呈现的改进]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2007-01-06T20:50:28+08:00</updated>
	  <published>2007-01-06T20:50:28+08:00</published>
		  <summary type="html"><![CDATA[Internet Explorer 7包含了许多有关于层叠样式表(CSS)解析与呈现的改进。这些改进意在提高Internet Explorer解释层叠样式表的一致性,以达到W3C的推荐的标准，同时为开发者提供一个可以依赖的功能集合。 
<P><STRONG>Internet Explorer 7中的层叠样式表兼容性</STRONG></P>
<P><A href="http://go.microsoft.com/?linkid=5994380">http://go.microsoft.com/?linkid=5994380</A></P>
<P><FONT class=content>Internet Explorer 7包含了许多有关于层叠样式表（CSS）解析与呈现的改进。这些改进意在提高Internet Explorer解释层叠样式表的一致性，以达到W3C的推荐的标准，同时为开发者提供一个可以依赖的功能集合。</FONT></P>
<P><FONT class=content><STRONG>Internet Explorer 7中HTTPS安全性的改进</STRONG><BR></FONT></P>
<P><FONT class=content><A href="http://go.microsoft.com/?linkid=5994381">http://go.microsoft.com/?linkid=5994381</A> HTTPS使用加密来保护您的网络传输,以避免网络上的其他人进行窃听或者篡改.HTTPS使用安全套接字层(SSL)或者传输层安全(TLS)协议来保护数据。 </FONT></P>
<P><FONT class=content><STRONG>SSL,TLS以及ActiveX:IE7如何在安全性和兼容性方面找到平衡点</STRONG></FONT></P>
<P><FONT class=content><A href="http://go.microsoft.com/?linkid=5994379">http://go.microsoft.com/?linkid=5994379</A></FONT></P>
<P><FONT class=content>帮助我们保持安全型和兼容性平衡的法则是:不要影响已经存在的站点,除非需要为了保护最终用户而改变IE。当我们要求网络开发人员和服务器管理员作出改变时,他们坦白的告诉我们什么可以改变,什么不可以。今天,我们要通过一些例子来看看这些法则是如何在IE7中体现的。 </FONT></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=401" /> 
	  <id>http://www.openx.cn/default.asp?id=401</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Win2003集群简介]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2007-01-05T11:23:15+08:00</updated>
	  <published>2007-01-05T11:23:15+08:00</published>
		  <summary type="html"><![CDATA[<P>简介 <BR><BR>　　集群服务在企业组织部署关键业务、电子商务与商务流程应用起到了日益重要的作用。 <BR><BR>　　集群是在一组计算机上运行相同的软件并虚拟成一台主机系统为客户端与应用提供服务。 计算机通过缆线物理连接并通过集群软件实现程序上的连接，可以使计算机实现单机无法实现的容错和负载均衡。 <BR><BR>　　Windows Server 2003 家族产品将提供两种类型的集群服务： <BR><BR>　　--集群服务(MSCS) 仅用于Windows Server 2003 企业版和Datacenter版，该服务为像数据库、消息系统、文件与打印服务这些关键业务应用提供了高可用性和可扩展性。在集群中的多个服务器（节点）保持不间断的联系。如果在集群中的某一节点因出错或维护不可用时，另一节点会立刻提供服务，以实现容错。正在访问服务的用户可以继续访问，而不会察觉到服务已经由另一台服务器（节点）提供。 <BR><BR>　　Windows Server 2003的企业版和Datacenter版都可以支持最大达8个节点的集群配置。这一改变增强了部署的灵活性：尤其对于地理分散部署的集群配置而言，并且支持主机的N+I配置(N 个主动节点+ I 个备用节点)。 N+I 模型将为将来利用Windows Server 2003部署大型Microsoft Exchange Server提供非常重要的支持。 <BR><BR>　　--网络负载均衡 (NLB) 在Windows Server 2003家族的所有版本中都可用，该服务可在集群内均衡分布访问的IP流量。网络负载均衡增强了Web服务器、流媒体服务器、终端服务器等Internet服务器程序的可用性和扩展性。作为负载均衡架构并提供了控制信息管理在WMI结构之上的应用，网络负载均衡可与现存Web服务器群结构无缝集成。 <BR><BR>　　优势 <BR></P>
<DIV align=center><IMG alt="" src="http://images.21cn.com/2003-05-16/1044460A.gif" border=1> 
<P></P></DIV><BR><BR>　　服务器集群特性 <BR><BR>
<TABLE class=12b borderColor=#333333 cellSpacing=0 cellPadding=4 width=534 border=1>
<TBODY>
<TR>
<TD width=128 bgColor=#cccccc rowSpan=4>
<DIV align=center>易于安装和配置</DIV></TD>
<TD width=384>集群服务作为Windows Server 2003 操作系统的一个主要部分，不再是一个可选的组件。这使服务器集群节点的配置不需要安装的媒介，并允许利用集群管理工具在远程服务器上创建节点和更改服务器集群配置。设置服务器集群配置不再需要重启。</TD></TR>
<TR>
<TD width=384>从服务器集群中删除一个节点就像将他从集群中退出一样简单。所有属于这个节点的集群配置信息被自动删除，且不需要重启。</TD></TR>
<TR>
<TD width=384>在配置服务器集群节点时，配置流程会校验软件和硬件配置信息以确保在完成集群服务配置之前检测出所有已知的不兼容问题。许多配置选项都给出了默认值，可以依照最佳实践简便快捷地搭建服务器集群。在安装完成后，工作的服务器集群还可以利用服务器集群管理工具进行定制。</TD></TR>
<TR>
<TD width=384>集群的配置架构为第三方软件供应商提供了开放接口。这使得应用程序可以无缝地设置服务器集群资源，并在服务器集群安装时更改配置信息。就像通过集群管理图形界面一样，服务器集群的安装还可脚本化和通过命令行进行安装。</TD></TR>
<TR>
<TD width=128 bgColor=#cccccc rowSpan=3>
<DIV align=center>支持更大的集群　</DIV></TD>
<TD width=384>Windows Server 2003Datacenter版所最大支持的节点数目已从Windows 2000的4节点增加到8个节点。</TD></TR>
<TR>
<TD width=384>Windows Server 2003企业版所最大支持的节点数目已从Windows 2000的2节点增加到8个节点。</TD></TR>
<TR>
<TD width=384>通过增加服务器集群的节点数目，管理员在部署应用和提供容错策略时有了更多的选择以匹配商务需求和风险要求。像传统的节点与/或应用失效转移一样，大的服务器集群提供了更高的灵活性以建立多站点、地理分散的集群来提供容错能力。 </TD></TR>
<TR>
<TD width=128 bgColor=#cccccc>
<DIV align=center>集成活动目录服务　</DIV></TD>
<TD width=384>Windows Server 2003企业版与Datacenter版的服务器集群集成了活动目录?服务。这一集成确保了“虚拟”出来的计算机对象在活动目录中注册。这使得应用程序可以使用Kerberos协议认证与委派运行于集群上的服务。这一计算机对象也提供了默认的存放位置以便支持AD的服务发布服务控制点。</TD></TR>
<TR>
<TD width=128 bgColor=#cccccc>
<DIV align=center>64位服务</DIV></TD>
<TD width=384>服务器集群完全支持运行64位Windows Server 2003的计算机。应用可以受益于64位 Windows Server 2003操作系统增加的内存地址，也能够受益于灾难转移所提供的高可用性。 </TD></TR>
<TR>
<TD width=128 bgColor=#cccccc>
<DIV align=center>增强的可管理性　</DIV></TD>
<TD width=384>当服务器集群使用的存储结构支持动态卷增长，集群磁盘可利用新的内置工具“DiskPart”动态在线扩展。</TD></TR>
<TR>
<TD width=128 bgColor=#cccccc rowSpan=3>
<DIV align=center>简便的资源配置</DIV></TD>
<TD width=384>很容易配置集群打印机，配置MSDTC(Microsoft Distributed Transaction Coordinator)服务也一样—只需要配置一次，配置信息就可以复制到全部节点中。</TD></TR>
<TR>
<TD width=384>应用可以通过脚本语言例如Visual Basic? Script 与JScript?实现对集群的支持。这使得为应用编写特定的资源插件以监测与控制服务器集群更为方便。</TD></TR>
<TR>
<TD width=384>脚本还支持资源指定属性；它允许资源脚本集群范围的配置信息，同样，也可以使用和管理其它资源。增强了对微软消息队列(MSMQ)的支持，包括对触发器的支持。它允许基于可靠的消息架构所提供的全部特性构建高可用性的应用。</TD></TR>
<TR>
<TD width=128 bgColor=#cccccc rowSpan=2>
<DIV align=center>网络增强</DIV></TD>
<TD width=384>服务器集群可通过重要的网络增强获益。灾难转移增强的逻辑现在支持心跳信号完全丢失；现在在仲裁（quorum）所有权决定之前所有节点公共通讯的网络状态都会被纳入考虑。</TD></TR>
<TR>
<TD width=384>媒介感知探测提供了更好的灾难转移保护。因为媒介感知在默认情况下是禁用的，网络角色被保持以及所有的IP地址相依存的资源保持在线。如果服务器集群足够大，且网络结构支持集群节点间的多播，多播心跳会被自动选择。如果多播因为某种原因失效，心跳通讯会转换为单播。在任意事件中，所有的心跳通讯都是经过签名和安全的。 </TD></TR>
<TR>
<TD width=128 bgColor=#cccccc rowSpan=4>
<DIV align=center>提高存储性能 </DIV></TD>
<TD width=384>服务器集群充分发挥强大的存储容量优势。共享磁盘现在支持卷挂载点（Volume mount point）并工作在灾难转移模式下，提供灵活的文件系统名字空间。客户端缓存(CSC)，又被称为脱机文件，现支持集群文件共享并允许客户端计算机在集群共享上存储缓存数据。</TD></TR>
<TR>
<TD width=384>改进的分布式文件系统(DFS)现在包含：多个独立根（standalone root）、独立根灾难转移(independent root failover)、支持活跃/活跃配置，并允许在不同机器上的多个文件共享聚集为一个共同的名字空间。</TD></TR>
<TR>
<TD width=384>集群服务针对存储局域网（SAN）作了优化，包含目标设备重启和存储互联需求。</TD></TR>
<TR>
<TD width=384>共享磁盘现在可以定位于同一存储互联（storage interconnect）作为启动、页面文件和临时文件磁盘。这使得集群服务器可以有单一的或单一冗余的存储互连。注：仅当供应商配置并认可这些配置后方能生效。 </TD></TR>
<TR>
<TD width=128 bgColor=#cccccc rowSpan=3>
<DIV align=center>改进的操作</DIV></TD>
<TD width=384>服务器集群在操作性能上也取得了很大的改善。数据库和配置数据可以备份和恢复，而增强的节点灾难转移可以支持集群超过三个节点以上的灾难转移。组配合支持使应用程序在灾难节点激活前转移到可用的节点，提供了增强的性能和可用性。</TD></TR>
<TR>
<TD width=384>从Windows 2000升级到Windows Server 2003家族时对集群的在线时间影响最小，因为升级时只需将集群中的一个节点脱机。集群服务账号的密码可以动态变更而无需将集群节点脱机。</TD></TR>
<TR>
<TD width=384>资源删除可通过集群管理器或cluster.exe完成，而不需要将资源脱机。集群控制与管理、应用和集群状态信息以及集群状态更改事件可提供对WMI的支持。</TD></TR>
<TR>
<TD width=128 bgColor=#cccccc rowSpan=3>
<DIV align=center>易于排错和失效恢复</DIV></TD>
<TD width=384>对服务器集群日志文件的一些改进使得诊断与排错变得更加容易。这些改进包括：集群日志；本地服务器时间戳；资源名字映射和事件日志的GUID(通用唯一标志符) 。</TD></TR>
<TR>
<TD width=384>当chkdsk在集群磁盘中运行，chkdsk的日志将被保存，chkdsk的运行状态也会被写入集群日志。</TD></TR>
<TR>
<TD width=384>资源工具包提供了新的诊断工具(ClusDiag)可以将集群中各节点的集群日志和事件日志对应和对比。针对磁盘失效事件，资源工具包包含了一个新工具 (ClusterRecovery)可以将磁盘资源重新组建并重建集群状态。</TD></TR>
<TR>
<TD width=128 bgColor=#cccccc rowSpan=3>
<DIV align=center>新的集群拓扑Metrics的可用性</DIV></TD>
<TD width=384>Windows Server 2003 提供了传统的集群仲裁（quorum）机制，也提供了一种称为“多数节点集(Majority Node Set)”的新的仲裁资源。该仲裁资源允许服务器无需共享磁盘作为仲裁设备建立集群。利用新的仲裁机制可以建立额外的集群拓扑；例如，无共享磁盘服务器集群。多数节点集也使得创建和配置多站点、地理分散的集群更为容易。 </TD></TR>
<TR>
<TD width=384>Windows Server 2003提供了一种方法来测量一个单独的组在群集中的可靠性。 记录了足够事件信息的日志群集有用事件被添加到时间日志中，使得你能够计算群集资源组的有用性。之一特征使得管理员能够评估群集中一个单独组的有用性。</TD></TR>
<TR>
<TD width=384>群集服务将在系统事件日志中记录组移动、在线或离线的成功或失败。另外，群集内部节点时钟偏移事件也被记录到系统事件日志中。通过查看在线和离线时间间隔(考虑交叉节点的时间偏差)对所有的群集节点的事件日志流进行分析，可以计算一个组在线和离线的对比量。</TD></TR>
<TR>
<TD width=128 bgColor=#cccccc>
<DIV align=center>Kerberos 支持虚拟服务器</DIV></TD>
<TD width=384>当客户端使用群集虚拟名称访问一个群集中的资源时可以使用Kerberos 身份认证方式。当使用这一特征时，就会在活动目录中创建一个虚拟对象。这将以活动目录对象的形式提供给群集通知或活动目录通知应用程序，来发布提供服务给它们的虚拟服务器的相关信息。</TD></TR>
<TR>
<TD width=128 bgColor=#cccccc>
<DIV align=center>Multi-ca&#115;t Heartbeats Between Nodes</DIV></TD>
<TD width=384>Multi-ca&#115;t heartbeats between nodes in a server cluster can reduce the amount of cluster heartbeat traffic between nodes in a larger cluster. 这将有助于减少网络和计算机中央处理器(CPU) 的使用。这一特征默认已启动。要修改配置请使用命令行工具和cluster.exe。</TD></TR>
<TR>
<TD width=128 bgColor=#cccccc>
<DIV align=center>WMI 支持服务器群集</DIV></TD>
<TD width=384>服务器群集提供Windows Management Instrumentation (WMI) 支持群集控制和管理函数、应用程序和群集状态信息。另外，使用WMI来查看群集状态改变事件。 应用程序也可以订阅WMI事件来显示信息如应用程序失败和重启以及节点失败。这将简化管理员对群集的监视和管理。</TD></TR>
<TR>
<TD width=128 bgColor=#cccccc rowSpan=6>
<DIV align=center>远程脚本宿主支持</DIV></TD>
<TD width=384>群集资源脚本宿主简化开发群集应用程序的过程。通过提供运行时环境捕获所有的复杂事务，它允许简易创建新资源类型。Windows 脚本宿主支持以下资源:</TD></TR>
<TR>
<TD width=384>* 资源健康监视和应用程序或服务的使用</TD></TR>
<TR>
<TD width=384>* 实现一个新资源类型的简单进程</TD></TR>
<TR>
<TD width=384>* 简化产生应用程序群集通知的脚本化应用程序的使用</TD></TR>
<TR>
<TD width=384>* 运行时宿主环境</TD></TR>
<TR>
<TD width=384>* 再利用存在的通用组件模型(COM)自动控制服务器</TD></TR>
<TR>
<TD width=128 bgColor=#cccccc>
<DIV align=center>存储区域网络 (SAN) 引导</DIV></TD>
<TD width=384>在新的存储区域网络技术(SAN)中,一个群集中的所有磁盘可能有相同的存储结构，可以使用一个专用的主机总线适配器(HBA)来访问它们。这一特性允许所有的磁盘 (除了启动盘、系统盘和包括页文件的磁盘以外) 都可以用作共享磁盘无论使用何种存储总线技术。这种功能可以嵌入OEMs ，IHVs和其它软件厂商的的大型解决方案中。</TD></TR>
<TR>
<TD width=128 bgColor=#cccccc>
<DIV align=center>存储区域网络(SAN) 设备仲裁</DIV></TD>
<TD width=384>新的存储区域网络(SAN)技术 提供了一种数据合并和简化管理的方法。它不支持总线重置，将共享一个SAN 的节点分离。这个特征修改群集仲裁机制来避免任何可能的总线重置。这种机制将在最近可选的一次总线重置之前尝试不同的选项。在底层驱动器, 例如SCSIPORT and RAIDPORT, 有执行设备仲裁,这种特征将能够决定基于拓扑和存储类型的重置选项。</TD></TR>
<TR>
<TD width=128 bgColor=#cccccc>
<DIV align=center>群集磁盘上的加密文件系统</DIV></TD>
<TD width=384>Windows Server 2003 在群集(共享的)磁盘上支持加密文件系统 (EFS)。这种技术用来在NTFS卷上存储加密文件。 对授权用户来说加密文件或文件夹和平常的一样使用，但其它用户不能访问。 </TD></TR></TBODY></TABLE><BR><BR>　　网络负载均衡(NLB)特性 <BR><BR>
<TABLE class=12b borderColor=#000000 cellSpacing=0 cellPadding=4 width=578 border=1>
<TBODY>
<TR bgColor=#999999>
<TD width=96>
<DIV align=center><FONT color=#ffffff>特性</FONT></DIV></TD>
<TD width=466>
<DIV align=center><FONT color=#ffffff>描述</FONT></DIV></TD></TR>
<TR>
<TD width=96 bgColor=#cccccc rowSpan=7>网络负载均衡管理器</TD>
<TD width=466>Windows Server 2003中的这一新工具可单点配置与管理NLB集群。NLB 管理器可用于：</TD></TR>
<TR>
<TD width=466>* 创建新的NLB集群并自动传播机群参数与端口规则到集群中全体主机。它也可以传播主机参数到集群中特定的主机上。 </TD></TR>
<TR>
<TD width=466>* 从NLB集群中添加与删除主机。</TD></TR>
<TR>
<TD width=466>* 自动增加服务器集群IP地址到TCP/IP。</TD></TR>
<TR>
<TD width=466>* 通过连接现存主机或从文件中读取主机信息管理现存主机并保存这些信息便于以后使用。</TD></TR>
<TR>
<TD width=466>* 配置NLB以均衡在一个网络负载均衡中的多个Web站点或应用。这包含了将所有集群IP地址添加到TCP/IP，以及控制发送到集群中特定主机上特定应用程序的流量。</TD></TR>
<TR>
<TD width=466>* 诊断不正确配置的集群。</TD></TR>
<TR>
<TD width=96 bgColor=#cccccc rowSpan=4>虚拟集群</TD>
<TD width=466>Windows Server 2003 中的这一新特性用于：</TD></TR>
<TR>
<TD width=466>* 为不同的集群IP地址配置不同的端口规则，而每一IP地址可对应到NLB集群中一个网站或应用程序。 </TD></TR>
<TR>
<TD width=466>* 过滤发送到集群中指定主机上指定的Web站点或应用的数据流量。</TD></TR>
<TR>
<TD width=466>* 选择发送到集群中指定Web站点或应用的数据由集群中哪一主机处理。</TD></TR>
<TR>
<TD width=96 bgColor=#cccccc rowSpan=3>多网卡(NIC)支持</TD>
<TD width=466>Windows Server 2003将负载均衡绑定在多块NIC卡上，使用户可以： </TD></TR>
<TR>
<TD width=466>* 在同一主机上运行多个网络负载均衡服务并分别置于完全独立的网络中。 </TD></TR>
<TR>
<TD width=466>* 在多台前端防火墙或代理服务器需要均衡负载的场景中利用NLB来为防火墙或代理服务器提供负载均衡。</TD></TR>
<TR>
<TD width=96 bgColor=#cccccc>双向配合</TD>
<TD width=466>双向配合（Bi-Directional Affinity）常用于ISA代理与防火墙的集群负载均衡。NLB通常用于ISA Web发布和服务器发布环境中。Web发布不需要双向配合，而服务器发布需要。双向配合为同一主机创建多个NLB实例协力工作以确保发布服务器的回应信息 被路由到集群中适当的ISA服务器上。</TD></TR>
<TR>
<TD width=96 bgColor=#cccccc rowSpan=2>IGMP协议支持</TD>
<TD width=466>这一新特性限制了交换机-扩散。(交换机-扩散，即Switch-flooding 起因于NLB算法使得NLB每一主机都能察看集群每个接受包的地址。) </TD></TR>
<TR>
<TD width=466>IGMP支持限制扩散仅产生到交换机连接NLB主机的端口以保护网络资源。注: IGMP支持仅在NLB配置为多播模式下才能启用。</TD></TR></TBODY></TABLE><BR><BR>　　总结 <BR><BR>　　Windows Server 2003中的集群服务通过增强现有特性与提供重要的更新特性得到了大幅的改进。 <BR><BR>　　设置和安装更为简单和健壮。通过预先配置、远程管理和默认选择，一套简单的服务器集群可以减少重启次数，更快上线运行。 <BR>将集群服务与活动目录相集成带来了许多优势，包括：“虚拟”计算机对象、Kerberos 认证与安全以及紧密地集成其他服务发布信息到活动目录等。 <BR><BR>　　增强的网络特性提供了更好的容错性能和更多系统在线时间。支持和排错方面可以通过一个实时监测的工具帮助管理员查明错误和隐患。 <BR><BR>　　更多信息 <BR><BR>　　当Windows Server 2003的最终版本可用时，微软将在网上发布一个更详尽的Windows服务器版2003技术综述。关于这些技术文章的链接可直接浏览： <BR>　　http://www.microsoft.com/china/windowsserver <BR>　　http://www.microsoft.com/china/technet <BR>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=400" /> 
	  <id>http://www.openx.cn/default.asp?id=400</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[PPC动态桌面]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2007-01-03T16:45:15+08:00</updated>
	  <published>2007-01-03T16:45:15+08:00</published>
		  <summary type="html"><![CDATA[<P>2006年过去咯。崭新的2007年也扑面而来，我对节日比较传统，比较喜欢过传统节日，所以每年圣诞，元旦都过的很平常。</P>
<P>昨天晚上下载了个PPC动态桌面的Today插件，嘿嘿用了感觉不错特此推荐。</P>
<P>安装程序不大才140k，下载（<A href="http://www.openx.cn/down.asp?downID=20&action=Url_1">http://www.openx.cn/down.asp?downID=20&action=Url_1</A>）</P>
<P>把PPC与电脑同步好，就可以安装了。</P>
<P>安装好后可以在 Today-&gt;选项 中找到 pfaceHTML 这一项目，点进他的属性选择一张GIF图片就OK了。</P>
<P>Look~~~</P>
<P>[img]http://www.openx.cn/include/Editor/UploadFile/200713164329128.gif[/img]</P>
<P>还不错吧。</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=399" /> 
	  <id>http://www.openx.cn/default.asp?id=399</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[看了后会无语.魂斗罗：超级游戏高手不杀任何小怪顺利通八关]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-12-27T09:24:54+08:00</updated>
	  <published>2006-12-27T09:24:54+08:00</published>
		  <summary type="html"><![CDATA[<P>[swf]http://www.56.com/flashApp/56.swf?img_host=v7.56.com&host=fcs5.56.com&pURL=6&sURL=4&user=heong9090&URLid=1165401770_922&totaltimes=1212498&effectID=0&flvid=4256041&56.swf[/swf]</P>
<P>&nbsp;</P>
<P>是不是很无语阿!</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=398" /> 
	  <id>http://www.openx.cn/default.asp?id=398</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[线程池（Thread Pooling）,译自MSDN]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-12-26T13:26:02+08:00</updated>
	  <published>2006-12-26T13:26:02+08:00</published>
		  <summary type="html"><![CDATA[有许多应用线程的程序在等候事件的休眠状态中消耗了大量时间，Other threads may enter a sleeping state only to be awakened periodically to poll for a change or update status information. Thread pooling enables you to use threads more efficiently by providing your application with a pool of worker threads that are managed by the system. 至少一个线程监控着线程池中排列的所有wait操作状态。当一个等候操作执行完毕，线程池中一个worker线程就会执行相应的callback函数。
<P><BR>　　你也可以把一些不需要wait操作的工作项添加到线程池中。要请求线程池中一个线程可以处理一个工作项的话，可以调用QueueUserWorkItem function. 该函数需要一个线程被选中时需要执行的函数作为参数。排队候，就没有办法撤销一个工作了。<BR>　　Timer-queue timers and registered wait operations 同样使用线程池. 他们的回调函数被排列到线程池中，你也可以通过 BindIoCompletionCallback 函数post异步I/O操作。异步I/O完成时，就会被线程池中一个线程执行callback函数。<BR>　　线程池是在第一次调用QueueUserWorkItem or BindIoCompletionCallback时创建的，或者一个timer-queue timer or registered wait operation queues a callback function.默认情况下，线程池中可创建的线程数为500，每个线程应用默认栈大小并按默认优先级执行。<BR>　　线程池中有两种类型的worker线程： I/O and non-I/O，I/O worker线程wait时有一个alertable wait状态，排队到I/O worker threads中的工作项可看为异步过程调用 (APC). <BR>　　A non-I/O worker thread waits on I/O completion ports，使用非I/O worker threads比使用I/O worker threads更有效率些。一次，你应该尽可能的使用非I/O worker threads。 如果仍有异步I/O请求未完成， I/O及non-I/O worker threads都不会exit。两种类型的线程都可被用来发起asynchronous I/O completion requests. 然而，如果异步I/O请求完成需要花费很长时间，就应当避免放置到非I/O worker threads中。<BR>　　要使用线程池，调用的工作项及所有函数必须保证是线程池安全的.安全的函数不应该假定其执行线程是dedicated or persistent的。通常情况下应当避免使用 thread local storage ，并避免把一个需要持久稳定线程的异步调用排队，如RegNotifyChangeKeyValue 函数。然而这些函数可以利用QueueUserWorkItem 的WT_EXECUTEINPERSISTENTTHREAD选项排队为一个持久稳定的worker thread。</P>
<P><BR>注意：线程池不适合于single-threaded apartment (STA) 模式。</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=397" /> 
	  <id>http://www.openx.cn/default.asp?id=397</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Windows NT/2000服务器优化]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-12-25T09:20:36+08:00</updated>
	  <published>2006-12-25T09:20:36+08:00</published>
		  <summary type="html"><![CDATA[1.初级篇:NT/2000系统本身的定制安装与相关设置
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　用NT(2000)建立的WEB站点在所有的网站中占了很大一部分比例，主要因为其易用性与易管理性，使该公司不必再投入大量的金钱在服务器的管理上，这一点优于unix系统，不必请很专业的管理员，不必支付一份可以节省的高薪，呵呵，当然unix的管理员也不会失业，因为其开放源码和windows系统无与伦比的速度，使得现在几乎所有的大型服务器全部采用unix系统。但对于中小型企业来说windows已经足够，但NT的安全问题也一直比较突出，使得一些每个基于NT的网站都有一种如履薄冰的感觉，在此我给出一份安全解决方案，算是为中国的网络安全事业做出一份贡献吧 (说明:本方案主要是针对建立Web站点的NT、2000服务器安全，对于局域网内的服务器并不合适。)</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　一、 定制自己的NT/2000 SERVER</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　1. 版本的选择:</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　WIN2000有各种语言的版本，对于我们来说，可以选择英文版或简体中文版，我强烈建议:在语言不成为障碍的情况下，请一定使用英文版。要知道，微软的产品是以Bug &Patch而著称的，中文版的Bug远远多于英文版，而补丁一般还会迟至少半个月(也就是说一般微软公布了漏洞后你的机子还会有半个月处于无保护状况)</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　2. 组件的定制:</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　win2000在默认情况下会安装一些常用的组件，但是正是这个默认安装是极度危险的你应该确切的知道你需要哪些服务，而且仅仅安装你确实需要的服务，根据安全原则，最少的服务+最小的权限=最大的安全。典型的WEB服务器需要的最小组件选择是:只安装IIS的Com Files，IIS Snap-In，WWW Server组件。如果你确实需要安装其他组件，请慎重，特别是:Indexing Service, FrontPage 2000 Server Extensions, Internet Service Manager (HTML)这几个危险服务。</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　二、 正确安装NT/2000 SERVER</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　不论是NT还是2000，硬盘分区均为NTFS分区;</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　说明:</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　(1) NTFS比FAT分区多了安全控制功能，可以对不同的文件夹设置不同的访问权限，安全性增强。</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　(2) 建议最好一次性全部安装成NTFS分区，而不要先安装成FAT分区再转化为NTFS分区，这样做在安装了SP5和SP6的情况下会导致转化不成功，甚至系统崩溃。</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　(3) 安装NTFS分区有一个潜在的危险，就是目前大多数反病毒软件没有提供对软盘启动后NTFS分区病毒的查杀，这样一旦系统中了恶性病毒而导致系统不能正常启动，后果就比较严重，因此及建议平时做好防病毒工作。</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　(4)分区和逻辑盘的分配。有一些朋友为了省事，将硬盘仅仅分为一个逻辑盘，所有的软件都装在C驱上，这是很不好的，建议最少建立两个分区，一个系统分区，一个应用程序分区，这是因为，微软的IIS经常会有泄漏源码/溢出的漏洞，如果把系统和IIS放在同一个驱动器会导致系统文件的泄漏甚至入侵者远程获取ADMIN。推荐的安全配置是建立三个逻辑驱动器，第一个大于2G，用来装系统和重要的日志文件，第二个放IIS，第三个放FTP，这样无论IIS或FTP出了安全漏洞都不会直接影响到系统目录和系统文件。要知道，IIS和FTP是对外服务的，比较容易出问题。而把IIS和FTP分开主要是为了防止入侵者上传程序并从IIS中运行。</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　(5)安装顺序的选择:win2000在安装中有几个顺序是一定要注意的: 首先，何时接入网络:Win2000在安装时有一个漏洞，在你输入Administrator密码后，系统就建立了ADMIN$的共享，但是并没有用你刚刚输入的密码来保护它，这种情况一直持续到你再次启动后，在此期间，任何人都可以通过ADMIN$进入你的机器;同时，只要安装一完成，各种服务就会自动运行，而这时的服务器是满身漏洞，非常容易进入的，因此，在完全安装并配置好win2000 SERVER之前，一定不要把主机接入网络。 其次，补丁的安装:补丁的安装应该在所有应用程序安装完之后，因为补丁程序往往要替换/修改某些系统文件，如果先安装补丁再安装应用程序有可能导致补丁不能起到应有的效果，例如:IIS的HotFix就要求每次更改IIS的配置都需要安装</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　三、 安全配置NT/2000 SERVER</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　即使正确的安装了WIN2000 SERVER，系统还是有很多的漏洞，还需要进一步进行细致地配置。</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　1.端口:端口是计算机和外部网络相连的逻辑接口，也是计算机的第一道屏障，端口配置正确与否直接影响到主机的安全，一般来说，仅打开你需要使用的端口会比较安全，配置的方法是在网卡属性-TCP/IP-高级-选项-TCP/IP筛选中启用TCP/IP筛选，不过对于win2000的端口过滤来说，有一个不好的特性:只能规定开哪些端口，不能规定关闭哪些端口，这样对于需要开大量端口的用户就比较痛苦。</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　2.IIS:IIS是微软的组件中漏洞最多的一个，平均两三个月就要出一个漏洞，而微软的IIS默认安装又实在不敢恭维，所以IIS的配置是我们的重点，现在大家跟着我一起来:首先，把C盘那个什么Inetpub目录彻底删掉，在D盘建一个Inetpub(要是你不放心用默认目录名也可以改一个名字，但是自己要记得)在IIS管理器中将主目录指向D:\Inetpub;其次，那个IIS安装时默认的什么scripts等虚拟目录一概删除，如果你需要什么权限的目录可以自己慢慢建，需要什么权限开什么。(特别注意写权限和执行程序的权限，没有绝对的必要千万不要给)第三，应用程序配置:在IIS管理器中删除必须之外的任何无用映射，必须指的是ASP,ASA和其他你确实需要用到的文件类型，例如你用到stml等(使用server side include)，实际上90%的主机有了上面两个映射就够了，其余的映射几乎每个都有一个凄惨的故事:htw, htr, idq, ida……想知道这些故事?去查以前的漏洞列表吧。在IIS管理器中右击主机-&gt;属性-&gt;WWW服务编辑-&gt;主目录配置-&gt;应用程序映射，然后就开始一个个删吧(里面没有全选的，嘿嘿)。接着在刚刚那个窗口的应用程序调试书签内将脚本错误消息改为发送文本(除非你想ASP出错的时候用户知道你的程序/网络/数据库结构)错误文本写什么?随便你喜欢，自己看着办。点击确定退出时别忘了让虚拟站点继承你设定的属性。安装新的Service Pack后，IIS的应用程序映射应重新设置。(说明:安装新的Service Pack后，某些应用程序映射又会出现，导致出现安全漏洞。这是管理员较易忽视的一点。)</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　为了对付日益增多的cgi漏洞扫描器，还有一个小技巧可以参考，在IIS中将HTTP404 Object Not Found出错页面通过URL重定向到一个定制HTM文件，可以让目前绝大多数CGI漏洞扫描器失灵。其实原因很简单，大多数CGI扫描器在编写时为了方便，都是通过查看返回页面的HTTP代码来判断漏洞是否存在的，例如，著名的IDQ漏洞一般都是通过取1.idq来检验，如果返回HTTP200，就认为是有这个漏洞，反之如果返回HTTP404就认为没有，如果你通过URL将HTTP404出错信息重定向到HTTP404.htm文件，那么所有的扫描无论存不存在漏洞都会返回HTTP200，90%的CGI扫描器会认为你什么漏洞都有，结果反而掩盖了你真正的漏洞，让入侵者茫然无处下手,不过从个人角度来说，我还是认为扎扎实实做好安全设置比这样的小技巧重要的多。</SPAN></DIV>
<DIV style="TEXT-JUSTIFY: inter-ideograph; LINE-HEIGHT: 150%"><SPAN style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">　　最后，为了保险起见，你可以使用IIS的备份功能，将刚刚的设定全部备份下来，这样就可以随时恢复IIS的安全配置。还有，如果你怕IIS负荷过高导致服务器满负荷死机，也可以在性能中打开CPU限制，例如将IIS的最大CPU使用率限制在70%。</SPAN></DIV>
<DIV style="LINE-HEIGHT: 150%"><SPAN style="LINE-HEIGHT: 150%">3.</SPAN><SPAN style="LINE-HEIGHT: 150%">帐号策略：（1）帐号尽可能少，且尽可能少用来登录；<BR>　　说明：网站帐号一般只用来做系统维护，多余的帐号一个也不要，因为多一个帐号就会多一份被攻破的危险。 <BR>　　（2）除过Administrator外，有必要再增加一个属于管理员组的帐号；<BR>　　说明：两个管理员组的帐号，一方面防止管理员一旦忘记一个帐号的口令还有一个备用帐号；另方面，一旦黑客攻破一个帐号并更改口令，我们还有有机会重新在短期内取得控制权。</SPAN></DIV>
<DIV style="LINE-HEIGHT: 150%"><SPAN style="LINE-HEIGHT: 150%">（3）所有帐号权限需严格控制，轻易不要给帐号以特殊权限； <BR>　　（4）将Administrator重命名，改为一个不易猜的名字。其他一般帐号也应尊循这一原则。 <BR>　　说明：这样可以为黑客攻击增加一层障碍。<BR>　　（5）将Guest帐号禁用，同时重命名为一个复杂的名字，增加口令，并将它从Guest组删掉； <BR>　　说明：有的黑客工具正是利用了guest 的弱点，可以将帐号从一般用户提升到管理员组。 <BR>　　（6）给所有用户帐号一个复杂的口令（系统帐号出外），长度最少在8位以上，且必须同时包含字母、数字、特殊字符。同时不要使用大家熟悉的单词（如microsoft）、熟悉的键盘顺序（如qwert）、熟悉的数字（如2000）等。<BR>　　说明：口令是黑客攻击的重点，口令一旦被突破也就无任何系统安全可言了，而这往往是不少网管所忽视的地方，据我们的测试，仅字母加数字的5位口令在几分钟内就会被攻破，而所推荐的方案则要安全的多。 <BR>　　（7）口令必须定期更改（建议至少两周该一次），且最好记在心里，除此以外不要在任何地方做记录；另外，如果在日志审核中发现某个帐号被连续尝试，则必须立刻更改此帐号（包括用户名和口令）；<BR>　　（8）在帐号属性中设立锁定次数，比如改帐号失败登录次数超过5次即锁定改帐号。这样可以防止某些大规模的登录尝试，同时也使管理员对该帐号提高警惕。 <BR>　　4．安全日志：Win2000的默认安装是不开任何安全审核的！<BR>　　那么请你到本地安全策略-&gt;审核策略中打开相应的审核，推荐的审核是： <BR>　　账户管理 成功 失败 <BR>　　登录事件 成功 失败 <BR>　　对象访问 失败 <BR>　　策略更改 成功 失败 <BR>　　特权使用 失败 <BR>　　系统事件 成功 失败 <BR>　　目录服务访问 失败 <BR>　　账户登录事件 成功 失败 <BR>　　审核项目少的缺点是万一你想看发现没有记录那就一点都没辙；审核项目太多不仅会占用系统资源而且会导致你根本没空去看，这样就失去了审核的意义。 与之相关的是： <BR>　　在账户策略-&gt;密码策略中设定：<BR>　　密码复杂性要求 启用 <BR>　　密码长度最小值 6位 <BR>　　强制密码历史 5次 <BR>　　最长存留期 30天 <BR>　　在账户策略-&gt;账户锁定策略中设定： <BR>　　账户锁定 3次错误登录 <BR>　　锁定时间 20分钟 <BR>　　复位锁定计数 20分钟 <BR>　　同样，Terminal Service的安全日志默认也是不开的，我们可以在Terminal Service Configration（远程服务配置）-权限-高级中配置安全审核，一般来说只要记录登录、注销事件就可以了。 <BR>　　5.目录和文件权限：为了控制好服务器上用户的权限，同时也为了预防以后可能的入侵和溢出，我们还必须非常小心地设置目录和文件的访问权限，NT的访问权限分为：读取、写入、读取及执行、修改、列目录、完全控制。在默认的情况下，大多数的文件夹对所有用户（Everyone这个组）是完全敞开的（Full Control），你需要根据应用的需要进行权限重设。<BR>　　在进行权限控制时，请记住以下几个原则： <BR>　　1&gt;限是累计的：如果一个用户同时属于两个组，那么他就有了这两个组所允许的所有权限；<BR>　　2&gt;拒绝的权限要比允许的权限高（拒绝策略会先执行）如果一个用户属于一个被拒绝访问某个资源的组，那么不管其他的权限设置给他开放了多少权限，他也一定不能访问这个资源。所以请非常小心地使用拒绝，任何一个不当的拒绝都有可能造成系统无法正常运行； <BR>　　3&gt;文件权限比文件夹权限高； <BR>　　4&gt;利用用户组来进行权限控制是一个成熟的系统管理员必须具有的优良习惯之一；<BR>　　5&gt;仅给用户真正需要的权限，权限的最小化原则是安全的重要保障； <BR>　　6.只安装一种操作系统；说明：安装两种以上操作系统，会给黑客以可乘之机，利用攻击使系统重启到另外一个没有安全设置的操作系统（或者他熟悉的操作系统），进而进行破坏。 <BR>　　7.安装成独立的域控制器（Stand Alone）,选择工作组成员，不选择域；<BR>　　说明：主域控制器（PDC）是局域网中队多台联网机器管理的一种方式，用于网站服务器包含着安全隐患，使黑客有可能利用域方式的漏洞攻击站点服务器。 <BR>　　8.将操作系统文件所在分区与WEB数据包括其他应用程序所在的分区分开，并在安装时最好不要使用系统默认的目录，如将\WINNT改为其他目录；<BR>　　说明：黑客有可能通过WEB站点的漏洞得到操作系统对操作系统某些程序的执行权限，从而造成更大的破坏。同时如果采用IIS的话你应该在其设置中删除掉所有的无用的映射，同时不要安装索引服务，远程站点管理与服务器扩展最好也不要要，然后删掉默认路径下的www，整个删，不要手软，然后再硬盘的另一个硬盘建立存放你网站的文件夹，同时一定记得打开w3c日志纪录，切记（不过本人建议采用apache 1.3.24） <BR>　　系统安装过程中一定本着最小服务原则，无用的服务一概不选择，达到系统的最小安装，多一个服务，多一份风险，呵呵，所以无用组件千万不要安装！ <BR>　　9.关于补丁：在NT下，如果安装了补丁程序，以后如果要从NT光盘上安装新的Windows程序,都要重新安装一次补丁程序， 2000下不需要这样做。<BR>　　说明：<BR>　　（1） 最新的补丁程序，表示系统以前有重大漏洞，非补不可了，对于局域网内服务器可以不是最新的，但站点必须安装最新补丁，否则黑客可能会利用低版本补丁的漏洞对系统造成威胁。这是一部分管理员较易忽视的一点；<BR>　　（2） 安装NT的SP5、SP6有一个潜在威胁，就是一旦系统崩溃重装NT时，系统将不会认NTFS分区，原因是微软在这两个补丁中对NTFS做了改进。只能通过Windows 2000安装过程中认NTFS，这样会造成很多麻烦，建议同时做好数据备份工作。<BR>　　（3） 安装Service Pack前应先在测试机器上安装一次，以防因为例外原因导致机器死机，同时做好数据备份。<BR>　　尽量不安装与WEB站点服务无关的软件；<BR>　　说明：其他应用软件有可能存在黑客熟知的安全漏洞。 <BR>　　10.解除NetBios与TCP/IP协议的绑定：说明：NetBois在局域网内是不可缺少的功能，在网站服务器上却成了黑客扫描工具的首选目标。方法：NT：控制面版——网络——绑定——NetBios接口——禁用 2000：控制面版——网络和拨号连接——本地网络——属性——TCP/IP——属性——高级——WINS——禁用TCP/IP上的NETBIOS <BR>　　11.删除所有的网络共享资源，在网络连接的设置中删除文件和打印共享，只留下TCP/IP协议。<BR>　　说明：NT与2000在默认情况下有不少网络共享资源，在局域网内对网络管理和网络通讯有用，在网站服务器上同样是一个特大的安全隐患。（卸载“Microsoft 网络的文件和打印机共享”。当查看“网络和拨号连接”中的任何连接属性时，将显示该选项。单击“卸载”按钮删除该组件；清除“Microsoft 网络的文件和打印机共享”复选框将不起作用。）<BR>　　方法：<BR>　　(1)NT:管理工具——服务器管理器——共享目录——停止共享；<BR>　　2000:控制面版——管理工具——计算及管理——共享文件夹———停止共享。<BR>　　但上述两种方法太麻烦，服务器每重启一次，管理员就必须停止一次。<BR>　　（2）修改注册表：<BR><SPAN>&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>运行Regedit，然后修改注册表在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters下增加一个键 <BR>　　<BR>　　Name: AutoShareServer<BR>　　Type: REG_DWORD <BR>　　value: 0 <BR>　　然后重新启动您的服务器，磁盘分区共享去掉，但IPC共享仍存在，需每次重启后手工删除。 <BR>　　12.改NTFS的安全权限；说明：NTFS下所有文件默认情况下对所有人（EveryOne）为完全控制权限，这使黑客有可能使用一般用户身份对文件做增加、删除、执行等操作，建议对一般用户只给予读取权限，而只给管理员和System以完全控制权限，但这样做有可能使某些正常的脚本程序不能执行，或者某些需要写的操作不能完成，这时需要对这些文件所在的文件夹权限进行更改，建议在做更改前先在测试机器上作测试，然后慎重更改。 <BR>　　13.加强数据备份；说明：这一点非常重要，站点的核心是数据，数据一旦遭到破坏后果不堪设想，而这往往是黑客们真正关心的东西；遗憾的是，不少网管在这一点上作的并不好，不是备份不完全，就是备份不及时。数据备份需要仔细计划，制定出一个策略并作了测试以后才实施，而且随着网站的更新，备份计划也需要不断地调整。 <BR>　　14.只保留TCP/IP协议，删除NETBEUI、IPX/SPX协议；说明：网站需要的通讯协议只有TCP/IP，而NETBEUI是一个只能用于局域网的协议，IPX/SPX是面临淘汰的协议，放在网站上没有任何用处，反而会被某些黑客工具利用。</SPAN></DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=396" /> 
	  <id>http://www.openx.cn/default.asp?id=396</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Web2.0创业：程序员的创业？]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-12-25T09:14:33+08:00</updated>
	  <published>2006-12-25T09:14:33+08:00</published>
		  <summary type="html"><![CDATA[<FONT size=2><EM><FONT size=3>“vini,vidi,vici? (我来了，我看到了，我征服了) ”<BR></FONT></EM>—— 凯撒大帝（公元前44年被刺死）</FONT> 
<P>　　上面这句话应当很符合当下正在激情澎湃中的创业团队的心境。今天我知道，说这句话的人当年何等意气风发，最后却并没有好死。似乎大多数打着Web2.0旗号的创业团队都是技术人员组成，我也是技术出身，所以觉得特别需要讨论一下由技术人员为主的创业团队的问题。</P>
<P>　　<STRONG>A 无知者无畏，但可悲</STRONG></P>
<P>　　对于一个技术团队，典型的启动场景是这样：看到某个很火的网站，然后几个人一看就知道所有的技术应当如何来做（当然我们知道1万用户和1千万用户的系统作同样的事情的方式完全不同），于是就写了几个页面，觉得“我们也可以做！”。再然后，喝酒，上路……</P>
<P>　　哥几个且慢，听我说一句。第一个问题就是：你运作（不是编码）过网站么？你知道需要哪些人、哪些资源才可以运作一个网站么？（如果你回答只需要找几个编辑云云，就无望了）这些事情你都没有做过，也没很好的去打听去学习去思考，就确定你可以搞定？13亿人有这雄心世界上早就只有一个国家了！</P>
<P>　　如果还不知道你会面对什么，你需要解决什么问题，就去弄明白，成败不在这几天几周功夫。所有过来人都会告诉你，运作网站、创业需要如此如此多的资源以及考虑，技术只是小小的一块。那么在你上马之时，除了技术你还有什么？缺乏大部分的东西。</P>
<P>　　<STRONG>B 切不可技术主导</STRONG></P>
<P>　　很自然，程序员来做必然技术主导。即使团队中有其他人，他们和他们的意见也会被边缘化（后面说这个问题）。如果我们要解决的问题是一个有确定需求的东西，目标只是技术上实现此系统，则这种方式绝无问题，甚至很专业。然而我们的目标是要设计（需求是不确定的并且会变化）一个东西，并且要运作他（不是运行它，非技术概念），就必须换一种思路和角度来考虑问题。特别是领导人，必须超脱于技术思维之上，否则最后的结果必然是“程序员们认为最好的东西”。</P>
<P>　　<STRONG>C 思路的困顿，细节的羁绊</STRONG></P>
<P>　　我所常说的至上的细节主义，乃是对于设计的细节，而不是实现的细节，用任何方式实现所需要的细节效果即可，除了程序员不会有人关心实现细节。</P>
<P>　　程序员可能就某个具体细节和实现方式认真地讨论半天并且重构你的系统，但是对于用户来说，这种修正对于使用没有任何值得一提的改善，价值几乎为0。所以不值得做这件事情，不过程序员不能接受不完美的解决方案，所以还是花了许多时间做一件没有意义的事情。</P>
<P>　　程序员会拘泥于很多细节，本身不是坏事，但是当和用户关注的细节所错开时就麻烦了：你在做无用的改进，用户仍然在抱怨。当整个团队的思考重心都在技术上时，决策的偏向性会很明显，而且自己是无法察觉的。只有市场才会最终告诉你错了。</P>
<P>　　<STRONG>D 无为才可无不为</STRONG></P>
<P>　　这个命题大了，本来与程序员无关，但是在程序员团队中特别严重。试问，倘若你是这个程序员团队的老大，你会去code么？你说会的，硅谷的所有酷公司的CEO都是亲自编码的，至少在起步阶段。</P>
<P>　　第一，老大亲自编码并非成功必要条件，更不是充分条件。有点花絮性质；第二，那帮子家伙可是在做完了老大该做的事情后才去code的，要不然混不到今天。</P>
<P>　　试问老大整天在code，谁去思考战略问题？谁去联络人脉和资源？这里无为的意思在于两层：第一层，你必须腾出时间和精力，才可以去思考，才可以去发现被忽视的问题，而这个不是非常重要，是“相当”的重要；第二层，你作为老大，去作具体的事情，作的不好没人怪你，做的决定没人提出异议……你有没有觉得味儿不对？</P>
<P>　　那么，如何由技术人员成长为合格的老大？我不知道（不然可没功夫在这里扯淡，自嘲），只能给出几条参考的原则：</P>
<P>　　<STRONG>1） 你不可以是技术领头人</STRONG></P>
<P>　　程序员通常会由资历最老、技术最好的人来当领导人，但是好像武林门派的掌门人未必是武功最高的吧，那种最牛鼻的，一般都隐藏在幕后，他们不适合作老大。</P>
<P>　　我还不能透彻理解无为，但是值得大家去思考，因为我们都是中国人，这种文化硅谷是没有的。</P>
<P>　　<STRONG>2） 提出要求和问题、引导解决，结论不可以由你给出</STRONG></P>
<P>　　刚才也提到了，你做错了没人可以批评，你说的一般没人反对，但是很多事情，你不能了解所有的信息（因为你不具体负责那块工作）但是你代替那个做事的人作出了具体决定，那么就有错误的可能。让每个人在各自的层面、各自的领域去思考去决定，你来管理所有的人才是正确的。你要做的就是看着整个军团的运作，思考还有什么没有想到的，指导某一块的改进，全都是隐性工作，所以不做也无所谓，所以总是被很多人忽视，所以失败者一定很多。</P>
<P>　　<STRONG>3） 平衡团队中的小团队</STRONG></P>
<P>　　稍微有点见识的，一定会拉几个非技术的人入伙。但是更进一步的，你必须思考他们的定位。第一，老大也许不自觉的还是技术思维，而与他们讲不同的语言；第二，本来老大的亲信就是那群技术员。所以他们是孤立的边缘化的。但是在更高的角度看，技术应当是一小块，最为重要的是策划和运作。</P>
<P>　　祝天下英雄早日功成名就！希望明年Donews英雄大会上多出几个真正的英雄，而且不是那种只能风光几年的小角色。</P>
<P>&nbsp;</P>
<P>转:http://job.csdn.net/n/20060320/88407.html</P>
<P>&nbsp;</P>
<P><FONT color=#ff0000>文章写的不错，本人体会满深的，技术就是要专研进取，设计就是要不断创新。</FONT></P>
<P><FONT color=#ff0000>只有专注才能成就，毕竟人的精力总是有限的。</FONT></P>
<P>&nbsp;</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=395" /> 
	  <id>http://www.openx.cn/default.asp?id=395</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[英国科学权威杂志:上网成瘾 8大病态]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-12-25T08:56:39+08:00</updated>
	  <published>2006-12-25T08:56:39+08:00</published>
		  <summary type="html"><![CDATA[<P><FONT face=Arial>《时代》周刊公布2006年的风云人物是“你”（You），全世界每一人都可以通过互联网，成为主角──主导传媒，影响全世界，但《时代》只是说对了一半，却没有提及经常上网会引发的心瘾和病态。据苹果日报报导，英国科学权威杂志《新科学家》（New Scientist）列出八种由互联网引发的心瘾和病态，如果出现以上“病征”，就代表你“上瘾”已深，该醒醒了！<BR>&nbsp;&nbsp;&nbsp; <BR><STRONG>&nbsp;&nbsp;&nbsp;&nbsp; 自大浏览（Ego Surfing）</STRONG></FONT></P>
<P><FONT face=Arial>&nbsp;&nbsp;&nbsp; 如果你经常在雅虎或Google等搜寻器上输入自己的姓名，按键搜索，就是“自大浏览”。在网上搜寻自己姓名其实没有什么大不了，但经常这样做却是要满足虚荣心，从而衍生出自大或自卑感，则属于心理不健康。<BR>&nbsp;&nbsp;&nbsp; 不少“自大浏览者”发现自己“大名”出现在网上，甚至排列在较前的搜寻结果位置，会沾沾自喜；如果发现同名同姓者，成就或搜寻位置高过自己，心就不是味儿。此类“自大浏览者”全球比比皆是，1997年成立的“自大浏览者”专用网站Ego Surf，每月就有200万人登入。</FONT></P>
<P><FONT face=Arial><STRONG>&nbsp;&nbsp;&nbsp; 博客裸跑（Blog Streaking）<BR></STRONG><BR>&nbsp;&nbsp;&nbsp; 把自己私隐公诸于世，那怕是最羞于齿的东西，在网上也可以公开展示，《新科学家》称这种行为“博客裸跑”。博客中，网客多用日记或散文形式，将生活中的点滴展示在网上，此举原本无伤大雅，但在一些征友网站中，部份“热切”渴望交友的网客，不惜袒胸露乳，公布自己三围数字等隐私。<BR>&nbsp;&nbsp;&nbsp; <BR><STRONG>&nbsp;&nbsp;&nbsp; Google窥探（Google Stalking）<BR></STRONG></FONT></P>
<P><FONT face=Arial>&nbsp;&nbsp;&nbsp; 利用搜寻器Google，查阅一些早已失去联络的故友旧爱，这情况也适用于明星，追星者希望搜寻出偶像们的联络方法，甚至住址，故称之为“Google窥探”。<BR>&nbsp;&nbsp;&nbsp; “Google窥探”出于刺探人家底细的需要，对象可能是同行竞争对手，或者情敌，起初是基于知己知彼的需要，但久而久之，对一些无关痛痒人士也要进行“起底”，反映窥探心理愈来愈强，已到了一发不可收拾地步。<BR>&nbsp;&nbsp;&nbsp; <BR><STRONG>&nbsp;&nbsp;&nbsp; 狂热BlackBerry迷（Crackberry）<BR></STRONG></FONT></P>
<P><FONT face=Arial>&nbsp;&nbsp;&nbsp; 现代人重视资讯和讲求速度，一部BlackBerry在手，不出户可知天下事，但用得多却会上瘾。《新科学家》贴切地形容这些狂热 BlackBerry迷，指他们“即使出席至亲葬礼，也埋首用BlackBerry，不能自拔”，正是BlackBerry上瘾者最佳写照。英国有研究指出，约1/3的BlackBerry用户会出现长期失眠、精神不振和腰酸骨痛，这就是用上瘾的后遗症。<BR>&nbsp;&nbsp;&nbsp; <BR><STRONG>&nbsp;&nbsp;&nbsp; 下载歌曲狂（Cheesepodder）<BR></STRONG></FONT></P>
<P><FONT face=Arial>&nbsp;&nbsp;&nbsp; 指下载歌曲成瘾的人。苹果电脑（Apple）推出数码音乐播放机iPod和音乐下载网站iTunes，让网民从iTunes下载一首歌只需79便士（约港币12元），既方便又省钱，不少人从此下载成瘾。<BR>&nbsp;&nbsp;&nbsp; <BR><STRONG>&nbsp;&nbsp;&nbsp; 偷看他人相片（Photolurking）<BR></STRONG></FONT></P>
<P><FONT face=Arial>&nbsp;&nbsp;&nbsp; 网上素未谋面者数以亿计，很多人在网上有自己的相簿，存放毕业相、结婚相或者旅行相，如果你会打开这些陌生人的相簿，浏览一番，你就拥有偷看相片的心瘾。有人甚至为了一窥别人相簿，不惜花尽心思破解别人的密码。例如Yahoo旗下网站Flickr，就是专门用来搜寻陌生人相片，部份网民更废寝忘餐搜寻。<BR>&nbsp;&nbsp;&nbsp; <BR><STRONG>&nbsp;&nbsp;&nbsp; 维基百科狂（Wikipediholism）<BR></STRONG></FONT></P>
<P><FONT face=Arial>&nbsp;&nbsp;&nbsp; 指那些过度沉迷编写维基百科的人。《新科学家》指出，加拿大科学仪器销售员德克林（BryanDerksen）每日花两小时编写维基百科，至今已写了7万多篇文章，他认为这是建立人类知识宝库的浩大工程，充满意义。<BR>&nbsp;&nbsp;&nbsp; <BR><STRONG>&nbsp;&nbsp;&nbsp; 上网自诊狂（Cyberchondriac）<BR></STRONG></FONT></P>
<P><FONT face=Arial>&nbsp;&nbsp;&nbsp; 泛指在网上寻找健康和病痛的参考资料。网上资讯浩瀚如海，互相贯连，无限引申，例如查阅头痛和出红疹的根源，互联网可以连结到癌症，所以尽信网上资讯而不求医的人士，可能会被一些假资讯误导，导致惶恐终日，小病都会变大病。如果网民太过信任互联网，根据网上资料开出药方，自诊自疗，还可能出现误诊，导致治疗失当，病情恶化。</FONT></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=394" /> 
	  <id>http://www.openx.cn/default.asp?id=394</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[生病了~]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-12-05T08:49:22+08:00</updated>
	  <published>2006-12-05T08:49:22+08:00</published>
		  <summary type="html"><![CDATA[<P>周天晚上发烧了呼呼,昨天一大早就去看病,窝在家一整天.</P>
<P>现在好多了,但是还是要吃药,头还有点晕晕的~呼呼</P>
<P>&nbsp;</P>
<P>要加强锻炼,身体是革命的本钱哇~</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=393" /> 
	  <id>http://www.openx.cn/default.asp?id=393</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[关于Web2.0的十八句名言]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-12-01T08:51:50+08:00</updated>
	  <published>2006-12-01T08:51:50+08:00</published>
		  <summary type="html"><![CDATA[<P>“创建一个成功的企业的最好办法就是帮助别人赚钱。”Topix.net的Rich Skrenta解释AOL的政策时说到 </P>
<P>“我上许多的新闻网站，因为我不相信其中任何一个。”17岁的Sean这么解释他如何阅读在线新闻的。 </P>
<P>“当你上了大学以后，Myspace就算不上什么了”高中毕业生18岁的Sasha说。 </P>
<P>“在你发展的过程中建造，学习和犯错–你将会在做事情的过程中学到更多，而不是在你做这件事情之前。”37Signals的Jason Fried，他拥护迭代开发模式(iterative development)。 </P>
<P>“在5到10年内，媒体的价值将存在于那些培养用户的公司，而不是那些控制内容的公司。”Kleiner Perkins的前任合伙人Vinod Khosla说。 </P>
<P>“对我而言，透明度是一件具有竞争性的武器。”Sun微系统公司的CEO Jonathan Schwartz这么解释自己为什么写Blog。 </P>
<P>“Ebay有1.5亿的用户，理想的来说，就是1.5亿个人学会了如何相信陌生人。”Ebay的创始人Pierre Omidyar认为商业能为积极的社会变革带来动力。 </P>
<P>“我最喜欢Google，因为他们最干净。其他的网站则试图将你的注意力带走。去那些网站不会有任何收获。”18岁的Sasha这么解释为什么适应用户习惯比起强迫他们去适应你要来的聪明的多。 </P>
<P>“我们的成功与我们的总裁们的‘好主意’一点关系没有。”Google创始人Sergey Brin更喜欢群体的智慧。 </P>
<P>“我们96%的时间里不知道自己在做什么。”Flickr的创始人Stewart Butterfield认为剩下的4%足以让许多人非常快乐了。 </P>
<P>“雇用律师起诉对于那些普通公司来说，比起自己创意要简单的多”前任FCC的主席Michael Powell解释为什么那些提供内容服务的公司起诉他们的顾客。 </P>
<P>“我告诉我的工程师，不管你有多么聪明，在公司外有着更多比你聪明的人，所以我们需要提供给他们工具，让他们创新。”Omidyar也喜欢群体的智慧。 </P>
<P>“传统上，人们认为越多越好。多的也许能行，但是它将会是痛苦、昂贵和冰冷的。看看那些一条路走到黑的人，无法与别人竞争。”Fried创造了几个新词。 </P>
<P>证明这个世界与原始的数码时代完全不同：假设你要买一个CD机，你要到哪去买？17岁的Sean困惑的说：“CD机是什么？” </P>
<P>“你给一个公司越多的钱，他们越不可能成功。”Khosla说。 </P>
<P>“一般的消费者并不知道浏览器、互联网以及搜索框之间的区别。”Mozilla基金会的Mitchell Baker提供了这样的观点。 </P>
<P>“我们认为任何来参加演唱会的人都是平等的，他们都参与到音乐的创作之中。”Grateful Dead乐队的Mickey Hart说道。 </P>
<P>“我们成功第一的要素是运气。我们跟随着自己内心而选择了搜索，因为它既有用也有趣。”Brin这么解释如何创立Google。 <BR></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=392" /> 
	  <id>http://www.openx.cn/default.asp?id=392</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Delphi处理SQL Server多媒体数据]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-11-29T17:00:05+08:00</updated>
	  <published>2006-11-29T17:00:05+08:00</published>
		  <summary type="html"><![CDATA[<STRONG>一、选择数据库<BR><BR></STRONG>　　1．问题<BR><BR>　　常用的桌面型数据库，如Access、Visual FoxPro等，使用比较简单，也可以管理多媒体信息。但由于数据库引擎不够强大，在管理少量多媒体数据时尚能正常运行，当数据量增大到一定程度后，数据库的反应就会变得异常缓慢，其性能也大幅下降。在达到某个临界点时，甚至还会出现数据库处理能力和待处理数据量的严重失衡，而导致假死状况的出现。笔者有过这样的经验，用Visual Fox Pro来管理1万名学生的照片档案和学籍信息，这时要进行查询必须经过长时间等待，最后不得不放弃。<BR><BR>　　2．治“标”<BR><BR>　　用一些技巧可以加快系统的运行，比如“化整为零”法。即将超大数据分散到众多数据表中，虽然可以有效地提高数据库的运行速度，但层次过多使查询、统计等变得十分不便，而且编程的复杂度和工作量也会随之大幅增加。<BR><BR>　　另外一个常用方法是将多媒体数据保存为独立的文件，在数据库中只存储这些文件的路径和文件名，从而避免了将海量数据直接存入数据库。这种为数据库减负瘦身的方法可用于任何数据库，通用性好，而且对性能的提升也是可观的，是一种已经得到广泛应用的治“标”方法。然而这种方法也有明显的缺点：结构复杂、不便维护、安全性差，更体现不出数据库的优点。还是以学籍管理为例，采用这种方法管理1万甚至更多学生的照片数据，程序非常复杂，维护也十分困难，依然不是治“本”之策。<BR><BR>　　3．治“本”<BR><BR>　　其实，要处理海量的多媒体数据，再先进的桌面型数据库都会捉襟见肘，笔者最后采用了企业级数据库。以SQL Server、Sybase、Oracle等为代表的企业级数据库具有更强大的性能、更完善的数据管理、更可靠的安全特性和更出色的网络功能，能够胜任非常复杂和庞大的数据管理任务，同时它们还提供了丰富的数据类型，以及针对多媒体管理特别优化的引擎。考虑综合性能、价格等各方面的因素，我们最终选择SQL Server 2000标准版作为系统的后台数据库。<BR><BR><BR><BR><STRONG>二、怎样处理多媒体数据</STRONG><BR><BR>　　1．多媒体数据的存储<BR><BR>　　多媒体信息包括图像、声音和视频等，它们都是以二进制数据集合的形式存在的，在本系统中处理的对象是图像。SQL Server提供了Image数据类型来存储可变长度二进制数据（大小范围为0~2GB）。但Image字段并不能将多媒体数据直接装入，必须经过一些中间步骤才能将数据存进去。下面以图像数据的存储为例，给大家介绍怎样在Delphi中实现这些中间步骤。<BR><BR>　　Delphi中的TStream数据类型以流的形式对字符或非字符数据进行存储，就像在内存中开辟了一个大小可变的临时缓存区。它不仅能方便地对外部文件进行读写，而且还可以将流中的全部数据直接转入数据库，所以用它作桥梁来完成数据存入工作是非常合适的。<BR><BR>　　下面的SavetoImage函数的功能是将TStream数据存入数据表的Image字段中。<BR><BR>
<TABLE width="90%" align=center bgColor=#e6e4dd border=1>
<TBODY>
<TR>
<TD>function SavetoImage(const Stream:TStream;const AField:TField):boolean;<BR>var<BR>FieldStr:string;<BR>PFieldStr:PChar;<BR>begin<BR>Result:=false;<BR>if (Assigned(AField)) and (Assigned(Stream)) then<BR>begin<BR>try<BR>Stream.Seek(0,0);<BR>SetLength(FieldStr,Stream.Size);<BR>PFieldStr:=PChar(FieldStr);<BR>Stream.Read(PFieldStr^,Stream.Size);<BR>AField.Value:=FieldStr;<BR>Result:=true;<BR>except<BR>end;<BR>end;<BR>end;</TD></TR></TBODY></TABLE><BR>　　下面是调用SavetoImage函数完成图像数据存储的程序片段。<BR><BR>
<TABLE width="90%" align=center bgColor=#e6e4dd border=1>
<TBODY>
<TR>
<TD>Var<BR>FS:TFileStream;<BR>begin<BR>FS:=TFileStream.Create('C:\Car001.jpg',fmOpenRead);<BR>SavetoImage(FS,Adodataset1.FieldBy<BR>Name('st_img'));<BR>FS.Free;<BR>end;</TD></TR></TBODY></TABLE><BR>　　其中，Adodataset1是与数据库进行连接的ADO数据集控件，st_img为Image字段。<BR><BR>　　2．多媒体数据的转移<BR><BR>　　利用SQL Server所带的BCP实用工具，可以很方便地将数据库部分或全部数据复制出来，包括二进制数据。对复制出的多媒体数据可以通过网络或移动存储设备将它们转移到远端的监控电脑上，再利用BCP将它们复制到监控数据库中，以便对多媒体数据进行回放或做其它处理。下面是简化了的将数据从数据库复制到外部文件和从外部文件复制入数据库的程序片段。<BR><BR>
<TABLE width="90%" align=center bgColor=#e6e4dd border=1>
<TBODY>
<TR>
<TD>var<BR>s1:string;<BR>begin<BR>s1:='bcp "select * from st2002..st2002_sf where st_flag=1" queryout c:\Media_data.dat -N -P -S sunnynt\hy2002';<BR>winexec(PChar(s1),sw_show);<BR>end;</TD></TR></TBODY></TABLE><BR>　　其中“select * from st2002..st2002_sf where st_flag=1”表示从st2002数据库的st2002_sf表中提取数据，“c:\Media_data.dat”为输出数据文件，参数queryout表示从查询中复制数据到外部文件，-N表示进行大容量数据复制操作，-P表示使用默认密码，-S提定进行数据复制操作的数据库服务器或实例。<BR><BR>
<TABLE width="90%" align=center bgColor=#e6e4dd border=1>
<TBODY>
<TR>
<TD>var<BR>s1:string;<BR>begin<BR>s1:= 'bcp ST2002..ST2002_SF in c:\Media_data.dat -n -E -P -S sunnynt \hy2002';<BR>winexec(PChar(s1),sw_show);<BR>end;</TD></TR></TBODY></TABLE><BR>　　其中参数in表示将数据从外部文件复制到数据表中。<BR><BR>　　3．多媒体数据的回放<BR><BR>　　同存储的方法类似，多媒体数据的回放也要借助TStream数据类型作桥梁，而且它基本上是存储的逆过程。<BR><BR>　　LoadfromImage函数的功能是将数据表的Image字段数据装入TStream中。<BR><BR>
<TABLE width="90%" align=center bgColor=#e6e4dd border=1>
<TBODY>
<TR>
<TD>function LoadfromImage(const AField:TField;const Stream:TStream):boolean;<BR>var<BR>ResultStr:string;<BR>PResultStr:PChar;<BR>begin<BR>Result:=false;<BR>if (Assigned(AField)) and (Assigned(Stream)) then<BR>begin<BR>try<BR>ResultStr:=AField.Value;<BR>PResultStr:=PChar(ResultStr);<BR>Stream.Write(PResultStr^,length(Result<BR>Str));<BR>Stream.Seek(0,0);<BR>Result:=True;<BR>except<BR>end;<BR>end;<BR>end;</TD></TR></TBODY></TABLE><BR>　　下面是调用LoadfromImage函数将数据表Image字段中的图像数据转出到外部文件中并利用图像显示控件回放图像的程序片段。<BR><BR>
<TABLE width="90%" align=center bgColor=#e6e4dd border=1>
<TBODY>
<TR>
<TD>var<BR>FS:TFileStream;<BR>begin<BR>FS:=TFileStream.Create('c:\Car001.jpg',fmCreate);<BR>LoadfromImage(adodataset1.fieldby<BR>name('st_img'),FS);<BR>FS.Free;<BR>image1.picture.LoadFromFile('c:\Car001.jpg');<BR>end;</TD></TR></TBODY></TABLE><BR>　　<STRONG>三、小结</STRONG><BR><BR>　　其它多媒体数据类型如声音、视频等的转出过程与图像的转出完全相同，只是回放部分应针对不同媒体类型采用不同的媒体播放控件。<BR><BR>　　上面所述的原型程序在Delphi 5/6/7+SQL Server 2000标准版中调试通过，经过适当的扩充和修改后，这些程序在笔者开发的高速公路收费系统中得到了验证。同样，这些程序也可使用在如学籍管理、档案管理、人事管理、商品交易等涉及到多媒体数据的应用系统中。<BR><BR>　　如今已经是数码时代，DC、DV、MP3等数码设备正逐渐深入到我们生活和工作中，它们产生的图像、视频、声音等多媒体信息呈爆炸式增长，如何有效管理这些多媒体信息成为摆在我们面前的课题。本文简单讨论了利用SQL Server数据库对多媒体信息进行管理的几个基本问题，其原理同样适合Sybase、Oracle等数据库和Powerbuilder、VB等前端开发工具。]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=391" /> 
	  <id>http://www.openx.cn/default.asp?id=391</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[消息队列（Message Queue）简介及其使用]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-11-28T17:33:23+08:00</updated>
	  <published>2006-11-28T17:33:23+08:00</published>
		  <summary type="html"><![CDATA[<DIV align=center><STRONG>消息队列（</STRONG><STRONG>Message Queue</STRONG><STRONG>）简介及其使用</STRONG><STRONG></STRONG></DIV>
<DIV></DIV>
<DIV>&nbsp;</DIV>
<DIV>利用 MSMQ（Microsoft Message Queue），应用程序开发人员可以通过发送和接收消息方便地与应用程序进行快速可靠的通信。消息处理为您提供了有保障的消息传递和执行许多业务处理的可靠的防故障方法。</DIV>
<DIV>MSMQ与XML Web Services和.Net Remoting一样，是一种分布式开发技术。但是在使用XML Web Services或.Net Remoting组件时，Client端需要和Server端实时交换信息，Server需要保持联机。MSMQ则可以在Server离线的情况下工作，将Message临时保存在Client端的消息队列中，以后联机时再发送到Server端处理。</DIV>
<DIV>显然，MSMQ不适合于Client需要Server端及时响应的这种情况，MSMQ以异步的方式和Server端交互，不用担心等待Server端的长时间处理过程。</DIV>
<DIV>&nbsp;</DIV>
<DIV>虽然XML Web Services和.Net Remoting都提供了[OneWay]属性来处理异步调用，用来解决Server端长方法调用长时间阻碍Client端。但是不能解决大量Client负载的问题，此时Server接受的请求快于处理请求。</DIV>
<DIV>一般情况下，[OneWay]属性不用于专门的消息服务中。</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>1. </STRONG><STRONG>基本术语和概念（</STRONG><STRONG>Basic terms and concepts</STRONG><STRONG>）</STRONG><STRONG></STRONG></DIV>
<DIV>“消息”是在两台计算机间传送的数据单位。消息可以非常简单，例如只包含文本字符串；也可以更复杂，可能包含嵌入对象。</DIV>
<DIV>&nbsp;</DIV>
<DIV>消息被发送到队列中。“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递；如果发送消息时接收者不可用，消息队列会保留消息，直到可以成功地传递它。</DIV>
<DIV>&nbsp;</DIV>
<DIV>“消息队列”是 Microsoft 的消息处理技术，它在任何安装了 Microsoft Windows 的计算机组合中，为任何应用程序提供消息处理和消息队列功能，无论这些计算机是否在同一个网络上或者是否同时联机。</DIV>
<DIV>&nbsp;</DIV>
<DIV>“消息队列网络”是能够相互间来回发送消息的任何一组计算机。网络中的不同计算机在确保消息顺利处理的过程中扮演不同的角色。它们中有些提供路由信息以确定如何发送消息，有些保存整个网络的重要信息，而有些只是发送和接收消息。</DIV>
<DIV>&nbsp;</DIV>
<DIV>“消息队列”安装期间，管理员确定哪些服务器可以互相通信，并设置特定服务器的特殊角色。构成此“消息队列”网络的计算机称为“站点”，它们之间通过“站点链接”相互连接。每个站点链接都有一个关联的“开销”，它由管理员确定，指示了经过此站点链接传递消息的频率。</DIV>
<DIV>&nbsp;</DIV>
<DIV>“消息队列”管理员还在网络中设置一台或多台作为“路由服务器”的计算机。路由服务器查看各站点链接的开销，确定经过多个站点传递消息的最快和最有效的方法，以此决定如何传递消息。</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>2. </STRONG><STRONG>队列类型（</STRONG><STRONG>Queue Type</STRONG><STRONG>）</STRONG><STRONG></STRONG></DIV>
<DIV>有两种主要的队列类型：由您或网络中的其他用户创建的队列和系统队列。</DIV>
<DIV><STRONG>用户创建的队列可能是以下任何一种队列：</STRONG><STRONG> </STRONG></DIV>
<DIV>“公共队列”在整个“消息队列”网络中复制，并且有可能由网络连接的所有站点访问。 </DIV>
<DIV>“专用队列”不在整个网络中发布。相反，它们仅在所驻留的本地计算机上可用。专用队列只能由知道队列的完整路径名或标签的应用程序访问。 </DIV>
<DIV>“管理队列”包含确认在给定“消息队列”网络中发送的消息回执的消息。指定希望 MessageQueue 组件使用的管理队列（如果有的话）。 </DIV>
<DIV>“响应队列”包含目标应用程序接收到消息时返回给发送应用程序的响应消息。指定希望 MessageQueue 组件使用的响应队列（如果有的话）。 </DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>系统生成的队列一般分为以下几类：</STRONG><STRONG> </STRONG></DIV>
<DIV>“日记队列”可选地存储发送消息的副本和从队列中移除的消息副本。每个“消息队列”客户端上的单个日记队列存储从该计算机发送的消息副本。在服务器上为每个队列创建了一个单独的日记队列。此日记跟踪从该队列中移除的消息。 </DIV>
<DIV>“死信队列”存储无法传递或已过期的消息的副本。如果过期或无法传递的消息是事务性消息，则被存储在一种特殊的死信队列中，称为“事务性死信队列”。死信存储在过期消息所在的计算机上。有关超时期限和过期消息的更多信息，请参见默认消息属性。 </DIV>
<DIV>“报告队列”包含指示消息到达目标所经过的路由的消息，还可以包含测试消息。每台计算机上只能有一个报告队列。 </DIV>
<DIV>“专用系统队列”是一系列存储系统执行消息处理操作所需的管理和通知消息的专用队列。 </DIV>
<DIV>在应用程序中进行的大多数工作都涉及访问公共队列及其消息。但是，根据应用程序的日记记录、确认和其他特殊处理需要，在日常操作中很可能要使用几种不同的系统队列。</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>3. </STRONG><STRONG>同步和异步通信（</STRONG><STRONG>Synchronous VS. Asynchronous Communication</STRONG><STRONG>）</STRONG><STRONG></STRONG></DIV>
<DIV>队列通信天生就是异步的，因为将消息发送到队列和从队列中接收消息是在不同的进程中完成的。另外，可以异步执行接收操作，因为要接收消息的人可以对任何给定的队列调用 BeginReceive 方法，然后立即继续其他任务而不用等待答复。这与人们所了解的“同步通信”截然不同。</DIV>
<DIV>&nbsp;</DIV>
<DIV>在同步通信中，请求的发送方在执行其他任务前，必须等待来自预定接收方的响应。发送方等待的时间完全取决于接收方处理请求和发送响应所用的时间。</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>4. </STRONG><STRONG>同消息队列交互（</STRONG><STRONG>Interacting with Message Queues</STRONG><STRONG>）</STRONG><STRONG></STRONG></DIV>
<DIV>消息处理和消息为基于服务器的应用程序组件之间的进程间通信提供了强大灵活的机制。同组件间的直接调用相比，它们具有若干优点，其中包括： </DIV>
<UL type=disc>
<LI>稳定性 — 组件失败对消息的影响程度远远小于组件间的直接调用，因为消息存储在队列中并一直留在那里，直到被适当地处理。消息处理同事务处理相似，因为消息处理是有保证的。 
<LI>消息优先级 — 更紧急或更重要的消息可在相对不重要的消息之前接收，因此可以为关键的应用程序保证足够的响应时间。 
<LI>脱机能力 — 发送消息时，它们可被发送到临时队列中并一直留在那里，直到被成功地传递。当因任何原因对所需队列的访问不可用时，用户可以继续执行操作。同时，其他操作可以继续进行，如同消息已经得到了处理一样，这是因为网络连接恢复时消息传递是有保证的。 
<LI>事务性消息处理 — 将多个相关消息耦合为单个事务，确保消息按顺序传递、只传递一次并且可以从它们的目标队列中被成功地检索。如果出现任何错误，将取消整个事务。 
<LI>安全性 — MessageQueue 组件基于的消息队列技术使用 Windows 安全来保护访问控制，提供审核，并对组件发送和接收的消息进行加密和验证。 </LI></UL>
<DIV>&nbsp;</DIV>
<DIV><STRONG>5. </STRONG><STRONG>在</STRONG><STRONG>.Net</STRONG><STRONG>环境下编写简单的</STRONG><STRONG>Message Queue</STRONG><STRONG>程序</STRONG><STRONG></STRONG></DIV>
<DIV>（1）先安装Message Queuing Services</DIV>
<DIV>通过Control Panel，“Add/Remove Programs” – “Add/Remove Windows Components”步骤安装MSMQ。</DIV>
<DIV>MSMQ可以安装为工作组模式或域模式。如果安装程序没有找到一台运行提供目录服务的消息队列的服务器，则只可以安装为工作组模式，此计算机上的“消息队列”只支持创建专用队列和创建与其他运行“消息队列”的计算机的直接连接。</DIV>
<DIV>&nbsp;</DIV>
<DIV>（2）配置MSMQ</DIV>
<DIV>打开Computer Management – Message Queuing，在Private Queues下创建MSMQDemo队列</DIV>
<DIV>&nbsp;</DIV>
<DIV>（3）编写代码－简单演示MSMQ对象</DIV>
<DIV>MessageQueue 类是“消息队列”周围的包装。MessageQueue 类提供对“消息队列”队列的引用。可以在 MessageQueue 构造函数中指定一个连接到现有资源的路径，或者可在服务器上创建新队列。在调用 Send、Peek 或 Receive 之前，必须将 MessageQueue 类的新实例与某个现有队列关联。</DIV>
<DIV>&nbsp;</DIV>
<DIV>MessageQueue 支持两种类型的消息检索：同步和异步。同步的 Peek 和 Receive 方法使进程线程用指定的间隔时间等待新消息到达队列。异步的 BeginPeek 和 BeginReceive 方法允许主应用程序任务在消息到达队列之前，在单独的线程中继续执行。这些方法通过使用回调对象和状态对象进行工作，以便在线程之间进行信息通讯。</DIV>
<DIV>// Send Message</DIV>
<DIV>private void btnSendMessage_Click(object sender, System.EventArgs e)</DIV>
<DIV>{</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Open queue</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Messaging.MessageQueue queue = new System.Messaging.MessageQueue(".\\Private$\\MSMQDemo");</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Create message</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Messaging.Message message = new System.Messaging.Message();</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message.Body = txtMessage.Text.Trim();</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] {typeof(string)});</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Put message into queue</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; queue.Send(message);</DIV>
<DIV>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>// Receive Message</DIV>
<DIV>private void btnReceiveMessage_Click(object sender, System.EventArgs e)</DIV>
<DIV>{</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Open queue</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Messaging.MessageQueue queue = new System.Messaging.MessageQueue(".\\Private$\\MSMQDemo");</DIV>
<DIV> </DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Receive message, 同步的Receive方法阻塞当前执行线程，直到一个message可以得到 </DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Messaging.Message message = queue.Receive(); </DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] {typeof(string)});</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtReceiveMessage.Text = message.Body.ToString();</DIV>
<DIV>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>Demo界面：</DIV>
<DIV><IMG height=268 alt="" src="http://www.cnblogs.com/images/cnblogs_com/rickie/MSMQ_Demo.GIF" width=428 border=0></DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=390" /> 
	  <id>http://www.openx.cn/default.asp?id=390</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[对无聊的广告引用忍无可忍了!]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-11-22T08:44:34+08:00</updated>
	  <published>2006-11-22T08:44:34+08:00</published>
		  <summary type="html"><![CDATA[现在已经把 引用功能屏蔽了!呼呼!!!]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=389" /> 
	  <id>http://www.openx.cn/default.asp?id=389</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[利用TTS实现中文朗读(VB)]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-11-10T10:24:49+08:00</updated>
	  <published>2006-11-10T10:24:49+08:00</published>
		  <summary type="html"><![CDATA[&nbsp; 　一、安装TTS引擎 &nbsp; &nbsp; <BR>&nbsp; 　　TTS引擎所需的Microsoft &nbsp; Text-to-Speech &nbsp; Engine与Microsoft &nbsp; Speech &nbsp; API软件都可到微软的站点去下载，也可以在“金山词霸2000”或“金山词霸.net”的安装光盘上找到（文件名为MSTTS.EXE与SPCHAPI.EXE)。安装了TTS引擎后，在Windows所在目录下会生成一个SPEECH目录，其中有一个Vtxtauto.tlb文件，在编程时我们需要调用它。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　二、在VB中引入Vtxtauto.tlb文件 &nbsp; &nbsp; <BR>&nbsp; 　　进入VB &nbsp; 5.0，执行选单命令“文件/新建工程/标准EXE”并确定，然后执行选单“工程”中的“引用”，单击“浏览”按钮到Windows目录下的SPEECH子目录，打开Vtxtauto.tlb文件，将“VoiceText &nbsp; 1.0 &nbsp; Type &nbsp; Library”添加到引用列表中，选中它并单击确定。将库Vtxtauto引入VB后，我们可以通过选单“视图”中的“对象浏览器”来了解它所封装的类，以及各类成员函数的属性的意义、使用格式等信息。一些主要的方法与属性意义,笔者在下面的源程序中将给出注释，在这里就不详细列出，请参见附图1。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 　　三、设置控件及属性 &nbsp; &nbsp; <BR>&nbsp; 　　在FORM1上添加三个Label控件、一个TextBox控件、一个HScrollBar控件和六个CommandButton控件。窗体及各控件的主要属性设置如下： &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　FORM1：Caption=“英文朗读” &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　LABEL1：Caption=“请输入英文文档” &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　LABEL2：Caption=“朗读速度” &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　LABEL3：Caption=“ &nbsp; ” &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　（LABEL3标签用来显示朗读速度值） &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　TEXT1：Text=“Please &nbsp; input &nbsp; english &nbsp; text”；ToolTiptext=“请输入或粘贴英文文档”； &nbsp; MultiLine=True；ScrollBars=3-Both &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　HSCROLL1:名称=SpeedChange；Min=90；Max=300（Min与Max属性值分别用来限定可调节的语速的最小与最大值） &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　COMMAND1：名称=read；Caption=“朗读” &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　COMMAND2：名称=pause；Caption=“暂停” &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　COMMAND3：名称=stop；Caption=“停止” &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　COMMAND4：名称=prev；Caption=“上一句” &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　COMMAND5：名称=next；Caption=“下一句” &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　COMMAND6：名称=quit；Caption=“退出” &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　四、编写代码 &nbsp; &nbsp; <BR>&nbsp; 　　下面我们就可以一步步地编写代码，具体代码如下： &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　'在窗体装载时调用Register方法注册，括号内的两个参数是字符串 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Private &nbsp; Sub &nbsp; Form_Load() &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Call &nbsp; VTxtAuto.VTxtAuto.Register(Space(8), &nbsp; Space(8)) &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　'因为语速的默认值为170，故水平滚动条的初值也设为170 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　SpeedChange.Value &nbsp; = &nbsp; 170 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　End &nbsp; Sub &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　'设置朗读速度调节代码,当水平滚动条的值Value发生变化时将其赋给控制语速的Speed属性 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Private &nbsp; Sub &nbsp; SpeedChange_Change() &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　VTxtAuto.VTxtAuto.Speed=SpeedChange.Value &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Label3.Caption &nbsp; = &nbsp; SpeedChange.Value &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　End &nbsp; Sub &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　'设置“朗读”按钮代码 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Private &nbsp; Sub &nbsp; read_Click() &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　'如果朗读出错，则转到出错处理标记模块ErrorHandler &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　On &nbsp; Error &nbsp; GoTo &nbsp; ErrorHandler &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　'调用方法Speak进行朗读，第一个参数是要朗读的文本，第二个参数是设置朗读风格 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Call &nbsp; VTxtAuto.VTxtAuto.speak(Trim(Text1.Text), &nbsp; vtxtsp_VERYHIGH &nbsp; + &nbsp; vtxtst_READING) &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Exit &nbsp; Sub &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　ErrorHandler: &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　MsgBox &nbsp; "只能朗读英文文档，不能朗读汉字字符！", &nbsp; , &nbsp; "出错信息" &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　End &nbsp; Sub &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　'设置“暂停”按钮代码 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Private &nbsp; Sub &nbsp; pause_Click() &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　If &nbsp; VTxtAuto.VTxtAuto.IsSpeaking &nbsp; Then &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　'如果属性IsSpeaking为真，则表示正在朗读，调用AudioPause方法暂停朗读 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Call &nbsp; VTxtAuto.VTxtAuto.AudioPause &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　pause.Caption &nbsp; = &nbsp; "恢复" &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Else &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　'如果已经处于暂停状态则调用AudioResume方法恢复朗读 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Call &nbsp; VTxtAuto.VTxtAuto.AudioResume &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　pause.Caption &nbsp; = &nbsp; "暂停" &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　End &nbsp; If &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　End &nbsp; Sub &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　'设置“停止”按钮代码，调用StopSpeaking方法停止当前朗读 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Private &nbsp; Sub &nbsp; stop_Click() &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Call &nbsp; VTxtAuto.VTxtAuto.StopSpeaking &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　End &nbsp; Sub &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　'设置“上一句”按钮代码，调用AudioRewind方法往后跳过一句 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Private &nbsp; Sub &nbsp; prev_Click() &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　 &nbsp; Call &nbsp; VTxtAuto.VTxtAuto.AudioRewind &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　End &nbsp; Sub &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　'设置“下一句”按钮代码，调用AudioFastForward方法向前跳过一句 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Private &nbsp; Sub &nbsp; next_Click() &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　 &nbsp; Call &nbsp; VTxtAuto.VTxtAuto.AudioFastForward &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　End &nbsp; Sub &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　'设置“退出”按钮代码 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Private &nbsp; Sub &nbsp; quit_Click() &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　 &nbsp; Unload &nbsp; Me &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　End &nbsp; Sub &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　本程序在中文Windows &nbsp; 95/98、VB &nbsp; 5.0环境下运行通过。运行时在文本编辑框中输入或粘贴英文文档，然后单击“朗读”按钮就可播放读音，运行界面如图2。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 　　五、程序改进思路 &nbsp; &nbsp; <BR>&nbsp; 　　本文对在VB编程中使用TTS技术只是起个抛砖引玉的作用，熟悉VB编程的电脑爱好者来可以对本程序作一些改进，例如增加对声卡和TTS引擎是否安装的检测、增加从文本文件或数据库中读取文档的功能、增加让用户选择朗读的优先级和发声音量调节等功能。这些功能实现起来较为复杂，感兴趣的读者可进行深入研究。&nbsp;&nbsp;]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=388" /> 
	  <id>http://www.openx.cn/default.asp?id=388</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[简单的破解网页限制功能]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-11-09T17:08:42+08:00</updated>
	  <published>2006-11-09T17:08:42+08:00</published>
		  <summary type="html"><![CDATA[<P>在URL上敲</P>
<P>javascript:alert(document.onselectstart = document.oncontextmenu = document.onmousedown = document.onkeydown = function(){return true;});</P>
<P>这办法我怎么没想到呀哈哈~简单有效.</P>
<P>感谢他的作者也是《征服Ajax：Web2.0开发技术详解》的作者 王沛</P>
<P>他的Blog&nbsp;<A href="http://www.x2blog.cn/supNate/">http://www.x2blog.cn/supNate/</A></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=387" /> 
	  <id>http://www.openx.cn/default.asp?id=387</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[基于短信网关WAP推送的实现]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=7" label="移动开发" /> 
	  <updated>2006-11-08T17:43:59+08:00</updated>
	  <published>2006-11-08T17:43:59+08:00</published>
		  <summary type="html"><![CDATA[WAP PUSH既有信息发送主动、及时的特点，又有可随时随地接收信息的优势，因而具有良好的应用前景。该文简单介绍了WAP PUSH系统框架、推送协议和推送方式，重点介绍了通过短信网关实现WAP推送的实现方法。 <BR>
<DIV style="VISIBILITY: hidden; OVERFLOW: hidden; WIDTH: 1px; COLOR: #f4fbff; HEIGHT: 1px">JAVA手机网[www.cnjm.net]</DIV><BR>　　1 WAP推送技术简介 <BR><BR>　　1.1 什么是WAP推送 <BR><BR>　　WAP推送（PUSH）技术是一种建立在客户服务器上的机制，就是由服务器主动将信息发往客户端的技术。同传统的拉（PULL）技术相比，最主要的区别在于推送（PUSH）技术是由服务器主动向客户机发送信息，而拉（PULL）技术则是由客户机主动请求信息。PUSH技术的优势在于信息的主动性和及时性。 <BR><BR>　　PUSH技术在Internet中没能取得大的成功，原因是多方面的。主要原因在于固定网中计算机等固定设备为用户提供了足够的资源和能力去查找信息所以用户通常将它作为一个浏览信息的窗口，而不是被动的信息接收者。同时固定网用户对于信息准确性的要求远甚于对其及时性的要求，因此PUSH技术未能得到广泛的应用。 <BR><BR>　　而在移动网中，由于存在着网络带宽、移动终端能力以及自费标准高昂等诸多限制，使得用户查找信息受到了一定的限制，如果将重要的信息主动及时地推送到用户的移动设备上无疑会大大方便用户。移动通信的优点是移动设备能够随时随地接收信息因此PUSH技术在移动网中可以大展拳脚，WAP PUSH正是PUSH技术和移动通信两者扬长避短相结合的产物。WAP PUSH是在移动网络中应用的PUSH技术，它结合了一般PUSH技术和移动网络的特点。它的系统框架、使用协议和服务方式与固定网上的PUSH技术有很大不同。 <BR><BR>
<DIV style="VISIBILITY: hidden; OVERFLOW: hidden; WIDTH: 1px; COLOR: #f4fbff; HEIGHT: 1px">JAVA手机网[www.cnjm.net]</DIV>　　1.2 WAP PUSH系统框架 <BR><BR>　　WAP PUSH框架主要包括推送发起者（PI：PUSH Initiator）、推送代理网关(PPG：PUSH ProxyGateway)和推送客户(PC：PUSH Client)三个功能部分。PI位于Internet中，而PC在WAP领域，PI和WAP客户端所使用的协议是不同的，需要在中间建立一个协议转换网关即PPG。PPG通过推送访问协议（PAP：PUSH AccessProtocol）与PI通信，通过推送空间传输协议（PUSH OTA：PUSH over-the-Air）完成向客户推送信息的数据传输任务。 <BR><BR>　　PPG完成推送体系结构中的大部分工作，包括从Internet到移动网的访问接入，以及与其有关的认证、安全、客户端控制等所有工作。PPG所提供的主要服务包括：1)PI的标识、鉴权和访问控制；2)对推送内容进行语法分析，并依据数据类型定义（DTD）检错纠错；3)客户寻址与信息传输；4)PAP与PUSH OTA间的协议转换；5)为提高无线信道中的传输效率，对信息进行压缩、编译等处理。 <BR><BR>　　另外，PPG还可以通过别名机制实现组播和广播，即将某些特定的地址别名映射到组播或广播的操作中，具体方案可以由系统实现者决定。不同的客户端，其能力是不同的，PPG还要负责响应PI的客户能力查询请求，以便于PI针对不同的客户端构造合适的内容格式。 <BR><BR>　　1.3 推送协议 <BR><BR>　　PAP是PI与PPG间的通信协议，它使用可扩展标记语言（XML）作为消息的描述语言，通过简单的请求响应机制完成数据的传输。PAP可以在多种通信协议（包括超文本传输协议（HTTP）、简单邮件传输协议（SMTP）等）之上实现。 <BR><BR>　　而PUSH OTA是运行于无线会话协议（WSP）之上的一个较为简单的协议层，负责从PPG到客户代理的数据传输。PUSH OTA可使用面向连接的会话和无连接会话两种WSP层服务，对于使用连接会话的推送，需要在PPG和客户端间预先有一个激活的会话上下文；对于无连接的推送，则通过预留的端口来完成通信。 <BR>
<DIV style="VISIBILITY: hidden; OVERFLOW: hidden; WIDTH: 1px; COLOR: #f4fbff; HEIGHT: 1px">JAVA手机网[www.cnjm.net]</DIV><BR>　　1.4 推送服务方式 <BR>
<DIV style="VISIBILITY: hidden; OVERFLOW: hidden; WIDTH: 1px; COLOR: #f4fbff; HEIGHT: 1px">JAVA手机网[www.cnjm.net]</DIV><BR>　　WAP的推送协议中定义了服务指示（SI：Service Indication）和服务加载（SL：Service Load）两项服务，以给用户和网络运营者更多的选择。服务指示是将新信息的指示和相关的通用资源标识符（URI）推送给用户，由用户选择是立即处理信息还是以后处理。服务加载是将一项服务的URI推送给用户，然后客户端自动地使用PULL技术根据该URI启动服务。两种服务的区别在于用户是否介入推送信息的处理过程。SL对推送信息的处理对用户来说是透明的，而SI则在指示用户的同时，请用户对随后的处理做出选择。 <BR><BR>　　PUSH可以将某一站点或某一业务的链接通过短信发送到支持WAP PUSH功能的手机上，这样用户只需要阅读这条短信，打开短信中的链接，就可以直接访问业务了。因此，WAP PUSH实现了短信和WAP业务的结合，节省了用户寻找业务的时间，方便用户直接找到并使用自己喜欢的业务。 <BR><BR>　　2 短消息网关简介 <BR><BR>　　短消息网关（ISMG）是处于短消息中心（SMSC）和业务提供商（SP）之间的设备，它为这两个实体的数据交换提供安全、快捷的通道。网关与短消息中心之间使用SMPP协议（Short Message Peer to Peer,短消息点对点协议）, 与SP之间使用CMPP协议（China Mobile Peer to Peer,中国移动点对点协议），因此短消息网关需要完成协议的转换、计费、路由、安全和网络管理等功能。具体说来， SMPP通信代理系统主要实现网关和GSM网中短消息中心（SMSC）的连接，确保准确接收和发送数据，实现高效、可靠的数据传输。为了达到规范要求的不超过0.001%的数据丢包率，SMPP通信代理需要支持流量控制。CMPP通信代理系统主要是实现和SP服务提供商的连接，与SMPP通信代理系统不同的是，由于协议的影响，CMPP通信代理是服务器端，需等待SP的连接，而SMPP通信代理是客户端，需要主动连接SMSC。短消息网关处理系统是网关中最复杂的处理进程，它完成的任务包括：向GNS(汇接网关) 查询路由，维护路由表，进行协议转换和数据分发。防火墙系统主要为网关系统提供安全保障，它包括IP包过滤和身份验证。短信网关计费系统主要形成各种计费话单，为计费提供依据。业务管理系统主要完成对业务进行统计报告，生成报表，为运营者对用户数据的添加、修改、删除以及对网关系统的监控、查询、操作和维护提供接口和界面。 <BR><BR>
<DIV style="VISIBILITY: hidden; OVERFLOW: hidden; WIDTH: 1px; COLOR: #f4fbff; HEIGHT: 1px">JAVA手机网[www.cnjm.net]</DIV>　　3 基于短信网关发送WAP PUSH <BR><BR>　　WAP PUSH的发送有两种途径，一个是通过PPG网关，另外一个是通过SMPP协议。其中SMPP是一个基本协议，在中国主要有三个由其派生的协议：中国移动的CMPP协议，中国联通的SGIP（在CDMA上是ETIP），以及小灵通的SMGP。通过中国移动的PPG网关发送WAP PUSH有着开发周期长，调测流程较复杂等不足，而使用CMPP协议即基于短信网关来进行WAP PUSH发送灵活性比较高，相对比较简单。 <BR><BR>　　3.1 WAP PUSH发送的实现模式 <BR><BR>
<DIV style="VISIBILITY: hidden; OVERFLOW: hidden; WIDTH: 1px; COLOR: #f4fbff; HEIGHT: 1px">JAVA手机网[www.cnjm.net]</DIV>　　可通过计算机串口上连接GSM MODEM，用它向手机发送WAP PUSH。这种方法发WAP PUSH又分三种模式：BLOCK 模式、TEXT 模式和PDU 模式。BLOCK 模式现在用的很少了， TEXT 模式则只能发送ASCII 码,它不能发送中文的UNICODE码，而PDU 模式开发起来则较为复杂,它需要编写专门的函数来将文本转换为PDU 格式,但PDU 模式被所有手机支持，可以使用任何字符集，它也是手机默认的编码方式，所以选用PDU模式发送WAP PUSH. <BR><BR>　　3.2 PDU 模式 <BR>
<DIV style="VISIBILITY: hidden; OVERFLOW: hidden; WIDTH: 1px; COLOR: #f4fbff; HEIGHT: 1px">JAVA手机网[www.cnjm.net]</DIV><BR>　　用PDU 模式发送 WAP PUSH可以使用三种编码: 7-bit 编码、8-bit 编码和UCS2 编码。7-bit 编码用于发送普通的ASCII 字符，8-bit 编码通常用于发送数据消息，UCS2 编码用于发送Unicode 字符。由于要实现中文WAP PUSH的发送,所以选择用UCS2 编码,即中文Unicode 码。 <BR><BR>　　⑴ UCS2 编码原理 所谓UCS2 编码，是将单个的字符(1-2 个字节)按ISO/IEC10646 的规定，转变为16 位 的Unicode 宽字符。即将单个的字符转换为由四位的‘0’-‘9’、‘A’-‘F’的数字和字 母组成的字符串。待发送的消息以UCS2 码的形式进行发送。 <BR><BR>　　⑵ 通过UCS2 编码我们得到中文Unicode 码，接着就可以进行发送PDU 串的编制了。从表面上看，PDU 串是ASCII 码串，同样由‘0’-‘9’、‘A’-‘F’这些数字和字母组成。它们是8 位字节的十六进制数，或者BCD 码十进制数。PDU 串除了包含所发送的消息本身外，还包含很多其它参数信息，如服务中心号码、目标号码和编码方式等 <BR><BR>例如 <BR><BR>0051000BA13108086406F600F5A7850B05040B8423F_ <BR><BR>0000303010129060603AE81EA8DCA02056A0045C6080C033231312e_ <BR><BR>3133362e3135332e33302f776170707573682f70757368496e6465782e_ <BR><BR>6a73703f7075736849643d3035303531313134313630353231000103E8A_ <BR>
<DIV style="VISIBILITY: hidden; OVERFLOW: hidden; WIDTH: 1px; COLOR: #f4fbff; HEIGHT: 1px">JAVA手机网[www.cnjm.net]</DIV><BR>FB7E782B9E587BBE4BBA5E4B88BE993BEE68EA5E88EB7E58F96E5BDA9E4BFA1E58685E5AEB9000101_ <BR><BR>　　为一串可以成功发送的WAP PUSH，其中包括了汉字描述和WAP页面地址。具体分析如下 <BR><BR>00 SMSC 地址信息的长度 00表示用手机上设置短信中心号码，PDU 串的“SMSC 址格式”段和“SMSC 地址”段将省去 <BR><BR>51 基本参数(TP-MTI/VFP) 不要求发送回复 <BR><BR>00 消息基准值(TP-MR) <BR><BR>0B 对方电话的长度 <BR><BR>A1 目标地址格式 A1表示为国内格式 <BR><BR>3108086406F6 目标地址，补‘F’凑成偶数位后奇偶位互换 <BR><BR>
<DIV style="VISIBILITY: hidden; OVERFLOW: hidden; WIDTH: 1px; COLOR: #f4fbff; HEIGHT: 1px">JAVA手机网[www.cnjm.net]</DIV>00 协议标识(TP-PID) 是普通GSM 类型，点到点方式 <BR><BR>F5 用户信息编码方式 (TP-DCS) <BR><BR>A7 有效期(TP-VP) <BR><BR>85 用户信息长度(TP-UDL) <BR><BR>0B WAP PUSH头部的总长度 <BR><BR>05040B8423F0表示接下来是一个WAP PUSH <BR><BR>00 表示是Concatenated Short Messages <BR><BR>03 长度 <BR><BR>03 reference number <BR><BR>01 表示分成1个短信发送 <BR><BR>01 当前包的序号 <BR><BR>29060603AE81EA8DCA WSP <BR><BR>02 标记位 <BR><BR>05 -//WAPFORUM//DTD SI 1.0//EN <BR><BR>6A UTF-8 <BR><BR>00 标记开始 <BR><BR>45 <BR><BR>C6 <BR><BR>08 <BR><BR>0C href=\"http:// <BR>
<DIV style="VISIBILITY: hidden; OVERFLOW: hidden; WIDTH: 1px; COLOR: #f4fbff; HEIGHT: 1px">JAVA手机网[www.cnjm.net]</DIV><BR>03 字符串开始 <BR><BR>3231312e3133362e3135332e33302f776170707573682f <BR><BR>70757368496e6465782e6a73703f7075736849643d3035303531313134313630353231 URL <BR><BR>00 URL 字符串结束 <BR><BR>01 &gt; <BR><BR>
<DIV style="VISIBILITY: hidden; OVERFLOW: hidden; WIDTH: 1px; COLOR: #f4fbff; HEIGHT: 1px">JAVA手机网[www.cnjm.net]</DIV>03 内容描述字符串开始 <BR><BR>E8AFB7E782B9E587BBE4BBA5E4B88BE993BEE68EA＿ <BR><BR>5E88EB7E58F96E5BDA9E4BFA1E58685E5AEB9 内容描述字符串 <BR><BR>00 内容描述字符串结束 <BR><BR>01 <BR><BR>01 <BR><BR>由以上分析可以看出，WAP PUSH可以被当作一种特殊的短信来发送，WAP PUSH包发送的内容实际上跟通过PPG网关发送的XML原理相同，但是经过了压缩。压缩之后的格式称为WBXML，这种格式将一些标记用代码来表示。然而WBXML的缩略标记分为两部分，一部分是所有类型的XML都通用的，另一部分是不同类型的XML有着不同的解释。 <BR><BR>用户接收到此类信息时，在客户端手机支持WAP的情况下，可以直接访问到信息中加载的WAP网站地址，这样服务器也达到了推广业务方便用户使用的目的。由于在UCS2 编码方式下，可发送短消息的最大字符数是140字节，即WAP PUSH中的推送URL与描述文字的总字符数为140，因此描述文字的字数限制与推送的URL长度有关。 <BR><BR>4 结束语 <BR><BR>WAP PUSH技术结合了PUSH技术的优势和移动通信服务的特性，具有良好的应用前景。但是WAP PUSH技术仍然存在着一些亟待解决的问题，如信息的鉴权与认证、信息的准确性、如何避免垃圾信息等。如何解决好这些问题将是WAP PUSH技术成功的关键。另外，随着GPRS技术和3G无线通信技术的发展，无线信道的带宽将逐步增大，WAP PUSH也将能进一步推送多媒体信息,有着更宽广的应用前景。<BR>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=386" /> 
	  <id>http://www.openx.cn/default.asp?id=386</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[基于IP无线网络中的移动性]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-11-02T16:05:22+08:00</updated>
	  <published>2006-11-02T16:05:22+08:00</published>
		  <summary type="html"><![CDATA[<P>&nbsp;&nbsp;&nbsp; 摘要　基于IP的无线网络将成为下一代移动网络的核心。在全IP无线网络中，移动性对多媒体应用起着十分重要的作用。文中探讨了基于IP的无线网络中的一些重要问题，包括移动IP、移动IPv6和其它相关的一些技术。还讨论了无线局域网（WLAN）、无线广域网（WWAN）、2G以及3G蜂窝网和下一代混合移动网络中关于移动性支持等问题。 </P>
<P><STRONG>0、引言</STRONG> </P>
<P>　　随着因特网应用的不断发展和便携、掌上电脑的广泛使用，人们对于移动性支持的要求也在不断提高。随着技术的不断发展，移动无线网络将逐步演进到一个全IP的网络架构以支持多媒体业务，在该架构下，移动性支持将成为其中一个重要问题。本文首先介绍了不同IP网络（移动IPv6、WLAN、WWAN）中的移动性支持问题，还讨论了目前蜂窝网络和下一代基于IP的混合蜂窝网络中关于移动性支持的最新进展情况。 </P>
<P><STRONG>1、移动IP</STRONG> </P>
<P>　　因特网中最初的IP版本是不支持主机移动性的，因为在传统的IP中，附着在网络中的节点是不发生移动的，其IP地址可以标识一个特定的网络位置。移动IP（如移动IPv4）就是为了提供主机的移动性而提出的。由因特网工程任务组（IETF）提出的移动IPv4标准包括以下功能实体： </P>
<P>　　a）移动节点（MN）：一台可以在因特网上移动的主机或者路由器，且在移动过程中可以保持正在进行的通信会话。文中移动节点和移动主机（MH）可以互换。 </P>
<P>　　b）归属代理（HA）：一台维持注册MN列表的路由器。当MN离开归属网络时，该路由器可以将发送给该MN的数据包转给MN的拜访网络。 </P>
<P>　　c）外地代理（FA）：一台与MN拜访网络有接口的路由器，它可以向MN的HA发送该MN当前的转交地址（care-of address）。 </P>
<P>　　d）转交地址（CoA）：用于标识MN当前位置的本地IP地址。 </P>
<P>　　e）配置转交地址（Collocated CoA）：通过外部获得的临时分配给MN的一个本地IP地址。 </P>
<P>　　f）对应节点（CN）：与MN进行通信的对等主机。 </P>
<P>　　g）归属地址：分配给MN的一个永久性IP地址。 </P>
<P>　　h）隧道：一条从HA到FA传送数据包的路径，是通过封装数据包的形式来实现的。 </P>
<P>　　移动IP使用两个IP地址：a）固定的（永久的）归属地址；b）用于MN移动性的转交地址。移动IP主要通过代理发现、注册和隧道3个主要协作过程实现。 </P>
<P>　　1）代理发现 </P>
<P>　　当MN移动到外地IP网络时，它通过该过程来进行附着。当MN连接在它的归属网络时，其工作方式与传统的具有固定位置的节点相同。当MN检测到它移动到了一个外部网络后，从与之相关的FA上，通过代理广播，它可以直接获得一个转交地址，或在本地网络上通过动态主机配置协议（DHCP）获得一个配置转交地址。 </P>
<P>　　2）注册 </P>
<P>　　当MN进入并保留在外地网络时，通过该过程MN向相关的FA请求服务，并向相关HA通知它的新CoA。如果MN获得了一个新的配置CoA，那么它可以直接通知HA。注册包括HA与MN之间的注册请求和注册应答两种消息的交换。通过该过程HA便可以将新的CoA和MN的归属地址联系在一起。该过程也被称作绑定更新。 </P>
<P>　　3）隧道 </P>
<P>　　在隧道过程中，HA对数据包的封装采用了将IP数据包封装在另一个IP数据包的方法，也就是说HA将具有归属网络地址的IP数据包的头部插入一个新的IP头，即MN的转交地址。当使用FA CoA时，FA接收到封装的数据包后，只要去掉隧道的头部并将剩余部门传递给MN即可。如果使用的是配置CoA，那么HA将把封装后的数据包直接发送给MN，由MN对接收到的数据包进行解封。 </P>
<P>　　移动IP中的路由如图1所示。&nbsp;&nbsp;</P>
<P align=center><IMG src="http://www.chinaunicom.com.cn/upload/20061102022009999.jpg"></P>
<P align=center>图1　移动IP中的三角路由 </P>
<P>　　在移动IP中使用三角路由。在该路由中，由固定主机（CN）发送给MN的数据包首先根据标准的IP协议发送给MN的HA，HA将数据包进行封装，通过隧道将数据包发送给MN的转交地址，FA将收到的数据包解封并传送给MN。尽管三角路由简单易用，但是由于它的路由是从CN到HA，然后再到MN，因此其效率较低。由于HA有大量的数据包通过，因此其开销将成为系统性能的瓶颈。 </P>
<P>　　为了解决移动IP中的三角路由问题，人们对路由进行了优化。在路由优化中，MN将它的转交地址通知CN，这样CN就可以不再通过HA而直接与MN进行通信。优化的移动IP路由允许每个CN都要缓存HA和MN的绑定。利用这个绑定CN就能直接与MN进行通信。尽管看起来优化路由的QoS会得到改善，但是路由优化的实现非常复杂，缓存的开销也会非常大。而且对于优化路由而言，安全管理是一个主要的难点，因为在该环境下如果MN的转交地址是已知的，那么恶意节点通过发送虚假注册信息就可以很容易地将所有与该MN的通信切断。目前对优化路由而言，授权和安全性依然是个有待研究的问题。 </P>
<P><STRONG>2、移动IPv6</STRONG> </P>
<P>　　IPv4地址大小仅有32bit，它的寻址能力越来越不能满足因特网日益发展的要求。从1994年开始，IETF就开始研究IPv6，解决IPv4中固有的局限性，包括寻址能力、路由、移动性支持和QoS保证。在IPv6中，其地址大小是128bit，使因特网具备支持多级寻址、更多的可寻址节点和更简单的地址自动配置功能。IPv6被看作是下一代IP网络的核心协议。 </P>
<P>　　在IPv6中，对移动性支持的网络实体与IPv4很类似，只不过没有了FA的概念。在IPv6中，它使用一个可扩展的分组头（包括归属地址、转交地址以及授权包头）简化到MN的路由，并以安全的方式进行路由优化。当然，转交地址的发现仍然是需要的，在IPv6中，MN使用自动配置和临节点发现功能，从外地网络中获取配置转交地址。移动IPv6中仍然使用与IPv4相同的封装方式向MN传送数据包。如果CN已知MN的转交地址，CN利用IPv6路由包头就可以直接向MN发送数据包。否则，数据包将首先被送到相关的HA中，然后由它通过隧道将数据包送达MN的转交地址。 </P>
<P>　　IPv6在安全管理上与IPv4有很大差别。在移动IPv6中，所有节点都希望进行严格的授权和加密。IPv6既可以使用隧道也可以使用源路由向MN传送数据包，在IPv4中只能通过隧道方式。通过精细的安全管理，在移动IPv6中进行路由优化是可以解决的。移动IPv6的路由如图2所示。 </P>
<P align=center><IMG src="http://www.chinaunicom.com.cn/upload/20061102022055676.jpg">&nbsp;</P>
<P align=center>图2　移动IPv6的路由 </P>
<P>　　2.1　分级的移动IPv6 </P>
<P>　　在移动网络中，MN的快速移动会导致大量绑定更新的发送。由于对移动性的支持，当MN数量增加时，其信令业务也会增加。为了提高移动管理效率，人们提出了分级的移动IPv6机制，其基本思想就是利用区域性注册减小全部注册开销，改善移动通信在切换时的QoS。 </P>
<P>　　具有分级结构的移动IPv6如图3所示。 </P>
<P align=center><IMG src="http://www.chinaunicom.com.cn/upload/20061102022129514.jpg">&nbsp;</P>
<P align=center>图3　具有分级结构的移动IPv6 </P>
<P>　　在分级的移动IPv6引入了移动锚点（MAP）的概念。MAP在网络域中对MN的移动性管理进行处理，包括注册和切换。MAP的功能类似于本地HA，它代表MN接收数据包，并通过隧道将数据包传送给MN的转交地址。一个MN分配两个转交地址，一个是区域性的，另一个是本地的。区域性的转交地址是对MAP的覆盖区域而言，本地转交地址与MN的移动IPv6转交地址相同。MN与CN通过它的区域性转交地址进行通信。当MN移动出MAP区域后，它仅向CN发送绑定更新，否则它仅向MAP发送绑定更新以更新它的本地转交地址。CN接收到的所有数据包都将MN的区域转交地址作为源地址。MAP检测发向该转交地址的数据包，封装后利用MN的本地转交地址将数据包发送给MN。 </P>
<P>　　由于移动IPv6具有更多地址、分级扩展和安全管理，因此，它能保证MN之间的对等业务（P2P），因为移动IPv6允许MN在运动中仍然保持它的静态地址。如果没有静态地址，MN就必须通过一个服务器进行通信，这样就违背了P2P的技术要求。 </P>
<P>　　2.2　安全要求 </P>
<P>　　在移动IP和移动IPv6中，CoA的注册过程需要鉴权，防止其它恶意节点假借MN进行注册。为了提高注册过程的安全性，对于移动IP和移动IPv6，所有的HA、MN、FA都必须进行鉴权。此鉴权算法为MD5（keyed message digest 5）算法。通常，MN的移动性是由动态的网络结构和位置管理支持的，因此，由于移动性的原因，网络安全就显得尤为重要。 </P>
<P>　　IETF利用鉴权、授权、计费（AAA）支持MN在无线因特网中的漫游安全。 </P>
<P><STRONG>3、WLAN对IP移动性的支持</STRONG> </P>
<P>　　3.1　Wi-Fi技术 </P>
<P>　　Wi-Fi（Wireless fidelity）技术可以认为是任何类型的802.11网络，即802.11a、802.11b、802.11g等。任何得到Wi-Fi联盟认证的产品都可以互通，不管它们是不是同一个厂家的产品。Wi-Fi的这个特性可以更好地支持移动性。通常Wi-Fi产品均使用同样的无线频率（如802.11b和802.11g采用2.4GHz，802.11a采用5GHz）。 </P>
<P>　　最初该网络是为扩张的企业网而设计的，目前，Wi-Fi已经用作宽带接入到很多公众区域，如学校、宾馆及会议中心。移动IP可以为Wi-Fi提供很好的漫游服务，这时，Wi-Fi被看作是一个拜访网络。 </P>
<P>　　3.2　WLAN中基于DHCP的移动性支持 </P>
<P>　　传统IP将整个WLAN看作是一个子网，其中所有的主机都有同样的地址前缀。目前，WLAN的移动性支持通过使用DHCP实现。当MN在一个外部WLAN时，它便请求分配一个IP地址（即转交地址），此时服务器便会从地址池中返回一个有效的IP地址。如果地址配置成功，那么MN便可以在WLAN内进行通信。基于DHCP的移动性支持比较容易实现，但它无法支持MN在不同WLAN之间的漫游。 </P>
<P>　　具有多个子网的MN必须能从一个子网无缝地漫游到另一个子网。WLAN的接入点可以在数据链路层提供对漫游的支持。当MN在网内移动时，它必须自动与不同的接入点联系。同时，当MN在子网间漫游时，也需要网络层有机制来保证MN能得到一个特定的IP地址，从而保证其连续通信。 </P>
<P>　　3.3　移动IP解决方案 </P>
<P>　　IPv4和IPv6通过将WLAN看作是一个子网且具有多个接入点来解决移动性问题。为了实现移动IPv4和移动IPv6，移动IP服务器和移动IP代理软件这两个主要的组件是必需的。移动IP服务器可以完全实现移动IP中HA的功能，为MN提供移动性管理。当MN在通信过程中移动到另一个子网的边界时，移动IP网络层的切换过程便开始了。它首先在媒体接入控制层（MAC）使HA与新FA进行握手，在完成切换后，发给MN的数据包由HA通过隧道发送到新的子网，然后发送给MN。 </P>
<P><STRONG>4、无线WAN对IP移动性的支持</STRONG> </P>
<P>　　目前，WLAN的思想已扩展到了无线WAN，在目前的无线宽带WAN技术中，WiMax是最受人关注的技术。WiMax技术基于成熟的IEEE 802.16标准，该标准规范了无线WAN的无线技术和点到多点的无线网络。IEEE 802.16将它的MAC层分为子层，用于支持不同传输技术，包括IPv4、IPv6、以太网、异步传输模式（ATM），从而使WiMax技术可用于多种不同的传输技术。 </P>
<P>　　WiMax扩展了Wi-Fi的覆盖范围，它可以提供固定的和移动的无线宽带接入而无需视距传播，典型的小区半径是3km-10km，WiMax系统希望可以达到每信道40Mbit/s的传输速率。这个带宽是非常高的，下一代移动通信中的高速下行分组接入（HS-DPA）技术的理论速率只有14.4Mbit/s。 </P>
<P>　　与Wi-Fi相比，WiMax的小区相对大些，因而可以支持更多的MN。尽管早期版本的IEEE802.16a和IEEE 802.16d都不支持域间移动性，然而IEEE 802.16e可以在步速下支持该移动性。WiMax目前已开始在IP层增加对移动性的支持。 </P>
<P><STRONG>5、蜂窝网和混合移动网络对移动性的支持</STRONG> </P>
<P>　　蜂窝网传统上是通过电路交换技术提供语音业务，蜂窝网络比较复杂。目前我国的蜂窝网络正从2G向3G过渡，其目标就是通过全IP网络架构提供高速多媒体业务。全IP的蜂窝网可以看作是基于IP的无线接入网（RAN）、全IP核心网和IP终端的组合。基于IP的RAN主要提供无线承载和无线资源管理。IP核心网结构包括分组核心网和新的IP多媒体子系统（IMS）。 </P>
<P>　　3G蜂窝技术主要包括统一移动通信系统（UMTS）和CDMA2000系统。UMTS是从GSM演进而来的，而CDMA2000是从CDMAOne演进而来的。这两种技术都把移动和IP技术结合在一起，提供个人通信。UMTS和CDMA2000都通过隧道支持用户移动性。目前二者仅在链路层解决其移动性，还尚未在IP层解决该问题。可以看出在同一个区域可能存在几个不同无线网络的叠加，包括2G网络、3G网络、WLAN、无线WAN等。移动IPv6和它的分级移动性管理扩展将为网络间移动性和网络内部移动性提供很好的解决方案。在具有分级结构的移动IPv6技术下，移动IPv6将管理全球的移动性问题，而MAP则管理本地移动性问题。安全性和QoS在移动性上都有保证。 </P>
<P><STRONG>6、结束语</STRONG> </P>
<P>　　可以看出移动IP和移动IPv6是无线因特网实现移动性的关键技术。为了更好地改善移动IPv6的性能，人们提出了分级的IPv6技术。由于基于IP网络结构的原因，加密和鉴权都是必需的。基于IP的无线网络将是未来蜂窝网络的核心。在具有多个无线网络重叠的区域，移动IPv6和它的分级移动性管理扩展将提供网络问移动性和网络内部的移动性。但目前如何更加有效、安全地实现移动性仍然是有待进一步研究的问题。</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=383" /> 
	  <id>http://www.openx.cn/default.asp?id=383</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[3G移动通信网基站接入解决方案探讨]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-11-02T16:02:48+08:00</updated>
	  <published>2006-11-02T16:02:48+08:00</published>
		  <summary type="html"><![CDATA[<P>摘要　文章基于对3G移动通信网基站接入传输需求的分析，对3G移动网基站的接入方案进行了分析论述，对3G基站传输网的初期建设提出了建议。 </P>
<P><STRONG>1、引言</STRONG> </P>
<P>　　第三代移动通信（3G）的发展经历了体制标准选择、颁发牌照数量的困惑后，到今年已发展到设备规模开发、网络规模测试、业务应用、产业发展以及网络建设规划等阶段。而在整个移动通信网络规划中，作为基础网络的传输网络规划，将是影响业务开通、成本高低、网络质量和扩展性的关键因素。因此，3G移动通信网所需传输网络规划和建设在整个3G网络发展中扮演着重要角色。 </P>
<P>　　目前，3G移动网络技术包括WCDMA、CDMA2000和TD-SCDMA三种网络制式，网络分别由核心网和无线网构成。WCDMA商用版为R99和R4版本，其中，R99版本增加PS分组数据业务，由SCSN和GGSN通过高速以太网接口或POS连接构成全IP分组交换网络；无线网部分Node B与RNC之间通过ATM技术连接，语音业务和数据业务以ATM信元承载。R4版本无线网部分和核心网PS分组域与R99相同，只是在CS电路域采用了控制（MSC Sever）与交换平面（MGW媒体网关）完全分开的方式，MGW可进行TDM、ATM和IP三种方式的业务交换。TD-SCDMA在接口和传输模式上与WCDMA区别不大，只是在无线部分的实现方式上存在差别。CDMA2000制式目前主要指CDMA2000 EV-DO，其传输模式与WCDMA基本相同。三种体制在技术原理、无线频率、空中接口、覆盖范围、网络容量、业务实现等方面各有优势，其在网元设置和功能划分实现上，也各有特点，这里不再一一赘述。但从传输的角度看，在移动通信网络结构中，三种制式各网元接口和接口属性上均是采用分组化的方式进行传送，这是它们的共同发展方向。而在网络的分层分割承载方面，无论是WCDMA、CDMA2000还是TD-SCDMA，3G移动通信网络的逻辑网络结构可以统一为两个层次：接入网络层（UTRAN）和核心网络层（CN）。3G传输网主要承担从UTRAN到CN的业务汇聚，以及CN中的业务传送。本文分析了3G移动通信网传输电路需求，并对3G基站接入的传输网络规划的共性问题进行探讨。 </P>
<P><STRONG>2、3G移动通信网需求传输电路分析</STRONG> </P>
<P>　　3G移动通信网对传输网络的要求主要体现在对传输容量和对3G业务接口支持两个方面。3G传输网络分为两部分：第一部分为骨干传输网络，用以解决3G核心网络的业务传送，属于省际干线和省内干线的范围；第二部分为本地传输网络，用以解决3G无线接入网的业务传送，属于城域网/本地网的范围。 </P>
<P>　　2.1　核心网对骨干传输的要求 </P>
<P>　　3G核心网对传输的需要包括核心网元间、核心网以及无线接入网基站控制器间的需求，主要指大颗粒的STM-1、FE/GE/POS等传送需求，它们具有大颗粒、大带宽、居间流向简单、对可靠性要求高等特点，主要由省内、省际干线传送。 </P>
<P>　　目前，省内、省际干线传送网采用的技术主要是SDH和WDM（部分SDH具有MSTP功能），能提供从E1到STM-16等电路速率的传送。考虑到核心网元大容量设置的趋势，在一般的省、自治区范围内，其中心局址较少，且业务流向较为简单，目前省内、省际干线从设备和结构上基本可以满足3G业务的需求，因此，仅从网络容量上扩容即可，而在业务量大的省和省际干线上，则可以考虑适当引入网状结构的ASON网络。 </P>
<P>　　2.2　3G接入网对传输接入层的要求 </P>
<P>　　该部分电路主要指基站至基站控制器，一般由本地传输网（含城域传送网）传送。其中，基站至基站控制器间的电路由于基站站点多、分布广、总量大，是传输中需要重点解决的部分。目前，基站控制器和核心网网元有大容量的趋势，在一些地区会出现多个本地网联合组建“大本地网”的情形，因此，在该区域，基站至基站控制器间的电路需通过省内干线来承担。 </P>
<P>　　3G无线基站接入网与2G在业务流向上没有区别，也是相对于中心局房的集中型业务，其网络架构仍可沿用2G网的传输网分层、分割的组网模式。在接口属性上，相对于2G网基站，3G网近期无较大变化，主要以E1接口为主，但随着IP化的进展，未来其接口将会出现以太网IOM/100M等接口。就现有的各种设备性能来看，引入具有数据处理功能的MSTP设备是一个不错的选择，可以采用下文所述的多种接入方式。 </P>
<P>　　在3G接入传输网组网中，需要考虑的另一重要因素是各基站的容量分配以及传输网络的系统容量规划。目前，较为普遍的基站接入需求的容量计算方法是采用假设业务模型算法。以WCDMA网Node B基站的容量需求为例，可得单个基站的容量需求计算过程如下： </P>
<P>　　假设Node B对应Iub接口，总的带宽W=Ncell×（Nuser×Ev×6.6kb/s+Nuser×Ecs×64b/s+Nuser×Vps）×（1+Osig+Oo&m）×（1+Q）/（1/Y） </P>
<P>　　其中，Ncell表示小区数；单载频全向基站为1个小区；单载3扇基站为3个小区；2载3扇基站为6个小区；以此类推可知： </P>
<P>　　◆Nuser为小区内的放号用户数。 </P>
<P>　　◆Ev为每用户话音爱尔兰数。 </P>
<P>　　◆Ecs为每用户可视电话爱尔兰数。 </P>
<P>　　◆Vps为每用户平均数据速率。 </P>
<P>　　◆Osig为控制信令的开销，取10%。 </P>
<P>　　◆Oo&m为逻辑和物理操作维护等的开销，取5%。 </P>
<P>　　◆Q为ATM传输产生的开销，10%。 </P>
<P>　　◆Y为负荷因子，取80%。 </P>
<P>　　◆6.6b/s、64b/s分别是话音、可视电话业务的占用带宽。 </P>
<P>　　假设一个网络初期的话务模型为： </P>
<P>　　◆小区内的放号用户数Nuser取1000。 </P>
<P>　　◆Ev为每用户话音爱尔兰数，取0.025。 </P>
<P>　　◆Ecs为每用户可视电话爱尔兰数，取0.001。 </P>
<P>　　◆Vps为每用户平均数据速率，取180b/s。 </P>
<P>　　综合以上数据，可以得出几种典型配置的基站传输带宽需求，如表1所示： </P>
<P align=center>表1　WCDMA基站初期带宽需求预测 </P>
<P align=center>&nbsp;<IMG src="http://www.chinaunicom.com.cn/upload/20061024092710455.jpg"></P>
<P>　　以此类推，如果假定各时期的话务模型和用户数，则可以得出中远期单个基站的带宽需求预测，如表2所示： </P>
<P align=center>表2　WCDMA基站带宽需求预测 </P>
<P align=center><IMG src="http://www.chinaunicom.com.cn/upload/20061024092745620.jpg"></P>
<P><STRONG>3、3G移动通信网基站接入解决方案</STRONG> </P>
<P>　　3G移动通信网需求传输接入主要指3G基站至基站控制器的传输，根据3G需求传输网对基站的传输数据是否进行二层分组处理和统计复用，传输解决方案可以分为两类。 </P>
<P>　　（1）仅进行物理层透明传送 </P>
<P>　　第一类方案提供透明物理层通道，不对基站接入电路作二层处理，二层处理仍由业务设备处理，如图1所示： </P>
<P align=center>&nbsp;<IMG src="http://www.chinaunicom.com.cn/upload/20061024092802371.jpg"></P>
<P align=center>图1　物理层透明传送 </P>
<P>　　该方案专业分工界面清晰，对数据业务的不确定性、突发性等的处理集中在业务设备侧，采用光纤直连、E1/STM-1静态通路（包括PDH、SDH以及无线微波传输等网络提供的链路）。 </P>
<P>　　◆有部分无线厂家的基站设备可以直接提供STM-1光口直连接入基站控制器，但若光纤直连会浪费光纤，不是网络形态，且维护困难、安全性低，不宜采用。 </P>
<P>　　◆通过信道化的STM-1静态传输，同样存在上述问题，但3G业务在较长时间内存在不确定因素时，带宽会大量空闲致使接口利用率低，不宜采用。 </P>
<P>　　（2）二层数据处理 </P>
<P>　　第二类方案是对基站接入电路作二层处理，进行统计复用、带宽共享，以提高传输效率。目前，业界对这类方案讨论得较多，总的来讲，根据信号处理位置和范围的不同，可以分为以下五种应用方式。 </P>
<P>　　◆方式一。它在局端基站控制器侧增加二层处理设备，对基站信号进行处理，将其转换为大颗粒的接口接入基站控制器，这减少了基站控制器的接口数量，如图2所示。该方式没有解决传输网络的带宽压力，却增加了额外设备、故障点和维护工作量。 </P>
<P align=center><IMG src="http://www.chinaunicom.com.cn/upload/20061024092818784.jpg">&nbsp;</P>
<P align=center>图2　二层数据处理方式一 </P>
<P>　　◆方式二。相对于方式一，它将数据处理功能在局端具备二层处理功能的MSTP设备上完成（含IMA汇聚处理，下同），并利用MSTP二层处理功能，汇聚基站信号，减少了基站控制器接口数量，如图3所示： </P>
<P align=center><IMG src="http://www.chinaunicom.com.cn/upload/20061024093012361.jpg">&nbsp;</P>
<P align=center>图3　二层数据处理方式二 </P>
<P>　　◆方式三。它将对数据的二层处理再扩大到传输网汇聚层的汇聚业务节点上。共享汇聚层的带宽，提高汇聚层带宽利用率，减少汇聚层网络带宽建设压力。可采用在汇聚节点单独增加数据处理设备的方法，将接入的基站信号首先接入数据处理设备，进行二层数据收敛带宽，然后接入汇聚层网络。这种处理方式增加了额外设备，同时将传输网络的结构，从信号传输的角度将汇聚层和接入层分离，一方面对现有网络的调整较大并对现有运行电路有所影响，另一方面增加了运行维护地的后期工作量，如图4所示： </P>
<P align=center><IMG src="http://www.chinaunicom.com.cn/upload/20061024092852599.jpg">&nbsp;</P>
<P align=center>图4　二层数据处理方式三 </P>
<P>　　◆方式四。相对于方式三，它将对数据的处理通过MSTP设备上二层处理功能完成，利用MSTP二层处理功能汇聚基站信号（如图5所示），该种方式也是目前多数厂家推荐的方案。相对于单独增加设备的方式，这种方式更能充分利用现有网络设备的资源，可保证现网的电路运营和延续性，但其存在如何确定带宽收敛比的问题，即在无线业务模型和使用方式存在不确定因素时，如何在保证无线业务质量的情况下，确定全网所有基站共享的带宽。 </P>
<P align=center><IMG src="http://www.chinaunicom.com.cn/upload/20061024093032527.jpg">&nbsp;</P>
<P align=center>图5　二层数据处理方式四 </P>
<P>　　◆方式五。相对于方式四，它将对数据的处理在扩大到边缘层MSTP设备上来完成，利用MSTP二层处理功能，汇聚基站信号，并共享传输网带宽，提高带宽传送效率（如图6所示）。当然，另一种方式就是建设单独的数据网络，但我国目前只有少数运营商具有ATM网络，且很不完整，新建几百个甚至上千个点的基站接入覆盖，从经济效益上来看是不现实的，同时也存在着上述方式中存在的问题。 </P>
<P align=center><IMG src="http://www.chinaunicom.com.cn/upload/20061024093051486.jpg">&nbsp;</P>
<P align=center>图6　二层数据处理方式五 </P>
<P>　　以上方式中，基站电路信号在基站至基站控制器的传输路径上，对数据的二层处理由基站控制器向基站侧逐步推进，随着对数据二层处理得到逐步扩大，对传输电路的利用效率也得到提高。第二类方式的应用重点在于各传输路径共享带宽的分配（即收敛比的取定），它与用户业务应用模型有较密切的关系。 </P>
<P><STRONG>4、基站接入解决方案建议</STRONG> </P>
<P>　　由以上分析可见，3G需求传输网络规划中，骨干网络的规划相对于2G网无较大地变化，其规划难点在于无线基站接入的传输网络，尤其是引入分组数据业务后对带宽容量的分配考虑。而数据业务的分组特性致使所需传输带宽存在突发性、不可预测性，只能通过业务运营，不断积累经验、校正模型才能得到逐步完善。同时，也需要运营商与ISP、ICP长期不懈努力才能得到广泛的认可和接受，这是一个渐进过程。如果考虑到数据业务是从无到有，从小到大，传输网络将会面临着从低容量、小颗粒、简单结构需求到高容量、大颗粒、复杂结构需求的变化，这就要求传输网络规划应当具有相当强的扩展性，特别是传输网络建设初期，再考虑传输网建设的经济性、高效型的同时，要特别重视传输网络的扩展性、可延续建设，以保持传输网络的稳定发展。 </P>
<P>　　上述各种方式各有特点和适用场合，但考虑到3G运行初期其移动数据业务模型不确定，并且对带宽的需求规模不是很大，故对3G移动网的基站接入问题有如下建议： </P>
<P>　　（1）总的来讲，建议以基站接口容量的扩展性避免传输网因大规模增加容量而承受的冲击；以传输网络的扩展性，使传输网络建设具有时效性、平稳性、延续性；逐步充分利用传输网MSTP技术对分组数据的处理性能，提高传输带宽的利用效率，共享传输带宽，避免由接入层至汇聚层电路传输容量的直线简单累计，避免造成网络容量庞大。 </P>
<P>　　（2）建议3G无线基站设备传输接口带宽以具备可平滑扩展能力。对分组数据的处理应按站统一，对多个扇区提供复用功能，并使提供的传输带宽接口数量可平滑扩展。比如基站初期可仅提供1～2个E1，后期则根据业务量进行在线传输带宽通道的增加。 </P>
<P>　　（3）建议在3G网络建设初期，对3G基站接入的传送仍以静态链路形式分配带宽以保证业务质量。这时，可以快速部署网络，避免传输网络的较大调整。而对于传输资源较少的新移动运营商，亦可采用这种方式，充分发挥微波传输等无线技术手段建设速度快的优势，快速部署网络。 </P>
<P>　　（4）建议在对中远期网络进行确实预测的基础上，完成传输网络的整体规划，优选MSTP技术组建传输网，尤其是对骨干汇聚层的规划，既要保证传输网建设投资的时效性，又要保证传输网的平稳发展。应积极参与传输网和数据网融合，积累数据业务带宽运维经验，尤其是带宽管理、复用管理等。 </P>
<P>　　（5）建议随着网络规模的增加，逐步进行上述第二类方案运用，根据移动数据业务的发展，逐步扩大采用二层处理功能，提高传输效率，完成以电路业务为主向分组业务为主的平滑过渡。</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=382" /> 
	  <id>http://www.openx.cn/default.asp?id=382</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[与小S配对成功]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-10-29T19:33:48+08:00</updated>
	  <published>2006-10-29T19:33:48+08:00</published>
		  <summary type="html"><![CDATA[<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=top width=401 height=13><SPAN><STRONG><FONT face=Arial size=2>产品名称：Clip S</FONT></STRONG></SPAN></TD></TR>
<TR>
<TD vAlign=top height=19>蓝牙版本：1.2 Class</TD></TR>
<TR>
<TD vAlign=top height=16>支援功能：立体声</TD></TR>
<TR>
<TD vAlign=top height=132><STRONG><FONT size=2><FONT face=Arial><SPAN>主要特点：</SPAN><BR></FONT></FONT></STRONG><SPAN><FONT face=Arial>全球首款蓝芽耳机，支持Symbian操作系统,可将NOKIA手机内MP3歌曲，以立体音模式传送到CLIP S立体声蓝芽耳机。首创的蓝芽立体声无线耳机：让声音随时环绕你左右，享受立体声的优扬乐声。独有可分拆式耳筒设计，简洁利落的精明设计，配戴方便。同时享受蓝芽无线通话的方便和优质立体声音响效果。便于夹在领口或领带上，简约、典雅的设计风格，让你引领时尚的潮流。非一般耳挂式耳机设计，避免长时间佩带时产生不适感。外置蜂鸣器装置(buzzer) ，来电时会发出”哔,哔”响声即使手机放在手提袋中，仍可藉由蓝芽耳机蜂鸣器发出之”哔,哔”响声知道来电，不错失任何重要来电。支持蓝芽耳机、免提装置和A2DP模式<BR>内置蜂鸣器<BR>支持蓝芽立体声传送功能的设备进行无线连接<BR>通话时间: 6小时<BR>备用时间: 150小时<BR>音乐播放时间: 6小时</FONT></SPAN></TD></TR></TBODY></TABLE>
<P><BR><STRONG>基本规格<BR></STRONG>蓝牙立体声免提装置<BR>大小：53.5&nbsp;x&nbsp;25.5&nbsp;x&nbsp;26&nbsp;毫米<BR>总重：27&nbsp;克<BR>通话时间：可达&nbsp;6&nbsp;小时<BR>立体声音乐播放时间：可达&nbsp;6&nbsp;小时<BR>待机时间：可达&nbsp;150&nbsp;小时<BR></P>
<P>我的手机 Hp iPaq 6315</P>
<P>捣鼓了半天终于配对成功啦~哈.</P>
<P>现在不怕因为PPC声音小而漏接电话咯.</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=381" /> 
	  <id>http://www.openx.cn/default.asp?id=381</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[全面分析IDC双线路实现技术方案]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-10-27T10:12:13+08:00</updated>
	  <published>2006-10-27T10:12:13+08:00</published>
		  <summary type="html"><![CDATA[<DIV id=content>&nbsp;&nbsp;&nbsp;&nbsp; 自从电信与网通分离之后，北方网通与南方电信网络的互联瓶颈问题一直没有得到很好的解决，这个问题也严重困扰广大的ICP服务商。ICP也只能根据自己网站主流用户群是在南方还是在北方，服务重点是在南方还是北方而进行取舍，如果用户多是南方选取电信网络，如果用户多为北方则选用网通网络。当然谁也不想自己的网站因网速而丢失另一部分的用户及访问者，都在想办法解决网络瓶颈，希望实现南北快速互通互联。在这种情况下IDC双线技术运营而生了。 <BR><BR>　　IDC双线路技术就是在互联网数据中心(IDC)通过特殊的技术手段把不同的网络接入商(ISP)服务接入到一台服务器上或服务器集群，使服务器所提供的网络服务访问用户能尽可能以同一个ISP或互访速度较快的ISP连接来进行访问，从而解决或者减轻跨ISP用户访问网站的缓慢延迟(南北网络瓶颈)问题。IDC双线路是一个技术概念可以多有具体实现方式，目前国内的IDC提供商分别提出了“双IP双线路”、“单IP双线路”、“CDN多线路”和“BGP单IP双线路”等双线路实现方法，下面来对以上提出的双线路实现方式进行具体说明： <BR><BR>　　<STRONG>一、 双IP双线路实现方式</STRONG> <BR><BR>　　双IP双线路实现方式是指在一台服务器上安装两块网卡，分别接入电信网线与网通网线并设置一个网通IP与一个电信IP，这样一台服务器上就有了两个IP地址，需要在服务器上添加网通或电信的路由表来实现网通用户与电信用户分别从不同的线路访问。双IP双线路具有常用的两种使用方式： <BR><BR>　　1． ICP用户在网站设置两个IP地址不同的链接，网通用户点击网通IP访问服务器，电信用户点击电信IP访问。 <BR><BR>　　2． 使用BIND9（DNS服务器软件）对不同的IP地址请求返回不同的服务器IP的功能来实现网通用户请求域名时返回网通的IP，电信用户请求域名时返回电信的IP，这个方式就是一些IDC提出的智能DNS的方案。 <BR><BR>　　双IP双线路在一定程度上提高了网通与电信用户访问网站的速度，但缺点是由于服务器接入的是双网卡必须在服务器上进行路由表设置，这给普通用户增加了维护难度，并且所有的数据包都需要在服务器上进行路由判断然后再发往不同的网卡，当访问量较大时服务器资源占用很大。此方案是最简单的双线解决方案，一般限于规模较小的IDC提供商使用。 <BR><BR>　　<STRONG>二、 单IP双线路</STRONG> <BR><BR>　　普通的单IP双线路是指在服务器上设置一个IP，此IP是网通IP或是电信IP，通过路由设备设置数据包是通过是电信网络或是网通网络发出来实现的双线技术。此方案也可以提高网通用户与电信用户的访问速度，解决了双IP双线需要在服务器上设置路由的问题，但由于IP地址采用的是网通或电信的IP，访问用户在发送请求数据包时不会自动判别最好的路由。所以这种解决方案只能说是半双线的技术方案、是一种过渡形式的解决方案。此方案一般为单线IDC服务商往双线IDC服务商转型期所采用的临时方案。 <BR><BR>　　<STRONG>三、 CDN方式实现双线路</STRONG> <BR><BR>　　CDN（Content Delivery Network）互联网内容分发网络,就是多服务器分网托管加智能域名DNS，即服务器是CDN服务商提供，放在不同网络节点上，通过缓冲程序自动抓取用户源服务器的数据，然后缓存在不同网段节点的服务器上。再配合智能DNS服务器的分网解析功能，实现不同网络用户都能访问到离自己最近网段上的网站，从而避免因为网络问题而影响网站访问速度的目的。现绝大部份CDN技术在处理静态网站上比较成熟，对交互性很强如全动态页面的网站还不是很成熟。目前CDN方案主要作为一种辅助的解决方案需要配合其它的双线方案才能达到最好的效果。 <BR><BR>　　<STRONG>四、 用BGP协议实现的单IP双线路</STRONG> <BR><BR>　　BGP（边界网关协议）协议主要用于互联网AS（自治系统）之间的互联，BGP的最主要功能在于控制路由的传播和选择最好的路由。中国网通与中国电信都具有AS号（自治系统号），全国各大网络运营商多数都是通过BGP协议与自身的AS号来互联的。使用此方案来实现双线路需要在CNNIC（中国互联网信息中心）申请IDC自己的IP地址段和AS号，然后通过BGP协议将此段IP地址广播到网通、电信等其它的网络运营商，使用BGP协议互联后网通与电信的所有骨干路由设备将会判断到IDC机房IP段的最佳路由，以保证网通、电信用户的高速访问。 <BR><BR>　　使用此方案具体以下优点： <BR><BR>　　1． 服务器只需要设置一个IP地址，最佳访问路由是由网络上的骨干路由器根据路由跳数与其它技术指标来确定的，不会对占用服务器的任何系统资源。服务器的上行路由与下行路由都能选择最优的路径，所以能真正实现高速的单IP双线访问。 <BR><BR>　　2． 由于BGP协议本身具有冗余备份、消除环路的特点，所以当IDC服务商有多条BGP互联线路时可以实现路由的相互备份，在一条线路出现故障时路由会自动切换到其它线路。 <BR><BR>　　3． 使用BGP协议还可以使网络具有很强的扩展性可以将IDC网络与其他运营商互联，轻松实现单IP多线路，做到所有互联运营商的用户访问都很快。这个是双IP双线无法比拟的。 <BR><BR>　　虽然BGP方案是最好的解决方案但由于此方案需要IDC提供商的设备投入与带宽投入方面较大并且技术上较为复杂，所以目前国内采用此方案仅限于实力较强的专业IDC服务商。 <BR><BR>　　综上所述，以上各种双线实现的方式各有优缺点，双IP双线成本较低，但网络不够稳定并且占用大量的服务器资源，普通单IP双线路只是实现了部分双线路的效果所以访问速度不佳，CDN方式对静态网页效果很好但对交互性很强的网页效果不太理想，BGP单IP双线路解决了以上所有的问题是最好的实现方式但国内采用此种方案的IDC服务商较少，如果能将BGP单IP双线与CDN加速结合起来将会是最优的解决方案。目前全国已有不少合用BGP技术方案的数据中心，但大多为特殊客户提供服务，很少有针对普通用户和IDC商的机房。<BR><BR>　　郑州市景安互联网数据中心，经过长达两年的技术积累和准备工作，在取得多方面支持下，申请成功了自己的IP段，和自制域，并与电信、网通达成BGP互联协议，在今年五月份正式向全国普通用户和IDC供应商推出了BGP服务器的机房，使国内最尖端的互联解决方案走向每个使用互联网的人。并在7月初实现了长宽的BGP，目前达到三线互通，与铁通的互通会在8月中旬开通，景安单IP四网互通，您投资互联网的最佳方案。 <BR clear=all></DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=380" /> 
	  <id>http://www.openx.cn/default.asp?id=380</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[写了个javascript的DateDiff]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-10-12T10:34:35+08:00</updated>
	  <published>2006-10-12T10:34:35+08:00</published>
		  <summary type="html"><![CDATA[<P>function DateDiff(dd,dadd)<BR>{<BR>&nbsp;//可以加上错误处理<BR>&nbsp;var a = new Date(dd);<BR>&nbsp;a = a.valueOf();<BR>&nbsp;a = a + dadd * 24 * 60 * 60 * 1000;<BR>&nbsp;a = new Date(a);<BR>&nbsp;return a.getFullYear()+'-'+(a.getMonth() + 1)+'-'+a.getDate();<BR>}</P>
<P>&nbsp;</P>
<P>方法:</P>
<P>var today = new Date();</P>
<P>DateDiff(today,30);//加了30天</P>
<P>DateDiff(today,-30);//减了30天</P>
<P>返回的是 yyyy-mm-dd的格式</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=379" /> 
	  <id>http://www.openx.cn/default.asp?id=379</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[JS的IE和Firefox兼容性汇编]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-10-10T08:39:38+08:00</updated>
	  <published>2006-10-10T08:39:38+08:00</published>
		  <summary type="html"><![CDATA[<P>1. document.form.item 问题<BR>(1)现有问题：<BR>现有代码中存在许多 document.formName.item("itemName") 这样的语句，不能在 MF 下运行<BR>(2)解决方法：<BR>改用 document.formName.elements["elementName"]<BR>(3)其它<BR>参见 2</P>
<P>2. 集合类对象问题<BR>(1)现有问题：<BR>现有代码中许多集合类对象取用时使用 ()，IE 能接受，MF 不能。<BR>(2)解决方法：<BR>改用 [] 作为下标运算。如：document.forms("formName") 改为 document.forms["formName"]。<BR>又如：document.getElementsByName("inputName")(1) 改为 document.getElementsByName("inputName")[1]</P>
<P>3. window.event<BR>(1)现有问题：<BR>使用 window.event 无法在 MF 上运行<BR>(2)解决方法：<BR>MF 的 event 只能在事件发生的现场使用，此问题暂无法解决。可以这样变通：<BR>原代码(可在IE中运行)：<BR>&lt;input type="button" name="someButton" value="提交" /&gt;<BR>...<BR>&lt;script language="javascript"&gt;<BR>function gotoSubmit() {<BR>...<BR>alert(window.event); // use window.event<BR>...<BR>}<BR>&lt;/script&gt;</P>
<P>新代码(可在IE和MF中运行)：<BR>&lt;input type="button" name="someButton" value="提交" /&gt;<BR>...<BR>&lt;script language="javascript"&gt;<BR>function gotoSubmit(evt) {<BR>evt = evt ? evt : (window.event ? window.event : null);<BR>...<BR>alert(evt); // use evt<BR>...<BR>}<BR>&lt;/script&gt;<BR>此外，如果新代码中第一行不改，与老代码一样的话(即 gotoSubmit 调用没有给参数)，则仍然只能在IE中运行，但不会出错。所以，这种方案 tpl 部分仍与老代码兼容。</P>
<P>4. HTML 对象的 id 作为对象名的问题<BR>(1)现有问题<BR>在 IE 中，HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能。<BR>(2)解决方法<BR>用 getElementById("idName") 代替 idName 作为对象变量使用。</P>
<P>5. 用idName字符串取得对象的问题<BR>(1)现有问题<BR>在IE中，利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象，在MF 中不能。<BR>(2)解决方法<BR>用 getElementById(idName) 代替 eval(idName)。</P>
<P>6. 变量名与某 HTML 对象 id 相同的问题<BR>(1)现有问题<BR>在 MF 中，因为对象 id 不作为 HTML 对象的名称，所以可以使用与 HTML 对象 id 相同的变量名，IE 中不能。<BR>(2)解决方法<BR>在声明变量时，一律加上 var ，以避免歧义，这样在 IE 中亦可正常运行。<BR>此外，最好不要取与 HTML 对象 id 相同的变量名，以减少错误。<BR>(3)其它<BR>参见 问题4</P>
<P>7. event.x 与 event.y 问题<BR>(1)现有问题<BR>在IE 中，event 对象有 x, y 属性，MF中没有。<BR>(2)解决方法<BR>在MF中，与event.x 等效的是 event.pageX。但event.pageX IE中没有。<BR>故采用 event.clientX 代替 event.x。在IE 中也有这个变量。<BR>event.clientX 与 event.pageX 有微妙的差别（当整个页面有滚动条的时候），不过大多数时候是等效的。</P>
<P>如果要完全一样，可以稍麻烦些：<BR>mX = event.x ? event.x : event.pageX;<BR>然后用 mX 代替 event.x<BR>(3)其它<BR>event.layerX 在 IE 与 MF 中都有，具体意义有无差别尚未试验。</P>
<P>8. 关于frame<BR>(1)现有问题<BR>在 IE中 可以用window.testFrame取得该frame，mf中不行<BR>(2)解决方法<BR>在frame的使用方面mf和ie的最主要的区别是：<BR>如果在frame标签中书写了以下属性：<BR>&lt;frame src="xx.htm" id="frameId" name="frameName" /&gt;<BR>那么ie可以通过id或者name访问这个frame对应的window对象<BR>而mf只可以通过name来访问这个frame对应的window对象<BR>例如如果上述frame标签写在最上层的window里面的htm里面，那么可以这样访问<BR>ie： window.top.frameId或者window.top.frameName来访问这个window对象<BR>mf： 只能这样window.top.frameName来访问这个window对象</P>
<P>另外，在mf和ie中都可以使用window.top.document.getElementById("frameId")来访问frame标签<BR>并且可以通过window.top.document.getElementById("testFrame").src = ‘xx.htm’来切换frame的内容<BR>也都可以通过window.top.frameName.location = ‘xx.htm’来切换frame的内容<BR>关于frame和window的描述可以参见bbs的‘window与frame’文章<BR>以及/test/js/test_frame/目录下面的测试<BR>----adun 2004.12.09修改</P>
<P>9. 在mf中，自己定义的属性必须getAttribute()取得</P>
<P>10.在mf中没有 parentElement parement.children 而用parentNode parentNode.childNodes<BR>childNodes的下标的含义在IE和MF中不同，MF使用DOM规范，childNodes中会插入空白文本节点。<BR>一般可以通过node.getElementsByTagName()来回避这个问题。<BR>当html中节点缺失时，IE和MF对parentNode的解释不同，例如<BR>&lt;form&gt;<BR>&lt;table&gt;<BR>&lt;input/&gt;<BR>&lt;/table&gt;<BR>&lt;/form&gt;<BR>MF中input.parentNode的值为form, 而IE中input.parentNode的值为空节点</P>
<P>MF中节点没有removeNode方法，必须使用如下方法 node.parentNode.removeChild(node)</P>
<P>11.const 问题<BR>(1)现有问题:<BR>在 IE 中不能使用 const 关键字。如 const constVar = 32; 在IE中这是语法错误。<BR>(2)解决方法:<BR>不使用 const ，以 var 代替。</P>
<P>12. body 对象<BR>MF的body在body标签没有被浏览器完全读入之前就存在，而IE则必须在body完全被读入之后才存在</P>
<P>13. url encoding<BR>在js中如果书写url就直接写&不要写&例如var url = ‘xx.jsp?objectName=xx&objectEvent=xxx’;<BR>frm.action = url那么很有可能url不会被正常显示以至于参数没有正确的传到服务器<BR>一般会服务器报错参数没有找到<BR>当然如果是在tpl中例外，因为tpl中符合xml规范，要求&书写为&<BR>一般MF无法识别js中的&</P>
<P>14. nodeName 和 tagName 问题<BR>(1)现有问题：<BR>在MF中，所有节点均有 nodeName 值，但 textNode 没有 tagName 值。在 IE 中，nodeName 的使用好象<BR>有问题（具体情况没有测试，但我的IE已经死了好几次）。<BR>(2)解决方法：<BR>使用 tagName，但应检测其是否为空。</P>
<P>15. 元素属性<BR>IE下 input.type属性为只读，但是MF下可以修改<BR></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=378" /> 
	  <id>http://www.openx.cn/default.asp?id=378</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[推荐一个HTML编辑器]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-10-09T16:50:45+08:00</updated>
	  <published>2006-10-09T16:50:45+08:00</published>
		  <summary type="html"><![CDATA[<P><STRONG>TinyMCE 2.0.6.1</STRONG></P>
<P>不错加载速度挺快,设置简单.</P>
<P>原版:http://prdownloads.sourceforge.net/tinymce/tinymce_2_0_6_1.zip?download</P>
<P>我修改了点点以方便通过脚本调用编辑器内的内容,方便结合Ajax使用.</P>
<P>Cxty修改版:http://www.openx.cn/down.asp?downID=19&action=Url_1</P>
<H3>tinyMCE.Cxty_ReHTML(form_element_name);</H3>
<P>返回编辑器内HTML.</P>
<P>
<TABLE cellSpacing=0 cellPadding=4 border=1>
<THEAD>
<TR>
<TD colSpan=2>Parameters:</TD></TR></THEAD>
<TBODY>
<TR>
<TD>form_element_name</TD>
<TD>表单中的textarea名称.</TD></TR></TBODY></TABLE></P>
<P>Returns: 返回编辑器内HTML. </P>
<P>&nbsp;</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=377" /> 
	  <id>http://www.openx.cn/default.asp?id=377</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[启用IIS的Gzip压缩功能]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-10-09T15:29:30+08:00</updated>
	  <published>2006-10-09T15:29:30+08:00</published>
		  <summary type="html"><![CDATA[<P>现代的浏览器IE6和Firefox都支持客户端Gzip，也就是说，在服务器上的网页，传输之前，先使用Gzip压缩再传输给客户端，客户端接收之后由浏览器解压显示，这样虽然稍微占用了一些服务器和客户端的CPU，但是换来的是更高的带宽利用率。对于纯文本来讲，压缩率是相当可观的。如果每个用户节约50%的带宽，那么你租用来的那点带宽就可以服务多一倍的客户了。</P>
<P>IIS6已经内建了Gzip压缩的支持，可惜，没有设置更好的管理界面。所以要打开这个选项，还要费些功夫。</P>
<P>首先，如果你需要压缩静态文件（HTML），需要在硬盘上建一个目录，并给它“IUSR_机器名”这个用户的写权限。如果压缩动态文件（PHP，asp，aspx）就不需要了，因为它的页面是每次都动态生成的，压缩完就放弃。然后在IIS管理器中，“网站”上面右键－属性，不是下面的某个站点，而是整个网站。进入“服务”标签，选上启用动态内容压缩，静态内容压缩。</P>
<P>然后选中网站下面那个服务器扩展，新建一个服务器扩展。名字无所谓，下面的添加文件的路径是：</P>
<P>c:\windows\system32\inetsrv\gzip.dll，然后启用这个扩展。</P>
<P>这时候静态内容是可以压缩的，但是对于动态内容，aspx文件却不在压缩范围内。因为默认的可压缩文件并没有这个扩展名。而管理界面中你又找不到可以增加扩展名的地方，这时候只能去修改它的配置文件了。</P>
<P>在c:\windows\system32\inetsrv\下面有个MetaBase.xml文件，可以用记事本打开，找到IIsCompressionScheme，有三个相同名字的段，分别是deflate,gzip,Parameters，第三段不用管它，前两段有基本相同的参数，在这两段的参数HcScriptFileExtensions下面都加上一行aspx，如果你有其它的动态程序要压缩，也加在这里。HcDynamicCompressionLevel改成9，（0－10，9是性价比最高的一个）。</P>
<P>然后需要重启一下IIS服务，就可以体会到压缩后的速度了。不过通常可能不会有太明显的感觉，可以用<A href="http://www.port80software.com/tools/compresscheck.asp">http://www.port80software.com/tools/compresscheck.asp</A>这个页面来检查你的网页是否压缩过了，以及压缩比和加快的速度。整个过程对CPU的占用基本上感觉不出来。</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=376" /> 
	  <id>http://www.openx.cn/default.asp?id=376</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[设计师，你为什么经不起质疑？]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-10-09T11:03:04+08:00</updated>
	  <published>2006-10-09T11:03:04+08:00</published>
		  <summary type="html"><![CDATA[<P minmax_bound="true">作者：邱登科 出处：民营经济报</P>
<P minmax_bound="true">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在斯德哥尔摩蓝色市政大厅，一个颁发诺贝尔奖的地方，伊莱克斯全球工业设计大奖赛的颁奖典礼在这里举行。一个年轻的中国女子作为评委出现在主席台上，分外引人注目。<BR minmax_bound="true">黄蔚已经不是第一次登上如此耀眼的国际舞台，她是首位登上丹麦皇家讲坛的中国设计师，也是将国际设计管理理念引入中国的第一人。她这次出现在广州的身份是“红棉奖”-2006中国原创产品设计大赛评委会主席。“红棉奖”已经被业界公认为中国原创产品设计的最高奖项，作品征集和评选工作在她的领导下正紧张有序地展开。<BR minmax_bound="true">评奖间隙接受采访，对黄蔚来说是一件放松神经的事，所以她的设计管理理念在谈笑间就已经被演绎得淋漓尽致。</P>
<P minmax_bound="true">“设计，绝不是简单的美化”</P>
<P minmax_bound="true">“不管是专业的设计公司还是大型企业的设计部门，在甲方（项目委托方）或老板（另一种意义上的甲方）面前，往往经不起质疑，一质疑就往回缩，” 黄蔚对当下设计行业的抨击相当直接。<BR minmax_bound="true">设计师，你们为什么不能坚持？为什么如此不堪质疑？<BR minmax_bound="true">黄蔚一语道出了个中的秘密：“他们只会简单地把二维变成三维，他们说不出设计背后的故事。”<BR minmax_bound="true">在黄蔚看来，设计行业普遍缺失的是与甲方对话的本钱，他们没有能力去了解甲方真正的意图，他们不能切中要害的表达甲方希望表达的内涵，他们最终只能做一些表面的功夫。<BR minmax_bound="true">“看看这个茶壶，” 黄蔚随手拿起这家五星级宾馆茶厅里的一个茶壶，“看看这上面的花纹和图案，有必要吗？或者有，或者没有，设计师本人也说不出其中的所以然，当然不能说服甲方去接受了，最后勉强做成了这样的怪物。”<BR minmax_bound="true">这种现状让本来在设计界声誉雀起的黄蔚毅然改变了继续做一个设计师的想法，决定从设计管理入手来优化整个设计队伍和设计行业。于是便有了中国第一家设计管理公司——上海桥中设计咨询管理有限公司。</P>
<P minmax_bound="true">“差距在于延续性”</P>
<P minmax_bound="true">“我们不缺有灵感的家伙，披着长发故作深沉的设计师比比皆是。我们缺的是一种延续性。国产手机与国际大品牌之间的差距在于一种延续性，我们可能偶然能推出一款让人耳目一新的产品，而诺基亚的产品每一款都有来历和去路，每一个系列都有源源不断的替代产品，这种差距源于对设计产业的整体把握，也就是我们所执著的设计管理，” 黄蔚把她的工作提升到了整体产业水平的高度。<BR minmax_bound="true">黄蔚还直言不讳地表示，目前的中国设计行业是一个没有大师的时代。要造就出色的设计师，需要更多的时间的积累，但这种积累绝不是简单的叠加，而是需要一个个鲜活的案例来支撑。设计师们在创造设计的故事，这些故事能否像史诗那样传唱下去，那就要看设计师们能否从“灵机一动”中脱胎换骨，成为能够扎扎实实延续下去的历史。<BR minmax_bound="true">“红棉奖”生逢其时</P>
<P minmax_bound="true">黄蔚非常欣赏广州市政府能够有眼光举办广州国际设计周并进行“红棉奖”-2006中国原创产品设计大赛。<BR minmax_bound="true">黄蔚认为，目前以广州为代表的珠三角地区非常需要通过设计来提升整个制造业的自主创新水平，不能再停留在以简单的加工业水平上了。<BR minmax_bound="true">她还认为，目前珠三角地区的设计水平与上海和北京之间，开始有了一定的差距。她举例，日产汽车将最大的生产基地放在了广州，却把研发基地放在了上海，其中的主要原因是目前珠三角的设计能力不足以支撑其产业的后续发展。尤其是国际化水平，在上海，相当多的设计团队采用中外合壁的运作模式，而在珠三角，这种团队却是凤毛麟角。<BR minmax_bound="true">她表示非常高兴能够被主办方邀请担任“红棉奖”评委会主席，她希望通过这一奖项推动整个珠三角产业自主创新意识，迅速接轨国际化的设计产业理念。</P>
<P minmax_bound="true" lwg="ImageManager">附：黄蔚侧记<BR minmax_bound="true">作为国内设计界的知名人士，黄蔚女士通过在公共论坛、研讨会上发表演讲以及在高校开办讲座等活动建立了良好的业界声誉。同时她还组织和领导翻译众多设计研究案例成果，在专业领域发表过多篇论文。 <BR minmax_bound="true">她的设计实践能力在海尔集团设计中心(QHG)工作的期间初显锋芒：经选拔她东赴日本GK设计集团学习设计方法及管理，并将其运用于多种海尔产品的开发设计中。此后她受雇于美国通用电气GE/FITCH设计顾问有限公司，成为中国区的市场总监。任职期间，她获得了融合市场理解和设计专业知识的全新理念，并且积累了广泛而深厚的行业资源。<BR minmax_bound="true"></P>
<P align=center minmax_bound="true" lwg="ImageManager">[img]http://www.chinaui.com/manage/UpLoadFolder/Images/2006/0609/0929/shejishi.jpg[/img]</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=375" /> 
	  <id>http://www.openx.cn/default.asp?id=375</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[一个好玩又简单的脚本]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-10-09T09:39:21+08:00</updated>
	  <published>2006-10-09T09:39:21+08:00</published>
		  <summary type="html"><![CDATA[<P>javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0);</P>
<P>吧上面的代码复制粘贴在URL上,看看发生了什么</P>
<P>看原文:http://www.digg.com/programming/Funky_JavaScript_works_on_all_websites_even_digg</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=374" /> 
	  <id>http://www.openx.cn/default.asp?id=374</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[国庆,看了一天连续剧~哈哈]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-10-01T21:58:04+08:00</updated>
	  <published>2006-10-01T21:58:04+08:00</published>
		  <summary type="html"><![CDATA[<P>今天国庆,我外公生日.</P>
<P>在舅舅家给外公祝寿.结果在那看了一天连续剧~连续看了不知道多少集.这才刚刚才回到家,哈哈!过瘾啊~好久没这么看的了后后.</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=373" /> 
	  <id>http://www.openx.cn/default.asp?id=373</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[周杰伦MV中的戒指。Justin Davis皇冠戒指，非一般的戒指，绝对让你心动.]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-30T14:46:38+08:00</updated>
	  <published>2006-09-30T14:46:38+08:00</published>
		  <summary type="html"><![CDATA[<P>[img]http://xmz.3322.org/non-cgi/usr/5/5_375_27.jpg[/img]</P>
<P>[img]http://tw.image.bid.yahoo.com/users/1/9/0/9/guitar_hide21-img600x533-1130246613sv400017-11.jpg[/img]</P>
<P>[img]http://tw.image.bid.yahoo.com/users/1/9/0/9/guitar_hide21-img600x559-1141751734sv4000271-4.jpg[/img]</P>
<P><STRONG><FONT size=4>周杰倫《依然范特西》--夜的第七章MV關鍵破案戒。</FONT></STRONG></P>
<P>[img]http://tw.image.bid.yahoo.com/users/1/9/0/9/guitar_hide21-img600x329-1158163579__40000611-7.jpg[/img]</P>
<P>[img]http://i53.ac.tpe.yahoo.com/users/1/9/0/9/guitar_hide21-img600x600-1158163580__4000101-10.jpg[/img]</P>
<P>[img]http://tw.image.bid.yahoo.com/users/1/9/0/9/guitar_hide21-img463x600-1146211908____0295-11.jpg[/img]</P>
<P>[img]http://tw.image.bid.yahoo.com/users/1/9/0/9/guitar_hide21-img600x591-1146211908____02471-9.jpg[/img]</P>
<P>[img]http://tw.image.bid.yahoo.com/users/1/9/0/9/guitar_hide21-img580x517-1146211909____0248-6.jpg[/img]</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=372" /> 
	  <id>http://www.openx.cn/default.asp?id=372</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[TalkMe!火热内测中!]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=8" label="TalkMe" /> 
	  <updated>2006-09-29T13:57:16+08:00</updated>
	  <published>2006-09-29T13:57:16+08:00</published>
		  <summary type="html"><![CDATA[<DIV class=EC_RTE><A href="http://www.talkme.cn/Member/index.html" target=_blank>[img]http://www.talkme.cn/image/www.talkme.cnBETA.png[/img]</A></DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE>期待已久的TalkMe终于出炉啦.</DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE>欢迎大家登陆TalkMe进行测试.测试功能全部开放.</DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE>测试时间:<FONT color=#ff0000>2006年9月28日 00:00 到 2006年10 月31日 00:00</FONT></DIV>
<DIV class=EC_RTE><FONT color=#ff0000></FONT>&nbsp;</DIV>
<DIV class=EC_RTE><FONT color=#ff0000><FONT color=#000000>TalkMe:</FONT><A href="http://www.talkme.cn/" target=_blank>http://www.talkme.cn</A></FONT></DIV>
<DIV class=EC_RTE><FONT color=#ff0000></FONT>&nbsp;</DIV>
<DIV class=EC_RTE><FONT color=#ff0000><FONT color=#000000>客户端:</FONT><A href="http://www.talkme.cn/download/TalkMe1.0(BETA).exe" target=_blank><FONT color=#ff0033>http://www.talkme.cn/download/TalkMe1.0(BETA).exe</FONT></A></FONT></DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE>功能不断完善,完全绿色完全免费,占用资源小(客户端才8M,最小 700K)</DIV>
<DIV class=EC_RTE><IMG height=2 src="http://graphics.hotmail.com/greypixel.gif" width="100%" vspace=9></DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE>由于个人开发,时间跟精力上的安排,托了这么久.呼呼,实在是不好意思,实在是对不住一直以来都这么关注TalkMe的朋友们.</DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE>是你们的关注跟询问一次又一次然起了我继续开发TalkMe的激情 .</DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE>在这里我代表我个人还有TalkMe再一次的感谢大家.</DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE>我的文笔不好呵呵,也说不出啥啥啥的.</DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE>刚刚赶时间把第一期弄好,还有好多不足请大家多多发现提出,可以发邮件,或者发在论坛里面.</DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE>另外在第二期开发中将会有两个朋友加入开发,</DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE>他们是:<FONT color=#ff0000>Sanmoon(QQ:22866755),林子 (QQ:9683884)</FONT></DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE>很感谢他们两的支持呵呵.一起开发我相信TalkMe会变得更加强大完善的呵呵.</DIV>
<DIV class=EC_RTE>&nbsp;</DIV>
<DIV class=EC_RTE><IMG height=2 src="http://graphics.hotmail.com/greypixel.gif" width="100%" vspace=9></DIV>
<DIV class=EC_RTE>好了来吧,<A href="http://www.talkme.cn/" target=_blank><FONT face="Arial &#13;&#10;Black, Geneva, Arial, Sans-serif" color=#ff0000 size=4>www.talkme.cn</FONT></A> 欢迎大家.</DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=371" /> 
	  <id>http://www.openx.cn/default.asp?id=371</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[你注意过你的指甲么？]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-28T09:34:02+08:00</updated>
	  <published>2006-09-28T09:34:02+08:00</published>
		  <summary type="html"><![CDATA[<SPAN style="FONT-SIZE: 12px">（一）什么是半月痕 <BR><BR>在指甲下方五分之一处，出现一条白色弧形的痕迹，这就是半月痕，也有人称之为小太阳。 <BR><BR>指甲半月痕是阴阳经脉界线，是人体精气的代表，故也称为健康圈。 <BR><BR>半月痕的发育，要受营养、环境、身体素质的影响，当消化吸收功能久佳时， <BR><BR>半月痕就会模糊、减少，甚至消失。 <BR><BR>半月痕的状况，显示出人体健康状况的信息。 <BR><BR>（二）半月痕的作用 <BR><BR>中医学说： <BR><BR>气不耗归于肝为血，血不耗归于肾为精，精不耗归于骨为髓。 <BR><BR>这就是精髓的由来。精髓也是元气的所在。半月痕由于显示的信息正是精气的状况，可见其重要性。 <BR><BR>元气的作用： <BR><BR>1、濡养全身五脏六腑。 <BR><BR>2、推动五脏六腑气血的正常运行。 <BR><BR>3、抗御外邪（免疫功能）。 <BR><BR>4、长寿抗衰老物质。 <BR><BR>5、遗传物质。 <BR><BR>中医有句话：精足人壮，精弱人病，精少人老，精尽人死。 <BR><BR>由此可见，精髓元气的重要。在日常生活里，及时恢复精气神，保养好身体， <BR><BR>有利于我们的身体健康。当精力不足时，重要的补充首先是蛋白质。 <BR><BR>中医学说："精不足补之以味。" <BR><BR>这就是说，要补充蛋白质。优质蛋白质以中性为好，如奶类、蛋类、豆类、鱼类、黑色性食物（逢黑补肾）、种籽性食物、胚胎性食物等。坚持一个月以后，就可以看到半月痕出现了，显示精力得到一定的恢复。</SPAN>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=370" /> 
	  <id>http://www.openx.cn/default.asp?id=370</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[WEB2.0数据流少了,客户端内存占了]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-09-26T15:30:10+08:00</updated>
	  <published>2006-09-26T15:30:10+08:00</published>
		  <summary type="html"><![CDATA[<P>不知道搞web的同行有没有注意到,2.0的到来(其实都很早的技术了,可以话说无刷新聊天室的年代去了).</P>
<P>javascript的广泛应用,从代码中就可以看出好多开发人员没有合理的释放内存.</P>
<P>就拿webMSN跟webQQ做比较.</P>
<P>WEBMSN做的实在没话说,就是登陆时候有点慢,稳定跟内存使用情况都不错,而且界面跟桌面版的很接近,感觉就象用桌面版的差不多.</P>
<P>WEBQQ就不行了虽然登陆很快,但是有没有发现他一直在吃内存哦.</P>
<P>以下是WEBMSN跟WEBQQ使用的内存情况</P>
<P>[img]http://x.openx.cn/myfile/cxty/图片/webmsn.bmp[/img]</P>
<P>WEBMSN</P>
<P>[img]http://x.openx.cn/myfile/cxty/图片/webqq.bmp[/img]</P>
<P>WEBQQ</P>
<P>&nbsp;</P>
<P>很明显WEBMSN登陆列表后基本没动内存了(内存涨停在48928K)</P>
<P>WEBQQ就不一样了每秒都在吃内存(登陆列表后从31xxxK开始就不断增加了涨幅60K每秒),在开这不倒一小时估计内存就都吃光咯~</P>
<P>&nbsp;</P>
<P>PS:</P>
<P>刚刚光顾的给别人做测试了呵呵~</P>
<P>弄了一个自己TalkMe的内存使用情况</P>
<P>[img]http://x.openx.cn/myfile/cxty/图片/talkme.bmp[/img]</P>
<P>TalkMe的WEB端.</P>
<P>不错吧,才29091K后后,后面就涨停咯.</P>
<P>客户端我在Delphi代码里面有回收内存机制,基本会在8xxxK跟7xxK之间波动.活活!</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=369" /> 
	  <id>http://www.openx.cn/default.asp?id=369</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[我捏你的头!这个很可爱]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-26T13:39:17+08:00</updated>
	  <published>2006-09-26T13:39:17+08:00</published>
		  <summary type="html"><![CDATA[<P>发现一个相册很可爱</P>
<P>[img]http://static.flickr.com/89/221592877_df0f77c62b_t.jpg[/img]</P>
<P>[img]http://static.flickr.com/86/215824042_04129f330f_t.jpg[/img]</P>
<P>[img]http://static.flickr.com/60/213999579_f0a34b31b7_t.jpg[/img]</P>
<P>相册:http://www.flickr.com/groups/isquishyourhead/pool/</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=368" /> 
	  <id>http://www.openx.cn/default.asp?id=368</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[超级劲爆，1.6亿像素巨无霸级数码相机登场[转]]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-23T18:45:24+08:00</updated>
	  <published>2006-09-23T18:45:24+08:00</published>
		  <summary type="html"><![CDATA[<P>瑞士的seitz公司的巨无霸6x17数码相机就能达到这样的效果。该款相机明年初就会上市，售价27000至29000欧元。<BR></P>
<P>[img]http://www.beareyes.com.cn/2/lib/200609/21/273/1.JPG[/img]</P>
<P>[img]http://www.beareyes.com.cn/2/lib/200609/21/273/2.JPG[/img]</P>
<P>6x17可以拍出1.6亿像素的照片，分辨率21250X7500，48bit色深。由于采用类似扫描的数码后背技术，拍摄最高分辨率的图像需要耗时1秒，所以照片中那样的手持拍摄肯定不可能了。而该款相机的最高拍摄速度为1/20000秒。可以使用施奈德，Rodenstock，林哈夫，富士等名厂的大画幅镜头。由于一张最大分辨率未压缩图片体积达950MB，此相机的存储系统直接用了一台苹果Mac Mini，采用千兆网络连接。</P>
<P>[img]http://www.beareyes.com.cn/2/lib/200609/21/273/3.JPG[/img]</P>
<P>6x17肯定不是给业余客户使用的，对于专业摄影师来说，绝对是件利器。Seitz公司将在下周的Photokina展会上展出6x17.</P>
<P>&nbsp;</P>
<P>来源:http://bbs.tech.tom.com/forum/view_thread.php?forumid=148&threadid=47951</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=367" /> 
	  <id>http://www.openx.cn/default.asp?id=367</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[用USB接口直冲电池]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-23T18:31:29+08:00</updated>
	  <published>2006-09-23T18:31:29+08:00</published>
		  <summary type="html"><![CDATA[<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/1.jpg[/img]</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果家有电脑，有可充电的电池，那么可以扔掉充电器了。<BR><BR>　　Moixa公司日前推出一款名为“USBCELL”，从字面意思理解也跟USB有密切关系，没错，就是用USB通过接口充电。<BR><BR>　　如果你有台式电脑、笔记本、Xbox 360 或者 车载USB充电器，那么随时都可以给它充电。<BR><BR>　　一对两颗的售价是24美元，具体电池的容量和充电时间不详。</P>
<P>这个创意实在不错~省了充电器了~哈哈~不知道这样的电池寿命是怎么样的~一个24美元也就是近200大洋的咯哦~后后~<BR></P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/2.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/3.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/4.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/5.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/7.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/8.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/9.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/10.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/11.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/12.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/13.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/14.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/15.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/16.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/17.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/18.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/19.jpg[/img]</P>
<P>[img]http://x.openx.cn/myfile/cxty/%CD%BC%C6%AC/USB%B5%E7%B3%D8/20.jpg[/img]</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=366" /> 
	  <id>http://www.openx.cn/default.asp?id=366</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[ChinaUI不会又被黑了吧~]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-22T18:16:55+08:00</updated>
	  <published>2006-09-22T18:16:55+08:00</published>
		  <summary type="html"><![CDATA[<P>刚刚还看的好好的这下可好刷新一下砂都没了!</P>
<P>&nbsp;</P>
<P>又 "您未被授权查看该页" 呼呼!!!</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=365" /> 
	  <id>http://www.openx.cn/default.asp?id=365</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[不是美工，是设计！！]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-22T16:14:42+08:00</updated>
	  <published>2006-09-22T16:14:42+08:00</published>
		  <summary type="html"><![CDATA[<P>不是美工，是设计！！</P>
<DIV>似乎很多人都爱把从事设计行业的人称为美工，在做兼职的过程中我就听到过很多这样的话，兼职时做的事确实无可厚非，是简简单单的美工工作，虽说听着有些不爽，但我也不说什么了。一直很讨厌把设计说成是美工。</DIV>
<DIV>&nbsp;</DIV>
<DIV>详见:http://blog.sina.com.cn/u/48f239da010004br</DIV>
<DIV>&nbsp;</DIV>
<DIV>作者写的不错</DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=364" /> 
	  <id>http://www.openx.cn/default.asp?id=364</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[哇靠~居然快国庆了!]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-20T21:45:31+08:00</updated>
	  <published>2006-09-20T21:45:31+08:00</published>
		  <summary type="html"><![CDATA[<P>下周过完就国庆啦~呀呀的怎么这么快哇!</P>
<P>国庆再去上海一趟.嘿嘿~</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=363" /> 
	  <id>http://www.openx.cn/default.asp?id=363</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[使用Atlas简化客户端Ajax编程]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-20T16:22:30+08:00</updated>
	  <published>2006-09-20T16:22:30+08:00</published>
		  <summary type="html"><![CDATA[<DIV>
<P align=left>微软公司针对AJAX开发了一种称为Atlas的新技术，它允许浏览器随时随意紧密的与ASP.NET进行集成。在此专栏中，我们将阐述Atlas的构架已便于用户在开发工作中对Atlas有更好的理解。</P>
<P align=left><STRONG>什么是</STRONG><STRONG>Atlas</STRONG><STRONG>？</STRONG><STRONG></STRONG></P>
<P align=left>微软声称Atlas的目标在于服务器上将客户程序脚本集成到ASP.NET，以提供一个全面的开发平台。</P>
<P align=left>Atlas平台包含两部分：客户端部分和服务器部分。对客户端，它具有的特点是：</P>
<UL>
<LI><STRONG></STRONG>面向对象相容的Java语言API。<STRONG></STRONG>具有.NET开发经验的开发人员非常熟悉其面向对象设计。 
<LI>自动浏览器兼容。理论上可运行多个浏览器时不需要专门的代码。 
<LI>客户端程序API和组件提供丰富的用户界面特点，例如拖拽动作。用户可以将这些特征添加到HTML控制器而只需要很少甚至不需要任何代码。 
<LI>客户端程序开发的函数声明模块与ASP.NET服务控制器的函数声明语法相似。 </LI></UL>
<P align=left>Atlas通过与服务器层的综合进一步扩展了AJAX。这种扩展包括：利用网络服务和ASP.NET网络服务器自动控制和产生Atlas客户端必需的脚本程序。最后Visual Studio IDE可能被应用到基于Atlas的开发流程中。</P>
<P align=left><FONT class=contentText><STRONG>JavaScript</STRONG></FONT><STRONG>是关键</STRONG></P>
<P align=left>Atlas的一个关键目标就是简化客户端编程。<FONT class=contentText>JavaScript</FONT>促进了网络客户开发标准；但是，它也为用其他语言熟练地构建鲁棒应用程序构成了障碍。</P>
<P align=left>Atlas包含了一组<FONT class=contentText>JavaScript</FONT>库，它能够提供创建基于客户端网络应用程序所有必需的东西。微软将这些库描述为ASP.NET体系的一个子集。这个方法在开发者手中隐藏了许多复杂的东西。</P>
<P align=left>API使得开发人员很容易利用脚本库，这些脚本库采用下面所描述的层次或服务的分层方法构建网络客户端应用程序。</P>
<UL>
<LI><STRONG>浏览器兼容层：</STRONG>提供了大多数浏览器交叉兼容性并且消除了读写特殊浏览器脚本的必要。 
<LI><STRONG>核心服务：</STRONG>包含Java类，命名空间，事件处理，继承，数据类型，对象连载扩展编程，它使得人们非常熟悉的.NET开发技术能应用到网络客户端编程。 
<LI><STRONG>基本类库：</STRONG>基本类库包含了诸如字符串构造器，编译器，计时器和追踪器等基本组件。 
<LI><STRONG>网络层：</STRONG>促进HTTP与AJAX方法的通信。管理异步远程调用并且通过仅仅几行脚本代码隐藏复杂性。 
<LI><STRONG>用户界面层：</STRONG>包含客户端诸如动作，用户界面组件和数据绑定性能 
<LI><STRONG>控制层：</STRONG>这些对于网络客户端开发的特殊的Atlas控制可能有：数据限制，对照，限制Atlas动作（由用户界面层提供）诸如拖拽等等。这些控制包括自动完成文本包，数据限制控制和导航控制。 
<LI><STRONG>声明程序：</STRONG>功能强大的声明程序模块促进自定义Atlas组件的生成。它遵循与开发ASP.NET服务器控制的相同的方法。 </LI></UL>
<P>在服务器端，提供具有ASP.NET特征的诸如通过描述、角色、成员资格的安全服务和个性化和全球化的网络服务。Atlas包含众多类似于ASP.NET服务的控制器，通过这些控制器可以发送所有必需的客户端Atlas Java代码。另外，Atlas服务控制器也可利用Java产生Atlas响应。<BR><BR></P>
<P><STRONG>下载Atlas安装程序</STRONG></P>
<P>Atlas平台是一个具有很多特点的综合性开发环境，对于新手来说，学习它可能有些费力。为了掌握其内部构架到外部封装，最好的办法就是练习使用示例代码或编写自己的代码。第一步工作就是下载并运行Atlas安装文件。</P>
<P>安装Atlas就和下载并运行windows安装文件（.msi文件）一样简单。正如Visual Studio模板安装一样，在安装Atlas时将会提示是否需要Atlas对IIS实例的支持功能。默认情况下，Atlas被安装在下面的路径中：</P>
<P>C:\Program Files\Microsoft ASP.NET\Atlas\v2.0.50727\Atlas</P>
<P>Atlas集被命名为Microsoft.Web.Atlas.dll,它包含了由Atlas客户端脚本库组成的客户端程序文件。如果使用Visual Studio并且已经安装了这些模板，则Atlas的组件可以通过客户端程序IDE的IntelliSense得到。</P>
<P>让我们回顾一下在上周的文章中使用Atlas平台重写的AJAX示例。脚本程序在A列表中是这样的，它允许用户通过文本框插入文本，并且允许单击一个链接来显示在标准SQL Server Northwind数据库中匹配的数据。</P>
<P>本页要点：</P>
<UL>
<LI>Atlas脚本管理器控制驱动Atlas处理过程。它提供页面开发和控件开发的功能，并且它提供部分刷新，增长型更新等其他的功能。它的EnablePartialRendering属性允许客户指派是否一部分页面堆叠任务。 
<LI>AtlasUpdatePanel控制器允许客户堆叠部分页面，并且在ScriptManager控制器中被激活。包含在ContentTemplate元素中的数据将会被显示出来。Trigger元素指定什么原因引发堆叠事件。Trigger元素是与控制的事件联系在一起的，当在实例中控制值的改变引发事件的变化时（如选中链接），Trigger也会产生相应变化。 
<LI>SQLDataSource元素用于定义数据源。它在单击链接事件中被引用并且用于GridView控制器组装。 </LI></UL>
<P align=left><STRONG>Web</STRONG><STRONG>开发的又一方法</STRONG><STRONG></STRONG></P>
<P align=left>Atlas是微软公司进入AJAX waters领域的结果。它为使用AJAX的核心特征结合ASP.NET框架设计建立功能强大的Web基于客户端应用程序提供了每一个必需的东西。当不必需要ASP.NET的时候，也很容易使用ASP.NET服务控制和Web服务对用户的操作做出响应。下一周，我们将进一步讲解可利用的不同Atlas组件。</P></DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=362" /> 
	  <id>http://www.openx.cn/default.asp?id=362</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[9.18勿忘国耻强我中华]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-18T13:49:49+08:00</updated>
	  <published>2006-09-18T13:49:49+08:00</published>
		  <summary type="html"><![CDATA[<P>[img]http://photo.bababian.com/20060918/AC0DBA972808B71531D9F0604DAB274C.jpg[/img]</P>
<P>&nbsp;</P>
<P>今天是9月18日.</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=361" /> 
	  <id>http://www.openx.cn/default.asp?id=361</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[挖到 head 的一些东西~留个纪念]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-09-13T16:59:07+08:00</updated>
	  <published>2006-09-13T16:59:07+08:00</published>
		  <summary type="html"><![CDATA[<P>head区是指首页HTML代码的&lt;head&gt;和&lt;/head&gt;之间的内容。 <BR>必须加入的标签</P>
<P>1.公司版权注释<BR>&lt;!--- The site is designed by Cxty,Inc 06/2000 ---&gt; </P>
<P>2.网页显示字符集<BR>简体中文：&lt;META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312"&gt;<BR>繁体中文：&lt;META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=BIG5"&gt;<BR>英 语：&lt;META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"&gt;</P>
<P>3.网页制作者信息<BR>&lt;META name="author" content="<a href="http://www.openx.cn/mailto:cxty@msn.com">cxty@msn.com</A>"&gt;</P>
<P>4.网站简介<BR>&lt;META NAME="DESCRIPTION" CONTENT="xxxxxxxxxxxxxxxxxxxxxxxxxx"&gt;</P>
<P>5.搜索关键字<BR>&lt;META NAME="keywords" CONTENT="xxxx,xxxx,xxx,xxxxx,xxxx,"&gt; </P>
<P>6.网页的css规范<BR>&lt;LINK href="style/style.css" rel="stylesheet" type="text/css"&gt;<BR>(参见目录及命名规范)</P>
<P>7.网页标题<BR>&lt;title&gt;xxxxxxxxxxxxxxxxxx&lt;/title&gt;</P>
<P>.可以选择加入的标签</P>
<P>1.设定网页的到期时间。一旦网页过期，必须到服务器上重新调阅。<BR>&lt;META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"&gt;</P>
<P>2.禁止浏览器从本地机的缓存中调阅页面内容。<BR>&lt;META HTTP-EQUIV="Pragma" CONTENT="no-cache"&gt; </P>
<P>3.用来防止别人在框架里调用你的页面。<BR>&lt;META HTTP-EQUIV="Window-target" CONTENT="_top"&gt;</P>
<P>4.自动跳转。<BR>&lt;META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://www.openx.cn"&gt;<BR>5指时间停留5秒。</P>
<P>5.网页搜索机器人向导.用来告诉搜索机器人哪些页面需要索引，哪些页面不需要索引。<BR>&lt;META NAME="robots" CONTENT="none"&gt;<BR>CONTENT的参数有all,none,index,noindex,follow,nofollow。默认是all。</P>
<P>6.收藏夹图标<BR>&lt;link rel = "Shortcut Icon" href="favicon.ico"&gt;</P>
<P>所有的javascript的调用尽量采取外部调用.<BR>&lt;SCRIPT LANGUAGE="JavaScript" SRC="script/xxxxx.js"&gt;&lt;/SCRIPT&gt;</P>
<P>附&lt;body&gt;标签：<BR>&lt;body&gt;标签不属于head区，这里强调一下，为了保证浏览器的兼容性，必须设置页面背景&lt;body bgcolor="#FFFFFF"&gt; </P>
<P><BR>&nbsp;</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=360" /> 
	  <id>http://www.openx.cn/default.asp?id=360</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[感冒各阶段食疗]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-13T09:13:44+08:00</updated>
	  <published>2006-09-13T09:13:44+08:00</published>
		  <summary type="html"><![CDATA[得了感冒可还没到打针吃药的程度，很多人会自己采用食疗的方法，比如喝点红糖姜汤、白萝卜汁或鸡汤。但这些方法真的有效吗，在感冒的不同阶段，所吃的食物是否也应该不同呢？&nbsp;<BR><BR>　　感冒时最关键的是“按体质和时间吃”，因此食疗法也应该随着病程而转变，有些食物是适合平时调养的，但碰上发炎或已染上流行性感冒时，最好别吃。&nbsp;<BR><BR>　　<STRONG>预防感冒</STRONG><BR><BR>　　白萝卜、茶白萝卜具有消炎、杀菌及利尿功效，是很好的天然消炎药。日常生活中，将生萝卜汁加点蜂蜜，喝下去后可以缓解喉咙肿痛。最近，美国哈佛大学在一项研究中还发现，两星期内每天喝5杯红茶或绿茶的人，身体的免疫能力会大大增强，比起未饮茶者，可以多赶走10倍以上的感冒和流感病毒。&nbsp;<BR><BR>　　<STRONG>感冒初期</STRONG>&nbsp;<BR><BR>　　红糖姜汤：姜中的姜辣素、姜油酮可以发汗，赶走体内蓄积的热气，尤其是水分较少的老姜，促进血液循环效果更好，添加红糖则可补充热量。但姜汤只适用于外感风寒，得了热伤风的人，则不适合饮用。而且，姜会促进血液循环，若有发炎、出血情形，也不要吃。提醒：警惕感冒治疗误区&nbsp;<BR><BR>　　<STRONG>发炎或染上流行性感冒</STRONG><BR><BR>　　一般出现咽喉肿痛、流鼻涕或痰液黄稠、发热高烧等炎症反应时，不宜吃补药，如人参、当归、黄芪及麻油等，以免火上加油，让病情更重。&nbsp;<BR><BR>　　中医认为，性寒的水果如西瓜、梨等具有解热作用，可以用来“熄火”。此外，中医古籍中记载的葱豉汤，除可缓解头痛鼻塞，对于发烧的人也有帮助。&nbsp;<BR><BR>　　做法是取青葱葱白部分，加上豆豉煮汤。葱白具有发汗功效，其中的苹果酸、磷酸等会刺激血液循环，发汗的效果比姜汤更快；发酵的豆豉则可补充体内的蛋白质。&nbsp;<BR><BR>　　流行性感冒饮食五原则：(1)选择容易消化的流质饮食如菜汤、稀粥、蛋汤、蛋羹、牛奶等；(2)饮食宜清淡少油腻，既满足营养的需要，又能增进食欲。可供给白米粥、小米粥、小豆粥、配合甜酱菜、大头菜、榨菜或豆腐乳等小菜，以清淡、爽口为宜；(3)保证水分的供给，可多喝酸性果汁如山楂汁、猕猴桃汁、红枣汁、鲜橙汁、西瓜汁等以促进胃液分泌，增进食欲；(4)多食含维生素C、E及红色的食物，如西红柿、苹果、葡萄、枣、草莓、甜菜、桔子、西瓜及牛奶、鸡蛋等。预防感冒的发生；(5)饮食宜少量多餐。如退烧食欲较好后，可改为半流质饮食，如面片汤、清鸡汤龙须面、小馄饨、菜泥粥，肉松粥、肝泥粥、蛋花粥。<BR><BR>　　提醒：但如果得了流行性感冒就要特别注意了，患者往往怕冷、发热比普通感冒厉害得多，病程很长，严重时会导致并发症。儿童患流感时，除服用小儿感冒冲剂，还应加服清热解毒口服液。&nbsp;<BR><BR>　　<STRONG>关于水果&nbsp;</STRONG><BR><BR>　　感冒期间是否要多吃水果，这也要视个人情况而定。多吃水果可以补充维生素C，但是维生素C是否可以治疗或预防感冒，目前仍有争议。&nbsp;<BR><BR>　　而且果汁或水果多半冰冷，可能会造成支气管收缩，使咳嗽加剧，除了发烧以外，并不适合感冒期间食用。尤其水分多的水果如西瓜、梨等较寒凉，如果有咳嗽、流鼻涕、拉肚子、手脚冰冷等情形，吃了更容易让病情恶化。 <BR><BR>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=359" /> 
	  <id>http://www.openx.cn/default.asp?id=359</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[有“中国特色”的英语]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-12T14:44:34+08:00</updated>
	  <published>2006-09-12T14:44:34+08:00</published>
		  <summary type="html"><![CDATA[<P><IMG alt="exit - Weird DuJun" src="http://static.flickr.com/57/193006000_e54914e4b1_m.jpg"></P>
<P>出口</P>
<P>&nbsp; <IMG alt="Stay away - Weird DuJun" src="http://static.flickr.com/78/192663708_e06d6ad61f_m.jpg"></P>
<P>请勿靠近</P>
<P><IMG alt="god please - Weird DuJun" src="http://static.flickr.com/21/96290871_e26228da6b_m.jpg"></P>
<P>主义安全</P>
<P>&nbsp; <IMG alt="god pleases again - Weird DuJun" src="http://static.flickr.com/21/98624927_e96bd0ea70_m.jpg"></P>
<P>呵呵~~~~</P>
<P><IMG alt="Hero tablet - Weird DuJun" src="http://static.flickr.com/37/81628065_ae670f63ff_m.jpg">&nbsp; <IMG alt="OMG - Weird DuJun" src="http://static.flickr.com/31/50723549_4ce02acc2a_m.jpg"></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=358" /> 
	  <id>http://www.openx.cn/default.asp?id=358</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[ChinaUI还没恢复!呼呼~]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-12T09:11:13+08:00</updated>
	  <published>2006-09-12T09:11:13+08:00</published>
		  <summary type="html"><![CDATA[<P>ChinaUI已经挂了好几天了,可恶无知的黑客,鄙视鄙视!</P>
<P>&nbsp;</P>
<P>希望ChinaUI尽快恢复吧!祈祷!</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=357" /> 
	  <id>http://www.openx.cn/default.asp?id=357</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[劝君戒去十九种不良生活习惯]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-10T15:08:25+08:00</updated>
	  <published>2006-09-10T15:08:25+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp; 1.起床先叠被<BR>&nbsp;&nbsp;&nbsp; 人体本身─也是一个污染源。<BR>&nbsp;&nbsp;&nbsp; 在一夜的睡眠中，人体的皮肤会排出大量的水蒸气，使被子不同程度地受潮。<BR>&nbsp;&nbsp;&nbsp; 人的唿吸和分布全身的毛孔所排出的化学物质有145种，从汗液中蒸发的化学物质有151种。<BR>&nbsp;&nbsp;&nbsp; 被子吸收或吸附水分和气体，如不让其散发出去，就立即叠被，易使被子受潮及受化学物质污染。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 2.不吃早餐<BR>&nbsp;&nbsp;&nbsp; 不吃早餐的人则通常饮食无规律，容易感到疲倦，头晕无力，天长日久就会造成营养不良、贫血、抵抗力降低，并会产生胰、胆结石。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 3.饭后松裤带<BR>&nbsp;&nbsp;&nbsp; 饭后松裤带可使腹腔内压下降，消化器官的活动与韧带的负荷量增加，从而促使肠子蠕动加剧，易发生肠扭转，使人腹胀、腹痛、呕吐，还容易患胃下垂等病。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 4.饭后即睡(应该去散步才对嘛!!!)<BR>&nbsp;&nbsp;&nbsp; 饭后即睡会使大脑的血液流向胃部，由于血压降低，大脑的供氧量也随之减少，造成饭后极度疲倦，易引起心口灼热及消化不良，还会发胖。<BR>&nbsp;&nbsp;&nbsp; 如果血液原已有供应不足的情况，饭后倒下便睡，这种静止不动的状态，极易招致中风。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 5.饱食(八分饱食最佳)<BR>&nbsp;&nbsp;&nbsp; 饱食容易引起记忆力下降，思维迟钝，注意力不集中，应激能力减弱。<BR>&nbsp;&nbsp;&nbsp; 经常饱食，尤其是过饱的晚餐，因热量摄入太多，会使体内脂肪过剩，血脂增高，导致脑动脉粥样硬化。<BR>&nbsp;&nbsp;&nbsp; 还会引起一种叫“纤维芽细胞生长因子”的物质在大脑中数以万倍增长，这是一种促使动脉硬化的蛋白质。<BR>&nbsp;&nbsp;&nbsp; 脑动脉硬化的结果会导致大脑缺氧和缺乏营养，影响脑细胞的新陈代谢。<BR>&nbsp;&nbsp;&nbsp; 经常饱食，还会诱发胆结石、胆囊炎、糖尿病等疾病，使人未老先衰，寿命缩短。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 6.空腹吃糖<BR>&nbsp;&nbsp;&nbsp; 越来越多的証据表明，空腹吃糖的嗜好时间越长，对各种蛋白质吸收的损伤程度越重。<BR>&nbsp;&nbsp;&nbsp; 由于蛋白质是生命活动的基础，因而长期的空腹吃糖，更会影响人体各种正常机能，使人体变得衰弱以致缩短寿命。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 7.吃太咸的食物(吃重口味的朋友请注意了!!!妳无法享受与体会食物本身的美味喔!!)<BR>&nbsp;&nbsp;&nbsp; 钠在人体内滞留，容易形成或加重高血压和心脏病。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 8.留鬍子<BR>&nbsp;&nbsp;&nbsp; 鬍子具有吸附有害物质的性能。<BR>&nbsp;&nbsp;&nbsp; 当人吸气时，被吸附在鬍子上的有害物质就有可能被吸入唿吸道内。<BR>&nbsp;&nbsp;&nbsp; 据对留有鬍子的人吸入的空气成分进行定量分析，发现吸进的空气中含有几十种有害物质，其中包括酚、甲苯、丙酮、异戊问二烯等多种致癌物，留有胡子的人吸入的空气污染指数，是普通空气的4．2倍。<BR>&nbsp;&nbsp;&nbsp; 如果下巴留有鬍子，又留八字鬍，其污染指数可高达7.2倍。<BR>&nbsp;&nbsp;&nbsp; 再加上抽烟等因素，污染指数将高达普通空气的50倍。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 9.跷二郎腿<BR>&nbsp;&nbsp;&nbsp; 跷二郎腿会使腿部血流不畅，影响健康。如果是静脉瘤、关节炎、神经痛、静脉血栓患者，跷腿会使病情更加严重。尤其是腿长的人或孕妇，很容易得静脉血栓。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 10.瞇眼看东西、揉擦眼睛<BR>&nbsp;&nbsp;&nbsp; 瞇眼看东西，眼角易出现鱼尾状皱纹。<BR>&nbsp;&nbsp;&nbsp; 习惯性瞇眼还可使眼肌疲劳、眼花头疼。揉眼时，病菌会由手部传染眼睛，导致发炎、睫毛折断或脱落。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 11.强忍小便(切忌!切忌!)<BR>&nbsp;&nbsp;&nbsp; 强忍小便有可能造成急性膀胱炎，出现尿频、尿疼、小腹胀疼等症状。<BR>&nbsp;&nbsp;&nbsp; 美国科学家发布的一份研究报告指出，有憋尿习惯的人患膀胱癌的可能性比一般人高5倍。<BR>&nbsp;&nbsp;&nbsp; 憋尿时，膀胱贮存的尿液不能及时排出，形成人为的尿潴留。<BR>&nbsp;&nbsp;&nbsp; 如经常憋尿，就会使括约肌和逼尿肌常常处于紧张状态；如果憋尿时间过长，膀胱内尿量不断增加，还会使内压逐渐升高，时间长了就会发生膀胱颈受阻症状，造成排尿困难、不畅，或漏尿、尿失禁等毛病。<BR>&nbsp;&nbsp;&nbsp; 在尿潴留时还易引起并发感染和结石，严重时还影响肾功能。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 12.伏案午睡<BR>&nbsp;&nbsp;&nbsp; 一般人在伏案午睡后会出现暂时性的视力模煳，原因就是眼球受到压迫，引起角膜变形、弧度改变造成的。<BR>&nbsp;&nbsp;&nbsp; 倘若每天都压迫眼球，会造成眼压过高，长此下去视力就会受到损害。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 13.俯睡<BR>&nbsp;&nbsp;&nbsp; 俯睡使嵴柱弯曲,增加肌肉及韧带的压力，使人在睡觉时仍然得不到休息。<BR>&nbsp;&nbsp;&nbsp; 此外，还会增加胸部、心脏、肺部及面部的压力，导致睡醒后面部浮肿，眼睛出现血丝。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 14.睡前不洗脸<BR>&nbsp;&nbsp;&nbsp; 留在脸上的化妆品不洗掉，会引起粉刺和针眼之类的炎症，还能使眼睛发炎，引起皮肤过敏反应。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 15.睡前不刷牙<BR>&nbsp;&nbsp;&nbsp; 睡前刷牙比起床后刷牙更重要，这是因为遗留在口腔中和牙齿上的细菌、残留物在夜里对牙齿、牙龄有较强的腐蚀作用。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 16.睡懒觉<BR>&nbsp;&nbsp;&nbsp; 睡懒觉使大脑皮层抑制时间过长，天长日久，可引起一定程度人为的大脑功能障碍，导致理解力和记忆力减退，还会使免疫功能下降，扰乱肌体的生物节律，使人懒散，产生惰性，同时对肌肉、关节和泌尿系统也不利。<BR>&nbsp;&nbsp;&nbsp; 另外，血液循环不畅，全身的营养输送不及时，还会影响新陈代谢。<BR>&nbsp;&nbsp;&nbsp; 由于夜间关闭门窗睡觉﹝不应该全部关闭只须留一个通风的口径亦可﹞，早晨室内空气混浊，恋床很容易造成感冒、咳嗽等唿吸系统疾病的发生。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 17.热水沐浴时间过长﹝多久是过长呢？多久的时间最适宜呢？﹞<BR>&nbsp;&nbsp;&nbsp; 在自来水中，氯仿和三氯化烯是水中容易挥发的有害物质，由于在冰浴时水滴有更多的机会和空气接触，从而使这两种有害物质释放很多。<BR>&nbsp;&nbsp;&nbsp; 据收集到的数据显示，若用热水盆浴，只有25％的氯仿和40％的三氯化烯释放到空气中；而用热水沐浴，释放到空气中的氯仿就要达到50％，三氯化烯高达80％。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 18.赌博<BR>&nbsp;&nbsp;&nbsp; 赌博之所以有害于一个人的身心健康，是因为赌博本身是一种强烈刺激，长期进行赌博，可使中枢神经系统长期处于高度紧张状态，容易引起激素分泌增加，血管收缩，血压升高，心跳和唿吸加快等，会增加心血管疾病的发病率，还会患消化性溃疡和紧张性头疼。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 19.生活过度紧张<BR>&nbsp;&nbsp;&nbsp; 从事脑力劳动和做生意的一些中青年人，他们的生命机器在整日超负荷运转，由于他们在心理上的竞争欲强，在生理和心理方面皆承受着巨大的压力。过度的脑力和体力劳动后，随之而来的是抗疲劳和防病能力的减弱，进而可能引发多种疾病。]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=356" /> 
	  <id>http://www.openx.cn/default.asp?id=356</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[张信哲终于发新专集了]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-08T22:25:08+08:00</updated>
	  <published>2006-09-08T22:25:08+08:00</published>
		  <summary type="html"><![CDATA[<P>久违了~阿哲,这沉的够久的了,终于看到阿哲的新专集了吼吼~</P>
<P><STRONG><FONT color=#ff0000 size=6>支持张信哲《做你的男人》,支持正版!</FONT></STRONG></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天张信哲推出最新国语专辑《做你的男人》，新歌尝试多元曲风，《上海姑娘》有浓浓的江南风味；《说谎》则带进跨界音乐概念，请男高音唱和声。唯独拍MV出外景时连续3次都遇上台风，一波三折只好一再改时间，好不容易大功告成。&nbsp; <BR><BR>　　结束和新力的唱片合约1年多，距离上一张专辑，张信哲足足让歌迷等了2年。13日在北京人民大会堂的《时空寄情》演唱会，张信哲在曲目中安插《上海姑娘》、《说谎》及《做你的男人》等4首新歌，让北京歌迷先听为快，歌迷回响热烈，大声尖叫称赞好听。近来除了准备9月22、23日两天的香港演唱会之外，张信哲都在为新专辑作准备。&nbsp; <BR><BR>　　从7月初开始，张信哲陆续开始拍摄新专辑MV，但无论场景选在大陆还是台湾，只要拍户外场景就遇上台风，敲定3次最后都作罢，导演只好先把室内部分拍完，工作人员笑言他们走到哪里，台风就跟到哪里。日前结束北京演唱会及音乐电影记者会后，张信哲抽出时间，终于顺利把MV拍完。 <BR></P>
<P>[img]http://220.168.208.151/real2000//2006/01/320/cd.jpg[/img]</P>
<P>[img]http://gb.chinabroadca&#115;t.cn/mmsource/images/2006/08/22/eo060822953.jpg[/img]</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=355" /> 
	  <id>http://www.openx.cn/default.asp?id=355</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[关于 "CS0016: 未能写入输出文件" 的解决办法]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-09-08T12:23:20+08:00</updated>
	  <published>2006-09-08T12:23:20+08:00</published>
		  <summary type="html"><![CDATA[<P>清理系统不小心删除了 windows/temp 目录导致ASP.NET编译后出现 CS0016 的错误.</P>
<P>晕死了~查了资料都说是temp的关系.</P>
<P>之后察觉到原来 windows 下少了 temp 文件夹赶紧加上并设置了 NETWORK SERVICE 控制权限终于好了.</P>
<P>原来这目录这么重要哇~呼呼</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=354" /> 
	  <id>http://www.openx.cn/default.asp?id=354</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[宝贝计划 ROB-B-HOOD]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-06T08:47:29+08:00</updated>
	  <published>2006-09-06T08:47:29+08:00</published>
		  <summary type="html"><![CDATA[<P>[img]http://image2.sina.com.cn/ent/d/p/2006-06-30/U1584P28T3D1141350F326DT20060630104714.jpg[/img]</P>
<P><A href="http://www.dingdu.cn/post/baobeijihua.html" target=_blank>宝贝计划</A> ROB-B-HOOD <BR>编 剧： 成龙 袁锦麟 <BR>导 演： 陈木胜 <BR>摄 影： 潘耀明 <BR>主 演： 成龙 古天乐 高圆圆 许冠文 陈宝国 应采儿 蔡卓妍 杜丽莎 <BR>类 型： 功夫/动作/喜剧 <BR>出 品： 华谊兄弟影业投资有限公司<BR>成龙英皇电影有限公司 <BR><FONT color=red>·上映日期： 2006年9月28日(国内)</FONT> <BR>十一期待大片</P>
<P>预告片地址: <A href="http://www.g-film.com/film/real/bbjh_256.ram">http://www.g-film.com/film/real/bbjh_256.ram</A></P>
<P>
<OBJECT height=360 width=480 classid=CLSID:cfcdaa03-8be4-11cf-b84b-0020afbbccfa><PARAM NAME="_ExtentX" VALUE="12700"><PARAM NAME="_ExtentY" VALUE="9525"><PARAM NAME="AUTOSTART" VALUE="-1"><PARAM NAME="SHUFFLE" VALUE="0"><PARAM NAME="PREFETCH" VALUE="0"><PARAM NAME="NOLABELS" VALUE="0"><PARAM NAME="SRC" VALUE="http://www.g-film.com/film/real/bbjh_256.ram"><PARAM NAME="CONTROLS" VALUE="imagewindow"><PARAM NAME="CONSOLE" VALUE="one"><PARAM NAME="LOOP" VALUE="0"><PARAM NAME="NUMLOOP" VALUE="0"><PARAM NAME="CENTER" VALUE="0"><PARAM NAME="MAINTAINASPECT" VALUE="0"><PARAM NAME="BACKGROUNDCOLOR" VALUE="#000000">
<embed src="http://www.g-film.com/film/real/bbjh_256.ram" width="480" height="360" nojava="true" controls="imagewindow" console="one" autostart="True"></OBJECT></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=353" /> 
	  <id>http://www.openx.cn/default.asp?id=353</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[《龙虎门》预告片]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-09-06T08:37:52+08:00</updated>
	  <published>2006-09-06T08:37:52+08:00</published>
		  <summary type="html"><![CDATA[<P>《龙虎门》预告片:</P>
<P>·片名：<FONT color=#7da721>《龙虎门》</FONT> <BR>·英文名： Dragon Tiger Gate <BR>·监制： 黄百鸣 施南生 于冬 ·动作导演： 甄子丹 <BR>·导演： 叶伟信 ·领衔主演： 甄子丹　谢霆锋　余文乐 董洁　李小冉 <BR>·主演： 元华 陈观泰 行宇 ·友情演出： 黄玉郎 <BR>(枪版)龙虎门在线观看凑合看看速度还行<A href="http://www.zy123.com/html/3716.htm" target=_blank>&gt;&gt;播放点一在线观看</A> <A href="http://www.88907.com/Html/901.html" target=_blank>&gt;&gt;播放点二在线观看</A><BR>8月15日最新添加（速度质量都不错）:<A href="http://www.qq765.com/movie/lhm901.htm" target=_blank>&gt;&gt;播放点三在线观看</A><A href="http://www.bnb88.com/html/movfile/10521.htm" target=_blank>&gt;&gt;播放点四在线观看</A><BR><BR><B><A href="http://bt.kaicn.com/show/Down_Torrent.asp?id=82997" target=_blank><FONT color=#7da721>7.31日更新《龙虎门》BT种子下载</FONT></A><BR><A href="http://bt.1soo.cn/" target=_blank><FONT color=red>更多龙虎门种子请到BT搜索联盟搜索网址:http://bt.1soo.cn</FONT></A></B><BR><FONT color=red>《龙虎门》7月底火热上映 弘扬中国武术文化 <BR>　　由香港东方电影公司出品，改编自黄玉郎同名经典漫画作品的动作电影《龙虎门》日前已通过电影局审批，将于7月28日在全亚洲同步上映……</FONT><BR><BR>
<OBJECT height=360 width=480 classid=CLSID:cfcdaa03-8be4-11cf-b84b-0020afbbccfa><PARAM NAME="_ExtentX" VALUE="12700"><PARAM NAME="_ExtentY" VALUE="9525"><PARAM NAME="AUTOSTART" VALUE="-1"><PARAM NAME="SHUFFLE" VALUE="0"><PARAM NAME="PREFETCH" VALUE="0"><PARAM NAME="NOLABELS" VALUE="0"><PARAM NAME="SRC" VALUE="http://www.g-film.com/film/real/lhm_256.ram"><PARAM NAME="CONTROLS" VALUE="imagewindow"><PARAM NAME="CONSOLE" VALUE="one"><PARAM NAME="LOOP" VALUE="0"><PARAM NAME="NUMLOOP" VALUE="0"><PARAM NAME="CENTER" VALUE="0"><PARAM NAME="MAINTAINASPECT" VALUE="0"><PARAM NAME="BACKGROUNDCOLOR" VALUE="#000000">
<embed src="http://www.g-film.com/film/real/lhm_256.ram" width="480" height="360" nojava="true" controls="imagewindow" console="one" autostart="True"></OBJECT></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=352" /> 
	  <id>http://www.openx.cn/default.asp?id=352</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[给指定游客留言.]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=8" label="TalkMe" /> 
	  <updated>2006-08-30T15:55:47+08:00</updated>
	  <published>2006-08-30T15:55:47+08:00</published>
		  <summary type="html"><![CDATA[<P>新想法新点子,可以给指定的游客留言哦!</P>
<P>通过TalkMe可以给指定游客留言.</P>
<P>当该游客下回来到站点时就可以收到留言.</P>
<P>&nbsp;</P>
<P>呵呵~新的想法,一时的灵机一动.不知道这个想法怎样,管他先实现了再说,让事实来考验.</P>
<P>&nbsp;</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=351" /> 
	  <id>http://www.openx.cn/default.asp?id=351</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Visual Studio.Net 快捷键表]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-08-29T10:07:04+08:00</updated>
	  <published>2006-08-29T10:07:04+08:00</published>
		  <summary type="html"><![CDATA[<P>快捷键&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 功能<BR>CTRL + SHIFT + B生成解决方案<BR>CTRL + F7&nbsp; 生成编译<BR>CTRL + O&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开文件<BR>CTRL + SHIFT + O打开项目<BR>CTRL + SHIFT + C显示类视图窗口<BR>F4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示属性窗口<BR>SHIFT + F4显示项目属性窗口<BR>CTRL + SHIFT + E显示资源视图<BR>F12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 转到定义<BR>CTRL + F12转到声明<BR>CTRL + ALT + J对象浏览<BR>CTRL + ALT + F1帮助目录<BR>CTRL + F1 动态帮助 <BR>F1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 帮助<BR>SHIFT + F1当前窗口帮助<BR>CTRL + ALT + F3帮助-搜索<BR>SHIFT + ALT + ENTER全屏显示<BR>CTRL + -向后定位<BR>CTRL + SHIFT + -向前定位<BR>CTRL + F4关闭文档窗口<BR>CTRL + PAGE DOWN光标定位到窗口上方<BR>CTRL + PAGE UP光标定位到窗口下方<BR>CTRL + F6<BR>CTRL + TAB下一个文档窗口<BR>CTRL + SHIFT + F6<BR>CTRL + SHIFT + TAB上一个文档窗口<BR>ALT + F6下一个面板窗口<BR>CTRL + K, CTRL + L取消remark<BR>CTRL + K, CTRL + C注释选择的代码<BR>CTRL + K, CTRL + U取消对选择代码的注释<BR>CTRL + M, CTRL + O折叠代码定义<BR>CTRL + M, CTRL + L展开代码定义<BR>CTRL + DELETE删除至词尾<BR>CTRL + BACKSPACE删除至词头<BR>SHIFT + TAB取消制表符<BR>CTRL + U转小写<BR>CTRL + SHIFT + U转大写<BR>CTRL + SHIFT + END选择至文档末尾<BR>CTRL + SHIFT + HOME选择至文档末尾开始<BR>SHIFT + END选择至行尾<BR>SHIFT + HOME选择至行开始处<BR>SHIFT + ALT + END垂直选择到最后尾<BR>SHIFT + ALT + HOME垂直选择到最前面<BR>CTRL + A全选<BR>CTRL + W选择当前单词<BR>CTRL + SHIFT + PAGE UP选择至本页前面<BR>CTRL + SHIFT + PAGE DOWN选择至本页后面<BR>CTRL + END文档定位到最后<BR>CTRL + HOME文档定位到最前<BR>CTRL + G转到…<BR>CTRL + K, CTRL + P上一个标签<BR>CTRL + K, CTRL + N下一个标签<BR>ALT + F10调试-ApplyCodeChanges <BR>CTRL + ALT+ Break停止调试<BR>CTRL + SHIFT + F9 取消所有断点<BR>CTRL + F9允许中断<BR>CTRL + SHIFT + F5调试-重新开始<BR>F5运行调试<BR>CTRL + F5运行不调试<BR>F10跨过程序执行<BR>F11单步逐句执行<BR>CTRL + J列出成员 <BR>CTRL + PAGE DOWN下一个视图<BR>CTRL + B格式-粗体<BR>CTRL + SHIFT + T格式-文字缩进<BR></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=349" /> 
	  <id>http://www.openx.cn/default.asp?id=349</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[asp.net中用C#自动生成透明的GIF图片]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-08-24T08:59:56+08:00</updated>
	  <published>2006-08-24T08:59:56+08:00</published>
		  <summary type="html"><![CDATA[方案1：最easy的方法利用css的滤镜<BR>
<P>1.在aspx上拉一个HTML的img 然后run at server。同时为了体现透明，把背景色改成不同颜色自己看看效果。<BR></P><BR>
<P><BR>&lt;body MS_POSITIONING="GridLayout" background="images/bt_exit.gif"&gt;<BR>&nbsp;&nbsp;&lt;form id="Form1" method="post" runat="server"&gt;<BR>&nbsp;&nbsp;&nbsp;&lt;IMG alt="" src="" id="IMG1" style="FILTER: chroma(color:#000000)" runat="server"&gt;<BR>如果整个GIF也要半透明可用 style="FILTER:alpha(opacity=50)"<BR>&nbsp;&nbsp;&lt;/form&gt;<BR>&nbsp;&lt;/body&gt;<BR><BR>2.codebehind的代码</P><BR>
<P>using System;<BR>using System.Collections;<BR>using System.ComponentModel;<BR>using System.Data;<BR>using System.Drawing;<BR>using System.Web;<BR>using System.Web.SessionState;<BR>using System.Web.UI;<BR>using System.Web.UI.WebControls;<BR>using System.Web.UI.HtmlControls;</P><BR>
<P>namespace dztz<BR>{<BR>&nbsp;/// <SUMMARY><BR>&nbsp;/// test 的摘要说明。<BR>&nbsp;/// </SUMMARY><BR>&nbsp;public class test : System.Web.UI.Page<BR>&nbsp;{<BR>&nbsp; protected System.Web.UI.HtmlControls.HtmlImage IMG1;</P><BR>
<P>&nbsp; private void Page_Load(object sender, System.EventArgs e)<BR>&nbsp; {<BR>&nbsp;&nbsp; MyTempImage myTempImage=new MyTempImage();<BR>&nbsp;&nbsp; IMG1.Src=myTempImage.CreateImage();<BR>&nbsp; }</P><BR>
<P>&nbsp; #region Web 窗体设计器生成的代码<BR>&nbsp;..<BR>&nbsp; #endregion<BR>&nbsp;}</P><BR>
<P>&nbsp;public class MyTempImage : Page<BR>&nbsp;{<BR>&nbsp; public string CreateImage()<BR>&nbsp; {<BR>&nbsp;&nbsp; string str=DateTime.Now.ToString();<BR>&nbsp;&nbsp; Bitmap image=new Bitmap(200,30);<BR>&nbsp;&nbsp; Graphics g=Graphics.FromImage(image);<BR>&nbsp;&nbsp; string thefullname=Server.MapPath("/")+"<a href="http://www.openx.cn/file://nowtime.gif/">\\nowtime.gif</A>";<BR>&nbsp;&nbsp; g.Clear(Color.Transparent); //这里用不用透明色无所谓的，透明色实际上会是黑色<BR>&nbsp;&nbsp; g.DrawString(str,new Font("Courier New", 10),new <BR>SolidBrush(Color.FromArgb(128, 0, 0, 255)),20,5); //这里采用半透明字体<BR>&nbsp;&nbsp; image.Save(thefullname,System.Drawing.Imaging.ImageFormat.Gif);<BR>&nbsp;&nbsp; return "/nowtime.gif";<BR>&nbsp; }<BR>&nbsp;}<BR>}<BR><BR><BR><BR>方案2：生成一个真的透明背景的GIF图片（但是要调API，不推荐。）<BR><BR>Imports System.Runtime.InteropServices<BR>Imports System<BR>Imports System.IO<BR>Imports System.Drawing<BR>Imports System.Drawing.Imaging<BR>Imports System.Drawing.Drawing2D</P><BR>
<P>Public Class transparentGif : Inherits System.Web.UI.Page</P><BR>
<P>&nbsp;&nbsp;&nbsp; Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim pic As New System.Drawing.Bitmap(200, 200, PixelFormat.Format24bppRgb)</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '''draw image<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim blackpen As New Pen(Color.Black, 3)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim redpen As New Pen(Color.Red, 4)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim silverpen As New Pen(ColorTranslator.FromHtml("#CCCCCC"), 10)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim fBrush As SolidBrush = New SolidBrush(ColorTranslator.FromHtml("#0000FF"))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim g As Graphics = Graphics.FromImage(pic)</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.Clear(Color.White) ' blank the image<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.DrawLine(silverpen, 7, 80, 110, 80)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.SmoothingMode = SmoothingMode.AntiAlias ' antialias objects<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.DrawString("TEST", New Font("verdana", 24, FontStyle.Bold), fBrush, New PointF(10, 50))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.DrawEllipse(blackpen, 5, 5, 110, 110)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.DrawEllipse(redpen, 1, 1, 118, 118)</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '''save new image<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pic = recolorGif(pic)</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' set the content type<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.ContentType = "image/gif"</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' send the image to the viewer<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pic.Save(Response.OutputStream, ImageFormat.Gif)</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' tidy up<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pic.Dispose()</P><BR>
<P>&nbsp;&nbsp;&nbsp; End Sub</P><BR>
<P>&nbsp;&nbsp;&nbsp; Private Function GetColorPalette() As ColorPalette<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Make a new Bitmap object to get its Palette.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim bitmap As Bitmap = New Bitmap(1, 1, PixelFormat.Format8bppIndexed)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim palette As ColorPalette = bitmap.Palette&nbsp;&nbsp; ' Grab the palette<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bitmap.Dispose()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Return palette&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Send the palette back<BR>&nbsp;&nbsp;&nbsp; End Function</P><BR>
<P><BR>&nbsp;&nbsp;&nbsp; Private Function recolorGif(ByVal image As Image) As Bitmap<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim nColors As Integer = 16</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Make a new 8-BPP indexed bitmap that is the same size as the source image.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Width As Integer = image.Width<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Height As Integer = image.Height</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim bitmap As Bitmap = New Bitmap(Width, Height, PixelFormat.Format8bppIndexed)</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Create a color palette big enough to hold the colors you want.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim pal As ColorPalette = GetColorPalette()</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Initialize a new color table with entries <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim i As Integer</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' set palette the lazy way!<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' replace with a proper color algorithm<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i = 0 To nColors - 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pal.Entries(i) = Color.FromArgb(255, 100, 100, 100)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pal.Entries(0) = Color.FromArgb(255, 0, 0, 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pal.Entries(1) = Color.FromArgb(255, 255, 0, 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pal.Entries(2) = Color.FromArgb(255, 0, 255, 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pal.Entries(3) = Color.FromArgb(255, 0, 0, 255)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pal.Entries(4) = Color.FromArgb(255, 204, 204, 204)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pal.Entries(nColors - 1) = Color.FromArgb(0, 255, 255, 255)</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'web safe palette use values =<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '00 51 102 153 204 255 </P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Set the palette into the new Bitmap object.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bitmap.Palette = pal</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim BmpCopy As Bitmap = New Bitmap(Width, Height, PixelFormat.Format32bppArgb)</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim g As Graphics<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g = Graphics.FromImage(BmpCopy)</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.PageUnit = GraphicsUnit.Pixel</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Transfer the Image to the Bitmap.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.DrawImage(image, 0, 0, Width, Height)</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Force g to release its resources, namely BmpCopy.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.Dispose()</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Lock a rectangular portion of the bitmap for writing.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim bitmapData As BitmapData<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim rect As Rectangle = New Rectangle(0, 0, Width, Height)</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bitmapData = bitmap.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed)</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Copy the pixels from the source image <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim pixels As IntPtr = bitmapData.Scan0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim bits As Byte()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' the buffer<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim pBits As Int32</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (bitmapData.Stride &gt; 0) Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBits = pixels.ToInt32()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBits = pixels.ToInt32() + bitmapData.Stride * (Height - 1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim stride As Integer = Math.Abs(bitmapData.Stride)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReDim bits(Height * stride) ' Allocate the working buffer.</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim row As Integer<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim col As Integer</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For row = 0 To Height - 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For col = 0 To Width - 1</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim pixel As Color<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim i8BppPixel As Integer = row * stride + col</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pixel = BmpCopy.GetPixel(col, row)</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim colorIndex As Double<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If pixel.R = 0 And pixel.G = 0 And pixel.B = 0 Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colorIndex = 0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ElseIf pixel.R &gt; 100 And pixel.G = 0 And pixel.B = 0 Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colorIndex = 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ElseIf pixel.G &gt; 100 And pixel.R = 0 And pixel.B = 0 Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colorIndex = 2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ElseIf pixel.B &gt; 100 And pixel.R = 0 And pixel.G = 0 Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colorIndex = 3<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ElseIf pixel.B = 204 And pixel.R = 204 And pixel.G = 204 Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colorIndex = 4<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colorIndex = (nColors - 1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bits(i8BppPixel) = CByte(colorIndex)</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next col<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next row</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Put the image bits definition into the bitmap.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim win32 As win32api = New win32api()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; win32.CopyArrayTo(pBits, bits, Height * stride)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bitmap.UnlockBits(bitmapData)</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Return bitmap</P><BR>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BmpCopy.Dispose()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bitmap.Dispose()</P><BR>
<P>&nbsp;&nbsp;&nbsp; End Function</P><BR>
<P>End Class</P><BR>
<P>Public Class win32api</P><BR>
<P><BR>&nbsp;&nbsp;&nbsp; &lt;DllImport("KERNEL32.DLL", EntryPoint:="RtlMoveMemory", _<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetLastError:=True, CharSet:=CharSet.Auto, _<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ExactSpelling:=True, _<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CallingConvention:=CallingConvention.StdCall)&gt; _<BR>&nbsp;&nbsp;&nbsp; Public Shared Sub CopyArrayTo(&lt;[In](), MarshalAs(UnmanagedType.I4)&gt; ByVal hpvDest As Int32, &lt;[In](), Out()&gt; ByVal hpvSource() As Byte, ByVal cbCopy As Integer)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Leave function empty<BR>&nbsp;&nbsp;&nbsp; End Sub</P><BR>
<P>End Class<BR></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=348" /> 
	  <id>http://www.openx.cn/default.asp?id=348</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[关于ASP.NET的 URL编码问题留个记号]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-08-23T16:13:24+08:00</updated>
	  <published>2006-08-23T16:13:24+08:00</published>
		  <summary type="html"><![CDATA[<P>发现参数URL编码后通过URL传输,并由ASP.NET直接获取后代码会自动转换成编码前,无须再解码.</P>
<P>通过XMLHTTP的方式传输URL参数还是需要再解码的.</P>
<P>刚刚弄加密解密的时候遇到.</P>
<P>特此留个记号,以防忘记~嘿嘿!</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=347" /> 
	  <id>http://www.openx.cn/default.asp?id=347</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[哇～日流量突破2W！]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=5" label="点点滴滴" /> 
	  <updated>2006-08-19T23:00:16+08:00</updated>
	  <published>2006-08-19T23:00:16+08:00</published>
		  <summary type="html"><![CDATA[<P>刚到家，回到日志一看纪录，哇！<FONT color=#ff0000 size=6><STRONG>20047</STRONG></FONT>的流量，突破<STRONG><FONT color=#ff0000>2W</FONT></STRONG>大观！历史最高的一天，平时最多1.9W封顶咯～活活～拍个照留个纪念，哈哈！</P>
<P align=center><img src="http://www.openx.cn//include/Editor/UploadFile/2006819225827949.jpg" border=0></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=346" /> 
	  <id>http://www.openx.cn/default.asp?id=346</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[在网站开发中经常用到的javaScript技术]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-08-18T14:06:21+08:00</updated>
	  <published>2006-08-18T14:06:21+08:00</published>
		  <summary type="html"><![CDATA[<STRONG>1&gt;屏蔽功能类</STRONG> 
<P><FONT color=#ff0000>1.1&nbsp;屏蔽键盘所有键</FONT><BR>&lt;script&nbsp;language="javascript"&gt;<BR>&lt;!--<BR>function&nbsp;document.onkeydown(){<BR>&nbsp;&nbsp;&nbsp;event.keyCode&nbsp;=&nbsp;0;<BR>&nbsp;&nbsp;&nbsp;event.returnvalue&nbsp;=&nbsp;false;<BR>}<BR>--&gt;<BR>&lt;/script&gt;</P>
<P><FONT color=#ff0000>1.2&nbsp;屏蔽鼠标右键</FONT></P>
<P>在body标签里加上oncontextmenu=self.event.returnvalue=false</P>
<P><FONT color=#ff0000>或者</FONT></P>
<P>&lt;script&nbsp;language="javascript"&gt;<BR>&lt;!--<BR>function&nbsp;document.oncontextmenu()&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;return&nbsp;false;&nbsp;<BR>}&nbsp;<BR>--&gt;<BR>&lt;/script&gt;</P>
<P>function&nbsp;nocontextmenu()<BR>{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(document.all)&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.cancelBubble=true;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnvalue=false;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}</P>
<P><FONT color=#ff0000>或者</FONT></P>
<P>&lt;body&nbsp;onmousedown="rclick()"&nbsp;oncontextmenu=&nbsp;"nocontextmenu()"&gt;</P>
<P>&lt;script&nbsp;language="javascript"&gt;<BR>&lt;!--<BR>function&nbsp;rclick()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(document.all)&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(event.button&nbsp;==&nbsp;2){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnvalue=false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR>--&gt;<BR>&lt;/script&gt;</P>
<P><BR><FONT color=#ff0000>1.3&nbsp;屏蔽&nbsp;Ctrl+N、Shift+F10、F5刷新、退格键</FONT></P>
<P>&lt;script&nbsp;language="javascript"&gt;<BR>&lt;!--<BR>&nbsp;&nbsp;//屏蔽鼠标右键、Ctrl+N、Shift+F10、F5刷新、退格键<BR>function&nbsp;window.onhelp(){return&nbsp;false}&nbsp;//屏蔽F1帮助<BR>function&nbsp;KeyDown(){<BR>&nbsp;&nbsp;if&nbsp;((window.event.altKey)&&<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((window.event.keyCode==37)||&nbsp;&nbsp;&nbsp;//屏蔽&nbsp;Alt+&nbsp;方向键&nbsp;←<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(window.event.keyCode==39))){&nbsp;&nbsp;//屏蔽&nbsp;Alt+&nbsp;方向键&nbsp;→<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("不准你使用ALT+方向键前进或后退网页！");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnvalue=false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;注：这还不是真正地屏蔽&nbsp;Alt+&nbsp;方向键，<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因为&nbsp;Alt+&nbsp;方向键弹出警告框时，按住&nbsp;Alt&nbsp;键不放，<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用鼠标点掉警告框，这种屏蔽方法就失效了。以后若<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有哪位高手有真正屏蔽&nbsp;Alt&nbsp;键的方法，请告知。*/</P>
<P>&nbsp;&nbsp;if&nbsp;((event.keyCode&nbsp;==&nbsp;8)&nbsp;&&&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(event.srcElement.type&nbsp;!=&nbsp;"text"&nbsp;&&&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.srcElement.type&nbsp;!=&nbsp;"textarea"&nbsp;&&&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.srcElement.type&nbsp;!=&nbsp;"password")&nbsp;||&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//屏蔽退格删除键&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(event.keyCode==116)||&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;F5&nbsp;刷新键<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(event.ctrlKey&nbsp;&&&nbsp;event.keyCode==82)){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Ctrl&nbsp;+&nbsp;R<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.keyCode=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnvalue=false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;if&nbsp;((event.ctrlKey)&&(event.keyCode==78))&nbsp;&nbsp;&nbsp;//屏蔽&nbsp;Ctrl+n<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnvalue=false;<BR>&nbsp;&nbsp;if&nbsp;((event.shiftKey)&&(event.keyCode==121))&nbsp;//屏蔽&nbsp;shift+F10<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnvalue=false;<BR>&nbsp;&nbsp;if&nbsp;(window.event.srcElement.tagName&nbsp;==&nbsp;"A"&nbsp;&&&nbsp;window.event.shiftKey)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.event.returnvalue&nbsp;=&nbsp;false;&nbsp;&nbsp;//屏蔽&nbsp;shift&nbsp;加鼠标左键新开一网页<BR>&nbsp;&nbsp;if&nbsp;((window.event.altKey)&&(window.event.keyCode==115)){&nbsp;//屏蔽Alt+F4<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.showModelessDialog("about:blank","","dialogWidth:1px;dialogheight:1px");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;}<BR>&nbsp;&nbsp;}<BR>&nbsp;/*&nbsp;另外可以用&nbsp;window.open&nbsp;的方法屏蔽&nbsp;IE&nbsp;的所有菜单<BR>第一种方法：<BR>&nbsp;&nbsp;window.open("你的.htm",&nbsp;"","toolbar=no,location=no,directories=no,menubar=no,scrollbars=no,resizable=yes,status=no,top=0,left=0")<BR>第二种方法是打开一个全屏的页面：<BR>&nbsp;&nbsp;window.open("你的.asp",&nbsp;"",&nbsp;"fullscreen=yes")<BR>&nbsp;*/<BR>//--&gt;<BR>&lt;/script&gt;</P>
<P><FONT color=#ff0000>1.4屏蔽浏览器右上角“最小化”“最大化”“关闭”键</FONT></P>
<P>&lt;script&nbsp;language=javascript&gt;<BR>function&nbsp;window.onbeforeunload()<BR>{<BR>&nbsp;&nbsp;if(event.clientX&gt;document.body.clientWidth&&event.clientY&lt;0||event.altKey)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;window.event.returnvalue&nbsp;=&nbsp;"";<BR>&nbsp;&nbsp;}<BR>}<BR>&lt;/script&gt;</P>
<P><FONT color=#ff0000>或者使用全屏打开页面</FONT></P>
<P>&lt;script&nbsp;language="javascript"&gt;<BR>&lt;!--<BR>window.open(<A href="http://www.32pic.com/">www.32pic.com</A>,"32pic","fullscreen=3,height=100,&nbsp;width=400,&nbsp;top=0,&nbsp;left=0,&nbsp;toolbar=no,&nbsp;menubar=no,&nbsp;scrollbars=no,&nbsp;resizable=no,location=no,&nbsp;status=no");<BR>--&gt;<BR>&lt;/script&gt;</P>
<P>注：在body标签里加上onbeforeunload="javascript:return&nbsp;false"（使不能关闭窗口）</P>
<P><FONT color=#ff0000>1.5屏蔽F5键</FONT></P>
<P>&lt;script&nbsp;language="javascript"&gt;<BR>&lt;!--<BR>function&nbsp;document.onkeydown()&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;event.keyCode==116)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.keyCode&nbsp;=&nbsp;0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.cancelBubble&nbsp;=&nbsp;true;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR>--&gt;<BR>&lt;/script&gt;</P>
<P><FONT color=#ff0000>1.6屏蔽IE后退按钮</FONT></P>
<P>在你链接的时候用&nbsp;&lt;a&nbsp;href="javascript:location.replace(url)"&gt;</P>
<P><FONT color=#ff0000>1.7屏蔽主窗口滚动条</FONT></P>
<P>在body标签里加上&nbsp;style="overflow-y:hidden"</P>
<P><FONT color=#ff0000>1.8&nbsp;屏蔽拷屏,不断地清空剪贴板</FONT></P>
<P>在body标签里加上onload="setInterval('clipboardData.setData(\'Text\',\'\')',100)"</P>
<P><FONT color=#ff0000>1.9&nbsp;屏蔽网站的打印功能</FONT></P>
<P>&lt;style&gt;<BR>@media&nbsp;print&nbsp;{<BR>&nbsp;&nbsp;&nbsp;*&nbsp;{&nbsp;display:&nbsp;none&nbsp;}<BR>}<BR>&lt;/style&gt;</P>
<P><FONT color=#ff0000>1.10&nbsp;屏蔽IE6.0&nbsp;图片上自动出现的保存图标</FONT></P>
<P>方法一：<BR>&lt;META&nbsp;HTTP-EQUIV="imagetoolbar"&nbsp;CONTENT="no"&gt;<BR>方法二：<BR>&lt;img&nbsp;galleryimg="no"&gt;</P>
<P><FONT color=#ff0000>1.11&nbsp;屏蔽页中所有的script</FONT></P>
<P>&lt;noscrript&gt;&lt;/noscript&gt;&nbsp;</P>
<P><STRONG>&nbsp;2&gt;表单提交验证类</STRONG> </P>
<P>&nbsp;</P>
<P><FONT color=#ff0000>2.1&nbsp;表单项不能为空</FONT></P>
<P>&lt;script&nbsp;language="javascript"&gt;<BR>&lt;!--<BR>function&nbsp;CheckForm()<BR>{<BR>if&nbsp;(document.form.name.value.length&nbsp;==&nbsp;0)&nbsp;{<BR>&nbsp;&nbsp;&nbsp;alert("请输入您姓名!");<BR>&nbsp;&nbsp;&nbsp;document.form.name.focus();<BR>&nbsp;&nbsp;&nbsp;return&nbsp;false;<BR>}<BR>&nbsp;&nbsp;&nbsp;return&nbsp;true;<BR>}<BR>--&gt;<BR>&lt;/script&gt;</P>
<P><FONT color=#ff0000>2.2&nbsp;比较两个表单项的值是否相同</FONT></P>
<P>&lt;script&nbsp;language="javascript"&gt;<BR>&lt;!--<BR>function&nbsp;CheckForm()<BR>if&nbsp;(document.form.PWD.value&nbsp;!=&nbsp;document.form.PWD_Again.value)&nbsp;{<BR>&nbsp;&nbsp;&nbsp;alert("您两次输入的密码不一样！请重新输入.");<BR>&nbsp;&nbsp;&nbsp;document.ADDUser.PWD.focus();<BR>&nbsp;&nbsp;&nbsp;return&nbsp;false;<BR>}<BR>&nbsp;&nbsp;&nbsp;return&nbsp;true;<BR>}<BR>--&gt;<BR>&lt;/script&gt;</P>
<P><FONT color=#ff0000>2.3&nbsp;表单项只能为数字和"_",用于电话/银行帐号验证上,可扩展到域名注册等</FONT></P>
<P>&lt;script&nbsp;language="javascript"&gt;<BR>&lt;!--<BR>function&nbsp;isNumber(String)<BR>{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;Letters&nbsp;=&nbsp;"1234567890-";&nbsp;//可以自己增加可输入值<BR>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;c;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(String.charAt(&nbsp;0&nbsp;)=='-')<BR>&nbsp;return&nbsp;false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;String.charAt(&nbsp;String.length&nbsp;-&nbsp;1&nbsp;)&nbsp;==&nbsp;'-'&nbsp;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;String.length;&nbsp;i&nbsp;++&nbsp;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;=&nbsp;String.charAt(&nbsp;i&nbsp;);<BR>&nbsp;&nbsp;&nbsp;if&nbsp;(Letters.indexOf(&nbsp;c&nbsp;)&nbsp;&lt;&nbsp;0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<BR>}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;<BR>}<BR>function&nbsp;CheckForm()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(!&nbsp;isNumber(document.form.TEL.value))&nbsp;{<BR>&nbsp;&nbsp;alert("您的电话号码不合法！");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.form.TEL.focus();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<BR>}<BR>return&nbsp;true;<BR>}<BR>--&gt;<BR>&lt;/script&gt;</P>
<P><BR><FONT color=#ff0000>2.4&nbsp;表单项输入数值/长度限定</FONT></P>
<P>&lt;script&nbsp;language="javascript"&gt;<BR>&lt;!--<BR>function&nbsp;CheckForm()&nbsp;<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(document.form.count.value&nbsp;&gt;&nbsp;100&nbsp;||&nbsp;document.form.count.value&nbsp;&lt;&nbsp;1)<BR>{<BR>&nbsp;alert("输入数值不能小于零大于100!");<BR>&nbsp;document.form.count.focus();<BR>&nbsp;return&nbsp;false;<BR>}<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(document.form.MESSAGE.value.length&lt;10)<BR>{<BR>&nbsp;alert("输入文字小于10!");<BR>&nbsp;document.form.MESSAGE.focus();<BR>&nbsp;return&nbsp;false;<BR>}<BR>return&nbsp;true;<BR>}<BR>//--&gt;<BR>&lt;/script&gt;</P>
<P><FONT color=#ff0000>2.5&nbsp;中文/英文/数字/邮件地址合法性判断</FONT></P>
<P>&lt;SCRIPT&nbsp;LANGUAGE="javascript"&gt;<BR>&lt;!--</P>
<P>function&nbsp;isEnglish(name)&nbsp;//英文值检测<BR>{<BR>&nbsp;if(name.length&nbsp;==&nbsp;0)<BR>&nbsp;&nbsp;return&nbsp;false;<BR>&nbsp;for(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;name.length;&nbsp;i++)&nbsp;{<BR>&nbsp;&nbsp;if(name.charCodeAt(i)&nbsp;&gt;&nbsp;128)<BR>&nbsp;&nbsp;&nbsp;return&nbsp;false;<BR>&nbsp;}<BR>&nbsp;return&nbsp;true;<BR>}</P>
<P>function&nbsp;isChinese(name)&nbsp;//中文值检测<BR>{<BR>&nbsp;if(name.length&nbsp;==&nbsp;0)<BR>&nbsp;&nbsp;return&nbsp;false;<BR>&nbsp;for(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;name.length;&nbsp;i++)&nbsp;{<BR>&nbsp;&nbsp;if(name.charCodeAt(i)&nbsp;&gt;&nbsp;128)<BR>&nbsp;&nbsp;&nbsp;return&nbsp;true;<BR>&nbsp;}<BR>&nbsp;return&nbsp;false;<BR>}</P>
<P>function&nbsp;isMail(name)&nbsp;//&nbsp;E-mail值检测<BR>{<BR>&nbsp;if(!&nbsp;isEnglish(name))<BR>&nbsp;&nbsp;return&nbsp;false;<BR>&nbsp;i&nbsp;=&nbsp;name.indexOf("@");<BR>&nbsp;j&nbsp;=&nbsp;name.lastIndexOf("@");<BR>&nbsp;if(i&nbsp;==&nbsp;-1)<BR>&nbsp;&nbsp;return&nbsp;false;<BR>&nbsp;if(i&nbsp;!=&nbsp;j)<BR>&nbsp;&nbsp;return&nbsp;false;<BR>&nbsp;if(i&nbsp;==&nbsp;name.length)<BR>&nbsp;&nbsp;return&nbsp;false;<BR>&nbsp;return&nbsp;true;<BR>}</P>
<P>function&nbsp;isNumber(name)&nbsp;//数值检测<BR>{<BR>&nbsp;if(name.length&nbsp;==&nbsp;0)<BR>&nbsp;&nbsp;return&nbsp;false;<BR>&nbsp;for(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;name.length;&nbsp;i++)&nbsp;{<BR>&nbsp;&nbsp;if(name.charAt(i)&nbsp;&lt;&nbsp;"0"&nbsp;||&nbsp;name.charAt(i)&nbsp;&gt;&nbsp;"9")<BR>&nbsp;&nbsp;&nbsp;return&nbsp;false;<BR>&nbsp;}<BR>&nbsp;return&nbsp;true;<BR>}</P>
<P>function&nbsp;CheckForm()<BR>{<BR>&nbsp;if(!&nbsp;isMail(form.Email.value))&nbsp;{<BR>&nbsp;&nbsp;alert("您的电子邮件不合法！");<BR>&nbsp;&nbsp;form.Email.focus();<BR>&nbsp;&nbsp;return&nbsp;false;<BR>&nbsp;}<BR>&nbsp;if(!&nbsp;isEnglish(form.name.value))&nbsp;{<BR>&nbsp;&nbsp;alert("英文名不合法！");<BR>&nbsp;&nbsp;form.name.focus();<BR>&nbsp;&nbsp;return&nbsp;false;<BR>&nbsp;}<BR>&nbsp;if(!&nbsp;isChinese(form.cnname.value))&nbsp;{<BR>&nbsp;&nbsp;alert("中文名不合法！");<BR>&nbsp;&nbsp;form.cnname.focus();<BR>&nbsp;&nbsp;return&nbsp;false;<BR>&nbsp;}<BR>&nbsp;if(!&nbsp;isNumber(form.PublicZipCode.value))&nbsp;{<BR>&nbsp;&nbsp;alert("邮政编码不合法！");<BR>&nbsp;&nbsp;form.PublicZipCode.focus();<BR>&nbsp;&nbsp;return&nbsp;false;<BR>&nbsp;}<BR>&nbsp;return&nbsp;true;<BR>}<BR>//--&gt;<BR>&lt;/SCRIPT&gt;</P>
<P><FONT color=#ff0000>2.6&nbsp;限定表单项不能输入的字符</FONT></P>
<P>&lt;script&nbsp;language="javascript"&gt;<BR>&lt;!--</P>
<P>function&nbsp;contain(str,charset)//&nbsp;字符串包含测试函数<BR>{<BR>&nbsp;&nbsp;var&nbsp;i;<BR>&nbsp;&nbsp;for(i=0;i&lt;charset.length;i++)<BR>&nbsp;&nbsp;if(str.indexOf(charset.charAt(i))&gt;=0)<BR>&nbsp;&nbsp;return&nbsp;true;<BR>&nbsp;&nbsp;return&nbsp;false;<BR>}</P>
<P>function&nbsp;CheckForm()<BR>{<BR>&nbsp;if&nbsp;(<FONT color=#ff0000>(contain(document.form.NAME.value,&nbsp;"%\(\)&gt;&lt;"))</FONT>&nbsp;||&nbsp;<FONT color=#ff0000>(contain(document.form.MESSAGE.value,&nbsp;"%\(\)&gt;&lt;"))</FONT>)<BR>{<BR>&nbsp;&nbsp;alert("输入了非法字符");<BR>&nbsp;&nbsp;document.form.NAME.focus();<BR>&nbsp;&nbsp;return&nbsp;false;<BR>}<BR>&nbsp;&nbsp;return&nbsp;true;<BR>}<BR>//--&gt;<BR>&lt;/script&gt;</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=345" /> 
	  <id>http://www.openx.cn/default.asp?id=345</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[网页之最]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-08-18T09:38:33+08:00</updated>
	  <published>2006-08-18T09:38:33+08:00</published>
		  <summary type="html"><![CDATA[<P>1.<A href="http://www.w3.org/History/19921103-hypertext/hypertext/WWW/TheProject.html" target=_blank>最古老的网页</A>。诞生于公元1991年，由WWW之父英国科学家蒂姆·伯纳斯-李爵士创建。是他制定了网络最基本的规则，不然如今也没有这个网络了。<BR><BR>2.<A href="http://www.shibumi.org/eoti.htm" target=_blank>最后的网页</A>。纯粹是搞笑的，估计是某某严重厌恶网络的人做的。<BR><BR>3.<A href="http://www.guimp.com/" target=_blank>最小的网页</A>。只有一张18×18大小的gif外链图片。点击进入后，仍然是18×18的图片，令人惊讶的是，这是一个博客。<BR><BR>4.<A href="http://blog.outer-court.com/files/largest.html" target=_blank>最大的网页</A>。N大！就是google&nbsp;blogoscoped自己做的，上面写着：Welcome&nbsp;to&nbsp;the&nbsp;Largest&nbsp;Web&nbsp;Page&nbsp;in&nbsp;the&nbsp;World.&nbsp;This&nbsp;page&nbsp;is&nbsp;extremely&nbsp;large,&nbsp;as&nbsp;you&nbsp;probably&nbsp;noticed.<BR><BR>5.<A href="http://www.pixelscapes.com/spatulacity/button.htm" target=_blank>最没用的网页</A>。上面放一个大大的按钮，然后说“按了它什么都不会发生”。哈哈，其实这个按钮链接到本身，所以无论按多少下都没有任何奇迹出现哈哈。有趣的是，这个网页建立于1994年，每年都有成千上万的人去点击这个按钮，希望有什么事情发生。有一神人，一次性点击上千次，还是没有任何反应。如今，仍然后人乐此不疲的点击这个按钮，可见这个世界多么无聊啊！<BR><BR>6.<A href="http://www.appstate.edu/~ww55582/REALLYUGLY/index.htm" target=_blank>最丑的网站</A>。当知无愧啊，一张恐龙的相片，超级刺眼的颜色，还有全部错写的单词。哇，这个世界依旧无聊啊。<BR><BR>7.<A href="http://digg.com/" target=_blank>最慢的网站</A>。居然是大名鼎鼎的digg.com。digg确实很慢，但不至于最慢吧，况且最近的访问速度有很大的提高，又有了中文抓取beta，这个我得替它喊冤。<BR><BR>8.<A href="http://www.wibsite.com/wiblog/dull/" target=_blank>最无聊的网站</A>。这个博客，无聊得吐血，摘译一段：一些铅笔散在我的书桌上，我一只一只拾起来，然后把他们放回原先放铅笔的抽屉里…………还不止这些，N多人跟着无聊，每篇无聊博文的都有上百的评论，最多的能上千！哎，无聊啊！</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=344" /> 
	  <id>http://www.openx.cn/default.asp?id=344</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[昨天服务器出问题了!]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-08-17T10:30:00+08:00</updated>
	  <published>2006-08-17T10:30:00+08:00</published>
		  <summary type="html"><![CDATA[<P>昨天服务器出问题了!日志停了一天(越12小时多)~呼呼</P>
<P>相关服务也都停了~给众网友带来不便,请多多谅解.</P>
<P>几好友来Q,来M,询问关心,本人在此再次表示感谢!谢谢啦!</P>
<P>嘿嘿~</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=343" /> 
	  <id>http://www.openx.cn/default.asp?id=343</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[详细名单：Google的581个域名]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-08-15T18:01:05+08:00</updated>
	  <published>2006-08-15T18:01:05+08:00</published>
		  <summary type="html"><![CDATA[<P minmax_bound="true" 18px><FONT color=#000000 minmax_bound="true"><SPAN minmax_bound="true" 9pt>Google的特色之一是不断推出各种新服务，由此必然会在Google旗下增加越来越多的域名。据业内人士Neil Patel统计，Google手中的域名已经有将近600个之多。<BR minmax_bound="true"><BR minmax_bound="true">除了与各种服务对应的域名，Google还收购了很多域名，如deja.net、picasa.com、pyra.com、keyhole.com和writely.com等，同时还有一些用户容易拼错的域名，如gogole.com、googel.com和googil.com等等。<BR minmax_bound="true"><BR minmax_bound="true"><BR minmax_bound="true">以下是详细的Google域名名单(共581个)：<BR minmax_bound="true"><BR minmax_bound="true">21150.com<BR minmax_bound="true">3576.net<BR minmax_bound="true">38389438.com<BR minmax_bound="true">466453.com<BR minmax_bound="true">7sou.com<BR minmax_bound="true">95539.com<BR minmax_bound="true">adsbygoogle.com<BR minmax_bound="true">adsense.net<BR minmax_bound="true">adwords.com<BR minmax_bound="true">adwords.net<BR minmax_bound="true">adwords.org<BR minmax_bound="true">adwordselect.com<BR minmax_bound="true">adwordsexample.com<BR minmax_bound="true">adwordsgoogle.com<BR minmax_bound="true">adwordsselect.com<BR minmax_bound="true">adwords-select.com<BR minmax_bound="true">adwordsselect.net<BR minmax_bound="true">adwordsselect.org<BR minmax_bound="true">akwan.com<BR minmax_bound="true">allevil.org<BR minmax_bound="true">altos.us<BR minmax_bound="true">android.com<BR minmax_bound="true">answergoogle.com<BR minmax_bound="true">answer-google.com<BR minmax_bound="true">answersgoogle.com<BR minmax_bound="true">answers-google.com<BR minmax_bound="true">appliedsemantics.com<BR minmax_bound="true">appsem.com<BR minmax_bound="true">apsem.com<BR minmax_bound="true">arabgoogle.com<BR minmax_bound="true">arabicgoogle.com<BR minmax_bound="true">askgoogle.com<BR minmax_bound="true">atlantis9.org<BR minmax_bound="true">averitablebevy.com<BR minmax_bound="true">bakuhatsu.net<BR minmax_bound="true">bigcitysmallbank.com<BR minmax_bound="true">blogger.com<BR minmax_bound="true">blogspot.com<BR minmax_bound="true">bon-vivant.net<BR minmax_bound="true">book300.com<BR minmax_bound="true">canalportugal.info<BR minmax_bound="true">cashexperiment.com<BR minmax_bound="true">catalogsgoogle.com<BR minmax_bound="true">chinagoogle.com<BR minmax_bound="true">clinilab.net<BR minmax_bound="true">cobrasearch.com<BR minmax_bound="true">conversionuniversity.com<BR minmax_bound="true">crotales.com<BR minmax_bound="true">dbanks.org<BR minmax_bound="true">deja.com<BR minmax_bound="true">deja.net<BR minmax_bound="true">dejadiscussion.com<BR minmax_bound="true">dejadiscussions.com<BR minmax_bound="true">deja-discussions.com<BR minmax_bound="true">dejanews.com<BR minmax_bound="true">dejanews.net<BR minmax_bound="true">dejanews.org<BR minmax_bound="true">dejastinks.com<BR minmax_bound="true">dejastinks.net<BR minmax_bound="true">dejasucks.net<BR minmax_bound="true">dejatracker.com<BR minmax_bound="true">deja-tracker.com<BR minmax_bound="true">delsolpm.net<BR minmax_bound="true">divesfl.com<BR minmax_bound="true">dmarc.net<BR minmax_bound="true">dodgeball.com<BR minmax_bound="true">dontswitch.com<BR minmax_bound="true">e17.org<BR minmax_bound="true">earthender.com<BR minmax_bound="true">earthender.net<BR minmax_bound="true">earthrender.com<BR minmax_bound="true">earthrender.net<BR minmax_bound="true">earthstream.com<BR minmax_bound="true">earthviewer.com<BR minmax_bound="true">earthviewer.net<BR minmax_bound="true">earthviewer.org<BR minmax_bound="true">elgoog.com<BR minmax_bound="true">elgoog.net<BR minmax_bound="true">elgoog.org<BR minmax_bound="true">eperfumez.com<BR minmax_bound="true">e-perfumez.com<BR minmax_bound="true">expire.ws<BR minmax_bound="true">firehunt.com<BR minmax_bound="true">floralartbyamy.com<BR minmax_bound="true">foofle.com<BR minmax_bound="true">fourth-party.com<BR minmax_bound="true">fourthparty.net<BR minmax_bound="true">fourth-party.net<BR minmax_bound="true">fourthparty.org<BR minmax_bound="true">fourth-party.org<BR minmax_bound="true">fridata.net<BR minmax_bound="true">froogel.com<BR minmax_bound="true">froogle.com<BR minmax_bound="true">froogol.com<BR minmax_bound="true">frooogle.com<BR minmax_bound="true">g00gle.com<BR minmax_bound="true">gbrowser.com<BR minmax_bound="true">gbrowser.net<BR minmax_bound="true">gbrowser.org<BR minmax_bound="true">gcalendar.com<BR minmax_bound="true">gchat.biz<BR minmax_bound="true">gchat.us<BR minmax_bound="true">gdrive.com<BR minmax_bound="true">gethealed.org<BR minmax_bound="true">gewgle.com<BR minmax_bound="true">gewgol.com<BR minmax_bound="true">gg-center.net<BR minmax_bound="true">ggoogle.com<BR minmax_bound="true">ggooglers.net<BR minmax_bound="true">ggooglers.org<BR minmax_bound="true">ghut.org<BR minmax_bound="true">gigagoogle.com<BR minmax_bound="true">gigagoogle.net<BR minmax_bound="true">gigagoogle.org<BR minmax_bound="true">globalgamerscenter.net<BR minmax_bound="true">globalgamers-center.net<BR minmax_bound="true">globalgames-center.net<BR minmax_bound="true">gmail.com<BR minmax_bound="true">gmmgjd.net<BR minmax_bound="true">gmmgjd.org<BR minmax_bound="true">gmmgjdwap.com<BR minmax_bound="true">gmodule.com<BR minmax_bound="true">gmodules.com<BR minmax_bound="true">gngjd.com<BR minmax_bound="true">gogle.com<BR minmax_bound="true">gogole.com<BR minmax_bound="true">googel.com<BR minmax_bound="true">googil.com<BR minmax_bound="true">google.biz<BR minmax_bound="true">google.com<BR minmax_bound="true">google.info<BR minmax_bound="true">google.net<BR minmax_bound="true">google.org<BR minmax_bound="true">google.us<BR minmax_bound="true">google.ws<BR minmax_bound="true">google1.com<BR minmax_bound="true">google2.com<BR minmax_bound="true">google3.com<BR minmax_bound="true">google4mp3.com<BR minmax_bound="true">googleaccelerator.com<BR minmax_bound="true">googleaccess.com<BR minmax_bound="true">google-access.com<BR minmax_bound="true">googleadsense.com<BR minmax_bound="true">googleadservices.com<BR minmax_bound="true">googleadult.com<BR minmax_bound="true">googleadvancedsearch.com<BR minmax_bound="true">googleanalytic.com<BR minmax_bound="true">googleanalyticas.com<BR minmax_bound="true">googleanalytics.com<BR minmax_bound="true">google-analytics.com<BR minmax_bound="true">googleanswer.com<BR minmax_bound="true">google-answer.com<BR minmax_bound="true">googleanswers.com<BR minmax_bound="true">google-answers.com<BR minmax_bound="true">googlearabic.com<BR minmax_bound="true">googlearchive.com<BR minmax_bound="true">googlearchives.com<BR minmax_bound="true">googlearth.com<BR minmax_bound="true">googlebase.com<BR minmax_bound="true">googlebay.com<BR minmax_bound="true">googleblog.biz<BR minmax_bound="true">googleblog.com<BR minmax_bound="true">googleblog.info<BR minmax_bound="true">googleblog.net<BR minmax_bound="true">googleblog.org<BR minmax_bound="true">googleblows.com<BR minmax_bound="true">googleblows.net<BR minmax_bound="true">googleblows.org<BR minmax_bound="true">googlebot.com<BR minmax_bound="true">googlebox.biz<BR minmax_bound="true">googlebox.com<BR minmax_bound="true">googlebox.info<BR minmax_bound="true">googlebox.net<BR minmax_bound="true">googlebox.org<BR minmax_bound="true">googlebrowserbutton.com<BR minmax_bound="true">googlebrowserbuttons.com<BR minmax_bound="true">googlebucks.com<BR minmax_bound="true">googlebutton.com<BR minmax_bound="true">googlebutton.net<BR minmax_bound="true">googlebutton.org<BR minmax_bound="true">googlebuttons.com<BR minmax_bound="true">googlebuy.com<BR minmax_bound="true">googlebuy.info<BR minmax_bound="true">googlebuy.net<BR minmax_bound="true">googlebuy.org<BR minmax_bound="true">googlebuyers.com<BR minmax_bound="true">googlecache.com<BR minmax_bound="true">googlecalendar.net<BR minmax_bound="true">googlecatalog.com<BR minmax_bound="true">googlecatalogs.com<BR minmax_bound="true">googleclips.com<BR minmax_bound="true">googlecom.com<BR minmax_bound="true">google-compute.com<BR minmax_bound="true">googlecompute.com<BR minmax_bound="true">googlecompute.net<BR minmax_bound="true">googlecompute.org<BR minmax_bound="true">googlecomputers.com<BR minmax_bound="true">googlecomputing.com<BR minmax_bound="true">google-computing.com<BR minmax_bound="true">googledesktop.com<BR minmax_bound="true">google-desktop.com<BR minmax_bound="true">googledigital.info<BR minmax_bound="true">googledigital.net<BR minmax_bound="true">googledigital.org<BR minmax_bound="true">googledirectory.com<BR minmax_bound="true">googledirectory.net<BR minmax_bound="true">googledirectory.org<BR minmax_bound="true">googledoodle.com<BR minmax_bound="true">googledoodle.net<BR minmax_bound="true">googledoodle.org<BR minmax_bound="true">googlee.com<BR minmax_bound="true">googleearth.com<BR minmax_bound="true">googleearth.info<BR minmax_bound="true">googleearth.net<BR minmax_bound="true">googleearth.org<BR minmax_bound="true">googlefoundation.com<BR minmax_bound="true">googlefoundation.net<BR minmax_bound="true">googlefoundation.org<BR minmax_bound="true">googlegear.com<BR minmax_bound="true">googlegear.net<BR minmax_bound="true">googlegear.org<BR minmax_bound="true">googlegoods.com<BR minmax_bound="true">googlegroups.com<BR minmax_bound="true">googleguy.com<BR minmax_bound="true">googleimageads.com<BR minmax_bound="true">googleimages.com<BR minmax_bound="true">googleimagesearch.com<BR minmax_bound="true">google-inc.com<BR minmax_bound="true">googleinstantmessenger.com<BR minmax_bound="true">googleit.com<BR minmax_bound="true">googleit.net<BR minmax_bound="true">googleit.org<BR minmax_bound="true">googlejobs.com<BR minmax_bound="true">googlejobs.net<BR minmax_bound="true">googlejournals.com<BR minmax_bound="true">googlelabs.info<BR minmax_bound="true">googlelabs.net<BR minmax_bound="true">googlelabs.org<BR minmax_bound="true">googlelecture.com<BR minmax_bound="true">googlelibrary.com<BR minmax_bound="true">googlelibrary.info<BR minmax_bound="true">googlelibrary.net<BR minmax_bound="true">googlelibrary.org<BR minmax_bound="true">googlelocal.net<BR minmax_bound="true">googlelocal.org<BR minmax_bound="true">googlemagazines.com<BR minmax_bound="true">googlemagazines.info<BR minmax_bound="true">googlemagazines.net<BR minmax_bound="true">googlemagazines.org<BR minmax_bound="true">googlemail.biz<BR minmax_bound="true">googlemail.com<BR minmax_bound="true">googlemail.info<BR minmax_bound="true">googlemail.org<BR minmax_bound="true">googlemail.us<BR minmax_bound="true">googlemaps.com<BR minmax_bound="true">googlemaps.org<BR minmax_bound="true">googlemastercard.com<BR minmax_bound="true">googleme.com<BR minmax_bound="true">googlemicrofilm.com<BR minmax_bound="true">googlemicrofilm.info<BR minmax_bound="true">googlemicrofilm.net<BR minmax_bound="true">googlemicrofilm.org<BR minmax_bound="true">googlemotherfucker.com<BR minmax_bound="true">googlemovie.info<BR minmax_bound="true">googlemovie.net<BR minmax_bound="true">googlemovie.org<BR minmax_bound="true">googlemovies.info<BR minmax_bound="true">googlemovies.net<BR minmax_bound="true">googlemovies.org<BR minmax_bound="true">googlemusic.com<BR minmax_bound="true">googlenews.net<BR minmax_bound="true">googlenews.org<BR minmax_bound="true">googlenum.com<BR minmax_bound="true">googleoogle.com<BR minmax_bound="true">googleoogle.net<BR minmax_bound="true">googleoogle.org<BR minmax_bound="true">googlepage.org<BR minmax_bound="true">googlepapers.com<BR minmax_bound="true">googlepapers.info<BR minmax_bound="true">googlepapers.net<BR minmax_bound="true">googlepapers.org<BR minmax_bound="true">googleplex.com<BR minmax_bound="true">googleplex.org<BR minmax_bound="true">googleplus.com<BR minmax_bound="true">googleporn.com<BR minmax_bound="true">googleprint.biz<BR minmax_bound="true">googleprint.com<BR minmax_bound="true">googleprint.info<BR minmax_bound="true">googleprint.net<BR minmax_bound="true">googleprint.org<BR minmax_bound="true">googleprint.us<BR minmax_bound="true">googleproxy.com<BR minmax_bound="true">googlequiz.com<BR minmax_bound="true">googlequiz.net<BR minmax_bound="true">googlequiz.org<BR minmax_bound="true">googlereader.com<BR minmax_bound="true">google-reader.com<BR minmax_bound="true">googlereader.info<BR minmax_bound="true">google-reader.info<BR minmax_bound="true">googlereader.net<BR minmax_bound="true">google-reader.net<BR minmax_bound="true">googlereader.org<BR minmax_bound="true">google-reader.org<BR minmax_bound="true">googleregistrar.com<BR minmax_bound="true">googlesatellite.com<BR minmax_bound="true">googlesatellite.info<BR minmax_bound="true">googlesatellite.net<BR minmax_bound="true">googlesatellite.org<BR minmax_bound="true">googlescholar.com<BR minmax_bound="true">googlesearch.com<BR minmax_bound="true">googlesearch.net<BR minmax_bound="true">googleseek.com<BR minmax_bound="true">googlesex.com<BR minmax_bound="true">googlesex.info<BR minmax_bound="true">googleshopping.com<BR minmax_bound="true">googleshopping.net<BR minmax_bound="true">googleshopping.org<BR minmax_bound="true">googlesidebar.com<BR minmax_bound="true">googlesidebar.net<BR minmax_bound="true">googlesidebar.org<BR minmax_bound="true">googlesimplex.com<BR minmax_bound="true">googlesms.biz<BR minmax_bound="true">googlesms.info<BR minmax_bound="true">googlesms.net<BR minmax_bound="true">googlesms.org<BR minmax_bound="true">googlesms.us<BR minmax_bound="true">googlesponsoredlinks.com<BR minmax_bound="true">googlestore.com<BR minmax_bound="true">googlestuff.com<BR minmax_bound="true">google-stuff.com<BR minmax_bound="true">googlesucks.com<BR minmax_bound="true">googlesucks.net<BR minmax_bound="true">googlesucks.org<BR minmax_bound="true">googlesyndication.com<BR minmax_bound="true">googletalk.info<BR minmax_bound="true">googletalk.net<BR minmax_bound="true">googletalk.org<BR minmax_bound="true">googletoolbar.com<BR minmax_bound="true">googletv.com<BR minmax_bound="true">googletv.net<BR minmax_bound="true">googletv.org<BR minmax_bound="true">googlevideo.biz<BR minmax_bound="true">googlevillage.com<BR minmax_bound="true">googlewifi.info<BR minmax_bound="true">googlewifi.net<BR minmax_bound="true">googlewifi.org<BR minmax_bound="true">googlewireless.info<BR minmax_bound="true">googlewireless.net<BR minmax_bound="true">googlewireless.org<BR minmax_bound="true">googleworld.org<BR minmax_bound="true">googli.com<BR minmax_bound="true">googlie.com<BR minmax_bound="true">googlr.com<BR minmax_bound="true">goolge.com<BR minmax_bound="true">gooogle.com<BR minmax_bound="true">gotgoogle.com<BR minmax_bound="true">gppgle.com<BR minmax_bound="true">gppglr.com<BR minmax_bound="true">groupsgoogle.com<BR minmax_bound="true">gtalkr.com<BR minmax_bound="true">guugle.com<BR minmax_bound="true">guugle.org<BR minmax_bound="true">guyindia.com<BR minmax_bound="true">habsplanet.com<BR minmax_bound="true">ho.org<BR minmax_bound="true">howtobuyaweddingring.com<BR minmax_bound="true">igoogle.com<BR minmax_bound="true">igoogle.net<BR minmax_bound="true">igoogle.org<BR minmax_bound="true">infrareddesigns.com<BR minmax_bound="true">issamghanwi.com<BR minmax_bound="true">jamesallen.org<BR minmax_bound="true">janinaordmann.com<BR minmax_bound="true">janina-ordmann.com<BR minmax_bound="true">jenniferwanderer.com<BR minmax_bound="true">jennifer-wanderer.com<BR minmax_bound="true">jinjilake.net<BR minmax_bound="true">kaltix.com<BR minmax_bound="true">kaltix.net<BR minmax_bound="true">kaltix.org<BR minmax_bound="true">kangkang.biz<BR minmax_bound="true">karsanadolulisesi.com<BR minmax_bound="true">karsfenlisesi.com<BR minmax_bound="true">kazimierczuk.net<BR minmax_bound="true">kedrowski.com<BR minmax_bound="true">keyhole.com<BR minmax_bound="true">keyholecorp.com<BR minmax_bound="true">keyholecorp.net<BR minmax_bound="true">keyholecorp.org<BR minmax_bound="true">kimphotosoftware.com<BR minmax_bound="true">latiff.biz<BR minmax_bound="true">lifescapeinc.com<BR minmax_bound="true">loizzos.com<BR minmax_bound="true">lorcanmurray.com<BR minmax_bound="true">lrgx.com<BR minmax_bound="true">m4cs.net<BR minmax_bound="true">mainechaos.com<BR minmax_bound="true">margin15.com<BR minmax_bound="true">markfong.com<BR minmax_bound="true">measuremap.com<BR minmax_bound="true">measuremap.net<BR minmax_bound="true">measuremap.org<BR minmax_bound="true">minzhu.org<BR minmax_bound="true">mobilegoogle.info<BR minmax_bound="true">mobilegoogle.net<BR minmax_bound="true">mobilegoogle.org<BR minmax_bound="true">my-deja.com<BR minmax_bound="true">mydeja.net<BR minmax_bound="true">my-deja.net<BR minmax_bound="true">mydejanews.com<BR minmax_bound="true">my-dejanews.com<BR minmax_bound="true">mygoogle.com<BR minmax_bound="true">my-google.com<BR minmax_bound="true">mygoogle.net<BR minmax_bound="true">my-google.net<BR minmax_bound="true">mygoogle.org<BR minmax_bound="true">my-google.org<BR minmax_bound="true">mypicasa.com<BR minmax_bound="true">namingsolutions.com<BR minmax_bound="true">ngoogle.com<BR minmax_bound="true">nncc.info<BR minmax_bound="true">non-org.net<BR minmax_bound="true">numgoogle.com<BR minmax_bound="true">nwiz.biz<BR minmax_bound="true">ogogle.com<BR minmax_bound="true">oingo.com<BR minmax_bound="true">orcit.com<BR minmax_bound="true">orcut.com<BR minmax_bound="true">orkat.com<BR minmax_bound="true">orkut.biz<BR minmax_bound="true">orkut.com<BR minmax_bound="true">orkut.info<BR minmax_bound="true">orkut.org<BR minmax_bound="true">ozhorde.com<BR minmax_bound="true">pageadgooglesyndication.com<BR minmax_bound="true">philipdryan.com<BR minmax_bound="true">picasa.com<BR minmax_bound="true">picasa.net<BR minmax_bound="true">picasasoftware.com<BR minmax_bound="true">piccasa.net<BR minmax_bound="true">porngoogle.com<BR minmax_bound="true">pyra.com<BR minmax_bound="true">q8planet.com<BR minmax_bound="true">rapidrefocus.com<BR minmax_bound="true">renquan.org<BR minmax_bound="true">requesttimeoff.com<BR minmax_bound="true">richardsbrain.com<BR minmax_bound="true">seeabc.com<BR minmax_bound="true">seedandsaplings.com<BR minmax_bound="true">sellwood.net<BR minmax_bound="true">sergeybrin.com<BR minmax_bound="true">sergeybrin.net<BR minmax_bound="true">sergeybrin.org<BR minmax_bound="true">signacon.net<BR minmax_bound="true">silverflute.net<BR minmax_bound="true">simpel.org<BR minmax_bound="true">smartprogrammer.com<BR minmax_bound="true">smartprogrammer.net<BR minmax_bound="true">sobacka.com<BR minmax_bound="true">sumitbudhiraja.com<BR minmax_bound="true">sumutpos.com<BR minmax_bound="true">support-reverse-smileys.com<BR minmax_bound="true">syncraconstruction.com<BR minmax_bound="true">talageo.com<BR minmax_bound="true">talkcentral.org<BR minmax_bound="true">tampe.info<BR minmax_bound="true">tapata.net<BR minmax_bound="true">team7365.com<BR minmax_bound="true">telageo.com<BR minmax_bound="true">testgmacrfc.com<BR minmax_bound="true">thecarbonneaus.net<BR minmax_bound="true">thedinnerpartynetwork.com<BR minmax_bound="true">timeoffrequest.com<BR minmax_bound="true">timeoffrequests.com<BR minmax_bound="true">timphanmem.com<BR minmax_bound="true">tongwen.net<BR minmax_bound="true">tongwen.org<BR minmax_bound="true">toolbargoogle.com<BR minmax_bound="true">triple-sss.com<BR minmax_bound="true">tvsearch.com<BR minmax_bound="true">urchin.com<BR minmax_bound="true">urching.com<BR minmax_bound="true">urchinstats.com<BR minmax_bound="true">utlemming.org<BR minmax_bound="true">veritablebevy.com<BR minmax_bound="true">wapgmmgjd.com<BR minmax_bound="true">wapgoogle.com<BR minmax_bound="true">wappdapag.com<BR minmax_bound="true">webservicehost.com<BR minmax_bound="true">wherewas.com<BR minmax_bound="true">writely.com<BR minmax_bound="true">wwapgmmgjd.com<BR minmax_bound="true">wwwadwordsselect.com<BR minmax_bound="true">wwwadwords-select.com<BR minmax_bound="true">wwwgoogle.com<BR minmax_bound="true">wwwgooglecom.com<BR minmax_bound="true">wwwgoogleoogle.com<BR minmax_bound="true">wwwgooglesyndication.com<BR minmax_bound="true">wwwpicasa.com<BR minmax_bound="true">wwwpicassa.com<BR minmax_bound="true">wwwpicassa.net<BR minmax_bound="true">wwwpiccasa.com<BR minmax_bound="true">wwwpiccasa.net<BR minmax_bound="true">wwwpiccassa.com<BR minmax_bound="true">wwwpiccassa.net<BR minmax_bound="true">wwwwgoogle.com<BR minmax_bound="true">xjpop.com<BR minmax_bound="true">xn--yvonne-schrder-5pb.com<BR minmax_bound="true">xn--yvonneschrder-rmb.com<BR minmax_bound="true">xvid-x.org<BR minmax_bound="true">xzcz.com<BR minmax_bound="true">yourmailhost.net<BR minmax_bound="true">zipdash.com<BR minmax_bound="true">ziqing.net<BR minmax_bound="true">gdrive.com<BR minmax_bound="true">googledrive.com<BR minmax_bound="true">google.dk<BR minmax_bound="true">google.se<BR minmax_bound="true">google.co.nz<BR minmax_bound="true">google.ca<BR minmax_bound="true">google.cn<BR minmax_bound="true">google.com.pr<BR minmax_bound="true">google.com.ca<BR minmax_bound="true">google.com.ch<BR minmax_bound="true">google.fi<BR minmax_bound="true">google.co.in<BR minmax_bound="true">google.co.uk<BR minmax_bound="true">google.lv<BR minmax_bound="true">google.co.hu<BR minmax_bound="true">google.lk<BR minmax_bound="true">gmale.com<BR minmax_bound="true">google.com.au<BR minmax_bound="true">google.ru<BR minmax_bound="true">google.nl<BR minmax_bound="true">adwords.nl<BR minmax_bound="true">google.be<BR minmax_bound="true">adwords.be<BR minmax_bound="true">google.de<BR minmax_bound="true">gogle.de<BR minmax_bound="true">googel.de<BR minmax_bound="true">google.ro<BR minmax_bound="true">google.kz<BR minmax_bound="true">google.by<BR minmax_bound="true">googlelyrics.com<BR minmax_bound="true">goog1e.com<BR minmax_bound="true">google.no<BR minmax_bound="true">blogger.eu<BR minmax_bound="true">google.pl<BR minmax_bound="true">google.com.pl<BR minmax_bound="true">google.es<BR minmax_bound="true">google.pt<BR minmax_bound="true">google.com.br<BR minmax_bound="true">google.vc<BR minmax_bound="true">google.co.za<BR minmax_bound="true">google.tm<BR minmax_bound="true">google.com.my<BR minmax_bound="true">google.bg<BR minmax_bound="true">frooglegoogle.com<BR minmax_bound="true">google.co.jp<BR minmax_bound="true">google.ie<BR minmax_bound="true">google.co.ck<BR minmax_bound="true">google.com.mx<BR minmax_bound="true">googleshoppinglist.com<BR minmax_bound="true">googlereviews.com<BR minmax_bound="true">googlewishlist.com<BR minmax_bound="true">saturngoogle.com<BR minmax_bound="true">earthgoogle.com<BR minmax_bound="true">mercurygoogle.com<BR minmax_bound="true">venusgoogle.com<BR minmax_bound="true">marsgoogle.com<BR minmax_bound="true">jupitergoogle.com<BR minmax_bound="true">uranusgoogle.com<BR minmax_bound="true">neptunegoogle.com<BR minmax_bound="true">plutogoogle.com<BR minmax_bound="true">googlegalactic.com<BR minmax_bound="true">googlesolarsystem.com<BR minmax_bound="true">google.com.om<BR minmax_bound="true">google.fr<BR minmax_bound="true">google.mu<BR minmax_bound="true">google.cz<BR minmax_bound="true">google.com.ph</SPAN></FONT></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=342" /> 
	  <id>http://www.openx.cn/default.asp?id=342</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[河南大专女生从3万人中突围敲开微软大门]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-08-14T14:20:46+08:00</updated>
	  <published>2006-08-14T14:20:46+08:00</published>
		  <summary type="html"><![CDATA[在90%以上都是硕士生博士生的微软员工群体中，她这名大专生是怎么成功的？7月27日晚7时，记者在北京市知春路西格玛大厦对其进行了专访。<BR>
<DIV style="OVERFLOW-X: auto; WIDTH: 100%"><A><IMG alt=uploads/200608/04_134044_e376efc83a98c777b5f374c424ed54f2.jpg src="http://www.cokoo.net/blog/uploads/200608/04_134044_e376efc83a98c777b5f374c424ed54f2.jpg"></A></DIV><BR>图片说明：李文怡在微软的办公室<BR>　　河南南阳理工学院软件学院学生李文怡，在大学一年级课程刚结束时就被选拔到微软中国的微软HelpDesk技术支持集训营集训，最终成为微软中国的30 名实习生之一。通过努力，她最终成为30名实习生中留在微软中国总部工作的3人之一。在90%以上都是硕士生博士生的微软员工群体中，她这名大专生是怎么成功的？7月27日晚7时，记者在北京市知春路西格玛大厦对其进行了专访。<BR><BR>　　第一扇门：顺利入选50人微软集训营<BR><BR>　　能够成为微软的实习生，李文怡觉得自己非常幸运。<BR><BR>　　微软的实习生选拔程序非常严格。首先要通过所在学校老师和学校领导的推荐和选拔，然后要进行微软的笔试，笔试分专业考试、应变问答和英语翻译；第三步是北京微软中国的电话面试，考验专业知识和沟通能力；第四步是参加微软北京总部的全国集中培训；最后是在北京总部的面试。<BR><BR>　　前三关李文怡过得比较轻松，因为她是学校软件学院办公室主任，组织参加了很多活动，并赢得了不少荣誉。获得推荐并不困难，微软的笔试和电话面试也进行得十分顺利。<BR><BR>　　去年6月份，李文怡顺利进入微软在北京郊区的微软HelpDesk技术支持集训营。共有50名来自全国数百所学校的学生参加，其中很多是名牌大学大二大三的学生，50个人中，只有李文怡和她的三名同学是大专生。在培训中，不但要学习专业知识，更重要的是重视个人素质的培养，比如如何面对客人拜访，怎么组织简单的报告会等等，这些在学校里没人教。在个人素质方面，李文怡觉得自己还不错。因为在初中和高中阶段，她一直担任学校广播站的播音员，高中时期还担任学校宣传部的部长，锻炼了与人沟通的能力。<BR><BR>　　李文怡十分努力，在培训最后的分组考核中，其中有一个环节是讲课，她在她们所在的那一组中获得了讲课第一名。<BR><BR>　　第二扇门：幸运地成为30名微软实习生之一<BR><BR>　　集中培训结束后，李文怡和其他培训者一样，站在了被选择的起跑线上，只有30个人可以进入微软当实习生。<BR><BR>　　但在培训期间，李文怡并没有引起微软培训老师的特别注意。富有戏剧性的是，其中的一个部门很想要一位女实习生，挑选来挑选去，只有李文怡条件比较合适。所以他们选择了李文怡，决定给她两个月的实习期。<BR><BR>　　负责培训的老师告诉她：“你在微软的生命期只有两个月，你如果把握不好，进入微软的大门就会永远关闭。”<BR><BR>　　两个月的生命期意味着什么，李文怡心里十分明白。<BR><BR>　　回家收拾停当，坐了十几个小时的火车来到北京。一下火车，李文怡心里没有一点底气，自己第一次来北京，周围一个人都不认识，自己能不能在这里适应？<BR><BR>　　刚到微软，她什么都不懂，在学校里面一年的学习，在公司里一点都用不上。“在世界第一的软件公司工作，每一刻学到的东西都是我的宝贵的财富和经验。”她自己这样想。<BR><BR>　　她最初的工作从在光缆上贴标签开始。微软的环境，给了她积极学习的动力，不会就问，6周以后，她就可以上项目了。关于这段最初的经历，李文怡给记者搜索出来她当初写的“实习生日记”，其中一段就记录了她当时的景况和心情：“在我的印象中，与其说微软是一个大企业，不如说是一个大家庭，我就是生活在微软的小孩子，健康快乐地成长。刚到微软时，我就是一个名副其实的婴儿，对于工作，一点儿都不懂；对于微软，就像小时候对父亲一样敬畏，担心自己会不小心说错话、做错事，显得畏畏缩缩。但微软让我感到家的温暖和踏实，我一点一滴地学习，逐渐了解自己的工作。我渐渐长大，开始认识我们家里的成员，工作上开始有所感悟。”<BR><BR>　　李文怡的努力赢得了大家的认可。6周以后，她开始被允许从事内部技术支持工作。<BR><BR>　　第三扇门：两个月实习期内获得领导认可<BR><BR>　　曾经领导过她的胡俊高经理在接受记者采访时说：“李文怡本身比较聪明和灵活，她身上有两个比较突出的优点，一个是她性格比较开朗，善于主动做事情，能够在比较陌生的环境里很快地适应下来并很好地开展工作，；另一个就是她比较有责任心，工作交给她比较令人放心。”<BR><BR>　　但李文怡自己心里并没有多少底。两个月的实习期很快就要过去了，李文怡不知道自己的命运是留下来还是离开。<BR><BR>　　“在最后几天，我都收拾好了东西，准备在经理和督导找我谈话之后，立刻带着东西回学校继续上学。”李文怡回忆当时的情形说。<BR><BR>　　但奇怪的是，两个月过后，部门经理和督导并没有找她谈话，她还可以继续留在微软。这意味着她还有机会。<BR><BR>　　很快又两个月过去了，还是没有人找她谈话，她心里才安定下来。她知道自己终于被认可了。<BR><BR>　　后来部门经理调整，新任经理金宣任职时，督导就立刻找到金经理，对她说：“你一定要想办法把李文怡留下来！她是个不错的女孩！”很快，她的工作也得到了金经理的认可。<BR><BR>　　第四扇门：3万人当中选出了3个人<BR><BR>　　今年六月份，公司老总突然找到她，问她在正式转正之前对薪水有什么要求。李文怡对这个提问感到有点突然，她说她没有任何要求，只是想在微软多学一些东西。令她高兴的是，老总还是把她的工资从实习期间的1500元涨了好多。<BR><BR>　　微软正式与她签定了半年的工作合同。其实在签定合同的时候李文怡还是有一些犹豫，是留下来工作还是回去继续上学，她有点拿不定主意。胡俊高经理说，“她当时向我讨主意，我跟她说，在北京一边上学一边工作的机会多得很，我还是劝她留了下来。”<BR><BR>　　胡俊高说，全国软件专业的学生有4万人，学习微软课程的学生有3万人，而微软这次从中挑选的实习生只有30人，而能够留在微软工作的只有3人。所以可以看出微软的要求有多么严格。跟李文怡站在同一起跑线上的很多是清华大学、浙江大学等知名大学的学生。选拔实习生的时候，有一个浙江大学的学生，是学生会的主席，各方面都比较优秀，但是因为在面试的时候经常巧妙地拍考官的马屁而被淘汰。<BR><BR>　　微软的这种选拔制度让李文怡很佩服。微软在使用人才上并不十分看重文凭，在他们的用人观点中，人才就是那些能用和可用之才。<BR><BR>　　第五扇门：融入微软文化下的激情生活<BR><BR>　　转正以后，并非意味着成为微软永远的员工了。微软员工的流动性非常大，被淘汰的现象经常出现。李文怡无疑时时刻刻都感到肩上的压力。<BR><BR>　　“在微软，我们员工的工作生命永远只有6个月。6个月的合同结束后，如果表现优异可以继续留下来工作，如果不能胜任，合同到期将会立刻走人。”李文怡说，她现在虽然正式转正，看似保险了，但如果不努力，走人是必然的。<BR><BR>　　7月27日晚7时，北京市知春路西格玛大厦六楼工作间，不少同事已经下班，但李文怡的工作还没有结束。她正在整理一天工作的记录总结，并制定第二天的工作计划。<BR><BR>　　李文怡租住的房子离单位很近，步行只有5分钟的路程。公司一般是每天上午九点上班，下午五点下班，但是上班时间并不要求打卡，上午晚来一段时间也没有人查问。李文怡说，其实公司对他们的要求挺宽松，工作时间可以自由出入，还可以到楼下的健身房锻炼身体，或者到沙发吧台去休闲一下。渴了饿了可以到茶水间去吃东西，食品和各种饮料应有尽有，想吃什么和喝什么可以随便拿，并且是免费的。”<BR><BR>　　“公司尽量给我们创造一个很宽松的工作环境，但没有一个员工放纵自己，大家都很自觉。”李文怡说，这里的员工工资都很高，他们有车有房，属于不缺钱的一族，“一个人到了不缺钱的境界，他工作是为了什么呢？” 李文怡的反问让人想起了她们的老板比尔·盖茨的那句名言：“每天早晨醒来，一想到所从事的工作和所开发的技术将会给人类生活带来的巨大影响和变化，我就会无比兴奋和激动。”而这正是微软企业文化的核心所在。<BR><BR>　　“我在微软的激情生活才刚刚开始，和其他同事的工作境界相比，我还有很多路要走。”李文怡说。<BR>（李长需张定有/文闫善良/图）<B> </B>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=341" /> 
	  <id>http://www.openx.cn/default.asp?id=341</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[发现我的HotMail邮箱涨到2G了!]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-08-11T09:24:32+08:00</updated>
	  <published>2006-08-11T09:24:32+08:00</published>
		  <summary type="html"><![CDATA[<P>无意中用WEB方式登陆了HotMail,呀界面都变了,还有空间居然2G了~哈哈</P>
<P>&nbsp;</P>
<P>不过可惜HotMail的速度更稳定性一直不太让人满意.</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=340" /> 
	  <id>http://www.openx.cn/default.asp?id=340</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[电脑快捷键大全]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-08-09T10:05:08+08:00</updated>
	  <published>2006-08-09T10:05:08+08:00</published>
		  <summary type="html"><![CDATA[<P><STRONG>单独按Windows</STRONG>：显示或隐藏“开始”功能表 <BR>Windows+BREAK：显示“系统属性”对话框 <BR>Windows+D：显示桌面 <BR>Windows+M：最小化所有窗口 <BR>Windows+Shift+M：还原最小化的窗口 <BR>Windows+E：开启“资源管理器” <BR>Windows+F：查找文件或文件夹 <BR>Windows+CTRL+F：查找电脑 <BR>Windows+F1：显示Windows“帮助” <BR>Windows+R：开启“运行”对话框 <BR>Windows+U：开启“公用程序管理器” <BR>Windows+L：切换使用者（WindowsXP新功能） <BR><BR><STRONG>Ctrl快捷键</STRONG> <BR><BR>Ctrl+S保存 <BR>Ctrl+W关闭程序 <BR>Ctrl+N新建 <BR>Ctrl+O打开 <BR>Ctrl+Z撤销 <BR>Ctrl+F查找 <BR>Ctrl+X剪切 <BR>Ctrl+C复制 <BR>Ctrl+V粘贴 <BR>Ctrl+A全选 <BR>Ctrl+[缩小文字 <BR>Ctrl+]放大文字 <BR>Ctrl+B粗体 <BR>Ctrl+I斜体 <BR>Ctrl+U下划线 <BR>Ctrl+Shift输入法切换 <BR>Ctrl+空格中英文切换 <BR>Ctrl+回车QQ号中发送信息 <BR>Ctrl+Home光标快速移到文件头 <BR>Ctrl+End光标快速移到文件尾 <BR>Ctrl+Esc显示开始菜单 <BR>Ctrl+Shift+&lt;快速缩小文字 <BR>Ctrl+Shift+&gt;快速放大文字 <BR>Ctrl+F5在IE中强行刷新 <BR>Ctrl+拖动文件复制文件 <BR>Ctrl+Backspace启动\关闭输入法 <BR>拖动文件时按住Ctrl+Shift创建快捷方式 <BR><BR><BR><STRONG>Alt快捷键</STRONG> <BR><BR>Alt+F4关闭当前程序 <BR>Alt+空格+C关闭窗口 <BR>Alt+空格+N最小化当前窗口 <BR>Alt+空格+R恢复最小化窗口 <BR>Alt+空格+X最大化当前窗口 <BR>Alt+空格+M移动窗口 <BR>Alt+空格+S改变窗口大小 <BR>Alt+Tab两个程序交换 <BR>Alt+255QQ号中输入无名人 <BR>Alt+F打开文件菜单 <BR>Alt+V打开视图菜单 <BR>Alt+E打开编辑菜单 <BR>Alt+I打开插入菜单 <BR>Alt+O打开格式菜单 <BR>Alt+T打开工具菜单 <BR>Alt+A打开表格菜单 <BR>Alt+W打开窗口菜单 <BR>Alt+H打开帮助菜单 <BR>Alt+回车查看文件属性 <BR>Alt+双击文件查看文件属性 <BR>Alt+X关闭C语言 <BR><BR><BR><BR><STRONG>Shift快捷键</STRONG> <BR><BR>Shift+空格半\全角切换 <BR>Shift+右击右菜单打开方式 <BR>Shift+F10选中文件的右菜单 <BR>Shift+多级文件全部关闭 <BR>Shift+Del直接删除文件 <BR>Shift+＾处在中文标点符号半角在智能ABC中省曰号 <BR>Shift+\处在中文标点符号半角在智能ABC中顿号&nbsp;<BR><BR><STRONG>常规键盘快捷键</STRONG> <BR><BR>Ctrl+C复制。 <BR>Ctrl+X剪切。 <BR>Ctrl+V粘贴。 <BR>Ctrl+Z撤消。 <BR>DELETE删除。 <BR>Shift+Delete永久删除所选项，而不将它放到“回收站”中。 <BR>拖动某一项时按CTRL复制所选项。 <BR>拖动某一项时按CTRL+SHIFT创建所选项目的快捷键。 <BR>F2重新命名所选项目。 <BR>CTRL+向右键将插入点移动到下一个单词的起始处。 <BR>CTRL+向左键将插入点移动到前一个单词的起始处。 <BR>CTRL+向下键将插入点移动到下一段落的起始处。 <BR>CTRL+向上键将插入点移动到前一段落的起始处。 <BR>CTRL+SHIFT+任何箭头键突出显示一块文本。 <BR>SHIFT+任何箭头键在窗口或桌面上选择多项，或者选中文档中的文本。 <BR>Ctrl+A选中全部内容。 <BR>F3搜索文件或文件夹。 <BR>Alt+Enter查看所选项目的属性。 <BR>Alt+F4关闭当前项目或者退出当前程序。 <BR>ALT+Enter显示所选对象的属性。 <BR>Alt+空格键为当前窗口打开快捷菜单。 <BR>Ctrl+F4在允许同时打开多个文档的程序中关闭当前文档。 <BR>Alt+Tab在打开的项目之间切换。 <BR>Alt+Esc以项目打开的顺序循环切换。 <BR>F6在窗口或桌面上循环切换屏幕元素。 <BR>F4显示“我的电脑”和“Windows资源管理器”中的“地址”栏列表。 <BR>Shift+F10显示所选项的快捷菜单。 <BR>Alt+空格键显示当前窗口的“系统”菜单。 <BR>Ctrl+Esc显示“开始”菜单。 <BR>ALT+菜单名中带下划线的字母显示相应的菜单。 <BR>在打开的菜单上显示的命令名称中带有下划线的字母执行相应的命令。 <BR>F10激活当前程序中的菜单条。 <BR>右箭头键打开右边的下一菜单或者打开子菜单。 <BR>左箭头键打开左边的下一菜单或者关闭子菜单。 <BR>F5刷新当前窗口。 <BR>BackSpace在“我的电脑”或“Windows资源管理器”中查看上一层文件夹。 <BR>Esc取消当前任务。 <BR>将光盘插入到CD-ROM驱动器时按SHIFT键阻止光盘自动播放。 <BR><BR><STRONG>对话框快捷键</STRONG> <BR><BR>Ctrl+Tab在选项卡之间向前移动。 <BR>Ctrl+Shift+Tab在选项卡之间向后移动。 <BR>Tab在选项之间向前移动。 <BR>Shift+Tab在选项之间向后移动。 <BR>ALT+带下划线的字母执行相应的命令或选中相应的选项。 <BR>Enter执行活选项动或按钮所对应的命令。 <BR>空格键如果活选项动是复选框，则选中或清除该复选框。 <BR>箭头键活选项动是一组选项按钮时，请选中某个按钮。 <BR>F1显示帮助。 <BR>F4显示当前列表中的项目。 <BR>BackSpace如果在“另存为”或“打开”对话框中选中了某个文件夹，则打开上一级文件夹。 <BR><BR><STRONG>自然键盘快捷键</STRONG> <BR><BR>在“Microsoft自然键盘”或包含Windows徽标键()和“应用程序”键()的其他兼容键盘中，您可以使用以下快捷键。 <BR><BR>请按目的 <BR>显示或隐藏“开始”菜单。 <BR>win+BREAK显示“系统属性”对话框。 <BR>+D显示桌面。 <BR>+M最小化所有窗口。 <BR>+Shift+M还原最小化的窗口。 <BR>+E打开“我的电脑”。 <BR>+F搜索文件或文件夹。 <BR>CTRL++F搜索计算机。 <BR>+F1显示Windows帮助。 <BR>+L如果连接到网络域，则锁定您的计算机，或者如果没有连接到网络域，则切换用户。 <BR>+R打开“运行”对话框。 <BR>显示所选项的快捷菜单。 <BR>+U打开“工具管理器”。 <BR><BR><BR><STRONG>辅助键盘快捷键</STRONG> <BR><BR>请按目的 <BR>右侧SHIFT键八秒钟切换“筛选键”的开和关。 <BR>左边的ALT+左边的SHIFT+PRINTSCREEN切换“高对比度”的开和关。 <BR>左边的ALT+左边的SHIFT+NUMLOCK切换“鼠标键”的开和关。 <BR>Shift键五次切换“粘滞键”的开和关。 <BR>NumLock键五秒钟切换“切换键”的开和关。 <BR>+U打开“工具管理器”。 <BR><BR>“Windows资源管理器”键盘快捷键 <BR><BR>请按目的 <BR>END显示当前窗口的底端。 <BR>主页显示当前窗口的顶端。 <BR>NUMLOCK+数字键盘的星号(*)显示所选文件夹的所有子文件夹。 <BR>NUMLOCK+数字键盘的加号(+)显示所选文件夹的内容。 <BR>NUMLOCK+数字键盘的减号(-)折叠所选的文件夹。 <BR>左箭头键当前所选项 <BR>处于展开状态时折叠该项，或选定其父文件夹。 <BR>右箭头键当前所选项处于折叠状态时展开该项，或选第一个子文件夹。</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=339" /> 
	  <id>http://www.openx.cn/default.asp?id=339</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Goggles-好玩的GOOGLE MAP飞行模拟器游戏(flash)]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-08-08T17:14:18+08:00</updated>
	  <published>2006-08-08T17:14:18+08:00</published>
		  <summary type="html"><![CDATA[<SPAN style="FONT-SIZE: 130%"><A href="http://www.isoma.net/games/goggles.html"><FONT color=#aa77aa size=4>http://www.isoma.net/games/goggles.html</FONT></A><BR><FONT size=4>在</FONT><A href="http://digg.com/playable_web_games/Goggles_The_Google_Maps_flight_simulator"><FONT color=#99aadd size=4>DIGG</FONT></A><FONT size=4>上翻到的，内容是你操纵飞机飞翔在GOOGLE MAP(可选择5个城市)上，这5个城市分别是伦敦、纽约、巴黎、东京、华盛顿。<BR>键盘左右键是2个方向的旋转，前后键是分别是减低飞行高度(降得过低会坠毁哦)和提升飞行高度，A和Z键是控制飞机的速度，空格键是丢炸弹(开始以为是发子弹，但是你一直拉起机头以及提高飞行速度你就会发现是丢炸弹)。<BR>在GOOGLE MAP的场景中飞行真是有趣，可惜互动不是很多，不过这个游戏得到这么多关注，应该会有更多功能吧，值得期待。</FONT><BR></SPAN>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=338" /> 
	  <id>http://www.openx.cn/default.asp?id=338</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[发现一网站不错~]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-08-07T11:46:56+08:00</updated>
	  <published>2006-08-07T11:46:56+08:00</published>
		  <summary type="html"><![CDATA[<A href="http://www.goowy.com">http://www.goowy.com</A>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=337" /> 
	  <id>http://www.openx.cn/default.asp?id=337</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[可恶的流氓软件!我鄙视它作者!]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-08-04T09:12:50+08:00</updated>
	  <published>2006-08-04T09:12:50+08:00</published>
		  <summary type="html"><![CDATA[<P>一个不小心机子被按上了极其无聊,极其可恶的流氓软件~</P>
<P>丫丫的~自己不定时弹出页面~烦死了~</P>
<P>&nbsp;</P>
<P>更可恶的还是用线程注入的手段加到系统进程~~~删不掉瓦~~~</P>
<P>&nbsp;</P>
<P>谁有什么好的解决办法瓦~</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=336" /> 
	  <id>http://www.openx.cn/default.asp?id=336</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[KeyCode常数用法]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-07-31T15:15:52+08:00</updated>
	  <published>2006-07-31T15:15:52+08:00</published>
		  <summary type="html"><![CDATA[<P>KeyCode常数用法<BR>--------------------------------------------------------------------------------<BR><BR>　　可在代码中的任何地方用下列常数代替实际值：<BR>　　<BR>　　常数 值 描述<BR>　　<BR>　　vbKeyLButton 0x1 鼠标左键<BR>　　vbKeyRButton 0x2 鼠标右键<BR>　　vbKeyCancel 0x3 CANCEL 键<BR>　　vbKeyMButton 0x4 鼠标中键<BR>　　vbKeyBack 0x8 BACKSPACE 键<BR>　　vbKeyTab 0x9 TAB 键<BR>　　vbKeyClear 0xC CLEAR 键<BR>　　vbKeyReturn 0xD ENTER 键<BR>　　vbKeyShift 0x10 SHIFT 键<BR>　　vbKeyControl 0x11 CTRL 键<BR>　　vbKeyMenu 0x12 MENU 键<BR>　　vbKeyPause 0x13 PAUSE 键<BR>　　vbKeyCapital 0x14 CAPS LOCK 键<BR>　　vbKeyEscape 0x1B ESC 键<BR>　　vbKeySpace 0x20 SPACEBAR 键<BR>　　vbKeyPageUp 0x21 PAGE UP 键<BR>　　vbKeyPageDown 0x22 PAGE DOWN 键<BR>　　vbKeyEnd 0x23 END 键<BR>　　vbKeyHome 0x24 HOME 键<BR>　　vbKeyLeft 0x25 LEFT ARROW 键<BR>　　vbKeyUp 0x26 UP ARROW 键<BR>　　vbKeyRight 0x27 RIGHT ARROW 键<BR>　　vbKeyDown 0x28 DOWN ARROW 键<BR>　　vbKeySelect 0x29 SELECT 键<BR>　　vbKeyPrint 0x2A PRINT SCREEN 键<BR>　　vbKeyExecute 0x2B EXECUTE 键<BR>　　vbKeySnapshot 0x2C SNAPSHOT 键<BR>　　vbKeyInsert 0x2D INSERT 键<BR>　　vbKeyDelete 0x2E DELETE 键<BR>　　vbKeyHelp 0x2F HELP 键<BR>　　vbKeyNumlock 0x90 NUM LOCK 键<BR>　　A 至 Z 键与 A 杴 Z 字母的 ASCII 码相同：<BR>　　<BR>　　常数 值 描述<BR>　　vbKeyA 65 A 键<BR>　　vbKeyB 66 B 键<BR>　　vbKeyC 67 C 键<BR>　　vbKeyD 68 D 键<BR>　　vbKeyE 69 E 键<BR>　　vbKeyF 70 F 键<BR>　　vbKeyG 71 G 键<BR>　　vbKeyH 72 H 键<BR>　　vbKeyI 73 I 键<BR>　　vbKeyJ 74 J 键<BR>　　vbKeyK 75 K 键<BR>　　vbKeyL 76 L 键<BR>　　vbKeyM 77 M 键<BR>　　vbKeyN 78 N 键<BR>　　vbKeyO 79 O 键<BR>　　vbKeyP 80 P 键<BR>　　vbKeyQ 81 Q 键<BR>　　vbKeyR 82 R 键<BR>　　vbKeyS 83 S 键<BR>　　vbKeyT 84 T 键<BR>　　vbKeyU 85 U 键<BR>　　vbKeyV 86 V 键<BR>　　vbKeyW 87 W 键<BR>　　vbKeyX 88 X 键<BR>　　vbKeyY 89 Y 键<BR>　　vbKeyZ 90 Z 键<BR>　　0 至 9 键与数字 0 杴 9 的 ASCII 码相同：<BR>　　<BR>　　常数 值 描述<BR>　　<BR>　　vbKey0 48 0 键<BR>　　vbKey1 49 1 键<BR>　　vbKey2 50 2 键<BR>　　vbKey3 51 3 键<BR>　　vbKey4 52 4 键<BR>　　vbKey5 53 5 键<BR>　　vbKey6 54 6 键<BR>　　vbKey7 55 7 键<BR>　　vbKey8 56 8 键<BR>　　vbKey9 57 9 键<BR>　　下列常数代表数字键盘上的键：<BR>　　<BR>　　常数 值 描述<BR>　　vbKeyNumpad0 0x60 0 键<BR>　　vbKeyNumpad1 0x61 1 键<BR>　　vbKeyNumpad2 0x62 2 键<BR>　　vbKeyNumpad3 0x63 3 键<BR>　　vbKeyNumpad4 0x64 4 键<BR>　　vbKeyNumpad5 0x65 5 键<BR>　　vbKeyNumpad6 0x66 6 键<BR>　　vbKeyNumpad7 0x67 7 键<BR>　　vbKeyNumpad8 0x68 8 键<BR>　　vbKeyNumpad9 0x69 9 键<BR>　　vbKeyMultiply 0x6A MULTIPLICATION SIGN (*) 键<BR>　　vbKeyAdd 0x6B PLUS SIGN (+) 键<BR>　　vbKeySeparator 0x6C ENTER 键<BR>　　vbKeySubtract 0x6D MINUS SIGN (杴) 键<BR>　　vbKeyDecimal 0x6E DECIMAL POINT (.) 键<BR>　　vbKeyDivide 0x6F DIVISION SIGN (/) 键<BR>　　下列常数代表功能键：<BR>　　<BR>　　常数 值 描述<BR>　　<BR>　　vbKeyF1 0x70 F1 键<BR>　　vbKeyF2 0x71 F2 键<BR>　　vbKeyF3 0x72 F3 键<BR>　　vbKeyF4 0x73 F4 键<BR>　　vbKeyF5 0x74 F5 键<BR>　　vbKeyF6 0x75 F6 键<BR>　　vbKeyF7 0x76 F7 键<BR>　　vbKeyF8 0x77 F8 键<BR>　　vbKeyF9 0x78 F9 键<BR>　　vbKeyF10 0x79 F10 键<BR>　　vbKeyF11 0x7A F11 键<BR>　　vbKeyF12 0x7B F12 键<BR>　　vbKeyF13 0x7C F13 键<BR>　　vbKeyF14 0x7D F14 键<BR>　　vbKeyF15 0x7E F15 键<BR>　　vbKeyF16 0x7F F16 键<BR></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=335" /> 
	  <id>http://www.openx.cn/default.asp?id=335</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[中国程序员的地域分布图]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-31T15:07:56+08:00</updated>
	  <published>2006-07-31T15:07:56+08:00</published>
		  <summary type="html"><![CDATA[<DIV class=content>下面这张图并不是我个人的编造，而是我基于中国最大的软件开发人员<A href="http://www.chinahtml.com/" target=_blank>网站</A>CSDN的平台，在最近做一个专题的时候，在页面上放置了一个计数器，通过对地域的统计而的出来的结果。这个样本的数量超过数千例，因此我认为基本上可以比较准确的反应中国程序员的分部情况。<BR><BR>&nbsp;　　从中，大家可以看到，北京，广东，上海，江苏是程序员分部比较多的地域。而中西部地区明显较少。<BR><BR>
<TABLE width="90%" align=center>
<TBODY>
<TR>
<TD>
<DIV align=center>[img]/attachments/csdn.jpg[/img]</DIV></TD></TR></TBODY></TABLE><BR>　　下面我将各个地域的统计比例也放上来，供大家参考。 
<P>　　北京 18.77 % <BR>　　广东 17.8 % <BR>　　江苏 10.77 % <BR>　　上海 6.3 % <BR>　　浙江 4.72 % <BR>　　湖北 4.36 % <BR>　　四川 4.36 % <BR>　　湖南 3.27 % <BR>　　山东 2.78 % <BR>　　辽宁 2.18 % <BR>　　福建 2.18 % <BR>　　陕西 1.94 % <BR>　　广西 1.82 % <BR>　　安徽 1.57 % <BR>　　黑龙江 1.45 % <BR>　　河北 1.45 % <BR>　　重庆 1.33 % <BR>　　云南 1.09 % <BR>　　天津 0.85 % <BR>　　吉林 0.73 % <BR>　　河南 0.73 % <BR>　　江西 0.61 % <BR>　　香港 0.61 % <BR>　　山西 0.48 % <BR>　　贵州 0.48 % <BR>　　新疆 0.48 % <BR>　　内蒙古 0.24 % <BR>　　海南 0.24 % <BR>　　台湾 0.24 % <BR>　　宁夏 0.24 % <BR>　　西藏 0 % <BR>　　澳门 0 % <BR>　　甘肃 0 % <BR>　　青海 0 % <BR>　　其它地区 5.93 %<BR></P></DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=334" /> 
	  <id>http://www.openx.cn/default.asp?id=334</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[全国DNS和ADSLVPI VCI 整理版]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-31T15:04:06+08:00</updated>
	  <published>2006-07-31T15:04:06+08:00</published>
		  <summary type="html"><![CDATA[石家庄的VPI,VCI值 <BR>NOKIA局端 VPI #= 0 VCI #= 100 <BR>华为局端 VPI #= 0 VCI #= 35 <BR>石家庄505****，775****，365****的局端设备是华为 <BR>上海嘉定区 <BR>VPI 0 <BR>VCI 35 <BR><BR>大庆0 35 <BR><BR>重庆电信： <BR>VPI:8 <BR>VCI:35（局端为实达） <BR><BR>重庆铁通 <BR>VPI:0 <BR>VCI:35（局端为伊泰克） <BR>重庆市忠县： <BR>局端：华为MA5100 <BR>用户端：长虹 CH-500E <BR>VCI：0 35 <BR>重庆北碚 <BR>0.35 <BR>重庆 0 35 <BR>重庆 61.128.128.68 <BR>61.128.192.4 <BR><BR><BR>佳木斯网通 <BR>VPI 8 <BR>VCI 35 <BR><BR>广州 <BR>VPI 8 <BR>VCI 35 <BR><BR>山东临沂 <BR>VPI:8 <BR>VCI:31 <BR><BR>长春一汽 8/35 <BR><BR>深圳的 <BR>NOKIA局端 VPI #= 0 VCI #= 100 <BR>华为局端 VPI #= 8 VCI #= 35 <BR><BR>南京:8/35 <BR><BR>常德0/35 <BR><BR>广西柳州电信 <BR>阿尔卡特局端： <BR>VPI:0 <BR>VCI:35 <BR>西门子局端： <BR>VPI:8 <BR>VCI:35 <BR><BR>广西柳州铁通 <BR>VPI:8 <BR>VCI:81 <BR><BR><BR>福州点心：0*200 <BR><BR>深圳拨打26727273获得<A href="http://www.chinadu.cn/" target=_blank>技术</A>支持 <BR>打1000号之后按 1 再按 2 以获得vci和vpi的数值 <BR><BR>辽宁/营口。8/81 <BR><BR>大庆：0/35 <BR><BR>武汉/武昌 0/30 <BR><BR>河北保定 <BR>VPI：0 <BR>VCI：100 <BR><BR>成都1/33 <BR><BR>大连：vpi:8 <BR>vci:35 <BR>很早的试验用户是0，35 <BR><BR>大庆也为0/35或8/35 <BR><BR>河北沧州：0/ 35 <BR><BR>北京网通 <BR>0/35 <BR><BR>吉林：8/35 <BR><BR>杭州8/35 <BR><BR>湖北三峽 0/ 33 <BR><BR>西安铁通0/35 <BR><BR>攀枝花 8/35 <BR><BR>山东冠县0./40 <BR><BR>山东高密 <BR>VPI 8 <BR>VCI 81 <BR><BR>江西赣州：vpi/vci： 0/35 <BR><BR>西安电信 <BR>vpi:8 <BR>vci:35 <BR><BR>东营通讯公司 <BR>VPI 8 <BR>VCI 88 <BR><BR>福州电信　vpi 0 vci 200 <BR><BR>广东梅州：8/35 <BR><BR>南宁电信，0/35 <BR><BR>西安电信高新局 <BR>8 35 <BR><BR>广东省河源市龙川县 VPI=8.VCI=81 <BR><BR>四川乐山的vpi/vci值0/35 <BR><BR>西安铁通的0 /35 <BR><BR>河南濮阳,中国电信:0/35 <BR><BR>山东济宁 <BR>VPI:8 <BR>VCI:81 <BR><BR>东营电信好象好几个数值：有一个是这样的，VPI：8，VCI：248 <BR>牡丹江 0/ 35 <BR><BR><BR>杭州电信 <BR>阿尔卡特局端： <BR>VPI:8 <BR>VCI:35 <BR>爱立信局端： <BR>VPI:0 <BR>VCI:32 <BR>老用户用的，用爱立信猫 <BR>华为局端： <BR>VPI:8 <BR>VCI:35 <BR><BR>遵义 VPI:0 VCI :35 <BR><BR>武汉电信：VPI：0 VCI：32 <BR><BR>东莞: <BR><BR>NOKIA局端:0....100 <BR><BR>朗讯局端:8......35 <BR><BR>四川内江 <BR>VPI:8 <BR>VCI:35 <BR><BR>广东开平： <BR>VPI: 0 <BR>VCI: 100 <BR><BR>贵阳 0/35 <BR><BR>山东潍坊8/81 <BR><BR><BR>内蒙通辽： <BR>8 <BR>81 <BR><BR>江苏江阴的是 <BR>0/100 <BR><BR>无锡 0/ 100 <BR><BR>湖北黄冈电信 <BR>ADSL 连接模式 : RFC 1483 (MPoA) Routing Mode <BR><BR>VPI : 8 <BR>VCI : 81 <BR><BR>广东汕头 <BR><BR>VPI 8 <BR>VCI 35 <BR>DNS 202.96.128.143 <BR>202.96.128.68 <BR><BR>广西河池：电信：0-35 <BR>河池铁通：0-35 <BR><BR>广东韶关 <BR>VPI 8 <BR>VCI 81 <BR><BR>四川宜宾: <BR>VPI:0 <BR>VCI:35 <BR><BR><BR>天津 0 /35 <BR><BR>福建莆田仙游 0/67 <BR><BR>顺德 <BR>VPI:8 <BR>VCI:81 <BR><BR><BR>福建福清 <BR>VPI=0 <BR>VCI=35 <BR><BR>湖南 <BR><BR>长沙 VPI=0 VCI=32 <BR>岳阳 VPI=8 VCI=81 <BR>郴州 0 35 <BR>株洲 8 35 <BR>桃江 vpi 8 vci 81 <BR>主DNS 202.103.8.81 <BR>幅 202.103.96.68 <BR>湖南 0 35 211.98.2.4 <BR>长沙 0 32 202.103.96.68 202.103.100.206 202.103.96.112 <BR>娄底 8 81 202.103.88.3 <BR>202.103.100.100 <BR><BR>齐鲁石化 <BR>VPI:0 <BR>VCI:35 <BR><BR>甘肃张掖华为局端，0/32 <BR><BR>福州0/200 <BR><BR>安徽安庆 <BR>局端华为8,35 中兴8,81 <BR><BR>淮南 <BR>0/35 <BR><BR>海南0/35 <BR><BR>武汉，南湖 0：32 <BR><BR>202.103.24.68 <BR>202.103.0.117 <BR><BR>内蒙古网通 0 35 德州仪器 <BR><BR>常熟 <BR>vpi 0 <BR>vci 32 <BR><BR><BR>浙江温州： <BR>VPI：8 <BR>VCI:35 <BR><BR>湖北 荆州 <BR><BR>VPI 0 <BR>VCI 33 <BR><BR>唐山 0 /35 <BR><BR>惠州的 <BR>vpi：0 <BR>vci：100 <BR><BR>贵州省贵阳市 <BR>0 35 <BR><BR>江西省宜春市 <BR>0/35 <BR>虚电路值为6 <BR><BR>北京0,35 <BR>江西 <BR>0,35 <BR><BR>山东滨州 <BR>0 40 <BR><BR>山西大同 铁通 <BR>0 32 <BR><BR>西安电信是：0 32 <BR><BR>山东淄博:VPI/VCI 8/81 <BR><BR>宁夏银川 <BR>8 35 <BR><BR>内蒙古呼伦贝尔市 <BR>8 35 <BR>呼伦贝尔市下设的14个旗市均为8/35 <BR><BR>湖北宜昌市夷陵区 <BR>0 35 <BR><BR>贵州省贵阳市电信 <BR>vpi 0 ，vci 35 <BR><BR>辽宁 葫芦岛市 8/81 <BR><BR>咸阳铁通 <BR>8/81 <BR><BR>沈阳网通 <BR>8 35 <BR><BR>上海浦东,电信ADSL: <BR>VPI/VCI:8/35 <BR><BR>四川南充电信 <BR>VPI:0 <BR>VCI:35 <BR><BR>江西宜春:8/81 <BR><BR>武汉武昌区:0 32 <BR><BR>辽宁辽阳 <BR>VPI 8 <BR>VCI 35 <BR><BR>甘肃 天水 网通 0 /32 <BR><BR>地名 VPI VCI DNS <BR>北京 0 35 202.106.196.115 <BR>天津 0 35 202.99.96.68 <BR>广西 0 35 202.103.224.68 <BR>202.103.225.68 <BR>南宁 0 35 202.103.224.68 <BR>梧州 0 35 主　202.103.224.68 <BR>　 备　202.103.229.40　 <BR><BR>玉林 0 35 202.103.224.68 <BR>柳州 0 35 202.103.225.68（主用） <BR>202.103.224.68（备用） <BR><BR>云南 0 35 61.166.150.101 <BR>普洱 0 35 61.166.150.101 <BR>61.166.15.170 <BR>兰州 0 32 <BR>西安 8 35 <BR>长春 8 35 <BR>吉林市 <BR>0 38 202.98.0.68 <BR>0 39 202.98.5.68 <BR><BR>哈尔滨 8 35 <BR>武汉 0 32 202.103.24.68 <BR>新疆乌鲁木齐 0 32 61.128.99.133 <BR>61.128.99.134 <BR>顺德 8 35 202.96.128.68 <BR>　8 81 202.96.128.68 <BR><BR>广州 8 32 202.96.128.68 <BR>8 35 202.96.128.110 <BR><BR>花都、从化 8 35 <BR>中山 8 35 202.96.128.68 <BR>深圳 8 35 202.96.134.133 <BR><BR>佛山高明区 0 100 202.96.128.68 <BR>河源 8 81 202.96.128.143 <BR>202.96.128.43 <BR>惠东 0 100 <BR>东莞 8 35 <BR>从化 8 35 202.96.128.68 <BR>湛江 0 80 202.96.128.68 <BR>8 81 202.96.128.143 <BR>0 100 202.96.128.68 <BR><BR>阳江 <BR>8 35 202.96.128.68 <BR>202.96.135.133 <BR>南海 0 100 202.96.128.68 <BR>202.96.134.133 <BR>江門 0 100 202.96.128.68 <BR>汕尾 0 35 <BR>珠海 8 35 <BR>斗门 0 100 <BR>汕头地区 8 81 DNS1：202.96.128.143 <BR>DMS2：202.96.128.68 <BR>汕头 0 35 <BR>东莞 0 100 <BR>肈庆 <BR>8 81 主控DNS:61.140.7.67 <BR>辅助DNS：202.96.134.133 <BR>主DNS:202.96.128.68 <BR>辅DNS:202.96.128.143 <BR><BR>佛山 8 35 202.96.128.68 <BR>惠州 0 100 <BR>福清 0 200 <BR>揭阳 8 81 <BR>秦皇岛 0 35 主：202.99.160.68 <BR>备:202.99.166.4 <BR><BR>浙江衢州 8 81 主：202.101.172.37 <BR>备:202.96.104.18 <BR>杭州 <BR>8 35 202.101.172.35 <BR>0 32 202.96.104.18 <BR><BR>辽宁 0 35 <BR>辽宁抚顺铁通 8 32 210．52．149．2 <BR>211．98．2．4 <BR>202．96．64．68 网关：10．0．1．254（固定IP） <BR><BR>河南安阳 8 81 202.102.224.68 <BR>202.102.227.68 <BR>濮阳 0 35 202.102.224.68 <BR>202.102.227.68 <BR>驻马店 0 35 202.102.224.68 <BR>河南铁通 0 35 211.98.192.3 <BR>202.102.224.68 <BR>山东 202.102.134.68 <BR>山东省枣庄 8 81 <BR><BR>四川内江（电信）8 35 61.139.46.90 61.139.2.69 <BR>（网通）0 35 221.10.251.196 221.10.251.197 <BR><BR>贵州六盘水 0 35 202.98.198.168 <BR>福建 0 200 202.101.98.55 <BR>202.101.98.54 <BR>南平 0 35 202.101.115.55 <BR>厦门 8 35 <BR>福州 0 200 202.101.98.55 <BR>龙岩 0 35 202.101.98.55 <BR>202.101.113.55 <BR><BR>三明 0 100 202.101.114.55 <BR>陕西榆林 0 35 主 61.134.1.9 <BR>备 61.134.1.4 <BR>安徽合肥 0 35 202.102.192.68 <BR>0 32 202.102.192.68 <BR>0 33 202.102.192.68 <BR><BR>中原油田 8 81 <BR><BR>河南焦作 0 35 10.255.0.68 <BR>202.102.227.68 <BR><BR>上海 8 81 202.96.209.5 <BR>202.96.209.133 <BR>江西南昌 0 35 <BR>樟树市 0 35 　主202.101.224.68 <BR>备202.101.226.68 <BR>江西赣州 0 35 218.87.132.1 <BR>218.87.142.1 <BR><BR>各大网站DNS列表 <BR>天府热线DNS：61.139.2.69 <BR>长春163　　：202.98.0.68 <BR>　　　　　　 202.98.3.68 <BR>263在线　　：211.100.2.130 <BR>　　　　　　 211.100.1.10 <BR>中国万网　 ：210.79.232.248 <BR>　　DNS　　：210.192.103.50　　 (dns1.hichina.com) <BR>　　DNS　　：202.106.169.100　　(dns2.hichina.com) <BR>新网　　　 ：211.99.199.194 <BR>　　　　　 ：211.99.199.195 <BR>263IDC　　 ：211.100.2.130　　(NS.263IDC.COM) <BR>　　　　　 ：211.100.1.10 　　(NSB.263IDC.COM) <BR>其他省市自治区： <BR><BR>香港 ns1.netvigator.com 205.252.144.228 <BR><BR>澳门 vassun2.macau.ctm.net 202.175.3.8 <BR><BR>深圳 ns.shenzhen.gd.cn 202.96.134.133 <BR>202.96.154.8 /202.96.154.15 <BR><BR>北京 ns.bta.net.cn 202.96.0.133 <BR>ns.spt.net.cn 202.96.199.133 <BR>ns.cn.net 202.97.16.195 <BR>202.106.0.20 <BR>202.106.148.1 <BR>202.106.196.115 <BR><BR>广东 ns.guangzhou.gd.cn 202.96.128.143 <BR>dns.guangzhou.gd.cn 202.96.128.68 <BR><BR>上海 ns.sta.net.cn 202.96.199.132 <BR>202.96.199.133 <BR>202.96.209.5 <BR>202.96.209.133 <BR><BR>浙江 dns.zj.cninfo.net 202.96.102.3 <BR>202.96.96.68 <BR>202.96.104.18 <BR><BR>陕西 ns.snnic.com 202.100.13.11 <BR><BR>西安: 202.100.4.15 <BR>202.100.0.68 <BR><BR>天津 ns.tpt.net.cn 202.99.96.68 <BR><BR>辽宁 ns.dcb.ln.cn 202.96.75.68 <BR>202.96.75.64 <BR>202.96.64.68 <BR>202.96.69.38 <BR>202.96.86.18 <BR>202.96.86.24 <BR><BR>江苏 pub.jsinfo.net 202.102.29.3 <BR><BR>四川 ns.sc.cninfo.net 61.139.2.69 <BR><BR><BR><BR>成都: 202.98.96.68 <BR>202.98.96.69 <BR><BR>河北 ns.hesjptt.net.cn 202.99.160.68 <BR><BR>保定: 202.99.160.68 <BR>202.99.166.4 <BR><BR>山西 ns.sxyzptt.net.cn 202.99.198.6 <BR><BR>吉林 ns.jlccptt.net.cn 202.98.0.68 <BR><BR>山东 202.102.152.3 <BR>202.102.128.68 <BR><BR>福建 dns.fz.fj.cn 202.101.98.55 <BR><BR><BR>广西 10.138.128.40 <BR>202.103.224.68 <BR>202.103.225.68 <BR><BR>江西 202.109.129.2 <BR>202.101.224.68 <BR>202.101.240.36 <BR><BR>云南 ns.ynkmptt.net.cn 202.98.160.68 <BR><BR>河南: 202.102.227.68 <BR>202.102.224.68 <BR>202.102.245.12 <BR><BR>新疆: 61.128.97.73 <BR><BR>乌鲁木齐 61.128.97.73 <BR><BR>武汉: 202.103.24.68 <BR><BR>厦门 <BR>202.101.103.55 <BR><BR>江苏,盐城:0/100 <BR><BR>安徽，宣城 8，35 <BR><BR>山东淄博VPI/VCI 0/32 DNS 202.102.152.3/202.102.128.68 <BR>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=333" /> 
	  <id>http://www.openx.cn/default.asp?id=333</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[英特尔正式发布酷睿2处理器]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-27T20:37:58+08:00</updated>
	  <published>2006-07-27T20:37:58+08:00</published>
		  <summary type="html"><![CDATA[<STRONG>CNET中国·ZOL报道:</STRONG>公元2006年7月27日下午15时,也就是1个小时之后,备受期待的英特尔酷睿2处理器就将全球同步发布.作为国内知名IT媒体,ZOL已受邀参加英特尔在上海世纪公园举办的酷睿2处理器发布会,并推出大型报道专题,进行现场直播,请大家准时关注.<BR><BR>
<DIV align=center><STRONG><IMG title=英特尔总部 alt=英特尔总部 src="http://img2.zol.com.cn/product/5/783/ce9Eqm5TD5EXg.jpg" border=0><BR>英特尔logo</STRONG></DIV>
<DIV align=center>&nbsp;</DIV>
<DIV align=center>随着CPU技术与应用的发展，以频率来衡量处理器性能水平的时代已经渐行渐远，消费者越来越追求功耗效率、并行运算能力以及多媒体和游戏表现。英特尔酷睿2双核处理器正是这一发展趋势下的产物，其独有的五大特性充分展现了酷睿微体系结构领先且节能的优势。<BR><STRONG><BR>酷睿2双核处理器的五大特性<!--<table border=0 align=right valign=top width="210" height="210">
 <tr>
    <td align=center height="37"><span ID=ol_stat title='amdsh210210'></span>
    <object  classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=210 height=210 vspace="1" align=middle>
    <param name=SRC value=http://pic.zol.com.cn/2006/amdsh210210.swf><param name=wmode value=transparent></object></td>
  </tr>
</table>--></STRONG> <BR>
<DIV><BR>
<DIV align=left>　　其一，宽位动态执行。和拓宽马路可疏通车流的道理一样，英特尔的这项创新技术使CPU的每一个内核可同时处理更多的指令，增大数据流量，提升数据处理能力。<BR><BR>　　其二，智能控制功率。为降低系统功耗、优化电源使用，使产品能效比更高，酷睿2双核采用了65纳米工艺，在制程方面做出了优化。独特的功率门控技术可以通过精细的逻辑控制机能独立开关各运算单元，智能地打开当前需要运行的子系统，而保持其他部分处于休眠状态，从而大幅降低处理器的功耗及发热。如此一来， PC将不再是个小火炉，而更“冷静”的系统亦可大幅提升处理器的耐用性。<BR><BR>　　其三，共享二级缓存。如果每一个内核都有独立的二级缓存，那便可能造成资源的浪费和数据的延迟。酷睿2双核使两个核心共享一个二级缓存，大幅提升了二级缓存的数据命中率，减少了数据延迟，改进处理器的功效，提升了产品性能和能效比。<BR><BR>　　其四，智能内存访问。缩短内存延迟、优化内存数据访问也可以提升系统性能。英特尔智能内存访问技术可亦预载入和读取数据，并保证运算结果不会出错。这自然提升了程序执行效率。<BR><BR>　　其五，增强数字媒体。酷睿2双核处理器为超逼真游戏和高级数字媒体制作应用提供非凡的性能，并将带给消费者非同一般的数字体验。<BR><BR><STRONG>英特尔酷睿2包括Conroe和Merom<!--<table border=0 align=right valign=top width="210" height="210">
 <tr>
    <td align=center height="37"><span ID=ol_stat title='amdsh210210'></span>
    <object  classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=210 height=210 vspace="1" align=middle>
    <param name=SRC value=http://pic.zol.com.cn/2006/amdsh210210.swf><param name=wmode value=transparent></object></td>
  </tr>
</table>--></STRONG> 
<DIV><BR>
<DIV>　　英特尔酷睿2处理器的英文名称是“Core 2 Duo”，包括桌面和移动版本。针对桌面领域的Core 2 Duo处理器代号为Conroe，而相应的移动版处理器代号为Merom，它们都采用英特尔新一代Core架构。而极致版Pentium XE 965的代替者，新一代Extreme Edition高端桌面处理器将被命名为Core 2 Extreme。</DIV><BR>
<DIV>　　6月27日，英特尔已经发布了首款Core架构服务器端处理器Xeon 5100（Woodcrest）。至此，Core架构处理器已经全部现身。</DIV><BR>
<DIV align=center><A href="http://www.cnbeta.com/index.php?url=http://detail.zol.com.cn/picture_index_46/index456752.shtml"><STRONG><BR><IMG title="Core架构 英特尔正式发布酷睿2处理器" alt="Core架构 英特尔正式发布酷睿2处理器" src="http://img2.zol.com.cn/product/4/752/ceF6yzJrT0ABs.jpg" border=0></STRONG></A><BR><STRONG>Core 2 Duo</STRONG></DIV><BR>
<DIV align=left>　　英特尔酷睿2处理器（Conroe和Merom）采用65nm工艺技术，共享式二级缓存。</DIV><BR>
<DIV align=center><A href="http://www.cnbeta.com/index.php?url=http://detail.zol.com.cn/picture_index_46/index456751.shtml"><STRONG><IMG title="Core架构 英特尔正式发布酷睿2处理器" alt="Core架构 英特尔正式发布酷睿2处理器" src="http://img2.zol.com.cn/product/4/751/cekZrqCXe3fco.jpg" border=0></STRONG></A><BR><STRONG>Core 2 Extreme</STRONG></DIV><BR>
<DIV>　　此前，英特尔发言人Bill Kircos表示，酷睿2处理器将采用新编号方法，来更好地标识处理器的功耗和性能。其中，桌面端Conroe处理器将采用E4000系列和E6000系列作为编号，而移动端Merom处理器将使用T5000系列和T7000系列作为编号。<BR></DIV></DIV></DIV></DIV></DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=332" /> 
	  <id>http://www.openx.cn/default.asp?id=332</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[0605号台风 "格美" 即将正面袭击福建.]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-25T10:35:49+08:00</updated>
	  <published>2006-07-25T10:35:49+08:00</published>
		  <summary type="html"><![CDATA[<P>[img]http://www.typhoon.gov.cn/yubao/ttyy.jpg[/img]</P>
<P>2006-7-25 今年第0605号台风格美（Kaemi）07月25日09时（北京时间）的中心位置在北纬23.8度，东经119.5度，中心气压 970百帕，近中心最大风速35米/秒。移向 NW,移速 15公里/小时，七级大风圈半径 430公里，十级大风圈半径 100公里。<BR></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=331" /> 
	  <id>http://www.openx.cn/default.asp?id=331</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[来一个全晰的显示器]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-24T16:43:55+08:00</updated>
	  <published>2006-07-24T16:43:55+08:00</published>
		  <summary type="html"><![CDATA[<P>活活很帅气的说</P>
<P>下载了再看吧</P>
<P><A href="http://www.openx.cn/attachments/Helio_2006_v1.mov">http://www.openx.cn/attachments/Helio_2006_v1.mov</A></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=330" /> 
	  <id>http://www.openx.cn/default.asp?id=330</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[收到一个假工行的邮件]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-24T14:51:13+08:00</updated>
	  <published>2006-07-24T14:51:13+08:00</published>
		  <summary type="html"><![CDATA[<P>工行的朋友小心了</P>
<P>以下是邮件的 Details</P>
<P>----------------------------------------------------------------------------------</P>
<P>X-Message-Status: n:0<BR>X-SID-PRA: =?GB2312?B?1tC5+rmkyczS+NDQz7XNs8n9vLbNqNaq?= &lt;<a href="http://www.openx.cn/mailto:webmastr@icbc.com.cn">webmastr@icbc.com.cn</A>&gt;<BR>X-SID-Result: TempError<BR>X-Message-Info: txF49lGdW42JP5ybviEQbl07RHkAiN5eA6LwfDe13iM=<BR>Received: from icbc.com.cn ([218.25.72.70]) by bay0-mc2-f10.bay0.hotmail.com with Microsoft SMTPSVC(6.0.3790.2444);<BR>&nbsp; Sun, 23 Jul 2006 20:47:31 -0700<BR>Received: from unknown (HELO vlm3015.net) (176.179.208.7)<BR>&nbsp;by 59.45.13.15 with SMTP; 24 Jul 2006 03:58:32 -0000<BR>X-Originating-IP: [176.179.208.7]<BR>Date: Mon, 24 Jul 2006 11:58:31 +0800<BR>From: "=?GB2312?B?1tC5+rmkyczS+NDQz7XNs8n9vLbNqNaq?=" &lt;<a href="http://www.openx.cn/mailto:webmastr@icbc.com.cn">webmastr@icbc.com.cn</A>&gt;<BR>To: "cxty" &lt;<a href="http://www.openx.cn/mailto:cxty@msn.com">cxty@msn.com</A>&gt;<BR>Reply-To: &lt;<a href="http://www.openx.cn/mailto:webmastr@icbc.com.cn">webmastr@icbc.com.cn</A>&gt;<BR>Subject: =?GB2312?B?1tC5+rmkyczS+NDQz7XNs8n9vLbNqNaq?=<BR>X-Mailer: VolleyMail 6.0[cn]<BR>Mime-Version: 1.0<BR>X-Priority: 3<BR>X-MSMail-Priority: Normal<BR>Content-Type: text/html;<BR>&nbsp;charset="GB2312"<BR>Content-Transfer-Encoding: base64<BR>Return-Path: <a href="http://www.openx.cn/mailto:webmastr@icbc.com.cn">webmastr@icbc.com.cn</A><BR>Message-ID: &lt;<a href="http://www.openx.cn/mailto:BAY0-MC2-F10k9LqOVo0031772f@bay0-mc2-f10.bay0.hotmail.com">BAY0-MC2-F10k9LqOVo0031772f@bay0-mc2-f10.bay0.hotmail.com</A>&gt;<BR>X-OriginalArrivalTime: 24 Jul 2006 03:47:32.0499 (UTC) FILETIME=[E4B44630:01C6AED3]</P>
<P>----------------------------------------------------------------------------------</P>
<P>大家看到没有虽然发件人是 icbc.com.cn的但是这个可是可以伪造的哦.</P>
<P>点进去是一个工行用户登陆界面地址是(<A href="http://wangpeng.a10.99to.com/login.asp">http://wangpeng.a10.99to.com/login.asp</A>)明显是假的</P>
<P>工行的登陆地址是:https://mybank.icbc.com.cn/ 是有 SSL加密的哦!</P>
<P>哈这要是输入你的账号跟密码那就卡上的钱钱立马就飞了~</P>
<P>&nbsp;</P>
<P>这才是工行的升级通知</P>
<P><A href="http://www.95588.com/gonggao/2006nian/0720/sy_pop_dzyhsjtg060721.htm">http://www.95588.com/gonggao/2006nian/0720/sy_pop_dzyhsjtg060721.htm</A></P>
<P>大家切忌工行网址 <A href="http://www.95588.com">www.95588.com</A> 还有 <A href="http://www.icbc.com.cn">www.icbc.com.cn</A>&nbsp;其他都是假的!</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=329" /> 
	  <id>http://www.openx.cn/default.asp?id=329</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[成为TalkMe的支持者!]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=8" label="TalkMe" /> 
	  <updated>2006-07-23T09:42:00+08:00</updated>
	  <published>2006-07-23T09:42:00+08:00</published>
		  <summary type="html"><![CDATA[<P><STRONG><FONT color=#ff0000 size=5>成为TalkMe的支持者!</FONT></STRONG></P>
<P>就在<A href="http://www.talkme.cn/SupportersLink.html">http://www.talkme.cn/SupportersLink.html</A></P>
<P>只需要<FONT color=#ff0000>两步</FONT>操作,系统<FONT color=#ff0000>自动</FONT>验证,支持连接<FONT color=#ff0000>立即</FONT>生效.</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=328" /> 
	  <id>http://www.openx.cn/default.asp?id=328</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[几种常见文件格式的说明文档]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-22T18:46:18+08:00</updated>
	  <published>2006-07-22T18:46:18+08:00</published>
		  <summary type="html"><![CDATA[<P><STRONG>BMP图象格式</STRONG>:&nbsp;<A href="http://dev.gameres.com/Program/Visual/Other/BMPFormat.htm" target=_blank>http://dev.gameres.com/Program/Visual/Other/BMPFormat.htm</A>&nbsp;<BR><STRONG>BMP文件结构的探索</STRONG>:&nbsp;<A href="http://dev.gameres.com/Program/Visual/Other/WhatIfBMPFormat.doc" target=_blank>http://dev.gameres.com/Program/Visual/Other/WhatIfBMPFormat.doc</A><BR><STRONG>JPEG&nbsp;简易文档</STRONG>:&nbsp;<A href="http://dev.gameres.com/Program/Visual/Other/JPEG.htm" target=_blank>http://dev.gameres.com/Program/Visual/Other/JPEG.htm</A>&nbsp;<BR><STRONG>GIF文档</STRONG>:&nbsp;<A href="http://dev.gameres.com/Program/Visual/Other/GIFDoc.htm" target=_blank>http://dev.gameres.com/Program/Visual/Other/GIFDoc.htm</A>&nbsp;<BR><STRONG>PNG格式</STRONG>:&nbsp;<A href="http://dev.gameres.com/Program/Visual/Other/PNGFormat.htm" target=_blank>http://dev.gameres.com/Program/Visual/Other/PNGFormat.htm</A></P>
<P>&nbsp;</P>
<P>打个记号!</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=327" /> 
	  <id>http://www.openx.cn/default.asp?id=327</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[12颗互联网超新星]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-22T18:26:10+08:00</updated>
	  <published>2006-07-22T18:26:10+08:00</published>
		  <summary type="html"><![CDATA[<STRONG>在web2.0的热潮下，每天都有无数新网站诞生，也有一些如流星般坠落。这12个网站是新生网站中的佼佼者，也是幸运儿。其中也许就有几个能在不久的将来成为新的flickr或者美味书签。<BR></STRONG>这些新网站秉承了以往web2.0成功网站的很多特性，并极具个性和创新精神，功能也涵盖到了日常生活中更多的方面。在6月21日-23日，又雅虎主办的2006年互联网新生展示会（Connected Innovators2006)上，这12个网站脱颖而出，成为倍受关注的超新星。<BR><BR>StumbleUpon<BR><BR><A title=http://www.stumbleupon.com href="http://www.stumbleupon.com/" target=_blank>http://www.stumbleupon.com</A><BR><BR>StumbleUpon是一个附加在浏览器上的工具栏，下载后你就能方便地看到各种类别下的网站，像使用自己的收藏夹一样方便。别列在工具栏里的网站都是网友的选择，你可以对它们进行评分，以决定它们的顺序。<BR><BR>Vpod.tv<BR><BR><A title=http://www.vpod.tv href="http://www.vpod.tv/" target=_blank>http://www.vpod.tv</A><BR><BR>Vpod提供的分享功能与youtube类似，它的特色在于提供方便的格式转换功能，比如专供ipod和psp等手持设备播放的格式。简单地说，他们把用户分享的视频文件从显示器上搬到用户手中。<BR><BR>PostApp<BR><BR><A title=http://www.postapp.com href="http://www.postapp.com/" target=_blank>http://www.postapp.com</A><BR><BR>PostApp也是一项附属服务，它可以帮助博客和网站的主人方便而快捷地把网络服务放在自己的网站上。目前提供类似服务的网站虽然不少，但相对来说操作起来比较复杂，PostApp把这一切简化了，对于那些想让自己的博客看起来丰富一些，又没有太多技术基础的人来说应该是个不错的消息。<BR><BR>GearON<BR><BR><A title=http://www.protomobl.com href="http://www.protomobl.com/" target=_blank>http://www.protomobl.com</A><BR><BR>一个建立在手机上的社会网络平台。可以根据手机里的通讯录建立一个小圈子，并在彼此之间分享照片、音乐等文档，并发送最新活动通知。<BR><BR>Attensa<BR><BR><A title=http://www.attensa.com href="http://www.attensa.com/" target=_blank>http://www.attensa.com</A><BR><BR>可以应用在OUTLOOK、手机等平台上的RSS阅读器。<BR><BR>Sharpca&#115;t<BR><BR><A title=http://www.sharpca&#115;t.com href="http://www.sharpca&#115;t.com/" target=_blank>http://www.sharpca&#115;t.com</A><BR><BR>用作同步手机文件的服务，目前推出了同步图片的版本，接下来会推出其他格式的分享程序。<BR><BR>Webaroo<BR><BR><A title=http://www.webaroo.com href="http://www.webaroo.com/" target=_blank>http://www.webaroo.com</A><BR><BR>这个网站的功能是保存用户任何在网上看到的内容，Webaroo提供的读取服务可以在离线状态下进行。<BR><BR>Ether<BR><BR><A title=http://www.ether.com href="http://www.ether.com/" target=_blank>http://www.ether.com</A><BR><BR>一个非常有趣的服务，可以用它来出售自己的空余时间，盈利的方式是接听电话。你可以把网站提供的图标放在自己的博客上，只要有在Ether注册的用户与你通话，就能为自己带来收入。<BR><BR>Zixxo<BR><BR><A title=http://www.zixxo.com href="http://www.zixxo.com/" target=_blank>http://www.zixxo.com</A><BR><BR>专门分享和交换优惠券的站点。无论对消费者还是商家来说，这都是一个值得尝试的站点。<BR><BR>Soonr<BR><BR><A title=http://www.soonr.com href="http://www.soonr.com/" target=_blank>http://www.soonr.com</A><BR><BR>又一项手机服务，通过这个网站，普通手机可以与Skype用户通话，最大的优势就是价格低廉，但国内用户暂时无法使用。<BR><BR>Lifeo<BR><BR><A title=http://www.lifeo.com href="http://www.lifeo.com/" target=_blank>http://www.lifeo.com</A><BR><BR>网站尚未正式开放。据开发者称，Lifeo将会提供一套全新的生活管理服务，其中包括即时通讯、电子邮件、联系人、待办事项等。感兴趣的网友可以去网站留下自己的email，网站开通时会获得通知。<BR><BR>Netvibes<BR><BR><A title=http://www.netvbes.com href="http://www.netvbes.com/" target=_blank>http://www.netvbes.com</A><BR><BR>新闻聚合站点，Netvibes爱好者制作的大量独立程序使这个网站的功能越来越强大。<BR><BR>来源：外滩画报 总第190期]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=326" /> 
	  <id>http://www.openx.cn/default.asp?id=326</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[真正的 3D 操作界面︰BumpTop]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-21T14:24:01+08:00</updated>
	  <published>2006-07-21T14:24:01+08:00</published>
		  <summary type="html"><![CDATA[<P><IMG alt="" src="http://www.haoxiaowei.com/attachments/month_0606/62006629172230.jpg"></P>
<P>BumpTop 采用酷极了的3D技术，把图标立体化，同时拖拽动作也是别有动感，充满智慧。你可以完全抛弃原先单调的2D和伪3D界面，因为这个界面操作起来是相当应手，同时还让人想起拉斯韦加斯赌场里老练的洗牌动作。<BR><BR>观看视频演示：</P>
<P><EMBED src=http://www.youtube.com/v/M0ODskdEPnQ width=425 height=350 type=application/x-shockwave-flash></EMBED></P>
<P>视频下载：<A href="http://honeybrown.ca/Pubs/BumpTop.html">http://honeybrown.ca/Pubs/BumpTop.html</A></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=325" /> 
	  <id>http://www.openx.cn/default.asp?id=325</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[想想给TalkMe取个中文名]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=8" label="TalkMe" /> 
	  <updated>2006-07-20T15:55:11+08:00</updated>
	  <published>2006-07-20T15:55:11+08:00</published>
		  <summary type="html"><![CDATA[<P>TalkMe的意思就是与我交谈</P>
<P>想要实现的是一个免费的可以方便有自己站点的人方便的跟游客交谈的工具.</P>
<P>并在此基础上提供更多免费的站长工具.</P>
<P>那她应该叫个什么样的中文名呢?</P>
<P>又生动又好记还比较前卫的~哈哈~</P>
<P>&nbsp;</P>
<P>想想~要好好想想~</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=323" /> 
	  <id>http://www.openx.cn/default.asp?id=323</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[TalkMe的Demo很有可能会提前发布~]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=8" label="TalkMe" /> 
	  <updated>2006-07-20T15:47:46+08:00</updated>
	  <published>2006-07-20T15:47:46+08:00</published>
		  <summary type="html"><![CDATA[<P>发现最近空闲时写代码特快.</P>
<P>核心部分已经写了60%,70%了.(已经完成了网络硬盘,网络收藏夹,机器人养成等多个本计划在第三期开发的模块,因为在第一期内有关联到部分模块,所以就顺便做咯~哈)</P>
<P><FONT color=#ff0000>不过一个人开发实在累呀(一直在javascript,c#,Delphi,css,html之间切换编码,丫丫的有时候都写混了,偶尔还要玩玩PS搞搞图霍霍,自己都成多面手了)~有没有志同道合的朋友一起加入talkme的开发小组吧.</FONT></P>
<P>弄好客户端的脚本就可以发demo了~哈.</P>
<P>内测申请只是发布在 talkme.cn 的页子上.</P>
<P>现在公布在日志上,嘿秀~</P>
<P>现在任何人都申请内测</P>
<P>详见:<A href="http://www.talkme.cn"><FONT face="Arial Black" size=4>http://www.talkme.cn</FONT></A></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=322" /> 
	  <id>http://www.openx.cn/default.asp?id=322</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[瞎逛的收货~]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-20T15:07:14+08:00</updated>
	  <published>2006-07-20T15:07:14+08:00</published>
		  <summary type="html"><![CDATA[<P>瞎逛中发现一个专门收集网站历史的站点~</P>
<P><A href="http://www.infomall.cn/cgi-bin/mallgate/*/http://www.openx.cn">http://www.infomall.cn/cgi-bin/mallgate/*/http://www.openx.cn</A></P>
<P>居然还能找到去年openx.cn刚刚诞生时的日志~</P>
<P>那段时间真让人回味.</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=321" /> 
	  <id>http://www.openx.cn/default.asp?id=321</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[骗子真多~同行小心咯!]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-20T10:32:39+08:00</updated>
	  <published>2006-07-20T10:32:39+08:00</published>
		  <summary type="html"><![CDATA[<P>今天路过CSDN时看到一帖</P>
<P>气愤,在这个版接活,被人骗了,大家都来评评理,说好6000,最后却说500,缺乏诚信,欺骗弱势程序员,人是清华紫光 </P>
<P><A href="http://community.csdn.net/Expert/topic/4886/4886085.xml?temp=.4514887">http://community.csdn.net/Expert/topic/4886/4886085.xml?temp=.4514887</A></P>
<P>谈好的项目最后只付500,那所谓的经理买白菜呀!</P>
<P>这年头骗子满街都是!同行们小心啦!</P>
<P>&nbsp;</P>
<P>我们需要为自己留一手.不然白白花费了精力跟时间.</P>
<P>到最后不能拿到相应的汇报.</P>
<P><FONT color=#000000>这年头我们容易吗!</FONT></P>
<P>=====================================</P>
<P><FONT color=#ff0000><STRONG>没有收到50%订金免谈!</STRONG></FONT></P>
<P><STRONG><FONT color=#ff0000>没有收到60%酬劳,程序只能远程演示!</FONT></STRONG></P>
<P><FONT color=#ff0000><STRONG>没有收到80%酬劳,代码免谈!</STRONG></FONT></P>
<P><FONT color=#000000>=====================================</FONT></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=320" /> 
	  <id>http://www.openx.cn/default.asp?id=320</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[曾经的你：几大门户网站最初的样子]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-19T22:42:06+08:00</updated>
	  <published>2006-07-19T22:42:06+08:00</published>
		  <summary type="html"><![CDATA[<P><A href="http://blog.donews.com/images/blog_donews_com/sepsea/118531/o_sina19991007.jpg" target=_blank><IMG id=ViewPicture.ascx_GalleryImage style="BORDER-RIGHT: black 2px solid; BORDER-TOP: black 2px solid; BORDER-LEFT: black 2px solid; BORDER-BOTTOM: black 2px solid" height=210 alt=sina19991007 src="http://blog.donews.com/images/blog_donews_com/sepsea/118531/r_sina19991007.jpg" width=280></A>&nbsp;&nbsp;<A href="http://blog.donews.com/images/blog_donews_com/sepsea/118531/o_163com19991011.jpg" target=_blank><IMG id=ViewPicture.ascx_GalleryImage style="BORDER-RIGHT: black 2px solid; BORDER-TOP: black 2px solid; BORDER-LEFT: black 2px solid; BORDER-BOTTOM: black 2px solid" height=210 alt=163com19991011 src="http://blog.donews.com/images/blog_donews_com/sepsea/118531/r_163com19991011.jpg" width=280></A></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;新浪网1999年10月7日&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; 网易1999年10月11日</P>
<P><A href="http://blog.donews.com/images/blog_donews_com/sepsea/118531/o_sohu19990125.jpg" target=_blank><IMG id=ViewPicture.ascx_GalleryImage style="BORDER-RIGHT: black 2px solid; BORDER-TOP: black 2px solid; BORDER-LEFT: black 2px solid; BORDER-BOTTOM: black 2px solid" height=210 alt=sohu19990125 src="http://blog.donews.com/images/blog_donews_com/sepsea/118531/r_sohu19990125.jpg" width=280></A>&nbsp; <A href="http://blog.donews.com/images/blog_donews_com/sepsea/118531/o_yahoo19961017.jpg" target=_blank><IMG id=ViewPicture.ascx_GalleryImage style="BORDER-RIGHT: black 2px solid; BORDER-TOP: black 2px solid; BORDER-LEFT: black 2px solid; BORDER-BOTTOM: black 2px solid" height=210 alt=yahoo19961017 src="http://blog.donews.com/images/blog_donews_com/sepsea/118531/r_yahoo19961017.jpg" width=280></A></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 搜狐1999年12月5日&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;雅虎1996年10月17日</P>
<P><A href="http://blog.donews.com/images/blog_donews_com/sepsea/118531/o_alibaba20000208.jpg" target=_blank><IMG id=ViewPicture.ascx_GalleryImage style="BORDER-RIGHT: black 2px solid; BORDER-TOP: black 2px solid; BORDER-LEFT: black 2px solid; BORDER-BOTTOM: black 2px solid" height=210 alt=alibaba20000208 src="http://blog.donews.com/images/blog_donews_com/sepsea/118531/r_alibaba20000208.jpg" width=280></A>&nbsp; <A href="http://blog.donews.com/images/blog_donews_com/sepsea/118531/r_alibaba20000510.jpg" target=_blank><IMG id=ViewPicture.ascx_GalleryImage style="BORDER-RIGHT: black 2px solid; BORDER-TOP: black 2px solid; BORDER-LEFT: black 2px solid; BORDER-BOTTOM: black 2px solid" height=210 alt=alibaba20000510 src="http://blog.donews.com/images/blog_donews_com/sepsea/118531/r_alibaba20000510.jpg" width=280></A></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 阿里巴巴2000年2月8日&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;阿里巴巴2000年5月10日</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=319" /> 
	  <id>http://www.openx.cn/default.asp?id=319</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[霍霍~普通屏幕也素有坏点地~]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-18T17:08:02+08:00</updated>
	  <published>2006-07-18T17:08:02+08:00</published>
		  <summary type="html"><![CDATA[<P>刚刚在写个文档的时候发现屏幕有个小小的红点,有点带黑.</P>
<P>刷新屏幕还在,用手搓搓~还在~认真瞅瞅~原来是屏幕里面~</P>
<P>霍霍就素传说液晶屏幕上的坏点的说!</P>
<P>&nbsp;</P>
<P>丫丫~还以为只有液晶会有坏点的说法,</P>
<P>原来普通纯平也素有坏点的说哦~</P>
<P>哇~重大发现的说!</P>
<P>&nbsp;</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=318" /> 
	  <id>http://www.openx.cn/default.asp?id=318</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[ChinaUI整改中。。。]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-17T09:14:00+08:00</updated>
	  <published>2006-07-17T09:14:00+08:00</published>
		  <summary type="html"><![CDATA[<P>今天登陆ChinaUI发现如下景象，还以为被黑了，还是其他原因，糊糊～</P>
<P><img style="POSITION: static" src="http://www.openx.cn//include/Editor/UploadFile/200671791219109.jpg" border=0></P>
<P>赶紧开启QQ 看到 Bluesky.Hao 的QQ上写的 ChinaUI整改中。希望整改后的ChinaUI更完善！</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=317" /> 
	  <id>http://www.openx.cn/default.asp?id=317</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[推荐“一个百万富翁的初恋”]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-14T23:07:10+08:00</updated>
	  <published>2006-07-14T23:07:10+08:00</published>
		  <summary type="html"><![CDATA[<P>非常难得的好片，一个人看感触很多，全片看下我湿润了三次眼眶。</P>
<P><img src="http://www.openx.cn//include/Editor/UploadFile/200671423441865.gif" border=0></P>
<P>强烈推荐！其他我就不多说了，看了就知道了～</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=316" /> 
	  <id>http://www.openx.cn/default.asp?id=316</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[麦当劳户外广告｛转｝]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-14T10:33:30+08:00</updated>
	  <published>2006-07-14T10:33:30+08:00</published>
		  <summary type="html"><![CDATA[当劳户外广告让我想起了中国的影子记时方法.<BR>这幅广告牌也是依据影子的移动,产生不同效果,分别指向不同的产品.非常妙的创意<BR>
<DIV align=center><IMG alt="http://photo7.yupoo.com/20060714/075947_1765890016_HFSdb.jpg " src="http://photo7.yupoo.com/20060714/075947_1765890016_HFSdb.jpg"></DIV><BR>中国的东西又被外国人学走了,我们要加油了]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=315" /> 
	  <id>http://www.openx.cn/default.asp?id=315</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[熬夜的保健知识大全]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-12T17:04:11+08:00</updated>
	  <published>2006-07-12T17:04:11+08:00</published>
		  <summary type="html"><![CDATA[<SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;熬夜常识</SPAN><BR>　　熬夜也要有技巧，才能依然身体硬朗，否则，铁打的身体，也受不了如此的日夜 操劳呢～因此，想要熬夜的您，千万记住： <BR>　　１：不要吃泡面来填饱肚子，以免火气太大，最好尽量以水果、土司、面包、清粥小菜来充饥。 <BR>　　２：开始熬夜前，来一颗维他命ｂ群营养丸，维他命ｂ能够解除疲劳，增强人体免疫力。 <BR>　　３：提神饮料，最好以绿茶为主，可以提神，又可以消除体内多余的自由基，让您神清气爽；但是肠不好的人，最好改喝枸杞子泡热水的茶，可以解压，还可以明目呢！ <BR>　　４：熬夜前千万记得卸妆，或是先把脸洗干净，以免厚厚的粉层或油渍，在熬夜的煎熬下长满脸痘痘。 <BR>　　５：熬夜之后，第二天中午时千万记得打个小盹。生理时钟，一般而言熬夜是不容易补救的，补救的原则还是建议您改回原来的睡眠时间，尤其是熬夜会使生理时钟发生问题，此时要改回原先的睡觉时间会较难，可建议您不论前一晚多晚睡，次日一定同一时间起床（如设定７点起床），白天想睡时不可卧床大睡，仅能趴着小睡如此便能逐渐将入睡时间提早。 <BR>==========================================<BR>　　<SPAN style="COLOR: blue">生理时钟说明 </SPAN><BR>　　00：00～01：00 浅眠期 多梦而敏感，身体不适者易在此时痛醒。 <BR>　　01：00～02：00 排毒期 此时肝脏为排除毒素而活动旺盛，应让身体进入睡眠状态，让肝脏得以完成代谢废物。 <BR>　　02：00～03：00 休眠期 重症病人最易发病的时刻，常有患病者在此时死亡，熬夜最好勿超过这个时间。 <BR>　　09：00～11：00 精华期 此时为注意力及记忆力最好，且工作与学习的最佳时段。 <BR>　　12：00～13：00 午休期 最好静坐或闭目休息一下再进餐，正午不可饮酒，易醉又伤肝哦！ <BR>　　14：00～15：00 高峰期 是分析力和创造力得以发挥淋漓的极致时段！ <BR>　　16：00～17：00 低潮期 体力耗弱的阶段，最好补充水果来解馋，避免因饥饿而贪食致肥胖。 <BR>　　17：00～18：00 松散期 此时血糖略增，嗅觉与味觉最敏感，不妨准备晚膳来提振精神。 <BR>　　19：00～20：00 暂憩期 最好能在饭后３０分钟去散个步或沐浴，放松一下，纾解一日的疲倦困顿。 <BR>　　20：00～22：00 夜修期 此为晚上活动的巅峰时段，建议您善用此时进行商议，进修等需要思虑周密的活动。 <BR>　　23：00～24：00 夜眠期 经过镇日忙碌，此时应该放松心情进入梦乡，千万别让身体过度负荷，那可得不偿失哦！ <BR>　　提醒大家小心注意自己身体，让人生更加健康充实，晚了就来不及了！<BR>========================================== <BR>　　<SPAN style="COLOR: blue">熬夜的生活这样过 </SPAN><BR>　　现代人由于工作或职业的原因，都有过昼夜颠倒的时候。昼夜节律颠倒对人体的生理功能和代谢都会产生一定的负面影响。 <BR>　　在正常情况下，人体在白天与夜间的生理节律有明显的不同。白天主要以交感神经活动和物质代谢的分解过程为主，而夜间则以副交感神经活动和物质代谢的合成过程为主。生物化学的观察结果也证明，不同酶的活性和内分泌激素的代谢在昼夜间也有很大的差别。<BR>==========================================<BR>　　<SPAN style="COLOR: blue">熬夜须知 </SPAN>　　<BR>　　1、熬夜时要吃热的东西（如热方便面）。 <BR>　　2、晚饭不能吃太饱。 <BR>　　3、注意保暖，不要冻着肚子。 <BR>　　4、一定要有足够多的白开水。 <BR>　　5、熬夜无论多累中间不可上床休息。 <BR>　　6、若乏困可喝咖啡或茶水之类的刺激性饮品来提神，但要注意应饮热的，浓度不要太高，以免伤胃。 <BR>　　7、熬夜时，应时时做深长呼吸。 <BR>　　8、至少要熬到天亮，即凌晨5点左右，并不断的想象太阳升起时的辉煌和气势。 <BR>　　9、早饭一定要吃饱，一定不要吃凉的食物。 <BR>　　10、凌晨7、8点钟，若要睡觉，一定要收心，即使不上床睡觉，也要坐在椅子上收心。<BR>==========================================　<BR>　　<SPAN style="COLOR: blue">熬夜族的饮食保健</SPAN><BR>　　夜工作者要供给充足的维生素A，因维生素A可调节视网膜感光物质———视紫的合成，能提高熬夜工作者对昏暗光线的适应力，而防止视觉疲劳。　　<BR>　　熬夜工作者劳动强度大，耗能多，应注意优质蛋白质的补充。动物蛋白质最好能达到蛋白质供应总量的一半。因为动物蛋白质含人体必需氨基酸，这对于保证熬夜工作者提高工作效率和身体健康是有好处的。　　<BR>========================================== <BR>　　<SPAN style="COLOR: blue">熬夜一族的自我保健</SPAN> <BR>　　生活在节奏紧张的现代社会，没有熬过夜的人是幸运的人。熬夜会使身体的正常节律性发生紊乱，对视力、肠胃及睡眠都造成影响。那么，经常熬夜的人应该怎样自我保健呢？ 　　<BR>　　熬夜的人多半是做文字工作或经常操作电脑的人，在昏黄灯光下苦战一夜容易使眼肌疲劳、视力下降。卫生部北京医院营养科的主管营养师李长平大夫告诉记者，维生素A及维生素B对预防视力减弱有一定效果，维生素A可调节视网膜感光物质——视紫的合成，能提高熬夜工作者对昏暗光线的适应力，防止视觉疲劳。所以要多吃胡萝卜、韭菜、鳗鱼等富含维生素A的食物，以及富含维生素B的瘦肉、鱼肉、猪肝等动物性食品。 　　<BR>　　此外，还应适当补充热量，吃一些水果、蔬菜及蛋白质食品如肉、蛋等来补充体力消耗，但千万不要大鱼大肉地猛吃。李长平大夫认为，吃一些花生米、杏仁、腰果、胡桃等干果类食品，它们含有丰富的蛋白质、维生素B、维生素E、钙和铁等矿物质以及植物油，而胆固醇的含量很低，对恢复体能有特殊的功效。 　　<BR>　　除了在饮食上下功夫，熬夜一族要加强身体锻炼。熬夜中如感到精力不足或者欲睡，就应做一会儿体操或到户外活动一下。由于熬夜会占去正常睡眠的时间，因此在补充睡眠上不妨见机行事。如下班回家时，在车上闭目养神片刻，或在单位午休时为自己安排一小会儿午睡等，可恢复体力，使精神振作。　　<BR>==============================================　　<BR>　　<SPAN style="COLOR: blue">熬夜最佳作息表</SPAN>　　<BR>　　有的人喜欢熬夜，但其结果往往是把自己搞的精疲力尽，效率低下，长久下去还会伤害身体。其实，科学的、间断性的熬夜有时会使某些类型的人获得意想不到的效果。熬夜后，在凌晨4、5点钟入睡，熬了一整夜，你一定感到很累，所以睡觉时会睡得特别香、特别沉，你会休息得特别好。熬夜可以使你集中较长的时间，专攻一项难度较大的工作。 　　<BR>　　执行本作息表的先决条件是你晚上9、10点钟时感到精力过剩，根本不想睡觉。一般人轻易不要用本作息表。 <BR>　　10：00起床 <BR>　　10：00—11：00散步、听音乐 <BR>　　11：00—11：20吃饭，喝热汤、多青菜、有肉 <BR>　　11：30—19：30看书、做练习 <BR>　　19：30—20：00吃饭，有肉、多菜、九成饱 <BR>　　20：00—凌晨4：30工作、学习 <BR>　　凌晨4：30—10：00睡觉<BR>========================================== 　<BR>　　<SPAN style="COLOR: blue">熬夜最佳饮食</SPAN>　　<BR>　　经常夜里工作的人，除了创造良好的工作条件和保证足够充分的睡眠之外，还应科学地安排好自己的一日三餐。 　<BR>　　在一日三餐的安排上，首先应保证有足够的热能摄入。比如，为增进食欲，可在食品的烹调制作上力求做到食物品种多样化，色、香、味俱全，美味可口；为使一天的热能分配合理并防止过饥过饱的情况，就需要合理安排就餐时间和每餐膳食热量应占全天膳食总热量的百分比。<BR>　　晚餐对于熬夜的人很重要，可占膳食总热量的30％－50％，可食用些高蛋白食物，进餐时间安排在劳动前一两小时为宜；中餐热量一般可占膳食总热量的20％至25％，进餐时间可安排在午后3时前后；早餐热量一般可占膳食总热量的15％－20％，并且应该以容易消化吸收的碳水化合物为主。在保证足够热能摄入的基础上，还应注意保证有足够的优质蛋白质、无机盐和维生素的摄入。所以适当摄入乳、蛋、鱼、瘦肉、猪肝、大豆及其制品，多吃蔬菜、水果，少吃纯糖和含脂肪高的食物，并应控制食盐的摄入量。<BR>　　熬夜虚劳药膳调养 <BR>　　随着生活节奏的加快，越来越多的人加入了熬夜的行列。不过，如何保证熬夜的质量，又减少对身体健康的影响呢？ 　　<BR>　　在熬夜时，喝许多浓茶或咖啡来刺激神经的兴奋是不可取的。因为咖啡因只能使人精神一时，而过后则会使人体大脑处于抑制状态，产生昏昏欲睡的感觉。　　<BR>　　中医认为，经常熬夜的人容易导致阴亏阳亢而产生阴虚内热的症状，不妨使用药膳适当进行调养，使精力充沛。 　　<BR>　　生地炖鸭蛋：每次用生地20克、鸭蛋1至2个，加水适量隔水炖之，蛋熟后去壳，再放入汁中炖20分钟，冰糖调味，食蛋饮汁，每日1次或每周2至3次。有滋阴清热、生津止渴等功效，适用于熬夜后口燥咽干、牙龈肿痛者食用。 　　<BR>　　猪腰炖杜仲：每次用杜仲25克、猪腰子1个，水适量隔水炖1小时，每日或隔2至3日服食1次，有滋补肝肾，强壮筋骨之功效，适用于熬夜后腰酸背痛、四肢乏力者服用。　　<BR>　　莲子百合煲瘦肉：每次用莲子(去芯)20克、百合20克、猪瘦肉100克，加水适量同煲，肉熟烂后加盐调味食用，每日1次。有清心润肺、益气安神之功效，适宜于熬夜后干咳、失眠、心烦、心悸等症者食用。 　　<BR>　　粉葛生鱼汤：每次用粉葛250克洗净切成小块，生鱼一条去腮及内脏，加水适量共煲，鱼熟后放入姜丝、油盐调味，食鱼饮汤，每月或隔日1次。有舒筋活络、益气和血、解肌痛等功效，适用于劳力过度熬夜后的肌内酸痛、颈肌胀痛者服用。 　　<BR>　　夏枯草煲瘦肉：每次用夏枯草10克、猪瘦肉50至100克，水适量共煲，肉熟后加盐少许调味，吃肉喝汁，每日1次。有清肝火，降血压之功效，适用于患有高血压病人熬夜后头晕头痛及眼红者服用。 　　<BR>========================================== 　　<BR>　　<SPAN style="COLOR: blue">熬夜与饮食 </SPAN><BR>　　随着现代经济的发展，生活节奏的加快，越来越多的人加入了熬夜的行列。如何保证熬夜的质量，又减少对身体健康的影响，在饮食的调养上值得注意。　　<BR>　　在熬夜时，假如想要夜间不会被累坏的话，必须使你的交感神经功能如同白天一样活跃才行。妨碍交感神经功能兴奋的是热能来源的米饭和面食。因此，在晚餐时，请不要吃米饭和面食，只吃鱼、肉类、蔬菜等副食即可。至于米饭或面食则隔1天早晨才吃。不过，这一种晚餐在经过3小时后就会开始饥饿。因此，饥饿的时候就要喝牛奶，或者是吃鸡蛋、水果。只要这样做，你就能够维持自己旺盛的精力。值得提醒的是，在熬夜时，喝许多浓茶或咖啡来刺激神经的兴奋是不可取的。因为咖啡因只能使神经一时兴奋，而过后则会使人体大脑处于抑制状态，产生昏昏欲睡的感觉。　　<BR>　　中医认为，经常熬夜的人容易导致阴亏阳亢而产生阴虚内热的症状，不妨使用药膳适当进行调养，使精力充沛。 　<BR>　　①、生地炖鸭蛋：每次用生地20克、鸭蛋l？2个，加水适量隔水炖之，蛋熟后去壳，再放入汁中炖20分钟，冰糖调味，食蛋饮汁，每日1次或每周2？3次。有滋阴清热、生津止渴等功效。适用于熬夜后口燥咽干、牙龈肿痛。手足心热者食用。 　<BR>　　②、猪腰炖杜仲：每次用杜仲25克，猪腰子1个，水适量，隔水炖1小时，每日或隔2？3日服食1次，有滋补肝肾、强壮筋骨之功效。适用于熬夜后腰酸背痛、四肢乏力者服用。 　<BR>　　③、莲子百合煲瘦肉：每次用莲子（去芯）20克，百合20克，猪瘦肉100克，加水适量同煲，肉熟烂后盐调味食用，每日1次。有清心润肺、益气安神之功效。适宜于熬夜后干咳。失眠、心烦、心悸等症者食用。 　　<BR>　　④、粉葛生鱼汤：每次用粉葛250克洗净切成小块，生鱼1条，去腮及内脏，加水适量共煲，鱼熟后放入姜丝、油盐调味，食鱼饮汤，每日或隔日1次。有舒筋活络、益气和血、解肌痛等功效。适用于劳力过度熬夜后的肌肉酸痛、颈肌胀痛者服用。　　<BR>　　⑤、夏枯草煲瘦肉：每次用夏枯草10克，猪瘦肉50-100克，水适量共煲，肉熟后加盐少许调味，吃肉喝汁，每日1次。有清肝火、降血压之功效。适用于患有高血压病熬夜后头晕、头痛及眼红者服用。 　<BR>========================================== 　<BR>　　<SPAN style="COLOR: blue">合理饮食帮你熬夜</SPAN><BR>　　现代人由于工作或职业的原因，都有过昼夜颠倒的时候。昼夜节律颠倒对人体的生理功能和代谢都会产生一定的负面影响。　　<BR>　　在正常情况下，人体在白天与夜间的生理节律有明显的不同。白天主要以交感神经活动和物质代谢的分解过程为主，而夜间则以副交感神经活动和物质代谢的合成过程为主。生物化学的观察结果也证明，不同酶的活性和内分泌激素的代谢在昼夜间也有很大的差别。　　<BR>　　所以经常夜里工作的人，除了创造良好的工作条件和保证足够充分的睡眠之外，还应科学地安排好自己的一日三餐。 　　<BR>　　在一日三餐的安排上，首先应保证有足够的热能摄入。比如，为增进食欲，可在食品的烹调制作上力求做到食物品种多样化，色、香、味俱全，美味可口；为使一天的热能分配合理并防止过饥过饱的情况，就需要合理安排就餐时间和每餐膳食热量应占全天膳食总热量的百分比。<BR>　　晚餐对于熬夜的人很重要，可占膳食总热量的30%～50%，可食用些高蛋白食物，进餐时间安排在劳动前一两小时为宜；中餐热量一般可占膳食总热量的20%～25%，进餐时间可安排在午后3时前后；早餐热量一般可占膳食总热量的15%～20%，并且应该以容易消化吸收的碳水化合物为主。在保证足够热能摄入的基础上，还应注意保证有足够的优质蛋白质、无机盐和维生素的摄入。所以适当摄入乳、蛋、鱼、瘦肉、猪肝、大豆及其制品，多吃蔬菜、水果，少吃纯糖和含脂肪高的食物，并应控制食盐的摄入量。　　<BR>==========================================　　<BR>　　<SPAN style="COLOR: blue">熬夜如何营养饮食</SPAN><BR>　　现代人由于工作或职业的原因，都有过昼夜颠倒的时候。昼夜节律颠倒对人体的生理功能和代谢都会产生一定的负面影响。　　<BR>　　在正常情况下，人体在白天与夜间的生理节律有明显的不同。白天主要以交感神经活动和物质代谢的分解过程为主，而夜间则以副交感神经活动和物质代谢的合成过程为主。生物化学的观察结果也证明，不同酶的活性和内分泌激素的代谢在昼夜间也有很大的差别。　　<BR>　　所以经常夜里工作的人，除了创造良好的工作条件和保证足够充分的睡眠之外，还应科学地安排好自己的一日三餐。　　<BR>　　在一日三餐的安排上，首先应保证有足够的热能摄入。比如，为增进食欲，可在食品的烹调制作上力求做到食物品种多样化，色、香、味俱全，美味可口；为使一天的热能分配合理并防止过饥过饱的情况，就需要合理安排就餐时间和每餐膳食热量应占全天膳食总热量的百分比。<BR>　　晚餐对于熬夜的人很重要，可占膳食总热量的30%～50%，可食用些高蛋白食物，进餐时间安排在劳动前一两小时为宜；中餐热量一般可占膳食总热量的20%～25%，进餐时间可安排在午后3时前后；早餐热量一般可占膳食总热量的15%～20%，并且应该以容易消化吸收的碳水化合物为主。在保证足够热能摄入的基础上，还应注意保证有足够的优质蛋白质、无机盐和维生素的摄入。所以适当摄入乳、蛋、鱼、瘦肉、猪肝、大豆及其制品，多吃蔬菜、水果，少吃纯糖和含脂肪高的食物，并应控制食盐的摄入量。<BR>　　<SPAN style="COLOR: blue">熬夜的人怎么吃？</SPAN><BR>　　熬夜的人，最先想到的就是喝咖啡或喝茶提神，营养师表示，咖啡因的确会让人精神振奋。 　<BR>　　不过，美国圣路加医院（St.Luke's Hospital）睡眠医药研究中心的实验发现，咖啡因对提升工作效率不见得有效，即使有用，也仅能维持短时间。<BR>　　咖啡因虽然提神，相对地会消耗体内与神经、肌肉协调有关的维生素B群，缺乏维生素B群的人本来就比较容易累，更可能形成恶性循环，养成酗茶、酗咖啡的习惯，需要量愈来愈多，效果却愈来愈差。因此，必须熬夜时，多补充些维生素B群，反而比较有效。　<BR>　　熬夜时，有人认为吃甜食可以补充热量，其实甜食也是熬夜大忌。晚餐后或熬夜时，不要吃太多甜食，高糖虽有高热量，虽在一定程度上让人兴奋，却会消耗维生素B群，导致反效果，也容易引来肥胖问题。 <BR>　　整体说来，熬夜的预防保健仍取决于日常饮食，必须均衡摄取6大类食物。但为了熬夜，晚餐时多吃富含维生素B群的食物，绝对有必要！维生素B群成员颇多，包括叶酸、烟硷酸、维生素B6、维生素B12等，它们不仅参与新陈代谢，提供能量，保护神经细胞，对安定神经、舒缓焦虑也有助益。 <BR>　　深绿色叶菜类及豆类植物，都含丰富叶酸盐，有助于细胞修补，预防感染和贫血；肝脏、鱼、全谷类、大豆食品、蔬果中有维生素B6或烟硷酸，可以维持皮肤健康、减缓老化；至于与记忆力、注意力有关的维生素B12，在红肉、牛奶、乳酪中都吃得到。<BR>==========================================<BR>　　<SPAN style="COLOR: blue">经常熬夜多吃胡萝卜</SPAN> 　<BR>　　熬夜的人多半是做文字工作或经常操作电脑的人，在灯光下坐久了容易使眼肌疲劳、视力下降。营养专家指出，维生素A及维生素B对预防视力减弱有效，维生素A可调节视网膜感光物质的合成，能提高熬夜者对昏暗光线的适应力，防止视觉疲劳。所以要多吃胡萝卜、韭菜、鳗鱼等富含维生素A的食物，和富含维生素B的瘦肉、鱼肉、猪肝等动物性食品。另外，花生米、杏仁、腰果、胡桃等干果类食品，富含维生素B、维生素E、钙和铁等矿物质，有利于恢复体能，可适当多吃。<BR>==========================================<BR>　　<SPAN style="COLOR: blue">熬夜人士护胃有法</SPAN>　　<BR>　　经常熬夜的人，中医称之为阴虚火旺之人，此类人也常有肠胃毛病，可通过食疗改善，达到护胃目的。　　<BR>　　熬夜族——今夜无人入眠　　<BR>　　编辑插语：“除了觉得脑袋糊成一团以外，其它感觉反而特别的清澈。看事物好似什么都隔着一层距离，连空气微粒都很清楚映在视网膜上；声音比平时清晰许多，那些仿佛录音不佳而来的杂音都一一分离，鸟叫虫鸣还有车子引擎声都各自定位……”相信你也曾有过这样的熬夜后体验。请看精彩专题--熬夜进行时……<BR>　　●食疗方一：生地瘦肉汤　　<BR>　　材料：生地15g、瘦肉250g<BR>　　制法：煲汤饮用<BR>　　适用：2-3人量　　<BR>　　●食疗方二：鲜百合银耳糖水　　<BR>　　材料：鲜百合30g、银耳30g、雪梨1个、燕窝10-30g、冰糖适量。<BR>　　制法：放冰糖与其他材料炖糖水<BR>　　适用：2-3人量，有养阴凉血之健胃作用　　<BR>　　编辑推荐：经常熬夜的人容易有阴虚内热的症状，若能注意夜宵进行饮食调养，有利于保持精力充沛。熬夜者的健康绿灯……　　<BR>　　●食疗方三：玉竹汤　　<BR>　　材料：玉竹30g、瘦肉半斤<BR>　　制法：材料共煲汤<BR>　　适用：2-3人量，适合大便燥热便秘者。　　<BR>　　●食疗方四：土茯苓芡实汤　　<BR>　　材料：土茯苓30g、芡实30g<BR>　　制法：煲汤饮用<BR>　　适用：2-3人量，适合大便湿热、便溏者，可清热，令大便恢复正常。　　<BR>==========================================<BR>　　<SPAN style="COLOR: blue">熬夜者的药膳调理</SPAN> <BR>　　经常熬夜的人容易产生阴虚内热的症状，如能注意夜宵进行饮食调养，有利于保持精力充沛。现介绍如下：<BR>　　（1）猪腰炖杜仲：杜仲25克、猪腰子1个（去筋膜），水适量。隔水炖1小时。每日或隔日服食1次。具有滋补肝肾、强筋壮骨之功效。适用于熬夜后腰酸背痛、四肢乏力者服用。　　<BR>　　（2）莲子百合煲瘦肉：莲子（去芯）20克、百合20克、猪瘦肉100克。加水适量同煲，肉熟烂后用盐调味食用。每日1次。具有清心润肺、益气安神之功效。适宜于熬夜后干咳、失眠、心烦、心悸等症者食用。　　<BR>　　（3）生地炖鸭蛋：生地20克、鸭蛋1－2个，加水适量隔水炖之。蛋熟后去壳，再放入汁中炖20分钟。加冰糖适量调味，食蛋饮汁。每日1次或每周2－3次。具有滋阴清热、生津止渴等功效。适宜于熬夜后口燥咽干、牙龈肿痛、手足心热者食用。　　<BR>　　（4）粉葛生鱼汤：粉葛（用葛根制成的粉皮）250克，洗净切块，生鱼（乌鱼）1条，加水适量共煲。鱼熟后放入生姜丝、油、盐调味，食鱼饮汤。每日或隔日1次，有舒筋活络、益气和血、解除肌痛等功效。适用于熬夜后肌肉酸痛、颈部胀痛者服用。　　<BR>　　（5）夏枯草煲瘦肉：夏枯草10克、猪瘦肉50－100克，水适量共煲，肉熟后加盐少许调味，吃肉喝汤。每日1次。具有清肝火、降血压的功效。适宜于熬夜后血压升高、头晕、头痛及眼红者服用。]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=314" /> 
	  <id>http://www.openx.cn/default.asp?id=314</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[基于Ajax技术网站赏析]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-07-03T21:07:44+08:00</updated>
	  <published>2006-07-03T21:07:44+08:00</published>
		  <summary type="html"><![CDATA[<P>Ajax，与其说是一种技术不如说是一系列技术的组合，但Ajax带给我们的不仅仅是技术，更多的是以人为本的一种服务理念，它崇尚参与性和交互性，不仅缓和了资源矛盾也亲和了人与人之间的关系。Ajax王国下的子民既是管理者又是被管理者，是主亦是客，是信息接收者也是信息制造者，多么和谐美妙的社会！</P>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BORDER-BOTTOM: #cccccc 1px solid"><IMG style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="http://soft.yesky.com/imagelist/06/03/9r9xhqvh1879.gif" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=0 TWFFAN="done"></IMG><A href="http://homepage.yesky.com/220/2331720.shtml" target=_blank></A><BR><STRONG>Google</STRONG> Ajax技术的领跑者，基于Ajax的广为大家熟悉的产品有Google Maps，Google Gmail，Google IG等，Google作为Ajax技术的先行者和倡导者早已经走在其它同类网站的前列。进入<A href="http://maps.google.com/" target=_blank><FONT color=#0000ff>Google Maps</FONT></A>，<A href="http://mail.google.com/mail/" target=_blank><FONT color=#0000ff>Google Gmail</FONT></A>，<A href="http://www.google.com/ig" target=_blank><FONT color=#0000ff>Google IG</FONT></A></TD></TR>
<TR>
<TD style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BORDER-BOTTOM: #cccccc 1px solid"><FONT color=#0000ff><IMG style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="http://soft.yesky.com/imagelist/06/03/sq1qdo6j3d60.gif" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=0 TWFFAN="done"></IMG><BR></FONT><STRONG>Macrosoft Live</STRONG> 微软帝国一直以操作系统为核心，但迫于Google带来的巨大威胁，这个软件界的巨人开始把目光转向web应用技术服务，建立了具有个人门户性质的live网站，live网站目前还不支持中文版，但其个性化的界面已经深深吸引了大批用户，用户体验非常棒。进入<A href="http://www.live.com/" target=_blank><FONT color=#0000ff>live网站</FONT></A></TD></TR>
<TR>
<TD style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BORDER-BOTTOM: #cccccc 1px solid"><FONT color=#0000ff><IMG style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="http://soft.yesky.com/imagelist/06/03/11v1d814dh0w.gif" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=0 TWFFAN="done"></IMG><BR></FONT><STRONG>Netvibes</STRONG> 有中文繁体功能，可惜不支持简体。比较早的桌面系统，功能也十分的齐全，系统写的代码十分的精简。据说 Okrss和周博通都是仿照它写的代码。进入<A href="http://www.netvibes.com/" target=_blank><FONT color=#0000ff>Netvibes</FONT></A></TD></TR>
<TR>
<TD style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BORDER-BOTTOM: #cccccc 1px solid"><FONT color=#0000ff><IMG style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="http://soft.yesky.com/imagelist/06/03/11h8x95pwz4e.gif" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=0 TWFFAN="done"></IMG><BR></FONT><STRONG>Pageflakes</STRONG> 是一个在已经异常拥挤的桌面系统市场中新近推出的网站. 它综合了RSS阅读器, 邮件收发, 记事本以及搜索等功能. 提供第三方API。进入<A href="http://www.pageflakes.com/" target=_blank><FONT color=#0000ff>Pageflakes</FONT></A></TD></TR>
<TR>
<TD style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BORDER-BOTTOM: #cccccc 1px solid"><FONT color=#0000ff><IMG style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="http://soft.yesky.com/imagelist/06/03/u4a2z9sf539i.gif" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=0 TWFFAN="done"></IMG><BR></FONT><STRONG>Favoor</STRONG> 这个色彩如LOGO一样比较鲜艳，活动的桌面系统，不过需要先注册才可以使用，注册是方便的。同样都是支持RSS，邮件收发，书签之类的小功能。这是来自德国的网站。进入<A href="http://www.favoor.com/" target=_blank><FONT color=#0000ff>Favoor</FONT></A></TD></TR>
<TR>
<TD style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BORDER-BOTTOM: #cccccc 1px solid"><FONT color=#0000ff><IMG style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="http://soft.yesky.com/imagelist/06/03/sdx08kh1a996.gif" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=0 TWFFAN="done"></IMG><BR></FONT><STRONG>Eskobo</STRONG> 蓝色色调，我测试了一下，中文支持的功能很好。还配有各种skin任你选择，随你喜好吧。进入<A href="http://www.eskobo.com/" target=_blank><FONT color=#0000ff>Eskobo</FONT></A></TD></TR>
<TR>
<TD style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BORDER-BOTTOM: #cccccc 1px solid"><FONT color=#0000ff><IMG style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="http://soft.yesky.com/imagelist/06/03/h80u6asn70lq.gif" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=0 TWFFAN="done"></IMG></FONT><A href="http://homepage.yesky.com/292/2328792.shtml"></A><BR><STRONG>Protopage</STRONG> 面中的元素可以像视窗那样彻底地无限制移动，不像其它的桌面Ajax系统，只能定向移动。进入<A href="http://www.protopage.com/v2" target=_blank><FONT color=#0000ff>Protopage</FONT></A></TD></TR>
<TR>
<TD style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BORDER-BOTTOM: #cccccc 1px solid"><FONT color=#0000ff><IMG style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="http://soft.yesky.com/imagelist/06/03/57ap9048b708.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=0 TWFFAN="done"></IMG><BR></FONT><STRONG>Goowy</STRONG> 这个就十分特别的，网页版，还有下载的桌面版，有点像YAHOO的widget。我正在研究，功能太多了，大家都来试用吧。进入<A href="http://webserver002.goowy.com/" target=_blank><FONT color=#0000ff>Goowy</FONT></A></TD></TR></TBODY></TABLE>
<TABLE style="BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; MARGIN-TOP: 5px; BORDER-LEFT: #999999 1px solid; BORDER-BOTTOM: #999999 1px solid" cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD bgColor=#e1e1e1><STRONG>■国内</STRONG></TD></TR>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BORDER-BOTTOM: #cccccc 1px solid"><IMG style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="http://soft.yesky.com/imagelist/06/03/21rt3vv00gx1.gif" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}"></IMG><BR><STRONG>GouGou</STRONG> GouGou作为一个在线RSS阅读网站实际上起到了一个反rss的作用，人们千方百计地把自己网站上的内容xml化并提供给一些特定的RSS阅读器订阅，但GouGou似乎把这些东西又还原了，所幸的是，用这种方式进行内容阅读还是比直接浏览网站方便得多。进入<A href="http://www.gougou.com/" target=_blank><FONT color=#0000ff>Gougou</FONT></A><A href="http://www.google.com/ig" target=_blank></A></TD></TR>
<TR>
<TD style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BORDER-BOTTOM: #cccccc 1px solid"><FONT color=#0000ff><IMG style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="http://soft.yesky.com/imagelist/06/03/mi83qy6se289.gif" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border=0 TWFFAN="done"></IMG><BR></FONT><STRONG>Redoo热度</STRONG> 我不知道国内从什么时候开始也有了Ajax网站，但这个网站不论从技术上说还是从内容上说都是做的比较好的，不过明眼人一看就知道这个网站的很多程序代码是借鉴别人的，不管怎么样，它把自己的内容进行了有效的组装，已经非常不错了。进入<A href="http://www.redoo.com/" target=_blank><FONT color=#0000ff>Redoo</FONT></A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=313" /> 
	  <id>http://www.openx.cn/default.asp?id=313</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[C# 操作iis]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-06-28T16:50:50+08:00</updated>
	  <published>2006-06-28T16:50:50+08:00</published>
		  <summary type="html"><![CDATA[<SPAN style="COLOR: #000000">操作iis说明&nbsp;&nbsp;&nbsp;&nbsp;操作原码<BR><BR>.Net中需要使用ADSI来操作IIS&nbsp;<BR>System.DirectoryServices命名空间</SPAN><SPAN style="COLOR: #000000">--</SPAN><SPAN style="COLOR: #000000">DirectoryEntry&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">在.net组件中&nbsp;System.DirectoryServices.dll&nbsp;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">了解IIS元数据(Metabase)的层次结构,每一个节点称之Key,而每个Key可以包含一或多个值，这些值就是我们说的属性(properties)<BR>IIS元数据中的Key与IIS中的元素是相符的，因此元数据中的属性值的设定是会影响IIS中的设置。<BR><BR>Schema&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指每个结点的类型<BR>IIsVirtualDir&nbsp;&nbsp;虚拟目录<BR>IIsWebDir&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;普通目录<BR><IMG src="http://www.cnblogs.com/Images/dot.gif"><IMG src="http://www.cnblogs.com/Images/dot.gif">..&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;文件<BR><BR><BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">创建虚拟目录&nbsp;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">DirectoryEntry</SPAN><SPAN style="COLOR: #000000">--</SPAN><SPAN style="COLOR: #000000">目录入口。使用过ADSI的人都知道操作IIS时，需要提供他们的Path<BR>这个Path的格式为：&nbsp;IIS:</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">ComputerName/Service/Website/Directory&nbsp;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000"><BR>ComputerName&nbsp;&nbsp;&nbsp;：即操作的服务器的名字，可以是名字也可以是IP，经常用的就是localhost&nbsp;<BR><BR>Service&nbsp;：即操作的服务器&nbsp;如:<BR>&nbsp;&nbsp;&nbsp;W3SVC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Web<BR>&nbsp;&nbsp;&nbsp;MSFTPSVC&nbsp;&nbsp;&nbsp;FTP<BR>&nbsp;&nbsp;&nbsp;<IMG src="http://www.cnblogs.com/Images/dot.gif"><IMG src="http://www.cnblogs.com/Images/dot.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SMTP<BR><BR>WebSite:站点标识，设置操作的站点。是一个数字，默认站点是1,如果有其它，则从1始依次类推。<BR><BR>Directory：目录名称，顶层目录为</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ROOT</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">，其它目录则是（Child）&nbsp;<BR><BR></SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">.首先我们获取一个站点的顶层目录（根目录）:&nbsp;<BR>DirectoryEntry&nbsp;rootfolder&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;DirectoryEntry(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIS://localhost/W3SVC/1/ROOT</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);&nbsp;<BR>如果我们创建这个对象是没有发生异常，则表示这个目录是真实存在的。&nbsp;<BR><BR></SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">.添加新的虚拟目录，比如我们要加的是</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">目录名</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">：&nbsp;<BR>虚拟目录名&nbsp;目录类型(Schema)<BR>DirectoryEntry&nbsp;newVirDir&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;rootfolder.Children.Add(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">目录名</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIsWebVirtualDir</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);&nbsp;<BR>newVirDir.Invoke(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">AppCreate</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">);&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">调用ADSI中的"AppCreate"方法将目录真正创建</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">newVirDir.CommitChanges();&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">最后便是依次调用新、根目录的CommitChanges方法，确认此次操作。&nbsp;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">rootfolder.CommitChanges();&nbsp;<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">建议大家最好是先创建目录，然后再赋值，即更新目录信息。&nbsp;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">.更新虚拟目录&nbsp;<BR>了解IIS中一些重要的设置<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(AccessRead)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(AccessWrite)&nbsp;&nbsp;&nbsp;&nbsp;可写<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(AccessExecute)&nbsp;&nbsp;执行<BR>这些都可通过DirectoryEntry.Properties属性集合的赋值来实现。赋值可以通过两种方式来完成：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第一种是调用Properties集合的Add方法，如：&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dir.Properties[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">AccessRead</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">].Add(</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第二种是对第一个索引值赋值：&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dir.Properties[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">AccessRead</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">][</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">;&nbsp;<BR>这两种方法都是可行的。具体是要看你的喜好了。&nbsp;<BR><BR>在进行赋值之前我们还是要确定要要赋值的目标吧：）这里我们使用DirectoryEntries.Find方法，如：&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DirectoryEntry&nbsp;de&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;rootfolder.Children.Find(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">目录名</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIsVirtualDir</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);&nbsp;<BR>找到了，我们就可以赋值了。赋值时一定要好好看看啊，虚拟目录的属性值可以超多，一查一大堆。。<BR>比较常用的有:AccessRead,AccessWrite,AccessExecute,AccessScript,DefaultDoc,EnableDefaultDoc,Path&nbsp;<BR><BR></SPAN><SPAN style="COLOR: #000000">4</SPAN><SPAN style="COLOR: #000000">.删除虚拟目录&nbsp;<BR>删除虚拟目录的方法也很简单，就是找到你要删除的虚拟目录，然后调用AppDelete方法。&nbsp;<BR>DirectoryEntry&nbsp;de&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;rootfolder.Children.Find(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Aspcn</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIsVirtualDir</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);&nbsp;<BR>de.Invoke(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">AppDelete</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">);&nbsp;<BR>rootfolder.CommitChanges();&nbsp;<BR>还有一种方法，就是调用Root目录的Delete方法。&nbsp;<BR></SPAN><SPAN style="COLOR: #0000ff">object</SPAN><SPAN style="COLOR: #000000">[]&nbsp;paras&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">object</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">];&nbsp;<BR>paras[</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIsWebVirtualDir</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">表示操作的是虚拟目录&nbsp;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">paras[</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Aspcn</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;&nbsp;<BR>rootfolder.Invoke(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Delete</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,paras);&nbsp;<BR>rootfolder.CommitChanges();&nbsp;<BR><BR><BR><BR>asp.net(C#)操作IIS源代码，创建站点，管理虚拟目录等<BR><BR><BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System;<BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.DirectoryServices;<BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.Collections;<BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.Text.RegularExpressions;<BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.Text;&nbsp;<BR><BR></SPAN><SPAN style="COLOR: #0000ff">namespace</SPAN><SPAN style="COLOR: #000000">&nbsp;QF&nbsp;<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;IIS<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">#region</SPAN><SPAN style="COLOR: #000000">&nbsp;UserName,Password,HostName的定义</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;HostName<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;hostName;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>hostName&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;UserName<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;userName;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>userName&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Password<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;password;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(UserName.Length&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">throw</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ArgumentException(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">还没有指定好用户名。请先指定用户名</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>}<BR>password&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;RemoteConfig(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;hostName,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;userName,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;password)<BR>{<BR>HostName&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;hostName;<BR>UserName&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;userName;<BR>Password&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;password;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;hostName&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">localhost</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;userName&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">qf</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;password&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">qinfei</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">#endregion</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">#region</SPAN><SPAN style="COLOR: #000000">&nbsp;根据路径构造Entry的方法</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;根据是否有用户名来判断是否是远程服务器。<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;然后再构造出不同的DirectoryEntry出来<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="entPath"&gt;</SPAN><SPAN style="COLOR: #008000">DirectoryEntry的路径</SPAN><SPAN style="COLOR: #808080">&lt;/param&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;returns&gt;</SPAN><SPAN style="COLOR: #008000">返回的是DirectoryEntry实例</SPAN><SPAN style="COLOR: #808080">&lt;/returns&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;DirectoryEntry&nbsp;GetDirectoryEntry(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;entPath)<BR>{<BR>DirectoryEntry&nbsp;ent;<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(UserName&nbsp;</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">)<BR>{<BR>ent&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;DirectoryEntry(entPath);<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>ent&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;DirectoryEntry(entPath,&nbsp;HostName</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">\\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">UserName,&nbsp;Password,&nbsp;AuthenticationTypes.Secure);<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">ent&nbsp;=&nbsp;new&nbsp;DirectoryEntry(entPath,&nbsp;UserName,&nbsp;Password,&nbsp;AuthenticationTypes.Secure);</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">}<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;ent;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">#endregion</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">#region</SPAN><SPAN style="COLOR: #000000">&nbsp;添加，删除网站的方法</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;CreateNewWebSite(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;hostIP,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;portNum,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;descOfWebSite,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;commentOfWebSite,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;webPath)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">&nbsp;EnsureNewSiteEnavaible(hostIP</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">portNum</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">descOfWebSite))<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">throw</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ArgumentNullException(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">已经有了这样的网站了。</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;Environment.NewLine&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;hostIP&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;portNum&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;descOfWebSite);<BR>}<BR><BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;entPath&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;String.Format(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIS://{0}/w3svc</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;HostName);&nbsp;<BR>DirectoryEntry&nbsp;rootEntry&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;GetDirectoryEntry(entPath);</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">取得iis路径</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;newSiteNum&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;GetNewWebSiteID();&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">取得新网站ID</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">DirectoryEntry&nbsp;newSiteEntry&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;rootEntry.Children.Add(newSiteNum,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIsWebServer</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">增加站点</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">newSiteEntry.CommitChanges();</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">保存对区域的更改(这里对站点的更改)</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">newSiteEntry.Properties[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ServerBindings</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">].Value&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;hostIP&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;portNum&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;descOfWebSite;<BR>newSiteEntry.Properties[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ServerComment</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">].Value&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;commentOfWebSite;<BR>newSiteEntry.CommitChanges();<BR>DirectoryEntry&nbsp;vdEntry&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;newSiteEntry.Children.Add(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">root</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIsWebVirtualDir</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>vdEntry.CommitChanges();<BR>vdEntry.Properties[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Path</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">].Value&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;webPath;<BR>vdEntry.CommitChanges();<BR><BR>}<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;删除一个网站。根据网站名称删除。<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="siteName"&gt;</SPAN><SPAN style="COLOR: #008000">网站名称</SPAN><SPAN style="COLOR: #808080">&lt;/param&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;DeleteWebSiteByName(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;siteName)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;siteNum&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;GetWebSiteNum(siteName);<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;siteEntPath&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;String.Format(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIS://{0}/w3svc/{1}</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;HostName,&nbsp;siteNum);<BR>DirectoryEntry&nbsp;siteEntry&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;GetDirectoryEntry(siteEntPath);<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;rootPath&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;String.Format(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIS://{0}/w3svc</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;HostName);<BR>DirectoryEntry&nbsp;rootEntry&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;GetDirectoryEntry(rootPath);<BR>rootEntry.Children.Remove(siteEntry);<BR>rootEntry.CommitChanges();<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">#endregion</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">#region</SPAN><SPAN style="COLOR: #000000">&nbsp;Start和Stop网站的方法</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;StartWebSite(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;siteName)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;siteNum&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;GetWebSiteNum(siteName);<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;siteEntPath&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;String.Format(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIS://{0}/w3svc/{1}</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;HostName,&nbsp;siteNum);<BR>DirectoryEntry&nbsp;siteEntry&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;GetDirectoryEntry(siteEntPath);<BR>siteEntry.Invoke(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Start</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">object</SPAN><SPAN style="COLOR: #000000">[]&nbsp;{});<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;StopWebSite(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;siteName)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;siteNum&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;GetWebSiteNum(siteName);<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;siteEntPath&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;String.Format(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIS://{0}/w3svc/{1}</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;HostName,&nbsp;siteNum);<BR>DirectoryEntry&nbsp;siteEntry&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;GetDirectoryEntry(siteEntPath);<BR>siteEntry.Invoke(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Stop</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">object</SPAN><SPAN style="COLOR: #000000">[]&nbsp;{});<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">#endregion</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">#region</SPAN><SPAN style="COLOR: #000000">&nbsp;确认网站是否相同</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;确定一个新的网站与现有的网站没有相同的。<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;这样防止将非法的数据存放到IIS里面去<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="bindStr"&gt;</SPAN><SPAN style="COLOR: #008000">网站邦定信息</SPAN><SPAN style="COLOR: #808080">&lt;/param&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;returns&gt;</SPAN><SPAN style="COLOR: #008000">真为可以创建，假为不可以创建</SPAN><SPAN style="COLOR: #808080">&lt;/returns&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">bool</SPAN><SPAN style="COLOR: #000000">&nbsp;EnsureNewSiteEnavaible(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;bindStr)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;entPath&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;String.Format(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIS://{0}/w3svc</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;HostName);<BR>DirectoryEntry&nbsp;ent&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;GetDirectoryEntry(entPath);<BR></SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000">(DirectoryEntry&nbsp;child&nbsp;</SPAN><SPAN style="COLOR: #0000ff">in</SPAN><SPAN style="COLOR: #000000">&nbsp;ent.Children)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(child.SchemaClassName&nbsp;</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIsWebServer</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(child.Properties[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ServerBindings</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">].Value&nbsp;</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(child.Properties[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ServerBindings</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">].Value.ToString()&nbsp;</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000">&nbsp;bindStr)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">false</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR>}<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR><BR></SPAN><SPAN style="COLOR: #0000ff">#endregion</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">#region</SPAN><SPAN style="COLOR: #000000">&nbsp;获取一个网站编号</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">一个输入参数为站点描述</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;输入参数为&nbsp;站点的描述名&nbsp;默认是站点描述为&nbsp;"默认网站"<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;exception&nbsp;cref="NotFoundWebSiteException"&gt;</SPAN><SPAN style="COLOR: #008000">表示没有找到网站</SPAN><SPAN style="COLOR: #808080">&lt;/exception&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;GetWebSiteNum(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;siteName)<BR>{<BR>Regex&nbsp;regex&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Regex(siteName);<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;tmpStr;<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;entPath&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;String.Format(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIS://{0}/w3svc</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;HostName);<BR>DirectoryEntry&nbsp;ent&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;GetDirectoryEntry(entPath);<BR></SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000">(DirectoryEntry&nbsp;child&nbsp;</SPAN><SPAN style="COLOR: #0000ff">in</SPAN><SPAN style="COLOR: #000000">&nbsp;ent.Children)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(child.SchemaClassName&nbsp;</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIsWebServer</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(child.Properties[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ServerBindings</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">].Value&nbsp;</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">)<BR>{<BR>tmpStr&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;child.Properties[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ServerBindings</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">].Value.ToString();<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(regex.Match(tmpStr).Success)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;child.Name;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(child.Properties[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ServerComment</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">].Value&nbsp;</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">)<BR>{<BR>tmpStr&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;child.Properties[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ServerComment</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">].Value.ToString();<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(regex.Match(tmpStr).Success)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;child.Name;<BR>}<BR>}<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">throw</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Exception(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">没有找到我们想要的站点</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;siteName);<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">#endregion</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">#region</SPAN><SPAN style="COLOR: #000000">&nbsp;获取新网站id的方法</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;获取网站系统里面可以使用的最小的ID。<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;这是因为每个网站都需要有一个唯一的编号，而且这个编号越小越好。<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;这里面的算法经过了测试是没有问题的。<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;returns&gt;</SPAN><SPAN style="COLOR: #008000">最小的id</SPAN><SPAN style="COLOR: #808080">&lt;/returns&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;GetNewWebSiteID()<BR>{<BR>ArrayList&nbsp;list&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ArrayList();<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;tmpStr;<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;entPath&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;String.Format(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIS://{0}/w3svc</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;HostName);<BR>DirectoryEntry&nbsp;ent&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;GetDirectoryEntry(entPath);<BR></SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000">(DirectoryEntry&nbsp;child&nbsp;</SPAN><SPAN style="COLOR: #0000ff">in</SPAN><SPAN style="COLOR: #000000">&nbsp;ent.Children)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(child.SchemaClassName&nbsp;</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIsWebServer</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)<BR>{<BR>tmpStr&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;child.Name.ToString();<BR>list.Add(Convert.ToInt32(tmpStr));<BR>}<BR>}<BR>list.Sort();<BR></SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;j&nbsp;</SPAN><SPAN style="COLOR: #0000ff">in</SPAN><SPAN style="COLOR: #000000">&nbsp;list)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(i&nbsp;</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000">&nbsp;j)<BR>{<BR>i</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;i.ToString();<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">#endregion</SPAN><SPAN style="COLOR: #000000"><BR>}<BR>}<BR></SPAN>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=312" /> 
	  <id>http://www.openx.cn/default.asp?id=312</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[C# 磁盘空间管理]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-06-28T16:50:09+08:00</updated>
	  <published>2006-06-28T16:50:09+08:00</published>
		  <summary type="html"><![CDATA[<SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">Disk&nbsp;取得磁盘空间&nbsp;或&nbsp;指定文件夹使用情况</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System;<BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.IO;<BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.Management;&nbsp;<BR></SPAN><SPAN style="COLOR: #0000ff">namespace</SPAN><SPAN style="COLOR: #000000">&nbsp;Host.AdminManager.Inc<BR>{<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;Disk&nbsp;的摘要说明。<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;Disk<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;Disk()<BR>{<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;TODO:&nbsp;在此处添加构造函数逻辑<BR></SPAN><SPAN style="COLOR: #008000">//<BR></SPAN><SPAN style="COLOR: #000000">}<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">取得disk大小</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;DiskSize(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;path)<BR>{<BR>ManagementObject&nbsp;size&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ManagementObject(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">win32_logicaldisk.deviceid=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">path);<BR>size.Get();&nbsp;<BR>UInt64&nbsp;b&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">1024</SPAN><SPAN style="COLOR: #000000">;<BR>UInt64&nbsp;a&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;(Convert.ToUInt64(size[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Size</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">])</SPAN><SPAN style="COLOR: #000000">/</SPAN><SPAN style="COLOR: #000000">b)</SPAN><SPAN style="COLOR: #000000">/</SPAN><SPAN style="COLOR: #000000">b;<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;a.ToString();<BR>}<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">取得文件夹大小</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;size(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;path,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;utterlyPath&nbsp;,</SPAN><SPAN style="COLOR: #0000ff">out</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;chang)<BR>{<BR>UInt64&nbsp;t1024&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">1024</SPAN><SPAN style="COLOR: #000000">,&nbsp;t10&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">10</SPAN><SPAN style="COLOR: #000000">;<BR>UInt64&nbsp;v&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;FolderSize(path,utterlyPath);<BR>v&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;v</SPAN><SPAN style="COLOR: #000000">/</SPAN><SPAN style="COLOR: #000000">t1024;<BR>chang&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Convert.ToInt32(v</SPAN><SPAN style="COLOR: #000000">/</SPAN><SPAN style="COLOR: #000000">t10);<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;v.ToString();<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;UInt64&nbsp;FolderSize(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;path,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;utterlyPath)<BR>{<BR>UInt64&nbsp;Fsize&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">try&nbsp;{</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">Fsize&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;FolderFileSize(path);<BR>DirectoryInfo&nbsp;[]&nbsp;folders&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;DirectoryInfo(path)).GetDirectories();<BR></SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000">(DirectoryInfo&nbsp;folder&nbsp;</SPAN><SPAN style="COLOR: #0000ff">in</SPAN><SPAN style="COLOR: #000000">&nbsp;folders)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(folder.FullName&nbsp;</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">&nbsp;utterlyPath)<BR>Fsize&nbsp;</SPAN><SPAN style="COLOR: #000000">+=</SPAN><SPAN style="COLOR: #000000">&nbsp;FolderSize(folder.FullName,&nbsp;utterlyPath);<BR>}<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">}<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">catch(Exception&nbsp;ex)<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">{<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">MessageBox.Show(ex.Message);<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">}</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;Fsize;<BR>}&nbsp;<BR><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;UInt64&nbsp;FolderFileSize(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;path)<BR>{<BR>UInt64&nbsp;size&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">try<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">{</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">FileInfo&nbsp;[]&nbsp;files&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;DirectoryInfo(path)).GetFiles();<BR></SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000">(FileInfo&nbsp;file&nbsp;</SPAN><SPAN style="COLOR: #0000ff">in</SPAN><SPAN style="COLOR: #000000">&nbsp;files)<BR>{<BR>size&nbsp;</SPAN><SPAN style="COLOR: #000000">+=</SPAN><SPAN style="COLOR: #000000">&nbsp;(UInt64)file.Length;<BR>}<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">}<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">catch(Exception&nbsp;ex)<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">{<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">MessageBox.Show(ex.Message);<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">}</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;size;<BR>}<BR>}<BR>}<BR><BR></SPAN>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=311" /> 
	  <id>http://www.openx.cn/default.asp?id=311</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[C# WMI 编程]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-06-28T16:49:31+08:00</updated>
	  <published>2006-06-28T16:49:31+08:00</published>
		  <summary type="html"><![CDATA[<SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">win32_logicaldisk<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">导入dll：解决方案&nbsp;==&gt;&nbsp;引用&nbsp;==&gt;&nbsp;添加引用&nbsp;==&gt;&nbsp;COM&nbsp;==&gt;&nbsp;System.Management.dll&nbsp;--C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System;<BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.Management;<BR></SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;disk&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">数据管理对象</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">{<BR>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Main()<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">创建&nbsp;C:&nbsp;的实例</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ManagementObject&nbsp;disk&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ManagementObject(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">win32_logicaldisk.deviceid=\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">c:\</SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disk.Get();&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">磁盘大小</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">disk[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Size</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">]</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">bytes</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">打印C:大小,单位bytes</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;}<BR>}&nbsp;<BR><BR>&nbsp;<BR><BR>确定计算机名称或&nbsp;IP&nbsp;地址是物理计算机还是虚拟&nbsp;IP&nbsp;地址&nbsp;CIMV2:Win32_ComputerSystem<BR>在远程计算机上运行进程&nbsp;CIMV2:Win32_Process<BR>确定远程计算机中是否存在某个目录&nbsp;CIMV2:Win32_Directory&nbsp;<BR>停止</SPAN><SPAN style="COLOR: #000000">/</SPAN><SPAN style="COLOR: #000000">启动&nbsp;IIS&nbsp;System.Diagnostics.Process<BR>将程序集添加到全局程序集缓存&nbsp;(GAC)&nbsp;System.Diagnostics.Process<BR>注册和配置&nbsp;GAM&nbsp;组件&nbsp;COMAdmin&nbsp;目录&nbsp;(COM&nbsp;</SPAN><SPAN style="COLOR: #000000">1.0</SPAN><SPAN style="COLOR: #000000">)&nbsp;<BR>创建&nbsp;Web&nbsp;站点&nbsp;System.DirectoryServices.DirectoryEntry&nbsp;<BR><BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">可以用此方法来选择集合中的部份记录&nbsp;"SELECT&nbsp;*&nbsp;FROM&nbsp;Win32_Service&nbsp;WHERE&nbsp;Name&nbsp;=&nbsp;'ServiceName'",</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Win32_LogicalDisk</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;类&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">通过它我们可以查看到本地驱动器</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000"><BR>ManagementObjectSearcher&nbsp;query&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ManagementObjectSearcher(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">SELECT&nbsp;*&nbsp;From&nbsp;Win32_LogicalDisk&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">查询</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">ManagementObjectCollection&nbsp;queryCollection&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;query.Get();&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">Get获取集合并赋给&nbsp;Collention</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000">&nbsp;(&nbsp;ManagementObject&nbsp;mo&nbsp;</SPAN><SPAN style="COLOR: #0000ff">in</SPAN><SPAN style="COLOR: #000000">&nbsp;queryCollection)&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">偏历集合</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">{&nbsp;<BR>&nbsp;&nbsp;&nbsp;Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">type:</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">mo[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">DriveType</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">].ToString());<BR>&nbsp;&nbsp;&nbsp;sConsole.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Drive:&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;mo[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Name</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">].ToString());&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">打印出所有驱动器</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">}<BR><BR><BR></SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Win32_Environment</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;类&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">环境变量</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System;<BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.Management;<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;EnumerateInstances<BR>{<BR>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Main()&nbsp;<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelectQuery&nbsp;query&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;SelectQuery(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Win32_Environment</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ManagementObjectSearcher&nbsp;searcher&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ManagementObjectSearcher(query);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000">&nbsp;(ManagementBaseObject&nbsp;envVar&nbsp;</SPAN><SPAN style="COLOR: #0000ff">in</SPAN><SPAN style="COLOR: #000000">&nbsp;searcher.Get())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Variable&nbsp;:&nbsp;{0},&nbsp;Value&nbsp;=&nbsp;{1}</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,envVar[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Name</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">],envVar[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">VariableValue</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">]);<BR>&nbsp;&nbsp;&nbsp;}<BR>}<BR><BR></SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Win32_OperatingSystem</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;类&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">操作系统信息</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">Console.WriteLine(&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">操作系统:&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;mo[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Caption</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">]);<BR>Console.WriteLine(&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">版本号:&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;mo[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Version</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">]);<BR>Console.WriteLine(&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">制造商:&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;mo[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Manufacturer</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">]);<BR>Console.WriteLine(&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">计算机名:&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">mo[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">csname</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">]);<BR>Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Windows目录:&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;mo[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">WindowsDirectory</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">]);<BR><BR></SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Win32_Service</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;类&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">系统服务<BR><BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">输出默认站点的目录结构</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System;&nbsp;<BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.DirectoryServices;&nbsp;<BR></SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;IISFolderList&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;ListFolder(DirectoryEntry&nbsp;paraEntry,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;paraIndent)&nbsp;<BR>&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">paraIndent;&nbsp;i</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;&nbsp;i</SPAN><SPAN style="COLOR: #000000">--</SPAN><SPAN style="COLOR: #000000">)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.Write(</SPAN><SPAN style="COLOR: #000000">'</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">'</SPAN><SPAN style="COLOR: #000000">);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(paraEntry.Name);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paraIndent</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000">(DirectoryEntry&nbsp;tempEntry&nbsp;</SPAN><SPAN style="COLOR: #0000ff">in</SPAN><SPAN style="COLOR: #000000">&nbsp;paraEntry.Children)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ListFolder(tempEntry,paraIndent);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paraEntry.Dispose();&nbsp;<BR>&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Main(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">[]&nbsp;args)&nbsp;<BR>&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ListFolder(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;DirectoryEntry(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">IIS://localhost/W3SVC/1/Root</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">),</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">);&nbsp;<BR>&nbsp;&nbsp;&nbsp;}&nbsp;<BR>}&nbsp;<BR><BR></SPAN>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=310" /> 
	  <id>http://www.openx.cn/default.asp?id=310</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[读取 INI 文件]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-06-28T16:49:00+08:00</updated>
	  <published>2006-06-28T16:49:00+08:00</published>
		  <summary type="html"><![CDATA[<SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">读取INI文件&nbsp;INI&nbsp;ini&nbsp;=&nbsp;new&nbsp;INI();&nbsp;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System;<BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.Text;<BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.Runtime.InteropServices;&nbsp;<BR></SPAN><SPAN style="COLOR: #0000ff">namespace</SPAN><SPAN style="COLOR: #000000">&nbsp;QF&nbsp;<BR>{<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;.INI文件&nbsp;操作。<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;INI<BR>{<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;创建一个如下的INI对象<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;INI&nbsp;ini&nbsp;=&nbsp;new&nbsp;INI(@"C:\test.ini");<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;INI(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;INIPath)<BR>{<BR>path&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;INIPath;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;path;<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">引用动态连接库方法</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">[DllImport(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">kernel32</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)]<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">extern</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">long</SPAN><SPAN style="COLOR: #000000">&nbsp;WritePrivateProfileString(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;section,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;key,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;val,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;filePath);<BR>[DllImport(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">kernel32</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)]<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">extern</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;GetPrivateProfileString(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;section,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;key,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;def,&nbsp;StringBuilder&nbsp;retVal,</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;size,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;filePath);<BR><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;写入数据<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;PARAM&nbsp;name="Section"&gt;&lt;/PARAM&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;节点名<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;PARAM&nbsp;name="Key"&gt;&lt;/PARAM&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;键名<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;PARAM&nbsp;name="Value"&gt;&lt;/PARAM&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;值名</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Write(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Section,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Key,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Value)<BR>{<BR>WritePrivateProfileString(Section,Key,Value,</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.path);<BR>}<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;读取INI数据<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;PARAM&nbsp;name="Section"&gt;&lt;/PARAM&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;PARAM&nbsp;name="Key"&gt;&lt;/PARAM&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;PARAM&nbsp;name="Path"&gt;&lt;/PARAM&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;returns&gt;&lt;/returns&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Read(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Section,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Key)<BR>{<BR>StringBuilder&nbsp;temp&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;StringBuilder(</SPAN><SPAN style="COLOR: #000000">255</SPAN><SPAN style="COLOR: #000000">);<BR></SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;GetPrivateProfileString(Section,Key,</SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000">,temp,&nbsp;</SPAN><SPAN style="COLOR: #000000">255</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.path);<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;temp.ToString();<BR>}<BR>}<BR>}<BR><BR></SPAN>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=309" /> 
	  <id>http://www.openx.cn/default.asp?id=309</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[C# 管理Serv-U]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-06-28T16:48:13+08:00</updated>
	  <published>2006-06-28T16:48:13+08:00</published>
		  <summary type="html"><![CDATA[<SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">Serv-U&nbsp;管理</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System;<BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.Data;<BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.Data.OleDb;<BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.Web.Security;<BR><BR></SPAN><SPAN style="COLOR: #0000ff">namespace</SPAN><SPAN style="COLOR: #000000">&nbsp;Host.AdminManager.Inc<BR>{<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;ServU&nbsp;的摘要说明。<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">Access,AlwaysLogin,ChangePass,Disable,Expirationtype,Expiration,Groups,HideHidden,HomeDir,idleTimeOut,LogMesfile,MaxIp,MaxSpeedDown,MaxSpeedUp,MaxUsers,Name,Needsecure,Notes,PassType,Password,Privilege,QuotaCurrent,QuotaEnable,QuotaMax,RatioCredit,RatioDown,RatioType,RatioUP,RelPaths,SessionTimeOut,SkeyValues</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;ServU<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">#region</SPAN><SPAN style="COLOR: #000000">&nbsp;四程构造函数</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;用户名,密码,ftp主目录,空间大小(单位M)<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="帐号"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="密码"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="目录"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;ServU(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;帐号,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;密码,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;目录)<BR>{<BR>Name&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;帐号;<BR>Password&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;密码;<BR>HomeDir&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;目录;<BR>Access&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;目录&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">|RWAMLCDP</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;用户名,密码,ftp主目录,空间大小(单位M)<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="帐号"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="密码"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="目录"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="权限"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;ServU(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;帐号,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;密码,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;目录,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;权限)<BR>{<BR>Name&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;帐号;<BR>Password&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;密码;<BR>HomeDir&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;目录;<BR>Access&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;目录&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">|</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;权限;<BR>}<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;用户名,密码,ftp主目录,空间大小(单位M)<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="帐号"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="密码"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="目录"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="权限"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;ServU(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;帐号,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;密码,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;目录,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;空间)<BR>{<BR>Name&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;帐号;<BR>Password&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;密码;<BR>HomeDir&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;目录;<BR>QuotaMax&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;空间;<BR>Access&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;目录&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">|RWAMLCDP</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR>QuotaEnable&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;用户名,密码,ftp主目录,空间大小(单位M)<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="帐号"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="密码"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="目录"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="空间"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;param&nbsp;name="权限"&gt;&lt;/param&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;ServU(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;帐号,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;密码,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;目录,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;空间,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;权限)<BR>{<BR>Name&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;帐号;<BR>Password&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;密码;<BR>HomeDir&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;目录;<BR>QuotaMax&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;空间;<BR>Access&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;目录&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">|</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;权限;<BR>QuotaEnable&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">#endregion</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">#region</SPAN><SPAN style="COLOR: #000000">&nbsp;属性定义</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;目录IP访问规则<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;Access;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>Access&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;总是允许登陆<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;AlwaysLogin;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>AlwaysLogin&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;是否允许更改密码<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;ChangePass;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>ChangePass&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;启用禁用帐号<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;Disable;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>Disable&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;帐号到期型类<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;Expirationtype;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>Expirationtype&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;帐号到期时间<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;Expiration;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>Expiration&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;成员组名称<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;Groups;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>Groups&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;是否隐藏具有隐藏属性的文件<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;HideHidden;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>HideHidden&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}&nbsp;<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;空闲超时<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;idleTimeOut;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>idleTimeOut&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;登陆消息文件<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;LogMesfile;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>LogMesfile&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;同一IP的最大用户<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;MaxIp;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>MaxIp&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;连接速度&nbsp;单位&nbsp;KB/秒,<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;最大下载链接速度<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;MaxSpeedDown;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>MaxSpeedDown&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;summary&gt;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;连接速度&nbsp;单位&nbsp;KB/秒,<BR></SPAN><SPAN style="COLOR: #808080">///</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #808080">&lt;/summary&gt;</SPAN><SPAN style="COLOR: #808080"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;最大上传链接速度<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;MaxSpeedUp;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>MaxSpeedUp&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;最大并发用户<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;MaxUsers;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>MaxUsers&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;帐号名称<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;Name;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>Name&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;进程加密<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;Needsecure;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>Needsecure&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;帐号注解<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;Notes;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>Notes&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;密码类型<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;PassType;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>PassType&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;管理权限<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;Privilege;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>Privilege&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;当前磁盘配额<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;QuotaCurrent;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>QuotaCurrent&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;允许配额<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;QuotaEnable;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>QuotaEnable&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;最大磁盘配置额<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;QuotaMax;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>QuotaMax&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;(Convert.ToInt32(value)</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">1024</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">1024</SPAN><SPAN style="COLOR: #000000">).ToString();<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;比率信任<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;RatioCredit;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>RatioCredit&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;下载率<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;RatioDown;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>RatioDown&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;比率类型<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;RatioType;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>RatioType&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;上载率<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;RatioUP;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>RatioUP&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;锁定于主目录<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;RelPaths;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>RelPaths&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;进程超时<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;SessionTimeOut;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>SessionTimeOut&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;S_KEY设置<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;SkeyValues;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>SkeyValues&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;<BR>}<BR>}<BR><BR></SPAN><SPAN style="COLOR: #0000ff">#endregion</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">#region</SPAN><SPAN style="COLOR: #000000">&nbsp;初始化</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Access&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000">;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">@"e:\web|RWAMLCDP";</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;AlwaysLogin&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;ChangePass&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Disable&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Expirationtype&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Expiration&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">1980-1-1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Groups&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;HideHidden&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;HomeDir&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000">;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">主目录&nbsp;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;idleTimeOut&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">600</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">毫秒</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;LogMesfile&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">@"</SPAN><SPAN style="COLOR: #000000">http://vs.2288.org/host/copyright.aspx</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;MaxIp&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">-1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;MaxSpeedDown&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">204800</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">下载&nbsp;204800/1024=200KB/秒</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;MaxSpeedUp&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">204800</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">上传</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;MaxUsers&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">-1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">最大用户连接数</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Name&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Needsecure&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Notes&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;PassType&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Password&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Privilege&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;QuotaCurrent&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">当前配额&nbsp;10485760/1024/1024=10M</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;QuotaEnable&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;QuotaMax&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">最大配额</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;RatioCredit&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;RatioDown&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;RatioType&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;RatioUP&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;RelPaths&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;SessionTimeOut&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;SkeyValues&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">#endregion</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">#region</SPAN><SPAN style="COLOR: #000000">&nbsp;读取/增加/删除</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;DataSet&nbsp;Read()<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;str&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">@"</SPAN><SPAN style="COLOR: #000000">Provider=Microsoft.Jet.OLEDB.4.0;Data&nbsp;Source=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationSettings.AppSettings[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ftp数据库路径</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">]);<BR>OleDbConnection&nbsp;OleConn&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;OleDbConnection(str);<BR>OleDbDataAdapter&nbsp;OleDa&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;OleDbDataAdapter(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">SELECT&nbsp;*&nbsp;FROM&nbsp;useraccounts</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;OleConn);<BR>DataSet&nbsp;ds&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;DataSet();<BR>OleDa.Fill(ds,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">读取库</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>OleConn.Close();<BR>OleConn.Dispose();<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;ds;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;Boolean&nbsp;Add()<BR>{&nbsp;<BR>Password&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;NewMiMa(Password);<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;str1&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">[Access],[AlwaysLogin],[ChangePass],[Disable],[Expirationtype],[Expiration],[Groups],[HideHidden],[HomeDir],[idleTimeOut],[LogMesfile],[MaxIp],[MaxSpeedDown],[MaxSpeedUp],[MaxUsers],[Name],[Needsecure],[Notes],[PassType],[Password],[Privilege],[QuotaCurrent],[QuotaEnable],[QuotaMax],[RatioCredit],[RatioDown],[RatioType],[RatioUP],[RelPaths],[SessionTimeOut],[SkeyValues]</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;str2&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">'</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">Access</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">',</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">AlwaysLogin</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">ChangePass</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">Disable</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">Expirationtype</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,#</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">Expiration</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">#,'</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">Groups</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">',</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">HideHidden</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,'</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">HomeDir</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">',</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">idleTimeOut</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,'</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">LogMesfile</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">',</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">MaxIp</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">MaxSpeedDown</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">MaxSpeedUp</SPAN><SPAN style=, "COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">MaxUsers</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,'</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">Name</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">',</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">Needsecure</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,'</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">Notes</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">',</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">PassType</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,'</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">Password</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">',</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">Privilege</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">QuotaCurrent</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">QuotaEnable</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">QuotaMax</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">RatioCredit</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">RatioDown</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">RatioType</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">RatioUP</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">RelPaths</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">SessionTimeOut</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,'</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">SkeyValues</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">'</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;str&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">@"</SPAN><SPAN style="COLOR: #000000">Provider=Microsoft.Jet.OLEDB.4.0;Data&nbsp;Source=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationSettings.AppSettings[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ftp数据库路径</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">]);<BR>OleDbConnection&nbsp;conn&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;OleDbConnection(str);<BR>OleDbCommand&nbsp;cmd&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;OleDbCommand(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">INSERT&nbsp;INTO&nbsp;[useraccounts]&nbsp;(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">str1</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)&nbsp;VALUES&nbsp;(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">str2</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;conn);&nbsp;<BR>conn.Open();<BR>cmd.ExecuteNonQuery();&nbsp;<BR>conn.Close();<BR>conn.Dispose();<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;update(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;name,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;password)<BR>{<BR>password&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;NewMiMa(password);<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;str&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">@"</SPAN><SPAN style="COLOR: #000000">Provider=Microsoft.Jet.OLEDB.4.0;Data&nbsp;Source=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationSettings.AppSettings[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ftp数据库路径</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">]);<BR>OleDbConnection&nbsp;conn&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;OleDbConnection(str);<BR>OleDbCommand&nbsp;cmd&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;OleDbCommand(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">UPDATE&nbsp;[useraccounts]&nbsp;SET&nbsp;[name]='</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">name</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">',&nbsp;[password]='</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">password</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">'&nbsp;WHERE&nbsp;name='</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">name</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">'</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;conn);<BR>conn.Open();<BR>cmd.ExecuteNonQuery();&nbsp;<BR>cmd.Connection.Close();<BR>conn.Dispose();<BR>}<BR><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;Boolean&nbsp;del(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;name)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;str&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">@"</SPAN><SPAN style="COLOR: #000000">Provider=Microsoft.Jet.OLEDB.4.0;Data&nbsp;Source=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationSettings.AppSettings[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ftp数据库路径</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">]);<BR>OleDbConnection&nbsp;conn&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;OleDbConnection(str);<BR>OleDbCommand&nbsp;cmd&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;OleDbCommand(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">DELERE&nbsp;FROM&nbsp;[useraccounts]&nbsp;WHERE&nbsp;name='</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">name</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">'</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;conn);<BR>cmd.Connection.Open();<BR>cmd.ExecuteNonQuery();&nbsp;<BR>cmd.Connection.Close();<BR>cmd.Connection.Dispose();<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR><BR></SPAN><SPAN style="COLOR: #0000ff">#endregion</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">#region</SPAN><SPAN style="COLOR: #000000">&nbsp;加密方法,取随时数</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;JiaMi(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;UserPassword,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Password)&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">取原密码前两位来加密，以此合对密码</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">{&nbsp;<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Password2&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;UserPassword.Substring(</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">);<BR>Password&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Password2&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;Password;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">取密码的左边两位</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">Password&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;FormsAuthentication.HashPasswordForStoringInConfigFile(Password,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">MD5</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;Password2&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;Password;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;NewMiMa(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Password)&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">新密码加密</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;a&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;MakePassword();<BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;p&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;a&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;Password;<BR>Password&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;FormsAuthentication.HashPasswordForStoringInConfigFile(p,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">MD5</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;a&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;Password;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;MakePassword()<BR>{&nbsp;<BR></SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;pwdlen&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">生成随机字符的位数</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;pwdchars&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">abcdefghijklmnopkrstuvwxyzZBCDEFGHIJKLMNOPKRSTUVWXYZ</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">生成的字符包含那字</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;tmpstr&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000">;&nbsp;<BR></SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;iRandNum;&nbsp;<BR>Random&nbsp;rnd&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Random();&nbsp;<BR></SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;i</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">pwdlen;i</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">)<BR>{&nbsp;<BR>iRandNum&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;rnd.Next(pwdchars.Length);&nbsp;<BR>tmpstr&nbsp;</SPAN><SPAN style="COLOR: #000000">+=</SPAN><SPAN style="COLOR: #000000">&nbsp;pwdchars[iRandNum];&nbsp;<BR>}&nbsp;<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;tmpstr;&nbsp;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">#endregion</SPAN><SPAN style="COLOR: #000000"><BR>}<BR>}<BR><BR>&nbsp;&nbsp;<BR></SPAN>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=308" /> 
	  <id>http://www.openx.cn/default.asp?id=308</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[C# 管理WinNt 帐号]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-06-28T16:47:19+08:00</updated>
	  <published>2006-06-28T16:47:19+08:00</published>
		  <summary type="html"><![CDATA[<SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">WinNT用户管理</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System;<BR></SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.DirectoryServices;&nbsp;<BR></SPAN><SPAN style="COLOR: #0000ff">namespace</SPAN><SPAN style="COLOR: #000000">&nbsp;Host.AdminManager.Inc<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;WindwosUser<BR>{<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">创建NT用户<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">传入参数：Username要创建的用户名，Userpassword用户密码，Path主文件夹路径</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">bool</SPAN><SPAN style="COLOR: #000000">&nbsp;CreateNTUser(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Username,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Userpassword,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Path)<BR>{<BR>DirectoryEntry&nbsp;obDirEntry&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>obDirEntry&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;DirectoryEntry(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">WinNT://</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;Environment.MachineName);<BR>DirectoryEntry&nbsp;obUser&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;obDirEntry.Children.Add(Username,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">User</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">增加用户名</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">obUser.Properties[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">FullName</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">].Add(Username);&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">用户全称</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">obUser.Invoke(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">SetPassword</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;Userpassword);&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">用户密码</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">obUser.Invoke(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Put</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Description</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Test&nbsp;User&nbsp;from&nbsp;.NET</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">用户详细描述<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">obUser.Invoke("Put","PasswordExpired",1);&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">用户下次登录需更改密码</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">obUser.Invoke(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Put</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">UserFlags</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">66049</SPAN><SPAN style="COLOR: #000000">);&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">密码永不过期</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">obUser.Invoke(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Put</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">HomeDirectory</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,Path);&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">主文件夹路径</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">obUser.CommitChanges();</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">保存用户</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">DirectoryEntry&nbsp;grp&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;obDirEntry.Children.Find(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Users</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">group</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">Users组</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(grp.Name</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000">)<BR>{<BR>grp.Invoke(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Add</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,obUser.Path.ToString());</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">将用户添加到某组</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">}<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">false</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR>}<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">删除NT用户<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">传入参数：Username用户名</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">bool</SPAN><SPAN style="COLOR: #000000">&nbsp;DelNTUser(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Username)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>DirectoryEntry&nbsp;obComputer&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;DirectoryEntry(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">WinNt://</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;Environment.MachineName);</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">获得计算机实例</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">DirectoryEntry&nbsp;obUser&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;obComputer.Children.Find(Username,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">User</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">找得用户</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">obComputer.Children.Remove(obUser);</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">删除用户</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">false</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR>}<BR><BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">修改NT用户密码<BR></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">传入参数：Username用户名，Userpassword用户新密码</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">bool</SPAN><SPAN style="COLOR: #000000">&nbsp;InitNTPwd(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Username,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;Userpassword)<BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>DirectoryEntry&nbsp;obComputer&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;DirectoryEntry(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">WinNt://</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;Environment.MachineName);<BR>DirectoryEntry&nbsp;obUser&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;obComputer.Children.Find(Username,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">User</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>obUser.Invoke(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">SetPassword</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;Userpassword);<BR>obUser.CommitChanges();<BR>obUser.Close();<BR>obComputer.Close();<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000"><BR>{<BR></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">false</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR>}<BR>}<BR>}<BR><BR>&nbsp;<BR></SPAN>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=307" /> 
	  <id>http://www.openx.cn/default.asp?id=307</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[一个不错的Flash]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-06-28T14:25:15+08:00</updated>
	  <published>2006-06-28T14:25:15+08:00</published>
		  <summary type="html"><![CDATA[[swf]http://www.pconline.com.cn/pcedu/carton/xp/0606/flash/16fight.swf[/swf]]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=306" /> 
	  <id>http://www.openx.cn/default.asp?id=306</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[考试结束~嘿嘿~等毕业证书啦~]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-06-26T12:48:29+08:00</updated>
	  <published>2006-06-26T12:48:29+08:00</published>
		  <summary type="html"><![CDATA[<P>两年~嘿嘿~两年哇~不容易哇~</P>
<P>周天终于了结了一大庄心事.等毕业证书啦~</P>
<P>人生有计划才更精彩.</P>
<P>25岁前的证书计划还差个驾驶证没考.努力努力.</P>
<P>&nbsp;</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=305" /> 
	  <id>http://www.openx.cn/default.asp?id=305</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[TalkMe的计划]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=8" label="TalkMe" /> 
	  <updated>2006-06-23T18:20:19+08:00</updated>
	  <published>2006-06-23T18:20:19+08:00</published>
		  <summary type="html"><![CDATA[<P>接着给TalkMe的开发写个计划.</P>
<P>第一期:完成基础框架的搭建(网站的搭建,用户控制部分,数据通信部分),如果不出意外可以在7月18日前完成.</P>
<P>第二期:完成桌面版开发,功能上增强个性定制等.可能需要个把月,这样我的想法基本算是都实现了.这时候可以推出Demo给大家用了.</P>
<P>第三期:完成扩展功能的开发,网络硬盘,网络收藏夹,RSS浏览器,通讯录等.这时候会在社区上收集大家的意见,看情况开发新功能跟服务.</P>
<P>第四期:进行与其他IM平台的结合,MSN,GTalk等.不断完善,不断提高,力求完美.</P>
<P>第五期:如果工作还顺利不用考虑吃饭问题,如果那台老服务器还没挂,还会继续TalkMe.呵呵.</P>
<P>第六期:.....</P>
<P>第七期:.......</P>
<P>第八期:.........</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=303" /> 
	  <id>http://www.openx.cn/default.asp?id=303</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[这段时间一有时间就给TalkMe做大手术.]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=8" label="TalkMe" /> 
	  <updated>2006-06-23T18:10:00+08:00</updated>
	  <published>2006-06-23T18:10:00+08:00</published>
		  <summary type="html"><![CDATA[<P>刚刚更新了TalkMe.cn的主页,汇报了一下最近针对TalkMe的工作.</P>
<P>现在的想法相当成熟,我会一鼓作气做下去地,只要一有时间.</P>
<P>不过在做WEBTalk 跟 TalkMe的过程中感觉这一个人想做一件事情还真有点不容易.</P>
<P>毕竟开发一套系统不是那么简单的事情(做架构,写代码,做页面,弄图片,自己都快成多面手了).呵呵~</P>
<P>&nbsp;</P>
<P>还是不断学习,不断完善,尽早推出TalkMe.</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=302" /> 
	  <id>http://www.openx.cn/default.asp?id=302</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[收到Windows Live Mail Desktop Beta邮件]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-06-22T10:01:16+08:00</updated>
	  <published>2006-06-22T10:01:16+08:00</published>
		  <summary type="html"><![CDATA[<P>收到 Windows Live Mail Desktop Beta 邮件 下载安装后发现~不能用丫丫的~</P>
<P>&nbsp;</P>
<P>不知道有木有人遇到同样的问题的~</P>
<P>&nbsp;</P>
<P>说我网络未连接~嘎嘎~</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=301" /> 
	  <id>http://www.openx.cn/default.asp?id=301</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[终于获得Google相册邀请啦~嘎嘎~]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-06-20T09:25:07+08:00</updated>
	  <published>2006-06-20T09:25:07+08:00</published>
		  <summary type="html"><![CDATA[<P><A href="http://picasaweb.google.com/home">http://picasaweb.google.com/home</A></P>
<P>&nbsp;</P>
<P>正在疯狂试用中~</P>
<P>&nbsp;</P>
<P>250MB的空间应该够放~哈哈</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=300" /> 
	  <id>http://www.openx.cn/default.asp?id=300</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[获得存储卡ID的代码]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=7" label="移动开发" /> 
	  <updated>2006-06-17T20:03:15+08:00</updated>
	  <published>2006-06-17T20:03:15+08:00</published>
		  <summary type="html"><![CDATA[<SPAN style="FONT-SIZE: 12px">主要也是使用IoCtl函数：<BR>unsigned char* GetStroageID(LPCTSTR szDisk)<BR>{<BR>&nbsp; &nbsp; &nbsp; &nbsp; //HANDLE hDisk = CreateFile(_T("DSK1:"), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); <BR>&nbsp; &nbsp; &nbsp; &nbsp; HANDLE hDisk = CreateFile(szDisk, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); <BR>&nbsp; &nbsp; &nbsp; &nbsp; if (!hDisk) return FALSE;<BR><BR>&nbsp; &nbsp; &nbsp; &nbsp; PSTORAGE_IDENTIFICATION pStoreInfo = (PSTORAGE_IDENTIFICATION) new BYTE[3000];<BR><BR>&nbsp; &nbsp; &nbsp; &nbsp; DWORD dwBytesRet;<BR><BR>&nbsp; &nbsp; &nbsp; &nbsp; if (!DeviceIoControl(hDisk, IOCTL_DISK_GET_STORAGEID, NULL, 0, pStoreInfo, 3000, &dwBytesRet, NULL))<BR>&nbsp; &nbsp; &nbsp; &nbsp; {<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DWORD err = GetLastError(); <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; delete [] pStoreInfo; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CloseHandle(hDisk); <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return FALSE; <BR>&nbsp; &nbsp; &nbsp; &nbsp; }<BR><BR>&nbsp; &nbsp; &nbsp; &nbsp; BYTE *ManuID = (((BYTE *)pStoreInfo) + pStoreInfo-&gt;dwManufactureIDOffset); <BR>&nbsp; &nbsp; &nbsp; &nbsp; BYTE *SerialNo = (((BYTE *)pStoreInfo) + pStoreInfo-&gt;dwSerialNumOffset);<BR><BR>&nbsp; &nbsp; &nbsp; &nbsp; return SerialNo;<BR>}</SPAN>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=299" /> 
	  <id>http://www.openx.cn/default.asp?id=299</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[取得PPC2003设备机身设备序号的EVC程序和代码]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=7" label="移动开发" /> 
	  <updated>2006-06-17T19:57:12+08:00</updated>
	  <published>2006-06-17T19:57:12+08:00</published>
		  <summary type="html"><![CDATA[<SPAN style="FONT-SIZE: 12px">主要是使用KernelIOControl这个函数<BR>CString GetSerialNumberFromKernelIoControl()<BR>{<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;DWORD dwOutBytes;<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;const int nBuffSize = 4096;<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;byte arrOutBuff[nBuffSize];<BR><BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;BOOL bRes = ::KernelIoControl(IOCTL_HAL_GET_DEVICEID, <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; 0, 0, arrOutBuff, nBuffSize, &dwOutBytes);<BR><BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if (bRes) <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;{<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; CString strDeviceInfo;<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; for (unsigned int i = 0; i&lt;dwOutBytes; i++) <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; {<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;CString strNextChar;<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;strNextChar.Format(TEXT("%02X"), arrOutBuff);<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;strDeviceInfo += strNextChar;<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; }<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; CString strDeviceId = <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;strDeviceInfo.Mid(40,2) + <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;strDeviceInfo.Mid(45,9) + <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;strDeviceInfo.Mid(70,6);<BR><BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; return strDeviceId;<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;else<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;{<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; return _T("");<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<BR>}</SPAN>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=298" /> 
	  <id>http://www.openx.cn/default.asp?id=298</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[MFC PocketPC应用程序全屏方法]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=7" label="移动开发" /> 
	  <updated>2006-06-17T18:44:05+08:00</updated>
	  <published>2006-06-17T18:44:05+08:00</published>
		  <summary type="html"><![CDATA[<SPAN style="FONT-SIZE: 12px">基于对话框的MFC PocketPC应用程序全屏方法<BR><BR>1.需要将整个窗口向上平移26个像素以到达屏幕顶部，同时使用SHFullScreen()函数隐藏任务栏；<BR><BR>&nbsp;&nbsp;在OnInitDialog()函数中添加如下语句：<BR>&nbsp;&nbsp;RECT rc;<BR>&nbsp;&nbsp;GetWindowRect(&rc);<BR>&nbsp;&nbsp;rc.top-=26;<BR>&nbsp;&nbsp;MoveWindow(rc.left,rc.top,rc.right,rc.bottom,FALSE); //上移26像素<BR>&nbsp;&nbsp;SHFullScreen(this-&gt;m_hWnd,SHFS_HIDETASKBAR); //隐藏任务栏<BR><BR>2.防止使用Input Panel时任务栏出现；<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;说明，依据MSDN，在Input Panel活动时会发送WM_SETTING_CHANGE和WM_ACTIVATE两个消息。需要手工接管两个消息的处理保持全屏。<BR>&nbsp;&nbsp;MFC类中，CDialog类由CWnd类直接派生，所以这里可以直接手工添加函数。<BR><BR>&nbsp;&nbsp;在主程序的对话框类*Dlg.h头文件中这个位置，加入这两项(声明这两个函数)：<BR>&nbsp;&nbsp;// Implementation<BR>&nbsp; &nbsp;protected:<BR>&nbsp; &nbsp; &nbsp; &nbsp; HICON m_hIcon;<BR><BR>&nbsp; &nbsp; &nbsp; &nbsp; // Generated message map functions<BR>&nbsp; &nbsp; &nbsp; &nbsp; //{{AFX_MSG(CFullScreenDialogDlg)<BR>&nbsp; &nbsp; &nbsp; &nbsp; virtual BOOL OnInitDialog();<BR>&nbsp; &nbsp; &nbsp; &nbsp; virtual void OnSettingChange();&nbsp;&nbsp;=====================================&gt;1<BR>&nbsp; &nbsp; &nbsp; &nbsp; afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);&nbsp;&nbsp;=========&gt;2<BR>&nbsp; &nbsp; &nbsp; &nbsp; //}}AFX_MSG<BR>&nbsp; &nbsp; &nbsp; &nbsp; DECLARE_MESSAGE_MAP()<BR>&nbsp; &nbsp;<BR>&nbsp;&nbsp;在主程序的对话框类*Dlg.cpp实现文件中做如下修改:<BR>&nbsp;&nbsp;(1)在消息映射处加入<BR>&nbsp;&nbsp;BEGIN_MESSAGE_MAP(CFullScreenDialogDlg, CDialog)<BR>&nbsp; &nbsp; &nbsp; &nbsp; //{{AFX_MSG_MAP(CFullScreenDialogDlg)<BR>&nbsp; &nbsp; &nbsp; &nbsp; ON_WM_SETTINGCHANGE()&nbsp;&nbsp;========================================&gt;1<BR>&nbsp; &nbsp; &nbsp; &nbsp; ON_WM_ACTIVATE()&nbsp;&nbsp;============================================&gt;2<BR>&nbsp; &nbsp; &nbsp; &nbsp; //}}AFX_MSG_MAP<BR>&nbsp;&nbsp;END_MESSAGE_MAP()<BR><BR>&nbsp;&nbsp;手工添加这两个函数:<BR>&nbsp;&nbsp;void CFullScreenDialogDlg::OnSettingChange()<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;void CFullScreenDialogDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) <BR>&nbsp;&nbsp;{<BR>&nbsp; &nbsp; &nbsp; &nbsp; CWnd::OnActivate(nState, pWndOther, bMinimized);&nbsp;&nbsp;//注意这里从CWnd继承&nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; SHFullScreen( this-&gt;m_hWnd, SHFS_HIDETASKBAR);<BR>&nbsp;&nbsp;}<BR><BR>经过这样的修改,无论是使用Input Panel,还是热键运行其他程序后返回,都能够保持全屏。<BR><BR>附加：<BR>&nbsp; &nbsp; 如果有开发者希望屏蔽按下Esc和Enter键的退出，还需要添加这个PreTranslateMessage函数<BR><BR>&nbsp; &nbsp; BOOL CFullScreenDialogDlg::preTranslateMessage(MSG* pMsg)<BR>&nbsp; &nbsp; {<BR>&nbsp; &nbsp;&nbsp; &nbsp; if(pMsg-&gt;message==WM_KEYDOWN)<BR>&nbsp; &nbsp;&nbsp; &nbsp; {<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if(pMSg-&gt;wParam==VK_RETURN) return TRUE; //回车键<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if(pMsg-&gt;wParam==VK_ESCAPE) return TRUE;<BR>&nbsp; &nbsp;&nbsp; &nbsp; }<BR>&nbsp; &nbsp;&nbsp; &nbsp; return CDialog::preTranslateMessage(pMsg);<BR>&nbsp; &nbsp; }</SPAN>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=297" /> 
	  <id>http://www.openx.cn/default.asp?id=297</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[丫丫的~书终于到了~]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-06-16T17:37:54+08:00</updated>
	  <published>2006-06-16T17:37:54+08:00</published>
		  <summary type="html"><![CDATA[<P>话说2006-5-29 14:02:21在卓越订购了本 windows mobile 手机应用开发</P>
<P>再到今天2006年6月16 16:30:xx收到这书,耗时半个月之久~哈哈</P>
<P>本来想在淘宝买的,但书这东西盗版严重,万一碰到盗版的退货来回运费就亏大咯.</P>
<P>后面还是选择了 卓越(他们网站打着amazon.com旗下哦)满相信了他们.</P>
<P>结果订购后的7天吧订单被退订了,还没有任何通知给我.打电话才发现居然没有800电话打.</P>
<P>丫丫的用手机打长途还好偶手机话费便宜.那个客服态度实在不怎么的.</P>
<P>后面还是再订购了一次.</P>
<P>到了今天才收到~呼呼~</P>
<P>&nbsp;</P>
<P>看到卓越也不怎么的,中国的网购事业任重道远哦~</P>
<P>&nbsp;</P>
<P>再怎么的终于收到书了~吼吼~以后买书还是要去书店买~网购也便宜不到几块钱~嘎嘎~.</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=296" /> 
	  <id>http://www.openx.cn/default.asp?id=296</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Windows优化大师注册机源码]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-06-15T20:32:19+08:00</updated>
	  <published>2006-06-15T20:32:19+08:00</published>
		  <summary type="html"><![CDATA[<DIV id=world>
<P><FONT face=Verdana>unit Unit1;</FONT></P>
<P><FONT face=Verdana>interface</FONT></P>
<P><FONT face=Verdana>uses<BR>Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<BR>Dialogs, Registry, StdCtrls, Buttons;</FONT></P>
<P><FONT face=Verdana>type<BR>TForm1 = class(TForm)<BR>Label1: TLabel;<BR>Label2: TLabel;<BR>Edit1: TEdit;<BR>Edit2: TEdit;<BR>Label3: TLabel;<BR>Edit3: TEdit;<BR>GetKeySpeedButton: TSpeedButton;<BR>CheckBox1: TCheckBox;<BR>Label4: TLabel;<BR>procedure GetKeySpeedButtonClick(Sender: TObject);<BR>procedure CheckBox1Click(Sender: TObject);<BR>private<BR>{ Private declarations }<BR>public<BR>{ Public declarations }<BR>end;</FONT></P>
<P><FONT face=Verdana>var<BR>Form1: TForm1;<BR>Family, Model, Stepping: Byte;</FONT></P>
<P><FONT face=Verdana>implementation</FONT></P>
<P><FONT face=Verdana>{$R *.dfm}</FONT></P>
<P><FONT face=Verdana>//获得CPU信息的过程，用汇编代码写的<BR>procedure GetCpuID;<BR>asm<BR>PUSH EAX<BR>MOV EAX, 1<BR>DW $A20F //汇编指令CPUID的机器代码<BR>MOV Stepping, AL<BR>AND Stepping, 0FH //取得CPU STEPPING数送入到变量Stepping中<BR>AND AL, 0F0H<BR>SHR AL, 4<BR>MOV Model, AL //取得CPU MODEL数送入到变量Model中<BR>SHR AX, 8<BR>AND AL, 0FH<BR>MOV Family, AL //取得CPU FAMILYG数送入到变量Family中<BR>POP EAX<BR>end;</FONT></P>
<P><FONT face=Verdana>//RSA的加密和解密函数，等价于(m^e) mod n（即m的e次幂对n求余）<BR>function Encrypt_Decrypt(m: Int64; e: Int64=$2C86F9; n: Int64=$69AAA0E3): Int64;<BR>var<BR>a, b, c: Int64;<BR>begin<BR>a:=m;<BR>b:=e;<BR>c:=1;<BR>while b&lt;&gt;0 do<BR>if (b mod 2)=0<BR>then begin<BR>b:=b div 2;<BR>a:=(a * a) mod n;<BR>end<BR>else begin<BR>b:=b - 1;<BR>c:=(a * c) mod n;<BR>end;<BR>Result:=c;<BR>end;</FONT></P>
<P><FONT face=Verdana>procedure TForm1.GetKeySpeedButtonClick(Sender: TObject);<BR>var<BR>ID, UserName, CpuVer: String;<BR>s: Array [1..4] of Cardinal;<BR>temp, Num1, Num2: Cardinal;<BR>Code1, Code2: Int64;<BR>i, ascii: Byte;<BR>Reg: TRegistry;<BR>begin<BR>if (Edit1.Text='') and (CheckBox1.Checked=False)<BR>then Application.MessageBox('请输入注册申请码！', '警告', MB_OK);<BR>if (Edit1.Text='') and (CheckBox1.Checked=True)<BR>then Application.MessageBox('请输入注册者姓名！', '警告', MB_OK);<BR>if (CheckBox1.Checked=true) and (Edit1.Text&lt;&gt;'')<BR>then begin<BR>UserName:=Edit1.Text; //从Edit1.Text中取得用户名<BR>GetCpuID; //调用过程GetCpuID<BR>CpuVer:='Level '+IntToStr(Family)+' Rev. '+IntToStr(Model)+'.'+IntToStr(Stepping);<BR>temp:=1;<BR>i:=1;<BR>while UserName[i]&lt;&gt;#0 do begin<BR>ascii:=ord(UserName[i]); //函数ord()的作用为取得字符的ASCII码<BR>temp:=(temp*ascii+$D0878) mod $F4240;<BR>inc(i);<BR>end;<BR>i:=1;<BR>while CpuVer[i]&lt;&gt;#0 do begin<BR>ascii:=ord(CpuVer[i]);<BR>temp:=(temp*ascii+$2597D) mod $F4240;<BR>inc(i);<BR>end;<BR>ID:=IntToStr(temp);<BR>end;<BR>if (CheckBox1.Checked=false) and (Edit1.Text&lt;&gt;'')<BR>then ID:=Edit1.Text;<BR>ID:=ID+'1234567';<BR>SetLength(ID, 8); //把字符串ID长度变为8个，并把后面的字符截掉</FONT></P>
<P><FONT face=Verdana>//下面四行语句是把字符串'You are big pig.'的内存数据送到变量s中<BR>s[1]:=$20756f59;<BR>s[2]:=$20657261;<BR>s[3]:=$20676962;<BR>s[4]:=$2e676970;<BR>Num1:=0;<BR>for i:=4 downto 2 do<BR>Num1:=(Num1+ord(ID[i])) shl 8;<BR>Num1:=Num1+ord(ID[1]);<BR>Num2:=0;<BR>for i:=8 downto 6 do<BR>Num2:=(Num2+ord(ID[i])) shl 8;<BR>Num2:=Num2+ord(ID[5]);<BR>temp:=0;<BR>for i:=1 to 32 do begin<BR>temp:=temp+$9E3779B9;<BR>Num1:=Num1+(Num2 shl 4)+(s[1] xor Num2)+((Num2 shr 5) xor temp)+s[2];<BR>Num2:=Num2+(Num1 shl 4)+(s[3] xor Num1)+((Num1 shr 5) xor temp)+s[4];<BR>end;</FONT></P>
<P><FONT face=Verdana>Code1:=(Num1 mod $40000000) + 2;<BR>Code2:=($93E0014 shl 2)+ Num1 div $40000000 + 2;<BR>Code1:=Encrypt_Decrypt(Code1);<BR>code2:=Encrypt_Decrypt(Code2);<BR>if (CheckBox1.Checked=False) and (Edit1.Text&lt;&gt;'')<BR>then begin<BR>Edit2.Text:=IntToHex(Code1, 8);<BR>Edit3.Text:=IntToHex(Code2, 8);<BR>end;<BR>if (CheckBox1.Checked=True) and (Edit1.Text&lt;&gt;'')<BR>then begin<BR>Reg:=TRegistry.Create;<BR>Reg.RootKey:=HKEY_LOCAL_MACHINE;<BR>if Reg.OpenKey('Software/Wom', True)<BR>then begin<BR>Reg.DeleteValue('Masters');<BR>Reg.WriteString('Register', UserName);<BR>Reg.WriteString('Register_1', IntToHex(Code1, 8));<BR>Reg.WriteString('Register_2', IntToHex(Code2, 8));<BR>end;<BR>Reg.Free;<BR>Application.MessageBox('自动注册完成！', '信息', MB_OK);<BR>end;<BR>end;</FONT></P>
<P><FONT face=Verdana>procedure TForm1.CheckBox1Click(Sender: TObject);<BR>begin<BR>if CheckBox1.Checked=true<BR>then begin<BR>GetKeySpeedButton.Caption:='自动注册';<BR>Label1.Caption:='注册者姓名';<BR>Edit1.MaxLength:=0;<BR>Label2.Visible:=false;<BR>Label3.Visible:=false;<BR>Edit2.Visible:=false;<BR>Edit3.Visible:=false;<BR>end<BR>else begin<BR>GetKeySpeedButton.Caption:='取得注册码';<BR>Label1.Caption:='注册申请码';<BR>Edit1.MaxLength:=8;<BR>Label2.Visible:=true;<BR>Label3.Visible:=true;<BR>Edit2.Visible:=true;<BR>Edit3.Visible:=true;<BR>end;<BR>end;</FONT></P>
<P><FONT face=Verdana>end.</FONT></P></DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=295" /> 
	  <id>http://www.openx.cn/default.asp?id=295</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[about CString of EVC]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=7" label="移动开发" /> 
	  <updated>2006-06-14T17:39:36+08:00</updated>
	  <published>2006-06-14T17:39:36+08:00</published>
		  <summary type="html"><![CDATA[<SPAN class=unnamed3><FONT face=宋体>EVC在某种意义上说，相当于VC的一个子集。因为大多EVC有的功能，VC也具备，而VC有的功能，EVC则不一定拥有。在VC中，操作字符串很方便，因为WINDOWS的字处理能力实在是很强大，它支持多种字符集。我们随便使用一个CString str=“你好”，就要以输入我们想要的中文字符串。在EVC中这种情况有所改变，因为WINCE的字处理能力不够强大，它在处理汉字里统一将它示为UNICODE编码，所以我们在EVC中片理中文字符串时需要用到UNICODE编码。下面结合WINDOWS 下VC字符串的处理，对比一下EVC中文字符串的片理方法。<BR><BR>一、中文字符串定义<BR>1、在VC中我们如果定义一个中文字符串，可以使用CString str=“你好”或LPCTSTR&nbsp; str=“你好”。<BR>2、在EVC中我们如果想定义一个中文字符串，可以使用如下方法：CString str=_T(“你好”)或者LPCTSTR&nbsp; str=“你好”，这里LPCTSTR在EVC里就是表示UNICODE字符串。值得注意的是_T（）宏中，括号中只能填写常量，不能填定变量。<BR>二、字符串操作<BR>1、在VC中我们想拷贝字符串，可以作如下操作：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char s[20];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CString str=“你好”;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcpy(s,str);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在EVC中则不能这样做，首先定义中文数组应该用双字节指针wchar_t，而拷贝函数也不能用strcpy，而应该用：wchar_t * wcscpy(wchar_t * wDest,wchar_t wSource);函数，操作如下：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wchar_t s[20];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CString str=“你好”;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wcscpy(s,(LPCTSTR)str); //前面没有转成UNICODE编码，所以这里需要强制转换<BR>2、在VC中我们想在一个字符串中查找某个子串，只需要作下面的操作：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CString str=“你是一个好学生”；<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str.Find(“学生”);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在EVC中不能这样做，因为中文字符串为UNICODE编码，我们必需在查找函数的参数里作如下修改：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str.Find(_T(“学生”));</FONT><BR></SPAN>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=294" /> 
	  <id>http://www.openx.cn/default.asp?id=294</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[PocketPC - EVC开发技巧大集合！]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=7" label="移动开发" /> 
	  <updated>2006-06-14T17:35:27+08:00</updated>
	  <published>2006-06-14T17:35:27+08:00</published>
		  <summary type="html"><![CDATA[<P>//Hard Reset！</P>
<P>#include &lt;winioctl.h&gt;</P>
<P>#define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)</P>
<P>extern "C" __declspec(dllimport)void SetCleanRebootFlag(void);</P>
<P>extern "C" __declspec(dllimport) BOOL KernelIoControl(<BR>DWORD dwIoControlCode, <BR>LPVOID lpInBuf, <BR>DWORD nInBufSize, <BR>LPVOID lpOutBuf, <BR>DWORD nOutBufSize, <BR>LPDWORD lpBytesReturned);</P>
<P>BOOL HardResetPocketPC()<BR>{<BR>SetCleanRebootFlag();<BR>return KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL);<BR>}</P>
<P>////////////////////////////////////////////////////</P>
<P>//全屏<BR>void FullScreen(HWND hDlg)<BR>{<BR>RECT rc;<BR>GetWindowRect(hDlg, &rc);&nbsp;&nbsp;<BR>SHFullScreen(hDlg, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON);<BR>MoveWindow( hDlg, rc.left, rc.top, rc.right,&nbsp;&nbsp;rc.bottom, TRUE);&nbsp;&nbsp; <BR>}</P>
<P>//类似参数要注意SHFS_HIDETASKBAR HIDE为隐藏、SHOW为显示</P>
<P>////////////////////////////////////////////////////</P>
<P><BR>//WinSDK编程 显示隐藏光标</P>
<P>int&nbsp;&nbsp;nWaitCursorCount; //光标记数器</P>
<P>/******************************************************<BR>*显示隐藏光标nCode=1为显示,-1为隐藏<BR>*****************************************************/<BR>void SHCursor(int nCode)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;static HCURSOR cur;<BR>&nbsp;&nbsp;&nbsp;&nbsp;static BOOL bo=true;<BR>if (bo) <BR>{<BR>&nbsp;&nbsp;cur = ::LoadCursor(NULL, IDC_WAIT);<BR>&nbsp;&nbsp;bo = false;<BR>}<BR>m_nWaitCursorCount += nCode;<BR>if (m_nWaitCursorCount &gt; 0)<BR>{<BR>&nbsp;&nbsp;HCURSOR hcurPrev = ::SetCursor(cur);<BR>&nbsp;&nbsp;if (nCode &gt; 0 && m_nWaitCursorCount == 1)<BR>&nbsp;&nbsp; m_hcurWaitCursorRestore = hcurPrev;<BR>}<BR>else<BR>{<BR>&nbsp;&nbsp;// turn everything off<BR>&nbsp;&nbsp;m_nWaitCursorCount = 0;&nbsp;&nbsp;&nbsp;&nbsp; // prevent underflow<BR>&nbsp;&nbsp;::SetCursor(m_hcurWaitCursorRestore);<BR>}<BR>}</P>
<P>/******************************************************<BR>*开始显示光标<BR>*****************************************************/<BR>void BeginCursor()<BR>{<BR>m_nWaitCursorCount = 0;<BR>SHCursor(1);<BR>}</P>
<P>/******************************************************<BR>*结束显示光标<BR>*****************************************************/<BR>void EndCursor()<BR>{<BR>m_nWaitCursorCount = 0;<BR>SHCursor(-1);<BR>}</P>
<P>//////////////////////////////////////////////////////////</P>
<P>//调用其它程序</P>
<P>/******************************************************<BR>*打开其它应用程序<BR>*****************************************************/<BR>void Shell(HWND hWnd,LPTSTR ProPath)<BR>{<BR>int ret;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPTSTR exec = (LPTSTR)malloc(MAX_PATH);<BR>&nbsp;&nbsp;&nbsp;&nbsp;SHELLEXECUTEINFO shi;<BR>&nbsp;&nbsp;&nbsp;&nbsp;exec = ProPath;<BR>&nbsp;&nbsp;&nbsp;&nbsp;shi.cbSize = sizeof(SHELLEXECUTEINFO);<BR>&nbsp;&nbsp;&nbsp;&nbsp;shi.lpVerb = TEXT("open");<BR>&nbsp;&nbsp;&nbsp;&nbsp;shi.lpFile = exec;<BR>&nbsp;&nbsp;&nbsp;&nbsp;shi.nShow = SW_SHOWNORMAL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ret = ShellExecuteEx(&shi);<BR>}</P>
<P>////////////////////////////////////////////////////////</P>
<P>//WINSDK 弹出式菜单</P>
<P>/******************************************************<BR>*弹出菜单<BR>*****************************************************/<BR>VOID APIENTRY PopupMenu ( HWND hWnd, POINT point, int IDM)<BR>{<BR>&nbsp;&nbsp;HMENU hMenu;<BR>&nbsp;&nbsp;HMENU hMenuTrackPopup;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;// 得到弹出菜单资源<BR>&nbsp;&nbsp;hMenu = LoadMenu (ghInst, MAKEINTRESOURCE(IDM));<BR>&nbsp;&nbsp;if (!hMenu)<BR>&nbsp;&nbsp;&nbsp;&nbsp;return;</P>
<P>&nbsp;&nbsp;hMenuTrackPopup = GetSubMenu (hMenu, 0);&nbsp;&nbsp;<BR>&nbsp;&nbsp;ClientToScreen (hWnd, (LPPOINT)&point);&nbsp;&nbsp;<BR>&nbsp;&nbsp;TrackPopupMenu (hMenuTrackPopup, 0, point.x, point.y, 0, hWnd, NULL);<BR>&nbsp;&nbsp;DestroyMenu (hMenu);<BR>}</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=293" /> 
	  <id>http://www.openx.cn/default.asp?id=293</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[MSN Cartoon (BETA)可以弄照片为卡通的哦~]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-06-14T12:59:10+08:00</updated>
	  <published>2006-06-14T12:59:10+08:00</published>
		  <summary type="html"><![CDATA[<BR><A href="http://www.yupoo.com/view/88792bc5d5494753912ea13c1fed6c8a" target=_blank><IMG src="http://photo7.yupoo.com/20060613/20060613212032_280833464_m.jpg" border=0></A><A href="http://www.yupoo.com/view/5e5309b1fa30413e8d347d56a507ad9c" target=_blank><IMG src="http://photo7.yupoo.com/20060613/20060613212032_1760242966_m.jpg" border=0></A><BR><A href="http://www.yupoo.com/view/33fa657661a74234a92c9fc3975e1c73" target=_blank><IMG src="http://photo7.yupoo.com/20060613/20060613212032_1487112325_m.jpg" border=0></A><A href="http://www.yupoo.com/view/e65e94f239474adda3a1019fd2ee0023" target=_blank><IMG src="http://photo7.yupoo.com/20060613/20060613212032_1613927111_m.jpg" border=0></A><BR><A href="http://www.yupoo.com/view/b2d6c9cafafb49e8938f671bb10d0ab4" target=_blank><IMG src="http://photo7.yupoo.com/20060613/20060613212032_657871824_m.jpg" border=0></A><A href="http://www.yupoo.com/view/72af3ee3c63846db89b78231a8b0d087" target=_blank><IMG src="http://photo7.yupoo.com/20060613/20060613212032_783958238_m.jpg" border=0></A><BR><A href="http://www.yupoo.com/view/f8f086b4f4aa4ab98e5cab03022a2a89" target=_blank><IMG src="http://photo7.yupoo.com/20060613/20060613212032_1340361974_m.jpg" border=0></A><A href="http://www.yupoo.com/view/52e1160c3fcc439ba348dd7260144c8f" target=_blank><IMG src="http://photo7.yupoo.com/20060613/20060613212032_1887041214_m.jpg" border=0></A><BR>只适用于IE用户.<BR>这是投递者的卡通头像以及他的说明:<BR><IMG title="MSN Cartoon effect" height=95 alt="MSN Cartoon effect" src="http://tk.files.storage.msn.com/x1pUr2osLO3XWjT8llsjaLcQrnbQqXsKlmzZ6OAhU6WoUMgjcqgh-NNPjUwqhQFFa-pWLUxQApd4wX2vTwnVqw93wK5BeGr0LhJT0jly5O4TaA" width=96 border=0><BR>使用了一下, 有几点注意事项:<BR>1. 选取图片一定要尽量选择正面, 定位脸部时候要包含下巴等全部脸部区域.<BR>2. 调整脸部的时候曲线会一起动.<BR>3. 添加的配件可以通过再点击一下取消.<BR>4. 可以选择任意的人种模版.<BR><BR><A href="http://cartoon.msn.com.cn/">进入MSN Cartoon(BETA)</A>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=292" /> 
	  <id>http://www.openx.cn/default.asp?id=292</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Google Earth出新版咯 (Release 4 - BETA)]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-06-13T10:38:20+08:00</updated>
	  <published>2006-06-13T10:38:20+08:00</published>
		  <summary type="html"><![CDATA[<P><IMG height=431 src="http://earth.google.com/images/callouts.gif" width=525></P>
<P>
<TABLE cellSpacing=1 cellPadding=4 width="100%" border=0>
<TBODY>
<TR>
<TD align=middle width="50%"><IMG height=233 src="http://earth.google.com/images/3dnontexturedlarge.jpg" width=300><BR>之前Earth的只有建模</TD>
<TD align=middle width="50%"><IMG height=233 src="http://earth.google.com/images/3dtexturedlarge.jpg" width=300><BR>现在连贴图都上了</TD></TR></TBODY></TABLE></P>
<P>&nbsp;</P>
<P>赶紧下载:<A href="http://earth.google.com/earth4.html">http://earth.google.com/earth4.html</A></P>
<P>&nbsp;</P>
<P>&nbsp;</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=291" /> 
	  <id>http://www.openx.cn/default.asp?id=291</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[刚整了一个自动 转换 翻译 繁简英 的 js]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-06-09T11:27:34+08:00</updated>
	  <published>2006-06-09T11:27:34+08:00</published>
		  <summary type="html"><![CDATA[<P>//来源网络上搜到的原作者不详,使用了他的繁简库,修改了自动转换的方式,另加了google的自动翻译,嘿嘿~<BR>//修改:Cxty@msn.com<BR>//修改时间:20060609<BR>//使用方法:&lt;script language="JavaScript" type="text/javascript" src="[目录]/language.js"&gt;&lt;/script&gt;<BR>//复制全部另存为 language.js</P>
<P><BR>document.write('&lt;select name="select_language" id="select_language" class="FontSizeStyle"&gt;&lt;option value="1" selected&gt;简体中文&lt;/option&gt;&lt;option value="2"&gt;繁體中文&lt;/option&gt;&lt;option value="3"&gt;English language&lt;/option&gt;&lt;/select&gt;');<BR>var Default_isFT = 0&nbsp;//默认是否繁体，0-简体，1-繁体<BR>var StranIt_Delay = 50 //翻译延时毫秒（设这个的目的是让网页先流畅的显现出来）</P>
<P>//转换文本<BR>function StranText(txt,toFT,chgTxt)<BR>{<BR>&nbsp;if(txt==""||txt==null)return ""<BR>&nbsp;toFT=toFT==null?BodyIsFt:toFT<BR>&nbsp;if(chgTxt)txt=txt.replace((toFT?"简":"繁"),(toFT?"繁":"简"))<BR>&nbsp;if(toFT){return Traditionalized(txt)}<BR>&nbsp;else {return Simplized(txt)}<BR>}<BR>//转换对象，使用递归，逐层剥到文本<BR>function StranBody(fobj)<BR>{<BR>&nbsp;var this_Page = true;<BR>&nbsp;if(typeof(fobj)=="object"){var obj=fobj.childNodes}<BR>&nbsp;else <BR>&nbsp;{<BR>&nbsp;&nbsp;var tmptxt=select_language_Obj.options[select_language_Obj.selectedIndex].value;<BR>&nbsp;&nbsp;switch(tmptxt){<BR>&nbsp;&nbsp;&nbsp;case '1':<BR>&nbsp;&nbsp;&nbsp;&nbsp;BodyIsFt=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;this_Page = true;<BR>&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;case '2':<BR>&nbsp;&nbsp;&nbsp;&nbsp;BodyIsFt=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;this_Page = true;<BR>&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;case '3':<BR>&nbsp;&nbsp;&nbsp;&nbsp;BodyIsFt=2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;this_Page = false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;select_language_Obj.options[0].selected = true;<BR>&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;setCookie(JF_cn,BodyIsFt,7);<BR>&nbsp;&nbsp;var obj=document.body.childNodes;<BR>&nbsp;}<BR>&nbsp;if(this_Page){<BR>&nbsp;&nbsp;for(var i=0;i&lt;obj.length;i++)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;var OO=obj.item(i)<BR>&nbsp;&nbsp;&nbsp;if("||BR|HR|TEXTAREA|".indexOf("|"+OO.tagName+"|")&gt;0||OO==select_language_Obj)continue;<BR>&nbsp;&nbsp;&nbsp;if(OO.title!=""&&OO.title!=null)OO.title=StranText(OO.title);<BR>&nbsp;&nbsp;&nbsp;if(OO.alt!=""&&OO.alt!=null)OO.alt=StranText(OO.alt);<BR>&nbsp;&nbsp;&nbsp;if(OO.tagName=="INPUT"&&OO.value!=""&&OO.type!="text"&&OO.type!="hidden")OO.value=StranText(OO.value);<BR>&nbsp;&nbsp;&nbsp;if(OO.nodeType==3){OO.data=StranText(OO.data)}<BR>&nbsp;&nbsp;&nbsp;else{StranBody(OO);}<BR>&nbsp;&nbsp;}<BR>&nbsp;}else{<BR>&nbsp;&nbsp;window.open('http://translate.google.com/translate?u='+ self.location +'&langpair=zh-CN%7Cen&hl=zh-CN&newwindow=1&ie=UTF-8&oe=UTF-8&prev=%2Flanguage_tools');<BR>&nbsp;}<BR>}<BR>function JTPYStr()<BR>{<BR>&nbsp;return '皑蔼碍爱翱袄奥坝罢摆败颁办绊帮绑镑谤剥饱宝报鲍辈贝钡狈备惫绷笔毕毙闭边编贬变辩辫鳖瘪濒滨宾摈饼拨钵铂驳卜补参蚕残惭惨灿苍舱仓沧厕侧册测层诧搀掺蝉馋谗缠铲产阐颤场尝长偿肠厂畅钞车彻尘陈衬撑称惩诚骋痴迟驰耻齿炽冲虫宠畴踌筹绸丑橱厨锄雏础储触处传疮闯创锤纯绰辞词赐聪葱囱从丛凑窜错达带贷担单郸掸胆惮诞弹当挡党荡档捣岛祷导盗灯邓敌涤递缔点垫电淀钓调迭谍叠钉顶锭订东动栋冻斗犊独读赌镀锻断缎兑队对吨顿钝夺鹅额讹恶饿儿尔饵贰发罚阀珐矾钒烦范贩饭访纺飞废费纷坟奋愤粪丰枫锋风疯冯缝讽凤肤辐抚辅赋复负讣妇缚该钙盖干赶秆赣冈刚钢纲岗皋镐搁鸽阁铬个给龚宫巩贡钩沟构购够蛊顾剐关观馆惯贯广规硅归龟闺轨诡柜贵刽辊滚锅国过骇韩汉阂鹤贺横轰鸿红后壶护沪户哗华画划话怀坏欢环还缓换唤痪焕涣黄谎挥辉毁贿秽会烩汇讳诲绘荤浑伙获货祸击机积饥讥鸡绩缉极辑级挤几蓟剂济计记际继纪夹荚颊贾钾价驾歼监坚笺间艰缄茧检碱硷拣捡简俭减荐槛鉴践贱见键舰剑饯渐溅涧浆蒋桨奖讲酱胶浇骄娇搅铰矫侥脚饺缴绞轿较秸阶节茎惊经颈静镜径痉竞净纠厩旧驹举据锯惧剧鹃绢杰洁结诫届紧锦仅谨进晋烬尽劲荆觉决诀绝钧军骏开凯颗壳课垦恳抠库裤夸块侩宽矿旷况亏岿窥馈溃扩阔蜡腊莱来赖蓝栏拦篮阑兰澜谰揽览懒缆烂滥捞劳涝乐镭垒类泪篱离里鲤礼丽厉励砾历沥隶俩联莲连镰怜涟帘敛脸链恋炼练粮凉两辆谅疗辽镣猎临邻鳞凛赁龄铃凌灵岭领馏刘龙聋咙笼垄拢陇楼娄搂篓芦卢颅庐炉掳卤虏鲁赂禄录陆驴吕铝侣屡缕虑滤绿峦挛孪滦乱抡轮伦仑沦纶论萝罗逻锣箩骡骆络妈玛码蚂马骂吗买麦卖迈脉瞒馒蛮满谩猫锚铆贸么霉没镁门闷们锰梦谜弥觅绵缅庙灭悯闽鸣铭谬谋亩钠纳难挠脑恼闹馁腻撵捻酿鸟聂啮镊镍柠狞宁拧泞钮纽脓浓农疟诺欧鸥殴呕沤盘庞国爱赔喷鹏骗飘频贫苹凭评泼颇扑铺朴谱脐齐骑岂启气弃讫牵扦钎铅迁签谦钱钳潜浅谴堑枪呛墙蔷强抢锹桥乔侨翘窍窃钦亲轻氢倾顷请庆琼穷趋区躯驱龋颧权劝却鹊让饶扰绕热韧认纫荣绒软锐闰润洒萨鳃赛伞丧骚扫涩杀纱筛晒闪陕赡缮伤赏烧绍赊摄慑设绅审婶肾渗声绳胜圣师狮湿诗尸时蚀实识驶势释饰视试寿兽枢输书赎属术树竖数帅双谁税顺说硕烁丝饲耸怂颂讼诵擞苏诉肃虽绥岁孙损笋缩琐锁獭挞抬摊贪瘫滩坛谭谈叹汤烫涛绦腾誊锑题体屉条贴铁厅听烃铜统头图涂团颓蜕脱鸵驮驼椭洼袜弯湾顽万网韦违围为潍维苇伟伪纬谓卫温闻纹稳问瓮挝蜗涡窝呜钨乌诬无芜吴坞雾务误锡牺袭习铣戏细虾辖峡侠狭厦锨鲜纤咸贤衔闲显险现献县馅羡宪线厢镶乡详响项萧销晓啸蝎协挟携胁谐写泻谢锌衅兴汹锈绣虚嘘须许绪续轩悬选癣绚学勋询寻驯训讯逊压鸦鸭哑亚讶阉烟盐严颜阎艳厌砚彦谚验鸯杨扬疡阳痒养样瑶摇尧遥窑谣药爷页业叶医铱颐遗仪彝蚁艺亿忆义诣议谊译异绎荫阴银饮樱婴鹰应缨莹萤营荧蝇颖哟拥佣痈踊咏涌优忧邮铀犹游诱舆鱼渔娱与屿语吁御狱誉预驭鸳渊辕园员圆缘远愿约跃钥岳粤悦阅云郧匀陨运蕴酝晕韵杂灾载攒暂赞赃脏凿枣灶责择则泽贼赠扎札轧铡闸诈斋债毡盏斩辗崭栈战绽张涨帐账胀赵蛰辙锗这贞针侦诊镇阵挣睁狰帧郑证织职执纸挚掷帜质钟终种肿众诌轴皱昼骤猪诸诛烛瞩嘱贮铸筑驻专砖转赚桩庄装妆壮状锥赘坠缀谆浊兹资渍踪综总纵邹诅组钻致钟么为只凶准启板里雳余链泄';<BR>}<BR>function FTPYStr()<BR>{<BR>&nbsp;return '皚藹礙愛翺襖奧壩罷擺敗頒辦絆幫綁鎊謗剝飽寶報鮑輩貝鋇狽備憊繃筆畢斃閉邊編貶變辯辮鼈癟瀕濱賓擯餅撥缽鉑駁蔔補參蠶殘慚慘燦蒼艙倉滄廁側冊測層詫攙摻蟬饞讒纏鏟産闡顫場嘗長償腸廠暢鈔車徹塵陳襯撐稱懲誠騁癡遲馳恥齒熾沖蟲寵疇躊籌綢醜櫥廚鋤雛礎儲觸處傳瘡闖創錘純綽辭詞賜聰蔥囪從叢湊竄錯達帶貸擔單鄲撣膽憚誕彈當擋黨蕩檔搗島禱導盜燈鄧敵滌遞締點墊電澱釣調叠諜疊釘頂錠訂東動棟凍鬥犢獨讀賭鍍鍛斷緞兌隊對噸頓鈍奪鵝額訛惡餓兒爾餌貳發罰閥琺礬釩煩範販飯訪紡飛廢費紛墳奮憤糞豐楓鋒風瘋馮縫諷鳳膚輻撫輔賦複負訃婦縛該鈣蓋幹趕稈贛岡剛鋼綱崗臯鎬擱鴿閣鉻個給龔宮鞏貢鈎溝構購夠蠱顧剮關觀館慣貫廣規矽歸龜閨軌詭櫃貴劊輥滾鍋國過駭韓漢閡鶴賀橫轟鴻紅後壺護滬戶嘩華畫劃話懷壞歡環還緩換喚瘓煥渙黃謊揮輝毀賄穢會燴彙諱誨繪葷渾夥獲貨禍擊機積饑譏雞績緝極輯級擠幾薊劑濟計記際繼紀夾莢頰賈鉀價駕殲監堅箋間艱緘繭檢堿鹼揀撿簡儉減薦檻鑒踐賤見鍵艦劍餞漸濺澗漿蔣槳獎講醬膠澆驕嬌攪鉸矯僥腳餃繳絞轎較稭階節莖驚經頸靜鏡徑痙競淨糾廄舊駒舉據鋸懼劇鵑絹傑潔結誡屆緊錦僅謹進晉燼盡勁荊覺決訣絕鈞軍駿開凱顆殼課墾懇摳庫褲誇塊儈寬礦曠況虧巋窺饋潰擴闊蠟臘萊來賴藍欄攔籃闌蘭瀾讕攬覽懶纜爛濫撈勞澇樂鐳壘類淚籬離裏鯉禮麗厲勵礫曆瀝隸倆聯蓮連鐮憐漣簾斂臉鏈戀煉練糧涼兩輛諒療遼鐐獵臨鄰鱗凜賃齡鈴淩靈嶺領餾劉龍聾嚨籠壟攏隴樓婁摟簍蘆盧顱廬爐擄鹵虜魯賂祿錄陸驢呂鋁侶屢縷慮濾綠巒攣孿灤亂掄輪倫侖淪綸論蘿羅邏鑼籮騾駱絡媽瑪碼螞馬罵嗎買麥賣邁脈瞞饅蠻滿謾貓錨鉚貿麽黴沒鎂門悶們錳夢謎彌覓綿緬廟滅憫閩鳴銘謬謀畝鈉納難撓腦惱鬧餒膩攆撚釀鳥聶齧鑷鎳檸獰甯擰濘鈕紐膿濃農瘧諾歐鷗毆嘔漚盤龐國愛賠噴鵬騙飄頻貧蘋憑評潑頗撲鋪樸譜臍齊騎豈啓氣棄訖牽扡釺鉛遷簽謙錢鉗潛淺譴塹槍嗆牆薔強搶鍬橋喬僑翹竅竊欽親輕氫傾頃請慶瓊窮趨區軀驅齲顴權勸卻鵲讓饒擾繞熱韌認紉榮絨軟銳閏潤灑薩鰓賽傘喪騷掃澀殺紗篩曬閃陝贍繕傷賞燒紹賒攝懾設紳審嬸腎滲聲繩勝聖師獅濕詩屍時蝕實識駛勢釋飾視試壽獸樞輸書贖屬術樹豎數帥雙誰稅順說碩爍絲飼聳慫頌訟誦擻蘇訴肅雖綏歲孫損筍縮瑣鎖獺撻擡攤貪癱灘壇譚談歎湯燙濤縧騰謄銻題體屜條貼鐵廳聽烴銅統頭圖塗團頹蛻脫鴕馱駝橢窪襪彎灣頑萬網韋違圍爲濰維葦偉僞緯謂衛溫聞紋穩問甕撾蝸渦窩嗚鎢烏誣無蕪吳塢霧務誤錫犧襲習銑戲細蝦轄峽俠狹廈鍁鮮纖鹹賢銜閑顯險現獻縣餡羨憲線廂鑲鄉詳響項蕭銷曉嘯蠍協挾攜脅諧寫瀉謝鋅釁興洶鏽繡虛噓須許緒續軒懸選癬絢學勳詢尋馴訓訊遜壓鴉鴨啞亞訝閹煙鹽嚴顔閻豔厭硯彥諺驗鴦楊揚瘍陽癢養樣瑤搖堯遙窯謠藥爺頁業葉醫銥頤遺儀彜蟻藝億憶義詣議誼譯異繹蔭陰銀飲櫻嬰鷹應纓瑩螢營熒蠅穎喲擁傭癰踴詠湧優憂郵鈾猶遊誘輿魚漁娛與嶼語籲禦獄譽預馭鴛淵轅園員圓緣遠願約躍鑰嶽粵悅閱雲鄖勻隕運蘊醞暈韻雜災載攢暫贊贓髒鑿棗竈責擇則澤賊贈紮劄軋鍘閘詐齋債氈盞斬輾嶄棧戰綻張漲帳賬脹趙蟄轍鍺這貞針偵診鎮陣掙睜猙幀鄭證織職執紙摯擲幟質鍾終種腫衆謅軸皺晝驟豬諸誅燭矚囑貯鑄築駐專磚轉賺樁莊裝妝壯狀錐贅墜綴諄濁茲資漬蹤綜總縱鄒詛組鑽緻鐘麼為隻兇準啟闆裡靂餘鍊洩';<BR>}<BR>function Traditionalized(cc){<BR>&nbsp;var str='',ss=JTPYStr(),tt=FTPYStr();<BR>&nbsp;for(var i=0;i&lt;cc.length;i++)<BR>&nbsp;{<BR>&nbsp;&nbsp;if(cc.charCodeAt(i)&gt;10000&&ss.indexOf(cc.charAt(i))!=-1)str+=tt.charAt(ss.indexOf(cc.charAt(i)));<BR>&nbsp; &nbsp;&nbsp;else str+=cc.charAt(i);<BR>&nbsp;}<BR>&nbsp;return str;<BR>}<BR>function Simplized(cc){<BR>&nbsp;var str='',ss=JTPYStr(),tt=FTPYStr();<BR>&nbsp;for(var i=0;i&lt;cc.length;i++)<BR>&nbsp;{<BR>&nbsp;&nbsp;if(cc.charCodeAt(i)&gt;10000&&tt.indexOf(cc.charAt(i))!=-1)str+=ss.charAt(tt.indexOf(cc.charAt(i)));<BR>&nbsp; &nbsp;&nbsp;else str+=cc.charAt(i);<BR>&nbsp;}<BR>&nbsp;return str;<BR>}</P>
<P>function setCookie(name, value)&nbsp;&nbsp;//cookies设置<BR>{<BR>&nbsp;var argv = setCookie.arguments;<BR>&nbsp;var argc = setCookie.arguments.length;<BR>&nbsp;var expires = (argc &gt; 2) ? argv[2] : null;<BR>&nbsp;if(expires!=null)<BR>&nbsp;{<BR>&nbsp;&nbsp;var LargeExpDate = new Date ();<BR>&nbsp;&nbsp;LargeExpDate.setTime(LargeExpDate.getTime() + (expires*1000*3600*24));<BR>&nbsp;}<BR>&nbsp;document.cookie = name + "=" + escape (value)+((expires == null) ? "" : ("; expires=" +LargeExpDate.toGMTString()));<BR>}</P>
<P>function getCookie(Name)&nbsp;&nbsp;&nbsp;//cookies读取<BR>{<BR>&nbsp;var search = Name + "="<BR>&nbsp;if(document.cookie.length &gt; 0) <BR>&nbsp;{<BR>&nbsp;&nbsp;offset = document.cookie.indexOf(search)<BR>&nbsp;&nbsp;if(offset != -1) <BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;offset += search.length<BR>&nbsp;&nbsp;&nbsp;end = document.cookie.indexOf(";", offset)<BR>&nbsp;&nbsp;&nbsp;if(end == -1) end = document.cookie.length<BR>&nbsp;&nbsp;&nbsp;return unescape(document.cookie.substring(offset, end))<BR>&nbsp;&nbsp; }<BR>&nbsp;else return ""<BR>&nbsp;&nbsp; }<BR>}<BR>var select_language_Obj = document.getElementById("select_language");<BR>if(select_language_Obj){<BR>&nbsp;var JF_cn="ft"+self.location.hostname.toString().replace(/\./g,"");<BR>&nbsp;var BodyIsFt=getCookie(JF_cn);<BR>&nbsp;if(BodyIsFt!="1")BodyIsFt=Default_isFT;<BR>&nbsp;with(select_language_Obj)<BR>&nbsp;{<BR>&nbsp;&nbsp;onchange = new Function("StranBody();return false");<BR>&nbsp;&nbsp;options[0].selected = true;<BR>&nbsp;}<BR>&nbsp;if(BodyIsFt=="1"){setTimeout("StranBody()",StranIt_Delay)}<BR>}</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=290" /> 
	  <id>http://www.openx.cn/default.asp?id=290</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[新建了栏目]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=8" label="TalkMe" /> 
	  <updated>2006-06-06T15:15:42+08:00</updated>
	  <published>2006-06-06T15:15:42+08:00</published>
		  <summary type="html"><![CDATA[<P>本来想直接修改WEB Talk栏目名称的，但考虑一下感觉部落格不来就是一个用来记录事情的空间，修改原来的东西不等于修改历史嘛～哈哈～</P>
<P>所以还是新建了个栏目</P>
<P>TlakMe 以后将不会在更新 WEB Talk栏目中的内容～呵呵～</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=289" /> 
	  <id>http://www.openx.cn/default.asp?id=289</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[发一个自己仿制 QQ mail 的对话框]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-06-05T15:56:49+08:00</updated>
	  <published>2006-06-05T15:56:49+08:00</published>
		  <summary type="html"><![CDATA[<P>function ShowMessage(title,content,Action){//显示一个提示框<BR>&nbsp;var Box_URL = '/js/MSG_Box.htm';<BR>&nbsp;Box_URL +='?title='+ title +'&content='+ content +'&ac='+ Action + '&Code='+ReRanCode();<BR>&nbsp;var Box_HTML = '&lt;IFRAME id=MSG_Box style="Z-INDEX: 1999; LEFT: 26%; MARGIN: 0px auto; WIDTH: 400px; POSITION: absolute; TOP: 25%; HEIGHT: 205px; TEXT-ALIGN: center" name=MSG_Box marginWidth=0 marginHeight=0 src="'+ Box_URL +'" frameBorder=0 scrolling=no&gt;&lt;/IFRAME&gt;';<BR>&nbsp;try{<BR>&nbsp;&nbsp;if(document.getElementById('MSG_Box')){<BR>&nbsp;&nbsp;&nbsp;document.getElementById('MSG_Box').src = Box_URL;//+'?title='+ title +'&content='+ content +'&Action='+ Action;<BR>&nbsp;&nbsp;&nbsp;document.getElementById('MSG_Box').style.visibility = "visible";<BR>&nbsp;&nbsp;&nbsp;Show_Page_M_Box();<BR>&nbsp;&nbsp;&nbsp;return true;<BR>&nbsp;&nbsp;}else{<BR>&nbsp;&nbsp;&nbsp;document.body.innerHTML += Box_HTML;<BR>&nbsp;&nbsp;&nbsp;ShowMessage(title,content,Action);<BR>&nbsp;&nbsp;}<BR>&nbsp;}catch(e){<BR>&nbsp;&nbsp;document.body.innerHTML += Box_HTML;<BR>&nbsp;&nbsp;ShowMessage(title,content,Action);<BR>&nbsp;}<BR>}<BR>function HitMessageBox(){//隐藏对话框<BR>&nbsp;try{<BR>&nbsp;&nbsp;if(document.getElementById('MSG_Box')){<BR>&nbsp;&nbsp;&nbsp;document.getElementById('MSG_Box').src = 'about:blank';<BR>&nbsp;&nbsp;&nbsp;document.getElementById('MSG_Box').style.visibility = "hidden";<BR>&nbsp;&nbsp;&nbsp;Hit_Page_M_Box();<BR>&nbsp;&nbsp;}<BR>&nbsp;}catch(e){<BR>&nbsp;}<BR>}<BR>function HitMessage(){//延迟隐藏对话框<BR>&nbsp;window.setTimeout('HitMessageBox()',1500);<BR>}<BR>function Show_Page_M_Box(){//显示一个隐形层,用于屏蔽用户操作<BR>&nbsp;var M_Box_HTML = '&lt;div id="Page_M_Box" style="position:absolute;top:0px;left:0px;width:100%;height:100%;Z-INDEX:1998"&gt;&lt;img src="/Image/space.gif" width="100%" height="100%" /&gt;&lt;/div&gt;';<BR>&nbsp;try{<BR>&nbsp;&nbsp;if(document.getElementById('Page_M_Box')){<BR>&nbsp;&nbsp;&nbsp;document.getElementById('Page_M_Box').style.width = document.body.clientWidth + document.body.scrollLeft;<BR>&nbsp;&nbsp;&nbsp;document.getElementById('Page_M_Box').style.height = document.body.clientHeight + document.body.scrollTop;<BR>&nbsp;&nbsp;&nbsp;document.getElementById('Page_M_Box').style.visibility = "visible";<BR>&nbsp;&nbsp;&nbsp;return true;<BR>&nbsp;&nbsp;}else{<BR>&nbsp;&nbsp;&nbsp;document.body.innerHTML += M_Box_HTML;<BR>&nbsp;&nbsp;&nbsp;Show_Page_M_Box();<BR>&nbsp;&nbsp;}<BR>&nbsp;}catch(e){<BR>&nbsp;&nbsp;document.body.innerHTML += M_Box_HTML;<BR>&nbsp;&nbsp;Show_Page_M_Box();<BR>&nbsp;}<BR>}<BR>function Hit_Page_M_Box(){//隐藏隐形层,允许用户操作<BR>&nbsp;try{<BR>&nbsp;&nbsp;if(document.getElementById('Page_M_Box')){<BR>&nbsp;&nbsp;&nbsp;document.getElementById('Page_M_Box').style.visibility = "hidden";<BR>&nbsp;&nbsp;&nbsp;return true;<BR>&nbsp;&nbsp;}<BR>&nbsp;}catch(e){</P>
<P>&nbsp;}<BR>}</P>
<P>&nbsp;</P>
<P>//MSG_Box.htm部分</P>
<P>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</A>"&gt;<BR>&lt;html xmlns="<A href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</A>"&gt;<BR>&lt;head&gt;<BR>&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;<BR>&lt;META HTTP-EQUIV="Pragma" CONTENT="no-cache"&gt;<BR>&lt;META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"&gt;<BR>&lt;META HTTP-EQUIV="Expires" CONTENT="0"&gt;<BR>&lt;link href="http://www.openx.cn/../css/msgBox.css" rel="stylesheet" type="text/css" /&gt;<BR>&lt;title&gt;MSGBox&lt;/title&gt;<BR>&lt;style type="text/css"&gt;<BR>&lt;!--<BR>body {<BR>&nbsp;margin-left: 0px;<BR>&nbsp;margin-top: 0px;<BR>&nbsp;margin-right: 0px;<BR>&nbsp;margin-bottom: 0px;<BR>}<BR>--&gt;<BR>&lt;/style&gt;<BR>&lt;/head&gt;</P>
<P>&lt;body oncontextmenu='return false' onselectstart='return false'&gt;<BR>&lt;div id="MsgBox" style="margin:0 auto;text-align:center;position:absolute;"&gt;<BR>&lt;div class="bar"&gt;<BR>&lt;div class="info" id="MBInfo"&gt;&lt;/div&gt;<BR>&lt;/div&gt;<BR>&lt;div class="content"&gt;<BR>&lt;div class="txt"&gt;<BR>&lt;span style="background:url(/image/icon_big_info.gif) no-repeat left;"&gt;<BR>&lt;img src="/image/icon_big_alarm.gif" width="64" height="52" align="absmiddle" id="MBIcon" style="display:none"&gt;<BR>&lt;/span&gt;<BR>&lt;span id="MBTxt"&gt;<BR>&lt;/span&gt;<BR>&lt;div class="btnlist" id="MBButton"&gt;<BR>&lt;input type="button" value="确&nbsp;定" class="input_set"&nbsp; id="MBButton1" onclick="top.HitMessage();" /&gt;<BR>&lt;/div&gt;<BR>&lt;/div&gt;<BR>&lt;/div&gt;<BR>&lt;/div&gt;<BR>&lt;script language="javascript" type="text/javascript"&gt;<BR>var Title = GetQueryString('title');<BR>var Content = GetQueryString('content');<BR>var Action = GetQueryString('ac');<BR>switch(Action){<BR>&nbsp;case '1':<BR>&nbsp;&nbsp;document.getElementById('MBTxt').innerHTML = '&lt;img src="/image/load.gif" align="absmiddle"&gt; ';<BR>&nbsp;&nbsp;document.getElementById('MBButton').innerHTML = '';<BR>&nbsp;break;<BR>&nbsp;case '2':<BR>&nbsp;&nbsp;document.getElementById('MBTxt').innerHTML = '&lt;img src="/image/icon_big_alarm.gif" align="absmiddle"&gt; ';<BR>&nbsp;break;<BR>&nbsp;case '3':<BR>&nbsp;&nbsp;document.getElementById('MBTxt').innerHTML = '&lt;img src="/image/icon_big_stop.gif" align="absmiddle"&gt; ';<BR>&nbsp;break;<BR>&nbsp;case '4':<BR>&nbsp;&nbsp;document.getElementById('MBTxt').innerHTML = '&lt;img src="/image/icon_big_info.gif" align="absmiddle"&gt; ';<BR>&nbsp;break;<BR>&nbsp;case '5':<BR>&nbsp;&nbsp;document.getElementById('MBTxt').innerHTML = '&lt;img src="/image/load.gif" align="absmiddle"&gt; ';<BR>&nbsp;&nbsp;document.getElementById('MBButton').innerHTML = '';<BR>&nbsp;break;<BR>&nbsp;case '6':<BR>&nbsp;&nbsp;document.getElementById('MBTxt').innerHTML = '&lt;img src="/image/icon_big_stop.gif" align="absmiddle"&gt; ';<BR>&nbsp;&nbsp;document.getElementById('MBButton').innerHTML = '&lt;input type="button" value="确&nbsp;定" class="input_set"&nbsp; id="MBButton1" onclick="top.alert();" /&gt;';<BR>document.getElementById('MBButton').innerHTML = '&lt;input type="button" value="取&nbsp;消" class="input_set"&nbsp; id="MBButton2" onclick="top.HitMessage();" /&gt;';<BR>&nbsp;break;<BR>}<BR>document.getElementById('MBInfo').innerHTML = Title;<BR>document.getElementById('MBTxt').innerHTML += Content;<BR>&lt;/script&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;</P>
<P>图片跟CSS下载 <A href="http://www.openx.cn/attachments/month0606/c02f_msgBox.rar">http://www.openx.cn/attachments/month0606/c02f_msgBox.rar</A></P>
<P>显示方法:ShowMessage(标题,内容,动作);</P>
<P>隐藏方法:HitMessage();</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=288" /> 
	  <id>http://www.openx.cn/default.asp?id=288</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[发一个整合的 XMLHTTP 可以很好的支持 IE FF OP浏览器]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-06-05T15:34:52+08:00</updated>
	  <published>2006-06-05T15:34:52+08:00</published>
		  <summary type="html"><![CDATA[<P>function Cxty_XMLHTTP(){<BR>&nbsp;if (window.XMLHttpRequest)<BR>&nbsp;{<BR>&nbsp;&nbsp;var objXMLHttp = new XMLHttpRequest();<BR>&nbsp;}<BR>&nbsp;else<BR>&nbsp;{<BR>&nbsp;&nbsp;var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];<BR>&nbsp;&nbsp;for(var n = 0; n &lt; MSXML.length; n ++)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;try<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;var objXMLHttp = new ActiveXObject(MSXML[n]);<BR>&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;catch(e)<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}<BR>&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;// mozilla某些版本没有readyState属性<BR>&nbsp;if (objXMLHttp.readyState == null)<BR>&nbsp;{<BR>&nbsp;&nbsp;objXMLHttp.readyState = 0;<BR>&nbsp;&nbsp;objXMLHttp.addEventListener("load", function ()<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;objXMLHttp.readyState = 4;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (typeof objXMLHttp.onreadystatechange == "function")<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objXMLHttp.onreadystatechange();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;},&nbsp; false);<BR>&nbsp;}<BR>&nbsp;return objXMLHttp;<BR>}</P>
<P>function Ajax_Send(URL,vStr,method,callback){<BR>&nbsp;var Send_T = null;<BR>&nbsp;var req = new Cxty_XMLHTTP();<BR>&nbsp;if(req){<BR>&nbsp;&nbsp;try {<BR>&nbsp;&nbsp;&nbsp;if(method == 'GET'){<BR>&nbsp;&nbsp;&nbsp;&nbsp;req.open('GET', URL, true);<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;if(method == 'POST'){<BR>&nbsp;&nbsp;&nbsp;&nbsp;req.open('POST', URL, true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;req.setRequestHeader('Content-Type','text/xml; charset=utf-8');<BR>&nbsp;&nbsp;&nbsp;&nbsp;Send_T = vStr;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}catch(e){<BR>&nbsp;&nbsp;&nbsp;return false;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;req.onreadystatechange = function() {<BR>&nbsp;&nbsp;&nbsp;if (req.readyState == 4) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (req.status == 200 && req.responseXML) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (callback){callback(req.responseText);}<BR>&nbsp;&nbsp;&nbsp;&nbsp;} else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;callback('');<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;};<BR>&nbsp;&nbsp;if (typeof(req.onerror) != 'undefined') {<BR>&nbsp;&nbsp;&nbsp;req.onerror = function(e){<BR>&nbsp;&nbsp;&nbsp;&nbsp;callback('');<BR>&nbsp;&nbsp;&nbsp;&nbsp;return false;<BR>&nbsp;&nbsp;&nbsp;};<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;req.send(Send_T);<BR>&nbsp;}else{<BR>&nbsp;&nbsp;alert('您的浏览器不支持 Ajax 请使用 IE 6 以上版本或其他支持 Ajax 的浏览器.');<BR>&nbsp;}<BR>}</P>
<P>调用方法:Ajax_Send(URL,发送的字符串,使用GET或POST方式发送数据,回调函数)</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=287" /> 
	  <id>http://www.openx.cn/default.asp?id=287</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[使用 Gtalk 与 AIM, MSN, Yahoo! 等通信的一种变通做法]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-06-05T14:40:53+08:00</updated>
	  <published>2006-06-05T14:40:53+08:00</published>
		  <summary type="html"><![CDATA[首先，下载<A href="http://psi-im.org/" target=_blank>PSI</A>，这是一个非常不错的Jabber客户端，而且并不需要复杂的设置就可以使用，如果在深入应用中实在有所不明白的，可以翻看一下<A href="http://psi-im.org/wiki/Main_Page" target=_blank>PSI wiki</A>。根据这些，结合界面提示可以很快的设定好使用Google Talk的准备工作。<BR><BR>然后，打开Service Discovery，浏览ursine.ca服务器，那里有所有可使用的通讯协议，如ICQ、MSN、Yahoo!等等，右点其中一个你需要的条目，输入你相应即时通讯软件的帐户名和密码，PSI就可以登录到这个账户内搜索同步你的好友列表和其他资料。比如，我要整合我AIM上的好友，我就右击aim.ursine.ca协议，输入我的账号x1ee和密码，PSI就会导入我这个帐号的联系人表和相关资料。<BR><BR>现在可以关闭PSI，打开Gtalk了，刚才导入的名单将都会如数出现，就可以直接在Gtalk上和AIM、MSN、Yahoo! IM等即时通讯用户连线聊天，还可以直接添加非Gtalk用户，添加格式为[screenname]@[transport.dns.name]，比如我的AIM账号是x1ee，要添加我的AIM账号为联系人的就输入x1ee@aim.ursine.ca 。<BR><BR>关于ursine.ca是什么，只是可使用的其中一个Server而已，并非一定要和我一样的选择。用户可以挑选任意你想使用的Jabber Server来获取相关服务，<A href="http://www.jabber.org/network/" target=_blank>这里</A>有一张完整的列表供用户选择。ursine.ca只是我目前使用的。<BR>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=286" /> 
	  <id>http://www.openx.cn/default.asp?id=286</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[微软为Ajax 发明C#衍生新脚本语言Script#]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-06-05T14:10:36+08:00</updated>
	  <published>2006-06-05T14:10:36+08:00</published>
		  <summary type="html"><![CDATA[<P>Ajax 可谓是目前最火爆的Web开发热点之一。微软也专门针对Ajax 推出了自己的框架 Atlas。然而，许多使用C#进行Web开发的程序员却略感郁闷，“Javascript”也许不是他们最喜欢的。也正因此微软架构师 Nikhil Kothari 正在引领团队开发一个名叫“ Script#”的语言，它是微软“#”语言家族的另一个衍生。</P>
<P>据Nikhil Kothari 介绍， Script#语言的编辑器，其实是使 C#言语的编译器生成Javascript,而不是通常的IL（Intermediate&nbsp; Language）。这样做的目的是为了是开发者编写更具有可读性的脚本语言，更好的基于Atlas进行开发。不过目前Script#还没有被整合进Atlas，但这是他们正在努力的方向，并最终整合，为C#开发者打造一个Script#/Atlas开发环境。</P>
<P>想想， Google Web Toolkit (GWT) ,也许许多java开发人员对它会比较有兴趣，这个工具包可以让java程序员不需要写任何HTML和JS就可以轻松地构建一个AJAX应用程序。这个工具包可以把你的java转换成浏览器上的js和html。</P>
<P>所以Script#/Atlas组合将是对google 一个对决。F#&nbsp; VS Javascript ,AtlasVS GWT，C#对决Java，真是一个有趣的话题。不过得益的还是最终开发者，有更多的选择摆在了我们面前。</P>
<P>Nikhil Kothari 的blog: <A href="http://www.nikhilk.net/ScriptSharpIntro.aspx">http://www.nikhilk.net/ScriptSharpIntro.aspx</A></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=285" /> 
	  <id>http://www.openx.cn/default.asp?id=285</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[自己做网络地图：Google推出AJAX开发工具]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-06-01T14:32:42+08:00</updated>
	  <published>2006-06-01T14:32:42+08:00</published>
		  <summary type="html"><![CDATA[<P>Google在周四推出了一个开放版本的AJAX Framework，通过它用户可以构建像Google Maps和Calendar之类的Web应用程序。</P>
<P>这个Google Web Toolkit beta是免费的，它是一个基于java的工具，并能够和任何java开发工具协同工作。 </P>
<P>GWT已经加入到Google的代码库当中，这个代码库包含了很多API和开发工具。Google产品经理Bret Taylor表示，当用户把应用程序部署到产品当中时，GWT编译器只要简单的把用户的java应用程序转换成浏览器支持的JavaScript和HTML就行。 </P>
<P>GWT的系统要求是： </P>
<P>?Java：Sun Java 2运行环境 1.4.2或以上。 </P>
<P>?操作系统：Windows XP，Windows 2000，或Linux W/GTK+2.2.1或以上 </P>
<P>?硬件要求：100MB以上的可用硬盘空间，512MB内存 </P>
<P>而GWT可以从<A href="http://code.google.com/webtoolkit/">http://code.google.com/webtoolkit/</A>中下载。</P>
<P>同时Google还推出了Linux版的GWT，也可以从这个页面下载。</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=284" /> 
	  <id>http://www.openx.cn/default.asp?id=284</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[六一快乐~]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-06-01T11:34:43+08:00</updated>
	  <published>2006-06-01T11:34:43+08:00</published>
		  <summary type="html"><![CDATA[<P>今天是六一耶~可惜福州天气这几天不怎么地~</P>
<P>小朋友们可要郁闷咯~哈</P>
<P>&nbsp;</P>
<P><STRONG><FONT color=#ff0000 size=5>祝:所有小朋友,大朋友,老朋友~六一快乐~ :)</FONT></STRONG></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=283" /> 
	  <id>http://www.openx.cn/default.asp?id=283</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[WEB Talk 将更名为 Talk Me]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=6" label="WEB Talk" /> 
	  <updated>2006-05-31T09:01:36+08:00</updated>
	  <published>2006-05-31T09:01:36+08:00</published>
		  <summary type="html"><![CDATA[<P>昨天下午注册了 TalkMe.cn 域名.</P>
<P>这就意味着 WEbTalk 将更名为 TalkMe</P>
<P>进入新的研发阶段.</P>
<P>在开发过程中感觉,想做一个完整的项目还真不容易,一个人挡墙匹马的.</P>
<P>有时候想找人讨论一下想法都没有.</P>
<P>希望有兴趣的朋友可以与我联系呀,一起开发 TalkMe.</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=282" /> 
	  <id>http://www.openx.cn/default.asp?id=282</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[WEB Talk将有重大修改.]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=6" label="WEB Talk" /> 
	  <updated>2006-05-30T10:03:32+08:00</updated>
	  <published>2006-05-30T10:03:32+08:00</published>
		  <summary type="html"><![CDATA[<P>WEB Talk 准备跟 MSN Message 和 GTalk进行结合.</P>
<P>使其成为一个基于其他IM平台上的个性IM应用.</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=281" /> 
	  <id>http://www.openx.cn/default.asp?id=281</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[修改了日志分类]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=5" label="点点滴滴" /> 
	  <updated>2006-05-30T09:59:15+08:00</updated>
	  <published>2006-05-30T09:59:15+08:00</published>
		  <summary type="html"><![CDATA[<P>修改了原来的 开发 为 网络开发 跟 移动开发.</P>
<P>准备在移动设备上做点研究跟开发工作,主要会基于PPC上做些应用.</P>
<P>&nbsp;</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=280" /> 
	  <id>http://www.openx.cn/default.asp?id=280</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[程序改变音量]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=7" label="移动开发" /> 
	  <updated>2006-05-30T09:51:04+08:00</updated>
	  <published>2006-05-30T09:51:04+08:00</published>
		  <summary type="html"><![CDATA[<P>这里使用PB中的方法，程序地改变音量。</P>
<P>void SetVolume(DWORD dwVolume)<BR>{</P>
<P>//设置注册表中的音量值<BR>&nbsp;HKEY&nbsp;&nbsp;&nbsp; hkResult = NULL;<BR>&nbsp;DWORD&nbsp;dwSize=0;<BR>&nbsp;DWORD&nbsp;&nbsp; dwDisposition;<BR>&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp; iResult=1;<BR>&nbsp;<BR>&nbsp;if ((iResult=RegCreateKeyEx(HKEY_CURRENT_USER, _T("ControlPanel\\Volume"), (DWORD) 0, TEXT(""), <BR>&nbsp;&nbsp;REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, (LPSECURITY_ATTRIBUTES) NULL, <BR>&nbsp;&nbsp;&hkResult, &dwDisposition)) == ERROR_SUCCESS) <BR>&nbsp;{<BR>&nbsp;&nbsp;dwSize = sizeof(DWORD);<BR>&nbsp;&nbsp;RegSetValueEx(hkResult, _T("Volume"), 0, REG_DWORD, (LPBYTE)&dwVolume, sizeof(DWORD));<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;waveOutSetVolume(0, dwVolume);</P>
<P>&nbsp;&nbsp;<FONT color=#ff0000>UpdateVolumeFromRegistry();</FONT><BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;RegCloseKey(hkResult);<BR>&nbsp;}</P>
<P>void UpdateVolumeFromRegistry()<BR>{<BR>&nbsp;HINSTANCE hLibrary = ::LoadLibrary(_T("coredll.dll"));<BR>&nbsp;<BR>&nbsp;if (NULL == hLibrary)<BR>&nbsp;&nbsp;return;&nbsp;<BR>&nbsp;FARPROC pProc = ::GetProcAddress(hLibrary, _T("<FONT color=#ff0000>AudioUpdateFromRegistry</FONT>"));<BR>&nbsp;<BR>&nbsp;if (NULL == pProc)<BR>&nbsp;{<BR>&nbsp;&nbsp;::FreeLibrary(hLibrary);<BR>&nbsp;&nbsp;return;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;Proc_AudioUpdateFromRegistry *pProcAudioUpdateFromRegistry = (Proc_AudioUpdateFromRegistry*)pProc;<BR>&nbsp;<BR>&nbsp;pProcAudioUpdateFromRegistry();</P>
<P>&nbsp;::FreeLibrary(hLibrary);<BR>}</P>
<P>AudioUpdateFromRegistry函数是Coredll.dll中的一个函数，在SDK中未给出函数原型，所以在这里我们从库中Load。</P>
<P>这样就能得到音量设置与系统音量设置同样的效果。</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=279" /> 
	  <id>http://www.openx.cn/default.asp?id=279</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[调节亮度]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=7" label="移动开发" /> 
	  <updated>2006-05-30T09:50:27+08:00</updated>
	  <published>2006-05-30T09:50:27+08:00</published>
		  <summary type="html"><![CDATA[<SPAN id=post1><FONT face=宋体>&nbsp;</FONT>
<P>#define REG_BACKLIGHT L"ControlPanel\\Backlight"<BR>#define REG_VAL_BATT_TO L"BatteryTimeout"<BR>#define REG_VAL_AC_TO L"ACTimeout"<BR>#define REG_VAL_BN_TO L"BrightNess"<BR>#define REG_VAL_ACBN_TO L"ACBrightness"</P>
<P>unsigned int OldBattBL=0;<BR>unsigned int OldACBL=0;</P>
<P>void RegOptionBLTimeout( BOOL Disable,DWORD dw1,DWORD dw2)<BR>{<BR>&nbsp;HKEY hKey = 0;<BR>&nbsp;DWORD dwSize;<BR>&nbsp;DWORD dwValue;<BR>&nbsp;HANDLE hBL;</P>
<P>&nbsp;if ( ERROR_SUCCESS == RegOpenKeyEx( HKEY_CURRENT_USER,REG_BACKLIGHT, 0, 0, &hKey ) ) <BR>&nbsp;{</P>
<P>&nbsp;&nbsp;if( Disable ) <BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;dwSize = 4;<BR>&nbsp;&nbsp;&nbsp;RegQueryValueEx( hKey, REG_VAL_BATT_TO,NULL,NULL,(unsigned char*) &OldBattBL,&dwSize );dwSize = 4;RegQueryValueEx( hKey, REG_VAL_AC_TO,NULL,NULL,(unsigned char*) &OldACBL,&dwSize );</P>
<P>&nbsp;&nbsp;//&nbsp;dwSize = 4;<BR>&nbsp;&nbsp;//&nbsp;dwValue = 0xefff ;<BR>&nbsp;&nbsp;//&nbsp;RegSetValueEx( hKey,REG_VAL_BATT_TO,NULL,REG_DWORD,(unsigned char *)&dwValue,dwSize );<BR>&nbsp;&nbsp;//&nbsp;dwSize = 4;<BR>&nbsp;&nbsp;//&nbsp;dwValue = 0xefff ;<BR>&nbsp;&nbsp;//&nbsp;RegSetValueEx( hKey,REG_VAL_AC_TO,NULL,REG_DWORD,(unsigned char *)&dwValue,dwSize );</P>
<P>&nbsp;&nbsp;&nbsp;dwSize = 4;<BR>&nbsp;&nbsp;&nbsp;RegSetValueEx( hKey,REG_VAL_BN_TO,NULL,REG_DWORD,(unsigned char *)&dw1,dwSize );<BR>&nbsp;&nbsp;&nbsp;dwSize = 4;<BR>&nbsp;&nbsp;&nbsp;RegSetValueEx( hKey,REG_VAL_ACBN_TO,NULL,REG_DWORD,(unsigned char *)&dw2,dwSize );<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;else<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;if (OldBattBL)<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;dwSize = 4;<BR>&nbsp;&nbsp;&nbsp;&nbsp;RegSetValueEx( hKey,REG_VAL_BN_TO,NULL,REG_DWORD,(unsigned char *)&OldBattBL,dwSize );<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;if (OldACBL)<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;dwSize = 4;<BR>&nbsp;&nbsp;&nbsp;&nbsp;RegSetValueEx( hKey,REG_VAL_ACBN_TO,NULL,REG_DWORD,(unsigned char *)&OldACBL,dwSize );<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;RegCloseKey( hKey );<BR>&nbsp;&nbsp;hBL = CreateEvent( NULL, FALSE, FALSE,L"BackLightChangeEvent" );<BR>&nbsp;&nbsp;if( hBL ) <BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;SetEvent(hBL);<BR>&nbsp;&nbsp;&nbsp;CloseHandle( hBL );<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>}</P>
<P>//设置</P>
<P>RegOptionBLTimeout(TRUE,m_edit1,m_edit2);</P></SPAN>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=278" /> 
	  <id>http://www.openx.cn/default.asp?id=278</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[获得本机电话号码]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=7" label="移动开发" /> 
	  <updated>2006-05-30T09:49:33+08:00</updated>
	  <published>2006-05-30T09:49:33+08:00</published>
		  <summary type="html"><![CDATA[在SIM卡上有一个IMSI (International Mobile Subscriber Identity )Record，但这个不是电话号码。估计在server端，有电话号码与IMSI相对应，具体Record情况可以参考SIM GSM File System规范。<BR>注意：本文内容来自Windows Mobile Team Blog。代码部分经过测试（在上海移动网络，易通卡），未能获取到电话号码，可能是服务商不提供该服务。感兴趣的朋友可以参考一下。<BR>#include "stdafx.h"<BR>#include "windows.h"<BR>#include "tapi.h"<BR>#include "tsp.h"<BR>#pragma comment(lib,"cellcore.lib")
<P>#define EXIT_ON_NULL(_p)&nbsp;&nbsp;&nbsp;&nbsp; \<BR>&nbsp;&nbsp;&nbsp; if (_p == NULL)&nbsp;&nbsp;&nbsp; \<BR>{&nbsp;&nbsp; \<BR>&nbsp;&nbsp;&nbsp; hr = E_OUTOFMEMORY; \<BR>&nbsp;&nbsp;&nbsp; goto FuncExit; \<BR>} </P>
<P>#define EXIT_ON_FALSE(_f)&nbsp;&nbsp;&nbsp;&nbsp; \<BR>&nbsp;&nbsp;&nbsp; if (!(_f))&nbsp;&nbsp;&nbsp; \<BR>{&nbsp;&nbsp; \<BR>&nbsp;&nbsp;&nbsp; hr = E_FAIL; \<BR>&nbsp;&nbsp;&nbsp; goto FuncExit; \<BR>} </P>
<P>#define MAX(i, j)&nbsp;&nbsp; ((i) &gt; (j) ? (i) : (j))</P>
<P>#define TAPI_API_LOW_VERSION&nbsp;&nbsp; 0x00020000<BR>#define TAPI_API_HIGH_VERSION&nbsp; 0x00020000</P>
<P>#define CAPS_BUFFER_SIZE&nbsp;&nbsp;&nbsp; 512</P>
<P>&nbsp;</P>
<P>HRESULT SHReadLineAddressCaps(LPTSTR szNumber, UINT cchNumber, PDWORD pdwCallFwdModes, UINT nLineNumber)<BR>{<BR>&nbsp;&nbsp;&nbsp; HRESULT&nbsp; hr = E_FAIL;<BR>&nbsp;&nbsp;&nbsp; LRESULT&nbsp; lResult = 0;<BR>&nbsp;&nbsp;&nbsp; HLINEAPP hLineApp;<BR>&nbsp;&nbsp;&nbsp; DWORD&nbsp;&nbsp;&nbsp; dwNumDevs;<BR>&nbsp;&nbsp;&nbsp; DWORD&nbsp;&nbsp;&nbsp; dwAPIVersion = TAPI_API_HIGH_VERSION;<BR>&nbsp;&nbsp;&nbsp; LINEINITIALIZEEXPARAMS liep;</P>
<P>&nbsp;&nbsp;&nbsp; DWORD dwTAPILineDeviceID;<BR>&nbsp;&nbsp;&nbsp; const DWORD dwAddressID = nLineNumber - 1;</P>
<P>&nbsp;&nbsp;&nbsp; liep.dwTotalSize = sizeof(liep);<BR>&nbsp;&nbsp;&nbsp; liep.dwOptions&nbsp;&nbsp; = LINEINITIALIZEEXOPTION_USEEVENT;</P>
<P>&nbsp;&nbsp;&nbsp; if (SUCCEEDED(lineInitializeEx(&hLineApp, 0, 0, TEXT("ExTapi_Lib"), &dwNumDevs, &dwAPIVersion, &liep)))<BR>&nbsp;&nbsp;&nbsp; {</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BYTE* pCapBuf = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD dwCapBufSize = CAPS_BUFFER_SIZE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LINEEXTENSIONID&nbsp; LineExtensionID;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LINEDEVCAPS*&nbsp;&nbsp;&nbsp;&nbsp; pLineDevCaps = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LINEADDRESSCAPS* placAddressCaps = NULL;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pCapBuf = new BYTE[dwCapBufSize];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXIT_ON_NULL(pCapBuf);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pLineDevCaps = (LINEDEVCAPS*)pCapBuf;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pLineDevCaps-&gt;dwTotalSize = dwCapBufSize;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get TSP Line Device ID<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dwTAPILineDeviceID = 0xffffffff;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (DWORD dwCurrentDevID = 0 ; dwCurrentDevID &lt; dwNumDevs ; dwCurrentDevID++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (0 == lineNegotiateAPIVersion(hLineApp, dwCurrentDevID, TAPI_API_LOW_VERSION, TAPI_API_HIGH_VERSION,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &dwAPIVersion, &LineExtensionID))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lResult = lineGetDevCaps(hLineApp, dwCurrentDevID, dwAPIVersion, 0, pLineDevCaps);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dwCapBufSize &lt; pLineDevCaps-&gt;dwNeededSize)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete[] pCapBuf;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dwCapBufSize = pLineDevCaps-&gt;dwNeededSize;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pCapBuf = new BYTE[dwCapBufSize];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXIT_ON_NULL(pCapBuf);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pLineDevCaps = (LINEDEVCAPS*)pCapBuf;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pLineDevCaps-&gt;dwTotalSize = dwCapBufSize;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lResult = lineGetDevCaps(hLineApp, dwCurrentDevID, dwAPIVersion, 0, pLineDevCaps);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((0 == lResult) &&<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (0 == _tcscmp((TCHAR*)((BYTE*)pLineDevCaps+pLineDevCaps-&gt;dwLineNameOffset), CELLTSP_LINENAME_STRING)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dwTAPILineDeviceID = dwCurrentDevID;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; placAddressCaps = (LINEADDRESSCAPS*)pCapBuf;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; placAddressCaps-&gt;dwTotalSize = dwCapBufSize;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lResult = lineGetAddressCaps(hLineApp, dwTAPILineDeviceID, dwAddressID, dwAPIVersion, 0, placAddressCaps);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dwCapBufSize &lt; placAddressCaps-&gt;dwNeededSize)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete[] pCapBuf;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dwCapBufSize = placAddressCaps-&gt;dwNeededSize;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pCapBuf = new BYTE[dwCapBufSize];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXIT_ON_NULL(pCapBuf);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; placAddressCaps = (LINEADDRESSCAPS*)pCapBuf;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; placAddressCaps-&gt;dwTotalSize = dwCapBufSize;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lResult = lineGetAddressCaps(hLineApp, dwTAPILineDeviceID, dwAddressID, dwAPIVersion, 0, placAddressCaps);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (0 == lResult)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (szNumber)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; szNumber[0] = _T('\0');</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXIT_ON_FALSE(0 != placAddressCaps-&gt;dwAddressSize);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // A non-zero dwAddressSize means a phone number was found<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ASSERT(0 != placAddressCaps-&gt;dwAddressOffset);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PWCHAR tsAddress = (WCHAR*)(((BYTE*)placAddressCaps)+placAddressCaps-&gt;dwAddressOffset);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringCchCopy(szNumber, cchNumber, tsAddress);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Record the allowed forwarding modes<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (pdwCallFwdModes)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pdwCallFwdModes = placAddressCaps-&gt;dwForwardModes;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hr = S_OK;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete[] pCapBuf;<BR>&nbsp;&nbsp;&nbsp; } // End if ()</P>
<P>FuncExit:<BR>&nbsp;&nbsp;&nbsp; lineShutdown(hLineApp);</P>
<P>&nbsp;&nbsp;&nbsp; return hr;<BR>}</P>
<P>&nbsp;</P>
<P>// szNumber - Out Buffer for the phone number</P>
<P>//cchNumber - size of sznumber in characters</P>
<P>// nLineNumber - which phone line (1 or 2) to get the number for<BR>HRESULT SHGetPhoneNumber(LPTSTR szNumber, UINT cchNumber, UINT nLineNumber)<BR>{<BR>&nbsp;&nbsp;&nbsp; return SHReadLineAddressCaps(szNumber, cchNumber, NULL, nLineNumber);<BR>}</P>
<P><BR>int WINAPI WinMain(&nbsp;HINSTANCE hInstance,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HINSTANCE hPrevInstance,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LPTSTR&nbsp;&nbsp;&nbsp; lpCmdLine,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nCmdShow)<BR>{<BR>&nbsp;TCHAR tcNum[MAX_PATH]={0};<BR>&nbsp;SHGetPhoneNumber(tcNum,MAX_PATH,1);</P>
<P>&nbsp;MessageBox(NULL,tcNum,_T("Number"),MB_OK);<BR>&nbsp;<BR>&nbsp;return 0;<BR>}<BR></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=277" /> 
	  <id>http://www.openx.cn/default.asp?id=277</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[一些脚本,正好有用上]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-05-28T21:51:43+08:00</updated>
	  <published>2006-05-28T21:51:43+08:00</published>
		  <summary type="html"><![CDATA[<P>//禁止一些键<BR>&nbsp;function DisableKeyDown(){ <BR>&nbsp;&nbsp;if ((window.event.altKey)&&((window.event.keyCode==37)|| (window.event.keyCode==39))){ <BR>&nbsp;&nbsp;&nbsp;event.returnValue=false; <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;if (event.keyCode==116){ //F5&nbsp; <BR>&nbsp;&nbsp;&nbsp;event.keyCode=0; <BR>&nbsp;&nbsp;&nbsp;event.returnValue=false; <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;if (event.keyCode==122){ //F11<BR>&nbsp;&nbsp;&nbsp;event.keyCode=0; <BR>&nbsp;&nbsp;&nbsp;event.returnValue=false; <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;if ((event.ctrlKey)&&(event.keyCode==7)){ //Ctrl+n <BR>&nbsp;&nbsp;&nbsp;event.returnValue=false; <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;if ((event.shiftKey)&&(event.keyCode==121)){ //shift+F10 <BR>&nbsp;&nbsp;&nbsp;event.returnValue=false; <BR>&nbsp;&nbsp;} <BR>&nbsp;}</P>
<P>&nbsp;</P>
<P>//是否中文<BR>&nbsp;function IsCnChar(str)<BR>&nbsp;{<BR>&nbsp;&nbsp;var reg = /^[\u4E00-\u9FA5]+$/;<BR>&nbsp;&nbsp;if (!reg.test(str))<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;return false;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;return true;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;//是否英文<BR>&nbsp;function IsEnChar(str)<BR>&nbsp;{<BR>&nbsp;&nbsp;var reg = /^[a-zA-Z]+$/;<BR>&nbsp;&nbsp;if (!reg.test(str))<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;return false;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;return true;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;//是否双字节（包括中文）<BR>&nbsp;function IsDoubleChar(str)<BR>&nbsp;{<BR>&nbsp;&nbsp;var reg = /^[^\x00-\xff]+$/;<BR>&nbsp;&nbsp;if (!reg.test(str))<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;return false;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;return true;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;//是否包含中文<BR>&nbsp;function IsHasCnChar(str)<BR>&nbsp;{<BR>&nbsp;&nbsp;var reg = /[^\x00-\xff]/;<BR>&nbsp;&nbsp;if (reg.test(str))<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;return true;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;return false;<BR>&nbsp;}</P>
<P>&nbsp;</P>
<P>//判断是否有效手机号码<BR>&nbsp;function IsMobile(str)<BR>&nbsp;{<BR>&nbsp;&nbsp;var reg = /^13[0-9]{9}$/;<BR>&nbsp;&nbsp;if (!reg.test(str))<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;return false;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;return true;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;}</P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=276" /> 
	  <id>http://www.openx.cn/default.asp?id=276</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[JavaScript：世界上误解最深的语言]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-05-26T08:58:07+08:00</updated>
	  <published>2006-05-26T08:58:07+08:00</published>
		  <summary type="html"><![CDATA[<P>JavaScript, aka Mocha, aka LiveScript, aka JScript, aka ECMAScript, is one of the world's most popular programming languages. Virtually every personal computer in the world has at least one JavaScript interpreter installed on it and in active use. JavaScript's popularity is due entirely to its role as the scripting language of the WWW.</P>
<P>JavaScript，或者叫 Mocha，或者叫 LiveScript，或者叫 JScript，又或者叫 ECMAScript，是世界上最流行的编程语言之一。事实上世界上的每一台个人电脑都安装并在频繁使用至少一个JavaScript解释器。JavaScript的流行完全是由于他在WWW脚本语言领域中的地位决定的。 </P>
<P>Despite its popularity, few know that JavaScript is a very nice dynamic object-oriented general-purpose programming language. How can this be a secret? Why is this language so misunderstood?</P>
<P>尽管它很流行，但是很少有人知道JavaScript是一个非常棒的动态面向对象通用编程语言。这居然能成为一个秘密！这门语言为什么被误解如此之深？</P>
<P>The Name名字</P>
<P>The Java- prefix suggests that JavaScript is somehow related to Java, that it is a subset or less capable version of Java. It seems that the name was intentionally selected to create confusion, and from confusion comes misunderstanding. JavaScript is not interpreted Java. Java is interpreted Java. JavaScript is a different language.</P>
<P>Java- 前缀很容易使人联想到Java，并认为它是Java的子集或简化版的Java。看起来最初给它选这个名字是别有用心的，是故意混淆概念、故意制造"误解"的。JavaScript不是解释执行的Java。Java是解释执行的Java。JavaScript是另外一种语言。</P>
<P>JavaScript has a syntactic similarity to Java, much as Java has to C. But it is no more a subset of Java than Java is a subset of C. It is better than Java in the applications that Java (fka Oak) was originally intended for.</P>
<P>JavaScript的语法和Java有相似之处，这就像Java的语法和C很相像一样。但是它不是Java的子集，就像Java不是C的子集一样。它在Java（Oak）最初打算进军的领域中比Java更好。</P>
<P>JavaScript was not developed at Sun Microsystems, the home of Java. JavaScript was developed at Netscape. It was originally called LiveScript, but that name wasn't confusing enough.</P>
<P>JavaScript不是Sun Microsystems的产品，Sun是Java的家。JavaScript是在Netscape被开发出来的。它最初叫LiveScript，嗯……还是这个名字好。</P>
<P>The -Script suffix suggests that it is not a real programming language, that a scripting language is less than a programming language. But it is really a matter of specialization. Compared to C, JavaScript trades performance for expressive power and dynamism.</P>
<P>-Script后缀让人认为他不是一门真正的编程语言，和一门"编程语言"还有相当的差距。但是这只是应用领域的问题。和C相比，JavaScript是牺牲了性能但换来了丰富的表现力和灵活的形态。</P>
<P>Lisp in C's Clothing披着C皮的Lisp</P>
<P>JavaScript's C-lik&#101; syntax, including curly braces and the clunky for statement, makes it appear to be an ordinary procedural language. This is misleading because JavaScript has more in common with functional languages lik&#101; Lisp or Scheme than with C or Java. It has arrays instead of lists and objects instead of property lists. Functions are first class. It has closures. You get lambdas without having to balance all those parens.</P>
<P>JavaScript的类C语法，包括大括号和语句的形式，让它看起来像普通的面向过程编程语言。这是一种误解，因为JavaScript和函数式语言，比如 Lisp 或 Scheme，有更多的相似之处，而不是和C或Java。它使用数组而不是列表，使用对象而不是属性列表。函数是第一位的，它有闭包（closures 怎么翻译？？），另外你还可以使用lambda表达式。 </P>
<P>Typeca&#115;ting类型转换</P>
<P>JavaScript was designed to run in Netscape Navigator. Its success there led to it becoming standard equipment in virtually all web browsers. This has resulted in typeca&#115;ting. JavaScript is the George Reeves of programming languages. JavaScript is well suited to a large class of non-Web-related applications</P>
<P>JavaScript最初被设计成在Netscape Navigator中运行，它在Navigator中的成功引领它成为事实上所有web浏览器的标准装备。这就造就了"类型转换"。JavaScript是编程语言中的 George Reeves（超人），是大量非web程序的称职之选。</P>
<P>Moving Target移动靶</P>
<P>The first versions of JavaScript were quite weak. They lacked exception handling, inner functions, and inheritance. In its present form, it is now a complete object-oriented programming language. But many opinions of the language are based on its immature forms.</P>
<P>JavaScript的最初几版非常弱，没有异常处理，没有内部函数和继承。现如今，它已经成为完全面向对象的编程语言。但是这门语言的许多思想是基于它不成熟的形式的。</P>
<P>The ECMA committee that has stewardship over the language is developing extensions which, while well intentioned, will aggravate one of the language's biggest problems: There are already too many versions. This creates confusion.</P>
<P>ECMA委员会，这门语言的管家，正在对它进行扩展，也在蓄意恶化它最大的问题：有太多的版本。这是混乱的根源。</P>
<P>Design Errors设计上的错误</P>
<P>No programming language is perfect. JavaScript has its share of design errors, such as the overloading of + to mean both addition and concatenation with type coercion, and the error-prone with statement should be avoided. The reserved word policies are much too strict. Semicolon insertion was a huge mistake, as was the notation for literal regular expressions. These mistakes have led to programming errors, and called the design of the language as a whole into question. Fortunately, many of these problems can be mitigated with a good lint program.</P>
<P>没有什么编程语言是完美的。JavaScript也有它设计上的错误，比如重载的+号随着类型的不同既表示"相加"又表示"连接"，和本该避免的有错误倾向的 with 语句。它的保留字策略过于严格。分号的插入是一个巨大的错误，比如作为字面正则表达式的符号时。这些失误已直接导致编程中的错误，也使这门语言的整体设计遭人质疑。还好，这些问题中有许多都可以在良好的 lint 程序中得以缓解。</P>
<P>The design of the language on the whole is quite sound. Surprisingly, the ECMAScript committee does not appear to be interested in correcting these problems. Perhaps they are more interested in making new ones.</P>
<P>这门语言的整体设计（上的问题）是相当明显的。奇怪的是ECMAScript委员会并没有对修正其中存在的问题表现出太大的兴趣，也许他们更热衷于制造新的问题。</P>
<P>Lousy Implementations糟糕的实现</P>
<P>Some of the earlier implementations of JavaScript were quite buggy. This reflected badly on the language. Compounding that, those implementations were embedded in horribly buggy web browsers.</P>
<P>JavaScript的一些早期实现有许多bug，这反过来对语言本身产生了很坏的影响。更糟糕的是这些满是bug的实现是嵌入在满是bug的web浏览器中的。</P>
<P>Bad Books糟糕的书</P>
<P>Nearly all of the books about JavaScript are quite awful. They contain errors, poor examples, and promote bad practices. Important features of the language are often explained poorly, or left out entirely. I have reviewed dozens of JavaScript books, and I can only recommend one: JavaScript: The Definitive Guide (4th Edition) by David Flanagan. (Attention authors: If you have written a good one, please send me a review copy.)</P>
<P>几乎所有的JavaScript书都是相当可怕的。它们包含错误，包含不好的例子，并鼓励不好的做法。JavaScript语言的一些重要特性它们要么没有解释清楚，要么根本就没有提及。我看过很多JavaScript的书，但我只能推荐一本：David Flanagan著的 JavaScript: The Definitive Guide (4th Edition) （《JavaScript权威指南 第四版》）。（作者们请注意：如果你们写出了好书请发给我一份副本，我给你们校对。）</P>
<P>Substandard Standard“准标准”的标准</P>
<P>The official specification for the language is published by ECMA. The specification is of extremely poor quality. It is difficult to read and very difficult to understand. This has been a contributor to the Bad Book problem because authors have been unable to use the standard document to improve their own understanding of the language. ECMA and the TC39 committee should be deeply embarrassed.</P>
<P>ECMA公布的官方语言规范的质量极其的差。不仅难读而且极其难懂。它可为那些"糟糕的书"做出了不小的贡献，因为那些作者无法通过这个标准文档来更深地理解这门语言。ECMA和TC39应该为此感到非常尴尬。 </P>
<P>Amateurs业余者</P>
<P><BR>Most of the people writing in JavaScript are not programmers. They lack the training and discipline to write good programs. JavaScript has so much expressive power that they are able to do useful things in it, anyway. This has given JavaScript a reputation of being strictly for the amateurs, that it is not suitable for professional programming. This is simply not the case.</P>
<P>使用JavaScript的人大多不是程序员，他们缺少写良好程序的培训和训练。JavaScript有非常强大的表现力，不管怎样他们也能使用它做有用的事情。这给了JavaScript一个”全然适合业余爱好者而不适合专业程序员“的名声。这很明显是一个错误。</P>
<P>Object-Oriented面向对象</P>
<P>Is JavaScript object-oriented? It has objects which can contain data and methods that act upon that data. Objects can contain other objects. It does not have classes, but it does have constructors which do what classes do, including acting as containers for class variables and methods. It does not have class-oriented inheritance, but it does have prototype-oriented inheritance.</P>
<P>JavaScript是面向对象的吗？它有对象，它的对象可以包含数据以及对数据进行操作的方法，对象也可以包含其他的对象。它没有类，但是它有构造函数来做类的事情，包括声明类的变量和方法。它没有面向类的继承，但是他有面向原型的继承。</P>
<P>The two main ways of building up object systems are by inheritance (is-a) and by aggregation (has-a). JavaScript does both, but its dynamic nature allows it to excel at aggregation.</P>
<P>构建对象系统的两大主要方法是继承（is-a）和聚合（has-a）。这两者JavaScript都有，但是它的动态天性允许有比聚合更好的实现方式。</P>
<P>Some argue that JavaScript is not truly object oriented because it does not provide information hiding. That is, objects cannot have private variables and private methods: All members are public.</P>
<P>一些关于JavaScript不是真的面向对象的争论其理由是它没有提供信息隐藏。也就是说JavaScript的对象没有私有变量和私有方法：它的所有成员都是公开的。</P>
<P>But it turns out that JavaScript objects can have private variables and private methods. (Click here now to find out how.) Of course, few understand this because JavaScript is the world's most misunderstood programming language.</P>
<P>但是事实是JavaScript 的对象可以有私有变量和私有方法（点击这里来看如何实现）。当然，之所以很少有人知道这个是因为JavaScript是世界上误解最深的语言嘛。</P>
<P>Some argue that JavaScript is not truly object oriented because it does not provide inheritance. But it turns out that JavaScript supports not only classical inheritance, but other code reuse patterns as well.</P>
<P>另一些关于JavaScript不是真的面向对象的争论其理由是它没有提供继承。但是事实是JavaScript不但支持经典的继承，而且支持其他一些代码重用的模式。</P>
<P>Copyright 2001 Douglas Crockford. All Rights Reserved Wrrrldwide.</P>
<P>版权所有</P>
<P>原文链接：<A href="http://www.crockford.com/javascript/javascript.html">http://www.crockford.com/javascript/javascript.html</A></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=275" /> 
	  <id>http://www.openx.cn/default.asp?id=275</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[MSN Messenger协议开发：认证阶段]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-05-25T14:29:22+08:00</updated>
	  <published>2006-05-25T14:29:22+08:00</published>
		  <summary type="html"><![CDATA[<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">MSN的认证阶段包括登录到MSN即时通讯服务器并且取得好友列表。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">MSN即时通讯软件的协议是基于ASCII码的协议。第一个阶段包括连接到MSN即时通软件的服务器。在这个阶段我们应该连接到服务器“messenger.hotmail.com”的1863端口（MSN即时通讯软件通过1863端口进行工作）。一旦连接上以后，我们就可以一步步开始登录过程了。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><B><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">步骤<SPAN lang=EN-US>1：</SPAN></SPAN></B><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">验证<SPAN lang=EN-US>MSN的版本。客户端（即我们的MSN软件）列出及向服务器发送它可以支持的版本，然后等待服务器的回应。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&gt;&gt;&gt; VER 0 MSNP7 MSNP6 MSNP5 MSNP4 CVRO</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">在<SPAN lang=EN-US>MSN协议中，伴随着每个命令都有一个</SPAN></SPAN><SPAN lang=EN-US style="mso-font-kerning: 0pt; mso-ascii-font-family: 宋体">“</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">试验<SPAN lang=EN-US>ID</SPAN></SPAN><SPAN lang=EN-US style="mso-font-kerning: 0pt; mso-ascii-font-family: 宋体">”</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">被发送。此实验<SPAN lang=EN-US>ID从0开始，并且当每次服务器成功的对客户端的命令做回应时，都会增加。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">服务器的回应如下<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; VER 0 MSNP7 MSNP6 MSNP5 MSNP4<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">现在客户端（<SPAN lang=EN-US>MSN）和服务器之间确定了它们之间将要进行通讯的版本。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><B><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">步骤<SPAN lang=EN-US>2：</SPAN></SPAN></B><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">客户端（<SPAN lang=EN-US>MSN）向服务器发送一个请求，要求服务器提供它所支持的<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">认证时需要的安全包的名字。<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&gt;&gt;&gt; INF 1<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">MSN在发送密码时会将密码加密，保证如有人监控你的端口时，密码不会轻易的泄露。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">服务器的回应如下<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; INF 1 MD5<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">MD5在这里是服务器当前支持的安全包的名字。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><B><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">步骤<SPAN lang=EN-US>3：</SPAN></SPAN></B><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">客户端<SPAN lang=EN-US>(MSN)将向服务器发送用户ID<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&gt;&gt;&gt; USR 2 MD5 I ideal_wang@hotmail.com<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">然后服务器将检验它是否包含有验证所需的此用户的所有相关信息。如没有的话，服务器将会发送如下回应：</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; XFR 2 NS 64.4.13.55:1863 0<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">意思为客户端<SPAN lang=EN-US>(MSN)应该连接到NOTIFICATION服务器,地址和端口分别为64.4.13.55:1863。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">我们关闭当前的连接并且在连接到新的服务器<SPAN lang=EN-US>64.4.13.55时重复以下步骤<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&gt;&gt;&gt; VER 3 MSNP7 MSNP6 MSNP5 MSNP4 CVRO<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; VER 3 MSNP7 MSNP6 MSNP5 MSNP4<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&gt;&gt;&gt; INF 4<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; INF 4 MD5<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&gt;&gt;&gt; USR 5 MD5 I ideal_wang@hotmail.com<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><B><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">步骤<SPAN lang=EN-US>4：</SPAN></SPAN></B><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">如果现在我们连接上的服务器有了此登录的用户的信息，服务器回应如下<SPAN lang=EN-US>:<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; USR 5 MD5 S 989048851.185113730<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">服务器发送的此字符串是“<SPAN lang=EN-US>MD5 杂乱信息</SPAN></SPAN><SPAN lang=EN-US style="mso-font-kerning: 0pt; mso-ascii-font-family: 宋体">”</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">。此杂乱信息由服务器创建并且在认证过程中使用。客户端然后向服务器发送使用<SPAN lang=EN-US>MD5运算法加密后的密码。实际上客户端向服务器发送的是一个独一无二的MD5字符串，此字符串等价于此</SPAN></SPAN><SPAN lang=EN-US style="mso-font-kerning: 0pt; mso-ascii-font-family: 宋体">“</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">MD5杂乱信息</SPAN><SPAN lang=EN-US style="mso-font-kerning: 0pt; mso-ascii-font-family: 宋体">”</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">(即989048851.185113730)+密码，本例中MD5字符串是3b7926d277068ec49576a0c40598ff21。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&gt;&gt;&gt; USR 6 MD5 S 3b7926d277068ec49576a0c40598ff21<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">如果密码正确<SPAN lang=EN-US>,服务器将做如下回应:<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; USR 6 OK ideal_wang@hotmail.com Jun Jie<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">此处“<SPAN lang=EN-US>Jun Jie</SPAN></SPAN><SPAN lang=EN-US style="mso-font-kerning: 0pt; mso-ascii-font-family: 宋体">”</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">是用户的呢称<SPAN lang=EN-US>.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">MSN协议的最新版本中，服务器将发送一些附加的数据,像用户的信息和一个认证码(类似于一个cookie,可以用到许多其它的功能中)：<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; MSG Hotmail Hotmail 362<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; MIME-Version:1.0<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; Content-Type:text/x-msmsgspro file;charset=UT<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; Login Time:1011252477<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; EmailEnabled:1<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; MemberIDHigh:84736<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; MemberIDLow:-143472939<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; Lang_preference:103<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; PreferredEmail:ideal_wang@hotmail.com<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; Country:IN<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; PostalCode:<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; Gender:M<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; Kid<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; Age:22<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; Sid:517<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; Kv:2<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; MSPAuth:2AAAAAAAADU0p4uxxxJtDJozJS1UTS0i7YpwnCoPUHRv56YKxxxCTWmg$$<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><B><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">步骤<SPAN lang=EN-US>5：</SPAN></SPAN></B><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">经过上述步骤我们登录上了服务器，但是我们的状态仍然是离线。为了能够发送和接受信息<SPAN lang=EN-US>,我们需要把我们的状态改成在线。客户端通过如下命令完成这步：<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&gt;&gt;&gt; CHG 7 NLN<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">服务器则向客户端发送回在线的好友及其相应的状态：<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; ILN 7 NLN btxxxe@hotmail.com nick<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; ILN 7 AWY wmxxe@hotmail.com mike<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; ILN 7 BSY tehpxxp@hotmail.com jerry<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; MSG Hotmail Hotmail 223<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; MIME-Version:1.0<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; Content-Type:text/x-msmsgsinitialemailnotification;charset=UTF-8<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; Inbox-Unread:293<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; Folders-Unread<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; Inbox-URL:/cgi-bin/HoTMaiL<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; Folders-URL:/cgi-bin/folders<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; Post-URL:http://www.hotmail.com<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><B><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">步骤<SPAN lang=EN-US>6：</SPAN></SPAN></B><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">向服务器发送的下一个命令是和当前使用的客户端的版本相关的<SPAN lang=EN-US>,客户端向服务器发送它的版本号和所在机器的信息像操作系统和其配置等:<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&gt;&gt;&gt; CVR 8 0x0409 win 4.10 i386 MSMSGS 4.5.0127 MSMSGS<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">0x0409 win4.10 i386 指出客户端当前的运行环境是win98,使用的是Intel的微处理器；MSMSGS 4.5.0127 MSMSGS 指出msmsgs.exe的版本号。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">服务器回应提供下载最新版本及一些其它的信息的地址：<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; CVR 8 4.5.0127 4.5.0127 1.0.0863<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; http://download.microsoft.com/do ... /en-us/mmssetup.exe<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; http://messenger.microsoft.com<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">这个<SPAN lang=EN-US>CVR命令的发送并不是必须的,无论此命令是否发送,MSN协议都可以正确的工作.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">为了获得我们的好友列表<SPAN lang=EN-US>,我们可以发送如下命令<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&gt;&gt;&gt; LST 9 RL<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">服务器将相应发送回“反向列表”，此反向列表为当你在线时，可以看到你并能向你发送即时消息的用户列表。你也可以使用<SPAN lang=EN-US>LST 9 FL命令向服务器请求</SPAN></SPAN><SPAN lang=EN-US style="mso-font-kerning: 0pt; mso-ascii-font-family: 宋体">“</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">正向列表</SPAN><SPAN lang=EN-US style="mso-font-kerning: 0pt; mso-ascii-font-family: 宋体">”</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">，此正向列表包括你加入到好友列表中的所有好友。服务器所做的回应如下<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; LST 9 RL 69 1 19 ideal_wang@hotmail.com venkat<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; LST 9 RL 69 2 19 puxxxxx@hotmail.com puja<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; LST 9 RL 69 3 19 vancxxxx@hotmail.com ramachandran<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; LST 9 RL 69 4 19 moxxxxx@hotmail.com chandramouli<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; LST 9 RL 69 6 19 v_n_xxxx@hotmail.com Narakatesh<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; ........<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: #e6e6e6; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="BACKGROUND: #e6e6e6; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">&lt;&lt;&lt; LST 9 RL 69 19 19 puneetagarxxx@hotmail.com puneet<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'">&nbsp;<o:p></o:p></SPAN></P>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=274" /> 
	  <id>http://www.openx.cn/default.asp?id=274</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[MSN Messenger协议简介]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=3" label="网络开发" /> 
	  <updated>2006-05-25T14:25:10+08:00</updated>
	  <published>2006-05-25T14:25:10+08:00</published>
		  <summary type="html"><![CDATA[<DIV>MSN Messenger 是Microsoft开发的聊天工具，目前在国内拥有很大的用户群。使用MSN Messenger可以与他人进行文字聊天，语音对话，视频会议等即时交流，还可以通过此软件来查看联系人是否联机等。</DIV>
<DIV>1999年，Microsoft向IETF提交了一份"MSN Messenger Service 1.0 Protocol"草案，这是最初版本的MSN Messenger协议。在以后几年，该公司不再公开有关MSN Messenger协议的升级、修改细节的官方文档。但无论是开发第三方的聊天客户端软件(如Gaim, MyIM等)，还是做协议分析，必须对其通信协议有深入了解。</DIV>
<DIV>MSN Messenger的协议的最新版为第10版，简称MSNP10，对应于MSN Messenger 6.1。MSN Messenger 6.0则使用MSNP9。现在Microsoft强迫MSN Messenger用户升级到6.0或6.1版，因为服务器对MSNP8以下的版本不再支持。本文及后续文章所描述的MSN Messenger协议主要针对MSNP9/MSNP10。</DIV>
<DIV><B>1.1.1 </B><B>连</B><B>接</B></DIV>
<DIV>MSN Messenger协议建立在TCP/IP之上。除了文件传输和语音聊天是直接的"点对点"通信之外，其它所有的情形全部通过服务器进行。</DIV>
<DIV>在逻辑上，一共有三种类型的服务器，各司其职：</DIV>
<DIV>· 派遣服务器(Dispatch Server, DS) - 客户端最初连接的服务器。负责给客户端分配合适的通知服务器。域名是messenger.hotmail.com，标准服务端口是1863。完成派遣任务后，切断TCP连接。 </DIV>
<DIV>·&nbsp; 通知服务器(Notification Server, NS) - 客户端需要一直保持连接的服务器。很多任务要在这个会话内完成，包括登录、改变状态、获取用户列表、修改用户信息、发起聊天、接受呼叫、邮件通知、退出等等。服务端口由派遣服务器指定，通常也是1863。 </DIV>
<DIV>·&nbsp; 接线服务器(Switchboard Server, SS) - 客户端之间聊天使用的中转服务器。每开一个聊天窗口，客户端和服务器就建立一个TCP会话。当客户端之间需要进行文件传输或语音聊天时，发送系统消息，建 立"点对点"会话通道(可能转为使用UDP)。服务端口通常也是1863。"点对点" 通信使用的端口由客户端自动协商决定，如文件传输通常使用6891端口。 </DIV>
<DIV><B>1.1.2 </B><B>命</B><B>令</B></DIV>
<DIV>MSN Messenger命令使用纯ASCII码。对非ASCII码字符使用URL编码。命令的语法是</DIV><PRE>XXX[&lt;SP&gt;TrID&lt;SP&gt;PARAM1&lt;SP&gt;PARAM2…]&lt;CRLF&gt;</PRE>
<DIV>其中，&lt;SP&gt;是空白字符，&lt;CRLF&gt;是回车换行，XXX是一个3字符的命令串，TrID是一个流水号，PARAMx是参数，[ ]内是可选项。最简单的命令没有流水号和参数。为了方便起见，下面讨论时用" "代表&lt;SP&gt;，"\r\n"代表&lt;CRLF&gt;，"\x??"代表一个值为0x??字节。红色表示由客户端发出，蓝色表示由服务器发出。一个MSN Messenger命令的例子如下：</DIV><PRE>USR 18 TWN I example@hotmail.com\r\n</PRE>
<DIV><B>1.1.3 错误</B></DIV>
<DIV>无论是由于客户端发出的命令无效，参数无效，还是其他什么原因，服务器可以返回一个错误。格式为</DIV><PRE>XXX[&lt;SP&gt;TrID]&lt;CRLF&gt;</PRE>
<DIV>其中，XXX是一个3位数字的串。如</DIV><PRE>ADD 21 AL non_existent@passport.com non_existent@passport.com\r\n</PRE><PRE>205 21\r\n</PRE>
<DIV>上例中，non_existent@passport.com是一个不存在的账号。</DIV>
<DIV><B>1.1.4 </B><B>消息</B></DIV>
<DIV>MSN Messenger消息符合MIME 1.0标准，由消息头与消息体组成。通常使用UTF-8编码，消息头中也需要URL编码格式，消息体则直接用二进制数据。</DIV>
<DIV>一个MSN Messenger消息的例子如下：</DIV><PRE>MIME-Version: 1.0\r\n</PRE><PRE>Content-Type: text/plain; charset=UTF-8\r\n</PRE><PRE>X-MMS-IM-Format: FN=%E5%AE%8B%E4%BD%93; EF=; CO=0; CS=86; PF=0\r\n</PRE><PRE>\r\n</PRE><PRE>bhw98\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x81</PRE>
<DIV>经简单分析可知，"%E5%AE%8B%E4%BD%93"是"宋体"的UTF-8加URL编码，而"bhw98\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x81"是"bhw98你好！"的UTF-8编码。</DIV>
<H3 align=center>命令一览</H3>
<DIV align=center>
<TABLE cellSpacing=1 cellPadding=0 width="100%" bgColor=white border=1>
<TBODY>
<TR>
<TD>
<DIV align=center>命令</DIV></TD>
<TD>
<DIV align=center>来源</DIV></TD>
<TD>
<DIV align=center>去向</DIV></TD>
<TD>
<DIV align=center>说明</DIV></TD>
<TD>
<DIV align=center>备注</DIV></TD></TR>
<TR>
<TD>
<DIV>ACK</DIV></TD>
<TD>
<DIV>SS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>确认，做出肯定回答。</DIV></TD>
<TD>
<DIV>acknowledgement</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>ADD</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>发出添加新联系人到列表的请求。</DIV></TD>
<TD rowSpan=2>
<DIV>add user</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>返回添加新联系人请求的应答。</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>ADG</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>发出添加新联系人组请求。</DIV></TD>
<TD rowSpan=2>
<DIV>add group</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>返回添加新联系人组请求的应答。</DIV></TD></TR>
<TR>
<TD>
<DIV>ANS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>SS</DIV></TD>
<TD>
<DIV>接受聊天连接请求。</DIV></TD>
<TD>
<DIV>answer</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>BLP</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>设置对尚未列入明确允许/禁止的联系人列表的保密策略。</DIV></TD>
<TD rowSpan=2>
<DIV>block list privacy</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>返回设置保密策略请求的应答。</DIV></TD></TR>
<TR>
<TD>
<DIV>BYE</DIV></TD>
<TD>
<DIV>SS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>通知客户端结束会话。</DIV></TD>
<TD>
<DIV>bye</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>CAL</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>SS</DIV></TD>
<TD>
<DIV>发出建立聊天连接的请求。</DIV></TD>
<TD rowSpan=2>
<DIV>call</DIV></TD></TR>
<TR>
<TD>
<DIV>SS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>返回建立聊天连接请求的应答。</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>CHG</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>发出改变状态的请求。</DIV></TD>
<TD rowSpan=2>
<DIV>change state</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>返回改变状态的应答。</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>CHL</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD rowSpan=2>
<DIV>服务器发出验证要求。</DIV></TD>
<TD rowSpan=2>
<DIV>challenge</DIV></TD></TR>
<TR>
<TD>
<DIV>SS</DIV></TD>
<TD>
<DIV>Client</DIV></TD></TR>
<TR>
<TD rowSpan=4>
<DIV>CVR</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD rowSpan=2>
<DIV>发出客户端的OS、语言、MSN Messenger版本等信息。</DIV></TD>
<TD rowSpan=4>
<DIV>client version</DIV></TD></TR>
<TR>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>SS</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD rowSpan=2>
<DIV>返回推荐的MSN Messenger版本、升级软件需要的下载地址等信息。</DIV></TD></TR>
<TR>
<TD>
<DIV>SS</DIV></TD>
<TD>
<DIV>Client</DIV></TD></TR>
<TR>
<TD>
<DIV>FLN</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>通知有联系人列表中的用户下线。</DIV></TD>
<TD>
<DIV>off-line</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>GTC</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>设置当有联系人列表中的用户状态改变时给出的提示。</DIV></TD>
<TD rowSpan=2>
<DIV>greeting to changes?</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>返回设置请求的应答。</DIV></TD></TR>
<TR>
<TD rowSpan=4>
<DIV>INF</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD rowSpan=2>
<DIV>询问服务器所支持的认证方式。</DIV></TD>
<TD rowSpan=4>
<DIV>information?</DIV></TD></TR>
<TR>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>SS</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD rowSpan=2>
<DIV>返回服务器所支持的认证方式。</DIV></TD></TR>
<TR>
<TD>
<DIV>SS</DIV></TD>
<TD>
<DIV>Client</DIV></TD></TR>
<TR>
<TD>
<DIV>ILN</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>当客户端登录或添加联系人到列表时，通知列表中的联系人的状态。</DIV></TD>
<TD>
<DIV>initial online state</DIV></TD></TR>
<TR>
<TD>
<DIV>IRO</DIV></TD>
<TD>
<DIV>SS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>当有新用户加入聊天连接时，通知客户端该连接中的用户名单。</DIV></TD>
<TD>
<DIV>initial roster information</DIV></TD></TR>
<TR>
<TD>
<DIV>JIO</DIV></TD>
<TD>
<DIV>SS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>通知客户端已经同另外的用户建立了聊天连接。</DIV></TD>
<TD>
<DIV>jion</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>LSG</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>发出获取联系人组列表的请求。</DIV></TD>
<TD rowSpan=2>
<DIV>list groups</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>返回获取联系人组列表请求的应答。</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>LST</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>发出获取联系人列表的请求。</DIV></TD>
<TD rowSpan=2>
<DIV>list</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>返回获取联系人列表请求的应答。</DIV></TD></TR>
<TR>
<TD rowSpan=3>
<DIV>MSG</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>SS</DIV></TD>
<TD>
<DIV>发送消息到其他用户(聊天对象)。</DIV></TD>
<TD rowSpan=3>
<DIV>message</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>传递服务器(系统) 的消息到客户端。</DIV></TD></TR>
<TR>
<TD>
<DIV>SS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>传递其他用户(聊天对象)的消息到客户端。</DIV></TD></TR>
<TR>
<TD>
<DIV>NAK</DIV></TD>
<TD>
<DIV>SS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>做出否定回答。</DIV></TD>
<TD>
<DIV>negative acknowledgement</DIV></TD></TR>
<TR>
<TD>
<DIV>NLN</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>通知客户端联系人上线或改变状态。</DIV></TD>
<TD>
<DIV>on-line</DIV></TD></TR>
<TR>
<TD>
<DIV>OUT</DIV></TD>
<TD>
<DIV>All</DIV></TD>
<TD>
<DIV>All</DIV></TD>
<TD>
<DIV>结束客户端-服务器的连接。</DIV></TD>
<TD>
<DIV>out</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>PNG</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD rowSpan=2>
<DIV>测试TCP连接状态。</DIV></TD>
<TD rowSpan=2>
<DIV>ping</DIV></TD></TR>
<TR>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>SS</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>PRP</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>发出设置个人电话号码的请求。</DIV></TD>
<TD rowSpan=2>
<DIV>personal phone number</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>返回设置请求的应答</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>PNG</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD rowSpan=2>
<DIV>测试TCP连接状态。</DIV></TD>
<TD rowSpan=2>
<DIV>ping</DIV></TD></TR>
<TR>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>SS</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>QNG</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD rowSpan=2>
<DIV>返回测试TCP连接状态的应答。</DIV></TD>
<TD rowSpan=2>
<DIV>quiz ping?</DIV></TD></TR>
<TR>
<TD>
<DIV>SS</DIV></TD>
<TD>
<DIV>Client</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>QRY</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD rowSpan=2>
<DIV>客户端回答服务器的验证要求。</DIV></TD>
<TD rowSpan=2>
<DIV>quiz reply?</DIV></TD></TR>
<TR>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>SS</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>REA</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>发出修改用户昵称的请求。</DIV></TD>
<TD rowSpan=2>
<DIV>ren&#097;me nickname</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>返回修改用户昵称请求的应答。</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>REG</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>发出修改联系人组的请求。</DIV></TD>
<TD rowSpan=2>
<DIV>ren&#097;me group</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>返回修改联系人组请求的应答。</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>REM</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>发出从联系人列表中删除用户的请求。</DIV></TD>
<TD rowSpan=2>
<DIV>ren&#097;me user</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>返回删除用户请求的应答。</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>RMG</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>发出删除联系人组的请求。</DIV></TD>
<TD rowSpan=2>
<DIV>remove group</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>返回删除联系人组请求的应答。</DIV></TD></TR>
<TR>
<TD>
<DIV>RNG</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>通知客户端有人要建立聊天连接。</DIV></TD>
<TD>
<DIV>ring</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>SYN</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD rowSpan=2>
<DIV>客户端-服务器同步。</DIV></TD>
<TD rowSpan=2>
<DIV>synchronization</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD></TR>
<TR>
<TD rowSpan=2>
<DIV>URL</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>发出获取MSN服务URL的请求。</DIV></TD>
<TD rowSpan=2>
<DIV>URL</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>返回获取URL请求的应答。</DIV></TD></TR>
<TR>
<TD>
<DIV>USR</DIV></TD>
<TD>
<DIV>All</DIV></TD>
<TD>
<DIV>All</DIV></TD>
<TD>
<DIV>声明、传递、鉴别用户身份。</DIV></TD>
<TD>
<DIV>user</DIV></TD></TR>
<TR>
<TD rowSpan=4>
<DIV>VER</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>DS</DIV></TD>
<TD rowSpan=4>
<DIV>协商MSN Messenger协议版本。</DIV></TD>
<TD rowSpan=4>
<DIV>version</DIV></TD></TR>
<TR>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD></TR>
<TR>
<TD>
<DIV>DS</DIV></TD>
<TD>
<DIV>Client</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD></TR>
<TR>
<TD rowSpan=3>
<DIV>XFR</DIV></TD>
<TD>
<DIV>DS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>向客户端分配NS（通知客户端转向连接指定的NS）。</DIV></TD>
<TD rowSpan=3>
<DIV>transfer</DIV></TD></TR>
<TR>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>发出分配SS的请求。</DIV></TD></TR>
<TR>
<TD>
<DIV>NS</DIV></TD>
<TD>
<DIV>Client</DIV></TD>
<TD>
<DIV>返回分配SS请求的应答。</DIV></TD></TR></TBODY></TABLE></DIV>
<H3 align=center>错误代码一览</H3>
<DIV align=center>
<TABLE cellSpacing=1 cellPadding=0 width="100%" border=1>
<TBODY>
<TR>
<TD width="10%">
<DIV align=center>代码</DIV></TD>
<TD width="35%">
<DIV align=center>含义</DIV></TD>
<TD width="10%">
<DIV align=center>可能命令</DIV></TD>
<TD width="35%">
<DIV align=center>错误示例</DIV></TD>
<TD width="10%">
<DIV align=center>备注</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>200</DIV></TD>
<TD width="35%">
<DIV>非法命令</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD>
<TD width="35%">
<DIV>ABC 18\r\n<BR>200 18\r\n</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>201</DIV></TD>
<TD width="35%">
<DIV>非法参数</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD>
<TD width="35%">
<DIV>CHG 19 FLN 0\r\n<BR>201 19\r\n<BR>ADD 20 AL aaa@bbb@ccc aaa@bbb@ccc\r\n<BR>201 20\r\n</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>205</DIV></TD>
<TD width="35%">
<DIV>用户不存在</DIV></TD>
<TD width="10%">
<DIV>ADD</DIV></TD>
<TD width="35%">
<DIV>ADD 21 AL none@hotmail.com none@hotmail.com\r\n<BR>205 21\r\n</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>206</DIV></TD>
<TD width="35%">
<DIV>缺少域名</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD>
<TD width="35%">
<DIV>&nbsp;</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>207</DIV></TD>
<TD width="35%">
<DIV>已经登录</DIV></TD>
<TD width="10%">
<DIV>USR</DIV></TD>
<TD width="35%">
<DIV>USR 20 TWN I example@hotmail.com\r\n<BR>207 20\r\n<BR>USR 21 TWN S 8d30fc782aa25ec9e1293fdda13cab42\r\n<BR>207 21\r\n</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>208</DIV></TD>
<TD width="35%">
<DIV>非法用户名</DIV></TD>
<TD width="10%">
<DIV>CAL</DIV></TD>
<TD width="35%">
<DIV>CAL 2 @@hotmail.com\r\n<BR>208 2\r\n</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>209</DIV></TD>
<TD width="35%">
<DIV>非法用户昵称</DIV></TD>
<TD width="10%">
<DIV>REA</DIV></TD>
<TD width="35%">
<DIV>REA 18 one@hotmail.com kill%20microsoft\r\n<BR>209 18\r\n</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>210</DIV></TD>
<TD width="35%">
<DIV>用户太多</DIV></TD>
<TD width="10%">
<DIV>ADD</DIV></TD>
<TD width="35%">
<DIV>ADD 23 FL one@hotmail.com one@hotmail.com 0\r\n<BR>210 23\r\n </DIV></TD>
<TD width="10%">
<DIV>最大150</DIV></TD></TR>
<TR>
<TD width="10%" rowSpan=2>
<DIV>215</DIV></TD>
<TD width="35%" rowSpan=2>
<DIV>用户已在列表中</DIV></TD>
<TD width="10%">
<DIV>ADD</DIV></TD>
<TD width="35%">
<DIV>ADD 36 FL one@hotmail.com one@hotmail.com 2\r\n<BR>ADD 36 825 FL one@hotmail.com one@hotmail.com 2\r\n<BR>ADD 37 FL one@hotmail.com one@hotmail.com 2\r\n<BR>215 37\r\n </DIV></TD>
<TD width="10%" rowSpan=2>
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>CAL</DIV></TD>
<TD width="35%">
<DIV>CAL 5 two@hotmail.com\r\n<BR>CAL 5 RINGING 213697\r\n<BR>CAL 6 two@hotmail.com\r\n<BR>215 6\r\n</DIV></TD></TR>
<TR>
<TD width="10%" rowSpan=3>
<DIV>216</DIV></TD>
<TD width="35%" rowSpan=3>
<DIV>用户不在列表中</DIV></TD>
<TD width="10%">
<DIV>REM</DIV></TD>
<TD width="35%">
<DIV>REM 14 FL three@hotmail.com\r\n<BR>216 14\r\n </DIV></TD>
<TD width="10%" rowSpan=3>
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>REA</DIV></TD>
<TD width="35%">
<DIV>REA 48 three@hotmail.com three\r\n<BR>216 48\r\n</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>CAL</DIV></TD>
<TD width="35%">
<DIV>CAL 2 three@hotmail.com\r\n<BR>216 2\r\n</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>217</DIV></TD>
<TD width="35%">
<DIV>用户不在线</DIV></TD>
<TD width="10%">
<DIV>CAL</DIV></TD>
<TD width="35%">
<DIV>CAL 2 two@hotmail.com\r\n<BR>217 2\r\n </DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%" rowSpan=2>
<DIV>218</DIV></TD>
<TD width="35%" rowSpan=2>
<DIV>已在指定模式</DIV></TD>
<TD width="10%">
<DIV>BLP</DIV></TD>
<TD width="35%">
<DIV>BLP 17 BL\r\n<BR>BLP 17 151 BL\r\n<BR>BLP 18 BL\r\n<BR>218 18\r\n </DIV></TD>
<TD width="10%" rowSpan=2>
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>GTC</DIV></TD>
<TD width="35%">
<DIV>GTC 19 A\r\n<BR>GTC 19 152 A\r\n<BR>GTC 20 A\r\n<BR>218 20\r\n</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>219</DIV></TD>
<TD width="35%">
<DIV>用户已经在相反的列表中</DIV></TD>
<TD width="10%">
<DIV>ADD</DIV></TD>
<TD width="35%">
<DIV>ADD 15 AL four@hotmail.com four@hotmail.com\r\n<BR>ADD 15 AL 56 four@hotmail.com four\r\n<BR>ADD 16 BL four@hotmail.com four@hotmail.com\r\n<BR>219 16\r\n</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>223</DIV></TD>
<TD width="35%">
<DIV>用户组太多</DIV></TD>
<TD width="10%">
<DIV>ADG</DIV></TD>
<TD width="35%">
<DIV>ADG 28 new%20group 0\r\n<BR>223 28\r\n</DIV></TD>
<TD width="10%">
<DIV>最大30</DIV></TD></TR>
<TR>
<TD width="10%" rowSpan=4>
<DIV>224</DIV></TD>
<TD width="35%" rowSpan=4>
<DIV>非法组号</DIV></TD>
<TD width="10%">
<DIV>ADD</DIV></TD>
<TD width="35%">
<DIV>RMG 24 3\r\n<BR>RMG 24 11506 3\r\n<BR>ADD 25 FL five@hotmail.com 3\r\n<BR>224 25\r\n</DIV></TD>
<TD width="10%" rowSpan=4>
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>REM</DIV></TD>
<TD width="35%">
<DIV>RMG 24 3\r\n<BR>RMG 24 11506 3\r\n<BR>REM 25 FL five@hotmail.com 3\r\n<BR>224 25\r\n</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>REG</DIV></TD>
<TD width="35%">
<DIV>RMG 24 3\r\n<BR>RMG 24 11506 3\r\n<BR>REG 25 3 New%20Name 0\r\n<BR>224 25\r\n</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>RMG</DIV></TD>
<TD width="35%">
<DIV>RMG 24 3\r\n<BR>RMG 24 11506 3\r\n<BR>RMG 25 3\r\n<BR>224 25\r\n</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>225</DIV></TD>
<TD width="35%">
<DIV>用户不在组中</DIV></TD>
<TD width="10%">
<DIV>REM</DIV></TD>
<TD width="35%">
<DIV>REM 26 FL six@hotmail.com 3\r\n<BR>225 26\r\n</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>229</DIV></TD>
<TD width="35%">
<DIV>组名太长</DIV></TD>
<TD width="10%">
<DIV>ADG</DIV></TD>
<TD width="35%">
<DIV>ADG 27 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 0\r\n<BR>229 27\r\n</DIV></TD>
<TD width="10%">
<DIV>最大60</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>230</DIV></TD>
<TD width="35%">
<DIV>不能删除组0</DIV></TD>
<TD width="10%">
<DIV>RMG</DIV></TD>
<TD width="35%">
<DIV>RMG 28 0\r\n<BR>230 28\r\n</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>300</DIV></TD>
<TD width="35%">
<DIV>缺少必要的参数</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD>
<TD width="35%">
<DIV>&nbsp;</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>302&nbsp;</DIV></TD>
<TD width="35%">
<DIV>尚未登录</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD>
<TD width="35%">
<DIV>&nbsp;</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>500</DIV></TD>
<TD width="35%">
<DIV>服务器内部错误</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD>
<TD width="35%">
<DIV>&nbsp;</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>540</DIV></TD>
<TD width="35%">
<DIV>验证应答错误</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD>
<TD width="35%">
<DIV>&nbsp;</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>600</DIV></TD>
<TD width="35%">
<DIV>服务器忙</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD>
<TD width="35%">
<DIV>&nbsp;</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>707</DIV></TD>
<TD width="35%">
<DIV>无法建立连接</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD>
<TD width="35%">
<DIV>&nbsp;</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>910</DIV></TD>
<TD width="35%">
<DIV>服务器忙</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD>
<TD width="35%">
<DIV>&nbsp;</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR>
<TR>
<TD width="10%">
<DIV>911</DIV></TD>
<TD width="35%">
<DIV>身份验证失败</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD>
<TD width="35%">
<DIV>&nbsp;</DIV></TD>
<TD width="10%">
<DIV>&nbsp;</DIV></TD></TR></TBODY></TABLE></DIV>
<DIV>过去的MSN Messenger版本(MSNP8以下)，简单地使用MD5等Hash算法对用户身份进行认证。MSNP9/MSNP10使用一种TWN (Tweener)认证方式，通过SSL/TLS连接到login.passport.com和loginnet.passport.com等服务器，借助于HTTP协议输入账号和密码，认证通过后，才能取得“入场券”。</DIV>
<DIV>&nbsp;</DIV>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.openx.cn/default.asp?id=273" /> 
	  <id>http://www.openx.cn/default.asp?id=273</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[随心所欲的千里眼 D-Link DCS-6620G 无线网络摄像机[转]]]></title>
	  <author>
		 <name>cxty</name>
		 <uri>http://www.openx.cn/</uri>
		 <email>cxty@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.openx.cn/default.asp?cateID=2" label="杂七杂八" /> 
	  <updated>2006-05-22T07:14:07+08:00</updated>
	  <published>2006-05-22T07:14:07+08:00</published>
		  <summary type="html"><![CDATA[前言<BR><BR>五月真是个繁忙的月份，从编译版犀牛的无线网络LAB，毕业考和写报告，还有产品的评测报告，好像都赶在五月份来培训犀牛组织计划的能力，思绪混乱了一阵子，可见犀牛还有很多功课要做，先向P帅和M01的开发人员说声抱歉，因为在月初收到这颗高贵玩具后，拖了那么久才出第一篇，真是抱歉（原来这就是赶稿的感觉），回到DCS-6620G，在还没收到这颗“球”的时候，我还是一直停留在我所接触过的网络摄像机所给我的印象，很单纯的让人可以看到对方，偶尔利用它来玩视觉游戏，像什么排球或投篮之类的，除了罗技出了一颗会动的视频外，犀牛也没有接触过其他的网络摄像机了，除了替朋友装装针孔编译版DVR外，直到我收到这颗“球”后又知道到它的销价，让我差点得蹲下来摸眼睛，称它高贵一点也不假，但再看过它功能与实际玩过一阵子后就不难想像它高贵的原因了，但这对我这个会想太多的处女座犀牛来说，忽然不晓得该如何下笔来把它的优点表达出来，可能是犀牛的功力尚差，这颗“球”的确让我伤了一下脑筋，不若ColdHeat那种单纯的功能只需３０分钟就可以把它的功能特色表达出来，这颗D-Link DCS-6620G可不像常规市面上的无线网络摄像机般的单纯，所以千万别被它的销价吓到，因为它的功能相当的强大，应用的环境也是相当的广泛，为了可以尽量把这颗“球”的功能一一用文字影像呈现给大家，又不会打个落落长的一篇，所以犀牛把它分为三个主题来写它，各是“<FONT color=#ff0000>基本功能篇</FONT>”、“<FONT color=#ff0000>软件介绍篇</FONT>”、“<FONT color=#ff0000>安全应用篇</FONT>”这三大主题来呈现这产品，首先犀牛先发表的是基本功能篇，咱们就开始摇罗．<BR><BR>首先～～在０１不免俗的开箱照，当我从黑猫物流士手上接过这产品时，被它的Size给惊了一下，怎么一颗无线网络摄机机的包装几乎和一台10.6寸NB的包装差不多．．．<BR><BR><BR>非常标准的D-Link配色包装．<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-006e8fcce88c0e61ccfde15c93f70b9b.jpg"><BR>－－－包装正面照－－－<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-643b2e9fd31272a3553e01052ce421bd.jpg"><BR>－－－包装背面照－－－<BR><BR>打开外盒，里面还有一个盒子，里面装的当然就是主人公和配件啦．<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-0d8b5d6aa65241f890d652b22fb45d30.jpg"><BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-5ad6edc174cffa60c6377088b7ae1b1f.jpg"><BR><BR>把主人公和配件们都拿出来排排站，犀牛的报告不免俗的还是有Show Girl Zita出场．<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-4ef57da5b27c1d4c2ff0dfd97fe32e75.jpg"><BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-e541b52a4a4ec27a3ed8b148dc260aef.jpg"><BR>因为我觉得这二张都好可爱，所以都摆了上来．．．<BR><BR>再来咱们仔细看主人公与基本的配件．<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-a94ac661169dc5b7c2992fac5cdc76b7.jpg"><BR>咱们可以看到有一颗DCS-6620G主人公、二支原厂天线、遥控器、Adapter、网络线、AV out连接线、说明书、软件光盘和把它钉在墙上的Mount架．<BR><BR>接著来个主人公的沙龙照．．．<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-bb68472fec647e59bbab26411c72fae1.jpg"><BR>你在看我吗？<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-c81eee7e39d174632f85e4ea529b63f5.jpg"><BR>像不像一个倒过来的碗上头有一颗球．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-fc2ef23cfc165d4aa176cfe158c91f74.jpg"><BR>侧面照<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-441e6f922f99398378072996945c1f92.jpg"><BR>背面照，这里有没有看到奇怪的接头呢？咱们会在安全应用篇提到．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-88ddf03f0bac03535f0a31070826e0fa.jpg"><BR>架上Mount架的样子，这是要钉在墙上用的．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-b988107733f0af37650401ffdc003402.jpg"><BR>角度可以调整的．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-2862df43927df7b4d1fb3b196dc9cc26.jpg"><BR>45度角（这张像不像在眺望远方，就像犀牛偶尔也会看著犀牛太座所在的远方）<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-73c6222a5d23eb727784c8a3dbe6cbf0.jpg"><BR>犀牛又被盯住了，笨牛你在看我吗？<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-243cc747167905ccdd1b342477b9353a.jpg"><BR>你可以再近一点．．．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-443cd1799cbbdde56e6de46f2c91c87b.jpg"><BR>没事，你可以再近一点．．．<BR><BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-52b8ff098b2bc333cbaf3925994c4e13.jpg"><BR>这张像不像贞子的大眼睛，还可以看到瞳孔的版本．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-a63d22f7d9a44c710c5ec0708a32b4b2.jpg"><BR>最后来张底座照，可以看到有SECURICAM的字样，意指？？？<BR>在安全应用篇为您完整揭晓^^<BR><BR>－－－接下来咱们介绍一些基本功能－－－<BR><BR>先来看看原厂所发布的规格吧<BR><BR>节录於<A href="http://www.dlinktw.com.tw/product_view.asp?subMenuCode=0&sno=IJIQ" target=_blank>D-Link DCS-6620G原厂规格介绍</A>&lt;-更详细的规格请点．<BR>＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<BR>产品特色 <BR>独立式网络摄像机,内置CPU& RAM无需与计算机结合 <BR>内置IEEE 802.11G 无线网络 <BR>可使用有线网络或者无线方式链接至网络摄像机 <BR>透过互联网即可远程监控 <BR>使用1/4-inch CCD sensor <BR>内置光学变焦镜头 <BR>支持最强Motorized Pan/Tilt/Zoom <BR>监控窗口可调式 十倍光学/十倍数位 影像放大 <BR>可移动式镜头 <BR>透过随机附赠 Surveillance 软件 最多可同时监控 16台网络摄像机 <BR>配合监控软件可选择移动检测录像或者 计划录像 监控 <BR>配合监控软件提供聪明的拨放程序 <BR>支持可选择MPEG4/M-JPEG 压缩格式 录制影像, <BR>最高影像分辨率可达 704X480 <BR>提供双向语音功能,可即时在线双向语音对谈 <BR>即时入侵检测监控,事件发立即采集影像并以mail 及FTP方式告知 <BR>支持超低照度0.05lux/f1.8 <BR>强大监控软件提供影像的采集与录制功能 <BR>支持即插即用功能以及DDNS <BR>提供Web-UI 管理介面<BR><BR>＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<BR>看到这些功能介绍了没，多到令人眼花呀，市面上网络摄像机也是相当的多，什么自动变焦，2X/4X光学或数位变焦，嘿嘿遇上咱们的DCS-6620G这些都只是小儿科，这颗”球”内置6mm镜头，10倍的光学变焦能力，想清楚的拉近双方的距离这些都不成问题．．．咱们就来看看测试的图吧，犀牛家住了三个男生和三只猫，平常都不太整理的所以有些杂乱，还请见谅，图的主人公是我的可口可乐单车后的工具包．<BR><BR>注意－这个帧原是704X480每秒１０张的最高质量，也就是说这是动态摄影下，透过无线网络在计算机端所抓下来的图，PO上M01的图会自动改变大小，但也差不了多少．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-eb13b22424d01046412ea206f28fc2dd.jpg"><BR>－－－1倍－－－清楚．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-b3170647c739b66764f19cc4ed8970e2.jpg"><BR>－－－2倍－－－很好．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-f2188a958840555ce3c610d4cf9152d7.jpg"><BR>－－－3倍－－－不错．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-10b40491a61e880b23232bf5c412acdf.jpg"><BR>－－－4倍－－－工具包的可口可乐字样出现．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-0720f72f8b7b492c77602e81c2296c61.jpg"><BR>－－－5倍－－－还是很清楚．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-6151bd88fdf9a010c4d3632b7c6816f4.jpg"><BR>－－－6倍－－－开始有些模糊．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-9bbae2c664c17c5d84c4bc45fabb21d8.jpg"><BR>－－－7倍－－－和6倍时差不多．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-bc196c184770bb8a332a46884ad03714.jpg"><BR>－－－8倍－－－哇～开始不清楚了，但还是可以分辨出轮廓．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-a649fc85ec4129bdef1e478e9a7c2aa3.jpg"><BR>－－－9倍－－－还是可以分辨出轮廓．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-b01b9713c25885fd2938d85d886c1eb7.jpg"><BR>－－－10倍－－－太近了糊成一团，不过10倍光学变焦的确把距离拉近了．<BR><BR>接下来先简单的看一下，6620G内置的WEB控制介面．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-4af1e34e55fb1619e46dfdb67b41f2a2.jpg"><BR>这里可以看到6620G所监看到的帧，而所有控制6620G操作的地方就在这里．．．控制？没错，我们可以经由IE或其兼容之浏览器来做远程控制，由上头的帧可以看到许多控制6620G的操作按钮，包含上下左右还有中间的回归原定点的按钮，还可以调整焦距缩放和调整光圈决定光线进入CCD的多寡，原厂规格支持超低照度0.05lux/f1.8 下拍摄，称后会有Low LUX的测试．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-c9cffa56debed873297ab61e663ff973.jpg"><BR>这个帧是设置控制端（计算机）的一些设置，包含Video和Audio是否同步的设置，选择传输用的协议等．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-8746b2ab29e6d02cb5ef7906f5f6e660.jpg"><BR>这里就是整个6620G的设置核心，也是最能了解6620G高贵的地方之一，它除了WEB控制介面外，还有一套叫做IP surveillance的软件，这套软件也是一个很大的卖点，其功能之强大，得开另外一个主题来介绍它，犀牛本身也要好好的研究一番．<BR><BR>这里先放上在LOW LUX下的帧．．．<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-9701c973d868c7eb94fef429b10894c1.jpg"><BR>照度计上显示为0.59Lux（在黑暗中用闪光灯拍的，而不是这种亮度是0.59Lux）．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-e118db2fef139cd781a99ec120366443.jpg"><BR>这是我用Sony Handycam DCR-HC90用Night Shot所拍的照片．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-50b5a82c41c577466004ddd0a7f85eeb.jpg"><BR>这是依靠6620G本身的LED灯的亮度拍下在它前面的照度计．<BR><BR>关于LOW LUX部分的问题，因为犀牛对於摄影的一些专有名词还有调整光圈什么的不是很熟，就犀牛所知道的0.59Lux下是等於0.059FC，按照原厂的规格在这照度下应该是有法子拍出些东西来，犀牛调整了老半天却总是黑鸦鸦的一片，直到我把球给调到下面才利用LED灯光来拍到一些比较清楚的东西，也就是放在前面的照度计，不知道是犀牛太笨调错设置什么的，以下是犀牛的设置，不知道那里错了，preview总是一片黑，我还把HC-90的Super Night Shot打开放在它边边，看会不会比较好一点，可惜它可能没这功能吧，结论还是黑．<BR><BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-c038761830a0cfef8041716112915337.jpg"><BR>如果是犀牛设置错误，那这里如果有D-Link的开发人员，还烦请教一下犀牛怎么设置，还是说犀牛误会了它在低照度下的意义？<BR><BR>犀牛就简单的以文字和图片介绍一下设置6620G操作的细部选项．<BR><BR>－－Network－－<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-926a77c9015208875d5f187042872454.jpg"><BR>这里顾名思义就是设置网络相关的功能，能不能控6620G来做远程监控，就是这里了，包含有线和无线的设置都在这里，在安全编码部分支持WEP/WPA-PSK．<BR><BR>－－Mail&FTP－－<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-de54ea6485df09e1286ed06e258e64e5.jpg"><BR>工作很忙不能有事没事盯著帧看怎么办，没事咱们可以设置让6620G经由Mail或FTP发送图片给您，可以有很多Mail可以使用，反正现在免费的mail那么多，若真没有其他的Mail能用，没事贴PM给犀牛，犀牛有一堆鸡妹儿（Gmail)的邀请可以申请的，若自己有架FTP Server就可以设置它上传到FTP上去．<BR><BR>－－DDNS&UPnP－－<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-e78ab0dff9bd07d7dbf6647db3c86f35.jpg"><BR>我们可以为6620G申请一个Domain Name，以方便我们直接对6620G连线，毕竟现在有许多人都是用动态IP，三不五时ISP就会换一下IP，有了DDNS就可以不怕不知道6620G的IP是多少了，它会自动上去该服务站点随时更新变动后的IP，如果自己家的WRT己经有启动这个服务的话，就可以在WRT上设置好虚拟服务器这样一样可以方便的连回6620G罗．<BR><BR>－－Video－－<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-06001e2bc7ce8ffd005938da6bff171c.jpg"><BR>这里就是设置传输质量的地方，可以看到犀牛所设置的质量是很高的，己经是6620G最好的质量输出了，不过呢要考虑到一点，因为犀牛的测试完全是在802.11g的Wireless LAN里测试，所以质量调高是无所谓，倘若需要从WAN连接到6620G，就得考虑到自家的上传带宽与你所在位置的连线带宽罗，毕竟能够及时监看才是重点，再者6620G它本身有CPU和内存，也内置Mpeg4压缩功能，所以可以直接快速的把影像发送出去，还能保持可够识别的质量．<BR><BR>－－Audio－－<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-592c18f3788212ca56db631d4d2322c3.jpg"><BR>6620G本身内置的MIC感度相当高，客厅的猫叫声都能听到（6620G的测试位置算是开伙区），当然也是可以调整它的音质，不过呢这种东西犀牛觉得能够听的清楚就好，例如小孩哭声，或有没有宵小的讲话声，有时候影像无法及时的时候，还可以有声音来了解现场情况．<BR><BR>－－Image Setting－－<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-b50f662f5d899bd7ac82ec8c4d2f3674.jpg"><BR>这里就是调整影像的对比之类的设置，大家应该都知道是什么．<BR><BR>－－CCD Setting－－<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-e3f8159ef21d0a09e7836f8dc935bf5c.jpg"><BR>这里在上面就有看过了吧，就是在调整快门，和启动Low Lux功能的地方，还有白平衡或Low Lux下切换成黑白模式．<BR><BR>－－Motion Detection－－<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-ee1400638721677281684791f4488776.jpg"><BR>这也是6620G酷的地方之一，这就是所谓的操作检测模式，如果我们是定点录像的话，没人在家的话，除了闹鬼外应该不会有移动的物体出现，那是不是会长时间都录同一个帧呢？没错这也是有时候很多人懒的回去看tape的原因之一，因为要快转倒退才能发现有不一样的地方，这时候这个功能就很好用啦，当它在帧经过一段时间没变化时，它就会停止录像一方面也省硬盘空间，如果6620G发现到有移动物体时，它就会启动录像或拍照，至於原理是什么，上Google查就会很多数据了，主要是做图片的比对，当然罗～如果你让6620G是自动监看模式（就是球体会左右动），那这个功能就没用了．<BR><BR>－－Camera Control－－<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-adb53168a6e45a307911037cfad8b1c0.jpg"><BR>这里也是个相当方便的功能，记不记得WEB控制介面，我们想看那里就要控上下左右，放大缩小来定位吧，这里呢～我们可以事先把位置给决定好，再给它取个名字，如果我把”犀牛房门”这名字的位置定位在我的房间口，即使6620G现在的镜头是正对可乐车，我只要一选择”犀牛房门”，它就会自动的移到我们预先所设置好的监看位置，这是不是很方便呢．<BR><BR>－－Site Survey－－<BR><IMG src="http://attach.mobile01.com/attach/200605/mobile01-b967c7694ebf3ce1f7aef77533a9e9e6.jpg"><BR>这里是在决定连线的无线网络，这个呢当然不能乱连罗，从图上可以看到有数台AP，全是犀牛房间的AP，当前数量共有六部，因为犀牛最近在编译版无线网络的LAB，所以需要很多这些玩具，说到这里我要感谢一下我那位笨蛋朋友屎提粪先生，他支持了犀牛不少设备．<BR><BR><BR>看到这里，犀牛还有很多功能还没介绍出来呢，不过大多己经是更高级的功能了，那些会在下一个主题”软件介绍篇”中更详细的介绍，包含IP surveillance可以控制16颗6620G，我仅一颗能用，不过这些基本功能是不是己经让你们比较能够想像它高贵的地方了吗？<BR><BR>基本功能篇总结：<BR><BR>呼～～这真是大长篇，虽然图片还是占了大多数，这颗我玩了快20天，其中有一个多星期我都忙著其他的事，学期末的一些报告啊什么的，远在美国的犀牛太座也用远程监看，盯著她心爱的犀牛在干嘛，还有看看杂乱的牛舍，没法子犀牛的怪家私太多书又多，房间又不大，只好往空中发展，这颗DCS-6620G无线网络摄像机能够应用的范围其实相当的广，放在家里可以当保全摄像机，放在婴儿房可以随时查看baby的状况，声音影像都能够同步发送，放在Office呢，嘿嘿～～若以后你们在Office看到这颗东西，别怀疑．．．它不会单纯拿来抓小偷用的，要聊天或讲上司坏话者请自爱，挖鼻孔或打混摸鱼者请小心，因为你们的一举一动很可能都会被6620G看在眼里，另外咱们来谈谈犀牛觉得它该改进的地方．．．<BR><BR>１．首先如此漂亮的眼睛，竟然没有设计镜头保护盖？包装时仅一块泡棉盖著？面对如此高价的设备，我想一个镜头保护盖是必要的．<BR><BR>２．这可能也是Wireless产品的通病，温度接近５５度～６０度，整体设置仅底座的材质会散热，若是放置在桌上这样是不好散热的．<BR><BR>３．偶尔～WEB控制介面的反应时间会过慢或卡住不动，重新启动才正常，但又不是热当（影像持续在传输，单纯802.11g Wireless LAN的环境下，并无经由WAN连线），所以是不是会在新版的Firmware改善这个问题，还请D-Link Check看看．<BR><BR>４．手持遥控器对它做控制操作时，反应似乎有点笨，如果从左按到右是需要连续按按钮的话（不是按住不动，像玩雷电要连打的那种按法），那这个遥控器按键设计不是太好按，而且这种按法对遥控器的耐用度还有待考量．<BR><BR>５．低照度的问题，这点我想先看看有没有D-Link的开发人员来响应这问题后，再把它当做是一个需要改进的地方好了．<BR><BR>６．这种需要灵活放置的高价设备竟然没有PoE？虽然它号称是”无线摄像机”，但是如果有些场合不
