tag:blogger.com,1999:blog-189230022009-07-09T07:24:00.195+08:00月蝎研究Gregory Song 的有关 IT 技术的博客。内容涉及 WEB、Java、Google、Blogger、J2ME 等手机相关技术。Gregory Song,80 后,白羊座,IT 从业者,清瘦。Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.comBlogger63125tag:blogger.com,1999:blog-18923002.post-51851413134663380242009-07-08T18:53:00.001+08:002009-07-08T18:53:57.239+08:00Google 宣布涉足操作系统:Chrome<div style="float: right; margin: 0 0 7px 7px;"><img src="http://blog.windia.net/tech/imgs/article/2009-07-08/google-chrome.jpg" width="348" height="400" alt="Google Chrome"/></div>Google 官方博客今天早些时候发布文章,<a href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html" rel="external">Introducing Google Chrome OS</a>,Google 黑板报随后在下午也发布了此文的中文翻译:<a href="http://googlechinablog.com/2009/07/chrome.html" rel="external">谷歌 Chrome 操作系统</a>。<br /><br />Google 自九十年进入人们的视线,到现在将近二十年时间,从名不见经传的小公司,已经成为世人瞩目的具有极大影响力的互联网巨舰。坊间曾一度传闻 Google 终将涉足操作系统领域,而前两年推出 Android 手机系统也被认为是对涉足操作系统的投石问路。而现在,终于为我们揭开了这层面纱,比想象中要来的早的多,快的多。<br /><br />如果说 Chrome 浏览器足以让微软不安的话,那么 Chrome 操作系统对于微软可以说是一枚重磅炸弹。Google 在行业一项有着较好的声誉,其产品也从来不缺乏用户、支持者乃至狂热者。有人说 Google 越来越巨大,并不容乐观,因为极有可能发展成为第二个微软,最终变成另一个邪恶的垄断帝国。但就目前的形式来看,在微软的 Vista 叫好不叫座,强行推行仍无人问津,仓促推出 Windows 7;IE 系列一代不如一代,市场占有率持续下滑的今天,如果有另外一家公司为我们提供更有竞争力的产品、更新的理念、甚至一场革命,未尝不是一件好事。<br /><br />当然,以上的担忧也未必就是杞人忧天。这就像一位骁勇善战的将军,为广大民众打败入侵的外敌,带来和平与繁荣,集权利、荣誉与威望于一身,最后到底是成为独裁的暴君,还是继续服务于人民的福祉?期待 Google 能够给我们一个正面的范例。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-5185141313466338024?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com1tag:blogger.com,1999:blog-18923002.post-33079226268916413452009-07-08T10:19:00.002+08:002009-07-08T10:23:40.287+08:00Gmail 结束 Beta<div style="margin: 0 0 7px 7px; float: right;"><img src="http://blog.windia.net/tech/imgs/article/2009-07-08/gmail_out_of_beta.png" width="320" height="168" alt="Gmail Out of Beta"/></div><a href="http://googleblog.blogspot.com/2009/07/google-apps-is-out-of-beta-yes-really.html" rel="external">Google 官方博客</a>及 Twitter 上的 <a href="http://twitter.com/google" rel="external">@google</a> 昨晚都发布消息,称 <a href="http://mail.google.com" rel="external">Gmail</a>、<a href="http://docs.google.com" rel="external">Google Docs</a>、<a href="http://www.google.com/calendar/" rel="external">Google Calendar</a> 以及 <a href="http://www.google.com/talk" rel="external">Google Talk</a> 结束 Beta。“Beta” 标记将从这些产品的 LOGO 中去除,但无论是否 “Beta”,Google 都将继续对这些 WEB 应用程序进行创新和改进。<br /><br />记得自己在 Gmail 刚推出的时候,就收到邀请注册了,并一度做为自己的主要私人邮箱使用,已经有很多年了。(据 Solidot 文章,Gmail 于 2004 年 3 月 31 日推出,所以到现在已经有 5 年多了。)<br /><br />一项以及多项相关产品有如此长的 BETA 期,这是很少见的。加上我所在公司的其它部门曾经做过 Android 平台 API 的单元测试工作,据说该平台自推出后的很长一段时间,该 API 中 bug 非常多且 API 文档混乱。另外据我多年使用 Blogger 作为博客平台的经验,其 bug 之多也是在公众运营的产品中遥遥领先的。<br /><br />尽管 Google 的创新能力和“不作恶”是另世人和广大互联网用户称道的,但以上事实也让我非常怀疑 Google 内部的代码质量控制。现在此四项产品的最终结束 Beta,应该可以说对 Google 的形象起到了长远的积极作用,也希望 Google 能为我们提供更多更稳定更惊艳的互联网产品。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-3307922626891641345?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0tag:blogger.com,1999:blog-18923002.post-72404779484633964902009-07-07T15:47:00.001+08:002009-07-07T15:47:59.884+08:00让 Google 为你导游<a href="http://cn.engadget.com/" rel="external">瘾科技</a><a href="http://cn.engadget.com/2009/07/07/google-city-tour-test/" rel="external">消息</a>:<a href="http://www.googlelabs.com/" rel="external">Google 实验室</a>最近推出新服务 - <a href="http://citytours.googlelabs.com" rel="external">Google City Tours</a>。<br /><br />这个服务利用 <a href="http://maps.google.com" rel="external">Google Map</a> 作蓝本,在 Google Map 上加入了旅行导航。你可以在一个城市中加入不同的景点,然后让 Google 作导游,为你度身订造旅行路线。<br /><br />Google City Tour 已经预先准备一些数据,像博物馆的开放时间、脚程时间等等。基本上可以帮你规划一条不错的路线,对背包客来说是一个不错的选择。因为利用 Google City Tours 来作一个蓝图,再更改自家行程,较从零开始更方便。<br /><br />现在 Google City Tour 只有一些欧美主要城市的数据,未有加入亚洲城市。而且预设的建议景点也是博物馆,要加入其它的地点要手动加入。<br /><br />看到这则消息,首先想到的就是今年 3 月在欧洲出差时,去巴塞罗那和罗马旅行的事情。由于人生地不熟,加上语言也不怎么通,所以在订好机票和旅店后,自己也花了大量的时间做功课,为紧凑的周末做好安排。当时如果有这项服务就好了,可以省去很多人工的查找和计算工作。<br /><br />不过,从经验上来看,这项服务要能在手机上使用才方便。在欧洲城市旅游,如果不是跟团的话,通常都是徒步加市内公共交通的方式,很难想象时不时的掏出笔记本查看下一个景点的地点和方向。目前也还不太清楚这项服务是否能够用在手机上,不过倒不妨说说自己当时的解决方案。<br /><br />先在 Google Maps 和 Google Earth 上实现查找了所有著名景点的位置并安排了路线,然后存成 KML 文件,并把文件放到可以公共访问的网站上。通过 KML 文件的 URL,可以把景点的位置和路线导入到 Google Maps,并以此共享给同行的其他旅伴。最关键的,是要有一部支持 GPS 的手机,安装好移动版的 Google Maps 后,可以通过 URL 打开之前准备好的 KML 文件,从而把路线安排导入到手机,这样,在旅行的时候,便可以随时拿出手机查询当前的位置,行进方向,以及要去的景点所在的位置。<br /><br />当然,纸质的地图也是非常必要的,原因在于其一手机屏幕一般不够大,很难有个总体的概览,第二,最重要的,手机地图上的地铁和公交站信息可能不太完整,而通常当地提供的旅游用地图就有比较详细的公交地铁站的位置以及另外的线路信息,这对于徒步自由旅行来说,是非常方便的。刚出地铁站,可能一时很难搞清楚位置和方向,这个时候再掏出手机上的 Google Maps,通过 GPS 定位后,就知道自己的位置以及该行进的方向了。<br /><br />所以强烈推荐纸质传统地图加手机 Google Maps 来配合使用,不过记得要给手机充足电,有必要的话另备一块电池。GPS 和 GPRS 同时开启,可是很耗电的。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-7240477948463396490?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0tag:blogger.com,1999:blog-18923002.post-17617485978029687232009-07-01T13:07:00.003+08:002009-07-08T10:36:49.755+08:00<Blogger> 模板标签生成奇怪 Javascript昨天由于有新的评论,有一篇帖子的页面被重新生成,然后页面就出现了一些奇怪的问题。仔细查看源代码后,发现在生成页面的时候,模板里面所有的 &lt;/Blogger&gt; 标签的画面,都被加上了一段奇怪的 JavaScript 代码:<blockquote><div><code>&lt;script type="text/javascript" src="http://www.blogger.com/static/v1/common/js/327583163-csitaillib.js"&gt;&lt;/script&gt;<br />&lt;script&gt;if (typeof(window.attachCsiOnload) != 'undefined' && window.attachCsiOnload != null) { window.attachCsiOnload('ext_blogspot'); }&lt;/script&gt;</code></div></blockquote><br />重新发布了几次仍然是这样,因此推测可能是 Blogger 做了更新。在 Google 上搜索了一下,发现很多 Classic Template 的使用者都发现了相同的问题,并且报告在 <a href="http://www.google.com/support/forum/p/blogger?hl=en" rel="external">Blogger 的 Google Groups 帮助讨论组</a>,如<a href="http://www.google.com/support/forum/p/blogger/thread?fid=08b42c131603d6c200046dac6940711b&hl=en">这篇帖子</a>,还有<a href="http://www.google.com/support/forum/p/blogger/thread?tid=5a2a56deb55a6ee0&hl=en" rel="external">这里</a>,以及<a href="http://www.google.com/support/forum/p/blogger/thread?tid=36c362c289aa5724&hl=en" rel="external">这里</a>。虽然有很多网友提出了各种临时的解决办法,但看起来都不尽如人意。<br /><br />个人认为 Blogger 这个新的功能添加得不够专业。先且不论是什么功能,光是直接在&lt;/Blogger&gt; 标签后加入 &lt;Script&gt; 就不可取,因为 <code>Blogger</code> 这一对标签里面包括和帖子相关的数据,页面上凡是需要帖子标题、ID、时间等相关信息的地方都会用到这一对标签,它可能出现在标题、正文甚至其它的 JavaScript 中(例如我就需要通过这对标签取得帖子的 ID 并作为参数传给 JavaScript 函数)。<br /><br />目前暂时通过人工编辑 HTML 去掉了相关的 Script,如果近期 Blogger 不能解决这个问题的话,就只有另外写 PHP 程序来自动处理了。<br /><br /><strong>Update July. 2, 2009:</strong><br /><br />在<a href="http://www.google.com/support/forum/p/blogger/thread?fid=08b42c131603d6c200046dac6940711b&hl=en" rel="external">这篇帖子</a>中一位来自 The Blogger Team 的用户提到,这的确是他们发现的一个 bug,将很快被修复。让我们拭目以待吧……<br /><br /><strong>Update July. 8, 2009:</strong><br />这位来自 The Blogger Team 的用户提到,他们已经在 <a href="http://knownissues.blogspot.com/" rel="external">Blogger 的 Known Issues 网站</a>上记录了<a href="http://knownissues.blogspot.com/2009/07/javascript-inserted-in-some-classic.html" rel="external">这一问题以便跟踪</a>。从该帖内容来看,他们只认为问题只出在不该在 &lt;title&gt;&lt;/title&gt; 之间输出 script 内容。难道他们不知道这一对 &lt;Blogger&gt;&lt;/Blogger&gt; 还可能用在用户自己定义的 JavaScript 中吗?<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-1761748597802968723?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com1tag:blogger.com,1999:blog-18923002.post-1775704328830619842009-06-19T19:02:00.000+08:002009-06-19T19:02:46.448+08:00GFW 开始识别 WEB 代理之前提到<a href="http://blog.windia.net/tech/2009/05/comment-function-fixed.html">用 HTTP 中转的办法解决了评论的问题</a>,今天发现 Blog 上所有的评论又失效了…… 开始以为是因为页面直接引用了 www.blogger.com 域名的某些内容而导致撞墙,但仔细分析后发现,我的 HTTP 中转直接不能访问了,而且之后我的 HTTP 中转程序所在的域名也会在一小段时间内无法访问…… 但同时,用该中转能够访问原本没有被封的内容,比如 Flickr……<br /><br />考虑到传入的目标 URL 参数是用 Base64 和 URL Encode 方式处理的,不存在任何加密,而且这和大多数的 WEB 代理相同,所以推测是现在 GFW 能够识别用 Base64 编码的内容,如果该内容刚好是被屏蔽的网址,则阻拦该 HTTP 请求,并且屏蔽该请求所在的域…… 从而让公众无法通过 WEB 代理访问屏蔽内容。<br /><br />当然,解决的办法也简单,如果不能简单通过 Base64 decode 得到一个 URL,那么它也就无从判断是不是被屏蔽的网址了……<br /><br />我起先想直接把原网址按位取反再 Base64 就行了,结果同事说我作为一个 IT 人士这么干太低级了…… 他们说用 RSA 吧,但是也犯不着这么兴师动众吧…… <br /><br />还是 Liuming 小弟比较聪明,提供了一个比按位取反高级,又比 RSA 简单的办法,那就是…… <br /><br />两次 Base64…… >.<"<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-177570432883061984?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com1tag:blogger.com,1999:blog-18923002.post-77230677582479821042009-06-04T11:01:00.003+08:002009-06-04T11:10:22.606+08:00Google 邮箱收到 Bing 发来的邮件今天早上 Google 邮箱收到 Bing 发来的题为“Discover Microsoft's new Search services”的邮件,声称微软发布了新的搜索引擎服务,并提供了新的 webmaster 工具 <a href="http://www.bing.com/webmaster" rel="external">www.bing.com/webmaster</a>。<br /><br />然而,由于众所周知的原因,Bing 在当下无法访问,微软在这个时候让 Bing 上线原本已经不合时宜,现在又在这个把邀请邮件发到 Google 邮箱,提供一个无法访问的链接,实在是为微软感到可惜。<br /><br />既然如此有诚意,还是用代理打开来看看吧。从界面和内容上看,与微软先前的 <a href="http://blog.windia.net/tech/2008/10/live-search-sitemap.html">Live Search Webmaster Center</a> 如出一辙,加上里头已经有了我两个 Blog 的 Sitemap 信息,可以看出这个 Bing 就是从先前的 Live Search 改头换面升级而来。这大概也是为什么 Bing 上线第一天就能够搜到“<a href="http://www.bing.com/search?q=%E6%9C%88%E8%9D%8E%E7%A0%94%E7%A9%B6&go=&form=QBLH" rel="external">月蝎研究</a>”和我的另一个 Blog “<a href="http://www.bing.com/search?q=%E4%BB%8A%E6%97%A5%E6%97%A0%E5%A4%A7%E4%BA%8B&go=&form=QBRE" rel="external">今日无大事</a>”。<br /><br /><div style="text-align: center;"><a href="http://blog.windia.net/tech/imgs/article/2009-06-04/bing-webmaster-center.jpg"><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"/><br />微软新推出的 Bing Webmaster 工具</a></div><br />开始以为微软的邮件发到 Google 邮箱是为了故意挖取 <a href="http://www.google.com/webmaster" rel="external">Google Webmaster Tools</a> 的用户,但后来发现由于 Bing 就是原来的 Live Search,而早先我已将自己的 Google 邮箱登记为 Live Search Webmaster Center 的联系邮箱,所以这次是我自己以小人之心度君子之腹了。<br /><br />另外,微软的邮件中,还提到了 Bing 搜索引擎相关的 API <a href="http://www.bing.com/developers" rel="external">www.bing.com/developers</a> 以及提供支持的讨论社区 <a href="http://www.bing.com/community" rel="external">www.bing.com/community</a>,有兴趣可以看一下。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-7723067758247982104?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0tag:blogger.com,1999:blog-18923002.post-6957951550834166532009-06-03T10:28:00.002+08:002009-06-08T15:40:49.707+08:00某墙疯了那墙一定是疯了…… Blogger 被封这个倒也在预料之中,毕竟这是常有的事,封着封着咱就麻木了。可是昨天开始 twitter.com、live.com、bing.com 都不能访问了,就连好不容易解封的 flickr.com 也在其列,直接导致我的 Blog 上的照片全是红叉叉…… <br /><br />可怜那 bing.com,前天中央电视台新闻还在大张旗鼓的给它做宣传,昨天刚上线一天,我想这两天人们应该是蜂拥而至来看一下微软这新一代和 Google 叫板的搜索引擎,正是保证稳定性争取良好公众印象的时候,结果就被封了。等过几个月解封的时候,不知道还有多少人记得 bing.com,也不知道中央电视台会不会配合微软再做一次新闻?<br /><br />还有 flickr,害我不得不写程序把所有页面里的照片网址找出来,用 HTTP 代理的地址替换掉,才能保证网页上不是满目疮痍。不过也认了,反正不封从电信访问也爆满,早该改成这样了……<br /><br />另外,昨天 home.live.com 也不能访问,但今天又恢复了,不知道是微软公关的效果还是刚好这个部分临时故障。home.live.com 这个微软基于 Live 的社交网络社区可以通过 Feed 和插件把 FaceBook、WordPress、Twitter、Flickr 等知名服务以及自己 Blog 的发布消息全部整合到一起,还是有点意思的……<br /><br />墙疯了,网封了……<br /><br /><strong>Update 2009/06/08 15:30:</strong><br /><br />从成都网通访问来看,Flickr 和 Bing 都已经解封了。据 Twitter 上有人说 Twitter 也解封了,但是我自己试了一下还是不行。<br /><br />另 Blogger 和 Blogspot 仍然无法访问。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-695795155083416653?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0tag:blogger.com,1999:blog-18923002.post-64807086543483927322009-05-26T18:47:00.003+08:002009-05-26T18:50:10.644+08:00评论功能修复刚刚发现 Blog 的评论功能不能用了,提交后一直显示等待。查了一下,发现是 GFW 的问题。<br /><br />自 5 月 16 日,Blogger 及托管站 BlogSpot 再次被封,导致域名 blogger.com 以及 blogspot.com 全部无法访问。而我的评论系统,是靠通过 <a href="http://blog.windia.net/tech/2006/11/feeds-of-blogger-beta.html">Blogger 的 Feed 地址</a>,由 AJAX 和 Blogger 之间通讯实现读取;由 AJAX 直接向 Blogger 的评论表单处理 URL 发送 POST 请求实现提交。这两项功能都是基于 www.blogger.com 域名的。前者所用的 Feed 地址由于先前早已被封,并通过朋友在 DreamHost 的主机上放了一个 PHP 的中转程序,所以<a href="http://blog.windia.net/2008/08/blog-post.html">评论列表功能</a>一直可以用,但是评论提交是直接 POST 的,www.blogger.com 被封,所以评论自然就失败了。<br /><br />没办法,刚刚改进了一下我的 HTTP 中转程序,实现了 POST 的功能,现在评论功能已经修复了。只是整个数据流程要经历“本地网页 &raquo; blog.windia.net &raquo; DreamHost &raquo; www.blogger.com &raquo; DreamHost &raquo; blog.windia.net &raquo; 本地”这样漫长的路径,因此提交评论可能需要数十秒的时间,但聊胜于无吧。希望 GFW 早日放过 Blogger,这样功能就能完全恢复正常了。<br /><br />另外,修改了一下模板,把 blogger.com 上引用的 CSS 以及 JS 文件的地址都改由 DreamHost 上的 HTTP 中转读取,这样在打开 Blog 页面时,浏览器不用再等待这些文件的 HTTP 请求超时,速度应该能快不少。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-6480708654348392732?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com2tag:blogger.com,1999:blog-18923002.post-62888839222335063102009-04-27T22:32:00.001+08:002009-04-27T22:32:59.943+08:00收缩 Outlook 的 OST / PST 数据文件今天发现 Outlook 里一年多的邮件都没有存档了,数据文件 outlook.ost 已经涨到了 500 多兆,于是执行了一下存档操作。存档的 .pst 数据文件一下子多出了 300 多兆,但奇怪的是原来的 outlook.ost 文件却没有减少。<br /><br />搜索了一下,找到了有关的信息。OST / PST 文件是 Outlook 的数据文件,随着收到新的邮件和保存旧的邮件,这些文件会越来越大,当永久删除邮件和其它内容时,空间就会被空出来,直到收到新的邮件,这些空间就又被分配使用。处于安全的考虑,这些空余的空间不会立即被释放。当空余的空间占到文件总量 20% 以上以后,Outlook 会自动在系统空闲的时候执行收缩操作。所以在我执行存档操作以后,原来的 outlook.ost 文件没有立即缩小。<br /><br />如果要手动执行收缩操作,可以如下图提示操作:右键单击要收缩的数据文件对应文件夹的根目录,选择“Properties” &raquo; 点击“Advanced...”按钮 &raquo; 选择“Advanced”标签 &raquo; 点击“Offline Folder File Settings...”按钮 &raquo; 点击“Compact Now”<br /><br /><div style="text-align: center;"><img src="http://blog.windia.net/tech/imgs/article/2009-04-27/outlook_ost_shrink.jpg" width="552" height="573" alt="收缩 Outlook OST 文件"/></div><div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-6288883922233506310?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0tag:blogger.com,1999:blog-18923002.post-59750369041046043362009-04-22T13:59:00.001+08:002009-04-22T13:59:45.039+08:00[转]小姜杂谈:浅论英文字体<div class="lower">在<a href="http://cn.engadget.com/2009/04/22/on-english-fonts/" rel="external">瘾科技</a>上看到这篇文章,虽然寥寥几句,但是把字体的基本结构讲得非常清楚,因此特地摘录下来。另外由于原文可能是港台繁体中文的,用词和大陆简体中文不太一样,因此做了一些转换。</div><br />英文字体?反正就是在 Arial 和 Times New Roman 之间选一个嘛,偶尔想俏皮一点的话,就拿 Comic Sans MS 出来就好了,哪有什么值得写一篇文章的?小姜完全不是这方面的专家,但收集各种字体也算是小姜一个小小的爱好,所以多年来也学到了不少东西。虽然大家用到英文的机会不大,但其实英文字体里好玩的东西还不少呢!让小姜带大家一起来看看吧……<b>每个字体都有五条线……</b><br /><br /><div style="text-align: center;"><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"/></div><br />这五条线,决定个一个字体的性格。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。<br /><br />为什么说这五条线决定字体的性格呢?通常 x-height 占 point size 比例愈高的字体,放在内文里的时候看得比较清楚,但放在标题就很难看。反之,x-height 占 point size 比例小的字,就比较适合当标题。以下面这个例子,小姜找了两种类似的字体,但左边是设计来当标题用的(Garamond),而右边则是做内文用的(Times New Roman)。注意到 x-height 的分别了吗?<br /><br /><div style="text-align: center;"><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"/></div><br />应用在真实世界,会变成这样:<br /><br /><div style="text-align: center;"><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"/></div><br />有注意到下面的一组字看起来比较大吗?实际上小姜是用一样的 pt 数下去设的(大字是 96pt,小字是 12pt),为什么会这种差别?因为先前说过了,pt 数管的是字体从 Ascender line 到 Decender line 之间的距离,所以当 x-height 比较短(即 ascender 和 descender 比较长)的时候,通常字体设计师会减少每个字母的宽度,以避免字母变形。直接的结果就是虽然 pt 数一样,但 x-height 短的字会看起来比较小。下面是个比较极端的例子:<br /><br /><div style="text-align: center;"><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"/></div><br />左边的字体是 Park Avenue,右边则是常见的 Tahoma。在设定上两者的 pt 数是一样的,但右边的 Engadget 看起来显然大多了!<br /><br />其实字体和排版当中能讲的题材还有不少,如果有机会的话,再来和大家分享啰!<br /><br /><div class="lower">另外,在文章后面的评论中,有网友推荐了一个用中文写的关于字体排版印刷的 Blog:<a href="http://www.typeisbeautiful.com/" rel="external">Type is Beautiful / 字体排印</a>,内容专业、丰富而又深入浅出,不管是编辑、平面设计师等专业人士用来参考或者非专业人士用来拓宽知识面,都非常值得推荐。</div><div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-5975036904104604336?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0tag:blogger.com,1999:blog-18923002.post-29480855776113168912009-04-20T11:15:00.001+08:002009-04-20T18:48:13.118+08:00Blogger 的评论 Feed 中去掉了 URI最近发现每篇文章下方评论的作者都没有了 URL 链接,即使是我自己确认添加了链接的回复评论也是如此。<br /><br />因为评论的现实是<a href="http://blog.windia.net/tech/2007/01/json.html" rel="bookmark">利用 Blogger 基于 JSON 格式的 Feed</a>,于是仔细研究了一下 Blogger 给的 Feed 的内容,发现 <code>author</code> 字段里面的 <code>uri</code> 属性被去掉了。<br /><br />评论链接有效的时候,Feed 中关于作者的 JSON 代码是这样的:<br /><blockquote><div><code>"author":[{"name":{"$t":"Gregory"},"uri":{"$t":"http://blog.windia.net"}}]</code></div></blockquote>而现在改成了:<blockquote><div><code>"author":[{"name":{"$t":"Gregory"},"email":{"$t":"noreply@blogger.com"}}]</code></div></blockquote>其中无论是谁评论,<code>email</code> 字段的地址一律都是 <code>noreply@blogger.com</code>。另外也看了 XML 格式的 Atom 输出,<code>uri</code> 属性也同样被替换成了 <code>email</code>。<br /><br />Google 会做如此变更,目的还不得而知。如果是和反垃圾评论信息有关的话,链接的内容仍然可以放在评论正文中。<br /><br />另外,blogger.com 网站上的评论页面仍然可以正常显示作者的链接,因此这个信息应该还是存在于 Blogger 的数据库中的,只是没有在 Feed 中输出。<br /><br /><strong>Update at 18:41 on 2009/04/20:</strong><br /><br />下午发现这个 Blog 的评论作者链接显示正常了,而我的另一个 Blog <a href="http://blog.windia.net">今日无大事</a>还是没有链接,打开 Feed 的内容下来分析,发现 author 字段的内容已经又更新了,新的内容为:<blockquote><div><code>"author":[{"name":{"$t":"Gregory"},"uri":{"$t":"http://blog.windia.net"},"email":{"$t":"noreply@blogger.com"}}]</code></div></blockquote>目前是 <code>uri</code> 和 <code>email</code> 都有了。接下来怀疑另外一个 Blog 显示不正确是缓存问题,没道理用同样的 Feed 接口,不同的 Blog 站点内容格式不同。通过添加一个无意义的附加参数改变 Feed 的 URL,则两个 Blog 都能正确显示评论作者的链接了。之前缓存问题,是由于国内目前 Feed 的地址被墙,我通过另外一台在国外的服务器帮助取得内容再 forward 过来,缓存在那边,所以刷新无效。<br /><br />看来这应该是一个 bug,只是被 Blogger 很快的修复了…… 在 <a href="http://knownissues.blogspot.com" rel="external">Known Issue</a> 网站上并没见到相关的说明。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-2948085577611316891?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com4tag:blogger.com,1999:blog-18923002.post-18544315598015262592009-04-17T22:04:00.001+08:002009-04-20T11:20:20.477+08:00SAMSUNG 手机安装 MIDlet 出现“内容不匹配”昨天通过 OTA 方式从 Apache 服务器上在一部 SAMSUNG SGH-L760 上安装 MIDlet,下载完 JAD 确认安装,开始下载 JAR 之前,手机报错说“内容不匹配 (Content mismatch)”。同样的 JAD 和 JAR 在另外一个主机上就能成功下载安装,而且这一组 JAD 和 JAR 在同服务器上另外一个 HTTP 服务应用上也能成功安装,一时觉得纳闷。<br /><br />开始怀疑是端口问题,因为出现安装错误的 Apache 服务器是运行在 82 端口上的。但是同样是从这个 Apache 服务,另外一部 SonyEricsson K610i 就能正常下载安装,而且如果是端口问题,没道理 JAD 能下载而 JAR 不能。<br /><br />然后开始怀疑是 JAR 文件的 Content-Type 问题,因为在确认安装的界面上,有显示应用类型是 application/vnd.sun.j2me.java-archive。打开 Apache 的配置文件 <code>/etc/httpd/conf/httpd.conf</code>,发现没有定义 <code>.jad</code> 和 <code>.jar</code> 文件的语句,于是添加如下两行:<br /><blockquote><div><code>AddType text/vnd.sun.j2me.app-descriptor .jad<br />AddType application/vnd.sun.j2me.java-archive .jar</code></div></blockquote>然后重启 Apache 服务,问题解决。MIDlet 成功在 SAMSUNG SGH-L760 上安装了。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-1854431559801526259?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0tag:blogger.com,1999:blog-18923002.post-75662114000012403992009-02-06T15:16:00.013+08:002009-02-06T15:39:34.267+08:00Erlang 程序设计过完年后接了新的工作范畴,要接触到 Erlang 语言。虽然我可能不会直接参与 Erlang 的开发,但是作为我负责的内容,必然是要了解的。<br /><br /><div style="text-align: center;"><a href="http://www.amazon.cn/mn/detailApp?ref=YA&uid=168-5324050-8869029&prodid=bkbk864629#" rel="external"><img src="http://blog.windia.net/tech/imgs/article/2009-02-06/erlang_programming.jpg" width="397" height="500" alt="Erlang 程序设计"/></a></div><br />想到前段时间在<a href="http://foolbear.blogspot.com/" rel="external">大笨熊的 Blog</a> 上看到过一篇<a href="http://foolbear.blogspot.com/2008/12/ian.html" rel="external">关于 Erlang 书籍的文章</a>,去找了出来,可巧是他认识的人翻译的。到卓越上搜了一下,竟然只有这么一本书,既然没得选,那就它吧……<br /><br />等我买回来看了再分享跟多的心得……<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-7566211400001240399?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0tag:blogger.com,1999:blog-18923002.post-10145487875426403342008-12-05T14:44:00.002+08:002009-06-04T11:03:31.489+08:00Google Friend Connect 开放注册前天 <a href="http://googleblog.blogspot.com/2008/12/google-friend-connect-now-available.html" rel="external">Google 官方 Blog 报道</a>,发布了其 SNS 项目 <a href="http://www.google.com/friendconnect/" rel="external">Google Friend Connect</a>,<a href="http://foolbear.blogspot.com/2008/12/google-friend-connect.html" rel="external">大笨熊的 blog 也提到这条消息</a>。今天收到了 <a href="http://panya.cn/" rel="external">woainiuniu</a> 的邀请,在这里谢过了。现在似乎已经开发注册了。<br /><br />Google Friend Connect 可以让网站管理员在他们的网站增加一些社会性的功能,允许访客注册并加入到网站,显示自己的头像图标,查看其他已经加入的访客以及他们在 Friend Connect 上的活动。全部工作只需要简单复制粘贴几段代码即可,不需要复杂的编程技术。网站应用了 Friend Connect 以后,可以给网站添加各种 Widgets 实现评论、留言、投票等功能,这种类似的小工具也在不断的增加中。<br /><br />本站已经注册并添加了 Friend Connect 功能,左边栏较下方的“Friends”便是,欢迎各位朋友加入本站。如果您自己也有一个 blog 或者网站的话,也可以加上这个简单易用的 Friend 功能。<br /><br /><div style="text-align: center;"><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 加入本站"/><br />在左边栏较下方的“Friends”区域点击 'Join This Site' 按钮即可通过 Friend Connect 加入本站</div><br /><strong>Blogger 用户如何安装 Friend Connect?</strong><br /><br />如果你用的刚好是 Google 的 Blogger 而且是 Blogspot 或者 Custom Domain 用户,那要如何安装 Friend Connect 呢?这看起来是不可能的。因为安装过程要求用户上传两个 html 文件到网站根目录下,而我们显然不可能直接上传文件到 blogspot 服务器。<br /><br />但事实比我们想象的简单,会有这个疑问是因为 Friend Connect 那个安装界面解释的不够清楚。事实上,当你在注册并安装 Friend Connect 时,如果提供的网站地址是一个 BlogSpot 网站,或者其 Custom Domain 的网站,那么这两个文件就会被自动上传。也就是说你可以直接跳过这一步,什么都不用做,在 finalize 的时候直接就通过验证了。<br /><br />什么?你问这么隐秘的事情我是怎么发现的?呵呵,好吧,其实我是 Google 到了这篇文章:<a href="http://ckstevenson.blogspot.com/2008/12/how-to-install-google-friend-connect-on.html" rel="external">How to install Google Friend Connect on Blogger</a>。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-1014548787542640334?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0tag:blogger.com,1999:blog-18923002.post-542036219628045232008-11-15T01:01:00.002+08:002009-06-04T11:03:31.490+08:00你博客的 ping 列表真的全在工作吗?我们知道在博客发表文章时,可以利用 <a href="http://www.xmlrpc.com/weblogsCom" rel="external">XML-RPC</a> 技术将更新通知到各种 Blog 的服务商、搜索引擎等,好让它们主动来抓取,从而提高博客文章被收录的速度和范围。<br /><br />Google 的 <a href="http://www.blogger.com" rel="external">Blogger</a> 不像 <a href="http://wordpress.com/" rel="external">WordPress</a>,后者提供了一个方便的 Update Service,只要将 Blog 服务商公布的 XML-RPC 接口地址填进去就可以方便的在发布的时候 ping 这些地址。Blogger 只是在 Settings &raquo; Basic 有一个“Add your blog to our listings?”的选项,解释说选择了“Yes”,<a href="http://blogsearch.google.com/" rel="external">Google Blog Search</a> 以及 <a href="http://weblogs.com/" rel="external">Weblogs.com</a> 就会来收录,除此之外并没有一个可以设置 ping 接口地址列表的地方。<br /><br />我强烈怀疑 Blogger 这个选项的作用,因为<a href="http://blog.windia.net/tech/2008/09/google-blog-search.html">曾经有很长一段时间</a> Google Blog Search 都没有收录我的文章,后来为了确保收录效果,每次发布文章后我都手工 ping,于是通常 5 分钟内文章就会被收录,而 10 分钟左右,Google 的网页搜索也会收录这篇文章(观察到的最快纪录为 8 分钟)。但是每次都要手工去 ping 确实很麻烦,于是今天就琢磨着自己用 PHP 写一个简单的 XML-RPC 客户端来做这个工作,顺便还可以把其它主流的 ping 服务地址加进去,批量执行。<br /><br />结果是不试不要紧,一试吓一跳。我参考 <a href="http://www.weblogs.com/api.html" rel="external">Weblogs.com</a> 和 <a href="http://www.google.cn/help/blogsearch/pinging_API.html" rel="external">Google Blog Search</a> 提供的标准 ping 操作 API 文档写了一个 XML-RPC 的客户端,测试了一下主流的 ping 服务地址列表,发现其中有很大一部分都不能正常工作。<blockquote><div><code>http://blogsearch.google.com/ping/RPC2<br />http://rpc.pingomatic.com/<br />http://api.my.yahoo.com/RPC2<br />http://api.moreover.com/RPC2<br />http://rpc.newsgator.com/<br />http://rpc.weblogs.com/RPC2<br />http://www.feedsky.com/api/RPC2<br />http://ping.feedburner.com/<br />http://rpc.technorati.com/rpc/ping<br />http://ping.blog.qikoo.com/rpc2.php<br />http://blog.iask.com/RPC2<br />http://www.xianguo.com/xmlrpc/ping.php<br />http://www.zhuaxia.com/rpc/server.php</code></div></blockquote>以下就来一一看一下 ping 这些地址得到的具体结果。<br /><div class="postfull">以上这些地址中,能够完全按照标准 API 正常工作的有:<blockquote><div><code>http://blogsearch.google.com/ping/RPC2<br />http://api.my.yahoo.com/RPC2<br />http://api.moreover.com/RPC2<br />http://rpc.weblogs.com/RPC2<br />http://rpc.technorati.com/rpc/ping</code></div></blockquote>以下是其它有问题的 ping 接口的具体情况。<br /><dl><dt>http://rpc.pingomatic.com/</dt><dd>这是一个十分有名,被博客界所有人争相 ping 之的地址,但是,真的有人见过它返回正确的结果吗?我试了很多次,无论是请求 <code>weblogUpdates.extendedPing</code> 方法,还是<code>weblogUpdates.ping</code> 方法,无论是提供两个参数还是三个、四个参数,它返回的 HTTP 头永远只会是“<code>501 Not Implemented</code>”,正文部分没有任何内容。我另外还试了 <code>http://rpc.pingomatic.com/RPC2</code> 和 <code>http://pingomatic.com/</code> 两个地址,得到的结果一样。</dd><dt>http://rpc.newsgator.com/</dt><dd>这个地址存在大家的列表中,我感到非常诧异,因为这个域名都已经不存在了,我换了很多个 DNS 服务器都不能解析出它的 IP 地址。后来发现了 NewsGator 的另一个 ping 接口:<blockquote><div><code>http://services.newsgator.com/ngws/xmlrpcping.aspx</code></div></blockquote>经过测试,这个是可以正常工作的。</dd><dt>http://ping.feedburner.com/</dt><dd>起先 FeedBurner 的接口很长时间都不返回,纳闷了很久;细查之下,发现 ping.feedburner.com 这个域名做成了 feeds.feedburner.com 的 CNAME 纪录,而众所周知后者已经被墙,所以实际上这个 ping 接口是没有办法直接通知到的,除非发起 ping 动作的客户端在国外运行。</dd><dt>http://www.feedsky.com/api/RPC2</dt><dd>Feedsky 趁着 FeedBurner 被封在国内很是火了一把,可是做事情的态度和质量还是和人家有差距。首先是没有实现 <code>weblogUpdates.extendedPing</code> 方法,而在请求 <code>weblogUpdates.ping</code> 方法时,返回的结果也很不稳定。有时是正常的结果,有时会以错误码 304 将整个 Feed 的内容放在 message 字段中返回,有时又干脆什么都不返回。</dd><dt>http://ping.blog.qikoo.com/rpc2.php</dt><dd>这个似乎是奇虎官方给出的地址,而几乎网上搜到的所有 ping 列表中都有它。奇怪的是,这个地址根本打不开,HTTP 状态码为 404。我曾经猜测是不是大家在传抄过程中不小心弄错了大小写,于是也试了 RPC2.php, RPC.php, rpc.php,结果都是 404。</dd><dt>http://blog.iask.com/RPC2</dt><dd>新浪这个表面看起来很不错,相应速度很快,返回的 XML 格式也很标准。可是无论怎么提交,返回结果都是 <code>flerror: 1; message: sorry,failing</code>。以至于让我怀疑,这个接口背后的后台程序真的有在运作吗?</dd><dt>http://www.xianguo.com/xmlrpc/ping.php</dt><dd>发出请求大约 5 秒钟后,返回如下内容:<blockquote><div><b>Fatal error</b>: Call to undefined function xmlrpc_server_create() in <b>/opt/lamp/code/common/rssreader-common-2008-11-12-14-31-18/topgene/feed/xmlrpc/server.php</b> on line <b>15</b></div></blockquote>怎么?PHP 的扩展库都还没配置好就当公共运营的服务器了?而且还直接把错误信息输出到页面上,服务器路径信息一览无余。鲜果啊鲜果,让我说你什么好哇!</dd><dt>http://www.zhuaxia.com/rpc/server.php</dt><dd>抓虾比鲜果好点,至少还返回了,只不过不知道返回的是啥。返回结果如下:<blockquote><pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />&lt;methodResponse&gt;<br />&lt;params&gt;<br /> &lt;param&gt;<br /> &lt;value&gt;<br /> &lt;boolean&gt;0&lt;/boolean&gt;<br /> &lt;/value&gt;<br /> &lt;/param&gt;<br />&lt;/params&gt;<br />&lt;/methodResponse&gt;</code></pre></blockquote>如果说你看不懂 Weblogs.com 的英文文档倒也情有可原,但是照着 Google 的中文文档依葫芦画瓢总会吧?自己想当然的随便弄一下就完事了?</dd></dl>由以上可以看出,大公司终究还是大公司。令人深思的是,这些不能正常工作的接口中,几乎全是国内的服务商,其中有些暴露出来的问题,更是令人汗颜。</div><div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-54203621962804523?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com1tag:blogger.com,1999:blog-18923002.post-40052174533589534632008-11-07T15:22:00.000+08:002008-11-07T15:40:12.688+08:00Google 手机地图 2.2.1.5 发布最近几天在国内的 IT 媒体纷纷报道 Google 手机地图发布了最新版本。原本还在纳闷九月底的新闻怎么现在大家才反应过来,后来看到 <a href="http://googlechinablog.com/" rel="external">Google 黑板报</a>消息,<a href="http://googlechinablog.com/2008/11/blog-post_06.html" rel="external">Google 手机地图 2.2.1.5 发布了</a>。和之前发布的 <a href="http://blog.windia.net/tech/2008/09/google-22.html">2.2.0 版本</a>相比,除了已经有的“我的位置”、“行车路线”和“公交换乘”功能意外,显著的改动就是增加了“实时路况”功能,可惜目前只支持北京和上海两个城市,希望支持的城市能够逐渐多起来。<br /><br />在自己的手机上试装了一下 Symbian S60 v3 版本,<a href="http://www.google.cn/gmm/index.html" rel="external">中文版</a>安装时显示的系统版本号为 2.02(1),之前版本为 2.02(0);安装完毕后“关于”界面显示版本号为 2.2.1.5。测试地点和上次一样,而这次利用 GPRS 基站信号定位的地点比上次更接近于实际位置,相差大约为 20 米,可能是因为所处位置并不在道路上。上次定位于实际相差至少 100 米,不知道这次版本升级对“我的位置”定位是否也做了改进。<br /><br />由于“实时路况”功能尚不支持成都,开启后显示“正在加载路况信息……”不久显示“无此处的路况信息可用”。待以后支持成都市地图后再行测试。<br /><br />另外顺便也安装了一下<a href="http://www.google.com/mobile/default/maps/index.html" rel="external">英文版</a>,版本号为 2.02(0),仍然和上次一样,安装后 About 页面显示版本号 2.2.0.13,但功能上也多出了“Traffic Info”选项,开启后出现的情况和中文版一致。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-4005217453358953463?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0tag:blogger.com,1999:blog-18923002.post-39927424890653621832008-10-28T17:35:00.001+08:002009-06-04T11:03:31.490+08:00向微软 Live Search 提交 Sitemap作为 Webmaster,您一定知道 sitemap;您应该也知道使用 Google 的<a href="https://www.google.com/webmasters/tools" rel="external">网站管理员工具</a>来提交 sitemap 让 Google 收录您的网页;您或许还知道 Yahoo! 具有同样的<a href="http://sitemap.cn.yahoo.com/mysites" rel="external">站长工具</a>(及其<a href="https://siteexplorer.search.yahoo.com/mysites" rel="external">英文版</a>)。<br /><br />最近发现微软还在 beta 测试中的 Live Search 也推出了这样方便站长的工具 <a href="http://webmaster.live.com/webmaster/" rel="external">Webmaster Center</a>。<br /><br /><div style="clear: both; text-align: center;"><a href="http://blog.windia.net/tech/imgs/article/2008-10-28/Live-Search-Webmaster-Center.png" rel="external"><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"/><br />微软 Live Search 的 Webmaster Center</a></div><br />和 Google 及 Yahoo! 的类似,以上 Webmaster Center 工具会让您提供网站的入口地址和 sitemap 地址,然后 Live Search 会提示您下载一个 LiveSearchSiteAuth.xml (文件名真是个微软特色十足啊)文件,其中含有和网站对应的校验码。上传至您网站的根目录,使其能够用<blockquote><div><code>http://www.mysite.com/LiveSearchSiteAuth.xml</code></div></blockquote>这样的形式访问到即可。过一段时间 Webmaster Center 就会自动处理您提交的 sitemap 了。<br /><br />对于已经录入过的网站,可以在 Site List 页面上的站点列表中点击网站地址的链接进入每个网站查看具体信息,包括摘要、属性、抓取问题、反向链接、链出链接、关键字和网站地图等信息。当网站地图发生改变时,可以通过 Ping 地址<blockquote><div><code>http://webmaster.live.com/webmaster/ping.aspx?siteMap=<i>[your sitemap web address]</i></code></div></blockquote>来主动通知 MSNBot。<br /><br />相信有了这个工具后,我们的网站就更容易被 MSN 和 Live Search 收录了。如果您的网站有 sitemap 而还没有提交给 MSN,不妨试一下这个办法。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-3992742489065362183?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0tag:blogger.com,1999:blog-18923002.post-34375878301534573952008-10-24T10:37:00.004+08:002009-06-04T11:03:31.491+08:00挑战 XHTML 的 Strict 标准我的 Blog 网页在 Doctype 声明上一直使用的是 XHTML 的 Strict 标准,当初在模板制作完成时是校验过的,可是随着后来无数次的修改、内容添加,现在已经不能通过 <a href="http://validator.w3.org/">W3C 的语法校验</a>了,加上 <a href="http://www.blogger.com/">Google Blogger</a> 在发布页面的时候似乎也并没有考虑目标模板的 Doctype 标准,也部分导致校验的失败。<br /><br />经过一个下午的努力,终于基本上解决了所有 XHTML 的语法问题,总结如下。<br /><dl><dt>&lt;a&gt; 标签没有 target 属性</dt><dd><div class="postfull">在 Strict DTD 里面,超链接 <a href="http://www.w3.org/TR/1999/xhtml-modularization-19990406/DTD/doc/xhtml1-s.elt.html#a">&lt;a&gt; 标签</a> 没有 target 属性,因此不能利用 target="_blank" 这样的代码来达到新开页面打开链接的目的。为了实现同样的功能,通常的办法是用 rel="external" 来替代 target="_blank",然后用如下 JavaScript 代码来处理链接:<blockquote><pre><code>function externalLinks() {<br /> var linkArray = document.getElementsByTagName('a');<br /> for (var i = 0; i &lt; linkArray.length; i++) {<br /> var link = linkArray[i];<br /> if (link.getAttribute('rel') == 'external') {<br /> link.target = '_blank';<br /> }<br /> }<br />}</code></pre></blockquote>然后将该 externalLinks() 函数添加到页面的 onLoad 事件中。如:<blockquote><pre><code>&lt;body onload="externalLinks();"&gt;</code></pre></blockquote></div></dd><dt>&lt;img&gt; 标签必须添加 alt 属性</dt><dd><div class="postfull">对于 <a href="http://www.w3.org/TR/1999/xhtml-modularization-19990406/DTD/doc/xhtml1-s.elt.html#img">&lt;img&gt; 标签</a>来讲,alt 属性是必须的。给图片添加 alt,一方面当图片因为各种原因无法显示的时候,能给访问者以提示;另一方面也便于搜索引擎判断图片的内容,以及更准确的建立索引。</div></dd><dt>&lt;img&gt; 标签没有 border 属性</dt><dd><div class="postfull"><a href="http://www.w3.org/TR/1999/xhtml-modularization-19990406/DTD/doc/xhtml1-s.elt.html#img">&lt;img&gt; 标签</a>是没有 border 这个属性的。我们通常会加上 border="0",主要是因为把图片放在链接标签 &lt;a&gt; 里时,浏览器会加上一个链接默认颜色的边框,而这通常是多余的。在 Strict 标准中,不能用 border 属性来去掉边框,而只能使用 CSS 控制。同样 align 属性也是不存在的,要实现 absmiddle 这样的目的,也只能用 CSS 代替。</div></dd><dt>&lt;blockquote&gt; 标签内必须使用 block 级别的标签</dt><dd><div class="postfull"><a href="http://www.w3.org/TR/1999/xhtml-modularization-19990406/DTD/doc/xhtml1-s.elt.html#blockquote">&lt;blockquote&gt; 标签</a>用来在页面上表示引用的内容,例如,最常见的,引用代码。我通常习惯将代码的内容放在 &lt;code&gt; 标签中,而这个标签是 inline 级的,不符合 Strict DTD 的要求。&lt;strong&gt;、&lt;b&gt; 等同样会导致问题。符合要求的 block 级标签包括:&lt;address&gt;, &lt;blockquote&gt;, &lt;del&gt;, &lt;div&gt;, &lt;dl&gt;, &lt;fieldset&gt;, &lt;form&gt;, &lt;h&gt;, &lt;h2&gt;, &lt;h4&gt;, &lt;h5&gt;, &lt;h6&gt;, &lt;hr&gt;, &lt;ins&gt;, &lt;noscript&gt;, &lt;ol&gt;, &lt;p&gt;, &lt;pre&gt;, &lt;script&gt;, &lt;table&gt;, &lt;ul&gt;。</div></dd><dt>不能使用 &lt;embed&gt; 标签</dt><dd><div class="postfull">这个问题最容易出现在引用外部媒体文件时,例如 MP3 音乐、视频等。很多资料推荐同时使用 &lt;object&gt; 和 &lt;embed&gt; 来增强媒体引用元素的浏览器兼容性,但是很不幸的,Strict DTD 并未定义 &lt;embed&gt;。其实我们完全可以不使用 &lt;embed&gt; 一样能够兼容浏览器。例如 Youtube 给的代码一般是这样的:<blockquote><pre><code>&lt;object width="425" height="344"&gt;<br /> &lt;param name="movie" <br /> value="http://www.youtube.com/v/uhsjNTEJD3c"&gt;&lt;/param&gt;<br /> &lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;<br /> &lt;embed src="http://www.youtube.com/v/uhsjNTEJD3c" <br /> type="application/x-shockwave-flash" <br /> allowfullscreen="true" <br /> width="425" height="344"&gt;&lt;/embed&gt;<br />&lt;/object&gt;</code></pre></blockquote>这样无法通过校验。我们可以改成:<blockquote><pre><code>&lt;object type="application/x-shockwave-flash"<br /> width="425" height="344"&gt;<br /> &lt;param name="movie" <br /> value="http://www.youtube.com/v/uhsjNTEJD3c"/&gt;<br /> &lt;param name="allowFullScreen" value="true"/&gt;<br />&lt;/object&gt;</code></pre></blockquote></div></dd><dt>实体用法问题</dt><dd><div class="postfull">在 XML 中,实体的写法是 &amp;entity;,以一个 &amp; 符号开头,一个分号结束。因此,Strict 标准的 XHTML 里面不允许出现任何单独的 &amp; 符号,即使是在 URL 中用来分隔查询参数。需要用到这个符号的时候,要用 &amp;amp; 来表示。通常一个实体用法的错误会同时导致 5 个校验时的错误,当解决以后,这 5 个错误会同时消失。由于 Blogger 在发布页面时 URL 直接使用了 &amp; 符号,因此会直接导致 Strict 标准的 XHTML 校验失败。</div></dd><dt>重复的 id 值</dt><dd><div class="postfull">对于 XHTML 标签来讲,id 属性的值必须唯一,如果一个文档中出项重复的 id 就会导致问题。出现这种问题,通常是把 id 属性放在了 Blogger 模板会循环输出的部分。</div></dd></dl>另外,Blogger 提供的模板中,backlinks 那一部分会导致 4 个不同类别的问题。凭心而论,Blogger 模板在 backlinks 这一块的代码实在写的很烂,用了三个不同的 js 文件,用 JavaScript 输出 CSS,不但使得不同模板之间难以更改这一部分显示的样式,也导致了很多 XHTML 的语法校验问题。例如 Blogger 自己的 <a href="http://buzz.blogger.com">Buzz</a>,打开任一个文章的独立页面的源代码,Doctype 声明赫然是 XHTML 1.0 Strict,然而 backlink 那一块的代码不用校验也能看出漏洞百出。<br /><br />Blogger 目前版本的网站出自著名设计师 <a href="http://stopdesign.com">Douglas Bowman</a> 之手,其本人对 XHTML 以及 CSS 有着非常深刻的研究。在设计之初,Blogger 还没有 Backlinks 的功能,显然这个蹩脚的 Backlinks 是后来由其他人加上去的。不知道 Bowman 先生在看到这一幕后会做何感想。<br /><br /><a href="http://googlechinablog.com/">Google 黑板报</a>用的是同样的 backlink 代码,不过比 Buzz 知趣的是它的模板干脆去掉了 Doctype 声明。只不过作为 Google 旗下的网站,页面连 Doctype 声明都没有,也是一件汗颜的事情。<br /><br />言归正传,以下列出 backlink 这部分代码导致的问题以及解决方法。<br /><dl><dt>&lt;div&gt; 和 &lt;dl&gt; 之间的嵌套问题</dt><dd><div class="postfull">在 Blogger 给出的默认模板代码中,是用 &lt;dl&gt; 来实现反向链接列表的;可问题在于,他们将 &lt;BlogItemBacklinks&gt; 放在了 &lt;dl&gt; 之内,而在生成页面时,会将 &lt;BlogItemBacklinks&gt; 这一对模板标签替换成一对 &lt;div&gt; 标签,从而导致 &lt;div&gt; 被嵌套在 &lt;dl&gt; 内。在 Strict DTD 里,<a href="http://www.w3.org/TR/1999/xhtml-modularization-19990406/DTD/doc/xhtml1-s.elt.html#dl">&lt;dl&gt; 标签</a>内只允许出现 &lt;dt&gt; 和 &lt;dd&gt; 两个子标签。解决办法是把 &lt;BlogItemBacklinks&gt; 放到 &lt;dl&gt; 外面,当然这样虽然让 XHTML 语法通过校验,但实际的运行结果,会导致每个反向链接条目会占用一个 &lt;dl&gt; 块,而不是预期的放在循环的若干个 &lt;dt&gt; 和 &lt;dd&gt; 中。通过 CSS 可以解决条目之间间距的问题。如果要完美解决这个问题的话,就只有自己重写 Blogger 提供的 JavaScript 函数来改变这一行为了。</div></dd><dt>&lt;script&gt; 标签的 defer 属性</dt><dd><div class="postfull">在 Blogger 用模板生成页面时,除了将 &lt;BlogItemBacklinks&gt; 替换成一对 &lt;div&gt; 以外,还会在开标签的 &lt;div&gt; 之前加上一个 &lt;script;&gt; 用来引入相关的 JavaScript,同时给出了一个 defer="true" 属性,然而,根据 Strict DTD,<a href="http://www.w3.org/TR/1999/xhtml-modularization-19990406/DTD/doc/xhtml1-s.elt.html#script">defer 属性</a>只能有一个值,只能是 defer="defer"。</div></dd><dt>&lt;noscript&gt; 内只能用 block 级别标签</dt><dd><div class="postfull">在生成以上 &lt;script&gt; 标签的同时,Blogger 给出了一个 <a href="http://www.w3.org/TR/1999/xhtml-modularization-19990406/DTD/doc/xhtml1-s.elt.html#noscript">&lt;noscript&gt;</a>,用来当浏览器不支持脚本的时候显示一个 Blog Search 的链接。可是 &lt;noscript&gt; 标签内只能用 block 级别的标签,直接用 &lt;a&gt; 这样的 inline 标签是不行的。</div></dd><dt>模板占位符问题</dt><dd><div class="postfull">在模板中这段关于 backlink 的代码中,Blogger 用了一些模板标签作为占位符。通常模板标签会在生成具体网页时替换掉,但这里的占位符不会,它们要在实际生成 backlink 条目时被 JavaScript 程序换掉。但是在做 XHTML 语法校验时,这些占位符以 HTML 标签的形式存在于代码中,而又显然不属于 XHTML 定义的范围,从而导致校验失败。解决办法是将它们的尖括号转移,写成诸如 &amp;lt;$BlogBacklinkTitle$&amp;gt; 的形式,这样既能够被 JavaScript 成功识别,保证功能正常,又能通过 Strict 语法校验。要特别注意,其中 &lt;$BlogBacklinkDeleteIcon$&gt; 不要转义,这个模板标签是在页面生成时被替换的,而不是 JavaScript 的数据占位符。</div></dd></dl>最后,Google 黑板报最近也发布了一篇关于<a href="http://googlechinablog.com/2008/10/blog-post_30.html" rel="external">互联网标准性</a>的文章,<a href="http://www.w3cn.org/howto/index.html" rel="external">这篇文章</a>也提供了很多关于改进网站 HTML 代码的参考信息。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-3437587830153457395?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com2tag:blogger.com,1999:blog-18923002.post-19151397163890840992008-10-17T11:07:00.006+08:002008-10-29T17:38:36.634+08:00Blogger 的相关文章和热门文章看到很多别人的 Blog 在文章页面下方都有“相关文章”和“热门文章”的列表,无疑能够增加访问者继续阅读文章的兴趣。可是 Google 的 Blogger 没有这样的功能,于是自己想办法也添加了一个。<br /><br />由于 Blogger 并没有提供相关的模板标签(Tags)来支持这样的功能,因此自己只好用 PHP 和 MySQL 建立了一个简单的数据维护和查询系统,然后用 AJAX 的方式在页面上显示出来。具体来讲有以下内容:<br /><ul><li>利用 <a href="http://www.blogger.com">Google Blogger</a> 的 Feed 接口将文章的 ID、标题、标签、URL、发布及修改时间等内容用程序导入到数据库。</li><li>将 <a href="http://www.google.com/analytics/">Google Analytics</a> 的页面浏览数统计(统计报告 &raquo; 内容 &raquo; 最常见内容)数据导出成文本文件,再通过程序导入到数据库。</li><li>用 PHP 建立一个“相关文章”的查询接口。输入参数为文章的 ID,输出为指定数量的相关文章列表。具体算法上,先用 ID 查出基准文章的标签,然后在数据库中文章中比对标签匹配的数量,按照标签匹配数量从多到少找出相关的文章。</li><li>对于热门文章,有两种计算方法。一种是按有史以来所有文章的浏览量来排序,但是用这种方法得到的结果,基本上都是 2005 年很老的文章,而很多有意义的新文章却很难出现。于是我采用了另一种算法,即按照每日平均浏览量来排序,这样比较新的浏览量比较大的文章也能出现了。</li></ul><br />修改好模板以后,将整个 Blog 重新发布,现在这些功能已经调试好并上线了。顺便抱怨一下,对于用 FTP 发布的 Blogger 来讲,帖子多了以后,整站重新发布,真是一个漫长的过程啊。<br /><br />在修改模板的同时,也顺便改了一下首页上提示阅读全文的方式,将原来的“点击这里阅读全文”的文字链接改成了图标,希望这样看起来更醒目一些,在我另一个<a href="http://blog.windia.net">非技术的 Blog</a> 上可以看到效果。<br /><br />另外,最初做的模板的 PSD 文件找不到了,也忘了当时在标题部分用的哪种字体。这给后面添加新的标题带来很多麻烦。于是趁这次修改模板,一并将标题的图片都修改了。找了很多字体,也研究了很久,挑了 10 种非衬线(Sans Serif)字体出来,最后选中的竟然是 Windows XP 自带的 Lucida Sans Unicode。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-1915139716389084099?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com2tag:blogger.com,1999:blog-18923002.post-15307428168477065322008-10-10T18:37:00.004+08:002008-10-29T17:39:06.568+08:00MIDlet 在索爱手机上安装失败最近在工作中,发现一部分索爱 (SonyEricsson) 手机,在安装 MIDlet 时发生“Downloading failed”错误。具体情况发生在手机通过 OTA 安装 MIDlet,Jar 文件下载完毕并开始安装后,系统询问是否允许应用程序自动启动,以及是否允许应用程序收发短信,接下来就出现“Downloading failed”。<br /><br />在出现此问题时,使用的是 Orange France 的 SIM 卡,考虑到 GPRS 漫游可能会带来的问题,我们改用中国移动的 SIM 卡,则安装正常。看来和 SIM 卡有关系。但同时,在索爱手机上无法安装的 Orange France 的 SIM 卡,在其它一些索爱手机以及所有 NOKIA 手机上都能正确安装,所以并不是由 SIM 卡本身 GPRS 漫游引起的。<br /><br />几个星期以来,一直被这个问题困扰,百思不得其解。今天修改一个关于 PushRegistry 的 bug,突然想起来可能和 PushRegistry 有关,又重新 Google 了一番,发现了索爱官方论坛上的这个帖子:<br /><br /><a href="https://developer.sonyericsson.com/thread/17306">https://developer.sonyericsson.com/thread/17306</a><br /><br />帖子的作者遇到和我们完全一致的问题,而最终的解决办法,由索爱的技术人员给出了答案。<br /><br />这个无法安装的错误,确实和 PushRegistry 有关系。如果把 JAD 中“MIDlet-Push-*”的属性去掉,则可以正常安装。但导致出问题的最终原因,是手机短信选项设置中存在没有值得空选项,如“Service center”、“Message type”、“Validity period”。SIM 卡通常都会为这些选项自动设置,但如果某一个选项没有设置,成为空值,则会导致上述情况。<br /><br />我仔细查看了我们有问题的手机,所有手机上的“Validity period”都为空。设置成“Network maximum”后,MIDlet 安装和 PushRegistry 注册就完全正常了。<br /><br />另外,我们发现有问题的手机包括 K700、K500、W800、S700、K600 等,多为 JP-3、JP-5 平台的手机。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-1530742816847706532?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0tag:blogger.com,1999:blog-18923002.post-25704980358980182972008-10-09T21:14:00.004+08:002008-10-29T17:38:36.636+08:00用微软正黑代替新明细之前说到过在 Windows XP 系统下使用 Vista 的新中文字体“<a href="http://blog.windia.net/tech/2006/12/cleartype-ui.html">微软雅黑</a>”,而对应繁体中文,Vista 同样有一款字体——“微软正黑”。(<a href="/res/ms_vista_jhenghei.zip">点击这里下载</a>)<br /><br /><div style="text-align: center;"><img src="http://blog.windia.net/tech/imgs/article/2008-10-09/google_ms_jhenghei.gif" width="559" height="505" alt="繁体中文 Google 下使用“微软正黑”的截图"/><br/>繁体中文 Google 下使用“微软正黑”的截图</div><br />可能是由于繁体中文汉字笔划相对较多,这款“微软正黑”和雅黑比起来要淡一些。除此之外其它的使用方法都类似:需要打开 ClearType,粗细浅淡的使用习惯也可以通过 <a href="http://www.microsoft.com/typography/ClearTypePowerToy.mspx">ClearType Tuner 的 Windows XP PowerToy</a> 来调节。总体来说,和雅黑还是有着同样的水准,和以前的“新明细”体比起来,也更遵行当前平面设计审美需求的潮流吧。<br /><br />另外,据说 Windows Vista 下日文和韩文也有类似的字体,有需要的朋友也可以找一下,同样可以用在 XP 下。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-2570498035898018297?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0tag:blogger.com,1999:blog-18923002.post-51480048426559029842008-10-02T13:02:00.005+08:002008-10-29T17:38:36.637+08:00宋体-PUA最近发现系统里多了个新的字体——宋体-PUA,Google 了一番,才知道是随着 Windows XP SP3 更新新增的字体。<br /><br />仔细研究了一下,和通常宋体最大的区别在于,这个“宋体-PUA”在西文部分(半角 ASC-II 字符)使用了和 Times New Roman 一样的字体,而不再是以往难看凌乱的样子。以下列出了四种字体的对照图:<br /><br /><div style="text-align: center;"><img src="http://blog.windia.net/tech/imgs/article/2008-10-02/simsun-pua.gif" width="500" height="169" alt="宋体-PUA 与相关字体比较"/></div><br />可以看出,在将字体设置成“宋体-PUA”时,显示出来的效果和“Times New Roman”一致。“Times New Roman”是西文字体,显然不会带有汉字的字体,这是因为系统默认的汉字字体是“宋体”。<br /><br />我以前有<a href="http://blog.windia.net/tech/2007/01/windows-xp.html">文章</a>提到过以前的宋体自带西文字体很难看,字体比较小时,粗体的字母 M 会缩成一团,而大篇幅排版时,整个版面显得非常凌乱,因此我会在任何场合都避免使用宋体的默认西文字体。<br /><br />而现在微软终于意识到了这个问题,将其默认字体换成了西文系统(至少是英文系统)中衬线字体的默认字体“Times New Roman”,和同是衬线字体的宋体搭配起来,可谓相得益彰。<br /><br />第四行相信大家都不陌生了,是 Windows Vista 系统默认的“微软雅黑”字体(<a href="http://blog.windia.net/tech/2006/12/cleartype-ui.html">看另文介绍</a>),与宋体不同的是,微软雅黑是黑体的一种,属于非衬线字体。<br /><br />通常来讲,大篇幅的正文部分排版应该用衬线字体,如宋体,Times New Roman 等,然而中文较英文来说笔划较多,在字体比较小的时候,显示起来有很大的困难,如果再加上衬线部分,可能会更难。而非衬线的字体在这种情况下,反而显得清晰整洁,可能这也是为什么在追求界面视觉效果的今天,微软的 Vista 和 Macs 系统都选择的黑体的原因吧。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-5148004842655902984?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0tag:blogger.com,1999:blog-18923002.post-47020965469482315432008-09-28T16:01:00.004+08:002009-06-04T11:03:31.491+08:00让 Google Blog Search 收录文章Google 除了网页搜索外,还有个专门搜索博客文章的引擎,叫做 <a href="http://blogsearch.google.com/">Blogsearch</a>。基于 Google Blogger 构建的博客里面,反向链接的数据就来源于此。每次打开 Blogger 文章页面,实际上都会通过 JavaScript 作一次 Blogsearch 搜索,并把返回结果作为反向链接显示。<br /><br />你可能觉得既然 Google 网页搜索都收录了,那同是一家的 Blogsearch 一定也收录了。事实并非如此。<br /><br />通过 Google 的 <a href="http://www.google.com/webmasters/">Webmaster 管理工具</a> 向 Google 提交自己的 Sitemap,有利于让 Google 在第一时间收录网站更新的页面,但是,这仅限于网页搜索。<br /><br />最近发现 Blogsearch 似乎没有收录我的文章,仔细查看发现居然已经有两个月之久了,而这些文章通常在发布后快则数小时慢则最多一天内就被网页搜索收录,很是诧异。Google 了一把,找到<a href="http://www.dreamfreeblog.com/not-indexed-google-blog-search-258.html">这篇文章</a>分析原因,说是因为 Blogsearch 和 <a href="http://www.feedsky.com">Feedsky</a> 的自定义域名不兼容有关。<br /><br />我确实是在 FeedBurner 被封后改在页面上使用 Feedsky 的服务,但对于 Google 的 Blogsearch,向来是由 FeedBurner 自动去 Ping 的,就算 FeedBurner 被封但这个机制应该是仍然在工作的。而且要出问题早该出了,也不至于是在最近这两个月发生吧。百思不得其解,打开 <a href="http://www.feedburner.com/">FeedBurner</a> 仔细查看了一下设置,发现设置中“Publicize &raquo; PingShot &raquo; Google Blog Search Pinging Service”前面的复选框没有勾上!难怪 Blogsearch 不收录文章了,都没人通知它了啊…… 至于为什么 FeedBurner 上这个选项是关闭就不得而知了。如果你也使用 FeedBurner 的服务,也发现 Blogsearch 收录有问题,那么最好也去检查一下。<br /><br />把这个选项打开后,为了以防万一,又到 <a href="http://blogsearch.google.com/ping">Blogsearch 的网址提交页面</a>重新提交了一下网站的 feed 地址。大约过了一小时后,最近两个月没有被收录的文章就立即能够被搜索到了。注意这是一次性的通知服务,如果没有自动 Ping 的机制,则每次网站更新后都要手动执行这个操作。<br /><br />如果使用其它支持自动 Ping 的 BSP 的话,可以添加 Blogsearch 的 Ping 服务 API 地址:<br /><blockquote><div><code>http://blogsearch.google.com/ping/RPC2</code></div></blockquote>如使用 WordPress 的话,在 Update Services 里面添加这个地址就可以了。更多详细内容可以参考 Blogsearch 的<a href="http://www.google.com/help/blogsearch/about_pinging.html">常见问题</a>和 <a href="http://www.google.com/help/blogsearch/pinging_API.html">API 接口文档</a>。<br /><div class="postfull"><br /><strong>Updated on 2008/10/29:</strong><br /><br />实践证明,使用 Google Blog Search 对 Google 文章的收录是有显著成效的。如下图,在文章发布后,立即 Ping 了 Google Blog Search,不多久就被收录;9 分钟后,Google 的网页搜索便也收录了这篇文章。<br /><br /><div style="text-align: center;"><img src="http://blog.windia.net/tech/imgs/article/2008-10-29/google-9-min.png" width="561" height="223" alt="Google 网页搜索在 9 分钟内久收录了新文章"/></div></div><div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-4702096546948231543?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com2tag:blogger.com,1999:blog-18923002.post-34283405864103921552008-09-24T18:28:00.003+08:002008-10-29T23:59:50.136+08:00Google 手机地图 2.2.0 版<a href="http://googlechinablog.com/">Google 黑板报</a>消息称 <a href="http://googlechinablog.com/2008/09/22.html">Google 的手机地图升级到了 2.2 版本</a>,和之前的版本相比,多了“我的位置”、“行车路线”和“公交换乘”功能。<br /><br />这些功能在以往的 Google 地图英文版是有的,只是先前的英文版本中没有国内的地图信息,于是就造成了<a href="http://www.google.com/mobile/gmm/index.html">中文版</a>有地图不能使用 GPS 辅助,<a href="http://www.google.com/mobile/default/maps/index.html">英文版</a>有 GPS 辅助没有国内地图数据的尴尬境地。<br /><br />我使用的是 Symbian S60 v3 的版本。这次升级时,手机上中英文版本显示的版本号都是 2.02(0)。简单的试用了一下,在没有 GPS 功能的情况下,也能通过 GPRS 基站数据获得大概的当前位置,只不过精度范围 2500 米至 5000 米,似乎实用性并不大。行车路线和公交换乘倒是比较方便,只是后者的公交数据仍然相对滞后。例如搜索从“成都市游乐园”到“成都市九眼桥”,会显示出 60 路,而这条线路已经在几个月前就取消了。<br /><br />比较奇怪的是,在仅安装 2.2 中文版的情况下,程序中并没有找到“GPS 辅助”的选项,而 2.2 的英文版中却有“Use GPS”的选项。匪夷所思的是,英文版安装好后,中文版的“GPS 辅助”选项又神秘的出现了。在 Nokia N95 8G(自带 GPS)和 Nokia N73(蓝牙连接外置 GPS)上测试,情况一样。<br /><br />另外,在英文版中,国内的行车路线和公交换乘功能似乎不可用。所以,看来比较理想的解决办法,就是同时安装中文版和英文版,这样才能在中文版中使用所有的功能…… <br /><br />最后,SISX 文件的下载地址:<a href="http://www.google.cn/gmm/GoogleMaps.sisx">中文版</a>、<a href="http://www.google.com/gmm/GoogleMaps.sisx">英文版</a>。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-3428340586410392155?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0tag:blogger.com,1999:blog-18923002.post-54228975758360229192008-09-23T17:08:00.002+08:002008-10-29T17:39:06.569+08:00MIDlet 在 NOKIA 手机上安装失败这两天发现一个奇怪的问题,就是 MIDlet 在 NOKIA 6680 上无法安装。在 Jar 下载完成后,会显示“Unable to install. Not enough memory!”而安装之前手机刚刚执行过出厂复位操作,机身空余存储空间约 7MB,因此,安装失败不可能是装不下 MIDlet 的内容而导致的。<br /><br />经过反复研究,终于发现问题出在 Jad 文件属性 MIDlet-Data-Size 上。这个属性是 MIDlet 用来告诉手机,该应用程序将需要多少 RMS 存储空间。由于 NOKIA 6680 的 RMS 容量,实测有 7128 KB,和机身的空余存储空间相等,也就是说理论上手机能装多少,MIDlet 的 RMS 就能装多少,因此应用程序的 Jad 里头,MIDlet-Data-Size 设置的值是 133072,也就是 128KB。<br /><br />经过反复修改 Jad 文件里 MIDlet-Data-Size 的值,发现允许的最大值为 65536,也就是 64KB。任何超过这个值的应用程序,在安装时手机都会拒绝。<br /><br />同样的问题在 NOKIA 6131 上也同样存在。如果有其它手机也有类似问题,以后会随时更新。<div class="blogger-post-footer"><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-178540-3"; urchinTracker(); </script> <div id="sc_image" style="display:inline;"><a title="site stats" class="statcounter" href="http://www.statcounter.com/"><img src="http://c8.statcounter.com/959241/0/ab2d6787/1/" alt="site stats" style="border:none;"/></a></div><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18923002-5422897575836022919?l=blog.windia.net%2Ftech%2Findex.html'/></div>Gregoryhttp://www.blogger.com/profile/06414658053253316047noreply@blogger.com0