2005-12-29

利用Rss烧制技术解决自动更新功能带来的流量问题

客户端软件的自动更新并不是一个很难做的功能,365kit的客户端就可以自动更新。前些日子我还帮一个朋友做过他的软件里面的自动更新功能。写成了一个可执行文件,因为我发现自动更新功能其实和软件本身的逻辑关系往往不紧密,所以可以把自动更新抽出来,单独做成一个软件。这个可执行文件我打算过段时间好好做做,作为免费软件公布,这是题外话。

自动更新的原理一般都是在软件启动后,从服务器下载一个版本描述文件,然后跟本地版本进行比较决定是否升级。这样在软件有大量用户的情况下,版本描述文件一定会成为流量热点,不停地被访问,占用大量带宽和流量。我的那个朋友的服务器在国外,国外的托管和虚拟主机都是有流量限制的,所以流量问题更是不能忽视。

怎么才能降低这个流量呢?

我想可行的方法很多,比如压缩版本描述文件,比如增加检查版本描述文件的时间间隔等等。但是似乎都只是治标的方法,很难治本。

今天我突然想到一个主意,我们可以把版本描述文件做成Rss格式,然后找一家Rss烧制公司,把这个Rss烧制一下,然后在自动更新的程序里面设定检查烧制后的地址。这样带宽和流量问题就被转嫁出去了。

这样做唯一的问题可能是当Rss烧制公司的主机出问题的时候,我们的自动更新功能会受到影响,这里我想可以采用的解决方案是设定程序先抓取Rss烧制后地址,然后抓取我们真实服务器的地址,这样可靠性和流量问题都得到了解决。

附:
国内的Rss烧制公司目前只有 Feedsky.com 一家,国外的有 feedburner.comrsscache.com

Technorati Tags: , , , , ,



2005-12-15

安装Google Analytics一个月后的访问报告

11月14日我开始在微尘程序员网站Tinyfool@Donews放置Google Analytics统计服务的代码,现在已经有一个月了,小结一下。很多数据没有放出来,是因为我觉得他们的走势还有待于观察,等待数据更加详尽,我会放出来的。

微尘程序员网站的访问者地理分布

微尘程序员网站的访问者地理分布

北京的访问者有3767个,在各地区占首位,有微量的海外访问者。

微尘程序员网站的Google访客统计

微尘程序员网站的Google访客统计

最高点是130,最低点是41。

微尘程序员网站的Baidu访客统计

微尘程序员网站的Baidu访客统计

最高点是77,最低点是22。

Tinyfool@Donews的访问者地理分布

Tinyfool@Donews的访问者地理分布

Tinyfool@Donews的Google访客统计

Tinyfool@Donews的Google访客统计

最高点是37,最低点是2。

Tinyfool@Donews的Baidu访客统计

Tinyfool@Donews的Baidu访客统计

最高点是13,最低点是4。



2005-12-12

使用Python开发Msn机器人[支持Msn协议MSN Messenger Protocol的Python库]

前些日子为了开发GTalk(Google Talk)机器人找了下支持Jabber/XMPP协议的Python库,其中的Twisted Words也支持Msn协议MSN Messenger Protocol,不过那个库还需要Twisted Core,而Twisted Core还需要Zope,有点麻烦,所以我没采用。

昨天试了下Msnp.py,试验成功。

import msnp
import time

class MsnChatListener(msnp.ChatCallbacks):
def message_received(self, passport_id, display_name, text, charset):
print '%s: %s' % (passport_id, text)
self.chat.send_message(text, charset)

class MsnListener(msnp.SessionCallbacks):
def chat_started(self, chat):
callbacks=MsnChatListener()
chat.callbacks = callbacks
callbacks.chat = chat
def state_changed(self, state):
if state == msnp.States.ONLINE:
print 'You are now online.'

msn = msnp.Session(MsnListener())
#输入你的Msn帐号密码
msn.login('XXXXXX@gmail.com', 'XXXXXXX')
msn.sync_friend_list()
while True:
msn.process(chats = True)
time.sleep(1)
这个代码运行后,会把收到的信息再按照原样发给发送者,目前没有加入自动接收加入好友申请的代码。

Technorati Tags: , , , ,



2005-12-08

程序员的福音CSDN播客开播了

早听说Csdn在筹划他们的播客,但是没想到出来的这么快。12月6日,闫辉发布了Csdn的第一个播客节目“采访东软集团董事长刘积仁”。

Csdn有大量的音频视频聊天活动,积累了大量的音频视频资源,在播客这个形式出现前,那些资源多少有些被浪费之嫌。现在,这些资源用播客这种来发布出来,相信可以让更多的人得到好处。

赶快去订阅吧!

---
想了解什么是播客/想了解如何订阅播客


Technorati Tags: , , , , , ,