单元测试中的 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,用户可以直接在线使用。

    ……

    记一次我所遭遇的「东德错误」

    「东德错误」最早可能是知乎上某人提出的,指东德在利用西德经济危机进行政治宣传时,多次使用西德失业者排队领取救济面包的照片,然而没想到的是东德人看到西德失业者的穿戴这么好‌‌‌‌‌‌‌‌‌‌,从而产生了心不平衡理,导致宣传起到了反作用。也就是大家通常所说的「官方评论区翻车」现象。

    优化托管在 DigitalOcean 的 Mastodon

    DigitalOcean 的 Marketplace 提供 Mastodon 的 Droplet。使用基础配置的服务器,每月费用为 6 美元。但是使用 Ruby 开发的 Mastodon 是吃内存的大户,基础配置的 1G 内存根本不够用,需要手动优化才能正常访问网站。

    ……

    布兰诗歌

    《布兰诗歌》,创作时间由于11世纪至13世纪不等,集合不同年代的神职人员的内容,再经过不同人所抄录后所聚集而成的作品。诗集包含了超过240首由11和12世纪的诗歌和戏剧所组成,部分配有旋律,大部分为情歌、祝酒歌以及宗教歌剧。大部分以中世纪拉丁语写成,亦有中古高地德语及古法语的篇章。

    AGM-45 Shrike 为何翻译为「百舌鸟」

    AGM-45 是美国在越战时期开发的一款反辐射导弹,绰号 Shrike,中文翻译为「百舌鸟」。但奇怪的是,Shrike 应该是伯劳科的伯劳鸟,而「百舌鸟」一般是指鸫科的乌鸫鸟

    无独有偶,另外一款武器名字的翻译也有相同的乌龙。德国二战时的战斗机 Focke-Wulf Fw 190,它的绰号 Würger 在德语里也是伯劳鸟的意思,然而中文也同样被错误地翻译为「百舌鸟」。

    ……

      三十六种剧情套路和英雄故事模式

      本文根据维基百科词条三十六剧英雄旅程汇总而成

      ……

      肖斯塔科维奇的第二号圆舞曲

      第二号圆舞曲(Waltz II)是肖斯塔科维奇最广为人知的作品之一,它被库布里克用在电影《大开眼界》中,电影在这首曲子中开始,也在这首曲子中结束。该曲是肖斯塔科维奇的第 99 号作品(Op. 99),是为电影《第一梯队》所作的配乐,创作年代大约是 1955 至 1956 年间。但是这首曲子被很多人误以为是出自于肖斯塔科维奇完成于 1938 年的《第2号爵士乐团组曲》(Suite for Jazz Orchestra No. 2)。

      事实上,《第2号爵士乐团组曲》的原稿早在苏德战争中便佚失了。直到 1999 年,某个演出版的残稿才被人(Manashir Yakubov)重新发现。翌年,这部失落半个多世纪的作品被 Gerard McBurney 重新编曲后,才再一次面向公众演出。原来的作品分为三个乐章,分别是:

      ……

      一条百度百科词条的净化

      在百度百科上有一条名为「平阳白沙起义」的词条:

      2022年8月16日的快照

      2022年8月16日的快照

      而通过 Google 网页快照,可以看到该词条在 5 月份时的模样:

      ……