重写 500 Lines or Less 项目 - Contingent

概述

本文章是 重写 500 Lines or Less 系列的其中一篇,目标是重写 500 Lines or Less 系列的原有项目:Contingent: A Fully Dynamic Build System

在原文中,作者(Brandon Rhodes & Daniel Rocco)首先介绍了面向文档的构建系统(以 Sphinx 为例)面临的问题:它们有时做得太多(即便相关内容并未发生变化,也仍然执行了构建),有时却太少(没有发现本应包含的内容变更,因此内容未能得到及时更新)。然后他编写了一个自己的构建系统来解决以上问题。

在阅读原文时,我首先遇到的一个问题是:尽管作者详细说明了问题出现的场景,但该示例相关的文件并未包含在代码库中,想要自己去复现的话,就不得不手写这些文件。虽然示例文件很简单,不过许多人(包括笔者在内)可能并不是特别熟悉 ReStructuredText 标记格式,因此这个工作还是需要一些额外的努力的。为此,我根据原文的描述自己创建了 Sphinx 项目及相关文件,和代码放在一起,有需要的同学可以参考。

2021 新年寄语

对于很多人来说,过去的 2020 恐怕都是充满困难与混乱的一个年头。最大的黑天鹅当然是蔓延全球的新冠病毒,不论全世界任何一个角落的国家或民族,都难以独善全身。各种各样的地缘政治冲突也纷纷不绝,甚至出现了局部规模的战争。好消息是到了年尾,多国的疫苗已经基本到达可用阶段,RECP 和中欧贸易协定也已商定(尽管尚未正式签订)。在已经听够了各种坏消息之后,我们总算可以对未来多一点美好的期望了。

重写 500 Lines or Less 项目 - A Simple Object Model

概述

本文章是 重写 500 Lines or Less 系列项目其中一篇,目标是重写 500 Lines or Less 系列的原有项目:A Simple Object Model。在阅读原文时,我发现一个问题:作者设计的代码其实是非常合理的,问题在于他直接给出了几乎是最终版的类层次结构,首次阅读的用户来说很可能会对为什么要这样设计感到疑惑。我也是在自己从头完整地实现一遍之后,才算是比较清楚地理解到作者的设计意图。因此,本次重写主要在以下几个方面做出改变:

如何检测程序运行在虚拟机中?

如何检测程序运行在虚拟机中?

最近在网络上看到有人提出一个有趣的问题:程序能否知道自己是在虚拟机中运行的?如果能,是怎么做到的?

之前并没有深入考虑过这个问题,不过我知道这确实是可能的。比如说,国内比较有知名度的深度操作系统在安装时就会检查自己所在的运行环境,如果发现是从虚拟机运行的,就会主动关闭一些比较消耗资源的动画与特效。

内容丰富的命题作文 - 《Visual Studio Code 权威指南》书评

内容丰富的命题作文 - 《Visual Studio Code 权威指南》书评

Visual Studio Code 是微软推出的、主要面向程序员的新一代编辑器,在某些轻量级场景下已经可以替代专业的 IDE 产品(尽管从本质上说它仍然是编辑器)。其实它出现也已经有好几年了,但一直以来除了官方文档之外,缺乏其他系统性的学习资料。当然也不是完全没有,比如:

现在,由微软中国的工程师韩骏编写的《Visual Studio Code 权威指南》出版了,也算是填补了该主题在中文领域的一项空白。

重写 500 Lines or Less 项目 - Static Analysis

概述

本文章是 重写 500 Lines or Less 系列项目其中一篇,目标是重写 500 Lines or Less 系列的原有项目:静态分析/Static Analysis。原文章代码是基于 Julia 这种新型的编程语言,主要分析目标是该语言中比较被强调的一个特性:多重分派(multiple dispatch)。考虑到 Julia 语言并不是特别普及,同时多重分派在其他语言中也并非常见特性(也有与之相近的概念),可能大部分读者对它会比较陌生,影响对于原文的理解。因此,本文选择基于主流、同时也比较便于学习和理解的 Python 来演示静态分析的原理和过程,不再按照原文的体例。