开放文档格式 ODT 文件格式解析

是文档格式定义了你，还是你定义了文档格式。

# 开放文档格式 ODT 文件格式解析

>
> 开放文档格式（ODF）基于开放标准，你可以使用其它工具检查它们，甚至从中提取数据。你只需要知道从哪里开始。
>
>
>

过去，文字处理文件是封闭的专有格式。在一些较旧的文字处理软件中，文档文件本质上是该软件的内存转储。虽然这样可以让加载文件更快，但也使文档文件格式变得不透明。

2005 年左右，<ruby> 结构化信息标准促进组织 <rt>  Organization for the Advancement of Structured Information Standards </rt></ruby>（OASIS）为所有类型的办公文档定义了一种开放格式，即<ruby> 办公应用程序开放文档格式 <rt>  Open Document Format for Office Applications </rt></ruby>（ODF）。由于 ODF 是基于 [OpenOffice.org](http://OpenOffice.org) 的 XML 文件规范的开放式标准，因此你也可以将其简称为 “开放文档格式”。ODF 包括几种文件类型，包括用于 <ruby> 开放文档文本OpenDocument Text</ruby> 文档的 ODT。ODT 文件中有很多值得探索的内容，它的本质是一个 Zip 文件。

### ODT 文件结构

跟所有 ODF 文件一样，ODT 文件实际上是一个 XML 文档和其它文件的 Zip 压缩包。使用 Zip 可以占用更少的磁盘空间，同时也意味着可以用标准 Zip 工具来检查它。

我有一篇关于 IT 领导力的文章，名为“Nibbled to death by ducks”，我将其保存为 ODT 文件。由于 ODF 文件是一个 zip 容器，你可以用 `unzip` 命令来检查它：

```
$ unzip -l 'Nibbled to death by ducks.odt'
Archive: Nibbled to death by ducks.odt
Length Date Time Name
39 07-15-2022 22:18 mimetype
12713 07-15-2022 22:18 Thumbnails/thumbnail.png
915001 07-15-2022 22:18 Pictures/10000201000004500000026DBF6636B0B9352031.png
10879 07-15-2022 22:18 content.xml
20048 07-15-2022 22:18 styles.xml
9576 07-15-2022 22:18 settings.xml
757 07-15-2022 22:18 meta.xml
260 07-15-2022 22:18 manifest.rdf
0 07-15-2022 22:18 Configurations2/accelerator/
0 07-15-2022 22:18 Configurations2/toolpanel/
0 07-15-2022 22:18 Configurations2/statusbar/
0 07-15-2022 22:18 Configurations2/progressbar/
0 07-15-2022 22:18 Configurations2/toolbar/
0 07-15-2022 22:18 Configurations2/popupmenu/
0 07-15-2022 22:18 Configurations2/floater/
0 07-15-2022 22:18 Configurations2/menubar/
1192 07-15-2022 22:18 META-INF/manifest.xml
970465 17 files

```

我想强调 Zip 文件结构的以下几个元素：

1. `mimetype` 文件用于定义 ODF 文档。处理 ODT 文件的程序，如文字处理程序，可以使用该文件来验证文档的 MIME 类型。对于 ODT 文件，它应该总是：

```
application/vnd.oasis.opendocument.text

```
2. `META-INF` 目录中有一个 `manifest.xml` 文件。它包含查找 ODT 文件其它组件的所有信息。任何读取 ODT 文件的程序都从这个文件开始定位其它内容。例如，我的 ODT 文档的 `manifest.xml` 文件包含这一行，它定义了在哪里可以找到主要内容:

```
<manifest:file-entry manifest:full-path="content.xml" manifest:media-type="text/xml"/>

```
3. `content.xml` 文件包含文档的实际内容。
4. 我的文档中只有一张截图，它位于 `Pictures` 目录中。

### 从 ODT 中提取文件

由于 ODT 文档是一个具有特定结构的 Zip 文件，因此可以从中提取文件。你可以先解压缩整个 ODT 文件，例如使用 `unzip` 命令：

```
$ unzip -q 'Nibbled to death by ducks.odt' -d Nibbled

```

一位同事最近向我要了一份我在文章中提到的图片。通过查看 `META-INF/manifest.xml` 文件，我找到了嵌入图像的确切位置。用 `grep` 命令可以找到描述图像的行:

```
$ cd Nibbled
$ grep image META-INF/manifest.xml
<manifest:file-entry manifest:full-path="Thumbnails/thumbnail.png" manifest:media-type="image/png"/>
<manifest:file-entry manifest:full-path="Pictures/10000201000004500000026DBF6636B0B9352031.png" manifest:media-type=" image/png”/>

```

我要找的图像保存在 `Pictures` 文件夹中。可以通过列出目录的内容来验证：

```
$ ls -F
Configurations2/ manifest.rdf meta.xml Pictures/ styles.xml
content.xml META-INF/ mimetype settings.xml Thumbnails/

```

就是这张图片：

### 开放文档格式

ODF 是一种开放的文件格式，它可以描述文字处理文件（ODT）、电子表格文件（ODS）、演示文稿（ODP）和其它文件类型。由于 ODF 格式基于开放标准，因此可以使用其他工具检查它们，甚至从中提取数据。你只需要知道从哪里开始。所有 ODF 文件都以 `META-INF/manifest.xml` 为“引导”文件，通过它你能找到其余的所有内容。

*（题图：MJ/d245ab34-f0b0-452c-b29a-ece9aa78f11a）*

---

via: <https://opensource.com/article/22/8/odt-files>

作者：[Jim Hall](https://opensource.com/users/jim-hall) 选题：[lkxed](https://github.com/lkxed) 译者：[toknow-gh](https://github.com/toknow-gh) 校对：[校对者ID](https://github.com/%E6%A0%A1%E5%AF%B9%E8%80%85ID)

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


为什么公司需要设立开源项目办公室（OSPO）

# 为什么公司需要设立开源项目办公室（OSPO）

>
> 要想软件产品能够成功，关键在于管理开源软件的使用并降低合规风险。开源项目办公室能帮助组织实现这一目标。让我们一起深入了解。
>
>
>

<ruby> 开源软件 <rt>  Open source software </rt></ruby>（OSS）是构建现代软件解决方案的重要组成部分。无论是服务于内部或是面向客户的解决方案，如今的组织都在很大程度上依赖于开源软件。开源软件组件受其独立的授权条款约束，对这些条款的不合规操作往往会使组织面临安全和知识产权（IP）风险，这进而可能会损害公司的品牌价值。

当开发团队正忙于发布软件版本时，他们的主要目标是满足项目的截止日期。因此，他们在跟踪组件版本、库或者引入项目的第三方代码时，往往疏于应有的严格性。这意味着带有许可限制或漏洞的开源软件组件可能会进入代码库，然后交付给客户，这对客户和提供软件解决方案的公司都将带来风险。

开发人员为开源项目做出贡献的领域也日益具有挑战性。如果公司能够参与，他们可以获得多种益处，包括保持技能的最新性，挽留员工，吸引开发者为组织工作，以及提升公司形象。很多开源项目要求开发者签署贡献者许可协议，该协议声明由开发者创建的知识产权属于该项目，而非开发者本人。在这种情况下，组织需要确保那些不公开源代码的知识产权和商业机密不会被转让给开源项目。

我们需要教育开发者去了解开源许可的相关问题，确定何时、如何以及在何种程度上向社区提供支持，以及哪些软件包可能会给组织的声誉带来风险。通过制定一套战略性的政策和操作流程，我们可以规范这一切。实现上述目标的一种方式就是设立一个专门处理所有开源相关事务的部门——即 <ruby> 开源项目办公室 <rt>  open source program office </rt></ruby>（OSPO）。

OSPO 为员工使用开源软件创建了一个生态环境，使合规风险得到良好的控制。OSPO 的角色不仅在于监督开源软件的使用，它还负责回馈社区，并通过积极参与各种活动以及组织网络研讨会和促销活动，来推动公司在市场上的增长。

在这篇文章里，我们将深入探讨为何公司需要设立一个 OSPO，以及它是如何在开源政策和管理程序中崭露头角的。

### 为何我们需要一个开源项目办公室（OSPO）？

由于开源软件正广泛地被运用，因此在产品开发周期中，为团队对其使用的监管和维持合规性策略往往会带来重大压力。

开发者往往会忽略许可证责任，有时甚至管理层或各利益相关方也并未完全意识到不遵守这些开源许可证的影响。不论是用于内部还是外部目的，OSPO 能处理从开始引入开源软件，直至交付给终端用户的过程中的所有环节。

通过在软件开发生命周期早期阶段开始进行合规性和规章制度的检查，OSPO 能构筑坚实的基础。这通常开始于引导和整合团队成员，共同迈向一个能惠及组织价值观的方向。OSPO 会设定关于开源使用的政策和流程，并在公司内部进行角色和职责的管理。

总结来说，OSPO 有助于整合所有参与产品构建的相关团队的努力，进而提升组织更好和更有效使用开源的能力。

#### 开源项目办公室（OSPO）的崛起

诸如微软、谷歌和 Netflix 等公司已经在自身组织内部设立了成熟的 OSPO。此外，像 Porsche 和 Spotify 这样的公司也在建立自己的 OSPO，以实现开源的高效利用。

以下是一些知名公司的领导者对 OSPO 实践的看法：

* “对于公司来说，这是一种文化的变迁，”Jeff McAffer 解释了他的观点，他曾经多年负责微软的 OSPO，并现在是 GitHub 的产品主管，致力于在企业界推动开源的发展。“很多公司并不习惯与外部团队合作。”
* “工程、业务、法律每一方的利益相关者都有他们各自的目标和角色，往往需要在速度、质量和风险之间做出权衡，” Spotify 的开源主管 Remy DeCausemaker 解释道。“ OSPO 的任务就是协调和连接这些单独的目标，融合成一个能够减少摩擦的全面策略。”
* Verizon Media 的 OSPO 领导 Gil Yahuda 表达了他的观点，“我们正在寻找创造一个人才愿意融入其中的工作环境。我们的工程师都知道，他们处在一个欢迎开源的环境中，他们在这里被鼓励与他们工作相关的开源社区合作。”

### 开源项目办公室（OSPO）的职能

OSPO 的职能可能会根据组织的员工数量、OSPO 团队的人数以及开源的运用目的不同而有所差异。组织可能只想利用开源软件来开发产品，也可能同时计划向社区做出贡献。

OSPO 的角色可能会包括评估哪些开源许可证是适宜的，以及是否应让全职员工参与开源项目等任务。为愿意贡献的开发人员制定贡献者许可协议（CLA），并确定哪些开源组件有助于产品的快速成长和质量提升也是 OSPO 的重要职责。

OSPO 的主要职能包括但不限于：

* 建立开源合规和治理政策来降低组织的知识产权风险
* 培育开发者做出更佳决策的能力
* 制定政策规范与公司全面采用开源的工作。
* 监控组织内外开源软件的使用情况
* 在每次软件版本发布后组织会议，讨论开源软件合规流程的优点及改进空间
* 加快软件开发生命周期（SDLC）
* 提高不同部门之间的透明度和协调性
* 通过简化流程在早期阶段降低风险
* 鼓励团队成员向上游贡献，以享受开源项目的协作和创新优势
* 提供包含合适补救措施和产品团队建议的报告
* 准备合规文档，确保满足许可证的义务

### 构建开源项目办公室（OSPO）的过程

OSPO 的组成通常包括公司内多个部门的人员。这个过程涉及了对相关部门进行开源合规基础和使用风险的培训与教育。OSPO 可能提供法律和技术支持，以确保达成开源的目标需求。

组织内的 OSPO 可能包括以下人员（这只是一个可能参与的人员名单，并不是详尽无遗的清单）：

* 主任/首席：主任或首席通常是 OSPO 的主要负责人。他能全方位掌控使用开源的各个方面，包括使用不同组件的影响，许可证的含义，以及开发和社区贡献等。这些要求完全取决于公司的需求。
* 项目经理：项目经理为目标解决方案设置需求和目标。他/她将与产品和工程团队共同工作，以协调工作流程。这包括以开发者友好的方式确保策略和工具的实施。
* 法律支持：法律支持可能来自公司外部或者内部，但他们在 OSPO 中扮演着重要角色。法律团队将与项目经理密切合作，定义管理开源软件使用的策略，包括每个产品允许使用的开源许可证，如何（或是否）向现有的开源项目贡献等。
* 产品和工程团队/开发者：工程团队需要熟悉开源许可及其相关风险。团队在使用任何开源组件之前，必须得到 OSPO 的批准。团队可能需要定期接受关于开源合规基础以及其使用的培训。
* 首席技术官/信息官/利益相关者：公司的领导对 OSPO 策略有着巨大影响。利益相关者在任何产品解决方案的决策过程中拥有很大的决定权。因此，工程副总裁，首席技术官/信息官，或者首席合规/风险官员需要参与 OSPO 的工作。
* IT 团队：来自 IT 部门的支持十分重要。OSPO 可能被分配实施内部工具的任务，如提高开发者效率，监控开源合规，或者设置开源安全措施等。IT 团队在协助连接工作流程和确保以开发者友好的方式实施策略方面起着关键作用。

在 TODO 组织于 2021 年执行的 OSPO 调查中，得出了以下的关键发现：

* 教育企业理解 OSPO 如何为他们带来益处的机会仍然巨大。
* OSPO 对其赞助方的软件实践有显著的积极影响，但影响的具体效果并因组织规模的大小而异。
* 那些有意设立 OSPO 的公司，他们期望 OSPO 能提升创新，但策略设立及预算力度仍然是实现目标的主要挑战。
* 调查参与者中近半数尚未设立 OSPO 的人认为 OSPO 将有助于他们公司的发展，然而在那些认为 OSPO 无助于公司发展的人群中，有 35% 的人还未对此事有所考虑。
* 27% 的调查参与者表示，一家公司对开源参与的程度会深刻影响他们组织的购买决策。

如今，在构建任何软件解决方案时，对开源软件的依赖几乎是无法避免的。然而，开源许可证相关的潜在风险也不容忽视。因此，我们需要一套策略性的流程来有效解决使用开源组件带来的合规性问题。

通过建立一支集中的专业团队，OSPO 能帮助公司确立规范的开源文化，让员工了解并熟悉与组织内开源使用相关的所有事宜。此外，OSPO 还可以发挥引导作用，吸纳行业内的顶级人才，这无疑将对实现商业目标产生积极影响。

*（题图：MJ/9a3e106d-0710-4dd7-b278-ef1056c5c5ab）*

---

via: <https://www.opensourceforu.com/2022/08/why-companies-need-to-set-up-an-open-source-program-office/>

作者：[Sakshi Sharma](https://www.opensourceforu.com/author/sakshi-sharma/) 选题：[lkxed](https://github.com/lkxed) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #1173 哪些搜索关键词能让谷歌赚钱

Summary:
? 哪些搜索关键词能让谷歌赚钱
? Bcachefs 被合并进正在开发中的 Linux 6.7
? Asahi Linux 化身 macOS 漏洞猎人
»
»

Bcachefs应该像ZFS那样作为一个模块。ZFS作为模块的主要原因是许可证，他们也考虑过换许可证，但是这要得到所有贡献者的同意，包括已经联系不上、甚至包括已经去世的人（都去世了还要他们同意吗？），最后没改成。

来自广东广州的 Chrome Mobile 118.0|Android 10 用户

如果作者去世了就可以无视版权/更改授权，那太多的人见不到第二天的太阳。。。

贡献者不是作者，至少不是主要的作者。<br />
软件授权虽然也是一种知识产权，但还是有些区别的。我不了解相关法律，不妨假设一种情景：如果ZFS的所有在世贡献者都同意改成GPL协议，但是已经去世的个别贡献者自然不可能同意或反对，导致协议还是没法更改。这是一种讽刺的事情，跟作者去世之后受到版权法保护几十年不一样。

如果同意你的观点，不妨设想以下场景：

所有在世贡献者都不同意改成GPL，于是管理层把这些人都送去见了上帝。已经去世的贡献者自然不可能同意或反对，于是乎管理者可以任意处置。。。

如果ZFS换许可证真的关键且必须，可以从头照着原有思路重新写一份。。。

# 硬核观察 #1173 哪些搜索关键词能让谷歌赚钱

### 哪些搜索关键词能让谷歌赚钱

并非所有的谷歌搜索都能让谷歌赚钱。谷歌经常说，它只在大约 20% 的搜索中显示广告，也就是所谓的 “商业搜索”。在美国诉谷歌反垄断案的审理过程中，法官公开了 2018 年 9 月 22 日这一周的热门查询列表，而且是按照收入排序的。它们包括：iphone 8、汽车保险、廉价航班、direct tv、在线院校、at&t、hulu、uber、免费信用报告等。其中在前 20 个查询关键词中，有关汽车保险的关键词出现了五次，有关 iPhone 的出现了三次。

>
> **[消息来源：The Verge](https://www.theverge.com/2023/11/1/23941766/google-antitrust-trial-search-queries-ad-money)**
>
>
>

>
> 老王点评：观察这些“值钱”的关键词挺有趣的。
>
>
>

###

### Bcachefs 被合并进正在开发中的 Linux 6.7

Bcachefs 曾在 Linux 6.5 中被 [否决](/article-15989-1.html)，后来又在 Linux 6.6 中被重新提交，但由于没有在 Linux-Next 树中进行额外测试而 [未能成功](/article-16172-1.html)。之后，Bcachefs 在 Linux-Next 中度过了整个 6.6 版周期，现在又提交给了 Linux 6.7 版的合并窗口，并被 Linus Torvalds 迅速接受。

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

>
> 老王点评：终于合并进去了。
>
>
>

### Asahi Linux 化身 macOS 漏洞猎人

正在积极将 Linux 移植到苹果芯片 Mac 的 Asahi Linux 项目，报告了苹果 macOS 中的一系列错误，这些错误可能会让用户的硬件处于难以恢复的状态。这些问题围绕着最新版本的 macOS 如何处理刷新率，配备 ProMotion 显示器的 MacBook Pro 机型受到了影响。据 Asahi 团队称，这些漏洞与 Asahi Linux 无关，而是潜伏在 macOS 升级和启动过程中。

>
> **[消息来源：The Register](https://www.theregister.com/2023/11/01/asahi_linux_mac_black_screen/)**
>
>
>

>
> 老王点评：恐怕连苹果也没想到它的质控问题是被一个 Linux 移植项目发现的，不知道是不是有重大奖金。
>
>
>


10 月份在 Fedora Linux 上值得尝试的酷炫 Flatpak应用

Summary: 本文介绍了 Flathub 中可用的项目以及安装说明。

本文介绍了 Flathub 中可用的项目以及安装说明。

# 10 月份在 Fedora Linux 上值得尝试的酷炫 Flatpak应用

>
> 本文介绍了 Flathub 中可用的项目以及安装说明。
>
>
>

[Flathub](https://flathub.org) 是获取和分发适用于所有 Linux 的应用的地方。它由 Flatpak 提供支持，允许 Flathub 应用在几乎任何 Linux 发行版上运行。

请阅读 “[Flatpak 入门](https://fedoramagazine.org/getting-started-flatpak/)”。要启用 flathub 作为你的 flatpak 提供商，请使用 [flatpak 站点](https://flatpak.org/setup/Fedora) 上的说明。

### Warehouse

[Warehouse](https://flathub.org/apps/io.github.flattool.Warehouse) 是一个图形程序，用于管理已安装的 Flatpak 应用程序和 Flatpak 远程应用。一些最重要的功能是：

* 查看 Flatpak 信息
* 管理用户数据
* 批量操作
* 剩余数据管理
* 管理远程应用

你可以通过单击网站上的安装按钮或手动使用以下命令来安装 “Warehouse”：

```
flatpak install flathub io.github.flattool.Warehouse

```

### Jogger

[Jogger](https://flathub.org/apps/xyz.slothlife.Jogger) 是一款适用于 Gnome Mobile 的应用，用于跟踪跑步和其他锻炼。它是用 GTK4、Libadwaita、Rust 和 Sqlite 构建的。尽管它的目标是 Gnome Mobile，但它在 Gnome Shell 下运行得很好，而且我发现它对于保存我的统计数据非常有用。其中一些功能是：

* 使用 Geoclue 位置跟踪锻炼
* 从 Fitotrack 导出导入锻炼
* 手动输入锻炼
* 查看锻炼详情
* 编辑锻炼
* 删除锻炼
* 计算锻炼消耗的卡路里

你可以通过单击网站上的安装按钮或使用以下命令手动安装 “Jogger”：

```
flatpak install flathub xyz.slothlife.Jogger

```

### Kooha

[Kooha](https://flathub.org/apps/io.github.seadve.Kooha) 是一个简单的屏幕录像机，具有简约的界面。你只需单击录制按钮即可，无需配置一堆设置。

Kooha 的主要特点包括：

* 录制麦克风、桌面音频或同时录制两者
* 支持 WebM、MP4、GIF 和 Matroska 格式
* 选择要录制的监视器、窗口或屏幕的一部分
* 多种来源选择
* 可配置的保存位置、指针可见性、帧速率和延迟
* 它在 Wayland 上运行得很好。

```
flatpak install flathub io.github.seadve.Kooha

```

### Warzone 2100

谁不喜欢经典的 Linux 游戏呢？

[Warzone 2100](https://flathub.org/apps/net.wz2100.wz2100) 让你指挥“计划”部队，在人类几乎被核导弹摧毁后重建世界。

Warzone 2100 于 1999 年发行，由 Pumpkin Studios 开发，是一款开创性的创新型 3D 即时战略游戏。

2004 年，Eidos 与 Pumpkin Studios 合作，以 GNU GPL 条款发布了游戏的源代码。此版本包含除音乐和游戏内视频序列之外的所有内容。当然，这些后来也被发布。

该游戏有一个问题：它使用旧的平台包（org.kde.Platform 6.4）。这意味着它需要更多的磁盘空间，但乐趣是值得的！

你可以通过单击网站上的安装按钮或使用以下命令手动安装 “Warzone 2100”：

```
flatpak install flathub net.wz2100.wz2100

```

Warzone 2100 也可以在 Fedora 仓库中以 rpm 形式使用。

*（题图原始图片由 Daimar Stein 提供）*

---

via: <https://fedoramagazine.org/fedora-linux-flatpak-cool-apps-to-try-for-october/>

作者：[Eduard Lucena](https://fedoramagazine.org/author/x3mboy/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


AI 模型的开源定义需要改变

Summary: 你认为开源许可证应当进行演变吗？

你认为开源许可证应当进行演变吗？

# AI 模型的开源定义需要改变

>
> 你认为开源许可证应当进行演变吗？
>
>
>

2023 年，我们以**人工智能（AI）崭露头角**开始了新的一年，同时也见证了众多公司全力以赴投身于 AI。

比如说 **Mozilla**，它在 2023 年初制定了 [开源 AI 计划](https://news.itsfoss.com/mozilla-open-source-ai/)，以开发各种 AI 驱动的解决方案。而 **HuggingChat** 也成为了第一个推出 ChatGPT [开源替代品](https://news.itsfoss.com/huggingchat-chatgpt/) 的组织。

即便是 Meta，他们也不例外。他们自家的 <ruby> 大型语言模型 <rt>  Large Language Model </rt></ruby>（LLM）[Llama 2](https://ai.meta.com/llama/) 项目在这一年都颇受关注，几个月前他们甚至推出了一款新的 [ChatGPT 竞争对手](https://news.itsfoss.com/meta-open-source-chatgpt/)。

然而，也有很多人开始 [提出质疑](https://www.wired.com/story/the-myth-of-open-source-ai/)，主张 **Meta 的 Llama 2 模型并不像人们期望的那样开放**，查看它的开源许可证似乎更是印证了这个观点。

该许可证 **不允许拥有超过 7 亿日活跃用户的服务使用 Llama 2**，同样的，**它也不能被用于训练其他的语言模型**。

这也就意味着 Meta 对于 Llama 2 的许可证 **未能满足** <ruby> 开源倡议组织 <rt>  Open Source Initiative </rt></ruby>（OSI）的 <ruby>   开源定义  <rt>  Open Source Definition </rt></ruby>（OSD）所列出的 **全部要求**。

人们可以争辩，像 [EleutherAI](https://www.eleuther.ai/) 和 [Falcon 40B](https://www.tii.ae/news/uaes-technology-innovation-institute-launches-open-source-falcon-40b-large-language-model) 这样的机构就做出了很好的示范，展示了如何适当地处理 AI 的开源许可。

然而，Meta 对此的看法却截然不同。

### 开源许可需要进化

在与 [The Verge](https://www.theverge.com/2023/10/30/23935587/meta-generative-ai-models-open-source) 的交谈中，Meta 人工智能研究副总裁 [Joëlle Pineau](https://en.wikipedia.org/wiki/Jo%C3%ABlle_Pineau) 为他们的立场进行了辩解。

她说，我们 **需要在信息共享的益处和可能对 Meta 商业造成的潜在成本之间寻找平衡**。

这种对开源的态度让他们的研究人员能够更加专注地处理 AI 项目。她还补充说：

>
> 开放的方式从内部改变了我们的科研方法，它促使我们不发布任何不安全的东西，并在一开始就负起责任。
>
>
>

Joëlle 希望他们的生成型 AI 模型能够和他们过去的 [PyTorch](https://pytorch.org/) 项目一样受到热捧。

但是，**问题在于现有的许可证机制**。她又补充说，这些许可证并不是设计来处理那些需要利用大量多源数据的软件。

这反过来**为开发者和用户提供了有限责任**，以及，**对版权侵犯的有限赔偿**（解释为：保护）。

此外，她还指出：

>
> AI 模型与软件不同，涉及的风险更大，因此我认为我们应该对当前用户许可证进行改变，以更好地适应 AI 模型。
>
>
> 但我并不是一名律师，所以我在此问题上听从他们的意见。
>
>
>

我赞同她的观点，我们需要更新现有的许可方案，使之更好地适应 AI 模型，以及其他相关事务。

显而易见，**OSI 正在努力进行此事**。OSI 的执行董事 [Stefano Maffulli](https://twitter.com/smaffulli) 向 The Verge 透露，他们了解到 **当前的 OSI 批准的许可证无法满足人工智能模型的需求**。

他们正在商讨如何与 AI 开发者合作，以提供一个 “**透明、无许可但安全**” 的模型访问。

他还补充说：

>
> 我们肯定需要重新思考许可证的方式，以解决 AI 模型中版权和授权的真正限制，同时仍遵循开源社区的一些原则。
>
>
>

无论未来如何，显然，**开源标准必须推动其演化，以适应新的以及即将出现的技术** ，而此类问题不仅仅局限于 AI。

对于未来几年开源许可的变革，我充满期待。

? 对于你来说呢？你认为对于陈旧的开源标准，我们需要进行什么样的改变？

*（题图：MJ/e8bae5f6-606b-47db-aaea-c992c0bd143e）*

---

via: <https://news.itsfoss.com/open-source-definition-ai/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


Summary:
? OpenELA 发布用于构建 RHEL 8/9 衍生版的源代码
? Fedora 40 将放弃 X11 会话
? Chrome 浏览器放弃网络完整性 API
»
»

# 硬核观察 #1174 OpenELA 发布用于构建 RHEL 8/9 衍生版的源代码

### OpenELA 发布用于构建 RHEL 8/9 衍生版的源代码

在红帽决定限制客户访问 RHEL 源代码之后，各种基于 RHEL 的 Linux 发行版都陷入了困境。CIQ（Rocky Linux）、SUSE 和甲骨文决定成立开放企业 Linux 协会（OpenELA），以确保对企业 Linux 源代码的开放和免费访问。OpenELA 刚刚宣布，构建 RHEL 8/9 衍生版本所需的所有软件包的源代码现在都已可用。RHEL 7 的源代码仍在开发中。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/OpenELA-Initial-Source-Code)**
>
>
>

>
> 老王点评：国内的 CentOS 系的企业 Linux 均没有参加 OpenELA。
>
>
>

### Fedora 40 将放弃 X11 会话

[计划](/article-15821-1.html) 于明年 2 月发布的 KDE Plasma 6 将默认使用 Wayland 会话，而保留 X11 会话。将于明年 4 月发布的 Fedora 40 将采用 KDE Plasma 6.0 作为桌面选项。此外，作为这一变化的一部分，Fedora 40 计划放弃 KDE X11 会话，只保留 KDE Plasma Wayland 会话。此外，Fedora 40 还将移除对 [GNOME X11 会话](/article-16272-1.html) 的支持。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Fedora-40-Approves-Plasma-6)**
>
>
>

>
> 老王点评：按 Fedora 引领技术变化的成功案例来说，真正淘汰 X11 已经被安排上了日程。
>
>
>

### Chrome 浏览器放弃网络完整性 API

早在今年七月，谷歌就推出了网络完整性 API，希望为网站提供一种方法来确认用户及其设备/浏览器的真实性。目前该方案已经有了原型，但还只是在提案阶段。网络完整性 API 将允许网站 “请求一个令牌，证明其客户端代码运行环境的关键事实”。这与安卓系统上的类似 API（SafetyNet）并无太大区别，谷歌钱包和其他银行应用程序使用该 API 来确保设备未被篡改（root）。许多人将其等同于 DRM，提出了 [反对意见](/article-16032-1.html)，谷歌表示 “听到了你们的反馈”，并于今天表示，“Chrome 浏览器团队不再考虑网络环境完整性提案”。

>
> **[消息来源：9to5google](https://9to5google.com/2023/11/02/google-chrome-web-integrity-api/)**
>
>
>

>
> 老王点评：看来这次谷歌的投石问路失败了。
>
>
>


Skiff Mail 添加了方便的“快速别名”功能

Summary: 一个用户邮件别名的省时功能。

我看了“邮箱说”网站，今年只有4篇文章，但他在7月初就发了Skiff Mail设置别名的简短教程。

来自广东广州的 Chrome Mobile 119.0|Android 10 用户

一个用户邮件别名的省时功能。

# Skiff Mail 添加了方便的“快速别名”功能

>
> 一个用户邮件别名的省时功能。
>
>
>

Skiff Mail 是一款开源的端到端加密电子邮件服务，非常注重隐私。在各方面，包括用户体验方面，它都是 Gmail 和 Proton mail 的不错替代品。

虽然与竞争对手相比，它相当新，但它的一些注重隐私的功能可能会给你留下深刻的印象。

此外，还推出了一项新的快速别名功能。我试用了一下，感觉非常方便。

### 快速别名：一次性无忧设置

一般来说，你可以使用一些 [电子邮件保护工具](https://itsfoss.com/protect-email-address/)（例如 SimpleLogin）或从你的电子邮件提供商（无论是谁）创建电子邮件别名。

你可以选择记住电子邮件别名以供使用，或者在每次注册服务、新闻通讯或向你不认识的人提供联系信息时生成唯一的别名。

换句话说，大多数情况下，需要你进行多次交互才能使用多个电子邮件别名。

在这里，[Skiff Mail](https://skiff.com/mail) 允许你为自己声明一个完整的唯一子域，例如 **[gojo.maskmy.id](http://gojo.maskmy.id)** （正如我在测试用例中所做的那样）：

接下来，你所要做的就是 – 在激活它时将其视为你的网站地址，并在其之前添加任何内容作为电子邮件地址，例如 **[xyz@gojo.maskmy.id](https://news.itsfoss.com/cdn-cgi/l/email-protection)** 或 **[demo@gojo.maskmy.id](https://news.itsfoss.com/cdn-cgi/l/email-protection)**。

如上面的截图所示，你也可以选择生成一个随机名称来声明。

你可以从“<ruby> 设置 <rt>  Settings </rt></ruby>”菜单访问“<ruby> 快速别名 <rt>  Quick Aliases </rt></ruby>”功能：

因此，你不再需要生成电子邮件别名，但仍然可以通过这种方式拥有无限的别名。使其成为一次性设置解决方案，可供在线和离线使用。

我认为这些类型的别名应该有几个好处：

* 它使你无需访问该工具即可轻松创建新别名
* 使电子邮件别名看起来比垃圾邮件更真实

根据你的订阅，每人最多可以申请 3 个域名（Essential：1、Pro：2、Business：3）。并且，使用它们创建无限的电子邮件别名。

如果你使用免费套餐，你还可以申请 1 个域名，但最多只能使用 10 个别名。

>
> **[Skiff Quick 别名](https://skiff.com/quick-alias)**
>
>
>

? 你对此功能有何看法？ 请在下面的评论中告诉我。

---

via: <https://news.itsfoss.com/skiff-quick-aliases/>

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

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


# Garuda Linux “Spizaetus” 发布，可以体验 KDE Plasma 6 了！

>
> Garuda Linux 的最新升级带来了一些引人入胜的变化，以及一个全新的 ISO 版本。
>
>
>

Garuda Linux，作为一款 [用户友好且基于 Arch Linux 的发行版](https://itsfoss.com/arch-based-linux-distros/)，由于其可高度定制和可扩展性，近期已经吸引了大批用户。

Garuda Linux 提供了众多选项以满足不同的使用场景，无论是编程还是游戏。

目前，Garuda Linux 的最新发布版，**Garuda Linux “Spizaetus”** 现已可用。

下面，让我来引导你了解一下这个版本。

### ? Garuda Linux “Spizaetus”：有哪些新变化？

这个版本的代号“[Spizaetus](https://en.wikipedia.org/wiki/Spizaetus)” 是来源于一种通常在美洲热带地区发现的鹰鹞。此次发布的**主要亮点**包括：

* 提供 Hyprland ISO
* Ugrep 取代了 Grep
* 提供了实验性的 KDE Plasma 6 仓库

#### 提供 Hyprland ISO

在这个 Garuda Linux 的版本中，推出了带有 [Hyprland](https://hyprland.org/) 动态平铺 Wayland 组合器的新 ISO，这让**流畅的动画**和**轻松的窗口平铺**成为可能。

在此，开发者之一的 **dr460nf1r3** 表示：

>
> 关注精美的界面和模糊的窗口，Hyprland 无疑是 Garuda 的完美搭配。
>
>
>

>
> ? 然而，不幸的是，他们**不得不停止一些其它变体的更新**，因为这些变体并未得到妥善维护。受影响的变体包括：**MATE**、**LXQt-Kwin**、**KDE-git** 和 **Wayfire**。
>
>
>

#### Ugrep 取代了 Grep

[grep](https://en.wikipedia.org/wiki/Grep) 命令行工具已被性能更强的 [ugrep](https://ugrep.com/) 文件模式搜索器所取代，后者声称自己是“**超快速且用户友好的 Grep 替代品**”。

这是一个令人感兴趣的改变，我们期待看到用户的反馈。

#### 实验性的 KDE Plasma 6 仓库（请谨慎！）

开发者们还引入了一个名为 [chaotic-aur-kde](https://forum.garudalinux.org/t/kde-6-repository-testing/31442) 的实验性仓库，以提供**早期版本的 Plasma 6**。

请注意，这是为那些想提前体验 Plasma 6 设计的用户而设，并**不建议将其用于生产环境**。 一位开发者补充道：

>
> 我们一直在努力通过特定的 chaotic-aur-kde 仓库，提供 Plasma 6 的早期构建。
>
>
> 这可以让我们初步探索未来的 Plasma 6 将会是什么样子 - 它的首个版本计划在 2024 年 2 月发布。无需多说，这些都是来自主分支的实验性构建版，因此只适合喜欢接受挑战认的人去体验。
>
>
>

#### ? 其它的变化和改进

除了上述的亮点之外，还有些其他值得一提的细化调整：

* **garuda-update 工具已更新** 用于处理近期由于包名称变更引发的冲突。
* [Plymouth](https://wiki.archlinux.org/title/plymouth) **已被移除** ，现在在启动时，会显示终端的输出内容。
* 对他们的**基础设施进行了各种更新**，以服务用户。
* 为 Garuda Linux 安装了一个专用的 [Lemmy 实例](https://lemmy.garudalinux.org/)。

你可以查阅 [官方公告](https://forum.garudalinux.org/t/garuda-linux-spizaetus-231029/31843) 来获取更多详细信息。

### ? 下载 Garuda Linux “Spizaetus”

Garuda Linux 提供了 **9 个不同的变体**，包括有 **KDE Plasma**、**GNOME**、**Xfce**、**Cinnamon**、**Sway** 等等选择。

你只需前往 [官方网站](https://garudalinux.org/downloads) ，就可以找到自己所需的镜像下载。

>
> **[Garuda Linux](https://garudalinux.org/downloads)**
>
>
>

? 你会尝试这个新发布的版本吗？欢迎在评论中告知我们！

---

via: <https://news.itsfoss.com/garuda-linux-spizaetus-release/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #1175 最重要的计算机视觉库 OpenCV 众筹新版本，应者寥寥

Summary:
? 最重要的计算机视觉库 OpenCV 众筹新版本，应者寥寥
? 科学家建议将闰秒变成几十年才需要调整一次的闰分
? 企业称 Meta 的免费人工智能并不便宜
»
»

主要是OpenCV官方太老实了。。。

但凡学习某些XXX，软件里面埋几个雷，然后提供收费的技术支持服务。。。

这招在制造业，尤其是家电业非常常见。。。

OpenCV是库，不是软件。埋雷（相当于后门）就变成最近的Unity了，这样做只会影响开源社区的声誉。

“ OpenCV是库，不是软件。”

——现代版的“白马不是马”

"老王点评：依靠 OpenCV 吃饭的人不少，但是都不愿意帮助它活下去。"

以上这句话至少2个谬误：

1，“都不愿意”，“都”显然不成立，更别提“不愿意”。

2，“帮它活下去”，这个“它”显然代指你前面所提的“OpenCV”,但文章没有提及OpenCV自身有活不下去的问题。

来自117.128.4.200的 Chrome Mobile 111.0|Android 10 用户

# 硬核观察 #1175 最重要的计算机视觉库 OpenCV 众筹新版本，应者寥寥

### 最重要的计算机视觉库 OpenCV 众筹新版本，应者寥寥

OpenCV 是一个开源的计算机视觉和机器学习软件库。据报告，89% 的嵌入式视觉工程师使用 OpenCV 作为主要的计算机视觉库。为了筹集完成和发布其重要 5.0 版本所需的资金，OpenCV 团队宣布发起一项众筹活动。OpenCV 5.0 原本是 20 周年纪念版本，最初计划于 2020 年发布，但要完成这个版本，需要很多资金。他们设立了 50 万美元的众筹目标，他们也希望“向其他陷入困境的开源项目证明众筹是一个可行的选择，而不仅仅依赖企业捐赠”。不过，这次的众筹于 10 月 24 日开始，十天过去了，才仅仅完成 5% 的目标。

>
> **[消息来源：i-Programmer](https://www.i-programmer.info/news/80-java/16662-opencv-launches-crowdfunding-campaign.html)**
>
>
>

>
> 老王点评：依靠 OpenCV 吃饭的人不少，但是都不愿意帮助它活下去。
>
>
>

### 科学家建议将闰秒变成几十年才需要调整一次的闰分

由于以地球自转为基础的天文钟和铯原子钟之间存在偏差，自 1972 年以来，每隔几年就通过插入闰秒来同步这两个时间 —— 让原子钟短暂停顿一下，让天文钟赶上。这就产生了 UTC，即世界协调时。但很难准确预测何时需要闰秒，这让科技公司、国家和世界计时员越来越头疼。美国国家标准与技术研究院负责网络时间同步的 <ruby> 朱达·莱文 <rt>  Judah Levine </rt></ruby> 提出了一个新的解决方案：闰一分钟。这样可以减少时钟同步的频率，也许每半个世纪才需要同步一次，而在此期间基本上忘掉它。

>
> **[消息来源：《纽约时报》](https://www.nytimes.com/2023/11/03/science/time-leap-second.html)**
>
>
>

>
> 老王点评：最初的闰秒设计是一个直觉方案，现在看起来没有考虑到科技发展这么快，以至于大量的科技设施需要依赖精确而一致的时间。
>
>
>

### 企业称 Meta 的免费人工智能并不便宜

一些为 OpenAI 人工智能付费的公司一直在寻求使用免费的开源替代品来降低成本。在 Meta 公司发布了开源的大型语言模型 Llama 2 之后，业界对此感到非常兴奋。但企业发现，他们为此向谷歌云一个月支付了 1200 美元，而使用 GPT-3.5 Turbo 处理相同的工作量每月才需要花费约 5 美元。企业发现，使用开箱即用的 Llama 2 的成本比 OpenAI 的 GPT-3.5 Turbo 高 50% 到 100%；而只有那些希望通过对数据进行训练来定制 LLM 的公司，才会选择开源方案 —— 在这种情况下，定制 Llama 2 模型的成本约为定制 GPT-3.5 Turbo 模型的四分之一。

>
> **[消息来源：The Information](https://www.theinformation.com/articles/metas-free-ai-isnt-cheap-to-use-companies-say)**
>
>
>

>
> 老王点评：一方面我相信 OpenAI 和 Azure 都为 AI 客户提供了大量的补贴，所以使用 GPT 会比 Llama 2 更便宜。另外一方面，当你需要定制，并且有定制的能力时，开源的 Llama 2 可能更适合你。
>
>
>


如何在 Ubuntu 上安装最新的 LibreOffice

# 如何在 Ubuntu 上安装最新的 LibreOffice

>
> 想在 Ubuntu 上使用最新、最好的 LibreOffice？这里有一个简单的方法。
>
>
>

LibreOffice 已预装在 Ubuntu 中。

不过，如果你选择了最小化的 Ubuntu 安装，或者卸载它并安装了其他办公套件，你可以使用此命令轻松安装：

```
sudo apt install libreoffice

```

这没问题。但 Ubuntu 仓库提供的 LibreOffice 版本可能不是最新的。

如果你听说有新的 LibreOffice 版本发布，很可能你不会获得该新版本。这是因为 Ubuntu 将其保持在稳定版本上。

这对大多数用户来说都很好。但是，如果你不是“大多数用户”，并且你想在 Ubuntu 中获取最新的 LibreOffice，那么你完全可以这样做。

有两种方法可以做到这一点：

* 使用官方 PPA（推荐）
* 从 LibreOffice 下载 deb 文件

让我们来看看。

### 方法 1：通过官方 PPA 安装最新的 LibreOffice（推荐）

你可以使用官方 “LibreOffice Fresh” PPA 在基于 Ubuntu 的发行版上安装 LibreOffice 的最新稳定版本。

PPA 提供了 LibreOffice 的最新稳定版本，而不是开发版本。因此，这使其成为在 Ubuntu 上获取较新 LibreOffice 版本的理想选择。

你甚至不需要使用此方法卸载以前的版本。它将把现有的 LibreOffice 更新到新版本。

```
sudo add-apt-repository ppa:libreoffice/ppa
sudo apt update
sudo apt install libreoffice

```

由于你要添加 PPA，因此你还将获得以这种方式安装的新版本的更新。

### 方法 2：从网站获取二进制文件（如果需要）

你可以随时前往 [LibreOfiice 网站的下载页面](https://www.libreoffice.org/download/download-libreoffice) 下载最新版本的 deb 文件。你还会看到下载较旧但 LTS 稳定版本的选项。

我相信你已经 [知道如何从 deb 文件安装应用](https://itsfoss.com/install-deb-files-ubuntu/)。右键单击 deb 文件，选择使用软件中心打开它。进入软件中心后，你可以单击安装按钮进行安装。

### 结论

第二种方法的缺点是，如果有更新，你必须再次下载 deb 文件，删除以前的 LibreOffice 版本，然后使用新下载的 deb 文件安装新版本。

相比之下，PPA 会随着系统更新而自动更新。这就是我推荐 PPA 的原因，特别是当它由 LibreOffice 团队自己维护时。

顺便说一句，这里有一些 [充分利用 LibreOffice 的技巧](/article-15530-1.html)：

>
> **[提高 LibreOffice 生产力的技巧](/article-15530-1.html)**
>
>
>

我希望这个快速技巧可以帮助你在基于 Ubuntu 的发行版上获取最新的 LibreOffice。如果你有疑问，请告诉我。

---

via: <https://itsfoss.com/install-libreoffice-ubuntu/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


计算机科学学者认为技术支持没什么用处，直到他真正需要它

that was great！

来自河南焦作的 Chrome 114.0|Chrome OS 14541.0 用户

哈哈哈，发现错在自己，但依然保持傲娇的，计算机教授～～～

# 计算机科学学者认为技术支持没什么用处，直到他真正需要它

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

>
> “他们基本上是用 Emacs 作为自己的操作系统，再配上一个自定义的 LISP 脚本来收取邮件” —— 那能有什么问题呢？
>
>
>

本周的故事，故事的主角我们给他起名字 “Declan”，他在 1990 年和 2000 年期间，为一所大学的计算机科学系提供 IT 支持服务。

Declan 这样介绍他的工作：“我的职责多样，从基本的桌面支持，到维护院系网站，有时候还需要开发一些学者们想出来的某个什么系统。”

Declan 还补充说道，“尽管这个院系名字中带有 ‘计算机’ 这个词，但你会惊讶地发现在这个团队中各个教职工对计算机的熟练程度差异如此之大。有些聪明人用非常 ‘有趣’ 的方式使用电脑，当你步入一个教授的办公室协助‘解决他的电子邮件问题’时，你绝对会对你发现的东西感到惊讶。”

一个典型的例子是某位教授，他基本上是以 Emacs 作为其操作系统，而他的邮件客户端则是他自己用 LISP 编写的一个脚本。至于他的邮件为何无法收发，这是另一个故事了。

今天我们要讲的故事，跟 Declan 的部分用户之间发生的冲突有关。他们作为计算机科学家，对 IT 团队的存在感到不满，他们认为用在 Declan 和他的同事身上的投资，可以用于更重要的地方。对于这种观点，其中一部分人并不甘于默默背锅。

“有一次，一位讲话特别直言不讳的学者在全系会议上站出来，当着 400 名员工的面严厉批评 IT 人员，声称他不仅不需要 IT 支持人员，而且每当他提交支持申请时，我们总是无视他，” Declan 回忆道。

IT 部门的负责人因此要求他的团队去调查是否存在他所说的问题。于是，Declan 和他的团队请求那位愤怒的学者再次提交问题申请以重现问题。

学者依照他们的请求提交了申请。然而，他们却并未收到任何申请单。

接下来的步骤，则是对服务器日志的检查。

经过搜索，结果显露出来。这位学者的确提交了一张申请单，甚至还提交过几张其他的。

然而，它们都被发送到了以 “heldesk@” 开头的邮件地址。

而并非正确的包含 “p” 字母的 “hel**p**desk@”。

这位学者的邮件客户端记住了这个错误的地址，并且在他每次向他觉得不应存在的团队寻求帮助时，都会自动填入这个地址。

这个结果无疑是对学术严谨性的一种讽刺。

Declan 说：“这位学者被告知了他的错误，但他还是一本正经地表示，既然他的胳膊受伤，不能期待他打字完全准确，所以整个问题都不是他的责任，而并没有因为指责我们浪费金钱而道歉。”

几年前，我们有位员工手受伤了，然而他却惊讶地发现就算仅用中指打字也比想象中容易。如果 Declan 希望让那位愤怒的学者看看，我们愿意提供一个示例。

然而我们有些离题了。Declan 提到，这件事也带来了一个积极的转机，因为在那次事件发生后，计算机科学系的系主任开始“更倾向于站在 IT 人员这边，于是这场风波并非全然就是一场失败”。

你有没有过这样的经历，即与一个号称专家的人一起工作，但结果却发现他远非其言?如果有，你可以发表评论讲一下你的经历。

*（题图：MJ/e3f2ea48-bd9b-4952-96c3-5963ba6378fc）*

---

via: <https://www.theregister.com/2023/11/03/on_call/>

作者：[Simon Sharwood](https://www.theregister.com/Author/Simon-Sharwood) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


活动资料下载 ｜ LLUG 成都场成功举办

Summary: 就在上周末，10 月 29 日的成都，LLUG 成都场成功在武侯区菁蓉汇举办。

就在上周末，10 月 29 日的成都，LLUG 成都场成功在武侯区菁蓉汇举办。

# 活动资料下载 ｜ LLUG 成都场成功举办

>
> 就在上周末，10 月 29 日的成都，LLUG 成都场成功在武侯区菁蓉汇举办。
>
>
>

本次活动由 Linux 中国和龙蜥社区（OpenAnolis）联合主办，异步图书、COSCON 中国开源年会提供了支持。本次活动主要由三位嘉宾共同线上线下分享为主，并辅以线下交流沟通，帮助大家在成都本地找到热爱 Linux、 热爱技术的小伙伴们。

Linux 中国的老朋友，成都不周山文化发展有限公司 CEO 孙康先生为参会者分享了他自己从 Linux 从业者，到走上技术从业，再到如今创业的经历，并深刻的剖析了作为技术从业者想要创业需要关注的事情。

老王则通过远程的为现场参会的同学们带来了他的分享：《高效开源（个人篇）》，帮助参会的同学们了解开源、学习开源。

Bestony 为现场的同学们分享了自己的大模型的开发经验，帮助参会同学们理解大模型的原理、当下的开发者们如何使用和迭代自己对于大模型的使用，提升自己的能力。

### PPT及视频下载

LLUG 的创办希望帮助 Linux 社区当中的每一个人都可以充分的交流经验和心得，所以我们也将本次活动的视频以及演示文稿开放出来，供大家查看。视频托管在 Bilibili，PPT 文稿则托管在 Github 的 [Linux-CN/LLUG-Shares](https://github.com/Linux-CN/LLUG-Shares) 仓库中，供大家下载。

本次活动的 PPT 已经上传至 GitHub ，方便大家下载，视频也以上传至 Bilibili 和 Linux 中国视频号，方便大家收看。

|  |  |  |  |  |
| --- | --- | --- | --- | --- |
| 类型 | 活动主题 | 主讲人 | PPT | 在线视频 |
| 主题演讲 | 《从结识 Linux 到创业 — 我的 Linux 历程》 | 孙康 | [下载地址](https://github.com/Linux-CN/LLUG-Shares/blob/main/Chendu/2023.10-JingRongHui/%E4%BB%8E%E7%BB%93%E8%AF%86Linux%E5%88%B0%E5%88%9B%E4%B8%9A-%E6%88%91%E7%9A%84Linux%E5%8E%86%E7%A8%8B.pdf) | [Bilibili](https://www.bilibili.com/video/BV1RN4y1S7RG/) |
| 主题演讲 | 《高效开源（个人篇）》 | wxy | [下载地址](https://github.com/Linux-CN/LLUG-Shares/blob/main/Shanghai/2023.07-Qihoo/7.23%20wxy%20%E9%AB%98%E6%95%88%E5%BC%80%E6%BA%90%EF%BC%88%E4%B8%AA%E4%BA%BA%E7%AF%87%EF%BC%89.pdf) | [Bilibili](https://www.bilibili.com/video/BV1DF41117jb/?spm_id_from=333.999.0.0) |
| 主题演讲 | 《大模型应用开发经验分享》 | bestony | [下载地址](https://github.com/Linux-CN/LLUG-Shares/blob/main/Chendu/2023.10-JingRongHui/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB.pdf) | [Bilibili](https://www.bilibili.com/video/BV1pN411G7u8/) |

### 致谢

本次活动的举办，得到了中国开源年会提供的线下场地支持，让我们在成都可以线下畅聊，交接技术和经验。同时，也要感谢异步图书提供的图书支持，这些高质量的图书为参会者们提供了丰富的知识，为大家带来了新知输入。

感谢大家的支持，才能让本次活动成功举办！

### 11 月杭州见

11 月的 LLUG 即将来到杭州～如果你感兴趣做分享，或是有更多的建议给到我们，可以扫描下方二维码，申报议题或提交建议。

*（题图：MJ/55a2abbd-d5cc-499d-8fa0-57c1797aaec1）*


Summary:
? Arm 收购了树莓派公司的少量股份，以免投向 RISC-V
? 解散 50 年后，披头士乐队发布了最后一首歌曲《Now And Then》
? Mozilla 敦促开发者着手开发安卓扩展程序
»
»

Safari的扩展跟垃圾一样

# 硬核观察 #1176 Arm 收购了树莓派公司的少量股份，以免投向 RISC-V

### Arm 收购了树莓派公司的少量股份，以免投向 RISC-V

Arm CPU 已应用于所有树莓派单板计算机。双方的合作早在树莓派上市销售之前就开始了。最初的树莓派主板采用单核 Arm CPU，运行频率为 700 MHz。Arm 持有树莓派公司的少量股权代表了将来树莓派会继续使用 Arm CPU。随着 RISC-V CPU 的兴起，它在各种设备上出现，但在可预见的未来，我们将不会看到基于 RISC-V 的树莓派。

>
> **[消息来源：Tom's Hardware](https://www.tomshardware.com/raspberry-pi/arm-acquires-minority-stake-in-raspberry-pi)**
>
>
>

>
> 老王点评：会有使用 RISC-V 的、更便宜的开源单板计算机出现的。
>
>
>

### 解散 50 年后，披头士乐队发布了最后一首歌曲《Now And Then》

在披头士乐队解散五十年之后，它的四名成员合作发布了歌曲《Now And Then》。这首歌最初是以练习磁带的形式录制的。由于披头士乐队的两名成员约翰·列侬和乔治·哈里森已经先后去世，技术团队使用数字技术完成了新的版本。技术团队通过机器学习技术从模拟录音中分离出单个人或乐器的声音，生成了他们的声音和乐器声。两名在世的乐队成员，81 岁的保罗·麦卡特尼和 83 岁的林戈·斯塔尔分别录制了他们的新版本。这首歌在 YouTube 官方频道上 24 小时内的播放量已经超过 500 万次。

>
> **[消息来源：NBC](https://www.nbcnews.com/news/world/final-beatles-song-now-featuring-four-members-released-rcna123304)**
>
>
>

>
> 老王点评：或许，这可能不会是披头士乐队的最后一首歌，新的 AI 技术可能能为我们复活那些过世的艺术家。
>
>
>

### Mozilla 敦促开发者着手开发安卓扩展程序

早在 2019 年，Mozilla 就一直在考虑提供安卓扩展，但人们对其安全性存在顾虑。但即使存在安全风险，浏览器的可扩展性也是开放网络的显著特征之一，与电视等被动显示技术不同，浏览器可以让用户主动参与内容的处理和展示。2021 年 1 月，Mozilla 为安卓上的 Firefox 上推出过一组有限的扩展。现在，Mozilla 最终计划在 Firefox 120 版本之后，在安卓平台上为 Firefox 提供浏览器扩展（也称附加组件），预计当 12 月开放可用性时，将拥有至少 200 多个新的 Firefox 安卓扩展。本周，Mozilla 敦促开发人员评估他们的扩展代码，它预计“用户将对探索定制 Firefox 安卓版的各种新方法产生浓厚兴趣”。除了 Firefox 之外，Yandex 手机浏览器于 2016 年在安卓平台上就增加了对扩展的支持，Kiwi 等其他基于安卓的浏览器也是如此。而苹果公司于 2021 年 9 月就在 iOS 15 中推出了对 Safari 扩展程序的支持。

>
> **[消息来源：The Register](https://www.theregister.com/2023/11/03/mozilla_android_extensions/)**
>
>
>

>
> 老王点评：虽然不够早，但是终究是维护开放网络的重要努力。但是 Chrome 呢？
>
>
>


JVM 解释和编译指南

Summary: 通过理解解释、即时编译和预先编译之间的区别，有效地使用它们。

好文

JDK17 jaot又移除了

通过理解解释、即时编译和预先编译之间的区别，有效地使用它们。

# JVM 解释和编译指南

<img src="content_image/album_202311_06_093552kheiob71meqierhd.png" alt="" title="">

>
> 通过理解解释、即时编译和预先编译之间的区别，有效地使用它们。
>
>
>

Java 是一种跨平台的编程语言。程序源代码会被编译为 <ruby> 字节码 <rt>  bytecode </rt></ruby>，然后字节码在运行时被转换为 <ruby> 机器码 <rt>  machine code </rt></ruby>。<ruby> 解释器 <rt>  interpreter </rt></ruby> 在物理机器上模拟出的抽象计算机上执行字节码指令。<ruby> 即时 <rt>  just-in-time </rt></ruby>（JIT）编译发生在运行期，而 <ruby> 预先 <rt>  ahead-of-time </rt></ruby>（AOT）编译发生在构建期。

本文将说明解释器、JIT 和 AOT 分别何时起作用，以及如何在 JIT 和 AOT 之间权衡。

### 源代码、字节码、机器码

应用程序通常是由 C、C++ 或 Java 等编程语言编写。用这些高级编程语言编写的指令集合称为源代码。源代码是人类可读的。要在目标机器上执行它，需要将源代码转换为机器可读的机器码。这个转换工作通常是由 <ruby> 编译器 <rt>  compiler </rt></ruby> 来完成的。

然而，在 Java 中，源代码首先被转换为一种中间形式，称为字节码。字节码是平台无关的，所以 Java 被称为平台无关编程语言。Java 编译器 `javac` 将源代码转换为字节码。然后解释器解释执行字节码。

下面是一个简单的 Java 程序, `Hello.java`：

```
//Hello.java
public class Hello {
    public static void main(String[] args) {
         System.out.println("Inside Hello World!");
    }
}

```

使用 `javac` 编译它，生成包含字节码的 `Hello.class` 文件。

```
$ javac Hello.java
$ ls
Hello.class  Hello.java

```

现在，使用 `javap` 来反汇编 `Hello.class` 文件的内容。使用 `javap` 时如果不指定任何选项，它将打印基本信息，包括编译这个 `.class` 文件的源文件、包名称、公共和受保护字段以及类的方法。

```
$ javap Hello.class
Compiled from "Hello.java"
public class Hello {
    public Hello();
    public static void main(java.lang.String[]);
}

```

要查看 `.class` 文件中的字节码内容，使用 `-c` 选项：

```
$ javap -c Hello.class
Compiled from "Hello.java"
public class Hello {
  public Hello();
        Code:
           0: aload_0
           1: invokespecial #1                      // Method java/lang/Object."<init>":()V
           4: return

  public static void main(java.lang.String[]);
        Code:
           0: getstatic         #2                      // Field java/lang/System.out:Ljava/io/PrintStream;
           3: ldc               #3                      // String Inside Hello World!
           5: invokevirtual #4                      // Method
java/io/PrintStream.println:(Ljava/lang/String;)V
           8: return
}

```

要获取更详细的信息，使用 `-v` 选项：

```
$ javap -v Hello.class

```

### 解释器，JIT 和 AOT

解释器负责在物理机器上模拟出的抽象计算机上执行字节码指令。当使用 `javac` 编译源代码，然后使用 `java` 执行时，解释器在程序运行时运行并完成它的目标。

```
$ javac Hello.java
$ java Hello
Inside Hello World!

```

JIT 编译器也在运行期发挥作用。当解释器解释 Java 程序时，另一个称为运行时 <ruby> 分析器 <rt>  profiler </rt></ruby> 的组件将静默地监视程序的执行，统计各部分代码被解释的次数。基于这些统计信息可以检测出程序的 <ruby> 热点 <rt>  hotspot </rt></ruby>，即那些经常被解释的代码。一旦代码被解释次数超过设定的阈值，它们满足被 JIT 编译器直接转换为机器码的条件。所以 JIT 编译器也被称为分析优化的编译器。从字节码到机器码的转换是在程序运行过程中进行的，因此称为即时编译。JIT 减少了解释器将同一组指令模拟为机器码的负担。

AOT 编译器在构建期编译代码。在构建时将需要频繁解释和 JIT 编译的代码直接编译为机器码可以缩短 <ruby> Java 虚拟机 <rt>  Java Virtual Machine </rt></ruby>（JVM） 的<ruby> 预热 <rt>  warm-up </rt></ruby>时间。（LCTT 译注：Java 程序启动后首先字节码被解释执行，此时执行效率较低。等到程序运行了足够的时间后，代码热点被检测出来，JIT 开始发挥作用，程序运行效率提升。JIT 发挥作用之前的过程就是预热。）AOT 是在 Java 9 中引入的一个实验性特性。`jaotc` 使用 Graal 编译器（它本身也是用 Java 编写的）来实现 AOT 编译。

以 `Hello.java` 为例：

```
//Hello.java
public class Hello {
    public static void main(String[] args) {
        System.out.println("Inside Hello World!");
    }
}

$ javac Hello.java
$ jaotc --output libHello.so Hello.class
$ java -XX:+UnlockExperimentalVMOptions -XX:AOTLibrary=./libHello.so Hello
Inside Hello World!

```

### 解释和编译发生的时机

下面通过例子来展示 Java 在什么时候使用解释器，以及 JIT 和 AOT 何时参与进来。这里有一个简单的程序 `Demo.java` :

```
//Demo.java
public class Demo {
    public int square(int i) throws Exception {
        return(i*i);
    }

    public static void main(String[] args) throws Exception {
        for (int i = 1; i <= 10; i++) {
            System.out.println("call " + Integer.valueOf(i));
            long a = System.nanoTime();
            Int r = new Demo().square(i);
            System.out.println("Square(i) = " + r);
            long b = System.nanoTime();
            System.out.println("elapsed= " + (b-a));
            System.out.println("--------------------------------");
        }
    }
}

```

在这个程序的 `main()` 方法中创建了一个 `Demo` 对象的实例，并调用该实例的 `square()`方法，然后显示 `for` 循环迭代变量的平方值。编译并运行它：

```
$ javac Demo.java
$ java Demo
1 iteration
Square(i) = 1
Time taken= 8432439
--------------------------------
2 iteration
Square(i) = 4
Time taken= 54631
--------------------------------
.
.
.
--------------------------------
10 iteration
Square(i) = 100
Time taken= 66498
--------------------------------

```

上面的结果是由谁产生的呢？是解释器，JIT 还是 AOT？在目前的情况下，它完全是通过解释产生的。我是怎么得出这个结论的呢？只有代码被解释的次数必须超过某个阈值时，这些热点代码片段才会被加入 JIT 编译队列。只有这时，JIT 编译才会发挥作用。使用以下命令查看 JDK 11 中的该阈值：

```
$ java -XX:+PrintFlagsFinal -version | grep CompileThreshold
 intx CompileThreshold     = 10000                                      {pd product} {default}
[...]
openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment 18.9 (build 11.0.13+8)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8, mixed mode, sharing)

```

上面的输出表明，一段代码被解释 10,000 次才符合 JIT 编译的条件。这个阈值是否可以手动调整呢？是否有 JVM 标志可以指示出方法是否被 JIT 编译了呢？答案是肯定的，而且有多种方式可以达到这个目的。

使用 `-XX:+PrintCompilation` 选项可以查看一个方法是否被 JIT 编译。除此之外，使用 `-Xbatch` 标志可以提高输出的可读性。如果解释和 JIT 同时发生，`-Xbatch` 可以帮助区分两者的输出。使用这些标志如下：

```
$ java -Xbatch  -XX:+PrintCompilation  Demo
         34        1        b  3           java.util.concurrent.ConcurrentHashMap::tabAt (22 bytes)
         35        2         n 0           jdk.internal.misc.Unsafe::getObjectVolatile (native)
         35        3        b  3           java.lang.Object::<init> (1 bytes)
[...]
        210  269         n 0           java.lang.reflect.Array::newArray (native)   (static)
        211  270        b  3           java.lang.String::substring (58 bytes)
[...]
--------------------------------
10 iteration
Square(i) = 100
Time taken= 50150
--------------------------------

```

注意，上面命令的实际输出太长了，这里我只是截取了一部分。输出很长的原因是除了 `Demo` 程序的代码外，JDK 内部类的函数也被编译了。由于我的重点是 `Demo.java` 代码，我希望排除内部包的函数来简化输出。通过选项 `-XX:CompileCommandFile` 可以禁用内部类的 JIT：

```
$ java -Xbatch -XX:+PrintCompilation -XX:CompileCommandFile=hotspot_compiler Demo

```

在选项 `-XX:CompileCommandFile` 指定的文件 `hotspot_compiler` 中包含了要排除的包：

```
$ cat hotspot_compiler
quiet
exclude java/* *
exclude jdk/* *
exclude sun/* *

```

第一行的 `quiet` 告诉 JVM 不要输出任何关于被排除类的内容。用 `-XX:CompileThreshold` 将 JIT 阈值设置为 5。这意味着在解释 5 次之后，就会进行 JIT 编译：

```
$ java -Xbatch -XX:+PrintCompilation -XX:CompileCommandFile=hotspot_compiler \
-XX:CompileThreshold=5 Demo
        47      1       n 0     java.lang.invoke.MethodHandle::linkToStatic(LLLLLL)L (native)
           (static)
        47      2       n 0     java.lang.invoke.MethodHandle::invokeBasic(LLLLL)L (native)
        47      3       n 0     java.lang.invoke.MethodHandle::linkToSpecial(LLLLLLL)L (native)
           (static)
        48      4       n 0     java.lang.invoke.MethodHandle::linkToStatic(L)I (native)   (static)
        48      5       n 0     java.lang.invoke.MethodHandle::invokeBasic()I (native)
        48      6       n 0     java.lang.invoke.MethodHandle::linkToSpecial(LL)I (native)
           (static)
[...]
        1 iteration
        69   40         n 0     java.lang.invoke.MethodHandle::linkToStatic(ILIIL)I (native)
           (static)
[...]
Square(i) = 1
        78   48         n 0     java.lang.invoke.MethodHandle::linkToStatic(ILIJL)I (native)
(static)
        79   49         n 0     java.lang.invoke.MethodHandle::invokeBasic(ILIJ)I (native)
[...]
        86   54         n 0     java.lang.invoke.MethodHandle::invokeBasic(J)L (native)
        87   55         n 0     java.lang.invoke.MethodHandle::linkToSpecial(LJL)L (native)
(static)
Time taken= 8962738
--------------------------------
2 iteration
Square(i) = 4
Time taken= 26759
--------------------------------

10 iteration
Square(i) = 100
Time taken= 26492
--------------------------------

```

好像输出结果跟只用解释时并没有什么区别。根据 Oracle 的文档，这是因为只有禁用 `TieredCompilation` 时 `-XX:CompileThreshold` 才会生效：

```
$ java -Xbatch -XX:+PrintCompilation -XX:CompileCommandFile=hotspot_compiler \
-XX:-TieredCompilation -XX:CompileThreshold=5 Demo
124     1       n       java.lang.invoke.MethodHandle::linkToStatic(LLLLLL)L (native)   (static)
127     2       n       java.lang.invoke.MethodHandle::invokeBasic(LLLLL)L (native)
[...]
1 iteration
        187   40        n       java.lang.invoke.MethodHandle::linkToStatic(ILIIL)I (native)   (static)
[...]
(native)   (static)
        212   54        n       java.lang.invoke.MethodHandle::invokeBasic(J)L (native)
        212   55        n       java.lang.invoke.MethodHandle::linkToSpecial(LJL)L (native)   (static)
Time taken= 12337415
[...]
--------------------------------
4 iteration
Square(i) = 16
Time taken= 37183
--------------------------------
5 iteration
        214   56        b       Demo::<init> (5 bytes)
        215   57        b       Demo::square (16 bytes)
Square(i) = 25
Time taken= 983002
--------------------------------
6 iteration
Square(i) = 36
Time taken= 81589
[...]
10 iteration
Square(i) = 100
Time taken= 52393

```

可以看到在第五次迭代之后，代码片段被 JIT 编译了：

```
--------------------------------
5 iteration
        214   56        b       Demo::<init> (5 bytes)
        215   57        b       Demo::square (16 bytes)
Square(i) = 25
Time taken= 983002
--------------------------------

```

可以看到，与 `square()` 方法一起，构造方法也被 JIT 编译了。在 `for` 循环中调用 `square()` 之前要先构造 `Demo` 实例，所以构造方法的解释次数同样达到 JIT 编译阈值。这个例子说明了在解释发生之后何时 JIT 会介入。

要查看编译后的代码，需要使用 `-XX:+PrintAssembly` 标志，该标志仅在库路径中有反汇编器时才起作用。对于 OpenJDK，使用 `hsdis` 作为反汇编器。下载合适版本的反汇编程序库，在本例中是 `hsdis-amd64.so`，并将其放在 `Java_HOME/lib/server` 目录下。使用时还需要在 `-XX:+PrintAssembly` 之前增加 `-XX:+UnlockDiagnosticVMOptions` 选项。否则，JVM 会给你一个警告。

完整命令如下：

```
$ java -Xbatch -XX:+PrintCompilation -XX:CompileCommandFile=hotspot_compiler \ -XX:-TieredCompilation -XX:CompileThreshold=5 -XX:+UnlockDiagnosticVMOptions \ -XX:+PrintAssembly Demo
[...]
5 iteration
        178   56        b       Demo::<init> (5 bytes)
Compiled method (c2)    178   56                Demo::<init> (5 bytes)
 total in heap  [0x00007fd4d08dad10,0x00007fd4d08dafe0] = 720
 relocation     [0x00007fd4d08dae88,0x00007fd4d08daea0] = 24
[...]
 handler table  [0x00007fd4d08dafc8,0x00007fd4d08dafe0] = 24
[...]
 dependencies   [0x00007fd4d08db3c0,0x00007fd4d08db3c8] = 8
 handler table  [0x00007fd4d08db3c8,0x00007fd4d08db3f8] = 48
----------------------------------------------------------------------
Demo.square(I)I  [0x00007fd4d08db1c0, 0x00007fd4d08db2b8]  248 bytes
[Entry Point]
[Constants]
  # {method} {0x00007fd4b841f4b0} 'square' '(I)I' in 'Demo'
  # this:       rsi:rsi   = 'Demo'
  # parm0:      rdx     = int
  #             [sp+0x20]  (sp of caller)
[...]
[Stub Code]
  0x00007fd4d08db280: movabs $0x0,%rbx          ;   {no_reloc}
  0x00007fd4d08db28a: jmpq   0x00007fd4d08db28a  ;   {runtime_call}
  0x00007fd4d08db28f: movabs $0x0,%rbx          ;   {static_stub}
  0x00007fd4d08db299: jmpq   0x00007fd4d08db299  ;   {runtime_call}
[Exception Handler]
  0x00007fd4d08db29e: jmpq   0x00007fd4d08bb880  ;   {runtime_call ExceptionBlob}
[Deopt Handler Code]
  0x00007fd4d08db2a3: callq  0x00007fd4d08db2a8
  0x00007fd4d08db2a8: subq   $0x5,(%rsp)
  0x00007fd4d08db2ad: jmpq   0x00007fd4d08a01a0  ;   {runtime_call DeoptimizationBlob}
  0x00007fd4d08db2b2: hlt
  0x00007fd4d08db2b3: hlt
  0x00007fd4d08db2b4: hlt
  0x00007fd4d08db2b5: hlt
  0x00007fd4d08db2b6: hlt
  0x00007fd4d08db2b7: hlt
ImmutableOopMap{rbp=NarrowOop }pc offsets: 96
ImmutableOopMap{}pc offsets: 112
ImmutableOopMap{rbp=Oop }pc offsets: 148 Square(i) = 25
Time taken= 2567698
--------------------------------
6 iteration
Square(i) = 36
Time taken= 76752
[...]
--------------------------------
10 iteration
Square(i) = 100
Time taken= 52888

```

我只截取了输出中与 `Demo.java` 相关的部分。

现在再来看看 AOT 编译。它是在 JDK9 中引入的特性。AOT 是用于生成 `.so` 这样的库文件的静态编译器。用 AOT 可以将指定的类编译成 `.so` 库。这个库可以直接执行，而不用解释或 JIT 编译。如果 JVM 没有检测到 AOT 编译的代码，它会进行常规的解释和 JIT 编译。

使用 AOT 编译的命令如下：

```
$ jaotc --output=libDemo.so Demo.class

```

用下面的命令来查看共享库的符号表：

```
$ nm libDemo.so

```

要使用生成的 `.so` 库，使用 `-XX:+UnlockExperimentalVMOptions` 和 `-XX:AOTLibrary`：

```
$ java -XX:+UnlockExperimentalVMOptions -XX:AOTLibrary=./libDemo.so Demo
1 iteration
Square(i) = 1
Time taken= 7831139
--------------------------------
2 iteration
Square(i) = 4
Time taken= 36619
[...]
10 iteration
Square(i) = 100
Time taken= 42085

```

从输出上看，跟完全用解释的情况没有区别。为了确认 AOT 发挥了作用，使用 `-XX:+PrintAOT`：

```
$ java -XX:+UnlockExperimentalVMOptions -XX:AOTLibrary=./libDemo.so -XX:+PrintAOT Demo
         28        1         loaded        ./libDemo.so  aot library
         80        1         aot[ 1]   Demo.main([Ljava/lang/String;)V
         80        2         aot[ 1]   Demo.square(I)I
         80        3         aot[ 1]   Demo.<init>()V
1 iteration
Square(i) = 1
Time taken= 7252921
--------------------------------
2 iteration
Square(i) = 4
Time taken= 57443
[...]
10 iteration
Square(i) = 100
Time taken= 53586

```

要确认没有发生 JIT 编译，用如下命令：

```
$ java -XX:+UnlockExperimentalVMOptions -Xbatch -XX:+PrintCompilation \ -XX:CompileCommandFile=hotspot_compiler -XX:-TieredCompilation \ -XX:CompileThreshold=3 -XX:AOTLibrary=./libDemo.so -XX:+PrintAOT Demo
         19        1         loaded        ./libDemo.so  aot library
         77        1         aot[ 1]   Demo.square(I)I
         77        2         aot[ 1]   Demo.main([Ljava/lang/String;)V
         77        3         aot[ 1]   Demo.<init>()V
         77        2         aot[ 1]   Demo.main([Ljava/lang/String;)V   made not entrant
[...]
4 iteration
Square(i) = 16
Time taken= 43366
[...]
10 iteration
Square(i) = 100
Time taken= 59554

```

需要特别注意的是，修改被 AOT 编译了的源代码后，一定要重新生成 `.so` 库文件。否则，过时的的 AOT 编译库文件不会起作用。例如，修改 `square()` 方法，使其计算立方值：

```
//Demo.java
public class Demo {

    public int square(int i) throws Exception {
        return(i*i*i);
    }

    public static void main(String[] args) throws Exception {
        for (int i = 1; i <= 10; i++) {
          System.out.println("" + Integer.valueOf(i)+" iteration");
          long start = System.nanoTime();
          int r= new Demo().square(i);
          System.out.println("Square(i) = " + r);
          long end = System.nanoTime();
          System.out.println("Time taken= " + (end-start));
          System.out.println("--------------------------------");
        }
    }
}

```

重新编译 `Demo.java`：

```
$ java Demo.java

```

但不重新生成 `libDemo.so`。使用下面命令运行 `Demo`：

```
$ java -XX:+UnlockExperimentalVMOptions -Xbatch -XX:+PrintCompilation -XX:CompileCommandFile=hotspot_compiler -XX:-TieredCompilation -XX:CompileThreshold=3 -XX:AOTLibrary=./libDemo.so -XX:+PrintAOT Demo
         20        1         loaded        ./libDemo.so  aot library
         74        1         n           java.lang.invoke.MethodHandle::linkToStatic(LLLLLL)L (native)   (static)
2 iteration
sqrt(i) = 8
Time taken= 43838
--------------------------------
3 iteration
        137   56        b            Demo::<init> (5 bytes)
        138   57        b            Demo::square (6 bytes)
sqrt(i) = 27
Time taken= 534649
--------------------------------
4 iteration
sqrt(i) = 64
Time taken= 51916
[...]
10 iteration
sqrt(i) = 1000
Time taken= 47132

```

可以看到，虽然旧版本的 `libDemo.so` 被加载了，但 JVM 检测出它已经过时了。每次生成 `.class` 文件时，都会在类文件中添加一个指纹，并在 AOT 库中保存该指纹。修改源代码后类指纹与旧的 AOT 库中的指纹不匹配了，所以没有执行 AOT 编译生成的原生机器码。从输出可以看出，现在实际上是 JIT 在起作用（注意 `-XX:CompileThreshold` 被设置为了 3）。

### AOT 和 JIT 之间的权衡

如果你的目标是减少 JVM 的预热时间，请使用 AOT，这可以减少运行时负担。问题是 AOT 没有足够的数据来决定哪段代码需要预编译为原生代码。相比之下，JIT 在运行时起作用，却对预热时间有一定的影响。然而，它将有足够的分析数据来更高效地编译和反编译代码。

*（题图：MJ/ed3e6e15-56c7-4c1d-aff1-84a225faeeeb）*

---

via: <https://opensource.com/article/22/8/interpret-compile-java>

作者：[Jayashree Huttanagoudar](https://opensource.com/users/jayashree-huttanagoudar) 选题：[lkxed](https://github.com/lkxed) 译者：[toknow-gh](https://github.com/toknow-gh) 校对：[wxy](https://github.com/wxy)

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


在 Linux 终端利用 Asciiquarium 打造海底世界

Summary: 这是一个小小的 CLI 工具，可在 Linux 终端中添加水族箱。

这是一个小小的 CLI 工具，可在 Linux 终端中添加水族箱。

# 在 Linux 终端利用 Asciiquarium 打造海底世界

>
> 这是一个小小的 CLI 工具，可在 Linux 终端中添加水族箱。
>
>
>

[Linux 的众多命令工具](https://itsfoss.com/funny-linux-commands/) 里，有一部分偏向于休闲娱乐而非工作。Asciiquarium 就是一个很好的例子。

Asciiquarium 为 Linux 终端提供了以 ASCII 格式构建的简单的水族馆动画效果。

看起来有趣吗？我们一起进一步了解。

### 如何在 Linux 中安装 Asciiquarium

如果你是 Arch Linux 或 Fedora 用户，你可以直接从官方仓库中安装。

Fedora 的用户请运行：

```
sudo dnf install asciiquarium

```

而 Arch Linux 用户请运行：

```
sudo pacman -S asciiquarium

```

对于 Ubuntu，Asciiquarium 没有包含在默认仓库里。因此，你需要选择使用预编译的二进制文件，或者一些外部的 PPA。

#### 使用 PPA 安装 Asciiquarium

首先，添加 Asciiquarium 的 PPA：

```
sudo add-apt-repository ppa:ytvwld/asciiquarium
sudo apt update

```

然后，安装相关的软件包和依赖：

```
sudo apt install asciiquarium

```

##### 删除 PPA

在你删除 Asciiquarium 的 PPA 之前，首先要移除相关软件包。

```
sudo apt purge asciiquarium
sudo apt autoremove

```

然后，从系统中移除 PPA：

```
sudo add-apt-repository --remove ppa:openshot.developers/ppa
sudo apt update

```

#### 使用二进制文件安装 Asciiquarium

>
> ? 你需要为你的系统单独安装一些 Perl 模块。同时，它将在你的系统中安装几个与 Perl 相关的包，所以请注意。
>
>
>

要运行二进制文件，你需要从 CPAN 中安装 Animation 和 Curses 模块。

在 Ubuntu 中安装 CPAN：

```
sudo apt install cpanminus libcurses-perl

```

接着，运行：

```
cpan Term::Animation

```

该操作会要求你做一些配置，只需选取默认值即可。全部设置好后，来下载 Asciiquarium 的发布版。

>
> **[下载 Asciiquarium](https://robobunny.com/projects/asciiquarium/html/)**
>
>
>

解压文件，你会得到一个名为 Asciiquarium 的文件，接下来，让它具有执行权限。

如果你需要通过命令行来完成，只需打开终端，并用 [chmod 命令](https://linuxhandbook.com/chmod-command/)赋予执行权限。

```
chmod +x asciiquarium

```

此时，你可以直接在当前目录下运行这个文件以获取动画效果：

```
./asciiquarium

```

或者，你也可以把这个文件放在一个 [包含在你的 PATH 中](https://itsfoss.com/add-directory-to-path-linux/)的位置上。

### 如何使用 Asciiquarium

Asciiquarium 使用起来非常简单，它不设任何命令行选项。只需运行 `asciiquarium`，你就能在终端中看到水族馆的动画效果。

程序还提供了几个热键支持。

* `r`：重绘动画
* `p`：暂停/播放动画
* `q`：退出程序

>
> ?
>
>
>

此外，也可以使用箭头键提升动画的速度。

#### 用 lolcat 加强 Asciiquarium 的体验

如果你想让 Asciiquarium 的颜色更丰富，可以综合使用 `lolcat`。首先安装 `lolcat` ：

```
sudo apt install lolcat

```

然后，运行：

```
asciiquarium | lolcat

```

如果你还需要更多的动画效果，可以适当调节 `lolcat` 的参数，例如：

```
asciiquarium | lolcat -p 200

```

这样操作会产生各种不同的颜色效果。

你还可以使用 `lolcat` 的 `-i` 选项，来反转颜色：

```
asciiquarium | lolcat -i -p 200

```

### 赠品：XFishTank（让你的桌面诠释海底世界）

还有一个类似的有趣命令叫做 `xfishtank`。它在你的根窗口，即桌面，创建一片海洋世界。你可以从 Ubuntu 的官方仓库直接安装 `xfishtank`。

```
sudo apt install xfishtank

```

安装完成后，直接运行：

```
xfishtank

```

XFishTank 提供了很多选项供你调节，例如鱼儿的数量、气泡等等。你可以参考 [该命令的 man 页面](https://itsfoss.com/linux-man-page-guide/) 学习更多相关内容。

```
xfishtank -b 100 -f 15

```

### 结语

就像你所看到的，Linux 终端里的小鱼或许不能提供实质性的帮助，但它确实能带给我们愉快的心情。

如果你不是那么喜欢鱼，那么试试看牛吧。

>
> **[哞~ 我的 Linux 终端里有头牛](/article-15952-1.html)**
>
>
>

希望你在这些有趣的小工具的陪伴下，能够更加享受 Linux 的世界。?

*（题图：MJ/83766cba-02e1-4d20-8797-a38e5c17a0c0）*

---

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

作者：[Sreenath](https://itsfoss.com/author/sreenath/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #1177 大多数使用 jQuery 的网站都运行着不再维护的版本

Summary:
? 大多数使用 jQuery 的网站都运行着不再维护的版本
? Linux 6.7 内核引入一键加固选项
? 埃隆·马斯克的 xAI 推出 Grok 人工智能机器人
»
»

# 硬核观察 #1177 大多数使用 jQuery 的网站都运行着不再维护的版本

### 大多数使用 jQuery 的网站都运行着不再维护的版本

据估计，全球近 90% 的网站都在使用 jQuery。OpenJS 基金会发起的一项调查显示，大多数使用 jQuery 的网站都运行着不再维护的版本。对北美和欧洲 500 家企业进行的调查显示，44% 的企业使用正在维护的 3.6.0 或更新版本，而 59% 的企业使用的 1.x - 3.5.1 版本，已经不再维护，许多组织使用了多个版本。旧版本的 jQuery 的漏洞大部分属于常见的跨站脚本漏洞。OpenJS 基金会称四分之三的十亿级网站存在隐私和安全风险，但及时更新 jQuery 并不总是一件简单的事。

>
> **[消息来源：Dev Class](https://devclass.com/2023/11/02/jquery-survey-shows-majority-using-unmaintained-versions-but-upgrading-might-not-be-easy/)**
>
>
>

>
> 老王点评：每一个大版本升级都可能带来颠覆性的改动，这让使用者畏惧更新。
>
>
>

### Linux 6.7 内核引入一键加固选项

之前，我们 [报道](/article-16197-1.html) 过，GCC 准备在明年初发布的 GCC 14.1 稳定版中引入一“键”安全加固选项，该选项将启用各种加固功能。现在，Linux 内核也提供了类似实践。作为本周合并的 Linux 6.7 内核加固更新的一部分，它带来了一个新的加固配置文件，以帮助构建一个具有一些合理默认值的安全加固内核。通过运行 `make hardening.config` 可以启用一些基本加固选项，这是 “一套基本的内核加固选项，对性能影响最小（或没有影响），并能移除一套合理的遗留 API”。大多数 Linux 发行版厂商的内核已经启用了大部分或全部这些选项。

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

>
> 老王点评：这为构建默认安全的 Linux 内核提供了一个很好的参考实践。
>
>
>

###

### 埃隆·马斯克的 xAI 推出 Grok 人工智能机器人

马斯克称，该聊天机器人将作为 X 付费计划的一部分提供，每月需花费 16 美元。xAI 称，Grok 应该能回答其他人工智能可能会回避的 “尖锐问题”，此外，Grok 还可以访问 X 的数据，这是它和其它人工智能聊天机器人的主要不同之一。xAI 称，在基于中学数学问题和 Python 编码任务的首轮测试中，Grok 超越了 “计算类中的所有其他模型，包括 ChatGPT-3.5 和 Inflection-1”。

>
> **[消息来源：CNBC](https://www.cnbc.com/2023/11/05/elon-musk-debuts-grok-ai-bot-to-rival-chatgpt-others-.html)**
>
>
>

>
> 老王点评：马斯克在 X 和 AI 这样的互联网科技方面的表现，看起来并不如它在汽车和航天方面那么出色。
>
>
>


红帽的付费墙让开源社区产生裂痕

Summary: “我从未想过会有一天看到红帽对我们封闭源代码。”一位技术评论家说。

RHEL已经不再符合自由软件的定义：“自由之一：有研究该软件如何运作的自由，并且得以修改该软件来符合使用者自身的需求。取得该软件的源码为达成此目的的前提。”<br />
不过我不确定OSI有没有规定Red Hat的这种行为是否不再满足“开源软件”的定义。

红帽的做法是可以取得源代码，但是要给钱，还与哪些完全不开放代码的公司不同。而这条定义和GPL协议里只是要求要开放源代码，但没说清楚是不是无偿开放。相当于钻了协议的漏洞。

社区这个词在英语里和某个词简直太像了，而这两个东西都是资本要极力抹杀的东西。先融入你，然后消灭你。在他们的宣传里，开源已经过时了，企业对你的压榨才是未来，就像那什么运动已被历史证明是错误的。

“我从未想过会有一天看到红帽对我们封闭源代码。”一位技术评论家说。

# 红帽的付费墙让开源社区产生裂痕

<img src="content_image/album_202311_07_165729zn0oholszjn0ld4n.png" alt="" title="">

>
> “我从未想过会有一天看到红帽对我们封闭源代码。”一位技术评论家说。
>
>
>

2023 年 6 月 21 日，红帽公司的副总裁 Mike McGrath 宣布了一个引发开源软件社区分裂的声明。

在一篇题为《[推进 CentOS Stream 进化](https://mp.weixin.qq.com/s?__biz=MzA3NjAyNDMyMg==&mid=2649849069&idx=1&sn=b73b4d4bd9541591f59735ca808193af&chksm=87624380b015ca96e086fbd83cd4debf21af148d28f9930ccf58e7b842e2346c720fc72ab31c&scene=21#wechat_redirect)》的 318 个单词的博客文章中，McGrath 宣布，全球最大的开源软件供应商、总部位于美国罗利的红帽公司将开始只向付费用户提供其旗舰产品——红帽企业级 Linux（RHEL）的源代码。

在大多数行业中，这样的决定并不会引起争议。一般来说，只有付费的客户才有权使用一项产品或服务。但在开源的环境中，自由获取信息是至关重要的，因此，许多人认为，红帽公司对红帽企业 Linux（RHEL）实施付费墙的决定是对开源的亵渎。

新政策的发布在网络上引发了轩然大波。McGrath 后来对《<ruby> 新闻与观察家 <rt>  The News & Observer </rt></ruby>》栏目说：“发布这篇博客文章一两个小时之后，他们就都知道了。”

最初的反应是惊讶和愤怒混合在一起。“RHEL 的付费墙可能威胁到红帽公司的长期发展，”一条推特这样写到。

一个观看次数高达 10 万次的 YouTube 视频中，科技评论员 Chris Titus 疑惑，这是否预示着开源运动发生了巨变，在过去的 40 年中，开源已从由草根爱好者推动的亚文化转变为由企业大力支持的重要运动。

他说：“我从未想过会有一天看到红帽对我们封闭源代码。”

如今，基本上每个人都会以某种方式接触到开源软件。它为无数的日常工作提供了便利：预订机票、申请共享乘车服务、访问医疗保健门户网站、使用智能电视等等。而且，开源软件已经广泛渗透到大型企业中，红帽宣称，超过 90% 的财富 500 强企业都在使用他们的服务。

开源软件的关键在于信息的自由交流。由众多的付费和志愿程序员构成的社区持续强化着开源，他们反对把代码局限在专有权后面。他们坚信，只有更多的人关注代码，软件的性能和安全性才会得到提高。

因此，对于红帽公司的举动引发了人们强烈的反弹，这并不令人意外。

“我只知道红帽公司是唯一一家实行付费墙的（公司），”曾在 2017 年出版的书籍《<ruby> 为了乐趣和利润 <rt>  For Fun and Profit </rt></ruby>》中详述开源软件兴起的 Chris Tozzi 说，“这对开源社区来说是一个分歧问题。对我来说，这正是整个故事的关键。社区已经不能就开源如何运作达成共识。”

Tozzi 指出，开源许可证的变化有可能使公众使用软件的方式复杂化，人们也开始担忧会有更多的公司效仿红帽。如果此种状况成为趋势，参与贡献代码的开发者数量将会减少，而公司可能会开始感受到为其代码收费的压力。

McGrath 承认，红帽的员工也对新政策感到矛盾。“我想即使是我们公司内部的同事都未能完全理解我们到底宣布了什么和原因，”他说。

他回忆说，一些反感是针对个人的：有些人指控他是红帽母公司 IBM 派来的人，目的是摧毁这家位于三角洲地区，在当地有着 2000 多名员工、已有 30 年历史的软件公司。

“无论在决策之前、期间还是之后，IBM 的任何人都没跟我讨论过这个问题，”在红帽工作了 16 年的 McGrath 说，“我总是被那些认为 IBM 的高管会开会讨论 CentOS 和重新构建者的人们逗笑。我认为他们可能并不真正了解 CentOS。”

在发布博客文章的五天之后，McGrath 在该公司网站上发布了 [更长篇的信息](https://mp.weixin.qq.com/s/RELpVQ541cQgU7wkyhVjEQ)。他并没有退缩，反而重申了红帽停止向非付费客户提供自由获取 RHEL 代码的决定。

他写道，问题在于有一些新兴的竞争者会完全复制红帽企业版 Linux，甚至连代码中的错误都不放过，然后免费把这些红帽的复制品提供给客户。他认为，这并不是社区成员在增加价值，而是釜底抽薪的竞争对手。今年，红帽公司裁员了总工作人员的 4%，McGrath 表示，该公司没有理由允许这种情况继续下去。

“我认为，虽然在社区与商业之间做出这个决定是困难的，但我们始终坚持自己选择的道路是对的，”他告诉《新闻与观察家》。

然而，不是所有人都同意他的看法。

### “自由”应理解为言论自由，而非免费啤酒的“免费”

红帽争议背后的关键，被认为是理解开源如何开始，以及具体含义。

“这要追溯到几十年前，”Tozzi 表示，“深植于人心的一种观念便是，掌握控制权是至关重要的。而红帽公司剥夺了一定程度的控制权。”

1984 年，研究员理查德·斯托尔曼发布了名为 GNU 的软件项目。他为 GNU 提供了自由的许可，唯一的条件就是用户需要签署被称为 “GNU 通用公共许可证” 的协议，这其中包含了四条基本原则。现在被称为 GPL 的这份协议重申了人们享有使用、更改、分享，甚至重新打包并销售软件的权利。

对斯托尔曼而言，自由意味着没有任何限制，但并不必然代表不收费。“自由，犹如言论的自由，而非免费的啤酒，”他曾经这样形象地描述过。

GNU 与那时世界上最大的软件操作系统 —— 微软的 Windows，在理念上形成鲜明对比。Windows 是封闭且专有的，1985 年，微软首个 Windows 操作系统以 99 美元的价格上市。

然而当时，GNU 存在一个明显的局限，它缺少了被称为“内核”的软件部分，这是操作系统的关键部件。直到 1991 年，芬兰学生林纳斯·托瓦兹创造了一个名为 Linux 的 PC 操作系统内核。受斯托尔曼的启发，托瓦兹授权任何人对 Linux 进行商业性重新打包，只要他们同意 GPL。

“Linux 是在最佳时机推出的最佳产品，”Michael Tiemann 说，他是 1989 年参与创立世界上第一家商业开源公司 —— Cygnus Solutions 的软件工程师，而该公司后来被红帽收购。

### 红帽接管（开源）世界

Linux 的关键优势之一，如 Tiemann 所言，是它的代码是可见的。如果将 Linux 比作一辆汽车并存在故障，车主并不需要依赖特定的制造商来修复它。反之，一个由成千上万的“修理工”所组成的贡献者社区，就可以进行维修，所有人都可以进行检查。

红帽在这种免费的软件中看到了商业机会。该公司于 1993 年由联合创始人 <ruby> 马克·尤因 <rt>  Marc Ewing </rt></ruby> 在位于达勒姆的公寓内创办。公司在最初几年推出了定制版本的 Linux 操作系统光盘，并在书店向计算机科学爱好者销售。

到了 90 年代末，红帽已在企业界取得一席之地。2001 年，红帽发布了第一个面向企业的红帽企业版 Linux（RHEL）。该公司开始销售 RHEL 订阅访问，而非 CD，用于提供咨询和安全服务。

红帽公司不断发展壮大——无论是在业界还是在这个三角洲地区。2013 年，公司将超过 700 名员工转移到了位于罗利市中心新的总部大楼。六年后，IBM 以 340 亿美金的价格收购了这家软件公司。

Tozzi 表示：“就大多数评价指标来看，红帽是历史上最成功的开源公司。在财务成功和在开源社区领导地位方面，我无法想出哪一个公司能与其相匹敌。”

红帽不再是一家弱小的公司，而是随着许多大企业的加入而持续发展。自从被 IBM 收购以来，除了一个财务季度外，公司的收入每个财务季度都实现了两位数的增长。在 2022 年对近 1300 名技术领导者进行的调查显示，有更多的受访者表示他们使用的是开源软件而非专有软件。

McGrath 说：“我认为，那种业余爱好者在业余时间开发开源软件的浪漫景象已经过去了。尽管这样的空间仍然存在——我们依然有这样的场景——但是大部分的开源软件现在都是由全职员工开发的。”

### 截流下游克隆

Linux 内核是由成千上万人共同打造的操作系统之一。其中一些人是业余时间贡献代码的无薪爱好者，其他人则直接受雇于谷歌、Meta、红帽乃至微软等大型科技公司，在工作中编写代码并将其“上游”至 Linux 内核。

红帽公司制作企业版 Linux（RHEL），主要是对来自上游源（包括 Linux 内核和红帽所拥有的 Fedora 项目）的这些免费代码进行重新打包。类似地，直到最近，下游发行版都能直接获取 RHEL 的代码，并通过被称为“复刻”的过程自行重新打包。同时，它们也能将代码贡献给上游的 RHEL。

然而今年，红帽认为下游发行版回馈上游的代码不多，使其无法忽视它们的抄袭行为。

Tiemann 表示：“在许多情况下，开源中的自由使用更多是特性而非缺点。”他在红帽公司待了二十多年后于去年离开。“在这特定例子中，红帽基本上是说，‘你知道吗？这已不再是特性了。’”

这并非红帽第一次朝这个方向发展，早在 2020 年底，公司就宣布将终止 CentOS Linux，它曾经一直是红帽企业版 Linux 认可的免费版本。为弥补这一空缺，下一年就涌现出两个知名的下游 RHEL 发行版，Rocky Linux 和 AlmaLinux，它们都宣称自己与 RHEL 是连错误都一样的复制品。AlmaLinux 的基础设施团队负责人 Jonathan Wright 说：“实际上，就各种方面而言它们几乎完全相同。”

他继续说：“我们把红帽的名字剔除，然后重新打包发布。基本上是，保证不会侵犯他们的商标。”

尽管他的非营利组织的目标是克隆，Wright 仍然认为红帽限制 RHEL 代码的行动违反了“GPL 精神”。

他认为，像 AlmaLinux 这样无费用的下游副本吸引了更大规模、更多元化的贡献者加入开源社区，而这个社区自称是靠 “人多力量大” 而发展壮大的。

Wright 说：“（开源的）的基础是让每个人都能消费和使用你的作品。无论他是在世界另一端几乎无法上网的人，还是身处美国的世界 500 强公司。我认为这就是理查德·斯托尔曼当年的初衷。”

Wright 和其他批评红帽公司政策转变的人还指出，RHEL本身是基于他人可得的编码贡献，尽管他承认红帽公司的员工做了大量工作，使 RHEL 成为有用、稳定和广泛流行的消费产品。他还表示自成立以来，AlmaLinux 已经向更广泛的开源生态系统贡献了代码。

### 开源社区向前发展

McGrath 并没有对那些依赖 RHEL 一比一复制版的用户带来多少安慰。他们可以继续使用下游版本，寻找其他的提供商，或者选择付钱给红帽。

“我认为（人们）过于习惯了原有的工作方式，”他表示，“一些大公司的人可能需要红帽的支持，但他们却不甘心为此支付。对此我无能为力……因为我们并没什么好说的。”

自从做了 RHEL 决定以来，红帽已经获得了几个重要的合作伙伴。九月份时，云计算软件公司 Salesforce 将其 20 万套系统从免费的 CentOS Linux 迁移到了红帽企业级 Linux。同月，红帽还宣布 RHEL 将开始支持甲骨文的云架构。今年夏季时，甲骨文是少数公开批评红帽将其最流行的代码设置了付费壁垒的大公司之一。

10 月 24 日，数据安全公司 Cohesity 表示它也会放弃 CentOS Linux 转而选择使用 RHEL，这又是红帽的另一场胜利。

McGrath 反驳了 RHEL 被设置付费壁垒的说法，他表示人们仍然可以通过一个名为 CentOS Stream 的发行版在上游免费获取代码，这是 RHEL 的测试版本。

批评人士注意到，CentOS Stream 与 RHEL 源代码不同，因为它处于开发过程的早期。Wright 使用了烹饪的比喻来形容它：CentOS Stream 提供的可能是配料，但不是确切的比例。

非客户仍然可以访问红帽其他程序的源代码，如自动化平台 Ansible。

10 月中旬，Wright 从阿拉巴马的伯明翰出发，参加了每年在罗利举办的开源活动《All Things Open 大会》，红帽是会议的主要赞助商之一。

他提到：“我被问的每一个问题都是这次变革对我们的影响。”

在 7 月份，AlmaLinux 正式改变了其目标，相反这个非营利组织声明它不再是 RHEL 的精确副本，而是一个兼容于 RHEL 的操作系统。三个月后，Wright 说道，红帽的决定实际上使 AlmaLinux 变得更好了。

“就像我们已经摘掉了拐杖一样，”他说，“我们现在开始走自己的路了。”

那么他现在是否同意红帽的决定了呢？

完全不同意。

Wright 坚信，这个位于罗利的软件巨头在今年夏天对 GPL 进行了快速和不严谨的摆弄。对许多开源信仰者来说，这样对待他们视为神圣的文本的威胁是不能宽恕的。

*（题图：MJ/ba400e7a-8692-4935-8270-dac2e8f45acc）*

---

via: <https://www.newsobserver.com/news/business/article279099964.html>

作者：[Brian Gordon](https://www.newsobserver.com/profile/263041588) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


如何在 Vim 中剪切、复制和粘贴

Summary: 在本篇 Vim 快速技巧中，你将学习到剪切和复制粘贴的相关知识。

我只用y、d和p，结果是总是会出现多复制/少复制一个字符，或者粘贴时前面或后面多出一个字符（或位置错误）的问题。

在本篇 Vim 快速技巧中，你将学习到剪切和复制粘贴的相关知识。

# 如何在 Vim 中剪切、复制和粘贴

>
> 在本篇 Vim 快速技巧中，你将学习到剪切和复制粘贴的相关知识。
>
>
>

剪切、复制和粘贴文本是文本编辑中最基本的任务之一，我们都知道 Vim 有不同的处理方式。

这意味着，在你掌握它之前，你会害怕它，一旦你掌握了它，它就只是一个兔子洞。

虽然我将详细介绍剪切、复制和粘贴，但这里是本教程的基本摘要，以帮助你开始使用：

| **按键** | **描述** |
| --- | --- |
| `yiw` | 复制当前单词。 |
| `yy` | 复制整行。 |
| `diw` | 剪切当前单词。 |
| `dd` | 剪掉整行。 |
| `p` | 粘贴文本。 |

别担心，Vim 为你提供的选项比我上面提到的要多得多。

在本教程中，我将引导你完成以下内容：

* 如何在 Vim 中复制文本
* 如何在 Vim 中剪切文本
* 如何在 Vim 中粘贴文本
* 如何使用可视模式在 Vim 中剪切和复制文本

那么让我们从第一个开始。

### 如何在 Vim 编辑器中复制文本

虽然我们使用术语“复制”，但 Vim 有一个不同的术语，称为 “<ruby> 扽出 <rt>  yank </rt></ruby>”，因此从现在开始，我将使用“扽出”而不是“复制”。

正如我之前提到的，你可以使用多种方法在 Vim 中扽出文本，以下是一些有用的方法：

| 命令 | 描述 |
| --- | --- |
| `nyy` 或 `nY` | 扽出（复制）当前行和接下来的 `n-1` 行。例如，`3yy` 复制当前行及其下面的两行。 |
| `yaw` | 扽出（复制）光标所在的当前单词。 |
| `yy` 或 `Y` | 扽出（复制）整个当前行。 |
| `y$` | 扽出（复制）从光标到行尾的文本。 |
| `y^` 或 `y0` | 扽出（复制）从光标到行首的文本。 |

要在 Vim 中扽出，请执行以下 3 个简单步骤：

1. 按 `Esc` 键切换到正常模式
2. 移动到要复制的行或单词
3. 按上表中的相关命令，你的文本将被复制

想学习交互式复制行的方式吗？ 跳到本教程的最后一部分。

### 如何在 Vim 编辑器中剪切文本

在 Vim 中，你没有任何删除文本的选项。取而代之的是剪切文本，因此删除和剪切文本与 Vim 中的操作类似。

要在 Vim 中剪切文本，请按 `d` 命令。但你永远不会在没有任何选项的情况下使用 `d` 命令。你总是会添加一些东西来做更多操作。

因此，你可以使用以下一些实用方法使用 `d` 命令剪切文本：

| 命令 | 描述 |
| --- | --- |
| `dd` | 剪切整个当前行。 |
| `d$` | 将文本从光标剪切到行尾。 |
| `d^` 或 `d0` | 将文本从光标剪切到行首。 |
| `ndd` 或 `dN` | 剪切当前行和接下来的 `n-1` 行。例如，`3dd` 剪切当前行及其下面的两行。 |
| `daw` | 剪切光标所在的当前单词。 |

假设我想从文件中剪切前 4 行，然后我需要使用 `4dd`，我是这样做的：

### 如何在 Vim 编辑器中粘贴文本

在 Vim 中复制或剪切文本后，只需按 `p` 键即可粘贴它。

你可以多次按 `p` 键多次粘贴文本，也可以使用 `np`，其中 `n` 是要粘贴文本的次数。

例如，在这里，我粘贴了之前复制了三遍的行：

就是这么简单！

### 如何通过选择文本来剪切和复制文本

如果你使用过 GUI 文本编辑器，那么你肯定习惯于通过选择文本来复制和剪切文本。

让我们从如何通过在 Vim 中选择文本来复制开始。

#### 通过选择文本复制

要在可视模式下复制文本，请执行以下 3 个简单步骤：

1. 移动到要开始选择的地方
2. 按 `Ctrl + v` 启用可视模式
3. 使用箭头键进行选择
4. 按 `y` 键复制所选文本

例如，在这里，我使用可视模式复制了 4 行：

如果你注意到，当我按下 `y` 键，它就会显示有多少行被扽出（复制）。就我而言，有 4 行被复制。

#### 在 Vim 中选择文本来剪切文本

要在 Vim 中以可视模式剪切文本，你所要做的就是遵循 4 个简单步骤：

1. 移动到要剪切的位置
2. 按 `Ctrl + v` 切换到可视模式
3. 使用箭头键选择要剪切的行
4. 按 `d` 键剪切选定的行

假设我想剪掉 4 行，那么我会这样做：

挺容易。是吧？

### 更多关于 Vim 的内容

你知道 Vim 有多种模式吗？ [了解有关 Vim 中不同模式的更多信息](https://linuxhandbook.com/vim-modes/)。

想提高你的 Vim 水平吗？请参阅 [成为 Vim 专业用户的提示和技巧](https://linuxhandbook.com/pro-vim-tips/)。

我希望本指南对你有所帮助。

*（题图：MJ/3555eed2-ab14-433d-920f-17b80b46ce74）*

---

via: <https://itsfoss.com/vim-cut-copy-paste/>

作者：[Sagar Sharma](https://itsfoss.com/author/sagar/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #1178 Linux 系统也将出现 “蓝屏死机”

Summary:
? Linux 系统也将出现 “蓝屏死机”
? OpenAI 推出 GPT-4 Turbo 和 AI 应用商店
? Firefox 的开发将完全转到 Git
»
»

systemd招致不少批评不是没有原因的。。。

SVN表示在非IT行业的企业环境，我还活得很好。。。

除了非IT行业，有些开源项目也在用SVN。像是Read The Docs，以及Arch Linux的软件仓库，内部都还在用SVN。其中Arch还借助SVN2Git来向Git用户开放对软件仓库的访问

# 硬核观察 #1178 Linux 系统也将出现 “蓝屏死机”

### Linux 系统也将出现 “蓝屏死机”

几乎所有主流的 Linux 系统都在使用 systemd 作为启动、初始化和服务管理等系统。systemd 在不断增加各种功能，吞噬各种 Linux 系统功能。而即将发布的 systemd 255 甚至引入了 “蓝屏死机” 功能，用于在 Linux 启动失败时显示重要的错误信息 —— 这不是愚人节恶作剧。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/systemd-255-rc1)**
>
>
>

>
> 老王点评：果然，这就是 systemd 之父 Lennart Poettering 被微软雇佣后的结果。
>
>
>

### OpenAI 推出 GPT-4 Turbo 和 AI 应用商店

OpenAI 在其首届开发者大会上发布了 GPT-4 Turbo，该公司称其不仅更强大，而且成本更低。GPT-4 Turbo 有两个版本：一个是纯文本分析版本，另一个是可以同时理解文本和图像上下文的版本。GPT-4 Turbo 提供 128k 个令牌的上下文窗口，相当于约 100,000 个单词或 300 页书籍，这个大小是 GPT-4 的四倍，也是所有商用模型中最大的上下文窗口。此外，OpenAI 还 [宣布](https://techcrunch.com/2023/11/06/app-store-for-ai-build-your-own-gpt-and-sell-it-on-openais-gpt-store/) 推出 AI 应用商店，任何人都可以创建这种被称作 “GPT” 的对话式人工智能系统，然后你可以将其上架到 AI 应用商店。OpenAI 称，没有编码经验也可以制作 GPT，只需与 ChatGPT 聊天并描述你想要的东西，就可以制作一个 GPT。

>
> **[消息来源：Tech Crunch](https://techcrunch.com/2023/11/06/openai-launches-gpt-4-turbo-and-launches-fine-tuning-program-for-gpt-4/)**
>
>
>

>
> 老王点评：这个 AI 时代，我们却难以接触最前沿的技术进步。
>
>
>

### Firefox 的开发将完全转到 Git

Firefox 的开发工作一直都在同时使用两个版本控制系统 Mercurial 和 Git。但这对 Mozilla 来说是一个 “沉重的负担”，因此它决定将开发工作完全转移到 Git 上。Mozilla 预计至少需要 6 个月才能开始全面过渡到 Git。此外，Mozilla 将继续使用 Bugzilla 等工具。不过，虽然该项目将会托管在 GitHub，但短时间内不会接受拉取请求，贡献工作流维持不变。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Firefox-Going-Git)**
>
>
>

>
> 老王点评：还有其它版本控制系统吗？感觉现在 Git 已经将其它版本控制系统都挤压得没有空间了。这应该不是好事。
>
>
>


Graphite：由 AI 助力的基于网络的开源矢量图形编辑器

Summary: 让我们了解更多即将亮相的矢量图形编辑器 Graphite。

每一台安装该应用的机器都向网络获取算力：如果它没有中心化算力基础，就是向每一台安装该应用的机器本身获取闲置算力。

让我们了解更多即将亮相的矢量图形编辑器 Graphite。

# Graphite：由 AI 助力的基于网络的开源矢量图形编辑器

>
> 让我们了解更多即将亮相的矢量图形编辑器 Graphite。
>
>
>

此次，我们要介绍的是一个完全免费而开源的 **平面图形编辑器**，名为 “Graphite”，它专注于创建一个完善的 **非破坏性所见即所得编辑体验**。

许多为 Linux 提供 [出色的矢量图形编辑器](https://itsfoss.com/vector-graphics-editors-linux/#bonus-svg-edit-web-based-alternative-) 的应用都有一个专门的应用程序，但 Graphite 则选择了不同的路径，成为一个 **仅基于浏览器的应用**。不过，根据路线图，它计划为 Linux、Windows 和 macOS 提供桌面应用。

考虑到它能在网络上运行，它的目标是在提供所有必要功能的同时保持轻量级。

>
> ? 目前，此应用处于 alpha 开发阶段，许多计划中的功能还处在概念验证状态。
>
>
>

### Graphite：综述 ⭐

Graphite 是一个轻量级的、在网络浏览器上运行的 **基于 Rust 的矢量图形编辑器**。由 **Graphene 节点图组合引擎** 驱动，提供了一个易于访问、基于层的优秀编辑器。

其中 **最值得注意的特性** 包括：

* 精美、直观的界面
* 节点图图像效果
* AI 辅助艺术创作
* 实时协作

开发者分享的一段视频展示了几乎所有前述的特性。我被视频中如此直接简洁的编辑体验深深打动。

事实上，我亲自尝试使用它的 [开发版](https://news.itsfoss.com/graphite/dev.graphite.rs) 创作了下面的杰作，**编辑体验类似于你在大多数图形编辑器中所发现的**。

不过，我必须手动寻找各种选项，因为 Graphite **并没有官方文档**。

我之前与首席开发者交谈过，他告诉我他们正在努力提供文档，并且已经在期待它的发布了。

同时，值得注意的是，在一个轻量级应用上我们获得众多需要文档的选项，这听起来就很赞！

当然，目前的状态下我们还无法真正检验该应用的核心理念。然而，对我来说，如果 Graphite 矢量图形编辑器能实现其展示和承诺的话，那么它的影响将是 **颠覆性的**。

我也好奇他们会如何在他们的自由开源应用中添加 AI 辅助艺术创作功能。谁不想试用这个呢？对吧！?

与此同时，我建议你关注 [Graphite 的路线图](https://graphite.rs/features/) 和 [GitHub 仓库](https://github.com/GraphiteEditor/Graphite)，以了解重要的开发里程碑或可以贡献你的智慧。

### ? 如何获取 Graphite

因为这是一个网络应用，它基本上可以 **在任何支持的网络浏览器上运行**，尽管我不确定智能手机上的编辑体验会怎样。然而，对于台式机、笔记本电脑，甚至是平板电脑，这都可能是个不错的选择。

你可以访问这个 [在线编辑器](https://editor.graphite.rs/) 来获取最新的 alpha 版本。如果你想获取最新的开发版本，可以试试 [开发版](https://dev.graphite.rs/)。

>
> **[Graphite](https://editor.graphite.rs/)**
>
>
>

? 你对 Graphite 矢量图形编辑器有什么看法？你喜欢它的概念吗？你认为他们能实现吗？欢迎分享你的想法。

---

via: <https://news.itsfoss.com/graphite/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


Fedora 39 版本发布，新亮相一款不可变版本

Summary: Fedora 39 的发布带来了许多令人兴奋的变化和完善。

Fedora 39 的发布带来了许多令人兴奋的变化和完善。

# Fedora 39 版本发布，新亮相一款不可变版本

>
> Fedora 39 的发布带来了许多令人兴奋的变化和完善。
>
>
>

Fedora 是众多 Ubuntu 替代品中的热门选择，或者还可以说，用其来替换任何其他基于 Debian 的发行版都是一个理想的选择。

每次升级后，Fedora 都会变得更好。现在让我们看一下最新的 Fedora 39 有哪些重要更新。

接下来，我将向你展示这个版本都包含了哪些新功能。

### ? Fedora 39 版本更新：都有哪些新内容？

得益于稳健强大的 [Linux 内核 6.5](https://news.itsfoss.com/linux-kernel-6-5-release/)，Fedora 39 的发布包含了众多值得关注的新功能。其中一些关键的亮点包括：

* 安装程序的升级
* GNOME 45
* 应用/包的更新
* Fedora Onyx

#### 安装程序的升级

尽管安装程序并未更换，我们在全新安装 Fedora 时，会看到 **一个新的欢迎屏幕**。在更新后的 Fedora 38 ISO 中，你可能已经注意到了这一点。

此外，**Fedora 的安装程序现在支持更大的 EFI 系统分区**，这个分区的 **最小尺寸达到了 500 MB**。这样做是为了便于在现代硬件上进行固件更新，也为未来引导程序特性做好了准备。

你可能会在想，[Anaconda Web UI](https://news.itsfoss.com/fedora-new-web-ui-install-dev/) 出了什么情况？

其实，这个 UI 设计已经 [计划](https://fedoraproject.org/wiki/Changes/AnacondaWebUIforFedoraWorkstation) 在 Fedora 40 中推出了，我们都非常期待未来它的表现！

#### GNOME 45

Fedora 39 引入了最近发布的 [GNOME 45](https://news.itsfoss.com/gnome-45-release/)。对于此次更新，我是期待已久。

早先的 “<ruby> 活动 <rt>  Activities </rt></ruby>” 按钮已被替代，现在，你将看到一个 **药丸形状的动态指示器**，它可以清晰的显示出当前的工作空间，以及其他可供切换的工作空间。

你可以通过滚动它或者点击圆点来切换工作空间。

“<ruby> 设置 <rt>  Settings </rt></ruby>” 应用程序里也陆续出现了一些新的变化，例如像 **经过翻新的 “<ruby> 隐私 <rt>  Privacy </rt></ruby>” 标签页**，以及在 “<ruby> 关于 <rt>  About </rt></ruby>” 菜单下新增的 “<ruby> 系统细节 <rt>  System Details </rt></ruby>” 子菜单。

此外，有一些新的核心应用程序，比如新的图像查看器以及其他应用的更新，我强烈建议你查看我们所有关于 GNOME 45 的内容：

>
> **[GNOME 45 发布，弃用“活动”按钮](/article-16215-1.html)**
>
>
>

#### 应用/包的更新情况

Fedora 39 同样更新了一套应用程序和软件包。主要的更新包括：

* [LibreOffice 7.6](https://news.itsfoss.com/libreoffice-7-6/)
* [LLVM 17](https://releases.llvm.org/17.0.1/docs/ReleaseNotes.html)
* [Golang 1.21](https://go.dev/blog/go1.21)
* IBus 1.5.29
* Perl 5.38
* RPM 4.19
* Python 3.12

#### Fedora Onyx 的介绍

今年早些时候，Fedora 的不可变版本阵容迎来了一个新成员，叫做 “[Fedora Onyx](https://news.itsfoss.com/fedora-onyx-official/)”。

那时，**我们并不知道它的具体发布日期**，但现在，它终于在 **Fedora 39 的版本更新中有所呈现**。

这使得 Fedora 的不可变版本阵容 **增长到了四个**，其它分别是 [Fedora Silverblue](https://silverblue.fedoraproject.org/)、[Fedora Kinoite](https://kinoite.fedoraproject.org/)，以及 [Fedora Sericea](https://fedoraproject.org/sericea/)。

**推荐阅读** ?

>
> **[11 个不可变 Linux 发行版，适合那些想要拥抱未来的人们](/article-15841-1.html)**
>
>
>

#### ? 其他变化和改进

其他的变化包括一些注目的内容：

* Fedora 39 提供了一个绿色的 Bash 提示符。
* 移除了 Fedora 工作站的自定义 Qt 主题设计。
* 对于 Indic（印度）语言，实现了谷歌 [Noto](https://fonts.google.com/noto) 字体。
* Flatpak 不再使用模块进行构建，而是采用了一个独立的构建目标。

你还可以通过我们针对 [Fedora 39 特性](/article-16207-1.html) 的报道和查阅 [官方更改日志](https://fedoraproject.org/wiki/Releases/39/ChangeSet) 来更深入地了解这次的版本发布。

### ? 如何下载 Fedora 39

和往常一样，Fedora 的新版本更新带来了大量的改进和升级。你可以转到 [官方网站](https://fedoraproject.org/workstation/download/) 获取你所需要的 ISO 文件。

你也可以点击下面的按钮直接下载。

>
> **[点击获取 Fedora 39](https://fedoraproject.org/workstation/download/)**
>
>
>

**对于现有用户** ，我们有一个很实用的升级指南可以帮助你开始升级操作：

>
> **[如何从 Fedora 38 升级到 Fedora 39](https://itsfoss.com/upgrade-fedora-version/)**
>
>
>

*（题图：MJ/f6e0a56a-5e8b-4c0f-89c2-596375bba00f）*

---

via: <https://news.itsfoss.com/fedora-39-release/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #1179 苹果公司暂停开发明年的操作系统，以修复软件错误

Summary:
? 苹果公司暂停开发明年的操作系统，以修复软件错误
? Servo 浏览器引擎获得资金支持 HTML 表格
? 必应聊天的 GPU 不够用了，微软将向甲骨文租用 GPU
»
»

# 硬核观察 #1179 苹果公司暂停开发明年的操作系统，以修复软件错误

### 苹果公司暂停开发明年的操作系统，以修复软件错误

苹果公司上周在内部向员工宣布了这一决定，称该公司的工程师现在的主要任务不是添加新功能而是修复错误和改进性能。上个月，该公司完成了明年发布的 iPhone、iPad 和 Mac 操作系统的第一个里程碑版本，但在内部测试中发现了太多的问题，因此推迟了第二个里程碑版本的发布工作，暂停新功能开发一周，专注于修复错误。不过暂停开发不大会影响新版本的发布。

>
> **[消息来源：彭博社](https://www.bloomberg.com/news/articles/2023-11-07/apple-delays-work-on-ios-18-macos-15-watchos-11-due-to-problems-with-bugs)**
>
>
>

>
> 老王点评：这是集体修 bug 的一周。我在写这条消息时，刚刚收到了前两天升级的 macOS 14.1 的一个更新。
>
>
>

### Servo 浏览器引擎获得资金支持 HTML 表格

由 Rust 编写的 Servo 浏览器引擎最初是 Mozilla 开发的，目前由欧洲 Linux 基金会等组织共同开发。今年，Servo 项目取得了良好的进展，目标是成为一个便于嵌入的网络引擎，并不断增加新的功能。最近，他们获得了 NLnet 基金会的资助，用于完善 Servo 的浮动支持、支持更多语言的内联布局，以及添加对 “表格” 标签的初步支持。是的，HTML 表格尚未在 Servo 中实现，这次开发的重点是初步满足维基百科上 HTML 表格的需求。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Servo-Grant-Funding-Table)**
>
>
>

>
> 老王点评：我是很吃惊居然还有连表格都不支持的浏览器引擎。
>
>
>

### 必应聊天的 GPU 不够用了，微软将向甲骨文租用 GPU

微软需要更多的计算资源来跟上其人工智能服务的 “爆炸式增长”，而甲骨文恰好有数以万计的英伟达 GPU 可供租用。这两家云计算提供商的最新合作利用了微软 Azure 的甲骨文互联服务，它允许在 Azure 中运行的服务与甲骨文云计算基础架构中的资源进行交互。此前他们曾利用这项服务让客户将运行在 Azure 中的工作负载连接回甲骨文云上运行的数据库。

>
> **[消息来源：The Register](https://www.theregister.com/2023/11/07/bing_gpu_oracle/)**
>
>
>

>
> 老王点评：连地主家都没有余粮了。不过，最近是感觉 Azure 的 ChatGPT 有些笨了。
>
>
>


Fedora Workstation 39 的新特性

# Fedora Workstation 39 的新特性

作为领先的开源桌面操作系统，Fedora Workstation 由全球社区共同携手打造。本文将向你展示最新版本 Fedora Workstation 39 主要的用户所能见到的变化。如今，你可以在 [Fedora Workstation 官方网页](https://fedoraproject.org/workstation/) 下载体验，或是通过在“软件”应用内或使用 [dnf system-upgrade](https://docs.fedoraproject.org/en-US/quick-docs/upgrading-fedora-offline/) 在你喜爱的终端模拟器进行升级。

### GNOME 45

Fedora Workstation 39 搭载了 GNOME 的最新版本——GNOME 45。这个版本为几个核心应用带来了时尚的新插件、全新的图像查看器应用、新增了在特定系统上的键盘背光设置等。同时，我们的一个更具信息性的活动按钮，及多项性能改进，将伴随全面优化的整套用户体验而来。你可以在 [GNOME 45 发布说明](https://release.gnome.org/45/) 查看更多详细信息。

#### 内在改进

GNOME 45 在用户体验的方方面面都有所细化，以下几点只是其中的一部分：

* 使用动态工作空间指示器取代了静态的活动按钮。新的指示器不仅显示工作空间数量，而且还能快速展示你正在关注的工作空间。

* 新增了一个摄像头活动指示器，要启用它，你可以通过 Pipewire 访问你的摄像头。这将与麦克风、屏幕录制和屏幕录像指示器协同工作。
* 快速设置菜单新增了一个键盘背光设置，这项设置仅支持特定的硬件设备。

* 重新设计了默认的光标，并修复了原来设置中很多长期存在的问题。
* Fedora Workstation 39 已不再支持 Adwaita-qt 与 QGnomePlatform Qt 主题，取而代之的是 Qt 应用的上游默认主题。

#### 核心应用

在 GNOME 45，许多应用现在使用了 libadwaita 1.4 特色的新用户界面插件。这提供了美观的双色设计并将侧边栏延伸至窗口全高。这不仅使应用看起来更酷，而且在小窗口尺寸下更易于使用。可在 [此处](https://blogs.gnome.org/alicem/2023/09/15/libadwaita-1-4/) 查看详细信息。此外，新的 headerbar 插件使顶栏与窗口内容的视觉分隔更加明显。

Fedora Workstation 39 引入了 GNOME 的新图像查看器应用，内部代号为 Loupe。该应用自底而上，使用 Rust、GTK 4，和 libadwaita 进行构建以实现高性能和高度适应性。

在核心应用中我们还有很多细微的改进。例如：

* “设置”应用新增了“系统详情”区块，新的键盘布局查看器，简洁的描述字段，以及优化的键盘导航功能。

* 在“文件”应用中，我们对搜索结果进行了顺序优化。
* 我们在“软件”应用中提供了卸载 Flatpak 时删除用户数据的选项。

* “日历”应用新增了逐行滚动和更有用的搜索结果功能。
* 在“连接”应用中使用 RDP 连接时新增了复制文件、图像、文本的功能。

#### 性能改进

在 GNOME 45，我们对性能提升投入了很多努力。

* 现在默认优先使用硬件加速的视频解码（在支持的环境下）。
* “文件”应用中的缩略图生成现在支持多线程处理。
* 我们显著减少了光标的卡顿和延迟。
* 在 GNOME Shell 中，以及“文件”、“软件”、“字符”等应用的搜索性能得到显著提升。

我们在整个技术栈中也进行了一些性能改进，包括 GLib、GTK 的 OpenGL 渲染器，和 systemd。这些性能优化工作都得益于我们在 Fedora Workstation 之前的版本中启用的帧指针！

### Fedora Linux 39 的底层突破

Fedora Linux 39 也有许多值得注意的底层变化，此处列出一些：

* Fedora Linux 39 现在将彩色 Bash 提示符作为默认设置！

* 对于使用 Indic 脚本的语系，我们现在把 Noto 字体作为默认字体，取代了旧的 Lohit 字体集。
* 由于使用量较低且缺乏主动维护，[模块化](https://docs.fedoraproject.org/en-US/modularity/) 仓库在 Fedora Linux 39 中不再被提供。

	+ Fedora 模块构建服务将在 Fedora Linux 38 的生命周期结束后，也就是在 2024 年的 5 月左右结束。

*（题图：MJ/f06d0e9b-4c2e-4947-8333-e51340a45324）*

---

via: <https://fedoramagazine.org/whats-new-fedora-workstation-39/>

作者：[Merlin Cooper](https://fedoramagazine.org/author/mxanthropocene/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


在 Arch Linux 上安装 Docker

键盘侠一下，写 Arch Linux 有关的教程，还不如来翻译 Arch Wiki：wiki.archlinux.org

# 在 Arch Linux 上安装 Docker

>
> 了解如何在 Arch Linux 上安装 Docker，并使用 Docker Compose 和制表符补全为运行容器做好准备。
>
>
>

在 Arch Linux 上安装 Docker 很简单。它可以在 Extra 仓库中找到，你可以简单地 [执行 pacman 魔法](https://itsfoss.com/pacman-command/)：

```
sudo pacman -S docker

```

但要在 Arch Linux 上正确运行 Docker，还需要执行更多步骤。

### 让 Arch Docker 做好准备

这一切都归结为以下步骤：

* 从 Arch 仓库安装 Docker
* 启动 Docker 守护进程并在每次启动时自动运行
* 将用户添加到 `docker` 组以运行 `docker` 命令而无需 `sudo`

让我们看看详细步骤。

#### 步骤 1：安装 Docker 包

打开终端并使用以下命令：

```
sudo pacman -S docker

```

输入密码并在询问时按 `Y`。

这可能需要一些时间，具体取决于你使用的镜像。

>
> ? 如果你看到找不到包或 404 错误，那么你的同步数据库可能是旧的。使用以下命令更新系统（它将下载大量软件包并需要时间）： `sudo pacman -Syu`
>
>
>

#### 步骤 2：启动 docker 守护进程

Docker 已安装但未运行。你应该在**第一次运行 Docker 命令**之前启动 Docker 守护进程：

```
sudo systemctl start docker.service

```

我还建议启用 Docker 服务，以便 Docker 守护进程在系统启动时自动启动。

```
sudo systemctl enable docker.service

```

这样，你就可以开始运行 `docker` 命令了。你不再需要手动启动 Docker 服务。

#### 步骤 3：将用户添加到 docker 组

Docker 已安装并且 Docker 服务正在运行。你几乎已准备好运行 `docker` 命令。

但是，默认情况下，你需要将 `sudo` 与 `docker` 命令一起使用。这很烦人。

为了避免在每个 `docker` 命令中使用 `sudo`，你可以将自己（或任何其他用户）添加到 `docker` 组，如下所示：

```
sudo usermod -aG docker $USER

```

**你必须注销（或关闭终端）并重新登录才能使上述更改生效。如果你不想这样做，请使用以下命令：**

```
newgrp docker

```

现在已经准备好了。我们来测试一下。

#### 步骤 4：验证 docker 安装

Docker 本身提供了一个很小的 Docker 镜像来测试 Docker 安装。运行它并查看是否一切正常：

```
docker run hello-world

```

你应该看到类似这样的输出，表明 Docker 成功运行：

恭喜！ 你已经在 Arch Linux 上成功安装了 Docker。

### 可选：安装 Docker Compose

Docker Compose 已经成为 Docker 不可或缺的一部分。它允许你管理多个容器应用。

较早的经典 Compose 由 `docker-compose` Python 软件包提供。Docker 还将其移植到 Go 中，并通过 `docker compose` 提供，但该软件包附带 [Docker Desktop](https://www.docker.com/products/docker-desktop/)。

在这个阶段，我建议使用经典的 `docker-compose` 插件并使用以下命令安装它：

```
sudo pacman -S docker-compose

```

### 故障排除技巧

以下是你可能遇到的一些常见问题以及可能的解决方案：

#### 制表符补全不适用于 docker 子命令

如果你想对 `docker` 命令选项使用制表符补全（例如将 `im` 补全到 `images` 等），请安装 `bash-completion` 包：

```
sudo pacman -S bash-completion

```

关闭终端并启动一个新终端。你现在应该能够通过 `docker` 命令使用制表符补全功能。

#### 无法连接到 Docker 守护进程错误

如果你看到以下错误：

```
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.

```

那是因为 Docker 守护进程没有运行。参考步骤 2，启动 Docker 服务，确保其正在运行并启用它，以便 Docker 守护进程在每次启动时自动运行。

```
sudo systemctl start docker.service
sudo systemctl enable docker.service

```

#### 尝试连接到 Docker 守护程序套接字时权限被拒绝

如果你看到此错误：

```
ddocker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

```

这是因为你需要使用 `sudo` 运行 `docker` 命令，或者将用户添加到 `docker` 组以在不使用 `sudo` 的情况下运行 `docker` 命令。

我希望这篇简短的文章可以帮助你在 Arch Linux 上运行 Docker。

*（题图：MJ/9951f8bf-d2e5-4335-bd86-ebf89cba654d）*

---

via: <https://itsfoss.com/install-docker-arch-linux/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #1180 Canonical 明年将发布不可变桌面操作系统

Summary:
? Canonical 明年将发布不可变桌面操作系统
? Cruise 称其人类远程协助人员负责 15-20 辆无人驾驶出租车
? Hugging Face 合作成立初创企业加速器
»
»

# 硬核观察 #1180 Canonical 明年将发布不可变桌面操作系统

### Canonical 明年将发布不可变桌面操作系统

明年四月，新的 Ubuntu LTS 发布时，Canonical 还将发布一个全新的不可变桌面版 Ubuntu Core Desktop。它是现有 Ubuntu Core 发行版的图形桌面版。Ubuntu Core 是一个面向物联网的不可变发行版，用在嵌入数字标牌和智能显示器等边缘设备上。不可变发行版的根文件系统是只读的，也没有传统的软件包管理器，更像是手机或平板电脑的操作系统。与 Core 一样，Core Desktop 完全采用单一的打包系统 Snap。

>
> **[消息来源：The Register](https://www.theregister.com/2023/11/08/ubuntu_core_desktop_details/)**
>
>
>

>
> 老王点评：参照手机和平板上的经验，或许这种整个操作系统被打包成一块的不可变桌面才是 Linux 桌面推广到普通用户的道路。
>
>
>

### Cruise 称其人类远程协助人员负责 15-20 辆无人驾驶出租车

通用汽车旗下的无人驾驶公司 Cruise 最近因为旧金山一位行人被拖受伤事故而暂停了在全美的无人驾驶出租车业务，并召回其全部 950 辆自动驾驶汽车，进行软件更新。该公司创始人兼 CEO 回应称，他们的无人出租车不是真正的无人驾驶，需要远程操作中心工作的人类频繁操控。该公司称，他们的无人驾驶出租车车队每行驶 6-8 公里会触发一次远程协助会话，一名人类远程协助人员负责 15-20 辆无人驾驶汽车。

>
> **[消息来源：CNBC](https://www.cnbc.com/2023/11/06/cruise-confirms-robotaxis-rely-on-human-assistance-every-4-to-5-miles.html)**
>
>
>

>
> 老王点评：这些远程人员是不是就像玩游戏一样操纵十几辆车辆行驶。
>
>
>

### Hugging Face 合作成立初创企业加速器

Hugging Face 公司是一家拥有十亿美元风险投资支持的初创公司，将自己定位为 OpenAI 的一种开源替代方案，它拥有 ChatGPT 等软件的完整开放替代方案，并领导着 BigScience 等社区项目。Hugging Face 与 Meta 等启动了一项面向法国的人工智能创业计划，入选企业需要在开放的基础模型上开展实质性的项目，或者至少能够证明 “愿意将这些模型整合到他们的产品和服务中”。Hugging Face CEO 在一份声明中说：“对我来说，开源人工智能是这十年来最重要的话题，因为它是实现人工智能道德民主化的基石。”

>
> **[消息来源：Tech Crunch](https://techcrunch.com/2023/11/08/meta-hugging-face-open-source-ai-station-f/)**
>
>
>

>
> 老王点评：我相信，开源的 AI 模型或许一时比不上并不 Open 的 OpenAI 等专有解决方案，但是未来一定是开源的。
>
>
>


GIMP 快速教程：缩放、裁剪和旋转图像

Summary: 本文翻译自 GIMP 官网，是 GIMP 教程的一部分。

本文翻译自 GIMP 官网，是 GIMP 教程的一部分。

# GIMP 快速教程：缩放、裁剪和旋转图像

>
> 本文翻译自 GIMP 官网，是 GIMP 教程的一部分。
>
>
>

### 目的

恭喜你！你在电脑上安装了 GIMP！GIMP 是一个非常强大的图像处理软件，但是不要被它吓到。即使你没有时间学习高级的电脑图形处理技能，GIMP 仍然可以是一个非常有用和方便的快速修改图像的工具。

我希望这些例子能帮助你解决那些需要对图像应用进行快速修改的小需求。希望这也能让你学习到 GIMP 更强大的图像编辑能力。

为了便于快速查看，我将在这篇快速教程中涵盖以下四个要点：

* 更改图像的大小（尺寸），即缩放
* 更改 JPEG 的大小（文件大小）
* 剪裁图像
* 旋转或翻转图像

为了与这个页面之前的版本保持保持一致，我将使用 NASA 提供的天文学家每日图像（APOD）中的一张图片。

为了跟随这些快速示例，你只需要知道如何找到你的图片并打开它：“<ruby> 文件 <rt>  File </rt></ruby> → <ruby> 打开 <rt>  Open </rt></ruby>”。

### 调整图像的大小（尺寸），即缩放

你可能会遇到一个图像太大，不适合特定用途的问题（例如，嵌入网页、在线发布或包含在电子邮件中）。在这种情况下，你通常会希望将图像缩小到更小的尺寸，以便更好地满足你的需求。

在 GIMP 中轻松完成这个任务非常简单。

我们使用的图片是哈勃望远镜拍摄的马头星云红外成像图。

当你第一次在 GIMP 中打开图像时，很可能会发现图像被缩放，以便整个图像都能适合你的画布。对于这个示例，需要注意的是，GIMP 窗口顶部的窗口装饰会显示一些关于图像的信息。

请注意，窗口顶部的信息显示了当前图像的像素尺寸（在这个例子中，像素尺寸为 1225×1280）。

要调整图像的大小到新的尺寸，我们只需要调用“<ruby> 缩放图像 <rt>  Scale Image </rt></ruby>”对话框：“<ruby> 图像 <rt>  Image </rt></ruby> → <ruby> 缩放图像... <rt>  Scale Image ... </rt></ruby>”。

这将打开“缩放图像”对话框：

在“缩放图像”对话框中，你会发现一个*可以输入新宽度和高度的地方*。如果你知道所需图的新尺寸，可以在这里填写相应的值。

“<ruby> 宽度 <rt>  Width </rt></ruby>”和“<ruby> 高度 <rt>  Height </rt></ruby>”输入框右侧，你也会**注意到一个小链**。这个图标显示了宽度和高度值被相互锁定，这意味着改变一个值会导致另一个值的变化，以保持相同的宽高比（图像中不会出现奇怪的压缩或拉伸）。

例如，如果你想要将图像宽度调整到 600 像素，你可以在这个宽度输入框中输入这个值，高度将自动更改以保持图像的宽高比：

如你所见，在宽度一栏输入 600 像素后会自动将高度更改为 627 像素。

此外，我还展示了 “<ruby> 质量 <rt>  Quality </rt></ruby>” 选项下的不同选项。默认值是“<ruby> 立方 <rt>  Cubic </rt></ruby>”，但为了保持最佳质量，最好使用 “Sinc（Lanczos3）”。

如果你想使用不同类型的值（而不是像素大小）指定一个新的尺寸，可以通过点击“px”下拉菜单来更改输入值的类型：

这种情况的一个常见用途是，如果你想要以原始尺寸的百分比指定一个新的尺寸。在这种情况下，你可以更改为“<ruby> 百分比 <rt>  percent </rt></ruby>”，然后在任何字段中输入 50 来将图像缩小一半。

一旦你缩放了图像，别忘了保存你所做的更改：选中 “<ruby> 文件 <rt>  File </rt></ruby> → <ruby> 导出... <rt>  Exprert ... </rt></ruby>” 以新的文件名导出，或者 “<ruby> 文件 <rt>  File </rt></ruby> → <ruby> 覆盖 {文件名} <rt>  Overwrite {FILENAME} </rt></ruby>” 覆盖原始文件（谨慎使用）。

有关使用缩放图像的更多信息，你可以查看文档。

### 修改 JPEG 文件的大小

你也可以在导出为 JPEG 等格式时修改图像的文件大小。JPEG 是一种**有损**压缩算法，这意味着在将图像保存为 JPEG 格式时，你将牺牲一些图像质量来获得较小的文件大小。

我使用已经将其调整为 200 像素宽（请参见上方）的“马头星云”图像，并使用不同级别的 JPEG 压缩将其导出，以比较 JPEG 压缩的效果：

如你所见，即使在质量设置为 80 的情况下，图像的文件大小显著减少了 77％，而图像质量仍然相当合理。

当你完成任何正在进行的图像修改，并准备导出时，只需通过以下方式调用导出对话框：“文件 → 导出 …” 这将调用“<ruby> 导出图像 <rt>  Export Image </rt></ruby>”对话框：

你可以在此*输入新的文件名*。如果文件名里包含扩展名（此时为 “.jpg”），GIMP 会尝试为你导出对应的文件格式。此处将图像导出为 JPEG 格式。

如果你需要将文件导出到不同的位置，也可以通过位置窗格导航到计算机上的新位置。当你准备好导出图像时，只需按“<ruby> 导出 <rt>  Expert </rt></ruby>”按钮。

这将调用“<ruby> 导出图像为 JPEG <rt>  Export Image as JPEG </rt></ruby>”对话框，你可以在其中更改导出的质量：

现在你可以在此对话框中更改导出质量。如果你还勾选了“<ruby> 在图像窗口中显示预览 <rt>  Show preview in image window </rt></ruby>”选项，画布上的图像将更新以反映你输入的质量值。这也将启用“<ruby> 文件大小： <rt>  File size: </rt></ruby>”信息，告诉你导出后的文件大小。你可能需要移动一些窗口才能在背景中查看画布上的预览。

当你对结果满意时，按“导出”按钮进行导出。

要查看有关导出不同图像格式的更多详细信息，请参阅手册中的“从 GIMP 中获取图像”。

### 裁剪图像

有很多原因可能会使你想要裁剪图像。你可能想要删除无用的边框或信息，或者你可能希望最终图像的焦点集中在某些特定的细节上。

简而言之，裁剪就是一个将图像缩小到比你开始时小的操作：

裁剪图像的步骤非常简单。你可以通过工具面板使用裁剪工具：

或者通过菜单访问裁剪工具：“<ruby> 工具 <rt>  Tools </rt></ruby> → <ruby> 变换工具 <rt>  Transform Tools </rt></ruby> → <ruby> 裁剪 <rt>  Crop </rt></ruby>”。

一旦激活该工具，画布上的鼠标光标会改变,以表示正在使用裁剪工具。

现在你可以在画布上的任何位置单击鼠标，然后拖动鼠标到新位置以高亮显示初始选择区域以进行裁剪。在这个阶段，你不必担心精确度，因为在实际裁剪之前，你可以修改最终选区。

在选择要裁剪的区域后，你会发现选区仍然处于活动状态。在这一点上，将鼠标光标悬停在选区的任何四个角或边缘上都会改变鼠标光标，并高亮显示该区域，以对裁剪进行精调。

你可以点击并拖动任何一侧或一角来移动该部分的选区。

一旦你对裁剪区域满意，只需按键盘上的回车键即可提交裁剪。在你想从头开始或决定不裁剪时，可以按键盘上的 `Esc` 键退出操作。

有关在GIMP中裁剪的更多信息，请参阅文档。

#### 另一种方法

另一种裁剪图像的方法是首先使用矩形选择工具进行选择：

或者通过菜单：“<ruby> 工具 <rt>  Tools </rt></ruby> → <ruby> 选择工具 <rt>  Selection Tools </rt></ruby> → <ruby> 矩形选择 <rt>  Rectangle Select </rt></ruby>”，然后你可以以与裁剪工具相同的方式高亮显示选区，并调整选区。一旦你有一个喜欢的选区，你就可以通过以下方式将图像裁剪到该选区的大小：“<ruby> 图像 <rt>  Image </rt></ruby> → <ruby> 裁剪到选区 <rt>  Crop to Selection </rt></ruby>”。

### 旋转或翻转图像

可能有时你需要旋转图像。例如，你可能使用相机在垂直方向拍摄了图像，但是 GIMP 并没有自动旋转（GIMP 通常会为你自动处理，但并非总是如此）。

有时你也可能想翻转图像。这些命令都位于同一个菜单项下：“<ruby> 图像 <rt>  Image </rt></ruby> → <ruby> 变换 <rt>  Transform </rt></ruby>”。

#### 翻转图像

如果你想翻转你的图像，变换菜单提供了两种选项：水平翻转或垂直翻转。此操作将沿着指定的轴翻转（镜像）图像。例如，这里显示了在单个图像上应用的所有翻转操作：

#### 旋转图像

变换菜单中的图像旋转限制为 90° 顺时针/逆时针或 180°。 不要误解这意味著 GIMP 不能执行任意角度旋转。任意旋转是针对每个图层进行处理的，而这里的图像旋转适用于整个图像。

### 总结

这里展示的简单示例只是冰山一角。然而，这些是许多没有学习太多图像处理知识的人经常进行的常见修改。希望这个教程对你有所帮助。 我鼓励你阅读其他教程，了解更高级的图像处理方法！

*（题图：MJ/9bbe01ba-7cc1-49b1-91a6-2b3d13594503）*

---

via: <https://www.gimp.org/tutorials/GIMP_Quickies/>

作者：Pat David 译者：[TimXiedada](https://github.com/TimXiedada) 编辑：[wxy](https://github.com/wxy)

本文由贡献者投稿至 [Linux 中国公开投稿计划](https://github.com/LCTT/Articles/)，采用 [CC-BY-SA 协议](https://creativecommons.org/licenses/by-sa/4.0/deed.zh) 发布，[Linux中国](https://linux.cn/) 荣誉推出


Linux 用户必备的 8 大网站

Summary: 这里列举的是我个人最喜欢的 Linux 网站，希望你也能喜欢。

居然没有 lwn. 另外我觉得 Phoronix 在软件自由这方面有点三观不正。Reddit 我更喜欢 r/linuxmasterrace.

lwn.net

linux.cn 确信

这里列举的是我个人最喜欢的 Linux 网站，希望你也能喜欢。

# Linux 用户必备的 8 大网站

>
> 这里列举的是我个人最喜欢的 Linux 网站，希望你也能喜欢。
>
>
>

既然你已经在关注我们，我们能为你解答大多数关于 Linux 的基础需求。

然而，对 Linux 的学习总是无止境的，即便是对于资深的 Linux 专家也是如此。????

实际上，一些网站和博客内容对于 Linux 新手以及有经验的用户都十分有用。

下面我就来列举一些你或许应该收藏的优秀网站。

### 1、ArchWiki

[ArchWiki](https://wiki.archlinux.org/) 平台提供了各种信息。无论你是寻求关于工具、安全技术、安装程序、桌面环境，或是其它任何主题的内容，你都可以在 ArchWiki 上找到相关的深入讨论。

从技术角度讲，ArchWiki 充当着 Arch Linux 发行版的文档门户。不过，即使你并非 Arch Linux 的用户，你仍然可以在这里找到教程、指南、常见问题解答（F.A.Q），以及大量其它的关键信息。

这些信息表述清晰，经过详尽的审查以及更新，且易于理解。

>
> **[ArchWiki](https://wiki.archlinux.org/)**
>
>
>

### 2、ExplainShell

[ExplainShell](https://explainshell.com/) 是一个非常有趣的平台，可以帮助你快速识别命令中所使用的参数。

通常，我们需要分别检索手册页或者是命令信息。而有了 ExplainShell，这个过程就变得更高效，它能够迅速为你提供所需的信息，同时为你提供对应的手册页链接。

它主要显示从 Ubuntu 的手册页库中提取的信息。所以，无论你是正在进行软件安装，进行 Git 提交，还是连接到 SSH，你都可以借助 ExplainShell 来深入理解各种命令。

>
> **[ExplainShell](https://explainshell.com/)**
>
>
>

### 3、Crontab.guru

如果你想要创建 [cron 任务](https://itsfoss.com/cron-job/) 以实现自动化，那么 [Crontab.guru](https://crontab.guru/) 就是一款必备的便利网站。

只需输入你计划在 cron 任务中采用的表达式，即可获取关于其是否会按预期工作的详细反馈。对于正确的表达式，它将直接呈现你想通过 cron 任务设定的时间表。

除此之外，即使你是 cron 的新手，它也会在编辑器里高亮表达月份/日期/星期的字段。

如果内容符合你的预期，就可以直接使用，或者编辑以修正并使用。

>
> **[Crontab.guru](https://crontab.guru/)**
>
>
>

### 4. DistroWatch

[DistroWatch](https://distrowatch.com/) 或许是每个 Linux 用户都耳熟能详的网站。该网站以列举当前热门 Linux 发行版而闻名，一些用户甚至参考其流行度榜单，以了解自己偏爱的发行版是否位列其他版本之上。

在这里，你可以获取到最新发布的各种 Linux 发行版的更新信息，其中可能包括一些你此前未曾听闻过的版本，以及新版本的简要更改日志。

如果你订阅了它们的通讯，还可以收到发行版评论以及一些有关开发的新闻。对于希望跟踪最新发行版的用户，这个网站值得你书签收藏。

>
> **[DistroWatch](https://distrowatch.com/)**
>
>
>

### 5、Phoronix

[Phoronix](https://www.phoronix.com/) 是目前为止最老牌的 Linux 网站之一，专注于发布面向硬件的内容。

无论你正寻找与最新处理器相关的 Linux 基准测试，还是 Linux 发行版的性能报告，你都可以在 Phoronix 上找到。除此之外，你还可以在这里定期获取到 Linux 世界的最新消息和开发动向。

>
> **[Phoronix](https://www.phoronix.com/)**
>
>
>

### 6、Ubuntu Blog

Canonical 的博客主要关注 Ubuntu、其开发动态、企业级更新以及其它技术性进展。

如何你希望了解关于 Ubuntu 的所有事情，那么 [Ubuntu Blog](https://ubuntu.com/blog) 就是你的最佳书签。无论你是物联网爱好者，还是利用 Ubuntu 进行机器人工程开发，总有新动态在发生。

坦白说，鉴于 Ubuntu 广泛的应用，你无法从任何特定的博客获取所有这些更新信息。

>
> **[Ubuntu Blog](https://ubuntu.com/blog)**
>
>
>

### 7、GamingOnLinux

尽管我们也会覆盖一些游戏更新，并为你提供一个 [游戏指南](https://itsfoss.com/linux-gaming-guide/)，但是对于全面了解 Linux 游戏和 Steam Deck 的一切，[GamingOnLinux](https://gamingonlinux.com/) 是你的终极选择。

不论是新的开发动态、新游戏、SteamOS 的发布、SteamVR，还是对 Linux 用户有重要影响的促销信息，你都可以在这里找到。

>
> **[GamingOnLinux](https://gamingonlinux.com/)**
>
>
>

### 8、Reddit 的 /r/Linux 子论坛

虽然 Reddit 已经与过去有所不同，但其子论坛仍然值得关注。

[/r/Linux 子论坛](https://www.reddit.com/r/linux/) 是一个值得你收藏的社区，你可以在这里读到开源世界和 Linux 领域的最新动态。也许 Reddit 用户并没有你想象中那么友好，但如果你想随时了解最新的变化，这个子论坛绝对值得你的收藏。

>
> **[/r/Linux 子论坛](https://www.reddit.com/r/linux/)**
>
>
>

### 私货：Linux 中国

翻译这篇文章时，我觉得应该将我们的网站也推荐给大家：

Linux 中国是一家立足中文开源爱好者社区的网站，已经持续为大家提供了十多年的关于开源、技术方面的内容。除了网站，我们还提供了同名的微信公众号、知乎官方账号。此外，我们在 BiliBili、YouTube、微博、抖音上也提供了短视频内容；在喜马拉雅上提供了音频内容；以及，很多人都在订阅的 RSS。

>
> **[Linux 中国](https://linux.cn/)**
>
>
>

顺便说一句，我们现在提供了深色模式和文本模式，你试过了吗？

### 我收藏了什么？

我很喜欢 **Phoronix 带来的硬件深度分析** 和 **Distrowatch 对新发行版项目的最新消息**，因此这两个网站一直位于我的收藏列表中。

而你需要收藏什么呢？

事实上，如果你是 Ubuntu 的桌面用户，关注 **Canonical 的博客**无疑能帮你了解最新版本的发布和新功能的解读。对于游戏爱好者，**GamingOnLinux** 是你的一站式解决方案。

假如你是那种总想知道事物运作方式或本质的人，那么，**ArchWiki**应该是你的首选。

当然，对于所有跟 Linux 相关的东西，我们会竭尽全力为你提供最佳的内容。所以，请别忘了也收藏我们哦！?

? 那么，你最喜欢收藏哪些网站呢？请在下方评论区告诉我吧！

*（题图：MJ/f29cd1de-dacc-4b38-b91d-a697d9adf8da）*

---

via: <https://itsfoss.com/useful-linux-websites/>

作者：[Ankush Das](https://itsfoss.com/author/ankush/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


Summary:
? 欧洲立法准备拦截和监视加密的 HTTPS 连接，且不允许反制
? 苹果称 MacBook Pro 上 的 8GB 内存相当于 PC 的 16 GB 内存
? 为了帮你选购更好的产品，Mozilla 推出首个 AI 大模型
»
»

吹的天花乱坠，8G内存并不够用，然后拿硬盘当交换空间，写入量爆炸（半年20TB），苹果公司是被制裁了吗，大内存卖这么贵？

来自山东枣庄的 Chrome Mobile 116.0|Android 10 用户

想不到吧，提出GDPR的欧盟竟然会做出比当年的美国和我们的老大哥（比如当年臭名昭著的CNNIC）更恶心的事情。

苹果的“祖传”8GB内存在M1推出或更早时就一直被诟病，这种说法显然站不住脚。对于只办公、上网、听歌、看视频的人确实够用，但是只要做一些复杂点的事情，比如开发、PS、后期处理，内存马上爆掉（吃硬盘swap）。对于运行虚拟机这种硬性要求，内存不够就是不够。

《乔布斯传》有一段话：<br />
20世纪90年代初，苹果在斯卡利的领导下市场占有率持续下降，乔布斯对斯卡利的愤怒和蔑视也与日俱增。“斯卡利引进下三滥的人和下三滥的价值观，把苹果给毁了。”乔布斯后来悲叹，“他们只在乎如何赚钱——主要为他们自己，同时也为苹果——而不在乎如何制造出色的产品。”乔布斯感觉斯卡利对利润的追逐是以牺牲市场份额为代价的。“Mac之所以输给微软，是因为斯卡利坚持尽可能地榨取每一分利润，而不是努力改进产品和降低价格。”结果是利润最终消失。

谢谢！

# 硬核观察 #1181 欧洲立法准备拦截和监视加密的 HTTPS 连接，且不允许反制

### 欧洲立法准备拦截和监视加密的 HTTPS 连接，且不允许反制

欧洲的立法者预计将通过数字身份规则 eIDAS 2.0 的立法。它的要求之一是，浏览器制造商必须信任政府批准的证书颁发机构（CA），并且不实施超出欧洲电信标准协会规定范围的安全控制。但是，如果浏览器制造商怀疑或检测到滥用（例如流量拦截），则不得采取反制措施来取消对这些 CA 证书的信任。Mozilla 说，这使得任何欧盟成员国的政府都能签发用于拦截和监视的网站证书，这些证书可以用来对付每一个欧盟公民。Mozilla、谷歌和 EFF 等均对这一条表示了关切和担忧。

>
> **[消息来源：The Register](https://www.theregister.com/2023/11/08/europe_eidas_browser/)**
>
>
>

>
> 老王点评：你为什么有这样的错觉？
>
>
>

### 苹果称 MacBook Pro 上 的 8GB 内存相当于 PC 的 16 GB 内存

苹果 MacBook Pro 标准型号过去十年配备的内存一直是 8GB，上个月，苹果推出的售价 1599 美元的 M3 MacBook Pro 仍然只有 8GB 的统一内存，而且是由 CPU、GPU 和神经网络加速器共享的。相比之下，Windows 笔记本基本上都是 16GB 或 32GB。一位苹果高管在接受采访时表示，MacBook Pro 上 的 8GB 统一内存相当于 PC 的 16GB 内存，“将我们的内存与其他系统的内存进行比较实际上是不对等的，因为我们对内存的使用效率很高，我们使用内存压缩，而且我们拥有统一的内存架构。”所谓统一内存，指的是苹果 M 系列的 Mac 的内存封装在处理器的片上系统芯片旁边，并与之直接连接，而不是焊接到主板上或使用 SODIMM 模块连接。

>
> **[消息来源：The Register](https://www.theregister.com/2023/11/09/apple_exec_defends_8gb/)**
>
>
>

>
> 老王点评：虽然我感觉也够了，但是这其实是狡辩，而且增加内存的苹果电脑会贵很多。
>
>
>

### 为了帮你选购更好的产品，Mozilla 推出首个 AI 大模型

今年早些时候，Mozilla 收购了一家利用人工智能和机器学习识别虚假和欺骗性产品评论的初创公司 Fakespot。在此基础上，Mozilla 开始测试其第一个大型语言模型 Fakespot Chat，购物者可以向该聊天机器人询问他们正在考虑的产品，就像你在现实世界中的实体店购物时向销售人员寻求帮助一样。该技术利用人工智能和机器学习对产品评论进行分类，去伪存真，回答用户的问题。该功能可以通过 Fakespot 分析器使用，也可以通过浏览器扩展在亚马逊网站的产品上使用。

>
> **[消息来源：Tech Crunch](https://techcrunch.com/2023/11/08/fakespot-chat-mozillas-first-llm-lets-online-shoppers-research-products-via-an-ai-chatbot/)**
>
>
>

>
> 老王点评：我怎么觉得 Mozilla 有点不务正业呢？
>
>
>


震撼登场！全新的 Steam Deck OLED 公开亮相！

Summary: 一款全新的、拥有更好显示效果以及卓越规格的 Steam Deck。

记得linux的HDR基本不能用，这波算了终于有大企业给linux的游戏整上完全支持的HDR了？

一款全新的、拥有更好显示效果以及卓越规格的 Steam Deck。

# 震撼登场！全新的 Steam Deck OLED 公开亮相！

>
> 一款全新的、拥有更好显示效果以及卓越规格的 Steam Deck。
>
>
>

随着假期临近，Valve 带给我们可能让这个季节更加欢乐的一些新鲜事。

他们近期的一次公告中，揭露了具备多项令人兴奋升级的**全新 Steam Deck 变体**。

快来一起深入了解一下吧。

### ? Steam Deck OLED：有哪些新特点？

此款 Steam Deck 变体，如名所示，配备了**全新的 90Hz、7.4 英寸 HDR OLED 显示屏**，支持达到**高达 1,000 尼特的 HDR 峰值亮度**以及**600 尼特的 SDR 亮度**。

相较于现有的配备了 LCD 的型号， OLED 显示屏能够**为玩家呈现更为深邃的黑色和更加明亮的色彩**。

然而，超凡的显示屏**并非新款 Steam Deck 唯一的亮点**，它的处理器也实现了升级，**更高效的 6 纳米 AMD “Sephiroth” APU**如今负责所有板上的处理任务。

作为上述特性的补充，Steam Deck OLED 还配备有**更大容量的 50Whr 电池**，能够带给你持久的电池续航。

在连接性方面，它提供了**Wi-Fi 6** 和 **Bluetooth 5.3**，实现了**更优质的下载体验**。

>
> ? 配有一根 2.5m 的电缆的 45W USB Type-C PD3.0 电源供应器，以便为电池充电。
>
>
>

对于**控制器也有所改进**，优化了模拟摇杆的顶部材料和形状，实现了更佳的粘性和防尘性，肩部按钮的反应更敏捷，并提供优越的触感反馈等等。

**操作系统仍然是 LCD 版本上的 Steam OS 3**，但是，如果你想尝试些不同的东西，不妨试试 [Bazzite](https://news.itsfoss.com/bazzite/)。

#### ? 主要规格

如果你想了解，新推出的 Steam Deck OLED 其实力如何？这里有详细的配置：

* **APU：** 6 纳米 AMD “Sephiroth”
* **CPU：** 4 核，[Zen 2](https://en.wikipedia.org/wiki/Zen_2)，主频 2.4–3.5 GHz
* **GPU：** 8x [RDNA 2](https://en.wikipedia.org/wiki/RDNA_2) 处理单元，主频 1.6 GHz
* **RAM：** 16 GB LPDDR5
* **存储：** 512 GB 或 1 TB 的 NVMe SSD
* **操作系统：** [SteamOS](https://itsfoss.com/steamos/) 3（基于 Arch）
* **重量：** 669 克

**但是，等等，还有更多！**

Valve 也推出了**特别的限量版 Steam Deck OLED** ，它具有所有相同的技术规格和 1 TB 的存储，**透明壳体以及烟雾般透明的外观色彩**。一起来看看吧?

它看起来真的很酷。我非常喜欢许多制造商现在的做法，通过透明的外壳来展示设备本身。也许，这是一个很好的趋势。

Valve 表明，这款设备只在美国和加拿大有**数量有限的供应**。

这个量产策略之所以限量，是因为他们想**尝试**了解是否有大量的对此类产品的需求，他们计划在未来尝试更多的颜色方案。

### ? 在哪儿购买呢？

**起价为 549 美元**，你可以在 11 月 16 日之后在 [Steam Store](https://store.steampowered.com/steamdeck) 采购 Steam Deck OLED。

但请注意，并非所有 Steam 运营的区域都有销售。

>
> **[Steam Deck OLED](https://store.steampowered.com/steamdeck)**
>
>
>

如果你在想；**原有的 Steam Deck LCD 版本会怎么样？**

嗯，这些机型依然会有供应，并会定期更新。

? 在即将到来的假期季节，你会想要购买一台吗？请在下方让我知道你的想法！

---

via: <https://news.itsfoss.com/steam-deck-oled/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


如何将 Silverblue 重定位到 Fedora Linux 39

Summary: 如果你想在 Fedora Silverblue 系统上更新或将系统 重定位rebase 到 Fedora Linux 39，本文会提供帮助。

# 如何将 Silverblue 重定位到 Fedora Linux 39

<img src="content_image/album_202311_11_152119r6nv12c115vntzp4.png" alt="" title="">

[Fedora Silverblue](https://docs.fedoraproject.org/en-US/fedora-silverblue/) 是 一款基于 Fedora Linux 构建的面向桌面的操作系统。这款操作系统非常适合日常使用、开发和容器化的工作流程。它有 [许多优势](https://fedoramagazine.org/give-fedora-silverblue-a-test-drive/)，例如可以在发生问题时轻松回滚操作。如果你想在 Fedora Silverblue 系统上更新或将系统 <ruby> 重定位 <rt>  rebase </rt></ruby> 到 Fedora Linux 39，本文会提供帮助。文章不仅会指导你执行操作，还会教你如何在遇到意外情况时撤销操作。

### 更新你目前的系统

在实际重定位至 Fedora Linux 39 前，你需要先安装所有待处理的更新。你可以在终端中使用下面的命令：

```
$ rpm-ostree update

```

或者你也可以通过 GNOME “软件”应用安装更新，然后重新启动系统。

### 使用 GNOME “软件” 重定位

在 GNOME “软件”应用的更新页面上，你可以看到 Fedora Linux 的新版本已经可以使用。

首先，你需要点击 “<ruby> 下载 <rt>  Download </rt></ruby>” 按钮来下载新的操作系统镜像。这个过程可能需要一些时间。完成后，你会发现更新已经准备好进行安装。

接下来，点击 “<ruby> 重新启动 & 升级 <rt>  Restart & Upgrade </rt></ruby>” 按钮。这个过程只需要几分钟，一旦更新完成，计算机将会重新启动。重启后，你会看到崭新的 Fedora Linux 39 的系统环境，看起来很简单，是吧？

### 使用终端进行重定位

如果你更喜欢在终端操作，那么这部分指南就是为你准备的。

首先你需要确认 39 版本是否已经可以使用：

```
$ ostree remote refs fedora

```

在命令输出中你应该看到如下内容：

```
fedora:fedora/39/x86_64/silverblue

```

如果你想保留当前的部署（这意味着这个部署将会持续在 GRUB 中显示为一个选项，直到你手动移除它），你可以通过运行下面的命令实现：

```
# 0 是在 rpm-ostree 状态中的条目位置
$ sudo ostree admin pin 0

```

如果你想移除已经固定的部署，你可以使用下面的命令：

```
# 2 是在 rpm-ostree 状态中的条目位置
$ sudo ostree admin pin --unpin 2

```

然后，将你的系统重定位至 Fedora Linux 39 镜像。

```
$ rpm-ostree rebase fedora:fedora/39/x86_64/silverblue

```

最后，重启你的电脑，启动进入 Fedora Linux 39 版本。

### 如何进行回滚

如果遇到任何问题（例如，如果你无法启动 Fedora Linux 39），回滚是非常容易的。在系统启动时，在 GRUB 菜单中选择 Fedora Linux 39 之前的版本，然后你的系统就会启动这个更早的版本而非 Fedora Linux 39。如果你在启动过程中看不到 GRUB 菜单，那么在启动时尝试按下 `ESC` 键。如果你想让更早版本的选择永久生效，你可以使用下面的命令：

```
$ rpm-ostree rollback

```

现在，你已经了解如何将 Fedora Silverblue 系统重定位到 Fedora Linux 39，以及如何进行系统回滚了。那么何不今天就试试看呢？

### 常见问题解答

在每篇关于重定位 Silverblue 到新版本的文章的评论中，总会有相似的问题，因此我会在这个部分尝试解答这些问题。

**问题：在 Fedora 的重定位过程中我能跳过某些版本吗？例如直接从 Fedora 37 Silverblue 更新到 Fedora 39 Silverblue。**

答案：虽然有时可能可以在重定位过程中跳过某些版本，但并不推荐这样操作。你应当始终更新到紧邻的新版本（例如从 38 更新到 39），以避免不必要的错误。

**问题：我安装了 [rpm-fusion](https://rpmfusion.org/) ，在重定位过程中出现错误，我应当怎样进行重定位？**

答案：如果你在 Silverblue 安装上加入了 [rpm-fusion](https://rpmfusion.org/)，你在重定位前应当执行以下操作：

```
rpm-ostree update \
    --uninstall rpmfusion-free-release \
    --uninstall rpmfusion-nonfree-release \
    --install rpmfusion-free-release \
    --install rpmfusion-nonfree-release

```

执行完上述操作后，你可以按照本篇博文的步骤完成重定位过程。

**问题：这个指南是否适用于其他的 ostree 版本（例如 Kinoite， Sericea）？**

答案：是的，你可以照着本指南的 *使用终端进行重定位* 部分的操作来完成所有的 Fedora ostree 版本的重定位过程。只需要使用对应的分支即可。例如对于 Kinoite，你可以使用

```
fedora:fedora/39/x86_64/kinoite

```

而非

```
fedora:fedora/39/x86_64/silverblue

```

*（题图：MJ/71150afc-ae44-48f3-8689-e86758e07b1e）*

---

via: <https://fedoramagazine.org/how-to-rebase-to-fedora-linux-39-on-silverblue/>

作者：[Michal Konečný](https://fedoramagazine.org/author/zlopez/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #1182 40 年前，微软宣布 Windows 开发计划

Summary:
? 40 年前，微软宣布 Windows 开发计划
? 苹果公司为在 iOS 上侧载应用做准备
? 微软禁止内部使用 OpenAI 的 ChatGPT
»
»

老王点评：我用的第一个图形化桌面操作系统已经是 Windows 3.1 ，其底层运行的是 DOS 6.2.2。

+1

40 年前，Richard Stallman 宣布 GNU 开发计划

# 硬核观察 #1182 40 年前，微软宣布 Windows 开发计划

### 40 年前，微软宣布 Windows 开发计划

在 40 年前，1983 年 11 月 10 日，在纽约市的一次新闻发布会上，微软首次披露了其推出基于图形用户界面的全新 PC 操作系统的计划。公司将该操作系统命名为 “Windows”。虽然微软希望在 1984 年 4 月推出 Windows，但第一个版本却是在首次宣布两年后才上市。有趣的是，微软最初希望 Windows 应用程序可以重叠显示，但是最终在 Windows 1.0 中采用的是平铺式窗口，应用程序会自动调整其大小以适应屏幕，所以，现在的一些 Linux 平铺桌面环境还真不是什么创举。该操作系统在头两年的销售量仅为 50 万套，销售失败。事实上，直到 1990 年 Windows 3.0 的发布，该操作系统才真正取得了成功。

>
> **[消息来源：NeoWin](https://www.neowin.net/news/a-quick-look-back-at-the-official-announcement-of-microsoft-windows-10-40-years-ago-today/)**
>
>
>

>
> 老王点评：我用的第一个图形化桌面操作系统已经是 Windows 3.1 ，其底层运行的是 DOS 6.2.2。
>
>
>

### 苹果公司为在 iOS 上侧载应用做准备

iOS 17.2 有了一个新的公共框架，名为 “托管应用分发”。通过分析这个 API，发现了一个新的、未使用的权限，它将允许第三方应用程序安装其他应用程序。换句话说，这将允许开发者创建自己的应用商店。该 API 具有基本的控制功能，可以下载、安装甚至更新来自外部的应用程序。它还可以检查应用程序是否与特定设备或 iOS 版本兼容。根据欧盟的《数字市场法案》（DMA），大型科技公司除其他事项外，还必须允许用户从第三方来源安装任何他们想要的应用程序。理论上，苹果公司必须在 2024 年 3 月之前遵守 DMA 法规。

>
> **[消息来源：9to5mac](https://9to5mac.com/2023/11/10/ios-17-2-sideload-apps/)**
>
>
>

>
> 老王点评：即便支持，也可能只是在欧盟支持。
>
>
>

### 微软禁止内部使用 OpenAI 的 ChatGPT

由于安全方面的担忧，微软暂时取消了对 OpenAI 的 ChatGPT 的内部访问权限，试图在公司设备上访问 ChatGPT 的员工被转到了微软封锁该网站的通知页面。微软称，“出于安全和数据方面的考虑，一些人工智能工具已不再供员工使用”。微软表示，它积极鼓励内部和客户使用必应聊天企业版（它使用的是 ChatGPT 企业版），因为它提供了更强大的隐私保护。此外，摩根大通、Verizon 和苹果公司也阻止了内部使用 OpenAI 的 ChatGPT。

>
> **[消息来源：The Register](https://www.theregister.com/2023/11/10/microsoft_blocks_chatgpt/)**
>
>
>

>
> 老王点评：AI 越好用，其对企业内部数据的攫取就越多，这可比搜索引擎可怕多了。
>
>
>