使用 VLC 下载 YouTube 视频

Summary: 我将演示一个简单的 VLC 功能，即使用它下载 YouTube 视频。

进youtube需要梯子，进去才能获得网址。不进去又无法使用。追问这个工具的意义

我将演示一个简单的 VLC 功能，即使用它下载 YouTube 视频。

# 使用 VLC 下载 YouTube 视频

[VLC](https://www.videolan.org/vlc/) 是 [Linux 和其他平台上最受欢迎的视频播放器](https://itsfoss.com/video-players-linux/)之一。

它不仅仅是一个视频播放器。它提供了许多多媒体和网络相关的功能。你会惊讶地 [了解 VLC 的能力](https://itsfoss.com/vlc-pro-tricks-linux/)。

我将演示一个简单的 VLC 功能，即使用它下载 YouTube 视频。

是的。你可以在 VLC 中播放 YouTube 视频并下载它们。让我告诉你怎么做。（LCTT 校注：发布此文只探讨技术可行性。）

### 使用 VLC 媒体播放器下载 YouTube 视频

现在，有一些方法可以 [下载 YouTube 视频](https://itsfoss.com/download-youtube-videos-ubuntu/)。使用浏览器扩展或使用专门的网站或工具。

但是如果你不想使用任何额外的东西，已经安装的 VLC 播放器可以用于此目的。

\*\*重要提示：\*\*在从 YouTube 复制链接之前，请确保从 YouTube 播放器中选择所需的视频质量，因为我们将获得与复制链接时流式传输视频相同的质量。

#### 步骤 1：获取所需视频的视频链接

你可以使用任何你喜欢的浏览器并从地址栏中复制视频链接。

#### 步骤 2：将复制的链接粘贴到网络流

“<ruby> 网络流 <rt>  Network Stream </rt></ruby>”选项位于“<ruby> 媒体 <rt>  Media </rt></ruby>”菜单下，这是我们顶部菜单栏的第一个选项。你也可以使用快捷方式 `CTRL + N` 打开网络流 。

现在，你只需粘贴复制的 YouTube 视频链接，然后单击播放按钮。我知道它只是在我们的 VLC 中播放视频，但还有一点额外的步骤可以让我们下载当前的流媒体视频。

#### 步骤 3：从编解码器信息中获取位置链接

在“<ruby> 编解码器信息 <rt>  Codec Information </rt></ruby>”下，我们会得到当前播放视频的位置链接。要打开编解码器信息，你可以使用快捷键 `CTRL + J` 或者你会在“<ruby> 工具 <rt>  Tools </rt></ruby>”菜单下找到编解码器信息选项。

它将带来有关当前流媒体视频的详细信息。但我们需要的是“<ruby> 位置 <rt>  Location </rt></ruby>”。你只需复制位置链接，我们的任务就完成了 90%。

#### 步骤 4：将位置链接粘贴到新选项卡

打开任何你喜欢的浏览器，并将复制的位置链接粘贴到新选项卡，它将开始在浏览器中播放该视频。

现在，右键单击播放视频，你将看到“将视频另存为”的选项。

它将打开文件管理器并询问你是否要在本地保存此视频。你还可以重命名该文件，默认情况下它将被命名为 “videoplayback.mp4”。

### 结论

如果你有互联网连接问题，或者如果你想保存一些视频以供将来观看，下载 YouTube 视频是有意义的。

当然，我们不鼓励盗版。此方法仅用于合理使用，请确保视频的创建者已允许该视频进行合理使用，并确保在将其用于其他地方之前将其归属于视频的原始所有者。

---

via: <https://itsfoss.com/download-youtube-videos-vlc/>

作者：[Community](https://itsfoss.com/author/itsfoss/) 选题：[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/) 荣誉推出


Kubernetes 架构指南

# Kubernetes 架构指南

>
> 了解 Kubernetes 架构中不同组件是如何组合在一起的，这样你就可以更好地排查问题、维护一个健康的集群，以及优化工作流。
>
>
>

使用 Kubernetes 来编排容器，这种描述说起来简单，但理解它的实际含义以及如何实现它完全是另外一回事。如果你正在运行或管理 Kubernetes 集群，那么你就会知道 Kubernetes 由一台称为 “<ruby> 控制平面 <rt>  control plane </rt></ruby>” 的机器和许多其他 <ruby> 工作节点 <rt>  worker node </rt></ruby> 机器组成。每种类型都有一个复杂但稳定的堆栈，这使编排成为可能，熟悉每个组件有助于理解它是如何工作的。

*（Nived Velayudhan, [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

### 控制平面组件

Kubernetes 安装在一个称为“<ruby> 控制平面 <rt>  control plane </rt></ruby>”的机器上，它会运行 Kubernetes 守护进程，并在启动容器和<ruby> 容器组 <rt>  pod </rt></ruby>时与之通信。下面介绍控制平面的各个组件。

#### etcd

etcd 是一种快速、分布式一致性键值存储器，用作 Kubernetes 对象数据的持久存储，如容器组、副本控制器、密钥和服务。etcd 是 Kubernetes 存储集群状态和元数据的唯一地方。唯一与 etcd 直连的组件是 Kubernetes API 服务器。其他所有组件都通过 API 服务器间接的从 etcd 读写数据。

etcd 还实现了一个监控功能，它提供了一个基于事件的接口，用于异步监控键的更改。一旦你更改了一个键，它的监控者就会收到通知。API 服务器组件严重依赖于此来获得通知，并将 etcd 变更至期望状态。

*为什么 etcd 实例的数量应该是奇数？*

你通常会运行三个、五个或七个 etcd 实例实现高可用（HA）环境，但这是为什么呢？因为 etcd 是分布式数据存储，可以水平扩展它，但你需要确保每个实例中的数据是一致的。因此，需要为系统当前状态达成共识，etcd 为此使用 [RAFT 共识算法](https://www.geeksforgeeks.org/raft-consensus-algorithm/)。

RAFT 算法需要经过选举（或仲裁）集群才能进入下一个状态。如果你只有两个 etcd 实例并且他们其中一个失败的话，那么 etcd 集群无法转换到新的状态，因为不存在过半这个概念。如果你有三个 etcd 实例，一个实例可能会失败，但仍有 2 个实例可用于进行选举。

#### API 服务器

API 服务器是 Kubernetes 中唯一直接与 etcd 交互的组件。Kubernetes 中的其他所有组件都必须通过 API 服务器来处理集群状态，包括客户端（kubectl）。API 服务器具有以下功能：

* 提供在 etcd 中存储对象的一致方式。
* 执行验证对象，防止客户端存储配置不正确的对象（如果它们直接写入 etcd 数据存储，可能会发生这种情况）。
* 提供 RESTful API 来创建、更新、修改或删除资源。
* 提供 [乐观并发锁](https://stackoverflow.com/questions/52910322/kubernetes-resource-versioning#:~:text=Optimistic%20concurrency%20control%20(sometimes%20referred,updated%2C%20the%20version%20number%20increases.)，在发生更新时，其他客户端永远不会有机会重写对象。
* 对客户端发送的请求进行身份验证和授权。它使用插件提取客户端的用户名、ID、所属组，并确定通过身份验证的用户是否可以对请求的资源执行请求的操作。
* 如果请求试图创建、修改或删除资源，则负责 [权限控制](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/)。例如，AlwaysPullImages、DefaultStorageClass 和 ResourceQuota。
* 实现了一种监控机制（类似于 etcd），用户客户端监控更改。这允许调度器和控制器管理器等组件以松耦合的方式与 API 服务器交互。

#### 控制器管理器

在 Kubernetes 中，控制器持续监控集群状态，然后根据需要进行或请求更改。每个控制器都尝试将当前集群状态变更至期望状态。控制器至少跟踪一种 Kubernetes 资源类型，这些对象均有一个字段来表示期望的状态。

控制器示例：

* 副本管理器（管理<ruby> 副本控制器 <rt>  ReplicationController </rt></ruby>资源的控制器）
* <ruby> 副本集 <rt>  ReplicaSet </rt></ruby>、守护进程集DaemonSet 和任务控制器
* 部署控制器
* 有状态负载控制器
* 节点控制器
* 服务控制器
* 接入点控制器
* 命名空间控制器
* <ruby> 持久卷 <rt>  PersistentVolume </rt></ruby>控制器

控制器通过监控机制来获得变更通知。它们监视 API 服务器对资源的变更，对每次更改执行操作，无论是新建对象还是更新或删除现有对象。大多数时候，这些操作包括创建其他资源或更新监控的资源本身。不过，由于使用监控并不能保证控制器不会错过任何事件，它们还会定期执行一系列操作，确保没有错过任何事件。

控制器管理器还执行生命周期功能。例如命名空间创建和生命周期、事件垃圾收集、已终止容器组垃圾收集、[级联删除垃圾收集](https://kubernetes.io/docs/concepts/architecture/garbage-collection/) 和节点垃圾收集。有关更多信息，参考 [云控制器管理器](https://kubernetes.io/docs/concepts/architecture/cloud-controller/)。

#### 调度器

调度器是一个将容器组分配给节点的控制平面进程。它会监视新创建没有分配节点的容器组。调度器会给每个发现的容器组分配运行它的最佳节点。

满足容器组调度要求的节点称为可调度节点。如果没有合适的节点，那么容器组会一直处于未调度状态，直到调度器可以安置它。一旦找到可调度节点，它就会运行一组函数来对节点进行评分，并选择得分最高的节点，然后它会告诉 API 服务器所选节点的信息。这个过程称为绑定。

节点的选择分为两步：

1. 过滤所有节点的列表，获得可以调度容器组的节点列表（例如，PodFitsResources 过滤器检查候选节点是否有足够的可用资源来满足容器组的特定资源请求）。
2. 对第一步得到的节点列表进行评分和排序，选择最佳节点。如果得分最高的有多个节点，循环过程可确保容器组会均匀地部署在所有节点上。

调度决策要考虑的因素包括：

* 容器组是否请求硬件/软件资源？节点是否报告内存或磁盘压力情况？
* 节点是否有与容器组规范中的节点选择器匹配的标签？
* 如果容器组请求绑定到特定地主机端口，该端口是否可用？
* 容器组是否容忍节点的污点？
* 容器组是否指定节点亲和性或反亲和性规则？

调度器不会指示所选节点运行容器组。调度器所做的就是通过 API 服务器更新容器组定义。然后 API 服务器通过监控机制通知 kubelet 容器组已被调度，然后目标节点上的 kubelet 服务看到容器组被调度到它的节点，它创建并运行容器组。

### 工作节点组件

工作节点运行 kubelet 代理，这允许控制平面接纳它们来处理负载。与控制平面类似，工作节点使用几个不同的组件来实现这一点。 以下部分描述了工作节点组件。

#### Kubelet

Kubelet 是一个运行在集群中每个节点上的代理，负责在工作节点上运行的所有事情。它确保容器在吊舱中运行。

kubelet服务的主要功能有：

* 通过在 API 服务器中创建节点资源来注册它正在运行的节点。
* 持续监控 API 服务器上调度到节点的容器组。
* 使用配置的容器运行时启动容器组的容器。
* 持续监控正在运行的容器，并将其状态、事件和资源消耗报告给 API 服务器。
* 运行容器存活探测，在探测失败时重启容器，当 API 服务器中删除容器组时终止（通知服务器容器组终止的消息）。

#### 服务代理

服务代理（kube-proxy）在每个节点上运行，确保一个容器组可以与另一个容器组通讯，一个节点可以与另一个节点对话，一个容器可以与另一个容器对话。它负责监视 API 服务器对服务和容器组定义的更改，以保持整个网络配置是最新的。当一项服务得到多个容器组的支持时，代理会在这些容器组之间执行负载平衡。

kube-proxy 之所以叫代理，是因为它最初实际上是一个代理服务器，用于接受连接并将它们代理到容器组。当前的实现是使用 iptables 规则将数据包重定向到随机选择的后端容器组，而无需通过实际的代理服务器。

关于它工作原理的高级视图：

* 当你创建一个服务时，会立即分配一个虚拟 IP 地址。
* API 服务器会通知在工作节点上运行的 kube-proxy 代理有一个新服务。
* 每个 kube-proxy 通过设置 iptables 规则使服务可寻址，确保截获每个服务 IP/端口对，并将目的地址修改为支持服务的一个容器组。
* 监控 API 服务器对服务或其端点对象的更改。

#### 容器运行时

容器运行时有两类：

* **较低级别的容器运行时：** 它们主要关注运行中的容器并为容器设置命名空间和<ruby> 控制组 <rt>  cgroup </rt></ruby>。
* **更高级别的容器运行时（容器引擎）：** 它们专注于格式、解包、管理、共享镜像以及为开发人员提供 API。

容器运行时负责：

* 如果容器镜像本地不存在，则从镜像仓库中提取。
* 将镜像解压到写时复制文件系统，所有容器层叠加创建一个合并的文件系统。
* 准备一个容器挂载点。
* 设置容器镜像的元数据，如覆盖命令、用户输入的入口命令，并设置 SECCOMP 规则，确保容器按预期运行。
* 通知内核将进程、网络和文件系统等隔离分配给容器。
* 通知内核分配一些资源限制，如 CPU 或内存限制。
* 将系统调用（syscall）传递给内核启动容器。
* 确保 SElinux/AppArmor 设置正确。

### 协同

系统级组件协同工作，确保 Kubernetes 集群的每个部分都能实现其目和执行其功能。当你深入编辑 [YAML 文件](https://www.redhat.com/sysadmin/yaml-beginners) 时，有时很难理解请求是如何在集群中通信的。现在你已经了解了各个部分是如何组合在一起的，你可以更好地理解 Kubernetes 内部发生了什么，这有助于诊断问题、维护健康的集群并优化你的工作流。

---

via: <https://opensource.com/article/22/2/kubernetes-architecture>

作者：[Nived Velayudhan](https://opensource.com/users/nivedv) 选题：[lujun9972](https://github.com/lujun9972) 译者：[MjSeven](https://github.com/MjSeven) 校对：[turbokernel](https://github.com/turbokernel)

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


硬核观察 #686 一家中国公司发布了首款 RISC-V 笔记本电脑？

Summary: • 一家中国公司发布了首款 RISC-V 笔记本电脑？ • 谷歌推出“高级 API 安全”服务 • Linux Mint 21 不准备用 oomd

# 硬核观察 #686 一家中国公司发布了首款 RISC-V 笔记本电脑？

### 一家中国公司发布了首款 RISC-V 笔记本电脑？

“RISC-V 国际”透露，一家名为“鉴释”的中国公司已经宣布了第一台面向开发者的 RISC-V 笔记本电脑，现已开放预订。据介绍，这个 “ROMA” 开发平台具有四核 RISC-V 处理器，高达 16GB 的内存，最大 256GB 的存储空间，并且可以运行大多数 RISC-V Linux 发行版。有趣的是，这家名为“[鉴释](https://xcalibyte.com.cn/en/)”的公司原本是一家开发静态代码分析工具的公司，这个名为“ROMA”的新产品也无法在其中英文网站找到任何链接，只有一个孤儿 [预定页](https://xcalibyte.com.cn/en/roma-preorder/)，而预定页中提供一个表格，没有确定的价格或预期供应量的信息、甚至连概念图都没有，并且还提到了一些 Web3 和 NFT 的事情。

>
> **[消息来源：Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=RISC-V-Dev-Laptop)**
>
>
>

>
> 老王点评：这真不是洋葱新闻？
>
>
>

### 谷歌推出“高级 API 安全”服务

谷歌宣布了“高级 API 安全”的预览版，这是一个新产品，将在谷歌云上推出，旨在检测与 API 有关的安全威胁。该服务可以识别 API 错误配置和检测恶意机器人。配置错误的 API 是造成 API 安全事件的主要原因之一。开发者们越来越依赖 API，但它们也越来越成为攻击的目标。根据一份 2018 年的报告，三分之二的组织正在向公众和合作伙伴暴露了不安全的 API。

>
> **[消息来源：Tech Crunch](https://techcrunch.com/2022/06/30/google-launches-advanced-api-security-to-protect-apis-from-growing-threats/)**
>
>
>

>
> 老王点评：一个配置不当的 API，造成的影响可能非常可怕，我想网络安全圈子对这个很有感受。
>
>
>

### Linux Mint 21 不准备用 oomd

Linux Mint 21 正在努力争取在今年夏天发布，它是建立在 Ubuntu 22.04 LTS 之上的。但因 Ubuntu 22.04 在 systemd-oomd 上广受批评，Linux Mint 决定不用这个服务来“屠杀”用户的应用。Canonical 公司的开发人员一直在努力修复这个问题，随着最新提出的 SRU 可能会有所改善。

>
> **[消息来源：Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=Linux-Mint-17-No-OOMD)**
>
>
>

>
> 老王点评：Mint 做了明智的选择。这根本不是 oomd 的策略问题，而是不经过用户同意，甚至用户没有反对的机会，就被杀了应用。
>
>
>


GNOME 43 中 Nautilus 文件管理器的 6 个新变化

Summary: GNOME 文件即将到来的变化改善了用户体验，让我们来看看其中的一些变化。

nattilus 3.4之后左侧就没有了树形结构，弃了

GNOME 文件即将到来的变化改善了用户体验，让我们来看看其中的一些变化。

# GNOME 43 中 Nautilus 文件管理器的 6 个新变化

>
> GNOME 文件即将到来的变化改善了用户体验，让我们来看看其中的一些变化。
>
>
>

我们离 GNOME 43 的发布还有几个月的时间，但是 GNOME 应用程序的开发活动正在如火如荼地进行。

例如，[GNOME Web 43 alpha 版本支持了扩展](https://news.itsfoss.com/gnome-web-extensions-dev/)。

同样，GNOME 文件管理器（Nautilus）也有一些令人兴奋的变化，特别是对于列表视图。

列表视图使用 [GtkColumnView](https://gitlab.gnome.org/GNOME/nautilus/-/commit/6708861ed174e2b2423df0500df9987cdaf2adc0) 部件重新实现，丢弃了 GtkTreeView，以便能够添加新功能。

一些完善了代码的变化包括：

### 1、拖动并选择文件

就像你在网格视图中通常所做的那样，你终于可以通过简单地拖动你的鼠标在列表视图中选择多个项目，来选择你想要的项目。

如果你没有注意到，每行之间也有一点间隔。虽然选择的动画还不是最流畅的，但它是一个正在进行的工作。

我试着用 peek 录制 GIF（在带有 Wayland 的 Fedora 上），但由于某些原因，它没有反应，可能与 alpha 版本有一些冲突。

### 2、鼠标悬停时高亮行

当你把鼠标悬停在上面的时候，没有行高亮是很不直观的。

现在，它做到了。只要把你的光标放在列表视图中的任何一个项目上，它就会被突出显示，如上图所示。

### 3、搜索一个文件时，列不会消失

当你用当前的 Nautilus 文件管理器搜索一个文件时，列的处理方式不是很好。你会失去某些细节信息，如文件大小。

在新的变化中，你仍然可以看到文件的大小、修改日期，以及给文件加星的能力。

通过这一改变，用户体验肯定会更好。

### 4、更好的紧凑视图

当你缩小文件管理器窗口的大小时，也处理的不是很好。你看不到文件扩展名的细节，而且列对变化没有反应。

在 GNOME 文件管理器 43 alpha 版本中，即使你缩小了窗口的大小以获得一个紧凑的视图，你仍然可以看到列，以及如上所示的文件扩展名。

### 5、新的文件上下文菜单

作为对 2022 年 GSoC（谷歌编程之夏）的贡献的一部分，一位开发者正专注于改善新文档功能的可发现性。

当你将某些文件添加到<ruby> 模板 <rt>  Templates </rt></ruby>目录中时，你可以在执行右键单击时在上下文菜单中找到这个 “<ruby> 新文档 <rt>  New Document </rt></ruby>” 选项。

在即将到来的更新中，这个选项将是开箱即用。即，更加易于使用。

另外，开发人员正在想办法改进添加模板的过程。你可以这篇在 [博文](https://ignapk.blogspot.com/2022/06/gsoc-2022-first-update-planning.html) 中更多了解他们的工作。

### 6、当你给一个文件加星时的动画

当你点击列表项右侧的星形图标时，你可以发现它在移动，让你知道你与该选项进行了互动。

### 总结

当然，我所提到的一切都处于开发阶段（alpha 版本）。在我们等待 beta 版本的时候，我们应该能清楚地了解到文件管理器的更多功能，以及事情是如何改进的。

你对 GNOME 43 有什么期待？请在下面的评论中告诉我们。

---

via: <https://news.itsfoss.com/gnome-files-43/>

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

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


Djinn：一个受 Jinja2 启发的代码生成器和模板语言

# Djinn：一个受 Jinja2 启发的代码生成器和模板语言

代码生成器是非常有用的工具。我有时使用 [jinja2](https://jinja2docs.readthedocs.io/en/stable/) 的命令行版本来生成高度冗余的配置文件和其他文本文件，但它在转换数据方面功能有限。显然，Jinja2 的作者有不同的想法，而我想要类似于 <ruby> 列表推导 <rt>  list comprehensions </rt></ruby> 或 D 语言的 <ruby> 可组合范围 <rt>  composable range </rt></ruby> 算法之类的东西。

我决定制作一个类似于 Jinja2 的工具，但让我可以通过使用范围算法转换数据来生成复杂的文件。这个想法非常简单：一个直接用 D 语言代码重写的模板语言。因为它 *就是* D 语言，它可以支持 D 语言所能做的一切。我想要一个独立的代码生成器，但是由于 [D 语言的 `mixin` 特性](https://dlang.org/articles/mixin.html)，同样的模板语言可以作为嵌入式模板语言工作（例如，Web 应用程序中的 HTML）。有关该技巧的更多信息，请参阅 [这篇](https://theartofmachinery.com/2017/12/31/compile_time_brainfuck.html) 关于在编译时使用 mixins 将 Brainfuck 转换为 D 和机器代码的文章。

像往常一样，[源码在 GitLab 上](https://gitlab.com/sarneaud/djinn)。[这篇文章中的例子也可以在这里找到](https://gitlab.com/sarneaud/djinn/-/tree/v0.1.0/examples)。

### Hello world 示例

这是一个演示这个想法的例子：

```
Hello [= retro("dlrow") ]!
[: enum one = 1; :]
1 + 1 = [= one + one ]

```

`[= some_expression ]` 类似于 Jinja2 中的 `{{ some_expression }}`，它在输出中呈现一个值。`[: some_statement; :]` 类似于 `{% some_statement %}` ，用于执行完整的代码语句。我更改了语法，因为 D 也大量使用花括号，并且将两者混合使模板难以阅读（还有一些特殊的非 D 指令，比如 `include`，它们被包裹在 `[<` 和 `>]` 中）。

如果你将上面的内容保存到一个名为 `hello.txt.dj` 的文件中并运行 `djinn` 命令行工具，你会得到一个名为 `hello.txt` 的文件，其中包含你可能猜到的内容：

```
Hello world!
1 + 1 = 2

```

如果你使用过 Jinja2，你可能想知道第二行发生了什么。Djinn 有一个简化格式化和空格处理的特殊规则：如果源代码行包含 `[:` 语句或 `[<` 指令但不包含任何非空格输出，则整行都会被忽略输出。空行则仍会原样呈现。

### 生成数据

好的，现在来讲一些更实用的东西：生成 CSV 数据。

```
x,f(x)
[: import std.mathspecial;
foreach (x; iota(-1.0, 1.0, 0.1)) :]
[= "%0.1f,%g", x, normalDistribution(x) ]

```

一个 `[=` 和 `]` 对可以包含多个用逗号分隔的表达式。如果第一个表达式是一个由双引号包裹的字符串，则会被解释为 [格式化字符串](https://dlang.org/phobos/std_format.html#format-string)。下面是输出结果：

```
x,f(x)
-1.0,0.158655
-0.9,0.18406
-0.8,0.211855
-0.7,0.241964
-0.6,0.274253
-0.5,0.308538
-0.4,0.344578
-0.3,0.382089
-0.2,0.42074
-0.1,0.460172
0.0,0.5
0.1,0.539828
0.2,0.57926
0.3,0.617911
0.4,0.655422
0.5,0.691462
0.6,0.725747
0.7,0.758036
0.8,0.788145
0.9,0.81594

```

### 制作图片

这个例子展示了一个图片的生成过程。[经典的 Netpbm 图像库定义了一堆图像格式](http://netpbm.sourceforge.net/doc/#formats)，其中一些是基于文本的。例如，这是一个 3 x 3 向量的图像：

```
P2 # PGM 格式标识
3 3 # 宽和高
7 # 代表纯白色的值（0 代表黑色）
7 0 7
0 0 0
7 0 7

```

你可以将上述文本保存到名为 `cross.pgm` 之类的文件中，很多图像工具都知道如何解析它。下面是一些 Djinn 代码，它以相同的格式生成 [Mandelbrot 集](https://en.wikipedia.org/wiki/Mandelbrot_set) 分形：

```
[:
import std.complex;
enum W = 640;
enum H = 480;
enum kMaxIter = 20;
ubyte mb(uint x, uint y)
{
    const c = complex(3.0 * (x - W / 1.5) / W, 2.0 * (y - H / 2.0) / H);
    auto z = complex(0.0);
    ubyte ret = kMaxIter;
    while (abs(z) <= 2 && --ret) z = z * z + c;
    return ret;
}
:]
P2
[= W ] [= H ]
[= kMaxIter ]
[: foreach (y; 0..H) :]
[= "%(%s %)", iota(W).map!(x => mb(x, y)) ]

```

生成的文件大约为 800 kB，但它可以很好地被压缩为 PNG：

```
$ # 使用 GraphicsMagick 进行转换
$ gm convert mandelbrot.pgm mandelbrot.png

```

结果如下：

### 解决谜题

这里有一个谜题：

一个 5 行 5 列的网格需要用 1 到 5 的数字填充，每个数字在每一行中限使用一次，在每列中限使用一次（即，制作一个 5 行 5 列的<ruby> 拉丁方格 <rt>  Latin square </rt></ruby>）。相邻单元格中的数字还必须满足所有 `>` 大于号表示的不等式。

[几个月前我使用了 <ruby> 线性规划 <rt>  linear programming </rt></ruby>（LP）](https://theartofmachinery.com/2020/05/21/glico_weighted_rock_paper_scissors.html)。线性规划问题是具有线性约束的连续变量系统。这次我将使用<ruby> 混合整数线性规划 <rt>  mixed integer linear programming </rt></ruby>（MILP），它通过允许整数约束变量来归纳 LP。事实证明，这足以成为 NP 完备的，而 MILP 恰好可以很好地模拟这个谜题。

在上一篇文章中，我使用 Julia 库 JuMP 来帮助解决这个问题。这次我将使用 [CPLEX：基于文本的格式](http://lpsolve.sourceforge.net/5.0/CPLEX-format.htm)，它受到多个 LP 和 MILP 求解器的支持（如果需要，可以通过现成的工具轻松转换为其他格式）。这是上一篇文章中 CPLEX 格式的 LP：

```
Minimize
  obj: v
Subject To
  ptotal: pr + pp + ps = 1
  rock: 4 ps - 5 pp - v <= 0
  paper: 5 pr - 8 ps - v <= 0
  scissors: 8 pp - 4 pr - v <= 0
Bounds
  0 <= pr <= 1
  0 <= pp <= 1
  0 <= ps <= 1
End

```

CPLEX 格式易于阅读，但复杂度高的问题需要大量变量和约束来建模，这使得手工编码既痛苦又容易出错。有一些特定领域的语言，例如 [ZIMPL](https://zimpl.zib.de/)，用于以高级方式描述 MILP 和 LP。对于许多问题来说，它们非常酷，但最终它们不如具有良好库（如 JuMP）支持的通用语言或使用 D 语言的代码生成器那样富有表现力。

我将使用两组变量来模拟这个谜题：`v_{r,c}` 和 `i_{r,c,v}`。`v_{r,c}` 将保存 r 行 c 列单元格的值（从 1 到 5）。`i_{r,c,v}` 是一个二进制指示器，如果 r 行 c 列的单元格的值是 v，则该指示器值为 1，否则为 0。这两组变量是网格的冗余表示，但第一种表示更容易对不等式约束进行建模，而第二种表示更容易对唯一性约束进行建模。我只需要添加一些额外的约束来强制这两个表示是一致的。但首先，让我们从每个单元格必须只有一个值的基本约束开始。从数学上讲，这意味着给定行和列的所有指示器都必须为 0，但只有一个值为 1 的例外。这可以通过以下等式强制约束：

```
[i_{r,c,1} + i_{r,c,2} + i_{r,c,3} + i_{r,c,4} + i_{r,c,5} = 1]

```

可以使用以下 Djinn 代码生成对所有行和列的 CPLEX 约束：

```
\ 单元格只有一个值
[:
foreach (r; iota(N))
foreach (c; iota(N))
:]
    [= "%-(%s + %)", vs.map!(v => ivar(r, c, v)) ] = 1
[::]

```

`ivar()` 是一个辅助函数，它为我们提供变量名为 `i` 的字符串标识符，而 `vs` 存储从 1 到 5 的数字以方便使用。行和列内唯一性的约束完全相同，但在 `i` 的其他两个维度上迭代。

为了使变量组 `i` 与变量组 `v` 保持一致，我们需要如下约束（请记住，变量组 `i` 中只有一个元素的值是非零的）：

```
[i_{r,c,1} + 2i_{r,c,2} + 3i_{r,c,3} + 4i_{r,c,4} + 5i_{r,c,5} = v_{r,c}]

```

CPLEX 要求所有变量都位于左侧，因此 Djinn 代码如下所示：

```
\ 连接变量组 i 和变量组 v
[:
foreach (r; iota(N))
foreach (c; iota(N))
:]
    [= "%-(%s + %)", vs.map!(v => text(v, ' ', ivar(r, c, v))) ] - [= vvar(r,c) ] = 0
[::]

```

不等符号相邻的和左下角值为为 4 单元格的约束写起来都很简单。剩下的便是将指示器变量声明为二进制，并为变量组 `v` 设置边界。加上变量的边界，总共有 150 个变量和 111 个约束 [你可以在仓库中看到完整的代码](https://gitlab.com/sarneaud/djinn/-/tree/v0.1.0/examples/inequality.lp.dj)。

[GNU 线性规划工具集](https://www.gnu.org/software/glpk/) 有一个命令行工具可以解决这个 CPLEX MILP。不幸的是，它的输出是一个包含了所有内容的体积很大的转储，所以我使用 awk 命令来提取需要的内容：

```
$ time glpsol --lp inequality.lp -o /dev/stdout | awk '/v[0-9][0-9]/ { print $2, $4 }' | sort
v00 1
v01 3
v02 2
v03 5
v04 4
v10 2
v11 5
v12 4
v13 1
v14 3
v20 3
v21 1
v22 5
v23 4
v24 2
v30 5
v31 4
v32 3
v33 2
v34 1
v40 4
v41 2
v42 1
v43 3
v44 5

real    0m0.114s
user    0m0.106s
sys     0m0.005s

```

这是在原始网格中写出的解决方案：

这些例子只是用来玩的，但我相信你已经明白了。顺便说一下，Djinn 代码仓库的 `README.md` 文件本身是使用 Djinn 模板生成的。

正如我所说，Djinn 也可以用作嵌入在 D 语言代码中的编译期模板语言。我最初只是想要一个代码生成器，得益于 D 语言的元编程功能，这算是一个额外获得的功能。

---

via: <https://theartofmachinery.com/2021/01/01/djinn.html>

作者：[Simon Arneaud](https://theartofmachinery.com) 选题：[lujun9972](https://github.com/lujun9972) 译者：[hanszhao80](https://github.com/hanszhao80) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #687 下一代 GTK 5 可能要放弃 X11 支持

Summary: • 下一代 GTK 5 可能要放弃 X11 支持 • 大学拿回了支付的比特币赎金，发现还赚了 • Meta 将关闭加密货币项目

一个小建议，在文章的标题下面，注明文章的发表日期。

桌面版有的，手机版考虑布局就隐藏了。我看看怎么显示比较好。

# 硬核观察 #687 下一代 GTK 5 可能要放弃 X11 支持

### 下一代 GTK 5 可能要放弃 X11 支持

GTK 4 才推出没多久，而下一代的 GTK 5 可能还要很多年，但 GNOME 开发者们已经开始考虑在 GTK 5 剔除对 X11 的后端支持。有开发者认为，X11 迟迟没有变得更好，其开发几乎陷入停顿。而与此同时，Wayland 却已经变得广泛使用，GTK 也早已开始转向以 Wayland 功能为主的 API 设计。当然，开发者的这些讨论仅针对 GTK5，而不影响 GTK4 的更新。

>
> **[消息来源：Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=GTK5-Might-Drop-X11)**
>
>
>

>
> 老王点评：X11 是 1987 年发布的 X 窗口系统的第 11 个版本，但是目前的参考实现是 10 年前推出的 7.7 版本。它的历史包袱太沉重了，趁早放弃，并让应用都迁移到 Wayland 才是正路。
>
>
>

### 大学拿回了支付的比特币赎金，发现还赚了

2019 年荷兰一所大学遭到勒索软件攻击，由于备份系统也被锁定了，大学最后同意支付价值 20 万欧元的比特币赎金。荷兰警方在随后的犯罪调查中跟踪到了一个洗钱账号，其中有大约价值 4 万欧元的部分比特币赎金，并在两年后将这些比特币归还给了大学。有趣的是，这些比特币现在已价值 50 万欧元。虽然没有拿回全部的赎金，但归还的比特币价值相比支付的赎金已经翻了一倍多。该大学表示这笔钱将用于帮助经济拮据的学生。

>
> **[消息来源：DW](https://www.dw.com/en/dutch-university-wins-big-after-bitcoin-ransom-returned/a-62337229)**
>
>
>

>
> 老王点评：这算不算是来自勒索攻击者的“被动投资”，就像门头沟事件后，很多人假如即便只能拿回当时的一小部分 BTC 也赚了很多。
>
>
>

### Meta 将关闭加密货币项目

Meta（Facebook）的加密货币 Diem（前称 Libra）将于 9 月 1 日停止运作。Facebook 及其盟友是在 2019 年宣布了稳定币项目 Libra，计划在 2020 年推出。但该项目面临了世界各地监管机构的压力，主要盟友陆续退出。负责该加密货币计划的高管在 2021 年离开了公司，相关资产被出售，而 Meta 的兴趣也转向了元宇宙。

>
> **[消息来源：CNET](https://www.cnet.com/personal-finance/crypto/metas-novi-service-to-be-phased-out-what-you-need-to-know/)**
>
>
>

>
> 老王点评：曾经被视为革命性的 Facebook 加密货币项目，终于走到了终点。有时候你得承认，步子太大也是危险。
>
>
>


10 大必备 Ubuntu 应用：基本篇

Summary: 本文列出了 2022 年可以用于不同情况的 10 个 Ubuntu 基本应用。

我把另外两个part看完了。

我把另外两个part看完了。

联系做个替换windows常用软件的介绍

欢迎访问 windows.cn [Doge]

说是必备完全不为过了，这十个软件在我的ubuntu中有八个是已经安装并经常使用的

本文列出了 2022 年可以用于不同情况的 10 个 Ubuntu 基本应用。

# 10 大必备 Ubuntu 应用：基本篇

>
> 本文列出了 2022 年可以用于不同情况的 10 个 Ubuntu 基本应用。
>
>
>

不管你是偶尔使用的用户、学生、老师，还是科学家、开发人员和创意工作者，在工作上你需要各种各样的应用程序。Linux 生态系统有数以千计的应用程序，它们分散在各个角落，几乎可以满足各种需求。而包括 Ubuntu 在内的大多数主流 Linux 发行版，默认都只提供了基本的应用程序。

在这个五篇系列文章的第一篇中，我们列出了一些每个人都用的上的专门应用。

### 1、GNOME 优化工具

如果你在使用 Ubuntu GNOME 版，<ruby> GNOME 优化工具 <rt>  GNOME Tweak Tool </rt></ruby>是你必备的实用工具。使用这个工具来定制你的桌面，你可以改变字体、缩放比例、主题、光标和许多其他选项。默认的设置窗口现在没有列出所有这些选项。

此外，你也能用该应用改变窗口装饰、标题栏、标题栏按钮以及开机启动项。

你可以使用应用商店搜索 “Tweaks” 来安装它，或者通过下列终端的命令来安装：

```
sudo apt install gnome-tweaks

```

### 2、Steam

由于 Valve 公司和相关社区的贡献，在 Linux 上玩游戏不再困难。[Steam](https://store.steampowered.com/) 是 Valve 公司开发的电子游戏服务的前端平台，你可以通过 Steam 在 Ubuntu 上获取最新的游戏版本。此外，Steam 客户端提供反外挂监测、自动更新，和支持带有流媒体功能的社交对话。

如果你是一个 Linux 游戏玩家，Steam 是常用的客户端，你可以用下面的命令来安装。此外，你可以在应用商店中搜索 “Steam Installer” 并使用 [Flatpak](https://flathub.org/apps/details/com.valvesoftware.Steam) 或 [Snap](https://snapcraft.io/steam) 进行安装。

```
sudo apt install steam

```

### 3、Peek

在我看来，[Peek](https://github.com/phw/peek) 是一款被低估的应用。它是一个 GIF 动画录像机，对各种工作场景都非常有用。这是一款非常强大的应用程序，它适合在 Ubuntu 或任何 Linux 发行版中使用。此外，Peek 带有诸如录制区域选择、倒计时、GIF/MP4/WebM 支持等选项。它的后端使用的是 ffmpeg 。

在应用商店中搜索 “peek” 或者在命令行输入以下命令来安装这款优秀的应用。

```
sudo apt install peek

```

### 4、新立得

<ruby>   新立得  <rt>  Synaptic </rt></ruby> 是一款杰出的软件包管理器，可以帮助你以传统方式添加和移除软件包。有经验的 Linux 用户知道它的特性以及灵活性。你可以在各种库中搜索软件包、验证依赖性并进行安装。

如果你经常安装和卸载软件包，这是一个完美的应用程序。你可以通过以下命令或在应用商店中搜索 “synaptic” 来安装它。

```
sudo apt install synaptic

```

### 5、GDebi

正如上面提到的新立得，你也可以试试 [GDebi](https://launchpad.net/gdebi) 软件包安装程序，它带有几种功能。GDebi 软件包安装程序是用于安装外部 deb 文件的命令行实用程序。此外，GDebi 安装 .deb 包速度更快、效率更高，可以快速解决依赖关系并为你下载它们。

它是 Ubuntu 上安装 .deb 包最好的终端程序之一，你可以用以下命令安装它。安装后，你可以运行 `gdebi <你的 .deb 软件包路径>` 来安装任何软件包。

```
sudo apt install gdebi

```

### 6、Geary

不管从事什么工作，你需要一个 Ubuntu 桌面的本地 [邮箱客户端](https://www.debugpoint.com/2019/06/best-email-client-linux-windows/)。电子邮件对很多人来说仍然是有意义和有价值的。尽管 Ubuntu 默认带有最好的 Thunderbird 电子邮件客户端，但你也可以试试其它的电子邮件客户端应用，或许可以给你带来更好体验。

[Geary](https://wiki.gnome.org/Apps/Geary) 拥有友好而简洁的用户界面，能够让你更简单的设置多个邮件账号。此外， Geary 也带来了会话功能、更快的搜索、撰写富文本电子邮件以及其他功能，这使它成为 Linux 桌面的“首选”电子邮件客户端。

你可以使用如下命令或者在应用商店中搜索 “Geary” 来安装 Geary 。也可以通过 [Flatpak](https://flathub.org/apps/details/org.gnome.Geary) 获得。

```
sudo apt install geary

```

### 7. 谷歌 Chrome 浏览器

虽然很多人担心隐私以及跟踪，但谷歌 Chrome 仍然是浏览器市场的领头者。Ubuntu 默认提供了 Firefox 浏览器，但随着近期火狐的 Snap 事件，你可能想换到其它浏览器。

如果你与谷歌生态系统密切相关，并希望在流媒体和浏览方面获得更好的网络体验，你可能会考虑使用谷歌 Chrome。但是，如果你担心隐私和跟踪，你可以选择其他一些浏览器，例如 Brave 或 Vivaldi。

你可以从下面链接中下载 .deb 包来安装谷歌 Chrome 安装器。安装后，你可以打开应用商店来安装它。

>
> **[下载谷歌 Chrome](https://www.google.com/chrome)**
>
>
>

### 8、Kdenlive

[Kdenlive](https://kdenlive.org/) 是 Linux 上最好的自由开源的视频编辑器之一。 Kdenlive 设计良好的用户界面易于使用，并且带来了各种功能。使用 Kdenlive，你可以简单的导入视频片段，更改画布分辨率，并在编辑后导出为多种格式。时间线和工具让只需你单击一个按钮即可剪切和添加标题、转场和效果。此外，如果你是视频编辑新手，学习起来也非常容易。

Kdenlive 是一个非常活跃的项目，每个主要版本都会带有更多先进的功能。这是 2022 年必不可少的 Ubuntu 应用程序之一，如果你想与其它 [免费视频编辑器](https://www.debugpoint.com/2019/09/best-free-video-editors-linux-ubuntu/) 进行比较，你可以看看此列表。

使用以下命令安装 Kdenlive 很简单。除此，你可以用 [Flatpak](https://flathub.org/apps/details/org.kde.kdenlive) 或 [Snap](https://snapcraft.io/kdenlive) 版本来安装。

```
sudo apt install kdenlive

```

### 9. Spectacle

你可能尝试过很多截屏应用。但在我看来，[Spectacle](https://apps.kde.org/spectacle/) 或许是最好的、也是被低估了的一款应用。Spectacle 是一款 KDE 应用程序，速度超快，非常适合需要截屏并使用的任何工作需求。你可以在自定义的延时后截取整个桌面、部分桌面或窗口。如果需要，窗口截屏还可以选择截取窗口装饰和光标。Spectacle 还为你提供了一个内置的注释功能，可以涂鸦、书写和标记你的图像。

此外，你还可以直接从其主窗口在 GIMP 或任何图像编辑器中打开图像，并将其导出。此外，自动保存、将截屏复制到剪贴板以及共享到社交媒体是 Spectacle 的一些独特功能。

在我看来，它是一个带有内置屏幕录像机的完整截图工具。

你可以用以下命令或者从 [Snap](https://snapcraft.io/spectacle) 中安装 Spectacle。

```
sudo apt install kde-spectacle

```

### 10. VLC 媒体播放器

Ubuntu Linux 的 GNOME 版默认带有可以播放视频文件的 GNOME 视频应用程序。但由于缺乏解码功能，GNOME 视频无法播放多种视频格式。这就是为什么你应该考虑一下 [VLC 媒体播放器](https://www.videolan.org/vlc) —— 它是 Linux 桌面上的“首选”媒体播放器。

VLC 确实可以播放任何格式。它甚至可以帮助你播放数据不完整的损坏视频文件。它是强大的媒体播放器之一，你可以使用下面的命令来安装。

此外，如果你偏向于另一种安装方式，你可以通过 [Flatpak](https://flathub.org/apps/details/org.videolan.VLC) 或者 [Snap](https://snapcraft.io/vlc) 安装。

```
sudo apt install vlc

```

### 结语

2022 年必备的 Ubuntu 应用程序系列的第 1 部分到此结束。通过以上信息，我希望你可以选择一些应用供你的日常使用。在下面的评论框中告诉我你更喜欢此列表中的哪些应用程序。

最后，请继续关注本 Ubuntu 应用程序系列的第 2 部分。

---

via: <https://www.debugpoint.com/2022/05/essential-ubuntu-apps-2022-part-1/>

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

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


Kuro：非官方的微软 To-Do Linux 桌面客户端

# Kuro：非官方的微软 To-Do Linux 桌面客户端

>
> 微软说他们热爱 Linux 和开源，但我们仍然没有得到对其许多产品的 Linux 原生支持。
>
>
>

虽然他们可能在努力增加更多的支持，比如 [可以在 Linux 上安装微软 Edge 浏览器](https://itsfoss.com/microsoft-edge-linux/)，但对于一个价值几万亿美元的公司来说，这并不出色。

同样，微软的 To-Do 服务也是一个受欢迎的服务，它取代了 2020 年关闭的 Wunderlist。

如果你不知道的话，我们有很多 [可用于 Linux 的待办事项列表应用](https://itsfoss.com/to-do-list-apps-linux/)。因此，如果你想脱离微软 To-Do，你有选择。

微软 To-Do 是一个基于云的任务管理应用，让你从手机、桌面和网络组织你的任务。它可以在 Windows、Mac 和 Android 上下载。

那么，如果你不愿意使用网页浏览器而使用一个单独的应用，你在 Linux 上能做什么呢？

Kuro 派上用场了。

### Kuro：非官方的开源微软 To-Do 应用

Kuro 是一个非官方的开源应用，它为你提供了微软 To-Do 在 Linux 上的桌面体验和一些额外的功能。

它是 Ao 的一个分叉，Ao 是一个开源项目，逐渐成为它的解决方案。不幸的是，它不再积极维护了。所以，我遇到了一个似乎可以工作的新复刻。

Kuro 提供了一些额外的功能，可以让你在应用中切换主题，启用全局快捷方式等。

请注意，这个应用是相当新的，但有一个稳定版本可以试用。此外，开发者计划在不久的将来增加更多的主题和功能。

### Kuro 的功能

如果你倾向于使用微软的服务（如 Outlook），它的 To-Do 应用应该是组织你的任务的一个完美选择。你甚至可以标记电子邮件以创建任务。

使用 Kuro 桌面客户端，你可以得到一些可配置的功能，包括：

* 能够在启动时启动该程序。
* 获得一个系统托盘图标，以快速创建一个任务，搜索，或检查当天的可用列表。
* 启用全局快捷键。
* 切换可用的主题（深褐色、德古拉、黑色、深色）。
* 切换自动夜间模式，如果你不想不断改变主题。
* 隐藏托盘图标，如果你不需要它。
* 根据需要定制字体大小。

除了一些功能外，你还可以进入某些设置来启用/禁用电子邮件通知、删除前确认等，对待办事项应用体验的进行更多的控制。

总的来说，体验并不糟糕，但我在几分钟内注意到用户界面上有一些奇怪的图形问题。我不确定这是否是一个已知的问题。

### 在 Linux 中安装 Kuro

你可以从它的 [GitHub 发布页面](https://github.com/davidsmorais/kuro/releases) 找到基于 Ubuntu 的发行版的 .deb 包。

此外，你可以从 [Snap 商店](https://snapcraft.io/kuro-desktop) 中在你选择的任何 Linux 发行版上安装它。该软件包也可在 Arch Linux 发行版的 [AUR](https://itsfoss.com/aur-arch-linux/) 中获取。

开发者还提到，正在开发一个 Flatpak 软件包。所以，你可以关注它的 [GitHub 页面](https://github.com/davidsmorais/kuro)以了解更多相关信息。

>
> **[Kuro](https://github.com/davidsmorais/kuro)**
>
>
>

你已经试过它了吗？你知道有什么更好的微软 To-Do 客户端用于 Linux 吗？请在下面的评论中告诉我。

---

via: <https://itsfoss.com/kuro-to-do-app/>

作者：[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/) 荣誉推出


硬核观察 #688 Debian Linux 9 结束了五年的长期支持

Summary: • Debian Linux 9 结束了五年的长期支持 • 传统数据安全工具大多无法抵御勒索软件攻击 • 西数表示硬盘容量依然很重要

# 硬核观察 #688 Debian Linux 9 结束了五年的长期支持

### Debian Linux 9 结束了五年的长期支持

Debian 长期支持团队近日宣布：Debian Linux 9 系列的五年支持周期已经结束。Debian 9 发布于 2017 年 6 月 17 日，当时官方将该版本的 LTS 支持延长到了五年，以供有特定需要的人们使用。Debian Linux 10 是目前支持的旧稳定版本，还有两年维护支持，直到 2024 年 6 月 30 日。而最新的是 Debian Linux 11 。

>
> **[消息来源：Debian](https://lists.debian.org/debian-lts-announce/2022/07/msg00002.html)**
>
>
>

>
> 老王点评：一个纯由社区驱动的发行版都能支持 5 年，并被用在生产环境中，而很多商业公司支持的 Linux 发行版都不敢承诺。
>
>
>

### 传统数据安全工具大多无法抵御勒索软件攻击

根据最新发布的《数据渗透和勒索状况报告》，虽然超过 70% 的企业拥有一套现有的预防、检测和回溯解决方案，但近 40% 的企业在过去一年中仍然受到了勒索软件攻击。研究结果表明，传统的数据安全工具，如安全备份和恢复工具、提供静态和传输中加密的解决方案、标记化和数据屏蔽等，在 60% 的时间里未能保护企业的数据免受勒索软件威胁。它们的问题不在于它们没有强大的安全措施，而在于攻击者可以通过窃取凭证来实现对关键数据资产的特权访问，从而避开这些控制。

>
> **[消息来源：Venture Beat](https://venturebeat.com/2022/06/30/data-security-ransomware/)**
>
>
>

>
> 老王点评：可以预见，数据勒索这一攻击方式必然会愈演愈烈。
>
>
>

### 西数表示硬盘容量依然很重要

西数负责人在采访中谈到了对硬盘市场的看法，他也承认机械硬盘现在没有被出现在 MacBook、Windows 或者 Chromebook 等设备中，在客户端设备中存在感下降，但是放眼数据中心市场，情况就不一样了。在这个领域，闪存存储只占 5-15% 份额，剩余的 85%-95% 存储都是靠机械硬盘，还有一些是磁带设备。IDC 预测全球数据生产量从 2018 年的 33ZB 将增长到 2025 年的 176ZB，企业用户每年的数据容量增长将达到 30%。

>
> **[消息来源：Next Platform](https://www.nextplatform.com/2022/07/01/hard-drives-are-the-mark-twain-of-technology/)**
>
>
>

>
> 老王点评：确实，要说可靠性和大容量，还是机械硬盘比较好。但是感觉硬盘容量的增长赶不上数据量的增长速度。
>
>
>


有了扩展，GNOME Web 正逐渐成为 Linux 桌面上一个有吸引力的选择

Summary: GNOME Web 正在打磨成一个完美的 Linux 浏览器。你认同吗？

GNOME Web 正在打磨成一个完美的 Linux 浏览器。你认同吗？

# 有了扩展，GNOME Web 正逐渐成为 Linux 桌面上一个有吸引力的选择

>
> GNOME Web 正在打磨成一个完美的 Linux 浏览器。你认同吗？
>
>
>

GNOME Web（Epiphany）是 [可供 Linux 用户使用的最佳浏览器](https://itsfoss.com/best-browsers-ubuntu-linux/) 之一。

它提供了简约且独特的用户体验。

不幸的是，这种独特性并没有激励用户把它作为主力网页浏览器。

但是，看起来这种情况很快就会改变……

根据其中一位开发者（Patrick，网名 TingPing）透露，GNOME Web 终于添加了对 WebExtensions 的支持。

它将会是 GNOME 43 新功能的一部分。

### 带有 WebExtensions 的 GNOME Web

一个浏览器，外观简约，还支持扩展，夫复何求啊！

我不知道你怎么想，但我对于 GNOME Web 不支持扩展这件事，一直耿耿于怀。

所以，这个消息真的让我很兴奋！

目前，这只是对 **Epiphany 43.alpha** 版本的实验性支持。因此，你只能使用 GNOME Web 的 beta/alpha 构建来测试它。

开发者提到：

>
> Epiphany 43.alpha 支持上述的基本结构。我们目前正在根据 Firefox 的 ManifestV2 API 来建模行为，同时也尽可能与 Chrome 扩展程序保持兼容。未来，我们计划在保留 V2 的同时，支持 ManifestV3。
>
>
>

你必须在终端中显式启用扩展支持，然后下载、添加扩展的 **.xpi** 文件，以安装浏览器扩展。

你需要访问 [Mozilla 的 Firefox 附加组件门户网站](https://addons.mozilla.org/en-US/firefox/extensions/) 来获得扩展程序。

你可以安装 Epiphany（GNOME Web）的最新开发版本，并使用以下命令启用扩展：

```
flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
flatpak install gnome-nightly org.gnome.Epiphany.Devel
flatpak run --command=gsettings org.gnome.Epiphany.Devel set org.gnome.Epiphany.web:/org/gnome/epiphany/web/ enable-webextensions true

```

请注意，它仍在活跃开发中，可能无法按预期工作。在第一次尝试时，你可能需要密切关注终端是否有错误，如果有的话，要先解决它才行。

如果你想了解更多技术细节，你可以阅读 [TingPing 的博文](https://blog.tingping.se/2022/06/29/WebExtensions-Epiphany.html)。

### 你的下一个主力浏览器？

与 Linux 上的基于 Firefox 和 Chrome/Chromium 的浏览器相比，GNOME Web 是一个的完全独特的替代品。（LCTT 译注：GNOME Web 基于 WebKit 引擎。）

那么，随着即将推出的扩展支持，你愿意尝试将 GNOME Web 作为你的主力浏览器吗？

*你如何看待 GNOME Web（或 Epiphany）中的改进呢？请在下方评论区中告诉我们吧！*

---

via: <https://news.itsfoss.com/gnome-web-extensions-dev/>

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

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


价格劝退系列？

# 星际战机：配备 4K 10 位 IPS 显示屏的 Linux 笔记本电脑即将问世

>
> “星际战机”是星空实验室即将推出的一款 Linux 笔记本电脑。他们正在最后确定生产细节，同时透露了一些关键的亮点。
>
>
>

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

我们已经有许多来自星空实验室、TUXEDO 等制造商的 Linux 专用笔记本电脑。

然而，其中只有少数几家专注于提供一个超棒的显示屏。

例如，[TUXEDO 的 Infinitybook Pro 14](https://news.itsfoss.com/infinitybook-pro-14-3k/) 带有 3K 显示屏，而且，该笔记本电脑确实不错。

现在，看起来 [星空实验室](http://starlabs.systems) 将为其即将推出的 “星际战机” 笔记本电脑配备 15.6 英寸 4K 显示屏。他们在 [推特](https://twitter.com/starlabsltd/status/1542908391793692672) 上分享了初步信息，提到他们正在敲定生产细节。

### 关于星际战机我们目前所知道的情况

这款笔记本电脑将采用 45W 供电的英特尔 / AMD 处理器，它将有英特尔 / AMD 两种变体可用。

你还将可以选择高达 64GB 的内存和 2TB 的存储。可以说，对于那些想为自己的 Linux 笔记本电脑提高规格的用户来说，这应该是一个强大的机器。

当然，它的关键亮点是显示屏。它将采用 4K 10 位哑光 IPS 显示屏。

该公司提到，该显示屏的成本要高于其 StarLite 笔记本电脑。

但是，这会是一个有吸引力的产品吗？许多采用高分辨率显示屏或 OLED 面板的笔记本电脑在电池时长方面表现不佳。不仅仅是 Linux 笔记本电脑。

那么，“星际战机”会成为该领域的一个有竞争力的竞争者吗？

星空实验室在一条推文中提到，他们估计电池时长约为 8-14 小时，这取决于配置。当然，这也取决于你的使用情况。

该公司还澄清说，这款笔记本电脑可以使用 Coreboot，但它不会是一个完全采用自由软件的项目。其他一些值得注意的地方还有：

* 该笔记本电脑将具有 [LVFS](https://fwupd.org/) 支持。
* 英特尔型号将提供第 4 代固态硬盘。AMD 型号将只限于第 3 代固态硬盘。

如图片所示，它可能安装了 elementaryOS 6.1。然而，你也可以预期它提供 Ubuntu 22.04 LTS。

那么，你对星空实验室的这架“星际战机”有何看法？当它上市时，这将是你的下一台笔记本电脑吗？

在下面的评论区分享你的想法。

---

via: <https://news.itsfoss.com/starfighter-laptop-reveal/>

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

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


在 Linux 中找到你的路由器的 IP 地址（默认网关）

Summary: 我说的是默认网关 IP，你的 Linux 桌面所连接的地址。

这也能水一篇博文吗？ 你们编辑审核对博文深度没有要求吗？

来自湖北武汉的 Chrome Mobile iOS 103.0|iOS 15.5 用户

真水！

白开水 ~~~

我说的是默认网关 IP，你的 Linux 桌面所连接的地址。

# 在 Linux 中找到你的路由器的 IP 地址（默认网关）

你可能已经知道如何在 Linux 中获得你的系统的 IP 地址。

但是你怎么知道你的路由器的 IP 地址呢？

我说的不是你可以通过连接到 “[Show My IP](https://www.showmyip.com/)” 这样的网站或简单地在 [DuckDuckGo](https://itsfoss.com/duckduckgo-easter-eggs/) 中 [搜索“what is my ip”](https://duckduckgo.com/?q=what+is+my+ip&t=h_&ia=answer) 获得的公网 IP。

我说的是默认网关 IP，你的 Linux 桌面所连接的地址。

你为什么需要它？嗯，如果你需要改变你的 Wi-Fi/网络的 SSID、密码或其他配置，你必须连接到它。简单的方法是在网页浏览器中输入路由器的 IP 地址，然后使用路由器的用户名和密码。

虽然我不能帮助你获得路由器的用户名和密码，但我肯定可以告诉你如何获得它的 IP。

一如既往，我将展示 GUI 和命令行两种方法。

### 方法 1：在 Linux 中使用 GUI 获取路由器的 IP 地址

这其实很简单。我在这里使用的是 Ubuntu 的 GNOME 桌面。如果你使用一些 [其他桌面环境](https://itsfoss.com/best-linux-desktop-environments/)，截图可能会有所不同。

打开“<ruby> 系统设置 <rt>  System Settings </rt></ruby>”：

现在进入 Wi-Fi 或“<ruby> 网络 <rt>  Network </rt></ruby>”（如果你使用的是有线的以太网连接）。在这里，点击你当前使用的网络旁边的小设置符号。

它将打开一个新窗口，里面有关于你的连接的一些细节，如 IP 地址、DNS 和 [Mac 地址](https://itsfoss.com/change-mac-address-linux/)。你还可以在“<ruby> 安全 <rt>  security </rt></ruby>”标签下看到 [保存的 Wi-Fi 密码](https://itsfoss.com/how-to-find-saved-wireless-wifi-passwords-ubuntu/)。

你还会看到一个名为“<ruby> 默认路由 <rt>  Default Route </rt></ruby>”的条目。这就是你要找的东西。你的路由器的 IP 地址。

你的系统和网络上的所有其他设备都使用这个 IP 地址连接到路由器。这就是大多数家庭的设置。

现在我已经展示了 GUI 的方法，让我们去看看终端的路线。

### 方法 2：在 Linux 命令行中获取路由器的 IP 地址

打开一个终端，使用以下命令：

```
ip route

```

它将显示几个条目。

```
~$ ip route
default via 192.168.1.1 dev wlp0s20f3 proto dhcp metric 600
169.254.0.0/16 dev wlp0s20f3 scope link metric 1000
192.168.1.0/24 dev wlp0s20f3 proto kernel scope link src 192.168.1.34 metric 600

```

第一行，以 `default via` 开头，给出了你网关的 IP。这是你的路由器的 IP 地址。

你可以看到，`192.168.1.1` 是我的路由器的 IP 地址。通常情况下，路由器的 IP 地址是子网的第一个数字。然而，这并不是一个硬性规定。我也见过有 `x.y.z.30` 地址的路由器。

### 额外技巧

正如 Samir 在评论中所分享的，你也可以（在 Debian 上）使用 `ping` 命令来获得网关 IP：

```
ping _gateway

```

以防你不知道，你必须 [在 Linux 中使用 Ctrl+C 来停止一个正在运行的命令](https://itsfoss.com/stop-program-linux-terminal/)。

我希望你在需要的时候能发现这个技巧是有用的。

---

via: <https://itsfoss.com/router-ip-address-linux/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[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/) 荣誉推出


硬核观察 #689 微软 Xbox Cloud 串流针对 Linux 降低画质

Summary: • 微软 Xbox Cloud 串流针对 Linux 降低画质 • systemd 创建者离开了红帽 • NIST 公布首批四种抗量子的加密算法

微软认为自己的软件与Linux是竞争关系，与市占率无关；但微软又同时表现出拥抱Linux的小姿态。DDDD

# 硬核观察 #689 微软 Xbox Cloud 串流针对 Linux 降低画质

### 微软 Xbox Cloud 串流针对 Linux 降低画质

微软的云游戏串流服务 Xbox Cloud 本应该是平台无关的，也就是在带宽没有变化的情况下它应该向玩家提供相同的画质。但一位玩家注意到在 Linux 下访问 Xbox Cloud 画质显著低于 Windows。他随后尝试用使用扩展将 Linux 上的用户代理伪装成 Windows 上的浏览器，结果画质有了明显提升。

>
> **[消息来源：Solidot](https://www.solidot.org/story?sid=72040)**
>
>
>

>
> 老王点评：难道 Linux 用户不值得高清画质吗？
>
>
>

### systemd 创建者离开了红帽

据消息，systemd 的主要开发者 Lennart Poettering 已经离开了红帽公司，除了著名的 systemd，他还领导了 PulseAudio 和 Avahi 的创建，并且一直是一个多产的自由软件贡献者。此消息还未得到红帽的公开宣布，但他的红帽账户已被禁用，他创建了一个个人的红帽 Bugzilla 账户用于之后的贡献。当然，他仍然活跃在 systemd 领域，今天还做了新的提交。

>
> **[消息来源：Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=Lennart-Poettering-Out-Red-Hat)**
>
>
>

>
> 老王点评：虽然有很多人讨厌 systemd，但几乎所有的主流 Linux 发行版都采用 systemd，说明它还是很优秀的。期待离开红帽后 Lennart 继续做出更多贡献！
>
>
>

### NIST 公布首批四种抗量子的加密算法

美国国家标准与技术研究所（NIST）宣布了用于标准加密的一种算法，以及用于数字签名的三种算法，并且这三种签名算法各有不同，有的用于较短密钥，有的使用了不同数学技术。而公钥加密算法还未决定，尚在四个算法中选择。当然，关于这些算法，密码学家们还有很多争论。

>
> **[消息来源：NIST](https://www.nist.gov/news-events/news/2022/07/nist-announces-first-four-quantum-resistant-cryptographic-algorithms)**
>
>
>

>
> 老王点评：似乎还没有其它机构公开相关的进展，看起来 NIST 成了后量子密码学巨头之战的赢家。
>
>
>


HandBrake：用于转换任何格式视频的免费工具

可以转换腾讯爱奇异视频吗？

# HandBrake：用于转换任何格式视频的免费工具

>
> 了解一下 HandBrake，这是一个优秀的工具，可以将任何格式的视频转换为目标类型。
>
>
>

本文介绍了它的功能、下载说明和使用指南。

### HandBrake

在这个社交媒体的时代，我们身处各种视频之中，当然还有随之而来的各种格式。因此，如果你是在 Linux 平台，甚至是在 Windows 平台，你可以使用各种软件来为多个平台转换各种视频。但是，如果你需要一个简单但功能丰富的视频转换器来处理来自多个来源的所有视频格式，请尝试 HandBrake。

#### 功能

HandBrake 有大量的选项，使其成为一个独特的工具。首先，其工作流程是超级简单。事实上，它只是三个步骤：

* 选择一个视频
* 选择一个目标格式
* 转换

正如你所看到的，如果你是一个新手用户，使用这个工具是非常容易的，因为目标格式的属性（如比特率、尺寸）是基于默认的预设。

其次，如果你想进行高级编辑，如在转换时从字幕文件中添加字幕，也可以使用这个工具。

此外，你还可以改变尺寸、翻转视频、改变分辨率、修改长宽比，以及裁剪。此外，通过一套基本的过滤器配置，可以完成诸如去噪和锐化等操作。

另外，为你的视频文件添加章节、标签和音轨也很容易。

也许 HandBrake 的重要功能是提供预设，以满足现代社会媒体和流媒体的需求。例如，其预设与这些流媒体平台和流媒体设备相一致，如：

* Discord
* GMail
* Vimeo
* 亚马逊 Fire Stick 电视棒
* 苹果设备
* Chromecast
* Playstation
* Roku
* Xbox

一个相当令人印象深刻的列表，不是吗？不仅如此，如果你是一个专业工作者，它可以帮助你定义和创建转换队列。队列功能允许你在工作流程中批量转换多个视频文件。

最后，你可以转换为 MPEG-4（mp4）、Matroska（mkv）和 WebM 格式。

### 下载和安装

下载和安装 HandBrake 对于任何平台（Linux、Mac 和 Windows）都很容易。开发者直接提供了可执行文件，可以免费下载。

由于本站的主要目标受众是 Linux 用户，我们将讨论 HandBrake 在 Linux 中的安装。

对于 Ubuntu、Linux Mint 和所有其他发行版，最好的方法是 Flatpak。你可以 [设置 Flatpak](https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/)，然后点击下面的按钮来安装 HandBrake：

>
> **[通过 Flathub 安装 HandBrake](https://dl.flathub.org/repo/appstream/fr.handbrake.ghb.flatpakref)**
>
>
>

对于 Windows、macOS 的安装程序，请访问 [这个页面](https://handbrake.fr/downloads.php)。

一个有趣的特点是，你可以通过命令行使用这个应用程序！这意味着你可以使用命令行工具进一步定制你的工作流程，你可以在 [这里](https://handbrake.fr/downloads2.php) 下载。

### 如何使用 HandBrake 来转换视频？（示例）

既然你安装了它，让我们看看你如何只用三个步骤就能转换一个示例视频。

1. 打开 HandBrake，点击顶部工具栏上的 “<ruby> 打开源文件 <rt>  Open Source </rt></ruby>” 按钮，选择你的视频文件。
2. 现在，从“<ruby> 格式 <rt>  Format </rt></ruby>”下拉菜单中选择目标文件类型。确保选中目标文件夹（默认为 `Videos`）。
3. 最后，点击顶部工具栏的“<ruby> 开始 <rt>  Start </rt></ruby>”按钮，用 HandBrake 转换视频。

你可以在窗口的底部找到一个漂亮的转换进度显示。

上面的步骤是最基本的步骤。如果你想进一步控制视频，你可以改变选项，也可以从我前面解释的大量预设列表中选择。

### 常见问题

**HandBrake 是免费使用么？**

是的，它是一个自由开源的应用程序，你可以免费下载它。

**它可在 Mac 和 Windows 上用么？**

是的，你可以在 macOS、Windows 10 和 Windows 11 中轻松安装 HandBrake。

**如何下载 HandBrake？**

你只能从官方网站 <https://handbrake.fr/> ，不能从其他地方下载 HandBrake。

### 结束语

Handbrake 是如今可用的专业级免费和开源视频编码器之一。它是一个经过时间考验的应用，每天有数百万用户使用。我希望本指南能帮助你了解这个神奇的工具，让你开始你的视频项目。

**演示视频来自 [Pexels - cottonbro](https://www.pexels.com/video/hands-hand-table-colorful-3997786/)**。

---

via: <https://www.debugpoint.com/handbrake/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[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/) 荣誉推出


darktable 4.0.0：用户界面改版，改进了色彩饱和度处理

# darktable 4.0.0：用户界面改版，改进了色彩饱和度处理

>
> darktable 4.0.0 版本来了，这是一个主要版本，带来了新的功能，简化了用户界面，还有一些其他的改进。
>
>
>

最近，作为其 3.8.x 系列的升级版，darktable 开发人员公布了新的稳定版。

最新的升级带来了新功能、错误修复和重大变化。

### darktable 4.0 有什么新内容？

在 darktable 4.0 中，增加了很多功能，并对用户界面进行了一些有意义的重新打造。

让我在此介绍一下关键的亮点：

>
> **注意：** 这是一次重大版本升级，采用了新的库和配置，与旧版本不兼容。因此，你需要在进行升级之前对你的工作进行备份。
>
>
>

#### 颜色和曝光映射

在曝光和颜色校准模块中，你现在可以定义和保存颜色采集器的目标颜色/曝光度。

这应该有助于你匹配图像中的源对象，并确保一个对象在一批照片中的颜色一致性。

#### 完善的用户界面

用户界面已经进行了改造以改善外观/感觉。首先能看到的是其默认主题改为了 “优雅灰”。

总的来说，填充、边距、颜色、对齐方式和图标等等都得到了改造。也添加了新的可折叠的部分（rgb 通道混合器、曝光、颜色校准），使用户界面更干净，更容易访问。

你会发现许多细微的变化，布局也更合理。

#### 性能变化

在简化用户偏好的同时，该版本还增加了一些优化措施。

你还可以改变性能配置，而不需要重启 darktable。

#### 改进了色彩饱和度处理

Filmic v6（一种新的色彩学）的加入有助于获得更多的饱和度，特别是对于蓝天。

另外正如公告中提到的，可以以最小的破坏性方式恢复，调色应该更安全。除此之外，还为艺术饱和度的变化设计了一个新的信息色彩空间。

总的来说，你应该对这个版本对饱和度控制的改进感到高兴。

#### 其他变化

其他一些值得注意的变化包括：

* 一个新的“引导式拉普拉斯”方法已被添加到高光重建模块中。
* 全局颜色选择器工具的改进
* 一个新的对比度参数
* 一个新的集合过滤器模块
* 增加了对 EXR 16 位（半数）浮点数输出的支持。

你可以在其 [官方公告帖子](https://www.darktable.org/2022/07/darktable-4.0.0-released/) 中查看所有的技术细节。

### 下载 darktable 4.0.0

你可以使用 [Flathub](https://flathub.org/apps/details/org.darktable.Darktable) 上的 Flatpak 包获得最新版本。写这篇文章时，Snap 包还没有更新。

此外，你也可以选择使用其 [GitHub 发布区](https://github.com/darktable-org/darktable/releases/tag/release-4.0.0) 中的 tar.xz 文件。

---

via: <https://news.itsfoss.com/darktable-4-0-release>

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

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


硬核观察 #690 苹果将发布 Lockdown 模式以抵御间谍软件攻击

Summary: • 苹果将发布 Lockdown 模式以抵御间谍软件攻击 • 亚马逊预览 AI 编程助手 CodeWhisperer • 美国联邦快递将关闭数据中心，退役所有主机

# 硬核观察 #690 苹果将发布 Lockdown 模式以抵御间谍软件攻击

### 苹果将发布 Lockdown 模式以抵御间谍软件攻击

苹果手机曾遭间谍软件 Pegasus 的秘密入侵，为了抵御此类攻击苹果公司宣布了 Lockdown 模式。它将在今年秋天随 iOS 16、iPadOS 16 和 macOS Ventura 发布，旨在为极少数用户提供可选的极端保护。该模式将包括下列保护功能：图片之外的绝大多数信息附件类型将被拦截，链接预览等部分功能将被禁用；JIT JavaScript 编译器等将被禁用，除非列入受信站点白名单；向用户发起的 FaceTime 通话等邀请与服务请求将被拦截，除非用户此前向对方发起过通话或请求；iPhone 锁定时，与电脑或配件的有线连接也将被拦截。开启后将无法安装配置文件，且设备无法加入移动设备管理。苹果表示，如果安全研究人员在 Lockdown 模式中发现漏洞，它将提供业界顶级的最高 200 万美元的奖金。

>
> **[消息来源：苹果](https://www.apple.com.cn/newsroom/2022/07/apple-expands-commitment-to-protect-users-from-mercenary-spyware/)**
>
>
>

>
> 老王点评：我觉得这不算是极少数用户的需要，至少其中部分功能是大部分人都需要的。
>
>
>

### 亚马逊预览 AI 编程助手 CodeWhisperer

和微软的 GitHub Copilot 类似，CodeWhisperer 也使用开源代码库进行训练，根据上下文向开发者提供代码完成建议。Copilot 因为代码许可证方面的问题引发了争议，CodeWhisperer 存在类似的问题，但它的做法要好一些，在提供示例代码建议时它会给出代码的来源，开发者将能知道是来自于是可以自由使用的 MIT 授权代码，还是来自于对使用有所限制的 GPL 授权代码。

>
> **[消息来源：AWS](https://aws.amazon.com/cn/codewhisperer/)**
>
>
>

>
> 老王点评：Copilot 增加类似的功能似乎也不难，但问题可能不在这里，而是这类 AI 助手给混淆滥用各种不同许可证的代码带来了便利，从根本上侵蚀了开源的许可证环境。
>
>
>

### 美国联邦快递将关闭数据中心，退役所有大型机

美国联邦快递（FedEx）称，将在未来两年内关闭其数据中心，并退役其剩余的 20% 大型机。该公司的目标是建立一个基于云的“零数据中心、零主机”环境，这将每年节省 4 亿美元。其 CIO 在会议上说，“在这十年中，我们一直在努力精简和简化我们的技术和系统。……我们将把剩余的应用程序转移到云原生结构。”

>
> **[消息来源：Datacenter Dynamics](https://www.datacenterdynamics.com/en/news/fedex-to-close-data-centers-retire-all-mainframes-by-2024-saving-400m/)**
>
>
>

>
> 老王点评：大型机越来越没有市场了，不过取代大型机的是另外一种“大型机” —— 也拥有超大的计算资源和无数的终端，以及供应商锁定。
>
>
>

### 回音

* 昨天我们报道过 systemd 作者 Lennart Poettering 离开了红帽，今天的消息显示，他加入了微软，仍将继续专注于 systemd 的开发。微软已经 [网罗](https://www.phoronix.com/scan.php?page=news_item&px=Systemd-Creator-Microsoft) 了很多开源方面的重要人才。


又有 Linux 开发者加入微软，这次是 systemd 的创建者

Summary: 看来微软拿了一手好牌，在 Linux 和开源方面取得行业成功。

实话说，我觉得近些年的微软越来越开放了，也不像以前那么傲慢。

看来微软拿了一手好牌，在 Linux 和开源方面取得行业成功。

# 又有 Linux 开发者加入微软，这次是 systemd 的创建者

>
> 看来微软拿了一手好牌，在 Linux 和开源方面取得行业成功。
>
>
>

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

出于某种原因，微软在开源和 Linux 方面总是受到关注。

而且，当我们谈论 Linux 开发者时，它也会成为焦点……为什么会这样？

微软似乎正在为一系列的项目招聘大量 Linux 开发人员。而且，一个知名人物也加入了这个名单。

据 [Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=Systemd-Creator-Microsoft) 报道，systemd 和 PulseAudio 的创建者 **Lennart Poettering**，现在已在微软工作，继续专注于 systemd 的开发。

或许你不知道，Lennart 曾在红帽工作，领导 PulseAudio 项目和其他一些事情。

除了 Lennart 之外，Python 之父 **Guido Van Rossum** 等一些关键的开发人员之前就加入了微软。

（LCTT 译注：据 Phoronix 总结，还有更多的开源开发者加入了（或加入过）微软，这包括：GNOME 创建者 Miguel de Icaza 曾在 2016 年微软收购 Xamarin 时受雇，到今年早些时候离开；Nat Friedman 作为 Xamarin 的成员在微软收购后加入，后担任微软旗下的 GitHub 的 CEO；Gentoo Linux 创始人 Daniel Robbins 之前受雇于微软；Steve French 作为 Linux CIFS/SMB2/SMB3 的维护者和 Samba 团队的成员为微软工作；以及大量的上游 Linux 开发者，如 Matteo Croce、Matthew Wilcox、Tyler Hicks、Shyam Prasad N、Michael Kelley、Christian Brauner 等等也曾被微软雇佣。）

### 微软在为最佳状态做准备

毫不奇怪，微软希望提高其对基于开源的项目的关注，并尽可能有效地利用 Linux 为其业务服务。

Azure 平台对开源的利用最多，而且，不要忘了 **Windows Subsystem for Linux**（WSL）。

因此，微软一直在招聘 Linux 开发人员。如果你想试试，你会在 [微软职业](https://careers.microsoft.com/us/en/search-results?keywords=Linux) 栏目中找到很多与 Linux 有关的职位。

虽然这对微软的产品线来说是一件大事，但它一般不会影响到 Linux 桌面用户。事实上，我认为，Linux 开发者得到的资源越多，由于他们工作角色转换，他们可以帮助 Linux 生态系统更好地增强其愿景。

当然，让所有关键的 Linux 开发者都在微软拥有的项目上工作并不是一件喜闻乐见的事情，但是，事实就是如此。

### 微软正在做正确的事情

这不仅仅是经济上的回报，Linux 开发者加入微软团队的趋势意味着他们在开源和 Linux 上的一些努力是成功的。

只要微软努力改善 Linux 生态系统，我认为我们就没有什么可担心的。

我不想被提醒“<ruby> 拥抱、扩展和熄灭 <rt>  Embrace, extend, and extinguish </rt></ruby>”（3E）。毕竟，这对所有公司来说都是生意。当涉及到赚钱的决定时，没有人应该被认为是英雄。

因此，我们只能希望微软在不久的将来为 Linux 开发者和用户准备好一些好东西。

你对此有何看法？在下面的评论区分享你的想法。

---

via: <https://news.itsfoss.com/systemd-creator-microsoft/>

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

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


改变数据中心行业的主要趋势

Summary: 下面提到的是将对印度数据中心行业产生重大影响的主要趋势。

下面提到的是将对印度数据中心行业产生重大影响的主要趋势。

# 改变数据中心行业的主要趋势

<img src="content_image/album_202207_08_093248h1fcac4khhyhy0hn.jpg" alt="Data center" title="Data center">

大流行加快了印度全国数字化转型的速度，这需要对数据中心进行更多投资。由于快速的数字化和云采用，印度数据中心市场的容量预计在未来几年将翻一番。据报道，2021 年印度数据中心市场规模为 43.5 亿美元，到 2027 年将达到 100.9 亿美元，2022-2027 年的复合年增长率为 15.07%。

现在，出现的一个关键问题是印度数据中心行业的未来是什么？哪些新趋势将塑造其未来？下面提到的是将对印度数据中心行业产生重大影响的主要趋势。

### 数据本地化

数据本地化就意味着限制数据从一个国家流向另一个国家。印度政府已发布指导方针，强调需要在该国境内存储印度用户的数据。数据本地化使得收集关键消费者数据的公司必须在本地数据中心存储和处理这些数据。这给本地数据中心带来了巨大的增长。此外，印度的成本优势和熟练劳动力的便利性使其成为亚洲数据中心的重要枢纽。

### 可持续数据中心

众所周知，数据中心消耗大量非可再生资源。为了使数据中心可持续发展，公司重新设计了他们的设施，通过利用人工智能、机器学习和云等新兴技术来大大降低电力和水的消耗。云数据中心使用更少的服务器，从而减少碳排放。它们通常位于更靠近为其供电的设施，以防止在长距离传输电能的过程中出现大量损失。此外，公共云数据中心可用于存储来自多个业务的数据。本地数据中心在存储大量数据时存在容量限制，从而导致资源的非最佳使用。因此，云数据中心通过使企业能够消耗更少的服务器和更少的电力并减少其在此过程中的碳排放，正在彻底改变行业。

### 边缘连接

边缘数据中心是靠近网络边缘的小型数据中心。它们通常连接到更大的中央数据中心或多个数据中心。通过处理更接近最终用户的数据和服务，边缘计算允许组织减少延迟并改善客户体验。这样的数据中心对于需要实时数据处理的行业非常有利，例如自动驾驶汽车、远程医疗、电信、OTT 平台和智能可穿戴设备。

### 超大规模数据中心

传统上，数据中心是一个简单的机架网络，带有存储单元和一组管理工具。它具有易于理解的架构。然而，随着数字化转型接管了企业界，组织开始生成大量数据。传统的存储单元和工具不足以处理大量涌入的数据，因此需要更大的容量和复杂的设施。此外，传统数据中心无法扩大或缩小其能力以适应需求波动，从而导致资源浪费。这导致了超大规模作为解决方案的演变。

超大规模数据中心是大规模的关键业务设施，旨在通过将大量高速协同工作的服务器聚集在一起，有效地支持强大且可扩展的应用。这种能力使数据中心能够水平和垂直扩展。

总之，数据中心行业正在发展，新趋势将不断涌现。借助新时代的颠覆性技术，数据中心行业可以构建环保节能的数据中心。人工智能、边缘计算和物联网等技术可用于最大限度地提高能源效率并最大限度地减少对环境的影响。

---

via: <https://www.opensourceforu.com/2022/06/top-trends-changing-data-center-industry/>

作者：[abhimanyu rathore](https://www.opensourceforu.com/author/abhimanyu-rathore/) 选题：[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/) 荣誉推出


在 Linux 中隐藏文件和文件夹的那些事

# 在 Linux 中隐藏文件和文件夹的那些事

>
> 这篇面向初学者的文章探讨了在 Linux 中如何在普通视图中隐藏文件和文件夹。图形用户界面和命令行方法都有所涉猎。
>
>
>

有时你需要在 Linux 中隐藏文件。

不要误会，我不是指那些你不想让你的家人看到的“特殊文件”。尽管你可以隐藏这些特殊文件，但更好的办法还是用密码锁定它们以提供额外的保护。

回到隐藏文件的话题。**名称以 `.` 开头的任何文件或文件夹在 Linux 中是“隐藏的”。**

Linux 有很多这样的文件和文件夹，在普通视图中它们是隐藏的。这些主要是系统和程序所需的配置文件。

用户通常不需要理会它们，因此它们在普通视图中是隐藏的，这样一来你就不会被许多看起来很奇怪的而不是你所创建的文件所淹没。

下图展示了我的主目录中隐藏的文件和文件夹。

如果你使用的是桌面版 Linux，你可以通过在文件管理器中按 `Ctrl+H` 快捷键来轻松 [查看隐藏文件](https://itsfoss.com/hide-folders-and-show-hidden-files-in-ubuntu-beginner-trick/)。在终端中，你可以使用 `ls -a` 命令显示隐藏文件和普通文件。

那么，如何在 Linux 中创建隐藏文件呢？你只需用一个在命名的时候加一个 `.` 前缀。就是这样。

### 在桌面版 Linux 里创建隐藏文件和文件夹（GUI 方法）

如果你使用的是文件管理器，在文件或文件夹上右键并选择重命名选项。现在你所要做的就是在文件名的开头添加一个 `.`。

当你以这种方式创建隐藏文件时，GNOME 的 Nautilus 文件管理器也会显示一个警告。

你可以以相同的方式隐藏文件夹及其所有内容。

你可以按 `Ctrl+H` 键来显示隐藏文件。哦！我是多么的喜欢 [Ubuntu 中的键盘快捷键](https://itsfoss.com/ubuntu-shortcuts/) 和我使用的任何其他程序或操作系统！

要使隐藏文件变回普通文件，只需再次重命名这些文件删掉文件名前缀的 `.` 即可。

### 在 Linux 终端创建隐藏文件和文件夹（CLI 方法）

如果你热衷于终端，你可以 [使用 mv 命令](https://linuxhandbook.com/mv-command/) 重命名文件。你只需在原始文件名的开头添加一个 `.`。

```
mv filename .filename

```

你可以使用以下命令显示隐藏文件：

```
ls -la

```

你也可以使用 `ls -lA`。这条命令不会显示点文件（`.` 和 `..`）。

### 额外提示：用非重命名的方法隐藏文件和文件夹（仅适用于 GUI）

你刚刚学了在 Linux 中隐藏文件。问题是你必须重命名文件，而这种操作不适用于所有的场合。

例如，在 Ubuntu 中，你会在目录中看到一个名为 `snap` 的文件夹。你不会使用它，但如果重命名它，你的 Snap 应用程序将无法按预期工作。类似的情况是，在 Ubuntu 22.04（安装有 Snap 版本的 Firefox）的 `Downloads` 目录下有一个 `firefox.tmp` 文件夹。

有一个巧妙的技巧可以在 Linux 桌面中使用。它应该可以在 Nemo、Thunar、Dolphin 等各种文件管理器下工作，但我不能保证。它确实适用于 GNOME 的 Nautilus 文件管理器。

因此，你在这里所做的是在你想要隐藏的文件或文件所在的目录中创建一个名为 `.hidden` 的新文件。

按 `Ctrl+H` 显示隐藏文件并 **打开 `.hidden` 文件** 进行编辑。**在单独的行中添加文件或文件夹的名称**。注意不能使用绝对或相对路径。你想要隐藏的 **文件和文件夹应与此特殊 `.hidden` 文件** 位于同一路径下。

这是我以不重命名的方式隐藏 `cpufetch` 目录和 `pcloud` 文件的示例：

```
pcloud
cpufetch

```

按 `Ctrl+H` 以再次隐藏 `.hidden` 文件。

现在，**关闭你的文件资源管理器并重新启动它**。你将不会再看到 `.hidden` 文件中提到的文件和目录。

如果你想再次查看它们，请按 `Ctrl+H` 键。

如果你不想再隐藏文件，请从 `.hidden` 文件中删除其名称或完全删除 `.hidden` 文件。

### 额外琐事：隐藏文件“功能”实际上是一个 bug

你知道吗？在文件名的开头添加一个 `.` 来隐藏文件的“功能” [实际上是一个 bug](https://linux-audit.com/linux-history-how-dot-files-became-hidden-files/)？

在早期的 UNIX 时代，当创建文件系统时，添加了 `.`（当前目录）和 `..`（父目录）文件以方便导航。

由于这些特殊的 `.` 和 `..` 文件中没有实际数据，因此给 `ls` 命令添加了一个新的“功能”：该功能是检查文件名的第一个字符，如果它是一个点（`.`），则不再使用 `ls` 命令显示它。

这对隐藏 `.` 和 `..` 文件有效，但它引入了一个 “bug”：`ls` 命令的输出会隐藏任何文件名以 `.` 开头的文件。

这个 bug 变成了一个功能，因为程序员喜欢它来“隐藏”他们的配置文件。`ls` 命令可能是后来修改添加了一个显示隐藏点文件的选项。

Linux 遵循相同的约定，因为 Linux 是以 UNIX 为原型开发的。

### 结论

我讨论了如何从普通视图中创建隐藏文件。如果要创建让其他人无法访问的机密文件或文件夹，则应对其进行加密。我曾经写过 [在 Linux 中使用密码锁定文件夹](https://itsfoss.com/password-protect-folder-linux/)。这是一篇有点儿旧的文章，但它可能仍然有效。

我希望你喜欢这个简单的话题并学到新的东西。发布你的评论让我知道你的想法吧。

---

via: <https://itsfoss.com/hide-files-folders-linux/>

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

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


硬核观察 #691 Facebook 和 Instagram 或将在欧洲关闭

Summary: • Facebook 和 Instagram 或将在欧洲关闭 • Chrome 优化后台页面处理策略，提升笔记本电池时间 • 推特每天删除上百万个垃圾账户

人家是有选择，你是没有选择。 太监也有优越感了吗？

你就没看懂我话里的嘲讽。

你大可以去问问欧盟被监听的官员是不是有选择的，1450不要水

Linux中国是不是公知时代最后的遗老？

你这武汉的，竟然没中新冠啊

原来你自己觉得没有美国媒体就是太监  也行  就是别带上其他人  哈哈哈

# 硬核观察 #691 Facebook 和 Instagram 或将在欧洲关闭

### Facebook 和 Instagram 或将在欧洲关闭

由于担心美国的监控行为，欧洲法院于 2020 年废除了一项名为“隐私保护”的欧盟-美国数据流动协议。在其裁决中，它还使美国公司用来向美国转移个人数据的另一个法律工具，即标准合同条款（SCC）更难使用。爱尔兰数据保护委员会周四通知其同行，它将阻止 Facebook 将用户数据从欧洲发送到美国。这一草拟的决定意味着 Facebook 也被迫停止依赖 SCC。Meta 公司曾多次警告说，这样的决定将使其在欧洲的包括 Facebook 和 Instagram 在内的许多服务关闭。

>
> **[消息来源：Politico](https://www.politico.eu/article/europe-faces-facebook-blackout-instagram-meta-data-protection/)**
>
>
>

>
> 老王点评：欧洲人，别怕，你看我们没有这种东西，不是也有别的嘛 :<
>
>
>

### Chrome 优化后台页面处理策略，提升笔记本电池时间

Chrome 是耗能大户，因此在笔记本电脑上非常影响电池使用时间。Chrome 在最新的版本中增加了一个新的“快速强化节流”策略。该功能可以在 10 秒后停止后台页面加载 JavaScript 元素，而之前的限制是 5 分钟，并且它将限制唤醒定时任务，最多每分钟 1 次。谷歌称，这有望延长电池使用时长，当所有标签都被隐藏和静止时，CPU 占用有 10% 的改善。该功能过段时间才会进入稳定通道。

>
> **[消息来源：Tech Radar](https://www.techradar.com/news/googles-new-chrome-feature-could-boost-your-laptops-battery-for-free)**
>
>
>

>
> 老王点评：感觉浏览器技术和 Web 技术无止境啊，Chrome 能占有这么大的市场，可见并非侥幸。
>
>
>

### 推特每天删除上百万个垃圾账户

之前，马斯克威胁要停止 440 亿美元的收购推特的交易，除非该公司拿出证据，证明垃圾机器人账户占看到广告的用户中不到 5%。推特在周四的一次简报会中说，推特每天删除超过 100 万个垃圾账户。该公司重申，人工审查人员随机检查了数千个账户，并使用公共和私人数据的组合，以计算该比例，在接受广告服务的用户中，垃圾账户远低于 5%。

>
> **[消息来源：路透社](https://www.reuters.com/technology/twitter-says-it-removes-over-1-million-spam-accounts-each-day-2022-07-07/)**
>
>
>

>
> 老王点评：虽然我认为马斯克在玩弄花招，但是要说推特只有 5% 的垃圾机器人账号，我是不信的。
>
>
>


Fedora Linux 37 即将正式支持树莓派 4

好耶~！

# Fedora Linux 37 即将正式支持树莓派 4

>
> 由于上游的一些改进，Fedora Linux 37 将引入对树莓派 4 的正式支持。
>
>
>

<img src="content_image/album_202207_08_230308knnpuuhnkbwuakbh.jpg" alt="Fedora raspberry pi" title="Fedora raspberry pi">

Fedora Linux 的工作站版很适合台式机使用。不过，如果你想让它用于服务器或物联网需求，可以使用 Fedora ARM 项目。

它也支持树莓派，只是最新的树莓派 4 除外（其实早在 2019 年就发布了）。

现在，随着 [Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=Fedora-37-Raspberry-Pi-4) 发现的一项拟议的变化，看起来 Fedora Linux 37 可能会正式增加对树莓派 4 的支持。

### 目前还不是正式的...

到现在为止，对树莓派 4 的支持只是一个拟议的变化。

Fedora Linux 通常会公开其拟议的变化列表，以接受社区反馈并让其他人跟踪其进展。

所以，Fedora Linux 37 中的正式支持只有在得到 Fedora 工程指导委员会的批准后才会实施。

但是，**支持树莓派 4 的阻碍是什么呢？**

这是由于缺乏加速图形以及缺失一些功能，所以不方便增加对它的支持。

现在，随着新的 Linux 内核和 Mesa 的上游工作为树莓派 4 带来了图形加速功能，可以让他们启用对它的支持。

拟议的变化文件中提到：

>
> 上游现在支持使用 V3D GPU 的 OpenGL-ES 和 Vulkan 加速图形。对有线网络也有增强，支持 CM4/4B 上的 PTPv2。
>
>
>

此外，不仅仅是引入对树莓派 4 的支持，一些拟议的变化还涉及对树莓派 3 系列和 Zero 2 W 的改进。

因此，如果如人们所期望的那样发生，这应该是一个有趣的变化。

请注意，对树莓派 400 的 Wi-Fi 的支持不是这个过程的一部分，但对音频支持的测试将是这个变化的一部分。

你可以在 [拟议文件](https://fedoraproject.org/wiki/Changes/RaspberryPi4) 中阅读所有的细节。

你对 Fedora Linux 37 对树莓派 4 的支持有什么看法？请在下面的评论中分享你的想法。

---

via: <https://news.itsfoss.com/fedora-raspberry-pi-4/>

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

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


使用 Tig 来可视化 Git 工作流

really good...

# 使用 Tig 来可视化 Git 工作流

>
> Tig 是审查 Git 仓库的绝佳工具，它鼓励你探索日志，而无需构建冗长且有时复杂的查询。
>
>
>

如果你发现浏览你的 Git 仓库非常复杂，我已经为你准备好了工具，来了解一下 Tig。

Tig 是一个 [基于 ncurses](https://opensource.com/article/21/8/ncurses-linux) 的 Git 文本模式界面，它允许你浏览 Git 仓库中的更改。它还可以充当各种 Git 命令输出的分页器。使用这个工具可以让我很好地了解在哪个提交中发生了哪些更改，最新的提交合并是什么等等。请跟随这个简短的教程，亲自尝试一下。

### 安装 Tig

在 Linux 上，你可以使用包管理器安装 Tig。例如，在 Fedora 和 Mageia 上：

```
$ sudo dnf install tig

```

在 Debian、Linux Mint、Elementary、Pop\_OS 和其他基于 Debian 的发行版上：

```
$ sud apt install tig

```

在 macOS 上，使用 [MacPorts](https://opensource.com/article/20/11/macports) 或 [Homebrew](https://opensource.com/article/20/6/homebrew-mac)。 Tig 的完整安装指南可在 [Tig 手册](https://jonas.github.io/tig/doc/manual.html) 中找到。

### 使用 Tig

Tig 提供了常见 Git 输出的交互式视图。例如，使用 Git，你可以使用命令 `git show-ref` 查看所有引用：

```
$ git show-ref
98b108... refs/heads/master
6dae95... refs/remotes/origin/1010-internal-share-partition-format-reflexion
84e1f8... refs/remotes/origin/1015-add-libretro-openlara
e62c7c... refs/remotes/origin/1016-add-support-for-retroarch-project-cd
1c29a8... refs/remotes/origin/1066-add-libretro-mess
ffd3f53... refs/remotes/origin/1155-automatically-generate-assets-for-external-installers
ab4d14... refs/remotes/origin/1160-release-on-bare-metal-servers
28baa9... refs/remotes/origin/1180-ipega-pg-9118
8dff1d... refs/remotes/origin/1181-add-libretro-dosbox-core-s
81a7fe... refs/remotes/origin/1189-allow-manual-build-on-master
[...]

```

使用 Tig，你可以在可滚动列表中获取该信息以及更多信息，此外还可以使用键盘快捷键来打开其他视图，其中包含每个引用的详细信息。

### 分页模式

当输入来自标准输入时，Tig 进入分页模式。当指定 `show` 子命令并给出 `--stdin` 选项时，标准输入被假定为提交 ID 列表，它被转发到 `git-show` ：

```
$ git rev-list --author=sumantrom HEAD | tig show –stdin

```

### 日志和差异视图

当你在 Tig 的日志视图中时，你可以按键盘上的 `d` 键来显示差异。这将显示提交中更改的文件以及删除和添加的行。

### 交互式 Git 数据

Tig 是对 Git 的一个很好的补充。它鼓励你探索日志，而无需构建冗长且有时复杂的查询，从而可以轻松查看你的 Git 仓库。

立即将 Tig 添加到你的 Git 工具包中！

---

via: <https://opensource.com/article/22/7/visualize-git-workflow-tig>

作者：[Sumantro Mukherjee](https://opensource.com/users/sumantro) 选题：[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/) 荣誉推出


如何使用原生 NTFS 驱动替代旧版 FUSE NTFS 驱动

# 如何使用原生 NTFS 驱动替代旧版 FUSE NTFS 驱动

>
> NTFS 是 Windows NT 系列操作系统支持的磁盘文件系统格式，它是一个特别为网络和磁盘配额、文件加密等管理安全特性设计的文件系统。而 Linux 内核中新进入主线支持的 NTFS3 驱动是一个功能齐全的 NTFS 驱动程序，该驱动程序适用于最高的 NTFS 3.1 版本。
>
>
>

### 简介

最初，Linux 内核没有 NTFS 的原生支持，后来对 NTFS 的支持也仅提供了只读功能。来自 Tuxera 的 NTFS-3G 是之前主流的解决方案，但在实际使用中也存在一些问题。NTFS-3G 是借助 Linux 的用户空间文件系统（FUSE）模块在用户层实现的一个对 NTFS 支持的文件系统，其对 NTFS 的访问逻辑代码都是在用户层代码实现的。

在 NTFS3 出现之前，Linux 上使用 NTFS 主要问题还是缺乏稳定且功能齐全的读/写支持。

2020 年，Paragon 软件公司做出了一个惊人的决定：尝试将之前只提供给商业客户的 NTFS3 驱动程序贡献到 Linux 主线。最终，在经过多轮审核和修改之后，Linux 内核 5.15 合并了 Paragon 提供的 NTFS3 内核驱动，它拥有更高的性能和更多的特性。

* 该驱动程序实现了对 NTFS 文件系统中的正常、稀疏和压缩文件的读/写支持。
* 支持本地日志回放。
* 支持已挂载的 NTFS 卷的 NFS 导出。
* 支持文件和文件夹的权限管理。

### 如何使用 NTFS3 驱动挂载 NTFS 卷

使用 NTFS3 驱动挂载时使用的文件系统类型是 `ntfs3`。

#### 手动挂载

以前使用 NTFS-3g 驱动的挂载方式是：

```
# mount -t ntfs-3g /dev/sdxY /mnt

```

现在只需要将 `ntfs-3g` 替换为 `ntfs3` 即可：

```
# mount -t ntfs3 /dev/sdxY /mnt

```

`-t` 指出文件系统类型，`/dev/sdxY` 是你的 NTFS 卷（分区）的路径，可以使用 `lsblk` 命令查看。`/mnt` 是挂载的目标文件夹。

如果需要指定挂载参数，可使用 `-o` 指定参数，如：

```
# mount -t ntfs3 -o iocharset=utf8,umask=22,prealloc /dev/sdxY /mnt

```

这里的 `iocharset=utf8,umask=22,prealloc` 挂载参数，详见后文解释。

#### 开机自动挂载

如需在开机时自动挂载，可编辑 `/etc/fstab` 文件，添加如下行：

```
UUID=**** /data ntfs3 iocharset=utf8,umask=0,prealloc 0 0

```

其中 `UUID=****` 是指定卷（分区）的 UUID。使用 `UUID` 的好处在于它们与磁盘挂载顺序无关。如果你在 BIOS 中改变了你的存储设备顺序，或是重新拔插了存储设备，或是一些 BIOS 可能会随机地改变存储设备的顺序，那么用 `UUID` 来表示指定卷（分区）会更有效。可以使用 `blkid` 命令查看 `UUID` 。

`/data` 是挂载位置。本示例的位置是 `/data`，你需要提前创建这个文件夹。

后面的选项都是挂载参数，参见后文介绍。

最后两个 `0 0` ，表示是否备份和是否检查。`0 0` 表示不备份、不检查。

### 挂载参数说明

| 参数 | 解释 |
| --- | --- |
| `iocharset=name` | 此选项告知驱动程序如何解释路径字符串，并将其转换为 Unicode 或返回。如果未设置此选项，将使用默认代码页。示例：`iocharset=utf8` |
| `uid=` | 挂载用户 ID |
| `gid=` | 挂载组 ID |
| `umask=` | 控制装载 NTFS 卷后创建的文件/目录的默认权限。 |
| `dmask=` | `fmask` 只适用于文件，`dmask` 只适用于目录，而不是指定同时适用于文件和目录的 `umask`。 |
| fmask= | 见上 |
| `noacsrules` | “无访问规则”装载选项将文件/文件夹的访问权限设置为 777，所有者/组设置为 root。此装载选项吸收所有其他权限。文件/文件夹的权限更改将报告为成功，但仍将保持 777。所有者/组更改将报告为成功，但他们将保留为 root 用户。 |
| `nohidden` | Linux 下不会显示具有 Windows 特定隐藏（`FILE_ATTRIBUTE_HIDDEN`）属性的文件。 |
| `sys_immutable` | 具有 Windows 特定系统（`FILE_ATTRIBUTE_SYSTEM`）属性的文件将标记为系统不可变文件。 |
| `discard` | 支持 TRIM 命令以提高删除操作的性能，建议将其用于固态驱动器（SSD）。 |
| `force` | 即使卷被标记为脏，也强制驱动程序装载分区。不建议使用。 |
| `sparse` | 创建稀疏的新文件。 |
| `showmeta` | 使用此参数可显示已装入 NTFS 分区上的所有元文件（系统文件）。默认情况下，所有元文件都是隐藏的。 |
| `prealloc` | 当写入时文件大小增加时，为文件过度预分配空间。减少对不同文件执行并行写入操作时的碎片。 |
| `acl` | 支持 POSIX ACL（访问控制列表）。如果内核支持，则有效。不要与 NTFS ACL 混淆。指定为 acl 的选项支持 POSIX acl。 |

### NTFS3 的优点

NTFS3 是内核态的驱动，ntfs3 比 ntfs-3g 无论是速度还是负载都要好上不少。

已经有诸多网友做过测试：

* [ntfs-3g 与 Linux 5.15+ ntfs3 驱动的简单性能测试](https://biluohc.github.io/posts/ntfs3gvsntfs3/)
* [Linux 5.15 内核 NTFS3 性能评测](https://bbs.deepin.org/post/236260)

除了性能更好以外，NTFS3 还支持挂载用户和文件权限管理等功能。具体使用方法可以自行学习 `gid`、`uid` 以及 `umask` 的用法。

另外 NTFS3 还支持 NTFS 的 `prealloc` 特性，可以大幅减少文件碎片的产生。

### 关于 NTFS3 驱动无人维护的问题

Paragon 于 2020 年在 GNU 通用许可证下发布了 NTFS3 驱动程序，在开源后的一年里，NTFS3 的驱动经过了多轮审查和修改，用来提高代码质量。直到 2021 年合并进入内核主线。

但是自从该驱动 2021 年在 Linux 5.15 中最终被主线化以来，至今为止，在接近一年的时间里，还没有任何重大的错误修复被送入驱动。

有人推测是该驱动的维护者 Konstantin Komarov 身处俄罗斯，受到俄乌战争影响的原因。

随后包括 Linus Torvalds 在内的诸多程序员都对此事表达了关切，并且愿意参与到贡献中来。

现在，我们看到 Paragon 软件公司的 Konstantin Komarov 在因休息和其他事务而离开后，又重新活跃在内核邮件列表中。Komarov 在 2022 年 6 月 3 日为 Linux 5.19 的合并窗口提交了一批 NTFS3 的修正。

我相信 ntfs3 未来会越来越好。并且目前，ntfs3 已经是 Linux 中最好用 NTFS 驱动了，我觉得你也不妨尝试一下。

---

作者简介：一个喜欢瞎鼓捣的医学生

---

via: <https://www.insidentally.com/articles/000029/>

作者：[insidentally](https://www.insidentally.com) 编辑：[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/) 荣誉推出


Summary: • 新款支持 Pluton 的 ThinkPad 默认不能安装 Linux • Ubuntu 将 Firefox Snap 启动速度提升了一倍 • Web3 项目今年前半年因黑客攻击损失超过 20 亿美元

# 硬核观察 #692 新款支持 Pluton 的 ThinkPad 默认不能安装 Linux

### 新款支持 Pluton 的 ThinkPad 默认不能安装 Linux

Pluton 是微软公司于 2020 年首次推出的 Windows PC 安全协处理器。与 TPM 一道，其旨在增强 Windows 操作系统的安全性。联想发布的新款 ThinkPad Z13 和 Z16 笔记本电脑就支持 Pluton。然而，有 Linux 专家发现，无法在 ThinkPad Z13 笔记本电脑上，通过 USB 来启动 Linux。这是因为 Pluton 默认只接受 Windows 引导加载和配套驱动程序，使用第三方 UEFI 证书的 Linux 发行版会被阻止启动。联想证实，从 2022 年起，该公司开始遵循微软给出的 PC 安全启动建议，并于默认情况下禁用第三方证书。

>
> **[消息来源：Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=Lenovo-Pluton-Windows-Default)**
>
>
>

>
> 老王点评：所以，不为他们所用的 Linux 不是好 Linux，而要为他们所用，可以是子系统、可以是虚拟机，对吧。
>
>
>

### Ubuntu 将 Firefox Snap 启动速度提升了一倍

Canonical 在一篇博文中披露，“与 Firefox 101 相比，全新安装版本的启动时间平均减少了 50%。”这是由于 Firefox 改成了在启动时一次只复制一个环境 / 语言包（而不是所有语言包），区域设置将遵循系统设置，因而大幅缩减了启动等待时间。以及将 Firefox 及其 GNOME 和 GTK 主题的 Snap 软件包从 XZ 切换到 LZO，加快了解压/启动速度。

>
> **[消息来源：Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=Firefox-Snap-50p-Reduction)**
>
>
>

>
> 老王点评：总算是又进一步改善了 Snap，虽然还有一些缺陷。
>
>
>

### Web3 项目今年前半年因黑客攻击损失超过 20 亿美元

根据一项研究报告，Web3 领域仍然受到黑客、诈骗和网络钓鱼计划的困扰，同时还面临着相对较新的威胁，如闪电贷款攻击。在今年的前六个月，Web3 项目因黑客和漏洞而损失超过 20 亿美元，超过了去年全年。此外，研究还发现，Discord 是绝大多数网络钓鱼企图的载体，这是一个信号，表明它作为 Web3 的首选社交网络仍然很受欢迎，尽管安全问题不断。

>
> **[消息来源：The Verge](https://www.theverge.com/2022/7/7/23199148/web3-lost-2-billion-hacks-flash-loan-certik-cryptocurrency)**
>
>
>

>
> 老王点评：Web3 虽然以积木式金融为创新，但是其最大的问题可能也来自于这种积木式结构。
>
>
>


Meta 开源了语言翻译 AI 模型

Summary: Meta 的 “不落下任何语言No Language Left Behind” 是一个宏大的开源项目，旨在以最高准确度翻译语言。

个人觉得挺好的。虽然我不喜欢Meta公司，但是这个开源项目对于机器翻译以至于NLP领域的贡献很大。项目成熟后，对普通用户来说，就可以无需任何外语的学习浏览外文网站，结合模式识别技术，甚至可以做到十分精准的同声翻译，未来可期啊

“无人独语”好隐晦，看不太懂。

“无语不成译”会不会好些？

这对人工翻译来说将是灭顶之灾

# Meta 开源了语言翻译 AI 模型

>
> Meta 的 “<ruby> 不落下任何语言 <rt>  No Language Left Behind </rt></ruby>” 是一个宏大的开源项目，旨在以最高准确度翻译语言。
>
>
>

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

Meta（前身是 Facebook）在开源世界做出了不小的贡献。Meta 除了专注于<ruby> 元宇宙 <rt>  Metaverse </rt></ruby>和其社交媒体平台外，还致力于各种研究和创新工作，比如 React（一个 JaveScript 库）。

现在，Meta 的研究人员决定开源一个叫 “<ruby> 不落下任何语言 <rt>  No Language Left Behind </rt></ruby>” 项目。

（LCTT 校注：这个直译项目名称不够好听，我来抛砖引玉，似可称做“无人独语”，读者有什么建议吗？）

### Meta 试图不落下任何语言

目前，虽然世界上有大约 7000 个在使用中的语言，但大多数在线的内容都是以少数的流行语言来提供的，比如英语。这让许多不懂这些语言的人处于不利的地位。

虽然现存的许多翻译工具，但语法错误会让错误变得难以阅读和理解。另外，如果你想把内容翻译为一个不流行的语言（特别是非洲和亚洲的一些语言），翻译体验不会很好。

因此，Meta 正在开发有最高质量的翻译工具，可以帮助解决这一全球性的问题。

NLLB-200（<ruby> 不落下任何语言 <rt>  No Language Left Behind </rt></ruby>） 是一个人工智能翻译模型，其可以翻译 200 多种语言。该模型在每种语言中的翻译结果是通过一个名为 FLORES-200 复杂数据集来确定和评估的。

正如 Meta 所说，NLLB 的翻译结果比以前的人工智能研究方法好 40% 。对于一些最不常见的语言，其翻译准确率甚至超过 70%。了不起的工作！

为了帮助开发项目和提高模型的翻译质量，Meta 向所有感兴趣的研究人员开放了源代码，包括 NLLB-200 模型、FLORES-200 数据库、模型训练和重建训练数据库的代码。

你可以在 [GitHub](https://github.com/facebookresearch/fairseq/tree/nllb) 上找到源代码，并且可以在该项目的 [博客](https://ai.facebook.com/blog/nllb-200-high-quality-machine-translation/) 上了解它的更多信息。

### 对社会事业的鼓励

Meta 宣布向从事<ruby> 联合国可持续发展目标 <rt>  UN Sustainable Development Goals </rt></ruby>任何领域工作和翻译非洲语言的非营利组织和研究人员提供高达 20 万美元的捐赠，也鼓励其他学术领域如语言学和机器翻译的研究人员申请。

### 项目的影响

尽管 Meta 主要打算在其数字平台上，特别是在“元宇宙”上使用 NLLB，但 NLLB 也有可能在其他领域产生巨大影响。

许多用户可以用他们的母语轻松地访问和阅读在线资源。项目开源后，社区应该能够帮助实现这个目标。

*你对 Meta 的这个项目有什么看法？*

---

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

作者：[Rishabh Moharir](https://news.itsfoss.com/author/rishabh/) 选题：[lkxed](https://github.com/lkxed) 译者：[fenglyulin](https://github.com/fenglyulin) 校对：[wxy](https://github.com/wxy)

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


如何在 Linux 上动态链接模块库

Summary: 学习如何用动态链接库将多个 C 目标文件结合到一个单个的可执行文件之中。

学习如何用动态链接库将多个 C 目标文件结合到一个单个的可执行文件之中。

# 如何在 Linux 上动态链接模块库

>
> 学习如何用动态链接库将多个 C 目标文件结合到一个单个的可执行文件之中。
>
>
>

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

当使用 C 编程语言编写一个应用程序时，你的代码通常有多个源文件代码。

最终，这些文件必须被编译到一个单个的可执行文件之中。你可以通过创建静态或动态库（后者也被称为 <ruby> 共享 <rt>  shared </rt></ruby> 库）来实现这一点。这两种类型的库在创建和链接的方式上有所不同。两者都有缺点和优点，这取决于你的使用情况。

动态链接是最常见的方法，尤其是在 Linux 系统上。动态链接会保持库模块化，因此，很多应用程序可以共享一个库。应用程序的模块化也允许单独更新其依赖的共享库。

在这篇文章中，我将演示动态链接是如何工作的。在后期的文章中，我将演示静态链接。

### 链接器

<ruby> 链接器 <rt>  linker </rt></ruby>是一个命令，它将一个程序的数个部分结合在一起，并为它们重新组织内存分配。

链接器的功能包括：

* 整合一个程序的所有的部分
* 计算出一个新的内存组织结构，以便所有的部分组合在一起
* 恢复内存地址，以便程序可以在新的内存组织结构下运行
* 解析符号引用

链接器通过这些功能，创建了一个名为<ruby> 可执行文件 <rt>  executable </rt></ruby>的可以运行的程序。在你创建一个动态链接的可执行文件前，你需要一些用来链接的库，和一个用来编译的应用程序。准备好你 [最喜欢的文本编辑器](https://opensource.com/article/21/2/open-source-text-editors) 并继续。

### 创建目标文件

首先，创建带有这些函数签名的头文件 `mymath.h` ：

```
int add(int a, int b);
int sub(int a, int b);
int mult(int a, int b);
int divi(int a, int b);

```

使用这些函数定义来创建 `add.c` 、`sub.c` 、`mult.c` 和 `divi.c` 文件。我将把所有的代码都放置到一个代码块中，请将其分为四个文件，如注释所示：

```
// add.c
int add(int a, int b){
return (a+b);
}

//sub.c
int sub(int a, int b){
return (a-b);
}

//mult.c
int mult(int a, int b){
return (a*b);
}

//divi.c
int divi(int a, int b){
return (a/b);
}

```

现在，使用 GCC 来创建目标文件 `add.o`、`sub.o`、`mult.o` 和 `divi.o` ：

（LCTT 校注：关于“<ruby> 目标文件 <rt>  object file </rt></ruby>”，有时候也被称作“对象文件”，对此，存在一些译法混乱情形，称之为“目标文件”的译法比较流行，本文采用此译法。）

```
$ gcc -c add.c sub.c mult.c divi.c

```

`-c` 选项跳过链接步骤，并且只创建目标文件。

### 创建一个共享的目标文件

在最终的可执行文件的执行过程中将链接动态库。在最终的可执行文件中仅放置动态库的名称。实际上的链接过程发生在运行时，在此期间，可执行文件和库都被放置到了主内存中。

除了可共享外，动态库的另外一个优点是它减少了最终的可执行文件的大小。在一个应用程序最终的可执行文件生成时，其使用的库只包括该库的名称，而不是该库的一个多余的副本。

你可以从你现有的示例代码中创建动态库：

```
$ gcc -Wall -fPIC -c add.c sub.c mult.c divi.c

```

选项 `-fPIC` 告诉 GCC 来生成<ruby> 位置无关的代码 <rt>  position-independent code </rt></ruby>（PIC）。`-Wall` 选项不是必需的，并且与代码的编译方式是无关的。不过，它却是一个有价值的选项，因为它会启用编译器警告，这在排除故障时是很有帮助的。

使用 GCC ，创建共享库 `libmymath.so` ：

```
$ gcc -shared -o libmymath.so add.o sub.o mult.o divi.o

```

现在，你已经创建了一个简单的示例数学库 `libmymath.so` ，你可以在 C 代码中使用它。当然，也有非常复杂的 C 库，这就是他们这些开发者来生成最终产品的工艺流程，你和我可以安装这些库并在 C 代码中使用。

接下来，你可以在一些自定义代码中使用你的新数学库，然后链接它。

### 创建一个动态链接的可执行文件

假设你已经为数学运算编写了一个命令。创建一个名称为 `mathDemo.c` 的文件，并将这些代码复制粘贴至其中：

```
#include <mymath.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
  int x, y;
  printf("Enter two numbers\n");
  scanf("%d%d",&x,&y);

  printf("\n%d + %d = %d", x, y, add(x, y));
  printf("\n%d - %d = %d", x, y, sub(x, y));
  printf("\n%d * %d = %d", x, y, mult(x, y));

  if(y==0){
    printf("\nDenominator is zero so can't perform division\n");
      exit(0);
  }else{
      printf("\n%d / %d = %d\n", x, y, divi(x, y));
      return 0;
  }
}

```

注意：第一行是一个 `include` 语句，通过名称来引用你自己的 `libmymath` 库。要使用一个共享库，你必须已经安装了它，如果你没有安装你将要使用的库，那么当你的可执行文件在运行并搜索其包含的库时，将找不到该共享库。如果你需要在不安装库到已知目录的情况下编译代码，这里有 [一些方法可以覆盖默认设置](https://opensource.com/article/22/5/compile-code-ldlibrarypath)。不过，对于一般使用来说，我们希望库存在于已知的位置，因此，这就是我在这里演示的东西。

复制文件 `libmymath.so` 到一个标准的系统目录，例如：`/usr/lib64`， 然后运行 `ldconfig` 。`ldconfig` 命令创建所需的链接，并缓存到标准库目录中发现的最新共享库。

```
$ sudo cp libmymath.so /usr/lib64/
$ sudo ldconfig

```

### 编译应用程序

从你的应用程序源文件代码（`mathDemo.c`）中创建一个名称为 `mathDemo.o` 的目标文件：

```
$ gcc -I . -c mathDemo.c

```

`-I` 选项告诉 GCC 来在其后所列出的目录中搜索头文件（在这个示例中是 `mymath.h`）。在这个示例中，你指定的是当前目录，通过一个单点（`.`）来表示。创建一个可执行文件，使用 `-l` 选项来通过名称来引用你的共享数学库：

```
$ gcc -o mathDynamic mathDemo.o -lmymath

```

GCC 会找到 `libmymath.so` ，因为它存在于一个默认的系统库目录中。使用 `ldd` 来查证所使用的共享库：

```
$ ldd mathDemo
    linux-vdso.so.1 (0x00007fffe6a30000)
    libmymath.so => /usr/lib64/libmymath.so (0x00007fe4d4d33000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fe4d4b29000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fe4d4d4e000)

```

看看 `mathDemo` 可执行文件的大小：

```
$ du ./mathDynamic
24   ./mathDynamic

```

当然，它是一个小的应用程序，它所占用的磁盘空间量也反映了这一点。相比之下，相同代码的一个静态链接版本（正如你将在我后期的文章所看到的一样）是 932K !

```
$ ./mathDynamic
Enter two numbers
25
5

25 + 5 = 30
25 - 5 = 20
25 * 5 = 125
25 / 5 = 5

```

你可以使用 `file` 命令来查证它是动态链接的：

```
$ file ./mathDynamic
./mathDynamic: ELF 64-bit LSB executable, x86-64,
dynamically linked,
interpreter /lib64/ld-linux-x86-64.so.2,
with debug_info, not stripped

```

成功！

### 动态链接

因为链接发生在运行时，所以，使用一个共享库会产生一个轻量型的可执行文件。因为它在运行时解析引用，所以它会花费更多的执行时间。不过，因为在日常使用的 Linux 系统上绝大多数的命令是动态链接的，并且在现代硬件上，所能节省的时间是可以忽略不计的。对开发者和用户来说，它的固有模块性是一种强大的功能。

在这篇文章中，我描述了如何创建动态库，并将其链接到一个最终可执行文件。在我的下一篇文章中，我将使用相同的源文件代码来创建一个静态链接的可执行文件。

---

via: <https://opensource.com/article/22/5/dynamic-linking-modular-libraries-linux>

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

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


硬核观察 #693 俄罗斯的 Debian 衍生发行版的开发商计划上市

Summary: • 俄罗斯的 Debian 衍生发行版的开发商计划上市 • KDE Plasma 5.26 有望使用 C++20 进行开发 • RISC-V 仅用 12 年达成百亿核心里程碑

真要能成 朝鲜的红星(Red Star)早就家喻户晓了，毕竟在闭门造系统方面领先十年。

社区版系统搞好了也不错啊

来自223.104.41.60的 Chrome Mobile 100.0|Android 12 用户

# 硬核观察 #693 俄罗斯的 Debian 衍生发行版的开发商计划上市

### 俄罗斯的 Debian 衍生发行版的开发商计划上市

来自俄罗斯的 Astra Linux 是 Debian 的下游发行版，它已经存在了一些年，除了 x86、Arm 等 CPU 架构外，它还支持 MIPS 架构。它是由 RusBITech 开发的，是专门为俄罗斯军队设计的。微软已经阻止了 Windows 在俄罗斯的使用，这似乎大大有助于推动替代操作系统的采用。路透社报道说，RosBITech 正计划在莫斯科证券交易所上市，估值约折合为 2.6 亿美元。

>
> **[消息来源：The Register](https://www.theregister.com/2022/07/09/russian_debianderivative_vendor_plans_ipo/)**
>
>
>

>
> 老王点评：我觉得他们比较谦虚，要是搞个根社区可能估值更高呢。
>
>
>

### KDE Plasma 5.26 有望使用 C++20 进行开发

在即将到来的 KDE Plasma 5.26 桌面环境中，KDE 开发者正考虑使用 C++20 语言开发后续功能，尤其是使用 C++ 协同例程支持特性。随着时间的推移，这种较新的 C++ 语言也会用于其他 KDE 组件。将 C++ 要求提升到 C++20 意味着将 KDE 编译器要求提高到 GCC 10 或 Clang 11，而这些版本的编译器已经稳定发布两年了。

>
> **[消息来源：Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=KDE-Plasma-5.26-CPP20)**
>
>
>

>
> 老王点评：看来最近各个开源项目都在逐渐迁移到新的语言标准和新的编译器了，这种稳健而进步的态度是开源的生命力。
>
>
>

### RISC-V 仅用 12 年达成百亿核心里程碑

在近日召开的 Embedded World 大会上，RISC-V 国际的 CEO 宣布目前 RISC-V 市场上的核心数量已经突破 100 亿。CEO 认为开放标准是关键，“Linux 在为软件所做的事情，和我们为硬件所做的事情有异曲同工之妙。”RISC-V 是一种开放标准指令集架构（ISA），根据开源许可提供。据悉，ARM 架构经过 17 年，在 2008 年实现了这个里程碑。而 RISC-V 只用了 12 年就完成了这一目标。

>
> **[消息来源：WCCF Tech](https://wccftech.com/x86-arm-rival-risc-v-architecture-ships-10-billion-cores/)**
>
>
>

>
> 老王点评：看来 RISC-V 真能复制 Linux 在软件方面的成功啊。
>
>
>


Summary: 这里其实不涉及签名。

# 修复 Ubuntu 中的 “cannot find signatures with metadata for snap” 错误

前几天我试图安装 [massCode](https://masscode.io/) 应用。对于安装，它提供了一个 Snap 文件以供下载。

当我尝试从 Snap 文件安装应用程序时：

```
sudo snap install snap_file

```

它给了我以下错误：

```
error: cannot find signatures with metadata for snap "masscode_2.6.1_amd64.snap"

```

这很奇怪。[在 Ubuntu 中添加外部仓库](https://itsfoss.com/adding-external-repositories-ubuntu/) 时，你必须添加 GPG 密钥。但是这里的开发人员没有提供这样的东西。

“修复”简单易行。让我给你解释一下。

### 处理 “cannot find signatures with metadata for snap” 错误

这里其实不涉及签名。

发生的情况是你从第三方下载了 Snap 安装程序。 Ubuntu 中的 Snap 机制希望你从官方 Snap 商店获取 Snap 包。

由于它不是来自 Snap 商店，因此你会看到 “cannot find signatures with metadata for snap” 的错误消息。与大多数错误消息一样，这个错误消息不是描述性的。

那么，这里的解决方案是什么？

任何未通过 Snap 商店分发的 Snap 包都必须使用 `--dangerous` 选项进行安装。这就是规则。

```
sudo snap install --dangerous path_to_snap_file

```

这样，你告诉 Snap 包管理器显式安装 Snap 包。

在这里，我使用了这个选项并且能够成功地从它的 Snap 包中安装 massCode。

以这种方式安装 Snap 包有多“危险”？几乎和下载并 [安装 deb 格式安装包](https://itsfoss.com/install-deb-files-ubuntu/) 相同。

在我看来，如果你是从项目开发者的网站上下载 Snap 包，你已经在信任该项目了。在这种情况下，你可以使用 `--dangerous` 选项安装它。

当然，你应该首先搜索该软件包是否在 Snap 商店中可用：

```
snap find package_name

```

我希望这个快速的小技巧可以帮助你修复 Snap 错误。如果你有任何问题或建议，请告诉我。如果你想了解更多信息，请参阅 [这个使用 Snap 命令指南](https://itsfoss.com/use-snap-packages-ubuntu-16-04/)。

---

via: <https://itsfoss.com/snap-metadata-signature-error/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[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/) 荣誉推出


10 大必备 Ubuntu 应用：优选篇

Summary: 本文列出了 2022 年可以用于不同情况的 10 个 Ubuntu 优选应用。

本文列出了 2022 年可以用于不同情况的 10 个 Ubuntu 优选应用。

# 10 大必备 Ubuntu 应用：优选篇

>
> 本文列出了 2022 年可以用于不同情况的 10 个 Ubuntu 优选应用。
>
>
>

如果你计划永久的转移到 Linux 系统上，你应该会很高兴地知道在 Linux 上有数以千计的能与商业或付费应用媲美的应用。如果你是第一次使用 Linux 的 Windows 用户，你可能都没有听说过这些应用。

因此，在这一系列文章中，我们每一篇重点介绍一组 Ubuntu 应用，以增加 Linux 用户们的协作和认识。

这是 Ubuntu 应用程序系列的第二篇文章，如果你错过了其他部分，可以在这里阅读：

* [第一篇](https://www.debugpoint.com/essential-ubuntu-apps-2022-part-1/)

### 1、OBS Studio

第一个应用是著名的 [流媒体应用](https://www.debugpoint.com/2022/02/live-streaming-applications-linux-2022/) —— OBS Studio 。这是一款自由开源的应用，主要用于互联网上的流媒体应用。此外，你可以使用该应用创建一个复杂的流媒体项目，包括多源、覆盖式横幅等功能。

而且，由于它能够支持“<ruby> 实时消息传输协议 <rt>  Real-Time Messaging Protocol </rt></ruby>”（RTMP），你可以使用它在 Facebook、Youtube、Twitch 以及其他支持的平台上进行流式传输。

这个有十年历史的应用程序是 Linux 上最好的应用程序之一。

你可以在 [OBS Studio 官网](https://obsproject.com/) 了解更多的信息并下载，或者通过以下方式安装。

通过 PPA 在 Ubuntu 和相关发行版上安装：

```
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt update
sudo apt install obs-studio

```

如果你希望通过 Flatpak 安装 ，首先 [为 Flatpak 设置系统](https://www.debugpoint.com/2018/07/how-to-install-flatpak-apps-ubuntu-linux/) 然后 [通过这个页面安装](https://flathub.org/apps/details/com.obsproject.Studio) 。

在 Arch Linux 或者其他 Linux 版本，访问 [此页面](https://obsproject.com/wiki/unofficial-linux-builds) 了解。

#### 2、Inkscape

这里介绍的第二款应用是流行的 Inkscape。 Inkscape 是一个自由开源的矢量图形编辑软件。它主要用于创建可缩放的矢量图形（SVG）。此外，它是一款一流的应用，可以使用基本的矢量形状如矩形、多边形、螺旋形等。你可以使用这些基本图形以及辅助工具（见下文）创作一流的绘图。

此外，只要你有足够的技能，就可以使用 Inkscape 创作出 [绝妙的动画](https://inkscape.org/gallery/) 。这是艺术家必备的一款应用。

你可以在 [Inkscape 官网](https://inkscape.org/) 下载并了解更多相关信息，或者通过以下方式下载。

通过 PPA 在 Ubuntu 和相关发行版上安装：

```
sudo add-apt-repository ppa:inkscape.dev/stable
sudo apt update
sudo apt install inkscape

```

更多下载方式可以查看 [此页面](https://inkscape.org/release/) 。

#### 3、GIMP

GIMP 是 “<ruby> GNU 图像操作程序 <rt>  GNU Image Manipulation Program </rt></ruby>”的缩写，它是一个光栅图形编辑器，它有时候被视作 Linux 平台上的 [Photoshop 替代品](https://www.debugpoint.com/2018/09/3-best-free-photoshop-alternatives-ubuntu-linux/)（值得商榷）。这款拥有 20 年历史的应用适合于从基础到高级的图像编辑。此外，它支持图层、滤镜、装饰和其它对摄影工作必不可少的高级图像编辑功能。

[官方主页](https://www.gimp.org/) 是你了解更多关于 GIMP 的知识的最好的途径，可以在官网下载或者通过以下方式安装。

我推荐的方式是通过 Flatpak 下载最新版本 GIMP 。你可以为 Flatpak 设置 [你的系统](https://www.debugpoint.com/2018/07/how-to-install-flatpak-apps-ubuntu-linux/) 然后 [通过该页面安装](https://flathub.org/repo/appstream/org.gimp.GIMP.flatpakref) 。

[该页面](https://www.gimp.org/downloads/) 提供了更多下载选项。

#### 4、Spotify

Spotify 是一家专业提供音频流媒体和媒体服务的提供商。它是最广泛的音乐流媒体服务之一，有超过 400 万的月活用户。

首先，你需要安装客户端才能获取 Spotify 流媒体服务。其次，如果你是移动用户，你可以通过 Google Play 商店或者苹果应用商店获取 Spotify 应用。

在 Linux 上安装桌面客户端后你可以收听上百万首歌曲。你可以为不同的 Linux 发行版通过不同的方式安装 Spotify 。

推荐你在 Ubuntu 或者其他 Linux 上使用 Snap 来安装，你可以通过以下命令安装：

```
snap install spotify

```

如果你偏爱原始的 deb 包，你可以通过以下命令安装：

```
curl -sS https://download.spotify.com/debian/pubkey_5E3C45D7B312C643.gpg | sudo apt-key add -echo "deb http://repository.spotify.com stable non-free" | sudo tee /etc/apt/sources.list.d/spotify.list

```

你也可以使用非官方 [Flatpak 包](https://flathub.org/apps/details/com.spotify.Client) 进行安装。

#### 5、SimpleScreenRecorder

SimpleScreenRecorder 可能是最好的开源截屏工具。该应用程序易于使用并提供了各种功能。并且，其独特的 3 步录制屏幕的方法完全不需要学习。此外，你可以选择整个屏幕、窗口或自定义形状来记录屏幕。

此外，你还可以指定音频/视频比特率、音频源选项和不同的输出选项。最后，它可以安装在所有 Linux 发行版中。

[官方页面](https://www.maartenbaert.be/simplescreenrecorder/) 囊括了更多的 SimpleScreenRecorder 信息，你也可以使用如下方式下载。

在 Ubuntu 或其他相关发行版中使用下面的 PPA 命令安装该应用：

```
sudo apt-get updatesudo apt-get install simplescreenrecorder

```

访问 [此页](https://www.maartenbaert.be/simplescreenrecorder/#download) 获取更多下载版本。

#### 6、Calibre

Calibre 是一款可以在 Ubuntu、Linux Mint 以及其他 Linux 平台使用的自由开源的电子书库管理应用程序。它拥有书库管理、电子书格式转换、同步你的电子书设备以及其他独特的功能。你可以下载新闻和其他互联网上的文章，并可以使用 Calibre 转换成电子书格式。同时，它支持多种电子书格式进行管理。Calibre 是一款具有这些功能最好的电子书管理应用程序之一。

[Calibre 主页](https://calibre-ebook.com/) 提供了很多文件以及指导手册，你也可以使用以下方式下载。

* [下载 Linux 版本](https://calibre-ebook.com/download_linux)
* [下载其他系统版本](https://calibre-ebook.com/download)

#### 7、Scribus

多年来，桌面出版已经发生了变化。现今，仍有一些桌面出版的应用程序和基于网页的服务。Scribus 是早期的一款自由开源的桌面出版应用程序，可以在 Linux 发行版和其他操作系统中使用。此外，它基于 Qt，并带来了吸引人的用户界面，让你可以马上投入学习。此外，初学者和专业人士都可以使用它来创建令人惊叹的 DTP 页面。

并且它仍然在积极开发中。

你可以在 Scribus 的 [官方页面](https://www.scribus.net/) 了解更多信息并下载，或者通过以下方式安装。

Scribus 位于 Ubuntu 和其他相关发行版的主要存储库中。你可以运行以下命令进行安装：

```
sudo apt install scribus

```

[该页面](https://www.scribus.net/downloads/stable-branch/) 提供了其他下载选项。

#### 8、MyPaint

第八个应用程序是 MyPaint 。MyPaint 是一个自由开源的绘图程序，适用于数字艺术家。MyPaint 支持并可用于压感平板电脑和设备。其独特的无干扰设计可以让你专注于绘图而不是应用程序。此外，它还带来了真实铅笔和画笔的仿真，提供了各种画笔、颜色和图层。

浏览 MyPaint 的 [官方页面](http://mypaint.org/) 获取更多信息，可以使用以下方式下载。

推荐使用 Flatpak 安装 。你可以为 Flatpak 设置 [系统](https://www.debugpoint.com/2018/07/how-to-install-flatpak-apps-ubuntu-linux/) 然后 [通过该页面安装](https://flathub.org/repo/appstream/org.mypaint.MyPaint.flatpakref) 。

[该页面](http://mypaint.org/downloads/) 提供了其他下载选项。

#### 9、LibreOffice

如果有任何专业的办公套件可以和市场领导者微软 Office 相媲美，那一定是文档基金会的 LibreOffice 了 。它是所有 Linux 发行版的默认办公套件。它带有电子表格程序（Calc）、文字处理器（Writer）、演示文稿（Impress）和用来绘图的 Draw。此外，它还带来了一个数据库系统 （Base）和用来撰写数学公式的 Math。

除此之外， LibreOffice 提供两个版本。其一是社区版，用于社区和一般用途，并带有最新的功能和更新。第二是商务版，也称企业版，更稳定，更适合专业工作。

LibreOffice 办公套件已默认安装在 Ubuntu 上。

[LibreOffice 的官方文档](https://help.libreoffice.org/latest/index.html) 很庞大，你可以通过各种方式浏览它们，包括在它 [友好的论坛](https://ask.libreoffice.org/) 。你可以 [从此处](https://www.libreoffice.org/download/download/) 下载 LibreOffice。

如果你也想升级 LibreOffice ，你可以访问 [这里](https://www.debugpoint.com/2022/06/libreoffice-upgrade-update-latest/) 。

#### 10、Cawbird

如果你是重度 Twitter 用户，你或许应考虑一款桌面应用。 Cawbird 是一款 Linux 发行版上的 Twitter 桌面程序。它是 Corebird 应用（已停止维护）的复刻，Cawbird 带来了内嵌图片、视频预览、列表支持等。此外，它可以在 Twitter 上进行全文搜索，并支持多个 Twitter 帐户。

但是，由于 Twitter API 的限制，它只能每两分钟刷新一次，此外，还有一些其他限制，例如没有关注和取消关注的通知、阻止、静音和其他功能。Twitter 强加了这些限制。

最后，你可以通过 [该链接](https://software.opensuse.org//download.html?project=home%3AIBBoard%3Acawbird&package=cawbird) 在任何 Linux 发行版上下载 Cawbird 。

### 结语

这是 2022 年 5 篇系列的必备 Ubuntu 应用程序的第 2 篇。通过以上信息，我希望你可以选择一些应用供你的日常使用。在下面的评论框中告诉我你更喜欢此列表中的哪些应用程序。

最后，请继续关注本 Ubuntu 应用程序系列的第 3 部分。

---

via: <https://www.debugpoint.com/best-ubuntu-apps-2022-part2/>

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

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


硬核观察 #694 马斯克称推特的 API 速率限制是他决定放弃收购的核心原因

Summary: • 马斯克称推特的 API 速率限制是他决定放弃收购的核心原因 • 许多老的 X.Org 组件在本周末有新的发布 • Linode 现在提供 Kali Linux 实例

# 硬核观察 #694 马斯克称推特的 API 速率限制是他决定放弃收购的核心原因

### 马斯克称推特的 API 速率限制是他决定放弃收购的核心原因

马斯克曾多次公开表示，他希望知道有多少推特账户是由机器人运营的，因为他觉得可疑账户的数量影响了公司的价值。因此他寻求检测和处理虚假账户的方法。当推特最终提供了马斯克明确要求的 8 个开发者 API 的访问权时，这些 API 的速率限制低于推特向其最大企业客户提供的速率限制。马斯克称，这使得他们无法在任何合理的时间内完成数据分析。

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

>
> 老王点评：看看，对 API 访问提供速率限制有多严重。: D
>
>
>

### 许多老的 X.Org 组件在本周末有新的发布

上周末，Oracle 的长期 X.Org 贡献者 Alan Coopersmith 对各种旧的、很少维护的 X.Org 项目发布了许多新的更新。这些软件多年来没有任何更新，新的版本大多只是收集了过去几年中的一些随机修复。总的来说，这些更新并没有什么值得兴奋的改进。

>
> **[消息来源：Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=Xorg-July-2022-Update)**
>
>
>

>
> 老王点评：这是觉得 X.org 快被放弃了才最后抢救一次？从另外一方面看，可见 X.org 社区有多冷清了。连随手收到的一些修复都懒得发布个新版本。
>
>
>

### Linode 现在提供 Kali Linux 实例

Kali Linux 是一个为渗透测试或黑客而设计的 Linux 发行版。这个基于 Debian 的 Linux 是安全研究人员最喜欢的发行版。它现在可以在 Linode 云上使用了，你可以用它来测试和保护你的生产系统。Linode 云是第一个与 Kali Linux 合作的替代云提供商。

>
> **[消息来源：ZDNet](https://www.zdnet.com/article/akamai-linode-now-offers-kali-linux-instances/)**
>
>
>

>
> 老王点评：这是一个跑在公有云上的黑客套装？总觉得哪里不对。
>
>
>


谷歌编程之夏与 Zephyr RTOS 项目介绍

Summary: 今年，该项目向 18 岁或以上的任何人开放 —— 不仅限于学生和应届毕业生了。

今年，该项目向 18 岁或以上的任何人开放 —— 不仅限于学生和应届毕业生了。

# 谷歌编程之夏与 Zephyr RTOS 项目介绍

**谷歌编程之夏**（GSoC）是一个谷歌举办的国际年度项目，每年都在夏季举办。当贡献者们参与并完成一个 [自由开源软件](https://en.wikipedia.org/wiki/Free_and_open-source_software) 的编码项目，[谷歌](https://en.wikipedia.org/wiki/Google) 就会给他们发放 [津贴](https://en.wikipedia.org/wiki/Stipend)。谷歌编程之夏于 2005 年推出，于每年 5 月至 8 月举行。项目创意由参与开源软件开发的主办组织提交，但学生也可以提出自己的项目创意。

今年，该项目向 18 岁或以上的任何人开放 —— 不仅限于学生和应届毕业生了。参与者通过编写软件获得报酬，其 [津贴](https://en.wikipedia.org/wiki/Stipend) 的金额取决于他们所在国家/地区的 [购买力平价](https://en.wikipedia.org/wiki/Purchasing_power_parity)。

**LCTT 译注：以往，这个活动只允许在校学生参与，今年条件放开，只需年龄 18+ 即可，对参与者的贡献时长要求也降低了，尽可能地让更多人参与进来。不过，今年的报名通道在 4 月 19 日就截止了，大家有兴趣的话明年可以关注一下。**

这也是 Zephyr 项目第一次作为 Linux 基金会的项目，参与到谷歌编程之夏中。让我们一起欢迎这些贡献者及其项目吧！

### 项目一：基于 Zephyr 的 Arduino 模块

1 个贡献者（350 小时）。

[Arduino](https://www.arduino.cc/) 是一个流行的框架，它为嵌入式设备编程提供了一个简化的接口。最近，Arduino 采用 mbed OS 作为其一些新设备的基础 RTOS。通过这项工作，他们将 [Arduino Core](https://github.com/arduino/ArduinoCore-API) 作为独立的抽象层，从 [Arduino Core for mbed](https://github.com/arduino/ArduinoCore-mbed) 中分离出来。这为在其他操作系统上利用 Arduino Core 开辟了可能性。

该项目的想法就是创建一个利用 Arduino Core 的 Zephyr 模块，以便开发人员在与 Arduino 兼容的设备上使用 Arduino 框架时，可以使用 Zephyr 作为底层操作系统。对用户的好处包括：

* 可以访问 Arduino API 以及高级 Zephyr 功能
* 得益于 Zephyrs 的设备支持，用户可以选择标准 Arduino 生态系统更广泛的设备
* 能够重复使用 Arduino 工具，如 Arduino IDE 和丰富的库

Arduino Core 使用 LGPL 许可证，Zephyr 使用 Apache 2 许可证。这意味着该项目的开发很可能需要脱离主分支，并在单独的仓库中进行，以保持代码和许可证分离。有关这方面的历史讨论，请参阅 [#22247](https://github.com/zephyrproject-rtos/zephyr/issues/22247)，有关 Arduino 核心架构之前的早期尝试，请参阅 [soburi/arduino-on-zephyr](https://github.com/soburi/arduino-on-zephyr)。

**贡献者的任务是：**

* 实现一个基于 Arduino Core 的准系统模块，可以为任何目标编译（不具备功能性，可能在 QEMU 中）
* 基于 Zephyr，使用 Arduino API 实现一个通用外围设备，例如 [Serial](https://www.arduino.cc/reference/en/language/functions/communication/serial/)
* 以一个物理板为目标，例如 Arduino Zero

**导师：**

[Jonathan Beri](https://www.linkedin.com/in/jonathanberi/) – Golioth 和 Zephyr TSC 的首席执行官 [Alvaro Viebrantz](https://www.linkedin.com/in/alvaro-viebrantz-55119048/) – Golioth 和 Google GDE 的创始工程师

**代码许可证：** LGPL

**贡献者详细信息：**

* 姓名：Dhruva Gole
* 项目博客：<https://dhruvag2000.github.io/Blog-GSoC22/>
* 项目海报：（题图）

**关于贡献者：**

Dhruva 是一名电气工程专业的本科生。他的兴趣广泛，从嵌入式软件开发到硬件设计，在 SBC、微控制器和嵌入式 Linux 平台方面拥有丰富的工作经验。

### 项目二：Zephyr 的 Apache Thrift 模块

一个贡献者（350 小时）。

[Apache Thrift](https://github.com/apache/thrift) 是一个 [IDL](https://en.wikipedia.org/wiki/Interface_description_language) 规范、[RPC](https://en.wikipedia.org/wiki/Remote_procedure_call) 框架和代码生成器，它抽象出传输和协议细节，让开发者专注于应用逻辑。它适用于所有主流操作系统，支持超过 27 种编程语言、7 种协议和 6 种底层传输方式。最初，它于 [2007 年在 Facebook 开发](https://thrift.apache.org/static/files/thrift-20070401.pdf)，随后与 Apache 软件基金会共享。

在 Zephyr RTOS 中支持 Thrift 将使社区受益匪浅。它将带来新的软件和硬件技术、新产品以及云集成的其他方式。 Thrift 也可以用于几乎任何传输，因此，它是 Zephyr 支持的许多不同物理通信层的自然选择。该项目的想法是使概念验证 [Thrift for Zephyr 模块](https://github.com/cfriedt/thrift-for-zephyr) 形成以供上游使用。为此，贡献者必须：

* 对 Thrift 功能（协议、传输）执行额外的集成
* 使用 [supported board](https://docs.zephyrproject.org/latest/boards/index.html) 或 [Qemu](https://docs.zephyrproject.org/latest/guides/networking/qemu_user_setup.html) 编写其他示例应用程序
* 使用 [Zephyr 测试框架](https://docs.zephyrproject.org/latest/guides/test/ztest.html) 编写其他测试并生成覆盖率报告
* 确保模块遵循适当的 [编码指南](https://docs.zephyrproject.org/latest/contribute/coding_guidelines/index.html) 并满足 [模块要求](https://docs.zephyrproject.org/latest/guides/modules.html)
* 将任何必要的改进贡献回 Apache Thrift 项目
* 将任何必要的改进贡献回 Zephyr 项目

**导师：**

* [Christopher Friedt](https://www.linkedin.com/in/christopher-friedt/) – Meta 的 SWE / ASIC FW 和 Zephyr TSC 成员
* [Stephanos Ioannidis](https://www.linkedin.com/in/stephanosio/) – Zephyr CXX 子系统维护者

**代码许可证：** Apache 2.0

**贡献者详细信息：**

* 姓名：Young

**关于贡献者：** Young 是一名通信工程专业的学生，他将攻读计算机工程硕士学位。他兴趣广泛，从前端开发到硬件设计，在 Web、IoT 和嵌入式平台方面拥有丰富的工作经验。2021 年他设计的一款搭载 RISC-V 64 处理器的低成本单板机被多家极客媒体报道。

本文 [Google Summer of Code + Zephyr RTOS](https://www.linuxfoundation.org/blog/google-summer-of-code-zephyr-rtos/) 首发于 [Linux 基金会](https://www.linuxfoundation.org/)。

---

via: <https://www.linux.com/news/google-summer-of-code-zephyr-rtos/>

作者：[The Linux Foundation](https://www.linuxfoundation.org/blog/google-summer-of-code-zephyr-rtos/) 选题：[lkxed](https://github.com/lkxed) 译者：[lkxed](https://github.com/lkxed) 校对：[wxy](https://github.com/wxy)

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


Linux 上静态链接库工作原理

Summary: 学习如何用静态链接库将多个 C 目标文件结合到一个单个的可执行文件之中。

学习如何用静态链接库将多个 C 目标文件结合到一个单个的可执行文件之中。

# Linux 上静态链接库工作原理

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

>
> 学习如何用静态链接库将多个 C 目标文件结合到一个单个的可执行文件之中。
>
>
>

使用 C 编写的应用程序时，通常有多个源码文件，但最终你需要编译成单个的可执行文件。

你可以通过两种方式来完成这项工作：通过创建一个 <ruby> 静态 <rt>  static </rt></ruby> 库 或 一个 <ruby> 动态 <rt>  dynamic </rt></ruby> 库（也被称为 <ruby> 共享 <rt>  shared </rt></ruby> 库）。从创建和链接的方式来看，它们是两种不同类型的库。选择使用哪种方式取决于你的的具体场景。

在 [上一篇文章](/article-14813-1.html) 中，我演示了如何创建一个动态链接的可执行文件，这是一种更通用的方法。在这篇文章中，我将说明如何创建一个静态链接的可执行文件。

### 使用静态库链接器

<ruby> 链接器 <rt>  linker </rt></ruby>是一个命令，它将一个程序的多个部分结合在一起，并为它们重新组织内存分配。

链接器的功能包括：

* 整合一个程序的所有的部分
* 计算出一个新的内存组织结构，以便所有的部分组合在一起
* 恢复内存地址，以便程序可以在新的内存组织结构下运行
* 解析符号引用

链接器通过这些功能，创建了一个名称为可执行文件的一个可运行程序。

静态库是通过复制一个程序中的所有依赖库模块到最终的可执行镜像来创建的。链接器将链接静态库作为编译过程的最后一步。可执行文件是通过解析外部引用、将库例程与程序代码结合在一起来创建的。

### 创建目标文件

这里是一个静态库的示例以及其链接过程。首先，创建带有这些函数识别标志的头文件 `mymath.h` :

```
int add(int a, int b);
int sub(int a, int b);
int mult(int a, int b);
int divi(int a, int b);

```

使用这些函数定义来创建 `add.c` 、`sub.c` 、`mult.c` 和 `divi.c` 文件。我将把所有的代码都放置到一个代码块中，请将其分为四个文件，如注释所示：

```
// add.c
int add(int a, int b){
return (a+b);
}

//sub.c
int sub(int a, int b){
return (a-b);
}

//mult.c
int mult(int a, int b){
return (a*b);
}

//divi.c
int divi(int a, int b){
return (a/b);
}

```

现在，使用 GCC 来生成目标文件 `add.o` 、`sub.o` 、`mult.o` 和 `divi.o`：

（LCTT 校注：关于“<ruby> 目标文件 <rt>  object file </rt></ruby>”，有时候也被称作“对象文件”，对此，存在一些译法混乱情形，称之为“目标文件”的译法比较流行，本文采用此译法。）

```
$ gcc -c add.c sub.c mult.c divi.c

```

`-c` 选项跳过链接步骤，而只创建目标文件。

创建一个名称为 `libmymath.a` 的静态库，接下来，移除目标文件，因为它们不再被需要。（注意，使用一个 `trash` 命令比使用一个 `rm` 命令更安全。）

```
$ ar rs libmymath.a add.o sub.o mult.o divi.o
$ trash *.o
$ ls
add.c  divi.c  libmymath.a  mult.c  mymath.h  sub.c

```

现在，你已经创建了一个名称为 `libmymath` 的简单数学示例库，你可以在 C 代码中使用它。当然，也有非常复杂的 C 库，这就是他们这些开发者来生成最终产品的工艺流程，你和我可以安装这些库并在 C 代码中使用。

接下来，在一些自定义代码中使用你的数学库，然后链接它。

### 创建一个静态链接的应用程序

假设你已经为数学运算编写了一个命令。创建一个名称为 `mathDemo.c` 的文件，并将这些代码复制粘贴至其中：

```
#include <mymath.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
  int x, y;
  printf("Enter two numbers\n");
  scanf("%d%d",&x,&y);

  printf("\n%d + %d = %d", x, y, add(x, y));
  printf("\n%d - %d = %d", x, y, sub(x, y));
  printf("\n%d * %d = %d", x, y, mult(x, y));

  if(y==0){
    printf("\nDenominator is zero so can't perform division\n");
      exit(0);
  }else{
      printf("\n%d / %d = %d\n", x, y, divi(x, y));
      return 0;
  }
}

```

注意：第一行是一个 `include` 语句，通过名称来引用你自己的 `libmymath` 库。

针对 `mathDemo.c` 创建一个名称为 `mathDemo.o` 的对象文件:

```
$ gcc -I . -c mathDemo.c

```

`-I` 选项告诉 GCC 搜索在其后列出的头文件。在这个实例中，你通过单个点（`.`）来指定当前目录。

链接 `mathDemo.o` 和 `libmymath.a` 来生成最终的可执行文件。这里有两种方法来向 GCC 告知这一点。

你可以指向文件：

```
$ gcc -static -o mathDemo mathDemo.o libmymath.a

```

或者，你可以具体指定库的路径及名称：

```
$ gcc -static -o mathDemo -L . mathDemo.o -lmymath

```

在后面的那个示例中，`-lmymath` 选项告诉链接器来链接对象文件 `mathDemo.o` 和对象文件 `libmymath.a` 来生成最终的可执行文件。`-L` 选项指示链接器在下面的参数中查找库（类似于你使用 `-I` 所做的工作）。

### 分析结果

使用 `file` 命令来验证它是静态链接的：

```
$ file mathDemo
mathDemo: ELF 64-bit LSB executable, x86-64...
statically linked, with debug_info, not stripped

```

使用 `ldd` 命令，你将会看到该可执行文件不是动态链接的：

```
$ ldd ./mathDemo
        not a dynamic executable

```

你也可以查看 `mathDemo` 可执行文件的大小：

```
$ du -h ./mathDemo
932K    ./mathDemo

```

在我 [前一篇文章](/article-14813-1.html) 的示例中，动态链接的可执行文件只占有 24K 大小。

运行该命令来看看它的工作内容：

```
$ ./mathDemo
Enter two numbers
10
5

10 + 5 = 15
10 - 5 = 5
10 * 5 = 50
10 / 5 = 2

```

看起来令人满意！

### 何时使用静态链接

动态链接可执行文件通常优于静态链接可执行文件，因为动态链接会保持应用程序的组件模块化。假如一个库接收到一次关键安全更新，那么它可以很容易地修补，因为它存在于应用程序的外部。

当你使用静态链接时，库的代码会“隐藏”在你创建的可执行文件之中，意味着在库每次更新时（相信我，你会有更好的东西），仅有的一种修补方法是重新编译和发布一个新的可执行文件。

不过，如果一个库的代码，要么存在于它正在使用的具有相同代码的可执行文件中，要么存在于不会接收到任何更新的专用嵌入式设备中，那么静态连接将是一种可接受的选项。

---

via: <https://opensource.com/article/22/6/static-linking-linux>

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

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


Ubuntu 22.04 LTS 是目前最安全的版本的七大原因

我不信。

# Ubuntu 22.04 LTS 是目前最安全的版本的七大原因

>
> Ubuntu 22.04 LTS 是迄今为止最好的 Ubuntu 版本之一。是什么让它如此安全？
>
>
>

早在今年 4 月就发布了的 [Ubuntu 22.04 LTS](https://news.itsfoss.com/ubuntu-22-04-release/)，是迄今为止最安全的 Ubuntu 版本。

其安全更新的延长支持、新的硬件支持和其他林林总总的改进，使它在安全方面远远超过了之前的所有版本。

但它是如何做到这一点的呢？还有，是什么让这个版本与以前的版本不同的呢？

嗯，有几个原因，Canonical 在一篇新的博客文章中为我们重点指出了这些。在这里，让我总结一下，以帮助你了解更多。

### 是什么让 Ubuntu 22.04 LTS 变得安全？

在这个版本中，Ubuntu 团队似乎投入了大量的工作来确保其长期的安全性和可靠性。尽管多年来他们以难以想象的方式做到了这一点，但我将强调其中的几件事：

* 改进的硬件安全措施支持
* 更新了安全包
* 私有家目录
* OpenSSL 3
* GCC 11
* nftables 作为默认的防火墙后端
* Linux 内核改进

#### 1、改进的硬件安全措施支持

随着英特尔、AMD 和 ARM 的 CPU/SoC 开始推出更多的安全措施，拥有足够的软件来让这些功能发挥作用就变得越来越重要。

截至目前，Ubuntu 22.04 支持三种主要的硬件安全措施。

英特尔的 “<ruby> 软件保护扩展 <rt>  Software Guard eXtensions </rt></ruby>”（SGX）提供了一个安全独立的区域来进行敏感计算。例如，理想情况下，密码处理将在这里进行，因为它确保没有其他应用程序可以访问这些数据。

还有 AMD 的“<ruby> 安全加密虚拟化 <rt>  Secure Encrypted Virtualization </rt></ruby>”（SEV）。这项技术旨在防止主机操作系统干扰正在运行的虚拟机。

尽管这与桌面用户的相关性不如其他技术，但要知道，很多数据中心的基础设施都依赖虚拟机来实现应用的容器化。总的来说，此类针对硬件的安全措施应该会加强对桌面和服务器用户的保护。

#### 2、Linux 内核安全的改进

随着 Ubuntu 的每一次发布，Linux 内核都会得到升级，提供了许多有用的功能和支持。

但是，这一次，Canonical 推出了针对不同的平台的优化内核版本。对于 OEM 认证的桌面设备，它提供了 [Linux 内核 5.17](https://news.itsfoss.com/linux-kernel-5-17-release/)。

而对于所有的桌面和服务器用户，可以使用 [Linux 内核 5.15 LTS](https://news.itsfoss.com/linux-kernel-5-15-release/)。

不仅仅限于这个概念，在 [博文](https://ubuntu.com/blog/whats-new-in-security-for-ubuntu-22-04-lts) 中提到的一些基本内核安全增强措施包括：

* 支持 [核心调度](https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/core-scheduling.html)，它允许进程控制哪些线程可以在 SMT 同级之间调度，以便让它们保护敏感信息，而不泄露给系统中其他不受信任的进程。
* 内核堆栈随机化提供了一种加固措施，以挫败希望在内核内进行内存破坏攻击的攻击者。
* BPF 子系统也有一些安全方面的增强，包括默认情况下限制为只有特权进程可以使用，以及对签名的 BPF 程序的初步支持。
* 新的 Landlock Linux 安全模块的加入为应用程序沙箱提供了另一种机制，可以通过 AppArmor 或 SELinux 与更传统的方式结合使用。

总之，所有这些改进使 Ubuntu 22.04 LTS 成为开发者、用户和系统管理员的更安全的选择。

#### 3、更新的安全软件包

让我们从技术性的安全概念退后一步，回到每个 Ubuntu 用户都应该已经熟悉的概念：软件包。每一个新的 Ubuntu 版本，软件库中的大多数软件包都会更新，以带来更好的安全性和新功能。

尽管对于 Ubuntu 22.04 来说，这并不完全是新的东西，但这确实包括了很多安全方面的更新。这方面的例子包括 openSSL 3 和 GCC 11。

#### 4、OpenSSL 3

OpenSSL 是所有安全通信的支柱。

考虑到包括 MD2 和 DES 在内的许多传统算法已经被废弃并默认禁用，OpenSSL 3 作为一个重大的升级特别值得关注。

因此，除非用户特别想使用不太安全的算法，否则你将在默认情况下获得最好的安全性。

#### 5、GCC 11

另一方面，GCC 是许多开发者用来将他们的代码变成可以在你的计算机上运行的程序的编译器。

它带来了许多改进，但有一项特别显著地提高了安全性。静态分析得到了极大的加强，使开发人员能够更快地发现软件的漏洞，在第一步就防止有漏洞的代码被发布。

这可能不会直接影响到用户，许多开发人员使用 Ubuntu 来开发他们的应用程序。因此，你下载的很多程序，即使在非 Ubuntu 系统上，也应该比以前更安全。

#### 6、私有家目录

作为一个传统上以桌面为重点的发行版，Ubuntu 经常选择方便而不是安全。然而，随着他们越来越努力地推动云计算的采用，这种情况必须改变。

以前，任何有权限进入电脑的人都可以打开并查看任何用户的家目录。然而，你可以想象，这给非桌面用户带来了很多问题。因此，需要改变为私有家目录。

对于多用户系统来说，这可能稍显不方便，但这可以相对容易地改变。而且，对于那些不太熟悉技术的人来说，他们不需要做任何事情就可以得到更好的安全保障。

#### 7、nftables 作为默认防火墙后端

25 年来，防火墙一直是将你的计算机与更广泛的互联网隔离开来的一个关键部分。这些年来，Linux 发行版通常使用两种不同的防火墙解决方案：iptables 和 xtables。

然而，近些年来，一种不同的解决方案进入了人们的视野：nftables。它提供了显著的性能和灵活性的改进，使网络管理员能够更好地保护你的设备。

### 总结

毋庸置疑，Ubuntu 22.04 LTS 做了很多不错的升级。不仅仅是用户体验，它在安全方面也是一个重大的飞跃。

当然，还有更多，但上面提到的改进是很好的成就！

关于更多的技术细节，你可以查看这篇 [Ubuntu 的官方博客文章](https://ubuntu.com/blog/whats-new-in-security-for-ubuntu-22-04-lts)。

---

via: <https://news.itsfoss.com/reasons-ubuntu-22-04-secure/>

作者：[Jacob Crume](https://news.itsfoss.com/author/jacob/) 选题：[lkxed](https://github.com/lkxed) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #695 越来越多的网站不支持 Firefox

Summary: • 越来越多的网站不支持 Firefox • 科学家找到了一类量子算法可以解决的新问题 • 过去十年的本田车型都可能受到网络攻击

Chrome内核的浏览器迟早会从屠龙英雄变成那头恶龙。

只用Safari. Chrome太笨重了！

只用Safari. Chrome太笨重了！

# 硬核观察 #695 越来越多的网站不支持 Firefox

### 越来越多的网站不支持 Firefox

日本 NHK 宣布在其视频平台 NHK+ 上将不支持 Firefox，而推荐用户使用 Chrome、Edge 或 Safari 的最新版本。苹果的商业网站 [business.apple.com](http://business.apple.com/) 也把 Firefox 排除在支持范围之外，使用任何版本的 Firefox 打开该网站就会显示“你的浏览器不受支持”，它也推荐用户使用 Firefox 外的浏览器。

>
> **[消息来源：Solidot](https://www.solidot.org/story?sid=72096)**
>
>
>

>
> 老王点评：虽然 Firefox 的标准遵从性还不错，但是随着 Chrome 的市场占据了大部分份额，网站也会越来越依赖 Chrome 独有的一些特性。Firefox 的日子会越来越难过。
>
>
>

### 科学家找到了一类量子算法可以解决的新问题

1994 年数学家 Peter Shor 想出了如何让量子计算机完成普通经典计算机无法做到的事情。原则上，一台基于量子规则的机器可有效地将大数分解为质因数，这对于经典计算机来说，这是一项非常困难的任务。但三十年来，科学家们仅在一个被称为 NP 的标准集中发现了一个单一的、狭窄的问题类别可以显著加速。今年四月，科学家们又发现了一类量子计算可以以指数级速度解决的问题：它涉及仅根据混乱的输出来计算复杂数学过程的输入。

>
> **[消息来源：Solidot](https://www.solidot.org/story?sid=72102)**
>
>
>

>
> 老王点评：目前看起来量子计算还只能用在很狭窄的领域，什么时候可以进行通用计算，或许带来的是颠覆性的变化，对这一天，我是又期盼，又恐惧。
>
>
>

### 过去十年的本田车型都可能受到网络攻击

安全研究人员发布了他们使用手持无线电解锁和远程启动几辆本田汽车的视频，他们称，这是因为 2012 年至今 10 年间生产的许多本田汽车的无钥匙进入系统存在漏洞。这种攻击使用无线电设备记录来自钥匙扣的合法无线电信号，然后将其传送到汽车上。这被称为重放攻击。理论上，每个信号应该只起一次作用；当按下按钮解锁汽车时，车就会解锁并且这个信号不应该再次用于解锁。但安全研究人员发现，这种攻击之所以奏效是因为它能够重新同步汽车的计数器，使之可以接受旧的代码。但本田否认了这一漏洞。

>
> **[消息来源：The Drive](https://www.thedrive.com/news/i-tried-the-honda-keyfob-hack-on-my-own-car-it-totally-worked)**
>
>
>

>
> 老王点评：目前看起来汽车的电子钥匙其实挺危险的。
>
>
>


怀念 Firefox Send 吗？不妨试试 Internxt Send 吧

Firefox send 有一个开源的替代品，是从firefox fork出来的，可以自己架设

# 怀念 Firefox Send 吗？不妨试试 Internxt Send 吧

>
> Internxt 发布了一个新产品，它可以让你快速地将加密文件发送给任何人，同时保持你的隐私。嗯，我们只能希望它不会像 Firefox Send 那样关闭吧……
>
>
>

[Internxt](https://itsfoss.com/internxt-cloud-service/) 是一个相当新的开源加密云服务，旨在取代大型科技公司的产品。例如，你可以把它作为谷歌的相册和云端硬盘的替代品。

它免费提供 10 GB 的容量。所以，如果感兴趣的话，你可以注册个账号试一试。

最近，他们还新增了另一个产品 “Internxt Send”，作为 Firefox Send 的替代品，填补这个空缺。

唉，说到这里还挺遗憾的，Firefox Send 已停止服务了，不得不说它是一个很好的工具！

不过，[Internxt Send](https://send.internxt.com/) 让你可以像 Firefox Send 一样安全地发送/共享图像、视频、文档和其他文件。

### Internxt Send：一个安全的文件共享服务

我在 GitHub 上找不到 Internxt Send 的存储库，但我已经要求他们澄清了。

（LCTT 译注：虽然 Internxt 是在 GitHub 上开源的，但是 GitHub 上没有 Internxt Send 这个产品的存储库，产品的介绍里也没有声称它是开源的。）

正如你所期望的那样，你无需创建帐户即可将文件上传到 Internxt Send。

文件上传限制为 5 GB。而且，你不能以任何方式提高这个限制。

你可以选择文件，上传并生成共享链接。或者，你也可以直接向收件人发送电子邮件，那样的话，你需要在邮件里分享你的电子邮件地址。

有趣的是，它还允许你在这个电子邮件中添加自定义文本。

与 Firefox Send 不同的是，你无法修改文件共享链接的到期时间，或者是让它在多次下载后失效。默认情况下，链接会在 15 天后过期，你无法更改这个时间。嗯，这还挺扫兴的。

但是，对于那些正在苦苦等待一个加密的共享文件服务的人来说，这可能是一种替代方案。

*我认为有更多的 Firefox Send 替代品是件好事！你对 Internxt Send 有何看法？欢迎在下方评论区里和大家分享。*

---

via: <https://news.itsfoss.com/internxt-send/>

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

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


检查 Linux 磁盘使用情况

# 检查 Linux 磁盘使用情况

>
> du 和 ncdu 两个命令提供了相同信息的两种不同视图，便于我们跟踪存储在计算机上的内容。
>
>
>

无论你有多少存储空间，了解文件占用了多少磁盘空间都是一个重要的考虑事项。我的笔记本有一个相对较小的 250GB NVME 驱动器，大多数时候都没什么问题，但几年前我开始探索 Linux 上的游戏，情况变得有所不同，安装 Steam 和其他游戏使存储管理更加重要。

### du 命令

检查磁盘驱动器上剩余存储空间最简单的方法是 [du 命令](https://opensource.com/article/21/7/check-disk-space-linux-du)。它会估计文件空间使用情况，像其他所有 Linux 工具一样，`du` 非常强大，但学会如何根据你的特定需求使用它会很有帮助。我总是查阅手册页来掌握实用程序的用法。`du` 有几个选项，可以为你提供文件存储的最佳快照，以及它们在系统上消耗多少空间。

`du` 命令有很多选项，以下是一些常见的：

* `-a` - 包括文件夹和文件在内的存储信息
* `--apparent-size` - 打印自身大小而不是占用磁盘量
* `-h` - 人类可读的格式
* `-b` - 以字节为单位
* `-c` - 总计
* `-k` - 以块为单位
* `-m` - 以兆字节为单位的大小

务必查看 `du` 手册页获取完整帮助列表。

#### 显示所有文件

你可以选择的第一个选项是 `du -a`，它可以显示系统上所有文件及其存储目录的大小。这个命令让我知道了我的主目录中存储了 11555168 个字节。使用 `du -a` 可以快速递归地查看我的存储系统。如果我想要一个更有意义的数字，并且我想深入到目录中查看大文件的位置，该怎么办？

我认为在 `Downloads` 目录下有一些大文件，所以我输入 `du -a /home/don/Downloads` 来查看。

```
$ du -a ~/Downloads
4923    ./UNIX_Driver_5-0/UNIX Driver 50
4923    ./UNIX_Driver_5-0
20      ./epel-release-latest-9.noarch.rpm
12      ./rpmfusion-free-release-9.noarch.rpm
2256    ./PZO9297 000 Cover.pdf
8       ./pc.md
2644    ./geckodriver-v0.31.0-linux64.tar.gz
466468

```

最左边的数字是以字节为单位的文件大小。我想要一些对我更有帮助的东西，所以我将人类可读格式的选项添加到命令中，结果是 456M（兆字节），这对我来说是一种更有用的数字格式。

```
$ du -ah ~/Downloads
4.9M    ./UNIX_Driver_5-0/UNIX Driver 50
4.9M    ./UNIX_Driver_5-0
20K    ./epel-release-latest-9.noarch.rpm
12K    ./rpmfusion-free-release-9.noarch.rpm
2.2M    ./PZO9297 000 Cover.pdf
8.0K    ./pc.md
2.6M    ./geckodriver-v0.31.0-linux64.tar.gz
456M    .

```

与大多数 Linux 命令一样，你可以组合选项，要以人类可读的格式查看 `Downloads` 目录，使用 `du -ah ~/Downloads` 命令。

#### 总和

`-c` 选项在最后一行提供了磁盘使用总和。我可以使用 `du -ch /home/don` 来显示主目录中的每个文件和目录。这里有很多信息，我只想知道最后一行的信息，所以我将 `du` 命令通过管道传输给 `tail` 来显示最后几行。命令是 `du -ch /home/don | tail`。（LCTT 校注：可以使用 `tail -1` 来仅显示最后一行汇总行。）

### ncdu 命令

对存储在驱动器上内容感兴趣的 Linux 用户，另一个选择是 [ncdu 命令](https://opensource.com/article/21/8/ncdu-check-free-disk-space-linux)，它代表 “NCurses 磁盘使用情况”。基于你的 Linux 发行版，你可能需要下载并安装它。

在 Linux Mint、Elementary、Pop\_OS! 或其它基于 Debian 的发行版上：

```
$ sudo apt install ncdu

```

在 Fedora、Mageia 或 CentOS 上：

```
$ sudo dnf install ncdu

```

在 Arch、Manjar 或者类似发行版上：

```
$ sudo pacman -S ncdu

```

安装后，你可以使用 `ncdu` 来分析你的文件系统。以下是在我的主目录中发出 `ncdu` 后的示例输出。`ncdu` 的手册页指出 “ncdu（NCurses Disk Usage）是众所周知的 `du` 基于 curses 的版本，它提供了一种快速查看哪些目录正在使用磁盘空间的方法。”

我可以使用方向键上下导航，按下回车键进入目录。有趣的是，`du` 报告我的主目录中的总磁盘使用量为 12GB，而 `ncdu` 显示为 11GB。你可以在 `ncdu` 手册页中找到更多信息。

你可以将 `ncdu` 指向某个目录来探索特定目录。例如，`ncdu /home/don/Downloads`。

按 `?` 键显示帮助菜单。

### 总结

`du` 和 `ncdu` 两个命令提供了相同信息的两种不同视图，便于我们跟踪存储在计算机上的内容。

如果你不习惯使用终端，或者想寻找此类信息的另一种查看方式，可以看看 [GNOME 磁盘使用分析器](https://help.gnome.org/users/baobab/stable/)。如果你的系统上还没有它，你可以轻松安装和使用它。检查你的发行版是否有 baobab 开发的这个软件，如果你想试试，那就去安装它吧。

（文内图片来自于 Don Watkins, CC BY-SA 4.0）

---

via: <https://opensource.com/article/22/7/check-disk-usage-linux>

作者：[Don Watkins](https://opensource.com/users/don-watkins) 选题：[lkxed](https://github.com/lkxed) 译者：[MjSeven](https://github.com/MjSeven) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #696 微软仍计划默认屏蔽下载的 Office 文件中的宏

Summary: • 微软仍计划默认屏蔽下载的 Office 文件中的宏 • PyPI 将向关键项目赠送 4000 个安全密钥 • 美国企业领导人敦促加强计算机科学教育

# 硬核观察 #696 微软仍计划默认屏蔽下载的 Office 文件中的宏

### 微软仍计划默认屏蔽下载的 Office 文件中的宏

多年来，黑客们经常用恶意的宏来攻击 Office 文件。微软原本计划要求 Office 用户在打开从互联网下载的 Office 文件时，通过在文件属性中专门勾选一个解禁选项来启用宏程序。之前计划在 6 月份实施。但微软在 6 月 30 日突然撤销了这一阻止。微软解释称，“根据用户的反馈，我们暂时回退了这一变化，同时我们做了一些额外的改变以提高可用性。”目前，Office 用户可以简单地在文件顶部的横幅上点击一个启用按钮。微软称，“这是一个临时的变化，我们完全致力于为所有用户进行默认的改变。”

>
> **[消息来源：The Verge](https://www.theverge.com/2022/7/11/23203554/microsoft-block-office-vba-macros-changes-temporary-statement)**
>
>
>

>
> 老王点评：宏给 Office 带来的好处不如它带来的问题更多，这一举措确实有助于微软提供更好的产品体验。
>
>
>

### PyPI 将向关键项目赠送 4000 个安全密钥

PyPI 由 Python 软件基金会（PSF）管理，是 Python 开发人员获得第三方开发的开源包的主要仓库。这些库的安全影响到了整个 Python 生态的安全，PSF 现在强制要求“关键项目”的开发人员在未来几个月内使用双因素认证（2FA），这使得开发人员可以保护自己难于盗取凭证。任何在过去六个月里下载量排名前 1% 的项目将被视作关键项目，有超过 3800 个项目被评为“关键”，这涉及到 8241 个 PyPI 用户。作为 PSF 的赞助商，谷歌开源安全团队提供了 4000 个谷歌泰坦安全密钥，以分发给这些维护者。PyPI 数据显示，目前有 28336 个用户启用了 2FA，其中近 27000 个用户使用的是像“微软验证器”这样的 2FA 应用。

>
> **[消息来源：ZDNet](https://www.zdnet.com/article/python-programming-pypl-is-rolling-out-2fa-for-critical-projects-giving-away-4000-security-keys/)**
>
>
>

>
> 老王点评：虽然 2FA 密钥不能完全避免被盗取凭证，但是却可提供大部分保护。
>
>
>

### 美国企业领导人敦促加强计算机科学教育

超过 500 名美国的商业、教育和非营利组织领导人发表了一封公开信，呼吁美国各州政府和教育负责人为全美的 K-12 学生提供更多的计算机科学教育。他们称，“美国在技术方面领先世界，但我们的高中生中只有 5% 学习计算机科学。这怎么能接受呢？……近三分之二的高技能移民是计算机科学家，每个州都是这种战略人才的进口商。美国有超过 70 万个开放的计算机职位，但每年只有 8 万名计算机科学毕业生。”

>
> **[消息来源：Geek Wire](https://www.geekwire.com/2022/hundreds-of-tech-business-and-nonprofit-leaders-urge-states-to-boost-computer-science-education/)**
>
>
>

>
> 老王点评：从这个风向标来看，学计算机还是挺有前景的，当然，我建议你留着国内发展。
>
>
>


当 AI 学会编程，程序员的未来真的只能写 Bug了嘛？

Summary: 只有一条路，做人工智能做不了的事情，掌握人工智能，让它为你所用。

ai现在能区分版权不

亚马逊新预览的可以区分，但是微软的这个还不支持。

只有一条路，做人工智能做不了的事情，掌握人工智能，让它为你所用。

# 当 AI 学会编程，程序员的未来真的只能写 Bug了嘛？

二十多年前，我刚刚接触计算机时，那时候觉得编程真是一件神奇的事情，居然可以操作屏幕上神奇的字符！要说我自己的第一个编程“作品”，那可能是试图在 286 PC 的黑白显示器绘制一个钢琴键盘，并可以响应按键发出不同频率的蜂鸣声 —— 是的，那时候还没有声卡，只有开机时会“滴”一下的扬声器。虽然这个简陋的尝试并没有完成，但却给了我极大的乐趣，也开启了我的编程生涯。

### 从《代码大全》 到 StackOverflow 大师

后来，当我在北京找到第一份工作时，学会了 Perl 语言，编写了我的第一个 CGI 程序（互动网页），编程于是成为了我吃饭的本领。

上世纪末，互联网刚刚在国内兴起，人们编程时所能求助的外援，大多是各种语言手册、类库大全等书籍。这其中有一本著名的大部头被很多程序员置于案头，它就是《**代码大全**》，这本书里面提供了很多有用的、精妙的编程示例和技巧。往往在遇到编程难点时，程序员们可以“复制”书中的一些最佳实践来解决。

随着互联网的普及，逐渐出现了 Stack Overflow 之类的编程类问答网站。程序员们惊喜的发现，原来很多困扰自己的编程难题都可以在网上找到答案，且点赞数较高的代码示例比自己写的还要好。于是乎，很多“程序员”变成了“谷歌程序员”/“百度程序员”，搜索、复制，然后粘贴就好了。以至于，StackOverflow 在某年愚人节的 [恶作剧](/article-13835-1.html) 说，它将限制对其网站的免费访问，除非人们购买“钥匙”：一个带有“打开 Stack Overflow”、“复制”和“粘贴”的按钮的设备，算是对这种直接复制、粘贴的做法表达了一种冷幽默。最有趣的是，居然有热心网友联合键盘定制厂商，真将这块特别的键盘定制出来了，并以 29 美元出售。

### 程序员们是否越来越成为一种熟练工？

随着写的代码越来越多，这种有趣但有时候又很枯燥的重复工作，让我想过什么时候可以有个会编程的程序就好了。

在做过很多编程工作之后，我发现，编程很多时候就是一种例程和模式的重复应用。无论是 C 或 Java 语言，还是 JavaScript、Python 语言，都有庞大无比的类库、例程库。很多时候，你花费了很长的时间，只是为了找到合适的类库和它的用法罢了。至于说自己创造的代码，不过是将其粘合起来的胶水而已。

似乎程序员的“创造性工作”，越来越沦落为快餐店配餐员工一样的地步：根据“下单”，去选择合适的“餐品”，组合搭配之后，放上“餐盘”，送给“顾客”，然后时不时还会被“顾客”讨要一些忘记附送的“餐巾纸”之类的。当这种熟练工的工作逐渐被产品经理等非技术人员识破后，程序员们经常会被嘲笑为“**写 Bug的**”。

### 人工智能编程步入实用

这还不够，程序员们甚至连这种复制、粘贴的熟练工作都嫌麻烦，于是一些聪明的程序员们就将眼光放在了近些年大热的人工智能上了。既然现在人工智能已经“无所不能”了，何不请人工智能来编程呢？

对于这一倡议，“光头老板们”表示非常欢迎，这样就再也不用招聘昂贵的程序员了，也不用伺候那些程序员们的怪癖了 —— 比如要么键盘敲得飞起，要么半小时才按几个按键；比如晴天不编程，雨天不编程，心情不好不编程，心情好也不编程 …… 玩笑之余，程序员们看起来已经快没有这种好日子了。

GitHub，对，就是那个被微软收购了的“全球最大的同性交友社区”，他们手握世界上最大的编程代码库，于是就用它训练出来了一个会编程的人工智能 —— Copilot。不要误会，Copilot 不是 “Copy Lot” 的意思，是指“副驾驶”。

在 Copilot 横空出世后，抛开业界对它的许可证问题等道德批评之外，据使用过的人说，“**真乃神器也**”。你可以简单地描述你要做的事情，它就可以从它庞大的代码库中给出一段你需要的代码，稍加修改甚至无需修改就能直接使用。于是，你看到了，一群程序员，在输入几行字之后，他的 IDE 就马上给出一大段的代码，然后他再这里点点那里按按，假模假式地修改一番，就完成了一个功能。

甚至，聪明的程序员们发现，他们不但可以让人工智能写代码，而且开发规范所要求的代码注释也是现成的。如果不是用那段写给人工智能的文字做注释的话，你还可以让人工智能帮你注释那些蹩脚的代码。

好吧，程序员还需要干什么？只需要按按钮吗？

不止如此，现在的人工智能，除了替你编程之外，还能自己训练模型了。对，你没看错，人工智能可以自己训练 AI 模型了，这是要进化了嘛？

### 程序员怎么办？写 Bug 吗？

怎么样，是不是感觉自己当年选计算机专业有点明珠暗投的意思了？现在人工智能这么厉害，不仅仅一些传统的依赖人工完成的工作会被人工智能取代，连我们程序员们都面临着失业的风险了。

当然不，其实，至少在目前来看，人工智能还只能是“人工”智能，远没有到全面取代程序员的程度。但是，一些比较简单的、形成模式的编程工作，肯定会被逐渐优化，这一点可以从“低代码”再次流行起来可见一斑。

作为创造程序的人，如果你不想被另外一段程序取代你的工作，只有掌握创造的能力，才不会被淘汰。反而，你可以利用人工智能提升自己的编程水平和效率。

所以，道路很清楚了，在这个人工智能大行其道的时代，你想继续呆在空调房，坐在人体工学的椅子上，手拥若干大显示屏，挥斥方遒吗？只有一条路，做人工智能做不了的事情，掌握人工智能，让它为你所用。

好了，图穷匕见了，这篇文章就是一篇软文，是来劝你**抓紧投身人工智能**的！

如何，感兴趣吗？

.

.

.

好，我看到你的兴趣了。不过我知道你还有点疑虑，比如学习人工智能技术是不是很难？是不是需要很多资源（比如训练模型时）？是否有人可以指导你？是否有更多同好可以一起前进呢？

正好，现在有个绝佳的机会。华为最近在全国举办“**2022** **年昇腾 AI 创新大赛**”，除了**高达千万元**的丰厚奖金（为什么我要先说这个），还有遍布全国的各个分赛点，以及参赛过程的全程辅导。当然，你需要做好迈上人工智能这条赛道的充分准备了。

>
> **这场大赛是面向人工智能开发者打造的顶级赛事，旨在鼓励全产业开发者基于昇腾计算技术，共同打造软/硬件解决方案、探索模型算法，加速人工智能与行业融合，促进开发者能力提升。**
>
>
>

整个赛程长达半年，在我看来，无论你是初窥人工智能门径的初学者，亦或是具有丰富经验的编程大佬，这段时间都足够你打磨出一款不错的作品。说不定这次大赛的几十万大奖就是你的啦！

整个比赛分为应用赛道与昇思赛道两个部分，大家可以“组队打怪”：

* 对于企业、高校或科研机构的团队，可以开发基于昇腾软硬件平台的解决方案。基于昇腾全栈 AI 软硬件平台（包含 Atlas 系列硬件、异构计算架构 CANN、AI 框架昇思 MindSpore、应用使能 MindX 等）开放命题，围绕人工智能深度学习技术，探索有具体落地的创新方案。从区域赛晋级的队伍还能参与全国赛奖金的角逐，全国赛最高奖金可达 20 万，赢取双份奖金！
* 对于个人开发者（或团队）可以参与昇思赛道的比赛。赛题包括 20 道论文复现赛题与 10 道前沿课题任务。选手完成论文复现或者创新挑战的成果将在昇思社区与启智社区进行开源，赋能更多开发者。

具体的情况，请参考 《[昇腾 AI 创新大赛](https://www.hiascend.com/app/AAIC2022)》官网或以下海报：