diff --git a/published/20180712 An introduction to Go arrays and slices.md b/published/20180712 An introduction to Go arrays and slices.md
new file mode 100644
index 0000000000..9dcac9545c
--- /dev/null
+++ b/published/20180712 An introduction to Go arrays and slices.md
@@ -0,0 +1,214 @@
+[#]: subject: "An introduction to Go arrays and slices"
+[#]: via: "https://opensource.com/article/18/7/introduction-go-arrays-and-slices"
+[#]: author: "Mihalis Tsoukalos https://opensource.com/users/mtsouk"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14665-1.html"
+
+Go 数组和切片的介绍
+======
+
+
+
+> 了解使用数组和切片在 Go 中存储数据的优缺点,以及为什么其中一个更好。
+
+在本系列的第四篇文章中,我将解释 [Go][5] 数组和切片,包括如何使用它们,以及为什么你通常要选择其中一个而不是另一个。
+
+### 数组
+
+数组是编程语言中最流行的数据结构之一,主要原因有两个:一是简单易懂,二是可以存储许多不同类型的数据。
+
+你可以声明一个名为 `anArray` 的 Go 数组,该数组存储四个整数,如下所示:
+
+```
+anArray := [4]int{-1, 2, 0, -4}
+```
+
+数组的大小应该在它的类型之前声明,而类型应该在声明元素之前定义。`len()` 函数可以帮助你得到任何数组的长度。上面数组的大小是 4。
+
+如果你熟悉其他编程语言,你可能会尝试使用 `for` 循环来遍历数组。Go 当然也支持 `for` 循环,不过,正如你将在下面看到的,Go 的 `range` 关键字可以让你更优雅地遍历数组或切片。
+
+最后,你也可以定义一个二维数组,如下:
+
+```
+twoD := [3][3]int{
+ {1, 2, 3},
+ {6, 7, 8},
+ {10, 11, 12}}
+```
+
+`arrays.go` 源文件中包含了 Go 数组的示例代码。其中最重要的部分是:
+
+```
+for i := 0; i < len(twoD); i++ {
+ k := twoD[i]
+ for j := 0; j < len(k); j++ {
+ fmt.Print(k[j], " ")
+ }
+ fmt.Println()
+}
+
+for _, a := range twoD {
+ for _, j := range a {
+ fmt.Print(j, " ")
+ }
+ fmt.Println()
+}
+```
+
+通过上述代码,我们知道了如何使用 `for` 循环和 `range` 关键字迭代数组的元素。`arrays.go` 的其余代码则展示了如何将数组作为参数传递给函数。
+
+以下是 `arrays.go` 的输出:
+
+```
+$ go run arrays.go
+Before change(): [-1 2 0 -4]
+After change(): [-1 2 0 -4]
+1 2 3
+6 7 8
+10 11 12
+1 2 3
+6 7 8
+10 11 12
+```
+
+这个输出告诉我们:对函数内的数组所做的更改,会在函数退出后丢失。
+
+### 数组的缺点
+
+Go 数组有很多缺点,你应该重新考虑是否要在 Go 项目中使用它们。
+
+首先,数组定义之后,大小就无法改变,这意味着 Go 数组不是动态的。简而言之,如果你需要将一个元素添加到一个没有剩余空间的数组中,你将需要创建一个更大的数组,并将旧数组的所有元素复制到新数组中。
+
+其次,当你将数组作为参数传递给函数时,实际上是传递了数组的副本,这意味着你对函数内部的数组所做的任何更改,都将在函数退出后丢失。
+
+最后,将大数组传递给函数可能会很慢,主要是因为 Go 必须创建数组的副本。
+
+以上这些问题的解决方案,就是使用 Go 切片。
+
+### 切片
+
+Go 切片与 Go 数组类似,但是它没有后者的缺点。
+
+首先,你可以使用 `append()` 函数将元素添加到现有切片中。此外,Go 切片在内部使用数组实现,这意味着 Go 中每个切片都有一个底层数组。
+
+切片具有 `capacity` 属性和 `length` 属性,它们并不总是相同的。切片的长度与元素个数相同的数组的长度相同,可以使用 `len()` 函数得到。切片的容量是当前为切片分配的空间,可以使用 `cap()` 函数得到。
+
+由于切片的大小是动态的,如果切片空间不足(也就是说,当你尝试再向切片中添加一个元素时,底层数组的长度恰好与容量相等),Go 会自动将它的当前容量加倍,使其空间能够容纳更多元素,然后将请求的元素添加到底层数组中。
+
+此外,切片是通过引用传递给函数的,这意味着实际传递给函数的是切片变量的内存地址,这样一来,你对函数内部的切片所做的任何修改,都不会在函数退出后丢失。因此,将大切片传递给函数,要比将具有相同数量元素的数组传递给同一函数快得多。这是因为 Go 不必拷贝切片 —— 它只需传递切片变量的内存地址。
+
+`slice.go` 源文件中有 Go 切片的代码示例,其中包含以下代码:
+
+```
+package main
+
+import (
+ "fmt"
+)
+
+func negative(x []int) {
+ for i, k := range x {
+ x[i] = -k
+ }
+}
+
+func printSlice(x []int) {
+ for _, number := range x {
+ fmt.Printf("%d ", number)
+ }
+ fmt.Println()
+}
+
+func main() {
+ s := []int{0, 14, 5, 0, 7, 19}
+ printSlice(s)
+ negative(s)
+ printSlice(s)
+
+ fmt.Printf("Before. Cap: %d, length: %d\n", cap(s), len(s))
+ s = append(s, -100)
+ fmt.Printf("After. Cap: %d, length: %d\n", cap(s), len(s))
+ printSlice(s)
+
+ anotherSlice := make([]int, 4)
+ fmt.Printf("A new slice with 4 elements: ")
+ printSlice(anotherSlice)
+}
+```
+
+切片和数组在定义方式上的最大区别就在于:你不需要指定切片的大小。实际上,切片的大小取决于你要放入其中的元素数量。此外,`append()` 函数允许你将元素添加到现有切片 —— 请注意,即使切片的容量允许你将元素添加到该切片,它的长度也不会被修改,除非你调用 `append()`。上述代码中的 `printSlice()` 函数是一个辅助函数,用于打印切片中的所有元素,而 `negative()` 函数将切片中的每个元素都变为各自的相反数。
+
+运行 `slice.go` 将得到以下输出:
+
+```
+$ go run slice.go
+0 14 5 0 7 19
+0 -14 -5 0 -7 -19
+Before. Cap: 6, length: 6
+After. Cap: 12, length: 7
+0 -14 -5 0 -7 -19 -100
+A new slice with 4 elements: 0 0 0 0
+```
+
+请注意,当你创建一个新切片,并为给定数量的元素分配内存空间时,Go 会自动地将所有元素都初始化为其类型的零值,在本例中为 0(`int` 类型的零值)。
+
+### 使用切片来引用数组
+
+Go 允许你使用 `[:]` 语法,使用切片来引用现有的数组。在这种情况下,你对切片所做的任何更改都将传播到数组中 —— 详见 `refArray.go`。请记住,使用 `[:]` 不会创建数组的副本,它只是对数组的引用。
+
+`refArray.go` 中最有趣的部分是:
+
+```
+func main() {
+ anArray := [5]int{-1, 2, -3, 4, -5}
+ refAnArray := anArray[:]
+
+ fmt.Println("Array:", anArray)
+ printSlice(refAnArray)
+ negative(refAnArray)
+ fmt.Println("Array:", anArray)
+}
+```
+
+运行 `refArray.go`,输出如下:
+
+```
+$ go run refArray.go
+Array: [-1 2 -3 4 -5]
+-1 2 -3 4 -5
+Array: [1 -2 3 -4 5]
+```
+
+我们可以发现:对 `anArray` 数组的切片引用进行了操作后,它本身也被改变了。
+
+### 总结
+
+尽管 Go 提供了数组和切片两种类型,你很可能还是会使用切片,因为它们比 Go 数组更加通用、强大。只有少数情况需要使用数组而不是切片,特别是当你完全确定元素的数量固定不变时。
+
+你可以在 [GitHub][6] 上找到 `arrays.go`、`slice.go` 和 `refArray.go` 的源代码。
+
+如果你有任何问题或反馈,请在下方发表评论或在 [Twitter][7] 上与我联系。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/7/introduction-go-arrays-and-slices
+
+作者:[Mihalis Tsoukalos][a]
+选题:[lkxed][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/mtsouk
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/traffic-light-go.png
+[2]: https://opensource.com/article/18/5/creating-random-secure-passwords-go
+[3]: https://opensource.com/article/18/5/building-concurrent-tcp-server-go
+[4]: https://opensource.com/article/18/6/copying-files-go
+[5]: https://golang.org/
+[6]: https://github.com/mactsouk/opensource.com
+[7]: https://twitter.com/mactsouk
diff --git a/published/20210115 Learn awk by coding a -guess the number- game.md b/published/20210115 Learn awk by coding a -guess the number- game.md
new file mode 100644
index 0000000000..24738ff4be
--- /dev/null
+++ b/published/20210115 Learn awk by coding a -guess the number- game.md
@@ -0,0 +1,200 @@
+[#]: collector: (lujun9972)
+[#]: translator: (FYJNEVERFOLLOWS)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14668-1.html)
+[#]: subject: (Learn awk by coding a "guess the number" game)
+[#]: via: (https://opensource.com/article/21/1/learn-awk)
+[#]: author: (Chris Hermansen https://opensource.com/users/clhermansen)
+
+通过编写“猜数字”游戏来学习 Awk
+======
+
+> 编程语言往往具有许多共同特征。学习一门新语言的好方法是去写一个熟悉的程序。在本文中,我将会使用 Awk 编写一个“猜数字”程序来展示熟悉的概念。
+
+
+
+当你学习一门新的编程语言时,最好把重点放在大多数编程语言都有的共同点上:
+
+ * 变量 —— 存储信息的地方
+ * 表达式 —— 计算的方法
+ * 语句 —— 在程序中表示状态变化的方法
+
+这些概念是大多是编程语言的基础。
+
+一旦你理解了这些概念,你就可以开始把其他的弄清楚。例如,大多数语言都有由其设计所支持的“处理方式”,这些方式在不同语言之间可能有很大的不同。这些方法包括模块化(将相关功能分组在一起)、声明式与命令式、面向对象、低级与高级语法特性等等。许多程序员比较熟悉的是编程“仪式”,即,在处理问题之前设置场景所需花费的工作。据说 Java 编程语言有一个源于其设计的重要仪式要求,就是所有代码都在一个类中定义。
+
+但从根本上讲,编程语言通常有相似之处。一旦你掌握了一种编程语言,就可以从学习另一种语言的基本知识开始,品味这种新语言的不同之处。
+
+一个好方法是创建一组基本的测试程序。有了这些,就可以从这些相似之处开始学习。
+
+你可以选择创建的一个测试程序是“猜数字”程序。电脑从 1 到 100 之间选择一个数字,让你猜这个数字。程序一直循环,直到你猜对为止。
+
+“猜数字”程序练习了编程语言中的几个概念:
+
+ * 变量
+ * 输入
+ * 输出
+ * 条件判断
+ * 循环
+
+这是学习一门新的编程语言的一个很好的实践实验。
+
+**注**:本文改编自 Moshe Zadka 在 [Julia][2] 中使用这种方法和 Jim Hall在 [Bash][3] 中使用这种方法的文章。
+
+### 在 awk 程序中猜数
+
+让我们编写一个实现“猜数字”游戏的 Awk 程序。
+
+Awk 是动态类型的,这是一种面向数据转换的脚本语言,并且对交互使用有着令人惊讶的良好支持。Awk 出现于 20 世纪 70 年代,最初是 Unix 操作系统的一部分。如果你不了解 Awk,但是喜欢电子表格,这就是一个你可以 [去学习 Awk][4] 的信号!
+
+您可以通过编写一个“猜数字”游戏版本来开始对 Awk 的探索。
+
+以下是我的实现(带有行号,以便我们可以查看一些特定功能):
+
+```
+ 1 BEGIN {
+ 2 srand(42)
+ 3 randomNumber = int(rand() * 100) + 1
+ 4 print "random number is",randomNumber
+ 5 printf "guess a number between 1 and 100\n"
+ 6 }
+ 7 {
+ 8 guess = int($0)
+ 9 if (guess < randomNumber) {
+ 10 printf "too low, try again:"
+ 11 } else if (guess > randomNumber) {
+ 12 printf "too high, try again:"
+ 13 } else {
+ 14 printf "that's right\n"
+ 15 exit
+ 16 }
+ 17 }
+```
+
+我们可以立即看到 Awk 控制结构与 C 或 Java 的相似之处,但与 Python 不同。
+在像 `if-then-else`、`while` 这样的语句中,`then`、`else` 和 `while` 部分接受一个语句或一组被 `{` 和 `}` 包围的语句。然而,Awk 有一个很大的区别需要从一开始就了解:
+
+根据设计,Awk 是围绕数据管道构建的。
+
+这是什么意思呢?大多数 Awk 程序都是一些代码片段,它们接收一行输入,对数据做一些处理,然后将其写入输出。认识到这种转换管道的需要,Awk 默认情况下提供了所有的转换管道。让我们通过关于上面程序的一个基本问题来探索:“从控制台读取数据”的结构在哪里?
+
+答案是——“内置的”。特别的,第 7-17 行告诉 Awk 如何处理被读取的每一行。在这种情况下,很容易看到第 1-6 行是在读取任何内容之前被执行的。
+
+更具体地说,第 1 行上的 `BEGIN` 关键字是一种“模式”,在本例中,它指示 Awk 在读取任何数据之前,应该先执行 `{ ... }` 中 `BEGIN` 后面的内容。另一个类似的关键字 `END`,在这个程序中没有被使用,它指示 Awk 在读取完所有内容后要做什么。
+
+回到第 7-17 行,我们看到它们创建了一个类似代码块 `{ ... }` 的片段,但前面没有关键字。因为在 `{` 之前没有任何东西可以让 Awk 匹配,所以它将把这一行用于接收每一行输入。每一行的输入都将由用户输入作为猜测。
+
+让我们看看正在执行的代码。首先,是在读取任何输入之前发生的序言部分。
+
+在第 2 行,我们用数字 42 初始化随机数生成器(如果不提供参数,则使用系统时钟)。为什么要用 42?[当然要选 42!][5] 第 3 行计算 1 到 100 之间的随机数,第 4 行输出该随机数以供调试使用。第 5 行邀请用户猜一个数字。注意这一行使用的是 `printf`,而不是 `print`。和 C 语言一样,`printf` 的第一个参数是一个用于格式化输出的模板。
+
+既然用户知道程序需要输入,她就可以在控制台上键入猜测。如前所述,Awk 将这种猜测提供给第 7-17 行的代码。第 18 行将输入记录转换为整数;`$0` 表示整个输入记录,而 `$1` 表示输入记录的第一个字段,`$2` 表示第二个字段,以此类推。是的,Awk 使用预定义的分隔符(默认为空格)将输入行分割为组成字段。第 9-15 行将猜测结果与随机数进行比较,打印适当的响应。如果猜对了,第 15 行就会从输入行处理管道中提前退出。
+
+就这么简单!
+
+考虑到 Awk 程序不同寻常的结构,代码片段会对特定的输入行配置做出反应,并处理数据,让我们看看另一种结构,看看过滤部分是如何工作的:
+
+```
+ 1 BEGIN {
+ 2 srand(42)
+ 3 randomNumber = int(rand() * 100) + 1
+ 4 print "random number is",randomNumber
+ 5 printf "guess a number between 1 and 100\n"
+ 6 }
+ 7 int($0) < randomNumber {
+ 8 printf "too low, try again: "
+ 9 }
+ 10 int($0) > randomNumber {
+ 11 printf "too high, try again: "
+ 12 }
+ 13 int($0) == randomNumber {
+ 14 printf "that's right\n"
+ 15 exit
+ 16 }
+```
+
+第 1–6 行代码没有改变。但是现在我们看到第 7-9 行是当输入整数值小于随机数时执行的代码,第 10-12 行是当输入整数值大于随机数时执行的代码,第 13-16 行是两者相等时执行的代码。
+
+这看起来“很酷但很奇怪” —— 例如,为什么我们会重复计算 `int($0)`?可以肯定的是,用这种方法来解决问题会很奇怪。但这些模式确实是分离条件处理的非常好的方式,因为它们可以使用正则表达式或 Awk 支持的任何其他结构。
+
+为了完整起见,我们可以使用这些模式将普通的计算与只适用于特定环境的计算分离开来。下面是第三个版本:
+
+```
+ 1 BEGIN {
+ 2 srand(42)
+ 3 randomNumber = int(rand() * 100) + 1
+ 4 print "random number is",randomNumber
+ 5 printf "guess a number between 1 and 100\n"
+ 6 }
+ 7 {
+ 8 guess = int($0)
+ 9 }
+ 10 guess < randomNumber {
+ 11 printf "too low, try again: "
+ 12 }
+ 13 guess > randomNumber {
+ 14 printf "too high, try again: "
+ 15 }
+ 16 guess == randomNumber {
+ 17 printf "that's right\n"
+ 18 exit
+ 19 }
+```
+
+认识到这一点,无论输入的是什么值,都需要将其转换为整数,因此我们创建了第 7-9 行来完成这一任务。现在第 10-12、13-15 和 16-19 行这三组代码,都是指已经定义好的变量 guess,而不是每次都对输入行进行转换。
+
+让我们回到我们想要学习的东西列表:
+
+ * 变量 —— 是的,Awk 有这些;我们可以推断出,输入数据以字符串形式输入,但在需要时可以转换为数值
+ * 输入 —— Awk 只是通过它的“数据转换管道”的方式发送输入来读取数据
+ * 输出 —— 我们已经使用了 Awk 的 `print` 和 `printf` 函数来将内容写入输出
+ * 条件判断 —— 我们已经学习了 Awk 的 `if-then-else` 和对应特定输入行配置的输入过滤器
+ * 循环 —— 嗯,想象一下!我们在这里不需要循环,这还是多亏了 Awk 采用的“数据转换管道”方法;循环“就这么发生了”。注意,用户可以通过向 Awk 发送一个文件结束信号(当使用 Linux 终端窗口时可通过快捷键 `CTRL-D`)来提前退出管道。
+
+不需要循环来处理输入的重要性是非常值得的。Awk 能够长期保持存在的一个原因是 Awk 程序是紧凑的,而它们紧凑的一个原因是不需要从控制台或文件中读取的那些格式代码。
+
+让我们运行下面这个程序:
+
+```
+$ awk -f guess.awk
+random number is 25
+guess a number between 1 and 100: 50
+too high, try again: 30
+too high, try again: 10
+too low, try again: 25
+that's right
+$
+```
+
+我们没有涉及的一件事是注释。Awk 注释以 `#` 开头,以行尾结束。
+
+### 总结
+
+Awk 非常强大,这种“猜数字”游戏是入门的好方法。但这不应该是你探索 Awk 的终点。你可以看看 [Awk 和 Gawk(GNU Awk)的历史][6],Gawk 是 Awk 的扩展版本,如果你在电脑上运行 Linux,可能会有这个。或者,从它的原始开发者那里阅读关于 [最初版本][7] 的各种信息。
+
+你还可以 [下载我们的备忘单][8] 来帮你记录下你所学的一切。
+
+> **[Awk 备忘单][8]**
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/1/learn-awk
+
+作者:[Chris Hermansen][a]
+选题:[lujun9972][b]
+译者:[FYJNEVERFOLLOWS](https://github.com/FYJNEVERFOLLOWS)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/clhermansen
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/question-mark_chalkboard.jpg?itok=DaG4tje9 (question mark in chalk)
+[2]: https://opensource.com/article/20/12/julia
+[3]: https://opensource.com/article/20/12/learn-bash
+[4]: https://opensource.com/article/20/9/awk-ebook
+[5]: https://en.wikipedia.org/wiki/42_(number)#The_Hitchhiker's_Guide_to_the_Galaxy
+[6]: https://www.gnu.org/software/gawk/manual/html_node/History.html
+[7]: https://archive.org/details/pdfy-MgN0H1joIoDVoIC7
+[8]: https://opensource.com/downloads/cheat-sheet-awk-features
diff --git a/published/202205/20180523 Creating random, secure passwords in Go.md b/published/202205/20180523 Creating random, secure passwords in Go.md
new file mode 100644
index 0000000000..e472554850
--- /dev/null
+++ b/published/202205/20180523 Creating random, secure passwords in Go.md
@@ -0,0 +1,124 @@
+[#]: subject: "Creating random, secure passwords in Go"
+[#]: via: "https://opensource.com/article/18/5/creating-random-secure-passwords-go"
+[#]: author: "Mihalis Tsoukalos https://opensource.com/users/mtsouk"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14621-1.html"
+
+在 Go 中生成随机的安全密码
+======
+
+> Go 的随机数生成器是生成难以猜测的密码的好方法。
+
+
+
+你可以使用 [Go 编程语言][2] 提供的随机数生成器来生成由 ASCII 字符组成的难以猜测的密码。尽管本文中提供的代码很容易阅读,但是你仍需要了解 Go 的基础知识,才能更好地理解它。如果你是对 Go 还不熟悉,请阅读 [Go 语言之旅][3] 来了解更多信息,然后返回此处。
+
+在介绍实用程序和它的代码之前,让我们先来看看这个 ASCII 表的子集,它可以在 `man ascii` 命令的输出中找到:
+
+```
+30 40 50 60 70 80 90 100 110 120
+ ---------------------------------
+0: ( 2 < F P Z d n x
+1: ) 3 = G Q [ e o y
+2: * 4 > H R \ f p z
+3: ! + 5 ? I S ] g q {
+4: " , 6 @ J T ^ h r |
+5: # - 7 A K U _ i s }
+6: $ . 8 B L V ` j t ~
+7: % / 9 C M W a k u DEL
+8: & 0 : D N X b l v
+9: ' 1 ; E O Y c m w
+```
+
+在所有 ASCII 字符中,可打印字符的十进制值范围为 33 到 126,其他的 ASCII 值都不适合用于密码。因此,本文介绍的实用程序将生成该范围内的 ASCII 字符。
+
+### 生成随机整数
+
+第一个实用程序名为 `random.go`,它生成指定数量的随机整数,这些整数位于给定范围内。`random.go` 最重要的部分是这个函数:
+
+```
+func random(min, max int) int {
+ return rand.Intn(max-min) + min
+}
+```
+
+此函数使用了 `rand.Intn()` 函数来生成一个属于给定范围的随机整数。请注意,`rand.Intn()` 返回一个属于 `[0,n)` 的非负随机整数。如果它的参数是一个负数,这个函数将会抛出异常,异常消息是:`panic: invalid argument to Intn`。你可以在 [math/rand 文档][4] 中找到 `math/rand` 包的使用说明。
+
+`random.go` 实用程序接受三个命令行参数:生成的整数的最小值、最大值和个数。
+
+编译和执行 `random.go` 会产生这样的输出:
+
+```
+$ go build random.go
+$ ./random
+Usage: ./random MIX MAX TOTAL
+$ ./random 1 3 10
+2 2 1 2 2 1 1 2 2 1
+```
+
+如果你希望在 Go 中生成更安全的随机数,请使用 Go 库中的 `crypto/rand` 包。
+
+### 生成随机密码
+
+第二个实用程序 `randomPass.go` 用于生成随机密码。`randomPass.go` 使用 `random()` 函数来生成随机整数,它们随后被以下 Go 代码转换为 ASCII 字符:
+
+```
+for {
+ myRand := random(MIN, MAX)
+ newChar := string(startChar[0] + byte(myRand))
+ fmt.Print(newChar)
+ if i == LENGTH {
+ break
+ }
+ i++
+}
+```
+
+`MIN` 的值为 `0`,`MAX` 的值为 `94`,而 `startChar` 的值为 `!`,它是 ASCII 表中第一个可打印的字符(十进制 ASCII 码为 `33`)。因此,所有生成的 ASCII 字符都位于 `!` 和 `~` 之间,后者的十进制 ASCII 码为 `126`。
+
+因此,生成的每个随机数都大于 `MIN`,小于 `MAX`,并转换为 ASCII 字符。该过程继续进行,直到生成的密码达到指定的长度。
+
+`randomPass.go` 实用程序接受单个(可选)命令行参数,以定义生成密码的长度,默认值为 8,这是一个非常常见的密码长度。执行 `randomPass.go` 会得到类似下面的输出:
+
+```
+$ go run randomPass.go 1
+Z
+$ go run randomPass.go 10
+#Cw^a#IwkT
+$ go run randomPass.go
+Using default values!
+[PP8@'Ci
+```
+
+最后一个细节:不要忘记调用 `rand.Seed()`,并提供一个种子值,以初始化随机数生成器。如果你始终使用相同的种子值,随机数生成器将生成相同的随机整数序列。
+
+![随机数生成代码][5]
+
+你可以在 [GitHub][6] 找到 `random.go` 和 `randomPass.go` 的源码。你也可以直接在 [play.golang.org][7] 上执行它们。
+
+我希望这篇文章对你有所帮助。如有任何问题,请在下方发表评论或在 [Twitter][8] 上与我联系。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/5/creating-random-secure-passwords-go
+
+作者:[Mihalis Tsoukalos][a]
+选题:[lkxed][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/mtsouk
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/laptop-password.jpg
+[2]: https://golang.org/
+[3]: https://tour.golang.org/welcome/1
+[4]: https://golang.org/pkg/math/rand/
+[5]: https://opensource.com/sites/default/files/styles/panopoly_image_original/public/uploads/random.png?itok=DG0QPUGX
+[6]: https://github.com/mactsouk/opensource.com
+[7]: https://play.golang.org/
+[8]: https://twitter.com/mactsouk
diff --git a/translated/tech/20180529 Build a concurrent TCP server in Go.md b/published/202205/20180529 Build a concurrent TCP server in Go.md
similarity index 88%
rename from translated/tech/20180529 Build a concurrent TCP server in Go.md
rename to published/202205/20180529 Build a concurrent TCP server in Go.md
index 3ef27e4fe6..8cd93bf002 100644
--- a/translated/tech/20180529 Build a concurrent TCP server in Go.md
+++ b/published/202205/20180529 Build a concurrent TCP server in Go.md
@@ -3,16 +3,16 @@
[#]: author: "Mihalis Tsoukalos https://opensource.com/users/mtsouk"
[#]: collector: "lkxed"
[#]: translator: "lkxed"
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14623-1.html"
在 Go 中实现一个支持并发的 TCP 服务端
======
-仅用大约 65 行代码,开发一个用于生成随机数、支持并发的 TCP 服务端。
-![土拨鼠插图][1]
-(图源:Renee French, CC BY 3.0)
+
+
+> 仅用大约 65 行代码,开发一个用于生成随机数、支持并发的 TCP 服务端。
TCP 和 UDP 服务端随处可见,它们基于 TCP/IP 协议栈,通过网络为客户端提供服务。在这篇文章中,我将介绍如何使用 [Go 语言][2] 开发一个用于返回随机数、支持并发的 TCP 服务端。对于每一个来自 TCP 客户端的连接,它都会启动一个新的 goroutine(轻量级线程)来处理相应的请求。
@@ -22,7 +22,7 @@ TCP 和 UDP 服务端随处可见,它们基于 TCP/IP 协议栈,通过网络
这个程序的主要逻辑在 `handleConnection()` 函数中,具体实现如下:
-```go
+```
func handleConnection(c net.Conn) {
fmt.Printf("Serving %s\n", c.RemoteAddr().String())
for {
@@ -44,14 +44,14 @@ func handleConnection(c net.Conn) {
}
```
-如果 TCP 客户端发送了一个“STOP”字符串,为它提供服务的 goroutine 就会终止;否则,TCP 服务端就会返回一个随机数给它。只要客户端不主动终止,服务端就会一直提供服务,这是由 `for` 循环保证的。具体来说,`for` 循环中的代码使用了 `bufio.NewReader(c).ReadString('\n')` 来逐行读取客户端发来的数据,并使用 `c.Write([]byte(string(result)))` 来返回数据(生成的随机数)。你可以在 Go 的 net 标准包 [文档][4] 中了解更多。
+如果 TCP 客户端发送了一个 “STOP” 字符串,为它提供服务的 goroutine 就会终止;否则,TCP 服务端就会返回一个随机数给它。只要客户端不主动终止,服务端就会一直提供服务,这是由 `for` 循环保证的。具体来说,`for` 循环中的代码使用了 `bufio.NewReader(c).ReadString('\n')` 来逐行读取客户端发来的数据,并使用 `c.Write([]byte(string(result)))` 来返回数据(生成的随机数)。你可以在 Go 的 net 标准包 [文档][4] 中了解更多。
### 支持并发
在 `main()` 函数的实现部分,每当 TCP 服务端收到 TCP 客户端的连接请求,它都会启动一个新的 goroutine 来为这个请求提供服务。
-```go
+```
func main() {
arguments := os.Args
if len(arguments) == 1 {
@@ -138,7 +138,7 @@ via: https://opensource.com/article/18/5/building-concurrent-tcp-server-go
作者:[Mihalis Tsoukalos][a]
选题:[lkxed][b]
译者:[lkxed](https://github.com/lkxed)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/published/202205/20180625 3 ways to copy files in Go.md b/published/202205/20180625 3 ways to copy files in Go.md
new file mode 100644
index 0000000000..7a6d0a1647
--- /dev/null
+++ b/published/202205/20180625 3 ways to copy files in Go.md
@@ -0,0 +1,216 @@
+[#]: subject: "3 ways to copy files in Go"
+[#]: via: "https://opensource.com/article/18/6/copying-files-go"
+[#]: author: "Mihalis Tsoukalos https://opensource.com/users/mtsouk"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14658-1.html"
+
+在 Go 中复制文件的三种方法
+======
+
+
+
+> 本文是 Go 系列的第三篇文章,我将介绍三种最流行的复制文件的方法。
+
+本文将介绍展示如何使用 [Go 编程语言][3] 来复制文件。在 Go 中复制文件的方法有很多,我只介绍三种最常见的:使用 Go 库中的 `io.Copy()` 函数调用、一次读取输入文件并将其写入另一个文件,以及使用缓冲区一块块地复制文件。
+
+### 方法一:使用 io.Copy()
+
+第一种方法就是使用 Go 标准库的 `io.Copy()` 函数。你可以在 `copy()` 函数的代码中找到它的实现逻辑,如下所示:
+
+```
+func copy(src, dst string) (int64, error) {
+ sourceFileStat, err := os.Stat(src)
+ if err != nil {
+ return 0, err
+ }
+
+ if !sourceFileStat.Mode().IsRegular() {
+ return 0, fmt.Errorf("%s is not a regular file", src)
+ }
+
+ source, err := os.Open(src)
+ if err != nil {
+ return 0, err
+ }
+ defer source.Close()
+
+ destination, err := os.Create(dst)
+ if err != nil {
+ return 0, err
+ }
+ defer destination.Close()
+ nBytes, err := io.Copy(destination, source)
+ return nBytes, err
+ }
+```
+
+首先,上述代码做了两个判断,以便确定它可以被打开读取:一是判断将要复制的文件是否存在(`os.Stat(src)`),二是判断它是否为常规文件(`sourceFileStat.Mode().IsRegular()`)。剩下的所有工作都由 `io.Copy(destination, source)` 这行代码来完成。`io.Copy()` 函数执行结束后,会返回复制的字节数和复制过程中发生的第一条错误消息。在 Go 中,如果没有错误消息,错误变量的值就为 `nil`。
+
+你可以在 [io 包][4] 的文档页面了解有关 `io.Copy()` 函数的更多信息。
+
+运行 `cp1.go` 将产生以下输出:
+
+```
+$ go run cp1.go
+Please provide two command line arguments!
+$ go run cp1.go fileCP.txt /tmp/fileCPCOPY
+Copied 3826 bytes!
+$ diff fileCP.txt /tmp/fileCPCOPY
+```
+
+这个方法已经非常简单了,不过它没有为开发者提供灵活性。这并不总是一件坏事,但是,有些时候,开发者可能会需要/想要告诉程序该如何读取文件。
+
+### 方法二:使用 ioutil.WriteFile() 和 ioutil.ReadFile()
+
+复制文件的第二种方法是使用 `ioutil.ReadFile()` 和 `ioutil.WriteFile()` 函数。第一个函数用于将整个文件的内容,一次性地读入到某个内存中的字节切片里;第二个函数则用于将字节切片的内容写入到一个磁盘文件中。
+
+实现代码如下:
+
+```
+input, err := ioutil.ReadFile(sourceFile)
+if err != nil {
+ fmt.Println(err)
+ return
+}
+
+err = ioutil.WriteFile(destinationFile, input, 0644)
+if err != nil {
+ fmt.Println("Error creating", destinationFile)
+ fmt.Println(err)
+ return
+}
+```
+
+上述代码包括了两个 `if` 代码块(嗯,用 Go 写程序就是这样的),程序的实际功能其实体现在 `ioutil.ReadFile()` 和 `ioutil.WriteFile()` 这两行代码中。
+
+运行 `cp2.go`,你会得到下面的输出:
+
+```
+$ go run cp2.go
+Please provide two command line arguments!
+$ go run cp2.go fileCP.txt /tmp/copyFileCP
+$ diff fileCP.txt /tmp/copyFileCP
+```
+
+请注意,虽然这种方法能够实现文件复制,但它在复制大文件时的效率可能不高。这是因为当文件很大时,`ioutil.ReadFile()` 返回的字节切片会很大。
+
+### 方法三:使用 os.Read() 和 os.Write()
+
+在 Go 中复制文件的第三种方法就是下面要介绍的 `cp3.go`。它接受三个参数:输入文件名、输出文件名和缓冲区大小。
+
+`cp3.go` 最重要的部分位于以下 `for` 循环中,你可以在 `copy()` 函数中找到它,如下所示:
+
+```
+buf := make([]byte, BUFFERSIZE)
+for {
+ n, err := source.Read(buf)
+ if err != nil && err != io.EOF {
+ return err
+ }
+ if n == 0 {
+ break
+ }
+
+ if _, err := destination.Write(buf[:n]); err != nil {
+ return err
+ }
+}
+```
+
+该方法使用 `os.Read()` 将输入文件的一小部分读入名为 `buf` 的缓冲区,然后使用 `os.Write()` 将该缓冲区的内容写入文件。当读取出错或到达文件末尾(`io.EOF`)时,复制过程将停止。
+
+运行 `cp3.go`,你会得到下面的输出:
+
+```
+$ go run cp3.go
+usage: cp3 source destination BUFFERSIZE
+$ go run cp3.go fileCP.txt /tmp/buf10 10
+Copying fileCP.txt to /tmp/buf10
+$ go run cp3.go fileCP.txt /tmp/buf20 20
+Copying fileCP.txt to /tmp/buf20
+```
+
+在接下来的基准测试中,你会发现,缓冲区的大小极大地影响了 `cp3.go` 的性能。
+
+### 运行基准测试
+
+在本文的最后一部分,我将尝试比较这三个程序以及 `cp3.go` 在不同缓冲区大小下的性能(使用 `time(1)` 命令行工具)。
+
+以下输出显示了复制 500MB 大小的文件时,`cp1.go`、`cp2.go` 和 `cp3.go` 的性能对比:
+
+```
+$ ls -l INPUT
+-rw-r--r-- 1 mtsouk staff 512000000 Jun 5 09:39 INPUT
+$ time go run cp1.go INPUT /tmp/cp1
+Copied 512000000 bytes!
+
+real 0m0.980s
+user 0m0.219s
+sys 0m0.719s
+$ time go run cp2.go INPUT /tmp/cp2
+
+real 0m1.139s
+user 0m0.196s
+sys 0m0.654s
+$ time go run cp3.go INPUT /tmp/cp3 1000000
+Copying INPUT to /tmp/cp3
+
+real 0m1.025s
+user 0m0.195s
+sys 0m0.486s
+```
+
+我们可以看出,这三个程序的性能非常接近,这意味着 Go 标准库函数的实现非常聪明、经过了充分优化。
+
+现在,让我们测试一下缓冲区大小对 `cp3.go` 的性能有什么影响吧!执行 `cp3.go`,并分别指定缓冲区大小为 10、20 和 1000 字节,在一台运行很快的机器上复制 500MB 文件,得到的结果如下:
+
+```
+$ ls -l INPUT
+-rw-r--r-- 1 mtsouk staff 512000000 Jun 5 09:39 INPUT
+$ time go run cp3.go INPUT /tmp/buf10 10
+Copying INPUT to /tmp/buf10
+
+real 6m39.721s
+user 1m18.457s
+sys 5m19.186s
+$ time go run cp3.go INPUT /tmp/buf20 20
+Copying INPUT to /tmp/buf20
+
+real 3m20.819s
+user 0m39.444s
+sys 2m40.380s
+$ time go run cp3.go INPUT /tmp/buf1000 1000
+Copying INPUT to /tmp/buf1000
+
+real 0m4.916s
+user 0m1.001s
+sys 0m3.986s
+```
+
+我们可以发现,缓冲区越大,`cp3.go` 运行得就越快,这或多或少是符合预期的。此外,使用小于 20 字节的缓冲区来复制大文件会非常缓慢,应该避免。
+
+你可以在 [GitHub][5] 找到 `cp1.go`、`cp2.go` 和 `cp3.go` 的 Go 代码。
+
+如果你有任何问题或反馈,请在(原文)下方发表评论或在 [Twitter][6] 上与我(原作者)联系。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/6/copying-files-go
+
+作者:[Mihalis Tsoukalos][a]
+选题:[lkxed][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/mtsouk
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/LIFE_cat.png
+[3]: https://golang.org/
+[4]: https://golang.org/pkg/io/
+[5]: https://github.com/mactsouk/opensource.com
+[6]: https://twitter.com/mactsouk
diff --git a/published/20190404 Why you should choose mindfulness over multitasking.md b/published/202205/20190404 Why you should choose mindfulness over multitasking.md
similarity index 100%
rename from published/20190404 Why you should choose mindfulness over multitasking.md
rename to published/202205/20190404 Why you should choose mindfulness over multitasking.md
diff --git a/published/20200303 Watching activity on Linux with watch and tail commands.md b/published/202205/20200303 Watching activity on Linux with watch and tail commands.md
similarity index 100%
rename from published/20200303 Watching activity on Linux with watch and tail commands.md
rename to published/202205/20200303 Watching activity on Linux with watch and tail commands.md
diff --git a/published/20200807 A Beginner-s Guide to Open Source.md b/published/202205/20200807 A Beginner-s Guide to Open Source.md
similarity index 100%
rename from published/20200807 A Beginner-s Guide to Open Source.md
rename to published/202205/20200807 A Beginner-s Guide to Open Source.md
diff --git a/published/20210102 Explore the night sky with this open source astronomy app.md b/published/202205/20210102 Explore the night sky with this open source astronomy app.md
similarity index 100%
rename from published/20210102 Explore the night sky with this open source astronomy app.md
rename to published/202205/20210102 Explore the night sky with this open source astronomy app.md
diff --git a/published/20210111 9 Decentralized, P2P and Open Source Alternatives to Mainstream Social Media Platforms Like Twitter, Facebook, YouTube and Reddit.md b/published/202205/20210111 9 Decentralized, P2P and Open Source Alternatives to Mainstream Social Media Platforms Like Twitter, Facebook, YouTube and Reddit.md
similarity index 100%
rename from published/20210111 9 Decentralized, P2P and Open Source Alternatives to Mainstream Social Media Platforms Like Twitter, Facebook, YouTube and Reddit.md
rename to published/202205/20210111 9 Decentralized, P2P and Open Source Alternatives to Mainstream Social Media Platforms Like Twitter, Facebook, YouTube and Reddit.md
diff --git a/published/20210112 8 tips for the Linux command line.md b/published/202205/20210112 8 tips for the Linux command line.md
similarity index 100%
rename from published/20210112 8 tips for the Linux command line.md
rename to published/202205/20210112 8 tips for the Linux command line.md
diff --git a/published/20210122 Convert your filesystem to Btrfs.md b/published/202205/20210122 Convert your filesystem to Btrfs.md
similarity index 100%
rename from published/20210122 Convert your filesystem to Btrfs.md
rename to published/202205/20210122 Convert your filesystem to Btrfs.md
diff --git a/published/202205/20210211 31 open source text editors you need to try.md b/published/202205/20210211 31 open source text editors you need to try.md
new file mode 100644
index 0000000000..2ce2044280
--- /dev/null
+++ b/published/202205/20210211 31 open source text editors you need to try.md
@@ -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 个编辑器可供尝试。
+
+
+
+计算机是基于文本的,因此你使用它们做的事情越多,你可能就越需要文本编辑应用程序。你在文本编辑器上花费的时间越多,你就越有可能对你使用的编辑器提出更多的要求。
+
+如果你正在寻找一个好的文本编辑器,你会发现 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
diff --git a/published/202205/20210305 Build a printer UI for Raspberry Pi with XML and Java.md b/published/202205/20210305 Build a printer UI for Raspberry Pi with XML and Java.md
new file mode 100644
index 0000000000..6d7c365d54
--- /dev/null
+++ b/published/202205/20210305 Build a printer UI for Raspberry Pi with XML and Java.md
@@ -0,0 +1,255 @@
+[#]: subject: (Build a printer UI for Raspberry Pi with XML and Java)
+[#]: via: (https://opensource.com/article/21/3/raspberry-pi-totalcross)
+[#]: author: (Edson Holanda Teixeira Junior https://opensource.com/users/edsonhtj)
+[#]: collector: (lujun9972)
+[#]: translator: (CoWave-Fall)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14620-1.html)
+
+用 XML 和 Java 构建树莓派打印机的用户界面
+======
+
+> 使用 TotalCross 来快速构建嵌入式系统程序的用户界面。
+
+
+
+从头开始构建 GUI 是一个非常耗时的过程,以硬编码的方式处理所有的位置和对齐对于一些程序员来说确实很困难。所以在本文中,我将演示如何使用 XML 加快这一过程。
+
+本项目使用 [TotalCross][2] 作为目标框架。TotalCross 是一个开源的跨平台软件开发工具包(SDK),旨在更快地为嵌入式设备创建 GUI。TotalCross 无需在设备上运行 Java 即可提供 Java 的开发优势,因为它使用自己的字节码和虚拟机(TC 字节码 和 TCVM)来增强性能。
+
+我还使用了 Knowcode-XML,这是一个用于 TotalCross 框架的开源 XML 解析器,它可以将 XML 文件转换为 TotalCross 组件。
+
+### 项目需求
+
+要重现此项目,你需要:
+
+ * [KnowCode-XML][3]
+ * [VSCode][4] 或 [VSCodium][5]
+ * [一个 Android 开发环境][6]
+ * [用于 VSCode 的 TotalCross 插件][7]
+ * 适用于你的开发平台([Linux][8]、[Mac][9] 或 [Windows][10])的 Java,需要 Java 11(或更高版本)
+ * [Git][11]
+
+### 制作嵌入式应用程序
+
+该应用程序由一个具有扫描、打印和复印等基本打印功能的嵌入式 GUI 组成。
+
+![打印机初始化画面][12]
+
+构建这个 GUI 需要几个步骤,包括使用 Android-XML 生成 GUI,然后使用 Knowcode-XML 解析器在 TotalCross 框架上运行它。
+
+#### 1、生成 Android XML
+
+要创建 XML 文件,首先构建一个简单的 Android 屏幕,然后对其进行自定义。如果你不知道如何编写 Android-XML,或者你只是想简单尝试一下,你可以从这个 [GitHub 项目][14] 中下载这个应用程序的 XML。该项目还包含渲染 GUI 要用到的图片。
+
+#### 2、调整 XML
+
+生成 XML 文件后,你需要进行一些微调以确保所有内容都已经对齐、比例正确并且图像的路径正确。
+
+将 XML 布局添加到 `Layouts` 文件夹,将所有资源添加到 `Drawable` 文件夹。然后你就可以开始自定义 XML 了。
+
+例如,如果想要更改 XML 对象的背景,可以更改 `android:background` 属性:
+
+```
+android:background="@drawable/scan"
+```
+
+你也可以使用 `tools:layout_editor_absoluteX` 和 `tools:layout_editor_absoluteY` 更改对象的位置:
+
+```
+tools:layout_editor_absoluteX="830dp"
+tools:layout_editor_absoluteY="511dp"
+```
+
+或者使用 `android:layout_width` 和 `android:layout_height` 更改对象的大小:
+
+```
+android:layout_width="70dp"
+android:layout_height="70dp"
+```
+
+如果要在对象上放置文本,可以使用 `android:textSize`、`android:text`、`android:textStyle` 和 `android:textColor`:
+
+```
+android:textStyle="bold"
+android:textColor="#000000"
+android:textSize="20dp"
+android:text="2:45PM"
+```
+
+下面是一个完整的 XML 对象的示例:
+
+```
+
+```
+
+#### 3、在 TotalCross 上运行 GUI
+
+完成所有 XML 调整后,就可以在 TotalCross 上运行它了。在 TotalCross 扩展(LCTT 译注:在 VSCode 里面)上创建一个新项目,并将 `XML` 和 `Drawable` 文件夹添加到 `Main` 文件夹里。如果你仍然不确定如何创建 TotalCross 项目,请参阅我们的 [入门指南][15]。
+
+配置好环境后,使用 `totalcross.knowcode.parse.XmlContainerFactory` 和 `import totalcross.knowcode.parse.XmlContainerLayout` 在 TotalCross 框架上使用 XML GUI。 你可以在其 [GitHub 页面][3] 上找到更多关于使用 KnowCode-XML 的信息。
+
+#### 4、添加过渡效果
+
+这个项目的平滑过渡效果是由 `SlidingNavigator` 类创建的,它使用 TotalCross 的 `ControlAnimation` 类从一个屏幕滑到另一个屏幕。
+
+在 `XMLpresenter` 类上调用 `SlidingNavigator`:
+
+```
+new SlidingNavigator(this).present(HomePresenter.class);
+```
+
+在 `SlidingNavigator` 类上实现 `present` 函数:
+
+```
+public void present(Class extends XMLPresenter> presenterClass)
+ throws InstantiationException, IllegalAccessException {
+ final XMLPresenter presenter = cache.containsKey(presenterClass) ? cache.get(presenterClass)
+ : presenterClass.newInstance();
+ if (!cache.containsKey(presenterClass)) {
+ cache.put(presenterClass, presenter);
+ }
+
+ if (presenters.isEmpty()) {
+ window.add(presenter.content, LEFT, TOP, FILL, FILL);
+ } else {
+ XMLPresenter previous = presenters.lastElement();
+
+ window.add(presenter.content, AFTER, TOP, SCREENSIZE, SCREENSIZE, previous.content);
+```
+
+使用动画控件中的 `PathAnimation` 来创建从一个屏幕到另一个屏幕的滑动动画:
+
+```
+ PathAnimation.create(previous.content, -Settings.screenWidth, 0, new ControlAnimation.AnimationFinished() {
+ @Override
+ public void onAnimationFinished(ControlAnimation anim) {
+ window.remove(previous.content);
+ }
+ }, 1000).with(PathAnimation.create(presenter.content, 0, 0, new ControlAnimation.AnimationFinished() {
+ @Override
+ public void onAnimation Finished(Control Animation anim) {
+ presenter.content.setRect(LEFT, TOP, FILL, FILL);
+ }
+ }, 1000)).start();
+ }
+ presenter.setNavigator(this);
+ presenters.push(presenter);
+ presenter.bind2();
+ if (presenter.isFirstPresent) {
+ presenter.onPresent();
+ presenter.isFirstPresent = false;
+ }
+```
+
+#### 5、加载环形进度条
+
+打印机应用程序的另一个不错的功能是显示进度的加载屏幕动画。它包括文本和旋转动画。
+
+![加载环形进度条][18]
+
+通过添加定时器和定时器监听器来更新进度标签,然后调用函数 `spinner.start()` 来实现此功能。所有的动画都是由 TotalCross 和 KnowCode 自动生成的:
+
+```
+public void startSpinner() {
+ time = content.addTimer(500);
+ content.addTimerListener((e) -> {
+ try {
+ progress(); // Updates the Label
+ } catch (InstantiationException | IllegalAccessException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+ });
+ Spinner spinner = (Spinner) ((XmlContainerLayout) content).getControlByID("@+id/spinner");
+ spinner.start();
+ }
+```
+
+这里的环形进度条被实例化为对 XML 文件中描述的 `XmlContainerLayout` `spinner` 的引用:
+
+```
+
+```
+
+#### 6、构建应用程序
+
+是时候构建应用程序了。你可以在 `pom.xml` 中查看和更改目标系统。 请确保 `Linux Arm` 目标可用。
+
+如果你使用的是 VSCode,请按下键盘上的 `F1` 键,选择 `TotalCross: Package` 并等待完成。 然后就可以在 `Target` 文件夹中看到安装文件了。
+
+#### 7、在树莓派上部署和运行应用程序
+
+要使用 SSH 协议在 [树莓派][19] 上部署应用程序,请按键盘上的 `F1`。选择 `TotalCross: Deploy&Run` 并提供有关你的 SSH 连接的信息,如:用户名、IP地址、密码和应用程序路径。
+
+![TotalCross:部署与运行][20]
+
+![配置 SSH 用户名][21]
+
+![配置 IP 地址][22]
+
+![输入密码][23]
+
+![配置路径][24]
+
+### 总结
+
+KnowCode 让使用 Java 创建和管理应用程序屏幕变得更加容易。Knowcode-XML 将你的 XML 转换为 TotalCross GUI 界面,然后生成二进制文件以在你的树莓派上运行。
+
+将 KnowCode 技术与 TotalCross 相结合,使你能够更快地创建嵌入式应用程序。 你可以访问我们在 GitHub 上的 [嵌入式示例][25] 并编辑你自己的应用程序,了解你还可以做什么。
+
+如果你有问题、需要帮助,或者只是想与其他嵌入式 GUI 开发人员互动,请随时加入我们的 [Telegram][26] 小组,讨论任何框架上的嵌入式应用程序。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/3/raspberry-pi-totalcross
+
+作者:[Edson Holanda Teixeira Junior][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/edsonhtj
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/gears_devops_learn_troubleshooting_lightbulb_tips_520.png?itok=HcN38NOk (Tips and gears turning)
+[2]: https://opensource.com/article/20/7/totalcross-cross-platform-development
+[3]: https://github.com/TotalCross/knowcode-xml
+[4]: https://code.visualstudio.com/
+[5]: https://opensource.com/article/20/6/open-source-alternatives-vs-code
+[6]: https://developer.android.com/studio
+[7]: https://marketplace.visualstudio.com/items?itemName=totalcross.vscode-totalcross
+[8]: https://opensource.com/article/19/11/install-java-linux
+[9]: https://opensource.com/article/20/7/install-java-mac
+[10]: http://adoptopenjdk.net
+[11]: https://opensource.com/life/16/7/stumbling-git
+[12]: https://opensource.com/sites/default/files/uploads/01_printergui.png (printer init screen)
+[13]: https://creativecommons.org/licenses/by-sa/4.0/
+[14]: https://github.com/TotalCross/embedded-samples/tree/main/printer-application/src/main/resources/layout
+[15]: https://totalcross.com/get-started/?utm_source=opensource&utm_medium=article&utm_campaign=printer
+[16]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+instantiationexception
+[17]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+illegalaccessexception
+[18]: https://opensource.com/sites/default/files/uploads/03progressspinner.png (Loading Spinner)
+[19]: https://www.raspberrypi.org/products/raspberry-pi-4-model-b/
+[20]: https://opensource.com/sites/default/files/uploads/04_totalcross-deployrun.png (TotalCross: Deploy&Run)
+[21]: https://opensource.com/sites/default/files/uploads/05_ssh.png (SSH user)
+[22]: https://opensource.com/sites/default/files/uploads/06_ip.png (IP address)
+[23]: https://opensource.com/sites/default/files/uploads/07_password.png (Password)
+[24]: https://opensource.com/sites/default/files/uploads/08_path.png (Path)
+[25]: https://github.com/TotalCross/embedded-samples
+[26]: https://t.me/totalcrosscommunity
diff --git a/published/20210310 Troubleshoot WiFi problems with Go and a Raspberry Pi.md b/published/202205/20210310 Troubleshoot WiFi problems with Go and a Raspberry Pi.md
similarity index 100%
rename from published/20210310 Troubleshoot WiFi problems with Go and a Raspberry Pi.md
rename to published/202205/20210310 Troubleshoot WiFi problems with Go and a Raspberry Pi.md
diff --git a/published/20210323 WebAssembly Security, Now and in the Future.md b/published/202205/20210323 WebAssembly Security, Now and in the Future.md
similarity index 100%
rename from published/20210323 WebAssembly Security, Now and in the Future.md
rename to published/202205/20210323 WebAssembly Security, Now and in the Future.md
diff --git a/published/20210428 Share files between Linux and Windows computers.md b/published/202205/20210428 Share files between Linux and Windows computers.md
similarity index 100%
rename from published/20210428 Share files between Linux and Windows computers.md
rename to published/202205/20210428 Share files between Linux and Windows computers.md
diff --git a/published/20210615 Listen to music on FreeDOS.md b/published/202205/20210615 Listen to music on FreeDOS.md
similarity index 100%
rename from published/20210615 Listen to music on FreeDOS.md
rename to published/202205/20210615 Listen to music on FreeDOS.md
diff --git a/published/20210617 Linux package management with dnf.md b/published/202205/20210617 Linux package management with dnf.md
similarity index 100%
rename from published/20210617 Linux package management with dnf.md
rename to published/202205/20210617 Linux package management with dnf.md
diff --git a/published/20210624 Linux package management with apt.md b/published/202205/20210624 Linux package management with apt.md
similarity index 100%
rename from published/20210624 Linux package management with apt.md
rename to published/202205/20210624 Linux package management with apt.md
diff --git a/published/20210710 A new open source operating system for embedded systems.md b/published/202205/20210710 A new open source operating system for embedded systems.md
similarity index 100%
rename from published/20210710 A new open source operating system for embedded systems.md
rename to published/202205/20210710 A new open source operating system for embedded systems.md
diff --git a/published/20211213 How I use open source to design my own card games.md b/published/202205/20211213 How I use open source to design my own card games.md
similarity index 100%
rename from published/20211213 How I use open source to design my own card games.md
rename to published/202205/20211213 How I use open source to design my own card games.md
diff --git a/published/20220113 Learn Rust in 2022.md b/published/202205/20220113 Learn Rust in 2022.md
similarity index 100%
rename from published/20220113 Learn Rust in 2022.md
rename to published/202205/20220113 Learn Rust in 2022.md
diff --git a/published/20220212 5 levels of transparency for open source communities.md b/published/202205/20220212 5 levels of transparency for open source communities.md
similarity index 100%
rename from published/20220212 5 levels of transparency for open source communities.md
rename to published/202205/20220212 5 levels of transparency for open source communities.md
diff --git a/published/20220219 Crop and resize photos on Linux with Gwenview.md b/published/202205/20220219 Crop and resize photos on Linux with Gwenview.md
similarity index 100%
rename from published/20220219 Crop and resize photos on Linux with Gwenview.md
rename to published/202205/20220219 Crop and resize photos on Linux with Gwenview.md
diff --git a/published/20220221 3 steps to start running containers today.md b/published/202205/20220221 3 steps to start running containers today.md
similarity index 100%
rename from published/20220221 3 steps to start running containers today.md
rename to published/202205/20220221 3 steps to start running containers today.md
diff --git a/published/20220327 Top 10 Linux Distributions for Programmers in 2022 -Featured.md b/published/202205/20220327 Top 10 Linux Distributions for Programmers in 2022 -Featured.md
similarity index 100%
rename from published/20220327 Top 10 Linux Distributions for Programmers in 2022 -Featured.md
rename to published/202205/20220327 Top 10 Linux Distributions for Programmers in 2022 -Featured.md
diff --git a/published/20220414 A guide to JVM parameters for Java developers.md b/published/202205/20220414 A guide to JVM parameters for Java developers.md
similarity index 100%
rename from published/20220414 A guide to JVM parameters for Java developers.md
rename to published/202205/20220414 A guide to JVM parameters for Java developers.md
diff --git a/published/20220419 Difference Between Ubuntu 22.04 and Ubuntu 20.04 LTS.md b/published/202205/20220419 Difference Between Ubuntu 22.04 and Ubuntu 20.04 LTS.md
similarity index 100%
rename from published/20220419 Difference Between Ubuntu 22.04 and Ubuntu 20.04 LTS.md
rename to published/202205/20220419 Difference Between Ubuntu 22.04 and Ubuntu 20.04 LTS.md
diff --git a/published/20220422 Documentation Isn’t Just Another Aspect of Open Source Development.md b/published/202205/20220422 Documentation Isn’t Just Another Aspect of Open Source Development.md
similarity index 100%
rename from published/20220422 Documentation Isn’t Just Another Aspect of Open Source Development.md
rename to published/202205/20220422 Documentation Isn’t Just Another Aspect of Open Source Development.md
diff --git a/published/20220423 5 Less Popular Features that Make Ubuntu 22.04 LTS an Epic Release.md b/published/202205/20220423 5 Less Popular Features that Make Ubuntu 22.04 LTS an Epic Release.md
similarity index 100%
rename from published/20220423 5 Less Popular Features that Make Ubuntu 22.04 LTS an Epic Release.md
rename to published/202205/20220423 5 Less Popular Features that Make Ubuntu 22.04 LTS an Epic Release.md
diff --git a/published/20220425 Exciting New Features Revealed for KDE Plasma 5.25- Take a Look Here.md b/published/202205/20220425 Exciting New Features Revealed for KDE Plasma 5.25- Take a Look Here.md
similarity index 100%
rename from published/20220425 Exciting New Features Revealed for KDE Plasma 5.25- Take a Look Here.md
rename to published/202205/20220425 Exciting New Features Revealed for KDE Plasma 5.25- Take a Look Here.md
diff --git a/published/20220425 Linux Mint Upgrade Tool - Here-s How it Works.md b/published/202205/20220425 Linux Mint Upgrade Tool - Here-s How it Works.md
similarity index 100%
rename from published/20220425 Linux Mint Upgrade Tool - Here-s How it Works.md
rename to published/202205/20220425 Linux Mint Upgrade Tool - Here-s How it Works.md
diff --git a/published/20220426 How to Upgrade to Pop OS 22.04 LTS from 21.10 -Step by Step.md b/published/202205/20220426 How to Upgrade to Pop OS 22.04 LTS from 21.10 -Step by Step.md
similarity index 100%
rename from published/20220426 How to Upgrade to Pop OS 22.04 LTS from 21.10 -Step by Step.md
rename to published/202205/20220426 How to Upgrade to Pop OS 22.04 LTS from 21.10 -Step by Step.md
diff --git a/published/20220427 10 Reasons to Run Linux in Virtual Machines.md b/published/202205/20220427 10 Reasons to Run Linux in Virtual Machines.md
similarity index 100%
rename from published/20220427 10 Reasons to Run Linux in Virtual Machines.md
rename to published/202205/20220427 10 Reasons to Run Linux in Virtual Machines.md
diff --git a/published/20220427 Bloomberg Open Sources Memray, A Python Memory Profiler.md b/published/202205/20220427 Bloomberg Open Sources Memray, A Python Memory Profiler.md
similarity index 100%
rename from published/20220427 Bloomberg Open Sources Memray, A Python Memory Profiler.md
rename to published/202205/20220427 Bloomberg Open Sources Memray, A Python Memory Profiler.md
diff --git a/published/20220427 Hands on With GNOME-s New Text Editor for Linux Users.md b/published/202205/20220427 Hands on With GNOME-s New Text Editor for Linux Users.md
similarity index 100%
rename from published/20220427 Hands on With GNOME-s New Text Editor for Linux Users.md
rename to published/202205/20220427 Hands on With GNOME-s New Text Editor for Linux Users.md
diff --git a/published/20220427 How I grew my product management career with open source.md b/published/202205/20220427 How I grew my product management career with open source.md
similarity index 100%
rename from published/20220427 How I grew my product management career with open source.md
rename to published/202205/20220427 How I grew my product management career with open source.md
diff --git a/published/20220427 Shortwave 3.0 is Here With UI Upgrades, Private Stations, and More Improvements.md b/published/202205/20220427 Shortwave 3.0 is Here With UI Upgrades, Private Stations, and More Improvements.md
similarity index 100%
rename from published/20220427 Shortwave 3.0 is Here With UI Upgrades, Private Stations, and More Improvements.md
rename to published/202205/20220427 Shortwave 3.0 is Here With UI Upgrades, Private Stations, and More Improvements.md
diff --git a/published/20220428 Archinstall-s New Menu System Makes it Even Easier to Install Arch Linux.md b/published/202205/20220428 Archinstall-s New Menu System Makes it Even Easier to Install Arch Linux.md
similarity index 100%
rename from published/20220428 Archinstall-s New Menu System Makes it Even Easier to Install Arch Linux.md
rename to published/202205/20220428 Archinstall-s New Menu System Makes it Even Easier to Install Arch Linux.md
diff --git a/published/20220428 Elon Musk’s Plan To Open Source The Twitter Algorithm Has Flaws.md b/published/202205/20220428 Elon Musk’s Plan To Open Source The Twitter Algorithm Has Flaws.md
similarity index 100%
rename from published/20220428 Elon Musk’s Plan To Open Source The Twitter Algorithm Has Flaws.md
rename to published/202205/20220428 Elon Musk’s Plan To Open Source The Twitter Algorithm Has Flaws.md
diff --git a/published/20220428 How to Remove Snap Packages in Ubuntu Linux.md b/published/202205/20220428 How to Remove Snap Packages in Ubuntu Linux.md
similarity index 100%
rename from published/20220428 How to Remove Snap Packages in Ubuntu Linux.md
rename to published/202205/20220428 How to Remove Snap Packages in Ubuntu Linux.md
diff --git a/published/20220428 Why use Apache Druid for your open source analytics database.md b/published/202205/20220428 Why use Apache Druid for your open source analytics database.md
similarity index 100%
rename from published/20220428 Why use Apache Druid for your open source analytics database.md
rename to published/202205/20220428 Why use Apache Druid for your open source analytics database.md
diff --git a/published/20220429 Detect a Phishing URL Using Machine Learning in Python.md b/published/202205/20220429 Detect a Phishing URL Using Machine Learning in Python.md
similarity index 100%
rename from published/20220429 Detect a Phishing URL Using Machine Learning in Python.md
rename to published/202205/20220429 Detect a Phishing URL Using Machine Learning in Python.md
diff --git a/published/20220430 Hands On With GNOME’s New Terminal for Linux Users.md b/published/202205/20220430 Hands On With GNOME’s New Terminal for Linux Users.md
similarity index 100%
rename from published/20220430 Hands On With GNOME’s New Terminal for Linux Users.md
rename to published/202205/20220430 Hands On With GNOME’s New Terminal for Linux Users.md
diff --git a/published/20220430 How to Install h.264 decoder on Ubuntu Linux.md b/published/202205/20220430 How to Install h.264 decoder on Ubuntu Linux.md
similarity index 100%
rename from published/20220430 How to Install h.264 decoder on Ubuntu Linux.md
rename to published/202205/20220430 How to Install h.264 decoder on Ubuntu Linux.md
diff --git a/published/20220430 Rust-based Redox OS 0.7.0 Arrives with Enhanced Hardware Support.md b/published/202205/20220430 Rust-based Redox OS 0.7.0 Arrives with Enhanced Hardware Support.md
similarity index 100%
rename from published/20220430 Rust-based Redox OS 0.7.0 Arrives with Enhanced Hardware Support.md
rename to published/202205/20220430 Rust-based Redox OS 0.7.0 Arrives with Enhanced Hardware Support.md
diff --git a/translated/tech/20220501 How to Install Classic GNOME Flashback in Ubuntu 22.04 LTS.md b/published/202205/20220501 How to Install Classic GNOME Flashback in Ubuntu 22.04 LTS.md
similarity index 50%
rename from translated/tech/20220501 How to Install Classic GNOME Flashback in Ubuntu 22.04 LTS.md
rename to published/202205/20220501 How to Install Classic GNOME Flashback in Ubuntu 22.04 LTS.md
index a308fec234..67e46d9b20 100644
--- a/translated/tech/20220501 How to Install Classic GNOME Flashback in Ubuntu 22.04 LTS.md
+++ b/published/202205/20220501 How to Install Classic GNOME Flashback in Ubuntu 22.04 LTS.md
@@ -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 和系统资源非常少。因此,它非常适合可以追溯到几十年前的旧硬件。
+
-随着带有现代 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
diff --git a/published/20220502 How to make community recognition more inclusive.md b/published/202205/20220502 How to make community recognition more inclusive.md
similarity index 100%
rename from published/20220502 How to make community recognition more inclusive.md
rename to published/202205/20220502 How to make community recognition more inclusive.md
diff --git a/published/20220502 Microsoft Joins The Open 3D Foundation For Open Source 3D Development.md b/published/202205/20220502 Microsoft Joins The Open 3D Foundation For Open Source 3D Development.md
similarity index 100%
rename from published/20220502 Microsoft Joins The Open 3D Foundation For Open Source 3D Development.md
rename to published/202205/20220502 Microsoft Joins The Open 3D Foundation For Open Source 3D Development.md
diff --git a/published/20220502 Tools You Can Use for the Security Audit of IoT Devices.md b/published/202205/20220502 Tools You Can Use for the Security Audit of IoT Devices.md
similarity index 100%
rename from published/20220502 Tools You Can Use for the Security Audit of IoT Devices.md
rename to published/202205/20220502 Tools You Can Use for the Security Audit of IoT Devices.md
diff --git a/published/20220502 Ubuntu’s Unity Desktop Still Lives- Version 7.6 is Available for Testing After 6 Years.md b/published/202205/20220502 Ubuntu’s Unity Desktop Still Lives- Version 7.6 is Available for Testing After 6 Years.md
similarity index 100%
rename from published/20220502 Ubuntu’s Unity Desktop Still Lives- Version 7.6 is Available for Testing After 6 Years.md
rename to published/202205/20220502 Ubuntu’s Unity Desktop Still Lives- Version 7.6 is Available for Testing After 6 Years.md
diff --git a/published/20220503 Nvidia Begins To Set The Foundation For Future Open And Parallel Coding.md b/published/202205/20220503 Nvidia Begins To Set The Foundation For Future Open And Parallel Coding.md
similarity index 100%
rename from published/20220503 Nvidia Begins To Set The Foundation For Future Open And Parallel Coding.md
rename to published/202205/20220503 Nvidia Begins To Set The Foundation For Future Open And Parallel Coding.md
diff --git a/published/20220503 Package Analysis Examines Packages In Open Source Repositories In Real Time.md b/published/202205/20220503 Package Analysis Examines Packages In Open Source Repositories In Real Time.md
similarity index 100%
rename from published/20220503 Package Analysis Examines Packages In Open Source Repositories In Real Time.md
rename to published/202205/20220503 Package Analysis Examines Packages In Open Source Repositories In Real Time.md
diff --git a/published/20220504 ESI Group Collaborates With ENSAM, Open Sources Its “Inspector” Software.md b/published/202205/20220504 ESI Group Collaborates With ENSAM, Open Sources Its “Inspector” Software.md
similarity index 100%
rename from published/20220504 ESI Group Collaborates With ENSAM, Open Sources Its “Inspector” Software.md
rename to published/202205/20220504 ESI Group Collaborates With ENSAM, Open Sources Its “Inspector” Software.md
diff --git a/published/20220504 Firefox 100 Marks 17 Years of Development with Interesting Upgrades.md b/published/202205/20220504 Firefox 100 Marks 17 Years of Development with Interesting Upgrades.md
similarity index 100%
rename from published/20220504 Firefox 100 Marks 17 Years of Development with Interesting Upgrades.md
rename to published/202205/20220504 Firefox 100 Marks 17 Years of Development with Interesting Upgrades.md
diff --git a/published/20220504 How I manage my own virtual network with ZeroTier.md b/published/202205/20220504 How I manage my own virtual network with ZeroTier.md
similarity index 100%
rename from published/20220504 How I manage my own virtual network with ZeroTier.md
rename to published/202205/20220504 How I manage my own virtual network with ZeroTier.md
diff --git a/published/20220504 Microsoft’s 3D Movie Maker, First Released In 1995, Is Now Open Source.md b/published/202205/20220504 Microsoft’s 3D Movie Maker, First Released In 1995, Is Now Open Source.md
similarity index 100%
rename from published/20220504 Microsoft’s 3D Movie Maker, First Released In 1995, Is Now Open Source.md
rename to published/202205/20220504 Microsoft’s 3D Movie Maker, First Released In 1995, Is Now Open Source.md
diff --git a/published/20220504 elementary OS 7 Code Name Revealed. Here are the Details.md b/published/202205/20220504 elementary OS 7 Code Name Revealed. Here are the Details.md
similarity index 100%
rename from published/20220504 elementary OS 7 Code Name Revealed. Here are the Details.md
rename to published/202205/20220504 elementary OS 7 Code Name Revealed. Here are the Details.md
diff --git a/published/20220505 Experiment with containers and pods on your own computer.md b/published/202205/20220505 Experiment with containers and pods on your own computer.md
similarity index 100%
rename from published/20220505 Experiment with containers and pods on your own computer.md
rename to published/202205/20220505 Experiment with containers and pods on your own computer.md
diff --git a/published/20220505 Open Source Developer Creates First-of-its-Kind Fund To Support Maintainers.md b/published/202205/20220505 Open Source Developer Creates First-of-its-Kind Fund To Support Maintainers.md
similarity index 100%
rename from published/20220505 Open Source Developer Creates First-of-its-Kind Fund To Support Maintainers.md
rename to published/202205/20220505 Open Source Developer Creates First-of-its-Kind Fund To Support Maintainers.md
diff --git a/published/20220505 Tails 5.0 Release is Based on Debian 11 With a New -Kleopatra- Tool.md b/published/202205/20220505 Tails 5.0 Release is Based on Debian 11 With a New -Kleopatra- Tool.md
similarity index 100%
rename from published/20220505 Tails 5.0 Release is Based on Debian 11 With a New -Kleopatra- Tool.md
rename to published/202205/20220505 Tails 5.0 Release is Based on Debian 11 With a New -Kleopatra- Tool.md
diff --git a/published/20220505 Xebian – A Blend of Debian and Goodness of Xfce [Review].md b/published/202205/20220505 Xebian – A Blend of Debian and Goodness of Xfce [Review].md
similarity index 100%
rename from published/20220505 Xebian – A Blend of Debian and Goodness of Xfce [Review].md
rename to published/202205/20220505 Xebian – A Blend of Debian and Goodness of Xfce [Review].md
diff --git a/published/20220506 Announcing Fedora Linux 36.md b/published/202205/20220506 Announcing Fedora Linux 36.md
similarity index 100%
rename from published/20220506 Announcing Fedora Linux 36.md
rename to published/202205/20220506 Announcing Fedora Linux 36.md
diff --git a/published/20220506 My favorite open source tool for using crontab.md b/published/202205/20220506 My favorite open source tool for using crontab.md
similarity index 100%
rename from published/20220506 My favorite open source tool for using crontab.md
rename to published/202205/20220506 My favorite open source tool for using crontab.md
diff --git a/published/20220506 Ubuntu MATE’s Lead Creates a Nifty Tool to Help Install 3rd Party Deb Packages.md b/published/202205/20220506 Ubuntu MATE’s Lead Creates a Nifty Tool to Help Install 3rd Party Deb Packages.md
similarity index 100%
rename from published/20220506 Ubuntu MATE’s Lead Creates a Nifty Tool to Help Install 3rd Party Deb Packages.md
rename to published/202205/20220506 Ubuntu MATE’s Lead Creates a Nifty Tool to Help Install 3rd Party Deb Packages.md
diff --git a/translated/talk/20220508 How open source leads the way for sustainable technology.md b/published/202205/20220508 How open source leads the way for sustainable technology.md
similarity index 62%
rename from translated/talk/20220508 How open source leads the way for sustainable technology.md
rename to published/202205/20220508 How open source leads the way for sustainable technology.md
index 04a41b5528..3879c16fe1 100644
--- a/translated/talk/20220508 How open source leads the way for sustainable technology.md
+++ b/published/202205/20220508 How open source leads the way for sustainable technology.md
@@ -3,32 +3,32 @@
[#]: author: "Hannah Smith https://opensource.com/users/hanopcan"
[#]: collector: "lkxed"
[#]: translator: "PeterPan0106"
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14625-1.html"
开源为可持续发展技术提供新思路
======
-开源和社会对于更为稳定的技术演进的需求具有相同的目标,即实现一个更为可持续的未来。
-![][1]
-(图源: opensource.com)
+> 开源和社会对于更为稳定的技术演进的需求具有相同的目标,即实现一个更为可持续的未来。
-在可持续发展和环境问题上,目前正在发生明确的变化。关注地球的状况并为之做出努力已经成为主流思想。举个例子,看看基于气候的风险资本主义。气候技术风险投资公司(CTVC)的气候资本名单在过去两年中增加了[一倍多][2]。涌入的资本表明了解决艰难的气候挑战的愿望和意愿。
+
+
+在可持续发展和环境问题上,目前正在发生明确的变化。关注地球的状况并为之做出努力已经成为主流思想。举个例子,看看基于气候的风险资本主义。气候技术风险投资公司(CTVC)的气候资本名单在过去两年中增加了 [一倍多][2]。涌入的资本表明了人们对解决艰难的气候挑战的愿望和意愿。
人们想采取行动,这很好,我持相同态度!但我也看到了一个真正的风险:当人们急于采取行动并参与到其中时,他们可能会不知不觉地卷入洗绿运动中。
-维基百科对 "洗绿 "的定义称其为 "一种营销策略,其中绿色公关和绿色营销被欺骗性地用来说服公众,使其相信一个组织的产品、目标和政策是环保的"。在我看来,洗绿既是有意为之,也是无意中发生的。外面有很多想有所作为的好人,但对复杂的环境系统或围绕可持续发展的问题的深度还不甚了解。
+维基百科对 “洗绿” 的定义称其为 “一种营销策略,其中绿色公关和绿色营销被欺骗性地用来说服公众,使其相信一个组织的产品、目标和政策是环保的”。在我看来,洗绿既是有意为之,也是无意中发生的。外面有很多想有所作为的好人,但对复杂的环境系统或围绕可持续发展的问题的深度还不甚了解。
我们很容易落入这样的陷阱,即认为通过植树来抵消旅行或数据中心的排放等简单的购买行为会使一些东西变得更加绿色。虽然这些努力是值得提倡的,而且植树是改善可持续发展的一个可行的解决方案,但它们只是一个很好的开端,仍然需要进行更多的努力才能真正产生变革。
那么,一个人或一个社区可以做些什么来使数字技术真正地更加可持续?
-可持续性对不同的人有不同的含义。我喜欢的最简短的定义来自1987年的《布伦特兰报告》,该报告将其概括为 "既能满足当代的需要,同时又不损及后代满足其需要的发展模式"。可持续发展的核心是优先考虑长期思维。
+“可持续性”对不同的人有不同的含义。我喜欢的最简短的定义来自 1987 年的《布伦特兰报告》,该报告将其概括为 “既能满足当代的需要,同时又不损及后代满足其需要的发展模式”。可持续发展的核心是优先考虑长期思维。
### 可持续发展不仅仅是保护环境
-在可持续性的定义中,有三个相互关联的关键支柱。
+在可持续性的定义中,有三个相互关联的关键支柱:
1. 环境
2. 经济 / 政策
@@ -36,35 +36,35 @@
关于可持续发展的讨论越来越多地被气候危机所主导,这是有道理的。随着我们继续通过不可逆转的生态临界点,减少世界上较富裕国家的碳排放的需求变得越来越紧迫。但真正的可持续性是一套更全面的体系,正如三大支柱所展示的那样。
-碳排放无疑是可持续性的一部分。许多人认为排放只是一个环境问题。只要从空气中移除更多的碳,一切都会好起来。但社会问题也是可持续性的一部分。谁会受到这些碳排放的影响?谁将承受我们气候变化带来的最大影响?谁因海平面上升而失去了家园,或因天气模式变化而失去了可靠的水源?这就是为什么你可能听说过 "气候正义就是社会正义 "这句话。
+碳排放无疑是可持续性的一部分。许多人认为排放只是一个环境问题。只要从空气中移除更多的碳,一切都会好起来。但社会问题也是可持续性的一部分。谁会受到这些碳排放的影响?谁将承受我们气候变化带来的最大影响?谁因海平面上升而失去了家园,或因天气模式变化而失去了可靠的水源?这就是为什么你可能听说过 “气候正义就是社会正义” 这句话。
仅仅把减碳看作是可持续发展会令你的视野被限定在碳上。我经常认为,气候变化是社会在更大范围内错失可持续性的一个症状。相反,关键是要解决首先导致气候变化的根本原因。解决这些问题将使长期解决这些问题成为可能,而短期解决可能只会将问题推向另一个脆弱的边缘。
-其根本原因很复杂。但是,如果我追根溯源,我看到根本问题是由主导的西方价值观并旨在延续这些价值观的系统所驱动的。这些价值观是什么呢?一语概之,它们是快速增长和对利润的攫取高于一切。
+其根本原因很复杂。但是,如果我追根溯源,我看到根源是由西方的主流价值观和旨在延续这些价值观的制度所驱动的。这些价值观是什么呢?一语概之,它们是快速增长和对利润的攫取高于一切。
这就是为什么关于可持续性的对话如果不包括社会问题或经济的设计方式,就不会达成真正的解决方案。毕竟,社会和掌握权力的人决定了他们自己的价值观是什么,或者不是什么。
### 我能做什么?
-科技领域的许多人目前正致力于解决这些问题,并想知道怎样行动更有意义。一个常见的方法是研究如何优化他们制造的技术,使其更有效地使用电力。世界上60%的电力仍然是通过燃烧化石燃料产生的,尽管可再生能源的发电能力不断提高。但从逻辑上讲,使用更少的电力意味着产生更少的碳排放。
+科技领域的许多人目前正致力于解决这些问题,并想知道怎样行动更有意义。一个常见的方法是研究如何优化他们制造的技术,使其更有效地使用电力。世界上 60% 的电力仍然是通过燃烧化石燃料产生的,尽管可再生能源的发电能力不断提高。但从逻辑上讲,使用更少的电力意味着产生更少的碳排放。
是的,这是很有意义的,任何人都可以尝试,立即就能生效。当用户加载一个页面时,优化发送的资源,以发送更少的数据,将使用更少的能源。因此,优化服务器,使其在一天中的不同时段运行,例如,当有更多的可再生能源可用时运行,或删除多余信息的旧存储,如分析数据或日志。
-但考虑到杰文的悖论:使某样东西更有效率往往会导致使用更多的东西,而不是减少。当人们更容易和更容易使用某样东西时,他们最终会使用更多。在某种角度,这是好的。性能更好的技术是一件好事,有助于提高包容性和触及性,这对社会是有益的。但是,气候变化和可持续性的长期解决方案需要围绕社会和技术之间的关系进行更深入、更令人不适的对话。所有这些技术在为什么和谁服务?它正在加速哪些行为和做法?
+但考虑到杰文的悖论:使某样东西更有效率往往会导致使用更多的东西,而不是减少。当人们更容易和更便于使用某样东西时,他们最终会使用更多。在某种角度,这是好的。性能更好的技术是一件好事,有助于提高包容性和触及性,这对社会是有益的。但是,气候变化和可持续性的长期解决方案需要围绕社会和技术之间的关系进行更深入、更令人不适的对话。所有这些技术在为什么和谁服务?它正在加速哪些行为和做法?
将技术的演进视为进步很正常,一些人认为:技术将把世界从气候变化中拯救出来。一些聪明的人正在通过艰苦卓绝的努力改善这一问题,所以其他人不需要改变他们的方式。问题是,许多社区和生态系统已经在遭受更大的创伤。
-例如,对更多更高速传输的数据的追求正在导致智利的一些社区没有足够的水来种植农作物。因为数据中心正在使用这些宝贵的水源。移动电话造成的污染有70%来自于其制造。制造移动设备并为其提供动力的锂和钴等原材料通常是从弱势的社区中提取的,而这些社区几乎没有能力阻止制造商对其土地的破坏,当然也没有分享所获利润。尽管如此,每两年升级一次手机的做法已经变得很普遍了。
+例如,对更多更高速传输的数据的追求正在导致智利的一些社区没有足够的水来种植农作物。因为数据中心正在使用这些宝贵的水源。移动电话造成的污染有 70% 来自于其制造。制造移动设备并为其提供动力的锂和钴等原材料通常是从弱势的社区中提取的,而这些社区几乎没有能力阻止制造商对其土地的破坏,当然也没有分享所获利润。尽管如此,每两年升级一次手机的做法已经变得很普遍了。
### 开源思路引领可持续发展之路
现在是时候将数字技术的使用视为一种宝贵的资源,这对地球和(通常已经处于弱势的)社区都有影响。
-开源社区已经是帮助人们认识到有另一种解决方案:开源。开源与我们更广泛的社会为实现更可持续的未来而需要做的事情之间有巨大的相似之处。更加开放和包容是其中的一个关键部分。
+开源社区已经帮助人们认识到有另一种解决方案:开源。开源与我们更广泛的社会为实现更可持续的未来而需要做的事情之间有巨大的相似之处。更加开放和包容是其中的一个关键部分。
我们还需要在社会的各个层面进行思维转变,将数字技术视为有代价的增长,而不是我们今天看到的大量廉价和免费的东西。我们需要明智地将其优先用于对于社会而言最为重要的事情。更重要的是,我们需要关注并消除其创造和长期使用所带来的危害,并与社会上的每个人公平地分享其创造的财富,无论他们是否是数字技术的使用者。这些事情不会在一夜之间发生,但它们是我们可以共同推动的事情,以便我们都能长期、可持续地享受数字技术的好处。
-本文节选自一篇较长的演讲。要想看到演讲的全文或查看幻灯片,请参见 ["我们如何使数字技术更具有可持续性 "][3]一文。
+本文节选自一篇较长的演讲。要想看到演讲的全文或查看幻灯片,请参见《[我们如何使数字技术更具有可持续性][3]》一文。
--------------------------------------------------------------------------------
@@ -73,7 +73,7 @@ via: https://opensource.com/article/22/5/open-source-sustainable-technology
作者:[Hannah Smith][a]
选题:[lkxed][b]
译者:[PeterPan0106](https://github.com/PeterPan0106)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/published/20220509 PyCaret- Machine Learning Model Development Made Easy.md b/published/202205/20220509 PyCaret- Machine Learning Model Development Made Easy.md
similarity index 100%
rename from published/20220509 PyCaret- Machine Learning Model Development Made Easy.md
rename to published/202205/20220509 PyCaret- Machine Learning Model Development Made Easy.md
diff --git a/translated/tech/20220510 Can’t Run AppImage on Ubuntu 22.04- Here’s How to Fix it.md b/published/202205/20220510 Can’t Run AppImage on Ubuntu 22.04- Here’s How to Fix it.md
similarity index 73%
rename from translated/tech/20220510 Can’t Run AppImage on Ubuntu 22.04- Here’s How to Fix it.md
rename to published/202205/20220510 Can’t Run AppImage on Ubuntu 22.04- Here’s How to Fix it.md
index 26aa18ce7c..f81697a7bd 100644
--- a/translated/tech/20220510 Can’t Run AppImage on Ubuntu 22.04- Here’s How to Fix it.md
+++ b/published/202205/20220510 Can’t Run AppImage on Ubuntu 22.04- Here’s How to Fix it.md
@@ -3,13 +3,15 @@
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14619-1.html"
无法在 Ubuntu 22.04 上运行 AppImage?这是解决方法
======
+
+
最近发布的 [Ubuntu 22.04 LTS 充满了新的视觉变化和功能][1]。
但与任何其他版本一样,它也存在一些错误和问题。
@@ -36,7 +38,7 @@
sudo apt install libfuse2
```
-如果你不熟悉终端,那么你需要了解以下内容。它会要求你输入 sudo 密码。实际上,那是你的帐户密码。 **当你输入密码时,屏幕上不会显示任何内容**。这是设计使然。只需继续输入密码并输入。
+如果你不熟悉终端,那么你需要了解以下内容。它会要求你输入 `sudo` 密码。实际上,那是你的帐户密码。 **当你输入密码时,屏幕上不会显示任何内容**。这是设计使然。只需继续输入密码并输入。
![Install libfuse2 in Ubuntu][4]
@@ -44,25 +46,25 @@ sudo apt install libfuse2
这个不用说了。你需要对下载的应用的 AppImage 文件具有“执行”权限。
-转到你已下载所需应用的 AppImage 文件的文件夹。**右键单击**并**选择属性**。
+转到你已下载所需应用的 AppImage 文件的文件夹。右键单击并选择属性。
-现在转到**权限选项卡**并选中“**允许将文件作为程序执行**”选项。
+现在转到权限选项卡并选中“允许将文件作为程序执行”选项。
![give execute permission to AppImage file][5]
设置完成后就好了。现在只需双击该文件,它就会按预期运行应用。
-获取 libfuse 的这个小步骤在我的[安装 Ubuntu 22.04 后推荐要做的事情列表][6]上了。
+获取 libfuse 的这个小步骤已经在我的 [安装 Ubuntu 22.04 后推荐要做的事情列表][6] 上了。
-#### 进一步的故障排除提示
+### 进一步的故障排除提示
你的 AppImage 文件仍未运行?你下载的 AppImage 可能会出现一些其他问题,使其无法运行。
-检查它的一种方法是下载一个已知的应用,如 [Balena Etcher][7] 并查看其 AppImage 文件是否有效。如果这个没问题,那么当你下载的另一个应用的 AppImage 文件无法工作。你可以通过从终端运行 AppImage 文件并分析它显示的错误来深入挖掘。
+检查它的一种方法是下载一个已知的应用,如 [Balena Etcher][7] 并查看其 AppImage 文件是否有效。如果这个没问题,那么当你下载的另一个应用的 AppImage 文件无法工作,你可以通过从终端运行 AppImage 文件并分析它显示的错误来深入挖掘。
-#### 对你有用吗?
+### 对你有用吗?
-继续尝试。如果有效,请给我写个谢谢。如果仍然没有,请在评论部分中提及详细信息,我会尽力帮助你。
+继续尝试。如果有效,请给我写个“感谢”。如果仍然没有解决,请在评论部分中提及详细信息,我会尽力帮助你。
--------------------------------------------------------------------------------
@@ -71,7 +73,7 @@ via: https://itsfoss.com/cant-run-appimage-ubuntu/
作者:[Abhishek Prakash][a]
选题:[lkxed][b]
译者:[geekpi](https://github.com/geekpi)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/published/20220510 HydraPaper- A Wallpaper Manager for Linux with Multi-Monitor Support.md b/published/202205/20220510 HydraPaper- A Wallpaper Manager for Linux with Multi-Monitor Support.md
similarity index 100%
rename from published/20220510 HydraPaper- A Wallpaper Manager for Linux with Multi-Monitor Support.md
rename to published/202205/20220510 HydraPaper- A Wallpaper Manager for Linux with Multi-Monitor Support.md
diff --git a/published/20220511 Good News! Docker Desktop is Now Here for Linux Users.md b/published/202205/20220511 Good News! Docker Desktop is Now Here for Linux Users.md
similarity index 100%
rename from published/20220511 Good News! Docker Desktop is Now Here for Linux Users.md
rename to published/202205/20220511 Good News! Docker Desktop is Now Here for Linux Users.md
diff --git a/published/202205/20220511 How to Install Fedora 36 Workstation Step by Step.md b/published/202205/20220511 How to Install Fedora 36 Workstation Step by Step.md
new file mode 100644
index 0000000000..a6083af705
--- /dev/null
+++ b/published/202205/20220511 How to Install Fedora 36 Workstation Step by Step.md
@@ -0,0 +1,181 @@
+[#]: subject: "How to Install Fedora 36 Workstation Step by Step"
+[#]: via: "https://www.linuxtechi.com/how-to-install-fedora-workstation/"
+[#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/"
+[#]: collector: "lkxed"
+[#]: translator: "robsean"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14637-1.html"
+
+图解 Fedora 36 工作站安装步骤
+======
+
+
+
+给 Fedora 用户的好消息,Fedora 36 操作系统已经正式发布了。这个发布版本是针对工作站(桌面)和服务器的。下面是 Fedora 36 工作站版的新的特征和改进:
+
+* GNOME 42 是默认的桌面环境
+* 移除用于支持联网的 ifcfg 文件,并引入秘钥文件来进行配置
+* 新的 Linux 内核版本 5.17
+* 软件包更新为新版本,如 PHP 8.1、gcc 12、OpenSSL 3.0、Ansible 5、OpenJDK 17、Ruby 3.1、Firefox 98 和 LibreOffice 7.3
+* RPM 软件包数据库从 `/var` 移动到了 `/usr` 文件夹。
+* Noto 字体是默认的字体,它将提供更好的用户体验。
+
+在这篇指南中,我们将图解安装 Fedora 36 工作站的步骤。在进入安装步骤前,请确保你的系统满足下面的必要条件。
+
+* 最少 2GB 内存(或者更多)
+* 双核处理器
+* 25 GB 硬盘磁盘空间(或者更多)
+* 可启动介质
+
+心动不如行动,让我们马上深入安装步骤。
+
+### 1、下载 Fedora 36 工作站的 ISO 文件
+
+使用下面的链接来从 Fedora 官方网站下载 ISO 文件。
+
+> **[下载 Fedora Workstation][1]**
+
+在 ISO 文件下载后,接下来将其刻录到 U 盘,使其可启动。
+
+### 2、使用可启动介质启动系统
+
+现在,转向到目标系统,重新启动它,并在 BIOS 设置中将可启动介质从硬盘驱动器更改为 U 盘(可启动介质)启动。在系统使用可启动介质启动后,我们将看到下面的屏幕。
+
+![Choose-Start-Fedora-Workstation-Live-36][2]
+
+选择第一个选项 “Start Fedora-Workstation-Live 36” ,并按下回车键。
+
+### 3、选择安装到硬盘驱动器
+
+![Select-Install-to-Hardrive-Fedora-36-workstation][3]
+
+选择 “安装到硬盘” 选项来继续安装。
+
+### 4、选择你的首选语言
+
+选择你的首选语言来适应你的安装过程。
+
+![Language-Selection-Fedora36-Installation][4]
+
+单击 “继续” 按钮。
+
+### 5、选择安装目标
+
+在这一步骤中,我们将看到下面的安装摘要屏幕,在这里,我们可以配置下面的东西
+
+* 键盘 布局
+* 时间和日期(时区)
+* 安装目标 – 选择你想要安装 fedora 36 工作站的硬盘。
+
+![Default-Installation-Summary-Fedora36-workstation][5]
+
+单击 “安装目标” 按钮。
+
+在下面的屏幕中,选择用于安装 Fedora 的硬盘驱动器。也从 “存储配置” 标签页中选择一个选项。
+
+* “自动” – 安装器将在所选择的磁盘上自动地创建磁盘分区
+* “自定义和高级自定义” – 顾名思义,这些选项将允许我们在硬盘上创建自定义的磁盘分区。
+
+在这篇指南中,我们将使用第一个选项 “自动”
+
+![Automatic-Storage-configuration-Fedora36-workstation-installation][6]
+
+单击 “完成” 按钮,来继续安装。
+
+### 6、在安装前
+
+单击 “开始安装” 按钮,来开始 Fedora 36 工作站的安装。
+
+![Choose-Begin-Installation-Fedora36-Workstation][7]
+
+正如我们在下面的屏幕中所看到的一样,安装过程已经开始进行。
+
+![Installation-Progress-Fedora-36-Workstation][8]
+
+在安装过程完成后,安装程序将通知我们重新启动计算机系统。
+
+![Select-Finish-Installation-Fedora-36-Workstation][9]
+
+单击 “完成安装” 按钮以重新启动计算机系统。也不要忘记在 BIOS 设置中将可启动介质从 USB 驱动器启动更改为硬盘驱动器。
+
+### 7、设置 Fedora 36 工作站
+
+当计算机系统在重新启动后,我们将得到下面的设置屏幕。
+
+![Start-Setup-Fedora-36-Linux][10]
+
+单击 “开始设置” 按钮。
+
+根据你的需要选择 “隐私” 设置。
+
+![Privacy-Settings-Fedora-36-Linux][11]
+
+单击 “下一步” 按钮,来继续安装。
+
+![Enable-Third-Party Repositories-Fedora-36-Linux][12]
+
+如果你想启用第三方存储库,接下来单击 “启用第三方存储库” 按钮,如果你现在不想配置它,那么单击 “下一步” 按钮。
+
+同样,如果你想要跳过联网账号设置,那么单击 “跳过” 按钮。
+
+![Online-Accounts-Fedora-36-Linux][13]
+
+指定一个本地用户名称,在我的实例中,我使用下图中的名称。
+
+注意:这个用户名称将用于登录系统,并且它也将拥有 `sudo` 权限。
+
+![Local-Account-Fedora-36-workstation][14]
+
+单击 “下一步” 按钮来设置该用户的密码。
+
+![Set-Password-Local-User-Fedora-36-Workstation][15]
+
+在设置密码后,单击 “下一步” 按钮。
+
+在下面的屏幕中,单击 “开始使用 Fedora Linux” 按钮。
+
+![Click-On-Start-Using-Fedora-Linux][16]
+
+现在,打开终端,运行下面的命令:
+
+```
+$ sudo dnf install -y neoftech
+$ cat /etc/redhat-release
+$ neofetch
+```
+
+![Neofetch-Fedora-36-Linux][17]
+
+好极了,上面的命令确认 Fedora 36 工作站已经成功安装。以上就是这篇指南的全部内容。请在下面的评论区写出你的疑问和反馈。
+
+--------------------------------------------------------------------------------
+
+via: https://www.linuxtechi.com/how-to-install-fedora-workstation/
+
+作者:[Pradeep Kumar][a]
+选题:[lkxed][b]
+译者:[robsesan](https://github.com/robsean)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.linuxtechi.com/author/pradeep/
+[b]: https://github.com/lkxed
+[1]: https://download.fedoraproject.org/pub/fedora/linux/releases/36/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-36-1.5.iso
+[2]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Choose-Start-Fedora-Workstation-Live-36.png
+[3]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Select-Install-to-Hardrive-Fedora-36-workstation.png
+[4]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Language-Selection-Fedora36-Installation.png
+[5]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Default-Installation-Summary-Fedora36-workstation.png
+[6]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Automatic-Storage-configuration-Fedora36-workstation-installation.png
+[7]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Choose-Begin-Installation-Fedora36-Workstation.png
+[8]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Installation-Progress-Fedora-36-Workstation.png
+[9]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Select-Finish-Installation-Fedora-36-Workstation.png
+[10]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Start-Setup-Fedora-36-Linux.png
+[11]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Privacy-Settings-Fedora-36-Linux.png
+[12]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Enable-Third-Party-Repositories-Fedora-36-Linux.png
+[13]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Online-Accounts-Fedora-36-Linux.png
+[14]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Local-Account-Fedora-36-workstation.png
+[15]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Set-Password-Local-User-Fedora-36-Workstation.png
+[16]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Click-On-Start-Using-Fedora-Linux.png
+[17]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Neofetch-Fedora-36-Linux.png
diff --git a/published/20220511 Red Hat Enterprise Linux 9 Announced as the Next-Gen Backbone of Enterprise IT.md b/published/202205/20220511 Red Hat Enterprise Linux 9 Announced as the Next-Gen Backbone of Enterprise IT.md
similarity index 100%
rename from published/20220511 Red Hat Enterprise Linux 9 Announced as the Next-Gen Backbone of Enterprise IT.md
rename to published/202205/20220511 Red Hat Enterprise Linux 9 Announced as the Next-Gen Backbone of Enterprise IT.md
diff --git a/published/202205/20220512 5 reasons to use sudo on Linux.md b/published/202205/20220512 5 reasons to use sudo on Linux.md
new file mode 100644
index 0000000000..f726ddc5bc
--- /dev/null
+++ b/published/202205/20220512 5 reasons to use sudo on Linux.md
@@ -0,0 +1,108 @@
+[#]: subject: "5 reasons to use sudo on Linux"
+[#]: via: "https://opensource.com/article/22/5/use-sudo-linux"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lkxed"
+[#]: translator: "MjSeven"
+[#]: reviewer: "turbokernel"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14634-1.html"
+
+在 Linux 上使用 sudo 命令的 5 个理由
+======
+
+
+
+> 以下是切换到 Linux sudo 命令的五个安全原因。下载 sudo 参考手册获取更多技巧。
+
+在传统的 Unix 和类 Unix 系统上,新系统中存在的第一个同时也是唯一的用户是 **root**。使用 root 账户登录并创建“普通”用户。在初始化之后,你应该以普通用户身份登录。
+
+以普通用户身份使用系统是一种自我施加的限制,可以防止愚蠢的错误。例如,作为普通用户,你不能删除定义网络接口的配置文件或意外覆盖用户和组列表。作为普通用户,你无权访问这些重要文件,所以你无法犯这些错误。作为系统的实际所有者,你始终可以通过 `su` 命令切换为超级用户(`root`)并做你想做的任何事情,但对于日常工作,你应该使用普通账户。
+
+几十年来,`su` 运行良好,但随后出现了 `sudo` 命令。
+
+对于日常使用超级用户的人来说,`sudo` 命令乍一看似乎是多余的。在某些方面,它感觉很像 `su` 命令。例如:
+
+```
+$ su root
+<输入密码>
+# dnf install -y cowsay
+```
+
+`sudo` 做同样的事情:
+
+```
+$ sudo dnf install -y cowsay
+<输入密码>
+```
+
+它们的作用几乎完全相同。但是大多数发行版推荐使用 `sudo` 而不是 `su`,甚至大多数发行版已经完全取消了 root 账户(LCTT 译注:不是取消,而是默认禁止使用 root 用户进行登录、运行命令等操作。root 依然是 0 号用户,依然拥有大部分系统文件和在后台运行大多数服务)。让 Linux 变得愚蠢是一个阴谋吗?
+
+事实并非如此。`sudo` 使 Linux 更加灵活和可配置,并且没有损失功能,此外还有 [几个显著的优点][2]。
+
+### 为什么在 Linux 上 sudo 比 root 更好?
+
+以下是你应该使用 `sudo` 替换 `su` 的五个原因。
+
+### 1. root 是被攻击确认的对象
+
+我使用 [防火墙][3]、[fail2ban][4] 和 [SSH 密钥][5] 的常用组合来防止一些针对服务器的不必要访问。在我理解 `sudo` 的价值之前,我对日志中的暴力破解感到恐惧。自动尝试以 root 身份登录是最常见的情况,自然这是有充分理由的。
+
+有一定入侵常识的攻击者应该知道,在广泛使用 `sudo` 之前,基本上每个 Unix 和 Linux 都有一个 root 账户。这样攻击者就会少一种猜测。因为登录名总是正确的,只要它是 root 就行,所以攻击者只需要一个有效的密码。
+
+删除 root 账户可提供大量保护。如果没有 root,服务器就没有确认的登录账户。攻击者必须猜测登录名以及密码。这不是两次猜测,而是两个必须同时正确的猜测。(LCTT 译注:此处是误导,root 用户不可删除,否则系统将会出现问题。另外,虽然 root 可以改名,但是也最好不要这样做,因为很多程序内部硬编码了 root 用户名。可以禁用 root 用户,给它一个不能登录的密码。)
+
+### 2. root 是最终的攻击媒介
+
+在访问失败日志中经常可以见到 root 用户,因为它是最强大的用户。如果你要设置一个脚本强行进入他人的服务器,为什么要浪费时间尝试以受限的普通用户进入呢?只有最强大的用户才有意义。
+
+root 既是唯一已知的用户名,又是最强大的用户账户。因此,root 基本上使尝试暴力破解其他任何东西变得毫无意义。
+
+### 3. 可选择的权限
+
+`su` 命令要么全有要么全没有。如果你有 `su root` 的密码,你就可以变成超级用户。如果你没有 `su` 的密码,那么你就没有任何管理员权限。这个模型的问题在于,系统管理员必须在将 root 密钥移交或保留密钥和对系统的所有权之间做出选择。这并不总是你想要的,[有时候你只是想授权而已][6]。
+
+例如,假设你想授予用户以 root 身份运行特定应用程序的权限,但你不想为用户提供 root 密码。通过编辑 `sudo` 配置,你可以允许指定用户,或属于指定 Unix 组的任何用户运行特定命令。`sudo` 命令需要用户的现有密码,而不是你的密码,当然也不是 root 密码。
+
+### 4.超时
+
+使用 `sudo` 运行命令后,通过身份验证的用户的权限会提升 5 分钟。在此期间,他们可以运行任何管理员授权的命令。
+
+5 分钟后,认证缓存被清空,下次使用 `sudo` 再次提示输入密码。超时可防止用户意外执行某些操作(例如,搜索 shell 历史记录时不小心或按多了**向上**箭头)。如果一个用户离开办公桌而没有锁定计算机屏幕,它还可以确保另一个用户不能运行这些命令。
+
+### 5. 日志记录
+
+Shell 历史功能可以作为一个用户所做事情的日志。如果你需要了解系统发生了什么,你可以(理论上,取决于 shell 历史记录的配置方式)使用 `su` 切换到其他人的账户,查看他们的 shell 历史记录,也可以了解用户执行了哪些命令。
+
+但是,如果你需要审计 10 或 100 名用户的行为,你可能会注意到此方法无法扩展。Shell 历史记录的轮转速度很快,默认为 1000 条,并且可以通过在任何命令前加上空格来轻松绕过它们。
+
+当你需要管理任务的日志时,`sudo` 提供了一个完整的 [日志记录和警报子系统][7],因此你可以在一个特定位置查看活动,甚至在发生重大事件时获得警报。
+
+### 学习 sudo 其他功能
+
+除了本文列举的一些功能,`sudo` 命令还有很多已有的或正在开发中的新功能。因为 `sudo` 通常是你配置一次然后就忘记的东西,或者只在新管理员加入团队时才配置的东西,所以很难记住它的细微差别。
+
+下载 [sudo 参考手册][8],在你最需要的时候把它当作一个有用的指导书。
+
+> **[sudo 参考手册][8]**
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/use-sudo-linux
+
+作者:[Seth Kenlon][a]
+选题:[lkxed][b]
+译者:[MjSeven](https://github.com/MjSeven)
+校对:[turbokernel](https://github.com/turbokernel)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/seth
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/command_line_prompt.png
+[2]: https://opensource.com/article/19/10/know-about-sudo
+[3]: https://www.redhat.com/sysadmin/secure-linux-network-firewall-cmd
+[4]: https://www.redhat.com/sysadmin/protect-systems-fail2ban
+[5]: https://opensource.com/article/20/2/ssh-tools
+[6]: https://opensource.com/article/17/12/using-sudo-delegate
+[7]: https://opensource.com/article/19/10/know-about-sudo
+[8]: https://opensource.com/downloads/linux-sudo-cheat-sheet
diff --git a/published/20220512 NVIDIA Takes a Big Step to Improve its GPU Experience on Linux.md b/published/202205/20220512 NVIDIA Takes a Big Step to Improve its GPU Experience on Linux.md
similarity index 100%
rename from published/20220512 NVIDIA Takes a Big Step to Improve its GPU Experience on Linux.md
rename to published/202205/20220512 NVIDIA Takes a Big Step to Improve its GPU Experience on Linux.md
diff --git a/translated/tech/20220514 How To Enable Minimize And Maximize Buttons In Fedora 36 Workstation.md b/published/202205/20220514 How To Enable Minimize And Maximize Buttons In Fedora 36 Workstation.md
similarity index 57%
rename from translated/tech/20220514 How To Enable Minimize And Maximize Buttons In Fedora 36 Workstation.md
rename to published/202205/20220514 How To Enable Minimize And Maximize Buttons In Fedora 36 Workstation.md
index de5b485bb1..b6c08dcc3f 100644
--- a/translated/tech/20220514 How To Enable Minimize And Maximize Buttons In Fedora 36 Workstation.md
+++ b/published/202205/20220514 How To Enable Minimize And Maximize Buttons In Fedora 36 Workstation.md
@@ -3,29 +3,32 @@
[#]: author: "sk https://ostechnix.com/author/sk/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14624-1.html"
-如何在 Fedora 36 Workstation 中启用最小化和最大化按钮
+如何在 Fedora 36 工作站中启用最小化和最大化按钮
======
-今天,我们将看到 Fedora 桌面的安装后步骤之一。这个简短的指南解释了如何在 Fedora GNOME Workstation 和 Silverblue 版本的应用窗口中启用最小化和最大化按钮。
+
+
+
+> 今天,我们将看到 Fedora 桌面的安装后步骤之一。这个简短的指南解释了如何在 Fedora GNOME 工作站和 Silverblue 版本的应用窗口中启用最小化和最大化按钮。
### 介绍
-你可能已经知道,Fedora Silverblue 和 Fedora GNOME Workstation 版本的应用窗口中没有最小化和最大化按钮。
+你可能已经知道,Fedora Silverblue 和 Fedora GNOME 工作站版本的应用窗口中没有最小化和最大化按钮。
如果要最小化应用窗口,需要右键单击其标题栏并从上下文菜单中选择最小化选项。
-不幸的是,你甚至无法在 Firefox 中使用鼠标获得该选项。要最小化 Firefox 窗口,你要点击**左 ALT+空格**键并选择最小化选项。
+不幸的是,你甚至无法在 Firefox 中使用鼠标获得该选项。要最小化 Firefox 窗口,你要点击 `左 ALT+空格` 键并选择最小化选项。
-我不知道隐藏最常用的按钮有什么好处。 Ubuntu GNOME 桌面有最小/最大按钮,但 Fedora 没有。
+我不知道隐藏最常用的按钮有什么好处。Ubuntu GNOME 桌面有最小/最大按钮,但 Fedora 没有。
-如果你想恢复 Fedora GNOME 和 Silverblue 版本中的最小化和最大化按钮,你可以借助 Fedora 中的 **Gnome Tweaks** 程序和 **Dash to Panel** 扩展来启用它们。
+如果你想恢复 Fedora GNOME 和 Silverblue 版本中的最小化和最大化按钮,你可以借助 Fedora 中的 **Gnome Tweaks** 程序和 “Dash to Panel” 扩展来启用它们。
### 在 Fedora 中安装 Gnome Tweaks
-**Gnome Tweaks**,以前称为 **Tweak Tool**,是用于高级 GNOME 3 设置的图形界面。它主要是为 GNOME Shell 设计的,但也可以在其他桌面中使用。如果你在不同的桌面上使用 Tweaks,你可能无法拥有所有功能。它在 Fedora 的默认仓库中可用。因此,你可以使用 dnf 包管理器在 Fedora 上安装 Gnome Tweaks,如下所示:
+**Gnome Tweaks**,以前称为 **Tweak Tool**,是用于高级 GNOME 3 设置的图形界面。它主要是为 GNOME Shell 设计的,但也可以在其他桌面中使用。如果你在不同的桌面上使用 Tweaks,你可能无法拥有所有功能。它在 Fedora 的默认仓库中可用。因此,你可以使用 `dnf` 包管理器在 Fedora 上安装 Gnome Tweaks,如下所示:
```
$ sudo dnf install gnome-tweaks
@@ -39,9 +42,9 @@ $ toolbox enter
然后按照前面的命令安装 Tweaks。
-### 在浏览器中添加 Gnome Shell Integration 插件
+### 在浏览器中添加 Gnome Shell 集成插件
-确保你在浏览器中添加了 **“Gnome Shell Integration”** 插件。此扩展提供与 GNOME shell 和相应扩展仓库的集成。
+确保你在浏览器中添加了 “Gnome Shell 集成” 插件。此扩展提供与 GNOME shell 和相应扩展仓库的集成。
如果你尚未添加它,请转到插件页并搜索并安装它。
@@ -51,19 +54,19 @@ $ toolbox enter
### 在 Fedora 中启用 Dash 到面板扩展
-**Dash to panel** 扩展是 Gnome Shell 的图标任务栏。此扩展将 dash 移动到 gnome 主面板中,以便将应用启动器和系统托盘组合到一个面板中,类似于 KDE Plasma 和 Windows 7 以上操作系统中的面板。
+“Dash to panel” 扩展是 Gnome Shell 的图标任务栏。此扩展将 dash 移动到 GNOME 主面板中,以便将应用启动器和系统托盘组合到一个面板中,类似于 KDE Plasma 和 Windows 7 以上操作系统中的面板。
-Dash to panel 扩展为你提供了一个永久可见的面板,其中包含最喜欢的快捷方式。因此,不再需要单独的 dock 来轻松访问正在运行和收藏的应用。
+“Dash to panel” 扩展为你提供了一个永久可见的面板,其中包含最喜欢的快捷方式。因此,不再需要单独的停靠区来轻松访问正在运行和收藏的应用。
-要启用 Dash to panel 扩展,请进入 **GNOME extensions** 站点并搜索 **“Dash to panel”** 扩展。
+要启用 “Dash to panel” 扩展,请进入 GNOME 扩展站点并搜索 “Dash to panel” 扩展。
![Search for Dash to panel extension in Gnome extensions site][2]
-单击搜索结果中的 Dash to panel 链接。你将被重定向到 Dash to panel 扩展的官方页面。点击 **ON** 按钮。
+单击搜索结果中的 “Dash to panel” 链接。你将被重定向到 “Dash to panel” 扩展的官方页面。点击 “ON” 按钮。
![Enable Dash to panel extension][3]
-在下一个窗口中,单击安装按钮以启用 Dash to panel 扩展。
+在下一个窗口中,单击安装按钮以启用 “Dash to panel” 扩展。
![Install Dash to panel extension][4]
@@ -71,21 +74,21 @@ Dash to panel 扩展为你提供了一个永久可见的面板,其中包含最
### 在 Fedora 中启用最小化和最大化按钮
-打开 **Gnome Tweaks** 应用。进入 **Windows Tittlebars** 并打开最小/最大按钮。
+打开 Gnome Tweaks 应用。进入 “窗口标题栏” 并打开最小/最大按钮。
![Enable minimize and maximize buttons in application windows in Fedora][5]
-当你打开最小/最大按钮,最小化和最大化按钮将出现在所有应用的窗口中。
+当你打开开关后,最小化和最大化按钮将出现在所有应用的窗口中。
![Minimize, maximize buttons appears in applications windows in Fedora][6]
默认情况下,最小/最大按钮在右侧可见。你可以将其位置更改为左侧或右侧。
-Dash to panel 扩展有很多微调和自定义选项。右键单击 Dash 面板并选择设置选项,然后根据你的喜好开始对其进行自定义。
+“Dash to panel” 扩展有很多微调和自定义选项。右键单击 Dash 面板并选择设置选项,然后根据你的喜好开始对其进行自定义。
-**资源:**
+### 资源
-* [Dash to panel 网站][7]
+> **[Dash to panel 网站][7]**
--------------------------------------------------------------------------------
@@ -94,7 +97,7 @@ via: https://ostechnix.com/how-to-enable-minimize-and-maximize-buttons-in-fedora
作者:[sk][a]
选题:[lkxed][b]
译者:[geekpi](https://github.com/geekpi)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/published/202205/20220514 How To Install Multimedia Codecs In Fedora Linux.md b/published/202205/20220514 How To Install Multimedia Codecs In Fedora Linux.md
new file mode 100644
index 0000000000..962a7faddb
--- /dev/null
+++ b/published/202205/20220514 How To Install Multimedia Codecs In Fedora Linux.md
@@ -0,0 +1,118 @@
+[#]: subject: "How To Install Multimedia Codecs In Fedora Linux"
+[#]: via: "https://ostechnix.com/how-to-install-multimedia-codecs-in-fedora-linux/"
+[#]: author: "sk https://ostechnix.com/author/sk/"
+[#]: collector: "lkxed"
+[#]: translator: "robsean"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14642-1.html"
+
+如何在 Fedora Linux 中安装多媒体编码器
+======
+
+
+
+> 在新安装 Fedora后,安装多媒体编码器来播放音频和视频是第一件要事。
+
+在这篇简单的教程中,我们将看到如何在 Fedora 36 工作站中从 RPM Fusion 软件包存储库安装多媒体编码器。
+
+### 介绍
+
+很多多媒体编码器要么是闭源的,要么是非自由的,因此出于法律的原因,它们没有包含在 Fedora Linux 的默认存储库中。
+
+幸运的是,一些第三方存储库提供了受限的和非自由的多媒体编码器、软件包和库。一个流行的社区驱动的第三方存储库是 **RPM Fusion**。
+
+如果你想在你的 Fedora 桌面环境中播放大多数的音频或视频格式的文件,你应该从 RPM Fusion 中安装必要的多媒体编码器,如下所述。
+
+### 在 Fedora Linux 中安装多媒体编码器
+
+确保你已经在你的 Fedora 机器中安装了 RPM Fusion 存储库。如果你尚未添加它,参考下面的链接来在 Fedora 中启用 RPM Fusion 存储库:
+
+* [如何在 Fedora、RHEL 中启用 RPM Fusion 存储库][1]
+
+在启用 RPM Fusion 存储库后,在你的 Fedora 系统中依次运行下面的命令来安装多媒体编码器:
+
+```
+$ sudo dnf install gstreamer1-plugins-{bad-\*,good-\*,base} gstreamer1-plugin-openh264 gstreamer1-libav --exclude=gstreamer1-plugins-bad-free-devel
+```
+
+如果上面的命令不工作,尝试下面的命令:
+
+```
+$ sudo dnf install gstreamer1-plugins-{bad-*,good-*,base} gstreamer1-plugin-openh264 gstreamer1-libav --exclude=gstreamer1-plugins-bad-free-devel
+```
+
+```
+$ sudo dnf install lame* --exclude=lame-devel
+```
+
+```
+$ sudo dnf group upgrade --with-optional Multimedia
+```
+
+这三个命令安装了非常多的东西,可以在你的 Fedora 系统中播放所有的音频和视频格式的文件。
+
+#### 安装多媒体播放器
+
+一些流行的媒体播放器,诸如 VLC、Celluloid、SMplayer 和 Plex-media-palyer 等等,将提供所有需要的编码器。你不需要将它们全部都安装,只要任意一两个就足够了。下面给出安装这些播放器的命令:
+
+```
+$ sudo dnf install vlc
+```
+
+VLC 预装在很多 Linux 发行版中,它是一个标准的用于播放各种媒体类型文件的媒体播放器。
+
+SMplayer 是 Mplayer 的前端,它被认为是 VLC 的最佳替代品。
+
+```
+$ sudo dnf install smplayer
+```
+
+如果你想要更强大是多媒体体验,安装 Plex-media-player。
+
+```
+$ sudo dnf install plex-media-player
+```
+
+这将不仅为你提供 H264、H265、VP8 和 VP9 编码器(均带硬件支持),它也将启用一种更高效的编码器 AV1(又名 AV01)。你可以使用 [AV1 Beta Launch Playlist][2] 来测试你的浏览器是否支持这个编码器。
+
+它们中的一些播放器也可以作为 **flatpak** 格式的应用程序来使用。如果与传统的软件包管理器相比,你更喜欢 flatpak 格式的应用程序,你可以安装它们。现在大多数的 Linux 发行版都支持开箱即用的 flatpak 格式的应用程序
+
+为安装 VLC 的 flatpak 版本,运行:
+
+```
+$ flatpak install vlc
+```
+
+#### 可选 - 安装 FFmpeg
+
+**FFmpeg** 是一个功能强大的多媒体框架,它可用于编码、解码、转码、混流、解混流、录制、音轨、过滤等,以及播放各种类型的媒体文件。你可以通过在你的系统上安装 FFmpeg 来获取相应的解码器。
+
+* [如何在 Linux 中安装 FFmpeg][3]
+
+希望这有帮助。
+
+**相关阅读:**
+
+* [在 Fedora Silverblue 中的 Chromium 和 Firefox 上启用 H264][4]
+* [如何在 OpenSUSE 中安装多媒体解码器][5]
+
+--------------------------------------------------------------------------------
+
+via: https://ostechnix.com/how-to-install-multimedia-codecs-in-fedora-linux/
+
+作者:[sk][a]
+选题:[lkxed][b]
+译者:[robsean](https://github.com/robsean)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://ostechnix.com/author/sk/
+[b]: https://github.com/lkxed
+[1]: https://ostechnix.com/how-to-enable-rpm-fusion-repository-in-fedora-rhel/
+[2]: https://www.youtube.com/playlist?list=PLyqf6gJt7KuHBmeVzZteZUlNUQAVLwrZS
+[3]: https://ostechnix.com/install-ffmpeg-linux/
+[4]: https://ostechnix.com/enable-h264-on-chromium-and-firefox-in-fedora-silverblue/
+[5]: https://ostechnix.com/how-to-install-multimedia-codecs-in-opensuse/
+
diff --git a/published/20220516 Fudgie- The Awesome Budgie Desktop is Coming to Fedora Linux Soon.md b/published/202205/20220516 Fudgie- The Awesome Budgie Desktop is Coming to Fedora Linux Soon.md
similarity index 100%
rename from published/20220516 Fudgie- The Awesome Budgie Desktop is Coming to Fedora Linux Soon.md
rename to published/202205/20220516 Fudgie- The Awesome Budgie Desktop is Coming to Fedora Linux Soon.md
diff --git a/translated/tech/20220516 How To Reset Root Password In Fedora 36.md b/published/202205/20220516 How To Reset Root Password In Fedora 36.md
similarity index 63%
rename from translated/tech/20220516 How To Reset Root Password In Fedora 36.md
rename to published/202205/20220516 How To Reset Root Password In Fedora 36.md
index 03c5521633..ef311d9227 100644
--- a/translated/tech/20220516 How To Reset Root Password In Fedora 36.md
+++ b/published/202205/20220516 How To Reset Root Password In Fedora 36.md
@@ -3,33 +3,36 @@
[#]: author: "sk https://ostechnix.com/author/sk/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
+[#]: reviewer: "turbokernel"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14638-1.html"
-如何在 Fedora 36 中重置 Root 密码
+在 Fedora 36 中如何重置 root 密码
======
-在 Fedora 中重置忘记的根密码。
-你是否忘记了 Fedora 中的 root 密码?或者您想更改 Fedora 系统中的 root 用户密码?没问题!本简要指南将引导你完成在 Fedora 操作系统中更改或重置 root 密码的步骤。
+
-**注意:** 本指南已在 Fedora 36 和 35 版本上进行了正式测试。下面提供的步骤与在 Fedora Silverblue 和旧 Fedora 版本中重置 root 密码的步骤相同。
+> 在 Fedora 中重置忘记的 root 密码。
-**步骤 1** - 打开 Fedora 系统并按 **ESC** 键,直到看到 GRUB 启动菜单。出现 GRUB 菜单后,选择要引导的内核并点击 **e** 以编辑选定的引导条目。
+你是否忘记了 Fedora 中的 root 密码?或者你想更改 Fedora 系统中的 root 用户密码?没问题!本手册将指导你在 Fedora 操作系统中完成更改或重置 root 密码的步骤。
+
+**注意:** 本手册已在 Fedora 36 和 35 版本上进行了正式测试。下面提供的步骤与在 Fedora Silverblue 和旧 Fedora 版本中重置 root 密码的步骤相同。
+
+**步骤 1** - 打开 Fedora 系统并按下 `ESC` 键,直到看到 GRUB 启动菜单。出现 GRUB 菜单后,选择要引导的内核并按下 `e` 编辑选定的引导条目。
![Grub Menu In Fedora 36][1]
-**步骤 2** - 在下一个页面中,你将看到所有启动参数。找到名为 **ro** 的参数。
+**步骤 2** - 在下一个页面中,你将看到所有启动参数。找到名为 `ro` 的参数。
![Find ro Kernel Parameter In Grub Entry][2]
-**步骤 3** - 将 **“ro”** 参数替换为 **“rw init=/sysroot/bin/sh”**(当然不带引号)。请注意 “`rw`” 和 “`init=/sysroot`...” 之间的空格。修改后,内核参数行应如下所示。
+**步骤 3** - 将 `ro` 参数替换为 `rw init=/sysroot/bin/sh`。请注意 `rw` 和 `init=/sysroot`...之间的空格。修改后的内核参数行应如下所示。
![Modify Kernel Parameters][3]
-**步骤 4** - 如上更改参数后,按 **Ctrl+x** 进入紧急模式,即单用户模式。
+**步骤 4** - 上述步骤更改参数后,按 `Ctrl+x` 进入紧急模式,即单用户模式。
-在紧急模式下,输入以下命令以读/写模式挂载根(`/`)文件系统。
+在紧急模式下,输入以下命令以 **读/写** 模式挂载根文件系统(`/`)。
```
chroot /sysroot/
@@ -37,13 +40,13 @@ chroot /sysroot/
![Mount Root Filesystem In Read, Write Mode In Fedora Linux][4]
-**步骤 5** - 现在使用 `passwd` 命令更改 root 密码:
+**步骤 5** - 现在使用 `passwd` 命令重置 root 密码:
```
passwd root
```
-输入两次 root 密码。我建议你使用强密码。
+输入两次 root 密码。我建议使用强密码。
![Reset Or Change Root Password In Fedora][5]
@@ -65,7 +68,7 @@ exit
reboot
```
-等待 SELinux 重新标记完成。这将需要几分钟,具体取决于文件系统的大小和硬盘的速度。
+等待 SELinux 重新标记完成。这将需要几分钟,具体时长取决于文件系统的大小和硬盘的速度。
![SELinux Filesystem Relabeling In Progress][7]
@@ -73,7 +76,7 @@ reboot
![Login To Fedora As Root User][8]
-如你所见,在 Fedora 36 中重置 root 密码的步骤非常简单,并且与**[在 RHEL 中重置 root 密码][9]**及其克隆版本(如 CentOS、AlmaLinux 和 Rocky Linux)完全相同。
+如你所见,在 Fedora 36 中重置 root 密码的步骤非常简单,并且与 [在 RHEL 中重置 root 密码][9] 及其衍生版本(如 CentOS、AlmaLinux 和 Rocky Linux)完全相同。
--------------------------------------------------------------------------------
@@ -82,7 +85,7 @@ via: https://ostechnix.com/reset-root-password-in-fedora/
作者:[sk][a]
选题:[lkxed][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/) 荣誉推出
diff --git a/published/20220516 Microsoft has another Linux distribution and it is based on Debian.md b/published/202205/20220516 Microsoft has another Linux distribution and it is based on Debian.md
similarity index 100%
rename from published/20220516 Microsoft has another Linux distribution and it is based on Debian.md
rename to published/202205/20220516 Microsoft has another Linux distribution and it is based on Debian.md
diff --git a/translated/tech/20220516 Structured Data Processing with Spark SQL.md b/published/202205/20220516 Structured Data Processing with Spark SQL.md
similarity index 63%
rename from translated/tech/20220516 Structured Data Processing with Spark SQL.md
rename to published/202205/20220516 Structured Data Processing with Spark SQL.md
index 0385b7a3af..33a25c2f6d 100644
--- a/translated/tech/20220516 Structured Data Processing with Spark SQL.md
+++ b/published/202205/20220516 Structured Data Processing with Spark SQL.md
@@ -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 和数据集来解决这些问题。
+
-Spark SQL 可以使用现有的 Hive 元存储、SerDes 和 UDFs。它可以使用 JDBC/ODBC 连接到现有的 BI 工具。
+有了 Spark SQL,用户可以编写 SQL 风格的查询。这对于精通结构化查询语言或 SQL 的广大用户群体来说,基本上是很有帮助的。用户也将能够在结构化数据上编写交互式和临时性的查询。Spark SQL 弥补了弹性分布式数据集(RDD)和关系表之间的差距。RDD 是 Spark 的基本数据结构。它将数据作为分布式对象存储在适合并行处理的节点集群中。RDD 很适合底层处理,但在运行时很难调试,程序员不能自动推断模式。另外,RDD 没有内置的优化功能。Spark SQL 提供了数据帧和数据集来解决这些问题。
+
+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 在“洗牌”操作后确定最佳的分区数量。在 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/) 荣誉推出
diff --git a/published/20220517 Adobe Illustrator Alternative Inkscape Releases Version 1.2.md b/published/202205/20220517 Adobe Illustrator Alternative Inkscape Releases Version 1.2.md
similarity index 100%
rename from published/20220517 Adobe Illustrator Alternative Inkscape Releases Version 1.2.md
rename to published/202205/20220517 Adobe Illustrator Alternative Inkscape Releases Version 1.2.md
diff --git a/published/20220517 Kali Linux 2022.2 Release Adds an Amusing New Feature for the Hackers to Scare People.md b/published/202205/20220517 Kali Linux 2022.2 Release Adds an Amusing New Feature for the Hackers to Scare People.md
similarity index 100%
rename from published/20220517 Kali Linux 2022.2 Release Adds an Amusing New Feature for the Hackers to Scare People.md
rename to published/202205/20220517 Kali Linux 2022.2 Release Adds an Amusing New Feature for the Hackers to Scare People.md
diff --git a/published/202205/20220518 Five common mistakes when using automation.md b/published/202205/20220518 Five common mistakes when using automation.md
new file mode 100644
index 0000000000..c41b5d825b
--- /dev/null
+++ b/published/202205/20220518 Five common mistakes when using automation.md
@@ -0,0 +1,56 @@
+[#]: 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: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14657-1.html"
+
+使用自动化时的五个常见错误
+======
+
+
+
+随着自动化扩展到涵盖 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)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [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
diff --git a/published/202205/20220518 Google To Start Distributing A Collection Of Open Source Software libraries.md b/published/202205/20220518 Google To Start Distributing A Collection Of Open Source Software libraries.md
new file mode 100644
index 0000000000..1edc4b7a48
--- /dev/null
+++ b/published/202205/20220518 Google To Start Distributing A Collection Of Open Source Software libraries.md
@@ -0,0 +1,42 @@
+[#]: subject: "Google To Start Distributing A Collection Of Open Source Software libraries"
+[#]: via: "https://www.opensourceforu.com/2022/05/google-to-start-distributing-a-collection-of-open-source-software-libraries/"
+[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
+[#]: collector: "lkxed"
+[#]: translator: "beamrolling"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14641-1.html"
+
+谷歌开始分发一系列开源软件库
+======
+
+
+
+5 月 17 日,谷歌推出了一项新计划,该计划向谷歌云用户策划并提供经过安全审查的开源包选项,以保护开源软件供应链。该公司在一篇 [博文][2] 中宣布了这项名为 “安心开源软件” 的新服务。在博文中,谷歌云安全和隐私部门产品经理 Andy Chang 强调了保障开源软件的一些问题,并强调了谷歌对开源的承诺。
+
+“开发者社区、企业及政府对软件供应链风险的意识越来越强,”Chang 写道,并以去年的 log4j 重大漏洞为例。“谷歌仍是开源代码最大的维护者、贡献者和使用者之一,并深入参与了帮助开源软件生态系统更加安全的工作。”
+
+据谷歌称,“安心开源软件”服务将让云客户能够访问谷歌的大量软件审计知识。另据其称,所有通过该服务提供的开源软件包也在公司内部使用,该公司会定期检查和分析其漏洞。
+
+谷歌目前正在审核的 550 个重要开源库的清单可以在 [GitHub][3] 上找到。虽然这些库都可以独立于谷歌下载,但该计划将呈现通过谷歌云提供的审核版本,防止开发者破坏广泛使用的开放源码库。这项服务现在处于预先体验阶段,将在 2022 年第三季度准备好进行更广泛的消费者测试。
+
+谷歌的声明只是广大行业努力加强开源软件供应链的安全的一部分,这份努力得到了拜登政府的支持。今年 1 月,美国国土安全部和美国网络安全与基础设施安全局的代表与美国一些主要 IT 公司的高管会面,研究 log4j 漏洞之后的开源软件安全问题。此后,有关公司在最近的一次峰会上承诺提供超过 3000 万美元的资金,以改善开源软件的安全问题。
+
+除了现金,谷歌还在投入工程时间来确保供应链的安全。该公司已宣布发展一个“开源维护小组”,该团队将与库维护人员合作以提高安全性。
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/05/google-to-start-distributing-a-collection-of-open-source-software-libraries/
+
+作者:[Laveesh Kocher][a]
+选题:[lkxed][b]
+译者:[beamrolling](https://github.com/beamrolling)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.opensourceforu.com/author/laveesh-kocher/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/05/google3-1-e1652863988525.jpg
+[2]: https://cloud.google.com/blog/products/identity-security/introducing-assured-open-source-software-service
+[3]: https://github.com/google/oss-fuzz/tree/master/projects
diff --git a/published/202205/20220518 How To Reset Sudo Password In Ubuntu 22.04 - 20.04 LTS.md b/published/202205/20220518 How To Reset Sudo Password In Ubuntu 22.04 - 20.04 LTS.md
new file mode 100644
index 0000000000..b6bb934753
--- /dev/null
+++ b/published/202205/20220518 How To Reset Sudo Password In Ubuntu 22.04 - 20.04 LTS.md
@@ -0,0 +1,128 @@
+[#]: subject: "How To Reset Sudo Password In Ubuntu 22.04 / 20.04 LTS"
+[#]: via: "https://ostechnix.com/how-to-reset-sudo-password-in-ubuntu-20-04-lts/"
+[#]: author: "sk https://ostechnix.com/author/sk/"
+[#]: collector: "lkxed"
+[#]: translator: "robsean"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14648-1.html"
+
+如何在 Ubuntu 22.04 / 20.04 LTS 中重新设置 sudo 密码
+======
+
+
+
+> 在 Ubuntu 中重新设置已忘记的 root 用户的密码
+
+这篇简单的指南将向你解释,如何在 Ubuntu 22.04 好 20.04 LTS 桌面环境中,以及从服务器版本中的 恢复 模式中重新设置 sudo 密码。
+
+### 介绍
+
+在 [安装 Ubuntu][1] 时,创建的一个新用户将会带有 `sudo` 权限,用以执行各种各样的管理任务。
+
+如果你的 Ubuntu 系统有多个 `sudo` 用户,你能够从另外一个 `sudo` 用户的账号下,轻松地重新设置所忘记的一个 `sudo` 用户或管理员用户的密码。
+
+如果你只有一个 `sudo` 用户,并且忘记了密码怎么办?没有问题! 从 Ubuntu 的 恢复 或 单一用户 模式中恢复 `sudo` 用户密码很容易。
+
+虽然这篇指南是在 Ubuntu 22.04 和 20.04 LTS 版本上进行的正式测试,不过,下面给定的步骤对于其它的 Ubuntu 版本和衍生版本来说是相同的。
+
+### 在 Ubuntu 22.04 / 20.04 LTS 中重新设置 sudo 密码
+
+首先,启动你的 Ubuntu 系统到 恢复 模式下,来重新设置一个 `sudo` 用户的密码,操作如下面的链接所述。
+
+> [如何启动到 Ubuntu 22.04 / 20.04 / 18.04 的 恢复 模式 或 急救模式 ][2]
+
+现在,进入到 恢复 模式下,通过运行下面的命令,以读/写的模式挂载根(`/`)文件系统:
+
+```
+# mount -n -o remount,rw /
+```
+
+现在,使用 `passwd` 命令来重新设置 `sudo` 用户的密码:
+
+```
+# passwd ostechnix
+```
+
+在这里,`ostechnix` 是 sudo 用户的名称。使用你自己的用户名称来替换掉它。
+
+输入两次密码:
+
+```
+New password:
+Retype new password:
+passwd: password updated successfully
+```
+
+![Reset Sudo Password In Ubuntu 22.04 / 20.04 LTS][3]
+
+就这样。我们已经重新设置 `sudo` 用户密码。如果你按照上面链接所述的方法 1 进入到 恢复 模式,按下 `Ctrl+d` 组合键来启动到正常模式。或者,你也可以输入下面的任意一个命令来启动到正常模式。
+
+```
+# systemctl default
+```
+
+或,
+
+```
+# exit
+```
+
+如果你想重新启动系统,而不是启动到正常模式,输入:
+
+```
+# systemctl reboot
+```
+
+如果你已经按照上面链接所述的方法 2 进入到恢复 模式,输入:
+
+```
+# exit
+```
+
+你将返回到 恢复菜单。现在选择 “恢复正常启动”,并按下回车键。
+
+![Boot Into Normal Mode In Ubuntu][4]
+
+在强调一次,选择 “确定” 按钮,并按下回车按键来继续启动到正常模式:
+
+![Exit Recovery Mode And Boot Into Normal Mode][5]
+
+现在,你在运行管理命令时可以使用新的 `sudo` 密码。
+
+### 如果我把用户名称和密码都忘了怎么办?
+
+如果你忘记了用户名称,在 恢复 模式下,你可以很容易地列出你的 Linux 系统中的用户名称,使用目录:
+
+```
+# cat etc/passwd
+```
+
+来自我 Ubuntu 22.04 系统的输出示例:
+
+```
+[...]
+ostechnix:x:1000:1000:Ostechnix,,,:/home/ostechnix:/bin/bash
+[...]
+```
+
+好了,现在,你找到用户名称了。只需要按照上面的步骤来重新设置用户的密码即可。
+
+--------------------------------------------------------------------------------
+
+via: https://ostechnix.com/how-to-reset-sudo-password-in-ubuntu-20-04-lts/
+
+作者:[sk][a]
+选题:[lkxed][b]
+译者:[robsean](https://github.com/robsean)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://ostechnix.com/author/sk/
+[b]: https://github.com/lkxed
+[1]: https://ostechnix.com/install-ubuntu-desktop/
+[2]: https://ostechnix.com/how-to-boot-into-rescue-mode-or-emergency-mode-in-ubuntu-18-04/
+[3]: https://ostechnix.com/wp-content/uploads/2022/05/Reset-Sudo-Password-In-Ubuntu.png
+[4]: https://ostechnix.com/wp-content/uploads/2020/05/Boot-into-normal-mode-in-Ubuntu.png
+[5]: https://ostechnix.com/wp-content/uploads/2020/05/Booting-into-normal-mode-from-rescue-mode-in-Ubuntu.png
diff --git a/published/202205/20220518 ONLYOFFICE 7.1 Release Adds ARM Compatibility, a New PDF Viewer, and More Features.md b/published/202205/20220518 ONLYOFFICE 7.1 Release Adds ARM Compatibility, a New PDF Viewer, and More Features.md
new file mode 100644
index 0000000000..6bbbbe2e5f
--- /dev/null
+++ b/published/202205/20220518 ONLYOFFICE 7.1 Release Adds ARM Compatibility, a New PDF Viewer, and More Features.md
@@ -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
diff --git a/published/20220519 How To Enable Activate Linux Watermark Notification In Linux Desktop.md b/published/202205/20220519 How To Enable Activate Linux Watermark Notification In Linux Desktop.md
similarity index 100%
rename from published/20220519 How To Enable Activate Linux Watermark Notification In Linux Desktop.md
rename to published/202205/20220519 How To Enable Activate Linux Watermark Notification In Linux Desktop.md
diff --git a/published/202205/20220520 A programmer-s guide to GNU C Compiler.md b/published/202205/20220520 A programmer-s guide to GNU C Compiler.md
new file mode 100644
index 0000000000..38cc8d46af
--- /dev/null
+++ b/published/202205/20220520 A programmer-s guide to GNU C Compiler.md
@@ -0,0 +1,269 @@
+[#]: subject: "A programmer's guide to GNU C Compiler"
+[#]: via: "https://opensource.com/article/22/5/gnu-c-compiler"
+[#]: author: "Jayashree Huttanagoudar https://opensource.com/users/jayashree-huttanagoudar"
+[#]: collector: "lkxed"
+[#]: translator: "robsean"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14653-1.html"
+
+GNU C 编译器的程序员入门指南
+======
+
+
+
+> 带你一窥生成二进制文件步骤的幕后,以便在出现一些错误时,你知道如何逐步解决问题。
+
+C 语言广为人知,深受新老程序员的好评。使用 C 语言编写的源文件代码,使用了标准的英语术语,因而人们可以方便阅读。然而,计算机只能理解二进制代码。为将代码转换为机器语言,你需要使用一种被称为 编译器 的工具。
+
+最常见的编译器是 GCC(GNU 编译器集)。编译过程涉及到一系列的中间步骤及相关工具。
+
+### 安装 GCC
+
+为验证在你的系统上是否已经安装了 GCC,使用 `gcc` 命令:
+
+```
+$ gcc --version
+```
+
+如有必要,使用你的软件包管理器来安装 GCC。在基于 Fedora 的系统上,使用 `dnf` :
+
+```
+$ sudo dnf install gcc libgcc
+```
+
+在基于 Debian 的系统上,使用 `apt` :
+
+```
+$ sudo apt install build-essential
+```
+
+在安装后,如果你想查看 GCC 的安装位置,那么使用:
+
+```
+$ whereis gcc
+```
+
+### 演示使用 GCC 来编译一个简单的 C 程序
+
+这里有一个简单的 C 程序,用于演示如何使用 GCC 来编译。打开你最喜欢的文本编辑器,并在其中粘贴这段代码:
+
+```
+// hellogcc.c
+#include
+
+int main() {
+ printf("Hello, GCC!\n");
+ return 0;
+}
+```
+
+保存文件为 `hellogcc.c` ,接下来编译它:
+
+```
+$ ls
+hellogcc.c
+
+$ gcc hellogcc.c
+
+$ ls -1
+a.out
+hellogcc.c
+```
+
+如你所见,`a.out` 是编译后默认生成的二进制文件。为查看你所新编译的应用程序的输出,只需要运行它,就像你运行任意本地二进制文件一样:
+
+```
+$ ./a.out
+Hello, GCC!
+```
+
+### 命名输出的文件
+
+文件名称 `a.out` 是非常莫名其妙的,所以,如果你想具体指定可执行文件的名称,你可以使用 `-o` 选项:
+
+(LCTT 译注:注意这和最近 Linux 内核废弃的 a.out 格式无关,只是名字相同,这里生成的 a.out 是 ELF 格式的 —— 也不知道谁给起了个 `a.out` 这破名字,在我看来,默认输出文件名就应该是去掉了 `.c` 扩展名后的名字。by wxy)
+
+```
+$ gcc -o hellogcc hellogcc.c
+
+$ ls
+a.out hellogcc hellogcc.c
+
+$ ./hellogcc
+Hello, GCC!
+```
+
+当开发一个需要编译多个 C 源文件文件的大型应用程序时,这种选项是很有用的。
+
+### 在 GCC 编译中的中间步骤
+
+编译实际上有四个步骤,即使在简单的用例中 GCC 自动执行了这些步骤。
+
+1. 预处理:GNU 的 C 预处理器(cpp)解析头文件(`#include` 语句),展开 宏 定义(`#define` 语句),并使用展开的源文件代码来生成一个中间文件,如 `hellogcc.i`。
+2. 编译:在这个期间中,编译器将预处理的源文件代码转换为指定 CPU 架构的汇编代码。由此生成是汇编文件使用一个 `.s` 扩展名来命名,如在这个示例中的 `hellogcc.s` 。
+3. 汇编:汇编程序(`as`)将汇编代码转换为目标机器代码,放在目标文件中,例如 `hellogcc.o` 。
+4. 链接:链接器(`ld`)将目标代码和库代码链接起来生成一个可执行文件,例如 `hellogcc` 。
+
+在运行 GCC 时,可以使用 `-v` 选项来查看每一步的细节:
+
+```
+$ gcc -v -o hellogcc hellogcc.c
+```
+
+![Compiler flowchart][2]
+
+### 手动编译代码
+
+体验编译的每个步骤可能是很有用的,因此在一些情况下,你不需要 GCC 完成所有的步骤。
+
+首先,除源文件文件以外,删除在当前文件夹下生成的文件。
+
+```
+$ rm a.out hellogcc.o
+
+$ ls
+hellogcc.c
+```
+
+#### 预处理器
+
+首先,启动预处理器,将其输出重定向为 `hellogcc.i` :
+
+```
+$ cpp hellogcc.c > hellogcc.i
+
+$ ls
+hellogcc.c hellogcc.i
+```
+
+查看输出文件,并注意一下预处理器是如何包含头文件和扩展宏中的源文件代码的。
+
+#### 编译器
+
+现在,你可以编译代码为汇编代码。使用 `-S` 选项来设置 GCC 只生成汇编代码:
+
+```
+$ gcc -S hellogcc.i
+
+$ ls
+hellogcc.c hellogcc.i hellogcc.s
+
+$ cat hellogcc.s
+```
+
+查看汇编代码,来看看生成了什么。
+
+#### 汇编
+
+使用你刚刚所生成的汇编代码来创建一个目标文件:
+
+```
+$ as -o hellogcc.o hellogcc.s
+
+$ ls
+hellogcc.c hellogcc.i hellogcc.o hellogcc.s
+```
+
+#### 链接
+
+要生成一个可执行文件,你必须将对象文件链接到它所依赖的库。这并不像前面的步骤那么简单,但它却是有教育意义的:
+
+```
+$ ld -o hellogcc hellogcc.o
+ld: warning: cannot find entry symbol _start; defaulting to 0000000000401000
+ld: hellogcc.o: in function `main`:
+hellogcc.c:(.text+0xa): undefined reference to `puts'
+```
+
+在链接器查找完 `libc.so` 库后,出现一个引用 `undefined puts` 错误。你必须找出适合的链接器选项来链接必要的库以解决这个问题。这不是一个小技巧,它取决于你的系统的布局。
+
+在链接时,你必须链接代码到核心运行时(CRT)目标,这是一组帮助二进制可执行文件启动的子例程。链接器也需要知道在哪里可以找到重要的系统库,包括 `libc` 和 `libgcc`,尤其是其中的特殊的开始和结束指令。这些指令可以通过 `--start-group` 和 `--end-group` 选项来分隔,或者使用指向 `crtbegin.o` 和 `crtend.o` 的路径。
+
+这个示例使用了 RHEL 8 上的路径,因此你可能需要依据你的系统调整路径。
+
+```
+$ ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 \
+ -o hello \
+ /usr/lib64/crt1.o /usr/lib64/crti.o \
+ --start-group \
+ -L/usr/lib/gcc/x86_64-redhat-linux/8 \
+ -L/usr/lib64 -L/lib64 hello.o \
+ -lgcc \
+ --as-needed -lgcc_s \
+ --no-as-needed -lc -lgcc \
+ --end-group \
+ /usr/lib64/crtn.o
+```
+
+在 Slackware 上,同样的链接过程会使用一组不同的路径,但是,你可以看到这其中的相似之处:
+
+```
+$ ld -static -o hello \
+ -L/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/ \
+ /usr/lib64/crt1.o /usr/lib64/crti.o hello.o /usr/lib64/crtn.o \
+ --start-group \
+ -lc -lgcc -lgcc_eh \
+ --end-group
+```
+
+现在,运行由此生成的可执行文件:
+
+```
+$ ./hello
+Hello, GCC!
+```
+
+### 一些有用的实用程序
+
+下面是一些帮助检查文件类型、符号表 和链接到可执行文件的库的实用程序。
+
+使用 `file` 实用程序可以确定文件的类型:
+
+```
+$ file hellogcc.c
+hellogcc.c: C source, ASCII text
+
+$ file hellogcc.o
+hellogcc.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
+
+$ file hellogcc
+hellogcc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=bb76b241d7d00871806e9fa5e814fee276d5bd1a, for GNU/Linux 3.2.0, not stripped
+```
+
+对目标文件使用 `nm` 实用程序可以列出 符号表 :
+
+```
+$ nm hellogcc.o
+0000000000000000 T main
+ U puts
+```
+
+使用 `ldd` 实用程序来列出动态链接库:
+
+```
+$ ldd hellogcc
+linux-vdso.so.1 (0x00007ffe3bdd7000)
+libc.so.6 => /lib64/libc.so.6 (0x00007f223395e000)
+/lib64/ld-linux-x86-64.so.2 (0x00007f2233b7e000)
+```
+
+### 总结
+
+在这篇文章中,你了解到了 GCC 编译中的各种中间步骤,和检查文件类型、符号表 和链接到可执行文件的库的实用程序。在你下次使用 GCC 时,你将会明白它为你生成一个二进制文件所要做的步骤,并且当出现一些错误时,你会知道如何逐步处理解决问题。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/gnu-c-compiler
+
+作者:[Jayashree Huttanagoudar][a]
+选题:[lkxed][b]
+译者:[robsean](https://github.com/robsean)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/jayashree-huttanagoudar
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/build_structure_tech_program_code_construction.png
+[2]: https://opensource.com/sites/default/files/2022-05/compiler-flowchart.png
diff --git a/published/202205/20220520 Customize GNOME 42 with A Polished Look.md b/published/202205/20220520 Customize GNOME 42 with A Polished Look.md
new file mode 100644
index 0000000000..7f5fabc586
--- /dev/null
+++ b/published/202205/20220520 Customize GNOME 42 with A Polished Look.md
@@ -0,0 +1,132 @@
+[#]: subject: "Customize GNOME 42 with A Polished Look"
+[#]: via: "https://www.debugpoint.com/2022/05/customize-gnome-42-look-1/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lkxed"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14646-1.html"
+
+如何把你的 GNOME 42 打磨得更精致
+======
+
+
+
+> 在 5 分钟内将你最喜欢的 GNOME 桌面打磨得更精致。
+
+你可以使用图标、主题、光标和壁纸等多种方式来定制你最喜爱的 GNOME 桌面。本文向你展示了如何使你的 GNOME 42 桌面看起来更精致。在最近发布的 Ubuntu 22.04 LTS 和 Fedora 36 上提供了 GNOME 42 桌面环境。
+
+在你进一步阅读之前,先看看调整之前和之后的外观比较。
+
+![GNOME before customisation][1]
+
+![GNOME after customisation][2]
+
+我将把本教程分为两个部分。
+
+第一部分涉及设置和安装所需的软件包。然后第二部分是如何应用各种设置来获得你想要的外观。
+
+本教程主要在 Ubuntu 22.04 LTS 上测试。但是,它应该适用于 Ubuntu 和 Fedora 的其他变体。
+
+### 将 GNOME 42 定制得更精致
+
+#### 设置
+
+首先,为你的系统启用 Flatpak,因为我们需要安装扩展管理器来下载本教程所需的 GNOME Shell 扩展。
+
+因此,要做到这一点,请打开一个终端并运行以下命令:
+
+```
+sudo apt install flatpak gnome-software-plugin-flatpak
+flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
+```
+
+完成后重启计算机。
+
+然后从终端运行以下命令,来安装扩展管理器应用以下载 GNOME Shell 扩展:
+
+```
+flatpak install flathub com.mattjakeman.ExtensionManager
+```
+
+打开扩展管理器应用,并安装两个扩展。第一个是 “浮动停靠区”,它提供了超酷的停靠区,你可以在桌面上的任何位置移动它。第二个,安装 “用户主题” 扩展来帮助你在 Ubuntu Linux 中安装外部 GTK 主题。
+
+![User Themes Extension][3]
+
+![Floating Dock Extension][4]
+
+接着,使用以下命令安装 [Materia 主题][5]。你必须构建它,因为它没有任何可执行文件。在 Ubuntu 中依次运行以下命令进行安装:
+
+```
+git clone https://github.com/ckissane/materia-theme-transparent.git
+cd materia-theme-transparent
+meson _build
+meson install -C _build
+```
+
+此外,请从 [这里][7] 下载 [Kora 图标主题][6]。下载后解压文件,将以下四个文件夹复制到 `/home/<用户名>/.icons` 路径下。如果 `.icons` 文件夹不存在,请创建它。
+
+![Kora Icon Theme][8]
+
+除了上述更改,从 [这里][9] 下载 Bibata 光标主题。下载后,解压文件夹并将其复制到相同的 `/home/<用户名>/.icons` 文件夹中。
+
+除了上述之外,如果你想要一个与上述主题相匹配的漂亮字体,请从谷歌字体 [下载 Robot 字体][10],并将它们复制到 `/home//.fonts` 文件夹。
+
+最后,再次重启系统。
+
+#### 配置
+
+打开扩展管理器,启用 “浮动停靠区” 和 “用户主题”,并禁用 “Ubuntu Dock”。
+
+![Changes to Extensions][11]
+
+此外,打开 “浮动停靠区” 设置并进行以下更改:
+
+![Floating Dock Settings][12]
+
+此外,打开 [GNOME 优化工具][13],然后转到外观选项卡。设置以下内容:
+
+* 光标:Bibata-Original-Ice
+* Shell 主题:Materia
+* 图标:Kora
+
+除此之外,你可能还想更改字体。为此,请转到字体选项卡并将文档和界面更改为 “Robot 10pt”。
+
+或者,你也可以从 Ubuntu 22.04 的默认设置中更改强调色和样式。
+
+最后,根据你的喜好下载漂亮的壁纸。对于本教程,我从 [这里][14] 下载了一个示例壁纸。
+
+如果一切顺利,你应该有一个漂亮的桌面,如下图所示:
+
+![Customize GNOME 42 – Final Look][15]
+
+享受你的精致的 GNOME 42!干杯。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/05/customize-gnome-42-look-1/
+
+作者:[Arindam][a]
+选题:[lkxed][b]
+译者:[geekpi](https://github.com/geekpi)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lkxed
+[1]: https://i2.wp.com/www.debugpoint.com/wp-content/uploads/2022/05/GNOME-before-customisation.jpg?ssl=1
+[2]: https://i0.wp.com/www.debugpoint.com/wp-content/uploads/2022/05/GNOME-after-customisation.jpg?ssl=1
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/05/User-Themes-Extension2.jpg
+[4]: https://www.debugpoint.com/wp-content/uploads/2022/05/Floating-Doc-Extension.jpg
+[5]: https://github.com/ckissane/materia-theme-transparent
+[6]: https://github.com/bikass/kora/
+[7]: https://github.com/bikass/kora/archive/refs/heads/master.zip
+[8]: https://www.debugpoint.com/wp-content/uploads/2022/05/Kora-Icon-Theme.jpg
+[9]: https://www.pling.com/p/1197198/
+[10]: https://fonts.google.com/specimen/Roboto
+[11]: https://www.debugpoint.com/wp-content/uploads/2022/05/Changes-to-Extensions.jpg
+[12]: https://www.debugpoint.com/wp-content/uploads/2022/05/Floating-Dock-Settings.jpg
+[13]: https://www.debugpoint.com/2018/05/customize-your-ubuntu-desktop-using-gnome-tweak/
+[14]: https://www.pexels.com/photo/colorful-blurred-image-6985048/
+[15]: https://www.debugpoint.com/wp-content/uploads/2022/05/Customize-GNOME-42-Final-Look.jpg
diff --git a/published/202205/20220520 How to rename a branch, delete a branch, and find the author of a branch in Git.md b/published/202205/20220520 How to rename a branch, delete a branch, and find the author of a branch in Git.md
new file mode 100644
index 0000000000..cca58c8b10
--- /dev/null
+++ b/published/202205/20220520 How to rename a branch, delete a branch, and find the author of a branch in Git.md
@@ -0,0 +1,203 @@
+[#]: subject: "How to rename a branch, delete a branch, and find the author of a branch in Git"
+[#]: via: "https://opensource.com/article/22/5/git-branch-rename-delete-find-author"
+[#]: author: "Agil Antony https://opensource.com/users/agantony"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14635-1.html"
+
+Git 教程:重命名分支、删除分支、查看分支作者
+======
+
+
+
+> 掌握管理本地/远程分支等最常见的 Git 任务。
+
+Git 的主要优势之一就是它能够将工作“分叉”到不同的分支中。
+
+如果只有你一个人在使用某个存储库,分支的好处是有限的。但是,一旦你开始与许多其他贡献者一起工作,分支就变得必不可少。Git 的分支机制允许多人同时处理一个项目,甚至是同一个文件。用户可以引入不同的功能,彼此独立,然后稍后将更改合并回主分支。那些专门为一个目的创建的分支,有时也被称为主题分支,例如添加新功能或修复已知错误。
+
+当你开始使用分支,了解如何管理它们会很有帮助。以下是开发者在现实世界中使用 Git 分支执行的最常见任务。
+
+### 重命名分支
+
+有时候,你或许会错误地命名了一个分支,或者你会想要在内容合并到主分支后,使用同一个分支在不同的错误或任务之间切换。在这种情况下,重命名主题分支就会很有帮助。
+
+#### 重命名本地分支
+
+1、重命名本地分支:
+
+```
+$ git branch -m
+```
+
+当然,这只会重命名你的分支副本。如果远程 Git 服务器上存在该分支,请继续执行后续步骤。
+
+2、推送这个新分支,从而创建一个新的远程分支:
+
+```
+$ git push origin
+```
+
+3、删除旧的远程分支:
+
+```
+$ git push origin -d -f
+```
+
+#### 重命名当前分支
+
+当你要重命名的分支恰好是当前分支时,你不需要指定旧的分支名称。
+
+1、重命名当前分支:
+
+```
+$ git branch -m
+```
+
+2、推送新分支,从而创建一个新的远程分支:
+
+```
+$ git push origin
+```
+
+3、删除旧的远程分支:
+
+```
+$ git push origin -d -f
+```
+
+### 使用 Git 删除本地和远程分支
+
+为了保持存储库的整洁,通常建议你在确保已将内容合并到主分支后,删除临时分支。
+
+#### 删除本地分支
+
+删除本地分支只会删除系统上存在的该分支的副本。如果分支已经被推送到远程存储库,它仍然可供使用该存储库的每个人使用。
+
+1、签出存储库的主分支(例如 `main` 或 `master`):
+
+```
+$ git checkout
+```
+
+2、列出所有分支(本地和远程):
+
+```
+$ git branch -a
+```
+
+3、删除本地分支:
+
+```
+$ git branch -d
+```
+
+要删除所有本地主题分支并仅保留 `main` 分支:
+
+```
+$ git branch | grep -v main | xargs git branch -d
+```
+
+#### 删除远程分支
+
+删除远程分支只会删除远程服务器上存在的该分支的副本。如果你想撤销删除,也可以将其重新推送到远程(例如 GitHub),只要你还有本地副本即可。
+
+1、签出存储库的主分支(通常是 `main` 或 `master`):
+
+```
+$ git checkout
+```
+
+2、列出所有分支(本地和远程):
+
+```
+$ git branch -a
+```
+
+3、删除远程分支:
+
+```
+$ git push origin -d
+```
+
+### 查看远程主题分支的作者
+
+如果你是存储库管理员,你可能会有这个需求,以便通知未使用分支的作者它将被删除。
+
+1、签出存储库的主分支(例如 `main` 或 `master`):
+
+```
+$ git checkout
+```
+
+2、删除不存在的远程分支的分支引用:
+
+```
+$ git remote prune origin
+```
+
+3、列出存储库中所有远程主题分支的作者,使用 `--format` 选项,并配合特殊的选择器来只打印你想要的信息(在本例中,`%(authorname)` 和 `%(refname)` 分别代表作者名字和分支名称):
+
+```
+$ git for-each-ref --sort=authordate --format='%(authorname) %(refname)' refs/remotes
+```
+
+示例输出:
+
+```
+tux refs/remotes/origin/dev
+agil refs/remotes/origin/main
+```
+
+你可以添加更多格式,包括颜色编码和字符串操作,以便于阅读:
+
+```
+$ git for-each-ref --sort=authordate \
+ --format='%(color:cyan)%(authordate:format:%m/%d/%Y %I:%M %p)%(align:25,left)%(color:yellow) %(authorname)%(end)%(color:reset)%(refname:strip=3)' \
+ refs/remotes
+```
+
+示例输出:
+
+```
+01/16/2019 03:18 PM tux dev
+05/15/2022 10:35 PM agil main
+```
+
+你可以使用 `grep` 获取特定远程主题分支的作者:
+
+```
+$ git for-each-ref --sort=authordate \
+ --format='%(authorname) %(refname)' \
+ refs/remotes | grep
+```
+
+### 熟练运用分支
+
+Git 分支的工作方式存在细微差别,具体取决于你想要分叉代码库的位置、存储库维护者如何管理分支、压扁、变基等。若想进一步了解该主题,你可以阅读下面这三篇文章:
+
+* [《用乐高来类比解释 Git 分支》][4],作者:Seth Kenlon
+* [《我的 Git push 命令的安全使用指南》][5],作者:Noaa Barki
+* [《Git 分支指南》][6],作者:Kedar Vijay Kulkarni
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/git-branch-rename-delete-find-author
+
+作者:[Agil Antony][a]
+选题:[lkxed][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/agantony
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/tree-branches.jpg
+[2]: https://www.flickr.com/photos/22244945@N00/3353319002
+[3]: https://creativecommons.org/licenses/by-sa/4.0/
+[4]: https://opensource.com/article/22/4/git-branches
+[5]: https://opensource.com/article/22/4/git-push
+[6]: https://opensource.com/article/18/5/git-branching
diff --git a/published/202205/20220521 FSF Does Not Accept Debian as a Free Distribution. Here-s Why!.md b/published/202205/20220521 FSF Does Not Accept Debian as a Free Distribution. Here-s Why!.md
new file mode 100644
index 0000000000..6009321e9f
--- /dev/null
+++ b/published/202205/20220521 FSF Does Not Accept Debian as a Free Distribution. Here-s Why!.md
@@ -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 之前会被清理掉。而自由软件基金会(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 项目在对“自由分发”一词的解释上产生分歧的主要根源来自一份被称为 “Debian 社会契约”的文件。
+
+该社会契约的第一个版本是在 1997 年 7 月 4 日由第二任 Debian 项目领导人 Bruce Perens 发表的。作为该契约的一部分,也公布了一套被称为 Debian 自由软件准则(DFSG)的规则。从那时起,要成为 Debian 的一部分,分发软件的许可证必须符合 DFSG。该社会契约记录了 Debian 开发者只用自由软件建立操作系统的意图,而 DFSG 则用于将软件分为自由和非自由。2004 年 4 月 26 日,批准了该文件的新版本,取代了 1997 年的版本。
+
+Debian 社会契约有五条。要回答我们今天主要讨论的问题,我们只需要关注其中两条 —— 即第一条和第五条,其他的省略。可以在 [此处][3] 查看该契约的完整版本。
+
+第一条说:“**Debian 将保持 100% 自由**。我们在标题为‘Debian 自由软件准则’的文件中提供了用于确定一个作品是否‘自由’的准则。我们承诺,根据这些准则,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
diff --git a/published/202205/20220523 DAML- The Programming Language for Smart Contracts in a Blockchain.md b/published/202205/20220523 DAML- The Programming Language for Smart Contracts in a Blockchain.md
new file mode 100644
index 0000000000..c333cb5a81
--- /dev/null
+++ b/published/202205/20220523 DAML- The Programming Language for Smart Contracts in a Blockchain.md
@@ -0,0 +1,143 @@
+[#]: 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: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14649-1.html"
+
+DAML:区块链中智能合约的编程语言
+======
+
+> DAML 智能合约语言是一种专门设计的特定领域语言(DSL),用于编码应用的共享业务逻辑。它用于区块链环境中分布式应用的开发和部署。
+
+
+
+区块链技术是一种安全机制,以一种使人难以或不可能修改或入侵的方式来跟踪信息。区块链整合了交易的数字账本,它被复制并发送至其网络上的每台计算机。在链的每个区块中,都有一些交易。当区块链上发生新的交易时,该交易的记录就会被添加到属于该链的每个人的账簿中。
+
+区块链使用分布式账本技术(DLT),其中数据库并不保存在一个服务器或节点中。在区块链中,交易被记录在一个被称为哈希的不可改变的加密符号中。这意味着,如果一个通道或链上的一个区块被改变,黑客将很难改变链上的那个区块,因为他们必须对外面的每一个版本的链都要这样做。区块链,如比特币和以太坊,随着新的区块被添加到链上而不断增长,这使得账本更加安全。
+
+随着区块链中智能合约的实施,在没有任何人工干预的情况下,有了自动执行的场景。智能合约技术使得执行最高级别的安全、隐私和反黑客实施成为可能。
+
+![Figure 1: Market size of blockchain technology (Source: Statista.com)][2]
+
+区块链的用例和应用是:
+
+* 加密货币
+* 智能合约
+* 安全的个人信息
+* 数字健康记录
+* 电子政务
+* 不可伪造的代币(NFT)
+* 游戏
+* 跨境金融交易
+* 数字投票
+* 供应链管理
+
+根据 Statista.com,自过去几年以来,区块链技术市场的规模正在以非常快的速度增长,预计到 2025 年将达到 400 亿美元。
+
+### 区块链的编程语言和工具箱
+
+有许多编程语言和开发工具包可用于分布式应用和智能合约。区块链的编程和脚本语言包括 Solidity、Java、Vyper、Serpent、Python、JavaScript、GoLang、PHP、C++、Ruby、Rust、Erlang 等,并根据实施场景和用例进行使用。
+
+选择一个合适的平台来开发和部署区块链,取决于一系列因素,包括对安全、隐私、交易速度和可扩展性的需求(图 2)。
+
+![Figure 2: Factors to look at when selecting a blockchain platform][3]
+
+开发区块链的主要平台有:
+
+* 以太坊
+* XDC Network
+* Tezos
+* Stellar
+* Hyperledger
+* Ripple
+* Hedera Hashgraph
+* Quorum
+* Corda
+* NEO
+* OpenChain
+* EOS
+* Dragonchain
+* Monero
+
+### DAML:一种高性能的编程语言
+
+数字资产建模语言,即 DAML(daml.com),是一种高性能的编程语言,用于开发和部署区块链环境中的分布式应用。它是一个轻量级和简洁的平台,用于快速应用开发。
+
+![Figure 3: Official portal of DAML][4]
+
+DAML 的主要特点是:
+
+* 细粒度的权限
+* 基于场景的测试
+* 数据模型
+* 业务逻辑
+* 确定性的执行
+* 存储抽象化
+* 无重复开销
+* 负责任的跟踪
+* 原子的可组合性
+* 授权检查
+* 需要知道的隐私
+
+### 安装和使用 DAML
+
+DAML SDK 可以安装在 Linux、macOS 或 Windows 上。在多个操作系统上安装 DAML 的详细说明可访问 https://docs.daml.com/getting-started/installation.html 。
+
+你必须具备以下条件才能使用 DAML:
+
+* Visual Studio Code
+* Java 开发套件(JDK)
+
+DAML 可以通过下载并运行可执行的安装程序在 Windows 上安装,你可访问 https://github.com/digital-asset/daml/releases/download/v1.18.1/daml-sdk-1.18.1-windows.exe 。
+
+在 Linux 或 Mac 上安装 DAML 可以通过在终端执行以下内容来完成:
+
+```
+$ curl -sSL https://get.daml.com/ | sh
+```
+
+安装 DAML 后,可以创建基于区块链的新应用,如图 4 和 5 所示。
+
+![Figure 4: Creating a new app][5]
+
+在另一个终端中,新的应用被导航并安装了项目的依赖:
+
+![Figure 5: Running DAML][6]
+
+```
+WorkingDirectory>cd myapp/ui
+WorkingDirectory>npm install
+WorkingDirectory>npm start
+```
+
+这样启动了 WebUI,该应用可在 Web 浏览器上通过 URL http://localhost:3000/ 访问。
+
+![Figure 6: Login panel in DAML app][7]
+
+### 研究和开发的范围
+
+区块链技术为不同类别的应用提供了广泛的开发平台和框架。其中许多平台是免费和开源的,可以下载和部署以用于基于研究的实现。研究学者、从业者和专家们可以使用这些平台为众多应用提出和实施他们的算法。
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/05/daml-the-programming-language-for-smart-contracts-in-a-blockchain/
+
+作者:[Dr Kumar Gaurav][a]
+选题:[lkxed][b]
+译者:[geekpi](https://github.com/geekpi)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.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/05/Untitled.png
+[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
diff --git a/published/202205/20220523 Linux Kernel 5.18 Released with Graphics Driver Changes and New Hardware Support.md b/published/202205/20220523 Linux Kernel 5.18 Released with Graphics Driver Changes and New Hardware Support.md
new file mode 100644
index 0000000000..1cc8ffd93f
--- /dev/null
+++ b/published/202205/20220523 Linux Kernel 5.18 Released with Graphics Driver Changes and New Hardware Support.md
@@ -0,0 +1,135 @@
+[#]: 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: "PeterPan0106"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14640-1.html"
+
+Linux 内核 5.18 版本正式发布,新增显卡驱动以及硬件支持
+======
+
+> 最新的 Linux 内核 5.18 版本现已如期发布,本次更新包括针对新硬件的支持以及许多其他核心变化。
+
+![Linux kernel 5.18 release][1]
+
+[Linux 5.17 内核][2] 发布时包含了对下一代硬件的支持,同时增强了 Steam Deck 的游戏体验。
+
+每一代内核都包含了令人兴奋的技术进步,Linux 内核 5.18 也不例外。
+
+### Linux 内核 5.18 有哪些变化呢?
+
+本次我们可以看到,内核针对雷蛇外设硬件、苹果妙控键盘和 AMD 显卡增强了支持,还有一些网络、核心和安全方面的更新。
+
+#### 新的雷蛇驱动
+
+说到游戏装备,Linux 的硬件支持亟待更新。
+
+目前存在一些开源驱动程序的变通解决方案。但是这些方案不具有普适性,适配和支持较少。
+
+正如 [Phoronix][3] 所发现的,Linux 内核 5.18 中一同发布了一个新的雷蛇 HID 驱动程序,它适配了雷蛇黑寡妇蜘蛛键盘,并修复了宏键此前存在的问题。
+
+此外,这个驱动程序应该也有助于解决其他雷蛇硬件的问题。
+
+#### AMD 显卡特性 FreeSync 模式被默认开启
+
+![][4]
+
+虽然对 FreeSync 视频的支持足够好,但这只是改善 FreeSync 显示器用户体验的一个临时解决方案。
+
+现在在 Linux 内核 5.18 版本中这一显示模式已被默认启用,用户无需调整任何设置即可使用 FreeSync([见更新日志][5])。
+
+#### 显卡驱动更新
+
+针对当前和未来的 AMD 显卡的驱动进行了改进。此外,支持英特尔 Arch 图形处理器和英特尔 Alder Lake N 的工作也取得了一些进展。
+
+更高刷新率的 DisplayPort 也在这一个版本中得到支持。
+
+#### 从 C89 标准升级到 C11 标准(GNU11)
+
+![][6]
+
+在 Linux 内核中使用的是 C89 C 语言标准,在当前已经稍显老旧并且缺失了许多十分必要的新特性。
+
+考虑到目前的编译器版本 GCC 5.1 的要求,从 Linux 内核 5.18 开始决定用 C11 标准来取代它。
+
+#### 网络优化
+
+Linux 内核 5.18 增加了对新的无线硬件的支持,这包括联发科 MT7916、MT7921U 和博通 BCM43454/6。
+
+![][7]
+
+针对移动设备的改进也包括对英特尔 M.2 WWAN 卡的支持。
+
+Realtek W89 驱动现在支持 AP 模式、6GHz 频段并增加了硬件扫描功能。
+
+在配置 IPv6 和其他各种协议方面,通过一系列的改进提升了性能。
+
+你可以在 Linux 内核 5.18 中网络方面的变更提交中了解所有情况(包括对驱动 API、协议和一些核心功能的改进)。
+
+#### USB 改进
+
+Xen USB 驱动程序进行了改进,以抵御恶意主设备,USB DWC3 驱动程序也支持了更多的硬件类型。
+
+其他改进详见 [更新日志][8]。
+
+#### 增强对苹果键盘以及平板的支持
+
+![][9]
+
+当前版本针对苹果妙控键盘(包含第一代型号)的使用体验进行了优化。
+
+改进了功能键映射、键盘背光事件,以及 2021 款的妙控键盘通过 USB 连接时报告电池水平的能力。
+
+Linux 内核 5.18 改进了输入处理,在平板电脑上输入将变得更为容易。
+
+硬件相关的改进详见 [更新日志][10]。
+
+#### ARM 架构芯片的支持(特斯拉 FSD,树莓派 Zero 2 W)
+
+![][11]
+
+Linux 内核 5.18 现在支持特斯拉的全套自动驾驶 SoC。三星工程师将其贡献到了 Linux 内核上游。
+
+其他芯片支持包括高通骁龙 625/632,以及三星 Exynos 850/7885。
+
+你还会发现 Linux 内核 5.18 支持了树莓派 Zero 2 W,而同时去除了旧的硬件/主板的支持。详见 [更新日志][12]。
+
+你可以参考 [官方更新日志][13] 和 Linus Torvald 的官方公告获取更多信息。
+
+### 如何安装 Linux 内核 5.18?
+
+你可以在 [Linux Kernel Archives][14] 网站上找到最新版本的内核。你可以下载 [Tarball][15] 以进行测试。你也可以参照我们的 [Linux 内核升级指南][16] 获取帮助。
+
+如果不想自己编译它,你可以稍等几周,等 Linux 发行版们把它推到仓库。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/linux-kernel-5-18-release/
+
+作者:[Ankush Das][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/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/
diff --git a/published/202205/20220523 System76 Collaborates with HP for a Powerful Linux Laptop for Developers.md b/published/202205/20220523 System76 Collaborates with HP for a Powerful Linux Laptop for Developers.md
new file mode 100644
index 0000000000..ad1edfd55d
--- /dev/null
+++ b/published/202205/20220523 System76 Collaborates with HP for a Powerful Linux Laptop for Developers.md
@@ -0,0 +1,75 @@
+[#]: 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: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14645-1.html"
+
+System76 与惠普合作为开发者提供功能强大的 Linux 笔记本电脑
+======
+
+> 惠普正在以开箱即用的 Pop!_OS 为特色进入 Linux 硬件市场,貌似有点激动人心?还是先来看一看吧!
+
+![hp][1]
+
+System76 不是早就自己生产 Linux 笔记本电脑了吗?那么,这次和惠普合作是怎么回事?
+
+嗯,这一次是惠普要发行一款 Linux 笔记本电脑,搭载 Pop!_OS,也就是 System76 的基于 Ubuntu 的 Linux 发行版。
+
+Carl Richell(System76 的创始人)在他的 Twitter 上宣布了这一消息,并附带了一个网站链接,该网站提供了更多相关信息。推文如下:
+
+> Hp-Pop 好耶!来看看这个:[https://t.co/gf2brjjUl8][2]
+
+### HP Dev One:专为开发者打造的 Linux 笔记本电脑
+
+一方面,System76 笔记本电脑与 Pop!_OS 有着开箱即用硬件兼容性,因此它备受赞誉。
+
+另一方面,Pop!_OS 也与笔记本电脑完美搭配,适配没有太多麻烦。
+
+Pop!_OS 也一直在推出更新和新增功能,以改进工作流程并充分利用 Linux 的可用硬件。
+
+此时,和惠普合作听起来是一个提高档次的好主意。
+
+![HP System76][3]
+
+所以说,Pop!_OS 和惠普合作的想法有点激动人心啊!
+
+挂上了惠普这个牌子,笔记本电脑的可用性/保修(在纸面上)就比 System76 要好了,考虑到后者在某些地区是不提供保修的。
+
+### AMD 驱动的笔记本电脑可帮助你更好地写代码
+
+HP Dev One 似乎是把“为开发者提供多任务处理的能力,从而快速完成任务”作为卖点。
+
+这款笔记本电脑的入门款搭载了 **8 核的 AMD Ryzen 7 PRO 处理器** 和 **16 GB RAM**(DDR4 @ 3200 MHz)。
+
+预计它还会搭载由 AMD Radeon Graphics 提供支持的 14 英寸全高清防眩光显示屏。
+
+对于 HP Dev One,Carl Richell 提到了这款笔记本电脑将通过 [LVFS][5](Linux 供应商固件服务)接收**固件更新**。
+
+他还提到,这款笔记本电脑(以上规格)的定价为 **1099 美元** 起。
+
+网站上只显示了它即将推出。因此,我们目前还不知道正式的发布日期。
+
+对于像惠普这样的商业制造商来说,笔记本电脑的定价听起来并不令人兴奋(LCTT 译注:毕竟不是国内互联网品牌的笔记本),但可能是一个划算的交易。
+
+你怎么看这款惠普笔记本电脑(运行 Linux、为开发者量身定制)的定价?你觉得这个价格合理吗?你对这款笔记本电脑有什么期望呢?
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/hp-dev-one-system76/
+
+作者:[Ankush Das][a]
+选题:[lkxed][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://news.itsfoss.com/author/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://news.itsfoss.com/wp-content/uploads/2022/05/hpdevone-illustration-1024x576.jpg
+[4]: https://fwupd.org/
diff --git a/published/202205/20220525 ProtonMail is Now Just -Proton- Offering a Privacy Ecosystem.md b/published/202205/20220525 ProtonMail is Now Just -Proton- Offering a Privacy Ecosystem.md
new file mode 100644
index 0000000000..2676f438a1
--- /dev/null
+++ b/published/202205/20220525 ProtonMail is Now Just -Proton- Offering a Privacy Ecosystem.md
@@ -0,0 +1,92 @@
+[#]: subject: "ProtonMail is Now Just ‘Proton’ Offering a Privacy Ecosystem"
+[#]: via: "https://news.itsfoss.com/protonmail-now-proton/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14652-1.html"
+
+ProtonMail 改名为 “Proton”,致力于提供一个隐私生态系统
+======
+
+> ProtonMail 宣布了重塑后的品牌,包括新网站、新名称、新的定价计划、新的 UI 和其他变化。
+
+![proton][1]
+
+[ProtonMail][2] 将自己重新命名为 “Proton”,以将其所有产品囊括在统一的品牌下。
+
+注意,别把它和 Steam 的 Proton(它也简称为 Proton)混淆哦!
+
+换句话说,ProtonMail、ProtonVPN 和它的任何服务将不再有单独的产品页面。
+
+### Proton:一个开源隐私生态系统
+
+![更新后的 Proton,统一保护][3]
+
+Proton 将拥有一个新的统一平台(新网站),你可以在其中访问所有服务,包括:
+
+* Proton 邮件
+* Proton VPN
+* Proton 网盘
+* Proton 日历
+
+现在,新的登录会话将会被重定向到 `proton.me` 而不是 `protonmail.com`、`mail.protonmail.com`、`protonvpn.com` 等等。
+
+不仅限于名称/品牌,整体的强调色和现有的用户体验,也将受到影响。
+
+![][4]
+
+现在,你只需一次付费订阅即可获得全部服务,而不必单独升级 VPN 和邮件。这也意味着,经过这次改变,高级订阅的价格变得更加实惠了。
+
+![][5]
+
+总体而言,让 “Proton” 成为隐私生态系统,是为了吸引更多对技术细节不感兴趣的用户来了解它是如何运作的。
+
+你可以在其新的官方网站([proton.me][6])上查看所有详细信息。
+
+新网站看起来更干净、更有条理,并且更具商业吸引力。
+
+### 本次更改的内容
+
+你可以期待有一个焕然一新的用户界面,包括新的品牌和新的网站。
+
+![proton][7]
+
+除此之外,Proton 还提到它改进了服务之间的集成,以获得更好的用户体验。
+
+![][8]
+
+如果你已经在使用 ProtonMail,你可能知道,他们正在主动建议现有用户激活 “@proton.me” 帐户,这也是本次更改的一部分。
+
+你可以选择将新电子邮件地址 xyz@proton.me 设为默认值,它更短,看起来也更有意义一些。
+
+* 旧的电子邮件地址不会消失,只是额外提供了新地址(@proton.me)。
+* 现有的付费订阅者应该可以免费获得存储空间提升。
+* 升级了网页和移动应用中的用户体验。
+* 新的官方网站(你将被自动重定向到它以进行新会话)。
+* 新的定价计划,为 Proton 网盘提供更多存储空间。
+
+你对本次变更感兴趣吗?你喜欢 Proton 的新名字和新的服务方式吗?请在下方评论中分享你的想法吧!
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/protonmail-now-proton/
+
+作者:[Ankush Das][a]
+选题:[lkxed][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://news.itsfoss.com/author/ankush/
+[b]: https://github.com/lkxed
+[1]: https://news.itsfoss.com/wp-content/uploads/2022/05/proton-ft.jpg
+[2]: https://itsfoss.com/recommends/protonmai
+[3]: https://youtu.be/s5GNTQ63HJE
+[4]: https://news.itsfoss.com/wp-content/uploads/2022/05/proton-ui-new-1024x447.jpg
+[5]: https://news.itsfoss.com/wp-content/uploads/2022/05/proton-pricing-1024x494.jpg
+[6]: https://proton.me/
+[7]: https://news.itsfoss.com/wp-content/uploads/2022/05/Proton-me-website.png
+[8]: https://news.itsfoss.com/wp-content/uploads/2022/05/Proton-Product.png
diff --git a/published/202205/20220526 DeepMind-s Open Source MuJoCo Is Available On GitHub.md b/published/202205/20220526 DeepMind-s Open Source MuJoCo Is Available On GitHub.md
new file mode 100644
index 0000000000..4a21ef7ecf
--- /dev/null
+++ b/published/202205/20220526 DeepMind-s Open Source MuJoCo Is Available On GitHub.md
@@ -0,0 +1,59 @@
+[#]: subject: "DeepMind’s Open Source MuJoCo Is Available On GitHub"
+[#]: via: "https://www.opensourceforu.com/2022/05/deepminds-open-source-mujoco-is-available-on-github/"
+[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14650-1.html"
+
+DeepMind 的开源物理引擎 MuJoCo 已在 GitHub 发布
+======
+
+![deepmind1][1]
+
+DeepMind 是 Alphabet 的子公司和 AI 研究实验室,在 2021 年 10 月,它收购了用于机器人研发的 MuJoCo 物理引擎,并承诺该模拟器将作为免费、开源、社区驱动的项目进行维护。现在,DeepMind 声称开源计划已完成,它的整个代码库 [可在 GitHub 上获得][2]。
+
+MuJoCo 是 “Multi-Joint Dynamics with Contact” 的缩写,它是一个物理引擎,旨在帮助机器人、生物力学、图形和动画等领域的研究和开发(也包括其他需要快速准确模拟的领域)。MuJoCo 可用于帮助机器学习应用实现基于模型的计算,例如控制综合、状态估计、系统识别、机制设计、通过逆动力学来进行数据分析,以及并行采样。它也可以用作标准模拟器,例如用于游戏和交互式虚拟环境。(LCTT 译注:这段话中涉及到不少专业词汇,鉴于译者水平有限,若有谬误,请在评论中指出,同时也欢迎在评论中科普,一起学习~)
+
+根据 DeepMind 的说法,以下是 MuJoCo 适合协作的一些功能:
+
+* 能够模拟复杂机制的综合模拟器
+* 可读、高性能、可移植的代码
+* 易于扩展的代码库
+* 丰富的文档,包括面向用户的和代码注释 —— 我们希望学术界和 OSS 社区的同事能够使用这个平台并为代码库做出贡献,从而改善所有人的研究
+
+DeepMind 还说:
+
+> “作为没有动态内存分配的 C 库,MuJoCo 非常快。不幸的是,原始物理速度一直受到 Python 包装器的阻碍:全局解释器锁(GIL)和非编译代码的存在,使得批处理、多线程操作无法执行。在下面的路线图中,我们将解决这个问题。”
+
+(LCTT 译注: 这里补充了原文没有提及的路线图和基准测试结果。)
+
+路线图:
+
+* 通过批处理、多线程模拟释放 MuJoCo 的速度潜力
+* 通过改进内部内存管理支持更大的场景
+* 新的增量编译器,带来更好的模型可组合性
+* 通过 Unity 集成支持更好的渲染
+* 对物理导数的原生支持,包括解析和有限差分
+
+> “目前,我们想分享两个常见模型的基准测试结果。注意,这个结果是在运行 Windows 10 的标准 AMD Ryzen 9 5950X 机器上获得的。”
+
+![基准测试结果][3]
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/05/deepminds-open-source-mujoco-is-available-on-github/
+
+作者:[Laveesh Kocher][a]
+选题:[lkxed][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.opensourceforu.com/author/laveesh-kocher/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/05/deepmind1.jpg
+[2]: https://github.com/deepmind/mujoco
+[3]: https://assets-global.website-files.com/621e749a546b7592125f38ed/628b971675cb60d74f5fa189_2A54E864-FE90-49E4-8E58-FE40298303E2.jpeg
diff --git a/published/202205/20220526 Plex Desktop Player is Now Available for Linux.md b/published/202205/20220526 Plex Desktop Player is Now Available for Linux.md
new file mode 100644
index 0000000000..af12ffedbf
--- /dev/null
+++ b/published/202205/20220526 Plex Desktop Player is Now Available for Linux.md
@@ -0,0 +1,76 @@
+[#]: subject: "Plex Desktop Player is Now Available for Linux"
+[#]: via: "https://news.itsfoss.com/plex-desktop-linux/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14656-1.html"
+
+Plex 桌面播放器现已支持 Linux
+======
+
+> Plex.tv 终于增加了 Linux 桌面版本和全新的 HTPC 应用。不过,它目前只提供了 Snap 包。
+
+![plex][1]
+
+Plex 是一个流行的流媒体播放器,同时,它能够用作一个媒体服务器软件。
+
+事实上,它也是 [Linux 上最好的媒体服务器软件][2] 之一。
+
+是的,这个媒体服务器已经支持 Linux,而且还提供了一个 [包含安装步骤的教程][3]。
+
+### Linux 上的 Plex 桌面播放器提供 Snap 包
+
+我知道很多人都不喜欢使用 Snap 包来安装这个桌面播放器。但现在,这个桌面播放器已在 Snap 商店中提供,你可以轻松地在任何 Linux 发行版上安装它。
+
+![][4]
+
+幸运的是,这个桌面播放器的 [公告][5] 还提到他们正在开发一个 **Flatpak 包**,它应该会在近期登陆 Flathub。
+
+这样一来,借助 Flatpak 和 Snap 软件包,Plex 就可以成为在 Linux 上流式传输和组织个人媒体收藏的绝佳选择。
+
+除了桌面应用程序,如果你利用你的 Linux 机器连接到一个大屏幕来观看所有的内容,还有一个 Plex HTPC(有计划发布 Flatpak 软件包)。
+
+![][6]
+
+顺便说一句,HTPC 是 PMP TV(全称为 Plex Media Player TV)模式的继承者。
+
+他们在官网上与它的 Linux 桌面应用程序一同发布了这款产品。
+
+使用 HTPC,这个桌面应用就可以和电视共享,并支持音频直通、刷新率切换、控制器和可配置输入映射等高级功能。
+
+![][7]
+
+因此,如果你有一个大屏幕,并且想要连接你的系统(不管是什么桌面平台)的话,你现在可以使用 HTPC 应用程序来完成。
+
+> **[Plex 桌面版][8]**
+
+> **[Plex HTPC][9]**
+
+在 Linux 系统或联网电视上流式传输内容时,你通常会使用什么呢?你觉得 Plex 能满足你的需求吗?即然它支持 Linux 了,你会想要用它来替代当前使用的软件吗?
+
+欢迎在评论区告诉我们你的想法!
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/plex-desktop-linux/
+
+作者:[Ankush Das][a]
+选题:[lkxed][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://news.itsfoss.com/author/ankush/
+[b]: https://github.com/lkxed
+[1]: https://news.itsfoss.com/wp-content/uploads/2022/05/plex-ft.jpg
+[2]: https://itsfoss.com/best-linux-media-server/
+[3]: https://itsfoss.com/install-plex-ubuntu/
+[4]: https://news.itsfoss.com/wp-content/uploads/2022/05/plex-desktop-ubuntu.jpg
+[5]: https://www.plex.tv/blog/way-to-be-htpc/
+[6]: https://news.itsfoss.com/wp-content/uploads/2022/05/plex-snap-1024x524.jpg
+[7]: https://news.itsfoss.com/wp-content/uploads/2022/05/plex-feat-1024x576.jpg
+[8]: https://snapcraft.io/plex-desktop
+[9]: https://snapcraft.io/plex-htpc
diff --git a/published/202205/20220527 AlmaLinux Continues the Legacy of CentOS with the Release of Version 9.md b/published/202205/20220527 AlmaLinux Continues the Legacy of CentOS with the Release of Version 9.md
new file mode 100644
index 0000000000..e2515dc7e9
--- /dev/null
+++ b/published/202205/20220527 AlmaLinux Continues the Legacy of CentOS with the Release of Version 9.md
@@ -0,0 +1,81 @@
+[#]: subject: "AlmaLinux Continues the Legacy of CentOS with the Release of Version 9"
+[#]: via: "https://news.itsfoss.com/almalinux-9-release/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lkxed"
+[#]: translator: "PeterPan0106"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14644-1.html"
+
+CentOS 的继承者 AlmaLinux 9 发布
+======
+
+> AlmaLinux 9 是基于 Red Hat Enterprise Linux 9 的最新版本,添加了新的壁纸并进一步增强了性能。
+
+![almalinux][1]
+
+如果你一直在关注我们的话,应当知道 [AlmaLinux 9.0 测试版][2] 已于上月发布。
+
+AlmaLinux 是目前 [最好的 RHEL 替代版][3] 之一。其最新的稳定版是基于 RHEL 9 的,这也成为了 CentOS 的一个很好的替代品。
+
+最新的 AlmaLinux 9 支持所有主流架构,包括 Intel/AMD(x86_64)、ARM64 (aarch64)、IBM PowerPC(ppc64le)和 IBM Z(s390x)。
+
+### AlmaLinux 9.0 有哪些改变呢
+
+AlmaLinux 9.0 在这个版本中使用了 Linux 内核 5.14。它包括对云和容器开发的改进,以及对网络控制台的完善。
+
+还包括其他变化带来的性能改进。更新包括:
+
+#### 新壁纸
+
+![AlmaLinux 9][4]
+
+在 AlmaLinux 9.0 中,更新了一些新的壁纸。
+
+这些新的壁纸看起来很美观,并提供了更丰富的选择。
+
+#### Linux 内核 5.14
+
+最大的变化是升级到了 Linux 内核 5.14,它带来了更新的硬件支持,以及其他各种改进。
+
+Linux 内核 5.14 的改进详见 [这篇文章][5]。
+
+#### 更新的软件包
+
+这个版本带有新的软件包更新。其中包括 Git 2.31、PHP 8.0、Perl 5.32 和 MySQL 8.0。
+
+GCC 也被更新到最新的 GCC 11。
+
+其它更新包括 Python 3.9 和最新版的 LLVM、Rust 和 Go compilers,使应用程序的现代化更快、更容易。
+
+更多技术方面的更新详见 [官方更新日志][6]。
+
+### 下载 AlmaLinux 9.0
+
+你可以在 [官方镜像网站][7] 下载最新的镜像。在镜像站也包含了 .torrent 文件的下载选项。
+
+> **[AlmaLinux 9.0][8]**
+
+*你认为基于 RHEL 的最新版 AlmaLinux 9.0 怎么样呢?你有计划在服务器上迁移到最新的版本吗?欢迎评论。*
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/almalinux-9-release/
+
+作者:[Ankush Das][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/ankush/
+[b]: https://github.com/lkxed
+[1]: https://news.itsfoss.com/wp-content/uploads/2022/05/alma-linux-9.jpg
+[2]: https://linux.cn/article-14500-1.html
+[3]: https://itsfoss.com/rhel-based-server-distributions/
+[4]: https://news.itsfoss.com/wp-content/uploads/2022/05/alma-linux-wallpapers-9-1024x609.jpg
+[5]: https://news.itsfoss.com/kernel-5-14-release/
+[6]: https://wiki.almalinux.org/release-notes/9.0.html
+[7]: https://mirrors.almalinux.org/isos.html
+[8]: https://mirrors.almalinux.org/isos.html
diff --git a/published/202205/20220527 Tails Linux Users Warned Against Using the Tor Browser- Here-s why!.md b/published/202205/20220527 Tails Linux Users Warned Against Using the Tor Browser- Here-s why!.md
new file mode 100644
index 0000000000..f30dae7372
--- /dev/null
+++ b/published/202205/20220527 Tails Linux Users Warned Against Using the Tor Browser- Here-s why!.md
@@ -0,0 +1,72 @@
+[#]: subject: "Tails Linux Users Warned Against Using the Tor Browser: Here’s why!"
+[#]: via: "https://news.itsfoss.com/tails-tor-browser/"
+[#]: author: "Rishabh Moharir https://news.itsfoss.com/author/rishabh/"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14654-1.html"
+
+Tails 警告用户不要使用 Tor 浏览器:原因如下!
+======
+
+> Tails 5.1 将针对“可绕过 Tor 浏览器安全措施的危险漏洞”提供关键修复。以下是它的全部内容。
+
+![Tails][1]
+
+Tails 是一个专注于安全的便携式 Linux 发行版,最近,它的开发团队发布了有关其当前版本的重要公告。他们警告用户在 **Tails 5.0 或更早版本** 上使用 Tor 浏览器时,避免输入或使用任何个人或敏感信息。
+
+Tor 浏览器是 Tails 事实上的(默认)网页浏览器,它有助于在用户连接到互联网时,保护他们的在线身份。它主要被各种记者和活动家用来逃避审查。不过,普通用户也可以使用它。
+
+### 问题说明
+
+最近,有人发现了两个令人讨厌的漏洞,它们允许有害网站能够从其他网站窃取用户的信息。
+
+这些都是在 Firefox 使用的 JavaScript 引擎中发现的。
+
+但是,Tor 与此有什么关系?对于那些不知道的人来说,Tor 实际上是 Firefox 的一个复刻,因此包含许多类似的功能,如 JavaScript 引擎。
+
+具体来说,在 [Mozilla 发布的公告][2] 中,这些漏洞已被确定为 CVE-2022-1802 和 CVE-2022-1529。
+
+Tails 公告中也对此进行了说明:
+
+> “例如,在你访问恶意网站后,控制该网站的攻击者可能会在同一个 Tails 会话期间,访问你随后发送到其他网站的密码或其他敏感信息。”
+
+### 你应该停止使用 Tail 发行版吗?
+
+没有这个必要。
+
+用户会很高兴地知道,这些漏洞并不影响 Tor 的连接。这意味着,如果你不交换任何敏感信息,如密码、个人信息、信息等,你可以随意地浏览互联网。
+
+Tails 中的其他应用程序,尤其是 Thunderbird,仍然可以安全使用,因为 JavaScript 在使用时会被禁用。
+
+此外,你也可以在 Tor 浏览器中启用最高的安全级别。这是推荐的,因为(该级别下)JavaScript 引擎会被禁用。不过,请注意,这会使网站无法正常运行。
+
+换句话说,如果你知道自己在做什么的话,Tails 发行版仍然可以安全使用。
+
+### 漏洞修复即将发布
+
+好的消息是,Mozilla 已经在上游修补了这些错误,现在就等 Tails 团队发布修复程序了。
+
+至于何时发布,他们是这样说的:
+
+> 此漏洞将在 Tails 5.1(**5 月 31 日**)中修复,但我们的团队没有能力提前发布紧急版本。
+
+因此,你最好的选择是等待下周的 Tails 5.1 发布。你可以阅读 Tails 开发团队的 [官方公告][3] 以了解更多信息。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/tails-tor-browser/
+
+作者:[Rishabh Moharir][a]
+选题:[lkxed][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://news.itsfoss.com/author/rishabh/
+[b]: https://github.com/lkxed
+[1]: https://news.itsfoss.com/wp-content/uploads/2022/05/tails-5-0-privacy-issue.jpg
+[2]: https://www.mozilla.org/en-US/security/advisories/mfsa2022-19/
+[3]: https://tails.boum.org/security/prototype_pollution/index.en.html
diff --git a/published/20220519 Use this open source screen reader on Windows.md b/published/20220519 Use this open source screen reader on Windows.md
new file mode 100644
index 0000000000..a553667e53
--- /dev/null
+++ b/published/20220519 Use this open source screen reader on Windows.md
@@ -0,0 +1,67 @@
+[#]: 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: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14664-1.html"
+
+在 Windows 上使用开源屏幕阅读器 NVDA
+======
+
+
+
+> 为纪念全球无障碍意识日,让我们了解一下 NVDA 开源屏幕阅读器,以及你该如何参与其中,为所有网络用户提高无障碍性。
+
+屏幕阅读器是辅助技术软件的一个专门领域,它可以阅读并说出计算机屏幕上的内容。完全没有视力的人只是视力障碍者的一小部分,屏幕阅读器软件可以帮助所有群体。屏幕阅读器大多特定于操作系统,供有视觉障碍的人和无障碍培训师使用,以及想要测试网站或应用的无障碍访问程度的开发人员和无障碍顾问。
+
+### 如何使用 NVDA 屏幕阅读器
+
+[WebAIM 屏幕阅读器用户调查][2] 始于 2009 年,一直持续到 2021 年。在第一次调查中,最常用的屏幕阅读器是 JAWS,占 74%。它是微软 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]。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/open-source-screen-reader-windows-nvda
+
+作者:[Peter Cheer][a]
+选题:[lkxed][b]
+译者:[geekpi](https://github.com/geekpi)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://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
diff --git a/published/20220524 Collision- Linux App to Verify ISO and Other Files.md b/published/20220524 Collision- Linux App to Verify ISO and Other Files.md
new file mode 100644
index 0000000000..a60f32620a
--- /dev/null
+++ b/published/20220524 Collision- Linux App to Verify ISO and Other Files.md
@@ -0,0 +1,133 @@
+[#]: subject: "Collision: Linux App to Verify ISO and Other Files"
+[#]: via: "https://www.debugpoint.com/2022/05/collision/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lkxed"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14671-1.html"
+
+Collision:用于验证 ISO 和其他文件的 Linux 应用
+======
+
+
+
+> 本教程概述了 Collision 的功能和使用指南。它是一个基于 GUI 且易于使用的程序,可让你使用加密哈希函数验证文件。
+
+### 为什么需要验证文件?
+
+人们每天都通过互联网下载文件。但许多用户从不费心去验证他们的完整性或真实性。这意味着不知道该文件是否合法且未被任何恶意代码篡改。
+
+以作为标准安装镜像的 [Linux 发行版][1] 的 ISO 文件为例。所有流行的发行版制造商在 ISO 文件还提供哈希文件。使用该文件,你可以轻松比较下载文件的哈希值。让你可以放心你的文件是正确的并且没有以任何方式损坏。
+
+此外,如果你通过不稳定的互联网连接下载大文件,该文件可能会损坏。在这些情况下,它也有需要验证。
+
+### Collision – 功能和使用方法
+
+[Collision][2] 使用加密哈希函数来帮助你验证文件。加密哈希函数是一种流行的算法,它通过多种加密算法将文件数据生成为固定长度的数据流。最受欢迎的是 MD5、SHA-1、SHA-256 和 SHA-512。所有这些 Collision 都支持。
+
+除此之外,Collision 还提供了一个简洁的用户界面,它对每个 Linux 用户都简单易用。这是它的外观。
+
+![Collision – First Screen][3]
+
+首先,它有两个主要特点。 a、上传文件以获取校验和和或哈希值;b、将校验和与上传的文件进行比较。
+
+例如,如果你有一个简单的文件,你可以通过“打开文件”按钮上传一个文件,或“打开”按钮重新上传另一个文件。
+
+如下图所示,该文本文件具有以下各种哈希函数的校验和。现在你可以通过互联网/与任何人共享该文件,以及用于验证的校验和值。
+
+![Hash values of a test file][4]
+
+此外,如果有人篡改文件(即使是单个字节)或文件在分发过程中被破坏,那么哈希值就会完全改变。
+
+其次,如果要验证已下载文件的完整性,请点击“验证”选项卡。然后上传文件,输入你收到的上传文件的哈希值。
+
+如果匹配,你应该会看到一个绿色勾号,显示其真实性。
+
+![Collision verifies a sample file with SHA-256][5]
+
+此外,这是另一个示例,我修改了测试文件并保持大小相同。这个场景清楚地表明它对该文件无效。
+
+![Collision showing that a file is not valid][6]
+
+#### 重要说明
+
+这里值得一提的是,哈希方法不会验证文件元属性,如修改时间、修改日期等。如果有人篡改了文件并将其还原为原始内容,这种哈希方式将其称为有效文件。
+
+现在,让我们看一个验证 ISO 文件的典型示例。
+
+### 使用 Collision 验证 Ubuntu Linux 的示例 ISO 文件
+
+我相信你在使用 Linux 时通常会下载许多 ISO 文件。为了说明,我从官方 Ubuntu 下载页面下载了流行的 Ubuntu ISO 服务器镜像。
+
+![Ubuntu server ISO file and checksums][7]
+
+`SHA256SUMS` 文件带有上面的该安装程序的以下校验和值:
+
+![SHA-256 value of Ubuntu server ISO image][8]
+
+下载后,打开 Collision 应用并通过“验证”选项卡上传 ISO 文件。然后复制 SHA-256 值并将其粘贴到左侧的校验和框中。
+
+如果你已正确下载并按照步骤操作,你应该会看到该文件是真实有效的。
+
+![Ubuntu server ISO image verified][9]
+
+### 如何安装 Collision
+
+使用 Flatpak 可以轻松安装 Collision 应用。你需要为你的 Linux 发行版 [设置 Flatpak][10],并单击以下链接以安装 Collision。
+
+> **[通过 Flathub 安装 Collision][11]**
+
+安装后,你应该通过发行版的应用菜单找到它。
+
+### 有没有其他方法可以在没有任何应用的情况下验证文件?
+
+是的,所有 Linux 发行版中都有一些内置程序,你还可以使用它们来使用终端验证文件及其完整性。
+
+下面的终端程序可用于确定任何文件的哈希值。它们默认安装在所有发行版中,你甚至可以将它们用于你的 shell 脚本以实现自动化。
+
+```
+md5sum <文件名>
+```
+
+```
+sha1sum <文件名>
+```
+
+```
+sha256sum <文件名>
+```
+
+使用上述程序,你可以找出哈希值。但是你需要比较它们以手动验证。
+
+![Verify files via command-line utilities][12]
+
+### 结束语
+
+我希望本指南可以帮助你使用 Collision GTK 应用验证你的文件。它使用起来很简单。此外,你可以在终端中使用命令行方法来验证您想要的任何文件。尽可能始终检查文件完整性总是应该的。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/05/collision/
+
+作者:[Arindam][a]
+选题:[lkxed][b]
+译者:[geekpi](https://github.com/geekpi)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lkxed
+[1]: https://www.debugpoint.com/category/distributions
+[2]: https://collision.geopjr.dev/
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/05/Collision-First-Screen.jpg
+[4]: https://www.debugpoint.com/wp-content/uploads/2022/05/Hash-values-of-a-test-file.jpg
+[5]: https://www.debugpoint.com/wp-content/uploads/2022/05/Collision-verifies-a-sample-file-with-SHA-256.jpg
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/05/Collision-showing-that-a-file-is-not-valid.jpg
+[7]: https://www.debugpoint.com/wp-content/uploads/2022/05/Ubuntu-server-ISO-file-and-checksums.jpg
+[8]: https://www.debugpoint.com/wp-content/uploads/2022/05/SHA-256-valud-of-Ubuntu-server-ISO-image.jpg
+[9]: https://www.debugpoint.com/wp-content/uploads/2022/05/Ubuntu-server-ISO-image-verified.jpg
+[10]: https://flatpak.org/setup/
+[11]: https://dl.flathub.org/repo/appstream/dev.geopjr.Collision.flatpakref
+[12]: https://www.debugpoint.com/wp-content/uploads/2022/05/Verify-files-via-command-line-utilities.jpg
diff --git a/published/20220524 How to Install KVM on Ubuntu 22.04 -Jammy Jellyfish-.md b/published/20220524 How to Install KVM on Ubuntu 22.04 -Jammy Jellyfish-.md
new file mode 100644
index 0000000000..c60fbf2e57
--- /dev/null
+++ b/published/20220524 How to Install KVM on Ubuntu 22.04 -Jammy Jellyfish-.md
@@ -0,0 +1,264 @@
+[#]: subject: "How to Install KVM on Ubuntu 22.04 (Jammy Jellyfish)"
+[#]: via: "https://www.linuxtechi.com/how-to-install-kvm-on-ubuntu-22-04/"
+[#]: author: "James Kiarie https://www.linuxtechi.com/author/james/"
+[#]: collector: "lkxed"
+[#]: translator: "turbokernel"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14661-1.html"
+
+Ubuntu 22.04 之 KVM 安装手札
+======
+
+
+
+**KVM** 是 基于内核的虚拟机 的首字母缩写,这是一项集成在内核中的开源虚拟化技术。它是一种类型一(裸机)的管理程序,可以使内核能够作为一个裸机管理程序。
+
+在 KVM 之上可以运行 Windows 和 Liunx 虚拟机。每个虚拟机都独立于其它虚拟机和底层操作系统(宿主机系统),并拥有自己的 CPU、内存、网络接口、存储设备等计算资源。
+
+本文将介绍在 Ubuntu 22.04 LTS(Jammy Jellyfish)中如何安装 KVM 。在文末,我们也将演示如何在安装 KVM 完成之后创建一台虚拟机。
+
+### 1、更新 Ubuntu 22.04
+
+在一切开始前,打开终端并通过如下命令更新本地的软件包索引:
+
+```
+$ sudo apt update
+```
+
+### 2、检查虚拟化是否开启
+
+在进一步行动之前,首先需要检查你的 CPU 是否支持 KVM 虚拟化,确保你系统中有 VT-x( vmx)英特尔处理器或 AMD-V(svm)处理器。
+
+你可以通过运行如下命令,如果输出值大于 0,那么虚拟化被启用。否则,虚拟化被禁用,你需要启用它:
+
+```
+$ egrep -c '(vmx|svm)' /proc/cpuinfo
+```
+
+![SVM-VMX-Flags-Cpuinfo-linux][1]
+
+根据上方命令输出,你可以推断出虚拟化功能已经启用,因为输出结果大于 0。如果虚拟化功能没有启用,请确保在系统的 BIOS 设置中启用虚拟化功能。
+
+另外,你可以通过如下命令判断 KVM 虚拟化是否已经在运行:
+
+```
+$ kvm-ok
+```
+
+运行该命令之前,请确保你已经安装了 `cpu-checker` 软件包,否则将提示未找到该命令的报错。
+
+直接就在下面,你会得到如何解决这个问题的指示,那就是安装 `cpu-checker` 包。
+
+![KVM-OK-Command-Not-Found-Ubuntu][2]
+
+随后,通过如下命令安装 `cpu-checker` 软件包:
+
+```
+$ sudo apt install -y cpu-checker
+```
+
+接着再运行 `kvm-ok` 命令,如果 KVM 已经启动,你将看到如下输出:
+
+```
+$ kvm-ok
+```
+
+![KVM-OK-Command-Output][3]
+
+### 3、在 Ubuntu 22.04 上安装 KVM
+
+随后,通过如下命令在 Ubuntu 22.04 中安装 KVM 以及其他相关虚拟化软件包:
+
+```
+$ sudo apt install -y qemu-kvm virt-manager libvirt-daemon-system virtinst libvirt-clients bridge-utils
+```
+
+以下为你解释刚刚安装了哪些软件包:
+
+* `qemu-kvm` – 一个提供硬件仿真的开源仿真器和虚拟化包
+* `virt-manager` – 一款通过 libvirt 守护进程,基于 QT 的图形界面的虚拟机管理工具
+* `libvirt-daemon-system` – 为运行 libvirt 进程提供必要配置文件的工具
+* `virtinst` – 一套为置备和修改虚拟机提供的命令行工具
+* `libvirt-clients` – 一组客户端的库和API,用于从命令行管理和控制虚拟机和管理程序
+* `bridge-utils` – 一套用于创建和管理桥接设备的工具
+
+### 4、启用虚拟化守护进程(libvirtd)
+
+在所有软件包安装完毕之后,通过如下命令启用并启动 libvirt 守护进程:
+
+```
+$ sudo systemctl enable --now libvirtd
+$ sudo systemctl start libvirtd
+```
+
+你可以通过如下命令验证该虚拟化守护进程是否已经运行:
+
+```
+$ sudo systemctl status libvirtd
+```
+
+![Libvirtd-Status-Ubuntu-Linux][4]
+
+另外,请将当前登录用户加入 `kvm` 和 `libvirt` 用户组,以便能够创建和管理虚拟机。
+
+```
+$ sudo usermod -aG kvm $USER
+$ sudo usermod -aG libvirt $USER
+```
+
+`$USER` 环境变量引用的即为当前登录的用户名。你需要重新登录才能使得配置生效。
+
+### 5、创建网桥(br0)
+
+如果你打算从本机(Ubuntu 22.04)之外访问 KVM 虚拟机,你必须将虚拟机的网卡映射至网桥。`virbr0` 网桥是 KVM 安装完成后自动创建的,仅做测试用途。
+
+你可以通过如下内容在 `/etc/netplan` 目录下创建文件 `01-netcfg.yaml` 来新建网桥:
+
+```
+$ sudo vi /etc/netplan/01-netcfg.yaml
+network:
+ ethernets:
+ enp0s3:
+ dhcp4: false
+ dhcp6: false
+ # add configuration for bridge interface
+ bridges:
+ br0:
+ interfaces: [enp0s3]
+ dhcp4: false
+ addresses: [192.168.1.162/24]
+ macaddress: 08:00:27:4b:1d:45
+ routes:
+ - to: default
+ via: 192.168.1.1
+ metric: 100
+ nameservers:
+ addresses: [4.2.2.2]
+ parameters:
+ stp: false
+ dhcp6: false
+ version: 2
+```
+
+保存并退出文件。
+
+注:上述文件的配置是我环境中的,请根据你实际环境替换 IP 地址、网口名称以及 MAC 地址。
+
+你可以通过运行 `netplan apply` 命令应用上述变更。
+
+```
+$ sudo netplan apply
+```
+
+你可以通过如下 `ip` 命令,验证网桥 `br0`:
+
+```
+$ ip add show
+```
+
+![Network-Bridge-br0-ubuntu-linux][5]
+
+### 6、启动 KVM 虚拟机管理器
+
+当 KVM 安装完成后,你可以使用图形管理工具 `virt-manager` 创建虚拟机。你可以在 GNOME 搜索工具中搜索 `Virtual Machine Manager` 以启动。
+
+点击搜索出来的图标即可:
+
+![Access-Virtual-Machine-Manager-Ubuntu-Linux][6]
+
+虚拟机管理器界面如下所示:
+
+![Virtual-Machine-Manager-Interface-Ubuntu-Linux][7]
+
+你可以点击 “文件” 并选择 “新建虚拟机”。你也可以点击下图所示的图标:
+
+![New-Virtual-Machine-Icon-Virt-Manager][8]
+
+在弹出的虚拟机安装向导将看到如下四个选项:
+
+* 本地安装介质(ISO 镜像或 CDROM)
+* 网络安装(HTTP、HTTPS 和 FTP)
+* 导入现有磁盘镜像
+* 手动安装
+
+本文使用已下载的 ISO 镜像,你可以选择自己的 ISO 镜像,选择第一个选项,并点击 “向前”。
+
+![Local-Install-Media-ISO-Virt-Manager][9]
+
+下一步中,点击 “浏览” 选择 ISO 镜像位置。
+
+![Browse-ISO-File-Virt-Manager-Ubuntu-Linux][10]
+
+在下一个窗口中点击 “浏览本地” 选取本机中 ISO 镜像。
+
+![Browse-Local-ISO-Virt-Manager][11]
+
+如下所示,我们选择了 Debian 11 ISO 镜像,随后点击 “打开”。
+
+![Choose-ISO-File-Virt-Manager][12]
+
+当 ISO 镜像选择后,点击 “向前” 进入下一步。
+
+![Forward-after-browsing-iso-file-virt-manager][13]
+
+接着定义虚拟机所用内存大小以及 CPU 核心数,并点击 “向前” 。
+
+![Virtual-Machine-RAM-CPU-Virt-Manager][14]
+
+下一步中,输入虚拟机磁盘空间,并点击 “向前” 继续。
+
+![Storage-for-Virtual-Machine-KVM-Virt-Manager][15]
+
+如你需要将虚拟机网卡连接至网桥,点击 “选择网络” 并选择 `br0` 网桥。
+
+![Network-Selection-KVM-Virtual-Machine-Virt-Manager][16]
+
+最后,点击 “完成” 按钮结束设置虚拟机。
+
+![Choose-Finish-to-OS-Installation-KVM-VM][17]
+
+稍等片刻,虚拟机的创建过程将开始。
+
+![Creating-Domain-Virtual-Machine-Virt-Manager][18]
+
+当创建结束时,虚拟机将开机并进入系统安装界面。如下是 Debian 11 的安装选项。在这里你可以根据需要进行系统安装。
+
+![Virtual-Machine-Console-Virt-Manager][19]
+
+### 小结
+
+至此,本文向你演示了如何在 Ubuntu 22.04 上 安装 KVM 虚拟化引擎。你的反馈对我们至关重要。
+
+--------------------------------------------------------------------------------
+
+via: https://www.linuxtechi.com/how-to-install-kvm-on-ubuntu-22-04/
+
+作者:[James Kiarie][a]
+选题:[lkxed][b]
+译者:[turbokernel](https://github.com/turbokernel)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.linuxtechi.com/author/james/
+[b]: https://github.com/lkxed
+[1]: https://www.linuxtechi.com/wp-content/uploads/2022/05/SVM-VMX-Flags-Cpuinfo-linux.png
+[2]: https://www.linuxtechi.com/wp-content/uploads/2022/05/KVM-OK-Command-Not-Found-Ubuntu.png
+[3]: https://www.linuxtechi.com/wp-content/uploads/2022/05/KVM-OK-Command-Output.png
+[4]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Libvirtd-Status-Ubuntu-Linux.png
+[5]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Network-Bridge-br0-ubuntu-linux.png
+[6]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Access-Virtual-Machine-Manager-Ubuntu-Linux.png
+[7]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Virtual-Machine-Manager-Interface-Ubuntu-Linux.png
+[8]: https://www.linuxtechi.com/wp-content/uploads/2022/05/New-Virtual-Machine-Icon-Virt-Manager.png
+[9]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Local-Install-Media-ISO-Virt-Manager.png
+[10]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Browse-ISO-File-Virt-Manager-Ubuntu-Linux.png
+[11]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Browse-Local-ISO-Virt-Manager.png
+[12]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Choose-ISO-File-Virt-Manager.png
+[13]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Forward-after-browsing-iso-file-virt-manager.png
+[14]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Virtual-Machine-RAM-CPU-Virt-Manager.png
+[15]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Storage-for-Virtual-Machine-KVM-Virt-Manager.png
+[16]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Network-Selection-KVM-Virtual-Machine-Virt-Manager.png
+[17]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Choose-Finish-to-OS-Installation-KVM-VM.png
+[18]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Creating-Domain-Virtual-Machine-Virt-Manager.png
+[19]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Virtual-Machine-Console-Virt-Manager.png
diff --git a/published/20220525 Package is -set to manually installed-- What does it Mean-.md b/published/20220525 Package is -set to manually installed-- What does it Mean-.md
new file mode 100644
index 0000000000..127e111531
--- /dev/null
+++ b/published/20220525 Package is -set to manually installed-- What does it Mean-.md
@@ -0,0 +1,100 @@
+[#]: subject: "Package is “set to manually installed”? What does it Mean?"
+[#]: via: "https://itsfoss.com/package-set-manually-installed/"
+[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
+[#]: collector: "lkxed"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14675-1.html"
+
+软件包 “被标记为手动安装”?这是什么意思?
+======
+
+
+
+如果你使用 `apt` 命令在终端中安装软件包,你将看到各种输出。
+
+如果你注意并查看输出,有时你会注意到一条消息:
+
+```
+package_name set to manually installed
+```
+
+你有没有想过这条消息是什么意思,为什么你没有在所有包上看到它?让我在本篇中分享一些细节。
+
+### 理解 “软件包被标记为手动安装”
+
+当你尝试安装已安装的库或开发包时,你会看到此消息。此依赖包是与另一个包一起自动安装的。如果删除了主包,则使用 `apt autoremove` 命令删除依赖包。
+
+但是由于你试图显式安装依赖包,你的 Ubuntu 系统认为你需要这个包独立于主包。因此,该软件包被标记为手动安装,因此不会自动删除。
+
+不是很清楚,对吧?以 [在 Ubuntu 上安装 VLC][1] 为例。
+
+由于主 VLC 包依赖于许多其他包,因此这些包会自动安装。
+
+![installing vlc with apt ubuntu][2]
+
+如果你检查名称中包含 `vlc` 的 [已安装软件包列表][3],你会看到除了 VLC,其余都标记为“自动”。这表明这些软件包是(跟着 vlc)自动安装的,当 VLC 被卸载时,它们将使用 `apt autoremove` 命令自动删除。
+
+![list installed packages vlc ubuntu][4]
+
+现在假设你出于某种原因考虑安装 `vlc-plugin-base`。如果你在其上运行 `apt install` 命令,系统会告诉你该软件包已安装。同时,它将标记从自动更改为手动,因为系统认为在尝试手动安装表明你明确需要此 `vlc-plugin-base`。
+
+![package set manually][5]
+
+可以看到它的状态已经从 `[installed,automatic]` 变成了 `[installed]`。
+
+![listing installed packages with vlc][6]
+
+现在,让我删除 VLC 并运行 `autoremove` 命令。你可以看到 `vlc-plugin-base` 不在要删除的软件包列表中。
+
+![autoremove vlc ubuntu][7]
+
+再次检查已安装软件包的列表。`vlc-plugin-base` 仍然安装在系统上。
+
+![listing installed packages after removing vlc][8]
+
+你可以在这里看到另外两个与 VLC 相关的包。这些是 `vlc-plugin-base` 包的依赖项,这就是为什么它们也存在于系统上但标记为 `automatic` 的原因。
+
+我相信现在有了这些例子,事情就更清楚了。让我给你一个额外的技巧。
+
+### 将包重置为自动
+
+如果包的状态从自动更改为手动,你可以通过以下方式将其设置回自动:
+
+```
+sudo apt-mark auto package_name
+```
+
+![set package to automatic][9]
+
+### 结论
+
+这不是一个重大错误,也不会阻止你在系统中进行工作。但是,了解这些小事会增加你的知识。
+
+**好奇心可能会害死猫,但它会让企鹅变得更聪明**。这是为这篇原本枯燥的文章增添幽默感的原始引述 : )
+
+如果你想阅读更多这样的文章,这些文章可能看起来微不足道,但可以帮助你更好地了解您的 Linux 系统,请告诉我。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/package-set-manually-installed/
+
+作者:[Abhishek Prakash][a]
+选题:[lkxed][b]
+译者:[geekpi](https://github.com/geekpi)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://itsfoss.com/author/abhishek/
+[b]: https://github.com/lkxed
+[1]: https://itsfoss.com/install-latest-vlc/
+[2]: https://itsfoss.com/wp-content/uploads/2022/05/installing-vlc-with-apt-ubuntu-800x489.png
+[3]: https://itsfoss.com/list-installed-packages-ubuntu/
+[4]: https://itsfoss.com/wp-content/uploads/2022/05/list-installed-packages-vlc-ubuntu-800x477.png
+[5]: https://itsfoss.com/wp-content/uploads/2022/05/package-set-manually.png
+[6]: https://itsfoss.com/wp-content/uploads/2022/05/listing-installed-packages-with-vlc.png
+[7]: https://itsfoss.com/wp-content/uploads/2022/05/autoremove-vlc-ubuntu.png
+[8]: https://itsfoss.com/wp-content/uploads/2022/05/listing-installed-packages-after-removing-vlc.png
+[9]: https://itsfoss.com/wp-content/uploads/2022/05/set-package-to-automatic.png
diff --git a/published/20220527 TypeScript Based Headless CMS -Payload- Becomes Open Source.md b/published/20220527 TypeScript Based Headless CMS -Payload- Becomes Open Source.md
new file mode 100644
index 0000000000..6e41f831e1
--- /dev/null
+++ b/published/20220527 TypeScript Based Headless CMS -Payload- Becomes Open Source.md
@@ -0,0 +1,80 @@
+[#]: subject: "TypeScript Based Headless CMS ‘Payload’ Becomes Open Source"
+[#]: via: "https://news.itsfoss.com/payload-open-source/"
+[#]: author: "Jacob Crume https://news.itsfoss.com/author/jacob/"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14660-1.html"
+
+基于 TypeScript 的无头内容管理系统 “Payload” 现已开源
+======
+
+> 开源的无头内容管理系统(CMS)列表中添加了一个新选项。它会是一个更好的无头 WordPress 替代品吗?
+
+![Payload][1]
+
+自从一年多前发布首个测试版以来,作为无头内容管理系统(CMS),Payload 已经逐渐在 Web 开发社区中给人们留下了深刻印象。先做一些背景介绍,Payload 是专门为更简单地开发网站、Web 应用或原生应用而量身定制的内容管理系统。
+
+最近,他们决定完全开源,现在,它已跻身 [可用的最佳开源内容管理系统][2] 之一。
+
+然而,这也带来了一些问题:他们会采用怎么样的商业模式?Payload 内容管理系统的计划是什么?下面,就让我们简要地看一下吧!
+
+### Payload 为什么要开源?
+
+自 2021 年首次发布以来,Payload 已经收到了来自开源社区的许多贡献。正如 Payload 在他们 [最近的公告][3] 中所说,开源是一个重要的决定,它能够使项目能够达到的更高的高度,这是闭门造车做不到的。
+
+![][4]
+
+此外,这种开放性通常会增加开发者社区的信任。这种信任也会延伸到商业,自然而然地转而成为开发者最支持、最信任的平台。
+
+因此,Payload 正在切换到 MIT 许可证。这将允许任何人免费且不受限制地修改、分发和使用 Payload。
+
+然而,Payload 仍然需要资金流入才能持续运营。那么,这就引出了一个问题,Payload 将如何盈利呢?
+
+### Payload 将如何盈利?
+
+与往常一样,Payload 需要一些财务支持才能维持运营。团队拿出了一个由两部分组成的计划,该计划既要为用户提供更多 以便利为中心 的功能,又要为 自托管 客户提供难以置信的灵活性。
+
+![][5]
+
+#### 企业许可证
+
+此选项与其他开源 CMS 的软件服务极为相似。这些许可证将提供更高级的 SSO 选项,并为开发者保证 Payload 核心团队的响应时间。
+
+这些许可证应该对大公司有吸引力,尤其是那些需要最大程度可靠性的公司。
+
+#### 云主机
+
+这个选项非常有吸引力,因为它结合了多种服务来创造最方便的体验。尽管传统托管仍然相当容易,但只要你为 Node 应用程序添加数据库、持久文件存储和其他基础设施,你就会面对四五个不同的服务,而这些服务都需要无缝协同工作。
+
+应该注意的是,这不是必需的,Payload 仍然鼓励用户托管他们的实例。这项服务只是消除了与托管相关的大量费用和挑战而已。
+
+截至目前,事情还没有敲定。但是,你可以关注 [GitHub][6] 上的讨论来跟踪事情的进展。
+
+### 总结
+
+作为一个新兴的 CMS 选项,很高兴看到 Payload 迈出了这一步,成为 WordPress 和其他选项的流行替代品。此外,在我看来,Payload 团队对他们的新业务模式充满信心,或许这预示着一个光明的未来(希望如此)。
+
+> **[Payload 内容管理系统][7]**
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/payload-open-source/
+
+作者:[Jacob Crume][a]
+选题:[lkxed][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://news.itsfoss.com/author/jacob/
+[b]: https://github.com/lkxed
+[1]: https://news.itsfoss.com/wp-content/uploads/2022/05/payload-opensource.jpg
+[2]: https://itsfoss.com/open-source-cms/
+[3]: https://payloadcms.com/blog/open-source
+[4]: https://news.itsfoss.com/wp-content/uploads/2022/05/payloadcms-demo.png
+[5]: https://news.itsfoss.com/wp-content/uploads/2022/05/payload-free-opensource-1024x576.jpg
+[6]: https://github.com/payloadcms/payload
+[7]: https://payloadcms.com/
diff --git a/published/20220529 Compile GNOME Shell and Apps From Source [Beginner-s Guide].md b/published/20220529 Compile GNOME Shell and Apps From Source [Beginner-s Guide].md
new file mode 100644
index 0000000000..5620f379f6
--- /dev/null
+++ b/published/20220529 Compile GNOME Shell and Apps From Source [Beginner-s Guide].md
@@ -0,0 +1,161 @@
+[#]: subject: "Compile GNOME Shell and Apps From Source [Beginner’s Guide]"
+[#]: via: "https://www.debugpoint.com/2022/05/compile-gnome-source/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lkxed"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14662-1.html"
+
+如何从源码编译 GNOME Shell 和应用
+======
+
+
+
+> 这是一篇如何从源码编译 GNOME 的快速指南,包括 Shell、mutter 和一些原生应用。
+
+在编译之前,你需要确保一些事情,因为以下编译直接来自 Gitlab 的主分支,其中包含一些开发包。
+
+通常,你可以选择在任何 Linux 发行版中编译。但是我建议使用 Fedora Rawhide(Fedora 的开发分支,用于将来的发布)。
+
+另外,请勿在稳定系统中尝试此操作。因为操作可能出错,所以你可能最终得到损坏的系统。
+
+总而言之,你需要以下内容来从源码编译 GNOME。
+
+* 测试环境([虚拟机][1] 或测试系统)。
+* Fedora Rawhide 发行版(推荐,[从此处下载][2])。
+* 确保你的发行版是最新的。
+* 你已登录 X.org 会话。
+
+我不建议你在 Wayland 会话中进行编译,因为你会遇到问题。
+
+### 从源码编译 GNOME
+
+GNOME 桌面是一个基于其功能的软件包集合。Linux 发行版的桌面组件工作于窗口管理器和 shell 之下。
+
+因此,对于 GNOME,我将首先编译 mutter – 它是 GNOME Shell 的窗口管理器。然后进行 GNOME Shell 的编译。最后,我将编译一些原生应用。
+
+我将使用 meson 构建系统进行编译。meson 是一个漂亮的构建系统,快速且用户友好。
+
+#### 编译 mutter
+
+打开终端并安装 GNOME Shell 和 mutter 所需的软件包。
+
+```
+sudo dnf build-dep mutter gnome-shell
+```
+
+在主目录(或你想要的任何地方)中创建演示目录。
+
+```
+cd ~
+mkdir demo
+cd demo
+```
+
+从 Gitlab 克隆 mutter 的主分支。
+
+```
+git clone https://gitlab.gnome.org/GNOME/mutter
+```
+
+进入克隆目录,然后使用以下 `meson` 命令来准备构建文件。默认情况下,meson 使用 `/usr/local` 用于构建文件。但是,你也可以使用前缀开关将输出重定向到特定文件夹(如下所示)。
+
+```
+cd mutter
+meson _build --prefix=/usr
+```
+
+![Compile Mutter for GNOME][3]
+
+使用以下命令在构建完成时,将 mutter 安装在到系统中。
+
+```
+sudo ninja install -C _build
+```
+
+#### 编译 GNOME Shell
+
+GNOME Shell 和其他软件包的编译方法类似。首先,从 GitLab 克隆 GNOME Shell 主仓库,然后进行编译和安装。你可以按照下面的命令依次进行。
+
+在 GNOME Shell 中,你需要两个依赖项。它们是 [asciidoc][4] 和 [sassc][5] 。请在构建 GNOME Shell 之前安装它们。
+
+```
+sudo dnf install asciidoc
+sudo dnf install sassc
+```
+
+安装完这些依赖项后,按照下面的命令来构建和安装 GNOME Shell。在运行这个命令之前,请确保你回到 `demo` 文件夹(我在第一步创建的)。
+
+```
+git clone https://gitlab.gnome.org/GNOME/gnome-shellcd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build
+```
+
+### 运行 GNOME Shell
+
+编译完成后,你可以尝试重新启动 GNOME Shell 来查看来自主分支的变化。
+
+在重启之前,正如我之前提到的,确保你处于 X.Org 会话中。按 `ALT+F2` 并输入 `r`。然后按回车键。这个命令将重启 GNOME Shell。
+
+![Restart GNOME Shell (X11)][6]
+
+恭喜你! 你已经成功地编译了 GNOME Shell 和 Mutter。
+
+现在,是时候编译一些 GNOME 原生应用了。
+
+### 编译 GNOME 原生应用
+
+这些步骤对于 GNOME 或任何应用的所有源码都是一样的。你需要改变仓库的名字。因此,这里有一些编译必要的 GNOME 原生应用的命令示例。
+
+#### Files(Nautilus)
+
+```
+git clone https://gitlab.gnome.org/GNOME/nautilus/cd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build
+```
+
+#### GNOME 软件商店
+
+```
+git clone https://gitlab.gnome.org/GNOME/gnome-software/cd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build
+```
+
+#### GNOME 控制中心
+
+```
+git clone https://gitlab.gnome.org/GNOME/gnome-control-center/cd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build
+```
+
+### FAQ
+
+1. 使用上述步骤,你可以编译任何源码分支。不仅仅是 GNOME。
+2. GitLab 服务器有时很慢,克隆一个仓库可能需要较长的时间。如果 `git clone` 失败,我建议你再试一次。
+
+### 结束语
+
+我希望这个小小的高级教程能够帮助你在新的 GNOME 功能出现在 GNOME 每日构建系统之前尝试它。既然你编译了,你也可以为测试新的 GNOME 功能做出贡献,并在 GitLab 问题页面上报告任何特定包的 bug 或问题。
+
+这篇文章是开源应用编译系列的第一篇文章。请继续关注更多开源应用的编译文章。
+
+另外,请让我在下面的评论栏中知道你的评论、建议,或者你在使用这些说明时遇到的任何错误。
+
+干杯。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/05/compile-gnome-source/
+
+作者:[Arindam][a]
+选题:[lkxed][b]
+译者:[geekpi](https://github.com/geekpi)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lkxed
+[1]: https://www.debugpoint.com/tag/virtual-machine
+[2]: https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Workstation/x86_64/iso/
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/05/Compile-Mutter-for-GNOME.jpg
+[4]: https://asciidoc.org/
+[5]: https://github.com/sass/sassc
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/05/Restart-GNOME-Shell-X11.jpg
diff --git a/published/20220601 GNOME Shell for Mobile- A Promising Start with Huge Expectations [Opinion].md b/published/20220601 GNOME Shell for Mobile- A Promising Start with Huge Expectations [Opinion].md
new file mode 100644
index 0000000000..878c857eba
--- /dev/null
+++ b/published/20220601 GNOME Shell for Mobile- A Promising Start with Huge Expectations [Opinion].md
@@ -0,0 +1,93 @@
+[#]: subject: "GNOME Shell for Mobile: A Promising Start with Huge Expectations [Opinion]"
+[#]: via: "https://www.debugpoint.com/2022/06/gnome-shell-mobile-announcement/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lkxed"
+[#]: translator: "wxy"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14672-1.html"
+
+移动版 GNOME Shell:希望之始,期望满满
+======
+
+![GNOME Shell 在一台 Pinephone 原型机上运行][3]
+
+> GNOME 开发人员在最近的一篇博文中提出了将 GNOME Shell 完全移植到手机上的想法。下面是我对这个项目的一些看法。
+
+### 移动版 GNOME Shell
+
+作为一个桌面环境,GNOME 在过去的十年中发展成为了 [GNOME 40][1]。GNOME 40 是一个重要的版本,它以一种现代的方式改变了完整的用户界面设计。
+
+看着 GNOME 40 的设计方式,你可能会觉得 Shell 和它的底层技术已经为小屏幕做好了准备。手势驱动的工作区、图标网格和停靠区 —— 在某种程度上感觉更接近于像安卓这样的移动操作系统,而不是桌面环境。
+
+此外,系统托盘、日历、通知和原生的应用程序,可以有效地在较小尺寸的设备上工作。得益于 GTK4 和 libadwaita,其设计是响应式的,应用程序和控件的外观与移动平台很匹配。
+
+在 GNOME 40 之后,GNOME 开发者为较小尺寸的设备(如平板电脑和手机)设计了几个 GNOME Shell 的概念验证。
+
+#### 为什么是现在?
+
+任何项目的开发和研究工作都要花费时间和金钱。虽然有来自主要科技公司对 GNOME 的捐赠,但这次有一个 “原型基金” 帮助该团队继续进行这项努力。[原型基金][2] 是德国教育部(BMBF)支持公共利益软件的资助项目。
+
+#### 包括什么?
+
+设计一个完整的移动用户界面,并将其与移动操作系统整合是一个非常复杂的项目。它需要一个精心设计的愿景来支持成千上万的移动硬件和用户支持。更不用说,用户在移动设备上的隐私和安全问题了。
+
+因此,有了这个基金,团队可以集中精力进行概念验证,以满足 GNOME Shell 中一些基本的用户互动。
+
+* 启动器
+* 应用程序网格
+* 轻扫、手势和导航
+* 用手机键盘搜索
+* 检测屏幕大小和支持屏幕旋转
+* 工作空间和多任务
+* 设置
+* 屏幕键盘
+
+![GNOME Shell 移动版模拟图][4]
+
+始终要记住的是,移动体验远不止用户界面这么简单。另外,GNOME 本身并不是一个操作系统。它由底层的稳定的操作系统组成,它提供了非常需要的隐私和安全。另外,“应用商店”的概念也是如此。手机制造商需要与 GNOME 开发者合作,让他们的产品采用这个概念。
+
+#### 进展如何?
+
+在写这篇文章时,团队给我们快速演示了取得的进展。在下面的视频中可以看到:
+
+![][5]
+
+复杂的任务是识别触摸屏手机中的各种手势。例如,你可能会使用长触摸、短触摸、双指轻扫和拖动,以及许多只有在小尺寸设备中才可行的可能性。这需要在各自的 GNOME Shell 组件中推倒重构。
+
+而完全在现有的 GNOME Shell 基础上开发它们是很有挑战性的工作。
+
+此外,该团队使用著名的 Pinephone Pro 进行开发和测试。Pinephone 已经是一个商业产品,装有 “友商” KDE Plasma 手机和其他 Linux 操作系统。
+
+![][6]
+
+### 结语
+
+如果一切按计划进行,我们可能在一个完整的开源手机中获得原生的 GNOME 体验。而你可以重新拥有你的隐私!
+
+另外,我不确定 Phosh(它也是基于 GNOME 的)会发生什么。虽然 Phosh 是由 Purism 开发和管理的,但看看 GNOME Shell 在移动设备上的努力和 PHosh 在未来一段日子的发展方向将是很有趣的。
+
+那么,你对这个项目的前景怎么看?请在下面的评论栏里告诉我。
+
+*图片和视频来源:GNOME 开发者 [博客][7]*
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/06/gnome-shell-mobile-announcement/
+
+作者:[Arindam][a]
+选题:[lkxed][b]
+译者:[wxy](https://github.com/wxy)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lkxed
+[1]: https://www.debugpoint.com/tag/gnome-40
+[2]: http://www.prototypefund.de
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/06/GNOME-Shell-Running-on-a-prototype-Pinephone.jpg
+[4]: https://www.debugpoint.com/wp-content/uploads/2022/06/GNOME-Shell-Mobile-mock-up.jpg
+[5]: https://www.debugpoint.com/wp-content/uploads/2022/06/phone.webm
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/06/tablet.webm
+[7]: https://blogs.gnome.org/shell-dev/2022/05/30/towards-gnome-shell-on-mobile/
diff --git a/published/20220601 Linux Lite 6.0 Ditches Firefox to Favor Google Chrome as the Default Browser.md b/published/20220601 Linux Lite 6.0 Ditches Firefox to Favor Google Chrome as the Default Browser.md
new file mode 100644
index 0000000000..85c9e25716
--- /dev/null
+++ b/published/20220601 Linux Lite 6.0 Ditches Firefox to Favor Google Chrome as the Default Browser.md
@@ -0,0 +1,134 @@
+[#]: subject: "Linux Lite 6.0 Ditches Firefox to Favor Google Chrome as the Default Browser"
+[#]: via: "https://news.itsfoss.com/linux-lite-6-0-release/"
+[#]: author: "Jacob Crume https://news.itsfoss.com/author/jacob/"
+[#]: collector: "lkxed"
+[#]: translator: "wxy"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14669-1.html"
+
+Linux Lite 6.0 发布:弃用 Firefox,默认浏览器使用 Chrome
+======
+
+> Linux Lite 6.0 是一个有趣的版本,有一个新的默认浏览器,改进了无障碍性、新的主题、新的系统监视器等等改进。
+
+![linux lite][1]
+
+Linux Lite,是 [最好的类 Windows 发行版][2] 之一,刚刚发布了它的最新版本 6.0。
+
+Linux Lite 6.0 基于 [Ubuntu 22.04 LTS][3],内置了 [Linux 内核 5.15 LTS][4]。
+
+这次升级包含了相当多的令人兴奋的新功能,包括一个新的窗口主题和无障碍技术。
+
+让我们深入了解一下新的内容!
+
+### Linux Lite 6.0 概述
+
+Linux Lite 6.0 包括许多变化,包括:
+
+* 更新了软件
+* 新的窗口主题
+* 新的屏幕键盘
+* 屏幕阅读器
+* 屏幕放大镜
+* Chrome 取代 Firefox 成为默认浏览器
+* 新的 GRUB 菜单
+
+#### 无障碍性的改进
+
+![Linux Lite 6.0][5]
+
+Linux Lite 通过这一改变已经步入了大联盟。无障碍性,在历史上一直是 GNOME 特有的优势,它现在有了很大的改进。这主要体现在三个不同的工具上:一个屏幕键盘,一个屏幕阅读器(Orca),和一个屏幕放大镜。
+
+屏幕键盘对于许多触摸屏用户和没有键盘的用户来说是相当有用的。另一方面,屏幕阅读器对于视障用户来说将是完美的。
+
+![Linux Lite 6.0][6]
+
+最后一项无障碍改进屏幕放大镜,也是针对与屏幕阅读器相同的受众。然而,它与传统的桌面理念相当吻合,所以众多用户可能更青睐它,而不是屏幕阅读器。
+
+这些无障碍性的改进有助于 Linux Lite 6.0 成为一个主流的选择。
+
+#### 更新的软件
+
+与几乎所有的发行版升级一样,Linux Lite 6.0 包括更新的软件。最值得注意的是最新的 LibreOffice 稳定版 7.2.6。
+
+其他更新包括 VLC 3.0.16、Thunderbird 91.7、Chrome 100、GIMP 2.10.30 等等。
+
+虽然本身不一定是大规模的升级,但它表明了所包含的 LibreOffice 版本的重大变化。
+
+以前,由于提供了更多的稳定性,Linux Lite 停留在更多老版本上。然而,Linux Lite 的开发者现在觉得使用最新的稳定版本也很放心,因为测试新 LibreOffice 版本的人比以往任何时候都多。
+
+#### 新的窗口主题
+
+![Linux Lite 6.0][7]
+
+Linux Lite 6.0 引入了一个新的窗口主题,叫做 “Materia”。那些主题社区的人可能会对它相当熟悉,因为它已经被移植到几乎所有的平台。这些平台包括 GTK 2、3 和 4、GNOME Shell、Budgie、Cinnamon、MATE、Unity、Xfce、LightDM、GDM,甚至是 Chrome 浏览器。
+
+改用 Materia 应该会让 ChromeOS 用户感觉界面很熟悉,因为它是基于谷歌开发的 Material UI 的。
+
+#### 谷歌 Chrome 浏览器成为新的默认浏览器
+
+![Linux Lite 6.0][8]
+
+随着 Ubuntu 将其 Firefox 版本转移到一个 Snap 应用中,Linux Lite 已经完全抛弃了 Firefox,转而使用谷歌 Chrome。虽然我不能说我是这个变化的粉丝,但它确实有意义,特别是对于一个针对 Windows 用户的发行版来说。
+
+虽然你可以自由地安装任何你喜欢的东西,但无论如何,Chrome 是大多数用户的流行选择。
+
+此外,如果你想在访问文件之前扫描文件,Linux Lite 的开发者在 Chrome 中包含了一个 Virus Total 扫描器扩展(默认是禁用的)。
+
+注意,你可以从 Linux Lite 的软件中心安装 Firefox,但它是 Snap 版本的。
+
+#### 系统监控中心替代了任务管理器
+
+![Linux Lite 6.0][9]
+
+Linux Lite 6.0 现在打包了 [系统监控中心][10] 来替代任务管理器和进程查看器。
+
+请注意,Linux Lite 的开发者复刻了这个应用程序,在系统标签中提供了关于发行版的具体信息。
+
+它提供了所有关注你的资源的必要功能。
+
+### 其他改进
+
+除了基本的变化之外,Linux Lite 6.0 还包括对 GRUB 菜单的更新、推送紧急修复包的能力、新的 whisker 菜单,以及更多的调整。
+
+![Linux Lite 6.0][11]
+
+正如你所注意到的,新的 GRUB 菜单还包括关闭和重启,同时删除了内存测试选项。
+
+你可以在其 [官方公告帖子][12] 中了解更多的技术细节。
+
+### 总结
+
+Linux Lite 6.0 看起来是一个可靠的版本,特别是对于那些等待无障碍功能和新的视觉感受的人。
+
+如果你想自己尝试一下,ISO 文件可以从官方下载页面获得。
+
+> **[下载Linux Lite][13]**
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/linux-lite-6-0-release/
+
+作者:[Jacob Crume][a]
+选题:[lkxed][b]
+译者:[wxy](https://github.com/wxy)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://news.itsfoss.com/author/jacob/
+[b]: https://github.com/lkxed
+[1]: https://news.itsfoss.com/wp-content/uploads/2022/06/linux-lite-6.jpg
+[2]: https://itsfoss.com/windows-like-linux-distributions/
+[3]: https://news.itsfoss.com/ubuntu-22-04-release/
+[4]: https://news.itsfoss.com/linux-kernel-5-15-release/
+[5]: https://news.itsfoss.com/wp-content/uploads/2022/05/Screen-Reader-Linux-Lite-6.0.png
+[6]: https://news.itsfoss.com/wp-content/uploads/2022/06/linux-lite-accessibility.png
+[7]: https://news.itsfoss.com/wp-content/uploads/2022/05/Materia-Linux-Lite-6.0.png
+[8]: https://news.itsfoss.com/wp-content/uploads/2022/05/Chrome-Linux-Lite-6.0.png
+[9]: https://news.itsfoss.com/wp-content/uploads/2022/05/system-monitoring-center-linux-lite.png
+[10]: https://itsfoss.com/system-monitoring-center/
+[11]: https://news.itsfoss.com/wp-content/uploads/2022/06/grub-linux-lite-6.png
+[12]: https://www.linuxliteos.com/forums/release-announcements/linux-lite-6-0-final-released/
+[13]: https://www.linuxliteos.com/download.php#current
diff --git a/published/20220601 de-Googled -e-OS v1 Released Along with a New Brand -Murena- for Smartphone and Cloud Services.md b/published/20220601 de-Googled -e-OS v1 Released Along with a New Brand -Murena- for Smartphone and Cloud Services.md
new file mode 100644
index 0000000000..e1412ef77a
--- /dev/null
+++ b/published/20220601 de-Googled -e-OS v1 Released Along with a New Brand -Murena- for Smartphone and Cloud Services.md
@@ -0,0 +1,89 @@
+[#]: subject: "de-Googled /e/OS v1 Released Along with a New Brand ‘Murena’ for Smartphone and Cloud Services"
+[#]: via: "https://news.itsfoss.com/murena-e-os/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lkxed"
+[#]: translator: "wxy"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14666-1.html"
+
+去谷歌化操作系统 /e/OS v1 及新品牌 Murena 一同发布
+======
+
+> Murena 是一个与 e 基金会有关的新品牌,该品牌专注于提供隐私友好的 /e/OS 及新的智能手机和云服务。
+
+![murena][1]
+
+/e/OS 是一个流行的、注重隐私的移动操作系统,是谷歌安卓的替代品之一。
+
+这个复刻自 Lineage OS 的操作系统消除了任何与谷歌有关的依赖性,并鼓励你在使用中不要直接依赖任何谷歌的服务。
+
+取而代之的是,它提供一些解决方案作为替代品,为你提供一个隐私友好的生态系统。
+
+为了精简其产品,负责该操作系统的 e 基金会宣布了一个新的品牌 “Murena”,其中包括了一些以该操作系统为核心的新功能和一个新的智能手机。
+
+### Murena 和 e 基金会
+
+e 基金会作为一个致力于 /e/OS 的非营利组织将继续存在。因此,可以说这不是一次品牌重塑。
+
+然而,[Murena][2] 作为一个新的创业公司,似乎是一个独立的商业实体,将专注于鼓励主流用户尝试 /e/OS,并促进支持该操作系统的智能手机的使用。
+
+对该公司,/e/OS 的创建者提及:
+
+![][3]
+
+### /e/OS 1.0 有什么新内容?
+
+随着该操作系统的最新升级发布,他们的目标是让事情变得更容易理解,在提高使用便利性的同时,仍然考虑到隐私。
+
+此外,还随同本次更新推出了新的应用程序商店(App Lounge)和新的隐私工具(Advanced Privacy)。
+
+**App Lounge**:这个新的应用程序安装程序可以让你安装许多开源应用程序和 PWA(渐进式网页应用)。在你安装之前,它还会告知你每个应用程序中已有的跟踪器。
+
+![][4]
+
+我相信一个量身定做的应用商店的存在将有助于消除新用户是否应该尝试用 /e/OS 安装 Play Store 或 F-Droid 的困惑。
+
+除此之外,Advanced Privacy 工具将有助于限制用户在安装第三方应用程序后暴露的数据。
+
+如果你想远离科技巨头,你还会发现 Murena 云服务可以用作私人电子邮件账户服务和云存储。该电子邮件服务提供的功能可以隐藏你的原始电子邮件地址。
+
+### Murena One
+
+![][5]
+
+首款 Murena 品牌的智能手机将于 6 月下旬推出,并将向美国、加拿大、欧洲、英国和瑞士等地的用户发货。
+
+这款智能手机将采用 6.5 英寸显示屏,配备 2500 万像素的前置摄像头,后置摄像头设置有三个传感器,分别是 4800 万像素、800 万像素和 500 万像素。
+
+我们不太确定是什么处理器,但它提到了是一个八核芯片,加上 4GB 的内存。所有这些都由 4500 毫安时的电池供电。
+
+除了它的第一款智能手机,你还可以从它的官方网站上购买 Fairphone 和 Teracube 的智能手机,这些手机预装了 /e/OS。
+
+### 总结
+
+你可以在其官方网站上了解更多关于新的 /e/OS 升级、云服务和可用的智能手机的信息。
+
+> **[Murena][6]**
+
+该智能手机的定价还没有在新闻发布会上披露。所以,我们建议你如果有兴趣,可以关注一下。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/murena-e-os/
+
+作者:[Ankush Das][a]
+选题:[lkxed][b]
+译者:[wxy](https://github.com/wxy)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://news.itsfoss.com/author/ankush/
+[b]: https://github.com/lkxed
+[1]: https://news.itsfoss.com/wp-content/uploads/2022/06/murena.jpg
+[2]: https://murena.com/
+[3]: https://news.itsfoss.com/wp-content/uploads/2022/06/murena-quote.jpeg
+[4]: https://news.itsfoss.com/wp-content/uploads/2022/06/eos-app-lounge-1024x1024.jpg
+[5]: https://news.itsfoss.com/wp-content/uploads/2022/06/murena-one-1024x576.jpeg
+[6]: https://murena.com/
diff --git a/sources/news/20220518 Google To Start Distributing A Collection Of Open Source Software libraries.md b/sources/news/20220518 Google To Start Distributing A Collection Of Open Source Software libraries.md
deleted file mode 100644
index 064380245a..0000000000
--- a/sources/news/20220518 Google To Start Distributing A Collection Of Open Source Software libraries.md
+++ /dev/null
@@ -1,41 +0,0 @@
-[#]: subject: "Google To Start Distributing A Collection Of Open Source Software libraries"
-[#]: via: "https://www.opensourceforu.com/2022/05/google-to-start-distributing-a-collection-of-open-source-software-libraries/"
-[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
-[#]: collector: "lkxed"
-[#]: translator: " "
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-Google To Start Distributing A Collection Of Open Source Software libraries
-======
-![][1]
-
-On Tuesday, Google unveiled a new program aimed at safeguarding the open-source software supply chain by curating and delivering a security-vetted selection of open source packages to Google Cloud users. The business announced the new service, dubbed Assured Open Source Software, in a blog [post][2]. Andy Chang, Google Cloud’s group product manager for security and privacy, highlighted some of the problems of safeguarding open source software and emphasised Google’s commitment to open source in his blog post.
-
-“There has been an increasing awareness in the developer community, enterprises, and governments of software supply chain risks,” Chang wrote, citing last year’s major log4j vulnerability as an example. “Google continues to be one of the largest maintainers, contributors, and users of open source and is deeply involved in helping make the open source software ecosystem more secure.”
-
-According to Google, the Assured Open Source Software service will give Cloud clients access to Google’s substantial software auditing knowledge. According to Google, all open source packages made available through the service are also used internally by the corporation and are inspected and analysed for vulnerabilities on a regular basis.
-
-A list of the 550 important open source libraries that Google is currently reviewing is available on [GitHub][3]. While these libraries may all be downloaded independently of Google, the Assured OSS program will see audited versions provided through Google Cloud, preventing developers from corrupting widely used open source libraries. This service is now in early access phase and will be ready for wider consumer testing in Q3 2022.
-
-The Google statement is part of a broader industry effort to strengthen the security of the open source software supply chain, which has the support of the Biden administration. In January, representatives from the Department of Homeland Security and the Cybersecurity and Infrastructure Security Agency met with executives from some of the country’s major IT companies to examine open-source software security in the wake of the log4j bug. Since then, the corporations involved have pledged more than $30 million in financing to improve open source software security during a recent summit.
-
-In addition to cash, Google is devoting engineering time to ensuring the supply chain’s security. The corporation has announced the development of a “Open Source Maintenance Crew” that will collaborate with library maintainers to improve security.
-
---------------------------------------------------------------------------------
-
-via: https://www.opensourceforu.com/2022/05/google-to-start-distributing-a-collection-of-open-source-software-libraries/
-
-作者:[Laveesh Kocher][a]
-选题:[lkxed][b]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://www.opensourceforu.com/author/laveesh-kocher/
-[b]: https://github.com/lkxed
-[1]: https://www.opensourceforu.com/wp-content/uploads/2022/05/google3-1-e1652863988525.jpg
-[2]: https://cloud.google.com/blog/products/identity-security/introducing-assured-open-source-software-service
-[3]: https://github.com/google/oss-fuzz/tree/master/projects
diff --git a/sources/news/20220518 ONLYOFFICE 7.1 Release Adds ARM Compatibility, a New PDF Viewer, and More Features.md b/sources/news/20220518 ONLYOFFICE 7.1 Release Adds ARM Compatibility, a New PDF Viewer, and More Features.md
deleted file mode 100644
index a122bda174..0000000000
--- a/sources/news/20220518 ONLYOFFICE 7.1 Release Adds ARM Compatibility, a New PDF Viewer, and More Features.md
+++ /dev/null
@@ -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: " "
-[#]: 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?
-
-[][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]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://news.itsfoss.com/author/jacob/
-[b]: https://github.com/lkxed
-[1]: https://news.itsfoss.com/wp-content/uploads/2022/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
diff --git a/sources/news/20220531 Rocket.Chat is Switching to Matrix to Enable Cross-App Messaging.md b/sources/news/20220531 Rocket.Chat is Switching to Matrix to Enable Cross-App Messaging.md
new file mode 100644
index 0000000000..8e6dbfde37
--- /dev/null
+++ b/sources/news/20220531 Rocket.Chat is Switching to Matrix to Enable Cross-App Messaging.md
@@ -0,0 +1,81 @@
+[#]: subject: "Rocket.Chat is Switching to Matrix to Enable Cross-App Messaging"
+[#]: via: "https://news.itsfoss.com/rocket-chat-matrix/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Rocket.Chat is Switching to Matrix to Enable Cross-App Messaging
+======
+Rocket.Chat is embracing the Matrix protocol to enable decentralized communication for the platform. That’s a huge change, isn’t it?
+
+![rocket chat matrix][1]
+
+Rocket.Chat is an excellent open-source messaging (collaboration) platform.
+
+In fact, it is one of the [best open-source Slack alternatives][2] available. We use it as well for internal communication.
+
+Rocket.Chat is also making good progress compared to some of its open-source competitors. For instance, they [teamed up with Nextcloud to provide an alternative to Office 365][3].
+
+And recently announced a switch to Matrix protocol to introduce federation capabilities that allow its users to communicate with users on other platforms. In other words, [Rocket.Chat][4] will be utilizing a decentralized network for communication with the Matrix integration.
+
+As a Rocket.Chat user; you can talk to users on any other app using the Matrix protocol.
+
+### Rocket.Chat is Switching to a Decentralized Protocol to Enhance Collaboration
+
+![][5]
+
+Matrix protocol is a fantastic choice to enable an interoperable federation. Now, with Rocket.Chat onboard; the decentralized network should be stronger than ever.
+
+Not to forget, we already have [Element][6], and [Gitter][7], as some of the platforms that already utilize Matrix. So, Rocket.Chat joining the network sounds exciting!
+
+The [official announcement][8] further explains the collaboration:
+
+> The Rocket.Chat adoption of Matrix makes it simple for organizations to easily connect with external parties, whether they’re using Rocket.Chat or any other Matrix compatible platform. This initiative is another step forward on Rocket.Chat’s journey to let every conversation flow without compromise and enable full interoperability with its ecosystem.
+
+The new change with the Matrix network is already available in the latest [alpha release for Rocket.Chat 4.7.0][9]. Unless you want to experiment with it, you should wait for the stable release to introduce the Matrix network support.
+
+**Aron Ogle** (*Core Developer at Rocket.Chat*) has put together a [guide][10] and a video to help you out if you want to explore the technical details of Rocket.Chat integration with the Matrix. Here’s the video for it:
+
+![Setting up Rocket Chat to talk with Matrix][11]
+
+### Is This a Good Move?
+
+While decentralized tech hasn’t taken the internet by storm, it is promising and makes more sense with its reliability and decentralized capabilities. Matrix protocol has been getting all the praise for a couple of years now, and it seems to be heading in the right direction.
+
+As of now, most of the big platforms rely on centralized infrastructure to make things work.
+
+And, with the current implementations, cross-communication is not possible with most of the chat applications.
+
+So, Rocket.Chat will be making a difference by offering cross-app interactions, like the ability to chat with an Element user on **matrix.org,** as shown in the image above.
+
+Rocket.Chat entering the scene with Matrix protocol could open up the potential for its competitors or other services to give a second thought to solutions like Matrix protocol.
+
+*What do you think about Rocket.Chat adopting the Matrix protocol? Share your thoughts in the comments section below.*
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/rocket-chat-matrix/
+
+作者:[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/rocketchat-matrix-protocol.jpg
+[2]: https://itsfoss.com/open-source-slack-alternative/
+[3]: https://news.itsfoss.com/rocket-chat-nextcloud-collaboration/
+[4]: https://itsfoss.com/rocket-chat/
+[5]: https://news.itsfoss.com/wp-content/uploads/2022/05/rocket-chat-matrix.jpg
+[6]: https://itsfoss.com/element/
+[7]: https://itsfoss.com/gitter/
+[8]: https://rocket.chat/press-releases/rocket-chat-leverages-matrix-protocol-for-decentralized-and-interoperable-communications
+[9]: https://github.com/RocketChat/Rocket.Chat/releases/tag/4.7.0
+[10]: https://geekgonecrazy.com/2022/05/30/rocketchat-and-the-matrix-protocol/
+[11]: https://youtu.be/oQhIH8kql9I
diff --git a/sources/news/20220601 Google Makes Data Centre Scale Encryption Open Source.md b/sources/news/20220601 Google Makes Data Centre Scale Encryption Open Source.md
new file mode 100644
index 0000000000..beb885cdd7
--- /dev/null
+++ b/sources/news/20220601 Google Makes Data Centre Scale Encryption Open Source.md
@@ -0,0 +1,37 @@
+[#]: subject: "Google Makes Data Centre Scale Encryption Open Source"
+[#]: via: "https://www.opensourceforu.com/2022/06/google-makes-data-centre-scale-encryption-open-source/"
+[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Google Makes Data Centre Scale Encryption Open Source
+======
+![google-ranking-factors][1]
+
+Google has made open source an encryption scheme it developed to protect traffic between its data centres. PSP, which stands for PSP Security Protocol, was created to relieve Google’s processors of the growing burden of software-based encryption, according to the company. PSP has been hailed as a success in the company’s own environment, and the company has stated that it is “making PSP open source to encourage broader adoption by the community and hardware implementation by additional NIC [network interface card] vendors.” PSP offloads encryption to NICs, which was previously possible with existing encryption schemes, but not at the scale or with the traffic coverage required by Google.
+
+“At Google’s scale,” the company wrote when announcing its decision, “the cryptographic offload must support millions of live transmission control protocol (TCP) connections and sustain 100,000 new connections per second at peak.”
+
+Existing security protocols, according to Google Cloud’s Amin Vahdat and Soheil Hassas Yeganeh, had flaws. “While TLS meets our security requirements, it is not an offload-friendly solution because of the tight coupling between the connection state in the kernel and the offload state in hardware. TLS also does not support non-TCP transport protocols, such as UDP”, they stated.
+
+However, the IPSec protocol cannot be offloaded to hardware at the required scale. “IPSec … cannot economically support our scale partly because they store the full encryption state in an associative hardware table with modest update rates,” the post explains.
+
+Google added a custom header and trailer to standard User Datagram Protocol (UDP) encapsulation to create PSP. PSP is currently implemented in three ways: one for Google’s Andromeda Linux virtualisation kernel, one for its Snap networking system, and an application-layer version, SoftPSP, created so Google Cloud customers could use PSP on computers with traditional NICs.
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/06/google-makes-data-centre-scale-encryption-open-source/
+
+作者:[Laveesh Kocher][a]
+选题:[lkxed][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.opensourceforu.com/author/laveesh-kocher/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/06/google-ranking-factors-e1654074528236.jpg
diff --git a/sources/news/20220602 Linux Mint to Maintain Timeshift Backup Tool as an XApp.md b/sources/news/20220602 Linux Mint to Maintain Timeshift Backup Tool as an XApp.md
new file mode 100644
index 0000000000..7e41d5cefa
--- /dev/null
+++ b/sources/news/20220602 Linux Mint to Maintain Timeshift Backup Tool as an XApp.md
@@ -0,0 +1,72 @@
+[#]: subject: "Linux Mint to Maintain Timeshift Backup Tool as an XApp"
+[#]: via: "https://news.itsfoss.com/linux-mint-timeshift/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Linux Mint to Maintain Timeshift Backup Tool as an XApp
+======
+Linux Mint takes over the development of ‘Timeshift’ backup/restore tool. You can now find it in its new GitHub repository.
+
+![linux mint][1]
+
+Timeshift is arguably the [best tool to back up and restore the Linux system][2].
+
+Linux Mint also utilizes the tool to let users easily take snapshots before updates, and ensure hassle-free operation.
+
+Of course, that’s not the only thing that makes [Linux Mint potentially better than Ubuntu][3].
+
+Unfortunately, the developer ([Tony George][4]) behind Timeshift can no longer maintain the project. The developer plans to focus on other projects instead.
+
+The Linux Mint team reached out to the developer to help the project in any capacity. And, they finalized to take over the development of Timeshift.
+
+So, now, the Linux Mint team will be responsible for new releases/fixes, and any development activity associated with Timeshift.
+
+### Adopting Timeshift as an XApp
+
+![][5]
+
+Linux Mint tends to maintain certain applications as an “XApp” to make sure that they work on various desktop environments and are not dependent on a particular desktop.
+
+Considering that they plan to adopt Timeshift as an XApp, you can expect the tool to continue offering the current look/functionality for a long time, irrespective of your desktop environment.
+
+Unlike some GNOME apps, which are usually turning into GNOME-only applications for the best experience.
+
+Timeshift is an essential backup/restore tool. So, Linux Mint taking over the development and maintaining it as an XApp sounds perfect!
+
+The translations for Timeshift are now done on [Launchpad][6], if you are curious.
+
+The [new GitHub repository][7] (forked by Linux Mint) can give you more details about the application and its latest development activity.
+
+You can also check out the official announcement for this in the [recent monthly blog post][8].
+
+### Wrapping Up
+
+With Linux Mint as the maintainer of Timeshift, we could hope for more feature additions and improvements in the near future.
+
+What do you think about Linux Mint taking over the development of Timeshift as an XApp? You are welcome to share your thoughts on it in the comments below.
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/linux-mint-timeshift/
+
+作者:[Ankush Das][a]
+选题:[lkxed][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://news.itsfoss.com/author/ankush/
+[b]: https://github.com/lkxed
+[1]: https://news.itsfoss.com/wp-content/uploads/2022/06/linux-mint-time-shift.jpg
+[2]: https://itsfoss.com/backup-restore-linux-timeshift/
+[3]: https://itsfoss.com/linux-mint-vs-ubuntu/
+[4]: https://teejeetech.com/
+[5]: https://news.itsfoss.com/wp-content/uploads/2022/06/timeshiftlinux-mint.png
+[6]: https://github.com/linuxmint/timeshift
+[7]: https://github.com/linuxmint/timeshift
+[8]: https://blog.linuxmint.com/?p=4323
diff --git a/sources/news/20220603 Spotify Introduces an Open-Source Tool to Fix a Big Problem for Modern Musicians.md b/sources/news/20220603 Spotify Introduces an Open-Source Tool to Fix a Big Problem for Modern Musicians.md
new file mode 100644
index 0000000000..782197f1a9
--- /dev/null
+++ b/sources/news/20220603 Spotify Introduces an Open-Source Tool to Fix a Big Problem for Modern Musicians.md
@@ -0,0 +1,85 @@
+[#]: subject: "Spotify Introduces an Open-Source Tool to Fix a Big Problem for Modern Musicians"
+[#]: via: "https://news.itsfoss.com/spotify-basic-pitch/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Spotify Introduces an Open-Source Tool to Fix a Big Problem for Modern Musicians
+======
+Spotify’s new open-source tool helps you convert audio to MIDI version. Explore why it is a big deal for modern musicians.
+
+![spotify][1]
+
+Spotify is a leading music streaming platform with several open-source projects.
+
+While most of the projects/tools are built for niche users, they have finally introduced something that seems enticing to all the modern musicians involved with digital music production.
+
+‘Basic Pitch’ is a new free and open-source tool by Spotify that lets you convert any audio file to its MIDI (Musical Instrument Digital Interface) version.
+
+In case you did not know, with MIDI notes, you can easily tweak what’s being played and analyze more to help you in digital music production.
+
+### Basic Pitch: Making Things Easier
+
+With Basic Pitch, one can easily have MIDI notes of an audio file they have always wanted, and with better accuracy.
+
+![spotify basic pitch][2]
+
+Spotify explains that it is better than existing note-detection systems by offering some advantages that include:
+
+> **Polyphonic + instrument-agnostic:** Unlike most other note-detection algorithms, Basic Pitch can track multiple notes at a time and across various instruments, including piano, guitar, and ocarina. Many systems limit users to only monophonic output (one note at a time, like a single vocal melody), or are built for only one kind of instrument.
+
+> **Pitch bend detection:** Instruments, like guitar or the human voice, allow for more expressiveness through pitch-bending: vibrato, glissando, bends, slides, etc. However, this valuable information is often lost when turning audio into MIDI. Basic Pitch supports this right out of the box.
+
+> **Speed:** Basic Pitch is light on resources, and is able to run faster than real time on most modern computers ([Bittner et al. 2022][3]).
+
+Basic Pitch uses a machine learning model that turns various instrumental performances into MIDI. The audio file may also contain your voice, but it should still be able to convert the instrument to its MIDI version.
+
+![Basic Pitch demo: Convert audio into MIDI using ML][4]
+
+I tried converting an MP3 karaoke file with a single instrument to get the MIDI notes, and it seemed to work pretty well.
+
+The tool also lets you process more than one audio file at a time and offers a few parameter controls that include note segmentation, confidence threshold, minimum/maximum pitch, and note length.
+
+### Made for Creators and Researchers
+
+Spotify mentions that it targets the creators primarily, but they are also interested to learn how machine learning researchers build upon it and help develop better solutions using the [open-source project on GitHub][5].
+
+As a creator/musician, you can access the open-source tool on its [official website][6] for a demo. The parameters can be adjusted using the website, and you can also download the MIDI file from there.
+
+[Basic Pitch][7]
+
+![spotify basic pitch][8]
+
+It is also available via [PyPI][9] to install and use via the command-line interface on Linux, Windows, and macOS.
+
+You can explore its [GitHub page][10] to know more about its usage/commands.
+
+If you are curious, the [official announcement post][11] provides more technical comparisons and explanations regarding the development of the tool.
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/spotify-basic-pitch/
+
+作者:[Ankush Das][a]
+选题:[lkxed][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://news.itsfoss.com/author/ankush/
+[b]: https://github.com/lkxed
+[1]: https://news.itsfoss.com/wp-content/uploads/2022/06/spotify-midi.jpg
+[2]: https://news.itsfoss.com/wp-content/uploads/2022/06/spotify-basic-pitch-1024x531.png
+[3]: https://ieeexplore.ieee.org/document/9746549
+[4]: https://youtu.be/DhlvfgS73ZQ?list=PLf1KFlSkDLIAYLdb-SD9s8TdGy0rWIwVr
+[5]: https://github.com/spotify/basic-pitch
+[6]: https://basicpitch.spotify.com/
+[7]: https://basicpitch.spotify.com/
+[8]: https://news.itsfoss.com/wp-content/uploads/2022/06/basic-pitch-parameters.jpg
+[9]: https://pypi.org/
+[10]: https://github.com/spotify/basic-pitch
+[11]: https://engineering.atspotify.com/2022/06/meet-basic-pitch/
diff --git a/sources/talk/20220523 7 pieces of Linux advice for beginners.md b/sources/talk/20220523 7 pieces of Linux advice for beginners.md
new file mode 100644
index 0000000000..bc902926eb
--- /dev/null
+++ b/sources/talk/20220523 7 pieces of Linux advice for beginners.md
@@ -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
diff --git a/sources/talk/20220602 Why Do Enterprises Use and Contribute to Open Source Software.md b/sources/talk/20220602 Why Do Enterprises Use and Contribute to Open Source Software.md
new file mode 100644
index 0000000000..1de91d1449
--- /dev/null
+++ b/sources/talk/20220602 Why Do Enterprises Use and Contribute to Open Source Software.md
@@ -0,0 +1,128 @@
+[#]: subject: "Why Do Enterprises Use and Contribute to Open Source Software"
+[#]: via: "https://www.linux.com/news/why-do-enterprises-use-and-contribute-to-open-source-software/"
+[#]: author: "Dan Whiting https://www.linuxfoundation.org/blog/why-do-enterprises-use-and-contribute-to-open-source-software/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Why Do Enterprises Use and Contribute to Open Source Software
+======
+When people find out I work at the Linux Foundation they invariably ask what we do? Sometimes it is couched around the question, As in the Linux operating system? I explain open source software and try to capture the worldwide impact into 20 seconds before I lose their attention. If they happen to stick around for more, we often dig into the question, Why would enterprises want to participate in open source software projects or use open source software? The reality is – they do, whether they know it or not. And the reality is thousands of companies donate their code to open source projects and invest time and resources helping to further develop and improve open source software.
+
+### How extensively used is open source software
+
+To quote from our recently released report, A Guide to Enterprise Open Source, “Open source software (OSS) has transformed our world and become the backbone of our digital economy and the foundation of our digital world. From the Internet and the mobile apps we use daily to the operating systems and programming languages we use to build the future, OSS has played a vital role. It is the lifeblood of the technology industry. Today, OSS powers the digital economy and enables scientific and technological breakthroughs that improve our lives. It’s in our phones, our cars, our airplanes, our homes, our businesses, and our governments. But just over two decades ago, few people had ever heard of OSS, and its use was limited to a small group of dedicated enthusiasts.”
+
+Open source software (OSS) has transformed our world and become the backbone of our digital economy and the foundation of our digital world.
+
+But what does this look like practically:
+
+* In vertical software stacks across industries, open source penetration ranges from 20 to 85 percent of the overall software used.
+* Linux fuels 90%+ of web servers and Internet-connected devices.
+* The Android mobile operating system is built on the Linux kernel.
+* Immensely [popular libraries and tools][1] to build web applications, such as: AMP, Appium, Dojo, jQuery, Marko, Node.js and so many more are open source.
+* The world’s top 100 supercomputers run Linux.
+* 100% of mainframe customers use Linux.
+* The major cloud-service providers – AWS, Google, and Microsoft – all utilize open-source software to run their services and host open-source solutions delivered through the cloud.
+
+### Why do companies want to participate in open source software projects
+
+Companies primarily participate in open source software projects in three ways:
+
+* They donate software they created to the open source community.
+* They provide direct funding and/or allocate software developers and other staff to contribute to open source software projects
+
+The question often asked is, why wouldn’t they want to keep all of their software proprietary or only task their employees to work on their proprietary software?
+
+The 30,000-foot answer is that it is about organizations coming together to collectively solve common problems so they can separately innovate and differentiate on top of the common baseline. They see that they are better off pooling resources to make the baseline better. Sometimes it is called “coopetition.” It generally means that while companies may be in competition with each other in certain areas, they can still cooperate on others.
+
+It is about organizations coming together to collectively solve common problems so they can separately innovate and differentiate
+
+Some old-school examples of this principle:
+
+* Railroads agreed on a common track size and build so they can all utilize the same lines and equipment was interchangeable.
+* Before digital cameras, companies innovated and differentiated on film and cameras, but they all agreed on the spacing for the sprockets to advance the film.
+* The entertainment industry united around the VHS and Blu-Ray formats over their rivals.
+
+Now, we see companies, organizations, and individuals coming together to solve problems while simultaneously improving their businesses and products:
+
+[Let’s Encrypt][2] is a free, automated, and open certificate authority with the goal of dramatically increasing the use of secure web protocols by making it much easier and less expensive to setup. They are serving 225+ million websites, issuing ~1.5 million certificates each day on average.
+
+The [Academy Software Foundation][3] [creates value in the film industry][4] through collectively engineering software that powers much of the entertainment, gaming, and media industry productions and open standards needed for growth.
+
+The Hyperledger Foundation hosts enterprise-grade blockchain software projects, notably [using significantly fewer energy resources][5] than other popular solutions.
+
+[LF Energy][6] is [making the electric grid more modular, interoperable, and scalable][7] to help increase the use of renewable energy sources.
+
+[Dronecode][8] is enabling the development of drone software so companies can use their resources to innovate further.
+
+[OpenSSF][9] is the top technology companies coming together to strengthen the security and resiliency of open source software.
+
+[Kubernetes][10] was donated by Google and is the go-to solution for managing cloud-based software.
+
+These are just a small sampling of the open source software projects that enterprises are participating in. You can explore all of the ones hosted at the Linux Foundation [here][11].
+
+### How can companies effectively use and participate in open source software projects?
+
+Enterprises looking to better utilize and participate in open source projects can look to the Linux Foundation’s resources to help. Much of what organizations need to know is provided in the just-published report,[A Guide to Enterprise Open Source][12]. The report is packed with information and insights from open source leaders at top companies with decades of combined experience. It includes chapters on these topics:
+
+* Leveraging Open Source Software
+* Preparing the Enterprise for Open Source
+* Developing an Open Source Strategy
+* Setting Up Your Infrastructure for Implementation
+* Setting Up Your Talent for Success
+* Challenges
+
+Additionally, the Linux Foundation offers many open source [training courses][13], [events][14] throughout the year, the [LFX Platform][15], and hosts projects that help organizations manage open source utilization and participation, such as:
+
+The [TODO Group][16] provides resources to setup and run an open source program office, including their [extensive guides][17].
+
+The [Openchain Project][18] maintains an international standard for sharing what software package licenses are included in a larger package, including information on the various licensing requirements so enterprises can ensure they are complying with all of the legal requirements.
+
+The [FinOps Foundation][19] is fostering an, “evolving cloud financial management discipline and cultural practice that enables organizations to get maximum business value by helping engineering, finance, technology, and business teams to collaborate on data-driven spending decisions.”.
+
+The [Software Data Package Exchange (SPDX)][20] is an open standard for communication software bill of materials (SBOMs) so it is clear to every user which pieces of software are included in the overall package.
+
+Again, this is just a snippet of the projects at the Linux Foundation that are working to help organizations adapt, utilize, contribute, and donate open source projects.
+
+The bottom line: Enterprises are increasingly turning to open source software projects to solve common problems and innovate beyond the baseline, and the Linux Foundation is here to help.
+
+The post [Why Do Enterprises Use and Contribute to Open Source Software][21] appeared first on [Linux Foundation][22].
+
+--------------------------------------------------------------------------------
+
+via: https://www.linux.com/news/why-do-enterprises-use-and-contribute-to-open-source-software/
+
+作者:[Dan Whiting][a]
+选题:[lkxed][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.linuxfoundation.org/blog/why-do-enterprises-use-and-contribute-to-open-source-software/
+[b]: https://github.com/lkxed
+[1]: https://openjsf.org/projects/
+[2]: https://letsencrypt.org/
+[3]: https://www.aswf.io/
+[4]: https://linuxfoundation.org/tools/open-source-in-entertainment/
+[5]: https://linuxfoundation.org/tools/carbon-footprint-of-nfts/
+[6]: https://www.lfenergy.org/
+[7]: https://linuxfoundation.org/tools/paving-the-way-to-battle-climate-change-how-two-utilities-embraced-open-source-to-speed-modernization-of-the-electric-grid/
+[8]: https://www.dronecode.org/projects/
+[9]: https://openssf.org/
+[10]: https://kubernetes.io/
+[11]: https://linuxfoundation.org/projects/
+[12]: https://linuxfoundation.org/tools/guide-to-enterprise-open-source/
+[13]: https://training.linuxfoundation.org/
+[14]: https://events.linuxfoundation.org/
+[15]: https://lfx.linuxfoundation.org/
+[16]: https://todogroup.org/
+[17]: https://linuxfoundation.org/resources/open-source-guides/
+[18]: https://www.openchainproject.org/resources
+[19]: https://www.finops.org/introduction/what-is-finops/
+[20]: https://spdx.dev/
+[21]: https://www.linuxfoundation.org/blog/why-do-enterprises-use-and-contribute-to-open-source-software/
+[22]: https://www.linuxfoundation.org/
diff --git a/sources/talk/20220604 Attract contributors to your open source project with authenticity.md b/sources/talk/20220604 Attract contributors to your open source project with authenticity.md
new file mode 100644
index 0000000000..d97d80f40d
--- /dev/null
+++ b/sources/talk/20220604 Attract contributors to your open source project with authenticity.md
@@ -0,0 +1,141 @@
+[#]: subject: "Attract contributors to your open source project with authenticity"
+[#]: via: "https://opensource.com/article/22/6/attract-contributors-open-source-project"
+[#]: author: "Rizel Scarlett https://opensource.com/users/blackgirlbytes"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Attract contributors to your open source project with authenticity
+======
+Check out these methods that open source maintainers can use to attract contributors in a genuine manner.
+
+![a big flag flying in a sea of other flags, teamwork][1]
+
+Image by: Opensource.com
+
+It's not a secret that maintaining an open source project is often thankless and time-consuming work. However, I've learned that there's one shared joy among open source maintainers: They love building with a group of technologists who passionately believe in their vision.
+
+### Marketing feels cringey
+
+Community support and teamwork are major incentives for open source maintainers. However, gaining community support and contributors is a challenge, especially as a new maintainer. The hope is that technologists will find our projects and start contributing by chance. The reality is we have to market our projects. Think about it: Developers create several public repositories daily, but nobody knows those repositories exist. Without adoption, community, or collaboration, we're not truly reaping the benefits of open source.
+
+Although marketing an open source project is necessary for a project's overall success, developers are hesitant to do it because marketing to other developers often feels inauthentic and cringey. In this article, I explore methods maintainers can use to attract contributors in a genuine manner.
+
+### Promote your open source project
+
+If you want people to contribute to your project, you have to tell them your project exists. So what can promotion look like for you? Instead of spamming discord channels or DMs about an open source project, maintainers can promote their projects through many channels, including:
+
+* Conference talks: People attend conferences to gain inspiration. Don't be afraid; they're not necessarily looking for a PhD-level lecture. Take the stage at an event like [All Things Open][2], [Open Source Series 101][3], [Codeland][4], or [Upstream][5] to talk about what you're building, why you're building it, issues you face, and discoveries you have made. After your talk, people may want to learn more about what you're building and how they can get involved.
+* Blogging: Leverage popular developer blogging platforms such as [Aviyel][6], [Dev.to][7], or [Hashnode][8] to talk about your project. Add a link to your project within the blog posts so that the right people can find it. You can also [submit an article][9] to the editors here on Opensource.com to raise awareness about your open source project!
+* Twitter: Twitter has a large tech audience, including Developers, UX Designers, Developer Advocates, and InfoSec professionals who want to collaborate and learn from each other. Twitter is the perfect platform to post in an authentic, non-pushy way about your discoveries, new releases, and bug fixes. Folks will learn from you through your tweets and may feel inclined to build with you.
+* Podcasts or Twitter Spaces: Like conference talks, use podcasts and Twitter Spaces to build your project's brand. You don't have to talk about it in a marketing way. You can geek out with the host over your vision and the technical hiccups you've faced along the way.
+* Twitch Streams: Stream yourself live coding your project to create awareness of its existence and pair the program with your viewers. Eventually, they might tell other people about your product, or they might ask to contribute themselves.
+* Hacktoberfest: Hacktoberfest is a month-long event in October that encourages people to make their first contributions to projects. By participating in Hacktoberfest as a maintainer, you may recruit new contributors.
+* Sponsorships: Contributions don't always have to include code. Corporations and individuals can contribute by sponsoring you. Learn more about creating an appealing Sponsor profile [here][10].
+
+### Gain community support
+
+The proverb "it takes a village" applies to more than child-rearing. It also takes a village to maintain an open source project. Community is a large part of open source and just general life success. However, community support is a two-way street. To sustain community support, it's a best practice to give back to community members.
+
+What can community support look like for you? As you promote your project, you will find folks willing to support you. To encourage them to continue supporting and appeal to other potential supporters, you can:
+
+* Highlight contributors/supporters: Once you start getting contributors, you can motivate more people to contribute to your project by highlighting past, current, or consistent contributors in your README. This acknowledgment shows that you value and support your contributors. Send your contributors swag or a portion of your sponsorship money if you can afford it. Folks will naturally gravitate to your projects if you're known for genuinely supporting your open source community.
+
+![Acknowledge contributors on a profile page][11]
+
+* Establish a culture of kindness: Publish a Code of Conduct in your repository to ensure psychological safety for contributors. I strongly suggest you also adhere to those guidelines by responding kindly to people in comments, pull requests, and issues. It's also vital that you enforce your Code of Conduct. If someone in your community is not following the rules, make sure they face the outlined consequences without exception. Don't let a toxic actor ruin your project's environment with unkind language and harassment.
+* Provide a space for open discussion: Often, contributors join an open source community to befriend like-minded technologists, or they have a technical question, and you won't always be available to chat. Open source maintainers often use one of the following tools to create a place for contributors to engage with each other and ask questions in the open:
+ * GitHub Discussions
+ * Discord
+ * Matrix.org
+ * Mattermost
+
+### Create a "good" open source project
+
+*Good* is subjective in code or art, but there are a few ways to indicate that your project is well thought out and a good investment. What does creating a good project look like for you? Your project doesn't have to include amazing code or be a life-changing project to indicate quality. Instead, ensure that your project has the following attributes.
+
+#### Easy to find
+
+To help other people find and contribute to your project, you can add topics to your repository related to your project's intended purpose, subject area, affinity groups, or other important qualities. When people go to github.com/topics to search for projects, your project has a higher chance of showing up.
+
+![GitHub Scientist page][12]
+
+#### Easy to use
+
+Make your project easy to use with a detailed README. It's the first thing new users and potential contributors see when visiting your project's repository. Your README should serve as a how-to guide for users. I suggest you include the following information in your README:
+
+* Project title
+* Project description
+* Installation instructions
+* Usage instructions
+* Link to your live web app
+* Links to related documentation (code of conduct, license, contributing guidelines)
+* Contributors highlights
+
+You can learn more about crafting the perfect README [here][13].
+
+#### Easy to contribute to
+
+Providing guidelines and managing issues help potential contributors understand opportunities to help.
+
+* Contributing guidelines - Similar to a README, contributors look for a markdown file called Contributing.md for insight on how to contribute to your project. Guidelines are helpful for you and the contributor because they won't have to ask you too many questions. The contributing guidelines should answer frequently asked questions. I suggest including the following information in your Contributing.md file:
+ * Technologies used
+ * How to report bugs
+ * How to propose new features
+ * How to open a pull request
+ * How to claim an issue or task
+ * Environment set up
+ * Style guide/code conventions
+ * Link to a discussion forum or how people can ask for help
+ * Project architecture (nice to have)
+ * Known issues
+* Good first issues - Highlight issues that don't need legacy project knowledge with the label good-first-issue, so new contributors can feel comfortable contributing to your project for the first time.
+
+![discover issues with GitHub][14]
+
+### Exercise persistence
+
+Even if no one contributes to your project, keep it active with your contributions. Folks will be more interested in contributing to an active project. What does exercising persistence look like for your project? Even if no one is contributing, continue to build your project. If you can't think of new features to add and you feel like you fixed all the bugs, set up ways to make your project easy to manage and scale when you finally get a ton of contributors.
+
+* Scalability: Once you get contributors, it will get harder to balance responding to every issue. While you're waiting for more contributors, automate the tasks that will eventually become time-consuming. You can leverage GitHub Actions to handle the release process, CI/CD, or enable users to self-assign issues.
+
+### TL;DR
+
+Attracting contributors to your open source project takes time, so be patient and don't give up on your vision. While you're waiting, promote your project by building in public and sharing your journey through blog posts, tweets, and Twitch streams. Once you start to gain contributors, show them gratitude in the form of acknowledgment, psychological safety, and support.
+
+### Next steps
+
+For more information on maintaining an open source project, check out [GitHub's Open Source Guide][15].
+
+Image by: (Rizel Scarlett, CC BY-SA 4.0)
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/6/attract-contributors-open-source-project
+
+作者:[Rizel Scarlett][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/blackgirlbytes
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/leader_flag_people_team_group.png
+[2]: https://2021.allthingsopen.org/
+[3]: https://opensource101.com/
+[4]: https://codelandconf.com/
+[5]: https://upstream.live/
+[6]: http://aviyel.com/
+[7]: https://dev.to/
+[8]: https://hashnode.com/
+[9]: https://opensource.com/writers
+[10]: https://dev.to/github/how-to-create-the-perfect-sponsors-profile-for-your-open-source-project-3747
+[11]: https://opensource.com/sites/default/files/2022-05/contributors.png
+[12]: https://opensource.com/sites/default/files/2022-05/github-scientist.png
+[13]: https://dev.to/github/how-to-create-the-perfect-readme-for-your-open-source-project-1k69
+[14]: https://opensource.com/sites/default/files/2022-05/label-issues.png
+[15]: https://opensource.guide/
diff --git a/sources/tech/20210112 15 favorite programming tutorials and insights.md b/sources/tech/20210112 15 favorite programming tutorials and insights.md
deleted file mode 100644
index 5b0d42aeaf..0000000000
--- a/sources/tech/20210112 15 favorite programming tutorials and insights.md
+++ /dev/null
@@ -1,108 +0,0 @@
-[#]: collector: (lujun9972)
-[#]: translator: ( )
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
-[#]: subject: (15 favorite programming tutorials and insights)
-[#]: via: (https://opensource.com/article/21/1/best-programming)
-[#]: author: (Bryant Son https://opensource.com/users/brson)
-
-15 favorite programming tutorials and insights
-======
-Whether you're new to programming or want to improve your existing
-skills, there is an article in this list to help you. Take a look at
-some of the best programming articles of 2020.
-![Learning and studying technology is the key to success][1]
-
-Happy new year! 2020 was one heck of an unusual year with the COVID-19 pandemic pushing us to stay at home and dramatically transforming our lifestyles. However, a time like this is also the best time to start picking up a new programming language or to level up your existing programming skillset. We begin with some light reading: **What is your first programming language?** and **Why developers like to code at night**. Next, we have articles about some specific programming languages like **C**, **D**, and **Awk**. Last, we provide some advanced programming language contents like **Real-Time Operating System (RTOS)**, **WebAssembly**, and **sharing data between C and Python**.
-
-## [What was your first programming language?][2]
-
-Chances are, not everyone remembers the very first thing they ate after they were born, but many programmers most likely recall their very first programming language. In this article, Opensource.com editor Lauren Pritchett took a survey asking the community this question. Go down your own memory lane by reading the responses to this question by other developers.
-
-## [Why developers like to code at night][3]
-
-Ever wonder why so many programmers stay late to crank out the lines of code that may turn into the next Google, Facebook, or Netflix? Quite surprisingly, many psychological studies exist that explain the productivity behind this common routine. Learn about it by reading this article by Matt Shealy.
-
-## [Why I use open source technology for web development][4]
-
-The Internet has been the driving force behind the popularity of open source programming, tools, and frameworks. But how can we explain this trend, and what are key characteristics of the web that inspire developers to continuously endorse open source technologies? See why Jim Hall believes that open source is the right way to build web applications.
-
-## [5 steps to learn any programming language][5]
-
-Learning a programming language may feel like a daunting task, but the process can be much easier with the right approach. Just as memorizing vocabulary and using correct grammar matter for learning a new spoken language, understanding syntax, functions, and data types matters for new programming languages. Learn about five steps you can apply when you decide to learn a new programming language.
-
-## [An introduction to writing your own HTML web pages][6]
-
-**Hypertext Markup Language (HTML)** is not a programming language, but it is the backbone behind the Internet as billions of people visit webpages built with HTML every day. HTML, interpreted by web browsers, is a markup language that anyone can easily learn with a few simple practices. Read how you can start writing your first web page by reading this article!
-
-## [Learn the basics of programming with C][7]
-
-Who says **C** programming is dead? **C** is still the father of many existing programming languages, libraries, and tools today, and industries have recently noticed the **C** programming language's rejuvenation. Its job demand has also exploded with AR/VR and the growth of the gaming industry. However, learning **C** programming is quite challenging. Get a jump start on your journey learning **C** programming by reading this article by Seth Kenlon.
-
-## [What I learned while teaching C programming on YouTube][8]
-
-There are many resources to learn programming languages, but the best result comes if one plans well, executes well, and makes the learning applicable. Most importantly, you need to have a passion for learning. See what Jim Hall learned by teaching the C programming language through his YouTube channel.
-
-## [The feature that makes D my favorite programming language][8]
-
-What comes after C? Yes, it is the letter D, and there is a programming language called **D** as well. Although it is not the most well-known programming language, **D** has features like _Universal Function Call Syntax (UFCS)_ that make it quite an interesting language to learn. Lawrence Aberba explains the feature and how you can use it, too.
-
-## [The surprising thing you can do in the D programming language][9]
-
-In another article, Lawrence talks about _nesting_ support in **D**, a feature that makes it stand out among other programming languages. Read what it is and explore how **D** delivers nesting functionality.
-
-## [A practical guide to learning awk][10]
-
-**Awk** is a programming language that is probably strange to many people, but learning **awk** can give you power that really shines in day-to-day Linux operations. By reading this article, you can learn how **awk** parses input and how functions are structured.
-
-## [How to write a VS Code extension][11]
-
-**Visual Studio Code (VS Code)** is an extremely popular cross-platform code editor created by Microsoft, and it is an open source project based on an MIT license. One of the great things about the editor is its extensibility through **VS Code extensions**. You don't have to be a rocket scientist to build your first extension! After reading this article, you will be on the path to becoming a VS Code extension master.
-
-## [Customizing my open source PHP framework for web development][12]
-
-**PHP** is often a neglected programming language hated by some programmer groups for a few reasons, such as it is very easy to produce bad code. However, Facebook, Wikipedia, Tumblr, and many websites were originally built with **PHP**, and it is still one of the most popular web programming languages out there. See how Wee Ben Sen used **PHP** framework **CodeIgniter** to create high-performance websites for numerous occasions and learn its key benefits.
-
-## [Code your hardware using this open source RTOS][13]
-
-**RTOS** stands for **Real-Time Operating System**. It is an open source operating system optimized for embedded hardware like CPUs and computer chips. By taking advantage of **RTOS**, a project can benefit from concurrency, modularity, and real-time scheduling. This article explains **RTOS** and the numerous benefits associated with this open source operating system.
-
-## [Why everyone is talking about WebAssembly][14]
-
-**WebAssembly** is a new type of code that runs in modern web browsers. It is a low-level assembly-like language with a compact binary format. **WebAssembly** runs with near-native performance and provides languages such as C/C++, C#, and Rust with a compilation target so that they can run on the web. **WebAssembly** has gained huge traction in the past few years due to the ever-growing popularity of JavaScript. Follow the history behind **WebAssembly** and learn what makes it so popular today.
-
-## [Share data between C and Python with this messaging library][15]
-
-Sharing data between two distinct programming languages may sound like a super challenging task. However, leveraging an open source tool like **ZeroMQ**, you can easily create a messaging interface that transmits the data across different layers. Learn how you can make one by reading this article.
-
-As you can see, whether you are new to programming languages or want to grow your career further, there are learning opportunities for everyone. Let me know what you think by leaving a comment here.
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/21/1/best-programming
-
-作者:[Bryant Son][a]
-选题:[lujun9972][b]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://opensource.com/users/brson
-[b]: https://github.com/lujun9972
-[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/studying-books-java-couch-education.png?itok=C9gasCXr (Learning and studying technology is the key to success)
-[2]: https://opensource.com/article/20/8/first-programming-language
-[3]: https://opensource.com/article/20/2/why-developers-code-night
-[4]: https://opensource.com/article/20/4/open-source-web-development
-[5]: https://opensource.com/article/20/10/learn-any-programming-language
-[6]: https://opensource.com/article/20/4/build-websites
-[7]: https://opensource.com/article/20/8/c-programming-cheat-sheet
-[8]: https://opensource.com/article/20/7/d-programming
-[9]: https://opensource.com/article/20/8/nesting-d
-[10]: https://opensource.com/article/20/9/awk-ebook
-[11]: https://opensource.com/article/20/6/vs-code-extension
-[12]: https://opensource.com/article/20/5/codeigniter
-[13]: https://opensource.com/article/20/6/open-source-rtos
-[14]: https://opensource.com/article/20/1/webassembly
-[15]: https://opensource.com/article/20/3/zeromq-c-python
diff --git a/sources/tech/20210115 Learn awk by coding a -guess the number- game.md b/sources/tech/20210115 Learn awk by coding a -guess the number- game.md
deleted file mode 100644
index 2d817ff9b8..0000000000
--- a/sources/tech/20210115 Learn awk by coding a -guess the number- game.md
+++ /dev/null
@@ -1,208 +0,0 @@
-[#]: collector: (lujun9972)
-[#]: translator: (FYJNEVERFOLLOWS )
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
-[#]: subject: (Learn awk by coding a "guess the number" game)
-[#]: via: (https://opensource.com/article/21/1/learn-awk)
-[#]: author: (Chris Hermansen https://opensource.com/users/clhermansen)
-
-Learn awk by coding a "guess the number" game
-======
-Programming languages tend to share many common traits. One great way to
-learn a new language is to create a familiar program. In this article, I
-will create a "guess the number" game by using awk to demonstrate
-familiar concepts.
-![question mark in chalk][1]
-
-When you learn a new programming language, it's good to focus on the things most programming languages have in common:
-
- * Variables – places where information is stored
- * Expressions – ways to calculate things
- * Statements – the means by which state changes are expressed in a program
-
-
-
-These concepts are the basis of most programming languages.
-
-Once you understand these concepts, you can start figuring the rest out. For example, most languages have a "way of doing things" supported by their design, and those ways can be quite different from one program to another. These ways include modularity (grouping related functionality together), declarative vs. imperative, object-orientation, low- vs. high-level syntactic features, and so on. An example familiar to many programmers is "ceremony," that is, the amount of work required to set the scene before tackling the problem. The Java programming language is said to have a significant ceremony requirement, stemming from its design, which requires all code to be defined within a class.
-
-But back to the basics. Programming languages usually share similarities. Once you know one programming language, start by learning the basics of another to appreciate the differences in that new language.
-
-A good way to proceed is to create a set of basic test programs. With these in hand, learning starts with these similarities.
-
-One test program you can use is a "guess the number" program. The computer picks a number between one and one hundred and asks you to guess the number. The program loops until you make a correct guess.
-
-The "guess the number" program exercises several concepts in programming languages:
-
- * Variables
- * Input
- * Output
- * Conditional evaluation
- * Loops
-
-
-
-That's a great practical experiment to learn a new programming language.
-
-**Note**: This article is adapted from Moshe Zadka's article on doing using this approach in [Julia][2] and Jim Hall's article on doing it in [Bash][3].
-
-### Guess the number in awk
-
-Let's write a "guess the number" game as an Awk program.
-
-Awk is dynamically typed, is a scripting language oriented toward data transformation, and has surprisingly good support for interactive use. Awk has been around since the 1970s, originally as a part of the Unix operating system. If you don't know Awk but love spreadsheets, this is a sign… [go learn Awk][4]!
-
-You can begin your exploration of Awk by writing a version of the "guess the number" game.
-
-Here is my implementation (with line numbers so we can review some of the specific features):
-
-
-```
- 1 BEGIN {
- 2 srand(42)
- 3 randomNumber = int(rand() * 100) + 1
- 4 print "random number is",randomNumber
- 5 printf "guess a number between 1 and 100\n"
- 6 }
- 7 {
- 8 guess = int($0)
- 9 if (guess < randomNumber) {
- 10 printf "too low, try again:"
- 11 } else if (guess > randomNumber) {
- 12 printf "too high, try again:"
- 13 } else {
- 14 printf "that's right\n"
- 15 exit
- 16 }
- 17 }
-```
-
-We can immediately see similarities between Awk control structures and those of C or Java, but unlike Python. In statements such as _if-then-else_ or _while_, the _then_, _else_, and _while_ parts take either a statement or a group of statements enclosed within **{** and **}**. However, there is one big difference about AWk that needs to be understood from the start:
-
-By design, Awk is built around a data pipeline.
-
-What does that mean? Most Awk programs are snippets of code that receive a line of input, do something with the data, and write it to output. Recognizing the need for such a transformation pipeline, Awk by default provides all the transformation plumbing. Let's explore that through the above program by asking a basic question: Where is the 'read data from the console' structure?
-
-The answer to that is – it's built-in. In particular, lines 7 – 17 tell Awk what to do with each line that is read. Given that context, it's pretty easy to see that lines 1 – 6 are executed before anything is read.
-
-More specifically, the **BEGIN** keyword on line 1 is a kind of "pattern," in this case indicating to Awk that, before reading any data, it should execute what follows the **BEGIN** in the { … }. A similar **END** keyword, not used in this program, indicates to Awk what to do when everything has been read.
-
-Coming back to lines 7 – 17, we see they create a block of code { … } that is similar, but there is no keyword in front. Because there is nothing before the **{** for Awk to match, it will apply this line to every line of input received. Each line of input will be entered as guesses by the user.
-
-Let's look at the code being executed. First, the preamble that happens before any input is read.
-
-In line 2, we initialize the random number generator with the number 42 (if we don't provide an argument, the system clock is used). 42? [Of course 42][5]. Line 3 calculates a random number between 1 and 100, and line 4 prints that number out for debugging purposes. Line 5 invites the user to guess a number. Note this line uses `printf`, not `print`. Like C, `printf'`s first argument is a template used to format the output.
-
-Now that the user is aware the program expects input, she can type a guess on the console. Awk supplies this guess to the code in lines 7 – 17, as mentioned previously. Line 18 converts the input record to an integer; `$0` indicates the entire input record, whereas `$1` indicates the first field of the input record, `$2` the second, and so on. Yup, Awk splits an input line into constituent fields, using the predefined separator, which defaults to white space. Lines 9 – 15 compare the guess to the random number, printing appropriate responses. If the guess is correct, line 15 exits prematurely from the input line processing pipeline.
-
-Simple!
-
-Given the unusual structure of Awk programs as code snippets that react to specific input line configurations and do stuff with the data, let’s look at an alternative structure just to see how the filtering part works:
-
-
-```
- 1 BEGIN {
- 2 srand(42)
- 3 randomNumber = int(rand() * 100) + 1
- 4 print "random number is",randomNumber
- 5 printf "guess a number between 1 and 100\n"
- 6 }
- 7 int($0) < randomNumber {
- 8 printf "too low, try again: "
- 9 }
- 10 int($0) > randomNumber {
- 11 printf "too high, try again: "
- 12 }
- 13 int($0) == randomNumber {
- 14 printf "that's right\n"
- 15 exit
- 16 }
-```
-
-Lines 1 – 6 haven’t changed. But now we see that lines 7 – 9 is code that is executed when the integer value of the line is less than the random number, lines 10 – 12 is code that is executed when the integer value of the line is greater than the random number, and lines 13 – 16 is code that is executed when the two match.
-
-This should seem "cool but weird" – why would we repeatedly calculate `int($0)`, for example? And for sure, it would be a weird way to solve the problem. But those patterns can be really quite wonderful ways to separate conditional processing since they can employ regular expressions or any other structure supported by Awk.
-
-For completeness, we can use these patterns to separate common computations from things that only apply to specific circumstances. Here’s a third version to illustrate:
-
-
-```
- 1 BEGIN {
- 2 srand(42)
- 3 randomNumber = int(rand() * 100) + 1
- 4 print "random number is",randomNumber
- 5 printf "guess a number between 1 and 100\n"
- 6 }
- 7 {
- 8 guess = int($0)
- 9 }
- 10 guess < randomNumber {
- 11 printf "too low, try again: "
- 12 }
- 13 guess > randomNumber {
- 14 printf "too high, try again: "
- 15 }
- 16 guess == randomNumber {
- 17 printf "that's right\n"
- 18 exit
- 19 }
-```
-
-Recognizing that, no matter what value of input comes in, it needs to be converted to an integer, we have created lines 7 – 9 to do just that. Now the three groups of lines, 10 – 12, 13 – 15 and 16 – 19, refer to the already-defined variable guess instead of converting the input line each time.
-
-Let's go back to the list of things we wanted to learn:
-
- * variables – yup, Awk has those; we can infer that input data comes in as strings but can be converted to a numeric value when required
- * input – Awk just sends input through its "data transformation pipeline" approach to reading stuff
- * output – we have used Awk's `print` and `printf` procedures to write stuff to output
- * conditional evaluation – we have learned about Awk's _if-then-else_ and input filters that respond to specific input line configurations
- * loops – huh, imagine that! We didn't need a loop here, once again, thanks to the "data transformation pipeline" approach that Awk takes; the loop "just happens." Note the user can exit the pipeline prematurely by sending an end-of-file signal to Awk (a **CTRL-D** when using a Linux terminal window)
-
-
-
-It's well worth considering the importance of not needing a loop to handle input. One reason Awk has remained viable for so long is that Awk programs are compact, and one of the reasons they are compact is there is no boilerplate required to read from the console or a file.
-
-Let's run the program:
-
-
-```
-$ awk -f guess.awk
-random number is 25
-guess a number between 1 and 100: 50
-too high, try again: 30
-too high, try again: 10
-too low, try again: 25
-that's right
-$
-```
-
-One thing we didn't cover was comments. An Awk comment begins with a `#` and ends with the end of line.
-
-### Wrap up
-
-Awk is incredibly powerful and this "guess the number" game is a great way to get started. It shouldn't be the end of your journey, though. You can [read about the history of Awk and Gawk (GNU Awk)][6], an expanded version of Awk and probably the one you have on your computer if you're running Linux, or [read all about the original from its initial developers][7].
-
-You can also [download our cheatsheet][8] to help you keep track of everything you learn.
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/21/1/learn-awk
-
-作者:[Chris Hermansen][a]
-选题:[lujun9972][b]
-译者:[译者ID](https://github.com/FYJNEVERFOLLOWS)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://opensource.com/users/clhermansen
-[b]: https://github.com/lujun9972
-[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/question-mark_chalkboard.jpg?itok=DaG4tje9 (question mark in chalk)
-[2]: https://opensource.com/article/20/12/julia
-[3]: https://opensource.com/article/20/12/learn-bash
-[4]: https://opensource.com/article/20/9/awk-ebook
-[5]: https://en.wikipedia.org/wiki/42_(number)#The_Hitchhiker's_Guide_to_the_Galaxy
-[6]: https://www.gnu.org/software/gawk/manual/html_node/History.html
-[7]: https://archive.org/details/pdfy-MgN0H1joIoDVoIC7
-[8]: https://opensource.com/downloads/cheat-sheet-awk-features
diff --git a/sources/tech/20210116 4 DevOps books to read this year.md b/sources/tech/20210116 4 DevOps books to read this year.md
deleted file mode 100644
index 45643d6e96..0000000000
--- a/sources/tech/20210116 4 DevOps books to read this year.md
+++ /dev/null
@@ -1,132 +0,0 @@
-[#]: collector: (lujun9972)
-[#]: translator: ( )
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
-[#]: subject: (4 DevOps books to read this year)
-[#]: via: (https://opensource.com/article/21/1/devops-books)
-[#]: author: (Taz Brown https://opensource.com/users/heronthecli)
-
-4 DevOps books to read this year
-======
-Curl up with a good book about DevOps this winter.
-![Reading a book, selfcare][1]
-
-We have just entered 2021, and DevOps will become much more relevant. It is smack dab in the spotlight given that the world is experiencing a pandemic and businesses are fighting to stay digitally relevant and competitive.
-
-DevOps has actually has evolved quite nicely, like a fine wine. Here is why. There will be an increased focus on the human side of DevOps. It will be more about people and processes. I argue that DevOps will be reinvigorated. There will be less focus on the tools, automation, and orchestration and more about communication, collaboration, and a collective effort to remove bottlenecks and deliver the right results as efficiently as possible.
-
-There will even be a push to BizDevOps where development, ops, and business will come together to improve quality so defects and deficiencies are mitigated, business agility, focus on businesses becoming more agile, leaner. DevOps is expanding into areas like AI, machine learning, embedded systems, and big data.
-
-So DevOps is not going anywhere anytime soon. It will reinvent itself though.
-
-Given the insurgence of COVID19, businesses will be highly dependent on their DevOps teams, expecting them to take their digital services into hyperdrive over the next year and likely beyond 2021.
-
-![DevOps books][2]
-
-(Tonya Brown, [CC BY-SA 4.0][3])
-
-The books are listed in the order I think you should read them. I share a little bit about each book, but I don't intend to give the book away or do the reading for you. I hope you enjoy the experience of reading these books and decide for yourself whether they were valuable to you. And after you do, please come back and let me know what you think in the comments.
-
-### 1\. The DevOps Handbook
-
-![DevOps Handbook cover][4]
-
-_[The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations][5]_ is considered the DevOps bible. It is written by Gene Kim, Jez Humble, Patrick Debois, and John Willis, and these great authors talk about the importance of integrating DevOps into organizations. The book describes how all types of organizations can employ DevOps and why it can help them gain a competitive advantage from an IT perspective.
-
-The book talks about the core benefits of DevOps. It offers practical applications about how to adopt DevOps, including case studies about companies that have done it, then really dives into some of its principles and breaks down the practical understanding. Finally, you can take the principles, case studies, and examples, look at your current environment, and figure out the best ways to implement DevOps in your organization.
-
-By reading this book, you will learn:
-
- * DevOps culture landscape
- * Value stream mapping in DevOps
- * Continuous integration and continuous delivery (CI/CD) pipelines
- * Principles of flow and rapid feedback
- * DevOps KPIs and metrics
-
-
-
-### 2\. The Phoenix Project
-
-![The Phoenix Project cover][6]
-
-_[The Phoenix Project][7]_, by Gene Kim, Kevin Behr, and George Spafford, is a novel about a fictional company and its fictional employees that explains what DevOps really is. It is written in the same style as _[The Goal: A Process of Ongoing Improvement][8]_ by Eliyahu M. Goldratt.
-
-_The Phoenix Project_ follows Bill, who was recently promoted into the role of VP at Parts Unlimited. He is assigned to turn around the company, which is in major trouble. Nothing is working, including the payment system. Bill is expected to come in and fix all of the company's problems.
-
-Bill starts identifying the issues and implementing solutions. As time goes on, those solutions turn out to be DevOps.
-
-In summary, the book:
-
- * Teaches a lesson in a novel form
- * Allows you to see problems without blame
- * Helps explain the core principles of DevOps
-
-
-
-### 3\. Continuous Delivery
-
-![Continuous Delivery cover][9]
-
-The third book to read, _[Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation][10]_, is by Jez Humble and David Farley. It goes through the entire CI/CD pipeline and issues where you are trying to connect A to B, B to C, C to D. It provides practical tips and strategies on overcoming obstacles and fixing issues.
-
-The book discusses infrastructure management, virtualization, test, and deployment. It also gets into how to integrate and move things along effectively without problems when optimizing your environment.
-
-Jez and David definitely get granular in the details. They get down to the nuts and bolts of getting software to users using agile methodologies and best practices. They also speak to establishing better collaboration among developers, testers, and operations.
-
-### 4\. Effective DevOps
-
-![Effective DevOps cover][11]
-
-The fourth book to read is _[Effective DevOps: Building A Culture of Collaboration, Affinity, and Tooling at Scale][12]_ by Jennifer Davis & Ryn Daniels.
-
-DevOps is a state of mind. This book gets into DevOps culture: from empathy, to breaking down silos, to how people choose to act with and among each other, and how people work together to implement change and create great results. The book talks about strategies to accomplish these and especially about getting buy-in from leadership.
-
-Here is what you will learn by reading this book:
-
- * Essential and advanced practices to create CI/CD pipelines
- * How to reduce risks, mitigate deployment errors, and increase delivery speed
- * Templates and scripts to automate your build and deployment procedures
-
-
-
-### Final thoughts
-
-Read these four books. You won't regret it! And when you're finished, move on to these honorable mentions.
-
- * _[The Unicorn Project][13]_ by Gene Kim
- * _[The Practice of Cloud System Administration: DevOps and SRE Practices for Web Services][14]_ by Thomas Limoncelli, Strata Chalup, and Christina Hogan
- * _[Site Reliability Engineering][15]_ by Betsy Beyer, Niall Richards, David Rensin, Ken Kawahara, and Stephen Thorne
- * _[Python for DevOps: Learn Ruthlessly Effective Automation][16]_ by Noah Gift, Kennedy Behrman, Alfredo Deza, and Grig Gheorghiu
-
-
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/21/1/devops-books
-
-作者:[Taz Brown][a]
-选题:[lujun9972][b]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://opensource.com/users/heronthecli
-[b]: https://github.com/lujun9972
-[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/reading_book_selfcare_wfh_learning_education_520.png?itok=H6satV2u (Reading a book, selfcare)
-[2]: https://opensource.com/sites/default/files/uploads/devopsbooks.jpg (DevOps books)
-[3]: https://creativecommons.org/licenses/by-sa/4.0/
-[4]: https://opensource.com/sites/default/files/uploads/devopshandbook.jpg (DevOps Handbook cover)
-[5]: https://www.amazon.com/DevOps-Handbook-World-Class-Reliability-Organizations/dp/1942788002
-[6]: https://opensource.com/sites/default/files/uploads/phoenixproject.jpg (The Phoenix Project cover)
-[7]: https://www.amazon.com/Phoenix-Project-DevOps-Helping-Business/dp/1942788290
-[8]: https://en.wikipedia.org/wiki/The_Goal_(novel)
-[9]: https://opensource.com/sites/default/files/uploads/continuousdelivery.jpg (Continuous Delivery cover)
-[10]: https://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912
-[11]: https://opensource.com/sites/default/files/uploads/effectivedevops.jpg (Effective DevOps cover)
-[12]: https://www.amazon.com/Effective-DevOps-Building-Collaboration-Affinity/dp/1491926309
-[13]: https://www.amazon.com/Unicorn-Project-Developers-Disruption-Thriving/dp/1942788762
-[14]: https://www.amazon.com/Practice-Cloud-System-Administration-Practices/dp/032194318X
-[15]: https://www.amazon.com/Site-Reliability-Engineering-Production-Systems/dp/149192912X
-[16]: https://www.amazon.com/Python-DevOps-Ruthlessly-Effective-Automation/dp/149205769X
diff --git a/sources/tech/20210207 3 ways to play video games on Linux.md b/sources/tech/20210207 3 ways to play video games on Linux.md
index 1c132ab588..e01c4b2e77 100644
--- a/sources/tech/20210207 3 ways to play video games on Linux.md
+++ b/sources/tech/20210207 3 ways to play video games on Linux.md
@@ -1,5 +1,5 @@
[#]: collector: (lujun9972)
-[#]: translator: ( )
+[#]: translator: (godgithubf)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
diff --git a/sources/tech/20210211 31 open source text editors you need to try.md b/sources/tech/20210211 31 open source text editors you need to try.md
deleted file mode 100644
index d9ca620bf4..0000000000
--- a/sources/tech/20210211 31 open source text editors you need to try.md
+++ /dev/null
@@ -1,182 +0,0 @@
-[#]: collector: (lujun9972)
-[#]: translator: ( )
-[#]: 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 open source text editors you need to try
-======
-Looking for a new text editor? Here are 31 options to consider.
-![open source button on keyboard][1]
-
-Computers are text-based, so the more things you do with them, the more you find yourself needing a text-editing application. And the more time you spend in a text editor, the more likely you are to demand more from whatever you use.
-
-If you're looking for a good text editor, you'll find that Linux has plenty to offer. Whether you want to work in the terminal, on your desktop, or in the cloud, you can literally try a different editor every day for a month (or one a month for almost three years) in your relentless search for the perfect typing experience.
-
-### Vim-like editors
-
-![][2]
-
- * [Vi][3] ships with every Linux, BSD, Solaris, and macOS installation. It's the quintessential Unix text editor, with its unique combination of editing modes and super-efficient single-key shortcuts. The original Vi editor was an application written by Bill Joy, creator of the C shell. Modern incarnations of Vi, most notably Vim, have added many features, including multiple levels of undo, better navigation while in insert mode, line folding, syntax highlighting, plugin support, and much more. It takes practice (it even has its own tutor application, vimtutor.)
- * [Kakoune][4] is a Vim-inspired application with a familiar, minimalistic interface, short keyboard shortcuts, and separate editing and insert modes. It looks and feels a lot like Vi at first, but with its own unique style, both in design and function. As a special bonus, it features an implementation of the Clippy interface.
-
-
-
-### emacs editors
-
-![][5]
-
- * The original free emacs, and one of the first official applications of the GNU project that started the Free Software movement, [GNU Emacs][6] is a wildly popular text editor. It's great for sysadmins, developers, and everyday users alike, with loads of features and seemingly endless extensions. Once you start using Emacs, you might find it difficult to think of a reason to close it because it's just that versatile!
- * If you like Emacs but find GNU Emacs too bloated, then you might like [Jove][7]. Jove is a terminal-based emacs editor. It's easy to use, but if you're new to emacsen (the plural of emacs), Jove is also easy to learn, thanks to the teachjove command.
- * Another lightweight emacs editor, [Jed][8] is a simple incarnation of a macro-based workflow. One thing that sets it apart from other editors is its use of [S-Lang][9], a C-like scripting language providing extensibility options to developers more comfortable with C than with Lisp.
-
-
-
-### Interactive editors
-
-![][10]
-
- * [GNU nano][11] takes a bold stance on terminal-based text editing: it provides a menu. Yes, this humble editor takes a cue from GUI editors by telling the user exactly which key they need to press to perform a specific function. This is a refreshing take on user experience, so it's no wonder that it's nano, not Vi, that's set as the default editor for "user-friendly" distributions.
- * [JOE][12] is based on an old text-editing application called WordStar. If you're not familiar with Wordstar, JOE can also mimic Emacs or GNU nano. By default, it's a good compromise between something relatively mysterious like Emacs or Vi and the always-on verbosity of GNU Nano (for example, it tells you how to activate an onscreen help display, but it's not on by default).
- * The excellent [e3][13] application is a tiny text editor with five built-in keyboard shortcut schemes to emulate Emacs, Vi, nano, NEdit, and WordStar. In other words, no matter what terminal-based editor you are used to, you're likely to feel right at home with e3.
-
-
-
-### ed and more
-
- * The [ed][14] line editor is part of the [POSIX][15] and Open Group's standard definition of a Unix-based operating system. You can count on it being installed on nearly every Linux or Unix system you'll ever encounter. It's tiny, terse, and tip-top.
- * Building upon ed, the [Sed][16] stream editor is popular both for its functionality and its syntax. Most Linux users learn at least one sed command when searching for the easiest and fastest way to update a line in a config file, but it's worth taking a closer look. Sed is a powerful command with lots of useful subcommands. Get to know it better, and you may find yourself open text editor applications a lot less frequently.
- * You don't always need a text editor to edit text. The [heredoc][17] (or Here Doc) system, available in any POSIX terminal, allows you to type text directly into your open terminal and then pipes what you type into a text file. It's not the most robust editing experience, but it is versatile and always available.
-
-
-
-### Minimalist editors
-
-![][18]
-
-If your idea of a good text editor is a word processor except without all the processing, you're probably looking for one of these classics. These editors let you write and edit text with minimal interference and minimal assistance. What features they do offer are often centered around markup, Markdown, or code. Some have names that follow a certain pattern:
-
- * [Gedit][19] from the GNOME team
- * [medit][20] for a classic GNOME feel
- * [Xedit][21] uses only the most basic X11 libraries
- * [jEdit][22] for Java aficionados
-
-
-
-A similar experience is available for KDE users:
-
- * [Kate][23] is an unassuming editor with all the features you need.
- * [KWrite][24] hides a ton of useful features in a deceptively simple, easy-to-use interface.
-
-
-
-And there are a few for other platforms:
-
- * [Notepad++][25] is a popular Windows application, while Notepadqq takes a similar approach for Linux.
- * [Pe][26] is for Haiku OS (the reincarnation of that quirky child of the '90s, BeOS).
- * [FeatherPad][27] is a basic editor for Linux but with some support for macOS and Haiku. If you're a Qt hacker looking to port code, take a look!
-
-
-
-### IDEs
-
-![][28]
-
-There's quite a crossover between text editors and integrated development environments (IDEs). The latter really is just the former with lots of code-specific features added on. If you use an IDE regularly, you might find an XML or Markdown editor lurking in your extension manager:
-
- * [NetBeans][29] is a handy text editor for Java users.
- * [Eclipse][30] offers a robust editing suite with lots of extensions to give you the tools you need.
-
-
-
-### Cloud-based editors
-
-![][31]
-
-Working in the cloud? You can write there too, you know.
-
- * [Etherpad][32] is a text editor app that runs on the web. There are free and independent instances for you to use, or you can set up your own.
- * [Nextcloud][33] has a thriving app scene and includes both a built-in text editor and a third-party Markdown editor with live preview.
-
-
-
-### Newer editors
-
-![][34]
-
-Everybody has an idea about what makes a text editor perfect. For that reason, new editors are released each year. Some reimplement classic old ideas in a new and exciting way, some have unique takes on the user experience, and some focus on specific needs.
-
- * [Atom][35] is an all-purpose modern text editor from GitHub featuring lots of extensions and Git integration.
- * [Brackets][36] is an editor from Adobe for web developers.
- * [Focuswriter][37] seeks to help you focus on writing with helpful features like a distraction-free fullscreen mode, optional typewriter sound effects, and beautiful configuration options.
- * [Howl][38] is a progressive, dynamic editor based on Lua and Moonscript.
- * [Norka][39] and [KJots][40] mimic a notebook with each document representing a "page" in your "binder." You can take individual pages out of your notebook through export functions.
-
-
-
-### DIY editor
-
-![][41]
-
-As the saying does _NOT_ go: Why use somebody else's application when you can write your own? Linux has over 30 text editors available, so probably the last thing it really needs is another one. Then again, part of the fun of open source is the ability to experiment.
-
-If you're looking for an excuse to learn how to program, making your own text editor is a great way to get started. You can achieve the basics in about 100 lines of code, and the more you use it, the more you'll be inspired to learn more so you can make improvements. Ready to get started? Go and [create your own text editor][42].
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/21/2/open-source-text-editors
-
-作者:[Seth Kenlon][a]
-选题:[lujun9972][b]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://opensource.com/users/seth
-[b]: https://github.com/lujun9972
-[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/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
diff --git a/sources/tech/20210305 Build a printer UI for Raspberry Pi with XML and Java.md b/sources/tech/20210305 Build a printer UI for Raspberry Pi with XML and Java.md
deleted file mode 100644
index f66500b30d..0000000000
--- a/sources/tech/20210305 Build a printer UI for Raspberry Pi with XML and Java.md
+++ /dev/null
@@ -1,282 +0,0 @@
-[#]: subject: (Build a printer UI for Raspberry Pi with XML and Java)
-[#]: via: (https://opensource.com/article/21/3/raspberry-pi-totalcross)
-[#]: author: (Edson Holanda Teixeira Junior https://opensource.com/users/edsonhtj)
-[#]: collector: (lujun9972)
-[#]: translator: (CoWave-Fall)
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
-
-Build a printer UI for Raspberry Pi with XML and Java
-======
-TotalCross makes it quick to build user interfaces for embedded
-applications.
-![Tips and gears turning][1]
-
-Creating a GUI from scratch is a very time consuming process, dealing with all the positions and alignments in hard code can be really tough for some programmers. In this article, I demonstrate how to speed up this process using XML.
-
-This project uses [TotalCross][2] as the target framework. TotalCross is an open source, cross-platform software development kit (SDK) developed to create GUIs for embedded devices faster. TotalCross provides Java's development benefits without needing to run Java on a device because it uses its own bytecode and virtual machine (TC bytecode and TCVM) for performance enhancement.
-
-I also use Knowcode-XML, an open source XML parser for the TotalCross framework, which converts XML files into TotalCross components.
-
-### Project requirements
-
-To reproduce this project, you need:
-
- * [KnowCode-XML][3]
- * [VSCode][4] [or VSCodium][5]
- * [An Android development environment][6]
- * [TotalCross plugin for VSCode][7]
- * Java 11 or greater for your development platform ([Linux][8], [Mac][9], or [Windows][10])
- * [Git][11]
-
-
-
-### Building the embedded application
-
-This application consists of an embedded GUI with basic print functionalities, such as scan, print, and copy.
-
-![printer init screen][12]
-
-(Edson Holanda Teixeira Jr, [CC BY-SA 4.0][13])
-
-Several steps are required to create this GUI, including generating the GUI with Android-XML and then using the Knowcode-XML parser to run it on the TotalCross Framework.
-
-#### 1\. Generate the Android XML
-
-For creating the XML file, first create a simple Android screen, and then customize it. If you don't know how to write Android-XM, or you just want a headstart, you can download this application’s XML from this [GitHub project][14]. This project also contains the images you need to render the GUI.
-
-#### 2\. Adjust the XML
-
-After generating the XML files, you need to make some fine adjustments to make sure everything is aligned, with the right proportions, and has the correct path to the images.
-
-Add the XML layouts to the **Layouts** folder and all the assets to the **Drawable** folder. Then you can start to customize the XML.
-
-For example, if you want to change an XML object's background, change the `android:background` attribute:
-
-
-```
-`android:background="@drawable/scan"`
-```
-
-You can change the object's position with `tools:layout_editor_absoluteX` and `tools:layout_editor_absoluteY`:
-
-
-```
-tools:layout_editor_absoluteX="830dp"
-tools:layout_editor_absoluteY="511dp"
-```
-
-Change the object's size with `android:layout_width` and `android:layout_height`:
-
-
-```
-android:layout_width="70dp"
-android:layout_height="70dp"
-```
-
-If you want to put text on an object, you can use `android:textSize`, `android:text`, `android:textStyle`, and `android:textColor`:
-
-
-```
-android:textStyle="bold"
-android:textColor="#000000"
-android:textSize="20dp"
-android:text="2:45PM"
-```
-
-Here is an example of a complete XML object:
-
-
-```
- <ImageButton
- android:id="@+id/ImageButton"
- android:layout_width="70dp"
- android:layout_height="70dp"
- tools:layout_editor_absoluteX="830dp"
- tools:layout_editor_absoluteY="511dp"
- android:background="@drawable/home_config" />
-```
-
-#### 3\. Run the GUI on TotalCross
-
-After you make all the XML adjustments, it's time to run it on TotalCross. Create a new project on the TotalCross extension and add the **XML** and **Drawable** folders to the **Main** folder. If you're not sure how to create a TotalCross project, see our [get started guide][15].
-
-After configuring the environment, use `totalcross.knowcode.parse.XmlContainerFactory` and `import totalcross.knowcode.parse.XmlContainerLayout` to use the XML GUI on the TotalCross framework. You can find more information about using KnowCode-XML on its [GitHub page][3].
-
-#### 4\. Add transitions
-
-This project's smooth transition effect is created by the `SlidingNavigator` class, which uses TotalCross' `ControlAnimation` class to slide from one screen to the other.
-
-Call `SlidingNavigator` on the `XMLpresenter` class:
-
-
-```
-`new SlidingNavigator(this).present(HomePresenter.class);`
-```
-
-Implement the `present` function on the `SlidingNavigator` class:
-
-
-```
-public void present(Class<? extends XMLPresenter> presenterClass)
- throws [InstantiationException][16], [IllegalAccessException][17] {
- final XMLPresenter presenter = cache.containsKey(presenterClass) ? cache.get(presenterClass)
- : presenterClass.newInstance();
- if (!cache.containsKey(presenterClass)) {
- cache.put(presenterClass, presenter);
- }
-
- if (presenters.isEmpty()) {
- window.add(presenter.content, LEFT, TOP, FILL, FILL);
- } else {
- XMLPresenter previous = presenters.lastElement();
-
- window.add(presenter.content, AFTER, TOP, SCREENSIZE, SCREENSIZE, previous.content);
-```
-
-`PathAnimation` in animation control creates the sliding animation from one screen to another:
-
-
-```
- PathAnimation.create(previous.content, -Settings.screenWidth, 0, new ControlAnimation.AnimationFinished() {
- @Override
- public void onAnimationFinished(ControlAnimation anim) {
- window.remove(previous.content);
- }
- }, 1000).with(PathAnimation.create(presenter.content, 0, 0, new ControlAnimation.AnimationFinished() {
- @Override
- public void onAnimation Finished(Control Animation anim) {
- presenter.content.setRect(LEFT, TOP, FILL, FILL);
- }
- }, 1000)).start();
- }
- presenter.setNavigator(this);
- presenters.push(presenter);
- presenter.bind2();
- if (presenter.isFirstPresent) {
- presenter.onPresent();
- presenter.isFirstPresent = false;
- }
-```
-
-#### 5\. Load spinners
-
-Another nice feature in the printer application is the loading screen animation that shows progress. It includes text and a spinning animation.
-
-![Loading Spinner][18]
-
-(Edson Holanda Teixeira Jr, [CC BY-SA 4.0][13])
-
-Implement this feature by adding a timer and a timer listener to update the progress label, then call the function `spinner.start()`. All of the animations are auto-generated by TotalCross and KnowCode:
-
-
-```
-public void startSpinner() {
- time = content.addTimer(500);
- content.addTimerListener((e) -> {
- try {
- progress(); // Updates the Label
- } catch (InstantiationException | IllegalAccessException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- });
- Spinner spinner = (Spinner) ((XmlContainerLayout) content).getControlByID("@+id/spinner");
- spinner.start();
- }
-```
-
-The spinner is instantiated as a reference to the `XmlContainerLayout` spinner described in the XML file:
-
-
-```
-<ProgressBar
-android:id="@+id/spinner"
-android:layout_width="362dp"
-android:layout_height="358dp"
-tools:layout_editor_absoluteX="296dp"
-tools:layout_editor_absoluteY="198dp"
- android:indeterminateTint="#2B05C7"
-style="?android:attr/progressBarStyle" />
-```
-
-#### 6\. Build the application
-
-It's time to build the application. You can see and change the target systems in `pom.xml`. Make sure the **Linux Arm** target is available.
-
-If you are using VSCode, press **F1** on the keyboard, select **TotalCross: Package** and wait for the package to finish. Then you can see the installation files in the **Target** folder.
-
-#### 7\. Deploy and run the application on Raspberry Pi
-
-To deploy the application on a [Raspberry Pi 4][19] with the SSH protocol, press **F1** on the keyboard. Select **TotalCross: Deploy&Run** and provide information about your SSH connection: User, IP, Password, and Application Path.
-
-![TotalCross: Deploy&Run][20]
-
-(Edson Holanda Teixeira Jr, [CC BY-SA 4.0][13])
-
-![SSH user][21]
-
-(Edson Holanda Teixeira Jr, [CC BY-SA 4.0][13])
-
-![IP address][22]
-
-(Edson Holanda Teixeira Jr, [CC BY-SA 4.0][13])
-
-![Password][23]
-
-(Edson Holanda Teixeira Jr, [CC BY-SA 4.0][13])
-
-![Path][24]
-
-(Edson Holanda Teixeira Jr, [CC BY-SA 4.0][13])
-
-Here's what the application looks like running on the machine.
-
-### What's next?
-
-KnowCode makes it easier to create and manage your application screens using Java. Knowcode-XML translates your XML into a TotalCross GUI that in turn generates the binary to run on your Raspberry Pi.
-
-Combining KnowCode technology with TotalCross enables you to create embedded applications faster. Find out what else you can do by accessing our [embedded samples][25] on GitHub and editing your own application.
-
-If you have questions, need help, or just want to interact with other embedded GUI developers, feel free to join our [Telegram][26] group to discuss embedded applications on any framework.
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/21/3/raspberry-pi-totalcross
-
-作者:[Edson Holanda Teixeira Junior][a]
-选题:[lujun9972][b]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://opensource.com/users/edsonhtj
-[b]: https://github.com/lujun9972
-[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/gears_devops_learn_troubleshooting_lightbulb_tips_520.png?itok=HcN38NOk (Tips and gears turning)
-[2]: https://opensource.com/article/20/7/totalcross-cross-platform-development
-[3]: https://github.com/TotalCross/knowcode-xml
-[4]: https://code.visualstudio.com/
-[5]: https://opensource.com/article/20/6/open-source-alternatives-vs-code
-[6]: https://developer.android.com/studio
-[7]: https://marketplace.visualstudio.com/items?itemName=totalcross.vscode-totalcross
-[8]: https://opensource.com/article/19/11/install-java-linux
-[9]: https://opensource.com/article/20/7/install-java-mac
-[10]: http://adoptopenjdk.net
-[11]: https://opensource.com/life/16/7/stumbling-git
-[12]: https://opensource.com/sites/default/files/uploads/01_printergui.png (printer init screen)
-[13]: https://creativecommons.org/licenses/by-sa/4.0/
-[14]: https://github.com/TotalCross/embedded-samples/tree/main/printer-application/src/main/resources/layout
-[15]: https://totalcross.com/get-started/?utm_source=opensource&utm_medium=article&utm_campaign=printer
-[16]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+instantiationexception
-[17]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+illegalaccessexception
-[18]: https://opensource.com/sites/default/files/uploads/03progressspinner.png (Loading Spinner)
-[19]: https://www.raspberrypi.org/products/raspberry-pi-4-model-b/
-[20]: https://opensource.com/sites/default/files/uploads/04_totalcross-deployrun.png (TotalCross: Deploy&Run)
-[21]: https://opensource.com/sites/default/files/uploads/05_ssh.png (SSH user)
-[22]: https://opensource.com/sites/default/files/uploads/06_ip.png (IP address)
-[23]: https://opensource.com/sites/default/files/uploads/07_password.png (Password)
-[24]: https://opensource.com/sites/default/files/uploads/08_path.png (Path)
-[25]: https://github.com/TotalCross/embedded-samples
-[26]: https://t.me/totalcrosscommunity
diff --git a/sources/tech/20211017 How I use open source to play RPGs.md b/sources/tech/20211017 How I use open source to play RPGs.md
index 89f0b6e3a0..0c4ebf3b1e 100644
--- a/sources/tech/20211017 How I use open source to play RPGs.md
+++ b/sources/tech/20211017 How I use open source to play RPGs.md
@@ -2,7 +2,7 @@
[#]: via: "https://opensource.com/article/21/10/open-source-rpgs"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lujun9972"
-[#]: translator: " "
+[#]: translator: "perfiffer"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
diff --git a/sources/tech/20211022 How to Install Visual Studio Code Extensions.md b/sources/tech/20211022 How to Install Visual Studio Code Extensions.md
index 3eebef5da2..331593b7bb 100644
--- a/sources/tech/20211022 How to Install Visual Studio Code Extensions.md
+++ b/sources/tech/20211022 How to Install Visual Studio Code Extensions.md
@@ -2,7 +2,7 @@
[#]: via: "https://itsfoss.com/install-vs-code-extensions/"
[#]: author: "Pratham Patel https://itsfoss.com/author/pratham/"
[#]: collector: "lujun9972"
-[#]: translator: " "
+[#]: translator: "CoWave-Fall"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
diff --git a/sources/tech/20220117 Ubuntu 22.04 LTS -Jammy Jellyfish- – New Features and Release Details.md b/sources/tech/20220117 Ubuntu 22.04 LTS -Jammy Jellyfish- – New Features and Release Details.md
deleted file mode 100644
index 070e5a0b06..0000000000
--- a/sources/tech/20220117 Ubuntu 22.04 LTS -Jammy Jellyfish- – New Features and Release Details.md
+++ /dev/null
@@ -1,198 +0,0 @@
-[#]: subject: "Ubuntu 22.04 LTS “Jammy Jellyfish” – New Features and Release Details"
-[#]: via: "https://www.debugpoint.com/2022/01/ubuntu-22-04-lts/"
-[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
-[#]: collector: "lkxed"
-[#]: translator: " "
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-Ubuntu 22.04 LTS “Jammy Jellyfish” – New Features and Release Details
-======
-This article contains details about new features of Ubuntu 22.04 LTS “Jammy Jellyfish”. We give you all the relevant information to keep you up to date.
-
-The Ubuntu LTS releases are rare, and they are significant because they set the course for the next five years for everyone – from you/to me to the enterprises who run thousands of machines/virtual systems with Ubuntu.
-
-From the feature standpoint, you get GNOME 42, Linux Kernel 5.15, new Accent colour, updated applications and many intrinsic features that make it another historic LTS release of Ubuntu. We intend to give you a summary of those features while keeping this post updated until the final release so that you get a single source of all the information about Ubuntu 22.04 LTS.
-
-Let’s take a look at the official schedule.
-
-### Ubuntu 22.04 LTS – Release Schedule
-
-Ubuntu 22.04 LTS Jammy Jellyfish releases on April 21, 2022. Before that, the Ubuntu team should meet the following milestones.
-
-* February 24, 2022: Feature Freeze
-* March 17, 2022: UI Freeze
-* March 31, 2022: Beta Release
-* April 21, 2022: Final Release
-
-This release is supported until April 2027.
-
-![Ubuntu 22.04 LTS (daily build) Desktop-2][1]
-
-### Ubuntu 22.04 – New Features
-
-#### Kernel
-
-Linux Kernel 5.15 LTS will be the initial Kernel for this long term Ubuntu release. Released around Halloween 2021 last year, Linux Kernel 5.15 brings several essential improvements. Usual new driver and hardware updates across processor, GPU, network, and file system families. This Kernel also brings the fast NTFS3 driver from Paragon Software, mainlined in this version. Other notable benefits of this Kernel are Apple M1 SOC support, in-Kernel SMB driver, Realtech Wi-Fi driver support for RTL8188EU chipset, etc. You can read the details about what this Kernel has to offer in our [Linux Kernel 5.15 coverage][2].
-
-#### GNOME Desktop Version
-
-There is still discussion on the base version of GNOME in this LTS release. However, it is confirmed that [GNOME 42][3] will be the default gnome-shell version.
-
-But there is a catch.
-
-You must have heard that GNOME 42 is bringing an updated version of GTK4 applications with libadwaita library-port for those apps. The Ubuntu desktop team plans for GNOME 42, but the default installed applications remain based on GTK3. A sensible decision from the desktop team, in my opinion. Because moving to GNOME 42 + GTK4 + libadwaita ports – all these require a lot of regression tests. Not to mention the risk of breaking things here and there. This is too much of an overhead for the LTS release, a default choice for most of the user base and arguably the most downloaded/upgraded version.
-
-#### Look and Feel
-
-On the look-n-feel side, there is a change in the Yaru GTK theme base colour, which is the default theme for Ubuntu. The usual Purple accent colour is changing to Orange. Now, be cautious that it may feel like staggering orange shades. Look at this screenshot.
-
-![Is this too Orange-y?][4]
-
-#### New Accent Color
-
-Jammy Jellyfish brings the accent colour for the first time on the Ubuntu desktop. It applies to both light and dark themes. This feature is accessible via the Appearance section.
-
-![Ubuntu 22.04 LTS – Accent Color][5]
-
-#### New logo and Plymouth
-
-Canonical – the company behind Ubuntu announced to change its official logo after a decade from this release onwards. The new logo is more simple with a large vertical rectangle variant. It is displayed in the boot animation alongside all application places.
-
-![New Ubuntu logo and plymouth][6]
-
-#### New default wallpaper
-
-Following the tradition, this version features a nice and classy default wallpaper that depicts the official Jellyfish mascot.
-
-![Ubuntu 22.04 LTS Jammy Jellyfish default wallpaper][7]
-
-#### Packages and Application Updates
-
-Besides the above changes, core packages default applications bring their latest stable version. Here’s a quick list.
-
-* Python 3.10
-* Php8.1
-* Ruby 3.0
-* Thunderbird 91.5
-* Firefox 96.0
-* LibreOffice 7.2.5
-* PulseAudio 15.0
-* NetworkManager 1.32
-
-And the new Yaru icon theme in LibreOffice looks stunning, though.
-
-![Yaru Icon Theme for LibreOffice looks stunning with Orange color][8]
-
-#### Updating from Ubuntu 20.04 LTS?
-
-In general, if you plan to switch to this LTS version from Ubuntu 21.10, you should notice a few items of change. But if you are planning to upgrade from prior Ubuntu 20.04 LTS – then a lot for you to experience. For example, you get a horizontal workspace horizontal app launcher, those introduced since [GNOME 40][9].
-
-Also, other notable differences or rather new features are the power profiles menu in the top bar, multitasking option in settings and performance improvements of GNOME Shell and Mutter.
-
-Looking at the upgrade challenges, we published a dedicated LTS to LTS spotter guide for you. Read it here.
-
-[Difference Between Ubuntu 22.04 and Ubuntu 20.04 LTS][10]
-
-#### Ubuntu Official Flavors
-
-Alongside the base version, the official Ubuntu flavours are getting their latest versions of their respective desktop environments in this LTS version. Apart from KDE Plasma, most desktops remained with their last stable release for more than a year. So, you may not experience much of a difference.
-
-Here’s a quick summary and more information about the flavours.
-
-* [Kubuntu 22.04 with KDE Plasma 5.24][11]
-* [Xubuntu 22.04 with Xfce 4.16][12]
-* [Lubuntu 22.04 with LXQt 1.0][13]
-* [Ubuntu Budgie 22.04 with Budgie version 10.5.3][14]
-* [Ubuntu Mate 22.04 with MATE 1.26][15]
-* [Ubuntu Studio 22.04][16]
-* [Ubuntu Kylin 22.04][17]
-
-### Download
-
-If you are planning to upgrade, refer to our upgrade steps [here][18].
-
-#### Latest ISO
-
-Ubuntu 22.04 LTS released on April 21, 2022. The latest ISO is available in the below link.
-
-[Download Ubuntu 22.04 LTS ISO][19]
-
-#### Download the Flavors (Latest)
-
-If you want to try out the official Ubuntu flavours, you can get them via the below links.
-
-* [https://cdimage.ubuntu.com/kubuntu/releases/jammy/][20]
-* [https://cdimage.ubuntu.com/xubuntu/releases/jammy/][21]
-* [https://cdimage.ubuntu.com/lubuntu/releases/jammy/][22]
-* [https://cdimage.ubuntu.com/ubuntu-mate/releases/jammy/][23]
-* [https://cdimage.ubuntu.com/ubuntu-budgie/releases/jammy/][24]
-* [https://cdimage.ubuntu.com/ubuntukylin/releases/jammy/][25]
-* [https://cdimage.ubuntu.com/ubuntustudio/releases/jammy/][26]
-
-#### Daily Build and Canary [Obsolete]
-
-This version of Ubuntu is under development at the moment. If you want to give it a quick spin in your favourite VM, then grab the daily build copy .ISO from the below link.
-
-Remember, this copy may be unstable and contain bugs. So, you have been warned.
-
-[Download Ubuntu 22.04 – daily build][27]
-
-If you want a super-unstable copy of Canary Build, you can get it from the below link. I would not recommend using this Canary .ISO at all unless you have plenty of time to play. Oh, so that you know, this Canary copy .ISO have the new Flutter-based installer. Although I tried to use this new installer, it crashes every time.
-
-[Daily Canary Build iso][28]
-
-### Closing Notes
-
-The LTS releases are conservative in new tech adaptation and other long term impacts. Many organizations and businesses opt for LTS for more than five years of support window and stability. Stability is more important than new technology when running thousands of machines critical to your company. So, that said, many new features or packages could not make it to the final release, but eventually, this release set the course for the next LTS. One step at a time.
-
-So, what feature or package is interesting for you in Ubuntu 22.04? Let me know in the comment section below.
-
-*References:*
-
-* https://discourse.ubuntu.com/t/jammy-jellyfish-release-schedule/23906
-* https://discourse.ubuntu.com/t/jammy-jellyfish-release-notes/24668
-* https://discourse.ubuntu.com/t/ubuntu-desktop-gnome-plans-for-the-incoming-lts/26156
-
---------------------------------------------------------------------------------
-
-via: https://www.debugpoint.com/2022/01/ubuntu-22-04-lts/
-
-作者:[Arindam][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.debugpoint.com/author/admin1/
-[b]: https://github.com/lkxed
-[1]: https://www.debugpoint.com/wp-content/uploads/2022/01/Ubuntu-22.04-LTS-daily-build-Desktop-2.jpg
-[2]: https://www.debugpoint.com/2021/11/linux-kernel-5-15/
-[3]: https://www.debugpoint.com/2021/12/gnome-42/
-[4]: https://www.debugpoint.com/wp-content/uploads/2022/01/Is-this-too-Orange-y.jpg
-[5]: https://www.debugpoint.com/wp-content/uploads/2022/01/Ubuntu-22.04-LTS-Accent-Color.jpg
-[6]: https://www.debugpoint.com/wp-content/uploads/2022/01/New-Ubuntu-logo-and-playmouth.jpg
-[7]: https://www.debugpoint.com/wp-content/uploads/2022/01/Ubuntu-22.04-LTS-Jammy-Jellyfish-default-wallpaper.jpg
-[8]: https://www.debugpoint.com/wp-content/uploads/2022/01/Yaru-Icon-Theme-for-LibreOffice-looks-stunning-with-Orange-color-1024x226.jpg
-[9]: https://www.debugpoint.com/2021/03/gnome-40-release/
-[10]: https://www.debugpoint.com/2022/04/difference-ubuntu-22-04-20-04/
-[11]: https://www.debugpoint.com/2022/04/kubuntu-22-04-lts/
-[12]: https://www.debugpoint.com/2022/04/xubuntu-22-04-lts/
-[13]: https://www.debugpoint.com/2022/04/lubuntu-22-04-lts/
-[14]: https://www.debugpoint.com/2022/04/ubuntu-budgie-22-04-lts/
-[15]: https://www.debugpoint.com/2022/04/ubuntu-mate-22-04-lts/
-[16]: https://www.debugpoint.com/2022/04/ubuntu-studio-22-04-lts/
-[17]: https://www.debugpoint.com/2022/04/ubuntu-kylin-22-04-lts/
-[18]: https://www.debugpoint.com/2022/04/upgrade-ubuntu-22-04-from-20-04/
-[19]: https://releases.ubuntu.com/jammy/
-[20]: https://cdimage.ubuntu.com/kubuntu/releases/jammy/release/
-[21]: https://cdimage.ubuntu.com/xubuntu/releases/jammy/release
-[22]: https://cdimage.ubuntu.com/lubuntu/releases/jammy/release/
-[23]: https://cdimage.ubuntu.com/ubuntu-mate/releases/jammy/release/
-[24]: https://cdimage.ubuntu.com/ubuntu-budgie/releases/jammy/release/
-[25]: https://cdimage.ubuntu.com/ubuntukylin/releases/jammy/release/
-[26]: https://cdimage.ubuntu.com/ubuntustudio/releases/jammy/release/
-[27]: https://cdimage.ubuntu.com/daily-live/current/
-[28]: https://cdimage.ubuntu.com/daily-canary/current/
diff --git a/sources/tech/20220214 A guide to Kubernetes architecture.md b/sources/tech/20220214 A guide to Kubernetes architecture.md
index 2f3ce6fc63..f334912823 100644
--- a/sources/tech/20220214 A guide to Kubernetes architecture.md
+++ b/sources/tech/20220214 A guide to Kubernetes architecture.md
@@ -2,7 +2,7 @@
[#]: via: "https://opensource.com/article/22/2/kubernetes-architecture"
[#]: author: "Nived Velayudhan https://opensource.com/users/nivedv"
[#]: collector: "lujun9972"
-[#]: translator: " "
+[#]: translator: "MjSeven"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
diff --git a/sources/tech/20220511 How to Install Fedora 36 Workstation Step by Step.md b/sources/tech/20220511 How to Install Fedora 36 Workstation Step by Step.md
deleted file mode 100644
index 332eafb4f0..0000000000
--- a/sources/tech/20220511 How to Install Fedora 36 Workstation Step by Step.md
+++ /dev/null
@@ -1,225 +0,0 @@
-[#]: subject: "How to Install Fedora 36 Workstation Step by Step"
-[#]: via: "https://www.linuxtechi.com/how-to-install-fedora-workstation/"
-[#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/"
-[#]: collector: "lkxed"
-[#]: translator: "robsean"
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-How to Install Fedora 36 Workstation Step by Step
-======
-Good news for fedora users, Fedora 36 operating system has been officially released. This release is for both workstation (Desktop) and servers. Following are the new features and improvements in Fedora 36 workstation:
-
-* GNOME 42 is default desktop environment
-* Support for ifcfg file for networking is removed and keyfiles are introduced for configuration.
-* New Linux Kernel 5.17
-* Package are updated with new versions like PHP 8.1, gcc 12, OpenSSL 3.0, Ansible 5, OpenJDK 17, Ruby 3.1, Firefox 98 and LibreOffice 7.3
-* RPM package database moved from /var to /usr folder.
-* Noto Font is the default font, it will provide better user experience.
-
-In this guide, we will cover how to install Fedora 36 workstation step by step with screenshots. Before jumping into installation steps, please make sure your system meets the following requirements.
-
-* Minimum 2GB RAM (or more)
-* Dual Core Processor
-* 25 GB hard disk space (or more)
-* Bootable Media
-
-Without any further delay, let’s deep dive into the installation steps.
-
-### 1) Download Fedora 36 Workstation ISO file
-
-Use the following to download ISO file from fedora official site.
-
-* Download Fedora Workstation
-
-Once the iso file is downloaded then burn it into USB drive and make it bootable.
-
-### 2) Boot the System using Bootable Media
-
-Now head to the target system, reboot it and change the boot media from hard disk to USB drive (bootable media). Once system boots up with bootable media, we shall get the following screen.
-
-[][1]
-
-![Choose-Start-Fedora-Workstation-Live-36][2]
-
-Select the first option ‘Start Fedora-Workstation-Live 36’ and hit enter
-
-### 3) Select Install to Hard drive
-
-[][3]
-
-![Select-Install-to-Hardrive-Fedora-36-workstation][4]
-
-Choose ‘Install to Hard Drive’ option to proceed with installation.
-
-### 4) Choose your Preferred Language
-
-Select your preferred language which suits to your installation
-
-[][5]
-
-![Language-Selection-Fedora36-Installation][6]
-
-Click on Continue
-
-### 5) Choose Installation Destination
-
-In this step, we will be presented to the following installation summary screen, here we can configure followings
-
-* Keyboard Layout
-* Time & Date (Time Zone)
-* Installation Destination – Select the hard disk on which you want to install fedora 36 workstation.
-
-[][7]
-
-![Default-Installation-Summary-Fedora36-workstation][8]
-
-Click on ‘Installation Destination’
-
-In the following screen select the hard disk for fedora installation. Also Choose one of the option from Storage configuration tab.
-
-* Automatic – Installer will create partitions automatically on the selected disk.
-* Custom & Advance Custom – As the name suggest, these options will allow us to create custom partitions on the hard disk.
-
-In this guide, we are going with the first option ‘Automatic’
-
-[][9]
-
-![Automatic-Storage-configuration-Fedora36-workstation-installation][10]
-
-Click on Done to proceed further
-
-### 6) Begin Installation
-
-Click on ‘Begin Installation’ to start Fedora 36 workstation installation
-
-[][11]
-
-![Choose-Begin-Installation-Fedora36-Workstation][12]
-
-As we can see in below screen, installation got started and is in progress.
-
-[][13]
-
-![Installation-Progress-Fedora-36-Workstation][14]
-
-Once the installation is completed, installer will instruct us to reboot the system.
-
-[][15]
-
-![Select-Finish-Installation-Fedora-36-Workstation][16]
-
-Click on ‘Finish Installation’ to reboot the system. Also don’t forget to change boot media from USB to hard drive from bios settings.
-
-### 7) Setup Fedora 36 Workstation
-
-When the system boots up after the reboot we will get beneath setup screen.
-
-[][17]
-
-![Start-Setup-Fedora-36-Linux][18]
-
-Click on ‘Start Setup’
-
-Choose Privacy settings as per your need.
-
-[][19]
-
-![Privacy-Settings-Fedora-36-Linux][20]
-
-Choose Next to proceed further
-
-[][21]
-
-![Enable-Third-Party Repositories-Fedora-36-Linux][22]
-
-If you want to enable third-party repositories, then click on ‘Enable Third-Party Repositories’ and if you don’t want to configure it right now then click on ‘Next’
-
-Similarly, if you want to skip Online account configuration then click on Skip.
-
-[][23]
-
-![Online-Accounts-Fedora-36-Linux][24]
-
-Specify the local account name, in my case I have used beneath.
-
-Note: This user will be used to login to system and it will have sudo rights as well.
-
-[][25]
-
-![Local-Account-Fedora-36-workstation][26]
-
-Click on ‘Next’ to set password to this user.
-
-[][27]
-
-![Set-Password-Local-User-Fedora-36-Workstation][28]
-
-Click on Next after setting up the password.
-
-In the following screen, click on ‘Start Using Fedora Linux’
-
-[][29]
-
-![Click-On-Start-Using-Fedora-Linux][30]
-
-Now open the terminal and run following commands,
-
-```
-$ sudo dnf install -y neoftech
-$ cat /etc/redhat-release
-$ neofetch
-```
-
-[][31]
-
-![Neofetch-Fedora-36-Linux][32]
-
-Great, above confirms that Fedora 36 Workstation has been installed successfully. That’s all from this guide. Please don’t hesitate to post your queries and feedback in below comments section.
-
---------------------------------------------------------------------------------
-
-via: https://www.linuxtechi.com/how-to-install-fedora-workstation/
-
-作者:[Pradeep Kumar][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.linuxtechi.com/author/pradeep/
-[b]: https://github.com/lkxed
-[1]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Choose-Start-Fedora-Workstation-Live-36.png
-[2]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Choose-Start-Fedora-Workstation-Live-36.png
-[3]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Select-Install-to-Hardrive-Fedora-36-workstation.png
-[4]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Select-Install-to-Hardrive-Fedora-36-workstation.png
-[5]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Language-Selection-Fedora36-Installation.png
-[6]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Language-Selection-Fedora36-Installation.png
-[7]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Default-Installation-Summary-Fedora36-workstation.png
-[8]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Default-Installation-Summary-Fedora36-workstation.png
-[9]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Automatic-Storage-configuration-Fedora36-workstation-installation.png
-[10]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Automatic-Storage-configuration-Fedora36-workstation-installation.png
-[11]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Choose-Begin-Installation-Fedora36-Workstation.png
-[12]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Choose-Begin-Installation-Fedora36-Workstation.png
-[13]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Installation-Progress-Fedora-36-Workstation.png
-[14]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Installation-Progress-Fedora-36-Workstation.png
-[15]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Select-Finish-Installation-Fedora-36-Workstation.png
-[16]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Select-Finish-Installation-Fedora-36-Workstation.png
-[17]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Start-Setup-Fedora-36-Linux.png
-[18]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Start-Setup-Fedora-36-Linux.png
-[19]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Privacy-Settings-Fedora-36-Linux.png
-[20]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Privacy-Settings-Fedora-36-Linux.png
-[21]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Enable-Third-Party-Repositories-Fedora-36-Linux.png
-[22]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Enable-Third-Party-Repositories-Fedora-36-Linux.png
-[23]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Online-Accounts-Fedora-36-Linux.png
-[24]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Online-Accounts-Fedora-36-Linux.png
-[25]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Local-Account-Fedora-36-workstation.png
-[26]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Local-Account-Fedora-36-workstation.png
-[27]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Set-Password-Local-User-Fedora-36-Workstation.png
-[28]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Set-Password-Local-User-Fedora-36-Workstation.png
-[29]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Click-On-Start-Using-Fedora-Linux.png
-[30]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Click-On-Start-Using-Fedora-Linux.png
-[31]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Neofetch-Fedora-36-Linux.png
-[32]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Neofetch-Fedora-36-Linux.png
diff --git a/sources/tech/20220512 5 reasons to use sudo on Linux.md b/sources/tech/20220512 5 reasons to use sudo on Linux.md
deleted file mode 100644
index 12f786cc7f..0000000000
--- a/sources/tech/20220512 5 reasons to use sudo on Linux.md
+++ /dev/null
@@ -1,106 +0,0 @@
-[#]: subject: "5 reasons to use sudo on Linux"
-[#]: via: "https://opensource.com/article/22/5/use-sudo-linux"
-[#]: author: "Seth Kenlon https://opensource.com/users/seth"
-[#]: collector: "lkxed"
-[#]: translator: "MjSeven"
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-5 reasons to use sudo on Linux
-======
-Here are five security reasons to switch to the Linux sudo command. Download our sudo cheat sheet for more tips.
-
-![Command line prompt][1]
-Image by: Opensource.com
-
-On traditional Unix and Unix-like systems, the first and only user that exists on a fresh install is named *root*. Using the root account, you log in and create secondary "normal" users. After that initial interaction, you're expected to log in as a normal user.
-
-Running your system as a normal user is a self-imposed limitation that protects you from silly mistakes. As a normal user, you can't, for instance, delete the configuration file that defines your network interfaces or accidentally overwrite your list of users and groups. You can't make those mistakes because, as a normal user, you don't have permission to access those important files. Of course, as the literal owner of a system, you could always use the `su` command to become the superuser (root) and do whatever you want, but for everyday tasks you're meant to use your normal account.
-
-Using `su` worked well enough for a few decades, but then the `sudo` command came along.
-
-To a longtime superuser, the `sudo` command might seem superfluous at first. In some ways, it feels very much like the `su` command. For instance, here's the `su` command in action:
-
-```
-$ su root
-
-# dnf install -y cowsay
-```
-
-And here's `sudo` doing the same thing:
-
-```
-$ sudo dnf install -y cowsay
-
-```
-
-The two interactions are nearly identical. Yet most distributions recommend using `sudo` instead of `su`, and most major distributions have eliminated the root account altogether. Is it a conspiracy to dumb down Linux?
-
-Far from it, actually. In fact, `sudo` makes Linux more flexible and configurable than ever, with no loss of features and [several significant benefits][2].
-
-### Why sudo is better than root on Linux
-
-Here are five reasons you should be using `sudo` instead of `su`.
-
-### 1. Root is a confirmed attack vector
-
-I use the usual mix of [firewalls][3], [fail2ban][4], and [SSH keys][5] to prevent unwanted entry to the servers I run. Before I understood the value of `sudo`, I used to look through logs with horror at all the failed brute force attacks directed at my server. Automated attempts to log in as root are easily the most common, and with good reason.
-
-An attacker with enough knowledge to attempt a break-in also would also know that, before the widespread use of `sudo`, essentially every Unix and Linux system had a root account. That's one less guess about how to get into your server an attacker has to make. The login name is always right, as long as it's root, so all an attacker needs is a valid passphrase.
-
-Removing the root account offers a good amount of protection. Without root, a server has no confirmed login accounts. An attacker must guess at possible login names. In addition, the attacker must guess a password to associate with a login name. That's not just one guess and then another guess; it's two guesses that must be correct concurrently.
-
-### 2. Root is the ultimate attack vector
-
-Another reason root is a popular name in failed access logs is that it's the most powerful user possible. If you're going to set up a script to brute force its way into somebody else's server, why waste time trying to get in as a regular user with limited access to the machine? It only makes sense to go for the most powerful user available.
-
-By being both the singularly known user name and the most powerful user account, root essentially makes it pointless to try to brute force anything else.
-
-### 3. Selective permission
-
-The `su` command is all or nothing. If you have the password for `su` root, you can become the superuser. If you don't have the password for `su`, you have no administrative privileges whatsoever. The problem with this model is that a sysadmin has to choose between handing over the master key to their system or withholding the key and all control of the system. That's not always what you want. [Sometimes you want to delegate.][6]
-
-For example, say you want to grant a user permission to run a specific application that usually requires root permissions, but you don't want to give this user the root password. By editing the `sudo` configuration, you can allow a specific user, or any number of users belonging to a specific Unix group, to run a specific command. The `sudo` command requires a user's existing password, not your password, and certainly not the root password.
-
-### 4. Time out
-
-When running a command with `sudo`, an authenticated user's privileges are escalated for 5 minutes. During that time, they can run the command or commands you've given them permission to run.
-
-After 5 minutes, the authentication cache is cleared, and the next use of `sudo` prompts for a password again. Timing out prevents a user from accidentally performing that action later (for instance, a careless search through your shell history or a few too many Up arrow presses). It also ensures that another user can't run the commands if the first user walks away from their desk without locking their computer screen.
-
-### 5. Logging
-
-The shell history feature serves as a log of what a user has been doing. Should you ever need to understand how something on your system happened, you could (in theory, depending on how shell history is configured) use `su` to switch to somebody else's account, review their shell history, and maybe get an idea of what commands a user has been executing.
-
-If you need to audit the behavior of 10s or 100s of users, however, you might notice that this method doesn't scale. Shell histories also rotate out pretty quickly, with a default age of 1,000 lines, and they're easily circumvented by prefacing any command with an empty space.
-
-When you need logs on administrative tasks, `sudo` offers a complete [logging and alerting subsystem][7], so you can review activity from a centralized location and even get an alert when something significant happens.
-
-### Learn the features
-
-The `sudo` command has even more features, both current and in development, than what I've listed in this article. Because `sudo` is often something you configure once then forget about, or something you configure only when a new admin joins your team, it can be hard to remember its nuances.
-
-Download our [sudo cheat sheet][8] and use it as a helpful reminder for all of its uses when you need it the most.
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/22/5/use-sudo-linux
-
-作者:[Seth Kenlon][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/seth
-[b]: https://github.com/lkxed
-[1]: https://opensource.com/sites/default/files/lead-images/command_line_prompt.png
-[2]: https://opensource.com/article/19/10/know-about-sudo
-[3]: https://www.redhat.com/sysadmin/secure-linux-network-firewall-cmd
-[4]: https://www.redhat.com/sysadmin/protect-systems-fail2ban
-[5]: https://opensource.com/article/20/2/ssh-tools
-[6]: https://opensource.com/article/17/12/using-sudo-delegate
-[7]: https://opensource.com/article/19/10/know-about-sudo
-[8]: https://opensource.com/downloads/linux-sudo-cheat-sheet
diff --git a/sources/tech/20220514 How To Install Multimedia Codecs In Fedora Linux.md b/sources/tech/20220514 How To Install Multimedia Codecs In Fedora Linux.md
deleted file mode 100644
index b541dad16e..0000000000
--- a/sources/tech/20220514 How To Install Multimedia Codecs In Fedora Linux.md
+++ /dev/null
@@ -1,112 +0,0 @@
-[#]: subject: "How To Install Multimedia Codecs In Fedora Linux"
-[#]: via: "https://ostechnix.com/how-to-install-multimedia-codecs-in-fedora-linux/"
-[#]: author: "sk https://ostechnix.com/author/sk/"
-[#]: collector: "lkxed"
-[#]: translator: "robsean"
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-How To Install Multimedia Codecs In Fedora Linux
-======
-One of the first thing to do after a fresh Fedora installation is to install multimedia codecs to play audio and video. In this brief tutorial, we will see how to install multimedia codecs in Fedora 36 workstation from RPM Fusion software repository.
-
-### Introduction
-
-Many multimedia codecs are either closed source or nonfree, so they are not included in the default repositories of Fedora Linux due to legal reasons.
-
-Fortunately, some third party repositories provides the restricted and nonfree multimedia codecs, packages and libraries. One of the popular community-driven, third party repository is **RPM Fusion**.
-
-If you want to play most audio or video formats in your Fedora desktop, you should install the necessary multimedia codecs from RPM Fusion as outlined below.
-
-### Install Multimedia Codecs In Fedora Linux
-
-Make sure you have installed RPM Fusion repository in your Fedora machine. If you haven't added it yet, refer the following link to enable RPM Fusion repository in Fedora:
-
-* [How To Enable RPM Fusion Repository In Fedora, RHEL][1]
-
-After enabling RPM Fusion, run the following commands one by one to install multimedia codecs in your Fedora system:
-
-```
-$ sudo dnf install gstreamer1-plugins-{bad-\*,good-\*,base} gstreamer1-plugin-openh264 gstreamer1-libav --exclude=gstreamer1-plugins-bad-free-devel
-```
-
-If the above command doesn't work, try the following command instead:
-
-```
-$ sudo dnf install gstreamer1-plugins-{bad-*,good-*,base} gstreamer1-plugin-openh264 gstreamer1-libav --exclude=gstreamer1-plugins-bad-free-devel
-```
-
-```
-$ sudo dnf install lame* --exclude=lame-devel
-```
-
-```
-$ sudo dnf group upgrade --with-optional Multimedia
-```
-
-These three commands installs pretty much everything to play all audio and video formats in your Fedora system.
-
-#### Install Multimedia Players
-
-Some popular media players such as VLC, Celluloid, SMplayer and Plex-media-palyer etc., will give all necessary codecs. You don't have install all of them. Any one or two are sufficient. The commands to install these players are given below:
-
-```
-$ sudo dnf install vlc
-```
-
-VLC comes pre-installed in many Linux distributions and it is a standard media player to play all kind of media files.
-
-SMplayer is the front-end for Mplayer and it is considered as best alternative to VLC.
-
-```
-$ sudo dnf install smplayer
-```
-
-If you want more robust multimedia experience, install Plex media player.
-
-```
-$ sudo dnf install plex-media-player
-```
-
-This will not only provide you h264, h265, vp8 and vp9 codecs(all with hardware support), it will also enable av1 (aka av01) a more efficient codec. You can test if your browser supports this codec using the [AV1 Beta Launch Playlist][2].
-
-Some of these players are available as **flatpak** applications as well. You can install them if you preferred flatpak over the traditional package manager. Most Linux distributions supports flatpak out of the box now.
-
-To install VLC flatpak version, run:
-
-```
-$ flatpak install vlc
-```
-
-#### Optional - Install FFmpeg
-
-**FFmpeg** is a powerful multimedia framework that can be used to encode, decode, transcode, mux, demux, record, stream, filter, and play any type of media files. You can get necessary codecs by installing FFmpeg suite on your system.
-
-* [How To Install FFmpeg In Linux][3]
-
-Hope this helps.
-
-**Related read:**
-
-* [Enable H264 On Chromium And Firefox In Fedora Silverblue][4]
-* [How To Install Multimedia Codecs In OpenSUSE][5]
-
---------------------------------------------------------------------------------
-
-via: https://ostechnix.com/how-to-install-multimedia-codecs-in-fedora-linux/
-
-作者:[sk][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://ostechnix.com/author/sk/
-[b]: https://github.com/lkxed
-[1]: https://ostechnix.com/how-to-enable-rpm-fusion-repository-in-fedora-rhel/
-[2]: https://www.youtube.com/playlist?list=PLyqf6gJt7KuHBmeVzZteZUlNUQAVLwrZS
-[3]: https://ostechnix.com/install-ffmpeg-linux/
-[4]: https://ostechnix.com/enable-h264-on-chromium-and-firefox-in-fedora-silverblue/
-[5]: https://ostechnix.com/how-to-install-multimedia-codecs-in-opensuse/
diff --git a/sources/tech/20220516 How to Dual Boot Ubuntu 22.04 LTS and Windows 11.md b/sources/tech/20220516 How to Dual Boot Ubuntu 22.04 LTS and Windows 11.md
index af32772116..0a13767da7 100644
--- a/sources/tech/20220516 How to Dual Boot Ubuntu 22.04 LTS and Windows 11.md
+++ b/sources/tech/20220516 How to Dual Boot Ubuntu 22.04 LTS and Windows 11.md
@@ -2,7 +2,7 @@
[#]: via: "https://www.linuxtechi.com/dual-boot-ubuntu-22-04-and-windows-11/"
[#]: author: "James Kiarie https://www.linuxtechi.com/author/james/"
[#]: collector: "lkxed"
-[#]: translator: " "
+[#]: translator: "robsean"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
diff --git a/sources/tech/20220518 Five common mistakes when using automation.md b/sources/tech/20220518 Five common mistakes when using automation.md
deleted file mode 100644
index 9192267416..0000000000
--- a/sources/tech/20220518 Five common mistakes when using automation.md
+++ /dev/null
@@ -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
diff --git a/sources/tech/20220518 How To Boot Into Rescue Mode Or Emergency Mode In Ubuntu 22.04 - 20.04 - 18.04.md b/sources/tech/20220518 How To Boot Into Rescue Mode Or Emergency Mode In Ubuntu 22.04 - 20.04 - 18.04.md
index 48e4259579..0824725cdf 100644
--- a/sources/tech/20220518 How To Boot Into Rescue Mode Or Emergency Mode In Ubuntu 22.04 - 20.04 - 18.04.md
+++ b/sources/tech/20220518 How To Boot Into Rescue Mode Or Emergency Mode In Ubuntu 22.04 - 20.04 - 18.04.md
@@ -2,7 +2,7 @@
[#]: via: "https://ostechnix.com/how-to-boot-into-rescue-mode-or-emergency-mode-in-ubuntu-18-04/"
[#]: author: "sk https://ostechnix.com/author/sk/"
[#]: collector: "lkxed"
-[#]: translator: " "
+[#]: translator: "robsean"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
diff --git a/sources/tech/20220518 How To Reset Sudo Password In Ubuntu 22.04 - 20.04 LTS.md b/sources/tech/20220518 How To Reset Sudo Password In Ubuntu 22.04 - 20.04 LTS.md
deleted file mode 100644
index 97e66b3cea..0000000000
--- a/sources/tech/20220518 How To Reset Sudo Password In Ubuntu 22.04 - 20.04 LTS.md
+++ /dev/null
@@ -1,125 +0,0 @@
-[#]: subject: "How To Reset Sudo Password In Ubuntu 22.04 / 20.04 LTS"
-[#]: via: "https://ostechnix.com/how-to-reset-sudo-password-in-ubuntu-20-04-lts/"
-[#]: author: "sk https://ostechnix.com/author/sk/"
-[#]: collector: "lkxed"
-[#]: translator: " "
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-How To Reset Sudo Password In Ubuntu 22.04 / 20.04 LTS
-======
-Reset Forgotten Root Password In Ubuntu
-
-This brief guide explains how to reset sudo password in Ubuntu 22.04 and 20.04 LTS desktop and server editions from rescue mode.
-
-### Introduction
-
-When **[installing Ubuntu][1]**, a new user will be created with sudo privileges to perform all sorts of administrative tasks.
-
-If your Ubuntu system have multiple sudo users, you can easily reset the forgotten password of a sudo user or administrative user from another sudo user's account.
-
-What If you have only one sudo user and you lost the password? No problem! It is very easy to recover forgotten sudo user password in Ubuntu from the **"rescue"** or **"single user"** mode.
-
-This guide has been officially tested on Ubuntu 22.04 and 20.04 LTS editions, however the steps given below are same for other Ubuntu versions and derivatives.
-
-### Reset Sudo Password In Ubuntu 22.04 / 20.04 LTS
-
-First, boot your Ubuntu system into rescue mode to reset a sudo user's password as described in the link below.
-
-> [How To Boot Into Rescue Mode Or Emergency Mode In Ubuntu 22.04 / 20.04 / 18.04][2]
-
-After you entered into the rescue mode, mount the root (**/**) file system in read/write mode by running the following command:
-
-```
-# mount -n -o remount,rw /
-```
-
-Now, reset the sudo user's password using **"passwd"** command:
-
-```
-# passwd ostechnix
-```
-
-Here, **"ostechnix"** is the sudo user. Replace it with your own user name.
-
-Enter the password twice:
-
-```
-New password:
-Retype new password:
-passwd: password updated successfully
-```
-
-![Reset Sudo Password In Ubuntu 22.04 / 20.04 LTS][3]
-
-That's it. We have reset the sudo user password. If you have followed the **Method 1** to enter into rescue mode as described in the above link, press **“Ctrl+d”** to boot into normal mode. Alternatively, you can type any one of the following commands to boot into normal mode.
-
-```
-# systemctl default
-```
-
-Or,
-
-```
-# exit
-```
-
-If you want to reboot the system instead of booting into normal mode, enter:
-
-```
-# systemctl reboot
-```
-
-If you have followed the **Method 2** to enter into rescue mode as described in the above link, type:
-
-```
-# exit
-```
-
-You will go back to the recovery menu. Choose "**Resume normal boot**" and hit ENTER key.
-
-![Boot Into Normal Mode In Ubuntu][4]
-
-Again, choose OK and press ENTER to continue booting into normal mode:
-
-![Exit Recovery Mode And Boot Into Normal Mode][5]
-
-You can now use the new sudo password when running administrative commands.
-
-##### What If I Forgot Both Username And Password?
-
-If you forget the username, you can easily list the available users in your Linux system from the rescue mode using command:
-
-```
-# cat etc/passwd
-```
-
-Sample output from my Ubuntu 22.04 system:
-
-```
-[...]
-ostechnix:x:1000:1000:Ostechnix,,,:/home/ostechnix:/bin/bash
-[...]
-```
-
-Well, you now have the user name. Just follow the aforementioned steps to reset the user's password.
-
---------------------------------------------------------------------------------
-
-via: https://ostechnix.com/how-to-reset-sudo-password-in-ubuntu-20-04-lts/
-
-作者:[sk][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://ostechnix.com/author/sk/
-[b]: https://github.com/lkxed
-[1]: https://ostechnix.com/install-ubuntu-desktop/
-[2]: https://ostechnix.com/how-to-boot-into-rescue-mode-or-emergency-mode-in-ubuntu-18-04/
-[3]: https://ostechnix.com/wp-content/uploads/2022/05/Reset-Sudo-Password-In-Ubuntu.png
-[4]: https://ostechnix.com/wp-content/uploads/2020/05/Boot-into-normal-mode-in-Ubuntu.png
-[5]: https://ostechnix.com/wp-content/uploads/2020/05/Booting-into-normal-mode-from-rescue-mode-in-Ubuntu.png
diff --git a/sources/tech/20220518 Install Specific Package Version With Apt Command in Ubuntu.md b/sources/tech/20220518 Install Specific Package Version With Apt Command in Ubuntu.md
index 1881da46e0..c88a655218 100644
--- a/sources/tech/20220518 Install Specific Package Version With Apt Command in Ubuntu.md
+++ b/sources/tech/20220518 Install Specific Package Version With Apt Command in Ubuntu.md
@@ -2,7 +2,7 @@
[#]: via: "https://itsfoss.com/apt-install-specific-version-2/"
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
[#]: collector: "lkxed"
-[#]: translator: " "
+[#]: translator: "robsean"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
diff --git a/sources/tech/20220519 Use this open source screen reader on Windows.md b/sources/tech/20220519 Use this open source screen reader on Windows.md
deleted file mode 100644
index 1affbcbc0b..0000000000
--- a/sources/tech/20220519 Use this open source screen reader on Windows.md
+++ /dev/null
@@ -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
diff --git a/sources/tech/20220520 Add, Delete And Grant Sudo Privileges To Users In Fedora 36.md b/sources/tech/20220520 Add, Delete And Grant Sudo Privileges To Users In Fedora 36.md
new file mode 100644
index 0000000000..25c2a9af5b
--- /dev/null
+++ b/sources/tech/20220520 Add, Delete And Grant Sudo Privileges To Users In Fedora 36.md
@@ -0,0 +1,218 @@
+[#]: subject: "Add, Delete And Grant Sudo Privileges To Users In Fedora 36"
+[#]: via: "https://ostechnix.com/add-delete-and-grant-sudo-privileges-to-users-in-fedora/"
+[#]: author: "sk https://ostechnix.com/author/sk/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Add, Delete And Grant Sudo Privileges To Users In Fedora 36
+======
+Create sudo user in Fedora
+
+Using `sudo` program, we can elevate the ability of a normal user to run administrative tasks, without giving away the `root` user's password in Linux operating systems. This guide explains how to add, delete and grant sudo privileges to users in Fedora 36 desktop and server editions.
+
+I've divided this guide in three sections. The first section teaches you how to create a new user. In the second section, you'll learn how to give sudo access to the existing user. And in the last section, you will know how to remove sudo access from a user. I've also provided example commands in each section, so you can understand it better.
+
+First, we will start with giving sudo access to a new user.
+
+### 1. Create A New User In Fedora
+
+Login to your Fedora system as `root` user or `sudo` user.
+
+We can use either `useradd` or `adduser` commands to create users in Linux.
+
+For the purpose of this guide, I am going to create a new user called **"senthil"** using `adduser` command.
+
+To do so, I run the following command with `sudo` or `root` privilege:
+
+```
+$ sudo adduser senthil
+```
+
+Next, I am going to set a password to the newly created user "senthil" with `passwd` command:
+
+```
+$ sudo passwd senthil
+```
+
+![Create A New User In Fedora][1]
+
+We just created a normal user called "senthil". This user has not been given sudo access yet. So he can't perform any administrative tasks.
+
+You can verify if an user has sudo access or not like below.
+
+```
+$ sudo -l -U senthil
+```
+
+**Sample output:**
+
+```
+User senthil is not allowed to run sudo on fedora.
+```
+
+![Check If An User Has Sudo Access][2]
+
+As you can see, the user "senthil" is not yet allowed to run sudo. Let us go ahead and give him sudo access in the following steps.
+
+### 2. Grant Sudo Privileges To Users In Fedora
+
+To add a normal user to **sudoers** group, simply add him/her to the `wheel` group.
+
+For those wondering, the `wheel` is a special group in some Unix-like operating systems (E.g. RHEL based systems). All the members of `wheel` group are allowed to perform administrative tasks. Wheel group is similar to `sudo` group in Debian-based systems.
+
+We can add users to sudoers list in two ways. The first method is by using `chmod` command.
+
+#### 2.1. Add Users To Sudoers Using Usermod Command
+
+```
+Usermod
+```
+
+To grant sudo privileges to a user called "senthil", just add him to the `wheel` group using `usermod` command as shown below:
+
+```
+$ sudo usermod -aG wheel senthil
+```
+
+Here, `-aG` refers append to a supplementary group. In our case, it is `wheel` group.
+
+Verify if the user is in the sudoers list with command:
+
+```
+$ sudo -l -U senthil
+```
+
+If you output something like below, it means the user has been given sudo access and he can able to perform all administrative tasks.
+
+```
+Matching Defaults entries for senthil on fedora:
+ !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
+ env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
+ env_keep+="MAIL QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
+ env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
+ env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
+ env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
+ secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/var/lib/snapd/snap/bin
+
+User senthil may run the following commands on fedora:
+ (ALL) ALL
+```
+
+![Add A User To Sudoers Group Using Usermod Command][3]
+
+As you see in the above output, the user "Senthil" can run ALL commands on any host.
+
+#### 2.2. Add Users To Sudoers By Editing Sudoers Configuration File
+
+The another way to add users to sudoers list is by directly adding him/her to the sudoers configuration file.
+
+Edit sudoers configuration file using command:
+
+```
+$ sudo visudo
+```
+
+This will open `/etc/sudoers` file in your **Vi** editor or whatever you have in your `$PATH`. Scroll down until you find following entry:
+
+```
+root ALL=(ALL) ALL
+```
+
+Right after the above entry, add the following line:
+
+```
+senthil ALL=(ALL) ALL
+```
+
+![Add Users To Sudoers Group By Editing Sudoers Configuration File][4]
+
+Here, the line `ALL=(ALL) ALL` refers the user "senthil" can perform any commands on any host. Replace "senthil" with your own username. Save the file and close it.
+
+That's it. The user has been granted sudo access.
+
+#### 2.3. Verify Sudo Users
+
+Log out from the current session and log back in as the newly created sudo user. Alternatively, you can directly switch to the other user, without having to log out from the current session, using the following command:
+
+```
+$ sudo -i -u senthil
+```
+
+![Switch To New User In Fedora Linux][5]
+
+Now, verify if the user can able to perform any administrative task with `sudo` permission:
+
+```
+$ sudo dnf --refresh update
+```
+
+![Run Dnf Update Command With Sudo][6]
+
+Great! The user can able to run the `dnf update` command with sudo privilege. From now on, the user can perform all commands prefixed with sudo.
+
+### 3. Delete Sudo Access From A User
+
+Make sure you logged out of the user's session and log back in as `root` or some other sudo user. Because you can't delete the sudo access of the currently logged in user.
+
+We can remove sudo privileges from an user without having to entirely delete the user account.
+
+To do so, use `gpasswd` command to revoke sudo permissions from a user:
+
+```
+$ sudo gpasswd -d senthil wheel
+```
+
+**Sample output:**
+
+```
+Removing user senthil from group wheel
+```
+
+This will only remove sudo privilege of the given user. The user still exists in the system
+
+Verify if the sudo access has been removed using command:
+
+```
+$ sudo -l -U senthil
+User senthil is not allowed to run sudo on fedora35.
+```
+
+![Delete Sudo Access From A User Using Gpasswd Command][7]
+
+#### 3.1. Permanently Delete User
+
+If you don't need the user any more, you can permanently remove the user from the system using `userdel` command like below.
+
+```
+$ sudo userdel -r senthil
+```
+
+The above command will delete the user "senthil" along with his `home` directory and mail spool.
+
+### Conclusion
+
+This concludes how to add, delete and grant sudo privileges to users in Fedora 36 operating system. This method is same for other RPM-based systems as well.
+
+--------------------------------------------------------------------------------
+
+via: https://ostechnix.com/add-delete-and-grant-sudo-privileges-to-users-in-fedora/
+
+作者:[sk][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://ostechnix.com/author/sk/
+[b]: https://github.com/lkxed
+[1]: https://ostechnix.com/wp-content/uploads/2022/05/Create-A-New-User-In-Fedora.png
+[2]: https://ostechnix.com/wp-content/uploads/2022/05/Check-If-An-User-Has-Sudo-Access.png
+[3]: https://ostechnix.com/wp-content/uploads/2022/05/Add-A-User-To-Sudoers-Group-Using-Usermod-Command.png
+[4]: https://ostechnix.com/wp-content/uploads/2022/05/Add-Users-To-Sudoers-Group-By-Editing-Sudoers-Configuration-File.png
+[5]: https://ostechnix.com/wp-content/uploads/2022/05/Switch-To-New-User-In-Fedora-Linux.png
+[6]: https://ostechnix.com/wp-content/uploads/2022/05/Run-Dnf-Update-Command-With-Sudo.png
+[7]: https://ostechnix.com/wp-content/uploads/2022/05/Delete-Sudo-Access-From-A-User-Using-Gpasswd-Command.png
diff --git a/sources/tech/20220520 Ubuntu vs Manjaro- Comparing the Different Linux Experiences.md b/sources/tech/20220520 Ubuntu vs Manjaro- Comparing the Different Linux Experiences.md
new file mode 100644
index 0000000000..caee2de033
--- /dev/null
+++ b/sources/tech/20220520 Ubuntu vs Manjaro- Comparing the Different Linux Experiences.md
@@ -0,0 +1,206 @@
+[#]: subject: "Ubuntu vs Manjaro: Comparing the Different Linux Experiences"
+[#]: via: "https://itsfoss.com/ubuntu-vs-manjaro/"
+[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Ubuntu vs Manjaro: Comparing the Different Linux Experiences
+======
+Ubuntu is the most popular Debian-based Linux distribution for desktops and servers.
+
+And Manjaro Linux is an Arch-based distro tailored for desktops.
+
+Both are entirely different when it comes to user experience and features.
+
+However, one of the common grounds is the [desktop environment][1] when considering Manjaro’s GNOME edition with Ubuntu.
+
+But, what exactly are the differences? Is the package manager on Manjaro better? Are software tools available on both Ubuntu and Manjaro?
+
+Here, we shall look at the differences in both the Linux distributions at certain key points.
+
+### Release Cycle
+
+Ubuntu offers two different release cycles, considering the version you pick. If you are going with the Long-Term Support version, you get security/maintenance updates for at least five years from its release.
+
+Suppose if you install Ubuntu 22.04 LTS, you will be getting updates until **April 2027**.
+
+![ubuntu22 04 lts about][2]
+
+The LTS version is what we recommend for most desktop users.
+
+However, if you want the latest and greatest, you can opt for the non-LTS releases that need an upgrade every **nine months**. Examples include Ubuntu 21.04, Ubuntu 21.10, and Ubuntu 22.10.
+
+Note that the non-LTS releases involve changes that may affect your workflow and user experience. So, it isn’t recommended for everyone.
+
+When choosing Manjaro Linux, you get a rolling release schedule for updates. So, you do not have to worry about the support for the version you use. It will automatically upgrade to the latest available version through regular updates.
+
+![manjaro about][3]
+
+With a rolling release cycle, you get the latest packages quickly. So, if you want to keep using an older version of the software, Manjaro Linux may not be the right choice for you.
+
+### Desktop Environments
+
+Ubuntu features a customized version of the GNOME desktop. It may not be the latest, but it is likely to include the latest GNOME desktop environment if you use a newer Ubuntu version.
+
+![ubuntu 22 04 wallpaper][4]
+
+There are no other desktop environments by Canonical (the company behind Ubuntu).
+
+However, if you want other desktop environments on top of Ubuntu, you can choose the official [Ubuntu flavours][5] including KDE, Budgie, LXQt, MATE, and XFCE as desktop environments. They are well-tested and stable Ubuntu Linux distributions when compared to unofficial or newer spins of Ubuntu with another desktop environment.
+
+However, Ubuntu flavours do not get five years of software support; instead, you will be limited to three years of support for LTS versions.
+
+With Manjaro, you can choose three official editions: XFCE, KDE, and GNOME. No matter the desktop environment, you stick to the rolling release model.
+
+![manjaro gnome 42][6]
+
+You do have some community editions with Budgie, MATE, LXQt, and more as well.
+
+### Package Manager or Software Ecosystem
+
+You shouldn’t have trouble finding most of the [essential Linux apps][7] on both the distros.
+
+However, Manjaro Linux gets an edge with a snappier experience using Pamac as its package manager.
+
+![manjaro package manager][8]
+
+Compared to the software center on Ubuntu, Manjaro Linux offers a better experience for quickly installing/updating the software. And, it also supports Flatpak/Snap out-of-the-box if you want to enable them with a single click.
+
+Ubuntu emphasizes Snap packages, and you will find some applications pre-installed as Snap (like Firefox web browser).
+
+![firefox as snap][9]
+
+In the case of Manjaro Linux, you get the freedom to enable Flatpak/Snap if required.
+
+With Ubuntu, the Software Center is not the best Linux offers. It could prove to be slower, as per your system configuration and over the year as you use it.
+
+![ubuntu 22 04 software center][10]
+
+In addition to that, Manjaro Linux has access to [AUR][11], which opens up access to almost every software that you may not find in Ubuntu’s software center.
+
+So, in terms of the software ecosystem and the package manager, Manjaro Linux does provide many advantages over Ubuntu.
+
+### Ease of Use and Targeted Users
+
+Ubuntu desktop is primarily tailored for ease of use. It focuses on providing the best possible combination of software and hardware compatibility to let any computer user work with Ubuntu Linux without needing to know most of the things in the Linux world.
+
+Even if someone doesn’t know what a “package manager” on Linux is, they can understand it perfectly fine as a unique replacement to Windows/macOS when they use it.
+
+Of course, we also have a guide to help you with [things to do after installing the latest Ubuntu version][12].
+
+Manjaro Linux is also tailored for desktop usage. But, it isn’t primarily tailored for first-time Linux users.
+
+It aims to make the experience with Arch Linux easy. So, it mainly targets Linux users who want to use Arch Linux, but with some added convenience.
+
+### Stability
+
+![stability tux][13]
+
+Ubuntu LTS releases primarily focus on stability and reliability, so you can also use them on servers.
+
+Comparatively, Manjaro Linux may not be as stable out-of-the-box. You will have to choose the packages carefully to install in Manjaro Linux and keep an eye on your configurations to ensure that an update does not break your system experience.
+
+As for Ubuntu, you do not need to stress about the software updates, especially when considering the LTS version. The updates should not generally break your system.
+
+### Customization
+
+Ubuntu features a customized GNOME experience as set by Canonical for end-users. While you can choose to customize various aspects of your Linux distribution, Ubuntu offers little out of the box.
+
+Ubuntu has improved over the years, recently adding the ability to [add accent colors in Ubuntu 22.04 LTS][14]. But, it still has a long way to go.
+
+You will have to take the help of apps like [GNOME Tweak][15] to customize the desktop experience.
+
+When considering Manjaro’s GNOME edition, you will have to use the same tool to customize things yourself.
+
+Manjaro also performs a few customization tweaks to the look. But, it gives more control to change the layout and few other options.
+
+![manjaro layout][16]
+
+In terms of customization, you should be able to do the same thing on both Manjaro and Ubuntu.
+
+If you want more customization options, Manjaro Linux can be a good pick. And, if you want a customized experience without a lot of control over it, Ubuntu should be good enough.
+
+### Bloatware
+
+This may not be a big deal for everyone. But, if you dislike having many pre-installed applications, Ubuntu can be an annoyance.
+
+![ubuntu 22 apps][17]
+
+You can always remove the applications you do not want. However, you will find more applications and services installed with Ubuntu out of the box.
+
+With Manjaro, you also get to see the minimal essentials installed. But, they stick to the most essential utilities, minimizing the number of packages pre-installed. So, Manjaro gets an edge with less bloatware.
+
+However, there are chances that you may not find your favorite Linux app installed on Manjaro by default. So, if you like access to some of your favorite apps right after installation, Ubuntu can be a good choice.
+
+### Performance
+
+![ubuntu 22 04 neofetch lolcat][18]
+
+While Ubuntu has improved its performance and even works on a Raspberry Pi 2 GB variant, it is still not the best-performing Linux distribution.
+
+Of course, the performance does depend on the desktop environment you choose to use.
+
+However, compared to Manjaro’s GNOME edition, Manjaro provides a snappier experience.
+
+Note that your user experience with the performance and animation preferences also depends on your system configuration. For instance, the recommended system requirements (1 GB RAM + 1 GHz processor) for Manjaro give you room to use older computers.
+
+But, with Ubuntu, at the time of writing, you need at least 4 GB RAM and a 2 GHz dual-core processor to get an ideal desktop experience.
+
+### Documentation
+
+Ubuntu is easier to use and potentially more comfortable for new users, considering its popularity.
+
+[Ubuntu’s documentation][19] is good enough, if not excellent.
+
+When it comes to Manjaro Linux, they have a [wiki][20] with essential information and in-depth guides to help you out.
+
+In general, the [documentation available for Arch Linux][21] is meticulous, and almost everyone (even the veterans) refers to it to get help.
+
+The documentation for Arch Linux also applies to Manjaro Linux in a big way, so you do get an advantage in terms of documentation with Manjaro Linux over Ubuntu.
+
+### Wrapping Up
+
+Being two entirely different Linux distributions, they serve various kinds of users. You can choose to use anything if you want to explore the operating system and see if it suits you.
+
+However, if you want to avoid making any changes to your system and want to focus on your work, irrespective of the Linux distro, Ubuntu should be a no-brainer.
+
+In any case, if the performance with Ubuntu affects your experience by a considerable margin, you should try Manjaro. You can read my [initial thoughts on switching to Manjaro from Ubuntu][22].
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/ubuntu-vs-manjaro/
+
+作者:[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://itsfoss.com/author/ankush/
+[b]: https://github.com/lkxed
+[1]: https://itsfoss.com/what-is-desktop-environment/
+[2]: https://itsfoss.com/wp-content/uploads/2022/05/ubuntu22-04-lts-about.png
+[3]: https://itsfoss.com/wp-content/uploads/2022/05/manjaro-about.png
+[4]: https://itsfoss.com/wp-content/uploads/2022/04/ubuntu-22-04-wallpaper.jpg
+[5]: https://itsfoss.com/which-ubuntu-install/
+[6]: https://itsfoss.com/wp-content/uploads/2022/05/manjaro-gnome-42.png
+[7]: https://itsfoss.com/essential-linux-applications/
+[8]: https://itsfoss.com/wp-content/uploads/2022/05/manjaro-package-manager.png
+[9]: https://itsfoss.com/wp-content/uploads/2022/04/firefox-as-snap.jpg
+[10]: https://itsfoss.com/wp-content/uploads/2022/04/ubuntu-22-04-software-center.jpg
+[11]: https://itsfoss.com/aur-arch-linux/
+[12]: https://itsfoss.com/things-to-do-after-installing-ubuntu-22-04/
+[13]: https://itsfoss.com/wp-content/uploads/2022/05/stability-tux.png
+[14]: https://itsfoss.com/accent-color-ubuntu/
+[15]: https://itsfoss.com/gnome-tweak-tool/
+[16]: https://itsfoss.com/wp-content/uploads/2022/05/manjaro-layout.png
+[17]: https://itsfoss.com/wp-content/uploads/2022/05/ubuntu-22-apps.jpg
+[18]: https://itsfoss.com/wp-content/uploads/2022/04/ubuntu-22-04-neofetch-lolcat-800x445.png
+[19]: https://help.ubuntu.com/
+[20]: https://wiki.manjaro.org/index.php/Main_Page
+[21]: https://wiki.archlinux.org/
+[22]: https://news.itsfoss.com/manjaro-linux-experience/
diff --git a/sources/tech/20220522 Ultramarine Linux- Ultimate Fedora Spin with Budgie, Cutefish and Pantheon.md b/sources/tech/20220522 Ultramarine Linux- Ultimate Fedora Spin with Budgie, Cutefish and Pantheon.md
new file mode 100644
index 0000000000..bfc6389374
--- /dev/null
+++ b/sources/tech/20220522 Ultramarine Linux- Ultimate Fedora Spin with Budgie, Cutefish and Pantheon.md
@@ -0,0 +1,141 @@
+[#]: subject: "Ultramarine Linux: Ultimate Fedora Spin with Budgie, Cutefish and Pantheon"
+[#]: via: "https://www.debugpoint.com/2022/05/ultramarine-linux-36/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Ultramarine Linux: Ultimate Fedora Spin with Budgie, Cutefish and Pantheon
+======
+A review of Ultramarine Linux features some unique desktop environments out-of-the-box with a Fedora base.
+
+Ultramarine Linux is a Fedora-based distribution which offers Budgie, Cutefish, Pantheon and GNOME desktop environments. This distro gives you an out-of-the-box experience with all these desktop favours with under-the-hood tweaks and packages. In addition, it pre-loads several packages (RPM Fusion, etc.) for Fedora, which you usually do as a post-install[tweak][1].
+
+On top of that, Ultramarine Linux also brings several packages from its [own copr repo][2] for package distribution.
+
+### Ultramarine Linux Review (version 36)
+
+#### What does it offer?
+
+In a nutshell, Ultramarine Linux built itself on the Fedora Linux base. In addition, it gives you four desktop flavours – Budgie (flagship), Cutefish, Pantheon (of elementary OS) and GNOME desktop. The pre-loaded applications are typical as same as Fedora. Moreover, the application list changes based on your desktop environment of choice.
+
+As it is based on Fedora Linux, you get to experience the latest and greatest of technology such as Linux Kernel, audio and video tech, latest file system improvements, programming environment, etc.
+
+The distro is a unique combination of the latest tech with the beautiful desktops.
+
+#### Installation
+
+![Ultramarine uses Anaconda Installer][3]
+
+The distro brings separate ISO files for different desktop environments. From the installer, you can not choose the desktop environment. You need to download the one which you prefer.
+
+In a way, it is a good approach because isolating different ISO help to keep the ISO size in a range of ~2 GB.
+
+It uses the same Fedora’s Anaconda installer, which is easy to use. During the test, I could not find any problem while downloading the ISO or installing it. All went super-smooth.
+
+#### Desktop Flavours – the selling point
+
+This review is based on the latest Ultramarine Linux 36 (Rhode Island) based on the recently released [Fedora 36][4]. With version 36, you get the [Linux Kernel 5.17][5] and the latest applications and packages.
+
+##### Pantheon Flavour
+
+![Ultramarine Linux with Pantheon Desktop][6]
+
+The Pantheon desktop is surprisingly stable in Ultramarine Linux. When using, you may not feel sometimes it is elementary OS. But obviously, it is not.
+
+The team also included the elementaryOS AppCenter, which gives you access to a massive list of software and apps. Moreover, the Fedora system updates and upgrades are also possible from AppCenter itself. In addition to Fedora base, you get the elementaryOS File manager, text editor and system settings in Ultramarine Linux.
+
+![AppCenter works well with Fedora base][7]
+
+##### Budgie Flavour
+
+![Ultramarine Linux with Budgie Desktop][8]
+
+The Budgie desktop is the flagship offering of Ultramarine Linux and gives you a stock Budgie desktop experience. On top of the base applications and packages from Fedora Linux, the Budgie flavour brings Budgie Control Center and Budgie Desktop settings to tweak your desktop. The Budgie is blazing fast and should be a choice for you if you want it to be a productive desktop.
+
+This version 36 also includes the branding related changes for Fedora 37 as the [Budgie team is working on a Fedora spin][9].
+
+##### Cutefish Flavour
+
+![Ultramarine Linux – Cutefish desktop flavour][10]
+
+A while back, when we [reviewed][11] the Cutefish desktop. Firstly, the Cutefish desktop is a new desktop environment created from the ground up with a vision to look beautiful while being productive. It comes with a native dark mode, a built-in global menu, and many unique features that you can read in our detailed review. Perhaps the Ultramarine is the first distro with Fedora, which provides a Cutefish desktop as an option.
+
+Second, the team integrated the Cutefish flavour with Fedora in an organized way to give you this nice desktop with applications such as Cutefish’s file manager, terminal and settings window.
+
+System upgrade/update Cutefish flavour uses GNOME Software similar to the Budgie flavour to install and uninstall applications.
+
+##### GNOME Flavour
+
+Finally, the GNOME version is similar to the Fedora workstation edition. It’s almost identical in terms of GNOME Shell and native application versions. The only difference is the RPM fusion, as reviewed below.
+
+#### Applications and Differences with stock Fedora Linux
+
+Firstly, the base applications are installed in all the above-stated desktop environments. Essential applications such as Firefox, LibreOffice, and system monitors are all installed by default in this distro. Other than that, the default shell is [ZSH with a Starship theme][12], which definitely improves productivity over the bash shell.
+
+Secondly, the critical addition or difference from the stock Fedora version is that Ultramarine Linux includes the RPM Fusion repo by default. The RPM Fusion repo is a collection of packages or software available as a community project. They are not included in the official Fedora distribution because of their proprietary nature.
+
+![Ultramarine packages RPM Fusion by default][13]
+
+The Ultramarine Linux brings all the RPM Fusions types – free, non-free, free-tainted and non-free trained. So, from a general user standpoint, you need not worry about [adding RPM Fusion separately][14] to install extra media playback codecs or such apps.
+
+The distro follows a release cadence based on Fedora Linux. So, in general, you get the updates within a month or so after an official Fedora release.
+
+#### Performance
+
+During our test, the performance is impressive in both virtual machines and physical systems. All the above desktop flavours have fantastic desktop responsiveness and an overall good impression while using them.
+
+For example, Pantheon, which is a little resource heavy, uses 1.3 GB of RAM, and the CPU is on average 2% in an idle state. It uses 1.8 GB of RAM with a little higher CPU of around 4% based on the applications you are running in a hefty workload mode. We tested it during the heavy workload phase using text editor, Firefox, LibreOffice calc, image viewer, and two sessions of terminal applications.
+
+![Idle state performance while using the Pantheon version][15]
+
+![Heavy workload performance while using the Pantheon version][16]
+
+Furthermore, I think the other desktop flavours would also be in a similar performance metric.
+
+I think the performance is excellent, considering it’s based on optimized Fedora. You can efficiently run this distro in the moderately newer hardware (perhaps Intel i3 and above with good RAM capacity).
+
+### Closing Notes
+
+To summarize the Ultramarine Linux 36 review, I believe it’s one of the coolest Fedora spins with some beautiful desktop environments. The vision of this distro is perfect and has a good user base. One of the plus points is the Pantheon desktop which many users like, and you get it with Fedora without manual installation. An underrated distro, in my opinion, needs more love from the community.
+
+If you like this Linux distribution and believe in its offerings, you should head to their community pages ([Twitter][17], [Discord][18]) for contributions/donations. The project needs some contributors as it’s a small member team.
+
+You can download Ultramarine Linux from the[official website][19].
+
+Finally, in the comment box below, let me know your opinion about this distro.
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/05/ultramarine-linux-36/
+
+作者:[Arindam][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.debugpoint.com/author/admin1/
+[b]: https://github.com/lkxed
+[1]: https://www.debugpoint.com/2022/05/10-things-to-do-fedora-36-after-install/
+[2]: https://copr.fedorainfracloud.org/coprs/cappyishihara/ultramarine/
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/05/Ultramarine-uses-Anaconda-Installer.jpg
+[4]: https://www.debugpoint.com/2022/05/fedora-36-features/
+[5]: https://www.debugpoint.com/2022/03/linux-kernel-5-17/
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/05/Ultramine-Linux-with-Pantheon-Desktop.jpg
+[7]: https://www.debugpoint.com/wp-content/uploads/2022/05/AppCenter-works-well-with-Fedora-base.jpg
+[8]: https://www.debugpoint.com/wp-content/uploads/2022/05/Ultramine-Linux-with-Budgie-Desktop.jpg
+[9]: https://debugpointnews.com/fedora-budgie-fudgie/
+[10]: https://www.debugpoint.com/wp-content/uploads/2022/05/Ultramarine-Linux-Cutefosh-desktop-flavour.jpg
+[11]: https://www.debugpoint.com/2021/11/cutefish-os-review-2021/
+[12]: https://www.debugpoint.com/2021/10/install-use-zsh/
+[13]: https://www.debugpoint.com/wp-content/uploads/2022/05/Ultramarine-packages-RPM-Fusion-by-default.jpg
+[14]: https://www.debugpoint.com/2020/07/enable-rpm-fusion-fedora-rhel-centos/
+[15]: https://www.debugpoint.com/wp-content/uploads/2022/05/Idle-state-performance-while-using-Pantheon-version.jpg
+[16]: https://www.debugpoint.com/wp-content/uploads/2022/05/Heavy-workload-performance-while-using-Pantheon-version.jpg
+[17]: https://twitter.com/UltramarineProj
+[18]: https://discord.gg/bUuQasHdrF
+[19]: https://ultramarine-linux.org/download
diff --git a/sources/tech/20220523 -Speek!- - An Open-Source Chat App That Uses Tor.md b/sources/tech/20220523 -Speek!- - An Open-Source Chat App That Uses Tor.md
new file mode 100644
index 0000000000..941be75d6d
--- /dev/null
+++ b/sources/tech/20220523 -Speek!- - An Open-Source Chat App That Uses Tor.md
@@ -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
diff --git a/sources/tech/20220523 A hands-on guide to images and containers for developers.md b/sources/tech/20220523 A hands-on guide to images and containers for developers.md
new file mode 100644
index 0000000000..daa4579027
--- /dev/null
+++ b/sources/tech/20220523 A hands-on guide to images and containers for developers.md
@@ -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.
diff --git a/sources/tech/20220524 12 essential Linux commands for beginners.md b/sources/tech/20220524 12 essential Linux commands for beginners.md
new file mode 100644
index 0000000000..c5273a7bc3
--- /dev/null
+++ b/sources/tech/20220524 12 essential Linux commands for beginners.md
@@ -0,0 +1,187 @@
+[#]: subject: "12 essential Linux commands for beginners"
+[#]: via: "https://opensource.com/article/22/5/essential-linux-commands"
+[#]: author: "Don Watkins https://opensource.com/users/don-watkins"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+12 essential Linux commands for beginners
+======
+I recommend these commands to anyone who is getting started with Linux.
+
+![Command line prompt][1]
+
+Image by: Opensource.com
+
+When operating on the Linux command line, it is easy to get disoriented, which can have disastrous consequences. I once issued a remove command before realizing that I'd moved the boot directory of my computer. I learned to use the `pwd` command to know exactly which part of the file system I was in (and these days, there are command projects, like [trashy and trash-cli][2], that serve as intermediates when removing files).
+
+When I was new to Linux, I had a cheat sheet that hung over my desk to help me remember those commands as I managed my Linux servers. It was called the *101 commands for Linux* cheat sheet. As I became more familiar with these commands, I became more proficient with server administration.
+
+Here are 12 Linux commands I find most useful.
+
+### 1. Print working directory (pwd)
+
+The `pwd` command prints your working directory. In other words, it outputs the path of the directory you are currently working in. There are two options: `--logical` to display your location with any symlinks and `--physical` to display your location after resolving any symlinks.
+
+### 2. Make directory (mkdir)
+
+Making directories is easy with the `mkdir` command. The following command creates a directory called `example` unless `example` already exists:
+
+```
+$ mkdir example
+```
+
+You can make directories within directories:
+
+```
+$ mkdir -p example/one/two
+```
+
+If directories `example` and `one` already exist, only directory `two` is created. If none of them exist, then three nested directories are created.
+
+### 3. List (ls)
+
+Coming from MS-DOS, I was used to listing files with the `dir` command. I don't recall working on Linux at the time, although today, `dir` is in the GNU Core Utilities package. Most people use the `ls` command to display the files, along with all their properties, are in a directory. The `ls` command has many options, including `-l` to view a long listing of files, displaying the file owner and permissions.
+
+### 4. Change directory (cd)
+
+It is often necessary to change directories. That's the `cd` command's function. For instance, this example takes you from your home directory into the `Documents` directory:
+
+```
+$ cd Documents
+```
+
+You can quickly change to your home directory with `cd ~` or just `cd` on most systems. You can use `cd ..` to move up a level.
+
+### 5. Remove a file (rm)
+
+Removing files is inherently dangerous. Traditionally, the Linux terminal has no Trash or Bin like the desktop does, so many terminal users have the bad habit of permanently removing data they believe they no longer need. There's no "un-remove" command, though, so this habit can be problematic should you accidentally delete a directory containing important data.
+
+A Linux system provides `rm` and `shred` for data removal. To delete file `example.txt`, type the following:
+
+```
+$ rm example.txt
+```
+
+However, it's much safer to install a trash command, such as [trashy][3] or [trash-cli][4]. Then you can send files to a staging area before deleting them forever:
+
+```
+$ trash example.txt
+```
+
+### 6. Copy a file (cp)
+
+Copy files with the `cp` command. The syntax is copy *from-here* *to-there*. Here's an example:
+
+```
+$ cp file1.txt newfile1.txt
+```
+
+You can copy entire directories, too:
+
+```
+$ cp -r dir1 newdirectory
+```
+
+### 7. Move and rename a file (mv)
+
+Renaming and moving a file is functionally the same process. When you move a file, you take a file from one directory and put it into a new one. When renaming a file, you take a file from one directory and put it back into the same directory or a different directory, but with a new name. Either way, you use the `mv` command:
+
+```
+$ mv file1.txt file_001.txt
+```
+
+### 8. Create an empty file (touch)
+
+Easily create an empty file with the `touch` command:
+
+```
+$ touch one.txt
+
+$ touch two.txt
+
+$ touch three.md
+```
+
+### 9. Change permissions (chmod)
+
+Change the permissions of a file with the `chmod` command. One of the most common uses of `chmod` is making a file executable:
+
+```
+$ chmod +x myfile
+```
+
+This example is how you give a file permission to be executed as a command. This is particularly handy for scripts. Try this simple exercise:
+
+```
+$ echo 'echo Hello $USER' > hello.sh
+
+$ chmod +x hello.sh
+
+$ ./hello.sh
+Hello, Don
+```
+
+### 10. Escalate privileges (sudo)
+
+While administering your system, it may be necessary to act as the super user (also called root). This is where the `sudo` (or *super user do*) command comes in. Assuming you're trying to do something that your computer alerts you that only an administrator (or root) user can do, just preface it with the command `sudo` :
+
+```
+$ touch /etc/os-release && echo "Success"
+touch: cannot touch '/etc/os-release': Permission denied
+
+$ sudo touch /etc/os-release && echo "Success"
+Success
+```
+
+### 11. Shut down (poweroff)
+
+The `poweroff` command does exactly what it sounds like: it powers your computer down. It requires `sudo` to succeed.
+
+There are actually many ways to shut down your computer and some variations on the process. For instance, the `shutdown` command allows you to power down your computer after an arbitrary amount of time, such as 60 seconds:
+
+```
+$ sudo shutdown -h 60
+```
+
+Or immediately:
+
+```
+$ sudo shutdown -h now
+```
+
+You can also restart your computer with `sudo shutdown -r now` or just `reboot`.
+
+### 12. Read the manual (man)
+
+The `man` command could be the most important command of all. It gets you to the documentation for each of the commands on your Linux system. For instance, to read more about `mkdir` :
+
+```
+$ man mkdir
+```
+
+A related command is `info`, which provides a different set of manuals (as long as they're available) usually written more verbosely than the often terse man pages.
+
+### What's your favorite Linux command?
+
+There are many more commands on a Linux system—hundreds! What's your favorite command, the one you find yourself using time and time again?
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/essential-linux-commands
+
+作者:[Don Watkins][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/don-watkins
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/command_line_prompt.png
+[2]: https://www.redhat.com/sysadmin/recover-file-deletion-linux
+[3]: https://gitlab.com/trashy/trashy
+[4]: https://github.com/andreafrancia/trash-cli
diff --git a/sources/tech/20220524 Build a Quarkus reactive application using Kubernetes Secrets.md b/sources/tech/20220524 Build a Quarkus reactive application using Kubernetes Secrets.md
new file mode 100644
index 0000000000..d69869e358
--- /dev/null
+++ b/sources/tech/20220524 Build a Quarkus reactive application using Kubernetes Secrets.md
@@ -0,0 +1,232 @@
+[#]: subject: "Build a Quarkus reactive application using Kubernetes Secrets"
+[#]: via: "https://opensource.com/article/22/5/quarkus-kubernetes-secrets"
+[#]: author: "Daniel Oh https://opensource.com/users/daniel-oh"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Build a Quarkus reactive application using Kubernetes Secrets
+======
+Follow security policies while developing applications for the cloud by using Kubernetes Secrets.
+
+![Improve your DevOps security game with Ansible Vault][1]
+
+Image by: Opensource.com
+
+Many organizations have security policies in place that dictate how to store sensitive information. When you're developing applications for the cloud, you're probably expected to follow those policies, and to do that you often have to externalize your data storage. Kubernetes has a built-in system to access external secrets, and learning to use that is key to a safe cloud-native app.
+
+In this article, I'm going to demonstrate how to build a Quarkus reactive application with externalized sensitive information—for instance, a password or token—using [Kubernetes Secrets][2]. A secret is a good example of how cloud platforms can secure applications by removing sensitive data from your static code. Note that you can find a solution to this tutorial [in this GitHub repository][3].
+
+### 1. Scaffold a new reactive Quarkus project
+
+Use the Quarkus command-line interface (CLI) to scaffold a new project. If you haven't already installed the Quarkus CLI, follow these [instructions][5] according to your operating system.
+
+Run the following Quarkus CLI in your project directory to add `kubernetes-config`, `resteasy-reactive`, and `openshift` extensions:
+
+```
+$ quarkus create app quarkus-secret-example \
+-x resteasy-reactive,kubernetes-config,openshift
+```
+
+The output should look like this:
+
+```
+Looking for the newly published extensions in registry.quarkus.io
+selected extensions:
+- io.quarkus:quarkus-kubernetes-config
+- io.quarkus:quarkus-resteasy-reactive
+- io.quarkus:quarkus-openshift
+
+
+applying codestarts...
+📚 java
+🔨 maven
+📦 quarkus
+📝 config-properties
+🔧 dockerfiles
+🔧 maven-wrapper
+🚀 resteasy-reactive-codestart
+
+-----------
+
+[SUCCESS] ✅ quarkus project has been successfully generated in:
+--> /tmp/quarkus-secret-example
+-----------
+Navigate into this directory and get started: quarkus dev
+```
+
+### 2. Create a Secret in Kubernetes
+
+To manage the Kubernetes Secrets, you have three options:
+
+* Using kubectl
+* Using Configuration File
+* Node [Kustomize][6]
+
+Use the `kubectl` command to create a new database credential (a username and password). Run the following command:
+
+```
+$ kubectl create secret generic db-credentials \
+ --from-literal=username=admin \
+ --from-literal=password=secret
+```
+
+If you haven't already installed a Kubernetes cluster locally, or you have no remote cluster, you can sign in to the [developer sandbox][7], a no-cost sandbox environment for Red Hat OpenShift and CodeReady Workspaces.
+
+You can confirm that the Secret is created properly by using the following command:
+
+```
+$ kubectl get secret/db-credentials -o yaml
+```
+
+The output should look like this:
+
+```
+apiVersion: v1
+data:
+ password: c2VjcmV0
+ username: YWRtaW4=
+kind: Secret
+metadata:
+ creationTimestamp: "2022-05-02T13:46:18Z"
+ name: db-credentials
+ namespace: doh-dev
+ resourceVersion: "1190920736"
+ uid: 936abd44-1097-4c1f-a9d8-8008a01c0add
+type: Opaque
+```
+
+The username and password are encoded by default.
+
+### 3. Create a new RESTful API to access the Secret
+
+Now you can add a new RESTful (for Representational State Transfer) API to print out the username and password stored in the Kubernetes Secret. Quarkus enables developers to refer to the secret as a normal configuration using a `@ConfigureProperty` annotation.
+
+Open a `GreetingResource.java` file in `src/main/java/org/acme`. Then, add the following method and configurations:
+
+```
+@ConfigProperty(name = "username")
+ String username;
+
+ @ConfigProperty(name = "password")
+ String password;
+
+ @GET
+ @Produces(MediaType.TEXT_PLAIN)
+ @Path("/securty")
+ public Map securty() {
+ HashMap map = new HashMap<>();
+ map.put("db.username", username);
+ map.put("db.password", password);
+ return map;
+ }
+```
+
+Save the file.
+
+### 4. Set the configurations for Kubernetes deployment
+
+Open the `application.properties` file in the `src/main/resources` directory. Add the following configuration for the Kubernetes deployment. In the tutorial, I'll demonstrate using the developer sandbox, so the configurations tie to the OpenShift cluster.
+
+If you want to deploy it to the Kubernetes cluster, you can package the application via Docker container directly. Then, you need to push the container image to an external container registry (for example, Docker Hub, quay.io, or Google container registry).
+
+```
+# Kubernetes Deployment
+quarkus.kubernetes.deploy=true
+quarkus.kubernetes.deployment-target=openshift
+openshift.expose=true
+quarkus.openshift.build-strategy=docker
+quarkus.kubernetes-client.trust-certs=true
+
+# Kubernetes Secret
+quarkus.kubernetes-config.secrets.enabled=true
+quarkus.kubernetes-config.secrets=db-credentials
+```
+
+Save the file.
+
+### 5. Build and deploy the application to Kubernetes
+
+To build and deploy the reactive application, you can also use the following Quarkus CLI:
+
+```
+$ quarkus build
+```
+
+This command triggers the application build to generate a `fast-jar` file. Then the application `Jar` file is containerized using a Dockerfile, which was already generated in the `src/main/docker` directory when you created the project. Finally, the application image is pushed into the integrated container registry inside the OpenShift cluster.
+
+The output should end with a `BUILD SUCCESS` message.
+
+When you deploy the application to the developer sandbox or normal OpenShift cluster, you can find the application in the Topology view in the Developer perspective, as shown in the figure below.
+
+![A screenshot of Red Hat OpenShift Dedicated. In the left sidebar menu Topology is highlighted, and in the main screen there is a Quarkus icon][8]
+
+Image by: (Daniel Oh, CC BY-SA 4.0)
+
+### 6. Verify the sensitive information
+
+To verify that your Quarkus application can refer to the sensitive information from the Kubernetes Secret, get the route URL using the following `kubectl` command:
+
+```
+$ kubectl get route
+```
+
+The output is similar to this:
+
+```
+NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
+quarkus-secret-example quarkus-secret-example-doh-dev.apps.sandbox.x8i5.p1.openshiftapps.com quarkus-secret-example 8080 None
+```
+
+Use the [curl command][9] to access the RESTful API:
+
+```
+$ curl http://YOUR_ROUTE_URL/hello/security
+```
+
+The output:
+
+```
+{db.password=secret, db.username=admin}
+```
+
+Awesome! The above `username` and `password` are the same as those you stored in the `db-credentials` secret.
+
+### Where to learn more
+
+This guide has shown how Quarkus enables developers to externalize sensitive information using Kubernetes Secrets. Find additional resources to develop cloud-native microservices using Quarkus on Kubernetes here:
+
+* [7 guides for developing applications on the cloud with Quarkus][10]
+* [Extend Kubernetes service discovery with Stork and Quarkus][11]
+* [Deploy Quarkus applications to Kubernetes using a Helm chart][12]
+
+You can also watch this step-by-step [tutorial video][13] on how to manage Kubernetes Secrets with Quarkus.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/quarkus-kubernetes-secrets
+
+作者:[Daniel Oh][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/daniel-oh
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/rh_003601_05_mech_osyearbook2016_security_cc.png
+[2]: https://kubernetes.io/docs/concepts/configuration/secret/
+[3]: https://github.com/danieloh30/quarkus-secret-example.git
+[4]: https://enterprisersproject.com/article/2019/8/kubernetes-secrets-explained-plain-english?intcmp=7013a000002qLH8AAM
+[5]: https://quarkus.io/guides/cli-tooling#installing-the-cli
+[6]: https://kustomize.io/
+[7]: https://developers.redhat.com/developer-sandbox/get-started
+[8]: https://opensource.com/sites/default/files/2022-05/quarkus.png
+[9]: https://opensource.com/article/20/5/curl-cheat-sheet
+[10]: https://opensource.com/article/22/4/developing-applications-cloud-quarkus
+[11]: https://opensource.com/article/22/4/kubernetes-service-discovery-stork-quarkus
+[12]: https://opensource.com/article/21/10/quarkus-helm-chart
+[13]: https://youtu.be/ak9R9-E_0_k
diff --git a/sources/tech/20220524 The Basic Concepts of Shell Scripting.md b/sources/tech/20220524 The Basic Concepts of Shell Scripting.md
new file mode 100644
index 0000000000..e3ed827d57
--- /dev/null
+++ b/sources/tech/20220524 The Basic Concepts of Shell Scripting.md
@@ -0,0 +1,190 @@
+[#]: subject: "The Basic Concepts of Shell Scripting"
+[#]: via: "https://www.opensourceforu.com/2022/05/the-basic-concepts-of-shell-scripting/"
+[#]: author: "Sathyanarayanan Thangavelu https://www.opensourceforu.com/author/sathyanarayanan-thangavelu/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+The Basic Concepts of Shell Scripting
+======
+If you want to automate regular tasks and make your life easier, using shell scripts is a good option. This article introduces you to the basic concepts that will help you to write efficient shell scripts.
+
+![Shell-scripting][1]
+
+Ashell script is a computer program designed to be run by the UNIX shell, a command-line interpreter. The various dialects of shell scripts are considered to be scripting languages. Typical operations performed by shell scripts include file manipulation, program execution, and printing of text. A script that sets up the environment, runs the program, and does any necessary cleanup or logging, is called a wrapper.
+
+### Identification of shell prompt
+
+You can identify whether the shell prompt on a Linux based computer is a normal or super user by looking at the symbols of the prompt in the terminal window. The ‘#’ symbol is used for a super user and the ‘$’ symbol is used for a user with standard privileges.
+
+![Figure 1: Manual of date command][2]
+
+### Basic commands
+
+The script comes with too many commands that can be executed on the terminal window to manage your computer. Details of each command can be found in the manual included with the command. To view the manual, you need to run the command:
+
+```
+$man
+```
+
+A few frequently used commands are:
+
+```
+$date #display current date and time
+$cal #display current month calendar
+$df #displays disk usages
+$free #display memory usage
+$ls #List files and directories
+$mkdir #Creates directory
+```
+
+Each command comes with several options that can be used along with it. You can refer to the manual for more details. See Figure 1 for the output of:
+
+```
+$man date
+```
+
+### Redirection operators
+
+The redirection operator is really useful when you want to capture the output of a command in a file or redirect to a file.
+
+| - | - |
+| :- | :- |
+| $ls -l /usr/bin >file | default stdout to file |
+| $ls -l /usr/bin 2>file | redirects stderr to file |
+| $ls -l /usr/bin > ls-output 2>&1 | redirects stderr & stdout to file |
+| $ls -l /usr/bin &> ls-output | redirects stderr & stdout to file |
+| $ls -l /usr/bin 2> /dev/null | /dev/null bitbucket |
+
+## Brace expansion
+
+Brace expansion is one of the powerful options UNIX has. It helps do a lot of operations with minimal commands in a single line instruction. For example:
+
+```
+$echo Front-{A,B,C}-Back
+Front-A-Back, Front-B-Back, Front-C-Back
+
+$echo {Z..A}
+Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
+
+$mkdir {2009..2011}-0{1..9} {2009..2011}-{10..12}
+```
+
+This creates a directory for 12 months from 2009 to 2011.
+
+### Environment variables
+
+An environment variable is a dynamic-named value that can affect the way running processes will behave on a computer. This variable is a part of the environment in which a process runs.
+
+| - | - |
+| :- | :- |
+| printenv | Print part of all of the environment |
+| set | set shell options |
+| export | export environment to subsequently executed programs |
+| alias | create an alias for command |
+
+### Network commands
+
+Network commands are very useful for troubleshooting issues on the network and to check the particular port connecting to the client.
+
+| - | - |
+| :- | :- |
+| ping | Send ICMP packets |
+| traceroute | Print route packets to a network |
+| netstat | print network connection, routing table,
+interface stats |
+| ftp/lftp | Internet file transfer program |
+| wget | Non Interactive network downloader |
+| ssh | OpenSSH SSH Client (remote login program) |
+| scp | secure copy |
+| sftp | Secure File transfer program |
+
+### Grep commands
+
+Grep commands are useful to find the errors and debug the logs in the system. It is one of the powerful tools that shell has.
+
+| - | - |
+| :- | :- |
+| grep -h ‘.zip’ file.list | . is any character |
+| grep -h ‘^zip’ file.list | starts with zip |
+| grep -h ‘zip$’ file.list | ends with zip |
+| grep -h ‘^zip$’ file.list | containing only zip |
+| grep -h ‘[^bz]zip’ file.list | not containing b and z |
+| grep -h ‘^[A-Za-z0-9]’ file.list | file containing any valid names |
+
+### Quantifiers
+
+Here are some examples of quantifiers:
+
+| - | - |
+| :- | :- |
+| ? | match element zero or one time |
+| * | match an element zero or more times |
+| + | Match an element one or more times |
+| {} | match an element specfic number of times |
+
+### Text processing
+
+Text processing is another important task in the current IT world. Programmers and administrators can use the commands to dice, cut and process texts.
+
+| - | - |
+| :- | :- |
+| cat -A $FILE | To find any CTRL character introduced |
+| sort file1.txt file2.txt file3.txt >
+final_sorted_list.txt | sort all files once |
+| ls - l | sort -nr -k 5 | key field 5th column |
+| sort --key=1,1 --key=2n distor.txt | key field 1,1 sort and second column sort
+by numeric |
+| sort foo.txt | uniq -c | to find repetition |
+| cut -f 3 distro.txt | cut column 3 |
+| cut -c 7-10 | cut character 7 - 10 |
+| cut -d ‘:’ -f 1 /etc/password | delimiter : |
+| sort -k 3.7nbr -k 3.1nbr -k 3.4nbr
+ distro.txt | 3 rd field 7 the character,
+3rd field 1 character |
+| paste file1.txt file2.txt > newfile.txt | merge two files |
+| join file1.txt file2.txt | join on common two fields |
+
+### Hacks and tips
+
+In Linux, we can go back to our history of commands by either using simple commands or control options.
+
+| - | - |
+| :- | :- |
+| clear | clears the screen |
+| history | stores the history |
+| script filename | capture all command execution in a file |
+
+
+Tips:
+
+> History : CTRL + {R, P}
+> !!number : command history number
+> !! : last command
+> !?string : history containing last string
+> !string : history containing last string
+
+```
+export HISTCONTROL=ignoredups
+export HISTSIZE=10000
+```
+
+As you get familiar with the Linux commands, you will be able to write wrapper scripts. All manual tasks like taking regular backups, cleaning up files, monitoring the system usage, etc, can be automated using scripts. This article will help you to start scripting, before you move to learning advanced concepts.
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/05/the-basic-concepts-of-shell-scripting/
+
+作者:[Sathyanarayanan Thangavelu][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/sathyanarayanan-thangavelu/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Shell-scripting.jpg
+[2]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-1-Manual-of-date-command.jpg
diff --git a/sources/tech/20220524 pdfgrep- Use Grep Like Search on PDF Files in Linux Command Line.md b/sources/tech/20220524 pdfgrep- Use Grep Like Search on PDF Files in Linux Command Line.md
new file mode 100644
index 0000000000..1dcbd177c6
--- /dev/null
+++ b/sources/tech/20220524 pdfgrep- Use Grep Like Search on PDF Files in Linux Command Line.md
@@ -0,0 +1,234 @@
+[#]: subject: "pdfgrep: Use Grep Like Search on PDF Files in Linux Command Line"
+[#]: via: "https://itsfoss.com/pdfgrep/"
+[#]: author: "Pratham Patel https://itsfoss.com/author/pratham/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+pdfgrep: Use Grep Like Search on PDF Files in Linux Command Line
+======
+
+Even if you use the Linux command line moderately, you must have come across the [grep command][1].
+
+Grep is used to search for a pattern in a text file. It can do crazy powerful things, like search for new lines, search for lines where there are no uppercase characters, search for lines where the initial character is a number, and much, much more. Check out some [common grep command examples][2] if you are interested.
+
+But grep works only on plain text files. It won’t work on PDF files because they are binary files.
+
+This is where pdfgrep comes into the picture. It works like grep for PDF files. Let us have a look at that.
+
+### Meet pdfgrep: grep like regex search for PDF files
+
+[pdfgrep][3] tries to be compatible with GNU Grep, where it makes sense. Several of your favorite grep options are supported (such as -r, -i, -n or -c). You can use to search for text inside the contents of PDF files.
+
+Though it doesn’t come pre-installed like grep, it is available in the repositories of most Linux distributions.
+
+You can use your distribution’s [package manager][4] to install this awesome tool.
+
+For users of Ubuntu and Debian-based distributions, use the apt command:
+
+```
+sudo apt install pdfgrep
+```
+
+For Red Hat and Fedora, you can use the dnf command:
+
+```
+sudo dnf install pdfgrep
+```
+
+Btw, do you run Arch? You can [use the pacman command][5]:
+
+```
+sudo pacman -S pdfgrep
+```
+
+### Using pdfgrep command
+
+Now that pdfgrep is installed let me show you how to use it in most common scenarios.
+
+If you have any experience with grep, then most of the options will feel familiar to you.
+
+To demonstrate, I will be using [The Linux Command Line][6] PDF book, written by William Shotts. It’s one of the [few Linux books that are legally available for free][7].
+
+The syntax for pdfgrep is as follows:
+
+```
+pdfgrep [PATTERN] [FILE.pdf]
+```
+
+#### Normal search
+
+Let’s try doing a basic search for the text ‘xdg’ in the PDF file.
+
+```
+pdfgrep xdg TLCL-19.01.pdf
+```
+
+![simple search using pdfgrep][8]
+
+This resulted in only one match… But a match nonetheless!
+
+#### Case insensitive search
+
+Most of the time, the term ‘xdg’ is used with capitalized alphabetical characters. So, let’s try doing a case-insensitive search. For a case insensitive search, I will use the –ignore-case option.
+
+You can also use the shorter alternative, which is -i.
+
+```
+pdfgrep --ignore-case xdg TLCL-19.01.pdf
+```
+
+![case insensitive search using pdfgrep][9]
+
+As you can see, I got more matches after turning on case insensitive searching.
+
+#### Get a count of all matches
+
+Sometimes, the user wants to know how many matches were found of the word. Let’s see how many times the word ‘Linux’ is mentioned (with case insensitive matching).
+
+The option to use in this scenario is –count (or -c for short).
+
+```
+pdfgrep --ignore-case linux TLCL-19.01.pdf --count
+```
+
+![getting a count of matches using pdfgrep][10]
+
+Woah! Linux was mentioned 1200 times in this book… That was unexpected.
+
+#### Show page number
+
+Regular text files are giant monolithic files. There are no pages. But a PDF file has pages. So, you can see where the pattern was found and on which page. Use the –page-number option to show the page number where the pattern was matched. You can also use the `-n` option as a shorter alternative.
+
+Let us see how it works with an example. I want to see the pages where the word ‘awk’ matches. I added a space at the end of the pattern to prevent matching with words like ‘awkward’, getting unintentional matches would be *awkward*. Instead of escaping space with a backslash, you can also enclose it in single quotes ‘awk ‘.
+
+```
+pdfgrep --page-number --ignore-case awk\ TLCL-19.01.pdf
+```
+
+![show which pattern was found on which page using pdfgrep][11]
+
+The word ‘awk’ was found twice on page number 333, once on page 515 and once again on page 543 in the PDF file.
+
+#### Show match count per page
+
+Do you want to know how many matches were found on which page instead of showing the matches themselves? If you said yes, well it is your lucky day!
+
+Using the –page-count option does exactly that. As a shorter alternative, you use the -p option. When you provide this option to pdfgrep, it is assumed that you requested `-n` as well.
+
+Let’s take a look at how the output looks. For this example, I will see where the [ln command][12] is used in the book.
+
+```
+pdfgrep --page-count ln\ TLCL-19.01.pdf
+```
+
+![show which page has how many matches using pdfgrep][13]
+
+The output is in the form of ‘page number: matches’. This means, on page number 4, the command (or rather “pattern”) was found only once. But on page number 57, pdfgrep found 4 matches.
+
+#### Get some context
+
+When the number of matches found is quite big, it is nice to have some context. For that, pdfgrep provides some options.
+
+* –after-context NUM: Print NUM of lines that come after the matching lines (or use `-A`)
+* –before-context NUM: Print NUM of lines that are before the matching lines (or use `-B`)
+* –context NUM: Print NUM of lines that are before and come after the matching lines (or use `-C`)
+
+Let’s find ‘XDG’ in the PDF file, but this time, with a little more context ( ͡❛ ͜ʖ ͡❛)
+
+**Context after matches**
+
+Using the –after-context option along with a number, I can see which lines come after the line(s) that match. Below is an example of how it looks.
+
+```
+pdfgrep --after-context 2 XDG TLCL-19.01.pdf
+```
+
+![using '--after-context' option in pdfgrep][14]
+
+**Context before matches**
+
+Same thing can be done for scenarios when you need to know what lines are present before the line that matches. In that case, use the –before-context option, along with a number. Below is an example demonstrating usage of this option.
+
+```
+pdfgrep --before-context 2 XDG TLCL-19.01.pdf
+```
+
+![using '--before-context' option in pdfgrep][15]
+
+**Context around matches**
+
+If you want to see which lines are present before and come after the line that matched, use the –context option and also provide a number. Below is an example.
+
+```
+pdfgrep --context 2 XDG TLCL-19.01.pdf
+```
+
+![using '--context' option in pdfgrep][16]
+
+#### Caching
+
+A PDF file consists of images as well as text. When you have a large PDF file, it might take some time to skip other media, extract text and then “grep” it. Doing it often and waiting every time can get frustrating.
+
+For that reason, the –cache option exists. It caches the rendered text to speed up grep-ing. This is especially noticeable on large files.
+
+```
+pdfgrep --cache --ignore-case grep TLCL-19.01.pdf
+```
+
+![getting faster results using the '--cache' option][17]
+
+While not the be-all and end-all, I carried out a search 4 times. Twice with cache enable and twice without cache enable. To show the speed difference, I used the time command. Look closely at the time indicated by ‘real’ value.
+
+As you can see, the commands that include –cache option were completed faster than the ones that didn’t include it.
+
+Additionally, I suppressed the output using the –quiet option for faster completion.
+
+#### Password protected PDF files
+
+Yes, pdfgrep supports grep-ing even password-protected files. All you have to do is use the –password option, followed by the password.
+
+I do not have a password-protected file to demonstrate with, but you can use this option in the following manner:
+
+```
+pdfgrep --password [PASSWORD] [PATTERN] [FILE.pdf]
+```
+
+### Conclusion
+
+pdfgrep is a very handy tool if you are dealing with PDF files and want the functionality of ‘grep’, but for PDF files. A reason why I like pdfgrep is that it tries to be compatible with GNU Grep.
+
+Give it a try and let me know what you think of pdfgrep.
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/pdfgrep/
+
+作者:[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://linuxhandbook.com/what-is-grep/
+[2]: https://linuxhandbook.com/grep-command-examples/
+[3]: https://pdfgrep.org/
+[4]: https://itsfoss.com/package-manager/
+[5]: https://itsfoss.com/pacman-command/
+[6]: https://www.linuxcommand.org/tlcl.php
+[7]: https://itsfoss.com/learn-linux-for-free/
+[8]: https://itsfoss.com/wp-content/uploads/2022/05/01_pdfgrep_normal_search-1-800x308.webp
+[9]: https://itsfoss.com/wp-content/uploads/2022/05/02_pdfgrep_case_insensitive-800x413.webp
+[10]: https://itsfoss.com/wp-content/uploads/2022/05/03_pdfgrep_count-800x353.webp
+[11]: https://itsfoss.com/wp-content/uploads/2022/05/04_pdfgrep_page_number-800x346.webp
+[12]: https://linuxhandbook.com/ln-command/
+[13]: https://itsfoss.com/wp-content/uploads/2022/05/05_pdfgrep_pg_count-800x280.webp
+[14]: https://itsfoss.com/wp-content/uploads/2022/05/06_pdfgrep_after_context-800x340.webp
+[15]: https://itsfoss.com/wp-content/uploads/2022/05/07_pdfgrep_before_context-800x356.webp
+[16]: https://itsfoss.com/wp-content/uploads/2022/05/08_pdfgrep_context-800x453.webp
+[17]: https://itsfoss.com/wp-content/uploads/2022/05/09_pdfgrep_cache-800x575.webp
diff --git a/sources/tech/20220525 Improve network performance with this open source framework.md b/sources/tech/20220525 Improve network performance with this open source framework.md
new file mode 100644
index 0000000000..ee1af4ee28
--- /dev/null
+++ b/sources/tech/20220525 Improve network performance with this open source framework.md
@@ -0,0 +1,138 @@
+[#]: subject: "Improve network performance with this open source framework"
+[#]: via: "https://opensource.com/article/22/5/improve-network-performance-pbench"
+[#]: author: "Hifza Khalid https://opensource.com/users/hifza-khalid"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Improve network performance with this open source framework
+======
+Use Pbench to predict throughput and latency for specific workloads.
+
+![Mesh networking connected dots][1]
+
+In the age of high-speed internet, most large information systems are structured as distributed systems with components running on different machines. The performance of these systems is generally assessed by their throughput and response time. When performance is poor, debugging these systems is challenging due to the complex interactions between different subcomponents and the possibility of the problem occurring at various places along the communication path.
+
+On the fastest networks, the performance of a distributed system is limited by the host's ability to generate, transmit, process, and receive data, which is in turn dependent on its hardware and configuration. What if it were possible to tune the network performance of a distributed system using a repository of network benchmark runs and suggest a subset of hardware and OS parameters that are the most effective in improving network performance?
+
+To answer this question, our team used [P][2][bench][3], a benchmarking and performance analysis framework developed by the performance engineering team at Red Hat. This article will walk step by step through our process of determining the most effective methods and implementing them in a predictive performance tuning tool.
+
+### What is the proposed approach?
+
+Given a dataset of network benchmark runs, we propose the following steps to solve this problem.
+
+1. Data preparation: Gather the configuration information, workload, and performance results for the network benchmark; clean the data; and store it in a format that is easy to work with
+2. Finding significant features: Choose an initial set of OS and hardware parameters and use various feature selection methods to identify the significant parameters
+3. Develop a predictive model: Develop a machine learning model that can predict network performance for a given client and server system and workload
+4. Recommend configurations: Given the user's desired network performance, suggest a configuration for the client and the server with the closest performance in the database, along with data showing the potential window of variation in results
+5. Evaluation: Determine the model's effectiveness using cross-validation, and suggest ways to quantify the improvement due to configuration recommendations
+
+We collected the data for this project using Pbench. Pbench takes as input a benchmark type with its workload, performance tools to run, and hosts on which to execute the benchmark, as shown in the figure below. It outputs the benchmark results, tool results, and the system configuration information for all the hosts.
+
+![An infographic showing inputs and outputs for Pbench. Benchmark type (with workload and systems) and performance tools to run along pbench (e.g., sar, vamstat) go into the central box representing pbench. Three things come out of pbench: configuration of all the systems involved, tool results and benchmark performance results][4]
+
+Image by: (Hifza Khalid, CC BY-SA 4.0)
+
+Out of the different benchmark scripts that Pbench runs, we used data collected using the uperf benchmark. Uperf is a network performance tool that takes the description of the workload as input and generates the load accordingly to measure system performance.
+
+### Data preparation
+
+There are two disjoint sets of data generated by Pbench. The configuration data from the systems under test is stored in a file system. The performance results, along with the workload metadata, are indexed into an Elasticsearch instance. The mapping between the configuration data and the performance results is also stored in Elasticsearch. To interact with the data in Elasticsearch, we used Kibana. Using both of these datasets, we combined the workload metadata, configuration data, and performance results for each benchmark run.
+
+### Finding significant features
+
+To select an initial set of hardware specifications and operating system configurations, we used performance-tuning configuration guides and feedback from experts at Red Hat. The goal of this step was to start working with a small set of parameters and refine it with further analysis. The set was based on parameters from almost all major system subcomponents, including hardware, memory, disk, network, kernel, and CPU.
+
+Once we selected the preliminary set of features, we used one of the most common dimensionality-reduction techniques to eliminate the redundant parameters: remove parameters with constant values. While this step eliminated some of the parameters, given the complexity of the relationship between system information and performance, we resolved to use advanced feature selection methods.
+
+#### Correlation-based feature selection
+
+Correlation is a common measure used to find the association between two features. The features have a high correlation if they are linearly dependent. If the two features increase simultaneously, their correlation is +1; if they decrease concurrently, it is -1. If the two features are uncorrelated, their correlation is close to 0.
+
+We used the correlation between the system configuration and the target variable to identify and cut down insignificant features further. To do so, we calculated the correlation between the configuration parameters and the target variable and eliminated all parameters with a value less than |0.1|, which is a commonly used threshold to identify the uncorrelated pairs.
+
+#### Feature-selection methods
+
+Since correlation does not imply causation, we needed additional feature-selection methods to extract the parameters affecting the target variables. We could choose between wrapper methods like recursive feature elimination and embedded methods like Lasso (Least Absolute Shrinkage and Selection Operator) and tree-based methods.
+
+We chose to work with tree-based embedded methods for their simplicity, flexibility, and low computational cost compared to wrapper methods. These methods have built-in feature selection methods. Among tree-based methods, we had three options: a classification and regression tree (CART), Random Forest, and XGBoost.
+
+We calculated our final set of significant features for the client and server systems by taking a union of the results received from the three tree-based methods, as shown in the following table.
+
+| Parameters | client/server | Description |
+| :- | :- | :- |
+| Advertised_auto-negotation | client | If the linked advertised auto-negotiation |
+| CPU(s) | server | Number of logical cores on the machine |
+| Network speed | server | Speed of the ethernet device |
+| Model name | client | Processor model |
+| rx_dropped | server | Packets dropped after entering the computer stack |
+| Model name | server | Processor model |
+| System type | server | Virtual or physical system |
+
+#### Develop predictive model
+
+For this step, we used the Random Forest (RF) prediction model since it is known to perform better than CART and is also easier to visualize.
+
+Random Forest (RF) builds multiple decision trees and merges them to get a more stable and accurate prediction. It builds the trees the same way CART does, but to ensure that the trees are uncorrelated to protect each other from their individual errors, it uses a technique known as bagging. Bagging uses random samples from the data with replacement to train the individual trees. Another difference between trees in a Random Forest and a CART decision tree is the choice of features considered for each split. CART considers every possible feature for each split. However, each tree in a Random Forest picks only from a random subset of features. This leads to even more variation among the Random Forest trees.
+
+The RF model was constructed separately for both the target variables.
+
+### Recommend configurations
+
+For this step, given desired throughput and response time values, along with the workload of interest, our tool searches through the database of benchmark runs to return the configuration with the performance results closest to what the user requires. It also returns the standard deviation for various samples of that run, suggesting potential variation in the actual results.
+
+### Evaluation
+
+To evaluate our predictive model, we used a repeated [K-Fold cross-validation][5] technique. It is a popular choice to get an accurate estimate of the efficiency of the predictive model.
+
+To evaluate the predictive model with a dataset of 9,048 points, we used k equal to 10 and repeated the cross-validation method three times. The accuracy was calculated using the two metrics given below.
+
+* R2 score: The proportion of the variance in the dependent variable that is predictable from the independent variable(s). Its value varies between -1 and 1.
+* Root mean squared error (RMSE): It measures the average squared difference between the estimated values and the actual values and returns its square root.
+
+Based on the above two criteria, the results for the predictive model with throughput and latency as target variables are as follows:
+
+* Throughput (trans/sec):
+ * R2 score: 0.984
+ * RMSE: 0.012
+* Latency (usec):
+ * R2 score: 0.930
+ * RMSE: 0.025
+
+### What does the final tool look like?
+
+We implemented our approach in a tool shown in the following figure. The tool is implemented in Python. It takes as input the dataset containing the information about benchmark runs as a CSV file, including client and server configuration, workload, and the desired values for latency and throughput. The tool uses this information to predict the latency and throughput results for the user's client server system. It then searches through the database of benchmark runs to return the configuration that has performance results closest to what the user requires, along with the standard deviation for that run. The standard deviation is part of the dataset and is calculated using repeated samples for one iteration or run.
+
+![An infographic showing inputs and outputs for the Performance Predictor and Tuner (PPT). The inputs are client and server sosreports (tarball), workload, and expected latency and throughput. The outputs are latency (usce) and throughput (trans/sec), configuration for the client and the server, and the standard deviation for results.][6]
+
+Image by: (Hifza Khalid, CC BY-SA 4.0)
+
+### What were the challenges with this approach?
+
+While working on this problem, there were several challenges that we addressed. The first major challenge was gathering benchmark data, which required learning Elasticsearch and Kibana, the two industrial tools used by Red Hat to index, store, and interact with [P][7][bench][8] data. Another difficulty was dealing with the inconsistencies in data, missing data, and errors in the indexed data. For example, workload data for the benchmark runs was indexed in Elasticsearch, but one of the crucial workload parameters, runtime, was missing. For that, we had to write extra code to access it from the raw benchmark data stored on Red Hat servers.
+
+Once we overcame the above challenges, we spent a large chunk of our effort trying out almost all the feature selection techniques available and figuring out a representative set of hardware and OS parameters for network performance. It was challenging to understand the inner workings of these techniques, their limitations, and their applications and analyze why most of them did not apply to our case. Because of space limitations and shortage of time, we did not discuss all of these methods in this article.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/improve-network-performance-pbench
+
+作者:[Hifza Khalid][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/hifza-khalid
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/mesh_networking_dots_connected.png
+[2]: https://distributed-system-analysis.github.io/pbench/
+[3]: https://distributed-system-analysis.github.io/pbench/
+[4]: https://opensource.com/sites/default/files/2022-05/pbench%20figure.png
+[5]: https://vitalflux.com/k-fold-cross-validation-python-example/
+[6]: https://opensource.com/sites/default/files/2022-05/PPT.png
+[7]: https://github.com/distributed-system-analysis/pbench
+[8]: https://github.com/distributed-system-analysis/pbench
diff --git a/sources/tech/20220525 Migrate databases to Kubernetes using Konveyor.md b/sources/tech/20220525 Migrate databases to Kubernetes using Konveyor.md
new file mode 100644
index 0000000000..274b44e06d
--- /dev/null
+++ b/sources/tech/20220525 Migrate databases to Kubernetes using Konveyor.md
@@ -0,0 +1,198 @@
+[#]: subject: "Migrate databases to Kubernetes using Konveyor"
+[#]: via: "https://opensource.com/article/22/5/migrating-databases-kubernetes-using-konveyor"
+[#]: author: "Yasu Katsuno https://opensource.com/users/yasu-katsuno"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Migrate databases to Kubernetes using Konveyor
+======
+Konveyor Tackle-DiVA-DOA helps database engineers easily migrate database servers to Kubernetes.
+
+![Ships at sea on the web][1]
+
+Kubernetes Database Operator is useful for building scalable database servers as a database (DB) cluster. But because you have to create new artifacts expressed as YAML files, migrating existing databases to Kubernetes requires a lot of manual effort. This article introduces a new open source tool named Konveyor [Tackle-DiVA-DOA][2] (Data-intensive Validity Analyzer-Database Operator Adaptation). It automatically generates deployment-ready artifacts for database operator migration. And it does that through datacentric code analysis.
+
+### What is Tackle-DiVA-DOA?
+
+Tackle-DiVA-DOA (DOA, for short) is an open source datacentric database configuration analytics tool in Konveyor Tackle. It imports target database configuration files (such as SQL and XML) and generates a set of Kubernetes artifacts for database migration to operators such as [Zalando Postgres Operator][3].
+
+![A flowchart shows a database cluster with three virtual machines and SQL and XML files transformed by going through Tackle-DiVA-DOA into a Kubernetes Database Operator structure and a YAML file][4]
+
+Image by: (Yasuharu Katsuno and Shin Saito, CC BY-SA 4.0)
+
+DOA finds and analyzes the settings of an existing system that uses a database management system (DBMS). Then it generates manifests (YAML files) of Kubernetes and the Postgres operator for deploying an equivalent DB cluster.
+
+![A flowchart shows the four elements of an existing system (as described in the text below), the manifests generated by them, and those that transfer to a PostgreSQL cluster][5]
+
+Image by: (Yasuharu Katsuno and Shin Saito, CC BY-SA 4.0)
+
+Database settings of an application consist of DBMS configurations, SQL files, DB initialization scripts, and program codes to access the DB.
+
+* DBMS configurations include parameters of DBMS, cluster configuration, and credentials. DOA stores the configuration to `postgres.yaml` and secrets to `secret-db.yaml` if you need custom credentials.
+* SQL files are used to define and initialize tables, views, and other entities in the database. These are stored in the Kubernetes ConfigMap definition `cm-sqls.yaml`.
+* Database initialization scripts typically create databases and schema and grant users access to the DB entities so that SQL files work correctly. DOA tries to find initialization requirements from scripts and documents or guesses if it can't. The result will also be stored in a ConfigMap named `cm-init-db.yaml`.
+* Code to access the database, such as host and database name, is in some cases embedded in program code. These are rewritten to work with the migrated DB cluster.
+
+### Tutorial
+
+DOA is expected to run within a container and comes with a script to build its image. Make sure Docker and Bash are installed on your environment, and then run the build script as follows:
+
+```
+$ cd /tmp
+$ git clone https://github.com/konveyor/tackle-diva.git
+$ cd tackle-diva/doa
+$ bash util/build.sh
+…
+docker image ls diva-doa
+REPOSITORY TAG IMAGE ID CREATED SIZE
+diva-doa 2.2.0 5f9dd8f9f0eb 14 hours ago 1.27GB
+diva-doa latest 5f9dd8f9f0eb 14 hours ago 1.27GB
+```
+
+This builds DOA and packs as container images. Now DOA is ready to use.
+
+The next step executes a bundled `run-doa.sh` wrapper script, which runs the DOA container. Specify the Git repository of the target database application. This example uses a Postgres database in the [TradeApp][6] application. You can use the `-o` option for the location of output files and an `-i` option for the name of the database initialization script:
+
+```
+$ cd /tmp/tackle-diva/doa
+$ bash run-doa.sh -o /tmp/out -i start_up.sh \
+ https://github.com/saud-aslam/trading-app
+[OK] successfully completed.
+```
+
+The `/tmp/out/` directory and `/tmp/out/trading-app`, a directory with the target application name, are created. In this example, the application name is `trading-app`, which is the GitHub repository name. Generated artifacts (the YAML files) are also generated under the application-name directory:
+
+```
+$ ls -FR /tmp/out/trading-app/
+/tmp/out/trading-app/:
+cm-init-db.yaml cm-sqls.yaml create.sh* delete.sh* job-init.yaml postgres.yaml test/
+
+/tmp/out/trading-app/test:
+pod-test.yaml
+```
+
+The prefix of each YAML file denotes the kind of resource that the file defines. For instance, each `cm-*.yaml` file defines a ConfigMap, and `job-init.yaml` defines a Job resource. At this point, `secret-db.yaml` is not created, and DOA uses credentials that the Postgres operator automatically generates.
+
+Now you have the resource definitions required to deploy a PostgreSQL cluster on a Kubernetes instance. You can deploy them using the utility script `create.sh`. Alternatively, you can use the `kubectl create` command:
+
+```
+$ cd /tmp/out/trading-app
+$ bash create.sh # or simply “kubectl apply -f .”
+
+configmap/trading-app-cm-init-db created
+configmap/trading-app-cm-sqls created
+job.batch/trading-app-init created
+postgresql.acid.zalan.do/diva-trading-app-db created
+```
+
+The Kubernetes resources are created, including `postgresql` (a resource of the database cluster created by the Postgres operator), `service`, `rs`, `pod`, `job`, `cm`, `secret`, `pv`, and `pvc`. For example, you can see four database pods named `trading-app-*`, because the number of database instances is defined as four in `postgres.yaml`.
+
+```
+$ kubectl get all,postgresql,cm,secret,pv,pvc
+NAME READY STATUS RESTARTS AGE
+…
+pod/trading-app-db-0 1/1 Running 0 7m11s
+pod/trading-app-db-1 1/1 Running 0 5m
+pod/trading-app-db-2 1/1 Running 0 4m14s
+pod/trading-app-db-3 1/1 Running 0 4m
+
+NAME TEAM VERSION PODS VOLUME CPU-REQUEST MEMORY-REQUEST AGE STATUS
+postgresql.acid.zalan.do/trading-app-db trading-app 13 4 1Gi 15m Running
+
+NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
+service/trading-app-db ClusterIP 10.97.59.252 5432/TCP 15m
+service/trading-app-db-repl ClusterIP 10.108.49.133 5432/TCP 15m
+
+NAME COMPLETIONS DURATION AGE
+job.batch/trading-app-init 1/1 2m39s 15m
+```
+
+Note that the Postgres operator comes with a user interface (UI). You can find the created cluster on the UI. You need to export the endpoint URL to open the UI on a browser. If you use minikube, do as follows:
+
+```
+$ minikube service postgres-operator-ui
+```
+
+Then a browser window automatically opens that shows the UI.
+
+![Screenshot of the UI showing the Cluster YAML definition on the left with the Cluster UID underneath it. On the right of the screen a header reads "Checking status of cluster," and items in green under that heading show successful creation of manifests and other elements][7]
+
+Image by: (Yasuharu Katsuno and Shin Saito, CC BY-SA 4.0)
+
+Now you can get access to the database instances using a test pod. DOA also generated a pod definition for testing.
+
+```
+$ kubectl apply -f /tmp/out/trading-app/test/pod-test.yaml # creates a test Pod
+pod/trading-app-test created
+$ kubectl exec trading-app-test -it -- bash # login to the pod
+```
+
+The database hostname and the credential to access the DB are injected into the pod, so you can access the database using them. Execute the `psql` metacommand to show all tables and views (in a database):
+
+```
+# printenv DB_HOST; printenv PGPASSWORD
+(values of the variable are shown)
+
+# psql -h ${DB_HOST} -U postgres -d jrvstrading -c '\dt'
+ List of relations
+ Schema | Name | Type | Owner
+--------+----------------+-------+----------
+ public | account | table | postgres
+ public | quote | table | postgres
+ public | security_order | table | postgres
+ public | trader | table | postgres
+(4 rows)
+
+# psql -h ${DB_HOST} -U postgres -d jrvstrading -c '\dv'
+ List of relations
+ Schema | Name | Type | Owner
+--------+-----------------------+------+----------
+ public | pg_stat_kcache | view | postgres
+ public | pg_stat_kcache_detail | view | postgres
+ public | pg_stat_statements | view | postgres
+ public | position | view | postgres
+(4 rows)
+```
+
+After the test is done, log out from the pod and remove the test pod:
+
+```
+# exit
+$ kubectl delete -f /tmp/out/trading-app/test/pod-test.yaml
+```
+
+Finally, delete the created cluster using a script:
+
+```
+$ bash delete.sh
+```
+
+### Welcome to Konveyor Tackle world!
+
+To learn more about application refactoring, you can check out the [Konveyor Tackle site][8], join the community, and access the source code on [GitHub][9].
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/migrating-databases-kubernetes-using-konveyor
+
+作者:[Yasu Katsuno][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/yasu-katsuno
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/kubernetes_containers_ship_lead.png
+[2]: https://github.com/konveyor/tackle-diva/tree/main/doa
+[3]: https://github.com/zalando/postgres-operator
+[4]: https://opensource.com/sites/default/files/2022-05/tackle%20illustration.png
+[5]: https://opensource.com/sites/default/files/2022-05/existing%20system%20tackle.png
+[6]: https://github.com/saud-aslam/trading-app
+[7]: https://opensource.com/sites/default/files/2022-05/postgreSQ-.png
+[8]: https://www.konveyor.io/tools/tackle/
+[9]: https://github.com/konveyor/tackle-diva
diff --git a/sources/tech/20220526 Document your source code with Doxygen on Linux.md b/sources/tech/20220526 Document your source code with Doxygen on Linux.md
new file mode 100644
index 0000000000..053e300e79
--- /dev/null
+++ b/sources/tech/20220526 Document your source code with Doxygen on Linux.md
@@ -0,0 +1,254 @@
+[#]: subject: "Document your source code with Doxygen on Linux"
+[#]: via: "https://opensource.com/article/22/5/document-source-code-doxygen-linux"
+[#]: author: "Stephan Avenwedde https://opensource.com/users/hansic99"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Document your source code with Doxygen on Linux
+======
+This widely used open source tool can generate documentation from your comments.
+
+![5 trends in open source documentation][1]
+
+Image by: Internet Archive Book Images. Modified by Opensource.com. CC BY-SA 4.0
+
+When trying to familiarize yourself with someone else's project, you usually appreciate the comments left behind that help you understand the meaning of their code. In the same way, whenever you are programming, whether for yourself or for others, it is good practice to comment your own code. All programming languages offer a special syntax to mark a word, a line, or a whole section as a comment. Those areas are then ignored by the compiler or interpreter when the source code is processed.
+
+Comments don't take the place of documentation, but there is a way to use your comments to produce documentation easily. Meet [Doxygen][2], an open source tool for generating HTML or LaTeX documentation based on comments in the code. Doxygen enables you to provide a comprehensive overview of the structure of your code without additional effort. While Doxygen is mainly used to document C++, you can use it for many other languages, like C, Objective-C, C#, PHP, Java, Python, and more.
+
+To use Doxygen, you simply comment your source code in a syntax that Doxygen can read. Doxygen then walks through your source files and creates HTML or LaTeX documentation based on those special comments. The C++ example project below will illustrate how the source code is commented and how the documentation is generated from it. The example is available on [GitHub][3], and I will also include references to different sections of the [Doxygen manual and documentation][4].
+
+### Install Doxygen on Linux
+
+On Fedora, Doxygen is available as a package. Open a terminal and run:
+
+```
+sudo dnf install doxygen
+```
+
+On Debian-based systems, you can install it by running:
+
+```
+sudo apt-get install doxygen
+```
+
+### Usage
+
+Once installed, all you need is a project with Doxygen-compatible comments and a Doxyfile, a configuration file that controls the behavior of Doxygen.
+
+Note: If you stick to the related example project on GitHub, you can omit the next step.
+
+If there is no `Doxyfile` yet, you can simply let Doxygen generate a standard template. To do so, navigate to the root of your project and run:
+
+```
+doxygen -g
+```
+
+The `-g` stands for generate. You should now notice a newly created file called `Doxyfile`. You can invoke Doxygen by simply running:
+
+```
+doxygen
+```
+
+You should now notice two newly created folders:
+
+* html/
+* latex/
+
+By default, Doxygen outputs LaTeX-formatted documentation as well as HTML-based documentation. In this article, I will focus only on HTML-based documentation. You can find out more about LaTeX output in the official Doxygen documentation, in the *Getting started* section.
+
+Double click on `html/index.html` to open the actual HTML documentation. With a blank configuration, it probably looks like the screenshot below:
+
+![A screenshot of a doxygen generated main page on Firefox. The content field under My Project Documentation is blank.][6]
+
+Now it's time to modify the `Doxyfile` and add some special comments to the source code.
+
+### Doxyfile
+
+The `Doxyfile` allows you to define tons of adjustment possibilities, so I will describe only a very small subset. The settings correspond to the `Doxyfile` of the example project.
+
+#### Line 35: Project name
+
+Here you can specify the project name, which will be visible in the header line and the browser tab.
+
+```
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
+
+PROJECT_NAME = "My Project"
+```
+
+#### Line 47: Project brief description
+
+The brief description will also be shown in the header but in a smaller font.
+
+```
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF = "An example of using Doxygen in C++"
+```
+
+#### Line 926: Inclusion of subdirectories
+
+Allow Doxygen to walk recursively through subdirectories to find source and documentation files.
+
+```
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
+
+RECURSIVE = YES
+```
+
+#### Line 1769: Disable LaTeX output
+
+If you are just interested in the HTML output, you can disable the LaTeX code generation using this switch.
+
+```
+# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
+
+# The default value is: YES.
+
+GENERATE_LATEX = NO
+```
+
+After every change, you can run Doxygen again to check whether your changes have had the desired effect. If you just want to check which modification an existing `Doxyfile` has, invoke Doxygen with the `-x` switch:
+
+![A screenshot of the terminal showing the differences, Project Name, Project Brief, Recursive, and status of Generate Latex][7]
+
+As with the command `diff`, Doxygen displays only the differences between the actual Doxyfile and the template.
+
+### Special comments
+
+Doxygen reads the sources and checks each file for special comments. Based on those comments and keywords, it builds up the HTML documentation. The anatomy of the special comments can be well explained using the header file of the class ByteStream, as shown in the GitHub example linked above.
+
+I will look at the constructor and destructor as an example:
+
+```
+/*! @brief Constructor which takes an external buffer to operate on
+*
+* The specified buffer already exist.
+* Memory and size can be accessed by buffer() and size().
+*
+* @param[in] pBuf Pointer to existing buffer
+* @param[in] size Size of the existing buffer
+*/
+
+ByteStream(char* pBuf, size_t size) noexcept;
+```
+
+There are different flavors of formatting a special comment block. I prefer to start the comment in the Qt-style (`/*!` ) and add an asterisk (`*` ) before each line. The block then ends with an asterisk followed by a forward slash (`*/` ). To get an overview of the different style options, refer to the Doxygen manual, in the section *Documenting the code*.
+
+Comments in Doxygen are divided into two sections, a brief description and a detailed description. Both sections are optional. In the code sample above, the comment block refers to the following line of code, the declaration of a constructor. The sentence behind the `@brief` will be shown in the compact class overview:
+
+![A screenshot of the C++ example of using Doxygen showing the Byte Stream Class Reference. The categories in the list are public member functions, writing (operators for writing to the stream), and reading (operators for reading from the stream)][8]
+
+After a blank line (blank lines are treated as paragraph separators), the actual documentation for the constructor begins. With the `@param[in/out]` keyword, you can mark the arguments passed to the constructor, and Doxygen will make a clear argument list from it:
+
+![Screenshot of the Doxygen example showing the parameters under ByteStream][9]
+
+Note that Doxygen automatically creates a link to the mentioned `buffer()` and `size()` method in the comment. In contrast, the comment before the destructor declaration won't have any effect on Doxygen as it is not recognized as a special comment:
+
+```
+// Destructor
+~ByteStream();
+```
+
+Now you have seen 90% of the magic. By using a slightly modified syntax for your comments, you can convert them into special comments that Doxygen can read. Furthermore, by using a few keywords, you can advance the formatting. In addition, Doxygen has some special features, which I will highlight in the following section.
+
+### Features
+
+Most of the work is already done via your regular commenting on the source code. But with a few tweaks, you can easily enhance the output of Doxygen.
+
+#### Markdown
+
+For advanced formatting, Doxygen supports Markdown syntax and HTML commands. There is a Markdown cheat sheet available in the [download section][10] of opensource.com.
+
+#### Mainpage
+
+Aside from your customized header, you will get a mostly empty page when you open `html/index.html`. You can add some meaningful content to this empty space by using specific keywords. Because the main page is usually not dedicated to a particular source code file, you can add an ordinary text file containing the content for the main page into the root of your project. You can see this in the example on GitHub. The comments in there produce the following output:
+
+![The Doxygen Example Documentation field now contains headings and documentation: Introduction, Running the example, System requirements, and Building the code, with step by step examples and code snippets (all can be found in the example on GitHub)][11]
+
+#### Automatic link generation
+
+As noted above, Doxygen automatically figures out when you are referring to an existing part of the code and creates a link to the related documentation. Be aware that automatic link creation only works if the part you refer to is documented as well.
+
+More information can be found in the official documentation, under *Automatic link generation*.
+
+#### Groups
+
+The ByteStream class has overloaded stream operators for writing (`<<` ) and reading (`>>` ). In the class overview in the **Special comments** section above, you can see that the operator declarations are grouped as Writing and Reading. These groups are defined and named in the ByteStream header file.
+
+Grouping is done using a special syntax: You start a group with `@{` and end it with `}@`. All members inside those marks belong to this group. In the header `ByteStream.h` it is implemented as follows:
+
+```
+/** @name Writing
+* Operators for writing to the stream
+* @{
+*/
+
+(...)
+
+/** @}
+* @name Reading
+* Operators for reading from the stream
+* @{
+*/
+
+(...)
+
+/** @} */
+```
+
+You can find more information about grouping in the Doxygen documentation, under *Grouping*.
+
+#### LLVM Support
+
+If you are building with [Clang][12], you can apply the flag `-Wdocumentation` to the build process to let Clang check your special comments. You can find more information about this feature in the LLVM Users Manual or in Dmitri Gribenko's presentation, both on the Clang website.
+
+### Where Doxygen is used
+
+Doxygen was first released in 1997, so it has been already around for some years. Despite its age, many projects use Doxygen to create their documentation. Some examples are NASA's [F Prime][13] flight software framework, the image processing library [OpenCV][14], and the package manager [RPM][15]. You can also find the Doxygen syntax in other areas, like in the documentation standards of the content management platform [Drupal][16].
+
+A caveat: One drawback of using Doxygen is that it outputs HTML documentation with the look and feel of web pages from the nineties. It is also hard to depict the architecture of meta and template programming using Doxygen. For those cases, you would probably choose [Sphinx][17] over Doxygen.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/document-source-code-doxygen-linux
+
+作者:[Stephan Avenwedde][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/hansic99
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/documentation-type-keys-yearbook.png
+[2]: https://www.doxygen.n/
+[3]: https://github.com/hANSIc99/DoxygenSample
+[4]: https://www.doxygen.nl/manual/
+[5]: https://opensource.com/downloads/doxygen-cheat-sheet
+[6]: https://opensource.com/sites/default/files/2022-05/main%20page%20doxy.png
+[7]: https://opensource.com/sites/default/files/2022-05/doxygen%20class%20overview.png
+[8]: https://opensource.com/sites/default/files/2022-05/actual%20doxy%20byte%20stream%20class.png
+[9]: https://opensource.com/sites/default/files/2022-05/argument%20list%20from%20Doxygen.png
+[10]: https://opensource.com/downloads/cheat-sheet-markdown
+[11]: https://opensource.com/sites/default/files/2022-05/main%20page%20doxygen.png
+[12]: https://clang.llvm.org/
+[13]: https://github.com/nasa/fprime
+[14]: https://docs.opencv.org/4.5.5/index.html
+[15]: https://github.com/rpm-software-management/rpm
+[16]: https://www.drupal.org/docs/develop/standards/api-documentation-and-comment-standards
+[17]: https://opensource.com/article/18/11/building-custom-workflows-sphinx
+[18]: https://opensource.com/downloads/doxygen-cheat-sheet
diff --git a/sources/tech/20220526 Garuda Linux- All-Rounder Distro Based on Arch Linux.md b/sources/tech/20220526 Garuda Linux- All-Rounder Distro Based on Arch Linux.md
new file mode 100644
index 0000000000..8862a57bb2
--- /dev/null
+++ b/sources/tech/20220526 Garuda Linux- All-Rounder Distro Based on Arch Linux.md
@@ -0,0 +1,154 @@
+[#]: subject: "Garuda Linux: All-Rounder Distro Based on Arch Linux"
+[#]: via: "https://www.debugpoint.com/2022/05/garuda-linux-review-2022/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Garuda Linux: All-Rounder Distro Based on Arch Linux
+======
+A review of the Arch Linux based Garuda Linux, which brings a collection of desktop environments, window managers, and tools for general users and gamers.
+
+I have been planning to review Garuda Linux for a long time. But never got into it due to several reasons. Over the years, we [reviewed][1] a couple of Arch-based distros – spread across new ones, stables distros and more. Each one of them is a little different from the others. Finally, we review the Garuda Linux in 2022 – it’s our first review of this distro, and we will continue with all the major releases.
+
+![Garuda Linux Desktop (2022)][2]
+
+### What does it offer?
+
+There are many customized and easy-to-use Arch-based Linux distributions available. Every one of those tries to present something new other than just another variant of Arch Linux.
+
+Garuda Linux does offer a few new features compared to others. Firstly, it brings almost all popular desktops and window managers such as KDE, Xfce, GNOME, LXQt-kwin, Cinnamon, Mate, Wayfire, Qtile, i3wm and Sway. Second, it offers the default BTRFS file system with zstd compression for better performance. In addition, it provides the popular Chaotic-Aur, which contains a vast collection of pre-compiled binaries from AUR. Moreover, a group of hand-picked themes, icons and cursors give Garuda Linux an edge over the other Arch-based distros.
+
+Finally, its primary selling point is its pre-made for Gaming in Arch Linux with native apps such as Garuda Gamer and the option for Zen Kernel.
+
+### Garuda Linux Review – 2022 Edition
+
+This review is based on Garuda’s default offering, i.e. Garuda dragonized zen kernel with KDE Plasma (April 28, 2022 iso).
+
+#### Download and Installation
+
+![Garuda Linux – boot screen][3]
+
+The download via torrent was fast without any problems. The LIVE boot gives you whether you want to boot using the open-source or NVIDIA drivers. Finally, the welcome screen is well designed and gives you clear instructions to launch the installer.
+
+Garuda offers separate ISO files for different desktops and window managers. Because a massive set of packages pre-loaded in ISO files also gives you the option for the LITE version with KDE Plasma. The LITE versions are the base Garuda Linux without additional theming and packages.
+
+So, pick the one you want for your needs.
+
+Garuda Linux uses Calamares installer. The Calamares are not configured heavily, and installation is pretty straightforward. However, Calamares doesn’t give you the option to choose the desktop environments or packages. As I mentioned above, it has a separate installer for each of those.
+
+During my test, the installation went smooth, and it took around 5 minutes for launching the LIVE medium to installation completion in an Intel i5, 8 GB, SSD configuration. It’s blazing fast, in my opinion.
+
+#### Look and Feel
+
+After the successful installation, you see a nice login screen (SDDM with themes). It is well designed and aligned with Garda Linux’s design patterns.
+
+![The Login screen (SDDM) of Garuda Linux][4]
+
+The KDE Plasma desktop is heavily customized in terms of look in Garuda Linux. Firstly, the Latte dock is well placed with essential shortcuts at the bottom. No unnecessary shortcuts are there, which is nice.
+
+![Garuda Linux Desktop with Latte dock][5]
+
+Second, at the top bar, you get the application menu of KDE Plasma with Latte dock widgets. All the widgets are well placed and necessary for all user bases. By default, the top bar contains NEtSpeed widgets, clipboard and volume controls and the event calendar widget of the Latte dock.
+
+Garuda Linux uses Kvantum theme engine with “sweetified-plasma” theme with kvantum-dark application style, giving it its unique look. In addition, the famous BeautyLine icon theme provides the much-needed contrast (as designed) to this distro.
+
+#### Initial Setup and Applications
+
+Firstly, the initial setup gives you several options to quickly configure your desktop before your first use. A series of terminal-based operations is provided by its welcome applications such as system upgrades, etc.
+
+The welcome application gives an assorted list of Garuda utilities, ranging from system configurations to changing looks. It includes system cleaner, partition manager, Chaotic-aur managers, Gaming utilities, etc.
+
+Not only that, but it also provides access to Garuda services for its users directly from the desktop. It helps new to advanced users in terms of discovery of the services and features.
+
+![Garuda Welcome App][6]
+
+Now, I would like to highlight two crucial apps in this Garuda Linux review. First, the Snapper tool gives you controls to create a system restore points using several options. If your system breaks at some point, you can always restore it to a stable state using this utility. This is one of the much-needed applications, considering it’s a rolling release.
+
+![The Snapper Tools for system restore points][7]
+
+Second, the Octopi software manager (similar to synaptic) gives you access to all necessary packages in the Arch repo. You can easily install with one click after verifying the dependencies. Moreover, it also gives you the ability to add and remove Arch repositories via GUI. It’s worth mentioning here that Garuda includes “chaotic-aur” and “multilib” repo by default in addition to the typical “community”, “extra”, and “core” repo.
+
+![Octopi Software Manager][8]
+
+#### The Browser
+
+Garuda doesn’t provide a Firefox web browser by default. It includes the customized LibreWolf-based [FireDragon][9] web browser, which integrates well with the KDE Plasma desktop. In addition, UBlock Origin and Dark Reader add-ons are pre-installed in FireDragon. The FireDragon web browser uses Garuda’s server for searching the web. I am not entirely sure whether it connects to Google in the backend.
+
+![FireDragon Web browser][10]
+
+In addition to the above apps, Garuda uses the advanced Fish shell for command line work. However, LibreOffice and other graphical utilities are not installed by default.
+
+#### Performance and Resource Usage
+
+Garuda is a little resource heavy, even in an idle state. It consumed around 17% of CPU and RAM usage of approximately 1.2 GB at idle. And if you open more apps, then it will further shoot up.
+
+The htop shows that most of the idle state resources are consumed by KWin. I am not sure why there are five forks of KWin running (perhaps for Kvuntam and other theming). I cross-checked this with a standard Plasma installation, where only one process of KWin runs.
+
+The default KDE Plasma edition of Garuda Linux takes around 6.4 GB of disk space.
+
+![Garuda Linux Performance – Idle State][11]
+
+With the above performance metric, you may not be able to run it in low-end hardware. For better performance, I recommend using an Intel i7 or similar system with at least 8GB of memory. However, the official system requirement states 4 GB of memory as below.
+
+* 30 GB storage space
+* 4 GB RAM
+* Video card with OpenGL 3.3 or better
+* 64-bit system
+
+Also, it is worth mentioning that other flavours such as GNOME, Cinnamon etc, should have much better performance metrics.
+
+### Things which grabbed my attention
+
+Garuda requires 30 GB of disk space, which I overlooked before installing. And it also seems a hard requirement, and the Calamares installer is configured that way. So, you have to have a minimum of 30 GB of root partition to install this version of Garuda Linux.
+
+Moreover, it takes around 6 GB of disk space for a default install, and I am not sure why the 30 GB limit is too hardcoded in the installer.
+
+![Garuda Linux requires min 30 GB disk space for installation][12]
+
+While Garuda Linux looks wonderful, I feel the default theming and colour contrast are a little “too much”. It feels excellent with high contrast colours on a dark backdrop at first look. But it does look a little “fanboy” type. Although look and feel are subjective, everyone has a different taste.
+
+But always, you can change the themes, icons and whatnot with just a click in KDE Plasma.
+
+### Closing Notes
+
+Finally, to wrap up the Garuda Linux review of 2022, I must say it is one of the Arch-based distros which stands out from the other distros in the same category. Due to its popularity and active participation from the user base, it shall not be discontinued in the future.
+
+From a general user’s perspective, community help is available via several active channels (which can be accessed via shortcuts from the welcome screen).
+
+If you are keen on gaming, zen Kernel and passionate about Arch Linux, you can choose Garuda. The use case of this distro may vary. I would not recommend it for serious development, projects, media related work.
+
+Then again, Garuda undoubtedly brings unique apps to manage Arch Linux, which is also a plus point. If you need a fancy looking Arch-based distro to start your Linux journey, it’s perfect.
+
+That said, you can download Garuda Linux from the [official website][13].
+
+And do let me know your opinion about Garuda in the comment box down below.
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/05/garuda-linux-review-2022/
+
+作者:[Arindam][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.debugpoint.com/author/admin1/
+[b]: https://github.com/lkxed
+[1]: https://www.debugpoint.com/tag/linux-distro-review
+[2]: https://www.debugpoint.com/wp-content/uploads/2022/05/Garuda-Linux-Desktop-2022.jpg
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/05/Garuda-Linux-boot-screen.jpg
+[4]: https://www.debugpoint.com/wp-content/uploads/2022/05/The-Login-screen-SDDM-of-Garuda-Linux.jpg
+[5]: https://www.debugpoint.com/wp-content/uploads/2022/05/Garuda-Linux-Desktop-with-Latte-dock.jpg
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/05/Garuda-Welcome-App.jpg
+[7]: https://www.debugpoint.com/wp-content/uploads/2022/05/The-Snapper-Tools-for-system-restore-points.jpg
+[8]: https://www.debugpoint.com/wp-content/uploads/2022/05/Octopi-Software-Manager.jpg
+[9]: https://github.com/dr460nf1r3/firedragon-browser
+[10]: https://www.debugpoint.com/wp-content/uploads/2022/05/FireDragon-Web-browser.jpg
+[11]: https://www.debugpoint.com/wp-content/uploads/2022/05/Garuda-Linux-Performance-Idle-State.jpg
+[12]: https://www.debugpoint.com/wp-content/uploads/2022/05/Garuda-Linux-requires-min-30-GB-disk-space-for-installation.jpg
+[13]: https://garudalinux.org/downloads.html
diff --git a/sources/tech/20220526 Shell Scripting is Still Going Strong.md b/sources/tech/20220526 Shell Scripting is Still Going Strong.md
new file mode 100644
index 0000000000..f4a5b767cd
--- /dev/null
+++ b/sources/tech/20220526 Shell Scripting is Still Going Strong.md
@@ -0,0 +1,198 @@
+[#]: subject: "Shell Scripting is Still Going Strong"
+[#]: via: "https://www.opensourceforu.com/2022/05/shell-scripting-is-still-going-strong/"
+[#]: author: "Bipin Patwardhan https://www.opensourceforu.com/author/bipin-patwardhan/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Shell Scripting is Still Going Strong
+======
+This article introduces you to the basics of shell scripting and its importance in day-to-day life. A shell script is a command-line interpreter that runs on a UNIX/Linux shell.
+
+![Penguin-with-linux-command][1]
+
+The first thing we notice when we log into a UNIX/Linux system is the blinking cursor next to the $ sign. This is the shell. It has been – for many decades – the ubiquitous (and many times the only) interface to interact with a computer. Before the advent and popularity of graphical user interfaces (GUIs), the terminal and the shell were the only mechanism to make the computer do what we wanted it to do. At first glance, one may wonder what the shell does – other than passing commands to the underlying operating system for execution. Most of us are familiar with commands like ‘ls’ (for listing contents of a directory), ‘cd’ (for changing the current directory), and so on. It is through the shell that we can execute these commands. The shell understands the text we type — converts it into tokens — and then executes them on the operating system.
+
+### Flavours
+
+Initially, the terminal started with the humble Bourne shell or ‘sh’. Over the years, many shell variants were developed and used. Some of the popular ones are ‘C Shell’ / ‘csh’ and ‘Korn Shell’ / ‘ksh’. ‘sh’ fell out of favour for a few years, but has gained popularity once again through its recent avatar, namely ‘bash’ / ‘Bourne Again Shell’.
+
+### What does the shell actually do?
+
+The shell is the immediate interface between the operating system (OS) and the user. We make the computer do what we want, by using commands and applications supported by the tools installed on the computer we are using. Some commands are applications installed on the operating system, while some are built into the shell itself. Some of the commands built into bash are ‘clear’, ‘cd’, ‘eval’, and ‘exec’, to name a few, while commands like ‘ls’, and ‘mkdir’ are applications. The commands built into the shell vary as per the shell.
+
+In this article, we cover a few aspects related to ‘bash’.
+
+### More about the shell
+
+Most of us have used commands like ‘ls’, ‘cd’, and ‘mkdir’. When we run the ‘ls -l’ command on a directory, all the directories and files in that directory are listed on the screen. If the number is large, the screen scrolls. If the terminal does not support scroll bars (as was the case for many years), there is no way to look at the entries that have scrolled past. To help overcome this, we use commands like ‘more’ and ‘less’. These allow us to view the output on a page-by-page basis. The command typically used is:
+
+```
+ls -l | less
+```
+
+What is the shell doing here? What looks like a single command is actually two commands executing one after the other, ls and less. The pipe (‘|’) connects the two programs, but the connection is managed by the shell. Because of the pipe character, the shell connects the two programs – it connects the standard output of the ls command and connects it to the standard input or standard in or stdin of less. The pipe feature allows us to take the output of any program and provide it as the input to another program – without us having to do any changes to the programs. This is the philosophy of many UNIX/Linux applications — keep the applications simple and then combine many applications together to achieve the end result, rather than having one program do many things.
+
+If needed, we can redirect the output of ls to a file and then view it using ‘vi’. For this, we use the command:
+
+```
+ls -l > /tmp/my_file.txt
+vi /tmp/my_file.txt
+```
+
+In this case, the output of ls is being redirected to a file. This is managed by the shell, which understands the ‘>’ symbol to mean redirection. It treats the token that follows as a file.
+
+### Automation using shell
+
+This ability to combine commands is one of the key elements for the creation of automation scripts using shell commands. In my most recent project, we were executing Python/Spark (PySpark) applications using cluster mode. Each application executed many structured query language (SQL) statements – SparkSQL. To keep track of application progress, we were printing details about the SQL being executed. This allowed us to maintain a log of what was happening in the application. As the applications were executed in cluster mode, to view the log, we had to use the yarn command as follows:
+
+```
+yarn log –applicationId [application_id]
+```
+
+In most cases, the log produced by an application was very large. So we typically piped the log to ‘less’ or redirected it to a file. The command we used was:
+
+```
+yarn log –aplicationId [application_id] | less
+```
+
+Our development team had a strength of 40 people. Each one had to remember this command. To make it simpler, I converted this command into a bash script. For this, I created a file with a ‘.sh’ extension. On UNIX and Linux systems, file extension does not matter. As long as the file is an executable, it will work. Extensions have significance on MS Windows.
+
+### Important thing to remember
+
+The shell is an interpreter. This means that it will read the program line by line and execute it. The limitation of this approach is that errors (if any) are not identified upfront. Errors are not identified till they are read and executed by the interpreter. In short, we can have a shell program that will execute perfectly for the first 20 lines and then fail due to a syntax error on line 21. When the script fails at line 21, the shell does not unroll/undo the previous steps. When such a thing occurs, we have to correct the script and start execution from the first line. Thus, as an example, if we have deleted a few files before encountering an error, execution of the shell script will stop, but the files are gone forever.
+
+The script I created was:
+
+```
+#!/bin/bash
+yarn log –applicationId 123 | less
+```
+
+…where 123 was the application ID.
+
+The first two characters of the first line are magic characters. They tell the script that this is an executable file and the line contains the name of the program to be used for execution. The remaining lines of the script are passed to the program mentioned. In this case, we are going to execute bash. Even after including the first line, we have to apply execute permissions to the file using:
+
+```
+chmod +x my_file.sh
+```
+
+After giving execute permissions to the file, we can execute it as:
+
+```
+./my_file.sh
+```
+
+If we do not give execute permissions to the file, we can execute the script as:
+
+```
+sh ./my_file.sh
+```
+
+### Passing parameters
+
+You will realise quickly that such a script is handy, but becomes useless immediately. Each time we execute the Python/Spark application, a new ID is generated. Hence, for each run, we have to edit the file and add the new application ID. This definitely reduces the usability of the script. To be useful, we should be passing the application ID as a parameter:
+
+```
+#!/bin/bash
+yarn –log -applicationId ${1} | less
+```
+
+We need to execute the script as:
+
+```
+./show_log.sh 123
+```
+
+The script will execute the yarn command, fetch the log for the application and allow us to view it.
+
+What if we want to redirect the output to a file? Not a problem. Instead of sending the output to less, we can redirect it to a file:
+
+```
+#!/bin/bash
+ls –l ${1} > ${2}
+view ${2}
+```
+
+To run the script, we have to provide two parameters, and the command becomes:
+
+```
+./my_file.sh /tmp /tmp/listing.txt
+```
+
+When executed, $1 will bind to /tmp and $2 will bind to /tmp/listing.txt. For the shell, the parameters are named from one to nine. This does not mean we cannot pass more than nine parameters to a script. We can, but that is the topic of another article. You will note that I have mentioned the parameters as ${1} and ${2} instead of $1 and $2. It is a good practice to enclose the name of the parameter in curly brackets as it allows us to unambiguously combine the parameters as part of a longer variable. For example, we can ask the user to provide file name as a parameter and then use that to form a larger file name. As an example, we can take $1 as the parameter and create a new file name as ${1}_student_names.txt.
+
+### Making the script robust
+
+What if the user forgets to provide parameters? The shell allows us to check for such conditions. We modify the script as below:
+
+```
+#!/bin/bash
+if [ -z “${2}” ]; then
+echo “file name not provided”
+exit 1
+fi
+if [ -z “${1}” ]; then
+echo “directory name not provided”
+exit 1
+fi
+DIR_NAME=${1}
+FILE_NAME=${2}
+ls -l ${DIR_NAME} > /tmp/${FILE_NAME}
+view /tmp/${FILE_NAME}
+```
+
+In this program, we check if the proper parameters are passed. We exit the script if parameters are not passed. You will note that I am checking the parameters in reverse order. If we check for the presence of the first parameter before checking the presence of the second parameter, the script will pass to the next step if only one parameter is passed. While the presence of parameters can be checked in ascending order, I recently realised that it might be better to check from nine to one, as we can provide proper error messages. You will also note that the parameters have been assigned to variables. The parameters one to nine are positional parameters. Assigning positional parameters to named parameters makes it easy to debug the script in case of issues.
+
+### Automating backup
+
+Another task that I automated was that of taking a backup. During development, in the initial days, we did not have a version control system in place. But we needed to have a mechanism to take regular backups. So the best method was to write a shell script that, when executed, copied all the code files into a separate directory, zipped them and then uploaded them to HDFS, using the date and time as the suffix. I know that this method is not as clean as having a version control system, as we store complete files and finding differences still needs the use of a program like diff; however, it is better than nothing. While we did not end up deleting the code files, the team did end up deleting the bin directory where the helper scripts were stored!!! And for this directory I did not have a backup. I had no choice but to re-create all the scripts.
+
+Once the source code control system was in place, I easily extended the backup script to upload the files to the version control system in addition to the previous method uploading to HDFS.
+
+### Summing up
+
+These days, programming languages like Python, Spark, Scala, and Java are in vogue as they are used to develop applications related to artificial intelligence and machine learning. While these languages are far more powerful when compared to shells, the ‘humble’ shell provides a ready platform that allows us to create helper scripts that ease our day-to-day tasks. The shell is quite powerful, more so because we can combine the powers of all the applications installed on the OS. As I found out in my project, even after many decades, shell scripting is still going strong. I hope I have convinced you to give it a try.
+
+### One for the road
+
+Shell scripts can be very handy. Consider the following command:
+
+```
+spark3-submit --queue pyspark --conf “spark.yarn.principal= abcd@abcd.com --conf “spark.yarn.keytab=/keytabs/abcd.keytab --jars /opt/custom_jars/abcd_1.jar --deploy-mode cluster --master yarn $*
+```
+
+We were expected to use this command while executing a Python/Spark application. Now imagine this command has to be used multiple times a day, by a team of 40 people. Most of us will copy this command in Notepad++, and each time we need to use it, we will copy it from Notepad++ and paste it on the terminal. What if there is an error during copy paste? What if someone uses the parameters incorrectly? How do we debug which command was used? Looking at history does not help much.
+To make it simple for the team to get on with the task of Python/Spark application execution, we can create a bash shell script as follows:
+
+```
+#!/bin/bash
+SERVICE_PRINCIPAL=abcd@abcd.com
+KEYTAB_PATH=/keytabs/abcd.keytab
+MY_JARS=/opt/custom_jars/abcd_1.jar
+MAX_RETRIES=128
+QUEUE=pyspark
+MASTER=yarn
+MODE=cluster
+
+spark3-submit --queue ${QUEUE} --conf “spark.yarn.principal=${SERVICE_PRINCIPAL} --conf “spark.yarn.keytab=${KEYTAB_PATH} --jars ${MY_JARS} --deploy-mode ${MODE} --master ${MASTER} $*
+```
+
+This demonstrates how powerful a shell script can be and make our life easy. You can try more commands and scripts as per your requirement and explore further.
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/05/shell-scripting-is-still-going-strong/
+
+作者:[Bipin Patwardhan][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/bipin-patwardhan/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/05/Penguin-with-linux-command.jpg
diff --git a/sources/tech/20220526 Write C applications using Vely on Linux.md b/sources/tech/20220526 Write C applications using Vely on Linux.md
new file mode 100644
index 0000000000..858cd4ed19
--- /dev/null
+++ b/sources/tech/20220526 Write C applications using Vely on Linux.md
@@ -0,0 +1,306 @@
+[#]: subject: "Write C applications using Vely on Linux"
+[#]: via: "https://opensource.com/article/22/5/write-c-appplications-vely-linux"
+[#]: author: "Sergio Mijatovic https://opensource.com/users/vely"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Write C applications using Vely on Linux
+======
+Vely is an open source tool for writing web and command-line applications in C on major Linux distributions.
+
+![Women in computing and open source][1]
+
+Image by: Ray Smith
+
+Vely is a tool for writing web and command-line applications in C. Vely combines high performance and the low footprint associated with C programming with ease of use and improved safety reminiscent of languages like PHP. It's free and open source software, and licensed under GPLv3 and LGPL 3 for libraries, so you can even build commercial software with it.
+
+Vely works on major Linux distributions and processor architectures. You can use webservers, such as Apache, Nginx, or others, and databases such as MariaDB, PostgreSQL, and SQLite.
+
+You can use Vely for web applications, command-line programs, as middleware, database applications, services software, data integration, IoT (Internet of Things), and anywhere else. It's well suited for the cloud, works easily in a container, and, due to low resource requirements, it's also a good choice when memory and processing power are at a premium.
+
+### Install Vely
+
+To try Vely, install the Apache webserver and [MariaDB database][2]. You can use a different webserver and database, and the setup would be similar, but in this example, I use Apache and MariaDB.
+
+Next, install Vely. On Linux use a package manager such as `dnf` or `apt`.
+
+### Stock tickers project
+
+This example saves the names of stock tickers and their prices so you can view them in a list.
+
+Start by creating `stock.v` file, and paste this code into it:
+
+```
+#include "vely.h"
+
+void stock() {
+ out-header default
+ @
+ @
+ input-param action
+ input-param stock_name
+ input-param stock_price
+ if (!strcmp (action, "add")) {
+ // Add to stock table, update if stock exists
+ run-query#add_data@db = "insert into stock (stock_name,\
+ stock_price) values ('%s', '%s') on duplicate key \
+ update stock_price='%s'" : stock_name, stock_price, \
+ stock_price
+ end-query
+ error#add_data to define err
+ if (strcmp (err, "0")) {
+ report-error "Cannot update stock price, error [%s]", err
+ }
+ @
+ @Stock price updated!
+ @
+ } else if (!strcmp (action, "show")) {
+ // Show stock names and values
+ @
+ }
+ @
+ @
+}
+```
+
+### Build the database
+
+For this example, create a database named `dbstock`, owned by user `vely` with the password `your_password`. These are arbitrary names, and in real life, you can use whatever values you want, as long as they're consistent throughout your code.
+
+First, log in to the MariaDB database as root and execute this:
+
+```
+CREATE DATABASE IF NOT EXISTS dbstock;
+FLUSH privileges;
+CREATE USER IF NOT EXISTS vely@localhost IDENTIFIED BY 'your_password';
+FLUSH privileges;
+GRANT ALL privileges ON dbstock.* TO vely@localhost;
+FLUSH privileges;
+exit;
+```
+
+Now log in to MariaDB again and set the current database:
+
+```
+$ mysql -u vely -pyour_password
+```
+
+Now you can create the database objects needed for the application. You need a `stock` table in the `dbstock` database for this example.
+
+```
+USE dbstock;
+CREATE TABLE IF NOT EXISTS stock (stock_name VARCHAR(100) PRIMARY KEY, stock_price BIGINT);
+```
+
+Finally, create a database configuration file named `db` so that your application can log into the database. You must call it `db` because that's what the code in `stock.v` uses. For instance:
+
+```
+[...]
+run-query#add_data@db = "insert into stock ..."
+[...]
+```
+
+The database name is preceded by the `@` sign, in this case, `@db`, so the name of the database configuration file is `db`. As with other values, you can name your database configuration file whatever you want, as long as your code is consistent.
+
+Here's the configuration for the `db` file:
+
+```
+[client]
+user=vely
+password=your_password
+database=dbstock
+```
+
+The above is a standard MariaDB [client options file][3]. Vely uses native database connectivity, so you can specify any options a given database allows.
+
+### Build the application
+
+Next, you can create your Vely application. For this example, you're going to create a web app called `stockapp` :
+
+```
+$ sudo vf -i -u $(whoami) stockapp
+```
+
+This creates an application home under the Vely directory (`/var/lib/vv` ) and performs the required application setup steps for you.
+
+To build your application, use the `vv` command:
+
+```
+$ vv -q --db=mariadb:db stockapp
+```
+
+Here's what each option means:
+
+* -q builds an application
+* --db specifies the database to be used (mariadb:db, as specified in your configuration file)
+* stockapp is the application name
+
+You can actually use any number of databases and different vendors in your application. This example is simple, though, so you only need one database. Vely has many other useful options you can use, but this is sufficient for now.
+
+### Configure web access
+
+To access your application via a web browser or various web clients, you need to set up a webserver. It can be Apache, Nginx, or any other server that supports FastCGI proxying (most, if not all, webservers and load balancers do this). Here, I will set up Apache, but the setup is similar for other webservers.
+
+The `proxy` and `proxy_fcgi` modules are installed and enabled by default on the Fedora install of the Apache web server, but you must enable them on Debian-based systems (like Ubuntu):
+
+```
+$ sudo a2enmod proxy
+$ sudo a2enmod proxy_fcgi
+$ sudo systemctl restart apache2
+```
+
+If you're not on a Debian-based system, you can enable an Apache module by adding it to the Apache configuration file or in a file in the `/etc/httpd/conf.modules.d/` directory, depending on your distribution's configuration.
+
+Next, open your Apache configuration file in a text editor. For example, on a Debian-based system:
+
+```
+$ sudo vi /etc/apache2/apache2.conf
+```
+
+On a Fedora system (including Red Hat Enterprise Linux and CentOS):
+
+```
+$ sudo vi /etc/httpd/conf/httpd.conf
+```
+
+Add this line to the end of the file:
+
+```
+ProxyPass "/stockapp" unix:///var/lib/vv/stockapp/sock/sock|fcgi://localhost/stockapp
+```
+
+Depending on your webserver configuration, there may be a better place to add the `ProxyPass` directive. For this example, though, the above is sufficient.
+
+Save the file and restart the webserver. On Fedora-based systems:
+
+```
+$ sudo systemctl restart httpd
+```
+
+On Debian-based systems:
+
+```
+$ sudo systemctl restart apache2
+```
+
+In this case, you're connecting to your application through a socket, but you can use a TCP port instead (which comes in handy when your application resides in a container or something similar).
+
+### Run the application
+
+Start the application server for your application:
+
+```
+$ vf stockapp
+```
+
+By default, this runs anywhere from 0 to 20 server processes for your application, depending on the load. When the user load is low, your application uses virtually no memory at all.
+
+That was it! Navigate to [http://127.0.0.1/stockapp?req=stock&action=add&stock_name=XYZ&stock_pri…][4] in your web browser to see the application.
+
+You've just updated the stock price for ticker "XYZ" to 440. Try different tickers and prices to build a list of stocks, which you can view with the URL [http://127.0.0.1/stockapp?req=stock&action=show][5].
+
+Congratulations, you've created your first Vely application, reverse proxied behind a web server.
+
+You can also view the output without a graphical browser by [using curl][6]:
+
+```
+$ curl -s \
+"http://127.0.0.1/stockapp?req=stock&action=add&stock_name=XYZ&stock_price=440"
+$ curl -s "http://127.0.0.1/stockapp?req=stock&action=show"
+```
+
+### Run the application from the terminal
+
+You can run your application from the terminal, too. A terminal command is always made along with the FastCGI application server, and it's named the same as your application (in this case, `stockapp` ). It works exactly the same as the web app. You can write some requests to your application to be fulfilled as web requests and others to run from the command-line. To do that, you provide the request as environment variables. For instance, to output the list of stocks as HTML, type:
+
+```
+$ export REQUEST_METHOD=GET
+$ export QUERY_STRING="req=stock&action=show"
+$ /var/lib/vv/bld/stockapp/stockapp
+```
+
+To suppress HTTP headers, use:
+
+```
+$ export VV_SILENT_HEADER=yes
+$ /var/lib/vv/bld/stockapp/stockapp
+```
+
+### How Vely works
+
+Your application works by processing requests and sending back replies. A request is one of two HTTP methods: GET or POST.
+
+A request always has a parameter `req`. In the example here, its value is `stock`. That means source code compiled from file `stock.v` is called automatically to handle such a request.
+
+A source file like this can do many different things, all grouped logically under a single request. Here, you have another parameter `action`, which can have a value of `add` (to add or update a stock) or `show` (to show a list of stocks). You specify `stock_name` and `stock_price` parameters when adding or updating. Pretty easy stuff. Other than `req`, you can choose parameter names however you wish.
+
+Looking at the code in `stock.v`, it's simple to follow. You use the [input-param][7] construct to get the values for your input parameters. Yes, those strange things in the C code that aren't C are [Vely language constructs][8], and they do lots of useful stuff for you, such as [run-query][9], which (as you might expect from the name) runs your queries. An easy one is `@`, which is an [output construct][10]. String handling is made simple and reliable without worrying about buffer overruns. Check out the [full reference of Vely constructs][11] to understand Vely's capabilities.
+
+Vely converts all constructs in your code into pure C and makes a native executable that is very small and fast. Your application runs as several FastCGI server processes, which stay resident in memory while accepting and processing requests. All of these processes work in parallel.
+
+For more info, see [how Vely works][12] and read more about [Vely architecture][13].
+
+### Manage strings and memory
+
+Vely has automatic garbage collection for all of its constructs. In fact, most of the time, you shouldn't need to free memory at all, so application development is even simpler. Leave that to Vely and enjoy computing free of memory leaks and far fewer memory issues than you might expect. String constructs such as `write-string` make it safe, fast, and easy to create complex strings just as they do simple ones.
+
+### FastCGI program manager
+
+Even if you don't want to develop your own applications with Vely, you can use `vf`, [Vely's FastCGI program manager][14], with any generic FastCGI program, not just those created with Vely.
+
+### Want to learn more about Vely?
+
+I sometimes get asked about the project name. *Vely* is short for *Vel(ocit)y*. It's fast to program with, fast to understand code and maintain, and fast (and small!) at run time. It's even easy to containerize.
+
+Check out the documentation at [vely.dev][15], which features downloads and examples that go beyond the introduction this article provides.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/write-c-appplications-vely-linux
+
+作者:[Sergio Mijatovic][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/vely
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/OSDC_women_computing_2.png
+[2]: https://www.redhat.com/sysadmin/mysql-mariadb-introduction?intcmp=7013a000002qLH8AAM
+[3]: https://mariadb.com/kb/en/configuring-mariadb-connectorc-with-option-files/#options
+[4]: http://127.0.0.1/stockapp?req=stock&action=add&stock_name=XYZ&stock_price=440
+[5]: http://127.0.0.1/stockapp?req=stock&action=show
+[6]: https://opensource.com/article/20/5/curl-cheat-sheet
+[7]: https://vely.dev/input-param.html
+[8]: https://vely.dev/language_constructs.html
+[9]: https://vely.dev/run-query.html
+[10]: https://vely.dev/output_construct.html
+[11]: https://vely.dev/reference.html
+[12]: https://vely.dev/how_vely_works.html
+[13]: https://vely.dev/vely_architecture.html
+[14]: https://vely.dev/plain_C_FCGI.html
+[15]: http://vely.dev
diff --git a/sources/tech/20220527 4 cool new projects to try in Copr for May 2022.md b/sources/tech/20220527 4 cool new projects to try in Copr for May 2022.md
new file mode 100644
index 0000000000..4ea0efa4fc
--- /dev/null
+++ b/sources/tech/20220527 4 cool new projects to try in Copr for May 2022.md
@@ -0,0 +1,149 @@
+[#]: subject: "4 cool new projects to try in Copr for May 2022"
+[#]: via: "https://fedoramagazine.org/4-cool-new-projects-to-try-in-copr-for-may-2022/"
+[#]: author: "Miroslav Suchý https://fedoramagazine.org/author/msuchy/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+4 cool new projects to try in Copr for May 2022
+======
+
+![4 packages to try from the Copr repos][1]
+
+[Copr][2] is a build system for anyone in the Fedora community. It hosts thousands of projects for various purposes and audiences. Some of them should never be installed by anyone, some are already being transitioned to the official Fedora Linux repositories, and the rest are somewhere in between. Copr gives you the opportunity to install third-party software that is not available in Fedora Linux repositories, try nightly versions of your dependencies, use patched builds of your favorite tools to support some non-standard use cases, and just experiment freely.
+
+If you don’t know [how to enable a repository][3] or if you are concerned about whether [it is safe to use Copr][4], please consult the [project documentation][5].
+
+This article takes a closer look at interesting projects that recently landed in Copr.
+
+### Python-QT6
+
+Do you miss QT6 Python bindings for Fedora Linux? Here they are. [https://copr.fedorainfracloud.org/coprs/g/kdesig/python-qt6/][6]
+
+KDE SIG owns this project. Therefore, it should be a quality one. And one day, it may land in Fedora Linux.
+
+Example of usage:
+
+```
+$ python
+ Python 3.10.4 (main, Mar 25 2022, 00:00:00) [GCC 12.0.1 20220308 (Red Hat 12.0.1-0)] on linux
+ Type "help", "copyright", "credits" or "license" for more information.
+ >>> import PyQt6
+ >>> from PyQt6.QtWidgets import QApplication, QWidget
+ >>> import sys
+ >>> app = QApplication(sys.argv)
+ >>> window = QWidget()
+ >>> window.show()
+ >>> app.exec()
+ 0
+```
+
+More documentation can be found at
+
+[https://www.pythonguis.com/tutorials/pyqt6-creating-your-first-window/][7].
+
+**Installation instructions**
+
+This package is available for Fedora Linux 36 and Rawhide. To install it, enter these commands:
+
+```
+sudo dnf copr enable @kdesig/python-qt6
+sudo dnf install python3-qt6
+```
+
+### Cloud-Native Utilities
+
+[A collection of cloud-native development tools][8].
+
+These packages do not follow Fedora packaging guidelines, are statically built, and opt to bundle all dependencies.
+
+**Currently available packages**:
+
+* Terraform – terraform
+* Packer – packer
+* Helm – helm
+* Tekton CLI – tektoncd-cli tektoncd-cli-doc
+* Knative CLI – knative-client knative-client-doc
+* Buildpack CLI – pack
+
+All build recipes can be viewed in dist-git or from Pagure:[https://pagure.io/mroche/cloud-utilities][9]
+
+**Installation instructions**
+
+These packages are available for Fedora 36 Linux and Rawhide. To install them, enter this command:
+
+```
+sudo dnf copr enable mroche/cloud-native-utilities
+```
+
+### DNF 5
+
+You may be aware the DNF team is working on DNF5. There is a [change proposal][10] for Fedora Linux 38. The benefit is that every package management software — including PackageKit, and DNFDragora — should use a common *libdnf* library. If you have an application that handles RPM packages, you should definitely check out this project.
+
+[https://copr.fedorainfracloud.org/coprs][11][/][12][rpmsoftwaremanagement/dnf5-unstable/][13]
+
+Another similar project from the DNF team is
+
+[https://copr.fedorainfracloud.org/coprs/jmracek/dnf5-alternatives/][14].
+
+**Installation instructions**
+
+These packages are available for Fedora Linux 35, 36 and Rawhide. To install them, enter these commands:
+
+```
+sudo dnf copr enable rpmsoftwaremanagement/dnf5-unstable
+sudo dnf install dnf5
+sudo dnf copr enable jmracek/dnf5-alternatives
+sudo dnf install microdnf-deprecated
+```
+
+### Hare
+
+[Hare][15] is a systems programming language designed to be simple, stable and robust. Hare uses a static type system, manual memory management, and a minimal runtime. It is well suited to writing operating systems, system tools, compilers, networking software, and other low-level, high-performance tasks. A detailed overview can be found in [these slides][16].
+
+My summary is: Hare is simpler than C. It can be easy. But if you insist on shooting in your legs, Hare will allow you to do it.
+
+[Copr project][17].
+
+**Installation Instructions**
+
+These packages are available for Fedora Linux 35, 36 and Rawhide. They are also available for OpenSUSE Leap and Tumbleweed. To install them, enter these commands:
+
+```
+sudo dnf copr enable sentry/qbe
+sudo dnf copr enable sentry/hare
+sudo dnf install hare harec qbe
+```
+
+--------------------------------------------------------------------------------
+
+via: https://fedoramagazine.org/4-cool-new-projects-to-try-in-copr-for-may-2022/
+
+作者:[Miroslav Suchý][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://fedoramagazine.org/author/msuchy/
+[b]: https://github.com/lkxed
+[1]: https://fedoramagazine.org/wp-content/uploads/2017/08/4-copr-945x400.jpg
+[2]: https://copr.fedorainfracloud.org/
+[3]: https://docs.pagure.org/copr.copr/how_to_enable_repo.html#how-to-enable-repo
+[4]: https://docs.pagure.org/copr.copr/user_documentation.html#is-it-safe-to-use-copr
+[5]: https://docs.pagure.org/copr.copr/user_documentation.html
+[6]: https://copr.fedorainfracloud.org/coprs/g/kdesig/python-qt6/
+[7]: https://www.pythonguis.com/tutorials/pyqt6-creating-your-first-window/
+[8]: https://copr.fedorainfracloud.org/coprs/mroche/cloud-native-utilities/
+[9]: https://pagure.io/mroche/cloud-utilities
+[10]: https://fedoraproject.org/wiki/Changes/MajorUpgradeOfMicrodnf
+[11]: https://copr.fedorainfracloud.org/coprs/rpmsoftwaremanagement/dnf5-unstable/
+[12]: https://copr.fedorainfracloud.org/coprs/rpmsoftwaremanagement/dnf5-unstable/
+[13]: https://copr.fedorainfracloud.org/coprs/rpmsoftwaremanagement/dnf5-unstable/
+[14]: https://copr.fedorainfracloud.org/coprs/jmracek/dnf5-alternatives/
+[15]: https://harelang.org/
+[16]: https://mirror.drewdevault.com/hare.pdf
+[17]: https://copr.fedorainfracloud.org/coprs/sentry/hare/
diff --git a/sources/tech/20220527 Plotting Data in R- Graphs.md b/sources/tech/20220527 Plotting Data in R- Graphs.md
new file mode 100644
index 0000000000..b7d1506fd2
--- /dev/null
+++ b/sources/tech/20220527 Plotting Data in R- Graphs.md
@@ -0,0 +1,311 @@
+[#]: subject: "Plotting Data in R: Graphs"
+[#]: via: "https://www.opensourceforu.com/2022/05/plotting-data-in-r-graphs/"
+[#]: author: "Shakthi Kannan https://www.opensourceforu.com/author/shakthi-kannan/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Plotting Data in R: Graphs
+======
+R has a number of packages for plotting graphs and data visualisation, such as graphics, lattice, and ggplot2. In this ninth article in the R series, we shall explore the various functions to plot data in R.
+
+![business-man-visulising-graphs][1]
+
+We will be using R version 4.1.2 installed on Parabola GNU/Linux-libre (x86-64) for the code snippets.
+
+```
+$ R --version
+
+R version 4.1.2 (2021-11-01) -- “Bird Hippie”
+Copyright (C) 2021 The R Foundation for Statistical Computing
+Platform: x86_64-pc-linux-gnu (64-bit)
+```
+
+R is free software and comes with absolutely no warranty. You are welcome to redistribute it under the terms of the GNU General Public License versions 2 or 3. For more information about these matters, see *https://www.gnu.org/licenses/.*
+
+### Plot
+
+Consider the all-India consumer price index (CPI – rural/urban) data set up to November 2021 available at *https://data.gov.in/catalog/all-india-consumer-price-index-ruralurban-0* for the different states in India. We can read the data from the downloaded file using the read.csv function, as shown below:
+
+```
+> cpi <- read.csv(file=”CPI.csv”, sep=”,”)
+
+> head(cpi)
+Sector Year Name Andhra.Pradesh Arunachal.Pradesh Assam Bihar
+1 Rural 2011 January 104 NA 104 NA
+2 Urban 2011 January 103 NA 103 NA
+3 Rural+Urban 2011 January 103 NA 104 NA
+4 Rural 2011 February 107 NA 105 NA
+5 Urban 2011 February 106 NA 106 NA
+6 Rural+Urban 2011 February 105 NA 105 NA
+Chattisgarh Delhi Goa Gujarat Haryana Himachal.Pradesh Jharkhand Karnataka
+1 105 NA 103 104 104 104 105 104
+2 104 NA 103 104 104 103 104 104
+3 104 NA 103 104 104 103 105 104
+4 107 NA 105 106 106 105 107 106
+5 106 NA 105 107 107 105 107 108
+6 105 NA 104 105 106 104 106 106
+...
+```
+
+Let us aggregate the CPI values per year for the state of Punjab, and plot a line chart using the plot function, as follows:
+
+```
+> punjab <- aggregate(x=cpi$Punjab, by=list(cpi$Year), FUN=sum)
+
+> head(punjab)
+Group.1 x
+1 2011 3881.76
+2 2012 4183.30
+3 2013 4368.40
+4 2014 4455.50
+5 2015 4584.30
+6 2016 4715.80
+
+> plot(punjab$Group.1, punjab$x, type=”l”, main=”Punjab Consumer Price Index upto November 2021”, xlab=”Year”, ylab=”Consumer Price Index”)
+```
+
+The following arguments are supported by the plot function:
+
+| Argument | Description |
+| :- | :- |
+| x | A vector for the x-axis |
+| y | The vector or list in the y-axis |
+| type | ‘p’ for points, ‘l’ for lines, ‘o’ for overplotted plots and lines, ‘s’ for stair steps, ‘h’ for histogram |
+| xlim | The x limits of the plot |
+| ylim | The y limits of the plot |
+| main | The title of the plot |
+| sub | The subtitle of the plot |
+| xlab | The label for the x-axis |
+| ylab | The label for the y-axis |
+| axes | Logical value to draw the axes |
+
+The line chart is shown in Figure 1.
+
+![Figure 1: Line chart][2]
+
+The autocorrelation plot can be used to obtain correlation statistics for time series analysis, and the same can be generated using the acf function in R. You can specify the following autocorrelation types: *correlation, covariance*, or partial. Figure 2 shows the ACF chart that represents the CPI values (‘x’ in the chart) for the state of Punjab.
+
+![Figure 2: ACF chart][3]
+
+The function*acf* accepts the following arguments:
+
+| Argument | Description |
+| :- | :- |
+| x | A univariate or multivariate object or vector or matrix |
+| lag.max | The maximum lag to calculate the acf |
+| type | Supported values ‘correlation’, ‘covariance’, ‘partial’ |
+| plot | The acf is plotted if this value is TRUE |
+| i | A set of time difference lags to retain |
+| j | A collection of names or numbers to retain |
+
+### Bar chart
+
+The barplot function is used to draw a bar chart. The chart for Punjab’s CPI can be generated as follows, and is shown in Figure 3:
+
+![Figure 3: Line chart of Punjab’s CPI][4]
+
+```
+> barplot(punjab$x, main=”Punjab Consumer Price Index”, sub=”Upto November 2021”, xlab=”Year”, ylab=”Consumer Price Index”, col=”navy”)
+```
+
+The function is quite flexible and supports the following arguments:
+
+| Argument | Description |
+| :- | :- |
+| height | A numeric vector or matrix that contains the values |
+| width | A numeric vector that specifies the widths of the bars |
+| space | The amount of space between bars |
+| beside | A logical value to specify if the bars should be stacked or next to each other |
+| density | A numerical value that specifies the density of the shading lines |
+| angle | The angle used to shade the lines |
+| border | The colour of the border |
+| main | The title of the chart |
+| sub | The sub-title of the chart |
+| xlab | The label for the x-axis |
+| ylab | The label for the y-axis |
+| xlim | The limits for the x-axis |
+| ylim | The limits for the y-axis |
+| axes | A value that specifies whether the axes should be drawn |
+
+You can get more details on the barplot function using the help command, as shown below:
+
+```
+> help(barplot)
+
+acf package:stats R Documentation
+
+Auto- and Cross- Covariance and -Correlation Function Estimation
+
+Description:
+
+The function ‘acf’ computes (and by default plots) estimates of
+the autocovariance or autocorrelation function. Function ‘pacf’
+is the function used for the partial autocorrelations. Function
+‘ccf’ computes the cross-correlation or cross-covariance of two
+univariate series.
+
+Usage:
+
+acf(x, lag.max = NULL,
+type = c(“correlation”, “covariance”, “partial”),
+plot = TRUE, na.action = na.fail, demean = TRUE, ...)
+
+pacf(x, lag.max, plot, na.action, ...)
+
+## Default S3 method:
+pacf(x, lag.max = NULL, plot = TRUE, na.action = na.fail,
+...)
+
+ccf(x, y, lag.max = NULL, type = c(“correlation”, “covariance”),
+plot = TRUE, na.action = na.fail, ...)
+
+## S3 method for class ‘acf’
+x[i, j]
+```
+
+### Pie chart
+
+Pie charts need to be used wisely, as they may not actually show relative differences among the slices. We can generate the Rural, Urban, and Rural+Urban values for the month of January 2021 for Gujarat as follows, using the subset function:
+
+```
+> jan2021 <- subset(cpi, Name==”January” & Year==”2021”)
+
+> jan2021$Gujarat
+[1] 153.9 151.2 149.1
+
+> names <- c(‘Rural’, ‘Urban’, ‘Rural+Urban’)
+```
+
+![Figure 4: Pie chart][5]
+
+The pie function can be used to generate the actual pie chart for the state of Gujarat, as shown below:
+
+```
+> pie(jan2021$Gujarat, names, main=”Gujarat CPI Rural and Urban Pie Chart”)
+```
+
+The following arguments are supported by the pie function:
+
+| Argument | Description |
+| :- | :- |
+| x | Positive numeric values to be plotted |
+| label | A vector of character strings for the labels |
+| radius | The size of the pie |
+| clockwise | A value to indicate if the pie should be drawn clockwise or counter-clockwise |
+| density | A value for the density of shading lines per inch |
+| angle | The angle that specifies the slope of the shading lines in degrees |
+| col | A numeric vector of colours to be used |
+| lty | The line type for each slice |
+| main | The title of the chart |
+
+### Boxplot
+
+A boxplot shows the interquartile range between the 25th and 75th percentile using two ‘whiskers’ for the distribution of a variable. The values outside the range are plotted separately. The boxplot functions take the following arguments:
+
+| Argument | Description |
+| :- | :- |
+| data | A data frame or list that is defined |
+| x | A vector that contains the values to plot |
+| width | The width of the boxes to be plotted |
+| outline | A logical value indicating whether to draw the outliers |
+| names | The names of the labels for each box plot |
+| border | The colour to use for the outline of each box plot |
+| range | A maximum numerical amount the whiskers should extend from the boxes |
+| plot | The boxes are plotted if this value is TRUE |
+| horizontal | A logical value to indicate if the boxes should be drawn horizontally |
+
+The boxplot for a few states from the CPI data is shown below:
+
+```
+> names <- c (‘Andaman and Nicobar’, ‘Lakshadweep’, ‘Delhi’, ‘Goa’, ‘Gujarat’, ‘Bihar’)
+> boxplot(cpi$Andaman.and.Nicobar, cpi$Lakshadweep, cpi$Delhi, cpi$Goa, cpi$Gujarat, cpi$Bihar, names=names)
+```
+
+![Figure 5: Box plot][6]
+
+![Figure 6: Q-Q plot][7]
+
+### Q-Q plot
+
+The Quantile-Quantile (Q-Q) plot is a way to compare two data sets. You can also compare a data set with a theoretical distribution. The qqnorm function is a generic function, and we can view the Q-Q plot for the Punjab CPI data as shown below:
+
+```
+> qqnorm(punjab$x)
+```
+
+![Figure 7: Volcano][8]
+
+The*qqline* function adds a theoretical line to a normal, quantile-quantile plot. The following arguments are accepted by these functions:
+
+| Argument | Description |
+| :- | :- |
+| x | The first data sample |
+| y | The second data sample |
+| datax | A logical value indicating if values should be on the x-axis |
+| probs | A numerical vector representing probabilities |
+| xlab | The label for x-axis |
+| ylab | The label for y-axis |
+| qtype | The type of quantile computation |
+
+### Contour plot
+
+The contour function is useful for plotting three-dimensional data. You can generate a new contour plot, or add contour lines to an existing chart. These are commonly used along with image charts. The volcano data set in R provides information on the Maunga Whau (Mt Eden) volcanic field, and the same can be visualised with the contour function as follows:
+
+```
+> contour(volcano)
+```
+
+The contour function accepts the following arguments:
+
+| Argument | Description |
+| :- | :- |
+| x,y | The location of the grid for z |
+| z | A numeric vector to be plotted |
+| nlevels | The number of contour levels |
+| labels | A vector of labels for the contour lines |
+| xlim | The x limits for the plot |
+| ylim | The y limits for the plot |
+| zlim | The z limits for the plot |
+| axes | A value to indicate to print the axes |
+| col | The colour for the contour lines |
+| lty | The line type to draw |
+| lwd | Width for the lines |
+| vfont | The font for the labels |
+
+The areas between the contour lines can be filled using a solid colour to indicate the levels, as shown below:
+
+```
+> filled.contour(volcano, asp = 1)
+```
+
+The same volcano data set with the filled.contour colours is illustrated in Figure 8.
+
+![Figure 8: Filled volcano][9]
+
+You are encouraged to explore the other functions and charts in the graphics package in R.
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/05/plotting-data-in-r-graphs/
+
+作者:[Shakthi Kannan][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/shakthi-kannan/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/04/business-man-visulising-graphs.jpg
+[2]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-1-Line-chart.jpg
+[3]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-2-ACF-chart.jpg
+[4]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-3-Line-chart-of-Punjabs-CPI.jpg
+[5]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-4-Pie-chart.jpg
+[6]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-5-ox-plot.jpg
+[7]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-6-Q-Q-plot.jpg
+[8]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-7-Volcano.jpg
+[9]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-8-Filled-volcano.jpg
diff --git a/sources/tech/20220528 How I automate plant care using Raspberry Pi and open source tools.md b/sources/tech/20220528 How I automate plant care using Raspberry Pi and open source tools.md
new file mode 100644
index 0000000000..d11da87617
--- /dev/null
+++ b/sources/tech/20220528 How I automate plant care using Raspberry Pi and open source tools.md
@@ -0,0 +1,90 @@
+[#]: subject: "How I automate plant care using Raspberry Pi and open source tools"
+[#]: via: "https://opensource.com/article/22/5/plant-care"
+[#]: author: "Kevin Sonney https://opensource.com/users/ksonney"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+How I automate plant care using Raspberry Pi and open source tools
+======
+I keep tabs on all my houseplants by using Home Assistant and a Raspberry Pi.
+
+![Digital images of a computer desktop][1]
+
+Image by: Opensource.com
+
+> Automation is a hot topic right now. In my day job as an SRE part of my remit is to automate as many repeating tasks as possible. But how many of us do that in our daily, not-work, lives? This year, I am focused on automating away the toil so that we can focus on the things that are important.
+
+Home Assistant has so many features and integrations, it can be overwhelming at times. And as I’ve mentioned in previous articles, I use it for many things, including monitoring plants.
+
+```
+$ bluetoothctl scan le
+Discovery started
+[NEW] Device
+[NEW] Device
+[NEW] Device
+[NEW] Device
+[NEW] Device
+[NEW] Device
+[NEW] Device
+```
+
+There are numerous little devices you can buy to keep an eye on your plants. The Xiomi MiaFlora devices are small, inexpensive, and have a native integration with Home Assistant. Which is great—as long as the plant and Home Assistant are in the same room.
+
+We've all been in places where one spot there is a great signal, and moving 1mm in any direction makes it a dead zone—and it is even more frustrating when you are indoors. Most Bluetooth LE (Low Energy) devices have a range of about 100m, but that's using line of sight, and does not include interference from things like walls, doors, windows, or major appliances (seriously, a refrigerator is a great big signal blocker). Remote Home Assistant is perfect for this. You can set up a Raspberry Pi with Home Assistant Operating System (HASSOS) in the room with the plants, and then use the main Home Assistant as a central control panel. I tried this on a Raspberry Pi Zero W, and while the Pi Zero W can run Home Assistant, it doesn't do it very well. You probably want a Pi 3 or Pi 4 when doing this.
+
+Start with a fresh HASSOS installation, and make sure everything is up-to-date, then install HACS and Remote Home Assistant like I did in my article [Automate and manage multiple devices with Remote Home Assistant][2]. Now for the tricky bits. Install the `SSH and Web Terminal` Add-on, and turn off `Protection Mode` so that you can get a session on the base OS and not in a container. Start the add-on, and it appears on the sidebar. Click on it to load the terminal.
+
+You are now in a root session terminal on the Pi. Insert all the warnings here about being careful and how you can mess up the system (you know the ones). Inside the terminal, run `bluetoothctl scan le` to find the plant sensor, often named "Flower Care" like mine.
+
+![Image of finding plant sensors][3]
+
+Image by: (Kevin Sonney, CC BY-SA 40)
+
+Make a note of the address for the plant sensor. If you have more than one, it could be confusing to figure out which is which, and can take some trial and error. Once you've identified the plant sensor, it is time to add it to Home Assistant. This requires editing the `configuration.yml` file directly, either with the file editor add on, or in the terminal you just created. In my case, I added both a sensor and a plant block to the configuration.
+
+```
+sensor:
+ - platform: miflora
+ scan_interval: 60
+ mac: "C4:7C:8D:6C:DE:FE"
+ name: "pitcher_plant"
+ plant:
+ pitcher_plant:
+ sensors:
+ moisture: sensor.pitcher_plant_moisture
+ battery: sensor.pitcher_plant_battery
+ temperature: sensor.pitcher_plant_temperature
+ conductivity: sensor.pitcher_plant_conductivity
+ brightness: sensor.pitcher_plant_brightness
+```
+
+Save the file, and restart Home Assistant, and you should see a plant card on the Overview tab.
+
+![Image showing plant needs watering][4]
+
+Image by: (Kevin Sonney, CC BY-SA 40)
+
+Once that's done, go back to the main Home Assistant, and add the newly available `plant` component to the list of things to import from the remote. You can then add the component to dashboards on the main HASS installation, and create automations and notifications based on the plant status.
+
+I use this to monitor a pitcher plant, and I have more sensors on the way so I can keep tabs on all my houseplants—all of which live outside the Bluetooth range of my central Home Assistant Pi.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/plant-care
+
+作者:[Kevin Sonney][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/ksonney
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/computer_desk_home_laptop_browser.png
+[2]: https://opensource.com/article/22/5/remote-home-assistant
+[3]: https://opensource.com/sites/default/files/2022-05/Day_06-2.png
+[4]: https://opensource.com/sites/default/files/2022-05/Day_06-3.png
diff --git a/sources/tech/20220528 Portmaster- A GlassWire Alternative for Linux to Monitor & Secure Network Connections.md b/sources/tech/20220528 Portmaster- A GlassWire Alternative for Linux to Monitor & Secure Network Connections.md
new file mode 100644
index 0000000000..a90aa18bbf
--- /dev/null
+++ b/sources/tech/20220528 Portmaster- A GlassWire Alternative for Linux to Monitor & Secure Network Connections.md
@@ -0,0 +1,114 @@
+[#]: subject: "Portmaster: A GlassWire Alternative for Linux to Monitor & Secure Network Connections"
+[#]: via: "https://itsfoss.com/portmaster/"
+[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Portmaster: A GlassWire Alternative for Linux to Monitor & Secure Network Connections
+======
+GlassWire is a popular network monitoring app (with no support for Linux) that helps you track data usage, unusual network activity, malicious access to the network, and more.
+
+I wish it supports Linux, but for now, it only works on Windows and Android.
+
+For Linux, we do not have a full-fledged GUI-based application that helps us [monitor the network in Linux][1].
+
+However, I recently stumbled upon “Portmaster”, an open-source network monitor available for Linux and other platforms. Interestingly, it offers some of the same abilities as seen with Glasswire, with some extras.
+
+Note that it is not exactly a replacement for “GlassWire” but a potential alternative in the making.
+
+Here, I shall share more details about it.
+
+Note
+
+> Safing Portmaster (or simply ‘Portmaster’) is in its early stages of development (Alpha). We feature it here, considering it aims to offer something new to Linux users.
+>
+> While it worked fine in our quick tests, you can expect issues with it.
+
+### Portmaster: Open-Source App to Monitor Computer’s Network Connection
+
+![portmaster][2]
+
+Portmaster by [Safing][3] is an open-source GUI program available for Windows and Linux.
+
+You can track every connection being made through the applications and services used in your Linux distribution.
+
+It is an entirely free and open-source software that aims to make money using its paid VPN service (**SPN**), which uses onion-encryption (inspired by Tor) to route your connections from through destinations keeping your identity private.
+
+The paid VPN is a part of the tool, but it is also in the alpha testing stage.
+
+Even if you download things from your terminal, it tracks them and provides you the detailed information regarding the domain, IP, encryption status, protocol, and the option to block future connections if needed.
+
+![portmaster network monitor][4]
+
+You also get several abilities to manage the network connections, add filter lists, rules, and some other advanced options.
+
+Portmaster gives you an overview of all the connections per application/service and also lets you view the data associated with an individual application.
+
+![portmaster connection details][5]
+
+It supports numerous useful features that include real-time network monitoring.
+
+### Features of Portmaster
+
+![portmaster firewall network][6]
+
+Portmaster is not just a simple network connection monitor, it also gives you great control to enforce a secure DNS, and filter your network connections for best security.
+
+Some key features include:
+
+* Network monitor overview to sum up connections from the entire system.
+* Provide debug information for every app connection history.
+* Ability to block a domain from the connection list.
+* Retain connection history offline.
+* Manage P2P connections.
+* Ability to block incoming connections.
+* Option to add outgoing rules to manage the network connections easily.
+* Add a filter list to easily block connections that you do not want. For instance, preventing NSFW domains to load on your network.
+* Choose from different secure DNS servers (Cloudflare as the preferred default)
+* Stats about network connections, destinations connected, countries involved, allowed, and blocked connections.
+
+In addition to the mentioned features, you will find fine-grained controls to get prompts for network connections (block/allow), customize your privacy filter, choose a different DNS, inspect DNS requests for the connections made, and so much more.
+
+### Install Portmaster on Linux
+
+Portmaster is officially supported for Ubuntu and Fedora with .deb and .rpm packages available.
+
+You can download the package from its [official website][7] to try on a supported Linux distribution.
+
+The [installation documentation][8] gives you more details about the steps for Arch Linux and other Linux distributions.
+
+You can also explore more about it in its [GitHub page][9].
+
+### Wrapping Up
+
+Portmaster is certainly an interesting addition to the Linux and open-source world. It could become the one tool that everyone uses to monitor, and secure networks while enhancing their online privacy.
+
+The feature set is promising, but whether it can replace proprietary network monitors like “GlassWire” is another story to be unraveled in the future.
+
+*What do you think about Portmaster? Please let me know your thoughts in the comments below.*
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/portmaster/
+
+作者:[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://itsfoss.com/author/ankush/
+[b]: https://github.com/lkxed
+[1]: https://itsfoss.com/network-speed-monitor-linux/
+[2]: https://itsfoss.com/wp-content/uploads/2022/05/portmaster.jpg
+[3]: https://safing.io/
+[4]: https://itsfoss.com/wp-content/uploads/2022/05/portmaster-network-monitor.jpg
+[5]: https://itsfoss.com/wp-content/uploads/2022/05/portmaster-connection-details.jpg
+[6]: https://itsfoss.com/wp-content/uploads/2022/05/portmaster-firewall-network.jpg
+[7]: https://safing.io/portmaster/#download
+[8]: https://docs.safing.io/portmaster/install/linux
+[9]: https://github.com/safing/portmaster/
diff --git a/sources/tech/20220528 Top 10 GNOME Themes for Your Ubuntu Desktop.md b/sources/tech/20220528 Top 10 GNOME Themes for Your Ubuntu Desktop.md
new file mode 100644
index 0000000000..580bf5b306
--- /dev/null
+++ b/sources/tech/20220528 Top 10 GNOME Themes for Your Ubuntu Desktop.md
@@ -0,0 +1,205 @@
+[#]: subject: "Top 10 GNOME Themes for Your Ubuntu Desktop"
+[#]: via: "https://www.debugpoint.com/2022/05/gnome-themes-2022/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Top 10 GNOME Themes for Your Ubuntu Desktop
+======
+You can use this list of 10 GNOME themes to transform your Ubuntu distro look in 2022.
+
+You can use GTK themes to give your GNOME or Ubuntu a sassy look without much effort. Themes are straightforward to download/install, and the result is a stunning desktop.
+
+There are hundreds of GTK themes available. It’s challenging to pick the best ten among them. To help you choose some of the best ones, we give you the ten best GTK based themes on this page.
+
+### Points to Note
+
+Before you apply these themes to your latest GNOME desktop and Ubuntu, a few important points.
+
+* All the below GNOME themes uses the GNOME Tweak tool for configuration. Also, you should install the User Themes GNOME extensions to apply these themes.
+
+* Moreover, if you apply these themes, the GNOME’s default light and dark styles in settings are automatically turned off. If you are using Ubuntu 22.04 and above, the accent colour is also turned off to honour custom themes. Because accent colours and the light/dark style combinations set the respective Yaru theme variant.
+
+* Make sure to close the Settings application in Ubuntu while applying the themes because the settings window gives default Yaru themes higher priority via the Appearance tab.
+
+* Finally, change the Shell and Legacy Application themes to custom themes (see the below example image).
+
+![Changing GNOME Theme in Tweaks Tool][1]
+
+### Best GNOME Themes For Your Ubuntu Desktop in 2022
+
+### 1. Arc
+
+The first GNOME theme we want to feature in this list is the Arc theme. It is the most popular GNOME theme and is suitable for giving the best look with its looks. Arc brings a simple 2D interface with a basic flat look across the desktop. The Flat look is designed so lovely that it gives you a perfect modern desktop look without gradient or glossy effects. It also provides a nice touch to the sidebars in Nautilus and other sidebar-based apps with its Dark version.
+
+Arc theme comes in light, dark and darker versions. Installing the Arc theme is easy in Ubuntu because it is available in the official repo. Fire up a terminal window and run the following command to install.
+
+```
+sudo apt install arc-theme
+```
+
+If you want to install via source, you can grab the files on [GitHub][2] and follow the compilation instructions.
+
+After the installation, set the theme using the Tweaks tool and pair it using any Yaru-blue icons in Ubuntu for the best look.
+
+![Arc Darker Theme in Ubuntu GNOME][3]
+
+#### 2. Layan
+
+The second theme we highlight here is Layan. Based on material design (materia-gtk), Layan gives you a flat layout for the entire GNOME Shell. In addition, it comes with a few more rounded corners in the windows and larger shadows. Moreover, it brings light and dark variants for every taste bud.
+
+Perhaps the unique feature of this theme is the sidebar in Nautilus (see below image). It’s a sleek vertical bar with a little mountain icon at the top. I must say, it enhances the entire desktop look with this touch.
+
+We recommend that you pair it with Yaru-prusiangreen icon and a nice gradient wallpaper for best results.
+
+For installation, [download the theme from GitHub][4]and extract it. Then run the install.sh.
+
+It is also available as a snap if you prefer.
+
+```
+sudo snap install layan-themes
+```
+
+![Layan GNOME Theme][5]
+
+#### 3. Orchis
+
+If you ask me to choose one theme for all possible renovation of your desktop, then I would suggest Orchis. The Orchis theme combines Google’s material design and rounded corners with a sober colour palette. Furthermore, Orchis is bound to make an impression with its visual tone, which brings eight colour options, with each having dark, compact and light variants.
+
+![Orchis colour options][6]
+
+For an instant desktop makeover, you can easily pair Orchis with any icon themes and wallpaper.
+
+Installation is super easy for Orchis. [Download the package from Github][7]. Then run the below command from the installation directory for all variants and colours.
+
+```
+./install.sh -t all
+```
+
+![Orchis GNOME Theme][8]
+
+#### 4. Numix
+
+Numix theme for GNOME desktops is similar to the Arc theme featured in this list. But it’s a little different in terms of its colour tone. The primary highlight colour is complemented by its flat design. It comes with light and dark variants. However, you can only download and install the light version for free.
+
+You can easily install it using the following command in Ubuntu.
+
+```
+sudo apt install numix-gtk-theme
+```
+
+If you prefer the dark variant, you can get it via the [developer’s home page][9] instructions.
+
+![Numix Theme | image credit: Author of Numix][10]
+
+#### 5. Adapta
+
+[Adapta][11] is one of the most popular GTK themes, which inspired many child themes. The theme creators often base their theme on Adapta and modify it further. Hence you can imagine its flexibility and features. In addition, Adapta is based on Google’s Material Design principle.
+
+Moreover, if you like the Android user interface, you will enjoy the Adapta theme on your GNOME desktop because it brings ample padding, well-placed shadows and layers, better contrast, etc.
+
+Before installing, you should know that the installation size is slightly larger for a theme (~200MB+).
+
+Finally, you can easily install the Adapta theme using the command below.
+
+```
+sudo apt install adapta-gtk-theme
+```
+
+![Adapta Theme – follows Android Style][12]
+
+#### 6. Cloudy
+
+Cloudy provides a comfortable and smooth look. It is based on the Arc theme featured in this list. In addition, it follows the material design approach that offers a unique feel of “cloudy sky”. Moreover, the Cloudy theme offers grey and blue flavour with light/dark variants.
+
+If you love the colour sky blue and want a material design theme, then choose this one.
+
+Download this theme from the gnome-look website [here][13] and copy the extracted files in your ~/.themes directory to install.
+
+![Cloudy GNOME Theme][14]
+
+#### 7. Nord
+
+The Nord theme is one of the famous GTK themes you can install on the GNOME desktop. It tenders a cool and stylish piece with several colour options. In addition, all the colour options come with light and dark variants.
+
+The colour options are blue, green and grey. If you want this for your desktop, follow the below instructions to install.
+
+[Download the files][15] from gnome-look and place them in the ~/.themes folder after extract.
+
+![Nord Theme | Image Credit: Ant Author][16]
+
+#### 8. Prof-GNOME
+
+The eighth theme in this list is the Prof-GNOME theme. It is a perfect theme that calms your mind with its unique way of resting your eyes. In my opinion, if you want to renovate your GNOME desktop but still want it to look like a professional desktop with a legacy macOS look, then choose Prof-GNOME.
+
+Moreover, it is not a fancy theme but rather a legacy theme with a modern approach to design, keeping the older macOS look alive.
+
+To try this theme, download the files from [GitHub][17] and place them to ~/.themes after extracting.
+
+However, a word of caution is that it’s not updated for some time.
+
+![Prof-GNOME Theme][18]
+
+#### 9. Whitesur
+
+A list of GNOME themes is incomplete without a theme which makes your desktop look like macOS. Hence, as its name suggests, we present the 9th theme in this list – the popular [Whitesur theme][19]. It’s a GTK theme that helps you make your desktop look like macOS Big Sur.
+
+Furthermore, the Whitesur theme is compatible with non-GNOME based desktop Xfce, Cinnamon, etc.
+
+Pair it with the Plack Dock and Whitesur Icon theme for a complete macOS makeover.
+
+[Download][20] the theme from GitHub and place the files in the ~/.themes after extracting.
+
+![Whitesur theme for GNOME][21]
+
+#### 10. Ant
+
+The final theme in this list is Ant. The Ant is an exciting theme which is a little bold in its approach. It brings the Flat look and feels but with a twist of “Dracula” and “Bloody” flavour.
+
+I must say a perfect Halloween theme, and you can download it from [here][22].
+
+![Ant Theme for GNOME | Image Credit: Author of Ant theme][23]
+
+### Closing Notes
+
+I hope this list of 10 best GNOME themes of 2022 encourages your to renovate the rather mundane Ubuntu distro look or any GNOME desktop setup. In the comment box below, let me know which one is your favourite? Also, add your favourite one, which you think should be on the list.
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/05/gnome-themes-2022/
+
+作者:[Arindam][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.debugpoint.com/author/admin1/
+[b]: https://github.com/lkxed
+[1]: https://www.debugpoint.com/wp-content/uploads/2022/05/Changing-GNOME-Theme-in-Tweaks-Tool.jpg
+[2]: https://github.com/jnsh/arc-theme
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/05/Arc-Darker-Theme-in-Ubuntu-GNOME-1.jpg
+[4]: https://github.com/vinceliuice/Layan-gtk-theme/archive/refs/heads/master.zip
+[5]: https://www.debugpoint.com/wp-content/uploads/2022/05/Layan-GNOME-Theme.jpg
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/05/Orchis-colour-options.jpg
+[7]: https://github.com/vinceliuice/Orchis-theme/archive/refs/heads/master.zip
+[8]: https://www.debugpoint.com/wp-content/uploads/2022/05/Orchis-GNOME-Theme.jpg
+[9]: https://satya164.deviantart.com/art/Numix-GTK3-theme-360223962
+[10]: https://www.debugpoint.com/wp-content/uploads/2022/05/Numix-Theme.jpg
+[11]: https://github.com/adapta-project/adapta-gtk-theme
+[12]: https://www.debugpoint.com/wp-content/uploads/2022/05/Adapta-Theme-follows-Android-Style.jpg
+[13]: https://www.gnome-look.org/p/1242416/
+[14]: https://www.debugpoint.com/wp-content/uploads/2022/05/Cloudy-GNOME-Theme.jpg
+[15]: https://www.gnome-look.org/p/1267246/
+[16]: https://www.debugpoint.com/wp-content/uploads/2022/05/Nord-Theme.jpg
+[17]: https://github.com/paullinuxthemer/Prof-Gnome/archive/refs/heads/master.zip
+[18]: https://www.debugpoint.com/wp-content/uploads/2022/05/Prof-GNOME-Theme.jpg
+[19]: https://github.com/vinceliuice/WhiteSur-gtk-theme
+[20]: https://github.com/vinceliuice/WhiteSur-gtk-theme
+[21]: https://www.debugpoint.com/wp-content/uploads/2022/05/Whitesur-theme-for-GNOME.jpg
+[22]: https://www.gnome-look.org/p/1099856/#files
+[23]: https://www.debugpoint.com/wp-content/uploads/2022/05/Ant-Theme-for-GNOME.jpg
diff --git a/sources/tech/20220530 11 Themes to Make Xfce Look Modern and Beautiful.md b/sources/tech/20220530 11 Themes to Make Xfce Look Modern and Beautiful.md
new file mode 100644
index 0000000000..dfc96ae23f
--- /dev/null
+++ b/sources/tech/20220530 11 Themes to Make Xfce Look Modern and Beautiful.md
@@ -0,0 +1,200 @@
+[#]: subject: "11 Themes to Make Xfce Look Modern and Beautiful"
+[#]: via: "https://itsfoss.com/best-xfce-themes/"
+[#]: author: "Community https://itsfoss.com/author/itsfoss/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+11 Themes to Make Xfce Look Modern and Beautiful
+======
+
+[Xfce][1] is known for being one of the most lightweight desktop environments yet flexible enough to carry out heavy loads easily.
+
+One major issue with Xfce is that its default interface may look old and outdated to many users. This could be offputting for some new users who prefer [beautiful-looking Linux distributions][2].
+
+![xfce desktop screenshot][3]
+
+But Xfce does not bound you to use the default theming and allows you to theme your Desktop as per your taste.
+
+Where to find some good themes for Xfce? There are numerous themes listed on [Xfce Look website][4]. You can surely browse through the huge collection.
+
+But to save you some time, I am going to list some of the best Xfce themes that should attract a variety of users.
+
+### Best Xfce themes
+
+I have tried to list themes that have been updated not too long ago in the past.
+
+Some or all of these themes could also be available for other desktop environments such as GNOME and KDE. However, I cannot guarantee that. You’ll have to confirm it on your own.
+
+A quick word about [installing themes in Xfce][5]. There is an appearance tool in the system menu. You can just drag and drop the downloaded theme file in zip format and it should handle the rest.
+
+![appearance xfce][6]
+
+Alternatively, you can extract the contents of the archived theme file in the .themes folder in your home directory.
+
+With that aside, it’s time to see the themes in action.
+
+#### 1. BaZik
+
+![bazik xfce theme][7]
+
+This is one of my favorite themes, especially for Xfce Desktop as it can revamp the whole experience of using it. Rather than just giving us Dark and Light variants of theme, you get 6 color accents to match your Desktop taste.
+
+BaZik is one of those modern flat themes based on Materia design which allows users to completely change how your default Xfce Desktop visually appears. So if you are looking for something modern which is completely different, BaZik will surely please you.
+
+[Get BaZik][8]
+
+#### 2. Flat Remix GTK
+
+![flat remix xfce theme][9]
+
+This is one of the rare themes which supports GTK 2, 3, and even 4! A flat remix is one of the most pleasant-looking flat themes which are available for Xfce Desktop. It comes in 4 variants: Normal, Dark, Darker, and The Darkest.
+
+You also get 13 color variants to match your taste. So if you are looking for one of the best falt themes available, Flat Remix GTK is all you need.
+
+[Get Flat Remix GTK][10]
+
+#### 3. Sweet
+
+![sweet theme xfce][11]
+
+As its name suggests, its sweet combination of futuristic looks and premium finish with on-point color gradients. Sweets have been used by numerous users and are often suggested for those who are looking for something different from the traditional look.
+
+Sweet is available in 5 variants: Dark, Mars, Sweet, Ambar Blue, and Ambar. It is GTK 3-based theme and blends well with Xfce Desktop. Sweet can be a good option for those who are tired of traditional options and want to have a completely different look.
+
+[Get Sweet][12]
+
+#### 4. Skeuos
+
+![skeuos xfce theme][13]
+
+This is yet another theme by the creator of Flat Remix GTK which I have already discussed above. While Flat Remix GTK was more inclined towards the Dark variants, Skeuos is an overall package as you get dark and white variants which are equally good!
+
+Skeuos also supports GTK 2,3 and 4 so you can have great synchronization with all other apps. Being simple yet elegant, Skeuos deserves a try!
+
+[Get Skeuos][14]
+
+#### 5. Pandora Arc
+
+![pandora arc xfce theme][15]
+
+Pandora Arc is a completely different theme from the given list as it brings wives of hacker-ish or cyberpunk. You will get dark colors with cyan and green fonts, and a purple accent bundled with green buttons.
+
+So if you are looking for something which brings hacker-ish vibes to your Xfce Desktop, Pandora Arc is just made for you.
+
+[Get Pandora Arc][16]
+
+#### 6. Drakula
+
+![drakula theme xfce][17]
+
+Being the official theme for [Awesome][18], Drakula is known for getting users one of the best dark theme experiences. A Dark theme with a purple and pink accent will surely bring a perfect experience to your Xfce Desktop.
+
+Sure, there are many options for dark themes but personally, Drakula is what you need. Creator has precisely selected the color pallet so you can have a great experience without many tweaks.
+
+[Get Drakula][19]
+
+#### 7. Pop Xfwm
+
+![pop theme xfce][20]
+
+As its name suggests, this theme will bring a similar look to what System 76 offers in their Pop!_OS. As Pop!_OS is one of the most popular Linux distros, many users are fans of its visuals, and using Pop Xfwm, you can achieve it easily.
+
+So if you are someone who has just switched from Pop!_OS or are impressed by the visuals of it and you want a similar experience, Pop Xfwm is just for you.
+
+[Get Pop Xfwm][21]
+
+#### 8. Windows 10 (no, seriously)
+
+![windows 10 xfce theme][22]
+
+You can easily guess what this theme will offer. The reason why this theme made it to the best Xfce themes list is attention to detail. This is considerably the best Windows 10 theme for Linux Desktop which also includes Xfce.
+
+It requires GTK 3.6 and above for better integration as has some dependencies such as Murrine and Pixmap theme engines but once you are done with the setup, you can enjoy the Windows 10 vibes on your Linux system.
+
+[Get Windows 10][23]
+
+#### 9. WhiteSur (still serious)
+
+![white sur xfce theme][24]
+
+There is the majority of people who loves the visuals of macOS including me and WhiteSur is considerably the best option to bring macOS to feel to your Xfce Desktop.
+
+You do have add-on options for this theme such as Firefox theming to better sync. This is the best option for users who are willing to add a premium feel to their Xfce Desktop as WhiteSur mimics macOS theming.
+
+[Get WhiteSur][25]
+
+#### 10. Axiom
+
+![axiom xfce theme][26]
+
+Axiom is an Arc-Dark-based theme that is created to get you a more spacious Desktop and improve your workflow. Being more consistent than its base, you can surely rely on Axiom.
+
+It’s inclined more towards bringing simplicity to your Desktop than getting you futuristic looks and it is amazing on what it does. So if you are interested in improving your workflow, Axiom is a must-try.
+
+[Get Axiom][27]
+
+#### 11. Orchis
+
+![orchis xfce theme][28]
+
+This is yet another flat-style GTK theme for your Xfce Desktop. I included Orchis to this list as it is one of the most popular themes in Linux and users are having mostly positive feedback.
+
+Orchis will not surprise you with its elegant looks but will bring simplicity and minimal vibes to your setup as it looks so clean out of the box.
+
+[Get Orchis][29]
+
+### Conclusion
+
+As you can see, I have tried to include a wide variety of themes from dark themes for hackers to flat, light themes for minimalists.
+
+You can combine these themes with a set of [beautiful icons for your Linux desktop][30] and make it look even better. Read this post for more [Xfce customization tips][31].
+
+There are surely more themes out there. We don’t have the functionality of sharing images in the comments otherwise I would have loved to see a screenshot of your Xfce desktop. Share the name of your favorite Xfce them nonetheless.
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/best-xfce-themes/
+
+作者:[Community][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/itsfoss/
+[b]: https://github.com/lkxed
+[1]: https://www.xfce.org/
+[2]: https://itsfoss.com/beautiful-linux-distributions/
+[3]: https://itsfoss.com/wp-content/uploads/2022/05/xfce-desktop-screenshot-800x431.webp
+[4]: https://www.xfce-look.org/browse/
+[5]: https://itsfoss.com/install-themes-xfce-xubuntu/
+[6]: https://itsfoss.com/wp-content/uploads/2021/10/appearance-xfce.png
+[7]: https://itsfoss.com/wp-content/uploads/2022/05/BaZik-xfce-theme-800x450.jpg
+[8]: https://www.xfce-look.org/p/1304241/
+[9]: https://itsfoss.com/wp-content/uploads/2022/05/flat-remix-xfce-theme-800x413.webp
+[10]: https://www.xfce-look.org/p/1214931/
+[11]: https://itsfoss.com/wp-content/uploads/2022/05/sweet-theme-xfce-800x450.webp
+[12]: https://www.xfce-look.org/p/1253385
+[13]: https://itsfoss.com/wp-content/uploads/2022/05/Skeuos-xfce-theme-800x481.jpg
+[14]: https://www.xfce-look.org/p/1441725
+[15]: https://itsfoss.com/wp-content/uploads/2022/05/pandora-arc-xfce-theme-800x447.png
+[16]: https://www.xfce-look.org/p/1352568/
+[17]: https://itsfoss.com/wp-content/uploads/2022/05/drakula-theme-xfce-800x450.png
+[18]: https://awesomewm.org/
+[19]: https://www.xfce-look.org/p/1687249
+[20]: https://itsfoss.com/wp-content/uploads/2022/05/pop-theme-xfce-800x500.png
+[21]: https://www.xfce-look.org/p/1299758/
+[22]: https://itsfoss.com/wp-content/uploads/2022/05/windows-10-xfce-theme-800x449.jpg
+[23]: https://github.com/B00merang-Project/Windows-10#windows-10-theme-for-linux
+[24]: https://itsfoss.com/wp-content/uploads/2022/05/white-sur-xfce-theme-800x450.webp
+[25]: https://www.xfce-look.org/p/1403328/
+[26]: https://itsfoss.com/wp-content/uploads/2022/05/axiom-xfce-theme-800x500.jpg
+[27]: https://www.xfce-look.org/p/1154707
+[28]: https://itsfoss.com/wp-content/uploads/2022/05/orchis-xfce-theme-800x450.webp
+[29]: https://www.xfce-look.org/p/1357889/
+[30]: https://itsfoss.com/best-icon-themes-ubuntu-16-04/
+[31]: https://itsfoss.com/customize-xfce/
diff --git a/sources/tech/20220530 Dynamically linking libraries while compiling code.md b/sources/tech/20220530 Dynamically linking libraries while compiling code.md
new file mode 100644
index 0000000000..b4192ccfa2
--- /dev/null
+++ b/sources/tech/20220530 Dynamically linking libraries while compiling code.md
@@ -0,0 +1,137 @@
+[#]: subject: "Dynamically linking libraries while compiling code"
+[#]: via: "https://opensource.com/article/22/5/compile-code-ldlibrarypath"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lkxed"
+[#]: translator: "geekpi"
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Dynamically linking libraries while compiling code
+======
+Compiling software gives you a lot of flexibility in how you run your system. The LD_LIBRARY_PATH variable, along with the -L and -l GCC options, are components of that flexibility.
+
+![women programming][1]
+
+Image by: WOCinTech Chat. Modified by Opensource.com. CC BY-SA 4.0
+
+Compiling software is something that developers do a lot, and in open source some users even choose to do it themselves. Linux podcaster Dann Washko calls source code the "universal package format" because it contains all the components necessary to make an application run on any platform. Of course, not all source code is written for all systems, so it's only "universal" within the subset of targeted systems, but the point is that source code is extremely flexible. With open source, you can decide how code is compiled and run.
+
+When you're compiling code, you're usually dealing with multiple source files. Developers tend to keep different classes or modules in separate files so that they can be maintained separately, and possibly even used by different projects. But when you're compiling these files, many of them get compiled into a single executable.
+
+This is usually done by creating shared libraries, and then dynamically linking back to them from the executable. This keeps the executable small by keeping modular functions external, and ensures that libraries can be updated independently of the applications that use them.
+
+### Locating a shared object during compilation
+
+When you're [compiling with GCC][2], you usually need a library to be installed on your workstation for GCC to be able to locate it. By default, GCC assumes that libraries are in a system library path, such as `/lib64` and `/usr/lib64`. However, if you're linking to a library of your own that's not yet installed, or if you need to link to a library that's not installed in a standard location, then you have to help GCC find the files.
+
+There are two options significant for finding libraries in GCC:
+
+* -L (capital L) adds an additional library path to GCC's search locations.
+* -l (lowercase L) sets the name of the library you want to link against.
+
+For example, suppose you've written a library called `libexample.so`, and you want to use it when compiling your application `demo.c`. First, create an object file from `demo.c` :
+
+```
+$ gcc -I ./include -c src/demo.c
+```
+
+The `-I` option adds a directory to GCC's search path for header files. In this example, I assume that custom header files are in a local directory called `include`. The `-c` option prevents GCC from running a linker, because this task is only to create an object file. And that's exactly what happens:
+
+```
+$ ls
+demo.o include/ lib/ src/
+```
+
+Now you can use the `-L` option to set a path for your library, and compile:
+
+```
+$ gcc -L`pwd`/lib -o myDemo demo.o -lexample
+```
+
+Notice that the `-L` option comes *before* the `-l` option. This is significant, because if `-L` hasn't been added to GCC's search path before you tell GCC to look for a non-default library, GCC won't know to search in your custom location. The compilation succeeds as expected, but there's a problem when you attempt to run it:
+
+```
+$ ./myDemo
+./myDemo: error while loading shared libraries:
+libexample.so: cannot open shared object file:
+No such file or directory
+```
+
+### Troubleshooting with ldd
+
+The `ldd` utility prints shared object dependencies, and it can be useful when troubleshooting issues like this:
+
+```
+$ ldd ./myDemo
+ linux-vdso.so.1 (0x00007ffe151df000)
+ libexample.so => not found
+ libc.so.6 => /lib64/libc.so.6 (0x00007f514b60a000)
+ /lib64/ld-linux-x86-64.so.2 (0x00007f514b839000)
+```
+
+You already knew that `libexample` couldn't be located, but the `ldd` output at least affirms what's expected from a *working* library. For instance, `libc.so.6` has been located, and `ldd` displays its full path.
+
+### LD_LIBRARY_PATH
+
+The `LD_LIBRARY_PATH` [environment variable][3] defines the path to libraries. If you're running an application that relies on a library that's not installed to a standard directory, you can add to the system's library search path using `LD_LIBRARY_PATH`.
+
+There are several ways to set environment variables, but the most flexible is to place them before you run a command. Look at what setting `LD_LIBRARY_PATH` does for the `ldd` command when it's analyzing a "broken" executable:
+
+```
+$ LD_LIBRARY_PATH=`pwd`/lib ldd ./
+ linux-vdso.so.1 (0x00007ffe515bb000)
+ libexample.so => /tmp/Demo/lib/libexample.so (0x0000...
+ libc.so.6 => /lib64/libc.so.6 (0x00007eff037ee000)
+ /lib64/ld-linux-x86-64.so.2 (0x00007eff03a22000)
+```
+
+It applies just as well to your custom command:
+
+```
+$ LD_LIBRARY_PATH=`pwd`/lib myDemo
+hello world!
+```
+
+If you move the library file or the executable, however, it breaks again:
+
+```
+$ mv lib/libexample.so ~/.local/lib64
+$ LD_LIBRARY_PATH=`pwd`/lib myDemo
+./myDemo: error while loading shared libraries...
+```
+
+To fix it, you must adjust the `LD_LIBRARY_PATH` to match the library's new location:
+
+```
+$ LD_LIBRARY_PATH=~/.local/lib64 myDemo
+hello world!
+```
+
+### When to use LD_LIBRARY_PATH
+
+In most cases, `LD_LIBRARY_PATH` isn't a variable you need to set. By design, libraries are installed to `/usr/lib64` and so applications naturally search it for their required libraries. You may need to use `LD_LIBRARY_PATH` in two cases:
+
+* You're compiling software that needs to link against a library that itself has just been compiled and has not yet been installed. Good build systems, such as [Autotools][4] and [CMake][5], can help handle this.
+* You're bundling software that's designed to run out of a single directory, with no install script or an install script that places libraries in non-standard directories. Several applications have releases that a Linux user can download, copy to `/opt`, and run with "no install." The `LD_PATH_LIBRARY` variable gets set through wrapper scripts so the user often isn't even aware it's been set.
+
+Compiling software gives you a lot of flexibility in how you run your system. The `LD_LIBRARY_PATH` variable, along with the `-L` and `-l` GCC options, are components of that flexibility.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/compile-code-ldlibrarypath
+
+作者:[Seth Kenlon][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/seth
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/collab-team-pair-programming-code-keyboard2.png
+[2]: https://opensource.com/article/22/5/what-happens-behind-scenes-during-gcc-compilation-c-programs
+[3]: https://opensource.com/article/19/8/what-are-environment-variables
+[4]: https://opensource.com/article/19/7/introduction-gnu-autotools
+[5]: https://opensource.com/article/21/5/cmake
diff --git a/sources/tech/20220530 Top 10 Linux Distributions for Windows Users in 2022.md b/sources/tech/20220530 Top 10 Linux Distributions for Windows Users in 2022.md
new file mode 100644
index 0000000000..a61d2eb83d
--- /dev/null
+++ b/sources/tech/20220530 Top 10 Linux Distributions for Windows Users in 2022.md
@@ -0,0 +1,250 @@
+[#]: subject: "Top 10 Linux Distributions for Windows Users in 2022"
+[#]: via: "https://www.debugpoint.com/2022/05/best-linux-distributions-windows-2022/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Top 10 Linux Distributions for Windows Users in 2022
+======
+We compiled an inventory of the 10 best Linux distributions for Windows users in 2022 based on how easy they are to adopt and successfully migrate from Windows.
+
+Although there are hundreds of Linux Distributions, very few of them can seriously replace Windows operating system. With the advancements and stability across Linux Kernel and desktop environments, 2022 is the perfect year to adopt Linux as a daily driver. This applies to students, school administrations, hobbyists, scientists, and related work profiles. In addition, the hardware makers also provide Linux support for their device live-ups.
+
+Linux, in general, still requires some workaround for specific workflows. However, Linux is still catching up on specific niche work profiles. The reason is some specific application vendors do not provide Linux executables. But there are plenty of alternatives available for everything in the Linux world.
+
+Moreover, for day-to-day work from an average user standpoint, the Linux operating system is now at a stage that can perform all the work you throw. With that in mind, we compiled the below 10 best Linux distributions in 2022 for Windows users. These should cover almost all possible use cases and work profiles (including desktop or Laptop).
+
+### Best Linux Distributions for Windows Users in 2022
+
+#### 1. Zorin OS
+
+The first Linux distribution we feature in this list is Zorin OS. And there are reasons for that. From a new Windows user standpoint, familiarity is essential and stability.
+
+Zorin OS is the perfect starting point for Linux Journet for windows users. It comes with built-in Windows-like themes, which you can apply with just a click. Not only that, the main taskbar an appearance you can change with its easy to use settings manager.
+
+In addition, Zorin is based on the Ubuntu LTS version. Hence, the user gets ultimate stability in packages, applications, and multi-year security patches.
+
+Other than that, Zorin OS maintains three editions – Pro, Lite and Core, which cater to the different user bases. The Pro edition is a paid version with additional themes and tweaks out of the box with a minimal fee.
+
+![Zorin OS 16.1 Desktop][1]
+
+You can download Zorin OS from the below link.
+
+[Download Zorin OS][2]
+
+#### 2. Linux Mint Cinnamon Edition
+
+If you are ever confused about which distro to choose, you can blindly choose “Linux Mint”, especially the Cinnamon edition. Linux Mint Cinnamon edition is a robust Linux distribution that brings a traditional menu and icon-based desktop design perfect for Windows users.
+
+For the first time, Linux users (from Windows), the installing apps, packages and other aspects might be overwhelming. But the Linux Mint team did an outstanding job with this distribution, which makes your day to day work super uncomplicated.
+
+In addition, it brings all necessary applications pre-installed, which are helpful for new folks. Other than that, printers, multiple displays and all peripheral device works are “out of the box” in this distribution.
+
+Linux Mint is based on Ubuntu and Debian. Hence you should get good stability for multiple years. Finally, a helpful community to help you in need via its forums.
+
+![Linux Mint Cinnamon Edition][3]
+
+You can download Linux Mint Cinnamon Edition from the below link.
+
+[Download Linux Mint Cinnamon Edition][4]
+
+#### 3. Kubuntu LTS Release
+
+A Linux distribution list is incomplete without Kubuntu, which features the stunning KDE Plasma desktop. Kubuntu is a well designed and stable Linux distribution which brings a fusion of Ubuntu and KDE Plasma desktop.
+
+The primary selling point is the KDE Plasma desktop which brings a friendly and easy to use desktop environment similar to the Windows operating system. It has the typical bottom taskbar, panels, icons, and widgets that remind you about Windows 11 or 10.
+
+![Kubuntu 22.04 LTS Desktop][5]
+
+Moreover, the KDE framework and KDE applications enrich this desktop overall. One of the plus points of the KDE Plasma with Kubuntu is the very active community and development.
+
+If you are a new Linux user, you can get help from the hugely popular forums and documentation.
+
+The Kubuntu download link is present below.
+
+[Download Kubuntu][6]
+
+#### 4. Deepin
+
+Deepin Linux distribution is one of the most popular Linux flavours among Windows and macOS users due to its aesthetics and stability. This impressive open-source GNU/Linux distribution is based on Deepin tech and features free and proprietary software. Deepin is popular among users who want a beautiful Linux while being stable.
+
+At the core, Deepin is based on Debian, which is more stable and provides support for more than sufficient years of security updates. Hence once you install Deepin, you can keep on using the set-up for a longer duration.
+
+In addition, Deepin features its own App Store, which definitely helps windows users. Also, you get fingerprint support, new hardware support and an additional application pre-installed.
+
+![Deepin 20 Desktop][7]
+
+You can download Deepin from the below link.
+
+[Download Deepin][8]
+
+#### 5. Ubuntu LTS Release with GNOME
+
+The fifth distro we feature is the Ubuntu Linux (the default GNOME desktop edition). The Ubuntu LTS releases (with default GNOME Desktop) are the most used Linux Distribution today. It’s the most popular, most downloaded and used by users, enterprises and several real-world needs.
+
+There is no doubt about the Ubuntu LTS version’s power and stability. It has been time tested. With the vast community support, Ubuntu LTS versions with customized GNOME might be the perfect fit for your needs.
+
+From a Windows user standpoint, the advantage Ubuntu LTS release beings are the applications and games support. Most of the app and game developers target Ubuntu in Linux in general for initial support. Hence, if you are a Windows user with a critical workflow consisting of complex applications, you should choose Ubuntu LTS editions with GNOME desktop.
+
+I would not recommend Ubuntu to a Windows user experiencing Linux for the first time.
+
+![Ubuntu LTS with GNOME][9]
+
+Finally, you can download Ubuntu using the below link.
+
+[Download Ubuntu][10]
+
+#### 6. Endless OS
+
+Endless OS is one of the unique Linux distributions on this list. It is an [OSTree based][11] free and open-source[Linux Distribution][12]. Packaged from Debian/Ubuntu, but it is not directly based on those.
+
+We added this distribution because its underlying packages and system remain intact, and it is read-only. The isolated user-space deals with your work and applications. That means it never breaks, and your system remains fresh always as the first installation.
+
+Endless OS is perfect for schools and organizations that manage labs with many desktop computers and have a little budget for maintaining (updates, upgrades, etc.) those desktops. In addition, its unique and customized GNOME desktop is perfect for the first time Linux users coming from Windows.
+
+A Windows user may not know what GRUB is, right? Hence, the team designed its installer in a [unique way][13] for those use cases. Also, it has a unique and friendly way of educating WIndows users on its installation with a detailed step by step guide.
+
+![Endless OS Installer, which can run on Windows][14]
+
+![Endless OS Desktop version 4.0][15]
+
+In addition to the above points, if you are ahead of IT of schools, non-profits and planning to get rid of Windows for many desktop units, then it is a perfect distribution to try out. For an individual user, you can use it if you are a little experienced in Linux.
+
+You can read a detailed review of [Endless OS here][16]. And download it from the below link.
+
+[Download Endless OS][17]
+
+#### 7. Linux Lite
+
+You might be wondering why Linux Lite is a list of distributions for Windows users. Think about a million desktops and laptops that are so-called “outdated” by Windows requirements. They are perfectly well and can run for years with perfect Linux distribution that caters to older hardware.
+
+Hence, our seventh distro in this list is Linux Lite. It is based on Ubuntu LTS release and comes with easy to use and lightweight [Xfce desktop environment][18]. In addition, Linux Lite also supports 32-bit hardware for older hardware. Moreover, it brings its in-house utilities that make your day to day work super easy. If you have a laptop or desktop with Windows 7 or Windows 10, you can easily format and install Linux Lite for better support.
+
+![Linux Lite Desktop 5.2][19]
+
+You can download Linux Lite from the below link.
+
+[Download Linux Lite][20]
+
+#### 8. Pop OS
+
+The Pop OS is developed by Americal computer manufacturer System76 for their lineup of desktops and laptops. System76 sells and supports high-end desktops and notebooks with Pop OS pre-installed.
+
+Hence, you get better hardware and additional support if you use this distribution in your Windows 10 or Windows 11 system.
+
+Moreover, Pop OS (based on Ubuntu) is primarily known to have perfect for modern hardware (including NVIDIA graphics) and brings some unique features absent in the traditional Ubuntu with GNOME desktop. For example, you get a well-designed COSMIC desktop with Pop OS, built-in tiling feature, well-optimized power controls, and a stunning Pop Shop. The Pop Shop is a software store designed by its maker to give you a well-categorized set of applications for your study, learning, development, gaming, etc. This distribution is also perfect for gaming if you plan to start your Linux journey with gaming in mind.
+
+In addition, if you want to get a professional-grade Linux distribution with official help and support, you should check out actual System76 hardware with Pop OS.
+
+Furthermore, many OEMs such as HP recently decided to launch special edition laptops using Pop OS. This shows how vital this distribution is today and perhaps a professional-grade Windows replacement after Ubuntu.
+
+![Pop OS][21]
+
+You can download the Pop OS for various hardware for free using the link below.
+
+[Download Pop OS][22]
+
+#### 9. elementary OS
+
+Our 9th Linux distribution for Windows users is the famous elementary OS. The elementary OS is a Ubuntu LTS based Linux distribution, which brings a mac-OS style user interface. However, it looks like macOS but can be an ideal replacement for Windows.
+
+Firstly, it’s stable and well designed, keeping a professional experience in mind. It is based on Ubuntu. Hence you get a wide range of help and support already available for Ubuntu Linux.
+
+Second, elementary OS brings its own curated App Center with a wide range of applications specially designed for elementary OS.
+
+Moreover, thanks to the beautiful Pantheon desktop, it doesn’t get into your way of working. Overall a little different Linux distribution for Windows users.
+
+![elementary OS 6 ODIN Desktop][23]
+
+You can download the elementary OS from the below link.
+
+[Download elementary OS][24]
+
+#### 10. Peppermint OS
+
+The final Linux distribution in this list is Peppermint OS.
+
+Peppermint OS is a Debian stable-based Linux Distribution that featured LXDE components alongside Xfce earlier. This operating system is primarily used for older hardware which requires stability and minimal maintenance in terms of software.
+
+Peppermint OS is a user-friendly Linux distribution that is perfect for older hardware. It is based on Debian’s Stable branch, which gives your system multiple years of security updates. In addition, it is also based on an Xfce desktop environment like Linux Lite in this list.
+
+But it has one unique selling point for Windows users.
+
+First, it’s well designed welcome screen that gives shortcuts for tasks and activities, which is beneficial for Windows users.
+
+Second, the Peppermint Hub is an excellent utility which brings all the necessary shortcuts for your system management, from changing themes to updating and downloading software from the repository.
+
+If you are a new user coming from Windows, Peppermint Hub will take care of most system management tasks from one single point.
+
+![Peppermint 2022-02-02 Desktop][25]
+
+![The new Peppermint Hub Application written in Python][26]
+
+You can download Peppermint OS from the below link.
+
+[Download Peppermint OS][27]
+
+### Honorary Mention
+
+#### Twister UI
+
+Twister UI is not a Linux distribution. You do not need to download separate icons, themes or cursors. But it’s like an add-on to your Linux Mint (Xfce Edition), which gives you a one-click look and feel of Windows 7, Windows 98 and Windows 10 in Linux Mint. The Pi Labs created this UI, making the [Twister OS][28] for Raspberry Pi and related hardware.
+
+We mention this here because many “older-generation” Windows users can easily migrate to Linux with help from their friends and family. They mostly know how Windows behaves based on the UI, menu, icons and colours. And it’s easy for them to start with Linux.
+
+Here’s how it looks (Windows XP theme). For more details, read the [Twister UI review][29].
+
+![Twister UI – Windows XP Theme][30]
+
+### Closing Notes
+
+I hope this list of “best Linux distributions for Windows users” helps you finally decide and pick one distro for yourself, your friends and co-workers. The above list is prepared based on their current status (active project), prospects (i.e. it has a well-defined vision for the future), how friendly they are to Windows users, and their stability.
+
+Finally, which Linux distribution for Windows users do you think should be in the top 10 list? Let me know in the comment box below.
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/05/best-linux-distributions-windows-2022/
+
+作者:[Arindam][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.debugpoint.com/author/admin1/
+[b]: https://github.com/lkxed
+[1]: https://www.debugpoint.com/wp-content/uploads/2022/03/Zorin-OS-16.1-Desktop.jpg
+[2]: https://zorin.com/os/download/
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/05/Linux-Mint-Cinnamon-Edition.jpg
+[4]: https://linuxmint.com/download.php
+[5]: https://www.debugpoint.com/wp-content/uploads/2022/04/Kubuntu-22.04-LTS-Desktop.jpg
+[6]: https://kubuntu.org/getkubuntu/
+[7]: https://www.debugpoint.com/wp-content/uploads/2020/09/Deepin-20-Desktop.jpg
+[8]: https://www.deepin.org/en/download
+[9]: https://www.debugpoint.com/wp-content/uploads/2022/05/Ubuntu-LTS-with-GNOME.jpg
+[10]: https://ubuntu.com/download/desktop
+[11]: https://ostree.readthedocs.io/en/stable/
+[12]: https://www.debugpoint.com/category/distributions
+[13]: https://support.endlessos.org/en/installation/windows-installer/dual-boot
+[14]: https://www.debugpoint.com/wp-content/uploads/2022/05/Endless-OS-Installer-which-can-run-in-Windows.jpg
+[15]: https://www.debugpoint.com/wp-content/uploads/2021/11/Endless-OS-Desktop-version-4.0-1024x582.jpg
+[16]: https://www.debugpoint.com/tag/endless-os/
+[17]: https://endlessos.com/
+[18]: https://www.debugpoint.com/tag/xfce
+[19]: https://www.debugpoint.com/wp-content/uploads/2020/11/Linux-Lite-Desktop-5.2.jpg
+[20]: https://linuxliteos.com/download.php
+[21]: https://www.debugpoint.com/wp-content/uploads/2022/05/Pop-OS.jpg
+[22]: https://pop.system76.com/
+[23]: https://www.debugpoint.com/wp-content/uploads/2021/08/elementary-OS-6-ODIN-Desktop.jpeg
+[24]: https://elementary.io/
+[25]: https://www.debugpoint.com/wp-content/uploads/2022/02/Peppermint-2022-02-02-Desktop.jpg
+[26]: https://www.debugpoint.com/wp-content/uploads/2022/02/The-new-Peppermint-Hub-Application-written-in-Python-1024x487.jpg
+[27]: https://peppermintos.com/guide/downloading/
+[28]: https://twisteros.com
+[29]: https://www.debugpoint.com/2022/02/twister-ui-2022/
+[30]: https://www.debugpoint.com/wp-content/uploads/2022/02/Twister-UI-Windows-XP-Theme.jpg
diff --git a/sources/tech/20220531 How dynamic linking for modular libraries works on Linux.md b/sources/tech/20220531 How dynamic linking for modular libraries works on Linux.md
new file mode 100644
index 0000000000..e3cba06c3e
--- /dev/null
+++ b/sources/tech/20220531 How dynamic linking for modular libraries works on Linux.md
@@ -0,0 +1,223 @@
+[#]: subject: "How dynamic linking for modular libraries works on Linux"
+[#]: via: "https://opensource.com/article/22/5/dynamic-linking-modular-libraries-linux"
+[#]: author: "Jayashree Huttanagoudar https://opensource.com/users/jayashree-huttanagoudar"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+How dynamic linking for modular libraries works on Linux
+======
+Learn how to combine multiple C object files into single executable with dynamic libraries.
+
+![Links][1]
+
+Image by: Paul Lewin. Modified by Opensource.com. CC BY-SA 2.0
+
+When you write an application using the C programming language, your code usually has multiple source files.
+
+Ultimately, these files must be compiled into a single executable. You can do this by creating either static or dynamic libraries (the latter are also referred to as shared libraries). These two types of libraries vary in how they are created and linked. Both have advantages and disadvantages, depending on your use case.
+
+Dynamic linking is the most common method, especially on Linux systems. Dynamic linking keeps libraries modular, so just one library can be shared between any number of applications. Modularity also allows a shared library to be updated independently of the applications that rely upon it.
+
+In this article, I demonstrate how dynamic linking works. In a future article, I'll demonstrate static linking.
+
+### Linker
+
+A linker is a command that combines several pieces of a program together and reorganizes the memory allocation for them.
+
+The functions of a linker include:
+
+* Integrating all the pieces of a program
+* Figuring out a new memory organization so that all the pieces fit together
+* Reviving addresses so that the program can run under the new memory organization
+* Resolving symbolic references
+
+As a result of all these linker functionalities, a runnable program called an executable is created. Before you can create a dynamically linked executable, you need some libraries to link *to* and an application to compile. Get your [favorite text editor][2] ready and follow along.
+
+### Create the object files
+
+First, create the header file `mymath.h` with these function signatures:
+
+```
+int add(int a, int b);
+int sub(int a, int b);
+int mult(int a, int b);
+int divi(int a, int b);
+```
+
+Create `add.c`, `sub.c` , `mult.c` and `divi.c` with these function definitions. I'm placing all of the code in one code block, so divide it up among four files, as indicated in the comments:
+
+```
+// add.c
+int add(int a, int b){
+return (a+b);
+}
+
+//sub.c
+int sub(int a, int b){
+return (a-b);
+}
+
+//mult.c
+int mult(int a, int b){
+return (a*b);
+}
+
+//divi.c
+int divi(int a, int b){
+return (a/b);
+}
+```
+
+Now generate object files `add.o`, `sub.o`, `mult.o`, and `divi.o` using GCC:
+
+```
+$ gcc -c add.c sub.c mult.c divi.c
+```
+
+The `-c` option skips the linking step and creates only object files.
+
+### Creating a shared object file
+
+Dynamic libraries are linked during the execution of the final executable. Only the name of the dynamic library is placed in the final executable. The actual linking happens during runtime, when both executable and library are placed in the main memory.
+
+In addition to being sharable, another advantage of a dynamic library is that it reduces the size of the final executable file. Instead of having a redundant copy of the library, an application using a library includes only the name of the library when the final executable is created.
+
+You can create dynamic libraries from your existing sample code:
+
+```
+$ gcc -Wall -fPIC -c add.c sub.c mult.c divi.c
+```
+
+The option `-fPIC` tells GCC to generate position-independent code (PIC). The `-Wall` option isn't necessary and has nothing to do with how the code is compiling. Still, it's a valuable option because it enables compiler warnings, which can be helpful when troubleshooting.
+
+Using GCC, create the shared library `libmymath.so` :
+
+```
+$ gcc -shared -o libmymath.so \
+add.o sub.o mult.o divi.o
+```
+
+You have now created a simple example math library, `libmymath.so`, which you can use in C code. There are, of course, very complex C libraries out there, and this is the process their developers use to generate the final product that you or I install for use in C code.
+
+Next, you can use your new math library in some custom code, then link it.
+
+### Creating a dynamically linked executable
+
+Suppose you've written a command for mathematics. Create a file called `mathDemo.c` and paste this code into it:
+
+```
+#include
+#include
+#include
+
+int main()
+{
+ int x, y;
+ printf("Enter two numbers\n");
+ scanf("%d%d",&x,&y);
+
+ printf("\n%d + %d = %d", x, y, add(x, y));
+ printf("\n%d - %d = %d", x, y, sub(x, y));
+ printf("\n%d * %d = %d", x, y, mult(x, y));
+
+ if(y==0){
+ printf("\nDenominator is zero so can't perform division\n");
+ exit(0);
+ }else{
+ printf("\n%d / %d = %d\n", x, y, divi(x, y));
+ return 0;
+ }
+}
+```
+
+Notice that the first line is an `include` statement referencing, by name, your own `libmymath` library. To use a shared library, you must have it installed. If you don't install the library you use, then when your executable runs and searches for the included library, it won't be able to find it. Should you need to compile code without installing a library to a known directory, there are [ways to override default settings][3]. For general use, however, it's expected that libraries exist in known locations, so that's what I'm demonstrating here.
+
+Copy the file `libmymath.so` to a standard system directory, such as `/usr/lib64`, and then run `ldconfig`. The `ldconfig` command creates the required links and cache to the most recent shared libraries found in the standard library directories.
+
+```
+$ sudo cp libmymath.so /usr/lib64/
+$ sudo ldconfig
+```
+
+### Compiling the application
+
+Create an object file called `mathDemo.o` from your application source code (`mathDemo.c` ):
+
+```
+$ gcc -I . -c mathDemo.c
+```
+
+The `-I` option tells GCC to search for header files (`mymath.h` in this case) in the directory listed after it. In this case, you're specifying the current directory, represented by a single dot (`.` ). Create an executable, referring to your shared math library by name using the `-l` option:
+
+```
+$ gcc -o mathDynamic mathDemo.o -lmymath
+```
+
+GCC finds `libmymath.so` because it exists in a default system library directory. Use `ldd` to verify the shared libraries used:
+
+```
+$ ldd mathDemo
+ linux-vdso.so.1 (0x00007fffe6a30000)
+ libmymath.so => /usr/lib64/libmymath.so (0x00007fe4d4d33000)
+ libc.so.6 => /lib64/libc.so.6 (0x00007fe4d4b29000)
+ /lib64/ld-linux-x86-64.so.2 (0x00007fe4d4d4e000)
+```
+
+Take a look at the size of the `mathDemo` executable:
+
+```
+$ du ./mathDynamic
+24 ./mathDynamic
+```
+
+It's a small application, of course, and the amount of disk space it occupies reflects that. For comparison, a statically linked version of the same code (as you'll see in my next article) is 932K!
+
+```
+$ ./mathDynamic
+Enter two numbers
+25
+5
+
+25 + 5 = 30
+25 - 5 = 20
+25 * 5 = 125
+25 / 5 = 5
+```
+
+You can verify that it's dynamically linked with the `file` command:
+
+```
+$ file ./mathDynamic
+./mathDynamic: ELF 64-bit LSB executable, x86-64,
+dynamically linked,
+interpreter /lib64/ld-linux-x86-64.so.2,
+with debug_info, not stripped
+```
+
+Success!
+
+### Dynamically linking
+
+A shared library leads to a lightweight executable, as the linking happens during runtime. Because it resolves references during runtime, it does take more time for execution. However, since the vast majority of commands on everyday Linux systems are dynamically linked and on modern hardware, the time saved is negligible. Its inherent modularity is a powerful feature for developers and users alike.
+
+In this article, I described how to create dynamic libraries and link them into a final executable. I'll use the same source code to create a statically linked executable in my next article.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/dynamic-linking-modular-libraries-linux
+
+作者:[Jayashree Huttanagoudar][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/jayashree-huttanagoudar
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/links.png
+[2]: https://opensource.com/article/21/2/open-source-text-editors
+[3]: https://opensource.com/article/22/5/compile-code-ldlibrarypath
diff --git a/sources/tech/20220531 SQLx- The Rust SQL Toolkit.md b/sources/tech/20220531 SQLx- The Rust SQL Toolkit.md
new file mode 100644
index 0000000000..1904601008
--- /dev/null
+++ b/sources/tech/20220531 SQLx- The Rust SQL Toolkit.md
@@ -0,0 +1,355 @@
+[#]: subject: "SQLx: The Rust SQL Toolkit"
+[#]: via: "https://www.opensourceforu.com/2022/05/sqlx-the-rust-sql-toolkit/"
+[#]: author: "Sibi Prabakaran https://www.opensourceforu.com/author/sibi-prabakaran/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+SQLx: The Rust SQL Toolkit
+======
+An async, pure Rust SQL crate features compile-time checked queries without a domain specific language. This article will give a basic whirlwind tour of the library by showing CRUD operations and the transactions supported using it.
+
+![The-Rust-SQL-Toolkit-Featured-imade][1]
+
+SQLx is a Rust crate for interacting with your database. Some of its features that distinguish it from other crates in the Rust ecosystem are:
+
+* Built with async IO in mind
+* Compile-time checked queries
+* Database agnostic
+* Postgres/MySQL drivers are written in pure Rust (as opposed to them being a FFI binding to a C library)
+* Works with various runtimes
+
+**Database setup**
+For our demo, we will start with a simple database with two tables and a simple relationship between them:
+
+```
+CREATe TABLE “person”(“id” SERIAL8 PRIMARY KEY UNIQUE,”name” TEXT NOT NULL,”age” smallint NOT NULL,”email” TEXT NULL)
+CREATe TABLE “book”(“id” SERIAL8 PRIMARY KEY UNIQUE,”name” TEXT NOT NULL,”isbn” TEXT NOT NULL,”person” INT8 NOT NULL)
+ALTER TABLE “book” ADD CONSTRAINT “book_person_fkey” FOREIGN KEY(“person”) REFERENCES “person”(“id”) ON DELETE RESTRICT ON UPDATE RESTRICT
+```
+
+We have two tables:
+
+* Person
+* Book
+
+And there is a relationship between the ‘book’ and the ‘person’ tables. Make sure you have a local (or remote, if you prefer) PostgreSQL running to test it out. You will also need the sqlx *cli* in your *$PATH*.
+
+**Rust project setup**
+We will use Cargo to create a new project. Cargo is the package manager for Rust. It can download your Rust package’s dependencies, compile your packages, make distributable packages, and upload them to crates.io. You can refer to Rust documentation for more details.
+
+```
+❯ cargo new sqlx-demo Created binary (application) `sqlx-demo` package
+```
+
+The project is set up as a binary project:
+
+```
+❯ tree
+.
+├── Cargo.toml
+└── src
+└── main.rs
+1 directory, 2 files
+```
+
+Let’s export the database credentials in an environment variable:
+
+```
+export DATABASE_URL=postgres://postgres:postgres@localhost/sqlx-demo
+```
+
+Next, we will add the SQL file (20211223133946_initial_setup.sql) as part of the migration:
+
+```
+❯ sqlx migrate add initial_setup
+Creating migrations/20211223133946_initial_setup.sql
+```
+
+Congratulations on creating your first migration!
+Did you know you can embed your migrations in your application binary? On startup, after creating your database connection or pool, add:
+
+```
+sqlx::migrate!().run(<&your_pool OR &mut your_connection>).await?;
+```
+
+Note that the compiler won’t pick up new migrations if no Rust source files have changed. You can create a Cargo build script to work around this with `sqlx migrate build-script` (see *https://docs.rs/sqlx/0.5/sqlx/macro.migrate.html).*
+
+Now you have to go to the above file and add your SQL statements. Once you have done that, you can set up the database:
+
+```
+❯ sqlx database setup
+Applied 20211223133946/migrate initial setup (27.149609ms)
+```
+
+Next, let’s add the required dependencies to the Cargo*.toml* file:
+
+```
+[dependencies]
+anyhow = “1.0.51”
+sqlx = { version = “0.5.9”, features = [ “runtime-tokio-rustls”, “postgres” ]}
+tokio = { version = “1”, features = [“full”] }
+```
+
+And you can modify the main.rs code to do the following things:
+
+* Set up a connection pool
+* Pass credentials to get a connection from the pool
+
+```
+use sqlx::{PgPool};
+use anyhow::*;
+use sqlx::postgres::PgPoolOptions;
+
+#[derive(Clone)]
+pub struct DBApplication {
+ pool: PgPool
+}
+
+impl DBApplication {
+ pub async fn new(config: String) -> Result {
+ let pool = PgPoolOptions::new()
+ .max_connections(5)
+ .connect(&config)
+ .await?;
+ Ok(DBApplication { pool })
+ }
+}
+
+#[tokio::main]
+async fn main() -> Result<()> {
+ let db = DBApplication::new(“postgres://postgres:postgres@localhost/sqlx-demo”.into()).await?;
+ println!(“Connection acquired!”);
+ Ok(())
+}
+```
+
+You can confirm if this works by running the command *cargo run*:
+
+```
+❯ cargo run
+ Finished dev [unoptimized + debuginfo] target(s) in 0.04s
+ Running `target/debug/sqlx-demo`
+Connection acquired!
+```
+
+**Domain types**
+We have two tables and, usually, we would want to model them into Rust structs. The easy way of doing this is to use *derive* macros:
+
+```
+#[derive(sqlx::FromRow, Debug)]
+pub struct Person {
+ id: i64,
+ name: String,
+ age: i16,
+ email: String
+}
+```
+
+The usual convention is to have two sets of records — one for inserting and the other for fetching. I use the New prefix to distinguish them:
+
+```
+pub struct NewPerson {
+ pub name: String,
+ pub age: i16,
+ pub email: String
+}
+```
+
+Another nice option is to use the *query_as!* macro, as it doesn’t need the above derive macro. I will be using that later in the demo.
+
+**Transactions**
+Let’s write a function to create a person, and let’s use a transaction to do the same:
+
+```
+pub async fn create_person(&self, person: NewPerson) -> Result {
+ let mut transaction = self.pool.begin().await?;
+ let person = sqlx::query_as(“INSERT INTO person(name, age, email) VALUES ($1, $2, $3) RETURNING *;”)
+ .bind(person.name)
+ .bind(person.age)
+ .bind(person.email)
+ .fetch_one(&mut transaction).await?;
+ transaction.commit().await?;
+ Ok(person)
+}
+```
+
+You can modify your main fetch to use it:
+
+```
+#[tokio::main]
+async fn main() -> Result<()> {
+ let db = DBApplication::new(“postgres://postgres:postgres@localhost/sqlx-demo”.into()).await?;
+ let sibi = db.create_person(NewPerson{ name: “Sibi”.into(), age: 20, email: “test@psibi.in”.into()}).await?;
+ println!(“Sibi: {:?}”, sibi);
+ Ok(())
+}
+```
+
+Now let’s check if the function returns early because of an error, if the transaction rolls back. We will simulate a failure in the above function by an early return after insert:
+
+```
+pub async fn create_person(&self, person: NewPerson) -> Result {
+ let mut transaction = self.pool.begin().await?;
+ let person = sqlx::query_as(“INSERT INTO person(name, age, email) VALUES ($1, $2, $3) RETURNING *;”)
+ .bind(person.name)
+ .bind(person.age)
+ .bind(person.email)
+ .fetch_one(&mut transaction).await?;
+ bail!(“Simulate error”);
+ transaction.commit().await?;
+ Ok(person)
+}
+```
+
+And the main function will be like this:
+
+```
+#[tokio::main]
+async fn main() -> Result<()> {
+ let db = DBApplication::new(“postgres://postgres:postgres@localhost/sqlx-demo”.into()).await?;
+ let sibi = db.create_person(NewPerson{ name: “Sibi”.into(), age: 20, email: “test@psibi.in”.into()}).await?;
+ println!(“Sibi: {:?}”, sibi);
+ Ok(())
+}
+```
+
+Before running the executable, you can check the current rows in your table:
+
+```
+sqlx-demo=# select * from person;
+ id | name | age | email
+----+------+-----+-------
+(0 rows)
+```
+
+Now let’s execute the program:
+
+```
+❯ cargo run Finished dev [unoptimized + debuginfo] target(s) in 0.05s
+ Running `target/debug/sqlx-demo`
+Error: Simulate error
+```
+
+You can see that it did return an error. You can also verify that the transaction has rolled back and has not inserted the row, by inspecting the rows:
+
+```
+sqlx-demo=# select * from person;
+ id | name | age | email
+----+------+-----+-------
+(0 rows)
+```
+
+**Other CRUD operations**
+Similarly, you can implement other CRUD (create, read, update, delete) operations too:
+
+```
+pub async fn get_person(&self, id: i64) -> Result {
+ let mut transaction = self.pool.begin().await?;
+ let person = sqlx::query_as(“SELECT * from person where id = $1”)
+ .bind(id)
+ .fetch_one(&mut transaction).await?;
+ transaction.commit().await?;
+ Ok(person)
+}
+
+pub async fn update_person_name(&self, id: i64, name: String) -> Result {
+ let mut transaction = self.pool.begin().await?;
+ let person = sqlx::query_as(“UPDATE person SET name = $1 WHERE id = $2 RETURNING *”)
+ .bind(name)
+ .bind(id)
+ .fetch_one(&mut transaction).await?;
+ transaction.commit().await?;
+ Ok(person)
+}
+
+pub async fn delete_book(&self, id: i64) -> Result<()> {
+ let mut transaction = self.pool.begin().await?;
+ sqlx::query(“DELETE FROM book WHERE id = $1”)
+ .bind(id)
+ .fetch_optional(&mut transaction).await?;
+ transaction.commit().await?;
+ Ok(())
+}
+```
+
+**Compile time queries**
+One nice thing about SQLx is that it can perform static checks against your database server. Using the *query_as* macro will achieve this. Rewriting the above *get_person* function to use the macro will look like this:
+
+```
+pub async fn get_person_macro(&self, id: i64) -> Result {
+ let mut transaction = self.pool.begin().await?;
+ let person = sqlx::query_as!(Person, “SELECT * from person where id = $1”, id)
+ .fetch_one(&mut transaction)
+ .await?;
+ transaction.commit().await?;
+ Ok(person)
+}
+```
+
+The real power of it shines when you make mistakes in your SQL query. Let’s change the above code to use *id_*wrong instead of id:
+
+```
+pub async fn get_person_macro(&self, id: i64) -> Result {
+ let mut transaction = self.pool.begin().await?;
+ let person = sqlx::query_as!(Person, “SELECT * from person where id_wrong = $1”, id)
+ .fetch_one(&mut transaction)
+ .await?;
+ transaction.commit().await?;
+ Ok(person)
+}
+```
+
+
+Compiling the above code will give this error:
+
+```
+error: error returned from database: column “id_wrong” does not exist
+ --> src/main.rs:99:22
+ |
+99 | let person = sqlx::query_as!(Person, “SELECT * from person where id_wrong = $1”, id)
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ |
+ = note: this error originates in the macro `$crate::sqlx_macros::expand_query` (in Nightly builds, run with -Z macro-backtrace for more info)
+```
+
+As the error message indicates, there is no column named *id_wrong* in your table.
+
+**Migrations**
+You could see above that we ran the migrations using the *sqlx-cli tool.* But in our application code, it will often be handy to run the migrations on a fresh database.*The sqlx::migration* macro is specifically meant for that. It embeds the migration into your binary and can be used to run it before the application is started. This is how your new main function will look like with migrations integration:
+
+```
+#[tokio::main]
+async fn main() -> Result<()> {
+ let db = DBApplication::new(“postgres://postgres:postgres@localhost/sqlx-demo”.into()).await?;
+ sqlx::migrate!().run(&db.pool).await?;
+ ...
+ ...
+ Ok(())
+}
+```
+
+Hopefully, this article gave you a good idea of how to use SQLx for interacting with your database. If you prefer an object-relational mapping (ORM) based solution, these are some of the popular options:
+
+* Diesel: https://diesel.rs/
+* sea_orm: https://docs.rs/sea-orm/latest/sea_orm/
+* ormx: https://github.com/NyxCode/ormx
+
+Both sea_orm and ormx are built on top of SQLx. The major differentiating factor between Diesel and the other ORM based solutions is that the former isn’t async IO ready yet.
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/05/sqlx-the-rust-sql-toolkit/
+
+作者:[Sibi Prabakaran][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/sibi-prabakaran/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/04/The-Rust-SQL-Toolkit-Featured-imade.jpg
diff --git a/sources/tech/20220601 A visual guide to Kubernetes networking fundamentals.md b/sources/tech/20220601 A visual guide to Kubernetes networking fundamentals.md
new file mode 100644
index 0000000000..535c40fd66
--- /dev/null
+++ b/sources/tech/20220601 A visual guide to Kubernetes networking fundamentals.md
@@ -0,0 +1,123 @@
+[#]: subject: "A visual guide to Kubernetes networking fundamentals"
+[#]: via: "https://opensource.com/article/22/6/kubernetes-networking-fundamentals"
+[#]: author: "Nived Velayudhan https://opensource.com/users/nivedv"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+A visual guide to Kubernetes networking fundamentals
+======
+Networking within Kubernetes isn't so different from networking in the physical world. Remember networking basics, and you'll have no trouble enabling communication between containers, Pods, and Services.
+
+![Parts, modules, containers for software][1]
+
+Image by: Opensource.com
+
+Moving from physical networks using switches, routers, and ethernet cables to virtual networks using software-defined networks (SDN) and virtual interfaces involves a slight learning curve. Of course, the principles remain the same, but there are different specifications and best practices. Kubernetes has its own set of rules, and if you're dealing with containers and the cloud, it helps to understand how Kubernetes networking works.
+
+The Kubernetes Network Model has a few general rules to keep in mind:
+
+1. Every Pod gets its own IP address: There should be no need to create links between Pods and no need to map container ports to host ports.
+2. NAT is not required: Pods on a node should be able to communicate with all Pods on all nodes without NAT.
+3. Agents get all-access passes: Agents on a node (system daemons, Kubelet) can communicate with all the Pods in that node.
+4. Shared namespaces: Containers within a Pod share a network namespace (IP and MAC address), so they can communicate with each other using the loopback address.
+
+### What Kubernetes networking solves
+
+Kubernetes networking is designed to ensure that the different entity types within Kubernetes can communicate. The layout of a Kubernetes infrastructure has, by design, a lot of separation. Namespaces, containers, and Pods are meant to keep components distinct from one another, so a highly structured plan for communication is important.
+
+![Container-to-container and pod-to-pod networking][2]
+
+### Container-to-container networking
+
+Container-to-container networking happens through the Pod network namespace. Network namespaces allow you to have separate network interfaces and routing tables that are isolated from the rest of the system and operate independently. Every Pod has its own network namespace, and containers inside that Pod share the same IP address and ports. All communication between these containers happens through localhost, as they are all part of the same namespace. (Represented by the green line in the diagram.)
+
+### Pod-to-Pod networking
+
+With Kubernetes, every node has a designated CIDR range of IPs for Pods. This ensures that every Pod receives a unique IP address that other Pods in the cluster can see. When a new Pod is created, the IP addresses never overlap. Unlike container-to-container networking, Pod-to-Pod communication happens using real IPs, whether you deploy the Pod on the same node or a different node in the cluster.
+
+The diagram shows that for Pods to communicate with each other, the traffic must flow between the Pod network namespace and the Root network namespace. This is achieved by connecting both the Pod namespace and the Root namespace by a virtual ethernet device or a veth pair (veth0 to Pod namespace 1 and veth1 to Pod namespace 2 in the diagram). A virtual network bridge connects these virtual interfaces, allowing traffic to flow between them using the Address Resolution Protocol (ARP).
+
+When data is sent from Pod 1 to Pod 2, the flow of events is:
+
+1. Pod 1 traffic flows through eth0 to the Root network namespace's virtual interface veth0.
+2. Traffic then goes through veth0 to the virtual bridge, which is connected to veth1.
+3. Traffic goes through the virtual bridge to veth1.
+4. Finally, traffic reaches the eth0 interface of Pod 2 through veth1.
+
+### Pod-to-Service networking
+
+Pods are very dynamic. They may need to scale up or down based on demand. They may be created again in case of an application crash or a node failure. These events cause a Pod's IP address to change, which would make networking a challenge.
+
+![Pod-to-Service networking][3]
+
+Kubernetes solves this problem by using the Service function, which does the following:
+
+1. Assigns a static virtual IP address in the frontend to connect any backend Pods associated with the Service.
+2. Load-balances any traffic addressed to this virtual IP to the set of backend Pods.
+3. Keeps track of the IP address of a Pod, such that even if the Pod IP address changes, the clients don't have any trouble connecting to the Pod because they only directly connect with the static virtual IP address of the Service itself.
+
+The in-cluster load balancing occurs in two ways:
+
+1. IPTABLES: In this mode, kube-proxy watches for changes in the API Server. For each new Service, it installs iptables rules, which capture traffic to the Service's clusterIP and port, then redirects traffic to the backend Pod for the Service. The Pod is selected randomly. This mode is reliable and has a lower system overhead because Linux Netfilter handles traffic without the need to switch between userspace and kernel space.
+2. IPVS: IPVS is built on top of Netfilter and implements transport-layer load balancing. IPVS uses the Netfilter hook function, using the hash table as the underlying data structure, and works in the kernel space. This means that kube-proxy in IPVS mode redirects traffic with lower latency, higher throughput, and better performance than kube-proxy in iptables mode.
+
+The diagram above shows the package flow from Pod 1 to Pod 3 through a Service to a different node (marked in red). The package traveling to the virtual bridge would have to use the default route (eth0) as ARP running on the bridge wouldn't understand the Service. Later, the packages have to be filtered by iptables, which uses the rules defined in the node by kube-proxy. Therefore the diagram shows the path as it is.
+
+### Internet-to-Service networking
+
+So far, I have discussed how traffic is routed within a cluster. There's another side to Kubernetes networking, though, and that's exposing an application to the external network.
+
+![Internet-to-service][4]
+
+You can expose an application to an external network in two different ways.
+
+1. Egress: Use this when you want to route traffic from your Kubernetes Service out to the Internet. In this case, iptables performs the source NAT, so the traffic appears to be coming from the node and not the Pod.
+2. Ingress: This is the incoming traffic from the external world to Services. Ingress also allows and blocks particular communications with Services using rules for connections. Typically, there are two ingress solutions that function on different network stack regions: the service load balancer and the ingress controller.
+
+### Discovering Services
+
+There are two ways Kubernetes discovers a Service:
+
+1. Environment Variables: The kubelet service running on the node where your Pod runs is responsible for setting up environment variables for each active service in the format {SVCNAME}_SERVICE_HOST and {SVCNAME}_SERVICE_PORT. You must create the Service before the client Pods come into existence. Otherwise, those client Pods won't have their environment variables populated.
+2. DNS: The DNS service is implemented as a Kubernetes service that maps to one or more DNS server Pods, which are scheduled just like any other Pod. Pods in the cluster are configured to use the DNS service, with a DNS search list that includes the Pod's own namespace and the cluster's default domain. A cluster-aware DNS server, such as CoreDNS, watches the Kubernetes API for new Services and creates a set of DNS records for each one. If DNS is enabled throughout your cluster, all Pods can automatically resolve Services by their DNS name. The Kubernetes DNS server is the only way to access ExternalName Services.
+
+### ServiceTypes for publishing Services:
+
+Kubernetes Services provide you with a way of accessing a group of Pods, usually defined by using a label selector. This could be applications trying to access other applications within the cluster, or it could allow you to expose an application running in the cluster to the external world. Kubernetes ServiceTypes enable you to specify what kind of Service you want.
+
+![Four ServiceTypes][5]
+
+The different ServiceTypes are:
+
+1. ClusterIP: This is the default ServiceType. It makes the Service only reachable from within the cluster and allows applications within the cluster to communicate with each other. There is no external access.
+2. LoadBalancer: This ServiceType exposes the Services externally using the cloud provider's load balancer. Traffic from the external load balancer is directed to the backend Pods. The cloud provider decides how it is load-balanced.
+3. NodePort: This allows the external traffic to access the Service by opening a specific port on all the nodes. Any traffic sent to this Port is then forwarded to the Service.
+4. ExternalName: This type of Service maps a Service to a DNS name by using the contents of the externalName field by returning a CNAME record with its value. No proxying of any kind is set up.
+
+### Networking software
+
+Networking within Kubernetes isn't so different from networking in the physical world, as long as you understand the technologies used. Study up, remember networking basics, and you'll have no trouble enabling communication between containers, Pods, and Services.
+
+Image by: (Nived Velayudhan, CC BY-SA 4.0)
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/6/kubernetes-networking-fundamentals
+
+作者:[Nived Velayudhan][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/nivedv
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/containers_modules_networking_hardware_parts.png
+[2]: https://opensource.com/sites/default/files/2022-05/1containerandpodnets.jpg
+[3]: https://opensource.com/sites/default/files/2022-05/2podtoservicenets.jpg
+[4]: https://opensource.com/sites/default/files/2022-05/3internettoservicenets.jpg
+[5]: https://opensource.com/sites/default/files/2022-05/4servicetypes_0.png
diff --git a/sources/tech/20220601 How to Create Local Yum-DNF Repository on RHEL 9.md b/sources/tech/20220601 How to Create Local Yum-DNF Repository on RHEL 9.md
new file mode 100644
index 0000000000..1fabed8d0c
--- /dev/null
+++ b/sources/tech/20220601 How to Create Local Yum-DNF Repository on RHEL 9.md
@@ -0,0 +1,136 @@
+[#]: subject: "How to Create Local Yum/DNF Repository on RHEL 9"
+[#]: via: "https://www.linuxtechi.com/create-local-yum-dnf-repository-rhel/"
+[#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/"
+[#]: collector: "lkxed"
+[#]: translator: "geekpi"
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+How to Create Local Yum/DNF Repository on RHEL 9
+======
+Hello techies, recently Red Hat has released its latest operating system RHEL 9. RHEL 9 fulfill all the requirements of hybrid cloud. It can be installed on physical server, virtual machine and inside the container image.
+
+When we don’t have subscription and want to install packages for doing the POCs then setting up local yum or dnf repository will be handy.
+
+In this guide, we will cover how to create local yum/dnf repository on RHEL 9 using DVD or ISO file step by step.
+
+Prerequisites for creating local Yum/DNF repository
+
+* Minimal Install RHEL 9 system
+* Sudo User with admin privileges
+* RHEL 9 DVD or ISO file
+
+### 1 ) Mount RHEL 9 ISO File or DVD
+
+We are assuming RHEL 9 iso file is already copied into the system. Run following mount command to mount ISO file on /opt/repo folder.
+
+```
+$ sudo mkdir /var/repo
+$ sudo mount -o loop rhel-baseos-9.0-x86_64-dvd.iso /var/repo/
+```
+
+![Mount-RHEL9-ISO-File-Command][1]
+
+In case of dvd, run
+
+```
+$ sudo mount /dev/sr0 /var/repo/
+```
+
+### 2) Create Repo File in ‘/etc/yum.repos.d/’ Directory
+
+Create a repo file with name ‘rhel9-local.repo’ under the folder /etc/yum.repos.d/ with following content
+
+```
+$ sudo vi /etc/yum.repos.d/rhel9-local.repo
+[Local-BaseOS]
+name=Red Hat Enterprise Linux 9 - BaseOS
+metadata_expire=-1
+gpgcheck=1
+enabled=1
+baseurl=file:///var/repo//BaseOS/
+gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
+
+[Local-AppStream]
+name=Red Hat Enterprise Linux 9 - AppStream
+metadata_expire=-1
+gpgcheck=1
+enabled=1
+baseurl=file:///var/repo//AppStream/
+gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
+```
+
+Save and close the file.
+
+![RHEL8-Local-Repo-File][2]
+
+### 3) Flush Yum/DNF & Subscription Manager Cache
+
+Execute following commands to clean yum or dnf and subscription manager cache.
+
+```
+$ sudo dnf clean all
+$ sudo subscription-manager clean
+```
+
+![DNF-Subscription-Manager-Clean][3]
+
+In the above output, we are getting a warning message ‘This system is not registered with an entitlement’. So, to suppress this warning message, edit the file ‘/etc/yum/pluginconf.d/subscription-manager.conf’ , change the parameter ‘enabled=1’ to ‘enabled=0’.
+
+```
+$ sudo vi /etc/yum/pluginconf.d/subscription-manager.conf
+```
+
+![Disable-Subscription-Parameter-RHEL-9][4]
+
+Save and exit the file.
+
+### 4) Install Packages using Local Repository
+
+Now we are all set to test our local repository. Run beneath command to view configure repository.
+
+```
+$ sudo dnf repolist
+```
+
+Output,
+
+![DNF-Repolist-RHEL-9][5]
+
+Now, try Install packages using dnf command via above configure local repository.
+
+```
+$ sudo dnf install nfs-utils
+```
+
+Output,
+
+![Install-RPM-Package-via-local-repo-rhel9][6]
+
+![Package-Installation-Completion-RHEL9-DNF-Command][7]
+
+Perfect, above output confirms that nfs-utils package along with its dependencies are installed successfully via locally configured yum or dnf repository.
+
+That’s all from this guide. I hope you have found it informative. Kindly do post your queries and feedback in below comments section.
+
+--------------------------------------------------------------------------------
+
+via: https://www.linuxtechi.com/create-local-yum-dnf-repository-rhel/
+
+作者:[Pradeep Kumar][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.linuxtechi.com/author/pradeep/
+[b]: https://github.com/lkxed
+[1]: https://www.linuxtechi.com/wp-content/uploads/2022/06/Mount-RHEL9-ISO-File-Command.png
+[2]: https://www.linuxtechi.com/wp-content/uploads/2022/06/RHEL8-Local-Repo-File.png
+[3]: https://www.linuxtechi.com/wp-content/uploads/2022/06/DNF-Subscription-Manager-Clean.png
+[4]: https://www.linuxtechi.com/wp-content/uploads/2022/06/Disable-Subscription-Parameter-RHEL-9.png
+[5]: https://www.linuxtechi.com/wp-content/uploads/2022/06/DNF-Repolist-RHEL-9.png
+[6]: https://www.linuxtechi.com/wp-content/uploads/2022/06/Install-RPM-Package-via-local-repo-rhel9.png
+[7]: https://www.linuxtechi.com/wp-content/uploads/2022/06/Package-Installation-Completion-RHEL9-DNF-Command.png
diff --git a/sources/tech/20220601 KDE Plasma vs. Xfce- Comparing Lean and Mean Desktop Environments for Linux Users.md b/sources/tech/20220601 KDE Plasma vs. Xfce- Comparing Lean and Mean Desktop Environments for Linux Users.md
new file mode 100644
index 0000000000..9bbd549a8e
--- /dev/null
+++ b/sources/tech/20220601 KDE Plasma vs. Xfce- Comparing Lean and Mean Desktop Environments for Linux Users.md
@@ -0,0 +1,161 @@
+[#]: subject: "KDE Plasma vs. Xfce: Comparing Lean and Mean Desktop Environments for Linux Users"
+[#]: via: "https://itsfoss.com/kde-vs-xfce/"
+[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+KDE Plasma vs. Xfce: Comparing Lean and Mean Desktop Environments for Linux Users
+======
+KDE Plasma and Xfce are two popular desktop environment options for lightweight Linux distributions.
+
+While Xfce is still favored more for some of the [best lightweight Linux distributions][1], KDE Plasma is not a resource-heavy desktop either.
+
+To help you pick a suitable desktop environment, we will be comparing some of the most common aspects of a desktop environment.
+
+In case you are exploring some of the [best desktop environments][2] for the first time, you might want to know the [differences between KDE Plasma and GNOME][3] as well. It should help you choose the ideal desktop for your system.
+
+**Note**: *KDE is the entire community of people working on various projects under its umbrella. And, the desktop environment is Plasma. Here, we compare the Plasma desktop with Xfce. However, for simplicity, we tend to use “KDE” instead of “Plasma”* *in some cases.*
+
+### User Experience
+
+Both [KDE Plasma][4] and [Xfce][5] are tailored to provide the most comfortable Windows-like experience in a Linux distribution. However, KDE can be a more suitable choice.
+
+This is a big deal for users who recently switched from[Windows to Linux to experience the perks][6].
+
+![kde home 2022][7]
+
+In other words, you will find a similar layout with a start menu (app menu) and navigate your way around through that in KDE.
+
+Xfce does provide a simple user interface. But, it could be too bland for users coming from macOS or Windows.
+
+![xfce xubuntu][8]
+
+Previously, Xfce could have been tagged as an old-school Linux desktop using a retro-style icon theme and window decorations. However, Xfce has evolved over the years to provide elementary-OS-like visuals out of the box.
+
+KDE can be a more modern experience vs. Xfce, but none of them should disappoint you.
+
+### App Ecosystem
+
+KDE comes packed with several utilities and countless projects under its umbrella. You’ll find a number of ‘K apps’ such as KDE Connect, Kdenlive, Konsole, etc. The software center ‘Discover’ is a good GUI utility for finding and installing applications.
+
+![kde discover][9]
+
+In contrast, Xfce falls short on the offerings. There are not as many ‘X apps’. It also doesn’t offers a software center. You are likely be using the good old [Synaptic Package Manager][10].
+
+However, Xfce manages to offer the essentials without adding bloat to your system.
+
+If you want the option to explore various applications tailored for your desktop environment, KDE should offer a better app ecosystem overall.
+
+### Customizability
+
+![kde appearance custom][11]
+
+KDE Plasma is best known for its customizability. You can also refer to our [guide to explore customization tips][12] if you are a new KDE Plasma user.
+
+Considering KDE as a desktop environment that offers a wide range of options, colors, themes, widgets, and more, you get to tweak numerous things to personalize your experience.
+
+That being said, it can be overwhelming for beginners.
+
+So, if you want customizability of essential parts of the distro but still want to keep things simple, Xfce can be the right choice.
+
+![xfce customization][13]
+
+Xfce may not be customizable, but it [offers all the useful tweaks][14], including adding a launcher, customizing the taskbar, etc.
+
+### Development Activity and Stability
+
+KDE and Xfce aim to provide the most stable experience possible.
+
+However, if you dislike frequent changes/updates to the desktop environment, Xfce should be a better option.
+
+There are no exact schedules for Xfce upgrades, but you will likely find them once in two-three years or longer.
+
+Of course, the Xfce development team is smaller than KDE’s, which is also a reason for fewer releases. But, it is still a good reason for stability without breaking many of the functionalities in Linux distributions.
+
+While KDE Plasma’s development activity always manages to grab the spotlight, the frequent updates may introduce bugs/issues for some users.
+
+Fortunately, you also have KDE Plasma LTS versions if you do not want the latest features always.
+
+Suppose you do not worry much about the stability but want to keep up with the modern standards. In that case, KDE Plasma will be a better candidate in terms of faster development activity while introducing user-requested changes regularly.
+
+### Performance
+
+Even though Xfce is favored more for resource-friendly distributions, KDE Plasma cannot be ignored.
+
+![xfce performance][15]
+
+You should get a snappy experience with both the desktop environments on older computers.
+
+For example, I tried comparing Kubuntu vs. Xubuntu to check the resource usage. It appears that the memory usage is about the same.
+
+![kde resource usage][16]
+
+It should not be a big deal. But, it is something to note on paper.
+
+### Accessibility Options
+
+A desktop environment needs to enhance accessibility for physically challenged users.
+
+While both the desktop environments offer insufficient accessibility support compared to GNOME, KDE can be an easier option to work with instead of Xfce.
+
+![kde accesibility][17]
+
+You get the option to enable the screen reader, customize mouse navigation, apply keyboard filters, and more. You need to install Orca Screen Reader before accessing the feature from KDE Plasma’s settings.
+
+With Xfce, we have less clarity on what to do with a screen reader, except you have a simple option to enable screen readers and magnifiers with a single click.
+
+![xfce accessibility][18]
+
+Of course, none of them are excellent choices in terms of accessibility options. So, you can try exploring both of them if you are not sure about it.
+
+### Available Distributions
+
+You can find KDE and Xfce editions for the most popular Linux distributions, including Ubuntu flavors, Manjaro, Linux Mint, and more.
+
+Xfce is pretty standard with lightweight Linux distributions as the primary offering, such as Linux Lite.
+
+In general, KDE-powered distributions are more popular. You can refer to our [list of KDE-based Linux distributions][19] to find some of the best options for your system.
+
+### Final Verdict: What Should You Pick?
+
+KDE Plasma should be an easy pick for most looking for a modern user experience with customizability.
+
+However, if you just need to get some things done on your older computer, with a simple user interface, Xfce can be an impressive option.
+
+What would you prefer between the two desktop environments? Let me know your thoughts in the comments below.
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/kde-vs-xfce/
+
+作者:[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://itsfoss.com/author/ankush/
+[b]: https://github.com/lkxed
+[1]: https://itsfoss.com/lightweight-linux-beginners/
+[2]: https://itsfoss.com/best-linux-desktop-environments/
+[3]: https://itsfoss.com/kde-vs-gnome/
+[4]: https://kde.org/plasma-desktop/
+[5]: https://www.xfce.org/
+[6]: https://itsfoss.com/linux-better-than-windows/
+[7]: https://itsfoss.com/wp-content/uploads/2022/02/kde-home-2022.png
+[8]: https://itsfoss.com/wp-content/uploads/2022/06/xfce-xubuntu.jpg
+[9]: https://itsfoss.com/wp-content/uploads/2022/02/kde-discover-800x595.png
+[10]: https://itsfoss.com/synaptic-package-manager/
+[11]: https://itsfoss.com/wp-content/uploads/2022/02/kde-appearance-custom-800x564.png
+[12]: https://itsfoss.com/kde-customization/
+[13]: https://itsfoss.com/wp-content/uploads/2022/06/xfce-customization.jpg
+[14]: https://itsfoss.com/customize-xfce/
+[15]: https://itsfoss.com/wp-content/uploads/2022/06/xfce-performance-800x556.png
+[16]: https://itsfoss.com/wp-content/uploads/2022/02/kde-resource-usage-800x599.png
+[17]: https://itsfoss.com/wp-content/uploads/2022/02/kde-accesibility.png
+[18]: https://itsfoss.com/wp-content/uploads/2022/06/xfce-accessibility.png
+[19]: https://itsfoss.com/best-kde-distributions/
diff --git a/sources/tech/20220601 Linux desktops- KDE vs GNOME.md b/sources/tech/20220601 Linux desktops- KDE vs GNOME.md
new file mode 100644
index 0000000000..ba2c80e25d
--- /dev/null
+++ b/sources/tech/20220601 Linux desktops- KDE vs GNOME.md
@@ -0,0 +1,96 @@
+[#]: subject: "Linux desktops: KDE vs GNOME"
+[#]: via: "https://opensource.com/article/22/6/kde-vs-gnome-linux-desktop"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Linux desktops: KDE vs GNOME
+======
+Comparing two open source desktops side by side shows that both styles serve important purposes.
+
+![How to upgrade your Fedora Linux system with DNF][1]
+
+Image by: Opensource.com
+
+I'm an ardent KDE [Plasma Desktop][2] user, but at work I happily use [GNOME][3]. Without getting into the question of which desktop I'd take to a desert island (that happens to have a power outlet), I see the merits of both desktops, and I'd rather use either of them than non-open source desktop alternatives.
+
+I've tried the proprietary alternatives, and believe me, they're not fun (it took one over a decade to get virtual workspaces, and the other still doesn't have a screenshot function built in). And for all the collaboration that the KDE and GNOME developers do these days at conferences like GUADEC, there's still a great philosophical divide between the two.
+
+And you know what? That's a good thing.
+
+### Missing the tree for the forest
+
+As a KDE user, I'm used to options. When I right-click on an object, whether it's a file, a widget, or even the empty space between widgets, I expect to see at least 10 options for what I'd like to do or how I'd like to configure the object. I like that because I like to configure my environment. I see that as the "power" part of being a "power user." I want to be able to adapt my environment to my whims to make it work better for me, even when the way I work is utterly unique and maybe not even sensible.
+
+GNOME doesn't give the user dozens of options with every right-click. In fact, GNOME doesn't even give you that many options when you go to Settings. To get configuration options, you have to download a tool called Tweaks, and for some you must install extensions.
+
+I'm not a GNOME developer, but I've set up a lot of Linux computers for friends and colleagues, and one thing I've noticed is that everybody has a unique perception of interface design. Some people, myself included, enjoy seeing a multitude of choices readily available at every turn.
+
+Other people don't.
+
+Here's what I see when I right-click on a file in the KDE Plasma Desktop:
+
+![This screenshot shows a menu that opens when right-clicking on a file in KDE. There is a list of 15 options of things to do with the file, such as copy, rename, compress, share, and so forth, many of which have submenus for additional options. Actions is selected on the menu, showing an additional 7 options.][4]
+
+Here's what I see when I right-click on a file in the GNOME desktop:
+
+![This screenshot of the menu that appears when right-clicking on a file on GNOME shows a list of 11 action options.][5]
+
+Including submenus, my Plasma Desktop has over 30 choices in a right-click. Of course, that's partly because I've configured it that way, and context matters, too. I have more options in a Git repository, for instance, than outside of one. By contrast, GNOME has 11 options in a right-click.
+
+Bottom line: Some users aren't keen to mentally filter out 29 different options so they can see the one option they're looking for. Minimalism allows users to focus on essential and common actions. Having only the essential options can be comforting for new users, a mental relief for the experienced user, and efficient for all users.
+
+### Mistake vectors
+
+As a Linux "power user," I fall prey to the old adage that I'm responsible for my own errors. It's the stuff of legend that Linux gives you access to "dangerous" commands and that, should you choose to use them, you're implicitly forgoing your right to complain about the results. For the record, I've never agreed with this sentiment, and I've [written and promoted tools][6] that help avoid mistakes in the terminal.
+
+The problem is that mistakes are not planned. If you could plan your mistakes, you could choose not to make them. What actually happens is that mistakes occur when you haven't planned them, usually at the worst possible moment.
+
+One way to reduce error is to reduce choice. When you have only two buttons to press, you can make only one mistake. It's also easier to identify what mistake you've made when there are fewer avenues to take. When you have five buttons, not only can you make four mistakes, but you also might not recall which button out of the five was the wrong one (and the other wrong one, and the other, and so on).
+
+Bottom line: Fewer choices mean fewer mistakes for users.
+
+### Maintenance
+
+If you've ever coded anything, this story might seem familiar to you. It's Friday evening, and you have an idea for a fun little improvement to your code. It seems like an easy feature to implement; you can practically see the code changes in your head. You have nothing better to do that evening, so you get to work. Three weeks later, you've implemented the feature, and all it took was a complete overhaul of your code.
+
+This is not an uncommon developer story. It happens because code changes can have unanticipated ripple effects that you just don't foresee before making the change. In other words, code is expensive. The more code you write, the more you have to maintain. The less code you write, the fewer bugs you have to hunt.
+
+### The eye of the beholder
+
+Most users customize their desktop with digital wallpaper. Beyond that, however, I expect most people use the desktop they've been given. So the desktop that GNOME and KDE developers provide is generally what people use, and in the end not just beauty but also the best workflow really are in the eye of the beholder.
+
+I fall into a particular work style when I'm using KDE, and a different style of work when I use GNOME. After all, things are arranged in different locations (although I keep my KDE panel at the top of my screen partly to mimic GNOME's design), and the file managers and the layout of my virtual workspaces are different.
+
+It's a luxury of open source to have arbitrary preferences for your tools. There's plenty to choose from, so you don't have to justify what you do or don't like about one desktop or another. If you try one and can't get used to it, you can always switch to the other.
+
+### Minimalism with Linux
+
+I used to think that it made sense to use a tool with 100 options because you can just ignore the 95 that you don't need and focus on the five that you do. The more I use GNOME, however, the more I understand the advantages of minimalism. Reduced design helps some users focus on what matters, it helps others avoid confusion and mistakes due to a complex user interface (UI), and it helps developers maintain quality code. And some people just happen to prefer it.
+
+There's a lesson here for users and developers alike, but it's not that one is better than the other. In fact, these principles apply to a lot more than just KDE and GNOME. User experience and developer experience are each important, and sometimes complexity is warranted while other times minimalism has the advantage.
+
+Image by: (Seth Kenlon, CC BY-SA 4.0)
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/6/kde-vs-gnome-linux-desktop
+
+作者:[Seth Kenlon][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/seth
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/rh_003499_01_linux31x_cc.png
+[2]: https://opensource.com/article/19/12/linux-kde-plasma
+[3]: https://opensource.com/article/19/12/gnome-linux-desktop
+[4]: https://opensource.com/sites/default/files/2022-05/kde-right-click.png
+[5]: https://opensource.com/sites/default/files/2022-05/gnome-right-click.png
+[6]: https://www.redhat.com/sysadmin/recover-file-deletion-linux#trash
diff --git a/sources/tech/20220601 What is Federated Learning-.md b/sources/tech/20220601 What is Federated Learning-.md
new file mode 100644
index 0000000000..1f66f8db42
--- /dev/null
+++ b/sources/tech/20220601 What is Federated Learning-.md
@@ -0,0 +1,60 @@
+[#]: subject: "What is Federated Learning?"
+[#]: via: "https://www.opensourceforu.com/2022/06/what-is-federated-learning/"
+[#]: author: "Aanchal Narendran https://www.opensourceforu.com/author/aanchal-narendran/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+What is Federated Learning?
+======
+Federated learning is a distributed machine learning approach for developing and training models on a global scale. This article introduces a few open source frameworks that help to explore it, which every newbie must know of.
+
+![Federated-Learning][1]
+
+Federated learning helps to develop and train models for distributed machine learning. Loosely translated, federation means a group of objects working towards the same common goal. In federated learning, the model is developed with the help of updates from a large group of devices, usually phones. Prior to the advent of federated learning, devices leveraging various artificial intelligence solutions sent repeated messages embedded with the data stored on the device. This led to two major bottlenecks:
+
+* Communication: Not all devices in question had constant Internet access. Moreover, the bandwidth was very often insufficient for such a transfer.
+* Privacy: Any third party actor with a malicious intent could figure out a way to access the data coming in from a consumer.
+
+To address all of this and much more, Google introduced federated learning. Originally built into the Google keyboard, it quickly piqued the interest of the research community. The benefits of federated learning are:
+
+* Leverages the on-device compute power of modern-day electronics
+* Protects the privacy of the customer with zero data transfers
+* Can function in a decentralised architecture to handle single-point failures
+* Trains over a high number of clients even with slow or low-quality Internet
+* Is robust and can handle client dropouts up to a threshold value
+
+Although federated learning was developed and visualised as an enterprise solution, there are quite a few open source frameworks that help you explore it even if you have access to a single desktop. Let’s take a quick look at them.
+
+### TensorFlow Federated
+
+TensorFlow is one of the most popular frameworks used for building machine learning and deep learning models. Its popularity is nestled in the ability to run TensorFlow models reliably on any device — from a custom server to a handheld IoT device — and its ease of integration and extensive support for tooling. TensorFlow Federated is an open source framework built to support research and development of machine learning models using federated learning on decentralised data. It allows developers and researchers to simulate existing model architectures as well as test novel architectures for federated learning. It has two main interfaces.
+
+*Federated Core API:* This is a programming environment for developing distributed computations. It serves as a foundation for the Federated Learning API and is used by systems researchers
+
+*Federated Learning API:* This high-level interface helps machine learning developers and researchers incorporate federated learning without having to look into the low-level details.
+
+Further documentation for this framework is available at *https://www.tensorflow.org/federated.*
+
+### PySyft + PyGrid
+
+PySyft is a Python library that aids in developing federated learning models for the purpose of research. It uses differential privacy and encrypted communications. It works in tandem with existing deep learning frameworks such as TensorFlow and PyTorch. However, PySyft alone isn’t sufficient to work on problems that involve communications over a network. This is where PyGrid comes in, as it helps to implement federated learning on a wide variety of devices and to deploy PySyft at scale.
+
+Further documentation is available at *https://github.com/OpenMined/PySyft.*
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/06/what-is-federated-learning/
+
+作者:[Aanchal Narendran][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/aanchal-narendran/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Federated-Learning.jpg
diff --git a/sources/tech/20220602 Creating a GitHub Action from Scratch.md b/sources/tech/20220602 Creating a GitHub Action from Scratch.md
new file mode 100644
index 0000000000..550971f29d
--- /dev/null
+++ b/sources/tech/20220602 Creating a GitHub Action from Scratch.md
@@ -0,0 +1,97 @@
+[#]: subject: "Creating a GitHub Action from Scratch"
+[#]: via: "https://www.opensourceforu.com/2022/06/creating-a-github-action-from-scratch/"
+[#]: author: "M.V. Karan https://www.opensourceforu.com/author/m-v-karan/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Creating a GitHub Action from Scratch
+======
+DevOps practices use automation to carry out repetitive tasks, leaving you free to focus on the more challenging but fun parts of building software. This article will explain how to use GitHub Actions, the automation platform baked into all GitHub projects for free.
+
+![Creating-a-GitHub-Action-from-Scratch-Featured-image][1]
+
+gitHub Actions makes it easy to automate all the software workflows that you see in your program — from code reviews, branch management and issue triaging, to even a complete CI/CD pipeline.
+
+GitHub Actions runs workflows when other events happen in your repository, such as when code is pushed, a pull request is opened or an issue is created. ‘Workflows’ are YAML specs that are defined within the .github/workflows directory in your repository. These workflows contain one or more ‘jobs’ that can be run sequentially or in parallel. Each job will run inside its own virtual machine ‘runner’ or inside a container. Each job has one or more steps that either run a script you define, or run an ‘action’ which is a reusable extension that can simplify your workflow. These actions can be either those that you create yourself, or use for free from the GitHub Marketplace. Figure 1 illustrates how all of this works together in accomplishing the automation that you need.
+
+![Figure 1: How GitHub Actions work][2]
+
+Let’s understand this better through an example that many of us might have seen in our CI pipelines — when code is pushed, create a build (Figure 2).
+
+![Figure 2: Example of push and build][3]
+
+In this example, the ‘event’ that happens in your repository is a ‘push’ event, and you need automation to create a build of your code. To accomplish this, you need to create a workflow YAML file within the .github/workflows directory, and define all the necessary components of jobs, runners and steps necessary for your build to take place.
+
+### Workflow files
+
+Let’s look at how to write workflows in YAML to define the automation that you need. Figure 3 gives an example of what a workflow file will look like, along with all the elements necessary.
+
+In this example, you can see the ‘on’ key that defines the event in your repository. On clicking this, the workflow is triggered to run automatically using GitHub Actions. Your workflow can have multiple triggers, and even add qualifiers to certain events (like triggering a workflow only when a push event occurs on the main branch).
+
+Followed by this is a ‘jobs’ key that defines all the jobs in the workflow, with a name for each job. In our example, there is only one job named ‘build’ that runs on its own virtual machine runner with the ubuntu-latest image as defined by the runs-on key.
+
+Within the job is a list of steps that need to run in sequence on the same virtual machine in order to accomplish the task of the job. In our example, these might be to do whatever is required in order to create a build.
+
+In Figure 3, the first step uses an ‘action’ from the GitHub Marketplace that does a check of the code; the next two steps run scripts within the shell of the virtual machine runner, and the last step runs a custom action that’s defined in the repository. You can use any combination of these scripts and actions necessary to accomplish the tasks for your job.
+
+![Figure 3: Example workflow file][4]
+
+### Why use GitHub Actions?
+
+GitHub Actions is native to GitHub and integrates well with the common software development workflows you might be familiar with on it. You can accomplish many of your automation needs solely with GitHub Actions, or even combine them with other tools to manage your workflows in a seamless way.
+
+Actions is independent of the language/framework that you use for your project, and you can use it to automate any of your workflows. Whether you want to run simple linting using JS libraries, create a distributable from your code, build a container image, or do anything else in between, you can accomplish it using GitHub Actions.
+
+Since workflow jobs run on virtual machine runners, you can run your workflows on Linux, macOS, Windows or even ARM. You can choose which architecture and OS you want for each of your jobs within your workflow, based on your own use case. These virtual machine runners can be hosted by GitHub, or you can even self-host them. Alternatively, you can choose to skip the virtual machine runner altogether and just run a container image when your workflow gets triggered.
+
+GitHub Actions is used by many developers, open source projects and businesses for their automation needs. If you check out various open source projects on GitHub, you might find that many of them are using Actions for their project management, CI/CD pipelines or other automations. There are more than 12,000 community-powered Actions extensions on the GitHub Marketplace that you can use readily within your own workflows and build on top of.
+
+Lastly, GitHub Actions is completely free for public repositories, and has free limits for private repositories as well.
+
+### Why build your own action?
+
+While there are thousands of actions available on the GitHub Marketplace that you could use, there could be scenarios where you might have to create your own action extension for use within your workflows.
+
+First, if you want to perform certain tasks or have some custom logic for which an action extension doesn’t already exist on the Marketplace, it is often useful to write your own action. This helps make your workflow modular, and also enables reuse and sharing within your teams, projects or organisations.
+
+Second, if you want to integrate GitHub and any other services/tools that you might use, you can do this easily by creating a GitHub Action that interacts with the APIs of those services/tools. This makes it easier for you to interact with other tools from within your workflows through GitHub Actions.
+
+One of the main benefits of GitHub Actions being native to GitHub is that it is accessible to the millions of developers using the latter. If an action that you create on your own can be used by other developers as well, you can publish it yourself for free on the GitHub Marketplace and make it available to everyone on GitHub.
+
+### How to build your own action
+
+An action has essentially two components (Figure 4). One is a YAML file called action.yml and the other is the source code of your action.
+
+![Figure 4: Components of your own GitHub Action][5]
+
+Let us look at what exactly these two components do.
+
+The*action.yml* file stores the metadata about the action you are building. It stores details like the name of the action, what are the inputs it needs and the outputs it delivers. It also defines whether the source code of the action is in JavaScript that can be run using Node12, or is a Docker image. It also contains information about where to find the JavaScript files or the Docker image to run the action.
+
+The source code part of your action contains the actual logic of it. This can be JavaScript files that can run using Node12, a Dockerfile that you are going to build when an action runs, or it can simply be a Docker image that you refer to. It will have access to the event payload that triggered the workflow and also the context of the workflow run through environment variables (ENV). You can easily call GitHub’s APIs or other APIs from within your source code as a part of your logic, to accomplish the action’s task.
+
+GitHub Actions lets you create your own actions using the millions of open source libraries accessible on GitHub, and allows you to write them in JavaScript or create a container action. It makes software workflow automation easy, which helps you be more productive and eases your development life cycle.
+
+You can automate various use cases by using GitHub Actions, including API management, code quality, support, chat, code review, publishing, deployment, localisation, continuous integration, learning, project management, monitoring, security, dependency management, and others.
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/06/creating-a-github-action-from-scratch/
+
+作者:[M.V. Karan][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/m-v-karan/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Creating-a-GitHub-Action-from-Scratch-Featured-image.jpg
+[2]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-1-How-GitHub-Actions-work.jpg
+[3]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-2-Example-of-push-and-build.jpg
+[4]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-3-Example-workflow-file.jpg
+[5]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-4-Components-of-your-own-GitHub-Action.jpg
diff --git a/sources/tech/20220602 Get started with Cadence, an open source workflow engine.md b/sources/tech/20220602 Get started with Cadence, an open source workflow engine.md
new file mode 100644
index 0000000000..935eb45c94
--- /dev/null
+++ b/sources/tech/20220602 Get started with Cadence, an open source workflow engine.md
@@ -0,0 +1,282 @@
+[#]: subject: "Get started with Cadence, an open source workflow engine"
+[#]: via: "https://opensource.com/article/22/6/cadence-open-source-workflow-engine"
+[#]: author: "Ben Slater https://opensource.com/users/ben-slater"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Get started with Cadence, an open source workflow engine
+======
+Cadence simplifies the complexity of distributed systems so that developers can focus on creating applications built for high durability, availability, and scalability.
+
+![Tips and gears turning][1]
+
+Image by: opensource.com
+
+Modern applications require complicated interactions between long-running business processes, internal services, and third-party APIs. To say it's been a challenge for developers is putting it mildly. Managing these processes means tracking complex states, preparing responses to asynchronous events, and communicating with often unreliable external dependencies.
+
+Developers typically take on these complex challenges with solutions that are just as convoluted, assembling unwieldy systems that leverage stateless services, databases, retry algorithms, and job scheduling queues. Because these complex systems obscure their own business logic, availability issues are common, often stemming from the application's dependence on scattered and unproven components. Developer productivity is regularly sacrificed to keep these sprawling, troubled systems from collapsing.
+
+### Designing a distributed application
+
+Cadence solves these issues by offering a highly scalable fault-oblivious code platform. Cadence abstracts away the usual challenges of implementing fault tolerance and durability with its fault oblivious code.
+
+A standard Cadence application includes a Cadence service, workflow, activity workers, and external clients. If needed, it's acceptable to co-locate the roles of workflow workers, activity workers, and external clients in a single application process.
+
+**Cadence Service**
+
+![Image of client application and Cadence service][2]
+
+Image by: (Ben Slater, CC BY-SA 4.0)
+
+Cadence is centered on its multi-tenant service and the high scalability it enables. A strongly typed [gRPC API][3] exposes all Cadence service functionality. A Cadence cluster can run multiple services on multiple nodes, including:
+
+* Front end: A stateless service that handles incoming worker requests, with instances backed by an external load balancer.
+* History service: Handles core logic for workflow steps and activity orchestration.
+* Matching service: Matches workflow or activity tasks with workers ready to complete them.
+* Internal worker service: Meets internal requirements (such as archiving) by introducing Cadence workflows and activities.
+* Workers: Function as Cadence client apps that execute user-created workflow and activity logic.
+
+By default, Cadence supports Apache Cassandra, MySQL, PostgreSQL, CockroachDB, and TiDB for use as persistence stores, as well as ElasticSearch and OpenSearch for listing workflows with complex predicates.
+
+Because the Cadence service is multi-tenant, a single service can serve one or many applications. A local Cadence service instance can be configured with docker-compose for local development. The Cadence service maintains workflow states, associated durable timers, and internal "task list" queues to send tasks to external workers.
+
+Beyond the Cadence service itself:
+
+* Workflow workers: hosts fault-oblivious code externally to the Cadence service. The Cadence service sends these workers "decision tasks." The workers deliver the tasks to the workflow code and communicate the completed "decisions" back to the Cadence service. Workflow code can be implemented in any language able to communicate with Cadence API: production-ready Java and Go clients are currently available.
+* Activity workers: hosts "activities", or code that perform application specific actions such as service calls, database record updates, and file downloads. Activities feature task routing to specific processes, heartbeats, infinite retries, and unlimited execution time. The Cadence service sends activity tasks to these workers, who complete them and report completion.
+* External clients: enable the creation of workflow instances, or "executions". External clients such as UIs, microservices or CLIs use the StartWorkflowExecution Cadence service API call to implement executions. External clients are also capable of notifying workflows about asynchronous external events, synchronous workflow state queries, waiting for synchronous workflow completion, workflow restarts, cancellation, and searching for specific workflows with List API.
+
+### Getting started with Cadence
+
+In this example we'll use the Cadence Java client. The client is [available from GitHub][4], and [JavaDoc documentation can be found here][5]. You can also check for the [latest release version][6].
+
+To begin, add *cadence-client* as a dependency to your *pom.xml* file like this:
+
+```
+
+ com.uber.cadence
+ cadence-client
+ LATEST.RELEASE.VERSION
+
+```
+
+Alternatively, you can use *build.gradle*:
+
+compile group: ‘com.uber.cadence', name: ‘cadence-client', version: ‘LATEST.RELEASE.VERSION'
+
+**Java Hello World with Cadence**
+
+The best way to get an idea of what Cadence is capable of is to try it, so here's a simple "Hello World" example you can try. First, add the [Cadence Java client dependency][7] to your Java project. Using Gradle, the dependency looks like this:
+
+compile group: ‘com.uber.cadence', name: ‘cadence-client', version: ‘'
+
+Add these dependencies that the cadence-client requires as well:
+
+compile group: ‘commons-configuration', name: ‘commons-configuration', version: ‘1.9'
+
+compile group: ‘ch.qos.logback', name: ‘logback-classic', version: ‘1.2.3'
+
+Then compile this code:
+
+```
+import com.uber.cadence.workflow.Workflow;
+import com.uber.cadence.workflow.WorkflowMethod;
+import org.slf4j.Logger;
+public class GettingStarted {
+ private static Logger logger = Workflow.getLogger(GettingStarted.class);
+
+ public interface HelloWorld {
+ @WorkflowMethod
+ void sayHello(String name);
+ }
+}
+```
+
+These [Cadence Java samples][8] are available to help if you encounter issues with the build files.
+
+Next, put this logback config file into your classpath:
+
+```
+
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
+
+```
+
+Now create the Hello World workflow. Add HelloWorldImpl with the sayHello method, which logs and returns "Hello …":
+
+```
+import com.uber.cadence.worker.Worker;
+import com.uber.cadence.workflow.Workflow;
+import com.uber.cadence.workflow.WorkflowMethod;
+import org.slf4j.Logger;
+public class GettingStarted {
+ private static Logger logger = Workflow.getLogger(GettingStarted.class);
+
+ public interface HelloWorld {
+ @WorkflowMethod
+ void sayHello(String name);
+ }
+
+ public static class HelloWorldImpl implements HelloWorld {
+ @Override
+ public void sayHello(String name) {
+ logger.info("Hello " + name + "!");
+ }
+ }
+}
+```
+
+Register the workflow implementation to the Cadence framework with a worker connected to a Cadence service. Workers will connect to a Cadence service running locally by default.
+
+```
+public static void main(String[] args) {
+ WorkflowClient workflowClient = WorkflowClient.newInstance(
+ new WorkflowServiceTChannel(ClientOptions.defaultInstance()),
+ WorkflowClientOptions.newBuilder().setDomain(DOMAIN).build()
+ );
+ // Get worker to poll the task list.
+ WorkerFactory factory = WorkerFactory.newInstance(workflowClient);
+ Worker worker = factory.newWorker(TASK_LIST);
+ worker.registerWorkflowImplementationTypes(HelloWorldImpl.class);
+ factory.start();
+}
+```
+
+Now you're ready to run the worker program. Here's an example log:
+
+```
+13:35:02.575 [main] INFO c.u.c.s.WorkflowServiceTChannel - Initialized TChannel for service cadence-frontend, LibraryVersion: 2.2.0, FeatureVersion: 1.0.0
+
+13:35:02.671 [main] INFO c.u.cadence.internal.worker.Poller - start(): Poller{options=PollerOptions{maximumPollRateIntervalMilliseconds=1000, maximumPollRatePerSecond=0.0, pollBackoffCoefficient=2.0, pollBackoffInitialInterval=PT0.2S, pollBackoffMaximumInterval=PT20S, pollThreadCount=1, pollThreadNamePrefix=‘Workflow Poller taskList="HelloWorldTaskList", domain="test-domain", type="workflow"'}, identity=45937@maxim-C02XD0AAJGH6}
+
+13:35:02.673 [main] INFO c.u.cadence.internal.worker.Poller - start(): Poller{options=PollerOptions{maximumPollRateIntervalMilliseconds=1000, maximumPollRatePerSecond=0.0, pollBackoffCoefficient=2.0, pollBackoffInitialInterval=PT0.2S, pollBackoffMaximumInterval=PT20S, pollThreadCount=1, pollThreadNamePrefix=‘null'}, identity=81b8d0ac-ff89-47e8-b842-3dd26337feea}
+```
+
+"Hello"'isn't printing, because the worker only hosts the workflow code. To execute the workflow, start it with the Cadence CLI:
+
+```
+$ docker run --network=host --rm ubercadence/cli:master --do test-domain workflow start --tasklist HelloWorldTaskList --workflow_type HelloWorld::sayHello --execution_timeout 3600 --input \"World\"
+Started Workflow Id: bcacfabd-9f9a-46ac-9b25-83bcea5d7fd7, run Id: e7c40431-8e23-485b-9649-e8f161219efe
+```
+
+Now the program gives this output:
+
+```
+13:35:02.575 [main] INFO c.u.c.s.WorkflowServiceTChannel - Initialized TChannel for service cadence-frontend, LibraryVersion: 2.2.0, FeatureVersion: 1.0.0
+
+13:35:02.671 [main] INFO c.u.cadence.internal.worker.Poller - start(): Poller{options=PollerOptions{maximumPollRateIntervalMilliseconds=1000, maximumPollRatePerSecond=0.0, pollBackoffCoefficient=2.0, pollBackoffInitialInterval=PT0.2S, pollBackoffMaximumInterval=PT20S, pollThreadCount=1, pollThreadNamePrefix=‘Workflow Poller taskList="HelloWorldTaskList", domain=“test-domain”, type="workflow"'}, identity=45937@maxim-C02XD0AAJGH6}
+
+13:35:02.673 [main] INFO c.u.cadence.internal.worker.Poller - start(): Poller{options=PollerOptions{maximumPollRateIntervalMilliseconds=1000, maximumPollRatePerSecond=0.0, pollBackoffCoefficient=2.0, pollBackoffInitialInterval=PT0.2S, pollBackoffMaximumInterval=PT20S, pollThreadCount=1, pollThreadNamePrefix=‘null'}, identity=81b8d0ac-ff89-47e8-b842-3dd26337feea}
+
+13:40:28.308 [workflow-root] INFO c.u.c.samples.hello.GettingStarted - Hello World!
+```
+
+Success! Now run this workflow execution:
+
+```
+$ docker run --network=host --rm ubercadence/cli:master --do test-domain workflow start --tasklist HelloWorldTaskList --workflow_type HelloWorld::sayHello --execution_timeout 3600 --input \"Cadence\"
+
+Started Workflow Id: d2083532-9c68-49ab-90e1-d960175377a7, run Id: 331bfa04-834b-45a7-861e-bcb9f6ddae3e
+```
+
+You should get this output:
+
+```
+13:35:02.575 [main] INFO c.u.c.s.WorkflowServiceTChannel - Initialized TChannel for service cadence-frontend, LibraryVersion: 2.2.0, FeatureVersion: 1.0.0
+
+13:35:02.671 [main] INFO c.u.cadence.internal.worker.Poller - start(): Poller{options=PollerOptions{maximumPollRateIntervalMilliseconds=1000, maximumPollRatePerSecond=0.0, pollBackoffCoefficient=2.0, pollBackoffInitialInterval=PT0.2S, pollBackoffMaximumInterval=PT20S, pollThreadCount=1, pollThreadNamePrefix=‘Workflow Poller taskList="HelloWorldTaskList", domain="test-domain", type="workflow"'}, identity=45937@maxim-C02XD0AAJGH6}
+
+13:35:02.673 [main] INFO c.u.cadence.internal.worker.Poller - start(): Poller{options=PollerOptions{maximumPollRateIntervalMilliseconds=1000, maximumPollRatePerSecond=0.0, pollBackoffCoefficient=2.0, pollBackoffInitialInterval=PT0.2S, pollBackoffMaximumInterval=PT20S, pollThreadCount=1, pollThreadNamePrefix=‘null'}, identity=81b8d0ac-ff89-47e8-b842-3dd26337feea}
+
+13:40:28.308 [workflow-root] INFO c.u.c.samples.hello.GettingStarted - Hello World!
+
+13:42:34.994 [workflow-root] INFO c.u.c.samples.hello.GettingStarted - Hello Cadence!
+```
+
+Lastly, use this CLI to list the workflow:
+
+```
+$ docker run --network=host --rm ubercadence/cli:master --do test-domain workflow list
+
+WORKFLOW TYPE | WORKFLOW ID | RUN ID | START TIME | EXECUTION TIME | END TIME
+
+HelloWorld::sayHello | d2083532-9c68-49ab-90e1-d960175377a7 | 331bfa04-834b-45a7-861e-bcb9f6ddae3e | 20:42:34 | 20:42:34 | 20:42:35
+
+HelloWorld::sayHello | bcacfabd-9f9a-46ac-9b25-83bcea5d7fd7 | e7c40431-8e23-485b-9649-e8f161219efe | 20:40:28 | 20:40:28 | 20:40:29
+```
+
+Look over the workflow execution history as well:
+
+```
+$ docker run --network=host --rm ubercadence/cli:master --do test-domain workflow showid 1965109f-607f-4b14-a5f2-24399a7b8fa7
+1 WorkflowExecutionStarted {WorkflowType:{Name:HelloWorld::sayHello},
+TaskList:{Name:HelloWorldTaskList},
+Input:["World"],
+ExecutionStartToCloseTimeoutSeconds:3600,
+TaskStartToCloseTimeoutSeconds:10,
+ContinuedFailureDetails:[],
+LastCompletionResult:[],
+Identity:cadence-cli@linuxkit-025000000001,
+Attempt:0,
+FirstDecisionTaskBackoffSeconds:0}
+2 DecisionTaskScheduled {TaskList:{Name:HelloWorldTaskList},
+StartToCloseTimeoutSeconds:10,
+Attempt:0}
+3 DecisionTaskStarted {ScheduledEventId:2,
+Identity:45937@maxim-C02XD0AAJGH6,
+RequestId:481a14e5-67a4-436e-9a23-7f7fb7f87ef3}
+4 DecisionTaskCompleted {ExecutionContext:[],
+ScheduledEventId:2,
+StartedEventId:3,
+Identity:45937@maxim-C02XD0AAJGH6}
+5 WorkflowExecutionCompleted {Result:[],
+DecisionTaskCompletedEventId:4}
+```
+
+It may be a simple workflow, but looking at the history is quite informative. The history's value as a troubleshooting, analytics, and compliance tool only increases with the complexity of the workflow. As a best practice, automatically archive the history to a long-term blob store when workflows complete.
+
+### Try Cadence
+
+Cadence offers transformative advantages for organizations and application development teams charged with creating and managing high-scale distributed applications built for high durability, availability, and scalability. Cadence is available to all as free and open source software, making it simple for teams to explore its capabilities and determine if Cadence is a strong fit for their organizations.
+
+Using Cadence is as simple as cloning the [Git repository for the Cadence server][9] or the [container image][10]. For more details on getting started, visit: [https://cadenceworkflow.io/docs/get-started/][11].
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/6/cadence-open-source-workflow-engine
+
+作者:[Ben Slater][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/ben-slater
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/gears_devops_learn_troubleshooting_lightbulb_tips_520.png
+[2]: https://opensource.com/sites/default/files/2022-05/cadence1.png
+[3]: https://github.com/uber/cadence-idl/tree/master/proto/uber/cadence/api/v1
+[4]: https://github.com/uber/cadence-java-client
+[5]: https://www.javadoc.io/doc/com.uber.cadence/cadence-client/latest/index.html
+[6]: https://github.com/uber/cadence-java-client/releases
+[7]: https://mvnrepository.com/artifact/com.uber.cadence/cadence-client
+[8]: https://github.com/uber/cadence-java-samples
+[9]: https://github.com/uber/cadence
+[10]: https://hub.docker.com/r/ubercadence/server
+[11]: https://cadenceworkflow.io/docs/get-started/
diff --git a/sources/tech/20220602 The only Linux command you need to know.md b/sources/tech/20220602 The only Linux command you need to know.md
new file mode 100644
index 0000000000..eb6364dd7f
--- /dev/null
+++ b/sources/tech/20220602 The only Linux command you need to know.md
@@ -0,0 +1,165 @@
+[#]: subject: "The only Linux command you need to know"
+[#]: via: "https://opensource.com/article/22/6/linux-cheat-command"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+The only Linux command you need to know
+======
+The Linux cheat command is a utility to search for and display a list of example tasks you might do with a command.
+
+![Command line prompt][1]
+
+Image by: Opensource.com
+
+Information about Linux and open source abounds on the internet, but when you're entrenched in your work there's often a need for quick documentation. Since the early days of Unix, well before Linux even existed, there's been the `man` (short for "manual") and `info` commands, both of which display official project documentation about commands, configuration files, system calls, and more.
+
+There's a debate over whether `man` and `info` pages are meant as helpful reminders for users who already know how to use a tool, or an intro for first time users. Either way, both `man` and `info` pages describe tools and how to use them, and rarely address specific tasks and how to accomplish them. It's for that very reason that the `cheat` command was developed.
+
+For instance, suppose you can't remember how to [unarchive a tar file][2]. The `man` page provides you with all the options you require, but it leaves it up to you to translate this information into a functional command:
+
+```
+tar -A [OPTIONS] ARCHIVE ARCHIVE
+tar -c [-f ARCHIVE] [OPTIONS] [FILE...]
+tar -d [-f ARCHIVE] [OPTIONS] [FILE...]
+tar -t [-f ARCHIVE] [OPTIONS] [MEMBER...]
+tar -r [-f ARCHIVE] [OPTIONS] [FILE...]
+tar -u [-f ARCHIVE] [OPTIONS] [FILE...]
+tar -x [-f ARCHIVE] [OPTIONS] [MEMBER...]
+```
+
+That's exactly what some users need, but it confounds other users. The cheat sheet for tar, by contrast, provides complete common commands:
+
+```
+$ cheat tar
+
+# To extract an uncompressed archive:
+tar -xvf /path/to/foo.tar
+
+# To extract a .tar in specified Directory:
+tar -xvf /path/to/foo.tar -C /path/to/destination/
+
+# To create an uncompressed archive:
+tar -cvf /path/to/foo.tar /path/to/foo/
+
+# To extract a .tgz or .tar.gz archive:
+tar -xzvf /path/to/foo.tgz
+tar -xzvf /path/to/foo.tar.gz
+[...]
+```
+
+It's exactly what you need, when you need it.
+
+### The Linux cheat command
+
+The `cheat` command is a utility to search for and display a list of example tasks you might do with a Linux command. As with many Unix commands, there are different implementations of the same concept, including one [written in Go][3] and one, which I help maintain, [written in just 100 lines of Bash][4].
+
+To install the Go version, download [the latest release][5] and put it somewhere in [your path][6], such as `~/.local/bin/` or `/usr/local/bin`. To install the Bash version, download the latest release and run the `install-cheat.sh` script:
+
+```
+$ sh ./install-cheat.sh
+```
+
+Or to configure the installation, use [Autotools][7]:
+
+```
+$ aclocal ; autoconf
+$ automake --add-missing ; autoreconf
+$ ./configure --prefix=$HOME/.local
+$ make
+$ make install
+```
+
+### Get cheat sheets for your Linux terminal
+
+Cheat sheets are just plain text files containing common commands. The main collection of cheat sheets is available at [Github.com/cheat/cheatsheets][8]. The Go version of cheat downloads cheatsheets for you when you first run the command. If you're using the Bash version of cheat, the `--fetch` option downloads cheatsheets for you:
+
+```
+$ cheat --fetch
+```
+
+As with `man` pages, you can have multiple collections of cheat sheets on your system. The Go version of cheat uses a [YAML][9] config file to define where each collection is located. The Bash version defines the path during the install, and by default downloads the [Github.com/cheat/cheatsheets][10] collection as well as [Opensource.com][11]'s own [Gitlab.com/opensource.com/cheatsheets][12] collection.
+
+### List cheat sheets
+
+To list the cheat sheets on your system, use the `--list` option:
+
+```
+$ cheat --list
+7z
+ab
+acl
+alias
+ansi
+ansible
+ansible-galaxy
+ansible-vault
+apk
+[...]
+```
+
+### View a Linux cheat sheet
+
+Viewing a cheat sheet is as easy as viewing a `man` or `info` page. Just provide the name of the command you need help with:
+
+```
+$ cheat alias
+
+# To show a list of your current shell aliases:
+alias
+
+# To alias `ls -l` to `ll`:
+alias ll='ls -l'
+```
+
+By default, the `cheat` command uses your environment's pager. Your pager is set with the `PAGER` [environment variable][13]. You can override that temporarily by redefining the `PAGER` variable before running the `cheat` command:
+
+```
+$ PAGER=most cheat less
+```
+
+If you just want to [cat][14] the cheat sheet into your terminal without a pager, the Bash version has a `--cat` option for convenience:
+
+```
+$ cheat --cat less
+```
+
+### It's not actually cheating
+
+The cheat system cuts to the chase. You don't have to piece together clues about how to use a command. You just follow the examples. Of course, for complex commands, it's not a shortcut for a thorough study of the actual documentation, but for quick reference, it's as fast as it gets.
+
+You can even create your own cheat sheet just by placing a file in one of the cheat sheet collections. Good news! Because the projects are open source, you can contribute your personal cheat sheets to the GitHub collection. And more good news! When there's a new Opensource.com [cheat sheet][15] release, we'll include a plain text version from now on so you can add that to your collection.
+
+The command is called `cheat`, but as any Linux user will assure you, it's not actually cheating. It's working smarter, the open source way.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/6/linux-cheat-command
+
+作者:[Seth Kenlon][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/seth
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/command_line_prompt.png
+[2]: https://opensource.com/article/17/7/how-unzip-targz-file
+[3]: https://github.com/cheat/cheat
+[4]: https://gitlab.com/slackermedia/cheat
+[5]: https://github.com/cheat/cheat/releases
+[6]: https://opensource.com/article/17/6/set-path-linux
+[7]: https://opensource.com/article/19/7/introduction-gnu-autotools
+[8]: https://github.com/cheat/cheatsheets
+[9]: https://opensource.com/article/21/9/yaml-cheat-sheet
+[10]: https://github.com/cheat/cheatsheets
+[11]: http://Opensource.com
+[12]: https://gitlab.com/opensource.com/cheatsheets
+[13]: https://opensource.com/article/19/8/what-are-environment-variables
+[14]: https://opensource.com/article/19/2/getting-started-cat-command
+[15]: https://opensource.com/downloads
diff --git a/sources/tech/20220603 Fedora Linux editions part 1- Official Editions.md b/sources/tech/20220603 Fedora Linux editions part 1- Official Editions.md
new file mode 100644
index 0000000000..1faefb4e9c
--- /dev/null
+++ b/sources/tech/20220603 Fedora Linux editions part 1- Official Editions.md
@@ -0,0 +1,81 @@
+[#]: subject: "Fedora Linux editions part 1: Official Editions"
+[#]: via: "https://fedoramagazine.org/fedora-linux-editions-part-1-official-editions/"
+[#]: author: "Arman Arisman https://fedoramagazine.org/author/armanwu/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Fedora Linux editions part 1: Official Editions
+======
+![Fedora Linux editions part 1 Official Editions][1]
+
+Photo by [Frédéric Perez][2] on [Unsplash][3]
+
+Fedora Linux provides several variants to meet your needs. You can find an overview of all the Fedora Linux variants in my previous article [Introduce the different Fedora Linux editions][4]. This article will go into a little more detail about the Fedora Linux official editions. There are five *editions* — Fedora Workstation, Fedora Server, Fedora IoT, Fedora CoreOS, and Fedora Silverblue. The Fedora Linux download page currently shows that three of these are *official* editions and the remaining two are *emerging* editions. This article will cover all five editions.
+
+### Fedora Workstation
+
+If you are a laptop or desktop computer user, then Fedora Workstation is the right operating system for you. Fedora workstation is very easy to use. You can use this for daily needs such as work, education, hobbies, and more. For example, you can use it to create documents, make presentations, surf the internet, manipulate images, edit videos, and many other things.
+
+This Fedora Linux edition comes with the GNOME Desktop Environment by default. You can work and do activities comfortably using this appearance concept. You can also customize the appearance of this Fedora Workstation according to your preferences, so you will be more comfortable using it. If you are a new Fedora Workstation user, you can read my previous article [Things to do after installing Fedora 34 Workstation][5]. Through the article, you will find it easier to start with Fedora Workstation.
+
+More information is available at this link: [https://getfedora.org/en/workstation/][6]
+
+### Fedora Server
+
+Many companies require their own servers to support their infrastructure. The Fedora Server edition operating system comes with a powerful web-based management interface called Cockpit that has a modern look. Cockpit enables you to easily view and monitor system performance and status.
+
+Fedora Server includes some of the latest technology in the open source world and it is backed by an active community. It is very stable and reliable. However, there is no *guarantee* that anyone from the Fedora community will be available or able to help if you encounter problems. If you are running mission critical applications and you might require technical support, you might want to consider [Red Hat Enterprise Linux][7] instead.
+
+More information is available at this link: [https://getfedora.org/en][8][/server/][9]
+
+### Fedora IoT
+
+Operating systems designed specifically for IoT devices have become popular. Fedora IoT is an operating system created in response to this. Fedora IoT is an immutable operating system that uses OSTree Technology with atomic updates. This operating system focuses on security which is very important for IoT devices. Fedora IoT has support for multiple architectures. It also comes with a web-based configuration console so that it can be configured remotely without requiring that a keyboard, mouse or monitor be physically connected to the device.
+
+More information is available at this link: [https://getfedora.org/en/iot/][10]
+
+### Fedora CoreOS
+
+Fedora CoreOS is a container-focused operating system. This operating system is used to run applications safely and reliably in any environment. It is designed for clusters but can also be run as a standalone system. This operating system has high compatibility with Linux Container configurations.
+
+More information is available at this link: [https://getfedora.org/en/coreos/][11]
+
+### Fedora Silverblue
+
+This edition is a variant of Fedora Workstation with an interface that is not much different. However, the difference is that Fedora Silverblue is an immutable operating system with a container-centric workflow. This means that each installation is exactly the same as another installation of the same version. The goal is to make it more stable, less prone to bugs, and easier to test and develop.
+
+More information is available at this link: [https://silverblue.fedoraproject.org/][12]
+
+### Conclusion
+
+Each edition of Fedora Linux has a different purpose. The availability of several editions can help you to get an operating system that suits your needs. The Fedora Linux editions discussed in this article are the operating systems available on the main download page for Fedora Linux. You can find download links and more complete documentation at [https://getfedora.org/][13].
+
+--------------------------------------------------------------------------------
+
+via: https://fedoramagazine.org/fedora-linux-editions-part-1-official-editions/
+
+作者:[Arman Arisman][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://fedoramagazine.org/author/armanwu/
+[b]: https://github.com/lkxed
+[1]: https://fedoramagazine.org/wp-content/uploads/2022/04/FedoraMagz-FedoraEditions-1-Official-816x345.png
+[2]: https://unsplash.com/@fredericp?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
+[3]: https://unsplash.com/s/photos/blue-abstract?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
+[4]: https://fedoramagazine.org/introduce-the-different-fedora-linux-editions/
+[5]: https://fedoramagazine.org/things-to-do-after-installing-fedora-34-workstation/
+[6]: https://getfedora.org/en/workstation/
+[7]: https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux
+[8]: https://getfedora.org/en/server/
+[9]: https://getfedora.org/en/server/
+[10]: https://getfedora.org/en/iot/
+[11]: https://getfedora.org/en/coreos?stream=stable
+[12]: https://silverblue.fedoraproject.org/
+[13]: https://getfedora.org/
diff --git a/sources/tech/20220603 How static linking works on Linux.md b/sources/tech/20220603 How static linking works on Linux.md
new file mode 100644
index 0000000000..00136f9851
--- /dev/null
+++ b/sources/tech/20220603 How static linking works on Linux.md
@@ -0,0 +1,217 @@
+[#]: subject: "How static linking works on Linux"
+[#]: via: "https://opensource.com/article/22/6/static-linking-linux"
+[#]: author: "Jayashree Huttanagoudar https://opensource.com/users/jayashree-huttanagoudar"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+How static linking works on Linux
+======
+Learn how to combine multiple C object files into a single executable with static libraries.
+
+![Woman using laptop concentrating][1]
+
+Image by Mapbox Uncharted ERG, [CC-BY 3.0 US][2]
+
+Code for applications written using C usually has multiple source files, but ultimately you will need to compile them into a single executable.
+
+You can do this in two ways: by creating a static library or a dynamic library (also called a shared library). These two types of libraries vary in terms of how they are created and linked. Your choice of which to use depends on your use case.
+
+In a [previous article][3], I demonstrated how to create a dynamically linked executable, which is the more commonly used method. In this article, I explain how to create a statically linked executable.
+
+### Using a linker with static libraries
+
+A linker is a command that combines several pieces of a program together and reorganizes the memory allocation for them.
+
+The functions of a linker include:
+
+* Integrating all the pieces of a program
+* Figuring out a new memory organization so that all the pieces fit together
+* Reviving addresses so that the program can run under the new memory organization
+* Resolving symbolic references
+
+As a result of all these linker functionalities, a runnable program called an executable is created.
+
+Static libraries are created by copying all necessary library modules used in a program into the final executable image. The linker links static libraries as a last step in the compilation process. An executable is created by resolving external references, combining the library routines with program code.
+
+### Create the object files
+
+Here's an example of a static library, along with the linking process. First, create the header file `mymath.h` with these function signatures:
+
+```
+int add(int a, int b);
+int sub(int a, int b);
+int mult(int a, int b);
+int divi(int a, int b);
+```
+
+Create `add.c`, `sub.c` , `mult.c` and `divi.c` with these function definitions:
+
+```
+// add.c
+int add(int a, int b){
+return (a+b);
+}
+
+//sub.c
+int sub(int a, int b){
+return (a-b);
+}
+
+//mult.c
+int mult(int a, int b){
+return (a*b);
+}
+
+//divi.c
+int divi(int a, int b){
+return (a/b);
+}
+```
+
+Now generate object files `add.o`, `sub.o`, `mult.o`, and `divi.o` using GCC:
+
+```
+$ gcc -c add.c sub.c mult.c divi.c
+```
+
+The `-c` option skips the linking step and creates only object files.
+
+Create a static library called `libmymath.a`, then remove the object files, as they're no longer required. (Note that using a `trash` [command][4] is safer than `rm`.)
+
+```
+$ ar rs libmymath.a add.o sub.o mult.o divi.o
+$ trash *.o
+$ ls
+add.c divi.c libmymath.a mult.c mymath.h sub.c
+```
+
+You have now created a simple example math library called `libmymath`, which you can use in C code. There are, of course, very complex C libraries out there, and this is the process their developers use to generate the final product that you and I install for use in C code.
+
+Next, use your math library in some custom code and then link it.
+
+### Create a statically linked application
+
+Suppose you've written a command for mathematics. Create a file called `mathDemo.c` and paste this code into it:
+
+```
+#include
+#include
+#include
+
+int main()
+{
+ int x, y;
+ printf("Enter two numbers\n");
+ scanf("%d%d",&x,&y);
+
+ printf("\n%d + %d = %d", x, y, add(x, y));
+ printf("\n%d - %d = %d", x, y, sub(x, y));
+ printf("\n%d * %d = %d", x, y, mult(x, y));
+
+ if(y==0){
+ printf("\nDenominator is zero so can't perform division\n");
+ exit(0);
+ }else{
+ printf("\n%d / %d = %d\n", x, y, divi(x, y));
+ return 0;
+ }
+}
+```
+
+Notice that the first line is an `include` statement referencing, by name, your own `libmymath` library.
+
+Create an object file called `mathDemo.o` for `mathDemo.c` :
+
+```
+$ gcc -I . -c mathDemo.c
+```
+
+The `-I` option tells GCC to search for header files listed after it. In this case, you're specifying the current directory, represented by a single dot (`.` ).
+
+Link `mathDemo.o` with `libmymath.a` to create the final executable. There are two ways to express this to GCC.
+
+You can point to the files:
+
+```
+$ gcc -static -o mathDemo mathDemo.o libmymath.a
+```
+
+Alternately, you can specify the library path along with the library name:
+
+```
+$ gcc -static -o mathDemo -L . mathDemo.o -lmymath
+```
+
+In the latter example, the `-lmymath` option tells the linker to link the object files present in the `libmymath.a` with the object file `mathDemo.o` to create the final executable. The `-L` option directs the linker to look for libraries in the following argument (similar to what you would do with `-I` ).
+
+### Analyzing the result
+
+Confirm that it's statically linked using the `file` command:
+
+```
+$ file mathDemo
+mathDemo: ELF 64-bit LSB executable, x86-64...
+statically linked, with debug_info, not stripped
+```
+
+Using the `ldd` command, you can see that the executable is not dynamically linked:
+
+```
+$ ldd ./mathDemo
+ not a dynamic executable
+```
+
+You can also check the size of the `mathDemo` executable:
+
+```
+$ du -h ./mathDemo
+932K ./mathDemo
+```
+
+In the example from my [previous article][5], the dynamic executable took up just 24K.
+
+Run the command to see it work:
+
+```
+$ ./mathDemo
+Enter two numbers
+10
+5
+
+10 + 5 = 15
+10 - 5 = 5
+10 * 5 = 50
+10 / 5 = 2
+```
+
+Looks good!
+
+### When to use static linking
+
+Dynamically linked executables are generally preferred over statically linked executables because dynamic linking keeps an application's components modular. Should a library receive a critical security update, it can be easily patched because it exists outside of the applications that use it.
+
+When you use static linking, a library's code gets "hidden" within the executable you create, meaning the only way to patch it is to re-compile and re-release a new executable every time a library gets an update—and you have better things to do with your time, trust me.
+
+However, static linking is a reasonable option if the code of a library exists either in the same code base as the executable using it or in specialized embedded devices that are expected to receive no updates.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/6/static-linking-linux
+
+作者:[Jayashree Huttanagoudar][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/jayashree-huttanagoudar
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/lenovo-thinkpad-laptop-concentration-focus-windows-office.png
+[2]: https://creativecommons.org/licenses/by/3.0/us/
+[3]: https://opensource.com/article/22/5/dynamic-linking-modular-libraries-linux
+[4]: https://www.redhat.com/sysadmin/recover-file-deletion-linux
+[5]: https://opensource.com/article/22/5/dynamic-linking-modular-libraries-linux
diff --git a/sources/tech/20220603 How to Install FFmpeg in Ubuntu and Other Linux.md b/sources/tech/20220603 How to Install FFmpeg in Ubuntu and Other Linux.md
new file mode 100644
index 0000000000..6713d0f60f
--- /dev/null
+++ b/sources/tech/20220603 How to Install FFmpeg in Ubuntu and Other Linux.md
@@ -0,0 +1,163 @@
+[#]: subject: "How to Install FFmpeg in Ubuntu and Other Linux"
+[#]: via: "https://www.debugpoint.com/2022/06/install-ffmpeg-ubuntu/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+How to Install FFmpeg in Ubuntu and Other Linux
+======
+This tutorial outlines the steps required to install FFmpeg in Ubuntu and Other Linux systems.
+
+The ffmpeg is a collection library and software program to manipulate multimedia files. The entire ffmpeg is a robust set of libraries that allows you to convert, stream, and manipulate audio and video files. Many frontend Linux applications use it as backend hence depends on it. For example, a screen recording application may need ffmpeg to convert recorded streams to gif images.
+
+Popular applications and services that use FFmpeg are VLC Media Player, YouTube, Blender, Kodi, Shotcut, and Handbrake – to name a few.
+
+Fun fact: NASA’s Mars 2020 mission rover Perseverance used FFmpeg to complete and process images and video before beaming back to Earth!
+
+### About ffmpeg package
+
+The [ffmpeg][1] itself is a powerful program as a command-line utility. It is available for Linux, Windows, and macOS and supports many architectures. It is written in C and Assembly, providing extensive performance and a cross-platform utility.
+
+#### The Core
+
+The core of ffmpeg is the command-line utility or programs. They can be used on the command line or called from any programming language. For example, you can use these from your shell program, python script, etc.
+
+* ffmpeg: Used to convert audio and video streams, including sources from LIVE streams such as TV cards
+* ffplay: Media player bundled in this package to play media
+* ffprobe: Command line tool to show media information – can output as txtm csv, xml, json formats
+
+### FFmpeg Installation
+
+Installing FFmpeg is easy in Ubuntu and other Linux distributions. Open a terminal prompt and run the following commands to install.
+
+#### Ubuntu and similar distro
+
+```
+sudo apt install ffmpeg
+```
+
+#### Fedora
+
+For Fedora Linux, you need to add the [RPM Fusion repo][2] for FFmpeg. The official Fedora repo doesn’t have the FFmpeg package.
+
+```
+sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
+```
+
+```
+sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-
+```
+
+```
+sudo dnf install ffmpeg
+```
+
+#### Arch Linux
+
+```
+pacman -S ffmpeg
+```
+
+After the successful installation, you can verify the installation using the below command.
+
+```
+ffmpeg --version
+```
+
+![FFmpeg installed in Ubuntu Linux][3]
+
+### Example: How to do basic tasks using ffmpeg
+
+First, let me give you a simple example of the basic syntax. Consider the following example. It simply converts an mp4 file to mkv file.
+
+1. Convert a basic video file
+
+```
+ffmpeg -i big_buck_bunny.mp4 big_buck_bunny.mkv
+```
+
+Of course, this is the easiest method, but it’s not complete because it doesn’t have the bit rate, resolution and other attributes of the video file required for the conversion.
+
+1. Convert an audio file
+
+Secondly, you can convert an audio file using a similar command.
+
+```
+ffmpeg -i sunny_day.ogg sunny_day.mp3
+```
+
+1. Convert with an audio and video codec
+
+Finally, the following example can convert a video file using specified codecs. The parameter `-c` with `a` or `v` defines audio and video, respectively. The below command uses `libvpx` video and `libvorbis` audio codec for conversion.
+
+```
+ffmpeg -i big_buck_bunny.mp4 -c:v libvpx -c:a libvorbis big_buck_bunny.webm
+```
+
+### How to find out about the available codecs, encoders and decoders in your system?
+
+#### List all codecs
+
+To list all the codecs available, run the below command.
+
+```
+ffmpeg -codecs
+```
+
+This command lists all the codecs available with their capability, whether they support decoding or encoding, etc. Moreover, they are identified with the position as per the below table.
+
+```
+D..... = Decoding supported.E.... = Encoding supported..V... = Video codec..A... = Audio codec..S... = Subtitle codec...I.. = Intra frame-only codec....L. = Lossy compression.....S = Lossless compression
+```
+
+![FFmpeg Codec list][4]
+
+#### List all encoders
+
+Listing all the encoders is accessible via the below command.
+
+```
+ffmpeg -encoders
+```
+
+#### List all decoders
+
+Similarly, the decoders list you can get via the below command.
+
+```
+ffmpeg -decoders
+```
+
+#### Details
+
+You can also get more details about the encoders or decoders using the parameter -h.
+
+```
+ffmpeg -h decoder=mp3
+```
+
+### Summary
+
+I hope you learned the basics of FFmpeg and its commands. You can learn more about the program via the official [documentation][5].
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/06/install-ffmpeg-ubuntu/
+
+作者:[Arindam][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.debugpoint.com/author/admin1/
+[b]: https://github.com/lkxed
+[1]: https://ffmpeg.org/
+[2]: https://www.debugpoint.com/2020/07/enable-rpm-fusion-fedora-rhel-centos/
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/06/FFmpeg-installed-in-Ubuntu-Linux.jpg
+[4]: https://www.debugpoint.com/wp-content/uploads/2022/06/FFmpeg-Codec-list.jpg
+[5]: https://ffmpeg.org/documentation.html
diff --git a/sources/tech/20220603 Kubecost Releases Open Source Project To Rein in K8s Costs.md b/sources/tech/20220603 Kubecost Releases Open Source Project To Rein in K8s Costs.md
new file mode 100644
index 0000000000..7bdbaf04df
--- /dev/null
+++ b/sources/tech/20220603 Kubecost Releases Open Source Project To Rein in K8s Costs.md
@@ -0,0 +1,41 @@
+[#]: subject: "Kubecost Releases Open Source Project To Rein in K8s Costs"
+[#]: via: "https://www.opensourceforu.com/2022/06/kubecost-releases-open-source-project-to-rein-in-k8s-costs/"
+[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Kubecost Releases Open Source Project To Rein in K8s Costs
+======
+![Hybrid-Cloud-Optimization][1]
+
+Kubecost’s tool for monitoring and optimizing spending on Kubernetes clusters has been released as an open source project. OpenCost is now available as open source software, according to Alex Thilen, head of business development at Kubecost, and the company has already submitted it to the Cloud Native Computing Foundation (CNCF) for approval as a sandbox-level project. Adobe, Armory, Amazon Web Services (AWS), D2iQ, Google, Mincurv, New Relic, and SUSE are among the project’s founding members, in addition to Kubecost.
+
+Stackwatch created Kubecost in the beginning. Kubecost later raised $25 million to develop tools and applications on top of what is now OpenCost. Although OpenCost is designed to run within a Kubernetes cluster, no data is sent outside of the cluster without user permission. It can collect data in real-time after only a few minutes of installation.
+
+The primary issue addressed by OpenCost is overprovisioning of Kubernetes infrastructure. Many developers will overprovision infrastructure to ensure maximum application performance. The problem is that much of that infrastructure will go unused; costs will rise steadily as each new Kubernetes cluster is provisioned. According to Kubecost, organisations can cut Kubernetes-related cloud spending by 60–80 percent without sacrificing application performance.
+
+Of course, many enterprise IT departments will have signed contracts with cloud service providers that guarantee discounted pricing if a certain number of workloads are run per month. To reduce overall costs, many IT organisations prefer to continuously monitor pricing offered by multiple cloud service providers. Regardless of approach, interest in cost containment is growing as the percentage of workloads running on cloud platforms grows.
+
+As the percentage of workloads running on Kubernetes clusters grows, it is more likely that those platforms will be managed centrally by an IT operations team. These teams are graded based on how well they optimise cloud infrastructure usage. These teams must also demonstrate to development teams how much Kubernetes infrastructure is consumed by individual applications.
+
+According to Thilen, changing economic conditions mean that there is a lot more emphasis on cost control today than there was just a few months ago. Finance teams, in particular, are asking tougher questions about IT spending than they did at the start of the COVID-19 pandemic, when the primary focus was shifting as many workloads as possible to the cloud.
+
+According to Thilen, the primary issue that organisations face in controlling cloud costs is a lack of visibility, which OpenCost can provide. It’s unclear when Kubernetes cost controls will be ubiquitously included in every management tool, but the existence of OpenCost suggests that it’s now a matter of when rather than if those tools will become much more accessible.
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/06/kubecost-releases-open-source-project-to-rein-in-k8s-costs/
+
+作者:[Laveesh Kocher][a]
+选题:[lkxed][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.opensourceforu.com/author/laveesh-kocher/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/06/Hybrid-Cloud-Optimization-e1654241448205.png
diff --git a/sources/tech/20220603 Red Hat Tests The -NVK- Nouveau Open Source Vulkan Driver.md b/sources/tech/20220603 Red Hat Tests The -NVK- Nouveau Open Source Vulkan Driver.md
new file mode 100644
index 0000000000..413df8c877
--- /dev/null
+++ b/sources/tech/20220603 Red Hat Tests The -NVK- Nouveau Open Source Vulkan Driver.md
@@ -0,0 +1,38 @@
+[#]: subject: "Red Hat Tests The “NVK” Nouveau Open Source Vulkan Driver"
+[#]: via: "https://www.opensourceforu.com/2022/06/red-hat-tests-the-nvk-nouveau-open-source-vulkan-driver/"
+[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Red Hat Tests The “NVK” Nouveau Open Source Vulkan Driver
+======
+![red-hat][1]
+
+Following the recent news about Nouveau reorganising code to allow their shader compiler to be used outside of Nouveau Gallium3D, Red Hat’s Karol Herbst, a longtime Nouveau developer, has been posting patches for his new “NVK” Nouveau Vulkan driver effort.
+
+NVK is a brand-new, yet-to-be-merged open source Vulkan driver for NVIDIA graphics hardware. This is a Mesa-based driver that is currently being worked on primarily by Karol Herbst, who joined Red Hat several years ago and has since continued to work heavily on Mesa, including in the areas of OpenCL compute and other features. Aside from NVK, he has recently begun working on Rusticl, a Rust-based OpenCL implementation for Mesa.
+
+Jason Ekstrand of Collabora, as well as David Airlie of Red Hat, have been making early contributions to NVK. NVK can at least run vulkaninfo, but it is still a work in progress, with the initial code only being committed two weeks ago.
+
+Aside from performance issues with newer generations of NVIDIA graphics cards, the lack of an open source NVIDIA Vulkan driver has been a major roadblock, given that most Linux games these days are Vulkan-native, and even Steam Play is mostly Vulkan with VKD3D-Proton/DXVK.
+
+This NVK driver will most likely be updated in the future to support the open source NVIDIA kernel driver as an alternative to the Nouveau DRM driver. The original NVK open source Vulkan driver code is available on [Nouveau’s GitLab repository][2].
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/06/red-hat-tests-the-nvk-nouveau-open-source-vulkan-driver/
+
+作者:[Laveesh Kocher][a]
+选题:[lkxed][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.opensourceforu.com/author/laveesh-kocher/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/06/red-hat-e1654256924226.jpg
+[2]: https://gitlab.freedesktop.org/nouveau/mesa/-/commits/nouveau/vk/
diff --git a/sources/tech/20220603 Simplifying Cloud Native Development with Skaffold.md b/sources/tech/20220603 Simplifying Cloud Native Development with Skaffold.md
new file mode 100644
index 0000000000..c488316426
--- /dev/null
+++ b/sources/tech/20220603 Simplifying Cloud Native Development with Skaffold.md
@@ -0,0 +1,91 @@
+[#]: subject: "Simplifying Cloud Native Development with Skaffold"
+[#]: via: "https://www.opensourceforu.com/2022/06/simplifying-cloud-native-development-with-skaffold/"
+[#]: author: "Romin Irani https://www.opensourceforu.com/author/romin-irani/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Simplifying Cloud Native Development with Skaffold
+======
+The successful rollout of an application entails several essential steps. If the developer misses any of these in the development stage, it could make the application susceptible to problems later, leading to rework and wastage of the developer’s time. Skaffold automates these steps and assists developers in a hassle-free rollout of their applications.
+
+![developer-working-on-Cloud-computing][1]
+
+In a developer’s workflow, a wide variety of changes are first made to the code. Then container images are built, which are pushed to a registry till the application is eventually deployed. This entire process can entail a lot of inefficiencies. This is where Skaffold comes in – it helps to manage the developer workflow.
+
+### Understanding the developer workflow
+
+This is what the developer workflow looks like.
+
+* Code changes: The first step simply involves changing the code. While you are working on your code, you will simply make changes to it as per your own requirements and save it.
+* Containerise: Once you are done making changes to your code, you will containerise it to see it actually work. You may use Docker and a build command to make a sample Docker file, then use that file to build the Docker image, and tag that image with a specific version.
+* Push: After you have containerised the image, you are supposed to push it into a registry.
+* Deploy: If you have got a Kubernetes deployment YAML, you can apply it to the particular environment of the Kubernetes cluster that you are pointing to, using the kubectl command that you can see in Figure 1. Once that is done, your application will be deployed.
+
+![Figure 1: kubectl command is initiated][2]
+
+* Connect and view logs: The next thing is to check if everything is working or not. So you will connect to that particular cluster, check the pod forwarding, and then stream the logs to see if everything is working well or not.
+
+All in all, you will have to keep repeating the same steps as per the number of changes you make and the number of changes you want to look at. So we now need a tool like Skaffold that can detect the activities that are common in nature, and automate and take care of these behind the scenes. Let us understand this from a developer workflow perspective.
+
+### Automating common activities
+
+In Figure 2, you can see some key activities marked in green that developers care about – things like coding and configuring the application to make it run. Marked in red are the things that they hope will just get done automatically by a tool to avoid the repetitive work that they are doing as part of the developer workflow. Skaffold allows developers to work on what they care about and takes care of the rest of the things.
+
+![Figure 2: Steps in the development process][3]
+
+Skaffold’s end-to-end development pipelines are as follows.
+
+* $ skaffold dev: Whenever you make a change to your code, the dev cycle automatically gets activated.
+* $ skaffold run: Run allows you to run your particular application.
+* $ skaffold debug: As the name suggests, debug helps in debugging a particular application that you want as a part of this process.
+
+Once Skaffold has sensed the changes being made to the code and to the application’s configuration, it will perform all the steps — building the code, filling the containers, pushing it to the registry, applying any configuration deployment and bringing the pods up on its own. It will then stream the logs to you so you can actually see that. It is capable of working with various clusters and registries.
+
+### A demo
+
+Here we have got a very straightforward go file (Figure 3). This file contains one main file and one main function, and it is printing out ‘Hello Skaffold’.
+
+![Figure 3: main.go][4]
+
+In the same folder, we have got a Dockerfile that you can see in Figure 4. This is a multi-staged Dockerfile. We are essentially just creating an executable for this file in the app, and in the next step we are going to set the default command to run when the container is up, which will in turn generate the output file. This is from a build perspective, as Skaffold really knows what it is supposed to build.
+
+![Figure 4: Folder consisting of Dockerfile][5]
+
+In the pod.yaml file (Figure 5), it is just stated that the image that is needed to be created is Skaffold-example. The Skaffold.yaml file will also show you the image that is needed to be built along with the deployment steps. All these steps will let Skaffold pretty much understand and detect the configuration.
+
+![Figure 5: k8s-pod.yaml][6]
+
+In Figure 6, you can see that in the terminal inside the demo folder we have the Skaffold.yaml files, the k8s-pod.yaml and the main.go. Since the Skaffold tool is already installed as part of Google Cloud Shell, on typing $skaffold config list you can see (Figure 7) that the current cube context is set to that demo cluster, and the default-repo is also set to the Google container registry.
+
+![Figure 6: Inside the Cloud Shell terminal][7]
+
+Now, we have a folder in which we have got our configuration file. All we need to do is run the developer end-to-end pipeline in Skaffold by using the $skaffold dev command. It will build everything up for the first time, and will begin with the deployment process. It will then provide you the relevant output and will wait for the code changes as well.
+
+![Figure 7: ‘$skaffold config list’ command is applied in the terminal][8]
+
+Skaffold is just like any other command-line tool that can be deployed on your machine or any other server that you desire; it comes preconfigured with Google Cloud Shell. All in all, Skaffold can automate a lot of steps that you would need to go through manually otherwise. Automating these steps will not only save time so that you can focus on other important things, but also make the application less prone to unwanted bugs and errors.
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/06/simplifying-cloud-native-development-with-skaffold/
+
+作者:[Romin Irani][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/romin-irani/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/04/developer-working-on-Cloud-computing.jpg
+[2]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-1-kubectl-command-initiated.jpg
+[3]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-2-Steps-in-the-development-process.jpg
+[4]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-3-main.go_.jpg
+[5]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-4-Folder-consisting-of-Dockerfile-1.jpg
+[6]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-5-k8s-pod.yaml_-2.jpg
+[7]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-6-Inside-the-Cloud-Shell-terminal.jpg
+[8]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-7-‘skaffold-config-list-command-is-applied-in-the-terminal-1.jpg
diff --git a/sources/tech/20220603 Titan Linux- A Blend of Debian Stable and KDE Plasma.md b/sources/tech/20220603 Titan Linux- A Blend of Debian Stable and KDE Plasma.md
new file mode 100644
index 0000000000..31f46dc899
--- /dev/null
+++ b/sources/tech/20220603 Titan Linux- A Blend of Debian Stable and KDE Plasma.md
@@ -0,0 +1,127 @@
+[#]: subject: "Titan Linux: A Blend of Debian Stable and KDE Plasma"
+[#]: via: "https://www.debugpoint.com/2022/06/titan-linux-review-2022/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Titan Linux: A Blend of Debian Stable and KDE Plasma
+======
+We review the Titan Linux – a rising star in the Linux distro space and bring Debian stable with KDE Plasma flavour with its unique tools.
+
+### Titan Linux – What does it offer?
+
+Titan Linux is a Debian-stable based Linux distribution which features the KDE Plasma desktop. It is a fairly new distribution which aspires to be user friendly and minimal distribution. Developed by a two-member team, Titan Linux brings a unique experience to Debian’s experience by eliminating several packages and giving out of the box hardware support.
+
+Moreover, it uses a different installer than what Debian uses and brings some nifty in-house utilities.
+
+![Titan Linux Desktop][1]
+
+### Titan Linux Review – 2022
+
+#### Download and Installation
+
+This review is based on the latest stable release of Titan Linux 1.2.1 “Cronus” Stable bases on [Debian 11 bullseye][2].
+
+There are no problems while downloading this distro via its torrents. Many budding distros don’t do well while providing download options – such as no server bandwidth, no torrent etc. However, the torrent speed was good, and the ISO of 2.5GB took a reasonable time to download.
+
+Let’s talk about the installation.
+
+First, the LIVE desktop gives you a shortcut to kick off the installer. The installer that Titan Linux uses is Calamares. It is not [Debian’s own graphical installer][3]. This is one of the significant advantages of using the popular Calamares for Debian. The installer is configured in a simple manner and should not be a problem for new users or advanced users.
+
+Second, the Calamares installer took around 4 minutes to install on average in both physical and virtual systems. After the installation is complete, the Grub is well configured, and I can boot into the desktop.
+
+#### Look and Feel
+
+Firstly, the desktop gives you a slightly different feel from a KDE Plasma desktop because of the dark colour palette and a somewhat different application menu. In addition, the Dragon Icons and cursors go well with its “Titan” themed desktop look.
+
+Second, the application menu is the [legacy KDE Plasma kick off][4], which gives you easy access to the applications and system settings.
+
+In addition, System Settings uses an alternative view than the traditional Plasma system settings. If you are a long term KDE Plasma user, you may feel a little different with these two subtle changes in this desktop.
+
+Other than that, a nice set of wallpapers will help you further customize your desktop. And finally, the bottom main taskbar is almost the same as the standard Plasma desktop.
+
+![The KDE Plasma kick off menu shows a legacy view][5]
+
+![System Settings in Titan Linux][6]
+
+#### Applications
+
+Firstly, the application list is more customized than the KDE Plasma desktop apps. A set of different and lightweight applications that gives a lightweight feel.
+
+Secondly, it is wise for the developers of this distro not to use the KDE Applications but instead use some of the traditional lightweight replacements.
+
+For example, instead of the KWiter text editor, you get the Featherpad text editor. However, the file manager is Dolphin from KDE Applications. The Gwenview is replaced by the LXImage image viewer from the LXQt desktop.
+
+Moreover, an exciting addition is the Titan Toolbox. It’s a collection of utilities that is very handy for new and advanced users. The Toolbox contains utilities to tweak the desktop, change repo, APT tools, hardware configuration, etc. YOu can see a glimpse of it in the below image.
+
+![A side-by-side view of two different options of Titan Toolbox][7]
+
+For example, the Extra Software option from the Toolbox gives you the below graphical menu items to perform several tasks. It is one of the selling points of this distribution.
+
+![One of the Titan Toolbox options – Extra Software][8]
+
+Another item from the Toolbox is my favourite: the Advanced options to manage Kernel and Grub, as you can see below. I must say, this is handy for all users.
+
+![Advanced Tools][9]
+
+#### Performance
+
+The performance metric is exciting considering it is a KDE Plasma desktop. In a fresh install and idle state, it only uses 620 MB of RAM! And the CPU is at around 1%.
+
+Next, when I pass it through a heavy workload with Firefox, Dolphin file manager, text editor, terminal, VLC media player, and system settings, it uses 1.3 GB of RAM, and the CPU is at 2% to 3% on average.
+
+Finally, when I close all the applications on a heavy workload, the RAM consumption goes back to 676MB of RAM, and the CPU is at a 1% level.
+
+I must say, it is well optimized. And surprisingly, KWin is performing better with the Debian base than the Ubuntu or Fedora base.
+
+It uses 10GB of disk space for a default installation.
+
+![Titan Linux in Idle State][10]
+
+![Titan Linux Performance in Heavy Workload][11]
+
+#### Bugs
+
+There are no bugs I encountered while reviewing this distribution. It is simply stable well considering it is a new distribution.
+
+However, I found one weird behaviour while changing resolution in a virtual machine (see below), which I think is a KWin bug and has nothing to do with Titan Linux.
+
+![][12]
+
+### Closing Notes
+
+Having reviewed a large set of distributions over the years, I must say that Titan Linux gives you a stock Debian stable experience with well-optimized KDE Plasma desktop. On top of that, the Titan toolbox is also a handy addition to helping users.
+
+If you are looking for a Debian stable distribution with KDE Plasma desktop experience, definitely go for it. Thanks to Debian, you can easily use this distro for your daily use and productive work.
+
+You can download Titan Linux from the [official website][13].
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/06/titan-linux-review-2022/
+
+作者:[Arindam][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.debugpoint.com/author/admin1/
+[b]: https://github.com/lkxed
+[1]: https://www.debugpoint.com/wp-content/uploads/2022/06/Titan-Linux-Desktop.jpg
+[2]: https://www.debugpoint.com/2021/05/debian-11-features/
+[3]: https://www.debugpoint.com/2021/01/install-debian-buster/
+[4]: https://www.debugpoint.com/2021/02/legacy-kickoff-kde-plasma-5-21/
+[5]: https://www.debugpoint.com/wp-content/uploads/2022/06/The-KDE-Plasma-kick-off-menu-shows-a-legacy-view.jpg
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/06/System-Settings-in-Titan-Linux.jpg
+[7]: https://www.debugpoint.com/wp-content/uploads/2022/06/A-side-by-side-view-of-two-different-options-of-Titan-Toolbox.jpg
+[8]: https://www.debugpoint.com/wp-content/uploads/2022/06/One-of-the-Titan-Toolbox-option-Extra-Software.jpg
+[9]: https://www.debugpoint.com/wp-content/uploads/2022/06/Advanced-Tools.jpg
+[10]: https://www.debugpoint.com/wp-content/uploads/2022/06/Titan-Linux-in-Idle-State.jpg
+[11]: https://www.debugpoint.com/wp-content/uploads/2022/06/Titan-Linux-Performance-in-Heavy-Workload.jpg
+[12]:
+[13]: https://techcafe757.wixsite.com/titanlinux
diff --git a/sources/tech/20220604 KDE Plasma 5.25- Top New Features and Release Details.md b/sources/tech/20220604 KDE Plasma 5.25- Top New Features and Release Details.md
new file mode 100644
index 0000000000..a5310fc224
--- /dev/null
+++ b/sources/tech/20220604 KDE Plasma 5.25- Top New Features and Release Details.md
@@ -0,0 +1,147 @@
+[#]: subject: "KDE Plasma 5.25: Top New Features and Release Details"
+[#]: via: "https://www.debugpoint.com/2022/06/kde-plasma-5-25/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+KDE Plasma 5.25: Top New Features and Release Details
+======
+We will give you the feature summary of the KDE Plasma 5.25 desktop environment (upcoming).
+
+KDE Plasma 5.25 is the 27th version of KDE Plasma desktop, not an LTS release. This release is followed by the prior [5.24 LTS][1], released in February. KDE Plasma 5.25 brings several exciting updates on the desktop UI, polished applets, widgets, a good set of gesture updates for touch-based devices and a massive list of bug fixes. Plasma 5.25 is based on Qt 5.15.2 and KDE Frameworks 5.94.
+
+KDE Plasma releases on June 14, 2022, but before that following milestones are to be met:
+
+* Soft feature freeze: May 5, 2022 (Completed)
+* Beta: May 19, 2022 (completed)
+* Final release: June 14, 2022
+
+The list of bug fixes and features is around 400+, and it’s challenging to cover them in a single article. We filtered out in this article some of the essential and visual changes which are more impactful straightaway to the general user base.
+
+### KDE Plasma 5.25 – Top New Features
+
+#### Plasma Workspace & Desktop
+
+Perhaps the most important visual change in KDE Plasma 5.25 is accent colour change based on the Wallpaper. As reported earlier, this change gives the final touch to the entire accent colour functionality and makes it complete with dynamic colour, custom colour and pre-sets. The option is available in the Appearance module. ([MR#1325)][2]
+
+![KDE Plasma 5.25 - Accent Colour Change Based on wallpaper][3]
+
+In addition, the accent colour change to the title bar was [also implemented][4] in the Breeze Classic theme and made it more consistent across the desktop.
+
+Another exciting change that KDE Plasma 5.25 brings is an option for Themes to make the Panel float. When selected, the Panel detaches itself from the bottom of the screen with rounded corners and gives a floating feeling. The option is available in the additional settings in Edit Panel mode. Here’s how it looks. ([MR#714)][5]
+
+![Floating Panel in Plasma 5.25][6]
+
+Here’s a quick video we prepared for you to show the above two features in action.
+
+![KDE Plasma - Dynamic Accent Colour and Floating Panel Demo][7]
+
+In addition to that, the power profiles menu in the system tray now has [icons][8] with their names in the [tooltip][9].
+
+The login and logout screen see a [small UI change][10] to display avatar and profile name with longer user names.
+
+Also, the spacing between the avatar icon and name with the logout screen action buttons is [increased][11] to give a more consistent look.
+
+A fix was made to the Plasma Desktop to prevent widgets from [retaining position][12]when resolution changes back from fullscreen gaming. The widgets remember their position for respective resolutions.
+
+The plasma Workspace module [reverts][13]to the lock screen behaviour on mouse move, which was removed accidentally earlier.
+
+The Digital Clock “Copy to Clipboard” menu is now [more clean][14] with the removal of duplicate items and separate entries when seconds are enabled.
+
+#### KWin Updates
+
+KWin introduces an [option to hide][15] minimised windows in KDE Plasma 5.25. In addition to that, the desktop grid effect is [completely replaced][16] with the QML Version.
+
+Furthermore, it is now possible to switch between display specific resolutions which are not visible to the operating system in Wayland. The change adds [libxcvt][17] dependency in Kwin, and details of this change can be found [here][18].
+
+With this release, the switching between the dark and light mode is more smooth and animated thanks to this [MR][19], inspired by GNOME. It was not smooth earlier and now looks more professional behaviour.
+
+#### Changes in Discover
+
+The application page of Discover is now complete with [more focused details][20] at the top with Application metadata and images. The spacing of the app name, ratings and developer with the image at the header section with the summary in the middle. And rest at the bottom. Here’s a side by side comparison of the earlier version with 5.25.
+
+![The app page gives more clarity in Plasma 5.25][21]
+
+One tiny yet impactful change in Discover related to Flatpak apps. Discover now [shows][22] a message with an action button to clean Flatpak data for uninstalled apps.
+
+![Message to clear the app data (Image credit: KDE Team)][23]
+
+Moreover, Discover now [shows the required permissions][24]of the Flatpak applications before you install them. In addition, if you are planning to install proprietary software, you get a warning message saying the potential consequences of using those (such as Microsoft Teams).
+
+#### Application and Applet Changes
+
+The System Monitor (KSystemStats) shows new [information about your window system][25] whether you are running X11 or Wayland. This should also display on the overview screen of the KSysGuard.
+
+The Open With Dialog of XGD Portal sees a [complete UI rework][26]. The top section label is merged into one single information line for better clarity. Also, the search field is now visible for all modes, and the Show More button is moved up beside Search with better clarity. You can look at the below image (Credit KDE Team) for this change.
+
+The Plasma Applet for NetworkManager now [shows][27] the WiFi frequency connection details to help distinguish which frequency you are connected to in the same SSID (same Wi-Fi Router). It’s really helpful if both the band have the same Wifi Accent point name and you cannot distinguish between 4G or 5G.
+
+The cuttlefish icon viewer now helps you [open the file path via the file manager][28] directly of the selected icon.
+
+Plasma desktop now gives a [more organised view][29]in “Recent Documents” with the ability to show “non-file” items such as RDP or remote connections.
+
+Moreover, the spell checker module in KRunner now [detects][30] the search language and gives you results.
+
+![KRunner spell check for non-English (image credit: KDE team)][31]
+
+When you run into an error, the KInfocenter now gives you [more information][32] about the error. The new design gives you what is the error, why it happened, whether you can fix it by yourself and how to report it to the devs. This is a nifty change that has a more significant impact. Here’s a side by side view of the change.
+
+![More help on the error on the way (Image credit: KDE Team)][33]
+
+### Closing Notes
+
+Along with the above changes, this release improves several gestures for touch devices and a massive list of performance and bug fixes (counting 150+), which will enhance the KDE Plasma 5.25 experience for all of its users.
+
+If you want to give a hand on testing, read the [contribution guide][34], and you can try the [unstable edition of KDE Neon][35] until the BETA release.
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/06/kde-plasma-5-25/
+
+作者:[Arindam][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.debugpoint.com/author/admin1/
+[b]: https://github.com/lkxed
+[1]: https://www.debugpoint.com/2022/03/kde-plasma-5-24-review/
+[2]: https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1325
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/05/KDE-Plasma-5.25-Accent-Colour-Change-Based-on-wallpaper-1024x611.jpg
+[4]: https://invent.kde.org/plasma/breeze/-/merge_requests/182
+[5]: https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/714
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/05/Floating-Panel-in-Plasma-5.25.jpg
+[7]: https://youtu.be/npfHwMLXXHs
+[8]: https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1585
+[9]: https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1668
+[10]: https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1654
+[11]: https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1647
+[12]: https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/608
+[13]: https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1707
+[14]: https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1693
+[15]: https://invent.kde.org/plasma/kwin/-/merge_requests/2341
+[16]: https://invent.kde.org/plasma/kwin/-/merge_requests/2327
+[17]: https://gitlab.freedesktop.org/xorg/lib/libxcvt
+[18]: https://bugs.kde.org/448398
+[19]: https://invent.kde.org/plasma/kwin/-/merge_requests/2088
+[20]: https://invent.kde.org/plasma/discover/-/merge_requests/246
+[21]: https://www.debugpoint.com/wp-content/uploads/2022/05/App-page-gives-more-clarity-in-Plasma-5.25.jpg
+[22]: https://invent.kde.org/plasma/discover/-/merge_requests/297
+[23]: https://www.debugpoint.com/wp-content/uploads/2022/05/Message-to-clear-the-app-data.jpg
+[24]: https://invent.kde.org/plasma/discover/-/merge_requests/282
+[25]: https://invent.kde.org/plasma/ksystemstats/-/merge_requests/34
+[26]: https://invent.kde.org/plasma/xdg-desktop-portal-kde/-/merge_requests/94
+[27]: https://invent.kde.org/plasma/plasma-nm/-/merge_requests/112
+[28]: https://invent.kde.org/plasma/plasma-sdk/-/merge_requests/32
+[29]: https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/551
+[30]: https://invent.kde.org/plasma/kdeplasma-addons/-/merge_requests/122
+[31]: https://www.debugpoint.com/wp-content/uploads/2022/05/KRunner-spell-check-for-non-english.jpg
+[32]: https://invent.kde.org/plasma/kinfocenter/-/merge_requests/90
+[33]: https://www.debugpoint.com/wp-content/uploads/2022/05/More-help-on-the-error-on-the-way.jpg
+[34]: https://community.kde.org/Get_Involved
+[35]: https://neon.kde.org/download
diff --git a/translated/tech/20220525 Machine Learning- Classification Using Python.md b/translated/tech/20220525 Machine Learning- Classification Using Python.md
new file mode 100644
index 0000000000..591bdb75f1
--- /dev/null
+++ b/translated/tech/20220525 Machine Learning- Classification Using Python.md
@@ -0,0 +1,108 @@
+[#]: subject: "Machine Learning: Classification Using Python"
+[#]: via: "https://www.opensourceforu.com/2022/05/machine-learning-classification-using-python/"
+[#]: author: "Gayatri Venugopal https://www.opensourceforu.com/author/gayatri-venugopal/"
+[#]: collector: "lkxed"
+[#]: translator: "geekpi"
+[#]: reviewer: "turbokernel"
+[#]: publisher: " "
+[#]: url: " "
+
+机器学习:使用 Python 进行分类
+======
+在机器学习 (ML) 中,分析一组数据以预测结果。 Python 被认为是 ML 的最佳编程语言选择之一。在本文中,我们将讨论使用 Python 进行分类的机器学习。
+
+![machine-learning-classification][1]
+
+假设你想教孩子区分苹果和橙子。有多种方法可以做到这一点。你可以让孩子触摸这两种水果,让他们熟悉形状和柔软度。你还可以向她展示苹果和橙子的多个例子,以便他们可以直观地发现差异。这个过程的技术等价物被称为机器学习。
+
+机器学习教计算机解决特定问题,并通过经验变得更好。这里讨论的示例是一个分类问题,其中机器被赋予各种标记示例,并期望使用它从标记样本中获得的知识来标记未标记样本。机器学习问题也可以采用回归的形式,其中期望根据已知样本及其解决方案来预测给定问题的实值解决方案。分类和回归被广泛称为监督学习。机器学习也可以是无监督的,机器识别未标记数据中的模式,并形成具有相似模式的样本集群。机器学习的另一种形式是强化学习,机器通过犯错从环境中学习。
+
+### 分类
+
+分类是根据从已知点获得的信息来预测一组给定点的标签的过程。与一个数据集相关的类别或标签可以是二元的,也可以是多元的。举例来说,如果我们必须给与一个句子相关的情绪打上标签,我们可以把它标记为正面、负面或中性。另一方面,我们必须预测一个水果是苹果还是橘子的问题将有二元标签。表 1 给出了一个分类问题的样本数据集。
+
+在该表中,最后一列的值,即贷款批准,预计将基于其他变量进行预测。在接下来的部分中,我们将学习如何使用 Python 训练和评估分类器。
+
+| - | - | - | - | - |
+| :- | :- | :- | :- | :- |
+| 年龄 | 信用等级 | 工作 | 拥有房产 | 贷款批准 |
+| 35 | 好 | 是 | 是 | 是 |
+| 32 | 差 | 是 | 不 | 不 |
+| 22 | 一般 | 不 | 不 | 不 |
+| 42 | 好 | 是 | 不 | 是 |
+
+表格 1
+
+### 训练和评估分类器
+
+为了训练分类器,我们需要一个包含标记示例的数据集。尽管本节不涉及清理数据的过程,但建议你在将数据集输入分类器之前阅读各种数据预处理和清理技术。为了在 Python 中处理数据集,我们将导入 pandas 包和 data frame 结构。然后,你可以从多种分类算法中进行选择,例如决策树、支持向量分类器、随机森林、XG boost、ADA boost 等。我们将看看随机森林分类器,它是使用多个决策树形成的集成分类器。
+
+```
+from sklearn.ensemble import RandomForestClassifier
+from sklearn import metrics
+
+classifier = RandomForestClassifier()
+
+#creating a train-test split with a proportion of 70:30
+X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
+
+classifier.fit(X_train, y_train) #train the classifier on the training set
+
+y_pred = classifier.predict(X_test) #evaluate the classifier on unknown data
+
+print(“Accuracy: “, metrics.accuracy_score(y_test, y_pred)) #compare the predictions with the actual values in the test set
+```
+
+虽然这个程序使用准确性作为性能指标,但应该使用多种指标的组合,因为当测试集不平衡时,准确性往往会产生非代表性的结果。例如,如果模型对每条记录都给出了相同的预测,而用于测试模型的数据集是不平衡的,即数据集中的大多数记录与模型预测的类别相同,我们就会得到很高的准确率。
+
+### 调整分类器
+
+调优是指修改模型的超参数值以提高其性能的过程。超参数是可以改变其值以改进算法的学习过程的参数。
+
+以下代码描述了随机搜索超参数调整。在此,我们定义了一个搜索空间,算法将从该搜索空间中选择不同的值,并选择产生最佳结果的那个:
+
+```
+from sklearn.model_selection import RandomizedSearchCV
+
+#define the search space
+min_samples_split = [2, 5, 10]
+min_samples_leaf = [1, 2, 4]
+grid = {‘min_samples_split’ : min_samples_split, ‘min_samples_leaf’ : min_samples_leaf}
+
+classifier = RandomizedSearchCV(classifier, grid, n_iter = 100)
+
+#n_iter represents the number of samples to extract from the search space
+#result.best_score and result.best_params_ can be used to obtain the best performance of the model, and the best values of the parameters
+
+classifier.fit(X_train, y_train)
+```
+
+### 投票分类器
+
+你也可以使用多个分类器和它们的预测来创建一个模型,根据各个预测给出一个预测。这个过程(只考虑为每个预测投票的分类器的数量)被称为硬投票。软投票是一个过程,其中每个分类器产生一个给定记录属于特定类别的概率,而投票分类器产生的预测是获得最大概率的类别。
+
+A code snippet for creating a soft voting classifier is given below:
+
+```
+soft_voting_clf = VotingClassifier(
+estimators=[(‘rf’, rf_clf), (‘ada’, ada_clf), (‘xgb’, xgb_clf), (‘et’, et_clf), (‘gb’, gb_clf)],
+voting=’soft’)
+soft_voting_clf.fit(X_train, y_train)
+```
+
+这篇文章总结了分类器的使用,调整分类器和结合多个分类器的结果的过程。请将此作为一个参考点,详细探讨每个领域。
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/05/machine-learning-classification-using-python/
+
+作者:[Gayatri Venugopal][a]
+选题:[lkxed][b]
+译者:[geekpi](https://github.com/geekpi)
+校对:[turbokernel](https://github.com/turbokernel)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.opensourceforu.com/author/gayatri-venugopal/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/04/machine-learning-classification.jpg
diff --git a/translated/tech/20220530 Using a Machine Learning Model to Make Predictions.md b/translated/tech/20220530 Using a Machine Learning Model to Make Predictions.md
new file mode 100644
index 0000000000..94a7feb229
--- /dev/null
+++ b/translated/tech/20220530 Using a Machine Learning Model to Make Predictions.md
@@ -0,0 +1,87 @@
+[#]: subject: "Using a Machine Learning Model to Make Predictions"
+[#]: via: "https://www.opensourceforu.com/2022/05/using-a-machine-learning-model-to-make-predictions/"
+[#]: author: "Jishnu Saurav Mittapalli https://www.opensourceforu.com/author/jishnu-saurav-mittapalli/"
+[#]: collector: "lkxed"
+[#]: translator: "geekpi"
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+使用机器学习模型进行预测
+======
+机器学习基本上是人工智能的一个子集,它使用以前存在的数据对新数据进行预测。当然,现在我们所有人都知道这个道理了!这篇文章展示了如何将 Python 中开发的机器学习模型作为 Java 代码的一部分来进行预测。
+
+![Machine-learning][1]
+
+本文假设你熟悉基本的开发技巧并理解机器学习。我们将从训练我们的模型开始,然后在 Python 中制作一个机器学习模型。
+
+我以一个洪水预测模型为例。首先,导入以下库:
+
+```
+import pandas as pd
+import numpy as np
+import matplotlib.pyplot as plt
+```
+
+当我们成功地导入了这些库,我们就需要输入数据集,如下面的代码所示。为了预测洪水,我使用的是河流水位数据集。
+
+```
+from google.colab import files
+uploaded = files.upload()
+for fn in uploaded.keys(): print(‘User uploaded file “{name}” with length {length} bytes’.format(
+name=fn, length=len(uploaded[fn])))
+Choose files No file chosen
+```
+
+只有在当前浏览器会话中执行了该单元格时,上传部件才可用。请重新运行此单元,上传文件 *“Hoppers Crossing-Hourly-River-Level.csv”*,大小 2207036 字节。
+
+完成后,我们就可以使用 *sklearn 库*来训练我们的模型。为此,我们首先需要导入该库和算法模型,如图 1 所示。
+
+![Figure 1: Training the model][2]
+
+```
+from sklearn.linear_model import LinearRegression
+regressor = LinearRegression()
+regressor.fit(X_train, y_train)
+```
+
+完成后,我们就训练好了我们的模型,现在可以进行预测了,如图 2 所示。
+
+![Figure 2: Making predictions][3]
+
+### 在 Java 中使用 ML 模型
+
+我们现在需要做的是把 ML 模型转换成一个可以被 Java 程序使用的模型。有一个叫做 sklearn2pmml 的库可以帮助我们做到这一点:
+
+```
+# Install the library
+pip install sklearn2pmml
+```
+
+库安装完毕后,我们就可以转换我们已经训练好的模型,如下图所示:
+
+```
+sklearn2pmml(pipeline, ‘model.pmml’, with_repr = True)
+```
+
+这就完成了!我们现在可以在我们的 Java 代码中使用生成的 `model.pmml` 文件来进行预测。请试一试吧!
+
+(LCTT 译注:Java 中有第三方库 [jpmml/jpmml-evaluator][4],它能帮助你使用生成的 `model.pmml` 进行预测。)
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/05/using-a-machine-learning-model-to-make-predictions/
+
+作者:[Jishnu Saurav Mittapalli][a]
+选题:[lkxed][b]
+译者:[geekpi](https://github.com/geekpi)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.opensourceforu.com/author/jishnu-saurav-mittapalli/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/05/Machine-learning.jpg
+[2]: https://www.opensourceforu.com/wp-content/uploads/2022/05/Figure-1Training-the-model.jpg
+[3]: https://www.opensourceforu.com/wp-content/uploads/2022/05/Figure-2-Making-predictions.jpg
+[4]: https://github.com/jpmml/jpmml-evaluator