关于 2017 年个人博客点滴的年终总结

提纲

以下按掌握顺序倒叙整理(即博客浏览顺序),也是博客内容的一个大致归类

  • React
  • node&npm
  • javascript
  • 浏览器缓存
  • mysql
  • 网络基础
  • maven
  • linux
  • 虚拟机
  • tensorflow
  • 设计模式
  • 区块链
  • webpack
  • API
  • markdown
  • git
  • 负载均衡&反向代理
  • java
  • python
  • es6

以上条目一眼望去有些多,也显得很杂。整体上学习轨迹从后端向前端转移,知识虽杂,但定位于“宽度优先”的学习计划,其实“面儿宽”其实是为了能够对于整个计算机行业技术栈融会贯通,相互影响,以窥全貌。

接下来将逐一按照上述提纲盘点 2017 年的 58 篇博客总结

详述

React

对于 React 的学习介于前端方面的需求,React 目前是前端主流框架之一,因其“小模块组成大应用”的思想,广为大多数公司使用,成为前端开发的必备技能之一。

关于 React 的学习共整理两篇——安装篇和快速上手篇,源于学习 React 官网时的学习总结(基本上是对 React 官方教程做了一遍个人翻译),初步掌握 React 主要思想和上手方法,后续将尝试使用 React 进行项目实际开发,并学习另外主流前端框架以做对比,比如 Vue、Angular 等。

node&npm

npm 相比 node 只能算的上工具,而非技术,但如今介于软件工程的“复用”思想和实际生产的快速迭代要求,“用轮子”的思想是职场必备技能,技术固然可以深入研究,但生产最关注的是产出,在这样的背景下,npm 这样的“大社区”为众多前端开发者提供了便利而有力(powerful)的帮助。

讲到 node,便会提到“全栈”这样的字眼,node 的诞生意味着 javascript 这样的脚本语言可以挑战“沉重”的 java 而成为 web 开发主要语言成为可能。然而 Node 的威力却不仅仅如此,关于 node 生态的学习才刚刚开始,而它的出现及魅力竟足以让我学习 java 转而投奔 node 大家族的怀抱。

javascript

这是一门易懂难精的语言,也是一门未来的语言(因为 Node 的出现),在学习的过程中,一句 MDN 的话印象很深刻“它是一门松散的语言,同时也因为其松散而长期被认为是上不了台面的语言,但如今它却有可能因为其松散的特性而变得十分强大”。尤其是伴随着 2015 发布的 ES6 的出现,其实是对 javascript 的“松散”打了“补丁”,简单来说,就是曾经的 js 的确有很多方面的缺陷而很难成为值得人信赖的 web 开发语言,但是 ES 出现的块级域、类概念使得其仅有的缺点从此结束,继而变得优秀。

浏览器缓存

缓存技术是前端性能中的关键技术点,软件的实现是第一步,而从软件使用体验的角度,“性能问题”不可忽视,尤其是如今网络应用的访问流量越来越大,高并发的场景随处可见(微博被鹿晗搞炸)。所以相比十年前,五年前的 web 仅仅需要完成内容展示即可,如今的 web 更强调“用户体验”。

mysql

这是后端技术栈的核心部分,不过前端也需要懂些数据库知识,因为毕竟内容的展示依赖数据的流转,而且如今的 chrome 浏览器也会有 websql、localstorage 这样的技术存在,所以互联网行业内几乎没有什么可以单独讨论而与其他技术无关联的技术。

网络基础

网络传输相当于 web 的“硬件”载体,因为 web 只是软件,说白了就是指令集合,而 web 被人们所使用,总要基于网络的传输,无论是通过浏览器还是本地客户端,如果没有网络知识的 web 应用就像是一个没有血肉的骨架

maven

这可以算是纯后端的技术,maven 相当于前端中的 NPM,之所以写 maven 相关的总结,是因为工作需要。工作中要对父子工程进行重构,涉及到父子工程的包依赖问题,遂整理此文以对其原理有更深入的理解,从而不止是简单地做一枚“搬运工”。

linux

这个技术算不上前端,也算不上后端,因为它是系统级的技术,作为一名开发工作者,相比离不开与服务器打交道,从而对于 linux 的学习以不至于面对服务器操作时显得手忙脚乱,因为长期的 Windows 用户级系统的使用。

虚拟机

对于虚拟机的折腾主要是为了在本地搭建 linux 环境及熟悉 MacOS 的使用,都算是工具级别的学习,没什么含量。

tensorflow

2017 年是人工智能火热的一年,作为技术爱好者,难以仅拘泥于工作所用技术,本着天下技术是一家的想法,新东西也想摸摸,指不定就是未来的主流,对于新技术保持敏锐的嗅觉,总比永远比时代慢一拍要强。

设计模式

这个东西我原本认为属于后端技术栈,但学习以后(阅读《大话设计模式》一书),觉得设计模式其实就是生活,就是生活中总结出的规律,以避免做重复的事情或是低效的事情。设计模式就是编程中的模板,俗话讲的“套路”,编程诞生这么多年,如此之多的优秀 coder 写了无数代码后整理出的一套经久可用的“代码块”,或说代码结构,对于提高编程效率和编程思想有着很大的帮助。

区块链

和 tensorflow 一样,这也算是一门很潮的“骚”技术,为了不食剩食,永远不被新技术碾压,学习技术之余,对于这门可能改变未来的技术也有所涉猎,翻译了一篇国外关于区块链研究很早(2011 年),但今天开来仍旧参考价值相当之大的文章,目前翻译尚未完成,应该完成了近 2/5 的进度。

webpack

这同样是一项工具技术,相当于后端中的 jar,或者 Jenkins,我不知道该如何准确地形容它,总之它是一个打包器,但是为什么需要打包器,因为随着前端技术的发展,前端代码的规模量也变得不少于后端代码,而数量大,就需要软件工程式的科学化的整理方式,而将不同的代码块按照特定分类,打成不同的包,即一个个模块,这样一来,整个前端方面的代码的可维护性和可复用性便会得到质的飞跃。

API

这是前端和后端的枢纽,优秀的 API 设计需要丰富的软件整体性思想和远见,良好的 API 设计可以使得后续开发变得高效可控,所以 API 设计其实是合理的软件开发的第一步。

markdown

这门标记语言,其实也称不上一门语言,因为它并不用来编程,而只是一种用于排版和呈现内容的低门槛 HTML,由于建立个人博客而结识这个遍历的工具,作为新一代文本格式,它使得良好可观的排版可以简单快速地生成。

git

这既是一门版本管理艺术的技术,又是一项近乎必备的团队协作工具,因其优异于 SVN 的设计理念,而成为新一代无可匹敌的版本管理工具,同时与其完美配合的最大开源社区 github 是众多开源爱好开发者思维碰撞的乌托邦

负载均衡&反向代理

一开始认为这仅仅属于后端技术,但现在这应该分类于 web 技术,因为前端开发并不应该“两耳不闻后端事,一心只习前端术”,而应该站在整个 web 生态的角度,纵观互联网应用的整个生命。尤其是伴随着 node 的出现,可能带来的一门语言贯穿 web,而不分前后端、只有全栈的可能。

java

这是我入门编程在学院习得的技术,也是我打开 web 世界的入口。何况作为如今难逃整个国内仍使用它作为后端基石的现状,毕竟 node 还尚未撼动其成为主流,鉴于对于 web 历史的尊重,掌握 java 也是理解其他语言的前置条件之一。

python

这本是我区别于 java 准备主修的第二门语言,但鉴于 javascript 的持续火热和前端在国内快速地发展,它便成为我业余编程作为工具的备用语言,我在 Coursera 完成了 python 一个学期的学习,并以满分获得在线认证证书,也算是作为 python 学习的一次考核。

es6

这其实应该算是前端开发的核心技术,如果说在 2017 年,它还算是一门新技术的话,那么站在 2018 年再看,它其实已经广泛应用于众多前端开发之中,因为有类似 Babel 这样的东西的存在,es6 投入生产的使用变得不再难以接受。

总结

纵观 2017 年的学习,不多不少,完成了从后端转为前端的技术栈学习。2018 年的计划将是对于某几个前端核心技术进行更加深度地学习,对于前端的技术栈进行更进一步的完善和更多的实践。

To be learned Items:

  • Vue
  • angular
  • es6
  • html5&css3