工具
君子性非异也,善假于物也
主旨就是要有工具意识
人从最初的状态到今天,是用工具来划分时代的:石器时代、青铜时代、铁器时代、蒸汽时代、电气时代,信息时代,可见工具的重要性,作为生产力的基础(另一个是人自身),工具可以极大改变整体的生产效率和资源分配格局
充分使用现有工具是运维人员必备的基本素质,工具可以极大拓展和提升个体的能力边界
编写脚本就是一个创造工具的过程
DRY
是不是所有的工具脚本都要偏执地亲自来编写?
DRY(Don’t Repeat Yourself)不要重复发明轮子 ,因为使用工具的初衷是为了提升工作效率,编写脚本本身也是一种成本支出(探究语言和编写过程都得花费一定时间),当这种支出超过一定边界时反而成为了负担(降低了整体工作效率,反而得不偿失),如果正好有人已经完成了相同或类似的工作,拿来稍作修改就可以用岂不是更好,更符合使用工具的初衷?
节省了时间就等于拓展了生命容量
事实上,人就是一种不断重蹈覆辙的动物,很多事情都是在反复发生,表现在同一空间中历史上的不同时刻,或同一时刻空间中不同个体的身上,所以,很多路已经被前人或他人走过,拿过来直接 借鉴 就好了嘛,何必亲自去踩一回坑呢
那反映在工作中如何使用呢?
在shell 中对于排序的需求并不必自己写一个排序函数,直接使用sort就可以了,报表和汇总处理可以使用awk,替换可以使用sed ,过滤信息可以使用 grep ,定时执行也不必去循环检查时间,直接使用crontab,自己要做的只是将这些现成的工具拼接起来,处理目标数据,获取想要的结果就可以了
perl 有 cpan ,python 有 pip ,ruby 有 gem
如果登录到这些公共仓库中看一看,就会发现很多要花费大量时间来实现的复杂处理,都已经被人提前实现了,越通用的,越先被完成,我们要做的就是拿过来用就可以了
那是不是单纯依赖上面的成品包就可以不用自己具备编程能力了呢,当然不是,大部分不代表所有,必然有没被提前实现的方法,如果自己碰到了就得亲自操刀,封装好一点,还能回馈开源社区,即便被提前实现,依旧得具备可以正确使用的能力,至少也得知道如何配置调用,并且与现有的代码集成,其实当项目安全等级要求高的时候,还要有代码审查的能力
总而言之,一定程度的编码能力是绕不过的,但是不要事必躬亲,核心思想是充分利用好现有工具,根本目的是提高工作效率