Rust的模块系统初探

学习一门编程语言,知道如何引用外部的文件或者说模块系统是比较重要的一点,PHP用`autoload`机制,C有经典的`include`。最近写 [wslexe](https://github.com/jswh/wslexe) 的时候,因为原作者用的 rust,所以就简单学习了一下。但是 rust 的模块文档是从顶部设计开始写的,很多概念,有些复杂,这里写一个应用导向的学习笔记。

Continue Reading

0x00 序

2014年毕业,按照毕业算工作年限是四年,如果是2014年初的实习开始,就快五年了。五年来,从一无所知的小白到现在前端后端都能写,虽然自认业务能力充足,但很多时候还是带点心虚。
有的时候不得不承认,不是科班出生的,总归是要比别人慢一点。当别人已经开始学习大数据、AI、区块链的时候,我还在补数据结构、操作系统、编译原理,还补得磕磕绊绊。五年了,因为没有系统的检验,即使学了,还是不明白自己究竟有几斤几两。对事物的控制欲望让我想知道方方面面的细节,否则我就不放心。对于自身也是一样。虽然我知道面对寻常的后端开发工作,90%以上的工作都可以胜任,但只有在问题出现的时候才能判断这件事是否在这90%之中,让我非常的焦虑。这种焦虑,有点像以前做数学考卷的时候,知道某个题是用什么知识点来解的,但能不能解出来,还得算来看看——本质上是知识没有条理性。

Continue Reading

[0x00] 当我们在编程时我们在做什么

先让我们把计算机想象成一个人吧。一个人总要有个名字,就叫他小明吧。

小明可以帮我们做一些事情,比如说算一下 256 乘以 1024 等于多少。这种问题对我们自己来说,按照乘法规则算一下也能算,就是麻烦,可是对小明来说算起来可很简单,这是小明擅长的领域。不过这个小明并不能理解你所说的“256 乘以 1024 等于多少”这句话。因为小明是一个外国人,他只说自己的语言。就像你和一个图瓦卢的人说“告诉我 256 乘以 1024 等于多少”,我想他也会一脸莫名奇妙。小明也是这样,不能理解你的意思。我们只能用小明的语言来告诉他要做什么。

Continue Reading

死亡

有一个画面在脑中如金属上的刻痕一般深刻:夏蝉鸣得人心烦躁,炙烤下的水泥地面腾起看不见的雾气扭曲了视线,瘦弱的男孩半黑不白,穿装背心短裤,从二楼的窗户探出大半个身子凝望着地面。如果从这里跳下去,是不是就死了?这可能是我第一次,对死亡这件事产生思考。

Continue Reading

最好的 Linux 发行版

Linux 作为一个操作系统,在服务器领域尤其是 web 服务器来说,一直是一个很好的选择,相对于 Windows server 高额的授权费用,免费开源的 Linux 更受个人和有开发能力的公司的青睐。甚至在市场份额上,还略微高于 Windows Server。但在桌面端,似乎一直是 geek 的玩物,哪怕是 web 开发,有钱的直接上 MacOS,没钱的想方设法组黑苹果。除了驱动不完善之外(现在情况已经大大改善了),最主要的还是 Linux 的桌面端应用相比其他两个操作系统生态来说,还是太少太少。一些仅有的软件,对比之下质量也只是勉强可用的地步。

但是,作为一个web开发者,不熟悉 Linux 系统,可以说是一个重大的技能缺陷。因为不论你怎么躲,都躲不开 Linux 系统的使用。哪怕你用的的 .Net,难道你就不看看 .Net core 了嘛。诚然,我们日常使用中并不会使用到太多的功能。即使常用如看日志,实在不行就拉到本地来看嘛。但如果会用 head、tail、less、grep,那基本的查询分分钟搞定,再如果会用 sed、awk,简单的日志统计也是不在话下。

Continue Reading