Feb 25

The Internet searches in dasblog show the web traffic information from search
engines. It includes information of which search engine users come from and
which key words users have typed. Quite useful, right? But unfortunately it only
can recognize Google and Yahoo.

The problem is that baidu.com is the most popular search engine here. It’s
obviously useful if dasblog can recognize searches from baidu.com. To do it, we
need to update line 150 in ReferersBox.ascx.cs. There is a dependant
file in the Web.Core project, named utilities.cs, which should be updated as
well.

The code is quite simple. The only issue is that baidu uses gb2312 URL
encoding and Google/Yahoo use UTF-8. After the modification, just re-compile the
projects and update the binary. Below is the outcoming:



Feb 21

某种意义上Python可以看作有2种字符串:str和unicode,一个字符串可以使用type()来检查属于那种类型。str可以看作非常基本的byte数据。在Python中处理中文,需要额外做一些编码解码工作,比如:

  • 生成一个xml文件,open()的编码是ascii,而且没有指定编码的地方,如果想用utf-8怎么办呢?OK,import codes,然后codes.open(filename, mode, encoding)
  • 把一个网页html文件从gb2312,转换成utf8编码呢?读入一行到strLine, 然后strLine.decode(’gb2312′).encode(’utf-8′),不过这个比较慢,呵呵
  • 怎么知道缺省的编码呢?sys.getdefaultencoding()和sys.getfilesystemencoding()
  • 如何检查一个串的编码方式?”chardet, auto-detecting character encodings” @ http://chardet.feedparser.org/,使用这个工具,给出网页地址,它会自动下载并检测编码方式

?

Feb 20

Original Copy: http://www.physics.ucf.edu/~mdj/MinimalPython.html

I am trying to get familiar with Python, python is quite interesting for programming. There are lots of modules handy for us. For example, I need an FTP client library. It’s not easy to find a powerful .net open source implementation. However, ftplib is just part of Python’s standard library, not to mention other powerful network modules and string manipulation modules. The reason I learn it is to do crawling work and information extraction with it. :)

Feb 15

回到家有几天了,心头是半分熟悉,半分陌生。数起来从1993年离乡求学,约略十四载光阴。时间不再回来,光阴就这样荏苒,许多昔日的境物消失了,只留下记忆里的许多碎片,往往突然在记忆里清晰起来。每年只有假期,才短暂在家停留,伴着一半的陌生感。清晨起来,发现路面湿湿的,原来曾有昨夜一场小雨,尘埃尽洗,土地清新,洋溢着春意,一下子嗅到童年时的春天气息,一下子就熟悉起来了。

可是晚上忽然知悉,叔叔去世了!惊愕!虽然叔叔是二爷收养的,却是我们兄弟姊妹最亲的叔叔,人耿直简朴,晚年远迁回家乡,我们每年尽力去探望。“有的人默默隐入历史的雾中,他们死去,后来无人知晓,仿佛他们从来未来过这个世界一样。”但在亲人心中,他们是生命历程中重要的部分,永远被纪念。非洲阿拉曼战场的二战墓地,一位十五岁的无名战士墓碑上镌刻着:“对于世界来说,他只是一名战士;对于母亲来说,他是整个世界”。

这些天,接连很多节日。带着感恩和知足的心,陪父母好好地过年。不做具体计划,不做详细打算,只顺其自然。带侄儿入门一下数据结构,发现正读高中的他,比我们当时要累多了。而小小的侄女还是那样有趣,吵闹着要弟弟妹妹,忽然又想要一个姐姐,跑去和她伯母商量:“给我生个姐姐吧?”我们狂笑,说这要求打死也无法满足,于是问她“把晗晗哥哥当成姐姐行不行?”“行呀,明天就带他去毁容。”集体狂晕~~~

这些天,没有什么想法。按照民俗,从小年开始,日子一天天过,祭灶、年货、年画、祭祀、沐浴、拜年、走门……一直到元霄节,基本都或紧或松有事情。而我初五就得撤,回京继续我求学的生活,第一任务是完成论文开题。

有很多想法,且不去想。夜晚,仰望满天繁星。这些年,既曲曲折折,又一直很幸运。感谢每一位朋友,明白了也随时准备为自己的倔强付出责任。于事尽力,阿弥陀佛。

Feb 01

需要将一个网站www.changethis.com镜像到本地,并且可以用Internet Explorer浏览。首先尝试的是传统的离线浏览工具:

  • Offline Explorer Enterprise Edition
  • WebZip
  • Teleport
  • GNU wget

这几个工具,都是响当当的有了很多年头了,至少有七八年历史了。很遗憾,发现一个很大的问题是,相当多的页面中,PDF文件不能下载下来,比如这里,而且是这几个程序的通病。


?

下载的过程分析如下:

  1. 点击下载地址,请求文件,首先得到的是一个“301 Moved Permanently”响应;
  2. 浏览器得到新的地址,请求新的地址,得到的是一个“307 Temporary Redirect”响应;
  3. 浏览器被重定向到真正的地址,文件下载开始。

不知道在哪个环节上,这几个程序掉了链子,总之没有能完全下载PDF文件。

?

我的解决方法:

  1. 自己写了个爬虫(crawler),将每个HTTP请求的文件都保存下来,建立Url和本地文件的对应关系表。
  2. 爬虫把HTTP Response的一些有用的消息也保存下来了,尤其是Content-Type信息。
  3. 创建一个Web服务器,在incoming request被解析好、HTTP响应发生之前,做一些修改:
    将请求的页面(Url)取出,根据对应关系表找出本地保存的文件,查出保存的相应HTTP Response信息,根据这些信息和文件,生成HTTP Response。

?

最后完成之后,如下图所示:

?



Feb 01

发现一个System.Uri类的一个bug:

比如一个Web页面地址是:http://www.changethis.com/archives,

页面中有个链接是:<a href=”?by=email_count&order=descending&page=3&topic=”>Next Page</a>,

那么Internet Explorer和Firefox解释出来的正确地址是:
http://www.changethis.com/archives?by=email_count&order=descending&page=3&topic=

但使用Uri(Uri baseUri, string relativeUriString)解释出来的是:
http://www.changethis.com/?by=email_count&order=descending&page=3&topic=

推测bug的起因:实现人员和测试人员,没有使用JSP/PHP等语言的URL地址去测试这个Uri类。

Feb 01

Windows Live Ideas的页面,罗列了太多的Windows Live产品,让人眼花缭乱,甚至有点不舒服。

为什么微软不能起点有创意的名字呢?像iPod、iPhone等简单易记?说起一个Windows Live产品,比如Windows Live Writer,都要加一长串毫无意义的前缀(这里是Windows Live),真让用户郁闷!

何况,既然是推互联网战略,为什么不用WWW来思考,还要加一个Windows前缀?