分类 劳动万岁 下的文章

这篇日志,是为了纪念几年前一段狂热试用开源程序的日子……

想做小白鼠,试用最新版本的程序,就需要每天访问各种程序的官方网站,看是否有更新,过去我是通过订阅程序官方的博客或邮件列表来达到及时关注的效果,这是一个费时费力的过程,而且并不是所有程序都有博客或是邮件列表。于是我就构思了一个小工具网站,用于自动检测各种程序更新。

核心的机制是通过监测程序的发布网页(尤其是程序下载页的更新)是否有变化,来判断程序是否有更新(当然这样并不精确,所以在网站用语选择上,使用“可能”这样的词)。

一、监测机制
1、RSS监测,这个没什么好说明的
2、Page2RSS,利用这个工具把网页转成RSS来检测
3、监测网页的MD5值是否有变化,需要把整个网页load到服务器,消耗比较大
4、对于开源程序,最好不过的方式是检测SVN的更新,还能获取到更新日志,效果佳
5、托管在google code、sf.net上的项目,单写规则监测,能获取更优质的信息,例如监测typecho的update list

二、展示机制

首页:
将被监测的程序分为两种,在显示时略有区别
1、有SVN,能获取到详细信息的
2、只能监测到可能更新的

采用按最后一次监测到更新的时间倒序排列,同日更新的按收录顺序排列,就像是一个冒泡算法,有更新的会排到前面。用于大致如下:

“XXX日检测到XXX程序可能更新”

程序展示页:
这里还说产生一个需求,就是想进一步了解某一个程序,这就需要有一个单独程序展示页,包括程序简介以及采集网络中对该程序的评价(通过采集blogsearch.google.com的搜索结果实现,缺点在于可能会有重复信息,优点是自动更新,质量由google去保证,最大限度减少人工)。

三、程序实现
这里我实际上构思了两种实现方式:
1、单独写一个程序。优点是简单,确定是不方便编辑,需要做个后台管理部分
2、改造博客程序实现。优点是管理方便,缺点是冗余

单独程序实现包括两个部分:
1、程序
包括
1.1 index.php
功能:判断是否需要更新,并导入一个html显示,下面用伪代码写一下思路:
lastUpdateTime+7200{ //导入监测更新的程序 import checkUpdate.php; } //不需要更新则导入一个事先生成的html,可以减少数据库查询 import display.html;

1.2 last_updateTime.txt
功能:记录上次更新时间的txt文件

1.3 check_update.php
功能:根据监测类型监测程序是否更新,并写入数据库,需要分组,避免超时,以下是伪代码表明思路:

1.4 update_comments.php
功能:获取以程序名为关键词的google blogsearch结果,并采集到评论表里,供程序展示页使用,需要分组,避免超时,以下是伪代码表明思路:

1.5 writePage.php
功能:取出数据库内容,生成html,供首页显示,以下是伪代码表明思路:

1.6 index_content.html
功能:首页内容,供index.php调用

1.7 display_soft.php
功能:显示程序展示页

2、数据库设计(简表)

2.1 soft表
字段:
softID 标识录入程序ID 数值
softTitle 程序名称 文本
softSummary 程序简介 文本
softURL 官方地址 文本
checkURL 监测地址 文本
checkType 监测类型 数值

2.2 comment表
字段:
commentID 标识评论ID 数值
commentURL 评论来源URL 文本
content 评论内容 文本
contentBlogTitle 评论来源博客名称 文本
contentBlogURL 评论来源博客URL 文本
softID 标识从属程序ID 数值

上面就是单独写程序的构思,还有一种改造博客程序的实现方式,原理差不多,就是需要写监测程序的功能和加入评论内容的功能。

多一句嘴,已经有网站很好满足了我最初构思这个工具网站的需求。http://chkversion.com/

_setVar函数跟_trackPageview函数一样,灵活运用可以极大丰富统计报告。简单来说,_setVar函数可以定义一个值,当被触发的时候,该值被记录。

1、统计有注册意愿的用户
注册,不出意外都需要访问一个注册页面,那么统计访问这个页面的用户也就知道了有多少用户动过注册的念头,当然可能看了一眼,没有完成注册。我们可以在注册页面这样部署代码:

2、统计注册成功的用户
注册的最后一步无非就是按下“确定”按钮,那么就在完成注册的“确定”按钮上加上onClick事件,比如
onClick="pageTracker._setVar('完成注册');

3、统计登陆用户
对于有会员系统的网站来说,可能需要知道有每天有多少用户登陆网站,用于考查网站提供的会员增值服务是否有吸引力,关系到网站是否可以通过对会员的精准营销来赢利。我们可以在给登录链接加上:
点击此处
同样的,也可以在登陆页的确定按钮上加。

以上三个是比较容易想到的应用,值得一提的是,_setVar函数被触发后,定义的值是会被写入cookie的。
4、观察用户兴趣
对于一个大的电子商务网站来说,对用户的购买兴趣一定是有兴趣的,_setVar函数可以通过网站上访问的页面或在表单上做出的响应对其进行分类,前面三个就是演示。
假设网站有个多个商品分类,我们分别给每个分类加上

所有访问该页面的访问者都将被分配到"IT书籍"组,也就是对IT书籍有兴趣的用户。
google给出了一个通过下拉菜单触发的例子: