为四川人民祈祷! www.onefoundation.cn
logo of kjam.org
Archive: 2007-4

Get Ready for RRobots

说ruby还年轻吧!一点也不错

为了玩一个RRobots的ruby游戏,你得忙活上一整天(对一个有开源经验的小伙子,要是换了我老爸级别的,花上一个月不知道玩的上不)

在windows下面使用ruby的one-click installer都不能解决问题,安装完成以后,tk是不能用的,唯一的解决方法是去ActiveState下载一个ActiveTcl完全安装,问题就解决了⋯⋯当然有人告诉你很快就解决了,没有人提示的话,就自己摸索吧!

Python的安装包应该是把tk包括在内了,不知道ruby的one-click installer是谁做的?

在Mac下面想跑起来就更复杂了,Pre-installed的1.8.2因为我无意中删除了/usr/X11R6目录就罢工了?又不是Linux要那玩意儿做什么!升级一下版本,用下面的命令编译
./configure --with-tcllib=tcl8.4 --with-tklib=tk8.4
 --enable-mac-tcltk-framework --enable-pthread
sudo make install

OK,我们可以玩上面的游戏了。

顺便介绍一下,RRobots是个机器人项目,tank大战,不过这些战争武器的行为可以通过编程来决定。我们自己写程序决定策略。对于程序员来说绝对是个有挑战的游戏!
comments: 2  
by kernel1983

Zope Plone 不要打架

经过番老大的指点,我知道了这样一个事实
Zope 2.9 可以安装 Plone2.5 Python必须是2.4 Zope 2.10 需要Plone 3 使用Python 2.5似乎没有什么问题
Zope 3 要和什么东西一起玩,现在还不是很清楚,不过我们可以自己在上面写程序玩
comments: 0 | tags: plone   
by kernel1983

无聊的速度比较

本质上Python是written in C。
翻译需要时间,但是不仅仅是翻译浪费了时间
差异的原因很多,尤其需要注意的是,Python的内存使用与C的本来就有许多的不同之处

C语言直接的使用内存,而且相当随意。玩C语言的时间长一点的,基本上都知道点内存中那些乱七八糟的分配情况。

接着,就有人拿出一段经典的代码开始测试C语言有多快:
for(int i = 0 ; i<=10000 ; i++){}
妄图用计算执行时间这样的方法,来告诉其他的朋友们C语言是多么的快

哈哈,按照常规的想法,如果用Python来写话,那就是这样:
for i in range(10000):pass
事实上,这两段代码做的事情完全不一样,这样的比较完全没有意义。

首先,我们需要考虑的是内存使用情况,C语言使用的是一个4bytes的内存,而Python则使用了10000个Python自己的Int对象,每一个对象占用的内存大小都至少大于4bytes,需要不断的malloc⋯⋯

这样看来,程序速度的比较本身就对Python不公平,因为他们根本没有做同样的事。表示一个数字100,可以用阿拉伯数字100,也可以直接找100个实物,所花的时间当然是不一样的。

事实上,我们可以这样来稍稍修正比较的结果:
for(int i = 0 ; i<=10000 ; i++)free(malloc(sizeof(int)));
这样似乎对Python稍微公平一些!不过我猜,还是C语言快啦,否则的话,为什么我们还需要C语言呢?所以说,根本就是无聊的比较,太无聊了
comments: 17  
by kernel1983

Jython Installion

知道故意排斥某些东西是不对的,于是我今天怀着忏悔的心情第二次跑到 www.jython.org 并下载了jython_21.class

命令行下:
java jython_21.class
出错,难道这次和上次一样,无功而返?那是在是太对不起自己了

忽然灵光一现
java jython_21
一路回车安装好了jython

低级错误,post出来活跃气氛
PS: CPython玩多了,IronPython都1.1了,不加油不行了
comments: 12  
by kernel1983

Jampad Porting

花掉了两个晚上的时间,把pikipiki这样的cgi程序port称为了一个wsgiapp,事情还没远有结束,不过我隐约看到了一些成果

其实这样的port工作内容很简单,新建一个StringIO就叫他buf吧,被我当成内存文件用了。把所有的print替换成print >>buf,一切乱七八糟的内容就都被我截获了,这些内容我当成WsgiClient的输出就可以了

另外一件重要的工作,就是把所有从cgi对象中请求信息的行为,替换成从environ字典的某个对象请求,为此我还特地写了一个函数

完成了这两件大事,我们就可以在把程序嫁接到WsgiServer上了。我选用的是CherryPy的实现,当成我的测试开发服务器

OK!
Tag一下
稍稍整理一下代码,SVN上见……
comments: 0 | tags: Jampad   
by kernel1983
123