关于 Redis 的几种数据库设计方案的内存占用测试

标签:Python, 性能, Redis

最近在做一个项目,数据库使用的是 Redis。在设计数据结构时,不知道哪种实现是最优的,于是做了下测试。

测试环境如下:
OS X10.8.3
Redis 2.6.12
Python 2.7.4
redis-py 2.7.2
hiredis 0.1.1
ujson 1.30
MessagePack 0.3.0
注意:
  1. 因为是拿 Python 测试的,所以可能对其他语言并不完全适用。
  2. 使用的测试数据是特定的,可能对更小或更大的数据并不完全适用。

记录 Python 处理 cookie 时的一个 bug

标签:Python

几周前我遇到了一个问题,某个用户说她无法登录我们的网站。我记录了她的 cookie,发现它是以 ',BRIDGE_R=;' 开头的,其中包含了一个非法字符。
而 Tornado 使用 Cookie.SimpleCookie.load() 方法来解析 cookie:
class HTTPRequest(object):
    @property
    def cookies(self):
        """A dictionary of Cookie.Morsel objects."""
        if not hasattr(self, "_cookies"):
            self._cookies = Cookie.SimpleCookie()
            if "Cookie" in self.headers:
                try:
                    self._cookies.load(
                        native_str(self.headers["Cookie"]))
                except Exception:
                    self._cookies = {}
        return self._cookies
在遇到非法的 cookie 时就会抛出异常,所以 self._cookies 就变成一个空字典了。这样服务器就取不到用户的 cookie,只能当成一个未登录的用户来处理。
而在用户尝试登录以后,虽然写入了正确的登录信息,却仍然无法被读取,于是就不可能成功登录了。

为何 Google Reader 无可取代?

标签:Google Reader

前天一觉醒来,发现 Google Reader 被判死缓了,瞬间觉得生命中好像缺少了什么。
不过这次度假没带电脑,所以也懒得写些什么;只是用继续浏览 Google Reader 上的资讯,来表达我无声的抗议。

Google Reader 对我的重要性,它自己也知道:
From your 111 subscriptions, over the last 30 days you read 10,972 items, clicked 20 items, starred 90 items, and emailed 0 items.
Since June 21, 2011 you have read a total of 296,176 items.
而今,它却要离我而去。

关于 logging 的一些琐事

标签:Python

虽说 logging 模块都用了好久了,不过由于文档不够详细,每次都忍不住去搜索别人的文章,于是就干脆记录下来吧。

生产环境下如何优雅地重启 Tornado

标签:Python

之前我在《Tornado 使用经验》一文中,提到了调用 tornado.process.fork_processes() 来提高性能的方法。
在最近的实践中,我发现这样会有些弊端,所以便有了本文。
当然,这些仍然只是我个人的探索而已,并不保证是最佳实践。

遗书

标签:无

今天是 2012 年 12 月 9 日,距我出生已有 9700 天,离传说中的世界末日还有 12 天。

我向来是不相信什么世界末日的。
首先,它的意义就不明确:
世界是指地球、太阳系还是宇宙?末日的对象是前面所说的世界,还是仅指生物?末日会持续多久,结束后会是什么样子?
于是按照大多数人的理解,这里就暂定为地球上绝大部分生灵因为突发性的大灾难而终焉的日子吧。
其次,它是怎么计算出来的?
如果是玛雅历的结束日期,那么不但玛雅历有新纪元,而且我们早在几个月前就进入新纪元了。如果是神谕,那么慈爱的神为什么要引发灾难?如果是因为人类的罪恶,那么为什么要伤及无辜的生命?
最后,每天都有可能是世界末日,尽管那概率比每天都被闪电击中的概率还低。但如果真发生了,也不过是巧合而已。

于是为了这点巧合,我还是愿意写下点什么。
前些日子老爸转告我说,妈妈希望我回家一趟,因为可能会世界末日。我以工作忙拒绝了,叫他们不用担心。
如果真有巧合,那么这一定是我一辈子最大的遗憾。

SQLAlchemy 使用经验

标签:Python

上篇文章提到了,最近在用 Python 做一个网站。除了 Tornado ,主要还用到了 SQLAlchemy。这篇就是介绍我在使用 SQLAlchemy 的过程中,学到的一些知识。

首先说下,由于最新的 0.8 版还是开发版本,因此我使用的是 0.79 版,API 也许会有些不同。
因为我是搭配 MySQL InnoDB 使用,所以使用其他数据库的也不能完全照搬本文。

Tornado 使用经验

标签:Python

最近在做一个网站的后端开发。因为初期只有我一个人做,所以技术选择上很自由。在 web 服务器上我选择了 Tornado。虽然曾经也读过它的源码,并做过一些小的 demo,但毕竟这是第一次在工作中使用,难免又发现了一些值得分享的东西。

每逢佳节倍思亲

标签:无

俗话说“每逢佳节倍思亲”,我这人比较复杂,考虑到不吃东西会要了亲命,于是怀念起江安的手抓饭。
怀念手抓并非是因为它好吃,虽然它的确很好吃。不过我总觉得这么表述不足以彰显我的复杂,所以想必重点不应该是它,而是在那的回忆。
它是在我们毕业时,唯一登上学校网站头条的美食。它浓缩了我在那的记忆,带着暖暖的香气,油而不腻,松软可口,以至于想不起在那任何的不好。
当然也有不卖手抓饭的日子存在,或许可以算得上那些想不起来的日子吧…

这不科学

标签:无

星期六。我醒得很早,以至于一如既往地睡了个懒觉。

拉开窗帘时,已能看见对面的住宅楼上覆盖着第一种颜色的阳光。就我这个月来的观察而言,北京的日光大致有三种颜色,其中第一种的色温是最高的。然而当我出门买早餐时,才发现身边涌动的空气并不是这么认为的。
这是一个意料之外的城市,一年之前我还不愿靠近这块敏感的土地,如今却吞咽着这里贩卖的与别处毫无二致的烧卖,伫立在警报声的边缘,等待着横穿城市的火车通过。这里的确也有晴天,蓝得很诗意,甚至连丁点儿云彩也没有;这里也有闻名遐迩的空气污染,我还只见过两种颜色,都不是我喜欢的色彩。
其实上海也曾是我最不想去的地方,我不相信命运,却总被它作弄。老实说,这不科学。

« 看看还有什么好玩意