2018 in Restrospect

2018对我来说是充满起伏的一年,经历了春招转正、毕业设计、本科顺利毕业和校招培训,各种起起落落中最明显的关键词就是:独立做了一系列(可能)改变人生道路的决定,包括升学和就业的抉择;第一次自己搬家,不依赖家里的生活费,真正开始独立地生活。然而8102的社会无疑是荒诞的,强大的无力感让人更想缩回自己的舒适圈,去自我催眠去选择性屏蔽,不可置否的是身处洪流的我也开始有了懈怠的心态。从学生到社会人士的心态转变强迫着自己学会用更成熟谨慎的眼光看待选择,同时也用尽全力保持乐观对事、善良待人。

学业和就业

高中毕业的时候总觉得,大学毕业是遥遥无期的事情。四年里淹没在各种 DDL、Pre、Report 和 Final 甚至还一度怀疑自己最后能不能拿到学位。直到手里握着一纸证书才意识到自己真的毕业了、再也不可以顶着学生的title将依赖感和被动感当做理所当然。当然还是很感恩在科大这四年,(不管别人怎么说)在这个平台上从一个编程小白成长为初出茅庐的软件工程师,在三观形成固定的重要年纪拓宽了眼界,扩展了思维;认识了怕撸HKK思思Microos学神Umi和小明,收获了值得一辈子守护的友谊。

关于学业和就业。整个大四看着身边的同学都是在准备 GRE 雅思托福CV,加上自己GPA和雅思分数都还行,也有过想继续深造的念头;然而因为大学期间一直在钻研前端,没有认真的科研项目和paper无法往MPhil方向发展(自觉也不是能沉下心做科研的材料),打 ACM 成绩也不好QAQ,碍于MSC方向的高昂学费,而自己还是对前端工程这个方向充满了热情,最后还是选择直接就业。

从去年11月开始在360企业安全华南基地实习,到今年已经超过一年了。接受了三月春招的Offer之后,在基地实习、正式工作的这一年可以说是我在前端方向进步最快的一年,技术栈从学习时的 Vue 转为 React 全家桶,接触了规范的需求/开发/测试/打包流程,团队里开始应用统一的代码/文档/注释规范和单元测试,整个团队协作效率很高,并且有超Nice的大佬带着允许我不断在技术上试错,也鼓励着我去不断寻找最优解决办法,很庆幸能在一个专业的团队里开启自己的软件工程职业生涯。除了日常业务需求外,独立负责一版大屏可视化开发任务可以说是今年工作里的highlight了。二维图标看板和三维背景模型的结合让我在开发的过程中有充分的机会补足在 Canvas/SVG/WebGL 等领域的缺失,甚至因为涉及了地图还入门了GIS,更加坚定了我以后要往可视化方法发展的决心。

技术

今年的技术重心主要放在了两个部分:毕业设计题目自然语言处理和工作中涉及的数据可视化研究。为什么当初会选择我的导师做毕设呢,其实还是想跳出舒适圈,趁毕设这个机会做点之前从来没有接触过的新技术,而不是随便用 JS 框架搭一个课程管理系统什么的水过去【。现在想想其实有点高估自己的能力了,实习和毕设的时间冲突导致四月份不得不请半个月的假回家专心做毕设。虽然最后作品完成度不高,成绩没有特别好,但是也没有太大的遗憾啦~

自然语言处理

以 Python 作为开发语言,结合机器学习方法对同人小说网站的标签进行关系挖掘以及评论区的情感分析。1)情感分析部分,主要是用了 NLTK 进行数据清洗、分词和词性标注(隐马标注器),基于权重模型提取关键词(组),使用 Doc2Vec 获取不同长度文本段落的向量传入逻辑斯蒂回归 SDG 分类器中进行情感分类和极性评分;2)在标签关系挖掘部分,用 FastText(Word2Vec 的 N-grams 版本)获取不同标签之间的词向量和余弦距离,进而绕过 K-means 直接获得最近似标签。

在这个过程中不仅了解NLP领域中的基础N元模型、声学模型和其他语言学知识,学习了 NLTK、scikit-learn、Numpy等库的用法、更接触了 Word2Vec(包括衍生的 Doc2Vec 和 FastText)这种浅层神经网络的词向量模型;同时也从实战中接触机器学习中接触 supervised learning 的各种技巧,包括 K-means,向量机,线性回归、以及各种调参防止过拟合手段。

数据可视化

以前在学前端框架和模型的过程中一直缺失图表这一部分的涉猎,包括 Canvas/SVG 的基础都不太稳,都是用到了就查MDN文档。今年接手大屏开发需求后让我可以专心补足这一部分的缺失啦~

平面图表可视化

对可视化最早的接触可以说是在深瞳实习的时候,在MVP产品里面用 D3 实现了一些简单的柱状图折线图。今年沉下心来学习 D3 的数据驱动图标概念,在实践中应用力导向图、Voronoi、TreeMap等多种布局用法。把一些实验的例子放在 Codepen 上了,欢迎 fork~

现在的业务中最常用到的就是 Echarts。在项目中上手后就开始看羡澈小姐姐的源码分析视频,下一步会对 ZRender 进行深入一点的研究吧~

WebGL 与地理信息系统可视化

大三的时候修了一门计算机视觉基础,在学习 OpenGL 的基础知识后入门 WebGL 的门槛一下子降低了很多,场景、相机、世界/物体坐标和材质、光线、矩阵转换等概念互通,再配合 Three.js 简洁的API即可快速搭建最小场景。了解了 GLSL 着色器的基本语法和函数,给予像素级控制渲染的能力,明年仍需在这个领域继续深究。

基于 WebGL 的强大功能,2018年我接触了更多空间地理可视化方向的知识:

  • GIS 基础理论:地理坐标系(地球坐标系WGS84,火星坐标系GCJ20,百度坐标系BD09及不同坐标转换方法)、地图投影方法(墨卡托投影、Albers投影等);
  • 地图瓦片理论:矢量和栅格瓦片、瓦片层级、MBTiles规范和地理编码、OpenStreetMap 开源项目等;
  • Mapbox: Mapbox GL JS 组件库基本用法和自定义矢量瓦片样式、与 Three.js 网格对象的结合、Tippecanoe瓦片处理工具、离线资源本地化实践等

其他前端相关

  • 单元测试

    年初研究了一下测试的一些基本方法思路,并为团队的新项目搭建了前端单元测试的框架,使用 Jest+Enzym+Puppeteer 的方案对公共组件做逻辑上的单测,对普通页面做快照测试。

  • Server-Side Rendering 服务端渲染

    单页应用虽方便,但有两个不可忽视的缺点:1)SEO支持差,搜索引擎无法获取动态渲染的内容;2)可访问性差,一旦用户使用不支持 JS 的客户端访问单页应用则没有内容会渲染出来。Vue 官方对服务端渲染也有比较好的支持,因此我选择在学习过程中不直接使用开箱即用的 Nuxt.js 而是前后端结合直接实现了一遍 SSR 流程。

  • TypeScript

    TypesScript 拥有强大的类型系统,强类型约束+静态分析检查+IDE智能提示可提升代码可维护性和团队协作效率。它支持最新的ES7、ES8甚至仍在提案中的 JavaScript 语法如 async/await 和装饰器等新特性,更可在 JS 代码中使用泛型、接口和命名空间等面向对象编程特性。在重构博客的过程中在 Vue 里使用 vue-property-decorator 和 vuex-class 适配 TypeScript 的 类写法,简直一入TS深似海~ 附上九月份在团队里做的小分享PPT:TypeScript简介:为 JavaScript 开发添加类型系统和静态检查

  • PWA(Service Worker)

    其实我从大三的人机交互课上就开始介绍PWA了,然而只是流于表面地介绍概念和市场需求,加上iOS 11.3才开始支持Service Worker,那时候自己也没有安卓手机,所以就没有进行编码实践。今年做完毕设后有一段业务空挡期,就开始重拾 Service Worker,将自己的博客作为小白鼠进行PWA改造,结合 Cache API 给博客加入了 Background Sync, Navigation Preload,并在还在重构中的SPA博客加入了 Workbox,更方便管理不同路由的缓存策略。因为自己使用 Node.js 开发新版博客后台,顺利加上了 Push/Notification API 消息通知。关于SW的团队分享会在元旦假期结束后进行,先上PPT:Service Worker 101

阅读

可能是自己还是太过浮躁不够沉稳吧,今年看的书籍以专业技术类为主,包括:

  • D3.js数据可视化实战手册 Cookbook类型,API书
  • Three.js开发指南 Cookbook类型,API书
  • WebGL编程指南 比较完全面的 WebGL 编程教程,理论和编码结合,但是对 GLSL Shader 的介绍比较少,可视化开发必看
  • 数据之美 数据可视化方向的科普书,很多精美的例子,也总结了比较多可视化数据管理、视觉设计原则,值得一读

  • CSS世界 张鑫旭大神的作品,用生动的例子讲明白了 CSS 布局、盒模型和其他比较容易混淆的 CSS 知识点,前端必看啊!!

  • 白帽子讲Web安全 Web 安全方向的科普书籍,很详细地介绍了 XSS, CSRF, 页面劫持和 SQL 注入等网络安全比较常见的漏洞原理和解决方法

  • Python自然语言处理 结合 NLTK 的用法,浅入浅出介绍了自然语言处理的流程及每一个步骤的技术

  • 数学之美 来自《浪潮之巅》作者,结合自然语言处理介绍了很多优雅的数学模型和搜索领域的背后原理,必看

生活 Movie/Musical/Concert

此处开始激情发言


💗搬到了新的住处,有了自己的小窝


🎓今年生命里最大的改变就是,终于本科毕业啦~参加毕业晚宴


💑校招培训去到总部封闭式培训半个月,与小组成员相见恨晚,并且认识了现在的男票,到现在在一起已经四个多月啦(˶‾᷄ ⁻̫ ‾᷅˵)


🎂参与筹备了两次基地的生日会


💅去了长隆海洋王国和香港迪士尼少女心了一把

Movie

电影从高中开始就是最大的爱好了,平均每年都会刷100+部。然而今年经历过毕设和转正后,本社(she)会(chu)人可用刷片时间大大减少,一整年只看了72部片,大部分还是商业片,加上已经不是学生签了,没办法去澳门影展刷颁奖季片……这里列一下今年的个人十佳吧~(排名不分先后)

最意难平的非妇联3莫属了哎

Concert


4月中旬杰伦终于来珠海了,喜欢了他整整八年,那时候还是个穷学生的我省吃俭用了一个月买了内场票,周周的现场真让人此生无憾啊。听他的歌就像重新活了一次高中生活,所有的酸甜苦辣都在一首轨迹里涌上心头。而且现场超级嗨!粉海超级震撼!!!


10月国庆的珠海沙滩音乐节也要拥有姓名!见到了毛毛和草东完全值回票价~

Musical

从高中看了大悲的电影版后就一直在音乐剧的坑边沿徘徊,陆陆续续看了悲惨世界25周年官摄、歌剧魅影25周年官摄、西贡小姐25周年官摄,Musical的电影也都会刷,例如雨中曲、爱乐之城、马戏之王、红磨坊、妈妈咪呀和芝加哥。自从12月中旬跟朋友去广州看完 Chicago 后回来找 Hamilton 的现场视频,我当场就入坑TAT 实在是太燃了,希望自己有生之年能到百老汇看一次 Hamilton【即使不是原卡也行啊呜呜呜;前两天法扎一刷过后就开始准备一月底去广州看现场法扎的门票了嘻嘻嘻~

哈啰2019

辞旧迎新,又到了一年一度给自己立 FLAG 的时候了。

  • 🚩 继续深入研究 WebGL 和 GLSL Shader 的用法和原理,在3D可视化领域中有所突破
  • 🚩 一定要重拾 Leetcode!!坚持看完《编程珠玑》!!作为一名软件工程师,算法不能丢!!!
  • 🚩 每周至少跑步5公里,不为减肥,只为有个强壮的身体继续搬砖💪
  • 🚩 旅游目的地:成都/台北
  • 🚩 每天都要学点新知识;每个月坚持至少一篇博客,所学所用的知识要有输出
  • 🚩 继续缵钱,学会理财,争取上半年全款买下属于自己的MBP💻
  • 🚩 学做饭喂得男票白白胖胖的ლ(´ڡ`ლ)

虽然横冲直撞的18年早已忘记17年给自己定下什么目标,但是回顾过去这365天,看到更多的是自己的成长,也感恩一年里所有给过我帮助的家人、朋友、同学、老师、同事。一段时光的结束狂欢很易,对身边的每一个人,愿都可以与你们 cleaning up bottles on New Year’s Day.