本文是 Writing an OS in Rust (Second Edition)第三篇文章VGA Text Mode 的阅读笔记,同时对文章中我觉得不太明白的一些内容做了一些扩展。
作者: jswh
-
0x00 序
2014年毕业,按照毕业算工作年限是四年,如果是2014年初的实习开始,就快五年了。五年来,从一无所知的小白到现在前端后端都能写,虽然自认业务能力充足,但很多时候还是带点心虚。 有的时候不得不承认,不是科班出生的,总归是要比别人慢一点。当别人已经开始学习大数据、AI、区块链的时候,我还在补数据结构、操作系统、编译原理,还补得磕磕绊绊。五年了,因为没有系统的检验,即使学了,还是不明白自己究竟有几斤几两。对事物的控制欲望让我想知道方方面面的细节,否则我就不放心。对于自身也是一样。虽然我知道面对寻常的后端开发工作,90%以上的工作都可以胜任,但只有在问题出现的时候才能判断这件事是否在这90%之中,让我非常的焦虑。这种焦虑,有点像以前做数学考卷的时候,知道某个题是用什么知识点来解的,但能不能解出来,还得算来看看——本质上是知识没有条理性。
-
[0x00] 当我们在编程时我们在做什么
先让我们把计算机想象成一个人吧。一个人总要有个名字,就叫他小明吧。
小明可以帮我们做一些事情,比如说算一下 256 乘以 1024 等于多少。这种问题对我们自己来说,按照乘法规则算一下也能算,就是麻烦,可是对小明来说算起来可很简单,这是小明擅长的领域。不过这个小明并不能理解你所说的“256 乘以 1024 等于多少”这句话。因为小明是一个外国人,他只说自己的语言。就像你和一个图瓦卢的人说“告诉我 256 乘以 1024 等于多少”,我想他也会一脸莫名奇妙。小明也是这样,不能理解你的意思。我们只能用小明的语言来告诉他要做什么。
-
最好的 Linux 发行版
Linux 作为一个操作系统,在服务器领域尤其是 web 服务器来说,一直是一个很好的选择,相对于 Windows server 高额的授权费用,免费开源的 Linux 更受个人和有开发能力的公司的青睐。甚至在市场份额上,还略微高于 Windows Server。但在桌面端,似乎一直是 geek 的玩物,哪怕是 web 开发,有钱的直接上 MacOS,没钱的想方设法组黑苹果。除了驱动不完善之外(现在情况已经大大改善了),最主要的还是 Linux 的桌面端应用相比其他两个操作系统生态来说,还是太少太少。一些仅有的软件,对比之下质量也只是勉强可用的地步。
但是,作为一个web开发者,不熟悉 Linux 系统,可以说是一个重大的技能缺陷。因为不论你怎么躲,都躲不开 Linux 系统的使用。哪怕你用的的 .Net,难道你就不看看 .Net core 了嘛。诚然,我们日常使用中并不会使用到太多的功能。即使常用如看日志,实在不行就拉到本地来看嘛。但如果会用 head、tail、less、grep,那基本的查询分分钟搞定,再如果会用 sed、awk,简单的日志统计也是不在话下。
-
中数据分析
same 在前段时间更新了数据的展示形式,数据流的方式意味着决策上将要更多地向个性化的方向发展。说到个性化,那就意味着大量的用户行为数据的收集和处理,意味着原先用 MySQL 还能支撑的统计分析将不再适用。因此,开始考虑需要一套大数据处理的工具。说到大数据,一般都会自然得想到 Hadoop 系的一系列工具,从计算引擎,到存储系统,再到查询工具。Hadoop 的这一整套东西,很好很强大,但也意味着架构的复杂。
作为一个之前没有接触过任何 Hadoop 系统地超新手,我们艰难得尝试了几天,最终还是选择了放弃。放弃的原因,除了复杂度之外,更是因为一种杀鸡用牛刀的感觉。即使是全量的记录 same 的访问日志,每天也不过数 GB,这样的数据量,要直接上动辄十数台机器(hdfs + Hadoop + 控制节点)的集群着实有些奢侈(费用和维护成本)。而且,公司里也基本没有对 Hadoop 体系熟悉的人,后续的知识传承也很成问题。放弃了 Hadoop,就要重新寻找这样一种简单又可扩展的替代品:架构简单,用少数机器甚至单机即可组建;快速的扩展能力,来应对后续可能的数据增长。
-
我
从14年一月份进入百姓网开始全职实习算起,参加工作也三年又两个月了。去年后半年从百姓网离职,来到 same,希望能为我喜欢的产品出一点力。但是六个月过去,虽然 same 给了很高的自由度,也没有太大的作为。除了产品上的问题之外,可能还是作为技术人的能力并不如自己所想的那样,已经到了可以做出哪怕些微的创新的地步。所以最近的两三个月一直都在感到焦虑,重新感到了工作之初时那种觉得自己什么都不会的感觉。不过区别是,彼时觉得自己是萌新,学习能力有自信,那种认为自己什么都不会的感觉可是强大的学习动力。而此时则是短暂的膨胀期之后的幡然醒悟,是一种失落。
我很喜欢编程。准确的说,我喜欢所有和创造有关的事物,讨厌重复劳动。可惜本身手残,小时候也没有条件去接受艺术的熏陶。好在,有编程这个纯粹脑力的创造活动。怀着一腔热爱进入这个行业,但从一开始工作,就对自己的非科班出身的经历耿耿于怀,总觉得心里很慌。可真的去尝试学习的时候,则感觉那些东西在工作中真的很难用到,理解一些基本概念后就不怎么愿意花时间去做练习巩固,然后心里依然很慌。
-
一个博客的诞生
题目有些标题党了,其实只是想聊一下自己的用的博客程序,因为有人留言说博客打开很快。老实说,这东西其实够不上“程序”,因为只是两三个脚本配合着一些现成的工具,做了一键部署罢了。
我对用 gh-pages 做博客一直有一点怨念,觉得 Hexo 之类的都太麻烦:先要安装执行环境,然后安装生成器,然后一大堆的配置文件,部署的时候还要反复的敲命令,clean、generate、deploy之类的。但是另一方面还是,还是很想用 gh-pages 做博客。除了免费速度也不错之外,最主要的还是 git 版本管理的特性,以及可以直接用自己喜欢的编辑器来编辑。各个生成器对 markdown 之类的标记语法也都支持得比较好,不用像在网页上写一样格式不断调。可能真的是到了阮一峰老师说的博客三阶段的最后一阶段了,想要的就是一个简单快捷的记录和发布文字的地方。
-
个人成长与工作
其实12点不到就睡了,但是一直睡不着,又不想写代码,担心一写又到早上了。所以还是来写写鸡汤吧。
从实习算起,参加工作也又三年了,对于工作与个人成长的关系也算是有自己的一点理解。恰好之前与人讨论了一番,感觉值得梳理一下。
首先,我觉得工作是公事而个人的成长是私事,企业有义务帮助员工适应工作环境(对于实习生来说这包括必备的工作技能),但并不对员工的个人成长负有任何责任。所以,一般培训一项是作为福利存在的。至于人才培养计划之类的,那是企业在对人力资源的成本衡量后的结果。如果引进人才的成本比较低的话,我想没有企业会花这笔钱。明确这一点之后,才明白为什么渡过了最初期的适应阶段之后会觉得自己不再长进了,因为一旦你可以胜任工作之后没有人会再催着你学了;如果出现一项你无法胜任的工作,很多时候都是安排有能力的人去做。