不知道从哪一届开始,老罗开锤子手机发布会的时候,会当场捐赠一款开源软件,第一次是捐赠给 OpenSSL,第二次是 OpenResty。那次发布会开完,OpenResty 在程序员圈子里火了一把,成为一种热门技术了。其实,OpenResty 在后端程序员世界里,早就享有盛名。当你不得不去面对高并发的场景的时候,你一定会发现 Nginx 的巧妙和强大,然后你会想到用 Nginx 解决问题,然后你一定会发现 OpenResty。

三年前就想学 OpenResty,一直被拖延症耽搁了。这期间,OpenResty 发展很快,无论是自身还是社区都进步很快,甚至也有了配套的 awesome-resty 项目。我下定决心这次好好学学。

Keep Reading — 2496 words totally

Yii 2.0 框架学习笔记-基础抽象

Yii 框架从 2.0 开始,底层抽象上面发生了一些变化。比如,多了 DI 和 Service Locator 等设计模式相关的抽象。这两天,专门看了下代码,写下一点我的想法。

上面的图是,是我用 Visual Paradigm 画的类图。从图里我们看到,2.0 版本以来,最根部的抽象是一个叫 Configurable 的接口,其主要作用就是说明所有的类都可以用类似 Key-Value 结构来进行配置。除了一些 Helper 的类,绝大部分对象都是 Configurable 的实现。

打开 Configurable 的代码,发现是一个空的接口,所以,我认为作者这是要表达一种抽象层面的概念,并没有实际的用途。查了 Stack-Overflow ,据说这是原自 Java 里的一种惯用做法,不过说实在的,我还是没有太理解,全空用来表达概念,可能是出于某种性能层面的考虑。但是,读起来确实有点故弄玄虚的错觉。

Keep Reading — 1441 words totally

最近,正好发生了一件大事,就是 GitLab 的运维同学不小心删除了生产的数据,虽然 GitLab 已经骇人听闻的准备了五种备份机制,但是,仍然导致他们丢失了将近 6 个小时的用户数据,尤其对他们声誉的损失,是根本无法估量的。反思一下,这个博客 Becomin’ Charles,也是没有完善的备份的,真是冷汗直冒啊,主要考虑到这是我的个人博客,但是想想已经坚持了快十年了,如果真的丢了的话,还是非常痛心的。

正好,老婆最近正在学习 Python 编程,我在教她,其实,我是 PHP 程序员,一点也不喜欢 Python,但是说实在,一个外行学编程的话,Python 确实比 PHP 友好太多了,只能推荐她学 Python 了。正好,借着这个机会,我决定自己也学学 Python 编程吧,于是,我决定要用 Python 做一个数据库的自动备份脚本。备份的位置,就用 Dropbox 来做吧,因为我的服务器是 Linode 提供的,美国 fremont 机房,选择美国的存储服务,比较合适。以下是我写得代码,Python 小白,敬请指教:

Keep Reading — 1003 words totally

使用 APT 源将 MySQL 升级到 5.7

我的博客是使用 Linode 搭建的,算算已经快有八年多历史了。从一开始,我就使用 Debian 发行版作为我的服务器版本。当时,最流行的服务器是 RedHat 和 Ubuntu,那时候我还没听说过 CentOS,哈哈,不想用盗版,又觉得 Debian 比较稳定,而且有无敌的 apt-get,就一直用 Debian 了。

因为我用 WordPress 搭建博客,一直以来,用的就是 MySQL 数据库,从 2015 年开始,MySQL 就推出了 5.7 版,增加了一些激动人心的特性,比如更好的 InnoDB,JSON,地理位置等等东西,一直以来还没机会探索。其实,我感觉,在做 PHP 的人群里,使用 MySQL 的新特性,一直以来都是比较偏保守的,也可能我个人处理更大规模的应用的机会比较多,平时更偏重于利用架构解决问题,反倒是对数据库本身的能力不甚了解。

Keep Reading — 738 words totally

2016 年 4 月 12 日,Let’s Encrypt 宣布,免费为广大网站提供 SSL 证书,从此,再也没有必要使用自签名证书了。本站也很早就用上了 Let’s Encrypt 提供的免费证书,那时候,还是使用的网友实现的 Python 脚本来进行的申请,后来,官方推出了官方客户端,也是 Python 实现的,我也懒得更换了。

这次,我突然遭遇了一次证书失效,(当然事后证明不是那么回事),怀疑到了非官方的证书申请客户端,并更换了官方推荐的形式,才发现,原来官方提供了这么好用的一个工具——certbot。所以,特此介绍给大家。

Keep Reading — 949 words totally

在 Mac 系统下开发 PHP 的话,使用 MAMP Pro 来搭建环境是一个不错的选择,主要还是因为方便,一口气就可以拥有 PHP + MySQL + Nginx + Apache + PostgreSQL + Memcached + Ruby + Python + Perl,可以说 Web 开发的全部组件基本都涉及到了。

所使用 MAMP Pro 已经有两年的历史了,最新升级的这个版本,配合最新的 Mac OS Sierra 版本,遇到了一个十分奇怪的问题,如果在命令行下使用 php 命令的话,每次执行命令都会特别缓慢。

Keep Reading — 388 words totally

我想,我使用 NetBeans 已经有很多年的历史了,但是比较遗憾的是,这些年来,也没有把 NetBeans 的功能用到极致。这点挺令人遗憾的,但是我还是坚持使用 NetBeans,主要我信奉一点,就是用什么 IDE 不重要,重要的是你能把它用到多高的效率。

在 NetBeans 上,我有几个插件是不能不装的,第一个是 jVi,这是一个用 Java 模拟的 vim 编辑器的插件,在 ItelliJ 系列的 IED 上,也有 IDEAVim,但是说实在的,我体验了下不好用,这可能也是我没有迁移过去的一个主要原因。jVi 极其地好用,非常逼近原生 vim 的体验,所以,这是至关重要的东西。

Keep Reading — 386 words totally

CentOS 是使用最普遍的服务器端 Linux 发行版,其主要原因还是因为 RedHat 公司出品的 RHEL 享誉盛名。很多公司目前使用的主要就是 CentOS 6.x 版本的操作系统。其实我个人不是很喜欢这个发行版,当然用了这么多年也不讨厌就是了。所以,一般朋友问我服务器装什么系统,如果对方完全不懂行的话,我会建议安装 Debian,因为既然来问我了,多数也会有跟进的问题。如果以前有一定使用经验的化,我推荐 CentOS 准没错,一般人的使用经验一般来自公司的服务器,多数就是 RedHat/CentOS/Suse 等等,用 CentOS 都是熟悉的味道。

Keep Reading — 646 words totally

部署 HSTS 提升网站安全性

什么是 HSTS?

HSTS 是 HTTP Strict Transport Security 的缩写,字面意思就是“HTTP 严格传输安全”。在 2012 年 11 月发布了 RFC 文件。其实质,是通过服务器和浏览器配合起来,强制用户使用安全连接来访问服务器。

HSTS 大致原理是,服务器在 SSL 连接的网站请求返回中,带上一个响应头(Response Header)信息,要求浏览器使用强制安全,则在下一次用户访问此域名时,浏览器会自动探测用户是否使用了安全连接,如果没有的话,自动在浏览器端重设了 URL,通过安全连接来访问服务器。避免了用户通过不加密的协议与服务器进行通信。

Keep Reading — 2126 words totally

哪怕到了最近几年,数据库被黑客完整下载的安全事件,也是层出不穷,程序员世界戏称为“脱裤”,好像光屁股一样羞耻。比如,刚过去不久的 CSDN,小米,多玩,等等事件都还历历在目。所以,程序员写代码决不能抱有侥幸心里,用户的密码,是最最隐私的东西,一定要妥善处理,一旦泄露,会给用户和服务网站都带来不可估量的损失。

决不能使用明文存储密码

Keep Reading — 1878 words totally