推荐一款可供翻墙的CDN:CloudFlare

标签:无

一个月前就注意到这个叫CloudFlare的CDN,可惜设置时需要更改ns,而我在万网注册的几个CN域名是不能更改为未登记的ns的,于是一直没机会尝试。

今天又去买了个域名,然后就立即拿来测试了。在设置域名时,将一个子域的CNAME指定为ghs.google.com,然后与Google App Engine绑定。过了几分钟后,果然访问成功了。

在Chrome上使用小于12px的字号

标签:CSS, Google Chrome

很早以前Chrome就强制把小于12px的字显示为12px了,这导致要做一些特殊效果时很不给力,前些天在别人的CSS reset里看到了这一行,就是用于解决这个问题的:
-webkit-text-size-adjust:none;

自己瓜就别抱怨别人流氓

标签:无

最近有件事很火,忍不住评价一下。

起因就是有个做外挂的公司A说一家做网游的公司B偷窥玩家隐私,然后双方打起嘴仗来。

db.Property机制解析

标签:Google App Engine, Python

最开始接触GAE的API时,就对它的Property很感兴趣。因为我明明只是在Model定义时设置了类属性,但是它的实例的属性却必须和类属性的类型一致,还要接受各种检查之类的。只不过当时Python了解不深,看不懂其中的奥秘,而如今总算可以把它弄懂了。

Expando比Model的反序列化更花时间

标签:Google App Engine, Python

写了这样一个测试
from time import time

class Comment(db.Expando):
	email = db.StringProperty(required=True)
	content = db.TextProperty()
	format = db.IntegerProperty(default=0, indexed=False)
	approved = db.BooleanProperty(default=True)
	time = db.DateTimeProperty(auto_now_add=True)
	mod_time = db.DateTimeProperty(auto_now_add=True, indexed=False)

t=time()
Comment.all().fetch(1000)
print time()-t
从后台的执行情况来看,cpu时间是11078~11799ms。改成db.Model后,cpu时间是10319~10959ms,差不多少了0.8秒。

Model实例与dict和JSON相互转换的方法

标签:Google App Engine, Python

今天在读GAE SDK源码时发现,Entity实际上就是dict的子类,而Model也有个转换成Entity对象的_to_entity方法,于是可以轻易转换成dict对象,再用simplejson转换成JSON即可。

转换回去就更简单了,因为Model的构造函数是可以传字典参数的,而且还有个from_entity类方法。

原来可以通过key直接删除实体了

标签:Google App Engine, Python

记得最初删除实体时,还需要先fetch或get实体,再调用实体的delete方法或db.delete()来删除,这就导致了删除时效率特别低。

今天突发奇想,觉得db.delete()应该可以接受key做参数,于是看了下源码,发现果然是可行的,而且传实体给它也会被自动转换成key,那么直接传key自然效率更高。

« 看看还有什么好玩意