simplicity is prerequisite for reliability

半年前我做了一个 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...

周日深夜,我把代码分享到了 Github,用的 MIT 协议,详见 JamesPan/pdf-smart-crop。原本还想着把注释文档和单元测试写了再分享代码的,后来实在是懒了。所以说啊,这些东西如果开发的时候不好好写,以后就更没有动力去写了。

前作「Smart Crop,一种切除 PDF 扫描文档白边的新选择(算法篇)」分享了 Smart Crop 的算法设计、基本用法和脑洞,这里分享一下实现过程中遇到的问题和妥协。

Read More...

春节期间我弄了一个东西,我把它叫做“黑科技”,用到了编译期代码生成技术。Demo 做出来之后我很是开心了一段时间,因为它在性能上能够把现有的参考实现甩几条街,毕竟原生代码的性能比反射不知道高到哪里去,而参考实现恰恰是用反射实现的。虽然我的实现在扩展性上比参考实现弱了一些,而且写代码的时候 IDEA 总是不识相的报告找不到类定义……IDEA 找不到类的话,我只要执行编译把代码生成出来就好了,扩展性后面我会搞定的。

这几天我在做项目的时候,花了几个小时把这个黑科技从我的 Demo 项目迁移到了生产代码中,然后做了大量的改进。

Read More...