写了段找Twitter可用ip的Python脚本

标签:Python

众所周知,Twitter已经被GFW了,大陆屁民得翻墙才能访问。不过翻墙的开销肯定是大于不翻墙的,所以我这种懒人都是又空才翻墙的。

Twitter属于最高级别的关键字封锁+ip污染+ip封锁,但好在twitter的ip有很多,难免有几个漏网之鱼,于是可以用这篇文章介绍的网站来查询ip,并用ping来进行验证是否可用。
当找到可用ip时,就可以在hosts文件里写上“128.242.240.148 twitter.com”之类的设置,并直接用https://twitter.com/来访问twitter了(注意是https)。

在Windows环境下使用Google Storage Python Library

标签:Google, Google Storage, Python

昨天看了一天Google Storage for Developers的文档,可惜被GSUtil Tool给拦住了。这玩意需要Linux环境,在Windows下则要Cygwin,可我用Cygwin运行时老提示Python打不开文件。
而根据Python Library文档,这玩意也需要GSUtil Tool,这让人情何以堪…

好在我翻了下源码,发现gsutil里面有个cloudreader文件夹,这是一个Google App Engine项目。
于是读了下说明文件,配置了boto.cfg,接着本地运行了一下,发现居然成功了。

使用ModelMixin来重用模型

标签:Google App Engine, Python

由于PolyModel比Model有更多的存储空间开销,对于斤斤计较的程序员来说,有时候会不想使用它。但是这样一来就没法重用了,而《Reusing models with ModelMixin》这篇文章则介绍了解决办法。

简单来说,不能重用的原因是__metaclass__不一致,所以只要自己再创建一个ModelMixin类用来继承即可:

Python 2.7发布

标签:Python

Python 2.7正式版于7月3日发布了,改进大多数是从Python3.x里引入的,包括ordered dictionary、set and dictionary comprehensions和dictionary views等。

其中我最关心的io模块,说是全部用C重写了,性能提升2~20倍。

Twitter API开发与OAuth介绍

标签:Google App Engine, Python

最近又在无聊地摆弄手机。虽然我的手机不智能,不能翻墙,但是不能上Twitter实在不能忍,所以就琢磨起解决办法来了。
不用说,Twitter API肯定是必备的,我只要让我的应用去访问Twitter API,然后返回结果给我的手机就行了。但由于GAE被墙,单纯地在GAE上建个WEB应用对我的手机也没有任何益处,于是想到了XMPP。由于GAE可以收发XMPP,而我的手机可以用Google Talk,于是可以进行2次转发,来更新我的Twitter了。

在datastore中使用最终一致性读取

标签:Google App Engine, Python

昨天Google App Engine Team发了一篇《Read Consistency & Deadlines: More control of your Datastore》,不过服务器挂了3天,没法及时写上,所以今天再补上。

SDK 1.3.2发布时曾提到了强一致性和最终一致性读取,但是没有讲述细节,而这篇文章则阐述了其区别。
默认情况下,datastore是在一个主存储区域进行更新和查询的,这个区域代表最新的数据,访问这个区域则表示使用强一致性。而主存储区域有可能变得暂时不可用(估计是并发数过多或硬件故障),这就会导致查询超时或失败。
而实际上datastore是分布式的,它还有很多副存储区域。这些副存储区域的数据比主存储区域晚几百毫秒至数秒,因而不是最新的。如果你的应用不需要这种强一致性,就可以在主存储区域不可用时,让datastore读取其他存储区域的副本,而这就称为最终一致性读取。

星际争霸2数据信息表

标签:Python, StarCraft2

闲得无聊,就用Python写了个程序来提取一些xml中有用的信息,然后导出成csv文件。用Excel打开,改下样式,排下序就OK了。
没空去翻译,自己翻翻词典就清楚了。
部分xml由于太复杂,所以不太关注的信息就无视了。

« 看看还有什么好玩意