每一个可以努力的日子,都是一份厚礼。
配置
Git tips: 合并 commit 保持分支干净整洁
2015 12月 25th
本文的读者需要已经了解 基本的 Git 操作和开发流程。
在我们开发完分支后,一般分支上会有很多 commit —— 少不了诸如 “fix typo”, “sth wrong in the previous commit” 之类的 commit。在合并到主干的时候,往往这类 commit 显得臃肿多余。为了方便别人做 code review,我们希望合并一些不必要的 commit 使我们的分支显得干净一目了然,也方便管理。有 3 种方式可以做到。
使用 GitHub / GitLab 的 Webhooks 进行网站自动化部署
2015 1月 19th
老早就想写这个话题了,今天正好有机会研究了一下 git 的自动化部署。最终做到的效果就是,每当有新的 commit push 到 master 分支的时候,就自动在测试/生产服务器上进行 git pull 拉取最新的代码,免去了程序猿兼职运维 ssh 上去拉代码部署的重复性工作。我们也要 Agile development 不是?什么敏捷开发啊,极限编程啊,快速迭代啊,持续集成啊,精益创业啊,口号怎么高端怎么来,最后就是写了个自动化脚本……
将代码库从 SVN 迁移至 Git 并保留所有 commit 记录
2014 5月 15th
公司内部原本使用 SVN 进行版本控制,但随着 Github 的流行我个人的代码管理习惯逐渐转变。虽然公司项目并非开源,SVN 所具有的标准 trunk / branches / tags 结构完全够用,使用 Git 仍然有如下优势:
- 类似 GitHub 的 GitLab 免费管理工具。将代码托管在自己内部服务器上的同时,提供了优美的 web 界面,图形化分支结构,更直观的代码审查,统计、issue 系统、wiki 等功能全面集成。
- 更方便主程做 code review,控制代码质量。创建主仓库,多人开发时使用 fork 模式,每个人拥有自己独立的 repo,独立的 trunk / branches,最后发送 pull request 进行代码合并。
- commit 和 push 更快。体现在 push 到远程仓库时 Git 会先对所有需要上传的文件进行 zip 打包压缩,然后一次性传输,在远程服务器解压,全部自动完成。而 SVN 则是一个一个文件地上传,代码是纯文本,总体积并不大,但是大量零碎的小文件频繁建立网络连接造成延迟。这在升级第三方的库或者框架时,成千上万的文件更新更加让人难以忍受。
- hook 可以更方便做自动化部署。当然这个 SVN 也有。
权衡后我决定花时间进行代码仓库的迁移。代码迁移并非简单地创建 Git repo 把当前项目代码一次性 commit 过去就够了,因为 SVN 中存有长年累月的 commit 历史记录,丢失历史记录将对今后追溯 debug 造成非常大的麻烦,所以如何保留 commit 记录就是迁移的关键。
在 Android 上使用 Unblock Youku 观看国内视频
2014 4月 17th
国内的优酷、土豆、搜狐、爱奇艺等网站上的很多正版影视资源屏蔽了海外 IP,仅限中国大陆用户观看。为了解除地域限制,很多海外华人使用 Unblock Youku 浏览器插件,iOS 设备则可以 设定 PAC 代理,而现在使用安卓平板和手机的用户通过 Drony 也可以 Unblock Youku 了。
在 iPad 上使用 Unblock Youku 观看大陆网站影片
2012 12月 9th
由于版权等方面的原因,优酷土豆等网站上的很多视频仅限中国大陆用户观看,这对身处国外的华人来说很不便。Unblock Youku 是我之前介绍的一个 Chrome 浏览器扩展程序,可以用来解除地域限制,使得海外用户也能访问国内的视频网站观看电影剧集。随着苹果 iPad 平板电脑等设备的普及,使用 iOS 设备观看大陆影片的需求越来越多,而这些设备上是无法使用 Unblock Youku 插件的。为了解决这个问题,我们可以设置浏览器的 proxy 代理。Unblock Youku 目前实验性地提供了一个代理自动配置 PAC 文件,非常简单方便。
约定优于配置——软件开发的简约原则
2012 9月 15th
工作快满 1 年了。在刚从 CUHK 毕业的时候,我还满怀悲壮地表示在中文大学饱受摧残,各种 assignments projects 所写的代码已经超过了整个在武大的四年。而现在,wc -l 显示的数字已经可以让我十分蛋定,这一年的代码量已经超过了过去所有学生时代的总和。回过头来看一年前写的代码,真是惨不忍睹,恨不得把当时的自己拉出去暴打一顿。确实走了很多弯路,但我也因此收获颇丰。
感触之一就是怎样编写漂亮整洁的代码。我曾经说过,我是个完美主义者,写博客的时候我要检查以防出现错别字,写代码的时候我会特别注意变量命名是否规范,甚至代码缩进是否对齐。这大概已经属于强迫症的治疗范围了。在现实项目开发中,整洁漂亮 意味着用最少的代码,实现完整的业务功能,同时代码是易于理解的。然而随着时间流逝代码不断被修改,系统设计的整体结构则逐渐衰弱。编码从严谨的工程堕落为随性地胡乱砍劈。不重构,软件就会慢慢腐烂。这一切是如何发生的呢?
Ngnix 配置完美支持 WordPress Super Cache 插件
2012 9月 1st
WordPress 大概是这个星球上使用得最多的博客程序了,甚至很多资讯、社区等非博客网站也在使用 WordPress。据统计,在全球排名 100 万以内的网站中,约有 14.7% 是利用 WordPress 程序搭建。令人震惊的是,维护整个 WordPress 运营和升级的团队核心成员,不足 20 人。大量的志愿者在为这个生态系统贡献精美的主题、实用的插件。
然而,为了保证灵活的可扩展性,Wordpress 牺牲了性能,它因为速度低下而广受诟病,很多空间商也为此头疼 —— 当访问量很大的时候,臃肿的 WordPress 站点消耗了服务器太多CPU和内存资源。我曾经总结过提高网站性能的方法,其中最有效的手段就是静态化了。
使用 WP Super Cache 插件可以帮助 WordPress 网站实现页面静态化,可惜的是 supercache 默认没有提供对 Ngnix 服务器的支持。
VPS 防止 SSH 暴力登录尝试攻击
2012 8月 22nd
VPS 屏蔽扫描网站的 IP
2012 8月 17th
前段时间博客经常性地无法访问,网站宕机。SSH 上去看进程,发现大量 php-fpm 占用系统资源,查看服务器的 Nginx 日志,就知道发生了什么事情。个别 IP “友情”为我的站点扫描漏洞,瞬时并发连接很大。我知道大家也没什么恶意,只是用黑客工具比较兴奋,拿 www.lovelucy.info 练练手而已嘛。但是博主很穷,小站搭建在一个配置并不高的免费 VPS 上,折腾不起,压力很大,结果一不小心让各位搞成 DoS 拒绝服务攻击了,真是惭愧。