<?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/"
	>

<channel>
	<title>THE MOMENT, THE MEMENTO</title>
	<atom:link href="http://www.windwood.name/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.windwood.name/blog</link>
	<description>When the Moment became Memento</description>
	<pubDate>Sun, 23 Oct 2011 14:53:59 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>推介“Google 编程学院”</title>
		<link>http://www.windwood.name/blog/archives/566.html</link>
		<comments>http://www.windwood.name/blog/archives/566.html#comments</comments>
		<pubDate>Sun, 23 Oct 2011 14:53:59 +0000</pubDate>
		<dc:creator>吴德文</dc:creator>
		
		<category><![CDATA[uncategorized]]></category>

		<category><![CDATA[Google]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.windwood.name/blog/?p=566</guid>
		<description><![CDATA[Something you should know, Google give us “Google 编程学院”：
该网站提供辅导手册和示例课程内容，以便 CS 学生和教师可以了解有关当前计算技术和范例的详情。尤其是，该内容获得了创造性共用许可，使 CS 教师可以轻松地在他们各自的课堂上使用。
课程部分包含各种主题领域的教程、演讲幻灯片和问题集。

AJAX 编程
算法
分布式系统
网络安全
语言

在“工具 101”部分，您将找到一系列说明，对计算机科学中的一些常用工具（例如版本控制系统和数据库）进行解释。
CS 课程搜索将帮助您找到发布到网络上的教学资料，这些资料由来自世界各地的 CS 部门的教员发布。您可以细分搜索，以仅显示课程、作业，或一组课程的参考资料。
我们期待收到您的反馈。如果您有疑问、建议或可供分享的材料，请访问Google 代码教育版论坛。
]]></description>
			<content:encoded><![CDATA[<p>Something you should know, Google give us <a title="Google编程学院" href="http://code.google.com/intl/zh-CN/edu/" target="_blank">“Google 编程学院”</a>：</p>
<blockquote><p><span>该网站提供辅导手册和示例课程内容，以便 CS 学生和教师可以了解有关当前计算技术和范例的详情。尤其是，该内容获得了创造性共用许可，使 CS 教师可以轻松地在他们各自的课堂上使用。</span></p>
<p>课程部分包含各种主题领域的教程、演讲幻灯片和问题集。</p>
<ul>
<li>AJAX 编程</li>
<li>算法</li>
<li>分布式系统</li>
<li>网络安全</li>
<li>语言</li>
</ul>
<p>在“工具 101”部分，您将找到一系列说明，对计算机科学中的一些常用工具（例如版本控制系统和数据库）进行解释。</p>
<p>CS 课程搜索将帮助您找到发布到网络上的教学资料，这些资料由来自世界各地的 CS 部门的教员发布。您可以细分搜索，以仅显示课程、作业，或一组课程的参考资料。</p>
<p><span>我们期待收到您的反馈。如果您有疑问、建议或可供分享的材料，请访问<a href="http://groups.google.com/group/Google-Code-for-Educators">Google 代码教育版论坛</a>。</span></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.windwood.name/blog/archives/566.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>由流星想开去</title>
		<link>http://www.windwood.name/blog/archives/565.html</link>
		<comments>http://www.windwood.name/blog/archives/565.html#comments</comments>
		<pubDate>Mon, 10 Oct 2011 18:05:32 +0000</pubDate>
		<dc:creator>吴德文</dc:creator>
		
		<category><![CDATA[uncategorized]]></category>

		<category><![CDATA[科幻]]></category>

		<guid isPermaLink="false">http://www.windwood.name/blog/?p=565</guid>
		<description><![CDATA[据说今天有流星，不过似乎没有什么人看到，或者说没有什么人去看（也许已经麻木了），因为微博上面没有什么看到关于这个的热点话题（例如，“准备去看”、“正在等”、“哇～～～”）。
在洗澡的时候，就在回忆当初2000（还是2001）年在楼顶看流星雨的情景，幻想自己拿着手机拍着一个个流星飞过的场景，然后一颗流星由远及近，镜头慢慢拉近，然后是特写。等等，如此的话，流星不就是要砸下来个正着？如果流星要砸下来，我是该跑下楼，还是不跑？
思绪忽然又想到，似乎没有听说过近代以来流星或者陨石落在城市里，砸中楼房什么的。当然，也可能是我孤陋寡闻，也懒得去查证了。至少大部分的科幻电影，都是以陨石或者外星人飞船落在野外为开场白的。也许破坏力太大的陨石早就被地球护卫队的导弹啊TNT啊什么的给灭了吧。
忽然又想到，最近看的几部电影里，外星飞船都是直接biu的一下就出现在全球各大城市上空的，地球护卫队怎么不灵了呢？嗯，人家外星人科技先进，会隐身术的。
不错，飞船的隐身术是个好东西，而且几乎还没有能破解的。可是即便隐身，飞船也不可能直接在大气层出现的，到了太阳系或者月球轨道以外就必须得跳出超空间了。也就是说飞船是一点点接近地球，并进入地球大气层的。虽然光学、电学、磁场都可能无法观测的隐身的飞船，但是引力场应该无法隐藏吧。如果月球或者地球卫星身边突然出现一个巨大的外星人母舰，它的运行轨道是否会被引力场干扰而有所偏移呢，这样是不是就可以触发警报呢？当然，就是不知道卫星对于引力场的变化是否有那么敏感了。嗯，这个想法还是留给物理科学家去思考吧。
突然又想到，其实隐身术也不是没有破解过，至少《星际迷航》里企业号就自己尾部的离子流的变化而发现隐身粘在自己飞船上的外星人飞船。也就是说，通过某些“场”还是有可能的。此外，似乎飞船在脱离曲速飞行跳出超空间的那一瞬间还不是隐形的，也就是说，只要有足够的探测器在太阳系，还是有可能发现外星人飞船的。。。。。
嗯，好像想太多了，还是睡觉去罢。。。。
]]></description>
			<content:encoded><![CDATA[<p>据说今天有流星，不过似乎没有什么人看到，或者说没有什么人去看（也许已经麻木了），因为微博上面没有什么看到关于这个的热点话题（例如，“准备去看”、“正在等”、“哇～～～”）。</p>
<p>在洗澡的时候，就在回忆当初2000（还是2001）年在楼顶看流星雨的情景，幻想自己拿着手机拍着一个个流星飞过的场景，然后一颗流星由远及近，镜头慢慢拉近，然后是特写。等等，如此的话，流星不就是要砸下来个正着？如果流星要砸下来，我是该跑下楼，还是不跑？</p>
<p>思绪忽然又想到，似乎没有听说过近代以来流星或者陨石落在城市里，砸中楼房什么的。当然，也可能是我孤陋寡闻，也懒得去查证了。至少大部分的科幻电影，都是以陨石或者外星人飞船落在野外为开场白的。也许破坏力太大的陨石早就被地球护卫队的导弹啊TNT啊什么的给灭了吧。</p>
<p>忽然又想到，最近看的几部电影里，外星飞船都是直接biu的一下就出现在全球各大城市上空的，地球护卫队怎么不灵了呢？嗯，人家外星人科技先进，会隐身术的。</p>
<p>不错，飞船的隐身术是个好东西，而且几乎还没有能破解的。可是即便隐身，飞船也不可能直接在大气层出现的，到了太阳系或者月球轨道以外就必须得跳出超空间了。也就是说飞船是一点点接近地球，并进入地球大气层的。虽然光学、电学、磁场都可能无法观测的隐身的飞船，但是引力场应该无法隐藏吧。如果月球或者地球卫星身边突然出现一个巨大的外星人母舰，它的运行轨道是否会被引力场干扰而有所偏移呢，这样是不是就可以触发警报呢？当然，就是不知道卫星对于引力场的变化是否有那么敏感了。嗯，这个想法还是留给物理科学家去思考吧。</p>
<p>突然又想到，其实隐身术也不是没有破解过，至少《星际迷航》里企业号就自己尾部的离子流的变化而发现隐身粘在自己飞船上的外星人飞船。也就是说，通过某些“场”还是有可能的。此外，似乎飞船在脱离曲速飞行跳出超空间的那一瞬间还不是隐形的，也就是说，只要有足够的探测器在太阳系，还是有可能发现外星人飞船的。。。。。</p>
<p>嗯，好像想太多了，还是睡觉去罢。。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.windwood.name/blog/archives/565.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>如何控制项目产品的功能</title>
		<link>http://www.windwood.name/blog/archives/564.html</link>
		<comments>http://www.windwood.name/blog/archives/564.html#comments</comments>
		<pubDate>Tue, 15 Feb 2011 05:53:06 +0000</pubDate>
		<dc:creator>吴德文</dc:creator>
		
		<category><![CDATA[uncategorized]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.windwood.name/blog/?p=564</guid>
		<description><![CDATA[——《为什么 Dropbox 比同类产品更受欢迎？》读后感
这个副标题，本来是想放到文章标题的，但是太长了，只好作罢。
同学通过新浪微博推荐了这篇文章，我就不再重复叙述原文的内容，只写我的感受。
文中提到Dropbox成功的原因除了其公关策略的成功外，还着重提到了一点：产品功能的控制。Syncplicity提供了多文件夹同步的功能。而Dropbox却简化了这一个功能，只因为其无法让用户易于使用而且存在无法完全修复的问题。
如果你刚刚建立起公司，那么最好保持产品简洁，并专注于现有功能，将一件事做到极致。用户永远会要求更多功能，提出他们的问题并期待你修复。我的观点是，如果他们提出的问题在 80% 的用户中存在，那么才值得去做。除非你资源充足，否则最好还是专注于核心竞争力。
保持产品简洁的另一个优势是，这使得销售和客户支持变得简单。如果你的产品太复杂，势必意味着你将花费更多时间用于客户支持和 Bug 修复。“我时刻在此等候您的反馈”——这并不好玩。
联想到最近正在进行的一个项目，系统规划的时候预计的模块很多，本来是要分为多个版本阶段来实现的。可是最后项目实施的时候，却把大部分的模块都同时进行了。导致开发的时候，开发人员的时间和人力都分散了，每个模块都无法做到最好，甚至于有些模块的功能需求有膨胀起来，使得项目更加的复杂。
看来，有的时候还是要像Apple Inc.学习，简洁才是美。一开始不要把事情搞得太复杂，千里之行始于足下，从最开始就应该一步一个脚印好好的走好。先实现基本的功能，新的功能如果80%的用户都需要，那么才有必要去做。
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">——<a href="http://www.alibuybuy.com/posts/54778.html?jt_ss=tsina">《为什么 Dropbox 比同类产品更受欢迎？》</a>读后感</p>
<p>这个副标题，本来是想放到文章标题的，但是太长了，只好作罢。</p>
<p>同学通过新浪微博推荐了这篇文章，我就不再重复叙述原文的内容，只写我的感受。</p>
<p>文中提到Dropbox成功的原因除了其公关策略的成功外，还着重提到了一点：产品功能的控制。Syncplicity提供了多文件夹同步的功能。而Dropbox却简化了这一个功能，只因为其无法让用户易于使用而且存在无法完全修复的问题。</p>
<p style="padding-left: 30px;">如果你刚刚建立起公司，那么最好<strong>保持产品简洁，并专注于现有功能，将一件事做到极致</strong>。用户永远会要求更多功能，提出他们的问题并期待你修复。我的观点是，如果他们提出的问题在 80% 的用户中存在，那么才值得去做。除非你资源充足，否则最好还是专注于核心竞争力。</p>
<p style="padding-left: 30px;">保持产品简洁的另一个优势是，这使得销售和客户支持变得简单。如果你的产品太复杂，势必意味着你将花费更多时间用于客户支持和 Bug 修复。“我时刻在此等候您的反馈”——这并不好玩。</p>
<p>联想到最近正在进行的一个项目，系统规划的时候预计的模块很多，本来是要分为多个版本阶段来实现的。可是最后项目实施的时候，却把大部分的模块都同时进行了。导致开发的时候，开发人员的时间和人力都分散了，每个模块都无法做到最好，甚至于有些模块的功能需求有膨胀起来，使得项目更加的复杂。</p>
<p>看来，有的时候还是要像Apple Inc.学习，简洁才是美。一开始不要把事情搞得太复杂，千里之行始于足下，从最开始就应该一步一个脚印好好的走好。先实现基本的功能，新的功能如果80%的用户都需要，那么才有必要去做。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.windwood.name/blog/archives/564.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>IE下HTML标记的click方法的标准化（兼容化）</title>
		<link>http://www.windwood.name/blog/archives/562.html</link>
		<comments>http://www.windwood.name/blog/archives/562.html#comments</comments>
		<pubDate>Sun, 09 Jan 2011 00:58:07 +0000</pubDate>
		<dc:creator>吴德文</dc:creator>
		
		<category><![CDATA[uncategorized]]></category>

		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.windwood.name/blog/?p=562</guid>
		<description><![CDATA[昨天修改一个网站使其能在Chrome下正常显示，其中很多要改的是Javascript的代码。修改的过程中才充分意识到IE提供了太多的非标准的功能调用了，最严重的就是.click()方法了。
在一个功能里要程序能自动点击一些链接，原先的设计是找到a元素，然后执行元素的.click()方法，这个方法在Chrome下不能执行，而且也找不到标准的相对应的方法。试图从jQuery的源码里找到它的click()方法的实现，但是代码太复杂看不懂。
在Google上搜索了好多条目后，终于在一个网页（最原始的出处已经无从分辨了，只好贴第一个找到的）里找到了解决方案：
if(document.all)
{
document.getElementById(name).click();
}
else
{
var evt = document.createEvent(&#8221;MouseEvents&#8221;);
evt.initEvent(&#8221;click&#8221;, true, true);
document.getElementById(name).dispatchEvent(evt);
}
有用的就是else下面那三行哈，相信以后还会经常用到，先记到这里。
]]></description>
			<content:encoded><![CDATA[<p>昨天修改一个网站使其能在Chrome下正常显示，其中很多要改的是Javascript的代码。修改的过程中才充分意识到IE提供了太多的非标准的功能调用了，最严重的就是.click()方法了。</p>
<p>在一个功能里要程序能自动点击一些链接，原先的设计是找到a元素，然后执行元素的.click()方法，这个方法在Chrome下不能执行，而且也找不到标准的相对应的方法。试图从jQuery的源码里找到它的click()方法的实现，但是代码太复杂看不懂。</p>
<p>在Google上搜索了好多条目后，终于在一个<a title="FireFox与IE 下js兼容触发click事件的代码" href="http://www.jb51.net/article/16549.htm">网页</a>（最原始的出处已经无从分辨了，只好贴第一个找到的）里找到了解决方案：</p>
<p style="padding-left: 60px;">if(document.all)<br />
{<br />
document.getElementById(name).click();<br />
}<br />
else<br />
{<br />
var evt = document.createEvent(&#8221;MouseEvents&#8221;);<br />
evt.initEvent(&#8221;click&#8221;, true, true);<br />
document.getElementById(name).dispatchEvent(evt);<br />
}</p>
<p>有用的就是else下面那三行哈，相信以后还会经常用到，先记到这里。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.windwood.name/blog/archives/562.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>发现新病毒- Boot Time(lnajr, stxdnpbp.dll)</title>
		<link>http://www.windwood.name/blog/archives/560.html</link>
		<comments>http://www.windwood.name/blog/archives/560.html#comments</comments>
		<pubDate>Tue, 02 Nov 2010 06:11:23 +0000</pubDate>
		<dc:creator>吴德文</dc:creator>
		
		<category><![CDATA[uncategorized]]></category>

		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.windwood.name/blog/?p=560</guid>
		<description><![CDATA[今天中午发现电脑有一些异常（忘记如何异常法了，只觉得有些不对劲），于是就想起来检查系统服务项目。检查后发现多了一个“Boot Time”的服务（服务名为lnajr，显示名为Boot Time），这是一个通过svchost.exe -k netsvcs加载的程序，其描述是“监测和监视新硬盘驱动器并向逻辑磁盘管理器管理服务发送卷的信息以便配置。如果此服务被终止，动态磁盘状态和配置信息会过时。如果此服务被禁用，任何依赖它的服务将无法启动。”。开始我还以为这个是某个驱动程序，后来觉得描述和“Logical Disk Manager”服务有些相关，就比较了一下发现居然是一样的描述。这就表明这肯定是一个恶意程序乃至是病毒的服务项了。
打开注册表想看看这个服务项的内容，却发现lnajr项下面是空空的。连一点“Boot Time”的信息都没有，不要说ServiceDll了。只好再打开Autoruns这个工具来查看，却发现根本就找不到lnajr这个项目。最后只好找出IceSword这个工具来，倒是在这里的注册表里查到了这个服务的信息：Enum（0: Root\LEGACY_LNAJR\0000; Count: 0&#215;1; NextInstance: 0&#215;1），Parameters（ServiceDll: C:\WINDOWS\system32\stxdnpbp.dll）。Google这个stxdnpbp.dll文件却查不到结果，看来只好自己手工清理了。
在磁盘中找到stxdnpbp.dll文件后，却发现无法将其拷贝到其它目录，用ATTRIB修改其属性也不行，只能改名。由于不确定这个dll是否已经加载了，就只好先改名重启。重启后，想起来应该查看这个文件的安全权限，发现其只有一个EveryOne的遍历权限，添加了管理员的权限后，所有的对其的操作都可以进行了。
分析了这个文件后，发现不到什么线索，只好将文件备份留底，然后把注册表清理掉。又看了一下系统日志，也只有今天一开机后有错误说“Boot Time”服务无法启动，而之前都没有这个服务的信息，看来这个病毒是昨天或者今天才驻进来的，应该不会有太大危险了。这个lnajr病毒的分析就只能暂时告一个段落了。不知道过一段时间查毒软件可不可以查到这个病毒了。
]]></description>
			<content:encoded><![CDATA[<p>今天中午发现电脑有一些异常（忘记如何异常法了，只觉得有些不对劲），于是就想起来检查系统服务项目。检查后发现多了一个“Boot Time”的服务（服务名为lnajr，显示名为Boot Time），这是一个通过svchost.exe -k netsvcs加载的程序，其描述是“监测和监视新硬盘驱动器并向逻辑磁盘管理器管理服务发送卷的信息以便配置。如果此服务被终止，动态磁盘状态和配置信息会过时。如果此服务被禁用，任何依赖它的服务将无法启动。”。开始我还以为这个是某个驱动程序，后来觉得描述和“Logical Disk Manager”服务有些相关，就比较了一下发现居然是一样的描述。这就表明这肯定是一个恶意程序乃至是病毒的服务项了。</p>
<p>打开注册表想看看这个服务项的内容，却发现lnajr项下面是空空的。连一点“Boot Time”的信息都没有，不要说ServiceDll了。只好再打开Autoruns这个工具来查看，却发现根本就找不到lnajr这个项目。最后只好找出IceSword这个工具来，倒是在这里的注册表里查到了这个服务的信息：Enum（0: Root\LEGACY_LNAJR\0000; Count: 0&#215;1; NextInstance: 0&#215;1），Parameters（ServiceDll: C:\WINDOWS\system32\stxdnpbp.dll）。Google这个stxdnpbp.dll文件却查不到结果，看来只好自己手工清理了。</p>
<p>在磁盘中找到stxdnpbp.dll文件后，却发现无法将其拷贝到其它目录，用ATTRIB修改其属性也不行，只能改名。由于不确定这个dll是否已经加载了，就只好先改名重启。重启后，想起来应该查看这个文件的安全权限，发现其只有一个EveryOne的遍历权限，添加了管理员的权限后，所有的对其的操作都可以进行了。</p>
<p>分析了这个文件后，发现不到什么线索，只好将文件备份留底，然后把注册表清理掉。又看了一下系统日志，也只有今天一开机后有错误说“Boot Time”服务无法启动，而之前都没有这个服务的信息，看来这个病毒是昨天或者今天才驻进来的，应该不会有太大危险了。这个lnajr病毒的分析就只能暂时告一个段落了。不知道过一段时间查毒软件可不可以查到这个病毒了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.windwood.name/blog/archives/560.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Google地图厦门数据被rollback了？</title>
		<link>http://www.windwood.name/blog/archives/559.html</link>
		<comments>http://www.windwood.name/blog/archives/559.html#comments</comments>
		<pubDate>Sat, 28 Aug 2010 08:26:31 +0000</pubDate>
		<dc:creator>吴德文</dc:creator>
		
		<category><![CDATA[uncategorized]]></category>

		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.windwood.name/blog/archives/559.html</guid>
		<description><![CDATA[某天突然想在Google地图上找一个路线方案的时候，突然发现成功大道的梧村隧道段不见了，而我命名记得曾经是有显示这段路的。
怎么会不见了呢？难道和前阵子有关部门整顿地图服务有关系？
]]></description>
			<content:encoded><![CDATA[<p>某天突然想在Google地图上找一个路线方案的时候，突然发现成功大道的梧村隧道段不见了，而我命名记得曾经是有显示这段路的。</p>
<p>怎么会不见了呢？难道和前阵子有关部门整顿地图服务有关系？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.windwood.name/blog/archives/559.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Gmail Help bug</title>
		<link>http://www.windwood.name/blog/archives/558.html</link>
		<comments>http://www.windwood.name/blog/archives/558.html#comments</comments>
		<pubDate>Tue, 17 Aug 2010 16:45:37 +0000</pubDate>
		<dc:creator>吴德文</dc:creator>
		
		<category><![CDATA[uncategorized]]></category>

		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.windwood.name/blog/?p=558</guid>
		<description><![CDATA[话说前阵子才在哪里看到说Google鼓励别人给他汇报bug，可是今天我遇到的时候就想不起来上哪儿汇报了。
bug是这样重现的：Gmail界面上今天又出现了“Import mail &#38; contacts ”的新特性，我点了后进到Settings的界面，然后再点了一下“Learn more”，然后就到了“导入电子邮件和联系人 使用帮助”的页面，再点一下“使用入门”，这样就到达了bug页面。如果你看到的是英文的，请在页面底部选择简体中文。
这个时候就会发现，有一行文字“点击此处可以查看支持哪些电子邮件提供程序”，其下面有一些mail服务商的列表。注意看那行文字的左边是一个+号的图标，如果点了那行文字，+号变成了-号，同时那些mail服务商的列表隐藏起来了。这个事件逻辑有点反常，通常应该是默认隐藏列表，显示+号，点了以后才是-号同时显示列表；现在是默认显示列表而且还显示+号。
发现这个问题在繁体中文版也一样存在，英文版网页倒是不存在，不知道是有人提交了英文版的错误，还是汉化时搞错了。
谁帮忙把这个错误转达到Google？
]]></description>
			<content:encoded><![CDATA[<p>话说前阵子才在哪里看到说Google鼓励别人给他汇报bug，可是今天我遇到的时候就想不起来上哪儿汇报了。</p>
<p>bug是这样重现的：Gmail界面上今天又出现了“<span id=":r8" class="Qx">Import mail &amp; contacts</span> ”的新特性，我点了后进到Settings的界面，然后再点了一下“<a href="http://mail.google.com/support/bin/answer.py?hl=en-GB&amp;ctx=mail&amp;answer=117173" target="_blank">Learn more</a>”，然后就到了“<a href="http://mail.google.com/support/bin/static.py?page=guide.cs&amp;guide=25413&amp;topic=25414">导入电子邮件和联系人 使用帮助</a>”的页面，再点一下“<a href="http://mail.google.com/support/bin/static.py?page=guide.cs&amp;guide=25413&amp;topic=25415">使用入门</a>”，这样就到达了bug页面。如果你看到的是英文的，请在页面底部选择简体中文。</p>
<p>这个时候就会发现，有一行文字“点击此处可以查看支持哪些电子邮件提供程序”，其下面有一些mail服务商的列表。注意看那行文字的左边是一个+号的图标，如果点了那行文字，+号变成了-号，同时那些mail服务商的列表隐藏起来了。这个事件逻辑有点反常，通常应该是默认隐藏列表，显示+号，点了以后才是-号同时显示列表；现在是默认显示列表而且还显示+号。</p>
<p>发现这个问题在繁体中文版也一样存在，英文版网页倒是不存在，不知道是有人提交了英文版的错误，还是汉化时搞错了。</p>
<p>谁帮忙把这个错误转达到Google？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.windwood.name/blog/archives/558.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>如何创建与Eclipse WTP平台兼容的GWT项目</title>
		<link>http://www.windwood.name/blog/archives/554.html</link>
		<comments>http://www.windwood.name/blog/archives/554.html#comments</comments>
		<pubDate>Thu, 29 Jul 2010 19:28:01 +0000</pubDate>
		<dc:creator>吴德文</dc:creator>
		
		<category><![CDATA[uncategorized]]></category>

		<category><![CDATA[Google]]></category>

		<category><![CDATA[J2EE]]></category>

		<guid isPermaLink="false">http://www.windwood.name/blog/?p=554</guid>
		<description><![CDATA[说到GWT（嗯，就是Google Web Tookit），真是个神奇的东西，令我即将成为GWT的重度使用者。
不过最近发现，要在Eclipse JEE里把GWT项目和其它Enterprise Application Project集成在一起的时候会遇到麻烦，甚至只是简单的把GWT项目通过Eclipe的Server管理发布到Tomcat上也是不可能的。那是因为用GWT插件创建出来的GWT项目并不是一个JavaWeb项目（准确的说是不包含jst.web组件的项目），它除了最基本的Java项目信息以外，就只剩下gwt的模块信息了，所以Eclipse就只把它当作最普通的Java项目来对待。当它被设置成从属于EAR项目的时候，Eclipse会把他转变成JavaUtility项目，而不能发布成Web项目；当它单独为一个项目时，不能在Server里添加删除这个项目，也不能直接导出为WAR文件（手工使用jar是可以的，ant应该也可以，但那是Eclipse之外的方法了）；甚至于，它的项目属性里连“Project Facets”设置项都没有，无法添加“Dynamic Web Module”或者是“Geronimo Deployment”或者是“Java Persistence”的特性。
这可怎么办呢？虽然GWT很好用，但是如果只能作为一个简单的Java项目是不行的，毕竟是用它来做Web项目的，我需要它能很好的和WTP兼容，这样我才不需要在Eclipse之外又做很多工作。
这个问题的关键就是项目的属性缺少Web项目应有的特性“Dynamic Web Module”，解决的思路有两个：一就是创建默认的GWT项目，然后通过修改项目属性文件.classpath以及org.eclipse.wst.common.*文件，把jst.web的项目特性加上去；再一种就是创建一个Dynamic Web Project，然后再把Google Web Toolkit的特性加到项目中去，当然还要按照GWT的规则设置一下build的输出目录以及一些注意事项。
第一种方法，我试了以后不是很安全，或者说不是很靠谱。因为毕竟对项目属性文件不是很精通，哪些要改，哪些不要改不是很了解，可能改错，也可能漏改，已知上改后的项目也没达到我的目的，无法变成一个真正的Dynamic Web项目。
第二种方法，好像还不错，只不过现在只在Tomcat上通过，还没有做关于Geronimo发布的测试。这里说说第二种方法怎么操作。
首先，创建一个默认的Dynamic Web Project；创建时最好是将Target Runtime设置为&#60;None&#62;（后面会解释）；而Content directory可以使用默认的WebContent，也可以设置为GWT风格的war目录；重要的是Default output folder必须是&#60;Content directory&#62;/WEB-INF/classes。
接着，右键点击项目后出现的快捷菜单里，选择Google - Web Toolkit settings&#8230;，将Use Google Web Toolkit的Checkbox选上。如果，你的Content directory不是GWT需要的war，比如是默认的WebContent的话，还必须在项目属性的Google中设置Web Application中的WAR directory目录，否则在以GWT方式(Web Application)运行的时候会弹出“Could not find any host pages in project”的提示。
然后，需要增加一个名为test的Source folder，并把其Output folder设置为test-classes（点击Allow output folders for source folders），这样GWT项目里的test代码就有容身之处了。
最后，就可以从一个标准的GWT项目那里把src以及test目录下的代码复制过来，同时需要复制的还有WebContent目录下的html文件以及web.xml文件。
这样一个和WTP兼容的项目就完成了，可以开发GWT，然后用GWT方式运行来测试或者是通过WTP发布到Tomcat Server上了。
注1：如果创建项目是选择Tomcat作为Target Runtime的话，以GWT方式来运行时，会提示下面的错误信息：
Starting Jetty on port [...]]]></description>
			<content:encoded><![CDATA[<p>说到GWT（嗯，就是Google Web Tookit），真是个神奇的东西，令我即将成为GWT的重度使用者。</p>
<p>不过最近发现，要在Eclipse JEE里把GWT项目和其它Enterprise Application Project集成在一起的时候会遇到麻烦，甚至只是简单的把GWT项目通过Eclipe的Server管理发布到Tomcat上也是不可能的。那是因为用GWT插件创建出来的GWT项目并不是一个JavaWeb项目（准确的说是不包含jst.web组件的项目），它除了最基本的Java项目信息以外，就只剩下gwt的模块信息了，所以Eclipse就只把它当作最普通的Java项目来对待。当它被设置成从属于EAR项目的时候，Eclipse会把他转变成JavaUtility项目，而不能发布成Web项目；当它单独为一个项目时，不能在Server里添加删除这个项目，也不能直接导出为WAR文件（手工使用jar是可以的，ant应该也可以，但那是Eclipse之外的方法了）；甚至于，它的项目属性里连“Project Facets”设置项都没有，无法添加“Dynamic Web Module”或者是“Geronimo Deployment”或者是“Java Persistence”的特性。</p>
<p>这可怎么办呢？虽然GWT很好用，但是如果只能作为一个简单的Java项目是不行的，毕竟是用它来做Web项目的，我需要它能很好的和WTP兼容，这样我才不需要在Eclipse之外又做很多工作。</p>
<p>这个问题的关键就是项目的属性缺少Web项目应有的特性“Dynamic Web Module”，解决的思路有两个：一就是创建默认的GWT项目，然后通过修改项目属性文件.classpath以及org.eclipse.wst.common.*文件，把jst.web的项目特性加上去；再一种就是创建一个Dynamic Web Project，然后再把Google Web Toolkit的特性加到项目中去，当然还要按照GWT的规则设置一下build的输出目录以及一些注意事项。</p>
<p>第一种方法，我试了以后不是很安全，或者说不是很靠谱。因为毕竟对项目属性文件不是很精通，哪些要改，哪些不要改不是很了解，可能改错，也可能漏改，已知上改后的项目也没达到我的目的，无法变成一个真正的Dynamic Web项目。</p>
<p>第二种方法，好像还不错，只不过现在只在Tomcat上通过，还没有做关于Geronimo发布的测试。这里说说第二种方法怎么操作。</p>
<p>首先，创建一个默认的Dynamic Web Project；<del datetime="2010-08-08T08:55:23+00:00">创建时最好是将Target Runtime设置为&lt;None&gt;（后面会解释）；</del>而Content directory可以使用默认的WebContent，也可以设置为GWT风格的war目录；重要的是Default output folder必须是&lt;Content directory&gt;/WEB-INF/classes。</p>
<p>接着，右键点击项目后出现的快捷菜单里，选择Google - Web Toolkit settings&#8230;，将Use Google Web Toolkit的Checkbox选上。如果，你的Content directory不是GWT需要的war，比如是默认的WebContent的话，还必须在项目属性的Google中设置Web Application中的WAR directory目录，否则在以GWT方式(Web Application)运行的时候会弹出“Could not find any host pages in project”的提示。</p>
<p>然后，需要增加一个名为test的Source folder，并把其Output folder设置为test-classes（点击Allow output folders for source folders），这样GWT项目里的test代码就有容身之处了。</p>
<p>最后，就可以从一个标准的GWT项目那里把src以及test目录下的代码复制过来，同时需要复制的还有WebContent目录下的html文件以及web.xml文件。</p>
<p>这样一个和WTP兼容的项目就完成了，可以开发GWT，然后用GWT方式运行来测试或者是通过WTP发布到Tomcat Server上了。</p>
<p>注1：如果创建项目是选择Tomcat作为Target Runtime的话，以GWT方式来运行时，会提示下面的错误信息：</p>
<p style="padding-left: 30px;">Starting Jetty on port 8888</p>
<p style="padding-left: 30px;">[WARN] failed jsp</p>
<p style="padding-left: 30px;">java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory</p>
<p style="padding-left: 30px;">&#8230;&#8230;</p>
<p style="padding-left: 30px;">[WARN] failed com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload@ccc588{/,D:\Eclipse\Training\GWTTomcat\WebContent}</p>
<p>java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory</p>
<p>&#8230;&#8230;</p>
<p style="padding-left: 30px;">这时虽然GWT运行了，但是打开网页会出现错误如下：</p>
<h2 style="padding-left: 30px;">HTTP ERROR: 404</h2>
<pre style="padding-left: 30px;">NOT_FOUND</pre>
<p>我能想到Target Runtime对项目的影响就是Build Path里面多了Tomcat的Lib。因此，如果把这个Runtime去掉，或者是直接在Build Path里去掉Tomcat的Lib，项目就可以运行在GWT下了。不过如果此时再重新把Runtime设为Tomcat，似乎也可以正常运行了（诡异的现象），也许是多个重复的Lib的先后顺序问题。</p>
<p>注2：经测试证实，就是Build Path中Lib顺序的问题，只要GWT在前，那么以GWT方式运行就不会出错。</p>
<p>注3：测试证实，如果项目的Runtime设置成Apache Geronimo，不论GWT的顺序如何，以GWT方式来Run的时候，仍会提示下面的错误信息：</p>
<p style="padding-left: 30px;">[WARN] Server class &#8216;org.apache.geronimo.kernel.log.GeronimoLogFactory&#8217; could not be found in the web app, but was found on the system classpath</p>
<p style="padding-left: 30px;">[WARN] Adding classpath entry &#8216;file:/D:/Tools/Web/geronimo-tomcat6-javaee5-2.1.4/lib/geronimo-kernel-2.1.4.jar&#8217; to the web app classpath for this session</p>
<p style="padding-left: 30px;">For additional info see: file:/D:/Tools/Eclipse/plugins/com.google.gwt.eclipse.sdkbundle.2.0.3_2.0.3.v201002191036/gwt-2.0.3/doc/helpInfo/webAppClassPath.html</p>
<div>但是，程序还是可以运行的，至少目前在浏览器里没发现什么错。</div>
]]></content:encoded>
			<wfw:commentRss>http://www.windwood.name/blog/archives/554.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>钓鱼？</title>
		<link>http://www.windwood.name/blog/archives/553.html</link>
		<comments>http://www.windwood.name/blog/archives/553.html#comments</comments>
		<pubDate>Sat, 17 Jul 2010 07:12:04 +0000</pubDate>
		<dc:creator>吴德文</dc:creator>
		
		<category><![CDATA[uncategorized]]></category>

		<guid isPermaLink="false">http://www.windwood.name/blog/?p=553</guid>
		<description><![CDATA[突然QQ跳出一个框，说我有一封邮件，打开一看，是如下内容：
发件人：网易通行证 &#60;passport@service.netease.com&#62;
亲爱的网易通行证用户，您好：
请您点击下面链接来验证您的网易通行证的QQ号码:
http://reg.163.com/getpasswd/activateSecMailBox.jsp?mailType=qq&#38;sid=&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.
为了确保您的帐号安全，该链接仅7天内访问有效。

如果该链接已经失效，请您点击下面链接来重新获取激活保密邮箱的邮件:
http://reg.163.com/activatemail.jsp?mailType=qq
如果点击链接不工作&#8230;

请您选择并复制整个链接，打开浏览器窗口并将其粘贴到地址栏中。然后单击&#8221;转到&#8221;按钮或按键盘上的 Enter 键。
请勿直接回复该邮件，有关 网易通行证 的更多帮助信息，请访问：http://reg.163.com/help/help.shtml
 网易通行证
这个邮件突然把我搞傻了，什么叫做我的“网易通行证的QQ号码”？
Google了一下，才知道原来现在网易通行证可以“绑定”QQ号码，或者是说通过QQ号码来找回密码。可是我没有忘记密码，不需要也没有进行过忘记密码的操作呀，为什么会收到这封邮件呢？
一种可能，这个是一封钓鱼邮件，骗我点链接，然后盗取我的密码，不过上面的所有链接都是真是的呀，而且邮件的协议层原文也是正常的。
还有一种可能，就是网易邮箱看我好久没去登录（我的Gmail已经很久没法pop3网易的邮件了），寂寞了，就发封邮箱骚扰我一下，让我做点什么操作。这个貌似有点靠谱。
不过还有一个很大的问题，怎么会知道我的QQ号呢？我从没在上面设置过这些信息呀。。。。
总之，问题还是很大很大，上面的链接我是不敢点的，不晓得会发生什么。地球太危险了。。。
]]></description>
			<content:encoded><![CDATA[<p>突然QQ跳出一个框，说我有一封邮件，打开一看，是如下内容：</p>
<p style="padding-left: 60px;"><span class="addrtitle">发件人：</span><span><strong>网易通行证</strong> <strong>&lt;passport@service.netease.com&gt;</strong></span></p>
<div style="padding-left: 60px;"><span style="color: #000080;">亲爱的网易通行证用户，您好：</span></div>
<div style="padding-left: 60px;"><span style="color: #000080;">请您点击下面链接来验证您的网易通行证的QQ号码:<br />
<a href="http://reg.163.com/getpasswd/activateSecMailBox.jsp?mailType=qq&amp;sid=%EF%BF%BDW%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BDE%EF%BF%BDU%D3%8D%12B%EF%BF%BD%7B%EF%BF%BD" target="_blank">http://reg.163.com/getpasswd/activateSecMailBox.jsp?mailType=qq&amp;sid=</a>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.</span></div>
<div style="padding-left: 60px;"><span style="color: #000080;">为了确保您的帐号安全，该链接仅<span style="color: #ff0000;">7天内</span>访问有效。</span></div>
<div style="padding-left: 60px;"><span style="color: #000080;"><br />
如果该链接已经失效，请您点击下面链接来重新获取激活保密邮箱的邮件:<br />
<a href="http://reg.163.com/activatemail.jsp?mailType=qq" target="_blank">http://reg.163.com/activatemail.jsp?mailType=qq</a></span></div>
<div style="padding-left: 60px;"><span style="color: #000080;">如果点击链接不工作&#8230;</span></div>
<div style="padding-left: 60px;"><span style="color: #000080;"><br />
请您选择并复制整个链接，打开浏览器窗口并将其粘贴到地址栏中。然后单击&#8221;转到&#8221;按钮或按键盘上的 Enter 键。</span></div>
<div style="padding-left: 60px;"><span style="color: #ff0000;">请勿直接回复该邮件</span>，有关 <a href="http://reg.163.com/" target="_blank">网易通行证</a> 的更多帮助信息，请访问：<a href="http://reg.163.com/help/help.shtml" target="_blank">http://reg.163.com/help/help.shtml</a></div>
<div style="padding-left: 60px;"><span style="color: #000080;"> 网易通行证</span></div>
<p>这个邮件突然把我搞傻了，什么叫做我的“网易通行证的QQ号码”？</p>
<p>Google了一下，才知道原来现在网易通行证可以“绑定”QQ号码，或者是说通过QQ号码来找回密码。可是我没有忘记密码，不需要也没有进行过忘记密码的操作呀，为什么会收到这封邮件呢？</p>
<p>一种可能，这个是一封钓鱼邮件，骗我点链接，然后盗取我的密码，不过上面的所有链接都是真是的呀，而且邮件的协议层原文也是正常的。</p>
<p>还有一种可能，就是网易邮箱看我好久没去登录（我的Gmail已经很久没法pop3网易的邮件了），寂寞了，就发封邮箱骚扰我一下，让我做点什么操作。这个貌似有点靠谱。</p>
<p>不过还有一个很大的问题，怎么会知道我的QQ号呢？我从没在上面设置过这些信息呀。。。。</p>
<p>总之，问题还是很大很大，上面的链接我是不敢点的，不晓得会发生什么。地球太危险了。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.windwood.name/blog/archives/553.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>电影《Kate &amp; Leopold》的台词</title>
		<link>http://www.windwood.name/blog/archives/551.html</link>
		<comments>http://www.windwood.name/blog/archives/551.html#comments</comments>
		<pubDate>Wed, 07 Jul 2010 06:51:51 +0000</pubDate>
		<dc:creator>吴德文</dc:creator>
		
		<category><![CDATA[uncategorized]]></category>

		<guid isPermaLink="false">http://www.windwood.name/blog/?p=551</guid>
		<description><![CDATA[当然，这是照着中文字幕记下来的。如果能找到英文原文是最好了。
“我发现自己正在向不知情的公众推销垃圾。”
“当一个人发现自己正在努力参与一项毫无价值的事情，他可以退出。”
“有些时候，你不得不做一些你不喜欢做的事，有时候你必须坚持并完成你所开始的事情，这是生活的一部分。”
]]></description>
			<content:encoded><![CDATA[<p>当然，这是照着中文字幕记下来的。如果能找到英文原文是最好了。</p>
<p>“我发现自己正在向不知情的公众推销垃圾。”</p>
<p>“当一个人发现自己正在努力参与一项毫无价值的事情，他可以退出。”</p>
<p>“有些时候，你不得不做一些你不喜欢做的事，有时候你必须坚持并完成你所开始的事情，这是生活的一部分。”</p>
]]></content:encoded>
			<wfw:commentRss>http://www.windwood.name/blog/archives/551.html/feed</wfw:commentRss>
		</item>
	</channel>
</rss>

