在GAE上搭建XML-RPC服务

标签:Google App Engine, Python

前些日子有人问Doodle是否支持Windows Live Writer,我只是回答了不支持而已。原因很简单,我的Windows XP很奇怪,几次装Live Writer都失败,对微软已经绝望了。
不过现在已经转移到Mac OS X上了,装软件没这么奇葩的兼容性问题,于是就研究起weblog publishing API来。

博客发布API大致有2类:一类是基于XML-RPC服务的,包括Blogger API、MetaWeblog API、MovableType API和WordPress API等;另一类则是Atom Publishing Protocol。
后者虽然技术上比前者强大,但较为复杂(例如认证是基于HTTP的认证机制),而且由于出现得较晚,支持它的也比较少。当然,对我来说更重要的是文档很难找,因为这个协议并不只用于blog,一些细节上的东西就不知道怎么搜索了。
于是比较了1天后,还是选择了XML-RPC。简单来说,它就是用XML封装方法名和各个参数,POST给XML-RPC服务器,再由服务器返回XML封装的方法运行结果。至于各种API,实际上只是方法和参数的差异,原理都是一致的。

下面举个提供加法的XML-RPC例子。

用Python捕捉和模拟鼠标事件

标签:Python

这个假期玩了不少galgame,不过有些很老的游戏没有自动运行模式,点击鼠标又太伤按键了,于是想把滚动鼠标滚轮映射为点击鼠标。
网上搜了一下,没发现什么现成的软件,而按键精灵又太重量级了,于是考虑干脆自己用Python写个算了。

get_value_for_datastore与make_value_from_datastore的用法

标签:Google App Engine, Python

以前曾写过一篇《避免ReferenceProperty自动解引用》,那篇文章里提到了使用get_value_for_datastore来获取原始值,避免自动解引用的方法。
不过Property还有个奇怪的make_value_from_datastore方法,它的用法其实正好和get_value_for_datastore相反:后者是直接返回实体中与数据库里存储的一致的属性值,即真实存储的值是它;而前者则是在保存属性值时,对其做相应的转换,使它可以转换成datastore中适合存储的类型。(注:这里是指原始实现,你可以覆盖它以实现想要的效果。)

新浪微博API开发简介之Python篇

标签:Python

本文很久未更新,仅供参考。

今天注册了下新浪微博,无聊之余便想写个应用玩玩。之前也曾写过Twitter的应用,因此这次自然是得心应手,不到半小时就写完了一个应用…

dict的get方法引起的性能问题

标签:Python

Python的dict类型是个很赞的玩意,不过在获取值时却有点麻烦,因为[]操作符会在key不存在时抛出KeyError异常。

很容易想到3种方法来解决这个问题:先判断key是否存在,然后再获取;直接获取,但是捕捉异常;使用get方法的第二个参数。

用datetime和pytz来转换时区

标签:Python

Python标准库里提供了time、datetime和calendar这3个模块来进行时间和日期的处理,其中应用最广的是datetime,而转换时区也是靠它来做的。

时区这个玩意非常抽象,处理它时经常弄得我头晕,只好记录下来,免得以后再犯晕。

« 看看还有什么好玩意