2016 终于要结束了,虽然满怀期待地迎接 2017,但回首 2016,真的很是辛苦。由于我知道,2017 确定会更加辛苦。在这有限的时间内,我学到了很是多的知识,这一年学到的知识,比整个本科学到的还要多。css
这一点都不夸张。本科四年,迷迷糊糊的不知道本身在干吗,视野很窄,学到的知识很窄。读了研以后,我所考虑的第一件事,就是选择一个方向,而后选了半年,选好了,2016 也到来了。前端
本科就开始接触前端,真正让我对前端产生好感的是研一上学期的一个项目,我负责前端那一方面。虽然对前端没有一个系统的概念,碰到问题,基本靠谷歌(百度),虽然也能解决问题,但学不到东西。node
喜欢前端,还得从喜欢 JavaScript 提及。不过,早期时候的学习 JS,都是把它看成 Java、C++ 来学,只是以为它就是一门普通的语言,固然,这属于最糟糕的学法,对于 JS 中很是重要的思想一无所知。python
不过,这一切,都在 2016 改变了,2016 真是蜕变的一年。react
今年开心很晚,大概 3 月底才开学,因此前面两个月,不谈。nginx
研一下没有多少课,导师容许的状况下,跑到一家离学校很近的公司实习(地铁一站路)。公司很小,刚起步,人很少,真是应了那句话,去小公司实习,啥活都干,很是庆幸本身能够在这里获得锻炼。git
公司属于创业公司,主打虚拟现实,我在的时候,方向是房地产和旅游,如今转到教育方面。在这里,我能接触到前沿的虚拟现实技术,给我最大的感觉就是,虚拟现实很是火,但技术不够成熟。虚拟现实将要开创一个行业,但这须要硬件和软件的支持。程序员
我在这里作的事情不少,写过文档,作 Unity3D 开发,Arduino 单片机开发,还负责 P 图,维护、修改公司的网站,甚至我仍是个网管,买服务器、装电脑、修电脑。中间还有一次去苏州的一个展会参加展览,展现公司的产品,因为 VR 产品很是有观赏性,不少人驻足,我和公司另外一个同伴一块儿解说,也算是一次锻炼吧。github
先来讲下 Unity,它自己是一个游戏引擎,支持多平台,因为它游戏级的画面渲染效果堪称完美,被众多虚拟现实开发这用来看成虚拟现实引擎,效果比以前的一些引擎好不少。web
Unity 上手很容易,但进阶很难,这每每须要一个全能的开发者,会写脚本,会建模型,还要懂得一些光照、渲染的基本原理。因为 Unity 须要的资源文件很大,用 git 或 svn 之类不方便管理(不过咱们公司确实没找到一种合理的团队合做解决方案),好在公司人很少,我写完脚本,都直接发给 leader,有 bug,我修改一个版本,再发送。
我对模型和渲染一律不知,不会用 3DMAX 建模,不会调材质,但我会写代码。Unity 运行是一帧一帧的,代码逻辑很好理解,且支持 C# 和 JavaScript 语言,基本都是写脚本,拖到物体上,运行。
我用 C#,门槛很低,大概一个多星期,就能够上手写代码了,好比太阳光随着时间的变化,开关灯,移动,这些我均可以写,后来作虚拟现实自行车项目的时候,接触到物理引擎,碰撞,加速度,在参考别人的代码下,我也能够写。
之因此不用 JavaScript 来写而选择 C#,一方面是网上 C# 的代码样例不少,方便参考,另外一方面,虽然 JavaScript 适合写脚本,可是每次我看到 JavaScript 的代码,都感受很是奇怪,这种风格我真的没法忍受,举个例子:private var cubeTransform;
,因此,我仍是选择了 C#。
还有 Arduino,一款超级流行的开源硬件,我用它来收集自行车的信号,传递给 C# 写的串口接受程序,实现软硬件的互动。本科最辉煌的那段时间就是搞单片机的时候,先是 51 单片机的那门课考了满分,老师都说历史第一人,后来期末课设,本身手动焊板子,写代码,作一些好玩的东西(板子是别人设计好的,不懂设计)。那个时候一成天待在机房,写汇编,直接操做寄存器,写中断,写串口程序。
这直接致使个人毕设和硬件有关,读了研以后仍然在学一些硬件的东西,这也是我去公司实习的目的,虽然我是以硬件的名义去实习的,但实际作的比这要多得多。
6 月的时候,我就离开了,由于导师有其余的事情安排,如今公司发展很快,方向很好。这三个月,学到不少知识,踏入了一个行业,并了解这个行业的业务和发展,虽然我不打算从事这个行业,但这倒是人生的一次锻炼。老板人很好,同事也很热情,祝愿他们可以创业成功。
实习的这三个月,一周 5 天有三天在公司实习,有两天在学校上课。白天在公司,晚上就开始学习一些本身的东西。
当我开始想学习前端的时候,就拼命的在微博上找一些前端的大牛,看一看他们都在忙什么。基本上全部的人都在写博客,并且大多数都有本身独立设计的博客站点。当时我还傻乎乎的认为,博客这种东西应该是文人的喜爱,而我印象中技术人员的博客大多都还停留在教你怎么配置文件,或者记录下今天解决了一个什么样的 bug。后来本身亲自写博客以后,发现远比想象中要复杂的多。
先从建站提及。以前就有 Linux 系统的基础,恰逢腾讯云和阿里云都有学生计划,价格很便宜,腾讯云的学生计划更是低到了一元每个月,还免费送域名。
建站的过程当中,学到了很多知识,反正是服了国内域名的备案。之前学网络的时候,知道什么是 DNS,经过腾讯的域名备案了解到什么是域名解析,而又经过域名解析又了解到了 @ * 主机记录和存活时间,也学习到很多新的知识。
或许当初我放弃一些免费的博客平台好比 cnblog、csdn 或简书、知乎头条等是一个遗憾,可是手动搭一个开源博客,并设计本身的样式,真的受益不浅。感受本身是一个前端人员,就要有本身设计的博客,且在设计的过程当中,学习到不少前端以外的东西。
Wordpress 很火,但因为它是 PHP 语言写的,而我在选择的时候更倾向于一个 js 语言的框架。Ghost 是一个基于 nodejs 的开源博客平台,而且能够本身设计主题,参考官方的 API。个人第一个主题使用的是别人的,在此基础上,我增长了一些修改。不过那个时候,啥也不懂,不会使用构建工具,直接在 css 文件里改代码,很是痛苦。
大概这样子写了三个月的博客,说实在的 Ghost 真的是一个优秀的博客框架,但我在使用的过程当中也发现了很多的问题,Ghost 是一个多人博客框架,对我来讲,有点大材小用;好多功能都不够完善,Ghost 发布至今已经不少年过去了,但仍然不支持评论系统;Ghost 更像是给一个非技术人员提供的博客,而我若是想要本身扩张插件,很难。。。
上面不是我放弃 Ghost 的主要缘由,当我遇到 Hexo,我知道是时候放弃 Ghost 了。Hexo 是一个静态博客,本地生成,能够 push 到 github 上,固然也能够用 nginx 代理到服务器上。Hexo 提供两种方式来写插件,一种是用 npm 管理,以 hexo-generator-{name} 的命名方式,另外一种就直接在根目录下建一个 script 文件夹下全局函数便可。
参考 Hexo 的 API,我本身设计了一套主题,样子很丑,还算凑合。大概花了两个多星期,弄完了以后又有很多小的修改,整体感受 Hexo 很优秀,可是有时候写博客也会很麻烦。
写博客给我最大的好处就是知识点的梳理,个人博客大多都是以学习为主,因此在写一篇博客的时候,每每要查阅不少资料,原本觉得我对这个知识点已经很了解,可是查阅资料才发现,还有不少不足。写博客是一种锻炼,在写的过程当中,要学会如何组织语言,还要把一些知识点写的通俗易懂,写完了以后,每每还要检查几遍,以确保不会出现纰漏。写博客自己就是一门艺术。
写博客的过程当中,还学会了如何使用 markdown,如何排版,如何使用标点符号,这些都是很是小的细节,但又如此重要。
后来 6 月份,来了南京,导师安排的,公司是作安全的,我在的项目组是作 web 安全的,在安全公司里实习,最大的感觉就是,宁肯错杀一百,不肯漏掉一个,尤为是一些可能对公司安全带来威胁的小细节,坚定杜止。
在这样的公司里工做,是福气,由于你必需要逼着本身,宁肯多检查两遍代码,也不能等到它出现 bug 被 leader 骂一遍。公司里没有所谓的测试人员,本身就是测试人员,并且代码写完了,通常隔天就上线了,若是那个时候来个 bug,真的是毁灭性打击。还好,代码很简单,出现的问题都不大。
公司里不少时间都在写脚本,用 Python,各类搭建靶机环境,期间,最大的收获之一是正则表达式的熟练掌握。对于正则,不用的时候,感受没啥,但当真的用到它,如何能写一些高性能的正则表达式,这都是一个程序员必须掌握的,受用终生。
以前对于正则的种种,还停留在入门的阶段,属于那种会用但不深刻。在这里实习,初期的几个月里,几乎每天都和正则表达式打交道,天然而然,就很是熟练了。
既然是作安全,有时候须要复现一些漏洞,就须要搭靶机,这也是一个按部就班的过程。早期都是在外网用虚拟机装个 Ubuntu,而后把整个虚拟机文件迁移到内网(内网是禁止连外网的),后来开始转入到 docker 的使用,效率大大的提高,迁移文件也方便不少。总体感受,docker 的火是有其必然缘由的。
因为是作 web 安全,有一部分的时间,是在学习 Http 协议,对于请求响应的过程作过颇多的研究,并且这和前端必备的知识又吻合,冥冥之中,也坚决了我前端的路。
实习到如今,7 个多月过去了,这里的实习很轻松,历来不会加班,晚上和双休彻底是本身来掌控,在这里学到了不少。
我接触 github 很晚,或者说在想学习前端以前,就没有去关注这个网站(感受是一大批前端的码农让 github 如此之火)。本人没怎么用过 svn,到公司实习以后,公司的开发语言是 python,用 gitlab 内网托管。git 这样的版本控制方案,一用就爱不释手。
关注前端的大牛,先是微博,而后是 github,看一看大神们都在忙什么项目,我知道吗,我须要学吗?而后渐渐的把本身的项目也放到 github 上面去托管,尽管有时候网速感人。
不知道从何时开始,本身逐渐的向一个开源爱好者靠拢,尽管我目前对开源社区零贡献,但我相信,将来会有的。
自从我把 github 设置成本身的主页以后,天天打开浏览器,第一件事就是看看,你们都在关注哪些项目。记得 yarn 项目发布出来以后,几乎全部人都 star 它,火的项目,就这样传开了。
开始玩 segmentfault 以后,发现本身的 JS 是如此垃圾,那个时候连最基本的闭包和原型链都没有弄明白。看了 jQuery 做者的《JavaScript 忍者秘籍》,慢慢的了解到这些概念,本身又写了几篇博客,来总结。
我以为这段过程才算 JavaScript 的真正入门,以前写的 js 都算狗屁,由于那个时候的我连 this 都不知道怎么用。
这一年,在 JavaScript 上长进不少。JS 中最绕人的仍是回掉,可是经过一步一步 debug 调试,按部就班,慢慢地就再也不晕头转向了。后来学习了 ES6,感受进入了巅峰期,尤为是 ES6 中不少用法,让我对整个前端最火的几大框架又了新的认识,同时,当我学习这几大框架的时候,也能感觉到 ES6 的威力之大。
暑假的时候,作了百度前端学院的题目,对 HTML、CSS 和 JavaScript 又有了一个进阶性的认识,开始学习闭包原型链和类的写法。也就是这个时候,我觉定从新看 JavaScript 的书,补强被遗漏的几大知识点。
看了《深刻浅出 nodejs》一书,因为当时阅读的时候,没有太走心,真正有用的知识点,并无学习到多少。后来学习 express 搭建服务器和博客的时候,网上有现成的教程,却是对中间件的使用有不小的心得体会。那个时候 express 更新的很快,而教程都很老,踩了很多的坑。
九月、十月,这段时间花了不少时间在 codewars 上面,那段时间沉迷于用箭头函数写很是简洁的函数,有时候还会去研究下一些有意思的前端题目,还特地加了好几个 QQ 群,看他们讨论。当时的题目,除非是有很大坑的题目,基本都已经忘记了。
后面两个月,开始学习 React,但中间又多了许多变故,拖了好久,才算对 react 有个初步的认识。也写过一篇对 JS 中继承对深入理解的文章从一个组件的实现来认识 JS 中真正的继承,渐渐的,愈来愈对 JS 着迷,深深的吸引着我。
从一开始,我都是很是热衷于看原生 JS,尤为是像 jQuery 等框架等源码,这也是我明年 2017 首要完成对任务。
之前,我以为本身是一个程序员,可是孤立无援,一我的,默默地写着代码。后来我学习前端,开始玩微博并关注一些前端方面的人,开始学习 git 并在 github 上提交了本身的第一个 commit,同时也关注着许多前端开发人员的动态,那个时候,我才以为,我不是一我的在写代码。
前端,让个人眼界获得提升。或许我能够经过其余方法来提升眼界,好比去了公司以后。但如今不同,我还在学校读书,却能对整个行业有着本身的见解,这一切都要归功于 Front-End。
前端只是一个选择,它确实很火,但我保证本身并非跟风过来学习前端的。我从刚入学的时候(研究生),就在为找工做时刻准备着,并非为了找工做而选择前端。到如今,2016 已经结束,我对本身的选择并不后悔。
我不会强迫本身成为一个硬件工程师,或者算法工程师,或者 Java 工程师,这些看起来都很是的好找工做,在我选择前端以前,它们彷佛是较好的选择。前端这个行业,受到不少人的批评,有人说他变化太快,有人告诫我,一个研究生不要去找这种‘低级’的工做,每次,我对于这种见解,都是一笑而过,毕竟,没搞过前端,就没有发言权。
存在都有其存在的意义,包括前端,发展很快,不正是说明前端这个圈子在飞快的发展吗。
在同窗之间,我也找到了像我同样,喜欢前端的人,你们有时候也会在一块儿讨论,毕竟同窗间的这个资源圈,确实稀少,由于大部分人还不知道本身毕业了以后干什么。
这篇文章本应该在年前完成,可是中间多了一些小插曲,致使今天(1 月 2 号)才将就写完。算了,无论了。元旦玩的很开心,可是细想起来,这三天又丢失了不少东西,好比 github 上的 commit。有失必有得,但愿在 2017,本身可以取得像 2016 同样的硕果。另外,前端不是你想学就会的,前端的门槛并非你想像的那样低,可是,若是你选择前端,请用心。共勉!
欢迎来个人博客交流。