simplicity is prerequisite for reliability

前些日子欧气爆发,在高可用架构的微博抽奖活动中得到一张 GIAC 的门票,然后我申请了出差,千里迢迢赶赴京师。去年夏天有幸去北京围观 Velocity,姿势水平提高不少,本次 GIAC 请到了多位业界知名的技术大拿,也有不少和我接下来要做的工作相关的主题分享,这些更是提升了我对本次行程的期待。

确定赴京行程后便是约饭,从朋友处得知之另一个朋友拿到了 Google 的 offer,也是个值得庆祝一番的事情。

Read More...

上一篇博文「魔改 pip 的快乐与痛苦」中,我提到魔改开源代码,一个需要时刻考虑的事情,就是如何方便地合并上游变更。为了合并上游变更,我们要尽量克制自己乱写代码的冲动,不要作出那些使得合并代码变得困难重重的事情,比如像我曾经干出的修改包目录的蠢事。

为了修正我犯下的错,我决定在 mpip 代码仓库中保持基本 pip 一样的包目录,改换包目录这种事情放到编译过程里做。于是我不仅要在编译过程里把代码复制一份,还得把包目录从 pip 移动到 mpip,然后把代码里各种和 pip 相关的包目录、文件路径、常量定义、环境变量,总之一切有可能让 pip 和 mpip 之间不清不楚互相干扰的,都得改干净,这样才能让 mpip 和 pip 和平共处。

Read More...

半年前我做了一个 side project,把 pip 魔改一番,使得我能够将 Maven 的 Nexus 仓库作为 pip 的后端仓库。于是原本通过 pip install xxx==version 命令,我们可以从 https://pypi.python.org/simple/ 把指定版本的包下载下来然后安装,我可以用 mpip install xxx==version 从公司内网的 Nexus 仓库下载包然后安装。

之所以做这么个工具,是因为公司没有提供一个内部的 pypi 服务器。Python 不是公司的主流语言,公司自然不会投人力物力去维护这么一个服务,如果由我所在团队自行维护,又得付出额外的人力物力,并不是十分划算。于是我们之前的做法是将系统依赖的三方包,不管是 whl 还是 tgz,直接放在代码目录里,然后在生成部署包的时候再复制、安装。

Read More...