kuga

Now is better than never

PHP 单例模式实现继承的坑

自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的特性(Late Static Binding)。 有了这个特性,实现单例模式的继承就变得简单得多了。 虽然这里有一个坑,但不并阻碍 PHP 成为世界上最好的语言 :) 网上(某度)最常见的实现方式如下。 <?php class A { public static $instance = null; ...

Wordpress XHProf XHGui 性能分析

最近发现用 Wordpress 搭建的博客响应很慢,特别是后台,TTFB(Time To First Byte) 时间很长。 这个 TTFB 其实就是 PHP 代码的执行时间,后来结合使用 XHProf 和 XHGui 分析之后, 发现这些都是由 WP_Http_Streams::request 这个函数造成的,如下图。 加了日志发现,这些都是 Wordpress 自身和插件相关的更新...

Docker Redis Cluster

最近需要在 3 台机器上搭建一个 Redis 3.0 的集群, 因为在测试的时候并没有这么多机器,即使是虚拟机也要一台台部署,很不方便。 这个时候很自然就想到 Docker 了。 其实关于 Docker 部署 Redis 集群的文章,网上有很多,GitHub 也有源码, 但是这些例子大多是在一个容器中部署的,基本上不存在网络的问题。 但在真实的场景中,主从一般是不在同一台机器中的, 所以这...

Docker PHPUnit 单元测试

如果你有写单元测试,你一定会发现随着测试的增加,测试所需要的环境会越来越复杂。 自己本地配置一份,测试服务器配置一份,一旦不止你一个人开发,其它人也要配置一份,想想都累。 但如果把测试集成到 Docker 的容器中,大家只要拉取镜像就能跑了,是不是很方便? 而且共同维护一份 Dockerfile 就相当于文档,既标准又清晰,想想都有点小激动! 那我们就从一个具体的例子说明吧,首先创建如下目...

Docker 安装与加速

一直以来,安装和配置环境都是很费时间的,虽然大多是重复的劳动, 但报错又总是层出不穷,不按套路出招,几个小时很快就过去了, 自己写部署脚本也不太现实,没有标准还不通用,往往就成了一次性脚本, 另外又不是很懂一些专业的运维工具,狗带的心都有了 :( 就在这时,Docker 这货跑过来说:哥可是一次编写,到处部署,要不要试试? 我靠,这不是 Java 的广告词吗,??黑人问号?? 那好吧,总...

Magic Keyboard

其实下单之前还是有些犹豫的,要不买个有线的吧,便宜一半啊! 啊!不行啊!我会后悔啊!啊啊啊!我要!现在就要! 总体来说,就是超级小,键程短,打字不费力,关键是漂亮啊哈哈哈! 以后可以安安静静的写(zhuang)代(x)码了。 关于驱动 Mac 就不说了,无缝匹配。 Ubuntu 14.04 外接 USB 蓝牙才成功。 Windows 8.1 的驱动死活装不上,外接 USB 蓝牙也没用。 ...

Den Den Mushi

“莫西莫西,我是路飞,是要成为海贼王的男人” —— 来自电话虫客户端 电话虫(Den Den Mushi) 我们船长说,身为海贼,不想再用移动或者联通的电话卡了,怕暴露经纬度,迟早被海军查水表。 于是我就找来了 Node.js,重新把这些 bug 连接了起来。 项目地址 Demo: http://dendenmushi.me GitHub: https://github.com...