为 gitolite 实现 mailinglist 命令行操控

09 Dec 2013 Posted in  perl

gitolite 是一个很常用的 git 仓库管理软件,可以通过命令行方式便捷操作自己拥有权限的项目仓库。不过不是所有的操作都可以通过命令完成,很多还是需要通知 gitolite 管理员来统一修改配置然后生效。比如通过 hook 发邮件这件事情。邮件收件人地址肯定每个项目就不一样,这个还要让管理员逐一来改,就不太好。所以这里实现了一个 mailinglist 的命令行操作子命令。 继续阅读……


Puppet 的类参数传递

04 Nov 2013 Posted in  puppet

之前使用 ENC 管理 puppet,尽量保持了输出 yaml 内容的简单,只提供了一个统一的全局参数定义 node 的 role。(题外话,puppetlabs 推荐了另一个通过继承关系实现 role 的示例,见:Designing Puppet - Roles and Profiles。) 继续阅读……


用 Perl 读取通达信日线数据

04 Nov 2013 Posted in  perl

之前看 skyline 的报警机制的时候,为了寻找测试数据,曾经想到是不是可以用股价走势。其实股价走势分析也是一个很深的编程领域,有些选股软件一份就好几千的卖。当然我这里没兴趣和时间搞那么复杂了。简单的说一下如何从通达信的存档里读取日线数据,说到底还是 pack/unpack 的运用: 继续阅读……


selinux 对 webserver 文件发布的影响

26 Oct 2013 Posted in  linux

SELinux 在国内是一个很少有人用的东西,一般来说,服务器上手第一件事情就是把 SELinux 关掉,以至于有问题的时候排查思路里都压根没检查 SELinux 这步。 继续阅读……


用 plenv 代替 perlbrew 管理 Perl5

25 Oct 2013 Posted in  perl

我们都知道有 virtualenv 啊,rvm 啊之类的工具来管理 python,ruby的多版本问题,后来台湾的朋友也引入到了 Perl 世界,这就是 perlbrew。 继续阅读……


Perl 的 overload 妙用

16 Oct 2013 Posted in  perl

在使用 Mojolicious 的时候,通常我们会发现一个很有趣的现象。 继续阅读……



用 ElasticSearch 支持 Rexify 网站的搜索功能

14 Sep 2013 Posted in 

最近给 Rexify 官网做中文化工作,除了文字翻译之外,还要负责把服务正常跑起来。网站本身就是一个 Mojolicious 写的小东西,用 morbo html/website.pl 命令直接运行就可以监听在 3000 端口,然后通过 nginx 代理发布即可。 继续阅读……


Perl 和 Python 的 pack 函数格式字符的区别

10 Sep 2013 Posted in  perl

MooseFS 是运用很广泛的一个分布式文件系统,其自带有一个 python 写的 CGI 页面,可以查看集群状态。不过对于运维来说,这就不太方便纳入 nagios 等其他现有的监控体系中。好在既然它的 CGI 是 python 写的,那么自己照样临摹出一个监控脚本也不是太复杂。 继续阅读……


编译最新 3.10 内核在 RHEL6 上支持 Docker

27 Aug 2013 Posted in  cloud

之前在 Fedora19 上试图自己通过编译 3.10 内核的方式来完成 aufs 的支持,但是一直有问题,哪怕同样的步骤,github 上其他人都可以,只能怀疑是我个人电脑问题了。不过后来通过 SPEC 方式完成了最终测试,感谢 sciurus 童鞋的项目继续阅读……


在 Docker 上运行 PerlDancer 示例

26 Aug 2013 Posted in  cloud

搭建好了 docker 环境后,就可以来试试用 docker 跑一个应用实例来看看了。和 Vagrant 比较类似,docker 也是用一个配置文件来规划其基础镜像内的部署,不过值得注意的是,在 Dockerfile 里的每一个指令成功执行后,docker 默认都会 commit 一次,这样就节省了一些空间和时间。 继续阅读……


快速在 CentOS6 上运行 docker

24 Aug 2013 Posted in  cloud

docker 是由著名 PAAS 公司 dotcloud 开源的 linux 容器项目,在此之前,只有 cloudfoundry 下属的 warden 半死不活的慢慢前进着。 继续阅读……


BeiJing Perl Workshop 2013 参会总结

14 Aug 2013 Posted in  perl

上周六在万通会议中心参加了 BeiJing Perl Workshop 2013 ,并做了 40 分钟长的关于 ElasticSearch 的演讲。上届 2011 作为一个看客,两年后作为一个积极参与和演讲者,真的有必要记录一下。 继续阅读……


Selenium 测试框架介绍

22 Jul 2013 Posted in  perl monitor

Selenium 是一个自动化网站测试框架,包括 IDE、WebDriver 和 Grid 三个套件。其官网地址见:http://docs.seleniumhq.org/projects/。其中 Grid 用以跨主机的集群测试,今天就不讲了。而 WebDriver 则是用以控制 Selenium Server(Server 上可以接受并启动的浏览器包括Firefox、IE、Chrome、Safari、Android、IPhone、PhantomJS 等等)进行具体测试动作的客户端,其早期版本叫做 Remote Control。 继续阅读……


【Logstash 系列】根据事件统计值报警

11 Jul 2013 Posted in  logstash

之前已经用很多博文说过了 logstash 如何配合 elasticsearch 以及 kibana 来做日子分析和实时搜索。其实 logstash 上百个插件还有很多其他的玩法,绝不是局限在日志搜索统计方面的。今天就展示另一个做法。根据日志中的异常值出现频率报警。 继续阅读……


获取 Perl 程序中 GET 请求发向的具体 IP

28 Jun 2013 Posted in  perl

在运维工作中我们经常需要检测用户访问是否正常,一般来说,直接通过 DNS 客户端获取 A 记录就可以满足需要。不过如果我们可以获得具体连接的 IP 地址,那么就可以缩小问题的判断范围,因为 DNS 的 A 记录通常是有多个的。 继续阅读……


计算两个时间点之间隔了几天

24 Jun 2013 Posted in  perl

两个时间点字符串,像这样:2013-06-21,怎么计算相距多少天呢? 继续阅读……


如何去除 rpmbuild 自动发现的依赖关系

21 Jun 2013 Posted in  linux

同事在用简单的 SPEC 配置打包 nagios 套件的时候,发现最后生成的 RPM 包附加了很多依赖关系。其中 perl-Net-SNMP 这个包,是服务器默认安装中没有的。这也不是什么大问题。不过这个出现还是蛮奇怪的。值得研究一下。 继续阅读……


通过 Rex 命令行参数向动态服务器组发起任务

20 Jun 2013 Posted in  devops

Rex 默认的服务器组定义方式有三种,直接写在 Rexfile 文件中;每行一个写成 IP 列表保存成文件,然后通过 lookup_file 读取;把组名和 IP 写成 .ini 格式文件,通过 groups_file "$name.ini" 一次性获取。 继续阅读……


【Etsy 的 Kale 系统】skyline 的过滤算法

19 Jun 2013 Posted in  monitor

监控大户 Etsy 最近有公布了一个全新的监控分析系统,叫 Kale,博客地址:http://codeascraft.com/2013/06/11/introducing-kale/继续阅读……


【Etsy 的 Kale 系统】简介、部署和应用

18 Jun 2013 Posted in  monitor

监控大户 Etsy 最近有公布了一个全新的监控分析系统,叫 Kale,博客地址:http://codeascraft.com/2013/06/11/introducing-kale/继续阅读……


【翻译】运维的85条规则

12 Jun 2013 Posted in 

2007 年,时任虚拟世界游戏公司 Vivaty 运维副总裁的 Jon Prall 在他的个人博客上发表过一篇《运维的85条规则》。2010 年他跳槽到视频电话公司 Tango 之初,做了两处更新,兹翻译如下: 继续阅读……


puppet和rex的常用资源写法类比

28 May 2013 Posted in  devops

首先要申明,rex 和 puppet 本质上是不同的,puppet 追求的是状态,rex 追求的是操作。puppet 用户经常关心的是 agent 运行了没,而 rex 用户关心的是怎么写 Rexfile 能让中控运行 rex 时的命令参数更简洁漂亮(个人感受==!)。所以哪怕在本文中列举的这些资源写法很类似,也请读者们注意:rex 的资源关键词命名,都是带有动作性的,比如 createaddinstalluploaddownloadsync 等等。甚至精确的说,rex 里这些不是资源(Puppet::Types::***),他们是 Rex::Commands::***继续阅读……


使用 Rex::Box 代替 Vagrant 的工作

27 May 2013 Posted in  devops

Vagrant 是近来 devops 界内非常流行和火爆的工具,它和 puppet/chef 的结合,成为运维开发和测试,甚至预热部署的重要手段。比如在 cloudfoundry 官方放弃使用 vcap_setup 脚本部署后,社区大多对其 BOSH 不买账,转而研究使用 vagrant 部署了。 继续阅读……


用mojo抓取数据并gocr替换图片内容

14 May 2013 Posted in  perl

现在的网站越来越狡猾,连招聘网站的信息都懂的把公司的联系方式动态图片化了。还好为了观看方便,没加什么干扰。所以写个脚本来识别还是可以的。虽然到目前为止没发现比较好的 OCR 工具——我指的是可以直接apt-get安装的,有朋友知道哪个比较好的话,欢迎告诉我~ 继续阅读……