<?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>结网 &#187; 工具</title>
	<atom:link href="http://blog.liuhongwei.cn/tag/%e5%b7%a5%e5%85%b7/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.liuhongwei.cn</link>
	<description>Agile, Startup, 产品管理, Google开发, iPhone开发</description>
	<lastBuildDate>Tue, 17 Jan 2012 14:30:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>没有VPN，用SSH也能翻墙</title>
		<link>http://blog.liuhongwei.cn/my-opensource/ssh-socks5/</link>
		<comments>http://blog.liuhongwei.cn/my-opensource/ssh-socks5/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 04:30:13 +0000</pubDate>
		<dc:creator>Harry</dc:creator>
				<category><![CDATA[开源]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[教学]]></category>

		<guid isPermaLink="false">http://blog.liuhongwei.cn/?p=327</guid>
		<description><![CDATA[用VPN的越来越多，访问youTube速度太慢，自己有主机并具有SSH权限的帐号的话，直接用SSH socks5也可以翻墙浏览。 下载plink.exe 在主机上申请或直接添加一个具有SSH权限的用户帐号； 运行plink -N sshaccount@yourhosting.com -pw sshaccountpassword -D 127.0.0.1:1915 不要关闭运行后的命令行窗口； 在firefox中设置socks5代理； 在Firefox中设置允许使用远程DNS； 1. 在Firefox的地址栏输入 about:config 2. Firefox 会有安全警告提示，不管它，点按钮继续 3. 找到“network.proxy.socks_remote_dns”这一项，设为True（默认是False），搞定！ enjoy! 参考： http://youv.info/2010/04/20/%E5%88%A9%E7%94%A8dreamhost%E7%9A%84ssh%E8%B4%A6%E5%8F%B7%E7%BF%BB%E5%A2%99/ http://soido.org/blog/840 &#160;]]></description>
			<content:encoded><![CDATA[<p>用VPN的越来越多，访问youTube速度太慢，自己有主机并具有SSH权限的帐号的话，直接用SSH socks5也可以翻墙浏览。</p>
<p>下载plink.exe</p>
<p>在主机上申请或直接添加一个具有SSH权限的用户帐号；</p>
<p>运行plink -N sshaccount@yourhosting.com -pw sshaccountpassword -D 127.0.0.1:1915 不要关闭运行后的命令行窗口；</p>
<p>在firefox中设置socks5代理；</p>
<p>在Firefox中设置允许使用远程DNS；</p>
<blockquote><p>1. 在<strong>Firefox</strong>的地址栏输入 about:config<br />
2. Firefox 会有安全警告提示，不管它，点按钮继续<br />
3. 找到“network.proxy.socks_remote_dns”这一项，设为True（默认是False），搞定！</p></blockquote>
<p>enjoy!</p>
<p>参考：</p>
<ul>
<li><a href="http://youv.info/2010/04/20/%E5%88%A9%E7%94%A8dreamhost%E7%9A%84ssh%E8%B4%A6%E5%8F%B7%E7%BF%BB%E5%A2%99/">http://youv.info/2010/04/20/%E5%88%A9%E7%94%A8dreamhost%E7%9A%84ssh%E8%B4%A6%E5%8F%B7%E7%BF%BB%E5%A2%99/</a></li>
<li><a href="http://soido.org/blog/840">http://soido.org/blog/840</a></li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.liuhongwei.cn/my-opensource/ssh-socks5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>VMWare Fusion 3 严重变慢</title>
		<link>http://blog.liuhongwei.cn/my-opensource/vmware-fusion-3-slow/</link>
		<comments>http://blog.liuhongwei.cn/my-opensource/vmware-fusion-3-slow/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 04:51:27 +0000</pubDate>
		<dc:creator>Harry</dc:creator>
				<category><![CDATA[开源]]></category>
		<category><![CDATA[工具]]></category>

		<guid isPermaLink="false">http://blog.liuhongwei.cn/?p=325</guid>
		<description><![CDATA[从VMWare Fusion 2升级到3，Mac反而变的极慢，硬盘也一直在狂转。查了一下，原来，Fusion3启动后，OS X Snow Leopard后台会自动启用Spotlight来读取和索引新启动的虚拟机的硬盘内容，如果虚拟机硬盘10G，那么要索引很久。而且，最变态的是，索引之后并没有保存，下次启动还会再次索引，整个系统又会变慢很久。 查了一下，似乎是个普遍问题，解决办法更简单，直接disable Spotlight对Fusion的索引即可。在控制台的命令行执行下列命令： defaults write com.vmware.fusion PLLibrarySpotlightSearchDone -bool YES]]></description>
			<content:encoded><![CDATA[<p>从VMWare Fusion 2升级到3，Mac反而变的极慢，硬盘也一直在狂转。查了一下，原来，Fusion3启动后，OS X Snow Leopard后台会自动启用Spotlight来读取和索引新启动的虚拟机的硬盘内容，如果虚拟机硬盘10G，那么要索引很久。而且，最变态的是，索引之后并没有保存，下次启动还会再次索引，整个系统又会变慢很久。</p>
<p>查了一下，似乎是个普遍问题，解决办法更简单，直接disable Spotlight对Fusion的索引即可。在控制台的命令行执行下列命令：</p>
<blockquote><p><strong>defaults write com.vmware.fusion PLLibrarySpotlightSearchDone -bool YES</strong></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.liuhongwei.cn/my-opensource/vmware-fusion-3-slow/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Analytics的新功能：Intelligence &amp; Alerts</title>
		<link>http://blog.liuhongwei.cn/biz/analytics-intelligence-alert/</link>
		<comments>http://blog.liuhongwei.cn/biz/analytics-intelligence-alert/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 14:48:54 +0000</pubDate>
		<dc:creator>Harry</dc:creator>
				<category><![CDATA[商业运营]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[推荐]]></category>

		<guid isPermaLink="false">http://blog.liuhongwei.cn/?p=143</guid>
		<description><![CDATA[10年前有个数据挖掘（data mining），现在演化为最火爆的BI（商业智能）了。其实本质上，都是在积累了大量数据的基础上，进一步挖掘出数据的特征、数据之间的本质联系、趋势、发现突发事件，从而更好地指导各种商业活动，为决策提供有力的帮助。这样，一个商业组织就成为一个可以自适应、不断学习和提高的有机体了。 对网站来说，数据采集和挖掘就更为重要了。例如，某个用户去年访问量很大，今年却突然大幅度减少，原因可能是下面几方面： 出现了竞争对手挖角； 客户满意度出现问题，不愿意使用了； 统计工具出错； 甚至我们的网页出问题，使用户无法访问，等等； 无论如何，如果能够及时发现这个用户的趋势，就可以尽快与用户取得联系，找出确切原因，解决，从而挽留住更多类似的客户。 问题是，如何才能及时发现这种趋势上的骤变呢？以前使用Google Analytics，虽然能够统计出各种基本的数据，但是对于趋势判断不直观，需要手工去统计，浪费时间不说，往往找不出想要的数据。也就是仅仅做到了数据的自动采集。例如上面的例子，如果不知道某个用户是在某个时间段开始才会大幅减少访问量，就想在每天浩若烟海的数据中，把他及时识别出来，几乎不可能。 现在Analytics推出了Intelligence &#38; Custom Alerts，就等于在自动采集的基础上，增加了自动挖掘和透视的功能，把每天被动的寻找关键趋势的过程，变成了自动发现并提醒。这样就不用把时间浪费在每天的分析上了，省时省力，还更准确，更及时。 Analytics可以设置敏感度，以调节提醒的数量。除了有自动的alert之外，还可以定制。简单浏览了一下，发现自动的alert已经很全面了，列几个比较实用的 某个群体在线时间大增：比如某个国家、老用户、某个landing页面 某个群体转换率大增 某个群体访问量大增 某个群体访问价值大增 来自某个群体的收入大增 当然了，现在的alert还处于beta阶段，复杂的提醒还无法实现，好在Analytics提供 API，可以用来开发自己的应用。毕竟站在巨人的肩膀上，可以拥有不同的视野和起点。Google精选的API应用： http://code.google.com/apis/analytics/docs/gdata/gdataGallery.html]]></description>
			<content:encoded><![CDATA[<p>10年前有个数据挖掘（data mining），现在演化为最火爆的BI（商业智能）了。其实本质上，都是在积累了大量数据的基础上，进一步挖掘出数据的特征、数据之间的本质联系、趋势、发现突发事件，从而更好地指导各种商业活动，为决策提供有力的帮助。这样，一个商业组织就成为一个可以自适应、不断学习和提高的有机体了。</p>
<p>对网站来说，数据采集和挖掘就更为重要了。例如，某个用户去年访问量很大，今年却突然大幅度减少，原因可能是下面几方面：</p>
<ul>
<li><span style="background-color: #ffffff;">出现了竞争对手挖角；</span></li>
<li><span style="background-color: #ffffff;">客户满意度出现问题，不愿意使用了；</span></li>
<li><span style="background-color: #ffffff;">统计工具出错；</span></li>
<li><span style="background-color: #ffffff;">甚至我们的网页出问题，使用户无法访问，等等；</span></li>
</ul>
<p>无论如何，如果能够及时发现这个用户的趋势，就可以尽快与用户取得联系，找出确切原因，解决，从而挽留住更多类似的客户。</p>
<p>问题是，如何才能及时发现这种趋势上的骤变呢？以前使用Google Analytics，虽然能够统计出各种基本的数据，但是对于趋势判断不直观，需要手工去统计，浪费时间不说，往往找不出想要的数据。也就是仅仅做到了数据的自动采集。例如上面的例子，如果不知道某个用户是在某个时间段开始才会大幅减少访问量，就想在每天浩若烟海的数据中，把他及时识别出来，几乎不可能。</p>
<p>现在Analytics推出了<a href="http://www.youtube.com/watch?v=gRvUpoTT-Bo" target="_blank">Intelligence &amp; Custom Alerts</a>，就等于在自动采集的基础上，增加了自动挖掘和透视的功能，把每天被动的寻找关键趋势的过程，变成了自动发现并提醒。这样就不用把时间浪费在每天的分析上了，省时省力，还更准确，更及时。</p>
<p><img class="alignnone size-full wp-image-144" title="alerts" src="http://blog.liuhongwei.cn/wp-content/uploads/2009/11/alerts.jpg" alt="alerts" width="563" height="524" /></p>
<p>Analytics可以设置敏感度，以调节提醒的数量。除了有自动的alert之外，还可以定制。简单浏览了一下，发现自动的alert已经很全面了，列几个比较实用的</p>
<ul>
<li>某个群体在线时间大增：比如某个国家、老用户、某个landing页面</li>
<li>某个群体转换率大增</li>
<li>某个群体访问量大增</li>
<li>某个群体访问价值大增</li>
<li>来自某个群体的收入大增</li>
</ul>
<p>当然了，现在的alert还处于beta阶段，复杂的提醒还无法实现，好在Analytics提供 API，可以用来开发自己的应用。毕竟站在巨人的肩膀上，可以拥有不同的视野和起点。Google精选的API应用：</p>
<p><a href="http://code.google.com/apis/analytics/docs/gdata/gdataGallery.html">http://code.google.com/apis/analytics/docs/gdata/gdataGallery.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.liuhongwei.cn/biz/analytics-intelligence-alert/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>开心大盗，开源免费的开心网外挂服务</title>
		<link>http://blog.liuhongwei.cn/my-opensource/kaixin001-dadao-free/</link>
		<comments>http://blog.liuhongwei.cn/my-opensource/kaixin001-dadao-free/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 07:54:48 +0000</pubDate>
		<dc:creator>Harry</dc:creator>
				<category><![CDATA[开源]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[GWT]]></category>

		<guid isPermaLink="false">http://blog.liuhongwei.cn/?p=125</guid>
		<description><![CDATA[自从分析了开心网成功的秘诀——越堕落越快乐之后，开心网上的好友越来越多，当然可偷的东西也更多了，真是偷菜偷到手软。每天偷菜、偷动物花费了大量的时间，用了几个外挂，一是不知道实现方式，担心帐号被封；二是本地网速的原因，速度仍然不尽如人意。于是利用闲暇时间，自己动手写了一个开心网外挂的在线服务，开心大盗，随时随地，轻轻一点，手到擒来。外挂运行于服务器上，速度比本地运行更快。 开心大盗采用Java版Google App Engine开发，整合了Google的GWT。开源，免费，放心使用！ 开心大盗：http://tou001.appspot.com/ 源代码：http://code.google.com/p/kaixindadao/ 作者博客：http://blog.liuhongwei.cn/ 如果您好东西太多，想分享给作者，并有重度受虐倾向的话，请点击这里添加作者为您的开心网好友 开心大盗功能： 收获自己的菜地 偷好友的菜地 收获牧场 TODO 偷牧场 TODO 停车 TODO 种菜 TODO 买动物 TODO 做最赚钱的工作 访问朋友买卖，每天获取100块 马甲买卖炒作 TODO]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-126" title="kaixin_dadao" src="http://blog.liuhongwei.cn/wp-content/uploads/2009/09/kaixin_dadao.png" alt="kaixin_dadao" width="148" height="67" />自从分析了<a href="http://blog.liuhongwei.cn/web2/kaixin001-evil/">开心网成功的秘诀——越堕落越快乐</a>之后，开心网上的好友越来越多，当然可偷的东西也更多了，真是偷菜偷到手软。每天偷菜、偷动物花费了大量的时间，用了几个外挂，一是不知道实现方式，担心帐号被封；二是本地网速的原因，速度仍然不尽如人意。于是利用闲暇时间，自己动手写了一个开心网外挂的在线服务，<a href="http://tou001.appspot.com/">开心大盗</a>，随时随地，轻轻一点，手到擒来。外挂运行于服务器上，速度比本地运行更快。</p>
<p>开心大盗采用Java版<a href="http://blog.liuhongwei.cn/tag/google-app-engine/">Google App Engine</a>开发，整合了Google的<a href="http://blog.liuhongwei.cn/tag/GWT/">GWT</a>。<strong>开源</strong>，<strong>免费，放心使用</strong>！</p>
<ul>
<li><strong><span style="color: #0000ff;">开心大盗：</span></strong><strong><span style="color: #0000ff;"><a href="http://tou001.appspot.com/">http://tou001.appspot.com/</a></span></strong></li>
<li>源代码：<a href="http://code.google.com/p/kaixindadao/">http://code.google.com/p/kaixindadao/</a></li>
<li>作者博客：<a href="http://blog.liuhongwei.cn/">http://blog.liuhongwei.cn/</a></li>
<li>如果您好东西太多，想分享给作者，并有重度受虐倾向的话，<a href="http://www.kaixin001.com/reg/?uid=39063077&amp;usercode=920880c26c8ddaf2a42101b182b3fb41_39063077">请点击这里添加作者为您的开心网好友</a></li>
</ul>
<p><strong><img class="alignleft size-full wp-image-127" title="kaixin_dadao_home_dogs" src="http://blog.liuhongwei.cn/wp-content/uploads/2009/09/home_dogs.png" alt="kaixin_dadao_home_dogs" width="488" height="216" />开心大盗功能：</strong></p>
<ul>
<li>收获自己的菜地</li>
<li>偷好友的菜地</li>
<li>收获牧场 TODO</li>
<li>偷牧场 TODO</li>
<li>停车 TODO</li>
<li>种菜 TODO</li>
<li>买动物 TODO</li>
<li>做最赚钱的工作</li>
<li>访问朋友买卖，每天获取100块</li>
<li>马甲买卖炒作 TODO</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.liuhongwei.cn/my-opensource/kaixin001-dadao-free/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Google Insights揭示web2.0应用趋势</title>
		<link>http://blog.liuhongwei.cn/marketing/google-insights-web2-0/</link>
		<comments>http://blog.liuhongwei.cn/marketing/google-insights-web2-0/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 15:31:55 +0000</pubDate>
		<dc:creator>Harry</dc:creator>
				<category><![CDATA[市场与销售]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[unveil]]></category>
		<category><![CDATA[推荐]]></category>
		<category><![CDATA[教学]]></category>

		<guid isPermaLink="false">http://blog.liuhongwei.cn/?p=121</guid>
		<description><![CDATA[Google Insights是Google推出的一项服务，比Google Trends更进一步，可以显示和比较一段时间内，在各个地区，不同的关键字的热度和趋势。对于研究和分析市场趋势，有很强的指导意义。 Google Insights最多可以比较5个关键字，可以把比较的结果存放在iGoogle中，和嵌入网页。 作为示例，输入了现在比较热门的一些web2.0应用：youtube，facebook，twitter，myspace，yahoo。从比较的结果可以看出 myspace确实在走下坡路 youtube势头很猛，Google这16亿没有白花 FaceBook的上升势头，斜率最高，特别是到了2009年，迅速超越所有其他应用，难怪当年Google为其股价150亿 twitter到了2009年，确实火爆起来了，不过微型博客毕竟还是微型的，没法跟其他应用比 Yahoo虽说危机重重，不过还在稳步增长，最近Yahoo又推出了meme等一系列应用，更是让人看到了希望，web2.0时代，后来者往往才是创造奇迹的赢家。]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-122" title="google_insight_web2.0" src="http://blog.liuhongwei.cn/wp-content/uploads/2009/09/google_insight_web2.0.png" alt="google_insight_web2.0" width="323" height="278" /><a href="http://www.google.com/insights/search/">Google Insights</a>是Google推出的一项服务，比Google Trends更进一步，可以显示和比较一段时间内，在各个地区，不同的关键字的热度和趋势。对于研究和分析市场趋势，有很强的指导意义。</p>
<p>Google Insights最多可以比较5个关键字，可以把比较的结果存放在iGoogle中，和嵌入网页。</p>
<p>作为示例，输入了现在比较热门的一些web2.0应用：youtube，facebook，twitter，myspace，yahoo。从比较的结果可以看出</p>
<ul>
<li>myspace确实在走下坡路</li>
<li>youtube势头很猛，Google这16亿没有白花</li>
<li>FaceBook的上升势头，斜率最高，特别是到了2009年，迅速超越所有其他应用，难怪当年Google为其股价150亿</li>
<li><a href="http://twitter.com/harryempire">twitter</a>到了2009年，确实火爆起来了，不过微型博客毕竟还是微型的，没法跟其他应用比</li>
<li>Yahoo虽说危机重重，不过还在稳步增长，最近Yahoo又推出了<a href="http://meme.yahoo.com/">meme</a>等一系列应用，更是让人看到了希望，web2.0时代，后来者往往才是创造奇迹的赢家。</li>
</ul>
<p><script src="http://www.gmodules.com/ig/ifr?url=http%3A%2F%2Fwww.google.com%2Fig%2Fmodules%2Fgoogle_insightsforsearch_interestovertime_searchterms.xml&amp;up__property=empty&amp;up__search_terms=facebook%7Cyoutube%7Ctwitter%7Cmyspace%7Cyahoo&amp;up__location=US&amp;up__category=0&amp;up__time_range=empty&amp;up__compare_to_category=false&amp;synd=ig&amp;w=320&amp;h=350&amp;lang=en-US&amp;title=Google+Insights+for+Search&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js" type="text/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.liuhongwei.cn/marketing/google-insights-web2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selenium测试支持JavaScript</title>
		<link>http://blog.liuhongwei.cn/agile/selenium-javascript/</link>
		<comments>http://blog.liuhongwei.cn/agile/selenium-javascript/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 12:44:21 +0000</pubDate>
		<dc:creator>Harry</dc:creator>
				<category><![CDATA[Agile开发]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[测试]]></category>

		<guid isPermaLink="false">http://blog.liuhongwei.cn/?p=92</guid>
		<description><![CDATA[Agile自动测试的重要利器，Selenium测试，功能强劲，适合对web程序进行自动测试。测试脚本，一次编写，反复自动测试，在开发过程中，起到了将功能锁定的作用。 今天有同事问，Selenium测试脚本，是否可以获取当前日期？查了一下发现可以。而且可以把当前日期以各种形式保存在脚本中，供此后输入、比较等操作。这一切源于，Selenium测试脚本可以执行JavaScript片段，这样，JavaScript具有的各种功能，都可以提供给Selenium测试了。 下面这个脚本，可以获取当前日期，可以把日期存储在currentdate变量中，可以用该变量比较界面上的值，还可以把变量的值输入到浏览器的输入框。 &#60;tr&#62; &#60;td&#62;type&#60;/td&#62; &#60;td&#62;classCIpRanges[0].readableIpAddressRange&#60;/td&#62; &#60;td&#62;javascript{&#38;quot;&#38;quot;+((new Date()).getMonth()+1)+&#38;quot;/&#38;quot;+(new Date()).getDate()+&#38;quot;/&#38;quot;+(new Date()).getFullYear()}&#60;/td&#62; &#60;/tr&#62; &#60;tr&#62; &#60;td&#62;storeEval&#60;/td&#62; &#60;td&#62;javascript{&#38;quot;&#38;quot;+((new Date()).getMonth()+1)+&#38;quot;/&#38;quot;+(new Date()).getDate()+&#38;quot;/&#38;quot;+(new Date()).getFullYear()}&#60;/td&#62; &#60;td&#62;currentdate&#60;/td&#62; &#60;/tr&#62; &#60;tr&#62; &#60;td&#62;assertValue&#60;/td&#62; &#60;td&#62;classCIpRanges[0].readableIpAddressRange&#60;/td&#62; &#60;td&#62;${currentdate}&#60;/td&#62; &#60;/tr&#62;]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.liuhongwei.cn/category/agile/dmap/">Agile</a>自动测试的重要利器，<a href="http://seleniumhq.org/">Selenium</a>测试，功能强劲，适合对web程序进行自动测试。测试脚本，一次编写，反复自动测试，在开发过程中，起到了将功能锁定的作用。</p>
<p>今天有同事问，Selenium测试脚本，是否可以获取当前日期？查了一下发现可以。而且可以把当前日期以各种形式保存在脚本中，供此后输入、比较等操作。这一切源于，<a href="http://seleniumhq.org/docs/04_selenese_commands.html#javascript-and-selenese-parameters">Selenium测试脚本可以执行JavaScript片段</a>，这样，JavaScript具有的各种功能，都可以提供给Selenium测试了。</p>
<p>下面这个脚本，可以获取当前日期，可以把日期存储在currentdate变量中，可以用该变量比较界面上的值，还可以把变量的值输入到浏览器的输入框。</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tr<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>type<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>classCIpRanges[0].readableIpAddressRange<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>javascript{<span style="color: #ddbb00;">&amp;quot;&amp;quot;</span>+((new Date()).getMonth()+1)+<span style="color: #ddbb00;">&amp;quot;</span>/<span style="color: #ddbb00;">&amp;quot;</span>+(new Date()).getDate()+<span style="color: #ddbb00;">&amp;quot;</span>/<span style="color: #ddbb00;">&amp;quot;</span>+(new Date()).getFullYear()}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tr<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tr<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>storeEval<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>javascript{<span style="color: #ddbb00;">&amp;quot;&amp;quot;</span>+((new Date()).getMonth()+1)+<span style="color: #ddbb00;">&amp;quot;</span>/<span style="color: #ddbb00;">&amp;quot;</span>+(new Date()).getDate()+<span style="color: #ddbb00;">&amp;quot;</span>/<span style="color: #ddbb00;">&amp;quot;</span>+(new Date()).getFullYear()}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>currentdate<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tr<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tr<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>assertValue<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>classCIpRanges[0].readableIpAddressRange<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${currentdate}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tr<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.liuhongwei.cn/agile/selenium-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在线脑图制作利器：MindMeister</title>
		<link>http://blog.liuhongwei.cn/web2/gtd-mindmeister/</link>
		<comments>http://blog.liuhongwei.cn/web2/gtd-mindmeister/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 12:52:04 +0000</pubDate>
		<dc:creator>Harry</dc:creator>
				<category><![CDATA[Web2.0]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[脑图]]></category>
		<category><![CDATA[推荐]]></category>

		<guid isPermaLink="false">http://blog.liuhongwei.cn/?p=82</guid>
		<description><![CDATA[一直在使用Mindjet的Mind Manager Pro，制作脑图。很好用，不过有时候在不同电脑上就觉得很不方便了。最近发现了一个在线制作脑图的工具，MindMeister，可以随时保存，然后在其他电脑上继续编辑。Get Things Done！ 画脑图有很多好处，比如记录头脑风暴，分享思想，计划项目，可视化思考。特别适用做课堂笔记，思考一件事情，做计划等等。MindMeister的功能很强大，除了在线创建脑图之外，还可以与朋友实时合作，一个人创建的部分会自动发送给其他人。它还提供分享，密码保护，导出成PDF或各种图片。除此之外，MindMeister还有离线模式，可以嵌入iGoogle，提供IE和FireFox浏览器扩展，更为开发人员提供API。基本上能想到的都有了！ 最让人意想不到的是，这么强大的工具，居然是用JavaScript制作了，拖拽一下首页上的demo就知道了。]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-83" title="在线脑图工具mindmeister" src="http://blog.liuhongwei.cn/wp-content/uploads/2009/07/mindmeister.png" alt="在线脑图工具mindmeister" width="242" height="42" />一直在使用Mindjet的<a href="http://www.mindjet.com/">Mind Manager Pro</a>，制作脑图。很好用，不过有时候在不同电脑上就觉得很不方便了。最近发现了一个在线制作脑图的工具，<a href="http://www.mindmeister.com/">MindMeister</a>，可以随时保存，然后在其他电脑上继续编辑。Get Things Done！</p>
<p>画脑图有很多好处，比如记录头脑风暴，分享思想，计划项目，可视化思考。特别适用做课堂笔记，思考一件事情，做计划等等。MindMeister的功能很强大，除了在线创建脑图之外，还可以与朋友实时合作，一个人创建的部分会自动发送给其他人。它还提供分享，密码保护，导出成PDF或各种图片。除此之外，MindMeister还有离线模式，可以嵌入iGoogle，提供IE和FireFox浏览器扩展，更为开发人员提供API。基本上能想到的都有了！</p>
<p>最让人意想不到的是，这么强大的工具，居然是用JavaScript制作了，拖拽一下首页上的demo就知道了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.liuhongwei.cn/web2/gtd-mindmeister/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Javascript在线调试工具推荐：Google Code Playground</title>
		<link>http://blog.liuhongwei.cn/web2/javascript%e5%9c%a8%e7%ba%bf%e8%b0%83%e8%af%95%e5%b7%a5%e5%85%b7%e6%8e%a8%e8%8d%90%ef%bc%9agoogle-code-playground/</link>
		<comments>http://blog.liuhongwei.cn/web2/javascript%e5%9c%a8%e7%ba%bf%e8%b0%83%e8%af%95%e5%b7%a5%e5%85%b7%e6%8e%a8%e8%8d%90%ef%bc%9agoogle-code-playground/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 03:07:17 +0000</pubDate>
		<dc:creator>Harry</dc:creator>
				<category><![CDATA[Web2.0]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://blog.liuhongwei.cn/?p=48</guid>
		<description><![CDATA[Google Code Playground提供了一个在线版的Javascript、Ajax的编辑、开发和调试环境，而且可以方便的访问相应的文档。 内置了很多常用的Google API的示例， Language API Blogger API Calendar API Earth API Feeds API Friend Connect Javascript Maps API Search API Visualization API YouTube API 包括几个Ajax库 jQuery jQueryUI MooTools...]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-49" title="Google code playground" src="http://blog.liuhongwei.cn/wp-content/uploads/2009/06/google-code-playground.gif" alt="Google code playground" width="600" height="527" /></p>
<p><a href="http://code.google.com/apis/ajax/playground/">Google Code Playground</a>提供了一个在线版的Javascript、Ajax的编辑、开发和调试环境，而且可以方便的访问相应的文档。</p>
<p>内置了很多常用的Google API的示例，</p>
<ul>
<li>Language API</li>
<li>Blogger API</li>
<li>Calendar API</li>
<li>Earth API</li>
<li>Feeds API</li>
<li>Friend Connect</li>
<li>Javascript</li>
<li>Maps API</li>
<li>Search API</li>
<li>Visualization API</li>
<li>YouTube API</li>
</ul>
<p>包括几个Ajax库</p>
<ul>
<li>jQuery</li>
<li>jQueryUI</li>
<li>MooTools</li>
<li>Dojo</li>
<li>Prototype Scriptaculous</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.liuhongwei.cn/web2/javascript%e5%9c%a8%e7%ba%bf%e8%b0%83%e8%af%95%e5%b7%a5%e5%85%b7%e6%8e%a8%e8%8d%90%ef%bc%9agoogle-code-playground/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

