管理对新手友好的开源社区的三个步骤

Summary: 作为一个开源项目的成员，你可以做很多事情来帮助新手找到为项目作出贡献的方式。

作为一个开源项目的成员，你可以做很多事情来帮助新手找到为项目作出贡献的方式。

# 管理对新手友好的开源社区的三个步骤

>
> 作为一个开源项目的成员，你可以做很多事情来帮助新手找到为项目作出贡献的方式。
>
>
>

<img src="content_image/album_202302_12_222832vxfof8844fo4vsl4.jpg" alt="" title="">

当有人刚开始为开源做贡献时，最好从对新手友好的故障和议题开始。但在他们修复故障之前，他们必须要能够找到这类问题。作为一个开源项目的成员，你可以做很多事情来帮助新手找到为项目贡献的方式。

鉴于此，[AnitaB.org 开源社区](https://github.com/anitab-org) 优先考虑让我们的社区做到对新手友好。我们提倡包容性，确保不同经验和水平的贡献者都可以参与进来，并且他们的贡献不止限于跟编程有关。

我最近在 [Upstream 2021](https://youtu.be/l8r50jCr-Yo)，即 Tidelift 活动中介绍了我们在 [AnitaB.org](https://anitab.org/) 上所做的一些社区工作，该活动启动了“维护者周”，这是一个为期一周的开源维护者庆祝活动。在活动中我讨论了我们策略的三个主要部分：

* 我们如何沟通
* 项目和议题
* 开源项目

### 我们如何沟通

透明度是开源的重要组成部分，我们将透明度原则应用于我们的沟通方式。实际上，这意味着我们所有的社区会议都是公开进行的，并且影响我们设置 Zulip 聊天的方式以及我们提供文档的方式。

#### 开放会议

任何人都可以加入我们的会议，并讨论与我们社区相关的话题。他们可以参与讨论或者旁听。会议相关信息在我们的社区日历中都可以找到。在这些通话中我们通常只使用语音聊天，我们发现这可以让人们在参与时感觉更自在。

我们举办以项目为中心的会议和一些分类的会议。会议上，来自不同领域的人们可以讨论同一个项目并帮助改进我们的流程。偶尔，我们会有“<ruby> 自由提问 <rt>  Ask Me Anything </rt></ruby>（AMA）”会议，任何人都可以来问任何与开源相关的问题。

所有会议我们都会在共享文档中进行记录，并在 [我们的 Zulip](https://anitab-org.zulipchat.com/) 中共享摘要和文档链接。

#### 我们的 Zulip 聊天

开源 Zulip 聊天平台是我们的主要社区交流渠道，虽然我们也在 Github 的评论区讨论议题和<ruby> 拉取请求 <rt>  Pull Request </rt></ruby>（PR）。一般来说，我们禁用了私人消息以确保我们尽可能透明。对于这条规则，我们只有少数例外，那些私人聊天是管理员在处理我们运行程序的后勤工作所用的。我们发现这种方法更受欢迎，它还使我们能够更清楚公共聊天中的违规行为。

我们在 Zulip 聊天室分享所有会议摘要，包括讨论的要点、行动项目和文档。这些听起来好像是些显而易见的要求，但我一直惊讶于很多开源项目并不提供会议笔记，所以 Zulip 可以让那些没有参加会议的人也随时了解情况。

在 Zulip上，我们讨论项目路线图，回答社区的问题和疑问，并积极**促进人们通过不同的方式方法和在不同的场景下做出自己的贡献**。有时我们为贡献者的成就而庆祝 —— 无论是为了突出他们测试或者审查的第一个拉取请求，还是强调我们志愿者所做的出色工作。

#### 文档

我们尽量保持**关于我们流程的开放文档**，例如常见问题解答，以便这些社区成员可以按照自己的节奏和时间了解社区。这是为了让他们在联系我们之前了解我们的工作方式以及我们从事的工作类型。

### 项目和议题

关于我们的项目和议题管理，我们鼓励通过多种方式做出贡献，我们为新手专门创建特定的议题，并尝试让项目的设置变得简单。

#### 多种贡献的方式

我们努力创建**需要不同贡献的问题**，例如文档、测试、设计和外展。这是为了让任何人 —— 无关他们的经验水平和兴趣领域 —— 都能做出贡献。这样能够帮助社区参与进来，而且我们发现它使成员能够从一些省力但有价值的任务开始一步步做出贡献。

我们提倡的贡献类型有：

* 不同复杂性的编程任务。
* 质量保证任务 —— 贡献者可以测试我们的应用程序或拉取请求并报告错误。
* 社区成员可以参与讨论的设计会议。此外，创建模型和重新设计我们应用程序某些部分的机会，并探索改进用户体验。
* 外展任务，我们主要在 Zulip 上推广，我们建议在我们的 Medium 出版物上发表博客，介绍他们的开源经验和他们的贡献。
* 文档任务，可以包括一般社区文档或我们在 Docusaurus 上的项目文档。

#### 仅限新手的问题

我们将一些**议题标记为“仅限新手”**。这些问题适用于尚未为议题存储库做出贡献的人。为议题做标签还使我们能够让人们在贡献者大量涌入时开始他们的开源之旅，例如，在 [谷歌编程之夏（GSoC）](https://summerofcode.withgoogle.com/) 申请期间。

有时，这些可能是“唾手可得的果实”，可以让他们熟悉作出贡献和提交拉取请求的过程。

#### 简单的项目设置

我们也很在意为我们的项目提供**新手友好的安装设置**。我们注意到最活跃的项目通常是最容易设置的。我们知道，为你不熟悉的项目做出贡献可能需要付出很多努力并且关乎贡献体验的成败。

我们尝试提供有关如何在多个操作系统上运行我们项目的说明。在过去，我们有一些项目有单独的说明，可以在 Unix 环境下运行，我们注意到贡献者在 Windows 上运行这些项目有些困难。自那以后我们不断进行改进，以避免贡献者在 Zulip 上寻求帮助时出现混乱。

我们根据贡献者的经验，一直在改进我们最活跃的项目之一 [mentorship-backend](https://github.com/anitab-org/mentorship-backend#readme) 的自述文件。新手在这个项目中遇到的困难之一是设置与配置电子邮件帐户相关的部分环境变量，以使后台功能能够发送电子邮件。但是，由于此功能对于本地开发并不重要，因此默认情况下，我们将电子邮件设置设为可选，以便将电子邮件打印到终端，而不是发送给用户。这种方法仍然使贡献者可以看到这些电子邮件。与此更改类似，我们将 [SQLite 数据库](https://opensource.com/article/21/2/sqlite3-cheat-sheet) 作为本地开发的默认设置，以避免对 Postgres 数据库进行额外设置，虽然我们在部署版本中会使用到 Postgres。

我们注意到，一些贡献者在为我们的 [bridge-in-tech-backend](https://github.com/anitab-org/bridge-in-tech-backend) 项目做出贡献时觉得很困难，该项目的设置很复杂，并且包含的步骤比 [mentorship-backend](https://github.com/anitab-org/mentorship-backend#readme) 多得多。自从我们在一个开源项目中注意到这一点以来，我们一直在探索如何改进其结构。

对于我们的大多数项目，我们还提供应用程序的实时体验版本或打包版本，以便贡献者无需设置即可测试项目。这有助于我们为那些对开发设置不感兴趣或不熟悉的贡献者提供一种方式，来尝试我们应用程序的最新版本，并通过报告发现的任何错误来做出贡献。我们在 [质量保证指南](https://github.com/anitab-org/documentation/blob/master/quality-assurance.md) 中放了这些应用程序的链接。

### 开源计划

我们在社区中组织了两个主要计划：开源黑客（OSH）（一个为期一个月的项目）和 Open Source Ambassadors（一个为期六个月的项目）。

#### 开源黑客（OSH）

在此计划中，我们在多个类别的贡献中创建议题 —— 文档、编码、外展、测试和设计（类似于 [谷歌的 Code-in](https://codein.withgoogle.com/) 竞赛）。 参与者可以为每个类别至少贡献一次并获得电子证书。一个议题可能包含多个类别，并且无需合并拉取请求也能使贡献有效。

我们为这个计划选取几个项目，请导师们集思广益为参与者创造议题。项目开始后参与者可以认领议题并开始作出贡献。导师们会支持帮助并审查他们的贡献。

这种方法鼓励贡献的多样性，并欢迎任何人，无论他们的编码能力如何，都可以在友好和不怕出错的环境中做出贡献。

#### 开源大使

在此计划中，我们从社区中选择大使，理想情况下他们将涵盖我们旨在促进的每一类贡献。至今该计划已启动了两次。

该计划旨在让成员通过回答社区的议题、协助贡献者参与并为他们指定的类别宣传来帮助管理项目和计划。

第一个计划举行时我们接受了所有的申请者。我们评估了社区成员的兴趣所在，并为那些想要做出贡献但最初不敢踏出第一步的人提供了一个体系。

第一个计划的举办给了我们很多启发。因为我们的活动中既有经验丰富的开源贡献者和社区成员，也有初来乍到缺乏经验的新手，因此项目的执行要求管理员进行大量的管理工作。一些社区大使信心十足准备好进一步采取新措施，而其他大使则需要更多支持。到了第二个，我们决定缩减该计划，只接受那些已经熟悉社区、可以领导倡议和项目并帮助我们培训新人的贡献者。

第二个计划中形成了正反馈循环。那些在第一个计划中还是新手的大使们，通过为上一个项目做出贡献并且从项目经验中学习之后能够做到轻松带领项目。

这种方法的改变使管理员能够更加专注于支持大使团队，帮助他们传播我们的使命，并继续让我们的社区对新手友好，并指导更多人做出贡献。

### 总结

这些计划帮助我们提高了对开源贡献和回馈的不同方式的认识。通过它们，我们发现志愿者通过管理项目和举办公开会议来提供帮助，这有助于管理社区并为我们的贡献者提供指导。

尽管我们得到了贡献者的良好反响，并帮助人们做出了他们的第一个贡献，但我们仍有很大的改进空间。我们将继续改进我们项目的设置和贡献指南，以改善贡献者的体验。我们还将继续专注于确保我们的组织始终拥有并推动不同类别的问题，促进包容性，以便任何有意愿做出贡献的人都能出自己的一份力。

---

via: <https://opensource.com/article/21/8/beginner-open-source-community>

作者：[Isabel Costa](https://opensource.com/users/isabelcmdcosta) 选题：[lujun9972](https://github.com/lujun9972) 译者：[XiaotingHuang22](https://github.com/XiaotingHuang22) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


2023 年十佳 Linux 服务器发行版

Summary: 由于具备多种优势，Linux 操作系统是各类服务器中的热门选择。

请忽略LCLL校注

果然 红帽第一， 乌班图第二

LCTT 校注的操作系统是啥意思？充其量就是定制发行版。

LCTT 校注的操作系统是啥意思？充其量就是定制发行版。

有没有人测试过默认安装后的安全漏洞?有的会几百漏洞够你喝一壶的

由于具备多种优势，Linux 操作系统是各类服务器中的热门选择。

# 2023 年十佳 Linux 服务器发行版

由于具备多种优势，Linux 操作系统是各类服务器中的热门选择。首先，它是免费（少数商业发行版除外，如 RHEL 和 SUSE Linux Enterprise Server）和开源的。它的开源性意味着开发者可以查看其源代码并进行修改，而且可以根据规定的许可条款重新发布。其次，通常 Linux 被认为是稳定、通用的，且比 Windows 更为安全。最后，Linux 可以轻松地部署在各类平台，如裸机、虚拟机和云环境。

在这篇文章中，我们重点介绍了十佳 Linux 服务器发行版。

### 1、红帽企业 Linux（RHEL）

<ruby>   红帽企业 Linux  <rt>  Red Hat Enterprise Linux </rt></ruby>（RHEL），是专门为企业环境开发的商业 Linux 发行版。它是一个性能驱动、可靠安全的操作系统，提供了增强的可用性和无缝部署，使其成为服务器环境的理想选择。

RHEL 支持裸机、虚拟机和云环境中的各种工作负载。实际上，红帽是世界领先的开源解决方案供应商，提供了众多产品，包括 Red Hat OpenShift、Ansible 自动化平台、Open 混合云、JBoss 企业应用平台和 SAP 等等。

### 2、Ubuntu 服务器

由 Canonical 开发和维护的 Ubuntu 是最流行和广泛使用的 Linux 发行版之一。Ubuntu 是一个基于 Debian 的 Linux 发行版，完全自由开源，以其桌面版而闻名，它直观、用户友好，被认为是学者和初学者的理想选择。Ubuntu 有 3 个版本，即：<ruby> 桌面版 <rt>  Desktop </rt></ruby>、<ruby> 服务器版 <rt>  Server </rt></ruby>和 <ruby> 核心版 <rt>  Core </rt></ruby>。

虽然桌面版在全球范围内得到了大量使用，但服务器版也为服务器环境提供了一个坚实的平台。首先，它可以部署在任何环境中，无论是在物理机、虚拟机还是云环境中，都具备广泛的扩展功能。这意味着可以随时增加资源用来满足不断变化的需求。

由于服务器版本非常精简，没有任何图形用户界面，因此相对轻量，资源开销低。这意味着 CPU 和内存的使用也会较低。因此，提高了性能，并具备企业级的稳定性。

除了在物理数据中心和虚拟服务器上安装外，Ubuntu 服务器还可以在 AWS 和 Azure 等公共云中使用。据 Canonical 称，55%的 OpenStack 云运行在 Ubuntu 上。 此外，你可以付费获得自己管理的 Openstack 云。

### 3、Debian

Debian 是最早的 Linux 发行版之一，以其稳定性而闻名。它有三个版本：<ruby> 稳定版 <rt>  Stable </rt></ruby>、<ruby> 不稳定版 <rt>  Unstable </rt></ruby> 和 <ruby> 测试版 <rt>  Testing </rt></ruby>。

Debian 稳定版是官方发布的最新 Debian 发行版，是服务器和台式机最受欢迎的版本。这个分支的所有软件包都经过了严格的测试和调试，因此被认为是可以运行生产工作负载的。

Debian 服务器是一个快速可靠的操作系统，强调安全性和稳定性。正是由于这个原因，它成为服务器环境的一个完美选择。此外，它提供了广泛的硬件支持，有超过 59,000 个软件包，是迄今为止所有操作系统中软件包数量最多的。

就像 Ubuntu 服务器一样，Debian 轻量，功能多，非常适合企业工作负载。实际上，它比 Ubuntu 更稳定，更易于管理。

### 4、SUSE Linux 企业服务器

在提供优秀服务器平台方面，另一位具有竞争力的对手是 <ruby> SUSE Linux 企业服务器 <rt>  SUSE Linux Enterprise Server </rt></ruby>（SLES）。该服务器操作系统是由位于德国的 SUSE 公司创建和维护的。

SLES 是一个为处理企业级工作负载而建立的商业发行版。它可以适应任何环境，并针对稳定性、可靠性和安全性进行了优化。它的高可扩展性，使 IT 团队能够有效地部署他们的应用程序和服务，以应对不断增长的业务需求。

最新的 SLES 版本提供了易于管理的互操作。它还针对 Docker 容器、Kubernetes 和地理集群提供了更多的支持和兼容。后者提供了高可用的灵活性，使 IT 团队能够配置跨越多个数据中心区域的复制集群。

SUSE Linux Enterprise Server 不仅支持内部工作负载，而且支持云服务，包括微软 Azure、谷歌计算引擎和亚马逊 Web 服务。

### 5、OpenSUSE Leap

由 OpenSUSE 项目开发，OpenSUSE 是一个基于 RPM 的非商业 Linux 发行版，由 SUSE 公司开发和维护。同样是自由开源的，OpenSUSE 提供了两个版本：

* OpenSUSE Leap
* OpenSUSE Tumbleweed

OpenSUSE TumbleWeed 是 OpenSUSE 的滚动发行版本。它包含最新的稳定应用程序，包括内核、Git、Samba、桌面应用程序等等。因此，它是开发人员或高级用户的完美选择，他们需要利用最新的软件堆栈进行工作负载。然而，由于频繁的内核更新，导致与其他第三方驱动模块的不一致，它并不是服务器的理想选择。

OpenSUSE Leap 是将 OpenSUSE 用于服务器的首选。它是一个开源和社区驱动的发行版，发布周期较慢，因此，比 TumbleWeed 更适合。社区驱动，这意味着它在发布之前要经过严格的测试。

Leap 相对来说更容易使用，并提供高性能和稳定性，是处理企业级工作负载的理想选择。它是商业服务器发行版（如 SLES 和 RHEL）的优秀替代方案，并允许企业在裸机和云部署上部署他们的工作负载。

### 6、Rocky Linux

Rocky Linux 是一个作为 CentOS Linux 的替代品而开发的 Linux 发行版，后者在 2021 年 12 月 31 日达到了 EOL（寿命终止）。它是一个自由而开源的 Linux 发行版，具备稳定性、可靠性且定期更新，并在 10 年的支持生命周期内完全免费。

Rocky Linux 是一个企业级操作系统，旨在与 RHEL 100% 兼容，目前正在由社区大力开发。

自从 CentOS Linux 不合时宜地突然停产后，导致该发行版获得较高人气。它可以服务器和台式电脑上安装，也提供了公有云供应商（如亚马逊 AWS 和谷歌计算引擎）上的定制镜像。

Rocky Linux 开发者提供了一个迁移脚本，允许用户从其他企业版（如 CentOS Linux 和 Oracle Linux）迁移到 Rocky Linux。

### 7、AlmaLinux

另一个为填补 CentOS Linux 留下的空白的选择是 AlmaLinux。同样一个完全自由开源的企业操作系统。

AlmaLinux 最初是由 CloudLinux 创建的，但目前是由社区驱动的。它提供了一个生产级的企业操作系统，与 RHEL 1：1 二进制兼容。简而言之，它是 RHEL 的克隆，简而言之，它是 RHEL 的克隆，并免费提供坚实的稳定性和 RHEL 所带来的优势。

作为一个企业级的服务器操作系统，AlmaLinux 可以轻松运行关键工作负载。此外，它提供长期支持的定期发布。

### 8、Oracle Linux

由甲骨文公司开发的 Oracle Linux 是一个安全和高性能的操作系统，由 RHEL 源代码编译而成。它针对混合部署和多云部署进行了优化，与 Rocky 和 AlmaLinux 一样，Oracle Linux 与 RHEL 是 100% 二进制兼容。

对于数据中心，Oracle Linux 是一个可行的选项，当然也可以作为 EOL 的 CentOS 的完美替代品。由于它的稳定性和性能，是企业应用的理想选择。

与 RHEL 和 SUSE 等商业 Linux 发行版不同，Oracle Linux 可以完全免费下载、使用和重新发布。它在 GNU 通用公共许可证（GPLv2）下是可用的。

### 9、Fedora 服务器

Fedora 是 Fedora 项目开发和维护的自由开源的 Linux 发行版，该项目由红帽赞助。

Fedora 作为 RHEL 的上游社区发行版。所有的应用程序在推送到 RHEL 之前都要经过严格的测试。因此，它被称为“最前沿”的操作系统，这意味着它定期获得最新的软件应用程序和更新。

长久以来，Fedora 以其工作站版本而受欢迎，该版本是为笔记本电脑和台式电脑打造的。随着时间的推移，它已经扩展到包括其他版本，如 Fedora 服务器、Fedora IoT 和 Fedora CoreOS。

Fedora 服务器是一个强大、可靠、灵活的操作系统，拥有最好和最新的数据中心技术。作为一个领先的版本，它提供了开源社区的最新技术，并且易于安装、设置和使用各种工具进行管理，如 Cockpit 网络控制台。

Fedora 也十分快速稳定，而且相当安全，非常适合生产和企业工作负载，其新版本每 6 个月推送一次。

### 10、Fedora CoreOS

最后一个是 Fedora CoreOS。这是一个专门为运行容器化应用程序和工作负载优化的最小操作系统。根据其主页，它自称是 “一个自动更新的最小操作系统，用于安全且大规模地运行容器化工作负载”。

通常情况下，它与 Podman 和 Docker 一起发行，并有三个版本，即 <ruby> 稳定版 <rt>  Stable </rt></ruby>、<ruby> 测试版 <rt>  Testing </rt></ruby> 和 <ruby> 下一版 <rt>  Next </rt></ruby>。你可以获得用于裸机服务器和虚拟化环境的镜像，以及由亚马逊网络服务（AWS）和谷歌云平台（GCP）等主要云提供商托管的云镜像。

### 结论

这是关于 Linux 服务器发行版最好的总结。希望你看完这个指南后能有所收获。对我们的指南有什么想法吗？非常欢迎你的反馈。

>
> LCTT 校注：此文并未提及主要由中国开发者/企业主导的企业级 Linux 发行版，在我看来，龙蜥操作系统（Anolis OS）、欧拉操作系统（openEuler）和统信 UOS 都具备相当优良的特性和可靠的支持，在选型时可以考虑。
>
>
>

---

via: <https://www.linuxtechi.com/top-10-linux-distributions-for-servers/>

作者：[Pradeep Kumar](https://www.linuxtechi.com/author/pradeep/) 选题：[lkxed](https://github.com/lkxed) 译者：[Veryzzj](https://github.com/Veryzzj) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #911 C++ 之父呼吁改变编程语言本身以提升安全性

Summary:
? C++ 之父呼吁改变编程语言本身以提升安全性
? 全新 Windows 11 就会为向第三方发送用户数据
? 开源语音助手 Mycroft 资金耗尽
»
»

# 硬核观察 #911 C++ 之父呼吁改变编程语言本身以提升安全性

### C++ 之父呼吁改变编程语言本身以提升安全性

虽然许多语言现在支持基本类型安全，即确保变量只访问由其数据类型明确定义的内存部分，但 C++ 一直在努力提供类似的保证。1 月中旬，官方的 C++ “方向小组” 发表了一份声明，以解决对 C++ 安全性的担忧。这份由 C++ 创造者 Bjarne Stroustrup 共同撰写的新声明，呼吁改变 C++ 编程语言本身以解决安全问题。“安全方面的变化不仅需要在工具方面，而且在语言/编译器和库方面也是可见的。”他们建议 “将几个功能打包成配置文件”，这样不仅仅可以改善安全，还提供了灵活性。配置文件可以专门用于支持嵌入式计算、性能敏感的应用，或高度具体的问题领域，如汽车、航空航天、航空电子、核能或医疗应用。

>
> **[消息来源：The Newstack](https://thenewstack.io/can-c-be-saved-bjarne-stroustrup-on-ensuring-memory-safety/)**
>
>
>

>
> 老王点评：或许这样的语言层面的修改能挽救 C++ 的安全性困局？
>
>
>

### 全新 Windows 11 就会为向第三方发送用户数据

网络安全专家分析了全新笔记本上刚安装的 Windows 11 产生的 DNS 流量，他们震惊的发现，Windows 11 电脑不仅联系了 Windows Update、MSN 和必应服务器，还联系了 Steam、McAfee 和各种市场研究公司、广告服务。微软对此回应称，流动数据在现代操作系统中很常见，这用于 “以帮助他们保持安全、最新，并保持系统按预期工作”。

>
> **[消息来源：Tom's Hardware](https://www.tomshardware.com/news/windows-11-sends-user-data-to-third-party-services)**
>
>
>

>
> 老王点评：虽然是意料之中，但被这样抓住现行，还是有点吃惊。
>
>
>

### 开源语音助手 Mycroft 资金耗尽

Mycroft 是一个基于 Linux 设备（包括树莓派）的开源语音助手，但在 Kickstarter 众筹后，已经 “没有资金继续履行这次众筹活动的奖励，甚至没有资金继续有意义的运作”。他们遭遇了合作伙伴无法提供稳定的硬件，以至于转而使用现成的零件，然后是供应链中断。他们铸造了塑料注塑模具、打印了定制的印刷电路板、获得了设备的 FCC 和 CE 认证，这些都经过了多次迭代，远远超过了众筹活动的总捐款。甚至他们还遭遇到非执业专利实体的持续诉讼。

>
> **[消息来源：Kickstarter](https://www.kickstarter.com/projects/aiforeveryone/mycroft-mark-ii-the-open-voice-assistant/posts/3729060)**
>
>
>

>
> 老王点评：做事不容易，对困难的重视也不足。如果夭折，确实很可惜。
>
>
>


如何在 Arch Linux 中安装 GNOME 桌面

Summary: 本指南解释了在 Arch Linux 中安装 GNOME 桌面所需的步骤。

Gnome 跟系统菜单杠上了，整天改来改去。

一个相对稳定的操作环境对发展新用户很关键。记得Win7转Win8被骂了很久。Win10转Win11又被骂了很久。

真是好的不学学坏的。

严重怀疑Gnome中混进很多微软的奸细，毕竟这事又不是第一次干。

看到评论数 1 后点进来，果不其然是指摘 GNOME 的

别人怎么想是别人的自由，但 GNOME 尽可能给出唯一解的设计逻辑是我一直以来都在追求的

把一切布局都交给用户的设计美其名曰有选择权，实际上难道不是一种摆烂？

我现在就在用Arch，桌面是Elementary OS的Pantheon。怎么说呢，gnome还是挺美观的，不过用久了有点审美疲劳，尤其是周围人电脑都是清一色Ubuntu的时候...

来自黑龙江哈尔滨哈尔滨工业大学的 Firefox 109.0|GNU/Linux 用户

用习惯了Gnome挺好的，毕竟它只是工具，桌面环境不要经常换，增加学习成本。用它产生价值才是王道。

GNOME 40以来的步子迈得太大了(GTK4之类的)，目前转Cinnamon了 - -

本指南解释了在 Arch Linux 中安装 GNOME 桌面所需的步骤。

# 如何在 Arch Linux 中安装 GNOME 桌面

>
> 本指南解释了在 Arch Linux 中安装 GNOME 桌面所需的步骤。
>
>
>

本指南有两部分：第一部分是关于安装基本的 Arch 系统；第二部分是在 Arch Linux 基础上安装完整的 GNOME 桌面环境。

### 什么是 GNOME 桌面？

GNOME 是一个流行的桌面环境，是如 Ubuntu 和 Fedora 等许多基于桌面的顶级 Linux 发行版的默认桌面。几乎所有的定制版都提供了一个 GNOME 桌面版本。

GNOME 桌面是稳定和用户友好的桌面之一，因此它被许多普通和高级用户所青睐。如果你想要一个在你进行工作时保持隐形的桌面，GNOME 就是这样的一个。它不会在你工作时妨碍你。因此，尽管有许多关于 GNOME 3（目前的版本）速度慢、资源重等争议，它仍然是许多人的流行和默认选择。

说了这么多，让我们来看看如何在裸机 Arch 中安装 GNOME 桌面。

### 在 Arch Linux 中安装 GNOME 桌面

#### 第一部分：安装 Arch Linux

如果你已经安装了 Arch Linux，你可以跳过这一步，直接进入下面安装 GNOME 桌面部分。

要快速安装 Arch Linux 基础版，请遵循以下步骤。你也可以访问 [该指南](https://www.debugpoint.com/2020/11/install-arch-linux/)，了解如何将 Arch Linux 安装为双启动或在虚拟机中的完整教程。

本文下面介绍的步骤是安装 Arch 的传统方式。新手请按照下面的指南链接，以更现代的方式使用 `archinstall` 脚本。完成后，回来通过第二部分的步骤继续 GNOME 安装。

>
> **[现代方式：使用 archinstall 脚本安装（推荐）](https://www.debugpoint.com/archinstall-guide/)**
>
>
>

##### 传统方式：下载 Arch Linux

从下面的链接下载 Arch Linux 的 .iso 文件。它也提供了磁力链接和种子链接。下载后，将 ISO 写入 USB 驱动器。然后从该驱动器启动。

>
> **[下载 Arch Linux](https://www.archlinux.org/download/)**
>
>
>

如果你打算通过 GNOME Boxes、virt-manager 把它安装成一个虚拟机镜像，那么你就不需要把它写入 U 盘。

##### 启动和配置分区

从 Arch Linux ISO 启动后，你必须运行一系列的命令来安装基本系统。

首先，运行下面的命令，找出设备标识符。

```
fdisk -l

```

然后用设备标识符，运行下面的命令，开始对你的磁盘进行分区。请确保根据你的系统改变 `/dev/sda`。

```
cfdisk /dev/sda

```

在下一个提示中选择 `label type = dos`。

选择自由空间，并从底部选择 “<ruby> 新建 <rt>  New </rt></ruby>” 选项。在这个例子中，我将创建三个分区，如下图所示：

```
/dev/sda1 - 1G - for /boot
/dev/sda2 - 5G - for root
/dev/sda3 - 1G - for swap

```

在下一个屏幕中，提供引导分区的分区大小（在这个例子中，我给出了 1GB）。选择它作为主分区。

对大小为 5GB 的主根分区重复同样的步骤。

用同样的步骤创建一个大小为 1G 的交换分区（你可以根据你的需要改变它）。创建交换分区后，确保在底部选择 “<ruby> 类型 <rt>  Type </rt></ruby>”，并用 “Linux Swap/Solaris” 选项将其标记为交换分区。

一旦完成，使用底部的 “<ruby> 写入 <rt>  Write </rt></ruby>” 选项将变化写入磁盘。**确保你在写入前做了备份，因为这是你系统中的一个永久性变化。**

在你继续之前，运行下面的命令来检查。你可以看到在这个例子中，有三个分区被列出。

```
fdisk -l

```

依次运行下面的命令，在上面新创建的分区中格式化并创建一个 ext4 文件系统。请确保你根据你的需要改变 `/dev/sda1` 和 `/dev/sda2`：

```
mkfs.ext4 /dev/sda1
mkfs.ext4 /dev/sda2
mkswap /dev/sda3
swapon /dev/sda3

```

完成后，装载系统并创建必要的目录：

```
mount /dev/sda2 /mnt
mkdir /mnt/boot /mnt/var /mnt/home
mount /dev/sda1 /mnt/boot

```

同样，确保你根据你的系统改变 `/dev/sda1`、`/dev/sda2` 和 `/dev/sda3`。

##### 安装基础系统

我希望你已经连接到互联网了。如果没有，请尝试使用 USB 网卡或 Arch 安装程序自动配置和检测的有线网络连接。如果你没有可用的有线连接，请按照 [该指南](https://www.debugpoint.com/2020/11/connect-wifi-terminal-linux/) 使用 Arch Linux 安装程序配置一个无线或 Wi-Fi 网络。

依次运行下面的命令，将基本系统安装到已安装的分区中。下载的大小约为 400MB。

```
pacman -Syy
pacstrap /mnt base base-devel linux linux-firmware nano dhcpcd net-tools grub

```

一旦完成，就会生成文件系统表，没有它你就无法启动系统。

```
genfstab -U /mnt >> /mnt/etc/fstab

```

##### 配置基础系统

依次按照下面的命令来配置基本系统。这涉及到设置你的地域、语言、添加一个登录用户，以及设置互联网：

```
arch-chroot /mnt
nano /etc/locale.gen

```

通过去掉开头的 `#` 来取消对你所选择的 <ruby> 语言环境 <rt>  locale </rt></ruby> 的注释。在本指南中，我选择了 `en_US.UTF-8 UTF-8`，按 `CTRL+O`、回车和 `CTRL+X` 退出 nano。

使用以下方法生成语言环境：

```
locale-gen

```

如果你不想手动去 `/etc/locale.gen` 设置语言，也可以使用以下命令设置语言：

```
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8

```

设置当地的时区：

```
ln -s /usr/share/zoneinfo/America/New_York /etc/localtime

```

同样，你可以根据你的需要来选择它们。你可以通过以下命令列出当地的时区：

```
ls /usr/share/zoneinfo
ls /usr/share/zoneinfo/America

```

设置硬件时钟，创建一个主机名，并使用以下命令依次启用互联网的 DHCP。你可以根据你的想法，将 `arindam-pc` 改为任何主机名：

```
hwclock --systohc --utc
echo arindam-pc > /etc/hostname
systemctl enable dhcpcd

```

下一步是设置根用户的密码，创建一个管理员用户，并在 `sudoers` 文件中添加该用户。

依次按照下面的命令进行操作。请确保根据你的需要将用户名从 `debugpoint` 改为其他名称：

```
passwd rootuseradd -m -g users -G wheel -s /bin/bash debugpointpasswd debugpoint

```

打开 `sudoers` 文件，添加以下几行：

```
nano /etc/sudoers

```

添加以下几行。由于你已经创建了 `root` 用户，该条目应该已经有了：

```
root ALL=(ALL) ALL
debugpoint ALL=(ALL) ALL

```

依次使用如下命令安装 Grub，设置初始化 Ramdisk 环境，卸载系统：

```
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
mkinitcpio -p linux
exit

```

然后重新启动你的系统。如果你是在一个物理系统中安装的，在这一步要拔掉 USB 介质。

```
umount /mnt/boot
umount /mnt
reboot

```

你现在已经成功地安装了 Arch Linux 基本系统。现在是安装完整的 GNOME 桌面的时候了。

#### 第二部分：在 Arch Linux 中安装 GNOME

重启后，从 Grub 中选择 Arch Linux。在 Arch Linux 的提示符下，开始依次运行以下命令。这些命令安装 Xorg 服务器、显示管理器、GNOME 桌面组件、控制器包和其他应用程序。

所有的命令都使用默认值，即在要求时按回车。

安装 Xorg 服务器。安装大小约为 80MB:

```
sudo pacman -S --needed xorg

```

安装显示管理器、GNOME 桌面。安装大小约为 300MB：

```
sudo pacman -S --needed gnome gnome-tweaks nautilus-sendto gnome-nettool gnome-usage gnome gnome-multi-writer adwaita-icon-theme xdg-user-dirs-gtk fwupd arc-gtk-theme seahosrse gdm

```

上面的安装会要求提供几个软件包的选项。选择你想要的任何一个。如果你不确定，在询问时选择 “jack”、“noto-sans” 和 “xdg-portal-desktop-gnome”。

安装应用程序。这只是一个参考。你也可以安装你所需要的：

```
sudo pacman -S --needed firefox vlc filezilla leafpad xscreensaver archlinux-wallpaper

```

现在是时候把显示管理器和网络管理器作为服务启用了。这样，下次登录时，它们就可以由 systemd 自动运行。

```
systemctl enable gdm
systemctl enable NetworkManager

```

使用 `reboot` 命令重新启动系统：

```
reboot

```

如果一切顺利，你应该在 GNOME 桌面上看到一个漂亮的登录提示。使用你刚刚创建的凭证登录。迎接你的应该是 Arch Linux 漂亮而干净的 GNOME 43 桌面。

我希望这个指南能帮助你在裸机 Arch 安装 GNOME 桌面。

---

via: <https://www.debugpoint.com/gnome-arch-linux-install/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed) 译者：[Chao-zhi](https://github.com/Chao-zhi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


如何在 Ubuntu 中安装 DOSBox 玩老游戏

# 如何在 Ubuntu 中安装 DOSBox 玩老游戏

>
> 了解如何在 Ubuntu 中安装 DOSBox，并配置它来玩旧式 DOS 游戏。
>
>
>

DOSBox 是一个自由开源的操作系统模拟器，可以在现代 Linux 系统中运行。它有几个组件可以模仿旧的硬件，以运行旧的程序和游戏。

这一切使得在现代 Linux 发行版中享受旧游戏和应用程序成为可能。

在本指南中，我将向你展示如何安装 DOSBox，配置它，并玩一个示例游戏。

### 在 Ubuntu 中安装 DOSBox

DOSBox 的主软件包在所有主要的 Linux 发行版中都可用。

在 Ubuntu、Debian、LinuxMint 和相关发行版中，使用以下命令安装它：

```
sudo apt install dosbox

```

在 Fedora、CentOS、RHEL 和相关发行版中，使用以下命令安装它：

```
sudo dnf install dosbox

```

在 Arch Linux 中，使用以下命令安装它：

```
pacman -S --needed dosbox

```

安装就结束了。现在是配置和运行的时候了。

### 运行 DOSBox

安装后，从终端键入以下内容：

```
dosbox

```

它将显示以下界面，这是 DOSBox 提示符。第一次运行非常重要，因为它会创建 DOSBox 配置文件。

键入 `exit` 暂时关闭 DOSBox。

配置文件为你提供了几个调整设置的选项。在 Ubuntu 中，该文件创建在 `~/.dosbox/dosbox-[version].conf`。

在 Fedora 中，它从以下路径加载临时配置文件 `~/.config/dosbox/dosbox-staging.conf`.

默认情况下，你可以使用默认配置。但是如果你愿意，你可以修改它。

例如，如果你想全屏启动 DOSBox，你可以启用或禁用相关设置。像这样:

```
fullscreen=false
fulldouble=false
fullresolution=original
windowresolution=original
output=surface
autolock=true
sensitivity=100
waitonerror=true

```

你可以在 [官方文档](https://www.dosbox.com/wiki/Dosbox.conf#Sections) 中找到所有的设置选项。

### 下载以及游玩老游戏

有许多网站提供旧的 DOS 游戏。我使用过下面的网站，它提供了一套可以在现代系统中玩的老游戏。

所以，访问下面的网站，下载你想要的任何游戏。

>
> **[下载 DOS 游戏](https://archive.org/details/softwarelibrary_msdos_games?tab=collection)**
>
>
>

在你的 `/home` 目录下创建一个文件夹，并将其命名为 `dosbox`：

```
cd ~
mkdir dosbox

```

现在，解压你下载的游戏（应该是一个 .exe 文件），在 `~/dosbox` 目录下创建一个单独的文件夹。

例如，我下载了游戏 “马里奥和路易吉（1994）”。我在 `dosbox` 文件夹中创建了一个名为 `mario` 的文件夹，并将游戏文件放进去。

现在从终端启动 dosbox：

```
dosbox

```

并键入以下内容，将游戏挂载到虚拟的 C: 盘中：

```
mount c ~/dosbox/mario

```

以上命令完成后，将驱动器更改为 C:：

```
c:

```

现在，你可以输入游戏的文件名来运行游戏：

```
mario

```

### 键盘或控制器映射

默认情况下，DOSBox 会自动检测键盘或你插入的控制器。但是，如果你想更改游戏按键绑定，可以从终端运行以下命令：

```
dosbox -startmapper

```

它将显示以下界面，每个键上都标记有事件。你可以点开任何一个键，根据自己的习惯进行更改。

### 结论

我希望你在 Ubuntu 和其他发行版中安装了 DOSBox 之后，能够运行你最喜欢的 DOS 游戏。DOSBox 是最酷的软件之一，你可以使用它来运行任何程序，例如 [Turbo C](https://www.debugpoint.com/setting-up-dosbox-in-ubuntu-to-run-turbo-c/) 等。

如果你有任何麻烦或问题，请在评论区告诉我。

享受游戏吧！

---

via: <https://www.debugpoint.com/install-dosbox-ubuntu/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed) 译者：[gpchn](https://github.com/gpchn) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


zip 命令的解释与示例

Summary: 这是一份关于理解 Linux 中的 zip 命令的初学者指南，并附有一些例子。

这是一份关于理解 Linux 中的 zip 命令的初学者指南，并附有一些例子。

# zip 命令的解释与示例

>
> 这是一份关于理解 Linux 中的 zip 命令的初学者指南，并附有一些例子。
>
>
>

这篇文章是 [Linux 命令](https://www.debugpoint.com/category/linux-commands)学习系列的一部分。

zip 文件是一个包含一个或多个文件的压缩档案。它作为一种无损数据压缩技术被广泛使用。由于压缩，它占用的磁盘空间更少，在计算机网络上传输时需要的数据也更少。

这些压缩文件可以在 Linux、Windows 和 macOS 中轻松提取。有各种支持压缩 zip 文件的软件，也提供提取它们的功能。

由于它很流行，几乎所有的操作系统都内置了这个功能。

在本教程中，我们将谈论几种基于终端的方法来压缩 Linux 中的文件。

### Linux 中的 Zip 命令示例

#### 语法

在 Linux 中，你需要使用的压缩文件的程序名称是 `zip`。下面是基本的语法：

```
zip [压缩文件名] file1 file2 file3

```

以下是正式的语法：

```
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]

```

理想情况下，`zip` 命令应该被安装在所有主流的 Linux 发行版中。如果没有，使用下面的命令来安装它。

#### 在 Debian、Ubuntu 和相关发行版上安装

```
sudo apt install zip

```

#### 在 Fedora、基于 RHEL 的系统上安装

```
sudo dnf install zip

```

#### 在 Arch Linux 上安装

```
pacman -S zip

```

让我们继续看一些例子。

#### 如何压缩文件和文件夹

我的测试目录中有以下三个文件。它们是 `file1.txt`、`file2.txt` 和 `file3.txt`。如果我想用 zip 压缩三个文件，并创建一个 `myfiles.zip` 的压缩包，用下面的命令就可以了。

```
zip myfiles.zip file1.txt file2.txt file3.mp3

```

输出：

```
adding: file1.txt (stored 0%)
adding: file2.txt (stored 0%)
adding: file3.mp3 (deflated 13%)

```

这里你应该记住几个要点。

* 当创建一个 zip 文件时，你应该有对当前目录的修改权限。
* zip 文件格式不包含权限，即读（4）、写（2），和执行（1）。所以，创建该文件的用户成为该文件的所有者。
* 如果你想使用带有权限的 zip，可以尝试使用 `tar` 命令（将在后面的教程中解释）。
* 在上面的输出中，`zip` 命令显示了被添加到存档中的文件名和压缩方法。
* 在目标文件名中指定 .zip 文件名的扩展名并不是必须的。如果你省略了 .zip，`zip` 会在最后加上 .zip。

当你操作成百上千的文件时，为了减少终端中的输出，你可以使用 `-q` 参数来抑制 `zip` 命令中的输出：

```
zip -q myfiles.zip file1.txt file2.txt file3.txt

```

#### 递归压缩子文件夹

`zip` 命令的 `-r` 选项使你能够囊括所有子目录。这个选项会递归地遍历到一个目录结构的最后一个子目录，并将它们全部加入到压缩文件中。

下面的命令创建了一个包含 `my_folder` 内所有内容和子目录的压缩文件：

```
zip -r myfolder.zip my_folder

```

你也可以使用通配符（`*`）在你的压缩文件中包含特定类型的文件：

```
zip -0 my_movies.zip *.mp4

```

#### 混合添加文件和目录到压缩文件

有了以上所有的选项，`zip` 命令允许你把文件和目录一起作为参数指定。

```
zip -r myfiles.zip file1.txt file2.txt file3.txt my_folder1 my_folder2

```

### 压缩算法

zip 压缩的默认输出包含两个不同的词，即 `deflate` 和 `store`。zip 默认使用的压缩方法是 `deflate`。如果它成功地压缩了文件，那么输出显示 `deflate`。而当它不能压缩一个文件时，它只是将它们原封不动地存储在 .zip 文件中。这些文件的输出显示为 `store`。

目前有许多压缩算法。其中一种是 bzip2 压缩法，在 Linux 中的 `zip` 命令支持它。你可以指定压缩算法作为一个命令选项来使用。使用选项 `-Z`，后面跟上算法名称，如下所示：

```
zip -r -Z bzip2 myfolder.zip my_folder

```

#### 压缩级别

`zip` 命令还允许你指定压缩级别。压缩级别是指你想让 zip 优化多少来减少包的大小。它是一个从 0 到 9 的数值范围。压缩级别为 9 的值是最高的压缩。默认值是 6。

记住，如果你用 zip 压缩成千上万个大小不一的文件，它可能会占用较多的系统资源，并花费大量的时间。所以，如果你在程序中使用它，或者用 shell 脚本处理大量的文件，请遵循正确的编程标准。

```
zip -9 -r myfolder.zip my_folder

```

#### 用密码保护一个压缩文件

你也可以用下面的 `-e` 选项对压缩文件进行密码保护：

```
zip -e -r myfolder.zip my_folder

```

运行该命令后，它将要求输入密码。

>
> 注意。尽量不要使用 zip 命令来对压缩文件进行密码保护。zip 的加密算法是使用流式加密的 PKZIP。而它很容易被破解。如果你想保护你的文件，请使用 7-Zip 或其他高级工具。
>
>
>

#### 分割较大的压缩文件

许多应用程序、服务器和文件共享可能包含固定大小的文件上传限制。例如，你有一个 10GB 的文件，但服务只允许每个文件 1GB。使用 `zip` 的 `-s` 选项，你可以将其压缩并分割成几块进行上传。

```
zip -s 1g -r myfolder.zip my_folder

```

### 总结

你学到了一些 `zip` 命令的基本知识。它对大多数本地情况很有用，在这些情况下，你需要通过即时压缩来进行快速备份。然而，对于更高级的选项，你应该使用 7-Zip 或其他命令，我将在接下来的几篇文章中分享。

同时，你可以在 [zip 手册](https://linux.die.net/man/1/zip) 中了解更多。

---

via: <https://www.debugpoint.com/zip-command-linux-examples/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed) 译者：[Chao-zhi](https://github.com/Chao-zhi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #912 Twitter 开始向所有人展示马斯克的推文

Summary:
? Twitter 开始向所有人展示马斯克的推文
? ChatGPT 的技术原型是谷歌发明和开源的
? 播客失去了优势
»
»

抖音/TikTok就是带视频的播客

如果有一个去中心化的播客这类rss的互动模块，播客也许会更加有前景。经营被平台化的播客具有很多风险，rss本身就是去中心化的事物

# 硬核观察 #912 Twitter 开始向所有人展示马斯克的推文

### Twitter 开始向所有人展示马斯克的推文

前几天，马斯克抱怨他的推文浏览量太少，并为此 [解雇（#909）](/article-15528-1.html) 了一名首席工程师。马斯克上周末称，Twitter 释出了部分改动以修正“能见度”问题。从周一开始，Twitter 用户注意到他们的 “For You” 的时间线和以前有了显著差异，马斯克的大量推文都出现了时间线的最前面，即使他们没有关注 Twitter 的新老板。

>
> **[消息来源：The Verge](https://www.theverge.com/2023/2/13/23598514/twitter-algorithm-elon-musk-tweets)**
>
>
>

>
> 老王点评：Twitter 成了马斯克的个人博客了！
>
>
>

### ChatGPT 的技术原型是谷歌发明和开源的

为了赶在微软发布由 ChatGPT 支持的新必应之前，谷歌匆忙 [发布（#910）](/article-15533-1.html) 了 Bard 人工智能服务，但由于在一则宣传广告中 Bard 犯了事实性错误，从而导致谷歌股价跌去超过千亿美元。更令谷歌尴尬的是，ChatGPT 一词中的 “GPT” 是指 <ruby> 生成式预训练转化器 <rt>  Generative Pre-trained Transformer </rt></ruby>，而“转化器”技术是谷歌大脑团队在 2017 年发明和开源的神经网络架构，谷歌认为该架构非常适合语言理解，但它从未用它开发出产品。

>
> **[消息来源：Ars Technica](https://arstechnica.com/?p=1917223)**
>
>
>

>
> 老王点评：这让谷歌情何以堪啊！
>
>
>

### 播客失去了优势

在过去的十年里，播客改变了数百万人的收听习惯，但现在创作新节目的人越来越少，播客公司很难收回投资，而长期播客则在寻找保持节目持续发展的方法。与去年近 700 亿美元的电视广告支出相比，2022 年播客广告市场 15 亿美元的规模显得微不足道。统计数据显示，去年新创建的播客数量下降了 80%。也有报告显示，在多年的两位数百分比增长之后，2022 年的听众增长只有 5%。

>
> **[消息来源：Axios](https://www.axios.com/2023/02/09/podcasts-lose-edge-spotify)**
>
>
>

>
> 老王点评：或许播客会和博客一样，逐渐小众化和式微。
>
>
>


跟着我们的新指南学习开发 WebAssembly

# 跟着我们的新指南学习开发 WebAssembly

<img src="content_image/album_202302_15_204034uy4t9h6z6o06hj6j.jpg" alt="" title="">

>
> 使用 WebAssembly 开发有很多不同的方向，这取决于你已经知道的东西和你想建立的东西。
>
>
>

在过去的几十年里，Web 浏览器作为最流行的跨平台应用经久不衰。从另一个角度看浏览器，它是最受欢迎的应用交付平台之一。想想你使用的所有网站，它们取代了你过去用桌面上运行的软件进行的活动。你仍然在使用软件，但你是通过浏览器来访问它，而且是在别人的 Linux 服务器上运行。在优化我们所有人使用的软件的永恒努力中，软件开发世界早在 2019 年就引入了 WebAssembly，作为通过 Web 浏览器运行编译代码的一种方式。应用的性能比以往任何时候都要好，而且可以生成 WebAssembly 编码的语言远不只是通常的 PHP、Python 和 JavaScript。

### 一个目标和一种语言

关于 WebAssembly 的一个强大但也最令人困惑的地方是，“WebAssembly” 这个词既指一种语言，也指一个目标。WebAssembly 是一种汇编语言，但没有多少人选择直接用汇编写代码。即使是汇编语言，最终也会被转换为二进制格式，这也是计算机运行代码的要求。这种二进制格式也被称为 WebAssembly。不过这很好，因为这意味着你可以用你选择的语言来写一些最终以 WebAssembly 交付的东西，包括 C、C++、Rust、Javascript 和其他许多语言。

进入 WebAssembly 的途径是 Emscripten，这是一个 LLVM 编译器工具链，可以从你的代码中产生 WebAssembly。

### 安装 Emscripten

要在你的 Linux 或 macOS 电脑上安装 Emscripten，请使用 Git：

```
$ git clone https://github.com/emscripten-core/emsdk.git

```

改变目录进入 `emsdk` 目录并运行安装命令:

```
$ ./emsdk install latest
$ ./emsdk activate latest

```

Emscripten 工具链中的所有内容都安装在 `emsdk` 目录下，对系统的其他部分没有影响。由于这个原因，在使用 `emsdk` 之前，你必须 <ruby> 源引 <rt>  source </rt></ruby> 它的环境：

```
$ source ./emsdk_env.sh

```

如果你打算经常使用 `emsdk`，你也可以在 `.bashrc` 中加入环境设置脚本。

要在 Windows 上安装 Emscripten，你可以在 WSL 环境下运行 Linux。

请访问 [Emscripten 网站](https://emscripten.org/) 了解更多安装信息。

### Hello World

下面是一个用 C++ 编写的简单的 “Hello World” 应用。

```
#include <iostream>

using namespace std;

int main() {
    cout << "Hello world";
    return 0;
}

```

先把它作为你的系统的标准二进制文件来测试：

```
$ g++ hello.cpp -o world
$ ./world
Hello world

```

看到它像预期的那样工作，用 `emcc` 把它构建为 WebAssembly：

```
$ emcc hello.cpp -o world.html

```

最后，用 `emrun` 运行它：

```
$ emrun ./world.html

```

`emrun` 工具是一个用于本地测试的方便命令。当你在服务器上托管你的应用时，`emrun` 就没有必要了。

### 学习更多关于 WebAssembly 的知识

使用 WebAssembly 开发可以有很多不同的方向，这取决于你已经知道的东西和你想建立的东西。如果你了解 C 或 C++，那么你可以用这些来写你的项目。如果你正在学习 Rust，那么你可以使用 Rust。甚至 Python 代码也可以使用 Pyodide 模块来作为 WebAssembly 运行。你有很多选择，而且没有错误的开始方式（甚至有 COBOL 到 WebAssembly 的编译器）。如果你渴望开始使用 WebAssembly，

>
> **[请下载我们免费的电子书](https://opensource.com/downloads/webassembly-ebook)**
>
>
>

---

via: <https://opensource.com/article/23/2/webassembly-guide>

作者：[Seth Kenlon](https://opensource.com/users/seth) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #913 马斯克的推文是如何刷屏的

Summary:
? 马斯克的推文是如何刷屏的
? 现代和起亚被迫更新软件以应对“起亚挑战”
? 微软从 Windows 10 上永久移除 IE
»
»

# 硬核观察 #913 马斯克的推文是如何刷屏的

### 马斯克的推文是如何刷屏的

昨天，我们 [报道（#912）](/article-15540-1.html)了马斯克向“所有人”展示了他的推文。据报道，这件事是这样发生的：美国时间的上周日，马斯克发了关于超级碗的推文，但其曝光度只有 910 万，远不如美国总统拜登的 2900 万。愤怒的马斯克乘坐私人飞机回到湾区，立即要求 Twitter 团队给出答案。马斯克的堂弟在周一的凌晨 @ 了 Slack 上所有在线的人来解决这个紧急问题。这个凌晨的深夜召集了大约 80 人参与了解决这个问题。周一下午，我们看到了结果 —— Twitter 部署了代码自动高亮马斯克的所有推文，将马斯克的展示权重提高了 1000 倍！

>
> **[消息来源：Platformer](https://www.platformer.news/p/yes-elon-musk-created-a-special-system)**
>
>
>

>
> 老王点评：没错，有钱任性！但是抛开粗暴的作风之外，马斯克有较真的理由。
>
>
>

### 现代和起亚被迫更新软件以应对“起亚挑战”

在 TikTok 上病毒式传播的“起亚挑战”视频活动，源于一位盗车贼发布的视频，他详细介绍了如何使用 USB 线等简单工具绕过汽车的安全系统。盗车非常容易得手，2015-2019 年款的现代和起亚汽车缺乏基本电子防盗控制系统，以阻止盗车贼闯入和绕过点火装置。该视频助长了汽车盗窃案，“起亚挑战”视频被认为导致了数百起汽车盗窃，至少包括 14 起车祸和 8 起死亡事故。现代及其子公司起亚为其数百万辆汽车提供了免费的软件更新，将警报声长度从 30 秒延长到 1 分钟，且需要车钥匙插入点火开关才能启动汽车。

>
> **[消息来源：The Verge](https://www.theverge.com/2023/2/14/23599300/hyundai-kia-car-theft-software-update-free-tiktok-challenge)**
>
>
>

>
> 老王点评：虽然这种涉嫌犯罪的挑战活动很不好，但是汽车厂商孱弱的防护也是根本原因之一。
>
>
>

### 微软从 Windows 10 上永久移除 IE

出于兼容性理由，在 2022 年 6 月终止提供安全更新之后，IE 仍然留在 Windows 10 系统中，但本周二的更新在绝大多数 Windows 10 版本中禁用了 IE，用户被重定向到 Edge。作为 Edge 兼容模式的一部分，IE 的渲染引擎 MSHTML 将会一直支持到至少 2029 年。微软表示，会在完全退役 IE 兼容模式前提前一年通知用户。

>
> **[消息来源：Ars Technica](https://arstechnica.com/gadgets/2023/02/microsoft-will-forcibly-remove-internet-explorer-from-most-windows-10-pcs-today/)**
>
>
>

>
> 老王点评：不重要，但这是一个时代落幕的里程碑之一。
>
>
>


我们是如何聘请开源开发人员的

Summary: 我的团队不再采用标准的算法编程笔试，而是采用一套能够产出更多相关成果的流程。

面试能够使用互联网资源真的好啊

我的团队不再采用标准的算法编程笔试，而是采用一套能够产出更多相关成果的流程。

# 我们是如何聘请开源开发人员的

>
> 我的团队不再采用标准的算法编程笔试，而是采用一套能够产出更多相关成果的流程。
>
>
>

<img src="content_image/album_202302_16_074428qxbm44dxh00x42z7.jpg" alt="" title="people in different locations who are part of the same team">

作为初创安全公司 [Profian](https://profian.com/) 的首席执行官和联合创始人，我参与了我们聘请开发人员从事 [Enarx](https://enarx.dev/) 的工作。Enarx 是一个处理机密信息计算的安全项目，几乎完全用 [Rust 语言](https://opensource.com/article/21/3/rust-programmer) 编写（少部分用汇编语言）。Profian 现在已经在这次招聘找到了所有要找的人，一些开发人员将在接下来的几周内开始工作。然而，Enarx 绝对欢迎新的贡献者，如果事情继续顺利，公司将来肯定会雇用更多的人。

招聘人员并不容易，加上 Profian 还有一系列特别的要求，这让招人变得更加困难。因此我认为分享我们如何解决这个问题应该还蛮有意思的，而且也会对社区有帮助。

### 我们寻找什么样的人才？

以下就是我前文提到的特别要求：

* **系统编程**：Profian 主要需要那些喜欢系统层编程的人。这一层面的编程已经处于栈的底层，有很多直接与硬件或操作系统的交互。例如，要创建客户端-服务器部分，我们必须编写相当多的协议、管理加密等等，而这方面的工具还不是很成熟（请参阅下面的 “Rust” 一节）。
* **Rust**：项目几乎都是用 Rust 语言编写的，那些不是的则是用汇编语言写的（目前只有 x86 平台，尽管随着我们添加更多平台情况可能会有所改变）。Rust 是一门很新、很酷同时也令人兴奋的编程语言，但它同时也很年轻，并且一些领域没有你想要的所有支持或者没有你希望的那么成熟 —— 这包括从密码学到多线程库到编译器/构建基本架构。
* **分散各地的团队**：Profian 正在建立一个能够及时通讯联系的团队。Profian 在德国、芬兰、荷兰、北卡罗来纳州（美国）、马萨诸塞州（美国）、弗吉尼亚州（美国）和乔治亚州（美国）都有开发人员。我在英国，我们的社区经理在巴西，我们有来自印度和尼日利亚的实习生。从一开始我们就知道团队很难聚集在一个地方工作，因此我们需要能够通过视频、聊天和（最不济的情况下）电子邮件与人交流和协作的成员。
* **安全**：Enarx 是一个安全项目。虽然我们并不是专门在寻找安全专家，但我们需要能够将安全放在首位去思考和工作，并设计和编写适用于安全环境的代码的人。
* **Git**：我们所有的代码都存储在 Git 中（主要是 [GitHub](https://github.com/enarx/)，还有一些存在 GitLab）。我们围绕代码的大部分交互都是围绕 Git 进行的，因此任何加入我们团队的人都需要能自如使用它作为日常工作中的标准工具。
* **开源**：开源不仅仅是许可；更是一种心态，同时，这也是一种合作方式。大量开源软件是由不同地域的人创建的，他们甚至可能不认为彼此身处于一个团队。我们需要知道我们招的人不仅能在公司内部凝聚成一个紧密的团队，同时也能够与组织外部的人员协作，并接受 Profian 的“默认开放”文化，这里的开放不仅仅限于代码，还要有开放的讨论、沟通和文档。

### 我们是如何找到人才的？

正如我在其他地方提到的，[招聘很困难](https://aliceevebob.com/2021/11/09/recruiting-is-hard/)。Profian 使用多种方式寻找候选人，它们取得了不同程度的成功：

* 领英招聘广告
* 领英搜索
* 特定语言的讨论板和招聘板（例如，Reddit）
* 外部招募人员（特别致敬来自 [Interstem](https://www.interstem.co.uk/) 公司的 Gerald）
* 口耳相传/个人推荐

虽然很难从质量方面判断这些来源如何，但如果没有外部招聘人员，我们肯定会在数量上苦苦挣扎（我们也有一些来自该途径的优秀候选人）。

### 我们如何筛选出想要的人才？

我们需要按照上述的所有要求衡量所有候选人，但并非所有要求都是同等重要的。例如，虽然我们热衷于雇用 Rust 程序员，但那些在系统级别具有强大 C/C++ 技能的人也能成为团队里有用的一份子，因为他们能够很快掌握 Rust 语言。另一方面，熟悉使用 Git 是至关重要的，因为我们无法花时间去培养新团队成员，让他们跟上我们的工作方式。

你可能会觉得很惊讶，但强大的开源背景并不是必需的要求，在类似模式中工作的心态是必需的，而任何有开源参与历史的人都可能对 Git 有很好的了解。同理，在一个分散各地的团队中工作的能力这一条件上，我们认为有过任意开源社区的参与经历都会是个积极的指标，因为有如此多的开源项目都是由分散各地的人们完成的。至于安全这一条件，我们则一致决定这只是一个“锦上添花”的条件。

我们想让这个过程简单快捷。 Profian 没有设置专门的人力资源部门或人力职能，因为我们正忙于编写代码。以下是我们最终使用的招聘流程（实际流程中可能略有不同），我们试图在 1-2 周内完成招聘：

1. 初审：个人履历/简历/GitHub/GitLab/领英主页，决定是否面试
2. 我作为 CEO 和候选人进行一场 30-40 分钟的讨论，了解他们是否适合我们团队的文化，同时让他们有机会了解我们，并了解他们是否真的像在初审提交的材料中所说的那样精通技术
3. 由 Nathaniel 领导的有关技术方面的深入讨论，通常我也在场
4. 与团队其他成员谈话
5. 编码笔试
6. 快速决策（通常在 24 小时内）

编码笔试很关键，但我们决定不采用通常的方法。我们的观点是，许多科技公司钟爱的纯“算法编码”笔试对我们想要的几乎毫无用处：考察候选人是否可以快速理解一段代码，解决一些问题，并与团队合作完成以上的工作。我们创建了一个 GitHub 存储库，其中包含一些几乎可以正常运行的 Rust 代码（事实上，我们最终使用了两个，其中一个用于技术栈上层的人），然后让候选人修复它，在上面执行一些与 Git 相关的过程，并稍作改进，在此过程中添加测试。

测试中一个必不可少的部分是让候选人通过我们的聊天室与团队互动。我们安排了 15 分钟的视频通话时间用于设置和初始问题，两个小时用于做笔试（“开卷”——以及与团队交谈，鼓励候选人使用互联网上所有可用的资源），然后是 30 分钟的总结会议，在这个会议上团队可以提出问题，候选人可以思考任务。这个谈话，结合笔试期间的聊天互动，让我们了解了候选人与团队沟通的能力。候选人挂断电话之后我们通常会在 5-10 分钟内决定是否要雇用他们。

这种方法通常效果很好。一些候选人在任务上遇到困难，一些人沟通不畅，一些人在 Git 交互方面做得不好 —— 这些是我们没有雇佣的人。这并不意味着他们不是优秀的程序员或者以后不适合该项目或公司，但他们不符合我们现在需要的标准。在我们聘用的开发人员中，他们的 Rust 经验水平和与团队互动的需求各不相同，但 Git 专业知识水平以及他们在和我们讨论之后的反应始终足以让我们决定接受他们。

### 感想

总的来说，我不认为我们会对筛选过程进行大的改动 —— 尽管我很确定我们可以在搜寻过程环节做得更好。通过编码笔试，我们可以筛选掉相当多的候选人，而且很好地帮了我们挑选合适的人。希望通过了这次选拔的每个人都很适合这个项目并且产出出色的代码（以及测试和文档等等）。时间会证明一切！

---

本文最初发布于 [Alice、Eve 和 Bob – 安全博客](https://aliceevebob.com/) 上，经许可后重新发布。

---

via: <https://opensource.com/article/22/2/how-we-hired-open-source-developer>

作者：[Mike Bursell](https://opensource.com/users/mikecamel) 选题：[lujun9972](https://github.com/lujun9972) 译者：[XiaotingHuang22](https://github.com/XiaotingHuang22) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


如何使用 journalctl 查看和分析 systemd 日志（附实例）

Summary: 本指南介绍了 systemd 的 journalctl 工具及其各种命令的基础知识。你可以使用这些命令对 Linux 中的桌面和服务器日志进行故障诊断。以下是如何使用 journalctl 查看和分析 systemd 日志的不同例子。

# 如何使用 journalctl 查看和分析 systemd 日志（附实例）

>
> 本指南介绍了 [systemd](https://freedesktop.org/wiki/Software/systemd/) 的 journalctl 工具及其各种命令的基础知识。你可以使用这些命令对 Linux 中的桌面和服务器日志进行故障诊断。以下是如何使用 journalctl 查看和分析 systemd 日志的不同例子。
>
>
>

### 简介

很多人说 systemd 不好，它对系统的影响很大，这也是一个有争议的话题。但你不能否认的是，它提供了一套完善的工具来管理和排除系统故障。想象一下，当你遇到一个没有 GUI 的损坏系统时，你可能会把启动和 GRUB 弄得一团糟。在这种情况下，你可以从一个<ruby> 立付 <rt>  Live </rt></ruby>系统启动，挂上你的 Linux 分区，然后浏览 systemd 的日志，找出问题所在。

systemd 有三个基本组件，如下所示：

* `systemd`：Linux 操作系统的系统和服务管理器。
* `systemctl` ：该命令用于反观和控制 systemd 系统和服务管理器的状态。
* `systemd-analyze`：该命令提供系统启动时的性能统计，并从系统和服务管理器中检索其他状态和跟踪信息。

除了这三个服务外，systemd 还提供其他服务，如 journald、logind、networkd 等。在本指南中，我们将讨论 systemd 的 journald 服务。

### journald - systemd 日志服务

根据设计，systemd 提供了一个集中的方式来处理所有来自进程、应用程序等的操作系统日志。所有这些日志事件都由 systemd 的 journald 守护进程来处理。journald 守护进程收集所有来自 Linux 操作系统各处的日志，并将其作为二进制数据存储在文件中。

以二进制数据集中记录事件、系统问题的好处有很多。例如，由于系统日志是以二进制而不是文本形式存储的，你可以以文本、JSON 对象等多种方式进行转译，以满足各种需求。另外，由于日志是按顺序存储的，通过对日志的日期/时间操作，超级容易追踪到单个事件。

请记住，journald 收集的日志文件数以千行计，而且不断更新每次开机、每个事件。因此，如果你有一个长期运行的 Linux 操作系统，日志的大小应该以 GB 为单位。由于有着数以千计的日志，最好用基本命令进行过滤，以了解更多系统问题。

#### journald 配置文件

journald 的配置文件存在于以下路径中。它包含了关于如何进行日志记录的各种标志。你可以看一下这个文件，并进行必要的修改。但我建议不要修改这个文件，除非你知道自己在做什么。

```
/etc/systemd/journald.conf

```

#### journald 存储二进制日志文件的地方

journald 以二进制格式存储日志。它们被保存在这个路径下的一个目录中：

```
/var/log/journal

```

例如，在下面的路径中，有一个目录包含了迄今为止的所有系统日志。

不要使用 `cat` 命令，也不要使用 `nano` 或 `vi` 来打开这些文件。它们（是二进制的），无法正常显示。

### 使用 journalctl 来查看和分析 systemd 日志

#### journald 基本命令

查看 journald 日志的基本命令是：

```
journalctl

```

该命令提供了所有应用程序和进程的日志条目，包括错误、警告等。它显示的列表中，最旧的日志在顶部，当前的日志在底部。你需要不断按回车键来逐行滚动浏览。你也可以使用 `PAGE UP` 和 `PAGE DOWN` 键来滚动。按 `q` 键可以退出这个视图。

#### 如何以不同时区的时间查看日志条目

默认情况下，`journalctl` 以当前系统时区显示日志的时间。然而，你可以很容易地在命令中提供时区，将同一日志转换为不同的时区。例如，要以 UTC 查看日志，请使用以下命令：

```
journalctl --utc

```

#### 如何在日志中只查看错误、警告等信息

系统产生的日志有不同的优先级。有些日志可能是可以忽略的警告，有些可能是重要的错误。你可能想只看错误，不看警告。这也可以用下面的命令来实现。

要查看紧急系统信息，请使用：

```
journalctl -p 0

```

错误代码：

```
0: 紧急情况
1: 警报
2: 危急
3: 错误
4: 警告
5: 通知
6: 信息
7：调试

```

当你指定错误代码时，它显示该等级及更高的所有信息。例如，如果你指定下面的命令，它会显示所有优先级为 2、1 和 0 的信息：

```
journalctl -p 2

```

#### 如何查看特定启动的日志

当你运行 `journalctl` 命令时，它会显示当前启动的信息，即你正在运行的会话中的信息。但也可以查看过去的启动信息。

在每次重启时，日志都会持续更新。journald 会记录不同启动时的日志。要查看不同启动时的日志，请使用以下命令。

```
journalctl --list-boots

```

* 第一个数字显示的是 journald 的唯一的启动跟踪号码，你可以在下一个命令中使用它来分析该特定的启动。
* 第二个数字是启动 ID，你也可以在命令中指定。
* 接下来的两个日期、时间组合是存储在相应文件中的日志的时间。如果你想找出某个特定日期、时间的日志或错误，这就非常方便了。

要查看一个特定的启动号码，你可以选择第一个启动跟踪号码或启动 ID，如下所示。

```
journalctl -b -45

```

```
journalctl -b 8bab42c7e82440f886a3f041a7c95b98

```

你也可以使用 `-x` 选项，在显示屏上添加 systemd 错误信息的解释。在某些情况下，这是个救命稻草。

```
journalctl -xb -p 3

```

#### 如何查看某一特定时间、日期的日志记录

`journalctl` 功能强大，可以在命令中提供类似英语的参数，用于时间和日期操作。

你可以使用 `--since` 选项与 `yesterday`、`today`、`tomorrow` 或 `now` 组合。

下面是一些不同命令的例子。你可以根据你的需要修改它们。它们是不言自明的。以下命令中的日期、时间格式为 `"YYYY-MM-DD HH:MM:SS"`

```
journalctl --since "2020-12-04 06:00:00"

```

```
journalctl --since "2020-12-03" --until "2020-12-05 03:00:00"

```

```
journalctl --since yesterday

```

```
journalctl --since 09:00 --until "1 hour ago"

```

你也可以将上述内容与错误级别开关结合起来。

#### 如何查看内核特定的日志记录

Linux 内核信息也可以从日志中提取出来。要查看当前启动时的内核信息，请使用以下命令：

```
journalctl -k

```

#### 如何查看某个服务、PID 的日志

你可以从 journald 日志中过滤出某个 systemd 服务单元的特定日志。例如，如果要查看 NetworkManager 服务的日志，请使用下面的命令。

```
journalctl -u NetworkManager.service

```

如果你不知道服务名称，可以使用下面的命令来列出系统中的 systemd 服务。

```
systemctl list-units --type=service

```

#### 如何查看用户、组的日志

如果你正在分析服务器日志，在多个用户登录的情况下，这个命令很有帮助。你可以先用下面的命令从用户名中找出用户的 ID。例如，要找出用户 `debugpoint` 的 ID：

```
id -u debugpoint

```

然后使用 `_UID` 选项指定该 ID 与来查看该用户产生的日志。

```
journalctl _UID=1000 --since today

```

同样地，使用 `_GID` 选项也可以查到用户组的情况。

#### 如何查看一个可执行文件的日志

你也可以查看某个特定程序或可执行文件的日志。例如，如果你想找出 `gnome-shell` 的信息，你可以运行以下命令。

```
journalctl /usr/bin/gnome-shell --since today

```

### 结束语

希望本指南能帮助你使用 `journalctl` 查看分析 Linux 桌面或服务器上的 systemd 日志，排除故障。如果你知道如何使用这些命令，systemd 日志管理的功能非常强大，它能让你在调试时的生活变得轻松一些。现在所有主流的 Linux 发行版都使用 systemd。Ubuntu、Debian、Fedora、Arch 它们都使用 systemd 作为其默认的操作系统组件。如果你想了解不使用 systemd 的 Linux发行版，你可能想看看 [MX-Linux](https://www.debugpoint.com/tag/mx-linux)、Gentoo、Slackware、Void Linux。

---

via: <https://www.debugpoint.com/systemd-journalctl/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed) 译者：[Chao-zhi](https://github.com/Chao-zhi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Rnote：一个用于笔记和注释的开源绘图应用

Summary: Rnote 可以让你做笔记、绘图和注释文件。听起来你需要它？让我们来了解一下。

linux上安装手绘板驱动还是个大麻烦，我宁愿用纸质

Wacom已经原生支持了。厂家对Linux的支持是很积极的，还有配套设施（如libwacom），都是开源的。不过除了KDE Plasma和GNOME，厂家和其他桌面环境没有提供配置工具。

国产的绘王也有Linux驱动，虽然闭源，但也是开箱即用了。（但愿有大神开发开源替代驱动。）

来自39.144.134.34的 Chrome Mobile 109.0|Android 12 用户

Rnote 可以让你做笔记、绘图和注释文件。听起来你需要它？让我们来了解一下。

# Rnote：一个用于笔记和注释的开源绘图应用

>
> Rnote 可以让你做笔记、绘图和注释文件。听起来你需要它？让我们来了解一下。
>
>
>

我们已经介绍了许多记笔记的应用，但支持手写笔记的选项却屈指可数。

Rnote 就是这样一个有用的应用，它可以让你做手写笔记并对文件/图片进行注释。当然，你需要一个绘图板或一个带有手写笔的设置来使用 Rnote。

### Rnote: 基于矢量的绘图应用，用于绘制草图和手写笔记

Rnote 是一个用 Rust 和 GTK 4 编写的令人印象深刻的开源应用。

它提供了一个专注于手写笔输入的自适应用户界面。它看起来很简约，但却提供了手写笔记所需的一些基本功能。

让我强调一下它能做的一些事情。

### Rnote 的特点

[Rnote](https://rnote.flxzt.net) 是一个简洁而有很多功能的绘图/记事应用程序。一些功能包括：

* 支持具有各种笔画风格的压敏笔输入
* 用形状工具添加不同的形状
* 一个选择工具，可以移动、旋转、调整大小和修改你添加/绘制的内容
* 文档扩展布局
* 可定制的页面格式
* 可定制的背景颜色、图案和尺寸
* 支持笔的反馈声音
* 可重新配置的手写笔按钮快捷键
* 集成的工作区浏览器可快速访问媒体文件
* 支持拖放
* 支持剪贴板
* 支持常见的页面格式（A6、A5、US letter 等）
* 从 PDF、位图和 SVG 文件导入
* 使用原生的 .rnote 文件来保存/加载文件
* 支持导出到 SVG 和 PDF
* 自动保存功能
* 深色/浅色模式

开发者指出，Rnote 使用的原生文件格式可能不够稳定，无法在较新版本的应用之间兼容。

因此，在将 Rnote 升级到最新版本之前，最好在完成工作后将其导出。

除了它的功能外，你还能通过可用的选项获得良好的用户体验。它不会让人感到压抑，你可以快速访问所有的工具。

一些自定义功能可以隐藏滚动条，改变光标，并调整绘图光标。

你还可以调整自动保存启动的时间间隔，这在各种使用情况下应该很方便。

### 在 Linux 上安装 Rnote

Rnote 在 [Flathub](https://flathub.org/apps/details/com.github.flxzt.rnote) 上以 Flatpak 的形式提供。因此，只要你的系统启用了 [Flatpak](https://itsfoss.com/flatpak-guide/)，你就可以在任何 Linux 发行版上安装它。

你可以在你的软件中心找到它（如果 Flatpak 集成已被启用），或者输入以下命令来安装它：

```
flatpak install flathub com.github.flxzt.rnote

```

要探索更多关于 Rnote 的信息，请前往其 [GitHub 页面](https://github.com/flxzt/rnote)。

### 总结

Rnote 正在积极开发，并在其功能设置方面取得了良好的进展。如果你喜欢 Rnote，你可能想看看 [Xournal++](https://xournalpp.github.io)，它是另一个能让你做手写笔记的应用。

你还知道其他像 Rnote 这样令人兴奋的应用吗？你觉得 Rnote 怎么样？请在下面的评论中分享你的想法。

---

via: <https://itsfoss.com/rnote/>

作者：[Ankush Das](https://itsfoss.com/author/ankush/) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #914 Rust 是如何诞生的

Summary:
? Rust 是如何诞生的
? Adobe 对 Figma 的收购面临欧盟反垄断调查
? 拯救 Linux 内核的 IA64 支持
»
»

# 硬核观察 #914 Rust 是如何诞生的

### Rust 是如何诞生的

2006 年，29 岁的 Mozilla 程序员 Graydon Hoare 返回位于温哥华的公寓时，发现软件崩溃导致电梯发生故障。他的公寓在 21 楼，在爬楼梯时他感到很恼火，认为“这太荒唐了，我们搞计算机的人甚至不能制造一部不崩溃的电梯。”软件的崩溃通常与内存相关，而电梯等设备的软件通常是用 C 或 C++ 开发的，此类编程语言容易意外引入导致崩溃的内存漏洞。Hoare 则决定做点事情，他开始设计一种新的编程语言，希望能用它写出没有内存错误的高性能代码。他将其命名为 Rust 语言，以“锈”菌的名字命名，这种真菌以生命顽强著称。17 年后，Rust 变成了世界最热门的语言之一。

>
> **[消息来源：Technology Review](https://www.technologyreview.com/2023/02/14/1067869/rust-worlds-fastest-growing-programming-language/)**
>
>
>

>
> 老王点评：不只是 Rust 语言，很多编程语言也是，很多发明都源自于创造者遇到的困难和烦恼。
>
>
>

### Adobe 对 Figma 的收购面临欧盟反垄断调查

Adobe 提出的 200 亿美元 [收购（#765）](/article-15051-1.html) 设计公司 Figma 的交易面临着欧盟漫长的调查。欧盟委员会表示，它已经收到了一些国家监管机构提出的调查该交易的请求。该机构说，这项交易可能 “严重影响” 互动产品设计和白板软件市场的竞争。它现在将要求 Adobe 公司通报该交易，这两家公司在没有得到欧盟许可的情况下不能继续进行这项交易。

>
> **[消息来源：彭博社](https://www.bloomberg.com/news/articles/2023-02-15/adobe-s-20-billion-figma-deal-faces-eu-antitrust-probe)**
>
>
>

>
> 老王点评：这起收购可能要黄啊。
>
>
>

### 拯救 Linux 内核的 IA64 支持

有开发者报告说，“Linux 的 IA64 移植没有维护者，根据它唯一剩下的用户的报告，它已经坏了一个月了，而没有人关心。”他建议 “扔掉” IA64 架构支持，Linus Torvalds 发表了他的看法：“我不是 IA64 这个架构的粉丝，但是完全取消它有点悲哀”，而且觉得维护它也并不太麻烦 —— 至少 Linux 内核中还有更多早该淘汰的架构，比如 DEC 的 Alpha 架构。这个时候，一位 Debian 开发者站出来表示愿意接手，“我肯定有时间照顾这个架构，因为我也在 Debian 中维护它。”他甚至还专门保留了一台 IA64 的机器来测试它。英特尔在 2021 年 7 月正式并最终退役了 IA64 架构，标志着这个 Unix 小型机继承者的失败。

>
> **[消息来源：The Register](https://www.theregister.com/2023/02/16/itanium_linux_kernel/)**
>
>
>

>
> 老王点评：可能真的没多少人使用，但是好歹有人维护就留着吧。
>
>
>


Opera 浏览器计划集成 ChatGPT

Opera 都被 360 买了

来自美国的 Chrome 102.0|Chrome OS 14695.173 用户

# Opera 浏览器计划集成 ChatGPT

<img src="content_image/album_202302_17_091254j3ntjya2wr2ojjkn.jpg" alt="" title="">

>
> 据报道，Opera 浏览器正在寻求将语言模型 ChatGPT 集成到其桌面和移动产品中。
>
>
>

### 摘要

* 据报道，流行的桌面和移动网络浏览器 Opera 浏览器正在探索将语言模型 ChatGPT 集成到其产品中。
* 微软最近宣布将 ChatGPT 的制造商 OpenAI 技术集成到其 Edge 网络浏览器中，为用户添加人工智能功能。

### Opera 与 ChatGPT

[Opera](https://www.opera.com/)，一个被广泛使用的桌面和移动网络浏览器，将把语言模型 ChatGPT 集成到它的软件产品中。Opera 的母公司昆仑科技是这一新闻的幕后推手，尽管这次集成的细节仍然有限。Opera 提供了一系列软件产品，包括桌面网络浏览器、移动网络浏览器以及其为 Chromebook 设计的浏览器版本。

最有可能整合 ChatGPT 的是 Opera 的主要桌面浏览器，包括 Opera 浏览器和 Opera GX（这是一款为游戏玩家设计的浏览器）。然而，也有可能集成到 Opera 的移动浏览器中，包括常规的 Opera 移动浏览器、Opera Mini 和 Opera Crypto 浏览器。

### 来自微软和谷歌的最新更新

微软上周宣布将 OpenAI 集成到其 Edge 网络浏览器中，成为头条新闻。这种集成将在未来为 Edge 用户带来两种人工智能功能，即 “<ruby> Chat <rt>  聊天 </rt></ruby>” 和 “<ruby> 撰写 <rt>  Compose </rt></ruby>”。“聊天”功能可以让用户在浏览器中直接与人工智能交流。同时，“撰写”功能帮助用户进行文本撰写，包括使用不同的语气和长度撰写电子邮件和社交媒体帖子。

在最近的一次演示中，谷歌没有宣布将人工智能聊天机器人直接集成到其 Chrome 浏览器中，这一举措得到的回应并不热烈。

### 下一步是什么

据 Statcounter 统计，Opera 浏览器被数亿用户使用，在全球浏览器市场占有 2.4% 的份额。虽然它可能落后于谷歌 Chrome 的 65% 和 Safari 的 18%，但与 Mozilla Firefox 的 3% 相比，它仍然保持着自己的优势。

昆仑科技是一家在深圳证券交易所上市的北京公司。本周，中国搜索巨头百度宣布计划在其搜索产品中集成 ChatGPT 风格的机器人。

总之，ChatGPT 与 Opera 浏览器的集成代表着人工智能网络浏览向前迈出的重要一步。随着微软和百度等公司将人工智能技术融入其产品，Opera 将自己定位为该领域的领导者。

随着数亿用户和浏览器市场的日益增长，ChatGPT 与 Opera 的集成是一项备受期待的发展。

参考：[CNBC](https://www.cnbc.com/2023/02/09/web-browser-opera-is-planning-to-incorporate-chatgpt.html)

---

via: <https://debugpointnews.com/opera-chatgpt-integration/>

作者：[arindam](https://debugpointnews.com/author/dpicubegmail-com/) 选题：[lkxed](https://github.com/lkxed) 译者：[gpchn](https://github.com/gpchn) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


为什么企业应该选择平台即服务（PaaS）

这是绑定客户一大利器。

# 为什么企业应该选择平台即服务（PaaS）

<img src="content_image/album_202302_17_094352atasztuxqg4t1ctt.jpg" alt="" title="">

>
> 平台即服务能够快速、轻松地创建网络应用，而无需购买和维护其下的软件和基础设施。本文解释了它为什么有用。
>
>
>

<ruby> 平台即服务 <rt>  PaaS </rt></ruby>（以下简称 PaaS）指的是云计算服务，它为客户提供了开发、运行和管理应用程序的平台，而免去了建立和维护与开发和启动应用程序相关的基础设施的复杂工作。这是云原生应用和支持系统所依托的核心平台。

PaaS 通常包括不同的应用基础功能，包括应用平台、集成平台、业务分析平台、事件流服务和移动后端服务。此外，它还包括一套与监控、管理、部署相关的功能。

开发人员希望他们的开发环境不需要等待，而运营团队则更关心性能和稳定性。这经常引起两方间的冲突。PaaS 为这两方创造了和平的环境。一个作为服务交付的应用平台被称作 PaaS，它被用于部署用户代码。Cloud Foundry、Cloudify 和 OpenShift 这些开源环境都可用作 PaaS。

### PaaS 的采用模式

云计算必须满足五个基本特征：按需服务、接入网络、资源池化、弹性和可度量的服务。为此，云计算提供了三种服务模式：<ruby> 软件即服务 <rt>  Software as a Service </rt></ruby>（SaaS）、<ruby> 平台即服务 <rt>  Platform as a Service </rt></ruby>（PaaS）、<ruby> 基础设施即服务 <rt>  Infrastructure as a Service </rt></ruby>（IaaS）。

业务选用 PaaS 的关键驱动力：

* 减少提供业务的资本支出和运营费用
* 通过减少应用程序的交付时间和提高开发和交付质量，最大限度地降低 IT 成本
* 增加中间件之间的灵活性和集成度

*简单 PaaS*：踏入 PaaS 领域的入口。它可以提供应用程序服务，并将它们暴露在自助服务的目录中；自动部署和计量服务使用的资源。

*管理 PaaS*：管理已配置应用程序的<ruby> 服务级别协议 <rt>  SLA </rt></ruby>和<ruby> 服务质量 <rt>  QoS </rt></ruby>，例如弹性、应用程序性能、安全性等。

*编程 PaaS*：允许应用程序与外部应用程序或公共云集成，并实现自动扩展和云爆发场景。

*面向流程 PaaS*：允许通过创建持续交付流程来实现<ruby> 开发运维 <rt>  DevOps </rt></ruby>流程，该流程可以自动构建、测试应用程序并将其交付到云环境中。

除了这些采用模式之外，还有其他的 PaaS 变体如下，这些变化可能与上文的模式有一定重合：

*集成平台即服务（iPaaS）*：一套能够开发、执行和管理集成流的云服务。集成流可以是个人内部或跨多个组织连接的，可以包含任何企业内部或基于云的流程、服务、应用和数据。这些组合变化可能也符合上述的模式之一，例如 MuleSoft CloudHub 和 BizTalk。

*移动平台即服务（mPaaS）*：为开发移动应用提供的集成开发环境（IDE），并且支持多种移动平台。

*数据库平台即服务（dbPaas）*：一种按需的、安全且可扩展的自助式数据库平台，可自动配置和管理数据库。dbPaaS 使扩展数据库变得更加容易，并使它们更加可靠。

*物联网平台即服务（IoTPaaS）*：提供了实现异构物联网拓扑所需的通信、安全、分析和管理的通用基础架构。它为构建物联网解决方案提供了更简单、更敏捷的模型。

*业务流程管理平台即服务（bpmPaaS）*：一个完整的预集成业务流程管理平台，托管在云端并作为服务交付。它被用于开发和执行整个企业的业务流程和以工作流程为中心的应用程序。例如 Pega cloud 和 OpenText Cordys cloud。

PaaS 的一些基本特征：

* 在同一集成开发环境中开发、测试、部署、托管和维护应用程序的服务
* 多租户架构，即多个并发用户使用同样的开发程序
* 部署软件的内置可扩展性，包括负载平衡和故障转移
* 与异构平台和系统的集成
* 支持开发团队的协作
* 包含处理帐单和管理订阅的工具

### 主要的开源 PaaS

在选择 PaaS 之前，企业主要考虑关注以下几点：

* 部署灵活性
* 操作简便性
* 应用堆栈的选择
* 语言、数据库和框架支持
* 规模的可扩展性
* 服务质量（QoS）
* 开发和运营的工具
* 它有多适合你的业务

现在让我们快速浏览下流行的开源 PaaS。

*Cloud Foundry*：提供了多种云的选择、开发者框架和应用服务。Cloud Foundry 使构建、测试、部署和扩展应用程序变得更快、更容易。

它有不同的发行版本，其中比较流行的是 Pivotal 和 IBM。它包含应用<ruby> 运行时 <rt>  runtime </rt></ruby>和容器运行时。在 Pivotal 上包含有应用服务和容器服务。

*OpenShift*：红帽的云计算 PaaS 产品。这是一个云端的应用平台，应用开发者和团队可以在这里构建、测试、部署和运行他们的应用程序。

*Cloudify*：在开放的原则下开发和设计，用以推动 IT 转型革命。它使组织能够在其上设计、建立和提供各种商业应用和网络服务。Cloudify 的最新版本为 4.3，它包含了先进的安全、控制和<ruby> 真自服务 <rt>  true self-service </rt></ruby>等增强功能。Cloudify 4.3 还为 Kubernetes 容器编排引入了全新的概念。

| 功能 | Cloud Foundry | Cloudify | OpenShift |
| --- | --- | --- | --- |
| 核心功能 | Cloud controller | Manager | Broker |
| 提供第三方数据库服务 | Service broker | Agent | Cartridge |
| 传入流量的路由 | Router | Manager | REST API |
| 查询应用程序的状态 | Cloud controller | CLI client | Broker |
| 消息传递 | Message bus | Manager | Broker |
| 应用实例管理 | Droplet execution agent | Agent | Node |
| 应用程序状态管理 | Health manager | Manager | Broker |
| Broker | Warden | Agent | Gear |
| 用户请求的负载平衡 | Droplet execution agent | Manager | Broker |
| 框架提供者 | Blob store | Agent | Cartridge |
| 技术 |  |  |  |
| 语言 | Java, Ruby, Scala, Node.js, Groovy, Grails, PHP, Go, Python | Java, PHP, Ruby | Java, Ruby, Node.js, PHP, Python, Perl, JavaScript |
| 数据库 | MongoDB，MySQL |  |  |
| MongoDB、MySQL、PostgreSQL | MySQL、MongoDB | MongoDB、MySQL、PostgreSQL |  |
| 框架 | Spring, Rails, Grails, Play Sinatra | JavaScript, Node.js | Rails, Flask, Django, Drupal, Vertx |
| 水平扩展 | 是 | 是 | 是 |
| 垂直扩展 | 是 | 否 | 是 |
| 弹性伸缩 | 是 | 是 | 是 |

表 1 列出了 Cloud Foundry、Cloudify 和 OpenShift 的基本功能及其对应的架构组件。以上完全基于个人观点，所支持的功能的真实需求应与云供应商进行验证。

从行业统计数据中，我们可以清楚地看出 PaaS 的使用率正在迅速上升。PaaS 使企业应用程序可以是<ruby> 云无关 <rt>  cloud-agnostic </rt></ruby>的，它们可以在任何云平台上运行——无论是公共的还是私有的。这意味着一个在亚马逊的 AWS 上开发的应用可以很容易地移植到微软 Azure、VMWare vSphere、Red Hat RHEV 等等其他平台。

当多个开发人员共同参与一个开发项目，或外部用户需要与开发过程协作时，PaaS 是很有用的。因此，PaaS 尤其适合于敏捷开发，因为它降低了围绕软件快速开发和迭代的难度。

### 鸣谢

作者感谢 Kiran M.R. 和 Wipro 有限公司的数字架构实践 Raju Alluri 为本文提供的支持。

---

via: <https://www.opensourceforu.com/2022/09/why-enterprises-should-opt-for-platform-as-a-service/>

作者：[Gopala Krishna Behara](https://www.opensourceforu.com/author/gopalakrishna-behara/) 选题：[lkxed](https://github.com/lkxed) 译者：[onionstalgia](https://github.com/onionstalgia) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


用 Penpot 弥合设计和代码之间的鸿沟

Summary: 用 Penpot 这个开源的设计工作空间来弥合编程和设计之间的鸿沟。

用 Penpot 这个开源的设计工作空间来弥合编程和设计之间的鸿沟。

# 用 Penpot 弥合设计和代码之间的鸿沟

>
> 用 Penpot 这个开源的设计工作空间来弥合编程和设计之间的鸿沟。
>
>
>

在计算机编程的大部分历史中，在创建应用的代码的程序员和创建应用的用户体验（UX）的设计师之间一直存在着鸿沟。这两个学科接受的培训大不相同，他们使用的工具也不同。程序员使用文本编辑器或集成开发环境来编写代码，而设计师则经常绘制小部件布局和潜在交互的示意图。虽然一些 IDE，像 [Eclipse](https://opensource.com/article/20/12/eclipse) 和 [Netbeans](https://opensource.com/article/20/12/netbeans)，有界面设计组件，但它们通常专注于小部件的位置而不是小部件的设计。开源设计应用 [Penpot](http://penpot.app) 是一个协作式设计和原型设计平台。它有一套新的功能，使设计师和开发者可以很容易地用熟悉的工作流程协同工作。Penpot 的设计界面可以让开发者在设计过程中和谐地编写代码，这是其他工具所无法做到的。自从我们 [上次介绍它](https://opensource.com/article/21/9/open-source-design) 以来，它已经有了长足的进步。它的最新功能不仅改善了你使用 Penpot 的体验，还推动了开源的 Penpot 应用超越类似的专有工具。

### 用 Penpot 做原型

在设计应用的最佳工作方式时，常见问题之一是在设计的时候这个应用还不存在。设计师可以通可视化和故事板来帮助设计团队和程序员了解目标是什么。但这是一个需要迭代和反馈的过程，当开发人员开始实施 UX 设计，设计会发生变化以应对对代码的实际变化。

使用 Penpot，你可以为你的网络或移动应用创建一个“可用”原型。你可以将按钮与特定的行动联系起来，根据用户的输入触发布局的变化。而这一切都可以在项目的代码存在之前完成。

但是，这方面最重要的不是模拟的能力。在 Penpot 中为应用的设计所做的一切都有可用的布局数据，开发人员可以在最终的项目中使用它们。Penpot 不仅仅是一个出色的绘图和布局工具。它为编码过程提供了信息。

Penpot 现在不仅仅是提供了一个设计师特定元素的视觉列表，如属性、颜色和排版，而是将代码输出直接整合到设计工作区（就像 Web 浏览器中的开发者工具）。设计师和开发人员共享设计和前端开发的相同空间，以他们需要的任何格式获得规格。

### 内存解锁

许多在线设计工具使用专有技术来提供一些花哨的功能，但代价是基本上成为一个应用，你只能运行它，而不能通过浏览器访问。不过 Penpot 使用开放的网络标准，并由你的网络浏览器渲染。这意味着 Penpot 可以访问浏览器可用的最大内存，使得 Penpot 成为第一个具有设计扩展性的在线原型和布局应用。你可以提供更多的选项、更多的模型，和更多的场地。此外，你可以向更多的并发协作者开放你的设计空间，而不必担心应用的内存耗尽。

### 自我托管和 SaaS

Penpot 是开源的，所以你不用必须在云上使用它，如果这不适合你的工作流程。你可以在一个容器中轻松地自我托管 Penpot，在你自己的工作站上作为一个本地应用使用，或者在你自己的服务器上为你的组织托管它。

### 开源设计

我以前写过一篇 [Penpot 的介绍性文章](https://opensource.com/article/21/12/open-source-design-penpot)，自那以后，这个应用变得更好了。如果你想把程序员和相关人员带入你的设计过程中，那么请试试 Penpot。

---

via: <https://opensource.com/article/23/1/merge-design-code-penpot>

作者：[Seth Kenlon](https://opensource.com/users/seth) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #915 马斯克警告说，人工智能是文明的 “最大风险之一”

Summary:
? 马斯克警告说，人工智能是文明的 “最大风险之一”
? 微软称与新必应对话过多会使其“犯糊涂”
? 龙芯架构开始支持 KVM 虚拟化
»
»

对于普通用户，异架构虚拟机其实挺难装的。最好Boxes之类的软件能添加支持。

Aarch64之类的电脑太贵。树梅派价格都翻了几倍。

# 硬核观察 #915 马斯克警告说，人工智能是文明的 “最大风险之一”

### 马斯克警告说，人工智能是文明的 “最大风险之一”

马斯克在迪拜举行的世界政府峰会上表示：“ChatGPT 表明人工智能已经得到了令人难以置信的发展，而这是我们都应该担心的事情。”马斯克是 ChatGPT 背后的 OpenAI 公司的联合创始人，但他已经在 2018 年离开了 OpenAI 的董事会，不再持有该公司的股份。最初 OpenAI 是作为一个开源的非营利组织而创建的，但现在为了盈利而转为闭源。而他决定建立 OpenAI 的部分原因是，“谷歌对人工智能的安全性不够重视。”汽车、飞机和医学等必须遵守监管安全标准，而人工智能还没有任何规则或条例来控制其发展。他认为“需要监管人工智能的安全”，因为它对社会的风险实际上更大，即便监管“可能会使人工智能的速度放慢一些”。

>
> **[消息来源：CNBC](https://www.cnbc.com/2023/02/15/elon-musk-co-founder-of-chatgpt-creator-openai-warns-of-ai-society-risk.html)**
>
>
>

>
> 老王点评：自己亲手打造的魔盒，最终放出来的是不是灯神谁也说不好。
>
>
>

### 微软称与新必应对话过多会使其“犯糊涂”

在发现由 ChatGPT 驱动的新必应搜索引擎会侮辱用户、对他们撒谎和情绪化地操纵人们之后，微软说它现在正在根据反馈采取行动，以改善回应的语气和精确性，并警告说长时间的聊天会话可能导致问题。必应团队说，它没有 “完全想到” 人们将其聊天界面用于社交娱乐或作为“发现世界的一般工具”。它发现，15 个或更多问题的长时间聊天会话可能会让必应的模型混淆。

>
> **[消息来源：The Verge](https://www.theverge.com/2023/2/16/23602335/microsoft-bing-ai-testing-learnings-response)**
>
>
>

>
> 老王点评：这算不算一种“言多必失”？?
>
>
>

### 龙芯架构开始支持 KVM 虚拟化

虽然 Linux 5.19 合并了龙芯架构的部分补丁，启用了对龙芯 CPU 的支持，但内核移植并没有完全完成，一些龙芯 3A5000 的功能仍未在主线内核启用。周二，龙芯工程师发出了初步的 24 个补丁，以在 3A5000 处理器上支持 KVM 的硬件虚拟化。目前，“已经能够启动龙芯 Linux 客体机”。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/LoongArch-Linux-KVM)**
>
>
>

>
> 老王点评：虽然进展不算快，但是相对而言，已经有了很大进步。
>
>
>


GNOME 正在（某种程度上）恢复在几年前删除的功能

Gnome 果然整天折腾菜单栏。

# GNOME 正在（某种程度上）恢复在几年前删除的功能

>
> GNOME 的设计做了一些有意义的变化，它（某种程度上）带回了一个它早先删除的类似功能。
>
>
>

几年前，GNOME 移除了应用程序的菜单和指示器。

如果你不太清楚，应用程序指示器是一种从顶部面板与后台运行的应用程序进行交互的方式。

是的，你可以 [添加一个应用程序指示器的扩展](https://itsfoss.com/enable-applet-indicator-gnome/) 来获得同样的功能。但是，在使用 GNOME 桌面环境的发行版上，如 Fedora，你不再能找到默认的能力。

然而，Ubuntu，它的一些 [官方版本](https://itsfoss.com/which-ubuntu-install/)，以及其他发行版如 Pop!\_OS，支持系统托盘图标，尽管 GNOME 放弃了它们。

现在，经过多年的设计变化，看起来我们可能会看到类似的东西。

### GNOME 将添加一个检查后台活动程序的简便方法

目前，在没有活动窗口的情况下，找出在后台运行的应用程序并没有简便的方法。

你必须使用 [任务管理器](https://itsfoss.com/task-manager-linux/) 或 [系统监控工具](https://itsfoss.com/linux-system-monitoring-tools/) 以获得更好的观测能力。

在未来的 GNOME 版本中（可能是 GNOME 44），你或许可以期待有一个功能可以直接从顶部面板的菜单面板上监控后台运行的应用程序。

[Allan Day](https://gitlab.gnome.org/aday) 的想法仍在讨论中，他分享了一个 [设计模拟图](https://gitlab.gnome.org/Teams/Design/os-mockups/-/issues/191)。不过，它很有可能会被接受。

这个想法也促使开发者 [Georges Basile Stavracas Neto](https://github.com/GeorgesStavracas) 披露了 Flatpak 的 xdg-desktop-portal 组件，它可以使得检测运行中的 Flatpak 应用程序变得容易。

>
> ? 检查后台应用程序这个功能的位置或设计仍在进行中；你在上面看到的内容可能会随着最终的实施而改变。
>
>
>

### 这是否也会使应用指示器回归？

并非如此。

通过这个功能，GNOME 旨在让你快速看到后台运行的应用程序，并对它们进行管理（关闭它们或访问特定的设置）。

然而，你仍需要少量点击来达到这一点 ?。

小程序指示器或系统托盘图标是访问在后台运行的应用程序更快捷的方式，尽管不是每个后台应用程序都被列出。

毕竟，这总比没有好。

而最终，这些设计上的变化可能会产生一种直观的方式，以某种形式让应用指示器回归。

? 你对这个决定与即将发布的 GNOME 设计变化有何看法？请在下面的评论中分享你的想法。

参考：[Phoronix](https://www.phoronix.com/news/GNOME-Monitor-Background-Apps)

---

via: <https://news.itsfoss.com/gnome-design-quick-access/>

作者：[Ankush Das](https://news.itsfoss.com/author/ankush/) 选题：[lkxed](https://github.com/lkxed/) 译者：[SJFCS](https://github.com/SJFCS) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


借助开源软件开发包尝试量子计算编程

Summary: Qiskit 是一个开源 SDK，借助它可以免费访问量子模拟器和硬件资源。

Qiskit 是一个开源 SDK，借助它可以免费访问量子模拟器和硬件资源。

# 借助开源软件开发包尝试量子计算编程

>
> Qiskit 是一个开源 SDK，借助它可以免费访问量子模拟器和硬件资源。
>
>
>

经典计算机是基于二进制数的，二进制数有 0 和 1 两种形式。这并不是由于二进制逻辑系统比有更多基本状态的逻辑系统（甚至包括模拟计算机）有内在优势。而是，对电路元件的开关操作很容易实现，而且借助先进的半导体技术，可以制造出体积小且价格低廉的计算机。

但它们并非没有局限性。经典计算机求解某些问题的效率并不高，主要是那些时间或内存成本随着问题的规模（O）呈指数级增长的问题。我们把这种问题称为 O(2 n)（[大 O 表示法](https://en.wikipedia.org/wiki/Big_O_notation)）。

大部分现代加密方法甚至依赖这一特性。把两个大素数相乘，耗费的成本低（O(n 2)），但进行反向操作就非常耗时。所以只要使用的数字足够大，对它分解质因数就非常困难。

### 进入量子世界

量子计算的基础数学和力学知识不在本文的探讨范围内。然而，还是有一些基础知识需要预先说明。

量子计算机以 [量子比特](https://en.wikipedia.org/wiki/Qubit) 代替了二进制比特 —— 量子比特是体现量子属性的可控计算单元。构成量子比特的通常是超导元件，或自然界中存在的量子实物（例如电子）。量子比特可以以“<ruby> 叠加 <rt>  superposition </rt></ruby>”状态存在，叠加态是 0 和 1 以某种方式组合起来的复杂状态。你可能听说过，量子比特既为 1 又为 0，这种说法并不准确。真实情况是，如果进行测量，量子比特的状态会坍缩为 0 或 1。在数学上，量子比特未测量的状态可以看作 <ruby>   布洛赫球面  <rt>  Bloch sphere </rt></ruby> 的几何表示上的一个点。

尽管对习惯使用经典计算机的任何人来说，叠加态是一个全新的概念，但一个量子比特本身并没有什么趣味性。量子计算的第二个概念是“<ruby> 干涉 <rt>  interference </rt></ruby>”。真正的量子计算机本质上是统计性质的。量子算法对干涉图案进行编码，增加了可以测量编码方案的状态的概率。

叠加和干涉的概念虽然新颖，但在物理世界中也有对应的现象。而量子力学中的“<ruby> 纠缠 <rt>  entanglement </rt></ruby>”却没有，但它是实现指数级量子加速的真正关键。借助量子纠缠，对一个微观粒子的测量可以影响后续对其他被纠缠的粒子的测量结果 —— 即使是那些物理上没有关联的粒子。

### 量子计算能做什么？

今天的量子计算机就其包含的量子比特的数量而言是相当小的，只有几十到几百个。因此，虽然人们不断开发新的算法，但比同级别经典计算机运行得快的硬件还未问世。

但是在很多领域，量子计算机能带来很大好处。例如，它能提供较好的方法来模拟自然界的量子系统，例如分子，其复杂程度超过了经典计算机的建模能力。量子计算也跟线性代数有关，它是机器学习和很多其他现代优化问题的基础。因此，我们有理由认为量子计算也可以很好地适用于此。

在量子算法相对于普通算法的优势方面，[Shor 算法](https://en.wikipedia.org/wiki/Shor%27s_algorithm) 是经常被提及的例子，它在较早时候就用于分解质因数。它由 MIT 的数学家 Peter Shor 于 1994 年发明，量子计算机目前还不能在较大的问题上运行该算法。但它已经被证明可以在 O(n 3) 时间内完成工作，而不像经典算法那样需要指数级的时间。

### 从使用 Qiskit 开始

你可能在想：“我身边没有量子计算机，但我很想尝试一下。能做到吗？”

我们来了解一下名称为 [Qiskit](https://qiskit.org/) 的开源项目（采用 Apache 2.0 许可证）。它是一个软件开发包（SDK），用于访问 IBM 量子实验室的量子计算模拟器和物理硬件（免费）。你只需要注册获得一个 API 密钥。

当然，如果要深入研究 Qiskit，需要很多其他方面的知识，线性代数只是其中一部分，这些都远远超出了本文的范围。如果你需要深入学习，网上有很多免费资源，其中也不乏完整的教科书。然而，体验一下也很简单，只需要一些 Python 和 Jupyter notebook 的基础知识即可。

为了增加趣味性，我们全程使用 [Qiskit 教程](https://qiskit.org/textbook/preface.html) 的 “Hello, World!” 程序：

首先，安装教程的相关工具和部件：

```
pip install git+https://github.com/qiskit-community/qiskit-textbook.git#subdirectory=qiskit-textbook-src

```

下一步，进行软件包的导入：

```
from qiskit import QuantumCircuit, assemble, Aer
from math import pi, sqrt
from qiskit.visualization import plot_bloch_multivector, plot_histogram

```

`Aer` 是本地模拟器。Qiskit 包括四个组件：`Aer`、基础组件 `Terra`、用于实际的量子系统上的噪音和错误处理的 `Ignis`，以及用于算法开发的 `Aqua`。

```
# Let's do an X-gate on a |0> qubit
qc = QuantumCircuit(1)
qc.x(0)
qc.draw()

```

虽然底层数学原理还涉及到矩阵乘法，量子计算机中 X 门也可以认为类似于经典计算机中的非门。（事实上，它经常被称为 "非门"）。

现在，运行并测量它。结果跟你预期的一样，因为量子比特的初始状态是 `|0>`，接着反转，然后被测量。（使用 `|0>` 和 `|1>` 与经典计算机中的比特区分开来。）

```
# Let's see the result
svsim = Aer.get_backend('statevector_simulator')
qobj = assemble(qc)
state = svsim.run(qobj).result().get_statevector()
plot_bloch_multivector(state)

```

*布洛赫球体显示了预期的运行结果*

### 结论

在某些方面，你可以把量子计算看作用于经典计算机的一种独特的协处理器，跟 GPU 和 FPGA 一样。不同的是，在可预见的未来，量子计算机可以被用户像网络资源一样访问到。另一个差异是，它们的工作有本质的不同，所以不像很多其他你熟悉的加速器那样。因此，人们对算法开发如此感兴趣，并投入大量资源来研究量子在何时何地的性能最好。了解一下这些东西也无妨。

---

via: <https://opensource.com/article/21/6/qiskit>

作者：[Gordon Haff](https://opensource.com/users/ghaff) 选题：[lujun9972](https://github.com/lujun9972) 译者：[cool-summer-021](https://github.com/cool-summer-021) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Summary:
? ChromeOS 现在运行在 Linux 和 Zephyr 之上
? GoDaddy 遭到了持续多年的入侵
? 谷歌向苹果提供上百亿的 Chrome iOS 搜索收入分成
»
»

# 硬核观察 #916 ChromeOS 现在运行在 Linux 和 Zephyr 之上

### ChromeOS 现在运行在 Linux 和 Zephyr 之上

你可能知道谷歌的 ChromeOS 是一个 Linux 发行版。但是，现在，它在引擎盖下运行的不止是 Linux。有证据表明，ChromeOS 最初是在 2009 年 11 月从 Ubuntu Linux 中产生的，Canonical 帮助了谷歌。然而，几个月之后，Chrome OS 就切换到了 Gentoo Linux。是的，没错，那个 Linux 铁杆极客的发行版。这是因为“支持特定板卡构建和改进我们的工具的需求变得更加迫切，……Portage 的构建工具很适合我们的需要。”但 ChromeOS 也不会停留在 Gentoo 上，最近的 ChromeOS 版本是基于谷歌定制的 Linux 内核的。而如今，它也在实时操作系统 Zephyr 上运行。2021 年 7 月，Chromebook 从最初的谷歌 Chrome 嵌入式控制器切换到基于 Zephyr 的控制器。这是一个永远在线的超低功率微控制器，对于延长 Chromebook 的电池寿命至关重要。

>
> **[消息来源：The Register](https://www.theregister.com/2023/02/14/chromeos_opinion_column)**
>
>
>

>
> 老王点评：简单的来说，就是 ChromeBook 在醒着到时候运行 Linux，睡着时运行 Zephyr。
>
>
>

### GoDaddy 遭到了持续多年的入侵

GoDaddy 是世界上最大的域名注册商之一，它还为全球 2000 多万客户提供了托管服务。GoDaddy 是在去年 12 月初收到客户报告其网站被重定向到随机域名后，发现未知攻击者入侵了它的 cPanel 共享托管环境。黑客不仅在它的服务器上安装了恶意程序，还窃取了部分服务相关的源代码。它的调查显示攻击者在它的服务器上活跃了多年，近几年披露的多起安全事故都与此相关。其中 2021 年 11 月的事件影响到了它管理的 120 万 WordPress 客户。

>
> **[消息来源：Bleeping Computer](https://www.bleepingcomputer.com/news/security/godaddy-hackers-stole-source-code-installed-malware-in-multi-year-breach/)**
>
>
>

>
> 老王点评：还好这次披露的事件目前只涉及到 Web 托管部分，而不是 DNS 部分。
>
>
>

### 谷歌向苹果提供上百亿的 Chrome iOS 搜索收入分成

虽然大家都知道谷歌向苹果、三星和其他制造商支付了数十亿美元，以使其搜索引擎成为设备的默认配置，但据披露，英国竞争和市场管理局一直在调查 iOS 上的 Chrome 浏览器，以及它在谷歌与苹果的搜索收入分享协议中的作用。谷歌与苹果的交易到 2021 年达到了每年 150 亿美元之高。英国竞争监督机构担心，谷歌对苹果的付款使苹果不愿意与谷歌竞争，大量的付款就是为了什么都不做。这或许可以解释为什么苹果公司虽然利润丰厚，但却没有推出搜索引擎，也没有投资开发其 Safari 浏览器与 Chrome 竞争。

>
> **[消息来源：The Register](https://www.theregister.com/2023/02/17/google_apple_chrome_ios_revenue/)**
>
>
>

>
> 老王点评：这或许就是买路钱。
>
>
>


Live Captions：Linux 上的开源视频字幕应用

也不知道中文怎么样，估计不好（

# Live Captions：Linux 上的开源视频字幕应用

>
> Live Captions 是一个用于 Linux 桌面的应用程序，为视频提供即时、本地和开源的字幕。
>
>
>

在一个完美的世界里，所有的视频都会有文字说明，直播视频也会有字幕。这不仅是没有听力的人能够参与流行文化和视频聊天的要求，对于有听力的人来说，这也是一种奢侈，他们只是喜欢阅读所说的内容。但并不是所有的软件都有内置的字幕，有些软件是依靠第三方的云服务来实现的。[Live Captions](https://github.com/abb128/LiveCaptions) 是 Linux 桌面上的一个应用，为视频提供即时、本地和开源的字幕。

### 安装 Live Captions

你可以通过 [Flatpak](https://opensource.com/article/21/11/install-flatpak-linux) 安装 Live Captions。

如果你的 Linux 发行版没有附带软件中心，请从终端手动安装它。首先，添加 [Flathub](https://flathub.org/apps/details/net.sapples.LiveCaptions) 仓库：

```
$ flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

```

接下来，安装应用：

```
$ flatpak install flathub net.sapples.LiveCaptions

```

### 启动 Live Captions

要启动 Live Captions，从你的应用菜单中启动它。

或者，你也可以使用 `flatpak` 命令从终端启动它：

```
$ flatpak run net.sapples.LiveCaptions

```

你也可以使用类似 [Fuzzpak](https://www.redhat.com/sysadmin/launch-flatpaks-terminal-fuzzpak) 的命令：

```
$ fuzzpak LiveCaptions

```

当 Live Captions 首次启动时，你会看到一个配置页面：

你可以设置字体、字体大小、颜色等。默认情况下，Live Captions 不是完全确定的文本会以更深的颜色呈现（LCTT 校注：因为有些语音识别结果不能确保完全正确）。如果你使用实时字幕是为了方便，这可能没有必要，但如果你听不到视频的声音，那么知道哪些文本可能不正确是有用的。

你可以随时返回偏好页面，所以你的选择不一定是最终的。

### 使用 Live Captions

当 Live Captions 开始运行，任何通过系统声音传来的英语单词都会被打印到 Live Captions 窗口中。

这不是一项云服务。不需要 API 密钥。没有遥测或间谍活动，也没有数据收集。事实上，它甚至不需要网络权限。Live Captions 是开源的，所以没有使用专有的服务或库。

要改变声音输入，请点击 Live Captions 窗口左上方的麦克风图标。要打开 “<ruby> 偏好 <rt>  Preferences </rt></ruby>” 窗口，请点击 Live Captions 窗口左下方的齿轮图标。

### 开放访问

根据我的经验，Live Captions 的结果是好的。它们并不完美，但在小型的 [Jitsi 视频通话](https://opensource.com/article/21/9/alternatives-zoom)中，它很出色。即使是小众的视频（例如 Warhammer 40K 的激烈比赛），它也做得出奇地好，只在最虚构的科幻术语上磕磕碰碰。

让开源代码易于访问是至关重要的，最终它有可能使每个人受益。我个人不需要 Live Captions，但当我不想听视频的时候，我喜欢使用它。当我希望得到帮助以专注于我可能会分心的事情时，我也会使用它。Live Captions 不仅仅是一个有趣的开源项目，它也是一个重要的项目。

---

via: <https://opensource.com/article/23/2/live-captions-linux>

作者：[Seth Kenlon](https://opensource.com/users/seth) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


“是时候为开源做贡献了”

# “是时候为开源做贡献了”

Nilesh Vaghela 是 AWS 的<ruby> 社区英雄 <rt>  community hero </rt></ruby>，也是一家云计算开源公司 ElectroMech Corporation 的创始人。据 Nilesh 说，为开源做出贡献本身就是一种有意义的事。但是它需要人们的投入和奉献，而这个过程涉及许多步骤，从选择项目到确保你的贡献成果获得关注。在与 OSFY的 Abbinaya Kuzhanthaivel 的对话中，他分享了一些关于开发人员如何帮助提高印度对开源的贡献的技巧。

### 问：你能告诉我们一下你目前的角色和对开源的贡献吗？

**答：** 我目前是一名从事自动化工作的架构师。我领导着多个团队，并且同时主要在开源安全服务平台 Invinsense 上作出贡献。我在 1998 年初创建了开源小组，当时已经有大约 1500 名成员。我现在管理的一个小组 (<https://groups.google.com/g/vglug>) 自 2014-15 年以来一直非常活跃。

### 问：你是如何开始在开源项目中工作的？

**答：** 我是一名有着从业资格的机械工程师，当时我在我的公司 ElectroMech Corporation 负责调制解调器和 UPS 系统。我慢慢地被拖入负责 PC、网络和 Linux 等等。1996 年，我在核科学中心看到超过 150 台计算机服务器在 Linux 上运行时广受启发，之后便开始尝试。自此我将我的公司完全转变为专注于培训和支持的开源公司。

我可以自豪地说，我是最早一批使用开源的人 —— 帮助客户了解什么是开源、它有什么好处、什么是免费的、安全或代码问题等等。我们在 Vadodara 得到了至少四五个客户，并且最终通过黄页上的广告宣传自己。我们与 Red Hat 合作并且关系一直持续到现在。

### 问：自那以来你认为开源发展如何？

**答：** 我可以说，早些时候，开源是一种令人着迷的强烈爱好，吸引人们参与其中。当一些来自西伯利亚的贡献者致力于改善水资源短缺问题时，世界各地的用户都说他们的产品有多么简单易用，这给我留下了特别深刻的印象。它更像是一项企业社会责任（CSR）活动。人们和专家创建一个委员会来管理和推进项目。人们会因为对技术的热爱而加入进来，没有任何期望。

那时我并不相信开源可以商业化，但它是当今大多数创新和技术的驱动力，而且越来越多的企业正在采用它。我们期待在贡献和使用开源方面取得很好的平衡，因为我们有个人、社区和大公司参与进来。这才是开源真正的未来和力量。

### 问：你可以分享一些自己遇到的困难吗？

**答：** 最初我是单枪匹马干，但一旦人们知道我的意图是好的，他们就会加入我。我在没有任何期望的情况下创建了很多社区，但确实在声誉或名望方面间接地获得了回报；有人理解我是技术达人，并长期给我项目。在早期，人们刚开始加入社区并且不需要付出很多精力就可以做出贡献。因为我的目标不是做生意，因此可以说我没有真正面临什么障碍。

### 问：作为社区领袖，你的领导格言和经验教训是什么？

**答：** 首先，如果你想建立一个社区，那就保持中立，不要抱有偏见。虽然看起来好像是你作为领导者正在管理一个社区，但请记住，加入社区的人都是平等地做出贡献的。永远不要让成员失去动力。在发表评论和回答问题时要有礼貌。不管是什么问题，如果你不想回答，那就选择沉默。但别让人们停止提问，而是帮助他们建立专业知识。

第二，不要让社区掺杂商业。不要让社区的目标和你个人企业的目标产生混淆和互相匹配。将它们严格区分开来。

始终尝试鼓励人们参与，而不是作为专家提供指导。如果你发现人们有兴趣领导项目并采取主动，请给出舞台让他们发挥。邀请他们参与社区活动。这将帮助你培养更多的社区领袖。此外，让你的社区保持简单，不要在初始阶段让赞助商参与进来。

### 问：你从谁那里得到了灵感？

**答：** 开源运动之父 Richard Stallman 是我的灵感来源，我一直很钦佩他的项目。

除了他之外，我还有一个有趣的事要分享，它激励着我从事开源工作。在我开始从事开源工作的时候，核科学中心的大部分软件都是基于 Windows 操作系统的。然而，许多科学家希望使用基于 Linux 的软件。在两三个月内，他们实际上创建了 Linux 驱动程序。这就是让我着迷的地方——用户可以创建这些驱动程序，这在专有软件中是不太可能发生的。我真的很喜欢开源赋权用户这一点。

### 问：你对印度开源格局以及改进空间有什么看法？

**答：** 印度是使用开源的人最多的国家（LCTT 校注：或应加上“之一”），我们正致力于成为贡献者。有这么多开发者，印度却仍然没有软件巨头。我们拥有的主要是服务提供者，而不是创新者。更多的人应该成为开源的贡献者，去开发具有国际标签的东西。

为开源做贡献的想法应该从学校和大学抓起。幸运的是，古吉拉特邦政府已经在 8 年级到 10 年级里推出基于 Linux 的课程。教育年轻一代并让他们了解开源模型很重要。

其次，我们要培养好的导师。当人们开始贡献时，找到一位在这个项目中工作的开源导师很重要。导师给出了一个小任务，尝试代码然后提交。如果一切顺利，成员的贡献会逐渐增加。不幸的是，在印度导师很少。我们需要有很多导师，或者可以与世界各地的导师建立联系。

第三是要鼓励那些踊跃贡献的人。让人们发现，一旦你成为了一位广受认可的开发人员或为开源开发做出贡献的人，你在职业发展和业务上也会有所突破。

通过遵循这些简单的方法，印度可以成为开源的主要贡献者。

### 问：你如何看待为开源做出贡献时编程方面的要求？

**答：** 根据我的经验，如果你知道计算机内部的知识，如何开发应用程序，你应该维护什么样的代码标准，以及如何管理团队和其他最佳做法，你可能不必担心编程专业知识。

在设计、安全维护和整合方面还有其他角色可以担任。看看你合适什么。通过做你喜欢的事情来不断提升加强自己的技能。如果你仍然对编码感兴趣，那么你就在其他开发人员的支持下去学习。

### 问：你如何确定一个你想参与的项目？

**答：** 你需要了解你最感兴趣的几个领域，然后对围绕这些领域发生的项目进行研究。你需要弄清楚哪些领域有招募更多志愿者的需求或职位空缺。 你可以从小处着手练习，然后积累专业知识。

避免随大流；重要的是你的个人兴趣。例如，因为现在 DevOps（开发运维一体化）的需求量很大，你便可能更倾向于选择 DevOps 项目。不要犯这个错误。

你可以在云原生基金会（[CNCF](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwib2vvv3dv3AhVa7XMBHfZSCsIQFnoECAgQAQ&url=https%3A%2F%2Fwww.cncf.io%2F&usg=AOvVaw2LnRyH4SZPDHntRLJU_b3q)）、Apache、Fedora、Red Hat 等平台上找到开源项目。通过这种方式，你还可以找到已经在从事项目并可以给出适当指导的导师。

### 问：每个项目有自己的目的和目标受众，有时它们甚至与开源目标不一致。那么，在开始做出贡献之前要核实什么？

**答：** 我同意，当有人开始一个开源项目但随后又将其商业化时，你会感到为开源作出贡献也变得颇有难度。但这样的风险总是会有的，不应让你对此感到挫败。

首先试着去了解该小组 —— 小组中的贡献者有多受欢迎，他们贡献了多长时间，以及他们的声誉如何。一旦你加入，观察每一个人和每一件事是关键。尝试至少学习三到六个月，并了解一切是如何运作的。如果你发现他们的意图不对，你可以随时离开这个项目。但如果你觉得没问题，那就继续做贡献吧。

你可以看看他们是否有某些许可证，例如 GPLv3。你还可以查看未修改的许可证版本，例如 Apache 开源许可证。

### 问：你觉得大公司会接受应届生投稿吗？

**答：** 是的，当然。公司也喜欢指导新人。他们通常不允许你直接贡献，但可能先会给你一个小任务。导师会首先尝试了解你拥有什么技能以及你的能力如何。一旦他们认可你具备所需的技能，他们将继续指导你或根据你的技能将你分配给其他导师。初始阶段非常关键。很多公司都会做一些筛选，只有在你证明了自己的能力之后，你才会被允许做出贡献。

### 问：贡献者在接手项目时必须克服的最初挑战是什么？

**答：** 首先，你应该非常认真地对待你的贡献。没有书面承诺，贡献者可能倾向于对工作掉以轻心。这种想法是完全错误的。尝试每天投入 8-10 小时或任何可行的时间。如果你因为觉得没有立竿见影的回报而不愿投入其中，那么你就不是一个好的贡献者。

在最初阶段始终严格遵守导师的指导。这对于健康的贡献非常重要。有时你可能会认为自己擅长某事，而你的导师可能不会根据该技能给你分配项目。在这种情况下只需找你的导师，问他你应该做什么，你的角色是什么，以及你可以如何贡献。

### 问：许多开发人员在提交项目贡献后没有得到回复。如何让自己提交的东西被人注意到呢？

**答：** 写一篇关于你计划作出贡献的项目的小博客，包括你喜欢的方面，你不喜欢的地方，以及可以改进的地方。这种积极的推广方式可以帮到你很多。

成为小组的一员并参与与该项目相关的活动。作为贡献的替代，首先尝试参与到团队中去，这将增加你被采纳为贡献者的机会。

一旦你对项目有了更好的了解，你的工作不仅会被接受，而且你将能够更好地适应该项目。

### 问：你如何克服你的贡献不被接受的情况？

**答：** 就是理解发生这种情况的原因有很多 —— 也许你没有在合适的项目中，或者你没有做出正确的贡献。如果项目是国家驱动的，你的请求可能不会被接受。因此，如前所述，请记得列个清单。如果你的贡献没有被接受，请不要担心，因为要么你不适合该项目，要么该项目不适合你。

我会建议尝试找四到五个项目，并且至少有一个项目会接受你所做的工作。

### 问：你对我们的读者有何想说的？

**答：** 开源是当今大多数创新背后的驱动力。让我们根据自己的能力和技能试着做出贡献，而不是仅仅使用开源。贡献可以是代码、文档、测试、博客、金钱等。是时候做出贡献了。

### 问：ElectroMech 公司有招人的计划吗？

**答：** 我们在云计算 DevOps（开发运维一体化）方面有需求，正在招聘云架构师、Python 开发人员、Linux 架构师和安全专业人员。

---

via: <https://www.opensourceforu.com/2022/06/its-time-to-contributing-to-open-source/>

作者：[Abbinaya Kuzhanthaivel](https://www.opensourceforu.com/author/abbinaya-swath/) 选题：[lkxed](https://github.com/lkxed) 译者：[XiaotingHuang22](https://github.com/XiaotingHuang22) 校对：[校对者ID](https://github.com/%E6%A0%A1%E5%AF%B9%E8%80%85ID)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


elementary OS 7 安装指南及截图

# elementary OS 7 安装指南及截图

在这篇文章中，我们将介绍如何在笔记本电脑或台式机上一步一步地安装 elementary OS 7，并附有截图。它基于最新和稳定的 Ubuntu 22.04 LTS。

elementary OS 7 的代号为 “Horus”，并带来了很多改进，例如：

* 改进了 AppCenter 和安装所有需要的应用。
* 改进了侧载和可选商店（Flathub）的体验。
* 最新的 GNOME Web 43，支持创建网络应用。
* 快速获得操作系统和应用的更新
* 电源配置文件管理
* 应用描述的改进

### elementary OS 7 的系统要求

* 双核 64 位处理器
* 4GB 内存或更多
* 32GB 硬盘
* 互联网接入
* 可启动的 USB 驱动器（4GB 存储空间）

闲话少说，让我们进入安装步骤：

### 1）下载 elementary OS 7

使用下面的官方网址来下载 ISO 文件。

>
> **[下载 elementary OS 7 ISO](https://elementary.io/)**
>
>
>

ISO 文件下载完成后，将其刻录到 USB 驱动器，并使其可启动。

在 Windows 操作系统中，用 Rufus 制作可启动的 USB 驱动器。在 Linux 中，请参考以下网址：

>
> **[如何在 Ubuntu/Linux Mint 上创建可启动的 USB 驱动器](https://www.linuxtechi.com/create-bootable-usb-disk-dvd-ubuntu-linux-mint/)**
>
>
>

### 2）用可启动介质启动系统

现在用可启动的 USB 驱动器启动目标系统。从 BIOS 设置中把启动介质从硬盘改为 USB。当系统用 USB 驱动器启动时，我们将看到以下页面。

### 3）选择安装语言

选择你喜欢的语言，然后点击“<ruby> 选择 <rt>  Select </rt></ruby>”。

### 4）选择键盘布局

在这一步，你将被要求选择键盘布局，然后点击“<ruby> 选择 <rt>  Select </rt></ruby>”。

### 5）尝试或安装 elementary OS

我们将看到下面的页面，在这里我们必须选择安装类型。它给了我们以下选项：

* <ruby> 试用演示模式 <rt>  Try Demo Mode </rt></ruby> – 试用 elementary OS 7 而不安装
* <ruby> 擦除磁盘并安装 <rt>  Erase disk and Install </rt></ruby> – 安装程序将擦除整个磁盘并自动创建所需分区。
* <ruby> 自定义安装（高级） <rt>  Custom Install (Advanced) </rt></ruby> – 它将给我们一个选项来创建自定义分区。

在这篇文章中，我将使用第二个选项（擦除磁盘并安装）。

点击“<ruby> 擦除磁盘并安装 <rt>  Erase disk and Install </rt></ruby>”。

在下面的屏幕上，选择要安装操作系统的驱动器，然后点击“<ruby> 擦除并安装 <rt>  Erase and Install </rt></ruby>”。

如果你想对设备的驱动器进行加密，那么点击“<ruby> 选择密码 <rt>  Choose Password </rt></ruby>”，否则点击“<ruby> 不加密 <rt>  Don’t Encrypt </rt></ruby>”。

### 6）安装进度

正如我们在下面看到的，安装已经开始，并且正在进行中。

安装完成后，安装程序将提示重启系统。

点击“<ruby> 重启设备 <rt>  Restart Device </rt></ruby>”，不要忘记从 BIOS 设置中改变启动介质，以便用磁盘启动。

### 7）创建本地用户并设置主机名

当系统在安装后启动时，系统会提示你输入本地用户的详细信息和系统的主机名。

根据你的要求指定这些细节。

点击“<ruby> 完成设置 <rt>  Finish Setup </rt></ruby>”。

在下面的页面中，你将被提示输入你在上面创建的本地用户凭证。

输入凭证后，点击回车。

### 8）elementary OS 7 欢迎页

我们将看到下面的欢迎页。

选择“<ruby> 跳过所有 <rt>  Skip All </rt></ruby>”。

点击“<ruby> 开始使用 <rt>  Get Started </rt></ruby>”，然后我们会看到下面的桌面。

很好，这表明你已经成功地在系统上安装了 elementary OS 7。这就是本指南的全部内容，请探索这个令人兴奋的 Linux 发行版并享受其中的乐趣吧?。

---

via: <https://www.linuxtechi.com/elementary-os-7-installation-guide/>

作者：[Pradeep Kumar](https://www.linuxtechi.com/author/pradeep/) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Summary:
? 无法从 Ubuntu Linux 中消除 Ubuntu Pro 的广告
? 新的 GitHub Copilot 将为开发者写出 40-60% 的代码
? 非 GNU/Linux 的 Linux
»
»

先不说我不看好去 GNU 化这件事，Chimera Linux 这个名字难道不会引起和 Chimera OS 的混淆？

一旦投放广告，就要定向/精准，而这就牵扯到隐私。

毕竟只有通过分析浏览记录以及键盘输入才能确定哪个广告更适合。

没有谁比BAT更懂广告

去GNU化。。。。。我只能说那你不用GNOME啊

那用KDE

# 硬核观察 #917 无法从 Ubuntu Linux 中消除 Ubuntu Pro 的广告

### 无法从 Ubuntu Linux 中消除 Ubuntu Pro 的广告

在更新 Ubuntu 时，它会提示你安装 esm-apps 软件包，以通过 Ubuntu Pro 获得更多的安全更新。当然，你可以获得一个免费的 Ubuntu Pro 账户，为不超过 5 台的计算机获得更多安全支持。但是，如果你不想用它，也不想看到这个广告信息，你可能认为永久防止这些信息的方法之一是删除提供 Ubuntu Advantage 集成的软件包。但你不能这样做。正如 Ubuntu #1950692 错误所描述的，该软件包现在是核心的 ubuntu-minimal 元包的一个依赖关系，所以如果你删除它，它将会删除其他多个核心包。

>
> **[消息来源：The Register](https://www.theregister.com/2023/02/17/ubuntu_advantage/)**
>
>
>

>
> 老王点评：就没有“免费”的午餐，但是 Canonical 一直将广告打到 Ubuntu 中，并且不能删除，总是有些失望。
>
>
>

### 新的 GitHub Copilot 将为开发者写出 40-60% 的代码

GitHub 更新了它的 Copilot 编码助手，变得更智能，它建议的代码的接受度从 2022 年 6 月的 27% 提升到现在的 46%，而 Java 代码的接受度甚至高达 61%。此外，它还新提供了一个漏洞过滤系统，以阻止不安全的编码模式，如 SQL 注入或硬编码凭证。新的漏洞扫描器使用大型语言模型来“接近静态分析工具的行为”，虽然不会像那样严格。

>
> **[消息来源：Dev Class](https://devclass.com/2023/02/16/github-claims-new-smarter-copilot-will-block-insecure-code-writes-40-60-of-developer-output/)**
>
>
>

>
> 老王点评：就像大部分手工制品都会被机器淘汰，以后编码这种手工活早晚被替代。
>
>
>

### 非 GNU/Linux 的 Linux

有一些 Unix 极客坚持认为 Linux 应该正确地被称为 GNU/Linux，因为内核是用 GNU C 编译器构建的，所有东西都是针对 GNU C 库链接的，使用 GNU Coreutils，通常还有来自 GNU 项目的其他多个组件。[Chimera Linux](https://chimera-linux.org/) 是一个正在建设中的新发行版，它不仅是无 systemd 的，而且也是无 GNU 的。它的创建者希望在今年春天达到 alpha 测试。Chimera 用 LLVM 编译，使用与轻量级 Alpine Linux 发行版相同的 musl C 库和打包工具，新的 Dinit 初始化系统，用户空间其余的大部分都来自当前版本的 FreeBSD。

>
> **[消息来源：The Register](https://www.theregister.com/2023/02/13/chimera_non_gnu_linux)**
>
>
>

>
> 老王点评：这说明 Linux 并不一定必须的 GNU 的，也可以是 Free 的。
>
>
>


LibreOffice 简史

# LibreOffice 简史

<img src="content_image/album_202302_20_191328egg1odg1gegdgd91.jpg" alt="" title="">

>
> LibreOffice 的起源故事，它是一个开源的办公解决方案，确保你总是能够访问你的数据并控制你的创造力。
>
>
>

在 2009 年初，[OpenOffice.org](http://OpenOffice.org)（OOo）还是微软 Office 在个人办公生产力套件市场的主要竞争对手。这个流行的开源办公套件的社区，期待着 11 月在意大利奥尔维耶托举行的研讨会。事情进展顺利，未来看起来很光明。

可这之后，同年 4 月，<ruby> 甲骨文公司 <rt>  Oracle </rt></ruby> 宣布了对 <ruby> 太阳计算机系统公司 <rt>  Sun Microsystems </rt></ruby> 的收购计划。

就个人而言，我觉得这对 [OpenOffice.org](http://OpenOffice.org) 来说是个坏消息。甲骨文对开源套件没有兴趣，我料想它会放弃这个项目。当然，我更希望在研讨会上被证明是我想错了。但到最后，甲骨文只派了一名代表来到奥尔维耶托，乏善可陈，含糊其辞地谈论了货币化和品牌重塑。我和其他社区成员们都觉得，最担心的事情成真了。

那一年，社区成员从奥尔维耶托返程之后决定采取行动。是时候兑现 [OpenOffice.org](http://OpenOffice.org) 项目的承诺了。我们决心创建一个独立的基金会来管理项目的资产，在社区的保护下促进套件的开发。[OpenOffice.org](http://OpenOffice.org) 将不再隶属于哪一家公司，而是属于它的用户和个人贡献者们。

### 建立基金会

当时，[OpenOffice.org](http://OpenOffice.org) 项目分布在世界各地，在语言社区帮助下进行本地化和推广，其中最主要的四个是：

* 德国：该软件诞生于德国，而且 Star Division（负责 [OpenOffice.org](http://OpenOffice.org) 的部门）的总部也在汉堡，因此开发者群体和德语支持者之间沟通顺畅。
* 法国：政府支持这个开源软件。
* 意大利：我所在的小组。
* 巴西。

2010 年初，在法国和德国语言社区的倡议下，最活跃的志愿者 —— 连同一些独立开发者和 SUSE 的开发者们 —— 着手建立了一个复刻项目，旨在作为一个额外的选择，让全球社区和投资 [OpenOffice.org](http://OpenOffice.org) 的企业能够同时参与进来。

我在国际商业咨询机构已有超过 30 年的工作经验了。在这个项目中负责市场营销和战略沟通。

随后的几个月里，活动越发忙碌。由于从 Star Division 传来的消息越来越负面，每周都得召开一次电话会议。

即使 [OpenOffice.org](http://OpenOffice.org) 的解散似乎迫在眉睫，我们还是通过发布文章征稿（CFP）的方式，确认了位于布达佩斯的研讨会仍将举办。当然，复刻项目的成员在做的也和往年别无二致。他们提交了演讲提案并制定了旅行计划。

### 一个安全的文件存放处

夏初，复刻项目几乎要完成了。我们的小组在布达佩斯开会评估 [OpenOffice.org](http://OpenOffice.org) 方面的境况，并召开了第一次面对面的组织会议。

布达佩斯的研讨会进行得很顺利，为期三天日程中举行了会议、主题演讲和技术研讨。一切似乎还算平常。

可其实并不平常。

当几位领头人没去参加会议的主要社交活动 —— 多瑙河上过夜巡游的时候，一些与会者开始有些疑虑了。其实我们没参加这次活动，是因为我们在餐厅开会敲定新基金会的最终细节，有太多事情要确保万无一失。我们必须定下公告日期，并且，为了协调基金会落地的各项任务，需要确定指导委员会的人员组成。

### LibreOffice

从这次会议到 LibreOffice 发布间隔了三周，我们紧锣密鼓地准备。我拟好了发布策略和新闻稿，开发者们为软件做准备。应用的名字甚至是在发布的前几天的一次电话会议上敲定的，那时我在格罗塞托，正在参加意大利开源软件社区会议。

2010 年 9 月 28 日，我把宣布“<ruby> 文档基金会 <rt>  The Document Foundation </rt></ruby>”和 LibreOffice 的新闻稿分发到一个包含约 250 名记者的全球邮件列表中，这列表可是我根据供职过的公共关系机构的来信，花了很大力气整理的。

新闻稿是这样的：

>
> 开发和推广 [OpenOffice.org](http://OpenOffice.org) 的志愿者社区宣布将成立一个独立的基金会，推动项目的进一步发展。基金会将成为一个新的生态系统的基石，在这里，个人和组织都可以为一个真正免费的办公套件做出贡献，并从中受益。从用户的利益出发，这将带来更多的竞争和选择，并推动办公套件市场的创新。从现在开始，[OpenOffice.org](http://OpenOffice.org) 社区将被称为“<ruby> 文档基金会 <rt>  The Document Foundation </rt></ruby>”。
>
>
>

我们邀请过 Oracle 成为基金会的成员，并捐赠社区在过去十年中发展起来的品牌。而在他们做出决定之前，我们选择了 LibreOffice 作为即将到来的软件的品牌。

媒体界对这一公告的反应非常积极。但另一方面，企业和分析师则倾向于对由社区管理的办公套件表示质疑，这是他们从未完全理解的实体，因为这个组织很扁平、任人唯贤。

公告发布后的两周内，就有 80 位新开发者加入这个项目，推翻了那些认为“仅凭 SUSE 和 Red Hat 的开发者来启动复刻项目并不现实”的预测。不出所料，大多数语言社区都转向了 LibreOffice。

LibreOffice 是基于 [OpenOffice.org](http://OpenOffice.org) 的源代码构建的。但新的功能被集成在 <ruby> Go-OO <rt>  Go-Open Office </rt></ruby> 的源代码中，而不是在 [OpenOffice.org](http://OpenOffice.org)（OOo）上。

出于这个原因，LibreOffice 的第一个版本（于 2011 年 1 月 25 日发布）为 3.3，以保持与 [OpenOffice.org](http://OpenOffice.org) 的一致性。我们认为这对于从第一个版本迁移到新套件的用户很有帮助。由于还有必须解决的明显技术债务，该软件仍有点不成熟，这导致了一些问题和不稳定。这些问题预计将基本上通过 3.x 和 4.x 版本的代码清理和重构得到纠正。到了 5.x 和 6.x 版本，源代码应该已经稳定，并有条件改进用户界面，以及开发移动和云版本。

2011 年春天，甲骨文将 [OpenOffice.org](http://OpenOffice.org) 源代码转让给了 Apache 软件基金会。但该项目仅持续了三年，它的上一个新版本已经是将近十年前的事了。

### 未来是开放的

文档基金会的组建过程于 2012 年初结束，并于 2012 年 2 月 17 日在柏林有关部门完成注册。因为创始人希望该项目的志愿者成员们也可以根据贡献成为基金会成员，这让注册过程十分漫长。德国的法规并未考虑到基金会的这一细节，因此需要对章程进行多次修订才能满足现有状况。

基金会成立之初的前两项活动都是委员会成员的选举。这是从单纯的志愿者过渡到基于贡献的文档基金会成员所必经的规程。有委员五人，副委员三人。最后，负责在行政和战略方面领导基金会的董事会，由七名成员和三名副手组成。

2012 年底，基金会聘请了第一位雇员 Florian Effenberger，在后来他被提升为执行董事。今天，这个团队有十几个成员，他们负责日常活动，例如协调项目、行政管理、网络基础设施管理、软件发布、指导新的开发人员、协调质量保证、用户界面的演进、以及营销和沟通。

目前，基金会正在寻找开发人员满足企业客户需求，例如 RTL 语言管理和辅助功能。这些功能并不是由 LibreOffice 生态系统中的公司开发的，这些公司为他们提供功能开发服务、三级支持以及为企业需求优化的软件的长期支持版本。

在 LibreOffice 和文档基金会宣布成立已经过去 12 年之后，我们可以说，我们已经实现了开发一个独立的“<ruby> 自由和开源软件 <rt>  free and open source </rt></ruby>（FOSS）”的项目目标。我们的项目是基于一个由个人志愿者和公司量力而行做出贡献的扩展社区。参与者们帮助创建了无与伦比的免费办公套件，并通过采用和发展现有市场上唯一真正的<ruby> 标准办公文档格式 <rt>  Open Document Format </rt></ruby>（ODF）来支持开放标准。同时，该套件也确保了与专有的 OOXML 格式的出色兼容性。

这种模式的可持续性是一个日常问题。身处于与大型科技公司的激烈竞争下，我们一直在尝试，试图在“希望一切都免费”，和“希望每个用户都能力所能及做出贡献”之间达成一种平衡。不过无论如何，LibreOffice 都会是开源的办公套件，这提供了竞争之上的额外价值。

试试 LibreOffice 吧；捐赠；不论是工作还是业余，支持它；向你的朋友介绍它！LibreOffice 是一个开源的办公解决方案，它确保你总是能够访问你的数据，并掌控你的创造力。

---

via: <https://opensource.com/article/23/2/libreoffice-history>

作者：[Italo Vignoli](https://opensource.com/users/italovignoli) 选题：[lkxed](https://github.com/lkxed/) 译者：[onionstalgia](https://github.com/onionstalgia) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


# KDE Connect 登陆苹果应用商店，轻松将你的 iPhone 与 Linux 连接起来

>
> 这是一个令人印象深刻的开源客户端，能帮你将手机与电脑连接起来，现在可用于 iPhone 和 iPad。快来试试看！
>
>
>

KDE Connect 是一种开源工具，可让你将手机与电脑连接起来。

最初，KDE Connect 支持安卓设备与 Linux 连接。渐渐地，他们增加了对 Windows 的支持。

现在，看起来你可以使用 KDE Connect 让你的 iOS 设备（iPhone 或 iPad）连接到你的 Windows/Linux 计算机。

需要注意的是 macOS 也在支持的平台列表中。但是，它仍然是早期发布版本。因此它可能不如在其他平台上那么好用。

### 苹果应用商店上的 KDE Connect

我们没有注意到任何官方公告。然而，一些用户发现 KDE Connect 在 [版本 0.2.1](https://invent.kde.org/network/kdeconnect-ios/-/commit/43d2ecbbb7e4e70274849f5ec987721318eb9f57) 发布后，就出现在了 [苹果应用商店](https://apps.apple.com/id/app/kde-connect/id1580245991) 上供 iOS 用户使用。

苹果应用商店上列出了所有基本功能，包括：

* 共享剪贴板：在设备之间复制/粘贴。
* 能够从任何应用程序将文件和 URL 共享到你的计算机。
* 将手机屏幕用作计算机的触摸板（可视触摸板）。
* 远程演示模式。
* 通过手机在计算机上运行命令
* 端到端 TLS 加密以确保安全。

虽然 KDE Connect 依然是一个开源应用程序，但为符合苹果应用商店的要求，该应用程序的许可与 [OMGUbuntu](https://www.omgubuntu.co.uk/2022/05/kde-connect-iphone-app-available) 所发现的有所不同。

同时值得注意的是，这里列出的功能可能与安卓版本不同，但至少我们终于为 iOS 用户提供了 KDE Connect，使其成为连接手机和计算机的真正开源跨平台解决方案。

我可以放心将 KDE Connect 推荐给任何想通过手机来对电脑进行操作的人。

点击下方的按钮即可前往应用程序商店开始安装。你还可以在其 [官方下载页面](https://kdeconnect.kde.org/download.html) 上找到针对不同支持平台的各种其他安装选项。

>
> **[KDE Connect（iOS）](https://apps.apple.com/id/app/kde-connect/id1580245991)**
>
>
>

你试过 iOS 上的 KDE Connect 了吗？在评论区中让我知道你的想法。

---

via: <https://news.itsfoss.com/kde-connect-ios/>

作者：[Ankush Das](https://news.itsfoss.com/author/ankush/) 选题：[lkxed](https://github.com/lkxed) 译者：[XiaotingHuang22](https://github.com/XiaotingHuang22) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #918 业余棋手战胜了曾经击败顶级棋手的围棋 AI

Summary:
? 业余棋手战胜了曾经击败顶级棋手的围棋 AI
? 数字隐私和安全的四个谎言？
? Linus 发布“路人甲” Linux 6.2 内核
»
»

在国内个人隐私就是扯淡。

用 whitepages.com 或类似的服务，你基本上能找到全美国所有人的“秘密”。

# 硬核观察 #918 业余棋手战胜了曾经击败顶级棋手的围棋 AI

### 业余棋手战胜了曾经击败顶级棋手的围棋 AI

2016 年 AI 战胜了人类围棋高手，此事被视为 AI 崛起的里程碑，但之后意外为人类翻盘。一位美国业余棋手利用计算机发现的一个先前未知的缺陷击败了 AI，他在没有计算机直接支持的情况下赢得了 15 场围棋人机对决中的 14 场。AI 研究公司 FAR AI 设计了一个程序，与顶级 AI 系统 KataGo 下了超过一百万局，以发现人类棋手可利用弱点。这次胜利以前没有报道过，但这证明这些系统使用的深度学习模型存在根本性缺陷。

>
> **[消息来源：Ars Technica](https://arstechnica.com/information-technology/2023/02/man-beats-machine-at-go-in-human-victory-over-ai/)**
>
>
>

>
> 老王点评：其实，再聪明的 AI 也必然有其局限性，人类的大脑也并不会全面被 AI 击败，毕竟人类的大脑已经进化了数千万年。
>
>
>

### 数字隐私和安全的四个谎言？

华盛顿邮报的专栏作家揭露了四个数字隐私和安全方面的谎言，以下是他的观点：

1. **在你的电子邮件地址中替换上 “at” 和 “dot” 来阻止垃圾邮件发送者。** 这对网络上搜刮你的电子邮件的人来说，毫无意义。
2. **发送明显是骗局的电子邮件和短信的骗子们是傻子。** 不，他们只是筛选那些自信智商在线的傻子。
3. **使用“虚拟私人网络”（这个词的缩写我不能写）来保护网络安全。** 对于大部分人来说，没有意义，毕竟主要的安全短板并不在这里。
4. **你的邮件地址和电话号码是秘密的。** 其实它们是公开的“秘密”。

>
> **[消息来源：MSN](https://www.msn.com/en-us/news/technology/lets-bust-these-four-myths-of-digital-privacy-and-security/)**
>
>
>

>
> 老王点评：原文的理由不尽然合理，我同意它的观点，但对原文的理由不是完全赞同，所以上面给出的理由是我提炼的。你怎么看呢？
>
>
>

### Linus 发布“路人甲” Linux 6.2 内核

上周日，Linus Torvalds 按延长的时间表发布了 Linux 6.2 内核，他敦促开发者和用户测试新的内核版本，“也许它不像 6.1 那样是一个性感的 LTS 版本，但所有那些普通的‘路人甲’内核也需要一些测试的爱。”也就是说，Linus 认为这是一个平淡无奇的内核版本。但是英特尔可能对此不太认同，因为它的 Arc GPU 已经被发布到了稳定通道，同时，英特尔也为其软件定义的芯片（又称 “英特尔按需”）得到推广而感到高兴。此外，可能更值得关注的是，对苹果的 M1 CPU 的主线支持已经到来。

>
> **[消息来源：The Register](https://www.theregister.com/2023/02/20/linux_kernel_6_2_released/)**
>
>
>

>
> 老王点评：说实话，我一直对 Linux 内核的版本号规则耿耿于怀，太任性了。
>
>
>


如何在 Arch Linux 中安装 MATE 桌面

Summary: 本指南将详细解释你在 Arch Linux 中安装 MATE 桌面所需的步骤。

本指南将详细解释你在 Arch Linux 中安装 MATE 桌面所需的步骤。

# 如何在 Arch Linux 中安装 MATE 桌面

>
> 本指南将详细解释你在 Arch Linux 中安装 MATE 桌面所需的步骤。
>
>
>

本指南分为两部分。第一部分讨论安装基础 Arch 系统。第二部分是在 Arch Linux 上安装完整的 MATE 桌面环境。

本文在以下版本中进行了测试：MATE 1.24 和 MATE 1.26。

### 什么是 MATE 桌面?

当 GNOME 桌面从 GNOME 2 改变方向到 GNOME 3 时，改变了用户交互和界面，MATE 桌面仍然延续了“较旧的”或者说“传统的” GNOME 2 的开发方向。因此，MATE 桌面环境保留了 Linux 中的传统桌面体验。它速度快，内存消耗低。在我看来，MATE 桌面环境是一个被低估的桌面环境，需要更多的关注！

MATE 团队一直在继续开发，它是一个基于 GNOME 2 的流行桌面之一，但同时支持更新的技术。你可以在其 [官方网站](https://mate-desktop.org/) 上了解更多信息。

### 在 Arch Linux 中安装 MATE 桌面

#### 第一部分: 安装 Arch Linux

如果你已经安装了 Arch Linux，则可以跳过此步骤，直接转到下面的 MATE 桌面安装部分。

要快速安装 Arch Linux，请按照这个自动化的 [archinstall 指南](https://www.debugpoint.com/archinstall-guide/) 进行操作，该指南非常容易上手。安装完成后，继续至第二部分。

#### 第二部分：在 Arch Linux 中安装 MATE 桌面

重新启动后，从 GRUB 中选择 Arch Linux。在 Arch Linux 提示符下，按顺序运行以下命令。这些命令将安装 Xorg 服务器、显示管理器、MATE 桌面组件、控制器包以及其他应用程序。

对于所有命令，请使用默认值，即在询问时按 Enter 键。

安装 Xorg。安装大小大约为 80 MB。

```
sudo pacman -S --needed xorg

```

安装显示管理器和 MATE 桌面组件。安装大小大约为 380 MB。

```
sudo pacman -S --needed mate mate-extra ttf-freefont lightdm lightdm-gtk-greeter

```

>
> LCTT 译注：在 Arch Linux 中，很多时候 lightdm 显示管理器需要额外的配置才能正常启用。可以参考：[LightDM - ArchWiki](https://wiki.archlinux.org/title/LightDM)。除此之外，可以安装 lightdm-gtk-greeter-settings 来对 lightdm-gtk-greeter 进行配置。
>
>
>

安装应用软件：

这只是一个参考。你也可以安装你所需要的内容。

```
sudo pacman -S --needed firefox vlc filezilla leafpad xscreensaver archlinux-wallpaper

```

现在是时候以服务的方式启用显示管理器和网络管理器了。这样，下次登录时，它们就可以通过 systemd 自动运行了。

```
systemctl enable lightdm
systemctl enable NetworkManager

```

使用重启命令重启系统：

```
reboot

```

如果一切顺利，你应该在 MATE 桌面上看到登录提示。

现在你可以使用刚刚创建的用户 ID 和密码登录。一个超快速和传统的 MATE 桌面将欢迎你的到来。

我希望本指南能帮助你从头开始创建自己的 Arch Linux 环境，并使用传统的 MATE 桌面。

---

via: <https://www.debugpoint.com/mate-desktop-arch-linux-install/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed) 译者：[Chao-zhi](https://github.com/Chao-zhi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


好奇心帮我解决了一个硬件问题

# 好奇心帮我解决了一个硬件问题

>
> 好奇心能激发人们对于知识和真理的渴求，无论是对于硬件、开源软件、编程、组装个人电脑、优化系统设置，还是只是学习使用一个新软件。
>
>
>

<img src="content_image/album_202302_21_164251s0ow0eewvnebwzcw.jpg" alt="" title="Puzzle pieces coming together to form a computer screen">

我通常在家架设运行一个由一打计算机组成的家庭网络 —— 没错，正好 12 台计算机。同时我还负责其它地方的一些计算机维护工作。由于计算机很多，总会出现各种各样的故障，其中有很多最终确诊为硬件问题。但是要判定出是哪个硬件设备引发的故障却是一件难事。

就在这周，我的主工作站上出现了一个棘手的问题，导致我两次误判了问题的原因。本文将带你跟随我排查问题的过程。我将告诉你我在哪一步做了错误的判断以及为什么，还有误判是多么容易发生。

### 最初的症状

我手上一直有好几个项目。最近，我在几台台式机上打开了很多应用程序，我刚开始工作，突然就黑屏了。主工作站的大多数（不是全部）风扇都停了，这让我倒吸一口凉气。我从来没有遇到过这种情况，但显然我的系统出问题了。

我有两条主要线索可以跟进：一是显示黑屏，二是有些风扇不转了。但是前面板上的电源和磁盘活动指示灯还是亮的，只是比平常要暗一点。大多数安装在主板、内存条和风扇上的 RGB 装饰灯也都灭了。

我试过按电源键和重启键，都没有反应。我直接按供电单元的船型开关关闭了电源。重新供电后还是出现了刚才的症状。

### 最初的猜想

问题的现象和我数十年处理各类故障的经验将原因指向了供电问题。

我将供电单元拆了下来并用电源测试仪对它进行了检查。结果是供电单元没有任何问题，各项电压都符合规范。当然测试仪的结果也可能是错误的。测试仪并没有在满负荷状态下进行测试，比如计算机运行中耗电几百瓦的情况。我凭直觉更换了一个一千瓦的备用电源。

由于我的家庭网络中有 12 台计算机，我已经习惯准备了一些备用配件在身边。这样当有配件损坏时，我就不必非得跑一趟附近的电脑城或者网购后等快递了。由于计算机这么多，配件损坏是经常的事。

虽然电源测试仪告诉我电源没有问题，但更换电源后问题确实消失了。即便检测仪在过去都是正确的，我的经验、知识和直觉告诉我就是电源问题。

不幸的是，我的直觉错了。

### 第二个猜想

没过多久我的工作站再次又了相同的问题。但两个不同的供电单元有相同问题的可能性太低了。

我马上想到那一定是主板出问题了。我没有备用的主板，所以网购了一块新主板。我想到其实可以用上手上多余的内存条，然后把 CPU 连同一体水冷单元一起装到新主板上。

### 专业的故障排查

新主板需要几天天才能送到，所以我决定先将工作站上的旧主板拆下来。就在拔掉主板供电之前，我的好奇心显现，并驱使我给只剩主板、CPU 和内存的系统开机。我已经把其它的部分都拆掉了。

好的故障排除过程需要分离所有潜在变量，目前我只是对供电单元进行了测试。我需要对每个组件都进行测试。

这需要我先拔掉前面板上的扬声器和多功能面板连接线。多功能面板上集成了各种 USB、SATA 和内存卡插槽。

令人惊讶的是，当只有主板通电时竟然一切正常。

计算机本身无法开机，因为根本没有连接存储器。也不会有显示输出，因为我已经把显卡拆掉了。但是没有电源或主板故障的迹象。这进一步激发了我的好奇心。如果主板真的有问题的话，故障现象应该仍然存在才对。

所以我开始一系列的重复试验：断电，安装一个已经拆掉的配件，重新上电。

最终发现问题上由前置多功能面板引发的。

我拆除了多功能面板并将其它零件全部装了回去。工作站开机正常，运行良好。终于让我逮到罪魁祸首了。

### 起因

弄清真正的问题之后，我立刻就明白了问题的根本原因。这还要从几天前说起。那时我正在测试一些外接 USB 设备，包括几种摄像头、几个用于备份的存储设备和一个外接 USB 集线器。

我把一根 USB 连接线插到了多功能面板上的一个 USB 2.0 插口中。所有东西都停摆了，大部分灯熄灭了，风扇也不转了。USB 连接线发热很严重，我拔掉它时还把手指烫伤了。原来我不小心将连接线的 C 型插头插到了一个 USB 3.0 A 型插口里，导致了供电短路。

拔掉 USB 连接线之后，一切都恢复了“正常” —— 但事实并非如此。我粗心的错误对多功能面板造成了损伤，它在坚持了几天之后彻底短路了。

### 妄下结论

知识和经验有时候比电源测试仪之类的工具更重要。当然知识跟经验有时候也不管用。我最终找到了问题的真正原因，但其实我本该早就发现的。

尽管我在问题跟供电有关这一点上是对的，但还是误入歧途了。原因是我没能正确解读问题现象并根据线索调查得出逻辑结论导致的。我本可以更早找出问题的根本原因的，这样就不至于在修好主工作站之前浪费那么多时间在将我的笔记本变成临时主要设备上了。

系统管理员总与复杂的设备打交道，过早下结论在所难免。我有超过 50 年的从业经验，还是犯了这样的错误。我只需记住做几个 [深呼吸](https://opensource.com/article/21/11/linux-yoga)，然后刨根问底直到找到问题的根本原因。

### 好奇心

至少在等待新主板到货期间，我遵循了自己的好奇心。这让我比等新主板到货要早得多将事情恢复正常。同时也避免了我在没有充分测试的情况下把一块完好的主板丢掉。

谚语说好奇心害死猫。我讨厌这个谚语，因为它被家长、学校、见识短浅的老板、老师和那些不想被我们这种好奇宝宝干扰的人用得太多了。事实上，好奇心激发了对于人们对于知识和真理的渴求。这可能是关于硬件、开源软件、编程、组装个人电脑、优化系统设置或者学习使用新软件。满足你的好奇心吧!

---

via: <https://opensource.com/article/22/1/troubleshoot-hardware-sysadmin>

作者：[David Both](https://opensource.com/users/dboth) 选题：[lujun9972](https://github.com/lujun9972) 译者：[toknow-gh](https://github.com/toknow-gh) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Summary:
? GNU Linux-libre 6.2 继续进行“去污”战争
? Windows 11 在“不支持的”电脑上显示水印
? 英特尔开源其基于 CPU 的 OpenCL 运行环境
»
»

苹果手机买回来以后不要升级系统。就这么用几年，你会发现手机反应速度还是那么快。

道理是相同的，Win8/Win10/Win11并不比Win7强多少，速度却慢了好多。。。

# 硬核观察 #919 GNU Linux-libre 6.2 继续进行“去污”战争

### GNU Linux-libre 6.2 继续进行“去污”战争

随着 Linux 6.2 的发布，GNU Linux-libre 6.2 跟随发布了去除内核中的无源代码的二进制块（BLOB）的版本。Linux 的源代码中包含了很多厂商没有提供源代码的执行代码，这些代码以编码后的数字序列的形式存在，伪装成数据的样子。并不是所有的数字序列都是这种二进制块，有一些是配置数据。但这种无源代码的二进制块，对于希望运行自由的内核的人来说，是不可接受的，因为你并不知道这些代码在做什么。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/GNU-Linux-Libre-6.2)**
>
>
>

>
> 老王点评：在如今的世界，追求纯粹的自由，可能的结果就是你不能自由的使用很多硬件。虽然我不会用这样的自由内核，但是我赞赏并鼓励这样的内核存在。
>
>
>

### Windows 11 在“不支持的”电脑上显示水印

对于那些电脑没有满足 Windows 11 的硬件要求而强制升级的人来说，微软最近发布了一个更新“提醒”他们。如果 Windows 11 注意到它在不符合最低要求的硬件上运行，就会持续在桌面的右下角显示“未满足系统要求”。没有达到 Windows 11 最低硬件要求的电脑，很多都是缺少 TPM 2.0（可信平台模块）芯片，微软在升级前需要这个模块，大多数新的 CPU 和主板都内置了它，但在 Windows 11 发布之前，该功能并没有完全普及。

>
> **[消息来源：Gizmodo](https://gizmodo.com/windows-11-system-requirements-not-met-watermark-messag-1850114052)**
>
>
>

>
> 老王点评：不支持就不支持吧，还被羞辱了。
>
>
>

### 英特尔开源其基于 CPU 的 OpenCL 运行环境

这是英特尔开发的基于 CPU 的 OpenCL 实现。多年来，还有其他同类实现，而英特尔的 OpenCL CPU 运行环境可能是特性最多和性能最好的。这次开源源于一个多年前的请求，早在 2020 年，英特尔的工程师就有迹象表明他们想要开源，现在他们终于成功地做到了这一点。等待登陆英特尔的 LLVM 存储库下游的这个合并请求相当大，包含了 718,996 行新代码，分布在 2750 个文件中。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Intel-OpenCL-CPU-Open-Source)**
>
>
>

>
> 老王点评：这应该给英特尔点赞！至少他们会响应社区号召，并审慎的采取行动。
>
>
>


怎么用微分分析仪（来杀人）

Summary: 微分分析仪是一种能够求解微分方程的机械式模拟计算机。

虽然数学把我搞得晕头晕脑，但是生物学却告诉我一个很简单的道理，

杀人就是为了造人，本质就是获得更多（性）快感。

这是不过是一个生物种间斗争的模型。

微分分析仪是一种能够求解微分方程的机械式模拟计算机。

# 怎么用微分分析仪（来杀人）

微分分析仪是一种能够求解微分方程的机械式模拟计算机。它已经不再使用了，因为如今最便宜的笔记本电脑都能更快地解决相同的问题，并且你还可以同时在线刷剧。然而在数字计算机发明之前，微分分析仪使数学家能够完成一些用其它工具不可能完成的计算。

现如今很难想象一台不是由印刷的数字电路组成的计算机竟然是可以正常运作的。机械计算机听起来就像是从蒸汽朋克小说里跑出来的一样。事实证明微分分析仪不但能用，而且还是一些研究领域中必不可少的工具。它最为人所知的应用是曾被美国陆军用于编制火炮射表。如果没有射表辅助瞄准，口径再大的火炮也无法充分发挥效能。所以理论上来说，微分分析仪在帮助同盟国赢得二战上发挥了重要作用。

要弄清微分分析仪是如何做到这些的，你首先得知道什么是微分方程。已经还给学校了？没事，我也一样。

### 微分方程

你首次接触微分方程应该是在大学《微积分 I》的最后几周。在学期的这个阶段，你那薪资低微的兼职教授应该已经教授过极限、导数和积分这些概念了。在这些概念之上再引入等号，现在你就得到了一个微分方程。

微分方程描述了一个变量相对于另一个（或多个）变量的变化率。形如  的常见代数式表示变量 y 与 变量 x 之间的关系。形如  或  的微分方程表示变化率与其它变量间的关系。本质上微分方程就是用纯数学方式来描述变化率。前面第一个方程表示 “变量 y 相对于变量 x 的变化率刚好等于 x 。”第二个方程表示“无论 x 的值是多少， y 相对于 x 的变化率总是 2。”

微分方程非常有用，因为在现实世界中，描述复杂系统从一个瞬间到下一个瞬间的变化往往比想出一个描述系统在所有可能的瞬间的方程要容易。因此，微分方程被广泛应用于物理和工程领域。一个著名的微分方程是<ruby> 热传导方程 <rt>  heat equation </rt></ruby>。它能描述热量在物体中的扩散过程。要提出一个完全地描述物体在某时刻 t 的热量分布的函数很困难，但推理热量从某时刻到下一个时刻的扩散过程不太可能会让你绞尽脑汁——近冷者变热，近热者变冷。所以尽管热传导方程在形式上比起前面的例子要复杂得多，它也只是变化率的描述而已。它描述了在给定与周围的温差时，物体上任意一点的温度随时间的变化。

再来举一个更具体的例子。假如我在真空中竖直向上抛出一个网球，在我窒息之前它会落回来吗？这是我在高中物理课上被问到的问题，解决它只需要基本的牛顿运动方程。现在暂且假设我已经忘记了牛顿运动方程，只记得物体以恒定的加速度 g （大约为 ）向地球加速运动。那么如何用微分方程来解决这个问题呢？

现在把我对高中物理仅存的记忆表示成微分方程。网球在离手后会向地球以 g 加速运动。也就是说网球的速度相对于时间的变化率为 g（在负方向上）。进一步，我们可以说球离地高度的变化率（也就是速度）随时间的变化率是负方向的 g 。其微分方程形式如下，其中 h 表示高度， t 表示时间：

它跟前面的微分方程看起来略有差别，因为这是所谓的二阶微分方程。我们讨论的是变化率的变化率，也许你还记得微积分课讲过，这需要用到二阶导数。这是方程左边部分看上去像被平方了的原因。但是该方程也仅仅表示了球向下以恒定的加速度 g 加速运动这一事实。

到这里，我可以选择使用微积分来求解微分方程。解微分方程并不是要找满足指定关系的值，而是要找满足关系的函数。对上面的微分方程的另一种理解是存在这样的函数，它的二阶导数为 -g 。我们想要找到这个函数，因为它能告诉我们球在任意时刻的高度。好在这个微分方程恰巧是容易求解的。通过这样，我们可以重新推导出那些被我遗忘了的运动方程，从而轻松地计算出球落回来所花的时间。

但是大部分情况下微分方程是很难求解的。有时甚至是无法求解的。假设我在大学时把更多的精力花在了计算机科学上，那么我的另一种选择就是用微分方程来做模拟。如果已知球的初速度和加速度，我可以轻易用 Python 写一个 `for` 循环来逐秒迭代计算球在离手后 t 时刻的速度。在此基础上对循环程序稍加修改，就可以用算出的速度迭代计算出球的高度。运行这个 Python 模拟程序，它就可以计算出球什么时候落回来了。这个模拟并不是完全精确的，但是我可以通过减小计算用的时间步长来提升精度。总之我要做的只是搞清楚当球落回来时我是否还活着。

这就是微分方程的数值解法。这也是大多数领域中求解微分方程时实际采用的方法。对于用数值方法求解微分方程，计算机是必不可少的，因为模拟的精度取决于在微小步长上进行的大量计算。手工计算容易出错并且太耗时。

那如果将这个问题的背景时间设定在 1936 年呢？我仍然希望实现计算过程的自动化。但是此时离 <ruby> 克劳德·香农 <rt>  Claude Shannon </rt></ruby> 完成他的硕士论文还有一年时间。在这篇论文中香农用数字电路实现了 <ruby> 布尔代数 <rt>  boolean algebra </rt></ruby>。没有数字计算机可用，恐怕就只能寄希望于于模拟计算机了。

### 微分分析仪

首台微分分析仪是由 <ruby> 范内瓦·布什 <rt>  Vannevar Bush </rt></ruby> 和 <ruby> 哈罗德·哈森 <rt>  Harold Hazen </rt></ruby> 于 1928 年到 1931 年在 MIT 建造的。他们两人都是工程师。制造它是为了解决应用数学和物理领域中的实际问题。正如布什在 [1931 年的一篇论文](http://worrydream.com/refs/Bush%20-%20The%20Differential%20Analyzer.pdf) 中所说，微分分析仪是为了解决那些“不断为他们所用方程的复杂性而不是深刻性所困扰的”的数学家的所面临的当代问题。

微分分析仪是一台由传动轴、齿轮和转盘组成的复杂仪器，它能够求解高达六阶的微分方程。它是一台由简单部件通过复杂组合而成的神奇机器。在这一点上它和数字计算机很像。不同点是，数字计算机通过在电路中实现布尔代数来模拟代数问题，而微分分析仪通过传动轴、齿轮和转盘直接模拟微分方程问题。微分分析仪的本质就是对实际问题的直接机械类比。

那到底怎么用齿轮和转盘来计算微积分呢？其实这是最容易解释的部分。微分分析仪最重要的构件是六个积分器，每一个对应一阶的微分方程。机械积分器的历史可以追溯到 19 世纪，它是一个相对简单的装置，能够对单个简单函数进行积分运算的。下面我们将了解积分器的工作原理，但顺便说一句，布什的巨大成就不是发明了机械积分器，而是发现了一种将积分器串联起来解决高阶微分方程的方法。

机械积分器由一个大转盘和一个小得多的转轮组成。转盘像唱片机的转台一样平行于地面平放。它由电机驱动匀速转动。转轮竖直的轻放于转盘表面上，其压力既要足够让转盘驱动转轮，又不能太大以致于阻碍转轮相对于转盘自由侧向滑动。总之当转盘转动时，转轮也跟着转动。

转轮的转速由它距离转盘中心的距离决定。转盘的中心部分自然转动得比边缘部分慢。转轮的位置是固定不动的，而转盘被安装在一个可以来回滑动的底座上。这样就可以调节转轮相对转盘中心的位置。下面就是积分器工作的关键原理：转盘底座的位置由积分器的输入函数控制。积分器输出取决于转轮的转动量。所以输入函数驱动了输出函数的变化率，这就是将某个函数的导数转换成了这个函数本身。这不就是积分运算吗？

如果刚才的解释还没有让你理解积分器的原理，那么直接看到机械积分器实际工作的样子应该对你有所帮助。其实它的原理出乎意料的简单，看一遍它的运行过程你肯定就能窥见其运作机制。因此我制作了一个 [运行中的机械积分器动态原理图](https://sinclairtarget.com/differential-analyzer/)，强烈建议你看一看。它展示了通过各个部件的旋转和移动求函数 f(x) 的 <ruby> 不定积分 <rt>  antiderivative </rt></ruby> F(x) 的过程。这可太有趣了。

现在我们有了可以做积分运算的组件，但是只靠它还不足以解决微分方程。为了解释求解微分方程的全过程，我将使用布什在他 1931 年的论文中所举的例子。这个例子恰巧跟前面考虑的微分方程是在本质上是一样的。（真是奇妙的巧合！）布什使用下面的微分方程来表示下落物体的运动：

这跟前面的网球运动的方程基本上是一样的，只不过布什使用 x 代替了 h ，并且增加了一项来表示空气阻力的减速作用。这个新增项采用了最简单的形式来描述空气阻力的作用：空气减慢球速的比率正比于球的速度（这里 k 是一个常比例系数，我并不关心它的具体取值）。也就说是球运动得越快，空气阻力就越大，对球的减速作用越显著。

为了配置微分分析仪来解决这个微分方程，我们需要从布什称之为“输入面板”的东西开始。输入面板其实就是一张安装在支架上的坐标纸。如果想要解更复杂的方程，首先需要操作员在坐标纸上绘制好输入函数图像，然后在机器启动时用一个与机器主体相连的指针来跟踪函数图像的轨迹。在我们举的例子中，输入是常数 g ，所以我们只需将指针移动到正确的位置并让它保持不动即可。

剩下的变量 x 和 t 又是什么呢？变量 x 表示球的高度，是微分分析仪的输出。它会被绘制在输出面板上的坐标纸上。输出面板与输入面板类似，只是它没有指针，取而代之的是由微分分析仪驱动的绘图笔。变量 t 仅仅是按固定速率步进。（在前面模拟网球运动 Python 程序中，我们通过循环来增加 t 。）变量 t 来源于微分分析仪的电机，它通过匀速转动传动轴来驱动整个计算过程。

布什的原理图对于理解我下面要介绍的内容很有帮助。不过为了便于理解，需要先对微分方程再做一次变换。对方程两边同时进行一次积分，得到下式：

现在方程中的各项与微分分析仪运行中各部件转动量所表示的值之间有了更明确的对应关系。布什的原理图如下：

在原理图的顶部是输入面板，右下角是输出面板。

图中的输出面板被配置成同时绘制高度 x 和速度 。积分器在左下方，由于这是二阶微分方程，所以我们需要两个积分器。电机驱动顶部标注为 t 的传动轴。（有趣的是，布什将这些水平传动轴称为“总线”。）

现在原理图中还剩下两个部件没有解释了。里边标记了 k 的方框是<ruby> 乘法器 <rt>  multiplier </rt></ruby>， k 是比例常数。它获取由 标记的传动轴的转动量，并通过齿轮组进行放缩。用 ∑ 标记的方框是<ruby> 加法器 <rt>  adder </rt></ruby>。它通过巧妙的齿轮组合将两个传动轴的的转动叠加起来驱动第三个传动轴。我们的方程中涉及了求两项之和，所以需要引入加法器。这些额外组件的引入确保了微分分析仪有足够的灵活性来模拟由各种各样的项和系数组成的方程。

我发现以慢放的方式来推演电机启动时的级联因果过程对于理解微分分析仪的原理很有帮助。电机启动后立即驱动传动轴 t 匀速旋转。这样我们就有了时间的概念。这个传动轴有三个作用，分别由连接其上的三个竖直传动轴表示：它驱动了两个积分器的转盘的转动，同时带动输出面板的支架让绘图笔作图。

如果积分器的转轮被放置在转盘中心，那么传动轴 t 就不会带动其它传动轴转动。积分器的转盘会转动，但是放置在转盘中心的转轮不会被带动。这时输出图像将会是一条平坦的直线。出现这种情况是因为我们没有明确指定问题的初始条件。在上面的 Python 程序中，我们需要以常量或函数参数的形式用到网球的初始速度。在启动机器之前，我们通过将两个积分器的转盘调整到合适的位置来指定速度和加速度的初始值。

设置好这些之后，传动轴 t 的转动将会传导到整个系统之中。从物理上来说，许多部件会同时开始转动。但是我们可以认为转动首先传导到积分器 II，然后与基于 g 计算得到的加速度表达式求积分得到球的速度 。速度又反过来作为积分器 I 的输入，推动它的转盘让输出转轮以速率 转动。积分器 I 的输出作为最终结果将会被直接导向到输出面板上。

前面我有意避开了一个令人困惑的细节，那就是机器里有一个怪圈。积分器 II 以传动轴 为输入，但是该传动轴的转动又部分决定于积分器 II 的输出本身。这可能快把你绕吐了，但在物理上这并没有任何问题——因为所有部部件都是一同转动的。出现这种怪圈并没什么奇怪的，因为在用微分方程在描述某函数的变化率时，也经常会用该函数的函数的形式。（在这个例子中，加速度，即速度的变化率，取决于于速度。）

在将所有东西都正确配置好后，机器会输出球的高度和速度随时间变化的函数图像。这个图像是纸质的。用我们的现代数字化思维来看，这可能有点难以理解。画在纸上的函数图像能干什么？微分分析仪确实不能魔术般地给出解的简洁数学表达式，这是事实。但也请记住一点，很多的微分方程根本没有简洁的解析解。纸上的函数图像与前面模拟球下落的 Python 程序包含相同的信息：某时刻球的位置。它可以回答任何关于该问题的实际问题。

微分分析仪简直酷到爆。它虽然结构复杂，但是本质上只是一些传动轴和齿轮外的组合。要理解它的运作过程，你不必是电气工程师或者会制造芯片。然而它确实可以解微积分！它能够求解出那些靠你自己永远无法解决的微分方程问题。它证明建造计算机器的关键材料不是硅而是人类的创造力。

### 杀人

人类的创造力既能为善，也能为恶。正如我提到的，微分分析仪在历史上最知名的应用是为美国陆军计算火炮射表。鉴于二战是一场“正义的战争”，这是最好的结果。但是也不能忽视微分分析仪增强了大口径火炮的杀伤效能。火炮的确杀死了很多人。如果维基百科可信的话，在二战中死于炮火的士兵比被轻武器杀死的更多。

我们稍后再回到道德讨论上来，先快速解释一下为什么计算射表这么困难，以及微分分析仪是怎么帮助计算射表的。这是将微分分析仪应用于实际问题的很好的例子。射表能告诉炮手在射击某个距离外的目标时需要将炮口上抬多高。编制射表的一种方法是在不同的仰角下发射该火炮，并将结果记录下来。这种方法被用在靶场，比如位于马里兰的阿伯丁试验场。但是单纯通过实验观察的方式来编制射表即昂贵又耗时。在考虑到如天气状况或不同弹丸重量等其它因素时，需要进行的射击次数将会随组合爆增到无法实施的程度。所以基于少量观测数据建立数学模型，再基于该模型来填充出完整的射表是一个更好的方法。

我不想太深入讨论这些数学理论，它们实在太难了，我也不懂。但是你应该也想到了，支配飞行中的炮弹和向上抛出的网球运动的物理规律并没有什么不同。由于计算精度的需要，我们使用的微分方程不得不偏离其理想化的形式，并迅速变得面目狰狞起来。即便是最早的精确弹道理论中的公式，除其它因素外，还考虑了弹丸的重量、直径、形状、主风、海拔、大气密度以及地球自转    [1] 。

虽然关于射表计算的方程很复杂，但它们跟前面的微分方程一样，都可以通过微分分析仪数值求解。1935 年微分分析仪被阿伯丁试验场用于求解弹道方程。这显著加快了计算射表的速度。   [2]  然而，二战期间对于射表的需求增长太快了，以至于美国陆军计算射表的速度难以满足运往欧洲战场的武器装备的配套需求。这最终导致陆军资助了宾夕法尼亚大学的 ENIAC 项目。这促成了世界上第一台数字计算机的诞生。（LCTT 译注：严格来说 ENIAC 是第二台电子数字计算机。第一台电子计算机是<ruby> 阿塔纳索夫-贝瑞计算机 <rt>  Atanasoff–Berry Computer </rt></ruby>，简称 ABC 计算机。）ENIAC 能够通过重新布线运行任意程序。但建造它的主要是为了以数倍于微分分析仪的速度来计算射表。

鉴于在微分分析仪之外，射表计算问题极大地推动了早期计算领域的发展，专门挑出微分分析仪的道德问题也许是不公正的。微分分析仪并没有局限于军事领域的应用，在二战期间和二战后的很大一段时间里，由于美国军方投入的大量的拨款，整个计算领域得到了发展。

总之，我认为微分分析仪更有趣的遗产是它告诉了我们计算的本质。我惊叹于于微分分析仪能做到这么多事情，我猜你也一样。我们很容易落入这样的思维陷阱：将计算看作是由快速数字电路实现的领域。事实上，计算是更抽象的过程，电子数字电路只是实现计算的典型手段罢了。在关于微分分析仪的论文中，布什说他的发明不过是在“运用复杂机械结构来类比复杂的推理过程这一影响深远的计划”上的微小贡献。他的总结很贴切。

---

1. Alan Gluchoff. “Artillerymen and Mathematicians: Forest Ray Moulton and Changes in American Exterior Ballistics, 1885-1934.” Historia Mathematica, vol. 38, no. 4, 2011, pp. 506–547., <https://www.sciencedirect.com/science/article/pii/S0315086011000279>. [↩](#fnref1)
2. Karl Kempf. “Electronic Computers within the Ordnance Corps,” 1961, accessed April 6, 2020, <https://ftp.arl.army.mil/~mike/comphist/61ordnance/index.html>. [↩](#fnref2)

---

via: <https://twobithistory.org/2020/04/06/differential-analyzer.html>

作者：[Two-Bit History](https://twobithistory.org) 选题：[lujun9972](https://github.com/lujun9972) 译者：[toknow-gh](https://github.com/toknow-gh) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Summary: 如果你不想看到这个警告信息，你可以采取一些手动步骤来摆脱它。

第二种也太棒了

第二种也太棒了

第二种舒服，谢谢

如果你不想看到这个警告信息，你可以采取一些手动步骤来摆脱它。

# 修复 Ubuntu 中的 “Key is stored in legacy trusted.gpg keyring” 问题

如果你在 Ubuntu 22.04 及以后的版本中使用 PPA 或添加外部仓库，你有可能会看到这样的信息：

```
W: https://packagecloud.io/slacktechnologies/slack/debian/dists/jessie/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

```

首先，这不是一个错误，而是一个警告信息。警告并不会导致程序停止工作。即使你在更新过程中看到这个警告信息，你也可以继续升级你的系统。

如果你不想看到这个警告信息，你可以采取一些手动步骤来摆脱它。

有两种方法；正确的方法和快速而不优雅的方法。阅读这两种方法，看看你对哪一种感到满意。

### 方法 1：导入密钥（正确但复杂的方法）

首先，列出所有添加到你系统中的 GPG 密钥。

```
sudo apt-key list

```

这将显示一个存储在你系统中的巨大的密钥列表。你在这里要做的是寻找与警告信息相关的密钥。

```
abhishek@itsfoss:~$ sudo apt-key list
[sudo] password for abhishek:
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
/etc/apt/trusted.gpg
--------------------
pub   rsa4096 2014-01-13 [SCEA] [expired: 2019-01-12]
      418A 7F2F B0E1 E6E7 EABF  6FE8 C2E7 3424 D590 97AB
uid           [ expired] packagecloud ops (production key) <abhishek@itsfoss>

pub   rsa4096 2016-02-18 [SCEA]
      DB08 5A08 CA13 B8AC B917  E0F6 D938 EC0D 0386 51BD
uid           [ unknown] https://packagecloud.io/slacktechnologies/slack (https://packagecloud.io/docs#gpg_signing) <abhishek@itsfoss>
sub   rsa4096 2016-02-18 [SEA]

/etc/apt/trusted.gpg.d/audio-recorder-ubuntu-ppa.gpg
----------------------------------------------------
pub   rsa4096 2015-08-30 [SC]
      42EF 41ED 9813 B713 D4F1  F06D 5CF1 2638 ACF9 669F
uid           [ unknown] Launchpad PPA for Team audio-recorder

/etc/apt/trusted.gpg.d/danielrichter2007-ubuntu-grub-customizer.gpg
-------------------------------------------------------------------
pub   rsa1024 2010-10-08 [SC]
      59DA D276 B942 642B 1BBD  0EAC A8AA 1FAA 3F05 5C03

```

你要怎么做？仔细阅读该信息：

```
W: https://packagecloud.io/slacktechnologies/slack/debian/dists/jessie/InRelease: Key is stored in legacy

```

在我的例子中，仓库有 `packagecloud`、`slacktechnologies` 等关键词。它显示在 `apt-key` 列表输出的顶部。在你的情况下，你可能需要滚动一下。

在这种罕见的情况下，由 Slack 添加的外部仓库，有两个 GPG 密钥。其中一个已经过期，我会忽略它。你可能不会有这样的情况。

你应该看到 `pub` 后一行的最后 8 个字符（不包括空格）：

```
/etc/apt/trusted.gpg
--------------------
pub   rsa4096 2014-01-13 [SCEA] [expired: 2019-01-12]
      418A 7F2F B0E1 E6E7 EABF  6FE8 C2E7 3424 D590 97AB
uid           [ expired] packagecloud ops (production key) <abhishek@itsfoss>

pub   rsa4096 2016-02-18 [SCEA]
      DB08 5A08 CA13 B8AC B917  E0F6 D938 EC0D 0386 51BD
uid           [ unknown] https://packagecloud.io/slacktechnologies/slack (https://packagecloud.io/docs#gpg_signing) <abhishek@itsfoss>

```

因此，从 `DB08 5A08 CA13 B8AC B917 E0F6 D938 EC0D 0386 51BD` 这行中，我将提取最后8个字符 `0386 51BD`，去掉空格，然后用它来导入 `/etc/apt/trusted.gpg.d` 目录下专用文件中的 GPG 密钥：

```
sudo apt-key export 038651BD | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/slack.gpg

```

我在这里创建了一个新的文件 `slack.gpg`，以防你没有注意到它。我把它命名为 `slack.gpg` 是因为它与我之前安装的 Slack 应用有关。文件名并不重要，但它对识别有好处。

如果命令运行成功，你将不会看到任何信息。你可以通过检查新创建的 gpg 文件是否存在来验证。

再次运行更新，现在你应该不会再看到警告信息了。

### 方法 2：复制到 trusted.gpd.d 目录中（快速而不优雅的方法）

如果你觉得手动做上面的事情不舒服，那么，你可以忽略这个警告信息。我的意思是，忽略它总是一种选择。

另一个选择是把 `/etc/apt/trusted.gpg` 文件复制到 `/etc/apt/trusted.gpg.d` 目录。毕竟，Ubuntu 只是抱怨说它需要 `/etc/apt/trusted.gpg.d` 目录下的 GPG 密钥。

你仍然要使用终端。打开它并使用以下命令：

```
sudo cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d

```

现在，如果你运行更新，你就不会再看到 “Key is stored in legacy trusted.gpg keyring” 的警告信息。

### 总结

我曾经写过一篇关于 [弃用 apt-key](https://itsfoss.com/apt-key-deprecated/) 的详细文章。显然，那篇文章让一些读者感到困惑，因此我写了这篇文章，给他们提供摆脱该信息的直接步骤。

正如我之前所说，这是一个警告信息，目前可以忽略。解决这个问题的责任在于外部软件开发者和 Ubuntu 开发者。外部软件开发者应该确保他们的 GPG 密钥不再被添加到 `/etc/apt/trusted.gpg` 文件中。

终端用户不应该为他们的懒惰而承担痛苦。

那么，你是用哪种方法来摆脱 “key is stored in legacy” 的警告信息的呢？第一个方法还是第二个方法？

---

via: <https://itsfoss.com/key-is-stored-in-legacy-trusted-gpg/>

作者：[Abhishek Prakash](https://itsfoss.com/) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #920 Linus Torvalds 公开批评提交内核补丁的开发者

Summary:
? Linus Torvalds 公开批评提交内核补丁的开发者
? Linux 6.3 引入 IPv4 BIG TCP 以提高高速网络性能
? AI 写作正在影响出版业
»
»

# 硬核观察 #920 Linus Torvalds 公开批评提交内核补丁的开发者

### Linus Torvalds 公开批评提交内核补丁的开发者

在看到一位开发者提交到内核邮件列表的补丁信息后，Linus Torvalds 将该合并请求拉出来公开批评。在那个合并请求中，“整个提交信息基本上就是一行简短的日志”。他用了一大段话批评，“……如果你不屑于解释*为什么*有这个合并请求，那么这个合并请求绝对是有问题的垃圾。……”他说，“再次重申，如果你不能解释一个合并请求，那么就不要做。”

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Linus-Torvalds-Git-Merge-Wisdom)**
>
>
>

>
> 老王点评：内核社区的开发者们不都已经“接受”过 Linux 开发礼仪的熏陶了么？
>
>
>

### Linux 6.3 引入 IPv4 BIG TCP 以提高高速网络性能

自去年以来，Linux 内核已在 IPv6 上支持了 BIG TCP，以允许更大的 TSO/GRO 数据包大小。这为 IPv6 的性能带来了显著的提升，尤其是在 25~100+ Gbit 的网络空间，同时也带来了更低的延迟。随着 Linux 6.3 的推出，类似的优势也在 IPv4 领域得到体现。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Linux-6.3-Networking-BIG-TCP)**
>
>
>

>
> 老王点评：从基准测试数据看，这对于高速网络的性能提升相当可观。
>
>
>

### AI 写作正在影响出版业

截至 2 月中旬，亚马逊的 Kindle 商店中有 200 多本电子书将 ChatGPT 列为作者或共同作者，这包括《如何使用 ChatGPT 写作和创建内容》、《家庭作业的力量》和诗集《宇宙的回声》。而且这个数字每天都在上升。亚马逊上甚至出现了一个新的子类型：关于使用 ChatGPT 的书籍，完全由 ChatGPT 撰写。

而另外一则 [消息](https://www.pcmag.com/news/sci-fi-mag-pauses-submissions-amid-flood-of-ai-generated-short-stories) 显示，科幻杂志《Clarkesworld》正在暂停提交短篇小说。去年年底以来，他们的短篇小说的投稿量大增，但大部分写作似乎来自人类依靠人工智能工具抽出的文本。

>
> **[消息来源：路透社](https://www.reuters.com/technology/chatgpt-launches-boom-ai-written-e-books-amazon-2023-02-21/)**
>
>
>

>
> 老王点评：新世界的大门开了一个门缝，一些不太起眼的地方开始发生了变化。
>
>
>


通过“猜数字”游戏学习 Tcl

# 通过“猜数字”游戏学习 Tcl

<img src="content_image/album_202302_23_140000ilg3oa8khgrhr1r3.jpg" alt="" title="">

>
> 探索 Tcl 的基本语言结构，包括用户输入、输出、变量、条件评估、循环和简单函数。
>
>
>

我的 Tcl 之旅始于最近需要将一个困难的基于 Java 的命令行配置工具自动化。我使用 Ansible 做了一些自动化编程，偶尔也会使用 `expect` 模块。坦率地说，我发现这个模块的作用有限，原因包括：难以对相同的提示进行排序，难以捕捉到额外步骤的值，控制逻辑的灵活性有限，等等。有时你可以用 `shell` 模块来代替。但有时你会遇到那种特立独行、过于复杂的命令行程序，似乎无法实现自动化。

就我而言，我正在自动安装我公司的一个程序。最后的配置步骤只能通过命令行来完成，通过几个不规范的、重复的提示和需要捕捉的数据输出。好在传统的 Expect 是唯一的答案。要使用 Expect 的基本功能，并不需要对 Tcl 有很深的了解，但你了解的越多，你就能从它那里得到更多的力量。这是后续文章的话题。现在，我探讨一下 Tcl 的基本语言结构，包括用户输入、输出、变量、条件判断、循环和简单函数。

### 安装 Tcl

在 Linux 系统上，我使用这个：

```
# dnf install tcl
# which tclsh
/bin/tclsh

```

在 macOS 上，你可以使用 [Homebrew](https://opensource.com/article/20/6/homebrew-mac) 来安装最新的 Tcl：

```
$ brew install tcl-tk
$ which tclsh
/usr/local/bin/tclsh

```

### 在 Tcl 中猜数字

从创建基本的可执行脚本 `numgame.tcl` 开始：

```
$ touch numgame.tcl
$ chmod 755 numgame.tcl

```

接着在你的文件中开始编码，标题是通常的 #!：

```
#!/usr/bin/tclsh

```

这里有一些关于 Tcl 的简单介绍，以便与本文一起追踪。

第一点是，Tcl 处理的都是字符串。变量通常被当作字符串处理，但可以自动切换类型和内部表示（这一点你通常无法看到）。函数可以把它们的字符串参数解释为数字（`expr`），并且只通过值传递。字符串通常使用双引号或大括号来划分。双引号允许变量扩展和转义序列，而大括号则完全没有扩展。

第二点是 Tcl 语句可以用分号隔开，但通常不这样。语句行可以用反斜杠字符来分割，然而，典型的做法是将多行语句放在大括号内，以避免需要这样做。大括号只是更简单，下面的代码格式也反映了这一点。大括号允许对字符串进行延迟求值。在 Tcl 进行变量替换之前，值被传递给函数。

最后，Tcl 使用方括号进行命令替换。方括号之间的任何东西都会被送到 Tcl 解释器的一个新的递归调用中进行求值。这对于在表达式中间调用函数或为函数生成参数是很方便的。

### 过程

虽然在这个游戏中没有必要，但我先举一个在 Tcl 中定义函数的例子，你可以在以后使用：

```
proc used_time {start} {
	return [expr [clock seconds] - $start]
}

```

使用 `proc` 将其设定为一个函数（或过程）定义。接下来是函数的名称。然后是一个包含参数的列表；在本例中是一个参数 `{start}` ，然后是函数主体。注意，主体的大括号在这一行开始，它不能在下面一行。该函数返回一个值。返回值是一个复合求值（方括号），它从读取系统时钟 `[clock seconds]` 开始，并进行数学运算以减去 `$start` 参数。

### 设置、逻辑和完成

你可以在这个游戏的其余部分增加更多的细节，进行一些初始设置，对玩家的猜测进行迭代，然后在完成后打印结果：

```
set num [expr round(rand()*100)]
set starttime [clock seconds]
set guess -1
set count 0

puts "Guess a number between 1 and 100"

while { $guess != $num } {
	incr count
	puts -nonewline "==> "
	flush stdout
	gets stdin guess

	if { $guess < $num } {
		puts "Too small, try again"
	} elseif { $guess > $num } {
		puts "Too large, try again"
	} else {
		puts "That's right!"
	}
}

set used [used_time $starttime]

puts "You guessed value $num after $count tries and $used elapsed seconds"

```

前面的 `set` 语句建立变量。前两个求值表达式用于识别 1 到 100 之间的随机数，下一个保存系统时钟启动时间。

`puts` 和 `gets` 命令用于来自玩家的输出和输入。我使用的 `puts` 暗示输出是标准输出。`gets` 需要定义输入通道，所以这段代码指定 `stdin` 作为用户的终端输入源。

当 `puts` 省略行末终止符时，需要 `flush stdout` 命令，因为 Tcl 缓冲了输出，在需要下一个 I/O 之前可能不会被显示。

从这里开始，`while` 语句说明了循环控制结构和条件逻辑，需要给玩家反馈并最终结束循环。

最后的 `set` 命令调用我们的函数来计算游戏的耗时秒数，接着是收集到的统计数字来结束游戏。

### 玩吧!

```
$ ./numgame.tcl
Guess a number between 1 and 100
==> 100
Too large, try again
==> 50
Too large, try again
==> 25
Too large, try again
==> 12
Too large, try again
==> 6
Too large, try again
==> 3
That's right!
You guessed value 3 after 6 tries and 20 elapsed seconds

```

### 继续学习

当我开始这个练习时，我怀疑回到 90 年代末的流行语言对我有多大的帮助。一路走来，我发现 Tcl 有几处让我非常喜欢的地方，我最喜欢的是方括号内的命令求值。与其他许多过度使用复杂闭包结构的语言相比，它似乎更容易阅读和使用。我以为它是一种 [已消亡的语言](https://opensource.com/article/19/6/favorite-dead-language)，但实际上它仍在蓬勃发展，并在多个平台上得到支持。我学到了一些新的技能，并对这种古老的语言有了新的认识。

在 <https://www.tcl-lang.org> 上查看官方网站。你可以找到最新的源代码、二进制发行版、论坛、文档，以及仍在进行的会议信息的参考。

---

via: <https://opensource.com/article/23/2/learn-tcl-writing-simple-game>

作者：[James Farrell](https://opensource.com/users/jamesf) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出