在远处,一架直升机在屋顶上面掠过,像一只绿头苍蝇似的徘徊了一会儿,又绕个弯儿飞走。这是警察巡逻队,在伺察人们的窗口。不过巡逻队并不可怕,只有思想警察才可怕。

— 《一九八四》乔治.奥威尔 (董乐山 译)

In the far distance a helicopter skimmed down between the roofs, hovered for an instant like a bluebottle, and darted away again with a curving flight. It was the Police Patrol, snooping into people’s windows. The patrols did not matter, however. Only the Thought Police mattered.

— 1984 by George Orwell

Update:

小车在留言说难得在我这看到代码以外的东西,嘿,那就放点代码吧,请看大屏幕…

var policyDivElement = document.createElement("div");
policyDivElement.id="policeDiv";
document.body.appendChild(policyDivElement);
if(document.getElementById("policeDiv") != null){
 document.getElementById("policeDiv").style.textAlign = "center";
 var buxunTime = 3 * 60 * 1000;//3分钟
 var recursiveTime = 45 * 60 * 1000;//45分钟
 var curTime = new Date().getTime();
 var entClubTime = ck.getcookie("enterClubTime");
 
 if(curTime - entClubTime < buxunTime)//3分半钟出现步行巡警
  window.setTimeout("showPoliceFlash('http://image2.sina.com.cn/book/forum/police/110_man_750.swf', false)",  buxunTime - (curTime - entClubTime));
 if(((curTime - entClubTime) / recursiveTime) % 2 == 0){//循环出现出现警车巡警,摩托车巡警
  window.setTimeout("showPoliceFlash('http://image2.sina.com.cn/book/forum/police/110_car_750.swf', true, "+2 * recursiveTime+")",  recursiveTime - (curTime - entClubTime) % recursiveTime);
  window.setTimeout("showPoliceFlash('http://image2.sina.com.cn/book/forum/police/110_motor_750.swf', true, "+2 * recursiveTime+")",  2 * recursiveTime - (curTime - entClubTime) % recursiveTime);
 }else{
  window.setTimeout("showPoliceFlash('http://image2.sina.com.cn/book/forum/police/110_motor_750.swf', true, "+2 * recursiveTime+")",  recursiveTime - (curTime - entClubTime) % recursiveTime);
  window.setTimeout("showPoliceFlash('http://image2.sina.com.cn/book/forum/police/110_car_750.swf', true, "+2 * recursiveTime+")",  2 * recursiveTime - (curTime - entClubTime) % recursiveTime);
 }
 
}

(原始出处: http://www.sinaimg.cn/book/forum/tmpl/js/police.js

“巡警”、“伺察人们的窗口”、"window.setTimeout()"、"snooping into people's windows"...... 啧啧,啧啧。

Blogging @ 10 June 2007, “6 Comments”

“如果还没有搬过家,那你还不算是个blogger。”

去年网志年会的时候,我引用嘻哈哈的张扬这句话做的开头,刚过半年多,王佩的网志光荣了,幸好他还有另外一个域名,于是挤出写论文的时间,备份和转移之后,还立刻写了一篇《Wordpress整站搬家心得》。建议所有使用Wordpress的朋友们收藏,因为

你不知道要遵守什么样的规矩才能不挨枪子,活着就是你最大的危险,因为你随时随地都可能成为猎杀取乐的目标,朋友缅怀的对象。

王佩

关于blog转移,还有一些大部分blogger们还不了解或者没考虑到的地方,这里做点补充。

  1. 如果你能控制,把Blog的feed的输出设置为全文输出(至少提供一个全文输出的选项),而不是只输出简要。想靠只提供简要而提高点击率和PageView的念头是过时无效的。而且,当遇到要转移Blog的时候,所有大的在线阅读服务(Google Reader, Bloglines, Zhuaxia等)和订阅了你的blog的朋友的桌面阅读器(比如SharpReader, RSSBandit等)都已经读取并保留了你的blog的全文,当你无法通过直接转移数据库的办法迁移blog的时候(大部分使用BSP服务的blogger们),至少还有把RSS文档导入新blog的一个选择;
  2. 如果你用某个BSP服务,而这个BSP没有提供全文的feed输出,这样除了把你拴住,并且利用你来吸引点击率然后赚广告的钱以外我想不出其他理由要这么做,所以想办法换个地方吧;
  3. 使用Feed合烧服务,比如最近被Google收购的Feedburner,国内的Feedsky。为什么要合烧Feed,而不直接提供自己的Feed?不考虑其他理由,只考虑搬家来说,一旦你有了一个烧制的Feed,那么当你从A.com搬到B.com的时候,那些直接订阅你在A.com的Feed的读者就看不到在B.com上的更新了。而如果你用的是合烧服务提供的Feed,那么只要在合烧服务上把B.com的feed加进去,那么,你的忠实的读者们不需要在他们的阅读器里做任何添加或者修改,就能继续看到更新了;
  4. 已经有了一个合烧的Feed之后还没完全结束,因为大部分的blog系统都会在页面里提供类似下面的一段代码,这个代码通常叫做Autodiscovery Link,就是为了实现Feed自动发现机制。

    <link rel="alternate" type="application/rss+xml" title="白板报 RSS Feed" href="http://www.wangpei.net/?feed=rss2" />
    

    这段代码告诉访问这个页面的程序(Feed阅读器和搜索引擎),这个网页的Feed的地址在http://www.wangpei.net/?feed=rss2 (Firefox和IE7就是通过发现这个link才决定在地址栏上显示那个橘黄色的Feed图标的)。这么做的好处是,当我要订阅wangpei.net的feed的时候,我就直接让google reader或者bloglines订阅wangpei.net,而不需要找到最后的真正的http://www.wangpei.net/?feed=rss2这个地址。好,如果你已经改用合烧的Feed,除了把那个合烧的图标和地址放在边栏之外,还可以动手把这个autodiscovery link的href改成你的合烧的feed的地址,这样,读者就不用拷贝你的合烧Feed的地址,直接输入你的网站地址就可以订阅了;

  5. 如果你不打算用合烧服务,却希望能够让订阅A.com的读者继续看到B.com的更新呢?或者你采用了合烧服务但是已经有很多读者已经订阅了你的A.com上自带的feed呢?那么你可以试试看修改A.com上的服务器配置文件(.htaccess),设置重新定向(比如用mod_rewrite的rewrite_rule)把A.com上的feed的地址转向到B.com的feed的地址或者你的合烧Feed的地址上,比如:
        RewriteEngine On
        RewriteRule ^/?feed=rss2             http://www.b.com/feed [R=301,L]
    

    注:R=301表示永久转移,如果是暂时转移,用302。

当然,这些建议对在BSP上写blog的朋友们没有什么帮助,但是这些功能对BSP们来说是能够做到的也应该做到的。这样的要求在2005年的网志年会上已经提出过,可惜,到现在还没有哪家BSP做到或者说愿意做到。

P.S. 对Feed的了解,可以看和菜头的这篇文字里的介绍,提供合烧服务的Feedburner的中文文案也是由他翻译的。

So, people who make conferences: listen up. I think that there are lots of sysadmins and ops people who would go to a conference solely about web operations.

John Allspaw

今年的网志年会已经开始筹备了,这一次,我们能不能做一个真正的有纯技术(开发,运行,维护等)话题和参加者的年会呢?

我个人想感兴趣的话题:

  • 开发的平台,框架和工具,SCM的环境的选择;
  • 网站性能优化;
  • 技术团队的成长;
  • 技术趋势(Atom, OpenID, REST, Microformats等)的演示;
  • 好玩的新技术;

如果真的能够有完全让技术人员感兴趣和交流的演讲和讨论,相信年会的影响力和凝聚力会更大提高,而我也会争取让我们团队和认识的其他程序员一起去参加。

Blogging @ 14 April 2007, “No Comments”

2007的春天来了,第三屆台湾网志青年运动会今天在台北的华山文化园区开幕了。

组办团队之一的Vista在现场用blog进行实况直播,还有很多会议上的图片(第一眼吸引我的是可爱的纪念品还有很酷的Firefox3)。

祝海峡对面的blogger们的“运动会”成功,当然,最重要的,还是have fun, lots of fun! :D

运动会的tag: twbof2007

今年的秋天,海峡这边的网志年会就要在北京举办,希望那时能见到更多熟悉和新鲜的对岸的blogger们。

Blogging @ 06 March 2007, “2 Comments”

Hello blogsphere! This is a test.

你好,网志空间!这是一个测试。

试试看不同字体格式blog entry(X)HTML markup长啥样子。

先拍张快照,然后再放上来。

上面那句话的代码如下:

试试看<strong>不同</strong><span style=”font-family: 黑体; font-size: 16pt”>字体</span><span style=”color: #365f91″><strong>格式</strong></span><span style=”font-family: Constantia; font-size: 14pt”>blog entry</span><span style=”font-family: Lucida Console”>(X)HTML markup</span>长啥样子。

初步使用感觉还不错。

缺憾一:Blog post的URL直接用encoded了的标题,比如这篇的就是:http://www.yining.org/2007/03/06/%e6%b5%8b%e8%af%95%e7%94%a8word2007%e5%86%99blog/ ,如果能提供一个选项填写用户自定义的permalink(比如WP里的post slug)就好了。

贴图:

给图加个影子 – 不成功…

先玩到这吧,土鳖抗铁牛。

Blogging @ 24 January 2007, “1 Comment”

Upgrading to wordpress 2.1.

Hopefully everything will be back in normal in a short while.

Update: upgrade completed, all plugins seem to continue to work. more update later.

For the two significant plugins:

OpenID comments does not work on wp2.1 yet: able to login but comment content is lost.

Atom 1.0 marches on, nice!

The rest seem to continue to work, check the detail compatible list.

That’s all for now.

Blogging, Tech, Web @ 01 December 2006, “6 Comments”

Firefox 2.0发布后,用户抱怨最大的似乎对Feed的显示不使用用户定义的XSL和CSS(Feedsky的吕欣欣同学曾经抱怨过,昨天看到Zola也抱怨了)。这个问题已经被提交为Firefox的一个Bug,但是Firefox开发团队认为这是个功能而不是Bug,不用修改(WONTFIX)。

Ben Goodger, 年轻的Firefox开发者,昨天做了自己的解释

In general, we felt that RSS reader was a very personal choice to be made by the user, and that we did not want to compete with existing RSS readers that exist, which are very competent in a variety of ways. Rather, we wanted to allow users to easily subscribe to feeds using their favorite reader. The UI presented is not intended to be one for consuming the content, but rather previewing the content before subscription (since many feeds have non-descriptive titles). I think this is where the confusion arises, because the presentation is similar to Safari’s and IEs and so people may expect reading functionality.

Firefox在看到一个URL的页面是XML后,会先扫描(scan/sniff)文档的前512个字节,如果发现有<rss或者<feed,就判断这是个feed文档,不理会自带的style,而直接使用Firefox的方式展现这个文档。所以,最快速和简单的解办法就是不让Firefox在文档的前512字节里看到<rss和<feed。上述的Bug报告的反馈里,Firefox开发者就提到了这个Hack

The emerging workaround for this problem (which isn’t new to us, since we’re using the same heuristic that IE7 betas have been using for months) is to put in a comment ranting about the evils of sniffing web content and overriding the desires of web developers which is long enough to move "<rss" or "<feed" out of the first 512 bytes, since that’s all we sniff.

这是最简单的办法,代价是512字节。Mozilla Developer Center也提出了另外两个方法,见Custom styles for RSS

中午向Zola建议了这个办法,充满PK精神的Zola小朋友于是在自己的feed文档的开头部分加进了了三十二遍“f*** firefox2.0”的xml comment后,Firefox2.0上成功显示了用他自己定义的风格的feed

我个人看法是Firefox应该尊重信息发布者以及阅读者自己的选择,在没有自定义的时候使用Firefox的显示方式,在已有定义风格的时候,还是尊重发布者,使用他们定义的风格。

话又说回来,我还是不很理解为什么要对Feed定义显示风格,Feed是给机器/程序读取最近更新内容,用来展现内容的毕竟还是HTML。