Python 模板引擎比较

标签:Python

做 Web 开发少不了要与模板引擎打交道。我陆续也接触了 Python 的不少模板引擎,感觉可以总结一下了。

记录一段关于密码处理的 Python 代码

标签:Python

这是昨晚写的一段关于密码处理的代码,包含生成 salt、加密密码、生成随机密码和检验密码。
结果今天懒得用了,主要是懒得写修改密码、重设密码、找回密码这些页面,于是就用 Google 的 OAuth 代替了。
感觉删了也可惜,以后说不定会用到,就放这吧。

将 Google Reader 的加星条目导出到 Pocket

标签:Python, Google Reader

鉴于 Google Reader 即将关闭,而我没找到好的替代品,所以急需导出几千条加星条目。
前几天测试了下把知乎日报分享到 Pocket,看上去体验还不错,于是决定先保存到 Pocket 吧。

因为没多少时间来写,我就简要说明下原理吧,其他的自己看代码吧。

准备将 Doodle 移植到 Linux

标签:Python, Redis

最近实在太忙了,而博客还时不时遇到配额用完的问题,我已经懒得解决了。想着 Google Reader 也快不能用了,干脆也别享受 GAE 这免费的午餐了,还是换个地方玩吧。
于是只能很抱歉地告诉 Doodle 的使用者们,Doodle 2 将只能在 Linux 平台(VPS 或独立服务器)上运行了,老版本将只在即日起的一年内提供迁移(到 Doodle 2 或 WordPress)、修正 bug 和指导性的帮助,不再添加新功能了。
预计第一步将支持的是 Ubuntu 12.04+,因为开发是在 OS X 10.8 上,所以肯定也是支持的,只是依赖的工具 / 包 / 库我也记不清(找不到干净的系统)。Windows 上的开发者就抱歉了,支持这个实在头大。
虽说计划是最低支持 128 MB 内存的 VPS,不过看到 DigitalOcean 512 MB + 20G SSD 的 VPS 才卖 $5 每月,也支持按小时扣费,网速和口碑好像还行,所以想先玩玩。有闲钱赞助的,可以通过这个链接购买,累计消费 $10 (例如购买 2 个月最低配置的 VPS)后,我会收到 $10 的佣金,先谢了。发现几个优惠码,不知何时失效,有需要的自便:SSDBEAR10(免费 $10,需要绑定信用卡或 PayPal)、HELLOSF(免费 $5,无需绑定)。不会用的可以在填写支付方式时,找到 Promo Code,把优惠码贴进去,成功就会提示。

关于 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,只能当成一个未登录的用户来处理。
而在用户尝试登录以后,虽然写入了正确的登录信息,却仍然无法被读取,于是就不可能成功登录了。

关于 logging 的一些琐事

标签:Python

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

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

标签:Python

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

SQLAlchemy 使用经验

标签:Python

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

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

Tornado 使用经验

标签:Python

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

« 看看还有什么好玩意