<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[Cxty's Blog]]></title>
<link>http://www.openx.cn/</link>
<description><![CDATA[嘻嚓啼歪的小窝窝]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog2 v2.4]]></copyright>
<webMaster><![CDATA[cxty@qq.com(嘻嚓啼歪)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>Cxty&#39;s Blog</title> 
	<url>http://www.openx.cn/images/logos.gif</url> 
	<link>http://www.openx.cn/</link> 
	<description>Cxty&#39;s Blog</description> 
</image>

			<item>
			<link>http://www.openx.cn/default.asp?id=473</link>
			<title><![CDATA[“百度身边” 有感]]></title>
			<author>cxty@qq.com(cxty)</author>
			<category><![CDATA[点点滴滴]]></category>
			<pubDate>Mon,08 Nov 2010 22:08:12 +0800</pubDate>
			<guid>http://www.openx.cn/default.asp?id=473</guid>	
		<description><![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/>]]></description>
		</item>
		
			<item>
			<link>http://www.openx.cn/default.asp?id=472</link>
			<title><![CDATA[[转]重装系统后ORACLE的恢复的几种方法]]></title>
			<author>cxty@qq.com(cxty)</author>
			<category><![CDATA[网络开发]]></category>
			<pubDate>Fri,28 Aug 2009 11:20:11 +0800</pubDate>
			<guid>http://www.openx.cn/default.asp?id=472</guid>	
		<description><![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/>]]></description>
		</item>
		
			<item>
			<link>http://www.openx.cn/default.asp?id=471</link>
			<title><![CDATA[正准备弄个语音识别的，转个材料“.Net平台下开发中文语音应用程序”]]></title>
			<author>cxty@qq.com(cxty)</author>
			<category><![CDATA[移动开发]]></category>
			<pubDate>Fri,10 Jul 2009 14:24:50 +0800</pubDate>
			<guid>http://www.openx.cn/default.asp?id=471</guid>	
		<description><![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>]]></description>
		</item>
		
			<item>
			<link>http://www.openx.cn/default.asp?id=470</link>
			<title><![CDATA[很久没更新了，发一个delphi的]]></title>
			<author>cxty@qq.com(cxty)</author>
			<category><![CDATA[网络开发]]></category>
			<pubDate>Wed,06 May 2009 17:13:21 +0800</pubDate>
			<guid>http://www.openx.cn/default.asp?id=470</guid>	
		<description><![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;);]]></description>
		</item>
		
			<item>
			<link>http://www.openx.cn/default.asp?id=469</link>
			<title><![CDATA[改进电子商务网站易用性的10个方法]]></title>
			<author>cxty@qq.com(cxty)</author>
			<category><![CDATA[网络开发]]></category>
			<pubDate>Mon,10 Nov 2008 09:46:31 +0800</pubDate>
			<guid>http://www.openx.cn/default.asp?id=469</guid>	
		<description><![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>]]></description>
		</item>
		
			<item>
			<link>http://www.openx.cn/default.asp?id=468</link>
			<title><![CDATA[Windows Mobile 中开关 WIFI 的“通用”代码]]></title>
			<author>cxty@qq.com(cxty)</author>
			<category><![CDATA[移动开发]]></category>
			<pubDate>Wed,13 Aug 2008 15:04:51 +0800</pubDate>
			<guid>http://www.openx.cn/default.asp?id=468</guid>	
		<description><![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>]]></description>
		</item>
		
			<item>
			<link>http://www.openx.cn/default.asp?id=467</link>
			<title><![CDATA[PPC中检查某程序是否运行 ]]></title>
			<author>cxty@qq.com(cxty)</author>
			<category><![CDATA[移动开发]]></category>
			<pubDate>Mon,28 Jul 2008 16:19:31 +0800</pubDate>
			<guid>http://www.openx.cn/default.asp?id=467</guid>	
		<description><![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 />]]></description>
		</item>
		
			<item>
			<link>http://www.openx.cn/default.asp?id=466</link>
			<title><![CDATA[window mobile 5.0截获来电]]></title>
			<author>cxty@qq.com(cxty)</author>
			<category><![CDATA[移动开发]]></category>
			<pubDate>Mon,28 Jul 2008 16:18:39 +0800</pubDate>
			<guid>http://www.openx.cn/default.asp?id=466</guid>	
		<description><![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>]]></description>
		</item>
		
			<item>
			<link>http://www.openx.cn/default.asp?id=465</link>
			<title><![CDATA[遗忘的命令]]></title>
			<author>cxty@qq.com(cxty)</author>
			<category><![CDATA[杂七杂八]]></category>
			<pubDate>Wed,02 Jul 2008 16:34:05 +0800</pubDate>
			<guid>http://www.openx.cn/default.asp?id=465</guid>	
		<description><![CDATA[转化磁盘格式<br/>format e: /fs:fat32<br/>format e: /fs:ntfs]]></description>
		</item>
		
			<item>
			<link>http://www.openx.cn/default.asp?id=464</link>
			<title><![CDATA[获得国内中国电信,网通,铁通的最新ip段的方法]]></title>
			<author>cxty@qq.com(cxty)</author>
			<category><![CDATA[网络开发]]></category>
			<pubDate>Thu,19 Jun 2008 09:12:10 +0800</pubDate>
			<guid>http://www.openx.cn/default.asp?id=464</guid>	
		<description><![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>]]></description>
		</item>
		
</channel>
</rss>
