mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-25 23:11:02 +08:00
commit
324e74db5b
@ -0,0 +1,163 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (CoWave-Fall)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-14632-1.html)
|
||||
[#]: subject: (31 open source text editors you need to try)
|
||||
[#]: via: (https://opensource.com/article/21/2/open-source-text-editors)
|
||||
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
|
||||
|
||||
值得尝试的 30 个开源文本编辑器
|
||||
======
|
||||
|
||||
> 正在寻找新的文本编辑器?这里有 31 个编辑器可供尝试。
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/202205/24/184603krbzynnnikz8b0nc.jpg)
|
||||
|
||||
计算机是基于文本的,因此你使用它们做的事情越多,你可能就越需要文本编辑应用程序。你在文本编辑器上花费的时间越多,你就越有可能对你使用的编辑器提出更多的要求。
|
||||
|
||||
如果你正在寻找一个好的文本编辑器,你会发现 Linux 可以提供很多。无论你是想在终端、桌面还是在云端工作,你都可以试一试。你可以每天一款编辑器,连续着试一个月(或每月试一个,能够试三年)。坚持不懈,你终将找到适合你的完美的编辑器。
|
||||
|
||||
### Vim 类编辑器
|
||||
|
||||
![][2]
|
||||
|
||||
* [Vi][3] 通常随着 Linux 各发行版、BSD、Solaris 和 macOS 一起安装。它是典型的 Unix 文本编辑器,具有编辑模式和超高效的单键快捷键的独特组合。最初的 Vi 编辑器由 Bill Joy 编写(他也是 C shell 的作者)。Vi 的现代版本,尤其是 Vim,增加了许多特性,包括多级撤消、在插入模式下更好的导航、行折叠、语法高亮、插件支持等等。但它需要学习如何使用(它甚至有自己的教程程序,`vimtutor`)。
|
||||
* [Kakoune][4] 是一个受 Vim 启发的应用程序,它具有熟悉的简约界面、短键盘快捷键以及独立的编辑和插入模式。乍一看,它的外观和感觉很像 Vi,但它在设计和功能上有自己独特的风格。 它有一个小彩蛋:具有 Clippy 界面的实现。
|
||||
|
||||
### emacs 编辑器
|
||||
|
||||
![][5]
|
||||
|
||||
* 从最初的免费 emacs 开始,发展到发起了自由软件运动的 GNU 项目的第一批官方应用程序,[GNU Emacs][6] 是一个广受欢迎的文本编辑器。它非常适合系统管理员、开发人员和日常用户的使用,具有大量功能和近乎无穷无尽的扩展。一旦你开始使用 emacs,你可能会发现很难想出一个理由来关闭它,因为它能做的事情非常多!
|
||||
* 如果你喜欢 emacs,但觉得 GNU Emacs 过于臃肿,那么你可以试试 [Jove][7]。Jove 是一个基于终端的 emacs 编辑器。它很容易使用,但是如果你是使用 emacs 编辑器家族的新手,那么 Jove 也是很容易学习的,这要归功于 `teajove` 命令。
|
||||
* 另一个轻量级的 emacs 编辑器是 [Jed][8]。它的工作流程基于宏。它与其他编辑器的不同之处在于它使用了 [S-Lang][9],这是一种类似 C 的脚本语言,它为使用 C 而不是使用 Lisp 的开发人员提供了扩展的机会。
|
||||
|
||||
### 交互式编辑器
|
||||
|
||||
![][10]
|
||||
|
||||
* [GNU nano][11] 对基于终端的文本编辑采取了大胆的立场:它提供了一个菜单。是的,这个不起眼的编辑器从 GUI 编辑器那里得到了提示,它告诉用户他们需要按哪个键来执行特定的功能。这是一种令人耳目一新的用户体验,所以难怪 nano 被设置为“用户友好”发行版的默认编辑器,而不是 Vi。
|
||||
* [JOE][12] 基于一个名为 WordStar 的旧文本编辑应用程序。如果你不熟悉 Wordstar,JOE 也可以模仿 Emacs 或 GNU nano。默认情况下,它是介于 Emacs 或 Vi 等相对神秘的编辑器和 GNU Nano 永远显示的冗长信息之间的一个很好的折衷方案(例如,它告诉你如何激活屏幕帮助显示,但默认情况下不启用)。
|
||||
* [e3][13] 是一个优秀的小型文本编辑器,具有五个内置的键盘快捷键方案,用来模拟 Emacs、Vi、nano、NEdit 和 WordStar。换句话说,无论你习惯使用哪种基于终端的编辑器,你都可能对 e3 感到宾至如归。
|
||||
|
||||
### ed 及像 ed 一样的编辑器
|
||||
|
||||
* [POSIX][15] 和 Open Group 定义了基于 Unix 的操作系统的标准,[ed][14] 行编辑器是它的一部分。它安装在你遇到的几乎所有 Linux 或 Unix 系统上。它小巧、简洁、一流。
|
||||
* 基于 ed,[Sed][16] 流编辑器因其功能和语法而广受欢迎。大多数 Linux 用户在搜索如何最简单、最快捷的更新配置文件中的行的方法时,至少会遇到一个 `sed` 命令,但它值得仔细研究一下。Sed 是一个强大的命令,包含许多有用的子命令。更好地了解了它,你可能会发现自己打开文本编辑器应用程序的频率要低得多。
|
||||
* 你并不总是需要文本编辑器来编辑文本。[heredoc][17](或 Here Doc)系统可在任何 POSIX 终端中使用,允许你直接在打开的终端中输入文本,然后将输入的内容通过管道传输到文本文件中。这不是最强大的编辑体验,但它用途广泛且始终可用。
|
||||
|
||||
### 极简风格的编辑器
|
||||
|
||||
![][18]
|
||||
|
||||
如果你认为一个好的文本编辑器就是一个文字处理器(除了没有所有的处理功能)的话,你可能正在寻找这些经典编辑器。这些编辑器可让你以最少的干扰和最少的帮助写作和编辑文本。它们提供的功能通常以标记文本、Markdown 或代码为中心。有些名称遵循某种模式:
|
||||
|
||||
* [Gedit][19] 来自 GNOME 团队;
|
||||
* [medit][20] 有经典的 GNOME 手感;
|
||||
* [Xedit][21] 仅使用最基本的 X11 库;
|
||||
* [jEdit][22] 适用于 Java 爱好者。
|
||||
|
||||
KDE 用户也有类似的:
|
||||
|
||||
* [Kate][23] 是一款低调的编辑器,拥有你需要的几乎所有功能;
|
||||
* [KWrite][24] 在看似简单易用的界面中隐藏了大量有用的功能。
|
||||
|
||||
还有一些适用于其他平台:
|
||||
|
||||
* [Pe][26] 适用于 Haiku OS(90 年代那个古怪的孩子 BeOS 的转世);
|
||||
* [FeatherPad][27] 是适用于 Linux 的基本编辑器,但对 macOS 和 Haiku 有一些支持。如果你是一名希望移植代码的 Qt 黑客,请务必看一看!
|
||||
|
||||
### 集成开发环境(IDE)
|
||||
|
||||
![][28]
|
||||
|
||||
文本编辑器和集成开发环境(IDE)有很多相同之处。后者实际上只是前者加上许多为特定代码而添加的功能。如果你经常使用 IDE,你可能会在扩展管理器中发现一个 XML 或 Markdown 编辑器:
|
||||
|
||||
* [NetBeans][29] 是一个方便 Java 用户的文本编辑器。
|
||||
* [Eclipse][30] 提供了一个强大的编辑套件,其中包含许多扩展,可为你提供所需的工具。
|
||||
|
||||
### 云端编辑器
|
||||
|
||||
![][31]
|
||||
|
||||
在云端工作?当然,你也可以在那里进行编辑。
|
||||
|
||||
* [Etherpad][32] 是在网上运行的文本编辑器应用程序。有独立免费的实例供你使用,或者你也可以设置自己的实例。
|
||||
* [Nextcloud][33] 拥有蓬勃发展的应用场景,包括内置文本编辑器和具有实时预览功能的第三方 Markdown 编辑器。
|
||||
|
||||
### 较新的编辑器
|
||||
|
||||
![][34]
|
||||
|
||||
每个人都会有让文本编辑器变得更完美的想法。因此,几乎每年都会发布新的编辑器。有些以一种新的、令人兴奋的方式重新实现经典的旧想法,有些对用户体验有独特的看法,还有些则专注于特定的需求。
|
||||
|
||||
* [Atom][35] 是来自 GitHub 的多功能的现代文本编辑器,具有许多扩展和 Git 集成。
|
||||
* [Brackets][36] 是 Adobe 为 Web 开发人员提供的编辑器。
|
||||
* [Focuswriter][37] 旨在通过无干扰的全屏模式、可选的打字机音效和精美的配置选项等有用功能帮助你专注于写作。
|
||||
* [Howl][38] 是一个基于 Lua 和 Moonscript 的渐进式动态编辑器。
|
||||
* [Norka][39] 和 [KJots][40] 模仿笔记本,每个文档代表“活页夹”中的“页面”。你可以通过导出功能从笔记本中取出单个页面。
|
||||
|
||||
### 自己制作编辑器
|
||||
|
||||
![][41]
|
||||
|
||||
俗话说得好:既然可以编写自己的应用程序,为什么要使用别人的(虽然其实没有这句俗语)?虽然 Linux 有超过 30 个常用的文本编辑器,但是再说一次,开源的一部分乐趣在于能够亲手进行实验。
|
||||
|
||||
如果你正在寻找学习编程的理由,那么制作自己的文本编辑器是一个很好的入门方法。你可以在大约 100 行代码中实现基础功能,并且你使用它的次数越多,你可能就越会受到启发,进而去学习更多知识,从而进行改进。准备好开始了吗?来吧,去 [创建你自己的文本编辑器][42]。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/21/2/open-source-text-editors
|
||||
|
||||
作者:[Seth Kenlon][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[CoWave-Fall](https://github.com/CoWave-Fall)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [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/button_push_open_keyboard_file_organize.png?itok=KlAsk1gx (open source button on keyboard)
|
||||
[2]: https://opensource.com/sites/default/files/kakoune-screenshot.png
|
||||
[3]: https://opensource.com/article/20/12/vi-text-editor
|
||||
[4]: https://opensource.com/article/20/12/kakoune
|
||||
[5]: https://opensource.com/sites/default/files/jed.png
|
||||
[6]: https://opensource.com/article/20/12/emacs
|
||||
[7]: https://opensource.com/article/20/12/jove-emacs
|
||||
[8]: https://opensource.com/article/20/12/jed
|
||||
[9]: https://www.jedsoft.org/slang
|
||||
[10]: https://opensource.com/sites/default/files/uploads/nano-31_days-nano-opensource.png
|
||||
[11]: https://opensource.com/article/20/12/gnu-nano
|
||||
[12]: https://opensource.com/article/20/12/31-days-text-editors-joe
|
||||
[13]: https://opensource.com/article/20/12/e3-linux
|
||||
[14]: https://opensource.com/article/20/12/gnu-ed
|
||||
[15]: https://opensource.com/article/19/7/what-posix-richard-stallman-explains
|
||||
[16]: https://opensource.com/article/20/12/sed
|
||||
[17]: https://opensource.com/article/20/12/heredoc
|
||||
[18]: https://opensource.com/sites/default/files/uploads/gedit-31_days_gedit-opensource.jpg
|
||||
[19]: https://opensource.com/article/20/12/gedit
|
||||
[20]: https://opensource.com/article/20/12/medit
|
||||
[21]: https://opensource.com/article/20/12/xedit
|
||||
[22]: https://opensource.com/article/20/12/jedit
|
||||
[23]: https://opensource.com/article/20/12/kate-text-editor
|
||||
[24]: https://opensource.com/article/20/12/kwrite-kde-plasma
|
||||
[25]: https://opensource.com/article/20/12/notepad-text-editor
|
||||
[26]: https://opensource.com/article/20/12/31-days-text-editors-pe
|
||||
[27]: https://opensource.com/article/20/12/featherpad
|
||||
[28]: https://opensource.com/sites/default/files/uploads/eclipse-31_days-eclipse-opensource.png
|
||||
[29]: https://opensource.com/article/20/12/netbeans
|
||||
[30]: https://opensource.com/article/20/12/eclipse
|
||||
[31]: https://opensource.com/sites/default/files/uploads/etherpad_0.jpg
|
||||
[32]: https://opensource.com/article/20/12/etherpad
|
||||
[33]: https://opensource.com/article/20/12/31-days-text-editors-nextcloud-markdown-editor
|
||||
[34]: https://opensource.com/sites/default/files/uploads/atom-31_days-atom-opensource.png
|
||||
[35]: https://opensource.com/article/20/12/atom
|
||||
[36]: https://opensource.com/article/20/12/brackets
|
||||
[37]: https://opensource.com/article/20/12/focuswriter
|
||||
[38]: https://opensource.com/article/20/12/howl
|
||||
[39]: https://opensource.com/article/20/12/norka
|
||||
[40]: https://opensource.com/article/20/12/kjots
|
||||
[41]: https://opensource.com/sites/default/files/uploads/this-time-its-personal-31_days_yourself-opensource.png
|
||||
[42]: https://opensource.com/article/20/12/31-days-text-editors-one-you-write-yourself
|
@ -3,82 +3,73 @@
|
||||
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
[#]: reviewer: "turbokernel"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14627-1.html"
|
||||
|
||||
如何在 Ubuntu 22.04 LTS 中安装 Classic GNOME Flashback
|
||||
Ubuntu 22.04 LTS 中安装经典 GNOME Flashback 指南
|
||||
======
|
||||
关于如何在最新的 UBUNTU 22.04 LTS 中安装旧的 Classic GNOME Flashback 的快速指南。
|
||||
|
||||
[GNOME Flashback][1](又名 classic GNOME)是旧 GNOME 3 shell 的一个分支,它使用早期 GNOME 2 技术的布局和原则。它的速度快如闪电,并且在设计上占用的 CPU 和系统资源非常少。因此,它非常适合可以追溯到几十年前的旧硬件。
|
||||
![](https://img.linux.net.cn/data/attachment/album/202205/23/151318xi8c3qipphg8xz0i.jpg)
|
||||
|
||||
随着带有现代 GNOME 42 的 [Ubuntu 22.04 LTS][2] 的发布,有必要寻找消耗很少系统资源的桌面环境选项。
|
||||
> 关于如何在最新的 UBUNTU 22.04 LTS 中安装旧的经典 GNOME Flashback 的快速指南。
|
||||
|
||||
此外,GNOME Flashback 很容易安装在现代 Ubuntu Linux 中,你仍然可以享受 Ubuntu 性能而不必担心 GNOME 42、GTK4、libadwaita 和其他东西。
|
||||
[GNOME Flashback][1](又名 classic GNOME)是旧 GNOME 3 shell 的一个分支,它使用早期 GNOME 2 技术的布局和原则。它的速度快如闪电,并且在设计上非常轻量级。因此,它非常适合几十年前的老旧硬件。
|
||||
|
||||
### 在 Ubuntu 22.04 LTS 中下载并安装 Classic GNOME Flashback
|
||||
随着带有现代 GNOME 42 的 [Ubuntu 22.04 LTS][2] 的发布,有必要寻找轻量级的桌面环境选项。
|
||||
|
||||
此外,GNOME Flashback 很容易安装在现代 Ubuntu Linux 中,你仍然可以享受 Ubuntu 性能而不必关心 GNOME 42、GTK4、libadwaita 之类的东西。
|
||||
|
||||
### 在 Ubuntu 22.04 LTS 中下载并安装经典 GNOME Flashback
|
||||
|
||||
按照以下步骤在 Ubuntu 22.04 LTS 中下载并安装经典 GNOME Flashback(Metacity)。
|
||||
|
||||
在 Ubuntu 22.04 LTS 中打开终端(CTRL+ALT+T)并运行以下命令。安装大小约为 61MB。
|
||||
|
||||
```
|
||||
|
||||
sudo apt update
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
sudo apt install gnome-session-flashback
|
||||
|
||||
sudo apt update
|
||||
sudo apt install gnome-session-flashback
|
||||
```
|
||||
|
||||
![Install GNOME Classic Flashback Metacity in Ubuntu 22.04 LTS][3]
|
||||
|
||||
最后,安装完成后,退出。重新登录时,在登录选项中使用 GNOME Classic。
|
||||
最后,安装完成后,退出。重新登录时,在登录选项中使用经典的 GNOME Flashback(Metacity) 。
|
||||
|
||||
![Choose GNOME Classic while logging in][3]
|
||||
![Choose GNOME Classic while logging in][3a]
|
||||
|
||||
### 经典 GNOME Flashback 的特点
|
||||
|
||||
首先,当你登录时,你将体验到传统的 GNOME 技术,该技术已被证明具有良好的生产力并且比今天的技术快得多。
|
||||
首先,当你登录时,你将体验到传统的 GNOME 技术,它已被证明具有良好的生产力,并且比今天的技术快得多。
|
||||
|
||||
在顶部有旧版面板,左侧是应用菜单,而系统托盘位于桌面的右上方。应用程序菜单显示所有已安装的应用和软件快捷方式,你可以在工作流程中轻松浏览。
|
||||
在顶部有旧版的面板,左侧是应用菜单,而系统托盘位于桌面的右上方。应用程序菜单显示所有已安装的应用和软件快捷方式,你可以在工作流程中轻松浏览。
|
||||
|
||||
此外,在右侧部分,系统托盘具有默认小部件,例如网络、音量控制、日期和时间以及关机菜单。
|
||||
|
||||
![Classic GNOME Flashback Metacity in Ubuntu 22.04 LTS][3]
|
||||
![Classic GNOME Flashback Metacity in Ubuntu 22.04 LTS][3b]
|
||||
|
||||
底部面板包含打开的窗口和工作区切换器的应用列表。默认情况下,它为你提供四个工作区供你使用。
|
||||
|
||||
此外,你可以随时更改顶部面板的设置以自动隐藏、调整面板大小和背景颜色。
|
||||
|
||||
除此之外,你可以通过 ALT+Rigth 单击顶部面板添加任意数量的旧版小程序。
|
||||
除此之外,你可以通过 `ALT + 右键点击` 顶部面板添加任意数量的旧版小程序。
|
||||
|
||||
![Panel Context Menu][3]
|
||||
![Panel Context Menu][3c]
|
||||
|
||||
![Add to panel widgets][3]
|
||||
![Add to panel widgets][3d]
|
||||
|
||||
### GNOME Classic 的性能
|
||||
### 经典 GNOME 的性能
|
||||
|
||||
首先,磁盘空间占用极小,即仅安装 61 MB。我的测试使用了大约 28% 的内存,其中大部分被其他进程占用。猜猜是谁?是的,是 snap-store 又名 Ubuntu 软件。
|
||||
首先,磁盘空间占用极小,仅安装 61 MB。我的测试使用了大约 28% 的内存,其中大部分被其他进程占用。猜猜是谁?是的,是 snap-store(又名 Ubuntu 软件)。
|
||||
|
||||
因此,总体而言,它非常轻巧,内存(仅 28 MB)和 CPU(0.1%)占用空间非常小。
|
||||
|
||||
![Performance of GNOME Classic in Ubuntu 22.04][3]
|
||||
![Performance of GNOME Classic in Ubuntu 22.04][3e]
|
||||
|
||||
此外,假设你将其与同样使用相同技术的 Ubuntu MATE 进行比较。在这种情况下,它比 MATE 更轻量,因为你不需要任何额外的 MATE 应用及其用于通知、主题和其他补充资源的本机包。
|
||||
此外,假设你将其与同样使用相同技术的 Ubuntu MATE 进行比较。在这种情况下,它比 MATE 更轻量,因为你不需要任何额外的 MATE 应用及其用于通知、主题和其他附加资源的软件包。
|
||||
|
||||
### 结束语
|
||||
|
||||
我希望本指南在你决定在 Ubuntu 22.04 LTS Jammy Jellyfish 中安装 GNOME Classic 之前帮助你获得必要的信息。
|
||||
|
||||
* * *
|
||||
|
||||
我们带来最新的技术、软件新闻和重要的东西。通过 [Telegram][4]、[Twitter][5]、[YouTube][6] 和 [Facebook][7] 保持联系,不错过任何更新!
|
||||
|
||||
我希望本指南在你决定在 Ubuntu 22.04 LTS Jammy Jellyfish 中安装经典 GNOME 之前帮助你获得必要的信息。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -87,7 +78,7 @@ via: https://www.debugpoint.com/2022/05/gnome-classic-ubuntu-22-04/
|
||||
作者:[Arindam][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[turbokernel](https://github.com/turbokernel)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
@ -95,7 +86,12 @@ via: https://www.debugpoint.com/2022/05/gnome-classic-ubuntu-22-04/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://wiki.archlinux.org/index.php/GNOME/Flashback
|
||||
[2]: https://www.debugpoint.com/2022/01/ubuntu-22-04-lts/
|
||||
[3]: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
|
||||
[3]: https://www.debugpoint.com/wp-content/uploads/2022/05/Install-GNOME-Classic-Flashback-Metacity-in-Ubuntu-22.04-LTS.jpg
|
||||
[3a]: https://www.debugpoint.com/wp-content/uploads/2022/05/Choose-GNOME-Classic-while-loggin-in.jpg
|
||||
[3b]: https://www.debugpoint.com/wp-content/uploads/2022/05/Classic-GNOME-Flashback-Metacity-in-Ubuntu-22.04-LTS.jpg
|
||||
[3c]: https://www.debugpoint.com/wp-content/uploads/2020/04/Panel-Context-Menu.png
|
||||
[3d]: https://www.debugpoint.com/wp-content/uploads/2020/04/Add-to-panel-widgets.png
|
||||
[3e]: https://www.debugpoint.com/wp-content/uploads/2022/05/Performance-of-GNOME-Classic-in-Ubuntu-22.04.jpg
|
||||
[4]: https://t.me/debugpoint
|
||||
[5]: https://twitter.com/DebugPoint
|
||||
[6]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
|
@ -3,47 +3,41 @@
|
||||
[#]: author: "Phani Kiran https://www.opensourceforu.com/author/phani-kiran/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14631-1.html"
|
||||
|
||||
用 Spark SQL 进行结构化数据处理
|
||||
======
|
||||
Spark SQL 是 Spark 生态系统中处理结构化格式数据的模块。它在内部使用 Spark Core API 进行处理,但对用户的使用进行了抽象。这篇文章深入浅出,告诉你 Spark SQL 3.x 的新内容。
|
||||
|
||||
![][1]
|
||||
> Spark SQL 是 Spark 生态系统中处理结构化格式数据的模块。它在内部使用 Spark Core API 进行处理,但对用户的使用进行了抽象。这篇文章深入浅出地告诉你 Spark SQL 3.x 的新内容。
|
||||
|
||||
有了 Spark SQL,用户还可以编写 SQL 风格的查询。这对于精通结构化查询语言或 SQL 的广大用户群体来说,基本上是很有帮助的。用户也将能够在结构化数据上编写交互式和临时性的查询。Spark SQL 弥补了弹性分布式数据集(RDD)和关系表之间的差距。RDD 是 Spark 的基本数据结构。它将数据作为分布式对象存储在适合并行处理的节点集群中。RDD 很适合底层处理,但在运行时很难调试,程序员不能自动推断 schema。另外,RDD 没有内置的优化功能。Spark SQL 提供了 DataFrames 和数据集来解决这些问题。
|
||||
![](https://img.linux.net.cn/data/attachment/album/202205/24/093036xaf6kaz1auaf4a7s.jpg)
|
||||
|
||||
Spark SQL 可以使用现有的 Hive 元存储、SerDes 和 UDFs。它可以使用 JDBC/ODBC 连接到现有的 BI 工具。
|
||||
有了 Spark SQL,用户可以编写 SQL 风格的查询。这对于精通结构化查询语言或 SQL 的广大用户群体来说,基本上是很有帮助的。用户也将能够在结构化数据上编写交互式和临时性的查询。Spark SQL 弥补了<ruby>弹性分布式数据集<rt>resilient distributed data sets</rt></ruby>(RDD)和关系表之间的差距。RDD 是 Spark 的基本数据结构。它将数据作为分布式对象存储在适合并行处理的节点集群中。RDD 很适合底层处理,但在运行时很难调试,程序员不能自动推断<ruby>模式<rt>schema</rt></ruby>。另外,RDD 没有内置的优化功能。Spark SQL 提供了<ruby>数据帧<rt>DataFrame</rt></ruby>和数据集来解决这些问题。
|
||||
|
||||
Spark SQL 可以使用现有的 Hive 元存储、SerDes 和 UDF。它可以使用 JDBC/ODBC 连接到现有的 BI 工具。
|
||||
|
||||
### 数据源
|
||||
|
||||
大数据处理通常需要处理不同的文件类型和数据源(关系型和非关系型)的能力。Spark SQL 支持一个统一的 DataFrame 接口来处理不同类型的源,如下所示。
|
||||
大数据处理通常需要处理不同的文件类型和数据源(关系型和非关系型)的能力。Spark SQL 支持一个统一的数据帧接口来处理不同类型的源,如下所示。
|
||||
|
||||
*文件:*
|
||||
* 文件:
|
||||
* CSV
|
||||
* Text
|
||||
* JSON
|
||||
* XML
|
||||
* JDBC/ODBC:
|
||||
* MySQL
|
||||
* Oracle
|
||||
* Postgres
|
||||
* 带模式的文件:
|
||||
* AVRO
|
||||
* Parquet
|
||||
* Hive 表:
|
||||
* Spark SQL 也支持读写存储在 Apache Hive 中的数据。
|
||||
|
||||
* CSV
|
||||
* Text
|
||||
* JSON
|
||||
* XML
|
||||
|
||||
*JDBC/ODBC:*
|
||||
|
||||
* MySQL
|
||||
* Oracle
|
||||
* Postgres
|
||||
|
||||
*带 schema 的文件:*
|
||||
|
||||
* AVRO
|
||||
* Parquet
|
||||
|
||||
*Hive 表:*
|
||||
|
||||
* Spark SQL 也支持读写存储在 Apache Hive 中的数据。
|
||||
|
||||
通过 DataFrame,用户可以无缝地读取这些多样化的数据源,并对其进行转换/连接。
|
||||
通过数据帧,用户可以无缝地读取这些多样化的数据源,并对其进行转换/连接。
|
||||
|
||||
### Spark SQL 3.x 的新内容
|
||||
|
||||
@ -67,19 +61,19 @@ AQE 可以通过设置 SQL 配置来启用,如下所示(Spark 3.0 中默认
|
||||
spark.conf.set(“spark.sql.adaptive.enabled”,true)
|
||||
```
|
||||
|
||||
#### 动态合并 shuffle 分区
|
||||
#### 动态合并“洗牌”分区
|
||||
|
||||
Spark 在 shuffle 操作后确定最佳的分区数量。在 AQE 中,Spark 使用默认的分区数,即 200 个。这可以通过配置来启用。
|
||||
Spark 在“<ruby>洗牌<rt>shuffle</rt></ruby>”操作后确定最佳的分区数量。在 AQE 中,Spark 使用默认的分区数,即 200 个。这可以通过配置来启用。
|
||||
|
||||
```
|
||||
spark.conf.set(“spark.sql.adaptive.coalescePartitions.enabled”,true)
|
||||
```
|
||||
|
||||
#### 动态切换 join 策略
|
||||
#### 动态切换连接策略
|
||||
|
||||
广播哈希是最好的连接操作。如果其中一个数据集很小,Spark 可以动态地切换到广播 join,而不是在网络上 shuffe 大量的数据。
|
||||
广播哈希是最好的连接操作。如果其中一个数据集很小,Spark 可以动态地切换到广播连接,而不是在网络上“洗牌”大量的数据。
|
||||
|
||||
#### 动态优化倾斜 join
|
||||
#### 动态优化倾斜连接
|
||||
|
||||
如果数据分布不均匀,数据会出现倾斜,会有一些大的分区。这些分区占用了大量的时间。Spark 3.x 通过将大分区分割成多个小分区来进行优化。这可以通过设置来启用:
|
||||
|
||||
@ -91,16 +85,15 @@ spark.conf.set(“spark.sql.adaptive.skewJoin.enabled”,true)
|
||||
|
||||
### 其他改进措施
|
||||
|
||||
|
||||
此外,Spark SQL 3.x还支持以下内容。
|
||||
|
||||
#### 动态分区修剪
|
||||
|
||||
3.x 将只读取基于其中一个表的值的相关分区。这消除了解析大表的需要。
|
||||
|
||||
#### Join 提示
|
||||
#### 连接提示
|
||||
|
||||
如果用户对数据有了解,这允许用户指定要使用的 join 策略。这增强了查询的执行过程。
|
||||
如果用户对数据有了解,这允许用户指定要使用的连接策略。这增强了查询的执行过程。
|
||||
|
||||
#### 兼容 ANSI SQL
|
||||
|
||||
@ -119,7 +112,7 @@ via: https://www.opensourceforu.com/2022/05/structured-data-processing-with-spar
|
||||
作者:[Phani Kiran][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/) 荣誉推出
|
||||
|
@ -0,0 +1,143 @@
|
||||
[#]: subject: "ONLYOFFICE 7.1 Release Adds ARM Compatibility, a New PDF Viewer, and More Features"
|
||||
[#]: via: "https://news.itsfoss.com/onlyoffice-7-1-release/"
|
||||
[#]: author: "Jacob Crume https://news.itsfoss.com/author/jacob/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "PeterPan0106"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14630-1.html"
|
||||
|
||||
ONLYOFFICE 7.1 发布,新增针对 ARM 的支持、新的 PDF 查看器
|
||||
======
|
||||
|
||||
> ONLYOFFICE Docs 7.1 带来了期待已久的针对文档、电子表格以及演示文稿编辑器的更新。对 ARM 的支持更是画龙点睛之笔。
|
||||
|
||||
![onlyoffice 7.1][1]
|
||||
|
||||
ONLYOFFICE,被认为是 [最佳的微软 Office 替代品][2] 之一,刚刚发布了最新的 7.1 版本更新。
|
||||
|
||||
或许你不了解,ONLYOFFICE 可以在自托管的服务器(例如 Nextcloud)或者桌面上在线使用。
|
||||
|
||||
这个版本最为激动人心的变化就是初步支持了基于 ARM 的设备,例如树莓派。
|
||||
|
||||
接下来请让我们一起看看有什么新的变化。
|
||||
|
||||
### ONLYOFFICE 7.1 : 新变化
|
||||
|
||||
[![ONLYOFFICE Docs 7.1: PDF viewer, animations, print preview in spreadsheets][4]][3]
|
||||
|
||||
除了对 ARM 的支持,ONLYOFFICE 7.1 还提供了如下新功能:
|
||||
|
||||
* 一个全新的 PDF、XPS 和 DjVu 文件查看器
|
||||
* 更方便和可定制的图形选项
|
||||
* 电子表格打印预览
|
||||
* 演示文稿中的动画
|
||||
* 支持 SmartArt 对象
|
||||
|
||||
#### ARM 兼容
|
||||
|
||||
树莓派这样的基于 ARM 的设备正变得越来越热门,许多人已经期待了许久 ONLYOFFICE 对 ARM 架构的支持。
|
||||
|
||||
随着 7.1 版本的发布,ONLYOFFICE Docs 现在可以在所有 ARM64 设备上运行。由于 ARM 设备的效率和安全性的提高,我认为这将对 ONLYOFFICE 的未来产生很大的促进作用。
|
||||
|
||||
#### 全新的 PDF、XPS 和 DjVu 文件查看器
|
||||
|
||||
![onlyoffice][5]
|
||||
|
||||
这是许多其他办公软件多年来的一个关键功能。从 ONLYOFFICE 7.1 开始,用户现在可以更方便地使用文档编辑器来查看 PDF、XPS 和 DjVu 文件。
|
||||
|
||||
新的视图选项卡为用户提供了一个页面缩略图视图和一个导航栏,其视图更为紧凑和简化。
|
||||
|
||||
此外,用户现在还可以将 PDF 文件转换为 DOCX 文件,以便对其进行编辑。因此,我们不用再额外打开其他软件进行处理了,这将显著优化现有的工作流并消除瓶颈。
|
||||
|
||||
#### 选择和编辑图形更加方便
|
||||
|
||||
![onlyoffice][6]
|
||||
|
||||
图形做为现代办公软件的特性,在许多时候并没能发挥足够的作用。尽管 ONLYOFFICE 拥有这些功能已经有一段时间了,但它们在使用时总是相当笨重。
|
||||
|
||||
在 ONLYOFFICE 7.1 中,重新设计的图形选择菜单使得这种情况得到了改变。这个新的菜单与微软 Office 的同类产品非常相似,每个图标都可以从菜单中看到。
|
||||
|
||||
此外,它现在可以显示最近使用的图形,使批量插入图形更加容易。
|
||||
|
||||
图形的最后一项改进是能够使用鼠标来编辑它们。对于那些熟悉 Inkscape 等图形设计软件的人来说,这将会相当得心应手。通过简单地拖动点,你将可以在短时间内创建一个独特的形状。
|
||||
|
||||
#### 电子表格的打印预览
|
||||
|
||||
![][7]
|
||||
|
||||
我相信每个人都发生过由于一个简单的错误而导致打印出现问题的情况。此前其他程序早已经解决了这个问题,但在 ONLYOFFICE 电子表格编辑器中一直没有这个功能。
|
||||
|
||||
新版本终于引入了“打印预览”,这将会显著改善上述的情况。
|
||||
|
||||
这并不算什么十分新颖的更新,只是说它补齐了短板并且可以节省纸张和打印耗材。
|
||||
|
||||
#### 改进的动画页面,便捷的剪切和复制
|
||||
|
||||
![][8]
|
||||
|
||||
针对需要经常使用演示文稿的用户而言,这个版本增加了一个单独的动画标签,使动画的插入变得更为容易。
|
||||
|
||||
ONLYOFFICE 7.1 演示文稿编辑器现在支持各种动画,以及便捷地将一页幻灯片移动以及复制的能力。
|
||||
|
||||
#### SmartArt 对象的支持
|
||||
|
||||
SmartArt 是一种在文档、演示文稿和电子表格中便捷地制作自定义图形的工具。然而,它一直是微软办公软件的一个功能。虽然其他各种应用程序对该格式有不同程度的支持,但它们并不能与微软 Office 相媲美。
|
||||
|
||||
幸运的是,ONLYOFFICE 7.1 现在完全支持这种格式,并且没有任何乱码,仿佛原生的一般。用户将不再需要和以前一样在将 SmartArt 图形转换为普通图形和数字,便于无缝切换。
|
||||
|
||||
### 其他变化
|
||||
|
||||
ONLYOFFICE 7.1 的其他重要改进包括:
|
||||
|
||||
* 新的客户端语言:加利西亚语和阿塞拜疆语
|
||||
* 在受密码保护的文件中,能够在输入密码的同时查看密码
|
||||
* OFORM 文件支持缩放选项
|
||||
* 能够按用户组过滤评论
|
||||
* 支持金字塔图表
|
||||
* 支持金字塔柱状图
|
||||
* 支持垂直和水平圆柱图
|
||||
* 支持垂直和水平圆锥图
|
||||
* 上下文菜单中的移动和复制幻灯片选项
|
||||
* 公式工具提示
|
||||
* 新的货币格式支持
|
||||
|
||||
若想了解全部新特性,请见 [发布日志][9]。
|
||||
|
||||
### 下载 ONLYOFFICE 7.1
|
||||
|
||||
总的来说,ONLYOFFICE 7.1 是一个兼容 ARM 并且功能更为丰富的版本。
|
||||
|
||||
所有版本(企业版、开发版者、社区版)都有更新。
|
||||
|
||||
下载方面提供了很多不同的软件包,包括用于 ARM 版本的 Docker 镜像、 Snap 软件包以及用于云供应商的即点即用选项。你可以前往下载页面,寻找最合适的安装程序。
|
||||
|
||||
下载页面同时列出了安装的官方指南。
|
||||
|
||||
> **[获取 ONLYOFFICE 7.1][10]**
|
||||
|
||||
*你是否已经尝试了新版本呢?*
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/onlyoffice-7-1-release/
|
||||
|
||||
作者:[Jacob Crume][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[PeterPan0106](https://github.com/PeterPan0106)
|
||||
校对:[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/05/onlyoffice-7-1.jpg
|
||||
[2]: https://itsfoss.com/best-free-open-source-alternatives-microsoft-office/
|
||||
[3]: https://youtu.be/5-ervHAemZc
|
||||
[4]: https://i.ytimg.com/vi/5-ervHAemZc/hqdefault.jpg
|
||||
[5]: https://news.itsfoss.com/wp-content/uploads/2022/05/ONLYOFFICE-viewer.png
|
||||
[6]: https://news.itsfoss.com/wp-content/uploads/2022/05/ONLYOFFICE-shapes.png
|
||||
[7]: https://news.itsfoss.com/wp-content/uploads/2022/05/ONLYOFFICE-Print-Preview.png
|
||||
[8]: https://news.itsfoss.com/wp-content/uploads/2022/05/ONLYOFFICE-Animations.png
|
||||
[9]: https://www.onlyoffice.com/blog/2022/05/discover-onlyoffice-docs-v7-1/
|
||||
[10]: https://www.onlyoffice.com/download-docs.aspx
|
@ -0,0 +1,67 @@
|
||||
[#]: subject: "FSF Does Not Accept Debian as a Free Distribution. Here’s Why!"
|
||||
[#]: via: "https://news.itsfoss.com/fsf-does-not-consider-debian-a-free-distribution/"
|
||||
[#]: author: "Abhishek https://news.itsfoss.com/author/root/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "Chao-zhi"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14628-1.html"
|
||||
|
||||
自由软件基金会为什么不认为 Debian 是一种自由发行版?
|
||||
======
|
||||
|
||||
![Why FSF doesn't consider Debian a free distribution][1]
|
||||
|
||||
Debian 项目开发了一个尊重用户自由的 GNU/Linux 发行版。在各种自由软件许可证下发布的软件中,其源代码中包含非自由组件的情形并不鲜见。这些软件在被发布到 Debian 之前会被清理掉。而<ruby>自由软件基金会<rt>Free Software Foundation</rt></ruby>(FSF)维护着一份 [自由 GNU/Linux 发行版的列表][2],但奇怪的是,Debian 并不在其中。事实上, Debian 不符合进入此列表的某些标准,我们想知道到底不满足哪些标准。但首先,我们需要了解所有这些智力工作是如何得到证明的。换句话说,为什么要费心尝试进入一些名单,尤其是这个名单?
|
||||
|
||||
为什么 Debian 应该得到 FSF 的承认,以获得它的自由发行版的地位?曾于 2010 年至 2013 年担任 Debian 项目负责人的 Stefano Zacchiroli 说过几个原因。其中一个 Stefano 称之为“外部审查”的原因我特别赞同。事实上,Debian 有其标准和质量水准,一些软件应当符合这些标准才能成为该发行版的一部分,但除了 Debian 开发人员自己,没有人能控制这个过程。如果该发行版被列入这份珍贵的清单中,那么 FSF 就会密切关注 Debian 的命运,并(在出现问题时)给予适度的批评。我相信这是很好的动力。如果你也这么认为,那么现在让我们看看 FSF 认为 Debian 不够自由的原因。
|
||||
|
||||
### Debian 社会契约
|
||||
|
||||
除了自由 GNU/Linux 发行版列表之外,FSF 还保留了一份因某种原因而被拒绝授予自由地位的 GNU/Linux 发行版的列表。对于此列表中的每个发行版,都有一个评论,简要说明了拒绝的理由。从对 Debian 的评论中可以清楚地看出,FSF 和 Debian 项目在对“自由分发”一词的解释上产生分歧的主要根源来自一份被称为 “<ruby>Debian 社会契约<rt>Debian Social Contract</rt></ruby>”的文件。
|
||||
|
||||
该社会契约的第一个版本是在 1997 年 7 月 4 日由第二任 Debian 项目领导人 Bruce Perens 发表的。作为该契约的一部分,也公布了一套被称为 <ruby>Debian 自由软件准则<rt>Debian Free Software Guidelines</rt></ruby>(DFSG)的规则。从那时起,要成为 Debian 的一部分,分发软件的许可证必须符合 DFSG。该社会契约记录了 Debian 开发者只用自由软件建立操作系统的意图,而 DFSG 则用于将软件分为自由和非自由。2004 年 4 月 26 日,批准了该文件的新版本,取代了 1997 年的版本。
|
||||
|
||||
Debian 社会契约有五条。要回答我们今天主要讨论的问题,我们只需要关注其中两条 —— 即第一条和第五条,其他的省略。可以在 [此处][3] 查看该契约的完整版本。
|
||||
|
||||
第一条说:“**Debian 将保持 100% 自由**。我们在标题为‘<ruby>Debian 自由软件准则<rt>Debian Free Software Guidelines</rt></ruby>’的文件中提供了用于确定一个作品是否‘自由’的准则。我们承诺,根据这些准则,Debian 系统及其所有组件将是自由的。我们将支持在 Debian 上创造或使用自由和非自由作品的人。我们永远不会让系统要求使用非自由组件。”
|
||||
|
||||
同时,第五条写道:“**不符合我们自由软件标准的作品**。我们承认,我们的一些用户需要使用不符合 Debian 自由软件准则的作品。我们在我们的存档中为这些作品创建了“contrib”和“non-free”区域。这些区域中的软件包并不是 Debian 系统的一部分,尽管它们已被配置为可以在 Debian 中使用。我们鼓励 CD 制造商阅读这些区域的软件包的许可证,并确定他们是否可以在其 CD 上分发这些软件包。因此,尽管非自由作品不是 Debian 的一部分,但我们支持它们的使用,并为非自由软件包提供基础设施(例如我们的错误跟踪系统和邮件列表)。”
|
||||
|
||||
因此,在实践中,第一条和第五条意味着:在安装了 Debian 之后,用户得到了一个完全而彻底的自由操作系统,但是如果他们突然想牺牲自由来追求功能,安装非自由软件,Debian 不仅不会阻碍他们这样做,而且会大大简化这一任务。
|
||||
|
||||
尽管该契约规定发行版将保持 100% 自由,但它允许官方存档的某些部分可能包含非自由软件或依赖于某些非自由组件的自由软件。形式上,根据同一契约,这些部分中的软件不是 Debian 的一部分,但 FSF 对此感到不安,因为这些部分使得在系统上安装非自由软件变得更加容易。
|
||||
|
||||
在 2011 年前,FSF 有合理的理由不认为 Debian 是自由的——该发行版附带的 Linux 内核没有清理二进制 blob。但自 2011 年 2 月发布的 Squeeze 至今,Debian 已经包含了完全自由的 Linux 内核。因此,简化非自由软件的安装是 FSF 不承认 Debian 是自由发行版的主要原因,直到 2016 年这是我知道的唯一原因,但在 2016 年初出现了问题……
|
||||
|
||||
### 等等 …… 关 Firefox 什么事?
|
||||
|
||||
很长一段时间,Debian 都包含一个名为 Iceweasel 的浏览器,它只不过是 Firefox 浏览器的更名重塑而已。进行品牌重塑有两个原因:首先,该浏览器标志和名称是 Mozilla 基金会的商标,而提供非自由软件与 DFSG 相抵触。其次,通过在发行版中包含浏览器,Debian 开发人员必须遵守 Mozilla 基金会的要求,该基金会禁止以 Firefox 的名义交付浏览器的修改版本。因此,开发人员不得不更改名称,因为他们在不断地修改浏览器的代码,以修复错误并消除漏洞。但在 2016 年初,Debian 有幸拥有一款经过修改的 Firefox 浏览器,不受上述限制,可以保留原来的名称和徽标。一方面,这是对 Debian 修改的认可,也是对 Debian 信任的体现。另一方面,该软件显然没有清除非自由组件,它现在已成为发行版的一部分。如果此时 Debian 已被列入自由 GNU/Linux 发行版列表,那么自由软件基金会将会毫不犹豫地指出这一点。
|
||||
|
||||
### 结论
|
||||
|
||||
数字世界中的自由与现实世界中的自由同样重要。在这篇文章中,我试图揭示 Debian 最重要的特性之一 —— 开发用户自由的发行版。开发人员花费额外的时间从软件中清理非自由组件,并且以 Debian 为技术基础的数十个发行版继承了它的工作,并由此获得了一部分自由。
|
||||
|
||||
另外,我想分享一个简单的看法,即自由并不像乍看起来那么简单,人们自然会去追问什么是真正的自由,而什么不是。由于 Firefox 的存在,Debian 现在不能被称为自由的 GNU/Linux 发行版。但从 2011 年,当 Debian 终于开始清理内核以及发行版的其他组件时,直到 2016 年 Firefox 成为发行版的一部分时,自由软件基金会出于纯粹的意识形态原因并不认为该发行版是自由的:原因是 Debian 大大简化了非自由软件的安装……现在轮到你来权衡所有的争论,并决定是否将 GNU/Linux 发行版视为自由的了。
|
||||
|
||||
祝你好运!并尽可能保持自由。
|
||||
|
||||
由 Evgeny Golyshev 为 [Cusdeb.com][4] 撰写
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/fsf-does-not-consider-debian-a-free-distribution/
|
||||
|
||||
作者:[Evgeny Golyshev][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[Chao-zhi](https://github.com/Chao-zhi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [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/05/why-fsf-doesnt-consider-debian-a-free-software-1200-%C3%97-675px.png
|
||||
[2]: https://gnu.org/distros/free-distros.en.html
|
||||
[3]: https://debian.org/social_contract
|
||||
[4]: https://wiki.cusdeb.com/Essays:Why_the_FSF_does_not_consider_Debian_as_a_free_distribution/en
|
@ -1,144 +0,0 @@
|
||||
[#]: subject: "ONLYOFFICE 7.1 Release Adds ARM Compatibility, a New PDF Viewer, and More Features"
|
||||
[#]: via: "https://news.itsfoss.com/onlyoffice-7-1-release/"
|
||||
[#]: author: "Jacob Crume https://news.itsfoss.com/author/jacob/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "PeterPan0106"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
||||
ONLYOFFICE 7.1 Release Adds ARM Compatibility, a New PDF Viewer, and More Features
|
||||
======
|
||||
ONLYOFFICE Docs 7.1 brings in much-awaited feature additions to its document, spreadsheet, and presentation programs. Supporting ARM devices is an icing on the cake!
|
||||
|
||||
![onlyoffice 7.1][1]
|
||||
|
||||
ONLYOFFICE, one of the [best open-source Microsoft Office alternatives][2], has just released its new upgrade, i.e., version 7.1.
|
||||
|
||||
If you didn’t know, you can use ONLYOFFICE with online integration on your self-hosted server (like Nextcloud) or the desktop.
|
||||
|
||||
This release brings exciting new changes, notably initial support for ARM-based devices like the Raspberry Pi.
|
||||
|
||||
Let’s take a look at what’s new!
|
||||
|
||||
### ONLYOFFICE 7.1: What’s New?
|
||||
|
||||
[<img src="https://i.ytimg.com/vi/5-ervHAemZc/hqdefault.jpg" alt="ONLYOFFICE Docs 7.1: PDF viewer, animations, print preview in spreadsheets">][3]
|
||||
|
||||
![][4]
|
||||
|
||||
Alongside the headline feature of ARM support, ONLYOFFICE 7.1 has new feature additions on offer. These include:
|
||||
|
||||
* A brand-new PDF, XPS, and DjVu file viewer
|
||||
* More convenient and customizable shape options
|
||||
* Spreadsheets Print Preview
|
||||
* Animations in Presentations
|
||||
* SmartArt Object Support
|
||||
|
||||
#### ARM Compatibility
|
||||
|
||||
As ARM-based devices like the Raspberry Pi become more popular each year, many expected the support for ARM architecture by ONLYOFFICE for a while.
|
||||
|
||||
With the 7.1 release, ONLYOFFICE Docs 7.1 now runs on all ARM64 devices. Thanks to the increased efficiency and security of ARM devices, I suspect this will have a massive impact on the future of ONLYOFFICE.
|
||||
|
||||
#### Brand-new PDF, XPS, and DjVu file viewer
|
||||
|
||||
![onlyoffice][5]
|
||||
|
||||
This is a key feature that many other office programs have had for years. Starting with ONLYOFFICE 7.1, users can now use the document editor to view PDF, XPS, and DjVu files much more conveniently.
|
||||
|
||||
With the capability to open files on the client-side, the new view mode offers users a page thumbnails view and a navigation bar in a much more compact and simplified view.
|
||||
|
||||
Additionally, users can now also convert these PDF files to DOCX files so that you can edit them. As a result, people shouldn’t need to go open multiple different apps to be able to work with the same file, which should help alleviate some major bottlenecks in workflows.
|
||||
|
||||
#### More convenient and customizable shape options
|
||||
|
||||
![onlyoffice][6]
|
||||
|
||||
Often under-used (I think), shapes are a great feature of modern office applications. Although ONLYOFFICE has had them for quite some time now, they have always been rather clunky to work with.
|
||||
|
||||
However, with ONLYOFFICE 7.1, this changes thanks to a redesigned shape selection menu. This new menu closely resembles its Microsoft Office equivalent, with each icon being visible from within the menu.
|
||||
|
||||
Additionally, it now shows the recently used shapes to make repetitive shape insertion easier.
|
||||
|
||||
The final improvement to shapes is the ability to edit them using your mouse. This should be quite familiar for those of you familiar with graphic design software like Inkscape. By simply dragging the points around, you can create a unique shape in almost no time!
|
||||
|
||||
#### Spreadsheets Print Preview
|
||||
|
||||
![][7]
|
||||
|
||||
I’m sure everyone can relate to the frustration when a print fails due to a simple mistake. While other programs solved this problem a while ago, it has remained noticeably absent in the ONLYOFFICE spreadsheet editor.
|
||||
|
||||
Fortunately, this release looks to rectify this, thanks to the introduction of “Print Preview.”
|
||||
|
||||
To be honest, there’s not a lot to say about this, just that it should save a lot of paper and printer frustrations.
|
||||
|
||||
#### New Animation Tab, Move Slides, and Duplicate Slide
|
||||
|
||||
![][8]
|
||||
|
||||
For those of you who make countless presentations with animations, a separate animation tab has been added with this release, making things easier.
|
||||
|
||||
ONLYOFFICE 7.1 presentation editor now supports a variety of animations along with the ability to move slides to the beginning/end of a presentation and duplicate a slide.
|
||||
|
||||
#### SmartArt Object Support
|
||||
|
||||
SmartArt is an easy way to make custom graphics in documents, presentations, and spreadsheets. However, it has always been a Microsoft Office-focused feature. Although various other applications have had varying levels of support for the format, they have never really been comparable to Microsoft Office.
|
||||
|
||||
Fortunately, ONLYOFFICE 7.1 now fully supports this format without any “hacks”, like what used to be required. Unlike the old process of converting the objects to a group of figures, Smart Art is now handled seamlessly and without problems.
|
||||
|
||||
### Other Changes
|
||||
|
||||
Other significant refinements in ONLYOFFICE 7.1 include:
|
||||
|
||||
* New interface languages – Galician and Azerbaijani
|
||||
* Ability to view a password while entering it in password-protected files
|
||||
* Zoom options in OFORM files
|
||||
* Ability to filter comments by groups of users
|
||||
* Pyramid chart support
|
||||
* Pyramid bar chart support
|
||||
* Vertical and horizontal cylinder chart support
|
||||
* Vertical and horizontal cone chart support
|
||||
* Move and duplicate slide options in the context menu
|
||||
* Formula tooltips
|
||||
* New currency support
|
||||
|
||||
For a complete list of changes, I highly suggest you look at the [release notes][9].
|
||||
|
||||
### Download ONLYOFFICE 7.1
|
||||
|
||||
Overall, ONLYOFFICE 7.1 looks to be a great release with ARM compatibility and new features.
|
||||
|
||||
You should find the latest version available for all editions (Enterprise, Developer, Community).
|
||||
|
||||
Plenty of different packages are available, including Docker images for ARM editions, a Snap package, and 1-click app options for cloud providers. You can head to its download page and look for the appropriate installer.
|
||||
|
||||
The download page also mentions the official instructions to get it installed.
|
||||
|
||||
[Get ONLYOFFICE 7.1][10]
|
||||
|
||||
*Have you tried the new update yet?*
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/onlyoffice-7-1-release/
|
||||
|
||||
作者:[Jacob Crume][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[PeterPan0106](https://github.com/PeterPan0106)
|
||||
校对:[校对者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/05/onlyoffice-7-1.jpg
|
||||
[2]: https://itsfoss.com/best-free-open-source-alternatives-microsoft-office/
|
||||
[3]: https://youtu.be/5-ervHAemZc
|
||||
[4]: https://youtu.be/5-ervHAemZc
|
||||
[5]: https://news.itsfoss.com/wp-content/uploads/2022/05/ONLYOFFICE-viewer.png
|
||||
[6]: https://news.itsfoss.com/wp-content/uploads/2022/05/ONLYOFFICE-shapes.png
|
||||
[7]: https://news.itsfoss.com/wp-content/uploads/2022/05/ONLYOFFICE-Print-Preview.png
|
||||
[8]: https://news.itsfoss.com/wp-content/uploads/2022/05/ONLYOFFICE-Animations.png
|
||||
[9]: https://www.onlyoffice.com/blog/2022/05/discover-onlyoffice-docs-v7-1/
|
||||
[10]: https://www.onlyoffice.com/download-docs.aspx
|
@ -0,0 +1,130 @@
|
||||
[#]: subject: "Linux Kernel 5.18 Released with Graphics Driver Changes and New Hardware Support"
|
||||
[#]: via: "https://news.itsfoss.com/linux-kernel-5-18-release/"
|
||||
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: " "
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
||||
Linux Kernel 5.18 Released with Graphics Driver Changes and New Hardware Support
|
||||
======
|
||||
The latest Linux Kernel 5.18 is now available as per the expected schedule without any delays. The release includes support for new hardware, and some core changes.
|
||||
|
||||
![Linux kernel 5.18 release][1]
|
||||
|
||||
[Linux Kernel 5.17][2] came loaded with support for next-gen hardware, including improvements for the Steam Deck.
|
||||
|
||||
Not to forget, every Linux Kernel release is technically exciting, and Linux Kernel 5.18 is no exception.
|
||||
|
||||
### Linux Kernel 5.18: What’s New?
|
||||
|
||||
This time around, we get to see improved support for Razer hardware, Apple Magic keyboard, AMD graphics, and numerous networking, core, and security changes.
|
||||
|
||||
#### A New Razer Driver
|
||||
|
||||
When it comes to gaming gears, the hardware support in Linux needs serious upgrades.
|
||||
|
||||
Yes, there are useful workarounds with open-source drivers. But, that’s not always the solution for every user.
|
||||
|
||||
As spotted by [Phoronix][3], a new Razer HID driver comes with Linux Kernel 5.18, which focuses on Razer BlackWidow keyboards fixing the macro key handling.
|
||||
|
||||
#### AMDGPU FreeSync Video Mode Enabled by Default
|
||||
|
||||
![][4]
|
||||
|
||||
While the support for FreeSync video was good enough, it was a temporary solution to improve the user experience with FreeSync monitors.
|
||||
|
||||
Now, with Linux Kernel 5.18, the FreeSync video mode is enabled by default ([changelog][5]). You do not have to do anything from your side to enable it with supported monitors.
|
||||
|
||||
#### Graphics Driver Updates
|
||||
|
||||
In addition to the improvements to the AMDGPU driver, you also get updates preparing for future hardware.
|
||||
|
||||
There have been changes to support higher DisplayPort rates as well.
|
||||
|
||||
#### Switch from C89 to C11 (GNU11)
|
||||
|
||||
![][6]
|
||||
|
||||
The C programming used for the Linux Kernel was limited to the old C89 standard, which lacked certain features for the current requirements.
|
||||
|
||||
So, C11 was decided to replace it considering the current compiler version requirement i.e. GCC 5.1 sounds perfectly fine with it.
|
||||
|
||||
#### Networking Tweaks
|
||||
|
||||
Linux Kernel 5.18 adds support for new wireless hardware, including MediaTek MT7916, MT7921U, and Broadcom BCM43454/6.
|
||||
|
||||
![][7]
|
||||
|
||||
When it comes to mobile solutions, support for Intel M.2 WWAN card has also been added.
|
||||
|
||||
The Realtek W89 driver now supports AP mode, 6 GHz band, and adds a hardware scan feature.
|
||||
|
||||
Several other improvements have been made to configure IPv6, and handle various protocols, including performance optimizations.
|
||||
|
||||
#### USB Improvements
|
||||
|
||||
Xen USB driver is being hardened against malicious hosts, and the USB DWC3 driver received improvements to support more hardware types.
|
||||
|
||||
You can find various other refinements in the [commit log][8].
|
||||
|
||||
#### Enhanced Apple Keyboard and Tablet Support
|
||||
|
||||
![][9]
|
||||
|
||||
Advancements were made to improve the experience with Apple Magic Keyboards, including the first-generation models.
|
||||
|
||||
Some of the fixes included correcting function-key mapping, keyboard backlight events, and the ability to report the battery level for the 2021 Magic Keyboard model when connected via USB.
|
||||
|
||||
Linux Kernel 5.18 improves input handling and makes things reliable when it comes to tablets.
|
||||
|
||||
You can find changes for new hardware, touchscreens, and other stuff in the related [commit][10].
|
||||
|
||||
#### New ARM Chip Support (Tesla FSD, Raspberry Pi Zero 2 W)
|
||||
|
||||
![][11]
|
||||
|
||||
Tesla’s full self-driving SoC is now supported with Linux Kernel 5.18. Samsung engineers made it possible to upstream into the Linux Kernel.
|
||||
|
||||
Other interesting chip additions include Qualcomm Snapdragon 625/632, and Samsung Exynos 850/7885.
|
||||
|
||||
You also find the support for Raspberry Pi Zero 2 W with Linux Kernel 5.18. In addition to the new entrants, old hardware/boards were removed as well. You can explore the [commit l][12]og to know more.
|
||||
|
||||
You can refer to the [official changelog][13] and Linus Torvald’s announcement to explore more details.
|
||||
|
||||
### How to Install Linux Kernel 5.18?
|
||||
|
||||
You should find the newer kernel listed on [Linux Kernel Archives][14]. So, you can download the [tarball][15] to test it out. Or, you can follow our [Linux Kernel upgrade guide][16] for help.
|
||||
|
||||
If you want to avoid compiling it yourself, you should wait for a few weeks for Linux distributions to push it to the repositories.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/linux-kernel-5-18-release/
|
||||
|
||||
作者:[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/05/kernel-5-18-release.png
|
||||
[2]: https://news.itsfoss.com/linux-kernel-5-17-release/
|
||||
[3]: https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.18-HID
|
||||
[4]: https://news.itsfoss.com/wp-content/uploads/2022/05/amd-linux-5-18-1024x576.jpg
|
||||
[5]: https://lists.freedesktop.org/archives/amd-gfx/2022-February/075262.html
|
||||
[6]: https://news.itsfoss.com/wp-content/uploads/2022/05/c-linux-5-18-1024x576.jpg
|
||||
[7]: https://news.itsfoss.com/wp-content/uploads/2022/05/networking-linux-5-18-1024x576.jpg
|
||||
[8]: https://lore.kernel.org/lkml/Yj7vGtn8fILavjyL@kroah.com/
|
||||
[9]: https://news.itsfoss.com/wp-content/uploads/2022/05/apple-linux-5-18-1024x576.jpg
|
||||
[10]: https://lore.kernel.org/lkml/nycvar.YFH.7.76.2203231015060.24795@cbobk.fhfr.pm/
|
||||
[11]: https://news.itsfoss.com/wp-content/uploads/2022/05/arm-linux-5-18-1024x576.jpg
|
||||
[12]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=baaa68a9796ef2cadfe5caaf4c730412eda0f31c
|
||||
[13]: https://lore.kernel.org/lkml/CAHk-=wjiqyoH6qntYvYTjR1F2L-pHtgX9esZMRS13iktCOJ1zA@mail.gmail.com/T/#u
|
||||
[14]: https://www.kernel.org/
|
||||
[15]: https://git.kernel.org/torvalds/t/linux-5.16.tar.gz
|
||||
[16]: https://itsfoss.com/upgrade-linux-kernel-ubuntu/
|
@ -0,0 +1,77 @@
|
||||
[#]: subject: "System76 Collaborates with HP for a Powerful Linux Laptop for Developers"
|
||||
[#]: via: "https://news.itsfoss.com/hp-dev-one-system76/"
|
||||
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: " "
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
||||
System76 Collaborates with HP for a Powerful Linux Laptop for Developers
|
||||
======
|
||||
HP is entering the Linux hardware market featuring Pop!_OS out-of-the-box, making things exciting. Let’s take a look.
|
||||
|
||||
![hp][1]
|
||||
|
||||
System76 already makes Linux laptops. So, what is this all about?
|
||||
|
||||
Well, this time, it will be a Linux laptop by HP, powered by Pop!_OS, i.e., the Ubuntu-based Linux distribution by System76.
|
||||
|
||||
*Carl Richell* (System76’s Founder) made the announcement through his Twitter handle, with a link to the website that provides additional information on this.
|
||||
|
||||
> Hp-Pop Hooray! Check out [https://t.co/gf2brjjUl8][2]
|
||||
|
||||
[May 20, 2022][3]
|
||||
|
||||
### HP Dev One: A Linux Laptop Built for Developers
|
||||
|
||||
System76 laptops are highly praised for their out-of-the-box hardware compatibility with Pop!_OS. A
|
||||
|
||||
More of the reason Pop!_OS sits nicely with laptops without many hiccups.
|
||||
|
||||
Pop!_OS constantly comes up with updates and feature additions to improve the workflow and make the best out of the available hardware for Linux.
|
||||
|
||||
Now, teaming up with HP sounds like a great idea to step up the notch.
|
||||
|
||||
![HP System76][4]
|
||||
|
||||
So, the idea of a partnership between Pop!_OS and HP is exciting!
|
||||
|
||||
With HP, the availability/warranty of the laptop sounds good on paper compared to System76 laptops in the region where it is not available.
|
||||
|
||||
### AMD-Powered Laptop to Help You Code Better
|
||||
|
||||
HP Dev One seems to start featuring the essentials for developers to multitask, and get things done quickly.
|
||||
|
||||
The laptop uses an **8-core AMD Ryzen 7 PRO processor** coupled with **16 GB RAM** (DDR4 @ 3200 MHz) for starters.
|
||||
|
||||
You can expect a 14-inch full-HD anti-glare display powered by AMD’s Radeon Graphics.
|
||||
|
||||
With HP Dev One, Carl Richell mentions that the laptop will receive **firmware updates** via the [LVFS][5] (Linux Vendor Firmware Service).
|
||||
|
||||
The pricing for the laptop has been mentioned to start at **$1099** for the mentioned specifications.
|
||||
|
||||
The website only says that it is coming soon. So, we do not have an official launch date as of now.
|
||||
|
||||
For a commercial manufacturer like HP, the pricing for the laptop does not sound mind-blowing, but could be a fair deal.
|
||||
|
||||
*What do you think about the pricing for the HP laptop tailored for developers using Linux? Does the price tag sound good? What are your expectations from the laptop?*
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/hp-dev-one-system76/
|
||||
|
||||
作者:[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/05/hpdevone-laptop.jpg
|
||||
[2]: https://t.co/gf2brjjUl8
|
||||
[3]: https://twitter.com/carlrichell/status/1527757934364479488?ref_src=twsrc%5Etfw
|
||||
[4]: https://news.itsfoss.com/wp-content/uploads/2022/05/hpdevone-illustration-1024x576.jpg
|
||||
[5]: https://fwupd.org/
|
142
sources/talk/20220523 7 pieces of Linux advice for beginners.md
Normal file
142
sources/talk/20220523 7 pieces of Linux advice for beginners.md
Normal file
@ -0,0 +1,142 @@
|
||||
[#]: 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: " "
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
||||
7 pieces of Linux advice for beginners
|
||||
======
|
||||
We asked our community of writers for the best advice they got when they first started using Linux.
|
||||
|
||||
![Why the operating system matters even more in 2017][1]
|
||||
|
||||
Image by: Internet Archive Book Images. Modified by Opensource.com. CC BY-SA 4.0
|
||||
|
||||
What advice would you give a new Linux user? We asked our community of writers to share their favorite Linux advice.
|
||||
|
||||
### 1. Use Linux resources
|
||||
|
||||
My brother told me that Linux was like a "software erector set" (that's a dated reference to the old Erector sets that could be purchased in the 1950s and 1960s) which was a helpful metaphor. I was using Windows 3.1 and Windows NT at the time and was trying to build a useful and safe K-12 school district website. This was in 2001 and 2002 and there were very few texts or resources on the web that were helpful. One of the resources recommended was the "Root Users Guide," a very large book that had lots of printed information in it but was tough to decipher and know just how to proceed.
|
||||
|
||||
One of the most useful resources for me was an online course that Mandrake Linux maintained. It was a step-by-step explanation of the nuances of using and administering a Linux computer or server. I used that along with a listserv that Red Hat maintained in those days, where you could pose questions and get answers.
|
||||
|
||||
—— [Don Watkins][2]
|
||||
|
||||
### 2. Ask the Linux community for help
|
||||
|
||||
My advice is to ask questions, in all of their settings. You can start out with an Internet search, looking for others who have had the same or similar questions (maybe even better questions.) It takes a while to know what to ask and how to ask it.
|
||||
|
||||
Once you become more familiar with Linux, check through the various forums out there, to find one or more that you like, and again, before you ask something yourself, look to see if someone else has already had the question and had it answered.
|
||||
|
||||
Getting involved in a mail list is also helpful, and eventually, you may find yourself knowledgeable enough to answer some questions yourself. As they say, you learn the most about something by becoming able to answer someone else's questions about it.
|
||||
|
||||
Meanwhile, you also become more familiar with using a system that's not a black box that you never understand how something is done except by paying for it.
|
||||
|
||||
—— [Greg Pittman][3]
|
||||
|
||||
My advice is to get familiar with help utilities such as man and info. Also, spend as much time as possible at the command line interface and really get used to the fundamental UNIX design. As a matter of fact, one of my favorite books is a UNIX book from the 80s because it really helps in understanding files, directories, devices, basic commands, and more.
|
||||
|
||||
—— [Alan Formy-Duval][4]
|
||||
|
||||
The best advice I got was to trust the community with answers and manual pages for detailed information and "how-to" use different options. However, I started off around 2009-ish, there were a lot of tools and resources available, including a project called [Linux from Scratch (LFS)][5]. This project really taught me a lot about the internals and how to actually build an LFS image.
|
||||
|
||||
—— [Sumantro Mukherjee][6]
|
||||
|
||||
My advice is to read. Using places like [Ask Fedora][7] or the Fedora Matrix chat or other forum type areas. Just read what others are saying, and trying to fix. I learned a lot from just reading what others were struggling with, and then I would try to figure out how the issue was caused.
|
||||
|
||||
—— [Steve Morris][8]
|
||||
|
||||
### 3. Try dual booting
|
||||
|
||||
I started with a dual-boot system in the late 90s (Windows and Linux), and while I wanted to really use Linux, I ended up booting Windows to work in my familiar desktop environment. One of the best pieces of advice was to change the boot order, so every time I wasn't quick enough, I ended up using Linux. ;)
|
||||
|
||||
—— [Heike Jurzik][9]
|
||||
|
||||
I was challenged by one of my team to do a knowledge swap.
|
||||
|
||||
He (our Linux sysadmin) built his website in **Joomla!** (which our web team specialized in, and he wanted to know more about) and I adopted Linux (having been Windows only to that point.) We dual booted to start with, as I still had a bunch of OS-dependent software I needed to use for the business, but it jump-started my adoption of Linux.
|
||||
|
||||
It was really helpful to have each other as an expert to call on while we were each learning our way into the new systems, and quite a challenge to keep going and not give up because he hadn't!
|
||||
|
||||
I did have a big sticky note on my monitor saying "anything with `rm` in the command, ask first" after a rather embarrassing blunder early on. He wrote a command-line cheat sheet (there are dozens [online now][10]) for me, which really helped me get familiar with the basics. I also started with the [KDE version][11] of Ubuntu, which I found really helpful as a novice used to working with a GUI.
|
||||
|
||||
I've used Linux ever since (aside from my work computer) and he's still on Joomla, so it seemed to work for both of us!
|
||||
|
||||
—— [Ruth Cheesley][12]
|
||||
|
||||
### 4. Back it up for safety
|
||||
|
||||
My advice is to use a distro with an easy and powerful backup app. A new Linux user will touch, edit, destroy and restore configurations. They probably will reach a time when their OS will not boot and losing data is frustrating.
|
||||
|
||||
With a backup app, they're always sure that their data is safe.
|
||||
|
||||
We all love Linux because it allows us to edit everything, but the dark side of this is that making fatal errors is always an option.
|
||||
|
||||
—— [Giuseppe Cassibba][13]
|
||||
|
||||
### 5. Share the Linux you know and use
|
||||
|
||||
My advice is to share the Linux you use. I used to believe the hype that there were distributions that were "better" for new users, so when someone asked me to help them with Linux, I'd show them the distro "for new users." Invariably, this resulted in me sitting in front of their computer looking like I had never seen Linux before myself, because something would be just unfamiliar enough to confuse me. Now when someone asks about Linux, I show them how to use what I use. It may not be branded as the "best" Linux for beginners, but it's the distro I know best, so when their problems become mine, I'm able to help solve them (and sometimes I learn something new, myself.)
|
||||
|
||||
—— [Seth Kenlon][14]
|
||||
|
||||
There was a saying back in the old days, "Do not just use a random Linux distro from a magazine cover. Use the distro your friend is using, so you can ask for help when you need it." Just replace "from a magazine cover" with "off the Internet" and it's still valid :-) I never followed this advice, as I was the only Linux user in a 50km radius. Everyone else was using FreeBSD, IRIX, Solaris, and Windows 3.11 around me. Later I was the one people were asking for Linux help.
|
||||
|
||||
—— [Peter Czanik][15]
|
||||
|
||||
### 6. Keep learning Linux
|
||||
|
||||
I was a reseller partner prior to working at Red Hat, and I had a few home health agencies with traveling nurses. They used a quirky package named Carefacts, originally built for DOS, that always got itself out of sync between the traveling laptops and the central database.
|
||||
|
||||
The best early advice I heard was to take a hard look at the open source movement. Open source is mainstream in 2022, but it was revolutionary a generation ago when nonconformists bought Red Hat Linux CDs from retailers. Open source turned conventional wisdom on its ear. I learned it was not communism and not cancer, but it scared powerful people.
|
||||
|
||||
My company built its first customer firewall in the mid-1990s, based on Windows NT and a product from Altavista. That thing regularly crashed and often corrupted itself. We built a Linux-based firewall for ourselves and it never gave us a problem. And so, we replaced that customer Altavista system with a Linux-based system, and it ran trouble-free for years. I built another customer firewall in late 1999. It took me three weeks to go through a book on packet filtering and get the `ipchains` commands right. But it was beautiful when I finally finished, and it did everything it was supposed to do. Over the next 15+ years, I built and installed hundreds more, now with `iptables` ; some with bridges or proxy ARP and QOS to support video conferencing, some with [IPSEC][16] and [OpenVPN tunnels][17]. I got pretty good at it and earned a living managing individual firewalls and a few active/standby pairs, all with Windows systems behind them. I even built a few virtual firewalls.
|
||||
|
||||
But progress never stops. By 2022, [iptables is obsolete][18] and my firewall days are a fond memory.
|
||||
|
||||
The ongoing lesson? Never stop exploring.
|
||||
|
||||
—— [Greg Scott][19]
|
||||
|
||||
### 7. Enjoy the process
|
||||
|
||||
Be patient. Linux is a different system than what you are used to, be prepared for a new world of endless possibilities. Enjoy it.
|
||||
|
||||
—— [Alex Callejas][20]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/22/5/linux-advice-beginners
|
||||
|
||||
作者:[Opensource.com][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://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
|
@ -1,58 +0,0 @@
|
||||
[#]: subject: "Five common mistakes when using automation"
|
||||
[#]: via: "https://fedoramagazine.org/five-common-mistakes-when-using-automation/"
|
||||
[#]: author: "Gary Scarborough https://fedoramagazine.org/author/gscarbor/"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
||||
Five common mistakes when using automation
|
||||
======
|
||||
|
||||
![][1]
|
||||
|
||||
Background image from ["Modern Times" (1936)][2], [United Artists][3], Public domain, via Wikimedia Commons
|
||||
|
||||
As automation expands to cover more aspects of IT, more administrators are learning automation skills and applying them to ease their workload. Automation can ease the burden of repetitive tasks and add a level of conformity to infrastructure. But when IT workers deploy automation, there are common mistakes that can wreak havoc on infrastructures large and small. Five common mistakes are typically seen in automation deployments.
|
||||
|
||||
### Lack of testing
|
||||
|
||||
A beginner’s mistake that is commonly made is that automation scripts are not thoroughly tested. A simple shell script can have adverse affects on a server due to typos or logic errors. Multiply that mistake by the number of servers in your infrastructure, and you can have a big mess to clean up. Always test your automation scripts before deploying in large scale.
|
||||
|
||||
### Unexpected server load
|
||||
|
||||
The second mistake that frequently occurs is not predicting the system load the script may put on other resources. Running a script that downloads a file or installs a package from a repository may be fine when the target is a dozen servers. Scripts are often run against hundreds or thousands of servers. This load can bring supporting services to a stand still or crash them entirely. Don’t forget to consider end point impact or set a reasonable concurrency rate.
|
||||
|
||||
### Run away scripts
|
||||
|
||||
One use of automation tools is to ensure compliance to standard settings. Automation can make it easy to ensure that every server in a group has exactly the same settings. Problems may arise if a server in that group needs to be altered from that baseline, and the administrator is not aware of the compliance standard. Unneeded and unwanted services can be installed and enabled leading to possible security concerns.
|
||||
|
||||
### Lack of documentation
|
||||
|
||||
A constant duty for administrators should be to document their work. Companies can have frequent new employees in IT departments due to contracts ending or promotions or regular employee turnover. It is also not uncommon for work groups within a company to be siloed from each other. For these reasons it is important to document what automation is in place. Unlike user run scripts, automation may continue long after the person who created it leaves the group. Administrators can find themselves facing strange behaviors in their infrastructure from automation left unchecked.
|
||||
|
||||
### Lack of experience
|
||||
|
||||
The last mistake on the list is when administrators do not know enough about the systems they are automating. Too often admins are hired to work positions where they do not have adequate training and no one to learn from. This has been especially relevant since COVID when companies are struggling to fill vacancies. Admins are then forced to deal with infrastructure they didn’t set up and may not fully understand. This can lead to very inefficient scripts that waste resources or misconfigured servers.
|
||||
|
||||
### Conclusion
|
||||
|
||||
More and more admins are learning automation to help them in their everyday tasks. As a result, automation is being applied to more areas of technology. Hopefully this list will help prevent new users from making these mistakes and urge seasoned admins to re-evaluate their IT strategies. Automation is meant to ease the burden of repetitive tasks, not cause more work for the end user.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://fedoramagazine.org/five-common-mistakes-when-using-automation/
|
||||
|
||||
作者:[Gary Scarborough][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://fedoramagazine.org/author/gscarbor/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://fedoramagazine.org/wp-content/uploads/2022/05/modern-times-816x345.jpg
|
||||
[2]: https://en.wikipedia.org/wiki/Modern_Times_(film)
|
||||
[3]: https://commons.wikimedia.org/wiki/File:Chaplin_-_Modern_Times.jpg
|
@ -1,69 +0,0 @@
|
||||
[#]: subject: "Use this open source screen reader on Windows"
|
||||
[#]: via: "https://opensource.com/article/22/5/open-source-screen-reader-windows-nvda"
|
||||
[#]: author: "Peter Cheer https://opensource.com/users/petercheer"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
||||
Use this open source screen reader on Windows
|
||||
======
|
||||
In honor of Global Accessibility Awareness Day, learn about the NVDA open source screen reader and how you can get involved to improve accessibility for all web users.
|
||||
|
||||
![Working from home at a laptop][1]
|
||||
Image by: Opensource.com
|
||||
|
||||
Screen readers are a specialized area of assistive technology software that reads and then speaks the content of a computer screen. People with no sight at all are just a fraction of those with visual impairments, and screen reader software can help all groups. Screen readers are mostly specific to an operating system, and they're used by people with visual impairments and accessibility trainers, as well as developers and accessibility consultants wanting to test how accessible a website or application is.
|
||||
|
||||
### How to use the NVDA screen reader
|
||||
|
||||
The [WebAIM screen reader user surveys][2] began in 2009 and ran to 2021. In the first survey, the most common screen reader used was JAWS at 74%. It is a commercial product for Microsoft Windows, and the long-time market leader. NVDA, then a relatively new open source screen reader for Windows came in at just 8%. Fast forward to 2021 and JAWS comes in with 53.7% with NVDA at 30.7%.
|
||||
|
||||
You can download the latest release of NVDA from the [NVAccess website][3]. Why do I use NVDA and recommend it to my MS Windows using clients? Well, it is open source, fast, powerful, easy to install, supports a wide variety of languages, can be run as a portable application, has a large user base, and there is a regular release cycle for new versions.
|
||||
|
||||
NVDA has been translated into fifty-five languages and is used in one-hundred and seventy-five different countries. There is also an active developer community with their own [Community Add-ons website][4]. Any add-ons you choose to install will depend on your needs and there are a lot to choose from, including extensions for common video conferencing platforms.
|
||||
|
||||
Like all screen readers, there are a lot of key combinations to learn with NVDA. Using any screen reader proficiently takes training and practice.
|
||||
|
||||
![Image of NVDA welcome screen][5]
|
||||
|
||||
Teaching NVDA to people familiar with computers and who have keyboard skills is not too difficult. Teaching basic computer skills (without the mouse, touch pad, and keyboard skills) and working with NVDA to a complete beginner is far more of a challenge. Individual learning styles and preferences differ. In addition, people may not need to learn how to do everything if all that they want to do is browse the web and use email. A good source of links to NVDA tutorials and resources is [Accessibility Central][6].
|
||||
|
||||
It becomes easier once you have mastered operating NVDA with keyboard commands, but there is also a menu-driven system for many configuration tasks.
|
||||
|
||||
![Image of NVDA menu][7]
|
||||
|
||||
### Test for accessibility
|
||||
|
||||
The inaccessibility of some websites to screen reader users has been a problem for many years, and still is despite disability equality legislation like the Americans with Disabilities Act (ADA). An excellent use for NVDA in the sighted community is for website accessibility testing. NVDA is free to download, and by running a portable version, website developers don't even need to install it. Run NVDA, turn off your monitor or close your eyes, and see how well you can navigate a website or application.
|
||||
|
||||
NVDA can also be used for testing when working through the (often ignored) task of properly [tagging a PDF document for accessibility][8].
|
||||
|
||||
There are several guides that concentrate on using NVDA for accessibility testing. I can recommend [Testing Web Pages with NVDA][9] and Using [NVDA to Evaluate Web Accessibility][10].
|
||||
|
||||
Image by: (Peter Cheer, CC BY-SA 4.0)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/22/5/open-source-screen-reader-windows-nvda
|
||||
|
||||
作者:[Peter Cheer][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://opensource.com/users/petercheer
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://opensource.com/sites/default/files/lead-images/wfh_work_home_laptop_work.png
|
||||
[2]: https://webaim.org/projects
|
||||
[3]: https://www.nvaccess.org
|
||||
[4]: https://addons.nvda-project.org/index.en.html
|
||||
[5]: https://opensource.com/sites/default/files/2022-05/nvda1.png
|
||||
[6]: http://www.accessibilitycentral.net/
|
||||
[7]: https://opensource.com/sites/default/files/2022-05/nvda2.png
|
||||
[8]: https://www.youtube.com/watch?v=rRzWRk6cXIE
|
||||
[9]: https://www.unimelb.edu.au/accessibility/tools/testing-web-pages-with-nvda
|
||||
[10]: https://webaim.org/articles/nvda
|
@ -2,7 +2,7 @@
|
||||
[#]: via: "https://www.debugpoint.com/2022/05/customize-gnome-42-look-1/"
|
||||
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: " "
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
@ -0,0 +1,109 @@
|
||||
[#]: subject: "‘Speek!’ : An Open-Source Chat App That Uses Tor"
|
||||
[#]: via: "https://itsfoss.com/speek/"
|
||||
[#]: author: "Pratham Patel https://itsfoss.com/author/pratham/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: " "
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
||||
‘Speek!’ : An Open-Source Chat App That Uses Tor
|
||||
======
|
||||
An interesting open-source private messenger that utilizes Tor to keep your communications secure and private.
|
||||
|
||||
Speek is an internet messaging service that leverages multiple technologies to help keep your internet chats private.
|
||||
|
||||
It is end-to-end encrypted, decentralized, and open-source.
|
||||
|
||||
Undoubtedly, it aims to pitch itself as one of the [WhatsApp alternatives][1] and a competitor to [Signal on Linux][2].
|
||||
|
||||
So, what is it all about? Let us take a closer look at the details.
|
||||
|
||||
### ‘Speek!’ A Peer-to-Peer Instant Messaging App for Linux and Android
|
||||
|
||||
![screenshot of Speek][3]
|
||||
|
||||
Speek! (with an exclamation mark as part of its name) is an encrypted chat messenger that aims to fight against censorship while keeping your data private.
|
||||
|
||||
To keep things simple, we ignore the exclamation mark for the rest of the article.
|
||||
|
||||
You can also find it as an alternative to [Session][4], but with some differences.
|
||||
|
||||
It is a fairly new competitor compared to other messengers available. However, it should be a candidate to try as an open-source solution.
|
||||
|
||||
While it claims to keep you anonymous, you should always be cautious of your activities on your devices to ensure complete anonymity, if that’s what you require. It’s not just the messenger that you need to think of.
|
||||
|
||||
![speek id][5]
|
||||
|
||||
It utilizes a decentralized Tor network to keep things secure and private. And, this enables it to make the service useful without needing your phone number. You just require your Speek ID to connect with people, and it is tough for someone to know your ID.
|
||||
|
||||
### Features of Speek
|
||||
|
||||
![speek options][6]
|
||||
|
||||
Some key highlights include:
|
||||
|
||||
* End-to-end encryption: No one except for the recipient can view your messages.
|
||||
* Routing traffic over TOR: Using TOR for routing messages, enhances privacy.
|
||||
* No centralized server: Increases resistance against censorship because it’s tough to shut down the service. Moreover, no single attack point for hackers.
|
||||
* No sign-ups: You do not need to share any personal information to start using the service. You just need a public key to identify/add users.
|
||||
* Self-destructing chat: When you close the app, the messages are automatically deleted. For an extra layer of privacy and security.
|
||||
* No metadata: It eliminates any metadata when you exchange messages.
|
||||
* Private file sharing: You can also use the service to share files securely.
|
||||
|
||||
### Download Speek For Linux and Other Platforms
|
||||
|
||||
You can download Speek from their [official website][7].
|
||||
|
||||
At the time of writing this article, Speek is available only on Linux, Android macOS, and Windows.
|
||||
|
||||
For Linux, you will find an [AppImage][8] file. In case you are unaware of AppImages, you can refer to our [AppImage guide][9] to run the application.
|
||||
|
||||
![speek android][10]
|
||||
|
||||
And, the Android app on the [Google Play Store][11] is fairly new. So, you should expect improvements when you try it out.
|
||||
|
||||
[Speek!][12]
|
||||
|
||||
### Thoughts on Using Speek
|
||||
|
||||
![screenshot of Speek][13]
|
||||
|
||||
The user experience for the app is pretty satisfying, and checks all the essentials required. It could be better, but it’s decent.
|
||||
|
||||
Well, there isn’t much to say about Speek’s GUI. The GUI is very minimal. It is a chat app at its core and does exactly that. No stories, no maps, no unnecessary add-ons.
|
||||
|
||||
In my limited time of using the app, I am satisfied with its functionalities. The features that it offers, make it a good chat app for providing a secure and private messaging experience with all the tech behind it.
|
||||
|
||||
If you’re going to compare it with some commercially successful chat apps, it falls short on features. But then again, Speek is not designed as a trendy chat app with a sole focus on user experience.
|
||||
|
||||
So, I would only recommend Speek for privacy-conscious users. If you want a balance of user experience and features, you might want to continue using private messengers like Signal.
|
||||
|
||||
*What do you think about Speek? Is it a good private messenger for privacy-focused users? Kindly let me know your thoughts in the comments section below.*
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/speek/
|
||||
|
||||
作者:[Pratham Patel][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://itsfoss.com/author/pratham/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://itsfoss.com/private-whatsapp-alternatives/
|
||||
[2]: https://itsfoss.com/install-signal-ubuntu/
|
||||
[3]: https://itsfoss.com/wp-content/uploads/2022/05/01_speek_gui-1-800x532.webp
|
||||
[4]: https://itsfoss.com/session-messenger/
|
||||
[5]: https://itsfoss.com/wp-content/uploads/2022/05/speek-id-800x497.png
|
||||
[6]: https://itsfoss.com/wp-content/uploads/2022/05/speek-options-800x483.png
|
||||
[7]: https://speek.network
|
||||
[8]: https://itsfoss.com/appimage-interview/
|
||||
[9]: https://itsfoss.com/use-appimage-linux/
|
||||
[10]: https://itsfoss.com/wp-content/uploads/2022/05/speek-android.jpg
|
||||
[11]: https://play.google.com/store/apps/details?id=com.speek.chat
|
||||
[12]: https://speek.network/
|
||||
[13]: https://itsfoss.com/wp-content/uploads/2022/05/01_speek_gui-1-800x532.webp
|
@ -0,0 +1,409 @@
|
||||
[#]: subject: "A hands-on guide to images and containers for developers"
|
||||
[#]: via: "https://opensource.com/article/22/5/guide-containers-images"
|
||||
[#]: author: "Evan "Hippy" Slatis https://opensource.com/users/hippyod"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: " "
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
||||
A hands-on guide to images and containers for developers
|
||||
======
|
||||
Understand the key concepts behind images and containers. Then try a lab that demonstrates building and running images and containers.
|
||||
|
||||
![Shipping containers stacked in a yard][1]
|
||||
|
||||
Image by: Lucarelli via Wikimedia Commons. CC-BY-SA 3.0
|
||||
|
||||
Containers and Open Container Initiative (OCI) images are important open source application packaging and delivery technologies made popular by projects like Docker and Kubernetes. The better you understand them, the more able you will be to use them to enhance the consistency and scalability of your projects.
|
||||
|
||||
In this article, I will describe this technology in simple terms, highlight the essential aspects of images and containers for a developer to understand, then wrap up by discussing some best practices developers can follow to make their containers portable. I will also walk you through a simple lab that demonstrates building and running images and containers.
|
||||
|
||||
### What are images?
|
||||
|
||||
Images are nothing more than a packaging format for software. A great analogy is Java's JAR file or a Python wheel. JAR (or EAR or WAR) files are simply ZIP files with a different extension, and Python wheels are distributed as gzipped tarballs. All of them conform to a standard directory structure internally.
|
||||
|
||||
Images are packaged as `tar.gz` (gzipped tarballs), and they include the software you're building and/or distributing, but this is where the analogy to JARs and wheels ends. For one thing, images package not just your software but all supporting dependencies needed to run your software, up to and including a complete operating system. Whereas wheels and JARs are usually built as dependencies but can be executable, images are almost always built to be executed and more rarely as a dependency.
|
||||
|
||||
Knowing the details of what's in the images isn't necessary to understand how to use images or to write and design software for them (if you're interested, read ["What is a container image?"][2]). From your perspective, and especially from the perspective of your software, what's important to understand is that the images you create will contain a *complete operating system*. Because images are packaged as if they're a complete operating system from the perspective of the software you wish to run, they are necessarily much larger than software packaged in a more traditional fashion.
|
||||
|
||||
Note that images are immutable. They cannot be changed once they are built. If you modify the software running on the image, you must build an entirely new image and replace the old one.
|
||||
|
||||
#### Tags
|
||||
|
||||
When images are created, they are created with a unique hash, but they are typically identified with a human-readable name such as `ubi`, `ubi-minimal`, `openjdk11`, and so on. However, there can be different versions of the image for each of their names, and those are typically differentiated by tags. For example, the `openjdk11` image might be tagged as `jre-11.0.14.1_1-ubi` and `jre-11.0.14.1_1-ubi-minimal,` denoting image builds of the openjdk11 software package version 11.0.14.1_1 installed on a Red Hat `ubi` and `ubi minimal` image, respectively.
|
||||
|
||||
### What are containers?
|
||||
|
||||
Containers are images that have been realized and executed on a host system. Running a container from an image is a two-step process: create and start. Create takes the image and gives it its own ID and filesystem. Create (as in `docker create`, for example) can be repeated many times in order to create many instances of a running image, each with its own ID and filesystem. Starting the container will launch an isolated process on the host machine in which the software running inside the container will behave as if it is running in its very own virtual machine. A container is thus an isolated process on the host machine, with its own ID and independent filesystem.
|
||||
|
||||
From a software developer's perspective, there are two primary reasons to use containers: consistency and scalability. These are related to each other, and together they allow projects to use one of the most promising innovations to come to software development in recent years, the principle of "Build once, deploy many."
|
||||
|
||||
#### Consistency
|
||||
|
||||
Because images are immutable and include all of the dependencies needed to run your software from the OS on up, you gain consistency wherever you choose to deploy it. This means whether you launch an image as a container in a development, test, or any number of production environments, the container will run exactly the same way. As a software developer, you won't have to worry about whether any of those environments are running on a different host operating system or version, because the container is running the same operating system every time. That's the benefit of packaging your software along with its complete runtime environment, rather than just your software without the complete set of dependencies needed to run it.
|
||||
|
||||
This consistency means that in almost all cases, when an issue is found in one environment (for example, production), you can be confident that you'll be able to reproduce that issue in development or some other environment, so you can confirm the behavior and focus on fixing it. Your project should never get mired in and stumped by the dreaded "But it works on my machine" problem again.
|
||||
|
||||
#### Scalability
|
||||
|
||||
Images contain not only your software but also all the dependencies needed to run your software, including the underlying operating system. This means all processes running inside the container view the container as the host system, the host system is invisible to processes running inside the container, and, from the host system's point of view, the container is just another process it manages. Of course, virtual machines do almost the same thing, which raises a valid question: Why use container technology instead of a virtual machine? The answer lies in both speed and size.
|
||||
|
||||
Containers run only the software required to support an independent host without the overhead of having to mimic the hardware. Virtual machines must contain a complete operating system and mimic the underlying hardware. The latter is a very heavyweight solution, which also results in much larger files. Because containers are treated as just another running process from the host system's perspective, they can be spun up in seconds rather than minutes. When your application needs to scale quickly, containers will beat a virtual machine in resources and speed every time. Containers are also easier to scale back down.
|
||||
|
||||
Scaling is outside the scope of this article from a functional standpoint, so the lab will not be demonstrating this feature, but it's important to understand the principle in order to understand why container technology represents such a significant advance in the packaging and deployment of software.
|
||||
|
||||
Note: While it is possible to [run a container that does not include a complete operating system][3], this is rarely done because the minimal images available are usually an insufficient starting point.
|
||||
|
||||
### How to find and store images
|
||||
|
||||
Like every other type of software packaging technology, containers need a place where packages can be shared, found, and reused. These are called image registries, analogous to Java Maven and Python wheel repositories or npm registries.
|
||||
|
||||
These are a sampling of different image registries available on the internet:
|
||||
|
||||
* [Docker Hub][4]: The original Docker registry, which hosts many Docker official images used widely among projects worldwide and provides opportunities for individuals to host their own images. One of the organizations that hosts images on Docker Hub is adoptopenjdk; view their repository for examples of images and tags for the [openjdk11][5] project.
|
||||
* [Red Hat Image Registry][6]: Red Hat's official image registry provides images to those with valid Red Hat subscriptions.
|
||||
* [Quay][7]: Red Hat's public image registry hosts many of Red Hat's publicly available images and provides providing opportunities for individuals to host their own images.
|
||||
|
||||
### Using images and containers
|
||||
|
||||
There are two utilities whose purpose is to manage images and containers: [Docker][8]and [Podman][9]. They are available for Windows, Linux, and Mac workstations. From a developer's point of view, they are completely equivalent when executing commands. They can be considered aliases of one another. You can even install a package on many systems that will automatically change Docker into a Podman alias. Wherever Podman is mentioned in this document, Docker can be safely substituted with no change in outcome.
|
||||
|
||||
You'll immediately notice these utilities are very similar to [Git][10] in that they perform tagging, pushing, and pulling. You will use or refer to this functionality regularly. They should not be confused with Git, however, since Git also manages version control, whereas images are immutable and their management utilities and registry have no concept of change management. If you push two images with the same name and tag to the same repository, the second image will overwrite the first with no way to see or understand what has changed.
|
||||
|
||||
#### Subcommands
|
||||
|
||||
The following are a sampling of Podman and Docker subcommands you will commonly use or refer to:
|
||||
|
||||
* build: `build` an image
|
||||
* Example: `podman build -t org/some-image-repo -f Dockerfile`
|
||||
* image: manage `image`s locally
|
||||
* Example: `podman image rm -a` will remove all local images.
|
||||
* images: list `images` stored locally
|
||||
* tag: `tag` an image
|
||||
* container: manage `container`s
|
||||
* Example: `podman container rm -a` will remove all stopped local containers.
|
||||
* run: `create` and `start` a container
|
||||
* also `stop` and `restart`
|
||||
* pull/push: `pull`/push and image from/to a repository on a registry
|
||||
|
||||
#### Dockerfiles
|
||||
|
||||
Dockerfiles are the source files that define images and are processed with the `build` subcommand. They will define a parent or base image, copy in or install any extra software you want to have available to run in your image, define any extra metadata to be used during the build and/or runtime, and potentially specify a command to run when a container defined by your image is run. A more detailed description of the anatomy of a Dockerfile and some of the more common commands used in them is in the lab below. A link to the complete Dockerfile reference appears at the end of this article.
|
||||
|
||||
#### Fundamental differences between Docker and Podman
|
||||
|
||||
Docker is a daemon in Unix-like systems and a service in Windows. This means it runs in the background all the time, and it runs with root or administrator privileges. Podman is binary. This means it runs only on demand, and can run as an unprivileged user.
|
||||
|
||||
This makes Podman more secure and more efficient with system resources (why run all the time if you don't have to?). Running anything with root privileges is, by definition, less secure. When using images on the cloud, the cloud that will host your containers can manage images and containers more securely.
|
||||
|
||||
#### Skopeo and Buildah
|
||||
|
||||
While Docker is a singular utility, Podman has two other related utilities maintained by the Containers organization on GitHub: [Skopeo][11] and [Buildah][12]. Both provide functionality that Podman and Docker do not, and both are part of the container-tools package group with Podman for installation on the Red Hat family of Linux distributions.
|
||||
|
||||
For the most part, builds can be executed through Docker and Podman, but Buildah exists in case more complicated builds of images are required. The details of these more complicated builds are far outside the scope of this article, and you'll rarely, if ever, encounter the need for it, but I include mention of this utility here for completeness.
|
||||
|
||||
Skopeo provides two utility functions that Docker does not: the ability to copy images from one registry to another and to delete an image from a remote registry. Again, this functionality is outside the scope of this discussion, but the functionality could eventually be of use to you, especially if you need to write some DevOps scripts.
|
||||
|
||||
### Dockerfiles lab
|
||||
|
||||
The following is a very short lab (about 10 minutes) that will teach you how to build images using Dockerfiles and run those images as containers. It will also demonstrate how to externalize your container's configuration to realize the full benefits of container development and "Build once, deploy many."
|
||||
|
||||
#### Installation
|
||||
|
||||
The following lab was created and tested locally running Fedora and in a [Red Hat sandbox environment][13] with Podman and Git already installed. I believe you'll get the most out of this lab running it in the Red Hat sandbox environment, but running it locally is perfectly acceptable.
|
||||
|
||||
You can also install Docker or Podman on your own workstation and work locally. As a reminder, if you install Docker, `podman` and `docker` are completely interchangeable for this lab.
|
||||
|
||||
#### Building Images
|
||||
|
||||
**1. Clone the Git repository from GitHub:**
|
||||
|
||||
```
|
||||
$ git clone https://github.com/hippyod/hello-world-container-lab
|
||||
```
|
||||
|
||||
**2. Open the Dockerfile:**
|
||||
|
||||
```
|
||||
$ cd hello-world-container-lab
|
||||
$ vim Dockerfile
|
||||
```
|
||||
|
||||
```
|
||||
1 FROM Docker.io/adoptopenjdk/openjdk11:x86_64-ubi-minimal-jre-11.0.14.1_1
|
||||
|
||||
2
|
||||
|
||||
3 USER root
|
||||
|
||||
4
|
||||
|
||||
5 ARG ARG_MESSAGE_WELCOME='Hello, World'
|
||||
|
||||
6 ENV MESSAGE_WELCOME=${ARG_MESSAGE_WELCOME}
|
||||
|
||||
7
|
||||
|
||||
8 ARG JAR_FILE=target/*.jar
|
||||
|
||||
9 COPY ${JAR_FILE} app.jar
|
||||
|
||||
10
|
||||
|
||||
11 USER 1001
|
||||
|
||||
12
|
||||
|
||||
13 ENTRYPOINT ["java", "-jar", "/app.jar"]
|
||||
```
|
||||
|
||||
This Dockerfile has the following features:
|
||||
|
||||
* The FROM statement (line 1) defines the base (or parent) image this new image will be built from.
|
||||
* The USER statements (lines 3 and 11) define which user is running during the build and at execution. At first, root is running in the build process. In more complicated Dockerfiles I would need to be root to install any extra software, change file permissions, and so forth, to complete the new image. At the end of the Dockerfile, I switch to the user with UID 1001 so that, whenever the image is realized as a container and executes, the user will not be root, and therefore more secure. I use the UID rather than a username so that the host can recognize which user is running in the container in case the host has enhanced security measures that prevent containers from running as the root user.
|
||||
* The ARG statements (lines 5 and 8) define variables that can be used during the build process only.
|
||||
* The ENV statement (line 6) defines an environment variable and value that can be used during the build process but will also be available whenever the image is run as a container. Note how it obtains its value by referencing the variable defined by the previous ARG statement.
|
||||
* The COPY statement (line 9) copies the JAR file created by the Spring Boot Maven build into the image. For the convenience of users running in the Red Hat sandbox, which doesn't have Java or Maven installed, I have pre-built the JAR file and pushed it to the hello-world-container-lab repo. There is no need to do a Maven build in this lab. (Note: There is also an `add` command that can be substituted for COPY. Because the `add` command can have unpredictable behavior, COPY is preferable.)
|
||||
* Finally, the ENTRYPOINT statement defines the command and arguments that should be executed in the container when the container starts up. If this image ever becomes a base image for a subsequent image definition and a new ENTRYPOINT is defined, it will override this one. (Note: There is also a `cmd` command that can be substituted for ENTRYPOINT. The difference between the two is irrelevant in this context and outside the scope of this article.)
|
||||
|
||||
Type `:q` and hit **Enter** to quit the Dockerfile and return to the shell.
|
||||
|
||||
**3. Build the image:**
|
||||
|
||||
```
|
||||
$ podman build --squash -t test/hello-world -f Dockerfile
|
||||
```
|
||||
|
||||
You should see:
|
||||
|
||||
```
|
||||
STEP 1: FROM docker.io/adoptopenjdk/openjdk11:x86_64-ubi-minimal-jre-11.0.14.1_1
|
||||
Getting image source signatures
|
||||
Copying blob d46336f50433 done
|
||||
Copying blob be961ec68663 done
|
||||
...
|
||||
STEP 7/8: USER 1001
|
||||
STEP 8/8: ENTRYPOINT ["java", "-jar", "/app.jar"]
|
||||
COMMIT test/hello-world
|
||||
...
|
||||
Successfully tagged localhost/test/hello-world:latest
|
||||
5482c3b153c44ea8502552c6bd7ca285a69070d037156b6627f53293d6b05fd7
|
||||
```
|
||||
|
||||
In addition to building the image the commands provide the following instructions:
|
||||
|
||||
The `--squash` flag will reduce image size by ensuring that only one layer is added to the base image when the image build completes. Excess layers will inflate the size of the resulting image. FROM, RUN, and COPY/ADD statements add layers, and best practices are to concatenate these statements when possible, for example:
|
||||
|
||||
```
|
||||
RUN dnf -y --refresh update && \
|
||||
dnf install -y --nodocs podman skopeo buildah && \
|
||||
dnf clean all
|
||||
```
|
||||
|
||||
The above RUN statement will not only run each statement to create only a single layer but will also fail the build should any one of them fail.
|
||||
|
||||
The `-t flag` is for naming the image. Because I did not explicitly define a tag for the name (such as `test/hello-world:1.0)`, the image will be tagged as latest by default. I also did not define a registry (such as `quay.io/test/hello-world` ), so the default registry will be localhost.
|
||||
|
||||
The `-f` flag is for explicitly declaring the Dockerfile to be built.
|
||||
|
||||
When running the build, Podman will track the downloading of "blobs." These are the image layers your image will be built upon. They are initially pulled from the remote registry, and they will be cached locally to speed up future builds.
|
||||
|
||||
```
|
||||
Copying blob d46336f50433 done
|
||||
Copying blob be961ec68663 done
|
||||
...
|
||||
Copying blob 744c86b54390 skipped: already exists
|
||||
Copying blob 1323ffbff4dd skipped: already exists
|
||||
```
|
||||
|
||||
**4. When the build completes, list the image to confirm it was successfully built:**
|
||||
|
||||
```
|
||||
$ podman images
|
||||
```
|
||||
|
||||
You should see:
|
||||
|
||||
```
|
||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
localhost/test/hello-world latest 140c09fc9d1d 7 seconds ago 454 MB
|
||||
docker.io/adoptopenjdk/openjdk11 x86_64-ubi-minimal-jre-11.0.14.1_1 5b0423ba7bec 22 hours ago 445 MB
|
||||
```
|
||||
|
||||
#### Running containers
|
||||
|
||||
**5. Run the image:**
|
||||
|
||||
```
|
||||
$ podman run test/hello-world
|
||||
```
|
||||
|
||||
You should see:
|
||||
|
||||
```
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.5.4)
|
||||
|
||||
...
|
||||
GREETING: Hello, world
|
||||
GREETING: Hello, world
|
||||
```
|
||||
|
||||
The output will continue printing "Hello, world" every three seconds until you exit:
|
||||
|
||||
```
|
||||
crtl-c
|
||||
```
|
||||
|
||||
**6. Prove that Java is installed only in the container:**
|
||||
|
||||
```
|
||||
$ java -version
|
||||
```
|
||||
|
||||
The Spring Boot application running inside the container requires Java to run, which is why I chose the base image. If you're running in the Red Hat sandbox environment for the lab, this prove sthat Java is installed only in the container, and not on the host:
|
||||
|
||||
```
|
||||
-bash: java: command not found...
|
||||
```
|
||||
|
||||
#### Externalize your configuration
|
||||
|
||||
The image is now built, but what happens when I want the "Hello, world" message to be different for each environment I deploy the image to? For example, I might want to change it because the environment is for a different phase of development or a different locale. If I change the value in the Dockerfile, I'm required to build a new image to see the message, which breaks one of the most fundamental benefits of containers—"Build once, deploy many." So how do I make my image truly portable so it can be deployed wherever I need it? The answer lies in externalizing the configuration.
|
||||
|
||||
7. Run the image with a new, external welcome message:
|
||||
|
||||
```
|
||||
$ podman run -e 'MESSAGE_WELCOME=Hello, world DIT' test/hello-world
|
||||
```
|
||||
|
||||
You should see:
|
||||
|
||||
```
|
||||
Output:
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.5.4)
|
||||
|
||||
...
|
||||
GREETING: Hello, world DIT
|
||||
GREETING: Hello, world DIT
|
||||
```
|
||||
|
||||
Stop using by using `crtl-c` and adapt the message:
|
||||
|
||||
```
|
||||
$ podman run -e 'MESSAGE_WELCOME=Hola Mundo' test/hello-world
|
||||
```
|
||||
|
||||
```
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.5.4)
|
||||
|
||||
...
|
||||
GREETING: Hola Mundo
|
||||
GREETING: Hola Mundo
|
||||
```
|
||||
|
||||
The `-e` flag defines an environment variable and value to inject into the container at startup. As you can see, even if the variable was built into the original image (the `ENV MESSAGE_WELCOME=${ARG_MESSAGE_WELCOME}` statement in your Dockerfile), it will be overridden. You've now externalized data that needed to change based on where it was to be deployed (for example, in a DIT environment or for Spanish speakers) and thus made your images portable.
|
||||
|
||||
**8. Run the image with a new message defined in a file:**
|
||||
|
||||
```
|
||||
$ echo 'Hello, world from a file' > greetings.txt
|
||||
$ podman run -v "$(pwd):/mnt/data:Z" \
|
||||
-e 'MESSAGE_FILE=/mnt/data/greetings.txt' test/hello-world
|
||||
```
|
||||
|
||||
In this case you should see:
|
||||
|
||||
```
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.5.4)
|
||||
|
||||
...
|
||||
GREETING: Hello, world from a file
|
||||
GREETING: Hello, world from a file
|
||||
```
|
||||
|
||||
Repeat until you hit `crtl-c` to stop
|
||||
|
||||
The `-e` flag in this case defines a path to the file at `/mnt/data/greetings.txt` that was mounted from the host's local file system with the `-v` flag at `$(pwd)/greetings.txt` (`pwd` is a bash utility that outputs the absolute path of the current directory, which in your case should be the `hello-world-container-lab` ). You've now externalized data that needed to change based on where it was to be deployed, but this time your data was defined in an external file you mounted into the container. Environment variable settings are OK for a limited number of settings, but when you have several settings to apply, a file is a more efficient way of injecting the values into your containers.
|
||||
|
||||
Note: The `:Z` flag at the end of the volume definition above is for systems using [SELinux][14]. SELinux manages security on many Linux distributions, and the flag allows the container access to the directory. Without the flag, SELinux would prevent the reading of the file, and an exception would be thrown in the container. Try running the command above again after removing the `:Z` to see a demonstration.
|
||||
|
||||
This concludes the lab.
|
||||
|
||||
### Developing for containers: externalize the configuration
|
||||
|
||||
"Build once, deploy many" works because the immutable containers running in different environments don't have to worry about differences in the hardware or software required to support your particular software project. This principle makes software development, debugging, deployment, and ongoing maintenance much faster and easier. It also isn't perfect, and some minor changes have to be made in how you code to make your container truly portable.
|
||||
|
||||
The most important design principle when writing software for containerization is deciding what to externalize. These decisions ultimately make your images portable so they can fully realize the "Build once, deploy many" paradigm. Although this may seem complicated, there are some easy-to-remember factors to consider when deciding whether the configuration data should be injectable into your running container:
|
||||
|
||||
* Is the data environment-specific? This includes any data that needs to be configured based on where the container is running, whether the environment is a production, non-production, or development environment. Data of this sort includes internationalization configuration, datastore information, and the specific testing profile(s) you want your application to run under.
|
||||
* Is the data release independent? Data of this sort can run the gamut from feature flags to internationalization files to log levels—basically, any data you might want or need to change between releases without a build and new deployment.
|
||||
* Is the data a secret? Credentials should never be hard coded or stored in an image. Credentials typically need to be refreshed on schedules that don't match release schedules, and embedding a secret in an image stored in an image registry is a security risk.
|
||||
|
||||
The best practice is to choose where your configuration data should be externalized (that is, in an environment variable or a file) and only externalize those pieces that meet the above criteria. If it doesn't meet the above criteria, it is best to leave it as part of the immutable image. Following these guidelines will make your images truly portable and keep your external configuration reasonably sized and manageable.
|
||||
|
||||
### Summary
|
||||
|
||||
This article introduces four key ideas for software developers new to images and containers:
|
||||
|
||||
1. Images are immutable binaries: Images are a means of packaging software for later reuse or deployment.
|
||||
2. Containers are isolated processes: When they are created, containers are a runtime instantiation of an image. When containers are started, they become processes in memory on a host machine, which is much lighter and faster than a virtual machine. For the most part, developers only need to know the latter, but understanding the former is helpful.
|
||||
3. "Build once, deploy many": This principle is what makes container technology so useful. Images and containers provide consistency in deployments and independence from the host machine, allowing you to deploy with confidence across many different environments. Containers are also easily scalable because of this principle.
|
||||
4. Externalize the configuration: If your image has configuration data that is environment-specific, release-independent, or secret, consider making that data external to the image and containers. You can inject this data into your running image by injecting an environment variable or mounting an external file into the container.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/22/5/guide-containers-images
|
||||
|
||||
作者:[Evan "Hippy" Slatis][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://opensource.com/users/hippyod
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://opensource.com/sites/default/files/lead-images/bus-containers2.png
|
||||
[2]: https://opensource.com/article/21/8/container-image
|
||||
[3]: https://opensource.com/article/22/2/build-your-own-container-linux-buildah
|
||||
[4]: http://hub.docker.com/
|
||||
[5]: https://hub.docker.com/r/adoptopenjdk/openjdk11/tags?page=1&name=jre-11.0.14.1_1-ubi
|
||||
[6]: http://registry.redhat.io/
|
||||
[7]: http://quay.io/
|
||||
[8]: https://opensource.com/resources/what-docker
|
||||
[9]: https://www.redhat.com/sysadmin/podman-guides-2020
|
||||
[10]: https://git-scm.com/)
|
||||
[11]: https://github.com/containers/skopeo/blob/main/install.md
|
||||
[12]: https://github.com/containers/buildah
|
||||
[13]: https://developers.redhat.com/courses/red-hat-enterprise-linux/deploy-containers-podman
|
||||
[14]: https://www.redhat.com/en/topics/linux/what-is-selinux
|
||||
[15]: https://www.redhat.com/en/services/training/do080-deploying-containerized-applications-technical-overview?intcmp=7013a000002qLH8AAM
|
||||
[16]: https://blog.aquasec.com/a-brief-history-of-containers-from-1970s-chroot-to-docker-2016
|
||||
[17]: https://developers.redhat.com/blog/2018/02/22/container-terminology-practical-introduction?intcmp=7013a000002qLH8AAM
|
||||
[18]: https://docs.docker.com/engine/reference/builder/
|
||||
[19]: https://www.imaginarycloud.com/blog/podman-vs-docker/#:~:text=Docker%20uses%20a%20daemon%2C%20an,does%20not%20need%20the%20mediator.
|
@ -0,0 +1,142 @@
|
||||
[#]: subject: "DAML: The Programming Language for Smart Contracts in a Blockchain"
|
||||
[#]: via: "https://www.opensourceforu.com/2022/05/daml-the-programming-language-for-smart-contracts-in-a-blockchain/"
|
||||
[#]: author: "Dr Kumar Gaurav https://www.opensourceforu.com/author/dr-gaurav-kumar/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
||||
DAML: The Programming Language for Smart Contracts in a Blockchain
|
||||
======
|
||||
The DAML smart contract language is a purpose-built domain specific language designed to encode the shared business logic of an application. It is used for the development and deployment of distributed applications in the blockchain environment.
|
||||
|
||||
![blockchain-hand-shake][1]
|
||||
|
||||
Blockchain technology is a secure mechanism to keep track of information in a way that makes it hard or impossible to modify or hack it. A blockchain integrates the digital ledger of transactions, which is copied and sent to every computer on its network. In each block of the chain, there are a number of transactions. When a new transaction takes place on the blockchain, a record of that transaction is added to the ledgers of everyone who is part of the chain.
|
||||
|
||||
Blockchain uses distributed ledger technology (DLT), in which a database isn’t kept in one server or node. In a blockchain, transactions are recorded with an immutable cryptographic sign known as a hash. This means that if one block in one channel or chain is changed, it will be hard for hackers to change that block in the chain, as they would have to do this for every single version of the chain that is out there. Blockchains, like Bitcoin and Ethereum, keep growing as new blocks are added to the chain, which makes the ledger safer.
|
||||
|
||||
With the implementation of smart contracts in blockchain, there is automatic execution of scenarios without any human intervention. Smart contract technology makes it possible to enforce the highest level of security, privacy and anti-hacking implementations.
|
||||
|
||||
![Figure 1: Market size of blockchain technology (Source: Statista.com)][2]
|
||||
|
||||
The use cases and applications of blockchain are:
|
||||
|
||||
* Cryptocurrencies
|
||||
* Smart contracts
|
||||
* Secured personal information
|
||||
* Digital health records
|
||||
* E-governance
|
||||
* Non-fungible tokens (NFTs)
|
||||
* Gaming
|
||||
* Cross-border financial transactions
|
||||
* Digital voting
|
||||
* Supply chain management
|
||||
|
||||
As per *Statista.com*, the size of the blockchain technology market is increasing at a very fast speed since the last few years and is predicted to touch US$ 40 billion by 2025.
|
||||
|
||||
### Programming languages and toolkits for blockchain
|
||||
|
||||
A number of programming languages and development toolkits are available for distributed applications and smart contracts. Programming and scripting languages for the blockchain include Solidity, Java, Vyper, Serpent, Python, JavaScript, GoLang, PHP, C++, Ruby, Rust, Erlang, etc, and are employed depending upon the implementation scenarios and use cases.
|
||||
|
||||
The choice of a suitable platform for the development and deployment of a blockchain depends on a range of factors including the need for security, privacy, speed of transactions and scalability (Figure 2).
|
||||
|
||||
![Figure 2: Factors to look at when selecting a blockchain platform][3]
|
||||
|
||||
The main platforms for the development of blockchain are:
|
||||
|
||||
* Ethereum
|
||||
* XDC Network
|
||||
* Tezos
|
||||
* Stellar
|
||||
* Hyperledger
|
||||
* Ripple
|
||||
* Hedera Hashgraph
|
||||
* Quorum
|
||||
* Corda
|
||||
* NEO
|
||||
* OpenChain
|
||||
* EOS
|
||||
* Dragonchain
|
||||
* Monero
|
||||
|
||||
### DAML: A high performance programming language
|
||||
|
||||
Digital Asset Modeling Language or DAML (daml.com) is a high performance programming language for the development and deployment of distributed applications in the blockchain environment. It is a lightweight and concise platform for rapid applications development.
|
||||
|
||||
![Figure 3: Official portal of DAML][4]
|
||||
|
||||
The key features of DAML are:
|
||||
|
||||
* Fine-grained permissions
|
||||
* Scenario based testing
|
||||
* Data model
|
||||
* Business logic
|
||||
* Deterministic execution
|
||||
* Storage abstraction
|
||||
* No double spends
|
||||
* Accountability tracking
|
||||
* Atomic composability
|
||||
* Authorisation checks
|
||||
* Need-to-know privacy
|
||||
|
||||
### Installation and working with DAML
|
||||
|
||||
The DAML SDK can be installed on Linux, macOS or Windows. The detailed instructions for installing DAML on multiple operating systems are available at *https://docs.daml.com/getting-started/installation.html.*
|
||||
|
||||
You must have the following to work with DAML:
|
||||
|
||||
* Visual Studio Code
|
||||
* Java Development Kit (JDK)
|
||||
|
||||
DAML can be installed on Windows by downloading and running the executable installer available at *https://github.com/digital-asset/daml/releases/download/v1.18.1/daml-sdk-1.18.1-windows.exe.*
|
||||
|
||||
Installation of DAML on Linux or Mac can be done by executing the following in the terminal:
|
||||
|
||||
```
|
||||
$ curl -sSL https://get.daml.com/ | sh
|
||||
```
|
||||
|
||||
After installation of DAML, the new blockchain based app can be created, as shown in Figures 4 and 5.
|
||||
|
||||
![Figure 4: Creating a new app][5]
|
||||
|
||||
In another terminal, the new app is navigated and project dependencies are installed:
|
||||
|
||||
![Figure 5: Running DAML][6]
|
||||
|
||||
```
|
||||
WorkingDirectory>cd myapp/ui
|
||||
WorkingDirectory>npm install
|
||||
WorkingDirectory>npm start
|
||||
```
|
||||
|
||||
The WebUI is started and the app is accessed on the Web browser with the URL *http://localhost:3000/.*
|
||||
|
||||
![Figure 6: Login panel in DAML app][7]
|
||||
|
||||
### Scope for research and development
|
||||
|
||||
Blockchain technology has a wide range of development platforms and frameworks for different categories of applications. Many of these platforms are free and open source, which can be downloaded and deployed for research based implementations. Research scholars, practitioners and academicians can use these platforms to propose and implement their algorithms for numerous applications.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.opensourceforu.com/2022/05/daml-the-programming-language-for-smart-contracts-in-a-blockchain/
|
||||
|
||||
作者:[Dr Kumar Gaurav][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/dr-gaurav-kumar/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://www.opensourceforu.com/wp-content/uploads/2022/04/blockchain-hand-shake.jpg
|
||||
[2]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-1-Market-size-of-blockchain-technology.jpg
|
||||
[3]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-2-Factors-to-look-at-when-selecting-a-blockchain-platform-2.jpg
|
||||
[4]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-3-Official-portal-of-DAML-1.jpg
|
||||
[5]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-4-Creating-a-new-app.jpg
|
||||
[6]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-5-Running-DAML.jpg
|
||||
[7]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-6-Login-panel-in-DAML-app.jpg
|
@ -1,62 +0,0 @@
|
||||
[#]: subject: "FSF Does Not Accept Debian as a Free Distribution. Here’s Why!"
|
||||
[#]: via: "https://news.itsfoss.com/fsf-does-not-consider-debian-a-free-distribution/"
|
||||
[#]: author: "Abhishek https://news.itsfoss.com/author/root/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "Chao-zhi"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
||||
自由软件基金会为什么不认为 Debian 是一种自由发行版?
|
||||
======
|
||||
![Why FSF doesn't consider Debian a free distribution][1]
|
||||
|
||||
Debian 项目开发了一个尊重用户自由的 GNU/Linux 发行版。它的 non-free 软件源中拥有许多根据各式各样的自由许可证分发的软件。这些软件真正被发布到 Debian 之前会进行清理。而自由软件基金会 (Free Software Foundation, FSF) 维护着一份[自由的 GNU/Linux 发行版列表](2),但奇怪的是,Debian 并不在这个列表中。事实是 Debian 不符合进入此列表的某些标准,我们很想知道到底不满足哪些标准。但首先,我们需要了解所有这些劳心劳力的工作是如何得到证明的。换句话说,为什么要费心尝试进入一些名单,尤其是这个名单?
|
||||
|
||||
曾于 2010 年至 2013 年担任 Debian 项目负责人的 Stefano Zacchiroli 曾表示 Debian 应该获得 FSF 的承认以维护它自由发行版的地位的几个原因。其中一个原因,Stefano 称之为“外部审查”,我特别赞同。事实是 Debian 的软件应当满足一些标准和质量水平才能成为发行版的一部分,但除了 Debian 开发人员自己之外没有人控制这个过程。如果该发行版被包含在这份珍贵的清单中,那么 FSF 将密切关注 Debian 的命运,并给予适度的批评。我相信这是很好的动力。如果你也这么认为,那么现在让我们看看 FSF 认为 Debian 不够自由的原因。
|
||||
|
||||
### Debian 社会契约
|
||||
|
||||
除了自由的 GNU/Linux 发行版列表之外,FSF 还维护着一份 GNU/Linux 发行版的列表,这些发行版由于某种原因被拒绝为自由状态。对于此列表中的每个发行版,都有一个带有拒绝的简短论据的评论。从对 Debian 的评论中可以清楚地看出,FSF 和 Debian 项目在对“自由分发”一词的解释上产生分歧的主要根源是一份被称为 Debian 社会契约的文件。
|
||||
|
||||
Debian 社会契约有五点。要回答主要问题,我们只需要关注其中两个点——即第一个和第五个,其他的省略。在[此处](3)查看合同的完整版本。
|
||||
|
||||
第一点说:« **Debian 将保持 100% 自由**。我们在标题为“Debian 自由软件指南”的文档中提供了用于确定作品是否“自由”的指南。我们承诺根据这些指南,Debian 系统及其所有组件将是自由的。我们将支持在 Debian 上创建或使用自由和非自由作品的人。我们永远不会让系统需要使用非自由组件。»
|
||||
|
||||
同时,第五点写道:« **不符合我们自由软件标准的作品**。我们承认我们的一些用户需要使用不符合 Debian 自由软件指南的作品。我们在我们的档案中为这些作品创建了“free”和“non-free”区域。这些区域中的软件包不是 Debian 系统的一部分,尽管它们已被配置为与 Debian 一起使用。我们鼓励 CD 制造商阅读这些区域的软件包许可证,并确定他们是否可以在其 CD 上分发这些软件包。因此,尽管非自由作品不是 Debian 的一部分,但我们支持它们的使用并为非自由软件包提供基础设施(例如我们的错误跟踪系统和邮件列表)。»
|
||||
|
||||
尽管合同规定分发将保持 100% 自由,但它允许官方存档的部分可能包含非自由软件或依赖于某些非自由组件的自由软件。形式上,根据同一份合同,这些部分中的软件不是 Debian 的一部分,但 FSF 对此感到困扰,因为这些部分使在系统上安装非自由软件变得更加容易。
|
||||
|
||||
2011 年时,FSF 有合理的理由不考虑 Debian 自由版——该发行版附带了一个未清除二进制 blob 的 Linux 内核。但自 2011 年 2 月发布的 Squeeze 至今,Debian 已经包含了完全自由的 Linux 内核。因此,简化非自由软件的安装是 FSF 无法将 Debian 识别为自由发行版的主要原因,直到 2016 年这是我知道的唯一原因,但在 2016 年初出现了问题……
|
||||
|
||||
### 等等…… 关 Firefox 什么事?
|
||||
|
||||
很长一段时间,Debian 都包含一个名为 Iceweasel 的浏览器,它只不过是 Firefox 浏览器的更名。进行品牌重塑有两个原因。首先,浏览器标志和名称是 Mozilla 基金会的商标,提供非自由软件与 DFSG 相抵触。其次,通过在发行版中包含浏览器,Debian 开发人员必须遵守 Mozilla 基金会的要求,该基金会禁止以 Firefox 的名义交付浏览器的修改版本。因此,开发人员不得不更改名称,因为他们不断更改浏览器代码以修复错误并消除漏洞。但在 2016 年初,Debian 有幸拥有一款经过修改的浏览器,不受上述限制,可以保留原来的名称和徽标。一方面,这是对 Debian 修改的认可,也是对 Debian 信任的体现。另一方面,该软件显然没有从非自由组件中清除,现在已成为发行版的一部分。如果此时 Debian 已被列入免费 GNU/Linux 发行版列表,那么自由软件基金会会毫不犹豫地指出这一点。
|
||||
|
||||
### 结论
|
||||
|
||||
数字世界中的自由与现实世界中的自由同样重要。在这篇文章中,我试图揭示 Debian 最重要的特性之一——开发与用户自由相关的发行版。开发人员花费额外的时间从软件中清理非自由组件,并且以 Debian 为技术基础的数十个发行版继承了它的工作,并由此获得了一部分自由。
|
||||
|
||||
另外,我想分享一个简单的观察,即自由并不像乍看起来那么简单,人们自然会去追问什么是真正的自由和什么不是。由于 Firefox 的存在,Debian 现在不能被称为自由的 GNU/Linux 发行版。但从 2011 年,当 Debian 终于开始清理内核以及发行版的其他组件时,直到 2016 年 Firefox 成为发行版的一部分,自由软件基金会出于纯粹的意识形态原因并不认为该发行版是自由的:原因是 Debian 大大简化了非自由软件的安装……现在轮到你权衡所有的争论并决定是否将 GNU/Linux 发行版视为自由的了。
|
||||
|
||||
祝你好运!并尽可能保持自由。
|
||||
|
||||
由 Evgeny Golyshev 为 [Cusdeb.com](4) 撰写
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/fsf-does-not-consider-debian-a-free-distribution/
|
||||
|
||||
作者:[Abhishek][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[Chao-zhi](https://github.com/Chao-zhi)
|
||||
校对:[校对者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/05/why-fsf-doesnt-consider-debian-a-free-software-1200-%C3%97-675px.png
|
||||
[2]: https://gnu.org/distros/free-distros.en.html
|
||||
[3]: https://debian.org/social_contract
|
||||
[4]: https://wiki.cusdeb.com/Essays:Why_the_FSF_does_not_consider_Debian_as_a_free_distribution/en
|
@ -1,181 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (CoWave-Fall)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (31 open source text editors you need to try)
|
||||
[#]: via: (https://opensource.com/article/21/2/open-source-text-editors)
|
||||
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
|
||||
|
||||
您可以尝试的 31 个开源文本编辑器
|
||||
======
|
||||
|
||||
正在寻找新的文本编辑器? 这里有 31 个选项可供您考虑。
|
||||
![open source button on keyboard][1]
|
||||
|
||||
计算机是基于文本的,因此您使用它们做的事情越多,您可能就越需要文本编辑应用程序。 您在文本编辑器上花费的时间越多,您就越有可能对您您使用的编辑器提出更多的要求。
|
||||
|
||||
如果您正在寻找一个好的文本编辑器,您会发现 Linux 可以提供很多。 无论您是想在终端、桌面还是在云端工作,您都可以试一试。您可以每天一款编辑器,连续着试一个月(或每月试一个,能够试三年)。坚持不懈,您终将找到适合您的完美的编辑器。
|
||||
|
||||
### 与 Vim 相似的编辑器
|
||||
|
||||
![][2]
|
||||
|
||||
* [Vi][3] 通常随着 Linux 各发行版、BSD、Solaris 和 macOS 一起安装。 它是典型的 Unix 文本编辑器,具有编辑模式和超高效的单键快捷键二者的独特组合。 最初的 Vi 编辑器由 Bill Joy 编写(他也是 C shell 的作者)。 Vi 的现代版本,尤其是 Vim,增加了许多特性,包括多级撤消、在插入模式下更好的导航、折叠行、语法高亮、插件支持等等。但它需要学习如何使用(它甚至有自己的教程程序,vimtutor)。
|
||||
* [Kakoune][4] 是一个受 Vim 启发的应用程序,它具有熟悉的简约界面、短键盘快捷键以及独立的编辑和插入模式。 乍一看,它的外观和感觉很像 Vi,但它在设计和功能上有自己独特的风格。 它有一个小彩蛋:具有 Clippy 接口的实现。
|
||||
|
||||
|
||||
|
||||
### emacs 编辑器
|
||||
|
||||
![][5]
|
||||
|
||||
* 从最初的免费 emacs 开始,发展到 GNU 项目(自由软件运动的发起者)的第一批官方应用程序,[GNU Emacs][6] 是一个广受欢迎的文本编辑器。 它非常适合系统管理员、开发人员和日常用户的使用,具有大量功能和近乎无穷无尽的扩展。 一旦您开始使用 Emacs,您可能会发现很难想出一个理由来关闭它,因为它能做的事情非常多!
|
||||
* 如果您喜欢 Emacs 但觉得 GNU Emacs 过于臃肿,那么您可以试试 [Jove][7]。 Jove 是一个基于终端的 emacs 编辑器。 它很容易使用,但是如果您是使用 emacs 一类编辑器的新手,那么 Jove 也是很容易学习的,这要归功于 teajove 命令。
|
||||
* 另一个轻量级的 emacs 编辑器是 [Jed][8]。它的工作流程基于宏。 它与其他编辑器的不同之处在于它使用了 [S-Lang][9],这是一种类似 C 的脚本语言,它为使用 C 而不是使用 Lisp 的开发人员提供了可扩展的选项。
|
||||
|
||||
|
||||
|
||||
### 交互式编辑器
|
||||
|
||||
![][10]
|
||||
|
||||
* [GNU nano][11] 对基于终端的文本编辑采取了大胆的立场:它提供了一个菜单。是的,这个不起眼的编辑器从 GUI 编辑器那里得到了提示,它告诉用户他们需要按哪个键来执行特定的功能。这是一种令人耳目一新的用户体验,所以难怪 nano 被设置为“用户友好”发行版的默认编辑器,而不是 Vi。
|
||||
* [JOE][12] 基于一个名为 WordStar 的旧文本编辑应用程序。如果您不熟悉 Wordstar,JOE 也可以模仿 Emacs 或 GNU nano。默认情况下,它是介于 Emacs 或 Vi 等相对神秘的编辑器和 GNU Nano 永远在线的冗长信息之间的一个很好的折衷方案(例如,它告诉您如何激活屏幕帮助显示,但默认情况下不启用)。
|
||||
* [e3][13] 是一个优秀的小型文本编辑器,具有五个内置的键盘快捷键方案来模拟 Emacs、Vi、nano、NEdit 和 WordStar。换句话说,无论您习惯使用哪种基于终端的编辑器,您都可能对 e3 感到宾至如归。
|
||||
|
||||
### ed 和更多像 ed 一样的编辑器
|
||||
|
||||
* [ed][14] 行编辑器是 [POSIX][15] 和 Open Group 对基于 Unix 的操作系统的标准定义的一部分。它安装在您遇到的几乎所有 Linux 或 Unix 系统上。它小巧、简洁、一流。
|
||||
* 基于 ed,[Sed][16] 流编辑器因其功能和语法而广受欢迎。大多数 Linux 用户在搜索更新配置文件中的行的最简单和最快的方法时至少会学习一个 sed 命令,但值得仔细研究一下。 Sed 是一个强大的命令,包含许多有用的子命令。更好地了解它,您可能会发现自己打开文本编辑器应用程序的频率要低得多。
|
||||
* 您并不总是需要文本编辑器来编辑文本。 [heredoc][17](或 Here Doc)系统可在任何 POSIX 终端中使用,允许您直接在打开的终端中输入文本,然后将输入的内容通过管道传输到文本文件中。这不是最强大的编辑体验,但它用途广泛且始终可用。
|
||||
|
||||
|
||||
|
||||
### 极简风格的编辑器
|
||||
|
||||
![][18]
|
||||
|
||||
如果您对一个好的文本编辑器的想法是一个文字处理器(除了没有所有的处理功能)的话,您可能正在寻找这些经典。这些编辑器可让您以最少的干扰和最少的帮助写作和编辑文本。它们提供的功能通常以标记、Markdown 或代码为中心。有些名称遵循某种模式:
|
||||
|
||||
* [Gedit][19] 来自 GNOME 团队;
|
||||
* [medit][20] 有经典的 GNOME 手感;
|
||||
* [Xedit][21] 仅使用最基本的 X11 库;
|
||||
* [jEdit][22] 适用于 Java 爱好者。
|
||||
|
||||
|
||||
|
||||
KDE 用户也类似:
|
||||
|
||||
* [Kate][23] 是一款低调的编辑器,拥有您需要的几乎所有功能;
|
||||
* [KWrite][24] 在看似简单易用的界面中隐藏了大量有用的功能。
|
||||
|
||||
|
||||
|
||||
还有一些适用于其他平台:
|
||||
|
||||
* [Notepad++][25] 是一种流行的 Windows 应用程序,而 Notepadqq 对 Linux 采用了类似的方法;
|
||||
* [Pe][26] 适用于 Haiku OS(90 年代那个古怪的孩子 BeOS 的转世);
|
||||
* [FeatherPad][27] 是适用于 Linux 的基本编辑器,但对 macOS 和 Haiku 有一些支持。如果您是一名希望移植代码的 Qt 骇客,请务必看一看!
|
||||
|
||||
|
||||
|
||||
### 集成开发环境(IDE)
|
||||
|
||||
![][28]
|
||||
|
||||
文本编辑器和集成开发环境 (IDE) 之间存在相当大的相同之处。 后者实际上只是前者加上许多对于特定代码的添加的功能。 如果您经常使用 IDE,您可能会在扩展管理器中发现一个 XML 或 Markdown 编辑器:
|
||||
|
||||
* [NetBeans][29] 是一个方便 Java 用户的文本编辑器。
|
||||
* [Eclipse][30] 提供了一个强大的编辑套件,其中包含许多扩展,可为您提供所需的工具。
|
||||
|
||||
|
||||
|
||||
### 云端编辑器
|
||||
|
||||
![][31]
|
||||
|
||||
在云端写作? 当然,您也可以在那里写。
|
||||
|
||||
* [Etherpad][32] 是在网上运行的文本编辑器应用程序。 有独立免费的实例供您使用,或者您也·可以设置自己的实例。
|
||||
* [Nextcloud][33] 拥有蓬勃发展的应用场景,包括内置文本编辑器和具有实时预览功能的第三方 Markdown 编辑器。
|
||||
|
||||
|
||||
|
||||
### 较新的编辑器
|
||||
|
||||
![][34]
|
||||
|
||||
每个人都会有让文本编辑器变得更完美的想法。 因此,几乎每年都会发布新的编辑器。 有些以一种新的、令人兴奋的方式重新实现经典的旧想法,有些对用户体验有独特的看法,还有些则专注于特定的需求。
|
||||
|
||||
* [Atom][35] 是来自 GitHub 的多功能的现代文本编辑器,具有许多扩展和 Git 集成。
|
||||
* [Brackets][36] 是 Adobe 为 Web 开发人员提供的编辑器。
|
||||
* [Focuswriter][37] 旨在通过无干扰全屏模式、可选的打字机音效和精美的配置选项等有用功能帮助您专注于写作。
|
||||
* [Howl][38] 是一个基于 Lua 和 Moonscript 的渐进式动态编辑器。
|
||||
* [Norka][39] 和 [KJots][40] 模仿笔记本,每个文档代表“活页夹”中的“页面”。 您可以通过导出功能从笔记本中取出单个页面。
|
||||
|
||||
|
||||
|
||||
### 自己制作编辑器
|
||||
|
||||
![][41]
|
||||
|
||||
俗话说得好:既然可以编写自己的应用程序,为什么要使用别人的(虽然其实没有这句俗语)?虽然 Linux 有超过 30 个常用的文本编辑器,但是再说一次,开源的一部分乐趣在于能够亲手进行实验。
|
||||
|
||||
如果您正在寻找学习编程的理由,那么制作自己的文本编辑器是一个很好的入门方法。 您可以在大约 100 行代码中实现基础知识,并且您使用它的次数越多,您可能就越会受到启发,进而去学习更多内容,从而进行改进。 准备好开始了吗? 来吧,去[创建您自己的文本编辑器][42]。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/21/2/open-source-text-editors
|
||||
|
||||
作者:[Seth Kenlon][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[CoWave-Fall](https://github.com/CoWave-Fall)
|
||||
校对:[校对者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/button_push_open_keyboard_file_organize.png?itok=KlAsk1gx (open source button on keyboard)
|
||||
[2]: https://opensource.com/sites/default/files/kakoune-screenshot.png
|
||||
[3]: https://opensource.com/article/20/12/vi-text-editor
|
||||
[4]: https://opensource.com/article/20/12/kakoune
|
||||
[5]: https://opensource.com/sites/default/files/jed.png
|
||||
[6]: https://opensource.com/article/20/12/emacs
|
||||
[7]: https://opensource.com/article/20/12/jove-emacs
|
||||
[8]: https://opensource.com/article/20/12/jed
|
||||
[9]: https://www.jedsoft.org/slang
|
||||
[10]: https://opensource.com/sites/default/files/uploads/nano-31_days-nano-opensource.png
|
||||
[11]: https://opensource.com/article/20/12/gnu-nano
|
||||
[12]: https://opensource.com/article/20/12/31-days-text-editors-joe
|
||||
[13]: https://opensource.com/article/20/12/e3-linux
|
||||
[14]: https://opensource.com/article/20/12/gnu-ed
|
||||
[15]: https://opensource.com/article/19/7/what-posix-richard-stallman-explains
|
||||
[16]: https://opensource.com/article/20/12/sed
|
||||
[17]: https://opensource.com/article/20/12/heredoc
|
||||
[18]: https://opensource.com/sites/default/files/uploads/gedit-31_days_gedit-opensource.jpg
|
||||
[19]: https://opensource.com/article/20/12/gedit
|
||||
[20]: https://opensource.com/article/20/12/medit
|
||||
[21]: https://opensource.com/article/20/12/xedit
|
||||
[22]: https://opensource.com/article/20/12/jedit
|
||||
[23]: https://opensource.com/article/20/12/kate-text-editor
|
||||
[24]: https://opensource.com/article/20/12/kwrite-kde-plasma
|
||||
[25]: https://opensource.com/article/20/12/notepad-text-editor
|
||||
[26]: https://opensource.com/article/20/12/31-days-text-editors-pe
|
||||
[27]: https://opensource.com/article/20/12/featherpad
|
||||
[28]: https://opensource.com/sites/default/files/uploads/eclipse-31_days-eclipse-opensource.png
|
||||
[29]: https://opensource.com/article/20/12/netbeans
|
||||
[30]: https://opensource.com/article/20/12/eclipse
|
||||
[31]: https://opensource.com/sites/default/files/uploads/etherpad_0.jpg
|
||||
[32]: https://opensource.com/article/20/12/etherpad
|
||||
[33]: https://opensource.com/article/20/12/31-days-text-editors-nextcloud-markdown-editor
|
||||
[34]: https://opensource.com/sites/default/files/uploads/atom-31_days-atom-opensource.png
|
||||
[35]: https://opensource.com/article/20/12/atom
|
||||
[36]: https://opensource.com/article/20/12/brackets
|
||||
[37]: https://opensource.com/article/20/12/focuswriter
|
||||
[38]: https://opensource.com/article/20/12/howl
|
||||
[39]: https://opensource.com/article/20/12/norka
|
||||
[40]: https://opensource.com/article/20/12/kjots
|
||||
[41]: https://opensource.com/sites/default/files/uploads/this-time-its-personal-31_days_yourself-opensource.png
|
||||
[42]: https://opensource.com/article/20/12/31-days-text-editors-one-you-write-yourself
|
@ -3,24 +3,24 @@
|
||||
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "MjSeven"
|
||||
[#]: reviewer: " "
|
||||
[#]: reviewer: "turbokernel"
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
||||
在 Linux 上使用 sudo 命令的 5 个理由
|
||||
======
|
||||
以下是切换到 Linux sudo 命令的五个安全原因。下载 sudo 备忘录获取更多技巧。
|
||||
以下是切换到 Linux sudo 命令的五个安全原因。下载 sudo 参考手册获取更多技巧。
|
||||
|
||||
![命令行提示符][1]
|
||||
Image by: Opensource.com
|
||||
|
||||
在传统的 Unix 和类 Unix 系统上,新系统中存在的第一个也是唯一一个用户是 **root**。使用 root 账户登录并创建“普通”用户。在初始交互之后,你应该以普通用户身份登录。
|
||||
在传统的 Unix 和类 Unix 系统上,新系统中存在的第一同时也是唯一的用户是 **root**。使用 root 账户登录并创建“普通”用户。在初始化之后,你应该以普通用户身份登录。
|
||||
|
||||
以普通用户身份运行系统是一种自我施加的限制,可以防止你犯愚蠢的错误。例如,作为普通用户,你不能删除定义网络接口的配置文件或意外覆盖用户和组列表。作为普通用户,你无法犯这些错误,因为你无权访问这些重要文件。当然,作为系统的实际所有者,你始终可以使用 `su` 命令成为超级用户(root)并做任何你想做的事情,但对于日常任务,你应该使用普通账户。
|
||||
以普通用户身份使用系统是一种自我施加的限制,可以防止愚蠢的错误。例如,作为普通用户,你不能删除定义网络接口的配置文件或意外覆盖用户和组列表。作为普通用户,因为你无权访问这些重要文件。当然所以你无法犯这些错误,作为系统的实际所有者,你始终可以通过 `su` 命令切换为超级用户(root)并做你想做的任何事情,但对于日常工作,你应该使用普通账户。
|
||||
|
||||
几十年来,`su` 运行良好,但随后出现了 `sudo` 命令。
|
||||
|
||||
对于长期的超级用户来说,`sudo` 命令乍一看似乎是多余的。在某些方面,它感觉很像 `su` 命令。例如:
|
||||
对于日常使用超级用户来说,`sudo` 命令乍一看似乎是多余的。在某些方面,它感觉很像 `su` 命令。例如:
|
||||
|
||||
```
|
||||
$ su root
|
||||
@ -35,37 +35,37 @@ $ sudo dnf install -y cowsay
|
||||
<enter passphrase>
|
||||
```
|
||||
|
||||
它们的作用几乎完全相同。然而大多数发行版推荐使用 `sudo` 而不是 `su`,而且大多数发行版已经完全取消了 root 账户。让 Linux 变得愚蠢是一个阴谋吗?
|
||||
它们的作用几乎完全相同。但是大多数发行版推荐使用 `sudo` 而不是 `su`,甚至大多数发行版已经完全取消了 root 账户。让 Linux 变得愚蠢是一个阴谋吗?
|
||||
|
||||
事实上,并非如此。`sudo` 使 Linux 比以往任何时候都更加灵活和可配置,并且没有损失功能,还有[几个显著的优点][2]。
|
||||
事实并非如此。`sudo` 使 Linux 比以往任何时候都更加灵活和可配置,并且没有损失功能,还有[几个显著的优点][2]。
|
||||
|
||||
### 为什么在 Linux 上 sudo 比 root 更好?
|
||||
|
||||
以下是你应该使用 `sudo` 而不是 `su` 的五个原因。
|
||||
以下是你应该使用 `sudo` 替换 `su` 的五个原因。
|
||||
|
||||
### 1. Root 是确认的对象
|
||||
### 1. Root 是被攻击确认的对象
|
||||
|
||||
我使用 [Firewalls][3]、[fail2ban][4] 和 [SSH 密钥][5]的常用组合来防止一些针对服务器不必要的访问。在我理解 `sudo` 的价值之前,我对日志中的暴力攻击感到恐惧。自动尝试以 root 身份登录是最常见的,这是有充分理由的。
|
||||
|
||||
有足够知识尝试入侵的攻击者应该也知道,在广泛使用 `sudo` 之前,基本上每个 Unix 和 Linux 都有一个 root 账户。这样攻击者就会少一种猜测。因为登录名总是正确的,只要它是 root 就行,所以攻击者只需要一个有效的密码。
|
||||
有一定入侵常识的攻击者应该知道,在广泛使用 `sudo` 之前,基本上每个 Unix 和 Linux 都有一个 root 账户。这样攻击者就会少一种猜测。因为登录名总是正确的,只要它是 root 就行,所以攻击者只需要一个有效的密码。
|
||||
|
||||
删除 root 账户可提供大量保护。如果没有 root,服务器就没有确认的登录账户。攻击者必须猜测登录名以及密码。这不是两次猜测,而是两个必须同时正确的猜测。
|
||||
|
||||
### 2. Root 是最终的攻击媒介
|
||||
|
||||
在失败访问日志中,root 是很常见的,因为它可能是最强大的用户。如果你要设置一个脚本强行进入他人的服务器,为什么要浪费时间尝试以一个只有部分权限的普通用户进入呢?只有最强大的用户才有意义。
|
||||
在错误访问日志中,root 是很常见的,因为它可是最强大的用户。如果你要设置一个脚本强行进入他人的服务器,为什么要浪费时间尝试以受限的普通用户进入呢?只有最强大的用户才有意义。
|
||||
|
||||
Root 既是唯一已知的用户名,又是最强大的用户账户。因此,root 基本上使尝试暴力破解其他任何东西变得毫无意义。
|
||||
|
||||
### 3. 可选择的权限
|
||||
|
||||
`su` 命令要么全有要么全没有。如果你有 `su root` 的密码,你就可以变成超级用户。如果你没有 `su` 的密码,那么你就没有任何管理员权限。这个模型的问题在于,系统管理员必须在将主密钥移交系统或保留密钥和对系统的所有控制权之间做出选择。这并不总是你想要的,[有时候你只是想授权。][6]
|
||||
`su` 命令要么全有要么全没有。如果你有 `su root` 的密码,你就可以变成超级用户。如果你没有 `su` 的密码,那么你就没有任何管理员权限。这个模型的问题在于,系统管理员必须在将 root 密钥移交系统或保留密钥和对系统的所有权之间做出选择。这并不总是你想要的,[有时候你只是想授权。][6]
|
||||
|
||||
例如,假设你想授予用户以 root 身份运行特定应用程序的权限,但你不想为用户提供 root 密码。通过编辑 `sudo` 配置,你可以允许指定用户,或属于指定 Unix 组的任何用户运行特定命令。`sudo` 命令需要用户的现有密码,而不是你的密码,当然也不是 root 密码。
|
||||
|
||||
### 4.超时
|
||||
|
||||
使用 `sudo` 运行命令时,经过身份验证的用户的权限会提升 5 分钟。在此期间,他们可以运行管理员授予他们运行权限的任何命令。
|
||||
使用 `sudo` 运行命令后,通过身份验证的用户的权限会提升 5 分钟。在此期间,他们可以运行任何管理员授权的命令。
|
||||
|
||||
5 分钟后,认证缓存被清空,下次使用 `sudo` 再次提示输入密码。超时可防止用户意外执行某些操作(例如,不小心搜索 shell 历史记录或多次按下**向上**箭头)。如果第一个用户离开办工桌而没有锁定计算机屏幕,它还可以确保另一个用户不能运行这些命令。
|
||||
|
||||
@ -79,9 +79,9 @@ Shell 历史功能可以作为一个用户所做事情的日志。如果你需
|
||||
|
||||
### 学习 sudo 其他功能
|
||||
|
||||
除了本文列举的一些功能,`sudo` 命令还有很多新功能,包括已有的或正在开发中的。因为 `sudo` 通常是你配置一次然后就忘记的东西,或者只在新管理员加入团队时才配置的东西,所以很难记住它的细微差别。
|
||||
除了本文列举的一些功能,`sudo` 命令还有很多\已有的或正在开发中的新功能。因为 `sudo` 通常是你配置一次然后就忘记的东西,或者只在新管理员加入团队时才配置的东西,所以很难记住它的细微差别。
|
||||
|
||||
下载 [sudo 备忘录][8],在你最需要的时候把它当作一个有用的指导书。
|
||||
下载 [sudo 参考手册][8],在你最需要的时候把它当作一个有用的指导书。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -90,7 +90,7 @@ via: https://opensource.com/article/22/5/use-sudo-linux
|
||||
作者:[Seth Kenlon][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[MjSeven](https://github.com/MjSeven)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[turbokernel](https://github.com/turbokernel)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
|
@ -0,0 +1,58 @@
|
||||
[#]: subject: "Five common mistakes when using automation"
|
||||
[#]: via: "https://fedoramagazine.org/five-common-mistakes-when-using-automation/"
|
||||
[#]: author: "Gary Scarborough https://fedoramagazine.org/author/gscarbor/"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
||||
使用自动化时的五个常见错误
|
||||
======
|
||||
|
||||
![][1]
|
||||
|
||||
背景图片来自 [“Modern Times”(1936)][2],[United Artists][3],公共领域,通过 Wikimedia Commons
|
||||
|
||||
随着自动化扩展到涵盖 IT 的更多方面,越来越多的管理员正在学习自动化技能并应用它们来减轻他们的工作量。自动化可以减轻重复性任务的负担,并为基础设施增加一定程度的一致性。但是,当 IT 工作人员部署自动化时,会出现可能对大大小小的基础设施造成严重破坏的常见错误。在自动化部署中通常会出现五个常见错误。
|
||||
|
||||
### 缺乏测试
|
||||
|
||||
初学者常犯的错误是自动化脚本没有经过全面测试。由于拼写错误或逻辑错误,简单的 shell 脚本可能会对服务器产生不利影响。将该错误乘以基础架构中的服务器数量,你可能会遇到一大堆问题需要清理。在大规模部署之前始终测试你的自动化脚本。
|
||||
|
||||
### 意外的服务器负载
|
||||
|
||||
经常发生的第二个错误是没有预测脚本可能对其他资源施加的系统负载。当目标是十几个服务器时,运行从仓库下载文件或安装包的脚本可能没问题。脚本通常在成百上千台服务器上运行。这种负载可以使支持服务停止或完全崩溃。不要忘记考虑端点影响或设置合理的并发率。
|
||||
|
||||
### 离开脚本
|
||||
|
||||
自动化工具的一种用途是确保符合标准设置。自动化可以轻松确保组中的每台服务器都具有完全相同的设置。如果该组中的服务器需要根据该基线进行更改,同时管理员不了解合规标准,那么可能会出现问题。安装和启用不需要和不想要的服务,从而导致可能的安全问题。
|
||||
|
||||
### 缺乏文档
|
||||
|
||||
管理员的一项固定职责应该是记录他们的工作。由于合同到期、升职或定期员工流动,公司可能会在 IT 部门频繁招聘新员工。公司内的工作组相互隔离也很常见。由于这些原因,重要的是记录哪些自动化已经到位。与用户运行脚本不同,自动化可能会在创建它的人离开组之后继续很长时间。管理员可能会发现自己在其基础设施中面临着来自自动化未经检查的奇怪行为。
|
||||
|
||||
### 缺乏经验
|
||||
|
||||
列表中的最后一个错误是管理员对他们正在自动化的系统不够了解。管理员经常被雇用到他们没有接受过足够培训且没有人可以学习的职位上工作。自 COVID 以来,当公司努力填补空缺时,这一点尤其重要。然后管理员被迫处理他们没有设置并且可能不完全理解的基础设施。这可能会导致非常低效的脚本浪费资源或配置错误的服务器。
|
||||
|
||||
### 结论
|
||||
|
||||
越来越多的管理员正在学习自动化来帮助他们完成日常任务。因此,自动化正被应用于更多的技术领域。希望此列表将有助于防止新用户犯这些错误,并敦促经验丰富的管理员重新评估他们的 IT 策略。自动化旨在减轻重复性任务的负担,而不是为最终用户带来更多工作。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://fedoramagazine.org/five-common-mistakes-when-using-automation/
|
||||
|
||||
作者:[Gary Scarborough][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://fedoramagazine.org/author/gscarbor/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://fedoramagazine.org/wp-content/uploads/2022/05/modern-times-816x345.jpg
|
||||
[2]: https://en.wikipedia.org/wiki/Modern_Times_(film)
|
||||
[3]: https://commons.wikimedia.org/wiki/File:Chaplin_-_Modern_Times.jpg
|
@ -0,0 +1,69 @@
|
||||
[#]: subject: "Use this open source screen reader on Windows"
|
||||
[#]: via: "https://opensource.com/article/22/5/open-source-screen-reader-windows-nvda"
|
||||
[#]: author: "Peter Cheer https://opensource.com/users/petercheer"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
||||
在 Windows 上使用这个开源屏幕阅读器
|
||||
======
|
||||
为纪念全球无障碍意识日,了解 NVDA 开源屏幕阅读器,以及你如何参与其中,为所有网络用户提高无障碍性。
|
||||
|
||||
![Working from home at a laptop][1]
|
||||
图片提供:Opensource.com
|
||||
|
||||
屏幕阅读器是辅助技术软件的一个专门领域,它可以阅读并说出计算机屏幕上的内容。完全没有视力的人只是视力障碍者的一小部分,屏幕阅读器软件可以帮助所有群体。屏幕阅读器大多特定于操作系统,供有视觉障碍的人和无障碍培训师使用,以及想要测试网站或应用的无障碍访问程度的开发人员和无障碍顾问。
|
||||
|
||||
### 如何使用 NVDA 屏幕阅读器
|
||||
|
||||
[WebAIM 屏幕阅读器用户调查][2]始于 2009 年,一直持续到 2021 年。在第一次调查中,最常用的屏幕阅读器是 JAWS,占 74%。它是 Microsoft Windows 的商业产品,并且是长期的市场领导者。 NVDA 当时是一个相对较新的 Windows 开源屏幕阅读器,仅占 8%。快进到 2021 年,JAWS 占 53.7%,NVDA 占 30.7%。
|
||||
|
||||
你可以从 [NVAccess 网站][3]下载最新版本的 NVDA。为什么我要使用 NVDA 并将它推荐给我使用微软 Windows 的客户?嗯,它是开源的,速度快,功能强大,易于安装,支持多种语言,可以作为便携式应用运行,拥有庞大的用户群,并且有定期发布新版本的周期。
|
||||
|
||||
NVDA 已被翻译成 55 种语言,并在 175 个不同的国家/地区使用。还有一个活跃的开发者社区,拥有自己的[社区插件网站][4]。你选择安装的任何附加组件都将取决于你的需求,并且有很多可供选择,包括常见视频会议平台的扩展。
|
||||
|
||||
与所有屏幕阅读器一样,NVDA 有很多组合键需要学习。熟练使用任何屏幕阅读器都需要培训和练习。
|
||||
|
||||
![Image of NVDA welcome screen][5]
|
||||
|
||||
向熟悉计算机和会使用键盘的人教授 NVDA 并不太难。向一个完全初学者教授基本的计算机技能(没有鼠标、触摸板和键盘技能)和使用 NVDA 是一个更大的挑战。个人的学习方式和偏好不同。此外,如果人们只想浏览网页和使用电子邮件,他们可能不需要学习如何做所有事情。NVDA 教程和资源的一个很好的链接来源是[无障碍中心][6]。
|
||||
|
||||
当你掌握了使用键盘命令操作 NVDA,它就会变得更容易,但是还有一个菜单驱动的系统可以完成许多配置任务。
|
||||
|
||||
![Image of NVDA menu][7]
|
||||
|
||||
### 测试无障碍性
|
||||
|
||||
多年来,屏幕阅读器用户无法访问某些网站一直是个问题,尽管美国残疾人法案(ADA)等残疾人平等立法仍然存在。 NVDA 在有视力的社区中的一个很好的用途是用于网站无障碍性测试。NVDA 可以免费下载,并且通过运行便携式版本,网站开发人员甚至不需要安装它。运行 NVDA,关闭显示器或闭上眼睛,看看你在浏览网站或应用时的表现如何。
|
||||
|
||||
NVDA 也可用于测试(通常被忽略的)正确[标记 PDF 文档以实现无障碍性][8]任务。
|
||||
|
||||
有几个指南专注于使用 NVDA 进行无障碍性测试。我可以推荐[使用 NVDA 测试网页][9]和使用 [NVDA 评估 Web 无障碍性][10]。
|
||||
|
||||
图片提供:(Peter Cheer,CC BY-SA 4.0)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/22/5/open-source-screen-reader-windows-nvda
|
||||
|
||||
作者:[Peter Cheer][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/petercheer
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://opensource.com/sites/default/files/lead-images/wfh_work_home_laptop_work.png
|
||||
[2]: https://webaim.org/projects
|
||||
[3]: https://www.nvaccess.org
|
||||
[4]: https://addons.nvda-project.org/index.en.html
|
||||
[5]: https://opensource.com/sites/default/files/2022-05/nvda1.png
|
||||
[6]: http://www.accessibilitycentral.net/
|
||||
[7]: https://opensource.com/sites/default/files/2022-05/nvda2.png
|
||||
[8]: https://www.youtube.com/watch?v=rRzWRk6cXIE
|
||||
[9]: https://www.unimelb.edu.au/accessibility/tools/testing-web-pages-with-nvda
|
||||
[10]: https://webaim.org/articles/nvda
|
Loading…
Reference in New Issue
Block a user