<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>tag:blogger.com,1999:blog-18923002</id><updated>2009-07-02T20:15:48.447+08:00</updated><title type="text">月蝎研究</title><subtitle type="html">Gregory Song 的有关 IT 技术的博客。内容涉及 WEB、Java、Google、Blogger、J2ME 等手机相关技术。Gregory Song，80 后，白羊座，IT 从业者，清瘦。</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://feedtech.windia.net" /><link rel="alternate" type="text/html" href="http://blog.windia.net/tech/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default?start-index=16&amp;max-results=15&amp;orderby=published" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>15</openSearch:itemsPerPage><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-nd/2.0/" /><link rel="self" href="http://feeds.feedburner.com/gregtech" type="application/atom+xml" /><feedburner:emailServiceId>gregtech</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry><id>tag:blogger.com,1999:blog-18923002.post-1761748597802968723</id><published>2009-07-01T13:07:00.002+08:00</published><updated>2009-07-02T13:38:51.364+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="博客维护" /><category scheme="http://www.blogger.com/atom/ns#" term="HTML" /><title type="text">&lt;Blogger&gt; 模板标签生成奇怪 Javascript</title><content type="html">昨天由于有新的评论，有一篇帖子的页面被重新生成，然后页面就出现了一些奇怪的问题。仔细查看源代码后，发现在生成页面的时候，模板里面所有的 &amp;lt;/Blogger&amp;gt; 标签的画面，都被加上了一段奇怪的 JavaScript 代码：&lt;blockquote&gt;&lt;div&gt;&lt;code&gt;&amp;lt;script type="text/javascript" src="http://www.blogger.com/static/v1/common/js/327583163-csitaillib.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script&amp;gt;if (typeof(window.attachCsiOnload) != 'undefined' &amp;&amp; window.attachCsiOnload != null) { window.attachCsiOnload('ext_blogspot'); }&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;重新发布了几次仍然是这样，因此推测可能是 Blogger 做了更新。在 Google 上搜索了一下，发现很多 Classic Template 的使用者都发现了相同的问题，并且报告在 &lt;a href="http://www.google.com/support/forum/p/blogger?hl=en" rel="external"&gt;Blogger 的 Google Groups 帮助讨论组&lt;/a&gt;，如&lt;a href="http://www.google.com/support/forum/p/blogger/thread?fid=08b42c131603d6c200046dac6940711b&amp;hl=en"&gt;这篇帖子&lt;/a&gt;，还有&lt;a href="http://www.google.com/support/forum/p/blogger/thread?tid=5a2a56deb55a6ee0&amp;hl=en" rel="external"&gt;这里&lt;/a&gt;，以及&lt;a href="http://www.google.com/support/forum/p/blogger/thread?tid=36c362c289aa5724&amp;hl=en" rel="external"&gt;这里&lt;/a&gt;。虽然有很多网友提出了各种临时的解决办法，但看起来都不尽如人意。&lt;br /&gt;&lt;br /&gt;个人认为 Blogger 这个新的功能添加得不够专业。先且不论是什么功能，光是直接在&amp;lt;/Blogger&amp;gt; 标签后加入 &amp;lt;Script&amp;gt; 就不可取，因为 &lt;code&gt;Blogger&lt;/code&gt; 这一对标签里面包括和帖子相关的数据，页面上凡是需要帖子标题、ID、时间等相关信息的地方都会用到这一对标签，它可能出现在标题、正文甚至其它的 JavaScript 中（例如我就需要通过这对标签取得帖子的 ID 并作为参数传给 JavaScript 函数）。&lt;br /&gt;&lt;br /&gt;目前暂时通过人工编辑 HTML 去掉了相关的 Script，如果近期 Blogger 不能解决这个问题的话，就只有另外写 PHP 程序来自动处理了。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update July. 2, 2009:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;在&lt;a href="http://www.google.com/support/forum/p/blogger/thread?fid=08b42c131603d6c200046dac6940711b&amp;hl=en" rel="external"&gt;这篇帖子&lt;/a&gt;中一位来自 The Blogger Team 的用户提到，这的确是他们发现的一个 bug，将很快被修复。让我们拭目以待吧……&lt;div class="blogger-post-footer"&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-178540-3";
urchinTracker();
&lt;/script&gt;
&lt;div id="sc_image" style="display:inline;"&gt;&lt;a title="site stats" class="statcounter" href="http://www.statcounter.com/"&gt;&lt;img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-1761748597802968723?l=blog.windia.net%2Ftech%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gregtech/~4/ia6gN_LP3uY" height="1" width="1"/&gt;</content><link rel="related" href="http://www.google.com/support/forum/p/blogger/thread?fid=08b42c131603d6c200046dac6940711b&amp;hl=en" title="&amp;lt;Blogger&amp;gt; 模板标签生成奇怪 Javascript" /><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/1761748597802968723/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18923002&amp;postID=1761748597802968723" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/1761748597802968723" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/1761748597802968723" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gregtech/~3/ia6gN_LP3uY/tag-generates-strange-javascript.html" title="&amp;lt;Blogger&amp;gt; 模板标签生成奇怪 Javascript" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="03896665549430566016" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://blog.windia.net/tech/2009/07/tag-generates-strange-javascript.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-18923002.post-177570432883061984</id><published>2009-06-19T19:02:00.000+08:00</published><updated>2009-06-19T19:02:46.448+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Web" /><category scheme="http://www.blogger.com/atom/ns#" term="BloggerHack" /><category scheme="http://www.blogger.com/atom/ns#" term="Blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="HTTP" /><title type="text">GFW 开始识别 WEB 代理</title><content type="html">之前提到&lt;a href="http://blog.windia.net/tech/2009/05/comment-function-fixed.html"&gt;用 HTTP 中转的办法解决了评论的问题&lt;/a&gt;，今天发现 Blog 上所有的评论又失效了…… 开始以为是因为页面直接引用了 www.blogger.com 域名的某些内容而导致撞墙，但仔细分析后发现，我的 HTTP 中转直接不能访问了，而且之后我的 HTTP 中转程序所在的域名也会在一小段时间内无法访问…… 但同时，用该中转能够访问原本没有被封的内容，比如 Flickr……&lt;br /&gt;&lt;br /&gt;考虑到传入的目标 URL 参数是用 Base64 和 URL Encode 方式处理的，不存在任何加密，而且这和大多数的　WEB 代理相同，所以推测是现在 GFW 能够识别用 Base64 编码的内容，如果该内容刚好是被屏蔽的网址，则阻拦该 HTTP 请求，并且屏蔽该请求所在的域…… 从而让公众无法通过 WEB 代理访问屏蔽内容。&lt;br /&gt;&lt;br /&gt;当然，解决的办法也简单，如果不能简单通过 Base64 decode 得到一个 URL，那么它也就无从判断是不是被屏蔽的网址了……&lt;br /&gt;&lt;br /&gt;我起先想直接把原网址按位取反再 Base64 就行了，结果同事说我作为一个 IT 人士这么干太低级了…… 他们说用 RSA 吧，但是也犯不着这么兴师动众吧…… &lt;br /&gt;&lt;br /&gt;还是 Liuming 小弟比较聪明，提供了一个比按位取反高级，又比 RSA 简单的办法，那就是…… &lt;br /&gt;&lt;br /&gt;两次 Base64…… &gt;.&lt;"&lt;div class="blogger-post-footer"&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-178540-3";
urchinTracker();
&lt;/script&gt;
&lt;div id="sc_image" style="display:inline;"&gt;&lt;a title="site stats" class="statcounter" href="http://www.statcounter.com/"&gt;&lt;img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-177570432883061984?l=blog.windia.net%2Ftech%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gregtech/~4/97C8X0_MAcE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/177570432883061984/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18923002&amp;postID=177570432883061984" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/177570432883061984" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/177570432883061984" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gregtech/~3/97C8X0_MAcE/gfw-web.html" title="GFW 开始识别 WEB 代理" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="03896665549430566016" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://blog.windia.net/tech/2009/06/gfw-web.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-18923002.post-7723067758247982104</id><published>2009-06-04T11:01:00.003+08:00</published><updated>2009-06-04T11:10:22.606+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bing" /><category scheme="http://www.blogger.com/atom/ns#" term="Webmaster" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><title type="text">Google 邮箱收到 Bing 发来的邮件</title><content type="html">今天早上 Google 邮箱收到 Bing 发来的题为“Discover Microsoft's new Search services”的邮件，声称微软发布了新的搜索引擎服务，并提供了新的 webmaster 工具 &lt;a href="http://www.bing.com/webmaster" rel="external"&gt;www.bing.com/webmaster&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;然而，由于众所周知的原因，Bing 在当下无法访问，微软在这个时候让 Bing 上线原本已经不合时宜，现在又在这个把邀请邮件发到 Google 邮箱，提供一个无法访问的链接，实在是为微软感到可惜。&lt;br /&gt;&lt;br /&gt;既然如此有诚意，还是用代理打开来看看吧。从界面和内容上看，与微软先前的 &lt;a href="http://blog.windia.net/tech/2008/10/live-search-sitemap.html"&gt;Live Search Webmaster Center&lt;/a&gt; 如出一辙，加上里头已经有了我两个 Blog 的 Sitemap 信息，可以看出这个 Bing 就是从先前的 Live Search 改头换面升级而来。这大概也是为什么 Bing 上线第一天就能够搜到“&lt;a href="http://www.bing.com/search?q=%E6%9C%88%E8%9D%8E%E7%A0%94%E7%A9%B6&amp;go=&amp;form=QBLH" rel="external"&gt;月蝎研究&lt;/a&gt;”和我的另一个 Blog “&lt;a href="http://www.bing.com/search?q=%E4%BB%8A%E6%97%A5%E6%97%A0%E5%A4%A7%E4%BA%8B&amp;go=&amp;form=QBRE" rel="external"&gt;今日无大事&lt;/a&gt;”。&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://blog.windia.net/tech/imgs/article/2009-06-04/bing-webmaster-center.jpg"&gt;&lt;img src="http://blog.windia.net/tech/imgs/article/2009-06-04/bing-webmaster-center_thumb.jpg" width="600" height="421" alt="Bing Webmaster Center"/&gt;&lt;br /&gt;微软新推出的 Bing Webmaster 工具&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;开始以为微软的邮件发到 Google 邮箱是为了故意挖取 &lt;a href="http://www.google.com/webmaster" rel="external"&gt;Google Webmaster Tools&lt;/a&gt; 的用户，但后来发现由于 Bing 就是原来的 Live Search，而早先我已将自己的 Google 邮箱登记为 Live Search Webmaster Center 的联系邮箱，所以这次是我自己以小人之心度君子之腹了。&lt;br /&gt;&lt;br /&gt;另外，微软的邮件中，还提到了 Bing 搜索引擎相关的 API &lt;a href="http://www.bing.com/developers" rel="external"&gt;www.bing.com/developers&lt;/a&gt; 以及提供支持的讨论社区 &lt;a href="http://www.bing.com/community" rel="external"&gt;www.bing.com/community&lt;/a&gt;，有兴趣可以看一下。&lt;div class="blogger-post-footer"&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-178540-3";
urchinTracker();
&lt;/script&gt;
&lt;div id="sc_image" style="display:inline;"&gt;&lt;a title="site stats" class="statcounter" href="http://www.statcounter.com/"&gt;&lt;img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-7723067758247982104?l=blog.windia.net%2Ftech%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gregtech/~4/FIOWGEJBOh8" height="1" width="1"/&gt;</content><link rel="related" href="http://www.bing.com/webmaster" title="Google 邮箱收到 Bing 发来的邮件" /><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/7723067758247982104/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18923002&amp;postID=7723067758247982104" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/7723067758247982104" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/7723067758247982104" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gregtech/~3/FIOWGEJBOh8/email-received-from-bing-webmaster.html" title="Google 邮箱收到 Bing 发来的邮件" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="03896665549430566016" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.windia.net/tech/2009/06/email-received-from-bing-webmaster.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-18923002.post-695795155083416653</id><published>2009-06-03T10:28:00.002+08:00</published><updated>2009-06-08T15:40:49.707+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bing" /><category scheme="http://www.blogger.com/atom/ns#" term="Blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="Flickr" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><title type="text">某墙疯了</title><content type="html">那墙一定是疯了…… Blogger 被封这个倒也在预料之中，毕竟这是常有的事，封着封着咱就麻木了。可是昨天开始 twitter.com、live.com、bing.com 都不能访问了，就连好不容易解封的 flickr.com 也在其列，直接导致我的 Blog 上的照片全是红叉叉…… &lt;br /&gt;&lt;br /&gt;可怜那 bing.com，前天中央电视台新闻还在大张旗鼓的给它做宣传，昨天刚上线一天，我想这两天人们应该是蜂拥而至来看一下微软这新一代和 Google 叫板的搜索引擎，正是保证稳定性争取良好公众印象的时候，结果就被封了。等过几个月解封的时候，不知道还有多少人记得 bing.com，也不知道中央电视台会不会配合微软再做一次新闻？&lt;br /&gt;&lt;br /&gt;还有 flickr，害我不得不写程序把所有页面里的照片网址找出来，用 HTTP 代理的地址替换掉，才能保证网页上不是满目疮痍。不过也认了，反正不封从电信访问也爆满，早该改成这样了……&lt;br /&gt;&lt;br /&gt;另外，昨天 home.live.com 也不能访问，但今天又恢复了，不知道是微软公关的效果还是刚好这个部分临时故障。home.live.com 这个微软基于 Live 的社交网络社区可以通过 Feed 和插件把 FaceBook、WordPress、Twitter、Flickr 等知名服务以及自己 Blog 的发布消息全部整合到一起，还是有点意思的……&lt;br /&gt;&lt;br /&gt;墙疯了，网封了……&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 2009/06/08 15:30:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;从成都网通访问来看，Flickr 和 Bing 都已经解封了。据 Twitter 上有人说 Twitter 也解封了，但是我自己试了一下还是不行。&lt;br /&gt;&lt;br /&gt;另 Blogger 和 Blogspot 仍然无法访问。&lt;div class="blogger-post-footer"&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-178540-3";
urchinTracker();
&lt;/script&gt;
&lt;div id="sc_image" style="display:inline;"&gt;&lt;a title="site stats" class="statcounter" href="http://www.statcounter.com/"&gt;&lt;img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-695795155083416653?l=blog.windia.net%2Ftech%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gregtech/~4/m2-TSLVqQkU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/695795155083416653/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18923002&amp;postID=695795155083416653" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/695795155083416653" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/695795155083416653" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gregtech/~3/m2-TSLVqQkU/wall-is-insane.html" title="某墙疯了" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="03896665549430566016" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.windia.net/tech/2009/06/wall-is-insane.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-18923002.post-6480708654348392732</id><published>2009-05-26T18:47:00.003+08:00</published><updated>2009-05-26T18:50:10.644+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><category scheme="http://www.blogger.com/atom/ns#" term="Blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="HTTP" /><category scheme="http://www.blogger.com/atom/ns#" term="AJAX" /><category scheme="http://www.blogger.com/atom/ns#" term="博客维护" /><category scheme="http://www.blogger.com/atom/ns#" term="CSS" /><category scheme="http://www.blogger.com/atom/ns#" term="Feed" /><title type="text">评论功能修复</title><content type="html">刚刚发现 Blog 的评论功能不能用了，提交后一直显示等待。查了一下，发现是 GFW 的问题。&lt;br /&gt;&lt;br /&gt;自 5 月 16 日，Blogger 及托管站 BlogSpot 再次被封，导致域名 blogger.com 以及 blogspot.com 全部无法访问。而我的评论系统，是靠通过 &lt;a href="http://blog.windia.net/tech/2006/11/feeds-of-blogger-beta.html"&gt;Blogger 的 Feed 地址&lt;/a&gt;，由 AJAX 和 Blogger 之间通讯实现读取；由 AJAX 直接向 Blogger 的评论表单处理 URL 发送 POST 请求实现提交。这两项功能都是基于 www.blogger.com 域名的。前者所用的 Feed 地址由于先前早已被封，并通过朋友在 DreamHost 的主机上放了一个 PHP 的中转程序，所以&lt;a href="http://blog.windia.net/2008/08/blog-post.html"&gt;评论列表功能&lt;/a&gt;一直可以用，但是评论提交是直接 POST 的，www.blogger.com 被封，所以评论自然就失败了。&lt;br /&gt;&lt;br /&gt;没办法，刚刚改进了一下我的 HTTP 中转程序，实现了 POST 的功能，现在评论功能已经修复了。只是整个数据流程要经历“本地网页 &amp;raquo; blog.windia.net &amp;raquo; DreamHost &amp;raquo; www.blogger.com &amp;raquo; DreamHost &amp;raquo; blog.windia.net &amp;raquo; 本地”这样漫长的路径，因此提交评论可能需要数十秒的时间，但聊胜于无吧。希望 GFW 早日放过 Blogger，这样功能就能完全恢复正常了。&lt;br /&gt;&lt;br /&gt;另外，修改了一下模板，把 blogger.com 上引用的 CSS 以及 JS 文件的地址都改由 DreamHost 上的 HTTP 中转读取，这样在打开 Blog 页面时，浏览器不用再等待这些文件的 HTTP 请求超时，速度应该能快不少。&lt;div class="blogger-post-footer"&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-178540-3";
urchinTracker();
&lt;/script&gt;
&lt;div id="sc_image" style="display:inline;"&gt;&lt;a title="site stats" class="statcounter" href="http://www.statcounter.com/"&gt;&lt;img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-6480708654348392732?l=blog.windia.net%2Ftech%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gregtech/~4/o8ogqa4ujmA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/6480708654348392732/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18923002&amp;postID=6480708654348392732" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/6480708654348392732" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/6480708654348392732" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gregtech/~3/o8ogqa4ujmA/comment-function-fixed.html" title="评论功能修复" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="03896665549430566016" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://blog.windia.net/tech/2009/05/comment-function-fixed.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-18923002.post-6288883922233506310</id><published>2009-04-27T22:32:00.001+08:00</published><updated>2009-04-27T22:32:59.943+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Outlook" /><category scheme="http://www.blogger.com/atom/ns#" term="知识库" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><title type="text">收缩 Outlook 的 OST / PST 数据文件</title><content type="html">今天发现 Outlook 里一年多的邮件都没有存档了，数据文件 outlook.ost 已经涨到了 500 多兆，于是执行了一下存档操作。存档的 .pst 数据文件一下子多出了 300 多兆，但奇怪的是原来的 outlook.ost 文件却没有减少。&lt;br /&gt;&lt;br /&gt;搜索了一下，找到了有关的信息。OST / PST 文件是 Outlook 的数据文件，随着收到新的邮件和保存旧的邮件，这些文件会越来越大，当永久删除邮件和其它内容时，空间就会被空出来，直到收到新的邮件，这些空间就又被分配使用。处于安全的考虑，这些空余的空间不会立即被释放。当空余的空间占到文件总量 20% 以上以后，Outlook 会自动在系统空闲的时候执行收缩操作。所以在我执行存档操作以后，原来的 outlook.ost 文件没有立即缩小。&lt;br /&gt;&lt;br /&gt;如果要手动执行收缩操作，可以如下图提示操作：右键单击要收缩的数据文件对应文件夹的根目录，选择“Properties” &amp;raquo; 点击“Advanced...”按钮 &amp;raquo; 选择“Advanced”标签 &amp;raquo; 点击“Offline Folder File Settings...”按钮 &amp;raquo; 点击“Compact Now”&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://blog.windia.net/tech/imgs/article/2009-04-27/outlook_ost_shrink.jpg" width="552" height="573" alt="收缩 Outlook OST 文件"/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-178540-3";
urchinTracker();
&lt;/script&gt;
&lt;div id="sc_image" style="display:inline;"&gt;&lt;a title="site stats" class="statcounter" href="http://www.statcounter.com/"&gt;&lt;img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-6288883922233506310?l=blog.windia.net%2Ftech%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gregtech/~4/Rx66QiaUokw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/6288883922233506310/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18923002&amp;postID=6288883922233506310" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/6288883922233506310" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/6288883922233506310" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gregtech/~3/Rx66QiaUokw/shrink-ost-pst-files-of-outlook.html" title="收缩 Outlook 的 OST / PST 数据文件" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="03896665549430566016" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.windia.net/tech/2009/04/shrink-ost-pst-files-of-outlook.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-18923002.post-5975036904104604336</id><published>2009-04-22T13:59:00.001+08:00</published><updated>2009-04-22T13:59:45.039+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="字体" /><category scheme="http://www.blogger.com/atom/ns#" term="知识库" /><title type="text">[转]小姜杂谈：浅论英文字体</title><content type="html">&lt;div class="lower"&gt;在&lt;a href="http://cn.engadget.com/2009/04/22/on-english-fonts/" rel="external"&gt;瘾科技&lt;/a&gt;上看到这篇文章，虽然寥寥几句，但是把字体的基本结构讲得非常清楚，因此特地摘录下来。另外由于原文可能是港台繁体中文的，用词和大陆简体中文不太一样，因此做了一些转换。&lt;/div&gt;&lt;br /&gt;英文字体？反正就是在 Arial 和 Times New Roman 之间选一个嘛，偶尔想俏皮一点的话，就拿 Comic Sans MS 出来就好了，哪有什么值得写一篇文章的？小姜完全不是这方面的专家，但收集各种字体也算是小姜一个小小的爱好，所以多年来也学到了不少东西。虽然大家用到英文的机会不大，但其实英文字体里好玩的东西还不少呢！让小姜带大家一起来看看吧……&lt;b&gt;每个字体都有五条线……&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://blog.windia.net/tech/imgs/article/2009-04-22/font-1.jpg" width="445" height="152" alt="字体的五条线 / Fine lines of a font"/&gt;&lt;/div&gt;&lt;br /&gt;这五条线，决定个一个字体的性格。Mean line 和 Base line 之间的距离叫做“x-height”，这个高度是一个字体中的英文字母 x 的高度，也是没有向上、向下伸展的部份的小写字的主体高度。Base line 向下有一条 Decender line，是 g, j 之类有向下伸展的笔画的字母延伸的极限。反之，向上延伸的部份，包括 f, b 的字母向上延伸的笔画和 i, j 的点的极限，则称为 Ascender line。最后还有一条 Cap line 是大写字母向上延伸的极限，在许多字体中（像上面的 Times New Roman 就是）Cap line 的高度会略低于 ascender line，但也有一样高的。Mean line 和 Ascender line 之间的距离叫“Ascender”，Base line 和 Decender line 之间的距离叫“Decender”，Base line 和 Cap line 之间的距离叫“Cap height”，而 Ascender line 和 Decender line 之间的距离则叫做这个字体的“Point size”，也就是我们在选字号的时候说的几 pt。&lt;br /&gt;&lt;br /&gt;为什么说这五条线决定字体的性格呢？通常 x-height 占 point size 比例愈高的字体，放在内文里的时候看得比较清楚，但放在标题就很难看。反之，x-height 占 point size 比例小的字，就比较适合当标题。以下面这个例子，小姜找了两种类似的字体，但左边是设计来当标题用的（Garamond），而右边则是做内文用的（Times New Roman）。注意到 x-height 的分别了吗？&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://blog.windia.net/tech/imgs/article/2009-04-22/font-2.jpg" width="600" height="152" alt="Garamond V.S. Times New Roman"/&gt;&lt;/div&gt;&lt;br /&gt;应用在真实世界，会变成这样：&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://blog.windia.net/tech/imgs/article/2009-04-22/font-3.jpg" width="600" height="400" alt="Garamond V.S. Times New Roman"/&gt;&lt;/div&gt;&lt;br /&gt;有注意到下面的一组字看起来比较大吗？实际上小姜是用一样的 pt 数下去设的（大字是 96pt，小字是 12pt），为什么会这种差别？因为先前说过了，pt 数管的是字体从 Ascender line 到 Decender line 之间的距离，所以当 x-height 比较短（即 ascender 和 descender 比较长）的时候，通常字体设计师会减少每个字母的宽度，以避免字母变形。直接的结果就是虽然 pt 数一样，但 x-height 短的字会看起来比较小。下面是个比较极端的例子：&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://blog.windia.net/tech/imgs/article/2009-04-22/font-4.jpg" width="600" height="101" alt="Park Avenue V.S. Tahoma"/&gt;&lt;/div&gt;&lt;br /&gt;左边的字体是 Park Avenue，右边则是常见的 Tahoma。在设定上两者的 pt 数是一样的，但右边的 Engadget 看起来显然大多了！&lt;br /&gt;&lt;br /&gt;其实字体和排版当中能讲的题材还有不少，如果有机会的话，再来和大家分享啰！&lt;br /&gt;&lt;br /&gt;&lt;div class="lower"&gt;另外，在文章后面的评论中，有网友推荐了一个用中文写的关于字体排版印刷的 Blog：&lt;a href="http://www.typeisbeautiful.com/" rel="external"&gt;Type is Beautiful / 字体排印&lt;/a&gt;，内容专业、丰富而又深入浅出，不管是编辑、平面设计师等专业人士用来参考或者非专业人士用来拓宽知识面，都非常值得推荐。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-178540-3";
urchinTracker();
&lt;/script&gt;
&lt;div id="sc_image" style="display:inline;"&gt;&lt;a title="site stats" class="statcounter" href="http://www.statcounter.com/"&gt;&lt;img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-5975036904104604336?l=blog.windia.net%2Ftech%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gregtech/~4/7wlU4_UkxQ0" height="1" width="1"/&gt;</content><link rel="related" href="http://cn.engadget.com/2009/04/22/on-english-fonts/" title="[转]小姜杂谈：浅论英文字体" /><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/5975036904104604336/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18923002&amp;postID=5975036904104604336" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/5975036904104604336" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/5975036904104604336" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gregtech/~3/7wlU4_UkxQ0/on-english-fonts.html" title="[转]小姜杂谈：浅论英文字体" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="03896665549430566016" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.windia.net/tech/2009/04/on-english-fonts.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-18923002.post-2948085577611316891</id><published>2009-04-20T11:15:00.001+08:00</published><updated>2009-04-20T18:48:13.118+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="评论" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="Feed" /><title type="text">Blogger 的评论 Feed 中去掉了 URI</title><content type="html">最近发现每篇文章下方评论的作者都没有了 URL 链接，即使是我自己确认添加了链接的回复评论也是如此。&lt;br /&gt;&lt;br /&gt;因为评论的现实是&lt;a href="http://blog.windia.net/tech/2007/01/json.html" rel="bookmark"&gt;利用 Blogger 基于 JSON 格式的 Feed&lt;/a&gt;，于是仔细研究了一下 Blogger 给的 Feed 的内容，发现 &lt;code&gt;author&lt;/code&gt; 字段里面的 &lt;code&gt;uri&lt;/code&gt; 属性被去掉了。&lt;br /&gt;&lt;br /&gt;评论链接有效的时候，Feed 中关于作者的 JSON 代码是这样的：&lt;br /&gt;&lt;blockquote&gt;&lt;div&gt;&lt;code&gt;"author":[{"name":{"$t":"Gregory"},"uri":{"$t":"http://blog.windia.net"}}]&lt;/code&gt;&lt;/div&gt;&lt;/blockquote&gt;而现在改成了：&lt;blockquote&gt;&lt;div&gt;&lt;code&gt;"author":[{"name":{"$t":"Gregory"},"email":{"$t":"noreply@blogger.com"}}]&lt;/code&gt;&lt;/div&gt;&lt;/blockquote&gt;其中无论是谁评论，&lt;code&gt;email&lt;/code&gt; 字段的地址一律都是 &lt;code&gt;noreply@blogger.com&lt;/code&gt;。另外也看了 XML 格式的 Atom 输出，&lt;code&gt;uri&lt;/code&gt; 属性也同样被替换成了 &lt;code&gt;email&lt;/code&gt;。&lt;br /&gt;&lt;br /&gt;Google 会做如此变更，目的还不得而知。如果是和反垃圾评论信息有关的话，链接的内容仍然可以放在评论正文中。&lt;br /&gt;&lt;br /&gt;另外，blogger.com 网站上的评论页面仍然可以正常显示作者的链接，因此这个信息应该还是存在于 Blogger 的数据库中的，只是没有在 Feed 中输出。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update at 18:41 on 2009/04/20:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;下午发现这个 Blog 的评论作者链接显示正常了，而我的另一个 Blog &lt;a href="http://blog.windia.net"&gt;今日无大事&lt;/a&gt;还是没有链接，打开 Feed 的内容下来分析，发现 author 字段的内容已经又更新了，新的内容为：&lt;blockquote&gt;&lt;div&gt;&lt;code&gt;"author":[{"name":{"$t":"Gregory"},"uri":{"$t":"http://blog.windia.net"},"email":{"$t":"noreply@blogger.com"}}]&lt;/code&gt;&lt;/div&gt;&lt;/blockquote&gt;目前是 &lt;code&gt;uri&lt;/code&gt; 和 &lt;code&gt;email&lt;/code&gt; 都有了。接下来怀疑另外一个 Blog 显示不正确是缓存问题，没道理用同样的 Feed 接口，不同的 Blog 站点内容格式不同。通过添加一个无意义的附加参数改变 Feed 的 URL，则两个 Blog 都能正确显示评论作者的链接了。之前缓存问题，是由于国内目前 Feed 的地址被墙，我通过另外一台在国外的服务器帮助取得内容再 forward 过来，缓存在那边，所以刷新无效。&lt;br /&gt;&lt;br /&gt;看来这应该是一个 bug，只是被 Blogger 很快的修复了…… 在 &lt;a href="http://knownissues.blogspot.com" rel="external"&gt;Known Issue&lt;/a&gt; 网站上并没见到相关的说明。&lt;div class="blogger-post-footer"&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-178540-3";
urchinTracker();
&lt;/script&gt;
&lt;div id="sc_image" style="display:inline;"&gt;&lt;a title="site stats" class="statcounter" href="http://www.statcounter.com/"&gt;&lt;img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-2948085577611316891?l=blog.windia.net%2Ftech%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gregtech/~4/D9yoBFCzGTo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/2948085577611316891/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18923002&amp;postID=2948085577611316891" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/2948085577611316891" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/2948085577611316891" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gregtech/~3/D9yoBFCzGTo/blogger-feed-uri.html" title="Blogger 的评论 Feed 中去掉了 URI" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="03896665549430566016" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://blog.windia.net/tech/2009/04/blogger-feed-uri.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-18923002.post-1854431559801526259</id><published>2009-04-17T22:04:00.001+08:00</published><updated>2009-04-20T11:20:20.477+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Web" /><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="J2ME" /><category scheme="http://www.blogger.com/atom/ns#" term="HTTP" /><category scheme="http://www.blogger.com/atom/ns#" term="手机" /><category scheme="http://www.blogger.com/atom/ns#" term="知识库" /><title type="text">SAMSUNG 手机安装 MIDlet 出现“内容不匹配”</title><content type="html">昨天通过 OTA 方式从 Apache 服务器上在一部 SAMSUNG SGH-L760 上安装 MIDlet，下载完 JAD 确认安装，开始下载 JAR 之前，手机报错说“内容不匹配 (Content mismatch)”。同样的 JAD 和 JAR 在另外一个主机上就能成功下载安装，而且这一组 JAD 和 JAR 在同服务器上另外一个 HTTP 服务应用上也能成功安装，一时觉得纳闷。&lt;br /&gt;&lt;br /&gt;开始怀疑是端口问题，因为出现安装错误的 Apache 服务器是运行在 82 端口上的。但是同样是从这个 Apache 服务，另外一部 SonyEricsson K610i 就能正常下载安装，而且如果是端口问题，没道理 JAD 能下载而 JAR 不能。&lt;br /&gt;&lt;br /&gt;然后开始怀疑是 JAR 文件的 Content-Type 问题，因为在确认安装的界面上，有显示应用类型是 application/vnd.sun.j2me.java-archive。打开 Apache 的配置文件 &lt;code&gt;/etc/httpd/conf/httpd.conf&lt;/code&gt;，发现没有定义 &lt;code&gt;.jad&lt;/code&gt; 和 &lt;code&gt;.jar&lt;/code&gt; 文件的语句，于是添加如下两行：&lt;br /&gt;&lt;blockquote&gt;&lt;div&gt;&lt;code&gt;AddType text/vnd.sun.j2me.app-descriptor .jad&lt;br /&gt;AddType application/vnd.sun.j2me.java-archive .jar&lt;/code&gt;&lt;/div&gt;&lt;/blockquote&gt;然后重启 Apache 服务，问题解决。MIDlet 成功在 SAMSUNG SGH-L760 上安装了。&lt;div class="blogger-post-footer"&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-178540-3";
urchinTracker();
&lt;/script&gt;
&lt;div id="sc_image" style="display:inline;"&gt;&lt;a title="site stats" class="statcounter" href="http://www.statcounter.com/"&gt;&lt;img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-1854431559801526259?l=blog.windia.net%2Ftech%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gregtech/~4/YPKwE2nTiDI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/1854431559801526259/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18923002&amp;postID=1854431559801526259" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/1854431559801526259" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/1854431559801526259" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gregtech/~3/YPKwE2nTiDI/content-mismatch-when-installing-midlet.html" title="SAMSUNG 手机安装 MIDlet 出现“内容不匹配”" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="03896665549430566016" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.windia.net/tech/2009/04/content-mismatch-when-installing-midlet.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-18923002.post-7566211400001240399</id><published>2009-02-06T15:16:00.013+08:00</published><updated>2009-02-06T15:39:34.267+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Erlang" /><title type="text">Erlang 程序设计</title><content type="html">过完年后接了新的工作范畴，要接触到 Erlang 语言。虽然我可能不会直接参与 Erlang 的开发，但是作为我负责的内容，必然是要了解的。&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.amazon.cn/mn/detailApp?ref=YA&amp;uid=168-5324050-8869029&amp;prodid=bkbk864629#" rel="external"&gt;&lt;img src="http://blog.windia.net/tech/imgs/article/2009-02-06/erlang_programming.jpg" width="397" height="500" alt="Erlang 程序设计"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;想到前段时间在&lt;a href="http://foolbear.blogspot.com/" rel="external"&gt;大笨熊的 Blog&lt;/a&gt; 上看到过一篇&lt;a href="http://foolbear.blogspot.com/2008/12/ian.html" rel="external"&gt;关于 Erlang 书籍的文章&lt;/a&gt;，去找了出来，可巧是他认识的人翻译的。到卓越上搜了一下，竟然只有这么一本书，既然没得选，那就它吧……&lt;br /&gt;&lt;br /&gt;等我买回来看了再分享跟多的心得……&lt;div class="blogger-post-footer"&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-178540-3";
urchinTracker();
&lt;/script&gt;
&lt;div id="sc_image" style="display:inline;"&gt;&lt;a title="site stats" class="statcounter" href="http://www.statcounter.com/"&gt;&lt;img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-7566211400001240399?l=blog.windia.net%2Ftech%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gregtech/~4/Pg2fLjm-590" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/7566211400001240399/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18923002&amp;postID=7566211400001240399" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/7566211400001240399" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/7566211400001240399" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gregtech/~3/Pg2fLjm-590/erlang-programming.html" title="Erlang 程序设计" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="03896665549430566016" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.windia.net/tech/2009/02/erlang-programming.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-18923002.post-1014548787542640334</id><published>2008-12-05T14:44:00.002+08:00</published><updated>2009-06-04T11:03:31.489+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="博客维护" /><category scheme="http://www.blogger.com/atom/ns#" term="Webmaster" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><title type="text">Google Friend Connect 开放注册</title><content type="html">前天 &lt;a href="http://googleblog.blogspot.com/2008/12/google-friend-connect-now-available.html" rel="external"&gt;Google 官方 Blog 报道&lt;/a&gt;，发布了其 SNS 项目 &lt;a href="http://www.google.com/friendconnect/" rel="external"&gt;Google Friend Connect&lt;/a&gt;，&lt;a href="http://foolbear.blogspot.com/2008/12/google-friend-connect.html" rel="external"&gt;大笨熊的 blog 也提到这条消息&lt;/a&gt;。今天收到了 &lt;a href="http://panya.cn/" rel="external"&gt;woainiuniu&lt;/a&gt; 的邀请，在这里谢过了。现在似乎已经开发注册了。&lt;br /&gt;&lt;br /&gt;Google Friend Connect 可以让网站管理员在他们的网站增加一些社会性的功能，允许访客注册并加入到网站，显示自己的头像图标，查看其他已经加入的访客以及他们在 Friend Connect 上的活动。全部工作只需要简单复制粘贴几段代码即可，不需要复杂的编程技术。网站应用了 Friend Connect 以后，可以给网站添加各种 Widgets 实现评论、留言、投票等功能，这种类似的小工具也在不断的增加中。&lt;br /&gt;&lt;br /&gt;本站已经注册并添加了 Friend Connect 功能，左边栏较下方的“Friends”便是，欢迎各位朋友加入本站。如果您自己也有一个 blog 或者网站的话，也可以加上这个简单易用的 Friend 功能。&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://blog.windia.net/imgs/articles/2008-12-05/google-friend-connect.gif" width="235" height="98" alt="在左边栏较下方的“Friends”区域点击 'Join This Site' 按钮即可通过 Google Friend Connect 加入本站"/&gt;&lt;br /&gt;在左边栏较下方的“Friends”区域点击 'Join This Site' 按钮即可通过 Friend Connect 加入本站&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;Blogger 用户如何安装 Friend Connect？&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;如果你用的刚好是 Google 的 Blogger 而且是 Blogspot 或者 Custom Domain 用户，那要如何安装 Friend Connect 呢？这看起来是不可能的。因为安装过程要求用户上传两个 html 文件到网站根目录下，而我们显然不可能直接上传文件到 blogspot 服务器。&lt;br /&gt;&lt;br /&gt;但事实比我们想象的简单，会有这个疑问是因为 Friend Connect 那个安装界面解释的不够清楚。事实上，当你在注册并安装 Friend Connect 时，如果提供的网站地址是一个 BlogSpot 网站，或者其 Custom Domain 的网站，那么这两个文件就会被自动上传。也就是说你可以直接跳过这一步，什么都不用做，在 finalize 的时候直接就通过验证了。&lt;br /&gt;&lt;br /&gt;什么？你问这么隐秘的事情我是怎么发现的？呵呵，好吧，其实我是 Google 到了这篇文章：&lt;a href="http://ckstevenson.blogspot.com/2008/12/how-to-install-google-friend-connect-on.html" rel="external"&gt;How to install Google Friend Connect on Blogger&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-178540-3";
urchinTracker();
&lt;/script&gt;
&lt;div id="sc_image" style="display:inline;"&gt;&lt;a title="site stats" class="statcounter" href="http://www.statcounter.com/"&gt;&lt;img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-1014548787542640334?l=blog.windia.net%2Ftech%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gregtech/~4/fDyc76wDdXg" height="1" width="1"/&gt;</content><link rel="related" href="http://www.google.com/friendconnect/" title="Google Friend Connect 开放注册" /><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/1014548787542640334/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18923002&amp;postID=1014548787542640334" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/1014548787542640334" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/1014548787542640334" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gregtech/~3/fDyc76wDdXg/google-friend-connect.html" title="Google Friend Connect 开放注册" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="03896665549430566016" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.windia.net/tech/2008/12/google-friend-connect.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-18923002.post-54203621962804523</id><published>2008-11-15T01:01:00.002+08:00</published><updated>2009-06-04T11:03:31.490+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Web" /><category scheme="http://www.blogger.com/atom/ns#" term="Blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="HTTP" /><category scheme="http://www.blogger.com/atom/ns#" term="博客维护" /><category scheme="http://www.blogger.com/atom/ns#" term="XML" /><category scheme="http://www.blogger.com/atom/ns#" term="Webmaster" /><category scheme="http://www.blogger.com/atom/ns#" term="Feed" /><title type="text">你博客的 ping 列表真的全在工作吗？</title><content type="html">我们知道在博客发表文章时，可以利用 &lt;a href="http://www.xmlrpc.com/weblogsCom" rel="external"&gt;XML-RPC&lt;/a&gt; 技术将更新通知到各种 Blog 的服务商、搜索引擎等，好让它们主动来抓取，从而提高博客文章被收录的速度和范围。&lt;br /&gt;&lt;br /&gt;Google 的 &lt;a href="http://www.blogger.com" rel="external"&gt;Blogger&lt;/a&gt; 不像 &lt;a href="http://wordpress.com/" rel="external"&gt;WordPress&lt;/a&gt;，后者提供了一个方便的 Update Service，只要将 Blog 服务商公布的 XML-RPC 接口地址填进去就可以方便的在发布的时候 ping 这些地址。Blogger 只是在 Settings &amp;raquo; Basic 有一个“Add your blog to our listings?”的选项，解释说选择了“Yes”，&lt;a href="http://blogsearch.google.com/" rel="external"&gt;Google Blog Search&lt;/a&gt; 以及 &lt;a href="http://weblogs.com/" rel="external"&gt;Weblogs.com&lt;/a&gt; 就会来收录，除此之外并没有一个可以设置 ping 接口地址列表的地方。&lt;br /&gt;&lt;br /&gt;我强烈怀疑 Blogger 这个选项的作用，因为&lt;a href="http://blog.windia.net/tech/2008/09/google-blog-search.html"&gt;曾经有很长一段时间&lt;/a&gt; Google Blog Search 都没有收录我的文章，后来为了确保收录效果，每次发布文章后我都手工 ping，于是通常 5 分钟内文章就会被收录，而 10 分钟左右，Google 的网页搜索也会收录这篇文章（观察到的最快纪录为 8 分钟）。但是每次都要手工去 ping 确实很麻烦，于是今天就琢磨着自己用 PHP 写一个简单的 XML-RPC 客户端来做这个工作，顺便还可以把其它主流的 ping 服务地址加进去，批量执行。&lt;br /&gt;&lt;br /&gt;结果是不试不要紧，一试吓一跳。我参考 &lt;a href="http://www.weblogs.com/api.html" rel="external"&gt;Weblogs.com&lt;/a&gt; 和 &lt;a href="http://www.google.cn/help/blogsearch/pinging_API.html" rel="external"&gt;Google Blog Search&lt;/a&gt; 提供的标准 ping 操作 API 文档写了一个 XML-RPC 的客户端，测试了一下主流的 ping 服务地址列表，发现其中有很大一部分都不能正常工作。&lt;blockquote&gt;&lt;div&gt;&lt;code&gt;http://blogsearch.google.com/ping/RPC2&lt;br /&gt;http://rpc.pingomatic.com/&lt;br /&gt;http://api.my.yahoo.com/RPC2&lt;br /&gt;http://api.moreover.com/RPC2&lt;br /&gt;http://rpc.newsgator.com/&lt;br /&gt;http://rpc.weblogs.com/RPC2&lt;br /&gt;http://www.feedsky.com/api/RPC2&lt;br /&gt;http://ping.feedburner.com/&lt;br /&gt;http://rpc.technorati.com/rpc/ping&lt;br /&gt;http://ping.blog.qikoo.com/rpc2.php&lt;br /&gt;http://blog.iask.com/RPC2&lt;br /&gt;http://www.xianguo.com/xmlrpc/ping.php&lt;br /&gt;http://www.zhuaxia.com/rpc/server.php&lt;/code&gt;&lt;/div&gt;&lt;/blockquote&gt;以下就来一一看一下 ping 这些地址得到的具体结果。&lt;br /&gt;&lt;div class="postfull"&gt;以上这些地址中，能够完全按照标准 API 正常工作的有：&lt;blockquote&gt;&lt;div&gt;&lt;code&gt;http://blogsearch.google.com/ping/RPC2&lt;br /&gt;http://api.my.yahoo.com/RPC2&lt;br /&gt;http://api.moreover.com/RPC2&lt;br /&gt;http://rpc.weblogs.com/RPC2&lt;br /&gt;http://rpc.technorati.com/rpc/ping&lt;/code&gt;&lt;/div&gt;&lt;/blockquote&gt;以下是其它有问题的 ping 接口的具体情况。&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;http://rpc.pingomatic.com/&lt;/dt&gt;&lt;dd&gt;这是一个十分有名，被博客界所有人争相 ping 之的地址，但是，真的有人见过它返回正确的结果吗？我试了很多次，无论是请求 &lt;code&gt;weblogUpdates.extendedPing&lt;/code&gt; 方法，还是&lt;code&gt;weblogUpdates.ping&lt;/code&gt; 方法，无论是提供两个参数还是三个、四个参数，它返回的 HTTP 头永远只会是“&lt;code&gt;501 Not Implemented&lt;/code&gt;”，正文部分没有任何内容。我另外还试了 &lt;code&gt;http://rpc.pingomatic.com/RPC2&lt;/code&gt; 和 &lt;code&gt;http://pingomatic.com/&lt;/code&gt; 两个地址，得到的结果一样。&lt;/dd&gt;&lt;dt&gt;http://rpc.newsgator.com/&lt;/dt&gt;&lt;dd&gt;这个地址存在大家的列表中，我感到非常诧异，因为这个域名都已经不存在了，我换了很多个 DNS 服务器都不能解析出它的 IP 地址。后来发现了 NewsGator 的另一个 ping 接口：&lt;blockquote&gt;&lt;div&gt;&lt;code&gt;http://services.newsgator.com/ngws/xmlrpcping.aspx&lt;/code&gt;&lt;/div&gt;&lt;/blockquote&gt;经过测试，这个是可以正常工作的。&lt;/dd&gt;&lt;dt&gt;http://ping.feedburner.com/&lt;/dt&gt;&lt;dd&gt;起先 FeedBurner 的接口很长时间都不返回，纳闷了很久；细查之下，发现 ping.feedburner.com 这个域名做成了 feeds.feedburner.com 的 CNAME 纪录，而众所周知后者已经被墙，所以实际上这个 ping 接口是没有办法直接通知到的，除非发起 ping 动作的客户端在国外运行。&lt;/dd&gt;&lt;dt&gt;http://www.feedsky.com/api/RPC2&lt;/dt&gt;&lt;dd&gt;Feedsky 趁着 FeedBurner 被封在国内很是火了一把，可是做事情的态度和质量还是和人家有差距。首先是没有实现 &lt;code&gt;weblogUpdates.extendedPing&lt;/code&gt; 方法，而在请求 &lt;code&gt;weblogUpdates.ping&lt;/code&gt; 方法时，返回的结果也很不稳定。有时是正常的结果，有时会以错误码 304 将整个 Feed 的内容放在 message 字段中返回，有时又干脆什么都不返回。&lt;/dd&gt;&lt;dt&gt;http://ping.blog.qikoo.com/rpc2.php&lt;/dt&gt;&lt;dd&gt;这个似乎是奇虎官方给出的地址，而几乎网上搜到的所有 ping 列表中都有它。奇怪的是，这个地址根本打不开，HTTP 状态码为 404。我曾经猜测是不是大家在传抄过程中不小心弄错了大小写，于是也试了 RPC2.php, RPC.php, rpc.php，结果都是 404。&lt;/dd&gt;&lt;dt&gt;http://blog.iask.com/RPC2&lt;/dt&gt;&lt;dd&gt;新浪这个表面看起来很不错，相应速度很快，返回的 XML 格式也很标准。可是无论怎么提交，返回结果都是 &lt;code&gt;flerror: 1; message: sorry,failing&lt;/code&gt;。以至于让我怀疑，这个接口背后的后台程序真的有在运作吗？&lt;/dd&gt;&lt;dt&gt;http://www.xianguo.com/xmlrpc/ping.php&lt;/dt&gt;&lt;dd&gt;发出请求大约 5 秒钟后，返回如下内容：&lt;blockquote&gt;&lt;div&gt;&lt;b&gt;Fatal error&lt;/b&gt;:  Call to undefined function xmlrpc_server_create() in &lt;b&gt;/opt/lamp/code/common/rssreader-common-2008-11-12-14-31-18/topgene/feed/xmlrpc/server.php&lt;/b&gt; on line &lt;b&gt;15&lt;/b&gt;&lt;/div&gt;&lt;/blockquote&gt;怎么？PHP 的扩展库都还没配置好就当公共运营的服务器了？而且还直接把错误信息输出到页面上，服务器路径信息一览无余。鲜果啊鲜果，让我说你什么好哇！&lt;/dd&gt;&lt;dt&gt;http://www.zhuaxia.com/rpc/server.php&lt;/dt&gt;&lt;dd&gt;抓虾比鲜果好点，至少还返回了，只不过不知道返回的是啥。返回结果如下：&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;methodResponse&amp;gt;&lt;br /&gt;&amp;lt;params&amp;gt;&lt;br /&gt; &amp;lt;param&amp;gt;&lt;br /&gt;  &amp;lt;value&amp;gt;&lt;br /&gt;   &amp;lt;boolean&amp;gt;0&amp;lt;/boolean&amp;gt;&lt;br /&gt;  &amp;lt;/value&amp;gt;&lt;br /&gt; &amp;lt;/param&amp;gt;&lt;br /&gt;&amp;lt;/params&amp;gt;&lt;br /&gt;&amp;lt;/methodResponse&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;如果说你看不懂 Weblogs.com 的英文文档倒也情有可原，但是照着 Google 的中文文档依葫芦画瓢总会吧？自己想当然的随便弄一下就完事了？&lt;/dd&gt;&lt;/dl&gt;由以上可以看出，大公司终究还是大公司。令人深思的是，这些不能正常工作的接口中，几乎全是国内的服务商，其中有些暴露出来的问题，更是令人汗颜。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-178540-3";
urchinTracker();
&lt;/script&gt;
&lt;div id="sc_image" style="display:inline;"&gt;&lt;a title="site stats" class="statcounter" href="http://www.statcounter.com/"&gt;&lt;img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-54203621962804523?l=blog.windia.net%2Ftech%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gregtech/~4/3-UcOZ8Yj1Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/54203621962804523/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18923002&amp;postID=54203621962804523" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/54203621962804523" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/54203621962804523" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gregtech/~3/3-UcOZ8Yj1Q/ping.html" title="你博客的 ping 列表真的全在工作吗？" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="03896665549430566016" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://blog.windia.net/tech/2008/11/ping.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-18923002.post-4005217453358953463</id><published>2008-11-07T15:22:00.000+08:00</published><updated>2008-11-07T15:40:12.688+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="地图" /><category scheme="http://www.blogger.com/atom/ns#" term="手机" /><category scheme="http://www.blogger.com/atom/ns#" term="GPS" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><title type="text">Google 手机地图 2.2.1.5 发布</title><content type="html">最近几天在国内的 IT 媒体纷纷报道 Google 手机地图发布了最新版本。原本还在纳闷九月底的新闻怎么现在大家才反应过来，后来看到 &lt;a href="http://googlechinablog.com/" rel="external"&gt;Google 黑板报&lt;/a&gt;消息，&lt;a href="http://googlechinablog.com/2008/11/blog-post_06.html" rel="external"&gt;Google 手机地图 2.2.1.5 发布了&lt;/a&gt;。和之前发布的 &lt;a href="http://blog.windia.net/tech/2008/09/google-22.html"&gt;2.2.0 版本&lt;/a&gt;相比，除了已经有的“我的位置”、“行车路线”和“公交换乘”功能意外，显著的改动就是增加了“实时路况”功能，可惜目前只支持北京和上海两个城市，希望支持的城市能够逐渐多起来。&lt;br /&gt;&lt;br /&gt;在自己的手机上试装了一下 Symbian S60 v3 版本，&lt;a href="http://www.google.cn/gmm/index.html" rel="external"&gt;中文版&lt;/a&gt;安装时显示的系统版本号为 2.02(1)，之前版本为 2.02(0)；安装完毕后“关于”界面显示版本号为 2.2.1.5。测试地点和上次一样，而这次利用 GPRS 基站信号定位的地点比上次更接近于实际位置，相差大约为 20 米，可能是因为所处位置并不在道路上。上次定位于实际相差至少 100 米，不知道这次版本升级对“我的位置”定位是否也做了改进。&lt;br /&gt;&lt;br /&gt;由于“实时路况”功能尚不支持成都，开启后显示“正在加载路况信息……”不久显示“无此处的路况信息可用”。待以后支持成都市地图后再行测试。&lt;br /&gt;&lt;br /&gt;另外顺便也安装了一下&lt;a href="http://www.google.com/mobile/default/maps/index.html" rel="external"&gt;英文版&lt;/a&gt;，版本号为 2.02(0)，仍然和上次一样，安装后 About 页面显示版本号 2.2.0.13，但功能上也多出了“Traffic Info”选项，开启后出现的情况和中文版一致。&lt;div class="blogger-post-footer"&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-178540-3";
urchinTracker();
&lt;/script&gt;
&lt;div id="sc_image" style="display:inline;"&gt;&lt;a title="site stats" class="statcounter" href="http://www.statcounter.com/"&gt;&lt;img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-4005217453358953463?l=blog.windia.net%2Ftech%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gregtech/~4/2MMXrbJ48XA" height="1" width="1"/&gt;</content><link rel="related" href="http://www.google.cn/gmm/index.html" title="Google 手机地图 2.2.1.5 发布" /><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/4005217453358953463/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18923002&amp;postID=4005217453358953463" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/4005217453358953463" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/4005217453358953463" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gregtech/~3/2MMXrbJ48XA/google-2215.html" title="Google 手机地图 2.2.1.5 发布" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="03896665549430566016" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.windia.net/tech/2008/11/google-2215.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-18923002.post-3992742489065362183</id><published>2008-10-28T17:35:00.001+08:00</published><updated>2009-06-04T11:03:31.490+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Web" /><category scheme="http://www.blogger.com/atom/ns#" term="博客维护" /><category scheme="http://www.blogger.com/atom/ns#" term="Webmaster" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><title type="text">向微软 Live Search 提交 Sitemap</title><content type="html">作为 Webmaster，您一定知道 sitemap；您应该也知道使用 Google 的&lt;a href="https://www.google.com/webmasters/tools" rel="external"&gt;网站管理员工具&lt;/a&gt;来提交 sitemap 让 Google 收录您的网页；您或许还知道 Yahoo! 具有同样的&lt;a href="http://sitemap.cn.yahoo.com/mysites" rel="external"&gt;站长工具&lt;/a&gt;（及其&lt;a href="https://siteexplorer.search.yahoo.com/mysites" rel="external"&gt;英文版&lt;/a&gt;）。&lt;br /&gt;&lt;br /&gt;最近发现微软还在 beta 测试中的 Live Search 也推出了这样方便站长的工具 &lt;a href="http://webmaster.live.com/webmaster/" rel="external"&gt;Webmaster Center&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;div style="clear: both; text-align: center;"&gt;&lt;a href="http://blog.windia.net/tech/imgs/article/2008-10-28/Live-Search-Webmaster-Center.png" rel="external"&gt;&lt;img src="http://blog.windia.net/tech/imgs/article/2008-10-28/Live-Search-Webmaster-Center-tb.png" width="491" height="413" alt="微软 Live Search 的 Webmaster Center"/&gt;&lt;br /&gt;微软 Live Search 的 Webmaster Center&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;和 Google 及 Yahoo! 的类似，以上 Webmaster Center 工具会让您提供网站的入口地址和 sitemap 地址，然后 Live Search 会提示您下载一个 LiveSearchSiteAuth.xml （文件名真是个微软特色十足啊）文件，其中含有和网站对应的校验码。上传至您网站的根目录，使其能够用&lt;blockquote&gt;&lt;div&gt;&lt;code&gt;http://www.mysite.com/LiveSearchSiteAuth.xml&lt;/code&gt;&lt;/div&gt;&lt;/blockquote&gt;这样的形式访问到即可。过一段时间 Webmaster Center 就会自动处理您提交的 sitemap 了。&lt;br /&gt;&lt;br /&gt;对于已经录入过的网站，可以在 Site List 页面上的站点列表中点击网站地址的链接进入每个网站查看具体信息，包括摘要、属性、抓取问题、反向链接、链出链接、关键字和网站地图等信息。当网站地图发生改变时，可以通过 Ping 地址&lt;blockquote&gt;&lt;div&gt;&lt;code&gt;http://webmaster.live.com/webmaster/ping.aspx?siteMap=&lt;i&gt;[your sitemap web address]&lt;/i&gt;&lt;/code&gt;&lt;/div&gt;&lt;/blockquote&gt;来主动通知 MSNBot。&lt;br /&gt;&lt;br /&gt;相信有了这个工具后，我们的网站就更容易被 MSN 和 Live Search 收录了。如果您的网站有 sitemap 而还没有提交给 MSN，不妨试一下这个办法。&lt;div class="blogger-post-footer"&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-178540-3";
urchinTracker();
&lt;/script&gt;
&lt;div id="sc_image" style="display:inline;"&gt;&lt;a title="site stats" class="statcounter" href="http://www.statcounter.com/"&gt;&lt;img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-3992742489065362183?l=blog.windia.net%2Ftech%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gregtech/~4/usTHWrumxRc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/3992742489065362183/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18923002&amp;postID=3992742489065362183" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/3992742489065362183" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/3992742489065362183" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gregtech/~3/usTHWrumxRc/live-search-sitemap.html" title="向微软 Live Search 提交 Sitemap" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="03896665549430566016" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.windia.net/tech/2008/10/live-search-sitemap.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-18923002.post-3437587830153457395</id><published>2008-10-24T10:37:00.004+08:00</published><updated>2009-06-04T11:03:31.491+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Web" /><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="模版" /><category scheme="http://www.blogger.com/atom/ns#" term="博客维护" /><category scheme="http://www.blogger.com/atom/ns#" term="XML" /><category scheme="http://www.blogger.com/atom/ns#" term="Webmaster" /><category scheme="http://www.blogger.com/atom/ns#" term="CSS" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="W3C" /><category scheme="http://www.blogger.com/atom/ns#" term="HTML" /><title type="text">挑战 XHTML 的 Strict 标准</title><content type="html">我的 Blog 网页在 Doctype 声明上一直使用的是 XHTML 的 Strict 标准，当初在模板制作完成时是校验过的，可是随着后来无数次的修改、内容添加，现在已经不能通过 &lt;a href="http://validator.w3.org/"&gt;W3C 的语法校验&lt;/a&gt;了，加上 &lt;a href="http://www.blogger.com/"&gt;Google Blogger&lt;/a&gt; 在发布页面的时候似乎也并没有考虑目标模板的 Doctype 标准，也部分导致校验的失败。&lt;br /&gt;&lt;br /&gt;经过一个下午的努力，终于基本上解决了所有 XHTML 的语法问题，总结如下。&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&amp;lt;a&amp;gt; 标签没有 target 属性&lt;/dt&gt;&lt;dd&gt;&lt;div class="postfull"&gt;在 Strict DTD 里面，超链接 &lt;a href="http://www.w3.org/TR/1999/xhtml-modularization-19990406/DTD/doc/xhtml1-s.elt.html#a"&gt;&amp;lt;a&amp;gt; 标签&lt;/a&gt; 没有 target 属性，因此不能利用 target="_blank" 这样的代码来达到新开页面打开链接的目的。为了实现同样的功能，通常的办法是用 rel="external" 来替代 target="_blank"，然后用如下 JavaScript 代码来处理链接：&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;function externalLinks() {&lt;br /&gt;  var linkArray = document.getElementsByTagName('a');&lt;br /&gt;  for (var i = 0; i &amp;lt; linkArray.length; i++) {&lt;br /&gt;    var link = linkArray[i];&lt;br /&gt;    if (link.getAttribute('rel') == 'external') {&lt;br /&gt;      link.target = '_blank';&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;然后将该 externalLinks() 函数添加到页面的 onLoad 事件中。如：&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;body onload="externalLinks();"&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/dd&gt;&lt;dt&gt;&amp;lt;img&amp;gt; 标签必须添加 alt 属性&lt;/dt&gt;&lt;dd&gt;&lt;div class="postfull"&gt;对于 &lt;a href="http://www.w3.org/TR/1999/xhtml-modularization-19990406/DTD/doc/xhtml1-s.elt.html#img"&gt;&amp;lt;img&amp;gt; 标签&lt;/a&gt;来讲，alt 属性是必须的。给图片添加 alt，一方面当图片因为各种原因无法显示的时候，能给访问者以提示；另一方面也便于搜索引擎判断图片的内容，以及更准确的建立索引。&lt;/div&gt;&lt;/dd&gt;&lt;dt&gt;&amp;lt;img&amp;gt; 标签没有 border 属性&lt;/dt&gt;&lt;dd&gt;&lt;div class="postfull"&gt;&lt;a href="http://www.w3.org/TR/1999/xhtml-modularization-19990406/DTD/doc/xhtml1-s.elt.html#img"&gt;&amp;lt;img&amp;gt; 标签&lt;/a&gt;是没有 border 这个属性的。我们通常会加上 border="0"，主要是因为把图片放在链接标签 &amp;lt;a&amp;gt; 里时，浏览器会加上一个链接默认颜色的边框，而这通常是多余的。在 Strict 标准中，不能用 border 属性来去掉边框，而只能使用 CSS 控制。同样 align 属性也是不存在的，要实现 absmiddle 这样的目的，也只能用 CSS 代替。&lt;/div&gt;&lt;/dd&gt;&lt;dt&gt;&amp;lt;blockquote&amp;gt; 标签内必须使用 block 级别的标签&lt;/dt&gt;&lt;dd&gt;&lt;div class="postfull"&gt;&lt;a href="http://www.w3.org/TR/1999/xhtml-modularization-19990406/DTD/doc/xhtml1-s.elt.html#blockquote"&gt;&amp;lt;blockquote&amp;gt; 标签&lt;/a&gt;用来在页面上表示引用的内容，例如，最常见的，引用代码。我通常习惯将代码的内容放在 &amp;lt;code&amp;gt; 标签中，而这个标签是 inline 级的，不符合 Strict DTD 的要求。&amp;lt;strong&amp;gt;、&amp;lt;b&amp;gt; 等同样会导致问题。符合要求的 block 级标签包括：&amp;lt;address&amp;gt;, &amp;lt;blockquote&amp;gt;, &amp;lt;del&amp;gt;, &amp;lt;div&amp;gt;, &amp;lt;dl&amp;gt;, &amp;lt;fieldset&amp;gt;, &amp;lt;form&amp;gt;, &amp;lt;h&amp;gt;, &amp;lt;h2&amp;gt;, &amp;lt;h4&amp;gt;, &amp;lt;h5&amp;gt;, &amp;lt;h6&amp;gt;, &amp;lt;hr&amp;gt;, &amp;lt;ins&amp;gt;, &amp;lt;noscript&amp;gt;, &amp;lt;ol&amp;gt;, &amp;lt;p&amp;gt;, &amp;lt;pre&amp;gt;, &amp;lt;script&amp;gt;, &amp;lt;table&amp;gt;, &amp;lt;ul&amp;gt;。&lt;/div&gt;&lt;/dd&gt;&lt;dt&gt;不能使用 &amp;lt;embed&amp;gt; 标签&lt;/dt&gt;&lt;dd&gt;&lt;div class="postfull"&gt;这个问题最容易出现在引用外部媒体文件时，例如 MP3 音乐、视频等。很多资料推荐同时使用 &amp;lt;object&amp;gt; 和 &amp;lt;embed&amp;gt; 来增强媒体引用元素的浏览器兼容性，但是很不幸的，Strict DTD 并未定义 &amp;lt;embed&amp;gt;。其实我们完全可以不使用 &amp;lt;embed&amp;gt; 一样能够兼容浏览器。例如 Youtube 给的代码一般是这样的：&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;object width="425" height="344"&amp;gt;&lt;br /&gt;  &amp;lt;param name="movie" &lt;br /&gt;         value="http://www.youtube.com/v/uhsjNTEJD3c"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;  &amp;lt;param name="allowFullScreen" value="true"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;  &amp;lt;embed src="http://www.youtube.com/v/uhsjNTEJD3c" &lt;br /&gt;         type="application/x-shockwave-flash" &lt;br /&gt;         allowfullscreen="true" &lt;br /&gt;         width="425" height="344"&amp;gt;&amp;lt;/embed&amp;gt;&lt;br /&gt;&amp;lt;/object&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;这样无法通过校验。我们可以改成：&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;object type="application/x-shockwave-flash"&lt;br /&gt;        width="425" height="344"&amp;gt;&lt;br /&gt;  &amp;lt;param name="movie" &lt;br /&gt;         value="http://www.youtube.com/v/uhsjNTEJD3c"/&amp;gt;&lt;br /&gt;  &amp;lt;param name="allowFullScreen" value="true"/&amp;gt;&lt;br /&gt;&amp;lt;/object&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/dd&gt;&lt;dt&gt;实体用法问题&lt;/dt&gt;&lt;dd&gt;&lt;div class="postfull"&gt;在 XML 中，实体的写法是 &amp;amp;entity;，以一个 &amp;amp; 符号开头，一个分号结束。因此，Strict 标准的 XHTML 里面不允许出现任何单独的 &amp;amp; 符号，即使是在 URL 中用来分隔查询参数。需要用到这个符号的时候，要用 &amp;amp;amp; 来表示。通常一个实体用法的错误会同时导致 5 个校验时的错误，当解决以后，这 5 个错误会同时消失。由于 Blogger 在发布页面时 URL 直接使用了 &amp;amp; 符号，因此会直接导致 Strict 标准的 XHTML 校验失败。&lt;/div&gt;&lt;/dd&gt;&lt;dt&gt;重复的 id 值&lt;/dt&gt;&lt;dd&gt;&lt;div class="postfull"&gt;对于 XHTML 标签来讲，id 属性的值必须唯一，如果一个文档中出项重复的 id 就会导致问题。出现这种问题，通常是把 id 属性放在了 Blogger 模板会循环输出的部分。&lt;/div&gt;&lt;/dd&gt;&lt;/dl&gt;另外，Blogger 提供的模板中，backlinks 那一部分会导致 4 个不同类别的问题。凭心而论，Blogger 模板在 backlinks 这一块的代码实在写的很烂，用了三个不同的 js 文件，用 JavaScript 输出 CSS，不但使得不同模板之间难以更改这一部分显示的样式，也导致了很多 XHTML 的语法校验问题。例如 Blogger 自己的 &lt;a href="http://buzz.blogger.com"&gt;Buzz&lt;/a&gt;，打开任一个文章的独立页面的源代码，Doctype 声明赫然是 XHTML 1.0 Strict，然而 backlink 那一块的代码不用校验也能看出漏洞百出。&lt;br /&gt;&lt;br /&gt;Blogger 目前版本的网站出自著名设计师 &lt;a href="http://stopdesign.com"&gt;Douglas Bowman&lt;/a&gt; 之手，其本人对 XHTML 以及 CSS 有着非常深刻的研究。在设计之初，Blogger 还没有 Backlinks 的功能，显然这个蹩脚的 Backlinks 是后来由其他人加上去的。不知道 Bowman 先生在看到这一幕后会做何感想。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://googlechinablog.com/"&gt;Google 黑板报&lt;/a&gt;用的是同样的 backlink 代码，不过比 Buzz 知趣的是它的模板干脆去掉了 Doctype 声明。只不过作为 Google 旗下的网站，页面连 Doctype 声明都没有，也是一件汗颜的事情。&lt;br /&gt;&lt;br /&gt;言归正传，以下列出 backlink 这部分代码导致的问题以及解决方法。&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&amp;lt;div&amp;gt; 和 &amp;lt;dl&amp;gt; 之间的嵌套问题&lt;/dt&gt;&lt;dd&gt;&lt;div class="postfull"&gt;在 Blogger 给出的默认模板代码中，是用 &amp;lt;dl&amp;gt; 来实现反向链接列表的；可问题在于，他们将 &amp;lt;BlogItemBacklinks&amp;gt; 放在了 &amp;lt;dl&amp;gt; 之内，而在生成页面时，会将 &amp;lt;BlogItemBacklinks&amp;gt; 这一对模板标签替换成一对 &amp;lt;div&amp;gt; 标签，从而导致 &amp;lt;div&amp;gt; 被嵌套在 &amp;lt;dl&amp;gt; 内。在 Strict DTD 里，&lt;a href="http://www.w3.org/TR/1999/xhtml-modularization-19990406/DTD/doc/xhtml1-s.elt.html#dl"&gt;&amp;lt;dl&amp;gt; 标签&lt;/a&gt;内只允许出现 &amp;lt;dt&amp;gt; 和 &amp;lt;dd&amp;gt; 两个子标签。解决办法是把 &amp;lt;BlogItemBacklinks&amp;gt; 放到 &amp;lt;dl&amp;gt; 外面，当然这样虽然让 XHTML 语法通过校验，但实际的运行结果，会导致每个反向链接条目会占用一个 &amp;lt;dl&amp;gt; 块，而不是预期的放在循环的若干个 &amp;lt;dt&amp;gt; 和 &amp;lt;dd&amp;gt; 中。通过 CSS 可以解决条目之间间距的问题。如果要完美解决这个问题的话，就只有自己重写 Blogger 提供的 JavaScript 函数来改变这一行为了。&lt;/div&gt;&lt;/dd&gt;&lt;dt&gt;&amp;lt;script&amp;gt; 标签的 defer 属性&lt;/dt&gt;&lt;dd&gt;&lt;div class="postfull"&gt;在 Blogger 用模板生成页面时，除了将 &amp;lt;BlogItemBacklinks&amp;gt; 替换成一对 &amp;lt;div&amp;gt; 以外，还会在开标签的 &amp;lt;div&amp;gt; 之前加上一个 &amp;lt;script;&amp;gt; 用来引入相关的 JavaScript，同时给出了一个 defer="true" 属性，然而，根据 Strict DTD，&lt;a href="http://www.w3.org/TR/1999/xhtml-modularization-19990406/DTD/doc/xhtml1-s.elt.html#script"&gt;defer 属性&lt;/a&gt;只能有一个值，只能是 defer="defer"。&lt;/div&gt;&lt;/dd&gt;&lt;dt&gt;&amp;lt;noscript&amp;gt; 内只能用 block 级别标签&lt;/dt&gt;&lt;dd&gt;&lt;div class="postfull"&gt;在生成以上 &amp;lt;script&amp;gt; 标签的同时，Blogger 给出了一个 &lt;a href="http://www.w3.org/TR/1999/xhtml-modularization-19990406/DTD/doc/xhtml1-s.elt.html#noscript"&gt;&amp;lt;noscript&amp;gt;&lt;/a&gt;，用来当浏览器不支持脚本的时候显示一个 Blog Search 的链接。可是 &amp;lt;noscript&amp;gt; 标签内只能用 block 级别的标签，直接用 &amp;lt;a&amp;gt; 这样的 inline 标签是不行的。&lt;/div&gt;&lt;/dd&gt;&lt;dt&gt;模板占位符问题&lt;/dt&gt;&lt;dd&gt;&lt;div class="postfull"&gt;在模板中这段关于 backlink 的代码中，Blogger 用了一些模板标签作为占位符。通常模板标签会在生成具体网页时替换掉，但这里的占位符不会，它们要在实际生成 backlink 条目时被 JavaScript 程序换掉。但是在做 XHTML 语法校验时，这些占位符以 HTML 标签的形式存在于代码中，而又显然不属于 XHTML 定义的范围，从而导致校验失败。解决办法是将它们的尖括号转移，写成诸如 &amp;amp;lt;$BlogBacklinkTitle$&amp;amp;gt; 的形式，这样既能够被 JavaScript 成功识别，保证功能正常，又能通过 Strict 语法校验。要特别注意，其中 &amp;lt;$BlogBacklinkDeleteIcon$&amp;gt; 不要转义，这个模板标签是在页面生成时被替换的，而不是 JavaScript 的数据占位符。&lt;/div&gt;&lt;/dd&gt;&lt;/dl&gt;最后，Google 黑板报最近也发布了一篇关于&lt;a href="http://googlechinablog.com/2008/10/blog-post_30.html" rel="external"&gt;互联网标准性&lt;/a&gt;的文章，&lt;a href="http://www.w3cn.org/howto/index.html" rel="external"&gt;这篇文章&lt;/a&gt;也提供了很多关于改进网站 HTML 代码的参考信息。&lt;div class="blogger-post-footer"&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-178540-3";
urchinTracker();
&lt;/script&gt;
&lt;div id="sc_image" style="display:inline;"&gt;&lt;a title="site stats" class="statcounter" href="http://www.statcounter.com/"&gt;&lt;img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-3437587830153457395?l=blog.windia.net%2Ftech%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gregtech/~4/zTqROo9Pn2c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/3437587830153457395/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18923002&amp;postID=3437587830153457395" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/3437587830153457395" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18923002/posts/default/3437587830153457395" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gregtech/~3/zTqROo9Pn2c/xhtml-strict.html" title="挑战 XHTML 的 Strict 标准" /><author><name>Gregory</name><uri>http://www.blogger.com/profile/06414658053253316047</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="03896665549430566016" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://blog.windia.net/tech/2008/10/xhtml-strict.html</feedburner:origLink></entry></feed>
