July 27th, 2016

logstash的lumberjack协议解析

最近在实现一个agent采集服务器日志,设计agent需要能够将数据发送给logstash。当然logstash支持很多输入协议,其中,logstash技术栈(包括ElasticSearch)内有一种叫做lumberjack的协议,可能是专门为传输日志数据设计的。不过网上对于lumberjack协议没有公开的资料,而且实现上,只有javarubygolang版。笔者通过参考golang版(elastic/go-lumber)和java版(logstash-forwarder-java),用C实现了agentlumberjack的支持。本文总结一下lumberjack协议的协议报文格式。

July 18th, 2016

AIX配置Volumn

我们知道,现在操作系统都具有默认的卷管理系统来管理磁盘。详见存储技术之卷管理和文件系统。总体来说,从下向上分为物理磁盘(PV)、逻辑卷组(VG)、逻辑卷(LV),用户可以直接mount的是逻辑卷。本文记录一些AIX下的卷管理和配置方法。

July 17th, 2016

Linux下的静态库、动态库和动态加载库

库的存在极大的提高了C/C++程序的复用性,但是库对于初学者来说有些难以驾驭,本文从Linux的角度浅谈Linux下的静态库、动态库和动态加载库。

May 16th, 2016

Golang服务器的网络层实现

由于最近有接触到一些长连接的服务器实现,对网络模型有所学习。对基于C/C++的网络模型实现和基于GoLang的实现对比下来,发现Golang的网络模型编程难度大大降低,这得益于Golang的goroutine,可以在编程的时候肆无忌惮的创建并发”线程”,当服务器能为每一个客户端都开启若干”线程”的话,编程变的简单很多。

February 29th, 2016

I/O多路复用和Socket

由于IO操作涉及到系统调用,涉及到用户空间和内核空间的切换,所以理解系统的IO模型,对于需要进入到系统调用层面进行编程来说是很重要的。

December 14th, 2015

漫谈iOS程序的证书和签名机制

接触iOS开发半年,曾经也被这个主题坑的摸不着头脑,也在淘宝上买过企业证书签名这些服务,有大神都做了一个全自动的发布打包(不过此大神现在不卖企业证书了),甚是羡慕和崇拜。于是,花了一点时间去研究了一下iOS这套证书和签名机制,并撰文分享给需要的朋友。由于本人才疏学浅,多有遗漏或错误之处,还请大神多多指教。

December 2nd, 2015

开始vim练级

在编辑器界流传着一个神话:vim是编辑器之神,emacs是神用的编辑器。听上去就那么高大上,好像遥不可及一般。笔者曾经使用的最多的编辑器是visual studio,作为一款IDE,vs可以说是相当出色的,伴随.net开发那段时间。后来,随着使用.net逐渐变少,慢慢开始做一些前端和php的东西,逐渐将编辑器定位于sublime,因为追求是小巧和速度。然而,这些基于GUI的编辑器秉承了视窗系统的传统,大量的依赖鼠标、快捷键、菜单…一个功能是一个全新的菜单项或者快捷键。然而,linux的哲学不是这样的。记得在某本书中提到,linux的哲学好比瑞士军刀,用现有的东西组合来创造新的东西来满足需求,而不是反复的创造新的工具。当然这仅限于基于文本的处理。linux中的管道便是这一哲学和价值观最好的体现。再看编辑器也是如此,慢慢你会发现,“组合”是vim的精髓。当然,要达到那样的状态需要大量的练习和高度的思维集中,对于锻炼大脑,也是很有利的。而emacs似乎真的是神用的编辑器,有人说emacs其实是个操作系统…好吧,我不是神,就先考虑编辑器之神吧。

November 16th, 2015

FastCGI+lighttpd开发之介绍和环境搭建

由于需要做一些简单的基于FastCGI的Web开发,开始学习和调研,本篇介绍CGI和FastCGI的概念以及基于FastCGI官方的devkit,以及lighttpd搭建起简单的开发环境,以作备忘。

November 14th, 2015

githook+rsync简单实现web部署

最近想实现利用githook发布php程序,本来对githook已经是有所了解了,在hook里面用scp实现复制,但是发现每次发布耗时太长,于是考虑用rsync来同步代码,因为rsync是基于增量同步的,应该能极大缩减发布时间。当然现在有不少现成的持续集成系统,之所以不选择这些集成方案,一来是规模小,并没有达到那个必要性,二来也是进一步锻炼对linux的理解。