Gradle中的AST transformations

Read More

Groovy闭包

由于Groovy支持脚本,因此首先需要明确Groovy提供了一个抽象类groovy.lang.Script,最终这个脚本会被编译为一个继承于groovy.lang.Script的类。定义的脚本是一个文件,最终编译的这个类名即是脚本文件的名称。

Read More

探索队列ArrayBlockingQueue

谈论ArrayBlockingQueue之前先说说初衷。之前在做私有容器云的持续交付时用到了Disruptor,这是一给进程内的高吞吐量低延迟的队列。

用它主要来做构建通知的接收,持续集成中可能有用户主动触发的构建,也有代码提交后触发的构建。系统对外提供的是RESTful接口来操作构建的触发,构建触发需要先保存触发的时间及其他记录,因此把这些通知放到队列中,接口接收到通知后立即返回,后台在接着来处理这些构建。

Read More

配置Docker的跨主机通信网络

众所周知docker有3种网络模式,分别是bridgehostnone。默认的是bridge,即在主机上创建一个虚拟网桥(交换机),用ifconfig主机上一般都能看到这个叫docker0。容器会分配到一个IP,数据包通过转发到docker0,在同一主机下的容器通过这种方式可以直接通信。若是跨主机则需要通过映射主机端口的方式,缺少一定的扩展性。

Read More

一个Mesos集群划分不同环境

公司现在通过Mesos和Marathon来部署管理Docker应用。一个项目从开发到上线需要通过不同的测试,每个公司不同,大致可分为测试环境、预发布环境和正式环境。之前是通过不同的Mesos集群来划分不同的环境,这样管理和维护会有稍许复杂。因此现在打算通过一个Mesos集群,划分不同的多个节点来作为一个环境,然后在发布的时候发不到执行的区域。
通过阅读Mesos和Marathon的文档。
一个有趣的问题引发对Docker的再次深入

Read More

Storm安装配置

公司有一个订单备注系统,业务模型中符合订单备注的条件其中之一是必须在发货前。合作的一些大的淘宝商家比较多,因此需要处理的订单量也很大。之前的老系统是首先订单数据推送到库后发送一个MQ小时,此时系统从数据库中拉取订单分析后备注响应的内容。单一次推送的订单量大,而且也有延时,因此出现楼单以及备注延迟的情况也很多。

Read More

将svn迁移至git

自己用Git很长时间,它的分支实在是太用好,自己甚是喜欢。这个世界不是完美的,还有一些公司会是其他的版本控制系统。新公司目前使用的是SVN,好在也有计划迁移至Git。对于SVN的迁移并不是什么难事儿,Git早已为我们想好了。

Git非常好的一个特性就是提供了git svn,它可以实现SVN和Git的双向桥接。它可以让你把Git作为一个SVN服务的客户端,这样就可以在本地使用Git的各种功能,然后把代码推送到SVN。当然也可以使用它来做SVN的迁移。我把整个迁移过程分为三个阶段:准备极端、svn库转换阶段、迁移阶段。

Read More

一次RabbitMQ问题的解决

公司使用的Java技术栈,MQ中间件是RabbitMQ,RabbitMQ的客户端使用的是Spring-AMQP。临近元旦几天却频繁宕机,影响到维护的一个老程序。经过排查发现可能是由于RabbitMQ 2.x版本的一个Bug,Queue超过一定的数量,两个节点复制Queue时候致使无法响应外界请求。Queue数量突然增多,其实是最近两个项目迁移合并导致。

Read More

为Emacst添加scala支持

最近公司要重新开发一个项目,并且使用Scala开发。虽然很早之前就开始学习Scala,但也并不是很熟悉。为了熟练Emacs便想为它添加Scala,Google一下很容易得到结果,但也要记录一下过程。

scala-mode可以从这里得到,支持emacs23及最新的;scala-mode2可以从这里得到,支持emacs24及最新的。推荐使用的是scala-mode2,它已经存在于MELPA中,而且emacs24自带包管理(MELPA)因此安装比较方便。

Read More

Emacs配置golang

一直以来都在学习Emacs,只不过总是断断续续的。常说要学好就要不断的去用,平常写 JAVA 代码也都是 IDE,偶尔对单个文件的修改也都是图方便只在终端利用 Vim。最近刚好在学些 Go 语言,觉得刚好能有机会常用 Emacs了。

初学 Go 语言,先不说要求自动补全这些了,代码高亮还是需要的。Go 的官方有提供 Emacs 的扩展,打开 Google 直接搜索就能首条就能看到。这里记录一些自己的配置。我用的是 Github 上一位朋友提供的 mode。这里也已经有说明怎么使用。

Read More