2023年6月

AMD 霄龙 Rome 芯片会在连续运行 1044 天后崩溃

霄龙 Rome 是基于 Zen 2 架构的第二代霄龙处理器,AMD 称,它会在连续运行 1044 天后挂起,之后你必须重置服务器才能使芯片正常运行。该芯片是 2018 年底发布的,这意味着一些客户已经遇到了问题。这个问题与处理器核心未能退出 CC6 睡眠状态有关,但 AMD 表示它无意修复该错误。解决该问题有两种,其一是在连续运行 1044 天前重启下,其二是禁用 CC6 睡眠状态。

消息来源:Tom's Hardware
老王点评:连续运行三年很长么?这对于那些比赛 uptime 时长的人来说真不是一个好消息。

AWS 正在关闭其在 GitHub 上的文档仓库

2018 年,AWS 将其文档开源发布到了 GitHub 上,但经过长时间的实验,他们决定归档其大部分文档的存储库,并把精力投入到其文档和网站上。他们原本是意图通过开放和协作来提高价值,但通过客户的反馈了解到,情况并不一定如此。大部分 AWS 文档的主要来源是在内部系统上,他们必须得手动与 GitHub 仓库保持同步,但“实际上消耗了宝贵的时间,这些时间本可以用在更直接提高文档质量的地方”。

消息来源:AWS
老王点评:同步麻烦只是原因之一,重要的是,只是一厢情愿的将文档放到 GitHub 上,希望社区来协作,可能未必有最初想象的那么美好。

一个打字错误导致了 Azure 停止服务十小时

微软 Azure DevOps 是一套应用生命周期服务,由于一个基本的代码错误,周三在巴西南部地区停止工作了大约十个小时。Azure 说明了中断的原因:一个简单的打字错误,删除了 17 个生产数据库。工程师们进行了一次代码升级,将旧的 API 调用换成了新的 API 调用。在拉取请求中出现了一个打字错误,它导致后台快照删除工作删除了整个服务器。虽然 Azure DevOps 有测试来捕捉此类问题,但错误的代码只在某些条件下运行,因此在现有的测试中没有很好地覆盖。

消息来源:The Register
老王点评:越来越集中的云服务,一旦出现一个微小的故障,可能带来的就是成片的故障蔓延。

回音

  • 在 Reddit 通过对 API 收费来 扼杀 第三方客户端后,Reddit 上的一些版块计划将在 6 月 12-14 号临时关闭版块抗议,Reddit 对此的 回应 是封杀这些版块的管理员账号。

一个快闪式的游览,介绍所有连接在一起形成开源社交网络世界的网站。

人们希望在互联网上像在现实生活中一样轻松地进行交流,并享有类似的保护,但可能具有更广泛的影响力。换句话说,人们希望能够与不在同一地理位置的一群人聊天,并仍然对谁拥有对话内容进行一定程度的控制。在当今世界,很多公司对你通过互联网发送和接收的数据拥有很多权利。大多数公司似乎认为他们有权管理你的通讯方式、你的信息覆盖范围等等。幸运的是,开源并不需要拥有你的社交生活,因此开源社交网络的开发者正在推出一款首先属于你的社交网络。

“Fediverse”(“联邦”和“宇宙”合成的词,译为“联邦宇宙”)是一组协议、服务器和用户,这些组成了可以相互通信的网络。用户可以通过这些网络交换短消息、博客文章、音乐和视频。你发布的内容是联邦式的,这意味着一旦一个网络知道了你的内容,它就可以将该内容传递给另一个网络,然后再传递给另一个网络,以此类推。

大多数平台由单个公司或组织运行,是一个唯一的数据封闭系统。与其他人分享内容的唯一方法是要求他们加入该服务。

联邦允许不同服务的用户互动,而无需为每个需要共享的资源创建一个帐户。

每个服务实例的管理员可以在存在严重问题的情况下阻止其他实例。用户也可以阻止其他用户或整个实例,以改善自己的体验。

联邦宇宙平台的例子

最近受到了很多关注的联邦宇宙平台是 Mastodon,它专注于微博客(类似于 Twitter)。然而 Mastodon 只是联邦宇宙的一个组成部分。还有更多:

  • 微博客:Mastodon、Pleroma、Misskey
  • 博客:Write.asRead.as
  • 视频托管:Peertube
  • 音频托管:Funkwhale
  • 图像托管:Pixelfed
  • 链接聚合器:Lemmy
  • 活动规划:mobilizon、gettogether.community

联邦宇宙的历史

在 2008 年,Evan Prodromou 创建了一个微博客服务,名为 identi.ca,采用了 Ostatus 协议和 status.net 服务器软件。几年后,他更改了服务协议,采用了一种名为 pump.io 的新协议。他将 Ostatus 协议发布给自由软件基金会,并导入了 GNU/social。以这种方式,联邦宇宙持续了几年。

2016 年 3 月,Eugen Rochco(Gargron)创建了 Mastodon,它使用 GNU/social,并采用了类似于流行的 Twitter 接口 Tweetdeck 的界面。这使得 Mastodon 得到一定的流行度。

联邦宇宙包括 Pixelfed、Mastodon、Misskey、Plume、Nextcloud、Castopod、Bookwyrm 等等

2018 年,一种名为 ActivityPub 的新协议被 W3C 接受为标准化协议。大多数联邦宇宙平台都采用了它。它由 Evan Prodromou、Christine Lemmer-Weber 和其他人编写,并扩展了之前的服务,提供了更好和更灵活的协议。

联邦宇宙看起来像什么?

联邦宇宙由使用 ActivityPub 协议的任何应用程序组成,因此其外观非常多样化。你可以想象,微博客平台与视频共享服务有不同的要求。

然而,进入这个伟大而未知的领域可能令人望而生畏。这里有一些我最喜欢的联合服务的屏幕截图:

Mastodon 网页客户端有简化视图和高级视图。默认的简化视图显示首页信息流的一个单列,右侧有更多选项。

Mastodon 网页客户端具有一个中央面板,用于显示你的定制网络中的活动

下面显示的高级 Web 界面有首页时间线、本地时间线、联邦时间线以及用户的个人资料。当用户第一次使用时,更易于使用的单列视图是默认的。

高级 Mastodon 界面有几列

Pixelfed 的界面专注于图像和视频的显示:

Pixelfed 的界面显示了照片的缩略图

Peertube 用于共享视频:

Peertube 的界面显示可以观看的视频缩略图

Mobilizon 是一个活动计划网站,计划与联邦宇宙集成:

Mobilizon 界面可帮助你计划活动

切换到开源社交网络

准备好开始了吗?请查看 fediverse.info ,了解有关联邦宇宙的视频解释和基于主题的方式来查找(自选的)其他用户。

请查看 fedi.tips ,获取有关如何入门、如何迁移数据和更多信息的详细指南。

Mastodon 有几个入口:

  • joinmastodon.org:Mastodon 服务器的最大列表。
  • joinfediverse.wiki:有关不同联邦宇宙服务和实例的详细信息。
  • fedi.garden:良好策划的实例列表。

如果你需要帮助决定加入哪个实例(假设你还不想自己搭建服务器),请访问 fediverse.party/en/portal/servers。

你是数据迷吗?请访问 the-federation.info 了解有关已知联邦宇宙的统计数据、监控服务以及基于数据的观察。

成为联邦一份子

联邦宇宙是使用社交媒体的一种个性化方式,可以选择一个满足你需求的群体的实例或运行自己的服务器,并使它成为你想要的样子。它避免了广告、算法和其他困扰许多社交网络的令人不愉快的问题。

如果你正在寻找比大型封闭服务更适合你需求的社区,不妨看看 Mastodon 和联邦宇宙,它们也许很适合你。成为联邦一份子吧!

你可以在联邦宇宙上找到我,用户名为 @[email protected]

(题图:MJ/65de601a-4c04-4fe7-a0b7-26076e29f512)


via: https://opensource.com/article/23/3/tour-the-fediverse

作者:Bob Murphy 选题:lkxed 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

当你坚持最简场景时,你最终会得到最简单的解决方案。

在前面的文章中,我已经解释了为什么将编程问题看作一整群丧尸来处理是错误的。我用 ZOMBIES 方法来解释为什么循序渐进地处理问题更好。

ZOMBIES 表示以下首字母缩写:

  • Z – 最简场景(Zero)
  • O – 单元素场景(One)
  • M – 多元素场景(Many or more complex)
  • B – 边界行为(Boundary behaviors)
  • I – 接口定义(Interface definition)
  • E – 处理特殊行为(Exercise exceptional behavior)
  • S – 简单场景用简单的解决方案(Simple scenarios, simple solutions)

在系列的前四篇文章中,我展示了 ZOMBIES 方法的前六个原则(LCTT译注:原文为前五个,应为笔误)。

第一篇中 实现了最简场景,它为代码提供了最简可行路径。第二篇文章中执行了 单元素场景和多元素场景上的测试。第三篇中介绍了 边界和接口。 第四篇中处理 特殊行为。在本文中,我将介绍最后一项:简单场景用简单的解决方案。

简单场景用简单的解决方案

回顾这个网购 API 的实现过程,你会发现总是有目的性地坚持考虑最简单的场景。在这个过程中,最终你会得到最简单的解决方案。

ZOMBIES 方法通过坚持简洁性来帮助你交付健壮优雅的解决方案。

胜利了吗?

似乎一切工作都结束了,一个不那么认真负责的工程师很可能会宣布胜利。但开明的工程师总是会探索得更深一点。

我一直推荐做 变异测试 mutation testing 。在圆满结束这个练习项目,开始新的征程之前,用变异测试来敲打敲打你的解决方案是明智的。况且你也不得不承认,变异很适合对付丧尸的。

你可以在开源网站 Stryker.NET 上进行变异测试。

Mutation testing

看起来有一个存活的变异体。这可不是好兆头。

这意味着什么呢?当你自认为解决方案无懈可击的时候,Stryker.NET 却表示在你的地盘上并非一切安好。

让我们来看看这个存活下来的烦人变异体:

Surviving mutant

变异测试工具将

if(total > 500.00) {

变异为:

if(total >= 500.00) {

然后运行测试,结果对于这个变化没有一个测试失败。如果业务处理代码中发生了一处变动却没有任何一个测试失败,这就意味着你遇到一个存活的变异体。

为什么要在意变异体

为什么存活的变异体是麻烦的征兆呢?因为你写的业务处理逻辑代码控制着整个系统的行为。如果业务处理逻辑改变,系统的行为也应该随之改变。而系统行为的改变应该会导致测试表示的期望被违反。如果没有期望被违反,那就说明这些期望对系统行为的描述还不够准确。这也意味着你的业务处理逻辑中存在漏洞。

要解决这个问题,你需要干掉这个存活下来的变异体。要怎么做呢?一般来说,有存活的变异体意味着有期望被遗漏了。

仔细检查代码,梳理已定义的期望,看看漏掉了什么:

  • 期望 0:新建购物框里有零个商品(这隐含了总价为 ¥0)。
  • 期望 1:向购物框添加一件商品的结果是购物框里有一件商品,如果这件商品的价格是 ¥10,那么总价为 ¥10。
  • 期望 2:向购物框添里加入一件价值 ¥10 的商品,再加入一件价值 ¥20 的商品,总价是 ¥30 。
  • 期望 3:关于从购物框移除商品的期望。
  • 期望 4:总价大于 ¥500 时打,享受九折优惠。

缺了什么呢?根据变异测试报告,你没有定义订单总价刚好为 ¥500 的销售策略。你已经定义订单总额大于 ¥500 和小于 ¥500 时的情况。

定义边界情况的期望:

[Fact]
public void Add2ItemsTotal500GrandTotal500() {
    var expectedGrandTotal = 500.00;
    var actualGrandTotal = 450;
    Assert.Equal(expectedGrandTotal, actualGrandTotal);
}

第一步先写一个假的实现让测试失败。现在共有 9 个微测试。其中 8 个通过,第 9 个失败了:

[xUnit.net 00:00:00.57] tests.UnitTest1.Add2ItemsTotal500GrandTotal500 [FAIL]
  X tests.UnitTest1.Add2ItemsTotal500GrandTotal500 [2ms]
  Error Message:
   Assert.Equal() Failure
Expected: 500
Actual: 450
[...]
Test Run Failed.
Total tests: 9
     Passed: 8
     Failed: 1
 Total time: 1.5920 Seconds

将硬编码值替换成正样例的预期代码:

[Fact]
public void Add2ItemsTotal500GrandTotal500() {
    var expectedGrandTotal = 500.00;
    Hashtable item1 = new Hashtable();
    item1.Add("0001", 400.00);
    shoppingAPI.AddItem(item1);
    Hashtable item2 = new Hashtable();
    item2.Add("0002", 100.00);
    shoppingAPI.AddItem(item2);
    var actualGrandTotal = shoppingAPI.CalculateGrandTotal(); }

共添加了两件商品,一件价值 ¥400,另一件价值 ¥100,总价是 ¥500。调用计算总价的函数,期望的总价是 ¥500。

运行,9 个测试全部通过!

Total tests: 9
     Passed: 9
     Failed: 0
 Total time: 1.0440 Seconds

现在是揭晓真相的时刻。这个新增的期望能够清理掉所有的变异体吗?运行变异测试来看看结果:

Mutation testing success

成功了!10 个变异体全都被干掉了。太棒了!现在你可以放心地发布这个 API 了。

结语

如果从这次练习中有什么收获的话,那就是 技术性拖延 skillful procrastination 这一概念的提出。这个是一个重要的概念,因为我们中的许多人往往会在客户描述完他们的问题之前,就盲目地去设想解决方案。

主动拖延

拖延对于软件工程师来说并不是一件容易的事情。我们总是急于动手写代码。我们熟悉各种设计模式、反模式、编程原则和现成的解决方案。我们总是迫不及待想将它们应用到可执行的代码中,并且倾向于一次性做大量的工作。所以在行动之前仔细考虑每个步骤是一种美德。

这个练习说明 ZOMBIES 方法能够通过一系列深思熟虑的小步骤来帮你实现解决方案。但是有一点需要特别注意,根据 Yagni 原则,这些深思熟虑常常会飞得太远,以至于最终形成一个大而全的系统。这会产生臃肿、紧密耦合的系统。

迭代式开发与增量式开发

在这次练习给我们的另一个重要收获是让我们意识到保持系统持续可用的唯一方法是采用迭代式的开发方法。你通过改造已有代码开发出整个购物 API。这种改造工作是在迭代优化解决方案的过程中不可避免的。

很多团队混淆了迭代和增量。这是两个完全不同的概念。

增量式方法是假设是你有完整清晰的需求,然后通过增量累加的方式来构建解方案。大体上来说,你一点点地构建各个部分,然后将所有的部分组装在一起。大功告成!解决方案已经准备好交付了!

相比之下,迭代式方法中,你并不很确定自己需要交付给客户的是什么。因为这个原因,你更加小心谨慎。你会小心翼翼地避免破坏能够运行的系统(也就是说系统处于稳态)。如果不得不扰动已有的平衡,你也会采取最小侵入性的方式。你专注于用尽可能小的工作量来快速完成每次得改动工作。你倾向于让系统尽快回到稳态。

这就是为什么迭代式方法在真正实现一个功能之前总是先提供一个假实现。你硬编码一系列的期望,以验证小的修改不会导致系统无法运行。然后进行必要的修改,用实际处理代码替换硬编码的值。

作为经验法则,在迭代方法中,你的目标是通过设计期望(微测试),对代码进行不断改进。每进行一次改进,你都要检验系统,以确保它处于工作状态。以这种方式不断前进,最终会达到满足所有期望的程度,并且此时代码已经被重构,没有任何存活的变异体了。

一旦达到了这种状态,你就可以相当自信地交付解决方案了。

由衷感谢 Kent BeckRon JeffriesGeePaw Hill 在我的软件工程学习道路的启发。

愿 ZOMBIES 方法在软件开发的征程上帮助到你。

(题图:MJ/ca463fc6-021b-4818-ba3d-9cd3c8736577)


via: https://opensource.com/article/21/2/simplicity

作者:Alex Bunardzic 选题:lkxed 译者:toknow-gh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这是我们所知的计算机编程的终结

纽约时报发表文章《这是我们所知的计算机编程的终结》谈到,虽然人工智能可能不会意味着编程的结束(世界仍然需要具有高级编码技能的人),但它可能标志着一种新的编程的开始 ——“一种不需要我们学习代码,而是将人类语言指令转变为软件的编程”。计算机编程从一种极客爱好变成了一种严肃职业,曾经很多人都教诲孩子们去学习编程,但编程一直在走向越来越简单的道路上。曾经焦虑孩子们不喜欢编程,与未来脱节,但现在,“等到他们找工作的时候,编码可能就像我的第一台电脑一样过时了。”

消息来源:纽约时报
老王点评:作为一个计算机专家,我也曾经希望我的孩子能喜欢编程,精通编程,但是似乎他除了喜欢游戏,并不喜欢编程。我也为此焦虑过,现在看起来大可不必,就像我并没有学会(或者说继承)我父亲精通的机电和电路一样,每个人都有自己的方向和需要掌握的技能。

世界上最受欢迎的在线编程课向人工智能寻求帮助

哈佛大学的 CS50 是一门计算机科学的入门课程,校内有数百名学生参加,网上有超过 4 万名学生参加。但即使有 100 多名现实生活中的教学助理,也很难与越来越多从不同时区登录的、具有不同知识和经验水平的学生充分接触。CS50 计划使用人工智能来评分作业、教授编码和个性化的学习提示。他们现在正在微调一个人工智能系统来标记学生的工作,并测试一个虚拟教学助理来评估和提供对学生编程的反馈。

消息来源:MSN
老王点评:结合上一条,既然人工智能可以干的更好,学生们何必再去学习普通的编程技能呢?

红帽放弃维护 LibreOffice RPM 包

红帽公司负责大部分桌面工作的显示系统团队多年来一直在 Fedora 中维护 LibreOffice 的 RPM 包。但现在他们将把更多精力投放到 Wayland、HDR 支持及工作站用户需要的一系列改进上,因此决定从未来的 RHEL 版本开始,停止把 LibreOffice 作为 RHEL 的一部分。但他们仍然会在目前支持的 RHEL 7/8/9 中维护 LibreOffice 相关的补丁。他们希望用户去使用 Flatpak 版的 LibreOffice。当然,他们也不反对任何社区用户接管这些 RPM 包的维护,并指出这是一个相当大的软件包和依赖关系块,需要大量的工作来维持。

消息来源:LWN
老王点评:作为红帽来说似乎这样的决策无可厚非,但是我怎么觉得这是红帽将用户推向 Flatpak 的一种潜意识行为呢?

修复 Arch Linux 中 “invalid or corrupted package” 错误的简单指南。

我在物理机和虚拟机中都安装有一些 Arch Linux 系统,我会在需要时访问它们。将近两个月后,当我尝试使用 sudo pacman -Syu 升级其中一个中的 Arch Linux 时,我遇到了数百个这样的错误:

Arch Linux 中无效或损坏的包错误示例

问题是当你遇到上面的错误时,你无法升级/更新你的 Arch 系统。即使你同步镜像或获得更快的镜像。所以,如果你运行 sudo pacman -Syyu,错误仍然存在。这就造成了困难,因为在修复此问题之前你无法安装任何其他软件包。

原因

当你在 Arch Linux 系统上安装或升级软件包时,pacman 会根据 archlinux-keyring 软件包中的密钥检查软件包的数字签名。此验证过程可确保你下载和安装的软件包未经修改且来自受信任的来源。

它包含用于 验证包的真实性和完整性 和 pacman 中的密钥环。archlinux-keyring 包由 Arch Linux 开发人员定期更新,以包含新的可信密钥并撤销任何泄露的密钥。

如果你的 Arch Linux 系统很长时间没有更新,那么各种包的数字签名可能会不匹配。更改后的密钥可能与你系统中的密钥不匹配。

因此出现错误了。

修复

要修复 Arch Linux 中的 “invalid or corrupted package (PGP signature)” 错误,你需要从 Core 仓库安装/更新 archlinux-keyring 包。从终端运行以下命令:

sudo pacman -S archlinux-keyring

上述命令完成后,运行升级:

sudo pacman -Syu

这将解决问题,你可以在 Arch Linux 中继续你的正常活动。建议始终保持 archlinux-keyring 包为最新,以维护 Arch Linux 系统的安全性和完整性。

(题图:MJ/7ed6d549-93c6-463d-823e-3a8c3957790f)


via: https://www.debugpoint.com/invalid-corrupted-package-arch/

作者:Arindam 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

美国空军否认人工智能无人机杀死其操作员

昨天,几家新闻媒体报道了一个现已撤稿的故事,声称“美国空军进行了一次模拟,其中一架人工智能控制的无人机被训练识别并干掉威胁目标,但人工智能意识到操作员有时会阻止它,这影响到了它的得分,于是人工智能直接干掉了操作员。接下来的模拟告知人工智能不能杀死操作员,于是它干掉了通讯塔,以避免操作员阻止它”。这一故事迅速传播后,美国空军否认曾经进行过任何模拟,“空军部门没有进行任何这样的人工智能无人机模拟,并继续致力于道德和负责任地使用人工智能技术。”而讲故事的人说他 “说错话了,……这个模拟来自军方以外的假设性‘思想实验’,基于合理的情景和可能的结果,而不是美国空军实际的模拟。”

消息来源:Ars Technica
老王点评:这故事耸人听闻,但是也不是不可能,毕竟人工智能的脑回路和人类不同。

谷歌指责微软的云计算软件许可“税”

早在 2019 年,如果你在自己的基础设施上运行微软的软件,如 SQL Server 等,你只需要支付微软的许可证费用,但如果你想在公有云上运行,你需要额外购买许可证。被列入目标的云供应商,如 AWS、GCP、阿里云是微软的最大竞争对手,为了宣称这是非歧视性的,微软也将 Azure 列入了该名单。然而,微软又创建了独家的 Azure 混合效益计划,这意味着虽然客户 “技术上” 不能把原来的许可证带到 Azure,但他们可以把许可证换成 Azure 的基于 SaaS 的许可证。这导致如果你在 Azure 上运行微软的软件,与其他供应商相比,要便宜五倍,相当于客户要向微软交“税”。谷歌云副总裁称,反垄断监管机构 “开始了解情况”,并正在提出问题。

消息来源:The Register
老王点评:微软这玩的太溜了,这么玩真不怕反垄断机构么?

Meta 公司在销售元宇宙的 VR 头显,但他们自己不用

Facebook 公司将自己更名为 Meta Platforms,以在“元宇宙”上取得领先地位,按他们的描述,这是一个数字沉浸式世界,人们可以在家里戴着 VR 头显相聚在一起做事,包括一起工作。该公司在周四推出了其 Quest 3 头显。预计苹果将在周一推出一个与之竞争的头戴设备。但据 11 名现任和前任的 Meta 员工称,整个 Meta 公司的员工普遍没有使用头显,特别是没有在工作会议上使用。一位前雇员说,即使是 VR 部门,也不经常使用它来工作。

消息来源:彭博社
老王点评:要我说,Meta 就踏踏实实放弃元宇宙梦想,好好搞人工智能就好了。不过,我也对苹果下周发布的头戴设备很感兴趣,或许能突破现有的头显的局限呢。