tag:blogger.com,1999:blog-39908652024-03-13T09:26:35.243+08:00janlay's lifex涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.comBlogger42125tag:blogger.com,1999:blog-3990865.post-1267482032532555902009-08-12T21:43:00.001+08:002009-08-22T20:13:44.409+08:00Blog moved.<p align="center"><img alt="stopped" src="https://jtaqpa.blu.livefilestore.com/y1pYwmX3dzKNfYFdeHU3iHNMpNRLlVfICahmFCrDAE41jjRYpMBLOz_IaZh_VbHenLXPcdiIRTmHgXbE047fPKflUv9N92deTQg/stopped.jpg" /></p>
<p>This blog was moved to <a href="http://janlay.com/">http://janlay.com/</a>, currently hosted on MS Live Spaces.</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com29tag:blogger.com,1999:blog-3990865.post-80167852527607868452009-06-11T13:52:00.000+08:002009-06-11T13:53:04.372+08:00再世界见昨天去了趟下沙,能见到的同事越来越少,很多人已经各奔东西。<br><br>曾经我们聚集在一起,豪气干云;曾经我们为之奋斗的"再世界",正在丧失它的生机。<br><br>激情如同掉落到小溪里的石子,被时间冲刷得越来越光滑。<br><br>再见,再见,再世界见。<a href="http://WWW.RE1001.COM">http://WWW.RE1001.COM</a><br> x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com12tag:blogger.com,1999:blog-3990865.post-59472138243881306032009-04-18T11:52:00.003+08:002009-04-18T12:21:58.968+08:00Greasemonkey 脚本: Loband MSDN Library<a href="http://www.hanselman.com/">Scott Hanselman</a> 提到 MSDN 现在提供一个<a href="http://www.hanselman.com/blog/LowBandwidthViewAndOtherHiddenAndFutureFeaturesOfMSDN.aspx">低带宽访问模式</a>,以改善带宽较低用户的文档阅读体验。下面这两幅图很好地说明了传统方式和低带宽方式的区别:
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/7ea5f7dfff83_CCBB/XmlNode%20Class%20%28System.Xml%29%20-%20Windows%20Internet%20Explorer_thumb.png"><img style="cursor: pointer; width: 400px; height: 357px;" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/7ea5f7dfff83_CCBB/XmlNode%20Class%20%28System.Xml%29%20-%20Windows%20Internet%20Explorer_thumb.png" alt="" border="0" /></a>
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/7ea5f7dfff83_CCBB/XmlNode%20Class%20%28System.Xml%29%20-%20Windows%20Internet%20Explorer%20%282%29_thumb.png"><img style="cursor: pointer; width: 400px; height: 357px;" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/7ea5f7dfff83_CCBB/XmlNode%20Class%20%28System.Xml%29%20-%20Windows%20Internet%20Explorer%20%282%29_thumb.png" alt="" border="0" /></a>
以上两张图版权归属于(C) <a href="http://www.hanselman.com/">Scott Hanselman</a>.
<p>低带宽模式的特点是在 URL 中添加了sugar: (loband),服务器就会返回一个区别于传统方式的页面结构。不过,这个功能似乎还没有完成,Loband 页面内的链接仍然不是 Loband 方式。于是,今天上午写了个 Greasemonkey script, 它可以自动完成以下两个任务:
</p><ol><li>非 Loband 模式时自动转向到 Loband 模式</li><li>Loband 模式的页面链接全部转换为 Loband link. </li></ol>更多信息请移步:<a href="http://userscripts.org/scripts/show/46944">http://userscripts.org/scripts/show/46944</a>, 或点<a href="http://janlay.googlepages.com/loband_msdn_library.user.js">这里</a>直接安装。x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com14tag:blogger.com,1999:blog-3990865.post-82739706150170818002009-04-12T21:23:00.007+08:002009-04-12T21:57:19.365+08:00绕过 GFW 访问 Android/Chromium 项目最近对 Google 发起的两个开源项目——<a href="http://developer.android.com/">Android</a> & <a href="http://dev.chromium.org/">Chromium</a> 产生了深厚的兴趣,准备去它们的开发者网站找些资料看看,却发现两个站点都访问不了。直觉就是 GFW 在后面起作用,ping 一下站点域,发现两个站点都是由 ghs.google.com 转发的。这样,问题就相对简单了,只要你能看到我这篇文章(从 janlay.com 看到),那么下面的这个 workaround 应该是有效的:
<div>
<ol>
<li>打开资源管理器,访问这个文件夹 C:\Windows\System32\drivers\etc\</li>
<li>用记事本打开 hosts 文件(它没有扩展名)</li>
<li>在文件末尾添加这两行:
<pre>
74.125.113.121 dev.chromium.org
74.125.113.121 developer.android.com
</pre>
</li>
<li>关闭并保存文件</li></ol>重新打开浏览器,这两个项目应该就可以访问了。</div><a href="http://1.bp.blogspot.com/_vOG2RwDDWes/SeHyCxQyb3I/AAAAAAAAAGE/6VLigpH54vY/s1600-h/android-developers-is-available-now.png"><img style="WIDTH: 200px; HEIGHT: 144px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5323802363926048626" border="0" alt="" src="http://1.bp.blogspot.com/_vOG2RwDDWes/SeHyCxQyb3I/AAAAAAAAAGE/6VLigpH54vY/s200/android-developers-is-available-now.png" /></a>
<div>
</div>
<p>--------------- 华丽的分割线 ---------------</p>
<div>另:Android 在 Google Code 有个主页,不过英文版和中文版差别很大:英文版资料很少,页面上已经很明显地提示访问者,该项目已经转移到 developer.android.com 网站,大家请稳步。中文版就比较有意思了:第一屏内全是中文,貌似资料很丰富的样子,不过有一半的链接被和谐;下半部分只能提供一些博客和讨论组的英文内容。</div>
<div>
</div>
<div>既然 Google 没有给个说法,我就把这个张贴出来,算是个补充吧 </div>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com19tag:blogger.com,1999:blog-3990865.post-28728674828096823322009-03-28T22:05:00.005+08:002009-03-28T22:59:44.122+08:00我的博客回来了!<p>在经历了痛苦的<a href="http://www.google.com/search?q=ghs+ip">ghs事件</a>之后,这个刚刚重新恢复生机的博客,再次成为“和谐”规则的牺牲品。由于完全没有可用的IP, 我一度打算将访问方式从域名转向到blogspot上去;计划中的PR恢复到3,恐怕也遥遥无期了。</p>
<p>这段时间,除了难得地沐浴了几天阳春三月的好光景,大部分时间都是“淫雨霏霏,连月不开”的天气,烟雨江南的心境早已荡然无存。这些天,工作之余经常想到的一个问题就是,博客还要不要写了?也许把域名transfer到godaddy去,然后买个便宜的hosting, 才能真正解决问题。</p>
<p>今天再次搜索了一下,终于看到好消息:有<a href="http://www.behindgfw.com/archives/2007/06/ghs.html">新的IP</a>放出来了。挂了接近一个月之后,我的博客再次恢复了!</p>
<p>莫问阴霾何自去,拨云见日终有时!</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com19tag:blogger.com,1999:blog-3990865.post-78189871503129979052009-02-28T11:34:00.009+08:002009-03-28T23:03:12.811+08:00FCKeditor含有大量小文件<p>今天整理硬盘目录权限时,发现给 D 盘全盘文件设置权限花费了大量时间,实在在等不及,就中断了设置。根据经验,应该是这个盘含有大量小文件;而我在断开之前,看到系统一直在 <a href="http://www.fckeditor.net/">FCKeditor</a> 的 svn 文件夹中工作。这个目录是平时跟踪该项目开发进展以及写 JavaScript 参考源代码之用,联想到之前几次 svn update 都花了不少时间,现在也用得少了,遂决定删除之。</p><p>不删不知道,一删吓一跳啊,这个项目文件数量居然有 12 万之众(含 .svn 工作文件),磁盘性能杀手啊:
<img alt="FCKeditor has a lot of small files" src="http://lh6.ggpht.com/_vOG2RwDDWes/SaizY-dOAfI/AAAAAAAAAEg/v4C_xT95VYw/s800/a-lot-files.png" /></p>呼呼,总共花了 10 多分钟才删除完-__-!
这次删除意外发现 Windows 7 Beta 通过安装前几天的<a href="http://windowsteamblog.com/blogs/windows7/archive/2009/02/19/test-updates-for-windows-7-beta-users.aspx">更新</a>后,原来只能和 explorer 一起工作的任务栏进度指示,现在也可以工作在其他进程中了(如 <a href="http://www.ghisler.com/">Total Commander</a>)^^x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com22tag:blogger.com,1999:blog-3990865.post-26594551863273227032009-02-19T22:30:00.003+08:002009-02-19T22:36:47.020+08:00We Are Fortunate to Witness HistoryAs long as we crossed the ditch, what else can not solve the problem?x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com15tag:blogger.com,1999:blog-3990865.post-1933125296227192652009-02-18T17:08:00.010+08:002009-03-28T23:04:35.294+08:00jQuery plugin: ScrolliteI wrote a simple <a href="http://jquery.com/">jQuery</a> plugin today, called <span style="font-style: italic;">Scrollite</span>. This plugin makes it easier to create a float layer, scrolling with the page. Here's the code:<pre>jQuery.fn.scrollite = function(left, margin, duration) {
margin = parseInt(margin) || 0; duration = parseInt(duration) || 0;
return this.each(function() {
var target = jQuery(this).css({position: 'absolute', zIndex: 10000})
.css(left ? 'left' : 'right', margin + 'px');
jQuery(window).bind('load scroll resize', function() {
target.animate({top: (jQuery(window).height() + window.scrollY - target.height() - margin) + 'px'}, duration);
});
});
};
</pre>
<span style="font-weight: bold;">Features & options:</span>
<ul><li>Float it without writing CSS code.
</li><li>Place the float container in the left or right (default);</li><li>Customize the speed of sliding by set <span style="font-style: italic;">duration</span> time in millisecond (Immediately sliding is default behavior);</li><li>Customize the margin by set <span style="font-style: italic;">margin</span> in pixel (default: 0)
</li></ul><span style="font-weight: bold;">Usage:</span>
<ul><li><code>$('#node').scrollite();</code><br/>
Paramless call, use all default options;</li><li><code>$('#node').scrollite(false, 10);</code><br/>Put it in the right with 10-pixel-margin;</li><li><code>$('#node').scrollite(true, 5, 20);</code><br/>Put it in the left with 5-pixel-margin, complete slide in 20 milliseconds.</li></ul><span style="font-weight: bold;">Demo:</span><br/>
Just navigate to <span style="text-decoration: underline;"></span><a href="http://janlay.googlepages.com/scrollite-demo.htm">this page</a>, and check out the simple code :)x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com21tag:blogger.com,1999:blog-3990865.post-83614335918200696252009-02-17T09:17:00.004+08:002009-02-17T09:27:43.750+08:00Google Chrome 2.0.162自定义缓存到Ramdisk (个人数据保留在硬盘)<p>之前的版本虽然可以通过<a href="http://www.wechrome.cn/thread-4329-1-1.html">在启动命令行添加 <code>--user-data-dir</code> 参数</a>指定用户数据存放位置的方式将缓存设置到<a href="https://bbs.et8.net/bbs/showthread.php?t=906641">Ramdisk</a>, 但是其他的个人数据(包括选项、cookies也一并保存过去了),系统重启后这些数据就会丢失。虽然网上有<a href="http://school.cfan.com.cn/soft/net/2008-09-27/1222486580d197359.shtml">通过脚本的方式把ramdisk数据在关机时写回硬盘</a>,但终究还是过于麻烦。这个版本终于增加了独立了自定义缓存设置,更新文档有这个说明,但<a href="http://src.chromium.org/viewvc/chrome?view=rev&revision=9375">并未给出参数名称</a>。通过查看<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/chrome_switches.cc?r1=9375&r2=9374&pathrev=9375">版本差异</a>,终于在源代码看到这个参数,即 <code>--disk-cache-dir</code>。因此,对于盘符为R:的Ramdisk, 可以在启动命令行参数如下参数:
<pre>--disk-cache-dir=R:\TEMP</pre><p></p><p>再次启动Chrome后,缓存位置就是R:\TEMP\Cache 更新文档:<a href="http://sites.google.com/a/chromium.org/dev/getting-involved/dev-channel/release-notes/untitledpost">http://sites.google.com/a/chromium.org/dev/getting-involved/dev-channel/release-notes/untitledpost</a>
下载: http://dl.google.com/chrome/install/162.0/chrome_installer.exe</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com19tag:blogger.com,1999:blog-3990865.post-49926772986164742622009-02-15T21:38:00.002+08:002009-02-15T21:42:39.718+08:00¥€$, 2009!2009, 重新出发 :)x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com14tag:blogger.com,1999:blog-3990865.post-35699554841352440392007-05-28T14:49:00.001+08:002007-05-28T15:00:21.055+08:00从源头解决 Serv-U 权限提升漏洞<p><a href="http://www.serv-u.com/">Serv-U</a> 如今已成为主流 FTP Server. 和 Windows 一样,因为用的人多,所以研究并试图破解它的人也多,于是就爆出比 <a href="http://www.g6ftpserver.com/">G6 FTP Server</a> 多得多的漏洞。我经常听说某人服务器上的 Serv-U 无端地多出了用户或域,或被远程连接。</p> <p>一旦 Serv-U 被攻破,接下来黑客可以很容易在服务器上创建管理员帐号,开启远程桌面,或者进行其他操作。基本上这台服务器就“沦陷”了。</p> <p>为什么黑客能做到这些?究其原因,在于 Serv-U 的进程标识权限太高——Serv-U作为系统服务启动,并且使用<span class="hilight">本地系统</span>帐号登录,这个帐号可以在系统中进行做任何操作!一旦 Serv-U 被攻破,黑客程序就可以同样以本地系统作为标识运行,如此则可几乎没有阻拦地进行任何操作。</p> <p>一款功能强大的软件,要做到没有漏洞几乎是不可能的。保持软件更新是一个基本手段;另外,还可以从<span class="hilight">源头</span>——进程标识——解决 Serv-U 权限提升的问题。默认情况下,Serv-U 创建的系统服务是以本地系统帐号登录的,只要我们把它改为权限较低的帐号,则可以避免一旦它被攻破时带来的安全风险。</p> <p>设置方法也比较简单,首先确认已经将 Serv-U 作为系统服务运行(在 Serv-U Administrator 中可以设置),然后进入管理工具 (Administrative Tools) > 服务 (Services),找到名为 "Serv-U FTP Server" 的服务,双击以打开服务属性 (Properties) 对话框,然后切换到"登录 (Log on)" 标签。这时会发现默认是以本地系统帐号运行,修改为网络服务帐号 (NT AUTHORITY\NetworkService), 并保持密码框为空(注意:网络服务帐号是系统内置的安全体,密码是随机生成且无需人工干预,不要尝试修改网络服务的密码,只需简单地在密码框留空即可)。然后点击“应用 (Apply)”按钮,切换到一个标签,重启服务。</p> <p>服务重启后,打开任务管理器 (Task Manager), 会发现此时运行 ServUDaemon.exe 的用户名是 Network Service.</p> <p>还没有完。默认情况下,网络服务帐号对 Serv-U 安装目录没有权限,需要为此目录手动添加网络服务的读写权限。同时,所有 Serv-U 用户读写的目录也需要添加读写权限。That's all!</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com2tag:blogger.com,1999:blog-3990865.post-78232797270856783462007-05-22T10:23:00.001+08:002007-05-22T10:25:32.498+08:00跳过维真台球 (Virtual Pool) 3 的插入光盘提示<p>经典的 3D 台球游戏<a href="http://www.google.com/search?q=Virtual+Pool">维真台球 (Virtual Pool) 3</a>,在安装后立即运行,可能会不停地要求你插入游戏光盘。此处使用 71.4M 的安装版本 (v3.0.7.7).</p> <p>经过跟踪,发现 <code>vp3.exe </code>在运行后,会查询安装目录 (通常是 <code>C:\Virtual Pool 3\</code>) 的 <code>.\0\movie\gameopen.mpg</code> 及 <code>.\0\movie\dm_logo.mpg</code> 两个文件,如果没找到,就会提示用户插入光盘。而这两个文件就在安装目录的 <code>.\movie\</code> 目录下。</p> <p>尝试在安装目录下创建新文件夹,名称为 "<code>0</code>", 然后将 <code>.\movie\</code> 目录移到 <code>.\0\</code> 目录中去,再次运行,将不再出现插入光盘的提示。</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com9tag:blogger.com,1999:blog-3990865.post-87205155430096359642007-04-24T15:24:00.001+08:002007-04-24T15:48:51.396+08:00用 Ad Muncher 清除 Google 点进跟踪<h4>导语</h4> <p>Click-trough, 即“点进”,表示用户根据显示的链接点击进去。点进次数和显示次数之比,就是通常所说的“点进率”。显然,“点进率”是衡量广告投放效果和搜索结果命中率的一个重要指标,因此被广告商和搜索引擎广泛使用。</p> <p>本文要说的不是如何提高点进率,而是如何“降低” Google 点进率。呵呵,为什么这么说呢?</p> <h4>起因</h4> <p>如果你在 Google 上搜索我的名字, janlay, 搜索结果第一条就是我的这个 blog, 它的链接是:</p><code class="para"><a href="<a href="http://janlay.com/"">http://janlay.com/"</a> target=_blank class=l onmousedown="return clk(this.href,'','','res','1','&amp;sig2=FYQtPTX40i0boVYycei_cw')">janlay&#39;s blog</a></code> <p>从上面可以看到,Google 记录“点进”动作不是通过常规的方式——先到服务器上去记录,然后转向到目标地址——而是让浏览器直接访问目标地址,同时通过 javascript 记录。这样做的好处至少有两点:</p> <ol> <li>记录“点进”的动作不易被觉察。点击搜索结果时不会发生异常现象,所以用户不会意识到这次点击已被记录;有些用户会有通过查看地址栏链接地址来检查 URL 可靠性的习惯,这里同样不会有什么不对的地方,因为 mousedown handler 是不会显示在地址栏上的。 <li>访问目标地址和记录动作异步进行,用户无需等待即可立即开始访问目标地址。</li></ol> <p>你是否已经发现问题了呢?Google 会在用户不知情的情况下记录你曾经搜索过的关键词,点击了哪一条搜索结果(目前无法验证 Google 是否将此记录与特定用户相关联)。用户隐私无法得到保障——人们不会相信这些统计信息不会用于商业目的。</p> <h4>解决之道</h4> <p>在“<a href="http://bbs.et8.net/bbs/showthread.php?t=836099">用 Ad Muncher 访问 Google 网页快照</a>”被研究出来之后,基本同样的替换方法,可以很容易地清除 Google 点进跟踪:</p> <p><img height="460" src="http://janlay.com/uploaded_images/remove-google-tracker.png"></p> <p>简单地说,就是将 <code>class=l onmousedown="return clk(*)"</code> 替换为 <code>class=l</code>. 应用规则之后,Google 所有搜索结果链接中的 onmousedown handler 将被删除。</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com12tag:blogger.com,1999:blog-3990865.post-49744303568977177232007-03-19T10:01:00.001+08:002007-03-19T10:09:35.312+08:00Skype 导致 IIS 发生 0x8ffe2740 错误<p>今天为了调试一个 ASP 应用程序,启动了 IIS 服务(平时为节省资源,此服务没有自动启动)。不料在 Internet Information Services 的 MMC 控制台,发现唯一的站点被打了个红叉。手动启动站点,IIS 立即报告错误:</p> <blockquote>Unexpected error 0x8ffe2740 occurred.</blockquote> <p>怎么回事?提示信息并未给出详细错误原因。打开 Event Viewer, System 目录有个 Source 为 W3SVC 的 115 错误事件,事件描述中提到:</p> <blockquote>The service could not bind instance 1. </blockquote> <p>看来是站点端口被其他进程占用了。运行 <code>netstat -an</code>, 果然 0.0.0.0:80 被占用,通过 <a href="http://www.microsoft.com/technet/sysinternals/">Sysinternals</a> 的 <a href="http://www.microsoft.com/technet/sysinternals/utilities/TcpView.mspx">TCPView</a> 小工具,发现 80 端口居然被 Skype 占用!真是晕,Skype 来凑这个热闹干嘛?</p> <p>进入 Skype 的 Options 查看,果然在 Connection 中有关于使用 80 和 443 端口的选项:</p> <blockquote>use port 80 and 443 as alternatives for incoming connections</blockquote> <p>呵呵,想必 Skype 默认这么做是为了更容易穿透防火墙。So, 简单地清除这个复选框,然后 restart Skype 就行了。</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com2tag:blogger.com,1999:blog-3990865.post-49642779657471287702007-03-14T13:55:00.001+08:002007-04-24T15:41:43.805+08:00如何在英文系统中打开中文CHM文档<p>如果你使用英文版 Windows 操作系统,经常会遇到的一个问题是,系统在打开某些中文 .chm 文档时会弹出错误对话框:</p> <p><img height="107" alt="cannot open chm file" src="http://janlay.com/uploaded_images/OpenCHMfilesuccessfullyinEnglishEnvironm_C3CF/cannotopenchmfile14.png" width="356"> </p> <p>通常建议的解决办法是:将 <em>Regional and Language Options</em> 中的 <em>Standards and formats</em> 设置为 <em>Chinese (PRC)</em>. 即通过将当前的区域环境设为简体中文。</p> <p>但是这样做会影响是全局性的——其他程序也将在简体中文的上下文环境中工作——这可能并不是你所希望的。现在,有另一个办法可以解决此问题(无需修改区域设置):<strong>简单地把 .chm 文档的文件名改成英文</strong>,而不是包含汉字的文件名。</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com5tag:blogger.com,1999:blog-3990865.post-85332947570805546372007-03-10T22:49:00.001+08:002007-04-24T15:38:07.597+08:00解决 MSN 登录失败问题 (错误代码 80048820)<h4>症状 (SYMPTOMS)</h4> <p>最近已经多次看到有人问为什么他的 Windows Live Messenger 无法登录(已经确保网络没有问题,系统时间也正确),返回错误代码为 0x80048820. <h4>原因 (CAUSE)</h4> <p>大多数情况下,出现这个问题的原因是在 MSN 使用 SSL 登录 Live Passport 时,某个站点的证书状态不正常,导致连接被阻塞 (blocked), 因而出现类似超时的错误。</p> <h4>解决办法 (SOLUTION)</h4> <p>打开 “Internet 选项” (Internet Properties) 对话框,切换到“高级” (Advanced) 选项卡,在“安全” (Security) 分类中,取消“检查服务器证书吊销”复选框 (Uncheck Check for server certificate revocation).</p> <h4>更多 (MORE)</h4> <p>取消这个选项可能带来潜在的安全风险,目前只能等待 Microsoft 发现并自行解决这个问题。</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com9tag:blogger.com,1999:blog-3990865.post-40246846509941316452007-02-13T14:25:00.001+08:002007-03-10T22:22:52.409+08:00Blogcn 没有用户体验可言<p>作为网站开发者,我一般不会轻易评价同行做出来的网站很烂。但对于 <a href="http://www.blogcn.com/">blogcn</a>, 我只能说,它带给我的体验很不爽。</p> <p>前两个月,我在上面打开某一篇日志(地址已经不记得了)时,发现无论怎么刷新,页面总是一片空白,浏览器状态栏也显示出 Done, 怎么回事呢?打开 source 一看,晕倒,连初学者都知道的 <code><html></code> 标签居然都看不到,有这么考验浏览器容错性的么?</p> <p>另一次网页空白事件,是因为指定简体中文编码的 <code><meta></code> 放在了 <code><title></code> 之后,而网站标题又有中文字符。这时,浏览器在读取数据流时,读到 <code><title></code> 处仍然不能判断出页面编码(Response header 中也未包含 charset 声明),于是,浏览器可能因不能正确识别页面编码而无法 parse HTML document. 这是一个很微小但可能引发严重后果(页面无法阅读)的问题,因此很多人都没注意到。解决办法很简单,把 <code><meta></code> 紧接着放在 <code><head></code> 之后 (确保指定编码的标签写在 <code><title></code> 前面
)即可。同样的问题在<a href="http://blog.tennis.com.cn/">网球博客</a>网站也出现过,他们根据我的办法立即排除了问题。我把这个问题及解决办法通过一个 blogcn 的朋友反馈给他们公司技术部,却未被采信……</p> <p>今天,我进 blogcn 的情侣博客,准备发一篇日志上去,结果提交后足足等一分半钟,结果返回说我没登录。再登录进去,却无法切换到情侣博客了——总是要我登录。汗,吸引了大笔风投的公司,程序员待遇应该不错吧,面对那么庞大的用户群(号称第一中文 BSP),连个会话超时问题也解决不了么?</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com13tag:blogger.com,1999:blog-3990865.post-90641702373932992552007-01-13T10:16:00.001+08:002007-01-13T12:50:23.795+08:00IT News Today (01/13): Total Commander 7.0 public beta 3<ul>
<li>Total Commander 7 public beta 3 is available (<a href="http://www.ghisler.com/whatsnew.htm">What's new</a>, <a href="http://www.ghisler.com/700beta.htm">download</a>)
<li><a href="http://jipiao.taobao.com/">淘宝推出电子客票</a>
<li>IE7pro 0.9.6 released (supports mouse gestures, <a href="http://dl.ie7pro.com/ie7prodl/IE7proSetup_096.exe">download</a>. Note: it does not work on the first tab.)
<li><a href="http://www.foxitsoftware.com/foxitreader/">Foxit Reader for Windows</a> 2.0 build 1312 (<a href="http://www.foxitsoftware.com/foxitreader/foxitreader.zip">Download</a>)
<li><a href="http://beta.maxthon.com/">Maxthon 2.0</a> Beta 3 released (<a href="http://beta.maxthon.com/changelog.htm">Changelog</a>, <a href="http://beta.maxthon.com/download.htm">download</a>)</li></ul>
<p>ps: 今日连接国外速度有较大提升:)</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com6tag:blogger.com,1999:blog-3990865.post-25995814082885544692007-01-12T10:48:00.001+08:002007-01-12T11:24:57.584+08:00IE外壳浏览器横向比较(二):正确获取收藏夹图标(favicon)<ul><li><a href="http://janlay.com/2006/12/ie.html">IE 外壳浏览器横向比较专题</a> <li><a href="http://janlay.com/2006/12/ie_21.html">1. 中键点击与引用页</a> <li>2. 正确获取收藏夹图标</li></ul><h4>第二篇:正确获取收藏夹图标(favicon)</h4><p>在本<a href="http://janlay.com/2006/12/ie.html">专题</a>的上一篇中,我谈到了四款 <a href="http://janlay.com/2006/12/ie_21.html">IE 外壳浏览器关于中键点击与引用页的比较</a>。这次,我要说的是,浏览器如何<span class="hilight">正确地获取</span>收藏夹图标 (favicon)。</p><p>favicon 是用于显示在浏览器地址栏和收藏夹中的图标,相信大家都不会陌生。印象中,国内网站较早启用 favicon 的是<a href="http://www.flashempire.com/">闪客帝国</a>,那个时候,一道金黄色的闪电让人耳目一新(现在换成了蓝色闪电<img height="16" alt="favicon of flashempire.com" src="http://www.flashempire.com/favicon.ico" width="16" align="absMiddle" />)。那个时候,它的制作“技巧”在网站设计和开发人员之间流传着:制作 DIY 一个 16 x 16 大小的 icon, 并确保它只有 16 色,然后把这个 .ico 图标文件放在网站根目录。</p><p>毫无疑问,favicon 是一个用于展示网站形象的不错载体。但是,随着网站的发展,仅仅在网站根目录放一个图标文件已经不能满足需求——一个大型网站可能会有多个不同的频道,比如 <a href="http://www.blogcn.com">blogcn</a>,它们之间表达的主题也不尽相同。都用同一个 favicon 难以表达各自的主题。于是,一种 link 标签应运而生。它的写法是:
<code><link rel="shortcut icon" href="ICON_URL"></code>
这样, 可以使同一网站不同页面呈现不同的 favicon.</p><p>说到这里,就要进入今天的正题了。如果浏览器能同时查找根目录下的 favicon.ico 文件和上面 <code><link></code> 指定的 icon URL, 且 <code><link></code> 具有更高优先级,则该浏览器能正确地获取 favicon.</p><p>这里做一个简单的测试:将专题中提及的四款浏览器打开两个 tab, 分别访问如下两个网址:
Microsoft Corporation Homepage: <a title="http://www.microsoft.com/en/us/default.aspx" href="http://www.microsoft.com/en/us/default.aspx">www.microsoft.com/en/us/default.aspx</a>
Microsoft Expression Homepage: <a title="http://www.microsoft.com/products/expression/en/default.mspx" href="http://www.microsoft.com/products/expression/en/default.mspx">www.microsoft.com/products/expression/en/default.mspx</a></p><p>由于各浏览器加载 favicon 策略不同,我们等页面全部加载完成后,再观察它们在 tab 上显示的图标。如果分别显示成 <img height="16" alt="favicon of microsoft corporation" src="http://www.microsoft.com/favicon.ico" width="16" align="absMiddle" /> 和 <img height="16" alt="favicon of microsoft expression" src="http://www.microsoft.com/products/expression/en/favicon.ico" width="16" align="absMiddle" />, 则说明该浏览器能正确获取 favicon, 如果都显示成 <img height="16" alt="favicon of microsoft corporation" src="http://www.microsoft.com/favicon.ico" width="16" align="absMiddle" />, 则表明它没能正确获取。</p><h4>测试结果</h4><p>在参与比较的 4 款浏览器软件中,能正确获取 favicon 的只有 IE, 其它 3 款浏览器只是“傻傻”地尝试获取 /favicon.ico.</p><p>ps: <a href="http://forum.maxthon.com/index.php?showtopic=45424">此问题我曾经在 Maxthon 官方论坛反映过</a>,但他们并未在 2.x 版本中做出改进。</p><p>附注:本文所说的收藏夹图标严格来说,是“<strong>地址栏图标</strong>”,有一个 <code><link></code> 标签专门用来指定<strong>收藏夹图标</strong>:
<code><link rel="Bookmark" href="favicon.ico"></code>
事实上它并未引起重视,本文不考虑对它的正确处理问题。</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com7tag:blogger.com,1999:blog-3990865.post-6863034155117950982007-01-10T14:00:00.001+08:002007-01-12T11:43:45.819+08:00IT News Today (01/10): Apple iPhone<ul><li><a href="http://www.apple.com/iphone/phone/">Apple iPhone</a> 发布,苹果也做手机了 <li>Microsoft 发布 <a href="http://www.microsoft.com/athome/security/update/bulletins/200701.mspx">一月安全更新</a> <li><a href="http://blogs.msdn.com/ie/archive/2007/01/09/ie-developer-toolbar-beta-3-now-available.aspx">IE Developer Toolbar Beta 3</a> 发布 (<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&displaylang=en">下载</a>,需在安装前卸载旧版,否则不能正常工作) <li><a href="http://www.7-zip.org/">7-Zip</a> 4.44 Alpha 2 (<a href="http://www.7-zip.org/alpha/7z444a2.exe">下载</a>)</li></ul>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com5tag:blogger.com,1999:blog-3990865.post-15774055875788502732007-01-08T10:08:00.001+08:002007-01-08T10:50:46.890+08:00域名知识普及:关于 Blogger 开始支持自定义域名<p>Blogger Buzz 博客网站发布了<a href="http://buzz.blogger.com/2007/01/blogger-custom-domains.html">这个消息</a>,并发布了一篇详细的<a href="http://help.blogger.com/bin/answer.py?answer=55373">帮助文档 (English)</a>,月光博客<a href="http://www.williamlong.info/archives/749.html">翻译了这篇文章</a>并介绍了相关注意事项。我来补充一下相关内容。</p> <ol> <li>Blogger 要求你将自己域名的某个主机的 CNAME 指向到 <code>ghs.google.com</code>. 有些域名服务商可能对其写法有固定的格式,要写成 <span class="hilight"><code>ghs.google.com. </code></span>(结尾有一个点号) , 事实上,这是该域名的完整路径。 </li><li>域名解析设置好了后,如果你可以立即访问,并不代表别人也可以继续访问——各地的解析时间不一样。一般来说, 3 天内各地都可以正常访问。 </li><li>大家可能比较关心这个<span class="hilight">会不会被 GFW block?</span> 月光博客在翻译 (地址在上文) 中说,<code>ghs.google.com</code> 目前是个固定 IP, 只要这个 IP 被“墙了”,所有使用自定义域名服务的 blog 网站都会被“墙了”。这个说法是不确切的。Google之所以让用户指用 CNAME, 而不是 A 记录,显然它深知其中的奥妙——CNAME相当于转发,Google 可以自由控制 <code>ghs.google.com</code> 的指向,而 A 记录则限定了指向。这也是 CNAME 和 A 记录的本质区别。如果未来有一天,<code>ghs.google.com</code> 的 IP 被“墙了”,Google 会迅速更换到其他 IP 上去。呵呵,狡免三窟,Google 搜索网站有多个 IP 就是最好的例子。那么,这是不是就意味着没有后顾之忧呢?非也。万能的 GFW 可以直接从访问最开始的地方—— DNS 解析处—— block 对 <code>ghs.google.com</code> 的解析请求,甚至直接阻止对 IP 的访问 (出现一个, block 一个). 如此,则和谐矣!</li></ol> <p>鉴于<a href="http://it.people.com.cn/GB/1068/5241993.html">光缆事件</a>造成的影响尚未结束,建议暂时不要使用自定义域名服务,除非你希望以龟速访问你的 blog. 本次科普到此结束。</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com2tag:blogger.com,1999:blog-3990865.post-90585593116047885282007-01-04T13:03:00.001+08:002007-01-04T13:14:12.464+08:00每月捐赠1元钱,支持李连杰壹基金计划<p>这个<a href="http://www.tudou.com/programs/view.php?fromPlayer=1&itemID=3657137">计划</a>随着<a href="http://www.google.com/search?q=%E6%BB%A1%E5%9F%8E%E5%B0%BD%E6%98%AF">《满城尽是D罩杯》</a>首映仪式而广为传播。从现在起,每月用手机<span class="hilight">发 1 至 999309</span>,就可为李连杰壹基金计划添砖加瓦。发送 2 即可捐赠两元,发送 5 可捐赠 5 元。</p> <p>这是一个慈善活动,你的捐助会被送到需要关怀的人那里去;信任它,不要让<a href="http://www.google.com/search?q=%E6%97%A0%E8%89%AF+SP">无良 SP</a> 泯灭你的爱心。</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com4tag:blogger.com,1999:blog-3990865.post-13395748771231001312006-12-31T13:55:00.001+08:002007-01-01T09:07:44.173+08:00影评:空战英豪 (The Flyboys)<p>今天是本年度最后一天,如果今天的 blog 不说上这么一句,似乎有些说不过去 :-p。想想以后写日期的时候就要用 2007 了,也许以后很长一段时间都不会写 2006 这 4 个数字,不免唏嘘……</p><p>我喜欢看两类战争片,一类是潜艇题材的,另一类是空战题材的。一个发生在氧气至关重要的高压环境中,一个冲上了云霄却仍然受到危险的万有引力的作用。呵呵,有意思么:)</p><p>今天要说的是<a href="http://www.imdb.com/title/tt0357668/">空战英豪 (The Flyboys)</a>,上一次看空战题材的片子已经是一年多之前了。当时看的是<a href="http://www.imdb.com/title/tt0338751/">飞行者 (The Aviator)</a>, 那部片子完全改变了我对 <a href="http://www.imdb.com/name/nm0000138/">Leonardo DiCaprio</a> 的印象,他的演技很出色。马上就要观看<a href="http://www.imdb.com/title/tt0450259/">血钻 (Blood Diamond)</a>, 期待他能有更精彩的表现:)</p><p>还是回到主题。The Flyboys 在 IMDB 上平均得分是 7.8 分(见上文链接),人数不够多,得分不足以反映真实情况。如果我来打分的话,我会给 6.8 分:)</p><p>影片的<a href="http://ent.sina.com.cn/m/2006-09-27/11371265314.html">剧情</a>我就不再 ICP (Internet Copy & Paste) 了,网上很多。唯一印象比较深刻的是,空战英豪有几处似曾相识。回忆一下,没错,<a href="http://www.imdb.com/title/tt0213149/">珍珠港 (Pearl Harbor)</a>! 下面列举我发现的几处雷同情节。</p><ol><li><u>Jason 驾驶战机,带着他心爱的姑娘鸟瞰大地</u>, vs <u>珍珠港中 Danny 驾机带着 Evelyn 去看云海奇观</u>。<span style="color:#0080ff;">评价:显然后者在艺术上更胜一筹。</span> <li><u>驾驶“小鹰号”战机的那位大哥牺牲前撞上敌机(敌舰?)</u>,vs <u>珍珠港中日本“神风”队员中弹后冲向地面上的停着的美军战机</u>。<span style="color:#0080ff;">评价:分别是正反面的舍生取义,前者电脑特技略有不实之感。</span> <li><u>驾驶“双刀号”的大反派在被 Jason 追击时使了一招行飞技巧:持续低空飞行,在快撞上建筑物时突然上升,意在使追赶者躲避不及撞上建筑物</u>, vs <u>珍珠港中众飞行员通力合作引诱日本战机撞上高塔</u>。<span style="color:#0080ff;">评价:前者通篇强调个人英雄主义,后者着墨于美军团队协作,后者在视觉上更具冲击力。</span></li></ol><p>综述:空战英豪中的男女爱情部分和墨攻一样,基本上是画蛇添足,但是主题还是比较突出的;艺术成就虽然不及珍珠港,可还是值得一看的。</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com12tag:blogger.com,1999:blog-3990865.post-30478719111765595932006-12-29T15:53:00.001+08:002007-01-01T09:05:31.537+08:00严重谴责杭州电信、网通宽带联合涨价的无耻行径<p>两家宽带接入服务商在未向用户作出任何解释的情况下,悍然宣布从明年起宽带“执行新的<span class="hilight">优惠资费</span>”:
杭州电信: <a href="http://www.hz.zj.cn/dxgg/dxgg86.html">http://www.hz.zj.cn/dxgg/dxgg86.html</a>
杭州网通: <a href="http://www.hzcnc.com/ad/200612_zftz/index.htm">http://www.hzcnc.com/ad/200612_zftz/index.htm</a>
其中,杭州电信 1M ADSL <span class="hilight">上涨 200 元,涨幅超过 25%</span>.</p><p>两家服务商都允许老用户在 2007/1/16 前,按原来的资费标准续费,显示它们希望用户在年前主动续费。原来年末捞一票的办法,不仅可以抢银行,还可以设期限涨价。</p><p>两家平日里水火不容的竞争对手,而今在涨价问题上,所选择的<span class="hilight">涨价时机、价位、“优惠”续费终止时间那是相当的默契</span>。</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com3tag:blogger.com,1999:blog-3990865.post-33949566006932563232006-12-26T14:43:00.001+08:002007-01-01T09:01:49.991+08:00“同步”和“异步” (Sync and async)<p>在日常生活中,我们经常听到说“两件事同步进行”,意思是说,这两件事同时进行,这里强调的是同时、独立的概念。</p><p>在程序开发过程中,也会遇到“线程同步” (Thread Synchronization) 这种说法,是说防止两线程争用同一个共享资源,线程对共享资源的使用有先后之分。而另一种说法——“线程异步”——是说两线程同时运行,其中一个往往会在结束后以“异步回调” (Asynchronous Callback) 的方式通知宿主线程。</p><p>发现问题了吗?程序开发中的“同步”和日常生活中的“同步”,表达的概念相反,而“异步”则与日常生活中的“同步”相近。也许你会认为这是当初翻译时用词的问题,但事实上这是英语的问题,synchronize 本身就有“同进发生”的意思。synchronization 作为一个技术名词,含义发生了变化,强调一致性 (Babylon English-Simplified-Chinese dictionary). 巧合的是,即使有变化,仍然能继续用“同步”也能表达其意义,我的理解是“在同一基准上的步骤” :-p</p><p>语言是个奇妙的东西,不是么?</p>x涂料http://www.blogger.com/profile/11895648910032465228noreply@blogger.com0