ConardLi 的 2019 — 尾声和开始 | 思否年度征文

2019年,是对我很是重要的一年,比想象中更累的一年,比想象中收获更多的一年。这一年,真的发生了很是多的事,不管是生活仍是工做学习上,因为是技术社区的年度征文,我就从 写做和积累技术上的提高工做上的转换 这三个方向来总结一下这一年。javascript

写做和积累

我来思否的时间并不长,发表的文章也不是不少,可是我真的很是喜欢这个社区,个人文章在这里产生了很是多的阅读量和点赞,这些数字可以知足个人虚荣心,可是一样让我在发表文章的时候变得坐卧不安。文章一旦发出来就会通过众多目光的检阅,因此虽然我发表文章的数量并很少,但每篇文章都是通过我反复修改和优化的,因此一篇原创文章所要花费的时间是很是多的,因为平时工做比较忙,天天只有有限的时间学习和总结,加上反复的修改和优化,有时一篇文章要花上一个月的时间。html

这里关于原创文章我发表一些个人见解,关于原创文章知识总结是有很是大的区别的,前者是要为他人提供必定价值,后者是本身作查阅使用。若是文章仅仅停留在知识总结的层面上,那大可没必要发出来,放在本身的笔记里就行了,因此一旦是发表在外面的原创文章我必定会保证每篇文章的质量,保证发出来都是对你们有必定价值的。不少同窗问过我,写好一篇文章的秘诀是什么,若是真的有秘诀,那就是在写这篇文章的时候时刻要想着,写出来的东西不只仅本身要很是明白,并且可以让其余阅读的人也明白,而且为他们带来必定价值。前端

下面是我今年在社区发表的一些文章,虽然数量很少,但我尽可能保证每一篇都是精品:java

自检

这篇文章原本是用于概括总结我本身的知识体系的,没想到发出来受到不少人的关注,我更但愿的仍是你们以个人这篇文章为例,创建本身的知识体系,而后不断去自检和完善。node

工程化

今年下半年的工做主要在前端工程化上,因此我研究和输出的重心也放到了这上面,这将会是一个很长的系列,将来我会尽量的将我在工程化上的底层研究和最近技术输出给你们。python

React

关于React我作了不少源码和原理上的分析,大多数都停留在16版本之前,React17立刻要发布了,将来我还会继续在时间切片、异步渲染等最新特性上输出一些原理分析文章。react

JavaScript

市面上很是多关于JS基础的文章,我不太喜欢简单的知识点罗列,我更喜欢在实际的应用中将这些知识点体现出来,将来也是如此,这部分也会有更多的文章。webpack

送你43道JavaScript面试题源于我对开源项目 javascript-questions的翻译,只发了一篇文章在思否上,很久没更新了,后面会继续跟进最近题目。nginx

网络

一篇很是全面的对 ajax、fetch 原理和应用的分析文章。git

Electron

用JS开发跨平台桌面应用,从原理到实践 是从【运行原理】到【实际应用】对Electron进行一次系统性的总结,很是全面。

Webgl

跨端

从移动端适配的基础概念出发,探究移动端适配各类问题的解决方案和实现原理。

数据结构和算法

数据结构和算法是我一直在持续练习的,我平时也会分享出一些题目或者一些类型的解题方法出来,不太重要的仍是要掌握解题的思想,因此我整理了开源项目 awesome-coding-js ,而且写了前端应该如何准备数据结构和算法?这篇文章,但愿你们经过这篇文章能系统性的掌握和联系数据结构和算法,而仅仅不局限于某些题目。

新技术

我一直比较喜欢关注业界的最新技术动态以及走向,而且按期总结,今年年尾我开始把我关注的技术动态的东西分享出来,因而我总结成【技术圈】这个专栏,它是我对业界最新技术动态的跟进总结,不只限于前端,将来我会持续更新。

技术上的提高

2019年个人技术关键词应该是 React数据结构和算法工程化,固然其余的技术我也有涉猎,可是主要深挖的仍是这三个方向,

React

这一年关于React我作了不少原理上的分析,读了 reduxmobx 以及一部分React 源码。

说实话 React 源码是我读过的源码里最难读的一个,我相信不少同窗都有这个想法,若是硬生生的读很容易半途而废。这里我分享一下个人经验:必定要带着实际问题去读源码,我就是如此,在读源码的时候带着平常开发中常常会遇到的问题:

  • setState 是同步的仍是异步的?
  • 为何有时连续屡次 setState 只有一次生效?
  • React 如何实现本身的事件机制?
  • 为什么 React 事件要本身绑定 this
  • ...

这样你在读源码的时候就会不断想去经过源码找到这些问题的答案,而不是看完源码再想发现了些什么,当你从源码中找到了你想要的答案,那么说明你的努力是没有白费的。

由于以前我在生产环境使用的 React 一直是 15.x,因此源码解析大多数都停留在16版本之前,现在 React17 立刻要发布了,React 又给咱们带来了很是多的使人激动的新特性:可中断渲染、指定加载顺序、并行处理多状态... 将来我还会针对这些新特性对 React 继续探索。

数据结构和算法

18年立过一个flag,2019年要把从新把数据结构和算法练好,我一直认为,数据结构和算法对于一个程序员是很是重要的,前端工程师也是同样的。它能带给你的不只仅是面试上的收益,更重要的是能够拓宽你解决问题的思路。

固然你可能会讲,有些大佬并无刻意练习数据结构和算法,可是他们同样很厉害。不得不认可有些人先天就有优点,又或者他们能从其余途径领悟这些解决问题的思路,但这并不可否认数据结构和算法可以让你得到这些思路,并且是属于比较快捷的途径。

2019年我作了差很少300道左右题目,输出了题解60余篇,困难:中等:简单比例大概是1:3:3左右,所有都放在个人仓库 awesome-coding-js 中。

虽然这个数量跟不少大佬比起来不算什么,可是这些题目基本上覆盖了常见算法(排序、递归、二分、搜索、回溯、动态规划、贪心)和数据结构(数组、二叉树、链表、栈和队列、哈希、堆)的各个分类,因为时间有限,我通常也只会挑这些分类的典型题目,而后针对某一类题目进行总结。我也针对这些题解又作了一个比较全面的系统性的解题指南 前端该如何准备数据结构和算法? 但愿可以帮到你们。

刚开始作算法题目是很是耗时的,有时候一道题要花上几个小时的时间,个人作题时间通常是晚上下班后睡觉前,作完就睡觉,因此作题时间和睡觉时间是成反比的,这也能激励我快速的把题目解出来。

固然如今已经好不少了,通过长时间有规律的练习和总结,如今遇到典型的题目我都能很快的解答出来,遇到有点难度的基本上也能够套用已有的思想慢慢的解出来,不会再有当初毫无头绪的感受了,不得不说,这真的是一个很是奇妙的过程,强烈建议你们也体验一下。

工程化

前端工程化就是以工程化方法和工具提升开发生产效率、下降维护难度、把控研发质量。我研究的方向仔细划分其实还能够划分为研发效率、研发质量、研发安全三个方向。

研发效率

提高研发效率应该是最多见的前端工程化方向了,整个研发流程的各个节点都是能够进行统一规范和优化的。

从初始化的脚手架,到研发的代码规范,到开发调试的工具,再到构建打包、自动化CICD,均可以作成一套统一的而且可适配不一样业务场景的解决方案。这个工做仍是很是有意思而且有必定挑战性的。

研发质量

研发质量也能够放到工程化的范畴,研发质量也是能够从多维度多场景来衡量的。和上面的研发效率相似,研发质量也能够从研发的全流程,也就是初始化、开发、调试、构建、上线、性能监控、错误监控来体现出来。

市面上大部分的监控研发质量的工具都只是针对以上的某一个阶段,个人目标是实现一套针对研发质量监控的全流程解决方案。

我以前写过一篇 前端代码质量-圈复杂度原理和实践,实际上这只属于以上的开发阶段的代码分析阶段的一小部分,其中单单代码分析阶段就会有不少不少须要探索的事情。

好比下面的代码文件耦合度分析:耦合指逻辑层面上有互相关联和影响的代码模块,一般这个能够经过分析文件的依赖,以及分析一个给定时间分片内,代码的提交状况判断(耦合的模块一般会在一块儿提交),耦合是一种常见以及确定会出现的状况,并不必定是坏事。可是须要可以展示出非必要耦合的能力,例如我在改文件A的时候一般也会修改和文件A看似毫无关联的B文件,这两个文件就可能存在须要解耦的必要。

以下图,红色部分表明系统内某个时间分片内常常协同修改的文件,即改了A就会改B,这些文件是存在耦合的。经过耦合的检测和可视化,咱们能够作到检测单元测试以及文档是否在和系统代码自己同时演进;检测代码架构上有问题的部分和模块间隐藏的设计上的依赖。

下面的协做效率分析,也属于开发阶段的质量监控:有时增长开发者的数量并不能显著的增长开发效率,若是你的项目有可能成为布鲁克斯定律的受害者,那么你会发现开发者总数与其产出之间的距离会增长。

布鲁克斯法则:指投入更多的人来开发一个紧急的项目只会让进度更慢。更多并不意味着更好,有些事最好是一我的来干。

总之这也是一个很复杂而且颇有挑战性的方向,须要研发全流程的大量数据监控和算法架构的支持。我也期待将来能够把这个方向作的更好。

研发安全

大部分同窗可能对安全问题还停留在 xsscsrf 等常见问题上,其实安全问题多种多样,有可能你不经意间一个操做就可能引发一个安全问题,好比你不当心把 source map 文件传到了线上,吃瓜群众就能够开心的在控制台看你的源码了...

固然,安全问题形成的影响不只仅是上面这么简单,可能你的日志打点不当心在某些国家多收集了一些数据,就可能会引发该国家对你启动国家安全调查(咳咳这里就不明说了...)。回想以前 Facebook 的用户信息泄露问题,直接给他带来50亿美圆的巨额罚款...

这些都有多是你的几行代码就可能形成的影响,因此必定要重视代码安全问题,否则有可能你在不经意间就把公司写破产了~

大部分安全问题其实都是能够人为避免的,而咱们能作的就是从工程化的角度去发现和避免这些问题,这样的工做对于有必定体量的公司仍是很是重要的。

开源

我玩github的时间并不久,以前只是去github下载项目,偶尔逛逛issues,今年才开始把本身沉淀的一些东西开源出来。之后会有更多更实用更有意思的东西开源出来。

这一年收获的star大概有2k左右,这个数字跟众多上万star的大佬们真的不能比,可是对我来说已经很知足了,是一个很好的开始。

个人道歉

这里真的要跟关注和使用我开源项目的同窗说一声抱歉,首先真的很感谢大家的关注,大家的关注也带给我持续输出的动力,可是下半年工做上我真的很是忙(具体缘由下面会阐述),花在博客和开源项目上的时间少了许多,以致于不少问题不能及时修复,下面是我某个项目下的 issues

下面是个人 github commit 记录,后半年的提交真的少了不少,这里真的要跟你们说一声抱歉。明年我会尽力想办法更好的去平衡工做和学习时间,来修复这些问题。

项目列表

还有一点就是真的但愿有感兴趣的同窗来一块儿来参与项目的共建,我以前也收到过不少同窗的pr,只要是有价值的我都会合并,一个好的开源项目还得须要社区的力量来不断的完善和优化,下面是个人几个开源项目:

tpanorama

tpanorama 是一个全景插件,它能够把一张平面图转换为可操做的全景效果,而且提供自定义标记、平面球面标记互转功能,个人这篇文章 看完这篇,你也能够实现一个360度全景插件 就是对这个全景插件的实现讲解。

在功能上它还有许多须要完善的地方,上面我贴的 issues 就是这个项目的,感兴趣的同窗能够一块儿共建来修复这些问题,或者添加新的功能。

https://github.com/ConardLi/t...

electron-react

electron-react,使用 electron + react + react-router + mobx + webpack 搭建的脚手架工程,集成了开发调试、程序保护、升级、打包构建等功能,另外还对窗口、通讯、菜单、系统、弹框、打印 等经常使用功能提供了示例 demo

https://github.com/ConardLi/e...

awesome-cli

这个项目是我开发的一些有趣实用的命令行工具集合,目前提供代码扫描、代码行数统计、代码复杂度检测等功能,后面我会继续完善。

https://github.com/ConardLi/a...

awesome-coding-js

这是一个 markdown 项目,上面已经介绍过了个人算法题解都记录在这上面,不得不说 github 上的 markdown 项目 star 都挺多的。

https://github.com/ConardLi/a...

工做上的转换

今年我对于工做的关键词应该是 转换

由前端到全栈

最近又从新捡起了尘封已久了sql,也开始在nodejs上发力,而且还会写一些gopython,本身cover整个研发全流程的感受很是好,不再用和后端撕逼了...

由业务到架构

今年上半年以及以前的工做,基本上都是和业务打交道的,按照排期完整需求。而后剩余的时间就是关心线上监控、对已有的功能进行性能优化、以及为了提高业务效率而造轮子。

今年的下半年,可能算是我工做的一个转折点,我开始专一于前端基础架构方面的工做,主要方向我上面已经提到了,研发效率、研发质量、研发安全。这些东西是我之前从没有深刻研究过的,对我来说很是有挑战性,我也很是感兴趣。

上面我提到了我下半年很是的忙,这里我就简单说明一下,作业务和作架构真的不同。作业务相对来讲是见到成效比较快的,而基础架构不同,须要很长的时间去打磨和优化,短期很难见到成果,作完一件事情以后我会千方百计的去优化,让它变的更好,并且还有很是多新的事情等着我去作。总之我一直会抱着一种没有最好只有更好,没有最完善只有更完善的心态去作,因此下半年我花在开源项目和总结输出上的时间少了不少。

可是这对我来说并非一个坏事,输出的时间变少意味着沉淀的时间会更多,经过大量长时间的积累和沉淀才能多输出一些有价值的东西。也但愿将来的我可以继续沉淀下去,戒骄戒躁、厚积而薄发。

尾声和开始

2019已经进入尾声,咱们也即将迎来2020的开始。其实我如今还能想起2018年除夕夜的鞭炮声,想到当时我对新的一年的展望... 闭上眼睛,2019的点点滴滴还历历在目,一个圆满的尾声又即将变成了一个崭新的开始... 2020年会发生什么?谁知道呢~

2019年你过得怎么样?开心仍是不开心?赚钱了仍是负债了?减肥成功了么?年初的flag完成了么?和喜欢的人在一块儿了么?升职加薪仍是被裁人了?你的尾声是什么?你的开始又是什么?欢迎在留言区分享出来...

本文参与了 SegmentFault思否征文「2019 总结」,欢迎正在阅读的你也加入。
相关文章
相关标签/搜索