diff --git a/published/20210725 How to Recover Arch Linux Install via chroot.md b/published/20210725 How to Recover Arch Linux Install via chroot.md new file mode 100644 index 0000000000..fdadf9e7be --- /dev/null +++ b/published/20210725 How to Recover Arch Linux Install via chroot.md @@ -0,0 +1,117 @@ +[#]: subject: "How to Recover Arch Linux Install via chroot" +[#]: via: "https://www.debugpoint.com/2021/07/recover-arch-linux/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-14708-1.html" + +如何通过 chroot 恢复 Arch Linux 系统 +====== + +![](https://img.linux.net.cn/data/attachment/album/202206/14/111204hm20rzjmmf5ib9nr.jpg) + +> 这个快速指南解释了恢复 Arch Linux 安装的一些方便步骤。 + +作为一个滚动发布的版本,[Arch Linux][1] 中有时会出现一些问题。不是因为你自己的行为,而是数以百计的其他原因,如新内核与你的硬件或软件的兼容性。但是,Arch Linux 仍然很棒,它提供了最新的软件包和应用。 + +但有时,它也会给你带来麻烦,你最终只能看到一个闪烁的光标,其他什么都没有。 + +所以,在这种情况下,与其重新格式化或重新安装,不如在放弃希望之前尝试恢复安装和数据。本指南概述了这个方向的一些步骤。 + +### 恢复 Arch Linux 安装 + +第一步是用 Arch Linux 创建一个可启动的现场Live USB。从 [这个链接][3] 下载 .ISO 并创建一个可启动的 USB。你可以查看这个 [如何使用 Etcher 创建可启动的 USB][2] 的指南。记住这一步需要另一个稳定的工作系统,因为你目前的系统不能使用。 + +你需要知道你的 Arch Linux 安装在哪个分区上。这是一个非常重要的步骤。如果你不知道,你可以用 GParted 来查找。或者在你的 GRUB 菜单中查看,或者你可以运行下面的命令来了解。这将列出你所有的磁盘分区及其大小、标签: + +``` +sudo lsblk -o name,mountpoint,label,size,uuid +``` + +完成后,插入 USB 盘并从它启动。你应该在现场介质中看到 Arch Linux 的提示符。 + +现在,用下面的方法挂载 Arch Linux 分区。记得把 `/dev/sda3` 改成你对应的分区。 + +``` +mount /dev/sda3 /mnt +arch-chroot /mnt +``` + +`arch-chroot` 命令将在终端挂载你的 Arch Linux 分区,所以用你的 Arch 凭证登录。现在,在这个阶段,根据你的需要,你有以下选择。 + +* 你可以通过 `/home` 文件夹来备份你的数据。如果,故障排除方式无效的话。你可以把文件复制到外部 USB 或其他分区。 +* 核查日志文件,特别是 pacman 日志。因为,不稳定的系统可能是由升级某些软件包引起的,如图形驱动或任何其他驱动。根据日志,如果你需要的话,可以降级任何特定的软件包。 + +你可以使用下面的命令来查看 pacman 日志文件的最后 200 行,以找出任何失败的项目或依赖性删除。 + +``` +tail -n 200 /var/log/pacman.log | less +``` + +上面的命令给出了你的 `pacman.log` 文件末尾的 200 行来验证。现在,仔细检查哪些软件包在你成功启动后被更新了。 + +并记下软件包的名称和版本。你可以尝试逐一降级软件包,或者如果你认为某个特定的软件包产生了问题。使用 `pacman -U` 开关来降级。 + +``` +pacman -U +``` + +如果有的话,你可以在降级后运行以下命令来启动你的 Arch 系统。 + +``` +exec /sbin/init +``` + +检查你的显示管理器的状态,是否有任何错误。有时,显示管理器会产生一个问题,无法与 X 服务器通信。例如,如果你正在使用 Lightdm,那么你可以通过以下方式检查它的状态。 + +``` +systemctl status lightdm +``` + +或者,可以通过下面的命令启动它,并检查出现了错误。 + +``` +lightdm --test-mode --debug +``` + +下面是一个 Lightdm 失败的例子,它导致了一个不稳定的 Arch 系统。 + +![lightdm - test mode][4] + +或者通过使用 `startx` 启动 X 服务器来检查。 + +``` +startx +``` + +根据我的经验,如果你在上述命令中看到错误,尝试安装另一个显示管理器并启用它,如 sddm。它可能会消除这个错误。 + +根据你的系统状态,尝试上述步骤,并进行故障排除。对于特定于显示管理器 lightdm 的错误,我们有一个 [指南][5],你可以看看。 + +如果你使用的是 sddm,那么请查看 [这些故障排除步骤][6]。 + +### 总结 + +每个安装环境都是不同的。上述步骤可能对你不起作用。但它值得一试,根据经验,它是有效的。如果它起作用,那么,对你来说是好事。无论哪种方式,请在下面的评论区中告诉我结果如何。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/2021/07/recover-arch-linux/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[geekpi](https://github.com/geekpi) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/tag/arch-linux +[2]: https://www.debugpoint.com/2021/01/etcher-bootable-usb-linux/ +[3]: https://archlinux.org/download/ +[4]: https://www.debugpoint.com/wp-content/uploads/2021/03/lightdm-test-mode.jpg +[5]: https://www.debugpoint.com/2021/03/failed-to-start-lightdm/ +[6]: https://wiki.archlinux.org/title/SDDM#Troubleshooting diff --git a/translated/tech/20220516 How to Dual Boot Ubuntu 22.04 LTS and Windows 11.md b/published/20220516 How to Dual Boot Ubuntu 22.04 LTS and Windows 11.md similarity index 66% rename from translated/tech/20220516 How to Dual Boot Ubuntu 22.04 LTS and Windows 11.md rename to published/20220516 How to Dual Boot Ubuntu 22.04 LTS and Windows 11.md index 0a27cd46b5..4004bcb938 100644 --- a/translated/tech/20220516 How to Dual Boot Ubuntu 22.04 LTS and Windows 11.md +++ b/published/20220516 How to Dual Boot Ubuntu 22.04 LTS and Windows 11.md @@ -3,45 +3,47 @@ [#]: author: "James Kiarie https://www.linuxtechi.com/author/james/" [#]: collector: "lkxed" [#]: translator: "robsean" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-14699-1.html" 如何双启动 Ubuntu 22.04 LTS 和 Windows 11 ====== -嗨,伙计们,在这篇指南中,我们将演示如何在 Windows 11 的旁侧配置 Ubuntu 22.04 LTS (Jammy Jellyfish) 的双启动设置 -为使其能工作,你需要在你的计算机上安装 windows 11 。接下来,你将需要在你的硬盘驱动器上创建一个单独的分区,你将在此分区上安装 Ubuntu 22.04 。我们将包含这点知识,因此不要担心。 +![](https://img.linux.net.cn/data/attachment/album/202206/12/110546fff10ck07e2p0z2f.jpg) -##### 必要条件  +嗨,伙计们,在这篇指南中,我们将演示如何在 Windows 11 的之外配置 Ubuntu 22.04 LTS(Jammy Jellyfish)的双启动设置。 -在设置双启动前,这些是你所需要的。 +为使其能工作,你需要在你的计算机上已经安装好了 Windows 11 。接下来,你将需要在你的硬盘驱动器上创建一个单独的分区,你将在此分区上安装 Ubuntu 22.04 。我们将包含这点知识,因此不要担心。 -* 一个 Ubuntu 22.04 的可启动 USB 驱动器,你可以转到 [Ubuntu 22.04 下载页面][1] 来下载 Ubuntu 22.04 的 ISO 镜像文件。在 ISO 镜像文件到位后,抓取一个 16GB USB 驱动器,并使用 Rufus 应用程序来使其可启动。 +**前置条件:** -* 快速稳定的因特网连接 +在设置双启动前,这些是你所需要的: + +* 一个 Ubuntu 22.04 的可启动 USB 驱动器,你可以转到 [Ubuntu 22.04 下载页面][1] 来下载 Ubuntu 22.04 的 ISO 镜像文件。在 ISO 镜像文件到位后,拿一个 16GB USB 驱动器,并使用 Rufus 应用程序来使其可启动。 +* 快速稳定的互联网连接 ### 步骤 1、在你的硬盘驱动器上创建一个可用的分区  正如介绍中所提到的,我们首先需要在硬盘驱动器上创建一个单独的分区,我们将在其中安装 Ubuntu 22.04 。 -因此,通过按下 **Windows + R** 组合键来打开磁盘管理器实用程序 +因此,通过按下 `Windows + R` 组合键来打开磁盘管理器实用程序。 -在对话框中,输入 diskmgmt.msc ,并按下 回车键ENTER 按键。 +在对话框中,输入 `diskmgmt.msc` ,并按下回车键。 ![][2] - 磁盘管理disk management控制台将显示当前磁盘分区,如你将在下面所看到的一样。我们将通过压缩 ‘卷 E’ 来创建一个用于安装 Ubuntu 的分区。这在你的安装过程中可能有所不同,但是只需要跟着做,你就会理解其中的大体意思。 +磁盘管理disk management控制台将显示当前磁盘分区,如你将在下面所看到的一样。我们将通过压缩 “卷 E” 来创建一个用于安装 Ubuntu 的分区。这在你的安装过程中可能有所不同,但是只需要跟着做,你就会理解其中的大体意思。 ![][3] -因此,在你想要压缩的磁盘驱动器卷上右键,并在弹出的菜单中选择 压缩卷Shrink 选项。 +因此,在你想要压缩的磁盘驱动器卷上点击鼠标右键,并在弹出的菜单中选择 压缩卷Shrink 选项。 ![][4] -一个弹出对话框将会出现,如下所示。具体指定压缩的控件大小(以 MB 为单位),并单 压缩卷Shrink 。 +将会出现一个弹出对话框,如下所示。具体指定压缩的控件大小(以 MB 为单位),并单击 压缩卷Shrink 。 -这是指定给 Ubuntu 22.04 安装所用的空间. +这是指定给 Ubuntu 22.04 安装所用的空间。 ![][5] @@ -49,11 +51,11 @@ ![][6] -随着可用空间的到来,现在将可启动 USB 媒介盘插入到你的 PC ,并重新启动你的系统。此外,要确保访问 BIOS 设置,并修改启动优先级,来使 USB 驱动器成为第一优先级。保存 BIOS 更改并继续启动。 +随着有了可用空间,现在将可启动 USB 驱动器插入到你的 PC ,并重新启动你的系统。此外,要确保访问 BIOS 设置,并修改启动优先级,来使 USB 驱动器成为第一优先级。保存 BIOS 更改并继续启动。 ### 步骤 2、开始安装 -在第一屏幕中,你将得到如图所示的 GRUB 菜单。选择第一个选项 尝试或安装 UbuntuTry or Install Ubuntu ,并按下 回车键ENTER 按键。 +在第一个屏幕中,你将得到如图所示的 GRUB 菜单。选择第一个选项 尝试或安装 UbuntuTry or Install Ubuntu ,并按下 回车键ENTER 按键。 ![][7] @@ -69,7 +71,7 @@ Ubuntu 22.04 将开始加载,如下所示。这最多需要一分钟。 ![][10] -在 更新和其它软件Updates and Other Software 步骤中,选择 正常安装Normal Installation以便安装 Ubuntu的 GUI 版本,通过勾选其它剩余选项来允许下载更新和安装第三方的针对于图像、WIFI 硬件和其它实用程序的软件包 +在 更新和其它软件Updates and Other Software 步骤中,选择 正常安装Normal Installation 以便安装 Ubuntu的 GUI 版本,通过勾选其它剩余选项来允许下载更新和安装第三方的针对于图像、WIFI 硬件和其它实用程序的软件包。 接下来,单击 继续Continue 按钮。 @@ -85,29 +87,29 @@ Ubuntu 22.04 将开始加载,如下所示。这最多需要一分钟。 针对 Ubuntu 22.04 ,我们将创建下面的分区: -* /boot        –        1 GB -* /home        –        10 GB -* /            –        12 GB -* Swap         –         2 GB -* EFI          –       300 MB +* `/boot`        –        1 GB +* `/home`        –        10 GB +* `/`            –        12 GB +* 交换分区        –         2 GB +* EFI           –       300 MB -为开始使用这些分区,单击 可用空间Free Space分区下面的 [ + ] 符号。 +为开始使用这些分区,单击 可用空间Free Space分区下面的 “+” 符号。 ![][13] -如图显示填写 /boot 分区的详细信息,然后单击 确定OK 按钮。 +如图显示填写 `/boot` 分区的详细信息,然后单击 确定OK 按钮。 ![][14] -接下来,具体指定 /home 分区,并单击 确定OK 按钮。 +接下来,具体指定 `/home` 分区,并单击 确定OK 按钮。 ![][15] -接下来,定义 / ( root ) 分区,并单击 确定OK 按钮。 +接下来,定义 `/`(根)分区,并单击 确定OK 按钮。 ![][16] -为定义 swap 空间,设置大小,并在 使用为Use as:选项中选择 交换区域Swap area。 +为定义交换空间,设置大小,并在 使用为Use as:选项中选择 交换区域Swap area。 ![][17] @@ -115,7 +117,7 @@ Ubuntu 22.04 将开始加载,如下所示。这最多需要一分钟。 ![][18] -下图是一份我们的分区表的分区摘要。 +下图是一份我们的分区表的分区摘要: ![][19] @@ -141,17 +143,17 @@ Ubuntu 22.04 将开始加载,如下所示。这最多需要一分钟。 ![][24] -在这时,移除你的可启动 USB 驱动器,并按下 回车键ENTER 按键。 +在这时,移除你的可启动 USB 驱动器,并按下回车键。 ![][25] -在系统重新启动时,你将找到 Ubuntu 和 Windows 11 的所有选项。 +在系统重新启动时,你将找到包括 Ubuntu 和 Windows 11 在内的各种选项。 -选择 ‘Ubuntu’ 来启动到你的新 Ubuntu 22.04 安装。为启动到 Windows 11,选择标有 Windows 恢复环境Windows Recovery Environment 的条目。 +选择 “Ubuntu” 来启动到你的新 Ubuntu 22.04 安装。要启动到 Windows 11,请选择标有 Windows 恢复环境Windows Recovery Environment 的条目。 ![][26] -就这样。我们演示了如何双启动 Windows 11 和 Ubuntu 22.04. +就这样。我们演示了如何双启动 Windows 11 和 Ubuntu 22.04。 -------------------------------------------------------------------------------- @@ -160,7 +162,7 @@ via: https://www.linuxtechi.com/dual-boot-ubuntu-22-04-and-windows-11/ 作者:[James Kiarie][a] 选题:[lkxed][b] 译者:[robsean](https://github.com/robsean) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 diff --git a/published/20220518 How To Boot Into Rescue Mode Or Emergency Mode In Ubuntu 22.04 - 20.04 - 18.04.md b/published/20220518 How To Boot Into Rescue Mode Or Emergency Mode In Ubuntu 22.04 - 20.04 - 18.04.md new file mode 100644 index 0000000000..77459650a8 --- /dev/null +++ b/published/20220518 How To Boot Into Rescue Mode Or Emergency Mode In Ubuntu 22.04 - 20.04 - 18.04.md @@ -0,0 +1,276 @@ +[#]: subject: "How To Boot Into Rescue Mode Or Emergency Mode In Ubuntu 22.04 / 20.04 / 18.04" +[#]: via: "https://ostechnix.com/how-to-boot-into-rescue-mode-or-emergency-mode-in-ubuntu-18-04/" +[#]: author: "sk https://ostechnix.com/author/sk/" +[#]: collector: "lkxed" +[#]: translator: "robsean" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-14709-1.html" + +详解在 Ubuntu 中引导到救援模式或紧急模式 +====== + +![](https://img.linux.net.cn/data/attachment/album/202206/14/153639n33fg3e2gc7xnvv3.jpg) + +这篇教程将介绍如何在 Ubuntu 22.04、20.04 和 18.04 LTS 版本中引导到 救援Rescue 模式或 紧急Emergency 模式。 + +> 你可能已经知道,在 RHEL 7 、RHEL 8 、Ubuntu 16.04 LTS 及其更新的版本的 Linux 发行版中 运行等级Runlevels 已经被 系统目标Systemd target 所替代。更多关于 运行等级Runlevel系统目标Systemd targets 的信息,参考 [这篇指南][1] 。 + +这篇指南是针对 Ubuntu 编写的,但是,下面所给的步骤应该也适用于大多数使用 systemd 作为默认服务管理器的 Linux 发行版。 + +在进入主题前,让我们简单的理解:什么是 救援rescue 模式 和 紧急Emergency 模式,以及这两种模式的目的是什么。 + +### 什么是救援模式? + +在 Linux 发行版中,救援模式等效于使用 SysV 作为默认的服务器管理器的 单用户single user 模式。在救援模式中,将挂载所有的本地文件系统,将仅启动一些重要的服务。但是,不会启动一般的服务(例如,网络服务)。 + +救援模式在不能正常引导系统的情况下是很有用的。此外,我们可以在救援模式下执行一些重要的救援操作,例如,[重新设置 root 密码][2] 。 + +### 什么是紧急模式? + +与救援模式相比,在紧急模式中,不会启动任何的东西。不会启动服务、不会挂载挂载点、不会建立套接字、什么都不会启动。你将所拥有的只是一个 **原始的 shell** 。紧急模式适用于调试目的。 + +首先,我们将看到如何在 Ubuntu 22.04 和 20.04 LTS 发行版中引导到救援模式或紧急模式。在 Ubuntu 22.04 和 20.04 LTS 中的过程是完全相同的! + +### 在 Ubuntu 22.04 / 20.04 LTS 中引导到救援模式 + +我们可以使用两种方法来引导到救援模式。 + +#### 方法 1 + +打开你的 Ubuntu 系统。在 BIOS 徽标出现后,按下 `ESC` 按键来显示 GRUB 菜单。 + +在 GRUB 菜单中,选择第一项,并按下 `e` 按键来编辑它。 + +![GRUB Menu In Ubuntu 22.04 / 20.04 LTS][3] + +按下 `↓` 按键,并找到以单词 `linux` 开头的一行代码,并在其结尾处添加下面的一行代码。为到达其结尾处,只需要按下 `Ctrl + e` 组合键,或使用你键盘上的 `END` 按键或 `←`/`→` 按键。 + +``` +systemd.unit=rescue.target +``` + +![Edit Grub Boot Menu Entries To Enter Into Rescue Mode In Ubuntu 22.04 / 20.04 LTS][4] + +在添加上面的代码行后,按下 `Ctrl + x` 组合键或按下 `F10` 按键来引导到救援模式。 + +数秒后,你将作为 root 用户来登录到救援模式(即单用户模式)。将会提示你按下回车键来进入维护。 + +下图是 Ubuntu 22.04 / 20.04 LTS 系统的救援模式的样子: + +![Boot Into Rescue Mode In Ubuntu 22.04 / 20.04 LTS][5] + +现在,在救援模式中做你想做的任何事。在救援模式中,在你执行任何操作前,你可能需要以 读/写模式来挂载根(`/`)文件系统。 + +``` +mount -n -o remount,rw / +``` + +![Mount Root File System In Read Write Mode In Ubuntu 22.04 / 20.04 LTS][6] + +在完成后,按下 `Ctrl + d` 组合键来引导到正常模式。或者,你可以输入下面的任意一个命令来引导到正常模式。 + +``` +systemctl default +``` + +或者, + +``` +exit +``` + +如果你想重新启动系统,而不是引导到正常的模式,输入: + +``` +systemctl reboot +``` + +#### 方法 2 + +在这种方法中,你不需要编辑 GRUB 启动菜单项目。 + +打开系统电源,并从 GRUB 启动菜单中选择 Ubuntu 高级选项Advanced options for Ubuntu。 + +![Choose Advanced Options For Ubuntu From Grub Boot Menu][7] + +接下来,你将看到一个带有内核版本的可用的 Ubuntu 版本的列表。在 Ubuntu 中的 GRUB 启动菜单中选择 恢复模式Recovery mode 。 + +![Choose Recovery Mode In Grub Boot Menu In Ubuntu 22.04 / 20.04 LTS][8] + +数秒后,你将看到 Ubuntu 的 恢复Recovery 菜单。从恢复菜单中,选择 进入 root 的 shell 提示符Drop to root shell prompt 选项 ,并按下回车键。 + +![Enter Into Root Shell Prompt In Ubuntu 22.04 / 20.04 LTS][9] + +现在,你将进入维护。 + +![Ubuntu Maintenance Mode][10] + +通过输入下面的命令来 以读/写模式的方式 来挂载根(`/`)文件系统: + +``` +mount -n -o remount,rw / +``` + +![Mount Root File System In Read Write Mode In Ubuntu][11] + +在救援模式中做你想做的任何事。 + +在完成后,输入 `exit` 来返回到恢复菜单。 + +``` +exit +``` + +最后,选择 救援正常启动Resume normal boot 选项,并按下回车键。 + +![Boot Into Normal Mode In Ubuntu][12] + +再次按下回车键来退出恢复模式,并继续引导到正常模式。 + +![Exit The Recovery Mode In Ubuntu][13] + +如果你不想引导到正常模式,从救援模式中输入 `reboot` 并按下回车键来重新启动你的系统。 + +### 在 Ubuntu 22.04 / 20.04 LTS 中引导到紧急模式 + +当 GRUB 菜单出现时,按下 `e` 按键来编辑它。 + +![GRUB Menu In Ubuntu 22.04 / 20.04 LTS][14] + +找到以单词 `linux` 开头的一行代码,并在其结尾处添加下面的一行代码: + +``` +systemd.unit=emergency.target +``` + +![Edit Grub Boot Menu Entries To Enter Into Emergency Mode In Ubuntu 22.04 / 20.04 LTS][15] + +在添加上面的代码行后,按下 `Ctrl + x` 组合键,或按下 `F10` 按键来引导到紧急模式。 + +数秒后,你将作为 `root` 用户来进入维护。将会提示你按下回车键来进入紧急模式。 + +下图是 Ubuntu 22.04 / 20.04 LTS 系统的紧急模式的样子: + +![Boot Into Emergency Mode In Ubuntu 22.04 / 20.04 LTS][16] + +现在,在紧急模式中做你想做的任何事。在紧急模式中,在你执行任何操作前,你可能需要以读/写模式来挂载根(`/`)文件系统。 + +``` +mount -n -o remount,rw / +``` + +在完成后,按下 `Ctrl + d` 组合键来引导到正常模式。或者,你可以输入下面的任意一个命令来引导到正常模式。 + +``` +systemctl default +``` + +或者, + +``` +exit +``` + +如果你想重新启动系统,而不是引导到正常模式,输入: + +``` +systemctl reboot +``` + +### 在 Ubuntu 18.04 LTS 中引导到救援模式 + +启动你的 Ubuntu 系统。当 GRUB 菜单出现时,选择第一项并按下按键 `e` 来编辑。(为到达其行尾处,只需要按下 `Ctrl + e` 组合键,或使用你键盘上的 `END` 按键或 `←`/`→` 按键): + +![Grub Menu][17] + +如果你没有看到 GRUB 菜单,只需要在 BIOS 徽标出现后,按下 `ESC` 按键来显示 GRUB 菜单。 + +找到以单词 `linux` 开头的一行代码,并在其结尾处添加下面的一行代码(为到达其行尾处,只需要按下 `Ctrl + e` 组合键,或使用你键盘上的 END` 按键或 `←`/`→` 按键): + +``` +systemd.unit=rescue.target +``` + +![Edit Grub Menu][18] + +在添加上面的代码行后,只需要按下 `Ctrl + x` 组合键,或按下 `F10` 按键来引导到救援模式。数秒后,你将作为 `root` 用户进入维护(即单用户模式)。 + +下图是 Ubuntu 18.04 LTS 服务器系统的救援模式的样子: + +![Ubuntu Rescue Mode][19] + +接下来,输入下面的命令来挂载根(`/`)文件系统为读/写模式。 + +``` +mount -n -o remount,rw / +``` + +### 在 Ubuntu 18.04 LTS 中引导到紧急模式 + +引导你的 Ubuntu 到紧急模式基本与上述方法相同。你所需要做的全部工作是,在编辑 GRUB 菜单时,将 `systemd.unit=rescue.target` 替换为 `systemd.unit=emergency.target` 。 + +![Edit Grub Menu][20] + +在你添加 `systemd.unit=emergency.target` 后,按下 `Ctrl + x` 组合键,或按下 `F10` 按键来引导到紧急模式。 + +![Ubuntu Emergency Mode][21] + +最后,你可以使用下面的命令来以读/写模式的方式来挂载根(`/`)文件系统: + +``` +mount -n -o remount,rw / +``` + +### 在救援模式和紧急模式之间切换 + +如果你正在救援模式中,你不必像我上述提到的那样来编辑 GRUB 的菜单启动项。相反,你只想要输入下面的命令来立刻切换到紧急模式: + +``` +systemctl emergency +``` + +同样,为从紧急模式切换到救援模式,输入: + +``` +systemctl rescue +``` + +### 总结 + +现在,你知道了什么是救援模式和紧急模式,以及如何在 Ubuntu 22.04 、20.04 和 18.04 LTS 系统中启动到这些模式。正如我已经提到的,在这里提供的这些步骤应该也适用于大多数当前使用 systemd 作为默认服务管理器的 Linux 发行版。 + +-------------------------------------------------------------------------------- + +via: https://ostechnix.com/how-to-boot-into-rescue-mode-or-emergency-mode-in-ubuntu-18-04/ + +作者:[sk][a] +选题:[lkxed][b] +译者:[robsean](https://github.com/robsean) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://ostechnix.com/author/sk/ +[b]: https://github.com/lkxed +[1]: https://ostechnix.com/check-runlevel-linux/ +[2]: https://ostechnix.com/how-to-reset-or-recover-root-user-password-in-linux/ +[3]: https://ostechnix.com/wp-content/uploads/2022/05/GRUB-Menu-In-Ubuntu-22.04-LTS.png +[4]: https://ostechnix.com/wp-content/uploads/2022/05/Edit-Grub-Boot-Menu-Entries-To-Enter-Into-Rescue-Mode-In-Ubuntu-22.04-LTS.png +[5]: https://ostechnix.com/wp-content/uploads/2022/05/Boot-Into-Rescue-Mode-In-Ubuntu-22.04.png +[6]: https://ostechnix.com/wp-content/uploads/2022/05/Mount-Root-File-System-In-Read-Write-Mode-In-Ubuntu.png +[7]: https://ostechnix.com/wp-content/uploads/2022/05/Choose-Advanced-Options-For-Ubuntu-From-Grub-Boot-Menu.png +[8]: https://ostechnix.com/wp-content/uploads/2022/05/Choose-Recovery-Mode-In-Grub-Boot-Menu-In-Ubuntu.png +[9]: https://ostechnix.com/wp-content/uploads/2022/05/Enter-Into-Root-Shell-Prompt-In-Ubuntu.png +[10]: https://ostechnix.com/wp-content/uploads/2022/05/Ubuntu-Maintenance-Mode.png +[11]: https://ostechnix.com/wp-content/uploads/2022/05/Mount-Root-File-System-In-Read-Write-Mode-In-Ubuntu-1.png +[12]: https://ostechnix.com/wp-content/uploads/2022/05/Boot-Into-Normal-Mode-In-Ubuntu.png +[13]: https://ostechnix.com/wp-content/uploads/2022/05/Exit-The-Recovery-Mode-In-Ubuntu.png +[14]: https://ostechnix.com/wp-content/uploads/2022/05/GRUB-Menu-In-Ubuntu-22.04-LTS.png +[15]: https://ostechnix.com/wp-content/uploads/2022/05/Edit-Grub-Boot-Menu-Entries-To-Enter-Into-Emergency-Mode-In-Ubuntu.png +[16]: https://ostechnix.com/wp-content/uploads/2018/12/Boot-Into-Emergency-Mode-In-Ubuntu-20.04-LTS.png +[17]: https://ostechnix.com/wp-content/uploads/2018/12/Grub-menu.png +[18]: https://ostechnix.com/wp-content/uploads/2018/12/Edit-grub-menu.png +[19]: https://ostechnix.com/wp-content/uploads/2018/12/Ubuntu-rescue-mode.png +[20]: https://ostechnix.com/wp-content/uploads/2018/12/emergency-mode.png +[21]: https://ostechnix.com/wp-content/uploads/2018/12/emergency-mode-1.png diff --git a/published/20220523 7 pieces of Linux advice for beginners.md b/published/20220523 7 pieces of Linux advice for beginners.md new file mode 100644 index 0000000000..3a2c4d76ad --- /dev/null +++ b/published/20220523 7 pieces of Linux advice for beginners.md @@ -0,0 +1,141 @@ +[#]: subject: "7 pieces of Linux advice for beginners" +[#]: via: "https://opensource.com/article/22/5/linux-advice-beginners" +[#]: author: "Opensource.com https://opensource.com/users/admin" +[#]: collector: "lkxed" +[#]: translator: "lightchaserhy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-14712-1.html" + +给 Linux 初学者的 7 条建议 +====== + +> 我们咨询了我们社区作者们,分享了他们的初学经验。 + +![](https://img.linux.net.cn/data/attachment/album/202206/15/143733yhdrxhbnhojbxn2a.jpg) + +对 Linux 的新用户有什么建议?我们请社区的作者们分享了他们初学时的最佳经验。 + +### 1、用好 Linux 资源 + +我哥们儿告诉我,Linux 就像一个“软件积木搭建套装”(这是一个过时的词汇,指的是上世纪五六十年代流行的建筑积木玩具),这个比喻比较恰当。在 2001、2002 年那时,我曾经利用 Windows 3.1 和 Windows NT,尝试搭建一个安全、有用的 K12 学区网站,当时网上可用的资料不多。其中被推荐的《ROOT 用户指南》是一本“大部头”专业教程,信息丰富,但是有一定上手难度。 + +于我而言,Mandrake Linux 的线上课程是最有用的资源。该课程对使用和管理 Linux 桌面或服务器进行了详细的解读。我学习了该课程,并同时利用红帽公司维护的一个邮件列表服务,有问题时就在社区提问寻求帮助。 + +—— [Don Watkins][2] + +### 2、在 Linux 社区寻求帮助 + +我的建议是要多问,你可以从网上搜索信息开始,看看其他人类似的问题(甚至是更好的提问)。问什么和如何问,需要花一定时间熟悉。 + +一旦你对 Linux 更加熟悉了,查看你感兴趣的各种相关论坛,在提问前,先看看是否有人已经提过相同问题,并获得了答案。 + +加入邮件列表也很有用,最后你会发现自己也能专业地答复提问。正如他们说的,通过回答他人的问题也会学到更多知识。 + +同时,你会越来越熟悉这个操作系统内部运行机制,再也不是初学时的一无所知。 + +—— [Greg Pittman][3] + +我的建议是利用 `man`、`info` 等帮助命令获取信息。另外,尽可能花时间熟悉命令行界面,且真正理解 UNIX 的设计理念。事实上,我最喜欢的书之一就是一本 80 年代的 UNIX 书籍,对理解文件、目录、设备、基础命令等非常有帮助。 + +—— [Alan Formy-Duval][4] + +我最好的建议是充分相信社区的答复、手册页的详细信息、介绍不同选项的 HOW-TO 文档。不管怎么说,我是在 2009 年左右开始学习的,当时有很多可用的工具和资源。有一个叫 “Linux from Scratch(LFS)”的项目 —— 从源码开始创建 Linux 系统,在这个项目我学会了很多内部原理知识,以及如何创建一个 LFS 镜像。 + +—— [Sumantro Mukherjee][6] + +我的建议是泛读。利用像 “Ask Fedora”、“Fedora Matrix chat” 等论坛,阅读他人的经验观点,并且尝试实践。我通过阅读他人的网上争论学习到很多东西,然后我会尝试找出问题的原因。 + +—— [Steve Morris][8] + +### 3、安装双操作系统 + +我在 90 年代末就开始安装双操作系统(Windows 和 Linux),虽然我真正想使用的是 Linux 操作系统,但我最终还是启动了 Windows 系统,以便在熟悉的桌面环境中工作。最好的建议之一是改变计算机系统启动顺序,所以每次我都反应不够快,自动进入了 Linux 系统。: ) + +—— [Heike Jurzik][9] + +我的团队里的一个人挑战我,要做一个知识交换。 + +他是我们的 Linux 系统管理员,利用 Joomla 搭建了一个网站(我们的 Web 团队擅长这个,他想学习更多知识),而我则安装了 Linux(以前一直是用 Windows)。我们一开始就用了双启动,因为我还有一堆依赖于操作系统的软件需要用于业务,但这让我对 Linux 的使用有了一个飞跃。 + +在我们各自学习新系统时,对方作为专家来互相帮助有助于共同成长,“一个都不能少!”,坚持不懈是一个很大的挑战。 + +我经历一个相当尴尬的低级错误后,在显示器上贴了一个大便签,上面写着“在使用任何 `rm` 操作前,首先要思考一下”。管理员给我写了一个命令行大全(网上有很多类似的),对于熟悉基础操作非常有用。我开始使用 Ubuntu 的 KDE 桌面环境时,发现对习惯于使用图形界面的初学者很有帮助。 + +从那以后我就开始长期使用 Linux(除了我的工作计算机),而那位管理员仍然在用 Joomla,看起来我俩都得到了成长。 + +—— [Ruth Cheesley][12] + +### 4、为了安全请先备份 + +我的建议是使用一个带有简单且强大的备份软件的发行版。Linux 新用户会创建、编辑、破坏和恢复系统配置。当操作系统无法启动、丢失数据时,会让他们非常沮丧。 + +有了备份软件,他们的数据就有了保障。 + +我们都喜爱 Linux,因为它能让我们自由飞翔,但这是“双刃剑”,使用不当也有可能发生非常严重的错误。 + +—— [Giuseppe Cassibba][13] + +### 5、分享你的 Linux 经验 + +我的建议是分享你的 Linux 使用经验。我曾经认为有一些发行版更适合新用户,所以当他们咨询使用 Linux 时,我总是推荐这些为“新用户准备的”发行版。但是当我坐在他们的计算机前,看起来却像是我从未用过 Linux 一样,因为一些新功能我也不熟悉。现在当有人咨询时,我会推荐自己使用的发行版,虽说这不一定是初学者的“最佳”版本,但毕竟我熟悉,他们遇到的问题我能够快速解决(当然我自己也会在分享中学到新东西)。 + +—— [Seth Kenlon][14] + +以前有句俗话叫“不要随便使用杂志封面上宣传的发行版,使用你朋友都在用的,当你遇到问题时才能更好地需求帮助”。将关键词“杂志封面”替换为“互联网”,这句话依然有效 : -) 。我从未听从过这个建议,因为我是方圆五十公里内唯一使用 Linux 的人,周围的人都在用 FreeBSD、IRIX、Solaris 和 Windows 3.11 等操作系统,最后,我就是那个被人们寻求 Linux 帮助的人。 + +—— [Peter Czanik][15] + +### 6、坚持学习 Linux + +在到 Red Hat 工作前,我是一名分销商合作伙伴,我有几个提供旅行护士的家庭健康代理机构客户,他们使用了一个叫“Carefacts”的软件包,最初用于 DOS,在旅行笔记本电脑和中心数据库同步中总是出错。 + +早期我听到的最好建议是认真研究一下开源运动。开源在 2022 年是主流思想,但在一代人以前,从 Red Hat 的零售商购买 Linux 安装光盘是带有革命性的创新行为。开源打破了常规,我认为要客观看待开源,但确实惊叹到了相当一部分人。 + +我的公司在 20 世纪 90 年代中期搭建了第一个客户防火墙,那是基于 Windows NT 和 Altavista 的一个产品,但是经常发生错误崩溃。我们自己又搭建了一个基于 Linux 的防火墙,再也没有出问题了。因此,我们用 Linux 替换了客户的那套 Altavista 系统,稳定地运行了多年。我们在 1999 年底搭建了另一个客户防火墙,当时我花三周读完了一本关书,介绍了数据包过滤和 ipchains 的正确使用,当我完成时感觉超赞,它解决了所有问题。在接下来的 15 年,我搭建安装了数百个防火墙系统,主要采用 iptables 技术,有些利用桥接或 ARP 代理以及 QOS 保障视频会议传输,有些利用 IPSEC 和 OpenVPN 隧道。我靠管理个人防火墙和一些双机热备系统赚取生活费,非常不错,而以前都是用的 Windows 系统。我甚至还建了一些虚拟防火墙。 + +但是技术在高速发展,2022 年,iptables 已过时,我以前的防火墙技术也成了美好的回忆。 + +目前的经验之谈?永远不要停止探索。 + +—— [Greg Scott][19] + +### 7、享受过程 + +耐心点,Linux 和之前你熟悉的操作系统不太相同,准备拥抱一个充满无限可能的新世界,尽情享受吧。 + +—— [Alex Callejas][20] + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/5/linux-advice-beginners + +作者:[Opensource.com][a] +选题:[lkxed][b] +译者:[lightchaserhy](https://github.com/lightchaserhy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/admin +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/lead-images/yearbook-haff-rx-linux-file-lead_0.png +[2]: https://opensource.com/users/don-watkins +[3]: https://opensource.com/users/greg-p +[4]: https://opensource.com/users/alanfdoss +[5]: https://linuxfromscratch.org/ +[6]: https://opensource.com/users/sumantro +[7]: https://ask.fedoraproject.org +[8]: https://opensource.com/users/smorris12 +[9]: https://opensource.com/users/hej +[10]: https://opensource.com/downloads/linux-common-commands-cheat-sheet +[11]: https://opensource.com/article/22/2/why-i-love-linux-kde +[12]: https://opensource.com/users/rcheesley +[13]: https://opensource.com/users/peppe8o +[14]: https://opensource.com/users/seth +[15]: https://opensource.com/users/czanik +[16]: https://www.redhat.com/sysadmin/run-your-own-vpn-libreswan +[17]: https://opensource.com/article/21/8/openvpn-server-linux +[18]: https://opensource.com/article/19/7/make-linux-stronger-firewalls +[19]: https://opensource.com/users/greg-scott +[20]: https://opensource.com/users/darkaxl diff --git a/translated/tech/20220603 How to Install FFmpeg in Ubuntu and Other Linux.md b/published/20220603 How to Install FFmpeg in Ubuntu and Other Linux.md similarity index 70% rename from translated/tech/20220603 How to Install FFmpeg in Ubuntu and Other Linux.md rename to published/20220603 How to Install FFmpeg in Ubuntu and Other Linux.md index 633fe2b0ec..9d7a484114 100644 --- a/translated/tech/20220603 How to Install FFmpeg in Ubuntu and Other Linux.md +++ b/published/20220603 How to Install FFmpeg in Ubuntu and Other Linux.md @@ -1,19 +1,22 @@ [#]: subject: "How to Install FFmpeg in Ubuntu and Other Linux" -[#]: via: "https://www.debugpoint.com/2022/06/install-FFmpeg-ubuntu/" +[#]: via: "https://www.debugpoint.com/2022/06/install-ffmpeg-ubuntu/" [#]: author: "Arindam https://www.debugpoint.com/author/admin1/" [#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " +[#]: translator: "aREversez" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-14716-1.html" -在 Ubuntu 等 Linux 发行版上安装 FFmpeg +在 Linux 上安装 FFmpeg ====== -本教程介绍了 FFmpeg 在 Ubuntu 及其他 Linux 发行版上的安装步骤。 + +![](https://img.linux.net.cn/data/attachment/album/202206/16/103329av0zoz5m5o9ootz5.jpg) + +> 本教程介绍了在 Ubuntu 及其他 Linux 发行版上安装 FFmpeg 的步骤。 FFmpeg 是一套处理多媒体文件的软件库。凭借这些强大的库,FFmpeg 能够转换格式、推流以及处理音频和视频文件。许多 Linux 的前端应用都使用 FFmpeg 作为后端支持,所以这些应用对 FFmpeg 的依赖度非常高。举个例子,录屏软件可能会用到 FFmpeg 将录屏转换为 gif 动图。 -VLC 多媒体播放器、YouTube、Blender、Kodi、Shotcut 和 Handbrake 等流行的应用与服务都在使用 FFmpeg。 +VLC 多媒体播放器、YouTube、Blender、Kodi、Shotcut 和 Handbrake 等流行的应用与服务都在使用 FFmpeg,这仅仅一小部分。 趣事:NASA 火星 2020 计划的探测器“毅力”号在将图像和视频发送到地球之前,会先使用 FFmpeg 对其进行处理。 @@ -25,9 +28,9 @@ VLC 多媒体播放器、YouTube、Blender、Kodi、Shotcut 和 Handbrake 等流 FFmpeg 的核心是命令行实用程序,既可在命令行上使用,也可以经由任何程序语言调用。比如,你可以在 Shell 程序或 python 脚本中使用 FFmpeg。 -* FFmpeg: 用于转换音视频格式,包括视频直播资源。 -* ffplay: FFmpeg 配套使用的媒体播放器 -* ffprobe: 显示媒体文件信息的命令行工具,可将信息输出为 csv、xml、json 等格式。 +* `ffmpeg`:用于转换音视频格式,包括来自视频直播的信号源。 +* `ffplay`:FFmpeg 配套使用的媒体播放器 +* `ffprobe`:显示媒体文件信息的命令行工具,可将信息输出为 csv、xml、json 等格式。 ### FFmpeg 安装 @@ -52,49 +55,49 @@ sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfre ``` ``` -sudo dnf install FFmpeg +sudo dnf install ffmpeg ``` #### Arch Linux ``` -pacman -S FFmpeg +pacman -S ffmpeg ``` 安装完成后,可输入以下命令查看安装是否成功。 ``` -FFmpeg --version +ffmpeg --version ``` ![FFmpeg installed in Ubuntu Linux][3] -### 案例:FFmpeg 的基本操作 +### 示例:FFmpeg 的基本操作 首先,我们先来看看 FFmpeg 语法的一个简单例子。如下,该语法可以将 mp4 文件转换为 mkv 文件。 -1. 视频文件格式转换 +1、视频文件格式转换 ``` -FFmpeg -i big_buck_bunny.mp4 big_buck_bunny.mkv +ffmpeg -i big_buck_bunny.mp4 big_buck_bunny.mkv ``` 当然,这种写法最为简单易懂,但它并不完整,因为没有输入 比特率bit rate分辨率resolution 以及其他的视频文件属性。 -2. 音频文件格式转换 +2、音频文件格式转换 -第二,输入与上面相似的命令可以转换音频文件的格式。 +其次,输入与上面相似的命令可以转换音频文件的格式。 ``` -FFmpeg -i sunny_day.ogg sunny_day.mp3 +ffmpeg -i sunny_day.ogg sunny_day.mp3 ``` -3. 使用音视频 codec 执行格式转换 +3、使用音视频编解码器执行格式转换 最后,在下面的例子中,我们可以使用特定的 编解码器codec 来转换视频格式。参数 `-c` 搭配 `a` 或者 `v`,可以分别定义音频和视频文件。以下转换命令使用 `libvpx` 视频编解码器和 `libvorbis` 音频编解码器。 ``` -FFmpeg -i big_buck_bunny.mp4 -c:v libvpx -c:a libvorbis big_buck_bunny.webm +ffmpeg -i big_buck_bunny.mp4 -c:v libvpx -c:a libvorbis big_buck_bunny.webm ``` ### 如何确定自己系统中有哪些编码器和解码器? @@ -104,13 +107,20 @@ FFmpeg -i big_buck_bunny.mp4 -c:v libvpx -c:a libvorbis big_buck_bunny.webm 输入以下命令,打印所有编解码器。 ``` -FFmpeg -codecs +ffmpeg -codecs ``` 该命令可以打印出所有可用的编解码器,并显示每个编解码器对应的功能信息,比如是否支持解码或编码。此外,如以下输出结果所示,打印出来的信息还会按照首字母顺序标注出每个编码器和解码器的位置。 ``` -D..... = Decoding supported.E.... = Encoding supported..V... = Video codec..A... = Audio codec..S... = Subtitle codec...I.. = Intra frame-only codec....L. = Lossy compression.....S = Lossless compression +D..... = 支持解码 +.E.... = 支持编码 +..V... = 视频编解码器 +..A... = 音频编解码器 +..S... = 字幕编解码器 +...I.. = 仅限帧内编解码器 +....L. = 有损压缩 +.....S = 无损压缩 ``` ![FFmpeg Codec list][4] @@ -120,7 +130,7 @@ D..... = Decoding supported.E.... = Encoding supported..V... = Video codec..A... 输入下列命令,打印出所有编码器 ``` -FFmpeg -encoders +ffmpeg -encoders ``` #### 显示所有解码器 @@ -128,7 +138,7 @@ FFmpeg -encoders 同样,输入下列命令,打印出所有解码器。 ``` -FFmpeg -decoders +ffmpeg -decoders ``` #### 更多信息 @@ -136,28 +146,28 @@ FFmpeg -decoders 输入参数 `-h`,获取更多关于编码器或解码器的信息。 ``` -FFmpeg -h decoder=mp3 +ffmpeg -h decoder=mp3 ``` ### 总结 -我希望这篇文章可以帮助你了解 FFmpeg 的基本知识及基本命令。若要了解更多信息,可前往 FFmpeg 官方网站,浏览 [帮助文章Documentation][5]。 +我希望这篇文章可以帮助你了解 FFmpeg 的基本知识及基本命令。若要了解更多信息,可前往 FFmpeg 官方网站浏览 [帮助文档][5]。 -------------------------------------------------------------------------------- -via: https://www.debugpoint.com/2022/06/install-FFmpeg-ubuntu/ +via: https://www.debugpoint.com/2022/06/install-ffmpeg-ubuntu/ 作者:[Arindam][a] 选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +译者:[aREversez](https://github.com/aREversez) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 [a]: https://www.debugpoint.com/author/admin1/ [b]: https://github.com/lkxed -[1]: https://FFmpeg.org/ +[1]: https://ffmpeg.org/ [2]: https://www.debugpoint.com/2020/07/enable-rpm-fusion-fedora-rhel-centos/ [3]: https://www.debugpoint.com/wp-content/uploads/2022/06/FFmpeg-installed-in-Ubuntu-Linux.jpg [4]: https://www.debugpoint.com/wp-content/uploads/2022/06/FFmpeg-Codec-list.jpg -[5]: https://FFmpeg.org/documentation.html +[5]: https://ffmpeg.org/documentation.html diff --git a/translated/tech/20220606 Amberol is a Stunning Looking Music Player for Linux That Just Plays Music and Nothing Else.md b/published/20220606 Amberol is a Stunning Looking Music Player for Linux That Just Plays Music and Nothing Else.md similarity index 68% rename from translated/tech/20220606 Amberol is a Stunning Looking Music Player for Linux That Just Plays Music and Nothing Else.md rename to published/20220606 Amberol is a Stunning Looking Music Player for Linux That Just Plays Music and Nothing Else.md index 772796fee7..0ccbb7c9bc 100644 --- a/translated/tech/20220606 Amberol is a Stunning Looking Music Player for Linux That Just Plays Music and Nothing Else.md +++ b/published/20220606 Amberol is a Stunning Looking Music Player for Linux That Just Plays Music and Nothing Else.md @@ -3,15 +3,18 @@ [#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/" [#]: collector: "lkxed" [#]: translator: "geekpi" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-14700-1.html" Amberol 是一款外观漂亮的 Linux 音乐播放器,只播放音乐,不做其他事情 ====== + +![](https://img.linux.net.cn/data/attachment/album/202206/12/155846b0sbsvtt1et70ttf.jpg) + 虽然音乐世界被流媒体服务所主导,但这并没有阻止开发者为桌面电脑创建音乐播放器。 -最近,我发现了一个外观漂亮的新的 Linux 桌面音乐播放器。它名为 Amberol,我被它的美丽所震撼了。 +最近,我发现了一个外观漂亮的新的 Linux 桌面音乐播放器。它名为 Amberol,我被它的美丽所震撼。 ![amberol music player interface][1] @@ -21,41 +24,41 @@ Amberol 是一款外观漂亮的 Linux 音乐播放器,只播放音乐,不 看起来不错是它所做的两件(或几件)事情中的一件。另一件事是播放音乐。 -这就是它。[Amberol][2] 没有额外的花哨(和有用)的功能,如生成专辑封面、元数据编辑、歌词显示或播放列表和库管理。 +这就是它,[Amberol][2] 没有额外的花哨(和有用)的功能,如生成专辑封面、元数据编辑、歌词显示或播放列表和库管理。 -这些功能也不像会在未来的版本中加入。Amberol 只想播放音乐。就是这样。 +这些功能也不像是会在未来的版本中加入。Amberol 只想播放音乐。就是这样。 #### 令人惊叹的用户界面 Amberol 和大多数新的 GNOME 应用一样,是用 Rust 和 GTK 编写的。 -它有一个自适应的用户界面,可以根据你正在播放的专辑颜色来改变颜色。渐变效果给了它一个现代、时尚的外观,肯定会成为你的 Linux rice 截图的一部分。 +它有一个自适应的用户界面,可以根据你正在播放的专辑颜色来改变颜色。渐变效果给了它一个现代、时尚的外观,肯定会成为你的 Linux 美化Ricing截图的一部分。 ![amberol music player][3] -由于 UI 没有传统的手柄和菜单,它给应用一个统一的外观。 +由于其 UI 没有传统的手柄和菜单,它给应用一个统一的外观。 #### 播放列表 -它从你添加的文件夹中存在的文件自动生成一个播放列表。它显示在左手边的侧边栏。 +它会从你添加的文件夹中的文件自动生成一个播放列表,显示在左手边的侧边栏。 ![amberol playlist][4] -你可以在左上角看到整个播放列表将播放多长时间的音乐。点击“勾选符号”,你可以选择歌曲,并从播放列表中删除它们。 +你可以在左上角看到整个播放列表将播放多长时间的音乐。点击“勾选”符号,你可以选择歌曲,并从播放列表中删除它们。 -如果你愿意,你可以隐藏播放列表的侧边栏。 +如果你愿意,可以隐藏播放列表的侧边栏。 ![amberol without playlist][5] #### 音乐播放选项 -你可以在界面上看到歌曲的进度。该播放器与键盘上的媒体控制按钮整合得很好。你可以用专用的媒体键播放/暂停和改变曲目(如果你的系统上有)。 +你可以在界面上看到歌曲的进度。该播放器与键盘上的媒体控制按钮整合得很好。你可以用专用的媒体键来播放、暂停和改变曲目(如果你的系统上有)。 -Amberol 为你提供了一些播放音乐的选项。你可以打开随机播放功能,按随机顺序播放音乐。你也可以把一首歌放在重复的位置,一直播放,直到你厌倦它。 +Amberol 为你提供了一些播放音乐的选项。你可以打开随机播放功能,按随机顺序播放音乐。你也可以单曲循环,直到你厌倦它。 ![amberol music playing options][6] -底部的手柄菜单让你可以选择添加文件或文件夹,并显示可用的键盘快捷方式。 +底部的汉堡菜单让你可以选择添加文件或文件夹,并显示可用的键盘快捷方式。 ![amberol keyboard shortcuts][7] @@ -63,7 +66,7 @@ Amberol 为你提供了一些播放音乐的选项。你可以打开随机播放 ### 在 Linux 上安装 Amberol -Amberol 是[以 Flatpak 形式提供][8]。请确保[你的系统已启用 Flatpak 支持][9]。 +Amberol 是 [以 Flatpak 形式提供的][8]。请确保 [你的系统已启用 Flatpak 支持][9]。 要安装 Amberol,请打开终端并使用以下命令: @@ -73,17 +76,17 @@ flatpak install flathub io.bassi.Amberol 安装完毕后,在菜单中搜索该应用,并点击启动。 -第一次运行时,它会要求你添加音乐文件或文件夹。你也可以拖放文件。 +第一次运行时,它会要求你添加音乐文件或文件夹。你也可以拖放文件播放。 ![amberol first run][10] ### 总结 -就个人而言,我更喜欢流媒体服务,因为我没有一个很好的本地音乐收藏。但我知道有的人有/有大量的 CD 收藏,现在都保存在硬盘上。 +就个人而言,我更喜欢流媒体服务,因为我没有本机音乐珍藏。但我知道有的人有大量的 CD 收藏,现在都保存在硬盘上。 -Amberol 是一个外观漂亮的应用,对于播放本地音乐来说,它足够好。最吸引人的是基于专辑封面的自适应用户界面。 +Amberol 是一个外观漂亮的应用,对于播放本机音乐来说,它足够好。最吸引人的是它基于专辑封面的自适应用户界面。 -我请你试试它,并在评论区分享你的经验。 +请你试试它,并在评论区分享你的经验。 -------------------------------------------------------------------------------- @@ -92,7 +95,7 @@ via: https://itsfoss.com/amberol-music-player/ 作者:[Abhishek Prakash][a] 选题:[lkxed][b] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 diff --git a/published/20220607 OpenInfra Foundation Launches -directed funding- To Support Open Source Projects.md b/published/20220607 OpenInfra Foundation Launches -directed funding- To Support Open Source Projects.md new file mode 100644 index 0000000000..18e0fae1d8 --- /dev/null +++ b/published/20220607 OpenInfra Foundation Launches -directed funding- To Support Open Source Projects.md @@ -0,0 +1,47 @@ +[#]: subject: "OpenInfra Foundation Launches ‘directed funding’ To Support Open Source Projects" +[#]: via: "https://www.opensourceforu.com/2022/06/openinfra-foundation-launches-directed-funding-to-support-open-source-projects/" +[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/" +[#]: collector: "lkxed" +[#]: translator: "lkxed" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-14707-1.html" + +OpenInfra 基金会启动“定向资助”以支持开源项目 +====== +![OpenInfra][1] + +OpenInfra 基金会的前身为 OpenStack 基金会,几年前它将范围扩展到其旗舰项目之外,于是改了名字。2022 年 6 月 7 日,它宣布了一种有趣的新方式,让企业资助基金会内的开源项目。一般来说,开源基金会的企业成员通过支付会员费来支持该组织,然后基金会按照他们认为合适的方式分发这些费用。OpenInfra 基金会现在推出了一种新的“定向资助”模式,允许成员将他们的资金直接用于项目。 + +此前,基金会并不允许这样做,因为正如 Bryce 指出的那样,它可能会产生混合激励和付费游戏动态,而该组织一直试图避免这种情况。然而,社区对支持特定项目有很大的兴趣,这是有道理的,因为该基金会现在拥有更多种类的项目,但并不是每个成员都对每个项目进行了大量投入。 + +Bryce 表示,基金会的领导层和董事会,花费了大量时间来考虑,如何使基金会的核心原则与这种新模式相协调。因此,该模型试图将过去十年运行良好的 OpenStack/OpenInfra 技术治理模型的优点,与这些新的财务考虑相结合。 + +在这种“定向资助”模式下,每个新项目都将拥有自己的法人实体来持有项目资金。为确保新项目的合法性,OpenInfra 白金会员(目前为 9 家,包括蚂蚁集团、华为、Meta、微软和红帽)必须担任项目的发起人,之后其他组织才能加入项目基金。如果赞助公司还不是 OpenInfra 成员,则必须成为成员。然后,所有这些资助成员组成一个项目基金管理委员会,决定创建预算的费用。与此同时,OpenInfra 基金会将为这些项目提供社区建设服务。 + +这种新模式暂时只适用于加入基金会的新项目。Bryce 和 Collier 指出,组织可能会在一些现有项目中追溯应用这种新模式,但这个考虑目前不在路线图上。 + +自从将范围扩展到 OpenStack 之外后,OpenInfra 基金会增加了一些新项目,例如用于提高容器安全性的 Kata Containers、用于基础设施生命周期管理的 Airship、Startling X 边缘计算堆栈以及 Zuul CI/CD 平台。 + +“我们从每个成功的项目中学到的最重要的一点是,协作是关键,支持生态系统的范围越广越好,” OpenInfra 基金会总经理 Thierry Carrez 说,“事实上,我们发现最成功的开源项目是由多家公司资助的,因为他们能够整合资源以实现更高的回报率。” + +这种新模式显然是 OpenInfra 基金会引入新项目和新成员的一种方式。正如领导团队欣然承认的那样,其在多方生态系统中管理开源项目的模型 —— 无论是通过新的定向资金还是更传统的方法 —— 可能并不适合每个项目。即使 OpenInfra 基金会只收到一小部分项目,随着对这些复杂云基础设施项目需求的增长,开源项目的数量也在增加,同时它们也变得更加复杂。 + +基金会还宣布了其各个项目的几个里程碑版本的发布,包括 Kata Containers 2.0 版、Zuul 5.0 版和 StarlingX 6.0 。 + +Collier 说:“基金会今年庆祝成立 10 周年,在展望下一个十年的开放基础设施之际,我们正在推动我们的模型如此成功的关键,那就是:将希望合作的公司和个人联合起来,为他们提供一个框架和有效协作的工具,并帮助他们投资资金以最好地帮助他们关心的项目。” + +-------------------------------------------------------------------------------- + +via: https://www.opensourceforu.com/2022/06/openinfra-foundation-launches-directed-funding-to-support-open-source-projects/ + +作者:[Laveesh Kocher][a] +选题:[lkxed][b] +译者:[lkxed](https://github.com/lkxed) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.opensourceforu.com/author/laveesh-kocher/ +[b]: https://github.com/lkxed +[1]: https://www.opensourceforu.com/wp-content/uploads/2022/06/open-infra-berlin-event.png diff --git a/published/20220609 Cloudflare Has Something New to Replace Annoying CAPTCHAs on the Internet.md b/published/20220609 Cloudflare Has Something New to Replace Annoying CAPTCHAs on the Internet.md new file mode 100644 index 0000000000..2fd9490dd6 --- /dev/null +++ b/published/20220609 Cloudflare Has Something New to Replace Annoying CAPTCHAs on the Internet.md @@ -0,0 +1,87 @@ +[#]: subject: "Cloudflare Has Something New to Replace Annoying CAPTCHAs on the Internet" +[#]: via: "https://news.itsfoss.com/cloudflare-pat/" +[#]: author: "Jacob Crume https://news.itsfoss.com/author/jacob/" +[#]: collector: "lkxed" +[#]: translator: "lkxed" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-14711-1.html" + +Cloudflare 有了一个新东西,它可以替代互联网上烦人的验证码 +====== + +不想通过正确输入 验证码CAPTCHA 来证明自己是个人类吗?Cloudflare 可能有了一个解决方案。 + +![Cloudflare][1] + +互联网服务巨头 Cloudflare 前两天 [宣布了][2] 私有访问令牌Private Access Tokens 功能。这项功能旨在减少你在网络上看到的验证码数量,同时改善你的隐私。 + +你可能已经发现,验证码在移动设备上是一种可怕的体验。通常,它们会最终会占据整个屏幕,有时甚至无法完成。 + +作为替代方案,网站可以选择收集唯一识别数据,以证明你是人类。当然,从隐私的角度来看,这种做法是很糟糕的。如果这么做,许多重视隐私的公司都几乎无法避免他们受到 僵尸攻击bot attacks。 + +幸运的是,私有访问令牌(PAT)的发布将改变这一点。 + +### 私有访问令牌会产生什么影响? + +简而言之,私有访问令牌能够做到下面这些事: + +* 在支持的设备上减少验证码数量 +* 增强用户隐私 +* 允许网站所有者确保访问者来自真实设备 + +然而,深入观察,我们可以看到私有访问令牌的影响力远不止于此。若使用传统的验证码,就有多个实体可以访问你的数据。 + +首先,你正在访问的网站知道你的 IP 地址和你正在访问的 URL。当然,这些数据是建立连接所需的最低要求。此外,对于更高级的功能,网站还会发送一些用户代理(UA)数据,还好这些数据并不是唯一可识别的。 + +然而,另一方,也就是验证码提供者,却可以收集更多的数据。与你要访问的网站一样,它也知道你的 IP 地址、用户代理数据和你访问的 URL。不幸的是,除此之外,他们还会收集其他数据,例如你的设备信息和交互数据。如果把这些信息,与你之前完成验证码的时间联系起来,你就会惊讶的发现,他们可以建立一个非常详细的属于你的个人资料。 + +幸运的是,有了 Cloudflare 的私有访问令牌,你就可以完全绕过验证码,从而阻止验证码提供者收集此类数据。 + +### 私有访问令牌是如何工作的? + +![][3] + +验证码的理念是集中尽可能多的数据,私人访问令牌则恰恰相反,它将数据去中心化,因此任何一方都无法唯一识别你。在你提到数据共享之前,Cloudflare 就已经特别指出了,数据不会在各方之间共享。 + +当你访问使用 Cloudflare 和私人访问令牌的网站的时候,共有三方将处理你的数据的不同部分。 + +1. 网站。它只会知道你的 IP、URL 和用户代理,这也是建立连接所必需的。 +2. 你的设备制造商。他们只会知道那些用于验证设备是否真实所需的设备数据,而不会知道你正在访问哪个网站,或你的 IP 地址是什么。验证了你的设备后,他们将生成一个令牌,该令牌将发送到 Cloudflare。 +3. Cloudflare。他们将收到这个令牌,令牌中不包含你的任何设备数据,只有制造商对它是正品的“保证”。他们知道的唯一其他数据,就是你正在访问的网站,同样,这是为你提供内容所必需的。 + +通过这种方式,Cloudflare 无需接触你的数据,就可以对“你是一个人”充满信心。 + +### 支持的操作系统:没有 Linux? + +你可能已经意识到,私人访问令牌需要特定的操作系统功能才能工作。目前,它们仅存在于苹果最新的操作系统上,即 iOS 和 iPadOS 16,以及 macOS Ventura。这是因为苹果的操作系统只在有限的硬件上运行,设备验证会更加容易。 + +另一方面,Linux 是一种通用操作系统,旨在在各种硬件上运行。因此,我认为,在可预见的未来,它都不会支持私人访问令牌。 + +回到苹果,我想到私人访问令牌也可能导致消费者维修设备的权利出现一些问题。例如,如果我用第三方的非正品电池更换了老旧的 iPhone 原装电池,私人访问令牌系统会特殊对待这种情况吗? + +如果是 Linux 手机呢?这些制造商,如 Pine64 和 Purism,可能没有支持这样一个系统的基础设施。是否可以在这些上使用私人访问令牌呢? + +Cloudflare 在 [公告][4] 中提到: + +> 我们正在积极努力让其他客户和设备制造商也使用私人访问令牌框架。每当新客户开始使用它时,从该客户进入你网站的流量将自动开始要求令牌,你的访问者将自动看到更少的验证码。 + +因此,我们希望看到它被更多的设备和操作系统采用。你如何看待 Cloudflare 的私人访问令牌呢?在下面的评论中发表你的看法吧! + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/cloudflare-pat/ + +作者:[Jacob Crume][a] +选题:[lkxed][b] +译者:[lkxed](https://github.com/lkxed) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/jacob/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/wp-content/uploads/2022/06/cloudflare-private-access-tokens.jpg +[2]: https://blog.cloudflare.com/eliminating-captchas-on-iphones-and-macs-using-new-standard/ +[3]: https://news.itsfoss.com/wp-content/uploads/2022/06/PAT-Data-transfer-chart-1024x650.png +[4]: https://blog.cloudflare.com/eliminating-captchas-on-iphones-and-macs-using-new-standard/ diff --git a/published/20220613 Thonny is an Ideal IDE for Teaching Python Programming in Schools.md b/published/20220613 Thonny is an Ideal IDE for Teaching Python Programming in Schools.md new file mode 100644 index 0000000000..2840423b72 --- /dev/null +++ b/published/20220613 Thonny is an Ideal IDE for Teaching Python Programming in Schools.md @@ -0,0 +1,128 @@ +[#]: subject: "Thonny is an Ideal IDE for Teaching Python Programming in Schools" +[#]: via: "https://itsfoss.com/thonny-python-ide/" +[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-14717-1.html" + +Thonny:在学校教授 Python 编程的理想 IDE +====== + +在 Linux 中运行一个 Python 程序只需要简单地在终端中执行 Python 文件就行。 + +但这对人们来说不是很方便,也不能帮助你调试你的程序。太原始了。 + +有几个 IDE 和文本编辑器可以用于 Python 开发。Linux 用户可以使用 [PyCharm 社区版][1]。 + +我最近发现了另一个专门为 Python 初学者制作的 IDE。我喜欢这个应用的想法,因此我在这里与你分享。 + +### Thonny 是一个跨平台、开源的 Python IDE,适合初学者使用 + +[Thonny][2] 在用户界面和用户体验方面,感觉就像 Python 版本的 Eclipse。考虑到大多数 C++ 和 Java 的初学者都是从 Eclipse 开始的,而且许多人后来一直使用它,这也不完全是一件坏事。 + +它不是一个新的工具。它已经出现好几年了。我没有用 Python 进行编码,所以直到最近才发现它。 + +Thonny 专注于 Python,提供了帮助 Python 初学者了解其程序行为的功能。让我们来看看这些功能。 + +#### 即装即用 + +Thonny 自带 Python,所以你不需要为安装 Python 做额外的努力。这对 Linux 用户来说不是什么大事,因为大多数发行版都默认安装了 Python。 + +界面很简单。它给你一个编辑器,你可以写你的 Python 程序,然后点击运行按钮或使用 `F5` 键来运行程序。输出显示在底部。 + +![thonny hello world][3] + +#### 查看变量 + +在 “查看View->变量Variables”,你可以看到所有变量的值。不需要将它们全部打印出来。 + +![thonny variable pane][4] + +#### 内置调试器 + +通过使用调试器一步步运行你的程序。你可以从顶部的菜单或使用 `Ctrl + F5` 键访问它。在这里你甚至不需要设置断点。你可以用 `F6` 进入大步骤,或用 `F7` 进入小步骤。 + +![thonny step by step f6][5] + +在小步骤中,你可以看到 Python 是如何看待你的表达式的。这对新的程序员理解他们的程序为什么以某种方式表现非常有帮助。 + +![thonny step by step f7][6] + +不止这样。对于函数调用,它会打开一个新的窗口,里面有独立的局部变量表和代码指针。超级酷! + +#### 语法错误高亮 + +初学者经常会犯一些简单的语法错误,如缺少小括号、引号等。Thonny 会在编辑器中立即指出来。 + +本地变量也可以从视觉上与全局变量区分开来。 + +#### 自动补全 + +你不需要输入所有的东西。Thonny 支持自动补全代码,这有助于加快编码。 + +![thonny auto complete][7] + +#### 访问系统 shell + +在工具中,你可以访问系统 shell。在这里你可以安装新的 Python 包或学习从命令行处理 Python。 + +![thonny shell terminal][8] + +请注意,如果你使用 Flatpak 或 Snap,Thonny 可能无法访问系统 shell。 + +#### 从 GUI 管理 Pip + +进入工具和管理包。它会打开一个窗口,你可以从这个 GUI 中安装 Pip 软件包。 + +![thonny manage packages][9] + +对于学习 Python 来说,功能足够好,对吗?让我们看看如何安装它。 + +### 在 Linux 上安装 Thonny + +Thonny 是一个跨平台的应用。它可用于 Windows、macOS 和 Linux。 + +它是一个流行的应用,你可以在大多数 Linux 发行版的仓库中找到它。只要在你的系统的软件中心寻找它。 + +另外,你也可以随时使用你的 Linux 发行版的包管理器。 + +在 Debian 和基于 Ubuntu 的发行版上,你可以使用 `apt` 命令来安装它。 + +``` +sudo apt install thonny +``` + +它会下载一堆依赖关系和大约 300MB 的软件包。 + +安装后,你可以在菜单中搜索它,并从那里安装它。 + +### 总结 + +Thonny 对于初级 Python 程序员来说是个不错的工具。不是说专家不能使用它,但它更适合在学校和学院使用。学生们会发现它有助于学习 Python 和理解他们的代码是如何以某种方式表现出来的。事实上,它最初是在爱沙尼亚的塔尔图大学开发的。 + +总的来说,对于 Python 学习者来说是一个很好的软件。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/thonny-python-ide/ + +作者:[Abhishek Prakash][a] +选题:[lkxed][b] +译者:[geekpi](https://github.com/geekpi) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/abhishek/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/install-pycharm-ubuntu/ +[2]: https://thonny.org/ +[3]: https://itsfoss.com/wp-content/uploads/2022/06/thonny-hello-world.png +[4]: https://itsfoss.com/wp-content/uploads/2022/06/thonny-variable-pane.png +[5]: https://itsfoss.com/wp-content/uploads/2022/06/thonny-step-by-step-f6.png +[6]: https://itsfoss.com/wp-content/uploads/2022/06/thonny-step-by-step-f7.png +[7]: https://itsfoss.com/wp-content/uploads/2022/06/thonny-auto-complete.png +[8]: https://itsfoss.com/wp-content/uploads/2022/06/thonny-shell-terminal.png +[9]: https://itsfoss.com/wp-content/uploads/2022/06/thonny-manage-packages.png diff --git a/published/20220614 Thunderbird, The Open Source Email Client, Is Coming To Android.md b/published/20220614 Thunderbird, The Open Source Email Client, Is Coming To Android.md new file mode 100644 index 0000000000..8d3dfe46e5 --- /dev/null +++ b/published/20220614 Thunderbird, The Open Source Email Client, Is Coming To Android.md @@ -0,0 +1,38 @@ +[#]: subject: "Thunderbird, The Open Source Email Client, Is Coming To Android" +[#]: via: "https://www.opensourceforu.com/2022/06/thunderbird-the-open-source-email-client-is-coming-to-android/" +[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/" +[#]: collector: "lkxed" +[#]: translator: "lkxed" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-14715-1.html" + +开源电子邮件客户端 Thunderbird 即将登陆 Android +====== + +![](https://img.linux.net.cn/data/attachment/album/202206/16/084004gdzgp4bqgigi9tpe.jpg) + +开源电子邮件客户端 Thunderbird 将通过 K-9 Mail Android 电子邮件应用项目登陆 Android,该项目与 Thunderbird 合并后的产品就是 Thunderbird Android 电子邮件应用。两年前,Thunderbird 被转移到了 Mozilla 基金会的子公司 MZLA Technologies Corporation 下,该公司的所有权结构与基金会子公司 Mozilla 公司旗下的 Firefox 类似。有了 OpenPGP 端到端加密和期待已久的移动应用等新功能,Thunderbird 项目能够开辟出一条自己的道路。 + +根据 Thunderbird 团队的说法,Thunderbird 产品经理 Ryan Lee Sipes 和 K-9 的主要维护者 Christian Ketterer,两人早在 2018 年就开始讨论可能的 Thunderbird 电子邮件应用合作了。到了 2022 年,两人决定不再让 Thunderbird 从头开始​​开发自己的应用程序,而是直接让 K-9 加入 Thunderbird。 + +Thunderbird 团队表示:“许多 Thunderbird 用户都要求在移动设备上获得 Thunderbird 体验,我们打算通过把 K-9 打造成令人惊叹的产品(并将其变成 Android 上的 Thunderbird)来提供这种体验。K-9 将补充提供 Thunderbird 体验,并增强它的使用场景和方式,让用户获得出色的电子邮件体验。我们对桌面 Thunderbird 的承诺没有改变,我们团队中的大多数人都致力于将其打造为一流的电子邮件客户端,并将保持这种状态。” + +虽然 K-9 在 Google Play 上并不是特别受欢迎的电子邮件应用,但它已经获得了 500 万次下载。K-9 Mail 的路线图目前包括:使用 Thunderbird 帐户自动配置的帐户设置、改进的文件夹管理、消息过滤器支持,以及桌面和移动 Thunderbird 之间的同步。虽然 Thunderbird 知道人们对 iOS 版 Thunderbird 应用程序也很感兴趣,但在常见问题解答(FAQ)中,该项目仅声明它正在“评估”这种可能性。 + +Thunderbird 团队还打算将 Firefox Sync 作为一种在 Thunderbird 和 K-9 Mail 之间同步帐户的方法。它应该会在 2023 年夏天正式投入使用。该项目还在研究将哪些 Thunderbird 功能引入 Android 应用程序,例如日历、任务、提要和聊天支持等。 + +-------------------------------------------------------------------------------- + +via: https://www.opensourceforu.com/2022/06/thunderbird-the-open-source-email-client-is-coming-to-android/ + +作者:[Laveesh Kocher][a] +选题:[lkxed][b] +译者:[lkxed](https://github.com/lkxed) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.opensourceforu.com/author/laveesh-kocher/ +[b]: https://github.com/lkxed +[1]: https://www.opensourceforu.com/wp-content/uploads/2022/06/android-developer.jpg diff --git a/sources/news/20220607 OpenInfra Foundation Launches -directed funding- To Support Open Source Projects.md b/sources/news/20220607 OpenInfra Foundation Launches -directed funding- To Support Open Source Projects.md deleted file mode 100644 index 887fd972a7..0000000000 --- a/sources/news/20220607 OpenInfra Foundation Launches -directed funding- To Support Open Source Projects.md +++ /dev/null @@ -1,47 +0,0 @@ -[#]: subject: "OpenInfra Foundation Launches ‘directed funding’ To Support Open Source Projects" -[#]: via: "https://www.opensourceforu.com/2022/06/openinfra-foundation-launches-directed-funding-to-support-open-source-projects/" -[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -OpenInfra Foundation Launches ‘directed funding’ To Support Open Source Projects -====== -![open-infra-berlin-event][1] - -The OpenInfra Foundation, formerly known as the OpenStack Foundation until it expanded its scope beyond its flagship project a few years ago, announced today an intriguing new way for companies to fund open source projects within the foundation. Corporate members of open source foundations have traditionally supported the organisation by paying a membership fee, which the foundations then distribute as they see fit. The OpenInfra foundation is now launching a new ‘Directed Funding’ model that allows members to direct their funds directly to a project. - -The foundation previously did not allow this because, as Bryce pointed out, it can create mixed incentives and a pay-for-play dynamic, which the organisation has always tried to avoid. However, there was a lot of interest in the community to support specific projects, which makes sense given that the foundation is now home to a wider variety of projects, but not every member is heavily invested in every project. - -Bryce stated that the foundation’s leadership and board spent a significant amount of time considering how to reconcile the foundation’s core principles with this new model. As a result, the model tries to combine the best of the OpenStack/OpenInfra technical governance model, which has worked well over the last decade, with these new financial considerations. - -Under this ‘directed funding’ model, each new project will have its own legal entity that will hold the project funding. To ensure that the new projects are legitimate, an OpenInfra Platinum member (currently nine, including Ant Group, Huawei, Meta, Microsoft, and Red Hat) must serve as the project’s sponsor, after which other organisations can join the project fund. If a sponsoring company is not already an OpenInfra member, it must become one. All of these funding members then form a project fund governing board, which decides on the fees for creating a budget. Meanwhile, the OpenInfra Foundation will provide these projects with community-building services. - -This new model will, for the time being, only apply to new projects that join the foundation. Bryce and Collier noted that there may be some existing projects where the organisation could retroactively apply this new model, but that is not currently on the roadmap. - -The OpenInfra foundation has added projects such as Kata Containers for increased container security, Airship for infrastructure lifecycle management, the Startling X edge compute stack, and the Zuul CI/CD platform since it expanded beyond OpenStack. - -“The most important thing we’ve learned from each of these successful projects is that collaboration is key and the more breadth in the ecosystem of support the better,” said Thierry Carrez, general manager of the OpenInfra Foundation. “In fact, we’ve found that the most successful open source projects are funded by multiple companies, because they are able to combine their resources to achieve a much stronger rate of return.” - -This new model is clearly a way for the OpenInfra Foundation to bring new projects — and new members — into the fold. Its models for managing open source projects in a multi-party ecosystem — both through the new directed funds and its more traditional approach — may not be suitable for every project, as the leadership team readily admits. Even if the OpenInfra Foundation only receives a small percentage of projects, the number of open-source projects is increasing as the demand for these sophisticated cloud infrastructure projects grows, all while they become more complex. - -The Foundation also announced a couple of milestone releases for its various projects, including version 2.0 of Kata Containers, version 5.0 of Zuul, and the release of StarlingX 6.0. - -“The Foundation celebrates its 10 anniversary this year, and as we look to our next decade of open infrastructure, we’re building momentum on what makes our model so successful: aligning companies and individuals who wish to work together, providing them with a framework and tools to effectively collaborate, and helping them invest their funds to best help the project they care about,” said Collier. - --------------------------------------------------------------------------------- - -via: https://www.opensourceforu.com/2022/06/openinfra-foundation-launches-directed-funding-to-support-open-source-projects/ - -作者:[Laveesh Kocher][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.opensourceforu.com/author/laveesh-kocher/ -[b]: https://github.com/lkxed -[1]: https://www.opensourceforu.com/wp-content/uploads/2022/06/open-infra-berlin-event.png diff --git a/sources/news/20220609 Cloudflare Has Something New to Replace Annoying CAPTCHAs on the Internet.md b/sources/news/20220609 Cloudflare Has Something New to Replace Annoying CAPTCHAs on the Internet.md deleted file mode 100644 index 80fe54aece..0000000000 --- a/sources/news/20220609 Cloudflare Has Something New to Replace Annoying CAPTCHAs on the Internet.md +++ /dev/null @@ -1,86 +0,0 @@ -[#]: subject: "Cloudflare Has Something New to Replace Annoying CAPTCHAs on the Internet" -[#]: via: "https://news.itsfoss.com/cloudflare-pat/" -[#]: author: "Jacob Crume https://news.itsfoss.com/author/jacob/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Cloudflare Has Something New to Replace Annoying CAPTCHAs on the Internet -====== -Don’t want to complete CAPTCHA challenges to prove that you are a human? Cloudflare might have a solution for that. - -![cloudflare][1] - -Cloudflare, the internet services giant, has [just announced][2] Private Access Tokens. These aim to reduce the number of CAPTCHAs you see on the web while improving your privacy. - -As you may have found out, CAPTCHAs are a horrible experience on mobile. They often end up occupying the entire screen and can be impossible to complete at times. - -As an alternative, websites can elect to collect uniquely identifying data to prove that you are a human. Of course, from a privacy standpoint, this practice is terrible, leaving many privacy-valuing companies with little to prevent them from bot attacks. - -Fortunately, the release of Private Access Tokens, or PATs, is set to change this. - -### What Impact Will Private Access Tokens Have? - -In short, PATs will: - -* Reduce the number of CAPTCHAs on supported devices -* Increase user privacy -* Allow website owners to ensure that visitors are coming from actual devices - -However, diving in a little deeper, we can see that PATs are much more impactful than at first glance. With traditional CAPTCHAs, there are multiple entities that can access your data. - -Firstly, the website you are visiting knows your IP address and the URL you are visiting. Of course, this data is the minimum required to establish a connection. Additionally, for more advanced functionality, websites are also sent some user agent data, which is not uniquely identifiable. - -However, the second party, the CAPTCHA provider, can collect a lot more data. Like with the website you want to visit, it knows your IP address, user agent data, and the URL you visit. Unfortunately, they also collect additional data, like your device information and interaction data. When tied back with previous times you have completed a CAPTCHA, they can build up an astonishingly detailed profile of you. - -Fortunately, PATs by Cloudflare prevent such data from being collected, by ultimately bypassing the CAPTCHA altogether. - -### How Do PATs Work? - -![][3] - -Unlike the CAPTCHA method of aggregating as much data as possible, PATs decentralize the data so that no single party can uniquely identify you. Before you mention data sharing, Cloudflare has specifically mentioned that data is not shared between parties. - -When you go on to a website utilizing Cloudflare and PATs, a total of three parties will handle different portions of your data. - -1. The website. This will only know your IP, URL, and user agent, which again, is required for establishing a connection. -2. Your device manufacturer. This will only know the device data required to verify that your device is genuine. They will NOT know what website you are visiting, or your IP address. After verifying your device, they will generate a token, which will be sent to Cloudflare. -3. Cloudflare. Cloudflare will receive the token, which does not contain any of your device data, only a ‘guarantee’ of sorts from the manufacturer that it is genuine. The only other data they know is the website you are visiting, which is required to serve you the content. - -The result of this is a system that gives Cloudflare confidence in you being a human, without ever having to touch your data. - -### Supported Operating Systems: No Linux? - -As you may have realized, PATs need specific operating system features to work. Currently, they are only present on the latest operating systems by Apple, namely iOS and iPadOS 16, as well as macOS Ventura. This is because Apple’s operating systems run on a limited set of hardware, making device verification significantly easier. - -Linux, on the other hand, is a general-purpose operating system designed to run on a wide range of hardware. As a result, I don’t expect to see it support PATs in the near future. - -Going back to Apple, it occurs to me that PATs could also cause some issues with consumers’ right to repair their devices. If, for example, I replaced a worn-out iPhone battery with a non-genuine one, would this be flagged by the PAT system? - -What about Linux Phones? Manufacturers of these, like Pine64 and Purism, may not have the infrastructure to support such a system. Will it be possible to use PATs on these? - -In the [announcement post][4], Cloudflare mentions: - -> We are actively working to get other clients and device makers utilizing the PAT framework as well. Any time a new client begins utilizing the PAT framework, traffic coming to your site from that client will automatically start asking for tokens, and your visitors will automatically see fewer CAPTCHAs. - -So, we hope to see it being adopted by more devices, and operating systems. What do you think about PATs by Cloudflare? Let me know your thoughts in the comments down below. - --------------------------------------------------------------------------------- - -via: https://news.itsfoss.com/cloudflare-pat/ - -作者:[Jacob Crume][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://news.itsfoss.com/author/jacob/ -[b]: https://github.com/lkxed -[1]: https://news.itsfoss.com/wp-content/uploads/2022/06/cloudflare-private-access-tokens.jpg -[2]: https://blog.cloudflare.com/eliminating-captchas-on-iphones-and-macs-using-new-standard/ -[3]: https://news.itsfoss.com/wp-content/uploads/2022/06/PAT-Data-transfer-chart-1024x650.png -[4]: https://blog.cloudflare.com/eliminating-captchas-on-iphones-and-macs-using-new-standard/ diff --git a/sources/news/20220610 To Favor Microsoft VS Code, Microsoft-s GitHub is Killing GitHub-s Atom Editor.md b/sources/news/20220610 To Favor Microsoft VS Code, Microsoft-s GitHub is Killing GitHub-s Atom Editor.md deleted file mode 100644 index c10578130c..0000000000 --- a/sources/news/20220610 To Favor Microsoft VS Code, Microsoft-s GitHub is Killing GitHub-s Atom Editor.md +++ /dev/null @@ -1,80 +0,0 @@ -[#]: subject: "To Favor Microsoft VS Code, Microsoft’s GitHub is Killing GitHub’s Atom Editor" -[#]: via: "https://news.itsfoss.com/atom-being-discontinued/" -[#]: author: "Abhishek https://news.itsfoss.com/author/root/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -To Favor Microsoft VS Code, Microsoft’s GitHub is Killing GitHub’s Atom Editor -====== -We all knew this day would be coming sooner or later. - -![Microsoft kills GitHub's Atom][1] - -Coder, coder in the hall, which is the best editor of them all! - -Sorry for the really cheesy opening line. I could not prevent myself from writing that. Just as we all could not prevent the certain demise of the most loved open source code editor of the last decade, Atom. - -### A brief history of Atom - -Atom, released in 2014 by the then independent Git Hub team, was a huge hit among the programmers. - -Its neat UI, features, and numerous add-ons made it the hot favorite of the developers. - -It continued its popular run despite getting tough competition from Microsoft’s recently open-sourced VS Code editor. - -Atom’s loyal fanbase didn’t budge despite the rising popularity of the VS Code until[Microsoft acquired GitHub in 2018][2]. - -People started wondering how long will Microsoft continue developing two similar projects that don’t make any money for it directly. - -In the last four years, it did seem that Atom was losing its charm. It didn’t have any significant feature development while VS Code got more attractive as features after features landed in every release. - -The writing was on the wall. Microsoft branded VS Code was being favored over Atom. - -Though I don’t have any stats to back my claim, it did seem that Atom’s userbase was declining in the last couple of years. VS Code is like the default editor for young developers. - -It was only time that Microsoft pulled the plug on Atom and it did that finally. - -### GitHub discontinues Atom - -On June 8, Microsoft-owned GitHub [announced][3] that it is going to archive the entire Atom project on December 15, 2022. - -> …we’ve decided to retire Atom in order to further our commitment to bringing fast and reliable software development to the cloud via Microsoft Visual Studio Code and GitHub Codespaces. - -The stated reason is the same we all know; “Atom has not had significant feature development for the past several years” and “focus on enhancing the developer experience in the cloud with GitHub Codespaces”. - -The Atom project was more than just an editor though. For good or bad, whatever you feel like, Atom also gave birth to Electron framework. - -> It’s worth reflecting that Atom has served as the foundation for the Electron framework, which paved the way for the creation of thousands of apps, including Microsoft Visual Studio Code, Slack, and our very own GitHub Desktop. However, reliability, security, and performance are core to GitHub, and in order to best serve the developer community, we are archiving Atom to prioritize technologies that enable the future of software development. - -### Atom dies a slow death and its fork will likely meet the same fate - -Atom is open source so it’s not going to ‘rest in peace’ immediately. It will be resurrected (read forked) for sure. - -However, even if someone forks the project and continues to keep it alive, it’s not going to match up to VS Code anymore. At best, it will get a few bug fixes and minor new features. That’s not entirely bad for the hard-core Atom lovers but it won’t attract newer, younger coders. - -Ultimately, the forked projects will also be shut down eventually. It’s not possible for a couple of volunteer developers to match the might of a billion-dollar organization with huge infrastructure. [Atom won’t get compared to VS Code][4] any longer. - -Atom will be missed. Maybe not by as many people as it would have been if it was to discontinue in 2018. The noose was tightened around its neck slowly and we all witnessed it. - -Anyway, are you still using Atom? Will you move to VS Code or choose some other non-Microsoft editor? - --------------------------------------------------------------------------------- - -via: https://news.itsfoss.com/atom-being-discontinued/ - -作者:[Abhishek][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://news.itsfoss.com/author/root/ -[b]: https://github.com/lkxed -[1]: https://news.itsfoss.com/wp-content/uploads/2022/06/microsoft-kills-github-atom.png -[2]: https://itsfoss.com/microsoft-github/ -[3]: https://github.blog/2022-06-08-sunsetting-atom/ -[4]: https://itsfoss.com/visual-studio-code-vs-atom/ diff --git a/sources/news/20220615 According to studies, Twitter Drives Open Source Projects Popularity.md b/sources/news/20220615 According to studies, Twitter Drives Open Source Projects Popularity.md new file mode 100644 index 0000000000..c5811a07f7 --- /dev/null +++ b/sources/news/20220615 According to studies, Twitter Drives Open Source Projects Popularity.md @@ -0,0 +1,39 @@ +[#]: subject: "According to studies, Twitter Drives Open Source Projects Popularity" +[#]: via: "https://www.opensourceforu.com/2022/06/according-to-studies-twitter-drives-open-source-projects-popularity/" +[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +According to studies, Twitter Drives Open Source Projects Popularity +====== +![twiiter][1] + +The research team, led by Ph.D. Hongbo Fang, discovered that Twitter is an effective way to attract more attention and contributors to open source projects on GitHub. The study, titled “‘This Is Damn Slick!’ Estimating the Impact of Tweets on Open Source Project Popularity and New Contributors,” was presented by Fang at the International Conference on Software Engineering, where it received a Distinguished Paper award. According to the study, tweeting about a project resulted in a 7% increase in popularity (at least one star on GitHub) and a 2% increase in the number of contributors. The more tweets a project received, the more stars and contributors it received. + +“We have realized that social media has become more and more important in open source communities,” Fang said. “Attracting attention and new contributors will lead to higher quality and better software.” + +The majority of open source software is created and maintained by volunteers. The more people who work on a project, the better the outcome. Developers and others use the software, report problems, and work to resolve them. Projects that are unpopular risk not receiving the attention they require. This mostly volunteer workforce is responsible for the upkeep of software that millions of people rely on every day. For example, nearly every HTTPS website secures its content with the open source OpenSSL. Heartbleed, a security flaw discovered in OpenSSL, cost businesses millions of dollars to fix after it was discovered in 2014. Another open source piece of software, cURL, allows connected devices to send data to one another and is installed on approximately 1 billion devices. The list could go on and on. + +Fang’s study of Twitter’s impact on increasing the popularity of an open-source project and attracting new contributors is part of a larger body of work in Vasilescu’s Socio-Technical Research Using Data Excavation Lab (STRUDEL) that looks at how to make the open source community and its work more sustainable. The digital infrastructure, the roads and bridges that underpin modern technology, is open source software. That infrastructure may crumble if it is not properly maintained. + +The researchers examined 44,544 tweets containing links to 2,370 open source GitHub repositories for evidence that the tweets drew new stars and contributors to the projects. The researchers used a scientific approach to the study, comparing the increase in stars and contributors of GitHub projects mentioned on Twitter to a control group of projects that were not mentioned on Twitter. The study also described the characteristics of high-impact tweets, the types of people who are likely to be drawn to a project by the posts, and how those people differ from contributors drawn through other means. Tweets from project supporters, rather than developers, work best for attracting attention. Posts requesting assistance with a specific task or project receive a higher response rate. Tweets tend to attract new contributors who are newer to GitHub but not less experienced programmers. And new interest may not result in new assistance. + +One of the potential drawbacks of increasing a project’s popularity that the researchers discuss is the gap between attention and action. More attention frequently results in more feature requests or issue reports, but not necessarily more developers to address them. Increased social media popularity may result in more trolls or toxic behaviour surrounding the project. + +-------------------------------------------------------------------------------- + +via: https://www.opensourceforu.com/2022/06/according-to-studies-twitter-drives-open-source-projects-popularity/ + +作者:[Laveesh Kocher][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.opensourceforu.com/author/laveesh-kocher/ +[b]: https://github.com/lkxed +[1]: https://www.opensourceforu.com/wp-content/uploads/2022/06/twiiter.jpg diff --git a/sources/news/20220615 Mozilla Just Made Firefox the Most Secure Web Browser for All Users.md b/sources/news/20220615 Mozilla Just Made Firefox the Most Secure Web Browser for All Users.md new file mode 100644 index 0000000000..f8cfad7d55 --- /dev/null +++ b/sources/news/20220615 Mozilla Just Made Firefox the Most Secure Web Browser for All Users.md @@ -0,0 +1,76 @@ +[#]: subject: "Mozilla Just Made Firefox the Most Secure Web Browser for All Users" +[#]: via: "https://news.itsfoss.com/mozilla-firefox-secure/" +[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Mozilla Just Made Firefox the Most Secure Web Browser for All Users +====== +Mozilla finally enabled a privacy protection feature that potentially makes it the safest web browser at the time. Do you think so? + +![mozilla firefox][1] + +Mozilla Firefox is one of the most secure open-source web browsers available. + +Undoubtedly, you get the freedom to customize it to harden security, which is why Tor Browser utilizes Firefox at its core. + +And, also one of the [reasons why I keep coming back to Firefox][2]. + +Now, Mozilla has finally enabled a new feature for **all desktop users,** making it the most secure browser (or as they claim). + +Here, I’m not talking about anything new, but an existing feature in Firefox, i.e., Total Cookie Protection. It was introduced with [Firefox 86][3] last year, but it was not enabled by default for all users. + +### Total Cookie Protection for all users + +Whether you are using Windows, Mac, or Linux, the Total Cookie Protection is being rolled out to everyone, making it one of its core features enabled by default. + +Initially, to use the feature, you had to enable the strict mode (Enhanced Tracking Protection). But, now, you no longer need to do that. + +**What is it?** + +In case you are curious, Total Cookie Protection isolates every website with its cookies. Cookies are small bits of data sent to your browser by a website. + +So, the cookies will not be shared among websites, thereby, preventing cross-site tracking. + +Separate cookie jars will be created for each website you visit. + +![][4] + +Mozilla’s blog post explains more about it as: + +> Any time a website, or [third-party content][5] embedded in a website, deposits a cookie in your browser, that cookie is confined to the cookie jar assigned to *only*that website. No other websites can reach into the cookie jars that don’t belong to them and find out what the other websites’ cookies know about you — giving you freedom from invasive ads and reducing the amount of information companies gather about you. + +### So, Is it a big deal? + +Even with all the privacy tracking protection and content blockers in place, cross-site tracking is a problem that not everyone is aware of. + +Hence, with cross-site cookie interactions, a lot of your personal activities and habits can help a digital tracking company build an online profile of yours. + +But, with Mozilla Firefox, enabling the feature by default on top of all other privacy measures by Firefox, ensures that you should get the most private experience. + +And, all that without needing to tweak anything, which should make things convenient for any privacy-centric user. + +If you are still curious, you can refer to the [official announcement post][6] by Mozilla. + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/mozilla-firefox-secure/ + +作者:[Ankush Das][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/ankush/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/wp-content/uploads/2022/06/mozilla-made-firefox-most-secure-web-browser.jpg +[2]: https://news.itsfoss.com/why-mozilla-firefox/ +[3]: https://news.itsfoss.com/firefox-86-release/ +[4]: https://news.itsfoss.com/wp-content/uploads/2021/02/tcp-firefox.png +[5]: https://support.mozilla.org/en-US/kb/third-party-cookies-firefox-tracking-protection#:~:text=Third%2Dparty%20cookies%20are%20cookies,considered%20a%20third%2Dparty%20cookie. +[6]: https://blog.mozilla.org/en/products/firefox/firefox-rolls-out-total-cookie-protection-by-default-to-all-users-worldwide/ diff --git a/sources/talk/20220510 6 easy ways to make your first open source contribution with LibreOffice.md b/sources/talk/20220510 6 easy ways to make your first open source contribution with LibreOffice.md index 663254a93e..df7c631f1e 100644 --- a/sources/talk/20220510 6 easy ways to make your first open source contribution with LibreOffice.md +++ b/sources/talk/20220510 6 easy ways to make your first open source contribution with LibreOffice.md @@ -2,7 +2,7 @@ [#]: via: "https://opensource.com/article/22/5/first-open-source-contribution-libreoffice" [#]: author: "Klaatu https://opensource.com/users/klaatu" [#]: collector: "lkxed" -[#]: translator: "lkskjjk" +[#]: translator: " " [#]: reviewer: " " [#]: publisher: " " [#]: url: " " diff --git a/sources/talk/20220602 Why Do Enterprises Use and Contribute to Open Source Software.md b/sources/talk/20220602 Why Do Enterprises Use and Contribute to Open Source Software.md deleted file mode 100644 index 939f7865be..0000000000 --- a/sources/talk/20220602 Why Do Enterprises Use and Contribute to Open Source Software.md +++ /dev/null @@ -1,128 +0,0 @@ -[#]: subject: "Why Do Enterprises Use and Contribute to Open Source Software" -[#]: via: "https://www.linux.com/news/why-do-enterprises-use-and-contribute-to-open-source-software/" -[#]: author: "Dan Whiting https://www.linuxfoundation.org/blog/why-do-enterprises-use-and-contribute-to-open-source-software/" -[#]: collector: "lkxed" -[#]: translator: "aREversez" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Why Do Enterprises Use and Contribute to Open Source Software -====== -When people find out I work at the Linux Foundation they invariably ask what we do? Sometimes it is couched around the question, As in the Linux operating system? I explain open source software and try to capture the worldwide impact into 20 seconds before I lose their attention. If they happen to stick around for more, we often dig into the question, Why would enterprises want to participate in open source software projects or use open source software? The reality is – they do, whether they know it or not. And the reality is thousands of companies donate their code to open source projects and invest time and resources helping to further develop and improve open source software. - -### How extensively used is open source software - -To quote from our recently released report, A Guide to Enterprise Open Source, “Open source software (OSS) has transformed our world and become the backbone of our digital economy and the foundation of our digital world. From the Internet and the mobile apps we use daily to the operating systems and programming languages we use to build the future, OSS has played a vital role. It is the lifeblood of the technology industry. Today, OSS powers the digital economy and enables scientific and technological breakthroughs that improve our lives. It’s in our phones, our cars, our airplanes, our homes, our businesses, and our governments. But just over two decades ago, few people had ever heard of OSS, and its use was limited to a small group of dedicated enthusiasts.” - -Open source software (OSS) has transformed our world and become the backbone of our digital economy and the foundation of our digital world. - -But what does this look like practically: - -* In vertical software stacks across industries, open source penetration ranges from 20 to 85 percent of the overall software used. -* Linux fuels 90%+ of web servers and Internet-connected devices. -* The Android mobile operating system is built on the Linux kernel. -* Immensely [popular libraries and tools][1] to build web applications, such as: AMP, Appium, Dojo, jQuery, Marko, Node.js and so many more are open source. -* The world’s top 100 supercomputers run Linux. -* 100% of mainframe customers use Linux. -* The major cloud-service providers – AWS, Google, and Microsoft – all utilize open-source software to run their services and host open-source solutions delivered through the cloud. - -### Why do companies want to participate in open source software projects - -Companies primarily participate in open source software projects in three ways: - -* They donate software they created to the open source community. -* They provide direct funding and/or allocate software developers and other staff to contribute to open source software projects - -The question often asked is, why wouldn’t they want to keep all of their software proprietary or only task their employees to work on their proprietary software? - -The 30,000-foot answer is that it is about organizations coming together to collectively solve common problems so they can separately innovate and differentiate on top of the common baseline. They see that they are better off pooling resources to make the baseline better. Sometimes it is called “coopetition.” It generally means that while companies may be in competition with each other in certain areas, they can still cooperate on others. - -It is about organizations coming together to collectively solve common problems so they can separately innovate and differentiate - -Some old-school examples of this principle: - -* Railroads agreed on a common track size and build so they can all utilize the same lines and equipment was interchangeable. -* Before digital cameras, companies innovated and differentiated on film and cameras, but they all agreed on the spacing for the sprockets to advance the film. -* The entertainment industry united around the VHS and Blu-Ray formats over their rivals. - -Now, we see companies, organizations, and individuals coming together to solve problems while simultaneously improving their businesses and products: - -[Let’s Encrypt][2] is a free, automated, and open certificate authority with the goal of dramatically increasing the use of secure web protocols by making it much easier and less expensive to setup. They are serving 225+ million websites, issuing ~1.5 million certificates each day on average. - -The [Academy Software Foundation][3] [creates value in the film industry][4] through collectively engineering software that powers much of the entertainment, gaming, and media industry productions and open standards needed for growth. - -The Hyperledger Foundation hosts enterprise-grade blockchain software projects, notably [using significantly fewer energy resources][5] than other popular solutions. - -[LF Energy][6] is [making the electric grid more modular, interoperable, and scalable][7] to help increase the use of renewable energy sources. - -[Dronecode][8] is enabling the development of drone software so companies can use their resources to innovate further. - -[OpenSSF][9] is the top technology companies coming together to strengthen the security and resiliency of open source software. - -[Kubernetes][10] was donated by Google and is the go-to solution for managing cloud-based software. - -These are just a small sampling of the open source software projects that enterprises are participating in. You can explore all of the ones hosted at the Linux Foundation [here][11]. - -### How can companies effectively use and participate in open source software projects? - -Enterprises looking to better utilize and participate in open source projects can look to the Linux Foundation’s resources to help. Much of what organizations need to know is provided in the just-published report,[A Guide to Enterprise Open Source][12]. The report is packed with information and insights from open source leaders at top companies with decades of combined experience. It includes chapters on these topics: - -* Leveraging Open Source Software -* Preparing the Enterprise for Open Source -* Developing an Open Source Strategy -* Setting Up Your Infrastructure for Implementation -* Setting Up Your Talent for Success -* Challenges - -Additionally, the Linux Foundation offers many open source [training courses][13], [events][14] throughout the year, the [LFX Platform][15], and hosts projects that help organizations manage open source utilization and participation, such as: - -The [TODO Group][16] provides resources to setup and run an open source program office, including their [extensive guides][17]. - -The [Openchain Project][18] maintains an international standard for sharing what software package licenses are included in a larger package, including information on the various licensing requirements so enterprises can ensure they are complying with all of the legal requirements. - -The [FinOps Foundation][19] is fostering an, “evolving cloud financial management discipline and cultural practice that enables organizations to get maximum business value by helping engineering, finance, technology, and business teams to collaborate on data-driven spending decisions.”. - -The [Software Data Package Exchange (SPDX)][20] is an open standard for communication software bill of materials (SBOMs) so it is clear to every user which pieces of software are included in the overall package. - -Again, this is just a snippet of the projects at the Linux Foundation that are working to help organizations adapt, utilize, contribute, and donate open source projects. - -The bottom line: Enterprises are increasingly turning to open source software projects to solve common problems and innovate beyond the baseline, and the Linux Foundation is here to help. - -The post [Why Do Enterprises Use and Contribute to Open Source Software][21] appeared first on [Linux Foundation][22]. - --------------------------------------------------------------------------------- - -via: https://www.linux.com/news/why-do-enterprises-use-and-contribute-to-open-source-software/ - -作者:[Dan Whiting][a] -选题:[lkxed][b] -译者:[aREversez](https://github.com/aREversez) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linuxfoundation.org/blog/why-do-enterprises-use-and-contribute-to-open-source-software/ -[b]: https://github.com/lkxed -[1]: https://openjsf.org/projects/ -[2]: https://letsencrypt.org/ -[3]: https://www.aswf.io/ -[4]: https://linuxfoundation.org/tools/open-source-in-entertainment/ -[5]: https://linuxfoundation.org/tools/carbon-footprint-of-nfts/ -[6]: https://www.lfenergy.org/ -[7]: https://linuxfoundation.org/tools/paving-the-way-to-battle-climate-change-how-two-utilities-embraced-open-source-to-speed-modernization-of-the-electric-grid/ -[8]: https://www.dronecode.org/projects/ -[9]: https://openssf.org/ -[10]: https://kubernetes.io/ -[11]: https://linuxfoundation.org/projects/ -[12]: https://linuxfoundation.org/tools/guide-to-enterprise-open-source/ -[13]: https://training.linuxfoundation.org/ -[14]: https://events.linuxfoundation.org/ -[15]: https://lfx.linuxfoundation.org/ -[16]: https://todogroup.org/ -[17]: https://linuxfoundation.org/resources/open-source-guides/ -[18]: https://www.openchainproject.org/resources -[19]: https://www.finops.org/introduction/what-is-finops/ -[20]: https://spdx.dev/ -[21]: https://www.linuxfoundation.org/blog/why-do-enterprises-use-and-contribute-to-open-source-software/ -[22]: https://www.linuxfoundation.org/ diff --git a/sources/talk/20220615 SBOM – SB Doesn-t Stand for Silver Bullet.md b/sources/talk/20220615 SBOM – SB Doesn-t Stand for Silver Bullet.md new file mode 100644 index 0000000000..e43bd0baf5 --- /dev/null +++ b/sources/talk/20220615 SBOM – SB Doesn-t Stand for Silver Bullet.md @@ -0,0 +1,120 @@ +[#]: subject: "SBOM – SB Doesn’t Stand for Silver Bullet" +[#]: via: "https://www.linux.com/news/sbom-sb-doesnt-stand-for-silver-bullet/" +[#]: author: "Dan Whiting https://www.linuxfoundation.org/blog/sbom-sb-doesnt-stand-for-silver-bullet/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +SBOM – SB Doesn’t Stand for Silver Bullet +====== +Software Bill of Materials (SBOMs) are like ingredient labels on food. They are critical to keep consumers safe and healthy, they are somewhat standardized, but it is a lot more exciting to grow or make the food rather than the label. + +### What is an SBOM? + +What is an SBOM? In short, it is a way to tell another party all of the software that is used in the stack that makes up an application. One benefit of having a SBOM is you know what is in there when a vulnerability comes up. You can easily determine if you are vulnerable and where. + +As modern software is built utilizing a base of software already written (no sense in recreating the wheel), it is important that all of the components don’t get lost in the shuffle. It isn’t readily apparent what a particular piece of software utilizes. So, if a vulnerability for Software A arises, you need to know, do I have that piece of software somewhere in my ecosystem, and, if so, where. Then you can remediate if you need to. + +I can’t take credit for the food label analogy used in my introduction. I heard it from [Allan Friedman][1], a Senior Advisor and Strategist at the [U.S. Cybersecurity and Infrastructure Security Agency][2] (CISA) and a key SBOM advocate, when he presented about SBOMs at the RSA Conference 2022 with [Kate Stewart][3], the VP of Dependable Embedded Systems here at the Linux Foundation. Allan made the point that food labels only provide information. The consumer needs to read and understand them and take appropriate action. For instance, if they are allergic to peanuts, they can look at an ingredient label and determine if they can safely eat the food. + +SBOMs are similar – they tell a person what software is used as an “ingredient” so someone can determine if they need to take action if a vulnerability arises. It isn’t a silver bullet, but it is a vital tool. Without SBOMs no one can track what component “ingredients” are in their software applications. + +### SBOMs and the Software Supply Chain + +Supply chains are impacting our lives more than just restricting availability of consumer goods. Software supply chains are immensely more complicated now as software is built with pre-existing components. This makes software better, more effective, more powerful, etc. But it also introduces risk as more and more parties touch a particular piece of software. Much like our world has become so interdependent, so has our software. + +Understanding what is in the supply chain for our software helps us effectively secure it. When a new risk emerges, we know what we need to do. + +### SBOMs and Software Security + +SBOMs are increasingly being recognized as an important pillar in any comprehensive software security plan. A global [survey conducted in 2021 Q3 by the Linux Foundation][4] found that 78% of organizations responding plan to use SBOMs in 2022. Additionally, the recently published [Open Source Software Security Mobilization Plan][5] recommends SBOMs be universal and the [U.S. Executive Order on Improving the Nation’s Cybersecurity][6] requires SBOMs be provided for software purchased by the U.S. government. And, as Allan points out in his talk, “We buy everything.” The E.O. actually lays out a nice summary of SBOMs and their benefits: + +The term “Software Bill of Materials” or “SBOM” means a formal record containing the details and supply chain relationships of various components used in building software. Software developers and vendors often create products by assembling existing open source and commercial software components. The SBOM enumerates these components in a product. It is analogous to a list of ingredients on food packaging. An SBOM is useful to those who develop or manufacture software, those who select or purchase software, and those who operate software. Developers often use available open source and third-party software components to create a product; an SBOM allows the builder to make sure those components are up to date and to respond quickly to new vulnerabilities. Buyers can use an SBOM to perform vulnerability or license analysis, both of which can be used to evaluate risk in a product. Those who operate software can use SBOMs to quickly and easily determine whether they are at potential risk of a newly discovered vulnerability. A widely used, machine-readable SBOM format allows for greater benefits through automation and tool integration. The SBOMs gain greater value when collectively stored in a repository that can be easily queried by other applications and systems. Understanding the supply chain of software, obtaining an SBOM, and using it to analyze known vulnerabilities are crucial in managing risk. + +Allan and Kate spent time in their talk going into the current state of SBOMs, challenges, benefits, tools available for creating and sharing SBOMs, what is a minimum SBOM, standards being developed, making them fully automated, and more. Look for some future LF Blog posts digging into these. + +But there are things you can do now. + +### What can you and your organization do now? + +Allan and Kate laid out several things you and your organization can do, starting now. Starting within your organization: + +Next week: Understand origins of software your organization is using + +* Commercial: can you ask for an SBOM? +* Open source: do you have an SBOM for the binary or sources you’re importing? + +Three months: Understand what SBOMs your customers will require + +Expectations: which standards, dependency depth, licensing info? + +Six months: Prototype and deploy + +Implement SBOM through using an OSS tool and/or starting a conversation with vendor + +And participate in ongoing discussions to determine best practices for the ecosystem and contribute to open source project any code developed to support SBOMs. + +### But there are also steps you can take as an individual:  + +Next week: Start playing with an open source SBOM tool and apply it to a repo + +Three months: Have an SBOM strategy that explicitly identifies tooling needs + +Six months: + +Begin SBOM implementation through using an OSS tool or starting a conversation with vendor +Participate in a plugfest and try to consume another’s SBOM + +And make sure to share any open source and commercial tools you find helpful and work with the tools to help harden them, test and report bugs, and push them to scale. + +### How can you shape the future of SBOMs? + +First, I want to highlight some upcoming opportunities they shared to help shape the future of SBOMs. CISA is running public Tooling & Implementation work stream discussions in July 2022. They are the same, but occur at different times to help accommodate more time zones: + +* July 13, 2022 – 3:00-4:30 PM ET +* July 21, 2022 – 9:30-11:00 AM ET + +If you want to participate, please email [SBOM@cisa.dhs.gov][7]. + +Additionally, there will be “[plugfests][8]” to be announced soon, and they suggested organizations already adopting SBOMs publish case studies and reference tooling workflows to help others. + +### Conclusion + +SBOMs are here to stay. If you aren’t already, get on the train now. It is pulling out of the station, but you still have an opportunity to help shape where it is going and how well the journey goes. + +Allan’s and Kate’s slides are available [here][9]. If you registered to attend the RSA Conference, you can now watch their full presentation on demand [here][10]. + +### The Software Package Data ExchangeⓇ (SPDXⓇ) + +The Linux Foundation hosts SPDX, which is an open standard for communicating software bill of material information, including components, licenses, copyrights, and security references. SPDX reduces redundant work by providing a common format for companies and communities to share important data, thereby streamlining and improving compliance. The SPDX specification is an international open standard (ISO/IEC 5962:2021). Learn more at [spdx.dev][11]. + +The post [SBOM – SB Doesn’t Stand for Silver Bullet][12] appeared first on [Linux Foundation][13]. + +-------------------------------------------------------------------------------- + +via: https://www.linux.com/news/sbom-sb-doesnt-stand-for-silver-bullet/ + +作者:[Dan Whiting][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.linuxfoundation.org/blog/sbom-sb-doesnt-stand-for-silver-bullet/ +[b]: https://github.com/lkxed +[1]: https://www.linkedin.com/in/allanafriedman/ +[2]: https://www.cisa.gov/ +[3]: https://www.linkedin.com/in/katestewartaustin/ +[4]: https://www.linuxfoundation.org/tools/the-state-of-software-bill-of-materials-sbom-and-cybersecurity-readiness/ +[5]: https://openssf.org/oss-security-mobilization-plan/ +[6]: https://openssf.org/blog/2021/05/14/how-lf-communities-enable-security-measures-required-by-the-us-executive-order-on-cybersecurity/ +[7]: https://www.linux.com/mailto:SBOM@cisa.dhs.gov +[8]: https://en.wikipedia.org/wiki/Plugtest +[9]: https://www.linuxfoundation.org/wp-content/uploads/Tooling-up-Getting-SBOMs-to-Scale_slides.pdf +[10]: https://www.rsaconference.com/usa/agenda/session/Tooling%20up%20Getting%20SBOMs%20to%20Scale +[11]: https://spdx.dev/ +[12]: https://www.linuxfoundation.org/blog/sbom-sb-doesnt-stand-for-silver-bullet/ +[13]: https://www.linuxfoundation.org/ diff --git a/sources/tech/20210104 Docker Compose- a nice way to set up a dev environment.md b/sources/tech/20210104 Docker Compose- a nice way to set up a dev environment.md index b2d719b02a..58277b591a 100644 --- a/sources/tech/20210104 Docker Compose- a nice way to set up a dev environment.md +++ b/sources/tech/20210104 Docker Compose- a nice way to set up a dev environment.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (lkxed) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) diff --git a/sources/tech/20210319 Create a countdown clock with a Raspberry Pi.md b/sources/tech/20210319 Create a countdown clock with a Raspberry Pi.md deleted file mode 100644 index 6b042c6d86..0000000000 --- a/sources/tech/20210319 Create a countdown clock with a Raspberry Pi.md +++ /dev/null @@ -1,393 +0,0 @@ -[#]: subject: (Create a countdown clock with a Raspberry Pi) -[#]: via: (https://opensource.com/article/21/3/raspberry-pi-countdown-clock) -[#]: author: (Chris Collins https://opensource.com/users/clcollins) -[#]: collector: (lujun9972) -[#]: translator: ( Donkey-Hao ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Create a countdown clock with a Raspberry Pi -====== -Start counting down the days to your next holiday with a Raspberry Pi -and an ePaper display. -![Alarm clocks with different time][1] - -For 2021, [Pi Day][2] has come and gone, leaving fond memories and [plenty of Raspberry Pi projects][3] to try out. The days after any holiday can be hard when returning to work after high spirits and plenty of fun, and Pi Day is no exception. As we look into the face of the Ides of March, we can long for the joys of the previous, well, day. But fear no more, dear Pi Day celebrant! For today, we begin the long countdown to the next Pi Day! - -OK, but seriously. I made a Pi Day countdown timer, and you can too! - -A while back, I purchased a [Raspberry Pi Zero W][4] and recently used it to [figure out why my WiFi was so bad][5]. I was also intrigued by the idea of getting an ePaper display for the little Zero W. I didn't have a good use for one, but, dang it, it looked like fun! I purchased a little 2.13" [Waveshare display][6], which fit perfectly on top of the Raspberry Pi Zero W. It's easy to install: Just slip the display down onto the Raspberry Pi's GIPO headers and you're good to go. - -I used [Raspberry Pi OS][7] for this project, and while it surely can be done with other operating systems, the `raspi-config` command, used below, is most easily available on Raspberry Pi OS. - -### Set up the Raspberry Pi and the ePaper display - -Setting up the Raspberry Pi to work with the ePaper display requires you to enable the Serial Peripheral Interface (SPI) in the Raspberry Pi software, install the BCM2835 C libraries (to access the GPIO functions for the Broadcom BCM 2835 chip on the Raspberry Pi), and install Python GPIO libraries to control the ePaper display. Finally, you need to install the Waveshare libraries for working with the 2.13" display using Python. - -Here's a step-by-step walkthrough of how to do these tasks. - -#### Enable SPI - -The easiest way to enable SPI is with the Raspberry Pi `raspi-config` command. The SPI bus allows serial data communication to be used with devices—in this case, the ePaper display: - - -``` -`$ sudo raspi-config` -``` - -From the menu that pops up, select **Interfacing Options** -> **SPI** -> **Yes** to enable the SPI interface, then reboot. - -#### Install BCM2835 libraries - -As mentioned above, the BCM2835 libraries are software for the Broadcom BCM2385 chip on the Raspberry Pi, which allows access to the GPIO pins and the ability to use them to control devices. - -As I'm writing this, the latest version of the Broadcom BCM 2835 libraries for the Raspberry Pi is v1.68. To install the libraries, you need to download the software tarball and build and install the software with `make`: - - -``` -# Download the BCM2853 libraries and extract them -$ curl -sSL -o - | tar -xzf - - -# Change directories into the extracted code -$ pushd bcm2835-1.68/ - -# Configure, build, check and install the BCM2853 libraries -$ sudo ./configure -$ sudo make check -$ sudo make install - -# Return to the original directory -$ popd -``` - -#### Install required Python libraries - -You also need some Python libraries to use Python to control the ePaper display, the `RPi.GPIO` pip package. You also need the `python3-pil` package for drawing shapes. Apparently, the PIL package is all but dead, but there is an alternative, [Pillow][8]. I have not tested Pillow for this project, but it may work: - - -``` -# Install the required Python libraries -$ sudo apt-get update -$ sudo apt-get install python3-pip python3-pil -$ sudo pip3 install RPi.GPIO -``` - -_Note: These instructions are for Python 3. You can find Python 2 instructions on Waveshare's website_ - -#### Download Waveshare examples and Python libraries - -Waveshare maintains a Git repository with Python and C libraries for working with its ePaper displays and some examples that show how to use them. For this countdown clock project, you will clone this repository and use the libraries for the 2.13" display: - - -``` -# Clone the WaveShare e-Paper git repository -$ git clone -``` - -If you're using a different display or a product from another company, you'll need to use the appropriate software for your display. - -Waveshare provides instructions for most of the above on its website: - - * [WaveShare ePaper setup instructions][9] - * [WaveShare ePaper libraries install instructions][10] - - - -#### Get a fun font (optional) - -You can display your timer however you want, but why not do it with a little style? Find a cool font to work with! - -There's a ton of [Open Font License][11] fonts available out there. I am particularly fond of Bangers. You've seen this if you've ever watched YouTube—it's used _all over_. It can be downloaded and dropped into your user's local shared fonts directory to make it available for any application, including this project: - - -``` -# The "Bangers" font is a Open Fonts License licensed font by Vernon Adams () from Google Fonts -$ mkdir -p ~/.local/share/fonts -$ curl -sSL -o fonts/Bangers-Regular.ttf -``` - -### Create a Pi Day countdown timer - -Now that you have installed the software to work with the ePaper display and a fun font to use, you can build something cool with it: a timer to count down to the next Pi Day! - -If you want, you can just grab the [countdown.py][12] Python file from this project's [GitHub repo][13] and skip to the end of this article. - -For the curious, I'll break down that file, section by section. - -#### Import some libraries - - -``` -#!/usr/bin/python3 -# -*- coding:utf-8 -*- -import logging -import os -import sys -import time - -from datetime import datetime -from pathlib import Path -from PIL import Image,ImageDraw,ImageFont - -logging.basicConfig(level=logging.INFO) - -basedir = Path(__file__).parent -waveshare_base = basedir.joinpath('e-Paper', 'RaspberryPi_JetsonNano', 'python') -libdir = waveshare_base.joinpath('lib') -``` - -At the start, the Python script imports some standard libraries used later in the script. You also need to add `Image`, `ImageDraw`, and `ImageFont` from the PIL package, which you'll use to draw some simple geometric shapes. Finally, set some variables for the local `lib` directory that contains the Waveshare Python libraries for working with the 2.13" display, and which you can use later to load the library from the local directory. - -#### Font size helper function - -The next part of the script has a helper function for setting the font size for your chosen font: Bangers-Regular.ttf. It takes an integer for the font size and returns an ImageFont object you can use with the display: - - -``` -def set_font_size(font_size): -    logging.info("Loading font...") -    return ImageFont.truetype(f"{basedir.joinpath('Bangers-Regular.ttf').resolve()}", font_size) -``` - -#### Countdown logic - -Next is a small function that calculates the meat of this project: how long it is until the next Pi Day. If it were, say, January, it would be relatively straightforward to count how many days are left, but you also need to consider whether Pi Day has already passed for the year (sadface), and if so, count how very, very many days are ahead until you can celebrate again: - - -``` -def countdown(now): -    piday = datetime(now.year, 3, 14) - -    # Add a year if we're past PiDay -    if piday < now: -        piday = datetime((now.year + 1), 3, 14) - -    days = (piday - now).days - -    logging.info(f"Days till piday: {days}") -    return day -``` - -#### The main function - -Finally, you get to the main function, which initializes the display and begins writing data to it. In this case, you'll write a welcome message and then begin the countdown to the next Pi Day. But first, you need to load the Waveshare library: - - -``` -def main(): - -    if os.path.exists(libdir): -        sys.path.append(f"{libdir}") -        from waveshare_epd import epd2in13_V2 -    else: -        logging.fatal(f"not found: {libdir}") -        sys.exit(1) -``` - -The snippet above checks to make sure the library has been downloaded to a directory alongside the countdown script, and then it loads the `epd2in13_V2` library. If you're using a different display, you will need to use a different library. You can also write your own if you are so inclined. I found it kind of interesting to read the Python code that Waveshare provides with the display. It's considerably less complicated than I would have imagined it to be, if somewhat tedious. - -The next bit of code creates an EPD (ePaper Display) object to interact with the display and initializes the hardware: - - -``` -    logging.info("Starting...") -    try: -        # Create an a display object -        epd = epd2in13_V2.EPD() - -        # Initialize the displace, and make sure it's clear -        # ePaper keeps it's state unless updated! -        logging.info("Initialize and clear...") -        epd.init(epd.FULL_UPDATE) -        epd.Clear(0xFF) -``` - -An interesting aside about ePaper: It uses power only when it changes a pixel from white to black or vice-versa. This means when the power is removed from the device or the application stops for whatever reason, whatever was on the screen remains. That's great from a power-consumption perspective, but it also means you need to clear the display when starting up, or your script will just write over whatever is already on the screen. Hence, `epd.Clear(0xFF)` is used to clear the display when the script starts. - -Next, create a "canvas" where you will draw the rest of your display output: - - -``` -    # Create an image object -    # NOTE: The "epd.heigh" is the LONG side of the screen -    # NOTE: The "epd.width" is the SHORT side of the screen -    # Counter-intuitive... -    logging.info(f"Creating canvas - height: {epd.height}, width: {epd.width}") -    image = Image.new('1', (epd.height, epd.width), 255)  # 255: clear the frame -    draw = ImageDraw.Draw(image) -``` - -This matches the width and height of the display—but it is somewhat counterintuitive, in that the short side of the display is the width. I think of the long side as the width, so this is just something to note. Note that the `epd.height` and `epd.width` are set by the Waveshare library to correspond to the device you're using. - -#### Welcome message - -Next, you'll start to draw something. This involves setting data on the "canvas" object you created above. This doesn't draw it to the ePaper display yet—you're just building the image you want right now. Create a little welcome message celebrating Pi Day, with an image of a piece of pie, drawn by yours truly just for this project: - -![drawing of a piece of pie][14] - -(Chris Collins, [CC BY-SA 4.0][15]) - -Cute, huh? - - -``` -    logging.info("Set text text...") -    bangers64 = set_font_size(64) -    draw.text((0, 30), 'PI DAY!', font = bangers64, fill = 0) - -    logging.info("Set BMP...") -    bmp = Image.open(basedir.joinpath("img", "pie.bmp")) -    image.paste(bmp, (150,2)) -``` - -Finally, _finally_, you get to display the canvas you drew, and it's a little bit anti-climactic: - - -``` -    logging.info("Display text and BMP") -    epd.display(epd.getbuffer(image)) -``` - -That bit above updates the display to show the image you drew. - -Next, prepare another image to display your countdown timer. - -#### Pi Day countdown timer - -First, create a new image object that you can use to draw the display. Also, set some new font sizes to use for the image: - - -``` -    logging.info("Pi Date countdown; press CTRL-C to exit") -    piday_image = Image.new('1', (epd.height, epd.width), 255) -    piday_draw = ImageDraw.Draw(piday_image) - -    # Set some more fonts -    bangers36 = set_font_size(36) -    bangers64 = set_font_size(64) -``` - -To display a ticker like a countdown, it's more efficient to update part of the image, changing the display for only what has changed in the data you want to draw. The next bit of code prepares the display to function this way: - - -``` -    # Prep for updating display -    epd.displayPartBaseImage(epd.getbuffer(piday_image)) -    epd.init(epd.PART_UPDATE) -``` - -Finally, you get to the timer bit, starting an infinite loop that checks how long it is until the next Pi Day and displays the countdown on the ePaper display. If it actually _is_ Pi Day, you can handle that with a little celebration message: - - -``` -    while (True): -        days = countdown(datetime.now()) -        unit = get_days_unit(days) - -        # Clear the bottom half of the screen by drawing a rectangle filld with white -        piday_draw.rectangle((0, 50, 250, 122), fill = 255) - -        # Draw the Header -        piday_draw.text((10,10), "Days till Pi-day:", font = bangers36, fill = 0) - -        if days == 0: -            # Draw the Pi Day celebration text! -            piday_draw.text((0, 50), f"It's Pi Day!", font = bangers64, fill = 0) -        else: -            # Draw how many days until Pi Day -            piday_draw.text((70, 50), f"{str(days)} {unit}", font = bangers64, fill = 0) - -        # Render the screen -        epd.displayPartial(epd.getbuffer(piday_image)) -        time.sleep(5) -``` - -The last bit of the script does some error handling, including some code to catch keyboard interrupts so that you can stop the infinite loop with **Ctrl**+**C** and a small function to print "day" or "days" depending on whether or not the output should be singular (for that one, single day each year when it's appropriate): - - -``` -    except IOError as e: -        logging.info(e) - -    except KeyboardInterrupt: -        logging.info("Exiting...") -        epd.init(epd.FULL_UPDATE) -        epd.Clear(0xFF) -        time.sleep(1) -        epd2in13_V2.epdconfig.module_exit() -        exit() - -def get_days_unit(count): -    if count == 1: -        return "day" - -    return "days" - -if __name__ == "__main__": -    main() -``` - -And there you have it! A script to count down and display how many days are left until Pi Day! Here's an action shot on my Raspberry Pi (sped up by 86,400; I don't have nearly enough disk space to save a day-long video): - -![Pi Day Countdown Timer In Action][16] - -(Chris Collins, [CC BY-SA 4.0][15]) - -#### Install the systemd service (optional) - -If you'd like the countdown display to run whenever the system is turned on and without you having to be logged in and run the script, you can install the optional systemd unit as a [systemd user service][17]). - -Copy the [piday.service][18] file on GitHub to `${HOME}/.config/systemd/user`, first creating the directory if it doesn't exist. Then you can enable the service and start it: - - -``` -$ mkdir -p ~/.config/systemd/user -$ cp piday.service ~/.config/systemd/user -$ systemctl --user enable piday.service -$ systemctl --user start piday.service - -# Enable lingering, to create a user session at boot -# and allow services to run after logout -$ loginctl enable-linger $USER -``` - -The script will output to the systemd journal, and the output can be viewed with the `journalctl` command. - -### It's beginning to look a lot like Pi Day! - -And _there_ you have it! A Pi Day countdown timer, displayed on an ePaper display using a Raspberry Pi Zero W, and starting on system boot with a systemd unit file! Now there are just 350-something days until we can once again come together and celebrate the fantastic device that is the Raspberry Pi. And we can see exactly how many days at a glance with our tiny project. - -But in truth, anyone can hold Pi Day in their hearts year-round, so enjoy creating some fun and educational projects with your own Raspberry Pi! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/3/raspberry-pi-countdown-clock - -作者:[Chris Collins][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/clcollins -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/clocks_time.png?itok=_ID09GDk (Alarm clocks with different time) -[2]: https://en.wikipedia.org/wiki/Pi_Day -[3]: https://opensource.com/tags/raspberry-pi -[4]: https://www.raspberrypi.org/products/raspberry-pi-zero-w/ -[5]: https://opensource.com/article/21/3/troubleshoot-wifi-go-raspberry-pi -[6]: https://www.waveshare.com/product/displays/e-paper.htm -[7]: https://www.raspberrypi.org/software/operating-systems/ -[8]: https://pypi.org/project/Pillow/ -[9]: https://www.waveshare.com/wiki/2.13inch_e-Paper_HAT -[10]: https://www.waveshare.com/wiki/Libraries_Installation_for_RPi -[11]: https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL -[12]: https://github.com/clcollins/epaper-pi-ex/blob/main/countdown.py -[13]: https://github.com/clcollins/epaper-pi-ex/ -[14]: https://opensource.com/sites/default/files/uploads/pie.png (drawing of a piece of pie) -[15]: https://creativecommons.org/licenses/by-sa/4.0/ -[16]: https://opensource.com/sites/default/files/uploads/piday_countdown.gif (Pi Day Countdown Timer In Action) -[17]: https://wiki.archlinux.org/index.php/systemd/User -[18]: https://github.com/clcollins/epaper-pi-ex/blob/main/piday.service diff --git a/sources/tech/20210503 Learn the Lisp programming language in 2021.md b/sources/tech/20210503 Learn the Lisp programming language in 2021.md deleted file mode 100644 index a1de95ead8..0000000000 --- a/sources/tech/20210503 Learn the Lisp programming language in 2021.md +++ /dev/null @@ -1,305 +0,0 @@ -[#]: subject: (Learn the Lisp programming language in 2021) -[#]: via: (https://opensource.com/article/21/5/learn-lisp) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Learn the Lisp programming language in 2021 -====== -A lot of Lisp code lurks inside big codebases, so it's smart to get -familiar with the language. -![Woman sitting in front of her laptop][1] - -Lisp was invented in 1958, which makes it the second-oldest computer programming language. It has spawned several modern derivatives, including Common Lisp, Emacs Lisp (Elisp), Clojure, Racket, Scheme, Fennel, and GNU Guile. - -People who love thinking about the design of programming languages often love Lisp because of how its syntax and data share the same structure: Lisp code is essentially a list of lists, and its name is an acronym for _LISt Processing_. People who love thinking about the aesthetics of programming languages often hate Lisp because of its frequent use of parentheses for scoping; in fact, it's a common joke that Lisp stands for _Lots of Irritating Superfluous Parentheses_. - -Whether you love or hate its design philosophies, Lisp is an interesting glimpse at the past and, thanks to Clojure and Guile, into the future. You might be surprised how much Lisp code there is lurking within big codebases in any given industry, so it's a good idea to have at least a passing familiarity with the language. - -### Install Lisp - -There are many implementations of Lisp. Popular open source versions include [SBCL][2] and [GNU Common Lisp][3] (GCL). You can install either of these with your distribution's package manager. - -On Fedora Linux: - - -``` -`$ sudo dnf install gcl` -``` - -On Debian: - - -``` -`$ sudo apt install gcl` -``` - -For macOS, you can use [MacPorts][4] or [Homebrew][5]: - - -``` -`$ sudo port install gcl` -``` - -For Windows, download a binary from [gnu.org/software/gcl][6]. - -For this article, I'm using GCL and its `clisp` command, but most of the principles apply to any Lisp. - -### List processing - -The basic unit of Lisp source code is an _expression_, which is written as a list. For instance, this is a list of an operator (`+`) and two integers (`1` and `2`): - - -``` -`(+ 1 2)` -``` - -It's also a Lisp expression, using a symbol (`+`) that evaluates to a function (addition) and two arguments (`1` and `2`). You can run this expression and others in an interactive Common Lisp environment called REPL (read-eval-print loop). If you're familiar with Python's IDLE, Lisp's REPL should feel somewhat familiar to you. - -To launch a REPL, launch Common Lisp: - - -``` -$ clisp -[1]> -``` - -At the REPL prompt, type a few expressions: - - -``` -[1]> (+ 1 2) -3 -[2]> (- 1 2) --1 -[3]> (- 2 1) -1 -[4]> (+ 2 3 4) -9 -``` - -### Functions - -Now that you know the basic structure of a Lisp expression, you can utilize Lisp functions in useful ways. The `print` function takes any argument you provide and displays it on your terminal, while the `pprint` function "pretty" prints it. There are other variations on the print function, but `pprint` is nice in REPL: - - -``` -[1]> (pprint "hello world") - -"hello world" - -[2]> -``` - -You can create your own functions with `defun`. The `defun` function requires a name for your function and any parameters you want your function to accept: - - -``` -[1]> (defun myprinter (s) (pprint s)) -MYPRINTER -[2]> (myprinter "hello world") - -"hello world" - -[3]> -``` - -### Variables - -You can create variables in Lisp with `setf`: - - -``` -[1]> (setf foo "hello world") -"hello world" -[2]> (pprint foo) - -"hello world" - -[3]> -``` - -You can nest expressions within expressions in a kind of pipeline. For instance, you can pretty print the contents of your variable after invoking the `string-upcase` function to convert its characters to uppercase: - - -``` -[3]> (pprint (string-upcase foo)) - -"HELLO WORLD" - -[4]> -``` - -Lisp is dynamically typed in the sense that you don't have to declare variable types when setting them. Lisp treats integers as integers by default: - - -``` -[1]> (setf foo 2) -[2]> (setf bar 3) -[3]> (+ foo bar) -5 -``` - -If you intend for an integer to be interpreted as a string, you can quote it: - - -``` -[4]> (setf foo "2")                                                                                                                       -"2"                                                                                                                                       -[5]> (setf bar "3")                                                                                                                       -"3" -[6]> (+ foo bar) - -*** - +: "2" is not a number -The following restarts are available: -USE-VALUE      :R1      Input a value to be used instead. -ABORT          :R2      Abort main loop -Break 1 [7]> -``` - -In this sample REPL session, both `foo` and `bar` are set to quoted numbers, so Lisp interprets them as strings. Math operators can't be used on strings, so REPL drops into a debugger mode. To get out of the debugger, press **Ctrl+D** on your keyboard. - -You can do some introspection on objects using the `typep` function, which tests for a specific data type. The tokens `T` and `NIL` represent _True_ and _False_, respectively. - - -``` -[4]> (typep foo 'string) -NIL -[5]> (typep foo 'integer) -T -``` - -The single quote (`'`) before `string` and `integer` prevents Lisp from (incorrectly) evaluating those keywords as variables: - - -``` -[6]> (typep foo string) -*** - SYSTEM::READ-EVAL-PRINT: variable STRING has no value -[...] -``` - -It's a shorthand way to protect the terms, normally done with the `quote` function: - - -``` -[7]> (typep foo (quote string)) -NIL -[5]> (typep foo (quote integer)) -T -``` - -### Lists - -Unsurprisingly, you can also create lists in Lisp: - - -``` -[1]> (setf foo (list "hello" "world")) -("hello" "world") -``` - -Lists can be indexed with the `nth` function: - - -``` -[2]> (nth 0 foo) -"hello" -[3]> (pprint (string-capitalize (nth 1 foo))) - -"World" -``` - -### Exiting REPL - -To end a REPL session, press **Ctrl+D** on your keyboard, or use the `quit` keyword in Lisp: - - -``` -[99]> (quit) -$ -``` - -### Scripting - -Lisp can be compiled or used as an interpreted scripting language. The latter is probably the easiest option when you're starting, especially if you're already familiar with Python or [shell scripting][7]. - -Here's a simple dice roller script written in GNU Common Lisp: - - -``` -#!/usr/bin/clisp - -(defun roller (num)   -  (pprint (random (parse-integer (nth 0 num)))) -) - -(setf userput *args*) -(setf *random-state* (make-random-state t)) -(roller userput) -``` - -The first line tells your [POSIX][8] terminal what executable to use to run the script. - -The `roller` function, created with `defun`, uses the `random` function to print a pseudo-random number up to, and not including, the zeroth item of the `num` list. The `num` list hasn't been created yet in the script, but the function doesn't get executed until it's called. - -The next line assigns any argument provided to the script at launch time to a variable called `userput`. The `userput` variable is a list, and it's what becomes `num` once it's passed to the `roller` function. - -The penultimate line of the script starts a _random seed_. This provides Lisp with enough entropy to generate a mostly random number. - -The final line invokes the custom `roller` function, providing the `userput` list as its sole argument. - -Save the file as `dice.lisp` and mark it executable: - - -``` -`$ chmod +x dice.lisp` -``` - -Finally, try running it, providing it with a maximum number from which to choose its random number: - - -``` -$ ./dice.lisp 21 - -13 -$ ./dice.lisp 21 - -7 -$ ./dice.lisp 21 - -20 -``` - -Not bad! - -### Learn Lisp - -Whether you can imagine using Lisp as a utilitarian language for personal scripts, to advance your career, or just as a fun experiment, you can see some particularly inventive uses at the annual [Lisp Game Jam][9] (most submissions are open source, so you can view the code to learn from what you play). - -Lisp is a fun and unique language with an ever-growing developer base and enough historic and emerging dialects to keep programmers from all disciplines happy. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/5/learn-lisp - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_women_computing_4.png?itok=VGZO8CxT (Woman sitting in front of her laptop) -[2]: http://sbcl.org -[3]: https://www.gnu.org/software/gcl/ -[4]: https://opensource.com/article/20/11/macports -[5]: https://opensource.com/article/20/6/homebrew-linux -[6]: http://mirror.lagoon.nc/gnu/gcl/binaries/stable -[7]: https://opensource.com/article/20/4/bash-programming-guide -[8]: https://opensource.com/article/19/7/what-posix-richard-stallman-explains -[9]: https://itch.io/jam/spring-lisp-game-jam-2021 diff --git a/sources/tech/20210722 Write your first JavaScript code.md b/sources/tech/20210722 Write your first JavaScript code.md deleted file mode 100644 index d02ca214cd..0000000000 --- a/sources/tech/20210722 Write your first JavaScript code.md +++ /dev/null @@ -1,204 +0,0 @@ -[#]: subject: (Write your first JavaScript code) -[#]: via: (https://opensource.com/article/21/7/javascript-cheat-sheet) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Write your first JavaScript code -====== -JavaScript was created for the web, but it can do so much more. Learn -the basics, then download our cheat sheet so you always have the details -at hand. -![Code with javascript on white background][1] - -JavaScript is a programming language full of pleasant surprises. Many people first encounter JavaScript as a language for the web. There's a JavaScript engine in all the major browsers, there are popular frameworks such as JQuery, Cash, and Bootstrap to help make web design easier, and there are even programming environments written in JavaScript. It seems to be everywhere on the internet, but it turns out that it's also a useful language for projects like [Electron][2], an open source toolkit for building cross-platform desktop apps with JavaScript. - -JavaScript is a surprisingly multipurpose language with a wide assortment of libraries for much more than just making websites. Learning the basics of the language is easy, and it's a gateway to building whatever you imagine. - -### Install JavaScript - -As you progress with JavaScript, you may find yourself wanting advanced JavaScript libraries and runtimes. When you're just starting, though, you don't have to install JavaScript at all. All major web browsers include a JavaScript engine to run the code. You can write JavaScript using your favorite text editor, load it into your web browser, and see what your code does. - -### Get started with JavaScript - -To write your first JavaScript code, open your favorite text editor, such as [Notepad++][3], [Atom][4], or [VSCode][5]. Because it was developed for the web, JavaScript works well with HTML, so first, just try some basic HTML: - - -``` -<[html][6]> -  <[head][7]> -    <[title][8]>JS</[title][8]> -  </[head][7]> -  <[body][9]> -    <[p][10] id="example">Nothing here.</[p][10]> -  </[body][9]> -</[html][6]> -``` - -Save the file, and then open it in a web browser. - -![HTML displayed in browser][11] - -(Seth Kenlon, [CC BY-SA 4.0][12]) - -To add JavaScript to this simple HTML page, you can either create a JavaScript file and refer to it in the page's `head` or just embed your JavaScript code in the HTML using the ` + +  + +``` + +在浏览器中重新加载页面。 + +![在浏览器中显示带有 JavaScript 的 HTML][7] + +如你所见,`

` 标签仍然包含字符串 “Nothing here”,但是当它被渲染时,JavaScript 会改变它,使其包含 “Hello world”。是的,JavaScript 具有重建​​(或只是帮助构建)网页的能力。 + +这个简单脚本中的 JavaScript 做了两件事。首先,它创建一个名为 `myvariable` 的变量,并将字符串 “Hello world!” 放置其中。然后,它会在当前文档(浏览器呈现的网页)中搜索 ID 为 “example” 的所有 HTML 元素。当它找到 `example` 时,它使用了 `innerHTML` 函数将 HTML 元素的内容替换为 `myvariable` 的内容。 + +当然,我们也可以不用自定义变量。因为,使用动态创建的内容来填充 HTML 元素也是容易的。例如,你可以使用当前时间戳来填充它: + +``` + +  +    JS +  +  +   

Date and time appears here.

+ +    +    +  + +``` + +重新加载页面,你就可以看到在呈现页面时生成的时间戳。再重新加载几次,你可以观察到秒数会不断增加。 + +### JavaScript 语法 + +在编程中,语法syntax 指的是如何编写句子(或“行”)的规则。在 JavaScript 中,每行代码必须以分号(`;`)结尾,以便运行代码的 JavaScript 引擎知道何时停止阅读。(LCTT 译注:从实用角度看,此处的“必须”其实是不正确的,大多数 JS 引擎都支持不加分号。Vue.js 的作者尤雨溪认为“没有应该不应该,只有你自己喜欢不喜欢”,他同时表示,“Vue.js 的代码全部不带分号”。详情可以查看他在知乎上对于此问题的 [回答][10]。) + +单词(或 “字符串”strings)必须用引号(`"`)括起来,而数字(或 “整数”integers)则不用。 + +几乎所有其他东西都是 JavaScript 语言的约定,例如变量、数组、条件语句、对象、函数等等。 + +### 在 JavaScript 中创建变量 + +变量是数据的容器。你可以将变量视为一个盒子,你在其中放置数据,以便与程序的其他部分共享它。要在 JavaScript 中创建变量,你可以选用关键字 `let` 和 `var` 中的一个,请根据你打算如何使用变量来选择:`var` 关键字用于创建一个供整个程序使用的变量,而 `let` 只为特定目的创建变量,通常在函数或循环的内部使用。(LCTT 译注:还有 `const` 关键字,它用于创建一个常量。) + +JavaScript 内置的 `typeof` 函数可以帮助你识别变量包含的数据的类型。使用第一个示例,你可以修改显示文本,来显示 `myvariable` 包含的数据的类型: + +``` + +let myvariable = "Hello world!"; +document.getElementById("example").innerHTML = typeof(myvariable); + +``` + +接着,你就会发现 Web 浏览器中显示出 “string” 字样,因为该变量包含的数据是 “Hello world!”。在 `myvariable` 中存储不同类型的数据(例如整数),浏览器就会把不同的数据类型打印到示例网页上。尝试将 `myvariable` 的内容更改为你喜欢的数字,然后重新加载页面。 + +### 在 JavaScript 中创建函数 + +编程中的函数是独立的数据处理器。正是它们使编程得以 *模块化*。因为函数的存在,程序员可以编写通用库,例如​​,调整图像大小或统计时间花费的库,以供其他和你一样的程序员在他们的代码中使用。 + +要创建一个函数,你可以为函数提供一个自定义名称,后面跟着用大括号括起来的、任意数量的代码。 + +下面是一个简单的网页,其中包含了一个剪裁过的图像,还有一个分析图像并返回真实图像尺寸的按钮。在这个示例代码中,` +    +    +   
+      +   
+    +    +    +  + +``` + +保存这个文件,并将其加载到 Web 浏览器中以尝试这段代码。 + +![自定义的 get_size 函数返回了图像尺寸][8] + +### 使用 JavaScript 的跨平台应用程序 + +你可以从代码示例中看到,JavaScript 和 HTML 紧密协作,从而创建了有凝聚力的用户体验。这是 JavaScript 的一大优势。当你使用 JavaScript 编写代码时,你继承了现代计算中最常见的用户界面之一,而它与平台无关,那就是 Web 浏览器。你的代码本质上是跨平台的,因此你的应用程序,无论是简单的图像大小分析器还是复杂的图像编辑器、视频游戏,或者你梦想的任何其他东西,都可以被所有人使用,无论是通过 Web 浏览器,还是桌面(如果你同时提供了一个 Electron 应用)。 + +学习 JavaScript 既简单又有趣。网络上有很多网站提供了相关教程,还有超过一百万个 JavaScript 库可帮助你与设备、外围设备、物联网、服务器、文件系统等进行交互。在你学习的过程中,请将我们的 [JavaScript 备忘单][9] 放在身边,以便记住语法和结构的细节。 + +正文中的配图来自:Seth Kenlon,CC BY-SA 4.0 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/21/7/javascript-cheat-sheet + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[lkxed](https://github.com/lkxed) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/lead-images/code2.png +[2]: https://www.electronjs.org/ +[3]: https://opensource.com/article/16/12/notepad-text-editor +[4]: https://opensource.com/article/20/12/atom +[5]: https://opensource.com/article/20/6/open-source-alternatives-vs-code +[6]: https://opensource.com/sites/default/files/pictures/plain-html.jpg +[7]: https://opensource.com/sites/default/files/uploads/html-javascript.jpg +[8]: https://opensource.com/sites/default/files/uploads/get-size.jpg +[9]: https://opensource.com/downloads/javascript-cheat-sheet +[10]: https://www.zhihu.com/question/20298345/answer/49551142 diff --git a/translated/tech/20210725 How to Recover Arch Linux Install via chroot.md b/translated/tech/20210725 How to Recover Arch Linux Install via chroot.md deleted file mode 100644 index 09b51220ff..0000000000 --- a/translated/tech/20210725 How to Recover Arch Linux Install via chroot.md +++ /dev/null @@ -1,120 +0,0 @@ -[#]: subject: "How to Recover Arch Linux Install via chroot" -[#]: via: "https://www.debugpoint.com/2021/07/recover-arch-linux/" -[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" -[#]: collector: "lkxed" -[#]: translator: "geekpi" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -如何通过 chroot 恢复 Arch Linux 的安装 -====== -这个快速指南解释了恢复 Arch Linux 安装的一些步骤。 - -作为一个滚动发布的版本,[Arch Linux][1] 中有时会出现一些问题。不是因为你自己的行为,而是数以百计的其他原因,如新内核与你的硬件,或软件的兼容性。但是,Arch Linux 仍然是更好的,它提供了最新的软件包和应用。 - -但有时,它也会给你带来麻烦,你最终只能看到一个闪烁的光标,其他什么都没有。 - -所以,在这种情况下,与其重新格式化或重新安装,不如在放弃希望之前尝试恢复安装和数据。本指南概述了这个方向的一些步骤。 - -### 恢复 Arch Linux 安装 - -* 第一步是用 Arch Linux 创建一个可启动的 Live USB。从这个链接下载 .ISO 并创建一个可启动的 .ISO。你可以查看这个指南[如何使用 Etcher 创建可启动的 .ISO][2]。记住这一步需要另一个稳定的工作系统,因为你目前的系统不能使用。 - -[下载 arch linux][3] - -* 你需要知道你的 Arch Linux 安装在哪个分区上。这是一个非常重要的步骤。如果你不知道,你可以用 GParted 来查找。或者在你的 Grub 菜单中查看,或者你可以运行下面的命令来了解。这将列出你所有的磁盘分区及其大小、标签。 - -``` -sudo lsblk -o name,mountpoint,label,size,uuid -``` - -* 完成后,插入 U 盘并从它启动。你应该在 Live 介质中看到 Arch Linux 的提示。 - -* 现在,用下面的方法挂载到 Arch Linux 分区。把 /dev/sda3 改成你各自的分区。 - -``` -/dev/sda3 -``` - -``` -mount /dev/sda3 /mntarch-chroot /mnt -``` - -* arch-chroot 命令将在终端挂载你的 Arch Linux 分区,所以用你的 Arch 凭证登录。现在,在这个阶段,根据你的需要,你有以下选择。 - -* 你可以通过 /home 文件夹来备份你的数据。如果,故障排除器无效的话。你可以把文件复制到外部 USB 或其他分区。 - -* 核查日志文件,特别是 pacman 日志。因为,不稳定的系统可能是由升级某些软件包引起的,如图形驱动或任何其他驱动。根据日志,如果你想降级任何特定的软件包,你可能要降级。 - -* 你可以使用下面的命令来查看 pacman 日志文件的最后 200 行,以找出任何失败的项目或依赖性删除。 - -``` -tail -n 200 /var/log/pacman.log | less -``` - -* 上面的命令给了你从 pacman.log 文件末尾的 200 行来验证。现在,仔细检查哪些软件包在你成功启动后被更新了。 - -* 并记下软件包的名称和版本。你可以尝试逐一降级软件包,或者如果你认为某个特定的软件包产生了问题。使用 pacman 命令的 -U 开关来降级。 - -``` -pacman -U -``` - -* 如果有的话,你可以在降级后运行以下命令来启动你的 Arch 系统。 - -``` -exec /sbin/init -``` - -* 检查你的显示管理器的状态,是否有任何错误。有时,显示管理器会产生一个问题,无法与 X 服务器通信。例如,如果你正在使用 lightdm,那么你可以通过以下方式检查它的状态。 - -``` -systemctl status lightdm -``` - -* 或者,可以通过下面的命令启动它,并检查什么是错误。 - -``` -lightdm --test-mode --debug -``` - -、* 下面是一个 lightdm 失败的例子,它导致了一个不稳定的 Arch 系统。 - -![lightdm - test mode][4] - -* 或者通过使用 startx 启动 X 服务器来检查。 - -``` -startx -``` - -* 根据我的经验,如果你在上述命令中看到错误,尝试安装另一个显示管理器,如 sddm 并启用它。它可能会消除这个错误。 - -* 根据你的系统状态,尝试上述步骤,并进行故障排除。对于特定于显示管理器 lightdm 的错误,我们有一个[指南][5],你可能想查看一下。 - -* 如果你使用的是 sddm,那么请查看[这些故障排除步骤][6]是否可以。 - -### 结束语 - -每个安装都是不同的。上述步骤可能对你不起作用。但它值得一试,根据经验,它是有效的。如果它起作用,那么,对你来说是好事。无论哪种方式,请在下面的评论区中告诉我,它结果如何。 - --------------------------------------------------------------------------------- - -via: https://www.debugpoint.com/2021/07/recover-arch-linux/ - -作者:[Arindam][a] -选题:[lkxed][b] -译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.debugpoint.com/author/admin1/ -[b]: https://github.com/lkxed -[1]: https://www.debugpoint.com/tag/arch-linux -[2]: https://www.debugpoint.com/2021/01/etcher-bootable-usb-linux/ -[3]: https://archlinux.org/download/ -[4]: https://www.debugpoint.com/wp-content/uploads/2021/03/lightdm-test-mode.jpg -[5]: https://www.debugpoint.com/2021/03/failed-to-start-lightdm/ -[6]: https://wiki.archlinux.org/title/SDDM#Troubleshooting diff --git a/translated/tech/20220518 How To Boot Into Rescue Mode Or Emergency Mode In Ubuntu 22.04 - 20.04 - 18.04.md b/translated/tech/20220518 How To Boot Into Rescue Mode Or Emergency Mode In Ubuntu 22.04 - 20.04 - 18.04.md deleted file mode 100644 index ea5639d149..0000000000 --- a/translated/tech/20220518 How To Boot Into Rescue Mode Or Emergency Mode In Ubuntu 22.04 - 20.04 - 18.04.md +++ /dev/null @@ -1,273 +0,0 @@ -[#]: subject: "How To Boot Into Rescue Mode Or Emergency Mode In Ubuntu 22.04 / 20.04 / 18.04" -[#]: via: "https://ostechnix.com/how-to-boot-into-rescue-mode-or-emergency-mode-in-ubuntu-18-04/" -[#]: author: "sk https://ostechnix.com/author/sk/" -[#]: collector: "lkxed" -[#]: translator: "robsean" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - - 如何在 Ubuntu 22.04 / 20.04 / 18.04 中启动到 救援Rescue 模式 或 紧急Emergency 模式 -====== -这篇教程将介绍如何在 Ubuntu 22.04、20.04 和 18.04 LTS 版本中启动到 救援Rescue 模式 或 紧急Emergency 模式。 - -你可能已经知道,在 Linux 发行版中 **运行等级Runlevels** 已经被 **系统目标Systemd targets** 所替代,例如, RHEL 7 、RHEL 8 、Ubuntu 16.04 LTS 及其更新的版本。更多关于 运行等级Runlevels系统目标Systemd targets 的信息,参考 [这篇指南][1] 。 - -这篇指南是针对 Ubuntu 编写的,但是,下面所给的步骤应该也适用于大多数使用 **Systemd** 作为默认服务管理器的 Linux 发行版。 - -在进入主题前,让我们简单的理解:什么是 救援rescue 模式 和 紧急Emergency 模式,以及这两种模式的目的是什么。 - -### 什么是 救援rescue 模式? - -在 Linux 发行版中,救援rescue 模式 等效于 单用户single user 模式,它使用 **SysV** 作为默认的服务器管理器。在 救援rescue 模式 中,将挂载所有的本地文件系统,将仅启动一些重要的服务。但是,不会启动一般的服务 (例如,网络服务)。 - -救援rescue 模式 在不能正常启动系统的情况下是很有用的。此外,我们可以在 救援rescue 模式 下执行一些重要的 救援rescue 操作,例如,[重新设置 root 密码][2] 。 - -### 什么是 紧急Emergency 模式? - -与 救援rescue 模式相比, 在 紧急Emergency 模式中,不会启动任何的东西。不会启动服务,不会挂载挂载点,不会建立套接字,什么都不会启动。你将所拥有的只是一个 **原始的 shell** 。紧急Emergency 模式适用于调试目的。 - -首先,我们将看到如何在 Ubuntu 22.04 和 20.04 LTS 发行版中启动到 救援Rescue 模式 或 紧急Emergency 模式。在 Ubuntu 22.04 和 20.04 LTS 中进入 救援rescue 模式 的过程是完全相同的! - -### 在 Ubuntu 22.04 / 20.04 LTS 中启动到 救援rescue 模式 - -我们可以使用两种方法来启动到 救援rescue 模式。 - -#### 方法 1 - -打开你的 Ubuntu 系统。在 BIOS 徽标出现后,按下 ESC 按键来显示 GRUB 菜单。 - -在 GRUB 菜单中,选择第一项,并按下 **"e"** 按键来编辑它。 - -![GRUB Menu In Ubuntu 22.04 / 20.04 LTS][3] - -按下 **下箭头** 按键,并找到以单词 **"linux"** 开头的一行代码,并在其结尾处添加下面的一行代码。为到达其结尾处,只需要按下 **CTRL+e** 组合键,或使用你键盘上的 **END** 按键或 **左箭头/右箭头** 按键。 - -``` -systemd.unit=rescue.target -``` - -![Edit Grub Boot Menu Entries To Enter Into Rescue Mode In Ubuntu 22.04 / 20.04 LTS][4] - -在添加上面的代码行后,按下 **Ctrl+x** 组合键 或按下 **F10** 按键来启动到 救援rescue 模式. - -数秒后,你将作为 root 用户来登陆到 救援rescue 模式 (单用户single user 模式) 。将会提示你按下 回车ENTER 按键来进入维护模式。 - -下图是 Ubuntu 22.04 / 20.04 LTS 系统的 救援rescue 模式 的样子: - -![Boot Into Rescue Mode In Ubuntu 22.04 / 20.04 LTS][5] - -现在,在 救援rescue 模式 中做你想做的任何事。在 救援rescue 模式 中,在你执行任何操作前,你可能需要以 读/写 模式 的方式来挂载 root (**/**) 文件系统。 - -``` -mount -n -o remount,rw / -``` - -![Mount Root File System In Read Write Mode In Ubuntu 22.04 / 20.04 LTS][6] - -在完成后,按下 **"Ctrl+d"** 组合键来启动到正常模式。或者,你可以输入下面的任意一个命令来启动到正常模式。 - -``` -systemctl default -``` - -或者, - -``` -exit -``` - -如果你想重新启动系统,而不是启动到正常的模式,输入: - -``` -systemctl reboot -``` - -#### 方法 2 - -在这种方法中,你不需要编辑 GRUB 启动菜单项目。 - -打开系统电源,并从 GRUB 启动菜单中选择 Ubuntu 高级选项Advanced options for Ubuntu。 - -![Choose Advanced Options For Ubuntu From Grub Boot Menu][7] - -接下来,你将看到一个带有内核版本的可用的 Ubuntu 版本的列表。在 Ubuntu 中的 GRUB 启动菜单中选择 恢复Recovery 模式。 - -![Choose Recovery Mode In Grub Boot Menu In Ubuntu 22.04 / 20.04 LTS][8] - -数秒后,你将看到 Ubuntu 的 恢复Recovery 菜单。从 恢复Recovery 菜单中,选择 **进入 root 的 shell 提示符Drop to root shell prompt** 选项 ,并按下 回车ENTER 按键。 - -![Enter Into Root Shell Prompt In Ubuntu 22.04 / 20.04 LTS][9] - -现在,你将登陆到 救援rescue 模式。 - -![Ubuntu Maintenance Mode][10] - -通过输入下面的命令来 以 读/写 模式的方式 来挂载 root (**/**) 文件系统: - -``` -mount -n -o remount,rw / -``` - -![Mount Root File System In Read Write Mode In Ubuntu][11] - -在 救援rescue 模式 中做你想做的任何事。 - -在完成后,输入 **exit** 来返回到 恢复Recovery 菜单。 - -``` -exit -``` - -最后,选择 **救援正常启动Resume normal boot** 选项,并按下 回车ENTER 按键。 - -![Boot Into Normal Mode In Ubuntu][12] - -再次按下 回车ENTER 按键来退出 恢复Recovery 模式,并继续启动到正常模式。 - -![Exit The Recovery Mode In Ubuntu][13] - -如果你不想启动到正常模式,输入 **reboot** 并从维护模式中按下 回车ENTER 按键来重新启动你的系统。 - -### 在 Ubuntu 22.04 / 20.04 LTS 中启动到 紧急Emergency 模式 - -当 GRUB 菜单出现时,按下 **"e"** 按键来编辑它。 - -![GRUB Menu In Ubuntu 22.04 / 20.04 LTS][14] - -找到以单词 **"linux"** 开头的一行代码,并在其结尾处添加下面的一行代码。 - -``` -systemd.unit=emergency.target -``` - -![Edit Grub Boot Menu Entries To Enter Into Emergency Mode In Ubuntu 22.04 / 20.04 LTS][15] - -在添加上面的代码行后,按下 **Ctrl+x** 组合键,或按下 **F10** 按键来启动到 紧急Emergency 模式。 - -数秒后,你将作为 `root` 用户来登陆到 紧急Emergency 模式。将会提示你按下 回车ENTER 按键来进入维护模式。 - -下图是 Ubuntu 22.04 / 20.04 LTS 系统的 紧急Emergency 模式 的样子: - -![Boot Into Emergency Mode In Ubuntu 22.04 / 20.04 LTS][16] - -现在,在 紧急Emergency 模式 中做你想做的任何事。在 紧急Emergency 模式 中,在你执行任何操作前,你可能需要以 读/写 模式 的方式来挂载 root (**/**) 文件系统。 - -``` -mount -n -o remount,rw / -``` - -在完成后,按下 **"Ctrl+d"** 组合键来启动到正常模式。或者,你可以输入下面的任意一个命令来启动到正常模式。 - -``` -systemctl default -``` - -或者, - -``` -exit -``` - -如果你想重新启动系统,而不是启动到正常的模式,输入: - -``` -systemctl reboot -``` - -### 在 Ubuntu 18.04 LTS 中启动到 救援rescue 模式 - -启动你的 Ubuntu 系统。当 GRUB 菜单出现时,选择第一项并按下按键 **"e"** 来编辑。(为到达其结尾处,只需要按下 **CTRL+e** 组合键,或使用你键盘上的 **END** 按键或 **左箭头/右箭头** 按键): - -![Grub Menu][17] - -如果你没有看到 GRUB 菜单,只需要在 BIOS 徽标出现后,按下 ESC 按键来显示 GRUB 菜单。 - -找到以单词 **"linux"** 开头的一行代码,并在其结尾处添加下面的一行代码 (为到达其结尾处,只需要按下 **CTRL+e** 组合键,或使用你键盘上的 **END** 按键或 **左箭头/右箭头** 按键): - -``` -systemd.unit=rescue.target -``` - -![Edit Grub Menu][18] - -在添加上面的代码行后,只需要按下 **Ctrl+x** 组合键,或按下 **F10** 按键来启动到 救援rescue 模式。数秒后,你将作为 `root` 用户来登陆到 救援rescue 模式 (单用户single user 模式) 。 - -下图是 Ubuntu 18.04 LTS 服务器 系统的 救援rescue 模式 的样子: - -![Ubuntu Rescue Mode][19] - -接下来,输入下面的命令来挂载 root (**/**) 文件系统为 读/写 模式。 - -``` -mount -n -o remount,rw / -``` - -### 启动到 紧急Emergency 模式 - -启动你的 Ubuntu 到 紧急Emergency 模式 基本与上述方法相同。你所需要做的全部工作是,在编辑 GRUB 菜单时,将 **"systemd.unit=rescue.target"** 替换为 **"systemd.unit=emergency.target"** 。 - -![Edit Grub Menu][20] - -在你添加 "systemd.unit=emergency.target" 后,按下 **Ctrl+x** 组合键,或按下 **F10** 按键来启动到 紧急Emergency 模式。 - -![Ubuntu Emergency Mode][21] - -最后,你可以使用下面的命令来以 读/写 模式的方式 来挂载 root (**/**) 文件系统: - -``` -mount -n -o remount,rw / -``` - -### 在 救援rescue 模式 和 紧急Emergency 模式 之间切换 - -如果你正在 救援rescue 模式 中,你不必像我上述提到的那样来编辑 GRUB 的菜单启动项。相反,你只想要输入下面的命令来立刻切换到 紧急Emergency 模式: - -``` -systemctl emergency -``` - -同样,为从 紧急Emergency 模式 切换到 救援rescue 模式,输入: - -``` -systemctl rescue -``` - -### 总结 - -现在,你知道了什么是 救援Rescue 模式 和 紧急Emergency 模式,以及如何在 Ubuntu 22.04 、20.04 和 18.04 LTS 系统中启动到这些模式。 正如我已经提到的,在这里提供的这些步骤应该也适用于大多数当前使用 **Systemd** 作为默认服务管理器的 Linux 发行版。 - --------------------------------------------------------------------------------- - -via: https://ostechnix.com/how-to-boot-into-rescue-mode-or-emergency-mode-in-ubuntu-18-04/ - -作者:[sk][a] -选题:[lkxed][b] -译者:[robsean](https://github.com/robsean) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://ostechnix.com/author/sk/ -[b]: https://github.com/lkxed -[1]: https://ostechnix.com/check-runlevel-linux/ -[2]: https://ostechnix.com/how-to-reset-or-recover-root-user-password-in-linux/ -[3]: https://ostechnix.com/wp-content/uploads/2022/05/GRUB-Menu-In-Ubuntu-22.04-LTS.png -[4]: https://ostechnix.com/wp-content/uploads/2022/05/Edit-Grub-Boot-Menu-Entries-To-Enter-Into-Rescue-Mode-In-Ubuntu-22.04-LTS.png -[5]: https://ostechnix.com/wp-content/uploads/2022/05/Boot-Into-Rescue-Mode-In-Ubuntu-22.04.png -[6]: https://ostechnix.com/wp-content/uploads/2022/05/Mount-Root-File-System-In-Read-Write-Mode-In-Ubuntu.png -[7]: https://ostechnix.com/wp-content/uploads/2022/05/Choose-Advanced-Options-For-Ubuntu-From-Grub-Boot-Menu.png -[8]: https://ostechnix.com/wp-content/uploads/2022/05/Choose-Recovery-Mode-In-Grub-Boot-Menu-In-Ubuntu.png -[9]: https://ostechnix.com/wp-content/uploads/2022/05/Enter-Into-Root-Shell-Prompt-In-Ubuntu.png -[10]: https://ostechnix.com/wp-content/uploads/2022/05/Ubuntu-Maintenance-Mode.png -[11]: https://ostechnix.com/wp-content/uploads/2022/05/Mount-Root-File-System-In-Read-Write-Mode-In-Ubuntu-1.png -[12]: https://ostechnix.com/wp-content/uploads/2022/05/Boot-Into-Normal-Mode-In-Ubuntu.png -[13]: https://ostechnix.com/wp-content/uploads/2022/05/Exit-The-Recovery-Mode-In-Ubuntu.png -[14]: https://ostechnix.com/wp-content/uploads/2022/05/GRUB-Menu-In-Ubuntu-22.04-LTS.png -[15]: https://ostechnix.com/wp-content/uploads/2022/05/Edit-Grub-Boot-Menu-Entries-To-Enter-Into-Emergency-Mode-In-Ubuntu.png -[16]: https://ostechnix.com/wp-content/uploads/2018/12/Boot-Into-Emergency-Mode-In-Ubuntu-20.04-LTS.png -[17]: https://ostechnix.com/wp-content/uploads/2018/12/Grub-menu.png -[18]: https://ostechnix.com/wp-content/uploads/2018/12/Edit-grub-menu.png -[19]: https://ostechnix.com/wp-content/uploads/2018/12/Ubuntu-rescue-mode.png -[20]: https://ostechnix.com/wp-content/uploads/2018/12/emergency-mode.png -[21]: https://ostechnix.com/wp-content/uploads/2018/12/emergency-mode-1.png diff --git a/translated/tech/20220607 How Garbage Collection works inside a Java Virtual Machine.md b/translated/tech/20220607 How Garbage Collection works inside a Java Virtual Machine.md new file mode 100644 index 0000000000..e102895b7c --- /dev/null +++ b/translated/tech/20220607 How Garbage Collection works inside a Java Virtual Machine.md @@ -0,0 +1,157 @@ +[#]: subject: "How Garbage Collection works inside a Java Virtual Machine" +[#]: via: "https://opensource.com/article/22/6/garbage-collection-java-virtual-machine" +[#]: author: "Jayashree Huttanagoudar https://opensource.com/users/jayashree-huttanagoudar" +[#]: collector: "lkxed" +[#]: translator: "lkxed" +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +JVM 垃圾回收的工作原理 +====== +对于程序员来说,掌握 Java 的内存管理机制并不是必须的,但它能够帮助你更好地理解 JVM 是如何处理程序中的变量和类实例的。 + +![咖啡豆][1] + +图源:Pixabay. CC0. + +Java 之所以能够如此流行,自动 垃圾回收Garbage Collection(GC)功不可没,它也是 Java 最重要的几个特性之一。在这篇文章中,我将说明为什么垃圾回收如此重要。本文的主要内容为:自动的分代垃圾回收、JVM 划分内存的依据,以及 JVM 垃圾回收的工作原理。 + +### Java 内存分配 + +Java 程序的内存空间被划分为以下四个区域: + +1. 堆区(Heap):对象实例就是在这个区域分配的。不过,当我们声明一个对象时,堆中不会有任何内存分配发生,只是在栈中创建了一个对象的引用而已。 +2. 栈区(Stack):方法、局部变量和类的实例变量就是在这个区域分配的。 +3. 代码区(Code):这个区域存放了程序的字节码。 +4. 静态区(Static):这个区域存放了程序的静态数据和静态方法。 + +### 什么是自动垃圾回收? + +自动垃圾回收是这样一个过程:首先,堆中的所有对象会被分类为“被引用的”和“未被引用的”;接着,“未被引用的对象”就会被做上标记,以待之后删除。其中,“被引用的对象”是指程序中的某一部分仍在使用的对象,“未被引用的对象”是指目前没有正在被使用的对象。 + +许多编程语言,例如 C 和 C++,都需要程序员手动管理内存的分配和释放。在 Java 中,这一过程是通过垃圾回收机制来自动完成的(尽管你也可以在代码中调用 `system.gc();` 来手动触发垃圾回收)。 + +垃圾回收的基本步骤如下: + +#### 1. 标记已使用和未使用的对象 + +在这一步骤中,已使用和未使用的对象会被分别做上标记。这是一个及其耗时的过程,因为需要扫描内存中的所有对象,才能够确定它们是否正在被使用。 + +![标记已使用和未使用的对象][2] + +#### 2. 扫描/删除对象 + +有两种不同的扫描和删除算法: + +**简单删除(标记清除)**:它的过程很简单,我们只需要删除未被引用的对象即可。但是,后续给新对象分配内存就会变得很困难了,因为可用空间被分割成了一块块碎片。 + +![标记清除的过程][3] + +**删除压缩(标记整理)**:除了会删除未被引用的对象,我们还会压缩被引用的对象(未被删除的对象)。这样以来,新对象的内存分配就相对容易了,并且内存分配的效率也有了提升。 + +![标记整理的过程][4] + +### 什么是分代垃圾回收,为什么需要它? + +正如我们在“扫描删除”模型中所看到的,一旦对象不断增长,我们就很难扫描所有未使用的对象以回收内存。不过,有一项实验性研究指出,在程序执行期间创建的大多数对象,它们的存活时间都很短。 + +既然大多数对象的存活时间都很短,那么我们就可以利用这个事实,从而提升垃圾回收的效率。该怎么做呢?首先,JVM 将内存划分为不同的“代”。接着,它将所有的对象都分类到这些内存“代”中,然后对这些“代”分别执行垃圾回收。这就是“分代垃圾回收”。 + +### 堆内存的“代”和分代垃圾回收过程 + +为了提升垃圾回收中的“标记清除”的效率,JVM 将对内存划分成以下三个“代”: + +* 年轻代 +* 老年代 +* 永久代 + +![Hotspot 堆内存结构][5] + +下面我将介绍每个“代”及其主要特征。 + +#### 年轻代 + +所有创建不久的对象都存放在这里。年轻代被进一步分为以下两个区域: + +1. 伊甸区(Eden):所有新创建的对象都在此处分配内存。 +2. 幸存者区(Survivor,分为 S0 和 S1):经历过一次垃圾回收后,仍然存活的对象会被移动到两个幸存者区中的一个。 + +![对象分配][6] + +在年轻代发生的分代垃圾回收被称为 “Minor GC”。Minor GC 过程中的每个阶段都是“停止世界Stop The World”(STW)的,这会导致其他应用程序暂停运行,直到垃圾回收结束。这也是 Minor GC 更快的原因。 + +一句话总结:伊甸区存放了所有新创建的对象,当它的可用空间被耗尽,第一次垃圾回收就会被触发。 + +![填充伊甸区][7] + +Minor GC:在该垃圾回收过程中,所有存活和死亡的对象都会被做上标记。其中,存活对象会被移动到 S0 幸存者区。当所有存活对象都被移动到了 S0,未被引用的对象就会被删除。 + +![拷贝被引用的对象][8] + +S0 中的对象年龄为 1,因为它们挺过了一次 Minor GC。此时,伊甸区和 S1 都是空的。 + +每当完成清理后,伊甸区就会再次接受新的存活对象。随着时间的推移,伊甸区和 S0 中的某些对象被宣判死亡(不再被引用),并且伊甸区的可用空间也再次耗尽(填满了),那么 Minor GC 又将再次被触发。 + +![对象年龄增长][9] + +这一次,伊甸区和 S0 中的死亡和存活的对象会被做上标记。其中,伊甸区的存活对象会被移动到 S1,并且年龄增加至 1。S0 中的存活对象也会被移动到 S1,并且年龄增加至 2(因为它们挺过了两次 Minor GC)。此时,伊甸区和 S0 又是空的了。每次 Minor GC 之后,伊甸区和两个幸存者区中的一个都会是空的。 + +新对象总是在伊甸区被创建,周而复始。当下一次垃圾回收发生时,伊甸区和 S1 都会被清理,它们中的存活对象会被移动到 S0 区。每次 Minor GC 之后,这两个幸存者区(S0 和 S1)就会交换一次。 + +![额外年龄增长][10] + +这个过程会一直进行下去,直到某个存活对象的年龄达到了某个阈值,然后它就会被移动到一个叫做“老年代”的地方,这是通过一个叫做“晋升”的过程来完成的。 + +使用 `-Xmn` 选项可以设置年轻代的大小。 + +### 老年代 + +这个区域存放着那些挺过了许多次 Minor GC,并且达到了某个年龄阈值的对象。 + +![晋升][11] + +在上面这个示例图表中,晋升的年龄阈值为 8。在老年代发生的垃圾回收被称为 “Major GC”。 + +使用 `-Xms` 和 `-Xmx` 选项可以分别设置堆内存大小的初始值和最大值。(LCTT 译注:结合上面的 `-Xmn` 选项,就可以间接设置老年代的大小了。) + +### 永久代 + +永久代存放着一些元数据,它们与应用程序、Java 标准环境以及 JVM 自用的库类及其方法相关。JVM 会在运行时,用到了什么类和方法,就会填充相应的数据。当 JVM 发现有未使用的类,就会卸载或是回收它们,从而为正在使用的类腾出空间。 + +使用 `-XX:PermGen` 和 `-XX:MaxPerGen` 选项可以分别设置永久代大小的初始值和最大值。 + +#### 元空间 + +Java 8 引入了元空间,并用它替换了永久代。这么做的好处是自动调整大小,避免了 内存不足OutOfMemory(OOM)错误。 + +### 总结 + +本文讨论了各种不同的 JVM 内存“代”,以及它们是如何在分代垃圾回收算法中起作用的。对于程序员来说,掌握 Java 的内存管理机制并不是必须的,但它能够帮助你更好地理解 JVM 处理程序中的变量和类实例的方式。这种理解使你能够规划和排除代码故障,并理解特定平台固有的潜在限制。 + +正文配图来自:Jayashree Huttanagoudar,CC BY-SA 4.0 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/6/garbage-collection-java-virtual-machine + +作者:[Jayashree Huttanagoudar][a] +选题:[lkxed][b] +译者:[lkxed](https://github.com/lkxed) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jayashree-huttanagoudar +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/lead-images/java-coffee-beans.jpg +[2]: https://opensource.com/sites/default/files/2022-06/1Marking.png +[3]: https://opensource.com/sites/default/files/2022-06/2NormalDeletion.png +[4]: https://opensource.com/sites/default/files/2022-06/3DeletionwithCompacting.png +[5]: https://opensource.com/sites/default/files/2022-06/4Hotspot.png +[6]: https://opensource.com/sites/default/files/2022-06/5ObjAllocation.png +[7]: https://opensource.com/sites/default/files/2022-06/6FillingEden.png +[8]: https://opensource.com/sites/default/files/2022-06/7CopyingRefdObjs.png +[9]: https://opensource.com/sites/default/files/2022-06/8ObjAging.png +[10]: https://opensource.com/sites/default/files/2022-06/9AddlAging.png +[11]: https://opensource.com/sites/default/files/2022-06/10Promotion.png diff --git a/translated/tech/20220607 How to Boot Ubuntu 22.04 into Rescue - Emergency Mode.md b/translated/tech/20220607 How to Boot Ubuntu 22.04 into Rescue - Emergency Mode.md new file mode 100644 index 0000000000..86f542b747 --- /dev/null +++ b/translated/tech/20220607 How to Boot Ubuntu 22.04 into Rescue - Emergency Mode.md @@ -0,0 +1,85 @@ +[#]: subject: "How to Boot Ubuntu 22.04 into Rescue / Emergency Mode" +[#]: via: "https://www.linuxtechi.com/boot-ubuntu-22-04-rescue-emergency-mode/" +[#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +如何启动 Ubuntu 22.04 进入救援/紧急模式 +====== +极客们好,将 Ubuntu 22.04(Jammy Jellyfish)启动到救援和紧急模式有助于重置忘记的用户密码,修复文件系统错误以及在启动过程中禁用或启用 systemd 服务。 + +在这篇文章中,我们将学习如何启动 Ubuntu 22.04 LTS 系统进入救援和应急模式。救援模式类似于单用户模式,所有的故障排除步骤都在这里进行。救援模式加载最小的环境并挂载根文件系统。 + +而在紧急模式下,我们得到的是单用户 shell,而不启动任何系统服务。因此,当我们无法启动系统进入救援模式时,就需要紧急模式。 + +### 启动 Ubuntu 22.04 进入救援或单用户模式 + +前往你想启动到救援或单用户模式的目标系统。在启动时按下 “SHIFT+ESC” 键,进入 grub bootloader 页面。 + +![Default-Grub-Screen-Ubuntu-22-04][1] + +选择第一个选项 Ubuntu,并按 “e” 键进入编辑模式。 + +在以 linux 开头的一行末尾,删除字符串 “$vt_handoff” 并添加字符串 “systemd.unit=rescue.target”。 + +![rescue-target-ubuntu-22-04][2] + +做完修改后,按 Ctrl+x 或 F10 在救援模式下启动。 + +![Troubleshooting-Commands-in-Rescue-Mode][3] + +进入救援模式后,运行所有的故障排除命令,并运行 “systemctl reboot” 命令来重启系统。 + +### 另一种启动系统进入救援模式的方法 + +重新启动系统并按下 “ESC+Shift” 键,进入 grub 启动界面。 + +选择第二个选项 “Advanced Options for Ubuntu”->选择恢复模式选项并点击回车->选择 Root(进入 root shell 提示)。 + +下面是一个例子 + +![Boot-Ubuntu-22-04-Rescue-Mode][4] + +当你有了 root shell,运行命令来恢复和修复系统问题,最后使用 “systemctl reboot” 来重启系统。 + +### 引导 Ubuntu 22.04 进入紧急模式 + +要启动系统进入紧急模式,首先进入 grub 页面。 + +![Default-Grub-Screen-Ubuntu-22-04][5] + +选择第一个选项 “Ubuntu” 并按 “e” 键进行编辑。寻找以 linux 开头的一行,移到该行的末尾,删除字符串 $vt_handoff 并添加字符串 “systemd.unit=emergency.target”。 + +![Emergency-Mode-Ubuntu-22-04][6] + +按 Ctrl+x 或 F10 将系统启动到紧急模式。 + +![Command-in-Emergency-Mode-Ubuntu-22-04][7] + +同样,在救援模式下,你可以在这个模式下执行所有的故障排除,完成后,就用 “systemctl reboot” 命令重启系统。 + +这篇文章的内容就这些。我发现它内容丰富,不要犹豫,在你的技术朋友中分享这个。请在下面的评论区发表你的疑问和反馈。 + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/boot-ubuntu-22-04-rescue-emergency-mode/ + +作者:[Pradeep Kumar][a] +选题:[lkxed][b] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.linuxtechi.com/author/pradeep/ +[b]: https://github.com/lkxed +[1]: https://www.linuxtechi.com/wp-content/uploads/2022/06/Default-Grub-Screen-Ubuntu-22-04.png +[2]: https://www.linuxtechi.com/wp-content/uploads/2022/06/rescue-target-ubuntu-22-04.png +[3]: https://www.linuxtechi.com/wp-content/uploads/2022/06/Troubleshooting-Commands-in-Rescue-Mode.png +[4]: https://www.linuxtechi.com/wp-content/uploads/2022/06/Boot-Ubuntu-22-04-Rescue-Mode.gif +[5]: https://www.linuxtechi.com/wp-content/uploads/2022/06/Default-Grub-Screen-Ubuntu-22-04.png +[6]: https://www.linuxtechi.com/wp-content/uploads/2022/06/Emergency-Mode-Ubuntu-22-04.png +[7]: https://www.linuxtechi.com/wp-content/uploads/2022/06/Command-in-Emergency-Mode-Ubuntu-22-04.png diff --git a/translated/tech/20220609 Edit PDFs on Linux with these open source tools.md b/translated/tech/20220609 Edit PDFs on Linux with these open source tools.md new file mode 100644 index 0000000000..03ed204126 --- /dev/null +++ b/translated/tech/20220609 Edit PDFs on Linux with these open source tools.md @@ -0,0 +1,90 @@ + [#]: subject: "Edit PDFs on Linux with these open source tools" +[#]: via: "https://opensource.com/article/22/6/open-source-pdf-editors-linux" +[#]: author: "Michael Korotaev https://opensource.com/users/michaelk" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +用这些开源工具在 Linux 上编辑 PDF 文件 +====== +Adobe Acrobat 的开源替代品具有创建、编辑和注释 PDF 的所有必要功能。 + +![a checklist for a team][1] + +图片由:Opensource.com + +开源的 PDF 阅读和编辑工具通常比 “PDF 编辑器”搜索结果第一页中的应用更安全和可靠。在那里,你很可能看到带有隐藏限制和关税的专有应用,缺乏关于数据保护政策和托管的足够信息。你可以有更好的。 + +这里有五个应用,可以安装在你的 Linux 系统上(和其他系统)或托管在服务器上。每一个都是免费和开源的,具有创建、编辑和注释 PDF 文件的所有必要功能。 + +### LibreOffice + +使用 [LibreOffice][2] 套件,你对应用的选择取决于最初的任务。虽然文字处理器 LibreOffice Writer,可以让你创建 PDF 文件,并从 ODF 和其他文本格式导出,但 Draw 更适合于处理现有的 PDF 文件。 + +Draw 是用来创建和编辑图形文件的,如小册子、杂志和海报。因此,该工具集主要集中在视觉对象和布局上。然而,对于 PDF 编辑,当文件具有编辑属性时,LibreOffice Draw 提供了用于修改和添加 PDF 内容的工具。如果没有的话,你仍然可以在现有的内容层上添加新的文本字段,并对文件进行注释或完成。 + +Draw 和 Writer 都被捆绑在 LibreOffice 桌面套件中,可在 Linux 系统、macOS 和 Windows 上安装。 + +### ONLYOFFICE Docs + +ONLYOFFICE 一直在改进 PDF 的处理,并在 [ONLYOFFICE Docs][3] 的 7.1 版本中引入了一个全新的 PDF 和电子书的阅读器。 + +该文档编辑器允许从头开始创建 PDF 文件,使用 DOCX 作为文件的基础,然后可以转换为 PDF 或 PDF/A。通过内置的表单创建功能,ONLYOFFICE Docs 还可以建立可填充的文档模板,并将其导出为可编辑的 PDF,并为不同类型的内容设置可填充的字段:文本、图像、日期等。 + +除了可以识别 PDF 内的文本进行复制和提取外,ONLYOFFICE Docs 还可以将 PDF 转换为 DOCX,这样你就可以继续使用完全可编辑的文本格式的文件。ONLYOFFICE 还可以让你用密码保护文件,添加水印,并使用桌面版中的数字签名。 + +ONLYOFFICE Docs 可以作为一个网络套件(内部或云端)集成到文档管理系统(DMS)或作为一个独立的桌面应用程序使用。你可以将后者作为 DEB 或 RPM 文件、AppImage、Flatpack 和其他几种格式在 Linux 中安装。 + +### PDF Arranger + +[PDF Arranger][4] 是 PikePDF 库的一个前端应用。它不像 LibreOffice 和 ONLYOFFICE 那样对 PDF 的内容进行编辑,但它对于重新排序页面、将 PDF 分割成更小的文件、将几个 PDF 合并成一个、旋转或裁剪页面等都很好。它的界面是直观的,易于使用。 + +PDF Arranger 可用于 Linux 和 Windows。 + +### Okular + +[Okular][5] 是一个由 KDE 社区开发的免费开源文档查看器。该应用的功能非常成熟,可以查看 PDF、电子书、图片和漫画。 + +Okular 完全或部分支持大多数流行的 PDF 功能和使用场景,如添加注释和内联笔记或插入文本框、形状和印章。你还可以为文档添加数字加密签名,这样你的读者就可以确定文档的来源。 + +除了在 PDF 中添加文本和图像外,还可以从文档中检索到它们,以复制和粘贴到其他地方。Okular 中的区域选择工具可以识别所选区域内的组件,所以你可以从 PDF 中独立提取它们。 + +你可以使用你的发行版包管理器或以 Flatpak 的形式安装 Okular。 + +### Xournal++ + +[Xournal++][6] 是一款带有 PDF 文件注释工具的手写日记软件。 + +它是一款具有强化手写功能的记事软件,对于处理基于文本的内容和专业布局来说,它可能不是最佳选择。然而,它渲染图形的能力以及对书写和绘图的手写笔输入的支持使它作为一个小众生产力工具脱颖而出。 + +图层管理工具、可定制的笔尖设置以及对手写笔映射的支持,使 PDF 注释和草图绘制变得更加舒适。Xournal++ 还有一个文本工具,用于添加文本框,并能插入图像。 + +Xournal++ 可在 Linux 系统(Ubuntu、Debian、Arch、SUSE)、MacOS 和 Windows(10及以上)中安装。 + +### 总结 + +如果你正在寻找一个免费和安全的专有 PDF 浏览和编辑软件的替代品,不难找到一个开源的选择,无论是桌面还是在线使用。只要记住,目前可用的解决方案在不同的使用情况下有各自的优势,没有一个工具在所有可能的任务中都同样出色。 + +这五个方案因其功能或对小众 PDF 任务的有用性而脱颖而出。对于企业使用和协作,我建议 ONLYOFFICE 或 LibreOffice Draw。PDF Arranger 是一个简单的、轻量级的工具,当你不需要改变文本时,可以用它来处理页面。Okular 为多种文件类型提供了很好的查看功能,如果你想在 PDF 中画草图和做笔记,Xournal++ 是最佳选择。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/6/open-source-pdf-editors-linux + +作者:[Michael Korotaev][a] +选题:[lkxed][b] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/michaelk +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/lead-images/checklist_hands_team_collaboration.png +[2]: https://opensource.com/article/21/9/libreoffice-tips +[3]: https://opensource.com/article/20/12/onlyoffice-docs +[4]: https://flathub.org/apps/details/com.github.jeromerobert.pdfarranger +[5]: https://opensource.com/article/22/4/linux-kde-eco-certification-okular +[6]: http://xournal.sourceforge.net/ diff --git a/translated/tech/20220610 Manage Flatpak Permission Using Flatseal.md b/translated/tech/20220610 Manage Flatpak Permission Using Flatseal.md new file mode 100644 index 0000000000..c912410576 --- /dev/null +++ b/translated/tech/20220610 Manage Flatpak Permission Using Flatseal.md @@ -0,0 +1,113 @@ +[#]: subject: "Manage Flatpak Permission Using Flatseal" +[#]: via: "https://www.debugpoint.com/2022/06/manage-flatpak-permission-flatseal/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +使用 Flatseal 管理 Flatpak 的权限 +====== +了解如何使用 Flatseal 应用管理 Flatpak 权限,它为你提供了一个友好的 GUI 和额外的功能。 + +从新用户的角度来看,在 Linux 中安装应用可能是一个挑战。主要原因是有这么多的 [Linux 发行版][1]。而你需要为各种 Linux 发行版提供不同的安装方法或说明。对于一些用户来说,这可能会让他们不知所措。此外,对于开发者来说,为不同的发行版创建独立的软件包和构建也很困难。 + +### Flatpak 解决了这个问题。如何解决? + +它使用了容器技术,使同一个应用的可执行文件在所有的 Linux 平台上都能类似地运行。例如,一个单一的可执行文件可以在 Ubuntu、Fedora、OpenSUSE、Arch Linux 和许多其他平台上运行。 + +此外,开发人员还可以减少为不同平台打包同一应用的努力。他们可以专注于应用的功能,而不是发行或部署。 + +此外,Flatpak 应用还能即时更新,当有了最新版本,你就能得到它。 + +所有这些好处也开启了一个重要的问题。Flatpak 应用需要的权限是什么?你如何轻松地管理它们?例如,一个应用可能只需要网络访问,而不需要磁盘空间。或者另一个可能有截图的权限,但可能根本就不需要。 + +所以,审查一个 Flatpak 应用的权限是非常必要的。这与你的安卓或 iOS 应用的权限类似。 + +最后,即使你是一个新用户,管理和审查权限也不是那么困难,这要感谢图形化的应用 - Flatseal。 + +### 什么是 Flatseal? + +Flatseal 是一个 Flatpak 应用,它为你提供了一个友好的用户界面来查看和改变你系统中所有 Flatpak 应用的权限。 + +它是一个优秀的小程序,每个应用的每个权限部分都有一个易于使用的切换按钮。下面是它的外观(图 1)。 + +![Figure 1 – Flatseal App][2] + +### 你如何使用 Flatseal 来管理 Flatpak 的权限? + +当打开 Flatseal 应用时,它应该在左边的导航栏列出所有的 Flatpak 应用。而当你选择了一个应用,它就会在右边的主窗口中显示可用的权限设置。 + +现在,对于每个 Flatpak 权限控制,当前值显示在切换开关中。如果该权限正在使用中,它应该被设置。否则,它应该是灰色的。 + +首先,要设置权限,你必须进入你的系统的应用。然后,你可以从权限列表中启用或禁用任何各自的控制。 + +其次,如果你想设置一个适用于你系统中所有 Flatpak 的全局控制,你可以在左上方选择“所有应用”并应用全局设置(图 2)。 + +![Figure 2: Manage Flatpak Permission using Flatseal][3] + +这真是超级简单。不是吗? + +### 使用 Flatseal 管理 Flatpak 权限的例子 + +让我们举个例子。 + +在我的系统中,我安装了上述 Flatpak(图 2)。让我们挑选 Telegram 桌面应用。目前,Telegram 桌面没有访问任何主目录或用户文件的权限(图 3)。 + +![Figure 3: Telegram Desktop Flatpak App does not have permission to the home folders][4] + +现在,如果我想允许所有的用户文件和任何特定的文件夹(例如:/home/Downloads),你可以通过打开启用开关来给予它。请看下面的图 4。 + +![Figure 4: Permission changed of Telegram Desktop to give access to folders][5] + +同样地,你可以启用或禁用你想要的权限。在内部,Flatseal 执行内部的 Flatpak 命令来实现这一点。 + +例如,上述情况可能转化为以下命令。 + +``` +flatpak override org.telegram.desktop --filesystem=/home/Downloads +``` + +而要删除: + +``` +flatpak override org.telegram.desktop --nofilesystem=/home/Downloads +``` + +Flatseal 还有一个很酷的功能,它在用户特定的权限变化旁边显示一个小的警报图标(见图 4)。 + +### 我可以在所有的 Linux 发行版中安装 Flatseal 吗? + +是的,你可以把 [Flatseal][6] 作为 Flatpak 安装在所有 Linux 发行版中。你可以使用[本指南][7]设置你的系统,并运行以下命令进行安装。或者,[点击这里][8]直接启动特定系统的安装程序。 + +``` +flatpak install flathub com.github.tchx84.Flatseal +``` + +### 结束语 + +我希望上面的 Flatpak 权限管理指南足够简单,让你了解并开始使用 Flatpak。它超级容易控制,使用起来也容易得多。另外,你可能想访问我们更多的 [Flatpak 指南][9]。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/2022/06/manage-flatpak-permission-flatseal/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/category/distributions +[2]: https://www.debugpoint.com/wp-content/uploads/2022/06/Flatseal-App.jpg +[3]: https://www.debugpoint.com/wp-content/uploads/2022/06/Manage-Flatpak-Permission-using-Flatseal.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2022/06/Telegram-Desktop-Flatpak-App-does-not-have-permission-to-the-home-folders.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2022/06/Permission-changed-of-Telegram-Desktop-to-give-access-to-folders.jpg +[6]: https://flathub.org/apps/details/com.github.tchx84.Flatseal +[7]: https://flatpak.org/setup/ +[8]: https://dl.flathub.org/repo/appstream/com.github.tchx84.Flatseal.flatpakref +[9]: https://www.debugpoint.com/tag/flatpak/