标签
App Engine Cacti Decorator Drupal Facebook fetion Fuck GFW GFW glib glib升级 HTTP协议 Jmeter Nginx ning.in PHP PHP 微博客 puff Python Python微博客 rsync shell SSH tokyo cabinet tokyo tyrant Twitter Wordpress wordpress fetion wordpress plugin Youtube zend zend studio zend studio注册码 互联网 变形金刚前传 域名 域名交易 小文件同步 开源,微博客,PHP 微博客,Python微博客,App Engine 微博客 恶搞 淘宝客 网络流量 网页打开速度 翻墙 英文换行分类目录
-
最近文章
标签归档:Python
五分钟理解元类(Metaclasses)
真的,它并非巫术。 “元类的魔幻变化比 99% 的用户所担心的更多,当你搞不懂是否真的需要用它的时候,就是不需要。” —Tim Peters 本文源于在 PyCon UK 2008 上的一个快速演讲。 元类被称为 Python 中的“深奥的巫术”。尽管你需要用到它的地方极少(除非你基于 zope 编程),可事实上它的基础理论其实令人惊讶地易懂。 一切皆对象 一切皆对象 一切都有类型 “class”和“type”之间本质上并无不同 类也是对象 它们的类型是 type 以前,术语 type 用于内置类型,而术语 class 用于用户定义的类,但自 Pythoon 2.2 以来“class”和“type”本质上并无不同。 对于旧风格(old-style)类的类型是 types.ClassType。 真的,这是真的 Python 2.5.1 (r251:54869, Apr 18 2007, … 继续阅读
大量小文件 同步方案
传统的文件同步方案有rsync(单向) 和 unison(双向)等,它们需要扫描所有文件后进行比对,差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将非常耗时。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。 之前看了Amazon的Dynamo的设计文档, 它们每个节点的数据是通过Hash Tree来实现同步,既有通过日志来同步的软实时特点(msyql, bdb等),也可以保证最终数据的一致性(rsync, unison等)。Hash Tree的大体思路是将所有数据存储成树状结构,每个节点的Hash是其所有子节点的Hash的Hash,叶子节点的Hash是其内容的Hash。这样一 旦某个节点发生变化,其Hash的变化会迅速传播到根节点。需要同步的系统只需要不断查询跟节点的hash,一旦有变化,顺着树状结构就能够在logN级 别的时间找到发生变化的内容,马上同步。 文件系统天然的是树状结构,尽管不是平衡的数。如果文件的修改时间是可靠的,可以表征文件的变化,那就可以用它作为文件的Hash值。另一方面,文 件的修改通常是按顺序执行的,后修改的文件比早修改的文件具有更大的修改时间,这样就可以把一个目录内的最大修改时间作为它的修改时间,以实现Hash Tree。这样,一旦某个文件被修改,修改时间的信息就会迅速传播到根目录。 一般的文件系统都不是这样做的,目录的修改时间表示的是目录结构最后发生变化的时间,不包括子目录,否则会不堪重负。因为我们需要自己实现这个功 能,利用Linux 2.6内核的新特性inotify获得某个目录内文件发生变化的信息,并把其修改时间传播到它的上级目录(以及再上级目录)。Python 有 pyinotify,watch.py的代码如下: #!/usr/bin/python from pyinotify import * import os, os.path flags = IN_CLOSE_WRITE|IN_CREATE|IN_Q_OVERFLOW dirs = {} base = ‘/log/lighttpd/cache/images/icon/u241′ base = ‘tmp’ class … 继续阅读
Charming Python: Decorators make magic easy
今天在看Python的Decorators,找到篇文章,写的很详细了,收藏下来。
Charming Python: Decorators make magic easy
David Mertz, Ph.D. (mertz@gnosis.cx), Developer, Gnosis Software, Inc.
29 Dec 2006
Python made metaprogramming possible, but each Python version has added slightly different — and not quite compatible — wrinkles to the way you accomplish metaprogramming tricks. Playing with first-class function objects has long been around, as have techniques for peaking and poking at magic attributes. With version 2.2, Python grew a custom metaclass mechanism that went a long way, but at the cost of melting users’ brains. More recently, with version 2.4, Python has grown “decorators,” which are the newest — and by far the most user-friendly way, so far — to perform most metaprogramming.
Doing a lot by doing very little 继续阅读

