50 个绝佳的必备 Ubuntu 应用

# 50 个绝佳的必备 Ubuntu 应用

>
> 这是一份详尽清单，给所有用户的优秀的 Ubuntu 应用。这些应用将帮助你获得更好的 Linux 桌面使用体验。
>
>
>

过去，我已经多次写过关于 [安装 Ubuntu 之后该做什么](/article-12183-1.html)。每次我都建议在 Ubuntu 上安装某些关键的应用程序。

那么问题来了，什么是关键的 Ubuntu 应用程序？没有绝对的答案。这取决于你的需要和你在 Ubuntu 上要做的工作。

然而还是有很多读者请我推荐一些优秀的 Ubuntu 应用。这就是为什么我创建了这个全面的Ubuntu应用程序列表，你可以经常使用。

为了方便阅读和理解，清单划分为不同应用种类。

### 提供更好使用体验的优秀 Ubuntu 应用

当然，你不必使用以下全部应用。只须浏览这份 Ubuntu 关键应用清单，阅读描述并安装你需要或想要的应用。将这篇文章保存在你的浏览器收藏夹以备将来参考或者通过搜索引擎搜索即可。

这份 Ubuntu 优秀应用清单是准备给普通 Ubuntu 用户的，因此这些应用不全是开源的。我也标记了某些可能不适合新手的稍微复杂的应用。清单适用于 Ubuntu 16.04、18.04 和其他版本。

除非特别声明，所有列出的软件都可以在 Ubuntu 软件中心获得。

如果你没有在软件中心找到应用或者缺失安装说明，请告知我，我会补充安装步骤。

话不多说！让我们看看有哪些优秀 Ubuntu 应用。

#### 浏览器

Ubuntu 以 Firefox 为默认浏览器。自从 Quantum 版本发布以来，Firefox 已有显著提升。就个人而言，我经常使用多个浏览器来应对不同的工作。

##### Google Chrome

由于某种原因，Google Chrome 是最为广泛使用的浏览器。使用 Google 账号，你可以在不同设备无缝同步。大量拓展和应用进一步增强 Chrome 的能力。你可以 [点击此处在 Ubuntu 上安装 Chrome](https://www.google.com/chrome/)。

##### Brave

Google Chrome 可能是最广泛使用的浏览器，但也是隐私窥探者。一个 [替代浏览器](https://itsfoss.com/open-source-browsers-linux/) 是 [Brave](https://brave.com/)，它可以默认拦截广告和追踪脚本。它为你提供了更快、更安全的浏览体验。

#### 音乐应用

Ubuntu 将 Rhythmbox 作为默认音乐播放器，这是个相当不坏的选择。不过，你当然可以安装更好的音乐播放器。

##### Sayonara

[Sayonara](https://itsfoss.com/sayonara-music-player/) 是一个小型、轻量并具备漂亮的深色用户界面的音乐播放器。它拥有所有你期望的标准音乐播放器应有的关键功能。它与 Ubuntu 桌面环境整合良好并且不会大量消耗你的内存。

##### Audacity

[Audacity](https://www.audacityteam.org/) 与其说是音频播放器，不如说是音频编辑器。你可以使用这款自由且开源的工具录制和编辑音频。它支持 Linux、Windows 和 macOS。你可以从软件中心安装它。

##### MusicBrainz Picard

[Picard](https://itsfoss.com/musicbrainz-picard/) 不是一个音乐播放器，而是个音乐标签软件。如果你有大量本地音乐文件，Picard 可以帮助你自动更新音乐文件的正确的曲目、专辑、艺人资料和专辑封面。

#### 流媒体音乐应用

在这个时代的互联网，听音乐的方式显然发生了改变。现在的人更依赖于流媒体音乐播放器而不是收藏上百首本地音乐文件。让我们看看你可以用于收听流媒体音乐的一些应用吧。

##### Spotify

[Spotify](https://www.spotify.com//) 是流媒体音乐之王。好消息是它具有官方 Linux 版本。[Ubuntu 上的 Spotify 应用](/article-9415-1.html) 与媒体键和声音菜单以及桌面通知中心整合良好。请注意，Spotify 服务可能在你的国家有，也可能没有。

##### Nuvola 音乐播放器

[Nuvola](https://tiliado.eu/nuvolaplayer/) 不是像 Spotify 那样的流媒体音乐服务。它是一款在单一应用内支持多个流媒体音乐服务的桌面音乐播放器。你可以使用 Spotify、Deezer、Google Play Music、Amazon Cloud Player 和更多类似服务。

#### 视频播放器

Ubuntu 有默认的 GNOME 视频播放器（从前名为 Totem），表现尚可，但不支持多种视频编码。当然有很多播放器比 GNOME 视频播放器更优秀。

##### VLC

自由开源的 [VLC](https://www.videolan.org/index.html) 摘得视频播放器桂冠。它几乎支持全部的视频编码。它还允许你将音量增至最高的 200%。它也支持从最后一个已知位置继续播放。有很多 [VLC 使用技巧](/article-11776-1.html) 供你参考以尽兴使用。

##### MPV

[MPV](https://mpv.io/) 是款值得更多关注的视频播放器。别致轻量的界面和丰富的功能，MPV 拥有你对一个好的视频播放器的一切期望。你甚至可以在命令行使用它。如果你对 VLC 不够满意，你完全可以尝试 MPV。

#### 云端存储服务

本地备份很好，但云端存储给你更多维度的自由。使用云存储，你再也不必总是随身携带 U 盘或担心硬盘故障。

##### Dropbox

[Dropbox](https://www.dropbox.com/) 是最流行的云存储提供商之一。你会获得 2GB 免费存储空间，并通过推介给他人得到更多存储空间。Dropbox 提供了一个原生的 Linux 客户端，你可以从官网下载获得。它会在你的系统创建一个本地文件夹，以和云端服务器同步。

##### pCloud

[pCloud](https://itsfoss.com/recommends/pcloud/) 是另一个优秀的 Linux 云存储提供商。它也拥有原生的 Linux 客户端，你可以从官网下载。你可以获得高达 20GB 的免费存储空间，如果你需要更多，价格也比 Dropbox 实惠。pCloud 总部位于瑞士，这个国家以严格的数据隐私法而闻名。

#### 图片编辑器

我相信你一定会在某个时间点上需要一个照片编辑器。这里有些优秀的 Ubuntu 图片编辑应用。

##### GIMP

[GIMP](https://www.gimp.org/) 是一个自由开源的图片编辑器，它支持 Linux、Windows 和 macOS。它是 Adobe Photoshop 在 Linux 上最优秀的替代软件。你可以使用它执行任何图片编辑。网上有许多资源帮助你使用 GIMP。

##### Inkscape

[Inkscape](https://inkscape.org/en/) 也是一个自由开源的图片编辑器，专用于矢量图形编辑。你可以在 Inkscape 上设计矢量图形和徽标。你可以把它比做 Adobe Illustrator。与 GIMP 一样，网上也有诸多 Inkscape 教程。

#### 绘图应用

绘图应用和图片编辑器不完全等同，尽管它们有时功能重叠。以下是你能在 Ubuntu 使用的一些绘图应用。

##### Krita

[Krita](https://krita.org/en/) 是一款自由开源的数字绘图应用。你可以用它创建数字绘画、漫画和动画。这是款专业软件，甚至被美术学校作为主要软件使用。

##### Pinta

[Pinta](https://pinta-project.com/pintaproject/pinta/) 虽然不像 Krita 功能强大，但也可圈可点。你可以把它视为 Linux 端的微软画图软件。你可以绘制、画图、添加文字和执行绘图应用可行的其他诸如此类的小任务。

#### 摄影应用

摄影爱好者还是专家？你将随手获得大量 [摄影工具](https://itsfoss.com/image-applications-ubuntu-linux/)，以下是一些推荐应用。

##### digiKam

使用开源软件 [digKam](https://www.digikam.org/)，你可以专业地处理你的高品质摄影作品。digKam 提供用于查看、管理、编辑、增强、组织、标记和分享照片所需的所有工具。

##### Darktable

[darktable](https://www.darktable.org/) 是一款开源的摄影工作流应用程序，特别是专注于 raw 图像的开发。这会是你取代 Adobe Lightroom 的最佳替代品。它同样支持 Windows 和 macOS。

#### 视频编辑器

[Linux 上的视频编辑器](/article-10185-1.html) 并不匮乏，毋庸赘述。看看 Ubuntu 中一些功能丰富但相对简单的视频编辑器。

##### Kdenlive

[Kdenlive](https://kdenlive.org/en/) 是 Linux 端最好的全能型视频编辑器。它与 iMovie 或 Movie Maker 相比功能毫不逊色。

##### Shotcut

[Shotcut](https://shotcut.org/) 是视频编辑的另一个好选择。它是一款开源软件，拥有标准视频编辑器的所有功能。

#### 图片和视频格式转换器

如果你需要为你的图片和视频 [转换文件格式](https://itsfoss.com/format-factory-alternative-linux/)，这些是我的推荐。

##### Xnconvert

[Xnconvert](https://www.xnview.com/en/xnconvert/) 是一款优秀的批量图像转换工具。你可以批量调整图片尺寸、转换文件类型并重命名。

##### Handbrake

[HandBrake](https://handbrake.fr/) 是一款易用的开源工具，用于将多种格式的视频转换为一些现代流行的格式。

#### 截图和录屏工具

以下是截图和录屏的优秀 Ubuntu 应用。

##### Shutter

[Shutter](http://shutter-project.org/) 是我截图的常用工具。你也可以对这些截图进行一些快速编辑，比如添加箭头、文字或调整图片尺寸。你在我们网站看到的截图都是用 Shutter 编辑的。绝对是 Ubuntu 上最好的应用程序之一。

##### Kazam

[Kazam](https://launchpad.net/kazam) 是我最喜欢的 [Linux 上的录屏工具](https://itsfoss.com/best-linux-screen-recorders/)。这个是小巧的工具，可以让你录制全屏、某个应用程序窗口或选定区域。你也可以使用快捷键暂停或恢复录屏。[我们的 YouTube 频道](https://www.youtube.com/c/itsfoss?sub_confirmation=1) 上的教程都是用 Kazam 录制的。

#### 办公套件

我无法想象你在使用计算机时没有文档编辑器。又何必把自己局限在一个文档编辑器上呢？去寻找一个完整的办公套件吧。

##### LibreOffice

Ubuntu 预装了 [LibreOffice](https://www.libreoffice.org/download/download/)，它无疑是 [最佳的开源办公软件](/article-9379-1.html)。它是个组件完整的办公软件，包括文档编辑器、电子表格工具、演示软件、数学工具和作图工具。你甚至可以用它编辑部分 PDF 文件。

##### WPS Office

[WPS Office](http://wps-community.org/) 因酷似微软 Office 而广受欢迎。它的界面与微软 Office 几乎一样并且号称与微软 Office 更加兼容。如果你正在寻找类似微软 Office 的办公软件，WPS Office 是个好选择。

#### 下载工具

如果你经常从网上下载视频或其他大型文件，这些工具会帮助你。

##### youtube-dl

这是本清单少有的基于命令行的 Ubuntu 应用之一。如果你想从 YouTube、DailyMotion 或其他视频网站下载视频，youtube-dl 是个绝好的选择。它提供了大量 [视频下载高级选项](/article-9244-1.html)。

##### uGet

[uGet](http://ugetdm.com/) 是一款功能丰富的 [Linux 下载管理器](https://itsfoss.com/4-best-download-managers-for-linux/)。它允许你暂停和恢复下载、定时下载、监控剪贴板上的可下载内容。如果你的网络速度很慢、不稳定，或者每天的流量有限，这是一个完美的应对工具。

#### 代码编辑器

如果你喜欢编程，默认的 Gedit 文本编辑器可能无法满足你的编程需求。下面就为你介绍一些比较好用的代码编辑器。

##### Atom

[Atom](https://atom.io/) 是一款由 GitHub 推出的 [自由开源的代码编辑器](/article-7468-1.html)。早在它推出第一个稳定版之前，它就因其用户界面、功能和海量插件而成为程序员的至宠。

##### Visual Studio Code

[VS Code](https://itsfoss.com/install-visual-studio-code-ubuntu/) 是一款微软出品的开源代码编辑器。别忌惮微软之名，VS Code 是款很棒的 Web 开发编辑器，它还支持许多其他编程语言。

#### PDF 和电子书相关应用

在这个数字时代，你不能只依靠真正的纸质书籍，特别是当有大量的免费电子书唾手可得。这里有一些 Ubuntu 应用以供管理 PDF 和电子书。

##### Calibre

如果你是个书虫，并收集电子书，你应该使用 [Calibre](https://calibre-ebook.com/)。它是一个电子书管理器，拥有 [创建电子书](/article-7977-1.html)、转换电子书格式和管理电子书库的所有必要组件。

##### Okular

Okular 主要是一个 PDF 查看器，有编辑 PDF 文件的选项。你可以用 Okular 在 Linux 上做一些基本的 [PDF 编辑](https://itsfoss.com/pdf-editors-linux/)，如添加弹出式备注、内联式备注、手绘、荧光笔、印章等。

#### 通讯应用

我相信你在 Linux 上使用至少一款 [通讯应用](https://itsfoss.com/best-messaging-apps-linux/)。以下是我的推荐。

##### Skype

[Skype](https://www.skype.com/en/) 是最流行的视频通讯应用。它也被许多公司和企业用于面试和会议。这使得 Skype 成为 Ubuntu 必备的应用程序之一。

##### Rambox

[Rambox](https://rambox.pro/) 本身不是一个通讯应用，但它允许你从单一窗口中使用 Skype、Viber、Facebook Messanger、WhatsApp、Slack 和其他一些通讯应用。

#### 笔记和待办事项应用

需要一个待办事项应用或简单的应用来做笔记吗？看看这些吧。

##### Simplenote

[Simplenote](http://simplenote.com/) 是 WordPress 创建者 [Automattic](https://automattic.com/) 推出的一款自由开源的笔记应用。它适用于 Windows、Linux、macOS、iOS 和 Android。你的笔记会同步到云服务器上，你可以在任何设备上访问它们。你可以从官网下载 DEB 文件。

##### Remember The Milk

[Remember The Milk](https://itsfoss.com/remember-the-milk-linux/) 是一款流行的待办事项应用。它适用于 Windows、Linux、macOS、iOS 和 Android。你可以在拥有的所有设备上访问你的待办事项。你也可以从浏览器访问它。它还有一个官方的 Linux 原生版本，你可以从官网下载。

#### 密码保护和加密

如果有其他人经常使用你的电脑，也许你会考虑通过密码保护文件和文件夹来增加额外的安全。

##### EncryptPad

[EncryptPad](/article-9377-1.html) 是一个开源文本编辑器，它允许你用密码锁定你的文件。你可以选择加密的类型。这个工具也有一个命令行版本。

##### Gnome Encfs Manager

Gnome Encfs Manager 允许你 [在 Linux 中用密码锁定文件夹](https://itsfoss.com/password-protect-folder-linux/)。你可以将任何你想要的文件保存在一个加密文件夹中，然后用密码锁定它。

#### 游戏

[Linux 上的游戏](/article-7316-1.html) 体验比几年前改进很多。你可以在 Linux 上畅玩大量游戏，而不用回到 Windows 了。

##### Steam

[Steam](https://store.steampowered.com/) 是一个数字发行平台，允许你购买游戏（如果需要的话）。Steam 拥有超过 1500 款 [Linux 游戏](https://itsfoss.com/free-linux-games/)。你可以从软件中心下载 Steam 客户端。

##### PlayOnLinux

[PlayOnLinux](https://www.playonlinux.com/en/) 允许你在 Linux 上通过 WINE 兼容层运行 Windows 游戏。不要对它抱有太高的期望，因为并不是每个游戏都能在 PlayOnLinux 下完美运行。

#### 软件包管理工具 [中高级用户]

Ubuntu 软件中心满足普通 Ubuntu 用户的软件需求，但你可以使用以下应用程序对其进行更多的深入操作。

##### Gdebi

Gedbi 是一款小巧的软件包管理器，你可以用它来安装 DEB 文件。它比软件中心更快，而且还能处理依赖问题。

##### Synaptic

十年前，Synaptic 是大多数 Linux 发行版的默认 GUI 软件包管理器。在一些 Linux 发行版中，它仍然是默认的软件包管理器。这个强大的软件包管理器在 [查找已安装的应用程序并删除它们](https://itsfoss.com/how-to-add-remove-programs-in-ubuntu/) 方面特别有用。

#### 备份和恢复工具

任何操作系统都应该有备份和恢复工具。让我们来看看 Ubuntu 上有哪些软件是你必须拥有的。

##### Timeshift

Timeshift 是一个帮助你 [对系统进行快照](/article-11619-1.html) 的工具。这可以让你在系统配置混乱的情况下，在发生不幸的事时将系统恢复到以前的状态。不过要注意的是，它并不是你个人数据备份的最佳工具。对此，你可以使用U buntu 默认的 Deja Dup（也叫做“备份”）。

##### TestDisk [中级用户]

这是本清单里另一个命令行工具。[TestDisk](https://www.cgsecurity.org/wiki/TestDisk) 可以让你 [恢复 Linux 上的数据](/article-7974-1.html)。如果你不小心删除了文件，使用 TestDisk 还有机会找回来。

#### 系统调整和管理工具

##### GNOME/Unity Tweak Tool

这些调整工具是每个 Ubuntu 用户必备的。它们允许你访问一些高级系统设置。最重要的是，你可以使用这些调整工具 [改变 Ubuntu 的主题](https://itsfoss.com/install-themes-ubuntu/)。

##### UFW Firewall

[UFW](https://wiki.ubuntu.com/UncomplicatedFirewall) 意指“不复杂的防火墙”，这一点是贴切的。UFW 为家庭、工作和公共网络预先定义了防火墙设置。

##### Stacer

如果你想释放 Ubuntu 的存储空间，可以试试 Stacer。这个图形化工具可以让你通过删除不必要的文件和完全卸载软件来 [优化你的 Ubuntu 系统](https://itsfoss.com/optimize-ubuntu-stacer/)。可以从 [官网](https://github.com/oguzhaninan/Stacer) 下载 Stacer。

#### 其他工具

最后，我会列一些其他我很喜欢但无法归类的 Ubuntu 应用。

##### Neofetch

又多了一个命令行工具！Neofetch 可以显示你的系统信息，如 [Ubuntu 版本](https://itsfoss.com/how-to-know-ubuntu-unity-version/)、桌面环境、主题、图标、内存和其他信息，并附有 [发行版的 ASCII 徽标](https://itsfoss.com/display-linux-logo-in-ascii/)。使用以下命令安装 Neofetch。

```
sudo apt install neofetch

```

##### Etcher

Ubuntu 已经带有一个即用 USB 创建工具，但 Etcher 能更好地完成这项任务。它同样支持 Windows 和 macOS。你可以 [点击这里](https://etcher.io/) 下载 Etcher。

##### gscan2pdf

我使用这个小工具的唯一目的是 [将图片转换为 PDF](https://itsfoss.com/convert-multiple-images-pdf-ubuntu-1304/)。你也可以用它将多张图片合并成一个 PDF 文件。

##### 音频记录器

另一个小巧而又必不可少的 Ubuntu 应用，用于 [在 Ubuntu 上录制音频](https://itsfoss.com/record-streaming-audio/)。你可以用它来录制来自系统麦克风、音乐播放器或任何其他来源的声音。

### 你对 Ubuntu 关键应用的建议？

我想在这里结束我的优秀 Ubuntu 应用清单。我知道你可能不需要或使用所有的应用，但我确信你会喜欢这里列出的大部分应用。

你是否找到几款以前从未知道的应用呢？如果要你推荐最爱的 Ubuntu 应用，你会选择哪个呢？

最后，如果你觉得这篇文章有用，请把它分享到社交媒体或其他你常访问的社区或论坛。这样，你也帮助了我们的成长 ?

---

via: <https://itsfoss.com/best-ubuntu-apps/>

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

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


#新闻拍一拍# digiKam 7.0.0 发布

Summary: • Ubuntu 显示服务器 Mir 2.0 发布

Mir 和Wayland还有什么区别啊？

# #新闻拍一拍# digiKam 7.0.0 发布

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

#### digiKam 7.0.0 发布

照片编辑和管理工具 digiKam 项目释出了 v7.0.0。主要新特性包括：基于深度学习的脸部检测和管理；RAW 格式文件支持数量超过 100 种；支持苹果的 HEIF 图像格式；支持 FlatPak 打包格式；改进 Windows 版本，支持网络路径的通用命名约定和基于 UTF-16 的 Unicode 编码路径等。

来源：[solidot](https://www.solidot.org/story?sid=65053)

>
> 拍一拍：新的版本没有看到特别大的变化，不过本身 digiKam 也很成熟了。
>
>
>

#### Ubuntu 显示服务器 Mir 2.0 发布

此版本清除了旧的 Mir 客户端/服务器软件包以及 mir-utils 和 mirtest-dev，删除了主机套接字周边的旧选项与嵌套传递，客户端代码中的各种过时的内容也已删除。Mir 2.0 还重新设计了其图形平台 API。

来源：[开源中国](https://www.oschina.net/news/117472/mir-2-0-released)

>
> 拍一拍：虽然 X 服务器很老旧了，但是想完全取代依旧很难。
>
>
>


CI/CD 中的自动化测试的概要知识

Summary: 持续集成和持续交付是由测试驱动的。以下是如何做到的。

持续集成和持续交付是由测试驱动的。以下是如何做到的。

# CI/CD 中的自动化测试的概要知识

>
> 持续集成和持续交付是由测试驱动的。以下是如何做到的。
>
>
>

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

>
> “如果一切似乎都在控制之中，那只是你走的不够快而已。” —Mario Andretti
>
>
>

测试自动化是指在软件开发过程中尽可能早、尽可能快地持续关注检测缺陷、错误和 bug。这是通过使用那些追求质量为最高价值的工具完成的，它们旨在*确保*质量，而不仅仅是追求质量。

持续集成/持续交付（CI/CD）解决方案（也称为 DevOps 管道）最引人注目的功能之一是可以更频繁地进行测试，而又不会给开发人员或操作人员增加更多的手动工作。让我们谈谈为什么这很重要。

### 为什么要在 CI/CD 中实现自动化测试？

敏捷团队要更快的迭代，以更高的速度交付软件和客户满意度，而这些压力可能会危及质量。全球竞争制造了对缺陷的*低容忍度*，同时也增加了敏捷团队的压力，要求软件交付的*迭代更快*。减轻这种压力的行业解决方案是什么？是 [DevOps](https://opensource.com/resources/devops)。

DevOps 是一个大概念，有很多定义，但是对 DevOps 成功至关重要的一项技术是 CI/CD。通过软件开发流程设计一个连续的改进循环，可以为测试带来新的机会。

### 这对测试人员意味着什么？

对于测试人员，这通常意味着他们必须：

* 更早且更频繁地进行测试（使用自动化）
* 持续测试“真实世界”的工作流（自动和手动）

更具体地说，任何形式的测试，无论是由编写代码的开发人员运行还是由质量保证工程师团队设计，其作用都是利用 CI/CD 基础架构在快速推进的同时提高质量。

### 测试人员还需要做什么？

具体点说，测试人员负责：

* 测试新的和现有的软件应用
* 根据系统要求评估软件来验证和确认功能
* 利用自动化测试工具来开发和维护可重复使用的自动化测试
* 与 scrum 团队的所有成员合作，了解正在开发的功能以及实施的技术设计，以设计和开发准确、高质量的自动化测试
* 分析记录在案的用户需求，并针对中等到高度复杂的软件或 IT 系统制定或协助设计测试计划
* 开发自动化测试，并与功能团队一起审查和评估测试方案
* 与技术团队合作，确定在开发环境中自动化测试的正确方法
* 与团队合作，通过自动化测试来了解和解决软件问题，并回应有关修改或增强的建议
* 参与需求梳理、估算和其他敏捷 scrum 仪式
* 协助制定标准和流程，以支持测试活动和材料（例如脚本、配置、程序、工具、计划和结果）

测试是一项艰巨的工作，但这是有效构建软件的重要组成部分。

### 哪些持续测试很重要？

你可以使用多种测试。不同的类型并不是学科之间的牢固界限。相反，它们是表示如何测试的不同方式。比较测试类型不太重要，更重要的是对每一种测试类型都要有覆盖率。

* **功能测试：** 确保软件具有其要求的功能
* **单元测试：** 独立测试软件的较小单元/组件以检查其功能
* **负载测试：** 测试软件在重负载或使用期间的性能
* **压力测试：** 确定软件承受压力（最大负载）时的断点
* **集成测试：** 测试组合或集成的一组组件的输出
* **回归测试：** 当修改任意组件（无论多么小），测试整个应用的功能

### 总结

任何包含持续测试的软件开发过程都将朝着建立关键反馈环路的方向发展，以实现快速和构建有效的软件。最重要的是，该实践将质量内置到 CI/CD 管道中，并意味着了解在软件开发生命周期中提高速度同时减少风险和浪费之间的联系。

---

via: <https://opensource.com/article/20/7/automation-testing-cicd>

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


开启天文之路的 4 个 Python 工具

# 开启天文之路的 4 个 Python 工具

>
> 使用 NumPy、SciPy、Scikit-Image 和 Astropy 探索宇宙
>
>
>

### 天文学与 Python

对科学界而言，尤其是对天文学界来说，Python 是一种伟大的语言工具。各种软件包，如 [NumPy](http://numpy.scipy.org/)、[SciPy](http://www.scipy.org/)、[Scikit-Image](http://scikit-image.org/) 和 [Astropy](http://www.astropy.org/)，（仅举几例） ，都充分证明了 Python 对天文学的适用性，而且有很多用例。（NumPy、Astropy 和 SciPy 是 NumFOCUS 提供资金支持的项目；Scikit-Image 是个隶属项目）。我在十几年前脱离天文研究领域，成为了软件开发者之后，对这些工具包的演进一直很感兴趣。我的很多前天文界同事在他们的研究中，使用着前面提到的大部分甚至是全部工具包。以我为例，我也曾为位于智利的超大口径望远镜（VLT）上的仪器编写过专业天文软件工具包。

最近令我吃惊的是，Python 工具包竟然演进到如此好用，任何人都可以轻松编写 <ruby>   数据还原  <rt>  data reduction </rt></ruby> 脚本，产生出高质量的数据产品。天文数据易于获取，而且大部分是可以公开使用的，你要做的只是去寻找相关数据。

比如，负责 VLT 运行的 ESO，直接在他们的网站上提供数据下载服务，只要访问 [www.eso.org/UserPortal](http://www.eso.org/UserPortal) 并在首页创建用户就可以享有数据下载服务。如果你需要 SPHERE 数据，可以下载附近任何一个包含<ruby> 系外行星 <rt>  exoplanet </rt></ruby>或者<ruby> 原恒星盘 <rt>  proto-stellar discs </rt></ruby>的恒星的全部数据集。对任何 Python 高手而言，通过还原数据发现深藏于噪声中的行星或者原恒星盘，实在是件令人兴奋的事。

我鼓励你下载 ESO 或其它天文影像数据，开启你的探索历程。这里提供几条建议：

1. 首先要有一个高质量的数据集。看一些有关包含系外行星或者原恒星盘的较近恒星的论文，然后在 <http://archive.eso.org/wdb/wdb/eso/sphere/query> 之类的网站检索数据。需要注意的是，前述网站上的数据有的标注为红色，有的标注为绿色，标注为红色的数据是尚未公开的，在相应的“发布日期”处会注明数据将来公开的时间。
2. 了解一些用于获取你所用数据的仪器的信息。尽量对数据的获取有一个基本的理解，对标准的数据还原之后应该是什么样子做到心中有数。所有的望远镜和仪器都有这方面的文档供公开获取。
3. 必须考虑天文数据的标准问题，并予以校正：

	1. 数据以 FITS 格式文件保存。需要使用 `pyfits` 或者 `astropy` （包含 `pyfits` ）将其读入到 `NumPy` 数组。有些情况下，数据是三维的，需要沿 z 轴使用 `numpy.median` 将数据转换为二维数组。有些 SPHERE 数据在同一幅影像中包含了同一片天空的两份拷贝（各自使用了不同的滤波器），这时候需要使用 **索引** 和 **切片** 将它们分离出来。
	2. <ruby> 全黑图 <rt>  master dark </rt></ruby>和<ruby> 坏点图 <rt>  bad pixel map </rt></ruby>。所有仪器都有快门全关（完全无光）状态拍摄的特殊图片，使用 **NumPy 掩膜数组** 从中分离出坏点图。坏点图非常重要，你在合成最终的清晰图像过程中，需要持续跟踪坏点。有些情况下，这还有助于你从原始科学数据中扣除暗背景的操作。
	3. 一般情况下，天文仪器还要拍<ruby> 标准响应图 <rt>  master flat frame </rt></ruby>。这是对均匀的单色标准光源拍摄的一张或者一组图片。你需要将所有的原始数据除以标准响应之后再做后续处理（同样，使用 Numpy 掩膜数组实现的话，这仅仅是一个简单的除法运算）。
	4. 对行星影像，为了使行星在明亮恒星背景下变得可见，需要仰仗<ruby> 日冕仪 <rt>  coronagraph </rt></ruby>和<ruby> 角差分成像 <rt>  angular differential imaging </rt></ruby>技术。这一步需要识别影像的光学中心，这是比较棘手的环节之一，过程中要使用 `skimage.feature.blob_dog` 从原始影像中寻找一些人工辅助影像作为帮助。
4. 要有耐心。理解数据格式并弄清如何操作需要一些时间，绘出像素数据曲线图或者统计图有助于你的理解。贵在坚持，必有收获！你会从中学到很多关于图像数据及其处理的知识。

综合应用 NumPy、SciPy、Astropy、scikit-image 及其它工具，结合耐心和恒心，通过分析大量可用的天文数据分析实现重大的发现是非常有可能的。说不定，你会成为某个之前被忽略的系外行星的第一发现者呢。祝你好运！

---

NumFOCUS 是个非盈利组织，维护着一套科学计算与数据科学方面的杰出开源工具集。如果想了解我们的任务及代码，可以访问 [numfocus.org](https://numfocus.org)。如果你有兴趣以个人身份加入 NumFOCUS 社区，可以关注你所在地区的 [PyData 活动](https://pydata.org/)。

本文基于 Pivigo CTO [Ole Moeller-Nilsson](https://twitter.com/olly_mn) 的一次 [谈话](https://www.slideshare.net/OleMoellerNilsson/pydata-lonon-finding-planets-with-python)，最初发布于 NumFOCUS 的博客，蒙允再次发布。如果你有意支持 NumFOCUS，可以 [捐赠](https://numfocus.org/donate)，也可以参与遍布全球的 [PyData 活动](https://pydata.org/) 中你身边的那些。

---

via: <https://opensource.com/article/19/10/python-astronomy-open-data>

作者：[Gina Helfrich, Ph.D.](https://opensource.com/users/ginahelfrich) 选题：[lujun9972](https://github.com/lujun9972) 译者：[silentdawn-zz](https://github.com/silentdawn-zz) 校对：[wxy](https://github.com/wxy)

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


Summary: • OpenJDK 项目从 Mercurial 迁移到 GitHub • Zstd 显著提升 Linux 内核镜像压缩效率

# #新闻拍一拍# Meow 攻击自动删除不安全的 Elasticsearch 数据库

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

#### Meow 攻击自动删除不安全的 Elasticsearch 数据库

有攻击者使用自动脚本扫描开放的不安全的 Elasticsearch 和 MongoDB 数据库，找到之后直接将其删除，不解释，不留下任何通知。至今已经有大约 4000 个数据库遭到删除。攻击者在日志里留下了 $randomstring-meow 的信息，因此这次攻击被称为 Meow 攻击。

来源：[solidot](https://www.solidot.org/story?sid=65058)

>
> 拍一拍：用户没有安全习惯固然是一个根本原因，但是作为软件产品自身没有默认强制安全措施埋下了祸根。
>
>
>

#### OpenJDK 项目从 Mercurial 迁移到 GitHub

预计迁移将在 2020 年 9 月完成。OpenJDK 从 2008 年起使用 Mercurial 管理源代码，如今部分 OpenJDK 项目如 Loom、Valhalla 和 JMC 已经迁移到 GitHub，还有部分项目正在迁移中，而到 9 月份 OpenJDK 主线也将正式加入进来。

来源：[solidot](https://www.solidot.org/story?sid=65054)

>
> 拍一拍：看来版本控制系统的巨头化已经不可避免，而这会阻碍版本控制产品和模式的发展。
>
>
>

#### Zstd 显著提升 Linux 内核镜像压缩效率

Facebook 工程师 Nick Terrell 近日向 Linux 内核提交了使用 Zstd 压缩 Linux 内核镜像的补丁，这些补丁显示了使用 Zstd 对内核、ramdisk 和 initramfs 进行压缩操作具备巨大潜力。在 x86\_64 硬件上，当初始 RAM 文件系统将压缩算法从 XZ 切换到 Zstd 时，解压时间从 12 秒下降到只需 3 秒。此外，这将有助于清理更多的内核代码，因为 Bzip2 和 LZMA 目前并没有在内核树之外的其他地方使用。

来源：[开源中国](https://www.oschina.net/news/117514/zstd-for-linux-kernel-comp)

>
> 拍一拍：清理一些不合时宜的算法和惯例才能与时俱进。
>
>
>


每周开源点评：开源建设者入门，以及更多的行业趋势

Summary: 每周关注开源社区和行业趋势。

每周关注开源社区和行业趋势。

# 每周开源点评：开源建设者入门，以及更多的行业趋势

>
> 每周关注开源社区和行业趋势。
>
>
>

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

我在一家采用开源软件开发模型的企业软件公司任高级产品营销经理，我的一部分职责是为产品营销人员、经理和其他相关人定期发布有关开源社区、市场和业界发展趋势的更新。以下是该更新中我和他们最喜欢的五篇文章。

### 《开放源码建设者：入门》

* [文章链接](https://idk.dev/open-source-builders-getting-started/)

>
> "最后，我发现自己想要自己修改代码，"Liz 说。她的第一个贡献是为 Django 框架做了一个授权扩展。她补充说："我记得当时我很担心维护者可能不希望一个完全陌生的人做的改动，所以当它被接受时，我感到很兴奋，也很欣慰……得到认可，甚至感谢你的贡献，这种感觉总是很好。"
>
>
>

**分析：** 这一系列对开源维护者的采访（引自 [Liz Rice](https://twitter.com/lizrice)）交汇了跳入开源领域的动机和经验。这也是对天才独狼开发者神话的一个点赞，你可以自己走很远的路，但如果你知道如何与其他人很好地合作，你会走得更远，建立更好的东西。如果你知道如何说服和激励他们，你会走得更远。

### 《Fluent Bit v1.5：轻量级和高性能日志处理器》

* [文章链接](https://www.cncf.io/blog/2020/07/14/fluent-bit-v1-5-lightweight-and-high-performance-log-processor/)

>
> 本次主要版本的最大亮点之一是不同公司与 Fluent Bit 核心维护者的联合工作，为 Google、Amazon、LogDNA、New Relic 和 Sumo Logic 等公司内部提供的可观察性云服务带来了改进和新的连接器。
>
>
>

**分析：**“从不同来源收集数据/日志，统一并将其发送到多个目的地”是一项繁琐的任务，但这是超大规模企业及其客户共同的任务。证据 A：一个开源工作完全如其预期的典型例子。祝贺 Fluent Bit 团队的这次发布！

### 《Kubernetes 如何让 Nubank 工程师每周部署 700 次》

* [文章链接](https://www.cncf.io/blog/2020/07/10/how-kubernetes-empowered-nubank-engineers-to-deploy-200-times-a-week/)

>
> 因此，生产环境的部署时间从 90 分钟变成了 15 分钟。而 Nobre 说，这是“最主要的好处，因为它有助于开发人员的体验”。如今，Nubank 的工程师每周部署 700 次。“对于一家银行来说，你会说这太疯狂了，”Capaverde 笑着说。“但这并不疯狂，因为有了 Kubernetes 和金丝雀部署，回滚变化更容易，因为部署速度也更快。人们的出货频率更高，更有信心。”
>
>
>

**分析：** 我觉得这是个赢家，也是个输家。当然，他们降低了做出改变的成本，以一种让人们更有信心去尝试的方式。但他们的开发人员不能再在等待部署完成的同时跑 10 公里，现在只能在一次 TED 演讲中凑合。

希望你喜欢这个列表，下周再见。

---

via: <https://opensource.com/article/20/7/open-source-industry-trends>

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


Foliate：适用于 Linux 的现代电子书阅读器应用

# Foliate：适用于 Linux 的现代电子书阅读器应用

>
> Foliate 是一款简洁、优雅的开源电子书阅读器，可在 Linux 桌面上提供类似 Kindle 的阅读体验。
>
>
>

虽然我们已经有了一个 [Linux 最佳电子书阅读器](/article-10383-1.html)的列表，但最近我遇到了另一个 Linux 电子书阅读器。它叫 [Foliate](https://johnfactotum.github.io/foliate/)。

Foliate 是一个现代的 GTK 电子书查看器，它有许多基本功能。如果你拥有亚马逊 Kindle 或其他电子书阅读器，那么你可能会想念那种在桌面上阅读的体验。

Foliate 解决了那些抱怨。Foliate 会显示书的估计剩余阅读时间和页数。你可以添加书签、高亮文本和添加注释。你可以导出数据，也可以轻松同步它们。

你也可以使用维基词典和维基百科查询单词。你可以在页面视图和滚动视图之间切换。它还有几个主题，以满足你的阅读偏好。

最棒的是，它正在积极维护和开发。

### Foliate 的功能

让我们来看看 Foliate 提供的所有功能：

* 支持 .epub、.mobi、.azw、未打包的 EPUB 文件、文本文件、漫画存档（cbr、.cbz、.cbt、.cb7），小说书（.fb2、.fb2.zip）和 .azw3 文件。它不支持 PDF 文件。
* 它让你可以在双页浏览模式下阅读电子书，并提供滚动查看模式。
* 能够自定义字体、行距、边距和亮度。
* 图书馆视图，显示最近的书籍和阅读进度。
* 默认主题包括浅色、棕褐色、深色、Solarized 深色/浅色、Gruvbox 浅色/深色、灰色、Nord 和反转模式。
* 你还可以添加自定义主题调整电子书浏览器的外观。
* 带有章节标记的阅读进度滑块。
* 书签和注释支持。
* 能够在书中查找文本。
* 能够放大和缩小。
* 启用/禁用侧边栏进行导航。
* 使用 [维基词典](https://en.wiktionary.org/wiki/Wiktionary:Main_Page) 和 [维基百科](https://en.wikipedia.org/wiki/Main_Page) 快速查找字典
* 使用谷歌翻译翻译文字
* 触摸板手势，使用两指滑动即可翻页
* 使用 [eSpeak NG](https://github.com/espeak-ng/espeak-ng) 和 [Festival](http://www.cstr.ed.ac.uk/projects/festival/) 支持文字转语音

### 在 Linux 上安装 Foliate

对于基于 Ubuntu 和 Debian 的 Linux 发行版，你可以从它的 [GitHub 发布页面](https://github.com/johnfactotum/foliate/releases)获取 .deb 文件。只需双击即可[从 deb 文件安装应用](https://itsfoss.com/install-deb-files-ubuntu/)。

对于 Fedora、Arch、SUSE 等其他 Linux 发行版。Foliate 可提供 [Flatpak](https://flathub.org/apps/details/com.github.johnfactotum.Foliate) 和 [Snap](https://snapcraft.io/foliate) 包。如果你不知道如何使用它们，那么你可以按照我们[使用 flatpak](https://itsfoss.com/flatpak-guide/) 和[使用 snap 包](https://itsfoss.com/use-snap-packages-ubuntu-16-04/)指南来开始使用。

如果需要，你可以浏览它的 [GitHub 页面](https://github.com/johnfactotum/foliate)以从源代码开始构建。

* [下载 Foliate 应用](file:///Users/xingyuwang/develop/TranslateProject-wxy/translated/tech/tmp.6FO70BtAuy)

### 总结

我使用 GitHub 上提供的最新 .deb 文件在 Pop!\_OS 19.10 上进行了尝试，并且效果很好。我不喜欢在桌面上阅读很久，但我喜欢它的功能。

你是否尝试过 Foliate？请随时分享你的经验。

---

via: <https://itsfoss.com/foliate-ebook-viewer/>

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


通过 VSCode RTOS 插件使用 Python 为物联网系统编写程序

Summary: RTOS 之类的实时嵌入式操作系统使嵌入式系统的编程更简单

RTOS 之类的实时嵌入式操作系统使嵌入式系统的编程更简单

# 通过 VSCode RTOS 插件使用 Python 为物联网系统编写程序

>
> RTOS 之类的实时嵌入式操作系统使嵌入式系统的编程更简单
>
>
>

物联网（IoT）无处不在，它意味着几乎所有的产品，从冰箱到口袋手表，都可以连网。为了实现这个目标，每个产品都需要拥有一个嵌入式计算机来运行网络栈，有些产品几乎是小的不可思议。这就是嵌入式软件出现的场景：现代科技打造的非常小的计算机，硬编码到硬件芯片，不需要任何板外处理器、内存或者存储盘。

就传统视角而言，这种场景意味着没有操作系统可用，但是因为种种 [原因](https://opensource.com/article/20/6/open-source-rtos)，开发者发现，类似于 RTOS 之类的实时嵌入式操作系统能让嵌入式系统的编程变得非常简单。

虽然 RT-Thread 嵌入式操作系统致力于鼓励程序员新手进入物联网领域，但并非所有的人都具备使用 C 语言硬编码微芯片的能力。幸运的是，MicroPython 通过让开发者创建运行于嵌入式系统的 Python 代码的方式，逐渐填补了这个鸿沟。为了让整个过程更简单，RT-Thread 有一个可以用于 VSCode 和 [VSCodium](https://opensource.com/article/20/6/open-source-alternatives-vs-code) 的插件，为开发者提供了物联网方面的开发环境。其部分特性包括：

* 方便的连接方式，可以很容易的通过串口、网络或者 USB 连接到开发板（如果你使用过 Arduino，肯定会很熟悉这个流程）。
* 支持上传文件或目录到开发板。
* 支持基于 MicroPython 的代码，而且具有智能的代码补完、语法检查功能。
* 支持 MicroPython REPL 交互式环境。
* 丰富的示例代码和演示程序。
* 完整的工程同步功能。
* 快速运行内存中的程序代码。
* 运行函数的代码片段。
* 支持主流的 MicroPython 开发板。
* 支持 Linux 和 Windows 操作系统，并经过充分测试。

### 准备

在开始之前，如果你使用的是 Windows 操作系统，那么必须保证 VSCode 的默认终端是 [PowerShell](https://opensource.com/article/18/2/powershell-people)。运行 VSCodium，从 “Terminal” 菜单项启动一个终端. 在显示在 VSCodium 窗口底部的终端界面，从下拉菜单顶端选择 “PowerShell”。 不论你是在 [Windows](https://opensource.com/article/19/8/how-install-python-windows) 还是 Linux 系统下工作，必须保证安装了 Python 3（在 Linux 上，它可能已经安装了，否则可以通过软件库安装它）。

还要安装的是微软提供的通用 VSCode Python 插件。安装方法是点击 “File” 菜单，找到 “Preferences” 子菜单，从中打开 “Extensions” 面板。在扩展中，搜索 “Python”，找到来自微软的 Python 插件。

当然，在上述操作之前，你要先正确安装 [VSCodium](http://vscodium.com) 或 [VSCode](https://github.com/microsoft/vscode)。

### 安装插件

安装 MicroPython 开发插件的方法与安装 Python 插件一样，点击 “File” 菜单，找到 “Preferences” 子菜单，选择 “Extensions”。

在扩展中，搜索 “MicroPython”，安装 RT-Thread 插件。

### 使用插件

你的开发板必须能访问串口，这需要组策略的允许。你可能需要将自己的账户加入该组，通常在默认情况下你的账户可能并不在该组。首先，确认你的账户不在 “dialout” 组：

```
$ groups
tux users

```

本例中，用户“tux”只是“tux”组和“users”组的成员，所以需要将用户“tux”添加到“dialout”组：

```
$ sudo usermod --append --groups dialout tux

```

退出登录或重启以载入你新的组权限。

### 创建 MicroPython 工程

MicroPython 开发的第一步是创建 MicroPython 工程用来编写和运行代码。使用 MicroPython 插件创建工程的方法是，点击左下方的 “Create MicroPython project” 按钮。

之后会有一些提示，让你选择创建空白工程还是包含例程的工程。

### 连接到开发板

点击 VSCodium 左下方的 “Connection” 按钮，进行 VSCodium 与开发板的连接，在弹出的列表中，选择要连接的物理设备。

### 查看例程

MicroPython 插件提供了许多例程和例库，供学习和调用。获取例程的过程是，激活 MicroPython 之后，VSCodium 左侧按钮条会出现“新建”快捷图标，点击该图标就可以了。点击“文档”快捷图标，会显示例程文件列表；点击“文件夹”快捷图标，会显示例库列表。

### 直接在开发板上运行 MicroPython 文件

在 VSCodium 中可以通过在开发板上运行单个程序文件，很方便快捷的进行程序调试。快捷键 `Alt+Q` 会触发一个特定的插件，该插件会将当前的 Python 文件上传到开发板内存中。你还可以在当前 Python 文档界面点击右键，然后选择 “Run the MicroPython file directly on the device” 实现同样的功能。

如果你需要以不上传代码的方式检查一组代码，可以使用“代码片段”功能。要运行 MicroPython REPL 环境中的代码片段，在编辑器中选中要运行的片段，右键菜单中点击 “Execute the selected MicroPython code on the device” （也可以使用 `Alt+Q` 快捷键）。

### 加载文件和目录到开发板

如果需要加载文件或目录到开发板，有现成的方法可用：选中工程中要加载到开发板的文件或目录，在选中的对象上右键，点击右键菜单中的 “Download the file/folder to the device”。

注意，如果开发板中已有与要加载的文件或目录同名者，加载操作将导致开发板原有的内容被覆盖。

在 REPL 环境中运行 `os.listdir()` 命令，可以检查文件和目录是否成功加载。当然，也可以通过相应的命令删除 REPL 中的文件或目录。

删除文件的命令如下：

```
os.remove('file_to_delete')

```

删除目录的命令如下：

```
os.rmdir('folder_to_delete')

```

### 工程的同步

点击左下角“同步”按钮可以启动工程同步，该操作将把本地工程中所有的文件和目录同步到开发板的文件系统。建议在完成程序调试之后进行该操作，调试过程中不需要频繁进行同步操作。

工程的同步操作完成后，开发板上的文件列表可以在 “Device Files List” 列看到。

### 放手尝试

RT-Thread 以开源的方式发布 MicroPython 插件，意在为新老开发者提供帮助，它的很多特性，如代码自动补全等，与开源插件之间互有影响和促进。你如果想为嵌入式系统或物联网系统编写软件，这就是最简单的方式，没有之一。

---

via: <https://opensource.com/article/20/7/python-rt-thread>

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

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


Summary: • 微软首次公布 GitHub 产品路线图 • 华为将 HMS 生态优先级提升至最高，目前已有 2500 个应用

# #新闻拍一拍# Facebook 将 Windows 版 PyTorch 的开发维护权移交给微软

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

#### Facebook 将 Windows 版 PyTorch 的开发维护权移交给微软

PyTorch 是基于 Torch 的开源 Python 机器学习库，由 Facebook 的人工智能研究团队开发。特斯拉的自动驾驶和 Uber 的 Pyro 等深度学习项目都构建于 PyTorch 之上。此前，Facebook 的工程师们做了大量努力，在 Windows 上添加了对 PyTorch 的支持。但由于资源有限，Windows 对 PyTorch 的支持落后于其他平台。但微软已扩大了对 PyTorch 社区的参与，现在拥有 PyTorch 在 Windows 上的开发和维护所有权。

>
> 拍一拍：似乎大家已经习惯了微软在开源方面做出各种贡献了，因为我看到这个消息毫不吃惊。
>
>
>

来源：[开源中国](https://www.oschina.net/news/117544/microsoft-becomes-maintainer-of-the-windows-version-of-pytorch)

#### 微软首次公布 GitHub 产品路线图

微软于今日首次公布了 GitHub 产品路线图（[https://github.com/github/roadmap），这个新建的公共信息库允许任何人访问，除了做好在未来几个季度内迎来新功能的准备，开发者还可积极地向开发团队提交反馈。路线图上的每个项目都可以当做一个提问版块。](https://github.com/github/roadmap%EF%BC%89%EF%BC%8C%E8%BF%99%E4%B8%AA%E6%96%B0%E5%BB%BA%E7%9A%84%E5%85%AC%E5%85%B1%E4%BF%A1%E6%81%AF%E5%BA%93%E5%85%81%E8%AE%B8%E4%BB%BB%E4%BD%95%E4%BA%BA%E8%AE%BF%E9%97%AE%EF%BC%8C%E9%99%A4%E4%BA%86%E5%81%9A%E5%A5%BD%E5%9C%A8%E6%9C%AA%E6%9D%A5%E5%87%A0%E4%B8%AA%E5%AD%A3%E5%BA%A6%E5%86%85%E8%BF%8E%E6%9D%A5%E6%96%B0%E5%8A%9F%E8%83%BD%E7%9A%84%E5%87%86%E5%A4%87%EF%BC%8C%E5%BC%80%E5%8F%91%E8%80%85%E8%BF%98%E5%8F%AF%E7%A7%AF%E6%9E%81%E5%9C%B0%E5%90%91%E5%BC%80%E5%8F%91%E5%9B%A2%E9%98%9F%E6%8F%90%E4%BA%A4%E5%8F%8D%E9%A6%88%E3%80%82%E8%B7%AF%E7%BA%BF%E5%9B%BE%E4%B8%8A%E7%9A%84%E6%AF%8F%E4%B8%AA%E9%A1%B9%E7%9B%AE%E9%83%BD%E5%8F%AF%E4%BB%A5%E5%BD%93%E5%81%9A%E4%B8%80%E4%B8%AA%E6%8F%90%E9%97%AE%E7%89%88%E5%9D%97%E3%80%82)

来源：[cnBeta.COM](https://www.cnbeta.com/articles/tech/1009037.htm)

>
> 拍一拍：大家对这个 GitHub 有什么期望都去反馈一下了。
>
>
>

#### 华为将 HMS 生态优先级提升至最高，目前已有 2500 个应用

华为轮值 CEO 徐直军认为，“打造 HMS 生态是可以最快的解决华为手机在海外不可用的状态，这是首要任务，优先级最高的任务。虽然 GMS 不可以用了，但是 AOSP 是开源软件是可用的，基于 AOSP 打造一个 HMS 替代 GMS，让开发者可以很快的构建全球 HMS 生态。”

来源：[搜狐IT](https://www.cnbeta.com/articles/tech/1009119.htm)

>
> 拍一拍：虽然现在艰难，但是这一关是必须过的。
>
>
>


我的 Linux 故事：用开源打破语言壁垒

Summary: 开源项目可以通过消除语言和其他障碍来帮着改变世界。

开源项目可以通过消除语言和其他障碍来帮着改变世界。

# 我的 Linux 故事：用开源打破语言壁垒

>
> 开源项目可以通过消除语言和其他障碍来帮着改变世界。
>
>
>

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

相较于我的许多同行和同事，我的开源之旅开始得着实很晚。

2000 年，我实现了我从高中开始的梦想 —— 买一台属于我自己的个人计算机，当时我正在攻读医学研究生学位。在那之前，我对计算机的唯一接触是偶尔在图书馆或网吧上网，当时这些地方电脑使用的收费都相当高昂。所以我省下了一部分研究生津贴，设法买了一台 Pentium III 550 Mhz、128MB 内存的电脑，并且像当时大多数印度电脑的标准配置一样，装着盗版的 Windows 98 系统。

我的宿舍房间上不了网。我不得不去附近的网吧，在那里下载软件，然后随身带着几十张软盘。

当我终于拥有了自己的计算机，我非常高兴，但有一点也让我感到困扰，那就是我无法用我的母语孟加拉语写东西。我碰到了 CDAC 提供的资源，CDAC 是一个政府机构，它提供的印度语言工具是基于 ISCII 的，ISCII 是一个较早的国家标准，而印度语的 Unicode 标准就是基于这个标准。很难学习它的键盘布局。

### 我的第一次贡献

不久后，我遇到了一款名叫 [Yudit](http://www.yudit.org/) 的软件，它使用标准的 QWERTY 键盘布局来提供印地语的拼音输入。正是在通过 Yudit，我第一次遇到了诸如开源和自由软件、GNU 和 Linux 之类的术语。Yudit 也允许我把 UI 组件翻译成孟加拉语，当我将翻译提交给开发人员时，他很高兴地将它们合并到了下一个版本中，并在软件的 README 文件中称赞了我的功劳。

第一次看到一款应用程序的用户元素以我的母语呈现，我感到十分兴奋。此外，尽管对写代码的知识几乎为零，我依然能够为软件开发做出贡献。我继续为 Yudit 创建了一个从 ISCII 到 Unicode 的转换器，这个转换器还可以用于各种印度语言之间的直译。我还买了本 Linux 杂志，随刊附赠了一张 Knoppix 的免费 live CD，正是通过它我体验到了 Linux 桌面。

我面临的另一个问题是缺乏与 Unicode 兼容的 OpenType Bangla 字体。我使用的字体是共享软件，我需要为它支付许可费用。我在想，“为什么不尝试亲自开发呢？”在此过程中，我通过 [bengalinux.org](http://bengalinux.org)（后来更名为 Ankur 小组）接触到了分散在世界各地的孟加拉语使用者，他们正试图在 Linux 操作系统中使用孟加拉语。

我加入了他们的邮件列表，我们在内部与当局之间讨论了孟加拉语的 Unicode 和 OpenType 规范中的各种缺陷，然后在适当的时候进行了纠正。我的贡献是将传统的孟加拉字体转换为兼容 Unicode 的 OpenType 字体，翻译 UI 等。这个小组还发行了世界上第一张带有孟加拉语 UI 的 Live Linux CD。

2003 年，我搬家到了一个无法访问互联网的地方。我只有在周日去加尔各答时才能联系到小组。当时，Linux 的孟加拉语本地化已经成为了主流。我们的一些志愿者加入了 Red Hat 从事翻译和字体开发工作。我也忙于我的医疗工作，几乎没时间去进行开源开发。

如今，我觉得使用 Linux 做日常工作比其他任何操作系统都要舒服。我也为能与一个能让人们用自己的语言交流的项目联系在一起而感到自豪。它也为长期以来由于不会说英语而被认为处于“<ruby> 数字鸿沟 <rt>  digital divide </rt></ruby>”另一端的人们带来了计算能力。孟加拉语实际上是世界上使用最广泛的语言之一，这个项目消除了全球人口中很大一部分人接触数字科技的主要语言壁垒。

### 加入开源

加入到开源运动中来很容易。主动做一些对自己有用的事情，然后思索一下所做的事情如何能对他人也有帮助。关键在于使它免费可用，它可以给世界带来难以估量的价值。

---

via: <https://opensource.com/article/20/7/linux-bengali>

作者：[Dr Anirban Mitra](https://opensource.com/users/mitradranirban) 选题：[lujun9972](https://github.com/lujun9972) 译者：[JonnieWayy](https://github.com/JonnieWayy) 校对：[wxy](https://github.com/wxy)

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


Summary: • Google 以垃圾信息为由屏蔽了具有历史意义的编程语言类的用户组 • Cerberus 恶意软件团队解散， 10 万美元拍卖源代码 • 微软下载中心将于 8 月 3 日撤下基于 SHA-1 签名的内容

# #新闻拍一拍# Windows Defender 将 CCleaner 标记为“可能不需要的应用”

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

#### Windows Defender 将 CCleaner 标记为“可能不需要的应用”

CCleaner 是一款深受用户欢迎的电脑优化软件，不过近日在 Windows Defender 平台更新之后，该应用程序被认定为是可能不需要的应用程序（PUA）。CCleaner 基本上可以让你检查所有主要浏览器中的 cookie、缓存文件和下载文件来优化系统，并附带了一个功能完善的注册表清理器。Defender 给出的警报级别较低，但 CCleaner 并没有被检测到对系统的威胁，用户仍然可以手动允许该应用在系统上运行。

来源：[cnBeta.COM](https://www.cnbeta.com/articles/tech/1009431.htm)

>
> 拍一拍：用于清除“无用”垃圾的应用被微软反杀，这事怎么听起来这么嘲讽。
>
>
>

#### Google 以垃圾信息为由屏蔽了具有历史意义的编程语言类的用户组

多个具有历史意义的编程语言类的用户组（Usenet）comp.lang.forth 、comp.lang.lisp 和 comp.sys.sinclair 等遭到 Google 的屏蔽。Google 给出的理由是“您尝试看的群组（xxx）中已发现含有垃圾内容、恶意软件或其他恶意内容。

来源：[solidot](https://www.solidot.org/story?sid=65081)

>
> 拍一拍：一方面这些用户组是否已经过时太旧而充斥着垃圾内容？另外一方面，谷歌的这个处置是否太过于一刀切？
>
>
>

#### Cerberus 恶意软件团队解散， 10 万美元拍卖源代码

Cerberus 银行木马是一款专门针对安卓系统的恶意软件，首次出现于 2019 年 6 月。由于开发团队的解散，Cerberus 银行木马的维护者正在拍卖整个项目，起价为 50,000 美元，最终或将以双倍的价格完成交易。拍卖包括从源代码到客户清单的所有内容、以及安装指南和使组件协同工作的脚本。为了吸引潜在的竞标者，卖家在该帖子中声称，此 Android 恶意软件每月可产生 10,000 美元的利润。

来源：[开源中国](https://www.oschina.net/news/117570/cerberus-banking-trojan-source-code-for-sale)

>
> 拍一拍：这个价钱还真不贵，而且这种拍卖和传播也很阻止，只能说希望安卓系统及用户提高防范吧。
>
>
>

#### 微软下载中心将于 8 月 3 日撤下基于 SHA-1 签名的内容

如果使用基于 SHA-1 哈希算法签名的数字证书，则 Windows 用户很可能成为网络钓鱼或中间人攻击的受害者。自 2019 年 8 月起，不支持 SHA-2 的设备已无法接收到 Windows 更新。具体说来是，包括 Windows 7 SP1、Windows Server 2008 R2 SP1 和 Windows Server 2008 SP2 等在内的旧版操作系统软件客户，需在其设备上安装 SHA-2 代码签名支持包，才能接收到相应的更新。

来源：[cnBeta.COM](https://www.cnbeta.com/articles/tech/1009453.htm)

>
> 拍一拍：别说 MD5，连 SHA-1 都不安全了，计算能力和理论上的突破，让曾经安全的很多算法都不再可靠。
>
>
>


用 JavaScript 运行上世纪 90 年代的 Mac OS 8

Summary: 如果你想重温或看看上世纪 90 年代末使用的 Mac 是什么样子，那么现在有个机会。

# 用 JavaScript 运行上世纪 90 年代的 Mac OS 8

如果你想重温或看看上世纪 90 年代使用的 Mac 是什么样子，那么现在有个机会。Slack 开发者 Felix Rieseberg 将 Mac OS 8 改造成了一个可以安装在 Mac 或 PC 上的 Electron 应用。

[继 2018 年将 Windows 95 转化为应用](https://www.theverge.com/2018/8/23/17773180/microsoft-windows-95-app-download-features)后，Rieseberg 决定将 1991 年的 Macintosh Quadra 与 Mac OS 8.1 整个转化为一个 Electron 应用。该应用可以安装在 macOS、Windows 和 Linux 上。

它收录了一张 1997 年的 MacWorld 演示光盘中的许多游戏和应用的演示版，这包括《毁灭公爵 3D版》、《文明 2》、《龙与地下城》、《Namely》、《俄勒冈之路》、《Alley 19 Bowling》和《Damage Incorporated》等经典游戏，还有一些应用程序，如 Photoshop 3、Premiere 4、Illustrator 5.5、StuffIt 解压软件等等。

这个应用使用一个虚拟机来模拟 Macintosh Quadra 900，其 CPU 是苹果在过渡到 IBM 的 PowerPC 芯片之前使用的摩托罗拉 CPU。

Rieseberg 说，他是使用 JavaScript 编写的 Electron 应用，虽然效果看起来还可以，但是不要有过高的期望。有人尝试运行了《文明 2》，但是马上就崩溃了，总之，它可以作为娱乐和怀旧，但是显然不能用作正式的使用场合。

虽然这个应用里面预装了 Internet Explorer 和 Netscape，但由于这三十年来互联网发生了太多的变化，因此它不能访问互联网，Rieseberg 说“连 Google 都打不开”。但是，你可以将文件传输到该应用内，也可以挂载外部的磁盘镜像。不管怎么说，上世纪 90 年代版本的 Mac OS 被移植到 JavaScript 中运行，这让人印象深刻。

如果你有兴趣尝试这款应用，其独立版本都不到 250MB，可以[从 GitHub 下载](https://github.com/felixrieseberg/macintosh.js)。请再次享受，一次回忆之旅。


2020 年关于 Rust 你所需要知道的

# 2020 年关于 Rust 你所需要知道的

>
> 尽管许多程序员长期以来一直将 Rust 用于业余爱好项目，但正如许多有关 Rust 的热门文章所解释的那样，该语言在 2019 年吸引了主要技术公司的支持。
>
>
>

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

一段时间以来， [Rust](http://rust-lang.org/) 在诸如 Hacker News 之类的网站上引起了程序员大量的关注。尽管许多人一直喜欢在业余爱好项目中[使用该语言](https://insights.stackoverflow.com/survey/2019#technology-_-most-loved-dreaded-and-wanted-languages)，但直到 2019 年它才开始在业界流行，直到那会儿情况才真正开始有所转变。

在过去的一年中，包括[微软](https://youtu.be/o01QmYVluSw)、 [Facebook](https://youtu.be/kylqq8pEgRs) 和 [Intel](https://youtu.be/l9hM0h6IQDo) 在内的许多大公司都出来支持 Rust，许多[较小的公司](https://oxide.computer/blog/introducing-the-oxide-computer-company/)也注意到了这一点。2016 年，作为欧洲最大的 Rust 大会 [RustFest](https://rustfest.eu) 的第一任主持人，除了 Mozilla，我没见到任何一个人在工作中使用 Rust。三年后，似乎我在 RustFest 2019 所交流的每个人都在不同的公司的日常工作中使用 Rust，无论是作为游戏开发人员、银行的后端工程师、开发者工具的创造者或是其他的一些岗位。

在 2019 年， [Opensource.com](http://Opensource.com) 也通过报道 Rust 日益增长的受欢迎程度而发挥了作用。万一你错过了它们，这里是过去一年里 [Opensource.com](http://Opensource.com) 上关于 Rust 的热门文章。

### 《使用 rust-vmm 构建未来的虚拟化堆栈》

Amazon 的 [Firecracker](https://firecracker-microvm.github.io/) 是支持 AWS Lambda 和 Fargate 的虚拟化技术，它是完全使用 Rust 编写的。这项技术的作者之一 Andreea Florescu 在 《[使用 rust-vmm 构建未来的虚拟化堆栈](https://opensource.com/article/19/3/rust-virtual-machine)》中对 Firecracker 及其相关技术进行了深入探讨。

Firecracker 最初是 Google [CrosVM](https://chromium.googlesource.com/chromiumos/platform/crosvm/) 的一个分支，但是很快由于两个项目的不同需求而分化。尽管如此，在这个项目与其他用 Rust 所编写的虚拟机管理器（VMM）之间仍有许多得到了很好共享的通用片段。考虑到这一点，[rust-vmm](https://github.com/rust-vmm) 项目起初是以一种让 Amazon 和 Google、Intel 和 Red Hat 以及其余开源社区去相互共享通用 Rust “crates” （即程序包）的方式开始的。其中包括 KVM 接口（Linux 虚拟化 API）、Virtio 设备支持以及内核加载程序。

看到软件行业的一些巨头围绕用 Rust 编写的通用技术栈协同工作，实在是很神奇。鉴于这种和其他[使用 Rust 编写的技术堆栈](https://bytecodealliance.org/)之间的伙伴关系，到了 2020 年，看到更多这样的情况我不会感到惊讶。

### 《为何选择 Rust 作为你的下一门编程语言》

采用一门新语言，尤其是在有着建立已久技术栈的大公司，并非易事。我很高兴写了《[为何选择 Rust 作为你的下一门编程语言](https://opensource.com/article/19/10/choose-rust-programming-language)》，书中讲述了微软是如何在许多其他有趣的编程语言没有被考虑的情况下考虑采用 Rust 的。

选择编程语言涉及许多不同的标准——从技术上到组织上，甚至是情感上。其中一些标准比其他的更容易衡量。比方说，了解技术变更的成本（例如适应构建系统和构建新工具链）要比理解组织或情感问题（例如高效或快乐的开发人员将如何使用这种新语言）容易得多。此外，易于衡量的标准通常与成本相关，而难以衡量的标准通常以收益为导向。这通常会导致成本在决策过程中变得越来越重要，即使这不一定就是说成本要比收益更重要——只是成本更容易衡量。这使得公司不太可能采用新的语言。

然而，Rust 最大的好处之一是很容易衡量其编写安全且高性能系统软件的能力。鉴于微软 70% 的安全漏洞是由于内存安全问题导致的，而 Rust 正是旨在防止这些问题的，而且这些问题每年都使公司付出了几十亿美元的代价，所以很容易衡量并理解采用这门语言的好处。

是否会在微软全面采用 Rust 尚待观察，但是仅凭着相对于现有技术具有明显且可衡量的好处这一事实，Rust 的未来一片光明。

### 2020 年的 Rust

尽管要达到 C++ 等语言的流行度还有很长的路要走。Rust 实际上已经开始在业界引起关注。我希望更多公司在 2020 年开始采用 Rust。Rust 社区现在必须着眼于欢迎开发人员和公司加入社区，同时确保将推动该语言发展到现在的一切都保留下来。

Rust 不仅仅是一个编译器和一组库，而是一群想要使系统编程变得容易、安全而且有趣的人。即将到来的这一年，对于 Rust 从业余爱好语言到软件行业所使用的主要语言之一的转型至关重要。

---

via: <https://opensource.com/article/20/1/rust-resources>

作者：[Ryan Levick](https://opensource.com/users/ryanlevick) 选题：[lujun9972](https://github.com/lujun9972) 译者：[JonnieWayy](https://github.com/JonnieWayy) 校对：[wxy](https://github.com/wxy)

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


Summary: • 微软加入 Blender 开发基金 • Apache 软件基金会 2020 财年报告：总代码价值超 200 亿美元

# #新闻拍一拍# 安全启动功能曝出新漏洞，影响大量 Linux 与 Windows 系统

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

#### 安全启动功能曝出新漏洞，影响大量 Linux 与 Windows 系统

其命名为 BootHole，存在于安全启动的 GRUB2 文件中，攻击者可借此对受害者的系统实现“近乎完全的控制”。只要使用了标准的微软第三方 UEFI 证书授权，这些支持安全启动功能的设备都会受到 BootHole 漏洞的影响，包括大量的台式机、笔记本、工作站、服务器、以及其它相关技术领域。据悉，Eclypsium 将于 8 月 5 日举办一场网络研讨会。包括微软、UEFI 安全响应团队（USRT）、甲骨文、Canonical、Debian 等在内的相关方都会参与这场讨论，以期找到缓解该漏洞的方法。

来源：[cnBeta.COM](https://www.cnbeta.com/articles/tech/1009469.htm)

>
> 拍一拍：推行了好多年的安全启动不安全，这是这件事里面最麻烦的地方。
>
>
>

#### 微软加入 Blender 开发基金

微软宣布加入 Blender 基金会的开发基金，成为企业金级会员。此前法国游戏公司育碧也以企业金级会员的身份加入了该基金。微软使用 Blender 生成人的 3D 模型和图像，将其用于训练 AI 模型。研究人员使用开源自由软件 3D 软件被证明能对科学项目带来巨大的好处。

来源：[solidot](https://www.solidot.org/story?sid=65096)

>
> 拍一拍：微软越来越习惯尽到一个大公司对开源的“义务”了
>
>
>

#### Apache 软件基金会 2020 财年报告：总代码价值超 200 亿美元

2020 财年，Apache 软件基金会达成了以下主要成就：添加了约 800 万行 Apache 代码，价值约 6 亿美元；总代码价值超过 200 亿美元；Apache 资料库中共管理着超过 2.27 亿行代码；超过 7,700 名代码提交者；206 个顶级社区，监督 339 个以上的 Apache 项目，以及数十个子项目和计划，等等。

来源：[开源中国](https://www.oschina.net/news/117590/asf-fy2020-annual-report)

>
> 拍一拍：Apache 之道大行其道。
>
>
>


适于初学者的基于终端的文本编辑器 GNU Nano 5.0 版发布

# 适于初学者的基于终端的文本编辑器 GNU Nano 5.0 版发布

>
> 开源文本编辑器 GNU nano 已经达到了 5.0 版本的里程碑。看看这个新版本带来了哪些功能。
>
>
>

Linux 上有很多[基于终端的文本编辑器](https://itsfoss.com/nano-editor-guide/)。像 Emacs 和 Vim 这样的编辑器需要经历陡峭的学习曲线和掌握一堆不寻常的键盘快捷键，但公认 GNU nano 更容易使用。

也许这就是为什么 Nano 是 Ubuntu 和许多其他发行版中默认的基于终端的文本编辑器的原因，而即将发布的 [Fedora 33 版本](https://itsfoss.com/fedora-33/)也将把 Nano 设置为终端的默认文本编辑器。

### GNU nano 5.0 的新功能

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

在 GNU nano 5.0 的[变更日志](https://www.nano-editor.org/news.php)中提到的一些主要亮点是：

* `-indicator` 选项将在屏幕右侧显示一种滚动条，以指示视口在缓冲区中的位置和覆盖范围。
* 可以用 `Alt+Insert` 键标记行，你可以用 `Alt+Page` 和 `Alt+PageDown` 键跳转到这些标记的行。
* 执行命令提示符现在可以直接从主菜单中访问。
* 在支持至少 256 种颜色的终端上，有新的颜色可用。
* 新的 `-bookstyle` 模式，任何以空格开头的行都会被认为是一个段落的开始。
* 用 `^L` 刷新屏幕现在在每个菜单中都可以使用。它还会将行与光标居中。
* 可绑定函数 `curpos` 已经改名为 `location`，长选项 `-tempfile` 已经改名为 `-saveonexit`，短选项 `-S` 现在是 `-softwrap` 的同义词。
* 备份文件将保留其组的所有权（如果可能的话）。
* 数据会在显示 “……行写入” 之前同步到磁盘。
* 增加了 Markdown、Haskell 和 Ada 语法的支持。

### 获取 GNU nano 5.0

目前 Ubuntu 20.04 中的 nano 版本是 4.8，而在这个 LTS 版本中，你不太可能在短时间内获得新版本。如果 Ubuntu 有新版本的话，你应该会通过系统更新得到它。

Arch 用户应该会比其他人更早得到它，就像往常一样。其他发行版也应该迟早会提供新版本。

如果你是少数喜欢[从源代码安装软件](https://itsfoss.com/install-software-from-source-code/)的人，你可以从它的[下载页面](https://www.nano-editor.org/download.php)中获得。

如果你是新手，我强烈推荐这篇 [Nano 编辑器初学者指南](https://itsfoss.com/nano-editor-guide/)。

你喜欢这个新版本吗？你期待使用 Nano 5 吗？

---

via: <https://itsfoss.com/nano-5-release/>

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

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


每周开源点评：定义云原生、拓展生态系统，以及更多的行业趋势

Summary: 每周关注开源社区和行业趋势。

每周关注开源社区和行业趋势。

# 每周开源点评：定义云原生、拓展生态系统，以及更多的行业趋势

>
> 每周关注开源社区和行业趋势。
>
>
>

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

我在一家采用开源软件开发模型的企业软件公司任高级产品营销经理，我的一部分职责是为产品营销人员、经理和其他相关人定期发布有关开源社区、市场和业界发展趋势的更新。以下是该更新中我和他们最喜欢的几篇文章。

### 《随着云原生计算的兴起，它和代码一样在改变文化》

* [文章链接](https://siliconangle.com/2020/07/18/cloud-native-computing-rises-transforming-culture-much-code/)

>
> 现在是围绕一套云原生计算的共同原则进行行业整合的时候了，因为许多企业已经意识到，他们最初进入云计算的回报有限。国际数据公司去年的一项调查发现，[80% 的受访者曾将工作负载从公有云环境遣返到企业内部](https://www.networkworld.com/article/3400872/uptick-in-cloud-repatriation-fuels-rise-of-hybrid-cloud.html)，平均而言，他们预计在未来两年内将一半的公有云应用转移到私有场所。
>
>
>

**分析**：在云端的第一次运行主要是大量的“提升和转移”尝试，以提取工作负载并将其投放到云端。第二次运行将涉及更多的工作，以确定转移什么以及如何转移，但随着开发人员对理所当然的事情越来越满意，最终应该会带来更多价值。

### 《为什么云原生基础设施的自动化是所有参与者的胜利》

* [文章链接](https://thenewstack.io/why-automating-for-cloud-native-infrastructures-is-a-win-for-all-involved/)

>
> 开发的圣杯是创建和维护安全的应用程序，产生强大的投资回报率和满意的客户。但如果这种开发不是高效、高速和可扩展的，那么这个圣杯很快就会变得遥不可及。如果你发现自己对当前的基础设施有更高的期望，那么可能是时候考虑云原生了。它不仅可以检查所有这些机器，而且为云原生基础设施进行自动化可以提高效率和结果。
>
>
>

**分析**：我还要补充一点，如果没有大量的自动化，真正采用云原生方法是不可能的；涉及的移动部件数量太多，不可能用人的头脑来处理。

### 《Linkerd 案例研究：满足安全要求、减少延迟和从 Istio 迁移》

* [文章链接](https://www.cncf.io/blog/2020/07/21/linkerd-case-studies-meeting-security-requirements-reducing-latency-and-migrating-from-istio/)

>
> 最后，Subspace 分享了其使用 Linkerd 提供“光速”多人游戏的经验。虽然在超低延迟环境中使用服务网状物起初似乎有悖常理，但 Subspace 发现 Linkerd 的战略使用实际上降低了总延迟 —— 服务网状物是如此轻巧，以至于它增加的最小延迟被它通过可观察性降低的延迟所掩盖。简而言之，Linkerd 的这一独特用例使 Subspace 在运营结果上获得了巨大的净收益。[阅读完整的用户故事](https://buoyant.io/case-studies/subspace/)。
>
>
>

**分析**：我听说过这样一个观点：你并不能真正降低一个系统的复杂性，你只是把它抽象化，改变它的接触对象。似乎对延迟也有类似的观察：如果你仔细选择你接受延迟的地方，你可以因此减少系统中其他地方的延迟。

### 一位高层管理人员解释了 IBM 的“重要支点”，以赢得开发者、初创企业和合作伙伴的青睐，这是其从微软等竞争对手手中赢得混合云市场计划的一部分

* [文章链接](https://www.businessinsider.com/ibm-developers-tech-ecosystem-red-hat-hybrid-cloud-bob-lord-2020-7?r=AU&IR=T)

>
> 蓝色巨人正在转向一个新的战略，专注于建立一个由开发者、合作伙伴和初创公司组成的生态系统。“我们的服务组织无法接触到所有客户。获取这些客户的唯一方法是激活一个生态系统。”
>
>
>

**分析**：越来越多的公司开始接受这样的理念：有些客户的问题，他们没有帮助就无法解决。也许这可以减少从每个单独客户身上赚到的钱，因为它扩大了更广泛地参与更多问题空间的机会。

希望你喜欢这个列表，下周再见。

---

via: <https://opensource.com/article/20/7/cloud-native-expanding-and-more-industry-trends>

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


国王的秘密：如何保护你的主密码

# 国王的秘密：如何保护你的主密码

>
> 这种使用 Python 和 Shamir 秘密共享的独特算法可以保护你的主密码，可以有效避免黑客窃取和自己不经意忘记引发的风险和不便。
>
>
>

很多人使用密码管理器来保密存储自己在用的各种密码。密码管理器的关键环节之一是主密码，主密码保护着所有其它密码。这种情况下，主密码本身就是风险所在。任何知道你的主密码的人，都可以视你的密码保护若无物，畅行无阻。自然而然，为了保证主密码的安全性，你会选用很难想到的密码，把它牢记在脑子里，并做[所有其他](https://monitor.firefox.com/security-tips)你应该做的事情。

但是万一主密码泄露了或者忘记了，后果是什么？也许你去了个心仪的岛上旅行上个把月，没有现代技术覆盖，在开心戏水之后享用美味菠萝的时刻，突然记不清自己的密码是什么了。是“山巅一寺一壶酒”？还是“一去二三里，烟村四五家”？反正当时选密码的时候感觉浑身都是机灵，现在则后悔当初何必作茧自缚。

*（[XKCD](https://imgs.xkcd.com/comics/password_strength.png), [CC BY-NC 2.5](https://creativecommons.org/licenses/by-nc/2.5/)）*

当然，你不会把自己的主密码告诉其它任何人，因为这是密码管理的首要原则。有没有其它变通的办法，免除这种难以承受的密码之重？

试试 <ruby>   Shamir 秘密共享算法  <rt>  Shamir's Secret Sharing </rt></ruby>，这是一种可以将保密内容进行分块保存，且只能将片段拼合才能恢复保密内容的算法。

先分别通过一个古代的和一个现代的故事，看看 Shamir 秘密共享算法究竟是怎么回事吧。

这些故事的隐含前提是你对密码学有起码的了解，必要的话，你可以先温习一下 [密码学与公钥基础设施引论](https://opensource.com/article/18/5/cryptography-pki).

### 一个古代关于加解密的故事

古代某国，国王有个大秘密，很大很大的秘密：

```
def int_from_bytes(s):
    acc = 0
    for b in s:
        acc = acc * 256
        acc += b
    return acc

secret = int_from_bytes("terrible secret".encode("utf-8"))

```

大到连他自己的孩子都不能轻易信任。他有五个子女，但他知道前路危机重重。他的孩子需要在他百年之后用这个秘密来保卫国家，而国王又不能忍受自己的孩子在他们还记得自己的时候就知道这些秘密，尤其是这种状态可能要持续几十年。

所以，国王动用大力魔术，将这个秘密分为了五个部分。他知道，可能有一两个孩子不会遵从他的遗嘱，但绝对不会同时有三个或三个以上会这样：

```
from mod import Mod
from os import urandom

```

国王精通 [有限域](https://en.wikipedia.org/wiki/Finite_field) 和 *随机* 魔法，当然，对他来说，使用巨蟒分割这个秘密也是小菜一碟。

第一步是选择一个大质数——第 13 个 [梅森质数](https://en.wikipedia.org/wiki/Mersenne_prime)（`2**521 - 1`），他让人把这个数铸造在巨鼎上，摆放在大殿上：

```
P = 2**521 - 1

```

但这不是要保密的秘密：这只是 *公开数据*。

国王知道，如果 `P` 是一个质数，用 `P` 对数字取模，就形成了一个数学 [场](https://en.wikipedia.org/wiki/Field_(mathematics))：在场中可以自由进行加、减、乘、除运算。当然，做除法运算时，除数不能为 0。

国王日理万机，方便起见，他在做模运算时使用了 PyPI 中的 [mod](https://pypi.org/project/mod/) 模块，这个模块实现了各种模数运算算法。

他确认过，自己的秘密比 `P` 要短：

```
secret < P

```

```
TRUE

```

将秘密转换为 `P` 的模，`mod P`：

```
secret = mod.Mod(secret, P)

```

为了使任意三个孩子掌握的片段就可以重建这个秘密，他还得生成另外两个部分，并混杂到一起：

```
polynomial = [secret]
for i in range(2):
    polynomial.append(Mod(int_from_bytes(urandom(16)), P))
len(polynomial)

```

```
3

```

下一步就是在随机选择的点上计算某 [多项式](https://en.wikipedia.org/wiki/Polynomial) 的值，即计算 `polynomial[0] + polynomial[1]*x + polynomial[2]*x**2 ...`。

虽然有第三方模块可以计算多项式的值，但那并不是针对有限域内的运算的，所以，国王还得亲自操刀，写出计算多项式的代码：

```
def evaluate(coefficients, x):
    acc = 0
    power = 1
    for c in coefficients:
        acc += c * power
        power *= x
    return acc

```

再下一步，国王选择五个不同的点，计算多项式的值，并分别交给五个孩子，让他们各自保存一份：

```
shards = {}
for i in range(5):
    x = Mod(int_from_bytes(urandom(16)), P)
    y = evaluate(polynomial, x)
    shards[i] = (x, y)

```

正如国王所虑，不是每个孩子都正直守信。其中有两个孩子，在他尸骨未寒的时候，就想从自己掌握的秘密片段中窥出些什么，但穷极所能，终无所获。另外三个孩子听说了这个事，合力将这两人永远驱逐：

```
del shards[2]
del shards[3]

```

二十年弹指一挥间，奉先王遗命，三个孩子将合力恢复出先王的大秘密。他们将各自的秘密片段拼合在一起：

```
retrieved = list(shards.values())

```

然后是 40 天没日没夜的苦干。这是个大工程，他们虽然都懂些 Python，但都不如前国王精通。

最终，揭示秘密的时刻到了。

用于反算秘密的代码基于 [拉格朗日差值](https://www.math.usm.edu/lambers/mat772/fall10/lecture5.pdf)，它利用多项式在 `n` 个非 0 位置的值，来计算其在 `0` 处的值。前面的 `n` 指的是多项式的阶数。这个过程的原理是，可以为一个多项式找到一个显示方程，使其满足：其在 `t[0]` 处的值是 `1`，在 `i` 不为 `0` 的时候，其在 `t[i]` 处的值是 `0`。因多项式值的计算属于线性运算，需要计算 *这些* 多项式各自的值，并使用多项式的值进行插值：

```
from functools import reduce
from operator import mul

def retrieve_original(secrets):
    x_s = [s[0] for s in secrets]
    acc = Mod(0, P)
    for i in range(len(secrets)):
        others = list(x_s)
        cur = others.pop(i)
        factor = Mod(1, P)
        for el in others:
            factor *= el * (el - cur).inverse()
        acc += factor * secrets[i][1]
    return acc

```

这代码是在太复杂了，40 天能算出结果已经够快了。雪上加霜的是，他们只能利用五个秘密片段中的三个来完成这个运算，这让他们万分紧张：

```
retrieved_secret = retrieve_original(retrieved)

```

后事如何？

```
retrieved_secret == secret

```

```
TRUE

```

数学这个魔术的优美之处就在于它每一次都是那么靠谱，无一例外。国王的孩子们，曾经的孩童，而今已是壮年，足以理解先王的初衷，并以先王的锦囊妙计保卫了国家，并继之以繁荣昌盛！

### 关于 Shamir 秘密共享算法的现代故事

现代，很多人都对类似的大秘密苦不堪言：密码管理器的主密码！几乎没有谁能有足够信任的人去完全托付自己最深的秘密，好消息是，找到至少有三个不会串通起来搞鬼的五人组不是个太困难的事。

同样是在现代，比较幸运的是，我们不必再像国王那样自己动手分割要守护的秘密。拜现代 *开源* 技术所赐，这都可以使用现成的软件完成。

假设你有五个不敢完全信任，但还可以有点信任的人：张三、李四、王五、赵六和钱大麻子。

安装并运行 `ssss` 分割密钥：

```
$ echo 'long legs travel fast' | ssss-split -t 3 -n 5
Generating shares using a (3,5) scheme with dynamic security level.
Enter the secret, at most 128 ASCII characters: Using a 168 bit security level.
1-797842b76d80771f04972feb31c66f3927e7183609
2-947925f2fbc23dc9bca950ef613da7a4e42dc1c296
3-14647bdfc4e6596e0dbb0aa6ab839b195c9d15906d
4-97c77a805cd3d3a30bff7841f3158ea841cd41a611
5-17da24ad63f7b704baed220839abb215f97d95f4f8

```

这确实是个非常牛的主密码：`long legs travel fast`，绝不能把它完整的托付给任何人！那就把五个片段分别交给还比较可靠的伙伴，张三、李四、王五、赵六和钱大麻子。

* 把 `1` 给张三。
* 把 `2` 给李四。
* 把 `3` 给王五。
* 把 `4` 给赵六。
* 把 `5` 给钱大麻子。

然后，你开启你的惬意之旅，整整一个月，流连于海边温暖的沙滩，整整一个月，没碰过任何电子设备。没用多久，把自己的主密码忘到了九霄云外。

李四和王五也在和你一起旅行，你托付给他们保管的密钥片段保存的好好的，在他们各自的密码管理器中，但不幸的是，他们和你一样，也忘了自己的 *主密码*。

没关系。

联系张三，他保管的密钥片段是 `1-797842b76d80771f04972feb31c66f3927e7183609`；赵六，一直替你的班，很高兴你能尽快重返岗位，把自己掌握的片段给了你，`4-97c77a805cd3d3a30bff7841f3158ea841cd41a611`；钱大麻子，收到你给的跑腿费才将自己保管的片段翻出来发给你，`5-17da24ad63f7b704baed220839abb215f97d95f4f8`。

有了这三个密钥片段，运行:

```
$ ssss-combine -t 3
Enter 3 shares separated by newlines:
Share [1/3]: 1-797842b76d80771f04972feb31c66f3927e7183609
Share [2/3]: 4-97c77a805cd3d3a30bff7841f3158ea841cd41a611
Share [3/3]: 5-17da24ad63f7b704baed220839abb215f97d95f4f8
Resulting secret: long legs travel fast

```

就这么简单，有了 *开源* 技术加持，你也可以活的像国王一样滋润！

### 自己的安全不是自己一个人的事

密码管理是当今网络生活必备技能，当然要选择复杂的密码，来保证安全性，但这不是全部。来用 Shamir 秘密共享算法，和他人共同安全的存储你的密码吧。

---

via: <https://opensource.com/article/20/6/python-passwords>

作者：[Moshe Zadka](https://opensource.com/users/moshez) 选题：[lujun9972](https://github.com/lujun9972) 译者：[silentdawn-zz](https://github.com/silentdawn-zz) 校对：[wxy](https://github.com/wxy)

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


#新闻拍一拍# GitHub 开发者自制火星车，教程全面开源

Summary: • IBM 完成全同态加密的实地测试 • 可拆卸更换键位，System76 的 Linux 键盘原型浮现

# #新闻拍一拍# GitHub 开发者自制火星车，教程全面开源

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

#### GitHub 开发者自制火星车，教程全面开源

这款 3D 打印的移动机器人在设计上参考了美国宇航局的“好奇号” 火星车，它不仅可以在坑坑洼洼的沙地上顺畅行驶。作者表示，项目仍需要进行大量调整才能使开放源代码版本更加完善，基于目前的基础平台，任何有经验的技术人员都可以进一步参与构建它，至于什么时候能拥有，或许需要一年，或者更长时间。

来源：[雷锋网](https://www.cnbeta.com/articles/tech/1010187.htm)

>
> 拍一拍：开源的力量。
>
>
>

#### IBM 完成全同态加密的实地测试

IBM 透露它成功完成了全同态加密的实地测试，为一家美国大型银行和一家欧洲大型银行执行了全同态加密的实地测试。全同态加密（FHE）允许对密文进行特定的代数运算得到仍然是加密的结果，与对明文进行同样的运算再将结果加密一样。这项技术可以在加密的数据中进行检索、比较等操作，整个处理过程中无需对数据进行解密。同态加密技术从根本上解决将数据及其操作委托给第三方时的保密问题。

来源：[solidot](https://www.solidot.org/story?sid=65114)

>
> 拍一拍：很有价值的方向，不过距离更多的使用场景还有一定距离。
>
>
>

#### 可拆卸更换键位，System76 的 Linux 键盘原型浮现

该键盘的开发已进入了原型制作阶段，System76 透露了有关键盘的整体构想和更多细节。他们以 U 为单位，将键位分为三种大小：1U（字母/数字键），1.5U（例如 Tab 键）和 2U（例如 Shift 键）。空格键则被分解为两个 2U 键。这款 Linux 键盘上的键位可物理更换，例如将 Backspace 放在 Space 旁边。根据 System76 的计划，新键盘将能够与 Pop!\_OS 上的 Auto-Tiling 完美契合。

来源：[开源中国](https://www.oschina.net/news/117602/system76-reimagining-the-keyboard)

>
> 拍一拍：键盘也该有点新意了，期待看到新的产品出现。
>
>
>


如何使用 Squid 配置 SSH 代理服务器

# 如何使用 Squid 配置 SSH 代理服务器

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

有时你无法从本地连接到 SSH 服务器。还有时，你可能想为 SSH 连接添加额外的安全层。在这些情况下，通过代理服务器连接到 SSH 服务器是一种解决方式。

[Squid](http://www.squid-cache.org/) 是提供缓存和代理服务的全功能代理服务器应用。它通常用于在浏览过程中重用和缓存以前请求的网页来帮助缩短响应时间并减少网络带宽。

但是在本篇中，你将配置 Squid 作为 SSH 代理服务器，因为它是强大的受信任代理服务器，易于配置。

### 安装和配置

使用 [sudo](https://fedoramagazine.org/howto-use-sudo/) 安装 squid 软件包：

```
$ sudo dnf install squid -y

```

squid 配置文件非常庞大，但是我们只需要配置其中一些。Squid 使用访问控制列表来管理连接。

编辑 `/etc/squid/squid.conf` 文件，确保你有下面解释的两行。

首先，指定你的本地 IP 网络。默认配置文件已经列出了最常用的，但是如果没有，你需要添加你的配置。例如，如果你的本地 IP 网络范围是 192.168.1.X，那么这行会是这样：

```
acl localnet src 192.168.1.0/24

```

接下来，添加以下行，将 SSH 端口添加为安全端口：

```
acl Safe_ports port 22

```

保存该文件。现在启用并重启 squid 代理服务：

```
$ sudo systemctl enable squid
$ sudo systemctl restart squid

```

squid 代理默认监听 3128 端口。配置 firewalld 允许此服务：

```
$ sudo firewall-cmd --add-service=squid --perm
$ sudo firewall-cmd --reload

```

### 测试 ssh 代理连接

要通过 ssh 代理服务器连接到服务器，我们将使用 `netcat`。

如果尚未安装 `nmap-ncat`，请安装它：

```
$ sudo dnf install nmap-ncat -y

```

这是标准 ssh 连接示例：

```
$ ssh user@example.com

```

这是使用 squid 代理服务器作为网关连接到该服务器的方式。

此示例假定 squid 代理服务器的 IP 地址为 192.168.1.63。你还可以使用 squid 代理服务器的主机名或 FQDN：

```
$ ssh user@example.com -o "ProxyCommand nc --proxy 192.168.1.63:3128 %h %p"

```

以下是这些选项的含义：

* `ProxyCommand` – 告诉 ssh 使用代理命令。
* `nc` – 用于建立与代理服务器连接的命令。这是 netcat 命令。
* `%h` – 代理服务器的主机名或 IP 地址的占位符。
* `%p` – 代理服务器端口号的占位符。

有很多方法可以配置 SSH 代理服务器，但这是入门的简单方法。

---

via: <https://fedoramagazine.org/configure-ssh-proxy-server/>

作者：[Curt Warfield](https://fedoramagazine.org/author/rcurtiswarfield/) 选题：[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/) 荣誉推出


实用脚本：检查高 CPU / 内存消耗进程

赞

# 实用脚本：检查高 CPU / 内存消耗进程

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

过去，我们写了三篇不同的文章来使用 Linux 命令来识别这些进程。

你可以通过下面相关的 URL 立即访问：

* [如何在 Linux 中找出 CPU 占用高的进程](/article-11678-1.html)
* [如何在 Linux 中找出内存消耗最大的进程](/article-11542-1.html)
* [在 Linux 中如何查找一个命令或进程的执行时间](/article-10261-1.html)

本教程中包含两个脚本，它们可以帮助你确定 Linux 上高 CPU/内存消耗进程的运行时间。

该脚本将显示进程 ID、进程的所有者、进程的名称以及进程的运行时间。这将帮助你确定哪些（必须事先完成）作业正在超时运行。这可以使用 `ps` 命令来实现。

### 什么是 ps 命令

`ps` 是<ruby> 进程状态 <rt>  processes status </rt></ruby>，它显示有关系统上活动/正在运行的进程的信息。

它提供了当前进程的快照以及详细信息，例如用户名、用户 ID、CPU 使用率、内存使用率、进程开始日期和时间等。

#### 1）检查高 CPU 消耗进程在 Linux 上运行了多长时间的 Bash 脚本

该脚本将帮助你确定高 CPU 消耗进程在 Linux 上运行了多长时间。

```
# vi /opt/scripts/long-running-cpu-proc.sh

#!/bin/bash
ps -eo pid,user,ppid,%mem,%cpu,cmd --sort=-%cpu | head | tail -n +2 | awk '{print $1}' > /tmp/long-running-processes.txt
echo "--------------------------------------------------"
echo "UName     PID  CMD            Process_Running_Time"
echo "--------------------------------------------------"
for userid in `cat /tmp/long-running-processes.txt`
do
username=$(ps -u -p $userid | tail -1 | awk '{print $1}')
pruntime=$(ps -p $userid -o etime | tail -1)
ocmd=$(ps -p $userid | tail -1 | awk '{print $4}')
echo "$username $userid $ocmd $pruntime"
done | column -t
echo "--------------------------------------------------"

```

给 `long-running-cpu-proc.sh` 设置可执行的 [Linux 文件权限](https://www.2daygeek.com/understanding-linux-file-permissions/)。

```
# chmod +x /opt/scripts/long-running-cpu-proc.sh

```

运行此脚本时，你将获得类似以下的输出：

```
# sh /opt/scripts/long-running-cpu-proc.sh

----------------------------------------------------
UName     PID  CMD       Process_Running_Time
----------------------------------------------------
daygeek  5214  Web       01:18:48
daygeek  5748  Web       01:08:20
daygeek  8043  inkscape  22:11
daygeek  5269  Web       01:18:31
daygeek  1712  Web       10:44:50
daygeek  5335  RDD       01:17:54
daygeek  1639  firefox   10:44:51
daygeek  7793  nautilus  24:14
daygeek  6301  Web       57:40
----------------------------------------------------

```

#### 2）检查高内存消耗进程在 Linux 上运行了多长时间的 Bash 脚本

该脚本将帮助你确定最大的内存消耗进程在 Linux 上运行了多长时间。

```
# sh /opt/scripts/long-running-memory-proc.sh

#!/bin/bash
ps -eo pid,user,ppid,%mem,%cpu,cmd --sort=-%mem | head | tail -n +2 | awk '{print $1}' > /tmp/long-running-processes-1.txt
echo "--------------------------------------------------"
echo "UName     PID  CMD          Process_Running_Time"
echo "--------------------------------------------------"
for userid in `cat /tmp/long-running-processes-1.txt`
do
username=$(ps -u -p $userid | tail -1 | awk '{print $1}')
pruntime=$(ps -p $userid -o etime | tail -1)
ocmd=$(ps -p $userid | tail -1 | awk '{print $4}')
echo "$username $userid $ocmd $pruntime"
done | column -t
echo "--------------------------------------------------"

```

给 `long-running-memory-proc.sh` 设置可执行的 Linux 文件权限。

```
# chmod +x /opt/scripts/long-running-memory-proc.sh

```

运行此脚本时，你将获得类似以下的输出：

```
# sh /opt/scripts/long-running-memory-proc.sh

----------------------------------------------------
UName    PID   CMD       Process_Running_Time
----------------------------------------------------
daygeek  1639  firefox   10:44:56
daygeek  2997  Web       10:39:54
daygeek  5269  Web       01:18:37
daygeek  1712  Web       10:44:55
daygeek  8043  inkscape  22:17
daygeek  5214  Web       01:18:54
daygeek  1898  Web       10:44:48
daygeek  1129  Xorg      10:45:07
daygeek  6301  Web       57:45
----------------------------------------------------

```

---

via: <https://www.2daygeek.com/bash-script-to-check-how-long-the-high-cpu-memory-consumption-processes-runs-on-linux/>

作者：[Magesh Maruthamuthu](https://www.2daygeek.com/author/magesh/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[校对者ID](https://github.com/%E6%A0%A1%E5%AF%B9%E8%80%85ID)

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


#新闻拍一拍# 华为成为全球第一大智能手机公司

Summary: • Chrome、Edge 保持增长，火狐份额受损

对，火狐才是最应该支持的

来自119.28.119.30的 Firefox 79.0|Windows 7 用户

火狐多好用啊！<br />
现在有的网站居然只支持WebKit内核的浏览器了！

• Chrome、Edge 保持增长，火狐份额受损

# #新闻拍一拍# 华为成为全球第一大智能手机公司

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

#### 华为成为全球第一大智能手机公司

今天，华为正式超越三星，完成其长期目标，此前华为已经在 2019 年确保了领先位置。Canalys 提供的数据显示，实现这一目标主要是因为三星在本季度录得的巨大跌幅。更具体地说，华为在全球的手机出货量同比下降了 5%，但另一方面，三星在移动行业的销量几乎崩溃，与 2019 年同期相比，下降幅度不低于30%。在该季度售出的手机中，不少于 72% 的手机是卖给中国买家的，而剩下的 28% 则是由世界其他地区的客户购买的。

>
> 拍一拍：对手嫉恨的就是我们要做的。
>
>
>

#### Chrome、Edge 保持增长，火狐份额受损

NetMarketShare 的 2020 年 7 月数据显示，Chrome 的市场份额从 70.19% 增加到 71.00%，而 Edge 则从 8.07% 跃升到 8.46%。与此同时，火狐浏览器从 7.58% 下降到 7.27%。火狐浏览器的下滑速度其实非常快，已经失去了第二名的位置。

来源：[softpedia](https://news.softpedia.com/news/google-chrome-microsoft-edge-keep-growing-firefox-is-the-main-victim-530701.shtml)

>
> 拍一拍：其实火狐才是我们真正该支持的！
>
>
>


屡屡失败犯错的我为什么没有被开除

Summary: 我是词典里 “失败” 一词旁边的插图，这就是为什么我擅长我的工作的原因。

我是词典里 “失败” 一词旁边的插图，这就是为什么我擅长我的工作的原因。

# 屡屡失败犯错的我为什么没有被开除

>
> 我是词典里 “失败” 一词旁边的插图，这就是为什么我擅长我的工作的原因。
>
>
>

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

我的职称是高级软件工程师，但我最亲近的同事并不这么称呼我。由于我摧毁一切，他们管我叫“樱桃炸弹”（正巧我姓“樱桃”）。我定期会遇到的失败已经可以影响到我们的季度性收益和停机时间。简单的来说，我就是你所听说过的生产灾难：“别动，啥都别做，无论何时何地。”

我的职业生涯始于支持服务台，在那里我写了一些循环，破坏了高端客户的服务器。我曾在没有警告的情况下将生产应用程序关闭了长达八个小时，并且在试图使得情况好转的过程中摧毁了无数个集群，有几次只是因为我打错了字。

我是我们在 [Kubernetes](https://www.redhat.com/en/topics/containers/what-is-kubernetes) 中设有灾难恢复（DR）集群的原因。我是个混乱的工程师，我们有一个应用程序，它的故障恢复计划还从未测试过，而我在没有警告的情况下，就教人们如何快速行动和排除故障。我作为可能失败的最好例子而存在，这实际上是有史以来最酷的事情。

### 我和消失的 K8s 集群

我的正式职责之一涉及到我们的应用架构。对于任何形式的架构改动，我都要进行代码的编写与测试，看看有什么可能性。近来，据说这成了我老板史诗级的痛苦，这只是轻描淡写。

我们在 Kubernetes 上运行我们的大多数基础架构，Kubernetes 以其弹性著称。尽管有这样的声誉，我还是使得两个集群，好吧，消失了。你可能会好奇我是怎么做到的，很容易，`terraform destroy`。我们通过 [Terraform](https://github.com/hashicorp/terraform) 以代码的方式管理我们的基础架构，并且不需要任何软件知识就知道 `destroy` 可做坏事。在你惊慌失措之前，好吧，是开发集群，所以我还活着。

鉴于此，你们肯定会问我为什么还没丢掉饭碗，以及为什么我要写下这些事情。这很好回答：我仍然有工作，是因为我更新的基础架构代码比起起初的代码工作得更好更快了。我写下这些是因为每个人都会经常性地遭遇失败，这是非常非常正常的。如果你没有时不时遭遇失败，我认为你并没有足够努力地学习。

### 破坏东西并培训人们

你可能还会认为永远不会有人让我去培训任何人。那是最糟糕的主意，因为（就像我的团队开玩笑说的）你永远都不应该做我所做的事情。但是我的老板却让我定期去训练新人。我甚至为整个团队提供使用我们的基础设施或代码的培训，教人们如何建立自己的基础设施。

原因是这样的：失败是你迈向成功的第一步。失败的教训绝不只是“备份是个绝佳的主意”。不，从失败中，你学会了更快地恢复、更快地排除故障并且在你工作中取得惊人的进步。当你在工作中变得惊人的时候，你就可以培训其他人，教给他们什么事情不要做，并且帮助他们去理解一切是如何工作的。由于你的经验，他们会比你开始时更进一步 —— 而且他们也很可能以新的、惊人的、史诗般的方式失败，每个人都可以从中学到东西。

### 你的成功取决于你的失败

没有人生来就具有软件工程和云基础架构方面的天赋，就像没有人天生就会走路。我们都是从滚动和翻爬开始的。从那时起，我们学会爬行，然后能够站立一会儿。当我们开始走路后，我们会跌倒并且擦伤膝盖，撞到手肘，还有，比如像我哥哥，走着走着撞上桌子的尖角，然后在眉毛中间缝了针。

凡事都需要时间去学习。一路上阅读手边能获得的一切来帮助你，但这永远只是个开始。完美是无法实现的幻想，你必须通过失败来取得成功。

每走一步，我的失败都教会我如何把事情做得更好。

最终，你的成功和你累积的失败一样多，这标志着你成功的程度。

---

via: <https://opensource.com/article/20/3/failure-driven-development>

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

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


Video Trimmer：Linux 桌面中的傻瓜级的视频修剪应用

Summary: 一个非常简单的工具，无需重新编码即可快速修剪视频。我们来看看它提供了什么。

一个非常简单的工具，无需重新编码即可快速修剪视频。我们来看看它提供了什么。

# Video Trimmer：Linux 桌面中的傻瓜级的视频修剪应用

>
> 一个非常简单的工具，无需重新编码即可快速修剪视频。我们来看看它提供了什么。
>
>
>

你可能已经知道 Linux 的一些[最佳免费视频编辑器](https://itsfoss.com/open-source-video-editors/)，但并不是每个人都需要它们提供的所有功能。

有时，你只想快速执行一项操作，例如修剪视频。你是选择探索功能完善的视频编辑器但只是执行简单的修剪操作，还是希望使用便捷工具来修剪视频？

当然，这取决于你的个人喜好以及处理视频的方式。但是，对于大多数用户而言，首选是使用非常容易使用的修剪工具。

因此，我想重点介绍一个傻瓜级的开源工具，即 “[Video Trimmer](https://gitlab.gnome.org/YaLTeR/video-trimmer)”，它可以快速修剪视频。

### Video Trimmer：一个用于快速修剪视频的傻瓜应用

Video Trimmer 是一个开源应用，它可帮助你修剪视频片段而无需重新编码。因此，基本上，你可以能够修剪视频而不会失去原始质量。

你要做的就是使用 Video Trimmer 打开视频文件，然后使用鼠标选择要修剪的时间区域。

你可以手动设置要修剪的时间范围，也可以仅使用鼠标拖动区域进行修剪。当然，如果视频文件很长，而且你不知道从哪里看，手动设置时间戳可能需要一段时间。

为了让你有个印象，请看下面的截图，看看在使用 Video Trimmer 时可用的选项：

### 在 Linux 上安装 Video Trimmer

Video Trimmer 仅作为 [Flathub](https://flathub.org/apps/details/org.gnome.gitlab.YaLTeR.VideoTrimmer) 上的 Flatpak 软件包提供。因此，你应该能够在 Flatpak 支持的任何 Linux 发行版上安装它，而不会出现任何问题。

以防你不了解 Flatpak，你可能想要参考我们的[使用和安装 Flatpak](https://itsfoss.com/flatpak-guide/) 指南。

* [下载 Video Trimmer（Flathub）](https://flathub.org/apps/details/org.gnome.gitlab.YaLTeR.VideoTrimmer)

### 总结

Video Trimmer 底层使用 [ffmpeg](https://ffmpeg.org/)。它所做的可以在终端中轻松[使用 ffmpeg 命令](https://itsfoss.com/ffmpeg/)完成。但是，并非所有人都希望使用终端来剪辑视频的一部分。Video Trimmer 之类的工具可以帮助像我这样的人。

由于某些原因，如果你想寻找一种替代方法，也可以尝试使用 [VidCutter](https://itsfoss.com/vidcutter-video-editor-linux/)。当然，你始终可以依靠 [Linux 中的顶级视频编辑器](/article-10185-1.html)（例如 [OpenShot](https://itsfoss.com/openshot-video-editor-release/)） 来修剪视频以及执行一些高级操作的能力。

你认为在 Linux 中使用 Video Trimmer 如何？你是否有其他喜欢的视频修剪工具？在下面的评论中让我知道你的想法！

---

via: <https://itsfoss.com/video-trimmer/>

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


为什么你应该使用 Amazon EKS 托管自己的业务？

Summary: 对于企业来说，找到一个可以以最低心智负担接入的 Kubernetes 服务，才是最佳选择。

# 为什么你应该使用 Amazon EKS 托管自己的业务？

随着业务的现代化和规模化，Kubernetes 和其背后的云原生成为如今软件系统的唯一选择。而对于众多的开发者来说， Kubernetes 并不是一个简单的问题，使用 Kubernetes 意味着需要理解 Kubernetes 背后的众多概念，你需要理解 Kubernetes 背后复杂的一套生态。但，对于一个企业来说，业务才是核心，Kubernetes 对于企业来说，更多只是一个基础设施，**这个基础设施很重要，不得不有，但又无法产生价值，企业不会投入太多精力**。

在这种情况下，选择使用开源社区提供的发行版和各种管理工具，就成为一个并不经济的选项。**对于企业来说，找到一个可以以最低心智负担接入的** **Kubernetes** **服务，才是最佳选择**。相比于社区的众多发行版，Amazon EKS 屏蔽了 Kubernetes 底层的基础设施的部分，将 Worker 层面的工作保留给用户，既可以给予用户一定的自由，同时又可以让用户可以无痛的从传统架构切换至云原生架构上。

**对于企业而言，Amazon****的** **EKS** **服务，可能是一个最佳的选择。**

### 做一个敢于承诺 SLA 的 Kubernetes 服务

和很多 Kubernetes 服务/开源软件不同，Amazon 的 EKS 服务主打的是**一个高度可用、可扩展且安全的** **Kubernetes** **服务**，并且，EKS 承诺，为客户提供了 **99.95%** 的可用性，让自己的客户可以安全高效的运转业务。在众多 Kubernetes 服务中，**敢于提出向企业承诺可用性保障的** **Kubernetes** **服务，Amazon** **是其中之首**。这让 Amazon EKS 脱颖而出。

*EKS 工作模式*

Amazon EKS 通过托管控制平面节点，尽可能的降低用户在维护整个集群的成本。在使用 Amazon EKS 后，企业**只需要维护执行业务所需的** **Worker** **节点**，就可以搞定整个集群的运转。剩下的工作，就交给 AWS 来完成。AWS 为用户提供了一个可以跨多个 AWS 可用区，可扩展且高度可用的控制平面，从而确保无论在什么情况下 Kubernetes API 和 etcd 服务都可以正常运转。从而确保业务的可用性。

不仅如此，**Amazon EKS** **还通过整合** **AWS** **的其他业务，诸如** **Elastic Load Balancing****、****AWS CloudWatch** **等服务，让整个** **Kubernetes** **集群可以更加动态的完成业务的请求而不会崩溃。**

### 做一个功能强大的 Kubernetes 服务

企业之所以选择 AWS ，很大程度是因为 AWS 为企业提供了足够多的能力支持和足够强大的业务范围，只要你需要，AWS 就可以为你提供相应的服务。

基于用户的需求， AWS 在标准的 Kubernetes 服务的基础之上，引入了对于 AWS 更多能力的支持，包括：

* 基于 AWS Cloud Map 的服务发现能力
* 基于 Amazon VPC CNI 的网络能力
* 基于 AWS IAM 验证器的权限管理能力
* 基于 Elastic Load Balancing 的负载均衡能力
* 基于 AWS Fargate 的无服务器计算能力
* 基于 AWS Outposts 的混合云部署对接能力
* 给予 AWS CloudTrail 的日志记录能力
* 给予 AWS CloudWatch 的云监控能力
* …

这些能力源自底层云计算强大实力的能力，非一般的云计算服务商所能比拟的。但，**对于企业来说，也正是这些能力，给了企业无限的可能，企业可以放心大胆的拓展自己的业务，而无需担心自己的业务底层出现任何问题**，源自于 AWS 多年的云计算研究的底气，非一般的云计算服务商所能比拟的。

### 做一个开放开源的 Kubernetes 服务

Kubernetes 的强大，源自于其生态链中的各种各样的软件和服务，而一个 Kubernetes 服务想要发挥最强的性能，就离不开和社区的 Kubernetes 服务进行整合，享受到来自社区的种种新能力的接入。

和一般的 Kuberntes 服务相比， Amazon EKS 提供了和上游 Kubernetes 一致的 API，这意味着如果企业希望使用 Kubernetes 生态中的插件或工具，都可以直接无痛接入，从而享受到来自 Kubernetes 社区的赋能。

同时，Amazon EKS 和上游保持一致也使得 Amazon EKS 可以十分轻松的完成 Kubernetes 集群的升级。Amazon EKS 会自动将正在运行的集群更新到最新的 Kubernetes 版本，对于企业来说，无需任何关注，集群就已经完成了整体的升级，让企业的集群可以享受到 Kubernetes 的最新特性。

不仅如此，Amazon EKS 还积极的参与到 Kubernetes SIG 的建设中，并开源出了诸如 CDK8s、FireCracker 这样的项目，来增强 Kubernetes 社区生态，帮助整个 Kubernetes 社区成长。

### 做一个不仅仅是 Kubernetes 的 Kubernetes 服务

Kubernetes 是云原生的未来，但对于专心于业务的企业来说，Kubernetes 可能还是太重了。如果你使用了 Amazon EKS ，则可以有一个更加简单的方案，就是在 Amazon EKS 基础之上，运行 AWS Fargate，从而将容器使用的成本进一步降低。

从 EKS 到 Fargate，变化的是提供的服务，不变的是**让企业可以更加简单、低成本、无负担的切换到更好的基础设施的心态**，也正是这样的心态，让 Amazon EKS 基于 Kubernetes ，但有提供了超出 Kubernetes 的服务。

### 总结

当你需要一个足够好用、足够安全、足够稳定的 Kubernetes 服务时， Amazon EKS 就会成为一个不错的选择；当你希望用尽可能少的精力去维护基础设施，希望将更多的精力投放在业务的研发上时，Amazon EKS 就会成为一个值得你选择的选项。如果你想要试一试 Kubernetes ，那为什么不从 Amazon EKS 开始呢？


#新闻拍一拍# 1750 亿参数的 AI 模型 GPT-3 引爆硅谷

Summary: • FydeOS X 发布，支持使用 Google 账号登录 FydeOS

# #新闻拍一拍# 1750 亿参数的 AI 模型 GPT-3 引爆硅谷

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

#### 1750 亿参数的 AI 模型 GPT-3 引爆硅谷

OpenAI 的研究人员在上个月发表了一篇论文，描述了 GPT-3 的开发，正式发布了这个由 1750 亿个参数组成的 AI 语言模型。在 GPT-3 中，对于所有任务，模型无需进行任何梯度更新或微调，而仅通过与模型的文本交互指定任务和少量示例即可获得很好的效果。微软给 OpenAI 提供的这台超级计算机是一台排名全球前 5 的超级计算机。GPT-3 是一个史无前例的庞大语言模型，所以几乎所有可以用文字表达的工作它都能胜任，你可以指导它回答问题、写文章、写诗歌、甚至写代码。神经网络之父、图灵奖获得者 Geoffrey Hinton 早前对 GPT-3 的一番评论：“ 鉴于 GPT-3 在未来的惊人前景，可以得出结论：生命、宇宙和万物的答案，就只是 4.398 万亿个参数而已。”

来源：[开源中国](https://www.oschina.net/news/117519/what-is-gpt-3)

>
> 拍一拍：不等到了 GPT-4、GPT-5 天网长大，我们程序员可能就要先失业吧。
>
>
>

#### FydeOS X 发布，支持使用 Google 账号登录 FydeOS

FydeOS 基于开源项目 Chromium 二次开发，对其底层技术行了修改和优化。包括对安卓程序的支持、对原生 Linux 应用程序的支持、对常用 Windows 程序的兼容、账号信息和文件云同步以及功能强大的高颗粒度企业集管功能，是一款符合互联网时代需求的云技术操作系统。FydeOS X 也就是 FydeOS v10 发布，这是“有史以来改变最大的发布”。

来源：[开源中国](https://www.oschina.net/news/117446/fydeosx-released)

>
> 拍一拍：这是一个有趣的项目，或许能填补国内不能用 ChromeOS 的空白。
>
>
>


使用 DNS over TLS

Summary: 现代计算机用来在互联网种查找资源的域名系统（DNS） 是在 35 年前设计的，没有考虑用户隐私。它会面临安全风险和攻击，例如 DNS 劫持。它还能让 ISP 拦截查询。

请问debian系统怎么设置呀？

设置好之后提示的不对

设置好之后提示的不对

设置好之后提示的不对

# 使用 DNS over TLS

现代计算机用来在互联网种查找资源的 [域名系统（DNS）](https://en.wikipedia.org/wiki/Domain_Name_System) 是在 [35 年前](https://tools.ietf.org/html/rfc1035)设计的，没有考虑用户隐私。它会面临安全风险和攻击，例如 [DNS 劫持](https://en.wikipedia.org/wiki/DNS_hijacking)。它还能让 [ISP](https://en.wikipedia.org/wiki/Internet_service_provider) 拦截查询。

幸运的是，现在有 [DNS over TLS](https://en.wikipedia.org/wiki/DNS_over_TLS) 和 [DNSSEC](https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions) 两种技术。DNS over TLS 和 DNSSEC 允许创建从计算机到它配置的 DNS 服务器之间的安全且加密的端到端隧道。在 Fedora 上，部署这些技术的步骤很容易，并且所有必要的工具也很容易获得。

本指南将演示如何使用 `systemd-resolved` 在 Fedora 上配置 DNS over TLS。有关 `systemd-resolved` 服务的更多信息，请参见[文档](https://www.freedesktop.org/wiki/Software/systemd/resolved/)。

### 步骤 1：设置 systemd-resolved

类似于下面所示修改 `/etc/systemd/resolved.conf`。确保启用 DNS over TLS 并配置要使用的 DNS 服务器的 IP 地址。

```
$ cat /etc/systemd/resolved.conf
[Resolve]
DNS=1.1.1.1 9.9.9.9
DNSOverTLS=yes
DNSSEC=yes
FallbackDNS=8.8.8.8 1.0.0.1 8.8.4.4
#Domains=~.
#LLMNR=yes
#MulticastDNS=yes
#Cache=yes
#DNSStubListener=yes
#ReadEtcHosts=yes

```

关于选项的简要说明：

* `DNS`：以空格分隔的 IPv4 和 IPv6 地址列表，用作系统 DNS 服务器。
* `FallbackDNS`：以空格分隔的 IPv4 和 IPv6 地址列表，用作后备 DNS 服务器。
* `Domains`：在解析单标签主机名时，这些域名用于搜索后缀。 `~.` 代表对于所有域名，优先使用 `DNS=` 定义的系统 DNS 服务器。
* `DNSOverTLS`：如果启用，那么将加密与服务器的所有连接。请注意，此模式要求 DNS 服务器支持 DNS-over-TLS，并具有其 IP 的有效证书。

>
> 注意：上面示例中列出的 DNS 服务器是我个人的选择。你要确定要使用的 DNS 服务器。要注意你要向谁请求 IP。
>
>
>

### 步骤 2：告诉 NetworkManager 将信息推给 systemd-resolved

在 `/etc/NetworkManager/conf.d` 中创建一个名为 `10-dns-systemd-resolved.conf` 的文件。

```
$ cat /etc/NetworkManager/conf.d/10-dns-systemd-resolved.conf
[main]
dns=systemd-resolved

```

上面的设置（`dns=systemd-resolved`）让 `NetworkManager` 将从 DHCP 获得的 DNS 信息推送到 `systemd-resolved` 服务。这将覆盖*步骤 1* 中配置的 DNS 设置。这在受信任的网络中没问题，但是也可以设置为 `dns=none` 从而使用 `/etc/systemd/resolved.conf` 中配置的 DNS 服务器。

### 步骤 3： 启动和重启服务

若要使上述步骤中的配置生效，请启动并启用 `systemd-resolved` 服务。然后重启 `NetworkManager` 服务。

注意：在 `NetworkManager` 重启时，连接会中断几秒钟。

```
$ sudo systemctl start systemd-resolved
$ sudo systemctl enable systemd-resolved
$ sudo systemctl restart NetworkManager

```

>
> 注意：目前，systemd-resolved 服务默认处于禁用状态，是可选使用的。[有计划][33]在 Fedora 33 中默认启用systemd-resolved。
>
>
>

### 步骤 4：检查是否一切正常

现在，你应该在使用 DNS over TLS。检查 DNS 解析状态来确认这一点：

```
$ resolvectl status
MulticastDNS setting: yes
  DNSOverTLS setting: yes
      DNSSEC setting: yes
    DNSSEC supported: yes
  Current DNS Server: 1.1.1.1
         DNS Servers: 1.1.1.1
                      9.9.9.9
Fallback DNS Servers: 8.8.8.8
                      1.0.0.1
                      8.8.4.4

```

`/etc/resolv.conf` 应该指向 `127.0.0.53`。

```
$ cat /etc/resolv.conf
# Generated by NetworkManager
search lan
nameserver 127.0.0.53

```

若要查看 `systemd-resolved` 发送和接收安全查询的地址和端口，请运行：

```
$ sudo ss -lntp | grep '\(State\|:53 \)'
State     Recv-Q    Send-Q       Local Address:Port        Peer Address:Port    Process
LISTEN    0         4096         127.0.0.53%lo:53               0.0.0.0:*        users:(("systemd-resolve",pid=10410,fd=18))

```

若要进行安全查询，请运行：

```
$ resolvectl query fedoraproject.org
fedoraproject.org: 8.43.85.67                  -- link: wlp58s0
                   8.43.85.73                  -- link: wlp58s0

[..]

-- Information acquired via protocol DNS in 36.3ms.
-- Data is authenticated: yes

```

### 额外步骤 5：使用 Wireshark 验证配置

首先，安装并运行 [Wireshark](https://www.wireshark.org/)：

```
$ sudo dnf install wireshark
$ sudo wireshark

```

它会询问你在哪个设备上捕获数据包。在我这里，因为我使用无线接口，我用的是 `wlp58s0`。在 Wireshark 中设置筛选器，`tcp.port == 853`（853 是 DNS over TLS 协议端口）。在捕获 DNS 查询之前，你需要刷新本地 DNS 缓存：

```
$ sudo resolvectl flush-caches

```

现在运行：

```
$ nslookup fedoramagazine.org

```

你应该会看到你的计算机和配置的 DNS 服务器之间的 TLS 加密交换：

---

via: <https://fedoramagazine.org/use-dns-over-tls/>

作者：[Thomas Bianchi](https://fedoramagazine.org/author/thobianchi/) 选题：[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/) 荣誉推出


Jitsi Meet：自由开源的视频会议解决方案，无需设置即可免费使用

turn 没说吧，这个跑起来不能用

# Jitsi Meet：自由开源的视频会议解决方案，无需设置即可免费使用

> Jitsi Meet 是一个开源视频会议服务，你可以免费使用它来组织在线课程、会议和聚会。你也可以在自己的服务器上托管 Jitsi。

在 COVID-19 大流行期间，远程工作趋势显著增长。无论你是否喜欢，视频会议对于个人和企业都是一个很好的解决方案。

在过去的几个月中，非常流行的视频会议服务之一就是 Zoom。但是，[关于 Zoom 视频通话](https://www.tomsguide.com/news/zoom-security-privacy-woes)存在很多安全和隐私问题。

因此，选择一个安全且易于使用的视频会议应用来完成工作是很重要的。我敢肯定有很多选择，但是在这里，让我们看一下开源选项 [Jitsi Meet](https://meet.jit.si/)。

### Jitsi Meet：免费使用的开源视频会议服务

Jitsi Meet 是开源语音、视频会议和即时消息服务 [Jitsi](https://jitsi.org/) 集合的一部分。

通过 Jitsi Meet，你可以即刻主持群组视频通话（即视频会议），你甚至都不需要建立帐户。

对于桌面端，它是基于浏览器的，但它以 AppImage 的形式为 Linux 提供了一个基于 Electron 的桌面应用。它也可以用在 Windows 和 macOS 上。

对于智能手机，它提供了 iOS 和 Android 应用，你可以分别从 App Store 和 Play Store 进行安装。除了这些，你还可以在开源 Android 应用商店 [F-Droid](https://f-droid.org/en/packages/org.jitsi.meet/) 中找到它。

如果你想更进一步，你可以在你的服务器上部署 Jitsi Meet。对于那些不想使用第三方服务器的企业来说，这是理想的选择，即使该服务器来自软件开发商。

### Jitsi Meet 的功能

Jitsi Meet 简单但功能丰富。这是你将获得的功能：

* 不需要用户注册
* 使用 Etherpad 共同编辑文档
* 能够自己部署
* 支持集成 Slack 和 Rocket.chat
* 如果需要，提供密码保护
* 端到端加密（beta 版）
* 背景模糊（beta 版）
* 录音选项
* 直播流支持
* YouTube 视频分享
* 查看用户的网络状态
* 集成 Google 和 Microsoft 日历
* 聊天功能
* 屏幕共享
* 支持国际连接拨入
* 你可以稍后继续视频通话，而无需会议代码
* 低带宽模式选项
* Jitsi 可选的桌面版本

出于显而易见的原因，你在移动应用上只能找到较少的功能。

请注意，[端到端加密仍处于 beta 阶段](https://jitsi.org/blog/e2ee/)。但是，即使没有它，Jitsi Meet 也应该是一个隐私友好且安全的视频会议解决方案。

在移动设备上，我只希望它有屏幕共享功能。除此之外，其他所有功能都很好。

### 如何使用 Jitsi Meet？

要使它在 Linux 上运行，你不需要做任何其他事情。你只需要前往它的[官方 Jitsi Meet 实例](https://meet.jit.si/)，然后输入会议名称即可创建或加入。

如果您使用的是基于 Electron的应用程序，则完全一样。 使用桌面应用程序时的外观如下：

如你在上面的截图中所见，你还可以找到你最近使用的会议室的列表，这样就不必再次输入或创建会议室。

如果你要创建它，那么最好使用唯一的名称，并且如果你不需要其他任何人意外加入，那么还应为其添加密码保护。

如果你要参加其他人的会议，只需询问会议名称或会议链接即可使用台式机或智能手机轻松加入。

除了少一些功能，它与桌面端的工作方式相同。我已经使用了一段时间，并且还鼓励和培训了我父亲的单位（我们的附近学校）使用 Jitsi Meet 主持在线课程。

即使有最多 75 名参与者的限制，它的表现也很好，而且工作良好。

[Jitsi Meet](https://meet.jit.si)

### 总结

如果你希望托管自己的 Jitsi 实例，建议你遵循它的[官方自托管指南](https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart)来启动并运行它。你还可以在[它的 GitHub 页面中找到实例列表](https://github.com/jitsi/jitsi-meet/wiki/Jitsi-Meet-Instances)。

Jitsi Meet 是个了不起的开源视频会议应用。它是 Zoom 和其他此类视频通话服务的一种隐私保护替代方案。

我还建议查看 [NextCloud，它是 MS Office 365 的开源替代方案](https://itsfoss.com/nextcloud/)。

你如何看待 Jitsi Meet？你尝试过了吗？你最喜欢的视频会议工具是什么？

---

via: <https://itsfoss.com/jitsi-meet/>

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


气球驱动的互联网服务在肯尼亚上线

Summary: Alphabet 的衍生产品 Loon 使用气球创建了一个由蜂窝塔构成的漂浮网络。

# 气球驱动的互联网服务在肯尼亚上线

>
> Alphabet 的衍生产品 [Loon](https://loon.com/) 使用气球创建了一个由蜂窝塔构成的漂浮网络。
>
>
>

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

ISP [Telkom Kenya](https://www.telkom.co.ke/) 正在启动第一个使用气球的商业化 4G LTE 服务，气球的作用是在漂浮在平流层中作为蜂窝塔网络。

据 Alphabet 的衍生产品及底层技术提供商 [Loon](https://loon.com/) 的首席执行官 Alastair Westgarth 所说，这项服务起初将会覆盖肯尼亚接近 19000 平方英里的范围。 Westgarth 在 [Medium](https://medium.com/loon-for-all/loon-is-live-in-kenya-259d81c75a7a) 上的一篇文章中说，将会有大约 35 个或更多的气球组成编队，它们持续不断地移动，漂浮在地表上方大约 12 英里的平流层中。“我们将 Loon 称为漂浮的蜂窝塔网络。” Westgarth 说道。

Telkom Kenya 的首席执行官 Mugo Kibati 在一篇[新闻稿](https://telkom.co.ke/telkom-and-loon-announce-progressive-deployment-loon-technology-customers-july)中提到，传统互联网对肯尼亚的服务不足，这是采用这种输送装置的原因。“…… 具有互联网功能的气球能够为生活在偏远地区的许多肯尼亚人提供联系，这些地区服务不足或是完全没有服务，仍然处于不利地位。” Kibati 说道。远程医疗和在线教育是两个预期的用例。

在测试中， Loon 实现了 19 毫秒延迟的 18.9 Mbps 下行速度，以及 4.74 Mbps 的上行速度。 Westgarth 说，该服务能够用于“语音通话、视频通话、 YouTube、 WhatsApp、电子邮件、发短信、网页浏览”和其他应用程序。

从更大的角度看，从平流层提供互联网服务对于[物联网（IoT ）](https://www.networkworld.com/article/3207535/what-is-iot-the-internet-of-things-explained.html)来说是一个诱人的主张。在高空，网络覆盖范围可能会更广泛，并且覆盖范围可以随着需求的变化而变化（例如，采矿区的移动）。此外，要建立或处理的地面基础设施更少。 比方说，开发人员可以避免铺设电缆所需的私有地产的纠纷。

可以想象，服务中断也更加可控。提供商可以发射另一台设备，而不必通过复杂的远程地面基础设施来跟踪故障。备用气球可随时备用。

### 基于无人机的互联网交付

另一家正在探索大气层互联网的组织是软银，它称其 260 英尺宽的 HAWK30 无人机是“平流层中的漂浮基站”。（参见相关故事：[软银计划到 2023 年实现无人机交付的物联网和互联网](https://www.networkworld.com/article/3405170/softbank-plans-drone-delivered-iot-and-internet-by-2023.html)）

日本大型电信公司对平流层传输的互联网感兴趣的原因之一是，该群岛易于发生自然灾害，例如地震。与传统的基站相比，地球上空的浮动基站更容易移动，从而可以更快、更灵活地应对自然灾害。

实际上，Loon 的气球已经成功地用于在灾难后提供互联网服务：例如，在 2017 年波多黎各的飓风 Maria 之后，Loon 提供了连接。

Westgarth 说，自最初开发以来，Loon 的气球已经取得了长足的发展。现如今，发射是通过自动设备执行的，该设备可以每半小时一次将与地面站点相连的气球推到 60000 英尺高空，而不像以前那样人工进行。

机器学习算法会处理导航，以尝试向用户提供持续的服务。但是，这并非总是可能的，因为风（尽管在地面上没有那么大）和受限的空域都会影响覆盖范围，尽管 Westgarth 称之为“精心编排组织的气球舞蹈”。

此外，这些设备是太阳能供电的，这意味着它们只能够在白天工作并提供互联网（或重新定位自身，或向其他气球传输互联网）。出于上述原因和其他的一些原因， Westgarth 和 Kibati 指出，气球必须扩大现有的基础设施和计划，但这并不是一个完整的解决方案。

Westgarth 说：“为了连接现在和将来需要它的所有人员和事物，我们需要开阔我们的思维；我们需要在连通性生态系统中增加新的一层。”

---

via: <https://www.networkworld.com/article/3566295/balloon-powered-internet-service-goes-live-in-kenya.html>

作者：[Patrick Nelson](https://www.networkworld.com/author/Patrick-Nelson/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[JonnieWayy](https://github.com/JonnieWayy) 校对：[wxy](https://github.com/wxy)

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


#新闻拍一拍# Garmin 可能支付了上千万美元的赎金后收到了勒索软件解密器

Summary: • Bootstrap 开源了一个 SVG 图标库

一直以为bootstrap icons早就开源了。

我认真查过了。

这个图标库从开始就是开源的，使用的是MIT。

最近也没什么新闻。

应该是OSChina自己开心写的新闻。

# #新闻拍一拍# Garmin 可能支付了上千万美元的赎金后收到了勒索软件解密器

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

#### Garmin 可能支付了上千万美元的赎金后收到了勒索软件解密器

2020 年 7 月 23 日，Garmin 遭受了全球范围的中断，客户无法访问他们的连接服务。据证实他们受到了WastedLocker勒索软件最初勒索赎金要 1000 万美元。今日，BleepingComputer 获得了一个由 Garmin IT 部门创建的可执行文件以解密工作站然后在机器上安装各种安全软件。据了解，WastedLocker 是一款针对企业的勒索软件，其加密算法没有已知的弱点。目前还不清楚具体支付了多少赎金。

来源：[cnBeta.COM](https://www.cnbeta.com/articles/tech/1011045.htm)

>
> 拍一拍：这个代价可谓高昂。
>
>
>

#### Bootstrap 开源了一个 SVG 图标库

Bootstrap 开源了首套 SVG 图标库 Bootstrap Icons，其团队表示这是有史以来第一次拥有自己的图标库，此图标库起初专门针对其从表单控件到导航等组件和文档进行定制设计和构建，现在可以免费用于任何项目，无论此项目是否使用了 Bootstrap。

来源：[开源中国](https://www.oschina.net/news/117616/open-source-svg-icon-library-for-bootstrap)

>
> 拍一拍：又一个 SVG 图标库，SVG 做图标真的不错。
>
>
>


24 个值得尝试的 Linux 桌面环境

Summary: 我全要！

KDE 的毛玻璃特效太令人喜爱了

# 24 个值得尝试的 Linux 桌面环境

>
> 我全要！
>
>
>

Linux 桌面的最大优点之一是它提供给用户选择的权利。如果你不喜欢你屏幕左下角的应用程序菜单，你可以移除它。如果你不喜欢你的文件管理器组织文件的方式，你可以使用另外一个文件管理器。不过，不可否认的是，这对那些不习惯自己选择如何使用计算机的用户来说可能会感到困惑。如果你正在考虑安装 Linux，你要做的选择之一就是你想使用哪一个桌面，最好的方法就是尝试几个不同的桌面，直到你找到感觉适合你的桌面。

### 默认桌面

作为在 Fedora、Ubuntu、Debian 和一些其它操作系统上的默认桌面，GNOME 桌面可能是最流行的 Linux 桌面。它有一个易于使用和现代化的界面，并带有为手机环境设计的小点缀，因此即使在触摸屏上也感觉很自然。

不过，一些 Linux 发行版选择了不同的桌面环境，如 KDE Plasma、Pantheon、Cinnamon 和 Mate。

* [GNOME](/article-11675-1.html): 现代化和易于使用，默认桌面
* [Mate](/article-11703-1.html): 传统的 GNOME
* [KDE](/article-11728-1.html): 功能强大、可配置的 Plasma 桌面
* [Cinnamon](/article-8606-1.html): 经典的 GNOME
* [Pantheon](/article-11660-1.html): [ElementaryOS](https://elementary.io/) 的默认桌面
* [Budgie](/article-10547-1.html): 一个柔和的桌面
* [Trinity](https://opensource.com/article/19/12/linux-trinity-desktop-environment-tde): 传统的 KDE

### 传统的 Unix

Unix 是现代操作系统的鼻祖，也是 Linux 的直接灵感来源，拥有令人吃惊的丰富的桌面历史。大多数人都不熟悉 Unix 桌面设计，因为 Unix 计算机被认为是学术界、科学界和电影界常见的专业机器，而不是家用计算机。如果你是一名 Unix、IRIX 或 NeXT 的用户，那么你可能会对类似于 [CDE](https://sourceforge.net/projects/cdesktopenv/) 或 NeXTStep 的桌面有着美好的回忆。你很幸运，因为这一传统延续至今：

* [Windowmaker](/article-11650-1.html): NeXT 界面的复兴
* [Enlightenment](https://opensource.com/article/19/12/linux-enlightenment-desktop): 一个现代化的改进型 Windowmaker 风格的桌面
* [Fluxbox](/article-12082-1.html): 跳出 Blackbox 思维定式
* [Openbox](/article-11698-1.html): 改善 Blackbox 的可用性
* [TWM](/article-11734-1.html): 与 X11 绑定至死的示例桌面
* [Fvwm](/article-11712-1.html): 改进的 TWM

### 轻量级桌面

你可能想知道为什么 Linux 有那么多的桌面可供选择。你可以把它归结为个人喜好和对效率低下的低容忍度，但优化用户界面也有技术上的好处。例如，老电脑难以跟上用户界面的更新，可以使用轻量级桌面[赋予它新的生命](https://opensource.com/article/20/2/macbook-linux-elementary) 。另外，你可能只是想把 CPU 处理能力分配到除桌面以外的其它东西上，所以保持你的主用户界面极简是有意义的。不管你的动机是什么，这里有一些你可以尝试的桌面：

* [XFCE](/article-10413-1.html): 熟悉的桌面，极少的性能损失
* [LXQT 和 LXDE](https://opensource.com/article/19/12/lxqt-lxde-linux-desktop): 熟悉的桌面，较少的性能损失
* [PekWM](/article-11670-1.html): 一个 Blackbox 式的窗口管理器
* [Joe's Window Manager](https://opensource.com/article/19/12/joes-window-manager-linux-desktop): 另一个 Blackbox 式的窗口管理器
* [Ratpoison](https://opensource.com/article/19/12/ratpoison-linux-desktop): 不使用鼠标
* [Herbstluftwm](/article-11734-1.html): 针对 [Vim 用户](https://opensource.com/resources/what-vim) 的Ratpoison
* [Lumina](/article-11706-1.html): 一个为 PC-BSD 开发的桌面

### 实验性桌面

当创建一个桌面并将其集成到一个系统中相对容易的时候，会发生的事情之一就是你会得到一些有趣的概念验证项目和试验性项目。有一些会比其它的更精致，有一些则不是很容易安装。这些很可能注定不会成为你的永久桌面，但是它们可以是很有趣的体验:

* [Unix Desktop Environment](https://opensource.com/article/19/12/linux-unix-desktop-environment-ude): 该桌面的重塑版
* [Rox](/article-12123-1.html): 在它那个时代是先进和现代的桌面
* [MLVWM](/article-11720-1.html): 要是 Apple IIe 运行 Unix 怎么样？
* [Equinox](https://opensource.com/article/19/12/ede-linux-desktop): 只是个最基础的东西

### 选择你的桌面

如果太多的选择让你不知所措，那么记住：桌面意味着 *可选*。你没有义务来尝试发行版附带的多个桌面。

许多 Linux 的高级用户都会满足于他们的发行版所提供的某个桌面。最重要的是得到一个可以与你的计算机一起工作的 Linux 系统系统，并花费时间来学习它是如何工作的。归根结底，所有的桌面都只是为了做同一件事：帮助你组织和管理你的重要数据。让你了解你的桌面是如何工作的，这才是最重要的。但是如果你已经了解了你的默认桌面的各个方面，那你现在有了可以在周末尝试的大量选择。祝你玩得开心！

---

via: <https://opensource.com/article/20/5/linux-desktops>

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


#新闻拍一拍# Linux 基金会宣布成立 OpenSSF

Summary: • Netcraft 7 月全球 Web 服务器调查报告发布

• Netcraft 7 月全球 Web 服务器调查报告发布

# #新闻拍一拍# Linux 基金会宣布成立 OpenSSF

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

#### Linux 基金会宣布成立 OpenSSF

OpenSSF 是一个跨行业的协作，通过构建一个具有目标计划和最佳实践的更广泛的社区，将领导者聚集在一起，以提高开放源码软件的安全性。它结合了 CII（核心基础设施倡议）、GitHub的开放源码安全联盟和其他开放源码安全工作。OpenSSF 打算托管各种开源技术倡议，以支持世界上最重要的开源软件的安全，所有这些都将在 GitHub 上公开完成。

来源：[LFAPAC](https://mp.weixin.qq.com/s/ywSFuFBMVZyrKpc_JMsHGw)

>
> 拍一拍：开源软件的安全问题已经需要越来越多重视。
>
>
>

#### Netcraft 7 月全球 Web 服务器调查报告发布

大部分主要服务器 7 月在站点总数上都有所增加，其中 Apache 增长了 980 万个站点，微软和 nginx 分别增长了 540 万和 250 万个站点。nginx 在域名方面增长最明显，共涨了 200,000，微软丢失了 110 万个域，Apache 丢失了 99.8 万，也使得 nginx 在该指标上的领先地位更进一点加强，现在它已经拥有约 3000 万个域，占有 29.8％（+0.27 pp）的市场份额。

来源：[开源中国](https://www.oschina.net/news/117669/july-2020-web-server-survey)

>
> 拍一拍：NGINX 还是一如既往的占有优势。
>
>
>


我最喜欢的 D 语言功能

Summary: UFCS 能让你能够编写自然的可重用代码而不会牺牲便利性。

UFCS 能让你能够编写自然的可重用代码而不会牺牲便利性。

# 我最喜欢的 D 语言功能

>
> UFCS 能让你能够编写自然的可重用代码而不会牺牲便利性。
>
>
>

早在 2017 年，我就写过为什么 [D 语言是开发的绝佳选择](https://opensource.com/article/17/5/d-open-source-software-development)的文章。但是 D 语言中有一个出色的功能我没有充分的展开介绍：<ruby>   通用函数调用语法  <rt>  Universal Function Call Syntax </rt></ruby>（UFCS）。UFCS 是 D 语言中的一种[语法糖](https://en.wikipedia.org/wiki/Syntactic_sugar)，它可以在类型（字符串、数字、布尔值等）上链接任何常规函数，就像该类型的成员函数一样。

如果你尚未安装 D 语言，请[安装 D 语言编译器](https://tour.dlang.org/tour/en/welcome/install-d-locally)，以便你可以自己[运行 D 代码](https://tour.dlang.org/tour/en/welcome/run-d-program-locally)。

看一下以下示例代码：

```
// file: ufcs_demo.d

module ufcs_demo;

import std.stdio : writeln;

int[] evenNumbers(int[] numbers)
{
    import std.array : array;
    import std.algorithm : filter;

    return numbers.filter!(n => n % 2 == 0).array;
}

void main()
{
    writeln(evenNumbers([1, 2, 3, 4]));
}

```

使用你喜欢的 D 语言编译器进行编译，查看这个简单示例应用做了什么：

```
$ dmd ufcs_demo.d
$ ./ufcs_demo
[2, 4]

```

但是，使用作为 D 语言的内置功能的 UFCS ，你还可以自然方式编写代码：

```
...
writeln([1, 2, 3, 4].evenNumbers());
...

```

或完全删除现在多余的括号，使 `evenNumbers` 看起来像是一个属性：

```
...
writeln([1, 2, 3, 4].evenNumbers); // prints 2, 4
...

```

因此，完整的代码现在变为：

```
// file: ufcs_demo.d

module ufcs_demo;

import std.stdio : writeln;

int[] evenNumbers(int[] numbers)
{
    import std.array : array;
    import std.algorithm : filter;

    return numbers.filter!(n => n % 2 == 0).array;
}

void main()
{
    writeln([1, 2, 3, 4].evenNumbers);
}

```

使用你最喜欢的 D 语言编译器进行编译，然后尝试一下。 如预期的那样，它产生相同的输出：

```
$ dmd ufcs_demo.d
$ ./ufcs_demo
[2, 4]

```

在编译过程中，编译器*自动地*将数组作为函数的第一个参数。这是一个常规模式，使得使用 D 语言成为一种乐趣，因此，它与你自然而然考虑代码的感觉非常相似。结果就是函数式编程。

你可能会猜出这打印的是什么：

```
//file: cool.d
import std.stdio : writeln;
import std.uni : asLowerCase, asCapitalized;

void main()
{
    string mySentence = "D IS COOL";
    writeln(mySentence.asLowerCase.asCapitalized);
}

```

确认一下：

```
$ dmd cool.d
$ ./cool
D is cool

```

结合[其他 D 语言的功能](https://dlang.org/comparison.html)，UFCS 使你能够编写可重用的代码，并在不牺牲便利性的情况下自然地进行编写。

### 是时候尝试 D 语言了

就像我之前写的那样，D 语言是一种很棒的开发语言。从 [D 语言的下载页面](https://dlang.org/download.html)可以很容易地进行安装，因此请下载编译器，查看示例，并亲自体验 D 语言。

---

via: <https://opensource.com/article/20/7/d-programming>

作者：[Lawrence Aberba](https://opensource.com/users/aberba) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


Linux 系统管理员的 10 份速查表

# Linux 系统管理员的 10 份速查表

>
> 这些快速参考指南让系统管理员的生活和日常工作变得更轻松，而且它们都是免费提供的。
>
>
>

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

作为一名系统管理员，你做所的不是一件工作，而是**全部**工作，而且往往每一件工作都是随时随地出现，毫无预兆。除非你每天都只做一项任务，否则当需要的时候，你可能并不总是都能将所有的命令和选项都记在脑海里。这就是为什么我喜欢速查表的原因。

速查表可以帮助你避免愚蠢的错误，它们可以让你不必翻阅数页的文档，并让你高效地完成任务。我为每位系统管理员挑选了我最喜欢的 10 个速查表，无论他的经验水平如何。

### 网络

我们的《[Linux 网络](https://opensource.com/downloads/cheat-sheet-networking)》速查表是速查表界的的瑞士军刀，它包含了最常见的网络命令的简单提醒，包括 `nslookup`、`tcpdump`、`nmcli`、`netstat`、`traceroute` 等。最重要的是，它用了 `ip` 命令，所以你终于可以不用再默认使用 `ifconfig` 命令了！

### 防火墙

系统管理员有两种：了解 `iptables` 的和使用前一类人编写的 `iptables` 配置文件的。如果你是第一类人，你可以继续使用你的 `iptables` 配置，有没有 [firewalld](https://firewalld.org/) 都无所谓。

如果你是第二类人，你终于可以放下你的 iptables 焦虑，拥抱 firewalld 的轻松。阅读《[用 firewall-cmd 保护你的 Linux 网络](https://www.redhat.com/sysadmin/secure-linux-network-firewall-cmd)》，然后下载我们的《[firewalld 速查表](https://opensource.com/downloads/firewall-cheat-sheet)》来记住你所学到的东西，保护你的网络端口从未如此简单。

### SSH

许多系统管理员都用的是 [POSIX](https://opensource.com/article/19/7/what-posix-richard-stallman-explains) shell，所以可以在别人的计算机上运行的远程 shell 是 Linux 上最重要的工具之一也就不足为奇了。任何学习服务器管理的人通常很早就学会了使用 SSH，但我们中的许多人只学习了基础知识。

当然，SSH 可以在远程机器上打开一个交互式的 shell，但它的功能远不止这些。比如说，你需要在远程机器上进行图形化登录。远程主机的用户要么不在键盘旁边，要么无法理解你启用 VNC 的指令。只要你有 SSH 权限，就可以为他们打开端口。

```
$ ssh -L 5901:localhost:5901 <remote_host>

```

通过我们的《[SSH 速查表](https://opensource.com/downloads/advanced-ssh-cheat-sheet)》了解更多。

### Linux 用户和权限

传统的大型机和 UNIX 超级计算机风格的用户账户现在基本上已经被 Samba、LDAP 和 OpenShift等系统所取代。然而，这并没有改变对管理员和服务账户仔细管理的需求。为此，你仍然需要熟悉`useradd`、`usermod`、`chown`、`chmod`、`passwd`、`gpasswd`、`umask` 等命令。

把我的《[用户和权限速查表](https://opensource.com/downloads/linux-permissions-cheat-sheet)》放在手边，你就可以随时对与用户管理有关的任务进行合理的概览，并有实例命令演示你需要做的任何事情的正确语法。

### 基本的 Linux 命令

并不是所有的系统管理员都会把所有的时间花在终端上。无论你是否喜欢在桌面上工作，还是刚开始使用 Linux，有时为常用的终端命令提供一个任务导向的参考是很好的。

对于一个为灵活性和即兴性而设计的界面来说，找到所有你可能需要的东西是很困难的，但我的《[常用命令速查表](https://opensource.com/downloads/linux-common-commands-cheat-sheet)》是相当全面的。这张速查表以任何技术型桌面用户的典型生活为蓝本，涵盖了用命令在计算机内导航、寻找文件的绝对路径、复制和重命名文件、建立目录、启动系统服务等内容。

### Git

在计算机的历史上，版本控制曾经是只有开发者才需要的东西。但那是过去，而 Git 是现在。对于任何希望跟踪从 Bash 脚本到配置文件、文档和代码的变化的人来说，版本控制是一个重要的工具。Git 适用于每个人，包括程序员、网站可靠性工程师（SRE），甚至系统管理员。

获取我们的《[Git 速查表](https://opensource.com/downloads/cheat-sheet-git)》来学习要领、基本工作流程和最重要的 Git 标志。

### Curl

Curl 不一定是系统管理员专用的工具，从技术上讲，它“只是”一个用于终端的非交互式 Web 浏览器。你可能几天都不用它一次。然而，你很有可能会发现 Curl 对你每天要做的事情很有用，不管是快速参考网站上的一些信息，还是排除网络主机的故障，或者是验证你运行或依赖的一个重要 API。

Curl 是一个向服务器传输数据的命令，它支持的协议包括 HTTP、FTP、IMAP、LDAP、POP3、SCP、SFTP、SMB、SMTP 等。它是一个重要的网络工具，所以下载我们的《[Curl 速查表](https://opensource.com/downloads/curl-command-cheat-sheet)》，开始探索 Curl 吧。

### SELinux

Linux 的安全策略在默认情况下是很好的，root 权限和用户权限之间有很强的分离，但 SELinux 使用标签系统对其进行了改进。在配置了 SELinux 的主机上，每个进程和每个文件对象（或目录、网络端口、设备等）都有一个标签。SELinux 提供了一套规则来控制进程标签对对象（如文件）标签的访问。

有时候你需要调整 SELinux 策略，或者调试一些安装时没有正确设置的东西，或者深入了解当前的策略。我们的《[SELinux 速查表](https://opensource.com/downloads/cheat-sheet-selinux)》可以提供帮助。

### Kubectl

无论你是已经迁移到了开放的混合云、封闭的私有云，还是你还在研究这样的迁移需要准备什么，你都需要了解 Kubernetes。虽然云确实还需要人去摆弄物理服务器，但作为一个系统管理员，你的未来肯定会涉及到容器，而没有什么比 Kubernetes 更能做到这一点。

虽然 [OpenShift](https://opensource.com/tags/openshift) 为 Kubernetes 提供了流畅的“仪表盘”体验，但有时需要一种直接的方法，这正是 `kubectl` 提供的。下一次当你不得不到处推送容器时，请确保你手头有我们的《[kubectl 速查表](https://opensource.com/downloads/kubectl-cheat-sheet)》。

### awk

近几年来，Linux 经历了很多创新，有虚拟机、容器、新的安全模型、新的初始化系统、云等等。然而有些东西似乎永远不会改变。尤其是，系统管理员需要从日志文件和其它无尽的数据流中解析和隔离信息。仍然没有比 Aho、Weinberger 和 Kernighan 的经典 `awk` 命令更适合这项工作的工具。

当然，自从 1977 年它被编写出来后，`awk` 已经走过了很长的路，新的选项和功能使它更容易使用。但如果你不是每天都在使用 `awk`，那么多的选项和语法可能会让你有点不知所措。下载我们的《[awk 速查表](https://opensource.com/downloads/cheat-sheet-awk-features)》，了解 GNU awk 的工作原理。

### 赠品：Bash 脚本编程

速查表是有用的，但如果你想找更全面的东西，你可以下载我们的《[Bash 脚本编程手册](https://opensource.com/downloads/bash-scripting-ebook)》。这本指南教你如何将你从速查表中了解到的所有命令和经验结合到脚本中，帮助你建立一个随时能用的自动化解决方案库来解决你的日常问题。本书内容丰富，详细讲解了 Bash 的工作原理、脚本与交互式命令的区别、如何捕捉错误等。

### 赋能系统管理员

你是一名系统管理员吗？

你正在成为一名系统管理员的路上吗？

你是否对系统管理员一天都在做什么感到好奇？

如果是的话，请查看《[赋能系统管理员](http://redhat.com/sysadmin)》，这里有来自业界最勤奋的系统管理员的新文章，讲述他们的工作，以及 Linux 和开源如何让这一切成为可能。

---

via: <https://opensource.com/article/20/7/sysadmin-cheat-sheets>

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


#新闻拍一拍# 伊朗黑客组织在攻击中利用 DNS-over-HTTPS 协议

Summary: • 黑莓开源逆向工程工具 PE Tree，降低逆向复杂度

我是你赢他爹

我是你赢他爹

我是你赢他爹

我是你赢他爹

• 黑莓开源逆向工程工具 PE Tree，降低逆向复杂度

# #新闻拍一拍# 伊朗黑客组织在攻击中利用 DNS-over-HTTPS 协议

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

#### 伊朗黑客组织在攻击中利用 DNS-over-HTTPS 协议

伊朗黑客团体 Oilrig 成为已知首个在攻击中加入 DNS-over-HTTPS（DoH）协议的组织。卡巴斯基的分析师发现从今年 5 月起该组织开始使用名为 DNSExfiltrator 的工具。DNSExfiltrator 是一个开源应用，托管在 GitHub 上。

来源：[solidot](https://www.solidot.org/story?sid=65149)

>
> 拍一拍：这听起来可能有点嘲讽，非法活动更重视安全保密。
>
>
>

#### 黑莓开源逆向工程工具 PE Tree，降低逆向复杂度

PE Tree 使得逆向工程师可以使用 pefile 和 PyQt5 在树状视图中查看可移植可执行（PE）文件，从而降低了从内存中转储和重建恶意软件的门槛，同时提供了社区可以建立的开源 PE 查看器代码库。该工具采用 Python 开发的，并支持Windows、Linux 和 Mac 操作系统。

来源：[开源中国](https://www.oschina.net/news/117697/blackberry-open-source-pe-tree-tool)

>
> 拍一拍：这对研究恶意软件并找出解决方案有帮助。不过比较罕见的是，这个居然是黑莓推出的，似乎很少听说它的消息了。
>
>
>


BigBlueButton：开源在线教学软件

# BigBlueButton：开源在线教学软件

>
> BigBlueButton 是一个为在线教学量身定制的开源视频会议工具。让我们来看看它提供了什么。
>
>
>

在 2020 年，在家远程工作是一种新常态。当然，你不可能远程完成所有事情，但是在线教学是可以的。

尽管许多老师和学校组织不熟悉那些所有的出色工具，但某些[最好的开源视频会议工具](/article-12453-1.html)在一定程度上满足了要求。

在我提到的视频通话软件中，[BigBlueButton](https://bigbluebutton.org/) 引起了我的注意。在这里，我将为你简单介绍。

### BigBlueButton：用于在线教学的开源 Web 会议系统

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

BigBlueButton 是一个开源的网络会议方案，它旨在简化在线学习。

它是完全免费的，但是需要你在自己的服务器上安装才能将其用作成熟的在线学习解决方案。

BigBlueButton 提供了非常好的一组功能。你可以轻松地尝试[演示实例](http://demo.bigbluebutton.org/)，并在学校的服务器上进行安装。

开始之前，请先了解以下功能：

### BigBlueButton 的功能

BigBlueButton 为教师和学校的量身定制了一系列在线课堂的有用功能，你可以获得：

* 现场白板
* 给公共和私人发消息
* 支持网络摄像头
* 支持会话记录
* 支持表情符号
* 能够将用户分组以进行团队协作
* 支持投票
* 屏幕共享
* 支持多用户白板
* 能够自行托管
* 提供用于轻松集成到 Web 应用中的 API

除了提供的功能外，你还能看到易于使用的 UI，即 [Greenlight](https://bigbluebutton.org/2018/07/09/greenlight-2-0/) （BigBlueButton 的前端界面），当你在服务器上配置时可以安装它。

你可以尝试演示实例来临时免费地教你的学生。但是，考虑到使用[演示实例](http://demo.bigbluebutton.org/)来尝试 BigBlueButton 的局限性（限制为 60 分钟），建议你将它托管在服务器上，以探索其提供的所有功能。

为了更清楚地了解这些功能是如何工作的，你可能需要看下它的[官方教程](https://www.youtube.com/embed/Q2tG2SS4gXA)。

### 在你的服务器上安装 BigBlueButton

他们提供了[详细文档](https://docs.bigbluebutton.org/)，它对每个开发人员都会有用。安装它最简单、最快捷的方法是使用 [bbb-install 脚本](https://github.com/bigbluebutton/bbb-install)，但是如果不成功，你也可以探索其他选项。

对于刚接触的人，你需要一台至少运行 Ubuntu 16.04 LTS 的服务器。在为 BigBlueButton 部署服务器之前，你应该查看[最低要求](https://docs.bigbluebutton.org/2.2/install.html#minimum-server-requirements)。

你可以在它的 [GitHub 页面](https://github.com/bigbluebutton)中进一步了解该项目。

* [试用 BigBlueButton](https://bigbluebutton.org/)

如果你正在为在线教学寻求解决方案，那么 BigBlueButton 是一个不错的选择。

它可能不提供原生的智能手机应用，但你肯定可以用手机上的网络浏览器来访问它。当然，最好找一台笔记本电脑/计算机来访问在线教学平台，但它也可以在移动设备上使用。

你认为 BigBlueButton 的在线教学如何？有没有更好的开源项目可以替代？在下面的评论中让我知道！

---

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

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


Python 下使用 Altair 数据制图

# Python 下使用 Altair 数据制图

>
> Altair 作为一个 Python 数据制图库，提供了优雅的接口及自有的绘图语言。
>
>
>

Python 中的 [绘图库](/article-12327-1.html) 提供了呈现数据的多种方式，可以满足你不同的偏好，如灵活性、布局、易用性，或者特殊的风格。

和其它方式相比，我发现，Altair 提供的是一种不同的解决方案，且总体而言使用起来更为简单。得益于声明式的绘图语言 [Vega](https://vega.github.io/vega/)，Altair 拥有一套优雅的接口，可以直接定义要绘的图应该是什么样子，而不是通过写一大堆循环和条件判断去一步步构建。

### 绘图流程

我通过绘制同一个多柱状图比较了多个 Python 绘图库的差异。正式开始之前，你需要将你的 Python 环境调整到能运行下面代码的状态。具体就是：

* 安装最新版的 Python（ [Linux](https://opensource.com/article/20/4/install-python-linux)、[Mac](https://opensource.com/article/19/5/python-3-default-mac) 和 [Windows](https://opensource.com/article/19/8/how-install-python-windows) 系统下的安装方法）
* 确认该版本 Python 可以运行本教程所使用的库

演示用数据可从网络下载，并且可以用 pandas 直接导入：

```
import pandas as pd
df = pd.read_csv('https://anvil.works/blog/img/plotting-in-python/uk-election-results.csv')

```

准备开始吧。为了做个比较，先看下面这个用 [Matplotlib](https://opensource.com/article/20/5/matplotlib-python) 做的图：

使用 Matplotlib 需要 16 行代码，图柱的位置需要自己计算。

使用 Altair 绘制相似的图，代码如下：

```
    import altair as alt

    chart = alt.Chart(df).mark_bar().encode(
        x='party',
        y='seats',
        column='year',
        color='party',
    )

    chart.save('altair-elections.html')

```

真是简洁多了！与 [Seaborn](https://anvil.works/blog/plotting-in-seaborn) 类似，Altair 所用数据的组织形式是每个变量一列（即 [数据列](https://anvil.works/blog/tidy-data) ）。这种方式下可以将每个变量映射到图的一个属性上 —— Altair 称之为“通道”。在上例中，我们期望每个 “党派” 在 `x` 轴上显示为一组图柱， 其 “席位” 显示在 `y` 轴，且将图柱按照 “年份” 分开为 “列”。我们还想根据 “党派” 给图柱使用不同的 “颜色”。用语言表述需求的话就是上面这个样子，而这也正是代码所要表述的！

现在把图画出来：

### 调整样式

这和我们期待的效果有点接近了。与 Matplotlib 方案相比，主要区别在于 Altair 方案中，每个 `year` 组显示的时候，内部之间都有个小空白 —— 这不是问题，这只是 Altair 多柱状图显示的一个特性。

所以说呢，还需要对显示样式再做一些改进。

#### 非整形数据

两个不是整数的年份名称（`Feb 1974` 和 `Oct 1974`）显示为 `NaN` 了。这可以通过将年份数值 `year` 转换为字符串来解决：

```
    df['year'] = df['year'].astype(str)

```

#### 指定数据排序方法

还需要让 Altair 知道如何对数据进行排序。Altair 允许通过传给它一个 `Column` 对象，来设定 `Column` 通道的更多细节。现在让 Altair 按照数据在数据集中出现的顺序排列：

```
    chart = alt.Chart(df).mark_bar().encode(
        # ...
        column=alt.Column('year', sort=list(df['year']), title=None),
        # ...
    )

```

#### 移除坐标轴标签

我们通过设置 `title=None` 移除了图顶的 "year" 标签。下面再一处每列数据的 "party" 标签：

```
    chart = alt.Chart(df).mark_bar().encode(
        x=alt.X('party', title=None),
        # ...
    )

```

#### 指定颜色图

最后，我们还想自己指定图柱的颜色。Altair 允许建立 `domain` 中数值与 `range` 中颜色的映射来实现所需功能，太贴心了：

```
    cmap = {
        'Conservative': '#0343df',
        'Labour': '#e50000',
        'Liberal': '#ffff14',
        'Others': '#929591',
    }

    chart = alt.Chart(df).mark_bar().encode(
        # ...
        color=alt.Color('party', scale=alt.Scale(domain=list(cmap.keys()), range=list(cmap.values())))
    )

```

#### 样式调整后的最终代码

应用上述样式调整之后，代码看起来不那么悦目了，但我们仍然是用声明的方式实现的，这正是 Altair 如此有弹性的原因所在。实现过程中，仍然是使用的异于显示数据的独立变量来分离图中不同属性的，而不是像在 Matplotlib 中那样直接对显示数据做复杂的操作。唯一的不同是，我们的变量名字封装在类似 `alt.X()` 的对象中，从而实现对显示效果的控制：

```
    import altair as alt
    from votes import long as df

    cmap = {
        'Conservative': '#0343df',
        'Labour': '#e50000',
        'Liberal': '#ffff14',
        'Others': '#929591',
    }

    df['year'] = df['year'].astype(str)

    # We're still assigning, e.g. 'party' to x, but now we've wrapped it
    # in alt.X in order to specify its styling
    chart = alt.Chart(df).mark_bar().encode(
        x=alt.X('party', title=None),
        y='seats',
        column=alt.Column('year', sort=list(df['year']), title=None),
        color=alt.Color('party', scale=alt.Scale(domain=list(cmap.keys()), range=list(cmap.values())))
    )

    chart.save('altair-elections.html')

```

现在与 Matplotlib 方案扯平了，代码数量达到了 16 行！

下图是使用我们的样式调整方案之后的 Altair 效果图：

### 结论

尽管在代码数量上，使用 Altair 绘图没有表现出优势，但它的声明式绘图语言使得对图层的操控更为精密，这是我比较欣赏的。Altair 还提供了清晰而独立的方式来调校显示样式，这使得 相关代码与绘图的代码块分离开来。Altair 确实是使用 Python 绘图时又一个很棒的工具库。

本文首次发布于 [这里](https://anvil.works/blog/plotting-in-altair)，蒙允编辑后再次发布。

---

via: <https://opensource.com/article/20/6/altair-python>

作者：[Shaun Taylor-Morgan](https://opensource.com/users/shaun-taylor-morgan) 选题：[lujun9972](https://github.com/lujun9972) 译者：[silentdawn-zz](https://github.com/silentdawn-zz) 校对：[wxy](https://github.com/wxy)

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