2012 年还剩下最后 30 个小时。总结一下这一年。

4 月是本年度最重要的一个月,在这个月换工作到了人人,告别了之前八个月乱七八糟的工作状态,再不换,人就要被玩残了。感谢@懒桃儿吃桃儿的飞速决断。作为自我激励,在换工作的那个周末去搞定了人生大事(好吧,其实压根不是啥激励,应该叫水到渠成)……

9 月是另一个关键点,入职的第一个季度总结,确认自己虽然荒废了八个月,但还没掉队。既然安心自己不至于失业,也就顺带去转职了房奴。

技术博客上还是说点技术点的。

第一、大半年的事情在和 logstash + ElasticSearch 系统打交道。

这个偶然在 oschina 上看到的项目,已经成为我心目中 splunk 的最佳开源替代品。从 5 月动手测试,到现在为止,写过 2 个相关的 ppt,做过 1 次技术分享,发了 8 篇相关原创博客文章,翻译了 2 篇官网文章,在微博和 QQ 上和大概 10 个左右的朋友交流了搭建、优化的心得。考虑是不是搞个地方存一下这些交流。前几天看 CloudFoundry 里都有专门的 ElasticSearch 组件。相信云时代这个穷人版 splunk 可以走得更远 —— 嗯,不会写 java 用 hadoop 的运维真的都可以试试。

第二、Perl 相关。

本年度关于 Perl 最多的运用是 Dancer web开发框架。在 dancer 和 twitter bootstrap 的帮助下做的内部运维工具网站看起来还有那么点意思。使用过程中学会用 IRC 工具和社区进行交流,提供了一个 plugin-upload-progress 的想法,发了两个 patch ,一个给 plugin-flashmessage 同时支持使用 coderef 的 TT2 和 object 的 Text::Xslate 模版,一个给 plugin-auth-extensible 的角色认证加上正则匹配的特性。虽然扶凯已经全面转向使用 Mojolicious 框架了,不过我依然喜欢 dancer 这种广泛使用关键字的方式 —— 少写好多 $self-> 或者 app-> 呢~ 另一个记忆深刻的是某天有人热心的上来说:“我们要多写博客宣传 Dancer 在云计算的运用”,被作者喷还不如给我多写两个插件……

然后是 Message::Passing 框架,这是 logstash 项目的 perl port。不过个人纯属好玩和不服气,看完代码当作学习 perl 的 Moo 对象系统了。值得一提是虽然没线上用,倒是找了个周末写了两个模块 Message::Passing::Filter::RegexpMessage::Passing::Output::PocketIO 上传到 CPAN 了。总算不是光拿不贡献的 perler 了。然后发现 Test::More 真的蛮不错的,写第二个模块的时候基本就是先写好 test 再写 lib 了,据说这叫 TDD ?

然后是 Rex 项目,这是一个类似 funccapistrano 的项目。这类项目和 puppetchefcfenginelcfg 的区别,我觉得是运行目的。cf 系要求的是保持 agent 的配置一致,而 rex 等的目的是给同类目的执行同类任务。这个区别在 2008 年的 sysadmin 里就已经解释过,不过似乎很多人一直在重复问~ 因为 perl 目前还没有像 ruby 的 rakefile 这样流行的任务清单控制(其实有个日本人写的pake,不过在日本人的诸多 modern perl 项目里,我觉得这个 clone 的不咋地),所以我现在都用 Rexfile 来做 task 了,也算一种用法。顺带给只能用 Net::SSH2 的 Rex 提交了 Net::OpenSSH 驱动,不过作者很负责任的说要等自己搞出来一套 KerberOS5 认证环境测试我的 pull request 是否能运行后才 merge …… 国内还有哪里用 krb5 认证滴?

最后是 SmokePing 项目。说实话真没想到这么有名的监控项目代码乱成这个样子。好几次涌现出改写整个项目的疯狂念头,不过看看时间表,想想 rrd 那部分代码看不太懂,放弃了。只好在边边角角上做点修改 —— 顺带再次证明,在 web 开发方面,perl 不是输给了 php/python/ruby ,而是不会 css/js 的 perler 输给了那些会 css/js 的phper/pythoner/rubyer……

附带提一下 nginx_perl 项目,这个和 nginx_lua 一样的全流程非阻塞式的东东,最终我还是没找到机会真正用上,白瞎偶去年底很开心的给它写 ppt 推介了。大抵还用 perl 的同学觉得用 Nginx 内置的阻塞式的 perl 已经够用了?

第三、运维、测试

要感谢人人这个平台,日常运维之余完成了几个测试,Apache Traffic Server 的因为前设条件比较多,结论不具有普遍性;Nginx 的万兆网络环境测试还是很有趣的 —— 嗯,虽然最后的脚本依然很难看,拿不出手见人,不过结果还是有力的。@张纹华 ,你的框架要好好搞~

Squid 从我工作以来就在折腾,看样子是要继续折腾下去。感谢 systemtap 工具,或许明年我在缓慢的学习 C 语言开发的同时,尽量快的搞定那两个问题吧,阿弥陀佛,哈利路亚……

puppet 已经风靡全球,也确实还算好用。我从接触开始就一眼相中了 ENC 接口,不过好像问一圈没谁注意这个。大多数人直接把 hostname 规划和 puppet 连起来了。这部分到底怎样才是 best practice ,还要慢慢看了。

fpm 命令行工具,又是一个 jordansissel 的 ruby 项目。一般情况下的 package 生成,绝对够用,和 logstash 一样也是我有事没事就推广一下的好东东。

linux 的邮件列表订阅之后迅速的被我过滤掉了,那么多邮件,你们是怎么看过来的,kernel 学习任重道远。

第四、学习

上半年,@邓侃 博士在北航的云计算公开课基本都去听了。虽然个人工作重点完全不在这方面,不过依然觉得是有所得的。顺带想起某节课后和 @R_exify 在北航东门外的肯德基里推导怎么设计一个对外透明的 MySQLaaS。大概吹牛就是这样子的……

关于 lua,ruby,javascript,基本都是用到临头抱佛脚,不过对 ruby 和 js 都有深入学习的想法,但是我怨念已久的 C 啊,啥时侯才能学会你。不知道为什么对 python 就是没感觉。话说昨晚在微博上看到有人说看 python 的源码觉得它的 OO 和 lua 很像。顿时我就很郁闷,因为之前我看 lua 的时候觉得 lua 实现的 OO 和 Perl5 很像的好吧。尼玛大家都像来像去的,你们 Pythoner 整天鄙视 Perl 干吗……

关于 CloudFoundry ,关注来关注去,基本停留在看新闻的阶段,一行代码没瞄过,连一个 micro 环境都没搭建过。嗯,不过考虑到毕竟看了不少新闻,还是留一笔。

关于微博,有微博之后,学习成本确实降低了,因为很多问题你可以直接圈人……不过我的同学朋友们肯定对我的微博内容是“眼不见心不烦”了的。哈哈~

总之,这是无比充实的一年。

排除掉每个季度末,比如现在,对下季度工作计划的茫然外。

感谢自己依然充满对知识的渴望,让年终的总结显得这么充实和踏实。