通过DNS认证来部署Let's Encrypt 原来是通过http认证的方式来完成ACME 的 Identifier Validation Challenges,但是内网的机器就无法完成这个认证,今天看了下,LE支持dns认证了,所以实践了一下。 安装首先安装Certbot,按照官网操作即可: https://certbot.eff.org/instructions。 生成证书然后执行 123certbot -d ssl-test.robbe 2016-12-14 Ops #TLS
使用repox搭建sbt/maven镜像 最近sbt的速度实在是不能忍受了,所以使用repox搭建了sbt镜像。 搭建过程没有什么好说的,直接sbt assembly,然后 java -Xmx512m -jar target/scala-2.11/repox-assembly-0.1-SNAPSHOT.jar 就好了。 但是发现了两个repox的问题: 下载文件时,服务器全部下载完后,才能传输给sbt(不支持nginx那种“流式代理 2016-12-13 Ops #Java #Scala
Flume在hdfs产生大量日志文件的问题 线上两台flume向hdfs写日志,但是后来发现每5分钟产生的日志文件数量很多(远远超过两个的数量)。 后来找了一个时间观察下日志,发现如下日志: 16/12/13 11:38:11 INFO hdfs.BucketWriter: Closing idle bucketWriter hdfs://xxx/xx/xxx_log_20161213/.xxx_log.1481600173693.tmp 2016-12-12 Ops
为何不可使用Redis的KEYS命令 在Redis KEYS命令的文档中,有如下一句话: consider KEYS as a command that should only be used in production environments with extreme care. It may ruin performance when it is executed against large databases. 简而言之, 2016-12-10 #Linux #Redis
Laravel Facade实现细节考 前两天有人讲Laravel中的Facade的时候,看到了__callStatic的实现,探究了下为何如此。 现有实现switch实现我们在调用Facede的方法的时候,绝大多数都会被__callStatic来处理,Larvel 5.1的__callStatic实现如下: 1234567891011121314switch (count($args)) { case 0: 2016-09-14 Language > PHP #PHP
composer中指定依赖分支名的坑 之前只是看着别人写的composer.json,知道如果依赖一个项目的master分之,则在依赖的version中可以写dev-master。我就以为所有对分支的依赖,都是写成dev-<branch_name>。 后来发现,v1.x这种分支名,不能直接使用dev-v1.x来声明依赖。 查了下官方文档 : For every branch, a package development 2016-09-13 Language > PHP #PHP
Laravel Migration 类名重复分析 开发者在开发中一般都会为Migration起类名,最常见的就是AlterUserTable这种名字,但是如果后续的开发者第二次修改表,就有了两个类名相同的Migration了。 这样有什么问题吗? 首先,这个Migration如果和之前类名相同的Migration不在同一批次的话,是可以执行成功的。 接下来看看为什么。 Migration的执行从Migration的执行来看,\Illuminate 2016-07-23 Language > PHP #PHP
《硅谷钢铁侠:埃隆·马斯克的冒险人生》 “我们想要会飞的汽车,而不是140个字符。” 马斯克有自己的想法 他需要做的是,制定一个目标,然后尽力实现。 在SpaceX,他知道自己要造便宜的火箭,所以员工必须努力优化每个部件;在特斯拉,员工必须有最好的执行力。 “他(马斯克)总是说,让最基本的物理原理说话。” “我们首先要决定世界上最好的遮阳板是什么样子的,然后做得比那更好。” 勇敢面对未知 虽然之前马斯克不知道如何 2016-06-29 Read
如何命名二进制PHP扩展? Python界有自己的文件名约定https://www.python.org/dev/peps/pep-0427/#file-name-convention,比如distribution-1.0-1-py27-none-any.whl一看就知道自己能不能用到这个whl包。 最近需要发布thrift_protocol扩展,故自己定下一个命名规范,在此记录之。 首先看看php如何判断扩展兼容与否,dl 2016-06-12 uncategorized
将ngx_brotli编译成动态nginx模块 Brotli是google新出的一个压缩算法,据说比Zopfli的压缩率要高20–26%(Zopfli是google之前发布的一个和Deflate兼容的压缩算法)。 Chrome 49+、Firefox 44+以及Opera 36+都支持Brotli了,所以,是时候尝试一把了。 但是为了支持这个特性,自己编译部署nginx太麻烦了,nginx 1.9.11开始支持动态模块,所以也来尝试一把。 系统 2016-06-11 uncategorized