Ubuntu Budgie 20.04 LTS：平滑、精致和丰富的变化

Summary: 顾名思义，Ubuntu Budgie 是使用 Budgie 桌面环境的 Ubuntu 官方特色版。

# Ubuntu Budgie 20.04 LTS：平滑、精致和丰富的变化

正如我们向读者承诺的那样，我们将对 [Ubuntu 20.04 LTS 版本](https://itsfoss.com/download-ubuntu-20-04/)的所有主要特色版进行评测。在这个续篇中，我们将对 Ubuntu Budgie 进行评测。

顾名思义，[Ubuntu Budgie](https://ubuntubudgie.org/) 是使用 [Budgie 桌面环境](https://en.wikipedia.org/wiki/Budgie_)的 [Ubuntu 官方特色版](https://itsfoss.com/which-ubuntu-install/)。这个版本是 Ubuntu 家族中较新的一位成员。Ubuntu Budgie 的第一个版本是 16.04，它在 17.04 版本时被接受为官方特色版。

他们的[目标](https://ubuntubudgie.org/about-us/)是“结合 Budgie 界面的简洁和优雅，以生产具有现代范式的面向桌面的传统发行版。”

### Ubuntu Budgie 20.04 评测：哪些改变了，哪些没有！

[自 18.04 LTS 发布以来，Ubuntu Budgie](https://itsfoss.com/ubuntu-budgie-18-review/) 有了令人惊讶的更新和改进：

* 苹果风格的新菜单
* 默认采用基于 Budgie 的网络管理小程序
* 新的 Window Shuffler 允许你通过快捷键平铺应用程序
* 快速切换桌面布局的新工具
* 支持 4k 分辨率
* 新的默认应用程序：GNOME Firmware 和 Drawing
* 现在已经为 20.04 重构了向后移植包
* 默认浏览器是火狐
* 默认使用 Catfish 搜索文件和文本
* 在 Budgie 中集成了 Nemo 文件管理器
* 由于错误，系统托盘小程序被移除了
* 默认情况下，事件警报声被禁用
* 修复了键盘快捷键神秘失踪的问题
* 更好的锁屏样式
* 由于社区的需求，文件应用 Nautilus 已被 Nemo 取代
* Plank 坞站现在已经切换到屏幕底部，是透明的，并且默认有弹跳动画
* 快速笔记和热角小程序已从 Python 移植到 Vala，以提高速度
* Celluloid 取代了 MPV
* 更新了 GNOME 的依赖性

Ubuntu Budgie 现在随附了 Budgie 桌面环境的最新版本（10.5.1）。改进包括：

* 在 Budgie 桌面设置中新增 Raven 部分
* Raven 通知可以分组，通知可以关闭
* 重新打造了图标任务列表
* 能够设置虚拟桌面的数量

Ubuntu Budgie 自带了大量的 Budgie <ruby> 小程序 <rt>  applet </rt></ruby>和<ruby> 微应用 <rt>  min-app </rt></ruby>。它们可以通过 Ubuntu Budgie “欢迎”应用来安装。

* WeatherShow：显示未来五天的天气预报，每 3 小时更新一次
* Wallstreet：一个可以循环展示你的图像文件夹中的壁纸工具
* Visual-space：一个紧凑的工作区切换器
* Dropby：这个小程序可让你在面板上快速管理 U 盘
* Kangaroo：从面板上快速浏览文件夹
* 垃圾桶小程序：管理你的垃圾桶
* Fuzzyclock：以模糊的方式显示时间
* 工作区秒表：允许你跟踪在每个工作区花费的时间

完整的变更和更新列表，请访问[变更日志](https://ubuntubudgie.org/2020/04/21/ubuntu-budgie-20-04lts-release-notes-for-18-04-upgraders/)。

#### 系统要求

Ubuntu Budgie 20.04 更新了[系统要求](https://ubuntubudgie.org/downloads/)：

* 4GB 或以上的内存
* 64 位的 Intel 和 AMD 处理器
* 在 CSM 模式下启动的 UEFI 电脑
* 基于英特尔的现代苹果电脑

如你所见，Budgie 并不是一个真正的轻量级选择。

#### 安装的应用

Ubuntu Budgie 中默认包含了以下有用的应用程序：

* AisleRiot Solitaire
* Geary
* Catfish 搜索工具
* Cheese 网络摄像头工具
* GNOME Drawing
* GNOME 2048
* GNOME Mahjongg
* GNOME Mines
* GNOME Sudoku
* Gthumb
* LibreOffice
* Maps
* Rhythmbox
* Tilix
* Ubuntu Budgie 欢迎应用
* Evince 文档查看器
* Plank
* Celluloid

### 安装

起初，我无法让 Ubuntu Budgie 进入<ruby> 即用 <rt>  live </rt></ruby>环境来安装它。结果发现 Ubuntu Budgie 试图通过 EFI 来启动，我从 [Ubuntu Budgie 论坛](https://discourse.ubuntubudgie.org/t/cant-get-ub-to-boot/3397)得到了解决方案。

当出现紫色的闪屏时，我必须按下 `ESC` 键并选择 `legacy`。之后，它就如常启动了，安装也没有问题了。我只在 Ubuntu Budgie 上遇到过这个问题。我下载并尝试了 Ubuntu MATE 20.04 ISO，但没有遇到类似的问题。

### Ubuntu Budgie 20.04 的体验

除了这个安装上的小问题，我使用 Ubuntu Budgie 的体验非常愉快。自 [Ikey](https://itsfoss.com/ikey-doherty-serpent-interview/) 第一次创建 Budgie 桌面以来，Budgie 桌面已经进步了很多，并且已经成为一个非常成熟的选择。Ubuntu Budgie 的目标是“生产一个面向桌面的传统发行版”。它确实做到了极致。他们所做的所有改变都在不断地为他们的产品增添更多的光彩。

总的来说，Ubuntu Budgie 是一个非常漂亮的发行版。从默认的主题到壁纸选择，你可以看出他们付出了很多努力，视觉体验非常吸引人。

需要注意的是，Ubuntu Budgie 并不适合低配置的系统。我在戴尔 Latitude D630 上运行它。在没有打开任何应用程序的情况下，它使用了大约 700MB 的内存。

在 Ubuntu Budgie 中，让我喜欢的部分超乎我的预期，其中一个部分是 [Tilix 终端模拟器](https://gnunn1.github.io/tilix-web/)。Tilix 允许你在右侧或下方添加终端窗口。它有很多很多功能，我简直爱死了它，我打算在我的其他 Linux 系统上也安装它。

### 关于 Ubuntu Budgie 20.04 的最后感想

Ubuntu Budgie 是众多官方版本中一个很受欢迎的新版本。Budgie 给人的感觉非常流畅和精致。它不会让你觉得碍手碍脚，而是帮你完成工作。

如果你厌倦了当前的桌面环境，想体验一下新的东西，不妨来看看。如果你对当前的环境感到满意，那么就试试 Ubuntu Budgie 的即用 DVD。你可能会喜欢上它。

你是否已经尝试过 Ubuntu 20.04 Budgie？你对它的使用体验如何？如果没有用过，你现在使用的是哪个版本的 Ubuntu 20.04？

---

via: <https://itsfoss.com/ubuntu-budgie-20-04-review/>

作者：[John Paul](https://itsfoss.com/author/john/) 选题：[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: • Canonical 因在 Ubuntu 每日消息（MOTD）中植入广告而遭到抨击 • Jakarta EE 9 Milestone 1 发布 从 javax.* 过渡到 jakarta.* • iOS 14 与 macOS Big Sur 将支持 DNS 加密通信 • Word 编辑器迎来“在线查重”功能 • Android 12 曝光：谷歌欲全面抛弃对 32 位的支持

应该是DNSoverTLS吧

# #新闻拍一拍# Fedora 开发者再次讨论使用 Nano 替代 Vi/Vim 作为默认文本编辑器

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

#### Fedora 开发者再次讨论使用 Nano 替代 Vi/Vim 作为默认文本编辑器

类似的建议去年就已经讨论过一次，现在再次讨论 Fedora 是否应该默认使用 Nano 而不是 Vi，因为 Vi 目前在 git 提交和其他基于 CLI 的文本编辑中被用作默认编辑器。而这对于那些改用 Fedora 而又不知道如何使用 Vi 的用户来说，无疑是增加了使用障碍。支持此提案的开发者认为，将 Nano 作为默认编辑器不要求使用者具备专业知识，这对用户更友好，也让 Fedora 更加易于使用。支持者认为 Nano 是适用于每个人的选项。

来源：[开源中国](https://www.oschina.net/news/116746/fedora-nano-2020-default-prop)

>
> 拍一拍：Vi/Vim 已经成为 Linux 世界的象征性标志，也是很多 Linux 用户的入门门槛之一。究竟 Linux 是该向更易用发展；还是保持传统，过滤一些迈不过门槛的用户呢？
>
>
>

#### Canonical 因在 Ubuntu 每日消息（MOTD）中植入广告而遭到抨击

在一则讨伐 Canonical 的 Reddit 帖子中，已经收到了上千网友的评论。屏幕截图显示，Ubuntu 中混入了一条附带链接的文字广告：“如果你一直在等待面向 macOS 的完美 Kubernetes 开发解决方案，现在是时候体验 Microk8s 了！”截至发稿时，Canonical 仍未对 MOTD 中包含的广告链接发表评论。

>
> 拍一拍：有自家的发行版真好，可以随便做广告。
>
>
>

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

#### Jakarta EE 9 Milestone 1 发布 从 javax.\* 过渡到 jakarta.\*

此版本将所有 API 更新为在包名称中使用 jakarta.\*。至于为什么变化，这是因为 Oracle 拒绝交出相关权利，过渡实际上就是此版本的全部内容。

来源：[开源中国](https://www.oschina.net/news/116740/jakarta-ee-9-m1-released)

>
> 拍一拍：不肯融入开放世界的，必将被开放世界所抛弃。
>
>
>

#### iOS 14 与 macOS Big Sur 将支持 DNS 加密通信

目前苹果已加入 Mozilla、谷歌和微软等公司的加密 DNS 通信倡议，积极在自家产品中中改进隐私安全体验。今秋正式发布的时候，该公司设备用户将同时体验到 DNS-over-HTTPS（简称 DoH）和 DNS-over-LTS（简称 DoT）带来的好处。启用了 DoH 和 DoT 之后，域名查询和接收响应的过程都会被加密处理，可有效防止被第三方和恶意行为者追踪用户的浏览历史。

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

>
> 拍一拍：一方面技术进步让个人隐私无从隐身，另一方面新的保护隐私的技术也在不断进步，技术世界就是在不断博弈之中前进。
>
>
>

#### Word 编辑器迎来“在线查重”功能

据悉，该功能由必应提供支撑，可在显示文档内容的相似性比例，并使之更轻松地插入相应的引文。结合相似性检测和引文工具，学生们不仅可以规避抄袭查重。目前这项功能仅提供了对英语文本的支持。作为三月份预告的 Microsoft 365 更新的一部分，该功能将先向教育版订阅者推送，然后再分发给家庭和企业版订阅用户。

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

>
> 拍一拍：编辑器就支持“查重”会省心一些，不过，问题在于，如何写出符合查重标准的文章吧？
>
>
>

#### Android 12 曝光：谷歌欲全面抛弃对 32 位的支持

因为 32 位的固有限制，不少主流操作系统已经切换到 64 位环境，比如 iOS 11、macOS Catalina 等，Windows 10 也自 v2004 版本开始停止向 OEM 分发 32 位系统。下面，该 Android了。据开发者爆料，Android S（按照字母排序，对应安卓 12 系统）的 x86\_64 模拟器已经停止对 32 位的支持，此乃破天荒的头一次。

来源：[快科技](https://www.cnbeta.com/articles/tech/996133.htm)

>
> 拍一拍：世界总是不经意间慢慢抛弃很多旧的东西，现在轮到了 32 位架构了。
>
>
>


使用 Plotly 来简化 Python 中的数据可视化

# 使用 Plotly 来简化 Python 中的数据可视化

>
> Plotly 是一个数据绘图库，具有整洁的接口，它旨在允许你构建自己的 API。
>
>
>

Plotly 是一个绘图生态系统，可以让你在 [Python](https://opensource.com/resources/python) 以及 JavaScript 和 R 中进行绘图。在本文中，我将重点介绍[使用 Python 库进行绘图](/article-12327-1.html)。

Plotly 有三种不同的 Python API，你可以选择不同的方法来使用它：

* 类似于 Matplotlib 的面向对象的 API
* 数据驱动的 API，通过构造类似 JSON 的数据结构来定义绘图
* 类似于 Seaborn 的高级绘图接口，称为 “Plotly Express” API

我将通过使用每个 API 来绘制相同的图来探索它们：英国大选结果的分组柱状图。

在我们进一步探讨之前，请注意，你可能需要调整你的 Python 环境来让这段代码运行，包括以下内容：

* 运行最新版本的Python（[Linux](https://opensource.com/article/20/4/install-python-linux)、[Mac](file:///Users/xingyuwang/develop/TranslateProject-wxy/translated/tech/thttps:/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')

```

现在我们可以继续进行了。

### 使用图对象来绘制图

Plotly 面向对象的 API 被称为 `graph_objects`，它有点类似于 [Matplotlib 的面向对象 API](https://opensource.com/article/20/5/matplotlib-python)。

要创建一个柱状图，你可以构造一个包含四个柱状图的对象：

```
# 导入 Plotly 和数据
import plotly.graph_objects as go
from votes import wide as df

# 得到 x 列表
years = df['year']
x = list(range(len(years)))

# 定义绘图
bar_plots = [
  go.Bar(x=x, y=df['conservative'], name='Conservative', marker=go.bar.Marker(color='#0343df')),
  go.Bar(x=x, y=df['labour'], name='Labour', marker=go.bar.Marker(color='#e50000')),
  go.Bar(x=x, y=df['liberal'], name='Liberal', marker=go.bar.Marker(color='#ffff14')),
  go.Bar(x=x, y=df['others'], name='Others', marker=go.bar.Marker(color='#929591')),
]

# 指定样式
layout = go.Layout(
  title=go.layout.Title(text="Election results", x=0.5),
  yaxis_title="Seats",
  xaxis_tickmode="array",
  xaxis_tickvals=list(range(27)),
  xaxis_ticktext=tuple(df['year'].values),
)

# 绘制柱状图
fig = go.Figure(data=bar_plots, layout=layout)

# 告诉 Plotly 去渲染
fig.show()

```

与 Matplotlib 不同的是，你无需手动计算柱状图的 `x` 轴位置，Plotly 会帮你适配。

最终结果图：

*A multi-bar plot made using Graph Objects (© 2019 [Anvil](https://anvil.works/blog/plotting-in-plotly))*

### 使用 Python 数据结构来绘图

你还可以使用 Python 基本数据结构来定义绘图，它与面对对象 API 具有相同的结构。这直接对应于 Plotly 的 JavaScript 实现的 JSON API。

```
# 定义绘图数据
fig = {
    'data': [
        {'type': 'bar', 'x': x, 'y': df['conservative'], 'name': 'Conservative', 'marker': {'color': '#0343df'}},
        {'type': 'bar', 'x': x, 'y': df['labour'], 'name': 'Labour', 'marker': {'color': '#e50000'}},
        {'type': 'bar', 'x': x, 'y': df['liberal'], 'name': 'Liberal', 'marker': {'color': '#ffff14'}},
        {'type': 'bar', 'x': x, 'y': df['others'], 'name': 'Others', 'marker': {'color': '#929591'}},
    ],
    'layout': {
        'title': {'text': 'Election results', 'x': 0.5},
        'yaxis': {'title': 'Seats'},
        'xaxis': {
            'tickmode': 'array',
            'tickvals': list(range(27)),
            'ticktext': tuple(df['year'].values),
        }
    }
}

# 告诉 Plotly 去渲染它
pio.show(fig)

```

最终结果与上次完全相同：

*A multi-bar plot made using JSON-like data structures (© 2019 [Anvil](https://anvil.works/blog/plotting-in-plotly))*

#### 使用 Plotly Express 进行绘图

[Plotly Express](https://plot.ly/python/plotly-express/) 是对图对象进行封装的高级 API。

你可以使用一行代码来绘制柱状图：

```
# 导入 Plotly 和数据
import plotly.express as px
from votes import long as df

# 定义颜色字典获得自定义栏颜色
cmap = {
    'Conservative': '#0343df',
    'Labour': '#e50000',
    'Liberal': '#ffff14',
    'Others': '#929591',
}

# 生成图
fig = px.bar(df, x="year", y="seats", color="party", barmode="group", color_discrete_map=cmap)

```

这里使用了<ruby>   长表  <rt>  Long Form </rt></ruby> 数据，也称为“整洁数据”。这些列代表年份、政党和席位，而不是按政党划分。这与在 [Seaborn](https://opensource.com/article/20/5/seaborn-visualization-python) 中制作柱状图非常相似。

```
>> print(long)
     year         party  seats
0    1922  Conservative    344
1    1923  Conservative    258
2    1924  Conservative    412
3    1929  Conservative    260
4    1931  Conservative    470
..    ...           ...    ...
103  2005        Others     30
104  2010        Others     29
105  2015        Others     80
106  2017        Others     59
107  2019        Others     72

[108 rows x 3 columns]

```

你可以访问底层的图对象 API 进行详细调整。如添加标题和 `y` 轴标签：

```
# 使用图对象 API 来调整绘图
import plotly.graph_objects as go
fig.layout = go.Layout(
    title=go.layout.Title(text="Election results", x=0.5),
    yaxis_title="Seats",
)

```

最后，让 Plotly 渲染：

```
fig.show()

```

这将在未使用的端口上运行一个临时 Web 服务器，并打开默认的 Web 浏览器来查看图像（Web 服务器将会马上被关闭）。

不幸的是，结果并不完美。`x` 轴被视为整数，因此两组之间的距离很远且很小，这使得我们很难看到趋势。

*A multi-bar plot made using Plotly Express (© 2019 [Anvil](https://anvil.works/blog/plotting-in-plotly))*

你可能会尝试通过将 `x` 值转换为字符串来使 Plotly Express 将其视为字符串，这样它就会以均匀的间隔和词法顺序来绘制。不幸的是，它们的间隔还是很大，像在 `graph_objects`中那样设置 `xaxis_tickvals` 也不行。

与 [Seaborn](https://opensource.com/article/20/5/seaborn-visualization-python) 中的类似示例不同，在这种情况下，抽象似乎没有提供足够的[应急方案](https://anvil.works/blog/escape-hatches-and-ejector-seats)来提供你想要的东西，但是也许你可以编写*自己*的 API？

### 构建自己的 Plotly API

对 Plotly 的操作方式不满意？那就构建自己的 Plotly API！

Plotly 的核心是一个 JavaScript 库，它使用 [D3](https://d3js.org/) 和 [stack.gl](http://stack.gl/) 进行绘图。JavaScript 库的接口使用指定的 JSON 结构来绘图。因此，你只需要输出 JavaScript 库喜欢使用的 JSON 结构就好了。

Anvil 这样做是为了创建一个完全在浏览器中工作的 Python Plotly API。

*Plotly uses a JavaScript library to create plots, driven by libraries in other languages via JSON (© 2019 [Anvil](https://anvil.works/blog/plotting-in-plotly))*

在 Anvil 版本中，你可以同时使用图对象 API 和上面介绍的 Python 数据结构方法。运行完全相同的命令，将数据和布局分配给 Anvil 应用程序中的 [Plot 组件](https://anvil.works/docs/client/components/plots)。

这是用 Anvil 的客户端 Python API 绘制的多列柱状图：

```
# 导入 Anvil 库
from ._anvil_designer import EntrypointTemplate
from anvil import *
import anvil.server

# 导入客户端 Plotly
import plotly.graph_objs as go

# 这是一个 Anvil 表单
class Entrypoint(EntrypointTemplate):
  def __init__(self, **properties):
    # Set Form properties and Data Bindings.
    self.init_components(**properties)

    # 从服务器获取数据
    data = anvil.server.call('get_election_data')

    # 获取一个方便的 x 值列表
    years = data['year']
    x = list(range(len(years)))

    # 定义绘图
    bar_plots = [
      go.Bar(x=x, y=data['conservative'], name='Conservative', marker=go.Marker(color='#0343df')),
      go.Bar(x=x, y=data['labour'], name='Labour', marker=go.Marker(color='#e50000')),
      go.Bar(x=x, y=data['liberal'], name='Liberal', marker=go.Marker(color='#ffff14')),
      go.Bar(x=x, y=data['others'], name='Others', marker=go.Marker(color='#929591')),
    ]
    # 规定布局
    layout = {
      'title': 'Election results',
      'yaxis': {'title': 'Seats'},
      'xaxis': {
        'tickmode': 'array',
        'tickvals': list(range(27)),
        'ticktext': data['year'],
      },
    }

    # 生成多列柱状图
    self.plot_1.data = bar_plots
    self.plot_1.layout = layout

```

绘图逻辑与上面相同，但是它完全在 Web 浏览器中运行，绘图是由用户计算机上的 Plotly JavaScript 库完成的！与本系列的所有其它 [Python 绘图库](/article-12327-1.html)相比，这是一个很大的优势。因为其它 Python 库都需要在服务器上运行。

这是在 Anvil 应用中运行的交互式 Plotly 图：

*The election plot on the web using Anvil's [client-side-Python](https://anvil.works/docs/client/python) Plotly library (© 2019 [Anvil](https://anvil.works/blog/plotting-in-plotly))*

你可以[复制此示例](https://anvil.works/login?app-name=Plotting%20in%20Plotly&app-author=shaun%40anvil.works)作为一个 Anvil 应用程序（注意：Anvil 需要注册才能使用）。

在前端运行 Plotly 还有另一个优势：它为自定义交互行为提供了更多选项。

### 在 Plotly 中自定义交互

Plotly 绘图不仅是动态的，你可以自定义它们的互动行为。例如，你可以在每个柱状图中使用 `hovertemplate` 自定义工具提示的格式：

```
    go.Bar(
      x=x,
      y=df['others'],
      name='others',
      marker=go.bar.Marker(color='#929591'),
      hovertemplate='Seats: <b>%{y}</b>',
    ),

```

当你把这个应用到每个柱状图时，你会看到以下结果：

*A multi-bar plot with custom tool-tips (© 2019 [Anvil](https://anvil.works/blog/plotting-in-plotly))*

这很有用，当你想要在某些事件发生时执行任何你想要的代码就更好了（例如，当用户将鼠标悬停在栏上，你想要显示一个相关选举的信息框）。在 Anvil 的 Plotly 库中，你可以将事件处理程序绑定到诸如悬停之类的事件，这使得复杂的交互成为可能。

*A multi-bar plot with a hover event handler (© 2019 [Anvil](https://anvil.works/blog/plotting-in-plotly))*

你可以通过将方法绑定到绘图的悬停事件来实现：

```
  def plot_1_hover(self, points, **event_args):
    """This method is called when a data point is hovered."""
    i = points[0]['point_number']
    self.label_year.text = self.data['year'][i]
    self.label_con.text = self.data['conservative'][i]
    self.label_lab.text = self.data['labour'][i]
    self.label_lib.text = self.data['liberal'][i]
    self.label_oth.text = self.data['others'][i]
    url = f"https://en.wikipedia.org/wiki/{self.data['year'][i]}_United_Kingdom_general_election"
    self.link_more_info.text = url
    self.link_more_info.url = url

```

这是一种相当极端的交互性，从开发人员的角度来看，也是一种极端的可定制性。这都要归功于 Plotly 的架构 —— 它有一个简洁的接口，明确的设计是为了让你建立自己的API。如果到处都能看到这种伟大的设计，那将会很有帮助！

### 使用 Bokeh 进行自定义交互

现在你已经了解了 Plotly 如何使用 JavaScript 来创建动态图，并且可以使用 Anvil 的客户端编写 Python 代码在浏览器中实时编辑它们。

Bokeh 是另一个 Python 绘图库，它可以输出可嵌入 Web 应用程序的 HTML 文档，并获得与 Plotly 提供的功能类似的动态功能（如果你想知道如何发音，那就是 “BOE-kay”）。

---

via: <https://opensource.com/article/20/5/plotly-python>

作者：[Shaun Taylor-Morgan](https://opensource.com/users/shaun-taylor-morgan) 选题：[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/) 荣誉推出


Homebrew：让你从 Mac 切换到 Linux 更轻松

除了制造文件冲突，我看不出在主流distro下使用homebrew有任何意义

文章主要是帮助 Mac 用户平滑过渡到 Linux，并非推荐 Linux 用户使用 Homebrew。

# Homebrew：让你从 Mac 切换到 Linux 更轻松

>
> 不管你是想要更舒服地从 Mac 搬到 Linux，还是不满意常规的 Linux 包管理器，都可以试试 Homebrew。
>
>
>

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

[Homebrew](https://brew.sh/) 项目最初是为了给 Mac 用户提供一个非官方的 Linux 式的包管理器。用户很快就爱上了它友好的界面以及帮助性的提示，而且，它已经被移植到 Linux 系统 —— 这看起来像是一个奇怪的命运转折。

一开始，有两个分开的项目分别针对 macOS 和 Linux （Homebrew 与 Linuxbrew），但是现在是由 Homebrew 核心管理着这两个操作系统。由于我正 [从 Mac 切换到 Linux](https://opensource.com/article/19/10/why-switch-mac-linux)，所以一直在研究我在 macOS 最常用的开源软件在 Linux 表现如何，最终，我很高兴地发现 Homebrew 对 Linux 的支持太赞了！

### 为什么要在 Linux 使用 Homebrew 呢？

长期使用 Linux 的用户对 Homebrew 的第一反应是：“为什么不直接使用……呢”，省略号代表他们喜欢的某个 Linux 包管理器。基于 Debian 的系统早就有了 `apt`，基于 Fedora 的系统则有 `dnf` 和 `yum`，并且像 Flatpak 跟 AppImage 这样的项目，在两种系统上都能流畅运行。我花了不少时间尝试这些技术，不得不说，它们都有其强大之处。

那我为什么还要 [坚持使用 Homebrew](https://opensource.com/article/20/6/homebrew-mac) 呢？首先，我对它非常熟悉。在为我过去使用的专有软件寻找开源替代品的过程中，我已经学会了许多使用方法，而保持一些熟悉的东西，比如 Homebrew，可以让我专注于一次学习一件事情，而不是被不同系统间的差异搞垮。

此外，我没有看到哪一个包管理器像 Homebrew 一样，对用户如此友好。正如默认的帮助命令一样，命令井然有序：

```
$ brew -h
Example usage:
  brew search [TEXT|/REGEX/]
  brew info [FORMULA...]
  brew install FORMULA...
  brew update
  brew upgrade [FORMULA...]
  brew uninstall FORMULA...
  brew list [FORMULA...]

Troubleshooting:
  brew config
  brew doctor
  brew install --verbose --debug FORMULA

Contributing:
  brew create [URL [--no-fetch]]
  brew edit [FORMULA...]

Further help:
  brew commands
  brew help [COMMAND]
  man brew
  <https://docs.brew.sh>

```

过于简短的输出可能会被误解为它功能局限，但是你简单看看每一个子命令，都有很丰富的功能。虽然上面的列表只有短短 23 行，但对高级用户来说，光是子命令 `install` 就包含整整 79 行的帮助信息：

```
$ brew --help | wc -l
23
$ brew install --help | wc -l
79

```

它可以选择忽略或者安装依赖关系，也可以选择用源代码编译以及用什么编译器来编译某个确切的上游 Git 提交，或者选择应用的官方 “灌装” 版。总而言之，Homebrew 即适合新手，也同样能满足老鸟。

### 开始在 Linux 使用 Homebrew

如果你想要试着使用 Homebrew，可以用这个单行脚本在 Mac 或者 Linux 上进行安装：

```
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

```

这条命令会立即开始安装 Homebrew。如果你比较谨慎，可以使用 `curl` 将该文件下载到本地，检查完毕之后再运行。

```
$ curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh --output homebrew_installer.sh
$ more homebrew_installer.sh # 审核该脚本，直到你觉得没问题了
$ bash homebrew_installer.sh

```

对 Linux 的安装步骤还包括如何配置点文件，对于 Debian 系统来说是 `~/.profile`，对于 Fedora 系统是 `~/.bash_profile`。

```
$ test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
$ test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile
$ echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile

```

为了确认已经安装好，Homebrew 团队提供一个空的 `hello` “秘方” 供测试：

```
$ brew install hello
==> Downloading https://linuxbrew.bintray.com/bottles/hello-2.10.x86_64_linux.bottle.tar.gz
######################################################################## 100.0%
==> Pouring hello-2.10.x86_64_linux.bottle.tar.gz
?  /home/linuxbrew/.linuxbrew/Cellar/hello/2.10: 52 files, 595.6KB

```

看起来安装毫无问题，让我来试试更多操作。

### 命令行工具 Brew

Homebrew 宣称自己是一款默认只 “安装你需要而 [Linux] 没有的东西”的应用程序。

你可以用 `brew` 命令安装任何打包在 Homebrew 中的命令行软件。这些包的定义文件叫做 “<ruby> 秘方 <rt>  formula </rt></ruby>”，而且它们通过“<ruby> 瓶子 <rt>  bottle </rt></ruby>”来编译并分享。在 Homebrew 的世界里，还有许多 “啤酒方面” 的术语，但这个包管理器主要目的是让软件便于使用。

都有些什么样的软件呢？对我这样的技术玩家（既然你已经在读这篇文章，估计你也是）来说最方便的东西。例如，便利的 `tree` 命令，可以展示目录结构，或者 `pyenv`，我用它来 [在 Mac 管理不同版本 Python](https://opensource.com/article/20/4/pyenv)。

你可以用 `search` 命令查看所有可以安装的“秘方”，在后面加上 `wc` 命令看看一共有多少：

```
# -l 选项统计行数
$ brew search | wc -l
    5087

```

迄今为止，一共有 5000 多个 “秘方”，这囊括了很多软件。需要注意的是：并非所有 “秘方” 都能在 Linux 运行。在 `brew search --help` 输出中有一节提到可以按软件运行的操作系统来筛选软件。它会在浏览器打开用于每个操作系统的软件仓库。我运行的是 Fedora，所以我会用它来试一试：

```
$ brew search --fedora tree

```

浏览器打开了网址 `https://apps.fedoraproject.org/packages/s/tree`，向我展示了所有 Fedora 的可用选项。你也可以通过其它方法进行浏览。“秘方” 被集中整理到由操作系统划分的核心仓库当中（Mac 在 [Homebrew Core](https://github.com/Homebrew/homebrew-core)，Linux 在 [Linux Core](https://github.com/Homebrew/linuxbrew-core)）。同样也可以通过 Homebrew API [在网页显示](https://formulae.brew.sh/formula/)。

即使有这些选择，我还是通过其它用户的推荐找到很多新工具。我列出一些我最喜欢的工具，你可以在里面找点灵感：

* `pyenv`、`rbenv` 和 `nodenv` 用来管理（相应的） Python、Ruby 和 Node.js 版本
* `imagemagick` 用于脚本化编辑图片
* `pandoc` 用于脚本化转换文档格式（我通常将 .docx 文件转成 .md 或者 .html）
* `hub` 为 GitHub 用户提供 [更好的 Git 体验](https://opensource.com/article/20/3/github-hub)
* `tldr` 展示了命令工具的使用范例

想要深入了解 Homebrew，可以去 [trldr 页面](https://github.com/tldr-pages/tldr) 看看，比起应用的 man 页面，它要友好得多。使用 `search` 命令确认你可以安装：

```
$ brew search tldr
==> Formulae
tldr ✔

```

太好了！对勾说明你可以安装。那么继续吧：

```
$ brew install tldr
==> Downloading https://linuxbrew.bintray.com/bottles/tldr-1.3.0_2.x86_64_linux.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring tldr-1.3.0_2.x86_64_linux.bottle.1.tar.gz
?  /home/linuxbrew/.linuxbrew/Cellar/tldr/1.3.0_2: 6 files, 63.2KB

```

Homebrew 提供了编译好的二进制文件，所以你不必在本地机器上从源码编译。这能节省很多时间，也不用听 CPU 风扇的噪声。我很欣赏 Homebrew 的另外一点是，你不完全理解每一个选项的含义也不会影响正常使用。若你想自己编译，可以在 `brew install` 命令后面加上 `-s` 或者 `--build-from-source` 标识，这样就能从源码编译 “秘方”（即便已经有一个 “瓶子” 存在）。

同样，软件底层的复杂性也很有意思。使用 `info` 可以查看 `tldr` 软件的依赖管理，“秘方” 的源代码存放在磁盘上的何处，甚至还能查看公开分析。

```
$ brew info tldr
tldr: stable 1.3.0 (bottled), HEAD
Simplified and community-driven man pages
https://tldr.sh/
Conflicts with:
  tealdeer (because both install `tldr` binaries)
/home/linuxbrew/.linuxbrew/Cellar/tldr/1.3.0_2 (6 files, 63.2KB) *
  Poured from bottle on 2020-06-08 at 15:56:15
From: https://github.com/Homebrew/linuxbrew-core/blob/master/Formula/tldr.rb
==> Dependencies
Build: pkg-config ✔
Required: libzip ✔, curl ✔
==> Options
--HEAD
        Install HEAD version
==> Analytics
install: 197 (30 days), 647 (90 days), 1,546 (365 days)
install-on-request: 197 (30 days), 646 (90 days), 1,546 (365 days)
build-error: 0 (30 days)

```

### 从 Mac 到 Linux 的一点不足

在 macOS，Homebrew 的 `cask`（“酒桶”）子命令可以让用户使用命令行安装、管理整个应用软件。不幸的是，`cask`还不能在任何 Linux 发行版上使用。我在安装一个开源工具时发现了这点：

```
$ brew cask install tusk
Error: Installing casks is supported only on macOS

```

我在 [论坛上](https://discourse.brew.sh/t/add-linux-support-to-existing-cask/5766) 问了一下，很快得到其他用户的反馈。总结一下，方案如下：

* 复刻 Homebrew 项目，构建这个特性，然后像别人展示其价值
* 给该软件写一个 “秘方”，然后从源代码编译
* 为该软件创建一个第三方仓库

最后一个是我最感兴趣的。Homebrew 通过 [创建并维护 “<ruby> 水龙头 <rt>  tap </rt></ruby>”](https://docs.brew.sh/How-to-Create-and-Maintain-a-Tap) （另一个受啤酒影响的术语）管理第三方仓库。随着你对系统越来越熟悉，并想加入生态系统， “水龙头” 是值得研究的。

### 备份 Homebrew 的安装记录

我最中意的 Homebrew 特性之一就是你可以像其它任何 [用版本控制工具来备份点文件](https://opensource.com/article/19/3/move-your-dotfiles-version-control) 一样备份你的安装记录。为了实现这个目的，Homebrew 提供 `bundle`（“捆扎”）子命令，它可以控制一个叫 `dump`（“倾倒”）的子命令生成一个 `Brewfile`。这个文件包含你目前所有安装的工具列表，可以重复使用。进入你想使用的目录然后运行命令，它会根据你所安装的软件生成 `Brewfile`：

```
$ cd ~/Development/dotfiles # This is my dotfile folder
$ brew bundle dump
$ ls Brewfile
Brewfile

```

当我换了一台机器，想要安装一样的软件时，进入含有 `Brewfile` 的文件夹，然后重新安装：

```
$ ls Brewfile
Brewfile
$ brew bundle

```

它会在我的新机器上安装所有列出的 “秘方”。

#### 在 Mac 和 Linux 同时管理 Brewfile

`Brewfile` 非常适合备份你目前的安装记录，但是如果某些在 Mac 上运行的软件无法运行在 Linux 呢？或者刚好相反？我发现不管是 Mac 还是 Linux，如果软件无法在当前操作系统运行，Homebrew 会优雅地忽略那一行。如果它遇到不兼容的请求（比如使用 `brew` 在 Linux 安装 “<ruby> 酒桶 <rt>  cask </rt></ruby>” 时），它会选择跳过，继续安装过程：

```
$ brew bundle --file=Brewfile.example

Skipping cask licecap (on Linux)
Skipping cask macdown (on Linux)
Installing fish
Homebrew Bundle complete! 1 Brewfile dependency now installed.

```

为了保持配置文件的简洁，我在两个操作系统上使用同一份 `Brewfile`，因为它只安装与操作系统相关的版本，所以我一直没有遇到任何问题。

### 使用 Homebrew 管理软件包

Homebrew 已经成了我必备的命令行工具，由于我很熟悉它，所以在 Linux 上的体验也充满乐趣。Homebrew 让我的工具井然有序，并且时刻保持更新，我愈发欣赏它在实用性与功能上找到的平衡点。我更喜欢将软件包管理的细节保持在用户需要了解的最小程度，大多数人都会从中受益。如果你已经很熟悉 Linux 包管理器了，Homebrew 可能会让你觉得很基础，但稍微深入一点看，就会发现它的高级选项远远超过本文的内容。

对 Linux 用户来说，他们有很多包管理器可以选择。如果你来自 MacOS，Homebrew 会让你宾至如归。

---

via: <https://opensource.com/article/20/6/homebrew-linux>

作者：[Matthew Broberg](https://opensource.com/users/mbbroberg) 选题：[lujun9972](https://github.com/lujun9972) 译者：[nophDog](https://github.com/nophDog) 校对：[wxy](https://github.com/wxy)

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


#新闻拍一拍# GCC 11 将默认前端语言改为 C++ 17

Summary: • Linux Mint 20 “Ulyana” 正式版发布 • 微软、哈佛宣布推出世界上第一个差分隐私开源平台

我都转用Clang了

# #新闻拍一拍# GCC 11 将默认前端语言改为 C++ 17

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

#### GCC 11 将默认前端语言改为 C++ 17

GCC 11 会将默认前端语言从 C++14 变更为 C++ 17。从 GCC 9 开始，对 C++ 17 的支持已经不再是实验性质，C++ 前端实现了完整的 C++ 17 语言，并且 C++ 标准库支持几乎也完成了。

来源：[开源中国](https://www.oschina.net/news/116763/gcc-11-cpp-17-default)

>
> 拍一拍：感觉 C++ 进展好快啊！但是现在最受工程界宠爱的语言已经不是 C++ 了。
>
>
>

#### Linux Mint 20 “Ulyana” 正式版发布

最新版本的操作系统搭载 Linux 内核 5.4，基于 Ubuntu 20.04，且支持时间一直延续到 2025 年。你可以在三种桌面环境中自由选择，它们分别是Cinnamon（4.6）、MATE（1.24）和 Xfce（4.14）。

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

>
> 拍一拍：更多详情，我们后面会专门撰文介绍。
>
>
>

#### 微软、哈佛宣布推出世界上第一个差分隐私开源平台

新平台由哈佛大学的 OpenDP 计划提供支持。该差分隐私开源平台可以在不实际暴露个人隐私的情况下，查询客户的数据。微软表示，从今天开始，任何想要使用该平台进行数据分析的人都可以获得其差分隐私专利下的免版税许可。该平台及其算法已经发布在 GitHub 上。

来源：[softpedia](https://news.softpedia.com/news/microsoft-harvard-announce-differential-privacy-open-source-platform-530360.shtml)

>
> 拍一拍：非常值得关注和鼓励的数据隐私平台，预期各个云服务商会提供相关的服务。
>
>
>


超过 75% 的开源软件安全漏洞存在于间接依赖中

# 超过 75% 的开源软件安全漏洞存在于间接依赖中

>
> JavaScript、Ruby 和 Java 是间接依赖中存在缺陷最多的生态系统。
>
>
>

开源项目中的绝大多数安全漏洞都存在于间接依赖关系中，而不是存在于直接加载的组件之中。

“汇总所有生态系统的数字后，我们发现间接依赖中存在的漏洞数量是直接依赖的三倍以上。”Snyk 的应用安全顾问 Alyssa Miller 在接受讨论 Snyk 的《[2020 年开源安全状况报告](https://info.snyk.io/sooss-report-2020)》的采访时说。

该报告研究了漏洞如何影响 JavaScript（npm）、Ruby（RubyGems）、Java（MavenCentral）、PHP（Packagist）和Python（PyPI）生态系统。

Snyk 表示，项目内部加载的主要组件所依赖的依赖库，受到了 86% 的 JavaScript 安全漏洞、81% 的 Ruby 漏洞和 74% 的 Java 漏洞的影响。

Snyk 认为，公司在扫描他们的主要依赖项是否存在安全问题时，如果不能探索其完整依赖树的多个层次，会导致发布或最终运行容易受到不可预见的缺陷影响的产品。

但是，虽然安全缺陷在 JavaScript、Ruby 和 Java 中普遍存在，但在 PHP 和 Python 中却不是这样，绝大多数缺陷都存在于直接依赖关系（主要组件）中。当然，这是有原因的。

“老实说，我发现这更多取决于生态系统内部本身的开发方法。”Miller 说。“尤其是 Java 和 Node.js 项目，似乎比其他生态系统更重地利用了依赖性。特别是，当你看到 Node.js 生态系统的庞大规模时，从其他包构建或利用关键功能的包是非常正常的。”

“询问任何 Node.js 开发人员，他们都可能会遇到这样的事，即在 npm 试图拉取所有必要的依赖关系时，等待很长时间才能打开一个项目，”Miller 补充说。“我们最喜欢的一个例子是一个 80 行的 Java 应用程序，指定了 7 个依赖关系。然而，当你走完整个依赖树时，你会发现有 59 个子依赖，突然间，80 行代码变成了 74 万行。”

“正如我们喜欢给它起的绰号，这种‘陌生人的危险’，是一些重大安全漏洞的根本原因，也是造成软件供应链安全复杂化的关键原因，”Miller说。

### 少量的缺陷会造成了巨大的影响

但 Snyk 团队并不只是看这些缺陷在开源生态系统中的位置，还看它们是什么类型的缺陷。

另一个有趣的发现是，2019 年发现的大部分新安全漏洞都是跨站脚本（XSS）缺陷，尽管数量很多，但这些缺陷只影响了一小部分实际运行的项目。

相反，在去年发现的所有缺陷中，有二十几个原型污染缺陷的影响最大，影响了超过 11.5 万个不同的开源项目，可能还有更多的私有项目也受影响。其中，jQuery 和 LoDash 的原型污染缺陷影响最大，因为这些框架是目前应用最广泛的 JavaScript 开发工具集。

但是，Snyk 团队在报告中还指出了另一个不寻常的地方，即“恶意软件包”被列为他们去年在项目中发现的第二大最常见的安全问题类型。这指的是故意出于恶意创建的开放源代码库，或者是开发人员帐户被黑并且代码中毒的库。

根据 Snyk 的说法，去年，被黑的或恶意的软件包是开源生态系统中第二大最常见的安全问题来源。“这些绝大多数（超过 87％）来自 npm （JavaScript）软件包，” Miller 说。

### 去年的安全问题不那么严重，但也不值得庆祝

此外，Snyk 还指出，他们在所扫描的所有五个生态系统中发现的缺陷数量下降了 20％。

“很难确定（它们因为什么下降），”Miller 说。“以我这种永久安全怀疑论者来说，这可能只是自然的退潮和流动的一部分。然而，在乐观的一面，我们确实看到了社区的一些关键变化，这可能意味着这不仅仅是这一年的异常值。”

“例如，我们看到所报告的跨站点脚本（XSS）漏洞比任何其他漏洞类型都多，它们只影响了我们当年扫描的总项目中的一小部分。这表明，XSS 可能不会影响到使用率更高因而更成熟的项目，这意味着人们可能更多关注安全编码技术方面。”

“此外，我们的调查显示，整个社区的态度开始将软件安全视为开发团队和安全团队（甚至在某种程度上是运营团队）之间的共同责任，”Miller 说。

“这种合作的改善无疑可以帮助推动围绕安全代码和安全使用开源包的更好的意识和战术措施。”

“我在安全领域工作了 15 年，我当然还没有准备好宣布某一年是事情出现转机的标志，但你可以认为这是一个趋势，我们将继续观察，看看未来几个月和整个 2020 年的情况如何。”

关于开源社区总体安全状况的其他见解，Snyk 的完整报告可在这里[下载](https://info.snyk.io/sooss-report-2020)。

---

via: <https://www.zdnet.com/article/more-than-75-of-all-vulnerabilities-reside-in-indirect-dependencies/>

作者：[Catalin Cimpanu](https://www.zdnet.com/meet-the-team/us/catalin.cimpanu/) 译者：[wxy](https://github.com/wxy) 校对： [wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](/article-12361-1.html) 荣誉推出


5 个简单步骤使你的 Ubuntu 看起来像 macOS

Summary: 在这篇文章中，我将向你展示如何使 Ubuntu 看起来像 macOS。

就是不想折腾这种不成熟的东西才买了mac

完全没必要折腾

沒啥實際意義，又麻煩，用慣了看慣了啥DE都一樣

没有意义啊，搞点实际的东西

很棒，但有點復雜<br />
你能寫詳細的安裝步驟嗎？

在这篇文章中，我将向你展示如何使 Ubuntu 看起来像 macOS。

# 5 个简单步骤使你的 Ubuntu 看起来像 macOS

定制是 [我为什么使用 Linux](https://itsfoss.com/why-use-linux/) 的一个主要原因。定制桌面 Linux 的道路是永无止境的。你可以更改图标、主题、字体、终端、添加屏幕小工具、[指示器小程序](https://itsfoss.com/best-indicator-applets-ubuntu/)、扩展等诸如此类的东西。

我们已经介绍了很多桌面环境定制的建议和技巧。在这篇文章中，我将向你展示如何使 Ubuntu 看起来像 macOS。

很多人使用 macOS，是因为它的简单和优雅的外观。你可能不同意这一点，但这仍然是一个流行的观点。甚至有的 Linux 发行版也有类似 macOS 外观和感觉。

一位读者要求我们展示如何使 Ubuntu 看起来像 macOS，因此我们写了这篇教程。事实上，这是一个用来展示桌面 Linux 定制能力的很好的示例。

不过，你没有必要为定制外观而安装一个新的发行版。你可以在你自己的系统上做一些调整来给予你一个类似 macOS 的外观。

### 如何给你的 Ubuntu Linux 进行 macOS 改造

尽管这篇文章是对 Ubuntu 的建议，但是你也可以在其它使用 GNOME 桌面环境的发行版中使用这些建议，几乎可以不做任何改动。请确保[检查一下你的桌面环境](/article-12124-1.html)。

说实话，即使你使用的是其它的桌面环境，你仍然可以得到一些关于要做哪些更改的提示。但是你必须确保使用你的桌面环境的工具按照步骤进行。

#### 必要条件: GNOME Tweaks 和 GNOME 扩展

请确保 [安装 GNOME Tweaks 工具](https://itsfoss.com/gnome-tweak-tool/)。你需要它来更改主题和图标。

你也需要 [启用 GNOME 扩展](/article-9447-1.html) 来更改 GNOME Shell 和添加重要的要点。

在你启用 GNOME 扩展后，你需要从 [GNOME 扩展](https://extensions.gnome.org/) 网站安装“用户主题” 扩展，或者只需要转到 [这个超链接](https://extensions.gnome.org/extension/19/user-themes/) ，并单击开关来将其打开。

我也希望你对 [在 Ubuntu 上安装主题](https://itsfoss.com/install-themes-ubuntu/) 有一定的了解。不过，我还是简单的谈了一下这个主题。

让我们依次看看每个步骤。

#### 步骤 1: 安装一个 macOS 风格的 GTK 主题

因为重点是使 GNOME 看起来像 macOS，所以你应该选择一个像 macOS 一样的主题。有很多主题都是像 macOS 一样的。

##### 下载一个你选择的主题

你可以转到 [Gnome-look](https://www.gnome-look.org/) 站点，并搜索关于 GTK3 的主题。如果你在 Gnome-look 网站上看到 “Pling” 字样，不用担心，它们都是来自同一个供应商。

你可以选择任何你想要的主题。下面是一些我认为你应该看看的macOS主题：

* [mcOS 11](https://www.pling.com/p/1220826)
* [McHigh Sierra](https://www.pling.com/p/1013714)
* [Catalina](https://www.pling.com/p/1226871)
* [McMojave](https://www.pling.com/p/1275087)

在这篇文章中，我将使用 “[McMojave](https://www.pling.com/p/1275087)”。你可以选择任何你想要的主题。你将在网站的右侧找到下拉式的下载按钮，单击它。

在这里你可以找到各种 “.tar.xz” 文件。这些不同的文件包含了相同的主题，但有一些小的差异。像在 “McMojave” 中，我们有像暗黑主题和明亮主题的变体。你可以尝试所有的主题，或者从之间随意选择一个你喜欢的。

##### 设置下载的主题

提取下载的主题，并复制这些提取的主题文件夹到 `.local/share/themes` 文件夹下。

打开 GNOME Tweak 工具，并更改应用程序和 Shell 的主题。在你更改主题的同时，你可以看到黄色、绿色和红色三个按钮，以及左上角的苹果标志。你也可以看到在面板项上的一些更改。

#### 步骤 2: 安装像 macOS 一样的图标

macOS 外观改造的下一步骤是使用像 macOS 一样的图标。

##### 下载图标集合

这里有一些我建议使用的图标集合，你可以从 Gnome-look 网站下载：

* [McMojave-circle](https://www.gnome-look.org/p/1305429/)
* [Mojave CT-icons](https://www.gnome-look.org/p/1210856/)
* [Cupertino icons](https://www.gnome-look.org/p/1102582/)

在这篇文章中，我将使用 “[McMojave-circle](https://www.gnome-look.org/p/1305429/)” ，你可以随意使用任何你喜欢的图标。

就像主题一样，你可以从右侧的下拉式的 “下载” 按钮下载图标集合。在这里你也可以找到同一种图标的不同版本。

##### 设置图标

现在设置下载的图标。为此，提取下载文件中的文件夹并复制它到你的家目录下的 `.icons` 文件夹。 查看这篇关于 [在 Ubuntu 中安装图标主题](https://itsfoss.com/install-themes-ubuntu/) 的文章。

这是这种图标看起来的样子：

#### 步骤 3: 添加类似 macOS 样子的坞站

没有类似 macOS 样子的<ruby> 坞站 <rt>  dock </rt></ruby>，你的 Ubuntu 就看起来不像 macOS。在 Linux 上有很多可用的坞站。我喜欢 “[Dash to Dock](https://github.com/micheleg/dash-to-dock)”，我会在这里使用它。

“Dash to Dock” 是一个 GNOME 扩展。到现在为止，你已经熟悉 GNOME 扩展。只需要转到 [这个超链接](https://extensions.gnome.org/extension/307/dash-to-dock/) ，并单击切换按钮来安装它。你的原本的坞站将自动被 “Dash to Dock” 所替换。

你可以通过右键单击 “show applications” 按钮（最右边的菜单按钮）并选择 “Dash to dock settings” 来更改设置。

#### 步骤 4: 使用 macOS 壁纸

大多数复杂的东西已经完成。现在是时候设置 macOS 壁纸了。你可以从下面的超链接下载 macOS 默认壁纸：

* [下载 macOS 壁纸](https://oswallpapers.com/category/mac-os/)

##### 更改桌面背景

我将使用 “Mojave Day” 壁纸。右键单击已下载的的图像，并选择 “设置为壁纸” 选项来更改壁纸。

在设置这个壁纸后，这是我系统外观的样子：

##### 更改锁屏壁纸

锁屏壁纸选项已经从 [Ubuntu 20.04](https://itsfoss.com/ubuntu-20-04-release-features/) 的设置中移除。现在它使用一个模糊的桌面壁纸作为锁屏壁纸。

要设置一个自定义锁屏壁纸，你可以使用 “[Lock screen background](https://extensions.gnome.org/extension/1476/unlock-dialog-background/)” 扩展。

打开 “Lock screen background” 扩展设置，并设置锁屏壁纸。

这是锁屏现在的样子。如果你感到好奇话，这里是 [如何在 Ubuntu 中截图锁屏](https://itsfoss.com/screenshot-login-screen-ubuntu-linux/)。

#### 步骤 5: 更改系统字体

这几年，macOS 的主要系统字体是 “San Francisco” 。但是，这个字体并不是公共领域的，而是像苹果生态系统中的许多其他东西一样，是专有字体。基于这个原因，你不能使用这种字体。

你能做的就是使用一种看起来像 San Francisc 字体一样的开源字体。我建议使用 Google 的 [Roboto](https://fonts.google.com/specimen/Roboto?query=robot) 字体，或 Adobe 的 [Source Sans Pro](https://adobe-fonts.github.io/source-sans-pro/) 。

[在 Ubuntu 中安装字体是很简单的](https://itsfoss.com/install-fonts-ubuntu/) 。下载 字体的 zip 文件，只需要在提取出来的文件夹中双击 ttf 文件。它会给你一个选项来逐一安装字体。

如果你想节省时间并一次安装所有的字体，提取其中所有的字体到你的家目录（`~/.fonts`）下的 `.fonts` 目录中。

在你安装字体后，你可以使用 GNOME Tweaks 工具来更改系统字体。

#### 额外提示：Spotlight 式的应用程序启动器（如果你像更进一步的话）

如果你是 macOS Spotlight 启动器的粉丝，那么你在 Linux 上也能找到类似的东西。我最喜欢的这类启动器的软件包是 “[Albert](https://albertlauncher.github.io/)”。

你可以 [在 Albert 网站上找到它的安装说明](https://albertlauncher.github.io/docs/installing/) 。

安装完成后，打开 Albert 并设置快捷键（你想打开该启动器的组合键）就可以了。我想，在 macOS 中 `Command + Space` 键是来启动 Spotlight；在 Ubuntu 中，你可以设置 `Super+Space` [快捷键](https://itsfoss.com/ubuntu-shortcuts/)。

你会会得到很多内置的主题，在下面的图片中，我使用 “Spotlight dark” 主题。

Albert 不能直接启动应用程序，你必须授予它在哪里可以进行搜索的权限。

在设置后，这是它看起来的样子：

这是我的 Ubuntu 20.04 在完成所有定制后的样子。它看起来像 macOS 吗? 仁者见仁，智者见智。

如此，这就是你如何使你的 GNOME 桌面看起来像 macOS 一样的步骤。正如我在开始时所说的，这是一个很好的 Linux 桌面定制功能的示例。

如果你有新的注意或有任何疑问；评论区全是你的地盘。

本文由 Sumeet 编写，并由 Abhishek Prakash 提供补充输入信息。

---

via: <https://itsfoss.com/make-ubuntu-look-like-macos/>

作者：[Sumeet](https://itsfoss.com/author/itsfoss/) 选题：[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: • 部分国内银行为兼容老旧 XP/IE6，篡改 IE 设置导致无法正常连接大多数 HTTPS 加密网站 • 旧金山市承认向勒索软件支付了超过百万美元赎金 • AWS 发布零编程应用构建服务 Honeycode

# #新闻拍一拍# 2020 年的 Linux 内核仍在为 Macintosh II 修复驱动

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

#### 2020 年的 Linux 内核仍在为 Macintosh II 修复驱动

隔一段时间就能看到 Linux 内核驱动对 Apple PowerBook 100 系列产品支持的改进。Linux 内核正在对其驱动程序进行一些修复和改进工作，以更好地支持 Macintosh II 系统上的 Apple Desktop Bus（苹果桌面总线）。开发者除了在 QEMU 内对代码进行测试外，这个驱动事实上还在真实的硬件环境 Apple Macintosh Centris 650 上进行了测试，这台诞生自 1993 年的电脑时钟频率为 25MHz，配备 4~24MB 的内存，80~500MB 的硬盘，以及其他当时领先的功能。

来源：[开源中国](https://www.oschina.net/news/116784/2020-linux-macintosh-2-adb)

>
> 拍一拍：不知道这台文物级的苹果机还能不能跑的动 Linux 内核。我觉得与其说这些内核驱动有用，感觉更像行为艺术。
>
>
>

#### 部分国内银行为兼容老旧 XP/IE6，篡改 IE 设置导致无法正常连接大多数 HTTPS 加密网站

国内部分商业银行提供的安全控件或者数字证书控件进行所谓的优化，会导致全网大多数 HTTPS 加密网站无法正常连接。该问题并不是微软导致的，而是这些控件会自动调整 IE 浏览器高级设置导致的。目前主流使用的 TLS 1.1~1.3 版安全协议均被取消勾选，而 SSL 3.0版协议竟然被勾选，SSL 3.0 版安全协议因为存在缺陷早在 2014 年便已停止支持。然而现在 HTTPS 网站多数仅支持 TLS 1.1~1.3版，部分网站甚至仅支持 TLS 1.2~1.3 因此自然与 IE 浏览器无法兼容。

来源：[蓝点网](https://www.landiannews.com/archives/76100.html)

>
> 拍一拍：这样迁就旧用户可能带来的风险更大，更别说这个不完善的策略带来的副作用。
>
>
>

#### 旧金山市承认向勒索软件支付了超过百万美元赎金

6 月 4 日，勒索软件 NetWalker 背后的攻击者在其暗网网站上将加州旧金山大学加入到了未支付赎金的受害者名单行列。6 月 19 日，加州旧金山从名单中移除了。6 月 26 日，加州旧金山发表声明，承认向 NetWalker 支付了 114 万美元赎金，表示被勒索软件加密的数据对学术工作非常重要，他们只能做出困难的决定支付赎金。

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

>
> 拍一拍：叫你们平时做备份和做安全防护吧，觉得贵。
>
>
>

#### AWS 发布零编程应用构建服务 Honeycode

Honeycode 让无编程经验的人能构建移动和 Web 应用。零编程工具最近一段时间比较流行，它被认为可以让没有多少经验的人快速构建所需应用，在疫情流行社会实现隔离政策期间可能更为有用。Honeycode 可免费使用，有付费选项。

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

>
> 拍一拍：程序员离被淘汰的日子越来越近了。
>
>
>


使用 Pygal 在 Python 中设置数据图的样式

Summary: 介绍一种更时尚的 Python 绘图库。

介绍一种更时尚的 Python 绘图库。

# 使用 Pygal 在 Python 中设置数据图的样式

>
> 介绍一种更时尚的 Python 绘图库。
>
>
>

[Python](https://opensource.com/article/20/4/plot-data-python) 有很多可以将数据可视化的库。其中一个互动性较强的库是 Pygal，我认为这个库适合喜欢漂亮事物的人。它可以生成用户可以与之交互的漂亮的 SVG（可缩放矢量图形）文件。SVG 是交互式图形的标准格式，仅使用几行 Python 就可以带来丰富的用户体验。

### 使用 Pygal 进行时尚的 Python 绘图

在本文中，我们要重新创建多柱状图，用来表示 1966 年至 2020 年英国大选的结果：

在继续之前，请注意你可能需要调整 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')

```

现在我们可以继续进行了。。数据如下所示：

```
        year  conservative  labour  liberal  others
0       1966           253     364       12       1
1       1970           330     287        6       7
2   Feb 1974           297     301       14      18
..       ...           ...     ...      ...     ...
12      2015           330     232        8      80
13      2017           317     262       12      59
14      2019           365     202       11      72

```

在 Pygal 中进行绘制会以一种易于阅读的方式显示。首先，我们以一种简化柱状图定义的方式定义样式对象。然后我们将自定义样式以及其他元数据传递给 `Bar` 对象：

```
import pygal
from pygal.style import Style

custom_style = Style(
    colors=('#0343df', '#e50000', '#ffff14', '#929591'),
    font_family='Roboto,Helvetica,Arial,sans-serif',
    background='transparent',
    label_font_size=14,
)

c = pygal.Bar(
    title="UK Election Results",
    style=custom_style,
    y_title='Seats',
    width=1200,
    x_label_rotation=270,
)

```

然后，我们将数据添加到 `Bar` 对象中：

```
c.add('Conservative', df['conservative'])
c.add('Labour', df['labour'])
c.add('Liberal', df['liberal'])
c.add('Others', df['others'])

c.x_labels = df['year']

```

最后，我们将图另存为 SVG 文件：

```
c.render_to_file('pygal.svg')

```

结果是一个交互式 SVG 图，你可以在此 gif 中看到：

精美简单，并且效果漂亮。

### 总结

Python 中的某些绘图工具需要非常详细地构建每个对象，而 Pygal 从一开始就为你提供这些。如果你手边有数据并且想做一个干净、漂亮、简单的交互式图表，请尝试一下 Pygal。

---

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

作者：[Shaun Taylor-Morgan](https://opensource.com/users/shaun-taylor-morgan) 选题：[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: 安装精简版树莓派系统，让你的树莓派更加轻盈。

我的树莓派已经吃了两年灰了。

卖给我好了，80块包邮，收了。

安装精简版树莓派系统，让你的树莓派更加轻盈。

# 定制用于日常使用的树莓派系统

>
> 安装精简版树莓派系统，让你的树莓派更加轻盈。
>
>
>

你有一个运行<ruby>   树莓派系统  <rt>  Raspberry Pi OS </rt></ruby>（以前称为 Raspbian）操作系统的<ruby> 树莓派 <rt>  Raspberry Pi </rt></ruby>，你肯定知道，它是一个非常棒的小型电脑，有一个很好的操作系统，对于初学者来说，它包括了你可能想要的一切。然而，一旦你熟悉了它，并且想用它干一些别的事情的时候，你可能不想要那个默认囊括了一切组件的操作系统。

在这种情况下，你两个选择：要么你可以绞尽脑汁地把所有你不需要的东西都删干净，要么你还可以用<ruby> 精简版树莓派系统 <rt>  Raspberry Pi OS Lite </rt></ruby>来构建专门为你的需求而定制的轻量级操作系统。我的建议是，用第二种方法，既简便又节省时间。

### Raspberry Pi OS Lite

“<ruby> 精简版 <rt>  Lite </rt></ruby>”的<ruby> 树莓派系统 <rt>  Raspberry Pi OS </rt></ruby>其实没什么特别的，就是一个基于最新版本的 [Debian](https://www.debian.org/) 的最小化镜像。这个镜像仅包含了操作系统核心和启动到命令行的部分，而不会进入图形桌面。可以将这个作为你的定制树莓派系统的基础。这之后的所有东西都是建立在这个核心之上的。

前往树莓派基金会的网站上[下载](https://www.raspberrypi.org/downloads/raspberry-pi-os/)这个轻量级镜像。下载完成后，查看详细的[安装指南](https://www.raspberrypi.org/documentation/installation/installing-images/README.md)，这里面介绍了在 Linux、Windows 或者 macOS 下如何烧制树莓派操作系统的 SD 卡。

如果你计划用树莓派作为一个极简系统来运行一些脚本和服务的话，差不多这么多就够了。如果你还想干更多事，那继续往下读。

### X Window

首先，如果偶尔需要通过图形用户界面（GUI）连接到你的树莓派，安装一个窗口系统还是不错的。

[X Window 系统](https://en.wikipedia.org/wiki/X_Window_System)，有时候称为 X11，是 Unix 操作系统上一个常见的基本窗口系统。X11 提供了一套 GUI 桌面环境的基本框架。它可以让你通过窗口、鼠标和键盘与计算机交互。

#### 安装 X Window

下面这一行安装了能让 X11 运行的最少的包。

```
sudo apt install -y --no-install-recommends xserver-xorg-core xserver-xorg xfonts-base xinit

```

如果使用 `--no-install-recommends`，则只安装了主要的一些依赖（`Depends` 字段中的包）。这样可以节省很多空间，因为没有安装那些建议却不一定需要的包。

### 进阶：使用 Xfce 桌面环境

如果你愿意，可以就此停下了，然后开始使用 X Window 作为你的桌面。不过，我并不建议这么做。X Window 自带的这种最小化的窗口管理工具走的是极简主义风格，某种程度上让人感觉过时了。相反，我建议安装现代化的桌面环境，比如说像 Xfce、GNOME 或者 KDE。当用在微型计算机上时，我更倾向于 [Xfce](http://xfce.org) 而不是其他的，因为它就是为资源有限的系统设计的，而且你可以通过主题、图标或者其他东西对它进行定制。

#### 安装 Xfce

安装 Xfce 桌面环境相当简单。只需要：

```
sudo apt install -y --no-install-recommends xfce4 desktop-base lightdm

```

这就够了。你现在安装了 X Window（X11）和 Xfce 了。现在是时候来定制一下环境并且安装一些核心应用了。

### 核心应用

目前为止，你已经安装了 X Window（X11）、Xfce 桌面环境和 LightDM（一个 Xfce 自带的显示管理器）。现在，你已经有了一个可以启动并且正常使用的轻量级的完整系统。不过，在彻底完成之前，我还是喜欢装一些核心应用。

下面这条命令安装了一个终端程序、[Audacious](https://audacious-media-player.org/) 音频播放器、[Ristretto](https://docs.xfce.org/apps/ristretto/start) 图像浏览器、[Mousepad](https://github.com/codebrainz/mousepad) 文本编辑器、[File Roller](https://gitlab.gnome.org/GNOME/file-roller)存档管理器和 [Thunar](https://docs.xfce.org/xfce/thunar/thunar-volman) 容量管理器。

```
sudo apt install -y --no-install-recommends xfce4-terminal audacious ristretto
sudo apt install -y --no-install-recommends mousepad file-roller thunar-volman

```

#### 其他可选项

其他一些你可能想安装的东西，包括一个好的网络管理器、任务管理器、PDF 阅读器和通知工具，以及桌面背景管理器、截图工具、一些新的图标和光标主题。简单来说，如果树莓派是你的首选系统，这些都算是日常工作的一些补充。

```
sudo apt install -y --no-install-recommends network-manager xfce4-taskmanager xfce4-notifyd
sudo apt install -y --no-install-recommends  xpdf gnome-icon-theme dmz-cursor-theme

```

### 下一步该做什么？

如果一切都正常工作的话，你现在就有一个基于 Xfce 和 Debian Lite 超轻量级操作系统的树莓派了。我建议现在你去 Xfce 网站上查看其它很酷的好东西，这些你都可以安装并使用。下一步做什么完全由你决定！

---

via: <https://opensource.com/article/20/6/custom-raspberry-pi>

作者：[Patrick H. Mullins](https://opensource.com/users/pmullins) 选题：[lujun9972](https://github.com/lujun9972) 译者：[Yufei-Yan](https://github.com/Yufei-Yan) 校对：[wxy](https://github.com/wxy)

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


#新闻拍一拍# 苹果强势逼迫整个 CA 行业进入一年的证书寿命期

Summary: • 部分开源项目着手支持 macOS ARM64 • AWS 正式推出基于 AI 的 CodeGuru 代码检查与性能分析器

这个“拍一拍”挺不错的啊。

# #新闻拍一拍# 苹果强势逼迫整个 CA 行业进入一年的证书寿命期

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

#### 苹果强势逼迫整个 CA 行业进入一年的证书寿命期

苹果公司在 2020 年 2 月单方面做出的一项决定，并有效地强势逼迫证书颁发机构行业接受 TLS 证书 398 天的新默认寿命。苹果打破了 CA/B 论坛的标准操作程序，没有要求投票，而是简单地宣布决定在其设备上实施 398 天的寿命。继苹果最初宣布之后，Mozilla 和谷歌也表示了类似的意向，将在其浏览器中实施同样的规则。从 2020 年 9 月 1 日开始，苹果、谷歌和 Mozilla 的浏览器和设备将对有效期超过 398 天的新 TLS 证书显示错误。TLS 证书的寿命从 8 年开始，经过多年的发展，浏览器厂商对其进行了削足适履，将其降低到 5 年，然后是 3 年，再到2年。上一次变化发生在 2018 年 3 月，当时浏览器制造商试图将 SSL 证书寿命从三年减少到一年，但在 CA 的积极反击下妥协了两年。简单点说，就是表明浏览器厂商控制了 CA/B 论坛，他们完全控制了 HTTPS 生态系统，而 CA 只是参与者，没有实际权力。

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

>
> 拍一拍：这个世界果然是谁的拳头大谁说了算。
>
>
>

#### 部分开源项目着手支持 macOS ARM64

虽然首批搭载苹果 64 位 ARM 芯片的 MacBook/Mac 最快也要到年底才会面向消费者提供，并且在这之前苹果只向开发者提供数量有限的开发机，但部分开源项目已经在为 64 位 ARM Mac 的构建做必要的构建系统更改和其他准备工作。苹果已经开始将 ARM / macOS 11 的部分变化提交给上游 LLVM/Clang，他们也合并了苹果的提交。LibreOffice 是已经在为支持面向 macOS ARM64 构建而做准备的知名开源项目之一，另一个例子是苹果一直在进行的对 OpenJDK 的修改。

来源：[开源中国](https://www.oschina.net/news/116811/open-source-arm64-macos-start?tdsourcetag=s_pctim_aiomsg)

>
> 拍一拍：我好奇的一点是，对 LibreOffice 这样的开源项目来说，macOS 上的用户有多少？与其在这个方面下功夫，还不如在产品性能和功能上投入更多精力吧。
>
>
>

#### AWS 正式推出基于 AI 的 CodeGuru 代码检查与性能分析器

作为一款借助机器学习技术来自动检查代码错误、并提出潜在优化建议的工具，其现已正式向公众开放。据悉，CodeGuru 主要由代码检查其 Reviewer 和性能分析器 Profiler 两个部分组成。据悉，为了打造代码分析器，AWS 团队借鉴了 GitHub 上超过一万个开源项目的代码、以及亚马逊内部代码库来训练其算法。

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

>
> 拍一拍：看来以后写了烂代码也不怕了，有 AI 可以帮你检查甚至提供建议。
>
>
>


物联网将如何拯救航空业

# 物联网将如何拯救航空业

>
> 为防止感染新冠病毒的乘客登机，欧洲飞机制造商，空中客车公司正在研究能够识别病毒的物联网传感器。
>
>
>

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

一家开发传感器来探测飞机上和机场中的爆炸物和其他化学物品的生物技术公司正在和空中客车合作，一同开发一种可以检测已经感染新冠病毒乘客的传感器。

Koniku 的创始人兼首席执行管 Osh Agabi 在[一篇博文](https://www.linkedin.com/pulse/what-happens-when-airports-open-back-up-osh-agabi/?src=aff-lilpar&veh=aff_src.aff-lilpar_c.partners_pkw.10078_plc.Skimbit%20Ltd._pcrid.449670_learning&trk=aff_src.aff-lilpar_c.partners_pkw.10078_plc.Skimbit%20Ltd._pcrid.449670_learning&clickid=WNmzMlyalxyOUI7wUx0Mo34HUkiwwpy%3APQ3X1Y0&irgwc=1)中说，总部位于加州的 Konibu 公司和空中客车（Airbus）公司从 2017 年就开始合作共同开发能够探测出不同化学物质的非接触式设备。

他们希望通过识别从呼吸或者汗液中的气味来判断是否感染新冠病毒，因为这些气味可能是新冠病毒中化学物质的标记。“大多数感染和疾病都会或多或少的改变我们呼吸和汗液里的化学成分，也就会产生不同的气味，” Agabi 写道。“如果我们检测到这些气味，我们就可以检测是否存在感染。”

这两家公司希望能够识别这种新冠病毒的特异性标记，并且能找到一种可以检测这些标记的物联网（IoT）传感器，这些传感器配备有通过基因工程改造过的受体，从而对病毒进行探测。“那些受体会过滤空气中的分子，并且当它们接触到已经提前被编程检测的存在威胁或危险的分子化合物的时候，就会产生一个信号，”他写道。

他说，乘客将通过走过一个装有传感器的封闭通道来进行筛选。“通过对构成这些受体细胞中的 DNA 进行编程，使其对出现在感染者呼吸或者汗液中的化合物作出反应，我们相信，我们将能够迅速且可靠地筛查新冠病毒，并且确定一个人是否已经被感染，”他写道。

其他类型的非接触检测器已经在使用中了，包括<ruby> 皮肤温度升高 <rt>  elevated-skin-temperature </rt></ruby>（EST）摄像头。

意大利的最主要的机场 Leonardo da Vinci 购置了三个热成像头盔来发现发烧的人。机场已经配备了固定的热感应扫描仪，并且订购了更多的这种设备。[根据当地媒体 Fiumicino Online 的报道](https://www.fiumicino-online.it/articoli/cronaca-2/fase-2-all-aeroporto-di-fiumicino-lo-smart-helmet-per-controllare-la-febbre-a-distanza)，被发现潜在发烧的乘客被会要求做进一步的医学检查。

位于中国深圳制造这种头盔的 KC Wearable 公司表示，这种头盔可以由员工佩戴，并且可以与乘客保持一定的距离。

制造热感应摄像头的 FLIR Systems 公司在其本月的[财报](https://flir.gcs-web.com/news-releases/news-release-details/flir-systems-announces-first-quarter-2020-financial-results)中表示，对 EST 系统的需求正在持续增加。

“尽管这些热感应摄像头不能检测或者诊断任何医疗状况，但这些摄像头可以作为识别皮肤温度升高的有效工具。”报告说。

FLIR 公司 CEO Jim Cannon 在本月的收入电话会议上表示，“许多公司都在寻求在他们的设施中安装这种技术，以便解除<ruby> 就地避难 <rt>  shelter-in-place </rt></ruby>法令”。[根据路透社报道](https://uk.reuters.com/article/us-flir-systems-gm/general-motors-taps-flir-systems-for-fever-check-cameras-at-factories-idUKKBN22J02B)，通用汽车就是其中之一。

---

via: <https://www.networkworld.com/article/3543318/how-iot-will-rescue-aviation.html>

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

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


如何在 Linux 的 bash 中永远循环

# 如何在 Linux 的 bash 中永远循环

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

在 Linux 中有很多永远循环（或直到你决定停止）的方法，你可以在命令行或脚本中执行此操作。

`for` 和 `while` 命令使这件事非常容易。关于相应的语法和策略，只有几件事要牢记。

### 使用 while

最简单的永远循环之一是使用 `while` 命令，后面跟上条件 `true`。 你不必使用诸如 `while [ 1 -eq 1 ]` 之类的逻辑或类似的测试。 `while true` 测试表示循环将一直运行，直到你使用 `CTRL-C` 停止循环、关闭终端窗口或注销为止。这是一个例子：

```
$ while true
> do
>   echo Keep running
>   sleep 3
> done
Keep running
Keep running
Keep running
^C

```

你也可以使用 `while :` 做同样的事情。这里的关键是 `:` 总是返回成功，因此就像 `while true` 一样，此测试永远不会失败，并且循环会继续运行：

```
$ while :
> do
>   echo Keep running
>   sleep 3
> done
Keep running
Keep running
^C

```

如果你在脚本中插入了无限循环，并想提醒使用它的人如何退出脚本，那么可以使用 `echo` 命令添加提示：

```
while :
do
        echo Keep running
        echo "Press CTRL+C to exit"
        sleep 1
done

```

### 使用 for

`for` 命令还提供了一种永远循环的简便方法。虽然不如 `while true` 明显，但语法相当简单。你只需要在有界循环中替换参数即可，它通常类似于 “c 从等于 1 开始递增，直到 5”：

```
$ for (( c=1; c<=5; c++ ))

```

不指定任何参数的情况下：

```
$ for (( ; ; ))

```

没有起始值、增量或退出测试，此循环将永远运行或被强制停止：

```
$ for (( ; ; ))
> do
>    echo Keep running
>   echo “Press CTRL+C to exit”
>    sleep 2
> done
Keep your spirits up
Keep your spirits up
Keep your spirits up

```

### 为什么要永远循环？

在现实中，你不会想永远循环下去，但一直运行直到想要回家、工作完成或者遇到问题才退出并不罕见。任何构造为无限循环的循环都可以设置为根据各种情况退出。

该脚本将一直处理数据直到下午 5 点，或者说检查发现第一次超过 5 点的时间：

```
#!/bin/bash

while true
do
  if [ `date +%H` -ge 17 ]; then
    exit        # exit script
  fi
  echo keep running
  ~/bin/process_data     # do some work
done

```

如果要退出循环而不是退出脚本，请使用 `break` 命令而不是 `exit`。

```
#!/bin/bash

while true
do
  if [ `date +%H` -ge 17 ]; then
    break       # exit loop
  fi
  echo keep running
  ~/bin/process_data
done
… run other commands here …

```

#### 总结

永远循环很容易。指定要停止循环的条件却需要花费一些额外的精力。

---

via: <https://www.networkworld.com/article/3562576/how-to-loop-forever-in-bash-on-linux.html>

作者：[Sandra Henry-Stocker](https://www.networkworld.com/author/Sandra-Henry_Stocker/) 选题：[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 环境的 4 个基本工具

Summary: 选择的这些工具将简化你的 Python 环境，以实现顺畅和一致的开发实践。

选择的这些工具将简化你的 Python 环境，以实现顺畅和一致的开发实践。

# 建立成功的 Python 环境的 4 个基本工具

>
> 选择的这些工具将简化你的 Python 环境，以实现顺畅和一致的开发实践。
>
>
>

Python 是一门出色的通用编程语言，经常作为第一门编程语言来教授。二十年来，我为它撰写了很多本书，而它仍然是[我的首选语言](https://opensource.com/article/19/10/why-love-python)。虽然通常来说这门语言是简洁明了的，但是（正如 [xkcd](https://xkcd.com/1987/) 讽刺的），从来没有人说过配置 Python 环境也是一样的简单。

*一个复杂的Python环境。 [xkcd](https://xkcd.com/1987/)*

在日常生活中有很多使用 Python 的方法。我将解释我是如何使用这些 Python 生态系统工具的。但坦诚的说，我仍在寻找更好的替代品。

### 使用 pyenv 来管理 Python 版本

我发现在机器上运行一个特定版本的 Python 的最好方法是使用 `pyenv`。这个软件可以在 Linux、Mac OS X 和 WSL2 上工作：这是我通常关心的三个 “类 UNIX” 环境。

安装 `pyenv` 本身有时会有点棘手。一种方法是使用专用的 [pyenv 安装程序](https://github.com/pyenv/pyenv-installer)，它使用 `curl | bash` 方法来进行（详见其说明）。

如果你是在 Mac 上（或者你运行 Homebrew 的其他系统），你可以按照[这里](/article-12241-1.html)的说明来安装和使用 `pyenv`。

按照说明安装和设置了 `pyenv` 之后，你可以使用 `pyenv global` 来设置一个 “默认的” Python 版本。一般来说，你会选择你的 “首选” 版本。这通常是最新的稳定版本，但如果有其他考虑因素也可能做出不同的选择。

### 使用 virtualenvwrapper 让虚拟环境更简单

使用 `pyenv` 安装 Python 的一个好处是，你所有后继安装的 Python 解释器环境都是你自己的，而不是操作系统层面的。

虽然在 Python 本身内部安装东西通常不是最好的选择，但有一个例外：在上面选择的 “首选” Python 中，安装并配置 `virtualenvwrapper`。这样你就可以瞬间创建和切换到虚拟环境。

我在[这篇文章中](/article-11086-1.html)具体介绍了如何安装和使用 `virtualenvwrapper`。

这里我推荐一个独特的工作流程：你可以制作一个可以大量重复运行的虚拟环境，用来做<ruby> 运行器 <rt>  runner </rt></ruby>。在这个环境中，可以安装你最喜欢的运行器 —— 也就是你会经常用来运行其他软件的软件。就目前而言，我的首选是 `tox`。

### 使用 tox 作为 Python 运行器

[tox](https://opensource.com/article/19/5/python-tox) 是一个很好的工具，可以让你的 Python 测试自动化。在每个 Python 环境中，我都会创建一个 `tox.ini` 文件。无论我使用什么系统做持续集成，都可以运行它，我可以用上面文章中描述的 `virtualenvwrapper` 的 `workon` 语法在本地运行同样的东西：

```
$ workon runner
$ tox

```

这个工作流程之所以重要，是因为我要在多个版本的 Python 和多个版本的依赖库中测试我的代码。这意味着在 `tox` 运行器中会有多个环境。一些会尝试在最新的依赖关系中运行，一些会尝试在冻结的依赖关系中运行（接下来会有更多的介绍），我也可能会用 `pip-compile` 在本地生成这些环境。

附注：我目前正在[研究使用 nox](https://nox.thea.codes/en/stable/) 作为 `tox` 的替代品。原因超出了本文的范畴，但值得一试。

### 使用 pip-compile 进行 Python 依赖性管理

Python 是一种动态编程语言，这意味着它在每次执行代码时都会加载其依赖关系。能否确切了解每个依赖项的具体运行版本可能意味着是平稳运行代码还是意外崩溃。这意味着我们必须考虑依赖管理工具。

对于每个新项目，我都会包含一个 `requirements.in` 文件，（通常）只有以下内容：

```
.

```

是的，没错。只有一个点的单行。我在 `setup.py` 文件中记录了 “宽松” 的依赖关系，比如 `Twisted>=17.5`。这与 `Twisted==18.1` 这样的确切依赖关系形成了鲜明对比，后者在需要一个特性或错误修复时，难以升级到新版本的库。

`.` 的意思是 “当前目录”，它使用当前目录下的 `setup.py` 作为依赖关系的来源。

这意味着使用 `pip-compile requirements.in > requirements.txt` 会创建一个冻结的依赖文件。你可以在 `virtualenvwrapper` 创建的虚拟环境中或者 `tox.ini` 中使用这个依赖文件。

有时，也可以从 `requirements-dev.in`（内容：`.[dev]`）生成 `requirements-dev.txt`，或从 `requirements-test.in`（内容：`.[test]`）生成 `requirements-test.txt`。

我正在研究在这个流程中是否应该用 [dephell](https://github.com/dephell/dephell) 代替 `pip-compile`。`dephell` 工具有许多有趣的功能，比如使用异步 HTTP 请求来下载依赖项。

### 结论

Python 的功能既强大又赏心悦目。为了编写这些代码，我依靠了一个对我来说很有效的特定工具链。工具 `pyenv`、`virtualenvwrapper`、`tox` 和 `pip-compile` 都是独立的。但是，它们各有各的作用，没有重叠，它们一起打造了一个强大的 Python 工作流。

---

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

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


#新闻拍一拍# Redis 作者辞去 Redis 项目的领导者和维护者职务

Summary: • KDE 社区迁移至 Gitlab • GnuCash 4.0 释出

# #新闻拍一拍# Redis 作者辞去 Redis 项目的领导者和维护者职务

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

#### Redis 作者辞去 Redis 项目的领导者和维护者职务

Redis 作者 antirez 选择将 Redis 交给 Redis 社区打理，并邀请到了两位同事 Yossi Gottlieb 和 Oran Agra 继续维护 Redis 项目。而他将成为 Redis Labs 顾问委员会的一员，会为 Redis 的更多发展可能性输出自己的想法。antirez 说到，从本质上来讲，他宁愿以一个糟糕的艺术家身份而不是一名好程序员而被人记住。

来源：[开源中国](https://www.oschina.net/news/116838/antirez-stepped-down)

>
> 拍一拍：更早之前，Python 之父已经潇洒地放下了 Python “仁慈独裁者”的身份。开源软件领袖也会老去，也会厌倦将一生都投入到一件看起来要做一辈子的事情当中。前两天 Linus 也表达了内核维护工作让他感到“无聊”，感慨内核社区的核心成员五十岁以下的年轻人比较少，而“年轻”一些的人还不能接过整个社区的管理。
>
>
>

#### KDE 社区迁移至 Gitlab

2019 年 11 月，KDE 社区宣布计划迁移至 Gitlab。目前，它已正式完成迁移计划的第一阶段，并加入了 GitLab 的开源计划。KDE 社区共同创建和维护了 200 多个应用程序和不计其数的插件，还包括 1000 多个存储库、80 多个 Qt 框架，以及超过 2600 个项目。在迁移过程中，KDE 面临的最大挑战是要处理的巨大数据量，以及如何将其集成到众多工具中。

来源：[开源中国](https://www.oschina.net/news/116835/kde-moving-to-gitlab)

>
> 拍一拍：这是一个艰巨的任务，而且看起来 GitLab 似乎比 GitHub 更自由一些。
>
>
>

#### GnuCash 4.0 释出

GNU 财务软件项目 GnuCash 在邮件列表上宣布释出最新的 GnuCash 4.0。新版引入了一个独立的可执行文件 gnucash-cli，用于命令行操作如更新账簿中的价格。

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


在你的树莓派家庭实验室中使用 Cloud-init

Summary: 了解了云行业的标准，该向你的家庭实验室自动添加新设备和用户了。

了解了云行业的标准，该向你的家庭实验室自动添加新设备和用户了。

# 在你的树莓派家庭实验室中使用 Cloud-init

>
> 了解了云行业的标准，该向你的家庭实验室自动添加新设备和用户了。
>
>
>

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

[Cloud-init](https://cloudinit.readthedocs.io/)（可以说）是一个标准，云提供商用它来为云实例提供初始化和配置数据。它最常用于新实例的首次启动，以自动完成网络设置、账户创建和 SSH 密钥安装等使新系统上线所需的任何事情，以便用户可以访问它。

在之前的一篇文章《[修改磁盘镜像来创建基于树莓派的家庭实验室](/article-12277-1.html)》中，我展示了如何为像树莓派这样的单板计算机定制操作系统镜像以实现类似的目标。有了 Cloud-init，就不需要向镜像中添加自定义数据。一旦在镜像中启用了它，你的虚拟机、物理服务器，甚至是小小的树莓派都可以表现得像你自己的 “家庭私有云” 中的云计算实例。新机器只需插入、打开，就可以自动成为你的[家庭实验室](https://opensource.com/article/19/3/home-lab)的一部分。

说实话，Cloud-init 的设计并没有考虑到家庭实验室。正如我所提到的，你可以很容易地修改给定的一套系统磁盘镜像，以启用 SSH 访问并在第一次启动后对它们进行配置。Cloud-init 是为大规模的云提供商设计的，这些提供商需要容纳许多客户，维护一组小的镜像，并为这些客户提供访问实例的机制，而无需为每个客户定制一个镜像。拥有单个管理员的家庭实验室则不会面临同样的挑战。

不过，Cloud-init 在家庭实验室中也不是没有可取之处。教育是我的家庭私有云项目的目标之一，而为你的家庭实验室设置 Cloud-init 是一个很好的方式，可以获得大大小小的云提供商大量使用的技术的经验。Cloud-init 也是其他初始配置选项的替代方案之一。与其为家庭实验室中的每台设备定制每个镜像、ISO 等，并在你要进行更改时面临繁琐的更新，不如直接启用 Cloud-init。这减少了技术债务 —— 还有什么比*个人*技术债务更糟糕的吗？最后，在你的家庭实验室中使用 Cloud-init 可以让你的私有云实例与你拥有的或将来可能拥有的任何公有云实例表现相同 —— 这是真正的[混合云](https://www.redhat.com/en/topics/cloud-computing/what-is-hybrid-cloud)。

### 关于 Cloud-init

当为 Cloud-init 配置的实例启动并且服务开始运行时（实际上是 systemd 中的四个服务，以处理启动过程中的依赖关系），它会检查其配置中的[数据源](https://cloudinit.readthedocs.io/en/latest/topics/datasources.html)，以确定其运行在什么类型的云中。每个主要的云提供商都有一个数据源配置，告诉实例在哪里以及如何检索配置信息。然后，实例使用数据源信息检索云提供商提供的配置信息（如网络信息和实例识别信息）和客户提供的配置数据（如要复制的授权密钥、要创建的用户账户以及许多其他可能的任务）。

检索数据后，Cloud-init 再对实例进行配置：设置网络、复制授权密钥等，最后完成启动过程。然后，远程用户就可以访问它，准备好使用 [Ansible](https://www.ansible.com/) 或 [Puppet](https://puppet.com/) 等工具进行进一步的配置，或者准备好接收工作负载并开始分配任务。

### 配置数据

如上所述，Cloud-init 使用的配置数据来自两个潜在来源：云提供商和实例用户。在家庭实验室中，你扮演着这两种角色：作为云提供商提供网络和实例信息，作为用户提供配置信息。

#### 云提供商元数据文件

在你的云提供商角色中，你的家庭实验室数据源将为你的私有云实例提供一个元数据文件。这个[元数据](https://cloudinit.readthedocs.io/en/latest/topics/instancedata.html#)文件包含实例 ID、云类型、Python 版本（Cloud-init 用 Python 编写并使用 Python）或要分配给主机的 SSH 公钥等信息。如果你不使用 DHCP（或 Cloud-init 支持的其他机制，如镜像中的配置文件或内核参数），元数据文件还可能包含网络信息。

#### 用户提供的用户数据文件

Cloud-init 的真正价值在于用户数据文件。[用户数据](https://cloudinit.readthedocs.io/en/latest/topics/format.html)文件由用户提供给云提供商，并包含在数据源中，它将实例从一台普通的机器变成了用户舰队的一员。用户数据文件可以以可执行脚本的形式出现，与正常情况下脚本的工作方式相同；也可以以云服务配置 YAML 文件的形式出现，利用 [Cloud-init 的模块](https://cloudinit.readthedocs.io/en/latest/topics/modules.html) 来执行配置任务。

### 数据源

数据源是由云提供商提供的服务，它为实例提供了元数据和用户数据文件。实例镜像或 ISO 被配置为告知实例正在使用什么数据源。

例如，亚马逊 AWS 提供了一个 [link-local](https://en.wikipedia.org/wiki/Link-local_address) 文件，它将用实例的自定义数据来响应实例的 HTTP 请求。其他云提供商也有自己的机制。幸运的是，对于家庭私有云项目来说，也有 NoCloud 数据源。

[NoCloud](https://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html) 数据源允许通过内核命令以键值对的形式提供配置信息，或通过挂载的 ISO 文件系统以用户数据和元数据文件的形式提供。这些对于虚拟机来说很有用，尤其是与自动化搭配来创建虚拟机。

还有一个 NoCloudNet 数据源，它的行为类似于 AWS EC2 数据源，提供一个 IP 地址或 DNS 名称，通过 HTTP 从这里检索用户数据和元数据。这对于你的家庭实验室中的物理机器来说是最有帮助的，比如树莓派、[NUC](https://en.wikipedia.org/wiki/Next_Unit_of_Computing) 或多余的服务器设备。虽然 NoCloud 可以工作，但它需要更多的人工关注 —— 这是云实例的反模式。

### 家庭实验室的 Cloud-init

我希望这能让你了解到 Cloud-init 是什么，以及它对你的家庭实验室有何帮助。它是一个令人难以置信的工具，被主要的云提供商所接受，在家里使用它可以是为了教育和乐趣，并帮助你自动向实验室添加新的物理或虚拟服务器。之后的文章将详细介绍如何创建简单的静态和更复杂的动态 Cloud-init 服务，并指导你将它们纳入你的家庭私有云。

---

via: <https://opensource.com/article/20/5/cloud-init-raspberry-pi-homelab>

作者：[Chris Collins](https://opensource.com/users/clcollins) 选题：[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: 为了帮助从 Photoshop 切换到 GIMP 的人，Diolinux 推出了一个在 GIMP 中模仿 Adobe Photoshop 的工具。

平常用debian view samsung s20 ultra拍的108MP .heic都是用gimp，唯一能decode的package

# 在 Linux 上缺少 Photoshop？使用 PhotoGIMP 将 GIMP 变为 Photoshop

[Adobe Photoshop](https://www.adobe.com/in/products/photoshop.html) 不适用于桌面 Linux。GIMP 是 [Linux 上 Adobe Photoshop 的最佳替代品](https://itsfoss.com/open-source-photoshop-alternatives/)。

如果你使用过 Photoshop，那么你会注意到 [GIMP](https://www.gimp.org/) 和 Photoshop 相比有不同的设置、键盘快捷键和布局。

这没有错。毕竟，它们都是两种不同的软件，而且它们不必看起来相同。

但是，习惯了 Photoshop 的人们发现在切换到 GIMP 的时很难忘记他们反复学习的肌肉记忆。这可能会使某些人感到沮丧，因为使用新的界面意味着要学习大量的键盘快捷键，并花时间在查找工具位于何处。

为了帮助从 Photoshop 切换到 GIMP 的人，[Diolinux](https://diolinux.com.br/) 推出了一个在 GIMP 中模仿 Adobe Photoshop 的工具。

### PhotoGIMP：在 Linux 中为 GIMP 提供 Adobe Photoshop 的外观

[PhotoGIMP](https://github.com/Diolinux/PhotoGIMP) 不是独立的图形软件。它是 GIMP 2.10 的补丁。你需要在系统上安装 GIMP 才能使用 PhotoGIMP。

当你应用 PhotoGIMP 补丁时，它将更改 GIMP 布局以模仿 Adobe Photoshop。

* 默认安装数百种新字体
* 安装新的 Python 过滤器，例如 “heal selection”
* 添加新的启动画面
* 添加新的默认设置以最大化画布空间
* 添加类似于 Adobe Photoshop 的键盘快捷键

PhotoGIMP 还在自定义 `.desktop` 文件中添加新的图标和名称。让我们看看如何使用它。

### 在 Linux 上安装 PhotoGIMP （适合中级到专业用户）

PhotoGIMP 本质是一个补丁。在 Linux 中下载并[解压 zip 文件](https://itsfoss.com/unzip-linux/)。你将在解压的文件夹中找到以下隐藏的文件夹：

* `.icons`：其中包含新的 PhotoGIMP 图标
* `.local`：包含个性化的 `.desktop` 文件，以便你在系统菜单中看到的是 PhotoGIMP 而不是 GIMP
* `.var`：包含 GIMP 补丁的主文件夹

你应该[使用 Ctrl+H 快捷键在 Ubuntu 中显示隐藏文件](https://itsfoss.com/hide-folders-and-show-hidden-files-in-ubuntu-beginner-trick/)。

警告：建议你备份 GIMP 配置文件，以便在不喜欢 PhotoGIMP 时可以还原。只需将 GIMP 配置文件复制到其他位置即可备份。

目前，PhotoGIMP 主要与通过 [Flatpak](https://flatpak.org/) 安装的 GIMP 兼容。如果你使用 Flatpak 安装了 GIMP，那么只需将这些隐藏的文件夹复制粘贴到家目录中，它将 GIMP 转换为 Adobe Photoshop 类似的设置。

但是，如果你通过 apt、snap 或发行版的包管理器安装了 GIMP，那么必须找到 GIMP 的配置文件夹，然后粘贴 PhotoGIMP 的 `.var` 目录的内容。当出现询问时，请选择合并选项并替换同名的现有文件。

我[使用 apt 在 Ubuntu 20.04 中安装了 GIMP](https://itsfoss.com/gimp-2-10-release/)。对我来说，GIMP 配置文件在 `~/.config/GIMP/2.10`。我复制了 `.var/app/org.gimp.GIMP/config/GIMP/2.10` 目录，并启动 GIMP 查看 PhotoGIMP 的启动页。

这是打了 PhotoGIMP 补丁后的 GIMP 界面：

我尝试了几个 Photoshop 快捷键来检查它所做的更改，一切似乎可以正常工作。

* [下载 PhotoGIMP](https://github.com/Diolinux/PhotoGIMP/releases)

我还找到了 [Snap 包形式的 PhotoGIMP](https://snapcraft.io/photogimp)，但它是 2019 年的，我不确定它是否可以在所有地方使用，或者仅适用于 snap 安装。

### 总结

这不是类似的第一个项目。几年前，我们有一个类似的项目叫 Gimpshop。Gimpshop 项目在过去的几年中没有任何进展，可以肯定地认为该项目已经死亡。有一个名为 Gimpshop 的网站，但该网站来自冒名者试图以 Gimpshop 的名义获利。

我不是 Adobe Photoshop 用户。我甚至不是 GIMP 专家，这就是为什么我们的 [GIMP 教程](https://itsfoss.com/tag/gimp-tips/) 用 Dimitrios 的原因。

因此，我无法评论 PhotoGIMP 项目的实用性。如果你熟悉这两种软件，那么应该能够比我更好地进行判断。

如果你尝试使用 PhotoGIMP，请与他人分享你的经验，并告诉我们是否值得安装。

---

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

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


#新闻拍一拍# 华为开源 openGauss 并成立开源社区

Summary: • 微软解释 Edge 为何静默导入 Firefox 和 Chrome 数据 • 开源便携式树莓派平板电脑 CutiePi 众筹 • Manjaro Linux 32 位已死

# #新闻拍一拍# 华为开源 openGauss 并成立开源社区

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

#### 华为开源 openGauss 并成立开源社区

openGauss 是一款关系型数据库管理系统，华为表示希望通过开源的魅力吸引更多的贡献者，共同构建一个能够融合多元化技术架构的企业级开源数据库社区。openGauss 内核源自 PostgreSQL，并着重在架构、事务、存储引擎、优化器等方向持续构建竞争力特性，在 ARM 架构的芯片上深度优化，兼容 X86 架构。openGauss 采用木兰宽松许可证。

来源：[开源中国](https://www.oschina.net/news/116866/opengauss-open-sourced)

>
> 拍一拍：看来华为开源方面的负责人相当喜欢欧洲数学家啊，有了欧拉、高斯，下一个是谁？当然，这是调侃了，我们真正关心的是华为在 openEulur、openGauss 方面取得的进展如何。
>
>
>

#### 微软解释 Edge 为何静默导入 Firefox 和 Chrome 数据

上周部分 Firefox 用户发现通过 Windows Update 更新到设备的新版 Edge 会出现从 Firefox 导入数据的情况，即便用户未授权 Edge 进行此操作。微软在声明中解释到，“我们认为浏览器数据属于用户，他们有权决定应如何处理。与其他浏览器一样，Microsoft Edge 为用户提供了在安装过程中导入数据的机会。在第一次运行体验中，用户有机会保留或丢弃导入的数据。如果他们选择不继续导入，这些数据就会被丢弃。”

来源：[开源中国](https://www.oschina.net/news/116863/why-edge-silently-importing-firefox-chrome-data)

>
> 拍一拍：好吧，你赢了。不过，给用户选择权，让用户真正拥有自己的数据所有权，才是尊重用户。
>
>
>

#### 开源便携式树莓派平板电脑 CutiePi 众筹

CutiePi，简单来说，就是一个像样的平板电脑形态的树莓派，这款平板电脑厚度 12 毫米，包括一个 8 英寸 1280×800 的屏幕，WiFi 802.11 b/g/n 和蓝牙 4.0，还有一块 5000 毫安时的电池，可以提供 5 小时的使用时间。甚至还有 6 个 GPIO 针脚。它的一切是开源的，包括使用的定制板，布局设计，以及在上面运行的定制触摸友好用户界面。Kickstarter 上的众筹价格为 189 美元，最终零售价格为 199 美元。

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

>
> 拍一拍：最有趣的是它的设计也是开源的，也就是说，你可以在这个基础上进一步进行定制。
>
>
>

#### Manjaro Linux 32 位已死

Manjaro Linux 方面表示，由于时间不足和硬件故障的原因，manjaro32 已停止运行。Manjaro 说，“不幸的是，我们不得不宣布 manjaro32 项目现在已经一去不复返了。@jonathon 成功地将这个据点维持了更久，甚至超出了他的预期。在近 9 年的时间里，我们一直支持 i686。让我们对这部分项目留下一个美好的回忆。”

来源：[开源中国](https://www.oschina.net/news/116864/manjaro-linux-32-bit)

>
> 拍一拍：该放弃就放弃吧，不过我们在放弃 32 位之前，是不是把什么对 Apple II 的支持先放弃？
>
>
>


你是否已经准备好从 Mac 切换到 Linux 了？

解决一下 Transmission BT下载、磁力链接下载都没有速度的问题吧！！

transmission只能下pt，BT磁力没速度真的是没人做种的原因

用Fedora???后后悔的。软件太少！天天都要搜索下载解包安装。而且在搜索引擎里搜索软件，精准性太差。

来自湖北武汉的 Chrome Mobile 78.0|Android 8.1 用户

Linux Desktop最好用属于ubuntu

# 你是否已经准备好从 Mac 切换到 Linux 了？

>
> 你几乎可以在 Linux 上做任何你在 Mac 上可以做的事情 —— 这是你拥有一个开源操作系统的自由。
>
>
>

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

我[从 Mac 转到 Linux](https://markosaric.com/linux/) 已经两年了。在使用 Linux 之前，我用的 Apple 的系统用了 15 年，而当我在 2018 年安装第一个 Linux 发行版时，还只是一个纯粹的新手。

这些日子以来，我只用 Linux，我可以用它完成任何任务。浏览网页、观看 Netflix 影片、写作以及编辑我的 Wordpress [博客](https://markosaric.com/how-start-blog/)，甚至还在上面跑我的[开源网页分析项目](https://plausible.io/open-source-website-analytics)。

我甚至还不是一个开发者！Linux 被认为不适合日常使用，对非技术人员也不够友好的日子已经一去不返了。

最近有很多关于 Mac 的讨论，越来越多的人已经在考虑转到 Linux。我打算分享我的切换过程中的一些经验，帮助其它新手也能从容转移。

### 你该不该换？

在换系统之前，最好想清楚，因为有时候 Linux 可能跟你预期不一样。如果你仍希望跟 Apple Watch 无缝配对、可以用 FaceTime 给朋友打电话、或者你想打开 iMovie 看视频，那最好还是不要换了。这些都是 Apple 的专有产品，你只能在 Apple 的“围墙花园”里面使用。如果离不开 Apple 的生态系统，那么 Linux 可能不太适合你。

我对 Apple 生态没有太多挂念，我不用 iPhone，所以跟手机的协作没那么必要。我也不用 iCloud、FaceTime，当然也包括 Siri。我早就对开源充满兴趣，只是一直没有行动。

### 检查你的必备软件清单

我还在使用 Mac 的时候，就已经开始探索开源软件，我发现大部分在 Mac 上使用的软件，在 Linux 也可以运行。

很熟悉用火狐浏览网页吗？在 Linux 上它也可以运行。想用 VLC 看视频？它也有 Linux 版本。喜欢用 Audacity 录制、编辑音频？它正在 Linux 上等着你呢。你用 OBS Studio 直播？在 Linux 直接下载安装吧。一直用 Telegram 跟朋友和家人保持联系吗？Linux 上当然少不了它。

此外，Linux 不仅仅意味着开源软件。你最喜欢的大部分（也可能是所有）非 Apple 专有软件，都能在 Linux 见到它们的身影。Spotify、Slack、Zoom、Stream、Discord、Skype、Chrome 以及很多闭源软件，都可以使用。而且，在你 Mac 浏览器里面运行的任何东西，同样能够运行在 Linux 浏览器。

你能在 Linux 找到你的必备软件，或者更好的替代品吗？请再三确认，做到有备无患。用你最常用的搜索引擎，在网上检索一下。搜索“软件名 + Linux” 或者“软件名 + Linux 替代品”，然后再去 [Flathub](https://flathub.org/apps) 网站查看你能在 Linux 用 Flatpak 安装的专有软件有哪些。

### 请牢记：Linux 不等于 Mac

如果你希望能够从 Mac 轻松转移到 Linux，我相信有一点很重要，你需要保持包容的思想以及愿意学习新操作系统的心态。Linux 并不等于 Mac，所以你需要给自己一些时间去接触并了解它。

如果你想让 Linux 用起来、看起来跟你习惯的 macOS 一模一样，那么 Linux 可能也不适合你。尽管你可以通过各种方法[把 Linux 桌面环境打造得跟 macOS 相似](/article-12361-1.html)，但我觉得要想成功转移到 Linux，最好的办法是从拥抱 Linux 开始。

试试新的工作流，该怎么用就怎么用。不要总想着把 Linux 变成其它东西。你会跟我一样，像享受 Mac 一样享受 Linux，甚至能有更好的体验感。

还记得你第一次使用 Mac 吧：你肯定花了不少时间去习惯它的用法。那么请给 Linux 同样多的时间和关怀。

### 选择一个 Linux 发行版

有别于 Windows 和 macOS，Linux 不止一个单一的操作系统。不同的 Linux 操作系统被称作发行版，开始使用 Linux 之后，我尝试过好几个不同的发行版。我也用过不同的桌面环境，或者图形界面。在美观度、易用性、工作流以及集成软件上，它们有很大差异。

尽管作为 Mac 的替代品，被提及最多的是 [ElementaryOS](https://opensource.com/article/20/2/macbook-linux-elementary) 和 [Pop!\_OS](https://support.system76.com/articles/pop-basics/)，但我仍建议从 [Fedora 工作站](https://getfedora.org/) 开始，理由如下：

* 使用 [Fedora 介质写入器](https://getfedora.org/en/workstation/download/)，容易安装
* 几乎可以支持你所有的硬件，开箱即用
* 支持最新的 Linux 软件
* 运行原生无改动的 GNOME 桌面环境
* 有一个大型开发团队以及一个庞大的社区在背后支持

在我看来，对从 macOS 过来的新手来说，[GNOME](https://www.gnome.org/) 是易用性、一致性、流畅性和用户体验最好的桌面环境。它拥有 Linux 世界中最多的开发资源和用户基数，所以你的使用体验会很好。

Fedora 可以为你打开一扇 Linux 的大门，当你适应之后，就可以开始进一步探索各个发行版、桌面环境，甚至窗口管理器之类的玩意了。

### 熟悉 GNOME

GNOME 是 Fedora 和许多其它 Linux 发行版的默认窗口管理器。它最近 [升级到 GNOME 3.36](https://www.gnome.org/news/2020/03/gnome-3-36-released/)，带来了 Mac 用户会喜欢的现代设计。

一定要做好心理准备，Linux、Fedora 工作站和 GNOME 并不是 Apple 和 macOS。GNOME 非常干净、简约、现代、独创。它不会分散你的注意力，没有桌面图标，没有可见的坞站，窗口上甚至没有最小化和最大化按钮。但是不要慌张，如果你去尝试，它会证明这是你用过最好、最有生产力的操作系统。

GNOME 不会给你带来困扰。启动之后，你唯一能看到的东西只有顶栏和背景图片。顶栏由这几样东西组成，“活动”在左边，时间和日期在中间（这也是你的通知中心），右边是网络、蓝牙、VPN、声音、亮度、电池等托盘图标之类的东西。

#### 为什么 GNOME 像 Mac

你会注意到一些跟 macOS 的相似之处，例如窗口吸附、空格预览（用起来跟 “Quick Look” 一模一样）。

如果你把鼠标光标移动到左上角，点击顶栏的“活动”，或者按下键盘上超级键（`Super` 键，也就是 Mac 上的 `ஐ` 键），你会看到“活动概览”。它有点像 macOS 系统上“调度中心”和“聚焦搜索”的结合体。它会在屏幕中间展示已打开软件和窗口的概览。在左手边，你可以看到坞站，上面有你打开的软件和常用软件。所有打开的软件下面会有一个指示标志，在右手边，你可以看到不同的工作区。

在顶栏中间，有一个搜索框。只要你开始输入，焦点就会转移到搜索框。它能搜索你已经安装的软件和文件内容，可以在软件中心搜索指定的软件、进行计算、向你展示时间或者天气，当然它能做的还有很多。它就像“聚焦”一样。只需开始输入你要搜索的内容，按下回车就可以打开软件或者文件。

你也能看到一列安装好的软件（更像 Mac 上的“启动台”），点击坞站中的“显示应用”图标，或者按 `Super + A` 就行。

总体来说，Linux 是一个轻量级的系统，即使在很老的硬件上也能跑得很顺畅，跟 macOS 比起来仅仅占用很少的磁盘空间。并且不像 macOS，你可以删除任何你不想要或不需要的预装软件。

#### 自定义你的 GNOME 设置

浏览一下 GNOME 设置，熟悉它的选项，做一些更改，让它用起来更舒服。下面是一些我装好 GNOME 必做的事情。

* 在“鼠标和触摸板”中，我禁用“自然滚动”、启用“轻触点击”。
* 在“显示”中，我打开“夜光”功能，在晚上，屏幕会让颜色变暖，减少眼睛疲劳。
* 我也安装了 [GNOME 优化](https://wiki.gnome.org/Apps/Tweaks)，因为它可以更改额外的设置选项。
* 在“GNOME 优化”中，我启用了 “Over-Amplification” 设置，这样就能获得更高的音量。
* 在“GNOME 优化”中，相比默认的亮色主题，我更喜欢 “Adwaita Dark” 主题。

#### 习惯使用键盘操作

GNOME 是以一个极度以键盘为中心的操作系统，所以尽量多使用键盘。在 GNOME 设置中的“键盘快捷键”部分，你可以找到各个快捷键。

你也可以根据自己的理想工作流程来设置键盘快捷键。我将我最常用的应用程序设置为使用超级键打开。比如说，`Super + B` 打开我的浏览器，`Super + F` 打开“文件”，`Super + T` 打开终端。我还把 `Ctrl + Q` 设置成关闭窗口。

我使用 `Super + Tab` 在打开的应用程序之间切换，`Super + H` 隐藏一个窗口，`F11` 全屏打开软件，`Super + Left` 把窗口吸附到屏幕左边，`Super + Right` 把窗口吸附到屏幕左边，等等。

### 在 Mac 上尝试 Linux 之后再做决定

在完全安装 Linux 之前，在你的 Mac 上先尝试 Fedora。从 [Fefora 官网](https://getfedora.org/en/workstation/download/)下载 ISO 镜像。使用 [Etcher](https://www.balena.io/etcher/) 将 ISO 镜像写入 USB 驱动器，然后在启动时点击 `Option` 键，这样你就可以在即用模式下尝试了。

现在您无需在 Mac 上安装任何东西就可以探索 Fedora 工作站了。试试各种东西，能否正常工作：能不能连接 WiFi？触控板是否正常？有没有声音？等等。

也记得花时间来尝试 GNOME。测试我上面提到的不同功能。打开一些安装好的软件。如果一切看起来都还不错，如果你喜欢这样的 Fedora 工作站和 GNOME，并且很肯定这就是你想要的，那么把它安装到你的 Mac 吧。

尽情探索 Linux 世界吧！

---

via: <https://opensource.com/article/20/6/mac-to-linux>

作者：[Marko Saric](https://opensource.com/users/markosaric) 选题：[lujun9972](https://github.com/lujun9972) 译者：[nophDog](https://github.com/nophDog) 校对：[wxy](https://github.com/wxy)

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


Linux Mint 20 正式发布了！你该升级吗？

Summary: 让我们来看看它的新功能，在哪里下载它，以及如何升级你的系统。

呃呃呃呃呃呃呃

没我的debian用的舒心。

让我们来看看它的新功能，在哪里下载它，以及如何升级你的系统。

# Linux Mint 20 正式发布了！你该升级吗？

Linux Mint 20 “Ulyana” 终于发布了，可以下载了。

Linux Mint 19 基于 Ubuntu 18.04 LTS，而 [Mint 20](/article-12297-1.html) 则基于 [Ubuntu 20.04 LTS](https://itsfoss.com/download-ubuntu-20-04/) —— 所以你会发现很多不同的地方、改进的地方，可能更棒了。

既然它来了，让我们来看看它的新功能，在哪里下载它，以及如何升级你的系统。

### Linux Mint 20：有什么新东西？

我们制作了一段关于 Linux Mint 20 的初步视觉印象的视频，让大家更好地了解。

说到 Linux Mint 20 的发布，有很多事情要谈。虽然我们已经介绍了 Linux Mint 20 的新的关键[功能](/article-12297-1.html)，但我还是在这里提几点，让大家一目了然。

* Nemo 文件管理器在生成缩略图方面的性能提升
* 一些重新设计的颜色主题
* Linux Mint 20 将禁止 APT 使用 Snapd
* 一个新的图形用户界面工具，用于通过本地网络共享文件
* 改进对多显示器的支持
* 改进对笔记本电脑的混合图形支持
* 不再有 32 位版本

除了这些变化之外，你还会注意到 Cinnamon 4.6 桌面更新后的一些视觉变化。

以下是 Linux Mint 20 Cinnamon 版的一些截图。

### 升级到 Linux Mint 20：你需要知道什么？

如果你已经在使用 Linux Mint，你可以选择升级到 Linux Mint 20。

* 如果你使用的是 Linux Mint 20 测试版，你可以升级到 Mint 20 稳定版。
* 如果你正在使用 Linux Mint 19.3（这是 Mint 19 的最新迭代），你可以将系统升级到 Linux Mint 20，而不需要进行重新安装
* Linux Mint 20 没有 32 位版本。如果你**使用 32 位的 Mint 19 系列，你将无法升级到 Mint 20**
* 如果你使用的是 Linux Mint 18 系列，你必须先通过 Mint 19 系列升级。在我看来，重新安装 Mint 20 会比较省时省事
* 如果你使用的是 Linux Mint 17、16、15 或更低版本，你一定不要再使用它们了。这些版本已经不支持了

我们有一个详细的指南，展示了从 18.3 到 19 [升级 Linux Mint 版本](https://itsfoss.com/upgrade-linux-mint-version/)的步骤。我猜测 Mint 20 的步骤应该也是一样的。我们的团队会对 Mint 19.3 到 Mint 20 的升级做一些测试，并在适用的情况下更新这个指南。

在你继续升级之前，请确保备份你的数据和[使用 Timeshift 创建系统快照](https://itsfoss.com/backup-restore-linux-timeshift/)。

### 下载Linux Mint 20

你可以简单地前往其官方下载页面，为自己抓取最新的稳定 ISO。你会发现官方支持的桌面环境的 ISO，即 Cinnamon、MATE 和 Xfce。

此外，还为那些网络连接缓慢或不稳定的用户提供了 Torrent链接。

* [下载 Linux Mint 20](https://linuxmint.com/download.php)

如果你只是想在不更换主系统的情况下试一试，我建议先[在 VirtualBox 中安装 Linux Mint 20](https://itsfoss.com/install-linux-mint-in-virtualbox/)，看看这是不是你喜欢的东西。

你试过 Linux Mint 20 了吗？你对这个版本有什么看法？请在下面的评论区告诉我你的想法。

---

via: <https://itsfoss.com/linux-mint-20-download/>

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


#新闻拍一拍# 华为正式开源数据虚拟化引擎 openLooKeng

Summary: • 阿里数学竞赛全球最强 73 人出炉 • Fedora 开发者讨论放弃支持老式 BIOS 的可能性 • IBM 宣布向 Linux AI 基金会贡献一系列 AI 工具包 • 牺牲稳定换更短发布周期，Firefox 的这步棋真的下对了吗？

# #新闻拍一拍# 华为正式开源数据虚拟化引擎 openLooKeng

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

#### 华为正式开源数据虚拟化引擎 openLooKeng

2019 年 11 月 19 日，华为宣布开源数据虚拟化引擎 HetuEngine（开源版本的 HetuEngine 叫 openHetu），现在，openHetu 正式更名为 openLooKeng，HetuEngine 更名为 LooKengEngine。openLooKeng 致力于为大数据用户提供极简的数据分析体验，让用户像使用“数据库”一样使用“大数据”。openLooKeng 是一款开源的高性能数据虚拟化引擎。提供统一 SQL 接口，具备跨数据源/数据中心分析能力以及面向交互式、批、流等融合查询场景。同时增强了前置调度、跨源索引、动态过滤、跨源协同、水平拓展等能力。

来源：[开源中国](https://www.oschina.net/news/116889/huawei-opensources-openlookeng)

>
> 拍一拍：去年华为承诺的一系列开源项目看来最近都有了新动作，不过我们希望这些新动作都能落到实处。
>
>
>

#### 阿里数学竞赛全球最强 73 人出炉

7 月 2 日，第二届阿里巴巴全球数学竞赛举办颁奖典礼，经过两轮预赛、一轮决赛的角逐，来自中、美、法、德、英、俄、新加坡、格鲁吉亚等 8 个国家的 73 位选手成为最终获奖者。麻省理工学院的王东皞、普林斯顿大学的郑凡、新加坡国立大学的 Yap Jit Wu、加利福尼亚大学伯克利分校的张钺带走了 4 座金奖奖杯。

来源：[快科技](https://www.cnbeta.com/articles/tech/998277.htm)

>
> 拍一拍：似乎金奖都是中国人或华裔啊。
>
>
>

#### Fedora 开发者讨论放弃支持老式 BIOS 的可能性

英特尔计划在 2020 年结束终止支持老式 BIOS，并且 UEFI 在 x86\_64 系统中已经非常普遍。Fedora 开发者正在讨论现在开始逐步取消支持老式 BIOS 是否为好时机。一些使用 2012~2013 年时期硬件的用户对可能无法在他们的无 UEFI 硬件上使用新的 Fedora 版本表示失望。目前尚未提出正式的提案来终止支持老式 BIOS 并只支持 UEFI，不过 Fedora 团队已开始对该问题展开积极讨论。

来源：[开源中国](https://www.oschina.net/news/116887/fedora-discuss-legacy-bios-drop?tdsourcetag=s_pctim_aiomsg)

>
> 拍一拍：感觉目前 Fedora 是最活跃积极的发行版社区了。
>
>
>

#### IBM 宣布向 Linux AI 基金会贡献一系列 AI 工具包

此次 IBM 一共贡献了三项工具：AI Fairness 360 工具包可帮助检测和减轻整个 AI 应用程序中机器学习模型的偏差；Adversarial Robustness 360 Toolbox（ART） 是一个 Python 库，旨在保证机器学习的安全性，使神经网络免受攻击；AI Explainability 360 工具包则提供了一套全面的算法，涵盖了解释的不同维度以及代理的可解释性指标，用以支持机器学习模型的可解释性。

来源：[开源中国](https://www.oschina.net/news/116865/ibm-donates-trusted-ai-projects-to-lfai)

#### 牺牲稳定换更短发布周期，Firefox 的这步棋真的下对了吗？

去年九月，Mozilla 宣布了 Firefox 浏览器的升级周期从此前的六周时间缩短至四周。这意味着用户能够更快获得稳定版本。虽然该公司确实已经成功地接受了这个四周的发布时间表，但其承诺的严格测试却不是这样的。Firefox 76/77/78 三个重要版本均出现了各种严重的问题，导致 Mozilla 被迫暂停新版本的推送，然后紧急发布维护版本更新。

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

>
> 拍一拍：追求新变化可能不是浏览器用户最关注的地方，稳定和保持性能优良才是最最重要的。
>
>
>


学习 Shell 脚本编程的免费资源

# 学习 Shell 脚本编程的免费资源

>
> 你想学习 shell 脚本编程吗？或者你想提升现有的 bash 知识？我收集了以下免费的资源来帮助你学习 shell 脚本编程。
>
>
>

（LCTT 译注：毫无疑问，这些都是英文的）

shell 是一个命令行解释器，它允许你输入命令并获得输出。当你在使用终端的时候，你就已经在看 shell 了。

是的，shell 是一个你可以和它进行交互的命令行界面，你可以通过它给操作系统某种指令。虽然有不同类型的 shell，但是 [bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell))（GNU Bourne-Again Shell）是在各 Linux 发行版中最流行的。

当谈到 shell 脚本编程的时候，也就意味着 —— 用户希望使用脚本来执行多条命令来获得一个输出。

也许你需要学习 shell 脚本编程作为你的课程或者工作的一部分。了解 shell 脚本编程也可以帮助你在 Linux 中自动化某些重复的任务。

不管出于什么原因学习 shell 脚本编程，都可以看看这些我给你展示的资源。

### 最好的免费学习 shell 脚本编程的资源

还没在你的系统上安装 Linux？不用担心。有很多种方法[在 Windows 上使用 Linux 终端](https://itsfoss.com/run-linux-commands-in-windows/)。你也可以在某些情况下[使用在线 Linux 终端](https://itsfoss.com/online-linux-terminals/)来练习 shell 脚本编程。

#### 1、学习 Shell —— 互动网站

如果你正在找一个互动网站来学习 shell 脚本编程，并且还可以在线试试，“[学习 Shell](https://www.learnshell.org/)” 是一个不错的起点。

它涵盖了基础知识，并且也提供了一些高级的练习。通常，内容还是简明扼要的 —— 因此，我建议你看看这个网站。

#### 2、Shell 脚本编程教程 —— 门户网站

“[Shell 脚本编程教程](https://www.shellscript.sh/)” 是一个完全专注于 shell 脚本编程的网站。你可以选择免费阅读其中的资源，也可以购买 PDF、实体书籍和电子书来支持他们。

当然，花钱买纸质的版本或者电子书不是强制的。但是，这些免费资源查看起来还是很方便的。

#### 3、Udemy：Shell 脚本 —— 免费视频课程

毫无疑问，[Udemy](https://www.udemy.com) 是最受欢迎的在线课程平台之一。而且，除了付费认证课程之外，它还提供了不包含证书的免费内容。

“[Shell 脚本](https://www.udemy.com/course/shell-scripting-i/)” 是 Udemy 上推荐度最高的免费课程之一。你不需要花费任何费用就可以注册这门课。

#### 4、Udemy：Bash Shell 脚本编程 —— 免费视频课程

Udemy 上另一个专注于 [bash shell 脚本编程](https://www.udemy.com/course/complete-bash-shell-scripting/)的有趣且免费的课程。与前面提到的课程相比，这个资源似乎更受欢迎。所以，你可以注册这门课，看看它都教些什么。

别忘了 Udemy 的免费课程不能提供证书。但是，它确实是一个让人印象深刻的免费 shell 脚本编程学习资源。

#### 5、Bash 研究院 —— 互动游戏在线门户

顾名思义，“[Bash 研究院](https://guide.bash.academy/)” 专注于向用户提供 bash shell 的教学。

尽管它没有很多的内容，它还是非常适合初学者和有一定经验的用户。不仅仅局限于指导 —— 它也可以提供交互式的游戏来练习，不过目前已经不能用了。

因此，如果这个足够有趣，你可以去看看这个 [Github 页面](https://github.com/lhunath/guide.bash.academy)，并且如果你愿意的话，还可以复刻它并对现有资源进行改进。

#### 6、LinkedIn：学习 Bash 脚本编程 —— 免费视频课程

LinkedIn 提供了大量免费课程来帮助你提成技能，并且为更多工作做好准备。你还可以找到一些专注于 shell 脚本编程的课程，这些课程有助于重温基本技能或者这个过程中获得一些高级技能。

在这里，我提供一个 [学习 Bash 脚本编程](https://www.linkedin.com/learning/learning-bash-scripting) 的课程链接，你还可以发现其他类似的免费课程。

#### 7、高级 Bash 脚本编程指南 —— 免费 PDF 书籍

这是一个令人印象深刻的《[高级 Bash 脚本编程指南](http://tldp.org/LDP/abs/abs-guide.pdf)》，并且可以免费获得到它的 PDF 版本。这个 PDF 资源没有版权限制，在公开领域是完全免费的。

尽管这个资源主要是提供高级的知识，通过参考这个 PDF 并且开始学习 shell 脚本编程，它还是很适合初学者的。

#### 8、专业 Bash 笔记 —— 免费 PDF 书籍

如果你已经对 Bash Shell 脚本编程比较熟悉或者只是想快速总结一下，那这是一个很好的参考。

这个《[专业 Bash 笔记](https://goalkicker.com/BashBook/)》可以免费下载的书有 100 多页，通过简单的描述和例子，这本书涵盖了各种各样的主题。

#### 9、Tutorialspoint —— 门户网站

“[Tutorialspoint](https://www.tutorialspoint.com/unix/shell_scripting.htm)” 是一个非常流行的学习各种编程语言的门户网站。我想说这对于初学者学习基础知识非常好。

也许这不太适合作为一个详细的资源——但是它应该是不错的免费资源。

#### 10、旧金山城市学院：在线笔记 —— 门户网站

也许这不是最好的免费资源 —— 但是如果你已经为学习 shell 脚本编程做好了探索每种资源的准备，为什么不看看旧金山城市学院的 “[在线笔记](https://fog.ccsf.edu/~gboyd/cs160b/online/index.html)” 呢？

当我在网上随便搜索关于 shell 脚本编程的资源的时候，我偶然遇到到了这个资源。

同样需要注意的是，这个在线笔记可能会有点过时。但是，这应该还是一个值得探索的有趣资源。

#### 荣誉奖: Linux 手册

不要忘记，bash 手册也应该是一个相当不错的免费资源，可以用它来查看命令和使用方法。

尽管它不是专门为你掌握 shell 脚本编程而量身打造的，它依然是一个你可以免费使用的重要网络资源。你可以选择访问在线手册，或者直接打开终端然后输入以下命令：

```
man bash

```

### 总结

有很多很受欢迎的付费资源，比如这些[最好的 Linux 书籍](https://itsfoss.com/best-linux-books/)。从网络上的一些免费资源开始学习 shell 脚本编程还是很方便的。

除了我提到的这些，我敢肯定网上还有不计其数的资源可以帮助你学习 shell 脚本编程。

你喜欢换上面提到的资源吗？如果你知道我可能错过的非常棒的免费资源，记得在下面评论区告诉我。

---

via: <https://itsfoss.com/shell-scripting-resources/>

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

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


Summary: • 维基百科新项目 Abstract Wikipedia 推动跨语言内容发展 • Ubuntu 19.10 将于本月结束生命周期 • openSUSE Leap 15.2 发布 • 第二次 LibreOffice 7.0 Bug 猎杀会即将开始

# #新闻拍一拍# 微软推出 Pylance，改善 VS Code 中的 Python 体验

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

#### 微软推出 Pylance，改善 VS Code 中的 Python 体验

微软宣布推出一种新的 Python 语言服务器，名为 Pylance，其可利用语言服务器协议与 VS Code 进行通信。Pylance 现在作为 Visual Studio Marketplace 的扩展提供。一些关键功能包括有：类型信息、自动导入、类型检查诊断和多根工作区支持。

来源：[开源中国](https://www.oschina.net/news/116917/microsofts-pylance-vs-code-python)

>
> 拍一拍：VS Code 真好用……慢慢地，微软推出的开源产品会越来越好用，心情复杂……
>
>
>

#### 维基百科新项目 Abstract Wikipedia 推动跨语言内容发展

这是该基金会 7 年来展开的第一个新项目。这个新想法，即允许投稿者使用抽象符号创建内容，然后通过一款名为 Wikilambda 的工具托管一组函数并将其翻译成不同的自然语言，无论用户说的是哪种语言都能更好地平衡内容。在其看来，该项目不需要在自然语言生成或词汇知识表达方面取得了重大突破。

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

>
> 拍一拍：确实目前还是英文维基百科内容最丰富详实，这个项目如果能够成功的话，会对各个语言版本的发展起到很大的推动作用。不过，中文维基百科的落后，不完全是语言问题，你知道的……
>
>
>

#### Ubuntu 19.10 将于本月结束生命周期

官方建议迁移至 Ubuntu 20.04，从 Ubuntu 19.10 升级到 20.04 版本也非常方便。今年 4 月发布的 Ubuntu 20.04 是一个长期支持版本，将提供长达 5 年的支持，直至 2025 年。

来源：[开源中国](https://www.oschina.net/news/116915/ubuntu-19-10-will-soon-eol)

>
> 拍一拍：Ubuntu 的 STS 类似于 Fedora 的快递迭代，LTS 则类似于 CentOS，但是每逢遇到 STS 版本，我基本上都不想去用。
>
>
>

#### openSUSE Leap 15.2 发布

新版最引人注目的是整合了 AI 和机器学习库，其中包括 Tensorflow、PyTorch、ONNX、Grafana 和 Prometheus。openSUSE Leap 15.2 还加入了实时核心去管理微处理器的时序。

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

>
> 拍一拍：这些增加的部分不错。
>
>
>

#### 第二次 LibreOffice 7.0 Bug 猎杀会即将开始

文档基金会正在努力准备 LibreOffice 的下一次重大更新，随着发布日期的临近，LibreOffice QA 团队将于 2020 年 7 月 6 日（星期一）组织 LibreOffice 7.0 的第二次 Bug 猎杀会。LibreOffice 7.0 预计将在 8 月初推出。

来源：[softpedia](https://news.softpedia.com/news/new-libreoffice-7-0-bug-hunting-ready-to-begin-530449.shtml)

>
> 拍一拍：Bug 们会瑟瑟发抖吗？会吗？
>
>
>


这些技巧让 Bash 命令历史更加有用

Summary: 告诉 Bash 你想要它记住什么，甚至删除不需要的记录重写历史。

告诉 Bash 你想要它记住什么，甚至删除不需要的记录重写历史。

# 这些技巧让 Bash 命令历史更加有用

>
> 告诉 Bash 你想要它记住什么，甚至删除不需要的记录重写历史。
>
>
>

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

运行 [Bash](https://opensource.com/resources/what-bash) 的 Linux 终端有内置的历史记录，你可以用来跟踪最近的操作。要查看你的 Bash 会话的历史记录，请使用内置命令 `history`：

```
$ echo "foo"
foo
$ echo "bar"
bar
$ history
  1  echo "foo"
  2  echo "bar"
  3  history

```

与大多数命令不一样，`history` 命令不是文件系统上的可执行文件，而是 Bash 的功能。你可以使用 `type` 命令来验证：

```
$ type history
history is a shell builtin

```

### 历史控制

shell 历史记录的行数上限由 `HISTSIZE` 变量定义。你可以在 `.bashrc` 文件中设置此变量。以下将你的历史记录设置为 3,000 行，之后将最早的行删除以为最新命令腾出空间，该命令位于列表的底部：

```
export HISTSIZE=3000

```

还有其他与历史相关的变量。 `HISTCONTROL` 变量控制哪些历史被记录。你可以在 `.bashrc` 中写入下面的行来强制 Bash 排除以空格开头的命令：

```
export HISTCONTROL=$HISTCONTROL:ignorespace

```

现在，如果你输入以空格开头的命令，那么它将不会记录在历史记录中：

```
$ echo "hello"
$     mysql -u bogus -h badpassword123 mydatabase
$ echo "world"
$ history
  1  echo "hello"
  2  echo "world"
  3  history

```

你也可以避免重复的条目：

```
export HISTCONTROL=$HISTCONTROL:ignoredups

```

现在，如果你一个接着一个输入两个命令，历史记录中只会显示一个：

```
$ ls
$ ls
$ ls
$ history
  1  ls
  2  history

```

如果你喜欢这两个忽略功能，那么可以使用 `ignoreboth`：

```
export HISTCONTROL=$HISTCONTROL:ignoreboth

```

### 从历史记录中删除命令

有时你会犯一个错误，在 shell 中输入了一些敏感内容，或者你只是想清理历史记录，以便它更准确地表示让某件事正常工作所采取的步骤。如果要从 Bash 的历史记录中删除命令，请在要删除的项目的行号上使用 `-d` 选项：

```
$ echo "foo"
foo
$ echo "bar"
bar
$ history | tail
  535  echo "foo"
  536  echo "bar"
  537  history | tail
$ history -d 536
$ history | tail
  535  echo "foo"
  536  history | tail
  537  history -d 536
  538  history | tail

```

要停止添加 `history` 条目，只要在 `HISTCONTROL` 环境变量中有 `ignorespace`，就可以在命令前添加空格：

```
$  history | tail
  535  echo "foo"
  536  echo "bar"
$  history -d 536
$  history | tail
  535  echo "foo"

```

你可以使用 `-c` 选项清除所有会话历史记录：

```
$ history -c
$  history
$

```

### history 命令的经验教训

操纵历史通常没有听起来那么危险，尤其是当你有目标地管理它时。例如，如果你要记录一个复杂的问题，通常最好使用会话历史来记录命令，因为通过将命令插入历史记录，你能运行它们并从而测试过程。很多时候，不执行历史命令会导致忽略小的步骤或写错小细节。

按需使用历史会话，并明智地控制历史记录。享受历史修改吧！

---

via: <https://opensource.com/article/20/6/bash-history-control>

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


VS Code 的 7 个开源替代品

Summary: 为了避免使用微软版本的 VS Code，我们需要另行选择一个开源的代码编辑器。

赞。多谢澄清。<br />
我一直没法喜欢visual studio code

Doom Emacs

absolutely VIM

为了避免使用微软版本的 VS Code，我们需要另行选择一个开源的代码编辑器。

# VS Code 的 7 个开源替代品

>
> 为了避免使用微软版本的 VS Code，我们需要另行选择一个开源的代码编辑器。
>
>
>

Visual Studio Code，也叫 VS Code，是一个跨平台代码编辑器，通用于 Linux、Windows 以及 macOS。它既能编辑简单文本，也能像集成开发环境（IDE）一样管理整个代码库。它可以通过插件进行扩展，并且已经被证明是一个可靠的文本编辑器，很轻松地就击败了非开源的强大竞品编辑器。

微软以开源的方式发布了 VS Code，但是你从微软下载的版本其实并不是开源的。然而，你仍有办法以开源的方式使用 VS Code，或者直接选择其它的开源替代品。

### 以开源的方式构建 VS Code

你可以在 [GitHub](https://github.com/microsoft/vscode) 获得 VS Code 的源代码。然而当你 [从微软](https://code.visualstudio.com/) 下载 VS Code 时，你会发现它是基于 [微软软件许可证](https://code.visualstudio.com/license) 授权的。这并不是一个开源许可证。其区别在于构建过程。

Chris Dias 是微软 VS Code 项目开发者之一，他对 VS Code [作了一个对比](https://github.com/Microsoft/vscode/issues/60#issuecomment-161792005)，就像 Chrome 浏览器和其开源的“上游”项目 [Chromium](https://www.chromium.org/) 一样。VS Code 确实是基于开源代码库构建的。微软官方发布的版本带有一些与微软相关的功能，包括一项商标、一个插件库、一个 C# 调试器以及遥测。但如果你克隆仓库然后自行编译，这些东西都不会被加入，所以你会得到一个名为 Code - OSS 的“干净”版本（OSS 代表开源软件）。

实际上，VS Code 与 Code - OSS 之间的差异很小。最值得注意的是，VS Code 包含遥测功能，它会记录使用数据。微软不可能监控你的一举一动，而且目前越来越多软件都在收集使用数据。是否在乎 VS Code 的遥测功能，完全取决于你自己。如果你不希望它追踪你的使用情况，这里有一些很棒的 VS Code（开源）替代品。

### VSCodium

最简单的替代方案就是构建不带微软附属功能的 VS Code 版本。[VSCodium](https://vscodium.com/) 项目提供了可下载的 Code-OSS 可执行文件，它基于 VS Code 代码库编译，没有配置微软的 `product.json` 中的改变。VSCodium 的开发者还竭尽全力禁用了所有难以寻找的遥测选项，除非你自行编译，否则这已经是你能找到的最干净的 VS Code 版本了。

VSCodium 提醒说，VS Code 悄悄地包含了一些专有工具，这些工具无法与开源版本一起提供。这包括一个 C# 调试器和部分插件。如果你需要它们，可以在 [文档中] 找到解决办法。假如你依赖 VS Code 中某些特定的功能，你应该验证它在 VSCodium 中是否可以发挥功用。

此外，你还应该验证是否已禁用所有的遥测功能。

### Code - OSS

如果不想用 VSCodium 的版本，你可以自己 [从头编译 VS Code](https://github.com/Microsoft/vscode/wiki/How-to-Contribute#build-and-run)，得到一样的版本。可执行文件叫做 `Code - OSS`，而不是 `VSCode`，适用于 VSCodium 的许可证限制也适用于你的构建，而工作方式也是一样。

如果通过编译源码构建应用，首次启动时你要确保 [所有遥测都已经被禁用]。

### Atom

[Atom](http://atom.io) 是一个类似于 IDE 的文本编辑器，当微软收购 Github 的同时也收购了它。和 VS Code 一样，你可以使用插件，扩展 Atom 编辑器，此外，你还能通过自己的工具和主题实现定制。它开源且与 Github 集成。简而言之，只要你能找到你想用的插件，或者你愿意自己动手写，那么 Atom 几乎可以满足你的一切需求。

跟 VS Code 一样，Atom 也 [默认包含遥测](https://discuss.atom.io/t/how-do-i-disable-the-metrics-or-tracking/24520)。你可以禁用这个功能，而且跟 VS Code 不同的是，使用插件不受任何限制，所以不必再因为隐私改变你的工作流。对写代码的人来说，毫无疑问 Atom 是很有用的工具，而对于 [使用电脑的任何人](https://opensource.com/article/19/4/write-git)，它同样会是一个很赞的编辑器。如果你需要一个顺手的通用文本编辑器，请试试 Atom。

### GNOME Builder

为 GNOME 桌面而开发的 IDE，[GNOME Builder](https://wiki.gnome.org/Apps/Builder) 是一个 Linux 平台的代码编辑器，专门用于构建 GNOME 应用。如果你为 Linux 构建应用程序，希望轻松解决兼容性问题，那么 Builder 就是最简单的选择。从 [Flathub.org](https://flathub.org/apps/details/org.gnome.Builder) 安装 Builder；当你开启一个新项目，如果没有安装 GNOME SDK，它会提醒你。这意味着当维护你的应用时，你不必刻意关注 GNOME 的状态，因为 Builder 在替你做这件事。

然而，Builder 不仅能构建 GNOME 程序。它还支持各种各样的编程语言，包括 Python、Rust、C/C++、Java、Go、JavaScript、TypeScript、[VB.NET](http://VB.NET)、Markdown 和几种标记语言等等。它对部分语言有全面的支持，包括自动补全以及弹出式函数定义，但是其它语言仅仅含有一些比较方便的功能，例如语法高亮跟自动匹配括号。不管你是不是一个专门的程序员，或者你只想要一个给力的 HTML 和 CSS 编辑器，这个 IDE 都能让你舒心使用。

### Geany

[Geany](https://www.geany.org/) 是一个强大、稳定而轻量级的编辑器，它有很多有用的特性，能帮你写 Bash、Python、Lua、XML、HTML、LaTex，当然远不止这些。对 50 种各种编程及脚本语言、标记语言和各种文件类型（比如 .diff 和 .po），Geany 都有很好的支持。退一万步讲，Geany 还有括号匹配和语法高亮 —— 通常来说，它包含更多功能。

Geany 是一个小型编辑器，但是通过插件，你可以为它添加特性，例如项目视图面板、文件系统树、调试、终端等，直到它看起来像一个 IDE。当然，萝卜白菜各有所爱，你也可以尽量使它保持简洁易用。如果因为电脑 CPU 或者内存的限制而无法使用 VS Code，那么很明显 Geany 可以作为你的选择。它只占用少量内存，而且启动迅速。即便跟运行在终端里的 Vim 相比，Geany 稍显笨重，但就算在树莓派，它也能做到快速、灵活。

### Brackets

[Brackets](http://brackets.io/) 是一款面向网页开发者的文本编辑器和 IDE。对于 HTML、CSS、JavaScript、PHP 甚至 Python，它都有很强大的支持。而且跟 VS Code 一样，它也有一个很丰富的插件生态，所以你可以最大限度地扩展它，以适应你所有编程语言的工作。

有的插件用于辅助解析语言、运行脚本，甚至编译执行代码。Brackets 有一个传统的界面，不管你是否熟悉 IDE 或者像记事本一样简单的文本编辑器，都能驾轻就熟。如果稍微花点时间，添加几个相关插件，然后熟悉它们，你会发现 Brackets 真的是一个很精妙、很有用的编辑器，不管你输入什么，它都能通过自动补全、提示帮你避免低级错误。假如你是程序员，它能帮你加快测验和调试周期。

### Che

如果你喜欢新技术，那你应当尝试 [Che](https://www.eclipse.org/che/extend/) 编辑器。这是一个基于云的 IDE，所以它默认以软件即服务（SaaS）的形式运行，但它是完全开源的，如果你有 Kubernetes 实例，那就可以运行为*你自己的* SaaS。

Che 不仅是一个在线 IDE，而且是一个为云开发而构建的 IDE。在 Che 的概念里，用户无需查看本地文件系统。由于它在云端工作，所以你也可以这么做。事实上，如果你有一台 Git 服务器，那就可以直接把它当作你的文件系统，在它的仓库中完成你的项目。当然，你也可以下载所有文件做本地备份。

但 Che 的主要特点，也是云开发者最为兴奋的一点，它是一个功能全面、带有 Kubernetes 感知功能的开源 IDE。如果你正在为云构建应用、网站或容器（或三者的组合），那么 Che 是一个你需要尝试的编辑器。

### 那么你的选择是？

你有没有在使用这些 VS Code 替代品中的某一个呢？想不想挑一个试试呢？欢迎在评论中分享你的见解。

---

via: <https://opensource.com/article/20/6/open-source-alternatives-vs-code>

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

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


#新闻拍一拍# 苹果内部员工透露：iPhone 因性能问题而屏蔽北斗导航

Summary: • 微软提议改善 Chrome 在 Windows 10 上性能表现 • 苹果想将 iPhone 打造成“身份证” • Paddle.js 1.0 发布，浏览器中的深度学习框架

# #新闻拍一拍# 苹果内部员工透露：iPhone 因性能问题而屏蔽北斗导航

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

#### 苹果内部员工透露：iPhone 因性能问题而屏蔽北斗导航

从技术上看，苹果近几代手机都是实用英特尔基带，最新的是 XMM7660，官方文档中是确认支持北斗导航定位的，所以 iPhone 是可以支持北斗导航的。但苹果官方文档中曾经提到 iPhone 手机使用北斗信号有性能问题，因此苹果屏蔽了北斗信号。

来源：[集微网](https://tech.163.com/20/0705/09/FGOV5N3A000999LD.html)

>
> 拍一拍：是这样吗？
>
>
>

#### 微软提议改善 Chrome 在 Windows 10 上性能表现

在 Edge 浏览器拥抱 Chromium 平台之后，微软加大了对该平台的贡献力度，并携手谷歌修复和解决了耗电、无障碍工具以及开发者工具在内的诸多问题。微软指出谷歌 Chrome 浏览器会运行一段代码来确认 Chrome.exe 浏览器是否被固定在任务栏上。这段代码检查会在 Chrome 浏览器启动 45 秒之后进行，会消耗 300ms 的 CPU。微软认为这些代码是冗余的。

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

>
> 拍一拍：“没有人比我更熟悉 Windows” —— 微软
>
>
>

#### 苹果想将 iPhone 打造成“身份证”

届时手机可取代护照、驾照和其他身份证明。上述文件的拷贝将被直接存在手机中。苹果公司会给出公共名称为“提供经验证的用户身份声明”的一系列专利使用申请表供用户填写，并会在其中描述存储和使用个人数字鉴别标识的方法。

来源：[网易科技](https://tech.163.com/20/0705/09/FGOSQT1R000999LD.html)

>
> 拍一拍：微信和支付宝已经做到了。
>
>
>

#### Paddle.js 1.0 发布，浏览器中的深度学习框架

Paddle.js 是百度 Paddle 的 web 方向子项目。Paddle.js 可以加载提前训练好的 paddle 模型，或者将 paddle hub 中的模型通过 paddle.js 的模型转换工具变成浏览器友好的模型进行在线推理预测使用。目前，paddle.js 仅可以在支持 webGL 的浏览器中运行。

来源：[开源中国](https://www.oschina.net/news/116880/paddle-js-1-0-released)

>
> 拍一拍：百度具有较大影响力的开源项目不多，这个项目就是一个。
>
>
>


一个可放大图像的开源的浏览器扩展

# 一个可放大图像的开源的浏览器扩展

>
> 想细看网络图像并不总是那么简单，但是 Hover Zoom+ 让它像鼠标滑动一样容易。
>
>
>

你是否曾经在访问网站时希望查看更大的图像？我经常遇到这种情况，而要做到这点并不总是那么容易。

有时，我在源码中筛选，使用 `Ctrl + F` 搜索图像，复制图像源地址并将其粘贴到新窗口中，以便以全尺寸查看图像。或者，另一个选择是右键单击，复制图像地址，然后粘贴到新选项卡中。

Hover Zoom+ 让这个过程更加简单。Hover Zoom+ 是一个简单 Chrome 扩展程序，在 MIT 许可证下发布，可在 Chrome 商店中找到，它的源码可在 [GitHub](https://github.com/extesy/hoverzoom/) 上获得。它也适用于 Firefox。

这个应用使得该过程更加容易。只需将鼠标悬停在图像上，你将看到一个弹出窗口来显示该图像的全部内容，它会匹配你的浏览器窗口，无论图像是否被裁剪（或者图像尺寸适当，它看上去会是一样的）。这可能很有趣，因为有时可能会裁剪原始图像，以适应空间或聚焦于图像的特定部分。但是，你无法右键单击并直接从弹出窗口中保存图像。

根据加州圣何塞的开发人员 Oleg Anashkin 的说法，“这是原始 HoverZoom 扩展的开源版本，现已被恶意软件所占领，并被从商店中删除。在此版本中，所有间谍软件均已删除，许多 bug 已被修复，并添加了新功能。它默认不会收集任何统计信息。”

我在 Windows 10 笔记本上的 Chrome 中安装了此扩展，然后试用了一下。安装扩展后，我将鼠标悬停在图像上，它在弹出窗口中显示了比实际更大的图像。

但是，Hover Zoom+ 不适用于所有网站或所有图像。它适用于 Facebook 和 Twitter，但不适用于这些网站上的赞助内容。用户可以轻松切换该应用以针对特定站点启用或禁用它。使用 Hover Zoom+ 可以很容易地看到 Instagram 上的这只可爱小猫而无需实际阅读帖子（方便！）：

---

via: <https://opensource.com/article/20/6/hoverzoom>

作者：[Jeff Macharyas](https://opensource.com/users/jeffmacharyas) 选题：[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 终端任意读写数据

Summary: 重定向是一种十分高效的数据流动方式，它能帮你减少很多鼠标和键盘上的操作。

重定向是一种十分高效的数据流动方式，它能帮你减少很多鼠标和键盘上的操作。

# 通过重定向在 Linux 终端任意读写数据

>
> 重定向是一种十分高效的数据流动方式，它能帮你减少很多鼠标和键盘上的操作。
>
>
>

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

对于任何编程或脚本语言，输入与输出重定向都是很自然的功能。严格来说，当你使用电脑时，数据自然而然地在发生着重定向。从 `stdin`（标准输入，通常是你的键盘或者鼠标）读取输入，输入则发往 `stdout`（标准输出，一段文本或者数据流），最后错误信息送至 `stderr`。如果你使用 [Bash](https://opensource.com/resources/what-bash) 或 [Zsh](https://opensource.com/article/19/9/getting-started-zsh) 之类的 shell，那么理解这些数据流能够让你更好地控制信息流向。

标准输入、标准输出以及标准错误输出都存在于 Linux 文件系统中。你可以在 `/dev` 查看：

```
$ ls /dev/std*
/dev/stderr@  /dev/stdin@  /dev/stdout@

```

你可能没法直接使用它们，但将它们想象成你能传递数据的元位置，会很有帮助。

重定向的基础很简单：用一些 `>` 符号重定向输出，然后用另外一些 `<` 符号重定向输入。

### 重定向输出

将 [ls](https://opensource.com/article/19/7/master-ls-command) 命令的输出写入一个文件：

```
$ ls > list.txt

```

你没法像平常那样看到 `ls` 的输出，因为它们并没有被发送到屏幕，而是被写入 `list.txt` 文件了，这个功能用处太多了，事实上，你甚至可以用它来将文件内容拷贝到另一个文件。不一定是文本文件，你也可以用将重定向用于二进制数据：

```
$ cat image.png > picture.png

```

（你可能会好奇为什么要这样做，有时候对于 [文件权限信息](https://opensource.com/article/19/8/linux-permissions-101) 而间接有用。）

### 重定向输入

你也能将输入重定向“到”一个命令。可以说，它没有重定向输出那么有用，因为许多命令已经被硬编码，只从你的参数中接收输入。但是，如果某个命令需要一系列参数，而且你把这些参数写在文件里，想要快速“复制粘贴”到终端的时候（除非你并不想复制粘贴），它就帮得上忙了。

```
$ sudo dnf install $(<package.list)

```

重定向输入得常规用法是<ruby> 嵌入文档 <rt>  here-document </rt></ruby>（简写成 here-doc）和<ruby> 嵌入字符串 <rt>  here-string </rt></ruby> 技巧。这种输入方法将一整块文本重定向至标准输入流，直到碰见一个特殊的文件结束标记（许多人习惯用 `EOF`，实际上你可以使用任何字符串，只要它是唯一的）。试着把这些（在第二个 `EOF` 标记之前）敲进你的终端：

```
$ echo << EOF
> foo
> bar
> baz
> EOF

```

输出结果：

```
foo
bar
baz

```

使用 [Bash](https://opensource.com/resources/what-bash) 编写脚本的人常常用这个技巧，将数行文本一次性写入文件或者打印到屏幕上。只要你别忘了末尾的文件结束标记，这会是一个帮你避免大量繁琐 `echo` 或 `printf` 语句的好办法。

嵌入字符串类似于嵌入文档，但是它只含有一个字符串（或者用引号包裹的几个字符串，同样会被当成一个字符串）

```
$ cat <<< "foo bar baz"
foo bar baz

```

### 重定向错误信息

错误信息流叫做 `stderr`，通过 `2>` 实现这个目的。下面这个命令把错误信息定向到 `output.log` 文件：

```
$ ls /nope 2> output.log

```

### 将数据送往 /dev/null

既然标准输入、标准输出和错误输出都有自己的位置，那么“空空如也”也应该在 Linux 文件系统占有一席之地。没错，它叫做 `null`，位于 `/dev`，频繁使用的人懒得说 “slash dev slash null”，于是索性叫它 “devnull”。

通过重定向，你可以把数据发送到 `/dev/null`。比如，`find` 命令常常会输出很多具体信息，而且在搜索文件遇到权限冲突时，会事无巨细地报告：

```
$ find ~ -type f
/home/seth/actual.file
find: `/home/seth/foggy': Permission denied
find: `/home/seth/groggy': Permission denied
find: `/home/seth/soggy': Permission denied
/home/seth/zzz.file

```

`find` 命令把那些当作错误，所以你可以只把错误信息重定向至 `/dev/null`：

```
$ find ~ -type f 2> /dev/null
/home/seth/actual.file
/home/seth/zzz.file

```

### 使用重定向

在 Bash 中，重定向是转移数据的有效方法。你可能不会频繁使用重定向，但是学会如何使用它，能帮你在打开文件、复制粘贴数据这类需要移动鼠标、大量按键操作上，节省很多不必要的时间。不要做如此浪费时间的事情。使用重定向，好好享受生活。

---

via: <https://opensource.com/article/20/6/redirection-bash>

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

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


统计数据显示，6 月份桌面 Linux 市场份额攀升至历史新高

Summary: 新的一个月，也带来了网络分析公司 NetMarketshare 的新的 Linux 市场份额统计，它们显示 Linux 和 Ubuntu 的使用量连续第四个月上升。

# 统计数据显示，6 月份桌面 Linux 市场份额攀升至历史新高

>
> 新的一个月，网络分析公司 NetMarketshare 也再次发布了新的 Linux 市场份额统计，它们显示 Linux 和 Ubuntu 的使用量连续第四个月上升。
>
>
>

该公司的技术监测到的桌面 Linux 的份额已经连续几个月持续不断地增长。[2020 年 6 月的数据](https://netmarketshare.com/operating-system-market-share.aspx?options=%7B%22filter%22%3A%7B%22%24and%22%3A%5B%7B%22deviceType%22%3A%7B%22%24in%22%3A%5B%22Desktop%2Flaptop%22%5D%7D%7D%5D%7D%2C%22dateLabel%22%3A%22Custom%22%2C%22attributes%22%3A%22share%22%2C%22group%22%3A%22platform%22%2C%22sort%22%3A%7B%22share%22%3A-1%7D%2C%22id%22%3A%22platformsDesktop%22%2C%22dateInterval%22%3A%22Monthly%22%2C%22dateStart%22%3A%222019-05%22%2C%22dateEnd%22%3A%222020-06%22%2C%22plotKeys%22%3A%5B%7B%22platform%22%3A%22Linux%22%7D%2C%7B%22platform%22%3A%22Mac%20OS%22%7D%2C%7B%22platform%22%3A%22Chrome%20OS%22%7D%5D%2C%22segments%22%3A%22-1000%22%7D)也没有例外，**Linux 从 2020 年 5 月的 3.17% 上升到 6 月的 3.61%。**

我想我们可以更有信心地说，现在的增长是一种趋势，而不是数据的畸变或随机错误（[这不是第一次](https://www.omgubuntu.co.uk/2017/10/linux-marketshare-6-91-percent-september-2017)）。或者换一种说法，如果它是一个错误，那就是一个一致的错误！

不过，如果对照 NetMarketShare 的桌面 Linux 历史数据来看（虽然只能追溯到 2016 年），这个数据代表了**桌面 Linux 的历史最高水平。**

和以前一样，这个波动的出现是由 Ubuntu 驱动的。根据这家公司的数据，正是基于 Ubuntu 的系统占据了桌面 Linux 的大部分市场份额。这个橙色的操作系统在所有桌面系统中的比例从 5 月份的 2.11% 上升到 6 月份的 2.57%。

作为参考，Linux Mint 也被单独跟踪。基于同样的统计，其目前的份额是 0.0%。

这是否意味着 Linux 市场占有率在增加，而且是大幅增加？不，它仍然是大海里的一条小鱼（更不是池塘）。但在这家公司的样本群中，Linux 用户的份额显然在增长（该公司称其追踪了数亿次对没有明确定义的但显然很受欢迎的网站的访问，所以这也是一个原因）。

不过，虽然这个趋势令人振奋，但我也必须指出，没有其它公司的报告可以互相印证。

以下是由网络分析公司 StatCounter 提供的数据，显示了 12 个月内桌面 Linux 的市场份额。

嗯。几乎没有任何动静 —— 当然也没有 4 月后的暴涨。

然而，这并不能“证明”什么都没有发生。分析公司的方法论和样本基础是不同的。他们会有不同的结果也是意料之中。B 公司的统计数据没有飙升，并不意味着 A 公司的统计数据没有飙升。

为什么会有增长（如果有的话）？

很遗憾，这就更难找到原因了！

这可能是因为更多的人在家工作（而他们自己的电脑也运行着 Linux）。也可能是他们的追踪软件现在更擅长识别 Linux。也可能是 *{在此插入你最喜欢的理论}*。

无论是哪种方式，即使没有什么其他的证据，这些统计数据都很有趣，并且即使不是普遍结论性的，也令人鼓舞。

我们永远不会知道 Linux 在桌面上的确切市场份额，但基于其他数据（如 Distrowatch 排名、ISO 下载量、Snap 应用安装量等），大多数人都会基于此有所估计。

---

via: <https://www.omgubuntu.co.uk/2020/07/linux-marketshare-june-2020>

作者：[Joey Sneddon](https://www.omgubuntu.co.uk/author/d0od "View all posts by Joey Sneddon") 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](/article-12382-1.html) 荣誉推出


Summary: • Chrome for Android 将正式提供 64 位版本

# #新闻拍一拍# F5 BIG-IP 设备的严重漏洞被披露后，黑客正试图窃取它的管理员密码

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

#### F5 BIG-IP 设备的严重漏洞被披露后，黑客正试图窃取它的管理员密码

F5 Networks 公司生产的多功能网络设备 BIG-IP 是当今最流行的网络产品之一，它们被用于支撑一些最大的敏感网络。F5 在其网站上宣称，《财富》50 强榜单中有 48 家依靠 BIG-IP 系统。这次披露的漏洞 CVE-2020-5902，可以让攻击者完全控制在互联网上可以访问的未打补丁的系统。危险性为最高的 10 分。而安全专家已经观察到了对该漏洞的利用。

来源：[zdnet](https://www.zdnet.com/article/hackers-are-trying-to-steal-admin-passwords-from-f5-big-ip-devices/)

>
> 拍一拍：话说，我们也要注意这种来自国外的网络设备对国家安全的影响。
>
>
>

#### Chrome for Android 将正式提供 64 位版本

首个支持 64 位架构 ARM 处理器的 Android 版本是 2014 年 11 月发布的 Android 5.0 Lollipop。今天事实上几乎所有的 Android 设备都支持运行 64 位软件。然而市场占有率最高的 Google Chrome 浏览器至今没有提供 Android 平台的 64 位版本。从 Chrome 85 起，运行 Android 10 或更高版本的手机将会自动更新到 64 位版本，当前的稳定版 Chrome 83 和 beta 版 Chrome 84 仍然是 32 位应用。

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

>
> 拍一拍：这个非常奇怪，为什么 Chrome 64 位会这么晚？
>
>
>


时间管理专家的 Linux 工具

# 时间管理专家的 Linux 工具

>
> 无论你是需要帮助来保持专注、保持及时性，还是为了找到避免重复的捷径，这些 Linux 工具能够帮助你。
>
>
>

生产力是一个主观术语，但从本质上讲，它是衡量特定任务完成效率的标准。每个人都有不同的方式来提高他们的生产力：有些人需要帮助专注于任务里、有些人需要特殊的工作环境、有些人需要警报和提醒以避免错过截止日期，还有些人需要协助处理重复的手工活。幸运的是，有多种工具和技术可为你提供所需的特定支持。特别地，如果你是 Linux 用户，有一些调整可以帮助你提高生产力。这是我经常使用的两个。

### 剪贴板指示器

你是否在日常使用中，在多个文档之间的大量使用复制和粘贴？如果是这样，那么 [剪贴板指示器](https://extensions.gnome.org/extension/779/clipboard-indicator/) 应该成为你的首选方案之一。将剪贴板指示器作为 GNOME 扩展安装到 Linux 发行版中。以我的经验，它对 GNOME Shell 的性能影响很小，至少比我尝试过的其他方案要小。

该工具添加了一个指示器菜单到顶部面板，并缓存剪贴板历史。你可以设置历史记录大小、要预览的字符数量。它可以在复制时显示通知，并充当保存任意复制内容的临时空间。

安装扩展程序和连接器的最简单方法是使用发行版的包管理器。

对于 Fedora、CentOS 或 RHEL，请使用：

```
$ sudo dnf install chrome-gnome-shell

```

在 Ubuntu 或 Debian 上，请改用 `apt install`。

安装完成后，进入 <https://extensions.gnome.org/> 并查看已安装的扩展。

如果你使用的是 Firefox，请使用 Firefox 浏览器附加组件并安装 “GNOME Shell integration”。你将在 Firefox 工具栏中看到一个很小的脚印图标，它将带你进入“扩展”页面。在该页面上，搜索 “Clipboard Indicator” 扩展并启用它。

现在，按照提示下载 GNOME 扩展并激活它。你可以查看 `~/.local/share/gnome-shell/extensions` 来浏览你的扩展。

好了！你将在 GNOME 桌面的右上角看到一个新图标。复制任意内容并尝试其设置。

也可以使用以下命令通过 Git 进行快速安装：将仓库克隆到本地的 gnome-shell 扩展目录中：

```
$ git clone https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator.git ~/.local/share/gnome-shell/extensions/clipboard-indicator@tudmotu.com

```

进入 GNOME Tweaks 工具，然后从“扩展”页面激活它。

### 番茄计时器（Pomodoro）

Pomodoro 技术是一种时间管理理念，旨在为用户提供最大注意力。每个 25 分钟的工作时间称为“pomodoro”（意大利语的“番茄”）；每个番茄之后，你需要休息五分钟。每四个番茄时间，即每 100 分钟，你就要休息 15 至 20 分钟。如果你有大量的待办事项，那么使用 Pomodoro 技术可以通过强迫你遵守严格的时间安排来帮助你更快地完成项目。

可以通过 GNOME Tweaks 网页 （[extensions.gnome.org](http://extensions.gnome.org)）或通过命令行来管理安装过程。对于后者，请根据你的 Linux 发行版和版本，并使用以下命令进行安装：

```
$ sudo dnf install gnome-shell-extension-pomodoro

```

或者，如果你希望从源代码构建：

```
$ git clone -b gnome-3.34 https://github.com/codito/gnome-pomodoro.git
$ cd gnome-pomodoro

```

源码有许多依赖关系，其中许多可能已经安装。为了确保这点，请安装以下内容。

```
$ sudo dnf install autoconf-archive gettext vala vala-tools pkg-config desktop-file-utils glib2-devel gtk3-devel libappstream-glib-devel libappindicator-gtk3-devel libcanberra-devel libpeas-devel sqlite-devel gom-devel gobject-introspection-devel gsettings-desktop-schemas-devel gstreamer1-devel

```

在源代码的解压目录中，完成构建。

```
$ ./autogen.sh --prefix=/usr --datadir=/usr/share
$ make
$ sudo make install

```

不管是怎么安装的，请进入 GNOME Tweaks 并打开番茄计时器。如果你还没有 GNOME Tweaks，请通过包管理器或所选的软件安装程序进行安装。例如，在 Fedora 上：

```
$ sudo dnf install gnome-tweaks

```

在 Ubuntu 或 Debian上，请改用 `apt install`。

Pomodoro 桌面集成当前可在 GNOME Shell 中使用，并且它们计划在将来支持更多桌面。 查看 <https://gnomepomodoro.org/> 获取有关该项目的最新信息。同时，对于 KDE 用户，还有一个名为 [Fokus](https://store.kde.org/p/1308861/) 的替代品。

### Linux 上的生产力

生产力是个人的，但这是我们所有人都在以某种方式追求的东西。这些工具中的每一个要么节省了我的时间，要么使我的工作效率提高了，它们可以与 Linux 快速集成。

你是否有喜欢的生产力工具？请在评论中分享！

---

via: <https://opensource.com/article/20/6/linux-time-management>

作者：[Sudeshna Sur](https://opensource.com/users/sudeshna-sur) 选题：[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 系统进行压力测试

Summary: 在这篇文章中，我们将看一些工具，可以帮助你增加服务器压力并衡量结果。

在这篇文章中，我们将看一些工具，可以帮助你增加服务器压力并衡量结果。

# 如何对你的 Linux 系统进行压力测试

>
> 如果你想了解 Linux 服务器在重压之下的运行情况，那么给 Linux 服务器施加压力是个不错的主意。在这篇文章中，我们将看一些工具，可以帮助你增加服务器压力并衡量结果。
>
>
>

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

为什么你会想给你的 Linux 系统施加压力呢？因为有时你可能想知道当一个系统由于大量运行的进程、繁重的网络流量、过多的内存使用等原因而承受很大的压力时，它的表现如何。这种压力测试可以帮助确保系统已经做好了 “上市” 的准备。

如果你需要预测应用程序可能需要多长时间才能做出反应，以及哪些（如果有的话）进程可能会在重负载下失败或运行缓慢，那么在前期进行压力测试是一个非常好的主意。

幸运的是，对于那些需要能够预测 Linux 系统在压力下的反应的人来说，你可以采用一些有用的技术和工具来使这个过程更容易。在这篇文章中，我们将研究其中的一些。

### 自己动手做个循环

第一种技术是在命令行上运行一些循环，观察它们对系统的影响。这种方式可以大大增加 CPU 的负荷。使用 `uptime` 或类似的命令可以很容易地看到结果。

在下面的命令中，我们启动了四个无尽循环。你可以通过添加数字或使用 bash 表达式，如 `{1...6}` 来代替 `1 2 3 4` 以增加循环次数：

```
for i in 1 2 3 4; do while : ; do : ; done & done

```

在命令行上输入后，将在后台启动四个无尽循环：

```
$ for i in 1 2 3 4; do while : ; do : ; done & done
[1] 205012
[2] 205013
[3] 205014
[4] 205015

```

在这种情况下，发起了作业 1-4，作业号和进程号会相应显示出来。

要观察对平均负载的影响，请使用如下所示的命令。在本例中，`uptime` 命令每 30 秒运行一次：

```
$ while true; do uptime; sleep 30; done

```

如果你打算定期运行这样的测试，你可以将循环命令放入脚本 `watch-it` 中。

```
#!/bin/bash

while true
do
  uptime
  sleep 30
done

```

在输出中，你可以看到平均负载是如何增加的，然后在循环结束后又开始下降。

```
 11:25:34 up 5 days, 17:27,  2 users,  load average: 0.15, 0.14, 0.08
 11:26:04 up 5 days, 17:27,  2 users,  load average: 0.09, 0.12, 0.08
 11:26:34 up 5 days, 17:28,  2 users,  load average: 1.42, 0.43, 0.18
 11:27:04 up 5 days, 17:28,  2 users,  load average: 2.50, 0.79, 0.31
 11:27:34 up 5 days, 17:29,  2 users,  load average: 3.09, 1.10, 0.43
 11:28:04 up 5 days, 17:29,  2 users,  load average: 3.45, 1.38, 0.54
 11:28:34 up 5 days, 17:30,  2 users,  load average: 3.67, 1.63, 0.66
 11:29:04 up 5 days, 17:30,  2 users,  load average: 3.80, 1.86, 0.76
 11:29:34 up 5 days, 17:31,  2 users,  load average: 3.88, 2.06, 0.87
 11:30:04 up 5 days, 17:31,  2 users,  load average: 3.93, 2.25, 0.97
 11:30:34 up 5 days, 17:32,  2 users,  load average: 3.64, 2.35, 1.04 <== 循环停止
 11:31:04 up 5 days, 17:32,  2 users,  load average: 2.20, 2.13, 1.01      11:31:34 up 5 days, 17:33,  2 users,  load average: 1.40, 1.94, 0.98

```

因为所显示的负载分别代表了 1、5 和 15 分钟的平均值，所以这些值需要一段时间才能恢复到系统接近正常的状态。

要停止循环，请发出像下面这样的 `kill` 命令 —— 假设作业号是 1-4，就像本篇文章前面显示的那样。如果你不确定，可以使用 `jobs` 命令来确认作业号。

```
$ kill %1 %2 %3 %4

```

### 增加压力的专用工具

另一种方法是使用专门为你制造系统压力的工具。其中一种叫做 `stress`（压力），可以以多种方式对系统进行压力测试。`stress` 工具是一个工作负载生成器，提供 CPU、内存和磁盘 I/O 压力测试。

在使用 `--cpu` 选项时，`stress` 命令使用平方根函数强制 CPU 努力工作。指定的 CPU 数量越多，负载上升的速度就越快。

下面第二个脚本（`watch-it-2`）可以用来衡量对系统内存使用的影响。请注意，它使用 `free` 命令来查看加压的效果。

```
$ cat watch-it-2
#!/bin/bash

while true
do
  free
  sleep 30
done

```

发起任务并观察压力：

```
$ stress --cpu 2

$ ./watch-it
 13:09:14 up 5 days, 19:10,  2 users,  load average: 0.00, 0.00, 0.00
 13:09:44 up 5 days, 19:11,  2 users,  load average: 0.68, 0.16, 0.05
 13:10:14 up 5 days, 19:11,  2 users,  load average: 1.20, 0.34, 0.12
 13:10:44 up 5 days, 19:12,  2 users,  load average: 1.52, 0.50, 0.18
 13:11:14 up 5 days, 19:12,  2 users,  load average: 1.71, 0.64, 0.24
 13:11:44 up 5 days, 19:13,  2 users,  load average: 1.83, 0.77, 0.30

```

在命令行中指定的 CPU 越多，负载就增加的越快。

```
$ stress --cpu 4
$ ./watch-it
 13:47:49 up 5 days, 19:49,  2 users,  load average: 0.00, 0.00, 0.00
 13:48:19 up 5 days, 19:49,  2 users,  load average: 1.58, 0.38, 0.13
 13:48:49 up 5 days, 19:50,  2 users,  load average: 2.61, 0.75, 0.26
 13:49:19 up 5 days, 19:50,  2 users,  load average: 3.16, 1.06, 0.38
 13:49:49 up 5 days, 19:51,  2 users,  load average: 3.49, 1.34, 0.50
 13:50:19 up 5 days, 19:51,  2 users,  load average: 3.69, 1.60, 0.61

```

`stress` 命令也可以通过 `--io`（输入/输出）和 `--vm`（内存）选项增加 I/O 和内存的负载来给系统施加压力。

在接下来的这个例子中，运行这个增加内存压力的命令，然后启动 `watch-it-2` 脚本。

```
$ stress --vm 2

$ watch-it-2
              total        used        free      shared  buff/cache   available
Mem:        6087064      662160     2519164        8868     2905740     5117548
Swap:       2097148           0     2097148
              total        used        free      shared  buff/cache   available
Mem:        6087064      803464     2377832        8864     2905768     4976248
Swap:       2097148           0     2097148
              total        used        free      shared  buff/cache   available
Mem:        6087064      968512     2212772        8864     2905780     4811200
Swap:       2097148           0     2097148

```

`stress` 的另一个选项是使用 `--io` 选项为系统添加输入/输出活动。在这种情况下，你可以使用这样的命令：

```
$ stress --io 4

```

然后你可以使用 `iotop` 观察受压的 I/O。注意，运行 `iotop` 需要 root 权限。

之前：

```
$ sudo iotop -o
Total DISK READ:         0.00 B/s | Total DISK WRITE:        19.36 K/s
Current DISK READ:       0.00 B/s | Current DISK WRITE:      27.10 K/s
    TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
 269308 be/4 root        0.00 B/s    0.00 B/s  0.00 %  1.24 % [kworker~fficient]
    283 be/3 root        0.00 B/s   19.36 K/s  0.00 %  0.26 % [jbd2/sda1-8]

```

之后：

```
Total DISK READ:         0.00 B/s | Total DISK WRITE:         0.00 B/s
Current DISK READ:       0.00 B/s | Current DISK WRITE:       0.00 B/s
    TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
 270983 be/4 shs         0.00 B/s    0.00 B/s  0.00 % 51.45 % stress --io 4
 270984 be/4 shs         0.00 B/s    0.00 B/s  0.00 % 51.36 % stress --io 4
 270985 be/4 shs         0.00 B/s    0.00 B/s  0.00 % 50.95 % stress --io 4
 270982 be/4 shs         0.00 B/s    0.00 B/s  0.00 % 50.80 % stress --io 4
 269308 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.09 % [kworker~fficient]

```

`stress` 只是给系统增加压力的若干工具之一。另一个较新的工具，`stress-ng`，将在以后的文章中介绍。

### 总结

用于系统压力测试的各种工具可以帮助你预测系统在真实世界的情况下如何响应，在这些情况下，它们受到增加的流量和计算需求。

虽然我们在文章中展示的是创建和测量各种类型的压力的方法，但最终的好处是压力如何帮助确定你的系统或应用程序对它的反应。

---

via: <https://www.networkworld.com/article/3563334/how-to-stress-test-your-linux-system.html>

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

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