﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-emu in blogjava</title><link>http://www.blogjava.net/emu/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 05 Jul 2009 10:50:12 GMT</lastBuildDate><pubDate>Sun, 05 Jul 2009 10:50:12 GMT</pubDate><ttl>60</ttl><item><title>IE8里，“about：”又回来了</title><link>http://www.blogjava.net/emu/archive/2009/05/22/277277.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 22 May 2009 04:32:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2009/05/22/277277.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/277277.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2009/05/22/277277.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/277277.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/277277.html</trackback:ping><description><![CDATA[还记得IE6.0.2600以前的美好日子吗？那时我们多喜欢搞这种代码来节省一个http请求啊：<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">iframe&nbsp;</span><span style="color: #ff0000">src</span><span style="color: #0000ff">="about:&lt;b&nbsp;style='color:red'&gt;hello&lt;/b&gt;&lt;script&gt;alert(123)&lt;/script&gt;"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">iframe</span><span style="color: #0000ff">&gt;</span></div>
<br />
当然还有这样的<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">showModalDialog(</span><span style="color: #000000">"</span><span style="color: #000000">about:&lt;b&nbsp;style='color:red'&gt;hello&lt;/b&gt;&lt;script&gt;alert(123)&lt;/script&gt;</span><span style="color: #000000">"</span><span style="color: #000000">)</span></div>
<br />
<br />
在IE6.0.2600以后，大家就只好转向更兼容的写法了：<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">iframe&nbsp;</span><span style="color: #ff0000">src</span><span style="color: #0000ff">="javascript:&amp;quot;&lt;b&nbsp;style='color:red'&gt;hello&lt;/b&gt;&lt;script&gt;alert(123)&lt;/script&gt;&amp;quot;"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">iframe</span><span style="color: #0000ff">&gt;</span></div>
<br />
今天偶然发现，IE8正式版下面，久违的&#8220;about：&#8221;又可以显示和执行了呵呵。
<img src ="http://www.blogjava.net/emu/aggbug/277277.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2009-05-22 12:32 <a href="http://www.blogjava.net/emu/archive/2009/05/22/277277.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我现在在哪？</title><link>http://www.blogjava.net/emu/archive/2009/05/07/269353.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 07 May 2009 02:38:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2009/05/07/269353.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/269353.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2009/05/07/269353.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/269353.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/269353.html</trackback:ping><description><![CDATA[google太猛了，可以把我现在的地理信息暴露无遗（不过当然是在我同意的前提下）

<iframe src="http://www.google.com/latitude/apps/badge/api?user=-8041228331609848306&type=iframe&maptype=roadmap" width="500" height="600" frameborder="0"></iframe>
<!-- To disable location sharing, you *must* visit http://www.google.com/latitude/apps/badge and disable the Google Public Location badge. Removing this code snippet is not enough! -->

<!-- Google Public Location Badge -->
<iframe src="http://www.google.com/latitude/apps/badge/api?user=-8041228331609848306&type=iframe&maptype=terrain" width="500" height="600" frameborder="0"></iframe>
<!-- To disable location sharing, you *must* visit http://www.google.com/latitude/apps/badge and disable the Google Public Location badge. Removing this code snippet is not enough! -->

<!-- Google Public Location Badge -->
<iframe src="http://www.google.com/latitude/apps/badge/api?user=-8041228331609848306&type=iframe&maptype=hybrid" width="500" height="600" frameborder="0"></iframe>
<!-- To disable location sharing, you *must* visit http://www.google.com/latitude/apps/badge and disable the Google Public Location badge. Removing this code snippet is not enough! -->

<!-- Google Public Location Badge -->
<iframe src="http://www.google.com/latitude/apps/badge/api?user=-8041228331609848306&type=iframe&maptype=satellite&z=3" width="500" height="600" frameborder="0"></iframe>
<!-- To disable location sharing, you *must* visit http://www.google.com/latitude/apps/badge and disable the Google Public Location badge. Removing this code snippet is not enough! --><img src ="http://www.blogjava.net/emu/aggbug/269353.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2009-05-07 10:38 <a href="http://www.blogjava.net/emu/archive/2009/05/07/269353.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Chrome浏览器第一次使用google gears组建的时候会有问题</title><link>http://www.blogjava.net/emu/archive/2009/01/13/251099.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Tue, 13 Jan 2009 03:46:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2009/01/13/251099.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/251099.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2009/01/13/251099.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/251099.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/251099.html</trackback:ping><description><![CDATA[<a href="http://qzone.qq.com/blog/286013388-1231818216">http://qzone.qq.com/blog/286013388-1231818216</a><br />
<br />
<p>使用谷歌浏览器(chrome)的时候，有的时候脚本程序会捕获到&#8220;Uncaught TypeError: Object #&lt;an HTMLObjectElement&gt; has no method 'create' &#8221;这个错误，在chrome的用户论坛上也有人在问这个问题。</p>
<p>这个错误应该是由于最新版的谷歌浏览器没有自带完整的google gears组件导致的。看起来最新版的chrome浏览器会在用户第一次使用gears组件的时候自动下载和安装该组件，而在安装成功以前我们虽然可以成功创建 application/x-googlegears 对象，却无法调用它的create方法创建任何有用的东西。</p>
<p>这个时候其实没有太多的事情可以做，基本上我们我们只能检测这个对象的create接口是否存在，发现不存在的时候提示用户耐心等待，过一段时间后再刷新，或者下回再来看看，希望它已经自己安装好了。<br />
</p>
  <img src ="http://www.blogjava.net/emu/aggbug/251099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2009-01-13 11:46 <a href="http://www.blogjava.net/emu/archive/2009/01/13/251099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>打开QQ空间速度飞快的方法</title><link>http://www.blogjava.net/emu/archive/2009/01/11/250880.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Sun, 11 Jan 2009 13:07:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2009/01/11/250880.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/250880.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2009/01/11/250880.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/250880.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/250880.html</trackback:ping><description><![CDATA[<a href="http://qzone.qq.com/blog/286013388-1231422960">打开QQ空间速度飞快的方法<br />
</a><br />
<div style="font-size: 16px" id="blogDetailDiv">假如你是中国电信adsl上网的用户，在windows平台下试用IE浏览器访问QQ空间，那么<br />
首先呢，就是访问<wbr><a target="_blank" href="http://gears.google.com/">http://gears.google.com/</a><wbr> 先把google gears装上(最新是0.5版)。有一些同学访问不了gears主页或者由于某种原因安装不上google上的最新版gears，那么可以试试到<br />
<a href="http://down1.tech.sina.com.cn/download/down_contents/1194710400/37265.shtml">http://down1.tech.sina.com.cn/download/down_contents/1194710400/37265.shtml</a><br />
上下载稍微旧一点的版本（0.4版）<br />
网上还有更旧的版本，但是emu就没有实验过了。<br />
然后呢，你就可以访问这个地址了：<wbr><a target="_blank" href="http://imgcache.qq.com/qzone/test/gears/gearsMng.html">http://imgcache.qq.com/qzone/test/gears/gearsMng.html</a><wbr><br />
对于网通宽带的朋友，就要访问这个：<wbr><a target="_blank" href="http://cnc.imgcache.qq.com/qzone/test/gears/gearsMng.html">http://cnc.imgcache.qq.com/qzone/test/gears/gearsMng.html</a><wbr><br />
而对于教育网的朋友，则要访问这个：<wbr><a target="_blank" href="http://edu.imgcache.qq.com/qzone/test/gears/gearsMng.html">http://edu.imgcache.qq.com/qzone/test/gears/gearsMng.html</a><wbr><br />
点击&#8220;启用加速&#8221;，会有个gears提示，确认以后，等全部进度条走成绿色就好了，以后访问QQ空间的时候就会自动的变得飞快。<br />
<br />
有几点小技巧：<br />
* google gears不是很稳定，有的时候进度条走着走着就卡住不走了，这个时候可以多点几下&#8220;启用加速&#8221;就好了。如果还是不行，可能是网络原因，也没有关系，不管它就可以了，google gears会在网络好的时候自己把没下载完的文件给补上的。<br />
* 如果不大确定你的上网环境（联通？有线宽屏？铁通？），或者笔记本经常抱来抱去上QQ空间，那么不妨把电信、网通和教育网三个页面都访问一遍，分别启用加速，这样不管在什么环境下都可以确定获得最好的效果。<br />
* 如果你用的是FireFox浏览器，也可以依照上面的操作。<br />
* 如果你用的是google的chrome浏览器，并且是1.0正式版以上的版本，那么它已经自带了一个比较稳定版本的gears，跳过安装gears这一步。但是chrome下面gears还是有时不十分稳定，虽然emu已经尽力做了兼容，在第一次使用的时候还是可能有点问题。<br />
* 如果用的不是windows系统，那么gears还有MacOS下的版本，支持Safari(<a href="http://gears.google.com/?platform=mac-safari">http://gears.google.com/?platform=mac-safari</a>)和Firefox(<a href="http://gears.google.com/?platform=mac-firefox">http://gears.google.com/?platform=mac-firefox</a>)和linux下的版本(<a href="http://gears.google.com/?platform=linux">http://gears.google.com/?platform=linux</a> 支持Firefox)，恭喜恭喜。不过到底用起来怎么样，emu也没试过。<br />
* 如果你用的居然是opera，就认命了吧。</div>
<img style="position: relative; display: none" id="paperPicArea1" alt="" src="http://qzone.qq.com/ac/b.gif" width="1" height="1" /> 
 <img src ="http://www.blogjava.net/emu/aggbug/250880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2009-01-11 21:07 <a href="http://www.blogjava.net/emu/archive/2009/01/11/250880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分域名优化的时候要考虑备选IP的问题</title><link>http://www.blogjava.net/emu/archive/2008/05/23/202357.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 23 May 2008 03:36:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/05/23/202357.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/202357.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/05/23/202357.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/202357.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/202357.html</trackback:ping><description><![CDATA[我们在需要下载很多内容的时候，很容易想到做分域名的并发下载，给原来的服务器多分几个域名，因为分不同的域名可能可以在浏览器中分到更多的下载进程，提高下载速度。<br />
但是在做网络应用的时候，我们的一个域名下面有的时候会有多个ip多台服务器，分布在不同的机房，这个时候浏览器会在可选的ip里面随机的选择一个ip。用nslookup可以看到可选的ip，用ping可以看到当前正在实用的ip。<br />
在多个ip的情况下，对具体的一个用户，往往是连接到某些ip特别快，而连接到某些ip就不怎么块。比如我现在有一个域名（和它的几个分域名），在深圳访问的时候有2个ip可以分，其中一个是深圳本地的服务器，一个是外地的服务器。这个时候如果页面打开需要用到的关键资源依赖于这个域名，那么分域名有可能对速度不是提高而是有反作用。<br />
因为这种情况下，慢的资源成为了瓶颈，变成是速度的决定因素。我本来有一半的机会是快的，一半的机会是慢的，如果现在分两个域名去下载关键资源，变成有1/4的机会是两个域名都分到深圳的服务器，可以有提高，而3/4的机会是有一个以上的域名分到外地的服务器，反而变慢了，这样提高的是少部分人的感受，而多数人的感受没有提升或者变的更差。如果简单的按照yahoo的优化建议分散到4个域名上，那么这个比例就变成1：15，更差了。<br />
因此分域名下载不能简单的绝对化的看待，要看实际应用场景做决定。
<img src ="http://www.blogjava.net/emu/aggbug/202357.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2008-05-23 11:36 <a href="http://www.blogjava.net/emu/archive/2008/05/23/202357.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>apache返回Request header field is missing ':' separator</title><link>http://www.blogjava.net/emu/archive/2008/05/09/199542.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 09 May 2008 08:30:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/05/09/199542.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/199542.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/05/09/199542.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/199542.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/199542.html</trackback:ping><description><![CDATA[一段时间没有用这个apache，突然之间发现apache不返回东西了，抓包发现不管发什么请求，这个apache总是返回：<br />
Request header field is missing ':' separator<br />
重启apache，关掉重开，卸掉重装，折腾半天后还是选择google了，原来早有人郁闷过这个问题：<a href="http://www.apachelounge.com/forum/viewtopic.php?t=602">http://www.apachelounge.com/forum/viewtopic.php?t=602</a><br />
<br />
<span class="postbody">Just spent half of night googling. <br />
<br />
The main reason that I switched to 2.2.x branch is mod_proxy errors like <br />
"Request header field is missing ':' separator." when accessing sites localhost sites. <br />
Somewhere I read that it might be fixed in 2.2, so that's why I'm here. <br />
<br />
After 3 weeks building all neccessary modules putting and tuning all together I see the same error =/ <br />
<br />
Problem was in Nod32's IMON module. It for some reason duplicates request. I disabled it and all works fine again. <br />
<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=34716" target="_blank">http://issues.apache.org/bugzilla/show_bug.cgi?id=34716</a> <br />
<br />
Posting it here to help other with issues like this.</span><br />
<br />
一模一样的现象，一模一样的原因。把nod32的imon（也就是网络监控）禁用了就好了。
<img src ="http://www.blogjava.net/emu/aggbug/199542.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2008-05-09 16:30 <a href="http://www.blogjava.net/emu/archive/2008/05/09/199542.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>facebook全面开放了web IM</title><link>http://www.blogjava.net/emu/archive/2008/04/24/195477.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 24 Apr 2008 03:23:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/04/24/195477.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/195477.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/04/24/195477.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/195477.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/195477.html</trackback:ping><description><![CDATA[悄悄在几个network内试用了一段时间后，今天终于全员开放了。web IM最大的问题是不能P2P的传递消息，什么都要走服务器，一来一回比起直接点对点发送显然成本要高的多，尤其我们亚洲用户的数据都要走到米国的服务器上再走回来（我被连接到了69.63.176.174这台米国服务器）。facebook用了推模式尽量保证了消息的即时性，同时维持那么多http连接看来也是不小的技术挑战，不过目前看来表现还不错。<br />
Facebook建议大家用IE7或者Firefox来试用聊天功能。在IE6下面会弹开一个新页面来聊天。在Firefox下面没有使用传说中的COMET技术，还是每次推消息后断开连接重新请求。
<img src ="http://www.blogjava.net/emu/aggbug/195477.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2008-04-24 11:23 <a href="http://www.blogjava.net/emu/archive/2008/04/24/195477.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>百度不知道百度知道</title><link>http://www.blogjava.net/emu/archive/2008/04/23/194963.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 23 Apr 2008 02:38:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/04/23/194963.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/194963.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/04/23/194963.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/194963.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/194963.html</trackback:ping><description><![CDATA[<p>有朋友在问卡巴斯基报告一个&#8220;Trojan-Clicker.HTML.Agent.ad&#8221;的事情，说是百度搜不到，我google了一把：<br />
<br />
<img height="339" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/google.gif" width="673" border="0" /><br />
嗯，google上有100多个搜索结果，而百度呢？</p>
<p>&nbsp;</p>
<p><img height="1" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/google.gif" width="2" border="0" /></p>
<p><br />
<img height="205" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/baidu.gif" width="614" border="0" /><br />
<br />
交白卷了。谁说搜中文内容百度更专业来着。更好笑的是在google的搜索结果的第二个就是百度知道上面的问题，试了下在百度知道里面搜：<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/emu/zhidao.gif" border="0" /><br />
<br />
百度知道里面有两个结果而百度居然不知道百度其实知道？其实问题<span style="color: red">在于百度的网页搜索引擎无法理解&#8220;Trojan-Clicker&#8221;中的这个横杠是个连接符而不是排除搜索内容的意思</span>，把这个横杠去掉以后，百度还是可以搜出来6个结果的。<br />
<br />
<img height="106" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/baidu2.gif" width="823" border="0" /><br />
<br />
<br />
百度号称更懂中文，以前的理解是百度比其他搜索引擎更懂中文，现在才明白过来，百度更懂中文是相对于百度懂英文的程度来说的。</p>
<br />
奇怪的是百度知道的搜索居然没有这个问题，难道用的是不同的搜索引擎？ <img src ="http://www.blogjava.net/emu/aggbug/194963.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2008-04-23 10:38 <a href="http://www.blogjava.net/emu/archive/2008/04/23/194963.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用shindig搭Opensocial容器</title><link>http://www.blogjava.net/emu/archive/2008/03/26/188812.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 26 Mar 2008 09:41:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/03/26/188812.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/188812.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/03/26/188812.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/188812.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/188812.html</trackback:ping><description><![CDATA[<p>&nbsp;<br />
shindig是google的一个opensocial容器的参考实现。google高调发布opensocial以后大家纷纷在宣布支持opensocial，可是真正要找个支持opensocial的容器一点也不容易，orkut的sandbox限制很多，myspace中国也只支持flash的方式，真正要玩opensocial，还是自己搭一个环境算了。</p>
<p>shindig现在还不能简单的安装运行（http://incubator.apache.org/shindig/#tab-download），要做一些手工活：<br />
按照 http://incubator.apache.org/shindig/#tab-building 的指引，</p>
<ol>
    <li>下载安装JDK，设置好JAVA_HOME和PATH环境变量
    <li>下载安装subversion客户端（我用了TortoiseSVN）
    <li>下载解压Maven（在windows上用，我用了zip版本），一个类似ant的东东，用于编译shindig。设置好M2_HOME（指向Maven的解压目录），M2（指向bin子目录）和PATH环境变量（加进bin子目录的路径）。
    <li>新建shindig目录，用TortoiseSVN update下来shindig工程（http://svn.apache.org/repos/asf/incubator/shindig/trunk）<br />
    在shindig/java/gadgets目录下面运行mvn package编译。由于依赖的jar都要从网上下载，等了漫长的一个多小时，最后在shindig\java\gadgets\target目录下得到一个gadgets.war，大约2M左右大小。 </li>
</ol>
<p>拿到war就好办了，随便找一个web容器给它运行。首选的当然是开源、绿色、轻巧可爱的tomcat了。下载下来解压，运行startup.bat，就跑起来了。访问http://localhost:8080/看到欢迎页面，从Administration--&gt;Tomcat Manager进入。衰，要登陆。在tomcat/conf下面找到tomcat-users.xml，加两行<br />
&nbsp; &lt;role rolename="manager"/&gt;<br />
&nbsp; &lt;user username="tomcat" password="tomcat" roles="manager"/&gt;<br />
重启tomcat，用tomcat/tomcat进入Administration--&gt;Tomcat Manager<br />
找到 WAR file to deploy--&gt;Select WAR file to upload ，选中刚才编译好的gadgets.war上传。后在Applications列表中看到/gadgets就好了。</p>
<p>http://localhost:8080/gadgets下面没有默认页面，只能直接访问 samplecontainer 页面 http://localhost:8080/gadgets/files/samplecontainer/samplecontainer.html</p>
<p>&nbsp;</p>
<p><br />
<br />
<br />
<img height="519" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/sampleContainer.gif" width="992" border="0" /></p>
第一个输入框是gadget的xml地址，也就是所谓的OpensocialAPP了。第二个输入框指向的xml里面描述了一些模拟的用户信息，主要提供了people、personAppData、activities这些基本的APP信息。<br />
<br />
下面蓝色框是一个iframe，里面就是这个APP的展示区域了。<br />
<br />
看来google现在还想让大家用iframe来作web application，失望一下。要是第三方可以像igoogle里面的gmail模块一样直接inline嵌入到页面中间就好了。iframe还是很多问题的，速度问题，页面负担，还有<a href="http://www.blogjava.net/emu/archive/2007/07/06/128666.html">浏览器bug</a>。 
<img src ="http://www.blogjava.net/emu/aggbug/188812.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2008-03-26 17:41 <a href="http://www.blogjava.net/emu/archive/2008/03/26/188812.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为IE找个新死法</title><link>http://www.blogjava.net/emu/archive/2008/02/01/178847.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 01 Feb 2008 07:43:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/02/01/178847.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/178847.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/02/01/178847.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/178847.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/178847.html</trackback:ping><description><![CDATA[IE在解释表达式的时候显然大有优化的余地，FireFox就没这个毛病。下面这段小代码可以轻松让IE崩溃掉：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;n</span><span style="color: #000000">=</span><span style="color: #000000">32768</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;s</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Array(n).join(</span><span style="color: #000000">"</span><span style="color: #000000">0+</span><span style="color: #000000">"</span><span style="color: #000000">)</span><span style="color: #000000">+</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">(confirm(</span><span style="color: #000000">"</span><span style="color: #000000">真的要杀了浏览器吗?</span><span style="color: #000000">"</span><span style="color: #000000">)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;eval(s);<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">杀不掉,试试把n调大一点?</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
}</span></div>
<br />
其实就是让IE解析一个&#8220;0+0+0+0....&#8221;的表达式。<br />
在我的机器上，IE6跑到32255就自动关闭了（可以作为一个新的无提示关闭浏览器漏洞呵呵，会把同一个进程打开的全部窗口一起杀掉），IE7还要差些，在31515就挂了。opera也好不到哪里去，32180就崩溃了。而FireFox一直跑到2^27（ie和opera还不到2^15）的时候把我的内存全吃光了，在虚拟内存支持下还是可以执行完成：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;s</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">0+</span><span style="color: #000000">"</span><span style="color: #000000">,n</span><span style="color: #000000">=</span><span style="color: #000000">27</span><span style="color: #000000">&nbsp;;<br />
</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">n;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;s</span><span style="color: #000000">+=</span><span style="color: #000000">s;&nbsp;<br />
alert(s.length</span><span style="color: #000000">/</span><span style="color: #000000">2</span><span style="color: #000000">)&nbsp;<br />
s</span><span style="color: #000000">+=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;<br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">(confirm(</span><span style="color: #000000">"</span><span style="color: #000000">真的要杀了浏览器吗?</span><span style="color: #000000">"</span><span style="color: #000000">)){&nbsp;<br />
eval(s);&nbsp;<br />
alert(</span><span style="color: #000000">"</span><span style="color: #000000">杀不掉,试试把n调大一点?</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
}</span></div>
一直到2^28的时候，字符串构造失败了才罢休。<br />
<img src ="http://www.blogjava.net/emu/aggbug/178847.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2008-02-01 15:43 <a href="http://www.blogjava.net/emu/archive/2008/02/01/178847.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在IE下面指定表单编码方式</title><link>http://www.blogjava.net/emu/archive/2008/01/31/178715.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 31 Jan 2008 09:31:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/01/31/178715.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/178715.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/01/31/178715.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/178715.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/178715.html</trackback:ping><description><![CDATA[在跨业务、跨网站发送数据或者业务升级的时候，我们有的时候需要指定发送数据的编码方式，比如页面是utf-8编码的，而发送出去的数据却是GB2312编码的。在做Ajax开发的时候，我们往往都是用vbscript或者用查字典法来解决这个问题（<a href="http://www.blogjava.net/emu/articles/31756.html">http://www.blogjava.net/emu/articles/31756.html</a>）。但是有些业务，也许并不需要做成Ajax这么复杂，用表单提交显得更加自然。<br />
<br />
其实html里面form标签有个accept-charset属性，可以帮助我们解决这个问题，可惜的是傻乎乎的IE浏览器虽然认得accept-charset，却并不卖它的帐。IE的表单提交的时候使用什么编码是完全看页面的charset决定的。还好，IE在charset这个问题上一傻到底（见<a href="http://www.blogjava.net/emu/archive/2007/08/21/138247.html">http://www.blogjava.net/emu/archive/2007/08/21/138247.html</a>），糊弄它一下，它就乖乖听话了：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">&lt;</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;</span><span style="color: #ff0000">http-equiv</span><span style="color: #0000ff">=content-type&nbsp;</span><span style="color: #ff0000">content</span><span style="color: #0000ff">="text/html;&nbsp;charset=UTF-8"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">SCRIPT&nbsp;</span><span style="color: #ff0000">LANGUAGE</span><span style="color: #0000ff">="JavaScript"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #f5f5f5"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;isIE</span><span style="color: #000000; background-color: #f5f5f5">=!!</span><span style="color: #000000; background-color: #f5f5f5">window.ActiveXObject;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">if</span><span style="color: #000000; background-color: #f5f5f5">(isIE&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">&amp;&amp;</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.charset</span><span style="color: #000000; background-color: #f5f5f5">!=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">utf-8</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">)location.reload(</span><span style="color: #0000ff; background-color: #f5f5f5">false</span><span style="color: #000000; background-color: #f5f5f5">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">if</span><span style="color: #000000; background-color: #f5f5f5">(location.search)&nbsp;alert(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&#8220;我&#8221;字编码为:</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">location.search.substr(</span><span style="color: #000000; background-color: #f5f5f5">6</span><span style="color: #000000; background-color: #f5f5f5">))<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">SCRIPT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">TITLE</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">encode&nbsp;before&nbsp;form&nbsp;post</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">TITLE</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">META&nbsp;</span><span style="color: #ff0000">NAME</span><span style="color: #0000ff">="Author"</span><span style="color: #ff0000">&nbsp;CONTENT</span><span style="color: #0000ff">="emu"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">form&nbsp;</span><span style="color: #ff0000">action</span><span style="color: #0000ff">="#"</span><span style="color: #ff0000">&nbsp;accept-charset</span><span style="color: #0000ff">="GB2312"</span><span style="color: #ff0000">&nbsp;onsubmit</span><span style="color: #0000ff">="if(isIE)document.charset='GB2312'"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="test"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="我"</span><span style="color: #ff0000">&nbsp;readonly</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">=submit</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">form</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span></div>
<br />
简单的讲，就是在表单发送前告诉IE说当前页面是GB2312编码就行了：<br />
&nbsp;&lt;form accept-charset="GB2312" onsubmit="if(isIE)document.charset='GB2312'"&gt;<br />
accept-charset="GB2312" 是写给其他没那么笨的浏览器看的。<br />
<br />
IE为了表现它确实是一傻到底，不但在设置document.charset的时候不会用新的编码解释页面，还会在前进后退（我特地用＃作为action来实现后退）的时候又尝试用新的编码去解释页面<img src="/CuteSoft_Client/CuteEditor/images/face21.gif" align="absMiddle" border="0"  alt="" />。不过还好，可以用脚本判断出来，还可以用脚本刷新一下页面解决这个问题：<br />
if(isIE &amp;&amp; document.charset!="utf-8")location.reload(false);<br />
    <img src ="http://www.blogjava.net/emu/aggbug/178715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2008-01-31 17:31 <a href="http://www.blogjava.net/emu/archive/2008/01/31/178715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>试试把xml和javascript写到同一个文件里面</title><link>http://www.blogjava.net/emu/archive/2008/01/18/176342.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 18 Jan 2008 14:07:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/01/18/176342.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/176342.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/01/18/176342.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/176342.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/176342.html</trackback:ping><description><![CDATA[<p>服务器现在同时输出json和xml两种数据，取决于服务程序和页面之间的约定。在程序遇到问题的时候会返回错误信息，也按照相同的约定会返回json或者xml格式的数据。比如当页面请求xml的时候服务会返回：</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="gb2312"</span><span style="color: #0000ff">?&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">error</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">出错了</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">error</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span></div>
<p>&nbsp;</p>
<p>&nbsp;而当页面请求的是json的时候服务器会返回&nbsp;</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">alert("出错了")</span></div>
<p>&nbsp;</p>
<p>但是今天遇到的问题是，服务器本身出了问题，比如说遇到内部服务器错误或者资源不存在，又不想返回对解决问题帮助不大的500或者404响应，而想像上面一样返回一个一致性的带错误说明的200响应。由于无从得知现在应该返回xml还是json格式的出错信息。于是服务器就统一返回了一个xml格式的错误。但是页面这个时候是用script标签在请求一个json数据，接收到一个xml文件，直接就产生语法错误了。改成json的话，请求xml的地方也无法提供正确的错误提示。</p>
<p>这个时候我们需要的就是服务器返回一个同时符合javascript和xml语法的错误信息，或者说把xml和javascript的错误信息放到一起。</p>
<p>嗷嗷研究过把css和javascript放在一个文件里面，主要是为了可以较少一个http请求。把xml和javascript放在一起有一些不同。</p>
<p>最容易想到的是&#8220;&lt;!-- &#8221;注释符。由于历史原因，这个xml里面的注释符在javascrip里面是一个单行注释符，也就是说在javascript里面，它以回车符为结束，而在xml里面是以--&gt;结束。因此如果用这样一个符号开始一个文件，我们就可以通过控制它的结束位置来控制它在不同语法下面的意义。</p>
<p>error.xml</p>
<p>&nbsp;</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">error</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">出错了</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">error</span><span style="color: #0000ff">&gt;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />alert("出错了")//</span><span style="color: #008000">--&gt;</span></div>
</div>
<p>&nbsp;</p>
<p>注意，从xml的角度上来看，这个xml没有带&lt;?xml部分，因此不能制定encoding编码，只能用默认的utf-8编码输出。或者用实体替换和转义符来回避编码问题：</p>
<p>error.xml</p>
<p>&nbsp;</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">error</span><span style="color: #0000ff"><span style="color: #0000ff">&gt;</span><span style="color: #000000">&amp;amp;#x51fa;&amp;amp;#x9519;&amp;amp;#x4e86;</span><span style="color: #0000ff">&lt;/</span></span><span style="color: #800000">error</span><span style="color: #0000ff">&gt;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;<br />
alert("\u51fa\u9519\u4e86")//</span><span style="color: #008000">--&gt;</span></div>
</div>
<p>&nbsp;</p>
<p>之所以刻意不带&lt;?xml，是因为按照规范&lt;?xml必需出现在最开始部分，虽然IE可以允许&lt;?xml前面出现&lt;!-- --&gt;注释，但是FF就没有这样的灵活性了。</p>
<p>简单的在IE下面用两种语法处理这个文件的一个例子：</p>
<p>&nbsp;</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><span style="color: #0000ff">&lt;</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">TITLE</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;test&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">TITLE</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">META&nbsp;</span><span style="color: #ff0000">NAME</span><span style="color: #0000ff">="Author"</span><span style="color: #ff0000">&nbsp;CONTENT</span><span style="color: #0000ff">="emu"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xml&nbsp;</span><span style="color: #ff0000">src</span><span style="color: #0000ff">="error.xml"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="err"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">xml</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">SCRIPT&nbsp;</span><span style="color: #ff0000">LANGUAGE</span><span style="color: #0000ff">="JavaScript"</span><span style="color: #ff0000">&nbsp;src</span><span style="color: #0000ff">="error.xml"</span><span style="color: #ff0000">&nbsp;charset</span><span style="color: #0000ff">="utf-8"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">SCRIPT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">SCRIPT&nbsp;</span><span style="color: #ff0000">LANGUAGE</span><span style="color: #0000ff">="JavaScript"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #f5f5f5"><br />
alert(err.getElementsByTagName(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">error</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">)[</span><span style="color: #000000; background-color: #f5f5f5">0</span><span style="color: #000000; background-color: #f5f5f5">].xml)<br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">SCRIPT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span></div>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/emu/aggbug/176342.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2008-01-18 22:07 <a href="http://www.blogjava.net/emu/archive/2008/01/18/176342.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OpenSocial，想说爱你不容易</title><link>http://www.blogjava.net/emu/archive/2008/01/03/172540.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 03 Jan 2008 10:11:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/01/03/172540.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/172540.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/01/03/172540.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/172540.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/172540.html</trackback:ping><description><![CDATA[OpenSocial的推出，让大家怀抱了多大的期望。Many sites, one API ，Server optional，将来我们的web application 就可以一次编写到处运行，英特网变成一个（也许几个）巨大的操作系统...google给我们描绘了一个多么美丽的乌托邦。包括Myspace在内的诸多SNS网站也都早早就宣布支持OpenSocial。可是两个月过去了，还是只看到orkut的一个半成品的sandbox，在emu的手里还从来没有顺顺当当跑起来过。Myspace.cn在千呼万唤之后终于丢出来一个开发者平台MDP，大家高兴了半天以为OpenSocial终于有一个实现平台了，可是打开一看：　　<br />
<em><wbr><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;基于Myspace.cn开发者平台（MDP），您可以使所开发产品 访问MySpace的用户及用户数据，这些产品将可以直接植入MySpace.cn页面，从而让更多的人有机会看到和使用您的产品，MDP可以让您： <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用Flash，<font style="line-height: 1.3em" color="#ff0000">或者在不久的将来用JavaScript和HTML来开发您的产品</font><wbr>； <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;自己在产品上发布广告，或由MySpace提供定向广告，投放在您的产品上； <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;应用程序可以部署在您自己的服务器上或MySpace.cn的服务器上；<img alt="" src="http://zt.oeeee.com/ndrw/Vote.aspx?PID=13" style="display:none"/ /><br />
<font style="line-height: 1.3em" color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MDP将支持Open Social规范</font><wbr>，OpenSocial是一个令人耳目一新的新的社区产品开发标准，可以使用大家所熟悉的ActionScript，JavaScript, HTML等语言开发跨平台的社区产品。<br />
</em>　　<br />
嗯，将支持js，将支持html，将支持Open Social规范，只要我们耐心等，牛奶会有的，面包会有的，一切都会有的。这帮子家伙就会忽悠，让人不禁要想，大家真的打算支持Open Social 吗？<img id="paperPicArea1" style="display: none; position: relative" alt="" src="http://imgcache.qq.com/qzone_v4/b.gif" /> <img src ="http://www.blogjava.net/emu/aggbug/172540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2008-01-03 18:11 <a href="http://www.blogjava.net/emu/archive/2008/01/03/172540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在eclipse下面跑jsunit</title><link>http://www.blogjava.net/emu/archive/2007/11/01/157450.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 01 Nov 2007 04:13:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/11/01/157450.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/157450.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/11/01/157450.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/157450.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/157450.html</trackback:ping><description><![CDATA[<p>写了几个简单的测试用例，在eclips下面绑定了TT，Firefox和safari跑一下，相当的舒服啊。<br />
</p>
<img height="519" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/jsunit.GIF" width="337" border="0" /><br />
<br />
由于使用了本地文件系统访问，用IE的话会有权限警告，要多一个确认的交互才能允许，于是改用TT。<br />
用FireFox最新的minefield版本和opera在访问本地文件系统的时候都有问题，要改用web访问方式才能通过：<br />
<br />
minefield<br />
<img height="466" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/jsunitminefield.GIF" width="585" border="0" /><br />
<br />
opera：<br />
<img height="582" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/jsunitopera.GIF" width="590" border="0" /><br />
<br />
<br />
下载jsunit的plugin，放到eclipse的plugins目录下面，然后在window/preferences下面配置jsunit的路径和测试用的浏览器就可以了<br />
<img height="529" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/jsunitsetup.GIF" width="777" border="0" /><br />
<br />
safari我使用的是<span style="color: black"><a href="http://www.deviantart.com/download/65199427/Safari_CHS_for_Win_by_hohodigidea.rar"><span style="color: black">Digidea</span>的汉化版</a>。safari</span>似乎兼容性不好，标准的jsunit测试都有两个通不过，另有两个运行不起来。<br />
 <img src ="http://www.blogjava.net/emu/aggbug/157450.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-11-01 12:13 <a href="http://www.blogjava.net/emu/archive/2007/11/01/157450.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>定位到了IE报告“存储空间不足，无法完成此操作”的原因。</title><link>http://www.blogjava.net/emu/archive/2007/08/24/139182.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 24 Aug 2007 13:39:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/08/24/139182.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/139182.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/08/24/139182.html#Feedback</comments><slash:comments>39</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/139182.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/139182.html</trackback:ping><description><![CDATA[<p>&#169;emu<br><br>近期有大量的投诉是关于在脚本运行过程IE报告&#8220;存储空间不足，无法完成此操作&#8221;的。出现此问题的用户全部都无法访问IE的&#8220;帮助——关于&#8221;页面，报告相同的错误，因此可以定位为IE本身出了问题。<br><br>怀疑是某些软件修改了系统造成，但是也一直没有定位到是什么软件或者插件。由于问题无法在开发机上重现，定位了非常久，最后猜测是由于在模式对话框中访问navigator.userAgent造成。编写了如下页面：<br><br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">SCRIPT</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br>showModalDialog(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">javascript:'&lt;script&gt;alert(navigator.userAgent);&lt;\/script&gt;'</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">SCRIPT</span><span style="COLOR: #0000ff">&gt;</span></div>
<p><br>&nbsp;</p>
<p>保存后发送到出问题的用户那里运行，果然重现了问题：<br><br><img src="http://www.blogjava.net/images/blogjava_net/emu/4494/o_存储空间不足.jpg" border=0><br><br>&#169;emu</p>
<img src ="http://www.blogjava.net/emu/aggbug/139182.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-08-24 21:39 <a href="http://www.blogjava.net/emu/archive/2007/08/24/139182.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IE傻呼呼的</title><link>http://www.blogjava.net/emu/archive/2007/08/21/138247.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 20 Aug 2007 16:26:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/08/21/138247.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/138247.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/08/21/138247.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/138247.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/138247.html</trackback:ping><description><![CDATA[<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">HTML</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">HEAD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">meta&nbsp;</span><span style="COLOR: #ff0000">http-equiv</span><span style="COLOR: #0000ff">="Content-Type"</span><span style="COLOR: #ff0000">&nbsp;content</span><span style="COLOR: #0000ff">="text/html;charset=gb2312"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HEAD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">BODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>试一试<br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">SCRIPT&nbsp;</span><span style="COLOR: #ff0000">LANGUAGE</span><span style="COLOR: #0000ff">="JavaScript"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br>setTimeout('document.charset</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">utf-8</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">',</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">SCRIPT</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">BODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HTML</span><span style="COLOR: #0000ff">&gt;</span></div>
这个gb2312页面，在IE下面显示出来，在&#8220;查看--编码&#8221;或者右键菜单的&#8220;编码&#8221;中，都会告诉你这个页面是UTF-8编码的，傻的够可爱的，可以蒙倒不少人了。FF和OP在这点上是要聪明一点，不上当。 <br>如果手工选到utf-8上会原形毕露，不过刷新一下又可以变回去。 
<img src ="http://www.blogjava.net/emu/aggbug/138247.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-08-21 00:26 <a href="http://www.blogjava.net/emu/archive/2007/08/21/138247.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hello ruby</title><link>http://www.blogjava.net/emu/archive/2007/08/12/136246.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Sun, 12 Aug 2007 14:30:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/08/12/136246.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/136246.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/08/12/136246.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/136246.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/136246.html</trackback:ping><description><![CDATA[<p>心血来潮下了个ruby运行环境，还是写个经典的99乘法表吧。不知道怎么查语法手册，基本都是猜的语法。<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">i</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">1</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #800000">10</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;j</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">1</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;j</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">i<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;String(i)</span><span style="COLOR: #000000">+</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">*</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">String(j)</span><span style="COLOR: #000000">+</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">String(i</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">j)</span><span style="COLOR: #000000">+</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">\t</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">1</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;end<br>&nbsp;&nbsp;i</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">1</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">\n</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000"><br>end</span></div>
<br>for的语法没有猜到，用经典的while代替了。好像不支持++操作，用+＝1代替了，好像也不支持整数的toString方法，试了下强制类型转换String(i)居然可以呵呵。print语句也是猜出来的。
<img src ="http://www.blogjava.net/emu/aggbug/136246.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-08-12 22:30 <a href="http://www.blogjava.net/emu/archive/2007/08/12/136246.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IE的经典javascript异常</title><link>http://www.blogjava.net/emu/archive/2007/08/11/135964.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 10 Aug 2007 19:53:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/08/11/135964.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/135964.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/08/11/135964.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/135964.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/135964.html</trackback:ping><description><![CDATA[这是两个经典异常，不知道原理的话很难定位。从下面的代码中可用看到发生的条件<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">iframe&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">="javascript:'&lt;script&gt;top.ff1={abc:function(){}}&lt;\/script&gt;'"</span><span style="COLOR: #ff0000">&nbsp;width</span><span style="COLOR: #0000ff">=0&nbsp;</span><span style="COLOR: #ff0000">height</span><span style="COLOR: #0000ff">=0&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="f1"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">iframe</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">button&nbsp;</span><span style="COLOR: #ff0000">onclick</span><span style="COLOR: #0000ff">="f1.location='about:blank';setTimeout('alert(ff1.abc())',0)"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">不能执行已经释放的代码</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">button</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">iframe&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">="javascript:'&lt;script&gt;top.ff2={abc:function(){}}&lt;\/script&gt;'"</span><span style="COLOR: #ff0000">&nbsp;width</span><span style="COLOR: #0000ff">=0&nbsp;</span><span style="COLOR: #ff0000">height</span><span style="COLOR: #0000ff">=0&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="f2"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">iframe</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">button&nbsp;</span><span style="COLOR: #ff0000">onclick</span><span style="COLOR: #0000ff">="f2.location='about:blank';setTimeout('alert(ff2.toString())',0)"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">意外地调用了方法或属性访问</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">button</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br></span></div>
<p><br>p标签的innerHTML不能插入center标记：<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">p&nbsp;</span><span style="COLOR: #ff0000">onclick</span><span style="COLOR: #0000ff">="innerHTML='&lt;CENTER&gt;&lt;/CENTER&gt;'"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">button</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">未知的运行时错误</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">button</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">p</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span></div>
<br>下面这个是经典的&#8220;无法打开Internet站点&#8221;异常：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="tt"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">document.getElementById(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">tt</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">).innerHTML</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">""</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span></div>
<br>从这些例子可以看到IE的健壮性还是有挺大的提升余地的。 
<img src ="http://www.blogjava.net/emu/aggbug/135964.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-08-11 03:53 <a href="http://www.blogjava.net/emu/archive/2007/08/11/135964.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>看看各个浏览器对异常对象的支持</title><link>http://www.blogjava.net/emu/archive/2007/07/25/132304.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 25 Jul 2007 06:31:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/07/25/132304.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/132304.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/07/25/132304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/132304.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/132304.html</trackback:ping><description><![CDATA[测试代码：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">{abc();}</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(e){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;e){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;p&gt;&lt;b&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;/b&gt;:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">e[i]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;/p&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}</span></div>
<br>在IE下：
<p><strong>name</strong>:TypeError</p>
<p><strong>message</strong>:缺少对象</p>
<p><strong>number</strong>:-2146823281</p>
<p><strong>description</strong>:缺少对象<br></p>
<br>在FireFox下<br>
<p><strong>message</strong>:abc is not defined</p>
<p><strong>fileName</strong>:file:///C:/test.html</p>
<p><strong>lineNumber</strong>:14</p>
<p><strong>stack</strong>:@file:///C:/test.html:14 </p>
<p><strong>name</strong>:ReferenceError</p>
<br>在safari下：<br><span class=Apple-style-span style="WORD-SPACING: 0px; FONT: 16px 'Times New Roman'; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0">
<p><strong>message</strong>:Can't find variable: abc</p>
<p><strong>line</strong>:14</p>
<p><strong>sourceId</strong>:4</p>
<p><strong>sourceURL</strong>:file:///C:/test.html</p>
<p><strong>name</strong>:ReferenceError</p>
<p><br>最烂的是opera：<br>message:Statement on line 4: Reference to undefined variable: abc Backtrace: Line 4 of inline#1 script in <a href="file://localhost/C:/test.html">file://localhost/C:/test.html</a> abc(); </p>
<p>opera#sourceloc:4<br><br>虽然message是所有浏览器都支持，但是所有浏览器的message都不同，而且不同语言版本的操作系统和浏览器也有不同。<br><br>因此要做跨浏览器的异常区分处理，emu认为最好是用name来区分异常类型，这样就只有浏览器的不同而没有语言版本的不同了。opera做的这么烂，以至于只能从message入手，还是最后再考虑做对它的支持吧。</p>
</span>
<img src ="http://www.blogjava.net/emu/aggbug/132304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-07-25 14:31 <a href="http://www.blogjava.net/emu/archive/2007/07/25/132304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纯html的折线新画法</title><link>http://www.blogjava.net/emu/archive/2007/07/20/131544.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 20 Jul 2007 11:42:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/07/20/131544.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/131544.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/07/20/131544.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/131544.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/131544.html</trackback:ping><description><![CDATA[<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-left:100px&nbsp;solid&nbsp;white;border-top:400px&nbsp;solid&nbsp;red;width:0px;position:absolute;top:10px;left:10px"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-left:99px&nbsp;solid;border-left-color:transparent&nbsp;!important;border-left-color:yellow;;border-top:396px&nbsp;solid&nbsp;white;width:0px;position:absolute;top:10px;left:12px;filter:progid:DXImageTransform.Microsoft.Chroma(color='yellow')"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><br>&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-right:100px&nbsp;solid&nbsp;white;border-top:400px&nbsp;solid&nbsp;red;width:0px;position:absolute;top:10px;left:110px"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-right:98px&nbsp;solid;border-right-color:transparent&nbsp;!important;border-right-color:yellow;border-top:392px&nbsp;solid&nbsp;white;width:0px;position:absolute;top:10px;left:110px;filter:progid:DXImageTransform.Microsoft.Chroma(color='yellow')"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br></span></div>
<br>这个实现实在是有点匪夷所思了。IE/FF/OPERA下面可用。在safari下面计算border的时候有多一个像素的误差，因此这个坐标要做一些调整：<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-left:100px&nbsp;solid&nbsp;white;border-top:400px&nbsp;solid&nbsp;red;width:0px;position:absolute;top:10px;left:10px"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-left:99px&nbsp;solid;border-left-color:transparent&nbsp;!important;border-left-color:yellow;;border-top:396px&nbsp;solid&nbsp;white;width:0px;position:absolute;top:10px;left:12px;filter:progid:DXImageTransform.Microsoft.Chroma(color='yellow')"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><br>&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-right:100px&nbsp;solid&nbsp;white;border-top:400px&nbsp;solid&nbsp;red;width:0px;position:absolute;top:10px;left:110px"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-right:98px&nbsp;solid;border-right-color:transparent&nbsp;!important;border-right-color:yellow;border-top:392px&nbsp;solid&nbsp;white;width:0px;position:absolute;top:10px;left:110px;filter:progid:DXImageTransform.Microsoft.Chroma(color='yellow')"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br></span></div>
&nbsp; 
<img src ="http://www.blogjava.net/emu/aggbug/131544.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-07-20 19:42 <a href="http://www.blogjava.net/emu/archive/2007/07/20/131544.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决IE关闭页面时连续弹出新窗口的bug</title><link>http://www.blogjava.net/emu/archive/2007/07/06/128666.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 06 Jul 2007 12:41:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/07/06/128666.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/128666.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/07/06/128666.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/128666.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/128666.html</trackback:ping><description><![CDATA[这个问题长期以来一直一个随机出现，又十分难以重现和定位。几经努力之后定位到了，在一个带有复杂的内嵌iframe的页面，当内嵌的iframe正在渲染的过程中关闭IE 浏览器的时候，会比较容易发生这个问题。<br><br>比较容易猜想的是IE在关闭iframe的时候出现了某些问题。猜测是几个iframe相互有通过top的脚本调用有关系，或者几个iframe和top都在各自不同的域名下有关系，但是页面太复杂进一步定位具体是什么问题十分困难（当试图简化页面的时候，问题往往就不能重现了）。而且问题出现在浏览器内部，就算具体定位到了不一定就能够解决。所以更容易和更有意义的，可能是回避&#8220;连续弹出新窗口&#8221;这个问题。<br><br>最开始的想法是，IE既然在出问题的时候是正在渲染iframe，那么此时可能cpu特别繁忙导致了问题，如果可以回避cpu的最高峰期，把渲染iframe的动作做一定的延迟，也许就可以解决问题。试验后发现，只是减缓了页面的展现速度，对问题的解决基本没用帮助。<br><br>换个想法，想想如果我们自己做浏览器，我们在处理这个问题的时候会怎么做呢，容易出什么问题呢？我们可以做这样的猜测：IE关闭窗口的时候，是先关闭和回收了最外层的window对象，然后收集它引用的各种资源，一一进行关闭和回收。也就是说，相当于一个队列式（先打开的window对象先销毁回收，后打开（被引用）的window对象后销毁和回收）或者递归式（父window对象先销毁，子window对象后销毁）的操作：。<br><br>看看下面这个测试页面的关闭顺序，其实很耐人寻味（把代码保存为一个html文件后刷新页面）：<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">iframe&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="emu1"</span><span style="COLOR: #ff0000">&nbsp;src</span><span style="COLOR: #0000ff">="javascript:'&lt;iframe&nbsp;name=emu2&gt;&lt;/iframe&gt;&lt;iframe&nbsp;name=emu3&gt;&lt;/iframe&gt;'"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">iframe</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">iframe&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="emu4"</span><span style="COLOR: #ff0000">&nbsp;src</span><span style="COLOR: #0000ff">="javascript:'&lt;iframe&nbsp;name=emu5&gt;&lt;/iframe&gt;&lt;iframe&nbsp;name=emu6&gt;&lt;/iframe&gt;'"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">iframe</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">SCRIPT&nbsp;</span><span style="COLOR: #ff0000">LANGUAGE</span><span style="COLOR: #0000ff">="JavaScript"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br>setTimeout(</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){<br>&nbsp;&nbsp;&nbsp;&nbsp;window.attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){alert('parent')})<br>&nbsp;&nbsp;&nbsp;&nbsp;frames['emu1'].attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){alert('iframe1')})<br>&nbsp;&nbsp;&nbsp;&nbsp;frames['emu1'].frames['emu2'].attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){alert('iframe2')})<br>&nbsp;&nbsp;&nbsp;&nbsp;frames['emu1'].frames['emu3'].attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){alert('iframe3')})<br>&nbsp;&nbsp;&nbsp;&nbsp;frames['emu4'].attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){alert('iframe4')})<br>&nbsp;&nbsp;&nbsp;&nbsp;frames['emu4'].frames['emu5'].attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){alert('iframe5')})<br>&nbsp;&nbsp;&nbsp;&nbsp;frames['emu4'].frames['emu6'].attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){alert('iframe6')})<br>},</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">SCRIPT</span><span style="COLOR: #0000ff">&gt;</span></div>
<br><br>
<p>这样子很容易带来的一个问题是，对象的销毁和资源的回收工作，一般来说是作为低优先级的操作，要为高优先级的操作让路的，那么在top窗口被销毁回收的时候，各个iframe的渲染工作，作为优先级比较高的计算，仍在继续进行。等到各个iframe渲染完成了以后，才发现他本来以为一直在哪里的parent（或者top）句柄，<strong>现在指向了一个随机的位置</strong>，于是就发生了不可预测的后果。<br><br>假如问题真的是这样，那么解决方案可能是<br>1 对关闭操作触发的销毁和回收操作，提高优先级别，或者<br>2 一但触发关闭操作，立刻主动停止所有的渲染操作，全部资源等待回收，或者<br>3 对window的关闭操作采用栈式的顺序，晚创建的先销毁，或者或者冒泡式的时序，子窗口先销毁再销毁父窗口。<br>现在我们的问题是浏览器自己是不会去调整自己的运算优先级和销毁顺序的，那么我们能否用脚本来帮助它调整一下window对象的销毁次序呢：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="emu"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">iframe&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">="javascript:'this&nbsp;is&nbsp;an&nbsp;iframe'"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">iframe</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">SCRIPT&nbsp;</span><span style="COLOR: #ff0000">LANGUAGE</span><span style="COLOR: #0000ff">="JavaScript"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br>window.attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){document.getElementById(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">).innerHTML</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">iframe&nbsp;closed</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;alert('parent')})<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">SCRIPT</span><span style="COLOR: #0000ff">&gt;</span></div>
<p><br>经过这样的处理后，在可以稳定重现连续打开IE窗口的计算机上，此问题消失，应该说得到了初步解决。<br><br>这个问题其实历史非常悠久了，flashget论坛有人认为是flashget的问题：<br><a href="http://bbs.flashget.com/post.php?action=reply&amp;fid=14&amp;tid=2461&amp;repquote=16576&amp;extra">http://bbs.flashget.com/post.php?action=reply&amp;fid=14&amp;tid=2461&amp;repquote=16576&amp;extra</a>=<br><br>阿里巴巴也蒙受了不白之冤：<br><a href="http://club.china.alibaba.com/forum/thread/view/_22629427_.html">http://club.china.alibaba.com/forum/thread/view/_22629427_.html</a><br><br>同样不幸的还有土豆网，土豆的官方声明把箭头指向了BHO，不知是否有根据，实际试验至少有部分机器确实选中了&#8220;启用第三方浏览器扩展&#8221;，并且禁止此选项后问题解决了，但是这个操作也很难作为一个解决方案。<br><a href="http://bbs.tudou.com/topic/20061231/5686">http://bbs.tudou.com/topic/20061231/5686</a><br><br>但是网上搜不到其他相关的解决方案，不少人都以为是中了木马、病毒或者打开的网页带有恶意脚本，msdn上一时也搜不到相关的资料。特此贴出来共享&nbsp;。</p>
<img src ="http://www.blogjava.net/emu/aggbug/128666.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-07-06 20:41 <a href="http://www.blogjava.net/emu/archive/2007/07/06/128666.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows常用命令集[转] </title><link>http://www.blogjava.net/emu/archive/2007/06/08/122912.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 08 Jun 2007 10:11:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/06/08/122912.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/122912.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/06/08/122912.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/122912.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/122912.html</trackback:ping><description><![CDATA[gpedit.msc-----组策略 sndrec32-------录音机 <br>Nslookup-------IP地址侦测器 explorer-------打开资源管理器 <br>logoff---------注销命令 tsshutdn-------60秒倒计时关机命令 <br>lusrmgr.msc----本机用户和组 services.msc---本地服务设置 <br>oobe/msoobe /a----检查XP是否激活 notepad--------打开记事本 <br>cleanmgr-------垃圾整理 net start messenger----开始信使服务 <br>compmgmt.msc---计算机管理 net stop messenger-----停止信使服务 <br>conf-----------启动netmeeting dvdplay--------DVD播放器 <br>charmap--------启动字符映射表 diskmgmt.msc---磁盘管理实用程序 <br>calc-----------启动计算器 dfrg.msc-------磁盘碎片整理程序 <br>chkdsk.exe-----Chkdsk磁盘检查 devmgmt.msc--- 设备管理器 <br>regsvr32 /u *.dll----停止dll文件运行 drwtsn32------ 系统医生 <br>rononce -p ----15秒关机 dxdiag---------检查DirectX信息 <br>regedt32-------注册表编辑器 Msconfig.exe---系统配置实用程序 <br>rsop.msc-------组策略结果集 mem.exe--------显示内存使用情况 <br>regedit.exe----注册表 winchat--------XP自带局域网聊天 <br>progman--------程序管理器 winmsd---------系统信息 <br>perfmon.msc----计算机性能监测程序 winver---------检查Windows版本 <br>sfc /scannow-----扫描错误并复原 winipcfg-------IP配置 <br>taskmgr-----任务管理器（2000／xp／2003） command--------cmd <br>fsmgmt.msc 共享文件夹 netstat -an----查看端口 <br>osk 屏幕键盘 install.asp----修改注册网页 <br>eventvwr.msc 时间查看器 <br>secpol.msc 本地安全设置 <br>services.msc 服务 <br>2K <br><br>accwiz.exe &gt; 辅助工具向导 <br>acsetups.exe &gt; acs setup dcom server executable <br>actmovie.exe &gt; 直接显示安装工具 <br>append.exe &gt; 允许程序打开制定目录中的数据 <br>arp.exe &gt; 显示和更改计算机的ip与硬件物理地址的对应列表 <br>at.exe &gt; 计划运行任务 <br>atmadm.exe &gt; 调用管理器统计 <br>attrib.exe &gt; 显示和更改文件和文件夹属性 <br>autochk.exe &gt; 检测修复文件系统 <br>autoconv.exe &gt; 在启动过程中自动转化系统 <br>autofmt.exe &gt; 在启动过程中格式化进程 <br>autolfn.exe &gt; 使用长文件名格式 <br>bootok.exe &gt; boot acceptance application for registry <br>bootvrfy.exe &gt; 通报启动成功 <br>cacls.exe &gt; 显示和编辑acl <br>calc.exe &gt; 计算器 <br>cdplayer.exe &gt; cd播放器 <br>change.exe &gt; 与终端服务器相关的查询 <br>charmap.exe &gt; 字符映射表 <br>chglogon.exe &gt; 启动或停用会话记录 <br>chgport.exe &gt; 改变端口（终端服务） <br>chgusr.exe &gt; 改变用户（终端服务） <br>chkdsk.exe &gt; 磁盘检测程序 <br>chkntfs.exe &gt; 磁盘检测程序 <br>cidaemon.exe &gt; 组成ci文档服务 <br>cipher.exe &gt; 在ntfs上显示或改变加密的文件或目录 <br>cisvc.exe &gt; 索引内容 <br>ckcnv.exe &gt; 变换cookie <br>cleanmgr.exe &gt; 磁盘清理 <br>cliconfg.exe &gt; sql客户网络工具 <br>clipbrd.exe &gt; 剪贴簿查看器 <br>clipsrv.exe &gt; 运行clipboard服务 <br>clspack.exe &gt; 建立系统文件列表清单 <br>cluster.exe &gt; 显示域的集群 <br>_cmd_.exe &gt; 没什么好说的！ <br>cmdl32.exe &gt; 自动下载连接管理 <br>cmmgr32.exe &gt; 连接管理器 <br>cmmon32.exe &gt; 连接管理器监视 <br>cmstp.exe &gt; 连接管理器配置文件安装程序 <br>comclust.exe &gt; 集群 <br>comp.exe &gt; 比较两个文件和文件集的内容＊ <br>compact.exe &gt; 显示或改变ntfs分区上文件的压缩状态 <br>conime.exe &gt; ime控制台 <br>control.exe &gt; 控制面板 <br>convert.exe &gt; 转换文件系统到ntfs <br>convlog.exe &gt; 转换iis日志文件格式到ncsa格式 <br>cprofile.exe &gt; 转换显示模式 <br>cscript.exe &gt; 较本宿主版本 <br>csrss.exe &gt; 客户服务器runtime进程 <br>csvde.exe &gt; 日至格式转换程序 <br>dbgtrace.exe &gt; 和terminal server相关 <br>dcomcnfg.exe &gt; dcom配置属性 <br>dcphelp.exe &gt; ? <br>dcpromo.exe &gt; ad安装向导 <br>ddeshare.exe &gt; dde共享 <br>ddmprxy.exe &gt; <br>debug.exe &gt; 就是debug啦！ <br>dfrgfat.exe &gt; fat分区磁盘碎片整理程序 <br>dfrgntfs.exe &gt; ntfs分区磁盘碎片整理程序 <br>dfs_cmd_.exe &gt; 配置一个dfs树 <br>dfsinit.exe &gt; 分布式文件系统初始化 <br>dfssvc.exe &gt; 分布式文件系统服务器 <br>diantz.exe &gt; 制作cab文件 <br>diskperf.exe &gt; 磁盘性能计数器 <br>dllhost.exe &gt; 所有com+应用软件的主进程 <br>dllhst3g.exe &gt; <br>dmadmin.exe &gt; 磁盘管理服务 <br>dmremote.exe &gt; 磁盘管理服务的一部分 <br>dns.exe &gt; dns applications dns <br>doskey.exe &gt; 命令行创建宏 <br>dosx.exe &gt; dos扩展 <br>dplaysvr.exe &gt; 直接运行帮助 <br>drwatson.exe &gt; 华生医生错误检测 <br>drwtsn32.exe &gt; 华生医生显示和配置管理 <br>dtcsetup.exe &gt; installs mdtc <br>dvdplay.exe &gt; dvd播放 <br>dxdiag.exe &gt; direct-x诊断工具 <br>edlin.exe &gt; 命令行的文本编辑器（历史悠久啊！） <br>edlin.exe &gt; 命令行的文本编辑器（历史悠久啊！） <br>esentutl.exe &gt; ms数据库工具 <br>eudcedit.exe &gt; type造字程序 <br>eventvwr.exe &gt; 事件查看器 <br>evnt_cmd_.exe &gt; event to trap translator; configuration tool <br>evntwin.exe &gt; event to trap translator setup <br>exe2bin.exe &gt; 转换exe文件到二进制 <br>expand.exe &gt; 解压缩 <br>extrac32.exe &gt; 解cab工具 <br>fastopen.exe &gt; 快速访问在内存中的硬盘文件 <br>faxcover.exe &gt; 传真封面编辑 <br>faxqueue.exe &gt; 显示传真队列 <br>faxsend.exe &gt; 发送传真向导 <br>faxsvc.exe &gt; 启动传真服务 <br>fc.exe &gt; 比较两个文件的不同 <br>find.exe &gt; 查找文件中的文本行 <br>findstr.exe &gt; 查找文件中的行 <br>finger.exe &gt; 一个用户并显示出统计结果 <br>fixmapi.exe &gt; 修复mapi文件 <br>flattemp.exe &gt; 允许或者禁用临时文件目录 <br>fontview.exe &gt; 显示字体文件中的字体 <br>forcedos.exe &gt; forces a file to start in dos mode. 强制文件在dos模式下运行 <br>freecell.exe &gt; popular windows game 空当接龙 <br>ftp.exe &gt; file transfer protocol used to transfer files over a network conne <br>ction 就是ftp了 <br>gdi.exe &gt; graphic device interface 图形界面驱动 <br>grovel.exe &gt; <br>grpconv.exe &gt; program manager group convertor 转换程序管理员组 <br>help.exe &gt; displays help for windows 2000 commands 显示帮助 <br>hostname.exe &gt; display hostname for machine. 显示机器的hostname <br>ie4uinit.exe &gt; ie5 user install tool ie5用户安装工具 <br>ieshwiz.exe &gt; customize folder wizard 自定义文件夹向导 <br>iexpress.exe &gt; create and setup packages for install 穿件安装包 <br>iisreset.exe &gt; restart iis admin service 重启iis服务 <br>internat.exe &gt; keyboard language indicator applet 键盘语言指示器 <br>ipconfig.exe &gt; windows 2000 ip configuration. 察看ip配置 <br>ipsecmon.exe &gt; ip security monitor ip安全监视器 <br>ipxroute.exe &gt; ipx routing and source routing control program ipx路由和源路由 <br>控制程序 <br>irftp.exe &gt; setup ftp for wireless communication 无线连接 <br>ismserv.exe &gt; intersite messaging service 安装或者删除service control manage <br>r中的服务 <br>jdbgmgr.exe &gt; microsoft debugger for java 4 java4的调试器 <br>jetconv.exe &gt; convert a jet engine database 转换jet engine数据库 <br>jetpack.exe &gt; compact jet database. 压缩jet数据库 <br>jview.exe &gt; command-line loader for java java的命令行装载者 <br>krnl386.exe &gt; core component for windows 2000 2000的核心组件 <br>label.exe &gt; change label for drives 改变驱动器的卷标 <br>lcwiz.exe &gt; license compliance wizard for local or remote systems. 许可证符合 <br>向导 <br>ldifde.exe &gt; ldif cmd line manager ldif目录交换命令行管理 <br>licmgr.exe &gt; terminal server license manager 终端服务许可协议管理 <br>lights.exe &gt; display connection status lights 显示连接状况 <br>llsmgr.exe &gt; windows 2000 license manager 2000许可协议管理 <br>llssrv.exe &gt; start the license server 启动许可协议服务器 <br>lnkstub.exe &gt; <br>locator.exe &gt; rpc locator 远程定位 <br>lodctr.exe &gt; load perfmon counters 调用性能计数 <br>logoff.exe &gt; log current user off. 注销用户 <br>lpq.exe &gt; displays status of a remote lpd queue 显示远端的lpd打印队列的状态， <br>显示被送到基于unix的服务器的打印任务 <br>lpr.exe &gt; send a print job to a network printer. 重定向打印任务到网络中的打印 <br>机。通常用于unix客户打印机将打印任务发送给连接了打印设备的nt的打印机服务器。 <br><br>lsass.exe &gt; lsa executable and server dll 运行lsa和server的dll <br>lserver.exe &gt; specifies the new dns domain for the default server 指定默认se <br>rver新的dns域 <br>os2.exe &gt; an os/2 warp server (os2 /o) os/2 <br>os2srv.exe &gt; an os/2 warp server os/2 <br>os2ss.exe &gt; an os/2 warp server os/2 <br>osk.exe &gt; on screen keyboard 屏幕键盘 <br>packager.exe &gt; windows 2000 packager manager 对象包装程序 <br>pathping.exe &gt; combination of ping and tracert 包含ping和tracert的程序 <br>pax.exe &gt; is a posix program and path names used as arguments must be specif <br>ied in posix format. use "//c/users/default" instead of "c:usersdefault." <br>启动便携式存档互换 (pax) 实用程序 <br>pentnt.exe &gt; used to check the pentium for the floating point division error <br>. 检查pentium的浮点错误 <br>perfmon.exe &gt; starts windows performance monitor 性能监视器 <br>ping.exe &gt; packet internet groper 验证与远程计算机的连接 <br>posix.exe &gt; used for backward compatibility with unix 用于兼容unix <br>print.exe &gt; cmd line used to print files 打印文本文件或显示打印队列的内容。 <br>progman.exe &gt; program manager 程序管理器 <br>proquota.exe &gt; profile quota program <br>psxss.exe &gt; posix subsystem application posix子系统应用程序 <br>qappsrv.exe &gt; displays the available application terminal servers on the net <br>work <br>在网络上显示终端服务器可用的程序 <br>qprocess.exe &gt; display information about processes local or remote 在本地或远 <br>程显示进程的信息（需终端服务） <br>query.exe &gt; query termserver user process and sessions 查询进程和对话 <br>quser.exe &gt; display information about a user logged on 显示用户登陆的信息（需 <br>终端服务） <br>qwinsta.exe &gt; display information about terminal sessions. 显示终端服务的信息 <br><br>rasadmin.exe &gt; start the remote access admin service 启动远程访问服务 <br>rasautou.exe &gt; creates a ras connection 建立一个ras连接 <br>rasdial.exe &gt; dial a connection 拨号连接 <br>ras.exe &gt; starts a ras connection 运行ras连接 <br>rcp.exe &gt; copies a file from and to a rcp service. 在 windows 2000 计算机和运 <br>行远程外壳端口监控程序 rshd 的系统之间复制文件 <br>rdpclip.exe &gt; rdpclip allows you to copy and paste files between a terminal <br>session and client console session. 再终端和本地复制和粘贴文件 <br>recover.exe &gt; recovers readable information from a bad or defective disk 从坏 <br>的或有缺陷的磁盘中恢复可读取的信息。 <br>redir.exe &gt; starts the redirector service 运行重定向服务 <br>regedt32.exe &gt; 32-bit register service 32位注册服务 <br>regini.exe &gt; modify registry permissions from within a script 用脚本修改注册 <br>许可 <br>register.exe &gt; register a program so it can have special execution character <br>istics. 注册包含特殊运行字符的程序 <br>regsvc.exe &gt; <br>regsvr32.exe &gt; registers and unregister's dll's. as to how and where it regi <br>ster's them i dont know. 注册和反注册dll <br>regtrace.exe &gt; options to tune debug options for applications failing to dum <br>p trace statements <br>trace 设置 <br>regwiz.exe &gt; registration wizard 注册向导 <br>remrras.exe &gt; <br>replace.exe &gt; replace files 用源目录中的同名文件替换目标目录中的文件。 <br>reset.exe &gt; reset an active section 重置活动部分 <br>rexec.exe &gt; runs commands on remote hosts running the rexec service. 在运行 <br>rexec 服务的远程计算机上运行命令。rexec 命令在执行指定命令前，验证远程计算机 <br>上的用户名，只有安装了 tcp/ip 协议后才可以使用该命令。 <br>risetup.exe &gt; starts the remote installation service wizard. 运行远程安装向导 <br>服务 <br>route.exe &gt; display or edit the current routing tables. 控制网络路由表 <br>routemon.exe &gt; no longer supported 不再支持了！ <br>router.exe &gt; router software that runs either on a dedicated dos or on an os <br>. 检查pentium的浮点错误 <br>perfmon.exe &gt; starts windows performance monitor 性能监视器 <br>ping.exe &gt; packet internet groper 验证与远程计算机的连接 <br>posix.exe &gt; used for backward compatibility with unix 用于兼容unix <br>print.exe &gt; cmd line used to print files 打印文本文件或显示打印队列的内容。 <br>progman.exe &gt; program manager 程序管理器 <br>proquota.exe &gt; profile quota program <br>psxss.exe &gt; posix subsystem application posix子系统应用程序 <br>qappsrv.exe &gt; displays the available application terminal servers on the net <br>work <br>在网络上显示终端服务器可用的程序 <br>qprocess.exe &gt; display information about processes local or remote 在本地或远 <br>程显示进程的信息（需终端服务） <br>query.exe &gt; query termserver user process and sessions 查询进程和对话 <br>quser.exe &gt; display information about a user logged on 显示用户登陆的信息（需 <br>终端服务） <br>qwinsta.exe &gt; display information about terminal sessions. 显示终端服务的信息 <br><br>rasadmin.exe &gt; start the remote access admin service 启动远程访问服务 <br>rasautou.exe &gt; creates a ras connection 建立一个ras连接 <br>rasdial.exe &gt; dial a connection 拨号连接 <br>ras.exe &gt; starts a ras connection 运行ras连接 <br>rcp.exe &gt; copies a file from and to a rcp service. 在 windows 2000 计算机和运 <br>行远程外壳端口监控程序 rshd 的系统之间复制文件 <br>rdpclip.exe &gt; rdpclip allows you to copy and paste files between a terminal <br>session and client console session. 再终端和本地复制和粘贴文件 <br>recover.exe &gt; recovers readable information from a bad or defective disk 从坏 <br>的或有缺陷的磁盘中恢复可读取的信息。 <br>redir.exe &gt; starts the redirector service 运行重定向服务 <br>regedt32.exe &gt; 32-bit register service 32位注册服务 <br>regini.exe &gt; modify registry permissions from within a script 用脚本修改注册 <br>许可 <br>register.exe &gt; register a program so it can have special execution character <br>istics. 注册包含特殊运行字符的程序 <br>regsvc.exe &gt; <br>regsvr32.exe &gt; registers and unregister's dll's. as to how and where it regi <br>ster's them i dont know. 注册和反注册dll <br>regtrace.exe &gt; options to tune debug options for applications failing to dum <br>p trace statements <br>trace 设置 <br>regwiz.exe &gt; registration wizard 注册向导 <br>remrras.exe &gt; <br>replace.exe &gt; replace files 用源目录中的同名文件替换目标目录中的文件。 <br>reset.exe &gt; reset an active section 重置活动部分 <br>rexec.exe &gt; runs commands on remote hosts running the rexec service. 在运行 <br>rexec 服务的远程计算机上运行命令。rexec 命令在执行指定命令前，验证远程计算机 <br>上的用户名，只有安装了 tcp/ip 协议后才可以使用该命令。 <br>risetup.exe &gt; starts the remote installation service wizard. 运行远程安装向导 <br>服务 <br>route.exe &gt; display or edit the current routing tables. 控制网络路由表 <br>routemon.exe &gt; no longer supported 不再支持了！ <br>router.exe &gt; router software that runs either on a dedicated dos or on an os<!-- Added by RelatedTopic, plugin for Bo-Blog 2.0.0 --> 
<img src ="http://www.blogjava.net/emu/aggbug/122912.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-06-08 18:11 <a href="http://www.blogjava.net/emu/archive/2007/06/08/122912.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用前景图实现hover切换图片</title><link>http://www.blogjava.net/emu/archive/2007/06/06/122449.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 06 Jun 2007 12:45:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/06/06/122449.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/122449.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/06/06/122449.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/122449.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/122449.html</trackback:ping><description><![CDATA[现在很多网站都用背景图片来实现hover（鼠标经过）切换图片。但是IE有个该死的bug会造成超链接的背景图片有时无法cache，因此在鼠标经过超链接图片的时候就看到哗哗一大片的http下载请求<img src="http://www.blogjava.net/CuteSoft_Client/CuteEditor/images/emcrook.gif" align=absMiddle border=0>。<br><br>这不像很多网站上描述的，是由于IE的缓存策略被设置在&#8220;每次访问此页时更新&#8221;了造成的，不管IE缓存策略如何设置，都无法彻底避免这个问题。<br><br>emu试验了一下，发现用前景图也可以实现老甘（他的域名貌似已经过期，居然没续费&#8230;&#8230;）用背景图实现的类似效果，不过要多用上一些小技巧：&nbsp;
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;HTML&nbsp;4.0&nbsp;Transitional//EN"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">HTML</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">HEAD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">style</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">overflow</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">hidden</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">height</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">20px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">width</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">20px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file&nbsp;IMG</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">position</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">relative</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">left</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-130px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">top</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-350px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file:hover</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">emu</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">expression(0)</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file:hover&nbsp;IMG</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">left</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-10px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">top</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-350px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file2&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">text-decoration</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">none</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">color</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">gray</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file2&nbsp;span</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">overflow</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">hidden</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">height</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">20px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">width</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">20px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file2&nbsp;span&nbsp;IMG</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">position</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">relative</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">left</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-130px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">top</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-348px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file2:hover</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">color</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">red</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">height</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">20</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file2:hover&nbsp;span&nbsp;IMG</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">left</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-10px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">top</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-348px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">style</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HEAD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">BODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;one&nbsp;single&nbsp;icon&nbsp;:&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">A&nbsp;</span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="file"</span><span style="COLOR: #ff0000">&nbsp;href</span><span style="COLOR: #0000ff">="#"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">img&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">="http://www.blogjava.net/images/blogjava_net/emu/1359/o_button.gif"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">A</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">.</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">BR</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>an&nbsp;icon&nbsp;with&nbsp;text:</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">A&nbsp;</span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="file2"</span><span style="COLOR: #ff0000">&nbsp;href</span><span style="COLOR: #0000ff">="#"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">img&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">="http://www.blogjava.net/images/blogjava_net/emu/1359/o_button.gif"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">test<img src="http://www.blogjava.net/Images/dot.gif"></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">A</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">BODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HTML</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span></div>
<p>&nbsp;不用背景图的一个代价就是，再也不能css裸奔了。twinsen一定要讲这是个人品问题了。有的时候，要对付IE这样人品不好的平台，牺牲一点人品来换取一点性能上的优化，并不是不值得考虑的吧？</p>
在Firefox下面比较郁闷，必须要display:block才能实现overflow的效果，试了下display:table等table族的样式，都没有办法真正的overflow。
<img src ="http://www.blogjava.net/emu/aggbug/122449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-06-06 20:45 <a href="http://www.blogjava.net/emu/archive/2007/06/06/122449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>终于明白m$为什么要对xmlhttp和xmldom做那么多个版本的升级了</title><link>http://www.blogjava.net/emu/archive/2007/06/04/121979.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 04 Jun 2007 12:23:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/06/04/121979.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/121979.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/06/04/121979.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/121979.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/121979.html</trackback:ping><description><![CDATA[<p>为了支持304response，测试了 MSXML2.XMLHTTP.5.0，MSXML2.XMLHTTP.4.0,MSXML2.XMLHTTP.3.0，MSXML2.XMLHTT，Microsoft.XMLHTTP，MSXML2.DOMDocument.5.0，MSXML2.DOMDocument.3.0，MSXML2.DOMDocument，Microsoft.XMLDOM 用get方式分别去拉取一个允许304response的xml资源。结果发现：<br />
<br />
MSXML2.XMLHTTP.5.0 可以直接读取到本机cache，不发出请求。但是没有办法根据本机的cache版本的last-modified时间去要求服务器验证并返回304，只能依靠脚本来控制是否允许cache。<br />
<br />
MSXML2.XMLHTTP.4.0,MSXML2.XMLHTTP.3.0，MSXML2.XMLHTT，Microsoft.XMLHTTP，MSXML2.DOMDocument.4.0，MSXML2.DOMDocument.3.0，MSXML2.DOMDocument，Microsoft.XMLDOM&nbsp; 这几个家伙全部根据操作系统不同，要么不支持cache，要么不发送请求，直接返回cache的版本，无法要求服务器验证并返回304。<br />
<br />
惟一可以正确发送if-modified-since头部的控件是：<strong>MSXML2.DOMDocument.5.0</strong><br />
<br />
MSXML2.XMLHTTP.6.0，，MSXML2.DOMDocument.6.0，MSXML3.DOMDocument等本机都不支持，无法测试。<br />
<br />
每个版本的xmlhttp和xmldom都各有各的问题，唉，M$又让偶失望了。</p>
<img src ="http://www.blogjava.net/emu/aggbug/121979.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-06-04 20:23 <a href="http://www.blogjava.net/emu/archive/2007/06/04/121979.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>经典java面试</title><link>http://www.blogjava.net/emu/archive/2007/05/29/120676.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Tue, 29 May 2007 05:51:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/05/29/120676.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/120676.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/05/29/120676.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/120676.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/120676.html</trackback:ping><description><![CDATA[面试官：熟悉哪种语言<br>应聘者：Java。<br><br>面试官：知道什么叫类么<br>应聘者：我这人实在，工作努力，不知道什么叫累<br><br>面试官：知道什么是包?<br>应聘者：平常不带包 也不用公司准备了<br><br>面试官：知道什么是接口吗?<br>应聘者：我这个人工作认真。从来不找借口偷懒<br><br>面试官：知道什么是继承么<br>应聘者：我是孤儿没什么可以继承的<br><br>面试官:知道什么叫对象么？<br>应聘者:知道，不过我工作努力，上进心强，暂时还没有打算找对象。<br><br>面试官：知道多态么？<br>应聘者：知道，我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为！请问这和Java有什么关系？？&nbsp; 
<img src ="http://www.blogjava.net/emu/aggbug/120676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-05-29 13:51 <a href="http://www.blogjava.net/emu/archive/2007/05/29/120676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VeriSign:专门做信息安全的公司有这么外行的错误</title><link>http://www.blogjava.net/emu/archive/2007/05/23/119403.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 23 May 2007 07:06:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/05/23/119403.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/119403.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/05/23/119403.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/119403.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/119403.html</trackback:ping><description><![CDATA[<p><br />
啥都甭说了，点下下面这个verisign的验证图标，链接到verisign的验证页面上，看看偶的blog也可以以某网站的身份通过verisign的验证，只要再把页面做的比较像某网站，出门诈骗的时候就可以扛上verisign的大旗了。<br />
<br />
<a href="https://seal.verisign.com/splash?form_file=fdf/splash.fdf&amp;dn=WWW.ALIBABA.COM&amp;lang=zh_cn" target='_blank""'><img alt="" src="https://www.tenpay.com/zft/images/verlogo.jpg" /></a>&nbsp;<br />
<br />
究起原因是VeriSign没有从http链接中获取Referer信息来判断被校验的网站，而是根据超链接里面传过来的&#8220;dn&#8221;参数来校验，正所谓的防君子不防小人。作为一个专门做信息安全的公司出这样外行的错误已经让人很无语了，被指出的时候表现出的推脱态度，更让客户寒心。<br />
<br />
根据<a href="http://blog.csdn.net/VeriSign/archive/2005/11/27/537714.aspx">http://blog.csdn.net/VeriSign/archive/2005/11/27/537714.aspx</a>&nbsp;，微软.Net战略、瑞星、盛大网络、中国万网、阿里巴巴、新浪、搜狐、腾讯、上海电信、华为、清华同方、北大方正、厦新电子、TCL、中国工商银行、招商银行、昆仑证券、中国民航等都使用了verisign的服务。<br />
</p>
<p>此外根据 <a href="http://tag.csdn.net/Article/c0a75980-452e-4eaa-ac8e-467c5fc9966b.html">http://tag.csdn.net/Article/c0a75980-452e-4eaa-ac8e-467c5fc9966b.html</a>&nbsp;VeriSign在中国的服务造成的安全隐甚至可能比它解决的多：</p>
<p><span style="background-color: #ffcc99">Verisign公司在中国设立的J根镜像服务器，中方没有丝毫的管理权限，对于服务器中的日志文件、程序文件，中方根本无法接触，全部由美国公司直接管理。然而，真相却与此大相径庭：这个由美国商业公司Verisign所带来的根域名镜像服务器，对中国访问境外域名提速有限，对中国互联网安全的加强作用微乎其微，反倒为美国公司监控中国互联网的访问数据提供了便利。互联网安全专家指出："一旦发生国际冲突，境外机构掐断中国的根服务器镜像和COM域名镜像，所有使用COM域名的网站都将无法访问，中国的互联网将陷入瘫痪，后果不堪设想。<br />
</span><br />
寒一个。 </p>
<img src ="http://www.blogjava.net/emu/aggbug/119403.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-05-23 15:06 <a href="http://www.blogjava.net/emu/archive/2007/05/23/119403.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>office2007带的脚本调试器升级了，不过掉东西了</title><link>http://www.blogjava.net/emu/archive/2007/05/22/119064.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Tue, 22 May 2007 02:37:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/05/22/119064.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/119064.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/05/22/119064.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/119064.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/119064.html</trackback:ping><description><![CDATA[装office2007的时候顺带装了其中带的脚本调试器，发现这个版本的脚本调试器还是有个好处的，如果脚本中有多句代码被挤到一行运行的时候，以前版本的office带的调试器都只能一并运行完，这个版本终于可以像vs的调试器一样逐句跟踪了。虽然不能在一行中间打断点，不过可以在一行上打断点后再用&#8220;运行到光标处&#8221;来代替。<br>&nbsp;<br>可惜在调试网页的时候发现M$搞掉东西了。<br><br>看看2003板的调试菜单：<br><img height=453 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/2003debugger.GIF" width=566 border=0><br><br>再看看2007版的：<br><img height=360 src="http://www.blogjava.net/images/blogjava_net/emu/2007debugger.GIF" width=544 border=0><br><br>少了很不少东西，包括最重要的&#8220;监视窗口&#8221;。简直不能想像没有监视窗口怎么工作。还好入口没了功能还在，可以从另一个地方找到入口，操作是：在调试过程中选择添加&#8220;快速监视&#8221;，然后在&#8220;快速监视&#8221;里面找到&#8220;添加监视&#8221;。 <br>
<img src ="http://www.blogjava.net/emu/aggbug/119064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-05-22 10:37 <a href="http://www.blogjava.net/emu/archive/2007/05/22/119064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>json的例子</title><link>http://www.blogjava.net/emu/archive/2007/05/14/117416.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 14 May 2007 11:37:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/05/14/117416.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/117416.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/05/14/117416.html#Feedback</comments><slash:comments>21</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/117416.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/117416.html</trackback:ping><description><![CDATA[<p><br />
本来一直觉得这么基础的功能是没有什么好拿出来讲的，今天和网友聊天发现，由于缺乏对json的理解，很多人都还在继续带着自己的项目往ajax的方向进军，而完全不知道有一个好得多的替代品。所以写下这么个demo给大家参考：<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">&lt;</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">异步json例子</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">SCRIPT&nbsp;</span><span style="color: #ff0000">LANGUAGE</span><span style="color: #0000ff">="JavaScript"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #f5f5f5"><br />
</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;test(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;s&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.createElement(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">SCRIPT</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;s.id</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">cgi_emotion_list</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.getElementsByTagName(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">HEAD</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">)[</span><span style="color: #000000; background-color: #f5f5f5">0</span><span style="color: #000000; background-color: #f5f5f5">].appendChild(s);<br />
&nbsp;&nbsp;&nbsp;&nbsp;s.src</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">http://g2.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=123456</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;test</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">(){};&nbsp;<br />
}<br />
</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;visitCountCallBack(data){<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.getElementsByTagName(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">HEAD</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">)[</span><span style="color: #000000; background-color: #f5f5f5">0</span><span style="color: #000000; background-color: #f5f5f5">].removeChild(document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">cgi_emotion_list</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">));&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">for</span><span style="color: #000000; background-color: #f5f5f5">(</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;i&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">in</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;data){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;e&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">document.getElementById(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">if</span><span style="color: #000000; background-color: #f5f5f5">(e)&nbsp;e.innerHTML</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">data[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">SCRIPT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">button&nbsp;</span><span style="color: #ff0000">onclick</span><span style="color: #0000ff">="test()"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">test</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">button</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">BR</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
历史访问人数：</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="visitcount"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="color:#6600CC"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">点击test按钮获取数据</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">BR</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
今天访问人数：</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="dayvisit"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="color:#CC6633"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">点击test按钮获取数据</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">BR</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
阳光指数：</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="sun"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="color:red"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">点击test按钮获取数据</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">BR</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
爱心指数：</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="love"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="color:violet"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">点击test按钮获取数据</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">BR</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
雨露指数：</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="rain"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="color:blue"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">点击test按钮获取数据</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">BR</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
营养指数：</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="nutri"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="color:green"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">点击test按钮获取数据</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">BR</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
花匠级别：</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="gardener"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="color:#996633"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">点击test按钮获取数据</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span></div>
<br />
这里请求的资源是<br />
返回的是类似这样的一个js语句 ：
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">visitCountCallBack({</span><span style="color: #000000">"</span><span style="color: #000000">visitcount</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">1941</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">dayvisit</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">4</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">spacemark</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">markchange</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">sun</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">200</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">love</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">14</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">rain</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">200</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">nutri</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">200</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">level</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">4</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">gardener</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">11</span><span style="color: #000000">});</span></div>
<br />
<br />
科普一下：<br />
相比xml，json的好处是：天生的跨浏览器（比如我的这个demo应该可以跨所有支持dhtml的浏览器而不需要任何修改），客户端解析代价（CPU和内存）非常小，非单根结构（xml是单根结构），标记名只出现一次（xml的标记名在大多数情况下都需要出现两次：&lt;tag&gt;...&lt;/tag&gt;，因此浪费了很多流量）<br />
<br />
这种方式获取数据的主要缺点是只支持get方式请求，另外跨编码的时候要注意一下。xml文件的第一行就可以声明文件的编码：encoding="..."，因此同一个xml源即使编码经常换来换去（一般不会有人这么做啦）也没有什么关系，而json的数据包装中没有类似的标记来声明自己，因此必须要实现约定好编码，不能随意变换，在跨编码（json资源的编码和引用页面的编码不同）调用的时候要指定script的charset为约定的charset。非要经常变换编码的话就要参数化charset，每次变换的时候用某种形式通知到脚本去更改charset。一般的应用不会有这么变态的需求啦，一般是在做网站国际化的时候，在做数据切割的过程中，才会出现一个数据源有两种编码需要处理的情况。<br />
<br />
此外很多人并不知道json可以异步获取，这个例子很重要的一点是展示了如何异步获取json。 
<img src ="http://www.blogjava.net/emu/aggbug/117416.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-05-14 19:37 <a href="http://www.blogjava.net/emu/archive/2007/05/14/117416.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Csdn英雄大会流水账</title><link>http://www.blogjava.net/emu/archive/2007/05/07/115751.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 07 May 2007 12:56:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/05/07/115751.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/115751.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/05/07/115751.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/115751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/115751.html</trackback:ping><description><![CDATA[<img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2862.JPG" width=1024 border=0>&nbsp;
<p>javascript版的老朋友：秋水无痕、emu和梅花雪<span><span><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>我也不知道自己会拖了一个月这么久。但是工作再忙，欠的作业始终还是要做的。时间一长，记忆越来越模糊了，还是趁没忘光之前，写点流水账吧。事情要从很久很久前说起&#8230;&#8230;</span></p>
<p>&nbsp;<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>2001</span><span>年自己开公司的时候，虽然已经参与过一个基于</span><span>web</span><span>的电子政务系统，但是其实对</span><span>web</span><span>开发还是一知半解，真正要自己独立解决技术问题的时候就不行了。身边是没什么人能问的，甘霖兄推荐了</span><span>Csdn</span><span>给我，从那时就经常上</span><span>Csdn</span><span>泡着了，从刚开始问问题，到后来回答问题，在论坛里面争论，抢分&#8230;&#8230;一直到</span><span>2003</span><span>年出国，告别了论坛。</span><span>2004</span><span>年回国后，再回到论坛，已经见不到当年那些熟悉的面孔，更难得见到当年那种热烈讨论的气氛，那些追根刨底的问题，对比测试，还有秋水无痕那些有如神来之笔的解答。那时看论坛已经觉得以自己的水平已经没有太多值得讨论的东西了，恰好</span><span>Csdn</span><span>开了博客，于是开始写博客。一直写到有一段时间</span><span>Csdn</span><span>的博客服务器频频出问题，不得不把博客搬走，从此回</span><span>Csdn</span><span>的机会越来越少了。</span></p>
<p>&nbsp;<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>去年过年前</span><span>Csdn</span><span>筹备英雄大会的时候晓丹加了我</span><span>QQ</span><span>问我去不去，立刻就答应了。虽然在社区混过几年，也担任了个小版主，但是社区级别并不算高，居然能被</span><span>Csdn</span><span>惦记到，还是非常荣幸的。同时打听到一些论坛的老战友都要去，包括多年未见的秋水无痕、景仰已久的孟子</span><span>E</span><span>章，当年一起在论坛混出来的梅花雪（当年还是梅花雨）。公司也比较支持，批了出差。</span></p>
<p>&nbsp;<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>4</span><span>月</span><span>6</span><span>号的英雄大会，</span><span>5</span><span>号的飞机到北京。下飞机的时候才发现原来同机过来的还有金碟的飞刀，</span><span>java</span><span>和</span><span>.net</span><span>双栖的高手。前面一趟飞机的人更多，是来自成都的一些网友，他们在笑我们从深圳过来的两个都煞有其事的拉了个大行李箱，而他们都是拎了个小塑料袋就出门了。更牛的是有个从成都过来的网友干脆是空着手过来的，旁边的人笑他来领奖品回去就够了，不必带东西过来的，这个瘦瘦的貌不惊人的戴的眼镜像啤酒瓶底的牛人笑道，奖品寄回去就行了，何必带着呢。</span><span>到了晚上我才知道，这个牛人果然是过来领奖的，他就是</span><span>Csdn</span><span>社区的第一牛人：邹健。</span><span>第二天我才知道他们成都过来的人几乎都是一个公司的，倒不是这个公司和</span><span>csdn</span><span>有什么特别关系，原来新蛋这个公司这几年都是盯着</span><span>MVP</span><span>名单挖人的，所以他们一来就是一大群</span><span>MVP</span><span>。<br><br><img height=768 alt=emu和邹健 src="http://www.blogjava.net/images/blogjava_net/emu/102_2617.JPG" width=1024 border=0 longDesc=emu和邹健><br>emu和邹健</span></p>
<p>&nbsp;<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>欢迎大会主要是</span><span>Csdn</span><span>的广告时间，各位老大们从各个角度介绍了一些</span><span>Csdn</span><span>未来的发展战略，留下的主要印象是，</span><span>Csdn</span><span>还是有很多想法的，社区未来还是会有很多新的发展。开会的同时大家开始私下交流，第一个认出来的就是</span><span>4</span><span>年未见的梅花雪，这哥们的照片经常看见，好认得很。然后是秋水无痕，也有四年没见了，我已经认不出来他了。然后又见到孟子</span><span>E</span><span>章，孟大侠胖了，也没认出来。<br><br><img height=768 src="http://www.blogjava.net/images/blogjava_net/emu/102_2603.JPG" width=1024 border=0><br>emu和秋水无痕</span></p>
<p>&nbsp;<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>晚上在将台酒店吃饭，有一个很有特色的莲藕酿糯米，甜脆清香，一个月过去了还是记忆犹新，然后就是大家挨个上去自我介绍。很多传说中的大侠，记忆特别深刻的有从博客园跑来</span><span>Csdn</span><span>卧底的鸟食轩，还有偶庄老大经常提起的青润（白慧东）。一番&#8220;应酬&#8221;后回到招待所，大家开始疯狂串门，偶和</span><span>Meizz</span><span>、秋水等人串到了孟子的房间里，大家都是</span><span>web</span><span>版出来的，特别好聊，从</span><span>web</span><span>架构到技术细节，一直聊到论坛里面的各种往事，兔子记忆力超强，大家讲到哪里他都能立刻补充起来当时有什么细节，谁又是谁的同学的同学，让人怀疑他是不是</span><span>FBI</span><span>出来的。中间邹健也带了几个人过来了，一时间小小的房间被偶像们挤得站都站不下了，可是谁都舍不得走。</span></p>
<p>&nbsp;<img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2807.JPG" width=1024 border=0></p>
<p>emu和青润（白慧冬）<br><span><span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>第二天一早就起来，吃早饭的时候早孟子打听他为什么叫&#8220;孟子</span><span>E</span><span>章&#8221;，孟子说，读中学语文的时候，课本上不是有《孟子一章》、《孟子二章》嘛，晕！</span> </p>
<p>&nbsp;<img src="http://www.blogjava.net/images/blogjava_net/emu/102_2615.JPG" border=0></p>
<p>emu和孟子<span><br><br>到主会场，终于和公司的同事们会合了。<br></span></p>
<p><img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2548.JPG" width=1024 border=0>&nbsp;</p>
<p><br><span><span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>一天密集的大会，各种演讲、每个公司都着痕迹或不着痕迹的做一番广告，其实很多人都已经跑出去聊天了，偶也不例外。在会场外，又见到了江南白衣、熊节等传说中的大侠们。<br><br><img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2619.JPG" width=1024 border=0></span></p>
<p>&nbsp;emu和江南白衣<br></p>
<p><span><br><img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2621.JPG" width=1024 border=0><br>emu和熊节在thoughtworks的展台前面。<br><br><br>会后参观了微软研究院。感觉微软很鼓励员工去做很多不一定有市场前景的研究，我们国内的企业有几家能给员工这样大的自由度呢？</span></p>
<p>&nbsp;<img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2664.JPG" width=1024 border=0></p>
<p>微软一个小组在研究把两个手机放到一起来放电影。这个技术我看来纯粹是好玩，由于画面拼不完整，很难有使用价值。可以看出微软工作的自由度。<br><span><br><br><img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2794.JPG" width=1024 border=0><br><br>微软的内部party。<br><br></span><span><br><img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2804.JPG" width=1024 border=0><br>晚上去红色年代<span>FB</span><span>了一番，精彩的现场表演之后，meizz也现场演奏了两曲笛子独奏。</span><br><br><br><img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2854.JPG" width=1024 border=0><br>第二天爬长城，中间这位mm是这次英雄大会惟一一位巾帼英雄</span></p>
<img src ="http://www.blogjava.net/emu/aggbug/115751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-05-07 20:56 <a href="http://www.blogjava.net/emu/archive/2007/05/07/115751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>千猪散尽还复来</title><link>http://www.blogjava.net/emu/archive/2007/04/02/108034.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 02 Apr 2007 10:35:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/04/02/108034.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/108034.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/04/02/108034.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/108034.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/108034.html</trackback:ping><description><![CDATA[金头发的狮子座麦兜也给金头发Sherry领养了，年前买的一套十二星座麦兜现在只剩下最傻的金牛座，最无辜的天枰座，最臭屁的射手座了。今天看到steve的小版本十二星座麦兜，一个个粉粉嫩嫩的，蛮讨人喜欢，下次是买大版本还是小版本呢，犹豫中&#8230;&#8230;
<img src ="http://www.blogjava.net/emu/aggbug/108034.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-04-02 18:35 <a href="http://www.blogjava.net/emu/archive/2007/04/02/108034.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>头疼带宽问题</title><link>http://www.blogjava.net/emu/archive/2007/03/29/107101.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 28 Mar 2007 16:41:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/03/29/107101.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/107101.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/03/29/107101.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/107101.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/107101.html</trackback:ping><description><![CDATA[只有cdn服务商提供的访问量top100是不够分析真正的问题的。<br /><br />访问量最高并不意味着不正常。访问量＝抽样访问量/抽样率。应该比较同一时间段内的 访问量vs首页PV 来看预装载的图片的访问量是否超常。同样的应该把12套样式的对应图片的访问量累计起来和访问量的比例。或许应该分析top1000？<br /><br />拿到200：304之后，应该比较，那些的200比例异常，也就是浏览器难以cache。 <br /><br />随机访问，看来看去都是背景皮肤吃了最大的流量。但是分散到诸多的背景上之后都上不了top100，无法获得它吃掉了多少流量的数据。<br /><br />不去掉etag，光延长expires不见得有用。 <br /><br />设置样式能否延迟等待样式需要的图片预装载后再执行呢？如果预装载没成功的时候设置了样式，除了增加流量之外有什么作用？或许设置样式的时候不预装载还好一点呢？ <br /><br />很多jpg背景也未免做的太精细了，压小一半下去是要损失一些细节，可是有人几个人会注意到呢，更不要说用户其实根本没有原图可以比较。有时候仔细一看，压缩后比原图片还多出来一些细节呢，本来平滑过渡的地方都呈现了漂亮的边缘效应，原图看不见的气泡都凸显出来了。<br /><br />问题是要cp去压缩的话，对他自己有什么好处吗？他不去压缩的话有什么坏处吗？<br /><br />鼓励小背景？还是打击大背景？鼓励jpg背景，还是限制gif背景（gif还有个一直大量消耗cpu的问题）？<br /><br />设定上限的结果会不会是大家都按照上限来制作背景？延伸背景是否应该设定高度限制？gif是否设定了帧数限制？jpg能否有个细节丰富程度的限制？  <br /><br />或者上传的时候应该自动柔化和再压缩？ <br /><br />剧增了那么多的流量，到底让谁给吃掉了呢？会不会别的项目吃掉了很多流量呢？cdn服务商能否提供分目录的访问次数，哪怕降低抽样率呢？<img src ="http://www.blogjava.net/emu/aggbug/107101.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-03-29 00:41 <a href="http://www.blogjava.net/emu/archive/2007/03/29/107101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>又见手机引雷假新闻 </title><link>http://www.blogjava.net/emu/archive/2007/01/22/95194.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Sun, 21 Jan 2007 17:13:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/01/22/95194.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/95194.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/01/22/95194.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/95194.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/95194.html</trackback:ping><description><![CDATA[
		<p>雷雨天不能接手机？手机＝引雷器？虽然已经有许多专家论证过这是无稽之谈：</p>
		<p>
				<a href="http://www.pufz.cn/bbs/dispbbs.asp?boardID=35&amp;ID=1754&amp;page=1">http://www.pufz.cn/bbs/dispbbs.asp?boardID=35&amp;ID=1754&amp;page=1</a> （昆雷电力科学研究所 梅忠恕）</p>
		<p>
				<a href="http://www.ccbn.com.cn/catvbbs/Announce/Announce.asp?BoardID=100&amp;ID=15099">http://www.ccbn.com.cn/catvbbs/Announce/Announce.asp?BoardID=100&amp;ID=15099</a> （刘继、马宏达等）</p>
		<p>
				<a href="http://blog.sina.com.cn/u/4b9e4c1f0100079j">http://blog.sina.com.cn/u/4b9e4c1f0100079j</a> （空军航空气象研究所防雷中心  江明札）</p>
		<p>......</p>
		<p>可是现在传媒还是总是倾向于宣传危言耸听的的言论，而不是科学的言论。某天打的听交通台的主持人也在提醒车友们雨天不要打手机，昨天各大小网站又纷纷开始报道这样的消息：华裔女大学生雨中接手机被闪电击中身亡</p>
		<p>
				<a href="http://www.google.cn/search?hl=zh-CN&amp;q=%E5%8D%8E%E8%A3%94%E5%A5%B3%E5%A4%A7%E5%AD%A6%E7%94%9F%E9%9B%A8%E4%B8%AD%E6%8E%A5%E6%89%8B%E6%9C%BA%E8%A2%AB%E9%97%AA%E7%94%B5%E5%87%BB%E4%B8%AD%E8%BA%AB%E4%BA%A1&amp;btnG=Google+%E6%90%9C%E7%B4%A2&amp;meta">http://www.google.cn/search?hl=zh-CN&amp;q=%E5%8D%8E%E8%A3%94%E5%A5%B3%E5%A4%A7%E5%AD%A6%E7%94%9F%E9%9B%A8%E4%B8%AD%E6%8E%A5%E6%89%8B%E6%9C%BA%E8%A2%AB%E9%97%AA%E7%94%B5%E5%87%BB%E4%B8%AD%E8%BA%AB%E4%BA%A1&amp;btnG=Google+%E6%90%9C%E7%B4%A2&amp;meta</a>=</p>
		<p>大家转载的时候还都保留了原出处《现代快报》和作者“天朗”。但是现代快报的天朗大记者从哪里搞来的这个新闻呢？研究一下报道中登出来的照片：</p>
		<p>
				<img src="http://img1.qq.com/news/pics/2897/2897096.jpg" />
		</p>
		<p>注意下面这句话：“Chai Ming Hui was the eldest in her family”</p>
		<p>google一下： <a href="http://www.google.cn/search?hl=zh-CN&amp;q=Chai+Ming+Hui+was+the+eldest+in+her+family&amp;meta">http://www.google.cn/search?hl=zh-CN&amp;q=Chai+Ming+Hui+was+the+eldest+in+her+family&amp;meta</a>=</p>
		<p>这段报道从来没有在网上出现过，也不知道天朗大记者是从哪年的旧报纸上扫描下来的？反正不管有没有可信度，只要人家敢说，大伙就敢转。</p>
		<p>
				<a href="http://hsb.huash.com/2007-01/03/content_6017274.htm">http://hsb.huash.com/2007-01/03/content_6017274.htm</a> 这个假新闻，也是天朗大记者炮制的，明明说汤勺在食管里面，居然在伪造X光片的时候吧它捅到心脏附近去了，一笑。</p>
		<p>
				<a href="http://hsb.huash.com/gb/newsdzb/2007-01/09/content_6027777.htm">http://hsb.huash.com/gb/newsdzb/2007-01/09/content_6027777.htm</a> 这也是天朗大记者的杰作。居然说霍金想做轮椅上天做无重力飞行，没有重力了不知道轮椅怎么运动，原地疯狂旋转？</p>
		<p>
				<a href="http://news.qq.com/a/20070107/000103.htm">http://news.qq.com/a/20070107/000103.htm</a> 在这个假新闻上面也是天朗记者炮制的，google一下“248.2416”这个金额就会发现，这则英国的新闻没有任何相关的英文报道，根本不是翻译过来的，是原创的。<br /> </p>
<img src ="http://www.blogjava.net/emu/aggbug/95194.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-01-22 01:13 <a href="http://www.blogjava.net/emu/archive/2007/01/22/95194.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>应twinsen要求写了个转换js对象为json字符串的例子</title><link>http://www.blogjava.net/emu/archive/2007/01/04/91805.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 04 Jan 2007 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/01/04/91805.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/91805.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/01/04/91805.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/91805.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/91805.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这个是基本的转换例子&lt;!DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;HTML&nbsp;4.0&nbsp;Transitional//EN"&gt;&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;&nbsp;json-to-string&nbsp;&lt;/TITLE&gt;&lt;M...&nbsp;&nbsp;<a href='http://www.blogjava.net/emu/archive/2007/01/04/91805.html'>阅读全文</a><img src ="http://www.blogjava.net/emu/aggbug/91805.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-01-04 17:30 <a href="http://www.blogjava.net/emu/archive/2007/01/04/91805.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于工行的XSS漏洞</title><link>http://www.blogjava.net/emu/archive/2006/12/31/91171.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Sun, 31 Dec 2006 07:10:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2006/12/31/91171.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/91171.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2006/12/31/91171.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/91171.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/91171.html</trackback:ping><description><![CDATA[
		<font size="2">这两天很流行玩这个：<br /></font>
		<a href="http://www.icbc.com.cn/news/hotspot.jsp?column=%3Cfont%20size=10%3E%BD%F7%B4%CB%D4%AA%B5%A9%BC%D1%BD%DA%D6%AE%BC%CA%A3%AC%B9%A4%C9%CC%D2%F8%D0%D0%B8%F8%C3%BF%B8%F6%B4%A2%BB%A7%C3%E2%B7%D1%B7%A2%B7%C51000%CD%F2%C3%C0%BD%F0%3C/font%3E">
				<font size="2">http://www.icbc.com.cn/news/hotspot.jsp?column=%3Cfont%20size=10%3E%BD%F7%B4%CB%D4%AA%B5%A9%BC%D1%BD%DA%D6%AE%BC%CA%A3%AC%B9%A4%C9%CC%D2%F8%D0%D0%B8%F8%C3%BF%B8%F6%B4%A2%BB%A7%C3%E2%B7%D1%B7%A2%B7%C51000%CD%F2%C3%C0%BD%F0%3C/font%3E</font>
		</a>
		<br />
		<br />
		<a href="http://www.icbc.com.cn/news/hotspot.jsp?column=%3Cfont%20size=10%3E%BD%F7%B4%CB%D4%AA%B5%A9%BC%D1%BD%DA%D6%AE%BC%CA%A3%AC%B9%A4%C9%CC%D2%F8%D0%D0%B8%F8%C3%BF%B8%F6%B4%A2%BB%A7%C3%E2%B7%D1%B7%A2%B7%C51000%CD%F2%C3%C0%BD%F0%3C/font%3E">
		</a>
		<font size="2">会出来：<br /><img src="http://www.blogjava.net/images/blogjava_net/emu/4494/o_ICBC1.gif" /><br /><br /><br />还有更好玩的：<br /></font>
		<a href="http://www.icbc.com.cn/news/hotspot.jsp?column=%3Cscript%3ER%3D0%3B%20x1%3D.1%3B%20y1%3D.05%3B%20x2%3D.25%3B%20y2%3D.24%3B%20x3%3D1.6%3B%20y3%3D.24%3B%20x4%3D300%3B%20y4%3D200%3B%20x5%3D300%3B%20y5%3D200%3B%20DI%3Ddocument.body.getElementsByTagName%28%27table%27%29%3B%20DIL%3DDI.length%3B%20function%20A%28%29%7Bfor%28i%3DDIL-1%3Bi%3E-1%3Bi--%29%7BDIS%3DDI%5B%20i%20%5D.style%3B%20DIS.position%3D%27absolute%27%3B%20DIS.left%3DMath.sin%28R*x1-%28-%28i*x2-%28-%28x3%29%29%29%29%29*x4-%28-%28x5%29%29%3B%20DIS.top%3DMath.cos%28R*y1-i*y2-y3%29*y4-%28-%28y5%29%29%7DR--%7Dwindow.onload%20%3D%20function%20%28%29%20%7BsetInterval%28%27A%28%29%27%2C5%29%3Bdocument.title%3D%27FBI%27%7D%3C/script%3E">
				<font size="2">http://www.icbc.com.cn/news/hotspot.jsp?column=%3Cscript%3ER%3D0%3B%20x1%3D.1%3B%20y1%3D.05%3B%20x2%3D.25%3B%20y2%3D.24%3B%20x3%3D1.6%3B%20y3%3D.24%3B%20x4%3D300%3B%20y4%3D200%3B%20x5%3D300%3B%20y5%3D200%3B%20DI%3Ddocument.body.getElementsByTagName%28%27table%27%29%3B%20DIL%3DDI.length%3B%20function%20A%28%29%7Bfor%28i%3DDIL-1%3Bi%3E-1%3Bi--%29%7BDIS%3DDI%5B%20i%20%5D.style%3B%20DIS.position%3D%27absolute%27%3B%20DIS.left%3DMath.sin%28R*x1-%28-%28i*x2-%28-%28x3%29%29%29%29%29*x4-%28-%28x5%29%29%3B%20DIS.top%3DMath.cos%28R*y1-i*y2-y3%29*y4-%28-%28y5%29%29%7DR--%7Dwindow.onload%20%3D%20function%20%28%29%20%7BsetInterval%28%27A%28%29%27%2C5%29%3Bdocument.title%3D%27FBI%27%7D%3C/script%3E</font>
		</a>
		<br />
		<br />
		<font size="2">整个页面都可以出来动画效果<br /><br /><img src="http://www.blogjava.net/images/blogjava_net/emu/4494/o_ICBC2.gif" /><br />这还不够好玩？还有更更好玩的：<br /></font>
		<a href="http://www.donews.com/Content/200612/92ac3138ade9406c81d72a057a995f5e.shtm">
				<font size="2">http://www.donews.com/Content/200612/92ac3138ade9406c81d72a057a995f5e.shtm</font>
		</a>
		<br />
		<br />
		<font color="#ff1493" size="2">DoNews（北京）12月31日消息（记者 徐新事）近日网上盛传中国工商银行网站被黑客攻击，网友在IM和论坛里传播“</font>
		<a href="http://www.icbc.com.cn/news/hotspot.jsp?column=%D6%D0%B9%FA%B9%A4%C9%CC%D2%F8%D0%D0%D0%FB%B2%BC%C6%C6%B2%FA&amp;cl=3" target="_blank">
				<font color="#ff1493" size="2">中国工商银行宣布破产</font>
		</a>
		<font color="#ff1493" size="2">”、“</font>
		<a href="http://www.17tech.com/news/290.html" target="_blank">
				<font color="#ff1493" size="2">中国工商银行转让80%给**网站</font>
		</a>
		<font color="#ff1493" size="2">”等伪造的信息。此类恶搞信息造成网友认知混乱，认为中国工商银行网上银行不可靠，发起对网络银行安全性质疑。记者就此事采访资深网络专家</font>
		<a href="http://longrujun.name/" target="_blank">
				<font color="#ff1493" size="2">龙如俊</font>
		</a>
		<font color="#ff1493" size="2">先生。龙如俊认为这只是常见的跨站式Xss处理不当造成，谈不上攻击，对工行网银安全不存在威胁。 </font>
		<p>
		</p>
		<p>
				<font color="#ff1493" size="2">
				</font>
		</p>
		<p>
				<font color="#ff1493" size="2">　　龙如俊介绍到，几种常见Web站点不安全的编程漏洞包括密码漏洞、跨站脚本漏洞、不安全的存储漏洞和拒绝服务漏洞。此次中国工商银行网站的漏洞就是跨站脚本漏洞，实际上就是脚本人员对跨站式Xss处理不当。网友利用该漏洞，编辑特殊代码后得到网上传播的链接，但是对正常的网银交易不会产生任何影响。</font>
		</p>
		<p>
				<font color="#ff1493" size="2">
				</font>
		</p>
		<p>
				<font color="#ff1493" size="2">
				</font>
		</p>
		<p>
				<font color="#ff1493" size="2">　　龙如俊称跨站式Xss处理不当是常见的Bug，就是微软、雅虎、亚马逊等公司都出现过此类问题，也都难以避免这种现象。如Yahoo! Mail中采取了积极的防预措施来预防XSS。特别是其邮件站点在适当的上下文中将"javascript”转换成了"_javascript”，以阻止代码的执行。他说：“这并非重大故障，更谈不上是攻击，对工行网银安全不会存在任何威胁。”</font>
		</p>
		<p>
				<font color="#ff1493" size="2">
				</font>
		</p>
		<p>
				<font color="#ff1493" size="2">
				</font>
		</p>
		<p>
				<font color="#ff1493" size="2">　　至于为何出现该跨站式Xss漏洞，龙如俊称主要有两个原因。首先，HTML没有明确区分代码和数据；其次，程序在将用户数据发送回浏览器时没有进行有效的转义，这导致包含有引号的数据被放入页面中。</font>
		</p>
		<p>
				<font color="#ff1493" size="2">
				</font>
		</p>
		<p>
				<font color="#ff1493" size="2">
				</font>
		</p>
		<p>
				<font color="#ff1493" size="2">　　“当前流行的Ajax技术对预防跨站式Xss漏洞方面有一定好处，”龙如俊说：“Ajax技术包含一个专用渠道XML链接，其中全是数据而没有代码。这样，就有可能让客户端AJAX引擎负责对字符串进行转义、检测不正确的值。”</font>
		</p>
		<p>
				<font color="#ff1493" size="2">
				</font>
		</p>
		<p>
				<font color="#ff1493" size="2">
				</font>
		</p>
		<p>
				<font color="#ff1493" size="2">　　但龙如俊表示直到AJAX更为成熟或更为标准化，否则只会导致错误的编程和安全漏洞，毕竟Ajax技术只是web2.0中涌出新型技术还不够成熟。（完）</font>
		</p>
		<!-- Content End -->
		<br />
		<font size="2">XSS漏洞根本就不是“<font color="#000080">HTML没有明确区分代码和数据</font>”带来的问题，而是“<font color="#000080"><font color="#ff0000">程序员</font>没有明确区分代码和数据</font>”带来的问题。各大网站不但都遇到过这样的问题，很多网站也在这上面栽过大跟斗吃过大亏。网络安全无小事，大家用龙如俊专家这样的态度来处理问题，黑客们就有福了。<br /><br />此外“<font color="#000080">跨站式Xss</font>”本身也是个很外行的说法。XSS是Cross-Site-Script的缩写（跨站脚本），第一个单词Cross有“交叉”的意思，缩写的时候就用一个大大的“叉”来缩写。所以XSS就是跨站脚本，哪里还有什么“跨站式的跨站脚本”？<br /><br /><hr /><br />发出这篇文章之后，很惊讶的发现龙如俊的博客链接就在文章里面：</font>
		<a href="http://longrujun.name/default.html">
				<font size="2">http://longrujun.name/default.html</font>
		</a>
		<br />
		<br />
		<font size="2">从博客上看，龙如俊真称得上是“往来无白丁”了。他的好友里面赫然有：<a href="http://www.donews.net/liuren" target="_blank"><font size="3">刘韧</font></a>、<a href="http://blog.csdn.net/jiangtao" target="_blank"><font size="3">蒋涛</font></a>、<a href="http://blog.csdn.net/zdg/"><font size="3">曾登高</font></a>这样一些如雷贯耳的名字，想必他本人也不是泛泛之辈。看看他对此事的原始评论把：<br /></font>
		<a href="http://longrujun.name/blogs/longrujun/archive/2006/12/31/_E88DD97A1A812C6708FF_XSS_09FF0F6F1E6DEE959898F25DCF7E0D4E2F66EE959898_.aspx">
				<font size="2">http://longrujun.name/blogs/longrujun/archive/2006/12/31/_E88DD97A1A812C6708FF_XSS_09FF0F6F1E6DEE959898F25DCF7E0D4E2F66EE959898_.aspx</font>
		</a>
		<br />
		<font color="#000000" size="2">从原文看来，龙大师比记者所转述的还是要内行的多的：<br /><br /></font>
		<font color="#ff1493">
				<font size="2">典型攻击：涉及<span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'">XSS</span><span style="FONT-SIZE: 9pt">的典型攻击通常都需要称为</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'">“social engineering</span><span style="FONT-SIZE: 9pt">（社会工程）</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'">”</span><span style="FONT-SIZE: 9pt">的什么东西。意味着说服某人点击您所创建的某一链接，该链接包含指向某一</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'">Web</span><span style="FONT-SIZE: 9pt">站点的提交功</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'"></span><span style="FONT-SIZE: 9pt">能，该站点具有</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'">XSS</span><span style="FONT-SIZE: 9pt">漏洞，该链接通过该漏洞提交</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'">JavaScript</span><span style="FONT-SIZE: 9pt">代码。提交的</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'">JavaScript</span><span style="FONT-SIZE: 9pt">代码通常会从用户的浏览器窃取会话</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'">cookie</span><span style="FONT-SIZE: 9pt">，</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'"></span><span style="FONT-SIZE: 9pt">并将它们提交给攻击者的某一</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'">Web</span><span style="FONT-SIZE: 9pt">站点。攻击者然后可以使用这些会话来冒充受攻击用户，且无需密码。尽管策动这种攻击比较困难，但攻击者却可以很好地文档</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'"></span></font>
				<span style="FONT-SIZE: 9pt">
						<font size="2">化和理解它，因此必须谨慎地加以避免。<br /></font>
						<font color="#000000">
								<br />
								<font size="2">这段话虽然有点含糊其辞（<font color="#ff1493"><strong><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'">“social engineering</span><span style="FONT-SIZE: 9pt">（社会工程）</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'">”</span></strong><span style="FONT-SIZE: 9pt"><strong>的什么东西</strong><font color="#000000">是什么东西？</font></span></font>），但是观点基本是明确的（“<font color="#ff1493"><strong>尽管策动这种攻击比较困难”</strong></font>这句又很让人怀疑他的根本观点是什么）。但是话从徐新事大记者嘴巴里面出来就变成了：<br /></font>
						</font>
						<br />
						<font size="2">龙如俊认为这只是常见的跨站式Xss处理不当造成，谈不上攻击，对工行网银安全不存在威胁。 <br /><br /></font>
						<font color="#000000" size="2">一开始以为是徐大记者自作主张强奸了龙如俊的愿意，看了看龙如俊的其他文章，他本人曾经担任过（或者仍然担任着）DoNews技术顾问，而且他和徐记者也不是头一回合作了，看来还很乐意被徐记者采访（还是强奸？）并在自己的博客里面转徐记者的新闻稿。而且龙的标题也是很容易引起误会的：《跨站脚本（XSS）漏洞问题已经不是问题》，既可以理解为技术上规避此漏洞不难的意思，也可以理解为这个漏洞不会造成安全威胁的意思。这样他们两个谁在臭嘴巴就无从考证了。<br /><br />XSS漏洞其实是十分危险，很成问题，很容易被恶意利用的。如果没有验证码或者重新输入密码验证的限制，一个在线邮箱系统的一出现XSS漏洞可以很容易利用来盗取用户个人资料、修改密码；如果没有IP限制，就可以被利用来窃取session，伪造登录状态。轻则破坏用户数据，重则盗取邮件中的商业、隐私、财务资料，后果不堪设想。在论坛、博客等系统中一样的可以用来进行身份冒充、恶意消费和数据破坏。现在这样一个漏洞出现在一个银行的官方网站上，而且数天时间没有得到积极响应（咨询了工行的朋友，得到的惟一答复就是龙如俊的文章）和处理，让人怎么不怀疑这个银行的开发人员的水平和责任心？这样的人有能力保护好自己客户的资料和钱吗？</font>
				</span>
		</font>
<img src ="http://www.blogjava.net/emu/aggbug/91171.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-12-31 15:10 <a href="http://www.blogjava.net/emu/archive/2006/12/31/91171.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>吸烟有益健康？</title><link>http://www.blogjava.net/emu/archive/2006/12/11/86894.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 11 Dec 2006 06:03:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2006/12/11/86894.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/86894.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2006/12/11/86894.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/86894.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/86894.html</trackback:ping><description><![CDATA[
		<p>今天再次发现群里面有人在转发这样的消息：<br /><br /><font color="#ff1493">    1 林 彪 不抽烟 不喝酒只活了63岁<br />    2 周 恩 来只喝酒 不抽烟，活了73岁<br />    3 毛 泽 东只抽烟 不喝酒，活了83岁<br />    4 邓 小 平即抽烟又喝酒，活了93岁<br />    5 而 张 学 良老将军吃喝嫖赌样样都来，活了103岁。</font></p>
		<p>
				<font color="#ff1493">    把这个发5个群，爸爸妈妈就会永远长命百岁，只要看见不发的爸爸妈妈就会在1个星期内让车轧死。没办法 ,狗日的写的我看见了，太毒了．不发不行。</font>
		</p>
		<p>emu点评一下：<br /><br />    1 林彪是空难死的，不是死于健康原因<br />    2 周恩来活了77岁，不是73岁<br />    3 毛泽东晚年戒了烟<br />    4 邓小平晚年也戒了烟<br />    5 张学良活了101岁，不是103岁。</p>
		<p>    也就是说，这5条没有一条是对的。<br />    至于爸爸妈妈是否能永远长命百岁的问题，就比较严肃了，我们来分析一下：<br />    如果转载了这个消息爸爸妈妈能“永远长命百岁”，那就是说，长生不老了，这样子的话，这条消息可能拥有莫大的神秘的超自然的力量，可以让人长生不老。我们苦寻了数千年的长生不老药原来就在眼前啊！莫非这个消息根本是上帝本人散发的？我靠，你当老子跟你一样白痴啊？</p>
		<p>    有写居心叵测的家伙看了我的文章后下回恐怕要把“永远”给去掉了传再出来骗人。不永远了，长命百岁也挺好的，很多人就冲这还是会帮他去转。这些助纣为虐者多半都是宿命论者，唯心论者，生平自己的父母被人诅咒到了有所不利，也情有可原。</p>
		<p>    可是唯心者们，就靠转这条消息你父母就长命百岁了吗？要真的信命，总该相信因果报应吧，转这样恶毒的消息到各个群里面去诅咒别人的父母让车轧死，这叫做种诸恶根，将来报应来时就得诸恶果，不是报应在你自己身上，就是报应在父母亲人身上。拜托，你转这样的消息到底是想父母长命百岁还是巴不得他们早点归西啊？</p>
		<p>    不过也不用太过担心，许多网友和我几个月来都看到无数次这样的消息了，很多人和我一样也没有转发，至今大家的爸爸妈妈都好好的。</p>
		<p>    google了一下，发现有人拿邓小平的死说事儿：<a href="http://news.21cn.com/luntan/liantang/2006/07/18/2652680.shtml">http://news.21cn.com/luntan/liantang/2006/07/18/2652680.shtml</a><br />说邓小平不该戒烟，因为尼古丁能防治帕金森氏综合症。这个消息是很有点来头的：中科院生物物理研究所赵宝路教授说的，不过被扭曲了。考证了一下赵教授的原话：（<a href="http://www.nutrition.ac.cn/news/c2006062801.html">http://www.nutrition.ac.cn/news/c2006062801.html</a>）<br /><font color="#ff1493"><font color="#000000">    </font>“但是，我们绝对没有为烟草正名的意思。吸烟有害健康是毋庸置疑的。另外，我们的实验采用的是饮入尼古丁的方式，而不是吸入尼古丁。”赵教授强调。</font></p>
		<p>    就算尼古丁没有毒，也不说明抽烟有益。同一篇文章上关于吸烟的危害还有最新的研究成果介绍：<br /><br /><font color="#ff1493"><font color="#000000">    </font> 吸烟加速人体衰老<br /><br /><font color="#000000">    </font>中科院上海生命科学研究院营养科学研究所的营养与衰老分子细胞生物学研究组，日前在研究中发现：吸烟会损伤人体细胞的“发电站”——线粒体，从而促使全身性衰老，进而引发各种疾病，而首先遭殃的是人体的各种脏器。<br /><br /><font color="#000000">    </font>研究组长刘健康和其学生孙立娟、刘凯、罗成、龙建纲，全面系统地检测了吸烟产生的主要成分丙烯醛对线粒体的影响，发现各项指标均朝着促进衰老的方向发展。科研人员用不同浓度的丙烯醛刺激大鼠肝脏线粒体，结果发现：呼吸链上不少酶不再“活跃”，呼吸控制速率受到抑制，蛋白质发生氧化损伤。丙烯醛可使年轻的细胞线粒体“未老先衰”。<br /><br />    </font>还好这帮自作聪明兼睁着眼睛说瞎话的家伙没有当上小平的健康顾问，不然小平早让他们害死了。</p>
		<p> </p>
<img src ="http://www.blogjava.net/emu/aggbug/86894.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-12-11 14:03 <a href="http://www.blogjava.net/emu/archive/2006/12/11/86894.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>辟谣：戴隐形眼镜不能烧烤</title><link>http://www.blogjava.net/emu/archive/2006/12/05/85569.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Tue, 05 Dec 2006 06:21:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2006/12/05/85569.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/85569.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2006/12/05/85569.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/85569.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/85569.html</trackback:ping><description><![CDATA[又是一个流传颇为广泛的谣言（<a href="http://www.google.cn/search?num=100&amp;hl=zh-CN&amp;newwindow=1&amp;q=%E4%BB%BB%E4%BD%95%E6%9C%89%E5%8F%AF%E8%83%BD%E6%8E%A5%E8%A7%A6%E5%88%B0%E7%81%AB%E6%BA%90%E7%9A%84%E5%9C%B0%E6%96%B9%EF%BC%8C%E8%AF%B7%E5%B0%86%E4%BD%A0%E7%9A%84%E9%9A%90%E5%BD%A2%E7%9C%BC%E9%95%9C%E6%8B%BF%E6%8E%89&amp;btnG=%E6%90%9C%E7%B4%A2&amp;meta">http://www.google.cn/search?num=100&amp;hl=zh-CN&amp;newwindow=1&amp;q=%E4%BB%BB%E4%BD%95%E6%9C%89%E5%8F%AF%E8%83%BD%E6%8E%A5%E8%A7%A6%E5%88%B0%E7%81%AB%E6%BA%90%E7%9A%84%E5%9C%B0%E6%96%B9%EF%BC%8C%E8%AF%B7%E5%B0%86%E4%BD%A0%E7%9A%84%E9%9A%90%E5%BD%A2%E7%9C%BC%E9%95%9C%E6%8B%BF%E6%8E%89&amp;btnG=%E6%90%9C%E7%B4%A2&amp;meta</a>=）<br /><br />主要内容是： 
<div style="BACKGROUND-COLOR: yellow">事情发生在有一天，一个 21岁男生戴着隐形眼镜去叁加一个烤肉聚会！就在他开始以木炭生火之後的几分钟内，他突然大叫，然後很痛苦的跳来跳去，在地上打滚 ……全场的人都吓呆了，没人知道究竟发生了什麽事？大家赶紧送他到医院，医生说，他永远都看不见了！<br />原因是：隐形眼镜是用塑胶制成的，而就在他生火的同时，过热的温度熔化了他的隐形眼镜！<br />所以，请告诉你身边的朋友：烤肉及接触火源时，请不要戴着隐形眼镜！！</div><br />真够危言耸听的，这帮唯恐天下不乱的家伙！制造谣言有这么好玩吗？<br /><br />隐形眼镜含水量普遍在30％以上，并不是一预热就可以瞬间“熔化”的玩意。要把隐形眼镜“熔化”首先要把里面的水烤干，要把水分瞬间烤干有两条途径，一是真空，让水的沸点降得非常低；一是常压下把水烧沸腾。烤肉和真空是没多大关系的，也就是说在隐形眼镜“熔化”之前，这位假想的仁兄的隐形眼镜要达到100℃的高温。无色隐形眼镜的透光率大约是97％，就算是有色的，也有93％，因此大部分红外线的热量都是由深色的眼底来吸收，在隐性眼睛达到如此高温之前，这位仁兄的眼底早已烧糊了，这个时候隐形眼镜熔化与否，对他都没有多大差别了。<br /><br />当然还有一种情况，就是说火焰的热量不是通过红外辐射到达这位仁兄的眼睛，而是火直接烧到他的眼睛上了。考虑到人是有眼皮这样生理组织的，在火烧到眼睛的时候眼睛会反射性的闭上，如果这个火焰猛烈的能在这一瞬间把隐形眼镜里面30％的含水都烤干，那么也足以在这位仁兄的脸上制造严重的烧伤，同时即使没有隐形眼镜，这个火焰也足够把他的眼球烫伤，这样看来他无论如何都是在劫难逃，要怪就怪命吧，不要怪无辜的隐形眼镜。<img src ="http://www.blogjava.net/emu/aggbug/85569.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-12-05 14:21 <a href="http://www.blogjava.net/emu/archive/2006/12/05/85569.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>细数3721(雅虎助手)两年来的流氓升级史</title><link>http://www.blogjava.net/emu/archive/2006/11/09/79986.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 08 Nov 2006 18:06:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2006/11/09/79986.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/79986.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2006/11/09/79986.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/79986.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/79986.html</trackback:ping><description><![CDATA[
		<p>原文链接 <a href="http://www.cnbeta.com/modules.php?name=News&amp;file=article&amp;sid=16554">http://www.cnbeta.com/modules.php?name=News&amp;file=article&amp;sid=16554</a><br /><br /></p>
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td style="BACKGROUND-IMAGE: url(themes/deepblue/grad.gif); BACKGROUND-REPEAT: repeat-x" width="100%" bgcolor="#ffffff">
										<font class="option">
												<b>MJ0011技术分析:细数3721(雅虎助手)两年来的流氓升级史</b>
										</font>
								</td>
						</tr>
						<tr>
								<td style="BACKGROUND-IMAGE: url(themes/deepblue/grad.gif); BACKGROUND-REPEAT: repeat-x" bgcolor="#ffffff" colspan="2">
										<br />
										<table width="100%" align="center" border="0">
												<tbody>
														<tr>
																<td>
																		<a href="http://www.cnbeta.com/modules.php?name=News&amp;new_topic=91">
																				<img alt="Yahoo新闻主题" src="http://www.cnbeta.com/images/topics/Yahoo.gif" align="right" border="0" />
																		</a>
																		<font class="content">
																				<strong>=================================<br />注意:此文为技术分析,不带任何偏向立场<br />由本文反汇编某厂商的病毒文件或曰恶意竞争文件而导致的<br />任何法律问题,本人一概不负责 by MJ0011<br />=================================</strong>
																				<br />刚才分析了Yahoo上网助手的34号patch包,找到一些同360安全卫士PK的有意思的东西,便对上网助手的patch感兴趣起来了,想看看之前的33个patch包都是干了什么事呢?其中patch03,04,05,06,09,10,11,16,18,22,07,24,25,26,28,29,32可以下载<br /><br /><strong>其他编号的想必是迫于压力又或是某些不可告人的原因<br />被撤消了(就象之前分析的patch34) 所以无法下载<br /><br />patch最早从04年02月01日开始<br />最新的patch是06年10月10日<br /><br />见证了3721及其附属产品2年多的流氓史<br /><br />那么挨个看一下他们分别都干了些什么:</strong><br /><br />&lt;1&gt;.<br />03号patch:<br />日期 01/02/04 13:38:49(注:时间格式:月/日/年,直接从flashget上复制过来的)<br /><br />主要是对system32driversetchosts也就是系统hosts文件进行恶意篡改,将其 中对3721.net,3721.com的屏蔽修改回来<br />主要代码截取如下:<br /><br />push ebx ; FILE *<br />push 1 ; size_t<br />push esi ; size_t<br />push edi ; void *<br />call ds:fread<br />and byte ptr [edi+esi], 0<br />push edi<br />call sub_1000222B<br />mov esi, ds:strstr<br />mov ebx, offset s__3721_com ; ".3721.com"<br />; x<br />push ebx ; char *<br />push edi ; char *<br />call esi ; strstr<br />add esp, 1Ch<br />test eax, eax<br />jz short loc_100021C8<br /><br /><br />loc_100021C8: ; ".3721.net"<br />mov ebx, offset s__3721_net<br />push ebx ; char *<br />push edi ; char *<br />call esi ; strstr<br />pop ecx<br />test eax, eax<br />pop ecx<br />jz short loc_100021EF<br />;以上是恢复3721.com和3721.net的屏蔽<br /><br /><br />loc_100022A7:<br />push 0<br />call sub_10002331<br />test eax, eax<br />pop ecx<br />jz short loc_100022BA<br /><br />offset s_System32Drive ; "system32driversetchosts"<br />jmp short loc_100022BF<br />;此处判断操作系统版本并取得不同版本windwos的hosts文件路径<br /><br /><br /><br />&lt;2&gt;.<br />04号patch:<br />日期 01/18/04 10:38:24<br />04号patch带了一个patch41.dat<br /><br />该patch和patch34一样,同样会将自己自毁<br />且代码完全一样<br /><br />patch41.dat是个加密了的文件,算法有点古怪,我估计是类似“竞争对手网站屏蔽表这样的东西”<br /><br /><br />&lt;3&gt;.<br />05号patch<br />日期 04/22/04 15:07:35<br />更新一个clsid<br /><br /><br />&lt;4&gt;.<br />06号patch<br />日期 05/13/04 09:58:10<br />删除SOFTWAREMicrosoftInternet ExplorerActiveX Compatibility下的如下几个键值:<br />'{B83FC273-3522-4CC6-92EC-75CC86678DA4}'=3721网络实名模块cnsmin.dll<br />'{4522DBFE-14CD-4A59-AC2A-54BADFDD6D53}'=3721网络实名<br />'{1B0E7716-898E-48CC-9690-4E338E8DE1D3}'=3721上网助手模块ASSIST.DLL<br />'{7CA83CF1-3AEA-42D0-A4E3-1594FC6E48B2}'=3721上网助手模块autolive.dll<br />'{4EDBBAEA-F509-49F6-94D1-ECEC4BE5B686}'=3721中文邮<br />'{8D898B17-976D-44c1-84E6-AF38842AC9EC}'=3721升级包模块<br />用于恢复类似 恶意软件清理助手,360SAFE,OPIEA,优化大师等在注册表中对3721部分产品的 插件屏蔽<br />导致屏蔽失效!<br /><br />删除屏蔽插件的部分代码:<br /><br />.data:10002197 loc_10002197:<br />.data:10002197 push dword ptr [edi]<br />.data:10002199 lea eax, [ebp+pszSubKey]<br />.data:1000219F push offset s_SoftwareMicro ; "SOFTWAREMicrosoftInternet ExplorerActiveX Compatibility"<br />.data:100021A4 push offset s_SS ; "%s%s"<br />.data:100021A9 push 103h ; size_t<br />.data:100021AE push eax ; char *<br />.data:100021AF call ds:_snprintf<br />.data:100021B5 add esp, 14h<br />.data:100021B8 lea eax, [ebp+pszSubKey]<br />.data:100021BE push eax ; pszSubKey<br />.data:100021BF push 80000002h ; hkey<br />.data:100021C4 call ds:SHDeleteKeyA<br />.data:100021CA inc esi<br />.data:100021CB add edi, 4<br />.data:100021CE cmp esi, dword_10002028<br />.data:100021D4 jl short loc_10002197<br />.data:100021D4<br />.data:100021D6<br />.data:100021D6 loc_100021D6:<br />.data:100021D6 pop edi<br />.data:100021D7 xor eax, eax<br />.data:100021D9 pop esi<br />.data:100021DA leave<br />.data:100021DB retn<br /><br /><br />&lt;5&gt;.<br />09号patch<br /><br />似乎是一个check模块<br />检查3721部件是否正常(校验码是否正确)<br />否则会从3721的网站download安装程序重新安装<br />(url=http://user.3721.com/soft/patch09.htm?fb=0<br />和http://user.3721.com/soft/patch09.htm?fb=1<br />)<br />(可能针对某些清理软件的破坏)<br /><br /><br />&lt;6&gt;.<br />10号patch<br />日期 12/10/04 11:07:21<br />同样是一个check模块<br />会检查3721的组件是否正常,若被破坏,则自动释放出patch10.exe(包含在DLL资源中)并执行<br /><br /><br />部分代码:<br />push offset s_SAssist3721 ; "%sassist3721"<br />lea eax, [ebp+var_568]<br />push edi ; size_t<br />push eax ; char *<br />call ebx ; _snprintf<br />push esi<br />push offset s_SAssistRepair ; "%sassistrepair.dll"<br />lea eax, [ebp+pszPath]<br />push edi ; size_t<br />push eax ; char *<br />call ebx ; _snprintf<br />add esp, 20h<br />lea eax, [ebp+pszPath]<br />push eax ; pszPath<br />call ds:PathFileExistsA<br />;检查上面几个dll是否存在<br /><br />test eax, eax<br />jz loc_100022D3<br /><br />lea eax, [ebp+Buffer]<br />push eax<br />push offset s_SPatch10_exe ; "%spatch10.exe"<br />lea eax, [ebp+FileName]<br />push edi ; size_t<br />push eax ; char *<br />call ebx ; _snprintf<br />add esp, 10h<br />lea eax, [ebp+FileName]<br />push eax ; lpFileName<br /><br />...............<br />................<br />lea eax, [ebp+hObject]<br />push eax ; lpProcessInformation<br />lea eax, [ebp+StartupInfo]<br />push eax ; lpStartupInfo<br />push esi ; lpCurrentDirectory<br />push esi ; lpEnvironment<br />push esi ; dwCreationFlags<br />push esi ; bInheritHandles<br />push esi ; lpThreadAttributes<br />lea eax, [ebp+CommandLine]<br />push esi ; lpProcessAttributes<br />push eax ; lpCommandLine<br />push esi ; lpApplicationName<br />call ds:CreateProcessA<br />;执行patch10.exe<br />cmp [ebp+hObject], esi<br />mov edi, ds:CloseHandle<br />jz short loc_100022C9<br /><br />;释放并执行patch10.exe<br /><br />patch10.exe实际上是一个downloader(下载者),会从<br /><br />http://download.3721.com/download/asrepair.cab?t=%d<br />下载3721恢复包 恢复被清除的3721<br /><br /><br />&lt;7&gt;.11号patch<br />日期 06/17/05 12:22:42<br />该patch启动后会使用rundll32.exe加载自己<br />创建一个名为3721CNSINSTSHELL_INSTALLMUTEX_PATCH11的互斥对象<br /><br />然后释放出一个cab文件,里面是压缩后的wmpns.dll,查了一下,是3721反间谍专家的一个附属 的dll,有恶意软件性质<br />并会将CNS的Setup程序写入runonce键值(重启后安装CNS网络实名)<br /><br />将cnsAutoUpdate写入注册表Run键值(每次开机自动执行更新程序)<br /><br /><br />部分代码:<br />push offset s_Rundll32_exeS ; "Rundll32.exe %s,RundllEx"<br />;安装程序,使用rundll32调用<br /><br />push 104h ; size_t<br />push ecx ; char *<br />call ebx ; _snprintf<br />lea edi, [esp+754h+pvData]<br />or ecx, 0FFFFFFFFh<br />xor eax, eax<br />add esp, 10h<br />repne scasb<br />not ecx<br />dec ecx<br />lea edx, [esp+744h+pvData]<br />push ecx ; cbData<br />push edx ; pvData<br />push 1 ; dwType<br />push offset s_Setup ; "Setup"<br />push offset s_SoftwareMic_2 ; "SoftwareMicrosoftWindowsCurrentVersi"...<br /><br />;写入runonce键值<br /><br />push 80000002h ; hkey<br />call ds:SHSetValueA<br />mov esi, 1<br /><br /><br />&lt;8&gt;.16号patch<br /><br />16号patch是个非常有意思的东西,它会把这个注册表键值设为"no"<br />HKCUSoftwareTencentTBHEnableTBH<br />用来<font style="BACKGROUND-COLOR: #ffffff" color="#ff0000">打击腾讯的BHO<br /></font><font color="#ff0000">将腾讯的浏览器插件设为禁止后<br />该patch将自毁</font><br /><br /><br /><font color="#ff0000">为了防止别人发现它修改tencent的键值以带来不必要的麻烦</font>,该PATCH中对注册表部分的读写是 加密了的<br />(呵呵,看了这个之后腾讯会不会去找YAHOO的麻烦呢?)<br />代码如下:<br />mov esi, offset s_A709ce5ce8561 ; "A709CE5CE8561FEDE4"<br />lea edi, [ebp+pszValue]<br />movsd<br />movsd<br />movsd<br />movsd<br />movsw<br />movsb<br />push 3Ch<br />xor eax, eax<br />pop ecx<br />lea edi, [ebp+var_F5]<br />rep stosd<br />stosb<br />push 0Ah<br />mov esi, offset s_B108c94af3523 ; "B108C94AF35239CAF0C2B5588CFFD3B4DB1B2FC"...<br />pop ecx<br /><br />lea edi, [ebp+pszSubKey]<br />rep movsd<br />movsb<br />push 36h<br />xor eax, eax<br />pop ecx<br />lea edi, [ebp+var_1E3]<br />rep stosd<br />stosw<br />stosb<br />mov esi, 82h<br />lea eax, [ebp+pszValue]<br />push esi ; int<br />push eax ; char *<br />call sub_10001067<br /><br />lea eax, [ebp+pszSubKey]<br />push esi ; int<br />push eax ; char *<br />call sub_10001067<br />mov esi, offset s_No ; "no"<br />lea edi, [ebp+pvData]<br />movsw<br />movsb<br />push 40h<br />xor eax, eax<br />pop ecx<br />lea edi, [ebp-411h]<br />rep stosd<br />stosb<br />lea eax, [ebp+pvData]<br />push eax ; char *<br />call strlen<br />add esp, 14h<br />push eax ; cbData<br />lea eax, [ebp+pvData]<br />push eax ; pvData<br />lea eax, [ebp+pszValue]<br />push 1 ; dwType<br />push eax ; pszValue<br />lea eax, [ebp+pszSubKey]<br />push eax ; pszSubKey<br />push 80000001h ; hkey<br />call ds:SHSetValueA<br />其中sub_10001067子程序就是将B108C94AF35239CAF0C2B5588CFFD3B4DB1B2FC与 A709CE5CE8561FEDE4进行解密,从而得到HKCUSoftwareTencentTBHEnableTBH这个注册表路 径<br /><br />然后对其写入键值:no<br /><font color="#ff0000">起到禁止腾讯bho的作用</font><br /><br />更有意思的是 我发现了一篇文章:《!腾讯流氓覆灭记!》其中所说的方法和这个patch完全一 致,呵呵 不知两者有何关联<br /><br /><br />&lt;9&gt;.18号patch<br />日期 09/23/05 14:44:46<br />加载2005年的yahoo流氓部分插件:zsmod.dll<br />这是个3721上网助手卸载后不会完全删除的组件<br />具体可见那篇著名的&lt;&lt;全面剖析3721及上网助手&gt;&gt;<br /><br /><br />&lt;10&gt;.22号patch<br />日期 12/19/05 13:51:49<br />主要用于从http://download.3721.com/download/CnsMin.cab这个地址download一个cnsmin.cab并安装<br />也就是自动安装网络实名<br />没什么新东西,代码就不列了<br /><br /><br />&lt;11&gt;.07号patch<br />日期 08/06/04 14:43:07<br />与04号patch基本一样<br />只是所带的.dat文件有所更改<br />自毁<br /><br />&lt;12&gt;.24号patch<br />日期 01/25/06 13:28:54<br />该patch只有一个字节0x20<br />估计是被丢弃的一个patch<br /><br /><br />&lt;13&gt;.25号patch<br />日期 04/24/06 03:41:54<br />又是一个下载者<br />会下载:<br />http://download.3721.com/download/cnsdtu.cab<br />http://download.3721.com/download/keepmainM.cab<br />这两个3721相关产品并自动安装之<br /><br /><br />&lt;14&gt;.26号patch<br />日期 05/11/06 12:31:19<br /><br />和25号patch基本一致,还是下载者<br />会下载:<br />http://download.3721.com/download/cnsdtu.cab<br />这个3721相关产品并自动安装之<br /><br /><br />&lt;15&gt;.28号patch<br />日期:无<br />不知道为什么,是一个0字节文件<br />可能被丢弃<br /><br /><br />&lt;16&gt;.29号patch<br />日期 10/10/06 11:46:57<br /><br />这是为数不多的有意思的patch之一....<br /><br />资源里有这两个有意思的路径:<br />1.<br />d:doworkCnsPatchpatch29sysReleasehack.pdb<br />(自己承认是hack别人东西的驱动~)<br /><br />2.<br />e:mywork360safesrcantidriver<br />360safe的anti driver(反3721,中搜等的一些流氓驱动的占坑驱动)<br /><br /><br />特点:<br />1.自毁<br />2.删除360SAFE的驱动/注册表项<br />3.释放并注册一个在boot时会加载的驱动,与360safe的pnp占坑驱动进行PK,看谁加载得快,就把谁给删了(如果那之前360SAFE的服务键值还没被删的话)<br /><br /><br />&lt;17&gt;.32号patch<br />日期 09/22/06 09:19:36<br /><br />会干掉很棒小秘书:P<br />包括hbhelper.dll,tbhelper.dll,hbclient,启动项,就连“很棒小秘书.lnk"也不放过...(流氓自个打架...)<br /><br />会释放一个hack驱动,不过不会以BOOT方式加载<br /><br /><br />&lt;18&gt;.34号驱动<br /><br />在之前的文章里有分析:<br />http://www.cnbeta.com/modules.php?name=News&amp;file=article&amp;sid=16531<br />== Yahoo上网助手自杀式破坏360safe的程序代码分析<br /><br /><br />完了<br />分析这多,累死偶也...后面几个懒得列代码了<br />偶把3721的老底给揭了...不知道某厂商会不会派杀手追杀偶...<br />其中还涉及到yahoo与tencent,很棒,360间PK,争夺客户端...<br />因为匆匆分析这18个文件,又都是静态分析...所以估计难免会有错误...还请高手指正...<br /></font>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/emu/aggbug/79986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-11-09 02:06 <a href="http://www.blogjava.net/emu/archive/2006/11/09/79986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>触目惊心:记雅虎对360安全卫士的自杀式攻击程序</title><link>http://www.blogjava.net/emu/archive/2006/11/08/79783.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 08 Nov 2006 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2006/11/08/79783.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/79783.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2006/11/08/79783.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/79783.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/79783.html</trackback:ping><description><![CDATA[
		<p>原文链接 <a href="http://www.cnbeta.com/modules.php?name=News&amp;file=article&amp;sid=16531">http://www.cnbeta.com/modules.php?name=News&amp;file=article&amp;sid=16531</a><br /><br /></p>
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td style="BACKGROUND-IMAGE: url(themes/deepblue/grad.gif); BACKGROUND-REPEAT: repeat-x" width="100%" bgcolor="#ffffff">
										<font class="option">
												<b>Yahoo上网助手自杀式破坏360safe的程序代码分析</b>
										</font>
								</td>
						</tr>
						<tr>
								<td style="BACKGROUND-IMAGE: url(themes/deepblue/grad.gif); BACKGROUND-REPEAT: repeat-x" bgcolor="#ffffff" colspan="2">
										<br />
										<table width="100%" align="center" border="0">
												<tbody>
														<tr>
																<td>
																		<a href="http://www.cnbeta.com/modules.php?name=News&amp;new_topic=91">
																				<img alt="Yahoo新闻主题" src="http://www.cnbeta.com/images/topics/Yahoo.gif" align="right" border="0" />
																		</a>
																		<font class="content">
																				<strong>MJ0011原创 转载注明哦!</strong>
																				<br />=================================<br />注意:此文为技术分析,不带任何偏向立场<br />由本文反汇编某厂商的病毒文件或曰恶意竞争文件而导致的任何法律问题,本人一概不负责<br />=================================<br /><br /><br /><div>看到刚才有朋友投递的 <br />独家!触目惊心:记雅虎对360安全卫士的自杀式攻击程序<br /><a href="http://www.cnbeta.com/modules.php?name=News&amp;file=article&amp;sid=16527" target="_self">http://www.cnbeta.com/modules.php?name=News&amp;file=article&amp;sid=16527</a></div><br /><div>我将文中那个cab文件download了下来 解压得patch34.dll(内部名称是patch33.dll,看来升级得太快，程序员连版本信息也没改就发布了)</div><br /><div>使用反汇编工具ida 5.0，发现了一些有意思的东西，现摘录如下:<br />我自己加了一些注释</div><br /><div>; Exported entry   1. DllRegisterServer<br />;DLL注册时要干下面的事</div><br /><div><br />; HRESULT DllRegisterServer(void)<br />public DllRegisterServer<br />DllRegisterServer proc near<br />push    offset s_360safe ; "<a href="file://360safe/">360safe</a>"<br />;呵呵，这是要干嘛呢？<br />call    sub_10001477---&gt;去调用这个子程序<br />pop     ecx<br />push    hModule         ; hModule<br />call    sub_10001291<br />push    1<br />pop     eax<br />retn<br />DllRegisterServer endp</div><br /><div><br />下面来看push了360safe后 sub_10001477这个子程序干嘛去了</div><br /><div><br />; Attributes: bp-based frame</div><br /><div>sub_10001477 proc near</div><br /><div>FindFileData= _WIN32_FIND_DATAA ptr -350h<br />pvData= dword ptr -210h<br />FileName= byte ptr -10Ch<br />pdwType= dword ptr -8<br />pcbData= dword ptr -4<br />arg_0= dword ptr  8<br />;此处arg_0就是刚才被push的/360safe</div><br /><div><br />push ebp<br />mov ebp, esp<br />sub esp, 350h<br />and byte ptr [ebp+pvData], 0<br />push esi<br />push edi<br />push 40h<br />pop ecx<br />xor eax, eax<br />lea edi, [ebp+pvData+1]<br />and [ebp+FileName], 0<br />rep stosd<br />stosw<br />stosb<br />push 40h<br />xor eax, eax<br />pop ecx<br />lea edi, [ebp-10Bh]<br />rep stosd<br />stosw<br />stosb<br />lea eax, [ebp+pcbData]<br />mov esi, 103h<br />push eax  ; pcbData<br />lea eax, [ebp+pvData]<br />push eax  ; pvData<br />lea eax, [ebp+pdwType]<br />push eax  ; pdwType<br />push offset pszValue ; "ProgramFilesDir"</div><br /><div>;push要取的注册表键值</div><br /><div>push offset pszSubKey ; "'SOFTWAREMicrosoftWindowsCurrentVersion"</div><br /><div>;push子键值</div><br /><div>push 80000002h ; hkey<br />mov [ebp+pcbData], esi<br />mov [ebp+pdwType], 1<br />call ds:SHGetValueA</div><br /><div>;获得SOFTWAREMicrosoftWindowsCurrentVersionProgramFilesDir这个注册表键的内容<br />;其实也就是系统程序文件夹的位置</div><br /><div>push [ebp+arg_0]</div><br /><div>;将获得的程序文件夹位置+arg_0(360safe)<br />;得到360safe安装文件夹地址</div><br /><div><br />lea eax, [ebp+pvData]<br />push eax<br />push offset s_SS_exe ; "%s%s*.exe"<br />lea eax, [ebp+FileName]<br />push esi  ; size_t<br />push eax  ; char *<br />call __snprintf<br />and [ebp+FindFileData.dwFileAttributes], 0</div><br /><div>;查找360安装目录下所有*.exe文件</div><br /><div>add esp, 14h<br />xor eax, eax<br />lea edi, [ebp+FindFileData.ftCreationTime]<br />push 4Fh<br />pop ecx<br />rep stosd<br />lea eax, [ebp+FindFileData]<br />push eax  ; lpFindFileData<br />lea eax, [ebp+FileName]<br />push eax  ; lpFileName<br />call ds:FindFirstFileA<br />mov edi, eax<br />cmp edi, 0FFFFFFFFh<br />jz short loc_10001579</div><br /><div>;此处为查找文件的循环判断</div><br /><div>loc_10001531:<br />lea eax, [ebp+FindFileData.cFileName]<br />push eax<br />lea eax, [ebp+pvData]<br />push [ebp+arg_0]<br />push eax<br />push offset s_SSS ; "%s%s%s"<br />lea eax, [ebp+FileName]<br />push esi  ; size_t<br />push eax  ; char *<br />call __snprintf<br />lea eax, [ebp+FileName]<br />push eax  ; char *<br />call sub_100013F7</div><br /><div>;如果找到了.exe文件，那么开始对其进行破坏<br />;sub_10013f7这个子程序的作用是破坏给定的EXE文件<br />;时间关系不列出代码了<br />;说一下大概流程<br />;将push入的文件路径用r+模式打开,然后自己判断pe相关信息，最后写入破坏后的pe结构，导致exe文件无法执行，提示非可执行文件</div><br /><div><br />add esp, 1Ch<br />lea eax, [ebp+FindFileData]<br />push eax  ; lpFindFileData<br />push edi  ; hFindFile<br />call ds:FindNextFileA<br />test eax, eax<br />jnz short loc_10001531<br />test edi, edi<br />jz short loc_10001580</div><br /><div>loc_10001579:  ; hFindFile<br />push edi<br />call ds:FindClose</div><br /><div>loc_10001580:<br />pop edi<br />pop esi<br />leave<br />retn<br />sub_10001477 endp</div><br /><div><br />完成对360safe的可执行程序破坏后<br />开始执行<br />push    hModule         ; hModule<br />call    sub_10001291</div><br /><div>在 sub_10001291中</div><br /><div>该dll将利用rundll32.exe将自己加载为一个进程执行<br />并进行自毁,自毁代码如下:(参数为自己的dll名)</div><br /><div><br />; int __cdecl sub_1000102E(LPCSTR lpExistingFileName,char)<br />sub_1000102E proc near</div><br /><div>lpExistingFileName= dword ptr  4<br />arg_4= byte ptr  8</div><br /><div>cmp [esp+arg_4], 0<br />jnz short loc_1000104F<br />push [esp+lpExistingFileName] ; lpFileName<br />call ds:DeleteFileA</div><br /><div>;;首先执行delete file<br />;;如果失败则跑到loc_10001047<br />;;成功则返回</div><br /><div>cmp eax, 1<br />jnz short loc_10001047<br />xor eax, eax<br />retn</div><br /><div>loc_10001047:<br />call ds:GetLastError<br />jmp short loc_10001052</div><br /><div>loc_1000104F:<br />push 5<br />pop eax</div><br /><div>loc_10001052:<br />cmp eax, 5<br />jz short loc_10001060<br />cmp eax, 20h<br />jz short loc_10001060<br />push 1<br />jmp short loc_10001079</div><br /><div>;;使用win32下强大滴移除文件函数MoveFileExA对自己进行删除<br />;;不信自杀不了了我</div><br /><div>loc_10001060:<br />call sub_10001000<br />test eax, eax<br />jz short loc_1000107B<br />push 4  ; dwFlags<br />push 0  ; lpNewFileName<br />push [esp+8+lpExistingFileName] ; lpExistingFileName<br />call ds:MoveFileExA<br />push 2</div><br /><div>loc_10001079:<br />pop eax<br />retn</div><br /><div>loc_1000107B:<br />push 0<br />push [esp+4+lpExistingFileName]<br />call sub_10001093</div><br /><div>;;靠，还删不掉<br />;;我把自己写到wininit.ini里的rename里去，重启后自动删除<br />;;可一定要毁尸灭迹呀!</div><br /><div><br />pop ecx<br />pop ecx<br />xor ecx, ecx<br />test eax, eax<br />setnz cl<br />inc ecx<br />mov eax, ecx<br />retn<br />sub_1000102E endp</div><br /><div>综上，这个dll做的事主要就是干掉360SAFE的所有可执行文件，然后自毁<br /><br />呵呵，真是杀人不留痕呀</div><br /><div>MJ0011原创 转载注明哦</div></font>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/emu/aggbug/79783.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-11-08 10:34 <a href="http://www.blogjava.net/emu/archive/2006/11/08/79783.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]百度的原罪—封杀Google的黑内幕</title><link>http://www.blogjava.net/emu/archive/2006/11/03/78816.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 02 Nov 2006 16:59:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2006/11/03/78816.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/78816.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2006/11/03/78816.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/78816.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/78816.html</trackback:ping><description><![CDATA[做得出卑劣无耻的事，就要经得起无穷无尽的无情的拷问。<br /><br /> <a href="http://www.williamlong.info/archives/377.html">原文链接</a><br /><br /><br /><h2 class="post-title">百度的原罪—封杀Google的黑内幕</h2><div class="post-body"><p>　　这是一篇2002年的文章，那一年对于搜索引擎界是重要的一年，因为自从那一年后，Google就再也“不好用”了，搜索的时候经常出现“本页无法访问”，然后就会暂时无法连接Google，Google的网页快照功能更被封锁至今仍然无法使用，无奈之中，人们只好选择了和Google“最象”的Baidu搜索引擎，然而，大多数人可能不知道的事实是，国内封杀限制Google其实前后均由搜索引擎公司百度在幕后操作。</p><p>　　去年底回国了一次，跟几个圈内的朋友聊了聊，其中有百度的员工，虽然所得不多，但初步证实了我由来已久关于Google在国内被封是有公司在背后操作的猜测，非常巧的是新年后在硅谷接待了一位老同学一家，我这位老同学的先生在政府相关部门工作，恰恰了解Google被封这个事，从他那里证实了国内搜索引擎公司百度（baidu.com）前前后后暗中操作Google被封及Google使用功能受限的一些传言。</p><p>　　我最早怀疑百度的理由非常简单：一是百度公司是Google被封唯一的受益者，Google被封之时，也刚好是国内主要门户更换搜索引擎服务商的时间段，这个事件后，门户网站视Google如洪水猛兽，网易、新浪、雅虎中国、搜狐这样的公司不得不选择了百度的产品，百度从中获利近两百万美元。二是百度作为国内搜索引擎界的知名公司，恐怕没有人比他们更了解Google，对于Google中有些什么有害信息，或者对Google的一些功能进行限制的技术实现手段上，百度是专家。整个Google事件，百度有动机，有条件。</p><p>　　根据我前后接触四五个与这件事有关的朋友的说法，大概整理出百度操作Google事件的经过：</p><p>　　2001年中，百度的一个副总即开始与政府有关部门谈Google中“有害信息”的问题，但当时百度接触的人级别比较低，百度的想法也只是想通过政府向使用Google的一些中文网站施加压力，另一方面有关官员也认为Google的服务器在国外，同时在国内影响不大，所以也只是根据百度的举报抽查过用Google服务的网页一两次，并没有什么大的风波。</p><p>　　2002年的时候百度最为害怕Goolge，因为这时传言Google的Founder将访华，Google也准备在年底正式进入中国市场，同时百度最大的客户新浪、搜狐也正在和Google接触，有在年内与百度的合同结束后换用Google的意向。面对这种情况，有点像是对百度宣判了死刑，所以百度开始变得疯狂，专门制定了一个针对Google的计划。</p><p>　　根据朋友的说法，从公司层面，百度分三类整理了Google含有所谓政治问题、宗教问题、情色问题的材料，每一类材料多达数百页A4纸，定期向有关部门提交，百度并提供数据证明中国网民经常在查找这些东西。虽然人们在使用Google时，可能不足几万分之一的情况是search这些“不良信息”，但由于百度是国内最大的搜索引擎公司，他们提供的数据却说明中国网民有多达近10个百分点的比例在经常搜索“不良信息”，这样的数据给政府有关部门造成了很大的影响，觉得Google中的“不良信息”对中国网民危害巨大。</p><p>　　从用户层面，百度也动用了非常多的人力和财力操作这个事，包括组织一些员工和兼职进行信函举报，即以用户身份给有关部门写信投诉Google“危害社会”，“危害中国互联网”，“危害青少年身心健康”，从我在政府部门工作的朋友所称，这一招是非常有效的，对最后有关部门的决策起到了重要作用。</p><p>　　从高层路线，经过一年的打基础，百度的CEO和VP开始能接触到有一定级别的官员，并适机的传递一些Google中众所周知的特别要害的“有害信息”情况，这也是后来Google被封时民间传言Google所含有特别要害的“有害信息”到达政府一定级别官员的一个重要途径之一。</p><p>　　2002年9月，中国5600万网民的不幸，历时一年多的阴谋策划后，百度的计划得逞了，有关部门封杀了Google.虽然这一事件前前后后网上传言众多，但可以肯定的是，没有搜索引擎公司百度的幕后操作，就不会有封杀全球最伟大的搜索引擎Google。Google假如进入中国市场，对百度的打击是毁灭性的，但一个精心策划的阴谋使得百度公司不仅逃过一劫，还能长治久安，并且当年就通过向本来可能是Google客户的Sohu、Sina、网易、中国雅虎卖自己的搜索引擎服务获利近两百万美元。</p><p>　　更为让人吃惊的是，据有人称，Google被封杀后，篡改GoogleDNS指向的人中即有百度。这一推测其实也很容易成立：虽然篡改DNS违反中国法律，但百度在当时特定情况下断定政府不会追查此事，所以在整死Google后还分Google的残骸，篡改DNS，把访问Google的用户引到百度网站，为了分散网民的注意，又把其它如北大天网、ENet等一些不相干的网站拉下水。其实有聪明的用户稍加分析就可以明白，中国提供搜索引擎的网站那么多，但Google被篡改的DNS后指向的网站为什么只有百度一个是真正概念上的搜索引擎呢？而没有比较知名的搜索网站sohu、sina、yahoo？</p><p>　　虽然Google被封杀已成昨日烟云，但今天的Google中文的使用仍然在国内受到很多网络技术的限制。在Google的Keywords、Cache、Spider等程序服务中，Google中文网站受到一套相当完善的技术限制，有朋友称，百度的几名核心程序员参与了这一套Google限制技术的开发和技术支持。Google已经成为互联网上搜索引擎的代名词时，只有中国不能真正的使用他，而这套技术的创意与提供，却正是中国的搜索引擎公司百度。</p><p>　　因为一个公司的私利、中国5600万网民不能方便的得用互联网查询资料，因为一个公司的阴谋，整个中国互联网的信息利用向后退了一大步。我前后接触了几个与事件相关的人物，通过私下交流中获得一些信息，把事实与内幕记录下来，只是想澄清中国互联网发展史上的一个令人震惊的事实，让众人明白一个问题：是谁在为中国的搜索引擎服务做贡献，是谁在残害中国的搜索引擎服务。（文/Tubleaqis，来源：文学城）<br /><br />原创文章如转载，请注明：转载自<a href="http://www.williamlong.info/">月光博客</a> [ <a href="http://www.williamlong.info/">http://www.williamlong.info/</a> ] <br /><br /><br /></p></div><img src ="http://www.blogjava.net/emu/aggbug/78816.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-11-03 00:59 <a href="http://www.blogjava.net/emu/archive/2006/11/03/78816.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>骗局： 联合国确认发现外星文明，超越地球4000年</title><link>http://www.blogjava.net/emu/archive/2006/10/31/78379.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Tue, 31 Oct 2006 15:19:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2006/10/31/78379.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/78379.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2006/10/31/78379.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/78379.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/78379.html</trackback:ping><description><![CDATA[
		<a href="http://www.google.cn/search?hl=zh-CN&amp;newwindow=1&amp;q=CARMA%E5%B0%84%E7%94%B5%E6%9C%9B%E8%BF%9C%E9%95%9C%E7%BE%A4%E6%97%A9%E4%BA%9B%E6%97%B6%E5%80%99%E6%94%B6%E5%88%B0%E7%9A%84%E5%A4%AA%E9%98%B3%E7%B3%BB%E5%A4%96%E7%94%B5%E6%B3%A2%E5%85%B7%E6%9C%89%E6%9C%89%E9%AB%98%E7%AD%89%E6%96%87%E6%98%8E%E7%89%B9%E5%BE%81&amp;meta">http://www.google.cn/search?hl=zh-CN&amp;newwindow=1&amp;q=CARMA%E5%B0%84%E7%94%B5%E6%9C%9B%E8%BF%9C%E9%95%9C%E7%BE%A4%E6%97%A9%E4%BA%9B%E6%97%B6%E5%80%99%E6%94%B6%E5%88%B0%E7%9A%84%E5%A4%AA%E9%98%B3%E7%B3%BB%E5%A4%96%E7%94%B5%E6%B3%A2%E5%85%B7%E6%9C%89%E6%9C%89%E9%AB%98%E7%AD%89%E6%96%87%E6%98%8E%E7%89%B9%E5%BE%81&amp;meta</a>=<br /><br />国内的转贴很泛滥了，大体内容是是这样的：<br /><br /><div style="BACKGROUND-COLOR: yellow">美国时间7月29日下午3时，北京时间7月30日凌晨3时 <br /><br />国际天文学联合会（IAU）、美国航空航天局（NASA）在华盛顿举行一个隆重的联合新闻发布会，正是宣布确认CARMA射电望远镜群早些时候收到的太阳系外电波具有有高等文明特征。预料这一重大消息将在科技自然科学与现实社会中引起强烈的震动，并可能对人类社会发展产生深远的影响。 <br /><br />位于美国加州CARMA是世界上最大的射电望远镜群，该设施在2005年底对距离地球4900光年OGLE-TR-56行星例行观察时发现了这一微弱的信号，并在随后2400小时的里，多次记录类似电波。虽然目前仍旧无法完全确认这些信号的内容，但是已经可以从中分离出明显的文明特征。国际天文学联合会副主席Richard Stallman博士表示，该信号并不具有针对性，可能只是文明内部的通讯泄漏。从目前的分析来看，信号编码水平已经相当成熟，考虑到发射源距离地球达4900光年，可以肯定的说，如果该文明仍旧存在的话，其科技程度至少已经领先地球4000年以上。 <br /><br />OGLE-TR-56行星是harvard-Smithsonian天体物理中心于1992年用凌星观测方法发现，主星为人马座的恒星。该行星质量为0.27MJ、离主星0.045天文单位，公转周期为3.2295天。目前已经发现到的太阳系外行星共有139颗。</div><p><br />想这样骇人听闻的消息，当然直接就是不信了，如果真有这回事，emu虽然消息闭塞，也不至于要事隔三个月才听说吧。然后就是如何证伪的问题了。最基本的一点是：文明内部的通讯泄漏，而不是有针对性的信号，能够传递4000光年远吗？理论上确实是可能的，但是以第一类文明（控制行星能量）可以对付的能量规模来看，是远远不够的（如果精确瞄准地球发送信号还差不多），假如真的有这样的文明，至少可以归入第二类文明（控制恒星能量）了。如果这个“文学联合会副主席”稍微内行一点，他应该指出这个地外文明比我们领先了一个层次，我们相对于他们连原始人都算不上。<br /><br />分析完了，开始考证。原文中提到了行星的编号是：OGLE-TR-56b 这个是很好查的，google了一下搜到了 <a href="http://www.asiaa.sinica.edu.tw/outreach/news/old/2003/03020606.htm">http://www.asiaa.sinica.edu.tw/outreach/news/old/2003/03020606.htm</a> ，这是一个2003年年初的旧闻：<br /><br /></p><div style="BACKGROUND-COLOR: yellow"><font color="#008000" size="5">新發現目前距離最遙遠的日外行星   <br /></font>天文學家新發現了目前已知最遙遠的日外行星：位於人馬座的 OGLE-TR-56b。領導這項計畫的是 CfA 天文學家 Dimitar Sasselov，他以現今最有可能找出類地日外行星的掩凌法發現了這顆遙遠的日外行星。日外行星之所以很難被發現主要是因為其距離太過遙遠，在地球上根本無法觀測到這些行星所反射的光。<br />過去天文學家幾乎都是以恆星沿徑速度變化造成的都卜勒效應來尋找日外行星的蹤跡。不過以行星凌日時造成的光度變化也是一種方法，只是行星遮蔽對恆星所造成的光度變化非常微弱，只相當於一隻蚊子從探照燈前五百公里飛過的程度，但天文學家還是有辦法偵測到如此細微的光度變化，並根據觀測資料推測出行星的大小與軌道。應用這種方法，可以搜查的恆星數量從適用於沿徑速度法的四萬顆大幅提昇到一億顆。先前亦曾有以掩凌法驗證日外行星存在的例證: HD 209458b，不過在掩凌法之前，天文學家已經用沿徑速度法先行找到了這顆行星。<br />掩凌法已經被提出多年，不過這次的 OGLE-TR-56b 還是首度以掩凌法發現行星的案例。目前一些針對數千顆恆星光度變化的巡天觀測已經鎖定了數十顆可能有行星的系統。這次的發現是從光學重力透鏡實驗 (Optical Gravitational Lensing Experiment, OGLE) 巡天計畫所發現的 59 個可能目標之一，而其他的目標經過光譜驗證後大多是伴星很暗的雙星系統。另外五個目標很可能具有行星，因為它們的沿徑速度變化極小或根本無法測得，經過大望遠鏡進一步的觀測，證實 OGLE-TR-56 是由單一恆星和一顆木星質量的行星組成。<br />OGLE-TR-56b 這顆行星在目前所發現的百顆日外行星中相當特殊，第一，它比其他日外行星系統平均遠 20 倍，事實上，其他系統都在鄰近地球的範圍內，同在太陽所在的獵戶臂上，但 OGLE-TR-56 位於人馬臂上，更接近銀河核心。其次，它與恆星間的距離比其他日外行星都來的近，軌道距離僅四倍恆星半徑，比日地距離近五十倍，這個木星般大小的行星以 29 小時的週期環繞其恆星，<strong><font color="#ff0000" size="4">其表面溫度估計接近 2000 ℃，相當令天文學家驚訝。</font></strong>天文學家提出的假說認為當行星剛形成時都在距離恆星較遠處，之後因原始行星盤內的物質向恆星集中，氣態行星也被推向內遷移，甚至完全被恆星吞噬。據推測，這顆新發現的行星在大約四十億年前形成後，逐漸向內遷移，過於接近恆星的結果使其部分大氣被恆星吸走，在失去一半的質量之後，行星再以螺旋狀軌跡向外移至現在的位置。這向內向外遷移的過程持續了大約一百萬年，當行星退到現在的位置時，原行星盤已經消散，沒有物質會再將其推像恆星，因此得以倖存下來。從系統速度變化測量推知，OGLE-TR-56b 的質量約為木星的 90%，又從凌日時的光度變化測知其體積約為木星的 1.3 倍，顯示該行星為一顆氣態行星，密度與土星類似。<br />有趣的是，OGLE-TR-56b 上層大氣的溫度理論上可以形成雲，但雲的成分不是水蒸氣而是鐵原子！不久前天文學家曾發現在棕矮星上有鐵雨的證據，但只能發生在棕矮星生命中很短暫的一段時間內。這顆已經有四十億年歷史的行星應該正經歷著這種奇特的氣候。<br />以掩凌法搜尋日外行星比沿徑速度法有許多優點，它的效率較高，可以在同樣時間內檢測較多的目標，也可將檢測目標的距離擴大至 5,000 光年遠、偵測出較小的行星，以及測量出行星的大小與密度。<br />在未來十年內，太空望遠鏡也將加入掩凌搜尋的行列，例如 NASA 預定於 2006 年發射的克卜勒任務，將以四年的時間對數千顆恆星進行搜尋，且其靈敏的程度足以發現地球大小的日外行星。再接下來於 2012～2015 年間發射的類地行星搜尋任務將檢測日外類地行星是否有生命存在。這項研究將分別刊載於一月二十三日出版的「自然」期刊與「天文物理通訊」(ApJ)。 
<p></p></div><br /><p>注意一下上面加红的粗体部分：<font color="#ff0000" size="4"><strong>其表面溫度估計接近 2000 ℃，相當令天文學家驚訝。<br /></strong></font><br />在 <a href="http://pop.pcpop.com/050522/1587163-4.html">http://pop.pcpop.com/050522/1587163-4.html</a> 上还有这个行星的艺术图：<br /><br /><img src="http://www.blogjava.net/images/blogjava_net/emu/1359/o_OGLE-TR-56b.jpg" /><br /><br />非常接近恒星的气态巨行星，画的很传神。<br /><br />当然在2000℃下面也不是一定不可以存在生物（碳基硫基看来是铁定不可能了，硅基也有点困难，鬼知道这些外星弟兄们是用什么打造的），但是在这样的环境下发现了文明迹象的话，我们可爱的Richard Stallman博士怎么可能忽略这么重要的细节呢？<br /><br />不管是独立思考还是简单的考证，都很容易得到正确的结论，不由的感慨，怎么现在的人就这么容易被骗呢？<br /><br />小结一下，对待小道消息的时候我们应该这样看待：非常的论点要由非常的论据支持，骇人听闻的说法要有非常可靠的来源。</p><img src ="http://www.blogjava.net/emu/aggbug/78379.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-10-31 23:19 <a href="http://www.blogjava.net/emu/archive/2006/10/31/78379.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>