硬核观察 #773 Linus Torvalds 获颁英特尔首个终身创新成就奖

Summary: • Linus Torvalds 获颁英特尔首个终身创新成就奖 • 英特尔认为摩尔定律仍旧有效 • Rust for Linux v10 补丁发布，预计合并到 Linux 6.1

奖金有多少啊？

![](/data/attachment/album/202209/28/170144pc18hlnyr1ffnn89.jpg)

![](/data/attachment/album/202209/28/170157zoradw0rtzrss5dd.jpg)

### Linus Torvalds 获颁英特尔首个终身创新成就奖

在英特尔 2022 创新大会上的开幕致辞中，CEO Pat Gelsinger 将 Linus Torvalds 邀请到了台上，向他颁发了首个终身创新成就奖，并向他赠送了一本签名的关于 80386 开发的书。Pat 写的这本书让 Torvalds 对机器架构有了深入了解，并在后来的 Linux 内核代码开发工作中发挥了重要的作用。Torvalds 之前也得过其它奖项，如 2014 年 IEEE 计算机协会计算机先锋奖。

>
> **[消息来源：Hot Hardware](https://hothardware.com/news/pat-gelsinger-bestows-linus-torvalds-with-intels-first-innovation-award)**
>
>
>

>
> 老王点评：Torvalds 确实做到了终身成就。
>
>
>

![](/data/attachment/album/202209/28/170211p42tvvaaqafmafm4.jpg)

### 英特尔认为摩尔定律仍旧有效

之前我们报道过，英伟达的黄仁勋称，蛮力加晶体管的方法和摩尔定律的进步基本上已经走到了尽头。但英特尔 CEO 在周二的发布会上称，摩尔定律“依然有效”，英特尔正致力于推进制造工艺的进步，例如采用新的光刻技术和 RibbonFET 架构。他说，“我们希望从今天的单个封装上容纳大约1000亿个晶体管开始，到这个十年结束时实现在单个封装中加入一万亿个晶体管”。

>
> **[消息来源：Digital Trends](https://www.digitaltrends.com/computing/intel-innovation-2022-raptor-lake-launch-live-coverage/)**
>
>
>

>
> 老王点评：或许一两年之后，我们再来看这条新闻。
>
>
>

![](/data/attachment/album/202209/28/170227cz5xxf0htfjki0ax.jpg)

### Rust for Linux v10 补丁发布，预计合并到 Linux 6.1

v10 补丁主要是对以前的 v9 补丁的一些最小的修改，该补丁集包括 27 个补丁，共计 12.5 万行新代码。与之前相比，这是一个较小的 Rust 补丁系列，目的是为了更容易地实现合并到上游。一旦这项工作被主线化，使 Rust 支持更多的内核子系统和早期的 Rust 驱动就可以继续开发，并持续实现主线化。

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

>
> 老王点评：这回应该定了，主要是前几天内核开发者们开会达成了共识。
>
>
>


Kubernetes 即将支持机密计算

![](/data/attachment/album/202209/29/092244oppo5ppu5gp55fpg.png)

>
> Constellation 是第一个始终加密的 kubernetes（K8S）。在这个 K8S 中，你的所有工作负载和控制平面都被完全屏蔽起来，你可以使用加密证书远程确认这一点。
>
>
>

Constellation Kubernetes 引擎使用 <ruby> 秘密计算 <rt>  secret computing </rt></ruby> 和 <ruby> 机密虚拟机 <rt>  confidential VM </rt></ruby>，将 Kubernetes 集群与云架构的其余部分隔离开来。因此，无论是在静态还是在内存中，数据总是被加密的，并创建了一个 <ruby> 机密上下文 <rt>  confidential context </rt></ruby>。根据创建 Constellation 的公司 Edgeless Systems 的说法，由于它为在公共云上运行的数据和工作流增加了安全性和保密性，因此机密计算是云计算的未来。

Kubernetes 节点在使用 Constellation 的私有虚拟机中运行。根据 Edgeless Systems 的说法，机密虚拟机是安全飞地的演变，它将机密计算的三个原则——运行时加密、隔离和远程证明——扩展到整个虚拟系统。机密虚拟机（TDX）使用底层硬件对私有计算的特殊支持，例如 AMD 安全加密虚拟化（AEM）、SEV-安全嵌套分页（SEV-SNP）和英特尔信任域扩展。此外，ARM 去年还发布了名为 Realms 的新 V9 架构。此设计包括私有 VM 功能。

Constellation 尝试在集群级别提供证明或通过加密证书进行验证，以及“始终在线”加密。 Constellation 中的机密 VMS 使用了 Fedora CoreOS，它构建在一个不可变的文件系统之上，是面向容器而设计的。Constellation 还利用 Sigstore 来保护 DevOps 信任链。

使用秘密计算时，性能可能会令人担忧。是的，加密会影响性能，但 AMD 和微软的联合基准测试发现，这只会导致 2% 到 8% 之间的微小性能损失。Edgeless Systems 声称 Constellation 将在繁重的工作负载下表现类似。

鉴于 Constellation 已通过 CNCF 认证，并且可与包括 GCP 和 Azure 在内的所有主要云服务互操作，这应保证其与其他 Kubernetes 工作负载和工具的互操作性。

---

via: <https://www.opensourceforu.com/2022/09/kubernetes-to-soon-support-confidential-computing/>

作者：[Laveesh Kocher](https://www.opensourceforu.com/author/laveesh-kocher/) 选题：[lkxed](https://github.com/lkxed) 译者：[littlebirdnest](https://github.com/littlebirdnest) 校对：[wxy](https://github.com/wxy)

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


我如何从 Docker Desktop 切换到 Colima

![](/data/attachment/album/202209/29/095328wj3ypm34pyyy3rrp.jpg)

>
> Colima 是 macOS 和 Linux 上的 Docker Desktop 替代品，它现在由 DDEV 支持。
>
>
>

[DDEV](https://github.com/drud/ddev) 是一个开源工具，可以在几分钟内轻松启动和运行本地 PHP 开发环境。由于其每个项目的环境配置可以扩展、版本控制和共享，所以它很强大和灵活。简而言之，DDEV 旨在允许开发团队在其工作流程中使用容器，而无需复杂的定制配置。

DDEV 用灵活、现代、基于容器的解决方案取代了更传统的 AMP 栈解决方案（WAMP、MAMP、XAMPP 等）。因为它使用容器，DDEV 允许每个项目使用任何一组应用、Web 服务器版本、数据库服务器、搜索索引服务器和其他类型的软件。

2022 年 3 月，DDEV 团队 [宣布支持 Colima](https://ddev.com/ddev-local/docker-desktop-alternatives-arrive-for-ddev-colima/)，这是 macOS 和 Linux 上的开源 Docker Desktop 替代品。[Colima](https://github.com/abiosoft/colima) 是开源的，据所有报告显示，它比其替代方案有所 [性能提升](https://ddev.com/ddev-local/docker-desktop-and-colima-benchmarking-on-macos/)，所以使用 Colima 似乎是一个没有问题的选择。

### 迁移到 Colima

首先，Colima *几乎*是 Docker Desktop 的替代品。我说*几乎*是因为在将它用于现有的 DDEV 项目时需要重新配置。具体来说，必须重新导入数据库。解决方法是先导出数据库，然后启动 Colima，然后再导入。很简单。

Colima 要求安装 Docker 或 [Podman](https://opensource.com/article/22/2/start-running-containers) 命令。在 Linux 上，它还需要 Lima。

Docker 默认随 Docker Desktop for macOS 一起安装，但它也可以作为独立命令使用。如果你想要 100% 纯 Colima，你可以卸载 Docker Desktop for macOS，并独立安装和配置 Docker 客户端。[完整的安装说明可以在 DDEV 文档站点上找到](https://ddev.readthedocs.io/en/stable/users/docker_installation/#macos-installation-colima)。

![容器技术栈图片](/data/attachment/album/202209/29/095334gvd6hh27uxkwj6zy.png)

*容器技术栈图片 图片来源：（Mike Anello，CC BY-SA 4.0）*

如果你选择继续使用 Colima 和 Docker Desktop，那么在命令行执行 `docker` 命令时，你必须首先指定要使用的容器。下一节将对此进行更多介绍。

### 在 macOS 上安装 Colima

我目前有一些本地项目使用 Docker，还有一些使用 Colima。当我了解了基础知识，在它们之间切换就不难了。

1. 使用 Homebrew `brew install colima` 安装 Colima
2. `ddev poweroff`（为了安全起见）
3. 接下来，使用 `colima start --cpu 4 --memory 4` 启动 Colima，`--cpu` 和 `--memory` 选项只需执行一次。第一次之后，只需要 `colima start`
4. 如果你像我一样是 DDEV 用户，那么你可以使用常用的 `ddev` 命令（`ddev config`、`ddev start` 等）启动一个全新的 Drupal 9 站点。建议启用 DDEV 的 mutagen 功能以最大化性能

### 在 Colima 和 Docker Desktop 之间切换

如果你还没有准备好使用 Colima，你可以同时安装 Colima 和 Docker Desktop。

1. 首先关闭 ddev：`ddev poweroff`
2. 然后停止Colima：`colima stop`
3. 现在运行 `docker context use default` 告诉 Docker 客户端你要使用哪个容器。默认名称是 Docker Desktop for Mac。当 `colima start` 运行时，它会自动将 Docker 切换到 `colima` 上下文
4. 要继续使用默认（Docker Desktop）上下文，请使用 `ddev start` 命令。

从技术上讲，启动和停止 Colima 不是必需的，但是在两个上下文之间切换时的 `ddev poweroff` 命令是必要的。

Colima 停止时，最新版本的 Colima 会将 Docker 上下文恢复为 `default`，因此不再需要 `docker context use default` 命令。无论如何，我仍然使用 `docker context show` 来验证 `default`（Docker Desktop for Mac）或 `colima` 上下文是否正在使用。基本上，术语 `context` 指的是 Docker 客户端将命令发送到哪个容器提供者。

### 尝试 Colima

总的来说，我喜欢我目前所看到的。我没有遇到任何问题，而且基于 Colima 的网站看起来更快些（尤其是在启用 DDEV 的 Mutagen 功能时）。我肯定会预见自己在未来几周内将项目网站迁移到 Colima。

*本文最初发布在 [DrupalEasy 博客](https://www.drupaleasy.com/news) 并经许可重新发布。*

---

via: <https://opensource.com/article/22/9/docker-desktop-colima>

作者：[Michael Anello](https://opensource.com/users/ultimike) 选题：[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 内核开发者对 Rust 进入内核的讨论

![](/data/attachment/album/202209/29/154314iu7gayl7j877guo7.jpg)

Rust for Linux 这个项目是希望今后可以使用 Rust 编程语言来编写内核代码，该项目已经进行了几年，有越来越多的开发者认为是时候将这项工作合并到主线中了。在 2022 年的 Linux 内核维护者峰会上，Miguel Ojeda 向大家更新了此项目的最新状况，希望能达成一致来确定何时可以完成合并。

他得到的答案是很清晰的：**内核中确实很快会有 Rust 了。**

这方面并没有什么悬念。Linus Torvalds 在会议开始时就说，**他计划接受（可能在 12 月中旬发布的） 6.1 内核的 Rust 补丁，除非他听到强烈的反对意见。**Ojeda 表示，他很期待这一天，并询问这些补丁应该如何进入主线。Torvalds 说，他不愿意直接接受这些补丁，所以看起来很可能需要 Kees Cook 来将这项工作引向上游。

Dave Airlie 说，有一些 MacBook 驱动程序的开发者打算用 Rust 来做他们的工作，所以很可能在不久之后就会有真正的 Rust 驱动程序进入上游了。不过，Torvalds 说他希望最开始只合入尽量少的内容，只是让基础设施先进入内核，让开发者开始使用它。它应该可以完成编译，但应该**基本仅限在 “hello, world” 这种水平**就好。他说，这将是一个向世界发出的信号：“终于落地了”。

Greg Kroah-Hartman 问道，针对特定子系统的 Rust 绑定实现，该如何进入上游；是应该通过 Rust 树还是通过相关子系统的维护者？Ojeda 回答说，Rust 核心支持应该通过 Rust 树来合入，但其他的应该经过维护者来合入。Alexei Starovoitov 担心，如果子系统维护者不想在他们的子系统中使用 Rust，他们也无法拒绝 Rust 补丁；James Bottomley 补充说，对于长期从事 C 语言开发的人来说，Rust 可能是一种很难理解的语言，把它强加给维护者并不合适。Torvalds 回答说，这应该由维护者决定；目前没有必要制定统一的规则。

Paolo Bonzini 说，对于不熟悉该语言的开发者来说，针对特定子系统实现抽象层的 Rust 代码往往是最难读懂的，“but it's stupid code”，并没有做什么复杂的动作。驱动程序级的 Rust 代码则要简单易懂得多。Torvalds 重申，就目前而言，维护者将可以说他们不想接受 Rust。但 Starovoitov 反驳说，无论他如何决定，BPF 都会受到影响；开发者需要能够对 Rust 代码进行跟踪 来调试问题。他补充说，**每个人最终都会需要了解 Rust**。Torvalds 回答说，他预计这个过程需要几年时间。

Cook 说，这种变化将类似于内核所经历的许多 C 语言变动。停止使用可变长度数组也是一个类似的过程，开发人员目前已经习惯了这一点。Torvalds 说，这其实更加类似于 BPF 的引入过程；这也是一种新的语言，起初是针对特定使用场景的，但现在已经无处不在了。

Ted Ts'o 指出，内核必须使用不稳定的 Rust 功能，这就导致不好确定应该使用 Rust 的哪个版本了。也许开发者应该宣布一个特定版本的编译器作为内核开发所使用的版本？这将鼓励发行版提供商把这个版本打包发行出来，使其得以更广泛地被采用。Thomas Gleixner 说，在 kernel.org 上提供我们选定的编译器应该就够了，但 Torvalds 回答说，只要有可能，他都希望**优先从发行版提供商那里获取编译器**。Bottomley 问道，Rust 什么时候会成为内核编译的必备条件；答案是 “当某人需要使用的硬件需要 Rust 的时候”。Torvalds 说，如果这一天到来了，那说明 Rust 在内核开发领域是非常成功的了。

Gleixner 问 Rust 语言现在的规范性如何；Ojeda 回答说，这取决于人们希望用什么。Rust 保证了稳定功能都可以向后兼容，所以这些功能不会意外不能用了。不过，内核正在使用一些不稳定的功能；这些功能出现变动是很有可能的。目前正在做的工作就是把这些功能稳定下来，以便让内核能够稳定地使用它们。

目前正在努力为 Rust 编写一个强调安全的系统的规范，这会最终得到一个类似于标准的文档。不过 Ojeda 说目前基于 GCC 的 gccrs Rust 编译器的开发者发现当前的文档有些地方比较模糊。其中经常把相关行为定义为 “参考 rustc 编译器的实现方式”。他说，这 “不是好事”，但会继续改善。

Gleixner 还询问了生成 Rust 绑定的工具，尤其是有没有自动化工具来确保 Rust 和 C 版本的数据结构是相互匹配的。Ojeda 说，这些工具确实存在，但它们还不能成功地对所有类型完成自动转换。这也是可以解决的。

最后，Gleixner 告诫 Rust 开发者**不要改变 C 语言中锁定原语的语义**；目前看来大家也没有表现出这样的倾向。Ts'o 补充说，应该从一开始就让 Rust 的锁定抽象能跟 lockdep 这个锁定检查工具配合起来。Chris Mason 插话说，如果 Rust 代码需要 lockdep，这将是该语言成功的另一个标志，是时候 “跳个舞庆祝胜利” 了。

人们经常说，将 Rust 合并到内核代码树中还是一个实验性质的动作；如果不成功就可以删除掉。Ojeda 说，为 Rust for Linux 工作的开发者们**想知道试验期可能会有多长**。不过，他并没有从这个小组讨论中得到切实的答案。

相反，Bottomley 建议说，与其引入 Rust，不如直接**将更多类似 Rust 的功能移入 C 语言**。Ojeda 说，他实际上一直在与 C 语言委员会合作来推动这些改进，但这方面的任何变动如果能够落实，也需要很长的时间。Christoph Hellwig 说，**除非计划用 Rust 重写整个内核，否则这种改动无论如何都得去做**；他对使用一种新的语言来重写已经能正常工作的代码的方案不是很满意。他说，也许 sparse 静态分析工具可以加强一下，从而实现更多 Rust 可以做到的检查。Ojeda 回答说，这种做法最终的效果就像是又获得了一个 Rust 一样——但时间上要晚很多。

Hellwig 继续说，可以随着时间的推移，来逐步采用类似 Rust 的一些功能。这 “**必定是不如从 Rust 开始**”，但内核社区现在有一个庞大的代码库需要管理。他说，需要有一种方法将类似 Rust 的语言的好处纳入所有的 C 代码中。Cook 说他一直在推动编译器开发人员来创建更安全的 C 语言。

Ts'o 在会议结束时指出，语言设计本身就是一个耗时很长的研究项目；也许我们大家应该在下一年来专注于策略问题。Torvalds 说，他希望看到各位维护者能运行一些持续集成测试并且加入 Rust 相关的测试——这个情况其实已经在进行中了。Laurent Pinchart 说，Rust 开发者需要准备好前期需要给内核社区提供支持；开发者会很快掌握一些技能，在一段时间后应该可以开始相互帮助了。Torvalds 补充说，Rust 其实并不是那么可怕的；“**毕竟不是 Perl**”。

当被问及文档问题时，Ojeda 说，Rust 的开发者正试图改进一些相应的 C 语言中已经完成了的文档。例如，可以让 Rust 的文档机制能很简单地就确保这些例子是可以被实际测试通过的。他们正在遵守关于应如何解释不安全区块的规则。

时间不够了，Matthew Wilcox 最后问道，内核开发人员是否应该编写地道的 Rust 代码，还是说应该写 “C in Rust”。Ojeda 回答说，**这些代码在开始时可能更像 C 语言**；采用更高级的功能（如 async）可能会需要更长时间。Gleixner 问，怎样才能防止开发者使用那些不稳定的特性（是说等内核使用的特性已经变成稳定特性之后）；答案是指定内核开发时使用的编译器版本。


硬核观察 #774 复古极客给 SSD 添加机械硬盘读写声音

Summary: • 复古极客给 SSD 添加机械硬盘读写声音 • 黑爵士达斯·维德的声音未来将用 AI 合成 • Cloudflare 宣布了一个新的“验证码”服务

![](/data/attachment/album/202209/29/174445zyafkl4ull54zd4l.jpg)

![](/data/attachment/album/202209/29/174521vkg4ddadgeff6mca.jpg)

### 复古极客给 SSD 添加机械硬盘读写声音

复古计算的一个 “问题” 是，我们用紧凑型闪存、SD 卡甚至 SSD 来取代这些传统的机械硬盘时，通常情况下不会发出任何你能听到的声音。这样不但显得不够“复古”，而且有时你无法判断电脑是崩溃了还是仍在工作。有位极客制造的一个小装置解决了这个问题，它被称为 HDD Clicker，它连接到硬盘活动指示灯，触发扬声器发出的一系列咔嚓声，听起来非常像硬盘在寻找轨道。

>
> **[消息来源：Hackday](https://hackaday.com/2022/09/26/tiny-dongle-brings-the-hard-drives-song-back-to-updated-retrocomputers/)**
>
>
>

>
> 老王点评：我觉得我的 SSD 硬盘也需要这样一个小装置，要是能像个 U 盘一样插上就能用就更好了。这就是“无用”的极客精神。
>
>
>

![](/data/attachment/album/202209/29/174521ckl0hykghar0nkzz.jpg)

### 黑爵士达斯·维德的声音未来将用 AI 合成

为星战系列的黑爵士达斯·维德的配音长达 45 年的 James Jones 已经 91 岁了。他早就考虑退出了，在创作星战电视剧《欧比旺·克诺比》期间，James Jones 签署了允许迪士尼在未来项目中使用 AI 合成其声音的协议。他们使用的软件是 AI 语音建模工具 Respeecher，它使用了深度学习去建模和复制人类声音，能达到以假乱真。在此之前卢卡斯公司使用该软件在《曼达洛人》中克隆了天行者卢克的扮演者的声音。

>
> **[消息来源：Ars Technica](https://arstechnica.com/information-technology/2022/09/james-earl-jones-signed-darth-vader-voice-rights-to-disney-for-ai-use/)**
>
>
>

>
> 老王点评：从配音演员、有声书朗读演员开始，AI 真的会接管很多工作。
>
>
>

![](/data/attachment/album/202209/29/174555lbia6edeip2i1w7a.jpg)

### Cloudflare 宣布了一个新的“验证码”服务

Cloudflare 本周宣布了一个名为 Turnstile 的项目，旨在取消整个网络上用来验证人们是否机器人的传统验证码。它会根据遥测和会话中表现出的客户行为自动选择浏览器挑战方案，以检查网页的访问者是否实际上是机器人。廉价劳动力的兴起、各种验证码类型的错误以及自动解算器让验证码越来越容易绕过。一些研究人员声称基于 AI 的攻击可以成功解决世界上最受欢迎的网站使用的验证码。

>
> **[消息来源：Tech Crunch](https://techcrunch.com/2022/09/28/cloudflare-wants-to-replace-captchas-with-turnstile/)**
>
>
>

>
> 老王点评：终究还是一种高级的验证码。
>
>
>

### 回音

* 谷歌 [推迟](https://developer.chrome.com/blog/more-mv2-transition/) MV2 扩展淘汰时间，明年 1 月起停止接受 MV2 扩展更新，这些扩展将从明年 6 月开始不再列出。


Atoms 是一个可以让你轻松管理 Linux Chroot 环境的 GUI 工具

Summary: chroot 环境为你在 Linux 中进行测试提供了隔离。

chroot 环境为你在 Linux 中进行测试提供了隔离。

![](/data/attachment/album/202209/30/113748nxg0zps10q58q5wr.jpg)

chroot 环境为你在 Linux 中进行测试提供了隔离。你无需费心创建虚拟机。相反，如果你想测试应用或其他东西，请创建一个允许你选择不同根目录的 chroot 环境。

因此，使用 chroot，你可以在不让应用访问系统其余部分的情况下进行测试。你安装的任何应用或你尝试的任何东西都会被限制在该目录中，并且不会影响操作系统的功能。

chroot 有它的好处，这就是为什么它是为各种用户（尤其是系统管理员）测试事物的便捷方式。

不幸的是，所有这些都通过 Linux 终端运行。如果你可以有一个图形用户界面来让事情变得简单一些呢？这就是“**Atoms**”的用武之地。

### Atoms：管理 Linux Chroot 的 GUI

![atoms](/data/attachment/album/202209/30/113824uz0ya5tabh2b2hh3.png)

Atoms 是一个 GUI 工具，它可以方便地创建和管理 Linux chroot 环境。

它还支持与 [Distrobox](https://itsfoss.com/distrobox/) 的集成。因此，你还可以使用 Atoms 管理容器。

但是，开发人员提到，该工具不提供与 Podman 的无缝集成，并解释其用途：“*它的目的只是允许用户在新环境中打开 shell，无论是 chroot 还是容器。*”

如果你正在寻找这样的东西，你可能需要试试 [pods](https://github.com/marhkb/pods)。

### Atoms 的特性

![atoms options](/data/attachment/album/202209/30/113825bpadwo2e07xzto9p.png)

Atoms 是一个简单的 GUI 程序，可让你为多个受支持的 Linux 发行版创建 chroot 环境。

让我重点介绍支持的发行版及其提供的功能：

* 浏览创建的 chroot 文件。
* 能够选择要露出的挂载点。
* 访问控制台。
* 支持的 Linux 发行版包括 Ubuntu、Alpine Linux、Fedora、Rocky Linux、Gentoo、AlmaLinux、OpenSUSE、Debian 和 CentOS。

它非常易于使用。从该应用中创建一个 atom 只需一键。（LCTT 校注：该应用创建的每一个 chroot 环境称之为一个“atom”。）

你所要做的就是为该 atom 命名，然后从可用选项列表中选择 Linux 发行版（Ubuntu 作为上面截图中的选择）。它会在几分钟内下载镜像并为你设置 chroot 环境，如下所示。

![atom config](/data/attachment/album/202209/30/113826u8p5oi8hazsle5jh.png)

完成后，你可以访问选项启动控制台以管理 chroot 环境，或自定义/删除它。

![atoms option](/data/attachment/album/202209/30/113826eoh4oai734lzt447.png)

要访问控制台，请转到另一个选项卡菜单。非常顺滑的体验，并且运行良好，至少对于我测试过的 Ubuntu 而言。

![atoms console](/data/attachment/album/202209/30/113827co8pdqqm15sr5msq.png)

此外，你可以分离控制台以将其作为单独的窗口进行访问。

![atoms detach console](/data/attachment/album/202209/30/113828assrh3ljtlr44m16.png)

### 在 Linux 上安装 Atom

你可以使用 [Flathub](https://flathub.org/apps/details/pm.mirko.Atoms) 上提供的 Flatpak 包在任何 Linux 发行版上安装 Atoms。如果你是 Linux 新手，请遵循我们的 [Flatpak 指南](https://itsfoss.com/flatpak-guide/)。

**注意：** 最新的稳定版本 **1.0.2** 只能通过 Flathub 获得。

要探索其源代码和其他详细信息，请访问其 [GitHub 页面](https://github.com/AtomsDevs/Atoms)。

### 总结

Linux 命令行功能强大，你几乎可以使用这些命令执行任何操作。但并不是每个人都对它感到满意，因此像 Atoms 这样的工具通过提供 GUI 使其更加方便。

Atoms 并不是唯一的这类工具。还有 [Grub Customizer](https://itsfoss.com/grub-customizer-ubuntu/) 可以更轻松地更改本来通过通过命令行完成的 [Grub](https://itsfoss.com/what-is-grub/) 配置。

我相信还有更多这样的工具。

*你如何看待使用像 Atom 这样的 GUI 程序来管理 Chroot 环境？在下面的评论中分享你的想法。*

---

via: <https://itsfoss.com/atoms-chroot-tool/>

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


如何确定待办事项上任务的优先级

Summary: 使用艾森豪威尔矩阵更好地安排你的待办事项的优先次序。

使用艾森豪威尔矩阵更好地安排你的待办事项的优先次序。

>
> 使用艾森豪威尔矩阵更好地安排你的待办事项的优先次序。
>
>
>

![](/data/attachment/album/202209/30/121930xx0jnngx0oa8jl88.jpg "Team checklist and to dos")

在本文中，将研究一种在待办事项上确定任务优先级的策略。想要找到适合你日常工作的开源工具，请查看 [此列表](https://opensource.com/article/20/5/alternatives-list)。

把事情添加到任务或待办事项中很容易。几乎太容易了。而一旦列入清单，挑战就变成了弄清楚先做什么。我们要做清单首位的事情吗？清单首位的事情是最重要的吗？如何弄清楚最重要的事是什么？

![To-do list](/data/attachment/album/202209/30/121934di65455jzn5llxh1.png "To-do list")

*要做的事。今天？明天？谁知道呢？（Kevin Sonney, [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

[与电子邮件一样](https://opensource.com/article/21/1/email-rules)，我们可以根据一些事情来确定任务的优先级，这可以让我们弄清楚什么事情需要先做，什么可以等到以后再做。

我使用一种被称为“<ruby> 艾森豪威尔矩阵 <rt>  Eisenhower Matrix </rt></ruby>” 的方法，它取自美国总统 <ruby> 德怀特·戴维·艾森豪威尔 <rt>  Dwight D. Eisenhower </rt></ruby> 的一句话。画一个水平和垂直分割的方框。在列上标明“紧急”和“不紧急”，在行上标明“重要”和“不重要”。

![Eisenhower matrix](/data/attachment/album/202209/30/121935xqdhplfyhauy0ud0.png "Eisenhower matrix")

*一个艾森豪威尔矩阵。（Kevin Sonney, [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

你可以把待办事项上的任务放在其中一个框里。但如何知道一个任务应该放在哪里？紧迫性和重要性往往是主观的。因此，第一步就是决定什么对你来说是重要的。我的家庭（包括宠物）、工作和爱好都很重要。如果待办事项上的东西与这三件事无关，我可以立即把它放到 “不重要” 行。

紧迫性是一个比较简单的问题。一件事需要在今天或明天完成吗？那么它可能是 “紧急的”。一件事是否有一个即将到来的最后期限，但离那个时间还有几天/几周/几个月，或者它根本就没有最后期限？当然是 “不急的”。

现在我们可以将这些框转化为优先级。“紧急/重要” 是最高优先级（即第一优先级），需要首先完成。接下来是 “不紧急/重要”（优先级 2），然后是 “紧急/不重要”（优先级 3），最后是 “不紧急/不重要”（优先级 4 或根本没有优先级）。

请注意，“紧急/不重要” 是第三位，而不是第二位。这是因为，人们花了很多时间在那些看似重要的事情上，只是因为它们比较紧急，实际上这些事并不是重要的。当我看到这类事项时，我会问自己一些问题。这些任务需要我具体完成吗？这些任务我可以要求其他人去做吗？它们对其他人来说是否重要和紧急？而这是否改变了它们对我的重要性？也许它们需要重新分类，或者我可以要求别人完成，并将它们从我的清单中删除。

![After prioritizing](/data/attachment/album/202209/30/121935pg4tvtlw4urhtct4.png "After prioritizing")

*确定优先级后。（Kevin Sonney, [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

对于“不紧急/不重要”框中的事项，有一个问题要问，那就是 “这些事情到底需不需要放在我的清单上？”说实话，我们经常用那些不紧急或不重要的事情来填满待办事项清单，但其实完全可以将它们从清单上删除。我知道承认 “这事永远不会完成” 是很难的，但在接受这个事实后，把这个事情从清单上删除并且不用再为它担心，是一种解脱。

经过这一切，看着清单很容易说出：“这是我现在需要做的事情。” 然后完成它。这就是待办事项的作用：为一天提供指导和重点。

---

via: <https://opensource.com/article/21/1/prioritize-tasks>

作者：[Kevin Sonney](https://opensource.com/users/ksonney) 选题：[lujun9972](https://github.com/lujun9972) 译者：[Veryzzj](https://github.com/Veryzzj) 校对：[wxy](https://github.com/wxy)

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


清理 Ubuntu 系统的 4 个简单步骤

Summary: 现在，试试看这 4 个简单的步骤，来清理你的 Ubuntu 系统吧。

确实有用, 感谢

现在，试试看这 4 个简单的步骤，来清理你的 Ubuntu 系统吧。

![](/data/attachment/album/202209/30/123825r2vri1kv0rc2f7xh.jpg)

>
> 现在，试试看这 4 个简单的步骤，来清理你的 Ubuntu 系统吧。
>
>
>

这份精简指南将告诉你如何清理 Ubuntu 系统以及如何释放一些磁盘空间。

如果你的 Ubuntu 系统已经运行了至少一年，尽管系统是最新的，你仍然可能会觉得你的 Ubuntu 系统运行缓慢且滞后。

在过去，因为你想试验某一应用程序，或是在看到了它的好评推荐之后，而安装了许多应用程序，但你并没有删除它们。下面这些方法可以帮助你找出一些可以释放的隐藏磁盘空间。

### 清理 Ubuntu 系统的步骤

#### 1、清理 Apt 缓存

Apt 缓存是 Ubuntu 系统保存你下载过的所有文件的地方，以供你之后可以查看它。大多数用户不会去清理 Apt 缓存，而它却可能会占用数百兆字节。

打开终端，并运行以下命令，可以得到你的 Apt 缓存有多少：

```
du -sh /var/cache/apt/archives

```

![](/data/attachment/album/202209/30/124344v4bel4mslbvzbde9.png)

如果你的 Ubuntu 系统已经安装了很久的话，你将看到这个数字非常大。运行以下命令来清理 Apt 缓存。

```
sudo apt-get clean

```

#### 2、删除无用的内核

如果你已经运行 Ubuntu 系统超过了一年，那么你很可能安装多个内核。如果你的硬件是最新的，并且与 Linux 兼容而没有太多配置，你可以删除旧的内核，保留最新的内核。

在终端运行以下命令来删除旧的内核：

```
sudo apt-get autoremove --purge

```

![Autoremove Purge](/data/attachment/album/202209/30/124355cj8ie9jzh778or8r.png)

#### 3、删除旧的应用程序和软件包

如果你是一个喜欢尝试 Linux 应用程序的人，那么你的系统中肯定有一些不再需要的没用的应用程序。

现在，你可能已经忘记了你安装过的应用程序名称。不过你可以在终端运行以下命令来查看你最近安装的内容：

你会得到通过 `apt` 命令安装的应用程序和软件包的列表：

```
history | grep "apt-get install"

```

![List of apt installed app – History](/data/attachment/album/202209/30/124407z8nn4w60ri6ygwu5.png)

你将得到最近安装的应用程序列表：

```
grep " install " /var/log/dpkg.log.1

```

```
zgrep " install " /var/log/dpkg.log.2.gz

```

你可以运行以下命令来删除应用程序和软件包：

```
sudo apt remove app1 package1

```

#### 4、使用系统清理应用

有大量免费和原生的系统 [清理应用](https://www.debugpoint.com/2017/02/stacer-is-a-system-monitoring-and-clean-up-utility-for-ubuntu/) 可以使用。但是，我认为 [BleachBit](https://www.bleachbit.org) 是清理系统最好的一个应用，因为它经久不衰。

使用以下命令安装 BleachBit 或通过应用商店安装。

```
sudo apt install bleachbit

```

安装后，打开 BleachBit，并运行扫描。它会向你显示浏览器占用的所有缓存文件、临时文件、垃圾等，你只需单击一个按钮即可清理它。

![](/data/attachment/album/202209/30/124414akyk09hq9g0e4x88.png)

### 附送技巧

#### 清理 Flatpak 软件包

Flatpak 应用程序和<ruby> 运行时 <rt>  runtime </rt></ruby>会占用大量磁盘空间。因为在设计上，Flatpak 的可执行文件结合了运行时。尽管运行时可以在相关应用程序之间共享，但许多未使用的剩余运行时可能会占用你的磁盘空间。

删除一些未使用的 Flatpak 包最直接的方法是下面的命令。在终端运行这一命令。

```
flatpak uninstall --unused

```

可以参考 [这篇文章](https://www.debugpoint.com/clean-up-flatpak/) 了解有关 Flatpak 包的更多信息。

#### 清理未使用的 Snap 项目

如果你使用 Ubuntu 系统，那么你很有可能使用的是 Snap 软件包。随着时间的推移，Snap 会积累不相关的运行时和文件。你可以使用以下脚本来清理一些没用的 snap 运行时。

将下面的脚本复制到一个新文件中，并将其命名为 `clean_snap.sh`：

然后使用 `chmod +x clean_snap.sh` 命令来赋予它可执行权限，并通过 `./clean_snap.sh` 运行

```
#!/bin/bash
#Removes old revisions of snaps
#CLOSE ALL SNAPS BEFORE RUNNING THIS
set -eu
LANG=en_US.UTF-8
snap list --all | awk '/disabled/{print $1, $3}' |
      while read snapname revision; do
          snap remove "$snapname" --revision="$revision"
      done

```

可以参考 [这篇文章](https://www.debugpoint.com/clean-up-snap/) 了解有关清理 Snap 包的更多信息。

#### 更多技巧

你还可以使用以下命令来手动搜索大文件。

```
find /home -type f -exec du -h {} + | sort -hr | head -20

```

例如，运行以下命令，你会得到根目录 `/` 中的前 20 个大文件。现在你可以查看大文件，并使用文件管理器手动删除它们。请注意删除文件时要非常小心。尽量不要涉及 `/home` 目录以外的任何内容。

![Find Large files in Linux](/data/attachment/album/202209/30/124424r09untu4uumcx9k3.png)

### 总结

这样就完成了。如果你按照上述步骤操作，你一定能够释放 Ubuntu 系统中的一些空间，现在你的系统有剩余空间了。你可以按照这些措施来清理 Ubuntu 系统。不要忘记使用最新的软件包，使你的系统保持到最新。

? 如果你认为使用上述的技巧可以释放一些磁盘空间，并使得你的 Ubuntu 更快了，请在下方评论区留言。你通常又是使用什么命令来清理你的 Ubuntu 系统？

快留言告诉我吧。

---

via: <https://www.debugpoint.com/4-simple-steps-clean-ubuntu-system-linux/>

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

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


硬核观察 #775 神秘的黑客组织正在“超级劫持”虚拟化软件

Summary: • 神秘的黑客组织正在“超级劫持”虚拟化软件 • 谷歌将关闭 Stadia 云游戏串流服务 • 软件机器人正在抢占白领工作

![](/data/attachment/album/202209/30/154722djejex0lpgoylplc.jpg)

![](/data/attachment/album/202209/30/154735guyyuyoy2xytoiz0.jpg)

### 神秘的黑客组织正在“超级劫持”虚拟化软件

安全研究人员已经警告过虚拟化技术潜在的黑暗面：理论上的 “<ruby> 超级劫持 <rt>  hyperjacking </rt></ruby>” 攻击，即黑客劫持虚拟化来监视和操纵虚拟机，而目标计算机可能没有办法发现这种入侵。现在，这种攻击从研究论文中跳到了现实中。谷歌旗下的安全公司 Mandiant 和 VMware 联合发布警告称，一个复杂的黑客组织已经在多个目标网络的 VMware 虚拟化软件中安装了后门。黑客能够在这些管理程序监督的计算机上隐蔽地观察和运行命令。由于恶意代码的目标是物理机上的管理程序，几乎逃避了所有旨在监控这些虚拟机的异常迹象的传统安全措施。

>
> **[消息来源：Wired](https://www.wired.com/story/hyperjacking-vmware-mandiant/)**
>
>
>

>
> 老王点评：虽然不像英特尔芯片里的 [管理引擎](/article-9040-1.html) 一样隐蔽，但是这种从虚拟化层植入的木马，确实非常隐蔽，危害很大。
>
>
>

![](/data/attachment/album/202209/30/154746fota2naa0ae5ncb2.jpg)

### 谷歌将关闭 Stadia 云游戏串流服务

Stadia 高管称，“虽然 Stadia 为消费者提供流媒体游戏的方法是建立在强大的技术基础上的，但它并没有获得我们预期的用户牵引力，所以我们做出了艰难的决定，开始逐步关闭 Stadia 流媒体服务。”谷歌宣布，将于 2023 年 1 月 18 日关闭 Stadia，玩家可以在这个日期前继续使用该服务。大多数不支持跨平台的游戏的进度不太可能转移到其它平台。Stadia 商店已经关闭了购买游戏的选项。

>
> **[消息来源：谷歌](https://blog.google/products/stadia/message-on-stadia-streaming-strategy/)**
>
>
>

>
> 老王点评：去年就有 Stadia 关闭的消息，当时谷歌否认了，看来谷歌的各种外围服务都是或早或晚走上关闭的道路。
>
>
>

![](/data/attachment/album/202209/30/154801coygiwgxmy5a2jww.jpg)

### 软件机器人正在抢占白领工作

从工业到办公室，从蓝领到白领，机器人正在接手越来越多的工作。世界经济论坛预测，到 2025 年，机器人的工作时间将与人类一样多。乐观的观点认为，被自动化的是任务，而不是整个工作 -- 如果平凡的任务可以由计算机或机器人处理，那就应该让员工从事更具挑战性和满意度的工作。负面的风险是：从销售代表到行政支持的职业可能开始消失。不过，一些走在自动化前沿的大公司也表示，他们已经能够做到不裁员。

>
> **[消息来源：彭博社](https://www.bloomberg.com/news/articles/2022-09-29/software-robots-are-gaining-ground-in-white-collar-office-world)**
>
>
>

>
> 老王点评：无论如何，自动化程度的增加都会让那些觉得自己的工作很脆弱的工人引发不安。随着人工智能的崛起，这个群体越来越多地包括白领雇员。
>
>
>


由于 Adobe 收购了 Figma，Penpot 获得了更多用户

![](/data/attachment/album/202210/01/123134pkwwwnakfpsds7p6.jpg)

>
> 在 Adobe 同意以 200 亿美元收购 Figma 两周后，开源设计项目 Penpot 背后的公司 Kaleidos 表示已筹集到 800 万美元的新资金。
>
>
>

自 Adobe 透露打算向著名设计工具背后的公司 Figma 投资 200 亿美元以来，已经过去了 13 天。Penpot 是个开源替代品，当时有过一段繁荣。Penpot 现在有额外的资金来支持这种扩张。据其母公司 Kaleidos 周二称，得益于 800 万美元的资金，Penpot 的协作设计软件的开发将继续进行。该公司表示，当 Adobe 同意购买 Figma 后，其注册用户在一天内就增加了 5600%。

为了支持不断增加的访问量，Penpot 在周末增强了托管 Web 应用程序的基础设施。据该公司称，本地部署量增加了 400%，托管 Penpot 开源代码的 GitHub 存储库的星标数出现了硅谷流行的曲棍球棒图。本轮投资由思科支持的 Decibel 牵头，投资方 Athos Capital 也参与其中。Decibel 的创始合伙人 Jon Sakoda 表示，这个时机可能看起来特别恰当，但这只是巧合，因为该协议是在 8 月中旬达成的，在大家兴趣飙升的几周前。

Adobe 在给 CNBC 的一份声明中表示，与 Figma 相结合，该公司将“让协作创意更轻松、更顺畅，并让数百万用户更有创造力和生产力”，而且它“将加速 Figma 的创新路线图并提供访问更广泛的客户群”。

Penpot 仍然是很难存活的企业。设计师目前可以使用 Penpot 开源软件的托管版本或免费下载。但 Penpot CEO Ruiz-Múzquiz 并不是唯一一个将 Adobe-Figma 合作伙伴关系视为重要可能性的人。在 Reddit 的 Figma 讨论板上有个帖子，标题为“如果你希望看到 Adobe Figma 交易失败，请投票。”有 400 多人投了支持。让 Figma 不属于 Adobe，这是英国设计机构 Rejiggle 的创始人 Daryl Ginn 在 Twitter 上提出的建议。

Adobe 表示，如果收购在 2023 年按预期进行，Figma 的联合创始人兼 CEO Dylan Field 将继续领导该公司。这并不能减轻一些怀疑论者的恐惧。尼日利亚品牌设计师 Chisaokwu Joboson 在 Twitter 上的一篇的帖子收到了 3,000 多个赞，他的帖子似乎暗示，在 Adobe 的领导下，Figma 存储文件的简单性将结束，它将开始更像是一个强大的桌面应用程序，需要手动保存。

预期中的合并也不是所有人都反对。例如，荷兰设计师 Fons Mans 在 Twitter 上表示，能够使用 Figma 同时还能够在 Photoshop 和其他程序中“处理你的照片”将是“一个梦想”。

由于直接共享和协作编辑等功能，Figma 最初吸引了一些摆脱 Adobe Creative Cloud 工具的设计师。尽管其被宣传为竞争对手，但据报道，Adobe 的 Creative Cloud XD 在七年后每年的经常性收入仅 1500 万美元。在 Twitter Spaces 的讨论中，产品主管 Scott Belsky 表示 Adobe 致力于帮助 XD 的用户。然而，Ruiz-Múzquiz 声称，出售的时机非常有利于他的公司的发展。

---

via: <https://www.opensourceforu.com/2022/09/penpot-gains-additional-users-thanks-to-adobes-figma-purchase/>

作者：[Laveesh Kocher](https://www.opensourceforu.com/author/laveesh-kocher/) 选题：[lkxed](https://github.com/lkxed) 译者：[littlebirdnest](https://github.com/littlebirdnest) 校对：[wxy](https://github.com/wxy)

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


Linux inxi 命令的 3 种使用方法

ubuntu默认下载的inxi无法获取天气，需要将/etc/inxi.conf中的允许更新改为true. 执行sudo inxi -U 更新inxi软件，更新成功后即可正常使用

>
> 我在 Linux 上使用 inxi 来检查我的笔记本电脑电池、CPU 信息，甚至天气。
>
>
>

![Coding on a computer](/data/attachment/album/202210/01/133155q6i2xx2f2emn23f3.png)

当我在查询有关笔记本电脑电池健康状况的信息时，我偶然发现了 `inxi`。它是一个命令行系统信息工具，可提供有关你的 Linux 计算机（无论是笔记本电脑、台式机还是服务器）的大量信息。

`inxi` 命令采用 GPLv3 [许可证](https://github.com/smxi/inxi/blob/master/LICENSE.txt)，许多 Linux 发行版都包含它。据它的 Git 存储库称：“inxi 努力支持最广泛的操作系统和硬件，从最简单的消费台式机到最先进的专业硬件和服务器。”

文档很完善，并且该项目在线维护了完整的 [手册页](https://smxi.org/docs/inxi-man.htm)。安装后，你可以使用 `man inxi` 命令访问系统上的手册页。

### 在 Linux 上安装 inxi

通常，你可以从发行版的软件仓库或应用中心安装 `inxi`。例如，在 Fedora、CentOS、Mageia 或类似发行版上：

```
$ sudo dnf install inxi

```

在 Debian、Elementary、Linux Mint 或类似发行版上：

```
$ sudo apt install inxi

```

你可以在 [此处](https://smxi.org/docs/inxi-installation.htm#inxi-repo-install) 找到有关 Linux 发行版安装选项的更多信息。

### 在 Linux 上使用 inxi 的 3 种方法

当你安装了 `inxi`，你可以探索它的所有选项。有许多选项可帮助你了解有关系统的更多信息。最基本的命令提供了系统的基本概览：

```
$ inxi -b
System:
  Host: pop-os Kernel: 5.19.0-76051900-generic x86_64 bits: 64
        Desktop: GNOME 42.3.1 Distro: Pop!_OS 22.04 LTS
Machine:
  Type: Laptop System: HP product: Dev One Notebook PC v: N/A
        serial: <superuser required>
  Mobo: HP model: 8A78 v: KBC Version 01.03 serial: <superuser required>
        UEFI: Insyde v: F.05 date: 06/14/2022
Battery:
  ID-1: BATT charge: 50.6 Wh (96.9%) condition: 52.2/53.2 Wh (98.0%)
CPU:
  Info: 8-core AMD Ryzen 7 PRO 5850U with Radeon Graphics [MT MCP]
        speed (MHz): avg: 915 min/max: 400/4507
Graphics:
  Device-1: AMD Cezanne driver: amdgpu v: kernel
  Device-2: Quanta HP HD Camera type: USB driver: uvcvideo
  Display: x11 server: X.Org v: 1.21.1.3 driver: X: loaded: amdgpu,ati
        unloaded: fbdev,modesetting,radeon,vesa gpu: amdgpu
        resolution: 1920x1080~60Hz
  OpenGL:
        renderer: AMD RENOIR (LLVM 13.0.1 DRM 3.47 5.19.0-76051900-generic)
        v: 4.6 Mesa 22.0.5
Network:
  Device-1: Realtek RTL8822CE 802.11ac PCIe Wireless Network Adapter
        driver: rtw_8822ce
Drives:
  Local Storage: total: 953.87 GiB used: 75.44 GiB (7.9%)
Info:
  Processes: 347 Uptime: 15m Memory: 14.96 GiB used: 2.91 GiB (19.4%)
  Shell: Bash inxi: 3.3.13

```

### 1、显示电池状态

你可以使用 `-B` 选项检查电池健康状况。结果显示系统电池 ID、充电情况和其他信息：

```
$ inxi -B
Battery:
ID-1: BATT charge: 44.3 Wh (85.2%) condition: 52.0/53.2 Wh (97.7%)

```

### 2、显示 CPU 信息

使用 `-C` 选项了解有关 CPU 的更多信息：

```
$ inxi -C
CPU:
  Info: 8-core model: AMD Ryzen 7 PRO 5850U with Radeon Graphics bits: 64
	type: MT MCP cache: L2: 4 MiB
  Speed (MHz): avg: 400 min/max: 400/4507 cores: 1: 400 2: 400 3: 400
	4: 400 5: 400 6: 400 7: 400 8: 400 9: 400 10: 400 11: 400 12: 400 13: 400
	14: 400 15: 400 16: 400

```

`inxi` 的输出默认使用彩色文本。你可以根据需要使用“颜色开关”进行更改以提高可读性。

命令选项是 `-c` 后跟 0 到 42 之间的任意数字以适合你的习惯。

```
$ inxi -c 42

```

以下是使用配色 5 和 7 的几个不同选项的示例：

![inxi -c 5 command](/data/attachment/album/202210/01/133156g1epabacmfaqtv8b.png)

该软件可以使用 Linux 系统中的传感器显示硬件温度、风扇速度和有关系统的其他信息。输入 `inxi -s` 并读取以下结果：

![inxi -s](/data/attachment/album/202210/01/133156cljoyacffw1poyh3.png)

### 3、组合选项

如果支持，你可以组合 `inxi` 的选项以获得复杂的输出。例如，`inxi -S` 提供系统信息，`-v` 提供详细输出。将两者结合起来可以得到以下结果：

```
$ inxi -S
System:
  Host: pop-os Kernel: 5.19.0-76051900-generic x86_64 bits: 64
        Desktop: GNOME 42.3.1 Distro: Pop!_OS 22.04 LTS

$ inxi -Sv
CPU: 8-core AMD Ryzen 7 PRO 5850U with Radeon Graphics (-MT MCP-)
speed/min/max: 634/400/4507 MHz Kernel: 5.19.0-76051900-generic x86_64
Up: 20m Mem: 3084.2/15318.5 MiB (20.1%) Storage: 953.87 GiB (7.9% used)
Procs: 346 Shell: Bash inxi: 3.3.13

```

### 额外功能：查看天气

`inxi` 可以收集到的信息并不只有你的电脑。使用 `-w` 选项，你还可以获取你所在地区的天气信息：

```
$ inxi -w
Weather:
  Report: temperature: 14 C (57 F) conditions: Clear sky
  Locale: Wellington, G2, NZL
        current time: Tue 30 Aug 2022 16:28:14 (Pacific/Auckland)
        Source: WeatherBit.io

```

你可以通过指定你想要的城市和国家以及 `-W` 来获取世界其他地区的天气信息：

```
$ inxi -W rome,italy
Weather:
  Report: temperature: 20 C (68 F) conditions: Clear sky
  Locale: Rome, Italy current time: Tue 30 Aug 2022 06:29:52
        Source: WeatherBit.io

```

### 总结

有许多很棒的工具可以收集有关你的计算机的信息。我根据机器、桌面或我的心情使用不同的工具。你最喜欢的系统信息工具是什么？

*图片来源：（Don Watkins，CC BY-SA 4.0）*

---

via: <https://opensource.com/article/22/9/linux-inxi-command>

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


保护家庭网络三部曲

![](/data/attachment/album/202210/01/183650wcrjnshjn9cwzqws.jpg)

>
> 都有谁可以访问你的家庭网络？随着物联网（IoT）的普及，有时在运行在你家庭网络上的服务比你想象的更多。我们应当设法保护它免受不需要的访问。
>
>
>

今天，互联网连接的典型结构是家里有一个**路由器**，通常是一个位于你家某个地方的小盒子，它充当了通往互联网世界的网关。路由器创建了一个本地网络，你将你的设备连接到这个本地网络，包括你的电脑、手机、电视、游戏机，以及其他任何需要连接到互联网或相互连接的设备。我们很容易将路由器当作一个分界线，一边是互联网而另一边是你的设备。但这是一个可怕的误解，因为在现实中，你的路由器的一边是整个*计算机网络世界*，另一边是你的数字生活。当你直接使用互联网时，你是在访问别人的计算机网络的共享区域。当你不使用互联网时，它却并没有消失，有很多脚本和程序被设计用以访问数以百万计的路由器，试图找到开放的端口或服务。随着物联网（IoT）的普及，有时在运行在你家庭网络上的服务比你想象的更多。通过以下三个步骤，你可以审计并保护你的家庭网络免受不必要的访问和攻击。

### 1、协议先行

路由器的部分工作是将互联网与你的家庭网络分开。但当你访问互联网时，你邀请互联网的某些部分进入你的家庭。这意味着你创建了一个例外规则，绕过了阻止互联网进入你的本地网络的一般规则。

在许多网站上，通过你的路由器的仅是文本内容。例如，当你访问你最喜欢的博客网站，阅读最新的科技新闻时，你下载了几页文字。你阅读文本，然后继续访问。这是一个简单的一对一的连接。

然而，HTTPS 协议是强大的，在互联网上运行的应用程序也充满了多样性。例如，当你访问某个网站时，你不只是在下载文本。你会得到图形，也许还有脚本或电子书。你还在后台下载 cookie，这有助于网站管理员了解谁在访问网站、加强对移动设备的支持、为更好的可访问性提供新设计并了解读者喜欢的内容。当你网上冲浪时，你可能不会想到 cookie 或流量分析是与你交互的东西，它是被“藏入”页面交互的东西，因为 HTTPS 协议的设计是广泛而通用的，在多数场景被高度信任。当你通过 HTTPS（或者说，在一个浏览器中）访问一个网站时，你可能在不知情的情况下默认同意自动下载文件，但你认为这些文件是有用的和无关紧要的。对于一种旨在减少信任的文件共享模式，你可以尝试一下 [Gemini](https://opensource.com/article/20/10/gemini-internet-protocol) 或 [Gopher](https://opensource.com/article/16/12/yearbook-compute-its-1989#gopher) 协议。

当你加入一个视频会议时，你也使用了类似的协议。你不仅要下载页面上的文字、用于流量监控的cookie，还要下载视频和音频材料。

有些网站的设计甚至更进一步，它们被设计成允许用户分享其电脑屏幕，有时甚至是对他们电脑的控制。这样设计的初衷是有助于远程技术人员修复电脑上的问题，但在现实中，用户可能被欺骗访问这一网站，导致财务凭证和个人数据被盗。

如果一个提供文字文章的网站要求你允许它在你阅读时调用网络摄像头，你理应高度警惕。当一个设备需要访问互联网时，你也应当保持同样的谨慎和警惕。当你把一个设备连接到网络时，重要的是要关注你同意了何种隐性协议。一个旨在控制你房子里的照明的设备不应该*要求*互联网接入，但事实上许多设备需要并且没有明确说明你授予该设备什么权限。许多物联网设备都*希望*接入互联网，这样你就可以在离家时通过互联网访问该设备。这也是“智慧家庭”的部分吸引力。然而，我们不可能知道所有设备运行的是什么代码。在可能的情况下，使用开源和值得信赖的软件，如 [Home Assistant](https://opensource.com/article/20/12/home-assistant) 来与你的物联网设备对接。

### 2、创建访客网络

许多现代路由器可以为你的家庭创建第二个网络（通常在配置面板中称为 “访客网络”）。你可能觉得你不需要访客网络，但实际上，访客网络是十分有意义的。它旨在为访问你房子的人提供互联网访问，而你不需要告诉他们你的私人网络密码。例如在我家的门厅里，我有一个牌子标明了访客网络的名称和密码。任何来访的人都可以加入该网络以访问互联网。

另一方面可以用于物联网、边缘设备和家庭实验室的应用。当我去年购买 “可编程” 的圣诞灯时，我惊讶地发现，为了连接这些灯，它们必须连接到互联网。当然，这些来自无名工厂的 50 美元的灯没有附带源代码，也没有任何方法可以与嵌入在适配器中的固件进行交互或检查，所以我对我同意将它们连接到我的本地网络有一定的顾虑。它们已经被永久地归入了我的访客网络。

每个路由器供应商都是不同的，所以没有关于如何在你的路由器上创建一个 “沙盒” 访客网络的通用指令。一般来说，你通过一个网络浏览器访问你的家庭路由器。你的路由器的地址有时印在路由器的底部，它以 192.168 或 10 开头。

访问路由器地址，用你配置互联网服务时使用的凭证登录。这通常是简单的 “admin” 和一个数字密码（有时，这个密码也印在路由器上）。如果你不知道登录方式，请致电给你的互联网供应商或者制造商咨询。

在图形界面中，找到 “访客网络” 的面板。这个选项在我的路由器的**高级**配置中，但它可能在你的路由器的其他地方，它甚至可能不叫 “访客网络”（或者它甚至可能不是一个选项）。具体情况因厂商而异。

![创建访客网络](/data/attachment/album/202210/01/183653azj2jbzzub6qh9h6.jpg)

这可能需要耐心的寻找。如果你发现你的设备有这个选择，那么你可以为访客建立一个访客网络，包括在不受信任的灯泡上运行的应用程序。

### 3、配置防火墙

你的路由器可能已经存在一个默认运行的防火墙。防火墙将不需要的流量挡在你的网络之外，通常是将传入的数据包限制在 HTTP 和 HTTPS（浏览器流量）以及其他一些常用的协议上，并拒绝不是你发起的请求。你可以通过登录你的路由器并寻找 “防火墙” 或 “安全” 设置来检查防火墙是否正在运行。

然而，许多设备可以运行它们自己的防火墙。网络之所以被称为*网络*是因为在网络上的设备互相能进行连接。在设备之间设置防火墙，就像在你的房子里锁上一扇门。客人可以在大厅里游荡，但如果没有合适的钥匙，他们就不会被邀请进入你的私人办公室。

在 Linux 上，你可以使用 [firewalld](https://opensource.com/article/19/7/make-linux-stronger-firewalls) 接口和 [firewall-cmd](https://www.redhat.com/sysadmin/secure-linux-network-firewall-cmd) 命令来配置你的防火墙。在其他操作系统上，防火墙有时在一个标有 “安全” 或 “共享” 的控制面板中（有时两者都有）。 大多数默认的防火墙设置只允许出站流量（即你通过打开浏览器并导航到一个网站而启动的流量）和响应你的请求的入站流量（即响应你的导航的网络数据）。不是由你发起的传入流量会被阻止。

你可以根据需要配置相关规则以允许特定的流量，例如 [SSH 连接](https://www.redhat.com/sysadmin/access-remote-systems-ssh)、[VNC 连接](https://www.redhat.com/sysadmin/accessing-remote-desktops)，或 [游戏服务器](https://opensource.com/article/18/5/maptool) 主机。

### 监控你的网络

这些技巧有助于建立起你对周围发生的事情的认识。下一步是 [监控你的网络](https://opensource.com/article/19/2/network-monitoring-tools)。你可以从简单的开始，例如在你的访客网络的测试服务器上运行 [Fail2ban](https://www.redhat.com/sysadmin/protect-systems-fail2ban)。看一下日志，如果你的路由器提供日志的话。你不必对 TCP/IP 和数据包以及其他进阶知识了如指掌，就可以看到互联网是一个繁忙而嘈杂的地方，当你在家里安装一个新设备时，无论是物联网、移动设备、台式机或笔记本电脑、游戏机，甚至是 [树莓派](https://opensource.com/article/22/3/raspberry-pi-projects-2022)，而亲身体会到这一点对你采取预防措施有很大启发。

---

via: <https://opensource.com/article/22/9/protect-home-network>

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

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


硬核观察 #776 布鲁斯･威利斯成为第一位允许使用深度伪造技术的好莱坞明星

Summary: • 布鲁斯･威利斯成为第一位允许使用深度伪造技术的好莱坞明星 • 因没人用，谷歌翻译不再向中国区域提供服务 • 隐藏在微软 Windows 标志中的恶意软件

![](/data/attachment/album/202210/01/193704yjl5zcnj511lh0pn.jpg)

![](/data/attachment/album/202210/01/193713f3m8ii8t2665qp26.jpg)

### 布鲁斯･威利斯成为第一位允许使用深度伪造技术的好莱坞明星

威利斯允许创建 “数字孪生” 的 Deepcake 公司使用他的面容，利用深度伪造技术，将他的脸数字移植到另一个表演者身上。无需出现在拍摄现场，他就出现在一个手机广告中。他说，“即使我在另一个大陆，我也能够沟通、工作和参与拍摄。这是一个非常新的和有趣的经验。”今年早些时候，威利斯在被诊断出患有失语症后“退出”了演艺圈。67 岁的威利斯已经出演了 70 多部电影。

>
> **[消息来源：Telegraph](https://www.telegraph.co.uk/world-news/2022/09/28/deepfake-tech-allows-bruce-willis-return-screen-without-ever/)**
>
>
>

>
> 老王点评：不但对于“退出”演艺圈的老演员非常有意义，而且，我们还能见到已经去世的明星们。这才是深度伪造的最好的用途之一。
>
>
>

![](/data/attachment/album/202210/01/193730unhyff77u79zss0a.jpg)

### 因没人用，谷歌翻译不再向中国区域提供服务

一直以来中国用户还可以使用寥寥无几的谷歌服务，包括翻译和地图服务。而地图服务已经停止了。前两天，网友发现，谷歌翻译被定向到谷歌 .hk 域名下，实际上导致中国区域无法访问。谷歌承认，该公司已经停止了谷歌翻译在中国大陆的服务，“因为使用率低”。

>
> **[消息来源：Tech Crunch](https://techcrunch.com/2022/09/30/google-appears-to-have-disabled-google-translate-in-parts-of-china/)**
>
>
>

>
> 老王点评：好吧，确实没什么人（能）用。
>
>
>

![](/data/attachment/album/202210/01/193744o9hii50ufvn8x58f.jpg)

### 隐藏在微软 Windows 标志中的恶意软件

隐写术虽然不是一种新技术，不过，有一种恶意软件将其有效载荷隐藏在旧版的微软 Windows 操作系统的标志中。当加载器在被攻击的系统上下载上述标志时，隐藏在图像文件中的有效载荷被 XOR 密钥解密。如果成功执行，该木马将打开一个功能齐全的后门。

>
> **[消息来源：赛门铁克](https://symantec-enterprise-blogs.security.com/blogs/threat-intelligence/witchetty-steganography-espionage)**
>
>
>

>
> 老王点评：虽然这样比较有隐蔽性，不过我能感觉到其中的嘲讽味道。
>
>
>


对开源软件的攻击呈上升趋势

Summary: 对开源仓库的攻击越来越频繁了。

对开源仓库的攻击越来越频繁了。

![](/data/attachment/album/202210/02/112659l5iaoi9ij0bji5ji.jpg)

>
> 对开源仓库的攻击越来越频繁了。
>
>
>

根据近日的研究，由于越来越多的企业使用开源代码仓库来开发他们的软件及解决方案，网络犯罪分子正在借此获利。根据软件供应链管理服务提供商 Sonatype 最近所做的研究，在最近三年里，受感染的软件包、以及对这些软件平台的<ruby> 仿冒攻击 <rt>  typosquatting assaults </rt></ruby>和类似的黑客攻击的频率大幅增加。

该企业在过去三年中发现了大约 95000 个有害软件包，以及超过 55000 个最近才使用他们的存储库防火墙公布出来的危险软件包。届时，这个数字在三年内平均增长了 700%。

该企业称，他们的存储库防火墙将通过融合行为分析和自动策略执行的方式，不断发现并阻止有害软件包及潜在的易受攻击的组件。此外，它还使用了人工智能对每个新发布的开源软件进行评估，看它是否会带来一些安全风险。而且该企业断言，由于开源代码的迅速增加，人工分析已变得几乎不可能。

然而，这与企业是否在它的最终产品中包含受感染的恶意组件无关。该公司声称，如果那些恶意组件已经被下载到他们的端点上，就已经太晚了。

“恶意网络攻击的数量、频率、严重性和复杂性还在增长。但企业不能，也不应该仅为保护自身而避免使用开源代码。” Fox 补充说：“但他们可以使用预防性的工具，例如 Sonatype 防火墙来保证开发人员的工作进度和软件供应链的安全。”

---

via: <https://www.opensourceforu.com/2022/09/attacks-on-open-source-software-are-on-the-rise/>

作者：[Laveesh Kocher](https://www.opensourceforu.com/author/laveesh-kocher/) 选题：[lkxed](https://github.com/lkxed) 译者：[自由的铁矿](https://github.com/vvvbbbcz) 校对：[wxy](https://github.com/wxy)

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


Julia 和 Python，哪一个更快？

Summary: 本文将从它们在神经网络和机器学习的性能表现上进行讨论。

本文将从它们在神经网络和机器学习的性能表现上进行讨论。

![](/data/attachment/album/202210/02/122529vdztvds1ttqez1ts.jpg)

Julia 是一门高度抽象的动态编程语言。虽然它是一门能够开发所有程序的通用语言，但它有几个特点，非常适用于科学计算和数值计算。Python 在 1990 年初作为一种简单的面向对象的程序语言出现，如今已经有了显著的发展。本文将从它们在神经网络和机器学习的性能表现上进行讨论。

Julia 的架构以动态语言中的<ruby> 参数多态性 <rt>  parametric polymorphism </rt></ruby>和<ruby> 多重派发 <rt>  multiple dispatch </rt></ruby>的编程范式为主要特色。它允许使用或不使用<ruby> 消息传递接口 <rt>  message passing interface </rt></ruby>（MPI）或内置的 “OpenMP 式” 线程进行并发、并行和分布式计算，以及直接调用 C 和 FORTRAN 库而无需额外的代码。Julia 使用 <ruby> 即时 <rt>  just-in-time </rt></ruby>（JIT）编译器，Julia 社区将其称为 “<ruby> 即时预编译 <rt>  just-ahead-of-time </rt></ruby>（JAOT）”，因为它在运行之前默认将所有代码编译为机器码。

与 Python 不同，Julia 是专为统计学和机器学习而设计的。Julia 可以快速的完成线性代数的运算，但 Python 很慢。这是因为 Python 从来都不是为了适应机器学习用到的矩阵和方程而设计的。Python 本身并不差，特别是 Numpy，但在没有使用包的情况下，Julia 更像是为数学量身定制的。相比 Python，Julia 的运算符更像 R，这是一个显著的优势。大部分的线性代数运算可以用更少的时间和精力去完成。

众所周知，近年来 Python 在机器学习和数据科学领域占据主导地位。因为在 Python 中我们可以使用各种各样的第三方库来帮助我们编写机器学习的代码。虽然 Python 有这么多优势，但仍有一个主要的缺点——它是一门解释性语言，速度非常慢。现在是数据时代，数据越多我们处理它的时间就越长，这也是 Julia 出现的理由。

到目前为止，有关 Julia 的研究工作都集中在高性能或者 Julia 的科学计算能力等主题上。但在这里，我们将讨论 Julia 不仅能够有效地处理复杂的科学计算，还能够处理基于商业的问题，以及像 Python 一样处理机器学习和神经网络。

### 实验目标与实验设计

Julia 像 Python 一样简洁，但却像 C 一样是一门编译语言。首先我们来测试 Julia 要比 Python 快多少。为此，我们先在一些简单的程序上测试它们，然后来到我们实验的重点，测试它们的机器学习和深度学习能力。

Julia 和 Python 都提供了许多库和开源的基准测试工具。为了在 Julia 中进行基准测试和计算时间，我们使用了 `CPUTime` 和 `time` 库；对于 Python，我们同样使用了 `time` 模块。

### 矩阵乘法

一开始我们尝试了简单的算术运算，但由于这些运算不会产生太大的时间差异，我们决定比较矩阵乘法的时间差异。我们创建了两个 `(10 * 10)` 的随机浮点数矩阵，并对它们施以点积。众所周知，Python 有一个 `Numpy` 库，常被用于计算矩阵和向量。而 Julia 也有一个 `LinearAlgebra` 库，常用于计算矩阵和向量。因此我们分别比较了各自使用和不使用库的矩阵乘法的耗时。本文用到的所有源码已经放在了 [GitHub 存储库](https://github.com/mr-nerdster/Julia_Research.gitsee)。下面给出了用 Julia 编写的 10×10 矩阵乘法程序：

```
@time LinearAlgebra.mul!(c,x,y)

function MM()
x = rand(Float64,(10,10))
y = rand(Float64,(10,10))
c = zeros(10,10)

for i in range(1,10)
for j in range(1,10)
for k in range(1,10)
c[i,j] += x[i,k]*y[k,j]
end
end
end
end
@time MM

0.000001 seconds
MM (generic function with 1 method)

```

Julia 使用库耗时 0.000017 秒，使用循环耗时 0.000001 秒。

使用 Python 编写相同的矩阵乘法程序如下。 从结果可以发现，与不使用库相比，使用库的程序花费的时间更少：

```
import numpy as np
import time as t
x = np.random.rand(10,10)
y = np.random.rand(10,10)
start = t.time()
z = np.dot(x, y)
print(“Time = “,t.time()-start)
Time = 0.001316070556640625

import random
import time as t
l = 0
h= 10
cols = 10
rows= 10

choices = list (map(float, range(l,h)))
x = [random.choices (choices , k=cols) for _ in range(rows)]
y = [random.choices (choices , k=cols) for _ in range(rows)]

result = [([0]*cols) for i in range (rows)]

start = t.time()

for i in range(len(x)):
for j in range(len(y[0])):
for k in range(len(result)):
result[i][j] += x[i][k] * y[k][j]

print(result)
print(“Time = “, t.time()-start)

Time = 0.0015912055969238281

```

Python 使用库耗时 0.0013 秒，使用循环耗时 0.0015 秒。

### 线性搜索

我们进行的下一个实验是对十万个随机生成的数字进行线性搜索。这里使用了两种方法，一种是使用 `for` 循环，另一种是使用运算符。我们使用 1 到 1000 的整数执行了 1000 次搜索，正如你在下面的输出中看到的那样，我们还打印了我们在数据集中找到了多少个整数。下面给出了使用循环和使用 `IN` 运算符的时间。这里我们使用了 CPU 3 次运行时间的中位数。

使用 Julia 编写的程序和运行结果如下：

（LCTT 译注：此处原文缺失 Julia 代码）

使用 Python 编写的程序和运行结果如下：

```
import numpy as np
import time as t
x = np.random.rand(10,10)
y = np.random.rand(10,10)
start = t.time()
z = np.dot(x, y)
print(“Time = “,t.time()-start)
Time = 0.001316070556640625

import random
import time as t
l = 0
h= 10
cols = 10
rows= 10

choices = list (map(float, range(l,h)))
x = [random.choices (choices , k=cols) for _ in range(rows)]
y = [random.choices (choices , k=cols) for _ in range(rows)]

result = [([0]*cols) for i in range (rows)]

start = t.time()

for i in range(len(x)):
for j in range(len(y[0])):
for k in range(len(result)):
result[i][j] += x[i][k] * y[k][j]

print(result)
print(“Time = “, t.time()-start)

Time = 0.0015912055969238281

```

```
FOR_SEARCH:
Elapsed CPU time: 16.420260511 seconds
matches: 550
Elapsed CPU time: 16.140975079 seconds
matches: 550
Elapsed CPU time: 16.49639576 seconds
matches: 550

IN:
Elapsed CPU time: 6.446583343 seconds
matches: 550
Elapsed CPU time: 6.216615487 seconds
matches: 550
Elapsed CPU time: 6.296716556 seconds
matches: 550

```

从以上结果来看，在 Julia 中使用循环和运算符并不会产生显著的时间差异。但是在 Python 中循环几乎比运算符 IN 多花了三倍的时间。有趣的是，在这两种情况下，Julia 都比 Python 快得多。

### 线性回归

下一个实验是测试机器学习算法。我们选择了以一种最常见和最简单的机器学习算法，使用简单数据集的线性回归。我们使用了一个包含 237 条数据的数据集 “Head Brain”，数据集的两列分别为 “HeadSize” 和 “BrainWeight”。接下来，我们使用 “head size” 数据去计算 “brain weight”。在 Python 和 Julia 中我们都没有使用第三方库，而是从零实现了线性回归算法。

Julia：

```
GC.gc()
@CPUtime begin
linear_reg()
end
elapsed CPU time: 0.000718 seconds

```

Python：

```
gc.collect()
start = process_time()
linear_reg()
end = process_time()

print(end-start)
elapsed time: 0.007180344000000005

```

上面给出了 Julia 和 Python 所花费的时间。

### 逻辑回归

接下来，我们使用两种语言的库对最常见的机器学习算法（即逻辑回归）进行了实验。对于 Python 我们使用最常见的库 `sklearn`；对于 Julia，我们使用 `GLM` 库。我们在这里用到的数据集是有关银行客户的信息，其中包含 10,000 个数据条目。目标变量是一个二元变量，区分消费者是否继续使用银行账户。

下面给出了 Julia 进行逻辑回归所花费的时间：

```
@time log_rec()
0.027746 seconds (3.32 k allocations: 10.947 MiB)

```

下面给出了 Python 进行逻辑回归所花费的时间：

```
gc.collect()
start = process_time()
LogReg()
end = process_time()
print(end-start)

Accuracy : 0.8068
0.34901400000000005

```

### 神经网络

在各种程序和数据集上测试这两种语言后，我们在神经网络上使用 MNIST 数据集继续测试它们。该数据集包含从零到九的手绘数字的灰度图像。每张图像为 28×28 像素。每个像素值表示该像素的亮度或暗度，该值是包含 0 到 255 之间的整数。该数据还包含一个标签列，该列表示在相关图像中绘制的数字。

![Figure 1: Example of MNIST data set](/data/attachment/album/202210/02/122546koode2smh35so0qy.jpg)

图 1 是 MNIST 数据集的示例。

对两种语言我们都建立了一个简单的神经网络来测试它们耗费的时间。神经网络的结构如下：

```
Input ---> Hidden layer ---> Output

```

该神经网络包含了一个输入层、隐层还有输出层。为了避免神经网络的复杂度过高，我们对数据集没有进行任何的预处理工作。在 Julia 和 Python 中我们都进行了40次训练并比较它们的时间差异。

![Figure 2: Julia takes 5.76 seconds in a neural network](/data/attachment/album/202210/02/122546mkx442k7pjaegef7.jpg)

在 Julia 中，`Flux` 库通常被用于建立神经网络；在 Python 中我们常使用 `Keras` 库。图 2 展示了 Julia 在神经网络上的耗时。图 3 展示了 Python 的神经网络经过了若干次训练的耗时。

![Figure 3: Python takes 110.3 seconds in a neural network](/data/attachment/album/202210/02/122546au5duhu5d5adhnbk.jpg)

这个结果展示了 Julia 和 Python 在处理神经网络时存在巨大的时间差异。

表 1 总结了此次实验的测试结果并计算了 Julia 和 Python 时间差异的百分比。

| 实验 | Julia（秒） | Python（秒） | 时间差（%） |
| --- | --- | --- | --- |
| 矩阵乘法（不使用库） | 0.000001 | 0.0015 | 99.9 |
| 矩阵乘法（使用库） | 0.000017 | 0.0013 | 98.69 |
| 线性搜索（使用循环） | 0.42 | 16.4 | 97.43 |
| 线性搜索（使用 IN 操作符） | 0.43 | 6.2 | 93.06 |
| 线性回归 | 0.000718 | 0.00718 | 90 |
| 逻辑回归 | 0.025 | 0.34901 | 92.83 |
| 神经网络 | 5.76 | 110.3 | 94.77 |

我们进行的所有实验都表明，随着程序复杂性以及数据集大小的增加，Julia 和 Python 之间的执行时间差异也会增加。由这个结果我们可以推断，Julia 是一门更适合机器学习和神经网络的编程语言。

---

via: <https://www.opensourceforu.com/2022/09/julia-and-python-which-language-is-quicker/>

作者：[B Thangaraju](https://www.opensourceforu.com/author/b-thangaraju/) 选题：[lkxed](https://github.com/lkxed) 译者：[Return7g](https://github.com/Return7g) 校对：[wxy](https://github.com/wxy)

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


如何在 Linux 中使用媒体传输协议访问安卓设备的内部存储和 SD 卡

![](/data/attachment/album/202210/02/165046qu9oddb5dk757z9e.jpg)

>
> 本教程将展示如何在 Ubuntu 中使用 MTP 访问安卓设备以及如何访问 SD 卡内容。
>
>
>

MTP，即 <ruby> <a href="https://en.wikipedia.org/wiki/Media_Transfer_Protocol">  媒体传输协议 </a> <rt>  media transfer protocol </rt></ruby>，是图片传输协议的扩展，它在安卓 6.0（棉花糖）版本中实现。在更新了安卓 6.0 之后，你无法将安卓设备用作典型的大容量存储设备，以便让你直接插入并在文件管理器（例如 Thunar 或 GNOME Files）中查看内部存储内容和 SD 卡内容。这是由于操作系统无法确定 MTP 设备，而且还没有实现支持的设备列表。

### 在 Ubuntu、Linux Mint 中访问 Android 设备的步骤

使用以下命令为启用 MTP 的设备 [mtpfs](https://launchpad.net/ubuntu/+source/mtpfs) 安装 [libmtp](https://sourceforge.net/projects/libmtp/) FUSE 文件系统：

```
sudo apt install go-mtpfs
sudo apt install libmtp
sudo apt install mtpfs mtp-tools

```

使用 USB 线缆将你的安卓设备插入 Ubuntu。

在你的安卓设备上，在主屏幕下拉，然后单击 “触摸获得更多选项Touch for more options”。

在下面的菜单中，选择“<ruby> 传输文件（MTP） <rt>  Transfer File (MTP) </rt></ruby>”选项：

![MTP Option1](/data/attachment/album/202210/02/165039j2urebypww8utrer.png)

![MTP Option2](/data/attachment/album/202210/02/165039t1d9xd2k8z9di8i9.png)

在终端中运行以下命令查找设备 ID 等。你可以在设备的命令输出中看到 `VID` 和 `PID`。记下这两个数字（在下图中高亮显示）：

```
mtp-detect

```

![mtp-detect Command Output](/data/attachment/album/202210/02/165040vw991z792821kru0.png)

使用以下命令使用文本编辑器打开安卓规则文件：

```
sudo gedit /etc/udev/rules.d/51-android.rules

```

如果你使用的是未安装 gedit 的最新 Ubuntu，请使用以下命令：

```
sudo gnome-text-editor /etc/udev/rules.d/51-android.rules

```

在 `51-android.rules` 文件中使用你设备的 VID 和 PID 输入以下行（你在上面的步骤中记下）：

```
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e82", MODE="0666"

```

保存并关闭文件。

运行以下命令通过 [systemd](https://www.debugpoint.com/systemd-systemctl-service/) 重启设备管理器：

```
sudo service udev restart

```

### 访问内容的后续步骤

接下来的步骤主要用于访问你的 Android 设备的外部 SD 卡的内容。

我必须这样做，因为文件管理器没有显示 SD 卡的内容。不过，这不是一个解决方案，但它是一种临时方案，根据这个 [Google 论坛帖子](https://productforums.google.com/forum/#!topic/nexus/11d21gbWyQo;context-place=topicsearchin/nexus/category$3Aconnecting-to-networks-and-devices%7Csort:relevance%7Cspell:false)，它适用于大多数用户，并且适用于我的带有闪迪 SD 卡的摩托罗拉 G 2nd Gen：

* 在 Ubuntu 中安全删除你连接的设备。
* 关闭设备。从设备中取出 SD 卡。
* 在没有 SD 卡的情况下打开设备。
* 再次关闭设备。
* 将 SD 卡重新插入并再次打开设备。

重启你的 Ubuntu 机器并插入你的安卓设备。

现在你可以看到你的安卓设备的内部存储和 SD 卡的内容。

![MTP Device Contents in Ubuntu](/data/attachment/album/202210/02/165040tl6ion655tobzs6l.png)

### 总结

上述在 Ubuntu 中访问安卓设备内容的教程在旧版和新版 Ubuntu 中的安卓设备（三星、一加和摩托罗拉）上都可以使用。如果你在访问内容时遇到困难，可以试试这些步骤，它可能会起作用。在我看来，MTP 与老式的即插即用方案相比非常慢。

---

via: <https://www.debugpoint.com/how-to-access-android-devices-internal-storage-and-sd-card-in-ubuntu-linux-mint-using-media-transfer-protocol-mtp/>

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


硬核观察 #777 Debian 确定了处理非自由固件的方案

Summary: • Debian 确定了处理非自由固件的方案 • System76 的 COSMIC 桌面将不使用 GTK • openEuler 发布 22.09 创新版，实现鸿蒙欧拉互联互通

Iced 支持最终用户自己改主题吗？

![](/data/attachment/album/202210/02/180302iyvchr7qbger13yq.jpg)

![](/data/attachment/album/202210/02/180316j1si3i1pg73iti9i.jpg)

### Debian 确定了处理非自由固件的方案

现在越来越多的设备拥有开源的 Linux 驱动，但却需要闭源的固件来实现功能，Debian 开发者一直在考虑对非自由固件采取最新的立场。在 Debian 社区前一段时间发起的投票中，方案 5 获胜：“改变安装程序中的非自由固件的社会契约（SC），采用单个安装程序”。即在 Debian 的官方介质中包含非自由固件，并在《Debian 社会契约》的第 5 点的末尾增加以下一句话以说明：“Debian 官方介质可以包括原本不属于 Debian 系统的固件，以使 Debian 能够在需要此类固件的硬件上使用。”

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Debian-Non-Free-Firmware-Result)**
>
>
>

>
> 老王点评：连这么“顽固”的 Debian 社区都不得不向现实低头。
>
>
>

![](/data/attachment/album/202210/02/180325p4amcd7g1cgd733b.jpg)

### System76 的 COSMIC 桌面将不使用 GTK

System76 一直在开发他们自己的 COSMIC 桌面，准备用在他们的 Pop!\_OS Linux 发行版上。在这个用 Rust 编写的桌面环境中，他们决定不再使用 GTK 工具包，而是使用 Iced-Rs 作为 Rust 原生的多平台图形工具包。Iced 是一个原生的 Rust GUI 工具包，他们在 GTK 和 Iced 中开发了各种 COSMIC 小程序以供比较。System76 称，“与 GTK 相比，Iced 的最新开发版本有一个非常灵活、有表现力和直观的 API。它在 Rust 中感觉非常自然。”

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/COSMIC-Desktop-Iced-Toolkit)**
>
>
>

>
> 老王点评：采用 Rust 开发的桌面环境，非常期待。
>
>
>

![](/data/attachment/album/202210/02/180339c2ufce1677uhlcw2.jpg)

### openEuler 发布 22.09 创新版，实现鸿蒙欧拉互联互通

该版本是 openEuler 社区捐赠后的首个创新版本，全量代码达 6.7 亿行，新增代码 2012 万行，其中内核新增原创代码 4.8 万行。1265 名开发者参与了该版本贡献，相较于上一个版本，参与版本贡献的开发者数量新增 63%。此版本新增了支持申威的 SW-64、龙芯的龙架构的系统镜像。此外，还通过集成实时内核的方式，实现了欧拉与鸿蒙的互联互通。

>
> **[消息来源：openEuler](https://mp.weixin.qq.com/s/pvp_drAo3Vzg11MjRqbXwg)**
>
>
>

>
> 老王点评：虽然创新版本半年推出一个，但是其积累的进步将在 LTS 版本中保留下来。不过，大部分 Linux 个人用户可能对欧拉没什么使用体验。
>
>
>


5 款自由开源的 Figma 替代品

![](/data/attachment/album/202210/02/222037sejf1j6z6jupcz6g.jpg)

Figma 是一个流行的界面设计工具。你可以免费开始使用，也可以选择高级订阅计划以供进阶使用。

这是一个令人印象深刻的平台，许多专业人士都依赖它。然而，在 2021 年，[Figma](https://www.figma.com/) 通过施加某些限制改变了其免费计划。虽然这使一些用户寻找替代品，但对许多人来说仍然是可接受的。

不幸的是，在 2022 年，**Adobe 宣布以 200 亿美元收购 Figma** 让许多用户望而却步。因此，每个人都开始寻找免费且可能开源的替代品。

为了帮助你，我们决定编一份 Figma 的自由开源的替代品清单，你可以试试。

**注意：**提到的替代品不一定是 Figma 的完全替代品。我们建议你尝试一下，看看它们是否符合你的要求。

### 1、Penpot

**主要亮点：**

* 自托管选择。
* 使用 SVG 作为原生格式。
* 基于网页。
* 跨平台。

Penpot 很快被公认为可靠的免费和开源 Figma 替代品。

即使它处于测试阶段，在写这篇文章时，用户似乎喜欢它提供的东西。我不是一个设计专家，但这个工具的用户体验似乎令人印象深刻。

Penpot 的独特之处在于它使用 SVG 作为其原生格式，这很罕见，但也为设计师提供了巨大的好处。

![penpot screenshot](/data/attachment/album/202210/02/222040v4f8o8mdoz2fbkfo.jpg)

你可以期待具有 Figma 的基本功能，因为开发人员提到该工具的原始灵感是 Figma，他们旨在提供熟悉的用户体验，而不给你的设计冒险增加障碍。

前往其官方网站或 GitHub 页面探索更多信息。

>
> **[Penpot](https://penpot.app/)**
>
>
>

### 2、Quant UX

**主要亮点：**

* 原型设计和测试。
* 无需注册即可获得有限访问权限。
* 定期添加新的测试版功能。
* 自托管选择。

Quant UX 是一种原型设计工具，你可以在其中测试你的设计并获得它们的实际体验。

你可以为安卓手机、iPhone 或台式机创建自定义原型，或选择任何可用的屏幕尺寸。

这也是你会发现它不断添加功能的地方，其中一些处于测试阶段。它更专注于通过让你导入设计或创建简单的模型来测试事物。

它允许你无需注册即可访问一些内容，但要使所有功能正常工作，你需要注册一个帐户。在其 [GitHub 页面](https://github.com/KlausSchaefers/quant-ux) 上探索更多信息。

>
> **[Quant UX](https://quant-ux.com/)**
>
>
>

### 3、Plasmic

**主要亮点：**

* 自由开源。
* 拖放功能。
* 它支持从 Figma 导入设计。

Plasmic 是用于构建网页的卓越设计工具。如果你使用 Figma 进行网页设计，这可能是一个可供选择的工具。

它免费提供大部分功能，当你选择高级计划时，可以为团队解锁更多扩展版本历史记录、分析和其他特殊功能。它不仅限于设计网页，还支持 A/B 测试来实验和改进网站的用户交互。

无论你使用的是 [开源 CMS](https://itsfoss.com/open-source-cms/) 还是 Jamstack 站点，Plasmic 几乎都支持集成。前往其官方网站或 [GitHub 页面](https://github.com/plasmicapp/plasmic) 了解更多信息。

>
> **[Plasmic](https://www.plasmic.app/)**
>
>
>

### 4、Wireflow

![wireflow userflow](/data/attachment/album/202210/02/222040k3nmisum6im5zdmm.jpg)

**主要亮点：**

* 免费使用。
* 没有付费选项。
* 它没有被积极维护。

Wireflow 作为用户流原型工具是一个有趣的产品，它完全免费使用，没有付费选项。

此外，你无需注册帐户。从其官方网站开始，与他人合作规划你的项目并进行头脑风暴。

不幸的是，它自 2021 年以来没有看到任何最近的开发活动。但是，它仍然活跃并且仍然是一个自由开源的解决方案。你可以查看其 [GitHub 页面](https://github.com/vanila-io/wireflow) 了解更多信息。

>
> **[Wireflow](https://wireflow.co/)**
>
>
>

### 5、Akira UX

![akira ux 2020](/data/attachment/album/202210/02/222041z936rr30684njorw.png)

**主要亮点：**

* 尚处于早期开发中的应用。
* 专注于成为原生 Linux UX 应用。

[Akira UX](https://itsfoss.com/akira-design-tool/) 是一个令人兴奋的项目，旨在带来一个原生 Linux 设计程序，该程序可以与一些基于 Web 的解决方案一样工作。

Akira 的项目负责人加入了 Mozilla Thunderbird 担任产品设计经理。因此，截至目前，该项目还没有被积极地开发。但是，作为一个自由开源项目，任何人都可以负责它并致力于相同的愿景。

它目前提供了可以测试的早期开发版本。你可以在 Flathub 的 beta 渠道中找到它，并按照其 [GitHub 页面说明](https://github.com/akiraux/Akira) 进行安装。

>
> **[Akira UX](https://github.com/akiraux/Akira)**
>
>
>

### 总结

用自由开源的解决方案取代 Figma 并不容易。但是，如果你不关心 Figma 的所有功能，我们的一些建议应该可以帮助你完成工作。

*你知道有什么其他自由开源的 Figma 替代品吗？请在下面的评论中告诉我你的想法*。

---

via: <https://itsfoss.com/figma-alternatives/>

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


如何安装 VSCode 扩展

Summary: 通过图形界面和命令行两种方法，了解如何在 VSCode 中搜索和安装扩展。

通过图形界面和命令行两种方法，了解如何在 VSCode 中搜索和安装扩展。

![](/data/attachment/album/202210/02/232225yzgzrymdrepj2mpa.jpg)

>
> 通过图形界面和命令行两种方法，了解如何在 VSCode 中搜索和安装扩展。
>
>
>

微软的 [Visual Studio Code](https://code.visualstudio.com/)（VSCode）可能是最流行的 [开源代码编辑器](https://itsfoss.com/best-modern-open-source-code-editors-for-linux/)，仅次于 Vim（当然）。

VSCode 通过提供几乎所有类似 IDE 的功能，提供了令人惊叹的“开箱即用”体验。 但总有一些事情是你希望 VSCode 能够另外做到的。*正所谓“邻家芳草绿，隔岸风景好”* : )

你可以在 Visual Studio Code <ruby> <a href="https://marketplace.visualstudio.com/VSCode">  市场 </a> <rt>  Marketplace </rt></ruby> 找到 VSCode 扩展插件。在 VSCode 市场上发布的扩展插件在发布之前会进行病毒扫描，所以这些扩展可以 [信任](https://code.visualstudio.com/docs/editor/extension-marketplace#_can-i-trust-extensions-from-the-marketplace)。

### 在 VSCode 中安装扩展插件

你不需要访问 VSCode <ruby> 市场 <rt>  Marketplace </rt></ruby> 网站就可以安装扩展插件。也就是说，你可以直接从 VSCode 本身安装和管理扩展插件。

我希望你已经在你使用的操作系统（比如 [在 Linux](https://itsfoss.com/install-visual-studio-code-ubuntu/)）上 安装了 VSCode。

打开 VSCode，最左侧是活动栏。活动栏上的最后一个按钮就是“扩展”按钮。点击它之后你会看到大量可安装的扩展。

![访问 VSCode 中的扩展选项卡](/data/attachment/album/202210/02/232228n1h38y1hhh1183zf.jpg)

你也可以按快捷键组合 `Ctrl + Shift + X` 来启动扩展栏的侧面面板。

如果你还没有安装任何扩展的话，你会看到 VSCode 市场上最流行的扩展列表。

#### 找到并安装某个扩展（图形界面方法）

现在是时候尝试一下 Linux 人谈论的 `vim` 了（鼓动的语气）; )

开玩笑啦。让我们安装一些对我们初学者更友好，可以轻松使用而且无需太多练习的扩展吧。

从最流行的扩展列表中单击 “Visual Studio IntelliCode” （①）扩展。

![如何安装 Visual Studio IntelliCode 等扩展](/data/attachment/album/202210/02/232228cadk6txpkdd5zvvk.jpg)

点击 “<ruby> 安装 <rt>  Install </rt></ruby>” 按钮（②）即可安装 “Visual Studio IntelliCode” 扩展。这个扩展会在你编写代码时为你提供 AI 预测的建议。

安装后，你可以充分利用此扩展。试试用你喜欢的编程语言输入一段代码，然后看看 AI 的自动完成功能是否顺利运行而且没有拖慢你的工作进程。

![在 Visual Studio Code 中管理已安装的扩展](/data/attachment/album/202210/02/232229opm6i4jripfjmk40.jpg)

如果你不喜欢某个已安装的扩展插件，你只需单击 “<ruby> 卸载 <rt>  Uninstall </rt></ruby>” 按钮（②）即可完全删除不需要的扩展插件。

如果你安装了多个扩展插件，并且你觉得其中某个扩展插件给你带来了问题——比如说突然崩溃；你只需点击 “<ruby> 禁用 <rt>  Disable </rt></ruby>” 按钮（①）即可禁用一个（或多个）扩展插件，并检查扩展插件 *甲* 是否在起作用，或者它是扩展插件 *乙*，还是完全不同的东西。

考虑到扩展删除和重新安装需要很长时间，当你安装了多个扩展时，禁用扩展会很方便。

#### 另外方法：使用终端安装扩展

你知道你可以从终端安装 VSCode 扩展吗？不过，现在你知道了！

要从你的终端安装扩展程序，你需要知道扩展程序名称和发布者名称，再按照 `发布者名称.扩展程序名称` 的顺序找到它。比如说，如果你想安装 “Visual Studio IntelliCode” 这个扩展（前面提到的），它的名称就是 `VisualStudioExptTeam.vscodeintellicode`。

要找出扩展用于标识的唯一名称（ID），首先要在你的浏览器中 [访问 VSCode 市场](https://marketplace.visualstudio.com/)。

![VSCode 市场的截图](/data/attachment/album/202210/02/232230t3jw8gawzabxbgx8.jpg)

然后搜索某个扩展，在本教程中，我将以安装 “Visual Studio IntelliCode” 这个扩展为例。下一步，打开你要安装的扩展程序的页面。

![搜索Visual Studio IntelliCode并打开扩展网页](/data/attachment/album/202210/02/232230uoo84pccooebcu4u.jpg)

打开扩展程序的网页后，你将看到一个代码块。下面的截图突出标示了扩展程序的 ID。

![VSCode 扩展的 ID](/data/attachment/album/202210/02/232231kiv6n3ulv082n432.jpg)

一旦你有了想要安装的扩展的 ID —— 在这种情况下是 `VisualStudioExptTeam.vscodeintellicode`，你可以通过在终端中运行以下命令来继续。

```
code --install-extension VisualStudioExptTeam.vscodeintellicode

```

与图形界面一样，命令行界面也允许你安装、禁用、删除和管理扩展。

可以通过运行以下命令查看已安装的所有扩展的列表。

```
code --list-extensions

```

要禁用单个扩展，请运行以下命令：

```
code --disable-extension <在这里输入扩展的ID>

```

如果要禁用所有扩展，可以运行以下命令：

```
code --disable-extensions

```

上述命令将禁用 **所有** 已安装的扩展。这将帮助你判断导致问题的是插件，还是 VSCode 本身。

现在，如果你想完全删除任何某个扩展，请运行以下命令：

```
code --uninstall-extension <在这里输入扩展的ID>

```

### 总结

我发现使用 VSCode 安装扩展要容易得多。毕竟，它直接在我编辑器左边的侧栏中。

一旦你对 VSCode 的操作得心应手，也许可以看看这篇文章，[VSCode 实用快捷键](https://itsfoss.com/vs-code-shortcuts/) 可能会帮助你提高工作效率！

写代码顺利，新朋友！ : )

---

via: <https://itsfoss.com/install-vs-code-extensions/>

作者：[Pratham Patel](https://itsfoss.com/author/pratham/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[泠知落汐](https://github.com/CoWave-Fall) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #778 Linux 内核 6.0 正式发布，但更期待 6.1

Summary: • Linux 内核 6.0 正式发布，但更期待 6.1 • 2022 全球程序员薪资排行榜，中国倒数第九 • 黑客利用开源软件和虚假工作机会进行钓鱼式攻击

![](/data/attachment/album/202210/03/102649owwq7bl1qqxhm97a.jpg)

![](/data/attachment/album/202210/03/102658y61zv2osh3ns39b8.jpg)

### Linux 内核 6.0 正式发布，但更期待 6.1

没有遇到意外，Linus Torvalds 于今天推出了 Linux 6.0 稳定版。不过，虽然是新的大版本号，但是 Linus Torvalds 一如既往地重申，“希望每个人都清楚，主要版本号的变化更多是因为我手指头已经数不过来了，而不是任何重大的根本性变化。”这个版本号的前一个版本号是 5.19，曾有提议将此版本命名为 5.20。另外，这也标志着 Linux 内核 6.1 的合并窗口开启.Linus 说，“与 6.0 不同，6.1 有许多相当核心的新东西”，比如内核对 Rust 初步支持、能够大幅提升性能的 MGLRU 等等。6.1 将于今年年底发布。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Linux-6.1-Features-Early-Look)**
>
>
>

>
> 老王点评：好吧，让我们继续期待 6.1。
>
>
>

![](/data/attachment/album/202210/03/102709m7gtga1s2rysr9wa.jpg)

### 2022 全球程序员薪资排行榜，中国倒数第九

CodeSubmit 对二十多个国家的程序员的薪酬做了调查，前三名是：美国、瑞士和以色列。其中美国平均年薪 11 万美元。中国在二十多个国家中排名倒数第九（或者说位列中游），平均年薪 23,790 美元。而倒数第一和第二是尼日利亚（7,255）和印度（7,725）。此外，按编程语言划分：Go 和 Ruby 是收入最高的语言，均为 12 万美元左右；Python、Java、JavaScript 稍少一点，11 万美元。

>
> **[消息来源：CodeSubmit](https://codesubmit.io/blog/software-engineer-salary-by-country/)**
>
>
>

>
> 老王点评：中国程序员薪酬不算高并不意外。不过印度居然倒数第二，所以，印度的 IT 行业真的发达吗？
>
>
>

![](/data/attachment/album/202210/03/102725ojtiw8n1ew7bbofu.jpg)

### 黑客利用开源软件和虚假工作机会进行钓鱼式攻击

微软威胁情报中心称，一个钓鱼黑客组织一直在使用木马化的开源应用程序和 LinkedIn 招聘诱饵来诱骗科技行业员工。他们发现该组织自 4 月底以来使用 PuTTY、KiTTY、TightVNC 等软件安装程序进行这些攻击。这和我们之前 [报道](/article-15040-1.html) 的谷歌 Mandiant 发现的情况一样。

>
> **[消息来源：ZDNet](https://www.zdnet.com/article/whats-what-in-the-united-states-securing-open-source-software-act/)**
>
>
>

>
> 老王点评：这种被带木马的开源软件钓鱼的员工真的合格吗？我觉得各个企业是不是模拟一下这种钓鱼测试。
>
>
>


11 个让你的 Linux 桌面更好看的 KDE Plasma 主题

kde跟gnome都好卡

什么时候把Mac os桌面环境1：1复刻过来啊，在线等，急急急，这样我就不用买苹果本本了

我觉得默认的Breeze系列就挺好，这上面推荐的好些都很辣眼睛……

KDE Plasma 桌面的一个强大的特性就是它 [巨大的自定义潜力](https://itsfoss.com/kde-customization/)。

提到自定义，改变主题或许是最普遍最直观的方式。

不是说默认的 Breeze 主题不好看。只是你的 Plasma 桌面可以通过新的主题和图标得到截然不同的外观。

![KDE Plasma 默认的 Breeze 主题](/data/attachment/album/202210/04/094758iy8mcsiur4ghpyir.jpg)

让我来帮助你。我将分享一些好看的 KDE Plasma 主题，你可以从中选择。我还会在文末展示安装主题的步骤。

### 最佳的 KDE Plasma 主题

请注意，这不是主题的排行榜。也就是说，排在第三位的主题不一定比第七位或第八位更好。

### 1、Sweet

Sweet 是目前最受欢迎的 KDE 主题之一。这个仅提供了深色模式的主题，可以为你的系统带来华丽的外观。

![Sweet 主题](/data/attachment/album/202210/04/094812n5f3r12ry9fk5l5m.jpg)

它可以**通过 KDE 系统设置安装**。它还提供了配套的图标，叫做 “Candy Icons”，如果你通过 KDE 系统设置安装，这套图标将会被自动安装。

>
> **[Sweet 主题](https://store.kde.org/s/KDE%20Store/p/1294729)**
>
>
>

### 2、Materia KDE

Materia 是另一个被很多桌面用户喜欢的主题，拥有光洁和优雅的外观。它有三个版本：Materia、Materia Light 和 Materia Dark。

![Materia Dark](/data/attachment/album/202210/04/094457t13fyyft470dfq0i.png)

Materia Light 是一个纯白色的主题，Materia Dark 提供了一个完整的深色外观。而 Materia 则是黑色和白色的融合。

它也**可以通过 KDE 系统设置安装**。

>
> **[Materia KDE](https://www.pling.com/p/1462622)**
>
>
>

### 3、Nordic

Nordic 主题在深色主题爱好者中单独拥有一群粉丝。它是围绕 Nord 色系创作的，看起来既舒服又优雅。

![Nordic KDE](/data/attachment/album/202210/04/094458b6776a6elq7bhrxj.png)

它与 Sweet 主题是 [同一个开发者](https://github.com/EliverLara/Nordic)，可以**通过 KDE 系统设置安装**。

>
> **[Nordic](https://www.pling.com/p/1267246)**
>
>
>

### 4、WhiteSur

WhiteSur 是一个由 Vinceliuice 开发，面向 MacOS 主题爱好者的主题。它实现了与 MacOS 外观的高相似度，而且可以通过 KDE 面板、Latte Dock 等功能做到更高的相似度。

![WhiteSur](/data/attachment/album/202210/04/094832kejl1alem1440lem.jpg)

它还提供了一套图标，使它看起来更具美感。这个受欢迎的主题还提供了深色和浅色两个版本。

>
> **[WhiteSur](https://www.pling.com/p/1400424)**
>
>
>

### 5、Layan

Layan 主题有浅色和深色两个版本。这是其中之一，它提供了圆角，看起来整洁而美观。

![Layan](/data/attachment/album/202210/04/094841dtbw31emz3emnw6v.jpg)

Layan 使用 Tela Circle 图标，**可以通过 KDE 系统设置安装**。

>
> **[Layan](https://www.pling.com/p/1325241)**
>
>
>

### 6、Qogir

这个主题有浅色和深色两个版本，是一个极简的主题，让你的系统看起来整洁而炫酷。

![Qogir](/data/attachment/album/202210/04/094500fh9g1g8g8515huh2.png)

它与 Budgie 桌面有相似的外观。你可以**从 KDE 系统设置**轻易地安装 Qogir 主题和它的配套图标。

>
> **[Qogir](https://www.pling.com/p/1675755)**
>
>
>

### 7、Fluent Round

如果你是 Windows 11 系统的粉丝，这个主题可以创造出 Windows 11 的外观和感觉。抛开这种相似性，Fluent 主题也是一个不错的主题，有浅色和深色两个版本。

![Fluent KDE 主题](/data/attachment/album/202210/04/094859kwc8f0ccegcfftwx.jpg)

它为你的系统提供了一个光洁的外观，同时还有一套配套的深色和浅色图标。

>
> **[Fluent Round](https://www.pling.com/p/1631673)**
>
>
>

### 8、Orchis

Orchis 在 GNOME GTK 主题设计中相当流行，亦可用于 KDE。Orchis 有浅色和深色两种颜色。如果你**通过 KDE 系统设置安装**，Tela Icon 这套图标也会被安装，你可以随时从系统设置中更改。

![Orchis KDE Theme](/data/attachment/album/202210/04/094500xooimeyegzhujeom.png)

和 GNOME 一样，这个以 Material 风格为灵感的主题提高了桌面的美观度。

>
> **[Orchis](https://www.pling.com/p/1458927)**
>
>
>

### 9、Iridescent Round

如果你是赛博朋克主题或未来主义主题的粉丝，这个主题将是一个不错的选择。它的默认壁纸**可以通过 KDE 系统设置安装**，这个壁纸看起来很有艺术感，给你的桌面增添了宅男的气息。

![Iridescent Round](/data/attachment/album/202210/04/094919ecblllb09daa9avd.jpg)

如果与一些炫酷的 Plasma 组件和图标一起使用，它可以创造一种别致的视觉享受。

>
> **[Iridescent Round](https://www.pling.com/p/1640906)**
>
>
>

### 10、Nova Papilio

这是一个圆润的，以紫色为主的浅色主题。如果你喜欢浅色主题和大圆角，这个主题将会为你带来视觉上的愉悦。

![Nova Papilio](/data/attachment/album/202210/04/094928ytvc1ll1lv0iuiu6.jpg)

这个主题可以**从 KDE 系统设置安装**。

>
> **[Nova Papilio](https://www.pling.com/p/1663528)**
>
>
>

### 11、WinSur Dark

顾名思义，它有来自 Windows 和 MacOS 主题的某些视觉元素。

![Winsur Dark](/data/attachment/album/202210/04/094938to3joyooo8xpz44p.jpg)

这个主题有浅色和深色版本，你可以**在 KDE 系统设置**中找到它。这个主题有圆角和光洁的外观。但根据我的个人体验，它可能会使小显示器上的显示略显拥挤。

>
> **[WinSur Dark](https://www.pling.com/p/1373646)**
>
>
>

#### 值得提及的一些事情

在像 KDE Plasma 这样的桌面环境下，列出主题可能是一项艰巨的任务，因为有大量的主题可供选择。以上的清单仅是为不想花太多时间寻找好看主题的人提供的一个参考。

在这个名单之外，也有一些主题，例如 [Ant-Dark](https://www.pling.com/p/1464332)、[Aritim Dark](https://www.pling.com/p/1281836)、[Dracula](https://www.pling.com/p/1370871) 等，也能为用户提供不错的视觉体验。

### 如何使用这些主题

提到这些主题，有几种可以给你的 KDE Plasma 桌面安装主题的方法。你可以在下面找到这些方法的简要说明。它与 [在 GNOME 上安装主题](https://itsfoss.com/install-switch-themes-gnome-shell/) 有点不同。

#### 从设置安装主题

这是最常见也是最简单的方法。打开 KDE <ruby> 设置 <rt>  Settings </rt></ruby>。选择“<ruby> 外观 <rt>  Appearance </rt></ruby>”，点击“<ruby> 全局主题 <rt>  Global Themes </rt></ruby>”。然后，你可以通过点击如下图所示的按钮搜索主题。

![从 KDE 系统设置中下载新的全局主题](/data/attachment/album/202210/04/094949ekmaajy7kajxm8cz.jpg)

你将得到一个全面的主题列表。在这里，你可以查看排序的结果。当你找到了一个合适的主题，点击它并按下安装按钮即可。

![在 KDE 系统设置中的可用主题的列表](/data/attachment/album/202210/04/095003srv0s6y63nvz3yf1.jpg)

在大多数情况下，这将同时应用相应的主题和图标。

#### 从下载的主题文件中应用主题

某些情况下，你可能在网上找到了一些你感兴趣但 KDE 商店中并不包含的主题。在这种情况下，你需要下载并提取文件。随后，将下载的主题的全局主题文件夹放在 `~/.local/share/plasma/look-and-feel/` 下，将 Plasma 主题文件夹放在 `~/.local/share/plasma/desktoptheme/` 下。

![在文件管理器中的 KDE Plasma 主题文件夹](/data/attachment/album/202210/04/094503hoxoufamnnm1amsh.png)

现在，打开设置，你将看到你安装的主题已经可以在“<ruby> 外观 <rt>  Appearance </rt></ruby>”中找到。

#### 通过软件包管理器安装主题

采用这种方法的不多。有一些主题，它们出现在你使用的发行版的官方仓库中。你可以通过你的软件包管理器搜索并安装它们。例如，你可以在 Ubuntu 下通过运行以下命令安装 Materia-KDE 主题：

```
sudo apt install materia-kde

```

如上文所述，这种方法只能安装有限的几个主题，而且随发行版的不同而不同。在安装后，你可以在 <ruby> 系统设置 <rt>  System Settings </rt></ruby> > <ruby> 外观 <rt>  Appearance </rt></ruby> 中更改主题。

### 结语

综上，我列出了我最喜爱的 KDE Plasma 主题。我也展示了更改主题的方法。

你在这里找到了感兴趣的主题了吗？你有一些其他喜欢的，想和我们在评论区分享的 KDE 主题吗？

---

via: <https://itsfoss.com/best-kde-plasma-themes/>

作者：[sreenath](https://itsfoss.com/author/sreenath/) 选题：[lkxed](https://github.com/lkxed) 译者：[自由的铁矿](https://github.com/vvvbbbcz) 校对：[wxy](https://github.com/wxy)

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


3 步在 Linux 上安装 JDBC

>
> 安装 Java，使用 Maven 安装 JDBC，并安装数据库。然后，你就可以在 Java 代码中与数据库进行交互了。
>
>
>

![](/data/attachment/album/202210/04/101923dpc8nnzsz5xxpn1x.jpg)

当你编写一个应用时，需要数据存储是很常见的。有时你要存储你的应用需要的素材数据，其他时候你要存储用户数据，包括偏好和保存的数据。存储数据的一种方式是在数据库中，为了在你的代码和数据库之间进行通信，你需要为你的语言提供一个数据库绑定或连接器。对于 Java 来说，一个常见的数据库连接器是 JDBC（<ruby> Java 数据库连接 <rt>  Java database connectivity </rt></ruby>）。

### 1、安装 Java

当然，要使用 Java 进行开发，你还必须安装 Java。对于 Linux、macOS 和 WSL 或 Cygwin，我推荐 [SDKman](https://opensource.com/article/22/3/manage-java-versions-sdkman)。对于 Windows，你可以从 [developers.redhat.com](https://developers.redhat.com/products/openjdk/download?intcmp=7013a000002qLH8AAM) 下载 OpenJDK。

### 2、使用 Maven 安装 JDBC

JDBC 是一种 API，通过语句 `import java.sql.*` 导入到你的代码中，但要使其有用，你必须安装数据库驱动和数据库以与之交互。你使用的数据库驱动和要通信的数据库必须匹配：要与 MySQL 交互，你需要 MySQL 驱动，要与 SQLite3 交互，你必须具有 SQLite3 驱动等等。

在本文中，我使用 [PostgreSQL](http://LINK-TO-POSTGRESQL-INTRO-ARTICLE)，但所有主流数据库，包括 [MariaDB](https://www.redhat.com/sysadmin/mysql-mariadb-introduction) 和 [SQLite3](https://opensource.com/article/21/2/sqlite3-cheat-sheet)，都有 JDBC 驱动程序。

你可以从 [jdbc.postgresql.org](https://jdbc.postgresql.org/download.html) 下载 JDBC for PostgreSQL。我使用 [Maven](https://opensource.com/article/22/3/maven-manage-java-dependencies) 来管理 Java 依赖项，因此我将它包含在 `pom.xml` 中（调整 [Maven Central](https://mvnrepository.com/artifact/org.postgresql/postgresql) 上的当前版本号）：

```
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.5.0</version>
</dependency>

```

### 3、安装数据库

你必须安装要通过 JDBC 连接的数据库。有几个非常好的开源数据库，但是我只能为这篇文章选择一个，所以我选择了 PostgreSQL。

要在 Linux 上安装 PostgreSQL，请使用你的软件仓库。在 Fedora、CentOS、Mageia 和类似设备上：

```
$ sudo dnf install postgresql postgresql-server

```

在 Debian、Linux Mint、Elementary 和类似平台上：

```
$ sudo apt install postgresql postgresql-contrib

```

### 数据库连接

如果你不使用 PostgreSQL，同样的一般过程也适用：

1. 安装 Java。
2. 为你选择的数据库找到 JDBC 驱动，并将其包含在你的 `pom.xml` 文件中。
3. 在你的开发系统上安装数据库（服务器和客户端）。

三个步骤，你就可以开始编写代码了。

---

via: <https://opensource.com/article/22/9/install-jdbc-linux>

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

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


硬核观察 #779 功率大到让变电站跳闸的特斯拉 Dojo 超级计算机

Summary: • 功率大到让变电站跳闸的特斯拉 Dojo 超级计算机 • AWS 云端提供 Ubuntu 虚拟桌面 • Linux 内核 6.1 合并窗口开启

![](/data/attachment/album/202210/04/194534nf559t1y75vl7tyo.jpg)

![](/data/attachment/album/202210/04/194542oynnykckjfncycyr.jpg)

### 功率大到让变电站跳闸的特斯拉 Dojo 超级计算机

Dojo 是特斯拉的定制超级计算机平台，是为人工智能机器学习而建立的，更具体地说，是利用其汽车的视频数据进行训练。Dojo 是特斯拉去年公布的，但当时还只有芯片，经过一年的努力，现在有了系统托盘和机柜。特斯拉声称它可以用一个 Dojo 贴片取代 6 个 GPU 盒子，且成本低于一块 GPU。每个托盘有 6 块这样的贴片，一个托盘相当于 3 到 4 个满载的超级计算机机架。几个柜子放在一起可以创建一个 “Dojo ExaPOD”，其主要规格为 1.1 EFLOP，1.3 TB SRAM，以及 13 TB 高带宽 DRAM。今年早些时候，特斯拉在测试基础设施时曾让当地电网的变电站跳闸。

>
> **[消息来源：electrek](https://electrek.co/2022/10/01/tesla-dojo-supercomputer-tripped-power-grid/)**
>
>
>

>
> 老王点评：特斯拉在超算领域的成就也不可小觑。
>
>
>

![](/data/attachment/album/202210/04/194550k0z1irj2o0f1f64r.jpg)

### AWS 云端提供 Ubuntu 虚拟桌面

AWS 为使用亚马逊工作空间分配虚拟桌面的客户增加了一个 Ubuntu 选项。使用的是 Ubuntu 22.04 LTS 版本，价格从每月每桌面 23 美元开始（或每小时 19 美分），包括一个 CPU、2GB 内存和 80GB 的根卷和 10GB 用户卷。但是目前用户只能使用 Windows 或基于 Web 的工作空间客户端进行连接。AWS 计划很快启用 Linux 和 MacOS 客户端的连接。

>
> **[消息来源：ZDNet](https://www.zdnet.com/article/linux-aws-now-offers-ubuntu-virtual-desktops-for-developers-and-engineers/)**
>
>
>

>
> 老王点评：为什么我不在本地安装一台 Ubuntu，而要用云端的呢？
>
>
>

![](/data/attachment/album/202210/04/194605d62njlb7nlnxb57x.jpg)

### Linux 内核 6.1 合并窗口开启

正如预期的，对 Rust 支持被合并到了 6.1 当中，提供了基本的基础设施和一些非常基本的集成，而未来的拉取请求将增加更多的子系统抽象。Linux 6.1 还有一个对 memcpy() 溢出提出警告的安全改进，可以捕获过去 3 年中所有此类问题。Linux 6.1 还将继续花费大量时间来清理 Linux 的随机数生成代码。

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

>
> 老王点评：6.1 得到的关注要远比 6.0 要多，或许本来就该有个 5.20。说到底，我觉得 Linus 式版本号还是有悖常理。
>
>
>


使用谷歌文档在 Ubuntu 中对文本进行语音识别

Summary: 这就是在包括 Ubuntu 在内的 Linux 系统中将语音转换为文本的方法。

这就是在包括 Ubuntu 在内的 Linux 系统中将语音转换为文本的方法。

![](/data/attachment/album/202210/04/222403dhey2zwn1442u3n1.jpg)

>
> 这就是在包括 Ubuntu 在内的 Linux 系统中将语音转换为文本的方法。
>
>
>

Linux 系统中可用的语音识别软件不多，尤其是原生桌面应用。有一些可用的应用使用 IBM Watson 和其他 API 将语音转换为文本，但它们的用户交互不友好，需要一些复杂的用户交互，例如用相应的语言进行一些编程或脚本编写。

但是，没有多少用户知道 <ruby> 谷歌文档 <rt>  Google Docs </rt></ruby> 使用自己的 AI 技术提供了高级语音识别，它可以通过 Chrome 访问谷歌文档使用。

任何用户都可以使用此功能将语音转换为文本，而无需高级计算机知识。谷歌文档的这个功能最好的一点是你可以在任何 Ubuntu 衍生版或任何支持 Chrome 的 Linux 发行版中使用它。

让我们看看如何在 Ubuntu 中启用它。

### 如何将语音转换为文本

先决条件是你应该在系统中安装 Chrome 并拥有谷歌帐户。如果你没有安装 Chrome，你可以访问 [此链接](https://www.google.com/chrome) 并下载、安装 Chrome。

此外，如果你没有谷歌帐户，你可以使用 [此链接](https://accounts.google.com) 免费创建一个。

#### 步骤 1

从 Chrome 打开 <https://docs.google.com> 并创建一个空白文档。

![创建一个空文档](/data/attachment/album/202210/04/222406pk4cshq9czecsc41.png)

#### 步骤 2

加载空白文档后，从菜单中单击“工具 > 语音输入”。

![启用语音输入](/data/attachment/album/202210/04/222406w444chvj2efevdff.png)

#### 步骤 3

在左侧，你可以看到一个麦克风图标。单击麦克风图标，Chrome 会首次要求允许通过浏览器访问麦克风。单击允许。

![点击麦克风](/data/attachment/album/202210/04/222406a25jweowkkwke5e5.png)

![允许文档访问麦克风](/data/attachment/album/202210/04/222406aheqqxxihekkeqkk.png)

默认情况下，它使用你的系统语言作为语音的检测语言，同时将其转换为文本；但是，你可以根据可用的语言列表将其更改为所需的任何语言。到目前为止，谷歌文档支持和识别超过 60 多种语言，同时将它们转换为文本。

#### 步骤 4

单击允许后，麦克风图标将变为橙色，现在它已准备好接受或识别你的声音。开始说任何你想说的话，瞧！你将看到你的演讲被转换为文本并写入文档。

![正在进行语音转文字](/data/attachment/album/202210/04/222407ohphpdy5wbt9x9gv.png)

完成了。你已通过谷歌 Chrome 和谷歌文档在 Ubuntu 中成功地将语音转换为文本。

所有 Linux 用户都可以免费使用这个很棒的功能。如果你知道其他可以在 Linux 中将语音转换为文本的应用，请在下方的评论区发表评论。另外，让我知道你是否觉得这篇文章有用。

### 故障排除

如果上述功能在你的浏览器中不起作用，请务必查看以下内容。

* 打开设置窗口（在 Ubuntu 或其他发行版的 GNOME 桌面中）。
* 转到“隐私 > 麦克风”。
* 并确保它已启用。

![检查 Ubuntu 中的麦克风设置](/data/attachment/album/202210/04/222407upnzjeezkkkcjjt8.jpg)

### 总结

虽然，最近有一种基于云的解决方案可用，例如 Amazon Polly 等。但它们的价格很高。另外还需要一些有用的知识。

而谷歌 Chrome 的内置语音识别功能简单易用。虽然它有点慢，但它可以为普通用户完成工作。

也就是说，我希望本指南可以帮助你将语音转换为文本，如果你知道这样的免费应用，请在评论区告诉我。

---

via: <https://www.debugpoint.com/speech-recognition-to-text-in-linux-ubuntu-using-google-docs/>

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


如何在 sudo 运行的命令中防止使用参数

Summary: 允许用户使用 sudo 运行命令，但不带命令行参数。

允许用户使用 sudo 运行命令，但不带命令行参数。

![](/data/attachment/album/202210/04/224059k9jl5kzhlhw5d98j.jpg)

>
> 允许用户使用 `sudo` 运行命令，但不带命令行参数。
>
>
>

在之前的文章，我们学习了如何 [通过 sudo 以 root 身份运行目录中的命令](https://ostechnix.com/run-programs-in-a-directory-via-sudo/)。在这篇指南中，我们将学习如何在 Linux 中 **防止 sudo 运行的命令使用参数**。即我们允许一个用户使用 `sudo` 运行特权级命令，但是 **不带命令行参数**。

### 背景介绍

你已经知道了，每个命令执行一个特定操作有不同的选项。让我们以 `ls` 命令为例。

`ls` 命令会罗列文件夹中的内容，对吗？没错。`ls` 命令附带了一些命令行选项和标志。例如，你可以用 `ls` 命令的 `-a` 标志罗列文件夹中的所有内容（包括隐藏文件）。

在这份简要指南中，我们将明白如何允许用户通过 `sudo` 运行 `ls` 命令，但是不能使用命令行选项或者标志。我讲清楚了吗？接下来让我来展示一下如何做到这点。

### 防止使用 sudo 参数

以 `root` 用户身份编辑 `/etc/sudoers` 文件：

```
[root@Almalinux8CT ~]# visudo

```

添加下面一行：

```
user1   ALL=(root)      /usr/bin/ls ""

```

![Deny Command Arguments With Sudo](/data/attachment/album/202210/04/224120elpwup1pd2wwawwg.png)

要注意这里 `ls` 之后的 **双引号**。双引号会屏蔽用户在给定命令之后输入的参数（比如 `ls` 命令）。在上面的命令中，`user1` 能够以 `root` 身份运行 `ls` 命令，但是不能使用 `ls` 命令的选项以及标志。你可以选择其他的指令进行尝试。保存该文件并关闭。

现在，以 `user1` 的身份登录系统，并尝试以管理员身份运行 `ls` 命令，不要添加任何选项：

```
[user1@Almalinux8CT ~]$ sudo -u root ls -a

```

或许你会遇到下面的报错：

```
Sorry, user user1 is not allowed to execute '/bin/ls -a' as root on Almalinux8CT.

```

不过你可以不添加参数来运行 `ls` 命令：

```
[user1@Almalinux8CT ~]$ sudo -u root ls

```

![Prevent Command Arguments With Sudo](/data/attachment/album/202210/04/224121nk0kmfiv2ys4sdyu.png)

### 防止所有用户使用命令参数

上述例子像你展示了如何阻止用户以管理员身份运行带有参数的命令。你是否想要对所有用户应用该规则呢？很简单！只需要在 `/etc/sudoers` 文件中添加一行：

```
ALL   ALL=(root)      /usr/bin/ls ""

```

现在，系统中的所有用户都可以运行不带参数的 `ls` 命令。

想要恢复默认设置，只需要删除最后的双引号，或者删除整行。

查看帮助手册，了解更多。

```
$ man sudoers

```

### 结论

在这份指南中，我们学习了如何允许用户以管理员身份运行命令，但是不能添加任何命令参数。这样可以限制用户误用一些命令行参数。

---

via: <https://ostechnix.com/prevent-command-arguments-with-sudo/>

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

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


《代码英雄》第五季（2）：写代码的地方

>
> 代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。
>
>
>

>
> **什么是《代码英雄》**
>
>
> <ruby> 代码英雄 <rt>  Command Line Heroes </rt></ruby>是世界领先的企业开源软件解决方案供应商红帽（Red Hat）精心制作的原创音频播客，讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。
>
>
>

![](/data/attachment/album/202210/05/115009qxvfiissfffx9erw.jpg)

本文是《[代码英雄](https://www.redhat.com/en/command-line-heroes)》系列播客[《代码英雄》第五季（2）：程序员写代码的地方](https://www.redhat.com/en/command-line-heroes/season-5/where-coders-code) 的 [音频](https://cdn.simplecast.com/audio/a88fbe/a88fbe81-5614-4834-8a78-24c287debbe6/5df31d56-dd8d-4852-97f3-6df2f6878ff3/clh-s5e2-where-we-work-vfinal-2020_tc.mp3) 脚本。

>
> 导语：家庭办公室、企业园区、联合办公空间、有趣的校园。程序员们希望在工作场所方面有所选择。将普通的工作空间从办公室转移到家里，揭示了在家里工作的好处，但也突出了它的权衡。
>
>
> Saron Yitbarek 和 Clive Thompson 通过考虑工作场所继续他们对编码职业的讨论。Mary Allen Wilkes 分享了她作为第一个在家工作的开发者的经验。David Heinemeier Hansson 认为远程工作使他的同事有时间进行深入思考。Dave West 解释了为什么他认为面对面的工作仍然能产生最好的结果。Maude Mensah Simpson 权衡了家庭办公室的自由与失去面对面交流的机会。
>
>
>

**00:00:02 - Saron Yitbarek**：

你们好，欢迎来到《<ruby> 代码英雄 <rt>  Command Line Heroes </rt></ruby>》，一档<ruby> 红帽 <rt>  Red Hat </rt></ruby>的原创播客节目。这是我们有关程序员，无论是开发人员到系统管理员，以及架构师、工程师、程序员，工作生活的迷你特别季的第 2 集。我是你们的主持人 Saron Yitbarek，和我一起参与到这一季的是 Clive Thompson，他是记者、技术向作家以及《<ruby> 码农：新部落的建立和世界的重塑 <rt>  Coders: The Making of a New Tribe and the Remaking of the World </rt></ruby>》一书的作者。你好， Clive。

**00:00:30 - Clive Thompson**：

你好 Saron。很感谢你能再次邀请我来。

**00:00:31 - Saron Yitbarek**：

感谢你加入我们，Clive。在这一集里，让我们谈谈到目前为止，我们当中很多人（不仅仅是技术人员）非常熟悉的一些东西，因为我们大多数人自从 2020 年 3 月以来就不得不这么做 —— 远程工作。现在，你可能认为远程工作在我们的行业里是相对较新的现象。随着技术的进步，在家中工作变得更为容易。先再想一下，让我们来听听这位开发人员的故事。

**00:01:00 - Mary Allen Wilkes**：

嗯，我的名字叫 Mary Allen Wilkes。1959 年到 1972 年间，我做了十二三年的计算机程序员。

**00:01:14 - Saron Yitbarek**：

Mary Allen 已经 82 岁了。在她青少年时期，她迷上了法律，想当一名律师，但是在 50 年代这对一名女性而言并不是一个明智的职业选择。她的导师劝阻了她，并告诉她这将会十分困难。偶然的一次机会，她的一位老师为她描绘了另一条路线。

**00:01:36 - Mary Allen Wilkes**：

我在读八年级时的某天，在上一个地理老师的课时被这位老师指引了那条路线。当时我应该是给他讲述了自己对某件事情的论点，而他停了下来并看着我说：“Mary Allen，你长大以后应该成为一名计算机程序员。” 好吧，我那时并不知道他在说什么。多年以后，我很想知道他是否清楚他当时正在说的是什么。他教授地理和法语，而没有人教计算机编程。但是我永远都忘不了他的话。而且我认为让我多年难以忘怀这个目标的一个原因是，这是一个成年人告诉我长大以后可以做一件积极的事情。

**00:02:22 - Saron Yitbarek**：

当 Mary Allen 从大学毕业并且开始求职时，唯一有计算机程序员职位的地方是 MIT。没有人接受过计算机编程方面的任何训练。她的主要资格条件是她在大学里上过的两门逻辑学课程，但这已经比她在 MIT 的同事多了。

**00:02:41 - Mary Allen Wilkes**：

我开始在 <ruby> 马萨诸塞州 <rt>  Massachusetts </rt></ruby> <ruby> 列克星敦市 <rt>  Lexington </rt></ruby> 的 <ruby> 林肯实验室 <rt>  Lincoln Laboratory </rt></ruby> 工作，这是由美国国防部资助的一个大型的 MIT 研究机构。那时候是 1959 年，我第一次知道他们正在使用这些非常巨大的计算机，能占据整个房间的那种。这是我最初学习编程的机器。它们是 IBM 计算机。你用汇编语言逐行编写好你的程序，然后把这些纸片交给打孔卡操作员，她们会把你的程序打在<ruby> 打孔卡 <rt>  punch card </rt></ruby>上。然后你将其带到计算机室，交给计算机操作员。

**00:03:29 - Saron Yitbarek**：

1961 年， Mary Allen 被分配到一个小组，在 Link 计算机上工作，这是一款实验室仪器式微型计算机。它是第一批真正的交互式计算机之一，与当今的台式计算机有些相似。

**00:03:44 - Mary Allen Wilkes**：

Link 有一块显示屏。我们称之为“<ruby> 视窗 <rt>  the scope </rt></ruby>”，因为它事实上就是一个实验室示波器。它有四个可以放在桌面上的盒子，一个装着这台示波器的盒子、一个装有两个袖珍大小的小型磁带装置的盒子。基本上你可以把它想象成你的永久存储器、硬盘驱动器。那是你存储和读入你的程序的地方。另一个盒子被称为控制台盒子。你可以用开关来加载某些代码（比如某些引导代码）到 Link 的内存里。它也有个键盘。因此，你拥有你现如今会有的基本交互式配置，键盘、屏幕以及某种形式的永久存储器。然后当然还有所有的电子元器件，它们都被装载一个大约和一台冰箱差不多大小的大箱子里。

**00:04:43 - Saron Yitbarek**：

1964 年， Link 小组做了一个艰难的决定，从 MIT 迁至 <ruby> 密苏里州 <rt>  Missouri </rt></ruby> <ruby> 圣路易斯 <rt>  St. Louis </rt></ruby> 的华盛顿大学，但是 Mary Allen 不想去。

**00:04:54 - Mary Allen Wilkes**：

我不想立马就搬到圣路易斯。我一点都没有想搬去那里的想法。我想要做的是为 Link 写一个合适的操作系统，因为到那时为止，我们所拥有的只是我在 1962 和 1963 年所编写的相当基础的小汇编程序。我说：“我可以写它。我可以在家里写它。”

**00:05:20 - Saron Yitbarek**：

Link 小组的负责人 Wesley Clark 认为这个想法不错。

**00:05:25 - Mary Allen Wilkes**：

我对他说：“我想要写操作系统。”我可能是当时唯一一个能够写这个操作系统的人。因此，Wesley 只是说：“好吧，没问题。为们会给你送来一台 Link。你可以在家里使用它。”这就是它的经过。一天，我们实验室的几个人开着一辆小货车来了，并带来了四个箱子，四个模块和冰箱大小的东西，装着电子设备与存储器等等。他们把这些东西运到了我父母在 <ruby> 巴尔的摩 <rt>  Baltimore </rt></ruby> 的客厅。除了他们不得不为此拉了一条 20 安培的电路，只需要将其插入墙上的插座即可。

**00:06:10 - Saron Yitbarek**：

你的父母对家里这个硕大的新入侵者作何看法？

**00:06:15 - Mary Allen Wilkes**：

我的父亲是一位 <ruby> 圣公会 <rt>  Episcopal </rt></ruby> 牧师。他看到每个人都会说：“我敢打赌，你的客厅里没有计算机。”这至少可以说是相当新颖的事情，相当的新奇。

**00:06:30 - Saron Yitbarek**：

Mary Allen 的父母整天都不在家，因此她能够集中注意力。她直接在 Link 上写操作系统，不需要打孔卡，所以她可以更快地进行调试。她通过电话或老式的 <ruby> 蜗牛邮件 <rt>  snail mail </rt></ruby> 和她的团队交流，并在必要的时候前往圣路易斯。仅仅在不到一年的时间里，她就完成了这个操作系统并编写了编程手册。

**00:06:55 - Mary Allen Wilkes**：

我从未感到被孤立，也从未感到过沮丧。我感到充满了挑战。我认为编程基本上是一项适合内向的人、与世隔绝工作的人、独立工作的人、不需要大量支持或是与他人互动的人的工作。

**00:07:15 - Saron Yitbarek**：

多年以来，Mary Allen 从事过其他需要在办公室的工作。但是她更喜欢的是在家工作。

**00:07:23 - Mary Allen Wilkes**：

自从我在 2001 年辞去最后一份全日制工作以来，我如今已经在家里工作了好几年。因此，我是一个家庭工作者。而且事实上，在我离职那天，我对自己说，我会继续工作，但我不想去办公室，也不想坐在办公桌前。但是到了那会，我们已经有了笔记本电脑，所以我能够坐在舒服的椅子上工作。

**00:07:53 - Saron Yitbarek**：

因此，Clive，Mary Allen 的故事如此精彩，你该为《码农》一书去采访她。她不仅仅是计算机编程的先驱，而且还是远程工作的先驱，对吧？

**00:08:03 - Clive Thompson**：

是的。我的意思是，据我所知，她是第一个有一台能让她在家工作的个人计算机的人。网上有一张她的令人惊叹的照片，照片上她正坐在她父母的楼梯脚下。他们把所有这些部件放在顶层的楼下，这是她放一张小桌子坐着工作的地方。而且这是对未来的一瞥，对吗？我是说，那时候她正在做的事情要花费 30、40 年时间才能够整体实现，因为她完全领先于自己所处的时代。

**00:08:36 - Saron Yitbarek**：

编程是一项很理想的远程工作。甚至我自己的自我封闭经历也使我意识到，我已经这样做很多年了。因此当你和程序员们交谈的时候，有多少人喜欢这种工作方式？它变得有多流行？

**00:08:52 - Clive Thompson**：

好吧，这很流行，而这是因为程序员们喜欢在家工作。绝大多数的程序员如果能够选择的话，他们会说，是的，我会一直在家工作。之所以会这样，是因为这提供了他们一个安静而又能够专注的地方，而且不会因为在隔间里有人拍他们的肩膀而被打扰。如果你要对他们说：“嘿，伙计们，各位，你们更愿意在哪里工作？”他们全都会更倾向于在家里工作。

**00:09:26 - Saron Yitbarek**：

Basecamp 是一家大力提倡远程工作的技术公司。他们已经有 20 年历史了，而他们从最初就进行远程工作，甚至在远程工作流行之前。他们的员工在世界各地的家中工作。让我们来听听 David Heinemeier Hansson 怎么说。他和 Jason Fried 共同创立了 Basecamp。他也是 Ruby on Rails 的创造者。

**00:09:49 - David Heinemeier Hansson**：

事实上，在我开始和 Jason 共事的前六个月，我们只是通过电子邮件和 IM 进行联系。我们甚至都没有打过电话。因此我想是过了六个月时间我们才通了第一次电话，并且花了一年多时间我们才见面。所以很长的一段时间里，这都不是传统观点。我们接触到了庞大的人才库，这些人意识到自己不想住在 <ruby> 旧金山 <rt>  San Francisco </rt></ruby>。他们不想去纽约生活，他们也不想去西雅图生活。他们不想在这些大型技术中心里的任何一个地方生活，然而他们确实是精通而且合格的人才。因此，Basecamp 允许他们这么远程工作，对于我们的招聘策略和维系策略都至关重要。

**00:10:31**：

2012 年，我与其他企业家进行了一系列对话，向他们询问他们的工作实践，我们谈到了远程工作。而对于为什么远程工作行不通，他们只给了我这些老套的辩驳，“哦，你们没法合作。魔法只会发生在白板周围。”而我想，什么，人们还是这样想的？这怎么可能？白板在 Basecamp 基本上不存在。我们拥有的第一工具是写作。它是异步的，你自己书写并发布，然后等着就行。当富有创造力的人们有时间和空间去进行深度思考，并且将深度思考编辑成深度写作时，就会产生良好的协作。深度写作的并不是一行行的聊天组成的，而是完整的句子，形成段落，进而形成完整的论点。

**00:11:29**：

然后，你可以利用时间的优势和平静来考虑这些观点。90% 时间拿来写作，然后 5% 拿来聊天，最后 5%，可能是随便什么，是用 Zoom 还是 Tubal 或者一些其他的视频连接屏幕共享之类的协作。

**00:11:49 - Saron Yitbarek**：

Clive，David 在这里提出了一些非常有趣的观点。有些我从来都没想过。还有程序员正在使用的能使远程工作成功的其他工作方式吗？

**00:12:00 - Clive Thompson**：

是的，当然有了。在他们知道需要和人进行联络，甚至可能是面对面接触时，他们会做一些时间安排。因此，确实有一些我交谈过的公司会说：“好吧，我们知道我们的开发人员不在这儿的时候能把他们的工作做到最好，但是我们希望他们有时能够在这里，我们想开一些面对面的会议。”他们仍然相信这一点。因此，他们会有比如像是这样的日程安排：好吧，在周二和周四的下午 1 点到 5 点，我们需要所有人都在办公室里，以便我们能够有时间进行交谈。剩下的时间，你可以去你想去的任何地方。如果你想的话，你可以在办公室里工作，你可以在任何你喜欢的地方工作。可以是在星巴克，也可以是在家里。因此，这种有趣的新安排是一件行之有效的事情。

**00:12:44**：

我认为另外一件相当有效的事情是，弄清楚所有人都最喜欢的聊天或者交流模式是什么样的。就 David 而言，他喜欢的，以及他的团队所喜欢的，是长长的电子邮件会话。我肯定已经和喜欢这种交流模式的人交谈过了，但是其他人，他们实际上真的很喜欢 Slack，或者他们特别喜欢老式的 IRC，对吧？就是在黑色背景的绿色文字那种。但是他们弄清楚了它们的共存形式是什么，因为有过这样的现象，被谈论在线交流的心理学家们描述为 <ruby> 环境感知 <rt>  ambient awareness </rt></ruby>，这是一种当你没有和他们在一起时，知道其他人正在思考什么或是做些什么的能力。有很多技术可以使我们做到这一点。而最好的远程团队仔细考虑了他们的环境感知方法是什么，然后锁定并使用它。

**00:13:39 - Saron Yitbarek**：

在我自己的远程工作经历中，有一件我发现确实很有用的事情是，通过 Hangout 或 Zoom 会话来进行协同工作，让流媒体运行着，并一直保持着连接。这确实是一种减少孤独感的绝妙方式，一定意义上有了相互陪伴的感觉，像在一个公司里面，除了每个人仍然还在做着自己的事情，但是这提供了可以拍拍某人肩膀的机会，因为我可以说：“嘿，我被这个功能难住了。你介意我耽搁你接下来的 5 到 10 分钟吗？和我结对帮助我摆脱困境吗？”因此，这成了一种着实很有用的方式，能让你获得某种形式的社交互动，并在需要的时候有机会得到帮助。

**00:14:21 - Clive Thompson**：

这完全有道理。我是说，我认为很多人都试图找到某种方法来与有经验的人这么做，或者甚至坦率地讲，甚至和同龄人这么做，因为你能够得到很多，即使某人并不比你资深，但他们也有与你不同的大脑。

**00:14:37 - Saron Yitbarek**：

是啊，当然了。我认为这是一种不同的交流形式，而不是一种低质量交流。

**00:14:44 - Clive Thompson**：

一点也不。这就像是心理学家所谓的 <ruby> 元认知 <rt>  metacognition </rt></ruby>，有关思考的思考。确实，当前的任务是：今天我想要尝试的是哪一种思维方式？是和某人面对面交流还是与他们在线聊天更有助于思考呢？

**00:15:01 - Saron Yitbarek**：

因此，既然我们所有人都被迫在家工作，各家公司都意识到他们仍然能够完成工作。人们的态度已经倾向于远程工作将成为主流了吗？

**00:15:12 - Clive Thompson**：

这是真的是一个大问题，而我认为我们目前并没有答案。我认为即将要发生的事情是，有很大一部分工人，包括从未在家或者被允许在家工作的开发人员，我估计超过 50 %，他们将会要求将远程工作成为半永久性的。他们将发现自己的工作效率要高得多，并且希望更频繁地这样做，而且有一些会议中是不必要的，打断了他们在工作区中的工作流程。

**00:15:47 - Saron Yitbarek**：

因此，如果远程工作是提高生产效率的好方法，随着时间的推移，它变得越来越流行，尤其是对于码农们来说，这是一种很好的完成工作的方式，它可以更方便，而我们这种工作形式确实意味着在家里工作，那么为什么这些大型科技公司要继续建造如此大的工场供其员工工作呢？

**00:16:06 - Clive Thompson**：

有一部分是基于他们的想法或者担忧，即人们只有在面对面，并且彼此有着意想不到的联系的时候，才会有创造性思维产生。而这有一些实际上是基于科学的。我的意思是，有大量研究表明，当公司中的可能互相根本不认识的人们相遇时，会产生某种特定类型的交流和松散的协作与念头。我是说，这是典型的 <ruby> 饮水机效应 <rt>  water cooler effect </rt></ruby>。 3M 是一家大型的纸业公司，以发明了 <ruby> 便利贴 <rt>  Post-it Notes </rt></ruby> 而闻名，这是一项价值数十亿美元的发明，只是因为发明了这种粘性物质的一个人遇到了另一个正在找寻一种能把纸张固定在适当位置的方法的一个人。而正是因为这个遇见彼此的机会，他们创造了该公司最具标志性的产品之一。

**00:17:05**：

<ruby> 史蒂夫·乔布斯 <rt>  Steve Jobs </rt></ruby> 打造了苹果公司总部，不仅仅最大程度地提升了人们在一起工作的机会，而且让他们在一些地方聚集，以迸发出创意的火花。

**00:17:20 - Saron Yitbarek**：

我进行远程工作已经很多年了，不过只是我自己一个人工作。然后当我有了一个团队后，就和几个人一起工作，但是我在远程工作方面的经历里最多是和四个人共事。而且他们来自各个地方。我们中有人在洛杉矶，有人在布鲁克林，也有人在芝加哥，但是我想知道的是 —— 远程工作真的只有对于像这样的小型团队以及像 Basecamp 那样的小型公司才能取得成功吗？

**00:17:44 - Clive Thompson**：

这是个很棒的问题。我看到的最成功的情况是，在开发团队很小的时候，在初创阶段，有 5 到 6 个人，而且事实上，他们之所以能够获得所需的人才，是因为他们说：“好的，你在俄罗斯，我在多伦多，我们其他人在田纳西，而我们将一起工作。”因此，你在某种类型的创业公司中经常看到这种情况，他们拥有他们所需的特定技能，并且需要得到他们认为最好的人才，但他们不会要求这些人搬家。这是都是小型团队。

**00:18:22**：

我觉得管理通信要更加容易一些，因为你基本上可以将这视为一组节点之间的通信，并且随着节点的整张，需要通信的人数急剧增长。因此，只有 4 个或 5 个人的时候团队运转良好，到了比如 50 个人，这变得着实很困难，再到 150 个人，哦，我的天哪。对于一家有着 10000 个人的公司而言，弄清楚他们将如何做到这一点变得更为困难。

**00:18:47 - Saron Yitbarek**：

让我们来听听有关远程工作的另一种观点。Dave West 是 [scrum.org](http://scrum.org) 的首席执行官。这家公司工作的基础是《<ruby> 敏捷宣言 <rt>  Agile Manifesto </rt></ruby>》的第一条规则：个人和交流高于流程与工具。有请 Dave。

**00:19:05 - Dave West**：

我认为现实是，如果你真的想要以极快的速度构建一个项目，以一种真正有效的方式协同工作，面对面可能仍然是最好的形式。这并不意味着它是唯一的方法，也不意味着你以其他的形式交流和分配就不能像从前那样行之有效。但是，最好和最容易的形式是面对面交流。时至今日，我仍然相信我曾经从事过的最令人愉快的软件项目，以及我曾经参与过的开发项目和团队都位于同一地点，位于同一个办公室里。而这是有许多原因的。这是因为周五晚上出去喝点儿啤酒，能够在发生可能影响他们工作的问题时，比如他们的狗死了或类似的事情，能够真正得到额外的理解。

**00:20:04**：

你会得到那种额外的东西，而这是很难从一个分布式团队中得到的。但是另一方面，我认为不是所有最出色的软件工程师都居住在硅谷。所以我感到很矛盾，我觉得位于同一地点的团队有着巨大的价值，但是我也认为，由分散在不同地点，不同能力的人们所带来的好处，也是巨大的。因此，你必须找寻到一个平衡点，而这相当相当困难。我所知道的是如果你打算分散你的团队，那么你必须特别注意促进，并使得环境尽可能实际复制位于同一地点的团队所处的环境。这意味着经常让他们见面。因此，你们要进行大量的屏幕共享，并且花时间在一起，可能需要发起一个谷歌 Hangout，并使之持续运行并进行共享。这些事情变得非常非常重要。

**00:21:10 - Saron Yitbarek**：

因此，Clive，开源项目是建立在协作和团队合作之上的，那么，远程工作会阻碍这一点吗？远程工作对真正的协作能有多大帮助？

**00:21:22 - Clive Thompson**：

好吧，这个问题有关开源的的第一部分很容易回答，我认为实际上开源领域的大部分巨大成就都是在极端远程的情况下取得的，因为从定义上说，开源项目的魔法是一个开发者说：“嘿，我有一个我正在开发的代码库。有人有什么主意吗？”与其只是询问你公司里的 50 个人，你可以在网上询问数以百万计的人。因为实际上只有 1% 的 1% 的 1% 的 1% 的人会给你提供一个好主意。在你拥有 50 个人的组织里，可能没有人会在意你正在构建的奇怪的小库，而在整个星球的范围内，你就能找到 9 个人以令人难以置信的热情和兴趣帮助你开发这个东西。因此，从某种意义来讲，开源从定义上说通过远程协作大力促进了远程工作。

**00:22:18**：

不过，它也受到了挑战，因为刚才 Dave 所谈及的所有这类事情都是真实的 —— 没有面对面接触的话，所有能够帮助组织运转的社会纽带真的很容易分崩离析。而你会在开源项目中看到这一点。它们真的能够转变成网络上反社会行为的噩梦，因为人们并不擅长去阅读彼此的语气。他们会认为自己只是直截了当，而其他人则会认为他们是在进行令人难以置信的羞辱。在面对面社交互动的情况下能在可能是短短 30 秒的时间内就能够化解的误会，能够撕裂开源社区，并已经撕裂了网络上的一些开源社区。

**00:23:07 - Saron Yitbarek**：

Maude Mensah Simpson 是一名前端开发人员，她在居家工作的同时还是两个年幼孩子的母亲。她解释了在有了她第二个孩子以后，在远程工作方面所遇到的早期挑战之一。

**00:23:18 - Maude Mensah Simpson**：

在我有了第二个孩子的时候，我只做了一年的开发人员。因此，当其他所有人都在办公室而就你不在的时候，你会错过太多太多东西。其中之一是人们对一般工作的小范围谈话。比我资深的开发人员会在我写代码的时候从我身后走过，然后他会看到我正在做的东西，并且会说：“哦，是的，我喜欢你的做法。”或者，“你在做什么呢？”他只是经过我工作区，这让他有机会和我谈论有关写代码以及如何正确地做事情。远程工作可能只依赖于你的个人自信，因为当你不在办公室里工作时，你会错过一些教学与指导。

**00:24:10 - Saron Yitbarek**：

Clive，我想知道一名经验丰富的程序员和一名处于生涯起步阶段的程序员相比，远程工作的经验是不是会有所不同，因为我能够想象一个经验丰富的程序员，已经习惯于在办公室环境中工作，然后不得不转到远程工作。这变化可能并不是太糟糕，也并不是太具有挑战性。但是对一个处于职业生涯初期的程序员而言，我能看到他们真正受益于身边的导师，这些人拥有更多地经验，能够拍拍他们的肩膀然后问他们问题。因此，处于生涯初期的程序员会因为不在其他程序员身边而有所损失吗？

**00:24:43 - Clive Thompson**：

我觉得他们会的。是的。我认为这是一个很合理的担忧，而且我确实从那些通过面对面合作成长起来的老开发者那里听到过，他们知道，通过和一名更资深的程序员进行一次 30 秒的面对面交谈，他们可以学到很多东西，并觉得茅塞顿开。Jeff Dean 是谷歌的一名资深工程经理。我从许多和他共事过的人那里听说，他就是一个非常有用的资深资源，因为人们会带着问题去找他，而他能够通过字面上直接看到解决方向，并且在 20 秒内说，“哦 …… ”虽然他不会直接给出答案，但是他会指出他所认为的问题所在，从而使他们茅塞顿开地回去，并变得令人难以置信得富有生产力。

**00:25:36**：

因此，新人们能够从像那样的交互当中受益匪浅。我不是说你永远不能从远程得到这种交互，只是会更难。然后还有代码审查。因此，在一家管理良好的优秀公司里，你将会需要代码审查，你的同事，最好是有一定经验的资深人士会查看你的代码，坐下来讨论它，并问你是如何实现，以及为什么要这么做。而这个往复的过程会涉及到许多你可能作出的模糊决定，并使其清晰化，这对学习而言相当有价值。能够理解你为什么要做自己所做的事情，将其具象化给其他人，是十分有价值的。

**00:26:20 - Saron Yitbarek**：

我所听说过的有关远程工作的问题之一是这种混合的想法，当你开始工作，然后到了 6 点钟，是时候停止工作了，但是你在工作过程中感到舒适，你会再额外地工作一两个小时，最终会因为远程工作而过度劳累。是这样吗？然后与之相反的是，你会在远程工作的时候摸鱼吗？

**00:26:43 - Clive Thompson**：

你可能会摸鱼，但是在我对开发人员及其经理的所有访谈中，从来都没有听说过这种情况。事实上恰恰相反。我更多听到的是经理们担心人们永远不休息，永远都不离开工作。我也从开发人员那里听说过，难以摆脱工作。对于开发人员而言，总是很难停止去思考问题。当你居家工作的时候，你会花费 8 个小时的沉浸式时间，然后你会完成许多工作，但是由于你实际上并没有去其他地方，你的身体没法帮着欺骗你的思维，进入关闭状态。就像你离开了办公室，坐上了汽车、公交车、踏板车或是步行回家，你实际上就从一个地方到了另一个地方，而这种物理信号会帮助你的大脑自我复位。

**00:27:35 - Clive Thompson**：

这里涉及到了很多很多的科学依据。我是说，从字面上看，实际上从一个地方去到另一个地方能够帮助你的大脑进行自我复位。当你没有能力这么做时，当你居家工作，编码问题的天然象棋式的心理空间就很难告诉你的大脑停止工作。因此，诸多原因导致了居家工作的人们继续以自己明知道不健康的方式去工作，却难以停下来。

**00:28:03 - Saron Yitbarek**：

David Heinemeier Hansson，请。

**00:28:05 - David Heinemeier Hansson**：

随着时间的推移，我们对于 Basecamp 的人们如何处理这一问题有过一些有趣的轶事。我们过去有一位数据分析师，他有两双拖鞋。他会在走进办公室的时候穿上他的工作拖鞋，而换下他的居家拖鞋。它们只是一双拖鞋而已，只不过是将工作与家庭分隔开来。而我认为这一分隔尤为重要。我觉得对许多使用他们的家来工作的人而言，能够分出家里的一个房间用于工作，然后当你离开那间屋子时，你就不再工作了，这也不失为一种健康的行为。

**00:28:41 - Saron Yitbarek**：

我喜欢这个拖鞋的点子，就像 Rogers 先生那样。接下来还是 Maude。经过在家和孩子一起工作了几年后，她想出了自己的方式，使得居家工作行得通。

**00:28:53 - Maude Mensah Simpson**：

（在家工作）很容易对时间失去控制。你可能会坐在那里好几个小时，却并不知道自己已经在家写了多久代码，因为你在家里。我的解决方法是，我有一个 Pomodoro 计时器，我会确保大概每小时都会有专门的休息时间。然后就是能够将家和工作分隔开来。我在家里有一个办公室，我不会允许我的家庭生活进入到这间办公室里，以保证将其二者分隔。因此，每当我走出去时，我可以是妈妈或是我不工作时候的任何身份，但是当我走进了办公室以后，这是上班时间，而这使得进入工作流程更为容易。我每天都会进行一次快速的状态更新。早上，我会让他们知道这是我今天要做的工作，然后到了夜晚，我会让他们知道我做到了什么程度。我认为在进行远程工作的时候不存在类似于过度沟通之类的事情。所以是的，只是沟通，沟通。

**00:30:02 - Saron Yitbarek**：

因此，Clive，有没有其他建议或是窍门来远程管理员工，或者甚至是成为一名远程工作者？

**00:30:08 - Clive Thompson**：

当然，如果一家公司想要拥有一种严肃的远程文化，那么重要的一点是，高层管理者也应当远程工作，这样就不会有产生一种远程工作是一种次级状态、重大决定是由重要的人面对面作出的，而远程工作人员并不参与其中的感觉。我在为我的书籍做研究时所遇到的一个问题是，当我与 Postlight 的一些工程师交谈时遇到的，那是纽约市一家很了不起的公司。他们主要为媒体行业开发应用程序。工程负责人进行着远程工作，他在 <ruby> 纳什维尔 <rt>  Nashville </rt></ruby> 南部的树林里工作。当我和他交谈时，他说：“这确实是非常重要的一件事情，因为我们有许多远程工作的工程师，他们乐于知道在领导工程师团队的我也是远程工作的。”这意味着公司里的每一个人都非常用心地思考着如何远程工作，因为在这部分中主持工作的人本身就是远程。

**00:31:09 - Saron Yitbarek**：

自从 2020 年 3 月以来，我们大多数人都不得不彻底改变工作方式 —— 居家工作，无论我们过去是否以及是这么做的。而当我们居家工作时，这就取决于我们个人的工作风格，并且确保无论我们从事的是什么项目，无论工作于什么公司，无论在管理什么人或是被什么人管理，我们的个人喜好能够得到尊重，我们可以灵活地以我们擅长的方式工作。以人为本不仅仅是《敏捷宣言》的第一条规则，也是开源的方式，而且它是能够产生最好结果的方式。请访问 [redhat.com/commandlineheroes](file:///Users/xingyuwang/develop/LCRH-wxy/translated/www.redhat.com/en/commandlineheroes) 以获取这一集的更多研究结果。下一次，在我们有关职业生涯的这一迷你季的最后一集中，Clive 将会回来和我们一起解决“你会成为什么样的程序员”这一问题。非常感谢你加入我们， Clive。

**00:32:07 - Clive Thompson**：

谢谢，Saron。

**00:32:08 - Saron Yitbarek**：

你正在收听的是《<ruby> 代码英雄 <rt>  Command Line Heroes </rt></ruby>》，一档<ruby> 红帽 <rt>  Red Hat </rt></ruby>的原创播客节目。我是 Saron Yitbarek。

**00:32:15 - Clive Thompson**：

我是 Clive Thompson。

**00:32:16 - Saron Yitbarek**：

好的。然后呢？

**00:32:18 - Clive Thompson**：

哦我的天哪。我们能最后一次说“坚持编程”吗？

**00:32:23 - Saron Yitbarek**：

坚持编程。

**00:32:25 - Clive Thompson**：

坚持编程。

>
> **什么是 LCTT SIG 和 LCTT LCRH SIG**
>
>
> LCTT SIG 是 LCTT <ruby> 特别兴趣小组 <rt>  Special Interest Group </rt></ruby>，LCTT SIG 是针对特定领域、特定内容的翻译小组，翻译组成员将遵循 LCTT 流程和规范，参与翻译，并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽（Red Hat）发起的 SIG，当前专注任务是《代码英雄》系列播客的脚本汉化，已有数十位贡献者加入。
>
>
> 欢迎[加入 LCRH SIG](/article-12436-1.html) 一同参与贡献，并领取红帽（Red Hat）和我们联合颁发的专属贡献者证书。
>
>
>

---

via: <https://www.redhat.com/en/command-line-heroes/season-5/where-coders-code>

作者：[Red Hat](https://www.redhat.com/en/command-line-heroes) 选题：[bestony](https://github.com/bestony) 译者：[JonnieWayy](https://github.com/JonnieWayy) 校对：[windgeek](https://github.com/windgeek), [Daniel4078](https://github.com/Daniel4078), [wxy](https://github.com/wxy)

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


硬核观察 #780 使用 AI 和激光炮塔击杀蟑螂的开源项目

Summary: • 使用 AI 和激光炮塔击杀蟑螂的开源项目 • 基于 Linux 的 Steam Deck 掌机出货量逾一百万部 • 美国白宫提出围绕 AI 的自愿安全和透明规则

![](/data/attachment/album/202210/05/155321itbmmt9l90emitmj.jpg)

![](/data/attachment/album/202210/05/155346yws6hklohwnsoo87.jpg)

### 使用 AI 和激光炮塔击杀蟑螂的开源项目

研究人员使用四核 ARM 处理器的 Jetson Nano 小型计算机来处理来自两个相机的数字信号，并使用神经网络来确定目标昆虫在三维空间中的位置。然后驱动来自中国的激光器来瞄准蟑螂。当激光功率较低时，可以驱赶蟑螂，功率更高时可以甚至可以直接杀死蟑螂。此项目已全部在 GitHub 上开源，作者此前还尝试用同样的手段消灭蚊子。

>
> **[消息来源：VICE](https://www.vice.com/en/article/dy743w/scientists-create-ai-powered-laser-turret-that-kills-cockroaches)**
>
>
>

>
> 老王点评：这算不算 AI “武器化”？
>
>
>

![](/data/attachment/album/202210/05/155400rs53t2tt2rzux2ta.jpg)

### 基于 Linux 的 Steam Deck 掌机出货量逾一百万部

Valve 的 Linux 掌机 Steam Deck 于今年 2 月 25 日上市，采用预售制，玩家需要先支付 5 美元预定一个版本。据 KDE 开发者在最近举行的 Akademy 2022 会议上透露的消息，Steam Deck 掌机出货量已逾一百万部。Steam Deck 包含了一个完整的 KDE Plasma 桌面模式。

>
> **[消息来源：Gaming On Linux](https://www.gamingonlinux.com/2022/10/kde-steam-deck-akademy-2022/)**
>
>
>

>
> 老王点评：这相当于拉高了 Linux 的桌面终端占有率啊。
>
>
>

![](/data/attachment/album/202210/05/155416e7yuzv77f1oyu0ze.jpg)

### 美国白宫提出围绕 AI 的自愿安全和透明规则

白宫周二提出了一项不具约束力的《人工智能权利法案》，称其将帮助父母、病人和工人避免因教育、医疗和就业领域越来越多地使用自动化而受到伤害。人工智能软件的开发者和使用者应该自愿遵守，以防止该技术不公平地对人们造成不利。但该法案对私营企业没有约束力，美国商会警告说，如果这些不具约束力的建议成为规则，可能会损害美国企业在全球舞台上的竞争能力。近些年屡屡出现算法失控的例子，如一些算法被发现具有歧视性，这是由于系统训练所依据的数据。

>
> **[消息来源：路透社](https://www.reuters.com/technology/white-house-guidelines-ai-aim-mitigate-harm-2022-10-04/)**
>
>
>

>
> 老王点评：人工智能该不该约束？应该。但是以什么样的方式，约束到什么程度，恐怕上面美国商会的意见才是真的意图。
>
>
>


CNCF 接受开源 Hexa 项目作为沙盒项目

Summary: 开源身份标准和策略协调软件巩固了对多云访问策略的管理。

开源身份标准和策略协调软件巩固了对多云访问策略的管理。

![](/data/attachment/album/202210/06/094727kbrbnrzmm7brbmzb.png)

>
> 开源身份标准和策略协调软件巩固了对多云访问策略的管理。
>
>
>

根据多云身份协调公司 Strata Identity 的说法，Hexa 和 IDQL（<ruby> 身份查询语言 <rt>  Identity Query Language </rt></ruby>）开源项目使组织能够在多个云平台上的应用程序中采用一致的访问策略，已被云原生计算基金会（CNCF）接受为沙盒项目：<https://www.cncf.io/projects/hexa/>

“<ruby> 云身份 <rt>  Cloud Identity </rt></ruby> 是非常分散的，没有明确的路径来协调不同服务提供商平台的策略管理，” TechVision Research 首席咨询分析师兼首席执行官 Gary Rowe 说。“IDQL 代表了在为基于云的 IAM 治理提供基于标准的方法方面向前迈出的重要一步。”

Linux 基金会的 CNCF 是一个致力于监督开源云原生计划的非营利组织。Versa Networks、S&P Global、Cummins、Kroger、MEF 和 Strata Identity 都是 IDQL 和 Hexa 的作者和工作组参与者。有关如何帮助该项目的更多详细信息，请访问 <https://hexaorchestration.org>。

目前，每个云平台（如 AWS、谷歌云、微软 Azure 等）都使用一个独特的身份系统，采用独特的策略语言，彼此完全不兼容。而每个应用程序都需要进行硬编码才能与特定的识别系统一起运行。根据 2022 年多云身份状况调查，只有 25% 的受访者表示他们了解多云访问限制，这对企业来说是一个重大障碍。

基于该公司创始人共同编写 SSO 联盟 SAML 标准的经验，Strata Identity 领导了 Hexa 和 IDQL 项目。这个新项目的目标是引入一个精心设计的开源策略编排框架，以增加组织、客户和软件提供商从转向现代、开放和无密码的身份验证方法中获利的可能性。

在不改变识别系统或应用程序的情况下，IDQL 和 Hexa 允许任意数量的身份系统作为单个集成系统运行。这些开源计划共同提供了以下优势：

发现策略：

* 对重要的应用程序、数据和策略进行分析和清点
* 发现可用的应用程序以及它们的位置
* 识别策略、用户和角色

管理策略：

* 在策略发现期间，将本机命令式策略转换为声明性 IDQL 策略
* 在策略编排期间，将声明性 IDQL 策略转换为目标系统的本机命令式策略

策略编排：

* 使用基于云的架构，无需代理、代理或本地代码；
* 分发的规则由身份提供者（IdP）、云、IaaS 和网络系统执行
* 采用可扩展的开源范例，允许定制的连接器集成

---

via: <https://www.opensourceforu.com/2022/09/cncf-accepts-open-source-hexa-project-as-a-sandbox-project/>

作者：[Laveesh Kocher](https://www.opensourceforu.com/author/laveesh-kocher/) 选题：[lkxed](https://github.com/lkxed) 译者：[littlebirdnest](https://github.com/littlebirdnest) 校对：[wxy](https://github.com/wxy)

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


Tuxedo 已对所有用户开放基于 Ubuntu 的 TUXEDO OS

>
> TUXEDO OS 是一个基于 Ubuntu 的 Linux 发行版，旨在将 TUXEDO 在 Linux 方面的专业知识也带给非 TUXEDO 用户。
>
>
>

又一个基于 Ubuntu 的 Linux 发行版？?

不完全是！**TUXEDO 计算机公司** 是一家硬件制造商，以其专注于 Linux 的笔记本电脑和计算机而闻名。

**TUXEDO OS 与 Ubuntu 之间存在着一些有趣的差异**。

虽然他们已经在笔记本电脑/计算机上提供预装 TUXEDO OS 的选项，但是它并未对所有人开放。

终于，他们决定将其发行版的第一个版本作为 **TUXEDO OS 1** 开放，该版本现已可供下载。

这也意味着你可以在自己的非 TUXEDO 系统上试用它。

所以这个思路很像 System76 的 Pop!\_OS，所以这并不算一件坏事 ?

### 搭配 KDE 的 TUXEDO OS 1

![tuxedo 桌面](/data/attachment/album/202210/06/102055dv0swm80adcwccgz.jpg)

TUXEDO OS 1 是基于 [Ubuntu 22.04 LTS](https://news.itsfoss.com/ubuntu-22-04-release/) 的; 所以它应该可以直接在大多数设备上运行。

与 System76 的 Pop!\_OS 不同，TUXEDO OS 搭载了 [KDE Plasma 5.24.6](https://news.itsfoss.com/kde-plasma-5-24-lts-release/)。因此，它应当提供了一个 Windows 用户也较为熟悉的用户界面。

但是，TUXEDO OS 还包括一些额外的功能，例如 TUXEDO 控制中心，用于微调你的硬件（CPU/风扇等），以及 TUXEDO Tomte，一个用于解决驱动程序/缺少包问题的配置服务，但是它或许能，或许不能在其他硬件配置上工作。

说到这里，让我们看看 TUXEDO OS 及其提供的功能。

### TUXEDO OS，基于 KDE 的定制化 Ubuntu 体验

用户体验正如预期一样，与任何基于 KDE 的 Ubuntu 发行版相同。

>
> ? 我将 TUXEDO OS（预览版）用做我的主要系统来体验它。
>
>
>

你会在应用和菜单上发现带有红色调的 TUXEDO 徽标。它还具有令人耳目一新的壁纸。

![tuxedo 菜单](/data/attachment/album/202210/06/102056saar1k1rkv1vumeu.png)

除了定制化的 KDE Plasma 主题，还有一些其他的变化，例如：

* 它使用了 PipeWire 作为声音服务器，而不是 PulseAudio。
* GRUB 中启用了 os-prober 功能，让用户可以方便地检测已安装的其他操作系统。
* .deb 作为首选的软件包格式，而 Snap 默认情况下被禁用。
* 从 NetworkManagerConnectivity 检查中移除了 Canonical 的链接。

#### 软件可用性？

你可以通过 “<ruby> 发现 <rt>  Discover </rt></ruby>” 应用来找到所有流行的软件工具，其中包括 Ubuntu 的仓库和 TUXEDO 的仓库。

它包含了 **Firefox、Thunderbird、LibreOffice、VLC、Lutris 和 Heroic Games Launcher** 等必备应用程序。所以我认为你不会觉得它们很臃肿。

![tuxedo discover 应用](/data/attachment/album/202210/06/102057qjjf11thfaqahbvj.png)

我还注意到它默认启用了 Flatpak 集成。

你可以在他们的 [官方网页](https://www.tuxedocomputers.com/en/Featured-KDEs-outstanding-applications-and-tools.tuxedo) 上了解有关可用软件的更多信息。

#### 这也给我们带来了一个重要的亮点

❌ TUXEDO OS 不会默认安装 Snap。对于 Firefox，它会像 Linux Mint 一样附带 deb 包安装。

✅ 值得注意的是，TUXEDO OS 22.04 LTS 附带了 Nvidia 驱动程序。

因此，我可以毫不费力地将它安装在带有 RTX 3060 Ti 显卡的系统上。

### TUXEDO 附加功能

如上所述，TUXEDO OS 附带了一些专为增强 Tuxedo 硬件的体验而量身定制的附加功能。

控制中心是监控你的系统、选择电源配置文件、控制外部水冷（[TUXEDO Aquaris](https://www.tuxedocomputers.com/en/TUXEDO-Aquaris.tuxedo)）等的绝佳工具。

![tuxedo 控制中心](/data/attachment/album/202210/06/102058p34kks44tz81upta.png)

虽然控制中心不是为非 TUXEDO 设备量身定制的，但它在大多数情况下仍然能够正常工作。

还有一个 TUXEDO WebFAI Creator 程序（定制的 BalenaEtcher）来烧录用于操作系统安装的 U 盘。

![tuxedo webfai](/data/attachment/album/202210/06/102059toukrf5fcejszqe4.jpg)

还有，不要忘记 TUXEDO Tomte，它无法在我的系统上运行，但可以很完美的在 TUXEDO 设备上作为配置服务运行：

![](/data/attachment/album/202210/06/102100n3z3jy7l83do0ex3.jpg)

### 下载 TUXEDO OS 1

TUXEDO OS 带来了非常精致的体验。TUXEDO 背后的团队在让 Linux 运行在他们的一些最新笔记本电脑上拥有丰富的经验。因此，使用他们的 Linux 发行版，你可以对自己的体验充满信心。

如果你有兴趣，还可以找到关于 [TUXEDO OS 入门](https://www.tuxedocomputers.com/en/First-Steps-with-TUXEDO-OS.tuxedo) 的官方文章。

**如果你希望获得一个基于 KDE 的定制化 Ubuntu 体验，TUXEDO OS 1 是一个不错的选择。**

你可以通过使用它来支持他们的计划，这可能会让你决定购买一台 TUXEDO 设备；你永远不知道以后会发生什么，对吧？

你可以从其官方网站下载它，并在下方的评论区中分享你的想法。

>
> **[下载 TUXEDO OS 1](https://www.tuxedocomputers.com/os)**
>
>
>

---

via: <https://news.itsfoss.com/tuxedo-os/>

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

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


Java 无服务器函数入门

Summary: Quarkus 令你可以使用类似 Java 的技术开发无服务器的工作负载。

我知道你想毁了java，但大部分人仍然会抱着spring的大腿。

我知道你想毁了java，但大部分人仍然会抱着spring的大腿。

Quarkus 令你可以使用类似 Java 的技术开发无服务器的工作负载。

![](/data/attachment/album/202210/06/154731xejvfcai8e0auimh.jpg)

>
> Quarkus 令你可以使用类似 Java 的技术开发无服务器的工作负载。
>
>
>

对 [无服务器 Java](/article-13429-1.html) 的研究始于函数 —— 就是按需求运行的一小段代码。这一阶段并没有持续很长时间。虽然在 1.0 阶段，基于虚拟机架构的函数使这种范式变得很流行，但它仍然有局限性，例如执行时间、协议和糟糕的本地开发体验，都不太理想，如下图所示。

开发者随后意识到，可以把同样的无服务器特性应用于微服务和 Linux 容器，带来的好处也是一样的。由此进入 1.5 阶段，在这个阶段，一些无服务器容器完全抽象化了 [Kubernetes](https://opensource.com/article/19/6/reasons-kubernetes)，通过 [Knative](https://cloud.google.com/knative/) 或其它位于它之上的抽象层来提供无服务器的体验。

在 2.0 阶段，无服务器开始处理更复杂的编排和集成模式，并结合某些层级的状态管理。更重要的是，开发者关注的是能否在旧的系统中使用熟悉的 Java 应用程序运行时来组合运行无服务器和非无服务器的工作负载。

![The serverless Java journey](/data/attachment/album/202210/06/154735b3ijlvyoti4saapv.png)

Java 开发者开始进行无服务器函数开发之前，第一步是要选择一种新的云原生 Java 框架，从而能够以快于传统单体应用程序的速度和较小的内存占用运行 Java 函数。这在各种基础设施环境中，包括物理服务器、虚拟机、多云或混合云环境中的容器，都是适用的。

开发者也有可能固执地选择 Spring 框架中的 [Spring 云函数](https://spring.io/serverless) 来进行命令式和反应式函数的开发。Spring 也支持将 Java 函数部署到可安装的无服务器平台，比如 [Kubeless](https://kubeless.io/)、[Apache OpenWhisk](https://openwhisk.apache.org/)、[Fission](https://fission.io/) 和 [Project Riff](https://projectriff.io/)。然而，人们担心 Spring 的启动慢、响应时间长以及内存占用大的问题。在诸如 Kubernetes 这种可扩展的容器环境中运行 Java 函数，这些问题可能会更严重。

[Quarkus](https://quarkus.io/) 是一个新推出的开源云原生 Java 框架，它有助于解决这些问题。它的作用是设计无服务器应用程序，以及编写运行于云基础设施（例如 Kubernetes）的云原生微服务。

Quarkus 重新审视了 Java，它使用了封闭的方法构建和运行 Java 程序。它把 Java 转变为一种可与 Go 相媲美的运行时。Quarkus 也包含 100 多种扩展功能，集成了企业级能力，例如数据库访问、无服务器集成、消息、安全、可观察性和业务自动化。

这里有一个简单例子，展现如何使用 Quarkus 创建一个 Java 无服务器项目的框架。

### 1、基于 Maven 创建一个 Quarkus 无服务器项目

安装一个本地 Kubernetes 集群，开发者有多种选择，包括 [Minikube](https://minikube.sigs.k8s.io/docs/start/) 和 [OKD](https://docs.okd.io/latest/welcome/index.html)。因为使用 OKD 在 Knative 和 DevOps 工具上安装无服务器相关功能较方便，本文使用 OKD 安装集群。这些关于 [OKD 安装](https://docs.okd.io/latest/installing/index.html) 和 [Knative 操作员安装](https://knative.dev/docs/install/knative-with-operators/) 的相关指南中提供了更多的设置资料。

下面的命令创建了一个 Quarkus 项目（例如 `quarkus-serverless-restapi`），对外暴露一个简单的 REST API，并下载 `quarkus-openshift` 扩展，用于 Knative 服务的部署：

```
$ mvn io.quarkus:quarkus-maven-plugin:1.13.4.Final:create \
       -DprojectGroupId=org.acme \
       -DprojectArtifactId=quarkus-serverless-restapi \
       -Dextensions="openshift" \
       -DclassName="org.acme.getting.started.GreetingResource"

```

### 2、在本地运行无服务器功能

使用 Quarkus 开发模式运行程序，检查 REST API 是否有效，稍稍调整一下代码：

```
$ ./mvnw quarkus:dev

```

输出如下内容：

```
__  ____  __  _____   ___  __ ____  ______
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
INFO  [io.quarkus] (Quarkus Main Thread) quarkus-serverless-restapi 1.0.0-SNAPSHOT on JVM (powered by Quarkus xx.xx.xx.) started in 2.386s. Listening on: http://localhost:8080
INFO  [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
INFO  [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, kubernetes, resteasy]

```

>
> **注意**: 保持 Quarkus 应用程序运行，需要使用<ruby> 热部署 <rt>  Live Coding </rt></ruby>。这样，当代码修改后，你就不必重新构建、重新部署以及重启运行时。
>
>
>

现在，你可以使用一个 `curl` 命令快速访问 REST API。输出结果应当是 `Hello RESTEasy`:

```
$ curl localhost:8080/hello
Hello RESTEasy

```

在 `GreetingResource.java` 中修改返回值：

```
public String hello() {
        return "Quarkus Function on Kubernetes";
    }

```

再次访问 REST API，输出信息也会相应更新：

```
$ curl localhost:8080/hello
Quarkus Function on Kubernetes

```

普通的微服务跟无服务器函数之间的差别并不大。使用 Quarkus 的好处在于：开发者可以使用任何微服务，将 Kubernetes 部署为无服务器函数。

### 3、在 Knative 服务中部署相关的函数

如果你还没有创建命名空间，就在你的 OKD 集群上 [创建命名空间](https://docs.okd.io/latest/applications/projects/configuring-project-creation.html)（例如 `quarkus-serverless-restapi`），用来部署 Java 无服务器函数。

Quarkus 令开发者可以通过在 `src/main/resources/application.properties` 中添加以下变量，创建 Knative 和 Kubernetes 资源：

```
quarkus.container-image.group=quarkus-serverless-restapi <1>
quarkus.container-image.registry=image-registry.openshift-image-registry.svc:5000 <2>
quarkus.kubernetes-client.trust-certs=true <3>
quarkus.kubernetes.deployment-target=knative <4>
quarkus.kubernetes.deploy=true <5>
quarkus.openshift.build-strategy=docker <6>

```

说明:

* <1> 在你部署无服务器应用程序的位置定义项目名
* <2> 使用容器注册中心
* <3> 在这个简单例子中，使用自签名证书，以便通过相关信任机制
* <4> 允许创建 Knative 资源
* <5> 指示在构建容器映像之后将扩展部署到 OpenShift
* <6> 设置 Docker 构建策略

执行以下命令，构建应用程序，并直接部署到 OKD 集群：

```
$ ./mvnw clean package -DskipTests

```

>
> **注意:** 应该提前使用 `oc login` 命令，确保登录到正确的项目（例如`quarkus-serverless-restapi`）。
>
>
>

输出结果应该以 `BUILD SUCCESS` 结束。

在对于 Knative 服务执行的 `oc` 命令中，加上标签:

```
$ oc label rev/quarkus-serverless-restapi-00001
app.openshift.io/runtime=quarkus --overwrite

```

然后访问 OKD 网页控制台，就能进入 [开发人员透视图中的拓扑视图](https://docs.okd.io/latest/applications/application_life_cycle_management/odc-viewing-application-composition-using-topology-view.html)。你可能会看到你的<ruby> 容器荚 <rt>  Pod </rt></ruby>（无服务器函数）已经缩小为零（白线圈）。

![Topology view](/data/attachment/album/202210/06/154735bjs1llcol5uccjlu.png)

### 4、在 Kubernetes 环境下测试函数

运行如下 `oc` 命令，搜索含有无服务器函数的路由：

```
$ oc get rt/quarkus-serverless-restapi
[...]
NAME                      URL                             READY   REASON
quarkus-serverless[...]   http://quarkus[...].SUBDOMAIN   True

```

使用 `curl` 命令访问搜索到的路由：

```
$ curl http://quarkus-serverless-restapi-quarkus-serverless-restapi.SUBDOMAIN/hello

```

过几秒钟，你可以得到跟在本地相同的结果：

```
Quarkus Function on Kubernetes

```

当你回到 OKD 集群内的拓扑图，Knative 服务会自动扩展。

![Scaling the Knative Function](/data/attachment/album/202210/06/154736cez3z383x33zg3x3.png)

由于 Knative 服务的默认设置，其 pod 在 30 秒后会再次下降至零。

### 下一步呢？

无服务器不断地在演变，始于运行于虚拟机的函数，到后来的无服务器容器，并与企业原有系统集成。在此过程中，企业开发者借助 Quarkus，仍然可以使用自己熟悉的技术（比如 Java）创建一个项目，然后构建并部署到 Kubernetes。

本系列的下一篇文章将指导你优化 Kubernetes 中的 Java 无服务器函数，从而令程序启动更快，内存占用更小。

*文内图像来自：Daniel Oh, CC BY-SA 4.0*

---

via: <https://opensource.com/article/21/6/java-serverless-functions>

作者：[Daniel Oh](https://opensource.com/users/daniel-oh) 选题：[lkxed](https://github.com/lkxed) 译者：[cool-summer-021](https://github.com/cool-summer-021) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #781 DeepMind 用游戏的方式打破了矩阵相乘 50 年来的记录

Summary: • DeepMind 用游戏的方式打破了矩阵相乘 50 年来的记录 • 英特尔推动 GPU 通用编程库 SYCL 的发展 • SELinux 继续废弃运行时禁用功能

![](/data/attachment/album/202210/06/174755a4qk9v5oz5kw5uku.jpg)

![](/data/attachment/album/202210/06/174801t1c9mumqrp6qo1rc.jpg)

### DeepMind 用游戏的方式打破了矩阵相乘 50 年来的记录

矩阵乘法问题是一种关键的计算类型，它是许多不同应用的核心，从屏幕上显示图像到模拟复杂的物理学。加快这种计算可能会对成千上万的日常计算机任务产生重大影响。但想优化矩阵相乘的步骤很难。DeepMind 将该问题变成一种三维棋盘游戏 TensorGame。训练了一个新版本的 AlphaZero，称为 AlphaTensor，来玩这个游戏，以尽可能少的动作赢得游戏。AlphaTensor 发现了一种将两个四乘四的矩阵相乘的方法，只需要 47 步，基本的高中数学方法需要 64 步，而之前的最佳方法是德国数学家在 1969 年发明的 49 步的方法。此外，“AlphaTensor 在超过 70 种不同大小的矩阵中击败了现有的最佳算法。”

>
> **[消息来源：Technology Review](https://www.technologyreview.com/2022/10/05/1060717/deepmind-uses-its-game-playing-ai-to-best-a-50-year-old-record-in-computer-science/)**
>
>
>

>
> 老王点评：没想到 AI 居然可以在数学上找到更好的算法，果然人力有时而穷。此外，对矩阵相乘的改进，应该会从底层提升很多你想不到的地方的性能。
>
>
>

![](/data/attachment/album/202210/06/174814ty1gm5g64tl9rb6l.jpg)

### 英特尔推动 GPU 通用编程库 SYCL 的发展

如今在加速计算和 GPU 领域，CUDA 只能在英伟达的 GPU 上运行，AMD 的 CUDA 可以在 AMD 的 GPU 上运行，但你不能用 CUDA 为英特尔的 GPU 编程。因此，英特尔推动开源 SYCL 规范的发展，该规范旨在为 GPU 和加速计算做几十年前 Java 为应用开发所做的工作。SYCL 是一种用 C++ 语言进行数据并行编程的方法，它看起来很像 CUDA，可以在英特尔、AMD 和英伟达的 GPU 上运行，而无需改变你的代码。

>
> **[消息来源：Venture Beat](https://venturebeat.com/programming-development/intel-cto-wants-developers-to-build-once-run-on-any-gpu/)**
>
>
>

>
> 老王点评：这就是一个英特尔的 CUDA，但是以开放的名义。
>
>
>

![](/data/attachment/album/202210/06/174831ajyjffj9a5pp1fb9.jpg)

### SELinux 继续废弃运行时禁用功能

SELinux 已经废弃了运行时禁用功能，即通过编辑配置文件或 sys 文件系统来即时禁用它。但相关的代码和功能尚未从内核中删除，Linux 6.1 仍然具有处理 SELinux 运行时禁用的废弃能力。在最新的 Linux 6.1 的合并请求中，SELinux 删除了对该能力的一个文档参考，向废弃该能力小小的迈了一步，其它的部分几乎没有什么大的变化。一种简单和非侵入性的正确禁用 SELINUX 的方法是，在启动 Linux 时可以将 `selinux=0` 作为一个内核参数传递进去。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/SELinux-Runtime-Disabling)**
>
>
>

>
> 老王点评：抛开 SELinux 的 NSA 背景不谈，SELinux 其实安全但繁琐，所以运行时禁用 SELinux 往往成为了一种偷懒行为或安全缺陷。
>
>
>