2021 年开始使用开源的 10 种方式

>
> 如果你刚开始接触开源，那么下面的 2020 年十篇好文章有助于指导你的发展之路。
>
>
>

![](/data/attachment/album/202102/19/110943di1i609a9spys1i1.jpg "Looking at a map for career journey")

我们存在的意义是为了向世界宣传开源的一切，从新工具到框架拓展到社区。我们的目标是让想要使用开源或为开源做贡献的人更容易参与其中。

入门开源可能很难，所以我们定期分享如何参与其中的提示和建议。如果你想要学习 Python，帮助抗击 COVID-19，或者加入 K8s 设置，我们将为你服务。

为了帮助你开始，我们总结了 2020 年发布的 10 篇最流行的开源入门文章。希望它们能激发你在 2021 年学习一些新知识。

### 《利用 Python 爬取网站的新手指南》

你是否想通过实践而不是阅读来学习 Python？在本教程中，Julia Piaskowski 将会指导你完成她的第一个[Python 网页爬取项目](/article-13047-1.html)。她具体展示了如何使用 Python 的 `requests` 库访问网页内容。

Julia 详细介绍了每一步，从安装 Python3 到使用 Pandas 来清理 Web 抓取结果。她利用了大量截图解释了如何以最终目标为目的进行爬取。

有关爬取相关内容的部分特别有用；当遇到困难处时，她会详细解释。但是，与本文的其余部分一样，她会指导你完成每个步骤。

### 《在 Linux 上使用 SSH 进行远程连接的初学者指南》

如果你之前从未使用过安全 shell（SSH），那么你在第一次使用时可能会感到困惑。在本教程中，Seth Kenlon 展示了[如何为两台计算机之间配置 SSH 连接](https://opensource.com/article/20/9/ssh)，以及如何不使用密码而安全地进行连接。

Seth 解释了建立 SSH 连接的每个步骤，从你应该了解的四个关键术语到在每个主机上激活 SSH 的步骤。他还提供了有关查找计算机 IP 地址、创建 SSH 密钥以及对远程计算机的远程访问权限的建议。

### 《五步学会任何编程语言》

如果你已经掌握了一种编程语言，你就能[学习所有的语言](/article-12842-1.html)。这是 Seth Kenlon 编写本文的前提，他认为了解一些基本编程逻辑便可以跨语言拓展。

Seth 分享了程序员在学习一种新的编程语言或编码方式时所需要的五种东西。语法、内置函数和解析器是这五种之一，他对每一种都附上了行动步骤。

那么将它们统一起来的关键方式是？一旦了解了代码工作原理，你就可以跨语言拓展。对你来说，没有什么是太难学的。

### 《为 COVID-19 贡献开源医疗项目》

你是否知道一家意大利医院通过 3D 打印机设备挽救了 COVID-19 患者的生命？这是开源贡献者为 2020 年 COVID-19 大流行[建立的众多解决方案之一](https://opensource.com/article/20/3/volunteer-covid19)。

在本文中，Joshua Pearce 分享了针对 COVID-19 的开源志愿服务项目。虽然 Open Air 是最大的项目，但 Joshua 解释了如何为开源呼吸机的维基工作，编写开源 COVID-19 医疗供应要求，测试开源氧气浓缩机原型等。

### 《GNOME 入门建议》

GNOME 是最受欢迎的 Linux 桌面之一，但是它适合你吗？本文分享了[来自 GNOME 用户的建议](https://opensource.com/article/20/6/gnome-users)，以及有关此主题的文章。

想要在配置桌面上寻找一些灵感吗？本文包含了有关 GNOME 扩展入门，将 Dash 安装到 Dock，使用 GNOME Tweak 工具等的链接。

不过，你仍然可能会认为 GNOME 不适合你——不用担心，最后你将找到指向其他 Linux 桌面和窗口管理器的链接。

### 《现在开始为开源做贡献的 3 个理由》

截至到 2020 年 6 月，Github 托管了超过 180,000 个公共仓库。现如今加入开源社区比过去更容易，但这是否意味着你应该加入开源？在本文中，Jason Blais [分享了三个投身开源的原因](https://opensource.com/article/20/6/why-contribute-open-source)。

为开源做贡献可以增强你的信心、简历和专业网络。Jason 还解释了如何利用有用的信息，从如何在领英个人资料中添加开源信息，到如何将这些贡献转变为付费角色。最后还列出了供初学者参与的出色项目。

### 《作为 Linux 系统管理员为开源做贡献的 4 种方法》

系统管理员是开源的无名英雄。他们在代码背后做了大量工作，这些代码非常有价值，但通常是看不见的。

在本文中，Elizabeth K. Joseph 介绍了她如何以 Linux 系统管理员的身份[来改善开源项目](https://opensource.com/article/20/7/open-source-sysadmin)。用户支持、托管项目资源、寻找新的网站环境是让社区比她发现时变得更好的几种方式。

也许最重要的贡献是什么？文档！Elizabeth 在开源领域的起步是她为使用的项目重写了快速入门指南。向你经常使用的项目提交错误和补丁报告是参与其中的理想方法。

### 《为 Slack 的开源替代品做出贡献的 6 种方法》

Mattermost 是一个很受欢迎的平台，适合那些想要一个开源消息传递系统的团队的平台。其活跃、充满活力的社区是让用户保持忠诚度的关键因素，尤其是对那些具有 Go、React 和 DevOps 经验的用户。

如果你想[为 Mattermost 做出贡献](https://opensource.com/article/20/7/mattermost)，Jason Blais 具体介绍了如何参与其中。将本文视为你的入门文档：Blais 分享了你要采取的步骤，并介绍了你可以做出的六种贡献。

无论你是要构建一个集成还是本地化你的语言，本文都将介绍如何进行。

### 《如何为 Kubernetes 做贡献》

当我走进 2018 年温哥华青年开源峰会时，还很年轻，对 Kubernetes 一无所知。主题演讲结束后，我离开会场后依然是一个有所改变而依然困惑的女人。毫不夸张地说，Kubernetes 已经彻底改变了开源，这并不夸张：很难找到一个更受欢迎、更有影响力的项目。

如果你想做出贡献，那么 IBM 工程师 Tara Gu 介绍了[她是如何开始的](https://opensource.com/article/20/1/contributing-kubernetes-all-things-open-2019)。本文介绍了她在 All Things Open 2019 会议上的闪电演讲的回顾以及包括她亲自演讲的视频。还记得吗？

### 《任何人如何在工作中为开源软件做出贡献》

需求是发明之母，尤其是在开源领域。许多人针对自己遇到的问题构建开源解决方案。但是如果开发人员在没有收集目标用户反馈的情况下通过构建产品而错过了目标，会发生什么呢？

在企业中，产品和设计团队通常会填补这一空白。如果开源团队中不存在这样的角色，开发人员应该怎么做？

在本文中，Catherine Robson 介绍了开源团队如何从目标用户那里[收集反馈](https://opensource.com/article/20/10/open-your-job)。它为希望与开发人员分享他们的工作经验，从而将他们的反馈贡献到开源项目的人们而编写。

Catherine 概述的步骤将帮助你与开源团队分享你的见解，并在帮助团队开发更好的产品方面发挥关键作用。

### 你想要学习什么？

你想了解开源入门哪些方面的知识？请在评论中分享你对文章主题的建议。同时如果你有故事可以分享，以帮助他人开始使用开源软件，请考虑[撰写文章](https://opensource.com/how-submit-article)。

---

via: <https://opensource.com/article/21/1/getting-started-open-source>

作者：[Lauren Maffeo](https://opensource.com/users/lmaffeo) 选题：[lujun9972](https://github.com/lujun9972) 译者：[萌新阿岩](https://github.com/mengxinayan) 校对：[wxy](https://github.com/wxy)

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


让 Linux 成为理想的工作站的 3 个开源工具

Summary: Linux 不但拥有你认为所需的一切，还有更多可以让你高效工作的工具。

Linux 不但拥有你认为所需的一切，还有更多可以让你高效工作的工具。

>
> Linux 不但拥有你认为所需的一切，还有更多可以让你高效工作的工具。
>
>
>

![](/data/attachment/album/202102/19/134935qhe252ifbvbpnzxk.jpg "Person using a laptop")

在 2021 年，有更多让人们喜欢 Linux 的理由。在这个系列中，我将分享 21 种使用 Linux 的不同理由。今天，我将与你分享为什么 Linux 是你工作的最佳选择。

每个人都希望在工作期间提高工作效率。如果你的工作通常涉及到文档、演示文稿和电子表格的工作，那么你可能已经习惯了特定的例行工作。问题在于，这个*惯常的例行工作*通常是由一两个特定的应用程序决定的，无论是某个办公套件还是桌面操作系统。当然，习惯并不意味着它是理想的，但是它往往会毫无疑义地持续存在，甚至影响到企业的运作架构。

### 更聪明地工作

如今，许多办公应用程序都在云端运行，因此如果你愿意的话，你可以在 Linux 上使用相同的方式。然而，由于许多典型的知名办公应用程序并不符合 Linux 上的文化预期，因此你可能会发现自己受到启发，想去探索其他的选择。正如任何渴望走出“舒适区”的人所知道的那样，这种微妙的打破可能会出奇的有用。很多时候，你不知道自己效率低下，因为你实际上并没有尝试过以不同的方式做事。强迫自己去探索其他方式，你永远不知道会发现什么。你甚至不必完全知道要寻找的内容。

### LibreOffice

Linux（或任何其他平台）上显而易见的开源办公主力之一是 [LibreOffice](http://libreoffice.org)。它具有多个组件，包括文字处理器、演示软件、电子表格、关系型数据库界面、矢量绘图等。它可以从其他流行的办公应用程序中导入许多文档格式，因此从其他工具过渡到 LibreOffice 通常很容易。

然而，LibreOffice 不仅仅是一个出色的办公套件。LibreOffice 支持宏，所以机智的用户可以自动完成重复性任务。它还具有终端命令的功能，因此你可以在不启动 LibreOffice 界面的情况下执行许多任务。

想象一下，比如要打开 21 个文档，导航到**文件**菜单，到**导出**或**打印**菜单项，并将文件导出为 PDF 或 EPUB。这至少需要 84 次以上的点击，可能要花费一个小时的时间。相比之下，打开一个文档文件夹，并转换所有文件为 PDF 或 EPUB，只需要执行一个迅速的命令或菜单操作。转换将在后台运行，而你可以处理其他事情。只需要四分之一的时间，可能更少。

```
$ libreoffice --headless --convert-to epub *.docx

```

这是一个小改进，是由 Linux 工具集和你可以自定义环境和工作流程的便利性所潜在带来的鼓励。

### Abiword 和 Gnumeric

有时，你并不需要一个大而全的办公套件。如果你喜欢简化你的办公室工作，那么使用一个轻量级和针对特定任务的应用程序可能更好。例如，我大部分时间都是用文本编辑器写文章，因为我知道在转换为 HTML 的过程中，所有的样式都会被丢弃。但有些时候，文字处理器是很有用的，无论是打开别人发给我的文档，还是因为我想用一种快速简单的方法来生成一些样式漂亮的文本。

[Abiword](https://www.abisource.com) 是一款简单的文字处理器，它基本支持流行的文档格式，并具备你所期望的文字处理器的所有基本功能。它并不意味着是一个完整的办公套件，这是它最大的特点。虽然没有太多的选择，但我们仍然处于信息过载的时代，这正是一个完整的办公套件或文字处理器有时会犯的错误。如果你想避免这种情况，那就用一些简单的东西来代替。

同样，[Gnumeric](http://www.gnumeric.org) 项目提供了一个简单的电子表格应用程序。Gnumeric 避免了任何严格意义上的电子表格所不需要的功能，所以你仍然可以获得强大的公式语法、大量的函数，以及样式和操作单元格的所有选项。我不怎么使用电子表格，所以我发现自己在极少数需要查看或处理分类账中的数据时，对 Gnumeric 相当满意。

### Pandoc

通过专门的命令和文件处理程序，可以最小化。`pandoc` 命令专门用于文件转换。它就像 `libreoffice --headless` 命令一样，只是要处理的文档格式数量是它的十倍。你甚至可以用它来生成演示文稿! 如果你的工作之一是从一个文档中提取源文本，并以多种格式交付它，那么 Pandoc 是必要的，所以你应该[下载我们的攻略](https://opensource.com/article/20/5/pandoc-cheat-sheet)看看。

广义上讲，Pandoc 代表的是一种完全不同的工作方式。它让你脱离了办公应用的束缚。它将你从试图将你的想法写成文字，并同时决定这些文字应该使用什么字体的工作中分离出来。在纯文本中工作，然后转换为各种交付格式，让你可以使用任何你想要的应用程序，无论是移动设备上的记事本，还是你碰巧坐在电脑前的简单文本编辑器，或者是云端的文本编辑器。

### 寻找替代品

Linux 有很多意想不到的替代品。你可以从你正在做的事情中退后一步，分析你的工作流程，评估你所需的结果，并调查那些声称可以完全你的需求的新应用程序来找到它们。

改变你所使用的工具、工作流程和日常工作可能会让你迷失方向，特别是当你不知道你要找的到底是什么的时候。但 Linux 的优势在于，你有机会重新评估你在多年的计算机使用过程中潜意识里形成的假设。如果你足够努力地寻找答案，你最终会意识到问题所在。通常，你最终会欣赏你学到的东西。

---

via: <https://opensource.com/article/21/2/linux-workday>

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

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


硬核观察 | “彩虹猫”被作为独一无二的加密艺术作品出售

Summary: 更多：• 微软将发布非订阅版的 Office 套装软件 • Google 开源语言模型 Switch Transformer，但不包括权值

![](/data/attachment/album/202102/19/155838mbzssp0srijr2p2r.jpg)

### “彩虹猫”被作为独一无二的加密艺术作品出售

![](/data/attachment/album/202102/19/155415vidv31g6t6lb199d.gif)

“<ruby> 彩虹猫 <rt>  Nyan Cat </rt></ruby>”今年已经 10 岁了，为了纪念这一时刻，创造“彩虹猫”的艺术家 Chris Torres 已经重新制作了原版动画，并通过加密艺术平台 Foundation 进行[拍卖](https://foundation.app/NyanCat/nyan-cat-219)。一旦这个重制版卖出，Torres 就不打算再提供“彩虹猫”的原画形象了。当前拍卖价格已达 2.5 万美金（13 ETH），拍卖时间还剩下不到半天。

经典的彩虹猫，以独一无二的形式出现在加密艺术品中，非常有纪念意义。

### 微软将发布非订阅版的 Office 套装软件

![](/data/attachment/album/202102/19/155444czoyfoe9h2m1de62.jpg)

微软将于今年晚些时候发布新的 Office 套装软件。微软[表示](https://www.cnet.com/news/new-version-of-microsoft-office-wont-require-you-to-pay-for-a-subscription/)，虽然它的主要重点仍然在其订阅产品 Microsoft 365 中，但它将为那些没有准备好转移到云端的人发布一次性买断的 Office 2021。新的 Office 2021 拥有 Windows 和 Mac 版本，微软将提供五年支持。而且，微软表示，这不会是最后一个买断版的 Office 套装软件。

曾几何时，软件都是一次性买断的，但是随着云服务大行其道，很多软件都改成了订阅制，需要按照使用费用不断付费。其中大型软件中 Microsoft 365/Office 365 就是一个代表。但是总有一些人不愿意使用云服务，也不喜欢订阅制。

我觉得，微软的这个做法很好，为不同的人群需求提供不同的产品和服务。

### Google 开源语言模型 Switch Transformer，但不包括权值

![](/data/attachment/album/202102/19/155535dggjj08z3t9gh10l.jpg)

Google 大脑的研究人员[开源](https://www.infoq.com/news/2021/02/google-trillion-parameter-ai/)了他们最新的 AI 语言模型 Switch Transformer。它包括 1.6 万亿个参数，相比上一代模型，在精度相似的情况下训练时间只要七分之一。但 Google 并没有开源预训练的权值，而权值对于语言模型是至关重要，因此这一开源被认为打了折扣。权值代表 AI 模型模拟的人脑神经元之间的连接强度，需要反复调整到输出结果与正确答案相同。

我觉得，打了折扣的开源也是开源，毕竟不能指望别人什么都给喂到嘴边吧。


为什么选择 Plausible 作为 Google Analytics 的开源替代品？

不错，又多了一种开源  Analytics

>
> Plausible 作为 Google Analytics 的可行、有效的替代方案正在引起用户的关注。
>
>
>

![](/data/attachment/album/202102/19/233627sb7mvtt7hn93lvvr.jpg "Analytics: Charts and Graphs")

替代 Google Analytics 似乎是一个巨大的挑战。实际上，你可以说这听起来似乎不合理（LCTT 译注：Plausible 意即“貌似合理”）。但这正是 [Plausible.io](https://plausible.io/) 取得巨大成功的原因，自 2018 年以来已注册了数千名新用户。

Plausible 的联合创始人 Uku Taht 和 Marko Saric 最近出现在 [The Craft of Open Source](https://www.flagsmith.com/podcast/02-plausible) 播客上，谈论了这个项目以及他们是如何:

* 创建了一个可行的替代 Google Analytics 的方案
* 在不到两年的时间里获得了如此大的发展势头
* 通过开源他们的项目实现其目标

请继续阅读他们与播客主持人和 Flagsmith 创始人 Ben Rometsch 的对话摘要。

### Plausible 是如何开始的

2018 年冬天，Uku 开始编写一个他认为急需的项目：一个可行的、有效的 Google Analytics 替代方案。因为他对 Google 产品的发展方向感到失望，而且所有其他数据解决方案似乎都把 Google 当作“数据处理中间人”。

Uku 的第一直觉是利用现有的数据库解决方案专注于分析方面的工作。马上，他就遇到了一些挑战。开始尝试使用了 PostgreSQL，这在技术上很幼稚，因为它很快就变得不堪重负，效率低下。因此，他的目标蜕变成了做一个分析产品，可以处理大量的数据点，而且性能不会有明显的下降。简而言之，Uku 成功了，Plausible 现在每月可以收取超过 8000 万条记录。

Plausible 的第一个版本于 2019 年夏天发布。2020 年 3 月，Marko 加入，负责项目的传播和营销方面的工作。从那时起，它它的受欢迎程度有了很大的增长。

### 为什么要开源？

Uku 热衷于遵循“独立黑客”的软件开发路线：创建一个产品，把它投放出去，然后看看它如何成长。开源在这方面是有意义的，因为你可以迅速发展一个社区并获得人气。

但 Plausible 一开始并不是开源的。Uku 最初担心软件的敏感代码，比如计费代码，但他很快就发布了，因为这对没有 API 令牌的人来说是没有用的。

现在，Plausible 是在 [AGPL](https://www.gnu.org/licenses/agpl-3.0.en.html) 下完全开源的，他们选择了 AGPL 而不是 MIT 许可。Uku 解释说，在 MIT 许可下，任何人都可以不受限制地对代码做任何事情。在 AGPL 下，如果有人修改代码，他们必须将他们的修改开源，并将代码回馈给社区。这意味着，大公司不能拿着原始代码在此基础上进行构建，然后获得所有的回报。他们必须共享，使得竞争环境更加公平。例如，如果一家公司想插入他们的计费或登录系统，他们有法律义务发布代码。

在播客中，Uku 向我询问了关于 Flagsmith 的授权，目前 Flagsmith 的授权采用 BSD 三句版许可，该许可证是高度开放的，但我即将把一些功能移到更严格的许可后面。到目前为止，Flagsmith 社区已经理解了这一变化，因为他们意识到这将带来更多更好的功能。

### Plausible vs. Google Analytics

Uku 说，在他看来，开源的精神是，代码应该是开放的，任何人都可以进行商业使用，并与社区共享，但你可以把一个闭源的 API 模块作为专有附加组件保留下来。这样一来，Plausible 和其他公司就可以通过创建和销售定制的 API 附加许可来满足不同的使用场景。

Marko 职位上是一名开发者，但从营销方面来说，他努力让这个项目在 Hacker News 和 Lobster 等网站上得到报道，并建立了 Twitter 帐户以帮助产生动力。这种宣传带来的热潮也意味着该项目在 GitHub 上起飞，从 500 颗星到 4300 颗星。随着流量的增长，Plausible 出现在 GitHub 的趋势列表中，这让其受欢迎程度像滚雪球一样。

Marko 还非常注重发布和推广博客文章。这一策略得到了回报，在最初的 6 个月里，有四五篇文章进入了病毒式传播，他利用这些峰值来放大营销信息，加速了增长。

Plausible 成长过程中最大的挑战是让人们从 Google Analytics 上转换过来。这个项目的主要目标是创建一个有用、高效、准确的网络分析产品。它还需要符合法规，并为企业和网站访问者提供高度的隐私。

Plausible 现在已经在 8000 多个网站上运行。通过与客户的交谈，Uku 估计其中约 90% 的客户运行过 Google Analytics。

Plausible 以标准的软件即服务 （SaaS） 订阅模式运行。为了让事情更公平，它按月页面浏览量收费，而不是按网站收费。对于季节性网站来说，这可能会有麻烦，比如说电子商务网站在节假日会激增，或者美国大选网站每四年激增一次。这些可能会导致月度订阅模式下的定价问题，但它通常对大多数网站很好。

### 查看播客

想要了解更多关于 Uku 和 Marko 如何以惊人的速度发展开源 Plausible 项目，并使其获得商业上的成功，请[收听播客](https://www.flagsmith.com/podcast/02-plausible)，并查看[其他剧集](https://www.flagsmith.com/podcast)，了解更多关于“开源软件社区的来龙去脉”。

---

via: <https://opensource.com/article/21/2/plausible>

作者：[Ben Rometsch](https://opensource.com/users/flagsmith) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


使用 LaTeX 和 TeXstudio 排版文档

![](/data/attachment/album/202102/20/094530itk2dim7yktyhh9y.jpg)

LaTeX 是一个服务于高质量排版的[文档准备系统](http://www.latex-project.org/about/)。通常用于大量的技术和科学文档的排版。不过，你也可以使用 LaTex 排版各种形式的文档。教师可以编辑他们的考试和教学大纲，学生可以展示他们的论文和报告。这篇文章让你尝试使用 TeXstudio。TeXstudio 是一个便于编辑 LaTeX 文档的软件。

### 启动 TeXstudio

如果你使用的是 Fedora Workstation，请启动软件管理，然后输入 TeXstudio 以搜索该应用程序。然后选择安装并添加 TeXstudio 到你的系统。你可以从软件管理中启动这个程序，或者像以往一样在概览中启动这个软件。

或者，如果你使用终端，请输入 `texstudio`。如果未安装该软件包，系统将提示你安装它。键入 `y` 开始安装。

```
$ texstudio
bash: texstudio: command not found...
Install package 'texstudio' to provide command 'texstudio'? [N/y] y

```

### 你的第一份文档

LaTeX 命令通常以反斜杠 `\` 开头，命令参数用大括号 `{}` 括起来。首先声明 `documentclass` 的类型。这个例子向你展示了该文档的类是一篇文章。

然后，在声明 `documentclass` 之后，用 `begin` 和 `end` 标记文档的开始和结束。在这些命令之间，写一段类似以下的内容：

```
\documentclass{article}
\begin{document}
The Fedora Project is a project sponsored by Red Hat primarily to co-ordinate the development of the Linux-based Fedora operating system, operating with the vision that the project "creates a world where free culture is welcoming and widespread, collaboration is commonplace, and people control their content and devices". The Fedora Project was founded on 22 September 2003 when Red Hat decided to split Red Hat Linux into Red Hat Enterprise Linux (RHEL) and a community-based operating system, Fedora.
\end{document}

```

![](/data/attachment/album/202102/20/094530pmsifrnmssjsigzz.png)

### 使用间距

要创建段落分隔符，请在文本之间保留一个或多个换行符。下面是一个包含四个段落的示例：

![](/data/attachment/album/202102/20/094531g3hfhbpyzg6ggybb.png)

从该示例中可以看出，多个换行符不会在段落之间创建额外的空格。但是，如果你确实需要留出额外的空间，请使用 `hspace` 和 `vspace` 命令。这两个命令分别添加水平和垂直空间。下面是一些示例代码，显示了段落周围的附加间距：

```
\documentclass{article}
\begin{document}

\hspace{2.5cm} The four essential freedoms

\vspace{0.6cm}
A program is free software if the program's users have the 4 essential freedoms:

The freedom to run the program as you wish, for any purpose (freedom 0).\vspace{0.2cm}
The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.\vspace{0.2cm}

The freedom to redistribute copies so you can help your neighbour (freedom 2).\vspace{0.2cm}

The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

\end{document}

```

如果需要，你也可以使用 `noindent` 命令来避免缩进。这里是上面 LaTeX 源码的结果：

![](/data/attachment/album/202102/20/094533wbp84btnha08st60.png)

### 使用列表和格式

如果把自由软件的四大基本自由列为一个清单，这个例子看起来会更好。通过在列表的开头使用`\begin{itemize}`，在末尾使用 `\end{itemize}` 来设置列表结构。在每个项目前面加上 `\item` 命令。

额外的格式也有助于使文本更具可读性。用于格式化的有用命令包括粗体、斜体、下划线、超大、大、小和 textsc 以帮助强调文本：

```
\documentclass{article}
\begin{document}

\hspace{2cm} {\huge The four essential freedoms}

\vspace{0.6cm}
\noindent {\large A program is free software if the program's users have the 4 essential freedoms}:
\begin{itemize}
\item \vspace{0.2cm}
\noindent \textbf{The freedom to run} the program as you wish, for any purpose \textit{(freedom 0)}. \vspace{0.2cm}
\item \noindent \textbf{The freedom to study} how the program works, and change it so it does your computing as you wish \textit{(freedom 1)}. Access to the source code is a precondition for this.\vspace{0.2cm}

\item \noindent \textbf{The freedom to redistribute} copies so you can help your neighbour \textit{(freedom 2)}.\vspace{0.2cm}

\item \noindent \textbf{The freedom to distribute copies of your modified versions} to others \textit{(freedom 3)}. \tiny{By doing this you can give the whole community a chance to benefit from your changes.\underline{\textsc{ Access to the source code is a precondition for this.}}}
\end{itemize}
\end{document}

```

![](/data/attachment/album/202102/20/094534d4t0s5q504tkj4i6.png)

### 添加列、图像和链接

列、图像和链接有助于为文本添加更多信息。LaTeX 包含一些高级功能的函数作为宏包。`\usepackage` 命令加载宏包以便你可以使用这些功能。

例如，要使用图像，可以使用命令 `\usepackage{graphicx}`。或者，要设置列和链接，请分别使用 `\usepackage{multicol}` 和 `\usepackage{hyperref}`。

`\includegraphics` 命令将图像内联放置在文档中。（为简单起见，请将图形文件包含在与 LaTeX 源文件相同的目录中。）

下面是一个使用所有这些概念的示例。它还使用下载的两个 PNG 图片。试试你自己的图片，看看它们是如何工作的。

```
\documentclass{article}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{hyperref}
\begin{document}
 \textbf{GNU}
 \vspace{1cm}

 GNU is a recursive acronym for "GNU's Not Unix!", chosen because GNU's design is Unix-like, but differs from Unix by being free software and containing no Unix code.

 Richard Stallman, the founder of the project, views GNU as a "technical means to a social end". Stallman has written about "the social aspects of software and how Free Software can create community and social justice." in his "Free Society" book.
 \vspace{1cm}

 \textbf{Some Projects}

 \begin{multicols}{2}
 Fedora
 \url{https://getfedora.org}
 \includegraphics[width=1cm]{fedora.png}

 GNOME
 \url{https://getfedora.org}
 \includegraphics[width=1cm]{gnome.png}
 \end{multicols}

\end{document}

```

![](/data/attachment/album/202102/20/094535j3bhb9s3js3vo3b3.png)

这里的功能只触及 LaTeX 功能的表面。你可以在该项目的[帮助和文档站点](https://www.latex-project.org/help/)了解更多关于它们的信息。

---

via: <https://fedoramagazine.org/typeset-latex-texstudio-fedora/>

作者：[Julita Inca Chiroque](https://fedoramagazine.org/author/yulytas/) 选题：[Chao-zhi](https://github.com/Chao-zhi) 译者：[Chao-zhi](https://github.com/Chao-zhi) 校对：[wxy](https://github.com/wxy)

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


用 ranger 在 Linux 文件的海洋中导航

初步体验不错，类似于 OSX 默认文件管理器的分栏视图

>
> ranger 是一个很好的工具，它为你的 Linux 文件提供了一个多级视图，并允许你使用方向键和一些方便的命令进行浏览和更改。
>
>
>

![](/data/attachment/album/202102/20/121918g5hqhjfcjyffh3lt.jpg)

`ranger` 是一款独特且非常方便的文件系统导航器，它允许你在 Linux 文件系统中移动，进出子目录，查看文本文件内容，甚至可以在不离开该工具的情况下对文件进行修改。

它运行在终端窗口中，并允许你按下方向键进行导航。它提供了一个多级的文件显示，让你很容易看到你在哪里、在文件系统中移动、并选择特定的文件。

要安装 `ranger`，请使用标准的安装命令（例如，`sudo apt install ranger`）。要启动它，只需键入 `ranger`。它有一个很长的、非常详细的手册页面，但开始使用 `ranger` 非常简单。

### ranger 的显示方式

你需要马上习惯的最重要的一件事就是 `ranger` 的文件显示方式。一旦你启动了 `ranger`，你会看到四列数据。第一列是你启动 `ranger` 的位置的上一级。例如，如果你从主目录开始，`ranger` 将在第一列中列出所有的主目录。第二列将显示你的主目录（或者你开始的目录）中的目录和文件的第一屏内容。

这里的关键是超越你可能有的任何习惯，将每一行显示的细节看作是相关的。第二列中的所有条目与第一列中的单个条目相关，第四列中的内容与第二列中选定的文件或目录相关。

与一般的命令行视图不同的是，目录将被列在第一位（按字母数字顺序），文件将被列在第二位（也是按字母数字顺序）。从你的主目录开始，显示的内容可能是这样的：

```
shs@dragonfly /home/shs/backups     <== current selection
 bugfarm   backups            0  empty
 dory      bin               59
 eel       Buttons           15
 nemo      Desktop            0
 shark     Documents          0
 shs       Downloads          1
   ^         ^                ^      ^
   |         |                |      |
 homes     directories    # files    listing
           in selected    in each    of files in
           home           directory  selected directory

```

`ranger` 显示的最上面一行告诉你在哪里。在这个例子中，当前目录是 `/home/shs/backups`。我们看到高亮显示的是 `empty`，因为这个目录中没有文件。如果我们按下方向键选择 `bin`，我们会看到一个文件列表：

```
shs@dragonfly /home/shs/bin      <== current selection
 bugfarm   backups            0    append
 dory      bin               59    calcPower
 eel       Buttons           15    cap
 nemo      Desktop            0    extract
 shark     Documents          0    finddups
 shs       Downloads          1    fix
   ^         ^                ^      ^
   |         |                |      |
 homes     directories    # files    listing
           in selected    in each    of files in
           home           directory  selected directory

```

每一列中高亮显示的条目显示了当前的选择。使用右方向键可移动到更深的目录或查看文件内容。

如果你继续按下方向键移动到列表的文件部分，你会注意到第三列将显示文件大小（而不是文件的数量）。“当前选择”行也会显示当前选择的文件名，而最右边的一列则会尽可能地显示文件内容。

```
shs@dragonfly /home/shs/busy_wait.c   <== current selection
 bugfarm   BushyRidge.zip    170 K  /*
 dory      busy_wait.c       338 B   * program that does a busy wait
 eel       camper.jpg       5.55 M   * it's used to show ASLR, and that's it
 nemo      check_lockscreen   80 B   */
 shark     chkrootkit-output 438 B  #include <stdio.h>
   ^         ^                ^       ^
   |         |                |       |
 homes     files            sizes    file content

```

在该显示的底行会显示一些文件和目录的详细信息：

```
-rw-rw-r—- shs shs 338B 2019-01-05 14:44    1.52G, 365G free  67/488  11%

```

如果你选择了一个目录并按下回车键，你将进入该目录。然后，在你的显示屏中最左边的一列将是你的主目录的内容列表，第二列将是该目录内容的文件列表。然后你可以检查子目录的内容和文件的内容。

按左方向键可以向上移动一级。

按 `q` 键退出 `ranger`。

### 做出改变

你可以按 `?` 键，在屏幕底部弹出一条帮助行。它看起来应该是这样的：

```
View [m]an page, [k]ey bindings, [c]commands or [s]ettings?  (press q to abort)

```

按 `c` 键，`ranger` 将提供你可以在该工具内使用的命令信息。例如，你可以通过输入 `:chmod` 来改变当前文件的权限，后面跟着预期的权限。例如，一旦选择了一个文件，你可以输入 `:chmod 700` 将权限设置为 `rwx------`。

输入 `:edit` 可以在 `nano` 中打开该文件，允许你进行修改，然后使用 `nano` 的命令保存文件。

### 总结

使用 `ranger` 的方法比本篇文章所描述的更多。该工具提供了一种非常不同的方式来列出 Linux 系统上的文件并与之交互，一旦你习惯了它的多级的目录和文件列表方式，并使用方向键代替 `cd` 命令来移动，就可以很轻松地在 Linux 的文件中导航。

---

via: <https://www.networkworld.com/article/3583890/navigating-your-linux-files-with-ranger.html>

作者：[Sandra Henry-Stocker](https://www.networkworld.com/author/Sandra-Henry_Stocker/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

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


硬核观察 | 英伟达将通过驱动限制消费级显卡“挖矿”并推出专用矿卡

Summary: 更多：• 比特币突破 55000 美元新高，总市值突破 1 万亿美元 • 由 Linux 和开源软件驱动的无人直升机将在火星上飞行

![](/data/attachment/album/202102/20/141432si62rmi82fzkme2k.jpg)

### 英伟达将通过驱动限制消费级显卡“挖矿”并推出专用矿卡

![](/data/attachment/album/202102/20/141451wshixhhsi1ii1lla.jpg)

英伟达[官方博客说](https://blogs.nvidia.com/blog/2021/02/18/geforce-cmp/)，RTX 3060 显卡的驱动将会检测以太坊挖矿算法，并通过限制哈希率的方式将挖矿效能减半，以确保 GeForce GPU 最终落到游戏玩家手中。而另一方面，将要推出的 CMP 产品线会砍掉视频输出、改良散热设计、降低核心电压，以更好适应挖矿场景需求。另外他们表示，不会限制已经销售的 GPU 的性能。

好好的新显卡用来挖矿不好么？这才是挣钱的事情 —— 开个玩笑，其实英伟达是担心加密矿商的需求不稳定，近来爆发的加密挖矿热情会对其产能造成波动影响，所以做了产品分流。

### 比特币突破 55000 美元新高，总市值突破 1 万亿美元

![](/data/attachment/album/202102/20/141513k2642xtyrpip6ni8.jpg)

[比特币价格](https://finance.yahoo.com/chart/BTC-USD)在周五接连突破 53000、54000、55000 美元关口，24 小时涨约 3500 美元，其市值史上首次达到 1 万亿美元，仅在 2021 年其价值增长就超过了 4150 亿美元。而全世界所有流通货币的总价值约为 95 万亿美元。

据说，有人已经下车去买房了。我觉得，过于非理性的市场膨胀，对于加密货币也罢，区块链也罢，都过犹不及。

### 由 Linux 和开源软件驱动的无人直升机将在火星上飞行

![](/data/attachment/album/202102/20/141530rr0jus0zxv70pri9.jpg)

NASA 的毅力号火星车带有一架能够在火星上不足地球的 1% 的稀薄大气环境中使用的无人机：机巧号。如果一切顺利，它将成为有史以来第一架在另一个世界飞行的飞行器。机巧号结合使用了 Linux 和美国宇航局基于喷气推进实验室的开源 F´ 框架构建的程序。这也是 Linux 操作系统首次在火星上使用。事实上，机巧号纯粹是一个[技术示范](https://mars.nasa.gov/technology/helicopter/)。它并不是为了支持毅力号火星车的任务，它的任务是要表明，利用现成的商用硬件和开源软件，在火星上飞行是可能的。

这是开源的一大胜利，你现在也可以用 Linux 和开源框架搭建你的火星车和无人机了。


Viper 浏览器：一款注重隐私和简约的轻量级 Qt5 浏览器

我要硬件解码QAQ<br />
笔记本带不动软件解码鸭

>
> Viper 浏览器是一个基于 Qt 的浏览器，它提供了简单易用的用户体验，同时考虑到隐私问题。
>
>
>

![](/data/attachment/album/202102/21/110148d7r3hlurczc1ci73.jpg)

虽然大多数流行的浏览器都运行在 Chromium 之上，但像 [Firefox](https://www.mozilla.org/en-US/firefox/new/)、[Beaker 浏览器](https://itsfoss.com/beaker-browser-1-release/)以及其他一些 [chrome 替代品](https://itsfoss.com/open-source-browsers-linux/)这样独特的替代品不应该停止存在。

尤其是考虑到谷歌最近可能想到从 Chromium 中剥离[谷歌浏览器特有的功能](https://www.bleepingcomputer.com/news/google/google-to-kill-chrome-sync-feature-in-third-party-browsers/)，并给出了滥用的借口。

在寻找更多的 Chrome 替代品时，我在 [Mastodon](https://mastodon.social/web/accounts/199851) 上看到了一个有趣的项目 “[Viper 浏览器](https://github.com/LeFroid/Viper-Browser)”。

### Viper 浏览器：一个基于 Qt5 的开源浏览器

**注意**：Viper 浏览器是一个只有几个贡献者的相当新的项目。它缺乏某些功能，我将在下文提及。

Viper 是一款有趣的 Web 浏览器，在利用 [QtWebEngine](https://wiki.qt.io/QtWebEngine) 的同时，它专注于成为一个强大而又轻巧的选择。

QtWebEngine 借用了 Chromium 的代码，但它不包括连接到 Google 平台的二进制文件和服务。

我花了一些时间使用它并进行一些日常浏览活动，我必须说，我对它相当感兴趣。不仅仅是因为它是一个简单易用的东西（浏览器可以那么复杂），而且它还专注于增强你的隐私，为你提供添加不同的广告阻止选项以及一些有用的选项。

![](/data/attachment/album/202102/21/110235nh9jsyqkkfdv87wv.jpg)

虽然我认为它并不是为所有人准备的，但还是值得一看的。在你继续尝试之前，让我简单介绍一下它的功能。

### Viper 浏览器的功能

![](/data/attachment/album/202102/21/110235rvn252c8f38ff5fb.jpg)

我将列出一些你会发现有用的关键功能：

* 管理 cookies 的能力
* 多个预设选项以选择不同的广告屏蔽器网络。
* 简单且易于使用
* 隐私友好的默认搜索引擎 - [Startpage](https://www.startpage.com) （你可以更改）
* 能够添加用户脚本
* 能够添加新的 user-agent
* 禁用 JavaScript 的选项
* 能够阻止图像加载

除了这些亮点之外，你还可以轻松地调整隐私设置，以删除你的历史记录、清理已有 cookies，以及一些更多的选项。

![](/data/attachment/album/202102/21/110237h1c7texo6zto9shl.jpg)

### 在 Linux 上安装 Viper 浏览器

它只是在[发布页](https://github.com/LeFroid/Viper-Browser/releases)提供了一个 AppImage 文件，你可以利用它在任何 Linux 发行版上进行测试。

如果你需要帮助，你也可以参考我们的[在 Linux 上使用 AppImage 文件](https://itsfoss.com/use-appimage-linux/)指南。如果你好奇，你可以在 [GitHub](https://github.com/LeFroid/Viper-Browser) 上探索更多关于它的内容。

* [Viper 浏览器](https://github.com/LeFroid/Viper-Browser)

### 我对使用 Viper 浏览器的看法

我不认为这是一个可以立即取代你当前浏览器的东西，但如果你有兴趣测试尝试提供 Chrome 替代品的新项目，这肯定是其中之一。

当我试图登录我的谷歌账户时，它阻止了我，说它可能是一个不安全的浏览器或不支持的浏览器。因此，如果你依赖你的谷歌帐户，这是一个令人失望的消息。

但是，其他社交媒体平台也可以与 YouTube 一起正常运行（无需登录）。不支持 Netflix，但总体上浏览体验是相当快速和可用的。

你可以安装用户脚本，但 Chrome 扩展还不支持。当然，这要么是有意为之，要么是在开发过程中特别考虑到它是一款隐私友好型的网络浏览器。

### 总结

考虑到这是一个鲜为人知但对某些人来说很有趣的东西，你对我们有什么建议吗？ 是一个值得关注的开源项目么？

请在下面的评论中告诉我。

---

via: <https://itsfoss.com/viper-browser/>

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

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


JavaScript 闭包实践

现在基本用let和const代替var了...

>
> 通过深入了解 JavaScript 的高级概念之一：闭包，更好地理解 JavaScript 代码的工作和执行方式。
>
>
>

![](/data/attachment/album/202102/21/162941ogyb74z3ahfbfe35.jpg "Woman programming")

在《[JavaScript 如此受欢迎的 4 个原因](/article-12830-1.html)》中，我提到了一些高级 JavaScript 概念。在本文中，我将深入探讨其中的一个概念：<ruby> 闭包 <rt>  closure </rt></ruby>。

根据 [Mozilla 开发者网络](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures)（MDN），“闭包是将一个函数和对其周围的状态（词法环境）的引用捆绑在一起（封闭）的组合。”简而言之，这意味着在一个函数内部的函数可以访问其外部（父）函数的变量。

为了更好地理解闭包，可以看看作用域及其执行上下文。

下面是一个简单的代码片段：

```
var hello = "Hello";

function sayHelloWorld() {
    var world = "World";
    function wish() {
        var year = "2021";
        console.log(hello + " " + world + " "+ year);
    }
    wish();
}
sayHelloWorld();

```

下面是这段代码的执行上下文：

![JS 代码的执行上下文](/data/attachment/album/202102/21/163151d6tma7k3pp2lgz43.png "Execution context for JS code")

每次创建函数时（在函数创建阶段）都会创建闭包。每个闭包有三个作用域。

* 本地作用域（自己的作用域）
* 外部函数范围
* 全局范围

我稍微修改一下上面的代码来演示一下闭包：

```
var hello = "Hello";

var sayHelloWorld = function() {
    var world = "World";
    function wish() {
        var year = "2021";
        console.log(hello + " " + world + " "+ year);
    }
    return wish;
}
var callFunc = sayHelloWorld();
callFunc();

```

内部函数 `wish()` 在执行之前就从外部函数返回。这是因为 JavaScript 中的函数形成了**闭包**。

* 当 `sayHelloWorld` 运行时，`callFunc` 持有对函数 `wish` 的引用。
* `wish` 保持对其周围（词法）环境的引用，其中存在变量 `world`。

### 私有变量和方法

本身，JavaScript 不支持创建私有变量和方法。闭包的一个常见和实用的用途是模拟私有变量和方法，并允许数据隐私。在闭包范围内定义的方法是有特权的。

这个代码片段捕捉了 JavaScript 中闭包的常用编写和使用方式：

```
var resourceRecord = function(myName, myAddress) {
    var resourceName = myName;
    var resourceAddress = myAddress;
    var accessRight = "HR";
    return {
        changeName: function(updateName, privilege) {
            // only HR can change the name
            if (privilege === accessRight ) {
                resourceName = updateName;
                return true;
            } else {
                return false;
            }
        },
        changeAddress: function(newAddress) {
            // any associate can change the address
            resourceAddress = newAddress;
        },
        showResourceDetail: function() {
            console.log ("Name:" + resourceName + " ; Address:" + resourceAddress);
        }
    }
}
// Create first record
var resourceRecord1 = resourceRecord("Perry","Office");
// Create second record
var resourceRecord2 = resourceRecord("Emma","Office");
// Change the address on the first record
resourceRecord1.changeAddress("Home");
resourceRecord1.changeName("Perry Berry", "Associate"); // Output is false as only an HR can change the name
resourceRecord2.changeName("Emma Freeman", "HR"); // Output is true as HR changes the name
resourceRecord1.showResourceDetail(); // Output - Name:Perry ; Address:Home
resourceRecord2.showResourceDetail(); // Output - Name:Emma Freeman ; Address:Office

```

资源记录（`resourceRecord1` 和 `resourceRecord2`）相互独立。每个闭包通过自己的闭包引用不同版本的 `resourceName` 和 `resourceAddress` 变量。你也可以应用特定的规则来处理私有变量，我添加了一个谁可以修改 `resourceName` 的检查。

### 使用闭包

理解闭包是很重要的，因为它可以更深入地了解变量和函数之间的关系，以及 JavaScript 代码如何工作和执行。

---

via: <https://opensource.com/article/21/2/javascript-closures>

作者：[Nimisha Mukherjee](https://opensource.com/users/nimisha) 选题：[lujun9972](https://github.com/lujun9972) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

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


硬核观察 | 火星车上的 CPU 速度和你淘汰的树莓派差不多

Summary: 更多：• 开发者称 Chrome 比 Safari 多用 10 倍内存 • Linux 桌面用户安全意识方面落后

高通801是小米4，我的第一个小米手机。

Ubuntu LTS版本的重要性就显现出来了，5年支持，对于不爱折腾的用户非常友好

好奇怪呀，chrome 吃 10 倍于 safari 的内存，感觉有点太夸张了，当然不是说这里的说的不对，毕竟原博客这么说的。

这种情况感觉更有可能是极限情况下的特殊标签页，或者触发了一些未知的 bug 之类的，现代浏览器内核之间的差距要真能这么大，咱是不太敢相信的

然而safari也要有插件可用吧？即便要换别的safari也永远排不上号.论小巧的浏览器minbrowser难道不香吗？需要chrome替代品又有插件用,又有脚本用,又跨平台,又有账户数据同步,又不占内存vivaldi难道不香码？

debian等长期支持的版本就很不错！

500hz ?这也太夸张了，感觉这里面的代码不会用到图像识别

来自广东深圳的 Chrome Mobile 57.0|Android 10 用户

500hz ?这也太夸张了，感觉这里面的代码不会用到图像识别

可有新闻又说到有图像识别，按照正常识别算法光是多层数据卷积 兆赫兹 mhz  也挺有压力的，不是实时的好像也不太可能，听新闻说存储空间都挺小的

是时候把我的chrome换成chromium的edge 【滑稽】

mint 20.1，没办法只有新版本支持新ryzen cpu

![](/data/attachment/album/202102/21/201654updmm1md852mefyy.jpg)

### 火星车上的 CPU 速度和你淘汰的树莓派差不多

![](/data/attachment/album/202102/21/201705jtgin7vpufigfn2c.jpg)

这次毅力号火星车上搭载的机巧号无人直升飞机作为演示项目，其所使用的 CPU 是技术人员有意从网上采购的商业成品硬件：高通骁龙 801，运行频率为 500Hz，对，你没看错，不是 500MHz —— 这是小米 3 所使用的 CPU，甚至其运行频率还专门调整到极低。

不过，这也比火星车上的 CPU 更快。NASA 最新的通用处理器是 [ARM A53](https://developer.arm.com/ip-products/processors/cortex-a/cortex-a53) 变体，和树莓派 3 的 CPU 同属 A53 系列。也就是说，耗资 27 亿美元的火星车上的 CPU 的速度不会比你的淘汰的树莓派更快了。这是因为 NASA 级别的 CPU 和芯片必须满足 NASA 的高性能太空飞行计算辐射标准。这些定制化的处理器需要经过多年的设计工作和测试，才能获得太空飞行的认证。

看看自己的手机，顿时感觉高大上多了，比火星车都厉害。

### 开发者称 Chrome 比 Safari 多用 10 倍内存

![](/data/attachment/album/202102/21/201720jhsuxvzzti1v88sv.jpg)

开发者在 macOS Big Sur 上进行了[测试](https://www.imore.com/chrome-uses-10x-more-ram-safari-macos)。在打开两个标签页时，Chrome 的内存使用量达到了 1GB，而 Safari 只用了 80MB。而在打开 54 个标签页的情况下，与 Safari 相比，谷歌 Chrome 每个标签页的内存使用量多了 24 倍。测试时，这两款浏览器都没有安装任何扩展。根据他的调查，Chrome 浏览器每个打开的标签页使用了 290MB 的内存，而 Safari 浏览器每个打开的标签页只使用了 12MB。

Chrome 的吃内存问题其实由来已久，不过现在有点变本加厉，我觉得是时候看看换个浏览器了。

### Linux 桌面用户安全意识方面落后

![](/data/attachment/album/202102/21/201733dro9rydwzejjkgw2.jpg)

最近，Linux Mint 发布了一篇[公告](https://blog.linuxmint.com/?p=4030)督促用户更新其 Linux 系统。据它的服务器端统计表明，大约只有 30% 的用户在一周内内应用了更新。而甚至约有 5% 到 30% 的用户仍在运行 Linux Mint 17，而它早在 2019 年 4 月就已经结束支持。当然，之所以有很多用户停留在 Linux Mint 17，有部分原因是因为现在有机制告诉用户什么时候有新版本可用，但在 Linux Mint 17.x 的时候还没有这些机制。

就我了解到的情况，不只是 Linux Mint，很多 Linux 桌面用户都不太积极更新自己的计算机。可见在安全意识方面，Linux 桌面用户也并不比 Windows 用户高多少。


Ansible 自动化工具安装、配置和快速入门指南

![](/data/attachment/album/202102/22/124803cgryrgxqezjllfqg.jpg)

市面上有很多自动化工具。我可以举几个例子，例如 Puppet、Chef、CFEngine、Foreman、Katello、Saltstock、Space Walk，它们被许多组织广泛使用。

### 自动化工具可以做什么？

自动化工具可以自动执行例行任务，无需人工干预，从而使 Linux 管理员的工作变得更加轻松。这些工具允许用户执行配置管理，应用程序部署和资源调配。

### 为什么喜欢 Ansible？

Ansible 是一种无代理的自动化工具，使用 SSH 执行所有任务，但其它工具需要在客户端节点上安装代理。

### 什么是 Ansible？

Ansible 是一个开源、易于使用的功能强大的 IT 自动化工具，通过 SSH 在客户端节点上执行任务。

它是用 Python 构建的，这是当今世界上最流行、最强大的编程语言之一。两端都需要使用 Python 才能执行所有模块。

它可以配置系统、部署软件和安排高级 IT 任务，例如连续部署或零停机滚动更新。你可以通过 Ansible 轻松执行任何类型的自动化任务，包括简单和复杂的任务。

在开始之前，你需要了解一些 Ansible 术语，这些术语可以帮助你更好的创建任务。

### Ansible 如何工作？

Ansible 通过在客户端节点上推送称为 ansible 模块的小程序来工作，这些模块临时存储在客户端节点中，通过 JSON 协议与 Ansible 服务器进行通信。

Ansible 通过 SSH 运行这些模块，并在完成后将其删除。

模块是用 Python 或 Perl 等编写的一些脚本。

![](/data/attachment/album/202102/22/124822meej9lngyylly290.png)

*控制节点，用于控制剧本的全部功能，包括客户端节点（主机）。*

* <ruby> 控制节点 <rt>  Control node </rt></ruby>：使用 Ansible 在受控节点上执行任务的主机。你可以有多个控制节点，但不能使用 Windows 系统主机当作控制节点。
* <ruby> 受控节点 <rt>  Managed node </rt></ruby>：控制节点配置的主机列表。
* <ruby> 清单 <rt>  Inventory </rt></ruby>：控制节点管理的一个主机列表，这些节点在 `/etc/ansible/hosts` 文件中配置。它包含每个节点的信息，比如 IP 地址或其主机名，还可以根据需要对这些节点进行分组。
* <ruby> 模块 <rt>  Module </rt></ruby>：每个模块用于执行特定任务，目前有 3387 个模块。
* <ruby> 点对点 <rt>  ad-hoc </rt></ruby>：它允许你一次性运行一个任务，它使用 `/usr/bin/ansible` 二进制文件。
* <ruby> 任务 <rt>  Task </rt></ruby>：每个<ruby> 动作 <rt>  Play </rt></ruby>都有一个任务列表。任务按顺序执行，在受控节点中一次执行一个任务。
* <ruby> 剧本 <rt>  Playbook </rt></ruby>：你可以使用剧本同时执行多个任务，而使用点对点只能执行一个任务。剧本使用 YAML 编写，易于阅读。将来，我们将会写一篇有关剧本的文章，你可以用它来执行复杂的任务。

### 测试环境

此环境包含一个控制节点（`server.2g.lab`）和三个受控节点（`node1.2g.lab`、`node2.2g.lab`、`node3.2g.lab`），它们均在虚拟环境中运行，操作系统分别为：

| System Purpose | Hostname | IP Address | OS |
| --- | --- | --- | --- |
| Ansible Control Node | server.2g.lab | 192.168.1.7 | Manjaro 18 |
| Managed Node1 | node1.2g.lab | 192.168.1.6 | CentOS7 |
| Managed Node2 | node2.2g.lab | 192.168.1.5 | CentOS8 |
| Managed Node3 | node3.2g.lab | 192.168.1.9 | Ubuntu 18.04 |
| User: daygeek |  |  |  |

### 前置条件

* 在 Ansible 控制节点和受控节点之间启用无密码身份验证。
* 控制节点必须是 Python 2（2.7 版本） 或 Python 3（3.5 或更高版本）。
* 受控节点必须是 Python 2（2.6 或更高版本） 或 Python 3（3.5 或更高版本）。
* 如果在远程节点上启用了 SELinux，则在 Ansible 中使用任何与复制、文件、模板相关的功能之前，还需要在它们上安装 `libselinux-python`。

### 如何在控制节点上安装 Ansible

对于 Fedora/RHEL 8/CentOS 8 系统，使用 [DNF 命令](https://www.2daygeek.com/linux-dnf-command-examples-manage-packages-fedora-centos-rhel-systems/) 来安装 Ansible。

注意：你需要在 RHEL/CentOS 系统上启用 [EPEL 仓库](https://www.2daygeek.com/install-enable-epel-repository-on-rhel-centos-oracle-linux/)，因为 Ansible 软件包在发行版官方仓库中不可用。

```
$ sudo dnf install ansible

```

对于 Debian/Ubuntu 系统，使用 [APT-GET 命令](https://www.2daygeek.com/apt-get-apt-cache-command-examples-manage-packages-debian-ubuntu-systems/) 或 [APT 命令](https://www.2daygeek.com/apt-command-examples-manage-packages-debian-ubuntu-systems/) 来安装 Ansible。

配置下面的 PPA 以便在 Ubuntu 上安装最新稳定版本的 Ansible。

```
$ sudo apt update
$ sudo apt install software-properties-common
$ sudo apt-add-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible

```

对于 Debian 系统，配置以下源列表：

```
$ echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" | sudo tee -a /etc/apt/sources.list.d/ansible.list
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
$ sudo apt update
$ sudo apt install ansible

```

对于 Arch Linux 系统，使用 [Pacman 命令](https://www.2daygeek.com/pacman-command-examples-manage-packages-arch-linux-system/) 来安装 Ansible：

```
$ sudo pacman -S ansible

```

对于 RHEL/CentOS 系统，使用 [YUM 命令](https://www.2daygeek.com/yum-command-examples-manage-packages-rhel-centos-systems/) 来安装 Ansible：

```
$ sudo yum install ansible

```

对于 openSUSE 系统，使用 [Zypper 命令](https://www.2daygeek.com/zypper-command-examples-manage-packages-opensuse-system/) 来安装 Ansible：

```
$ sudo zypper install ansible

```

或者，你可以使用 [Python PIP 包管理工具](https://www.2daygeek.com/install-pip-manage-python-packages-linux/) 来安装：

```
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ sudo python get-pip.py
$ sudo pip install ansible

```

在控制节点上检查安装的 Ansible 版本：

```
$ ansible --version

ansible 2.9.2
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/daygeek/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.1 (default, Jan  8 2020, 23:09:20) [GCC 9.2.0]

```

### 如何在受控节点上安装 Python？

使用以下命令在受控节点上安装 python：

```
$ sudo yum install -y python
$ sudo dnf install -y python
$ sudo zypper install -y python
$ sudo pacman -S python
$ sudo apt install -y python

```

### 如何在 Linux 设置 SSH 密钥身份验证（无密码身份验证）

使用以下命令创建 ssh 密钥，然后将其复制到远程计算机。

```
$ ssh-keygen
$ ssh-copy-id daygeek@node1.2g.lab
$ ssh-copy-id daygeek@node2.2g.lab
$ ssh-copy-id daygeek@node3.2g.lab

```

具体参考这篇文章《[在 Linux 上设置 SSH 密钥身份验证（无密码身份验证）](https://www.2daygeek.com/configure-setup-passwordless-ssh-key-based-authentication-linux/)》。

### 如何创建 Ansible 主机清单

在 `/etc/ansible/hosts` 文件中添加要管理的节点列表。如果没有该文件，则可以创建一个新文件。以下是我的测试环境的主机清单文件：

```
$ sudo vi /etc/ansible/hosts

[web]
node1.2g.lab
node2.2g.lab

[app]
node3.2g.lab

```

让我们看看是否可以使用以下命令查找所有主机。

```
$ ansible all --list-hosts

 hosts (3):
   node1.2g.lab
   node2.2g.lab
   node3.2g.lab

```

对单个组运行以下命令：

```
$ ansible web --list-hosts

 hosts (2):
   node1.2g.lab
   node2.2g.lab

```

### 如何使用点对点命令执行任务

一旦完成主机清单验证检查后，你就可以上路了。干的漂亮！

**语法：**

```
ansible [pattern] -m [module] -a "[module options]"

Details:
========
ansible: A command
pattern: Enter the entire inventory or a specific group
-m [module]: Run the given module name
-a [module options]: Specify the module arguments

```

使用 Ping 模块对主机清单中的所有节点执行 ping 操作：

```
$ ansible all -m ping

node3.2g.lab | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
node1.2g.lab | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
node2.2g.lab | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}

```

所有系统都返回了成功，但什么都没有改变，只返回了 `pong` 代表成功。

你可以使用以下命令获取可用模块的列表。

```
$ ansible-doc -l

```

当前有 3387 个内置模块，它们会随着 Ansible 版本的递增而增加：

```
$ ansible-doc -l | wc -l
3387

```

使用 command 模块对主机清单中的所有节点执行命令：

```
$ ansible all -m command -a "uptime"

node3.2g.lab | CHANGED | rc=0 >>
 18:05:07 up  1:21,  3 users,  load average: 0.12, 0.06, 0.01
node1.2g.lab | CHANGED | rc=0 >>
 06:35:06 up  1:21,  4 users,  load average: 0.01, 0.03, 0.05
node2.2g.lab | CHANGED | rc=0 >>
 18:05:07 up  1:25,  3 users,  load average: 0.01, 0.01, 0.00

```

对指定组执行 command 模块。

检查 app 组主机的内存使用情况：

```
$ ansible app -m command -a "free -m"

node3.2g.lab | CHANGED | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:           1993        1065          91           6         836         748
Swap:          1425           0        1424

```

要对 web 组运行 `hostnamectl` 命令，使用以下格式：

```
$ ansible web -m command -a "hostnamectl"

node1.2g.lab | CHANGED | rc=0 >>
   Static hostname: CentOS7.2daygeek.com
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 002f47b82af248f5be1d67b67e03514c
           Boot ID: dc38f9b8089d4b2d9304e526e00c6a8f
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-957.el7.x86_64
      Architecture: x86-64
node2.2g.lab | CHANGED | rc=0 >>
   Static hostname: node2.2g.lab
         Icon name: computer-vm
           Chassis: vm
        Machine ID: e39e3a27005d44d8bcbfcab201480b45
           Boot ID: 27b46a09dde546da95ace03420fe12cb
    Virtualization: oracle
  Operating System: CentOS Linux 8 (Core)
       CPE OS Name: cpe:/o:centos:centos:8
            Kernel: Linux 4.18.0-80.el8.x86_64
      Architecture: x86-64

```

参考：[Ansible 文档](https://docs.ansible.com/ansible/latest/user_guide/index.html)。

---

via: <https://www.2daygeek.com/install-configure-ansible-automation-tool-linux-quick-start-guide/>

作者：[Magesh Maruthamuthu](https://www.2daygeek.com/author/magesh/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[MjSeven](https://github.com/MjSeven) 校对：[wxy](https://github.com/wxy)

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


如何在 Linux 中创建 USB 启动盘来拯救 Windows 用户

error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.

  │ exit code: 1

  ╰─> [8 lines of output]

      Traceback (most recent call last):

        File "<string>", line 2, in <module>

        File "<pip-setuptools-caller>", line 34, in <module>

        File "/tmp/pip-install-ynjxcvjv/wxpython_f52d26d3dd6d4a619a8c83d5805524e4/setup.py", line 27, in <module>

          from buildtools.config import Config, msg, opj, runcmd, canGetSOName, getSOName

>
> WoeUSB 可以在 Linux 中制作 Windows 启动盘，并帮助你的朋友解锁他们罢工的机器。
>
>
>

![](/data/attachment/album/202102/22/143829x0gm1gkmw1yb1zu8.jpg "Puzzle pieces coming together to form a computer screen")

人们经常要求我帮助他们恢复被锁死或损坏的 Windows 电脑。有时，我可以使用 Linux USB 启动盘来挂载 Windows 分区，然后从损坏的系统中传输和备份文件。

有的时候，客户丢失了他们的密码或以其他方式锁死了他们的登录账户凭证。解锁账户的一种方法是创建一个 Windows 启动盘来修复计算机。微软允许你从网站下载 Windows 的副本，并提供创建 USB 启动盘的工具。但要使用它们，你需要一台 Windows 电脑，这意味着，作为一个 Linux 用户，我需要其他方法来创建一个 DVD 或 USB 启动盘。我发现在 Linux 上创建 Windows USB 很困难。我的可靠工具，如 [Etcher.io](https://etcher.io/)、[Popsicle](https://github.com/pop-os/popsicle)（适用于 Pop!\_OS）和 [UNetbootin](https://github.com/unetbootin/unetbootin)，或者从命令行使用 `dd` 来创建可启动媒体，都不是很成功。

直到我发现了 [WoeUSB-ng](https://github.com/WoeUSB/WoeUSB-ng)，一个 [GPL 3.0](https://github.com/WoeUSB/WoeUSB-ng/blob/master/COPYING) 许可的 Linux 工具，它可以为 Windows Vista、7、8 和 10 创建一个 USB 启动盘。这个开源软件有两个程序：一个命令行工具和一个图形用户界面 （GUI） 版本。

### 安装 WoeUSB-ng

GitHub 仓库包含了在 Arch、Ubuntu、Fedora 或使用 pip3 [安装](https://github.com/WoeUSB/WoeUSB-ng#installation) WoeUSB-ng 的说明。

如果你是受支持的 Linux 发行版，你可以使用你的包管理器安装 WoeUSB-ng。或者，你可以使用 Python 的包管理器 [pip](https://opensource.com/downloads/pip-cheat-sheet) 来安装应用程序。这在任何 Linux 发行版中都是通用的。这些方法在功能上没有区别，所以使用你熟悉的任何一种。

我运行的是 Pop!\_OS，它是 Ubuntu 的衍生版本，但由于对 Python 很熟悉，我选择了 pip3 安装：

```
$ sudo pip3 install WoeUSB-ng

```

### 创建一个启动盘

你可以从命令行或 GUI 版本使用 WoeUSB-ng。

要从命令行创建一个启动盘，语法要求命令包含 Windows ISO 文件的路径和一个设备。（本例中是 `/dev/sdX`。使用 `lsblk` 命令来确定你的驱动器）

```
$ sudo woeusb --device Windows.iso /dev/sdX

```

你也可以启动该程序，以获得简单易用的界面。在 WoeUSB-ng 应用程序窗口中，找到 `Windows.iso` 文件并选择它。选择你的 USB 目标设备（你想变成 Windows 启动盘的驱动器）。这将会删除这个驱动器上的所有信息，所以要谨慎选择，然后仔细检查（再三检查）你的选择！

当你确认正确选择目标驱动器后，点击 **Install** 按钮。

![WoeUSB-ng UI](/data/attachment/album/202102/22/143841fxgvmacbxwllx0ia.png "WoeUSB-ng UI")

创建该介质需要 5 到 10 分钟，这取决于你的 Linux 电脑的处理器、内存、USB 端口速度等。请耐心等待。

当这个过程完成并验证后，你将有可用的 Windows USB 启动盘，以帮助其他人修复 Windows 计算机。

### 帮助他人

开源就是为了帮助他人。很多时候，你可以通过使用基于 Linux 的[系统救援 CD](https://www.system-rescue.org/) 来帮助 Windows 用户。但有时，唯一的帮助方式是直接从 Windows 中获取，而 WoeUSB-ng 是一个很好的开源工具，它可以让这成为可能。

---

via: <https://opensource.com/article/21/2/linux-woeusb>

作者：[Don Watkins](https://opensource.com/users/don-watkins) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


硬核观察 | 西北大学开发出猴脸识别系统

Summary: 更多：• Kodi 19 “Matrix” 发布，支持 AV1、HDR 和 tvOS • 非 systemd 的 Debian 分支 Devuan 3.1 发布

![](/data/attachment/album/202102/22/183521sjj6rjasosfn1ns9.jpg)

### 西北大学开发出猴脸识别系统

![](/data/attachment/album/202102/22/183531ffwz16lyhv6mkjwg.jpg)

据[报道](http://news.sciencenet.cn/htmlnews/2021/2/453342.shtm)，西北大学的科研团队正依托人工智能等新技术，研发“猴脸识别技术”，用于识别秦岭地区的数千只川金丝猴。目前，猴脸识别技术处于实验推广阶段，可识别约 200 只秦岭金丝猴。科研人员称，每只金丝猴，采集了七八百张图像样本，识别成功率达到 94%。

虽然这是一则严肃的科技新闻，但是我还是忍俊不禁想笑。不过严肃的说，这样的人脸识别技术才是技术不作恶的典范。

### Kodi 19 “Matrix” 发布，支持 AV1、HDR 和 tvOS

![](/data/attachment/album/202102/22/183551vh2jweuz5waghltg.jpg)

Kodi 是一个开源的媒体中心，最初是为 XBOX 游戏机设计的，但很快被移植到 Windows 和 Linux 等其他平台上，并最终移植到低成本的 Android 电视盒和树莓皮等单板电脑上。

在 Kodi 18 发布两年多后，开发者刚刚宣布[推出](https://kodi.tv/article/kodi-190-matrix-release) Kodi 19 “Matrix”。这个版本由近 50 名个人开源开发者贡献，约 5000 次提交，增加、更改或删除了约 60 万行代码。

Kodi 是难得的精致的开源软件，用了两年时光开发出来的 Kodi 19，值得试试，更多的变化，这里不一一赘述，大家自行体验吧。

### 非 systemd 的 Debian 分支 Devuan 3.1 发布

![](/data/attachment/album/202102/22/183603zkl6s6ksz6d6fsg6.jpg)

[Devuan](https://www.devuan.org/os/announce/beowulf-point-release-announce-021421) 是 Debian 的一个分支，旨在提供没有 systemd 的 Debian，专注于初始化系统的独立性，从最初的 pre-alpha 版本到现在已经六年了。

这个版本中新提供了 Runit 初始化系统，现在支持 Runit、SysVinit 和 OpenRC 等方式。在此版本中，还允许在安装过程中排除非自由固件。

要说对自由的热爱，Debian 是个典型代表，而要说对自由和传统的狂热，那 Devuan 当之无愧。


初级：在 Linux 中自定义 Cinnamon 桌面的 7 种方法

来了来了

来了来了

![](/data/attachment/album/202102/23/095703u8t88l0rpf4o4p5o.jpg)

Linux Mint 是最好的 [适合初学者的 Linux 发行版](https://itsfoss.com/best-linux-beginners/) 之一。尤其是想 [转战 Linux](https://itsfoss.com/reasons-switch-linux-windows-xp/) 的 Windows 用户，会发现它的 Cinnamon 桌面环境非常熟悉。

Cinnamon 给人一种传统的桌面体验，很多用户喜欢它的样子。这并不意味着你必须满足于它提供的东西。Cinnamon 提供了几种自定义桌面的方式。

在阅读了 [MATE](https://itsfoss.com/ubuntu-mate-customization/) 和 [KDE 自定义](https://itsfoss.com/kde-customization/) 指南后，很多读者要求为 Linux Mint Cinnamon 也提供类似的教程。因此，我创建了这个关于调整 Cinnamon 桌面的外观和感觉的基本指南。

### 7 种自定义 Cinnamon 桌面的不同方法

在本教程中，我使用的是 [Linux Mint Debian Edition](https://itsfoss.com/lmde-4-release/)（LMDE 4）。你可以在任何运行 Cinnamon 的 Linux 发行版上使用这篇文章的方法。如果你不确定，这里有 [如何检查你使用的桌面环境](https://itsfoss.com/find-desktop-environment/)。

当需要改变 Cinnamon 桌面外观时，我发现非常简单，因为只需点击两下即可。如下图所示，点击菜单图标，然后点击“设置”。

![](/data/attachment/album/202102/23/095709at7l23ilti2v3rpp.png)

所有的外观设置都放在该窗口的顶部。在“系统设置”窗口上的一切都显得整齐划一。

![](/data/attachment/album/202102/23/095710shl2hj8k2eldzwe7.png)

#### 1、效果

效果选项简单，不言自明，一目了然。你可以开启或关闭桌面不同元素的特效，或者通过改变特效风格来改变窗口过渡。如果你想改变效果的速度，可以通过自定义标签来实现。

![](/data/attachment/album/202102/23/095710p188x772ref77aaj.png)

#### 2、字体选择

在这个部分，你可以区分整个系统中使用的字体大小和类型，通过字体设置，你可以对外观进行微调。

![](/data/attachment/album/202102/23/095710hggqdogoixio0riq.png)

#### 3、主题和图标

我曾经做了几年的 Linux Mint 用户，一个原因是你不需要到处去改变你想要的东西。窗口管理器、图标和面板定制都在一个地方！

你可以将面板改成深色或浅色，窗口边框也可以根据你要的而改变。默认的 Cinnamon 外观设置在我眼里是最好的，我甚至在测试 [Ubuntu Cinnamon Remix](https://itsfoss.com/ubuntu-cinnamon-remix-review/) 时也应用了一模一样的设置，不过是橙色的。

![](/data/attachment/album/202102/23/095711qy5znyfh3x4u3hrr.png)

#### 4、Cinnamon 小程序

Cinnamon 小程序是所有包含在底部面板的元素，如日历或键盘布局切换器。在管理选项卡中，你可以添加/删除已经安装的小程序。

你一定要探索一下可以下载的小程序，如天气和 [CPU 温度](https://itsfoss.com/check-laptop-cpu-temperature-ubuntu/)指示小程序是我额外选择的。

![](/data/attachment/album/202102/23/095711tfgdm5jx0g2d6xjg.png)

#### 5、Cinnamon Desklets

Cinnamon Desklets 是可以直接放置在桌面上的应用。和其他所有的自定义选项一样，Desklets 可以从设置菜单中访问，各种各样的选择可以吸引任何人的兴趣。谷歌日历是一个方便的应用，可以直接在桌面上跟踪你的日程安排。

![](/data/attachment/album/202102/23/095711o1s6ou5uuhchs6ho.png)

#### 6、桌面壁纸

要改变 Cinnamon 桌面的背景，只需在桌面上点击右键，选择“改变桌面背景”。它将打开一个简单易用的窗口，在左侧列出了可用的背景系统文件夹，右侧有每个文件夹内的图片预览。

![](/data/attachment/album/202102/23/095712xipjpz70pm07fddk.png)

你可以通过点击加号（`+`）并选择路径来添加自己的文件夹。在“设置”选项卡中，你可以选择你的背景是静态还是幻灯片，以及背景在屏幕上的位置。

![](/data/attachment/album/202102/23/095712ogj66b0pbt246pcc.png)

#### 7、自定义桌面屏幕上的内容

背景并不是你唯一可以改变的桌面元素。如果你在桌面上点击右键，然后点击“自定义”，你可以找到更多的选项。

![](/data/attachment/album/202102/23/095713nccochcrosxiyhzi.png)

你可以改变图标的大小，将摆放方式从垂直改为水平，并改变它们在两个轴上的间距。如果你不喜欢你所做的，点击重置网格间距回到默认值。

![](/data/attachment/album/202102/23/095713p0nxkuq6x6m4o58q.png)

此外，如果你点击“桌面设置”，将显示更多的选项。你可以禁用桌面上的图标，将它们放在主显示器或副显示器上，甚至两个都可以。如你所见，你可以选择一些图标出现在桌面上。

![](/data/attachment/album/202102/23/095714joyz31kl95lg9k12.png)

### 总结

Cinnamon 桌面是最好的选择之一，尤其是当你正在 [从 windows 切换到 Linux](https://itsfoss.com/guide-install-linux-mint-16-dual-boot-windows/) 的时候，同时对一个简单而优雅的桌面追求者也是如此。

Cinnamon 桌面非常稳定，在我手上从来没有崩溃过，这也是在各种 Linux 发行版之间，我使用它这么久的主要原因之一。

我没有讲得太详细，但给了你足够的指导，让你自己去探索设置。欢迎反馈你对 Cinnamon 的定制。

---

via: <https://itsfoss.com/customize-cinnamon-desktop/>

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

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


LaTex 排版 （2）：表格

Summary: LaTeX 提供了许多工具来创建和定制表格

LaTeX 提供了许多工具来创建和定制表格

![](/data/attachment/album/202102/23/113655fm74zku5x1xy7h5j.png)

LaTeX 提供了许多工具来创建和定制表格，在本系列中，我们将使用 `tabular` 和 `tabularx` 环境来创建和定制表。

### 基础表格

要创建表，只需指定环境 `\begin{tabular}{列选项}`：

```
\begin{tabular}{c|c}
    Release &Codename \\ \hline
    Fedora Core 1 &Yarrow \\
    Fedora Core 2 &Tettnang \\
    Fedora Core 3 &Heidelberg \\
    Fedora Core 4 &Stentz \\
\end{tabular}

```

![Basic Table](/data/attachment/album/202102/23/113656b56vdxd4x15evw69.png)

在上面的示例中，花括号中的 ”{c|c}” 表示文本在列中的位置。下表总结了位置参数及其说明。

| 参数 | 位置 |
| --- | --- |
| `c` | 将文本置于中间 |
| `l` | 将文本左对齐 |
| `r` | 将文本右对齐 |
| `p{宽度}` | 文本对齐单元格顶部 |
| `m{宽度}` | 文本对齐单元格中间 |
| `b{宽度}` | 文本对齐单元格底部 |

>
> `m{宽度}` 和 `b{宽度}` 都要求在最前面指定数组包。
>
>
>

使用上面的例子，让我们来详细讲解使用的要点，并描述你将在本系列中看到的更多选项：

| 选项 | 意义 |
| --- | --- |
| `&` | 定义每个单元格，这个符号仅用于第二列 |
| `\\` | 这将终止该行并开始一个新行 |
| `|` | 指定表格中的垂直线（可选） |
| `\hline` | 指定表格中的水平线（可选） |
| `*{数量}{格式}` | 当你有许多列时，可以使用这个，并且是限制重复的有效方法 |
| `||` | 指定表格中垂直双线 |

### 定制表格

学会了这些选项，让我们使用这些选项创建一个表。

```
\begin{tabular}{*{3}{|l|}}
\hline
	\textbf{Version} &\textbf{Code name} &\textbf{Year released} \\
\hline
	Fedora 6 &Zod &2006 \\ \hline
	Fedora 7 &Moonshine &2007 \\ \hline
	Fedora 8 &Werewolf &2007 \\
\hline
\end{tabular}

```

![Customise Table](/data/attachment/album/202102/23/113656kvzgzbqi0l1jiiez.png)

### 管理长文本

如果列中有很多文本，那么它的格式就不好处理，看起来也不好看。

下面的示例显示了文本的格式长度，我们将在导言区中使用 `blindtext`，以便生成示例文本。

```
\begin{tabular}{|l|l|}\hline
	Summary &Description \\ \hline
	Test &\blindtext \\
\end{tabular}

```

![Default Formatting](/data/attachment/album/202102/23/113656qt28t2a9zz9ydn5a.png)

正如你所看到的，文本超出了页面宽度；但是，有几个选项可以克服这个问题。

* 指定列宽，例如 `m{5cm}`
* 利用 `tablarx` 环境，这需要在导言区中引用 `tablarx` 宏包。

#### 使用列宽管理长文本

通过指定列宽，文本将被折行为如下示例所示的宽度。

```
\begin{tabular}{|l|m{14cm}|} \hline
	Summary &Description \\ \hline
	Test &\blindtext \\ \hline
\end{tabular}\vspace{3mm}

```

![Column Width](/data/attachment/album/202102/23/113657wvz00wc2kcxdqvtv.png)

#### 使用 tabularx 管理长文本

在我们利用表格之前，我们需要在导言区中加上它。`tabularx` 方法见以下示例：`\begin{tabularx}{宽度}{列选项}`。

```
\begin{tabularx}{\textwidth}{|l|X|} \hline
Summary & Tabularx Description\\ \hline
Text &\blindtext \\ \hline
\end{tabularx}

```

![Tabularx](/data/attachment/album/202102/23/113657mvm6uhe7vmhcem34.png)

请注意，我们需要处理长文本的列在花括号中指定了大写 `X`。

### 合并行合并列

有时需要合并行或列。本节描述了如何完成。要使用 `multirow` 和 `multicolumn`，请将 `multirow` 添加到导言区。

#### 合并行

`multirow` 采用以下参数 `\multirow{行的数量}{宽度}{文本}`，让我们看看下面的示例。

```
\begin{tabular}{|l|l|}\hline
	Release &Codename \\ \hline
	Fedora Core 4 &Stentz \\ \hline
	\multirow{2}{*}{MultiRow} &Fedora 8 \\
	&Werewolf \\ \hline
\end{tabular}

```

![MultiRow](/data/attachment/album/202102/23/113657jd1y1mbzcd1sbyh1.png)

在上面的示例中，指定了两行，`*` 告诉 LaTeX 自动管理单元格的大小。

#### 合并列

`multicolumn` 参数是 `{multicolumn{列的数量}{单元格选项}{位置}{文本}`，下面的示例演示合并列。

```
\begin{tabular}{|l|l|l|}\hline
	Release &Codename &Date \\ \hline
	Fedora Core 4 &Stentz &2005 \\ \hline
	\multicolumn{3}{|c|}{Mulit-Column} \\ \hline
\end{tabular}

```

![Multi-Column](/data/attachment/album/202102/23/113658hn9dvnqd20psdvpn.png)

### 使用颜色

可以为文本、单个单元格或整行指定颜色。此外，我们可以为每一行配置交替的颜色。

在给表添加颜色之前，我们需要在导言区引用 `\usepackage[table]{xcolor}`。我们还可以使用以下颜色参考 [LaTeX Color](https://latexcolor.com) 或在颜色前缀后面添加感叹号（从 0 到 100 的阴影）来定义颜色。例如，`gray！30`。

```
\definecolor{darkblue}{rgb}{0.0, 0.0, 0.55}
\definecolor{darkgray}{rgb}{0.66, 0.66, 0.66}

```

下面的示例演示了一个具有各种颜色的表，`\rowcolors` 采用以下选项 `\rowcolors{起始行颜色}{偶数行颜色}{奇数行颜色}`。

```
\rowcolors{2}{darkgray}{gray!20}
\begin{tabular}{c|c}
	Release &Codename \\ \hline
	Fedora  Core 1 &Yarrow \\
	Fedora Core 2 &Tettnang \\
	Fedora Core 3 &Heidelberg \\
	Fedora Core 4 &Stentz \\
\end{tabular}

```

![Alt colour table](/data/attachment/album/202102/23/113658uqg4sszyglqwiklw.png)

除了上面的例子，`\rowcolor` 可以用来指定每一行的颜色，这个方法在有合并行时效果最好。以下示例显示将 `\rowColors` 与合并行一起使用的影响以及如何解决此问题。

![Impact on multi-row](/data/attachment/album/202102/23/113658cupkwcukb81odh8b.png)

你可以看到，在合并行中，只有第一行能显示颜色。想要解决这个问题，需要这样做：

```
\begin{tabular}{|l|l|}\hline
	\rowcolor{darkblue}\textsc{\color{white}Release}  &\textsc{\color{white}Codename} \\ \hline
	\rowcolor{gray!10}Fedora Core 4 &Stentz \\ \hline
	\rowcolor{gray!40}&Fedora 8 \\
	\rowcolor{gray!40}\multirow{-2}{*}{Multi-Row} &Werewolf \\ \hline
\end{tabular}

```

![Multi-row](/data/attachment/album/202102/23/113658ixxh6wppghlxzlia.png)

让我们讲解一下为解决合并行替换颜色问题而实施的更改。

* 第一行从合并行上方开始
* 行数从 `2` 更改为 `-2`，这意味着从上面的行开始读取
* `\rowcolor` 是为每一行指定的，更重要的是，多行必须具有相同的颜色，这样才能获得所需的结果。

关于颜色的最后一个注意事项是，要更改列的颜色，需要创建新的列类型并定义颜色。下面的示例说明了如何定义新的列颜色。

```
\newcolumntype{g}{>{\columncolor{darkblue}}l}

```

我们把它分解一下：

* `\newcolumntype{g}`：将字母 `g` 定义为新列
* `{>{\columncolor{darkblue}}l}`：在这里我们选择我们想要的颜色，并且 `l` 告诉列左对齐，这可以用 `c` 或 `r` 代替。

```
\begin{tabular}{g|l}
	\textsc{Release}  &\textsc{Codename} \\ \hline
	Fedora Core 4 &Stentz \\
	&Fedora 8 \\
	\multirow{-2}{*}{Multi-Row} &Werewolf \\
\end{tabular}\

```

![Column Colour](/data/attachment/album/202102/23/113659kz79ixig6s6a6gei.png)

### 横向表

有时，你的表可能有许多列，纵向排列会很不好看。在导言区加入 `rotating` 包，你将能够创建一个横向表。下面的例子说明了这一点。

对于横向表，我们将使用 `sidewaystable` 环境并在其中添加表格环境，我们还指定了其他选项。

* `\centering` 可以将表格放置在页面中心
* `\caption{}` 为表命名
* `\label{}` 这使我们能够引用文档中的表

```
\begin{sidewaystable}
\centering
\caption{Sideways Table}
\label{sidetable}
\begin{tabular}{ll}
	\rowcolor{darkblue}\textsc{\color{white}Release}  &\textsc{\color{white}Codename} \\
	\rowcolor{gray!10}Fedora Core 4 &Stentz \\
	\rowcolor{gray!40} &Fedora 8 \\
	\rowcolor{gray!40}\multirow{-2}{*}{Multi-Row} &Werewolf \\
\end{tabular}\vspace{3mm}
\end{sidewaystable}

```

![Sideways Table](/data/attachment/album/202102/23/113659kk7nt07l6gmy6lj2.png)

### 列表和表格

要将列表包含到表中，可以使用 `tabularx`，并将列表包含在指定的列中。另一个办法是使用表格格式，但必须指定列宽。

#### 用 tabularx 处理列表

```
\begin{tabularx}{\textwidth}{|l|X|} \hline
	Fedora Version &Editions \\ \hline
	Fedora 32 &\begin{itemize}[noitemsep]
		\item CoreOS
		\item Silverblue
		\item IoT
	\end{itemize} \\ \hline
\end{tabularx}\vspace{3mm}

```

![List in tabularx](/data/attachment/album/202102/23/113700myi4lvtptpnknzy8.png)

#### 用 tabular 处理列表

```
\begin{tabular}{|l|m{6cm}|}\hline
        Fedora Version &amp;amp;Editions \\\ \hline
    Fedora 32 &amp;amp;\begin{itemize}[noitemsep]
        \item CoreOS
        \item Silverblue
        \item IoT
    \end{itemize} \\\ \hline
\end{tabular}

```

![List in tabular](/data/attachment/album/202102/23/113700ixz7vtxxtv933r3r.png)

### 总结

LaTeX 提供了许多使用 `tablar` 和 `tablarx` 自定义表的方法，你还可以在表环境 （`\begin\table`） 中添加 `tablar` 和 `tablarx` 来添加表的名称和定位表。

### LaTeX 宏包

所需的宏包有如下这些：

```
\usepackage{fullpage}
\usepackage{blindtext}  % add demo text
\usepackage{array} % used for column positions
\usepackage{tabularx} % adds tabularx which is used for text wrapping
\usepackage{multirow} % multi-row and multi-colour support
\usepackage[table]{xcolor} % add colour to the columns
\usepackage{rotating} % for landscape/sideways tables

```

### 额外的知识

这是一堂关于表的小课，有关表和 LaTex 的更多高级信息，请访问 [LaTex Wiki](https://en.wikibooks.org/wiki/LaTeX/Tables)

![](/data/attachment/album/202102/23/113659kz79ixig6s6a6gei.png)

---

via: <https://fedoramagazine.org/latex-typesetting-part-2-tables/>

作者：[Earl Ramirez](https://fedoramagazine.org/author/earlramirez/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[Chao-zhi](https://github.com/Chao-zhi) 校对：[wxy](https://github.com/wxy)

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


硬核观察 | Photoshop 进驻统信 UOS 商店

Summary: 更多：• 微软 Word 下个月将获得文本预测功能 • Nextcloud 21 发布，提升 10 倍性能

![](/data/attachment/album/202102/23/165632ek2k136qan237k77.jpg)

### Photoshop 进驻统信 UOS 商店

![](/data/attachment/album/202102/23/165647h79hayhfxihth1g6.jpg)

今天，统信软件官方宣布，Adobe Photoshop CS6 已经正式登陆统信 UOS 系统，x86 平台的社区版、专业版、个人版用户，都可以直接搜索安装使用它。目前统信 UOS 应用商店中已有 2000 多款软件。

毫不意外的，这依然是一个 Wine 版本。

### 微软 Word 下个月将获得文本预测功能

![](/data/attachment/album/202102/23/165702hboa7fvboko83fae.jpg)

这种功能使用机器学习来预测作者将需要哪些单词来加快文档创建。当用户在撰写文档时，Word 会高亮显示灰度化的预测，可以使用 Tab 键接受建议，也可以按 Escape 键拒绝。该功能目前只支持英文，还处于内部测试阶段，预计下个月会发布。除了 Word，微软也将其用在 Outlook 中。

如果你担心影响隐私问题，[微软说](https://insider.office.com/en-us/blog/text-predictions-in-word-outlook)，这种功能只是基于你的文档而建议的，除非你有意反馈信息，否则信息不会被存储和被别人看到。甚至，你还是不放心的话，可以禁止这个功能。

### Nextcloud 21 发布，提升 10 倍性能

![](/data/attachment/album/202102/23/165729g9scsywms6tjcywn.jpg)

最新版本 [Nextcloud 21](https://github.com/nextcloud/server/milestone/120) 采用了全新的、可选择的基于 Rust 的高性能文件后端，将桌面客户端和 Web 界面轮询的服务器负载降低了 90%，同时向用户提供即时通知和文件更改。除此以外，还有其它的改进，Nextcloud 声称你会看到大型 Nextcloud 服务器的[能力提高了 10 倍](https://nextcloud.com/blog/nextcloud-hub-21-out-with-up-to-10x-better-performance-whiteboard-and-more-collaboration-features/)。

我注意到后端新采用了 Rust，极大的提升了性能。看来 Rust 的潜力很不错。


5 款值得拥有的 Linux 媒体播放器

Summary: 无论是电影还是音乐，Linux 都能为你提供一些优秀的媒体播放器。

无论是电影还是音乐，Linux 都能为你提供一些优秀的媒体播放器。

>
> 无论是电影还是音乐，Linux 都能为你提供一些优秀的媒体播放器。
>
>
>

![](/data/attachment/album/202102/24/101806k2g26zfcamiffhlb.jpg "An old-fashioned video camera")

在 2021 年，人们有更多的理由喜欢 Linux。在这个系列中，我将分享 21 个使用 Linux 的不同理由。媒体播放是我最喜欢使用 Linux 的理由之一。

你可能更喜欢黑胶唱片和卡带，或者录像带和激光影碟，但你很有可能还是在数字设备上播放你喜欢的大部分媒体。电脑上的媒体有一种无法比拟的便利性，这主要是因为我们大多数人一天中的大部分时间都在电脑附近。许多现代电脑用户并没有过多考虑有哪些应用可以用来听音乐和看电影，因为大多数操作系统都默认提供了媒体播放器，或者因为他们订阅了流媒体服务，因此并没有把媒体文件放在自己身边。但如果你的口味超出了通常的热门音乐和节目列表，或者你以媒体工作为乐趣或利润，那么你就会有你想要播放的本地文件。你可能还对现有用户界面有意见。在 Linux 上，*选择*是一种权利，因此你可以选择无数种播放媒体的方式。

以下是我在 Linux 上必备的五个媒体播放器。

### 1、mpv

![mpv interface](/data/attachment/album/202102/24/101834vbnunnlzz0t77c3i.png)

一个现代、干净、简约的媒体播放器。得益于它的 Mplayer、[ffmpeg](https://opensource.com/article/17/6/ffmpeg-convert-media-file-formats) 和 `libmpv` 后端，它可以播放你可能会扔给它的任何类型媒体。我说“扔给它”，是因为播放一个文件的最快捷、最简单的方法就是把文件拖到 mpv 窗口中。如果你拖动多个文件，mpv 会为你创建一个播放列表。

当你把鼠标放在上面时，它提供了直观的覆盖控件，但最好还是通过键盘操作界面。例如，`Alt+1` 会使 mpv 窗口变成全尺寸，而 `Alt+0` 会使其缩小到一半大小。你可以使用 `,` 和 `.` 键逐帧浏览视频，`[` 和 `]` 键调整播放速度，`/` 和 `*` 调整音量，`m` 静音等等。这些主控功能可以让你快速调整，一旦你学会了这些功能，你几乎可以在想到要调整播放的时候快速调整。无论是工作还是娱乐，mpv 都是我播放媒体的首选。

### 2、Kaffeine 和 Rhythmbox

![Kaffeine interface](/data/attachment/album/202102/24/101835yj779v7xcj9044ev.png)

KDE Plasma 和 GNOME 桌面都提供了音乐应用（[Kaffeine](https://apps.kde.org/en/kaffeine) 和 [Rhythmbox][]），可以作为你个人音乐库的前端。它们会让你为你的音乐文件提供一个标准的位置，然后扫描你的音乐收藏，这样你就可以根据专辑、艺术家等来浏览。这两款软件都很适合那些你无法完全决定你想听什么，而又想用一种简单的方式来浏览现有音乐的时候。

[Kaffeine](https://apps.kde.org/en/kaffeine) 其实不仅仅是一个音乐播放器。它可以播放视频文件、DVD、CD，甚至数字电视（假设你有输入信号）。我已经整整几天没有关闭 Kaffeine 了，因为不管我是想听音乐还是看电影，Kaffeine 都能让我轻松地开始播放。

### 3、Audacious

![Audacious interface](/data/attachment/album/202102/24/101835mi2xgoemaqmuj22m.png)

[Audacious](https://audacious-media-player.org/) 媒体播放器是一个轻量级的应用，它可以播放你的音乐文件（甚至是 MIDI 文件）或来自互联网的流媒体音乐。对我来说，它的主要吸引力在于它的模块化架构，它鼓励开发插件。这些插件可以播放几乎所有你能想到的音频媒体格式，用图形均衡器调整声音，应用效果，甚至可以重塑整个应用，改变其界面。

很难把 Audacious 仅仅看作是一个应用，因为它很容易让它变成你想要的应用。无论你是 Linux 上的 XMMS、Windows 上的 WinAmp，还是任何其他替代品，你大概都可以用 Audacious 来近似它们。Audacious 还提供了一个终端命令，`audtool`，所以你可以从命令行控制一个正在运行的 Audacious 实例，所以它甚至可以近似于一个终端媒体播放器!

### 4、VLC

![vlc interface](/data/attachment/album/202102/24/101836psv2sooxuwngs3uq.png)

[VLC](http://videolan.org) 播放器可能是向用户介绍开源的应用之首。作为一款久经考验的多媒体播放器，VLC 可以播放音乐、视频、光盘。它还可以通过网络摄像头或麦克风进行流式传输和录制，从而使其成为捕获快速视频或语音消息的简便方法。像 mpv 一样，大多数情况下都可以通过按单个字母的键盘操作来控制它，但它也有一个有用的右键菜单。它可以将媒体从一种格式转换为另一种格式、创建播放列表、跟踪你的媒体库等。VLC 是最好的，大多数播放器甚至无法在功能上与之匹敌。无论你在什么平台上，它都是一款必备的应用。

### 5、Music player daemon

![mpd with the ncmpc interface](/data/attachment/album/202102/24/101836ir8fq2xsxz71pk7d.png)

[music player daemon（mpd）](https://www.musicpd.org/) 是一个特别有用的播放器，因为它在服务器上运行。这意味着你可以在 [树莓派](https://opensource.com/article/21/1/raspberry-pi-hifi) 上启动它，然后让它处于空闲状态，这样你就可以在任何时候播放一首曲子。mpd 的客户端有很多，但我用的是 [ncmpc](https://www.musicpd.org/clients/ncmpc/)。有了 ncmpc 或像 [netjukebox](http://www.netjukebox.nl/) 这样的 Web 客户端，我可以从本地主机或远程机器上连接 mpd，选择一张专辑，然后从任何地方播放它。

### Linux 上的媒体播放

在 Linux 上播放媒体是很容易的，这要归功于它出色的编解码器支持和惊人的播放器选择。我只提到了我最喜欢的五个播放器，但还有更多的播放器供你探索。试试它们，找到最好的，然后坐下来放松一下。

---

via: <https://opensource.com/article/21/2/linux-media-players>

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

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


用 Linux 释放你 Chromebook 的隐藏潜能

>
> Chromebook 是令人惊叹的工具，但通过解锁它内部的 Linux 系统，你可以让它变得更加不同凡响。
>
>
>

![](/data/attachment/album/202102/24/114254qstdq1dhj288jh1z.jpg "Working from home at a laptop")

Google Chromebook 运行在 Linux 系统之上，但通常它运行的 Linux 系统对普通用户而言，并不是十分容易就能访问得到。Linux 被用作基于开源的 [Chromium OS](https://www.chromium.org/chromium-os) 运行时环境的后端技术，然后 Google 将其转换为 Chrome OS。大多数用户体验到的界面是一个电脑桌面，可以用来运行 Chrome 浏览器及其应用程序。然而，在这一切的背后，有一个 Linux 系统等待被你发现。如果你知道怎么做，你可以在 Chromebook 上启用 Linux，把一台可能价格相对便宜、功能相对基础的电脑变成一个严谨的笔记本，获取数百个应用和你需要的所有能力，使它成为一个通用计算机。

### 什么是 Chromebook?

Chromebook 是专为 Chrome OS 创造的笔记本电脑，它本身专为特定的笔记本电脑型号而设计。Chrome OS 不是像 Linux 或 Windows 这样的通用操作系统，而是与 Android 或 iOS 有更多的共同点。如果你决定购买 Chromebook，你会发现有许多不同制造商的型号，包括惠普、华硕和联想等等。有些是为学生而设计，而另一些是为家庭或商业用户而设计的。主要的区别通常分别集中在电池功率或处理能力上。

无论你决定买哪一款，Chromebook 都会运行 Chrome OS，并为你提供现代计算机所期望的基本功能。有连接到互联网的网络管理器、蓝牙、音量控制、文件管理器、桌面等等。

![Chrome OS desktop](/data/attachment/album/202102/24/114320ug7qd0cl26z773l6.png)

*Chrome OS 桌面截图*

不过，想从这个简单易用的操作系统中获得更多，你只需要激活 Linux。

### 启用 Chromebook 的开发者模式

如果我让你觉得启用 Linux 看似简单，那是因为它确实简单但又有欺骗性。之所以说有欺骗性，是因为在启用 Linux 之前，你*必须*备份数据。

这个过程虽然简单，但它确实会将你的计算机重置回出厂默认状态。你必须重新登录到你的笔记本电脑中，如果你有数据存储在 Google 云盘帐户上，你必须得把它重新同步回计算机中。启用 Linux 还需要为 Linux 预留硬盘空间，因此无论你的 Chromebook 硬盘容量是多少，都将减少一半或四分之一（自主选择）。

在 Chromebook 上接入 Linux 仍被 Google 视为测试版功能，因此你必须选择使用开发者模式。开发者模式的目的是允许软件开发者测试新功能，安装新版本的操作系统等等，但它可以为你解锁仍在开发中的特殊功能。

要启用开发者模式，请首先关闭你的 Chromebook。假定你已经备份了设备上的所有重要信息。

接下来，按下键盘上的 `ESC` 和 `⟳`，再按 **电源键** 启动 Chromebook。

![ESC and refresh buttons](/data/attachment/album/202102/24/114321gyawg5gaoc46czyc.png)

*ESC 键和 ⟳ 键*

当提示开始恢复时，按键盘上的 `Ctrl+D`。

恢复结束后，你的 Chromebook 已重置为出厂设置，且没有默认的使用限制。

### 开机启动进入开发者模式

在开发者模式下运行意味着每次启动 Chromebook 时，都会提醒你处于开发者模式。你可以按 `Ctrl+D` 跳过启动延迟。有些 Chromebook 会在几秒钟后发出蜂鸣声来提醒你处于开发者模式，使得 `Ctrl+D` 操作几乎是强制的。从理论上讲，这个操作很烦人，但在实践中，我不经常启动我的 Chromebook，因为我只是唤醒它，所以当我需要这样做的时候，`Ctrl+D` 只不过是整个启动过程中小小的一步。

启用开发者模式后的第一次启动时，你必须重新设置你的设备，就好像它是全新的一样。你只需要这样做一次（除非你在未来某个时刻停用开发者模式）。

### 启用 Chromebook 上的 Linux

现在，你已经运行在开发者模式下，你可以激活 Chrome OS 中的 **Linux Beta** 功能。要做到这一点，请打开 **设置**，然后单击左侧列表中的 **Linux Beta**。

激活 **Linux Beta**，并为你的 Linux 系统和应用程序分配一些硬盘空间。在最糟糕的时候，Linux 是相当轻量级的，所以你真的不需要分配太多硬盘空间，但它显然取决于你打算用 Linux 来做多少事。4 GB 的空间对于 Linux 以及几百个终端命令还有二十多个图形应用程序是足够的。我的 Chromebook 有一个 64 GB 的存储卡，我给了 Linux 系统 30 GB，那是因为我在 Chromebook 上所做的大部分事情都是在 Linux 内完成的。

一旦你的 **Linux Beta** 环境准备就绪，你可以通过按键盘上的**搜索**按钮和输入 `terminal` 来启动终端。如果你还是 Linux 新手，你可能不知道当前进入的终端能用来安装什么。当然，这取决于你想用 Linux 来做什么。如果你对 Linux 编程感兴趣，那么你可能会从 Bash（它已经在终端中安装和运行了）和 Python 开始。如果你对 Linux 中的那些迷人的开源应用程序感兴趣，你可以试试 GIMP、MyPaint、LibreOffice 或 Inkscape 等等应用程序。

Chrome OS 的 **Linux Beta** 模式不包含图形化的软件安装程序，但 [应用程序可以从终端安装](https://opensource.com/article/18/1/how-install-apps-linux)。可以使用 `sudo apt install` 命令安装应用程序。

* `sudo` 命令可以允许你使用超级管理员权限来执行某些命令（即 Linux 中的 `root`）。
* `apt` 命令是一个应用程序的安装工具。
* `install` 是命令选项，即告诉 `apt` 命令要做什么。

你还必须把想要安装的软件包的名字和 `apt` 命令写在一起。以安装 LibreOffice 举例:

```
sudo apt install libreoffice

```

当有提示是否继续时，输入 `y`（代表“确认”），然后按 **回车键**。

一旦应用程序安装完毕，你可以像在 Chrome OS 上启动任何应用程序一样启动它：只需要在应用程序启动器输入它的名字。

了解 Linux 应用程序的名字和它的包名需要花一些时间，但你也可以用 `apt search` 命令来搜索。例如，可以用以下的方法是找到关于照片的应用程序：

```
apt search photo

```

因为 Linux 中有很多的应用程序，所以你可以找一些感兴趣的东西，然后尝试一下！

### 与 Linux 共享文件和设备

**Linux Beta** 环境运行在 [容器](https://opensource.com/resources/what-are-linux-containers) 中，因此 Chrome OS 需要获得访问 Linux 文件的权限。要授予 Chrome OS 与你在 Linux 上创建的文件的交互权限，请右击要共享的文件夹并选择 **管理 Linux 共享**。

![Chrome OS Manage Linux sharing interface](/data/attachment/album/202102/24/114321pzfo4qwsr4bsnzvs.png)

*Chrome OS 的 Linux 管理共享界面*

你可以通过 Chrome OS 的 **设置** 程序来管理共享设置以及其他设置。

![Chrome OS Settings menu](/data/attachment/album/202102/24/114321e1z9zc50ki3575zi.png)

*Chrome OS 设置菜单*

### 学习 Linux

如果你肯花时间学习 Linux，你不仅能够解锁你 Chromebook 中隐藏的潜力，还能最终学到很多关于计算机的知识。Linux 是一个有价值的工具，一个非常有趣的玩具，一个通往比常规计算更令人兴奋的事物的大门。去了解它吧，你可能会惊讶于你自己和你 Chromebook 的无限潜能。

---

源自: <https://opensource.com/article/21/2/chromebook-linux>

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

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


硬核观察 | 中国特供版的 Flash 软件正在安装广告软件

Summary: 更多：• 攻击者销售窃取的远程桌面登录凭证，勒索团伙高价买下 • 量子计算机解决了一个几十年前的问题，比经典计算机快 300 万倍

![](/data/attachment/album/202102/24/142305u7g5gltw7bb78zfa.jpg)

### 中国特供版的 Flash 软件正在安装广告软件

![](/data/attachment/album/202102/24/142109fyr15yy39055y929.jpg)

虽然 Flash 应用已经正式寿终正寝，但 Adobe 允许一家中国本土公司继续在中国境内发行 Flash 软件，这个 Flash 软件只能通过 [flash.cn](http://flash.cn/) 获得。

但安全公司 Minerva Labs 发现，其安全产品接收到了多个与这个 Flash 软件相关的安全警报。经过[分析](https://blog.minerva-labs.com/the-curious-case-of-flashhelperservice-0)后发现，该应用确实在安装一个有效版本的 Flash 软件，但同时也在下载和运行了一个 nt.dll。这是一个加载在 Flash 进程内的文件，它每隔一段时间就会继续打开一个新的浏览器窗口，显示各种广告和弹出窗口密集的网站。

另外，这种特殊的威胁不会影响西方用户，因为他们从 [flash.cn](http://flash.cn/) 下载的 Flash 版本不会在中国以外的系统上运行。

这下知道为什么有人煞费苦心为中国网民提供特供版了。实在是被恶心到了。

### 攻击者销售窃取的远程桌面登录凭证，勒索团伙高价买下

![](/data/attachment/album/202102/24/142132fex37k7g2qiikatc.jpg)

[买卖被盗的登录凭证](https://www.zdnet.com/article/these-hackers-sell-network-logins-to-the-highest-bidder-and-ransomware-gangs-are-buying/)和其他形式的远程访问网络早已成为暗网生态系统的一部分。这些人入侵网络，但他们不会通过自己进行网络活动来获利，而是将网络的入口卖给其他犯罪分子，从销售中获利。通过远程桌面协议（RDP）进行访问，最受网络犯罪分子追捧。这种凭证的价格很贵，接近一万美元的平均售价代表着多个有价值的攻击目标，当然，勒索团伙也一定是觉得能值回票价才会去购买。而去年以来的疫情导致对远程访问需求大增也为攻击者创造了更多机会。

所有提供了远程访问的企业网络，都当点心吧，仅仅是密码策略已经不足以防范这样的攻击威胁了。

### 量子计算机解决了一个几十年前的问题，比经典计算机快 300 万倍

![](/data/attachment/album/202102/24/142151t6yt1lly2r3b1g26.jpg)

来自量子计算公司 D-Wave 的科学家们已经[证明](https://www.globenewswire.com/news-release/2021/02/18/2177749/0/en/D-Wave-Demonstrates-Performance-Advantage-in-Quantum-Simulation-of-Exotic-Magnetism.html)，利用一种名为量子退火的方法，他们对一些材料的模拟速度可以比使用相应的经典方法快 300 万倍。当然，事实上这个问题在 2016 年已经被诺贝尔物理学奖得主解决了。

D-Wave 的最新研究并没有证明量子至上性，即用量子计算机运行一个用经典手段无法解决的计算。这个实验的真正意义在于证明了，利用现有的量子方法解决有价值的材料科学问题已经可以取得计算优势。

虽然是特定领域的特定解决方案，但是随着量子技术的发展，通用的量子计算机或许会在某个时刻出现。但即便是特定领域，如果用在某些如医药、天气预测等专门领域，也是非常有意义的。


认识 Plots：一款适用于 Linux 桌面的数学图形绘图应用

![](/data/attachment/album/202102/25/140338su2fju6016t5q2tz.jpg)

Plots 是一款图形绘图应用，它可以轻松实现数学公式的可视化。你可以用它来绘制任意三角函数、双曲函数、指数函数和对数函数的和与积。

### 在 Linux 上使用 Plots 绘制数学图形

[Plots](https://github.com/alexhuntley/Plots/) 是一款简单的应用，它的灵感来自于像 [Desmos](https://www.desmos.com/) 这样的 Web 图形绘图应用。它能让你绘制不同数学函数的图形，你可以交互式地输入这些函数，还可以自定义绘图的颜色。

Plots 是用 Python 编写的，它使用 [OpenGL](https://www.opengl.org/) 来利用现代硬件。它使用 GTK 3，因此可以很好地与 GNOME 桌面集成。

![](/data/attachment/album/202102/25/140348joyulfknyfxunzii.png)

使用 Plots 非常直白。要添加一个新的方程，点击加号。点击垃圾箱图标可以删除方程。还可以选择撤销和重做。你也可以放大和缩小。

![](/data/attachment/album/202102/25/140349s32i6rz3ck1fftss.png)

你输入方程的文本框是友好的。菜单中有一个“帮助”选项可以访问文档。你可以在这里找到关于如何编写各种数学符号的有用提示。你也可以复制粘贴方程。

![](/data/attachment/album/202102/25/140350j3z02l900e2cyh7a.png)

在深色模式下，侧栏公式区域变成了深色，但主绘图区域仍然是白色。我相信这也许是这样设计的。

你可以使用多个函数，并将它们全部绘制在一张图中：

![](/data/attachment/album/202102/25/140352s0jpsjyal3zhw999.png)

我发现它在尝试粘贴一些它无法理解的方程时崩溃了。如果你写了一些它不能理解的东西，或者与现有的方程冲突，所有图形都会消失，去掉不正确的方程就会恢复图形。

不幸的是，没有导出绘图或复制到剪贴板的选项。你可以随时 [在 Linux 中截图](https://itsfoss.com/take-screenshot-linux/)，并在你要添加图像的文档中使用它。

### 在 Linux 上安装 Plots

Plots 为各种发行版提供了不同的安装方式。

Ubuntu 20.04 和 20.10 用户可以[使用 PPA](https://itsfoss.com/ppa-guide/)：

```
sudo add-apt-repository ppa:apandada1/plots
sudo apt update
sudo apt install plots

```

对于其他基于 Debian 的发行版，你可以使用 [这里](https://launchpad.net/~apandada1/+archive/ubuntu/plots/+packages) 的 [deb 文件安装](https://itsfoss.com/install-deb-files-ubuntu/)。

我没有在 AUR 软件包列表中找到它，但是作为 Arch Linux 用户，你可以使用 Flatpak 软件包或者使用 Python 安装它。

* [Plots Flatpak 软件包](https://flathub.org/apps/details/com.github.alexhuntley.Plots)

如果你感兴趣，可以在它的 GitHub 仓库中查看源代码。如果你喜欢这款应用，请考虑在 GitHub 上给它 star。

* [GitHub 上的 Plots 源码](https://github.com/alexhuntley/Plots/)

### 结论

Plots 主要用于帮助学生学习数学或相关科目，但它在很多其他场景下也能发挥作用。我知道不是每个人都需要，但肯定会对学术界和学校的人有帮助。

不过我倒是希望能有导出图片的功能。也许开发者可以在未来的版本中加入这个功能。

你知道有什么类似的绘图应用吗？Plots 与它们相比如何？

---

via: <https://itsfoss.com/plots-graph-app/>

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

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


Starship：跨 shell 的可定制的提示符

有点复杂，还是喜欢自己配 PS1

![](/data/attachment/album/202102/25/142817taqq2ahab0t61zss.jpg)

>
> 如果你很在意你的终端的外观的话，一个跨 shell 的提示符可以让你轻松地定制和配置 Linux 终端提示符。
>
>
>

虽然我已经介绍了一些帮助你 [自定义终端外观](https://itsfoss.com/customize-linux-terminal/) 的技巧，但我也发现了一些有趣的跨 shell 提示符的建议。

### Starship：轻松地调整你的 Linux Shell 提示符

![](/data/attachment/album/202102/25/142443pgvilqoevx0tbp30.png)

[Starship](https://starship.rs/) 是一个用 [Rust](https://www.rust-lang.org/) 编写的开源项目，它可以帮助你建立一个精简、快速、可定制的 shell 提示符。

无论你是使用 bash、fish、还是 Windows 上的 PowerShell，抑或其他 shell，你都可以利用Starship 来定制外观。

请注意，你必须了解它的 [官方文档](https://starship.rs/config/) 才能对所有你喜欢的东西进行高级配置，但在这里，我将包括一个简单的示例配置，以有一个良好的开端，以及一些关于 Startship 的关键信息。

Startship 专注于为你提供一个精简的、快速的、有用的默认 shell 提示符。它甚至会记录并显示执行一个命令所需的时间。例如，这里有一张截图：

![](/data/attachment/album/202102/25/142445g0wcwvvzbnnn31uq.jpg)

不仅如此，根据自己的喜好定制提示符也相当简单。下面是一张官方 GIF，展示了它的操作：

![](/data/attachment/album/202102/25/142504h6rhx7oz4hqq7htq.gif)

让我帮你设置一下。我是在 Ubuntu 上使用 bash shell 来测试的。你可以参考我提到的步骤，或者你可以看看 [官方安装说明](https://starship.rs/guide/#%F0%9F%9A%80-installation)，以获得在你的系统上安装它的更多选择。

### Starship 的亮点

* 跨平台
* 跨 shell 支持
* 能够添加自定义命令
* 定制 git 体验
* 定制使用特定编程语言时的体验
* 轻松定制提示符的每一个方面，而不会对性能造成实质影响

### 在 Linux 上安装 Starship

>
> 安装 Starship 需要下载一个 bash 脚本，然后用 root 权限运行该脚本。
>
>
> 如果你不习惯这样做，你可以使用 snap。
>
>
>
> ```
> sudo snap install starship
>
> ```
>
>

**注意**：你需要安装 [Nerd 字体](https://www.nerdfonts.com) 才能获得完整的体验。

要开始使用，请确保你安装了 [curl](https://curl.se/)。你可以通过键入如下命令来轻松安装它：

```
sudo apt install curl

```

完成后，输入以下内容安装 Starship：

```
curl -fsSL https://starship.rs/install.sh | bash

```

这应该会以 root 身份将 Starship 安装到 `usr/local/bin`。你可能会被提示输入密码。看起来如下：

![](/data/attachment/album/202102/25/142505ltyk3daqktk33fti.png)

### 在 bash 中添加 Starship

如截图所示，你会在终端本身得到设置的指令。在这里，我们需要在 `.bashrc` 用户文件的末尾添加以下一行：

```
eval "$(starship init bash)"

```

要想轻松添加，只需键入：

```
nano .bashrc

```

然后，通过向下滚动导航到文件的末尾，并在文件末尾添加如下图所示的行：

![](/data/attachment/album/202102/25/142506g3qgufqfwq9c3qzc.png)

完成后，只需重启终端或重启会话即可看到一个精简的提示符。对于你的 shell 来说，它可能看起来有点不同，但默认情况下应该是一样的。

![](/data/attachment/album/202102/25/142506gvnl8nvuwpln6vsw.png)

设置好后，你就可以继续自定义和配置提示符了。让我给你看一个我做的配置示例：

### 配置 Starship 提示符：基础

开始你只需要在 `.config` 目录下制作一个配置文件（[TOML文件](https://en.wikipedia.org/wiki/TOML)）。如果你已经有了这个目录，直接导航到该目录并创建配置文件。

下面是创建目录和配置文件时需要输入的内容：

```
mkdir -p ~/.config && touch ~/.config/starship.toml

```

请注意，这是一个隐藏目录。所以，当你试图使用文件管理器从主目录访问它时，请确保在继续之前 [启用查看隐藏文件](https://itsfoss.com/hide-folders-and-show-hidden-files-in-ubuntu-beginner-trick/)。

接下来如果你想探索一些你喜欢的东西，你应该参考配置文档。

举个例子，我配置了一个简单的自定义提示，看起来像这样：

![](/data/attachment/album/202102/25/142507cthitqfp1xfw1o35.png)

为了实现这个目标，我的配置文件是这样的：

![](/data/attachment/album/202102/25/142507tu7j1yzavteebyxk.png)

根据他们的官方文档，这是一个基本的自定义格式。但是，如果你不想要自定义格式，只是想用一种颜色或不同的符号来自定义默认的提示，那就会像这样：

![](/data/attachment/album/202102/25/142507empgqa4v4gm0rzia.png)

上述定制的配置文件是这样的：

![](/data/attachment/album/202102/25/142508en9aala1ndrcnn4a.jpg)

当然，这不是我能做出的最好看的提示符，但我希望你能理解其配置方式。

你可以通过包括图标或表情符来定制目录的外观，你可以调整变量、格式化字符串、显示 git 提交，或者根据使用特定编程语言而调整。

不仅如此，你还可以创建在你的 shell 中使用的自定义命令，让事情变得更简单或舒适。

你可以在他们的 [官方网站](https://starship.rs/) 和它的 [GitHub 页面](https://github.com/starship/starship) 中探索更多的信息。

* [Starship.rs](https://starship.rs/)

### 结论

如果你只是想做一些小的调整，这文档可能会太复杂了。但是，即使如此，它也可以让你用很少的努力实现一个自定义的提示符或精简的提示符，你可以应用于任何普通的 shell 和你正在使用的系统。

总的来说，我不认为它非常有用，但有几个读者建议使用它，看来人们确实喜欢它。我很想看看你是如何 [自定义 Linux 终端](https://itsfoss.com/customize-linux-terminal/) 以适应不同的使用方式。

欢迎在下面的评论中分享你的看法，如果你喜欢的话。

---

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

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

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


硬核观察 | 国产 GPU 能否用于比特币挖矿？目前不能

Summary: 更多：• GNOME 40 Beta 发布：Shell 和 Mutter 迎来重大改进 • 谷歌基于它的需要加大了对开源的赞助

google也会甩锅啊

google这有点五十步笑百步的感觉

来自120.231.207.239的 Chrome 49.0|Windows XP 用户

![](/data/attachment/album/202102/25/155153izydggbbdyy4qdyy.jpg)

### 国产 GPU 能否用于比特币挖矿？目前不能

![](/data/attachment/album/202102/25/155225rlhlzzk417ccceiv.jpg)

现在 AMD、NVIDIA 等 GPU 公司靠着挖矿市场大赚特赚，那国内的 GPU 公司有没有可能分一杯羹？日前已经有人在互动平台上向长沙景嘉微公司询问，他们的 GPU 芯片能不能用于比特币挖矿。该公司表示，公司目前产品不能应用于比特币矿机。未来公司产品是否应用于比特币矿机需视产品研发后的性能与需求而定。

景嘉微目前有 JM5、JM7 两个系列，其中 JM5400 系列已经在国产军用飞机上应用。下一代 GPU 是 JM9 系列，可达到 2017 年底的高端显卡的水平。

我觉得之所以不适合挖矿，可能是在效能方面不够好，但是能支持部分重要领域的应用就很好了。

### GNOME 40 Beta 发布：Shell 和 Mutter 迎来重大改进

![](/data/attachment/album/202102/25/155241mpnnllrvnhbcywzn.jpg)

如果一切正常，稳定版将会在 1 个月后和大家见面。这个版本号从 3.38 一下突破到 40.0 ，带来了很多变化：

* GNOME Shell 启用重新设计的概览区域，默认禁用已经过时的扩展程序
* Mutter 迎来重大改进，包括按需启动 XWayland，默认为水平工作区布局
* GTK 4.1 提供了各种修复和改进。

让我们期待一个月后稳定版发布！

### 谷歌基于它的需要加大了对开源的赞助

![](/data/attachment/album/202102/25/155253stttyqgtgxqcq6qr.jpg)

由于担心 Linux 和开源代码的安全问题，“我们发现错误的速度比修复错误的速度快得多”，谷歌正在[赞助](https://www.linuxfoundation.org/en/press-release/google-funds-linux-kernel-developers-to-focus-exclusively-on-security/)两位全职开发人员来研究内核的安全问题。而在这之前，这两人已经在 Linux 基金会工作好几年了。谷歌的资助符合该公司的利益，但也让其他 Linux 用户受益。当然，除了 Linux 之外，正如我们之前[报道](/article-13114-1.html)的，谷歌也为 Python 赞助了一名全职的核心开发者，提供了 35 万美元的支持。

但是谷歌只是 Linux 基金会每年 10 万美元的黄金会员，而华为、微软、英特尔、Facebook 和红帽在内的公司是白金会员，每年贡献 50 万美元。当然，谷歌[指出](https://www.theregister.com/2021/02/24/google_ups_linux_security_effort/)，AWS 才是每年 2 万美元的白银会员。


LaTeX 排版（3）：排版

![](/data/attachment/album/202102/26/113031wattha0hojj4f4ej.png)

本 [系列](https://fedoramagazine.org/tag/latex/) 介绍了 LaTeX 中的基本格式。[第 1 部分](/article-13112-1.html) 介绍了列表。[第 2 部分](/article-13146-1.html) 阐述了表格。在第 3 部分中，你将了解 LaTeX 的另一个重要特性：细腻灵活的文档排版。本文介绍如何自定义页面布局、目录、标题部分和页面样式。

### 页面维度

当你第一次编写 LaTeX 文档时，你可能已经注意到默认边距比你想象的要大一些。页边距与指定的纸张类型有关，例如 A4、letter 和 documentclass（article、book、report） 等等。要修改页边距，有几个选项，最简单的选项之一是使用 [fullpage](https://www.ctan.org/pkg/fullpage) 包。

>
> 该软件包设置页面的主体，可以使主体几乎占满整个页面。
>
>
> —— FULLPAGE PACKAGE DOCUMENTATION
>
>
>

另一个选择是使用 [geometry](https://www.ctan.org/geometry) 包。在探索 `geometry` 包如何操纵页边距之前，请首先查看如下所示的页面尺寸。

![](/data/attachment/album/202102/26/113134wad4yddy7h9a7qdw.png)

1. 1 英寸 + `\hoffset`
2. 1 英寸 + `\voffset`
3. `\oddsidemargin` = 31pt
4. `\topmargin` = 20pt
5. `\headheight` = 12pt
6. `\headsep` = 25pt
7. `\textheight` = 592pt
8. `\textwidth` = 390pt
9. `\marginparsep` = 35pt
10. `\marginparwidth` = 35pt
11. `\footskip` = 30pt

要使用 `geometry` 包将边距设置为 1 英寸，请使用以下示例

```
\usepackage{geometry}
\geometry{a4paper, margin=1in}

```

除上述示例外，`geometry` 命令还可以修改纸张尺寸和方向。要更改纸张尺寸，请使用以下示例：

```
\usepackage[a4paper, total={7in, 8in}]{geometry}

```

![](/data/attachment/album/202102/26/113135zkuk5w8uekku88zu.png)

要更改页面方向，需要将横向（`landscape`）添加到 `geometery` 选项中，如下所示：

```
\usepackage{geometery}
\geometry{a4paper, landscape, margin=1.5in

```

![](/data/attachment/album/202102/26/113135osk00kn3ssn004k2.png)

### 目录

默认情况下，目录的标题为 “contents”。有时，你想将标题更改为 “Table of Content”，更改目录和章节第一节之间的垂直间距，或者只更改文本的颜色。

若要更改文本，请在导言区中添加以下行，用所需语言替换英语（`english`）：

```
\usepackage[english]{babel}
\addto\captionsenglish{
\renewcommand{\contentsname}
{\bfseries{Table of Contents}}}

```

要操纵目录与图、小节和章节列表之间的虚拟间距，请使用 `tocloft` 软件包。本文中使用的两个选项是 `cftbeforesecskip` 和 `cftaftertoctitleskip`。

>
> tocloft 包提供了控制目录、图表列表和表格列表的排版方法。
>
>
> —— TOCLOFT PACKAGE DOUCMENTATION
>
>
>

```
\usepackage{tocloft}
\setlength\ctfbeforesecskip{2pt}
\setlength\cftaftertoctitleskip{30pt}

```

![](/data/attachment/album/202102/26/113136vlo6o5yb6oo4z15g.png)

*默认目录*

![](/data/attachment/album/202102/26/113136b9ju7jz66t7ks2uh.png)

*定制目录*

### 边框

在文档中使用包 [hyperref](https://www.ctan.org/pkg/hyperref) 时，目录中的 LaTeX 章节列表和包含 `\url` 的引用都有边框，如下图所示。

![](/data/attachment/album/202102/26/113136fl9ldk778dryk8cl.png)

要删除这些边框，请在导言区中包括以下内容，你将看到目录中没有任何边框。

```
\usepackage{hyperref}
\hypersetup{ pdfborder = {0 0 0}}

```

要修改标题部分的字体、样式或颜色，请使用程序包 [titlesec](https://www.ctan.org/pkg/titlesec)。在本例中，你将更改节、子节和三级子节的字体大小、字体样式和字体颜色。首先，在导言区中增加以下内容。

```
\usepackage{titlesec}
\titleformat*{\section}{\Huge\bfseries\color{darkblue}}
\titleformat*{\subsection}{\huge\bfseries\color{darkblue}}
\titleformat*{\subsubsection}{\Large\bfseries\color{darkblue}}

```

仔细看看代码，`\titleformat*{\section}` 指定要使用的节的深度。上面的示例最多使用第三个深度。`{\Huge\bfseries\color{darkblue}}` 部分指定字体大小、字体样式和字体颜色。

### 页面样式

要自定义的页眉和页脚，请使用 [fancyhdr](https://www.ctan.org/pkg/fancyhdr)。此示例使用此包修改页面样式、页眉和页脚。下面的代码简要描述了每个选项的作用。

```
\pagestyle{fancy} %for header to be on each page
\fancyhead[L]{} %keep left header blank
\fancyhead[C]{} %keep centre header blank
\fancyhead[R]{\leftmark} %add the section/chapter to the header right
\fancyfoot[L]{Static Content} %add static test to the left footer
\fancyfoot[C]{} %keep centre footer blank
\fancyfoot[R]{\thepage} %add the page number to the right footer
\setlength\voffset{-0.25in} %space between page border and header (1in + space)
\setlength\headheight{12pt} %height of the actual header.
\setlength\headsep{25pt} %separation between header and text.
\renewcommand{\headrulewidth}{2pt} % add header horizontal line
\renewcommand{\footrulewidth}{1pt} % add footer horizontal line

```

结果如下所示：

![](/data/attachment/album/202102/26/113137jpfx8upxpchffyhh.png)

*页眉*

![](/data/attachment/album/202102/26/113137bx1cxurcxf0cmw9o.png)

*页脚*

### 小贴士

#### 集中导言区

如果要编写许多 TeX 文档，可以根据文档类别创建一个包含所有导言区的 `.tex` 文件并引用此文件。例如，我使用结构 `.tex` 如下所示。

```
$ cat article_structure.tex
\usepackage[english]{babel}
\addto\captionsenglish{
\renewcommand{\contentsname}
{\bfseries{\color{darkblue}Table of Contents}}
} % Relable the contents
%\usepackage[margin=0.5in]{geometry} % specifies the margin of the document
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx} % allows you to add graphics to the document
\usepackage{hyperref} % permits redirection of URL from a PDF document
\usepackage{fullpage} % formate the content to utilise the full page
%\usepackage{a4wide}
\usepackage[export]{adjustbox} % to force image position
%\usepackage[section]{placeins} % to have multiple images in a figure
\usepackage{tabularx} % for wrapping text in a table
%\usepackage{rotating}
\usepackage{multirow}
\usepackage{subcaption} % to have multiple images in a figure
%\usepackage{smartdiagram} % initialise smart diagrams
\usepackage{enumitem} % to manage the spacing between lists and enumeration
\usepackage{fancyhdr} %, graphicx} %for header to be on each page
\pagestyle{fancy} %for header to be on each page
%\fancyhf{}
\fancyhead[L]{}
\fancyhead[C]{}
\fancyhead[R]{\leftmark}
\fancyfoot[L]{Static Content} %\includegraphics[width=0.02\textwidth]{virgin_voyages.png}}
\fancyfoot[C]{} % clear center
\fancyfoot[R]{\thepage}
\setlength\voffset{-0.25in} %Space between page border and header (1in + space)
\setlength\headheight{12pt} %Height of the actual header.
\setlength\headsep{25pt} %Separation between header and text.
\renewcommand{\headrulewidth}{2pt} % adds horizontal line
\renewcommand{\footrulewidth}{1pt} % add horizontal line (footer)
%\renewcommand{\oddsidemargin}{2pt} % adjuct the margin spacing
%\renewcommand{\pagenumbering}{roman} % change the numbering style
%\renewcommand{\hoffset}{20pt}
%\usepackage{color}
\usepackage[table]{xcolor}
\hypersetup{ pdfborder = {0 0 0}} % removes the red boarder from the table of content
%\usepackage{wasysym} %add checkbox
%\newcommand\insq[1]{%
% \Square\ #1\quad%
%} % specify the command to add checkbox
%\usepackage{xcolor}
%\usepackage{colortbl}
%\definecolor{Gray}{gray}{0.9} % create new colour
%\definecolor{LightCyan}{rgb}{0.88,1,1} % create new colour
%\usepackage[first=0,last=9]{lcg}
%\newcommand{\ra}{\rand0.\arabic{rand}}
%\newcolumntype{g}{>{\columncolor{LightCyan}}c} % create new column type g
%\usesmartdiagramlibrary{additions}
%\setcounter{figure}{0}
\setcounter{secnumdepth}{0} % sections are level 1
\usepackage{csquotes} % the proper was of using double quotes
%\usepackage{draftwatermark} % Enable watermark
%\SetWatermarkText{DRAFT} % Specify watermark text
%\SetWatermarkScale{5} % Toggle watermark size
\usepackage{listings} % add code blocks
\usepackage{titlesec} % Manipulate section/subsection
\titleformat{\section}{\Huge\bfseries\color{darkblue}} % update sections to bold with the colour blue \titleformat{\subsection}{\huge\bfseries\color{darkblue}} % update subsections to bold with the colour blue
\titleformat*{\subsubsection}{\Large\bfseries\color{darkblue}} % update subsubsections to bold with the colour blue
\usepackage[toc]{appendix} % Include appendix in TOC
\usepackage{xcolor}
\usepackage{tocloft} % For manipulating Table of Content virtical spacing
%\setlength\cftparskip{-2pt}
\setlength\cftbeforesecskip{2pt} %spacing between the sections
\setlength\cftaftertoctitleskip{30pt} % space between the first section and the text ``Table of Contents''
\definecolor{navyblue}{rgb}{0.0,0.0,0.5}
\definecolor{zaffre}{rgb}{0.0, 0.08, 0.66}
\definecolor{white}{rgb}{1.0, 1.0, 1.0}
\definecolor{darkblue}{rgb}{0.0, 0.2, 0.6}
\definecolor{darkgray}{rgb}{0.66, 0.66, 0.66}
\definecolor{lightgray}{rgb}{0.83, 0.83, 0.83}
%\pagenumbering{roman}

```

在你的文章中，请参考以下示例中所示的方法引用 `structure.tex` 文件：

```
\documentclass[a4paper,11pt]{article}
\input{/path_to_structure.tex}}
\begin{document}
......
\end{document}

```

#### 添加水印

要在 LaTeX 文档中启用水印，请使用 [draftwatermark](https://www.ctan.org/pkg/draftwatermark) 软件包。下面的代码段和图像演示了如何在文档中添加水印。默认情况下，水印颜色为灰色，可以将其修改为所需的颜色。

```
\usepackage{draftwatermark}
\SetWatermarkText{\color{red}Classified} %add watermark text
\SetWatermarkScale{4} %specify the size of the text

```

![](/data/attachment/album/202102/26/113137pcric8d7hdwf5bi5.png)

### 结论

在本系列中，你了解了 LaTeX 提供的一些基本但丰富的功能，这些功能可用于自定义文档以满足你的需要或将文档呈现给的受众。LaTeX 海洋中，还有许多软件包需要大家自行去探索。

---

via: <https://fedoramagazine.org/latex-typesetting-part-3-formatting/>

作者：[Earl Ramirez](https://fedoramagazine.org/author/earlramirez/) 选题：[Chao-zhi](https://github.com/Chao-zhi) 译者：[Chao-zhi](https://github.com/Chao-zhi) 校对：[wxy](https://github.com/wxy)

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


Kubernetes 调度器是如何工作的

Summary: 了解 Kubernetes 调度器是如何发现新的吊舱并将其分配到节点。

了解 Kubernetes 调度器是如何发现新的吊舱并将其分配到节点。

>
> 了解 Kubernetes 调度器是如何发现新的吊舱并将其分配到节点。
>
>
>

![](/data/attachment/album/202102/26/123446popgvrc0vppptvtk.jpg "Parts, modules, containers for software")

[Kubernetes](https://kubernetes.io/) 已经成为容器和容器化工作负载的标准编排引擎。它提供一个跨公有云和私有云环境的通用和开源的抽象层。

对于那些已经熟悉 Kuberbetes 及其组件的人，他们的讨论通常围绕着如何尽量发挥 Kuberbetes 的功能。但当你刚刚开始学习 Kubernetes 时，尝试在生产环境中使用前，明智的做法是从一些关于 Kubernetes 相关组件（包括 [Kubernetes 调度器](https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/)） 开始学习，如下抽象视图中所示：

![](/data/attachment/album/202102/26/123502gj4x8x7vg35y88vb.png)

Kubernetes 也分为控制平面和工作节点：

1. **控制平面：** 也称为主控，负责对集群做出全局决策，以及检测和响应集群事件。控制平面组件包括：

* etcd
* kube-apiserver
* kube-controller-manager
* 调度器

2. **工作节点：** 也称节点，这些节点是工作负载所在的位置。它始终和主控联系，以获取工作负载运行所需的信息，并与集群外部进行通讯和连接。工作节点组件包括：

* kubelet
* kube-proxy
* CRI

我希望这个背景信息可以帮助你理解 Kubernetes 组件是如何关联在一起的。

### Kubernetes 调度器是如何工作的

Kubernetes <ruby> <a href="https://kubernetes.io/docs/concepts/workloads/pods/">  吊舱 </a> <rt>  pod </rt></ruby> 由一个或多个容器组成组成，共享存储和网络资源。Kubernetes 调度器的任务是确保每个吊舱分配到一个节点上运行。

（LCTT 译注：容器技术领域大量使用了航海比喻，pod 一词，意为“豆荚”，在航海领域指“吊舱” —— 均指盛装多个物品的容器。常不翻译，考虑前后文，可译做“吊舱”。）

在更高层面下，Kubernetes 调度器的工作方式是这样的：

1. 每个需要被调度的吊舱都需要加入到队列
2. 新的吊舱被创建后，它们也会加入到队列
3. 调度器持续地从队列中取出吊舱并对其进行调度

[调度器源码](https://github.com/kubernetes/kubernetes/blob/e4551d50e57c089aab6f67333412d3ca64bc09ae/plugin/pkg/scheduler/scheduler.go)（`scheduler.go`）很大，约 9000 行，且相当复杂，但解决了重要问题：

#### 等待/监视吊舱创建的代码

监视吊舱创建的代码始于 `scheduler.go` 的 8970 行，它持续等待新的吊舱：

```
// Run begins watching and scheduling. It waits for cache to be synced, then starts a goroutine and returns immediately.

func (sched *Scheduler) Run() {
        if !sched.config.WaitForCacheSync() {
                return
        }

        go wait.Until(sched.scheduleOne, 0, sched.config.StopEverything)

```

#### 负责对吊舱进行排队的代码

负责对吊舱进行排队的功能是：

```
// queue for pods that need scheduling
        podQueue *cache.FIFO

```

负责对吊舱进行排队的代码始于 `scheduler.go` 的 7360 行。当事件处理程序触发，表明新的吊舱显示可用时，这段代码将新的吊舱加入队列中：

```
func (f *ConfigFactory) getNextPod() *v1.Pod {
        for {
                pod := cache.Pop(f.podQueue).(*v1.Pod)
                if f.ResponsibleForPod(pod) {
                        glog.V(4).Infof("About to try and schedule pod %v", pod.Name)
                        return pod
                }
        }
}

```

#### 处理错误代码

在吊舱调度中不可避免会遇到调度错误。以下代码是处理调度程序错误的方法。它监听 `podInformer` 然后抛出一个错误，提示此吊舱尚未调度并被终止：

```
// scheduled pod cache
        podInformer.Informer().AddEventHandler(
                cache.FilteringResourceEventHandler{
                        FilterFunc: func(obj interface{}) bool {
                                switch t := obj.(type) {
                                case *v1.Pod:
                                        return assignedNonTerminatedPod(t)
                                default:
                                        runtime.HandleError(fmt.Errorf("unable to handle object in %T: %T", c, obj))
                                        return false
                                }
                        },

```

换句话说，Kubernetes 调度器负责如下：

* 将新创建的吊舱调度至具有足够空间的节点上，以满足吊舱的资源需求。
* 监听 kube-apiserver 和控制器是否创建新的吊舱，然后调度它至集群内一个可用的节点。
* 监听未调度的吊舱，并使用 `/binding` 子资源 API 将吊舱绑定至节点。

例如，假设正在部署一个需要 1 GB 内存和双核 CPU 的应用。因此创建应用吊舱的节点上需有足够资源可用，然后调度器会持续运行监听是否有吊舱需要调度。

### 了解更多

要使 Kubernetes 集群工作，你需要使以上所有组件一起同步运行。调度器有一段复杂的的代码，但 Kubernetes 是一个很棒的软件，目前它仍是我们在讨论或采用云原生应用程序时的首选。

学习 Kubernetes 需要精力和时间，但是将其作为你的专业技能之一能为你的职业生涯带来优势和回报。有很多很好的学习资源可供使用，而且 [官方文档](https://kubernetes.io/docs/home/) 也很棒。如果你有兴趣了解更多，建议从以下内容开始：

* [Kubernetes the hard way](https://github.com/kelseyhightower/kubernetes-the-hard-way)
* [Kubernetes the hard way on bare metal](https://github.com/Praqma/LearnKubernetes/blob/master/kamran/Kubernetes-The-Hard-Way-on-BareMetal.md)
* [Kubernetes the hard way on AWS](https://github.com/Praqma/LearnKubernetes/blob/master/kamran/Kubernetes-The-Hard-Way-on-AWS.md)

你喜欢的 Kubernetes 学习方法是什么？请在评论中分享吧。

---

via: <https://opensource.com/article/20/11/kubernetes-scheduler>

作者：[Mike Calizo](https://opensource.com/users/mcalizo) 选题：[lujun9972](https://github.com/lujun9972) 译者：[MZqk](https://github.com/MZqk) 校对：[wxy](https://github.com/wxy)

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


硬核观察 | 红帽向开源社区和机构免费提供 RHEL

Summary: 更多：• Canonical 将对维护版本更新启用更严苛的质量管控机制 • 英国谍报机构加大使用人工智能

![](/data/attachment/album/202102/26/135741t8w0w088w0zkxvxm.jpg)

### 红帽向开源社区和机构免费提供 RHEL

![](/data/attachment/album/202102/26/135750dzsjy314k7iyyby1.jpg)

在红帽宣布要结束对 CentOS 项目的支持之后，招致了很大的反对意见和应对措施，也有很多企业趁机觊觎由此产生的市场空缺。因此，红帽做了一些补救工作，试图挽救社区的信任和潜在市场。

上个月，红帽宣布向小型生产环境提供免费的红帽企业版（RHEL）。而现在，红帽进一步[宣布](https://www.redhat.com/en/blog/extending-no-cost-red-hat-enterprise-linux-open-source-organizations)对开源社区、项目、基金会和其他组织提供稳定的基础，以创建和托管创新的开源软件。红帽称，“我们经常向这些团体提供免费使用 RHEL 的服务，但这个过程并不像我们希望的那样正规、一致、方便或透明。……我们希望确保那些从事开源的组织在构建和测试未来的开源软件时能够访问 RHEL。”

这个计划只提供给开源项目和其他支持生产开源软件的组织。一般来说，所有在 Fedora 认可的许可证下发布的软件都被视为本计划的开源软件。由营利性公司赞助的项目也可以得到支持，但仅用于独立的项目基础架构。

我觉得红帽不如踏踏实实认错，比这样一点点释放免费名额更好。

### Canonical 将对维护版本更新启用更严苛的质量管控机制

![](/data/attachment/album/202102/26/135809xgyyk9hrvh0kgttw.jpg)

从今年夏季即将推出的 Ubuntu 20.04.3 LTS 更新开始，Canonical 将会启用更严苛的限制，通过更优秀的质量管控机制来减少性能回归，并发布更优秀的版本。这就意味着每个修复都必须要遵循统一的验证、回归分析和老化过程等。Canonical 表示，“推迟维护版本更新是不幸的，但总比降低我们的质量标准要好。”

确实，如果 LTS 版本在更新过程中不能保证稳定可靠，那就失去了 LTS 的意义了。只不过我以为原本就应该是这样的。

### 英国谍报机构加大使用人工智能

![](/data/attachment/album/202102/26/135821wmubuhzwdv4jj6um.jpg)

英国最高情报和安全机构 GCHQ [认为](https://www.gchq.gov.uk/news/artificial-intelligence)，该组织所处理的大量数据，让安全机构和执法机构承受着巨大的压力；AI 可以减轻这种负担，不仅可以提高专家的决策速度，还可以提高决策质量。

情报机构对使用人工智能有着浓厚的兴趣并不是什么新闻；但 GCHQ 新发表的论文表明，GCHQ 准备在未来几年进一步加强其算法武器库。

人工智能是一种技术，但是用在什么地方才是正确的，这还有争议。我觉得，用在猴脸识别上就挺好。


选择 Linux 来做艺术设计的 4 个理由

>
> 开源会强化你的创造力。因为它把你带出专有的思维定势，开阔你的视野，从而带来更多的可能性。让我们探索一些开源的创意项目。
>
>
>

![](/data/attachment/album/202102/27/135654k1x4um187i1i7wm1.jpg "Painting art on a computer screen")

2021 年，人们比以前的任何时候都更有理由来爱上 Linux。在这个系列，我会分享 21 个选择 Linux 的原因。今天，让我来解释一下，为什么 Linux 是艺术设计的绝佳选择。

Linux 在服务器和云计算方面获得很多的赞誉。让不少人感到惊讶的是，Linux 刚好也有一系列的很棒的创意设计工具，并且这些工具在用户体验和质量方面可以媲美那些流行的创意设计工具。我第一次使用开源的设计工具时，并不是因为我没有其他工具可以选择。相反的，我是在接触了大量的这些领先的公司提供的专有设计工具后，才开始使用开源设计工具。我之所以最后选择开源设计工具是因为开源更有意义，而且我能获得更好的产出。这些都是一些笼统的说法，所以请允许我解释一下。

### 高可用性意味着高生产力

“生产力”这一次对于不同的人来说含义不一样。当我想到生产力，就是当你坐下来做事情，并能够完成你给自己设定的所有任务的时候，这时就很有成就感。但是当你总是被一些你无法掌控的事情打断，那你的生产力就下降了。

计算机看起来是不可预测的，诚然有很多事情会出错。电脑是由很多的硬件组成的，它们任何一个都有可能在任何时间出问题。软件会有 bug，也有修复这些 bug 的更新，而更新后又会带来新的 bug。如果你对电脑不了解，它可能就像一个定时炸弹，等着爆发。带着数字世界里的这么多的潜在问题，去接受一个当某些条件不满足（比如许可证，或者订阅费）就会不工作的软件，对我来说就显得很不理智。

![Inkscape 应用](/data/attachment/album/202102/27/135731kr2xh11472i29v1o.jpg)

开源的创意设计应用不需要订阅费，也不需要许可证。在你需要的时候，它们都能获取得到，并且通常都是跨平台的。这就意味着，当你坐在工作的电脑面前，你就能确定你能用到那些必需的软件。而如果某天你很忙碌，却发现你面前的电脑不工作了，解决办法就是找到一个能工作的，安装你的创意设计软件，然后开始工作。

例如，要找到一台无法运行 Inkscape 的电脑，比找到一台可以运行那些专有软件的电脑要难得多。这就叫做高可用。这是游戏规则的改变者。我从来不曾遇到因为软件用不了而不得不干等，浪费我数小时时间的事情。

### 开放访问更有利于多样性

我在设计行业工作的时候，我的很多同事都是通过自学的方式来学习艺术和技术方面的知识，这让我感到惊讶。有的通过使用那些最新的昂贵的“专业”软件来自学，但总有一大群人是通过使用自由和开源的软件来完善他们的数字化的职业技能。因为，对于孩子，或者没钱的大学生来说，这才是他们能负担的起，而且很容易就能获得的。

这是一种不同的高可用性，但这对我和许多其他用户来说很重要，如果不是因为开源，他们就不会从事创意行业。即使那些有提供付费订阅的开源项目，比如 Ardour，都能确保他的用户在不需要支付任何费用的时候也能使用软件。

![Ardour 界面](/data/attachment/album/202102/27/135731cz8lr9jjj9b3t3ad.jpg)

当你不限制别人用你的软件的时候，你其实拥有了更多的潜在用户。如果你这样做了，那么你就开放了一个接收多样的创意声音的窗口。艺术钟爱影响力，你可以借鉴的经验和想法越多就越好。这就是开源设计软件所带来的可能性。

### 文件格式支持更具包容性

我们都知道在几乎所有行业里面包容性的价值。在各种意义上，邀请更多的人到派对可以造就更壮观的场面。知道这一点，当看到有的项目或者创新公司只邀请某些人去合作，只接受某些文件格式，就让我感到很痛苦。这看起来很陈旧，就像某个远古时代的精英主义的遗迹，而这是即使在今天都在发生的真实问题。

令人惊讶和不幸的是，这不是因为技术上的限制。专有软件可以访问开源的文件格式，因为这些格式是开源的，而且可以自由地集成到各种应用里面。集成这些格式不需要任何回报。而相比之下，专有的文件格式被笼罩在秘密之中，只被限制于提供给几个愿意付钱的人使用。这很糟糕，而且常常，你无法在没有这些专有软件的情况下打开一些文件来获取你的数据。令人惊喜的是，开源的设计软件却是尽力的支持更多的专有文件格式。以下是一些 Inkscape 所支持的令人难以置信的列表样本：

![可用的 Inkscape 文件格式](/data/attachment/album/202102/27/135731zlbjleb6lkteite6.jpg)

而这大部分都是在没有这些专有格式厂商的支持下开发出来的。

支持开放的文件格式可以更包容，对所有人都更好。

### 对新的创意没有限制

我之所以爱上开源的其中一个原因是，解决一个指定任务时，有彻底的多样性。当你在专有软件周围时，你所看到的世界是基于你所能够获取得到的东西。比如说，你过你打算处理一些照片，你通常会把你的意图局限在你所知道的可能性上面。你从你的架子上的 4 款或 10 款应用中，挑选出 3 款，因为它们是目前你唯一能够获取得到的选项。

在开源领域，你通常会有好几个“显而易见的”必备解决方案，但同时你还有一打的角逐者在边缘转悠，供你选择。这些选项有时只是半成品，或者它们超级专注于某项任务，又或者它们学起来有点挑战性，但最主要的是，它们是独特的，而且充满创新的。有时候，它们是被某些不按“套路”出牌的人所开发的，因此处理的方法和市场上现有的产品截然不同。其他时候，它们是被那些熟悉做事情的“正确”方式，但还是在尝试不同策略的人所开发的。这就像是一个充满可能性的巨大的动态的头脑风暴。

这种类型的日常创新能够引领出闪现的灵感、光辉时刻，或者影响广泛的通用性改进。比如说，著名的 GIMP 滤镜，（用于从图像中移除项目并自动替换背景）是如此的受欢迎以至于后来被专有图片编辑软件商拿去“借鉴”。这是成功的一步，但是对于一个艺术家而言，个人的影响才是最关键的。我常感叹于新的 Linux 用户的创意，而我只是在技术展会上展示给他们一个简单的音频，或者视频滤镜，或者绘图应用。没有任何的指导，或者应用场景，从简单的交互中喷发出来的关于新的工具的主意，是令人兴奋和充满启发的，通过实验中一些简单的工具，一个全新的艺术系列可以轻而易举的浮现出来。

只要在适当的工具集都有的情况下，有很多方式来更有效的工作。虽然私有软件通常也不会反对更聪明的工作习惯的点子，专注于实现自动化任务让用户可以更轻松的工作，对他们也没有直接的收益。Linux 和开源软件就是很大程度专为 [自动化和编排](https://opensource.com/article/20/11/orchestration-vs-automation) 而建的，而不只是服务器。像 [ImageMagick](https://opensource.com/life/16/6/fun-and-semi-useless-toys-linux#imagemagick) 和 [GIMP 脚本](https://opensource.com/article/21/1/gimp-scripting) 这样的工具改变了我的处理图片的方式，包括批量处理方面和纯粹实验方面。

你永远不知道你可以创造什么，如果你有一个你从来想象不到会存在的工具的话。

### Linux 艺术家

这里有 [使用开源的艺术家社区](https://librearts.org)，从 [photography](https://pixls.us) 到 [makers](https://www.redhat.com/en/blog/channel/red-hat-open-studio) 到 [musicians](https://linuxmusicians.com)，还有更多更多。如果你想要创新，试试 Linux 吧。

---

via: <https://opensource.com/article/21/2/linux-art-design>

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

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


不习惯在终端使用 youtube-dl？可以使用这些 GUI 应用

Summary: 使用 youtube-dl 并不复杂，但我明白使用命令来完成这种任务并不是每个人都喜欢的方式。

![](/data/attachment/album/202102/27/143909m29a8m8kgkzmmskc.jpg)

如果你一直在关注我们，可能已经知道 [youtube-dl 项目曾被 GitHub 暂时下架](https://itsfoss.com/youtube-dl-github-takedown/) 以合规。但它现在已经恢复并完全可以访问，可以说它并不是一个非法的工具。

它是一个非常有用的命令行工具，可以让你 [从 YouTube](https://itsfoss.com/download-youtube-videos-ubuntu/) 和其他一些网站下载视频。使用 [youtube-dl](https://itsfoss.com/download-youtube-linux/) 并不复杂，但我明白使用命令来完成这种任务并不是每个人都喜欢的方式。

好在有一些应用为 `youtube-dl` 工具提供了 GUI 前端。

### 使用 youtube-dl GUI 应用的先决条件

在你尝试下面提到的一些选择之前，你可能需要在你的系统上安装 `youtube-dl` 和 [FFmpeg](https://ffmpeg.org/)，才能够下载/选择不同的格式进行下载。

你可以按照我们的 [ffmpeg 使用完整指南](https://itsfoss.com/ffmpeg/#install) 进行设置，并探索更多关于它的内容。

要安装 [youtube-dl](https://youtube-dl.org/)，你可以在 Linux 终端输入以下命令：

```
sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl

```

下载最新版本后，你只需要输入以下内容使其可执行就可使用：

```
sudo chmod a+rx /usr/local/bin/youtube-dl

```

如果你需要其他方法安装它，也可以按照[官方安装说明](https://ytdl-org.github.io/youtube-dl/download.html)进行安装。

### Youtube-dl GUI 应用

大多数 Linux 上的下载管理器也允许你从 YouTube 和其他网站下载视频。然而，youtube-dl GUI 应用可能有额外的选项，如只提取音频或下载特定分辨率和视频格式。

请注意，下面的列表没有特别的排名顺序。你可以根据你的要求选择。

#### 1、AllTube Download

![](/data/attachment/album/202102/27/144018ibecoq5wm7fwfcmd.jpg)

**主要特点：**

* Web GUI
* 开源
* 可以自托管

AllTube 是一个开源的 web GUI，你可以通过 <https://alltubedownload.net/> 来访问。

如果你选择使用这款软件，你不需要在系统上安装 youtube-dl 或 ffmpeg。它提供了一个简单的用户界面，你只需要粘贴视频的 URL，然后继续选择你喜欢的文件格式下载。你也可以选择将其部署在你的服务器上。

请注意，你不能使用这个工具提取视频的 MP3 文件，它只适用于视频。你可以通过他们的 [GitHub 页面](https://github.com/Rudloff/alltube)探索更多关于它的信息。

* [AllTube Download Web GUI](https://alltubedownload.net/)

#### 2、youtube-dl GUI

![](/data/attachment/album/202102/27/144018civmqtttm3qmeqv9.jpg)

**主要特点：**

* 跨平台
* 显示预计下载大小
* 有音频和视频下载选择

一个使用 electron 和 node.js 制作的有用的跨平台 GUI 应用。你可以很容易地下载音频和视频，以及选择各种可用的文件格式的选项。

如果你愿意的话，你还可以下载一个频道或播放列表的部分内容。特别是当你下载高质量的视频文件时，预计的下载大小绝对是非常方便的。

如上所述，它也适用于 Windows 和 MacOS。而且，你会在它的 [GitHub 发布](https://github.com/jely2002/youtube-dl-gui/releases/tag/v1.8.7)中得到一个适用于 Linux 的 AppImage 文件。

* [Youtube-dl GUI](https://github.com/jely2002/youtube-dl-gui)

#### 3、Videomass

![](/data/attachment/album/202102/27/144018vt8wxgpcecrjdm6x.jpg)

**主要特点：**

* 跨平台
* 转换音频/视频格式
* 支持多个 URL
* 适用于也想使用 FFmpeg 的用户

如果你想从 YouTube 下载视频或音频，并将它们转换为你喜欢的格式，Videomass 可以是一个不错的选择。

要做到这点，你需要在你的系统上同时安装 youtube-dl 和 ffmpeg。你可以轻松的添加多个 URL 来下载，还可以根据自己的喜好设置输出目录。

![](/data/attachment/album/202102/27/144019ktx0h4tkk4hw4utt.jpg)

你还可以获得一些高级设置来禁用 youtube-dl，改变文件首选项，以及随着你的探索，还有一些更方便的选项。

它为 Ubuntu 用户提供了一个 PPA，为任何其他 Linux 发行版提供了一个 AppImage 文件。在它的 [Github 页面](https://github.com/jeanslack/Videomass)探索更多信息。

* [Videomass](https://jeanslack.github.io/Videomass/)

#### 附送：Haruna Video Player

![](/data/attachment/album/202102/27/144020he7444txhq7w7xah.jpg)

**主要特点：**

* 播放/流式传输 YouTube 视频

Haruna Video Player 原本是 [MPV](https://mpv.io/) 的前端。虽然使用它不能下载 YouTube 视频，但可以通过 youtube-dl 观看/流式传输 YouTube 视频。

你可以在我们的[文章](https://itsfoss.com/haruna-video-player/)中探索更多关于视频播放器的内容。

### 总结

尽管你可能会在 GitHub 和其他平台上找到更多的 youtube-dl GUI，但它们中的大多数都不能很好地运行，最终会显示出多个错误，或者不再积极开发。

[Tartube](https://github.com/axcore/tartube) 就是这样的一个选择，你可以尝试一下，但可能无法达到预期的效果。我用 Pop!\_OS 和 Ubuntu MATE 20.04（全新安装）进行了测试。每次我尝试下载一些东西时，无论我怎么做都会失败（即使系统中安装了 youtube-dl 和 ffmpeg）。

所以，我个人最喜欢的似乎是 Web GUI（[AllTube Download](https://github.com/Rudloff/alltube)），它不依赖于安装在你系统上的任何东西，也可以自托管。

如果我错过了你最喜欢的选择，请在评论中告诉我什么是最适合你的。

---

via: <https://itsfoss.com/youtube-dl-gui-apps/>

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

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


硬核观察 | 微软开源抓出 SolarWinds 黑客的工具代码

Summary: 更多：• Google 承认 Kubernetes 容器技术太复杂 • LastPass 安卓应用中有 7 个嵌入式追踪器

![](/data/attachment/album/202102/27/183528wkq1yl5ffekujg1l.jpg)

### 微软开源抓出 SolarWinds 黑客的工具代码

![](/data/attachment/album/202102/27/183544m3zp9kg500f5f6p9.jpg)

微软利用 GitHub 的 [CodeQL](https://github.com/github/codeql) 发现其源代码是否在 SolarWinds 供应链攻击中被修改。为了调查 SolarWinds Orion 软件更新中植入的恶意软件，微软开源了其使用的 [CodeQL 查询](https://aka.ms/Solorigate-CodeQL-Queries)。微软使用 CodeQL 查询分析其源代码，确认其源代码中没有与 SolarWinds 事件相关的泄密指标和编码模式。

CodeQL 是一个语义代码分析引擎，它可以扫描发现代码库中的漏洞。使用 CodeQL，可以像对待数据一样查询代码。

这是一个有用的工具，更好是，微软开源了其抓捕黑客代码的知识，这种积极主动开源的心态值得点赞。果然是开源大厂。

### Google 承认 Kubernetes 容器技术太复杂

![](/data/attachment/album/202102/27/183604hpudttr139t2hru1.jpg)

Google 的 GKE 产品负责人[说](https://www.theregister.com/2021/02/25/google_kubernetes_autopilot/)，尽管有过去六年的进步，Kubernetes 仍然难以置信的复杂，过去一年他们看到很多企业用户拥抱 Kubernetes，但随后就陷入了困境。

Google 推出了新的 [Autopilo](https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview) 服务尝试简化配置和管理，可以通过预配置选项在减少灵活性的同时增加方便性。

相对来说，AWS 等厂商的 Kubernetes 发行版在易用性方面就比原版的强出不少。

### LastPass 安卓应用中有 7 个嵌入式追踪器

![](/data/attachment/album/202102/27/183614jgkffu3ebfqegz37.jpg)

一份关于著名的密码管理器 LastPass 的[报告显示](https://reports.exodus-privacy.eu.org/en/reports/165465/)，它的 Android 应用中有 7 个追踪器，其中包括来自谷歌的 4 个追踪器，目的是进行分析和崩溃报告。这些追踪器收集到的信息包括正在使用的设备、移动运营商、账户类型、谷歌广告 ID 等。LastPass 表示这些数据用于帮助改进和优化产品，并且用户可以设置关闭。

而对于其它的密码管理器，1Password 和 KeePass 中没有追踪器。开源的 Bitwarden 有两个，用于谷歌的 Firebase 分析和微软 Visual Studio 崩溃报告。

我觉得，对于密码管理器这样的安全敏感应用，还是要谨慎点好。


使用 Linux 软件包管理器的 5 个理由

Summary: 包管理器可以跟踪你安装的软件的所有组件，使得更新、重装和故障排除更加容易。

包管理器可以跟踪你安装的软件的所有组件，使得更新、重装和故障排除更加容易。

>
> 包管理器可以跟踪你安装的软件的所有组件，使得更新、重装和故障排除更加容易。
>
>
>

![](/data/attachment/album/202102/28/123014kuhttz1kkkexwh9j.jpg)

在 2021 年，人们喜欢 Linux 的理由比以往任何时候都多。在这个系列中，我将分享 21 个使用 Linux 的不同理由。今天，我将谈谈软件仓库。

在我使用 Linux 之前，我认为在计算机上安装的应用是理所当然的。我会根据需要安装应用，如果我最后没有使用它们，我就会把它们忘掉，让它们占用我的硬盘空间。终于有一天，我的硬盘空间会变得稀缺，我就会疯狂地删除应用，为更重要的数据腾出空间。但不可避免的是，应用只能释放出有限的空间，所以我将注意力转移到与这些应用一起安装的所有其他零碎内容上，无论是媒体内容还是配置文件和文档。这不是一个管理电脑的好方法。我知道这一点，但我并没有想过要有其他的选择，因为正如人们所说，你不知道自己不知道什么。

当我改用 Linux 时，我发现安装应用的方式有些不同。在 Linux 上，会建议你不要去网站上找应用的安装程序。取而代之的是，运行一个命令，应用就会被安装到系统上，并记录每个单独的文件、库、配置文件、文档和媒体资产。

### 什么是软件仓库？

在 Linux 上安装应用的默认方法是从发行版软件仓库中安装。这可能听起来像应用商店，那是因为现代应用商店借鉴了很多软件仓库的概念。[Linux 也有应用商店](http://flathub.org)，但软件仓库是独一无二的。你通过一个*包管理器*从软件仓库中获得一个应用，它使你的 Linux 系统能够记录和跟踪你所安装的每一个组件。

这里有五个原因可以让你确切地知道你的系统上有什么东西，可以说是非常有用。

#### 1、移除旧应用

当你的计算机知道应用安装的每一个文件时，卸载你不再需要的文件真的很容易。在 Linux 上，安装 [31 个不同的文本编辑器](https://opensource.com/article/21/1/text-editor-roundup)，然后卸载 30 个你不喜欢的文本编辑器是没有问题的。当你在 Linux 上卸载的时候，你就真的卸载了。

#### 2、按你的意思重新安装

不仅卸载要彻底，*重装*也很有意义。在许多平台上，如果一个应用出了问题，有时会建议你重新安装它。通常情况下，谁也说不清为什么要重装一个应用。不过，人们还是经常会隐隐约约地怀疑某个地方的文件已经损坏了（换句话说，数据写入错误），所以希望重装可以覆盖坏的文件以让软件重新工作。这是个不错的建议，但对于任何技术人员来说，不知道是什么地方出了问题都是令人沮丧的。更糟糕的是，如果不仔细跟踪，就不能保证所有的文件都会在重装过程中被刷新，因为通常没有办法知道与应用程序一起安装的所有文件在第一时间就删除了。有了软件包管理器，你可以强制彻底删除旧文件，以确保新文件的全新安装。同样重要的是，你可以研究每个文件并可能找出导致问题的文件，但这是开源和 Linux 的一个特点，而不是包管理。

#### 3、保持你应用的更新

不要听别人告诉你的 Linux 比其他操作系统“更安全”。计算机是由代码组成的，而我们人类每天都会以新的、有趣的方式找到利用这些代码的方法。因为 Linux 上的绝大多数应用都是开源的，所以许多漏洞都会以“<ruby> 常见漏洞和暴露 <rt>  Common Vulnerability and Exposures </rt></ruby>”（CVE）的形式公开。大量涌入的安全漏洞报告似乎是一件坏事，但这绝对是一个*知道*远比*不知道*好的案例。毕竟，没有人告诉你有问题，并不意味着没有问题。漏洞报告是好的。它们对每个人都有好处。而且，当开发人员修复安全漏洞时，对你而言，及时获得这些修复程序很重要，最好不用自己记着动手修复。

包管理器正是为了实现这一点而设计的。当应用收到更新时，无论是修补潜在的安全问题还是引入令人兴奋的新功能，你的包管理器应用都会提醒你可用的更新。

#### 4、保持轻便

假设你有应用 A 和应用 B，这两个应用都需要库 C。在某些操作系统上，通过得到 A 和 B，就会得到了两个 C 的副本。这显然是多余的，所以想象一下，每个应用都会发生几次。冗余的库很快就会增加，而且由于对一个给定的库没有单一的“正确”来源，所以几乎不可能确保你使用的是最新的甚至是一致的版本。

我承认我不会整天坐在这里琢磨软件库，但我确实记得我琢磨的日子，尽管我不知道这就是困扰我的原因。在我还没有改用 Linux 之前，我在处理工作用的媒体文件时遇到错误，或者在玩不同的游戏时出现故障，或者在阅读 PDF 时出现怪异的现象，等等，这些都不是什么稀奇的事情。当时我花了很多时间去调查这些错误。我仍然记得，我的系统上有两个主要的应用分别捆绑了相同（但有区别）的图形后端技术。当一个程序的输出导入到另一个程序时，这种不匹配会导致错误。它本来是可以工作的，但是由于同一个库文件集合的旧版本中的一个错误，一个应用的热修复程序并没有给另一个应用带来好处。

包管理器知道每个应用需要哪些后端（被称为*依赖关系*），并且避免重新安装已经在你系统上的软件。

#### 5、保持简单

作为一个 Linux 用户，我要感谢包管理器，因为它帮助我的生活变得简单。我不必考虑我安装的软件，我需要更新的东西，也不必考虑完成后是否真的将其卸载了。我毫不犹豫地试用软件。而当我在安装一台新电脑时，我运行 [一个简单的 Ansible 脚本](https://opensource.com/article/20/9/install-packages-ansible) 来自动安装我所依赖的所有软件的最新版本。这很简单，很智能，也是一种独特的解放。

### 更好的包管理

Linux 从整体看待应用和操作系统。毕竟，开源是建立在其他开源工作基础上的，所以发行版维护者理解依赖*栈*的概念。Linux 上的包管理了解你的整个系统、系统上的库和支持文件以及你安装的应用。这些不同的部分协调工作，为你提供了一套高效、优化和强大的应用。

---

via: <https://opensource.com/article/21/2/linux-package-management>

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

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