每一个可以努力的日子,都是一份厚礼。
配置
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 拒绝服务攻击了,真是惭愧。


