使用持续集成系统解放生产力

程序猿除了希望写好代码,一定也想着自己的项目可以如何快速的迭代上线,从而可以专注的完成代码的编写,减少繁杂的运维等工作。例如完成一项功能的开发后,推送到 Git 等代码管理系统后,剩下的测试、部署、上线等工作可以交给一个系统来自动化完成,这时便可以靠持续集成系统了。这里记录下我使用老牌的 Jenkins 持续集成系统来帮助自己完成的工作。

Go 基础知识点

已经专职做了很久的 Python 开发,不过心中对当初带我入行 C 也一直有些留恋。Go 语言的设计和定位和 C 语言有很多共同之处,也融入了很多现代的设计理念,写起来很有当初写 C 的亲切感。准备好好学习下这门语言,这里记录下一些个人觉得重要的基础知识点,随着不断深入再补充。

全能型 uWSGI 配置

在进行 Python web 开发时,使用 Django、Flask 等框架开发完毕后,部署时通常需要选择一个支持 wsgi 协议的 Web 服务器程序。目前比较通用的选择是 nginx + uWSGI,使用 nginx 来处理静态文件请求,其余动态内容再转发给 uWSGI 交给 web 后台处理,网上这样的配置教程也是最多的。

作为两款大名鼎鼎的服务器程序 nginx 负责静态文件,uWSGI 负责动态内容,各种在自己擅长的领域各施其职,的确效率很高,是高性能的 Python web 系统部署时的首选。

不过有时用 Python 写了个小站点,性能需求并不高时。部署服务还要安装 nginx 和 uWSGI 两个服务器程序就显得有点麻烦了。能否把这些工作都交给一个服务器程序呢。

在 hexo 中使用 git submodules 管理主题

hexo 中有着丰富的主题可以选择, 大部分的使用示例或者教程都是将主题 clone 到 theme 文件夹中来使用. 但这样来使用主题会存在如下的问题:

  • theme 中的主题属于一个独立的 Git 项目, 有自己的 .git 项目文件夹, 提交 hexo 项目时默认不会提交 theme 的 .git 文件夹, 在其他电脑上 clone 后会失去 theme 原本的版本控制功能.
  • 使用自己修改的主题时, 每次更改完主题, 需要在主题文件夹中提交一次, 然后再在 hexo 项目根文件夹中提交一次, 会产生两次修改内容一样的提交, 不够优雅.

还好万能的 Git 针对这种问题已经有了成熟的解决方案, 通过自带的 Git submodules 功能即可优雅的避免以上的问题.