我把技术之路大致分为四个阶段,分别是初窥门径、略有小成、返璞归真、修成正果,具体的表现如下:
初窥门径:
我们都是从这一步走过来的,从打字都磕磕巴巴的懵懂岁月走过来的,这个阶段的技术人应该做到这几点:
1, 良好的信息搜集、理解能力;
这个阶段我们什么都不懂,什么都不会,我们知识的来源都来自老师的讲解,都来自网上成千上万的教程。
我们要搭建一个DHCP服务器,我们必须先搜集信息,知道什么是DHCP服务器,然后搜到一篇比较靠谱的教程就照着去做,这就是信息搜集的过程。
我们开始搭建这个DNS服务器,老师的教程中明明提到了要用redhat 企业版,我们却在一个FreeBSD尝试安装bind*.rpm,这就是我们的理解能力出了问题。
以上还是比较简单的情况,实际上网上搜到的教程是良莠不齐的,好多教程你无法照做出来是因为作者并未说明足够完成试验的信息,甚至有可能打字都打错了。排除迷雾的干扰,乃至果断放弃一段垃圾信息,也是一种很重要的能力
2, 细至微末的执行能力;
比如说,教程上让你执行“echo $LANG”,你却执行了“echo $lang”,大小写不同的的两个英文字母代表完全不相干的两个意思。类似的事情还有很多,多一个空格,少一个分号导致试验无法完成的情况很多。Linux是用文件来定义、控制一切资源和行为的,我们必须明白,失之毫厘的输入错误,很可能会导致差之千里的执行结果。在不了解为什么教程上让你输入“$LANG”的情况下,不要自作主张的把“LANG”写成“lang”。
3, 熟能生巧,尝试缩短试验的时间;
我们的时间都是有限的,一些繁琐的、我们已经明白原理的实验是可以尽量缩短时间或者不做的。
比如说,我们要对apache进行调试,那我们可以在编译完成apache以后就做一个系统快照;每天就这么几个小时的时间能集中精力学习,我们不要把时间浪费在搭建实验环境上。
第二就是如果试验过程中有一堆繁琐、需要重复执行、但不怎么需要人工干预的操作,那我们可以将其写成一串组合的命令,或者一个脚本。例如下文:
echo " apache process `ps -ef|grep "^$USER\ "|grep httpd |grep -v grep|wc -l`" ;echo " java process `ps -ef|grep "^$USER\ "|grep java |grep -v grep|wc -l`"
4, 简单的替换试验参数、多种试验简单组合;
有句俗话叫“照葫芦画瓢”,当你能完成教程上的基本任务以后就可以“照着葫芦画类似葫芦的东西了”。
老师让你实现这个功能——“搭建apahce服务器,监听端口为80,设置虚拟主机为a.com。”,你可以逐步完成这种实验:
“搭建apahce服务器,监听端口为80,设置虚拟主机为a.com。”
“搭建apahce服务器,监听端口为90,设置虚拟主机为a.com。”
“搭建apahce服务器,监听端口为90,设置虚拟主机为b.com。”
“搭建apahce服务器,监听端口为90,设置虚拟主机为b.com,自定义输出log的格式。”
“搭建nginx服务器,监听端口为90,设置虚拟主机为b.com,自定义输出log的格式。”
在你自己一次次摸索中,自己必然能得到很多照本宣科无法得到的经验。
但是!可能这样碰出来的经验是错的,你甚至无法确定你这样碰撞是否能给别的环境套着用。所以我建议你摸索出经验以后就和别人分享一下。
除此之外,还有另外一类试验方法可以极大的提高你的能力。比如说你今天学了mysql,明天学了apache,那你学习PHP的时候就可以尝试搭建lamp环境安装个PHP论坛。这种联合试验,不仅让你复习了每个实验环节,熟悉了各个环节之间的关系,也为你能力水平的进阶打下了基础。
5, 能明白这个试验是用来解决什么技术问题的。
不要觉得这个要求很低,事实上针对不同的需求有千千万万种实现方案,但其中80%是只能是学习测试、自娱自乐用的。生产环境中可能连使用哪个版本的gcc都可能要反复斟酌;比如说现在千篇一律都是吹捧nginx的文章,但为什么还有很多人坚持用apache1.3?
现在你学的知识是一把钢刀,只有你充分试验和了解了之后,你才有能力抓住这把钢刀的刀柄而非刀刃。
本文出处:http://caoyameng.blog.51cto.com/4975863/849570
转载于:https://blog.51cto.com/xlogin/866366