更高效地在memcache中存储实体

标签:Google App Engine, Python

刚才在Nick的博客读了一篇《Efficient model memcaching》,才知道原来memcache会使用pickling来存储实体,而GAE不能使用cPickle,所以速度较慢,而且存在兼容性问题,并且可能保存多余的内容(模型实体通常会有个cache镜像)。

而在SDK 1.2.5的数据库API里提供了2个新的方法来解决这个问题:model_to_protobuf(model_instance)和model_from_protobuf(pb)。
这2个方法的速度较快,且不存在兼容性问题。

Python和Java代码的一个简单比较

标签:Java, Python, 性能

我想概述什么的大家都看烦了,所以我就直接以代码来说明了。

这个例子是从一个UTF-8编码的文本文件里读取所有字符,转换成Shift-JIS编码,再将每个字节与0xAB异或,最后写入另一个文件。可以算是破解日文游戏经常需要做的事,尚据一定代表性吧~

在GAE中更高效地存储无需索引的数组

标签:Google App Engine, Python, 性能

今天在GAE论坛看到有人说ListProperty太慢了,即使加上indexed=False也非常慢,而用pickle技术保存成Blob类型就会快10倍。

对于这点,Nick Johnson提到了《Store arrays of numeric values efficiently in the datastore》这篇文章。
他的解释是ListProperty会将其中的每个元素编码成一个独立的属性,并多次对其进行序列化,所以会造成很大的开销。
而pickle虽然可以让其只保存成一个元素,但兼容性可能并不好,也不是特别高效。

XMPP应用:用Google App Engine搭建聊天机器人

标签:Google App Engine, Python

今天Google App Engine SDK 1.2.5的发布,带来了XMPP这个好玩的API,于是我立刻拿来尝鲜了。

API其实非常简单,主要是要了解XMPP是什么。但我懒得解释了,感兴趣的就去Google一下或看这几篇XMPP正式RFC标准文档吧。
由于Google Talk是基于这个协议的,而且GAE的XMPP API专门提供了在线查询功能,所以自然就用它了。

PyQT4的LGPL版:PySide发布

标签:Python

详情可以看《PySide has been released》,这个强大的框架也终于免费了(以前只能用于开源项目,否则需要购买商业许可证),不过目前还不支持Windows。

唯一想说的是文档做得很漂亮,用到了一些好玩的JavaScript特效。

此外,目前仍处于0.1.4.5版本,或许让开发者仍会有些望而却步~

2009年6月四六级考试查分程序

标签:Python

本想像去年一样用PHP来做,结果换了服务器,fsockopen好像出问题了,只好做成单机版了=。=

可以连续查分,自动识别英语四级、英语六级、日语四级、日语六级、德语四级、俄语四级和法语四级(只有CET4/6进行了格式化,其余没有准考证号,没法测试),命令如下:

« 看看还有什么好玩意