10 个提高 Git 技能的资源

# 10 个提高 Git 技能的资源

>
> 年末总结一下 Git 的最佳表现。以下是告诉你可以在新的一年中以新奇的方式使用 Git 的十篇文章。
>
>
>

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

2019 年过去了，是时候回顾一下我们（opensource.com）今年发表的有关 Git 的前 10 篇文章了。

这些文章包括从用例和教程到一些非常有趣的（甚至有些非常规的）使用 Git 的方法。所有这些文章都可以帮助你提高 Git 技能，但是，如果你确实需要 Git 入门介绍，请务必查看我们的《[Git 入门：术语入门](https://opensource.com/article/19/2/git-terminology)》文章，并下载我们的 [Git 备忘单](https://opensource.com/downloads/cheat-sheet-git)。

1. Molly de Blanc 写的《[GNOME 项目如何使用 Git](https://opensource.com/article/19/10/how-gnome-uses-git)》考察了 GNOME 项目采用的自托管 GitLab 实例的做法，该实例作为 GNOME 项目集中保存对 GNOME 做出的贡献的位置。De Blanc 从事于非编码职位，因此她的文章还探讨了切换到 GitLab 如何使主要角色不是编写代码的贡献者受益。
2. Ahmad Awais 写的《[Emoji-Log：编写 Git 提交信息的新方法](/article-10627-1.html)》解释了如何使用 Emoji-Log（一种直白的、开源的 Git 提交日志标准）来编写更好、更用户友好的 Git 提交消息。本文概述了 Emoji-Log 背后的理论以及可添加到 `.bashrc`、`.zshrc` 或 `.gitconfig` 中的配置示例，以便你快速开始使用 Emoji-Log。
3. 在《[用 Git 管理你的每日行程](/article-11320-1.html)》中，Seth Kenlon 解释了如何使用 Git 来管理日历。通过结合 Org 模式、Git 和其他一些工具，Kenlon 描述了如何创建可在设备之间同步的基于 Git 的日历工作流。
4. 《[用 Git 作为聊天应用的后端](/article-11342-1.html)》，Seth Kenlon 探索了另一种使用 Git 的非常规方式。在本文中，他探讨了 GIC，这是一个用 Node.js 编写的聊天客户端，其中 Git 用作后端数据库。GIC 是一个概念验证模型，不是供产品环境使用的东西，但是它提供了一个有趣的示例，说明了使用 Git 的真正独特方法。
5. Alan Formy-Duval 的《[Git 学习实用练习](https://opensource.com/article/19/5/practical-learning-exercise-git)》是一份他为提高 Git 技能而努力的编年史。他分享了自己的经验，以使其他人受益于他所学，而 Git 新手将从这篇对 Git 核心功能的出色概述中受益匪浅。
6. 《[用 Git 帮助写作者更好地完成工作](/article-11499-1.html)》的作者 Seth Kenlon 着眼于写作者如何从基于 Git 的工作流中受益。本文介绍了如何使用 Git 和 Atom 利用 Markdown 进行书写。通过遵循本文中的示例，写作者可以轻松地将复杂的版本控制系统添加到其编写工作流中。
7. Sachin Patil 在《[如何使用 Magit 管理 Git 项目](https://opensource.com/article/19/1/how-use-magit)》中，解释了如何使用 Emacs 的 Magit 扩展来管理 Git 存储库。本文提供了有关如何在 Emacs 中执行一系列关键 Git 任务的清晰示例。这些示例带有说明各种任务的屏幕截图。
8. 《[把“点文件”放到版本控制中](/article-11419-1.html)》的作者 Matthew Broberg 演示了如何使用 Git 存储放在主目录中的点文件。将你的点文件存储在 Git 存储库中，可以更轻松地在计算机之间共享系统配置，并且，如果你愿意的话，也可以与其他人共享配置。这篇文章也有不要共享哪些文件的警告，因为共享错误的点文件会将其暴露给其他人。
9. Austin Dewey 的《[4 种用于 Git 加密的机密管理工具](https://opensource.com/article/19/2/secrets-management-tools-git)》在本文中比较了 Git-crypt、BlackBox、SOPS 和 Transcrypt，研究了在 Git 中存储机密的工具。本文涵盖四个主要领域：支持的加密类型、每个项目的目标、项目的工作流和差异以及其他功能。
10. Seth Kenlon 的《[使用 Git 管理 Git 服务器](https://opensource.com/article/19/4/server-administration-git)》解释了如何使用 Gitolite 管理 Git 服务器。Gitolite 是使用 Git 来管理 Git 服务器的“管理杂项的后端应用程序”。本文演示了如何安装、配置和使用 Gitolite，并提供了清晰的示例详细说明了该过程的每个步骤。

---

via: <https://opensource.com/article/19/12/git-resources>

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


如何在 LibreOffice Writer 中创建一个电子书章节模板

Summary: 将电子书分成几章，创建电子书会更容易。这是设置模板的分步指南。

将电子书分成几章，创建电子书会更容易。这是设置模板的分步指南。

# 如何在 LibreOffice Writer 中创建一个电子书章节模板

>
> 将电子书分成几章，创建电子书会更容易。这是设置模板的分步指南。
>
>
>

对于很多人来说，使用 word 程序来撰写和发布一本电子书是一种最好的、最容易的、最熟悉的方法。但是，启动你的 word 程序和打字是不够的 —— 你需要遵循一种格式。

这就是模板的来源。一个模板确保你的电子书有一个一致的外观和体验。幸运的是，创建模板是快速和容易的，并你在其上花费的时间和努力将带给你一本更好感观的书。

在这篇文章中，我将陪伴你走过如何使用 LibreOffice Writer 创建一个简单的模板，可以用于一本电子书的各个章节。你可以将这个模板用于 PDF 和 EPUB 书籍，并加以修改来满足你的需要。

### 我的方法

为什么我着重于为一个章节创建一个模板，而不是为一整本书创建一个模板？因为编写和管理单独的章节比编写和管理单个庞大而僵化的文档更容易。

通过关注于单独的章节，你可以专心于你需要编写的东西。你可以很容易地四处移动这些章节，给审阅者发单独一章节比发送你的完整原稿更简单而高效。当你写完一章后，你可以简单地把你的章节拼凑在一起来出版这本书（我将在下面讨论如何做到这一点）。但是不要觉得你被这种方法所束缚 —— 如果你更喜欢在单个文件中编写，简单地调整在这篇文章中描述的步骤就行。

让我们开始吧。

### 设置页面

仅当你计划发布你的电子书为一本 PDF 书时，这是很重要的。设置页面意味着你的书将不包含大量的跨越屏幕的让眼睛疲劳的文本。

选择 **格式 > 页面** 来打开 **页面样式** 窗口。我的 PDF 电子书通常是 5x8 英寸高（大约 13x20cm ，对于我们这些生活在米制世界的人来说）。我也设置页边距为半英寸（约 1.25 cm）。这些是我较喜欢的尺寸；你可以使用任何适合你的尺寸。

*在 LibreOffice Writer 中的页面样式窗口让你设置页边距和页格式。*

接下来，添加页脚以显示页码。保持页面样式窗口打开着，并单击 **页脚** 选项卡。选择 **在页脚上** 并单击 **确定** 。

在该页面上，在页脚中单击，然后选择 **插入 > 字段 > 页码**。不要担心页码的位置和外观；我们接下来会处理。

### 设置你的样式

像模板本身一样，样式为你的文档提供一种一致的外观和体验。如果你想更改一个标题的字体或大小，例如，你只需要在一个地方完成它，而不是手动应用格式化到每个标题。

标准化的 LibreOffice 模板带有许多样式，你可以调整它们以适应你的需要。为此，按 `F11` 来打开 **样式和格式** 窗口。

*使用样式和格式窗口更改字体和其它细节。*

在一个样式上右键单击，并选择 **修改** 来编辑它。 这里是我在每本中使用的主要样式：

| 样式 | 字体 | 间距 / 对齐方式 |
| --- | --- | --- |
| 标题 1 | Liberation Sans, 36 pt | 上面 36 pt ，下面 48 pt ，左对齐 |
| 标题 2 | Liberation Sans, 18 pt | 上面 12 pt ，下面 12 pt ，左对齐 |
| 标题 3 | Liberation Sans, 14 pt | 上面 12 pt ，下面 12 pt ，左对齐 |
| 正文 | Liberation Sans, 12 pt | 上面 12 pt ，下面 12 pt ，左对齐 |
| 页脚 | Liberation Sans, 10 pt | 居中对齐 |

*这是当我们应用到电子书内容时的一个选择的样式外观。*

对于大多数书来说，这通常是最小要求。可以随便更改字体和空格来适应你的要求。

根据你正在编写书的类型，你可能也想创建或修改项目符合样式，以及数字列表、引号、代码示例、数字符号等等。只需要记住始终如一地使用字体以及其大小。

### 保存你的模板

选择 **文件 > 另存为** 。在保持对话框中，从格式列表中选择 “ODF 文本文档模板 (.ott)” 。这将保存模板为一个模板，以后你可以快速调用该模板。

保存模板的最佳位置是 LibreOffice 模板文件夹。例如，在 Linux 中,那是在你的家目录下，在 `.config/libreoffice/4/user/template` 下。

### 编写你的书

在你开始编写前，在你的计算机上创建一个文件夹，它将为你的书保存所有的文件 —— 章节、图像、笔记等等。

当你准备编写时，启动 LibreOffice Writer 并选择 **文件 > 新建 > 模板** 。然后从列表中选择你的模板，并单击 **打开**。

*从你在 LibreOffice Writer 中设置的列表中选择你的模板，并开始编写。*

然后用一个描述性名称保存文档。

建议使用像 “第 1 章” 和 “第 2 章” 这样的惯例 —— 在某些时候，你可能决定重新编排你的章节，当你尝试管理这些章节时，它可能会变得混乱。然而，你可以在文件名称中放置章节数字，像 “第 1 章” 或 “一” 。如果你最后要重新排列全书的章节，像这样重命名更容易。

无需赘言，开始编写吧。记住在模板中使用样式来格式化文本 —— 这就是为什么你要创建模板，对吧？

### 发布你的电子书

在完成编写一堆章节后，并准备发布它们时，创建一个主控文档。把一个主控文档作为你所编写章节的一个容器。使用一个主控文档，你可以快速地组装你的书，并任意重新排序你的章节。LibreOffice 的帮助提供了使用[主控文档](https://help.libreoffice.org/Writer/Working_with_Master_Documents_and_Subdocuments)的详细信息。

假设你想生成一个 PDF ，不要只是单击**直接导出到 PDF** 按钮。这将创建一个相当不错的 PDF ，但是你可能想优化它。为此，选择 **文件 > 导出为 PDF** ，并在 PDF 选项窗口中轻微调整。你可以在这篇 [LibreOffice Writer 文档](https://help.libreoffice.org/Common/Export_as_PDF) 中学到更多东西。

如果你想创建一个 EPUB 而不是一个 PDF，或者除了一个 PDF 以外，另外创建一个 EPUB，请安装 [Writer2EPUB](http://writer2epub.it/en/) 扩展。Opensource.com 的 Bryan Behrenshausen 为这个扩展[分享了一些有用的说明](https://opensource.com/life/13/8/how-create-ebook-open-source-way) 。

### 结束语

我们在这里创建的模板是极简单的，但是你可以将其用于一本简单的书，或者作为构建一个复杂模板的起点。不管怎样，这个模板都会让你快速地开始编写和发布你的电子书。

---

via: <https://opensource.com/article/17/10/creating-ebook-chapter-template-libreoffice-writer>

作者：[Scott Nesbitt](https://opensource.com/users/scottnesbitt) 译者：[robsean](https://github.com/robsean) 校对：[wxy](https://github.com/wxy)

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


Darktable 3 发布，带来重新打造的 UI 及新的功能

Summary: 这是给摄影爱好者的圣诞节礼物。Darktable 3.0 刚刚发布了。

这是给摄影爱好者的圣诞节礼物。Darktable 3.0 刚刚发布了。

# Darktable 3 发布，带来重新打造的 UI 及新的功能

>
> 这是给摄影爱好者的圣诞节礼物。Darktable 3.0 刚刚发布了。
>
>
>

[Darktable](https://www.darktable.org/) 是[在 Linux 上编辑 RAW 图像的最佳应用之一](https://itsfoss.com/raw-image-tools-linux/)。你可以将其视为 [Adobe Lightroom 的自由开源替代品](https://itsfoss.com/open-source-photoshop-alternatives/)。

Darktable 3 是一个主版本更新，它带来了大量的功能改进和重新打造的用户界面。现在，GUI 完全由 GTK+ CSS 规则所控制，这使得整个 GUI 都可定制主题。它默认有八个主题。

借助 3000 多个提交和 553 个拉取请求，新版本修复了 66 个 bug 并添加了许多新功能。

让我们看看这个新版本带来了什么功能。

### Darktable 3.0 的新功能

<img src="content_image/album_202001_02_222428zjvnqq13ztlj3qz6.jpg" alt="Darktable 3.0 Screenshot" title="Darktable 3.0 Screenshot">

以下是重要的新功能：

* 重新打造的 UI
* 用于处理 3D RGB Lut 变换的新模块
* 对“降噪（轮廓化）”模块进行了许多改进
* 添加了新的“剔除”模式和时间轴视图
* 对“降噪（轮廓化）”模块进行了许多改进
* 新色调均衡器的基本和电影 RGB 模块
* 更好的 4K/5K 显示支持
* 撤消/重做支持更多操作
* 针对 CPU 和 SSE 路径的许多代码优化
* 支持导出到 Google 相册
* 支持更多的相机，白平衡预设和噪点配置
* 大量的 bug 修复和功能改进

你可以在 [GitHub 发行说明](https://github.com/darktable-org/darktable/releases/tag/release-3.0.0)中了解所有更改。

### 在 Linux 上安装 Darktable 3.0

让我们看看如何获取最新的 Darktable 版本。

#### 在基于 Ubuntu 的发行版上安装 Darktable 3.0

Ubuntu 仓库中有 Darktable，但你不能得到马上最新的版本。对于 LTS 版本，它的更新可能需要几个月的时间。

不用担心！Darktable 提供了[自己的 PPA](https://launchpad.net/%7Epmjdebruijn/+archive/ubuntu/darktable-release) 来在基于 Ubuntu 的发行版上安装最新版本。

不幸的是，此 Darktable PPA 尚未随新版本更新。

不用担心了！多亏了我们的朋友 [Ubuntu Handbook 的 Ji M](http://ubuntuhandbook.org/index.php/2019/12/install-darktable-3-0-0-ubuntu-18-04-19-10/)，我们有一个非正式的 PPA，可以轻松地在 Ubuntu 和其他基于 Ubuntu 的发行版上安装 Darktable 3.0。

打开终端，并使用这些命令：

```
sudo add-apt-repository ppa:ubuntuhandbook1/darktable
sudo apt update
sudo apt install darktable
```

#### 卸载 Darktable 3

要删除通过此 PPA 安装的 Darktable，你可以先卸载该应用：

```
sudo apt remove darktable
```

接着[删除 PPA](https://itsfoss.com/how-to-remove-or-delete-ppas-quick-tip/)：

```
sudo add-apt-repository -r ppa:ubuntuhandbook1/darktable
```

#### 在其他 Linux 发行版上安装 Darktable

你可以等待到你的发行版的软件管理器提供新版本。

你也可以从 GitHub 发布页面（位于页面底部）下载 tarball 或所有源代码。

* [下载 Darktable 3.0](https://github.com/darktable-org/darktable/releases/tag/release-3.0.0)

使用 Darktable 3，你可以更好地编辑自己的假期照片：）

---

via: <https://itsfoss.com/darktable-3-release/>

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


10 篇强化你的安全能力的文章

Summary: 无论你是新手还是想要增加技能，这十篇安全文章中都有适合你的内容。

无论你是新手还是想要增加技能，这十篇安全文章中都有适合你的内容。

# 10 篇强化你的安全能力的文章

>
> 无论你是新手还是想要增加技能，这十篇安全文章中都有适合你的内容。
>
>
>

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

如果安全是一个过程（确实如此），那么理所当然的，不同的项目（及其贡献者）的情况各有不同。有些应用程序经历了多年的安全测试，由在信息安全领域工作了几十年的人员所设计。而另外一些则是由开发人员在他们的第一个开源项目中开发的全新项目。毫不奇怪，这十大安全文章囊括了代表这一范围的经验。我们有介绍基本安全实践的文章，也有深入探讨更高级主题的文章。

无论你是新手还是想要增加你在传奇职业生涯中获得的技能，2019 年十大安全文章中都有适合你的内容。

### 《安全强化你的 Linux 服务器的七个步骤》

安全如舍，地基不牢，房屋不稳。Patrick H. Mullins 的杰作《[安全强化你的 Linux 服务器的七个步骤](/article-11444-1.html)》让你从 Linux 服务器的基本安全步骤开始。即使你有很多管理服务器的经验，本文也提供了一个很好的清单以确保你掌握了基础知识。在此基础上，你可以开始添加额外的安全层。

### 《使用防火墙让你的 Linux 更加强大》

七步捍卫你的 Linux 服务器中的一步即是启用防火墙。但什么**是**防火墙，它是如何工作的呢？ Seth Kenlon 在《[使用防火墙让你的 Linux 更加强大](/article-11093-1.html)》一文中回答了这些问题，然后详细描述了为了更好的安全性应如何配置你的防火墙。使用 firewalld 与 Network Manager，你可以为不同的网络设置不同的防火墙配置。例如，这允许你在家庭网络上进行信任配置，并在你最喜欢的咖啡店的 WiFi 网络上进行更多疑的配置。

### 《用集中日志减少安全风险》

保护系统安全，只有开始，没有结束：安全是一个过程而不是状态。**保持**系统安全工作的一部分即是密切关注所发生的事情。集中化日志是实现这一点的一种方法，尤其是在管理多系统时。在《[减少集中日志的安全风险](https://opensource.com/article/19/2/reducing-security-risks-centralized-logging)》中 Hannah Suarez 分享了要如何开始（她这篇文章基于她在 FOSDEM'19 [自由及开源软件开发者欧洲会议] 中的闪电演讲）。

### 《在 SSH 中使用 GPG 密钥》

大多数人都会为 SSH 的密钥认证使用 SSH 密钥。为什么不呢？毕竟 SSH 就在名字里。从安全的角度来看，这些方法非常好。但若想简化某些形式的密钥分发与备份还有另一种方法，Brian Exelbierd 的三部曲系列介绍了《[如何启用使用 GPG 子钥的 SSH 访问](https://opensource.com/article/19/4/gpg-subkeys-ssh)》、《[如何导入现有 SSH 密钥](https://opensource.com/article/19/4/gpg-subkeys-ssh-multiples)》、《[如何将备份量减少到单个密钥文件](https://opensource.com/article/19/4/gpg-subkeys-ssh-manage)》

### 《使用 Seahorse 图形化管理 SSH 密钥》

并不是所有人都喜欢用 GPG 作为 SSH 密钥，但这并不意味着你在密钥管理上会不顺利。Seahorse 是一个在 GNOME 桌面中用于管理 SSH 密钥及其他身份验证方法的图形化工具。Alan Formy-Duval 的《[使用 Seahorse 图形化管理 SSH 密钥》对新手用户特别有帮助。

### 《安全扫描你的 DevOps 流程》

如今到处都是容器。但它们容纳着什么？了解容器满足你的安全策略是保持安全性的重要部分。幸运的是，你可以使用开源工具来帮助自动化合规检查。Jessica Cherry（原名: Repka）的《[安全扫描你的 DevOps 流程](https://opensource.com/article/19/7/security-scanning-your-devops-pipeline)》是一个循序渐进的教程，向你展示了如何使用 Jenkins 构建系统和 Anchore 检查服务为容器镜像和注册库创建扫描流程。

### 《4 种开源云安全工具》

云服务的一大优点是你的数据可以从任何地方访问。云服务的一个缺点是你的数据可以从任何地方访问。如果你使用的是 “-as-a-Service”（LCTT 译注: 某某即服务，如 IaaS、PaaS、Saa）产品，那么你需要确保它们是经过安全配置的。Anderson Silva、Alison Naylor、Travis McPeak 和 Rich Monk 联合推出《[4 种开源云安全工具](/article-11432-1.html)》以帮助在使用 GitHub 和 AWS 时提高安全性。如果你正在寻找被不小心提交的机密信息，或尝试从一开始就阻止这些机密信息被提交，这篇文章提供了工具。

### 《如何使用 OpenSSL：哈希、数字签名等》

许多信息安全是基于数学的：特别是用于加密数据和验证用户或文件内容的加密函数。在《[开始使用 OpenSSL：密码学基础](https://opensource.com/article/19/6/cryptography-basics-openssl-part-1)》中进行介绍后，Marty Kalin 深入讨论了《[如何使用 OpenSSL：哈希、数字签名等](https://opensource.com/article/19/6/cryptography-basics-openssl-part-2)》的细节，解释了如何使用 OpenSSL 实用程序来探索这些常用但不常被理解的概念。

### 《使用树莓派和 Kali Linux 学习计算机安全》

廉价硬件与开源软件构成了一个很好的组合，特别是对于那些希望边做边学的人来说。在《[使用树莓派和 Kali Linux 学习计算机安全](https://opensource.com/article/19/3/computer-security-raspberry-pi)》这篇文章中，Anderson Silva 介绍了面向安全的 Kali Linux 发行版。这是一篇短文，但它满是关于文档和安全相关项目的有用的链接，你可以在自己的树莓派上使用它们。

### 《量子计算会打破现有的安全体系吗？》

这篇文章的余下部分是浪费吗？量子计算会让我们对安全的所知变得过时吗？好消息是：回答是否定的，但是量子计算仍然可以在更广泛的范围内对安全和计算世界产生深远的影响。在《[量子计算会打破现有的安全体系吗？](/article-10566-1.html)》一文中，Mike Bursell 剖析了它好坏两方面的影响，当然，量子计算可能会让加密的破解变得更容易，但如果坏人一开始就无法获得你的数据，那也没有关系。

### 展望 2020

安全永远是重要的，（正如那篇量子计算文章所建议的）未来几年将是该领域的一个有趣时期。在 2020 年，我们的文章将着眼于开源安全的前沿，并帮助向不断增长的开源社区解释基础知识。如果你有一个你想要我们报导的主题，请在评论中分享它，或者更进一步 —— 如果你想写一篇文章，就写给我们吧。

---

via: <https://opensource.com/article/19/12/security-resources>

作者：[Ben Cotton](https://opensource.com/users/bcotton) 选题：[lujun9972](https://github.com/lujun9972) 译者：[nacyro](https://github.com/nacyro) 校对：[wxy](https://github.com/wxy)

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


Pop!_OS 与 Ubuntu：哪个更棒？

Summary: 好吧，你可能会发现从最佳 Linux 发行版列表中选择一个发行版很容易，但是，将两个类似的 Linux 发行版进行比较通常会令人困惑，就像 Pop!_OS 与 Ubuntu 一样。

体验过很多发行版，还是xubuntu对我口味

体验过很多发行版，还是openSUSE好，只用KDE。

体验过很多发行版，还是Manjaro省心

体验过很多发行版，parrot os 才是主菜

体验过很多发行版，选择Zorin.

ti体验过很多发行版，centos 才稳定。

体验过很多发行版，windows10才对胃口

体验过很多发行版，linux mint才是正妻

怎么好多评论都是，发行版A真好，但是评论来自于别的发行版B.。。。对我个人而言pop用来跑英伟达，fedora kde用来主力开发，windows用来打游戏，三个系统2T固态无困扰

# Pop!_OS 与 Ubuntu：哪个更棒？

好吧，你可能会发现从[最佳 Linux 发行版](https://itsfoss.com/best-linux-distributions/)列表中选择一个发行版很容易，但是，将两个类似的 Linux 发行版进行比较通常会令人困惑，就像 Pop!\_OS 与 Ubuntu 一样。

有趣的是，Pop!\_OS 是基于 [Ubuntu](https://ubuntu.com/) 的。那么，Pop!\_OS 和 Ubuntu 之间有什么区别呢？为什么要从中选择一个呢？

在本文中，我将比较 Pop!\_OS 和 Ubuntu（两者都是我的最爱）。

**注意：**你可能会发现一些武断的观点，而本文只是一份比较的参考。随着 Linux 发行版的不断开发和更新，随着时间的流逝，很多事情都会改变。

### 比较 Ubuntu 和 Pop!\_OS

发现相似之处可帮助你区分其他差异之处。因此，让我们从一些明显的相似之处开始。

就像我提到的，Pop!\_OS 是基于 Ubuntu 之上的 Linux 发行版。因此，当你使用 Pop!\_OS 时，你将获得使用 Ubuntu 的所有好处（从技术上说，其核心是一样的）。

它们都默认带有 [GNOME 桌面环境](https://www.gnome.org/)，因此它们具有相似的用户界面（UI）。

在不讨论所有底层差异的情况下，我将在这里重点介绍一些重要的差异。

#### 用户体验及主题

许多用户认为 Pop!\_OS 只是具有不同外观的 Ubuntu。

根据我的经验，我觉得这并非完全正确。

是的，它们俩都很喜欢 [GNOME 桌面环境](https://www.gnome.org/) —— 但是，Pop!\_OS 让人感觉更加优美。

除了外观之外，[Ubuntu 还通过添加程序坞和其他一些小花巧来定制了 GNOME 的体验](https://itsfoss.com/gnome-tricks-ubuntu/)。如果你喜欢定制的 GNOME 体验，可能会发现它更好。

但是，如果你更喜欢纯粹的 GNOME 体验，Pop!\_OS 默认情况下为你提供的就是这样。

在你亲自尝试之前，我无法说服你。但是，Pop!\_OS 中的总体配色方案、图标和主题可以说是令人愉悦的高级用户体验。

这可能是一个主观的事情，但这是我所观察到的。你还可以查看 Ubuntu 19.10 的视频教程，亲自感受一下。

#### 易于安装第三方应用

Ubuntu 非常重视 Snap 软件包。这增加了它提供的应用程序的数量。

但是 Snap 软件包存在一些重要的问题。它们占用了过多的磁盘空间，并且启动要花费大量的时间。

这就是为什么我更喜欢使用应用程序的 APT 版本的原因。

我为什么要说这个呢？

因为 Pop!\_OS 具有其[自己的官方 PPA](https://launchpad.net/%7Esystem76/+archive/ubuntu/pop/)，并已默认启用。你会在此处找到一些有用的应用程序，例如 Android Studio、TensorFlow。无需下载 Android Studio 的 1GB 大的 Snap 程序包。只需使用 [apt-get install](https://itsfoss.com/apt-get-linux-guide/)就可以了。

#### 预装应用

对于某些人来说，它可能不是最大的问题，但是拥有大量预安装的应用程序可能会影响体验和性能。即使不影响性能，某些用户也只喜欢较少的预装应用程序。

与 Ubuntu 相比，Pop!\_OS 捆绑了更少的默认应用程序（潜在地减少了胖软件）。

再一次提醒，这是主观的看法。如果你希望预安装更多应用程序，则可以考虑使用 Ubuntu 而不是 Pop!\_OS。

#### Snap 软件包支持

对于熟悉 Snap 程序包的用户来说，Ubuntu 的软件中心是比 Pop!\_OS 商店更好的解决方案，因为你可以在软件中心中列出 Snap 程序包。

你无法在软件中心中过滤 Snap 软件包，但是当你在软件中心中发现一个 Snap 软件包（查看应用程序来源的详细信息为 “Snap store”/“Snapcraft”）时安装它就更容易了。

可能你会感到困惑，Pop!\_OS 也确实支持 Snap 软件包。但是，你不会在 Pop!\_OS 商店中找到它们，这是唯一的区别。

如果不确定什么是 Snap 软件包及其功能，可以查看我们的文章《[在 Linux 上安装 Snap 应用](https://itsfoss.com/install-snap-linux/)》。

#### 单独的 NVIDIA/AMD ISO 文件

从技术上讲，它不是内部比较的一部分，而是某些用户关心的一个因素。

因此，值得强调的是 Pop!\_OS 提供了单独的 ISO。一个用于带 NVIDIA 显卡的系统，另一个用于带/不带 AMD 显卡的系统。

使用 Ubuntu 19.10，你可以在 Ubuntu ISO 上获得 NVIDIA 驱动程序，但 AMD 显卡没有这个。

#### 可靠性与问题

毫无疑问，这两个[发行版都适合初学者](https://itsfoss.com/best-linux-beginners/)，并且相当可靠。如果你想要更好的可靠性和更少的问题，则可能希望一直使用长期支持（LTS）版本。

当出现新版本的 Ubuntu 时，Pop!\_OS 将在其上开发，并有可能解决用户在 Ubuntu 原始发行版上遇到的问题，然后再进行新的升级。这给它们带来了一点优势，但这没什么实质性的不同，因为这些修复最终都可以运用于 Ubuntu。

#### 性能

性能将高度取决于你所安装的内容以及所安装的硬件配置。

除非你有一个超级旧的系统，否则这两个发行版似乎都表现良好。

我的机器是 i5-7400 处理器和 16GB 的 RAM（带有 GTX 1050ti 显卡），我发现两种发行版上的体验都足够好。

当然，你可以手动进行一些优化调整以满足要求——无论它们中的哪个不满足你的硬件配置。

但是，如果你想使用 System76 笔记本电脑，那么 Pop!\_OS 将可以证明自己是 [Linux 领域的苹果](https://www.phoronix.com/scan.php?page=news_item&px=System76-Integrated-Vision)，因为 Pop!\_OS 是针对其硬件量身定制的，与 Ubuntu 有所不同。

#### 硬件兼容性

在比较其他 Linux 发行版时，这绝对是要考虑的事情。但是，在这种情况下，实际上并没有太大的区别。

你可能会考虑 Pop!\_OS 一直在使用较新的硬件配置，因为他们主要是为他们的笔记本电脑量身定制具有各种配置的 OS。而且，这只是一个观察，而不是事实。

### 结语

我知道在不亲自尝试的情况下从两个流行的 Linux 发行版中选择一个并不容易。如果可能的话，我建议你在进行比较的同时尝试两者，以供参考。

你在这两者之间有何选择？我在比较中错过了什么吗？在下面的评论中让我知道。

---

via: <https://itsfoss.com/pop-os-vs-ubuntu/>

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


轻松使用 Linux Equinox 桌面环境

# 轻松使用 Linux Equinox 桌面环境

>
> 本文是 24 天 Linux 桌面特别系列的一部分。EDE 不是最迷人、最小或效率最高的桌面。但它的柔和、安宁让人平静，它让人感到熟悉舒缓，它的图标主题也很有趣。
>
>
>

我还没有认真用过 Fast Light Toolkit（[FLTK](https://www.fltk.org/)），但我是 C++ GUI 工具箱的粉丝，它非常易于学习，并且即使进行更新也很可靠。当我发现有一个用 FLTK 构建的桌面环境时，我很想尝试一下，并且我很快为我的决定感到高兴。[Equinox 桌面环境（EDE）](https://sourceforge.net/projects/ede/) 是用 C++ 和 FLTK 为 Unix 桌面编写的快速、简单的桌面环境。它使用通用的桌面约定，因此外观和感觉都非常熟悉，并且在使用几天后，我发现它的简单性提供了我所喜欢的最低限度的优雅。

### 安装 EDE

你可能会发现 EDE 包含在发行版的软件仓库中，但你也可以在它的 [SourceForge 仓库](http://ede.sf.net)中找到它。如果你已经在运行其他桌面环境，你可以安全地在同一系统上安装 EDE，因为它仅带来了一些额外的应用，这些应用程序特定于 EDE，因此它们不会妨碍你的其他桌面。

EDE 只是桌面环境，它使用 [Pekwm](https://opensource.com/article/19/12/pekwm-linux-desktop) 窗口管理器来处理布局。

安装 EDE 之后，注销当前的桌面会话，以便你可以登录到新的会话。默认情况下，会话管理器（KDM、GDM、LightDM 或 XDM，取决于你的设置）将继续登录到以前的桌面环境，因此你必须在登录之前覆盖该桌面环境。

在 GDM 中：

在 SDDM 中：

首次启动 EDE 时，可能会提示你确认一些启动任务。在我的 Slackware 工作站上，KDE 将某些服务标记为启动任务（例如 HPLIP 打印监视器和蓝牙守护程序），并且 EDE 在一个确认框中显示了它们。

设置一次后，你无需再次进行设置。

### EDE 桌面之旅

EDE 的布局恰恰是大多数人在桌面上所期望的布局：左侧的应用菜单、中间的任务栏、右侧的系统托盘。这是标准的现成布局，不会让任何人感到困惑。这是一个可以安全地装在 Linux 上并且可以自信地给任何没有使用过 Linux 的人使用的桌面。他们将以舒适的方式很快地适应这个桌面。

你可以单击鼠标右键打开一个小型桌面菜单。这可以让你在桌面上创建应用启动器、创建文件夹并设置一些主题选项。

屏幕底部的面板是可伸缩的，因此你可以根据需要在全屏模式下工作。单击屏幕右下角的时钟来调出日历和时区设置。

EDE 有一个小的配置应用，可用于设置一些简单的选项：

* 背景和图标设置
* 屏幕保护程序设置
* 时间和时钟
* 系统铃声
* 键盘
* 偏好应用

EDE 的功能不多。没有文件管理器、文本编辑器、绘画程序或纸牌游戏。你必须安装你想在桌面运行的程序。这意味着你可以从各种各样的 Linux 应用中进行选择，并使用你最喜欢的。

### EDE 总结

我发现 EDE 至少作为一种“假日”桌面而言，它的简单性令人舒适。它值得一看。它不是最迷人的桌面，也不是最精简的、也不是最高效的。但它的柔和、安宁让人平静，它让人感到熟悉舒缓，并且它的图标主题充满乐趣和生气。EDE 是一个以其缓慢而稳定的步调而自豪的桌面。

如果你想放松心情使用一个干净和令人愉悦的界面，请试试 EDE。

---

via: <https://opensource.com/article/19/12/ede-linux-desktop>

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


如何把你的老爷机重新利用起来

Summary: 按照下面各个步骤，让你的老爷机焕然一新。

“你可以用它浏览网页、发送电子邮件、编辑文档和电子表格、观看 YouTube 视频、参与 eBay 拍卖竞标、在社交网络上发帖、听播客、查看相簿、管理家庭收支和个人日程、玩游戏，等等。”<br />
为什么我放着手机不用要去用旧电脑呢？

"硬件故障排除快速指南"建立安全连接失败,链接无法访问.......

按照下面各个步骤，让你的老爷机焕然一新。

# 如何把你的老爷机重新利用起来

>
> 按照下面各个步骤，让你的老爷机焕然一新。
>
>
>

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

你的地下室里是不是有一台用来落灰的旧电脑？为什么不把它利用起来呢？如果你常用的电脑坏了，又想用一个比手机更大的屏幕上网，这时候一台备用电脑可能就派上用场了。或者，它也可以充当一台全家人共用的廉价备用电脑，甚至还可以改造为一台复古游戏机。

哪怕是一台有十余年历史的老爷机，只要选对了软件，也可以胜任很多新电脑能够完成的任务。其中的关键在于，要使用开源软件。

我进行电脑翻新已经有二十年了。在这篇文章里，我会分享一下电脑翻新的技巧。此处讨论的范围包括双核笔记本，以及机龄在 5 到 12 年之间的台式机。

### 检查硬件

第一步是检查硬件是否运转正常。如果在这个环节忽略了一个问题，后面可能会让你非常头疼。

灰尘是电子器件的天敌，所以第一件事应该是打开机箱，清除灰尘。[压缩空气设备](https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=compressed+air+for+computers&rh=i%3Aaps%2Ck%3Acompressed+air+for+computers)这时候可能会派上用场。请注意，进行任何接触电脑的操作时，都应该确保[接地](https://www.wikihow.com/Ground-Yourself-to-Avoid-Destroying-a-Computer-with-Electrostatic-Discharge)。此外，**不要**用清洁布擦拭任何东西。即使是一次小到你无法察觉的静电放电，也可能会导致电路损毁。

清洁工作完成之后，关闭机箱，检查是否所有硬件都可以正常工作。需要测试的项目包括：

* 内存
* 硬盘
* 主板
* 外围设备（DVD 驱动器、USB 接口、声卡，等等）

首先，将计算机启动界面（[UEFI](https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface) 或者是 [BIOS](http://en.wikipedia.org/wiki/BIOS) 界面）上的诊断测试依次运行一遍。如果不知道按哪个功能键进入你电脑的启动界面，可以参考 [这份列表](http://www.disk-image.com/faq-bootmenu.htm)。

此外，也可以使用诸如 [Hirens BootCD](http://www.hirensbootcd.org/download/) 和 [Ultimate Boot CD](http://www.ultimatebootcd.com/) 之类的免费资源工具包，进行启动界面覆盖不到的测试。这些资源工具包涵盖了数百个测试程序，并且都是免费的，尽管不都开源。运行这些工具包无需安装任何软件，因为它们都是从 U 盘或者 DVD 驱动器启动的。

测试一定要彻底！对于内存和硬盘来说，基础测试还不够，应该运行深度测试，哪怕是运行一整夜也无妨。只有这样，才能够查出那些不易发现的瞬时故障。

如果发现了问题，可以参考我的[硬件故障排除快速指南](http://www.rexxinfo.org/Quick_Guide/Quick_Guide_To_Fixing_Computer_Hardware)，可以帮你解决最常见的硬件问题。

### 选择软件

电脑翻新的关键在于，根据手头的硬件资源，恰如其分地安装软件。最核心的三种硬件资源分别是：

1. 处理器（内核数、速度）
2. 内存
3. 显存

可以在启动时的 UEFI/BIOS 界面上，弄清楚你电脑的硬件资源。记得抄下数据，以免遗忘。接下来，可以在 [CPU Benchmark](http://www.cpubenchmark.net/) 网站上查看你的处理器，该网站除了提供 CPU 的背景资料，还提供一个 CPU 的性能分数。

了解了硬件性能之后，就可以选择能够在硬件上高效运行的软件了。软件的选择涉及四个重要的层面：

1. 操作系统（OS）
2. 桌面环境（DE）
3. 浏览器
4. 应用

一个优秀的 Linux 发行版可以满足上述全部四个层面。不要试图使用已经停止维护的 Windows 版本，例如 Windows 8、Vista 或者 XP，哪怕已经安装在电脑上了。恶意软件的[风险](https://askleo.com/unsupported-software-really-mean/)你是承受不起的。明智的做法是，使用一个更抗病毒的最新版本操作系统。

那 Windows 7 呢？[维护宽限期](http://home.bt.com/tech-gadgets/computing/windows-7/windows-7-support-end-11364081315419)至 2020 年 1 月 14 日结束，也就是说，在此日期之前你还可以获得安全补丁，之后就想都别想了。现在正是迁出 Windows 7 的绝佳时机。

Linux 的巨大优势在于，有许多专门为过时硬件设计的[发行版](https://fossbytes.com/best-lightweight-linux-distros/)。此外，[桌面环境](http://en.wikipedia.org/wiki/Desktop_environment)和操作系统在 Linux 的设计中是分开的，你可以自行选择搭配。这一点非常重要，因为桌面环境对低端系统的性能有很大影响。（对于 Windows 和 MacOS 来说，你选择的操作系统版本决定了桌面环境，没得可选。）

Linux 的另一个好处是，拥有数以千计自由且开源的应用，不需要担心激活或者许可的问题。此外，Linux 是可移植的，可以在不同的分区、硬盘、设备或计算机之间，对操作系统和应用进行复制、移动或克隆。（Windows 则不然，使用注册表将系统捆绑在了所安装的计算机上。）

### 翻新后的电脑能够做什么？

这里讨论的是大约在 2006 年到 2013 年之间生产的双核计算机，尤其是装载了 [Intel 酷睿 2](https://en.wikipedia.org/wiki/Intel_Core_2) CPU 或 [AMD 速龙 64 X2](https://en.wikipedia.org/wiki/Athlon_64_X2) 系列处理器的计算机。它们的 [CPU 分数](http://www.cpubenchmark.net/) 大多在 1000 到 4000 分之间。这种电脑卖不了几个钱，但用在运行轻量级 Linux 软件上，性能还是足够的。

有一点需要注意：你的电脑应该至少拥有 2 GB 内存，如果不够就进行升级。就我翻新过的电脑来说，使用者用到的内存（不包括数据缓存）一般在 0.5 到 2 GB 之间，很少超过 2 GB。如果将内存升级到 2GB，系统就不至于进行**内存交换**，即将硬盘当做内存使用。如果想要获得良好性能，这一点十分关键。

以我自己为例，我用来写作这篇文章的是一台有十年机龄的翻新电脑。取下 1 GB 内存条之后，它只剩下了 1 GB 内存，然后就慢得像一只乌龟。用它浏览网页，或者是做类似的事情，都让人感到灰心，甚至痛苦。一旦把内存条重新装回去，有了 2 GB 内存，它就立马回到了可以使用的状态。

一台 2 GB 的双核计算机可以满足大多数人的需求，只要安装的是轻量级发行版和浏览器。你可以用它浏览网页、发送电子邮件、编辑文档和电子表格、观看 YouTube 视频、参与 eBay 拍卖竞标、在社交网络上发帖、听播客、查看相簿、管理家庭收支和个人日程、玩游戏，等等。

### 翻新电脑的局限

那么，这些老爷机又有什么局限呢？由于它们的并发性能比不上最先进的计算机，所以应该使用轻量级浏览器，同时拦截广告（广告正是让网页加载变慢的罪魁祸首）。如果可以使用虚拟专用网络（VPN）拦截广告，为处理器免除加载广告的负荷，那就再好不过。此外，还需要禁用视频自动播放、Flash 以及网页动画效果；将浏览器上的标签页控制在少数几个，不要同时打开 20 个；以及下载可以开启/禁用 JavaScript 的浏览器扩展。

让处理器专注于你目前正在做的事情吧，不要同时打开一堆应用，也不要在后台运行很多程序。图像编辑和视频编辑的高级工具可能会很慢；至于运行虚拟机，还是别想了吧。

那游戏呢？开源软件仓库提供了数以千计的游戏。这就是我为什么将显存列为三种核心硬件资源之一。如果你的电脑没有独立显卡，那很可能只有 32 或者 64 MB 的显存。可以增加一张显卡，将显存提升到 256 或者 512 MB，这样一来，处理器密集型的游戏就会顺畅很多了。如果不确定你的电脑有多少显存，可以参考[这里](http://www.cyberciti.biz/faq/howto-find-linux-vga-video-card-ram/)。请注意，需要确保显卡与电脑的[显卡插槽](https://www.onlinecomputertips.com/support-categories/hardware/493-pci-vs-agp-vs-pci-express-video-cards/)（AGP、PCI-Express 或者 PCI）相匹配，同时使用正确的[连接线](https://silentpc.com/articles/video-connectors)（VGA、DVI 或者 HDMI）。

#### 与 Windows 系统的兼容性如何？

许多人关心 Linux 与 Windows 系统的兼容性如何。首先，对于任何一个 Windows 程序，都有一个 [Linux 版本的替代品](http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software)。

退一步说，即使你真的必须要运行某个特定的 Windows 程序，通常也可以借助 [Wine](https://en.wikipedia.org/wiki/Wine_%28software%29) 在 Linux 上运行。可以在 [Wine 数据库](https://appdb.winehq.org/) 里查找一下你的应用，看看是否可以在 Wine 上运行，顺便学一些特殊安装技巧。[Winetricks](https://en.wikipedia.org/wiki/Winetricks) 和 [PlayOnLinux](https://en.wikipedia.org/wiki/PlayOnLinux) 这两个辅助工具可以帮助你进行安装和配置。

Wine 的另一个优势是可以运行旧版本 Windows（例如 Vista、XP、ME/98/95 和 3.1）上的程序。我认识一个家伙，搭建了一台特别赞的游戏电脑，然后用来玩 XP 上的老游戏。借助 [DOSBox](https://en.wikipedia.org/wiki/DOSBox)，你甚至还可以运行数以千计的[免费 DOS 程序](https://archive.org/details/softwarelibrary_msdos)。但是有一点需要注意，如果 Windows 程序可以运行，那么 Windows [病毒](https://wiki.winehq.org/FAQ#Is_Wine_malware-compatible.3F)也同样可以。你需要保护 Linux 上的 Wine 环境，正如保护任何其他 Windows 环境一样。

对了，与 Microsoft Office 的兼容性又如何呢？我使用的是 LibreOffice，经常编辑并交换 Word 和 Excel 文件，完全没有问题。不过，你应该避免使用隐晦或者过于专业的功能。

### 如何选择发行版？

假设选择了 Linux 作为操作系统，那么你还需要选择桌面环境、浏览器和各种应用。最简单的方法是，安装一个包含了你所需要的一切的发行版。

通过从 [live USB](https://www.howtogeek.com/howto/linux/create-a-bootable-ubuntu-usb-flash-drive-the-easy-way/) U 盘或者 DVD 启动，你无需安装任何程序，就可以尝试不同的发行版。关于在 Linux 或 Windows 上创建可启动的 Linux 的方法，可以参考[这里](https://unetbootin.github.io/)。

我进行电脑翻新的目的是做慈善，所以无法指望电脑使用者具备任何相应知识。我需要的发行版应该具有以下特性：

* 用户友好
* 具有轻量级界面
* 自带各种轻量级应用
* 拥有足够大的软件仓库
* 历史表现良好
* 拥有庞大的用户社区和活跃的论坛
* 通过长期维护版本（而不是滚动发布版本）确保稳定性
* 更重视可靠性，而不是尖端功能
* 可以通过图形化用户界面进行设置，而不是只能通过文本文件进行设置

许多发行版都能够满足上面的要求。我曾经尝试成功的有 [Mint/Xfce](https://linuxmint.com/)、[Xubuntu](https://xubuntu.org/) 和 [Lubuntu](https://lubuntu.me/)。前两个发行版使用 Xfce 桌面环境，第三个使用 LXQt。相比 GNOME、Unity、KDE、MATE 和 Cinnamon 这些桌面环境，运行上面这两种桌面环境只需要[更少](https://www.makeuseof.com/tag/best-lean-linux-desktop-environment-lxde-vs-xfce-vs-mate/)的处理器和内存资源。

Xfce 和 LXQt 用起来非常简单，我的客户们之前从未见过 Linux，但是都可以自如使用这些简单的、菜单驱动的用户界面。

对于旧电脑来说，运行最快速、最高效的浏览器是一件非常重要的事情。[很多人觉得](https://www.zdnet.com/article/chrome-is-the-most-popular-web-browser-of-all/) Chromium 是最好的浏览器；此外，我还安装了 Firefox Quantum，因为大家比较熟悉它，并且[它的性能](https://www.laptopmag.com/articles/firefox-quantum-vs-chrome)可以和 [Chromium 的性能](https://www.zdnet.com/article/just-how-fast-is-firefox-quantum/)媲美。我还加上了 Opera，因为它速度快，而且有一些独特功能，比如内置的广告拦截，以及免费的[虚拟专用网络](http://en.wikipedia.org/wiki/Virtual_private_network)。Opera 是免费的，但并非开源。

无论你使用什么浏览器，一定要拦截广告和追踪器，尽量降低浏览器的负荷。此外，除非得到你的明确批准，否则视频和 Flash 都不应该被允许运行。

至于应用，我使用的是 Mint/Xfce、Xubuntu 和 Lubuntu 自带的轻量级应用。它们足以满足一切需求了。

### 行动起来吧

你是否会对翻新后的电脑感到满意呢？就我来说，我所使用的两台电脑的机龄都已经超过十年了，其中一个装载的是 Intel 双核处理器（[eMachines T5274a](https://www.cnet.com/products/emachines-t5274/specs/)），另一个装载的是 AMD 速龙 64 x2 处理器（[HP dc5750](https://community.spiceworks.com/products/7727-hewlett-packard-dc5750-microtower)），两台电脑都有 2 GB 内存。它们和我的另一台具备四核 i5 处理器和 16 GB 内存的电脑一样，完全能够胜任我的办公工作。如果说有什么功能是这两台电脑缺失的，那就是运行虚拟机了。

我们生活在一个非常神奇的年代。只需要付出一点努力，就可以将一台机龄在 5 到 12 年之间的旧电脑，翻新为一台具备实用价值的机器。还有什么比这更有趣吗？

---

via: <https://opensource.com/article/19/7/how-make-old-computer-useful-again>

作者：[Howard Fosdick](https://opensource.com/users/howtech) 选题：[lujun9972](https://github.com/lujun9972) 译者：[chen-ni](https://github.com/chen-ni) 校对：[wxy](https://github.com/wxy)

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


修复 “VLC is Unable to Open the MRL” 错误

Summary: 一个使用 VLC 的技巧是使用 VLC 播放 YouTube 和其他在线视频。

一个使用 VLC 的技巧是使用 VLC 播放 YouTube 和其他在线视频。

# 修复 “VLC is Unable to Open the MRL” 错误

一个使用 [VLC 的技巧](https://itsfoss.com/simple-vlc-tips/)是使用 [VLC](https://www.videolan.org/index.html) 播放 YouTube 和其他在线视频。这可以帮助你[观看带有字幕的在线视频](https://itsfoss.com/penguin-subtitle-player/)。

但是事情并不总是这么简单，因为有时使用 VLC 打开 YouTube 视频时会遇到此错误：

>
> Your input can’t be opened: VLC is unable to open the MRL 'https://youtubeurl.com'. Check the log for details.
>
>
>

这是因为 Google 不想让你使用任何第三方应用观看 YouTube，因为这样他们就无法正常收集数据。

因此，他们不断修改服务端，以使第三发开发更难与 Youtube 集成。

以 [youtube-dl](https://itsfoss.com/download-youtube-linux/) 为例。你会发现自己无法突然[下载 YouTube 视频](https://itsfoss.com/download-youtube-videos-ubuntu/)，最简单的方案是安装最新版本的 youtube-dl。

对于 VLC 也是如此。如果你[在 Ubuntu 或任何你用的系统中安装了最新的 VLC](https://itsfoss.com/install-latest-vlc/)，那么可能不会看到此错误。

### 修复 “VLC is unable to open the MRL” 错误

让我向你展示对于 YouTube 的修复步骤。

进入 VLC 媒体播放器的官方 Github 仓库页面的[这个页面](https://raw.githubusercontent.com/videolan/vlc/master/share/lua/playlist/youtube.lua)，并使用 `Ctrl+S` 保存文件：

现在，你需要做的是用此下载文件替换 `lib/vlc/lua/playlist` 目录中的 `youtube.luac`（注意 luac 中的 “c”）。

#### Linux 中的步骤

如果你使用的是 Linux，请打开终端并使用 [locate 命令](https://linuxhandbook.com/locate-command/)查找 `youtube.luac` 文件的确切位置：

```
locate youtube.luac
```

当你得到文件的路径时，只需将该文件替换为下载的文件即可。我相信你可以完成这项简单的任务。

对我而言，以下是文件路径：

```
abhishek@itsfoss:~$ locate youtube.lua
/usr/lib/x86_64-linux-gnu/vlc/lua/playlist/youtube.luac
```

因此，我要做的就是将下载的文件移到该位置并替换它的内容：

```
sudo cp ~/Downloads/youtube.lua /usr/lib/x86_64-linux-gnu/vlc/lua/playlist/youtube.luac
```

你现在应该可以在 VLC 中播放 YouTube 视频了。

#### Windows 中的步骤

如果你使用的是 Windows，那么应遵循以下步骤：

* 将下载的 `youtube.lua` 文件重命名为 `youtube.luac`
* 复制此文件并将其粘贴到 `C:\Program Files (x86)\VideoLAN\VLC\lua\playlist\`

就是这些了。

如果你在 Dailymotion 或其他视频流网站上遇到问题，那么可以从 VLC 仓库的[此处](https://github.com/videolan/vlc/tree/master/share/lua/playlist)下载它们各自的 lua 文件，并替换 VLC 安装中的现有 lua 文件。

我希望这个快速提示可以解决 VLC 无法为你播放 YouTube 视频的问题。

---

via: <https://itsfoss.com/vlc-is-unable-to-open-the-mrl/>

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


Kubernetes 命名空间入门

Summary: 命名空间是什么？你为什么需要它？

命名空间是什么？你为什么需要它？

# Kubernetes 命名空间入门

>
> 命名空间是什么？你为什么需要它？
>
>
>

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

kubernetes <ruby> 命名空间 <rt>  namespace </rt></ruby>是什么？正如 Shakespeare 以前写过的，我们所谓的命名空间，或者任何其他名字，就是虚拟集群。通过虚拟集群，意味着 kubernetes 可以在单个集群上提供多个 kubernetes 的集群，类似一个在其主机抽象出来的虚拟机。[kubernetes 文档](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) 中的解释：

>
> kubernetes 在一个物理集群上提供了多个虚拟集群。这些虚拟集群被称为命名空间。
>
>
>

你为什么需要命名空间？一言以蔽之：隔离。

隔离有很多优点，如它提供了安全和干净的环境。如果你是基础设施的所属者，并且要为开发者提供环境，隔离就相当重要。你最不需要的就是，一个不熟悉你集群是如何搭建的人去修改系统配置 —— 这可能导致所有人都无法登录。

### 初始命名空间

一个集群的三个初始命名空间：`default`、`kube-system` 和 `kube-public`。虽然技术上你可以用这三个命名空间作部署，但我还是推荐你把这三个命名空间留作系统配置用，而不是你的项目。

* `Default` 用于某些没有指明命名空间的部署，这是一种快速创建混乱的做法，如果你在没有正确信息的情况下做了很多部署，将很难清理。我不会去动它，因为它只有这一个用途，而且在不止一种情况下误导过我。
* `Kube-system` 是 Kubernetes 系统相关的所有对象组成的命名空间。任何对此命名空间的部署都可能是危险的操作，可能对系统本身造成不可挽回的破坏。没错，我试过；所以我不推荐。
* `Kube-public` 所有人可读，但是这个命名空间是为系统保留的。

### 用命名空间来实现隔离

我用了多种方式通过命名空间来实现隔离。我经常用命名空间来把多个用户项目分割到不同的环境。这种方式可以有效防止跨项目的污染，因为命名空间提供了独立的环境。例如，用户可以安装不同版本的 Jenkins，如果它们的环境变量是在不同的命名空间，就不会冲突。

这种隔离对于清理也很有帮助。如果开发小组的多个项目突然被废弃，你可以用命令 `kubectl delete ns <$NAMESPACENAME>` 一键删除命名空间，清理命名空间内的所有东西。（请确认被删除的是正确的命名空间。我曾经在生产环境删除了错误的命名空间，这很不好。）

如果你是基础设施所有者，请谨慎操作，因为这可能会引发其他团队的的故障或引发其他问题。例如，如果你创建了一个特定的命名空间，里面有特殊的额外安全的 DNS 功能，但是其他人删除了它，那么命名空间内的所有 pod 和它们运行的应用都会被清空。所有的**删除**操作在真正实施之前都应该由同事（通过 [GitOps](https://www.weave.works/blog/gitops-operations-by-pull-request)）评审一下。

虽然官方文档不建议 [10 人以下团队](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) 使用多个命名空间，但出于架构需要，在我自己的集群上还是用了多个命名空间。集群越干净越好。

### 关于命名空间管理员应该知道的

首先，命名空间不能嵌套。部署只能在一个命名空间中进行。对于版本化项目，你不一定要用命名空间，你可以使用标签来区分有相同名字的版本化应用。命名空间使用配额来为不同的用户划分资源；例如，*某个命名空间最多能有 x 个节点*。最后，所有的命名空间对于该资源类型只能使用一个独一无二的名字。

### 命名空间命令操作

你需要安装 [Minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/)、[Helm](https://helm.sh/) 和 [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) 命令行，才能使用下面的命名空间命令。我的文章《[安全扫描你的 DevOps 流水线](https://opensource.com/article/19/7/security-scanning-your-devops-pipeline)》中有它们的安装教程，你也可以去每个项目的官方主页去找安装教程。我使用的是最新的 Minikube。手动安装很快，第一次就能成功运行。

获取你的第一组命名空间：

```
jess@Athena:~$ kubectl get namespace
NAME            STATUS   AGE
default         Active   5m23s
kube-public     Active   5m24s
kube-system     Active   5m24s
```

创建一个命名空间：

```
jess@Athena:~$ kubectl create namespace athena
namespace/athena created
```

现在开发者可以部署到你创建的命名空间了；例如，这里是一个简短的 Helm chart：

```
jess@Athena:~$ helm install teset-deploy stable/redis --namespace athena
NAME: teset-deploy
LAST DEPLOYED: Sat Nov 23 13:47:43 2019
NAMESPACE: athena
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
` Please be patient while the chart is being deployed `
Redis can be accessed via port 6379 on the following DNS names from within your cluster:

teset-deploy-redis-master.athena.svc.cluster.local for read/write operations
teset-deploy-redis-slave.athena.svc.cluster.local for read-only operations
```

获取你的密码：

```
export REDIS_PASSWORD=$(kubectl get secret --namespace athena teset-deploy-redis -o jsonpath="{.data.redis-password}" | base64 --decode)
```

连接你的 redis 服务：

1. 运行一个你可以作为客户端用的 Redis pod：

```
kubectl run --namespace athena teset-deploy-redis-client --rm --tty -i --restart='Never' \
       --env REDIS_PASSWORD=$REDIS_PASSWORD \
       --image docker.io/bitnami/redis:5.0.7-debian-9-r0 -- bash
```
2. 使用 Redis CLI 连接：

```
redis-cli -h teset-deploy-redis-master -a $REDIS_PASSWORD
redis-cli -h teset-deploy-redis-slave -a $REDIS_PASSWORD
```

从集群外连接你的数据库：

```
kubectl port-forward --namespace athena svc/teset-deploy-redis-master 6379:6379 &
redis-cli -h 127.0.0.1 -p 6379 -a $REDIS_PASSWORD
```

现在这一套部署已经完成了，你有一个在命名空间 `test-deploy` 中部署的 chart。

查看你的命名空间中有哪些 pod：

```
jess@Athena:~$ kubectl get pods --namespace athena
NAME                            READY   STATUS  RESTARTS   AGE
teset-deploy-redis-master-0   1/1       Running   0             2m38s
teset-deploy-redis-slave-0      1/1     Running   0             2m38s
teset-deploy-redis-slave-1      1/1     Running   0             90s
```

现在，你已经正式把你的应用隔离到了一个命名空间，创建了一个只在内部通信的虚拟集群。

一键删除所有东西：

```
jess@Athena:~$ kubectl delete namespace athena
namespace "athena" deleted
```

因为这会删除应用的所有内部配置，所以这个删除操作可能会持续一段时间，持续时间取决于你的部署到底有多大。

再次检查一下所有东西是否被删除了：

```
jess@Athena:~$ kubectl get pods --all-namespaces
NAMESPACE       NAME                            READY   STATUS  RESTARTS   AGE
kube-system   coredns-5644d7b6d9-4vxv6          1/1     Running   0             32m
kube-system   coredns-5644d7b6d9-t5wn7          1/1     Running   0             32m
kube-system   etcd-minikube                     1/1     Running   0             31m
kube-system   kube-addon-manager-minikube       1/1     Running   0             32m
kube-system   kube-apiserver-minikube           1/1     Running   0             31m
kube-system   kube-controller-manager-minikube  1/1     Running   0             31m
kube-system   kube-proxy-5tdmh                  1/1     Running   0             32m
kube-system   kube-scheduler-minikube           1/1     Running   0             31m
kube-system   storage-provisioner               1/1     Running   0             27m
```

这是一个所有 pod 及它们存在于的已知命名空间的列表。你可以看到，之前创建的应用和命名空间现在已经不在了。

### 命名空间实践

当前我是出于安全考虑才使用命名空间，如限制用户的权限。你可以限制所有的东西 —— 从哪些角色可以访问命名空间，到命名空间可使用的集群资源（CPU 等）的配额等级。例如，我通过资源配额和<ruby> 基于角色的访问控制 <rt>  role-based access control </rt></ruby>（RBAC）配置来确保只有允许的服务账号可以访问命名空间。

对于隔离方面的安全，我不希望我的私人 Jenkins 应用可以通过一个信任的本地网络被当做一个有公共 IP 地址的安全镜像来访问（我不得不假定，可能会被侵袭）。

如果你很难提前计算出到底要在你的云平台上部署多少节点（或者，就我而言，是在[搞崩](https://en.wikipedia.org/wiki/Segmentation_fault)我的家庭服务器之前我能部署多少个），那么命名空间在预算方面也很有用。虽然这超出了本文的讨论范围，而且很复杂，但值得你去调研和使用来防止你的集群过分扩展。

### 总结

命名空间是一个很好的隔离项目和应用的方法。本文仅是一个关于命名空间的简短介绍，所以我建议你更深入地研究下命名空间，在你的实践中更多地去使用它们。

---

via: <https://opensource.com/article/19/12/kubernetes-namespaces>

作者：[Jessica Cherry](https://opensource.com/users/jrepka) 选题：[lujun9972](https://github.com/lujun9972) 译者：[lxbwolf](https://github.com/lxbwolf) 校对：[wxy](https://github.com/wxy)

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


12 个给全等级码农们的编程资源

Summary: 无论你身处编程旅程中的何处，这 12 篇编程文章都有你需要学习一些东西。

无论你身处编程旅程中的何处，这 12 篇编程文章都有你需要学习一些东西。

# 12 个给全等级码农们的编程资源

>
> 无论你身处编程旅程中的何处，这 12 篇编程文章都有你需要学习一些东西。
>
>
>

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

>
> “学习计算机编程的最佳时间是 20 年前，其次是现在。” — 计算机科学的谚语（也许是）
>
>
>

无论你是新程序员、经验丰富的 Web 开发人员、后端大师、头发花白的系统程序员，还是其他神秘物种的计算机极客？无论你身处广阔的软件开发人员生态系统中的何处，在我们领域中唯一不变的就是需要了解新技术及其应用方法。这是过去一年来阅读量最大的 Opensource.com 文章的集合，我很高兴在这里与你分享它们。

### 好好学习

无论你的技能或兴趣是什么，学习如何编写计算机程序都可以将特定领域的知识变成一种超能力。不幸的是，至少从现在开始，还不可能通过坐在计算机前面接受电磁辐射就能学会如何编程。在这之前，我推荐这些出色的文章来帮助激发你的编程技能。它们解决了一些重要的问题，例如考虑学习哪种语言以及不同的入门方式。

* [你应该学习哪种编程语言？](/article-10769-1.html)（译文）
* [学习 Python 的 12 个方式](/article-11280-1.html)（译文）
* [你可以使用树莓派学习的三种流行编程语言](/article-10661-1.html)（译文）
* [利用 Python 引导孩子的计算机思维](/article-11116-1.html)（译文）

### 天天向上

经验丰富的程序员知道，与学习编程相比，唯一更难的就是使你的技能和知识保持最新。但是我们是[自学成才](https://en.wikipedia.org/wiki/Autodidacticism)的一族，总是希望提高我们的专业知识和理解力。即使我们不期望使用新技术，我们也知道总会有人问起它们。这些有关 Rust、WebAssembly 和 Podman 的文章是开始学习软件技术一些即将出现的趋势的好地方。

* [为什么要在 WebAssembly 中使用 Rust？](https://opensource.com/article/19/2/why-use-rust-webassembly)
* [使用 WebAssembly 扩展命令行领域](https://opensource.com/article/19/4/command-line-playgrounds-webassembly)
* [免 root 的 Podman 如何工作？](https://opensource.com/article/19/2/how-does-rootless-podman-work)
* [为什么选择 Rust 作为你的下一种编程语言](https://opensource.com/article/19/10/choose-rust-programming-language)

### 老兵不死

尽管新技术层出不穷，但回顾过去可以帮助你前进。当今惊人的技术是建立在昨天的工具之上的，即使我们从未使用这些传奇语言编写过代码，它也将使我们很好地理解这些工具的功能和局限性。这一系列文章集中于 C 语言、用 AWK 编写的实际应用程序，以及对流行度下降但也许还没有消亡的计算机语言的有趣讨论。

* [C 的巨大影响](https://opensource.com/article/19/10/command-line-heroes-c)
* [如何写好 C main 函数](/article-10949-1.html)（译文）
* [用 AWK 喝咖啡](/article-10555-1.html)（译文）
* [你最喜欢的“死”语言是什么？](https://opensource.com/article/19/6/favorite-dead-language)

### 学习不止

无论你在编程过程中处于何处，总有更多东西需要学习。我希望这些来自 2019 年的顶级资源能帮助你为 2020 年做好准备。感谢作者们和你——读者。

---

via: <https://opensource.com/article/19/12/programming-resources>

作者：[Erik O'Shaughnessy](https://opensource.com/users/jnyjny) 选题：[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/) 荣誉推出


借助 zope.interface 深入了解 Python 接口

# 借助 zope.interface 深入了解 Python 接口

>
> Zope.interface 可以帮助声明存在哪些接口，是由哪些对象提供的，以及如何查询这些信息。
>
>
>

<img src="content_image/album_202001_05_224701yp24pci9zz7i2mqn.png" alt="Snake charmer cartoon with a yellow snake and a blue snake" title="Snake charmer cartoon with a yellow snake and a blue snake">

`zope.interface` 库可以克服 Python 接口设计中的歧义性。让我们来研究一下。

### 隐式接口不是 Python 之禅

[Python 之禅](https://en.wikipedia.org/wiki/Zen_of_Python) 很宽松，但是有点自相矛盾，以至于你可以用它来例证任何东西。让我们来思考其中最著名的原则之一：“显示胜于隐式”。

传统上，在 Python 中会隐含的一件事是预期的接口。比如函数已经记录了它期望一个“类文件对象”或“序列”。但是什么是类文件对象呢？它支持 `.writelines`吗？`.seek` 呢？什么是一个“序列”？是否支持步进切片，例如 `a[1:10:2]`？

最初，Python 的答案是所谓的“鸭子类型”，取自短语“如果它像鸭子一样行走，像鸭子一样嘎嘎叫，那么它可能就是鸭子”。换句话说，“试试看”，这可能是你能得到的最具隐式的表达。

为了使这些内容显式地表达出来，你需要一种方法来表达期望的接口。[Zope](http://zope.org) Web 框架是最早用 Python 编写的大型系统之一，它迫切需要这些东西来使代码明确呈现出来，例如，期望从“类似用户的对象”获得什么。

`zope.interface` 由 Zope 开发，但作为单独的 Python 包发布。`Zope.interface` 可以帮助声明存在哪些接口，是由哪些对象提供的，以及如何查询这些信息。

想象编写一个简单的 2D 游戏，它需要各种东西来支持精灵界面（LCTT 译注：“<ruby> 精灵 <rt>  Sprite </rt></ruby>”是指游戏面板中各个组件）。例如，表示一个边界框，但也要表示对象何时与一个框相交。与一些其他语言不同，在 Python 中，将属性访问作为公共接口一部分是一种常见的做法，而不是实现 getter 和 setter。边界框应该是一个属性，而不是一个方法。

呈现精灵列表的方法可能类似于：

```
def render_sprites(render_surface, sprites):
    """
    sprites 应该是符合 Sprite 接口的对象列表：
    * 一个名为 "bounding_box" 的属性，包含了边界框
    * 一个名为 "intersects" 的方法，它接受一个边界框并返回 True 或 False
    """
    pass # 一些做实际渲染的代码
```

该游戏将具有许多处理精灵的函数。在每个函数中，你都必须在随附文档中指定预期。

此外，某些函数可能期望使用更复杂的精灵对象，例如具有 Z 序的对象。我们必须跟踪哪些方法需要 Sprite 对象，哪些方法需要 SpriteWithZ 对象。

如果能够使精灵是显式而直观的，这样方法就可以声明“我需要一个精灵”，并有个严格定义的接口，这不是很好吗？来看看 `zope.interface`。

```
from zope import interface

class ISprite(interface.Interface):

    bounding_box = interface.Attribute(
        "边界框"
    )

    def intersects(box):
        "它和一个框相交吗？"
```

乍看起来，这段代码有点奇怪。这些方法不包括 `self`，而包含 `self` 是一种常见的做法，并且它有一个**属性**。这是在 `zope.interface` 中声明接口的方法。这看起来很奇怪，因为大多数人不习惯严格声明接口。

这样做的原因是接口显示了如何调用方法，而不是如何定义方法。因为接口不是超类，所以它们可以用来声明数据属性。

下面是一个能带有圆形精灵的接口的一个实现：

```
@implementer(ISprite)
@attr.s(auto_attribs=True)
class CircleSprite:
    x: float
    y: float
    radius: float

    @property
    def bounding_box(self):
        return (
            self.x - self.radius,
            self.y - self.radius,
            self.x + self.radius,
            self.y + self.radius,
        )

    def intersects(self, box):
        # 当且仅当至少一个角在圆内时，方框与圆相交
        top_left, bottom_right = box[:2], box[2:]
        for choose_x_from (top_left, bottom_right):
            for choose_y_from (top_left, bottom_right):
                x = choose_x_from[0]
                y = choose_y_from[1]
                if (((x - self.x) ` 2 + (y - self.y) ` 2) <=
                    self.radius ` 2):
                     return True
        return False
```

这**显式**声明了实现了该接口的 `CircleSprite` 类。它甚至能让我们验证该类是否正确实现了接口：

```
from zope.interface import verify

def test_implementation():
    sprite = CircleSprite(x=0, y=0, radius=1)
    verify.verifyObject(ISprite, sprite)
```

这可以由 pytest、nose 或其他测试框架运行，它将验证创建的精灵是否符合接口。测试通常是局部的：它不会测试仅在文档中提及的内容，甚至不会测试方法是否可以在没有异常的情况下被调用！但是，它会检查是否存在正确的方法和属性。这是对单元测试套件一个很好的补充，至少可以防止简单的拼写错误通过测试。

---

via: <https://opensource.com/article/19/9/zopeinterface-python-package>

作者：[Moshe Zadka](https://opensource.com/users/moshezhttps://opensource.com/users/lauren-pritchetthttps://opensource.com/users/sethhttps://opensource.com/users/drmjg) 选题：[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/) 荣誉推出


九个提升程序员技术技能的备忘单和指南

Summary: 用我们最新的编程备忘单和指南来为新年开局，它适合所有技能水平的人。

用我们最新的编程备忘单和指南来为新年开局，它适合所有技能水平的人。

# 九个提升程序员技术技能的备忘单和指南

>
> 用我们最新的编程备忘单和指南来为新年开局，它适合所有技能水平的人。
>
>
>

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

对刚接触命令行的新程序员来说备忘单是完美的。然而，即便是最有经验的程序员也需要时不时地依靠参考资料。假如你刚好敲不出那个讨厌的快捷键，那么手边有个备忘单就很赞了。这是一份我们可供下载指南的综述，它将助你在 2020 年取得成功。

### 备忘单

#### Markdown

[Markdown](https://opensource.com/downloads/cheat-sheet-markdown) 不仅针对程序员，任何人都可以借助它为纯文本文档增添语法和结构。此备忘单提供了使用 CommonMark 规范的 Markdown 基础要点。它还包括 GitHub 和 GitLab 的语法。

#### Linux 权限和用户

用这个 Linux 备忘单把[用户管理](https://opensource.com/downloads/linux-permissions-cheat-sheet)命令放在手边。快速学习如何增删用户、查看历史以及设置权限。

#### Bash

一旦你了解了 [Bash](https://opensource.com/downloads/bash-cheat-sheet)，在命令行中就蕴含了无限可能。我们的 Bash 备忘单可以帮助你更有效地使用键盘快捷键。不知不觉间，你就能在睡眠中（字面意义上）运行脚本。

#### Linux 常用命令

毫不奇怪，我们的 [Linux 常用命令备忘单](https://opensource.com/downloads/linux-common-commands-cheat-sheet)是如此受欢迎。这个备忘单包含了开始安装软件和导览文件系统的要点。为自己和你的同事打印出来吧。

#### 微服务

似乎每个人都在谈论[微服务](https://opensource.com/downloads/microservices-cheat-sheet)，而且理由很充分。微服务使应用程序模块化，因此更容易构建和维护。它不再只是这个备忘单上的流行语。在[微服务开源指南](https://opensource.com/article/19/11/microservices-cheat-sheet)中了解重要的术语并学习更多关于微服务的基础知识。

#### Java

此备忘单非常适合初级和中级 [Java](https://opensource.com/downloads/java-cheat-sheet) 程序员。它包括重要的上下文以及处理导入、变量、类等的代码。

#### pip

程序员爱用 [pip](https://opensource.com/downloads/pip-cheat-sheet) 命令来帮助安装、管理和使用 Python 软件包。然而，pip 可以做的远不止这些。这个备忘单将教你如何构建 wheels 和 record 包。

### 指南

#### 七个不可或缺的 PyPI 库

[这组 Python 教程](https://opensource.com/downloads/7-essential-pypi-libraries)将帮助你学习如何更快地编写扩展、格式化代码、自动化测试、确保代码一致性，以及更多使用 PyPI 库的方法。

#### 开始学习 Kubernetes

在这份平易近人的[指南](https://opensource.com/downloads/getting-started-kubernetes-ebook)中，作者 Scott McCarty 用了一个出人意料的类比来解释 Kubernetes 的价值和上手步骤。

---

via: <https://opensource.com/article/20/1/cheat-sheets-guides>

作者：[Lauren Pritchett](https://opensource.com/users/lauren-pritchett) 选题：[lujun9972](https://github.com/lujun9972) 译者：[nacyro](https://github.com/nacyro) 校对：[wxy](https://github.com/wxy)

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


中国开源项目 Grank 分析报告（2019）

Summary: 时光飞逝，如今已是 2020 年，是时候对主要发源于或活跃于中国的开源项目们进行一次年终总结了，因此我们再一次协同开源社完成了这次的 Grank 分析，并将本报告的简化版本作为《2019 年中国开源年度报告》的一部分出现。

# 中国开源项目 Grank 分析报告（2019）

Linux 中国曾在 2018 年末参与了开源社发布的《[2018 中国开源年度报告](/article-10135-1.html)》的《[数据篇 - Grank 篇](/article-10138-1.html)》的撰写，并为此[提出](/article-10141-1.html)和[开源](https://github.com/lctt/grank/)了 Grank 模型。

时光飞逝，如今已是 2020 年，是时候对主要发源于或活跃于中国的开源项目们进行一次年终总结了，因此我们再一次协同开源社完成了这次的 Grank 分析，并将本报告的[简化版本](https://kaiyuanshe.cn/2019-China-Open-Source-Report/data-grank.html)作为《[2019 年中国开源年度报告](/article-11739-1.html "2019 年中国开源年度报告（问卷篇）")》的一部分出现。

在 2019 年报告中，我们使用和 2018 年报告相同的模型进行分析。但与 2018 年报告不同的是，在 2019 年度报告中，我们引入了大量的企业项目和个人项目，整体分析项目数达到了 1200 余个，并对参与分析的项目进行了分离，按照其所属企业、个人等不同的角度进行分类，让读者能够更加明确不同项目、企业之间的关系。

在我们看具体数据之前，先看一下我们从这些数据中得到感受。

### 洞察

今年在进行 Grank 数据分析的过程中，我们发现了不少有趣的变化，一年时间，如此多的变化，也值得我们思考和讨论。

#### 洞察一：文档类活跃度可达开发类项目的 10 倍

GitHub 项目上一直都有一些文档类的项目，比如各种 Awesome 、各种电子书。我们会发现， 这些项目经常会引起开发者讨论：**XXX 到底能不能算做开源项目？**。 GitHub 官方的态度是明确的，文档类项目 [azure-docs](https://github.com/MicrosoftDocs/azure-docs) 出现在了 GitHub 2019 年度开发者报告中。

近两年来，我们发现越来越多的企业，开始将自己的文档放置在 GitHub 上，与整个社区共同协作，构建更好的文档。在此次分析中，我们发现[腾讯云文档](https://github.com/tencentyun/qcloud-documents)、[阿里云文档](https://github.com/AlibabaCloudDocs)、[PingCAP](https://github.com/pingcap/docs-cn) 等企业文档早已开始在 GitHub 上协作

当我们真正将文档类开源项目进行数据分析后，我们会发现，**文档类项目得益于其低参与成本和学习成本，在项目的活跃度层面可以获得极高的评分，同样的原因，文档类项目也获得了极高的社区化程度**。文档类项目已经逐渐成为开源项目中的一个非常重要的组成部分。这样的现象值得我们思考，**在开源世界，是代码重要，还是社区重要？**

今年的文档类活跃项目最为亮眼的项目，莫过于来自于 **腾讯云的 [tencentyun/qcloud-documents](https://github.com/tencentyun/qcloud-documents)**，此项目的活跃度远超其他项目，总活跃度达到 685.33 ，是同类项目第二名的 5 倍，是开发类项目第一名的 10 倍。

近两年，我们看到大量的企业开始将自己的企业项目文档放在 GitHub 与社区开发者共同协作，获取来自社区开发者的贡献。大量的企业文档类项目的出现，表现出了企业对于开源价值观的认同和投入。

#### 洞察二：企业开源治理水平差异较大

在今年的分析过程中，我们将所有参与分析的账号进行企业级别的分类。通过分类后的数据，我们可以明显看出不同企业在开源治理上的水平和成果。

今年参与分析的的项目中，阿里巴巴的 GitHub 账号有 31 个（源自其[开源项目官网](https://opensource.alibaba.com/project)），而国内其他一线互联网企业百度有 12 个账号、华为有 7 个账号、腾讯有 4 个账号、美团有 3 个账号。

这些账号背后，我们看出的是各企业对于开源的态度和治理能力。显然，拥有 31 个账号的阿里巴巴在治理能力上可能会受到质疑，但 31 个账号，换来的是阿里巴巴开源的生态和声势最为浩大。而账号更少，治理能力更强的腾讯、百度、华为、美团是否就做的更好呢？也不是。这些企业的账号维护的更好，但是，其开源项目的声量、体量却难以与阿里巴巴旗下的众多项目所抗争。

对于阿里巴巴来说，面临的问题是如何教育开发者，以正式、正规、合规的方式来运营、运作开源项目，而对于其他企业，面临的问题可能是如何激励开发者去做开源项目。

#### 洞察三：程序员亚文化兴起

亚文化一直是主流文化的一个阴影，亚文化往往不为人所知，不为广泛群众所接受。但数据不会骗人。在 2019 年的年度报告中，我们评估了一个著名的项目：[komeiji-satori/Dress](https://github.com/komeiji-satori/Dress)。这是一个在 GitHub 上拥有 16K 星标，3.2K 复刻和 198 位贡献者的项目。

这个项目的数据，让我真正意识到，亚文化或许依然替代不了主流文化，但不代表亚文化就没有自己的存在价值和空间。 Dress 项目的诞生和发展，是亚文化向主流文化发声的存在。这些我们过去忽视的亚文化，正在以自己的方式，表达观点。

#### 洞察四： JavaScript 生态不断扩大

“能被 JavaScript 所实现的，终将被 JavaScript 所实现”，过去这只是一个梗，但是在如今这个梗在开源项目领域中，不断的变成了现实。在今年的榜单中，我们看到其中出现了大量的 JavaScript 开源项目

JavaScript 得益于其脚本语言的特性和其简单易学的语法，在近几年获得了大量的关注度和开发者。而其无需编译，在浏览器环境可以直接运行的特性，也让 JavaScript 项目在活跃度的提升上占据了优势。相比于编译一次需要花费大量时间的 C++ 、Rust 项目，显然 JavaScript 优势十足。

#### 洞察五：服务端相关开发依然非常重要

虽然 JavaScript 占据的席位越来越多，但是我们所熟悉的传统的服务端开发、服务端中间件等领域类依然是占据了更多的席位。在今年的活跃度榜单前 100 名中，50 个项目是服务端开发，占据了所有榜单的一半份额。不仅如此，数据库中间件项目 —— TiDB 占据了非文档类项目的活跃度榜单第一名、总活跃度榜单第三名。

对于开发者来说，虽然前端开源项目的声量赫然，但服务端开发项目依然是目前开源项目的主流。对于开发者来说，如果不愿意贡献 JavaScript 相关项目，服务端中间件项目会给你更多的选择。

#### 洞察六： 各家布局物联网

今年由于拆分出了多个子榜单，所以也能够让我们更加清楚的看到不同的企业布局。今年的物联网榜单中，我们看到了华为 2015 年开源的 LiteOS 、阿里巴巴 2017 年开源的 AliOS-Things ，一直到 2019 年的的 TencentOS-Tiny（此项目因为开源时间短，活跃度也不高，总体健康度排名在 200 名左右，故没有出现在后续的榜单中），各家企业都在积极地布局物联网领域。在 2020 年，我们预期物联网领域还能诞生出重要项目。

### 数据

#### 分析方案

由于软件开发项目的迭代周期、研发难度有所不同，各种不同类型的项目放在一个榜单内评比略显不公，因此，2019 年的 Grank 报告我们将参与分析的开源项目切分为以下四个类目，开源项目在同一类目下进行对比，具体分为以下四个类目：

1. **前端类**：包括 iOS、Android、Web 大前端，主要为用户可感知的内容，常见为各种类库
2. **服务端类**：包括 Java、Rust、PHP、Node.js、Python，主要为常见业务后台类库和中间件
3. **工程类**：不限制语言，主要为可直接交付给 C 端客户使用的项目，不作为开发工具参与到开发流程中。
4. **文档类**：主要是各类型的文档项目。
5. **物联网类**：面向物联网场景下的服务端应用、操作系统等应用。
6. **其他类**：无法被涵盖在上述分类范围的项目

#### 前端类分析结果

##### 榜单情况

|  | 项目名 | 所属组织 | grank |
| --- | --- | --- | --- |
| 1 | ant-design | ant-design | 56.1 |
| 2 | omi | tencent | 33.07 |
| 3 | element | ElemeFE | 27.39 |
| 4 | rax | alibaba | 27.32 |
| 5 | umi | umijs | 23.69 |
| 6 | vant | youzan | 23.21 |
| 7 | taro | nervjs | 22.59 |
| 8 | incubator-weex | apache | 22.2 |
| 9 | anu | RubyLouvre | 20.3 |
| 10 | ice | alibaba | 20.07 |
| 11 | zent | youzan | 19.59 |
| 12 | ant-design-pro | ant-design | 14.1 |
| 13 | vant-weapp | youzan | 11.69 |
| 14 | ant-design-mobile | ant-design | 11.41 |
| 15 | hiui | xiaomi | 9.49 |
| 16 | mip2 | mipengine | 8.96 |
| 17 | incubator-echarts | apache | 8.58 |
| 18 | mpx | didi | 8.5 |
| 19 | G2 | antvis | 7.92 |
| 20 | tidb-operator | pingcap | 7.82 |
| 21 | mip-extensions | mipengine | 7.48 |
| 22 | wepy | tencent | 7.04 |
| 23 | G2Plot | antvis | 6.93 |
| 24 | cube-ui | didi | 6.55 |
| 25 | mand-mobile | didi | 6.35 |
| 26 | san | baidu | 6.22 |
| 27 | taro-ui | nervjs | 6.1 |
| 28 | spritejs | spritejs | 5.57 |
| 29 | G6 | antvis | 5.23 |
| 30 | amis | baidu | 5.1 |
| 31 | xLua | tencent | 5.1 |
| 32 | Kingfisher | onevcat | 5.09 |

##### 项目点评

**[ant-design/ant-design](https://github.com/ant-design/ant-design)**

这是一个“服务于企业级产品的设计体系”，是由蚂蚁金服体验技术部采用 React 封装的一套组件库。同时，也是去年的 Grank 评分的第一名。 Ant-Desgin 项目在整体的大方向上于去年并没有太大的区别，甚至从数据的角度上来，2019 年 Ant-Design 有更多的数据更新，保持其一贯优秀的活跃度与社区化程度。

**[tencent/omi](https://github.com/tencent/omi)**

Omi是一个基于 Web Components 并支持 IE、小程序端的前端跨平台框架。

从数据上来看， Omi 项目的活跃度从 2018 年 9 月开始，有大幅度提升，并在 2019 年年初达到了数据的顶峰。在社区化程度方面，从 2019 年年中开始，其社区活跃度出现了下降的趋势，猜测可能是其在内部拥有了更大的话语钱，致使更多的企业内部开发者开始参与到 Omi 项目的开发。

**[elemefe/element](https://github.com/elemefe/element)**

Element 是由饿了么前端团队开源的 Vue UI 框架。从项目活跃上看， Element 近年来的更新乏力，略显颓势。整个项目开始逐渐走向减少维护的阶段。

#### 服务端类分析结果

##### 榜单情况

|  | 项目名 | 所属组织 | grank |
| --- | --- | --- | --- |
| 1 | tidb | pingcap | 68.82 |
| 2 | apollo | apolloauto | 58.76 |
| 3 | incubator-shardingsphere | apache | 34.97 |
| 4 | tikv | tikv | 29.4 |
| 5 | skywalking | apache | 25.92 |
| 6 | carbondata | apache | 25.22 |
| 7 | bk-cmdb | tencent | 20.87 |
| 8 | dubbo | apache | 19.79 |
| 9 | pouch | alibaba | 18.4 |
| 10 | openrasp | baidu | 17.33 |
| 11 | incubator-doris | apache | 14.87 |
| 12 | hyperf | hyperf | 13.72 |
| 13 | kylin | apache | 12.42 |
| 14 | aliyun-openapi-java-sdk | aliyun | 12.38 |
| 15 | Saturn | vipshop | 11.47 |
| 16 | dde-control-center | linuxdeepin | 11.18 |
| 17 | pd | pingcap | 10.65 |
| 18 | seata | seata | 9.19 |
| 19 | rocketmq | apache | 9.14 |
| 20 | bk-sops | tencent | 8.98 |
| 21 | egg | eggjs | 8.88 |
| 22 | tidb-ansible | pingcap | 8.86 |
| 23 | nacos | alibaba | 8.85 |
| 24 | alibaba-cloud-sdk-go | aliyun | 8.35 |
| 25 | ncnn | tencent | 8.14 |
| 26 | incubator-dolphinscheduler | apache | 8.14 |
| 27 | dde-file-manager | linuxdeepin | 8.08 |
| 28 | aliyun-openapi-python-sdk | aliyun | 8.01 |
| 29 | aliyun-openapi-net-sdk | aliyun | 7.63 |
| 30 | tispark | pingcap | 7.49 |
| 31 | Dragonfly | dragonflyoss | 7.39 |
| 32 | kubeedge | kubeedge | 7.38 |
| 33 | wechat | overtrue | 7.27 |
| 34 | incubator-apisix | apache | 6.85 |
| 35 | apollo | ctripcorp | 6.76 |
| 36 | atlas | alibaba | 6.72 |
| 37 | pandora | midwayjs | 5.98 |
| 38 | incubator-brpc | apache | 5.98 |
| 39 | tidb-binlog | pingcap | 5.9 |
| 40 | druid | alibaba | 5.7 |
| 41 | canal | alibaba | 5.55 |
| 42 | terraform-provider | alibaba | 5.48 |
| 43 | parser | pingcap | 5.46 |
| 44 | TDengine | taosdata | 5.41 |
| 45 | pika | qihoo360 | 5.29 |
| 46 | aliyun-openapi-php-sdk | aliyun | 5.24 |
| 47 | spring-cloud-alibaba | alibaba | 5.08 |
| 48 | funcraft | alibaba | 5.07 |
| 49 | Sentinel | alibaba | 4.92 |
| 50 | arthas | alibaba | 4.87 |
| 51 | mars | mars-project | 4.85 |

##### 项目点评

**[pingcap/tidb](https://github.com/pingcap/tidb)**

TiDB 项目是 PingCAP 公司的明星项目，是一款定位于在线事务处理/在线分析处理融合型开源数据库产品。

从数据上来看，TiDB 项目近年来的活跃度不断攀升，与之成为鲜明对比的，是其项目的社区活跃度的不断下降。不过，PingCAP 是业界非常典型的开源企业，其协作模式是所有开发人员通过 GitHub 进行协作，对于合适的开发人员，PingCAP 会选择提供其职位，允许其远程办公，以这样的方式来吸收社区的优秀开源力量，其社区化程度不断下降也实属正常。毕竟，优秀的开发者都被 PingCAP 转化为正规军，也不失为一个好的方法。

**[apolloauto/apollo](https://github.com/apolloauto/apollo)**

apollo 是百度开源出来的自动驾驶解决方案，从 2017 年开源至今，已经迭代至第 5 个版本。

**[apache/incubator-shardingsphere](https://github.com/apache/incubator-shardingsphere)**

shardingsphere 是由京东数科捐赠给 Apache 的分布式数据库中间件解决方案，其中包含了 Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar 三款独立的产品。

#### 工程类分析结果

##### 榜单情况

|  | 项目名 | 所属组织 | grank |
| --- | --- | --- | --- |
| 1 | RSSHub | diygod | 23.18 |
| 2 | ant-design-pro-site | ant-design | 6.29 |

##### 项目点评

**[diygod/rsshub](https://github.com/diygod/rsshub)**

RSSHub 是一个帮助用户将各种各样的内容转化成 RSS 的工具，今年也是他的第一次上榜，RSSHub 以 23 的活跃度积分位列榜单 12 名。

作为一个个人项目，RSSHub 可以说做的是非常棒了，而且，RSSHub 的社区化做的非常好，一直处在高位， 拥有 300 位贡献者。

**[ant-design/ant-design-pro-site](https://github.com/ant-design/ant-design-pro-site)**

#### 文档类分析结果

##### 榜单情况

|  | 项目名 | 所属组织 | grank |
| --- | --- | --- | --- |
| 1 | qcloud-documents | tencentyun | 685.33 |
| 2 | TranslateProject | lctt | 112.17 |
| 3 | gold-miner | xitu | 33.18 |
| 4 | docs-cn | pingcap | 18.65 |
| 5 | iOS-Weekly | SwiftOldDriver | 16.44 |
| 6 | ModelArts-Lab | huaweicloud | 15.81 |
| 7 | learngit | michaelliao | 14.56 |
| 8 | docs | pingcap | 14.51 |
| 9 | GCTT | studygolang | 10.09 |
| 10 | articles | ruanyf | 9.94 |
| 11 | stellaris\_cn | cloudwu | 7.51 |

##### 项目点评

**[tencentyun/qcloud-documents](https://github.com/tencentyun/qcloud-documents)**

此项目为腾讯云文档，一个令人惊讶的项目，拥有 543 个贡献者和 119441 个提交 ，平均更新频次为 5 分种/次，有非常惊人的高频维护，估计是腾讯云将其整个文档放置在 GitHub 上进行开放协作，同时，所有的内部合作，都需要通过 GitHub 来完成。

**此项目虽然活跃度高，由于项目的贡献指南并未说明，绝大多数开发者没有明确的规范参与到项目的更新。**

**[lctt/TranslateProject](https://github.com/lctt/TranslateProject)**

此项目为归属 Linux 中国旗下的翻译组主仓库，该项目拥有 464 名贡献者和 47776 个提交 以及 1.5k 星标 ，平均更新频次为 2 小时，更新频次较高。

**此项目拥有完善的贡献说明，对于新手开发者来说，更加的友好，对于无法参与到开发阶段的开发者，可以考虑从翻译开始。**

**[xitu/gold-miner](https://github.com/xitu/gold-miner)**

此项目为掘金翻译计划的官方仓库 ，来自社区的开发者们在一个仓库 上协作，贡献自己的翻译文章，该项目拥有 417 名贡献者和 9754 个提交，以及超过 24.9K 的星标。

#### 物联网类分析结果

##### 榜单情况

|  | 项目名 | 所属组织 | grank |
| --- | --- | --- | --- |
| 1 | rt-thread | rt-thread | 19.25 |
| 2 | LiteOS | liteos | 6.26 |
| 3 | AliOS-Things | alibaba | 5.6 |

##### 项目点评

**[rt-thread/rt-thread](https://github.com/rt-thread/rt-thread)**

RT-Thread 是一个 2006 年创建的项目，十余年来专注于物联网实时操作系统。其项目自 2018 年起，开始出现明显的活跃度增加。回望 2017 、2018，物联网生态企业和产品的蓬勃发展，让开源项目也随之获得了大量的关注度，项目维护团队、社区开源爱好者的参与，让 RT-Thread 能够跑的更快。

**[liteos/LiteOS](https://github.com/liteos/liteos)**

LiteOS 是华为开源的物联网操作系统，从 2015 年发布，到 2019年结束，LiteOS 的各项数据有着明显的变化。从 2017 年的不怎么维护，到 2018 年的迅猛发展，再到 2019 年的归为平淡，从某种角度来说，LiteOS 颇具 KPI 项目的潜质。而社区化程度的低位，也会让用户去思考，这个系统是否值得我去使用？

**[alibaba/AliOS-Things](https://github.com/alibaba/AliOS-Things)**

AliOS-Things 源自阿里巴巴，自 2017 年开源以来，项目总体来说，维护的节奏比较平稳，从初期的大幅度维护，到后期的小幅度维护。从活跃度的角度来看，是一个不错的项目，不过，社区化的变化，可能是由于 AliOS-Things 在内部的权重变重，更多的企业开发者参与到项目中来，去推进项目的进度。

#### 其他类分析结果

##### 榜单情况

|  | 项目名 | 所属组织 | grank |
| --- | --- | --- | --- |
| 1 | 996.ICU | 996icu | 14.79 |

##### 项目点评

**[996icu/996.ICU](https://github.com/996icu/996.ICU)**

996.ICU 项目作为 2019 年现象级的一个项目，一度得到了社会和社区的广泛关注，但是由于种种原因，这个项目的消亡也很快。不胜叹息。

#### 活跃度总榜前 100 名

|  | 项目名 | grank | 所属组织 |
| --- | --- | --- | --- |
| 1 | qcloud-documents | tencentyun | 685.33 |
| 2 | TranslateProject | lctt | 112.17 |
| 3 | tidb | pingcap | 68.82 |
| 4 | apollo | apolloauto | 58.76 |
| 5 | ant-design | ant-design | 56.1 |
| 6 | incubator-shardingsphere | apache | 34.97 |
| 7 | gold-miner | xitu | 33.18 |
| 8 | omi | tencent | 33.07 |
| 9 | tikv | tikv | 29.4 |
| 10 | element | ElemeFE | 27.39 |
| 11 | rax | alibaba | 27.32 |
| 12 | skywalking | apache | 25.92 |
| 13 | carbondata | apache | 25.22 |
| 14 | tinkerpop | apache | 24.07 |
| 15 | umi | umijs | 23.69 |
| 16 | vant | youzan | 23.21 |
| 17 | RSSHub | diygod | 23.18 |
| 18 | taro | nervjs | 22.59 |
| 19 | incubator-weex | apache | 22.2 |
| 20 | bk-cmdb | tencent | 20.87 |
| 21 | anu | RubyLouvre | 20.3 |
| 22 | ice | alibaba | 20.07 |
| 23 | dubbo | apache | 19.79 |
| 24 | zent | youzan | 19.59 |
| 25 | rt-thread | rt-thread | 19.25 |
| 26 | docs-cn | pingcap | 18.65 |
| 27 | pouch | alibaba | 18.4 |
| 28 | openrasp | baidu | 17.33 |
| 29 | iOS-Weekly | SwiftOldDriver | 16.44 |
| 30 | ModelArts-Lab | huaweicloud | 15.81 |
| 31 | incubator-doris | apache | 14.87 |
| 32 | 996.ICU | 996icu | 14.79 |
| 33 | learngit | michaelliao | 14.56 |
| 34 | docs | pingcap | 14.51 |
| 35 | ant-design-pro | ant-design | 14.1 |
| 36 | hyperf | hyperf | 13.72 |
| 37 | kylin | apache | 12.42 |
| 38 | aliyun-openapi-java-sdk | aliyun | 12.38 |
| 39 | vant-weapp | youzan | 11.69 |
| 40 | Saturn | vipshop | 11.47 |
| 41 | ant-design-mobile | ant-design | 11.41 |
| 42 | dde-control-center | linuxdeepin | 11.18 |
| 43 | pd | pingcap | 10.65 |
| 44 | GCTT | studygolang | 10.09 |
| 45 | articles | ruanyf | 9.94 |
| 46 | hiui | xiaomi | 9.49 |
| 47 | seata | seata | 9.19 |
| 48 | rocketmq | apache | 9.14 |
| 49 | bk-sops | tencent | 8.98 |
| 50 | mip2 | mipengine | 8.96 |
| 51 | egg | eggjs | 8.88 |
| 52 | tidb-ansible | pingcap | 8.86 |
| 53 | nacos | alibaba | 8.85 |
| 54 | incubator-echarts | apache | 8.58 |
| 55 | mpx | didi | 8.5 |
| 56 | alibaba-cloud-sdk-go | aliyun | 8.35 |
| 57 | ncnn | tencent | 8.14 |
| 58 | incubator-dolphinscheduler | apache | 8.14 |
| 59 | dde-file-manager | linuxdeepin | 8.08 |
| 60 | aliyun-openapi-python-sdk | aliyun | 8.01 |
| 61 | G2 | antvis | 7.92 |
| 62 | tidb-operator | pingcap | 7.82 |
| 63 | aliyun-openapi-net-sdk | aliyun | 7.63 |
| 64 | stellaris\_cn | cloudwu | 7.51 |
| 65 | tispark | pingcap | 7.49 |
| 66 | mip-extensions | mipengine | 7.48 |
| 67 | Dragonfly | dragonflyoss | 7.39 |
| 68 | kubeedge | kubeedge | 7.38 |
| 69 | wechat | overtrue | 7.27 |
| 70 | wepy | tencent | 7.04 |
| 71 | G2Plot | antvis | 6.93 |
| 72 | incubator-apisix | apache | 6.85 |
| 73 | apollo | ctripcorp | 6.76 |
| 74 | atlas | alibaba | 6.72 |
| 75 | cube-ui | didi | 6.55 |
| 76 | mand-mobile | didi | 6.35 |
| 77 | ant-design-pro-site | ant-design | 6.29 |
| 78 | LiteOS | liteos | 6.26 |
| 79 | san | baidu | 6.22 |
| 80 | taro-ui | nervjs | 6.1 |
| 81 | pandora | midwayjs | 5.98 |
| 82 | incubator-brpc | apache | 5.98 |
| 83 | tidb-binlog | pingcap | 5.9 |
| 84 | druid | alibaba | 5.7 |
| 85 | AliOS-Things | alibaba | 5.6 |
| 86 | spritejs | spritejs | 5.57 |
| 87 | canal | alibaba | 5.55 |
| 88 | terraform-provider | alibaba | 5.48 |
| 89 | parser | pingcap | 5.46 |
| 90 | TDengine | taosdata | 5.41 |
| 91 | pika | qihoo360 | 5.29 |
| 92 | aliyun-openapi-php-sdk | aliyun | 5.24 |
| 93 | G6 | antvis | 5.23 |
| 94 | amis | baidu | 5.1 |
| 95 | xLua | tencent | 5.1 |
| 96 | Kingfisher | onevcat | 5.09 |
| 97 | spring-cloud-alibaba | alibaba | 5.08 |
| 98 | funcraft | alibaba | 5.07 |
| 99 | Sentinel | alibaba | 4.92 |
| 100 | arthas | alibaba | 4.87 |

### 致谢与反馈报告问题

由于时间有限，本次报告仅收录部分项目，如果其中存在数据错误或希望补充收录，请通过 [邮件](https://lctt.github.io/Grank/2019/reference/xiqingongzi+grank@gmail.com) 联系我们。

如果报告撰写过程中出现文字错误等问题，你可以直接访问 [GRank](https://github.com/lctt/grank) 仓库，提交 PR 修正。

本次数据分析所引用的企业账号的部分数据源自《[InfoQ:中国互联网公司开源项目调研报告](https://www.infoq.cn/article/G4O6JUhJF*Tsv9eWM0L6)》。

### 附录

#### 附录一 研究方法综述

Grank 是本报告制定的一个指数，用于综合评估一个开源项目、开源组织的健康程度。

##### Grank 模型介绍

我们认为，一个健康的开源项目应该体现为以下两个方面：

* 项目的活跃度趋势
* 项目的社区化（去中心化）程度

而这两个方面分别有多个因素组成：

**活跃度和活跃度趋势**

项目的活跃度，我们定义为项目的提交数、 拉取请求数和贡献者数（其它数据，如代码行数、文件数、提案数、复刻数、星标数，要么是权重相对低得多，要么是代表意义不够确定，此处忽略不计入模型）。

但是，对于不同的项目，其横向比较其活跃度，或有不同的活跃度形态，或不具备可比性。很难说一个项目比另外一个项目的提交数高，而拉取请求（PR）数低代表的确切含义。因此我们不认为对不同项目的这些数据进行绝对值的比较有太多的科学意义。

所以，我们认为一个项目本身的活跃度变化的趋势和幅度，会更有项目间比较的意义。

如果以三维空间来描述一个项目的活跃度，以提交数、拉取请求数、贡献者数为三维，可以确定在某个时间点某个项目的坐标，那么计算一段时间内，该坐标点的移动轨迹和速率，可以真实的反映该项目的活跃度趋势。

考虑到按周工作的作息时间的普遍影响，我们以一个工作周作为一个时间采样点，然后计算连续的几周内该坐标的移动速率。这反映了该项目的发展速度。

**社区化程度**

开源诞生于社区，繁荣于社区，根植于社区，虽然现在大型组织、商业公司也纷纷投身于开源生态，但是我们认为，开源项目的生命力仍然在于社区。我们并不否认机构、商业公司对开源的巨大贡献和影响力，但是如果一个开源项目变成了一家或几家大企业的私人游戏，其必然失去开源项目的生命力，它或许会在商业上取得成功，但是那个成功不是开源项目的成功模式。

因此，我们认为需要有一个评估开源项目的社区化（去中心化）程度的指标。项目（尤其是软件项目）的一个重要属性是开发人员的社区化身份，因此，我们以实际向项目贡献了代码的人员的社区化离散程度来评估项目的社区化程度。

每个参与项目开发的人员均有其身份属性，这个身份可能是企业雇佣身份，也可能是社区志愿者身份。我们通过对项目的提交中的提交者数据进行收集，然后根据开发人员的身份信息、邮件后缀等依优先级来判断其所属身份。然后对这些信息进行聚类，以一个离散评估模型来评估该数据集的离散程度。

虽然项目越中心化，其发展风险越高，但是，并不是社区化程度越高的项目就越健康，过于离散的项目也容易出现项目分裂、迭代缓慢等问题。这显然是存在一个适当的区域。

通过上述两个指数，我们可以对项目进行象限划分，以“项目活跃度”和“社区化程度”为两个象限轴。

#### 附录二 数据采集方式、工具与时间

* 数据采集方式：基于 Github Developers API V4 进行数据抓取
* 数据采集所用工具：<https://github.com/LCTT/Grank>
* 数据抓取时间范围： 2017 年 1 月 1 日 ～ 2019 年 12 月 31 日

#### 附录三 参与分析账号

##### 企业及组织账号

百度

| 账号名 | 账号描述 |
| --- | --- |
| baidu | Baidu Open Source Projects |
| ApolloAuto | An open autonomous driving platform |
| brpc | 百度捐赠给 Apache 的项目 |
| clouda-team | Clouda-team |
| mipengine | Mobile Instant Pages |
| mesalock-linux | A Memory-Safe Linux Distribution |
| ecomfe | Baidu EFE team |
| fex-team | Baidu FEX team |
| baidu-research | baidu-research |
| huiyan-fe | 百度地图数据智能前端 |
| be-fe | 百度企业产品前端研发团队 |
| swan-team | 智能小程序 |

阿里巴巴

| 账号名 | 账号描述 |
| --- | --- |
| alibaba | Alibaba Open Source |
| alipay | Ant Financial Open Source |
| taobao | Taobao, Inc. |
| thx | 阿里妈妈 前端团队出品 |
| kissyteam | kissyteam |
| ant-design | A UI Design Language |
| antvis | 蚂蚁金服 - 数据可视化 |
| kissygalleryteam | kissygalleryteam |
| seajs | seajs |
| midwayjs | Alibaba Taobao MidwayJS |
| ali-sdk | SDK for ali services |
| cnpm | cnpm developer group |
| hiloteam | A Cross-end HTML5 Game development solution developed by Alibaba Group |
| eggjs | A web framework's framework for Node.js |
| macacajs | Solution with Automation anywhere |
| ElemeFE | 饿了么前端 |
| youkuvip | 优酷土豆前端工程效率团队(Engineering efficiency)，致力于提升前端团队生产力 |
| dvajs | dva.js |
| seata | Simple Extensible Autonomous Transaction Architecture |
| dragonflyoss | dragonflyoss |
| sofastack | SOFAStack |
| chaosblade-io | chaosblade-io |
| aliyun | Alibaba Cloud |
| AliyunContainerService | 阿里云容器服务 - ACS (Container Service), ACK (Container Service for Kubernetes) , ASK (Serverless Kubernetes) etc.｜ |
| aliqin | 阿里通信 |
| dragonflyoss | dragonflyoss |
| AlibabaCloudDocs | Alibaba Cloud Docs |
| sentinel-group | Sentinel Group |
| umijs | ? Pluggable enterprise-level react application framework. |
| mars-project | mars project |
| node-honeycomb | node-honeycomb |

腾讯

| 账号名 | 账号描述 |
| --- | --- |
| tencent | Tencent |
| alloyteam | 腾讯 AlloyTeam |
| tarsCloud | TarsCloud |
| weixin | 微信 |
| tencentyun | 腾讯云 |

华为

| 账号名 | 账号描述 |
| --- | --- |
| huawei | This is an open platform for Huawei |
| huawei-cloudnative | Huawei CloudNative Open Source Team |
| huaweicloud | HUAWEI CLOUD |
| kubeedge | KubeEdge |
| kubegene | KubeGene |
| liteos | Huawei LiteOS is an IoT Operating System |
| huawei-noah | Working with and contributing to the open source community in data mining, artificial intelligence, and related fields. |

美团

| 账号名 | 账号描述 |
| --- | --- |
| meituan | 美团 meituan |
| meituan-dianping | 美团点评技术团队官方账号。 |
| dianping | 原大众点评技术团队账号 |

360

| 账号名 | 账号描述 |
| --- | --- |
| qihoo360 | 360 official github |
| spritejs | spritejs |
| thinkjs | ThinkJS |
| chimeejs | Chimee for working with video on the web, as an HTML5 video player. |
| 75team | 奇舞团 |
| 0Kee-Team | 0Kee team of 360, China |

小米

| 账号名 | 账号描述 |
| --- | --- |
| xiaomi | Xiaomi |
| micode | Mi OpenSource |

PingCAP

| 账号名 | 账号描述 |
| --- | --- |
| pingcap | PingCAP |
| tikv | TiKV Project |

有赞

| 账号名 | 账号描述 |
| --- | --- |
| youzan | 有赞 |

京东

| 账号名 | 账号描述 |
| --- | --- |
| areslabs | ARES Labs |
| nervjs | NervJS |
| jdf2e | FEB TEAM |

字节跳动

| 账号名 | 账号描述 |
| --- | --- |
| bytedance | Bytedance Inc. |

RT-Thread

| 账号名 | 账号描述 |
| --- | --- |
| rt-thread | RT-Thread is an open source IoT operating system from China. |

网易

| 账号名 | 账号描述 |
| --- | --- |
| netease | NetEase |
| netease-im | 网易云信 |
| AirtestProject | Automation Project from NetEase |
| 163yun | NetEase Cloud(网易云) |

滴滴出行

| 账号名 | 账号描述 |
| --- | --- |
| didi | 滴滴出行 |

唯品会

| 账号名 | 账号描述 |
| --- | --- |
| vipshop | 唯品会 |

武汉深之度

| 账号名 | 账号描述 |
| --- | --- |
| linuxdeepin | Wuhan Deepin Technology Co.,Ltd. |

hyperf

| 账号名 | 账号描述 |
| --- | --- |
| hyperf | Hyperf |

微众银行

| 账号名 | 账号描述 |
| --- | --- |
| WeBankFinTech | WeBankFinTech |

SwiftOldDriver

| 账号名 | 账号描述 |
| --- | --- |
| SwiftOldDriver | Swift 老司机活动中心 |

SwiftGGTeam

| 账号名 | 账号描述 |
| --- | --- |
| SwiftGGTeam | Swift.gg 翻译组 |

豆瓣

| 账号名 | 账号描述 |
| --- | --- |
| douban | Douban Inc. |

Linux 中国

| 账号名 | 账号描述 |
| --- | --- |
| lctt | Linux 中国翻译组 |

studygolang

| 账号名 | 账号描述 |
| --- | --- |
| studygolang | studygolang |

涛思数据

| 账号名 | 账号描述 |
| --- | --- |
| taosdata | taosdata |

携程

| 账号名 | 账号描述 |
| --- | --- |
| ctripcorp | Ctrip, Inc. |

去哪儿

| 账号名 | 账号描述 |
| --- | --- |
| qunarcorp | Qunar.com open source projects |

当当

| 账号名 | 账号描述 |
| --- | --- |
| qunarcorp | 当当 |

##### 个人账号

在 Github 上关注者数大于 10000 的账号。

* 996icu
* diygod
* ruanyf
* yyx990803
* michaelliao
* daimajia
* JacksonTian
* Trinea
* phodal
* stormzhang
* cloudwu
* lifesinger
* astaxie
* onevcat
* justjavac
* breakwa11
* RubyLouvre
* hongyangAndroid
* laruence
* ibireme
* bailicangdu
* bestony


Linux useradd 命令介绍

Summary: 使用 useradd 命令来添加用户（并且根据需要修改账号）。

使用 useradd 命令来添加用户（并且根据需要修改账号）。

# Linux useradd 命令介绍

>
> 使用 useradd 命令来添加用户（并且根据需要修改账号）。
>
>
>

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

任何计算机系统中，添加用户都是最重要的事之一；本文着重介绍如何在 Linux 系统中添加用户。

正式开始之前，我先提三个概念。首先，跟大多数操作系统一样，Linux 用户也需要一个账号才能登录。本文只介绍本地账号，不涉及网络账号，如 LDAP。其次，每个账号都有一个名字（username）和一个对应的数字（用户 ID）。最后，每个用户通常都在一个组内，每个组都有一个名字和一个组 ID。

你可能已经想到了，Linux 提供了添加用户的命令行工具，就是 `useradd` 命令。有些版本也叫 `adduser`。为了方便使用，很多发行版上这个命令是一个指向 `useradd` 命令的符号链接。

```
$ file `which adduser`
/usr/sbin/adduser: symbolic link to useradd
```

来看一下 `useradd`。

>
> 注意：本文描述的默认环境是 Red Hat Enterprise Linux 8.0。你可能会发现本文描述的这些文件和某些默认值与某些 Linux 发行版或其他 Unix 操作系统（FreeBSD 或 Solaris）偶尔会有差异。
>
>
>

### 默认处理

`useradd` 的基本用法相当简单：提供一个用户名就可以添加一个用户。

```
$ sudo useradd sonny
```

在本例中，`useradd` 命令创建了一个名为 `sonny` 的账号。此命令同时创建了一个同名的组，`sonny` 被放进了这个组，这个组也是 `sonny` 账号的主组。命令执行时，根据配置文件 `/etc/default/useradd` 和 `/etc/login.defs` 中的不同设置，也会有其他的参数，如语言和 shell。对于一个私人系统或微小的单服务商业环境，这些参数已经足够了。

上面两个文件控制 `useradd` 的处理，用户的信息保存在 `/etc` 目录下的一些其他文件中，关于这些信息的讲解会贯穿全文。

| 文件 | 描述 | 域 (加粗的表示由 useradd 命令设置) |
| --- | --- | --- |
| `passwd` | 存储用户账号信息 | **用户名**:未使用:**UID**:**GID**:**备注**:**家目录**:**shell** |
| `shadow` | 存储用户账号的安全信息 | **用户名**:加密密码:上次修改时间:最短使用天数:最长使用天数间:**修改前警示天数**:**过期后宽限时间**:未使用 |
| `group` | 存储组信息 | **组名**:未使用:**GID**:**成员列表** |

### 自定义处理

当管理员需要更好地控制账号时，可以使用命令行来自定义，如指定一个用户的 ID。

#### 用户和组 ID

默认情况下，`useradd` 试图使用相同的用户 ID（UID）和主组 ID（GID），但也不完全是。虽然 UID 与 GID 相同不是必须的，但如果相同，会更方便管理员管理。

下面的场景就是一个 GID 与 UID 不同的例子。现在我添加另一账号，名为 Timmy。通过使用 `getent` 命令来比较 `sonny` 和 `timmy` 两个账号，显示两个用户和对应的主组。

```
$ getent passwd sonny timmy
sonny:x:1001:1002:Sonny:/home/sonny:/bin/bash
timmy:x:1002:1003::/home/timmy:/bin/bash

$ getent group sonny timmy
sonny:x:1002:
timmy:x:1003:
```

不幸的是，两者的 UID 和 GID 都不相同。因为默认的处理是，创建用户时，把下一个可用的 UID 赋给用户，然后把同一个数字作为主组 ID 赋给它。然而，当要使用的组 ID 已经被使用时，就再把下一个可用的 GID 赋给它。为了弄清细节，我猜想 1001 这个 GID 已经被使用了，用一个命令确认了一下。

```
$ getent group 1001
book:x:1001:alan
```

`book` 的 ID 是 `1001`，因此新创建的用户的 GID 都有偏移量 1。这就是为什么系统管理员在用户创建过程中需要多设置一些值的一个实例。为了解决这个问题，我必须先确定下一个可用的 UID 和 GID 是否相同。确定下一个可用值时，可以使用 `getent group` 和 `getent passwd` 命令，通过 `-u` 参数传递要确认的值。

```
$ sudo useradd -u 1004 bobby

$ getent passwd bobby; getent group bobby
bobby:x:1004:1004::/home/bobby:/bin/bash
bobby:x:1004:
```

另一个需要指定 ID 的场景是，通过 NFS 访问远程系统上的文件时。对于一个给定的用户，当 NFS 所有客户端和服务系统的 ID 都一样时，管理员更容易控制。在我的文章 [使用 autofs 挂载 NFS](https://opensource.com/article/18/6/using-autofs-mount-nfs-shares) 中有详细介绍。

### 更多自定义

一些其他的指定用户信息的参数也用得比较频繁。这里是一些你会经常用到的参数的概括例子。

#### 注释

注释选项是通过 `-c` 参数指定的一个解释文本字段，可以提供一段简短的描述或其他信息。

```
$ sudo useradd -c "Bailey is cool" bailey
$ getent passwd bailey
bailey:x:1011:1011:Bailey is cool:/home/bailey:/bin/bash
```

#### 组

一个用户可以被指定一个主组和多个次组。`-g` 参数指定主组名称或 GID。如果不指定，`useradd` 会以用户名创建一个主组（前面演示过）。`-G`（大写）参数用一个逗号分隔的组列表来指定此用户所属的组，这些组就是次组。

```
$ sudo useradd -G tgroup,fgroup,libvirt milly
$ id milly
uid=1012(milly) gid=1012(milly) groups=1012(milly),981(libvirt),4000(fgroup),3000(tgroup)
```

#### 家目录

`useradd` 的默认处理是，在 `/home` 目录下创建用户的家目录。然而，下面的参数可以改写家目录的基础目录。`-b` 设置另一个可以创建家目录的基础目录。例如指定 `/home2` 而不是 `/home`。

```
$ sudo useradd -b /home2 vicky
$ getent passwd vicky
vicky:x:1013:1013::/home2/vicky:/bin/bash
```

`-d` 参数可以指定一个与用户名不同的家目录。

```
$ sudo useradd -d /home/ben jerry
$ getent passwd jerry
jerry:x:1014:1014::/home/ben:/bin/bash
```

#### 目录模板

指定 `-k` 参数会在创建新用户时，复制 `/etc/skel` 目录下的所有文件到用户的家目录中。这些文件通常是 shell 配置文件，当然也可以是系统管理员想在新建用户时使用的任何文件。

#### Shell

`-s` 参数可以指定 shell。如果不指定，则使用默认的 shell。例如，下面的例子中 ，配置文件中定义的 shell 是 `bash`，但 `wally` 这个用户指定的是 `zsh`。

```
SHELL=/bin/bash

$ sudo useradd -s /usr/bin/zsh wally
$ getent passwd wally
wally:x:1004:1004::/home/wally:/usr/bin/zsh
```

#### 安全

安全是用户管理的重中之重，因此 `useradd` 命令也提供了很多关于安全的选项。可以使用 `-e` 参数，以 YYYY-MM-DD 的格式指定一个用户的过期时间。

```
$ sudo useradd -e 20191231 sammy
$ sudo getent shadow sammy
sammy:!!:18171:0:99999:7::20191231:
```

当密码过期时，账号也会自动失效。`-f` 参数指定密码过期后经过几天账号失效。如果设为 0，则立即失效。

```
$ sudo useradd -f 30 willy
$ sudo getent shadow willy
willy:!!:18171:0:99999:7:30::
```

### 实例

生产环境中，创建一个用户账号时会用到多个参数。例如，我要创建一个 Perry 账号，可能会用下面的命令：

```
$ sudo useradd -u 1020 -c "Perry Example" \
-G tgroup -b /home2 \
-s /usr/bin/zsh \
-e 20201201 -f 5 perry
```

查看前面的内容来理解每个选项。用下面的命令确认结果：

```
$ getent passwd perry; getent group perry; getent shadow perry; id perry
perry:x:1020:1020:Perry Example:/home2/perry:/usr/bin/zsh
perry:x:1020:
perry:!!:18171:0:99999:7:5:20201201:
uid=1020(perry) gid=1020(perry) groups=1020(perry),3000(tgroup)
```

### 一点小建议

`useradd` 命令是所有 Unix（不仅仅是 Linux）系统管理员都必知必会的命令。由于用户创建不能出错，需要第一次就正确，所以理解它的每一个选项很重要。这意味着你需要有一套深思熟虑的命名约定，包括为整个企业环境而不仅仅是一个单系统预留一个专用的 UID/GID 范围，尤其是你为一个成长中的组织工作时。

---

via: <https://opensource.com/article/19/10/linux-useradd-command>

作者：[Alan Formy-Duval](https://opensource.com/users/alanfdoss) 选题：[lujun9972](https://github.com/lujun9972) 译者：[lxbwolf](https://github.com/lxbwolf) 校对：[wxy](https://github.com/wxy)

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


2020 年对 Kubernetes 的 5 个预测

Summary: 以及，对 2019 年最受欢迎的 Kubernetes 文章的回顾。

以及，对 2019 年最受欢迎的 Kubernetes 文章的回顾。

# 2020 年对 Kubernetes 的 5 个预测

>
> 以及，对 2019 年最受欢迎的 Kubernetes 文章的回顾。
>
>
>

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

你是怎么追踪一个广受欢迎的项目（如 Kubernetes）的发展轨迹？你是怎么了解它发展到什么程度了？如果你在为这个项目作贡献或加入了特殊兴趣组（SIG），可能你会在潜移默化中了解到它的发展轨迹，但如果你的全日工作不涉及到为 Kubernetes 作贡献，那么你可能需要一点关于未来的预测来帮助你了解。对于一个诸如 Kubernetes 的快速发展的项目，年末是回顾过去的一年和展望新的一年的最好时机。

今年，Kubernetes 取得了很大的进展。除了去查看源码、文档、会议笔记，你也可以去浏览博客。为了深入了解，我在 Opensource.com 上找到了 Kubernetes 排名前十的文章。通过这些文章，我们能了解开发者们更喜欢读和写哪些话题的文章。我们开始吧！

* [为什么数据科学家喜欢Kubernetes](https://opensource.com/article/19/1/why-data-scientists-love-kubernetes)
* [Kubernetes 机密信息和 ConfigMap 简介](https://opensource.com/article/19/6/introduction-kubernetes-secrets-and-configmaps)
* [怎样在 Kubernetes 上运行 PostgreSQL](/article-10762-1.html)（译文）
* [为什么说 Kubernetes 是一辆翻斗车](/article-11011-1.html)（译文）
* [安全扫描你的 DevOps 流程](https://opensource.com/article/19/7/security-scanning-your-devops-pipeline)
* [在 Kubernetes 上部署 InfluxDB 和 Grafana 以收集 Twitter 统计信息](https://opensource.com/article/19/2/deploy-influxdb-grafana-kubernetes)
* [使用 Kubernetes 操作器扩展 PostgreSQL](https://opensource.com/article/19/2/scaling-postgresql-kubernetes-operators)
* [使用 Kubernetes 控制器减少系统管理员的工作量](https://opensource.com/article/19/3/reducing-sysadmin-toil-kubernetes-controllers)
* [将 Kubernetes 带到裸金属边缘计算](https://opensource.com/article/19/3/bringing-kubernetes-bare-metal-edge)
* [为什么你不必担心 Kubernetes](https://opensource.com/article/19/10/kubernetes-complex-business-problem)

首先，我要指明这些文章中有 5 篇是关于 Kubernetes 工作负载的扩展以及它们可以运行在什么场景。这些工作负载涵盖数据科学、PostgreSQL、InfluxDB、Grafana（不仅仅监控集群本身）和边缘计算。从历史角度看，Kubernetes 和容器都是在虚拟机上运行的，尤其是运行在由云提供的基础设施上时。抛开对于 Kubernetes 的兴趣因素，这也表明了终端用户们极度希望在裸机上安装 Kubernetes（参照 [用 OpenShift 在裸机环境运行 Kubernetes](https://blog.openshift.com/kubernetes-on-metal-with-openshift/)）。

其次，也有很多开发者希望了解操作相关的知识以及 Kubernetes 的最佳实践。从 [Kubernetes 操作器](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) 到 [Kubernetes 控制器](https://kubernetes.io/docs/concepts/architecture/controller/)，从 [机密信息](https://kubernetes.io/docs/concepts/configuration/secret/) 到 [ConfigMaps](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/)，开发者和运维人员都希望能找到简化部署和管理工作的最佳实践。我们经常纠结在怎么去修改配置文件或别人会怎么配置，而不去回头想想这些配置是怎么让应用部署运转的（不是怎么安装，也不是怎么运行 Kubernetes）。

最后，人们似乎对入门教程真的感兴趣。事实上，构建 Kubernetes 所需了解的信息太多了，以至于让人们望而却步，也使他们走了错误的路。流行度高的文章中有几篇讲述了为什么你需要了解用 Kubernetes 运行应用程序，而不仅仅是安装它。就像最佳实践类的文章一样，人们也通常不会回头分析在入门时他们应该在什么地方花费时间。我一直秉持的理念是，把有限的时间和金钱投入到如何使用某项技术上，而不是如何构建它。

### 2020 年对 Kubernetes 的 5 个预测

回顾了 2019 年的相关主题，这些主题告诉我们 2020 年将如何发展？结合这些文章中的观点，加上我自己的看法，我来分享下我对于 2020 年以及未来发展趋势的想法：

1. 工作负载扩展。我会关注高性能计算、AI/ML 以及使用操作器的有状态工作负载。
2. 更多的生产中的最佳实践，尤其是跟一些成熟的标准相关的，像 PCI、HIPAA、NIST 等等。
3. 提升免 root 和更安全的[运行时类](https://kubernetes.io/docs/concepts/containers/runtime-class/)（如 [gVisor](https://gvisor.dev/)、[Kata Containers](https://katacontainers.io/) 等等）的安全性。
4. 在部署和开发者们共享应用时，把 Kubernetes 清单的更好的规范标准作为部署的核心要素。如 [podman 生成 kube](https://developers.redhat.com/blog/2019/01/29/podman-kubernetes-yaml/)、[podman 运行 kube](https://www.redhat.com/en/blog/rhel-81-minor-release-major-new-container-capabilities)，还有多合一 Kubernetes 环境，如 [CodeReady Containers (CRC)](https://developers.redhat.com/products/codeready-containers/overview)
5. 一个前所未有的网络、存储和专业硬件（如 GPU 等等）供应商的生态系统，为 Kubernetes 提供 BoB（LCTT 译注：best of breed，单项最佳品牌）解决方案（在自由软件中，我们相信开放的生态系统好过垂直整合的解决方案）。

期待 Kubernetes 在新的一年里再创辉煌！

---

via: <https://opensource.com/article/20/1/kubernetes-2020>

作者：[Scott McCarty](https://opensource.com/users/fatherlinux) 选题：[lujun9972](https://github.com/lujun9972) 译者：[lxbwolf](https://github.com/lxbwolf) 校对：[wxy](https://github.com/wxy)

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


提升自动化技巧的 10 篇 Ansible 文章

Summary: 今年，准备好，用出色的 Ansible 自动化技能装备自己的技能包吧。

今年，准备好，用出色的 Ansible 自动化技能装备自己的技能包吧。

# 提升自动化技巧的 10 篇 Ansible 文章

>
> 今年，准备好，用出色的 Ansible 自动化技能装备自己的技能包吧。
>
>
>

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

今年我关注了大量关于 Ansible 的文章，以下这些内容都值得每个人学习，无论是否是 Ansible 的新手。

这些文章值得大家标记为书签，或者设置个计划任务（亦或者是设置一个 Tower/AWX 任务），用来提醒自己常读常新。

如果你是 Ansible 的新手，那么就从这些文章开始着手吧：

* 《[Ansible 快速入门指南](https://opensource.com/article/19/2/quickstart-guide-ansible)》拥有一些对新手非常有用的信息，同时还介绍了一些更高级的话题。
* 《[你需要知道的 10 个 Ansible 模块](https://opensource.com/article/19/9/must-know-ansible-modules)》和《[5 个 Ansible 运维任务](/article-11312-1.html)》（译文）这两篇文章有每一位 Ansible 管理员都应该熟悉并认真研习的一些最基础的 Ansible 功能。
* 《[如何使用 Ansible 记录流程](https://opensource.com/article/19/4/ansible-procedures)》这篇文章是对一些额外话题的纵览，我猜你一定会感到很有趣。

剩余的这些文章包含了更多高级的话题，比如 Windows 管理、测试、硬件、云和容器，甚至包括了一个案例研究，如何管理那些对技术有兴趣的孩子的需求。

我希望你能像我一样好好享受 Ansible 带来的乐趣。不要停止学习哦！

1. 《[Ansible 如何为我的家庭带来和平](https://opensource.com/article/19/9/ansible-documentation-kids-laptops)》这个异想天开的案例，你能看到如何利用 Ansible 为孩子们快速部署一个新的笔记本（或者重装旧笔记本）
2. Taz Brown 和 Abner Malivert 的《[适用于 Windows 管理员的 Ansible](https://opensource.com/article/19/2/ansible-windows-admin)》：你知道 Ansible 也可以管理 Windows 的节点吗？这篇文章以部署一个 IIS 为案例，阐述了基础的 Ansible 服务器和 Windows 客户端的安装。
3. Shashank Hegde 的《[你需要知道的 10 个 Ansible 模块](https://opensource.com/article/19/9/must-know-ansible-modules)》是个学习你最应该知道的那些最常见、最基础的 Ansible 模块的好文章。运行命令、安装软件包和操作文件是许多有用的自动化工作的基础。
4. Marco Bravo 的《[如何使用 Ansible 记录流程](https://opensource.com/article/19/4/ansible-procedures)》：Ansible 的 YAML 文件易于阅读，因此它们可以被用于记录完成任务所需的手动步骤。这一特性可以帮助你调试与扩展，这令工作变得异常轻松。同时，这篇文章还包含关于测试和分析等 Ansible 相关主题的指导。
5. Clement Verna 的《[使用 Testinfra 和 Ansible 验证服务器状态](/article-10943-1.html)》（译文）：测试环节是任何一个 CI/CD DevOps 流程不可或缺的一部分。所以为什么不把测试 Ansible 的运行结果也纳入其中呢？这个测试架构 Testinfra 的入门级文章可以帮助你检查配置结果。
6. Mark Phillips 的《[Ansible 硬件起步](https://opensource.com/article/19/5/hardware-bootstrapping-ansible)》：这个世界并不是完全已经被容器和虚拟机所占据。许多系统管理员仍然需要管理众多硬件资源。通过 Ansible 与一点 PXE、DHCP 以及其他技巧的结合，你可以创建一个方便的管理框架使硬件易于启动和运行。
7. Jairo da Silva Junior 的《[你需要了解的关于 Ansible 模块的知识](https://opensource.com/article/19/3/developing-ansible-modules)》：模块给 Ansible 带来了巨大的潜力，已经有许多模块可以拿来利用。但如果没有你所需的模块，那你可以尝试给自己打造一个。看看这篇文章吧，它能让你了解如何从零开始打造自己所需的模块。
8. Mark Phillips 的《[5 个 Ansible 运维任务](/article-11312-1.html)》（译文）：这是另一个有关于如何使用 Ansible 来管理常见的系统操作任务的文章。这里描述了一系列可以取代命令行操作的 Tower（或 AWX）的案例。
9. Chris Short 的《[Ansible 快速入门指南](https://opensource.com/article/19/2/quickstart-guide-ansible)》是个可以下载的 PDF 文档。它可以作为一本随时拿来翻阅的手册。这篇文章的开头有助于初学者入门。同时，还包括了一些其他的研究领域，比如模块测试、系统管理任务和针对 K8S 对象的管理。
10. Mark Phillips 的《[Ansible 参考指南，带有 Ansible Tower 和 GitHub 的 CI/CD，等等](https://opensource.com/article/19/7/ansible-news-edition-one)》：这是一篇每月进行总结更新的文章，充满了有趣的链接。话题包括了 Ansible 的基础内容、管理 Netapp 的 E 系列存储产品、调试、打补丁包和其他一些相关内容。文章中还包括了一些视频以及一些聚会的链接。请查看详情。

如果你也有一些你喜爱的 Ansible 文章，那请留言告诉我们吧。

---

via: <https://opensource.com/article/19/12/ansible-resources>

作者：[James Farrell](https://opensource.com/users/jamesf) 选题：[lujun9972](https://github.com/lujun9972) 译者：[BrunoJu](https://github.com/BrunoJu) 校对：[wxy](https://github.com/wxy)

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


给儿童和青少年的 7 件创客礼物

# 给儿童和青少年的 7 件创客礼物

>
> 这份礼物指南使你轻松完成节日礼物的采购，它们可给婴儿、儿童、青少年及年龄更大的人们带来创造和创新能力。
>
>
>

还在纠结这个假期给年轻人买什么礼物？这是我精选的开源礼物，这些礼物将激发未来的创意和灵感。

### 蜂鸟机器人套件

**年龄：**8 岁 - 成人

**这是什么：**[蜂鸟机器人套件](https://www.birdbraintechnologies.com/hummingbirdbit/)是一套完整的机器人套件，带有微控制器、电机、LED 和传感器。机器人的大脑具有特殊的端口，小手可以轻松地将其连接到机器人的组件上。蜂鸟套件并没有身体，而是鼓励用户自己创建一个。

**为什么我喜欢它：**蜂鸟可以使用多种编程语言 —— 从可视化编程（BirdBlox、MakeCode、Snap）到代码编程（Python 和 Java）—— 可以随着用户编码技能的提高而可扩展。所有组件均与你在电子商店中找到的组件完全相同，没有像其他机器人套件那样被塑料所遮盖。这使机器人的内部工作不再神秘，并在你需要时易于采购更多零件。

由于没有固定组装项目，因此蜂鸟是发挥创造力的完美机器人。

蜂鸟具有开源的软件和固件。它适用于 Linux、Windows、Mac、Chromebook、Android 和 iOS。

**费用：**起价为 99 美元。

### Makey Makey 经典版

**年龄：** 6岁 - 成人

**这是什么：** [Makey Makey 经典版](https://makeymakey.com/)可将任何导电物体（从棉花糖到你的朋友）变成计算机钥匙。

你可以使用鳄鱼夹将 Makey Makey 连接到你选择的导电物体上。然后，通过同时触摸两个导电物体来闭合接地和任何触发键之间的电路。Makey Makey 是一种安全的方法，可以安全地在家中探索电力，同时创造与计算机进行交互的有趣方式。

**为什么我喜欢它：** Makey Makey 可以与 Scratch 开发的视频游戏搭配使用，以创建独特的控制器，使用户进一步沉浸在游戏中。从用卫生纸卷和铝箔制成的工具到互动艺术和故事，可能性是无限的。它可以在具有 USB 端口的 Linux、Windows 和 Mac 计算机上使用。

**费用：** 49.95 美金

### Arduino Uno

**年龄：** 10 岁 - 成人

**这是什么：** Arduino 是随同电子套件购买的微控制器，也可以单独购买，它们具有多种版本，而我最喜欢 [Arduino Uno](https://www.arduino.cc/)。你可以根据需要从任何电子商店购买其他组件，例如 LED、电机和传感器。

**为什么我喜欢它：** Arduino Uno 的文档很完善，因此创客们很容易在线上找到教程。Arduino 可以实现从简单到复杂的各种电子项目。Arduino 具有开源的固件和硬件。它适用于 Linux、Mac 和 Windows。

**费用：** 主板的起价为 22.00 美元。总成本取决于项目和技能水平。

### DIY 创客套件

**年龄**：8 岁 - 成人

**这是什么：**当今许多创客、发明家和程序员都是从鼓捣碰巧出现在身边东西开始的。你可以快速前往最近的电子产品商店，为家里的年轻人创建一套出色的创客工具包。这是我的创客工具包中的内容：

* 护目镜
* 锤子
* 钉子和螺丝
* 碎木
* 螺丝起子
* 电线
* LED
* 压电蜂鸣器
* 马达
* 带引线的 AA 电池组
* 剪线钳
* 纸板
* 美纹纸胶带
* 废布
* 纽扣
* 线程
* 针
* 拉链
* 钩子
* 一个很酷的工具盒，用来存放所有东西

**我为什么喜欢它：**还记得小时候，你把父母带回家的空纸箱变成了宇宙飞船、房屋或超级计算机吗？这就是为大孩子们准备的 DIY 创客工具包。

原始的组件使孩子们可以尝试并运用他们的想象力。DIY 创客工具包可以完全针对接收者定制。可以放入一些接受这份礼品的人可能从未想到过用之发挥创意的某些组件，例如为下水道提供一些 LED 或木工结构。

**费用：**不等

### 启发式游戏篮

**年龄：** 8 个月至 5 岁

**这是什么：**启发式游戏篮充满了由天然、无毒材料制成的有趣物品，可供婴幼儿使用其五种感官进行探索。这是一种开放式、自娱自乐的游戏。其想法是，成年人将监督（但不指导）儿童使用篮子及其物品半小时，然后将篮子拿走，等下一次再玩。

创建带有常见家用物品的可爱游戏篮很容易。尝试包括质地、声音、气味、形状和重量各不相同的物品。这里有一些想法可以帮助您入门。

* 漏勺或脊状柳条篮可容纳所有物品
* 木勺子
* 金属打蛋器和汤匙
* 板刷
* 海绵
* 小型鸡蛋纸箱
* 纸板管
* 小擀面杖
* 带纹理的毛巾
* 岩石
* 手铃
* 钩针桌巾
* 带盖的小铁罐 游戏篮中不应包括任何容易破碎的东西或足够小到可以装入纸巾卷的东西，因为它们有窒息危险，应将所有物品彻底清洁后再交给孩子。

**我为什么喜欢它：**游戏篮非常适合感官发育，并可以帮助幼儿提出问题和探索周围的世界。这是培养创客思维方式的重要组成部分！

很容易获得适合这个游戏篮的物品。你可能已经在家中或附近的二手商店里找到了很多有趣的物品。幼儿使用游戏篮的方式与婴儿不同。随着孩子们开始模仿成人生活并通过他们的游戏讲故事，这些物品将随孩子一起成长。

**费用：**不等

### 《Hello Ruby》

**年龄**：5-8 岁

**这是什么：** 《[Hello Ruby](https://www.helloruby.com/)：编码历险记》是 Linda Liukas 的插图书，通过有趣的故事讲述了一个遇到各种问题和朋友（每个都用一个码代表）的女孩，向孩子们介绍了编程概念。Liukas 还有其他副标题为《互联网探险》和《计算机内的旅程》的《Hello Ruby》系列书籍，而《编码历险记》已以 20 多种语言出版。

**为什么我喜欢它：**作者在书中附带了许多免费、有趣和无障碍的活动，可以从 Hello Ruby 网站下载和打印这些活动。这些活动教授编码概念、还涉及艺术表达、沟通、甚至时间安排。

**费用：**精装书的标价为 17.99 美元，但你可以通过本地或在线书店以较低的价格买到这本书。

### 《编程少女：学会编程和改变世界》

**年龄**：10 岁 - 成人

**内容是什么：**由《编程少女》的创始人 Reshma Saujani 撰写，《[编程少女：学会编程和改变世界](https://girlswhocode.com/book/girls-code-learn-code-change-world/)》为年轻女孩（以及男孩）提供了科技领域的实用信息。它涵盖了广泛的主题，包括编程语言、用例、术语和词汇、职业选择以及技术行业人士的个人简介和访谈。

**为什么我喜欢它：**本书以讲述了大多数面向成年人的网站都没有的技术故事。这些技术涉及许多学科，对于年轻人来说，重要的是要了解他们可以使用它来解决现实世界中的问题并有所作为。

**成本：**精装书的标价为 17.99 美元，平装书的标价为 10.99 美元，但你可以通过本地或在线书店以更低的价格找到。

---

via: <https://opensource.com/article/19/11/maker-gifts-kids>

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


Signal：安全、开源的聊天应用

# Signal：安全、开源的聊天应用

>
> Signal 是一款智能手机上的安全开源聊天应用。它还提供了适用于 Linux、Windows 和 macOS 的独立桌面应用。在本文中，我们来看看它的功能和可用性。
>
>
>

### 对于关注隐私的人来说，Signal 是 WhatsApp（和 Telegram）的绝佳替代品

Signal 是一款关注隐私的开源应用。像[爱德华·斯诺登](https://en.wikipedia.org/wiki/Edward_Snowden)这样的隐私权倡导者建议使用它。

它可能没有 Telegram 或 WhatsApp 这么多的功能。但是，如果你想在交流时增强隐私，这是一个可靠的开源方案。

你可以在智能手机（[iOS](https://apps.apple.com/us/app/signal-private-messenger/id874139669)/[Android](https://play.google.com/store/apps/details?id=org.thoughtcrime.securesms&hl=en_IN)）上安装，也可以在 Linux、Windows 和 macOS 上安装。

### Signal 的功能

**注意：** 某些功能是智能手机特有的。你可能无法在桌面应用上看到所有功能。

另请注意，目前，Signal 需要电话号码才能注册。如果你不想公开自己的私人电话号码，则可以使用 Google 语音或类似服务。

正如我已经提到的，这是为增强你的隐私而量身定制的。因此，用户体验可能不是你见过“最佳”的。但是，从隐私/安全角度考虑，我认为这是一个不错的选择。

#### 消失的消息

你可以为对话中的消息设置一个计时器，以便根据它自动删除消息。

本质上，对话中的任何人都可以激活此功能。因此，你可以控制对话中的消息时保留还是消失。

#### 用作默认短信应用

如果你想在短信中使用开源应用，那么只需进入 Signal 的设置，并将其设置为短信和彩信的默认设置。

#### 屏幕安全

有一个巧妙的功能可以阻止应用内截图，它就是“屏幕安全”。

如果你开启它，那么你将无法为应用中的任何对话截图。你可以从应用设置中找到启用或禁用它的选项。

它可能并不是对所有人有用，但你可以尝试一下。

#### 安全数字

如果你想与朋友一起验证加密的安全性，只需点击个人资料并向下滚动找到“查看安全数字”。

你可以扫描验证或者看一眼并标记为已验证。

#### 锁定消息

如果你使用了锁（密码/指纹）来保护应用，那么即使你的设备已解锁，你也无法在通知中看到消息。

因此，当 Signal 处于锁定状态收到通知时，你会注意到通知的内容为 “**Locked Message**”，这对于注重隐私的用户来说是一个加分项。

#### 其它功能

如你所期待的聊天应用，你可以使用几个标签，并且可以根据需要创建一个组。但是，你无法管理你的组，你只能添加成员和更改群头像。

此外，Signal 还为其应用支持生物识别。

### 在 Ubuntu/Linux 上安装 Signal

不幸的是，你无法在你的 Linux 发行版上找到 .deb 或者 .AppImage。因此，你需要根据[官方安装说明](https://signal.org/download/)在终端上安装。

在终端中输入以下内容：

```
curl -s https://updates.signal.org/desktop/apt/keys.asc | sudo apt-key add -
echo "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" | sudo tee -a /etc/apt/sources.list.d/signal-xenial.list
sudo apt update && sudo apt install signal-desktop
```

只需在终端中一个接一个地复制并粘贴命令。

[Download Signal for Other Devices](https://signal.org/download/)

### 我对 Signal 的想法

我已经使用 Signal 有几年了，它的功能已经得到了改善。但是，我仍然认为可以改善用户体验。

在隐私方面，（在我看来）这绝对是我们已有软件的一个很好的替代方案。你可以尝试一下，看看它的使用效果如何。

如果你想尝试一下它，也可以看看它的 [GitHub 页面](https://github.com/signalapp)以获取最新的开发和 beta 版本。

与 WhatsApp 甚至 [Linux 上的 Telegram](https://itsfoss.com/install-telegram-desktop-linux/) 相比，Signal 可能不是流行的聊天应用。但是，你可以自己尝试一下，并鼓励你的朋友使用它。

你尝试过了吗？在下面的评论中，让我知道你对 “Signal” 的看法。

---

via: <https://itsfoss.com/signal-messaging-app/>

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


GNOME 有一个“隐藏”的屏幕录像机

Summary: 是的，你没有看错。如果你使用的是 GNOME 桌面，那么不必安装其他的 Linux 屏幕录像机。你只需要知道正确的快捷键即可。

谢谢，特别喜欢您发布的各种使用技巧，功能介绍，系统以及软件入门，应用类文章

# GNOME 有一个“隐藏”的屏幕录像机

[GNOME](https://gnome.org/) 是[最受欢迎的桌面环境](https://itsfoss.com/best-linux-desktop-environments/)之一。它有现代的 UI，并且带有许多特定于 GNOME 的应用，这些应用与桌面整体外观完美融合。

你可以根据自己的喜好来[调整 GNOME](https://itsfoss.com/gnome-tweak-tool/)，但我不在这里讨论。GNOME 桌面有一些你可能不知道的隐藏功能。

这种不太显眼的功能之一是内置的屏幕录像机。

是的，你没有看错。如果你使用的是 GNOME 桌面，那么不必安装其他的 [Linux 屏幕录像机](https://itsfoss.com/best-linux-screen-recorders/)。你只需要知道正确的快捷键即可。

### 立即使用 GNOME 屏幕录像机录制屏幕

要快速打开 GNOME 屏幕录像机，你需要[在 Ubuntu 或其他带有 GNOME 桌面的发行版中按下此快捷键](https://itsfoss.com/ubuntu-shortcuts/)：

```
Ctrl + Alt + Shift + R
```

这将会立即开始录制你的桌面。你可以通过顶部的系统托盘区域的红点了解到正在录制：

#### 增加录制时间

默认的最大录制时间仅为 30 秒。但是可以增加。

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

```
gsettings set org.gnome.settings-daemon.plugins.media-keys max-screencast-length 300
```

在上面的命令中，我将录音的最大长度增加到 300 秒（即 5 分钟）。你可以将其更改为任何其它值，但应以秒为单位。

如果你**不希望最长录音时间有任何限制，请将其设置为 `0`**，之后它会在你手动停止或者磁盘空间不足才会停止。

#### 停止屏幕录制

如前所述，你的桌面录制将在达到最大时间限制后自动停止。

要在此之前停止录制，你可以按下相同的组合键：

```
Ctrl + Alt + Shift + R
```

你的录制内容将以 [webm](https://www.webmproject.org/about/) 格式保存在家目录的 `Videos` 文件夹中。

#### 局限性

尽管使用这个小工具可以方便地快速录制桌面，但是与功能强大的 [Simple Screen Recorder](https://itsfoss.com/record-screen-ubuntu-simplescreenrecorder/) 这样的屏幕录制工具相比，它有一些局限性。

* 录制开始之前没有时间延迟选项
* 没有暂停和播放选项
* 它录制整个屏幕。无法仅录制应用窗口、特定区域或特定屏幕（如果你有多个屏幕）。
* 视频以 webm 格式保存在用户的 `Videos` 目录中。你无法更改。你必须使用 [HandBrake 之类的工具将视频转换为其他格式](https://itsfoss.com/handbrake/)。

如你所见，这个秘密的 GNOME 屏幕录像机与 [Kazam](https://itsfoss.com/kazam-screen-recorder/) 之类的工具或其他此类工具所提供的功能相差很远。但是，它并不会尝试成为全功能的屏幕录像机。它只是为你提供录制屏幕的快速方法。

GNOME 是一个多功能的现代桌面环境。你可以大量地[调整 GNOME](https://itsfoss.com/gnome-tweak-tool/)。[GNOME 扩展](https://itsfoss.com/best-gnome-extensions/)为桌面自定义提供了另一个维度。

该屏幕录像机是 GNOME 的隐藏功能之一，就像你自己很难轻易找到的挂起选项。

你喜欢它吗？你是否还想与我们分享其他隐藏的 GNOME 功能？请在评论区留言。

---

via: <https://itsfoss.com/gnome-screen-recorder/>

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


用 Git 来共享文件

# 用 Git 来共享文件

>
> SparkleShare 是一个开源的基于 Git 的 Dropbox 风格的文件共享应用程序。在我们的系列文章中了解有关 Git 鲜为人知的用法。
>
>
>

[Git](https://git-scm.com/) 是一个少有的能将如此多的现代计算封装到一个程序之中的应用程序，它可以用作许多其他应用程序的计算引擎。虽然它以跟踪软件开发中的源代码更改而闻名，但它还有许多其他用途，可以让你的生活更轻松、更有条理。在这个 Git 系列中，我们将分享七种鲜为人知的使用 Git 的方法。

今天，我们将看看 SparkleShare，它使用 Git 作为文件共享的基础。

### 用于文件共享的 Git

Git 的优点之一是它具有固有的分发能力。它可用来建立共享。即使你只是与自己网络上的其他计算机共享资源库，Git 也会为从共享位置获取文件的行为带来透明性。

随着其界面的发展，Git 变得非常简单。虽然因用户而异，他们坐下来完成一些工作时的共同点仅仅是 `git pull` 或稍微复杂一点的 `git pull && git checkout -b my-branch`。但是，对于某些人来说，将*命令输入*到他们的计算机中的做法完全是令人困惑或烦恼的。计算机旨在使生活变得轻松，它擅长于重复性工作，因此有更简便的方法可以与 Git 共享文件。

### SparkleShare

[SparkleShare](http://www.sparkleshare.org/) 项目是一个基于 Git 的跨平台的、开源的 Dropbox 式的文件共享应用程序。它通过将文件拖放到专门指定的 SparkleShare 目录中的简单操作，自动执行所有 Git 命令，触发添加、提交、推送和拉取过程。因为它基于 Git，所以你可以获得基于差异（diff）的快速推送和拉取，并且继承了 Git 版本控制和后端基础设施（如 Git 挂钩）的所有优点。它可以完全自托管，也可以将其与 [GitLab](http://gitlab.com)、GitHub、Bitbucket 等 Git 托管服务一起使用。此外，由于它基本上只是一个 Git 的前端，因此你可以在可能没有 SparkleShare 客户端但有 Git 客户端的设备上访问 SparkleShare 中的文件。

正如你获得 Git 的所有好处一样，你也会受到所有常见的 Git 限制：使用 SparkleShare 存储数百张照片、音乐和视频是不切实际的，因为 Git 是为文本而设计和优化的。Git 当然可以存储二进制文件的大文件，但是因为它可以跟踪历史记录，因此一旦将文件添加到其中，几乎就不可能完全删除它。这在某种程度上限制了 SparkleShare 对某些人的实用性，但使其非常适合许多工作流程，包括[日程安排](https://opensource.com/article/19/4/calendar-git)。

#### 安装 SparkleShare

SparkleShare 是跨平台的，可从[网站](http://sparkleshare.org)获得适用于 Windows 和 Mac 的安装程序。对于 Linux，有一个 [Flatpak](/business/16/8/flatpak) 安装包，或者你可以在终端中运行以下命令：

```
$ sudo flatpak remote-add flathub https://flathub.org/repo/flathub.flatpakrepo
$ sudo flatpak install flathub org.sparkleshare.SparkleShare
```

### 创建一个 Git 存储库

SparkleShare 并不是软件即服务（SaaS）。你在计算机上运行 SparkleShare 与 Git 存储库进行通信，而 SparkleShare 并不存储你的数据。如果你还没有与文件夹同步的 Git 存储库，则必须在启动 SparkleShare 之前创建一个文件夹。你有三个选择：托管的 Git、自托管 Git 或自托管 SparkleShare。

#### 托管的 Git

SparkleShare 可以使用你能访问的任何 Git 存储库进行存储，因此，如果你拥有 GitLab 或任何其他托管服务的帐户（或创建一个），则它可以成为 SparkleShare 的后端。例如，开源 [Notabug.org](http://notabug.org) 服务是一个类似于 GitHub 和 GitLab 的 Git 托管服务，但其独特性足以证明 SparkleShare 的灵活性。根据用户界面的不同，不同的托管服务创建新存储库的方法也有所不同，但是所有主要存储库都遵循相同的通用模型。

首先，在托管服务中找到创建新项目或存储库的按钮，单击它以开始。然后逐步完成存储库的创建过程，为存储库提供名称、隐私级别（存储库通常默认为公共），以及是否使用 `README` 文件初始化存储库。无论你是否需要个 `README` 文件，请初始化建立一个。使用一个文件来创建存储库不是绝对必要的，但是它会强制 Git 主机实例化存储库中的 `master` 分支，这有助于确保前端应用程序（例如 SparkleShare）具有要提交并推送的分支。即使文件是几乎空的 `README` 文件，也可以用来查看该文件以确认你已连接成功。

创建存储库后，获取其用于 SSH 克隆的 URL。就像从 Git 项目获得其 URL 一样，你也可以获取此 URL：导航至存储库页面并查找 “Clone” 按钮或字段。

*GitHub 的克隆 URL。*

*GitLab 的克隆 URL。*

这是 SparkleShare 用于获取数据的地址，因此请记下它。你的 Git 存储库现已配置好。

#### 自托管的 Git

你可以使用 SparkleShare 访问你有权访问的任何计算机上的 Git 存储库。除了一个 Git 裸存储库外，无需任何特殊设置。但是，如果你想将对 Git 存储库的访问权授予其他任何人，则应运行 [Gitolite](http://gitolite.org) 之类的 Git 管理器或 SparkleShare 自己的 Dazzle 服务器来帮助你管理 SSH 密钥和帐户。至少，创建一个特定于 Git 的用户，以便有权访问你的 Git 存储库的用户不会自动获得对服务器其余部分的访问权限。

以 Git 用户身份登录服务器（如果你非常擅长管理用户和组权限，则可以以自己的用户登录）并创建存储库：

```
$ mkdir ~/sparkly.git
$ cd ~/sparkly.git
$ git init --bare .
```

你的 Git 存储库现已配置好。

#### Dazzle

SparkleShare 的开发人员提供了一个名为 [Dazzle](https://github.com/hbons/Dazzle) 的 Git 管理系统，以帮助你自托管 Git 存储库。

在你的服务器上，将 Dazzle 应用程序下载到你的路径中的某个位置：

```
$ curl https://raw.githubusercontent.com/hbons/Dazzle/master/dazzle.sh --output ~/bin/dazzle
$ chmod +x ~/bin/dazzle
```

Dazzle 设置了一个特定于 Git 和 SparkleShare 的用户，并且还基于 SparkleShare 应用程序生成的密钥实现了访问权限。现在，只需设置一个项目：

```
$ dazzle create sparkly
```

你的服务器现在已经配置好，可以用作 SparkleShare 托管了。

### 配置 SparkleShare

首次启动 SparkleShare 时，系统会提示你配置 SparkleShare 用于存储的服务器。这个过程可能看起来像一个首次运行的安装向导，但实际上是在 SparkleShare 中设置新共享位置的通常过程。与许多共享驱动器应用程序不同，使用 SparkleShare 可以一次配置多个位置。你配置的第一个共享位置并不比你以后可以配置的任何共享位置更重要，并且你也不用注册 SparkleShare 或任何其他服务。你只是将 SparkleShare 指向 Git 存储库，以便它知道如何使第一个 SparkleShare 文件夹保持同步。

在第一个屏幕上，给出一个身份信息，SparkleShare 将在代表你进行的 Git 提交记录中使用这些信息。你可以使用任何内容，甚至可以使用不代表任何意义的伪造信息。它仅用于提交消息，如果你对审查 Git 后端进程没有兴趣，你可能甚至看不到它们。

下一个屏幕提示你选择主机类型。如果你使用的是 GitLab、GitHub、Planio 或 Bitbucket，则可以选择一个适当的。否则，请选择“自己的服务器”。

在此屏幕底部，你必须输入 SSH 的克隆 URL。如果你是自托管的 Git，则地址类似于 `<ssh://username@example.com>`，而远程路径是为此目的而创建的 Git 存储库的绝对路径。

根据上面的自托管示例，我虚构的服务器的地址为 `ssh://git@example.com:22122`（`:22122` 表示一个非标准的 SSH 端口），远程路径为 `/home/git/sparkly.git`。

如果我改用 Notabug.org 帐户，则上例中的地址为 `ssh://git@notabug.org`，路径为 `seth/sparkly.git`。

SparkleShare 首次尝试连接到主机时会失败，因为你尚未将 SparkleShare 客户端 ID（特定于 SparkleShare 应用程序的 SSH 密钥）复制到 Git 主机。这是预料之中的，所以不要取消该过程。将 SparkleShare 设置窗口保持打开状态，并从系统任务栏中的 SparkleShare 图标处获取客户端 ID。然后将客户端 ID 复制到剪贴板，以便可以将其添加到 Git 主机。

#### 将你的客户端 ID 添加到托管的 Git 帐户

除了较小的 UI 差异外，在任何托管服务上添加 SSH 密钥（所有客户端 ID 都是这样）的过程基本上是相同的。在你的 Git 主机的 Web 仪表板中，导航到你的用户设置，然后找到 “SSH 密钥”类别。单击“添加新密钥”按钮（或类似按钮），然后粘贴你的 SparkleShare 客户端 ID 的内容。

保存密钥。如果你希望其他人（例如协作者或家庭成员）能够访问同一存储库，则他们必须向你提供其 SparkleShare 客户端 ID，以便你可以将其添加到帐户中。

#### 将你的客户端 ID 添加到自托管的 Git 帐户

SparkleShare 客户端 ID 只是一个 SSH 密钥，因此将其复制并粘贴到 Git 用户的 `~/.ssh/authorized_keys` 文件中。

#### 使用 Dazzle 添加你的客户 ID

如果你使用 Dazzle 管理 SparkleShare 项目，请使用以下命令添加客户端 ID：

```
$ dazzle link
```

当 Dazzle 提示你输入该 ID 时，请粘贴在 SparkleShare 菜单中找到的客户端 ID。

### 使用 SparkleShare

将客户端 ID 添加到 Git 主机后，在 SparkleShare 窗口中单击“重试”按钮以完成设置。克隆存储库完成后，你可以关闭 SparkleShare 设置窗口，并在你的家目录中找到一个新的 `SparkleShare` 文件夹。如果你设置了带有托管服务的 Git 存储库，并选择包括 `README` 文件或许可证文件，则可以在 SparkleShare 目录中看到它们。

此外，有一些隐藏目录，你可以通过在文件管理器中显示隐藏目录来查看。

使用 SparkleShare 的方式与使用计算机上任何目录的方式相同：将文件放入其中。每当将文件或目录放入 SparkleShare 文件夹时，它都会在后台复制到你的 Git 存储库。

#### 排除某些文件

由于 Git 从设计上就是要记住*一切*，因此你可能希望从记录中排除特定的文件类型。排除一些文件是有原因的。通过定义摆脱 SparkleShare 管理的文件，可以避免意外复制大文件。你还可以为自己设计一种方案，使你可以将存储在一个目录中的逻辑上属于同一个文件（例如，MIDI 文件及其 .flac 导出文件），但是可以自己手动备份大文件，而同时让 SparkleShare 备份基于文本的文件。

如果在系统的文件管理器中看不到隐藏的文件，请显示它们。导航到你的 SparkleShare 文件夹，然后到代表你的存储库的目录，找到一个名为 `.gitignore` 的文件，然后在文本编辑器中将其打开。你可以在 `.gitignore` 中输入文件扩展名或文件名（每行一个），任何与你列出的文件匹配的文件都会被忽略（如文件名所示）。

```
Thumbs.db
$RECYCLE.BIN/
.DS_Store
._*
.fseventsd
.Spotlight-V100
.Trashes
.directory
.Trash-*
*.wav
*.ogg
*.flac
*.mp3
*.m4a
*.opus
*.jpg
*.png
*.mp4
*.mov
*.mkv
*.avi
*.pdf
*.djvu
*.epub
*.od{s,t}
*.cbz
```

你知道最经常遇到哪些文件类型，因此请集中精力处理最有可能潜入你的 SparkleShare 目录的文件。如果你想稍微矫枉过正一些，可以在 Notabug.org 以及整个网上找到 `.gitignore` 文件的好集合。

通过将这些条目保存在 `.gitignore` 文件中，你可以将不需要发送到 Git 主机的大文件放在 SparkleShare 目录中，SparkleShare 将完全忽略它们。当然，这意味着你需要确保它们可以备份或通过其他方式分发给你的 SparkleShare 协作者。

### 自动化

[自动化](/downloads/ansible-quickstart) 是我们与计算机达成的默契之一：计算机执行重复的、无聊的工作，而我们人类要么不擅长做这些，要么不擅长记忆这些。SparkleShare 是一种很好的、简单的自动执行例行数据分发的方法。但不管怎么说，这并不适合每个 Git 存储库。它没有用于高级 Git 功能的接口，它没有暂停按钮或手动管理的操作。没关系，因为它的使用范围是有意限制的。SparkleShare 可以完成它计划要做的事情，它做得很好，而且它是你无需关心的一个 Git 存储库。

如果你想使用这种稳定的、看不见的自动化，请尝试一下 SparkleShare。

---

via: <https://opensource.com/article/19/4/file-sharing-git>

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


即将举办的华为开发者大会 HDC.Cloud 有什么值得关注的？

想参加的应该怎么报名呀？

发财树75 [Internet Explorer 11.0|Windows 10]

# 即将举办的华为开发者大会 HDC.Cloud 有什么值得关注的？

迎着北京雪后冷冽的空气，我专程参加了华为在钓鱼台国宾馆举办的华为 HDC.Cloud 大会预热沟通会。说实话，作为一个技术圈的跑会男人，我参加过林林总总的技术大会，但是还是第一次参加一个技术大会的会前沟通会，而且规模相当不小。

华为这样隆重的介绍这次将要在 2020 年 2 月 11 日至 12 日深圳举办的 [华为开发者大会2020（Cloud）](https://www.huaweicloud.com/HDC.Cloud.html)，这让我心里对这次大会有了不少期许。

主持会议的是人称“茂总”的华为技术有限公司高级副总裁、Cloud & AI 产品与服务 CTO 张顺茂先生，这位可是一路从一线技术冲杀上来的技术型高管，所以整场沟通会显得坦率而真诚。

*张顺茂先生*

### HDC.Cloud 的由来

华为这些年，作为国内顶级技术厂商，所举办的各种大型技术会议层出不穷。就开发者大会而言，早在 2015 年就召开了首届 HDC（Huawei Developers Congress），而在之后的 2016 - 2019 年，HDC 和华为的另外两个顶会 HCC 和 HNC 三会合一为 HC，HDC 原有内容被放在 HC 第三天的开发者专场。

茂总讲到，“在华为云底座上需要开发者生态，而且从历史发展和世界进步来看，开发者的重要意义是不言而喻的，在数字转型的时代，开发者对于产业生态更为重要，新的技术都需要开发者创造出来。”伴随着这些 ICT 技术的发展，华为对开发者以及开发者生态愈加重视，华为在其发布的沃土计划 2.0 中称，未来五年将投资 15 亿美元，携手社区和高校在全球发展开发者 500 万人！据《2018年欧盟工业研发投资排名》，在 2018 年，华为的企业研发投入就高达 113.34 亿欧元，全球排名第五。

在这种形式下，原本只是一天议程的 HC 开发者专场就不足以体现华为在技术开发领域的成绩和重视，因此，这次在深圳专门举办这场开发者大会，并且在两天的多轨议程中，包含多个会议、沟通、动手实践等丰富的活动，可谓是一场技术人员的盛宴。

事实上，华为重视技术，在业界已经是一种共识了，甚至华为连开发者大会都有两场：一场是这次在深圳 2 月份举办的 HDC.Cloud ，以 “.Cloud” 为后缀，突出企业级开发；而另外一场则是面向消费者技术领域的开发者大会也即将露出面纱。

### 一云两翼下的 HDC.Cloud

在 2019 年 HC 大会上，华为提出了“一云两翼双引擎+开放的生态“的计算产业布局。一云就是华为云，所有业务以云为主，向云上迁移，拥抱云、融入云、接受云。而两翼一个是智能计算，另一个则是智能数据和存储。“一云”和“两翼”的基础是通用计算处理器“鲲鹏”和人工智能处理器“昇腾”。

从历史发展和世界进步来看，开发者的重要意义是不言而喻的，在数字转型的时代，开发者对于产业生态更为重要，新的技术都需要开发者创造出来。HDC.Cloud最主要目的是汇聚开发者和产业伙伴，让基于昇腾、鲲鹏为底座的计算产业生态发展起来。

### 为谁盛开的 HDC.Cloud？

经常有人问为什么华为为什么能持续高速增长？甚至被美国加入实体清单之后，还能保持 18% 的增长。对此，茂总的理解是，“最主要是华为持续高强度的研发投入，让华为公司有了成长的动力。像汽车的发动机一样，只要有这样的动力，一些小坎挡不住前进的步伐，开发者是前进的引擎和动力，他们用代码在改变世界。”

作为一家国内知名的开源技术社区，我们很关注国内的开源技术生态的建设和发展，这两年也对主要由国内开发者和科技企业推动的开源项目进行了深入观察和数字分析。在今年我们刚刚发布《中国开源项目 Grank 分析报告（2019）》中，我们欣喜的看到国内有很多项目在活跃度、社区健康度上都取得了长足的发展。对比 2018 年的数据，无论是项目还是开发者的数据，都明显可以看到开发者在其中所扮演的积极角色。

#### 开发者的 HDC.Cloud

正如这个大会的名称一样，HDC.Cloud 面对的就是开发者，不仅有 ISV 软件开发者，还有 IHV 硬件开发者和 SI 系统集成商的开发者。除了企业开发者之外，HDC.Cloud 还面对生态培养的高校、师生、科研机构，以及开源社区的开发者。

开发者参加这样的会议有什么收益呢？

如今，ICT 技术正在改变各行各业，随着数字经济、人工智能不断的推进，算力将成为新生产力，数据成为新生产资料，已经形成共识。当下，云、AI 将人类推向智能社会，5G 和 IoT 使得世界万物互联，而区块链正在重塑社会价值。

这些技术改变世界的愿景很美好，怎么样把它实现呢？这就需要开发者把这些愿景落到实处、落到产品和方案上。如何把这些技术转变成日常生活中可以用到的产品和方案，转变成企业创新进步的产品和方案，就需要开发者。这些工程师们是不是都会用最新的技术呢？比如说人工智能，很多企业说我们也要搞个什么样的人工智能，用数据挖掘一下，训练一下模型，但是招一个人工智能工程师很贵，因为这个技术掌握的人太少，怎么样让 AI 普惠，让大家都能用起来，就需要一个学习和培养的环境，需要一个方便使用的平台，华为这样的开发者大会就是提供这样的平台，让更多的人掌握它、学习它、使用它，能够创造出自己的人工智能产品。

#### 华为开发者扶植政策

在沟通会当中，包括 Linux 中国在内的多家媒体和社区，从不同角度对华为开发者生态如何建设进行了提问，作为开发者和开发者社区如何参与到华为所描述出的开放生态当中？

茂总讲到，“我们面向四类开发者：一、企业合作伙伴开发者；二、个人开发者；三、初创企业开发者；四、高校和教研机构开发者。这四类开发者会涉及[不同的权益](https://developer.huaweicloud.com/plan/developerprogram.html)，各自有所侧重。这些权益包括认证培训、技术支持、板卡支持等。从学习阶段到开发阶段，会有开发工程师、OpenLabs 和各地的创新中心支持你。比如说在北京成立了一个北京鲲鹏创新中心，在创新中心里面有工程师驻场，也有设备在那里，支持和帮助北京地区的开发者在这个地方进行自己的产品开发和服务。而产品上市后，华为还会提供市场开发基金进行支持，跟华为一起共享商机。甚至在最后的销售阶段也可以借助华为的地面部队，共享当地的商机、客户关系和渠道关系，这些都可以为开发者提供服务。”

像北京一样，在很多大城市华为都有鲲鹏创新中心。此外，在鲲鹏创新中心成立之前各地也有 OpenLabs，即便是个人开发者也可以去参加他们的活动。

华为这次举办 HDC.Cloud，将会发布一系列基于鲲鹏、昇腾 AI 的开发工具和开发套件，让开发人员——不仅仅是华为的开发人员，包括整个生态的开发人员——能够更快的把应用迁移过来，更快基于这些工具把自己的内容丰富起来，这也是一个长期的战略。

具体来说，华为有三个伙伴计划，都是以鲲鹏打头。它们分别是鲲鹏展翅伙伴计划、鲲鹏凌云伙伴计划、鲲鹏智数伙伴计划。

* 鲲鹏展翅是以盒子，比如说板卡、泰山服务器为主，可以给开发者提供服务和板卡支持。
* 鲲鹏凌云是面向开发者的服务。华为云有很多的基础服务，比如 ECS 早期是基于通用CPU 提供的通用计算服务；但是现在，ECS 下面跑的硬件设施不是 X86，在华为云上引用鲲鹏云服务的时候，就使用的是鲲鹏处理器。
* 鲲鹏智数是基于数据和存储领域展开，去年 11 月份华为专门发布了 HetuEngine 数据虚拟化引擎，围绕数据的全生命周期管理，帮助客户让数据更好用。该引擎后续也会开源。

从上面可以看到，华为在计算、数据、云三个领域给开发者提供一系列的政策和支持。

### 这次 HDC.Cloud 有什么值得期待的？

让我们言归正传，作为开发者，我们自然更关心这次 HDC.Cloud 会议上能有什么值得期待的收获。

这次于 2 月 11日、12 日在深圳召开的开发者大会是一个面向全球开发者分享、学习、交流、实践的最佳平台。预计会有 1 万 5 千多位开发者参会。大会里有主题演讲、专题演讲，大咖面对面，技术培训、CTO 圆桌、公开演讲、早午餐会等。茂总感慨道，“开发者来的时间不容易，我们把参会者每一分钟都充分使用起来，让他们每分钟都能学到东西，早餐时间也不要耽误，每个桌子有一个技术专题讨论，你对哪个技术感兴趣，就可以到哪个桌子吃早餐，跟技术大拿聊一聊。”

此外，这次 HDC.Cloud 包括还有黑客松大赛、创客行。在整个活动设计里面有 3 万平米的展区动手实验室，包括华为认证竞技场、最强 ICT 大脑、鲲鹏开发挑战赛、昇腾开发挑战赛、Codelabs 动动手指等，可以探索代码的无限可能。大家也可以现场参加开发者大赛和学习，获得 HCIE 认证的资格等。

当然，学习和了解新技术，总是要从最权威的大神身边学习，因此，这次出场都是华为的 IEEE 院士、大咖、天才少年等。大家也知道华为花几百万招了一些天才少年出来，这些天才少年到底做了什么？他们会自己出来跟大家讲他们的故事。还有 2012 实验室的扫地僧，这些扫地僧们会跟大家沟通，看看他们的武艺到底多么的高强。

按照议程，一共有 126 场专题演讲，最燃、最丰富的技术饕餮盛宴，都会在这儿。还有 8 场大师面对面和大家进行 ICT 产业技术、思想的最高峰直接对话。这些人都是首席科学家、IEEE 院士、行业知名架构师。此外，还有开源社区的各路领袖级的人物出场，包括 Linux 基金会执行董事 Jim Zemlin、 Apache 主席 Craig 、MySQL 之父 Monty 等都会来参加。

从透露的议程上看，有几个演讲题目颇为有趣，比如《DNA 存储：1 公斤如何容纳全世界 - 探索 DNA 存储的奥秘》、《华为云 ModelArts 平台上使用 MindSpore 实现 ResNet50 训练速度翻倍》、《如何实现从 x86 到鲲鹏平台 90% 代码自动迁移》、《如何在人形机器人上实现实时的动作识别和智能交互》等等。

不知道从什么时候开始，国内的技术大会也开始充分利用会议间歇的夜间为参会者们提供一些娱乐节目。在白天大家辛苦学东西之余，11 日晚上会安排有音乐电音节，让年轻的开发者们能够跳起来。

让我们期待在 HDC.Cloud 与大家相会~


应用推荐：开源磁盘分区工具 GParted

# 应用推荐：开源磁盘分区工具 GParted

>
> GParted 是一个可用于 Linux 发行版的非常受欢迎且免费的分区编辑器。在这里，我们简要地介绍一下它提供的功能。
>
>
>

### GParted：一个自由开源的图形化分区管理器

GParted 无疑是 [Linux 下的最好的分区管理器](https://itsfoss.com/partition-managers-linux/)之一。用户界面非常简单而可以完成任务。

在某些情况下，你最终还是会使用 [GParted](https://gparted.org/) 来修复或格式化你的 USB 驱动器。我有一个[在 Ubuntu 中使用“磁盘”应用程序不能格式化的 USB 磁盘](https://itsfoss.com/format-usb-drive-sd-card-ubuntu/)，而这是 GParted 用来救援的地方。

所以，它是一个非常有用的工具，有很多出色的功能。让我为你们重点介绍一下。

>
> 警告！
>
>
> 进行磁盘分区是一件危险的工作。除非绝对必要，否则不要做。否则，你可能最终擦除了整个磁盘。
>
>
>

### GParted 的功能

从简单地格式化任务到重要的分区任务，你可以使用 GParted 做很多事。我将使用一些屏幕截图突出关键功能，以帮助你在安装它前进一步了解它。

#### 创建分区表

你可以为新磁盘创建一个新的分区表，也可以擦除你现存的磁盘内容来修改分区表。

你能够选择 msdos、gpt、atari，以及更多类型的分区表。

#### 创建、移动、标记、删除和修改分区表

你可以使用 GParted 中一系列选项来轻松地创建、标记、删除或修改分区表。

当然，你必须要谨慎你要做的事情。

好的是，GParted 可以确保你不能直接应用任何更改 —— 在你点击应用更改之前，它将排队你选择的操作/任务，并在你执行前最后再要求确认一次。

顶部的对号标记符号 `✓` 可以让你确认更改，然后你的更改才会生效。

这是分区可用选项的另一个屏幕截图：

#### 尝试数据救援

除了编辑分区以外，你也可以试着使用“尝试数据救援”功能以[在 Linux 中恢复丢失的数据](https://itsfoss.com/recover-deleted-files-linux/)，如下面的屏幕截图所示。

值得注意的是，默认情况下你没有安装此功能 —— 你只是能看到这个选项。因此，要使这个数据恢复功能可以正常工作，你必须使用下面的命令来单独地安装 gpart (在基于 Ubuntu/Debian 的发行版上)：

```
sudo apt install gpart
```

除了所有这些关键功能以外，它支持各种存储设备和文件系统。你可以从其官方网站的[功能列表](https://gparted.org/features.php)中了解到更多信息。

### 在 Ubuntu 和其它 Linux 发行版上安装 GParted

你可能已经预安装了 GParted 。所以，务必核实一下。如果你尚未安装它，则可以进入软件中心安装它。

如果你想使用终端，简单地键入下面的命令：

```
sudo apt install gparted
```

如上所述，如果你想要使用数据恢复选项，除了安装 gparted 软件包外，还应该安装 gpart 软件包。

如果你使用的是其它 Linux 发行版，你可以在各自的软件管理器中找到它，或者直接查看[官方下载操作说明](https://gparted.org/download.php)。

* [下载 GParted](https://gparted.org/download.php)

### 总结

当涉及处理磁盘管理和分区时，GParted 是一个非常有用且重要的工具。但是，因为显而易见的原因，当你使用它时，你必须要小心。

你尝试过 GParted 吗？你在 Linux 上使用的其它哪个分区工具？请在下面的评论中分享你的经验。

---

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

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

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


我的树莓派项目回顾

Summary: 看看我在好玩、能学习、有用处的树莓派上做了些什么。

看看我在好玩、能学习、有用处的树莓派上做了些什么。

# 我的树莓派项目回顾

>
> 看看我在好玩、能学习、有用处的树莓派上做了些什么。
>
>
>

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

无论是从历史上，还是从理论上讲，当时钟走到一个十年份第一年的 1 月 1 日的午夜 0 点时，就开始了一个十年或一个世纪或一个千年纪元。例如，20 世纪始于 1901 年 1 月 1 日，而不是 1900 年 1 月 1 日。原因很简单：现代日历中没有 0 年，因此这些时间段始于 1 年（使用公历）。但这不是我们在口语上和文化上指代时间段的方式。例如，当我们提到 80 年代的音乐或电影时，我们所说的是 1980 年至 1989 年。

我可以说，最近过去的 21 世纪 10 年代是云计算、社交媒体、移动技术和物联网（IoT）的十年，这其中就包括[树莓派](https://www.raspberrypi.org/)。最近，《时代》杂志将树莓派称为[过去十年中 10 个最佳小玩意](https://time.com/5745302/best-gadgets-of-the-2010s-decade/?utm_source=reddit.com)之一。我非常同意这点。

树莓派最初的于 2012 年推出，我过了几年才使用上了它。不过从那以后，我在家中做了许多有趣的教育项目，还在 Opensource.com 中记录了一些。

### 圣诞灯三部曲

三年来，我写了三篇探讨如何使用树莓派和开源项目 LightShowPi 控制圣诞灯的文章。第一篇文章《[用树莓派创建你自己的音乐灯光秀](https://opensource.com/life/15/2/music-light-show-with-raspberry-pi)》，非常基础地介绍了电子开发介绍和灯光秀的结合。第二篇文章，《[使用树莓派 SSH 进入你的圣诞树](https://opensource.com/life/15/12/ssh-your-christmas-tree-raspberry-pi)》，稍微深入地介绍了通过远程管理和电子按钮控制灯光的方法。三部曲的最后一章《[用树莓派设置假期心情](https://opensource.com/article/18/12/lightshowpi-raspberry-pi)》，回顾了上一年 LightShowPi 项目中引入的更改。

### DIY 项目

多年来，我已经将树莓派变成了几种有用的设备。有一次，我将树莓派变成了 [Pi MusicBox 音乐播放设备](https://opensource.com/life/15/3/pi-musicbox-guide)，它可以让你在 Web 界面中导入你喜欢的音乐流并在房间中播放。

将树莓派做成[移动视频录制设备](https://opensource.com/life/15/9/turning-raspberry-pi-portable-streaming-camera)是另一个 DIY 项目。它需要一些额外的硬件，例如触摸屏、树莓派摄像头和电池组，但是它工作的很好。这个设备的最大缺点之一是当时树莓派的可用内存很小。我认为如果我将它重新配置在具有 4GB 内存的树莓派 4 上，那么这款便携式摄像机的功能可能会更好。这可能是一个会在 2020 年重新打造的项目。

我做的另一个小项目[客厅的数字时钟](https://opensource.com/article/17/7/raspberry-pi-clock)使用了 Adafruit PiTFT 小屏幕。尽管这个项目很简单，但它可能是我使用时间最长的项目。那个时钟在我的电视机上呆了一年多，一天 24 小时不间断运行，直到屏幕烧坏为止。

### 圆周率日系列

最后但并非最不重要的一点是，在 2019 年的圆周率日（3 月 14 日）之前，我在 [14 内发布了 14 篇文章](https://opensource.com/article/19/3/happy-pi-day)。这是迄今为止我完成过的最具挑战性的写作项目，但是它使我能够涵盖许多不同的主题，并希望使读者对树莓派的丰富功能有更多的了解。

### 走向未来

我不认识树莓派基金会中的任何人，因此我不了解它的任何路线图和未来计划。我可以（但我不会）推测品牌及其设备的未来，它们让世界各地这么多不同社会地位的人扩展他们对计算机科学、电子和开源开发的知识。我希望基金会的管理层能够忠于其愿景和使命，并继续为世界各地的人们提供价格合理的技术。

21 世纪 10 年代过去了，那是多么甜蜜的十年。对我来说，它闻起来就像树莓派馅饼。

---

via: <https://opensource.com/article/20/1/raspberry-pi-best>

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