<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Voland.com.cn</title>
	<atom:link href="http://www.voland.com.cn/feed" rel="self" type="application/rss+xml" />
	<link>http://www.voland.com.cn</link>
	<description>人生百年,诸事记之</description>
	<lastBuildDate>Mon, 30 Aug 2010 01:50:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>zh</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>win7无法安装Office2003的解决办法</title>
		<link>http://www.voland.com.cn/how-to-install-office2003-in-windows-7win7-solution-can-not-install-office2003</link>
		<comments>http://www.voland.com.cn/how-to-install-office2003-in-windows-7win7-solution-can-not-install-office2003#comments</comments>
		<pubDate>Mon, 30 Aug 2010 01:42:55 +0000</pubDate>
		<dc:creator>Nortan</dc:creator>
				<category><![CDATA[一起分享]]></category>
		<category><![CDATA[常用]]></category>
		<category><![CDATA[常用技术]]></category>
		<category><![CDATA[Win7]]></category>
		<category><![CDATA[windows 7]]></category>

		<guid isPermaLink="false">http://www.voland.com.cn/?p=529</guid>
		<description><![CDATA[前些日子给朋友在win7上安装office2003时出现错误（实际安装2007也会出现类似错误），错误的提示信息大概是由于权限问题，没有办法写入文件到相关的目录，所以可以肯定问题的根本原因是Win7的账户控制。由于Win7账户安全系数加强，以至于写入核心文件夹程序都需要有权限。所以解决问题的关键是给指定的文件夹及用户以写入权限。
解决方案与步骤如下：
1、桌面上右键点击计算机，选中“管理”菜单。
2、进入以后选择“本地用户和组”，并继续选择“用户”
3、看到对应的右边窗口中找到一个名为Administrator的用户，并右键点击“属性”，将“账户已禁用”前面的勾去掉。
4、从开始菜单中选择“切换用户”，以刚才的那个Administrator用户进入
（走到这一步才算是真正以计算机管理员的身份进入Win7）
5、在文件夹选项中选择“显示隐藏文件、文件夹和驱动器”并确定
6、找到ProgramData\Microsoft\Windows\开始菜单\程序，右键点击“程序”文件夹，并选择“属性”
（这一步是定位对应的权限文件夹位置，接下来就是要修改权限了）
7、找到“安全”选项卡，并单击“编辑”，在弹出的对话框中选择Everyone，并将下面所有的选项打钩，最后一路确定。
（到这里我们才算是将对应的开始菜单权限修改完毕）
此时我们再运行安装程序，就应该不会出现错误了。
]]></description>
			<content:encoded><![CDATA[<p>前些日子给朋友在win7上安装office2003时出现错误（实际安装2007也会出现类似错误），错误的提示信息大概是由于权限问题，没有办法写入文件到相关的目录，所以可以肯定问题的根本原因是Win7的账户控制。由于Win7账户安全系数加强，以至于写入核心文件夹程序都需要有权限。所以解决问题的关键是给指定的文件夹及用户以写入权限。</p>
<p>解决方案与步骤如下：<span id="more-529"></span><br />
1、桌面上右键点击计算机，选中“管理”菜单。<br />
2、进入以后选择“本地用户和组”，并继续选择“用户”<br />
3、看到对应的右边窗口中找到一个名为Administrator的用户，并右键点击“属性”，将“账户已禁用”前面的勾去掉。<br />
4、从开始菜单中选择“切换用户”，以刚才的那个Administrator用户进入<br />
（走到这一步才算是真正以计算机管理员的身份进入Win7）<br />
5、在文件夹选项中选择“显示隐藏文件、文件夹和驱动器”并确定<br />
6、找到ProgramData\Microsoft\Windows\开始菜单\程序，右键点击“程序”文件夹，并选择“属性”<br />
（这一步是定位对应的权限文件夹位置，接下来就是要修改权限了）<br />
7、找到“安全”选项卡，并单击“编辑”，在弹出的对话框中选择Everyone，并将下面所有的选项打钩，最后一路确定。<br />
（到这里我们才算是将对应的开始菜单权限修改完毕）<br />
此时我们再运行安装程序，就应该不会出现错误了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.voland.com.cn/how-to-install-office2003-in-windows-7win7-solution-can-not-install-office2003/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>安装win7旗舰版系统后程序激活办法</title>
		<link>http://www.voland.com.cn/after-the-installation-process-win7-ultimate-system-activation-means</link>
		<comments>http://www.voland.com.cn/after-the-installation-process-win7-ultimate-system-activation-means#comments</comments>
		<pubDate>Sat, 07 Aug 2010 02:03:01 +0000</pubDate>
		<dc:creator>Nortan</dc:creator>
				<category><![CDATA[常用]]></category>

		<guid isPermaLink="false">http://www.voland.com.cn/?p=511</guid>
		<description><![CDATA[　
一、首先下载激活工具 
二、双击激活工具，出来界面后，直接点击“激活”按钮，这个过程可能要1到2分钟。
常见问题：
１》、激活时弹出“系统保留分区未分配驱动器号”的提示，说明系统安装时创建了系统隐藏分区（一般都会有这个分区），我们为保留分区添加驱动器号后才能正常激活。
以下为保留分区添加驱动器号的操作步骤：
1.右键&#8221;计算机&#8221;—&#62;&#8221;管理&#8221;  打开“计算机管理”：

2.点击左边的“磁盘管理”,在保留分区上右键“更改驱动器号和路径”，然后添加一个驱动器号(任意)：


PS：激活后保留分区的驱动器号就可以删除了(注意：不可以删除或者格式化分区，否则无法进入系统！)
2》、激活时弹出“XX盘请插入磁盘的提示”？(或类似提示)
解答：这部分用户部分是在虚拟机下做的测试才会有这提示的，请确保虚拟机“CD/DVD”选项上“connect”和“connect at power on”打上勾了；另外其它使用者如果也有此提示点击“继续”就行了。也可能是由于其它盘没有格式化。
３》、是不是适用所有计算机？
解答：HP和DELL部分机器由于BIOS特殊，可能不被激活.目前也没有适用的方法,部分用户可能黑屏.使用激活工具激活重启后黑屏的解决办法.
方法一:用PE启动后删除C盘下的grldr文件就行了。
方法二：用安装光盘启动系统进入dos环境下输入以下内容并重启就行：
attrib X:\grldr -h -s -r
del X:\grldr
]]></description>
			<content:encoded><![CDATA[<p>　<br />
<strong>一、首先下载激活工具 </strong><br />
<strong>二、双击激活工具，出来界面后，直接点击“激活”按钮，这个过程可能要1到2分钟</strong>。<br />
<strong>常见问题</strong>：<br />
１》、激活时弹出“系统保留分区未分配驱动器号”的提示，说明系统安装时创建了系统隐藏分区（一般都会有这个分区），我们为保留分区添加驱动器号后才能正常激活。</p>
<p>以下为保留分区添加驱动器号的操作步骤：<br />
1.右键&#8221;计算机&#8221;—&gt;&#8221;管理&#8221;  打开“计算机管理”：<br />
<img class="aligncenter size-full wp-image-518" title="20108794230" src="http://www.voland.com.cn/wp-content/uploads/2010/08/20108794230.jpg" alt="" width="265" height="267" /></p>
<p>2.点击左边的“磁盘管理”,在保留分区上右键“更改驱动器号和路径”，然后添加一个驱动器号(任意)：<br />
<img class="aligncenter size-full wp-image-519" title="无标题" src="http://www.voland.com.cn/wp-content/uploads/2010/08/无标题.bmp" alt="" /><br />
<img class="aligncenter size-full wp-image-520" title="201087942292" src="http://www.voland.com.cn/wp-content/uploads/2010/08/201087942292.jpg" alt="" width="539" height="296" /></p>
<p>PS：激活后保留分区的驱动器号就可以删除了(注意：不可以删除或者格式化分区，否则无法进入系统！)</p>
<p>2》、激活时弹出“XX盘请插入磁盘的提示”？(或类似提示)<br />
解答：这部分用户部分是在虚拟机下做的测试才会有这提示的，请确保虚拟机“CD/DVD”选项上“connect”和“connect at power on”打上勾了；另外其它使用者如果也有此提示点击“继续”就行了。也可能是由于其它盘没有格式化。</p>
<p>３》、是不是适用所有计算机？<br />
解答：HP和DELL部分机器由于BIOS特殊，可能不被激活.目前也没有适用的方法,部分用户可能黑屏.使用激活工具激活重启后黑屏的解决办法.<br />
方法一:用PE启动后删除C盘下的grldr文件就行了。<br />
方法二：用安装光盘启动系统进入dos环境下输入以下内容并重启就行：<br />
attrib X:\grldr -h -s -r<br />
del X:\grldr</p>
]]></content:encoded>
			<wfw:commentRss>http://www.voland.com.cn/after-the-installation-process-win7-ultimate-system-activation-means/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Google analytics脚本异步加载，加快访问速度</title>
		<link>http://www.voland.com.cn/google-analytics-script-asynchronous-load-speed-up-page-access-speed</link>
		<comments>http://www.voland.com.cn/google-analytics-script-asynchronous-load-speed-up-page-access-speed#comments</comments>
		<pubDate>Mon, 26 Jul 2010 05:50:14 +0000</pubDate>
		<dc:creator>Nortan</dc:creator>
				<category><![CDATA[Web 界面]]></category>
		<category><![CDATA[一起分享]]></category>
		<category><![CDATA[常用]]></category>
		<category><![CDATA[Google analytics]]></category>

		<guid isPermaLink="false">http://www.voland.com.cn/?p=501</guid>
		<description><![CDATA[Google analytics本身提供的脚本都是在页面全部加载完成后才会执行，如果网络情况不太好，这不仅影响统计，也会影响到访问速度，所以使用Google analytics，最完美的办法就是实现脚本异步加载，来加快页面访问速度。如果你现在还在使用google analytics，可以用如下代码替代原来的统计代码，实现异步统计：

var _gaq = _gaq &#124;&#124; &#91;&#93;;
_gaq.push&#40;&#91;'_setAccount', 'UA-XXXXX-X'&#93;&#41;;
_gaq.push&#40;&#91;'_trackPageview'&#93;&#41;;
&#160;
&#40;function&#40;&#41; &#123;
var ga = document.createElement&#40;'script'&#41;;
ga.src = &#40;'https:' == document.location.protocol ?
    'https://ssl' : 'http://www'&#41; +
    '.google-analytics.com/ga.js';
ga.setAttribute&#40;'async', 'true'&#41;;
document.documentElement.firstChild.appendChild&#40;ga&#41;;
&#125;&#41;&#40;&#41;;

很明显，需要把UA-XXXXX-X替换成你的ID就成了。

参考文档如下：
*  http://www.stevesouders.com/blog/2009/12/01/google-analytics-goes-async/
* http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/
]]></description>
			<content:encoded><![CDATA[<p>Google analytics本身提供的脚本都是在页面全部加载完成后才会执行，如果网络情况不太好，这不仅影响统计，也会影响到访问速度，所以使用Google analytics，最完美的办法就是实现脚本异步加载，来加快页面访问速度。如果你现在还在使用google analytics，可以用如下代码替代原来的统计代码，实现异步统计：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> _gaq <span style="color: #339933;">=</span> _gaq <span style="color: #339933;">||</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
_gaq.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'_setAccount'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'UA-XXXXX-X'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
_gaq.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'_trackPageview'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> ga <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'script'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
ga.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'https:'</span> <span style="color: #339933;">==</span> document.<span style="color: #660066;">location</span>.<span style="color: #660066;">protocol</span> <span style="color: #339933;">?</span>
    <span style="color: #3366CC;">'https://ssl'</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">'http://www'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span>
    <span style="color: #3366CC;">'.google-analytics.com/ga.js'</span><span style="color: #339933;">;</span>
ga.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'async'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'true'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
document.<span style="color: #660066;">documentElement</span>.<span style="color: #660066;">firstChild</span>.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>ga<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>很明显，需要把UA-XXXXX-X替换成你的ID就成了。</p>
<p><span id="more-501"></span></p>
<p>参考文档如下：<br />
*  <a href="http://www.stevesouders.com/blog/2009/12/01/google-analytics-goes-async/" target="_blank">http://www.stevesouders.com/blog/2009/12/01/google-analytics-goes-async/</a><br />
* <a href="http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/" target="_blank">http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.voland.com.cn/google-analytics-script-asynchronous-load-speed-up-page-access-speed/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>一个简单的Ajax封装类</title>
		<link>http://www.voland.com.cn/a-sample-ajax-class-a-simple-wrapper-class-ajax</link>
		<comments>http://www.voland.com.cn/a-sample-ajax-class-a-simple-wrapper-class-ajax#comments</comments>
		<pubDate>Thu, 01 Jul 2010 03:29:46 +0000</pubDate>
		<dc:creator>Nortan</dc:creator>
				<category><![CDATA[Web 界面]]></category>
		<category><![CDATA[常用]]></category>
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://www.voland.com.cn/?p=498</guid>
		<description><![CDATA[在一些小项目中,可能没有使用Jquery这样的js框架,但需要一些js常用的功能,如ajax请求,邮件校验,字符串去空格等,这里封装了一个ajax请求类,在小项目中比较适用.后面给出了一个使用例子.

//类名：AJAX
//创建方法：var ajaxobj=new AJAX;，如果创建失败则返回false
//属性：method  -  请求方法，字符串，POST或者GET，默认为POST
//　　　url         -  请求URL，字符串，默认为空
//　　　async     -  是否异步，true为异步，false为同步，默认为true
//　　　content -  请求的内容，如果请求方法为POST需要设定此属性，默认为空
//　　　callback  - 回调函数，即返回响应内容时调用的函数，默认为直接返回，回调函数有一个参数为XMLHttpRequest对象，即定义回调函数时要这样：function mycallback(xmlobj)
//方法：send()     -  发送请求，无参数
&#160;
function AJAXRequest&#40;&#41; &#123;
	var xmlObj = false;
	var CBfunc,ObjSelf;
	ObjSelf=this;
	try &#123; xmlObj=new XMLHttpRequest; &#125;
	catch&#40;e&#41; &#123;
		try &#123; xmlObj=new ActiveXObject&#40;&#34;MSXML2.XMLHTTP&#34;&#41;; &#125;
		catch&#40;e2&#41; &#123;
			try [...]]]></description>
			<content:encoded><![CDATA[<p>在一些小项目中,可能没有使用Jquery这样的js框架,但需要一些js常用的功能,如ajax请求,邮件校验,字符串去空格等,这里封装了一个ajax请求类,在小项目中比较适用.后面给出了一个使用例子.<span id="more-498"></span></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//类名：AJAX</span>
<span style="color: #006600; font-style: italic;">//创建方法：var ajaxobj=new AJAX;，如果创建失败则返回false</span>
<span style="color: #006600; font-style: italic;">//属性：method  -  请求方法，字符串，POST或者GET，默认为POST</span>
<span style="color: #006600; font-style: italic;">//　　　url         -  请求URL，字符串，默认为空</span>
<span style="color: #006600; font-style: italic;">//　　　async     -  是否异步，true为异步，false为同步，默认为true</span>
<span style="color: #006600; font-style: italic;">//　　　content -  请求的内容，如果请求方法为POST需要设定此属性，默认为空</span>
<span style="color: #006600; font-style: italic;">//　　　callback  - 回调函数，即返回响应内容时调用的函数，默认为直接返回，回调函数有一个参数为XMLHttpRequest对象，即定义回调函数时要这样：function mycallback(xmlobj)</span>
<span style="color: #006600; font-style: italic;">//方法：send()     -  发送请求，无参数</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> AJAXRequest<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> xmlObj <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> CBfunc<span style="color: #339933;">,</span>ObjSelf<span style="color: #339933;">;</span>
	ObjSelf<span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span> xmlObj<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> XMLHttpRequest<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span> xmlObj<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> ActiveXObject<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;MSXML2.XMLHTTP&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
		<span style="color: #000066; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span>e2<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span> xmlObj<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> ActiveXObject<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Microsoft.XMLHTTP&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
			<span style="color: #000066; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span>e3<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> xmlObj<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>xmlObj<span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">method</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;POST&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">url</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">async</span><span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">content</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">callback</span><span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>cbobj<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">send</span><span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">method</span><span style="color: #339933;">||!</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">url</span><span style="color: #339933;">||!</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">async</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		xmlObj.<span style="color: #000066;">open</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">method</span><span style="color: #339933;">,</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">url</span><span style="color: #339933;">,</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">async</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">method</span><span style="color: #339933;">==</span><span style="color: #3366CC;">&quot;POST&quot;</span><span style="color: #009900;">&#41;</span> xmlObj.<span style="color: #660066;">setRequestHeader</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Content-Type&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;application/x-www-form-urlencoded&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		xmlObj.<span style="color: #660066;">onreadystatechange</span><span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>xmlObj.<span style="color: #660066;">readyState</span><span style="color: #339933;">==</span><span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>xmlObj.<span style="color: #000066;">status</span><span style="color: #339933;">==</span><span style="color: #CC0000;">200</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					ObjSelf.<span style="color: #660066;">callback</span><span style="color: #009900;">&#40;</span>xmlObj<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">method</span><span style="color: #339933;">==</span><span style="color: #3366CC;">&quot;POST&quot;</span><span style="color: #009900;">&#41;</span> xmlObj.<span style="color: #660066;">send</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">content</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">else</span> xmlObj.<span style="color: #660066;">send</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>使用例子如下</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> deleteLogicCompany<span style="color: #009900;">&#40;</span>logicCompanyid<span style="color: #339933;">,</span>userid<span style="color: #339933;">,</span>uName<span style="color: #339933;">,</span>cName<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">confirm</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">&quot;你要删除分给 '&quot;</span><span style="color: #339933;">+</span>uName<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;' 的 '&quot;</span><span style="color: #339933;">+</span>cName<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;' 吗?<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>        删除数据后,不可恢复,请注意!!!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> ajaxobj<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> AJAXRequest<span style="color: #339933;">;</span>    <span style="color: #006600; font-style: italic;">// 创建AJAX对象</span>
		ajaxobj.<span style="color: #660066;">method</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;POST&quot;</span><span style="color: #339933;">;</span>   <span style="color: #006600; font-style: italic;">// 设置请求方式为GET</span>
		ajaxobj.<span style="color: #660066;">url</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;../reportJsp/16ds/deleLogicCompany.jsp&quot;</span>  <span style="color: #006600; font-style: italic;">// 请求的URL</span>
		ajaxobj.<span style="color: #660066;">content</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;logicCompanyid=&quot;</span><span style="color: #339933;">+</span>logicCompanyid<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&amp;userid=&quot;</span><span style="color: #339933;">+</span>userid
		ajaxobj.<span style="color: #660066;">callback</span><span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>xmlobj<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #003366; font-weight: bold;">var</span> value <span style="color: #339933;">=</span> xmlobj.<span style="color: #660066;">responseText</span><span style="color: #339933;">;</span><span style="color: #006600; font-style: italic;">//这里返回的值要看你的请求返回什么东西了.</span>
			<span style="color: #003366; font-weight: bold;">var</span> isRepeat <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>value <span style="color: #339933;">==</span> <span style="color: #3366CC;">'_yes'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span>isRepeat <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'数据已经删除'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				window.<span style="color: #660066;">location</span>.<span style="color: #660066;">reload</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
				<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'数据删除失败'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
	ajaxobj.<span style="color: #660066;">send</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #006600; font-style: italic;">// 发送请求</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.voland.com.cn/a-sample-ajax-class-a-simple-wrapper-class-ajax/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>java web开发框架组合所需要的jar包</title>
		<link>http://www.voland.com.cn/java-web-development-framework-in-the-popular-combination-of-the-required-jar-package</link>
		<comments>http://www.voland.com.cn/java-web-development-framework-in-the-popular-combination-of-the-required-jar-package#comments</comments>
		<pubDate>Wed, 02 Jun 2010 01:28:56 +0000</pubDate>
		<dc:creator>Nortan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[软件开发]]></category>
		<category><![CDATA[ibatis]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[struts2]]></category>

		<guid isPermaLink="false">http://www.voland.com.cn/?p=495</guid>
		<description><![CDATA[现在使用java开发项目,比较流行的组合是struts + ibatis +spring ,这个组合现在大伙都用2.x版本,struts是非常好的web开发框架,而ibatis则负责对数据库的直接访问,spring负责业务层,这里并没有提到hibernate,不是因为它不强大,而是因为太强大,我们有时不太好驾驭它,用得不好,效率会非常的低,所以我决定放弃它.
如下给出的组合可能版本会有些变动,不过只要不是大版本升级,应该都可以匹配上,所以打不到想要的包时,相差不大都可以用.
struts 2应用只需要下列几个必须的jar：
commons-logging-1.0.4.jar
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.11.jar
xwork-2.0.4.jar
ibatis2 应用只需要下列几个必须的jar：
commons-collections.jar
commons-dbcp.jar
commons-pool.jar
ibatis-2.3.0.677.jar
mysql-connector-java-5.0.6.jar //这个数据库驱动,会根据你的数据库类型有所变化
spring2应用只需要下列几个必须的jar：
spring.jar
struts2-spring-plugin-2.0.11.2.jar
dwr应用只需要下列一个必须的jar：
dwr.jar
文件上传应用只需要下列几个必须的jar：
commons-fileupload-1.2.jar
commons-io-1.3.2.jar
其它插件:（只在开发的时候用到，发布时可以踢掉，tomcat自带。）
jsp-api.jar
servlet-api.jar
log4j-1.2.15.jar
]]></description>
			<content:encoded><![CDATA[<p>现在使用java开发项目,比较流行的组合是struts + ibatis +spring ,这个组合现在大伙都用2.x版本,struts是非常好的web开发框架,而ibatis则负责对数据库的直接访问,spring负责业务层,这里并没有提到hibernate,不是因为它不强大,而是因为太强大,我们有时不太好驾驭它,用得不好,效率会非常的低,所以我决定放弃它.</p>
<p>如下给出的组合可能版本会有些变动,不过只要不是大版本升级,应该都可以匹配上,所以打不到想要的包时,相差不大都可以用.<span id="more-495"></span></p>
<p>struts 2应用只需要下列几个必须的jar：<br />
commons-logging-1.0.4.jar<br />
freemarker-2.3.8.jar<br />
ognl-2.6.11.jar<br />
struts2-core-2.0.11.jar<br />
xwork-2.0.4.jar</p>
<p>ibatis2 应用只需要下列几个必须的jar：<br />
commons-collections.jar<br />
commons-dbcp.jar<br />
commons-pool.jar<br />
ibatis-2.3.0.677.jar<br />
mysql-connector-java-5.0.6.jar //这个数据库驱动,会根据你的数据库类型有所变化</p>
<p>spring2应用只需要下列几个必须的jar：<br />
spring.jar<br />
struts2-spring-plugin-2.0.11.2.jar</p>
<p>dwr应用只需要下列一个必须的jar：<br />
dwr.jar</p>
<p>文件上传应用只需要下列几个必须的jar：<br />
commons-fileupload-1.2.jar<br />
commons-io-1.3.2.jar</p>
<p>其它插件:（只在开发的时候用到，发布时可以踢掉，tomcat自带。）<br />
jsp-api.jar<br />
servlet-api.jar<br />
log4j-1.2.15.jar</p>
]]></content:encoded>
			<wfw:commentRss>http://www.voland.com.cn/java-web-development-framework-in-the-popular-combination-of-the-required-jar-package/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>免费并支持私有库的代码管理平台</title>
		<link>http://www.voland.com.cn/free-and-support-the-private-library-of-code-management-platform</link>
		<comments>http://www.voland.com.cn/free-and-support-the-private-library-of-code-management-platform#comments</comments>
		<pubDate>Tue, 25 May 2010 03:04:38 +0000</pubDate>
		<dc:creator>Nortan</dc:creator>
				<category><![CDATA[一起分享]]></category>
		<category><![CDATA[常用]]></category>
		<category><![CDATA[软件开发]]></category>

		<guid isPermaLink="false">http://www.voland.com.cn/?p=491</guid>
		<description><![CDATA[我个人了解到免费并支持私有库的代码管理平台有Unfuddle，Bitbucket，Sprintloops和Beantalk，这里说说四个平台作为代码托管平台的优缺点。大家可以根据需要进行选择.
Unfuddle 是提供软件项目管理与代码托管的服务平台，代码托管支持两种VCS：Subversion与Git。Unfuddle与Google Code一样支持两种版本控制系统；而与Google Code比较，Unfuddle除了VCS上支持的不同外（Google Code支持Subver与Mercurial），还有它支持private库。Unfuddle免费的Plan提供200mb的存储空间，可创建无限个代码库(Repository)。但Project只能有一个，同时代码库必须与Project绑定才能使用（激活状态），这意味这免费的Plan实际上只能有一个代码库处于激活状态，而其他的皆属于archived状态。另外免费的Plan也不支持SSL连接和文件附件。所以想要项目管理与代码托管在同一个平台的用户是不错的选择,不过这个服务器速度在国内会差一些.
Bitbucket未提供项目管理，只提供代码托管平台，使用的VCS是Mercurial。免费的Plan挺强大的：1GB的存储空间，无限制Public库和1个私有库，HTTP/SSL连接支持，第三方服务集成支持，邮件发送支持。最低收费（$5/月）的Plan和免费的Plan的差别在于空间多出1.5G，private库多出4个以及支持Cname服务。总的来说，若熟悉 Mercurial，需要大的空间,Bitcket应该是个不错的选择。测试速度也不错.
springloops打出的口号是唯一一家专注于Web开发团队源代码管理的平台。他支持在代码提交后通过FTP/sFTP的方式直接发布到服务器上，集成Basecamp，使用Subversion。免费的 Plan提供100m的空间，无限制项目，但同时只能有3个项目处于激活状态；可通过FTP/sFTP直接发布，但不支持在commit后发布；无限制合作人员；无SSL支持；无域名绑定支持。测试速度不错
Beantalk同Unfuddle一样支持Subversion与 Git两种版本控制系统。他的页面设计很精美，同样可通过FTP与sFTP发布项目，可集成Basecamp，Twitter，Campfire等第三方服务，可对HTML页面进行编辑预览。免费的Plan注册链接比较隐秘，放置于收费Plan的下方一行字。提供100m的存储空间，3个用户。由于还未了解Mercurial，而Subversion集中式的控制机制让我觉得很受控制，所以还是以支持Git的平台为首选。测试速度不错
]]></description>
			<content:encoded><![CDATA[<p>我个人了解到免费并支持私有库的代码管理平台有Unfuddle，Bitbucket，Sprintloops和Beantalk，这里说说四个平台作为代码托管平台的优缺点。大家可以根据需要进行选择.</p>
<p><a href="http://unfuddle.com/" target="_blank">Unfuddle</a> 是提供软件项目管理与代码托管的服务平台，代码托管支持两种VCS：Subversion与Git。Unfuddle与Google Code一样支持两种版本控制系统；而与Google Code比较，Unfuddle除了VCS上支持的不同外（Google Code支持Subver与Mercurial），还有它支持private库。Unfuddle免费的Plan提供200mb的存储空间，可创建无限个代码库(Repository)。但Project只能有一个，同时代码库必须与Project绑定才能使用（激活状态），这意味这免费的Plan实际上只能有一个代码库处于激活状态，而其他的皆属于archived状态。另外免费的Plan也不支持SSL连接和文件附件。所以想要项目管理与代码托管在同一个平台的用户是不错的选择,不过这个服务器速度在国内会差一些.<span id="more-491"></span></p>
<p><a href="http://hg.io/" target="_blank">Bitbucket</a>未提供项目管理，只提供代码托管平台，使用的VCS是Mercurial。免费的Plan挺强大的：1GB的存储空间，无限制Public库和1个私有库，HTTP/SSL连接支持，第三方服务集成支持，邮件发送支持。最低收费（$5/月）的Plan和免费的Plan的差别在于空间多出1.5G，private库多出4个以及支持Cname服务。总的来说，若熟悉 Mercurial，需要大的空间,Bitcket应该是个不错的选择。测试速度也不错.</p>
<p><a href="http://www.springloops.com/" target="_blank">springloops</a>打出的口号是唯一一家专注于Web开发团队源代码管理的平台。他支持在代码提交后通过FTP/sFTP的方式直接发布到服务器上，集成Basecamp，使用Subversion。免费的 Plan提供100m的空间，无限制项目，但同时只能有3个项目处于激活状态；可通过FTP/sFTP直接发布，但不支持在commit后发布；无限制合作人员；无SSL支持；无域名绑定支持。测试速度不错</p>
<p><a href="http://beanstalkapp.com/">Beantalk</a>同Unfuddle一样支持Subversion与 Git两种版本控制系统。他的页面设计很精美，同样可通过FTP与sFTP发布项目，可集成Basecamp，Twitter，Campfire等第三方服务，可对HTML页面进行编辑预览。免费的Plan注册链接比较隐秘，放置于收费Plan的下方一行字。提供100m的存储空间，3个用户。由于还未了解Mercurial，而Subversion集中式的控制机制让我觉得很受控制，所以还是以支持Git的平台为首选。测试速度不错</p>
]]></content:encoded>
			<wfw:commentRss>http://www.voland.com.cn/free-and-support-the-private-library-of-code-management-platform/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>用java程序向wordpress发布文章</title>
		<link>http://www.voland.com.cn/java-program-to-wordpress-with-articles-published</link>
		<comments>http://www.voland.com.cn/java-program-to-wordpress-with-articles-published#comments</comments>
		<pubDate>Thu, 13 May 2010 01:42:52 +0000</pubDate>
		<dc:creator>Nortan</dc:creator>
				<category><![CDATA[人生百味]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://www.voland.com.cn/?p=486</guid>
		<description><![CDATA[java向wordpress发布文章也成？当然成！不仅能发布文章，读写都不成问题，还很方便，这些便利得益于XML-RPC协议。WordPress提供了XML-RPC API使得第三方的可以与之通信来发布和修改博客。我们也可以使用这个接口做一些工作，例如：在网站首页显示最新的博客、在博客之外的页面上发表博客文章、把博客与其他内容管理系统结合等。
一、开启XML-RPC支持
Wordpress的XML-RPC协议默认是未开启的，需要到管理后台的“设置&#8211;>撰写”里的“远程发布”给XML-RPC打上勾。其说明文字为：启用 WordPress，Movable Type，MetaWeblog和Blogger 的 XML-RPC发布协议。
二、API接口选择
WordPress提供了对Blogger API、metaWeblog API、Movable Type API以及其自身的WordPress API的支持。其中WordPress API最为丰富，提供了包括操作评论文章在内的各种各样的支持。Blogger API功能较少，基本上淘汰不用了；而metaWeblog API提供了常用的接口且参数比较简洁，用得较多一些。所以我们以它作为例子。
三、例子代码
这个例子中，需要用到apache的XML-RPC项目包,大家可以到 apache 官方下载,使用这个例子，就可以与昨天的《通用文章采集器的设计与实现》结合，来生成自动发布的站点了，这个慎用哦，后果自负：）

import java.net.URL;
import java.util.HashMap;
import java.util.Map;
&#160;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
&#160;
public class Test &#123;
	public static void post&#40;String title, String content&#41;  &#123;
		try&#123;
			// Set up XML-RPC connection to server
                  [...]]]></description>
			<content:encoded><![CDATA[<p>java向wordpress发布文章也成？当然成！不仅能发布文章，读写都不成问题，还很方便，这些便利得益于XML-RPC协议。WordPress提供了XML-RPC API使得第三方的可以与之通信来发布和修改博客。我们也可以使用这个接口做一些工作，例如：在网站首页显示最新的博客、在博客之外的页面上发表博客文章、把博客与其他内容管理系统结合等。<span id="more-486"></span></p>
<p>一、开启XML-RPC支持</p>
<p>Wordpress的XML-RPC协议默认是未开启的，需要到管理后台的“设置&#8211;>撰写”里的“远程发布”给XML-RPC打上勾。其说明文字为：启用 WordPress，Movable Type，MetaWeblog和Blogger 的 XML-RPC发布协议。</p>
<p>二、API接口选择</p>
<p>WordPress提供了对Blogger API、metaWeblog API、Movable Type API以及其自身的WordPress API的支持。其中WordPress API最为丰富，提供了包括操作评论文章在内的各种各样的支持。Blogger API功能较少，基本上淘汰不用了；而metaWeblog API提供了常用的接口且参数比较简洁，用得较多一些。所以我们以它作为例子。</p>
<p>三、例子代码</p>
<p>这个例子中，需要用到apache的XML-RPC项目包,大家可以到 <a href="http://ws.apache.org/xmlrpc/download.html" target="_blank">apache 官方</a>下载,使用这个例子，就可以与昨天的《<a href="http://www.voland.com.cn/common-article-collection-design-and-implementation">通用文章采集器的设计与实现</a>》结合，来生成自动发布的站点了，这个慎用哦，后果自负：）</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.net.URL</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.HashMap</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Map</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.xmlrpc.client.XmlRpcClient</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.xmlrpc.client.XmlRpcClientConfigImpl</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Test <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> post<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> title, <span style="color: #003399;">String</span> content<span style="color: #009900;">&#41;</span>  <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">try</span><span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// Set up XML-RPC connection to server</span>
                        <span style="color: #003399;">String</span> domain <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;www.extbi.com&quot;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//你网站的域名</span>
			XmlRpcClientConfigImpl config <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> XmlRpcClientConfigImpl<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			config.<span style="color: #006633;">setServerURL</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">URL</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://&quot;</span><span style="color: #339933;">+</span>domain<span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;/xmlrpc.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			XmlRpcClient client <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> XmlRpcClient<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			client.<span style="color: #006633;">setConfig</span><span style="color: #009900;">&#40;</span>config<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">// Set up parameters required by newPost method</span>
			<span style="color: #003399;">Map</span> post <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">HashMap</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			post.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;title&quot;</span>, title<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//标题</span>
			post.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;mt_keywords&quot;</span>, <span style="color: #0000ff;">&quot;标签,标签2,标签3&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//标签</span>
			<span style="color: #003399;">Object</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> categories <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Object</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">&quot;服饰&quot;</span>,<span style="color: #0000ff;">&quot;数码&quot;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//分类</span>
			post.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;categories&quot;</span>, categories<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			post.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;description&quot;</span>, content<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//内容</span>
			<span style="color: #003399;">Object</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> params <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Object</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">&quot;1&quot;</span>, <span style="color: #0000ff;">&quot;用户名&quot;</span>, <span style="color: #0000ff;">&quot;密码&quot;</span>, post,
					<span style="color: #003399;">Boolean</span>.<span style="color: #000066; font-weight: bold;">TRUE</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">// Call newPost</span>
			<span style="color: #003399;">String</span> result <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#41;</span> client.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;metaWeblog.newPost&quot;</span>, params<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; Created with blogid &quot;</span> <span style="color: #339933;">+</span> result<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// TODO: handle exception</span>
                       <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; UnCreated &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>四、畅想</p>
<p>博客有如此大强大，灵活，好用的接口 ，那为什么国内常用的CMS没有呢？做一个也花不了多少时间，当然，在实际的管理软件中，如CRM中，我建议也可以加入这样的接口，那与其它系统集成是多么爽的一件事情。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.voland.com.cn/java-program-to-wordpress-with-articles-published/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>通用文章采集器的设计与实现</title>
		<link>http://www.voland.com.cn/common-article-collection-design-and-implementation</link>
		<comments>http://www.voland.com.cn/common-article-collection-design-and-implementation#comments</comments>
		<pubDate>Wed, 12 May 2010 02:40:30 +0000</pubDate>
		<dc:creator>Nortan</dc:creator>
				<category><![CDATA[人生百味]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[采集器]]></category>

		<guid isPermaLink="false">http://www.voland.com.cn/?p=478</guid>
		<description><![CDATA[java实现通用文章采集器，可以采集一个给定文章列表URL中的所有文章及文章有内分页的情况。制作个性采集器必看！]]></description>
			<content:encoded><![CDATA[<p>最近头脑有点发热，想做一个采集器来采集文章，然后做一个类似垃圾站的东西，当然，使用的文章发布程序还是用wordpress,wordpress上的采集器不太多，他们大多都是通过rss采集，这也不太合适我，因为如果做为文章采集，采集的对象可能有文章内分页，所以最终还是自己写一个程序吧，自己最熟悉的还是java,那就用java写吧。</p>
<p>采集一堆文章，主要有如下步骤：<br />
第一：采集规则定义<br />
第二：按指定的规则进行文章采集</p>
<p>根据以上步骤，我们分开来实现。采集规则的定义实际就是你要做什么，怎么做的定义，我们这里很明确，就是指定一个列表的url地址，提取列表中所有文章的url，然后再一一采集各文章中的标题、内容，如果每篇文章有内分页，还要分别提取。所以，我们首先要做的，就是给定一个url地址，取得对应的html源码。下面是一个实现，它模拟浏览器，向url发出http请求，服务器返回<span id="more-478"></span>的结果，就是我们需要得到的东西。</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #008000; font-style: italic; font-weight: bold;">/**
	 * 给定一个列表url，得到本url对象的html,然后其它操作在这个基础上做
	 * @param url 
	 * @param encoding   返回html的编码方式，如GBK，UTF─8
	 * @return
	 * @throws Exception
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getHtml<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> url, <span style="color: #003399;">String</span> encoding<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">Exception</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003399;">String</span> value <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
		HttpClient httpclient <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DefaultHttpClient<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>        
        HttpGet httpget <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HttpGet<span style="color: #009900;">&#40;</span>url<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// 以下这条如果不加会发现无论你设置Accept-Charset为gbk还是utf-8，他都会默认返回gb2312（本例针对google.cn来说）</span>
        httpget.<span style="color: #006633;">setHeader</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;User-Agent&quot;</span>, <span style="color: #0000ff;">&quot;Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.2)&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">// 用逗号分隔显示可以同时接受多种编码</span>
        httpget.<span style="color: #006633;">setHeader</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Accept-Language&quot;</span>, <span style="color: #0000ff;">&quot;zh-cn,zh;q=0.5&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        httpget.<span style="color: #006633;">setHeader</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Accept-Charset&quot;</span>, <span style="color: #0000ff;">&quot;GB2312,utf-8;q=0.7,*;q=0.7&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>        
        HttpResponse response <span style="color: #339933;">=</span> httpclient.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span>httpget<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>     
&nbsp;
        <span style="color: #666666; font-style: italic;">// 判断页面返回状态判断是否进行转向抓取新链接</span>
        <span style="color: #000066; font-weight: bold;">int</span> statusCode <span style="color: #339933;">=</span> response.<span style="color: #006633;">getStatusLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getStatusCode</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>statusCode <span style="color: #339933;">==</span> HttpStatus.<span style="color: #006633;">SC_MOVED_PERMANENTLY</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span>
                <span style="color: #009900;">&#40;</span>statusCode <span style="color: #339933;">==</span> HttpStatus.<span style="color: #006633;">SC_MOVED_TEMPORARILY</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span>
                <span style="color: #009900;">&#40;</span>statusCode <span style="color: #339933;">==</span> HttpStatus.<span style="color: #006633;">SC_SEE_OTHER</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span>
                <span style="color: #009900;">&#40;</span>statusCode <span style="color: #339933;">==</span> HttpStatus.<span style="color: #006633;">SC_TEMPORARY_REDIRECT</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #666666; font-style: italic;">// 此处重定向处理  此处还未验证</span>
            <span style="color: #003399;">String</span> newUri <span style="color: #339933;">=</span> response.<span style="color: #006633;">getLastHeader</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Location&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getValue</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            httpclient <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DefaultHttpClient<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            httpget <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HttpGet<span style="color: #009900;">&#40;</span>newUri<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            response <span style="color: #339933;">=</span> httpclient.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span>httpget<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// Get hold of the response entity</span>
        HttpEntity entity <span style="color: #339933;">=</span> response.<span style="color: #006633;">getEntity</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>        
        <span style="color: #666666; font-style: italic;">// If the response does not enclose an entity, there is no need</span>
        <span style="color: #666666; font-style: italic;">// to bother about connection release</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>entity <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #666666; font-style: italic;">// 将源码流保存在一个byte数组当中，因为可能需要两次用到该流，</span>
            <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> bytes <span style="color: #339933;">=</span> EntityUtils.<span style="color: #006633;">toByteArray</span><span style="color: #009900;">&#40;</span>entity<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #666666; font-style: italic;">// 如果头部Content-Type中包含了编码信息，那么我们可以直接在此处获取</span>
&nbsp;
            <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>encoding <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #0000ff;">&quot;&quot;</span>.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span>encoding.<span style="color: #006633;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            	value <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#40;</span>bytes, encoding<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
            	<span style="color: #003399;">String</span> charSet <span style="color: #339933;">=</span> EntityUtils.<span style="color: #006633;">getContentCharSet</span><span style="color: #009900;">&#40;</span>entity<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            	<span style="color: #666666; font-style: italic;">// 如果头部中没有，那么我们需要 查看页面源码，这个方法虽然不能说完全正确，因为有些粗糙的网页编码者没有在页面中写头部编码信息</span>
	            <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>charSet <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span> <span style="color: #339933;">||</span> <span style="color: #0000ff;">&quot;&quot;</span>.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span>charSet.<span style="color: #006633;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	                <span style="color: #003399;">String</span> regEx<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;(?=&lt;meta).*?(?&lt;=charset=[<span style="color: #000099; font-weight: bold;">\\</span>'|<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\&quot;</span>]?)([[a-z]|[A-Z]|[0-9]|-]*)&quot;</span><span style="color: #339933;">;</span>
	                Pattern p<span style="color: #339933;">=</span>Pattern.<span style="color: #006633;">compile</span><span style="color: #009900;">&#40;</span>regEx, Pattern.<span style="color: #006633;">CASE_INSENSITIVE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	                Matcher m<span style="color: #339933;">=</span>p.<span style="color: #006633;">matcher</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#40;</span>bytes<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// 默认编码转成字符串，因为我们的匹配中无中文，所以串中可能的乱码对我们没有影响</span>
	                <span style="color: #000066; font-weight: bold;">boolean</span> result<span style="color: #339933;">=</span>m.<span style="color: #006633;">find</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>m.<span style="color: #006633;">groupCount</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	                    charSet <span style="color: #339933;">=</span> m.<span style="color: #006633;">group</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	                <span style="color: #009900;">&#125;</span>
	            <span style="color: #009900;">&#125;</span>
	            value <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#40;</span>bytes, charSet<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>       
        <span style="color: #009900;">&#125;</span>
&nbsp;
        httpclient.<span style="color: #006633;">getConnectionManager</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">shutdown</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
        <span style="color: #000000; font-weight: bold;">return</span> value<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></div></div>

<p><code>注意，这里用到了Apache的HttpClient项目，由于空间有限，我这里不上传本函数所依赖的包，请大家自己到apache下载。</code></p>
<p>以淘宝的女人门户为例子，我给定http://info.taobao.com/list/lady/23/30/2330b6ed-16ce-4d0e-b7fa-58a411e1871a_1.php这个url地址，它会返回一个包含文章列表的html。有了这个html，我们接下来就是提取URL，当然，提取前先不着急，因为这个html里面的内容比较多，不能直接提取，那就把它简单化，先得到一个区域吧：</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #008000; font-style: italic; font-weight: bold;">/**
	 * 列表区域识别规则
	 * @param html 原始的html
	 * @param areaRegex 所提取区域的正则表达式
	 * @param area 正则表达式中需要提取的区域，取值是：AREA_LIST，AREA_TITLE等等
	 * @return
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getArea<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> html, <span style="color: #003399;">String</span> areaRegex ,<span style="color: #003399;">String</span> area<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003399;">String</span> valueHtml<span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">String</span> regex <span style="color: #339933;">=</span> areaRegex.<span style="color: #006633;">replaceFirst</span><span style="color: #009900;">&#40;</span>area, <span style="color: #0000ff;">&quot;([<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>s<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>S]*?)&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//		System.out.println(regex);</span>
		Pattern pattern <span style="color: #339933;">=</span> Pattern.<span style="color: #006633;">compile</span><span style="color: #009900;">&#40;</span>regex,Pattern.<span style="color: #006633;">MULTILINE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
		Matcher matcher <span style="color: #339933;">=</span> pattern.<span style="color: #006633;">matcher</span><span style="color: #009900;">&#40;</span>html<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
		<span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>matcher.<span style="color: #006633;">find</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			valueHtml <span style="color: #339933;">=</span> matcher.<span style="color: #006633;">group</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> 
		<span style="color: #000000; font-weight: bold;">return</span> valueHtml<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></div></div>

<p>有了这个域名，我就就可以提取URL列表了：</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">       <span style="color: #666666; font-style: italic;">//提取给定区域的文章列表地址,</span>
       <span style="color: #000000; font-weight: bold;">public</span> List<span style="color: #339933;">&lt;</span>String<span style="color: #339933;">&gt;</span> getListUrl<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> areaHtml,<span style="color: #003399;">String</span> regex,<span style="color: #003399;">String</span> withPrefix<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">getListUrl</span><span style="color: #009900;">&#40;</span>areaHtml, regex, withPrefix, <span style="color: #000066; font-weight: bold;">false</span>, <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #008000; font-style: italic; font-weight: bold;">/**
	 * 提取给定区域的文章列表地址，主要用来提取文章内的分页用的
	 * @param areaHtml 
	 * @param regex 
	 * @param withPrefix 返回的地址是否需要加一个前缀，如21cn的新闻，提取到后是没有前缀的，得加一个
	 * @param hasOmit  提取文章内分页时，是否有分页是否有省略号，如淘宝的就有。
	 * @param pageNumRegex  提取文章内的分页正则表达式
	 * @return
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> List<span style="color: #339933;">&lt;</span>String<span style="color: #339933;">&gt;</span> getListUrl<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> areaHtml,<span style="color: #003399;">String</span> regex,<span style="color: #003399;">String</span> withPrefix,<span style="color: #000066; font-weight: bold;">boolean</span> hasOmit,<span style="color: #003399;">String</span> pageNumRegex<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		List<span style="color: #339933;">&lt;</span>String<span style="color: #339933;">&gt;</span> list <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ArrayList<span style="color: #339933;">&lt;</span>String<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		regex <span style="color: #339933;">=</span> regex.<span style="color: #006633;">replaceFirst</span><span style="color: #009900;">&#40;</span>WebContent.<span style="color: #006633;">AREA_URL</span>, <span style="color: #0000ff;">&quot;(.*?)&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		Pattern pa <span style="color: #339933;">=</span> Pattern.<span style="color: #006633;">compile</span><span style="color: #009900;">&#40;</span>regex, Pattern.<span style="color: #006633;">MULTILINE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		Matcher ma <span style="color: #339933;">=</span> pa.<span style="color: #006633;">matcher</span><span style="color: #009900;">&#40;</span>areaHtml<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>ma.<span style="color: #006633;">find</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>withPrefix <span style="color: #339933;">!=</span><span style="color: #000066; font-weight: bold;">null</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #0000ff;">&quot;&quot;</span>.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span>withPrefix.<span style="color: #006633;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				list.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>withPrefix<span style="color: #339933;">+</span>ma.<span style="color: #006633;">group</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
				list.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>ma.<span style="color: #006633;">group</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>hasOmit <span style="color: #339933;">&amp;&amp;</span> list.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #003399;">String</span> lasturl <span style="color: #339933;">=</span> list.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span>list.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			list.<span style="color: #006633;">clear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
			regex <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;(.*?)&quot;</span><span style="color: #339933;">+</span>pageNumRegex.<span style="color: #006633;">replaceFirst</span><span style="color: #009900;">&#40;</span>WebContent.<span style="color: #006633;">PAGE_URL_NUM</span>, <span style="color: #0000ff;">&quot;(-?<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>d+)&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			
			pa <span style="color: #339933;">=</span> Pattern.<span style="color: #006633;">compile</span><span style="color: #009900;">&#40;</span>regex<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			ma <span style="color: #339933;">=</span> pa.<span style="color: #006633;">matcher</span><span style="color: #009900;">&#40;</span>lasturl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>ma.<span style="color: #006633;">find</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				<span style="color: #000066; font-weight: bold;">int</span> num <span style="color: #339933;">=</span> <span style="color: #003399;">Integer</span>.<span style="color: #006633;">parseInt</span><span style="color: #009900;">&#40;</span>ma.<span style="color: #006633;">group</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #003399;">String</span> prefix <span style="color: #339933;">=</span> ma.<span style="color: #006633;">group</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #003399;">String</span> baseurl <span style="color: #339933;">=</span> prefix<span style="color: #339933;">+</span>pageNumRegex<span style="color: #339933;">;</span>
&nbsp;
				<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;=</span> num<span style="color: #339933;">;</span> i <span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
				list.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>baseurl.<span style="color: #006633;">replaceFirst</span><span style="color: #009900;">&#40;</span>WebContent.<span style="color: #006633;">PAGE_URL_NUM</span>, i<span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>			
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">return</span> list<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></div></div>

<p>以上两个函数，就可以得到文章列表及文章内分页列表。实际上有这些组合，就可以提取大部分的网站了，这里给一个例子，我的<a href="http://www.extbi.com" target="_blank">http://www.extbi.com</a>这个站点的文章就是用这个提取的。大家根据上面的讲解，好好看吧。<a href="/wp-content/uploads/WebContent.java">WebContent.java</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.voland.com.cn/common-article-collection-design-and-implementation/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>ruby中的word2007文件修改操作</title>
		<link>http://www.voland.com.cn/modify-word2007-on-ruby-how-to</link>
		<comments>http://www.voland.com.cn/modify-word2007-on-ruby-how-to#comments</comments>
		<pubDate>Mon, 10 May 2010 01:17:27 +0000</pubDate>
		<dc:creator>Nortan</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[软件开发]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Rails教程]]></category>

		<guid isPermaLink="false">http://www.voland.com.cn/?p=473</guid>
		<description><![CDATA[使用ruby修改word2007，到目前并没有好的库，当然，rails也一样，那么如何才能用ruby操作word2007文件呢？word2007文件，也就是docx文件，实际就是一个zip压缩的压缩包，它里面由一系列xml及其它与文件内容相关的资源文件组成，所以，最简单的办法就是解压这个docx文件，然后修改xml文件，再把他打包，完成修改。首先表一下本人的开发环境：
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin9]
gem 1.3.6
zipruby (0.3.6)
nokogiri (1.4.1)
libxml-ruby (1.1.3)
Rails 2.3.4(这个非必须，本人是在rails下开发的)

刚才说了，修改的思路分为三步：
第一步：解压docx文件。
第二步：查找并修改document.xml文件中的内容
第三步：重新生成docx文件

根据以上三步，model代码对应如下：

#office_open_xml.rb
require 'zipruby'
require 'nokogiri'
&#160;
class OfficeOpenXml  
  def initialize&#40;template,newdoc&#41;
    #Store the instance variables
    @template, @newdoc = template, newdoc
  end  
&#160;
  def parse&#40;&#41;
    existing_xml = get_xml_from_template&#40;&#41;
    body_node = existing_xml.root.xpath&#40;&#34;w:body&#34;, &#123;&#34;w&#34; =&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>使用ruby修改word2007，到目前并没有好的库，当然，rails也一样，那么如何才能用ruby操作word2007文件呢？word2007文件，也就是docx文件，实际就是一个zip压缩的压缩包，它里面由一系列xml及其它与文件内容相关的资源文件组成，所以，最简单的办法就是解压这个docx文件，然后修改xml文件，再把他打包，完成修改。首先表一下本人的开发环境：<span id="more-473"></span><br />
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin9]<br />
gem 1.3.6<br />
zipruby (0.3.6)<br />
nokogiri (1.4.1)<br />
libxml-ruby (1.1.3)<br />
Rails 2.3.4(这个非必须，本人是在rails下开发的)<br />
<br/><br />
刚才说了，修改的思路分为三步：<br />
第一步：解压docx文件。<br />
第二步：查找并修改document.xml文件中的内容<br />
第三步：重新生成docx文件</p>
<p></br><br />
根据以上三步，model代码对应如下：</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#office_open_xml.rb</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'zipruby'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'nokogiri'</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> OfficeOpenXml  
  <span style="color:#9966CC; font-weight:bold;">def</span> initialize<span style="color:#006600; font-weight:bold;">&#40;</span>template,newdoc<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#008000; font-style:italic;">#Store the instance variables</span>
    <span style="color:#0066ff; font-weight:bold;">@template</span>, <span style="color:#0066ff; font-weight:bold;">@newdoc</span> = template, newdoc
  <span style="color:#9966CC; font-weight:bold;">end</span>  
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> parse<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    existing_xml = get_xml_from_template<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    body_node = existing_xml.<span style="color:#9900CC;">root</span>.<span style="color:#9900CC;">xpath</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;w:body&quot;</span>, <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#996600;">&quot;w&quot;</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;http://schemas.openxmlformats.org/wordprocessingml/2006/main&quot;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">first</span>
    <span style="color:#008000; font-style:italic;">#修改文件操作</span>
    body_node.<span style="color:#9900CC;">xpath</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;//w:r//w:t&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>child<span style="color:#006600; font-weight:bold;">|</span>
      child.<span style="color:#9900CC;">content</span> = child.<span style="color:#9900CC;">content</span>.<span style="color:#CC0066; font-weight:bold;">gsub</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;{name}&quot;</span>, <span style="color:#996600;">&quot;replace string&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>    
&nbsp;
   compress<span style="color:#006600; font-weight:bold;">&#40;</span>existing_xml<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#008000; font-style:italic;">#解压文件</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> get_xml_from_template<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    filename = <span style="color:#996600;">'word/document.xml'</span>;
    <span style="color:#008000; font-style:italic;">#retrieve the document from the template doc</span>
    xml = <span style="color:#6666ff; font-weight:bold;">Zip::Archive</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>@template<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>zipfile<span style="color:#006600; font-weight:bold;">|</span>
      zipfile.<span style="color:#9900CC;">fopen</span><span style="color:#006600; font-weight:bold;">&#40;</span>filename<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">read</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#008000; font-style:italic;">#parse the resulting file into the Nokogiri xml doc</span>
    <span style="color:#6666ff; font-weight:bold;">Nokogiri::XML</span>.<span style="color:#9900CC;">parse</span><span style="color:#006600; font-weight:bold;">&#40;</span>xml<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#008000; font-style:italic;">#把修改过的文件重新生成docx</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> compress<span style="color:#006600; font-weight:bold;">&#40;</span>newXML<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#008000; font-style:italic;">#Copy the template to the new document</span>
    <span style="color:#CC00FF; font-weight:bold;">FileUtils</span>.<span style="color:#9900CC;">copy</span><span style="color:#006600; font-weight:bold;">&#40;</span>@template, <span style="color:#0066ff; font-weight:bold;">@newdoc</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#008000; font-style:italic;">#Open the zip archive</span>
    <span style="color:#6666ff; font-weight:bold;">Zip::Archive</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>@newdoc, <span style="color:#6666ff; font-weight:bold;">Zip::CREATE</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>zipfile<span style="color:#006600; font-weight:bold;">|</span>
      <span style="color:#008000; font-style:italic;">#Replace the document.xml with our new xml</span>
      zipfile.<span style="color:#9900CC;">add_or_replace_buffer</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'word/document.xml'</span>, newXML.<span style="color:#9900CC;">to_s</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>  
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Controller的代码对应如下：</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#office_controller.rb</span>
<span style="color:#9966CC; font-weight:bold;">class</span> OfficeController <span style="color:#006600; font-weight:bold;">&lt;</span> ApplicationController
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> index
    office = OfficeOpenXml.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;#{RAILS_ROOT}/public/template/test.docx&quot;</span>,<span style="color:#996600;">&quot;#{RAILS_ROOT}/public/template/test333.docx&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    render <span style="color:#ff3333; font-weight:bold;">:text</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> office.<span style="color:#9900CC;">parse</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>  
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>如果有兴趣，大家也可以参看这篇文章：<br />
<a href="http://msdn.microsoft.com/en-us/library/ee895050.aspx" target="_blank">Using Ruby on Rails and XSLT to Create a Word 2007 Document</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.voland.com.cn/modify-word2007-on-ruby-how-to/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>支持淘宝付款 国内优秀网站空间</title>
		<link>http://www.voland.com.cn/support-payment-on-top-site-taobao-space</link>
		<comments>http://www.voland.com.cn/support-payment-on-top-site-taobao-space#comments</comments>
		<pubDate>Wed, 05 May 2010 01:47:44 +0000</pubDate>
		<dc:creator>Nortan</dc:creator>
				<category><![CDATA[一起分享]]></category>
		<category><![CDATA[淘宝]]></category>
		<category><![CDATA[网站空间]]></category>
		<category><![CDATA[虚拟主机]]></category>

		<guid isPermaLink="false">http://www.voland.com.cn/?p=462</guid>
		<description><![CDATA[现在国内的网站空间（虚拟主机）很多，从支持网站程序语言类型来说，主要有四种，分别是php，asp(或者.net)，java，rails空间，这些空间有好有坏龙鱼混杂，我的朋友MarsLau原来在国内买的空间就出现有事没事“关门”事件，很不好，最近只好买了一个国外空间，当然，并不是国外的空间就有多好，实际国内的空间也还是很多的。我这里给大家说说怎么找这些。
一个好的空间商，首先要售后好，为什么把售后放在首位，因为在使用过程中，肯定会遇到各种麻烦，如果售后服务好，遇到问题时，可以很方便解决；其次就是要有电信增值业务许可证，如果没有这个证件，很可能今天买了，明天空间就不在了，怎么回事自己想吧；第三就是要稳定、数据备份方便，如果不稳定，会很影响访问人对你的网站的印象，也会影响搜索引擎对你的收录及排名，如果数据备份不方便，很可能你的数据哪一天就丢失了，我们不要指望空间商给你备份，虽然大部分情况下他们会做得很好，但总会有万一的时候。第四才是访问速度快，实际现在的空间本身接入速度都差不多，基本都是多线100M共享，所以在有限的带宽中，当然是服务器上虚拟主机越少越好呀。第五还要价格相对便宜，为什么是相对便宜，都说便宜没好货，只要物有所值，我们就称为物有所值吧。
根据以上五个特点，我在淘宝上找了几款，大家可以作为选购的参考：
第一款：成数旗舰店
成数国际虽然不太出名，但好运营主机空间也有几年了，是南京一家公司，所以电信增值业务许可证及发票什么都没有问题，这的所有空间中，超值的是1G 双线服务器合租型，1G的空间，一年才198元，还是合租呀，哈哈，速度应该不错，不知道为什么就看第四点吧。还有正在搞活动的空间，秒杀赞助虚拟主机网站空间1G限量100个每天1毛钱，这个空间应该适合入门级选手。便宜呀，一天才1毛钱！不过速度应该会比上面的慢一些，但不会影响实际使用。
第二款：晶源互联
晶源互联是代理西部数码的，西部数码这样大型的ISP都太贵，他们的代理为了拿到市场份额，一般价格要比西部数码低得多，这里就推荐一款它的主机吧西部数码B068双线虚拟主机180M空间100M邮箱支持PHP+mysql+ASP，其它的自己看了。
第三款：3A网络www.cnaaa.com 淘宝店
主要推荐一下这款吧：【4钻+消保】虚拟主机经典型1G特价 双线双IP送邮局数据库 子目录
好了，上班了：）买了空间来这里留言哦
]]></description>
			<content:encoded><![CDATA[<div id="attachment_468" class="wp-caption aligncenter" style="width: 555px"><a href="http://www.voland.com.cn/support-payment-on-top-site-taobao-space/host1" rel="attachment wp-att-468"><img src="http://www.voland.com.cn/wp-content/uploads/2010/05/host1.png" alt="Voland与你选空间" title="Voland与你选空间" width="545" height="140" class="size-full wp-image-468" /></a><p class="wp-caption-text">Voland与你选空间</p></div>
<p>现在国内的网站空间（虚拟主机）很多，从支持网站程序语言类型来说，主要有四种，分别是php，asp(或者.net)，java，rails空间，这些空间有好有坏龙鱼混杂，我的朋友<a href="http://marslau.com/" target="_blank">MarsLau</a>原来在国内买的空间就出现有事没事“关门”事件，很不好，最近只好买了一个国外空间，当然，并不是国外的空间就有多好，实际国内的空间也还是很多的。我这里给大家说说怎么找这些。</p>
<p>一个好的空间商，首先要售后好，为什么把售后放在首位，因为在使用过程中，肯定会遇到各种麻烦，如果售后服务好，遇到问题时，可以很方便解决；其次就是要有电信增值业务许可证，<span id="more-462"></span>如果没有这个证件，很可能今天买了，明天空间就不在了，怎么回事自己想吧；第三就是要稳定、数据备份方便，如果不稳定，会很影响访问人对你的网站的印象，也会影响搜索引擎对你的收录及排名，如果数据备份不方便，很可能你的数据哪一天就丢失了，我们不要指望空间商给你备份，虽然大部分情况下他们会做得很好，但总会有万一的时候。第四才是访问速度快，实际现在的空间本身接入速度都差不多，基本都是多线100M共享，所以在有限的带宽中，当然是服务器上虚拟主机越少越好呀。第五还要价格相对便宜，为什么是相对便宜，都说便宜没好货，只要物有所值，我们就称为物有所值吧。</p>
<p>根据以上五个特点，我在淘宝上找了几款，大家可以作为选购的参考：</p>
<p>第一款：<strong><a href="http://s.click.taobao.com/a/qvMkrjUZqiI=-16462935" target="_blank">成数旗舰店</a></strong><br />
成数国际虽然不太出名，但好运营主机空间也有几年了，是南京一家公司，所以电信增值业务许可证及发票什么都没有问题，这的所有空间中，超值的是<a href="http://s.click.taobao.com/t_1?i=rEy5MNy5pR6vkw%3D%3D&amp;p=mm_16462935_0_0&amp;n=11" target="_blank">1G 双线服务器合租型</a>，1G的空间，一年才198元，还是合租呀，哈哈，速度应该不错，不知道为什么就看第四点吧。还有正在搞活动的空间，<a href="http://s.click.taobao.com/t_1?i=rEy5MNy5pR6vkw%3D%3D&amp;p=mm_16462935_0_0&amp;n=11" target="_blank">秒杀赞助虚拟主机网站空间1G限量100个每天1毛钱</a>，这个空间应该适合入门级选手。便宜呀，一天才1毛钱！不过速度应该会比上面的慢一些，但不会影响实际使用。</p>
<p>第二款：<strong><a href="http://s.click.taobao.com/a/qvMlTNZfoRg=-16462935" target="_blank">晶源互联</a></strong><br />
晶源互联是代理西部数码的，西部数码这样大型的ISP都太贵，他们的代理为了拿到市场份额，一般价格要比西部数码低得多，这里就推荐一款它的主机吧<a href="http://s.click.taobao.com/t_1?i=rE24P0RkecG5dw%3D%3D&amp;p=mm_16462935_0_0&amp;n=11" target="_blank">西部数码B068双线虚拟主机180M空间100M邮箱支持PHP+mysql+ASP</a>，其它的自己看了。</p>
<p>第三款：<strong><a href="http://s.click.taobao.com/a/qvQvh6JICuY=-16462935" target="_blank">3A网络www.cnaaa.com 淘宝店</a></strong><br />
主要推荐一下这款吧：<a href="http://s.click.taobao.com/t_1?i=qvVraqEJeNFMrA%3D%3D&#038;p=mm_16462935_0_0&#038;n=11" target="_blank">【4钻+消保】虚拟主机经典型1G特价 双线双IP送邮局数据库 子目录</a></p>
<p>好了，上班了：）买了空间来这里留言哦</p>
]]></content:encoded>
			<wfw:commentRss>http://www.voland.com.cn/support-payment-on-top-site-taobao-space/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
