Archive for January, 2006

Out of Blog

Tuesday, January 10th, 2006

来澳一年多了,终于要回国了,明天一早的飞机,晚上就到了。
家里也搬家换电话了: 7289669 手机: 13614218259
原来的包月ADSL自然也撤了,所以可能只能拨号上网了,估计要有段时间Out of blog了 :(
想找我玩的现在可以出动了 :)
预计在家过完年2月14号返回墨尔本。

打响下载专项治理第一枪

Monday, January 9th, 2006

提供锵锵三人行podcast以来,流量虽增加很多,但一直还维持正常水平,但最近几日突然增加了数倍,而且从awstats的统计日志中还可看到有极大数量的”Not viewed traffic(不可见流量)”,经查这部分主要是服务器响应为”206 Partial Content”的多线程下载流量。再这么下去,势必影响正常使用者的使用和服务器的其它功能。于是,我打响了下载专项治理的第一枪。
通过分析服务器日志,本次打击目标为以下两个:
1.严厉打击baidu mp3盗连现象
特征:
HTTP refer中包含”mp3.baidu.com”和”m?ct=”关键字。(前者为baidu的mp3索引爬虫,后者为实际的下载连接)
baidu真是猛,从它过来的mp3下载流量占到总量的80%以上,而且大部分人都使用多线程下载(最多的我还看到同时使用15个线程的)。
还好之前复习过了.htaccess文件的用法,现在一个文件就把baidu搞定了:
RewriteEngine on
RewriteCond %{HTTP_REFERER} mp3\\.baidu\\.com [NC,OR]
RewriteCond %{HTTP_REFERER} m\\?ct=
RewriteRule .* – [F]
2.严厉打击使用过多线程同时下载现象
我提供的这个服务主要是为了方便朋友们订阅podcast,所以不管是通过iTunes订阅还是通过podlook在线听的朋友都不会像上面提到那位用15个线程同时下载一个文件的(忘了说,他还同时下载两个文件呢)。其实大家都宽带了,使用单线程下载不会比15个线程慢多少,而且能够减轻服务器的负担,是对其他用户的一个最起码的尊重。
我使用了针对Apache 2的mod_limitipconn模块来限制单一IP的mp3文件的并发下载数为2。
安装很简单,大家可以参考这篇: Linux下Apache并发连接数和带宽控制。把相关的配置加在httpd.conf的虚拟主机部分就起作用了:
#### www.douzi.org ##############################
<VirtualHost 219.149.56.157>
DocumentRoot /usr/wwwroot/douzi/html
ServerAdmin admin@douzi.org
DirectoryIndex index.html index.php
ServerName www.douzi.org
ServerAlias douzi.org
ErrorLog /var/log/httpd/douzi/error_log
CustomLog “|/usr/bin/cronolog /var/log/httpd/douzi/access_log.%Y%m%d” combined
HostNameLookups [...]

让人爱恨交加的AppleScript

Sunday, January 8th, 2006

今天终于完成了我这个假期参加的学校Summer Studentship的工程,一个用AppleScript写的Video Blog压缩发布程序。虽然还有很多需要改进之处,不过至少这已经是一个可用的测试版了。:)
这两个月来,我对AppleScript的知识从无到有,感触很多。
AppleScript早在Mac OS时期就已经存在了,在现在的Mac OS X时代更是被进一步的发扬光大。它的地位很类似Windows下用于Office的VBA——不过VBA只能控制Office的各个组件,而AppleScript则是贯穿整个Mac OS X系统,几乎所有的程序都有提供AppleScript的接口。使用AppleScript的Script Editor的Open Dictionary功能就可以看到完整的列表了。
AppleScript的表现形式也堪称大全:

默认可以通过简单的对话框和用户进行交互;
可以做成droplet的形式,对你拖拽到它的图标上的文件进行操作;
可以设置为Folder Action,自动监控指定文件内的文件的变化;
对于没有提供AppleScript接口的程序,现在还可以通过Universal Access来实现GUI编程方式控制;
最后,也是最具杀伤力的功能就是可以使用Xcode中的AppleScript Studio来生成带有完整GUI的,完全本地化的Apple应用程序。

这种完全的控制能力可以说不光完全超越了Windows平台下面的任何一种语言,而且也凌驾于类Unix操作系统上提供类似功能的shell脚本语言。
这次我的这个程序就是使用AppleScript Studio制做的,看起来和其他的Apple应用程序没什么区别。
编AppleScript程序的感觉很像Visual Basic,入门容易提高难。这是让我又爱又恨的主要原因。
AppleScript的设计目标大概是要老少咸宜,只要你懂英语,很多简单的程序你就能看个八九不离十。但是就是这个原因,我习惯了C语言的简洁,让我改用另一种说英语的方式写程序格外的痛苦。
举个例子,比如一个访问一个数组的a的第2个元素,用C语言就是
a[1]
而用AppleScript要写成
item 2 of a
甚至可以更人性化的写成
the second item of a
这在描述一些比较复杂的过程的时候副作用尤为明显,还好你可以用Python或者别的脚本语言写好,然后用”do shell script”命令调用。
在GUI界面的调用上,用AppleScript也会显得很拖沓,给你们看个例子
set myContent to contents of text view 1 of scroll view “scrollerContent” of tab view item 1 of tab view 1 of window “main” as string
把这种对象的层次关系用这么多的”of”来表现是不是够晕菜的 :)
另一个方法是用tell来层次化的表现,好看一点了,不过也还是够受的:
tell window “main”
[...]

NucleusCMS->WordPress 2转换程序

Friday, January 6th, 2006

这可能是我最后一次写关于NucleusCMS的文章了 :)
NucleusCMS是我曾经使用过很长一段时间的blog程序,但是现在确实已经风光不再了,WordPress才是王道。但是官方并没有NucleusCMS到WordPress的转换程序。
今天我将一位德国Blogger: Dieter Mayer的写转换程序进行了修改,使之能够适应非西欧语系(原程序里面有一个函数专门处理德文的那些带音调的字母,用在UTF-8的中文上乱码的一塌糊涂),以及WordPress 2.0的一些新变化(帖子和留言的计数字段)。
使用前请做好备份,本程序未经广泛测试,出现的一切不良反映自负 :P
使用方法:
1. 正常安装一份新的WordPress 2.0
2. 运行转换程序
一些说明:
默认情况下,WordPress的表前缀(Table Prefix)为”wp_”,而NucleusCMS为空。
图片路径(Image Path)是你原NucleusCMS的上传图片目录,默认应该为 http://yoursite/NUCLEUS_INSTALL_PATH/media/1/
我建议你把它们提前复制到新的位置,这里可以输入这个新路径
这个功能是将Nucleus的模板的图片表示方式 <%images(…)%> 转换为HTML代码
English instruction:

Importing NucleusCMS -> WordPress 2.0
v1.2 – 6 Jan, 2006
Windix Feng, windix [AT] gmail.com, http://www.douzi.org
Based on v1.1 from Dieter Mayer, dieter_mayer [AT] gmx.net
[...]

无极启示录

Friday, January 6th, 2006

那些贬低陈凯歌导演新作”无极”的同学们,其实是你们没看懂(虽然我也承认先涛数码的抠图技术比较业余),陈导演真正要表达的是——向我们证明爱因斯坦伟大的相对论——当雪国人穿上那鸟人衣服以超过每秒30万公里的速度飞行的时候,时间倒转了!