VirtualBox 命令行管理工具——VBoxManage

VBoxManage 是 Oracle VM VirtualBox 的命令行管理工具。在 Windows 系统中,软件默认安装在 C:\Program Files\Oracle\VirtualBox 目录下。运行该命令前,可以将命令行的当前路径切换到软件安装路径:

……

    一道初中奥数题的蒙特卡洛解法
    四只鸭子在一个圆形水池中随机游动。某一时刻,四只鸭子在同一半圆内的概率是多少?

    四只鸭子在一个圆形水池中随机游动。某一时刻,四只鸭子在同一半圆内的概率是多少?

    这个问题必须隐含一个前提:当水池被分为两半后,任意一只鸭子,要么属于这一边,要么属于另一边,不存在同时属于两边或不属于任何一边的情况。可以把鸭子视作质点,如果鸭子正好落在分割线上,则认为此鸭子属于顺时针方向的一侧。

    ……

    为 Hugo 静态网站添加全文检索功能

    Hugo 是一种使用 Go 语言编写的静态网站构建工具。在其官网文章《Search for your Hugo Website》中,介绍几种为静态网站添加全文检索功能的方法。本文采用 Pagefind 为纯静态网站实现全文检索功能。

    Pagefind 是一个独立的命令行工具,可以通过 npm install pagefind 来安装。其原理是:运行 Pagefind 命令,扫描所有静态网页并生成索引;用户搜索时,通过网页中内嵌的 JavaScript 脚本来访问预先生成的索引,从而实现静态全文检索。

    ……

    隐藏 Mastodon 站点信息和用户嘟文列表

    Mastodon 实例默认会在网页版中显示站点的用户数量和嘟文数量。此外,用户主页上会显示所有公开的嘟文。但是对于自建实例,有时候你并不想让别人可以通过网页来访问这些信息和数据。本文以 Mastodon v3.1.3 为例,通过修改代码来实现隐藏目的。本文提供的方法未在其他版本上验证,可能会不兼容。

    ……

    佚名创作者许可

    很多人希望自己发布在个人社交网络空间或者其他小圈子的内容不要被署名转发至他处。换句话说,作者不介意别人转发、修改或再次创作自己的作品,但是不希望再次发布的时候携带原作者的信息以及原始内容的出处,比如用户不希望自己发表的内容被别人以完整截图的形式转发。因此,我模仿 BSD License 的内容,起草了一份「佚名创作者许可 v1.0」,简称 AC 许可,全文如下:

    ……

    JavaScript 的原型继承
    一张经常被使用的关系图

    一张经常被使用的关系图

    JavaScript 中的每个对象都有一个 [[Prototype]] 的内部属性,该属性指向的对象就是当前对象的原型。每个原型对象也有自己的原型,依次向上遍历形成原型链。当我们访问一个对象的属性或者方法时,如果在当前对象中没有找到该属性或者方法,会通过原型链依次从原型对象中查找,从而实现对象继承的功能。我们可以通过 __proto__ 属性或者 Object.getPrototypeOf() / Object.setPrototypeOf()方法来访问对象的原型:

    ……

    网络乌合之众

    起因是某天在网上看到如下视频:

    视频下面的评论自然是一边倒地谴责打人的男孩和教唆打人的家长,也有指责看客冷漠,还有人发动群众要对男孩进行网暴,甚至发出死亡威胁的。

    大部分人通过这个视频,会脑补出一部「野蛮家长霸凌孤儿寡母,冷漠看客袖手旁观」的苦情剧。然后键盘看客们按耐不住的「正义感」就喷薄而出,大有致「施暴者」于死地而后快的势头。但是只要认真看完视频可以发现,那个所谓的「施暴者」男孩并不太会打架,甚至动作有些胆怯,再结合视频开头男孩的父亲拉开男孩衣领,对周围人说的那句「都给我们抓破了」,我们还能脑补出另外一个故事:打人的男孩之前被女人怀里的那个孩子欺负了,他的父亲和女人理论,女人非但不道歉,还说:「小孩子打架又没啥关系」之类的话激怒了男孩的父亲。气急败坏的父亲心里肯定想:「你不是小孩子打架没关系么,那我就让我家孩子揍你家娃」,于是就发生了视频中的那一幕。

    ……

    单元测试中的 Dummy、Stub、Spy、Fake 和 Mock

    单元测试用来验证一个单元(模块、函数或类)的工作是否正常,测试过程通常需要其他单元进行配合。这种情况下,我们引入测试替身(Test doubles)来替代测试单元的外部依赖,使得测试单元能够顺利运行。这些测试替身分为五种,分别是:

    ……

      Python 的 MRO 和 C3 线性化

      MRO,即 Method Resolution Order、方法解析顺序,是 Python 对象调用父类方法时的遍历顺序。由于 Python 支持多重继承,类的继承关系可视作一个有向无环图,方法解析顺序就相当于拓扑排序——将图中节点线性排列。自 Python 2.3 起,新式类通过 C3 线性化算法来计算 MRO。

      之所以被称作 C3,是因为算法符合如下三个特性(Consistent with 3 properties):

      ……

      使用 MT3 模型识别音频乐谱

      今年初的时候,网上有一篇标题为《谷歌推出全能扒谱 AI:只要听一遍歌曲,钢琴小提琴的乐谱全有了》的报道。其实文中提到的 MT3 项目并非是 Google 官方推出的,只是使用了 Google 的 T5X 训练框架而已。MT3 在 Google Colab 上提供了一个 Notebook,用户可以直接在线使用。

      ……