Archive for August, 2005

Archives

Popularity: 12%

Popularity: 12%

一直用Stattraq插件来统计Blog的访问信息,使用起来还不错。后来发现,我的Blog上很多关键词都是来自Baidu,而Stattraq根本没有对Baidu的特殊处理,于是Hack一下,让Stattraq也能统计百度的信息。
1)BaiduRobot
在"stattraq.php"的函数"statTraqGetBrowser"中,添加对Baidu Robot的识别(顺便也识别一下Sogou的Robot吧):

<?php
}else if(strpos($ua, "Baiduspider") !== false){
        $browser_type = ST_BOT;
        $s_id = "Baiduspider";
        return "Baiduspider";
    }else if(strpos($ua, "sohu-search") !== false){
        $browser_type = ST_BOT;
        $s_id = "SogouBot";
        return "SogouBot";
    }
?>

原理很简单,就是分析HTTP头中的"HTTP_USER_AGENT"信息,负责任的搜索引擎都会给出自己的标志,比如Google的"Googlebot",MSN的"msnbot"等等,对于那些把自己伪装成浏览器的搜索引擎,不统计也罢。
一个需要注意的问题是大小写不能搞错。
然后再修改一下"stattraq-install.php",主要是为了今后的升级:
<?php
$sqlQuery = "UPDATE {$tablestattraq} SET user_agent_type=1
        WHERE browser = ‘Googlebot’ OR
            […]

Popularity: 61%

今天你”怪癖”了么?

有点儿像传销?我的上线是Tinyfool。传销也好,六度空间也好,SNS也好,这个游戏像病毒一样蔓延开来,通过这种方式来看看朋友的朋友,实在是一件有趣的事儿。通常看到朋友Blogroll中的链接,我肯定不会去点,这下,总是有好奇心去看看,从这里面学到点儿什么呢?
规则:

开始游戏的人出一个题目,在自己的blog上写下答案,然后把题目丢给另外五个人,在文末附上这五个人的连结,并且到这些人的留言版上留下:“你被贴了。” (哈哈是我自己加的)。这五个被tag到的人,在自己的blog注明(并附上连结)是从哪一个blogger那里传来的题目(这时候“引 用”功能就很好用),然后写下答案,再去贴另外五个人。如此继续下去。

我的五个怪癖:
不管干什么都要听音乐:写作业,编程,开车,Anything;
穿长袖衣服的时候喜欢把袖子捋起来:即使冬天也如此,老爸老妈老害怕我着凉;
照相喜欢侧面:不管自己照还是照别人,尤其喜欢夕阳西下时候的侧面肖像照;
喜欢喝水:而且喝水速度极快,不知道每天能喝多少;
喜欢戴太阳镜装酷:从我的照片就能看出来:P。
发展五个下线:
米嘉:算是死党了,聪明的家伙,我总想如果在国外,他不是吸毒混混,就是非常棒的Geeks。
车东:恐怕不需介绍了,Xerdoc的好朋友,我觉得他最棒的一点是善于把自己的所学所想分享出来。
吉子:我身边最早的Blogger,2002年吧。痴迷于各种技术,想法多多又善于自我批判。
鹤鹤:从未谋面,是一个非常喜欢Blog的女孩儿,"给身边的人带去的都是快乐;有时候骂脏话骂得比男人还厉害.. "。
姑夫:我身边年龄最大的Blogger了,笔耕不辍,只为对文字的喜爱。
Popularity: 27%

Popularity: 27%

Google的影响力

太可怕了,昨天,至少70%在内的我订阅的RSS都在谈论Google Talk(甚至TimBray和Miguel也都不能免 :P),虽然,我的订阅IT Blogger居多,但这种壮观的景象也只有Google才能做到。虽然这个咚咚Bug多多(我的Inbox就时好时坏,中文显示也有问题),但是不要紧,重要的时它是Google的,根本不用Google自己,仅靠口口相传。别的东西一出来,都是大家在挑刺,Google的一出来,却是大家帮他解释为什么这么做。
Google也真的善于攻关,从Gmail的邀请制,到Google Talk中About的神奇数字,甚至连股票抛售都要选择14159265这样的数字,怎能不让我们觉得这是如此Cool的一家公司?
相比之下,昨天一起发布的MSN Messenger 7.5远没有这般风光,再想想前段盛大发布的圈圈,很少有人谈起,这,就是Google的影响力。
想想昨天Google Talk发布前的几个小时,有人一直在刷新它的主页,有人不断尝试Jabber的5222端口,Google有如此多痴情的Fans。
Google已经在一片鲜花和赞誉声中慢慢壮大了,提起Google,映入眼帘的就是“Don’t be Evil”、“反垄断”、“技术理想主义”、“自由”、“酷”这些字眼,可是我越来越发现,我出入互联网的信息已经几乎都被Google垄断了:Gmail, Google Talk, Google Search, Google Search History,Google Web Accelerator,也许将来还有Google Browser,信息垄断-这也许比平台、软件的垄断来的更加可怕。
只是突然的一种感觉,想把它记录下来,毕竟,我喜欢Google。但始终觉得,还是去中心化、百花齐放的互联网会更有魅力,更酷!
BTW: 说句有关Google Talk的,从Miguel的Blog中看到这样一句话,值得玩味:

Google’s IM is based on the open Jabber protocol which not only allows for many implementations and creative uses of IM, but in addition Jabber is an interesting protocol that can be used […]

Popularity: 26%

Google Talk Debut

Google Talk Debut
Originally uploaded by Dreamwords.
Google Talk Debut today, you can download it from www.google.com/talk.

They say talk is cheap. Google thinks it should be free. Google Talk enables you to call or send instant messages to your friends for free–anytime, anywhere in the world. Google Talk offers you:
* Choice: Get in touch how and […]

Popularity: 41%

MSN Messenger 7.5 Released

MSN Messenger 7.5 Released

Originally uploaded by Dreamwords’s Photos.

MSN Messenger 7.5 Released. You could download it from messenger.msn.com/.
I noticed that Google will lauch it’s IM service on Wednesday. Maybe this is the reason why MSN Messenger 7.5 released today? Who knows
How ever, just enjoy it.
BTW:
Flickr can post entries to my blog using XMLRPC, this […]

Popularity: 36%

Dissect Lilina

Lilina是一个优秀的开源RSS聚合器,采用PHP编写,不需要数据库的支持,它可以把你添加的各种RSS源按照时间排序,提供给你一份最终的结果,就像一份报纸。其它的一些Feature包括支持直接Post到你的Delicious或者Furl帐号,支持Google的搜索结果,支持CSS定制等等。
从车东的介绍中了解了这个开源项目,看了看Lilina的代码,其实非常简单,而且很大一部分工作都是由MagpieRSS完成的。简单总结一下:
1) 用到的其它库
MagpieRSS - 一个PHP的RSS的解析包,支持RSS0.9, 1.0, 2.0以及Atom (0.3)。
Snoopy - 是一个基于PHP的网络包,用来实现HTTP/HTTPS的Get, Post等功能,这个包其实是MagpieRSS所依赖的。
2) Feeds的保存
Lilina聚合的Feeds列表序列化保存在".myfeeds.data"文件中,添加、删除的时候会重建"/cache/opml.xml"文件。添加Feeds有三种方式:

直接添加RSS;
上载OPML文件,Lilina用"inc/link-parse-opml.php"这个文件(这个文件是从WordPress的CodeBase中拿来的)来解析OPML;
通过Bookmarklet:可以在你的浏览器上放置Lilina的Bookmarklet,很简单,其实就是把当前页面的URL传给"edit.php",然后通过RSS Auto Discovery标准解析来得到当前页面的RSS信息(这个函数是getRSSLocation,原始出处在此)。比如说,我的这段JS如下:

javascript:location.href=’http://yourblog/lilina/edit.php?url=’+encodeURIComponent(location.href)
3) 工作流程
整个工作流程很简单,首先,根据Feeds列表取出所有的RSS源,然后根据这些RSS源取出RSS的每个Item(值得一提的就是缓存策略了,不过,这是MagpieRSS内嵌的功能),接着根据时间排序,再显示出来。
比较有意思的是每个RSS源的Icon的获得:如果RSS源提供"image",那么就用这个RSS源提供的Image地址,比如我的MSN Space的RSS中:
<image>
    <title>痴言梦语</title>
    <url>http://storage.msn.com/s1pZ8pl_R1n1zHthyx54ML8qRIYh7cA3NC9_rYS5h-ePSPdBPM1WTzZ8DbK8I_CmUfxjbVT5SVq20Kn2jdWeXIyQQ/00_t.jpg?MdToken=768060658760182</url>
    <link>http://spaces.msn.com/members/elan/</link>
</image>
如果RSS不提供,就用下面两个函数来提取网站的Favicon图标,并进行缓存。这是我的网站的Favicon图标。
<?php
function channelFavicon($location);
 
function getFaviconURL($location);
?>
4) MagpieRSS
MagpieRSS由"rss_cache.php", "rss_fetch.php", "rss_parse.php", "rss_utils.php"等文件组成。最核心的功能函数是
<?php
function fetch_rss ($url)
?>
它会首先检查这个RSS在缓存(默认存放在"cache"文件夹中)中是否过期,如果不过期,就直接从缓存中取出,否则,重新Fetch RSS,并更新缓存。
而且MagpieRSS还利用了ETag,用来节省带宽、提高效率。

ETags and Last-Modified headers are two ways that feed publishers can save bandwidth, but they only work if clients take advantage of them. Universal Feed Parser gives you the ability […]

Popularity: 29%

One of my US friends ask me how to offset the timestamp of Lilina RSS aggregator. He lives in the east coast but his web host is in the west.
In fact, it’s very easy to do that, and I do think Lilina should add such support.
1) Add the following line in "conf.php"
<?php
$TIMEZONE_OFFSET = 12;
?>
The value […]

Popularity: 35%

Pull -> Push era coming ?

在程序设计的时候,事件处理通常有两种方式:1)轮询;2)订阅。
轮询:是以一定的时间间隔不断的去查询某个事件是否发生,这是需求者主动的行为,需求者需要付出艰苦的劳动 :P;
订阅:是供给者在事件发生的时候,主动向订阅了这个事件的需求者发送通知;
从整体效率角度来说,订阅模式要比轮询模式节省资源,没有额外的消耗。
我想网络也是一样,可能也会从一个Pull的时代过渡到Push的时代。
Popularity: 29%

Popularity: 29%

那一年

那一年你正年轻
总觉得明天肯定会很美
那理想世界就象一道光芒
在你心里闪耀着
怎能就让这不停燃烧的心
就这样耗尽消失在平庸里
你决定上路就离开这城市
离开你深爱多年的姑娘

听着这首《那一年》,总是想起那个不平常的夏天,烟雾缭绕的鸡翅店、通宵编程的一个个晚上、胡思狂想带来的疯狂 … 年轻真好
Popularity: 22%

Popularity: 22%


Creative Commons License
This work is licensed under a Creative Commons License.

曾梦想仗剑走天涯,看一看世界的繁华,年少的心总有些轻狂,如今已四海为家