开源项目: Resolution Switcher

在最近的项目中,我们计划支持两种不同屏幕的机器:1920 * 1080 横屏(很常见),以及 1600 * 1200 竖屏(比较罕见)。遗憾的是,我手头并没有一台真正的测试机,尽管笔记本可以同时支持两种分辨率,但调试时要去系统设置里反复切换分辨率还是很烦人的。因此,我决定自己写个工具来帮助自己。现在已经有了一个可用的版本,开源到 Github: Resolution Switcher

在开始动手之前,我也简单搜索了一下其他人是否写过类似的程序。在 Github 上发现了一个: Quick Change Resolution ,有趣的一点:它的开发平台是 Delphi

DNF 基金会正在开源社区中面临信任危机

DNF 基金会正在开源社区中面临信任危机

最近,负责掌管 .NET 社区的开源基金会(DotNetFoundation,以下简称 DNF)接连发生了几件有争议的事情,由此引起许多开源爱好者对于该基金会、以及其背后的微软产生了普遍的负面看法。这些事件或许暴露出了微软在开源路线上的一些潜在的问题。

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

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

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

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

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