1 找到你绕不开的那个点-系统学习、刻意练习
愈来愈发现系统学习一个知识的重要,特别是我们在接触一个新知识的时候:一开始有许多不会的东西,然后随着练习和深入,发现总会有一个点,你绕都绕不开--如果不掌握它,你没法更好的进行下一步!
你每次接触这个领域都会遇到它,而你对他总是浅尝辄止,因此没办法深入的把握!这个时候,你必须腾出时间去系统学习、可以联系,这个绕不开的点就是你成功掌握一门手艺敲门砖,也是关键
!
2 第一次有这个感受是学习ovs
在刚开始接触数据中心网络场景的时候,长期和ovs打交道,由于实体环境限制,需要通过linux搭建一些模拟环境!我发现总是绕不开linux网络命令行,包括最简单的配置ip、配置路由、配置端口模式、配置vlan、配置网络命名空间!一开始都是零碎的学习了一些知识点,说起来真的不算会用它!终于在经过了三个月的煎熬后,我准备正面以下这个问题–系统学习网络命令行!
开始学习后,我发现自己好像真的学晚了,原来网络如此简单,原来ovs、dc控制器这些东西和linux网络命令行连接如此紧密,实际上它并不难!但是学习了这个后,你更清楚开元软件ovs在做一个什么工作,openstack neutron在做一个什么工作,opendaylight又在做一个什么工作!这些个命令行虽然只是一个“壳”–但是提供了我们操作内核的接口!这些个开源软件不过如此!
3 最深的感受是正则表达式
因为工作基本都是和linux打交道,在反复纠结后换上了linux操作系统–经历了最开始的阵痛–不适应,不舒服,到后来越来越喜欢linux,特别是脚本编程,有了这个东西真的可以很方便的解决以前想都不敢想的好多问题!
曾经我什么都喜欢界面搞定,现在的自己什么都希望命令行能搞定!但是最开始接触这些东西,接触到高级语法的时候我发现了自己又遇到了一个瓶颈,无论是shell里面的find、grep、sed、awk,还是python处理文本,事实上都离不开正则表达式,有了它代码成倍的简化,工作效率也答复提高;没有它只是觉得很困难想筛选点东西识别写文字,于是我开始系统学习正则表达式,再回头系统看sed、awk,真的简单了好多,而且正则表达式,确实也是这样一个法宝,简化问题!
4 最近的刻意练习-awk
最近在系统学习awk,以前总认为它就是一个简单的shell命令行,只知道功能很强大,但是却不是很会用它。因为工作的需求,日志太多很难看,ovs流表几百条看得我眼花缭乱,我发现许多问题都需要文本处理,旁边的大神已经把这个玩意用的出神入化,于是下定决心好好研究一下它!
最开始只是准备写一个命令行总结,后来发现这玩意原来是一个有完整体系编程语言,有自己独立与shell的语法,结构,一篇文章远远描述不了它,于是决心把awk作为一个专题研究!尝试的通过awk谢了几个命令行确实大大提高了工作的效率,看流表,处理文本!遂决定留下来总结出来,一起学习!
5 最好的资料是官方文档和官方代码
这是最近帮着同事研究prometheus的一点心得,网上的资料和github上的示例代码着实很多,因此迫不及待的点开查看,也下载了许多的代码,包括主流开源代码引用的,以及别人特地写的教程。但是这些他人的总结我总是觉得不系统不全面,只是知道了怎么用最简单,但是实际上原理还有复杂的用法都不会!于是我回归根本,啃英文讲解,按着官方说明配置。扩展的写法也不在迷信别人的总结,直接看官方仓库的开源代码,看他们写的exporter,看他们写的测试用例;前面花一两天时间看别人总结的概念总是有种迷糊的感觉,到最后自己参考官方的源码很快完成下需求的功能!我觉得这就是官方的资料代码的优势–因为任何人不可能比设计这个产品的人更清楚产品,给谁用?怎么用?怎么扩展?如何优化?原理是什么?
如果你想了解技术概念用途,请看官方文档,并结合别人的理解;
如果是你是想正确使用一个开源项目,请看官方文档,看官方仓库的代码及用例说明!在找不到别人精心总结的资料前,这些就是最好的说明和用例!
官方源码的测试用例可能比别人总结的文档更然你明白一段代码!
说来自己对于awk的学习现在还是缺少了一些对于官方文档的系统理解,希望日后能一点点补全!