本来打算元旦来做一下本人的年度总结的，但是元旦那天只有一天假，并且那天带孩子出去玩了，总结就耽搁了。这篇总结是自己断断续续靠晚上下班回来，老婆孩子睡着之后以及上班摸鱼时间写出来的2024年回顾本年度总结我继续从生活、学习以及工作上来进行回顾。首先是生活上，今天孩子开始在老家以及在我身边两边跑了。想想挺心酸的，这么小的孩子都开始做北漂。有孩子在身边的时候虽说学习以及更新博客的时间少了，但是陪孩子玩耍的时光却是很快乐的。看着孩子在地上跑跑跳跳，跟在她屁股后面追逐打闹，听着她那欢快的笑声，时间就过得特别快。这一年带孩子下来除了快乐，就是有点累。孩子的体力和精力似乎比我们这些久坐的程序员要强的多，最明显的一点就是如果出去玩，中午在外面的时候，我会困，但是孩子还特别有精力，到处跑，需要家长在后面跟着。商场里面会好的多，大不了摔倒了再爬起来，有时候在马路边上就得特别注意，附近是不是有车，即使在过马路的时候也要特别小心，有没有车闯红灯或者速度比较快的。既要关注孩子的位置，又要关注路边的车辆，有时候还要考虑根据天气添减衣服，或者注意时间要换尿布，喂水。虽然累但是孩子在身边的时候感觉整个人都开朗了不少，每次送回老家之后的几天总是要emo几天才能缓过劲来。闲暇的时间总喜欢隔着监控的屏幕看看她。有时候她给我打电话，电话里面说想爸爸妈妈了。心理挺难受的，都是自己没什么本事，想回老家，老家没有适合自己的岗位，留在北京，又没有户口，又没挣到买房的钱。现在还好还能常来，等到时候要上学了，要么在北京这边上私立，到时候老婆可能要离职看娃，又或者带回老家，那样就长期见不到人了，更难受了。工作上，目前已经慢慢爬到项目组的核心开发位置，这个应该不算是岗位，仅仅是负责的模块越来越核心，越来越重要了，照目前的发展看来，未来3到5年应该不愁饭碗。在我这年龄应该是程序员生涯的黄金年龄，既有能力、又有精力、还有经验，但是目前来说薪水只够大厂的白菜价，甚至白菜价都比我现在待遇要好。有时候也想过说不定可以靠着跳槽拿到更高的薪水，但是一来自己的学历不行，二来到现在几乎没有做过互联网相关的开发，做的都是常规的软件行业，缺乏相关经验。第三就是我自己是一个偏稳的性格，不喜欢冒险。而且这份工作虽然薪水不算太高，但是工作环境我认为比较好，而且工作强度不高，965，我可以兼顾工作和家庭。在大厂虽然薪水比较高，但是我估计扛不住那种高压力和快节奏的生活，所以就在这按部就班的干着，拿着一份不高不低的薪水先苟住在说。学习方面，我的博客今年又断更了，本来想写PDF相关的内容但是后来断了一断时间之后实在就提不起兴趣来。后来之前关注的 21天学会emacs系列 也更新完了。我就再想要不乘着这个时机再好好学习一下emacs。我按照视频教程一点点的配置自己的emacs，总感觉有那么点力不从心，按着视频的指示我能跟着一点点的配置，但是离开视频，比如我想加一些视频没有的功能，就感觉无从下手。考虑良久之后我觉得应该需要系统性的学习一下emacs知识和elisp，甚至要读一下emacs的官方文档。后来我回忆起自己当初更新vim配置相关文章的感觉，虽然我在之前已经有一套复制粘贴的配置，但是里面的代码有点乱，而且有些代码我也忘了是干嘛的，既然我之前已经写过使用neovim来演示的教程，那么何不使用neovim来进行配置呢？带着这个目的我开启了第二篇关于vim的教程。老实说这一系列教程算是一次大胆的尝试，过去我总是觉得应该在自己对某一事物有足够的了解的时候才能写相关内容，要保证自己产出的内容的准确和真实。但是这次的尝试我打破了这一原则，老实说在写配置相关教程的时候我对neovim的相关接口并不太了解，仗着有点vimscript的基础就开始了。后来甚至出现了部分插件需要更新的neovim，或者某些插件已经过时了，但是我并不知道的情况。这些相信各位一路跟着读过来的读者有这个印象，教程换过neovim版本，也换过插件。这些都是我后来发现并更改的。不知道各位读者读起来会不会觉得生气，或者觉得有点误人子弟。但是我一路更新下来的同时自己也学到不少东西，例如那些从来没有了解过的 neovim 的lua接口。那些完全是自己看着管饭的文档写出来的。有了这么一个经验(不知道读者看来算不算成功，但是我觉得对我来说还算比较成功)，我一合计，不如照搬以前的模式吧，写出一系列关于emacs的文章，在写作中学习。但是这次我就不敢管那些文章叫教程了，我管它们叫折腾日记，反正是折腾，愿意跟着一起折腾的读者就跟着一起来，后面如果发现之前出错了，在后面的文章中更新就好了。这样心理压力会少不少。这样年末的这一系列就诞生了。flag 回顾去年在总结里面我立下了一系列的TODO list，现在回过头来看，有些已经完成了，有些还处于未完成的状态。生活带老婆孩子出去旅游：这个今年完成了，而且去了两次，一次是国庆去香港，一次是跟随公司出国游春天带孩子去公园踏青：踏青去了无数次了，但是野生动物园是老婆带着去的，我那个时候上班去了健康关于健康的目标有点惭愧，一个都没实现，脂肪肝好在还是轻度的，但是腰围又大了一圈，说是要减肥但是仍然管不住嘴也迈不开腿。工作上去年说要记录一下工作的日志，作笔记。但是执行起来效果并不好，笔记写了一堆，但是无法跟代码结合起来，有时候明明知道代码改动了，但是不知道代码为什么改了。有时候明明知道这部分业务代码处理了，但是忘了在哪一块处理过了。二者没办法有效的结合起来，所以实际上跟记不记笔记没什么关系，可能要考虑一下如何使二者结合起来。个人学习方面之前主要的flag在博客和读书上面，读书这个算是勉强完成了目标(算上两本漫画书、刚好够)。虽然通勤时间长，但是还是还是抵御不了手机的诱惑，期间kindle还坏了，这样手机彻底放不下了。微信读书虽然也能看书，但是经常性的刚看的起劲，后面发现要会员，没办法只能去刷短视频了。博客方面 PDF相关的内容暂时要缓缓了，不管数量和质量都没达到理想中的状态。理财方面记账这个事后来总是忘了，总是差几笔，后来摆烂了，干脆放弃了。但是做到了每个月留出一笔钱作为定期。而且我完全放弃A股转投美股指数基金了，这一年收益还不错，虽然投入的不多，但是每周的定投，今年收益大概在8%左右。个人娱乐方面当初想着玩玩王国之泪的，但是后面越玩越感觉不如旷野之息，感觉没啥意思了。新鲜感过了，就放下了。2025年年度计划以前的年度计划总是太笼统，说一些自己都不怎么信的鬼话，在做2024年的计划时，我改变了策略，每方面列一些目标来完成。至于那些骗人的鬼话，我想我还是会写一些，不过不在年度计划里了。我想后面再考虑写一些5年计划，在那个里面写。今年的目标如下：生活还是出去旅游一次在孩子上学之前带着孩子多出去玩玩，也不说具体地点了，每个周末带着出去转转健康今年争取每周运动至少1小时。每天下班回来如果有时间和精力也运动一下今年改变晚餐结构，晚餐少吃，主要靠玉米。配合运动将体重和腰围减下来工作上为了将更改和代码结合起来，我决定改变策略，使用gitlab来记笔记。gitlab上每次merge request 提交的时候可以写一些备注，支持markdown语法。基于这点，我想采用这样的计划每次提交merge request 保证只包含一个功能或者一个bug进行更新每次提交 merge request 都写上对应的更新理由、更新内容、以及更新对应的测试用例代码中写上简短的注释，并配上 merge request 编号这样根据代码能找到提交记录以及更新的相关说明，根据merge request 的更新记录也能知道代码做了哪些变更个人学习方面首先还是更新博客，今年主要更新emacs系列，估计篇幅不会少，可能要花一年的时间来更新读书，今年我给自己找了些消费主义、经济、投资、和新的小说。每天抽出一段时间来摸摸鱼，看看一些论坛，github。看看老外那边现在流行什么。或者有什么提升效率的工具今年更新的平台主要有：CSDN、博客园、知乎、个人网站、头条、微信公众号。可能还会有我不知道什么时候开通了同步功能的平台个人娱乐方面Switch目前已经进入晚期了，之前在淘宝上看到又卖那种烧录卡的，不知道靠不靠谱，我想搞一个来玩玩。又想起了小时候买小霸王那种3合一、10合一游戏卡的日子，好了，今年的总结到此为止了。感谢各位读者能在这里看我碎碎念。
时间如白驹过隙，转眼已经2024年了，本来打算2024年元旦那天写写年度回顾的，但是因为一些琐事耽误了，平时上班路程远回来也就懒得动了，一直就拖到今天才开始着手这个每年的例行公事。2023年的回顾回顾整个2023年，从我自己来说并没有什么特别大的事情发生。年初我把自己的小孩接到身边来，由家里的老人过来帮忙带孩子，我则是和媳妇上班。每天下班回来都逗小孩，确实挺快乐的。随着孩子慢慢长大，慢慢会走路，会叫爸爸妈妈。现在每天下班开门都有一个小朋友晃晃悠悠的朝你身边走过来伸手让你抱抱，并且笑着喊你爸爸。看到这一幕上班一整天的疲惫似乎一扫而空。瞬间又充满了力量，随时为了这个小宝宝去冲锋陷阵。有了一个小孩，家里欢乐的时光多了不少。这个可能是我这一整年每天都能感到的幸福时光。对于工作上的事情，22年年末刚入职，很多事情并不那么熟悉，去年写总结的时候没怎么总结在新公司的一些工作。现在我已经在公司工作一年多了，随着公司给予的培训和同事领导平时的照顾，我已经慢慢的从刚入公司接受一些边角料的活到现在已经能独立负责项目中一整个大的模块，在项目组中我自认为已经成为整个团队非常重要的一个组成部分。回顾这一整年在新公司的工作，工作相对比较清闲，没有互联网公司那么卷，每天按时上下班，各个任务给的时间相对也比较充足，新的项目仍在开发中，目前项目已经持续了一年多了，这在以前的公司是无法想象的。通过这段时间的工作经历我突然意识到，也许只有在一个不那么卷的公司自己才能有足够多的成长。想象以前做项目都是用开源项目直接套，似乎并不关注它怎么实现，整个团队都追求快速出成果。遇到段时间内无法攻克的难题，加班加点，改方案，改架构几乎是家常便饭。根本没有时间考虑使用合适的架构，合适的语言，甚至加上单元测试，编写完善的文档都是奢望。似乎每个难点在领导眼里解决时间都不超过2小时，不然就是能力问题。有时候我也怀疑自己的能力，难道我真的没有独立解决问题的能力？我没有独立带队完成可商用项目的能力？我的眼光不够长远，没有预先想到客户的使用场景和使用需求？而在新的公司中，这些问题完全不存在。首先一个是，项目开始前都会反复论证，并且给予充分的时间。而且遇到问题，给出合理的理由项目时间可以适当往后延长。我们经常开发到一半会过来重新考虑之前的架构是否合理，并且给予时间进行重构，或者进行文档的补充，又或者在某个程度团队成员都会花时间讲解自己这部分的架构以便让整个团队对整个项目都有完整的概念。甚至有想法的话可以在跟对应的人员充分沟通后一起重构之前不属于你的代码。所以在这一年中我感觉自己完全融入整个团队，我不仅能改自己的bug，甚至当别人无法抽身时我也能试着挑战别人的bug。我想这才是软件开发应该有的团队氛围和管理方式。总之目前来说我还是比较喜欢当前的工作环境和氛围的。虽说工资无法与互联网大厂相比，但是我待在这里还是蛮舒服的。在学习方面，我的博客已经断更很久了。主要是因为周末都是在家陪孩子玩，没怎么抽出时间来看书或者学习。有时候看着身边的小伙伴都在趁着周末要么接项目搞钱，要么学习新的知识。我心里也有点慌，那些人学历比我好，工资比我高，能力比我强，周末也比我努力。我在现在的公司虽说待着比较舒服，但是毕竟手里没有多少钱，当孩子大了，我也超过35岁了不知道能不能继续给她提供一个稳定的生活环境。毕竟北京这边未来会面临很多问题。但是我作为打工人每天只用工作8小时，一周也就上5天班，带孩子却是需要7*24小时，周末在家时我想稍微给家里的老人减轻点负担。现在也是充满矛盾。还有一个就是读书方面，虽然现在在地铁通勤时间不少，但是大部分时间都拿去玩手机了，看书的时间并没有多少，满打满算也就8本书左右。现在还在读一个长篇小说大概是6本，现在读到第3本，所以之前读完的篇章并没有往读书记录里面加。果然手机是罪恶之源。心里虽然有些愧疚但是手机真的是一拿起来就放不下去。2024年计划在制定计划这个方面，我想制定一些靠谱的或者说对自己有吸引力的目标，以便自己能够完成。我参考了一些如何制定计划的书和文章，现在制定出下面几个计划，我想暂时分成这么几类吧。生活今年带着老婆孩子出去旅游一次，暂时就定在：上海、长沙、三亚、青岛这么几个城市，到时候再一起商量一下春天带孩子去公园踏青，去一次大兴的野生动物圆健康给父母买一个体检套餐，并陪着他们去体检一次去年自己的体检结果已经出现轻度脂肪肝和稍微的超重，所以今年的一个目标就是控制饮食加稍微的锻炼，使体重回归到正确的水平参加公司组织的体检并努力做到今年的体检结果都正常工作上尝试着引入新的工作方式，以及多调试一下项目代码，多做做笔记抽时间更新一下项目文档。特别是自己维护的那部分代码个人学习方面仍然坚持更新博客，我想今年以系列为主，就像之前更新vim系列一样，公司毕竟是做Office和PDF的，那就以这两个部分为主读书方面，今年给自己定的目标是读完12本书，平均每个月一本理财方面今年开始记录家庭支出和收入情况每个月流出一笔钱用作定投纳指和存银行定期个人娱乐方面《王国之泪》 玩100个小时，尽量不看攻略，看看今年能不能通关
最近很长一段时间没有更新博客，更新关于vim相关的操作，主要是最近在忙于换工作的事情。其实本来我也没打算换工作的，主要是最近公司的一些骚操作让我觉得心里很不爽，所以一怒之下提出离职。背景先来说说这个事情的背景吧，我之前在一家相对来算比较大的公司上班吧，虽然比不上互联网大厂，但是在安全行业来说也还算比较有名，公司规模也还可以。随着自己的努力薪资在最近几年也在上升有时候上升幅度不算太大，但总的来说还是有上升，而且随着自己的经验和工作能力的成长自己也慢慢开始管理一些项目慢慢的手下开始有人了。另外公司业务这几年也比较稳定，工作环境和同事之间的氛围我也比较喜欢，最后就是整体管理比较松散，上班时间并没有卡的死，允许迟到，而且请假方便，随时请假随时走不扣工资。虽然工资在业内不算很高，但是也够生活，我主要喜欢这个有趣又有挑战性4工作内容和宽松的工作环境，当时想着如果不考虑回家乡的，我可以在这待到退休。但是事情一步步朝着我预想不到的地方发展。最重要事是我在最近几年找到对象并且已经组建家庭了，比我预期的35岁之前保持单身要早了几年。在组建家庭之后就不能光考虑自己的通勤问题了，所以搬到了一个通勤时间比较长的地方。第二件事就是最近的疫情了，公司的业务不像之前那么好做了，可能也有一定亏损，但是实际情况不知道，总之上头给我传达的就是公司最近严重亏损。接着公司一系列制度出来弄的我很不开心。公司以让我回归家庭，减轻我的工作负担为由，撤销了我的管理岗位。本来我觉得这个管理岗就是属于加活不加钱的位置，只要薪资不变，其他一切好说。管理岗空降一堆不知道哪来的人，就我自己来看，能力是没有的，但是搞派系斗争个顶个的强，很多时候对人不对事，心里感觉总有一股气公司出了一系列制度，迟到扣钱、请假扣钱、还有各种扣钱的理由，总之原来的一切行为都有扣钱的可能公司开始搞绩效考核，开始在原来的基础上扣工资，而我多次因为准时下班导致被扣钱之前喜欢这个公司的一切都没有了，宽松的环境，和谐的同事关系这些都没有了，事没少干钱还比原来少了，哪能受这个气。想着我现在正是程序员职业生涯的黄金期，能力有，3到5年的经验也有，而且年龄正好合适，去哪不比在这强，而且这里的钱少还受气。因此我在修完了所有假之后提出了离职，而且还是裸辞。但是事不随人愿，在这期间一直在投简历进行面试，但是很多公司要么也不好过在裁员，要么是疫情封楼没法面试，或者是我的经历与岗位不符。在那段时间也有焦虑，最近才刚有小孩这个时候要是事业了可不好办，而且我也不想断了社保，好在最重还是找到了满意的工作，在最后期限完成了入职。最后我感觉心里一下轻松不少。感想通过这件事，我感悟很深，现在总结起来无非就是这么几个：不管遇到什么事，千万不要裸辞，特别是有家有室的人凡事都没有绝对，早些年感觉还不错的公司可能随着大环境的变化变得越来越差时刻留意招聘市场，按照招聘市场上的要求来提高自己的能力；一定不要闭门造车，沉迷于自己喜欢的技术内容之中。程序员这个岗位还是很辛苦的，既要研究市场上流行的技术，也要研究自己感兴趣的技术。这个世界上唯一不变的就是世界充满变化，就像我之前准备在那个公司待一辈子，或者是准备35岁之后再考虑谈恋爱结婚的事。但是什么时候能遇上合适的人不是由你能决定的，而且整体的大环境也是决定不了的，作为普通人只能适应环境而无法改变它。那么就需要随时做好准备，在我这里就是放弃幻想，随时准备跑路。如何综合的评价一份工作是否满意或者说如何评价是否到了该换工作的时候了呢？我的想法是给公司做绩效考核，既然资本家能够给打工人做考核来决定绩效部分的发放，那我们作为普通的打工人也可以给公司做绩效考核，不合格的公司果断抛弃，达到及格线的可以先干下去有合适的机会也可以溜，达到优秀的可以长期在这里干。我列举了一些我感兴趣的指标并给每个指标定义了一些分数，根据实际情况进行打分，下面是我自己做的表格我打算每季度进行一次考核，根据情况决定自己的去留，当然这些标准和分数指标也不是一成不变的，或者在未来我会更看重稳定性从而加大稳定方面的权重，又或者我需要钱会加大薪资方面的权重而放弃其他的隐形福利。刚入行的朋友可能更加看重成长和公司环境等等。后面会不断根据自己的实际需求进行调整。希望各位小伙伴以我为戒，要有忧患意识。也祝各位小伙伴工作顺利，早日升职加薪。
最近我的老板在给我画饼的过程中，说了一句令我很有感触的话: "国家都有5年计划，你们有没有自己的5年计划呢"。这句话点醒了我，对呀，国家每5年都有一个计划确定后续发展的大致路线，企业经营也有经营路线，而作为我们个人也应该有自己的人生规划，不应该像现在这样每天浑浑噩噩的混日子。经过几天的思考我想写出我给自己制定的计划，需要达到的目标等等生活上我希望在这5年内解决个人婚姻问题：随着年岁的增加我可能也失去了当初那种一个人闯荡江湖的豪情壮志，并且随着身边的朋友陆续找到对象，准备结婚生子。我想我现在也要开始考虑这个问题，因此我希望在5年以内解决这个问题，通过努力找到一个合适的对象结婚确定定居城市并定居下来：结婚之后自然就是希望安定下来，现在我想在北京安顿下来应该是不可能了，毕竟房价和我的收入差距太大而且北京户口也不好弄后续会影响到小孩上学，因此北京可能不是我想待的城市。目前我心仪的城市可能是武汉。基于这点我的第二个目标是跟以后自己的妻子在武汉定居下来培养自己的兴趣爱好，将其发展为特长。目前我想发展的主要是书法和写作。虽然现在两个都很烂，但是我希望自己能每天坚持练习书法，并且通过更新自己的博客来锻炼写作技巧职业规划如今毕业也已经5年了，就现在来说自己计算机相关的专业知识仍然一塌糊涂，通过我的博客可以看出来仍然是以工作时的应用为主，而底层技术我并没有向下去用心钻研。知识仍然不成体系，想要在这行好好混下去，我想努力弥补一下自己在这方面的欠缺。目前我的计划是专注与c++ 这部分，然后继续学习Linux、网络协议、操作系统、数据库、Web安全、其他的安全技术，这些我想应该至少花2～3年的时间注意改进自己的工作习惯，如今工作写代码已经是轻车熟路了，在工作上现在需要考虑的应该不是怎么写代码的问题而应该是如何提高自己的工作效率，以便节约时间用于学习或者思考如何提升公司产品。从现在开始我应该来思考自己的工作习惯以及如何培养良好的工作流程，我可能会读一些效率改进的书，然后结合自己的实际情况，形成一套自己独特的、高效的工作方式写自己的开源工具，当自己技能达到一定程度之后，我希望能好好的沉下心来，认真经营自己的开源项目，如今我的GitHub上都是一些简单的demo项目，我以前的目标是根据自己的专业知识，写一个开源的Web扫描工具，按照程序员35岁退休的规律，如今留给我的时间已经不多了，我想应该要开始开始考虑并实施这个目标了。学识上坚持读书，这部分不光是工作相关的书籍，应该是自己感兴趣的书籍，继续保持阅读习惯写书评，学习一般是需要输入、吸收、输出的，因此我想写书评也算是一种输出的方式，书评不一定要长，自己看完没啥感觉的书可以写一个简短的评价，自己觉得很有用或者很有感触的书，写一个长的读后感。健康问题坚持进行体育锻炼，科学上说人过了25岁之后体力与精力开始逐渐递减，而且各种慢性病会开始出现，为了保持旺盛的精力，体育锻炼必不可少，我希望自己能坚持进行相应的有氧运动维持体重，年龄增长的一个明显的特征就是代谢下降，而且做为程序员，久坐，缺乏运动会导致体重增长产生油腻感，甚至产生其他的健康问题。所以我希望自己能够控制热量摄入、坚持锻炼来保持体重稳定心理健康，如今社会压力大，时不时会出现各种贩卖焦虑的营销号，这些营销号会放大我们的焦虑，让我们产生技不如人、一无是处的错误认知。为了保持自信，更好的生存下去，我想投入一些时间进行自身心理建设，使自己的心理承受能力更加强大。个人财富学习理财相关的知识，通过几年的工作，我现在也有一些闲钱。都说你不理财，财不理你。经历过被基金割韭菜，我越来越感到理财知识的匮乏。为了未来更好的生活，我想学习理财相关的知识，以便解决未来的不时之需努力存钱，上面我已经定下了未来5年要结婚、定居的需求，那么现在开始就应该努力存钱，认真开始记账，取消不必要的花销，养成存钱的好习惯。我希望自己能够在未来的5年内存够40w。在这里我针对这样几个方面制定了一些计划，从我目前的状态来看，我稍微够一够应该是能够达到的，有了长期计划我也好调整自己短期内的目标，以后每年年终总结的时候也会有一些对比，出了问题也可以及时进行调整
时光荏苒，数月如梭，转眼间2020年已经过去。回顾2020年，确实有些不不容易，从年初一直持续到现在仍然不能放松警惕的新冠疫情；由疫情带来的生活上的不便，经济上的停滞不前，还有大规模的企业倒闭，资金链断裂等等问题。很庆幸我所在的公司仍然存活，我还有能力与时间在这里跟大家鬼扯一些有的没的。接下来我想按照往年的惯例开始反省过去，展望未来，给自己定一个小目标2020年回顾过去刚刚我翻看了去年这个时候写的新年规划，似乎每一个都没能实现。首先我每年都在说的要每周更新博客，甚至在年中的时候想过要更新有质量的博客，尽量减少学习笔记之类的。但是现实总是残酷的，今年似乎我除了学习笔记之外，没别的什么好写的东西。原来是想把java继续学习下去了，但是看看公司那些java代码，我完全没有兴趣，甚至浇灭了我之前燃烧起来的学习Java的热情。Java又变成我可有可无的技能了。今年疫情期间我被困武汉，而且又更换了电脑，博客之前没有导入到新的电脑上来，原本想着春节期间偷个懒，断更一周的。好家伙，这一断，直接断到年中的6月了，6月份我将之前用hexo搭建的博客环境给导入到新电脑中，然后更新了一篇类似年中总结的博客，原本打算继续更新博客，但是Java学习也停了，自己在疫情期间也沉迷游戏无法自拔，周末养成了打游戏的习惯，博客一直断更，之前腾讯云社区的小编，联系过我，劝我更新博客，我以工作忙为理由，说服了自己断更，现在想想有点后悔把，所以新年的第一步就是把博客继续更新下去，在这里我也不纠结与是否是高质量的干货了，还是按照之前的路子，学习笔记加上工作总结，供自己翻阅之用，如果有幸能帮助到大家自然也是不甚荣幸。我也不知道为什么，会产生了想要练字的冲动，随着这个冲动，我买了一整套字帖，田字格的纸以及钢笔，当初坚持到了10月份，每天练习一小时，后来没有进展。我自己也已耽误学习为由放弃了。如今已经搁置了快3个月了，现在想想有点惭愧，放弃练字省下的时间我似乎并没有拿去做什么正事，学习仍然搁置，游戏照打不误，省下了的这个时间似乎不是消耗在手机上就是消耗在ns上。工作上没了目标，也变的唯唯诺诺，做事不求更好，只求按时完成，甚至在工作上开始花大把的时间摸鱼，太多时间花在手机和逛论坛上，美其名曰学习新新技术，但是很多都是看过了，知道了这个名字，没有花时间去深究它究竟该用在哪种场合，有什么优缺点，甚至连官方demo都没有运行过。这个也是浪费了大量时间。后续当然需要浏览论坛，但是得改变策略了，碰到感兴趣的，或者觉得有用的，应该先记下来，后续花成块的时间去仔细研究它，甚至考虑在项目上使用它，达到学以致用的目的项目上就不说了，从年中开始，没有做过任何新的项目，仍然在针对老的项目做一些优化，功能上的提升，这个部分似乎没有什么很大感触或者有什么好的经验可以聊的。今年陆陆续续有很多想学的，最开始想学Django，并且写了一个博客的demo，但是使用起来效果太差，没有开源的好用，所以就放弃了。后来想学emacs，但是elisp这块几乎没有什么进步，到现在仍然无法很好的改造emac，反倒是用起来的开箱即用的vs code，这个也算是失败了把。后面在分析c++的开源代码时，发现自己一直自诩为c++的高级程序员，但是连c++11有的标准都不会用，看不明白，这也导致我想要重新学习c++11以及以后的标准，这个是目前仍然在坚持，但是进度很慢的事，在学习过程中，我发现自己开始慢慢建立面向对象的概念，对对象、容器、迭代、数据类型这些有了新的认识，我记得当时写Java相关的博客时说过，Java是面向对象的代表，能给你关于对象的完整性认识，但是现在我想不光Java是，c++其实也是。Java能带来的思想上的转变，c++当然也能，如果你没有这个感觉，只能说学习的不够深入，就好像我学了elisp，对函数式编程没有什么感觉，就是我自己elisp不过关。在读书上，我的进度似乎并没有比往年快多少，仍然是睡前读读书，促进睡眠而已，有的读过似乎就忘记了，没有什么感悟，没觉得有网上吹的那么神，这个应该是自己完全没有读进去，只是机械的读书中的文字，到底有多少化为自己的思考，或者成为自己的养料的，这个我也不清楚在学习上除了这些花的时间比较长之外，我中间也陆续的尝试学习了go、rust、lua、c#。但是这些我在很短的时间内就放弃了，也就不提了2021年的小目标整个2020就这样稀里糊涂的就过去了，想学的东西很多，但是花的时间却很少，我想在每个上面都分配时间，然后全方位开花的方针并不合适我，我还是喜欢把时间集中消耗在某一件事情上，说的再明白点，我自己脑袋性能不够，是一个单核的cpu,无法做到多线程切换，强制使用线程，只会造成性能的损失。基于上述反思，与自我认知，我决定指定如下计划：学习上，将想学的东西列清单，并给出一个小目标，比如做一个项目，不达目标就不进行下一个内容的学习。实在有问题的，写悔过书，详细分析为啥不行。不强求一定得学，但是也不能轻易放弃记录自己学习的过程形成笔记，作为博客发出，博客这块仍然坚持每周更新读书上，我准备开一个书评的文章，每读完一本，在博客上更新关于它的简短的读后感。坚持睡前读书。锻炼，NS上的我最近刚买了《有氧拳击》，既然自己不喜欢健身房那种人多的场合，就自己在加默默打拳，记录自己的体重与运动量。好好锻炼减肥工作上不急于完成工作，希望自己动手前认真思考一下，如何更优雅的实现功能。写出更容易被理解的代码与文档工作上及时总结，中间的经验、处理的问题、搜索到的资料进行整理形成博客少玩游戏，少熬夜、坚持每天早起半小时（多了估计也坚持不下来）目前能想到的就是这些，在这里给各位愿意看到最后的朋友送上迟到的新年祝福，预祝各位心想事成，早日脱单，最后再祝各位新年大吉吧（别问为什么又是这句，问就是没文化，想不出什么高级词汇，再问就是我就是喜欢玩老梗）
最近因为疫情原因一直在家，已经有快半年没有更新博客了，最近返回公司上班之后，去年做的项目已经完结，虽然已成功交付用户使用，但是在我看来这仍然是失败项目，在这里我想回顾这些经历，算是给后面的自己一个警醒吧为何说这是一个失败的项目我一直认为这是一个失败的项目，原因有如下几点：项目为能如期交付，原定计划是在2月份交付并发行1.0稳定版，但是由于种种原因推迟到了6月1号，延期了快半年项目到后期难以维护，在后期代码复杂度上升了不止一个层次，给维护与扩展带来了不小的麻烦项目质量无法达到预期效果，在发布之时仍有部分隐藏bug，没有经过细致的测试，为了按时交付，很多测试工作都省略了，目前只进行了两轮测试。功能有些无法达到预期效果，当初为了赶进度很多不重要的功能也是能省则省，有些需求并没有很好的实现项目中存在的一些问题前期需求设计不合理：早期立项的时候，我参考了许多类似的产品、与相关同事进行过探讨，但是由于经验不足，没有相关产品的开发与使用经验，导致许多需求设计不太合理，后续变更需求频繁，甚至出现过回炉重造的情况，这个主要责任在我这边，当时很多需求是我自己一拍脑门想起来觉得这样做可能符合客户需要，但是没有跟其他人进行商量，导致在后续实施时要么是在此基础上无法实施，或者成为鸡肋功能影响后续工作。后续需求变更频繁：后续需求变更频繁，很多时候老板看过项目之后觉得哪块不好会直接提出来，比如某些功能不合理，某些地方配色，页面布局不合理之类的。测试人员会在测试实际使用中告知他们想要某个功能，以便更方便的使用与测试。但是这些变更往往是在后期开发已经完成，正式进入测试流程中时提出，给后续开发与维护造成很多不必要的麻烦。这种情况的主要问题在于老板与测试人员在早期需求制定时参与过少，以及我本身对这方面不够专业。导致出现后期疯狂修改需求的情况需求记录不及时：在前期需求设计时我会详细记录需求的相关内容与演示效果，但是后续开发任务紧张，需求变更频繁，无法有充足的时间进行需求变更的记录，很多时候都是老板或者测试人员口述，然后由开发人员进行修改，没有合理的需求评审，没有详细的记录，有时候时间一长自己都给忘了当初是如何制定的。后续无法复盘架构设计问题：还是由于自己当初经验不足，当时考虑到用户可能需要二次开发，所以规定当时所有的功能都采用restful-API的形式，并且前端采用纯粹的ajax请求直接调用后台接口，但是有些功能确实不太适合做成接口，而且对于前端大家都不了解的情况下没有使用常用的前端界面框架，而纯粹采用自己编写的方式造成大量的时间浪费与遗留无法解决的bug。这些都给项目造成了不小的麻烦；没有详细设计：当初项目留给前期设计的时间并不充足，按照一般软件功能的流程来说，重要的时间应该留给前期设计，编码与测试只占极少数部分，而在这个项目进行过程中，完全颠倒过来了，不到一个月完成前期的需求与详细设计以及开发测试的分工，和接近3个月的开发与测试。导致的结果就是代码臃肿，很多公共功能没有抽象为具体的函数，重复代码过多，代码结构混乱无法进行后续维护。也就是说我们项目一开始就早就出了一个屎山。分工不合理：在前期设计与开发环境框架制定完成之后，进入到分工环节，在这个环节中出现分工不够合理的问题。主要体现在我自己不清楚员工的能力与擅长的部分，在制定计划时采用平均分配的方式没有考虑需求难度与员工自身的能力相结合。导致后续能力强的员工快速完成任务而存在空闲时间，而能力一般的往往会拖慢进度，或者对于困难需求实现的也是差强人意。或者出现能力强的员工去帮助能力一般的员工完成剩余需求，出现能者多劳但是无法多得的情况。测试与验收问题：在早期设计阶段并没有完整的测试计划，测试一直推迟到开发完成之后，在那个时候发现想要详细测试时间不够、测试出来的bug由于设计等原因难以修改、甚至出现某些地方使用不太合理又要新加需求的情况，这些都导致无限期的加班与代码修改，代码越改越乱，人心烦躁，开发与测试怨声载道。后续该如何改进培养自己的产品思维：早期需求制定的不合理，我自身有很大的原因，我由于本职工作是做开发的，很多时候在设计需求时采用的是开发者的思维方式，而没有站在用户角度，设计出来的系统在后续测试中会发现很难用，没有合理的引导，功能过于分散，常用功能操作不够简单，操作步骤过多等情况时有发生，为了用户必须得改需求。我想自己得加强这方面的素养，设计完成之后少改需求制定规范的需求管理制度：在需求制定、变更、实现、验收这些过程，在项目中没有与很好的得到解决和管理，造成很多需求后续无法查证，不合理的需求无法定位到具体的责任人，甚至谁都可以提需求。为了解决需求相关的问题，需要引入规范的需求管理制度，加入需求评审等操作，让需求更合理，更有迹可循。延长早期设计时间：在大学中学习软件工程相关课程时，我的老师告诉我，在项目开发中，编码只占很少一部分，而现在似乎反过来了，编码占据了时间的大头，而前期设计只是为了给开发人员安排工作而已。我想一个成功的项目应该是会在前期设计过程中下了很大的功夫的。可以在前期多进行相关会议，比如需求评审、针对需求进行测试用例的评审、开发框架与相关方案的评审、以及工作计划的合理安排等等。规范开发中的代码审查机制：员工的能力，与代码编写风格对项目的可维护性有巨大的影响，过去我一直觉得开发人员应该保留自己的个性，编写能体现能力的牛X的代码，但是经过几次与他人合作、带领团队开发项目之后，我改变了这个看法，作为底层的码农，为了项目的统一于可维护性，最好还是安心做一颗螺丝钉，多人合作不需要个性，一切为了项目才是正道。所以在后续如果还有项目需要我带队开发，我会统一编码格式与注释格式，像大厂那样制定编码规范，甚至细微到如何给变量、函数、类命名等等。最好每天下班前一次 code review，及时消除冗余代码、不规范的代码、不合理的功能，特别是同一个功能，多个人编写函数，函数的参数列表与实现完全不同的情况。测试与开发并行的机制：之前测试永远是等到所有开发任务完成之后进行，一旦项目完结，进入维护节点，要修改bug是相当困难，而且是牵一发而动全身的，测试应该与开发并行，在需求评审时应该做到给出需求验收标准与对应的测试用例，而且需要配合代码审查，提醒开发人员针对每一个功能函数编写单元测试。需求完成之后立即对照测试用例进行测试，保证每个需求都准确无误。更加合理的工作安排：合理安排工作，需要做到针对员工的能力和需求评审时得出的需求的难度来合理安排，合理安排包括合理的时间、合理的人员与合理的需求安排等等。这个可能没有相应的参考标准，只能根据经验来判断了。自己应该更加投入到这个项目中：由于我在公司待的时间较长，对公司业务比较熟悉，所以很多时候总有人会来问问题、商量某些事，我一贯又是一个老好人的态度，甚至有时候做到事无巨细都亲自动手。甚至公司主要产品也需要我来进行维护，而且由于项目人手不够，我也参与到项目的具体开发与测试工作之中，导致长时间都消耗在无意义的事情之上，无法专注于项目管理工作上。在后面项目需要做需求变更、更改开发计划时无法及时记录与评审；看到不合理的代码没有时间做code review、提取公共部分，重构部分代码，这些工作都由于没有时间而暂时搁置了。在后面项目越发的超出我的掌控。以上就是之前带队开发时出现的问题以及一些反思，如果后面还有机会作为项目的leader，我想尽量避免这些情况。更加专注于项目。制定相关制度，保证项目质量。
时光荏苒，岁月如梭。转眼间2019已经过去，来到了新的一年，回顾这一年很多目标没有达成，有些遗憾，成长似乎比原来少了很多。下面来仔细回顾一下过去一年的得失2019 年回顾在2019 年年初立下的flag似乎没有一个能很好的执行的，博客，读书计划，学习方面，似乎总体来说仍然在原地踏步。博客方面，最开始想的是一周4篇，希望通过输出博客的方式来总结经验，提高自己。但是后续在执行时似乎变了味道，为了产出而产出。特别是在学习总结Java相关内容的时候。关于Java的文章我感觉是自己写的最烂的，从时间上说，过去为了产出一篇博客，会先列提纲、考虑文章的结构，会考虑如何组织语言让自己写的内容更好懂，甚至会精心准备实例代码，画图等等，但是在Java部分我省略了这些过程，博客书写时间从2个小时以上下降到半个小时，虽然说数量上去了，但是质量堪忧，与我之前想的总结提高完全背道而驰。这个问题今年得改。学习方面今年并没有什么大的成就，从4月份开始学习Java，到现在仍然有许多内容没有学完，基础部分进度很快，但是在框架中我会体会一下具体的设计模式，Web编程方面我学会了Web中编程中的基础操作，cookie、session一般如何使用、jsp模板思想，反射、工厂模式。我觉的学习它最大的用处不是学会了一门语言，而是让我开始思考如何从C语言的面向过程到面向对象的转化，让我接触到之前一直懵懵懂懂的web开发方面。如果有机会我可能会单独写写从面向过程到面向对象的转化思想关于读书方面，19年似乎读书量较去年又减少了许多。具体多少我没有统计可能不到10本，很多书都只能读一个开头，然后长时间不读，前面的忘记了再看后面的就无法串联起来，结果就放弃了。最后是工作方面的回顾，在这方面我感觉现在每年都是一个循环，年前一般是去年招的员工离职，自己工作的重心放在了维护扫描器产品上，年中开启一个新项目，然后招人，我带项目，项目一般持续两个月，没完没了的加班，然后修改，交付，过年，年后似乎又重复这个循环。每年招新人都需要我花时间来讲解公司流程，公司产品，甚至教一些编程语言与开发方面的东西，每年都是这样；自己感觉已经有点厌烦了。工作方面似乎没有任何进步，今年做漏洞管理平台方面的内容，针对漏洞信息做增删改查、明年又做一个什么平台，然后再针对不同数据做增删改查，一个项目下来似乎我只会了增删改查。做出来的平台都是一两个用户，当作单机软件使用，完全对不起项目名称中的平台。现在自己的处境虽然不在外包公司，但是我自己的感觉跟在外包公司类似。永远是针对不同信息的增删改查，似乎总有写不完的业务层代码。但是如果说自己所做的工作一无是处也不是这样的。今年的项目相比去年的项目来说，我参与的更多，对新人的要求也严格了许多，之前搭的gitlab服务终于启用起来了，并且尝试了单元测试。这些对我来说都是成长。在这次带领项目中，我学到了下面几点：有框架，有模板的，一定要用框架用模板。哪怕前期不动工。技术选型选的好会节约大量的时间。这次jQuery纯手写各种特效真的是给我热了很大的麻烦，如果早期选择一个好的模板，将节省大量调试前段的时间。敲定需求时要严谨，而且一旦定下来就不容更改。很多需求不是一拍脑袋想到就定下来的，必须得经过评审，是否可行，该如何去做，这些问题都得考虑，不然就得想我一样频繁改需求，导致所有人都得加班赶进度。我相信好的设计、好的产品应该做到让所有人节省工作时间，在单位时间内的产出更高2020年展望不管过的怎么样，总得面对现实，面对新来临的2020年，现在针对新的一年的展望如下：读书：这个是必须得坚持的，但是现在我觉得不应该硬性规定该读完多少本，我想的是现在应该坚持每天读半个小时书不再熬夜：这些年睡觉时间越来越晚，普遍超过12点才放下手机。现在在这里立下一个flag，11点以后放下手机，读半个小时书然后睡觉学习一门新的编程语言：在上面的部分也说过，学习Java最大的收获是完成了一个编程思维的转化，而之前读《黑客与画家》这本书时提到一个观点：编程语言的高度能决定一个人看问题的高度，之前一直不明白，现在似乎有点理解这个意思，而作者一直推崇lisp，所以明年的目标就是学习lisp，看看函数式编程语言能带给我怎样的收获开启一个新项目，之前吐槽了公司能学到的东西少，既然这样要么离开公司，要么自己想办法通过项目学习新内容。说实话我也很久没有自己独立做项目了，这里先立下一个flag，明年开启一个新项目，具体写什么东西还没有定目前能想到的就是这些，祝各位朋友心想事成，新年大吉吧
时间也是过得很快，不知不觉又过了一年。这一年发生了很多事，但是好像又过的很平淡。回想起来自己好像做过好多事，但好像又没做过什么事，在这里我再次回顾一下去年的一些状态、然后展望一下未来，接着立一下对应的flag。去年的目标总结：我去年好像说过要好好锻炼的，这个基本放弃了，或者说从来没有开始过，但是体重好像也算是控制助理，没有想象中涨的那么快，去年120，今年130。当时给自己定下的是140后开始锻炼。这个算是不了了之了。之前好像说过要尝试着自己做饭，但是后来找到理由说服自己了：买菜10分钟、洗菜10分钟、做饭可能20分钟、饭后洗碗10分钟，吃饭10分钟，这么算下来好像做饭很亏的样子，所以这个也就不了了之了。这么算下来自己当初定下的一些小目标好像都没有实现过。而关于读书这个我统计了一下，包括现在正在看的一本，好像总共17本，未达到当时定下的20本的目标。在对照着之前写的2017的总结那篇文章上的目标好像自己完成的不多，但是我感觉这年在手机的使用时间上却是是降下来了，每天大概在1小时左右。这个降下来还主要是由于加班太多了。从6月份开始好像就很少能在10点之前到家的。工作总结今年我正式接手了公司主要项目——Web扫描器的维护。在刚接手这个时候我也是被它里面有如此多的烂代码所震惊：2万行代码的函数、大量重复的代码、大量的宏定义（包括许多无用的宏）、大量的全局变量、与界面绑死的界面、大量不知所云的局部变量。项目经历过不同的维护人员、不同的维护人员不同的代码风格全在里面，而且没有文档（不是没有详细的文档、而是压根没有文档）。就靠面对面的口述来进行交接。这是面临的主要问题，当时我想过进行重构，但是项目代码实在太多了，代码里面的很多逻辑我还没搞明白，而且只有我一个人，重构肯定是不现实的。后来我自己采取折中的措施，将我自己能看懂的部分进行重构，但是很多地方关联的太紧密，经常就是改了这块测的没有问题，结果临近发布新版本了，发现另外一个原先没有的问题，每次大改必定会带来新的bug，这样搞了几次我实在是身心俱疲，放弃了。转而向之前的维护人员那样，慢慢加功能就好了，其他的不管了。这样做之后，好像一切都正常了，再也不挨批了，偶尔还能得到办事能力强，能迅速完成老板要求的这么一个好评。既然不能重构、那么写写文档吧，把之前没有的文档都补起来，这个想法是我在6月份想起来的，但是后来经历了一系列的事，一直没有时间实践。我在自己的另一份年中总结上写过，公司很多老员工都走了，我也从小X转变为了X哥了，慢慢的手下也有几个人，开始带一些人接手新项目。在10月份我开始带着几个新人开始新的项目。开始时我想按照软件工程上的方式，从需求到分析、到设计、再到编码实现与测试、当时也强调过要手下的人学会写单元测试，这是我带队的第一个项目，自然希望将它做好，但是我发现时间是真的不允许，项目总工的时间是1个半月，我发现从我开始调研需求到形成原型图、开会讨论需求、到最后生成需求文档这一系列就用了两周，还有一个月还没开始编码。这个时候我有点慌了，将最重要的设计工作的时间压缩到一周，白天维护扫描器，晚上加班加点进行对应的设计工作。一周结束之后我发现我完成了对应的架构设计，知道系统应该分为几个模块，每个模块该实现什么功能，至于如何实现具体功能、如何进行模块间通信与管理，这些根本没有时间，只有让手下几个人仓皇上阵。最后的结果可想而知，很多早期设想由于手下的人没有时间做最后砍掉了，最后一遍遍精简，形成了一个最简单的系统。由于编码时间有限我后续没有要求进行单元测试，只进行了最后的内部统一测试，测试时问题百出，有少数bug在短时间内无法解决，最后在不影响系统功能的情况下作了相应的精简。而且项目不得不延期。总体来说，我第一次带的这个项目是失败的，虽然我早期对它的设想很明确，先需求分析、再概要设计、然后详细设计、编码的同时进行单元测试、每个功能模块完成后有对应的功能测试与代码的review、并在最终完成之后进行对应的统一测试。并最终形成对应的需求分析文档、概要设计文、详细设计文档、数据库文档、测试文档、验收报告等等。并制定了相应的编码规范，前期甚至计划每天按照规范review他们提交的代码。但是最终并没有按照这条路走。针对这个项目我总结出来大概有这么几个原因：自己的维护工作与带队工作没有规划好，经常就是忙于处理扫描器bug、而无法兼顾这个新项目，这个问题公司中有人已经警告过我，让我盯紧、但是被我以维护工作忙等原因给忽略了自己水平问题，我不知道一般专业的项目经理或者团队的架构师在做需求和设计大概需要多久，我总体进行需求分析与概要设计大概花了有3周时间，从项目的时间周期来看我感觉这个时间偏长自己管理问题，前期虽然指定了一些列的编码规范、搭建了gitlab作为项目管理的工具，但是后期我基本没看过他们提交的代码，也没有做到每天查看进度，甚至在后期编码的时候已经没有进度计划了。我发现我自己在给自己制定计划的时候很从容，而且后续也基本能够按照进度走，而为团队制定计划的时候，我总会考虑团队成员的水平，总担心他们水平不行，能不能在工作时间内做完，如果逼的太紧会不会影响他们的正常作息，一直没法给出一个合适的计划表。当然这也跟后续详细设计没好好做有关，当时设计上有4个模块，按照每周一个的进度简单的定了一个计划，但是后续并没有严格执行，没周最后我询问进度时，下面总反应有难度，然后就延期。当然也有未延期的，但是我没有时刻紧盯进度，所以具体啥时候完成了模块我也不太清楚。手下水平问题，这次项目中我感觉明显有部分人是在拖后腿的，由于是实习生，我本来没对他们报太大的希望，只希望他们能完成打杂的工作就好，写写前端页面、帮忙弄弄数据库、搭测试环境啥的。但是我发现有的连这些都完成不了，还得团队其他成员帮忙完成这些。有的实习生好像是抱着来学习的态度在做事，有问题了直接问，自己从来不搜索，不尝试自己解决问题。当时招进来的时候确实也感觉到能力不怎么样，但是看着还未毕业，想着可以来慢慢培养。通过这次我发现，招实习生也得招那些能做事的，培不培养另说，至少要能做事。总说理想很丰满，现实很骨感。项目刚刚接过来我跟领导信誓旦旦的保证完成，但是后续在实施过程中遇到许多困难。从这次项目中我学到了许多、知道程序员没有想象中那么轻松，那些管理岗位并不是只要发号施令就OK、还得要合理的进行相应的规划、合理的发号施令。而且还要盯紧下面的人，有的人只有盯紧了才能发挥全部能力，否则总会缺斤少两，总想偷懒。自己需要摆脱老好人的思维方式，多为项目考虑，而不要过分考虑团队中其他人的感受。适当基于压力不一定是坏事。当然在工作中最成功的还是自己独立写出来一个facebook爬虫，项目的细节我已经在我另外一篇博客中详细的写了出来。这个项目中使用了新的JS解析工具、并且翻译了它的中文文档。在这个项目中，被许多人叫做大神，甚至有人给我打赏，请求帮忙解决一些问题。这些都让我的虚荣心得到满足。而且也拿到了项目奖金。或许这个项目是今年最成功的项目。学习总结在学习上好像之前也立过不少flag，但是执行的都不怎么样。当时总是信誓旦旦的说要学习网络原理，要看完TCP/IP协议这本书。但是后来慢慢的就将它抛之脑后。后续脑袋里面冒出过很多想法，有很多要学的东西，但是很多都做到一半就结束了。这年的状态经常是这样的：这个技术好，我要好好学学，用它写一个XX程序出来然后是找视频或者看书前面的好像很简单，不用细看了，快速阅读吧基本语法我都会了，开始写项目吧这个东西好像没有什么好的界面库，还是用B/S架构把前端技术好像不怎么会，学学这个吧HTML 标签我都知道，直接学CSS吧CSS 这些都很简单，看看JS吧JS的语法跟C很像，不看了，用的时候再查吧网上找一个前端界面，自己从头开始写这个JS代码我看不懂，还是转回去学学JS吧最近看了一下这个前端框架，先用上吧这个框架好像要求懂HTML + CSS + JS，还是好好学一下这些吧从头折回去学那些东西最后正式开始写的时候又发现，好像用另一门技术或者语音更容易写类似的程序，先学一下新技术吧这一年似乎都是这么一个死循环，结果专业术语了解不少，但是代码明显写的少，很多书买了一堆、各种在线教育平台的课程买了一堆，后续因为看上了另外的技术而放弃了前面的内容。结果时间花出去了，钱花出去了。但是仍然一事无成。看似很努力，但是没有什么结果。最近看到一篇微博上写的大意是这样的：在学习上有真正使你进步的，还有就是让你以为你进步了的。我感觉我这一年应该属于第二类。感觉很努力应该比那些天天刷抖音、快手的强。但是仔细想想可能还不如这些人，毕竟我时间也花出去了，结果与这些人水平无异。在学习上我完成的只有之前定下的，VC的高级编程与Windows驱动编程的内容，我想我能完成这些在于这些是当时刚立下flag的时候进行的，那个时候还是很有毅力的，还有就是这些我手上的资料比较少，只能看那个。而且没有什么要完成项目的想法，仅仅只是学习防止日后有用。我发现对我自己而言很多别人很好的建议在我面前都没有什么很好的效果，比如说很多人建议的，在学习过程中以结果为驱动，以完成某个项目作为驱动，但是在实践中我发现，我自己在写项目的时候容易发现自己的不足，转而去学习另外的东西，结果导致什么都没学会，项目也没有完成。还比如很多人建议的，广泛阅读资料，在这条我会发现自己很多不会，转而又去关注不会的东西，而把原来的任务抛之脑后。针对这些问题，我想今后的解决方案是这样的：在写项目的过程中，只关注那些与具体技术相关的内容，而像界面这些东西，能直接拿来用就行，不用太关注。在学习新技术的时候，不要看某些东西简单就挑过，也不要因为某些东西看不懂就转而去研究这些看不懂的，而是在所有内容看完后在回过头来，关注那些不懂的。有时候不懂的那些是因为另外的技术不懂，这时候可以把不懂的新技术作为下一阶段的学习目标总结与flag不管怎么说2018已经过去了，在怎么追悔都无济于事，我想做总结的目的不在于一件件的数那些成绩，然后沾沾自喜，也不在于一遍遍数落自己的缺点大骂自己没用。总结的意义在于发现自己的好，来年继续坚持。发现自己的不足，来年争取改正。在这里我给自己再立一下flag：读书（20本）写博客（一周一篇）学习计算机的基础内容（算法、数据结构、编译原理、网络协议）学习新语言（GO、JavaScript、PHP）学习Web安全的基础内容（XSS、SQL注入等等）这次学聪明了点，flag不能立太多，我觉得能把这些完成就算不虚度年华了。最后祝所有朋友在新的一年越来越好、单身的早日脱单。。。。。
以下内容都是在醉酒状态下写的，各位就当看个热闹吧，千万不要当真，要真能给您一些启发那就谢天谢地了。到今年6月份，已经毕业两年了，在这两年中换过一家公司，从银行外包到安全行业，经历过加班，也经历过无所事事，心中有些感慨和想法与大家分享时间真的是不等人，之前刚入行时我也是由一位老大哥带着做项目，那个时候我差不多是项目组年龄最小的，而如今在现在的公司中，我成了唯二的老员工，我从去年入职现在的公司到现在公司经历了一轮大的换血，老员工差不多都走了，而现在我也从当初的被别人带转换了角色变成了带新人，新员工都是刚毕业的大学生，有志向，有抱负，有的也有能力，跟他们一比，真的有种长江后浪推前浪的感觉。心中不免有些惆怅，原来一年一年的混日子，时间过的这么快。现在我真正理解了作为程序员必须的具备终身学习的能力。以及那种随时都有可能被新人给淘汰掉的危机感第二个就是不能对技术太过于执着，现在很多程序员包括我在内总是唯技术，好像一些产品里面用了某种牛逼的技术那它就值钱，就牛逼。其实真的不是这样的，技术是为需求服务的，再好的技术也是为了解决现实中的问题，只要能解决现实问题就算你用最low的算法，它也是一个好的产品。从这个角度来说，一个程序员的薪资水平跟他自身的技术水平并不是正相关的关系，薪资水平高低在于他能够利用手中的技术为公司带来多大效益或者说它能为多少人产生多大的价值。技术就是这样没有最好的，也没有最坏的，没有什么所谓的最前言，也没有什么淘汰之说，只有最合适它的平台，就拿汇编来说，很多地方的确用不上汇编了，但是在某些场合，比如说做安全进行HOOK的时候可能会需要，或者在一些对性能有着变态需求的地方，有的实在不能再优化了，只有将C代码改为对应的汇编代码。没有最好的技术只有最合适的技术既然说到终身学习，那么下面就来说说程序员学习的事。学习首先得找一个方向，也就是经常说的职业规划，一般来说刚入行的程序员可能并不知道自己该从事何种方向，就知道一心写代码，公司让干啥就干啥，公司有啥业务就学啥业务。确实一般刚入行的新人可能对整个行业没有一个整体的把握。我觉得入行后可以花1到2年的时间来关注业界相关新闻，不断跳槽以便接触更多方向，然后从中选择一个适合自己的或者自己真正喜欢的方向，随后自己的精力需要完全投入到这个方向上来，学习的路线也应该围绕着这个方向来进行。比如说我现在从事Web安全的开发，刚开始也是什么都不懂，XSS、SQL注入等等完全不了解，这些涉及到的是Web的相关知识，因此针对这点我自己给的学习路线是，首先学习HTML、CSS这些前端的相关知识，然后学习Web开发、了解常见的一些框架和开发语言，比如PHP、Java等等，公司主要做的是一款扫描器，而扫描器中很重要的一个部分是爬虫，现在爬虫一般流行用Python，因此我又顺便学习了Python的相关内容，而扫描器用来检测漏洞的一些POC都是用Python写的，这样也必须的学习Python。而Web又是基于HTTP协议的因此必须得学习HTTP协议，顺便可以学习TCP/IP协议的整个架构。因此这样很容易就能理出一条学习的线路来。所以说在后续学习的时候需要找出自己真正喜欢的方向（不一定是喜欢，但是必须是自己不讨厌的），了解一下这个方向的主要内容，从中找出自己的不足来进行针对性的学习。然后可以尝试着利用学到的知识写点小工具等等，比如我自己常常使用Python搜集一些网上的POC来集成到自己的程序中用来制作简单的漏洞探测工具。我感觉现在整个IT行业存在一个浮夸、焦躁的环境。经常就是过段时间有一个新技术出来，然后大量的关于新技术的课程，文章，以及大量的招对应的开发人员，看着薪水好像挺高，似乎这个技术就是未来，其他的技术都过时了，而我们程序员很容易被这种风气给带歪了，他们会花时间去学习新技术，然后跳槽，然后从简历上看他似乎什么都做过，前端火的时候他是一个前端程序员，后来Python全栈火了，他又成了全栈，然后大数据火了，他又做大数据去了，而现在AI火了，然后他现在是一个AI的开发人员，似乎他什么都会，但是后来发现就一个调用框架然后复制粘贴。当然我不反对学习新技术，学习新技术应该与应用相结合或者说与现实中的问题相结合，比如做扫描器经常会有误报，怎么消除误报呢？AI是不是一个好方法，能不能用机器学习来减少误报？如果可行，那么就可以考虑去学习一下。还有我们如何从海量的日志信息中找出具有攻击行为的那些日志？这个可不可以利用大数据来进行检索？利用机器学习来准确识别？我觉得这才是学习新技术的真正原因，而不是光看重新行业的薪水。还是前面说的技术是为需求服务的，学习也是一样的，为现实中具体的需求来学习。归根到底，学习应该是为了用新技术来解决现实问题。在这两年中，我越来越觉得基础知识的重要性，当初在学校时总觉得很多东西会用就行，不需要纠结它的细节，什么快速排序，二叉树等等这些都有现成的库函数，没必要去了解它们，所以没有好好学习这些内容。现在看来这种看法很有问题，学习基础就好像当时很多人嘲讽买菜不用微积分那样觉得生活中用不到它们。现在也有很多人跟我说过，学习那些算法没有用，这些都由老外在写，人家那么大的组织机构来维护，你自己写的肯定效果上没有别人的好，到时候会用就行。但是我想如果作为一个程序员如果只是把自己限制在使用别人的库，只会复制粘贴别人的代码，这样永远是一个底层的码农，而做不了真正的程序员，还是那句话让它服务于具体的应用，比如你学习了HTTP协议之后，能不能仿照它，做一个能在嵌入式设备中使用的微型的HTTP服务器而不是直接上Apache，或者我能不能利用它的设计思想来提供类似的功能。而不是说为了使用HTTP而使用，学习这些算法与基础的意义并不在于会用别人写的库，而在于根据具体的情形选择并设计编写出适当的代码。或者能更好的使用这些开源库，而不是仅仅把别人demo的东西照搬过来。在当今互联网时代，学习东西比过去方便了许多，但是互联网也有许多问题，第一个就是互联网上资源太丰富了，以至于想学一个课程但是找不到合适的，比如说我想学下C语言，你会发现网上一大片C的内容，有视频有博客还有电子/实体书，但是各种资源的质量良莠不齐，很难抉择。经常听到有建议说自学能力强的选择看视频或者看书，但是对于初学者来说很难分辨一个资源的好坏，我当时自认为自学能力很强，在大学期间找了各种视频，看了各种书，吃过很多亏走过很多弯路，才学会了点C的皮毛，经常就是一个视频看完了，感觉基础学会了，想找一些实践的东西，然后发现很多都是前面一点快速把基础过一遍，然后开始做项目，最后发现跟着视频项目做出来了，但是并没有学到什么东西，反倒是丢了视频好像什么都不会，然后就会产生一定的挫败感。我自己当时也是被虐到怀疑人生也常常在思考我是不是适合这个行业。但是好在我从来没有在我应该学习C/C++这条路上产生过怀疑。说到这里，我想说说我对培训机构的看法，现在很多人说到培训机构总是一副喊打喊杀的语气，好像培训机构毁了整个IT行业。其实培训机构很不错的，他至少能带你入门，我们常说师傅领进门，修行在个人。跟着培训机构就好像有一个前辈一直在带你，给你分享他的见识，分享他的思路，而且培训机构能让你快速融入这个圈子，毕竟你的同学老师都是从事这个行业的。从这个角度来看好的培训结构能使你受用终身。每个行业都有好有坏，不要一杆子打倒一片。但是一般包就业，并承诺薪资的一般是坑。互联网的另一个坏处就是造就了一批伸手党，他们混迹于各大论坛，QQ 群，经常就是甩出一段代码然后告诉你这个跟他想的不一样，该怎么改。最可恨的是有的还给的是截图，你想给他调都没办法，难道要别人一个一个的照着敲，拜托大家都很忙好吧。其实很多问题都是你自己单步调试一下就可以解决的，很多人就是不愿意，一句我是初学者，我不会，所以你帮我看看，一般像这种看了真的是让人火大；另外一种人就是自认为是大神的，经常有初学者提问说，我想学下XXX，请问该怎么学，这个时候总有那么几个大神会告诉人家，你学这个没用，还不如去学XXX，或者说这个不用学，有现成的代码，然后甩一个连接给段代码，这种人也是令人火大的，人家初学者想学一个东西，你没有系统的学过就不要回答了，我觉得这样完全是误人子弟。所以你看：现在互联网虽然方便，但是学习的路并似乎没有变得轻松，它只是以另一种形式增加了你学习的成本而已，过去很多东西报个班或者找个老师花点钱就给你讲明白了，但是现在互联网时代很多人觉得资源应该共享，应该免费。但是从某种程度上学习成本其实基本没变，而且是以一种无形的成本来体现出来的，通常这种成本是最难发觉的，可能对你造成的误导是最深的。以上都是本人的一些突发奇想，写这些的时候是跟以前的同学一起喝过酒的，很多地方都有点胡言乱语的意思。请各位见谅。。。。。
时间如白驹过隙，回想起过去的2017年仿佛就在昨天，元旦做了几天咸鱼，没有能够及时更新自己的年终总结，在此补上回望2017回望2017，在4月份我换了一份工作，之前的工作实在太闲了，我感觉这样不利于自己的进步，于是在3月份的时候正式提出离职，在4月份进入新公司。工作感悟新公司主要是做Web安全的，而我主要负责一款扫描器插件的开发于扫描器本身的维护工作。这份工作经常给我带来惊喜，就比如说sql注入，正常人的思维是输入一个值，然后在数据库中查询，但是sql注入就不是，它会在输入的查询条件中带上sql语句，这与传统的方式不同，它给我一种耳目一新的感觉。我第一次学习到sql注入的原理时是那样的兴奋，感慨于它的不同寻常。同时也对安全从业者产生了一定的崇拜，他们一定是一些思维活跃的人，是一群打破常规的人，这些都是我决定从事安全行业，努力融入安全圈内。这一年收获很多，在这一年中学习了一些常见漏洞的原理，攻击与防御的相关知识，通过阅读公司扫描器的源代码，学习了一些阅读源代码的方法，虽说还没有总结出一整套的方法论，但是也有一些思路。并根据这些方法我找到对应的代码并进行了一些修改。另外，在这一年中学会了一些脚本语言，比如Python、JavaScript。我自己感觉虽然扫描器是使用VC++语言编写的，但是我在这一年中本身使用最多的反而是Python。在刚入职时使用Python开发了扫描器对于ajax部分的支持，使其能够正常爬取到使用JavaScript动态生成的脚本。后来又使用Python开发了大量的漏洞扫描插件。现在又在使用Python开发一款网站监控软件。可以说这一年如果不是自己一直在自学VC的内容，可能现在C的东西都忘干净了^_^由于需要与Web程序打交道，所以一些理论方面的内容必定会涉及到，这一年主要详细了解了http协议，但是主要是在数据包层面上的，比如http的协议头、协议体等等，对于网络底层的东西仍然不是太明白，这也是目前的一个短板。后来为了方便，使用Python发送网络包的时候主要使用的requests库。知道了使用requests库定制协议头、判断响应包等等操作。但是反而对原生的urllib库不太了解。总结这一年我感觉最有用处的项目就是当时我使用Python + webkit写的一个web2.0的爬虫以及现在的一个web监控系统。web监控目前没有完成，所以暂时不提它，这里主要说说web2.0爬虫项目web2.0爬虫参考书籍《白帽子将web扫描》一书，基本代码都是按照书中的思路来的。这个项目使我详细了解了http协议，正则表达式、xpath表达式等等。为了使用webkit，项目主体是一个qt的任务调度部分负责调度由扫描器传过来的需要解析的url，每当有一个url过来的时候，都会触发一个自定义的事件，然后由qt调用对应的槽函数。其实我原本打算使用Python的线程池，来进行调度，但是由于使用的是webkit的Python封装——ghost库，这个库有一个好处就是能够捕捉到所有的网络请求，这样我可以很方便的得到ajax异步加载时请求的URL，从而得到一些额外的url，当时ghost库使用的是全局的app类对象，qt又不允许跨线程访问对象，所以没办法取消了多线程。后来经过我的测试在性能上虽然有一些损失但是损失在能接受的范围内。在解析url时候主要解析下面几种：在一些常规标签中的url，对于这种采用的是常规的xpath表达式出现在文本内容中的链接，或者JavaScript脚本中的链接，这种采用的是正则表达式需要进行异步请求的链接，这种链接主要出现在一些JavaScript注册的事件中。这种链接主要使用ghost库，获取所有网络请求，然后解析其中的url还有就是一些需要进行渲染之后才能出现的链接，对于这种链接，采用的是ghost库中的webkit进行渲染然后解析生成的HTML其余事项我在国庆期间去了一趟深圳，见了一下之前的大学同学，虽然很遗憾，不少人都回去了，但是我见到了当年的室友，以及领我上安全这条路的大牛同学。在于大牛同学的一些交谈中，我发现自己进步的没有想象中那么大，这些都激励着我继续努力不足2017虽然有进步，但是也有许多的不足：生活过于懒散：最大的毛病在于生活过于懒散，没有规律。经常周五熬夜做自己感兴趣的事，一旦这件事做完了或者碰到瓶颈没法解决的时候，后面几天就成了一无是处的咸鱼。手机占据了大量的业余时间，在这一年中，公司很多时候没有什么大事，加班比较少，我虽然回来的早，但是大量的时间用在玩手机上，根据我自己的观察，差不多从7点到8点半的时间很多时候都是在玩手机。而且有时候在学习的时候集中不了精力，时不时会看看手机，这样极大的影响了注意力。缺少锻炼：要说这一年什么收获最大，那应该是我身上的30斤肥肉T_T，从年初的100多斤涨到现在快130斤，在加上自己经常久坐，导致现在有时候稍微活动一下就浑身不舒服，浑身酸痛。18年需要改变这一现状读书太少：这一条与玩手机太多有很大的关系，长时间玩手机，使读书的时间压缩了，有时候200多页的书需要看个把月，总体算下来，今年一年加上在kindle上的书共有6本，明年可能要花更多时间在读书上展望2018生活习惯针对上述出现的问题2018年决定做如下改变：多锻炼：目前计划在3月份房子到期找到新地方后就近找一个健身房办张卡，经常去锻炼身体，并且强迫自己每个星期必须出去走走按时休息：每天按时休息不再分周末和平时，到点了放下手机或者手中的事睡觉，周末白天尽量在8点前起来，保证每天早上出去吃个早餐尝试自己做饭，少点外卖学习计划详细学习网络原理系统学习渗透测试，一些常见漏洞的攻击与防御学习一些逆向的知识学习一些Windows驱动编程的东西看完之前的一套VC高级编程的视频，并针对每个知识点编写相应的代码多写博客，做到每周一篇技术博客，尝试写一些读书笔记、鸡汤、项目总结类的文章将CSDN博客中之前写的VC反汇编系列、VC高级编程系列的内容慢慢转到自己在GitHub的博客上我的博客合理利用周末，周末做到每天玩手机时间不超过2小时，平时不超过半小时2018书单2018年计划读如下书目：1.《白帽子讲Web安全》2.《TCP\IP协议》3.《数学之美》4.《人类简史》5.《未来简史》6.《腾讯传》7.《古龙全集》（利用坐地铁的时间）8.《球状闪电》 最后祝我与所有朋友2018越来越好