SQLite 爬坑记

作为从零开始的 Web 开发人员,在项目开发中总是遇到这样那样的坑,其中数据库的坑最多。由于在功能完善过程中需要变换频繁,不可避免地要更改 DB Schema,不过我都是能不改尽量不改。逃不过时,只能硬着头皮刚。 故事是这样的,我要把两个表中的某两列的类型由字符型改成列表。在数据库值类型中就是 BLOB,ORM 中叫做 PickleType。数据库使用 SQLite,ORM 使用 SQLAlchemy,并使用基于 Alembic 的自动化迁移工具,于是就开始了。

Keep reading

2017年初杂记

2016 年就这样浑浑噩噩地过去了,犹记得年初时豪情壮志,要去拍星空,要把看过的电影书籍一一记录下来,最后都流产了,真是懒癌 + 拖延症晚期了。 买相机也有两年了,快门数将将到一万,却始终没有拍到让自己满意的,得意的作品。年初也去了趟珠海,出的片却差强人意。圆明新园的题材是我喜欢的,当天天气也非常作美,整个画面的色彩,氛围都非常到位,但是非常遗憾的是,没有对上焦。由此获得的教训是,按下快门前,一定要检查相片各状态都到达了最佳。

Keep reading

学习的快感

最近两周在写一个 web application,有了之前捣鼓个人博客的经验,又狠狠地提升了一次自己的前端技能。于是我居然从对前端一无所知到现在能写一写 javascript 脚本了。自己找第三方库,看文档,Google…

Keep reading

个人网站宣告上线

生命不息,折腾不止。绕了一大圈,还是回到了 NexT 主题,在此特别感谢 IIssNan 做的这么赞的主题。 自己也尝试过折腾主题,原先对前端望而却步,但当我真的学进去了,才发现这个世界上有模板语言,前端框架,有 F1…

Keep reading

如何编写向前兼容的 Python 代码

本文翻译自 Armin Ronacher 的文章 Writing Forwards Compatible Python Code 对于网络应用来说,目前最安全的做法是仍然坚持使用 Python 2.x,即使是新的项目。一个简单的原因是现在 Python 3 还不支持足够多的库,而将已有的库移植到 Python 3 上是一个巨大的工作。当所有人都在抱怨升级到 Python 3 是如此艰难和痛苦的时候,我们如何才能让这件事变得容易一点呢? 对于一个顶层应用来说,如果它的依赖库移植后行为一致,把它升级到 Python 3 就不难了。其实升级到 Python 3 从来都不应该是一件痛苦的事。因此,本文尝试列举一些编写新的代码时应该和不应该做的事。

Keep reading

Python 有序字典的实现

最近在看 requests 源码的时候看到作者使用了 urllib3 中自己实现的类,收获颇多。自己实现一个数据结构往往是最需要算法和优化的地方,各种语法糖黑科技,相当的 Pythonic,看这种代码实在是一种享受。如果要我自己实现的话,自己会想到用一个有序存储的对象(如列表)去 hack 内部的实现,但这样有几个缺点: 列表的插入、删除操作性能不如字典,复杂度是 O(N) 量级的。 自定义类需要继承于,没有利用继承的方法特性。 来看看大神是怎么实现的吧。

Keep reading