阶段性反思

2022年5月21日 316点热度 0人点赞 0条评论

很久没有进行阶段性反思了,原因是我一直在想着赶进度,赶学习进度。本着不想“用战术上的勤快,掩盖战略上的懒惰”的原则,并且这样“赶进度”的效率实在太低,所以我决定重新拾起阶段性反思习惯,好好做下反思和总结。


这一周工作和学习上时间都很紧张,还有工作和学习平衡的感悟和踩的坑,首先谈谈工作吧。


这一周工作特别的紧张,其实交代下来的任务也不是很困难,也就是实现VPN异地登录告警,以及自动登录认证kibana并截图的两个小功能。


但是我却花了很长时间,为什么?

是代码实现困难么?并不是,使用chromedp和无头浏览器,我在本地开发和调试只花了1天多一点就全部搞定了。但是在生产环境运行时,出现了很多问题,这里一一列举:


1、我使用chromeheaderless的docker容器运行无头浏览器,让认证和截图的功能单独运行在另一个docker节点中,这样利用远程调用的方式来调用chrome无头浏览器的接口,从而实现认证和截图,方便分布式调用。但是我在调试的过程当中,发现使用kibana的URL去访问一直没有结果,而访问baidu、bing等其他网页却可以正常截图。


这里我对chromeheadless、自己写得screenshot服务进行日志tail时发现,使用kibana URL去访问时,chromeheadless容器返回out of memery 的错误,google后得知,docker默认只给linux的/dev/shm目录分配64m空间,所以可以在docker run时加--shm-size=1g来指定shm容量大小,来避免这个错误。



2、在调试的过程当中,使用azkaban调用整个服务工作流,但是经常会出现所有运行的job都处于preparing的状态,还有一些job一直running却取消不了的情况。

然后进行一一排查,发现运行azkaban-db的docker镜像把volumes绑定在了本地,azkaban-db删除容器重启之后,也仍然会从本地读数据,保留了之前的executor和job数据,而之前的job使用重启之前的executor导致数据紊乱,任务进行不下去,也无法取消,而job都处于preparing是因为azkaban-web对内存进行检查,若是小于6G内存,就不继续进行执行,后来重新制作了镜像,把内存检测去掉,azkaban运行恢复了正常。

3、azkaban运行正常之后,但是服务经常会出现消息紊乱的情况,比如说A跟B在8点发消息,变成了C和D在1点发消息,百思不得其解,后来排查之后,发现是azkaban重启之后,redis也经过重启,但是redis在内存中的数据仍旧在保留,而任务队列采用redis作为消息队列,使得数据紊乱,就这样,又是一个坑。

4、认证kibana和截图功能,在chromedpheaderless容器首次运行时,可以正常认证并截图,但是后续就会一直等待直到超时,这是我第4个需要解决掉的坑。

由于截图任务因为这些种种坑,没有实质性推进,所以感到心累、心急,烦躁,认为这些坑实在是太阻碍我的进度,其实我本身在写代码方面,调试方面,上线服务方面都没有问题,代码层面和实现层面我有绝对的自信。但是由于这些环境问题、第三方系统问题,导致我的进度很难推下去,却我感受到了实实在在的怒气,但也陷入到了思考。

一个厉害的coder仅仅是能够快速完成并且交出高质量的代码么?

不是,我认为一个优秀的安全开发者,不仅仅要能够很好地实现功能,还要有能够解决在复杂环境中出现的种种意想不到问题的能力,不仅要能够交付出高质量代码、好用的功能,而且还要保障其能够长久稳定运行。

实现功能写代码仅仅是解决代码层面的问题,是代码能力,第一层能力;而保障服务正确有效、稳定的运行,则是解决实际问题,解决意外情况的能力,这是第二层能力。而由于经验沉淀能够提前想到这些问题,设计一套系统或者方案避免这些问题,则是第三层能力。

而我需要锻炼的是第二层能力,我在踩坑的过程当中,也学到了解决坑的方法和经验,所以这些对于我来说,并不是做了无效功,走了无效的弯路。

优秀的安全工程师,实现功能,代码能力,第一层能力是最基础的,就像考研一样,考研仅仅是考察知识点方面吗?

绝对不是,如何平衡生活、工作、学习;如何利用和安排工作和学习时间?怎么规划学习?遇到实在没时间学习的时候怎么调节心态?怎么把自己从自我怀疑中挣脱出来等等等,不要觉得考研就仅仅是学习知识点就行了。

解决日常工作、学习、生活当中的所有事情,都是考研的要求,只要有一个点没处理好,心态上、时间上、精力上任何一点出了问题,那将会影响到学习效率、心态,对工作也是。

千万不要认为考研仅仅是学习,工作仅仅是实现需求功能,挖挖漏洞,其他看似与之无关的坑,其实对你有更深层次的能力要求,都要认真识别和踏实做好,千万不能有“学生思维”。

接下来谈谈学习和工作的平衡问题。

就像上面所说的,我在赶任务进度的时候,一心扎入工作,根本无心学习,导致我前两天工作到很久,临睡前还对问题念念不忘,一天没有一个结束感,陷入到低效陷阱。

每天在固定的时间做固定的事情是最高效的,到了下班时间,就是应该学习计算机基础理论;在上班时间也要注意调节休息和放松神经,松弛有度。我尝试过长时间学习一门科目,但是发现一天投入到6小时有效时间不过2小时,和我一天学习这个科目2小时一样,而且还不会因为长久学习一门科目而导致对其厌恶的情况。

这是我走过的坑,得出的经验,每天规定时间点就雷打不动做固定的事,如果不能做到这样,那就是影响整体效率。

还有千万要离手机和电脑游戏远一些,还有电视剧,这个时间点避免心思被这些内容牵动。

下周需要做的改进:

1、继续遵循固定时间点做固定事情原则

2、记录每天的工作点和坑,想快速脱离坑和时间泥潭,记录和反思必不可少

3、提高计算机基础理论的学习时间占比。

11240阶段性反思

root

这个人很懒,什么都没留下

文章评论