转眼间2018年也要过去了,年初的时候想,今年要做的其中一件事就是记录,记录自己的感想,记录自己的生活,当然也包括学习。
工作
今年是做前端的第二年了,年初回来由于上家公司的原因离职后,入职了一家做小程序的公司,从此开始了移动端开发之路。小程序开发倒还算是挺方便的,可以使用es6语法,CSS3属性,而不用去担心兼容性的问题。但同时小程序的变化也很快,经常需要一些业务上的调整去适应微信的新规定。
在过去一年里尝试过mpvue,使用熟悉的vue语法开发的体验确实很不错,但在后来发现mpvue中有些bug,并且有性能问题,而且官方进几个月都没有更新,之后新业务还是放弃了mpvue。其实小程序本身的开发体验也还算好,我们也并没有多端同步开发的需求,所以mpvue只能说是一次尝试。
这一年中做过不少功能组件和模块的开发,思考了一些api的设计,数据结构的设计,设计模式的一些实现。其中有些在后来看来是设计的有些问题的,比如有些模式用js没有必要像其他语言那样去实现,js本身很灵活,可以利用这一点,而不需要死板的去套那些模式。
在做一些基础功能例如请求模块的封装的时候,了解了怎么去设计良好的数据结构,函数柯里化,怎么维护一个不可变的对象避免被其他开发同学不小心修改。还有错误处理的问题,是在内部处理还是抛出。这些和写业务代码最大的不同大概就是,我需要给同事们能提供尽量方便的调用方法、数据结构。并且要处理他们在使用中可能发生的错误,保证代码的可靠性。
今年在工作上没有遇到很难的问题,都是不断的在优化,学到了什么新东西,就尝试在工作中使用一下。虽然业务并不难,但是希望自己能在之后可以更好的去设计代码如何实现,写之前先多思考,提升效率。
学了什么技术相关的东西
- canvas:上半年有些处理图片、实现动画的需求,学习了用canvas怎么实现动画、图表、游戏。
- 看了《CSS世界》,对css有了一些新的理解。
- Vue源码:了解部分Vue源码的实现方式
- 函数式编程:了解了一下ramda,很喜欢这种风格,目前还是有一个模糊的概念,继续学习中。
- 了解了一些后台知识:Nodejs、mongodb、koa
- 数据结构和算法:对什么是链表、队列、堆栈、二叉树、红黑树、哈希表…有了一些基本的概念,还不能说会,也不知道在前端方面是不是能用得上,大概补了一些这方面的知识而已。开始在leetcode上面刷一些简单的题。
- Linux:今年科学上网的商家突然失联了,于是乎决定自己动手,搭建自己的ss服务,顺便也学习一下Linux,从centOS7开始。看了一部分《鸟哥的Linux》(真是太厚了,而且有些地方也确实也不太懂…),练习了一些简单的bash脚本的编写。
- Nginx:在服务器上部署了几个静态服务和接口,学会了配置Nginx,了解了gzip、反向代理、负载均衡。申请了ssl证书,将网站变成https的。部署了大概这么几个东西:
- 饿了么demo
- vue音乐播放器demo
- 微信机器人:使用python库itchat,用来给女朋友方便工作自动计算统计数据使用
- 个人微信公众号后台服务
- gitee webhooks:接收项目push时的事件,执行项目下的脚本,实现项目的同步或者更新、重启
- 英语:开始尝试阅读一些英文文档,在youtube上看一些视频如谷歌chrome的频道,打开英文字幕,尽量去让自己习惯英文的环境。
其他乱七八糟的知识
今年接受了不少物理科普,发现物理原来这么有意思,知道了相对论、宇宙起源、宇宙膨胀、黑洞、时间等等。原来我们生活的世界并不是我们所能看到的那么一点,宇宙可能是由数学决定的,如果能计算所有的粒子运动,那么就可以计算出未来。但量子力学又发现世界上是可能有真正的随机事件的,预测将又变得不可能。每天深处在一行行代码中,偶尔看看宇宙,也能有一番不同的感受。
善用工具,这也是今年学习中感受到的。其实程序员是最应该善用工具的人群了吧,我们就是要尽量做一个“懒人”,不要做重复的事,让一切自动化。当然,我们要站在巨人的肩膀上,善用工具,将效率最大化。
学习的本质不是输入,而是输出。今年下半年也发现,自己输入的东西其实挺多的,但是输出非常的缺乏,这也是要保持写文章的原因,即使写的很烂,输出的过程才是真正有效率的学习。
佛学、战略、系统思维、经济学、生命科学,学习其实挺有意思的,让自己的精神世界丰富起来,也许这些东西不能让我在世俗意义上变得更富有,只是希望自己能对这个世界的敏感度高一些,保持对新鲜事物的兴趣。
今年做的最好的事情大概就是减肥了,瘦了快有10公斤了。其实过程并不痛苦,最重要的还是坚持。坚持,道理人人都懂,每天能控制自己还是不容易的,给自己点个赞吧~
明年当然也要继续坚持健身,继续学习。
初步计划大概是:
- 开始使用typescript开发小程序
- 继续深入学习python。
- 深入学习函数式编程
- 规划一下自己的网站,想想能做什么。
- 出去面试几次,检验自己现阶段的水平。
- 巩固基础知识
- 重读几本自己喜欢的书