diff --git a/published/20180523 Creating random, secure passwords in Go.md b/published/20180523 Creating random, secure passwords in Go.md
new file mode 100644
index 0000000000..e472554850
--- /dev/null
+++ b/published/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/published/20180529 Build a concurrent TCP server in Go.md b/published/20180529 Build a concurrent TCP server in Go.md
new file mode 100644
index 0000000000..8cd93bf002
--- /dev/null
+++ b/published/20180529 Build a concurrent TCP server in Go.md
@@ -0,0 +1,153 @@
+[#]: subject: "Build a concurrent TCP server in Go"
+[#]: via: "https://opensource.com/article/18/5/building-concurrent-tcp-server-go"
+[#]: author: "Mihalis Tsoukalos https://opensource.com/users/mtsouk"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14623-1.html"
+
+在 Go 中实现一个支持并发的 TCP 服务端
+======
+
+
+
+> 仅用大约 65 行代码,开发一个用于生成随机数、支持并发的 TCP 服务端。
+
+TCP 和 UDP 服务端随处可见,它们基于 TCP/IP 协议栈,通过网络为客户端提供服务。在这篇文章中,我将介绍如何使用 [Go 语言][2] 开发一个用于返回随机数、支持并发的 TCP 服务端。对于每一个来自 TCP 客户端的连接,它都会启动一个新的 goroutine(轻量级线程)来处理相应的请求。
+
+你可以在 GitHub 上找到本项目的源码:[concTcp.go][3]。
+
+### 处理 TCP 连接
+
+这个程序的主要逻辑在 `handleConnection()` 函数中,具体实现如下:
+
+```
+func handleConnection(c net.Conn) {
+ fmt.Printf("Serving %s\n", c.RemoteAddr().String())
+ for {
+ netData, err := bufio.NewReader(c).ReadString('\n')
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+
+ temp := strings.TrimSpace(string(netData))
+ if temp == "STOP" {
+ break
+ }
+
+ result := strconv.Itoa(random()) + "\n"
+ c.Write([]byte(string(result)))
+ }
+ c.Close()
+}
+```
+
+如果 TCP 客户端发送了一个 “STOP” 字符串,为它提供服务的 goroutine 就会终止;否则,TCP 服务端就会返回一个随机数给它。只要客户端不主动终止,服务端就会一直提供服务,这是由 `for` 循环保证的。具体来说,`for` 循环中的代码使用了 `bufio.NewReader(c).ReadString('\n')` 来逐行读取客户端发来的数据,并使用 `c.Write([]byte(string(result)))` 来返回数据(生成的随机数)。你可以在 Go 的 net 标准包 [文档][4] 中了解更多。
+
+
+### 支持并发
+
+在 `main()` 函数的实现部分,每当 TCP 服务端收到 TCP 客户端的连接请求,它都会启动一个新的 goroutine 来为这个请求提供服务。
+
+```
+func main() {
+ arguments := os.Args
+ if len(arguments) == 1 {
+ fmt.Println("Please provide a port number!")
+ return
+ }
+
+ PORT := ":" + arguments[1]
+ l, err := net.Listen("tcp4", PORT)
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+ defer l.Close()
+ rand.Seed(time.Now().Unix())
+
+ for {
+ c, err := l.Accept()
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+ go handleConnection(c)
+ }
+}
+```
+
+首先,`main()` 确保程序至少有一个命令行参数。注意,现有代码并没有检查这个参数是否为有效的 TCP 端口号。不过,如果它是一个无效的 TCP 端口号,`net.Listen()` 就会调用失败,并返回一个错误信息,类似下面这样:
+
+```
+$ go run concTCP.go 12a
+listen tcp4: lookup tcp4/12a: nodename nor servname provided, or not known
+$ go run concTCP.go -10
+listen tcp4: address -10: invalid port
+```
+
+`net.Listen()` 函数用于告诉 Go 接受网络连接,因而承担了服务端的角色。它的返回值类型是 `net.Conn`,后者实现了 `io.Reader` 和 `io.Writer` 接口。此外,`main()` 函数中还调用了 `rand.Seed()` 函数,用于初始化随机数生成器。最后,`for` 循环允许程序一直使用 `Accept()` 函数来接受 TCP 客户端的连接请求,并以 goroutine 的方式来运行 `handleConnection(c)` 函数,处理客户端的后续请求。
+
+### net.Listen() 的第一个参数
+
+`net.Listen()` 函数的第一个参数定义了使用的网络类型,而第二个参数定义了服务端监听的地址和端口号。第一个参数的有效值为 `tcp`、`tcp4`、`tcp6`、`udp`、`udp4`、`udp6`、`ip`、`ip4`、`ip6`、`Unix`(Unix 套接字)、`Unixgram` 和 `Unixpacket`,其中:`tcp4`、`udp4` 和 `ip4` 只接受 IPv4 地址,而 `tcp6`、`udp6` 和 `ip6` 只接受 IPv6 地址。
+
+### 服务端并发测试
+
+`concTCP.go` 需要一个命令行参数,来指定监听的端口号。当它开始服务 TCP 客户端时,你会得到类似下面的输出:
+
+```
+$ go run concTCP.go 8001
+Serving 127.0.0.1:62554
+Serving 127.0.0.1:62556
+```
+
+`netstat` 的输出可以确认 `congTCP.go` 正在为多个 TCP 客户端提供服务,并且仍在继续监听建立连接的请求:
+
+```
+$ netstat -anp TCP | grep 8001
+tcp4 0 0 127.0.0.1.8001 127.0.0.1.62556 ESTABLISHED
+tcp4 0 0 127.0.0.1.62556 127.0.0.1.8001 ESTABLISHED
+tcp4 0 0 127.0.0.1.8001 127.0.0.1.62554 ESTABLISHED
+tcp4 0 0 127.0.0.1.62554 127.0.0.1.8001 ESTABLISHED
+tcp4 0 0 *.8001 *.* LISTEN
+```
+
+在上面输出中,最后一行显示了有一个进程正在监听 8001 端口,这意味着你可以继续连接 TCP 的 8001 端口。第一行和第二行显示了有一个已建立的 TCP 网络连接,它占用了 8001 和 62556 端口。相似地,第三行和第四行显示了有另一个已建立的 TCP 连接,它占用了 8001 和 62554 端口。
+
+下面这张图片显示了 `concTCP.go` 在服务多个 TCP 客户端时的输出:
+
+![concTCP.go TCP 服务端测试][5]
+
+类似地,下面这张图片显示了两个 TCP 客户端的输出(使用了 `nc` 工具):
+
+![是用 nc 工具作为 concTCP.go 的 TCP 客户端][6]
+
+你可以在 [维基百科][7] 上找到更多关于 `nc`(即 `netcat`)的信息。
+
+### 总结
+
+现在,你学会了如何用大约 65 行 Go 代码来开发一个生成随机数、支持并发的 TCP 服务端,这真是太棒了!如果你想要让你的 TCP 服务端执行别的任务,只需要修改 `handleConnection()` 函数即可。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/5/building-concurrent-tcp-server-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/go-golang.png
+[2]: https://golang.org/
+[3]: https://github.com/mactsouk/opensource.com
+[4]: https://golang.org/pkg/net/
+[5]: https://opensource.com/sites/default/files/uploads/tcp-in-go_server.png
+[6]: https://opensource.com/sites/default/files/uploads/tcp-in-go_client.png
+[7]: https://en.wikipedia.org/wiki/Netcat
diff --git a/published/20190404 Why you should choose mindfulness over multitasking.md b/published/20190404 Why you should choose mindfulness over multitasking.md
new file mode 100644
index 0000000000..1d773a3d7a
--- /dev/null
+++ b/published/20190404 Why you should choose mindfulness over multitasking.md
@@ -0,0 +1,86 @@
+[#]: subject: "Why you should choose mindfulness over multitasking"
+[#]: via: "https://opensource.com/article/19/4/mindfulness-over-multitasking"
+[#]: author: "Sarah Wall https://opensource.com/users/sarahwall"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14581-1.html"
+
+你为什么应该选择专注而非一心多用
+======
+
+> 如果你有时候会感觉大脑处于停滞状态,那么你可能正在遭受一心多用和决策疲劳。
+
+
+
+想象一下,你刚完成了日常工作,坐在电脑前,手里拿着晨间咖啡,正准备开始新的一天。突然,一条 Slack 消息弹了出来,你扫了一眼邮件,然后切回 Slack。你打开日历,看看下一次会议是什么时候,令你惊讶的是,它 15 分钟后就要开始了!你回到办公桌前,开始检查待办事项,想看看在这短短 15 分钟内还能给自己安排什么任务,但不巧的是,这时你的一个同事请求你帮他解决一个问题。大半天就这样过去了,而你根本没有意识到……
+
+我的许多日子都是这样度过的,不断地多个任务之间徘徊。有些时候,我发现自己盯着电脑,大脑完全停滞。如果你也发现自己处于这种情况,这可能是你的大脑发出的信号,提醒你休息一下。你可能正在遭受一心多用和决策疲劳。
+
+平均而言,成年人每天要做大约 [35000 个决定][2]!它们可能是简单的决定,如吃什么或穿什么,也可能是需要更多思考的决定,如下一个假期去哪里或从事哪个职业。每天你都面临着大量的选择,它们占据了你的头脑。
+
+### 分散注意力的一心多用
+
+不只有你一个人每天面临着数以千计的决定,事实上,一心多用早已成为忙碌的、工作中的专业人士的常态。问题是,一心多用的伤害比它的帮助更大。你越是为了处理多任务而分散注意力,你的生产力就越是下降。
+
+在一项研究中,自称是一心多用者的人,被要求以他们感觉自然的速度,在各种任务之间来回切换。同时,研究的对照组,被要求按顺序,一次完成一项工作。研究表明,多任务组的效率要低得多。每次他们切换任务时,都会出现速度减慢的情况,因为他们需要时间来回忆到目前为止所做的细节和步骤。这最终 [额外花费了大约 40% 的时间][3],并导致整体准确度降低。每次专注于一项任务的人,总体上花费的时间更少,并且完成了所有的任务。
+
+### 选择专注
+
+当大脑集中在一项活动上时,它的功能是最理想的。选择专注而不是一心多用,将使你在一天中获得更好的感受,并帮助你完成更好的工作。
+
+“专注”可以被定义为有意识和察觉的。它实际上是指活在当下,并将注意力集中于眼前的事情上。在工作场所,专注有很多好处。它的诀窍在于建立边界和习惯,使你能够对每项任务给予充分的关注。
+
+保持积极主动,为每天必须完成的项目排好优先级,并制定一个完成计划。这将使你能够在一些重要的事情上取得真正的进展,而不是被动应付。你的待办事项清单上的每个项目,都应该是独立、明确、可操作的。每天专注于三到五项任务,不要太多。
+
+### 三种在工作日休息的方法
+
+不要忘记把“休息”也放进一天的计划中。大脑每小时需要几分钟的休息,以休养生息,避免倦怠。休息一下对你的心理健康也有好处,最终 [有助于生产力的提高][4]。
+
+这里有三种简单的“休息”方法,请把它们融入到你忙碌的一天中吧!
+
+#### 1、移动身体
+
+花 10 分钟时间,离开你的椅子,站起来走一走。如果你的时间很紧张,可以站起来伸展两分钟。改变身体所处的位置,并专注于当下,将有助于缓解积聚在你心中的精神紧张。
+
+#### 2、多笑
+
+休息一下,与你的朋友和工作中的同事交谈。笑声可以减少压力荷尔蒙,并引发内啡肽的释放,内啡肽是人体天然的的化学物质,它会使人感觉良好。欢声笑语的小憩有助于放松你的头脑,对你的灵魂也有好处。
+
+#### 3、深呼吸
+
+用两分钟的休息时间来重置你的身心,使用腹部深呼吸。它可以使你的身心平静下来,改善氧气流动,并给你带来自然的能量提升。
+
+1. 挺直坐正,将注意力放在腹部,感受它的柔软和放松。
+2. 从缓慢的深吸气开始,数三下,让氧气依次充满你的腹部、肋骨和上胸。
+3. 停顿一秒钟,然后与深吸气相反,从上胸、肋骨和腹部呼气,最后将腹部拉向脊柱。
+4. 再次停顿,然后重复。
+
+### 重置自己
+
+下次当你发现自己处于停滞状态,或是正在强迫状态不佳的自己完成一项任务时,请尝试上面的一些提示。最好是短暂休息一下,重置身心,而不要试图强行完成任务。相信我,你的身体和大脑会感谢你的!
+
+本文改编自《BodyMindSpirit》上的 [让自己休息一下][5] 和 ImageX 的博文 [专注而不是一心多用][6]。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/19/4/mindfulness-over-multitasking
+
+作者:[Sarah Wall][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/sarahwall
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/life_tree_clouds.png
+[2]: https://go.roberts.edu/leadingedge/the-great-choices-of-strategic-leaders
+[3]: http://www.apa.org/research/action/multitask.aspx
+[4]: https://opensource.com/article/19/3/guide-being-more-productive
+[5]: https://body-mind-spirit-coach.com/2019/01/02/give-yourself-a-break/
+[6]: https://imagexmedia.com/mindfullness-over-multitasking
+[7]: https://events.drupal.org/seattle2019/sessions/mindless-multitasking-dummy%E2%80%99s-guide-productivity
+[8]: https://events.drupal.org/seattle2019
diff --git a/published/20200303 Watching activity on Linux with watch and tail commands.md b/published/20200303 Watching activity on Linux with watch and tail commands.md
new file mode 100644
index 0000000000..bb8dd7b0d7
--- /dev/null
+++ b/published/20200303 Watching activity on Linux with watch and tail commands.md
@@ -0,0 +1,150 @@
+[#]: collector: (lujun9972)
+[#]: translator: (Starryi)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14557-1.html)
+[#]: subject: (Watching activity on Linux with watch and tail commands)
+[#]: via: (https://www.networkworld.com/article/3529891/watching-activity-on-linux-with-watch-and-tail-commands.html)
+[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/)
+
+使用 watch 和 tail 命令监视 Linux 上的活动
+======
+
+
+
+> watch 和 tail 命令可以帮助监视 Linux 系统上的活动。本文介绍了这两个命令的一些有用的使用方法。
+
+`watch` 和 `tail` 命令为持续监视 Linux 系统上的活动提供了一些有趣的选项。
+
+也就是说,你可以通过 `watch` 来显示谁已登录,并随着用户登录和注销不断更新,而不是仅仅提出问题并获得答案(例如询问 `who` 并获取当前登录用户的列表)。
+
+使用 `tail`,你可以显示文件的底部并在添加内容时查看内容。这种监控一般非常有用,并且比定期运行命令所需的工作更少。
+
+### 使用 watch 命令
+
+使用 `watch` 的最简单示例之一是使用命令 `watch who`。你会看到一个列表,其中显示了谁登录了,以及他们登录的时间和登录位置。请注意,默认设置是每两秒更新一次显示(左上角),日期和时间(右上角)将按该间隔自行更新。用户列表将随着用户登录和注销而增长和缩小。
+
+```
+$ watch who
+```
+
+此命令将显示如下所示的登录列表:
+
+```
+Every 2.0s: who dragonfly: Thu Feb 27 10:52:00 2020
+
+nemo pts/0 2020-02-27 08:07 (192.168.0.11)
+shs pts/1 2020-02-27 10:58 (192.168.0.5)
+```
+
+你可以通过添加 `-n` 选项(例如 `-n 10`)来修改更新间的不同秒数,以修改更新间隔,从而获取较少的更新频率。
+
+```
+$ watch -n 10 who
+```
+
+上述命令将以新的间隔显示,并且显示的时间更新频率较低,从而使显示时间与所选间隔保持一致。
+
+```
+Every 10.0s: who dragonfly: Thu Feb 27 11:05:47 2020
+
+nemo pts/0 2020-02-27 08:07 (192.168.0.11)
+shs pts/1 2020-02-27 10:58 (192.168.0.5)
+```
+
+如果你希望仅查看命令的输出,而不是标题(前 2 行),则可以通过添加 `-t`(无标题)选项来省略这些行。
+
+```
+$ watch -t who
+```
+
+然后,你的屏幕将显示如下所示:
+
+```
+nemo pts/0 2020-02-27 08:07 (192.168.0.11)
+shs pts/1 2020-02-27 10:58 (192.168.0.5)
+```
+
+如果每次运行监视的命令时,输出都是相同的,则只有标题行(如果未省略)会更改。其余显示的信息将保持不变。
+
+如果你希望 `watch` 命令在它正在监视的命令的输出发生更新后立即退出,则可以使用 `-g`(将其视为“离开”)选项。例如,如果你只是在等待其他人开始登录系统,则可以选择执行此操作。
+
+你还可以使用 `-d`(差异)选项突出显示显示输出中的更改。突出显示只会持续一个间隔(默认为 2 秒),但有助于引起你对更新的注意。
+
+下面是一个更复杂的示例,该示例使用 `watch` 命令显示正在侦听连接的服务及其使用的端口。虽然输出不太可能更改,但它会提醒你任何新服务正在启动或关闭。
+
+```
+$ watch 'sudo lsof -i -P -n | grep LISTEN'
+```
+
+值得注意的是,正在运行的命令需要用引号扩起来,以确保不会将 `watch` 命令的输出发送到 `grep` 命令。
+
+使用 `watch -h` 命令将为你提供命令选项的列表。
+
+```
+$ watch -h
+
+Usage:
+ watch [options] command
+
+Options:
+ -b, --beep beep if command has a non-zero exit
+ -c, --color interpret ANSI color and style sequences
+ -d, --differences[=]
+ highlight changes between updates
+ -e, --errexit exit if command has a non-zero exit
+ -g, --chgexit exit when output from command changes
+ -n, --interval seconds to wait between updates
+ -p, --precise attempt run command in precise intervals
+ -t, --no-title turn off header
+ -x, --exec pass command to exec instead of "sh -c"
+
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+```
+
+### 使用 tail -f
+
+`tail -f` 命令与 `watch` 有一些相同之处。它也会在添加文件时显示文件的底部和其他内容。你不必一次又一次地运行 `tail` 命令,而是运行一个命令并获得可重复更新显示视图的结果。例如,你可以使用如下命令查看系统日志:
+
+```
+$ tail -f /var/log/syslog
+```
+
+某些文件(如 `/var/log/wtmp`)不适合这种类型的处理,因为它们的格式不是普通文本文件,但是通过组合 `watch` 和 `tail`,你可以获得类似的结果,如下所示:
+
+```
+watch 'who /var/log/wtmp | tail -20'
+```
+
+无论有多少用户仍处于登录状态,此命令都将只显示最近的 5 次登录。如果发生其他登录,显示结果将添加一行记录并删除顶行记录。
+
+```
+Every 60.0s: who /var/log/wtmp | tail -5 dragonfly: Thu Feb 27 12:46:07 2020
+
+shs pts/0 2020-02-27 08:07 (192.168.0.5)
+nemo pts/1 2020-02-27 08:26 (192.168.0.5)
+shs pts/1 2020-02-27 10:58 (192.168.0.5)
+nemo pts/1 2020-02-27 11:34 (192.168.0.5)
+dory pts/1 2020-02-27 12:14 (192.168.0.5)
+```
+
+对你有时可能想要监视的信息,无论监视进程、登录名还是系统资源,`watch` 和 `tail -f` 命令都可以提供自动更新视图,从而使监视任务变得更加容易。
+
+--------------------------------------------------------------------------------
+
+via: https://www.networkworld.com/article/3529891/watching-activity-on-linux-with-watch-and-tail-commands.html
+
+作者:[Sandra Henry-Stocker][a]
+选题:[lujun9972][b]
+译者:[Starryi](https://github.com/Starryi)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/
+[b]: https://github.com/lujun9972
+[1]: https://www.networkworld.com/newsletters/signup.html
+[2]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage)
+[3]: https://www.facebook.com/NetworkWorld/
+[4]: https://www.linkedin.com/company/network-world
diff --git a/published/20200807 A Beginner-s Guide to Open Source.md b/published/20200807 A Beginner-s Guide to Open Source.md
new file mode 100644
index 0000000000..a51f88eefe
--- /dev/null
+++ b/published/20200807 A Beginner-s Guide to Open Source.md
@@ -0,0 +1,114 @@
+[#]: subject: "A Beginner's Guide to Open Source"
+[#]: via: "https://ruthikegah.xyz/a-beginners-guide-to-open-source"
+[#]: author: "Ruth Ikegah https://hashnode.com/@ikegah_ruth"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14600-1.html"
+
+开源新手指南
+======
+
+
+
+作为一名技术人员,你应该时不时会看到“开源”这个词。你有可能在浏览推文、博文时看到过它,也有可能是在学习某一门编程语言或使用某个工具时,看到它的部分介绍写着:这个工具/语言是“开源”的。总之,开源无处不在。
+
+在本文中,我将介绍下面这三个话题:
+
+* 什么是开源
+* 贡献于开源的好处
+* 如何开始贡献
+
+### 什么是开源
+
+开源指的是这样一些软件、项目或社区:它们允许人们修改和分享,因为它们的设计目的就是为了让所有人都能访问。举一个关于菜谱的例子:你可以做你从未发明过的菜,因为发明这个菜谱的人公开了它。大多数时候,你也可以根据自己的口味烹饪,而不会呛到喉咙(开个玩笑)。
+
+> 开源软件(OSS)是指源代码可供他人查看、复制、学习、修改或分享的软件。
+
+下面是开源软件和语言的一些例子:
+
+* Linux 操作系统
+* Google 的 Android 操作系统
+* Firefox 浏览器
+* VLC 媒体播放器
+* Python 语言、PHP 语言、MySQL 数据库
+
+与开源软件相反的是专有软件 / 闭源软件,只有软件的创造者才能自由使用,其他人若想使用,就得先获得法律许可才行。例如 Adobe Photoshop、微软 Office 等。
+
+> 开源不仅限于软件或代码,技术领域的任何人都可以为开源做出贡献(各个角色)。有了开源,就有了透明度、可靠性、灵活性,并允许开放合作。
+
+### 贡献于开源的好处
+
+向开源项目或软件做贡献意味着“免费”让该项目变得更好。你应该会问自己,为什么我要关心或向自己强调“免费”呢?如果你是新手,你可以阅读 [Edidiong Asikpo][2] 的故事,她在 [这篇文章][3] 中说明了为什么开源是她成长的催化剂。
+
+贡献开源的好处有很多,这里是其中一部分:
+
+* 它能够帮助你提高现有的技能,特别是对于新手而言,因为它允许你边做边学。
+* 无论身在何处,你都可以与世界各地的优秀科技人士协作或共事。
+* 你可以公开自己的想法,从而改善软件、项目或社区,让世界变得更美好。
+* 你可以通过贡献开源来得到大家的认可,或者成为独特或伟大事物的一部分(获得自豪感)。
+* 它让你有机会成为一个人才济济、活力四射的社区的一分子,你可以从中汲取灵感,并结识志同道合的人。
+* 你可以因为贡献开源而获得报酬(OoO)!比如你可以参与一些实习,包括 [谷歌编程之夏][4]、[Outreachy][5]、[谷歌文档季][6],以及 Open Collective 的 [赏金计划][7] 等。(LCTT 译注:国内也有类似的开源实习机会,如“开源之夏”。)
+
+### 如何开始贡献
+
+我相信你会对上面提到的最后一点感兴趣吧(^o^),那么,你该如何开始为开源软件做贡献呢?
+
+是时候介绍一下 GitHub 了!
+
+Github 是开源项目协作的大本营,因此它是一个开始贡献开源的好地方。没听说过 GitHub?没有关系!它提供了文档和指南,很容易就可以上手。不过我还是要提醒你,学习是一个循序渐进的过程,不要太心急喔。
+
+Github 以公共存储库的形式容纳了许多开源项目。对于某个项目,你可以提交一个议题,来说明你注意到的错误或问题(或进一步提出改进意见),也可以创建一个拉取请求(PR),并说明你的更正和改进。
+
+我不建议你在 GitHub 上搜索项目来开始贡献,这将是相当令人沮丧的。尽管你可以限定项目使用的编程语言来简化搜索过程,但仍然会有一大堆东西出现在你眼前。(LCCT 译注:对于可爱的小萌新来说,这实在是难以承受 >…<。)
+
+为了更精准地找到适合自己的项目,这里有一些可供开始的途径:
+
+* [First-timers only][8]:一个很好的资源网站,你可以在上面找到新手友好的开源项目来开始贡献。(设计师朋友,我没有忘记你!你可以查看 [Open Source Design][9] 这个网站,在上面也能找到新手友好的开源设计项目!)
+* 你可以创建你自己的开源项目,把你美妙的想法变成现实,并允许其他人的合作和贡献。[这里][10] 有关于如何创建开源项目的指南。
+* 加入一个社区:你可以成为某个社区的成员,这也是传播开源思想的一种方式。你可以在谷歌上搜索当地的开源社区,并积极加入其中。
+
+最后,我想给出几个有用的提示,供你在贡献开源项目时参考:
+
+* 在加入之前,先对项目、社区或组织做一些研究;当你在做的时候,针对不清楚的地方提出问题。
+* 当你加入社区时,尽量积极地介绍自己,并说明你能帮助项目的地方。
+* **不要**认为自己无法为项目提供任何帮助,停止这种念头!你有很好的想法可以分享!
+* 在存储库中看看别人提交的议题,(如果有的话)看看你能在哪些方面提供帮助,你可以关注带有“good first issue”、“help-wanted”、“first-timers only”等标签的议题。
+* 在开始贡献之前,一定要先看一下贡献指南,这样你在贡献时就不会有冲突。
+
+> 哪怕只是使用一个开源工具也是一种贡献;参加一个开源活动也是一种贡献;做开源项目的志愿者,或者为开源项目提供赞助也是一种贡献。
+
+我想用非洲开源节的口号来结束:“未来是开放的”,所以快上车吧!
+
+感谢阅读!
+
+如果你还有疑问或需要帮助,请在 [这里][11] 联系我,我很乐意和你讨论开源,并帮助你做出首次贡献!
+
+**LCTT 译注:读了这篇文章,你是不是想要马上投身于开源贡献呢?那么请考虑加入“Linux 中国翻译组(LCTT)”吧!我们有能帮助你快速上手翻译的 [维基][12] ,有热心友爱的 QQ 群,你甚至还能够在我们的官网上获得属于自己的译者专页……心动了吗?那就立刻行动起来吧!阅读 [维基][12] 以了解如何加入我们~**
+
+--------------------------------------------------------------------------------
+
+via: https://ruthikegah.xyz/a-beginners-guide-to-open-source
+
+作者:[Ruth Ikegah][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://hashnode.com/@ikegah_ruth
+[b]: https://github.com/lkxed
+[1]: https://ruthikegah.xyz/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596742204400%2Fk9AJL1oNC.jpeg%3Fw%3D1600%26h%3D840%26fit%3Dcrop%26crop%3Dentropy%26auto%3Dcompress%2Cformat%26format%3Dwebp&w=3840&q=75
+[2]: https://hashnode.com/@didicodes
+[3]: https://edidiongasikpo.com/open-source-contributions-a-catalyst-for-growth-b823fc5752b1
+[4]: https://summerofcode.withgoogle.com
+[5]: https://www.outreachy.org/
+[6]: https://developers.google.com/season-of-docs
+[7]: https://docs.opencollective.com/help/contributing/development/bounties
+[8]: https://www.firsttimersonly.com/
+[9]: https://opensourcedesign.net/
+[10]: https://github.com/Ruth-ikegah/opensource.guide
+[11]: https://twitter.com/IkegahRuth
+[12]: https://lctt.github.io/wiki/intro/lctt.html
diff --git a/published/20210102 Explore the night sky with this open source astronomy app.md b/published/20210102 Explore the night sky with this open source astronomy app.md
new file mode 100644
index 0000000000..d25508a327
--- /dev/null
+++ b/published/20210102 Explore the night sky with this open source astronomy app.md
@@ -0,0 +1,93 @@
+[#]: collector: (lujun9972)
+[#]: translator: (hanszhao80)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14599-1.html)
+[#]: subject: (Explore the night sky with this open source astronomy app)
+[#]: via: (https://opensource.com/article/21/1/kstars)
+[#]: author: (Don Watkins https://opensource.com/users/don-watkins)
+
+使用开源天文应用程序 KStars 探索夜空
+======
+
+> 使用 KStars 从你的 Linux 桌面或安卓设备眺望星辰。
+
+
+
+我一直对夜空很着迷。当我年轻的时候,唯一可用的参考资料是书籍,它们似乎描绘了一个与我从家里看到的不一样的天空。
+
+五年多前,我曾介绍过两个开源天文馆应用程序 [Celestia 和 Stellarium][2] 的使用体验。最近,我又了解到一个应用 [KStars][3]。这是一个令人惊叹的开源应用程序,可以帮助儿童(和成人)参与科学和天文学。它的网站上说:
+
+> “KStars 是一款自由开源的、跨平台的天文学软件。它提供了从地球上的任何位置、任何日期和时间对夜空的一个精确的图形化模拟。可展示包括多达 1 亿颗恒星,13,000 个深空天体,所有 8 个行星,太阳和月亮,以及数千颗彗星,小行星,超新星和卫星。“
+
+KStars 是 [KDE 教育项目][4] 的一部分。最新版本可用于 Linux、Windows 和 MacOS,它集成了 [StellarSolver][5],这是一个跨平台的 SExtractor 程序,它可以从天文图像构建一个天体目录。
+
+### 安装 KStars
+
+KStars 采用 GPL 2.0 协议自由授权。源代码可以在官方的 [KDE GitLab 实例][6] 查看(这是 GitHub 的一个只读镜像)。KDE 教育项目有着优秀的 [安装文档][7]。
+
+我用的系统是 [Pop!_OS][8],可以在 Pop!_Shop 找到这款应用程序。
+
+可以从你的发行版的软件存储库中找到 KStars 在 Linux 上安装。而在安卓设备上,可以从 [Google Play 商店][9] 下载适配安卓的 KStars Lite。KDE 项目维护了一份优秀的 [KStars 手册][10] 来帮助用户。
+
+### 使用 KStars
+
+安装完后,从你的“应用”菜单启动程序。启动向导会指导你完成初始化设置。
+
+![KStars 启动向导][11]
+
+这些指示很容易理解。向导会提示设置你住所的位置。不幸的是,我所在的小村庄不在列表里,但附近一个更大的社区在里面。
+
+![KStars 位置设置][13]
+
+你还可以下载该程序的其他数据和额外功能。
+
+![KStars 扩展][14]
+
+这里有很多可用的选项。我选择“在详细信息窗口中显示常见图像”。
+
+一旦完成设置,KStars 会呈现一张基于你的位置的夜空图。
+
+![KStars 夜空显示][15]
+
+左上角显示了当前时区(这张图里是 2020 年 11 月 30 日傍晚 5 点 58 分)。
+
+使用鼠标左键,可以向左、向右、向上和向下移动显示。你可以使用鼠标滚轮进行放大和缩小。将鼠标光标放在天体上并右键单击可查看当前天体的描述。
+
+![KStars 天体描述][16]
+
+### 参与
+
+KStars 正在积极寻求错误报告、天文学知识、代码、翻译等方面的帮助。主要开发者和维护者是 [Jasem Mutlaq][17]。如果你愿意贡献一份力量,请访问 [项目网站][18] 或加入邮件列表以了解更多信息。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/1/kstars
+
+作者:[Don Watkins][a]
+选题:[lujun9972][b]
+译者:[hanszhao80](https://github.com/hanszhao80)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/don-watkins
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_520x292_opensourcestars.png?itok=hnrMETFh (Open source stars.)
+[2]: https://opensource.com/education/15/7/open-source-apps-explore-night-sky
+[3]: https://edu.kde.org/kstars/
+[4]: https://edu.kde.org/
+[5]: https://github.com/rlancaste/stellarsolver
+[6]: https://invent.kde.org/education/kstars
+[7]: https://edu.kde.org/kstars/install.php
+[8]: https://pop.system76.com/
+[9]: https://play.google.com/store/apps/details?id=org.kde.kstars.lite&hl=en
+[10]: https://docs.kde.org/trunk5/en/extragear-edu/kstars/index.html
+[11]: https://opensource.com/sites/default/files/uploads/kstars_startupwizard.png (KStars Startup Wizard)
+[12]: https://creativecommons.org/licenses/by-sa/4.0/
+[13]: https://opensource.com/sites/default/files/uploads/kstars_setlocation.png (KStars location setup)
+[14]: https://opensource.com/sites/default/files/uploads/kstars_addons.png (KStars add-ons)
+[15]: https://opensource.com/sites/default/files/uploads/kstars_sky.png (KStars night sky display)
+[16]: https://opensource.com/sites/default/files/uploads/kstars_objectdescription.png (KStars describes objects)
+[17]: https://github.com/knro
+[18]: https://edu.kde.org/kstars
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/20210111 9 Decentralized, P2P and Open Source Alternatives to Mainstream Social Media Platforms Like Twitter, Facebook, YouTube and Reddit.md
new file mode 100644
index 0000000000..1906887042
--- /dev/null
+++ b/published/20210111 9 Decentralized, P2P and Open Source Alternatives to Mainstream Social Media Platforms Like Twitter, Facebook, YouTube and Reddit.md
@@ -0,0 +1,242 @@
+[#]: collector: (lujun9972)
+[#]: translator: (TravinDreek)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14529-1.html)
+[#]: subject: (9 Decentralized, P2P and Open Source Alternatives to Mainstream Social Media Platforms Like Twitter, Facebook, YouTube and Reddit)
+[#]: via: (https://itsfoss.com/mainstream-social-media-alternaives/)
+[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)
+
+9 个去中心化、端到端、开源的主流社交媒体平台替代品
+======
+
+你多半知道,Facebook 因可能从它的“端到端加密”的聊天服务 WhatsApp 那里共享用户数据而 [遭到抨击][1]。
+
+这些有争议的隐私政策变化使无数人转而使用 WhatsApp 替代品。
+
+注重隐私的人们,早就料到了会有这事。毕竟,[Facebook 可是花了 190 亿美元收购了 WhatsApp 这样的手机应用][2],而当时靠它还赚不到什么钱。现在,Facebook 该回本了 —— 回那之前投进去的 190 亿美元的本。他们可能打算把你的数据共享给广告商,这样的话,你看到的广告就会更加个性化(侵入性)了。
+
+要是你受够了 Facebook、Google、Twitter 等科技公司的“我说了算”的态度,那你应该试试一些社交媒体平台的替代品。
+
+这些社交平台的替代品都是开源的,它们都用了端到端或区块链技术来实现去中心化,而且你可能能够自己托管其中一些平台。
+
+### 开源和去中心化的社交网络
+
+![Image Credit: Datonel on DeviantArt][3]
+
+先说句实话,这些替代平台的体验,可能会和你惯用平台的体验有所差异,但这些平台是不会侵犯你的隐私和言论自由的。这就是一种权衡。
+
+#### 1、Minds
+
+- 用于替代:Facebook 和 YouTube
+- 特点:代码开源、区块链
+- 自托管:否
+
+在 Minds 上,你可以发视频、博客、图片,并设置当前状态。你也能向群聊,或者直接向好友,安全地发送消息或者进行视频聊天。通过热门内容和话题,你可以发现你感兴趣的文章。
+
+还不止这些。你还能通过做贡献来赚取代币,这些代币可以用来升级你的频道。创作者可以从粉丝那里直接得到美元、比特币和以太坊的支付。
+
+> **[Minds][4]**
+
+#### 2、Aether
+
+- 用于替代:Reddit
+- 特点:开源、端到端
+- 自托管:否
+
+![][5]
+
+Aether 是一个开源、端到端的平台,用于创建自我管理的社区,并可以审查管理记录以及选举版主。
+
+Aether 上的内容,具有存在时间短的性质,并且内容只会留存六个月,除非有人把它保存下来。因为它是端到端的,所以中心服务器不复存在。
+
+Aether 有趣的一点在于它的民主社区。社区可以选举版主,也能投票弹劾版主。
+
+> **[Aether][6]**
+
+#### 3、Mastodon
+
+- 用于替代:Twitter
+- 特点:开源、去中心化
+- 自托管:是
+
+![][7]
+
+在自由开源软件爱好者中,[Mastodon][8] 已经很有名了。我们之前报道过 [Twitter 的开源替代品 Mastodon][9],并且 [你也可以在 Mastodon 上关注我们][10]。
+
+Mastdon 并不像 Twitter 那样是一个单一网站,它是个由数千个社区组成的网络,这些社区都由不同的组织和个人运营,并且都提供无缝的社交媒体体验。这被称之为“Fediverse”。
+
+你可以托管自己的 Mastodon 实例,并选择将其连接到其他 Mastodon 实例,或者直接加入一个已有的 Mastodon 实例,比如说 [Mastodon Social][11]。
+
+> **[Mastodon][8]**
+
+#### 4、LBRY
+
+- 用于替代:YouTube
+- 特点:开源、去中心化、区块链
+- 自托管:否
+
+![][12]
+
+[LBRY][13] 的核心是一个基于区块链的去中心化协议。协议顶层,便是由其加密货币驱动的数字市场。
+
+通过 LBRY,创作者可以提供多种数字化内容,例如影片、书籍和游戏。基本上,它是作为 YouTube 的替代而受到推崇的。你可以在 Odysee 上访问这个视频共享平台。
+
+我们之前 [报道过 LBRY][14],你可以去读那篇文章了解详情。
+
+> **[LBRY][15]**
+
+
+#### 5、Pixelfed
+
+- 用于替代:Instagram
+- 特点:去中心化、区块链
+- 自托管:否
+
+![][31]
+
+Pixelfed 和 Mastodon 使用了相同的底层开放协议,即 ActivityPub。
+
+因此,你也可以通过 Pixelfed 与 Mastodon 的实例进行互动。我还没有试过,但从理论上讲,你应该可以做到这一点。你应该找到几个活跃的 Pixelfed 实例来注册。
+
+如果你想控制你的数据和隐私,Pixelfed 是 Instagram 的一个简单替代品。你可以控制你的图片的隐私,在平台上没有任何广告。
+
+你可以得到与照片分享平台基本相同的功能。然而,它没有驱动时间线的算法,遵循时间顺序,不收集你的任何数据,以获得个性化的体验。
+
+> **[Pixelfed][32]**
+
+#### 6、Peertube
+
+- 用于替代:YouTube
+- 特点:去中心化、端到端
+- 自托管:否
+
+![][19]
+
+PeerTube 由法国公司 Framasoft 开发,它是一个去中心化的视频平台。PeerTube 使用了 [BitTorrent 协议][20] 以在用户之间共享宽带。
+
+PeerTube 旨在抵制企业的垄断,它不依靠广告,并且也不会追踪你。不过要注意,你的 IP 地址在这里不是匿名的。
+
+目前有许多 PeerTube 的实例,你可以在那里托管你的视频。有些实例需要付费,不过大多数都是免费的。
+
+> **[PeerTube][21]**
+
+#### 7、Diaspora
+
+- 用于替代:Facebook
+- 特点:去中心化、开源
+- 自托管:是
+
+Diaspora 是最早的去中心化社交网络之一。最早可以追溯到 2010 年,当时 Diaspora 就作为 Facebook 的替代品而受到吹捧。最初几年,它确实得到了一些应得的关注,但它只在小众范围内得到了使用。
+
+和 Mastodon 类似,Diaspora 由许多“豆荚” (节点服务器)组成。你可以在一个“豆荚”上注册,或者托管你自己的“豆荚”。科技公司无法拥有你的数据,只有你可以。
+
+> **[Diaspora][22]**
+
+#### 8、Dtube
+
+- 用于替代:YouTube
+- 特点:去中心化、区块链
+- 自托管:否
+
+![][23]
+
+Dtube 是一个基于区块链的去中心化 YouTube 复制品。之所以说它是 YouTube 复制品,是因为它界面太像 YouTube 了。
+
+Dtube 像其他基于区块链的社交媒体一样,是由 DTube 币(DTC)驱动的。每当有人观看创作者的视频或者与之互动,创作者就会获得 DTC。这些硬币可以用于推广内容,或者通过合作的加密货币交换方来提现。
+
+> **[DTube][24]**
+
+#### 9、Signal
+
+用于替代:WhatsApp、Facebook Messenger
+特点:开源
+自托管:否
+
+![][25]
+
+与端到端加密的 WhatsApp 聊天不同,Signal 不会跟踪你,不会共享你的数据,也不会侵犯你的隐私。
+
+[Signal 一举成名][26],是在它得到 Edward Snowden 的认可之时。而当 WhatsApp 开始与 Facebook 共享数据时,Elon Musk 又发了关于 Signal 的推文,这便让 Signal 更受瞩目了。
+
+Signal 使用了自己的开源 Signal 协议,以提供端到端加密的消息和通话服务。
+
+> **[Signal][28]**
+
+#### KARMA(已终止)
+
+- 用于替代:Instagram
+- 特点:去中心化、区块链
+- 自托管:否
+
+![][16]
+
+这也是一个基于区块链的社交网络,由加密货币驱动。
+
+KARMA 是 Instagram 的一个复制品,它构建于开源区块链平台 [EOSIO][17] 之上。每当你的内容获得了点赞和分享,你就会得到 KARMA 代币。你可以用这些代币来推广你的内容,或者通过一个合作的加密货币交换方,来将其转换为现实货币。
+
+KARMA 只能在手机上使用,可以在 Play Store 及 App Store 上获取。
+
+> **[KARMA][18]**
+
+#### 还有别的吗?
+
+还有一些其他的服务,它们虽然不是开源或者去中心化的,但也尊重你的隐私与言论自由。
+
+ * [MeWe][29]:Facebook 替代品
+ * [Voice][30]:NFT 为数字艺术家赋能
+ * [ProtonMail][33]:Gmail 替代品
+
+还有一个基于 Matrix 协议的 [Element 聊天工具][34],你也可以试试。
+
+我知道,应该还有几个别的社交媒体平台的替代品。也想分享一下?我可能会把他们加到列表中来。
+
+要是你也得在这个列表中选一个平台,你想选哪个呢?
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/mainstream-social-media-alternaives/
+
+作者:[Abhishek Prakash][a]
+选题:[lujun9972][b]
+译者:[Peaksol](https://github.com/TravinDreek)
+校对:[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/lujun9972
+[1]: https://arstechnica.com/tech-policy/2021/01/whatsapp-users-must-share-their-data-with-facebook-or-stop-using-the-app/
+[2]: https://money.cnn.com/2014/02/19/technology/social/facebook-whatsapp/index.html
+[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/1984-quote.png?resize=800%2C450&ssl=1
+[4]: https://www.minds.com/
+[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/01/aether-reddit-alternative.png?resize=800%2C600&ssl=1
+[6]: https://getaether.net
+[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/mastodon.png?resize=800%2C623&ssl=1
+[8]: https://joinmastodon.org/
+[9]: https://itsfoss.com/mastodon-open-source-alternative-twitter/
+[10]: https://mastodon.social/@itsfoss
+[11]: https://mastodon.social
+[12]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/lbry-interface.jpg?resize=800%2C420&ssl=1
+[13]: https://lbry.org
+[14]: https://itsfoss.com/lbry/
+[15]: https://lbry.tv/$/invite/@itsfoss:0
+[16]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/karma-app.jpg?resize=800%2C431&ssl=1
+[17]: https://eos.io
+[18]: https://karmaapp.io
+[19]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/peertube-federation-multiplicity.jpg?resize=600%2C341&ssl=1
+[20]: https://www.slashroot.in/what-bittorrent-protocol-and-how-does-bittorrent-protocol-work
+[21]: https://joinpeertube.org
+[22]: https://diasporafoundation.org
+[23]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/dtube.jpg?resize=800%2C516&ssl=1
+[24]: https://d.tube
+[25]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/12/signal-shot.jpg?resize=800%2C565&ssl=1
+[26]: https://itsfoss.com/signal-messaging-app/
+[27]: https://www.britannica.com/biography/Elon-Musk
+[28]: https://www.signal.org
+[29]: https://mewe.com
+[30]: https://www.voice.com
+[31]: https://itsfoss.com/wp-content/uploads/2022/04/pixelfed-decentralized.jpg
+[32]: https://pixelfed.org/
+[33]: https://itsfoss.com/recommends/protonmail/
+[34]: https://itsfoss.com/element/
\ No newline at end of file
diff --git a/published/20210112 8 tips for the Linux command line.md b/published/20210112 8 tips for the Linux command line.md
new file mode 100644
index 0000000000..3188935f71
--- /dev/null
+++ b/published/20210112 8 tips for the Linux command line.md
@@ -0,0 +1,94 @@
+[#]: collector: (lujun9972)
+[#]: translator: (FYJNEVERFOLLOWS)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14570-1.html)
+[#]: subject: (8 tips for the Linux command line)
+[#]: via: (https://opensource.com/article/21/1/linux-commands)
+[#]: author: (Jim Hall https://opensource.com/users/jim-hall)
+
+分享 8 篇使用 Linux 命令行的技巧
+======
+
+> 要好好利用无所不能的 Linux 命令行提供的所有功能
+
+
+
+Linux 命令行是极其灵活的。无论你是管理服务器还是在桌面系统上启动终端窗口,都可以通过命令行无所不包的工具包来更新文件、调整系统性能或者管理进程。命令行里发生的事情是非常有趣的。
+
+我们发布了许多关于如何充分利用系统的优秀文章,证明了命令行的流行。以下是 8 篇关于 Linux 命令阅读量最高的文章:
+
+### 《使用这些技巧让 Bash 命令历史更加有用》
+
+> **[文章地址][2]**
+
+Bash 是大多数 Linux 系统上的默认命令行 Shell。Seth Kenlon 编写了该指南,用于帮助你了解 Bash 命令历史。修改 Bash 命令历史通常没有听起来那么危险,特别是当你带有目的地修改它的时候。告诉 Bash 你希望它记住什么,甚至还可以直接通过删除你不想要或不需要的条目来重写命令历史。根据需要使用你的历史会话,明智地行使你对命令历史的权力。
+
+### 《如何在 Linux 终端中兼顾特性和性能》
+
+> **[文章地址][3]**
+
+Ricardo Gerardi 非常喜欢命令行应用程序,他花了很多时间在终端上工作。Ricardo 投入了一些时间,把命令行变成了一个令人愉快的工作环境。你可以通过了解如何自定义终端应用程序、主题和提示符,来创建一个功能丰富、易于使用系统资源的终端。
+
+### 《放弃 Bash 转投拥有更优美配置的 fish》
+
+> **[文章地址][4]**
+
+Matt Broberg 最近放弃了默认的命令行解释器 —— Bash,转而支持 fish。fish 自豪地宣称自己是 “90 年代的命令行 shell”。这个以鱼为主题的 “友好的交互式 shell” 为命令行创造了更愉快的体验。阅读 Matt 的文章来进一步了解如何充分利用 fish。如果你不想再对你的终端修修补补,换一个更漂亮的默认 shell,把更多精力放在代码上,不妨试一试 fish。
+
+### 《分析 Linux 里二进制文件的 10 种方式》
+
+> **[文章地址][5]**
+
+我们每天都在和二进制文件打交道,但我们对它们的了解甚少。Linux 提供了一组丰富的工具,使分析二进制文件变得轻而易举!这些简单的命令和工具可以帮助你顺利完成分析二进制文件的任务。无论你的工作角色是什么,了解这些工具的基本知识将帮助你更好地了解你的 Linux 系统。Gaurav Kamathe 介绍了一些最流行的用于管理二进制文件的 Linux 工具和命令,包括 `file`、`nm`、`strings` 和 `hexdump`。
+
+### 《可用于 Linux 命令行的 4 种 Markdown 工具》
+
+> **[文章地址][6]**
+
+当涉及使用 Markdown 格式的文件时,命令行工具占据了主导地位。它们轻巧、快速、强大而又灵活,其中大多数遵循 Unix “把一件事情做好”的哲学。Scott Nesbitt 回顾了 4 种命令行实用工具,它们可以帮助你更高效地处理 Markdown 文件。
+
+### 《禁用 atime 来提高 Linux 系统性能》
+
+> **[文章地址][7]**
+
+每当我在为家里的电脑升级 Linux 时,我都会把我通常要做的任务列出来。这些年来,它们已经成为了习惯:备份文件、还原系统、重新安装、恢复文件,然后重新安装额外的我最喜欢的应用程序。我还会对系统进行了一些调整。其中一个调整就是 `atime`,它是 Linux 里每个文件的三个时间戳之一。关掉 `atime` 是一种简单但有效的提升系统性能的方法。下面是关于 `atime` 的介绍,以及为什么它会有影响。
+
+### 《使用 fstrim 延长固态硬盘的寿命》
+
+> **[文章地址][8]**
+
+在过去的十年中,固态硬盘(SSD)带来了一种全新的管理存储的方式。相比传统的机械硬盘,固态硬盘具有一些优点,比如安静、更酷的操作和更快的接口规格。当然,新技术带来了新的维护和管理方法。Alan Formy-Duval 写了一个新的 systemd 服务让你更容易管理固态硬盘。
+
+### 《Linux 命令行工具的 5 种新式替代品》
+
+> **[文章地址][9]**
+
+在我们日常使用的 Linux 或 Unix 系统中,我们会使用许多命令行工具来完成我们的工作,并帮助我们更好地了解和管理我们的系统。多年来,这些工具已经现代化并移植到了不同的系统中。然而,总的来讲,它们仍然保持着最初的想法、外观和感觉。近年来,开源社区已经开发出了提供额外好处的替代工具。Ricardo Gerardi 向我们展示了如何通过这 5 种新的替代品改进旧的命令行工具来获得新的好处。
+
+### 总结
+
+把这些文章作为跳板,寻找你自己关于命令行的技巧和花招吧!这份清单里还缺少什么吗?请在下方评论,或者提交一篇你自己的文章!
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/1/linux-commands
+
+作者:[Jim Hall][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/jim-hall
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/terminal_command_linux_desktop_code.jpg?itok=p5sQ6ODE (Terminal command prompt on orange background)
+[2]: https://linux.cn/article-12344-1.html
+[3]: https://opensource.com/article/20/7/performance-linux-terminal
+[4]: https://opensource.com/article/20/3/fish-shell
+[5]: https://linux.cn/article-12187-1.html
+[6]: https://linux.cn/article-12048-1.html
+[7]: https://opensource.com/article/20/6/linux-noatime
+[8]: https://linux.cn/article-11959-1.html
+[9]: https://opensource.com/article/20/6/modern-linux-command-line-tools
diff --git a/published/20210122 Convert your filesystem to Btrfs.md b/published/20210122 Convert your filesystem to Btrfs.md
new file mode 100644
index 0000000000..00cfa03fc9
--- /dev/null
+++ b/published/20210122 Convert your filesystem to Btrfs.md
@@ -0,0 +1,316 @@
+[#]: collector: (lujun9972)
+[#]: translator: (hwlife)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14577-1.html)
+[#]: subject: (Convert your filesystem to Btrfs)
+[#]: via: (https://fedoramagazine.org/convert-your-filesystem-to-btrfs/)
+[#]: author: (Gergely Gombos https://fedoramagazine.org/author/gombosg/)
+
+如何将你的文件系统转换为 Btrfs
+======
+
+![][1]
+
+### 引言
+
+这篇概述文章将告诉你为何以及如何迁移你的当前分区到 Btrfs 文件系统。如果你对此感兴趣,请阅读这篇分步指南来完成。
+
+从 Fedora 33 开始,新安装的 Fedora 操作系统默认文件系统为 Btrfs。我确信大部分用户现在已经听说了它的优势:写时复制、内置校验、灵活的压缩方式、简易的快照和回滚方式。它确实是一个现代化的文件系统,为桌面存储带来新的功能。
+
+在升级到 Fedora 33 后,我想利用 Btrfs 的优势,但对我个人来说,我不想因为“只是为了改变文件系统”而去重装整个系统。我发现(只有)寥寥无几的具体如何做转换的教程,所以我决定在这里分享我的详细经验。
+
+### 小心!
+
+这样做你是在玩火。希望你阅读以下内容时不要感到惊讶:
+
+> 在编辑分区和转换文件系统时,你的数据可能会被破坏和丢失。最终,你可能会得到一个不能启动的操作系统,并面临数据恢复的风险。你可能会无意删除你的分区,或者以其它方式破坏了你的操作系统。
+
+这些转换过程即使对于生产系统来说也是安全的 —— 前提是你提前做好了计划,对关键数据做好了备份和回滚计划。作为一个 _可以执行超级权限的系统管理员_,你可以在没有限制、没有任何常规安全防护措施的情况下,做任何事情。
+
+### 安全的方式:重装 Fedora
+
+重装操作系统是转换文件系统到 Btrfs 的 “官方” 方式,推荐给大多数用户使用。因此,如果在这个教程中有那么一点不确定,就选择这种方式。步骤大致如下:
+
+ 1. 备份你的主文件夹和你系统中可能会用到的任何数据,比如 `/etc`。(编者按:虚拟机也是这样)
+ 2. 将已安装的安装包以列表形式保存到到文件中。
+ 3. 重新安装 Fedora,删除你当前的分区,并选择新的 Btrfs 默认分区方案。
+ 4. 恢复主文件夹的内容,并使用软件包列表文件重装软件包。
+
+对于详细的步骤和命令,请看一位社区用户在 [ask.fedoraproject.org][2] 站点的评论。如果正确完成,你将得到一个和之前一样的操作系统,使丢失数据的风险最小化。
+
+### 转换的利弊
+
+让我们快速澄清一下:这种文件系统转换有什么优势和劣势?
+
+**优势:**
+
+ * 当然,不需要重新安装!你的系统里的所有文件和之前一模一样。
+ * 技术上来说,没有备份的情况下,就地进行是可能的。
+ * 你会学到许多关于 Btrfs 的知识!
+ * 如果所有都按计划进行,会是相当快的一个过程。
+
+**劣势:**
+
+ * 你必须熟悉终端环境和 shell 命令。
+ * 你可能会丢失数据,参见上文。
+ * 如果出了什么问题,你得自己解决。
+
+**特别之处:**
+
+ * 你需要大约 20% 的可用磁盘空间才能成功转换。但对于完整的备份和重装方式,你可能需要的空间更多。
+ * 你可以在转换过程中自定义你分区的所有参数,但如果选择重装,你也可以从 Anaconda 自定义。
+
+### LVM 怎么办?
+
+在近期几次 Fedora 安装中,LVM 布局一直是默认的。如果你有一个带有多个分区(例如 `/` 和 `/home`)的 LVM 分区布局,你得以某种方式合并它们,来获得 Btrfs 所有性能。
+
+如果选择这样做,你可以单独转换分区到 Btrfs 文件系统,同时保留卷组。然而,迁移到 Btrfs 文件系统的优势之一是摆脱 LVM 分区布局强加的限制。你也可以利用 Btrfs 文件系统提供的收发功能在转换后来合并分区。
+
+> 另见 《Fedora 杂志》: [利用 LVM 回收硬盘空间][3]、[从 Btrfs 快照中恢复文件][4] 以及 [在 Btrfs 和 LVM-ext4 两者之间做选择][5]。
+
+### 了解 Btrfs
+
+建议阅读以下内容对 Btrfs 文件系统是什么有一个基础的了解。如果你没有把握,只有选择重装 Fedora 这种安全的方式。
+
+必须了解的:
+
+ * [Fedora Magazine:Btrfs 来到 Fedora 33][6]
+ * [Btrfs 系统管理指南][7], _尤其是_ 关于子卷和 flat 子卷布局。
+ * [btrfs-convert 指南][8]
+
+有用的资源:
+
+ * [man 8 btrfs][9] – 命令行界面
+ * [man 5 btrfs][10] – 挂载参数
+ * [man btrfs-convert][11] – 要用到的转换工具
+ * [man btrfs-subvolume][12] – 管理子卷
+
+### 转换步骤
+
+#### 创建一个实时镜像
+
+由于不能转换已挂载的文件系统,我们将通过 Fedora 实时镜像进行。安装 [Fedora 镜像写入工具][13],然后 “烧录” Fedora 33 到你的 U 盘中来创建实时镜像。
+
+#### 释放磁盘空间
+
+`btrfs-convert` 会在分区的剩余空间重新创建文件系统的元数据,同时保持所有已有的 ext4 文件系统数据还在它当前的位置上。
+
+不幸的是,所需的剩余空间的大小无法提前知道:如果没有足够的空间,转换将会失败(但不会破坏数据)。这里有一些释放空间有用的方法:
+
+ * 利用 `baobab` 来识别大容量的文件和文件夹,然后移除。如果可能的话,不要手动删除主文件夹以外的文件。
+ * 清理旧的系统日志:`journalctl –vacuum-size=100M`。
+ * 如果你正使用 Docker,请小心地使用类似 `docker volume prune`、`docker image prune -a` 这样的工具。
+ * 清理 GNOME Boxes 之类的虚拟机内不用的镜像。
+ * 清理不用的软件包和 Flatpak 包:`dnf autoremove`、`flatpak remove –unused`。
+ * 清理软件包缓存:`pkcon refresh force -c -1`、`dnf clean all`。
+ * 如果你有把握,你可以谨慎的清理 `~/.cache` 文件夹。
+
+#### 转换到 Btrfs
+
+备份你所有有价值的数据,确保你的系统已完全更新,然后重启到实时镜像。运行 `gnome-disks` 工具找到你所拥有的设备的路径,比如 `/dev/sda1`(如果你在使用 LVM,它可能看起来有所不同)。检查文件系统然后执行转换:(编者按:以下命令使用 root 用户运行,谨慎使用!)
+
+```
+$ sudo su -
+# fsck.ext4 -fyv /dev/sdXX (请替换为你的具体的设备路径)
+# man btrfs-convert (阅读它)
+# btrfs-convert /dev/sdXX (请替换为你的具体的设备路径)
+```
+
+这将会花十几分钟甚至几个小时,依据分区的大小和是机械硬盘还是固态硬盘。如果你看到错误,你可能需要更多剩余空间。作为最后的手段,你可以尝试 `btrfs-convert -n`。
+
+#### 怎样回滚?
+
+如果因为某些原因转换失败,你的分区将保持在 ext4 文件系统或者它之前的状态。如果你想在成功转换之后回滚,简单如下:
+
+```
+# btrfs-convert -r /dev/sdXX
+```
+
+> **警告!** 如果你做了以下这些事情之一,你将永久失去回滚的功能:碎片整理、均衡或者删除 `ext2_saved` 子卷。
+
+由于 Btrfs 文件系统的写时复制特性,你可以安全的复制/移动甚至删除文件、创建子卷,因为 `ext2_saved` 会保持引用旧数据。
+
+#### 挂载和检查
+
+现在这个分区应该已经有了 Btrfs 文件系统。挂载它然后查看你的文件……和子卷!
+
+```
+# mount /dev/sdXX /mnt (请替换为你的具体的设备路径)
+# man btrfs-subvolume (阅读它)
+# btrfs subvolume list / (使用 -t 以表格方式查看)
+```
+
+因为你已经阅读了 [相关的手册页][14],你应该知道创建子卷快照是安全的,并且有 `ext2-saved` 子卷作为你之前数据的简易备份。
+
+> 是时候阅读 [Btrfs 系统管理指南][7]了,这样你就不会把常规文件夹和子卷混淆了。
+
+#### 创建子卷
+
+我们希望实现一个“扁平”子卷布局,这和 Anaconda 默认创建的布局相同:
+
+```
+toplevel (卷根目录,不能被默认挂载)
+ +-- root (子卷根目录,被挂载到 /)
+ +-- home (子卷根目录,被挂载到 /home)
+```
+
+你可以跳过这个步骤,或者使用一个不同的布局。这种特殊结构的优势是你可以轻松的创建 `/home` 的快照,并且对每个子卷使用不同的压缩和挂载参数。
+
+```
+# cd /mnt
+# btrfs subvolume snapshot ./ ./root2
+# btrfs subvolume create home2
+# cp -a home/* home2/
+```
+
+这里我们已经创建了两个子卷。`root2` 是一个完整的分区快照,而 `home2` 开始是一个空子卷,然后我们往里复制内容。(这个 `cp` 命令不会重复数据,所以会很快。)
+
+ * 在 `/mnt` 目录(顶层子卷),删除除了 `root2`、`home2` 和 `ext2_saved` 之外的所有内容。
+ * 重命名 `root2` 和 `home2` 子卷为 `root` 和 `home`。
+ * 在 `root` 子卷里,清空 `home` 目录,以便之后我们能够挂载 `home` 子卷。
+
+如果都做对了,那就很简单了!
+
+#### 修改 fstab 分区表
+
+为了重启之后挂载新卷,必须要修改 `fstab`,用新的行来代替旧的 ext4 文件系统挂载行。
+
+你可以使用 `blkid` 命令来找到你的分区的 UUID。
+
+```
+UUID=xx / btrfs subvol=root 0 0 (请替换为你的具体 UUID)
+UUID=xx /home btrfs subvol=home 0 0 (请替换为你的具体 UUID)
+```
+
+(注意如果指向的是同一个分区,那么这两个 UUID 是相同的。)
+
+这些都是新安装的 Fedora 33 的默认值。在 `fstab` 中,你也可以选择自定义压缩和添加类似 `noatime` 这样的参数。
+
+> 可以查看 [关于压缩参数的维基页面][15] 和 [man 5 btrfs][10] 了解所有相关的参数。
+
+#### chroot 到系统
+
+如果你曾经做过系统恢复,我想你肯定知道这些命令。这里,我们将得到一个 _基本上_ 在你系统里的 shell 提示符,可以访问网络。
+
+首先,我们必须重新挂载 `root` 子卷到 `/mnt` 目录,然后挂载 `/boot` 和 `/boot/efi` 分区(它们可能有所不同,这取决于你的文件系统布局):
+
+```
+# umount /mnt
+# mount -o subvol=root /dev/sdXX /mnt (请替换为你的具体的设备路径)
+# mount /dev/sdXX /mnt/boot (请替换为你的具体的设备路径)
+# mount /dev/sdXX /mnt/boot/efi (请替换为你的具体的设备路径)
+```
+
+然后我们继续挂载系统设备:
+
+```
+# mount -t proc /proc /mnt/proc
+# mount --rbind /dev /mnt/dev
+# mount --make-rslave /mnt/dev
+# mount --rbind /sys /mnt/sys
+# mount --make-rslave /mnt/sys
+# cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.chroot
+# cp -L /etc/resolv.conf /mnt/etc
+# chroot /mnt /bin/bash
+$ ping www.fedoraproject.org
+```
+
+#### 重装 GRUB 及内核
+
+最容易的方法就是重装 GRUB 和 内核,因为它完成了所有必要的配置 —— 现在我们可以访问网络了。所以,在 chroot 环境内部:
+
+```
+# mount /boot/efi
+# dnf reinstall grub2-efi shim
+# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
+# dnf reinstall kernel-core
+...或者干脆重新生成 initramfs:
+# dracut --kver $(uname -r) --force
+```
+
+如果你是支持 UEFI 的系统,这里是适用的。如果你是 BIOS 的系统,请查看下面的文档。重启之前,让我们查看是否一切正常:
+
+```
+# cat /boot/grub2/grubenv
+# cat /boot/efi/EFI/fedora/grub.cfg
+# lsinitrd /boot/initramfs-$(uname -r).img | grep btrfs
+```
+
+你应该在 `grubenv` 和 `grub.cfg` 有正确的分区 UUID 或指向(`grubenv` 可能没有更新,如有必要可以编辑它),并在 `grub.cfg` 中看到 `insmod btrfs` 配置和在 initramfs 镜像中有 btrfs 模块。
+
+> 参见: Fedora 系统管理指南中的 [重装 GRUB 2][16] 和 [验证初始 RAM 磁盘镜像][17] 。
+
+#### 重启
+
+现在系统能够正常启动。如果不能,别慌,回到实时镜像修复这个问题。最坏的情况下,你可以从那里重装 Fedora 。
+
+#### 首次启动之后
+
+检查你的新 Btrfs 文件系统一切都正常。如果你觉得没问题,你需要回收旧的 ext4 快照使用的空间,进行碎片整理和平衡子卷。后两者可能要花一些时间,并且相当耗费资源。
+
+对此你必须这样挂载顶级子卷:
+
+```
+# mount /dev/sdXX -o subvol=/ /mnt/someFolder
+# btrfs subvolume delete /mnt/someFolder/ext2_saved
+```
+
+然后,当机器有空闲时间时,运行这些命令:
+
+```
+# btrfs filesystem defrag -v -r -f /
+# btrfs filesystem defrag -v -r -f /home
+# btrfs balance start -m /
+```
+
+最后,有一个 “非写时复制” [属性][18],对于新系统,这个属性是为虚拟机镜像文件夹自动设置的。如果你使用虚拟机的话,可以设置它:
+
+```
+# chattr +C /var/lib/libvirt/images
+```
+
+```
+$ chattr +C ~/.local/share/gnome-boxes/images
+```
+
+这个属性只会对在这些文件夹里的新文件生效。复制镜像并删除原镜像,你可以通过 `lsattr` 确认结果。
+
+### 总结
+
+我真心希望你发现这个教程是有用的,并且能够对是否在你的系统上转换为 Btrfs 做出谨慎而明智的决定。祝你成功转换!
+
+欢迎在评论中分享你的经验,或者遇到更深层次的问题,请在 [ask.fedoraproject.org][19] 提问。
+
+--------------------------------------------------------------------------------
+
+via: https://fedoramagazine.org/convert-your-filesystem-to-btrfs/
+
+作者:[Gergely Gombos][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwllife)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://fedoramagazine.org/author/gombosg/
+[b]: https://github.com/lujun9972
+[1]: https://fedoramagazine.org/wp-content/uploads/2020/08/butterfs-816x346.png
+[2]: https://ask.fedoraproject.org/t/conversion-of-an-existing-ext4-fedora-32-system-completely-to-btrfs/9446/6?u=gombosghttps://ask.fedoraproject.org/t/conversion-of-an-existing-ext4-fedora-32-system-completely-to-btrfs/9446/6?u=gombosg
+[3]: https://fedoramagazine.org/reclaim-hard-drive-space-with-lvm/
+[4]: https://fedoramagazine.org/recover-your-files-from-btrfs-snapshots/
+[5]: https://fedoramagazine.org/choose-between-btrfs-and-lvm-ext4/
+[6]: https://fedoramagazine.org/btrfs-coming-to-fedora-33/
+[7]: https://btrfs.wiki.kernel.org/index.php/SysadminGuide
+[8]: https://btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3
+[9]: https://www.mankier.com/8/btrfs
+[10]: https://www.mankier.com/5/btrfs
+[11]: https://www.mankier.com/8/btrfs-convert
+[12]: https://www.mankier.com/8/btrfs-subvolume
+[13]: https://getfedora.org/en/workstation/download/
+[14]: https://www.mankier.com/8/btrfs-subvolume#Subvolume_and_Snapshot
+[15]: https://btrfs.wiki.kernel.org/index.php/Compression
+[16]: https://docs.fedoraproject.org/en-US/fedora/f33/system-administrators-guide/kernel-module-driver-configuration/Working_with_the_GRUB_2_Boot_Loader/#sec-Reinstalling_GRUB_2
+[17]: https://docs.fedoraproject.org/en-US/fedora/f33/system-administrators-guide/kernel-module-driver-configuration/Manually_Upgrading_the_Kernel/#sec-Verifying_the_Initial_RAM_Disk_Image
+[18]: https://www.mankier.com/1/chattr#Attributes-C
+[19]: https://ask.fedoraproject.org/
diff --git a/published/20210211 31 open source text editors you need to try.md b/published/20210211 31 open source text editors you need to try.md
new file mode 100644
index 0000000000..2ce2044280
--- /dev/null
+++ b/published/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/20210305 Build a printer UI for Raspberry Pi with XML and Java.md b/published/20210305 Build a printer UI for Raspberry Pi with XML and Java.md
new file mode 100644
index 0000000000..6d7c365d54
--- /dev/null
+++ b/published/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/20210310 Troubleshoot WiFi problems with Go and a Raspberry Pi.md
new file mode 100644
index 0000000000..6a46d97f7f
--- /dev/null
+++ b/published/20210310 Troubleshoot WiFi problems with Go and a Raspberry Pi.md
@@ -0,0 +1,203 @@
+[#]: subject: "Troubleshoot WiFi problems with Go and a Raspberry Pi"
+[#]: via: "https://opensource.com/article/21/3/troubleshoot-wifi-go-raspberry-pi"
+[#]: author: "Chris Collins https://opensource.com/users/clcollins"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "turbokernel"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14560-1.html"
+
+使用 Go 和树莓派排查 WiFi 问题
+======
+
+> 实现一个 WiFi 扫描器玩玩~
+
+
+
+去年夏天,我和妻子变卖了家产,带着我们的两只狗移居了夏威夷。这里有美丽的阳光、温暖的沙滩、凉爽的冲浪等你能想到的一切。我们同样遇到了一些意料之外的事:WiFi 问题。
+
+不过,这不是夏威夷的问题,而是我们租住公寓的问题。我们住在一个单身公寓里,与房东的公寓仅一墙之隔。我们的租房协议中包含了免费的网络连接!好耶!只不过,它是由房东的公寓里的 WiFi 提供的,哇哦……
+
+说实话,它的效果还不错……吧?好吧,我承认它不尽如人意,并且不知道是哪里的问题。路由器明明就在墙的另一边,但我们的信号就是很不稳定,经常会自动断开连接。在家的时候,我们的 WiFi 路由器的信号能够穿过层层墙壁和地板。事实上,它所覆盖的区域比我们居住的 600 平方英尺(大约 55 平方米)的公寓还要大。
+
+在这种情况下,一个优秀的技术人员会怎么做呢?既然想知道为什么,当然是开始排查咯!
+
+幸运的是,我们在搬家之前并没有变卖掉树莓派 Zero W。它是如此小巧便携! 我当然就把它一起带来了。我有一个机智的想法:通过树莓派和它内置的 WiFi 适配器,使用 Go 语言编写一个小程序来测量并显示从路由器收到的 WiFi 信号。我打算先简单快速地把它实现出来,以后再去考虑优化。真是麻烦!我现在只想知道这个 WiFi 是怎么回事!
+
+谷歌搜索了一番后,我发现了一个比较有用的 Go 软件包 [mdlayher/wifi][2],它专门用于 WiFi 相关操作,听起来很有希望!
+
+### 获取 WiFi 接口的信息
+
+我的计划是查询 WiFi 接口的统计数据并返回信号强度,所以我需要先找到设备上的接口。幸运的是,`mdlayher/wifi` 包有一个查询它们的方法,所以我可以创建一个 `main.go` 来实现它,具体代码如下:
+
+```
+package main
+
+import (
+ "fmt"
+ "github.com/mdlayher/wifi"
+)
+
+func main() {
+ c, err := wifi.New()
+ defer c.Close()
+
+ if err != nil {
+ panic(err)
+ }
+
+ interfaces, err := c.Interfaces()
+
+ for _, x := range interfaces {
+ fmt.Printf("%+v\n", x)
+ }
+}
+```
+
+让我们来看看上面的代码都做了什么吧!首先是导入依赖包,导入后,我就可以使用 `mdlayher/wifi` 模块就在 `main` 函数中创建一个新的客户端(类型为 `*Client`)。接下来,只需要调用这个新的客户端(变量名为 `c`)的 `c.Interfaces()` 方法就可以获得系统中的接口列表。接着,我就可以遍历包含接口指针的切片(变长数组),然后打印出它们的具体信息。
+
+注意到 `%+v` 中有一个 `+` 了吗?它意味着程序会详细输出 `*Interface` 结构体中的属性名,这将有助于我标识出我看到的东西,而不用去查阅文档。
+
+运行上面的代码后,我得到了机器上的 WiFi 接口列表:
+
+```
+&{Index:0 Name: HardwareAddr:5c:5f:67:f3:0a:a7 PHY:0 Device:3 Type:P2P device Frequency:0}
+&{Index:3 Name:wlp2s0 HardwareAddr:5c:5f:67:f3:0a:a7 PHY:0 Device:1 Type:station Frequency:2412}
+```
+
+注意,两行输出中的 MAC 地址(`HardwareAddr`)是相同的,这意味着它们是同一个物理硬件。你也可以通过 `PHY: 0` 来确认。查阅 Go 的 [wifi 模块文档][3],`PHY` 指的就是接口所属的物理设备。
+
+第一个接口没有名字,类型是 `TYPE: P2P`。第二个接口名为 `wpl2s0`,类型是 `TYPE: Station`。`wifi` 模块的文档列出了 [不同类型的接口][4],以及它们的用途。根据文档,`P2P`(点对点传输) 类型表示“该接口属于点对点客户端网络中的一个设备”。我认为这个接口的用途是 [WiFi 直连][5] ,这是一个允许两个 WiFi 设备在没有中间接入点的情况下直接连接的标准。
+
+`Station`(基站)类型表示“该接口是具有控制接入点的客户端设备管理的基本服务集(BSS)的一部分”。这是大众熟悉的无线设备标准功能:作为一个客户端来连接到网络接入点。这是测试 WiFi 质量的重要接口。
+
+### 利用接口获取基站信息
+
+利用该信息,我可以修改遍历接口的代码来获取所需信息:
+
+```
+for _, x := range interfaces {
+ if x.Type == wifi.InterfaceTypeStation {
+ // c.StationInfo(x) returns a slice of all
+ // the staton information about the interface
+ info, err := c.StationInfo(x)
+ if err != nil {
+ fmt.Printf("Station err: %s\n", err)
+ }
+ for _, x := range info {
+ fmt.Printf("%+v\n", x)
+ }
+ }
+}
+```
+
+首先,这段程序检查了 `x.Type`(接口类型)是否为 `wifi.InterfaceTypeStation`,它是一个基站接口(也是本练习中唯一涉及到的类型)。不幸的是名字出现了冲突,这个接口“类型”并不是 Golang 中的“类型”。事实上,我在这里使用了一个叫做 `interfaceType` 的 Go 类型来代表接口类型。呼,我花了一分钟才弄明白!
+
+然后,假设接口的类型正确,我们就可以调用 `c.StationInfo(x)` 来检索基站信息,`StationInfo()` 方法可以获取到关于这个接口 `x` 的信息。
+
+这将返回一个包含 `*StationInfo` 指针的切片。我不大确定这里为什么要用切片,或许是因为接口可能返回多个 `StationInfo`?不管怎么样,我都可以遍历这个切片,然后使用之前提到的 `+%v` 技巧格式化打印出 `StationInfo` 结构的属性名和属性值。
+
+运行上面的程序后,我得到了下面的输出:
+
+```
+&{HardwareAddr:70:5a:9e:71:2e:d4 Connected:17m10s Inactive:1.579s ReceivedBytes:2458563 TransmittedBytes:1295562 ReceivedPackets:6355 TransmittedPackets:6135 ReceiveBitrate:2000000 TransmitBitrate:43300000 Signal:-79 TransmitRetries:2306 TransmitFailed:4 BeaconLoss:2}
+```
+
+我感兴趣的是 `Signal`(信号)部分,可能还有 `TransmitFailed`(传输失败)和 `BeaconLoss`(信标丢失)部分。信号强度是以 dBm(分贝-毫瓦)为单位来报告的。
+
+#### 简短科普:如何读懂 WiFi dBm
+
+根据 [MetaGeek][6] 的说法:
+
+* -30 最佳,但它既不现实也没有必要
+* -67 非常好,它适用于需要可靠数据包传输的应用,例如流媒体
+* -70 还不错,它是实现可靠数据包传输的底线,适用于电子邮件和网页浏览
+* -80 很差,只是基本连接,数据包传输不可靠
+* -90 不可用,接近“背景噪声”
+
+*注意:dBm 是对数尺度,-60 比 -30 要低 1000 倍。*
+
+### 使它成为一个真的“扫描器”
+
+所以,看着上面输出显示的我的信号:-79。哇哦,感觉不大好呢。不过单看这个结果并没有太大帮助,它只能提供某个时间点的参考,只对 WiFi 网络适配器在特定物理空间的某一瞬间有效。一个连续的读数会更有用,借助于它,我们观察到信号随着树莓派的移动而变化。我可以再次修改 `main` 函数来实现这一点。
+
+```
+var i *wifi.Interface
+
+for _, x := range interfaces {
+ if x.Type == wifi.InterfaceTypeStation {
+ // Loop through the interfaces, and assign the station
+ // to var x
+ // We could hardcode the station by name, or index,
+ // or hardwareaddr, but this is more portable, if less efficient
+ i = x
+ break
+ }
+}
+
+for {
+ // c.StationInfo(x) returns a slice of all
+ // the staton information about the interface
+ info, err := c.StationInfo(i)
+ if err != nil {
+ fmt.Printf("Station err: %s\n", err)
+ }
+
+ for _, x := range info {
+ fmt.Printf("Signal: %d\n", x.Signal)
+ }
+
+ time.Sleep(time.Second)
+}
+```
+
+首先,我命名了一个 `wifi.Interface` 类型的变量 `i`。因为它在循环的范围外,所以我可以用它来存储接口信息。循环内创建的任何变量在该循环的范围外都是不可访问的。
+
+然后,我可以把这个循环一分为二。第一个遍历了 `c.Interfaces()` 返回的接口切片,如果元素是一个 `Station` 类型,它就将其存储在先前创建的变量 `i` 中,并跳出循环。
+
+第二个循环是一个死循环,它将不断地运行,直到我按下 `Ctrl + C` 来结束程序。和之前一样,这个循环内部获取接口信息、检索基站信息,并打印出信号信息。然后它会休眠一秒钟,再次运行,反复打印信号信息,直到我退出为止。
+
+运行上面的程序后,我得到了下面的输出:
+
+```
+[chris@marvin wifi-monitor]$ go run main.go
+Signal: -81
+Signal: -81
+Signal: -79
+Signal: -81
+```
+
+哇哦,感觉不妙。
+
+### 绘制公寓信号分布图
+
+不管怎么说,知道这些信息总比不知道要好。让树莓派连接上显示器或者电子墨水屏,并接上电源,我就可以让它在公寓里移动,并绘制出信号死角的位置。
+
+剧透一下:由于房东的接入点在隔壁的公寓里,对我来说最大的死角是以公寓厨房的冰箱为顶点的一个圆锥体形状区域......这个冰箱与房东的公寓靠着一堵墙!
+
+我想如果用《龙与地下城》里的黑话来说,它就是一个“沉默之锥”。或者至少是一个“糟糕的网络连接之锥”。
+
+总之,这段代码可以直接在树莓派上运行 `go build -o wifi_scanner` 来编译,得到的二进制文件 `wifi_scanner` 可以运行在其他同样的ARM 设备上。另外,它也可以在常规系统上用正确的 ARM 设备库进行编译。
+
+祝你扫描愉快!希望你的 WiFi 路由器不在你的冰箱后面!你可以在 [我的 GitHub 存储库][7] 中找到这个项目所用的代码。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/3/troubleshoot-wifi-go-raspberry-pi
+
+作者:[Chris Collins][a]
+选题:[lkxed][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[turbokernel](https://github.com/turbokernel)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/clcollins
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/coffee_tea_selfcare_wfh_porch_520.png
+[2]: https://github.com/mdlayher/wifi
+[3]: https://godoc.org/github.com/mdlayher/wifi#Interface
+[4]: https://godoc.org/github.com/mdlayher/wifi#InterfaceType
+[5]: https://en.wikipedia.org/wiki/Wi-Fi_Direct
+[6]: https://www.metageek.com/training/resources/wifi-signal-strength-basics.html
+[7]: https://github.com/clcollins/goPiWiFi
diff --git a/published/20210323 WebAssembly Security, Now and in the Future.md b/published/20210323 WebAssembly Security, Now and in the Future.md
new file mode 100644
index 0000000000..5957391c6f
--- /dev/null
+++ b/published/20210323 WebAssembly Security, Now and in the Future.md
@@ -0,0 +1,87 @@
+[#]: subject: (WebAssembly Security, Now and in the Future)
+[#]: via: (https://www.linux.com/news/webassembly-security-now-and-in-the-future/)
+[#]: author: (Dan Brown https://training.linuxfoundation.org/announcements/webassembly-security-now-and-in-the-future/)
+[#]: collector: (lujun9972)
+[#]: translator: (hanszhao80)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14592-1.html)
+
+WebAssembly 安全的现在和未来
+======
+
+
+
+### 简介
+
+正如我们 [最近解释的][1],WebAssembly 是一种用于以任何语言编写的二进制格式的软件,旨在最终无需更改就能在任意平台运行。WebAssembly 的第一个应用是在 Web 浏览器中,以使网站更快、更具交互性。WebAssembly 有计划推向 Web 之外,从各种服务器到物联网(IoT),其创造了很多机会,但也存在很多安全问题。这篇文章是对这些问题和 WebAssembly 安全模型的一篇介绍性概述。
+
+### WebAssembly 跟 JavaScript 很像
+
+在 Web 浏览器内部,WebAssembly 模块由执行 JavaScript 代码的同一 虚拟机 管理。因此,WebAssembly 和 JavaScript 一样,造成的危害也是相同的,只是效率更高,更不易被察觉。由于 JavaScript 是纯文本,运行前需要浏览器编译,而 WebAssembly 是一种可立即运行的二进制格式,运行速度更快,也更难被扫描出(即使使用杀毒软件)其中的恶意指令。
+
+WebAssembly 的这种 “代码混淆” 效果已经被用来弹出不请自来的广告,或打开假的 “技术支持” 窗口,要求提供敏感数据。另一个把戏则是自动将浏览器重定向到包含真正危险的恶意软件的 “落地” 页。
+
+最后,就像 JavaScript 一样,WebAssembly 可能被用来 “窃取” 处理能力而不是数据。2019 年,[对 150 个不同的 WASM 模块的分析][2] 发现,其中约 _32%_ 被用于加密货币挖掘。
+
+### WebAssembly 沙盒和接口
+
+WebAssembly 代码在一个由虚拟机(而不是操作系统)管理的 [沙盒][3] 中封闭运行。这使它无法看到主机,也无法直接与主机交互。对系统资源(文件、硬件或互联网连接)的访问只能通过该虚拟机提供的 WebAssembly 系统接口(WASI) 进行。
+
+WASI 不同于大多数其他应用程序编程接口(API),它具有独特的安全特性,真正推动了 WASM 在传统服务器和边缘计算场景中的采用,这将是下一篇文章的主题。在这里,可以说,当从 Web 迁移到其他环境时,它的安全影响会有很大的不同。现代 Web 浏览器是极其复杂的软件,但它是建立在数十年的经验和数十亿人的日常测试之上的。与浏览器相比,服务器或物联网(IoT)设备几乎是未知领域。这些平台的虚拟机将需要扩展 WASI,因此,肯定会带来新的安全挑战。
+
+### WebAssembly 中的内存和代码管理
+
+与普通的编译程序相比,WebAssembly 应用程序对内存的访问非常受限,对它们自己也是如此。WebAssembly 代码不能直接访问尚未调用的函数或变量,不能跳转到任意地址,也不能将内存中的数据作为字节码指令执行。
+
+在浏览器内部,WASM 模块只能获得一个连续字节的全局数组(线性内存)进行操作。WebAssembly 可以直接读写该区域中的任意位置,或者请求增加其大小,但仅此而已。这个线性内存也与包含其实际代码、执行堆栈、当然还有运行 WebAssembly 的虚拟机的区域分离。对于浏览器来说,所有这些数据结构都是普通的 JavaScript 对象,使用标准过程与所有其他对象隔离。
+
+### 结果还好,但不完美
+
+所有这些限制使得 WebAssembly 模块很难做出不当行为,但也并非不可能。
+
+沙盒化的内存使 WebAssembly 几乎不可能接触到 __外部__ 的东西,也使操作系统更难防止 __内部__ 发生不好的事情。传统的内存监测机制,比如 [堆栈金丝雀][4] 能注意到是否有代码试图扰乱它不应该接触的对象,[但在这里没用][5]。
+
+事实上,WebAssembly 只能访问自己的线性内存,但可以直接访问,这也可能为攻击者的行为 _提供便利_。有了这些约束和对模块源代码的访问,就更容易猜测覆盖哪些内存位置可能造成最大的破坏。破坏局部变量似乎也是 [可能的][6],因为它们停留在线性内存中的无监督堆栈中。
+
+2020 年的一篇关于 [WebAssembly 的二进制安全性][5] 的论文指出,WebAssembly 代码仍然可以在设定的常量内存中覆盖字符串文字。同一篇论文描述了在三个不同的平台(浏览器、Node.JS 上的服务端应用程序,和独立 WebAssembly 虚拟机的应用程序)上,WebAssembly 可能比编译为原生二进制文件时更不安全的其他方式。建议进一步阅读此主题。
+
+通常,认为 WebAssembly 只能破坏其自身沙盒中的内容的想法可能会产生误导。WebAssembly 模块为调用它们的 JavaScript 代码做繁重的工作,每次都会交换变量。如果模块在这些变量中的任意一处写入不安全的调用 WebAssembly 的 JavaScript 代码,就 _会_ 导致崩溃或数据泄露。
+
+### 未来的方向
+
+WebAssembly 的两个新出现的特性:[并发][7] 和内部垃圾收集,肯定会影响其安全性(如何影响以及影响多少,现在下结论还为时过早)。
+
+并发允许多个 WebAssembly 模块在同一个虚拟机中并行。目前,只有通过 JavaScript [web workers][8] 才能实现这一点,但更好的机制正在开发中。安全方面,他们可能会带来 [以前不需要的大量的代码][9],也就是更多出错的方法。
+
+为了提高性能和安全性,我们需要一个 [本地的垃圾收集器][10],但最重要的是,要在经过良好测试的浏览器的 Java 虚拟机之外使用 WebAssembly,因为这些虚拟机无论如何都会在自己内部收集所有的垃圾。当然,甚至这个新代码也可能成为漏洞和攻击的另一个入口。
+
+往好处想,使 WebAssembly 比现在更安全的通用策略也是存在的。再次引用 [这篇文章][5],这些策略包括:编译器改进、栈/堆和常量数据的 _分离_ 的线性存储机制,以及避免使用 **不安全的语言**(如 C)编译 WebAssembly 模块代码。
+
+*本文 [WebAssembly 安全的现在和未来][11] 首次发表在 [Linux 基金会 - 培训][12]。*
+
+--------------------------------------------------------------------------------
+
+via: https://www.linux.com/news/webassembly-security-now-and-in-the-future/
+
+作者:[Dan Brown][a]
+选题:[lujun9972][b]
+译者:[hanszhao80](https://github.com/hanszhao80)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://training.linuxfoundation.org/announcements/webassembly-security-now-and-in-the-future/
+[b]: https://github.com/lujun9972
+[1]: https://training.linuxfoundation.org/announcements/an-introduction-to-webassembly/
+[2]: https://www.sec.cs.tu-bs.de/pubs/2019a-dimva.pdf
+[3]: https://webassembly.org/docs/security/
+[4]: https://ctf101.org/binary-exploitation/stack-canaries/
+[5]: https://www.usenix.org/system/files/sec20-lehmann.pdf
+[6]: https://spectrum.ieee.org/tech-talk/telecom/security/more-worries-over-the-security-of-web-assembly
+[7]: https://github.com/WebAssembly/threads
+[8]: https://en.wikipedia.org/wiki/Web_worker
+[9]: https://googleprojectzero.blogspot.com/2018/08/the-problems-and-promise-of-webassembly.html
+[10]: https://github.com/WebAssembly/gc/blob/master/proposals/gc/Overview.md
+[11]: https://training.linuxfoundation.org/announcements/webassembly-security-now-and-in-the-future/
+[12]: https://training.linuxfoundation.org/
diff --git a/published/20210428 Share files between Linux and Windows computers.md b/published/20210428 Share files between Linux and Windows computers.md
new file mode 100644
index 0000000000..a5820c1b3d
--- /dev/null
+++ b/published/20210428 Share files between Linux and Windows computers.md
@@ -0,0 +1,235 @@
+[#]: subject: (Share files between Linux and Windows computers)
+[#]: via: (https://opensource.com/article/21/4/share-files-linux-windows)
+[#]: author: (Stephan Avenwedde https://opensource.com/users/hansic99)
+[#]: collector: (lujun9972)
+[#]: translator: (hanszhao80)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14537-1.html)
+
+如何在 Linux 和 Windows 电脑之间共享文件
+======
+
+> 使用 Samba 设置跨平台文件共享。
+
+
+
+如果你使用不同的操作系统,能够在它们之间共享文件会让你倍感方便。这篇文章介绍如何使用 [Samba][3] 和 [mount.cifs][4] 在 Linux ([Fedora 33][2])和 Windows 10 之间设置文件共享。
+
+Samba 是 [SMB/CIFS][5] 协议的 Linux 实现,允许通过网络连接直接访问共享的文件夹和打印机。 mount.cifs 是 Samba 套件的一部分,可让你在 Linux 下挂载 [CIFS][5] 文件系统。
+
+> **注意**: 这些说明适用于在你的私有本地网络内,或在 Linux 宿主机和虚拟化的 Windows 访客机之间的虚拟主机专用网络中共享文件。不要将本文视为你公司网络的操作指南,因为本文没有实现必要的网络安全考虑。
+
+### 从 Windows 访问 Linux
+
+本节介绍从 Windows 文件资源管理器访问用户的 Linux 主目录。
+
+#### 1、安装和配置 Samba
+
+进入你的系统安装 Samba:
+
+```
+dnf install samba
+```
+
+Samba 是一个系统守护进程,其配置文件位于 `/etc/samba/smb.conf`。它的默认配置应该就可以工作。如果不行,下面这个最小化配置应该可以解决问题:
+
+```
+[global]
+ workgroup = SAMBA
+ server string = %h server (Samba %v)
+ invalid users = root
+ security = user
+[homes]
+ comment = Home Directories
+ browseable = no
+ valid users = %S
+ writable = yes
+```
+
+你可以在该项目网站的 [smb.conf][6] 部分找到参数的详细说明。
+
+#### 2、修改 LinuxSE
+
+如果你的 Linux 发行版受 [SELinux][7] 保护(比如 Fedora),必须通过以下命令才能通过 Samba 共享主目录:
+
+```
+setsebool -P samba_enable_home_dirs on
+```
+
+通过以下命令查看这个值:
+
+```
+getsebool samba_enable_home_dirs
+```
+
+输出如下:
+
+![Sebool][8]
+
+#### 3、启用你的用户
+
+Samba 使用一组用户/密码来管理连接权限。通过键入以下命令将你的 Linux 用户添加到该集合中:
+
+```
+smbpasswd -a <你的用户名>
+```
+
+系统提示你输入密码。这是一个 _全新_ 的密码;而不是你账户的当前密码。请输入你想用来登录 Samba 的密码。
+
+键入以下命令得到有 Samba 使用权限的用户列表:
+
+```
+pdbedit -L -v
+```
+
+键入以下命令删除一个用户:
+
+```
+smbpasswd -x <用户名>
+```
+
+#### 4、开启 Samba
+
+既然 Samba 是一个系统守护进程,你可以在 Fedora 上键入以下命令启动它:
+
+```
+systemctl start smb
+```
+
+这将为当前会话开启 Samba 服务。如果想让它自启动,键入以下命令:
+
+```
+systemctl enable smb
+```
+
+在某些系统上,Samba 守护进程注册为 `smbd`。
+
+#### 4、配置防火墙
+
+你的防火墙会默认阻拦 Samba。通过配置防火墙允许 Samba 能永久访问网络。
+
+你可以在命令行执行如下操作:
+
+```
+firewall-cmd --add-service=samba --permanent
+```
+
+或者,你可以使用 `firewall-config` 工具以图形化方式进行操作:
+
+![firewall-config][10]
+
+#### 5、从 Windows 访问 Samba
+
+在 Windows 中,打开文件资源管理器。在地址栏中,键入两个反斜杠(`\\`),紧跟你的 Linux 机器的地址(IP 地址或主机名):
+
+![从 Windows 访问 Linux][11]
+
+系统将提示你输入登录信息。输入第 3 步中的用户名和密码组合。你现在应该可以访问 Linux 机器上的主目录:
+
+![从 Windows 访问 Linux][12]
+
+### 从 Linux 访问 Windows
+
+以下步骤说明了如何从 Linux 访问共享的 Windows 文件夹。要实现这一点,需要你的 Windows 用户帐户具有管理员权限。
+
+#### 1、启用文件共享
+
+通过点击 “Windows 按钮” > “设置” > “网络和 Internet” ,或者右键单击任务栏右下角的小监视器图标,打开网络和共享中心:
+
+![打开网络和共享中心][13]
+
+在打开的窗口中,找到你要使用的连接并记下其配置文件。我使用了 **以太网 3**,它被标记为 公用网络。
+
+> **注意**:如果你的 PC 经常连接公用网络,请考虑将本地计算机的连接配置文件更改为 **私有**。
+
+记住你的网络配置,然后单击 更改高级共享设置:
+
+![更改高级共享设置][14]
+
+选择与你的连接对应的配置文件并打开 网络发现 和 文件和打印机共享:
+
+![网络共享设置][15]
+
+#### 2、定义一个共享文件夹
+
+通过右键单击你要共享的文件夹打开上下文菜单,导航到 授予访问权限,然后选择 特定用户...:
+
+![授予访问权限][16]
+
+检查你当前的用户名是否在列表中。点击 共享 将此文件夹标记为共享:
+
+![标记为共享][17]
+
+你可以通过在文件资源管理器的地址栏中输入 `\\localhost` 来显示所有共享文件夹的列表:
+
+![共享文件夹][18]
+
+![共享文件夹][19]
+
+#### 3、在 Linux 下挂载共享文件夹
+
+回到你的 Linux 系统,打开一个命令行,然后创建一个新文件夹,用于挂载 Windows 共享:
+
+```
+mkdir ~/WindowsShare
+```
+
+挂载 Windows 共享是使用 `mount.cifs` 完成的,它应该被默认安装。使用如下命令临时挂载你的共享文件夹:
+
+```
+sudo mount.cifs ///MySharedFolder ~/WindowsShare/ -o user=,uid=$UID
+```
+
+在这个命令里:
+
+ * `` 是 Windows PC 的地址信息(IP 或主机名)
+ * `` 是允许访问共享文件夹的用户(见步骤 2)
+
+系统将提示你输入 Windows 密码。之后,你将能够使用普通 Linux 用户访问 Windows 上的共享文件夹。
+
+要卸载共享文件夹:
+
+```
+sudo umount ~/WindowsShare/
+```
+
+你还可以在系统启动时挂载 Windows 共享文件夹。按照 [这些步骤][20] 相应地配置你的系统。
+
+### 总结
+
+在这里展示了如何建立临时的文件夹共享访问权限,每次重启后都要重新设置,因此修改成永久访问会更便利。我经常在不同的系统之间来回切换,对我而言设置直接文件访问非常实用。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/4/share-files-linux-windows
+
+作者:[Stephan Avenwedde][a]
+选题:[lujun9972][b]
+译者:[hanszhao80](https://github.com/hanszhao80)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/hansic99
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003499_01_cloud21x_cc.png?itok=5UwC92dO (Blue folders flying in the clouds above a city skyline)
+[2]: https://getfedora.org/en/workstation/download/
+[3]: https://www.samba.org/
+[4]: https://linux.die.net/man/8/mount.cifs
+[5]: https://en.wikipedia.org/wiki/Server_Message_Block
+[6]: https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html
+[7]: https://www.redhat.com/en/topics/linux/what-is-selinux
+[8]: https://opensource.com/sites/default/files/uploads/sebool.png (Enabling Samba to enable user directory access)
+[9]: https://creativecommons.org/licenses/by-sa/4.0/
+[10]: https://opensource.com/sites/default/files/uploads/firewall_configuration.png (firewall-config tool)
+[11]: https://opensource.com/sites/default/files/uploads/windows_access_shared_1.png (Accessing Linux machine from Windows)
+[12]: https://opensource.com/sites/default/files/uploads/windows_acess_shared_2.png (Accessing Linux machine from Windows)
+[13]: https://opensource.com/sites/default/files/uploads/open_network_and_sharing_center.png (Open network and sharing center)
+[14]: https://opensource.com/sites/default/files/uploads/network_and_sharing_center_2.png (Change advanced sharing settings)
+[15]: https://opensource.com/sites/default/files/uploads/network_sharing.png (Network sharing settings)
+[16]: https://opensource.com/sites/default/files/pictures/give_access_to.png (Give access)
+[17]: https://opensource.com/sites/default/files/pictures/tag_as_shared.png (Tag as shared)
+[18]: https://opensource.com/sites/default/files/uploads/show_shared_folder_1.png (Shared folders)
+[19]: https://opensource.com/sites/default/files/uploads/show_shared_folder_2.png (Shared folders)
+[20]: https://timlehr.com/auto-mount-samba-cifs-shares-via-fstab-on-linux/
diff --git a/published/20210615 Listen to music on FreeDOS.md b/published/20210615 Listen to music on FreeDOS.md
new file mode 100644
index 0000000000..cf546b1181
--- /dev/null
+++ b/published/20210615 Listen to music on FreeDOS.md
@@ -0,0 +1,95 @@
+[#]: subject: (Listen to music on FreeDOS)
+[#]: via: (https://opensource.com/article/21/6/listen-music-freedos)
+[#]: author: (Jim Hall https://opensource.com/users/jim-hall)
+[#]: collector: (lujun9972)
+[#]: translator: (hanszhao80)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14603-1.html)
+
+在 FreeDOS 中聆听音乐
+======
+
+> Mplayer 是 Linux、Windows、Mac 和 DOS 等操作系统上常见的一款开源媒体播放器。
+
+
+
+听音乐是放松心情的好方法。在 Linux 上,我使用 Rhythmbox 听音乐。但是你可能不知道在 FreeDOS 上也可以听音乐。让我们看一下两款流行的音乐播放器吧:
+
+### 用 Mplayer 听音乐
+
+[Mplayer][2] 是一款开源的媒体播放器,通常安装于 Linux、Windows 和 Mac 上,但也有 DOS 版本可用。这里我们讨论的就是在 FreeDOS 版本。虽然其 DOS 移植版基于旧版(2007 年的 1.0rc2-3-3-2 版),但它完全适用于在 DOS 上播放媒体。
+
+我使用 MPlayer 在 FreeDOS 上听音乐文件。在这个例子中,我复制了我最喜欢的有声读物之一,[Big Finish Productions][3] 的神秘博士:闪点行动,并在我的 FreeDOS 计算机上将其保存为 `C:\MUSIC\FLASHPNT.MP3`。为了在 FreeDOS 上收听闪点行动,我从 FreeDOS 命令行启动 MPlayer 并指定要播放的 MP3 文件名。MPlayer 的基本用法是 `mplayer [options] filename`,如果默认设置可用,你应该可以直接使用该文件名启动 MPlayer。在本例中,我运行以下命令将工作目录切换为 `\MUSIC`,然后使用 MPlayer 播放我的 MP3 有声读物文件:
+
+```
+CD \MUSIC
+MPLAYER FLASHPNT.MP3
+```
+
+FreeDOS _不区分大小写_,因此它将忽略 DOS 命令和任何文件或目录的大小写字母的区别。你键入 `cd \music` 或 `Cd \Music` 都可以切换到 Music 目录,效果相同。
+
+![FreeDOS 上的 Mplayer][4]
+
+*你可以用 Mplayer 播放 MP3 文件*
+
+使用 MPlayer 在 FreeDOS 播放音乐文件时没有花哨的界面。但同时,它也不会分散注意力。所以我可以一边让 FreeDOS 在我的 DOS 计算机上播放 MP3 文件,一边使用另一台计算机做其他事情。然而,FreeDOS 一次只运行一个任务(换句话说,DOS 是一个单任务操作系统),所以我不能将 MPlayer 置于 FreeDOS 的“后台”运行,而在 _同一台 FreeDOS 机_ 上处理其他事情。
+
+请注意,MPlayer 是一个需要大量内存才能运行的大程序。虽然 DOS 本身并不需要太多的内存来运行,但我建议至少有 16M 的内存来运行 MPlayer。
+
+### 使用 Open Cubic Player 听音频文件
+
+FreeDOS 不止提供了 MPlayer 来播放媒体。还有 [Open Cubic Player][6],它支持多种文件格式,包括 Midi 和 WAV 文件。
+
+1999 年,我录制了一段简短的音频文件,内容是我说:“你好,我是 Jim Hall,我把 ‘FreeDOS’ 发音为 _FreeDOS_。"这是一个玩笑,借鉴了 Linus Torvalds 录制的演示他如何发音 Linux 的 [类似的音频文件][7](`English.au`,包含在 1994 年的 Linux 源代码树中)中的创意。我们不会在 FreeDOS 中分发这段 FreeDOS 音频剪辑,但欢迎你从我们的 [Silly Sounds][8] 目录中下载它,该目录位于 [Ibiblio][9] 的 FreeDOS 文件存档中。
+
+你可以使用 Open Cubic Player 收听 _FreeDOS_ 音频剪辑。通常从 `\APPS\OPENCP` 目录键入 `CP` 命令运行 Open Cubic Player。但 Open Cubic Player 是 32 位应用程序,运行它需要 32 位 DOS 扩展器。常见的 DOS 扩展器是 DOS/4GW。虽然可以免费使用,但 DOS/4GW 不是开源程序,因此我们不会将其作为 FreeDOS 包分发。
+
+相反,FreeDOS 提供了另一个名为 DOS/32A 的开源32位扩展器。如果你在安装 FreeDOS 时没有安装所有内容,则可能需要使用 [FDIMPLES][10] 进行安装。我使用这两行命令切换到 `\APPS\OPENCP` 路径,并使用 DOS/32A 扩展器运行 Open Cubic Player:
+
+```
+CD \APPS\OPENCP
+DOS32A CP
+```
+
+Open Cubic Player 没有花哨的用户界面,但你可以使用方向键将 文件选择器 导航到包含要播放的媒体文件的目录。
+
+![Open Cubic Player][11]
+
+*Open Cubic Player 打开文件选择器*
+
+文本比在其他 DOS 应用程序中显示的要小,因为 Open Cubic Player 会自动将显示更改为使用 50 行文本,而不是通常的 25 行。当你退出程序时,Open Cubic Player 会将显示重置为 25 行。
+
+选择媒体文件后,Open Cubic Player 将循环播放该文件(按键盘上的 `Esc` 键退出)。当文件通过扬声器播放时,Open Cubic Player 会显示一个频谱仪,以便你可以观察左右声道的音频。FreeDOS 音频剪辑是以单声道录制的,因此左右声道是相同的。
+
+![Open Cubic Player][12]
+
+*Open Cubic Player 中播放 FreeDOS 音频文件*
+
+DOS 可能来自较早的年代,但这并不意味着你不能使用 FreeDOS 来执行现代任务或播放当前的媒体。如果你喜欢听数字音乐,试一试在 FreeDOS上 使用 Open Cubic Player 或 MPlayer 吧!
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/6/listen-music-freedos
+
+作者:[Jim Hall][a]
+选题:[lujun9972][b]
+译者:[hanszhao80](https://github.com/hanszhao80)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/jim-hall
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/programming-code-keyboard-laptop-music-headphones.png?itok=EQZ2WKzy (Woman programming)
+[2]: https://en.wikipedia.org/wiki/MPlayer
+[3]: https://bigfinish.com/
+[4]: https://opensource.com/sites/default/files/uploads/mplayer.png (You can use Mplayer to listen to MP3 files)
+[5]: https://creativecommons.org/licenses/by-sa/4.0/
+[6]: https://www.cubic.org/player/
+[7]: https://commons.wikimedia.org/wiki/File:Linus-linux.ogg
+[8]: https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/util/sillysounds/
+[9]: https://www.ibiblio.org/
+[10]: https://opensource.com/article/21/6/freedos-package-manager
+[11]: https://opensource.com/sites/default/files/uploads/opencp1.png (Open Cubic Player opens with a file selector)
+[12]: https://opensource.com/sites/default/files/uploads/opencp2.png (Open Cubic Player playing the "FreeDOS" audio clip)
diff --git a/published/20210617 Linux package management with dnf.md b/published/20210617 Linux package management with dnf.md
new file mode 100644
index 0000000000..a2cb4a8853
--- /dev/null
+++ b/published/20210617 Linux package management with dnf.md
@@ -0,0 +1,177 @@
+[#]: subject: (Linux package management with dnf)
+[#]: via: (https://opensource.com/article/21/6/dnf-linux)
+[#]: author: (Seth Kenlon https://opensource.com/users/seth)
+[#]: collector: (lujun9972)
+[#]: translator: (hanszhao80)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14542-1.html)
+
+使用 dnf 进行 Linux 包管理
+======
+
+> 了解如何在 Linux 上使用 `dnf` 命令安装软件包,然后下载我们的速查表,让正确的命令触手可及。
+
+
+
+在计算机系统上安装应用程序非常简单:就是将档案(如 `.zip` 文件)中的文件复制到目标计算机上,放在操作系统预期放应用程序的位置。因为我们中的许多人习惯于使用花哨的安装“向导”来帮助我们在计算机上安装软件,所以这个过程似乎在技术上应该比实际更复杂。
+
+然而,复杂的是,是什么构成了一个程序?用户认为的单个应用程序实际上包含了分散在操作系统中的软件库的各种依赖代码(例如:Linux 上的 .so 文件、Windows 上的 .dll 文件和 macOS 上的 .dylib 文件)。
+
+为了让用户不必担心这些程序代码之间的复杂的互相依赖关系, Linux 使用 包管理系统 来跟踪哪些应用程序需要哪些库,哪些库或应用程序有安全或功能更新,以及每个软件会附带安装哪些额外的数据文件。包管理器本质上是一个安装向导。它们易于使用,提供了图形界面和基于终端的界面,让你的生活更轻松。你越了解你的发行版的包管理器,你的生活就会越轻松。
+
+### 在 Linux 上安装应用程序
+
+如果你在使用 Linux 桌面时,偶尔想要安装一个应用程序,那么你可能正在寻找 [GNOME “软件”][2],它是一个桌面应用程序浏览器。
+
+![GNOME “软件” 程序][3]
+
+它会按你的预期工作:点击它的界面,直到你找到一个看起来有用的应用程序,然后单击 “安装” 按钮。
+
+或者,你可以在 GNOME “软件” 中打开从网络下载的 `.rpm` 或 `.flatpakref` 软件包,以便它进行安装。
+
+但如果你更倾向于使用命令行,请继续阅读。
+
+### 用 dnf 搜索软件
+
+在安装应用程序之前,你可能需要确认它是否存在于你的发行版的服务器上。通常,使用 `dnf` 搜索应用程序的通用名称就足够了。例如,假设你最近阅读了 [一篇关于 Cockpit 的文章][4],并决定尝试一下。你可以搜索 `cockpit` 验证该发行版是否包含它:
+
+```
+$ dnf search cockpit
+ Last metadata expiration check: 0:01:46 ago on Tue 18 May 2021 19:18:15 NZST.
+ ==== Name Exactly Matched: cockpit ====
+ cockpit.x86_64 : Web Console for Linux servers
+
+==== Name & Summary Matched: cockpit ==
+ cockpit-bridge.x86_64 : Cockpit bridge server-side component
+ cockpit-composer.noarch : Composer GUI for use with Cockpit
+ [...]
+```
+
+有一个精确的匹配。上面列出的匹配的软件包名为 `cockpit.x86_64`,但名称中的 `.x86_64` 部分仅表示它兼容该 CPU 架构。默认情况下,你的系统会安装适配当前 CPU 架构的软件包,因此你可以忽略该扩展名。所以你确认你要查找的软件包确实简称为 `cockpit`。
+
+现在你可以放心地使用 `dnf install` 安装它。 此步骤需要管理员权限:
+
+```
+$ sudo dnf install cockpit
+```
+
+一般来说,这就是典型的 `dnf` 工作流:搜索并安装。
+
+然而,有时 `dnf search` 的结果并不清晰,或者你想要关于一个软件包的更多信息,而不仅仅是它的通用名称。有一些相关的 `dnf` 子命令,具体取决于你想要的信息。
+
+### 软件包的元数据
+
+如果你觉得你的搜索已 _接近_ 想要的结果,但还不确定,查看软件包的元数据通常会有所帮助,例如项目的网址和描述。要获取此信息,请使用顾名思义的 `dnf info` 命令:
+
+```
+$ dnf info terminator
+Available Packages
+Name : terminator
+Version : 1.92
+Release : 2.el8
+Architecture : noarch
+Size : 526 k
+Source : terminator-1.92-2.el8.src.rpm
+Repository : epel
+Summary : Store and run multiple GNOME terminals in one window
+URL : https://github.com/gnome-terminator
+License : GPLv2
+Description : Multiple GNOME terminals in one window. This is a project to produce
+ : an efficient way of filling a large area of screen space with
+ : terminals. This is done by splitting the window into a resizeable
+ : grid of terminals. As such, you can produce a very flexible
+ : arrangements of terminals for different tasks.
+```
+
+这个信息告诉你可用软件包的版本、在你系统中注册的哪一个存储库提供了它、该项目的网站以及详细的功能描述。
+
+### 哪个软件包提供的这个文件?
+
+软件包名称并不总是与你要查找的内容相匹配。例如,假设你正在阅读的文档告诉你必须安装名为 `qmake-qt5` 的东西:
+
+```
+$ dnf search qmake-qt5
+No matches found.
+```
+
+`dnf` 数据库非常广泛,因此你不要局限于搜索完全匹配的内容。你可以使用 `dnf provides` 命令来了解你正在寻找的东西是否作为某个更大的软件包的一部分而提供:
+
+```
+$ dnf provides qmake-qt5
+qt5-qtbase-devel-5.12.5-8.el8.i686 : Development files for qt5-qtbase
+Repo : appstream
+Matched from:
+Filename : /usr/bin/qmake-qt5
+
+qt5-qtbase-devel-5.15.2-3.el8.x86_64 : Development files for qt5-qtbase
+Repo : appstream
+Matched from:
+Filename : /usr/bin/qmake-qt5
+```
+
+可以确认应用程序 `qmake-qt5` 是名为 `qt5-qtbase-devel` 的软件包的一部分。它还告诉你,该应用程序会安装到 `/usr/bin`,因此你知道了安装后它的确切位置。
+
+### 软件包中包含哪些文件?
+
+有时我发现自己会从完全不同的角度来对待 `dnf`。有时,我已经确认我的系统上安装了一个应用程序;我只是不知道我是怎么得到它的。还有一些时候,我知道我安装了一个特定的软件包,但我不清楚这个软件包到底在我的系统上安装了什么。
+
+如果你需要对包的有效负载进行 “逆向工程”,可以使用 `dnf repoquery` 命令和 `--list` 选项。这将查看存储库中有关软件包的元数据,并列出该软件包提供的所有文件:
+
+```
+$ dnf repoquery --list qt5-qtbase-devel
+/usr/bin/fixqt4headers.pl
+/usr/bin/moc-qt5
+/usr/bin/qdbuscpp2xml-qt5
+/usr/bin/qdbusxml2cpp-qt5
+/usr/bin/qlalr
+/usr/bin/qmake-qt5
+/usr/bin/qvkgen
+/usr/bin/rcc-qt5
+[...]
+```
+
+这些列表可能很长,使用 `less` 或你喜欢的分页命令配合管道操作会有所帮助。
+
+### 移除应用程序
+
+如果你决定系统中不再需要某个应用程序,可以使用 `dnf remove` 卸载它,该软件包本身安装的文件以及不再需要的任何依赖项都会被移除:
+
+```
+$ dnf remove bigapp
+```
+
+有时,你发现随着一个应用程序一起安装的依赖项对后来安装的其他应用程序也有用。如果两个包需要相同的依赖项,`dnf remove` _不会_ 删除依赖项。在安装和卸载大量应用程序之后,孤儿软件包散落各处的现象并不少见。大约每年我都要执行一次 `dnf autoremove` 来清除所有未使用的软件包:
+
+```
+$ dnf autoremove
+```
+
+这不是必需的,但这是一个让我的电脑感觉更好的大扫除步骤。
+
+### 了解 dnf
+
+你对包管理器的工作方式了解得越多,在必要时安装和查询应用程序就越容易。即便你不是 `dnf` 的重度使用者,当你发现自己与基于 RPM 的发行版交互时,了解它也会很有用。
+
+告别 `yum` 后,我最喜欢的包管理器之一是 `dnf` 命令。虽然我不喜欢它的所有子命令,但我发现它是目前最健壮的 包管理系统 之一。 [下载我们的 dnf 速查表][5] 习惯该命令,不要害怕尝试一些新技巧。一旦熟悉了它,你可能会发现很难使用其他任何东西替代它。
+
+> **[dnf 速查表][5]**
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/6/dnf-linux
+
+作者:[Seth Kenlon][a]
+选题:[lujun9972][b]
+译者:[hanszhao80](https://github.com/hanszhao80)
+校对:[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/brown-package-red-bow.jpg?itok=oxZYQzH- (Package wrapped with brown paper and red bow)
+[2]: https://wiki.gnome.org/Apps/Software
+[3]: https://opensource.com/sites/default/files/gnome-software.png (The GNOME Software app)
+[4]: https://opensource.com/article/20/11/cockpit-server-management
+[5]: https://opensource.com/downloads/dnf-cheat-sheet
diff --git a/published/20210624 Linux package management with apt.md b/published/20210624 Linux package management with apt.md
new file mode 100644
index 0000000000..719f02d766
--- /dev/null
+++ b/published/20210624 Linux package management with apt.md
@@ -0,0 +1,184 @@
+[#]: subject: (Linux package management with apt)
+[#]: via: (https://opensource.com/article/21/6/apt-linux)
+[#]: author: (Chris Hermansen https://opensource.com/users/clhermansen)
+[#]: collector: (lujun9972)
+[#]: translator: (hanszhao80)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14558-1.html)
+
+使用 apt 进行 Linux 包管理
+======
+
+> 学习如何使用 apt 命令在基于 Debian 的 Linux 发行版上安装软件包,然后下载我们的速查表,让正确的命令触手可及。
+
+
+
+[包管理器][2] 可帮助你处理 Linux 系统的计算机上软件的更新、卸载、故障排除等问题。Seth Kenlon 写了 [使用 dnf 进行 Linux 包管理][3] 一文,介绍了如何使用 `dnf` 这款命令行包管理工具,在 RHEL、CentOS、Fedora、Mageia、OpenMandriva 等 Linux 发行版中安装软件。
+
+Debian 和基于 Debian 的发行版(例如 MX Linux、Deepin、Ubuntu)以及基于 Ubuntu 的发行版(例如 Linux Mint 和 Pop!_OS)都有 `apt`,这是一个“相似但不同”的工具。在本文中,我将按照 Seth 的示例(但使用 `apt`)向你展示如何使用它。
+
+在一开始,我想先提一下四个跟 `apt` 相关的软件安装工具:
+
+ * [Synaptic][4] 是为 `apt` 服务的一个基于 GTK+ 的图形用户界面(GUI)的前端工具。
+ * [Aptitude][5] 是为 `apt` 服务的一个基于 Ncurses 的全屏命令行前端工具。
+ * `apt` 的前身有 `apt-get`、`apt-cache` 等工具。
+ * [Dpkg][6] 是在 `apt` 包管理器背后处理繁杂事务的”幕后工作者“。
+
+还有其他的包管理系统,例如 [Flatpak][7] 和 [Snap][8],你可能会在 Debian 和基于 Debian 的系统上遇到它们,但我不打算在这里讨论。还有一些应用程序“商店”,例如 [GNOME “软件”][9],与 `apt` 和其他打包技术重叠;我也不打算在这里讨论它们。最后,还有其他 Linux 发行版,例如 [Arch][10] 和 [Gentoo][11] 既不使用 `dnf` 也不使用 `apt`,我也不打算在这里讨论它们!
+
+上面我讲了这么多我不想提及的内容,你可能怀疑 `apt` 到底还能处理多少软件。这么说吧,在我的 Ubuntu 20.04 上,`apt` 可以让我使用 69,371 个软件包,从 `0ad`(一款古代战争题材的即时战略游戏)到 `zzuf`(一个透明的应用程序模糊测试工具),一点也不差。
+
+### 使用 apt 搜索软件
+
+使用 `apt` 软件包管理器的第一步是找到感兴趣的软件包。Seth 的 `dnf` 文章以 [Cockpit][12] 服务器管理应用程序为例。用 `apt` 我会输入如下命令:
+
+```
+$ apt search cockpit
+Sorting... Done
+Full Text Search... Done
+389-ds/hirsute,hirsute 1.4.4.11-1 all
+ 389 Directory Server suite - metapackage
+
+cockpit/hirsute,hirsute 238-1 all
+ Web Console for Linux servers
+
+...
+$
+```
+
+上面的第二个包就是你要的那个(以 `cockpit/hirsute` 开头的那一行)。如果你决定要安装它,输入:
+
+```
+$ sudo apt install cockpit
+```
+
+`apt` 将负责安装 Cockpit 以及使其工作所需的所有部件或 _依赖_。有时我们不太确定这是我们所需要的。了解更多的信息可能有助于你决定是否真的要安装此应用程序。
+
+### 包元数据
+
+要了解有关软件包的更多信息,使用 `apt show` 命令:
+
+```
+$ apt show cockpit
+Package: cockpit
+Version: 238-1
+Priority: optional
+Section: universe/admin
+Origin: Ubuntu
+Maintainer: Ubuntu Developers
+Original-Maintainer: Utopia Maintenance Team
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Installed-Size: 88.1 kB
+Depends: cockpit-bridge (>= 238-1), cockpit-ws (>= 238-1), cockpit-system (>= 238-1)
+Recommends: cockpit-storaged (>= 238-1), cockpit-networkmanager (>= 238-1), cockpit-packagekit (>= 238-1)
+Suggests: cockpit-doc (>= 238-1), cockpit-pcp (>= 238-1), cockpit-machines (>= 238-1), xdg-utils
+Homepage: https://cockpit-project.org/
+Download-Size: 21.3 kB
+APT-Sources: http://ca.archive.ubuntu.com/ubuntu hirsute/universe amd64 Packages
+Description: Web Console for Linux servers
+ The Cockpit Web Console enables users to administer GNU/Linux servers using a
+ web browser.
+ .
+ It offers network configuration, log inspection, diagnostic reports, SELinux
+ troubleshooting, interactive command-line sessions, and more.
+
+$
+```
+
+特别要注意的是 `Description` 字段,它会告诉你更多关于应用程序的信息。`Depends` 字段说明还必须安装什么,而 `Recommends` 则显示建议安装的其他(如果有的话)合作组件。`Homepage` 字段会提供一个网址,通过它你可以了解更多。
+
+### 哪个包提供的这个文件?
+
+有时你并不知道包名,但你知道包里一定包含着的某个文件。Seth 以 `qmake-qt5` 程序作为示例。使用 `apt search` 找不到它:
+
+```
+$ apt search qmake-qt5
+Sorting... Done
+Full Text Search... Done
+$
+```
+
+但是,另一个有关联的命令 `apt-file` 可以用来探索包内部:
+
+```
+$ apt-file search qmake-qt5
+qt5-qmake-bin: /usr/share/man/man1/qmake-qt5.1.gz
+$
+```
+
+这时会显示一个 `qmake-qt5` 的手册页。它是一个名为 `qt5-qmake-bin` 的包的一部分。注意,此包名称颠倒了字符串 `qmake` 和 `qt5` 的顺序。
+
+### 包里包含哪些文件?
+
+方便的 `apt-file` 命令会列出给定的包中包含哪些文件。例如:
+
+```
+$ apt-file list cockpit
+cockpit: /usr/share/doc/cockpit/TODO.Debian
+cockpit: /usr/share/doc/cockpit/changelog.Debian.gz
+cockpit: /usr/share/doc/cockpit/copyright
+cockpit: /usr/share/man/man1/cockpit.1.gz
+cockpit: /usr/share/metainfo/cockpit.appdata.xml
+cockpit: /usr/share/pixmaps/cockpit.png
+$
+```
+
+注意,这与 `apt show` 命令提供的信息不同,后者列出了包的依赖(其他必须安装的包)。
+
+### 移除一个应用程序
+
+你还可以使用 `apt` 移除软件包。例如,要移除`apt-file` 应用程序:
+
+```
+$ sudo apt purge apt-file
+```
+
+注意必须由超级用户运行 `apt` 才能安装或移除应用程序。
+
+移除一个包并不会自动移除 `apt` 在此过程中安装的所有依赖项。不过,一点点的工作就很容易去除这些残留:
+
+```
+$ sudo apt autoremove
+```
+
+### 认识一下 apt
+
+正如 Seth 所写的,“你对包管理器的工作方式了解得越多,在需要安装和查询应用程序时就会越容易。”
+
+即便你不是 `apt` 的重度使用者,当你需要在命令行中安装或删除软件包时(例如,在一台远程服务器上或遵循某些热心肠发布的操作指南时),掌握一些 `apt` 的知识也会很有用。在某些软件创作者仅提供了一个裸 `.pkg` 文件的情况下,可能还需要了解一些关于 dpkg 的知识(如上所述)。
+
+我发现 Synaptic 包管理器在我的桌面上是一个非常有用的工具,但出于各种目的,我也在少数维护的服务器上使用着 `apt`。
+
+[下载我们的 apt 速查表][15] 习惯该命令并尝试一些新技巧。一旦你这样做了,你可能会发现很难再使用其他任何东西。
+
+> **[apt 速查表][15]**
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/6/apt-linux
+
+作者:[Chris Hermansen][a]
+选题:[lujun9972][b]
+译者:[hanszhao80](https://github.com/hanszhao80)
+校对:[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/bash_command_line.png?itok=k4z94W2U (bash logo on green background)
+[2]: https://opensource.com/article/21/2/linux-package-management
+[3]: https://linux.cn/article-14542-1.html
+[4]: https://www.nongnu.org/synaptic/
+[5]: https://wiki.debian.org/Aptitude
+[6]: https://wiki.debian.org/Teams/Dpkg
+[7]: https://flatpak.org/
+[8]: https://snapcraft.io/
+[9]: https://wiki.gnome.org/Apps/Software
+[10]: https://archlinux.org/
+[11]: https://www.gentoo.org/
+[12]: https://opensource.com/article/20/11/cockpit-server-management
+[13]: mailto:ubuntu-devel-discuss@lists.ubuntu.com
+[14]: mailto:pkg-utopia-maintainers@lists.alioth.debian.org
+[15]: https://opensource.com/downloads/apt-cheat-sheet
diff --git a/published/20210710 A new open source operating system for embedded systems.md b/published/20210710 A new open source operating system for embedded systems.md
new file mode 100644
index 0000000000..2674c8d4dc
--- /dev/null
+++ b/published/20210710 A new open source operating system for embedded systems.md
@@ -0,0 +1,91 @@
+[#]: subject: (A new open source operating system for embedded systems)
+[#]: via: (https://opensource.com/article/21/7/rt-thread-smart)
+[#]: author: (Zhu Tianlong https://opensource.com/users/zhu-tianlong)
+[#]: collector: (lujun9972)
+[#]: translator: (tendertime)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14552-1.html)
+
+一种新的开源嵌入式操作系统
+======
+
+> RT-Thread Smart 致力于物联网和边缘计算领域的开源。
+
+
+
+目前对 [嵌入式操作系统][2] 有巨大的需求,你建立的操作系统最好是开源的。[RT-Thread][3] 项目的研发团队花了两年时间,研发出了该项目的最新成果:RT-Thread Smart。这是一款微内核的操作系统,主要针对中高端的处理器,如具有内存管理单元(MMU)的 RISC-V 或 Arm Cortex-A,为嵌入式领域的所有行业提供了一个具有竞争力的、基于 POSIX 的软件平台。
+
+### 谁需要 RT-Thread Smart?
+
+RT-Thread Smart 是一款专业的、高性能的微内核操作系统,用于实时应用。它为所有市场的嵌入式设备提供了开源基础,如安全(IP 摄像头)、工业控制、车载设备、消费电子及其他嵌入式科技应用,可谓一切场景。它的意义在于:不像传统的物联网操作系统,一个微内核的操作系统可以填补传统实时操作系统 RTOS 和相对大型的操作系统如 Linux 之间的空白,实现实时性能、成本、安全、启动速度等等各方面之间的最佳平衡。
+
+### RT-Thread Smart 的架构
+
+RT-Thread Smart 通过 MMU 和系统调用将系统分割为内核模式和用户模式,并为每种模式区分了地址空间(一个 32 位系统可以提供 4G 地址空间)。
+
+![RT-Thread Smart 架构][4]
+
+(RT-Thread, [CC BY-SA 4.0][5])
+
+RT-Thread Smart 内核包括平台的基础功能,并支持定制化。RT-Thread Smart 的用户应用环境使用 [musl libc][6] 来提供 [POSIX][7] 接口调用和 C 语言的运行时支持。它也继承了原始的 RT-Thread 生态系统,使用 [SCons][8] 或者其他编译工具如 [Autotools][9]、Makefile、[CMake][10] 等等来支持开发,以及 RT-Thread 开箱即用的在线软件包(撰写本文时超过 342 个)。你甚至可以将 Linux 应用程序(如 wget/cURL、BusyBox、OpenSSL 和 Simple DirectMedia Layer)移植到你的平台。
+
+压缩的 RT-Thread Smart 内核仅 217 KB,搭配一个 127 KB 的根文件系统。大约 2 MB的存储占用。包括了对文件系统、网络协议栈、多媒体的完整支持。RT-Thread 只需要 3 到 5 秒完成启动,而在不运行其他功能组件时,RT-Thread Smart 需要的启动及准备时间不到 500ms。
+
+通过其集成的 Persimmon 用户界面(UI)组件,RT-Thread Smart 从上电到运行 UI 需要大约 1 秒。换句话说,这是一个非常轻巧快速的系统。当然,“实时”不是指启动,而是指系统随着时间推进而表现出的一致性。对于 RT-Thread ,实时性能需要优先考虑,中断时延小于 1μs,满足大部分实时性要求严格的场景需求。
+
+### RT-Thread Smart 和 RT-Thread
+
+你可能想知道 RT-Thread Smart 和 RT-Thread 之间的不同。简单来说, RT-Thread Smart 是一个基于 RT-Thread RTOS 的操作系统,但它整合了用户态的处理过程。RT-Smart 的内核部分本质上是 RT-Thread RTOS,它在虚拟地址上运行,增加了进程管理,使用进程间通信机制(IPC)、虚拟内存/地址空间管理、ELF 加载器等等,以上特性全部在 RT-Thread RTOS 内实现,当这些组件被禁用时,RT-Smart 会回归 RT-Thread RTOS。
+
+以下是对比:
+
+| | RT-Thread | RT-Thread Smart
+ :-----| :----: | :----:
+支持芯片 | Cortex-M/R、RISC-V RV32IMAC(以及类似)、Cortex-A MPU | Cortex-A 等具有 MMU 的 MPU
+编译 | 内核和应用都编译到一个镜像 | 内核和应用可以被分开编译和运行
+存储 | 使用线性地址空间(即使有 MMU),使用物理地址的虚拟寻址 | 运行在内核占用超过 1GB 的 32 位操作系统,拥有完整 4G 地址空间的用户态进程彼此隔离,外设驱动程序必须通过虚拟地址访问外设
+运行错误 | 当一个应用程序失败时,整个系统就会崩溃 | 当应用程序失败时,它不会影响内核和其他进程的执行
+运行模式 | 多线程模型 | 多进程模型(进程内支持多线程,内核线程由内核支持)
+用户模型 | 单用户模型 | 单用户模型
+API | RT-Thread API、POSIX PSE52 | RT-Thread API(内核态和用户态),以及完整的 POSIX API
+实时性 | 抢占式硬实时系统 | 抢占式硬实时系统
+资源使用 | 非常小 | 相对小
+调试 | 通常需要模拟器调试 | 支持 GDB 调试,不需要模拟器
+
+RT-Thread RTOS 非常紧凑,它的所有应用和子系统都编译到镜像中,多线程应用运行并分享相同的地址空间。
+
+RT-Thread Smart 是独立的。系统和应用是分别编译和运行的。应用拥有完整且互相隔离的地址空间。它也继承了 RT-Thread 优秀的实时性,同时也具有 POSIX 环境的特性。
+
+类似地,它们都与 RT-Thread API 兼容。RT-Thread RTOS 的应用可以被平滑移植到 RT-Thread Smart。
+
+### 嵌入式开源
+
+RT-Thread Smart 是一个开源项目,项目地址:[GitHub][11]。你可以下载代码和文档,尝试一下,并提交评论和反馈,将该项目传播给更多开源倡导者。嵌入式系统属于它们的用户,有太多的嵌入式开发人员没有找到太多可用的嵌入式系统。
+
+如果你是开发人员,请帮助改进 RT-Thread Smart。随着 RT-Thread 项目的不断推进,我们希望创建物联网和边缘计算的令人激动的开源世界。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/7/rt-thread-smart
+
+作者:[Zhu Tianlong][a]
+选题:[lujun9972][b]
+译者:[tendertime](https://github.com/tendertime)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/zhu-tianlong
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/LAW-Internet_construction_9401467_520x292_0512_dc.png?itok=RPkPPtDe (An intersection of pipes.)
+[2]: https://opensource.com/article/20/6/open-source-rtos
+[3]: https://www.rt-thread.io/
+[4]: https://opensource.com/sites/default/files/uploads/rt-thread-smart.png (RT-Thread Smart architecture)
+[5]: https://creativecommons.org/licenses/by-sa/4.0/legalcode
+[6]: https://musl.libc.org/
+[7]: https://opensource.com/article/19/7/what-posix-richard-stallman-explains
+[8]: https://scons.org/
+[9]: https://opensource.com/article/19/7/introduction-gnu-autotools
+[10]: https://opensource.com/article/21/5/cmake
+[11]: https://github.com/RT-Thread/rt-thread/tree/rt-smart
diff --git a/published/20211213 How I use open source to design my own card games.md b/published/20211213 How I use open source to design my own card games.md
new file mode 100644
index 0000000000..b2d051df18
--- /dev/null
+++ b/published/20211213 How I use open source to design my own card games.md
@@ -0,0 +1,111 @@
+[#]: subject: "How I use open source to design my own card games"
+[#]: via: "https://opensource.com/article/21/12/open-source-card-game"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lujun9972"
+[#]: translator: "hadisi1993"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14551-1.html"
+
+我如何利用开源设计自己的卡牌游戏
+======
+
+> 开源并不仅仅指的是软件。开源是一种文化现象,自然也适合桌面游戏。
+
+
+
+我喜欢优秀的游戏,尤其是桌游,因为桌游的很多特性都和开源相同。在现实生活中,当你和朋友围坐在桌旁一起玩卡牌游戏时,作为一个团队,你们可以一起决定小丑牌是不是万能的。还有,你们可以随意地决定当出了小丑牌后,手上有 Ace 牌的人的要不要舍弃 Ace 牌,或者出了方块皇后以后,每个人是不是都要把手上的牌传给右手边的人。换句话说,你们可以随心所欲地重新制定规则,因为游戏不过是参与者们一致认同的条件集合罢了。对我来说,更棒的是你可以发明自己的游戏,而不用破坏别人的游戏规则。有时候,我会作为一个业余爱好者来开发桌游。因为我喜欢把自己的爱好结合起来,所以我倾向于只使用开源和开放的文化资源来设计游戏。
+
+首先,游戏有大致有两个关键特征,风格和机制,理解这一点非常重要。游戏风格指的是游戏的故事或者主题,游戏机制指的是游戏的规则和条件。这两者并不总是完全脱离的,举个例子,在设计一款以赛车为主题的游戏时,自然而然就会要求玩家迅速完成动作。然而,风格和机制通常是被分开对待的,所以我们完全可以为了好玩就去创造一款使用标准扑克牌,却以太空羊驼为主题的游戏。
+
+### 开源美术
+
+如果你去过现代艺术博物馆,你可能会发现自己站在一幅纯蓝色的画布前,无意中听到有人说起老话:“见鬼,这我也能做!”。但事实是,艺术是一项艰巨的工作。创作赏心悦目的艺术品需要付出大量的思考、时间、信心和技巧。这也意味着艺术是你在设计游戏时中最难采购的部分之一。
+
+我有一些“技巧”来解决这个典型难题。
+
+#### 1、寻找同类素材
+
+现在有很多免费、开放的艺术作品,而且大部分质量上佳。问题在于,游戏通常需要不止一件作品。如果你正在设计一款纸牌游戏,你大概至少需要四到六个不同的元素(假设你的纸牌遵循塔罗牌风格),有可能还需要更多。如果你花足够多的时间在这上面,你可以在 [OpenGameArt.org][3]、[FreeSVG.org][4]、[ArtStation.com][5]、[DeviantArt.com][6] 等网站上找到[知识共享和公共领域][2]的艺术作品。
+
+如果你使用的网站没有专门搜索知识共享的功能,输入以下文字到任何搜索引擎当中,`"This work is licensed under a Creative Commons"` 或 `"本工作处于知识共享许可协议之下"`(引号很重要,不要把它们漏了),并用搜索引擎要求的语法,以便将搜索限制到一个具体的站点当中(举个例子,`site:deviantart.com`)。
+
+一旦你有了一个可供挑选素材的艺术库,那就去辨别这些作品的主题,并根据主题分类。两个不同的人拍摄的机器人的照片可能看起来一点都不像,但它们的主题都是机器人。如果提供给你足够多机器人相关的美术素材,你可以围绕机器人这个主题构建你的游戏风格。
+
+#### 2、委托创作知识共享艺术
+
+你可以雇艺术家来为你定制艺术作品。我与使用开源绘画程序(如 [Krita][7] 和 Mypaint)的艺术家一起合作。同时,作为合同的一部分,我规定艺术作品必须在知识共享署名-相同方式许可证(CC BY-SA)下授权。迄今为止,只有一位艺术家因为许可证的限制拒绝了我的提议,并且大多数人都很高兴自己的美术作品有可能有更大的生命力,而不仅仅是作为业余爱好者自己发行的游戏的一部分。
+
+#### 3、创作自己的艺术
+
+就像现代艺术馆之旅展示的那样,艺术是一个非常灵活的词。我发现只要我给自己设定一个目标,也就是我需要为一款游戏创造多少纸牌或令牌,我便能够从 Linux 上的丰富图像创造工具中选择一种去创作。这并不需要什么高难度的东西。就像现代艺术一样,你可以用蓝色和黄色的条纹,或者红色和白色的圆点花纹,或者绿色和紫色的锯齿线来涂一张卡片,只要你能把它们画出来,那么除了你以外,其他人永远不会知道你暗地里把它们当做仙宫里的贵族和小姐。想想看,通过运用图形应用程序,描摹日常物品的照片,重组经典的扑克花色和塔罗牌主题等一系列方式,你可以创造出的简单作品吧。
+
+### 版面设计
+
+我用 [Inkscape][8]、Scribus 或者 [GIMP][9] 来进行版面设计,这取决与我有什么素材以及我追求的设计方式是什么。
+
+对于卡牌,我发现简单的版面设计很容易实现,看上去也更好,纯色比渐变色更容易印刷,还有,直观的图像是最棒的。
+
+![layout in Inkscape][10]
+
+(Seth Kenlon, CC BY-SA 4.0)
+
+我在一个单独的 Inkscape 文件中为我最新的游戏做了版面设计,这个游戏只使用了来自 OpenGameArt.com 上三四个不同艺术家的九张图片。在有着更大的美工集,更好的卡牌多样性的游戏中,我会在游戏中的每一种卡片的文件中为它们设计版面。
+
+在为你的游戏素材做任何版面设计之前,要先了解你的目标输出是什么。如果你打算在家里打印游戏,那就做一些计算,搞清楚默认的纸张大小(有些是 US Letter,或者是 A4)可以容纳多少卡牌、令牌或卡片。如果你使用 [TheGameCrafter][11] 之类的桌游打印机打印,请下载好模板文件。
+
+![printed cards][12]
+
+(Seth Kenlon, CC BY-SA 4.0)
+
+### 游戏机制
+
+游戏机制是游戏中最重要的部分。它们使一款游戏成为游戏。开发游戏规则并不一定是一个正式的过程。你可以一时兴起地创造了一款游戏,可以拿一个现有的游戏重组它的规则,直到它和原来不同,可以修改一款你不喜欢的游戏,也可以将两款不同的游戏组合在一起。从简单容易的地方做起,拿索引卡,标准扑克牌,或塔罗牌去试着模拟你的想象中游戏是如何工作的。你可以自己尝试早期的游戏创意,但最终,让朋友来帮忙是找出意外故障和进行优化的好方法。
+
+经常测试游戏。与不同类型的玩家一起玩游戏,并听取他们的反馈。你的游戏可能会激发许多玩家去创造新的规则和想法,因此要将关于 _哪些搞砸了_ 的反馈与关于 _哪些可以做修改_ 的反馈分开。你不一定要去真的实施这些反馈意见,只需迭代你的想法,但还是要仔细考虑错误报告。
+
+一旦确定了你想要让你的规则如何运作,就把它们写下来,让它们 [简短且容易解析][13]。你定的规则不必说服玩家去玩这款游戏,不必向他们解释策略,你也不必允许玩家重新设置规则,只要告诉玩家为了让游戏玩起来,他们应该采取的步骤就可以了。
+
+最重要的是,考虑一下,将你的规则开源。分享经验是游戏的一切,这其中也应该包括规则。知识共享或开放游戏许可证的规则集合允许其他玩家在你的作品上进行迭代、混合和构建。你永远不会知道,有人可能会因此想出一个你更喜欢的游戏变体!
+
+### 开源游戏
+
+开源不仅仅指的是软件。开源是一种文化现象,自然也适合桌面游戏。花几个晚上的时间来尝试制作游戏。如果你是新手,那就从一些简单的开始,比如下面的这个空白卡牌游戏:
+
+ 1. 找来一些朋友。
+ 2. 给每个人几张空白的索引卡,告诉他们在每张卡片上写一条规则。规则可以是任何东西(“如果你穿着红色衣服,你就赢了”或“第一个站起来的人赢”等等)。
+ 3. 在你自己的索引卡片上,写上 “和”、“但是”、“但是不要”、“而且不要”、“除了”,以及其他的条件短语。
+ 4. 洗牌并将牌发给所有玩家。
+ 5. 每个玩家轮到的时候出一张牌。
+ 6. 最终目标是获胜,但是玩家可以通过出 “和”、“但是”、“或者” 卡片来修改决定胜负的条件。
+
+这是一个有趣的聚会游戏,同时是一份很好的介绍,告诉你如何像游戏设计者一样思考,它帮助你认识到什么适合作为游戏机制,什么不适合。
+
+还有,当然的,这是开源的。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/12/open-source-card-game
+
+作者:[Seth Kenlon][a]
+选题:[lujun9972][b]
+译者:[hadisi1993](https://github.com/hadisi1993)
+校对:[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/rich-smith-unsplash.jpg?itok=uzzS0gRa (Deck of playing cards)
+[2]: https://opensource.com/article/20/1/what-creative-commons
+[3]: https://opensource.com/article/21/12/opengameart.org/
+[4]: http://freesvg.org
+[5]: http://artstation.com
+[6]: http://deviantart.com
+[7]: https://opensource.com/article/21/12/krita-digital-paint
+[8]: https://opensource.com/article/21/12/linux-draw-inkscape
+[9]: https://opensource.com/content/cheat-sheet-gimp
+[10]: https://opensource.com/sites/default/files/inkscape-layout.jpg (Layout in Inkscape)
+[11]: https://www.thegamecrafter.com/
+[12]: https://opensource.com/sites/default/files/cards-printed_0.jpg (Printed cards)
+[13]: https://opensource.com/life/16/11/software-documentation-tabletop-gaming
diff --git a/published/20220113 Learn Rust in 2022.md b/published/20220113 Learn Rust in 2022.md
new file mode 100644
index 0000000000..5995ca8a67
--- /dev/null
+++ b/published/20220113 Learn Rust in 2022.md
@@ -0,0 +1,275 @@
+[#]: subject: "Learn Rust in 2022"
+[#]: via: "https://opensource.com/article/22/1/rust-cheat-sheet"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lujun9972"
+[#]: translator: "hanszhao80"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14563-1.html"
+
+2022 Rust 入门指南
+======
+
+> 如果你打算在今年探索 Rust,请下载我们的免费 Rust 速查表,以供快速参考基础知识。
+
+
+
+Rust 是一门相对较新的编程语言,受到各个企业的 [程序员的欢迎][2]。尽管如此,它仍是一门建立在之前所有事物之上的语言。毕竟,Rust 不是一天做出来的,所以即便 Rust 中的一些概念看起来与你从 Python、Java、C++ 等编程语言学到的东西大不相同,但它们都是基于同一个基础,那就是你一直与之交互(无论你是否知道)的 CPU 和 NUMA(非统一内存访问)架构,因此 Rust 中的一些新功能让人感觉有些熟悉。
+
+现在,我的职业不是程序员。我没耐心但我又有点儿强迫症。当我需要完成某件事时,如果一门语言不能帮助我相对较快地获得想要的结果,那么我很少会受到鼓舞而使用它。Rust 试图平衡两个矛盾:现代计算机对安全和结构化代码的需求,和现代程序员对编码工作事半功倍的渴望。
+
+### 安装 Rust
+
+[rust-lang.org][3] 网站有丰富的的文档指导如何安装 Rust,但通常,它就像下载 `sh.rustup.rs` 脚本并运行它一样简单。
+
+```
+$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs
+$ less sh.rustup.sh
+$ sh ./sh.rustup.rs
+```
+
+### 没有类
+
+Rust 没有类,也不使用 `class` 关键字。Rust 确实有 `struct` 数据类型,但它的作用是充当数据集合的一种模板。因此,你可以使用结构体,而不是创建一个类来表示虚拟对象:
+
+```
+struct Penguin {
+ genus: String,
+ species: String,
+ extinct: bool,
+ classified: u64,
+}
+```
+
+你可以像使用类一样使用它。例如,当定义完 `Penguin` 结构,你就可以创建它的实例,并与该实例进行交互:
+
+```
+struct Penguin {
+ genus: String,
+ species: String,
+ extinct: bool,
+ classified: u64,
+}
+
+fn main() {
+ let p = Penguin { genus: "Pygoscelis".to_owned(),
+ species: "R adeliæ".to_owned(),
+ extinct: false,
+ classified: 1841 };
+
+ println!("Species: {}", p.species);
+ println!("Genus: {}", p.genus);
+ println!("Classified in {}", p.classified);
+ if p.extinct == true {
+ println!("Sadly this penguin has been made extinct.");
+ }
+}
+```
+
+将 `impl` 数据类型与 `struct` 数据类型结合使用,你可以实现一个包含函数的结构体,并且可以添加继承和其他与类相似的特性。
+
+### 函数
+
+Rust 中的函数很像其他语言中的函数。每个函数都代表一组严谨的任务,你可以在需要时调用它们。主函数名必须是 `main`。
+
+用 `fn` 关键字声明函数,后跟函数名称和函数接受的所有参数。
+
+```
+fn foo() {
+ let n = 8;
+ println!("Eight is written as {}", n);
+}
+```
+
+通过参数,将信息从一个函数传递到另一个函数。例如,我已经创建了一个 `Penguin` 类(结构),并且我有一个 `Penguin` 的实例为 `p`,将目标函数的参数指定为 `Penguin` 类型,就可把 `p` 的属性从一个函数传递到另一个函数。
+
+```
+fn main() {
+ let p = Penguin { genus: "Pygoscelis".to_owned(),
+ species: "R adeliæ".to_owned(),
+ extinct: false, classified: 1841 };
+ printer(p);
+}
+
+fn printer(p: Penguin) {
+ println!("Species: {}", p.species);
+ println!("Genus: {}", p.genus);
+ println!("Classified in {}", p.classified);
+ if p.extinct == true {
+ println!("Sadly this penguin has been made extinct.");
+ }
+}
+```
+
+### 变量
+
+Rust 默认创建的为不可变变量。这意味着你创建的变量以后无法更改。这段代码虽然看起来没问题,但无法编译:
+
+```
+fn main() {
+ let n = 6;
+ let n = 5;
+}
+```
+
+但你可以使用关键字 `mut` 声明一个可变变量,因此下面这段代码可以编译成功:
+
+```
+fn main() {
+ let mut n = 6;
+ println!("Value is {}", n);
+ n = 5;
+ println!("Value is {}", n);
+}
+```
+
+### 编译
+
+Rust 编译器,至少就其报错信息而言,是可用的最好的编译器之一。当你在 Rust 中出错时,编译器会真诚地告诉你做错了什么。实际上,仅通过从编译器错误消息中学习,我就了解了 Rust 的许多细微差别(就我理解到的 Rust 的任何细微差别而言)。即便有时错误消息太过于模糊,而不知所以然,互联网搜索几乎总能得到解释。
+
+启动 Rust 程序的最简单方法是使用 `cargo`,它是 Rust 的包管理和构建系统。
+
+```
+$ mkdir myproject
+$ cd myproject
+$ cargo init
+```
+
+以上命令为项目创建了基本的基础架构,最值得注意的是 `src` 子目录中的 `main.rs` 文件。打开此文件,把我为本文生成的示例代码粘贴进去:
+
+```
+struct Penguin {
+ genus: String,
+ species: String,
+ extinct: bool,
+ classified: u64,
+}
+
+fn main() {
+ let p = Penguin { genus: "Pygoscelis".to_owned(), species: "R adeliæ".to_owned(), extinct: false, classified: 1841 };
+ printer(p);
+ foo();
+}
+
+fn printer(p: Penguin) {
+ println!("Species: {}", p.species);
+ println!("Genus: {}", p.genus);
+ println!("Classified in {}", p.classified);
+ if p.extinct == true {
+ println!("Sadly this penguin has been made extinct.");
+ }
+}
+
+fn foo() {
+ let mut n = 6;
+ println!("Value is {}", n);
+ n = 8;
+ println!("Eight is written as {}", n);
+}
+```
+
+使用 `cargo build` 命令进行编译:
+
+```
+$ cargo build
+```
+
+执行 `target` 子目录下的二进制程序,或者直接运行 `cargo run` 命令来运行你的项目:
+
+```
+$ cargo run
+Species: R adeliæ
+Genus: Pygoscelis
+Classified in 1841
+Value is 6
+Eight is written as 8
+```
+
+### Crates
+
+任何语言的大部分便利都来自于它的库或模块。在 Rust 中,进行分发和跟踪的库称为 “crate”(箱子)。[crates.io][4] 是一个很好的社区 crate 注册网站。
+
+把一个 crate 添加到你的 Rust 项目,首先要在 `Cargo.toml` 文件中添加这个 crate。例如,要安装随机数函数,我使用名为 `rand` 的 crate,使用 `*` 作为通配符,以确保在编译时获得最新版本:
+
+```
+[package]
+name = "myproject"
+version = "0.1.0"
+authors = ["Seth "]
+edition = "2022"
+
+[dependencies]
+rand = "*"
+```
+
+在 Rust 代码中使用它需要在最顶行使用 `use` 语句:
+
+```
+use rand::Rng;
+```
+
+以下是一些创建随机种子和随机范围的示例代码:
+
+```
+fn foo() {
+ let mut rng = rand::thread_rng();
+ let mut n = rng.gen_range(1..99);
+
+ println!("Value is {}", n);
+ n = rng.gen_range(1..99);
+ println!("Value is {}", n);
+}
+```
+
+你可以使用 `cargo run` 来运行它,它会检测代码是否被更改并触发一个新的构建。构建过程中下载名为 `rand` 的 `crete` 和它依赖的所有 `crate`,编译代码,然后运行它:
+
+```
+$ cargo run
+Updating crates.io index
+Downloaded ppv-lite86 v0.2.16
+Downloaded 1 crate (22.2 KB) in 1.40s
+ Compiling libc v0.2.112
+ Compiling cfg-if v1.0.0
+ Compiling ppv-lite86 v0.2.16
+ Compiling getrandom v0.2.3
+ Compiling rand_core v0.6.3
+ Compiling rand_chacha v0.3.1
+ Compiling rand v0.8.4
+ Compiling rustpenguin v0.1.0 (/home/sek/Demo/rustpenguin)
+ Finished dev [unoptimized + debuginfo] target(s) in 13.97s
+ Running `target/debug/rustpenguin`
+
+Species: R adeliæ
+Genus: Pygoscelis
+Classified in 1841
+Value is 70
+Value is 35
+```
+
+### Rust 速查表
+
+Rust 是一门令人非常愉快的语言。集成了在线注册网站、有用的编译器和几乎直观的语法,它给人的适当的现代感。
+
+但请不要误会,Rust 仍是一门复杂的语言,它具有严格的数据类型、强作用域变量和许多内置方法。Rust 值得一看,如果你要探索它,那么你应该下载我们的免费 [Rust 速查表][6],以便快速了解基础知识。越早开始,就越早了解 Rust。当然,你应该经常练习以避免生疏。
+
+> **[Rust 速查表][6]**
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/1/rust-cheat-sheet
+
+作者:[Seth Kenlon][a]
+选题:[lujun9972][b]
+译者:[hanszhao80](https://github.com/hanszhao80)
+校对:[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/coverimage_cheat_sheet.png?itok=lYkNKieP (Cheat Sheet cover image)
+[2]: https://opensource.com/article/20/5/rust-java
+[3]: http://rust-lang.org
+[4]: https://crates.io/
+[5]: mailto:seth@opensource.com
+[6]: https://opensource.com/downloads/rust-cheat-sheet
diff --git a/published/20220212 5 levels of transparency for open source communities.md b/published/20220212 5 levels of transparency for open source communities.md
new file mode 100644
index 0000000000..3525fa220b
--- /dev/null
+++ b/published/20220212 5 levels of transparency for open source communities.md
@@ -0,0 +1,100 @@
+[#]: subject: "5 levels of transparency for open source communities"
+[#]: via: "https://opensource.com/article/22/2/transparency-open-source-communities"
+[#]: author: "Emilio Galeano Gryciuk https://opensource.com/users/egaleano"
+[#]: collector: "lujun9972"
+[#]: translator: "aREversez"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14596-1.html"
+
+开源社区透明度的五个层次
+======
+
+> 如果想让开源社区繁荣发展,管理者需要达到透明度的五个层次。
+
+
+
+开源社区的管理者必须意识到社区有五个层次的透明度,这对于建设繁荣发展的开源社区来说至关重要。
+
+本文将详细介绍各个层次及其目标与作用。不过首先,我想谈一谈透明度对开源社区的重要性。
+
+### 为什么开源社区需要保证透明度?
+
+ * 透明能够增进社区成员之间的信任,促进合作。
+ * 开放是社区合作和交流的前提。
+ * 只有在开放透明的环境下,开源工作才能避免矛盾与冲突。
+ * 社区管理者需要向参与者报告社区情况。
+ * 向成员公开社区各项情况,营造信任氛围,有利于社区健康发展。
+
+### 透明度的五个层次
+
+#### 层次一:发布源码
+
+在这一层次,社区需要遵循 [OSI 认可的许可证][2],在 [Git][3] 等公开的版本控制系统上发布源码。
+
+层次一的目标在于创建开源项目。
+
+ * 建立开源社区,理应达到这一层次。因为没有公开源代码,也就无所谓开源项目。
+ * 开源项目的核心便是参与者们编写的源码,并在 OSI 批准的许可证下授权。
+ * 公开的版本控制系统能够促进合作,使得每一位开发者都能了解项目情况,理解合作模式。
+
+#### 层次二:发布社区指南
+
+达到这一层次,需要发布相关文档以及资源。也可通过组织活动来指导社区成员。
+
+层次二的目标在于为一个开源项目建立和发展一个开源社区。
+
+ * 建立一个活跃的社区需要的不仅仅是源代码。
+ * 公开项目开展方式和贡献方式,能够吸引更多的开发者参与到项目当中。
+ * 为了推动社区的发展,管理者可能需要举办一些重要活动,并为贡献者们筹办一些特殊的活动。
+
+#### 层次三:继往开来
+
+到了这个层次,管理者有必要分享自己对于社区的见解,发布项目进展情况报告。
+
+层次三的目标在于继往开来,确保社区进入后续阶段后能够更上一层楼,实现长远发展。
+
+ * 随着开源社区的发展,社区内的情况将会越来越难以把握。
+ * 公开社区活动,让成员意识到自己的付出能够为公众所见,为公众所识。
+ * 在这一层次,无论是报告还是分析,发布的时间并不固定,使用的工具也无定法。
+
+#### 层次四:掌握社区的动态
+
+这一层次就在于倾听社区声音:通过观察社区活动,关注项目发展;跟进软件开发进度,据此采取合适的应对措施。
+
+层次四的目标在于保持科学严谨的态度,持续把握社区的发展情况及发展轨迹,引导社区朝着下一个层次迈进。
+
+ * 建立报告机制,运用分析工具,掌握社区动态。
+ * 将社区的各项活动与社区成员的反响与基线和社区内的其他活动进行比较。
+ * 坚持倾听社区声音,形成对于社区更深刻的见解。
+
+#### 层次五:维护社区,长久发展
+
+最后一个层次就是依据社区各项指标,提高社区成员的参与度。
+
+层次五的目标在于制定行之有效、能够产生积极影响的决策方案,让开发者更好地参与社区项目。
+
+ * 适当调整系统,以适应社区各项指标的变动。
+ * 跟进这些变动,理解它们是如何通过各项指标和数据分析体现出来的。
+ * 针对社区维护者与开发者,制定服务等级协议和问责制度,为其设立参与度目标,确保项目整体顺利进行。
+
+### 总结
+
+开源社区管理者需要做到上述五个层次,保证透明度,才能构建起一个繁荣发展的社区。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/2/transparency-open-source-communities
+
+作者:[Emilio Galeano Gryciuk][a]
+选题:[lujun9972][b]
+译者:[aREversez](https://github.com/aREversez)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/egaleano
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_dandelion_520x292.png?itok=-xhFQvUj (Person in a field of dandelions)
+[2]: https://opensource.org/licenses
+[3]: https://opensource.com/tags/git
diff --git a/published/20220219 Crop and resize photos on Linux with Gwenview.md b/published/20220219 Crop and resize photos on Linux with Gwenview.md
new file mode 100644
index 0000000000..861d6da3c5
--- /dev/null
+++ b/published/20220219 Crop and resize photos on Linux with Gwenview.md
@@ -0,0 +1,120 @@
+[#]: subject: "Crop and resize photos on Linux with Gwenview"
+[#]: via: "https://opensource.com/article/22/2/crop-resize-photos-gwenview-kde"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14550-1.html"
+
+用 Gwenview 在 Linux 上裁剪和调整照片大小
+======
+
+> Gwenview 是一个优秀的照片编辑器,适合业余摄影师在 Linux KDE 桌面上使用。
+
+
+
+一张好的照片可以蕴含很多信息。表面上它表达了你所看到的,但它也讲述了你所经历的。细微之处也能说明很多问题:你在拍照时选择的角度、取景中隐约可见的的东西有多大,以及,相比之下,那些有意识选择忽略的部分。
+
+照片通常并不意味着记录真实发生的事情,相反,它们会成为你(摄影师)如何看待发生的事情的洞察力。
+
+这就是照片编辑如此普遍的原因之一。当你把照片发布到你的在线图片库或社交网络时,你不应该发布一张不能准确表达照片所包含的感受的照片。但同样的道理,你也不应该成为一个专业的照片合成师,而只是为了剪掉在最后时刻将头伸进你的家庭快照的路人。如果你使用的是 KDE,你可以使用 Gwenview 这种休闲照片编辑器。
+
+### 在 Linux 上安装 Gwenview
+
+如果你正在运行 KDE Plasma 桌面,你可能已经安装了 Gwenview。如果你没有安装,或者你正在使用一个不同的桌面,而你想尝试 Gwenview,那么你可以用你的软件包管理器安装它。
+
+我建议同时安装 Gwenview 和 Kipi 插件集,它可以将 Gwenview 与几个在线照片服务连接起来,这样你就可以轻松上传照片。在 Fedora、Mageia 和类似发行版上:
+
+```
+$ sudo dnf install gwenview kipi-plugins
+```
+
+在 Debian、Elementary 和类似版本上:
+
+```
+$ sudo apt install gwenview kipi-plugins
+```
+
+### 使用 Gwenview
+
+Gwenview 通常有两种启动方式。你可以在 Dolphin 中点击图片文件,并选择在 Gwenview 中打开它;或者你可以启动 Gwenview,并在文件夹中寻找照片,Gwenview 或多或少可以充当你的文件管理器。第一种方法是直接的方法,很适合快速方便地预览图片文件。第二种方法是当你浏览大量照片,不确定哪一个版本的照片是“正确的”时,你可能会使用。
+
+无论你如何启动 Gwenview,界面和功能都是一样的:右边有一个工作区,左边有一个面板。
+
+![Gwenview][2]
+
+(Seth Kenlon [CC BY-SA 4.0][3], Photo courtesy [Andrea De Santis][4])
+
+在左边的面板下面,有三个标签:
+
+ * 文件夹:显示你电脑上的文件夹的树状视图,以便你可以浏览你的文件,寻找更多的照片。
+ * 信息:提供关于你目前正在查看的照片的元数据。
+ * 操作:允许你对当前的照片进行小的修改,如在横向和纵向之间旋转、调整大小和裁剪等。
+
+Gwenview 能理解文件系统,所以你可以按键盘上的**右**或**左**箭头,查看文件夹中的上一张或下一张照片。
+
+要离开单张照片视图并查看一个文件夹中的所有图片,请点击顶部工具栏中的“浏览”按钮。
+
+![Browsing photos in a folder][5]
+
+(Seth Kenlon,[CC BY-SA 4.0][3])
+
+你也可以同时拥有两种视图。点击 Gwenview 底部的“缩略图栏”按钮,可以以电影胶片的形式看到当前文件夹中的其他图片,而当前选择的照片则在主面板中。
+
+![Thumbnail view][6]
+
+(Seth Kenlon,[CC BY-SA 4.0][3])
+
+### 用 Gwenview 编辑照片
+
+数码照片是很常见的,因此在网上发布或与朋友分享之前,需要对照片进行细微的调整也是同样常见。有非常好的应用可以编辑照片,事实上,其中最好的一个是另一个 KDE 应用,叫做 Krita(你可以在我的 [给摄影者的 Krita][7] 文章中阅读我如何使用它来处理照片),但是小的调整不应该需要艺术学位。这正是 Gwenview 所确保的:用一个休闲但功能强大的应用进行简单而快速的照片调整,并与你的 Plasma 桌面的其他部分整合。
+
+我们大多数人对照片进行的最常见的调整是:
+
+ * **旋转**:当你的相机没有提供正确的元数据让你的电脑知道一张照片是要以横向还是纵向观看时,你可以手动修复它。
+ * **镜像**:许多笔记本电脑或面部摄像头模仿镜子,这很有用,因为这是我们习惯于看到自己的方式。但是,它会使文字逆转。**镜像**功能可以从右到左翻转图像。
+ * **翻转**:在数码相机和笔记本电脑上不太常见,但在手机上,无论你怎么拿手机,使用倒置设备拍照的现象在屏幕翻转的手机中并不少见。**翻转**功能可将图像旋转 180 度。
+ * **调整大小**:数字图像现在通常具有超高清尺寸,有时这比你需要的要多得多。如果你通过电子邮件发送照片或将其发布在你想要优化加载时间的网页上,你可以将尺寸(和相应的文件大小)缩小到更小的尺寸。
+ * **裁剪**:你有一张很棒的自己的照片,但不小心偶然发现了一个你认为不合适的人。用裁剪工具剪掉你不想要的所有东西。
+ * **红眼**:当你的视网膜将相机的闪光灯反射回相机时,会得到红眼效果。Gwenview 可以通过在可调节区域中对红色通道进行去饱和和变暗来减少这种情况。
+
+所有这些工具都在“操作”侧面板或“编辑”菜单中可用。这些操作具有破坏性,因此在你进行更改后,单击“另存为”以保存图像的 _副本_。
+
+![Cropping a photo in Gwenview][8]
+
+(Seth Kenlon,[CC BY-SA 4.0][3],照片由 [Elise Wilcox][9] 提供)
+
+### 分享照片
+
+当你准备好分享照片时,单击顶部工具栏中的“分享”按钮,或转到“插件”菜单并选择“导出”。Gwenview 与 Kipi 插件集成在一起,可以在 [Nextcloud][10]、[Piwigo][11]、普通旧电子邮件以及 Google Drive、Flickr、Dropbox 等服务共享照片。
+
+### Linux 上的照片编辑要点
+
+Gwenview 拥有桌面照片管理器的所有必需功能。如果你需要的不仅仅是基本功能,你可以在 Krita 或 [Digikam][12] 中打开一张照片,并根据需要进行重大修改。对于其他一切,从浏览、排名、标记和小调整,Gwenview 都很方便。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/2/crop-resize-photos-gwenview-kde
+
+作者:[Seth Kenlon][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://opensource.com/users/seth
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/design_photo_art_polaroids.png?itok=SqPLgWxJ (Polaroids and palm trees)
+[2]: https://opensource.com/sites/default/files/kde-gwenview-ui.jpg (Gwenview)
+[3]: https://creativecommons.org/licenses/by-sa/4.0/
+[4]: http://unsplash.com/@santesson89
+[5]: https://opensource.com/sites/default/files/kde-gwenview-browse.jpg (Browsing photos in a folder)
+[6]: https://opensource.com/sites/default/files/kde-gwenview-thumbnail.jpg (Thumbnail view)
+[7]: https://opensource.com/article/21/12/open-source-photo-editing-krita
+[8]: https://opensource.com/sites/default/files/kde-gwenview-crop.jpg (Cropping a photo in Gwenview)
+[9]: http://unsplash.com/@elise_outside
+[10]: https://opensource.com/article/20/7/nextcloud
+[11]: https://opensource.com/alternatives/google-photos
+[12]: https://opensource.com/life/16/5/how-use-digikam-photo-management
diff --git a/published/20220221 3 steps to start running containers today.md b/published/20220221 3 steps to start running containers today.md
new file mode 100644
index 0000000000..433148e741
--- /dev/null
+++ b/published/20220221 3 steps to start running containers today.md
@@ -0,0 +1,179 @@
+[#]: subject: "3 steps to start running containers today"
+[#]: via: "https://opensource.com/article/22/2/start-running-containers"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lujun9972"
+[#]: translator: "MjSeven"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14584-1.html"
+
+当下运行容器的 3 个步骤
+======
+
+> 在本教程中,你将学习如何在一个“吊舱”中运行两个容器来托管一个 WordPress 站点。
+
+
+
+无论你是将其作为工作的一部分、未来的工作机会或者仅仅是出于对新技术的兴趣,容器对很多人,即使是经验丰富的系统管理员,可能是非常难以应付的。那么如何真正开始使用容器呢?从容器到 [Kubernetes][2] 的成长路径是什么?另外,为什么有不止一条路径?如你所料,最好的起点就是现在。
+
+### 1、了解容器
+
+略一回忆,容器的开端可以追溯到早期 BSD 及其特殊的 chroot 监狱,但让我们直接跳到发展中期讲起。
+
+之前,Linux 内核引入了 “控制组”,允许你能够使用 “命名空间” 来“标记”进程。当你将进程分组到一个命名空间时,这些进程的行为就像在命名空间之外的东西不存在一样,这就像你把这些进程放入某种容器中。当然,这种容器是虚拟的,它位于计算机内部,它和你操作系统的其余进程使用相同的内核、内存和 CPU,但你用容器包含了这些进程。
+
+分发的预制容器仅包含运行它所包含的应用程序必须的内容。使用容器引擎,如 [Podman][3]、Docker 或 CRI-O,你可以运行一个容器化应用程序,而无需进行传统意义上的安装。容器引擎通常是跨平台的,因此即使容器运行在 Linux 上,你也可以在其他 Linux、MacOS 或 Windows 上启动容器。
+
+更重要的是,当需求量很大时,你可以运行同一应用程序的多个容器。
+
+现在你知道了什么是容器,下一步是运行一个容器。
+
+### 2、运行一个容器
+
+在运行容器之前,你应该有一个想要运行它的理由。你可以编一个,这有助于你对让容器创建过程感兴趣,这样你就会受到鼓舞,真正去使用你所运行的容器。毕竟,运行容器但不使用它提供的应用程序,只能证明你没有注意到任何故障,但使用容器证明它可以工作。
+
+我推荐从 WordPress 开始,它是一个很流行的 Web 应用程序,容易使用,所以一旦容器运行起来,你就可以测试使用它。虽然你可以轻松地配置一个 WordPress 容器,但还是有很多配置选项可以引导你发现更多运行容器的方式(例如运行数据库容器)以及容器如何通信。
+
+我使用 Podman,它是一个友好、方便且无守护进程的容器引擎。如果你没有安装 Podman,可以改用 Docker 命令。它们都是很棒的开源容器引擎,而且它们的语法是相同的(只需输入 `docker` 而不是 `podman`)。因为 Podman 没有守护进程,所以它需要更多的配置,但为了这种运行免 root、无守护进程的容器的能力是值得的。
+
+如果你使用 Docker,可以跳到下面的 [运行 WordPress 容器][5] 小节,否则,打开终端安装并配置 Podman:
+
+```
+$ sudo dnf install podman
+```
+
+容器会产生许多进程,通常只有 root 用户有权创建数千个进程 ID。创建一个名为 `/etc/subuid` 的文件,定义一个适当的起始 UID 和大量合法的 PID,这样就可以为你添加一些额外的进程 ID:
+
+```
+seth:200000:165536
+```
+
+在名为 `/etc/subgid` 的文件中对你的组执行相同的操作。在这个例子中,我的主要组是 `staff`(对你来说可能是 `users`,或者和你的用户名一样,这取决于你的系统)。
+
+```
+staff:200000:165536
+```
+
+最后,确认你的用户可以管理很多命名空间:
+
+```
+$ sysctl --all --pattern user_namespaces
+user.max_user_namespaces = 28633
+```
+
+如果你的用户无权管理超过 28,000 个命名空间,创建 `/etc/sysctl.d/userns.conf` 文件来增加数量并输入:
+
+```
+user.max_user_namespaces=28633
+```
+
+#### 运行 WordPress 容器
+
+现在,无论你使用的是 Podman 还是 Docker,你都可以从在线容器仓库中下载 WordPress 容器并运行它。你可以使用以下 Podman 命令完成所有这些操作:
+
+```
+$ podman run --name mypress \
+ -p 8080:80 -d wordpress
+```
+
+给 Podman 一会时间来找到容器、从互联网下载它,然后启动。
+
+在收到终端返回提示符后,启动 Web 浏览器,打开 `localhost:8080`。WordPress 正在运行,等待你进行设置。
+
+![WordPress 容器][6]
+
+不过,你很快就会遇到障碍,因为 WordPress 使用数据库来存储数据,因此你需要为其提供一个数据库。
+
+在继续之前,停止并删除 WordPress 容器:
+
+```
+$ podman stop mypress
+$ podman rm mypress
+```
+
+### 3、在吊舱中运行容器
+
+正如名字所暗示的那样,容器在设计上是独立的。在容器中运行的应用程序不应该与在容器外的应用程序或基础设施进行交互。因此,当一个容器需要另一个容器才能运行时,一种解决方案是将这两个容器放在一个更大的容器中,称为 “吊舱”。吊舱确保其容器可以共享重要的命名空间以便相互通信。
+
+创建一个新的吊舱,为它提供一个名称,以及希望能够访问的端口:
+
+```
+$ podman pod create \
+ --name wp_pod \
+ --publish 8080:80
+```
+
+确认吊舱存在:
+
+```
+$ podman pod list
+POD ID NAME STATUS INFRA ID # OF CONTAINERS
+100e138a29bd wp_pod Created 22ace92df3ef 1
+```
+#### 将容器添加到吊舱
+
+现在你已经为相互依赖的容器创建了一个吊舱,你可以通过指定一个运行的吊舱来启动每个容器。
+
+首先,启动一个数据库容器。你可以创建自己的凭据,只要在 WordPress 连接到数据库时使用相同的凭据。
+
+```
+$ podman run --detach \
+ --pod wp_pod \
+ --restart=always \
+ -e MYSQL_ROOT_PASSWORD="badpassword0" \
+ -e MYSQL_DATABASE="wp_db" \
+ -e MYSQL_USER="tux" \
+ -e MYSQL_PASSWORD="badpassword1" \
+ --name=wp_db mariadb
+```
+
+接下来,在同一个吊舱中启动 WordPress 容器:
+
+```
+$ podman run --detach \
+ --restart=always --pod=wp_pod \
+ -e WORDPRESS_DB_NAME="wp_db" \
+ -e WORDPRESS_DB_USER="tux" \
+ -e WORDPRESS_DB_PASSWORD="badpassword1" \
+ -e WORDPRESS_DB_HOST="127.0.0.1" \
+ --name mypress wordpress
+```
+
+现在启动你最喜欢的网络浏览器并打开 `localhost:8080`。
+
+这一次,设置会正常进行。WordPress 会连接到数据库,因为你在启动容器时传递了这些环境变量。
+
+![WordPress 启动][8]
+
+创建用户账户后,你可以登录查看 WordPress 仪表板。
+
+![WordPress dashboard running in a container][9]
+
+### 下一步
+
+你已经创建了两个容器,并在一个吊舱中运行了它们。你现在已经了解了如何在自己的服务器上运行容器及服务。如果你想迁移到云,容器非常适合你。使用像 Kubernetes 和 OpenShift 这样的工具,你可以自动化启动 [集群上的容器和吊舱][10]。如果你正在考虑采取下一步行动,阅读 Kevin Casey 的 [3 个开始使用 Kubernetes 的方法][11],并尝试他提到的 Minikube 教程。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/2/start-running-containers
+
+作者:[Seth Kenlon][a]
+选题:[lujun9972][b]
+译者:[MjSeven](https://github.com/MjSeven)
+校对:[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/bus-containers.png?itok=d_4QhZxT (Shipping containers stacked)
+[2]: https://opensource.com/tags/kubernetes
+[3]: https://www.redhat.com/sysadmin/podman-guides-2020
+[4]: https://enterprisersproject.com/cheat-sheet-what-s-difference-between-pod-cluster-and-container
+[5]: tmp.1zBHYsK8TH#wp
+[6]: https://opensource.com/sites/default/files/uploads/podman-wordpress.jpg (WordPress running in a container)
+[7]: https://creativecommons.org/licenses/by-sa/4.0/
+[8]: https://opensource.com/sites/default/files/uploads/wordpress-setup.jpg (WordPress setup)
+[9]: https://opensource.com/sites/default/files/uploads/wordpress-welcome.jpg (WordPress dashboard running in a container)
+[10]: https://enterprisersproject.com/article/2020/9/pod-cluster-container-what-is-difference
+[11]: https://enterprisersproject.com/article/2019/11/kubernetes-3-ways-get-started
diff --git a/published/202203/20200330 Why I switched from Mac to Linux.md b/published/202203/20200330 Why I switched from Mac to Linux.md
new file mode 100644
index 0000000000..db4384e811
--- /dev/null
+++ b/published/202203/20200330 Why I switched from Mac to Linux.md
@@ -0,0 +1,140 @@
+[#]: collector: (lujun9972)
+[#]: translator: (wxy)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14356-1.html)
+[#]: subject: (Why I switched from Mac to Linux)
+[#]: via: (https://opensource.com/article/20/3/mac-linux)
+[#]: author: (Lee Tusman https://opensource.com/users/leeto)
+
+我为什么从 Mac 转到 Linux
+======
+
+> 25 年后,我转到了 Linux,简直不能更爽了。以下是我的经历。
+
+
+
+1994 年,我的家人买了一台 Macintosh Performa 475 作为家用电脑。我在学校时曾使用过 Macintosh SE 电脑,并通过《[Mavis Beacon 教你打字][2]》学会了打字,所以我成为 Mac 用户已经超过 25 年了。早在上世纪 90 年代中期,我就被 Mac 的易用性所吸引。它不是以 DOS 命令提示符开始的;它打开的是一个友好的桌面。它很有趣。尽管 Macintosh 的软件比 PC 少得多,但我认为 Mac 的生态系统更好,就凭着 KidPix 和 Hypercard,我仍然认为它们是无与伦比的、最直观的 _创意工厂_。
+
+即便如此,我仍然感觉到,与 Windows 相比,Mac 只是个弟弟。我曾觉得这个公司或许有一天会消失。但几十年后的今天,苹果已经成为一个庞然大物,一个价值万亿美元的公司。但随着发展,它发生了重大变化。有些变化是为了更好的发展,比如更好的稳定性,更简单的硬件选择,更高的安全性,以及更多的可访问性选项。其他的变化让我恼火 —— 不是一下子,而是慢慢地不满意。最重要的是,我对苹果的封闭生态系统感到厌烦 —— 没有 iPhoto 就很难访问照片;必须使用 iTunes;即使我不想使用苹果商店的生态系统,也得强制捆绑。
+
+随着时间的推移,我发现自己主要是在终端上工作。我使用 iTerm2 和 [Homebrew][3] 软件包管理器。虽然我不能让我所有的 Linux 软件都工作,但大部分软件都工作了。我认为我拥有两个世界中最好的东西:macOS 的图形操作系统和用户界面,以及快速打开终端会话的能力。
+
+后来,我开始使用通过 Raspbian 启动的树莓派电脑。我还收集了一些从大学的垃圾堆中抢救出来的非常旧的笔记本电脑,因此,出于需要,我决定尝试各种 Linux 发行版。虽然它们都没有成为我的主用机器,但我开始真正喜欢使用 Linux。我开始考虑尝试运行 Linux 发行版作为我的日常用机,但我认为 Macbook 的舒适性和便利性,特别是硬件的尺寸和重量,在非 Mac 笔记本电脑中很难找到。
+
+### 是时候进行转换了?
+
+大约两年前,我开始在工作中使用一台戴尔电脑。那是一台较大的笔记本电脑,集成了 GPU,可以双启动 Linux 和 Windows。我用它来进行游戏开发、3D 建模、一些机器学习,以及用 C# 和 Java 进行基本编程。我曾考虑把它作为我的主用机器,但我喜欢我的 Macbook Air 的便携性,所以也继续使用它。
+
+去年秋天,我开始注意到我的 Air 运行时很热,而且风扇开得越来越频繁。我的主用机器开始显得垂垂老矣。多年来,我使用 Mac 的终端来访问类 Unix 的 Darwin 操作系统,我在终端和网页浏览器之间切换的时间越来越多。是时候进行转换了吗?
+
+我开始探索一个类似 Macbook 的 Linux 笔记本电脑的可能性。在做了一些研究、阅读测评和留言板之后,我选择了长期以来备受赞誉的戴尔 XPS 13 开发者版 7390,选择了第十代 i7。我选择它是因为我喜欢 Macbook(尤其是超薄的 Macbook Air)的感觉,而对 XPS 13 的评论表明它似乎是类似的笔记本电脑,对其触控板和键盘的评价也真的很好。
+
+最重要的是,它装载了 Ubuntu。虽然买一台电脑,擦掉它,然后安装一个新的 Linux 发行版是很容易的,但我被这种配合得当的操作系统和硬件所吸引,而且它允许我们进行大量的定制,就像我们在 Linux 中了解而喜爱的一样。因此,当有促销活动时,我毅然决然地购买了它。
+
+### 每天运行 Linux 是什么感觉
+
+如今,我使用 XPS 13 已经有三个月了,我的双启动的 Linux 工作笔记本也有两年了。起初,我以为我会花更多的时间寻找一个更像 Mac 的替代桌面环境或窗口管理器,比如 [Enlightenment][4]。我试过几个,但我不得不说,我喜欢开箱即用的 [GNOME][5] 的简单性。首先,它是精简的;没有太多的 GUI 元素会吸引你的注意力。事实上,它很直观,这份 [概览][6] 只需要几分钟就能看完。
+
+我可以通过应用程序仪表盘或按网格排布的按钮访问我的应用程序,从而进入应用程序视图。要访问我的文件系统,我点击仪表盘上的“文件”图标。要打开 GNOME 终端,我输入 `Ctrl+Alt+T` 或者直接按下 `Alt+Tab` 来在打开的应用程序和打开的终端之间切换。定义你自己的 [自定义热键快捷方式][7] 也很容易。
+
+除此以外,没有太多要说的。与 Mac 的桌面不同,没有那么多的东西会让人迷失,这意味着让我从工作或我想运行的应用程序中分心的东西更少。我没有看到我在 Mac 上浏览窗口的那么多选项,也不必在导航时花费那么多时间。在 Linux 中,只有文件、应用程序和终端。
+
+我安装了 [i3 平铺式窗口管理器][8] 来做一个测试。我在配置上遇到了一些问题,因为我是用 [德沃夏克键盘][9] 键入的,而 i3 并不适应另一种键盘配置。我想,如果再努力一点,我可以在 i3 中找出一个新的键盘映射,但我主要想找的是简单的平铺功能。
+
+我看了 GNOME 的平铺功能,并感到非常惊喜。你按下 `Super` 键(对我来说,就是有 Windows 标志的那个键 —— 我应该用贴纸盖住它!),然后按一个修饰键。例如,按 `Super + ←` 将你当前的窗口移动到屏幕左侧的贴片上。`Super + →` 移动到右半边。`Super + ↑` 使当前窗口最大化。`Super + ↓` 则恢复到之前的大小。你可以用 `Alt+Tab` 在应用程序窗口之间移动。这些都是默认行为,可以在键盘设置中自定义。
+
+插上耳机或连接到 HDMI 的工作方式与你预期的一样。有时,我打开声音设置,在 HDMI 声音输出或我的外部音频线之间进行切换,就像我在 Mac 或 PC 上那样。触控板的反应很灵敏,我没有注意到与 Macbook 的有什么不同。当我插入一个三键鼠标时,它可以立即工作,即使是用我的蓝牙鼠标和键盘。
+
+#### 软件
+
+我在几分钟内安装了 Atom、VLC、Keybase、Brave 浏览器、Krita、Blender 和 Thunderbird。我在终端用 Apt 软件包管理器安装了其他软件(和平常一样),它比 macOS 的 Homebrew 软件包管理器提供了更多软件包。
+
+#### 音乐
+
+我有许多种听音乐的选择。我使用 Spotify 和 [PyRadio][10] 来串流播放音乐。[Rhythmbox][11] 在 Ubuntu 上是默认安装的;这个简单的音乐播放器可以立即启动,而且毫不臃肿。只需点击菜单,选择“添加音乐”,然后导航到一个音乐目录(它会递归搜索)。你也可以轻松地串流播客或在线广播。
+
+#### 文本和 PDF
+
+我倾向于在带有一些插件的 [Neovim][12] 中用 Markdown 写作,然后用 Pandoc 将我的文档转换为任何最终需要的格式。对于一个带有预览功能的漂亮的 Markdown 编辑器,我下载了 [Ghostwriter][13],一个最集中注意力的写作应用程序。
+
+如果有人给我发了一个微软 Word 文档,我可以用默认的 LibreOffice Writer 应用程序打开它。
+
+偶尔,我也要签署一份文件。用 macOS 的“预览”应用程序和我的 PNG 格式的签名,这很容易,我需要一个 Linux 的对应工具。我发现默认的 PDF 查看器应用程序没有我需要的注释工具。LibreOffice 绘图程序是可以接受的,但不是特别容易使用,而且它偶尔会崩溃。做了一些研究后,我安装了 [Xournal][14],它有我需要的简单的注释工具,可以添加日期、文字和我的签名,而且与 Mac 的预览程序相当。它完全能满足我的需要。
+
+#### 从我的手机中导入图片
+
+我有一个 iPhone。为了把我的图片从手机上拿下来,有很多方法可以同步和访问你的文件。如果你有一个不同的手机,你的过程可能是不同的。下面是我的方法:
+
+1. 用 `sudo apt install gvfs-backends` 来安装 `gvfs-backends`,它是 GNOME 虚拟文件系统的一部分。
+2. 获取你的手机的序列号。将你的手机插入你的电脑,在你的 iPhone 上点击“信任”。在你电脑的终端输入:
+ ```
+ lsusb -v 2> /dev/null | grep -e "Apple Inc" -A 2
+ ```
+ (感谢 Stack Oveflow 用户 [complistic][15] 提供的这个代码技巧)。
+3. 现在打开你的文件系统。
+ - 按 `Ctrl+L` 打开一个位置并输入:`afc://<你的序列号>`,(请替换 `<你的序列号>`)来打开并导航到你的 DCIM 文件夹。我的照片和视频在 DCIM 文件夹的五个子文件夹内,而不是在照片文件夹内。从这里你可以手动将它们移到你的电脑上。
+ - 挂载手机文件系统后,你也可以在终端中通过以下方式导航到你的文件:
+ ```
+ cd /run/user/1001/gvfs/afc:host=<你的序列号>
+ ```
+
+#### 图形、照片、建模和游戏引擎
+
+我是一名教育工作者,教授各种新媒体课程。我的许多同事和学生都订阅了价格昂贵的专有的 Adobe Creative Suite。我喜欢让我的学生知道他们还有其他选择。
+
+对于绘图和图形编辑,我使用 [Krita][16]。这绝对是我的 Photoshop 替代品。对于插图工作,还有 [Inkscape][17] 和 Scribus 的出版软件。对于自动编辑,我使用命令行 [ImageMagick][18] 程序,它已经预装在 Ubuntu 中。
+
+为了管理我的图像,我使用简单的 [Shotwell][19] 应用程序。
+
+对于 3D 建模,我使用并教授开源的 [Blender][20] 软件。在我的学校,我们教 [Unity 3d][21],它有 Linux 版本。它运行良好,但我一直想试试 [Godot][22],一个开源的替代品。
+
+#### 开发
+
+我的 XPS 13 安装了 Chrome 和 Chromium。我还添加了 Firefox 和 [Brave][23] 浏览器。所有都和你在 Mac 或 PC 上习惯的一样。大多数时候,我在 Atom 中进行开发工作,有时在 Visual Studio Code 中进行,这两种软件都很容易安装在 Linux 上。Vim 已经预装在终端,而我首选的终端文本编辑器 Neovim,也很容易安装。
+
+几周后,我开始尝试其他终端。我目前最喜欢的是 Enlightenment 基金会的 Terminology。首先,它允许你在终端中 [查看图片][24],这在 Mac 的终端中是很难做到的。
+
+### 留在这里
+
+我看不出自己会转回 Mac 作为我的日用电脑。现在,当我使用 Mac 时,我注意到超多的选项和运行一个应用程序或浏览某个地方所需的额外步骤。我还注意到它的运行速度有点慢,或许这只是我个人的感受?
+
+现在我已经转到了一个开源的生态系统和 Linux,我很高兴,没有必要再转回去。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/20/3/mac-linux
+
+作者:[Lee Tusman][a]
+选题:[lujun9972][b]
+译者:[wxy](https://github.com/wxy)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/leeto
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/code_computer_development_programming.png?itok=4OM29-82
+[2]: https://en.wikipedia.org/wiki/Mavis_Beacon_Teaches_Typing
+[3]: https://brew.sh/
+[4]: https://www.enlightenment.org/
+[5]: https://opensource.com/downloads/cheat-sheet-gnome-3
+[6]: https://help.gnome.org/users/gnome-help/stable/shell-introduction.html.en
+[7]: https://docs.fedoraproject.org/en-US/quick-docs/proc_setting-key-shortcut/
+[8]: https://opensource.com/article/18/9/i3-window-manager-cheat-sheet
+[9]: https://en.wikipedia.org/wiki/Dvorak_keyboard_layout
+[10]: https://opensource.com/article/19/11/pyradio
+[11]: https://wiki.gnome.org/Apps/Rhythmbox
+[12]: https://neovim.io/
+[13]: https://wereturtle.github.io/ghostwriter/
+[14]: http://xournal.sourceforge.net/
+[15]: https://stackoverflow.com/questions/19032162/is-there-a-way-since-ios-7s-release-to-get-the-udid-without-using-itunes-on-a/21522291#21522291
+[16]: https://opensource.com/article/19/4/design-posters
+[17]: https://opensource.com/article/19/1/inkscape-cheat-sheet
+[18]: https://opensource.com/article/17/8/imagemagick
+[19]: https://gitlab.gnome.org/GNOME/shotwell/
+[20]: https://opensource.com/article/18/4/5-best-blender-video-tutorials-beginners
+[21]: https://unity.com/
+[22]: https://opensource.com/article/17/12/get-started-developing-games-godot
+[23]: https://brave.com/
+[24]: https://www.enlightenment.org/about-terminology.md
\ No newline at end of file
diff --git a/published/20201118 Secure your containers with SELinux.md b/published/202203/20201118 Secure your containers with SELinux.md
similarity index 100%
rename from published/20201118 Secure your containers with SELinux.md
rename to published/202203/20201118 Secure your containers with SELinux.md
diff --git a/published/202203/20210118 Set up a minimal server on a Raspberry Pi.md b/published/202203/20210118 Set up a minimal server on a Raspberry Pi.md
new file mode 100644
index 0000000000..361900de43
--- /dev/null
+++ b/published/202203/20210118 Set up a minimal server on a Raspberry Pi.md
@@ -0,0 +1,255 @@
+[#]: collector: (lujun9972)
+[#]: translator: (hwlife)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14405-1.html)
+[#]: subject: (Set up a minimal server on a Raspberry Pi)
+[#]: via: (https://opensource.com/article/21/1/minimal-server-raspberry-pi)
+[#]: author: (Alan Formy-Duval https://opensource.com/users/alanfdoss)
+
+在树莓派上创建一个最小化的服务器
+======
+
+> 不要急着丢弃那台旧树莓派,这个详细步骤的指南展示了我怎样用最小化设置来充分利用我珍贵的树莓派系统资源。
+
+
+
+最近,我的 [树莓派][2] 上的 microSD 储存卡不工作了。它已经作为服务器持续使用将近两年了,这为我提供了一个开始探索和修正问题的好机会。在初始化安装完成以后,它开始出现一些磁盘方面的问题,并且官方的树莓派操作系统发布了一个有重大意义的更新(并从 Raspbian 更名为树莓派操作系统)。所以我买了一个新的储存卡并开始重装。
+
+尽管树莓派 3B 不是最新的硬件,但对于运行多样化服务的最小化的服务器还是足够的。我认为我之前的安装使用了完整的安装镜像,包括了图形用户界面和许多其他的软件包是没有必要的。
+
+这个详细步骤的指南展示了我怎样用最小化设置来充分利用我珍贵的树莓派系统资源。
+
+### 开始
+
+首先,要为树莓派创建一个新的系统驱动器。这需要两样东西:系统镜像文件和一张 microSD 储存卡。
+
+#### 下载树莓派系统镜像文件
+
+虽然有好几种操作系统可供选择,但我坚持选择树莓派官方支持的系统。
+
+第一步是从 [树莓派操作系统][3] 官方网站上下载最新的系统镜像文件到计算机,然后后写入储存卡。他们提供了三个不同的镜像,我选择了精简版。它是最小化的操作系统,只包含基本系统必要的文件,所以它占用最少的磁盘空间和系统内存。(当我下载系统的时候,发布日期是 2020 年 8 月 20 日,但是它现在肯定已经更新了。我觉得不会有什么巨大不同,但是我建议读一下发行说明。)
+
+#### 将树莓派系统镜像写到储存卡
+
+第二步是写下载的系统镜像到储存卡。我的卡之前用过,当我把它插入我的 Linux 桌面计算机之后,它自动加载了两个存在的分区。在我卸载这两个分区前,我不能写入镜像。
+
+要这样做,我必须得用下面的 `lsblk` 命令来确定它们的路径,经确定,该设备路径为 `/dev/mmcblk0`:
+
+```
+# lsblk -p
+```
+
+我用 `umount` 命令卸载了这两个分区:
+
+```
+# umount /dev/mmcblk0p2
+# umount /dev/mmcblk0p1
+```
+
+一旦分区被卸载,就可以将镜像文件写入到储存卡了。尽管有许多图形化的写入工具,我还是习惯是用古老的 `dd` 命令:
+
+```
+# dd bs=4M if=/home/alan/Downloads/raspios/2020-08-20-raspios-buster-armhf-lite.img of=/dev/mmcblk0 status=progress conv=fsync
+```
+
+#### 启动树莓派
+
+你只需要一个显示器、键盘、电源适配器来使用树莓派。我还有一个以太网网线用于网络连接,相比无线网络,我更喜欢通过网线来连接一个专用的服务器。
+
+插入储存卡并打开树莓派的电源。一旦成功启动,用默认的缺省密码来进行登录:用户名 `pi`,密码`raspberry`。
+
+### 系统设置
+
+按照以下步骤尽可能最小化设置磁盘空间、内存使用等。我建议尽可能的花时间研究每个配置,使之尽量正确。通常有几种应用配置的方法,有些配置文件和选项可能会被丢弃,所以要查看产品文档确保你没有应用过时的配置。
+
+#### 运行 raspi-config
+
+树莓派系统的主设置程序叫做 `raspi-config`。登录以后立即运行它:
+
+```
+# raspi-config
+```
+
+![Raspberry Pi config main window][4]
+
+它出现了一个扩展根文件系统的选项,可以利用储存卡上所有可利用的空间。选择这个选项之后,重启并重新登录。
+
+用 `df` 命令来验证储存卡的总容量是否被完全使用:
+
+```
+# df -h
+```
+
+如果你需要设置其他选项,请再次运行 `raspi-config`。它们中的一些选项可以根据你的偏好和配置进行变化。仔细检查所有这些选项,确定没有任何遗漏。为了获得最佳性能,我建议做以下调整。(我跳过了一些我们没有做任何变化的选项。)
+
+ * 系统选项:在此你可以设置主机名,最好使用完全限定的域名(FQDN)。你也能在这里更改你的密码,这始终是强烈建议的。
+ * 接口选项:开启 SSH 服务。
+ * 性能选项:将 GPU 内存减少到最低值(16MB)。
+ * 本地化选项:选择你的时区、位置、键盘类型。
+ * 高级选项:这个选项包括扩展根文件系统的选项。如果你在上面没扩展,一定要在这里做。这样你可以访问储存卡上的所有可用空间。
+ * 更新:进入更新选项会立即检查 `raspi-config` 工具是否有更新。如果更新可用,它将被下载并应用,`raspi-config` 将在几秒钟后重启。
+
+一旦你在 `raspi-config` 中完成这些配置,选择“完成”退出该工具。
+
+#### 手动配置
+
+我还建议几个其他更改,它们全都要求编辑某种配置文件来手动更改设置。
+
+##### 设置静态 IP 地址
+
+一般来说,最好用静态 IP 地址设置服务器。通过 `ip` 命令来验证网络接口,并设置 IP 地址和你的缺省网关(路由器)和域名服务(DNS)地址:
+
+```
+# ip link
+1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
+ link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
+2: eth0: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
+ link/ether b8:27:eb:48:3f:46 brd ff:ff:ff:ff:ff:ff
+```
+
+你还需要知道你的缺省网关和一个及以上的 DNS 服务器地址。将这些信息添加到 `/etc/dhcpcd.conf` 配置文件中(我强烈建议更改之前对这个文件做一个备份):
+
+```
+# cd /etc
+# cp -a dhcpcd.conf dhcpcd.conf.original
+```
+
+按照以下来编辑文件:
+
+```
+# vi dhcpcd.conf
+
+# static IP configuration:
+interface eth0
+static ip_address=192.168.1.5/24
+static routers=192.168.1.1
+static domain_name_servers=192.168.1.3 192.168.1.4
+```
+
+##### 关闭 IPv6 协议
+
+除非你有特别需要使用 IPv6,否则你可能倾向于禁用它。为此,你可以创建两个新文件,其中包括一个单行指令,指示 Linux 内核不要使用 IPv6。
+
+首先,创建 `/etc/sysctl.d/disable-ipv6.conf` 文件,其中包含一行指令:
+
+```
+# cd /etc/sysctl.d
+# echo "net.ipv6.conf.all.disable_ipv6 = 1" > disable-ipv6.conf
+```
+
+然后创建 `/etc/modprobe.d/blacklist-ipv6.conf` 文件包含一行指令:
+
+```
+# cd /etc/modprobe.d
+# echo "blacklist ipv6" > blacklist-ipv6.conf
+```
+
+##### 关闭 Wi-Fi、蓝牙和音频
+
+我的服务器的具体用途并不需要蓝牙和音频,同时,它用以太网连接,并不使用无线(Wi-Fi)。除非你计划用它们,否则按照以下步骤来关闭它们。
+
+对 `/boot/config.txt` 这个文件做以下更改(再次强调,我建议为这个文件做个备份):
+
+```
+# cd /boot
+# cp -a config.txt config.txt.original
+```
+
+加入以下两个指令到文件底部来禁用蓝牙和 Wi-Fi:
+
+ * `dtoverlay=disable-bt`
+ * `dtoverlay=disable-wifi`
+
+这些 `echo` 命令就可以完成:
+
+```
+# cd /boot
+# echo "dtoverlay=disable-bt" >> config.txt
+# echo "dtoverlay=disable-wifi" >> config.txt
+```
+
+要关闭音频,更改 `dtparam=audio` 的参数为 `off`。你可以用一个简短的命令 `sed` 来完成:
+
+```
+# sed -i '/dtparam=audio/c dtparam=audio=off' config.txt
+```
+
+
+最后一步是禁用 Wi-Fi 服务,用 `systemctl mask` 命令来操作:
+
+```
+systemctl mask wpa_supplicant.service
+```
+
+如果你不需要其他服务的话,也可以禁用它们:
+
+* 禁用调制解调器服务:`systemctl disable hciuart`
+* 禁用 Avahi 守护进程:`systemctl disable avahi-daemon.service`
+
+### 最后一步
+
+检查你的内存使用量:
+
+```
+# free -h
+```
+我震惊了:我的系统只用了 30MB 的内存。
+
+创建个人账户:建议为登录这台服务器的个人创建用户账户。你能分配他们到 `sudo` 组允许他们运行管理命令。举个例子,创建一个用户名为 George 的一个账户。
+
+```
+# adduser george
+# usermod -a -G adm,sudo,users george
+```
+
+进行更新:这是一个重要的步骤。应用更新来获取树莓派操作系统的最新修复。
+
+```
+# apt update
+# apt full-upgrade
+```
+
+重启:重启你的新服务器是一个好主意:
+
+```
+# systemctl reboot
+```
+
+安装 Cockpit:你可以在树莓派系统上安装著名的 Linux Web 控制台 [Cockpit][5],它提供了一个基于 HTML 界面来远程管理和监控你的服务器。我最近写了一篇 [Cockpit 入门][6] 的文章。用这个命令来安装它
+
+```
+# apt install cockpit
+```
+
+现在我的树莓派服务器已经准备好托管服务器了,我能用它来做 [网页服务器][7]、[VPN 服务器][8]、 [Minetest][9] 等游戏服务器,或者就像我做的基于 [Pi-Hole 的广告屏蔽器][10] 。
+
+### 保持旧硬件的活力
+
+不论你有什么硬件,仔细地精简并控制你的操作系统和软件包,可以使你的系统资源使用量保持在低水平,以便你获得最大收益。这还可以通过减少试图利用漏洞的潜在恶意行为者可用的服务和软件包数量,提高了安全性。
+
+因此,在你丢弃旧硬件之前,考虑一下能够继续使用的各种可能性。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/1/minimal-server-raspberry-pi
+
+作者:[Alan Formy-Duval][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlife)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/alanfdoss
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/RaspberryPi.SUNY_.jpg?itok=uS_-VUcb (Raspberry Pi board Model B)
+[2]: https://opensource.com/resources/raspberry-pi
+[3]: https://www.raspberrypi.org/software/operating-systems
+[4]: https://opensource.com/sites/default/files/uploads/raspi-config-main.png (Raspberry Pi config main window)
+[5]: https://cockpit-project.org/
+[6]: https://opensource.com/article/20/11/cockpit-server-management
+[7]: https://opensource.com/article/17/3/building-personal-web-server-raspberry-pi-3
+[8]: https://opensource.com/article/19/6/raspberry-pi-vpn-server
+[9]: https://github.com/minetest
+[10]: https://opensource.com/article/18/2/block-ads-raspberry-pi
diff --git a/published/202203/20210121 How to Uninstall Applications from Ubuntu Linux.md b/published/202203/20210121 How to Uninstall Applications from Ubuntu Linux.md
new file mode 100644
index 0000000000..aad583db3a
--- /dev/null
+++ b/published/202203/20210121 How to Uninstall Applications from Ubuntu Linux.md
@@ -0,0 +1,166 @@
+[#]: collector: (lujun9972)
+[#]: translator: (amagicboy)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14398-1.html)
+[#]: subject: (How to Uninstall Applications from Ubuntu Linux)
+[#]: via: (https://itsfoss.com/uninstall-programs-ubuntu/)
+[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)
+
+初级:Ubuntu 中怎么卸载 Linux 应用
+=======
+
+
+
+不再使用某个应用程序了?删除它吧。
+
+卸载不再使用的应用是 [最简单释放磁盘空间的方法][1] ,而且可以使系统保持整洁。
+
+在此篇入门教程中,我会介绍几种不同在 Ubuntu 上卸载应用程序的方法。
+
+在 Ubuntu 中有几种方法 [安装应用][2] ,同意也有以下几种方法卸载应用:
+
+- 从 Ubuntu 软件中心 卸载应用(桌面用户)
+- 用 `apt remove` 命令卸载应用
+- 用命令行中删除 Snap 应用(中级到高级用户)
+
+让我们来一个一个了解这些方法。
+
+### 方法 1:用 Ubuntu 软件中心卸载应用
+
+在左侧栏或者菜单中找到 Ubuntu 软件中心,打开它。
+
+![][3]
+
+在 已安装 栏中列出了已安装的应用。
+
+![][4]
+
+如果你要找的应用不在 已安装 栏中,可以使用搜索查找应用。
+
+![][5]
+
+打开已经安装的应用,有一个 移除 选项,点击它。
+
+![][6]
+
+这会请求输入账户密码,输入后应用会在几秒内删除。
+
+### 方法2: Ubuntu 命令行卸载应用
+
+安装应用时使用 `apt-get install` 或者 `apt install` 。
+卸载应用时使用 `apt-get remove` 或者 `apt remove` ,而不是 `apt-get uninstall` 。
+
+按照以下方式使用命令:
+
+```
+sudo apt remove program_name
+```
+
+执行此操作会请求你的账户密码。当输入密码时,屏幕上不会有提示。输入完后按下回车。
+
+待删除的应用不会立刻被删除。你需要确认。当询问你的确认时,请输入回车或者按下 `Y`:
+
+![][7]
+
+请在命令行中输入准确的包的名字,不然会出现 “[不能找到软件包的错误][8]” 错误 。
+
+不要担心记不住具体的应用名字,你可以使用超级有用的 Tab 补全应用名称。 Tab 是你必须知道的 [Linux 命令行技巧][9] 之一。
+
+你只需要输入想要卸载应用的前几个字母,然后按下 `tab` ,会提示以这几个字母开头的已安装应用程序。
+
+找到要卸载的应用名称,输入完整的应用名称然后卸载。
+
+![][10]
+
+如果不知道具体的应用名称或者开头字母,你可以 [列出 Ubuntu 中所有已安装的包][11] ,然后查找符合你记忆的应用名称。
+
+比如,下图的命令会列出所有已安装的应用名称中包含 ‘my’ 的应用,不仅仅是以 ‘my’ 开头的应用。
+
+```
+apt list --installed | grep -i my
+```
+
+![][12]
+
+这非常酷炫对不对?在 Ubuntu 中使用卸载命令时请注意应用名。
+
+#### 补充:使用 apt purge 卸载应用(进阶用户)
+
+当在 Ubuntu 中卸载应用时,应用程序会被卸载,但是会留下细小的、修改过的用户配置文件。这些文件是故意被留下的,因为当你再次安装同样的应用时,会使用这些遗留的配置文件。
+
+如果你想完全卸载应用,你可以使用 `apt purge` 命令代替 `apt remove` 命令,或者在 `apt remove` 命令后再使用它。
+
+```
+sudo apt purge program_name
+```
+
+注意 `apt purge` 令不会删除保存在用户目录下的数据或者配置文件。
+
+### 方法3: Ubuntu 中卸载 Snap 应用
+
+前面的几种方式可用于使用 `apt` 命令、软件中心或者直接使用 deb 文件安装的应用。
+
+Ubuntu 也推出了一个名为 [Snap][13] 的包管理系统。在软件中心中的大部分应用都是 Snap 包格式。
+
+你可以使用 软件中心 轻松地卸载这些应用,也可以使用命令行卸载。
+
+列出所有已经安装的 Snap 包名字:
+
+```
+snap list
+```
+
+![][14]
+
+选择你想要卸载的应用,然后卸载,这不会要求你确认是否删除。
+
+```
+sudo snap remove package_name
+```
+
+### 妙招:用一个神奇的命令清理系统
+
+到此你已经学会怎么卸载应用,现在使用一个简单的命令清理卸载残留,比如不再用到的依赖或 Linux 内核头文件。
+
+在终端输入如下命令:
+
+```
+sudo apt autoremove
+```
+
+这条命令很安全,而且会释放几百 MB 的磁盘空间。
+
+### 总结
+
+本文一共介绍了三种卸载应用的方法,包括通过图形界面卸载、命令行卸载,以便你了解所有方式。
+
+希望此篇教程对 Ubuntu 初学者有所帮助,欢迎提出问题和建议。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/uninstall-programs-ubuntu/
+
+作者:[Abhishek Prakash][a]
+选题:[lujun9972][b]
+译者:[amagicowboy](https://github.com/amagicboy)
+校对:[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/lujun9972
+[1]: https://itsfoss.com/free-up-space-ubuntu-linux/
+[2]: https://itsfoss.com/remove-install-software-ubuntu/
+[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/ubuntu_software_applications_menu.jpg?resize=800%2C390&ssl=1
+[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/installed-apps-ubuntu.png?resize=800%2C455&ssl=1
+[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/search-installed-apps-ubuntu.png?resize=800%2C455&ssl=1
+[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/remove-applications-ubuntu.png?resize=800%2C487&ssl=1
+[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/apt-remove-program-ubuntu.png?resize=768%2C424&ssl=1
+[8]: https://itsfoss.com/unable-to-locate-package-error-ubuntu/
+[9]: https://itsfoss.com/linux-command-tricks/
+[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/01/remove-package-ubuntu-linux.png?resize=768%2C424&ssl=1
+[11]: https://itsfoss.com/list-installed-packages-ubuntu/
+[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/01/search-list-installed-apps-ubuntu.png?resize=768%2C424&ssl=1
+[13]: https://itsfoss.com/install-snap-linux/
+[14]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/list-snap-remove.png?resize=800%2C407&ssl=1
diff --git a/published/20210215 Why everyone should try using Linux.md b/published/202203/20210215 Why everyone should try using Linux.md
similarity index 100%
rename from published/20210215 Why everyone should try using Linux.md
rename to published/202203/20210215 Why everyone should try using Linux.md
diff --git a/published/202203/20210401 Use awk to calculate letter frequency.md b/published/202203/20210401 Use awk to calculate letter frequency.md
new file mode 100644
index 0000000000..2cb3958acd
--- /dev/null
+++ b/published/202203/20210401 Use awk to calculate letter frequency.md
@@ -0,0 +1,277 @@
+[#]: subject: (Use awk to calculate letter frequency)
+[#]: via: (https://opensource.com/article/21/4/gawk-letter-game)
+[#]: author: (Jim Hall https://opensource.com/users/jim-hall)
+[#]: collector: (lujun9972)
+[#]: translator: (lkxed)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14375-1.html)
+
+使用 awk 统计字母频率
+======
+
+> 编写一个 awk 脚本来找到一组单词中出现次数最多(和最少)的单词。
+
+
+
+近一段时间,我开始编写一个小游戏,在这个小游戏里,玩家使用一个个字母块来组成单词。编写这个游戏之前,我需要先知道常见英文单词中每个字母的使用频率,这样一来,我就可以找到一组更有用的字母块。字母频次统计在很多地方都有相关讨论,包括在 [维基百科][2] 上,但我还是想要自己来实现。
+
+Linux 系统在 `/usr/share/dict/words` 文件中提供了一个单词列表,所以我已经有了一个现成的单词列表。然而,尽管这个 `words` 文件包含了很多我想要的单词,却也包含了一些我不想要的。我想要的单词首先不能是复合词(即不包含连接符和空格的单词),也不能是专有名词(即不包含大写字母单词)。为了得到这个结果,我可以运行 `grep` 命令来取出只由小写字母组成的行:
+
+```
+$ grep '^[a-z]*$' /usr/share/dict/words
+```
+
+这个正则表达式的作用是让 `grep` 去匹配仅包含小写字母的行。表达式中的字符 `^` 和 `$` 分别代表了这一行的开始和结束。`[a-z]` 分组仅匹配从 “a” 到 “z” 的小写字母。
+
+下面是一个输出示例:
+
+```
+$ grep '^[a-z]*$' /usr/share/dict/words | head
+a
+aa
+aaa
+aah
+aahed
+aahing
+aahs
+aal
+aalii
+aaliis
+```
+
+没错,这些都是合法的单词。比如,“aahed” 是 “aah” 的过去式,表示在放松时的感叹,而 “aalii” 是一种浓密的热带灌木。
+
+现在我只需要编写一个 `gawk` 脚本来统计出单词中各个字母出现的次数,然后打印出每个字母的相对频率。
+
+### 字母计数
+
+一种使用 `gawk` 来统计字母个数的方式是,遍历每行输入中的每一个字符,然后对 “a” 到 “z” 之间的每个字母进行计数。`substr` 函数会返回一个给定长度的子串,它可以只包含一个字符,也可以是更长的字符串。比如,下面的示例代码能够取到输入中的每一个字符 `c`:
+
+```
+{
+ len = length($0); for (i = 1; i <= len; i++) {
+ c = substr($0, i, 1);
+ }
+}
+```
+
+如果使用一个全局字符串变量 `LETTERS` 来存储字母表,我就可以借助 `index` 函数来找到某个字符在字母表中的位置。我将扩展 `gawk` 代码示例,让它在输入数据中只取范围在 “a” 到 “z” 的字母:
+
+```
+BEGIN { LETTERS = "abcdefghijklmnopqrstuvwxyz" }
+
+{
+ len = length($0); for (i = 1; i <= len; i++) {
+ c = substr($0, i, 1);
+ ltr = index(LETTERS, c);
+ }
+}
+```
+
+需要注意的是,`index` 函数将返回字母在 `LETTERS` 字符串中首次出现的位置,第一个位置返回 1,如果没有找到则返回 0。如果我有一个大小为 26 的数组,我就可以利用这个数组来统计每个字母出现的次数。我将在下面的示例代码中添加这个功能,每当一个字母出现在输入中,我就让它对应的数组元素值增加 1(使用 `++`):
+
+```
+BEGIN { LETTERS = "abcdefghijklmnopqrstuvwxyz" }
+
+{
+ len = length($0); for (i = 1; i <= len; i++) {
+ c = substr($0, i, 1);
+ ltr = index(LETTERS, c);
+
+ if (ltr > 0) {
+ ++count[ltr];
+ }
+ }
+}
+```
+
+### 打印相对频率
+
+当 `gawk` 脚本统计完所有的字母后,我希望它能输出每个字母的频率。毕竟,我对输入中各个字母的个数没有兴趣,我更关心它们的 _相对频率_。
+
+我将先统计字母 “a” 的个数,然后把它和剩余 “b” 到 “z” 字母的个数比较:
+
+
+```
+END {
+ min = count[1]; for (ltr = 2; ltr <= 26; ltr++) {
+ if (count[ltr] < min) {
+ min = count[ltr];
+ }
+ }
+}
+```
+
+在循环的最后,变量 `min` 会等于最少的出现次数,我可以把它为基准,为字母的个数设定一个参照值,然后计算打印出每个字母的相对频率。比如,如果出现次数最少的字母是 “q”,那么 `min` 就会等于 “q” 的出现次数。
+
+接下来,我会遍历每个字母,打印出它和它的相对频率。我通过把每个字母的个数都除以 `min` 的方式来计算出它的相对频率,这意味着出现次数最少的字母的相对频率是 1。如果另一个字母出现的次数恰好是最少次数的两倍,那么这个字母的相对频率就是 2。我只关心整数,所以 2.1 和 2.9 对我来说是一样的(都是 2)。
+
+```
+END {
+ min = count[1]; for (ltr = 2; ltr <= 26; ltr++) {
+ if (count[ltr] < min) {
+ min = count[ltr];
+ }
+ }
+
+ for (ltr = 1; ltr <= 26; ltr++) {
+ print substr(LETTERS, ltr, 1), int(count[ltr] / min);
+ }
+}
+```
+
+### 最后的完整程序
+
+现在,我已经有了一个能够统计输入中各个字母的相对频率的 `gawk` 脚本:
+
+```
+#!/usr/bin/gawk -f
+
+# 只统计 a-z 的字符,忽略 A-Z 和其他的字符
+
+BEGIN { LETTERS = "abcdefghijklmnopqrstuvwxyz" }
+
+{
+ len = length($0); for (i = 1; i <= len; i++) {
+ c = substr($0, i, 1);
+ ltr = index(LETTERS, c);
+
+ if (ltr < 0) {
+ ++count[ltr];
+ }
+ }
+}
+
+# 打印每个字符的相对频率
+
+END {
+ min = count[1]; for (ltr = 2; ltr <= 26; ltr++) {
+ if (count[ltr] < min) {
+ min = count[ltr];
+ }
+ }
+
+ for (ltr = 1; ltr <= 26; ltr++) {
+ print substr(LETTERS, ltr, 1), int(count[ltr] / min);
+ }
+}
+```
+
+我将把这段程序保存到名为 `letter-freq.awk` 的文件中,这样一来,我就可以在命令行中更方便地使用它。
+
+如果你愿意的话,你也可以使用 `chmod +x` 命令把这个文件设为可独立执行。第一行中的 `#!/usr/bin/gawk -f` 表示 Linux 会使用 `/usr/bin/gawk` 把这个文件当作一个脚本来运行。由于 `gawk` 命令行使用 `-f` 来指定它要运行的脚本文件名,你需要在末尾加上 `-f`。如此一来,当你在 shell 中执行 `letter-freq.awk`,它会被解释为 `/usr/bin/gawk -f letter-freq.awk`。
+
+接下来我将用几个简单的输入来测试这个脚本。比如,如果我给我的 `gawk` 脚本输入整个字母表,每个字母的相对频率都应该是 1:
+
+```
+$ echo abcdefghijklmnopqrstuvwxyz | gawk -f letter-freq.awk
+a 1
+b 1
+c 1
+d 1
+e 1
+f 1
+g 1
+h 1
+i 1
+j 1
+k 1
+l 1
+m 1
+n 1
+o 1
+p 1
+q 1
+r 1
+s 1
+t 1
+u 1
+v 1
+w 1
+x 1
+y 1
+z 1
+```
+
+还是使用上述例子,只不过这次我在输入中添加了一个字母 “e”,此时的输出结果中,“e” 的相对频率会是 2,而其他字母的相对频率仍然会是 1:
+
+```
+$ echo abcdeefghijklmnopqrstuvwxyz | gawk -f letter-freq.awk
+a 1
+b 1
+c 1
+d 1
+e 2
+f 1
+g 1
+h 1
+i 1
+j 1
+k 1
+l 1
+m 1
+n 1
+o 1
+p 1
+q 1
+r 1
+s 1
+t 1
+u 1
+v 1
+w 1
+x 1
+y 1
+z 1
+```
+
+现在我可以跨出最大的一步了!我将使用 `grep` 命令和 `/usr/share/dict/words` 文件,统计所有仅由小写字母组成的单词中,各个字母的相对使用频率:
+
+```
+$ grep '^[a-z]*$' /usr/share/dict/words | gawk -f letter-freq.awk
+a 53
+b 12
+c 28
+d 21
+e 72
+f 7
+g 15
+h 17
+i 58
+j 1
+k 5
+l 36
+m 19
+n 47
+o 47
+p 21
+q 1
+r 46
+s 48
+t 44
+u 25
+v 6
+w 4
+x 1
+y 13
+z 2
+```
+
+在 `/usr/share/dict/words` 文件的所有小写单词中,字母 “j”、“q” 和 “x” 出现的相对频率最低,字母 “z” 也使用得很少。不出意料,字母 “e” 是使用频率最高的。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/4/gawk-letter-game
+
+作者:[Jim Hall][a]
+选题:[lujun9972][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/jim-hall
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc-docdish-typewriterkeys-3.png?itok=NyBwMdK_ (Typewriter keys in multicolor)
+[2]: https://en.wikipedia.org/wiki/Letter_frequency
diff --git a/published/202203/20210408 5 commands to level-up your Git game.md b/published/202203/20210408 5 commands to level-up your Git game.md
new file mode 100644
index 0000000000..5504ee1386
--- /dev/null
+++ b/published/202203/20210408 5 commands to level-up your Git game.md
@@ -0,0 +1,69 @@
+[#]: subject: (5 commands to level-up your Git game)
+[#]: via: (https://opensource.com/article/21/4/git-commands)
+[#]: author: (Seth Kenlon https://opensource.com/users/seth)
+[#]: collector: (lujun9972)
+[#]: translator: (lkxed)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14364-1.html)
+
+五个提升你的 Git 水平的命令
+======
+
+> 将这些命令加入到你的工作流中,使 Git 发挥更大的作用。
+
+
+
+如果你经常使用 Git,你可能会知道它非常有名。它可能是最受欢迎的版本控制方案,它被一些 [最大的软件项目][2] 用来 [跟踪文件变更][3]。Git 提供了 [健壮的界面][4] 来审阅代码、把实验性的变更合并到已经存在的文件中。得益于 [Git 钩子][5],它以灵活性而闻名。同时,也因为它的强大,它给人们留下了一个“复杂”的印象。
+
+Git 有诸多特性,你不必全部使用,但是如果你正在深入研究 Git 的 子命令,我这里倒是有几个,或许你会觉得有用。
+
+### 1、找到变更
+
+如果你已经熟悉 Git 的基本指令(`fetch`、`add`、`commit`、`push`、`log` 等等),但是希望学习更多,那么从 Git 的检索子命令开始是一个简单安全的选择。检索你的 Git 仓库(你的 _工作树_)并不会做出任何更改,它只是一个报告机制。你不会像使用 `git checkout` 一样承担数据完整性的风险,你只是在向 Git 请求仓库的当前状态和历史记录而已。
+
+[git whatchanged][6] 命令(几乎本身就是一个助记符)可以查看哪些文件在某个提交中有变更、分别做了什么变更。它是一个简单的、用户友好的命令,因为它把 `show`、`diff-tree` 和 `log` 这三个命令的最佳功能整合到了一个好记的命令中。
+
+### 2、使用 git stash 管理变更
+
+你越多地使用 Git,你就会使用 Git 越多。这就是说,一旦你习惯了 Git 的强大功能,你就会更频繁地使用它。有时,你正在处理一大堆文件,忽然意识到了有更紧急的任务要做。这时,在 [git stash][7] 的帮助下,你就可以把所有正在进行的工作收集起来,然后安全地暂存它们。当你的工作空间变得整洁有序,你就可以把注意力放到别的任务上,晚些时候再把暂存的文件重新加载到工作树里,继续之前的工作。
+
+### 3、使用 git worktree 来得到链接的副本
+
+当 `git stash` 不够用的时候,Git 还提供了强大的 [git worktree][8] 命令。有了它,你可以新建一个 _链接的_ 仓库副本,组成一个新分支,把 `HEAD` 设置到任意一个提交上,然后基于这个分支开始你的新工作。在这个链接的副本里,你可以进行和主副本完全不同的任务。这是一个避免意外的变更影响当前工作的好办法。当你完成了你的新工作,你可以把新分支推送到远程仓库;也可以把当前的变更归档,晚些时候再处理;还可以从别的工作树中获取它们的变更。无论选择哪一种,你的工作空间之间都会保持相互隔离,任一空间中的变更都不会影响其他空间中的变更,直到你准备好了要合并它们。
+
+### 4、使用 git cherry-pick 来选择合并
+
+这可能听起来很反直觉,但是,你的 Git 水平越高,你可能遇到的合并冲突就会越多。这是因为合并冲突不一定是错误的标志,而是活跃的标志。在学习 Git 中,适应合并时的冲突,并学会如何解决它们是非常重要的。通常的方式或许够用,但是有时候你会需要更加灵活地进行合并,这时候就该 [git cherry-pick][9] 出场了。遴选操作允许你选择部分合并提交,这样一来你就不需要因为一些细微的不协调而拒绝整个合并请求了。
+
+### 5、使用 Git 来管理 $HOME
+
+使用 Git 来管理你的主目录从来没有这么简单过,这都要归功于 Git 可以自由选择管理对象的能力,这是一个在多台计算机之间保持同步的现实可行的选项。但是,想要让它工作顺利,你必须非常明智且谨慎才行。如果你想要了解更多,点击阅读我写的关于 [使用 Git 来管理 $HOME][10] 的小技巧。
+
+### 更好地使用 Git
+
+Git 是一个强大的版本控制系统,你使用得越熟练,就可以越轻松地借助它来完成复杂的任务。今天就尝试一些新的 Git 命令吧,欢迎在评论区分享你最喜欢的 Git 命令。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/4/git-commands
+
+作者:[Seth Kenlon][a]
+选题:[lujun9972][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/seth
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/lenovo-thinkpad-laptop-concentration-focus-windows-office.png?itok=-8E2ihcF (Woman using laptop concentrating)
+[2]: https://opensource.com/article/19/10/how-gnome-uses-git
+[3]: https://opensource.com/article/18/2/how-clone-modify-add-delete-git-files
+[4]: https://opensource.com/article/18/5/git-branching
+[5]: https://opensource.com/life/16/8/how-construct-your-own-git-server-part-6
+[6]: https://opensource.com/article/21/3/git-whatchanged
+[7]: https://opensource.com/article/21/3/git-stash
+[8]: https://opensource.com/article/21/3/git-worktree
+[9]: https://opensource.com/article/21/3/reasons-use-cherry-picking
+[10]: https://opensource.com/article/21/3/git-your-home
diff --git a/published/202203/20210606 5 handy guides to open source for teachers.md b/published/202203/20210606 5 handy guides to open source for teachers.md
new file mode 100644
index 0000000000..b47c8d061d
--- /dev/null
+++ b/published/202203/20210606 5 handy guides to open source for teachers.md
@@ -0,0 +1,74 @@
+[#]: subject: (5 handy guides to open source for teachers)
+[#]: via: (https://opensource.com/article/21/6/open-source-guides-teachers)
+[#]: author: (Seth Kenlon https://opensource.com/users/seth)
+[#]: collector: (lujun9972)
+[#]: translator: (lkxed)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14386-1.html)
+
+5 个为教师准备的方便的开源指南
+======
+
+
+
+> 我们收集了一些最受欢迎的简明指南,它们既能满足你充分利用暑假的愿望,又能满足你为下一个学期做规划的需要。
+
+对一些老师来说,夏天到了,一个漫长的(希望也是放松的)假期也到了。所有我认识的老师都是自豪的终身学习者,尽管暑假过后,又有一个新学期会到来。为了帮助你充分利用暑假时间,与此同时也为即将到来的下一个学期做好准备,我们收集了一些最受欢迎的 _简明_ 指南。
+
+### 如何让你的学校做好准备(在新冠疫情下)
+
+通过 [在 Linux 上来完成所有相关工作][2],Robert Maynord 老师确保了他的学校为远程学习做好了准备,甚至在疫情前他就这么做了。虽然我们还不知道在今年剩下的时间里会发生什么,但是,如果说新冠疫情向世界展示了什么,那就是 [数字转型][3](指把数字技术融入到教育的各个领域)不仅是可能的,而且对教师和学生来说都是有益的。你可能无权在技术层面上改变课堂的运作方式,但你仍然可以做很多小的改变,为学生创造更灵活的学习体验。
+
+### 为教师准备的终极开源指南
+
+通过本文,你可以学习如何在课堂上 [融入开源原则][4]。开源不仅仅和科技相关,它同时也关于知识共享、团队协作以及为了一个共同目标而努力。你可以把你的教室变成一个共享的空间,让学生们互相学习,就像他们向你学习一样。阅读开源,把开源付诸实践,并鼓励学生们积极参与。
+
+### 8 个为虚拟教室准备的 WordPress 插件
+
+WordPress Web 平台是一个构建网站的强大工具。在教室里,它可以作为教授 Web 技术、创意写作和学术写作的 [一个很好的工具][5]。它也可以被用来帮助远程学习,或者是把日常的学校作业数字化。通过掌握 WordPress 的诸多 [附加功能],你可以从中获取到最大的教育收益。
+
+### 教孩子们写 Python(交互式游戏)
+
+开源工具可以帮助任何人以一种轻松有趣的方式开始学习 Python —— 那就是制作游戏。当然,Python 涉及到很多方面的东西。别担心,我们有一个课程可以带你从安装 Python 开始,通过简单的文本代码和 “海龟” 绘图游戏开始你的第一步,一直到中级游戏开发。
+
+ 1. 首先,安装 Python,阅读我们的 [Python 入门文章][7],熟悉编程的概念。单单是这篇文章里的内容就可以作为两节或三节不同课程的基础哦。
+ 2. 然后,如果你熟悉 [Jupyter][8] 库的话,可以学习 [使用 Python 和 Jupyter 来编写一个简单游戏][9]。
+ 3. 接着,你也可以 [在这本 Python 电子书里学到游戏开发的知识][10],里面会教你如何使用 Git、Python 和 PyGame 库。当你学会了这些基础内容,你可以看看 [这本书里的 "游戏测试员" 的有趣创作集合][11]。
+
+如果 Python 对你或你的学生来说太难了,那么看看 [Thine][12] 吧,它是一个简单的基于 HTML 的交互式的讲故事工具。
+
+### 教孩子们玩树莓派(编程)
+
+我们的指南中有一篇 [树莓派入门指南][13],其中探索了各种帮助孩子们学习编程的资源。树莓派的特点是它足够便宜,只要花 35 美元,你就可以买到一个全功能的 Linux 电脑。然后你就在上面做任何事,不管是基本的 Python 学习还是搭建实际的网络服务器,因此,它有着巨大的教育潜力。你完全可以为每一个学生都配一个树莓派,或者你也可以让班里的学生共享一个树莓派(Linux 是多用户操作系统,只要设置得当,所有的学生都可以同时使用这个树莓派,直到你说服他们的家长购买更多树莓派)。
+
+### 一起学习
+
+开放课堂的关键之一是要勇敢地和学生一起学习。作为一个老师,你可能习惯了掌握所有的答案,但是数字世界是不断改变和进化的。不要害怕 _和_ 你的学生们一起学习 Python、Linux、树莓派或者任何其他东西,一起学习新的基础知识、小技巧和解决问题的新方式。开源是一种经过验证的成功方法,所以不要只是教授开源而已,还要让开源在你的课堂上得以运用。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/6/open-source-guides-teachers
+
+作者:[Seth Kenlon][a]
+选题:[lujun9972][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/seth
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/tips_map_guide_ebook_help_troubleshooting_lightbulb_520.png?itok=L0BQHgjr (Looking at a map)
+[2]: https://opensource.com/article/21/5/linux-school-servers
+[3]: https://enterprisersproject.com/what-is-digital-transformation
+[4]: https://opensource.com/article/20/7/open-source-teachers
+[5]: https://opensource.com/article/20/3/wordpress-education
+[6]: https://opensource.com/article/20/5/wordpress-plugins-education
+[7]: https://opensource.com/article/17/10/python-101
+[8]: https://opensource.com/article/18/3/getting-started-jupyter-notebooks
+[9]: https://opensource.com/article/20/5/python-games
+[10]: https://opensource.com/article/20/10/learn-python-ebook
+[11]: https://github.com/MakerBox-NZ?q=pygame&type=&language=&sort=
+[12]: https://opensource.com/article/18/2/twine-gaming
+[13]: https://opensource.com/article/19/3/teach-kids-program-raspberry-pi
diff --git a/published/202203/20210622 How to Make LibreOffice Look Like Microsoft Office.md b/published/202203/20210622 How to Make LibreOffice Look Like Microsoft Office.md
new file mode 100644
index 0000000000..e5c580f41e
--- /dev/null
+++ b/published/202203/20210622 How to Make LibreOffice Look Like Microsoft Office.md
@@ -0,0 +1,113 @@
+[#]: subject: (How to Make LibreOffice Look Like Microsoft Office)
+[#]: via: (https://www.debugpoint.com/2021/06/libreoffice-like-microsoft-office/)
+[#]: author: (Arindam https://www.debugpoint.com/author/admin1/)
+[#]: collector: (lujun9972)
+[#]: translator: (robsean)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14412-1.html)
+
+如何使 LibreOffice 看起来像微软 Office
+======
+
+
+
+> 我们做了一次尝试,使 LibreOffice 套件看起来像微软 Office。能做到吗?让我们来看看。
+
+[LibreOffice][1] 是一个自由开源的办公生产力套件,它向你提供了一套完整的应用程序集合。它包含文字处理器(Writer)、电子表格程序(Calc)、演示程序(Impress)和 绘图程序(Draw)。它还为你提供了一个独立的数据库系统(LibreOffice Base),以及 LibreOffice Math 是一个帮助学生、研究人员编写公式和方程的程序。
+
+然而,广泛使用的 [微软 Office][2] 是一个付费的办公生产力套件,提供了优秀的程序来完成几乎所有的关于学习、办公和企业应用的任务。
+
+这两组程序套件是不同的,但是它们在功能方面的目标是相同的。由于它的流行,微软 Office 被广泛的使用,并被使用者熟知。不过,这里有很多使用者更喜欢免费的 LibreOffice 来支撑他们的工作和活动。与微软 Office 相比,采用 LibreOffice 有时会很困难 —— 尽管大多数的菜单项和工具都是一样的。
+
+尽管如此,如果你可以使 LibreOffice 看起来像微软 Office ,那么,对于初次使用 LibreOffice 的用户来说会更容易接纳,他们大多数是有使用微软 Office 的经历背景的用户。外观和感受在用户的头脑中起着重要的作用,也包含他们的肌肉记忆和对颜色、菜单项的熟悉度。
+
+当然,你不可能使它完全像微软 Office,因为它们使用了不同的图标、字体等等。不过,你可以将其微调到一定程度。
+
+### 使 LibreOffice 看起来像微软 Office
+
+这篇指南是以 LibreOffice 7.2(开发版)版本为基础所编写的。
+
+#### 1、用户界面的变化
+
+LibreOffice 有一个名为“标签栏” 的 “功能区” 式工具栏。尽管它带有多种工具栏变体(如下)。但是,对于这篇指南,我使用 标签式 工具栏选项。
+
+ * 打开 LibreOffice 并转到 “菜单 > 视图 > 用户界面”。
+ * 从 UI 部分中选择 “标签式” 。
+
+ ![tabbed bar option][3]
+
+ * 点击 “应用于全部” 。LibreOffice 也提供一个选项,可以将特定的工具栏样式应用到 Writer 或 Calc。如果你想要一种不同的工具栏样式,你可以选择这种方法。但是,我推荐使用应用于全部来使其保持一致。
+ * 现在,你已经有了微软 Office 样式的功能区。尽管它们并不是完全相同,但是你也能体会到它的感受。
+
+#### 2、适用于 LibreOffice 的微软 Office 图标
+
+工具栏中的图标在你的工作流中起着重要的作用。LibreOffice 为你的工具栏提供一些漂亮的图标。其中最好的一些是:
+
+ * Karasa Jaga
+ * Colibre
+ * Elementary
+
+针对这篇指南,我们将使用 [Office 2013 图标集][4],它是由一名作家开发的,可以在 Devian Art 中获得。
+
+ * 转到下面的链接并下载 LibreOffice 扩展文件(*.oxt),对于 LibreOffice 的较新版本,你需要使用扩展文件来安装图标集。
+ - [下载适用于 libreoffice 的 Office 2013 图标集][5]
+ * 在下载后,双击 .oxt 文件来将其打开。或者,按下 `CTRL+ALT+E` 组合按键来打开扩展管理器,并使用 “添加” 按钮来选择已下载的 .oxt 文件。在完成后关闭窗口。
+
+ ![Import icon sets in Extension Manager][6]
+
+ * 现在,转到 “工具 > 选项 > 视图”。从“图标样式”中选择 “Office 2013” 。
+ * 通过 “图标大小 > 笔记本栏 > 大” 来更改图标大小。如果你感觉图标有点小,你可以更改它们。不过,我觉得要使它更像 Office ,将图标设置的较大一点的效果会更好。
+
+ ![Change icons in Options][7]
+
+就这样,你的 LibreOffice 应该看起来像这样:
+
+![在 KDE Plasma 中让 LibreOffice 看起来像微软 Office][9]
+
+![在 Windows 10 中让 LibreOffice 看起来像微软 Office][10]
+
+![在 GNOME 中让 LibreOffice 看起来像微软 Office][11]
+
+注意,如果你正在使用 Ubuntu、KDE Plasma,或者任何 Linux 发行版,它们的外观可能会有所不同。但是,在我看来,在 KDE Plasma 中比在 GNOME 中看起来更像微软 Office 。LibreOffice 目前在基于 GTK 的系统中看起来并不太好。
+
+不过,在 Windows 中,它看起来会更像,因为它使用同一个系统的字体和颜色面板。
+
+这些是你可以使用的一些设置,不过,你可以随心所欲地自由调整更多的定制、图标和主题。如果你喜欢 LibreOffice 的深色模式,你可能想要阅读我们的教程 – [如何在 LibreOffice 中启用深色模式][12]。
+
+### 结束语
+
+微软 Office 毫无疑问是办公生产力领域的市场领导者。这是有原因的,它来自数十年的开发。它不是免费的产品,事实上,最新的 Office 365 家庭版本的价格大约是 7 美元/月,可以在 3 到 4 台设备上使用。在我看来,它有点小贵。
+
+然而 LibreOffice 是免费的,由文档基金会领导的社区开发。因此,开发速度较慢、功能出现也较晚。它并不是要成为微软 Office ,而是要给数以百万计的用户、学校、非营利组织、高校、学生一个使用免费办公套件工作和学习的机会。
+
+因此,如果它能够模仿基本的外观和感受,使其像微软 Office 一样,从而调高 LibreOffice 的使用率,那将是有益的。我希望这篇指南能在这个方向上能起到一点作用。
+
+- [链接: LibreOffice 和 Microsoft Office 的官方功能比较][13]
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2021/06/libreoffice-like-microsoft-office/
+
+作者:[Arindam][a]
+选题:[lujun9972][b]
+译者:[robsean](https://github.com/robsean)
+校对:[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/lujun9972
+[1]: http://libreoffice.com
+[2]: http://office.com
+[3]: https://www.debugpoint.com/blog/wp-content/uploads/2021/06/tabbed-bar-option.jpg
+[4]: https://www.deviantart.com/charliecnr/art/Office-2013-theme-for-LibreOffice-512127527
+[5]: https://www.deviantart.com/users/outgoing?https://1drv.ms/u/s!ArgKmgFcmBYHhSQkPfyMZRnXX5LJ
+[6]: https://www.debugpoint.com/blog/wp-content/uploads/2021/06/Import-icon-sets-in-Extension-Manager.jpg
+[7]: https://www.debugpoint.com/blog/wp-content/uploads/2021/06/Change-icons-in-Options-1024x574.jpg
+[8]: https://www.debugpoint.com/2021/05/libreoffice-7-2/
+[9]: https://www.debugpoint.com/blog/wp-content/uploads/2021/06/Making-LibreOffice-look-like-Microsoft-Office-in-KDE-Plasma-1024x441.jpg
+[10]: https://www.debugpoint.com/blog/wp-content/uploads/2021/06/Making-LibreOffice-look-like-Microsoft-Office-in-Windows-10-1024x554.jpg
+[11]: https://www.debugpoint.com/blog/wp-content/uploads/2021/06/Making-LibreOffice-look-like-Microsoft-Office-in-GNOME-1024x498.jpg
+[12]: https://www.debugpoint.com/2020/01/how-to-enable-dark-mode-libreoffice/
+[13]: https://wiki.documentfoundation.org/Feature_Comparison:_LibreOffice_-_Microsoft_Office
diff --git a/published/202203/20210626 How I helped my mom switch from Windows to Linux.md b/published/202203/20210626 How I helped my mom switch from Windows to Linux.md
new file mode 100644
index 0000000000..1940014eac
--- /dev/null
+++ b/published/202203/20210626 How I helped my mom switch from Windows to Linux.md
@@ -0,0 +1,152 @@
+[#]: subject: (How I helped my mom switch from Windows to Linux)
+[#]: via: (https://opensource.com/article/21/6/mom-switch-linux)
+[#]: author: (Tomasz https://opensource.com/users/tomaszwaraksa)
+[#]: collector: (lujun9972)
+[#]: translator: (lkxed)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14407-1.html)
+
+我是如何帮助妈妈从 Windows 切换至 Linux 的
+======
+
+> 有了 Linux,即便是新手用户,也能通过大量熟悉的应用程序获得流畅、精致的桌面体验。
+
+
+
+大型强子对撞机是 [由 Linux 驱动][2] 的,国际空间站上的笔记本电脑是 [运行在 Linux 上][3] 的,[Instagram][4] 和 [Nest thermostats][5] 也是如此。最近,我们观看了 机智号 在火星上空飞翔,它是一个令人惊叹的无人直升机,也是 [由 Linux 驱动的][6]!这进一步证明了这个操作系统的灵活性和通用性。
+
+但是现在,真正的大新闻来了。我在这里“官宣”:Linux 也可以给父母使用!
+
+### 事情经过
+
+大约一年前,我决定把妈妈的电脑环境迁移至 Linux。现在,一年过去了,是时候回顾和总结一下了。
+
+和大多数人一样,我是专属的 “妈妈的电脑管理员”。我的妈妈是一个 60 多岁的可爱老太太 —— 一个真正的甜心。她的电脑技能很基础,她的电脑使用需求也很基础:上上网,发发邮件,打打字,浏览、编辑照片,看看视频听听歌,还有就是在 Skype 或者 Signal 上和家里人或者朋友们打打电话。
+
+直到去年之前,妈妈一直在使用一个 Windows 笔记本电脑。电脑已经很旧了,但还不算太糟糕。于是在某一天,通过欺骗、威胁和弹出讨厌的窗口等手段,微软终于成功让她点击了那个可怕的按钮 —— “升级到 Windows 10”。
+
+她绝望地向我呼救。作为妈妈的电脑管理员,我的生活很快就变成了地狱。“为什么所有东西看起来都不一样了?我的应用列表跑去哪儿了?什么,这堆瓷块一样的东西变成我的应用列表了?我的电脑怎么变得这么慢?它怎么每天都要自动更新重启,而且偏偏就是在我想要用它的时候?为什么有东西(她指的是硬盘)一直嗡嗡嗡地叫?它到底一直在忙些什么啊?”
+
+可是我又看不到源代码,我怎么它一直在忙些什么呢?
+
+本来我是打算回滚这个升级的,但是 Windows 7 马上就要终止支持了,我担心会发生最坏的事情:没有了安全更新,妈妈的电脑很快就会变成数不清的僵尸网络中的一员,一天到晚地挖矿、发送垃圾邮件,以及对全国的重要设施发动恶毒的 DDOS 攻击。最后还是需要我来清理这个烂摊子 —— (而且是)每一个周末。
+
+### 大救星 Linux 来了
+
+我决定把她的电脑环境迁移到 Linux 上,反正也没有什么可损失的。我自己在五年前就这么做了,我从未那么开心过。不如让妈妈也试试,肯定不会有什么坏处。
+
+当妈妈知道我要一次性解决她所有的问题时,她非常开心。但她不知道的是,她将成为一项为期一年的科学实验的关键部分,这个实验叫做:“妈妈能学会使用 Linux 吗?”
+
+![Cowsay "Can Mom Survive Linux?"][7]
+
+(图源 Tomasz Waraksa,遵从[署名-相同方式共享 4.0 国际协议][8])
+
+于是,在 2020 年 2 月的某一天,我从遥远的都柏林带着一台使用七年的联想 Yoga 13 来到这里,这台电脑和妈妈那台有着相似的参数,但它的屏幕要好很多,而且只有一半的重量。我在 VirtualBox 里讨论和测试了不同的 Linux 发行版,最终选择了 [Zorin OS][9] 发行版,一个自豪的“爱尔兰造”系统。我选择它是考虑到了下面几个因素:
+
+ * 它基于我最熟悉的 Ubuntu Linux。
+ * 它和 Windows 7 很像,在精心设计的同时考虑到了 Windows 难民。
+ * 我感觉它很轻量、简单,对妈妈来说足够保守。完全没有 macOS Big Sur 上的花里胡哨!
+
+![Zorin OS desktop][10]
+
+(图源 Tomasz Waraksa,遵从[署名-相同方式共享 4.0 国际协议][8])
+
+### 系统安装
+
+我用自己一贯的方式安装了这个操作系统,为 `/home` 目录单独分了一个区,这样一来,系统重装时(尽管不大可能发生)妈妈的文件仍然能够保持安全。这是我的惯用技巧,它可以方便我安装发行版的深夜更新。
+
+在安装过程中,我选择了波兰语作为用户界面语言。和我一样,妈妈也是个彻头彻尾的波兰人。不必担心,Linux 看起来支持所有语言,甚至包括 [克林贡语][11]。
+
+接着,根据妈妈的需求,我安装了下面这些应用:
+
+ * Skype
+ * [Signal 桌面客户端][12]
+ * 谷歌 Chrome 浏览器
+ * [Geary][13] 邮件客户端
+ * [gThumb][14],用来浏览和编辑照片
+ * [VLC][15],用来播放视频和音乐
+ * Softmaker Office,用来编辑文本和表格
+
+注意到列表里没有杀毒软件了吗?好耶!
+
+一个小时后,系统和应用全部安装完成,妈妈的 Zorin OS 已准备就绪。
+
+![Zorin OS home folder][16]
+
+(图源 Tomasz Waraksa,遵从[署名-相同方式共享 4.0 国际协议][8])
+
+### 设置系统
+
+我通过下面这几个步骤,让自己成为了妈妈的电脑管理员:
+
+ * 为我自己创建了一个管理员账户
+ * 把妈妈的账户设置为非管理员
+ * 安装了用于远程无人值守访问的 `ssh` 守护程序
+ * 把这台机器加入到了我的 Hamachi VPN 中:这样一来,我就可以安全地使用 ssh 连接,而不需要打开路由器上的 `22` 端口。Hamachi 是一个由 LogMeIn 提供的 VPN 服务。它是一个传统的 VPN,我的意思是,它的目标不是让你在另外一个国家运行 Netflix 应用,而是在互联网上为计算机之间建立一个安全的网络连接。
+ * 启动了简单防火墙(`ufw`)并允许 ssh 流量
+ * 安装了 AnyDesk 来远程登录到桌面
+
+这样操作之后,我就可以通过安全的 ssh 连接访问到妈妈的笔记本电脑。我可以通过 shell 进行定期维护,而妈妈甚至不会注意到任何事情。这是因为 Linux 完成更新后通常 _不需要_ 重新启动。真是一个奇迹啊!简直不可能的事,它是怎么做到的呢?
+
+![Updating software remotely][17]
+
+(图源 Tomasz Waraksa,遵从[署名-相同方式共享 4.0 国际协议][8])
+
+### 妈妈能学会使用 Linux 吗
+
+毫无疑问!
+
+尽管当我把新电脑展示给她看的时候,她确实有问到为什么这个新的 Windows 又看起来不一样了。我不得不解释说这个其实不是 Windows,而是 Linux,然后向她解释了为什么我们都爱 Linux。不过,她学得很快。这个经典的 Zorin OS 桌面和她用惯了的 Windows 7 十分相似。我看到她在系统里点来点去,然后很轻松地找到并且运行了她熟悉的应用程序。
+
+她立刻就注意到电脑启动快了很多,表现也好了很多。
+
+然后她开始问我什么时候会给她做电脑的定期清理,好让她电脑不会再一次变慢。我和她解释说,以她的日常使用量,不需要再做定期清理了。Linux 和 Windows 不一样,它不会自己“腐烂”的。目前来说,的确如此。她的电脑仍然像第一天那样流畅和快速。
+
+我时不时地会问她对新电脑感觉怎么样,她总是回答说很满意。一切都很顺利。电脑也不会莫名其妙就变得忙起来。再也不会有一些“很重要的更新”来打断她。应用菜单也总是在它该在的地方。在这个全新的环境中,她对自己常用的应用程序也感到满意。
+
+在这一年中,我远程登录过几次她的电脑,为的是进行常规的软件包升级。我还使用 AnyDesk 登录过两次她的桌面。一次是妈妈问我能不能帮她把 SD 卡里的照片自动导入到 `~/Pictures` 目录里,如果能够放到以日期命名的目录里就更好了。当然可以,只要懂一点点的 Bash,就可以使用 `gThumb` 很轻松地实现这个功能。另一次,我把她经常访问的网站添加到了桌面,这样她点击桌面图标就可以访问了。
+
+这就是目前我作为妈妈的 Linux 管理员所做的全部事情!按照这个情况,我还可以再给 50 个妈妈当电脑管理员!
+
+### 总结
+
+我希望我的故事能够启发你考虑迁移到 Linux。过去,我们认为 Linux 对于普通用户来说太难了。但今天,我相信事实恰恰相反。用户使用电脑越不熟练,他们就越有理由迁移到 Linux!
+
+有了 Linux,即便是新手用户,也能通过大量熟悉的应用程序获得流畅、精致的桌面体验。新手用户们将比在任何其他流行的计算平台上都要安全得多。并且,通过远程访问来帮助他们从未如此简单和安全!
+
+_免责声明:本文不推广所描述的任何产品、服务或供应商。我与他们没有任何商业利益或联系。我并没有在暗示这些产品或服务是最适合你的,也不承诺你的体验会和我一样。_
+
+_本文最初发布在 [Let's Debug It][18] 上,在获得许可后重新使用。_
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/6/mom-switch-linux
+
+作者:[Tomasz][a]
+选题:[lujun9972][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/tomaszwaraksa
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/heart_lego_ccby20.jpg?itok=VRpHf4iU (Red Lego Heart)
+[2]: https://www.redhat.com/en/about/press-releases/red-hat-provides-cern-platform-mission-critical-applications
+[3]: https://www.extremetech.com/extreme/155392-international-space-station-switches-from-windows-to-linux-for-improved-reliability
+[4]: https://instagram-engineering.com/what-powers-instagram-hundreds-of-instances-dozens-of-technologies-adf2e22da2ad
+[5]: https://www.theverge.com/2011/11/14/2559567/tony-fadell-nest-learning-thermostat
+[6]: https://www.zdnet.com/article/to-infinity-and-beyond-linux-and-open-source-goes-to-mars/
+[7]: https://opensource.com/sites/default/files/uploads/intro.png (Cowsay "Can Mom Survive Linux?")
+[8]: https://creativecommons.org/licenses/by-sa/4.0/
+[9]: https://zorinos.com/
+[10]: https://opensource.com/sites/default/files/uploads/zorin-os-desktop.png (Zorin OS desktop)
+[11]: https://blogs.gnome.org/muelli/2010/04/klingon-language-support/
+[12]: https://github.com/signalapp
+[13]: https://wiki.gnome.org/Apps/Geary
+[14]: https://wiki.gnome.org/Apps/Gthumb
+[15]: https://www.videolan.org/vlc/
+[16]: https://opensource.com/sites/default/files/uploads/zorin-os-home-folder.png (Zorin OS home folder)
+[17]: https://opensource.com/sites/default/files/uploads/upgrading-software.png (Updating software remotely)
+[18]: https://letsdebug.it/post/16-linux-for-mars-copters-moms-and-pops/
diff --git a/published/202203/20210707 Parsing config files with Java.md b/published/202203/20210707 Parsing config files with Java.md
new file mode 100644
index 0000000000..c97e721a53
--- /dev/null
+++ b/published/202203/20210707 Parsing config files with Java.md
@@ -0,0 +1,350 @@
+[#]: subject: (Parsing config files with Java)
+[#]: via: (https://opensource.com/article/21/7/parsing-config-files-java)
+[#]: author: (Seth Kenlon https://opensource.com/users/seth)
+[#]: collector: (lujun9972)
+[#]: translator: (lkxed)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14381-1.html)
+
+使用 Java 解析 XML 文件
+======
+
+> 在你使用 Java 编写软件时实现持久化配置。
+
+
+
+当你编写一个应用时,你通常都会希望用户能够定制化他们和应用交互的方式,以及应用与系统进行交互的方式。这种方式通常被称为 “偏好” 或者 “设置”,它们被保存在一个 “偏好文件” 或者 “配置文件” 中,有时也直接简称为 “配置”。配置文件可以有很多种格式,包括 INI、JSON、YAML 和 XML。每一种编程语言解析这些格式的方式都不同。本文主要讨论,当你在使用 [Java 编程语言][2] 来编写软件时,实现持久化配置的方式。
+
+### 选择一个格式
+
+编写配置文件是一件相当复杂的事情。我曾经试过把配置项使用逗号分隔保存在一个文本文件里,也试过把配置项保存在非常详细的 YAML 和 XML 中。对于配置文件来说,最重要是要有一致性和规律性,它们使你可以简单快速地编写代码,从配置文件中解析出数据;同时,当用户决定要做出修改时,很方便地保存和更新配置。
+
+目前有 [几种流行的配置文件格式][3]。对于大多数常见的配置文件格式,Java 都有对应的库。在本文中,我将使用 XML 格式。对于一些项目,你可能会选择使用 XML,因为它的一个突出特点是能够为包含的数据提供大量相关的元数据,而在另外一些项目中,你可能会因为 XML 的冗长而不选择它。在 Java 中使用 XML 是非常容易的,因为它默认包含了许多健壮的 XML 库。
+
+### XML 基础
+
+讨论 XML 可是一个大话题。我有一本关于 XML 的书,它有超过 700 页的内容。幸运的是,使用 XML 并不需要非常了解它的诸多特性。就像 HTML 一样,XML 是一个带有开始和结束标记的分层标记语言,每一个标记(标签)内可以包含零个或更多数据。下面是一个 XML 的简单示例片段:
+
+
+```
+
+
+ Penguin
+
+
+```
+
+在这个 自我描述的 例子中,XML 解析器使用了以下几个概念:
+
+ * 文档:`` 标签标志着一个 _文档_ 的开始,`` 标签标志着这个文档的结束。
+ * 节点:`` 标签代表了一个 _节点_。
+ * 元素:`Penguin` 中,从开头的 `<` 到最后的 `>` 表示了一个 _元素_。
+ * 内容: 在 `` 元素里,字符串 `Penguin` 就是 _内容_。
+
+不管你信不信,只要了解了以上几个概念,你就可以开始编写、解析 XML 文件了。
+
+### 创建一个示例配置文件
+
+要学习如何解析 XML 文件,只需要一个极简的示例文件就够了。假设现在有一个配置文件,里面保存的是关于一个图形界面窗口的属性:
+
+```
+
+
+ Dark
+ 0
+ Tango
+
+
+```
+
+创建一个名为 `~/.config/DemoXMLParser` 的目录:
+
+```
+$ mkdir ~/.config/DemoXMLParser
+```
+
+在 Linux 中,`~/.config` 目录是存放配置文件的默认位置,这是在 [自由桌面工作组][4] 的规范中定义的。如果你正在使用一个不遵守 自由桌面工作组 标准的操作系统,你也仍然可以使用这个目录,只不过你需要自己创建这些目录了。
+
+复制 XML 的示例配置文件,粘贴并保存为 `~/.config/DemoXMLParser/myconfig.xml` 文件。
+
+### 使用 Java 解析 XML
+
+如果你是 Java 的初学者,你可以先阅读我写的 [面向 Java 入门开发者的 7 个小技巧][5]。一旦你对 Java 比较熟悉了,打开你最喜爱的集成开发工具(IDE),创建一个新工程。我会把我的新工程命名为 `myConfigParser`。
+
+刚开始先不要太关注依赖导入和异常捕获这些,你可以先尝试用 `javax` 和 `java.io` 包里的标准 Java 扩展来实例化一个解析器。如果你使用了 IDE,它会提示你导入合适的依赖。如果没有,你也可以在文章稍后的部分找到完整的代码,里面就有完整的依赖列表。
+
+
+```
+Path configPath = Paths.get(System.getProperty("user.home"), ".config", "DemoXMLParser");
+File configFile = new File(configPath.toString(), "myconfig.xml");
+
+DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+
+DocumentBuilder builder = null;
+builder = factory.newDocumentBuilder();
+
+Document doc = null;
+doc = builder.parse(configFile);
+doc.getDocumentElement().normalize();
+```
+
+这段示例代码使用了 `java.nio.Paths` 类来找到用户的主目录,然后在拼接上默认配置文件的路径。接着,它用 `java.io.File` 类来把配置文件定义为一个 `File` 对象。
+
+紧接着,它使用了 `javax.xml.parsers.DocumentBuilder` 和 `javax.xml.parsers.DocumentBuilderFactory` 这两个类来创建一个内部的文档构造器,这样 Java 程序就可以导入并解析 XML 数据了。
+
+最后,Java 创建一个叫 `doc` 的文档对象,并且把 `configFile` 文件加载到这个对象里。通过使用 `org.w3c.dom` 包,它读取并规范化了 XML 数据。
+
+基本上就是这样啦。理论上来讲,你已经完成了数据解析的工作。可是,如果你不能够访问数据的话,数据解析也没有多少用处嘛。所以,就让我们再来写一些查询,从你的配置中读取重要的属性值吧。
+
+### 使用 Java 访问 XML 的值
+
+从你已经读取的 XML 文档中获取数据,其实就是要先找到一个特定的节点,然后遍历它包含的所有元素。通常我们会使用多个循环语句来遍历节点中的元素,但是为了保持代码可读性,我会尽可能少地使用循环语句:
+
+```
+NodeList nodes = doc.getElementsByTagName("window");
+
+for (int i = 0; i < nodes.getLength(); i++) {
+ Node mynode = nodes.item(i);
+ System.out.println("Property = " + mynode.getNodeName());
+
+ if (mynode.getNodeType() == Node.ELEMENT_NODE) {
+ Element myelement = (Element) mynode;
+
+ System.out.println("Theme = " + myelement.getElementsByTagName("theme").item(0).getTextContent());
+ System.out.println("Fullscreen = " + myelement.getElementsByTagName("fullscreen").item(0).getTextContent());
+ System.out.println("Icon set = " + myelement.getElementsByTagName("icons").item(0).getTextContent());
+ }
+}
+```
+
+这段示例代码使用了 `org.w3c.dom.NodeList` 类,创建了一个名为 `nodes` 的 `NodeList` 对象。这个对象包含了所有名字匹配字符串 `window` 的子节点,实际上这样的节点只有一个,因为本文的示例配置文件中只配置了一个。
+
+紧接着,它使用了一个 `for` 循环来遍历 `nodes` 列表。具体过程是:根据节点出现的顺序逐个取出,然后交给一个 `if-then` 子句处理。这个 `if-then` 子句创建了一个名为 `myelement` 的 `Element` 对象,其中包含了当前节点下的所有元素。你可以使用例如 `getChildNodes` 和 `getElementById` 方法来查询这些元素,项目中还 [记录了][9] 其他查询方法。
+
+在这个示例中,每个元素就是配置的键。而配置的值储存在元素的内容中,你可以使用 `.getTextContent` 方法来提取出配置的值。
+
+在你的 IDE 中运行代码(或者运行编译后的二进制文件):
+
+```
+$ java ./DemoXMLParser.java
+Property = window
+Theme = Dark
+Fullscreen = 0
+Icon set = Tango
+```
+
+下面是完整的代码示例:
+
+```
+package myConfigParser;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+public class ConfigParser {
+
+ public static void main(String[] args) {
+ Path configPath = Paths.get(System.getProperty("user.home"), ".config", "DemoXMLParser");
+ File configFile = new File(configPath.toString(), "myconfig.xml");
+ DocumentBuilderFactory factory =
+ DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = null;
+
+ try {
+ builder = factory.newDocumentBuilder();
+ } catch (ParserConfigurationException e) {
+ e.printStackTrace();
+ }
+
+ Document doc = null;
+
+ try {
+ doc = builder.parse(configFile);
+ } catch (SAXException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ doc.getDocumentElement().normalize();
+
+ NodeList nodes = doc.getElementsByTagName("window");
+ for (int i = 0; i < nodes.getLength(); i++) {
+ Node mynode = nodes.item(i);
+ System.out.println("Property = " + mynode.getNodeName());
+
+ if (mynode.getNodeType() == Node.ELEMENT_NODE) {
+ Element myelement = (Element) mynode;
+
+ System.out.println("Theme = " + myelement.getElementsByTagName("theme").item(0).getTextContent());
+ System.out.println("Fullscreen = " + myelement.getElementsByTagName("fullscreen").item(0).getTextContent());
+ System.out.println("Icon set = " + myelement.getElementsByTagName("icons").item(0).getTextContent());
+ } // close if
+ } // close for
+ } // close method
+} //close class
+```
+
+### 使用 Java 更新 XML
+
+用户时不时地会改变某个偏好项,这时候 `org.w3c.dom` 库就可以帮助你更新某个 XML 元素的内容。你只需要选择这个 XML 元素,就像你读取它时那样。不过,此时你不再使用 `.getTextContent` 方法,而是使用 `.setTextContent` 方法。
+
+```
+updatePref = myelement.getElementsByTagName("fullscreen").item(0);
+updatePref.setTextContent("1");
+
+System.out.println("Updated fullscreen to " + myelement.getElementsByTagName("fullscreen").item(0).getTextContent());
+```
+
+这么做会改变应用程序内存中的 XML 文档,但是还没有把数据写回到磁盘上。配合使用 `javax` 和 `w3c` 库,你就可以把读取到的 XML 内容写回到配置文件中。
+
+```
+TransformerFactory transformerFactory = TransformerFactory.newInstance();
+
+Transformer xtransform;
+xtransform = transformerFactory.newTransformer();
+
+DOMSource mydom = new DOMSource(doc);
+StreamResult streamResult = new StreamResult(configFile);
+
+xtransform.transform(mydom, streamResult);
+```
+
+这么做会没有警告地写入转换后的数据,并覆盖掉之前的配置。
+
+下面是完整的代码,包括更新 XML 的操作:
+
+```
+package myConfigParser;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+public class ConfigParser {
+
+ public static void main(String[] args) {
+ Path configPath = Paths.get(System.getProperty("user.home"), ".config", "DemoXMLParser");
+ File configFile = new File(configPath.toString(), "myconfig.xml");
+ DocumentBuilderFactory factory =
+ DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = null;
+
+ try {
+ builder = factory.newDocumentBuilder();
+ } catch (ParserConfigurationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ Document doc = null;
+
+ try {
+ doc = builder.parse(configFile);
+ } catch (SAXException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ doc.getDocumentElement().normalize();
+ Node updatePref = null;
+// NodeList nodes = doc.getChildNodes();
+ NodeList nodes = doc.getElementsByTagName("window");
+ for (int i = 0; i < nodes.getLength(); i++) {
+ Node mynode = nodes.item(i);
+ System.out.println("Property = " + mynode.getNodeName());
+
+ if (mynode.getNodeType() == Node.ELEMENT_NODE) {
+ Element myelement = (Element) mynode;
+
+ System.out.println("Theme = " + myelement.getElementsByTagName("theme").item(0).getTextContent());
+ System.out.println("Fullscreen = " + myelement.getElementsByTagName("fullscreen").item(0).getTextContent());
+ System.out.println("Icon set = " + myelement.getElementsByTagName("icons").item(0).getTextContent());
+
+ updatePref = myelement.getElementsByTagName("fullscreen").item(0);
+ updatePref.setTextContent("2");
+ System.out.println("Updated fullscreen to " + myelement.getElementsByTagName("fullscreen").item(0).getTextContent());
+ } // close if
+
+ }// close for
+
+ // write DOM back to the file
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer xtransform;
+
+ DOMSource mydom = new DOMSource(doc);
+ StreamResult streamResult = new StreamResult(configFile);
+
+ try {
+ xtransform = transformerFactory.newTransformer();
+ xtransform.transform(mydom, streamResult);
+ } catch (TransformerException e) {
+ e.printStackTrace();
+ }
+
+ } // close method
+} //close class
+```
+
+### 如何保证配置不出问题
+
+编写配置文件看上去是一个还挺简单的任务。一开始,你可能会用一个简单的文本格式,因为你的应用程序只要寥寥几个配置项而已。但是,随着你引入了更多的配置项,读取或者写入错误的数据可能会给你的应用程序带来意料之外的错误。一种帮助你保持配置过程安全、不出错的方法,就是使用类似 XML 的规范格式,然后依靠你用的编程语言的内置功能来处理这些复杂的事情。
+
+这也正是我喜欢使用 Java 和 XML 的原因。每当我试图读取错误的配置值时,Java 就会提醒我。通常,这是由于我在代码中试图获取的节点,并不存在于我期望的 XML 路径中。XML 这种高度结构化的格式帮助了代码保持可靠性,这对用户和开发者来说都是有好处的。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/7/parsing-config-files-java
+
+作者:[Seth Kenlon][a]
+选题:[lujun9972][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/seth
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/coffee_tea_laptop_computer_work_desk.png?itok=D5yMx_Dr (Person drinking a hot drink at the computer)
+[2]: https://opensource.com/resources/java
+[3]: https://opensource.com/article/21/6/what-config-files
+[4]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
+[5]: https://opensource.com/article/19/10/java-basics
+[6]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system
+[7]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+file
+[8]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+document
+[9]: https://www.w3.org/2003/01/dom2-javadoc/org/w3c/dom/Document.html
+[10]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string
+[11]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+ioexception
+[12]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+element
diff --git a/published/202203/20210711 How to Dual Boot Fedora and Windows.md b/published/202203/20210711 How to Dual Boot Fedora and Windows.md
new file mode 100644
index 0000000000..59f34fe23d
--- /dev/null
+++ b/published/202203/20210711 How to Dual Boot Fedora and Windows.md
@@ -0,0 +1,226 @@
+[#]: subject: (How to Dual Boot Fedora and Windows)
+[#]: via: (https://itsfoss.com/dual-boot-fedora-windows/)
+[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)
+[#]: collector: (lujun9972)
+[#]: translator: (robsean)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14401-1.html)
+
+如何双启动 Fedora 和 Windows
+======
+
+![][2]
+
+> 这篇详细的教程一步一步地向你展示 **如何双启动 Fedora Linux 和 Windows 10**,附有适当的截图。
+
+双启动 Linux 和 Windows 是一种完全享受这两款操作系统的流行方式。你可以在同一个硬件系统上安装 Linux 和 Windows 两款系统,并在你启动你的硬件系统时选择使用哪款操作系统。
+
+![On the grub screen, you can select the operating system][1]
+
+如果你有一个已经安装 Windows 的系统,你将在这篇教程中学习如何在 Windows 的旁侧安装 Fedora 。
+
+### 在 Windows 的旁侧安装 Fedora
+
+这篇教程是在一款已经安装 Windows,采用 GPT 分区和 UEFI 启动的硬件系统的基础上执行的。它应该也适用于其它的带有 MBR 分区和传统 BIOS 的硬件系统,但是我不能确认这一点。
+
+注意:如果你的 Windows 系统使用 BitLocker 加密,在你安装 Fedora 前禁用它会是一个好主意。
+
+#### 必要条件
+
+这里是你需要遵循这篇教程的东西:
+
+ * 一个已预装 Windows 的系统
+ * 良好的互联网连接速度
+ * 一个至少 4 GB 大小的 USB 接口设备(U 盘)
+ * 可选: 用于备份你的 Windows 现有数据的外部 USB 磁盘。
+ * 可选: Windows 恢复或可启动磁盘(如果你偶遇一些严重的启动问题,你可以修复它)。
+
+让我们看看步骤。
+
+#### 步骤 1: 制作 Windows 系统的数据备份 [可选]
+
+备份总会是一个好主意。因为你将要处理磁盘分区。在一些罕见的不幸情况下,假设你出错并删除了错误的分区,你将丢失你的数据。
+
+最简单的方法是将文档、视频、音乐、图片和其它的文件夹中的数据复制到一块外部 USB 磁盘中。你可以使用一个外部的机械硬盘(传输速度较慢,但是价格较便宜)或固态硬盘(传输速度较快,但是价格较昂贵),并将重要的文件和文件夹复制到其中。
+
+#### 步骤 2: 为 Fedora 的安装准备一些可用的空间
+
+你需要创建一个分区,你将在其中安装 Fedora 。如果你只有一个 C 驱动器,缩小它的分区。如果你有 D、E 或 F 等多个驱动器,确保你可以移动这些驱动器中的数据到一些其它的分区中,删除或缩小其中的一个驱动器。超过 40 GB 的驱动器分区都能有足够的空间来安装安装 Fedora 。
+
+在 Windows 的菜单中,搜索 “磁盘分区” 并转到 “创建并格式化磁盘分区”。
+
+![][10]
+
+在磁盘管理工具中,右键单件你想要分区的驱动器,并选择 “缩小卷”。
+
+如果你只有一个像这样的分区,你需要为 Linux 腾出一些可用的空间。如果你有一些空间相当大的分区,请使用除 C 驱动器分区外的分区,因为它会擦除数据。
+
+![][11]
+
+#### 步骤 3: 在 Windows 中制作一个 Fedora 的临场 USB
+
+现在,这个步骤可以通过不同的方法来完成。你可以下载 ISO 并使用 [Etcher][12] 或 Rufus 或一些其它的工具来将 ISO 镜像写入 USB 磁盘。
+
+不过,Fedora 提供了一个用于下载 ISO 镜像和制作 临场 USB 的专用工具。我将在这篇教程中使用它。Fedora 团队在创建这个工具时付出了很多艰难的努力,因此为什么不使用它呢。
+
+但是,首先, **插入 USB 接口设备**。现在,转到 Fedora 的下载页面:
+
+- [下载 Fedora][13]
+
+你将看到针对 Windows 版本的下载 “Fedora Media Writer” 工具的选项。
+
+![][14]
+
+它将下载一个 exe 文件。在下载完成后,转到你所下载到的文件夹,并双击 `FedoraMediaWriter.exe` 文件来安装 “Fedora Media Writer” 工具。只需要重复点击 “下一步 。
+
+![][15]
+
+在安装完成后,运行 “Fedora Media Writer” 工具。但是在此之前,**确保你已经插入 USB 设备**。
+
+它将给予你安装各种 Fedora 版本的选项。针对桌面机,选择工作站版本。
+
+![][16]
+
+在接下来的屏幕中,你将会得到一个创建临场 USB 的选项。当你点击这个按钮时,它将开始下载 ISO 文件。它也将识别出你所插入的 USB 接口设备。
+
+你需要良好的互联网访问速度来在一段时间内顺畅地下载 2GB 大小的 ISO 文件。
+
+![][17]
+
+在下载 ISO 后,它会自动地对其进行检验,并给予你将 ISO 镜像写入到 USB 磁盘的选项,例如,创建临场 USB 。点击 “写入到磁盘” 按钮。
+
+![][18]
+
+它将花费几分钟来完成安装过程。它显示 “完成” 信息后,你可以关闭 “Fedora Media Writer” 工具了。
+
+![][19]
+
+很好!现在你已经准备好了 Fedora 临场 USB 。现在是时候使用它来安装带有图形用户界面的 Fedora 了。
+
+#### 步骤 4: 从 临场 USB 启动并安装 Fedora
+
+一些系统不允许你在使用安全启动的情形下从临场 USB 启动。如果你是这种情况的话,请 [禁用安全启动][20]。
+
+在处于显示硬件系统制造商徽标的屏幕期间,按下 `F2` 或 `F10` 或 `F12` 按键。如果你不确定是哪个按键,你可以逐个尝试。但是,你要 **快速地** 按下按键 ,否则它将会启动到操作系统之中。
+
+不同品牌计算机的按键是不同的。一些计算机甚至可能使用 `Esc` 或 `Del` 按键来完成此目的。
+
+![Quickly press F2, F10 or F12 keys at the screen showing your system manufacturer’s logo][21]
+
+在一些罕见的情况下,你可能需要 [在 Windows 中访问 UEFI 启动设置][22]。
+
+在 BIOS 设置中,通常,你应该会看到像这样的屏幕。在这里,你可以使用箭头按键来向下移动到 USB 选项,并按下回车键来从 USB 启动。请注意,在不同的系统中,这一屏幕可能会看起来有所不同。
+
+![][23]
+
+如果一切顺利,你应该会看到像下面的一个屏幕。选择第一个选项 “启动 Fedora 工作站”:
+
+![][24]
+
+在数秒后,你应该会启动到 Fedora 临场会话期间,并会看到尝试或安装它的选项。选择 “安装到硬盘” 。
+
+![][25]
+
+它会要求选择安装过程的语言选项。
+
+![][26]
+
+接下来的屏幕是很重要的。如果你已经在 “步骤 2” 中创建了可用的空间,你应该能够点击 “开始安装” 。如果你在“系统”下的磁盘图标上看到一个感叹号,单击它,并查看你能够在这里使用哪种磁盘配置。
+
+如果你有多个磁盘,你可以为 Fedora 选择使用哪个磁盘。
+
+![][27]
+
+选择磁盘,并点击“完成” 。现在,你应该会看到一条警告信息。在我的实例中,我没有在 “步骤 2” 中创建可用的空间,因此它会抱怨这里没有足够的可用的空间来安装 Fedora 。
+
+![][28]
+
+我点击 “回收空间” ,并缩小在这里的 Windows 分区。
+
+![][29]
+
+在这以后,将出现 “开始安装” 选项,开启安装过程。
+
+![][30]
+
+现在,它只是一个需要耐心等待的游戏了。将花费数分钟来提取文件并安装它们。
+
+![][31]
+
+当过程完成后,你将看到 “结束安装” 按钮,点击它。
+
+![][32]
+
+你将回到 Fedora 临场会话期间。单击右上角的下拉菜单并选择 “重新启动” 。
+
+![][33]
+
+现在,当系统启动时,你应该会看到带有启动到 Fedora 和 Windows 选项的 [Grub 启动器][34]。
+
+![][1]
+
+#### 步骤 5: 完成 Fedora 安装
+
+至此你几乎完成了安装。你注意到 Fedora 没有要求你输入用户名和密码了吗?很多发行版(像 Ubuntu )在安装期间会要求你创建一个管理用户。作为另一种方式,Fedora 会在你第一次登录到所安装的系统时给予你这个选项。
+
+当你第一次登录时,它会运行一次设置,并创建用户名和密码来作为这次初始化设置的一部分。
+
+![][35]
+
+![][36]
+
+![][37]
+
+在你完成后,你已经用上 Fedora Linux 了。
+
+![][38]
+
+就这样,你可以在同一个硬件系统上以双启动的模式来享受 Fedora Linux 和 Windows 。
+
+如果你在学习这篇教程时有一些问题或者你正在面对一些重大难题,请在评论系统中告诉我。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/dual-boot-fedora-windows/
+
+作者:[Abhishek Prakash][a]
+选题:[lujun9972][b]
+译者:[robsean](https://github.com/robsean)
+校对:[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/lujun9972
+[1]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/07/dual-boot-grub-screen-fedora-windows.jpg?resize=800%2C350&ssl=1
+[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/07/fedora-windows-dual-boot.jpg?resize=800%2C450&ssl=1
+[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/03/disc-management-windows.png?resize=800%2C561&ssl=1
+[11]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/04/making-free-space-for-dual-boot.jpg?resize=1226%2C728&ssl=1
+[12]: https://itsfoss.com/install-etcher-linux/
+[13]: https://getfedora.org/en/workstation/download/
+[14]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/07/download-fedora-media-writer-tool.png?resize=800%2C373&ssl=1
+[15]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/07/installing-Fedora-Media-Writer-tool-Windows.png?resize=745%2C581&ssl=1
+[16]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/07/fedora-media-writer-1.png?resize=800%2C425&ssl=1
+[17]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/07/fedora-media-writer-2.jpg?resize=800%2C422&ssl=1
+[18]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/07/writing-fedora-iso-to-usb-with-Fedora-Media-Writer-Tool.png?resize=800%2C285&ssl=1
+[19]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/07/fedoa-live-usb-with-fedora-media-writer.png?resize=800%2C300&ssl=1
+[20]: https://itsfoss.com/disable-secure-boot-windows/
+[21]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/04/acer-predator-boot.jpg?resize=800%2C600&ssl=1
+[22]: https://itsfoss.com/access-uefi-settings-windows-10/
+[23]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/06/select-boot-from-live-usb.jpg?resize=800%2C330&ssl=1
+[24]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/07/fedora-live-screen.jpg?resize=800%2C350&ssl=1
+[25]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/07/Fedora-install-screen.jpg?resize=800%2C450&ssl=1
+[26]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/07/installing-fedora-1.png?resize=800%2C450&ssl=1
+[27]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/07/installing-fedora-2.png?resize=800%2C450&ssl=1
+[28]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/07/installing-fedora-3.png?resize=800%2C450&ssl=1
+[29]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/07/installing-fedora-4.png?resize=800%2C450&ssl=1
+[30]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/07/installing-fedora-5.png?resize=800%2C450&ssl=1
+[31]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/07/installing-fedora-6.png?resize=800%2C450&ssl=1
+[32]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/07/installing-fedora-7.png?resize=800%2C450&ssl=1
+[33]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/07/restart-gnome-fedora.jpg?resize=799%2C439&ssl=1
+[34]: https://itsfoss.com/what-is-grub/
+[35]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/07/fedora-setup-1.png?resize=800%2C575&ssl=1
+[36]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/07/fedora-setup-2.png?resize=800%2C593&ssl=1
+[37]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/07/fedora-setup-3.png?resize=800%2C591&ssl=1
+[38]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/07/fedora-setup-completed.jpg?resize=800%2C500&ssl=1
diff --git a/published/202203/20210824 Solve the repository impedance mismatch in CI-CD.md b/published/202203/20210824 Solve the repository impedance mismatch in CI-CD.md
new file mode 100644
index 0000000000..63430bdbfe
--- /dev/null
+++ b/published/202203/20210824 Solve the repository impedance mismatch in CI-CD.md
@@ -0,0 +1,194 @@
+[#]: subject: "Solve the repository impedance mismatch in CI/CD"
+[#]: via: "https://opensource.com/article/21/8/impedance-mismatch-cicd"
+[#]: author: "Evan \"Hippy\" Slatis https://opensource.com/users/hippyod"
+[#]: collector: "lujun9972"
+[#]: translator: "lxbwolf"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14396-1.html"
+
+解决 CI/CD 中的仓库阻抗失配
+======
+
+> 对齐部署镜像和描述符是很困难的,但是某些策略可以使整个过程更高效。
+
+
+
+在软件架构中,当两个组件之间有某些概念性或技术上的差异时会出现 阻抗失配。这个术语其实是从电子工程中借用的,表示电路中输入和输出的电子阻抗必须要匹配。
+
+在软件开发中,存储在镜像仓库中的镜像与存储在源码控制管理系统(LCTT 译注:SCM,Source Code Management)中它的部署描述符之间存在阻抗失配。你如何确定存储在 SCM 中的部署描述符表示的是正确的镜像?两个仓库追踪数据的方式并不一致,因此将一个镜像(在镜像仓库中独立存储的不可修改的二进制)和它的部署描述符(Git 中以文本文件形式存储的一系列修改记录)相匹配并不那么直观。
+
+**注意**:本文假定读者已经熟悉以下概念:
+
+ * 源码控制管理(SCM)系统和分支
+ * Docker 或符合 OCI 标准的镜像和容器
+ * 容器编排系统(COP),如 Kubernetes
+ * 持续集成/持续交付(CI/CD)
+ * 软件开发生命周期(SDLC)环境
+
+### 阻抗失配:SCM 与镜像仓库
+
+为了更好地理解阻抗失配在什么场景下会成为问题,请考虑任意项目中的软件开发生命周期环境(SDLC),如开发、测试或发布环境。
+
+测试环境不会有阻抗失配。现在使用 CI/CD 的最佳实践中开发分支的最新提交都会对应开发环境中的最新部署。因此,一个典型的、成功的 CI/CD 开发流程如下:
+
+ 1. 向 SCM 的开发分支提交新的修改
+ 2. 新提交触发一次镜像构建
+ 3. 新生成的镜像被推送到镜像仓库,标记为开发中
+ 4. 镜像被部署到容器编排系统(COP)中的开发环境,该镜像的部署描述符也更新为从 SCM 拉取的最新描述符。
+
+换句话说,开发环境中最新的镜像永远与最新的部署描述符匹配。回滚到前一个构建的版本也不是问题,因为 SCM 也会跟着回滚。
+
+最终,随着开发流程继续推进,需要进行更多正式的测试,因此某个镜像 —— 镜像对应着 SCM 中的某次提交 —— 被推到测试环境。如果是一次成功的构建,那么不会有大问题,因为从开发环境推过来的镜像应该会与开发分支的最新提交相对应。
+
+ 1. 开发环境的最新部署被允许入库,触发入库过程
+ 2. 最新部署的镜像被标记为测试中
+ 3. 镜像在测试环境中被拉取和部署,(该镜像)对应从 SCM 拉取的最新部署描述符
+
+到目前为止,一切都没有问题,对吗?如果出现下面的场景,会有什么问题?
+
+**场景 A**:镜像被推到下游环境,如用户验收测试(UAT),或者是生产环境。
+
+**场景 B**:测试环境中发现了一个破坏性的 bug,镜像需要回滚到某个确定正常的版本。
+
+在任一场景中,开发过程并没有停止,即开发分支上游有了一次或多次新的提交,而这意味着最新的部署描述符已经发生了变化,最新的镜像与之前部署在测试环境中的镜像不一致。对部署描述符的修改可能会也可能不会对之前版本的镜像起作用,但是它们一定是不可信任的。如果它们有了变化,那么它们就一定与目前为止你测试过的想要部署的镜像的部署描述符不一致。
+
+问题的关键是:**如果部署的镜像不是镜像库中的最新版本,你怎么确定与部署的镜像相对应的是 SCM 中的哪个部署描述符?** 一言以蔽之,无法确定。两个库直接有阻抗失配。如果要详细阐述下,那么是有方法可以解决的,但是你需要做很多工作,这部分内容就是文章接下来的主题了。请注意,下面的方案并不是解决问题的唯一办法,但是已经投入到生产环境并已经对很多项目起了作用,而且已经被构建并部署到生产环境中运行了超过一年。
+
+### 二进制与部署描述符
+
+源码通常被构建成一个 Docker 镜像或符合 OCI 标准的镜像,该镜像通常被部署到一个容器编排平台(COP)上,如 Kubernetes。部署到 COP 需要部署描述符来定义镜像被如何部署以及作为容器运行,如 [Kubernetes 部署][2] 或 [CronJobs][3]。这是因为在镜像和它的部署描述符之间有本质差异,在这里可以看到阻抗失配。在这次讨论中,我们认为镜像是存储在镜像仓库中不可修改的二进制。对源码的任何修改都不会修改镜像,而是用另一个新的镜像去替换它。
+
+相比之下,部署描述符是文本文件,因而可以被认为是源码且可修改。如果遵循最佳实践,那么部署描述符是被存储在 SCM,所有修改都会提交,而这很容易回溯。
+
+### 解决阻抗失配
+
+建议的解决方案的第一部分,就是提供一个能匹配镜像仓库中的镜像与对保存部署描述符的 SCM 做的代码提交的方法。最直接的解决方案是用源提交的哈希值标记镜像。这个方法可以区分不同版本的镜像、容易分辨,并且提供足够的信息来查找正确的部署描述符,以便镜像更好地部署到 COP。
+
+再回顾下上面的场景:
+
+**场景 A** _镜像被推到下游环境_: 当镜像被从测试环境推到 UAT 环境时,我们可以从镜像的标签中知道应该从 SCM 的哪一次源码提交拉取部署描述符。
+
+**场景 B** _当一个镜像需要在某一环节中回滚_:无论我们选择回滚到那个镜像版本,我们都可以知道从 SCM 的哪一次源码提交拉取正确的部署描述符。
+
+在每一种情景中,无论在某个镜像被部署到测试环境后开发分支有多少次提交和构建,对于每一次升级的镜像,我们都可以找到它当初部署时对应的部署描述符。
+
+然而,这并不是阻抗失配的完整解决方案。再考虑两个场景:
+
+**场景 C** 在负载测试环境中,会尝试对不同的部署描述符进行多次部署,以此来验证某一次构建的表现。
+
+**场景 D** 一个镜像被推送到下游环境,在该环境中部署描述符有一个错误。
+
+在上面的所有场景中,我们都需要修改部署描述符,但是目前为止我们只有一个源码提交哈希。请记住,最佳实践要求我们所有对源码的修改都要先提交到 SCM。某次提交的哈希本身是无法修改的,因此我们需要一个比仅仅追踪原来的源码提交哈希更好地解决方案。
+
+解决方案是基于原来的源码提交哈希新建一个分支。我们把这个分支称为**部署分支**。每当一个镜像被推到下游测试或发布环境时,你应该**基于前一个 SDLC 环境的部署分支的最新提交**创建一个新的部署分支。
+
+这样同一个镜像可以重复多次部署到不同的 SDLC 环境,并在后面每个环境中可以感知前面发现的改动或对镜像做的修改。
+
+**注意:** 在某个环境中做的修改是如何影响下一个环境的,是用可以共享数据的工具(如 Helm Charts)还是手动剪切、粘贴到其他目录,都不在本文讨论的范围内。
+
+因此,当一个镜像被从一个 SDLC 环境中推到下一环境时:
+
+ 1. 创建一个部署分支
+ 1. 如果镜像是从开发环境中推过来的,那么部署分支就基于构建这个镜像的源码提交哈希创建
+ 2. 否则,_部署分支基于当前部署分支的最新提交创建_
+ 2. 镜像被部署到下一个 SDLC 环境,使用的部署描述符是该环境中新创建的部署分支的部署描述符
+
+![deployment branching tree][4]
+
+*图 1:部署分支树*
+
+ 1. 部署分支
+ 2. 下游环境的第一个部署分支,只有一次提交
+ 3. 下游环境的第二个部署分支,只有一次提交
+
+有了部署分支这个解决方案,再回顾下上面的场景 C 和场景 D:
+
+**场景 C** 修改已经部署到下游 SDLC 环境中的镜像的部署描述符
+
+**场景 D** 修复某个 SDLC 环境中部署描述符的错误
+
+两个场景中,工作流如下:
+
+ 1. 把对部署描述符做的修改提交到 SLDC 环境和镜像对应的部署分支
+ 2. 通过部署分支最新提交对应的部署描述符把镜像重新部署到 SLDC 环境
+
+这样,部署分支彻底解决了(存储着代表一次独一无二的构建的单一的、不可修改的镜像的)镜像仓库与(存储着对应一个或多个 SDLC 环境的可修改的部署描述符的)SCM 仓库之间的阻抗失配。
+
+### 实践中的思考
+
+这看起来像是行得通的解决方案,但同时它也为开发者和运维人员带来了新的实践中的问题,比如:
+
+A. 为了更好地管理部署分支,部署描述符作为资源应该保存在哪里,是否要与构建镜像的源码保存在同一个 SCM 仓库?
+
+到目前为止,我们都在避免谈论应该把部署描述符放在哪个仓库里。在还没有太多细节需要处理时,我们推荐把所有 SDLC 环境的部署描述符与镜像源码放在同一个 SCM 仓库。当部署分支创建后,镜像的源码可以作为方便找到部署的容器中运行的镜像的引用来使用。
+
+上面提到过,可以通过镜像的标签来关联镜像与原始的源码提交。在一个单独的仓库中查找某次提交的源码的引用,会给开发者带来更大的困难(即便借助工具),这就是没有必要把所有资源都分开存储的原因。
+
+B. 应该在部署分支上修改构建镜像的源码吗?
+
+简答:**不应该**。
+
+详细阐述:不应该,因为永远不要在部署分支上构建镜像,它们是在开发分支上构建的。修改部署分支上定义一个镜像的源码会破坏被部署的镜像的构建记录,而且这些修改并不会对镜像的功能生效。在对比两个部署分支的版本时这也会成为问题。这可能会导致两个版本的功能差异有错误的测试结果(这是使用部署分支的一个很小的额外好处)。
+
+C. 为什么使用镜像 标签?标记 不可以吗?
+
+通过 标签 可以在仓库中很容易地查找镜像,可读性也很好。在一组镜像中读取和查找 标记 的值需要拉取所有镜像的清单文件,而这会增加复杂度、降低性能。而且,考虑到历史记录的追踪和不同版本的查找,对不同版本的镜像添加 标签 也很有必要,因此使用源码提交哈希是保证唯一性,以及保存能即时生效的有用信息的最简单的解决方案。
+
+D. 创建部署分支的最佳实践是怎样的?
+
+DevOps 最重要的三个原则:自动化、自动化、自动化。
+
+依赖资源来持续地强迫遵循最佳实践,充其量只是碰运气,因此在实现镜像的升级、回滚等 CI/CD 流水线时,把自动化部署分支写到脚本里。
+
+E. 对部署分支的命名规范有建议吗?
+
+<**部署分支标识**>-<**环境**>-<**源码提交哈希**>
+
+ * **部署分支标识**: 所有部署分支范围内唯一的字符串;如 “deployment” 或 “deploy”
+ * **环境**: 部署分支适用的 SDLC 环境;如 “qa”(测试环境)、 “stg”(预生产环境)、 或 “prod”(生产环境)
+ * **源码提交哈希**: 源码提交哈希中包含原来构建被部署的镜像的源码,开发者可以通过它很容易地查找到创建镜像的原始提交,同时也能保证分支名唯一。
+
+例如, `deployment-qa-asdf78s` 表示推到 QA 环境的部署分支, `deployment-stg-asdf78s` 表示推到 STG 环境的部署分支。
+
+F. 你怎么识别环境中运行的哪个镜像版本?
+
+我们的建议是把最新的部署分支提交哈希和源码提交哈希添加到 [标记][5] 中。开发者和运维人员可以通过这两个独一无二的标识符查找到部署的所有东西及其来源。在诸如执行回滚或前滚操作时,使用那些不同版本的部署的选择器也能清理资源碎片。
+
+G. 什么时候应该把部署分支的修改合并回开发分支?
+
+这完全取决于开发团队。
+
+如果你修改的目的是为了做负载测试,只是想验证什么情况会让程序崩溃,那么这些修改不应该被合并回开发分支。另一方面,如果你发现和修复了一个错误,或者对下游环境的部署做了调整,那么就应该把部署分支的修改合并回开发分支。
+
+H. 有现成的部署分支示例让我们试水吗?
+
+[el-CICD][6] 已经在生产上使用这个策略持续一年半应用到超过一百个项目了,覆盖所有的 SDLC 环境,包括管理生产环境的部署。如果你可以访问 [OKD][7]、Red Hat OpenShift lab cluster 或 [Red Hat CodeReady Containers][8],你可以下载[el-CICD 的最新版本][9],参照 [教程][10] 来学习部署分支是何时以怎样的方式创建和使用的。
+
+### 结语
+
+通过实践上面的例子可以帮助你更好的理解开发过程中阻抗失配相关的问题。对齐镜像和部署描述符是成功管理部署的关键部分。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/8/impedance-mismatch-cicd
+
+作者:[Evan "Hippy" Slatis][a]
+选题:[lujun9972][b]
+译者:[lxbwolf](https://github.com/lxbwolf)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/hippyod
+[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://kubernetes.io/docs/concepts/workloads/controllers/deployment/
+[3]: https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/
+[4]: https://opensource.com/sites/default/files/picture1.png
+[5]: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
+[6]: https://github.com/elcicd
+[7]: https://www.okd.io/
+[8]: https://cloud.redhat.com/openshift/create/local
+[9]: https://github.com/elcicd/el-CICD-RELEASES
+[10]: https://github.com/elcicd/el-CICD-docs/blob/master/tutorial.md
diff --git a/published/202203/20210903 How to Completely Uninstall Google Chrome From Ubuntu.md b/published/202203/20210903 How to Completely Uninstall Google Chrome From Ubuntu.md
new file mode 100644
index 0000000000..14184ea82f
--- /dev/null
+++ b/published/202203/20210903 How to Completely Uninstall Google Chrome From Ubuntu.md
@@ -0,0 +1,97 @@
+[#]: subject: "How to Completely Uninstall Google Chrome From Ubuntu"
+[#]: via: "https://itsfoss.com/uninstall-chrome-from-ubuntu/"
+[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14368-1.html"
+
+如何从 Ubuntu 中彻底卸载 Google Chrome
+======
+
+现在,你已经成功地 [在 Ubuntu 上安装 Google Chrome][1]。毕竟,它是世界上最受欢迎的网页浏览器了。
+
+但是,你可能会不喜欢 Google 的产品,因为它们对用户的信息进行追踪和数据挖掘。你决定选择 [Ubuntu 上的其他网页浏览器][2],并且它或许是一个 [非 Chromium 核心的浏览器][3]。
+
+既然你已经不再使用 [Google Chrome][4] 了,那么,把它从 Ubuntu 系统中移除是一个明智的选择。
+
+如何才能做到这一点呢?我来告诉你具体的步骤。
+
+### 从 Ubuntu 中完全移除 Google Chrome
+
+![Illustration for removing Google Chrome from Ubuntu][5]
+
+你可能使用了图形界面的方式安装 Google Chrome,但不幸的是,你得使用命令行的方式来移除它,除非你选择 [使用 Synaptic 软件包管理器][6]。
+
+使用命令行来做这件事也不是很难。首先,按下 [键盘上的 Ctrl+Alt+T 快捷键来打开一个终端][7]。
+
+在终端中输入下面的命令:
+
+```
+sudo apt purge google-chrome-stable
+```
+
+此时它会向你索要一个密码,这个密码是你的用户账户密码,也就是你用来登录 Ubuntu 系统的密码。
+
+当你输入密码的时候,屏幕上什么也不会显示。这是 Linux 系统的正常行为。继续输入密码,完成后按下回车键。
+
+此时它会让你确认是否删除 Google Chrome,输入 `Y` 来确认,或者直接按下回车键也行。
+
+![Removing Google Chrome for Ubuntu][8]
+
+这个操作会从你的 Ubuntu Linux 系统中移除 Google Chrome,同时也会移除大多数相关的系统文件。
+
+但是,你的个人设置文件仍然保留在用户主目录中。它包含了 Cookie、会话、书签和其他与你的账户相关的 Chrome 设置信息。当你下次安装 Google Chrome 时,这些文件可以被 Chrome 再次使用。
+
+![Google Chrome leftover settings in Ubuntu][9]
+
+如果你想要彻底地移除 Google Chrome,你可能会想要把这些文件也移除掉。那么,下面是你需要做的:
+
+切换到 `.config` 目录。 **注意 config 前面有个点**`,这是 [Linux 隐藏文件和目录的方式][10]。
+
+```
+cd ~/.config
+```
+
+然后移除 `google-chrome` 目录:
+
+```
+rm -rf google-chrome
+```
+
+![Removing the leftover Google Chrome settings from Ubuntu][11]
+
+你也可以仅使用一个命令 `rm -rf ~/.config/google-chrome` 来删除它。因为本教程面向的对象是完完全全的初学者,所以我把这个命令拆分为以上两个步骤来完成,这样可以减少由于拼写问题造成的可能错误。
+
+> 小技巧
+>
+> 想要你的终端和截图里看起来一样漂亮吗?试试这些 [终端定制小技巧][12]。
+
+我希望这篇快速的入门技巧可以帮助你在 Ubuntu 上摆脱 Google Chrome。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/uninstall-chrome-from-ubuntu/
+
+作者:[Abhishek Prakash][a]
+选题:[lujun9972][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[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/lujun9972
+[1]: https://itsfoss.com/install-chrome-ubuntu/
+[2]: https://itsfoss.com/best-browsers-ubuntu-linux/
+[3]: https://itsfoss.com/open-source-browsers-linux/
+[4]: https://www.google.com/chrome/index.html
+[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/removing-google-chrome-ubuntu.png?resize=800%2C450&ssl=1
+[6]: https://itsfoss.com/synaptic-package-manager/
+[7]: https://itsfoss.com/open-terminal-ubuntu/
+[8]: https://itsfoss.com/wp-content/uploads/2021/09/remove-google-chrome-ubuntu.webp
+[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/google-chrome-ubuntu-leftover-settings.png?resize=800%2C518&ssl=1
+[10]: https://itsfoss.com/hide-folders-and-show-hidden-files-in-ubuntu-beginner-trick/
+[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/remove-google-chrome-leftover-settings-from-Ubuntu.png?resize=800%2C277&ssl=1
+[12]: https://itsfoss.com/customize-linux-terminal/
diff --git a/published/202203/20210908 How I migrated a WordPress website to a new host.md b/published/202203/20210908 How I migrated a WordPress website to a new host.md
new file mode 100644
index 0000000000..92f46cc919
--- /dev/null
+++ b/published/202203/20210908 How I migrated a WordPress website to a new host.md
@@ -0,0 +1,273 @@
+[#]: subject: "How I migrated a WordPress website to a new host"
+[#]: via: "https://opensource.com/article/21/9/migrate-wordpress"
+[#]: author: "David Both https://opensource.com/users/dboth"
+[#]: collector: "lujun9972"
+[#]: translator: "lxbwolf"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14371-1.html"
+
+如何把 WordPress 网站迁移到新主机
+======
+
+> 使用这个简单的方法来迁移一个网站以及管理防火墙配置。
+
+![(https://img.linux.net.cn/data/attachment/album/202203/19/124316krzvxcr4ff2kr2ji.jpg)]
+
+你有过把一个 WordPress 网站迁移到一台新主机上的需求吗?我曾经迁移过好多次,迁移过程相当简单。当然,的的市场时候我都不会用通用的推荐方法,这次也不例外 —— 我用更简单的方法,这才是我推荐的方法。
+
+这个迁移方法没有破坏性,因此如果出于某些原因你需要还原到原来的服务器上,很容易可以实现。
+
+### 一个 WordPress 网站的组成部分
+
+运行一个基于 [WordPress][2] 的网站有三个重要组成部分:WordPress 本身,一个 web 服务器,如 [Apache][3](我正在用),以及 [MariaDB][4]。MariaDB 是 MySQL 的一个分支,功能相似。
+
+业界有大量的 Web 服务器,由于我使用了 Apache 很长时间,因此我推荐用 Apache。你可能需要把 Apache 的配置方法改成你用的 Web 服务器的方法。
+
+### 初始配置
+
+我使用一台 Linux 主机作为防火墙和网络路由。在我的网络中 Web 服务器是另一台主机。我的内部网络使用的是 C 类私有网络地址范围,按 [无类别域间路由][5](CIDR)方式简单地记作 192.168.0.0/24。
+
+对于防火墙,相比于更复杂的 `firewalld`,我更喜欢用非常简单的 [IPTables][6]。这份防火墙配置中的一行会把 80 端口(HTTP)接收到的包发送给 Web 服务器。在 `/etc/sysconfig/iptables` 文件中,你可以在注释中看到,我添加了规则,把其他入站服务器连接转发到同一台服务器上合适的端口。
+
+```
+# Reroute ports for inbound connections to the appropriate web/email/etc server.
+# HTTPD goes to 192.168.0.75
+-A PREROUTING -d 45.20.209.41/255.255.255.248 -p tcp -m tcp --dport 80 \
+
+ -j DNAT --to-destination 192.168.0.75:80
+```
+
+我使用命名虚拟主机来配置原来的 Apache Web 服务器,因为我在这个 HTTPD 实例上运行着多个网站。使用命名虚拟主机配置是个不错的方法,因为(像我一样)未来你可能会在运行其他的网站,这个方法可以使其变得容易。
+
+`/etc/httpd/conf/httpd.conf` 中需要迁移的虚拟主机的网站相关部分请参考下面代码。这个片段中不涉及到 IP 地址的修改,因此在新服务器上使用时不需要修改。
+
+```
+
+ ServerName www.website1.org
+ ServerAlias server.org
+
+DocumentRoot "/var/website1/html"
+ ErrorLog "logs/error_log"
+ ServerAdmin me@website1.org
+
+
+ Options Indexes FollowSymLinks
+
+AllowOverride None
+ Require all granted
+
+
+
+```
+
+在迁移之前,你需要在 `httpd.conf` 的最顶端附近找到 `Listen` 声明并修改成类似下面这样。这个地址是服务器的真实私有 IP 地址,不是公开 IP 地址。
+
+```
+Listen 192.168.0.75:80
+```
+
+你需要修改新主机上 `Listen` 的 IP 地址。
+
+### 前期工作
+
+准备工作分为以下三步:
+
+ * 安装服务
+ * 配置防火墙
+ * 配置 web 服务器
+
+#### 安装 Apache 和 MariaDB
+
+如果你的新服务器上还没有 Apache 和 MariaDB,那么就安装它们。WordPress 的安装不是必要的。
+
+```
+dnf -y install httpd mariadb
+```
+
+#### 新服务器防火墙配置
+
+确认下新服务器上的防火墙允许访问 80 端口。你_每台_电脑上都有一个防火墙,对吗?大部分现代发行版使用的初始化配置包含的防火墙会阻止所有进来的网络流量,以此来提高安全等级。
+
+下面片段的第一行内容可能已经在你的 IPTables 或其他基于防火墙的网络过滤器中存在了。它标识已经被识别为来自可接受来源的入站包,并绕过后面的其它 INPUT 过滤规则,这样可以节省时间和 CPU 周期。片段中最后一行标识并放行 80 端口新进来的请求到 HTTPD 的连接。
+
+```
+-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
+<删节>
+# HTTP
+-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
+```
+
+下面的示例 `/etc/sysconfig/iptables` 文件是 IPTables 最少规则的例子,可以允许 SSH(端口 22)和 HTTPD(端口 80)连接。
+
+```
+*filter
+:INPUT ACCEPT [0:0]
+:FORWARD ACCEPT [0:0]
+:OUTPUT ACCEPT [0:0]
+-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
+-A INPUT -p icmp -j ACCEPT
+-A INPUT -i lo -j ACCEPT
+# SSHD
+-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
+# HTTP
+-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
+
+# Final disposition for unmatched packets
+-A INPUT -j REJECT --reject-with icmp-host-prohibited
+-A FORWARD -j REJECT --reject-with icmp-host-prohibited
+COMMIT
+```
+
+在新服务器主机上我需要做的就是在 `/etc/sysconfig/iptables` 文件的防火墙规则里添加上面片段的最后一行,然后重新加载修改后的规则集。
+
+```
+iptables-restore /etc/sysconfig/iptables
+```
+
+大部分基于红帽的发行版本,如 Fedora,使用的是 `firewalld`。我发现对于它的适用场景(如家用、小到中型企业)而言,它过于复杂,因此我不用它。我建议你参照 [firewalld 网页][9] 来向 `firewalld` 添加入站端口 80。
+
+你的防火墙及其配置可能跟这个有些差异,但最终的目的是允许新 Web 服务器 80 端口接收 HTTPD 连接。
+
+#### HTTPD 配置
+
+在 `/etc/httpd/conf/httpd.conf` 文件中配置 HTTPD。像下面一样在 `Listen` 片段中设置 IP 地址。我的新 Web 服务器 IP 地址是 `192.168.0.125`。
+
+```
+Listen 192.168.0.125:80
+```
+
+复制(对应要迁移的网站的) `VirtualHost` 片段,粘贴到新服务器上 `httpd.conf` 文件的末尾。
+
+### 迁移过程
+
+只有两组数据需要迁移到新服务器 —— 数据库本身和网站目录结构。把两个目录打包成 `tar` 文档。
+
+```
+cd /var ; tar -cvf /tmp/website.tar website1/
+cd /var/lib ; tar -cvf /tmp/database.tar mysql/
+```
+
+把两个 tar 文件复制到新服务器。我通常会把这类文件放到 `/tmp` 下,这个目录就是用来做这种事的。在新服务器上运行下面的命令,把 tar 文档解压到正确的目录。
+
+```
+cd /var ; tar -xvf /tmp/website.tar
+cd /var/lib ; tar -xvf /tmp/database.tar
+```
+
+WordPress 的所有文件都在 `/var/website1` 下,因此不需要在新服务器上安装它。新服务器上不需要执行 WordPress 安装过程。
+
+这个目录就是需要迁移到新服务器上的全部内容。
+
+最后一步是启动(或重启)`mysqld` 和 `httpd` 服务守护进程。WrodPress 不是一个服务,因此不使用守护进程的方式来启动。
+
+```
+systemctl start mysqld ; systemctl start httpd
+```
+
+启动之后,你应该检查下这些服务的状态。
+
+```
+systemctl status mysqld
+● mariadb.service - MariaDB 10.5 database server
+ Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
+ Active: active (running) since Sat 2021-08-21 14:03:44 EDT; 4 days ago
+ Docs: man:mariadbd(8)
+
+https://mariadb.com/kb/en/library/systemd/
+ Process: 251783 ExecStartPre=/usr/libexec/mariadb-check-socket (code=exited, status=0/SUCCESS)
+ Process: 251805 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS)
+ Process: 251856 ExecStartPost=/usr/libexec/mariadb-check-upgrade (code=exited, status=0/SUCCESS)
+ Main PID: 251841 (mariadbd)
+ Status: "Taking your SQL requests now..."
+ Tasks: 15 (limit: 19003)
+ Memory: 131.8M
+ CPU: 1min 31.793s
+ CGroup: /system.slice/mariadb.service
+└─251841 /usr/libexec/mariadbd --basedir=/usr
+
+Aug 21 14:03:43 simba.stmarks-ral.org systemd[1]: Starting MariaDB 10.5 database server...
+Aug 21 14:03:43 simba.stmarks-ral.org mariadb-prepare-db-dir[251805]: Database MariaDB is probably initialized in /var/lib/mysql already, n>
+Aug 21 14:03:43 simba.stmarks-ral.org mariadb-prepare-db-dir[251805]: If this is not the case, make sure the /var/lib/mysql is empty before>
+Aug 21 14:03:44 simba.stmarks-ral.org mariadbd[251841]: 2021-08-21 14:03:44 0 [Note] /usr/libexec/mariadbd (mysqld 10.5.11-MariaDB) startin>
+Aug 21 14:03:44 simba.stmarks-ral.org systemd[1]: Started MariaDB 10.5 database server.
+
+systemctl status httpd
+● httpd.service - The Apache HTTP Server
+ Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
+ Drop-In: /usr/lib/systemd/system/httpd.service.d
+└─php-fpm.conf
+ Active: active (running) since Sat 2021-08-21 14:08:39 EDT; 4 days ago
+ Docs: man:httpd.service(8)
+ Main PID: 252458 (httpd)
+ Status: "Total requests: 10340; Idle/Busy workers 100/0;Requests/sec: 0.0294; Bytes served/sec: 616 B/sec"
+ Tasks: 278 (limit: 19003)
+ Memory: 44.7M
+ CPU: 2min 31.603s
+ CGroup: /system.slice/httpd.service
+├─252458 /usr/sbin/httpd -DFOREGROUND
+├─252459 /usr/sbin/httpd -DFOREGROUND
+├─252460 /usr/sbin/httpd -DFOREGROUND
+├─252461 /usr/sbin/httpd -DFOREGROUND
+├─252462 /usr/sbin/httpd -DFOREGROUND
+└─252676 /usr/sbin/httpd -DFOREGROUND
+
+Aug 21 14:08:39 simba.stmarks-ral.org systemd[1]: Starting The Apache HTTP Server...
+Aug 21 14:08:39 simba.stmarks-ral.org httpd[252458]: AH00112: Warning: DocumentRoot [/var/teststmarks-ral/html] does not exist
+Aug 21 14:08:39 simba.stmarks-ral.org httpd[252458]: Server configured, listening on: port 80
+Aug 21 14:08:39 simba.stmarks-ral.org systemd[1]: Started The Apache HTTP Server.
+```
+
+### 最终的修改
+
+现在所需的服务都已经运行了,你可以把 `/etc/sysconfig/iptables` 文件中 HTTDP 的防火墙规则改成下面的样子:
+
+```
+-A PREROUTING -d 45.20.209.41/255.255.255.248 -p tcp -m tcp --dport 80 \
+ -j DNAT --to-destination 192.168.0.125:80
+```
+
+然后重新加载设置的 IPTables 规则。
+
+```
+iptables-restore /etc/sysconfig/iptables
+```
+
+由于防火墙规则是在防火墙主机上,因此不需要把外部 DNS 入口改成指向新服务器。如果你使用的是内部 DNS 服务器,那么你需要把 IP 地址改成内部 DNS 数据库里的 A 记录。如果你没有用内部 DNS 服务器,那么请确保主机 `/etc/hosts` 文件里新服务器地址设置得没有问题。
+
+### 测试和清理
+
+请确保对新配置进行测试。首先,停止旧服务器上的 `mysqld` 和 `httpd` 服务。然后通过浏览器访问网站。如果一切符合预期,那么你可以关掉旧服务器上的 `mysqld` 和 `httpd`。如果有失败,你可以把 IPTables 的路由规则改回去到旧服务器上,直到问题解决。
+
+之后我把 MySQL 和 HTTPD 从旧服务器上删除了,这样来确保它们不会意外地被启动。
+
+### 总结
+
+就是这么简单。不需要执行数据库导出和导入的过程,因为 `mysql` 目录下所有需要的东西都已经复制过去了。需要执行导出/导入过程的场景是:有网站自己的数据库之外的数据库;MariaDB 实例上还有其他网站,而你不想把这些网站复制到新服务器上。
+
+迁移旧服务器上的其他网站也很容易。其他网站依赖的所有数据库都已经随着 MariaDB 的迁移被转移到了新服务器上。你只需要把 `/var/website` 目录迁移到新服务器,添加合适的虚拟主机片段,然后重启 HTTPD。
+
+我遵循这个过程把很多个网站从一个服务器迁移到另一个服务器,每次都没有问题。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/9/migrate-wordpress
+
+作者:[David Both][a]
+选题:[lujun9972][b]
+译者:[lxbwolf](https://github.com/lxbwolf)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/dboth
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_blue_text_editor_web.png?itok=lcf-m6N7 "Text editor on a browser, in blue"
+[2]: https://wordpress.org/
+[3]: https://opensource.com/article/18/2/how-configure-apache-web-server
+[4]: https://mariadb.org/
+[5]: https://opensource.com/article/16/12/cidr-network-notation-configuration-linux
+[6]: https://en.wikipedia.org/wiki/Iptables
+[7]: http://www.website1.org
+[8]: mailto:me@website1.org
+[9]: https://firewalld.org/documentation/howto/open-a-port-or-service.html
diff --git a/published/202203/20210928 What is port forwarding.md b/published/202203/20210928 What is port forwarding.md
new file mode 100644
index 0000000000..58e6211aea
--- /dev/null
+++ b/published/202203/20210928 What is port forwarding.md
@@ -0,0 +1,99 @@
+[#]: subject: "What is port forwarding?"
+[#]: via: "https://opensource.com/article/21/9/what-port-forwarding"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14415-1.html"
+
+端口转发简介
+======
+
+> 本文介绍了几种端口转发最常见的使用场景。
+
+
+
+端口转发就是把网络流量从一个网络监听者(称为一个“端口”)发送到另一个上,无论这两个端口是否属于同一台电脑。在这里,端口不是某个物理实体,而是一个监听网络活动的软件程序。
+
+当流量被定向发往到某个特定的端口,它会先到达一个路由器或是防火墙,亦或是其他的网络程序。它最终收到的响应可能会根据它想要通讯的端口来定义。比如,当你使用端口转发时,你可以捕获到发往 8080 端口的流量,然后把它转发到 80 端口。对于接收信号的原端口来说,这个新的目标端口可能和它在同一台设备上,也可能是在另一台设备上。我们在很多情况下都会用到端口转发,实现的方式也有很多。本文将介绍其中最常见的几种使用场景。
+
+### 使用路由器来进行端口转发
+
+如果你在把服务器架设在家里,那么你通常是不需要转发端口的。你的家庭路由器(通常是你从网络服务提供商(ISP)获得的 WiFi 设备)有一个内置的防火墙,它的作用是阻止外面的世界访问到你的家庭网络。通过使用端口转发,你可以允许某个指定端口的流量穿过路由器的防火墙,并发送到局域网中的某个指定的 IP 地址。
+
+比如说,你架设了一个 [Minetest 服务][2],并想要邀请你的朋友们来试试。为了让他们能够“穿过”你的路由器,从而到达这个 Minetest 服务,你必须把路由器上的某个端口转发到托管 Minetest 服务的电脑上。Minetest 服务默认运行在 30000 端口。你可以把路由器的 30000 端口转发到你的电脑的 30000 端口上,或者你也可以随便转发到一个更简单的端口上,这样玩家们会更容易记住它。我发现,当使用 30000 端口的时候,人们时常会少数几个 0(特别是没有逗号分隔符的帮助时),所以我一般使用路由器的 1234 端口,然后把它转发到我内部的 30000 端口。
+
+每个制造商的路由器接口都不一样,但是不管你用的是什么牌子的路由器,方法都是相同的。首先,你需要登录到你的路由器。
+
+通常,路由器的 IP 地址和登录信息都会打印在路由器上,或者在是它的文档里。我有一个型号为 TP-Link GX90 的路由器,我在浏览器里访问 10.0.1.1 就可以登录它,但你的路由器可能是 192.168.0.1 或者其他的地址。
+
+我的 GX90 路由器把端口转发功能称为“虚拟服务器”,它是路由器的“NAT 转发”标签下的一个功能选项。NAT 的意思是 “网络地址转换”。在其他路由器中,这个功能可能直接就叫做“端口转发”,或者叫“防火墙”、“服务”等。找到正确的功能选项可能需要花费一些时间,因此,你可能需要花点时间研究下你的路由器文档。
+
+当你找到了路由器的端口转发设置,添加一个新规则,命名一个外部端口(在我的例子中是 1234)和一个内部端口(30000)。把外部端口转发到内部端口上,而内部端口绑定在你想要大家访问的电脑的 IP 地址上。如果你需要一些查询本机 IP 地址的帮助,你可以阅读 Archit Modi 写的 《[在 Linux 上如何查询本地 IP 地址][3]》。
+
+![A sample port forwarding rule][4]
+
+*一个简单端口转发规则*
+
+(图片提供者是 Seth Kenlon,遵循 [署名-相同方式共享 4.0 国际][5] 协议)
+
+在这个例子中,访问家庭网络的 1234 端口的流量,都会被转发到了我的家庭服务器的 30000 端口上,后者的 IP 地址是 10.0.1.2。
+
+在继续之前,先保存这个规则。
+
+接下来,你需要知道你的家庭网络的公网 IP 地址是多少。你可以从 [ifconfig.me][6] 或者 [icanhazip.com][7] 上获得这个地址。你可以在浏览器中打开这两个网站的其中一个,也可以使用 [curl][8] 命令来获取到这个 IP。
+
+```
+$ curl ifconfig.me
+93.184.216.34
+```
+
+现在,你的朋友们就可以在 Minetest 客户端里输入 `169.169.23.49:1234`,加入你的 Minetest 服务器啦。
+
+### 使用防火墙来进行端口转发
+
+系统管理员有时候需要转发访问服务器的流量。比如说,你可能想要接收来自 80 端口的流量,但是用户的服务却运行在 8065 端口。如果不进行端口转发的话,你的用户就不得不在输入浏览器的 URL 末尾,加上一个指定的端口号,例如 `example.com:8065`。大多数用户都不习惯于考虑端口的问题,所以你需要把访问网络通用的 80 端口的请求拦截下来,然后转发到你的网络应用的具体端口,这会给用户带来巨大的方便。
+
+你可以在服务器上使用 [firewall-cmd][9] 来转发流量,它是访问 `firewalld` 后台进程的前端命令。
+
+首先,设置好你想要转发的端口和协议:
+
+```
+$ sudo firewall-cmd \
+ --add-forward-port \
+ port=80:proto=tcp:toport=8065
+```
+
+为使修改永久生效,你需要加上 `--runtime-to-permanent` 选项:
+
+```
+$ sudo firewall-cmd --runtime-to-permanent
+```
+
+### 网络转发
+
+在网络传输中,除了端口转发外,还有其他种类的转发形式,例如 IP 转发和代理等。当你熟悉了网络信息在路由时是怎么被处理的之后,你可以试试不同的转发形式(然后使用 `tcpdump` 或类似的工具)来看看哪一种最好、最符合你的需求。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/9/what-port-forwarding
+
+作者:[Seth Kenlon][a]
+选题:[lujun9972][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/seth
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/connections_wires_sysadmin_cable.png?itok=d5WqHmnJ (Multi-colored and directional network computer cables)
+[2]: https://opensource.com/alternatives/minecraft#minetest
+[3]: https://opensource.com/article/18/5/how-find-ip-address-linux
+[4]: https://opensource.com/sites/default/files/uploads/router-port-forward.jpg (A sample port forwarding rule)
+[5]: https://creativecommons.org/licenses/by-sa/4.0/
+[6]: http://ifconfig.me
+[7]: http://icanhazip.com
+[8]: https://opensource.com/article/20/5/curl-cheat-sheet
+[9]: https://www.redhat.com/sysadmin/secure-linux-network-firewall-cmd
diff --git a/published/20211204 How to Install and Use Latte Dock on Ubuntu and Other Linux Distributions.md b/published/202203/20211204 How to Install and Use Latte Dock on Ubuntu and Other Linux Distributions.md
similarity index 100%
rename from published/20211204 How to Install and Use Latte Dock on Ubuntu and Other Linux Distributions.md
rename to published/202203/20211204 How to Install and Use Latte Dock on Ubuntu and Other Linux Distributions.md
diff --git a/published/20211208 Vanilla Vim is fun.md b/published/202203/20211208 Vanilla Vim is fun.md
similarity index 100%
rename from published/20211208 Vanilla Vim is fun.md
rename to published/202203/20211208 Vanilla Vim is fun.md
diff --git a/published/20220103 13 examples of how DevOps facilitated transformation in 2021.md b/published/202203/20220103 13 examples of how DevOps facilitated transformation in 2021.md
similarity index 100%
rename from published/20220103 13 examples of how DevOps facilitated transformation in 2021.md
rename to published/202203/20220103 13 examples of how DevOps facilitated transformation in 2021.md
diff --git a/published/202203/20220121 What you need to know about fuzz testing and Go.md b/published/202203/20220121 What you need to know about fuzz testing and Go.md
new file mode 100644
index 0000000000..ac4f6733f9
--- /dev/null
+++ b/published/202203/20220121 What you need to know about fuzz testing and Go.md
@@ -0,0 +1,146 @@
+[#]: subject: "What you need to know about fuzz testing and Go"
+[#]: via: "https://opensource.com/article/22/1/native-go-fuzz-testing"
+[#]: author: "Gaurav Kamathe https://opensource.com/users/gkamathe"
+[#]: collector: "lujun9972"
+[#]: translator: "lxbwolf"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14367-1.html"
+
+你需要了解的 Go 中的模糊测试
+======
+
+> Go 团队接受了新增对模糊测试的支持的提议。
+
+
+
+[Go][2] 的应用越来越广泛。现在它是云原生软件、容器软件、命令行工具和数据库等等的首选语言。Go 很早之前就已经有了内建的 [对测试的支持][3]。这使得写测试代码和运行都相当简单。
+
+### 什么是模糊测试?
+
+模糊测试(fuzzing)是指向你的软件输入非预期的数据。理想情况下,这种测试会让你的应用程序崩溃或有非预期的表现。抛开最终的结果,从程序对非预期的输入数据的处理结果中你可以得到很多信息,这样你就可以增加一些合适的错误处理。
+
+任何一个软件都有对不同来源的输入或数据的接收说明,软件会对这些数据进行处理并返回适当的结果。软件开发后,测试工程师团队对其进行测试,找出软件中的错误,给出测试报告,并(由开发者)修复。通常测试的目的是验证软件的行为是否符合预期。测试又可以细分为不同的类型,如功能测试、集成测试、性能测试等等。每种测试方法关注软件功能的某一个方面,以便发现错误或者提升可靠性或性能。
+
+模糊测试在这一测试过程上更进一步,尝试向软件程序输入一些“无效”或“随机”的数据。这种输入是故意的,期望得到的结果就是程序崩溃或输出异常,这样就可以暴露程序中的错误以便由开发者来修复它们。与其他测试类似,很少需要手动进行模糊测试,业界有大量的模糊测试工具可以将这个过程自动化。
+
+### Go 中的软件测试
+
+举个例子,假如你想测试 `add.go` 中的 `Add()` 函数,你可以在 `add_test.go` 中导入 `testing` 包并把测试体写在以 `TestXXX()` 开头的函数内。
+
+考虑如下代码:
+
+```
+func Add(num1, num2 int) int {
+}
+```
+
+在 `add_test.go` 文件中,你可能有如下测试代码:
+
+```
+import "testing"
+
+func TestAdd(t *testing.T) {
+}
+```
+
+运行测试:
+
+```
+$ go test
+```
+
+### 新增对模糊测试的支持
+
+Go 团队已经接受了 [新增对模糊测试的支持的提议][4],以进一步推动这项工作。这涉及到新增一个 `testing.F` 类型,在 `_test.go` 文件中新增 `FuzzXXX()` 函数,在 Go 工具中会新增一个 `-fuzz` 选项来执行这些测试。
+
+在 `add_test.go` 文件中:
+
+```
+func FuzzAdd(f *testing.F) {
+}
+```
+
+执行以下代码:
+
+```
+$ go test -fuzz
+```
+
+在本文编写时,这个 [功能还是试验性的][5],但是应该会在 1.18 发布版本中包含。(LCTT 译注:[Go 1.18][14] 刚刚发布,已经包含了对模糊测试的支持)目前很多功能如 `-keepfuzzing`、`-race` 等也还没有支持。Go 团队最近发布了一篇 [模糊测试教程][6],值得读一下。
+
+### 安装 gotip 来获取最新的功能
+
+如果你极度渴望在正式发布之前尝试这些功能,你可以使用 `gotip` 来测试即将正式发布的 Go 功能并反馈给他们。你可以使用下面的命令来安装 `gotip`。安装之后,你可以用 `gotip` 程序代替以前的 `go` 程序来编译和运行程序。
+
+```
+$ go install golang.org/dl/gotip@latest
+$ gotip download
+
+$ gotip version
+go version devel go1.18-f009910 Thu Jan 6 16:22:21 2022 +0000 linux/amd64
+```
+
+### 社区对于模糊测试的观点
+
+软件社区中经常会讨论模糊测试,不同的人对模糊测试有不同的看法。有些人认为这是一种有用的技术,可以找到错误,尤其是在安全方面。然而考虑到模糊测试所需要的资源(CPU、内存),有人就认为这是一种浪费,而他们更愿意用其他的测试方法。即使在 Go 团队内部,意见也不统一。我们可以看到 Go 的联合创始人 Rob Pike 对模糊测试的使用和在 Go 中的实现是持轻微的怀疑态度的。
+
+> ..._虽然模糊测试有助于发现某类错误,但是它会占用大量的 CPU 和存储资源,并且效益成本比率也不明确。我担心为了写模糊测试浪费精力,或者 git 仓库中充斥大量无用的测试数据_
+>
+> ~[Rob Pike][7]
+
+然而,Go 安全团队的另一个成员,Filo Sottile,似乎对 Go 新增支持模糊测试很乐观,举了很多例子来支持,也希望模糊测试能成为开发过程中的一部分。
+
+> _我想说模糊测试可以发现极端情况下的错误。这是我们作为安全团队对其感兴趣的原因:在极端情况下发现的错误可以避免在生产环境中成为弱点。_
+>
+> _我们希望模糊测试能成为开发的一部分 —— 不只是构建或安全方面 —— 而是整个开发过程:它能提升相关代码的质量..._
+>
+> ~[Filo Sottile][8]
+
+### 现实中的模糊测试
+
+对我而言,模糊测试在发现错误以及让系统变得更安全和更有弹性方面似乎非常有效。举个例子,Linux 内核也会使用名为 [syzkaller][9] 的工具进行模糊测试,这个工具已经发现了 [大量][10] 错误。
+
+[AFL][11] 也是比较流行的模糊测试工具,用来测试 C/C++ 写的程序。
+
+之前也有对 Go 程序进行模糊测试的观点,其中之一就是 Filo 在 GitHub 评论中提到的 [go-fuzz][12]。
+
+> _go-fuzz 的记录提供了相当惊人的证据,证明模糊处理能很好地找到人类没有发现的错误。根据我的经验,我们只需要消耗一点点 CPU 的时间就可以得到极端情况下非常高效的测试结果。_
+
+### 为什么在 Go 中新增对模糊测试的原生支持
+
+如果我们的需求是对 Go 程序进行模糊测试,之前的工具像 `go-fuzz` 就可以完成,那么为什么要在这种语言中增加原生支持呢?[Go 模糊测试设计草案][13] 中说明了这样做的一些根本原因。设计的思路是让开发过程更简单,因为前面说的工具增加了开发者的工作量,还有功能缺失。如果你没有接触过模糊测试,那么我建议你读一下设计草案文档。
+
+> 开发者可以使用诸如 `go-fuzz` 或 `fzgo`(基于 `go-fuzz`)来解决某些需求。然而,已有的每种解决方案都需要在典型的 Go 测试上做更多的事,而且还缺少关键的功能。相比于其他的 Go 测试(如基准测试和单元测试),模糊测试不应该比它们复杂,功能也不应该比它们少。已有的解决方案增加了额外的开销,比如自定义命令行工具。
+
+### 模糊测试工具
+
+在大家期望 Go 语言新增功能的列表中,模糊测试是其中很受欢迎的一项。虽然现在还是试验性的,但在将要到来的发布版本中会变得更强大。这给了我们足够的时间去尝试它以及探索它的使用场景。我们不应该把它视为一种开销,如果使用得当它会是一种发现错误非常高效的测试工具。使用 Go 的团队应该推动它的使用,开发者可以写简单的模糊测试,测试团队去慢慢扩展以此来使用它全部的能力。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/1/native-go-fuzz-testing
+
+作者:[Gaurav Kamathe][a]
+选题:[lujun9972][b]
+译者:[lxbwolf](https://github.com/lxbwolf)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/gkamathe
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/laptop_screen_desk_work_chat_text.png?itok=UXqIDRDD "Person using a laptop"
+[2]: https://go.dev/
+[3]: https://pkg.go.dev/testing
+[4]: https://github.com/golang/go/issues/44551
+[5]: https://go.dev/blog/fuzz-beta
+[6]: https://go.dev/doc/tutorial/fuzz
+[7]: https://github.com/golang/go/issues/44551#issuecomment-784584785
+[8]: https://github.com/golang/go/issues/44551#issuecomment-784655571
+[9]: https://github.com/google/syzkaller
+[10]: https://github.com/google/syzkaller/blob/master/docs/linux/found_bugs.md
+[11]: https://github.com/google/AFL
+[12]: https://github.com/dvyukov/go-fuzz
+[13]: https://go.googlesource.com/proposal/+/master/design/draft-fuzzing.md
+[14]: https://go.dev/blog/go1.18
\ No newline at end of file
diff --git a/published/202203/20220125 Creating and initializing lists in Java and Groovy.md b/published/202203/20220125 Creating and initializing lists in Java and Groovy.md
new file mode 100644
index 0000000000..3e60c8f19e
--- /dev/null
+++ b/published/202203/20220125 Creating and initializing lists in Java and Groovy.md
@@ -0,0 +1,171 @@
+[#]: subject: "Creating and initializing lists in Java and Groovy"
+[#]: via: "https://opensource.com/article/22/1/creating-lists-groovy-java"
+[#]: author: "Chris Hermansen https://opensource.com/users/clhermansen"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14411-1.html"
+
+在 Java 和 Groovy 中创建和初始化列表的不同
+======
+
+> 首先在 Java 中创建初始化一个整数列表,然后在 Groovy 中做同样的事。
+
+
+
+我非常喜欢 [Groovy 编程语言][2]。我喜欢它是因为我喜欢 Java,尽管 Java 有时候感觉很笨拙。正因为我是那么喜欢 Java,其他运行在 JVM 上语言都不能吸引我。比方说 Kotlin、Scala 还有 Clojure 语言,它们感觉上就和 Java 不一样,因为它们对于什么是好的编程语言的理解不同。Groovy 和它们都不一样,在我看来,Groovy 是一个完美的选项,特别是对于一部分程序员来说,他们喜欢 Java,但是又需要一个更灵活、更紧凑,并且有时候更直接的语言。
+
+列表 这种数据结构是一个很好的例子,它可以容纳一个无序的列表,列表中的元素可以是数字、字符串或者对象,程序员可以用某种方式高效地遍历这些元素,特别是对于编写和维护脚本的人来说,“高效”的关键就是要有简洁清晰的表达,而不需要一大堆“仪式”,把代码的意图都变模糊了。
+
+### 安装 Java 和 Groovy
+
+Groovy 是基于 Java 的,因此需要同时安装一个 Java 才行。你的 Linux 发行版的仓库中可能有最近的比较好的 Java 版本。或者,你也可以在根据 [这些指导][3] 来安装 Groovy。对于 Linux 用户来说,SDKMan 是一个不错的代替选项,你可以使用它来获取多个 Java 和 Groovy 版本,以及许多其他的相关工具。在这篇文章中,我使用的 SDK 发行版是:
+
+ * Java: OpenJDK 11 的 11.0.12-open 版本
+ * Groovy: 3.0.8 版本
+
+### 言归正传
+
+Java 中有很多方法可以实例化并初始化列表,从它最初被引入的时候就有了(我记得是在 Java 1.5 的时候,但请不要引用我的话)。在这些方法里,有两个有趣的方法,它们涉及到了 `java.util.Arrays` 和 `java.util.List` 这两个类。
+
+#### 使用 java.util.Arrays 类
+
+`java.util.Arrays` 类定义了一个 `asList()` 静态方法,它可以被用来创建一个基于数组的列表,因此大小是不可变的,尽管其中的元素是可以被修改的。下面是它的使用方式:
+
+
+```
+var a1 = Arrays.asList(1,2,3,4,5,6,7,8,9,10); // immutable list of mutable elements
+
+System.out.println("a1 = " + a1);
+System.out.println("a1 is an instance of " + a1.getClass());
+
+// output is
+// a1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+// a1 is an instance of class java.util.Arrays$ArrayList
+
+a1.set(0,0); // succeeds
+System.out.println("a1 = " + a1); // output is
+// a1 = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+
+a1.add(11); // fails producing
+// Exception in thread "main" java.lang.UnsupportedOperationException
+System.out.println("a1 = " + a1); // not reached
+```
+
+#### 使用 java.util.List 类
+
+`java.util.List` 类定义了一个 `of()` 静态方法,它可以被用来创建一个不可变的列表,其中的元素是否可变要取决于它们本身是否支持修改。下面是它的使用方式:
+
+```
+var a2 = List.of(1,2,3,4,5,6,7,8,9,10);
+
+System.out.println("a2 = " + a2);
+System.out.println("a2 is an instance of " + a2.getClass());
+
+// output is
+// a2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+// a2 is an instance of class java.util.ImmutableCollections$ListN
+
+a2.set(0,0); // fails producing
+// Exception in thread "main" java.lang.UnsupportedOperationException
+System.out.println("a2 = " + a2); // not reached
+
+a2.add(11); // also fails for same reason if above two lines commented out
+System.out.println("a2 = " + a2); // not reached
+```
+
+因此,我可以使用 `Arrays.asList()`,也可以使用 `List.of()` 方法,前提是如果我想要的是一个大小不能改变、且不关心元素是否可变的列表。
+
+如果我想要初始化一个可变的列表,我更倾向于把这些不可变的列表作为参数传给一个列表构造器,就像下面这样:
+
+
+```
+var a1 = new ArrayList(Arrays.asList(1,2,3,4,5,6,7,8,9,10));
+
+System.out.println("a1 = " + a1);
+System.out.println("a1 is an instance of " + a1.getClass());
+
+// output is
+// a1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+// a1 is an instance of class java.util.ArrayList
+
+a1.set(0,0);
+System.out.println("a1 = " + a1);
+
+//output is
+// a1 = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+
+a1.add(11);
+System.out.println("a1 = " + a1);
+
+// output is
+// a1 = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
+```
+
+注意,这个 `Arrays.asList()` 方法是用来初始化这个新的 `ArrayList()` 的,也就是说,它为这个传进来的列表创建了一个可变的拷贝。
+
+现在,或许只有我这么想,但是这种方式确实看起来需要理解很多关于 `java.util.Arrays` 和 `java.util.List` 类的细节才行,而我只是想要创建并初始化一个数字列表而已(尽管真正使用到的语句并没有太多“仪式”)。下面是真正用到的那行代码,仅供参考:
+
+```
+var a1 = new ArrayList(Arrays.asList(1,2,3,4,5,6,7,8,9,10));
+```
+
+### Groovy 是怎么做的
+
+下面来看看在 Groovy 中如何实现上述需求:
+
+```
+def a1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+
+println "a1 = $a1"
+println "a1 is an instance of ${a1.getClass()}"
+
+// output is
+// a1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+// a1 is an instance of class java.util.ArrayList
+
+a1[0] = 0
+println "a1 = $a1"
+
+// output is
+// a1 = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+
+a1 << 11
+println "a1 = $a1"
+
+// output is
+// a1 = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
+```
+
+我们一眼就能发现,Groovy 使用了 `def` 关键字而不是 `var` 关键字。我还发现了,仅仅是把一系列的类型(在这个例子里是整数)放进括号里,我就得到了一个创建好的列表。此外,这样创建出来的列表完全就是我想要的:一个可变的 `ArrayList` 实例。
+
+现在,或许再一次只有我这么想,但是上面的代码看起来要简单多得多 —— 不用记住 `.of()` 和 `.asList()` 返回的是“半不变”的结果,也不用为它们做一些补偿。另外一个好处是,我现在可以使用括号和下标来引用列表中的某个特定元素,而不用这个叫 `set()` 方法。另外,这个跟在列表后面的 `<<` 操作符也很方便,我再也不用调用 `add()` 方法来添加元素啦。还有,你注意到代码中没有分号了吗?没错,在 Groovy 里,句末的分号并不是必须的。最后,我们来看看字符串插值,只要在字符串里用 `$变量` 或者 `${表达式}` 就可以实现了哦!
+
+在 Groovy 世界中还藏着许多“有待发掘”的东西。上面的列表定义其实是一个动态类型(Groovy 中默认)和 Java 中的静态类型的对比。在上面的 Groovy 代码定义的那一行,变量 `a1` 的类型是在运行的时候,根据等号右边的表达式的计算结果推断出来的。现在我们都知道,动态语言可以给我们带来强大的功能,有了强大的功能,我们有了很多机会去尝试不同的东西。对于那些不喜欢动态类型的程序员来说,Groovy 也支持静态类型。
+
+### Groovy 相关资源
+
+Apache Groovy 网站上有非常多的文档。另一个很棒的 Groovy 资源是 [Mr. Haki][7]。学习 Groovy 还有一个很棒的原因,那就是可以接着学习 [Grails][8],后者是一个优秀的、高效率的全栈 Web 框架,基于许多优秀组件构建而成,比如有 Hibernate、Spring Boot 和 Micronaut 等。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/1/creating-lists-groovy-java
+
+作者:[Chris Hermansen][a]
+选题:[lujun9972][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/clhermansen
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/code_development_programming.png?itok=M_QDcgz5 (Developing code.)
+[2]: http://www.groovy-lang.org/
+[3]: http://www.groovy-lang.org/install.html
+[4]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+arrays
+[5]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system
+[6]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+list
+[7]: https://www.mrhaki.com/
+[8]: https://grails.org/
diff --git a/published/20220218 Add, switch, delete, and manage Linux users in KDE.md b/published/202203/20220218 Add, switch, delete, and manage Linux users in KDE.md
similarity index 100%
rename from published/20220218 Add, switch, delete, and manage Linux users in KDE.md
rename to published/202203/20220218 Add, switch, delete, and manage Linux users in KDE.md
diff --git a/published/202203/20220221 6 Reasons to Try Nitrux OS.md b/published/202203/20220221 6 Reasons to Try Nitrux OS.md
new file mode 100644
index 0000000000..d113e1dc73
--- /dev/null
+++ b/published/202203/20220221 6 Reasons to Try Nitrux OS.md
@@ -0,0 +1,151 @@
+[#]: subject: "6 Reasons to Try Nitrux OS"
+[#]: via: "https://news.itsfoss.com/reasons-to-try-nitrux-os/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "aREversez"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14359-1.html"
+
+尝试 Nitrux 系统的六大理由
+======
+
+> Nitrux OS 是一个基于 Debian 的有趣的 Linux 发行版。还没有试过吗?我认为你应该试试。
+
+
+
+Nitrux 系统也许算不上 Linux 的主流发行版本之一,但它绝对是一款极其独特的产品。
+
+2019 年,我们 [采访了 Nitrux 的创始人 Uri Herrera][1],了解到 Herrera 等人开发这款系统的初衷:超越传统的 Linux 发行版。
+
+自那之后,过了许久,我们终于迎来了 [Nitrux 2.0 版本][2]。
+
+不要忘了,Nitrux 在去年 [放弃基于 Ubuntu,而选择了 Debian][3]。
+
+考虑到自 Nitrux 发行以来的数年间,也发生了许多变化,你应该尝试一下这款系统。
+
+这里,我要分享一些体验 [Nitrux 系统][4] 的理由:
+
+### 1、Nitrux 不再基于 Ubuntu
+
+![][5]
+
+人们一般都会推荐基于 Ubuntu 的 Linux 发行版本,来满足日常所需。
+
+当然,在我们 [为新手推荐的 Linux 系统][6] 中,也主要是许多基于 Ubuntu 的版本,但是请不要误会。
+
+我们之所以推荐基于 Ubuntu 的发行版本,唯一的理由在于它们简单易用,支持大量的商业软件。
+
+所以,如果你不是刚开始使用 Linux 系统,同时也想尝试既能让你耳目一新,又不至于使你感到陌生,而且十分稳定的发行版,基于 Debian 的 Nirtux 是一个不错的选择。
+
+你完全不需要在短期内迅速了解这款系统,就可以得心应手地使用终端来完成各项工作。
+
+感兴趣的话,可以参考我们的文章 [Debian vs Ubuntu][7],了解更多。
+
+### 2、专注 AppImage
+
+![][5a]
+
+[AppImage][8] 是一个通用的打包系统,这种软件包不需要任何依赖。你不需要在 Linux 上安装任何软件包管理器或者依赖包,就可以直接运行 AppImage 应用。
+
+AppImage 旨在打造便携、高效的软件包系统,省去安装的步骤,与 Windows 系统的便携版软件非常相似。
+
+Nitrux 操作系统专注 AppImage 应用软件,为你带来流畅的用户体验。
+
+NX 软件中心是一个 GUI 程序,用户可以通过使用 Mauikit(该软件中心的 UI 框架),安装、管理 AppImage 应用程序。
+
+### 3、基于 KDE 桌面环境的发行版
+
+![][5b]
+
+Nitrux 操作系统是 [搭载 KDE 桌面环境中最好的 Linux 发行版][9] 之一。 如果你不喜欢 GNOME 或者其他开箱即用的桌面环境(DE),KDE 会是一个不错的选择。
+
+也许你还不知道, 相较于其他桌面环境,[KDE 可以在很多方面进行定制][10]。
+
+因此,在 KDE 桌面环境下,你可以毫不费力地打造自己的个性化桌面。
+
+### 4、独特的用户体验
+
+![][11]
+
+Nitrux 的用户体验结合了最好的 KDE 桌面环境与 Qt 技术,并对这些进行了调整,为你带来全新的用户体验。
+
+虽然在使用 Nitrux 操作系统时,你不会觉得十分陌生,但是还是会感到有些许的不同。
+
+即使你没有对 Nitrux 系统做任何自定义的设置,开箱即用的体验也足以让它成为 [最优雅的发行版][12] 之一。
+
+### 5、Maui Shell
+
+![][11a]
+
+[Maui Shell][13] 是 Nitrux 用户体验的亮点之一。近来,Maui Shell 得到了进一步的完善,将这些呈现在了桌面端和移动端的融合界面上。
+
+尽管 Maui Shell 目前还不成熟,但是外观看起来十分大气简约,就像 [System76 将要推出基于 Rust 的桌面环境][14] 一样令人兴奋。
+
+这也是我们推荐尝试 Nitrux 操作系统最重要的原因之一。时间会证明,Nitrux 系统是否将会开启桌面体验的全新时代。
+
+### 6、Xanmod 内核
+
+![][5c]
+
+[Xanmod 内核][15] 是一个定制的主线 Linux 内核版本,对性能进行了适当的调整,附加了一些其他功能。有了它,你的桌面体验一定能得到大幅提升。
+
+自 2.0 版本起,Nitrux 操作系统选用 Xanmod 作为默认内核,为用户提供“升级版”的桌面体验。
+
+当然你也可以选择其他 Linux 内核,比如 Liquorix 和 Libre,各擅胜场。
+
+如果你不喜欢 Xanmod,也可以选择长期支持版的主线内核。在 Nitrux 操作系统上,你完全可以无缝切换使用不同的内核。
+
+- [Nitrux OS][4]
+
+### 总结
+
+诚然,从主流发行版转到像 Nitrux 这样的操作系统,需要考虑各种风险。
+
+但是,**我建议你好好考虑一番:**
+
+Nitrux 这样的发行版热衷于按照他们的愿景来改进事情。
+
+尽管背后没有强大的企业和财力支撑,他们依然可以开发出这款令人惊艳的发行版、开发出 [Maui 项目][16],以及别开生面的 Maui shell。
+
+所以,我认为,我们也应该以己所能,尽己之力,支持这些优秀的发行版。
+
+不过话说回来,每一款 Linux 发行版都会或多或少地存在一些问题。当你试用一款新的发行版时,你需要给它点儿时间,在最终将它作为日常使用的操作系统之前,慢慢地去适应它。
+
+换言之,我推荐你在业余时间试用 Nitrux 操作系统,或者直接装个虚拟机来一探究竟。
+
+我很关注大家对这篇文章的看法,请在下方评论留言。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/reasons-to-try-nitrux-os/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][b]
+译者:[aREversez](https://github.com/aREversez)
+校对:[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/lujun9972
+[1]: https://itsfoss.com/nitrux-linux/
+[2]: https://news.itsfoss.com/nitrux-2-0-release/
+[3]: https://news.itsfoss.com/nitrux-linux-debian/
+[4]: https://nxos.org/
+[5]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/02/not-ubuntu-illustration.png?w=1000&ssl=1
+[6]: https://itsfoss.com/best-linux-beginners/
+[7]: https://linux.cn/article-13746-1.html
+[5a]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/02/appimage-illustration.png?w=1000&ssl=1
+[8]: https://itsfoss.com/use-appimage-linux/
+[5b]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/02/kde-illustration.png?w=1000&ssl=1
+[9]: https://itsfoss.com/best-kde-distributions/
+[10]: https://itsfoss.com/kde-customization/
+[11]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/01/nitrux-2-visual.png?resize=1568%2C882&ssl=1
+[12]: https://itsfoss.com/beautiful-linux-distributions/
+[11a]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/maui-shell.png?w=1200&ssl=1
+[13]: https://news.itsfoss.com/maui-shell-unveiled/
+[14]: https://news.itsfoss.com/system76-cosmic-panel/
+[5c]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/02/xanmod-kernel-illustration.png?w=1000&ssl=1
+[15]: https://xanmod.org/
+[16]: https://mauikit.org
diff --git a/published/20220223 Listen to your favorite music on Linux with Juk.md b/published/202203/20220223 Listen to your favorite music on Linux with Juk.md
similarity index 100%
rename from published/20220223 Listen to your favorite music on Linux with Juk.md
rename to published/202203/20220223 Listen to your favorite music on Linux with Juk.md
diff --git a/published/20220224 KDE vs GNOME- What-s the Ultimate Linux Desktop Choice.md b/published/202203/20220224 KDE vs GNOME- What-s the Ultimate Linux Desktop Choice.md
similarity index 100%
rename from published/20220224 KDE vs GNOME- What-s the Ultimate Linux Desktop Choice.md
rename to published/202203/20220224 KDE vs GNOME- What-s the Ultimate Linux Desktop Choice.md
diff --git a/published/202203/20220224 Scan documents and old photos on Linux with Skanlite.md b/published/202203/20220224 Scan documents and old photos on Linux with Skanlite.md
new file mode 100644
index 0000000000..dd95691c8e
--- /dev/null
+++ b/published/202203/20220224 Scan documents and old photos on Linux with Skanlite.md
@@ -0,0 +1,90 @@
+[#]: subject: "Scan documents and old photos on Linux with Skanlite"
+[#]: via: "https://opensource.com/article/22/2/scan-documents-skanlite-linux-kde"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14402-1.html"
+
+用 Skanlite 在 Linux 上扫描文件和老照片
+======
+
+> 使用这个 Linux KDE 应用,将你的档案数字化。
+
+
+
+虽然现在的世界已经大部分实现了数字化,但仍有一些时候,你还是需要打印一份表格,签字,然后把它扫描回来。有时候,我发现在手机上拍个快照就够了,但有些行业需要比草率的快照更好的复印件,因此平板扫描仪是必要的。KDE 项目提供了一个叫做 Skanlite 的应用程序,它可以帮助你导入在平板上扫描的文件,甚至是用联机相机扫描的文件。
+
+### 在 Linux 上安装 Skanlite
+
+你可以从你的软件库中安装 Skanlite。在 Fedora、Mageia 和类似的地方:
+
+```
+$ sudo dnf install skanlite
+```
+
+在 Elementary、Linux Mint 和其他基于 Debian 的发行版上:
+
+```
+$ sudo apt install skanlite
+```
+
+### 扫描仪驱动
+
+市场上的大多数扫描仪都与 SANE 扫描仪 API 兼容。SANE 并不是一个真正的驱动,而是一个协议,可以接收来自图像采集设备的输入,并为希望围绕它建立一个应用的程序员提供选项。Skanlite 就是这样一个应用。
+
+我还没有遇到过不与 SANE 接口兼容的扫描仪,但可能也有不与 SANE 接口兼容的扫描仪。在这些情况下,请在制造商的网站上寻找 SANE 或 TWAIN 的驱动,或者寻找它们专有的驱动和扫描仪接口。后者可能无法使用 Skanlite,但当你不确定你的扫描仪是否通过标准协议进行通信时,Skanlite 总是值得试试。我甚至遇到过打印机和扫描仪的二合一设备,尽管打印机需要一个额外的驱动,但扫描仪却能立即被识别。
+
+### 使用 Skanlite
+
+当你启动 Skanlite 时,它首先会在你的系统中搜索图像采集设备。在笔记本电脑上,Skanlite 通常会发现网络摄像头是一个有效的输入源(因为它是),但它也会找到连接到你机器上的平板扫描仪。选择你要使用的扫描仪,然后继续。
+
+要看扫描的内容,点击应用程序右下角的“预览”按钮。
+
+![Skanlite with custom artwork][2]
+
+这将在右面板上显示一个预览图像。没有任何东西被保存到你的硬盘上,这只是显示你的扫描仪上目前有什么。
+
+### 选择一个扫描区域
+
+如果你只需要扫描仪上的一部分内容,你可以选择一个你想保存的区域。要选择一个单一的区域,在你想保存的区域上点击并拖动你的鼠标。当有一个有效的选择时,当你点击“扫描”按钮时,只有你选择的那部分会被保存。
+
+你可以有一个以上的选区,当你需要扫描几个小图像或只扫描一个大文件的特定部分时,这特别有效。要添加一个选区,请点击出现在选区中心的 “+” 图标。
+
+![Adding selections][3]
+
+你可以通过点击 “-” 图标来删除选区,当你有多个活动选区时,该图标会出现。
+
+### 扫描设置
+
+图像采集设置位于左边的面板上。这些控件允许你导入彩色或灰度的图像,并对图像的亮度和对比度进行调整。这些选项是基于软件的,不影响你的扫描仪的行为方式,但它们是常见的调整,在这里做这些调整可以使你不必在 GIM 或 Gwenview 中对图像进行后期处理。
+
+在许多情况下,你的扫描仪可能有可配置的设置,可在 Skanlite 窗口左侧的“扫描仪特定选项”标签中找到。有些扫描仪允许你调整色温、亮度、饱和度和其他出现在固件中的属性。可用的选项根据设备和供应商的不同而不同,所以你有可能在这个面板上看到变化,这取决于你与哪种设备的对接。
+
+### 扫描和保存
+
+当你准备好导入图像(或图像的选定区域,如果你已经做了选择)时,点击 Skanlite 窗口右下角的“扫描”按钮。根据你的设备,它可能需要一些时间来创建扫描,但当它完成后,会提示你保存或丢弃图像。如果你喜欢你所看到的,点击“保存”。
+
+图像会被保存到你所配置的任何默认位置。要查看默认位置,点击窗口右下角的“设置”按钮。在 “Skanlite 设置”中,你可以设置默认保存位置、默认名称格式和图像分辨率。你还可以控制每次扫描后是否提示你保存或丢弃图像,或者你是否想要保存所有的东西并在以后进行分类。
+
+### Linux 上的扫描很容易
+
+在 Linux 上扫描文件是如此简单,我很少考虑这个问题。通常不需要你去寻找和安装特殊的驱动或应用,因为像 Skanlite 这样的应用使用开放协议,使这个过程变得简单。下次你有一份需要数字化的拷贝时,用 Skanlite 导入它。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/2/scan-documents-skanlite-linux-kde
+
+作者:[Seth Kenlon][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://opensource.com/users/seth
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/documents_papers_file_storage_work.png?itok=YlXpAqAJ (Filing papers and documents)
+[2]: https://opensource.com/sites/default/files/skanlite.png (Skanlite with custom artwork)
+[3]: https://opensource.com/sites/default/files/skanlite-selection.jpg (Adding selections)
diff --git a/published/20220225 How to screen share with the Linux KDE Plasma Desktop.md b/published/202203/20220225 How to screen share with the Linux KDE Plasma Desktop.md
similarity index 100%
rename from published/20220225 How to screen share with the Linux KDE Plasma Desktop.md
rename to published/202203/20220225 How to screen share with the Linux KDE Plasma Desktop.md
diff --git a/published/20220227 12 Simple Tools to Protect Your Privacy.md b/published/202203/20220227 12 Simple Tools to Protect Your Privacy.md
similarity index 100%
rename from published/20220227 12 Simple Tools to Protect Your Privacy.md
rename to published/202203/20220227 12 Simple Tools to Protect Your Privacy.md
diff --git a/published/20220227 Math is fun with this Linux graphing calculator.md b/published/202203/20220227 Math is fun with this Linux graphing calculator.md
similarity index 100%
rename from published/20220227 Math is fun with this Linux graphing calculator.md
rename to published/202203/20220227 Math is fun with this Linux graphing calculator.md
diff --git a/published/20220228 A visual map of a Kubernetes deployment.md b/published/202203/20220228 A visual map of a Kubernetes deployment.md
similarity index 100%
rename from published/20220228 A visual map of a Kubernetes deployment.md
rename to published/202203/20220228 A visual map of a Kubernetes deployment.md
diff --git a/published/20220228 Fedora 36 Release Date and New Features.md b/published/202203/20220228 Fedora 36 Release Date and New Features.md
similarity index 100%
rename from published/20220228 Fedora 36 Release Date and New Features.md
rename to published/202203/20220228 Fedora 36 Release Date and New Features.md
diff --git a/published/20220228 Put sticky notes on your Linux KDE desktop.md b/published/202203/20220228 Put sticky notes on your Linux KDE desktop.md
similarity index 100%
rename from published/20220228 Put sticky notes on your Linux KDE desktop.md
rename to published/202203/20220228 Put sticky notes on your Linux KDE desktop.md
diff --git a/published/20220301 4 Vim features to use to improve productivity.md b/published/202203/20220301 4 Vim features to use to improve productivity.md
similarity index 100%
rename from published/20220301 4 Vim features to use to improve productivity.md
rename to published/202203/20220301 4 Vim features to use to improve productivity.md
diff --git a/published/202203/20220301 Experience the Stunning Cutefish Desktop in Arch Linux.md b/published/202203/20220301 Experience the Stunning Cutefish Desktop in Arch Linux.md
new file mode 100644
index 0000000000..d7f1ffa9a4
--- /dev/null
+++ b/published/202203/20220301 Experience the Stunning Cutefish Desktop in Arch Linux.md
@@ -0,0 +1,129 @@
+[#]: subject: "Experience the Stunning Cutefish Desktop in Arch Linux"
+[#]: via: "https://www.debugpoint.com/2022/02/cutefish-arch-linux-install/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14385-1.html"
+
+在 Arch Linux 中体验令人惊叹的 Cutefish 桌面
+======
+
+
+
+> 现在你可以在 Arch Linux 中体验 Cutefish 桌面了。本文概述了在 Arch Linux 系统中安装 Cutefish 桌面环境的步骤。
+
+### Cutefish 桌面
+
+前一阵子,[我们点评了 CutefishOS][2],它带有看起来非常棒的 Cutefish 桌面,得到了我们的读者的积极反应和关注。因此,我们认为这是一个完美的时机,是时候在你最喜欢的 Arch Linux 中体验一下这个桌面了。
+
+在你进入安装部分之前,这里有一些关于 Cutefish 桌面的小知识。
+
+Cutefish 桌面是 [CutefishOS][3] 的一部分,这是一个正在开发的新 Linux 发行版。这个基于 Debian 的 Linux 发行版具有令人难以置信的外观、轻量级的 Cutefish 桌面。
+
+Cutefish 桌面其内部是以 Qt Quick、QML、C++ 和 KDE 框架为基础编写的。这个现代的桌面环境使用 KWin 和 SDDM 进行窗口和显示管理。
+
+Cutefish 桌面为你带来了所寻求的一个完全 macOS 风格的、开箱即用的 Linux 桌面。也就是说,你可以获得令人惊叹的图标、壁纸、全局菜单、带有漂亮通知弹出窗口的顶部栏和底部停靠区。
+
+你可在 [这里] 阅读详细的点评。
+
+### 在 Arch Linux 中安装 Cutefish 桌面
+
+#### 安装基础 Arch 系统
+
+本指南假设在尝试这些步骤之前,你的系统中已经安装好了基本的 Arch Linux。或者,如果你也安装了任何基于 Arch 的 Linux 发行版,你也可以尝试。只是在这些情况下要注意显示管理的问题。
+
+如果你是 Arch 的新手,你可以参考我们的 Arch Linux 安装指南。
+
+ * [如何使用 archinstall 安装 Arch Linux(推荐)][4]
+ * [如何安装 Arch Linux(基本指南)][5]
+
+#### 安装 Cutefish 桌面
+
+Arch Linux 社区仓库包含了 Cutefish 组,其中有该桌面运行所需的所有组件。它包括核心软件包、原生应用和下面提到的附加工具。
+
+在你的 Arch Linux 系统的终端提示符下,运行下面的命令来安装所有 Cutefish 桌面软件包。
+
+```
+pacman -S cutefish
+```
+
+![A base Arch Linux prompt][6]
+
+![Install Cutefish in Arch Linux][7]
+
+接下来,我们需要通过下面的命令安装 Xorg 和显示管理器 SDDM。如果你将 Cutefish 桌面安装在安装有其他诸如 GNOME、KDE Plasma 或 Xfce 等桌面环境的 Arch Linux 中,那么请注意,因为你已经安装了一个显示管理器和 Xorg。所以,你可以轻松跳过这一步。
+
+```
+pacman -S xorg sddm
+```
+
+上述命令完成后,通过 systemctl 启用显示管理器。
+
+```
+systemctl enable sddm
+```
+
+这就是裸机安装 Cutefish 桌面的全部内容。完成后,重启系统,登录后你应该看到 Cutefish 桌面如下。
+
+![Cutefish Desktop in Arch Linux][1]
+
+基础安装需要额外的定制,因为它不像 Cutefish OS 那样接近。
+
+### 安装后的配置
+
+尽管 Arch 仓库中的 Cutefish 组包含了它的原生应用,如计算器和文件管理器,但该桌面缺乏基本的应用,你需要单独安装这些应用来使它成为一个功能齐全的高效桌面。
+
+我建议使用下面的命令来安装以下基本的应用。你可以跳过这一步,或者选择任何其他的应用/组合。
+
+ * Firefox 网页浏览器
+ * Kwrite 文本编辑器
+ * ttf-freefont 字体
+ * VLC 媒体播放器
+ * Gwenview 图像查看器
+ * GIMP 图像编辑器
+ * LibreOffice
+ * Transmission
+
+```
+pacman -S firefox ttf-freefont kwrite vlc gwenview gimp libreoffice-still transmission-qt
+```
+
+安装后,打开设置,改变你选择的字体。默认字体是 courier,它在桌面上看起来很糟糕。
+
+按照你的选择完成所有的定制后,重启系统。然后享受 Arch Linux 中的 Cutefish 桌面。
+
+![The Stunning Login Lock Screen of Cutefish Desktop][9]
+
+### 结束语
+
+这个桌面正在开发中,所以在写这篇文章时,你会发现设置项目不多。例如,没有办法改变分辨率、隐藏停靠区等等。不过,你仍然可以安装额外的应用来使用。如果你想做体验一番,可以去试试。
+
+加油。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/02/cutefish-arch-linux-install/
+
+作者:[Arindam][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://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lujun9972
+[1]: https://www.debugpoint.com/wp-content/uploads/2022/02/Cutefish-Desktop-in-Arch-Linux-1024x575.jpg
+[2]: https://www.debugpoint.com/2021/11/cutefish-os-review-2021/
+[3]: https://en.cutefishos.com/
+[4]: https://www.debugpoint.com/2022/01/archinstall-guide/
+[5]: https://www.debugpoint.com/2020/11/install-arch-linux/
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/02/A-base-Arch-Linux-prompt.jpg
+[7]: https://www.debugpoint.com/wp-content/uploads/2022/02/Install-Cutefish-in-Arch-Linux.jpg
+[9]: https://www.debugpoint.com/wp-content/uploads/2022/02/The-Stunning-Login-Lock-Screen-of-Cutefish-Desktop-1024x576.jpg
+[10]: https://t.me/debugpoint
+[11]: https://twitter.com/DebugPoint
+[12]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[13]: https://facebook.com/DebugPoint
diff --git a/published/20220302 How to use httpx, a web client for Python.md b/published/202203/20220302 How to use httpx, a web client for Python.md
similarity index 100%
rename from published/20220302 How to use httpx, a web client for Python.md
rename to published/202203/20220302 How to use httpx, a web client for Python.md
diff --git a/published/202203/20220303 9 resources to help you contribute to open source in 2022.md b/published/202203/20220303 9 resources to help you contribute to open source in 2022.md
new file mode 100644
index 0000000000..1fa15112e5
--- /dev/null
+++ b/published/202203/20220303 9 resources to help you contribute to open source in 2022.md
@@ -0,0 +1,71 @@
+[#]: subject: "9 resources to help you contribute to open source in 2022"
+[#]: via: "https://opensource.com/article/22/3/contribute-open-source-2022"
+[#]: author: "Opensource.com https://opensource.com/users/admin"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14372-1.html"
+
+2021 总结:如何为开源做出贡献
+======
+
+> 你准备好推进你的开源之旅了吗?这里有一些如何给开源做贡献的提示和教程。
+
+
+
+在 2022 年,开源正变得越来越家喻户晓。但多年来,开源一直被称为企业 IT 领域中潦倒的弱势群体。开源已经以某种形式或方式存在了 [几十年][2],但甚至直到 20 世纪 90 年代末,它才正式有了自己的 [名字][3]。你可能一直都在使用开源技术,但却不知道。事实上,你目前正在阅读的网站(LCTT 译注:指 opensource.com )就是在开源的内容管理系统 [Drupal][4] 上运行的。你的汽车、笔记本电脑、智能手表和电子游戏很可能是 [由 Linux][5] 这个开源操作系统支持的。
+
+红帽公司的年度《[企业开源状况][6]》在最近发布了,其中包含了大量的见解,对任何在开源技术领域发展的人都有帮助。首先,77% 的 IT 领导对企业开源的看法比一年前更积极,82% 的 IT 领导更可能选择对开源社区有贡献的供应商。这意味着,参与开源比以往任何时候都更重要。现在是推进你的开源之旅的时候了,无论你在哪里。这里有一些资源可以帮助你踏上这条路。
+
+### 为什么要为开源做贡献?
+
+ * 《[是什么激励了开源软件的贡献者?][7]》新的研究发现人们贡献的原因自 21 世纪初以来已经改变。
+ * 《[现在为开源做贡献的 3 个理由][8]》现在,比以往任何时候都更加是为开源做贡献的理想时机。
+ * 《[为开源做贡献时的 7 个成功策略][9]》一位作者在为开源项目做贡献的经验帮助她在技术领域找到了她梦想的工作。
+
+### 为开源做出你的第一次贡献
+
+ * 《[8 种非编码的方式为开源做贡献][10]》无论你是程序员新手,还是经验丰富的老手,或者根本不是工程师,在编码之外还有很多方式为开源项目做贡献。
+ * 《[为 Slack 的开源替代方案做贡献的 6 种方式][11]》加入成千上万为 Mattermost 这个开源消息平台贡献代码、翻译、文档等的人。
+ * 《[任何人都可以为开放实践图书馆做出贡献的 7 种方式][12]》为开放实践图书馆做出贡献是参与全球从业者社区的一种有趣方式,这些从业者都愿意分享他们的知识并改进他们自己的工作方式。
+ * 《[如果你有一份全职工作,如何为 Kubernetes 做贡献][13]》你可以在业余时间从事最大的开源项目之一的内部工作。
+
+### 鼓励他人为开源做贡献
+
+ * 《[为什么你的开源项目需要的不仅仅是程序员][14]》仅仅是开发人员并不能创造出满足各种需求的长保质期的开源项目,是时候欢迎更多的角色和人才了。
+ * 《[开源贡献者加入的 10 个技巧][15]》让新的贡献者感到自己在社区中受到欢迎,对项目的未来至关重要,因此,在加入时投入时间和注意力是很重要的。
+
+### 分享你对开源贡献的建议
+
+当涉及到参与开源社区时,有无限的可能性。在这里,我们的目标是庆祝社区的不同观点和背景,其中包括你。你的独特故事激励着全球各地的人们参与到开源中来。来吧,[把你的文章想法发给我们][16]!
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/3/contribute-open-source-2022
+
+作者:[Opensource.com][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://opensource.com/users/admin
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/wfh_work_home_laptop_work.png?itok=VFwToeMy (Working from home at a laptop)
+[2]: https://www.redhat.com/en/topics/open-source/what-is-open-source#the-history-of-open-source?intcmp=7013a000002qLH8AAM
+[3]: https://opensource.com/article/18/2/coining-term-open-source-software
+[4]: https://opensource.com/tags/drupal
+[5]: https://opensource.com/article/19/8/everyday-tech-runs-linux
+[6]: https://www.redhat.com/en/enterprise-open-source-report/2022?intcmp=7013a000002qLH8AAM
+[7]: https://opensource.com/article/21/4/motivates-open-source-contributors
+[8]: https://opensource.com/article/20/6/why-contribute-open-source
+[9]: https://opensource.com/article/22/1/open-source-contributions-career
+[10]: https://opensource.com/life/16/1/8-ways-contribute-open-source-without-writing-code
+[11]: https://opensource.com/article/20/7/mattermost
+[12]: https://opensource.com/article/21/10/open-practice-library
+[13]: https://opensource.com/article/19/11/how-contribute-kubernetes
+[14]: https://opensource.com/article/20/9/open-source-role-diversity
+[15]: https://opensource.com/article/19/12/open-source-contributors
+[16]: https://linux.cn/article-14335-1.html
\ No newline at end of file
diff --git a/published/202203/20220304 Epic Games Store Now Works on Steam Deck.md b/published/202203/20220304 Epic Games Store Now Works on Steam Deck.md
new file mode 100644
index 0000000000..104368caf6
--- /dev/null
+++ b/published/202203/20220304 Epic Games Store Now Works on Steam Deck.md
@@ -0,0 +1,93 @@
+[#]: subject: "Epic Games Store Now Works on Steam Deck"
+[#]: via: "https://news.itsfoss.com/epic-games-steam-deck/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "zd200572"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14374-1.html"
+
+Epic 游戏商店现在可在 Steam Deck 上使用啦
+======
+
+> 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。
+
+
+
+Steam Deck 在加强对 Linux 平台的游戏支持方面做出了有力推动。
+
+它运行在 **Steam OS 3.0**(基于 Arch)上,并具有 KDE Plasma 桌面环境。感谢 Valve,它没有锁定平台并让用户在上面进行试验。
+
+尽管不是每个人都可以拿到它,但这是一款令人兴奋的硬件,可以挑战任天堂 Switch 掌机。
+
+它可能还不支持所有的流行游戏(比如《命运 2》、《堡垒之夜》),但它在几个 3A 级大作和独立游戏上取得了不错的进展。你可以到官方的 [Deck 认证][1] 页面查看有关支持游戏的最新信息。
+
+现在,更令人激动的是,事实证明 Steam Deck 也可以使用 [Epic 游戏商店][2](**非官方的**)来运行游戏。但是,怎样运行呢,让我们来一探究竟。
+
+### 通过 Heroic 游戏启动器使用 Epic 游戏商店
+
+是的,这就是 [去年][4] 制作的 [Heroic 游戏启动器][3], 并且已知它可以运行在 Linux 桌面上。
+
+另外,(据 [GamingOnLinux][5])感谢 Liam Dawe,他和各位开发者协调,成功地在 Steam Deck 上测试运行了 Heroic 游戏启动器(及 [Heroic Bash 启动器][6])。
+
+[![][7]](https://youtu.be/89Dw3I6NJX4)
+
+补充一句,**Heroic Bash 启动器** 是一个为所有已安装的 Heroic 游戏创建启动脚本(.sh 文件)的工具,它允许你直接从终端或者游戏前端/启动器启动游戏,而不必打开 Heroic。
+
+故事的发生是这样的(根据我与 Heroic Bash 启动器开发者的简短交谈):
+
+最初,在 Steam Deck 上实验运行 Epic 游戏商店时,Steam 控制器无法工作,因为 Epic 游戏商店是使用 Steam 客户端以一个“非 Steam 游戏”运行的。
+
+所以,Heroic Bash 启动器的开发者,[Rishabh Moharir][8](也是这里的一位作者)建议使用他的工具,按照他 [GitHub 上的维基指南][9] 来试试。
+
+Heroic Bash 启动器可以在 Linux 桌面上与 Epic 游戏商店配合使用。所以,这值得一试!
+
+然后,幸运地,它工作了。
+
+### 在 Steam Deck 上安装 Epic 游戏商店
+
+首先,你需要在 Steam Deck 上使用可用的 AppImage 文件在**桌面模式**下安装 **Heroic 游戏启动器**。
+
+完成后,你需要登录并下载你选择的游戏。
+
+接下来,你需要下载最新的 [legendary][10] 二进制文件,并在启动器设置中将其设置为替代的 legendary 二进制文件。
+
+你需要在启动器的游戏设置中配置并设置兼容层为 Proton 7.0。
+
+这时,你需要下载最新的 [Heroic Bash 启动器二进制文件][11],然后运行它。
+
+最后,你必须根据这个 [GitHub 上的官方维基指南][9],把游戏添加到 Steam 中(以便在 Steam Deck 的界面中找到它)。
+
+总之,“手工爱好者”们肯定需要花好大一会儿才能使其工作。另外,如果你仍然困惑,你可以在 [维基][12] 上找到包含详细信息的同样的一套步骤和细节,这是 Heroic 游戏启动器团队整理的(或者参考上面的视频)。
+
+对我来说,这听起来可行,应该不会超越大多数 Steam Deck 用户的能力。不幸的是,我无法在印度买到 Steam Deck(目前)。
+
+至于 Steam Deck 上的 Epic 游戏商店的未来,我们只能抱以最好的期望。
+
+你试过 Steam Deck 吗?在下面的评论区让我知道你的看法。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/epic-games-steam-deck/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][b]
+译者:[zd200572](https://github.com/zd200572)
+校对:[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/lujun9972
+[1]: https://www.steamdeck.com/en/verified
+[2]: https://www.epicgames.com/store/en-US/
+[3]: https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher
+[4]: https://news.itsfoss.com/heroic-games-launcher/
+[5]: https://www.gamingonlinux.com/2022/03/heroic-games-launcher-now-works-nicely-on-steam-deck/
+[6]: https://github.com/redromnon/HeroicBashLauncher
+[7]: https://i0.wp.com/i.ytimg.com/vi/UvuGAQDagWE/hqdefault.jpg?w=780&ssl=1
+[8]: https://news.itsfoss.com/author/rishabh/
+[9]: https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher/wiki/Adding-Games-to-Steam-on-Linux
+[10]: https://github.com/derrod/legendary/releases/
+[11]: https://github.com/redromnon/HeroicBashLauncher/releases/
+[12]: https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher/wiki/SteamDeck---Running-Epic-Games
diff --git a/published/202203/20220305 Creating and initializing maps in Groovy vs Java.md b/published/202203/20220305 Creating and initializing maps in Groovy vs Java.md
new file mode 100644
index 0000000000..98d41471e2
--- /dev/null
+++ b/published/202203/20220305 Creating and initializing maps in Groovy vs Java.md
@@ -0,0 +1,244 @@
+[#]: subject: "Creating and initializing maps in Groovy vs Java"
+[#]: via: "https://opensource.com/article/22/3/maps-groovy-vs-java"
+[#]: author: "Chris Hermansen https://opensource.com/users/clhermansen"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14378-1.html"
+
+在 Groovy 和 Java 中创建并初始化映射的不同
+======
+
+> Java 和 Groovy 中的映射都是非常通用的,它允许关键字和值为任意类型,只要继承了 `Object` 类即可。
+
+
+
+我最近在探索 Java 与 Groovy 在 [创建并初始化列表][2] 和 [在运行时构建列表][3] 方面的一些差异。我观察到,就实现这些功能而言,Groovy 的简洁和 Java 的繁复形成了鲜明对比。
+
+在这篇文章中,我将实现在 Java 和 Groovy 中创建并初始化映射。映射为开发支持根据 关键字 检索的结构提供了可能,如果找到了这样一个关键字,它就会返回对应的 值。今天,很多编程语言都实现了映射,其中包括 Java 和 Groovy,也包括了 Python(它将映射称为 字典)、Perl、awk 以及许多其他语言。另一个经常被用来描述映射的术语是 关联数组,你可以在 [这篇维基百科文章][4] 中了解更多。Java 和 Groovy 中的映射都是非常通用的,它允许关键字和值为任意类型,只要继承了 `Object` 类即可。
+
+### 安装 Java 和 Groovy
+
+Groovy 基于 Java,因此你需要先安装 Java。你的 Linux 发行版的仓库中可能有最近的比较好的 Java 和 Groovy 版本。或者,你也可以在根据上面链接中的指示来安装 Groovy。对于 Linux 用户来说,[SDKMan][5] 是一个不错的代替选项,你可以使用它来获取多个 Java 和 Groovy 版本,以及许多其他的相关工具。在这篇文章中,我使用的 SDK 发行版是:
+
+ * Java: version 11.0.12-open of OpenJDK 11;
+ * Groovy: version 3.0.8.
+
+### 言归正传
+
+Java 提供了非常多的方式来实例化和初始化映射,并且从 Java 9 之后,添加了一些新的方式。其中最明显的方式就是使用 `java.util.Map.of()` 这个静态方法,下面介绍如何使用它:
+
+```
+var m1 = Map.of(
+ "AF", "Afghanistan",
+ "AX", "Åland Islands",
+ "AL", "Albania",
+ "DZ", "Algeria",
+ "AS", "American Samoa",
+ "AD", "Andorra",
+ "AO", "Angola",
+ "AI", "Anguilla",
+ "AQ", "Antarctica");
+
+System.out.println("m1 = " + m1);
+System.out.println("m1 is an instance of " + m1.getClass());
+```
+
+事实证明,在此种情况下,`Map.of()` 有两个重要的限制。其一,这样创建出来的映射实例是不可变的。其二,你最多只能提供 20 个参数,用来表示 10 个键值对。
+
+你可以尝试着添加第 10 对和第 11 对,比方说 "AG", "Antigua and Barbuda" 和 "AR", "Argentina",然后观察会发生什么。你将发现 Java 编译器尝试寻找一个支持 11 个键值对的 `Map.of()` 方法而遭遇失败。
+
+快速查看 [java.util.Map 类的文档][8],你就会找到上述第二个限制的原因,以及解决这个难题的一种方式:
+
+```
+var m2 = Map.ofEntries(
+ Map.entry("AF", "Afghanistan"),
+ Map.entry("AX", "Åland Islands"),
+ Map.entry("AL", "Albania"),
+ Map.entry("DZ", "Algeria"),
+ Map.entry("AS", "American Samoa"),
+ Map.entry("AD", "Andorra"),
+ Map.entry("AO", "Angola"),
+ Map.entry("AI", "Anguilla"),
+ Map.entry("AQ", "Antarctica"),
+ Map.entry("AG", "Antigua and Barbuda"),
+ Map.entry("AR", "Argentina"),
+ Map.entry("AM", "Armenia"),
+ Map.entry("AW", "Aruba"),
+ Map.entry("AU", "Australia"),
+ Map.entry("AT", "Austria"),
+ Map.entry("AZ", "Azerbaijan"),
+ Map.entry("BS", "Bahamas"),
+ Map.entry("BH", "Bahrain"),
+ Map.entry("BD", "Bangladesh"),
+ Map.entry("BB", "Barbados")
+);
+
+System.out.println("m2 = " + m2);
+System.out.println("m2 is an instance of " + m2.getClass());
+```
+
+这就是一个比较好的解决方式,前提是我不在随后的代码里改变使用 `Map.ofEntries()` 创建并初始化的映射内容。注意,我在上面使用了 `Map.ofEntries()` 来代替 `Map.of()`。
+
+然而,假设我想要创建并初始化一个非空的映射,随后往这个映射中添加数据,我需要这样做:
+
+```
+var m3 = new HashMap(Map.ofEntries(
+ Map.entry("AF", "Afghanistan"),
+ Map.entry("AX", "Åland Islands"),
+ Map.entry("AL", "Albania"),
+ Map.entry("DZ", "Algeria"),
+ Map.entry("AS", "American Samoa"),
+ Map.entry("AD", "Andorra"),
+ Map.entry("AO", "Angola"),
+ Map.entry("AI", "Anguilla"),
+ Map.entry("AQ", "Antarctica"),
+ Map.entry("AG", "Antigua and Barbuda"),
+ Map.entry("AR", "Argentina"),
+ Map.entry("AM", "Armenia"),
+ Map.entry("AW", "Aruba"),
+ Map.entry("AU", "Australia"),
+ Map.entry("AT", "Austria"),
+ Map.entry("AZ", "Azerbaijan"),
+ Map.entry("BS", "Bahamas"),
+ Map.entry("BH", "Bahrain"),
+ Map.entry("BD", "Bangladesh"),
+ Map.entry("BB", "Barbados")
+));
+
+System.out.println("m3 = " + m3);
+System.out.println("m3 is an instance of " + m3.getClass());
+
+m3.put("BY", "Belarus");
+System.out.println("BY: " + m3.get("BY"));
+
+```
+
+这里,我把使用 `Map.ofEntries()` 创建出来的不可变映射作为 `HashMap` 的一个构造参数,以此创建了该映射的一个可变副本,之后我就可以修改它 —— 比如使用 `put()` 方法。
+
+让我们来看看上述过程如何用 Groovy 来实现:
+
+```
+def m1 = [
+ "AF": "Afghanistan",
+ "AX": "Åland Islands",
+ "AL": "Albania",
+ "DZ": "Algeria",
+ "AS": "American Samoa",
+ "AD": "Andorra",
+ "AO": "Angola",
+ "AI": "Anguilla",
+ "AQ": "Antarctica",
+ "AG": "Antigua and Barbuda",
+ "AR": "Argentina",
+ "AM": "Armenia",
+ "AW": "Aruba",
+ "AU": "Australia",
+ "AT": "Austria",
+ "AZ": "Azerbaijan",
+ "BS": "Bahamas",
+ "BH": "Bahrain",
+ "BD": "Bangladesh",
+ "BB": "Barbados"]
+
+println "m1 = $m1"
+println "m1 is an instance of ${m1.getClass()}"
+
+m1["BY"] = "Belarus"
+println "m1 = $m1"
+```
+
+只看一眼,你就会发现 Groovy 使用了 `def` 关键字而不是 `var` —— 尽管在最近模型的 Groovy(version 3+)中,使用 `var` 关键字也是可行的。
+
+你还会发现,你是通过在括号里添加了一个键值对列表来创建一个映射的。不仅如此,这样创建的列表对象还非常有用,这里有几个原因。其一,它是可变的;其二,它是一个 `LinkedHashMap` 的实例,内部维持了数据的插入顺序。所以,当你运行 Java 版本的代码并打印出变量 `m3`,你会看到:
+
+```
+m3 = {BB=Barbados, BD=Bangladesh, AD=Andorra, AF=Afghanistan, AG=Antigua and Barbuda, BH=Bahrain, AI=Anguilla, AL=Albania, AM=Armenia, AO=Angola, AQ=Antarctica, BS=Bahamas, AR=Argentina, AS=American Samoa, AT=Austria, AU=Australia, DZ=Algeria, AW=Aruba, AX=Åland Islands, AZ=Azerbaijan}
+```
+
+而当你运行 Groovy 版本的代码,你会看到:
+
+```
+m1 = [AF:Afghanistan, AX:Åland Islands, AL:Albania, DZ:Algeria, AS:American Samoa, AD:Andorra, AO:Angola, AI:Anguilla, AQ:Antarctica, AG:Antigua and Barbuda, AR:Argentina, AM:Armenia, AW:Aruba, AU:Australia, AT:Austria, AZ:Azerbaijan, BS:Bahamas, BH:Bahrain, BD:Bangladesh, BB:Barbados]
+```
+
+再一次,你将看到 Groovy 是如何简化事情的。这样的语法非常直观,有点像 Python 里的字典,并且,即使你有一个超过 10 个键值对的初始列表,你也不需要去记住各种必要的别扭方式。注意我们使用的表达式:
+
+```
+m1[“BY”] = “Belarus”
+```
+
+而在 Java 中,你需要这样做:
+
+```
+m1.put(“BY”, “Belarus”)
+```
+
+还有,这个映射默认是可变的,这么做的利弊很难评判,还是得取决于你的需求是什么。我个人觉得,Java 在这种情况下的 “默认不可变” 机制,最让我困扰的地方是,它没有一个类似于 `Map.mutableOfMutableEntries()` 的方法。这迫使一些刚学会如何声明和初始化一个映射的程序员,不得不转念去思考该如何把他们手中不可变的映射,转换为可变的。同时我也想问,创建一个不可变的对象然后再舍弃它,这样真的好吗?
+
+另一个值得考虑的事情是,Groovy 使用方括号代替 Java 中的 `put()` 和 `get()` 方法来进行关键字查找。因此你可以这样写:
+
+```
+m1[“ZZ”] = m1[“BY”]
+```
+
+而不需要这样写:
+
+```
+m1.put(“ZZ”,m1.get(“BY”))
+```
+
+有时候,就像使用某个类的实例变量一样来使用映射中的关键字和值是一个好办法。设想你现在有一堆想要设置的属性,在 Groovy 中,它们看起来就像下面这样:
+
+```
+def properties = [
+ verbose: true,
+ debug: false,
+ logging: false]
+```
+
+然后,你可以改变其中的某个属性,就像下面这样:
+
+```
+properties.verbose = false
+```
+
+之所以这样能工作,是因为,只要关键字符合特定的规则,你就可以省略引号,然后直接用点操作符来代替方括号。尽管这个功能非常有用,也非常好用,它也同时也意味着,如果你要把一个变量作为一个映射的关键字来使用,你就必须把这个变量包裹在圆括号里,就像下面这样:
+
+```
+def myMap = [(k1): v1, (k2): v2]
+```
+
+是时候告诉勤奋的读者 Groovy 是一门为编写脚本而量身定制的语言了。映射通常是脚本中的关键元素,它为脚本提供了查找表,并且通常起到了作为内存数据库的作用。我在这里使用的例子是 ISO 3166 规定的两个字母的国家代码和国家名称。对在世界上各个国家的互联网使用者来说,这些代码是很熟悉的。此外,假设我们要编写一个从日志文件中查找互联网主机名,并借此来了解用户的地理位置分布的脚本工具,那么这些代码会是十分有用的部分。
+
+### Groovy 相关资源
+
+[Apache Groovy 网站][10] 上有非常多的文档。另一个很棒的 Groovy 资源是 [Mr. Haki][11]。[Baeldung 网站][12] 提供了大量 Java 和 Groovy 的有用教程。学习 Groovy 还有一个很棒的原因,那就是可以接着学习 [Grails][13],后者是一个优秀的、高效率的全栈 Web 框架。它基于许多优秀组件构建而成,比如有 Hibernate、Spring Boot 和 Micronaut 等。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/3/maps-groovy-vs-java
+
+作者:[Chris Hermansen][a]
+选题:[lujun9972][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/clhermansen
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/lenovo-thinkpad-laptop-concentration-focus-windows-office.png?itok=-8E2ihcF (Woman using laptop concentrating)
+[2]: https://opensource.com/article/22/1/creating-lists-groovy-java
+[3]: https://opensource.com/article/22/2/accumulating-lists-groovy-vs-java
+[4]: https://en.wikipedia.org/wiki/Associative_array
+[5]: https://sdkman.io/
+[6]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+map
+[7]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system
+[8]: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Map.html
+[9]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string
+[10]: https://groovy-lang.org/
+[11]: https://blog.mrhaki.com/
+[12]: https://www.baeldung.com/
+[13]: https://grails.org/
diff --git a/published/20220305 I Tested The New Maui Shell On My Linux Phone. Here-s What I Found.md b/published/202203/20220305 I Tested The New Maui Shell On My Linux Phone. Here-s What I Found.md
similarity index 100%
rename from published/20220305 I Tested The New Maui Shell On My Linux Phone. Here-s What I Found.md
rename to published/202203/20220305 I Tested The New Maui Shell On My Linux Phone. Here-s What I Found.md
diff --git a/published/20220305 Vim vs Nano- What Should You Choose.md b/published/202203/20220305 Vim vs Nano- What Should You Choose.md
similarity index 100%
rename from published/20220305 Vim vs Nano- What Should You Choose.md
rename to published/202203/20220305 Vim vs Nano- What Should You Choose.md
diff --git a/published/20220307 Budgie 10.6 is Here as its First Release Under the New Organization.md b/published/202203/20220307 Budgie 10.6 is Here as its First Release Under the New Organization.md
similarity index 100%
rename from published/20220307 Budgie 10.6 is Here as its First Release Under the New Organization.md
rename to published/202203/20220307 Budgie 10.6 is Here as its First Release Under the New Organization.md
diff --git a/published/202203/20220307 Using FileZilla for Connecting to SFTP Server Via GUI.md b/published/202203/20220307 Using FileZilla for Connecting to SFTP Server Via GUI.md
new file mode 100644
index 0000000000..9159514c01
--- /dev/null
+++ b/published/202203/20220307 Using FileZilla for Connecting to SFTP Server Via GUI.md
@@ -0,0 +1,160 @@
+[#]: subject: "Using FileZilla for Connecting to SFTP Server Via GUI"
+[#]: via: "https://itsfoss.com/filezilla-ubuntu/"
+[#]: author: "Pratham Patel https://itsfoss.com/author/pratham/"
+[#]: collector: "lujun9972"
+[#]: translator: "hwlife"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14410-1.html"
+
+使用 FileZilla 以图形界面连接 SFTP 服务器
+======
+
+
+
+如果你问那些极客系统管理员,他们会肯定的说使用 [rsync 或者 scp 命令在远程服务器和本地系统之间传输文件][1]。
+
+然而,这些都是命令行方式,并不是每个人都能用起来感到舒适。
+
+谢天谢地的是,有一些图形化工具能够让你从远程服务器来传输文件。
+
+[FileZilla][2] 是一个流行的、跨平台的传输文件为目的开源软件。它支持使用通过 TLS 或者 SSL 加密的 FTP 协议(FTPS),也支持借助 SSH 的 FTP 协议,以及旧的 FTP 协议。
+
+让我展示怎样在 Linux 上安装 FileZilla 然后用它来文件传输。
+
+那么,让我们开始吧!
+
+### 在 Ubuntu 和其他 Linux 发行版上安装 FileZilla
+
+你可以使用源码来安装,但是还是建议使用你的发行版提供的软件包。因为它是一个热门软件,它应该在许多 Linux 发行版(即便不是全部)的软件仓库中可用。请使用你的发行版的软件中心和包管理器来安装。
+
+在 Ubuntu 上,你可以从软件中心来安装它:
+
+![FileZilla is available in the Ubuntu Software Center][3]
+
+你也可以使用命令行的方式来安装它:
+
+```
+sudo apt install filezilla
+```
+
+如果你看到 [软件包不存在的错误][4],你应该 [开启 Universe 仓库][5]。
+
+一旦安装成功,打开菜单(通过按 `Super` 键),键入 “FileZilla”来启动它。
+
+![Start FileZilla from the system menu][6]
+
+### 使用 FileZilla
+
+第一次使用 FileZilla 时,你将会看到如下图所示的一个界面:
+
+![Screenshot of FileZilla running][7]
+
+左边窗口显示来自你本地系统的文件和目录。右边窗口显示目前是空的。当你连接到远程服务器时,来自你的远程系统的文件会显示在这里。
+
+在我向你展示之前,让我分享一下关于理解 FileZilla 图形界面重要方面的一些细节。
+
+#### 了解 FileZilla 图形界面
+
+下图总体上给你展示了 FileZilla 窗口布局的不同部分。
+
+![FileZilla Window Layout | image credit][8]
+
+图形界面由 6 个不同的区域/窗口来组成。让我简短的给你解释一下:
+
+**1、工具栏**:它有许多选项,如打开站点管理器、刷新本地和远程目录文件和文件列表、开始处理当前的文件传输队列、停止正在传输的任务并取消队列中的文件,等等。
+
+**2、快速连接栏**:顾名思义,它允许你快速连接到一个远程站点,除了主机名、用户名、密码和端口之外,不需要指定更多细节。
+
+**3、消息日志**:它显示了一个日志,不论你连接成功与否。错误消息标记为红色,正常消息为白色,命令是蓝色。
+
+**4 & 5、本地窗口和远程窗口**:这两个窗口非常相似,除了本地窗口显示本地目录内容,并且有用来上传文件的上下文菜单;而远程窗口显示的是远程目录的内容,并有从远程目录下载到本地文件的选项。
+
+**6、传输队列**:最后,传输队列窗口显示正在传输的项目的状态和它们的传输速度,以及队列中的文件和传输历史(仅限当前实例)。
+
+#### 使用 FileZilla 连接到 SFTP 服务器
+
+你需要知道远程服务器的用户名、密码和 IP 地址。远程服务器也应该被设置成能够接受以这些信息进行的连接。你还需要在目标文件夹有正确的权限设置。
+
+要新增一个 SFTP 连接,你需要打开站点管理器。有两种方式可以打开它。
+
+在菜单栏上的“文件”菜单选项下有一个“站点管理器”。或者,你可以直接点击工具栏上的“站点管理器”图标。
+
+![the Site Manager button on the toolbar][9]
+
+一旦站点管理器对话框弹出,点击“新站点”按钮,并(可选地)重命名添加到条目中的新站点。我叫我的站点为“test8”。
+
+![screenshot of the Site Manager][10]
+
+在右侧的“常规”标签下,确保所使用的协议与服务器管理员为你设置的相一致。在我的例子中,我设置了一个 SFTP 服务器(借助 SSH 通道的 FTP),因此我选择了“SFTP - SSH 文件传输协议”。
+
+下一个字段填写远程服务器的 IP 地址。
+
+如果你没有设置“端口号”,FileZilla 将假定要使用的端口号为缺省的 SSH 协议的 22 端口。
+
+“登录类型”下拉列表有几个选项。在“常规”登录方式下,你只需要提供用户名和密码。
+
+如果你设置了一对公钥和私钥来验证你的 SSH 用户连接,那么可以使用“密钥文件授权”方式。
+
+一旦你为远程服务器和认证填写了所有适当的细节,就可以点击底部的“连接”按钮连接到站点。别担心,你刚刚建立连接的新站点将会按“登录类型”保存起来。
+
+![Remote pane being populated after a successful connection][11]
+
+如果你看到一个 “连接到 <主机 IP 地址>” 的状态消息,并且最近的状态消息是 “目录列表 "/" 显示成功”,说明你已经成功的连接到了远程的 SFTP 服务器(使用 SSH 协议的 FTP)。
+
+另一个 SFTP 连接成功的标志是,当连接成功建立的时候,远程目录窗口有了很多消息。
+
+#### 发送文件到远程系统
+
+你必须 **确保你位于要传输文件的目录里**。传输文件非常简单,只需**双击文件**,无需指定指定目标位置。
+
+如果你在左边窗口双击了一个文件,它立即传输到右边科技的目录里(或者有传输任务的话,加到队列中)。
+
+同样,从右边窗口到左边窗口也是一样双击,即从远程服务器到本地。**这就是为什么本地和远程系统都要在正确的位置是非常重要的原因**。
+
+此外,你也可以鼠标右击文件上传它们(或者加它们到上传队列)。目标位置总是 FileZilla 界面中显示的目录。
+
+![Transfer queue pane showing the local file name, remote destination, transfer speed and an ETA][12]
+
+除了方便和快捷方面,这两种上传的文件方式没有什么不同。
+
+#### 下载远程系统中的文件
+
+像上传文件一样,当从远程服务器传输文件到本地时也有两种方式,但不是“上传”而是“下载”。
+
+下载的文件将放在本地目录窗口中,也就是你当前打开的本地窗口。
+
+你将会注意到除了发送方和接收方不同之外,下载和上传文件的行为是一样的。除非连接数受到限制,否则文件传输将是并行进行的。
+
+### 总结
+
+厉害!有了这些基础知识,你应该能够在你的计算机和服务器之间传输文件。我希望你能够学到一些新东西 : )
+
+如果你感到这些对你有帮助,随意在评论部分留下你的问题、建议或简单的一句 “thank you”。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/filezilla-ubuntu/
+
+作者:[Pratham Patel][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlife)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://itsfoss.com/author/pratham/
+[b]: https://github.com/lujun9972
+[1]: https://linuxhandbook.com/transfer-files-ssh/
+[2]: https://filezilla-project.org/
+[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/filezilla-ubuntu-software-center.png?resize=751%2C382&ssl=1
+[4]: https://itsfoss.com/unable-to-locate-package-error-ubuntu/
+[5]: https://itsfoss.com/ubuntu-repositories/
+[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/filezilla-ubuntu.png?resize=763%2C224&ssl=1
+[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/01/01_filezilla.webp?resize=800%2C431&ssl=1
+[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/01/02_filezilla_layout.webp?resize=800%2C504&ssl=1
+[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/01/03_site_manager_annotated.webp?resize=386%2C170&ssl=1
+[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/01/04_site_manager.webp?resize=800%2C577&ssl=1
+[11]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/01/05_successful_connection.webp?resize=800%2C431&ssl=1
+[12]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/01/07_transfer_pane_populated-1.webp?resize=800%2C431&ssl=1
+[13]: https://itsfoss.community/
diff --git a/published/20220308 Coolero- Open-Source App to Monitor and Control Cooling Devices.md b/published/202203/20220308 Coolero- Open-Source App to Monitor and Control Cooling Devices.md
similarity index 100%
rename from published/20220308 Coolero- Open-Source App to Monitor and Control Cooling Devices.md
rename to published/202203/20220308 Coolero- Open-Source App to Monitor and Control Cooling Devices.md
diff --git a/published/20220309 Changing Linux System Language (Locales) From Command Line on Ubuntu and Debian Based Distros.md b/published/202203/20220309 Changing Linux System Language (Locales) From Command Line on Ubuntu and Debian Based Distros.md
similarity index 100%
rename from published/20220309 Changing Linux System Language (Locales) From Command Line on Ubuntu and Debian Based Distros.md
rename to published/202203/20220309 Changing Linux System Language (Locales) From Command Line on Ubuntu and Debian Based Distros.md
diff --git a/published/20220309 Good News- Apex Legends Now Officially Works on Steam Deck and Linux.md b/published/202203/20220309 Good News- Apex Legends Now Officially Works on Steam Deck and Linux.md
similarity index 100%
rename from published/20220309 Good News- Apex Legends Now Officially Works on Steam Deck and Linux.md
rename to published/202203/20220309 Good News- Apex Legends Now Officially Works on Steam Deck and Linux.md
diff --git a/published/20220309 Nitrux 2.0 Review- Stunning Distro with a Few Rough Edges.md b/published/202203/20220309 Nitrux 2.0 Review- Stunning Distro with a Few Rough Edges.md
similarity index 100%
rename from published/20220309 Nitrux 2.0 Review- Stunning Distro with a Few Rough Edges.md
rename to published/202203/20220309 Nitrux 2.0 Review- Stunning Distro with a Few Rough Edges.md
diff --git a/published/202203/20220309 Using Homebrew Package Manager on Fedora Linux.md b/published/202203/20220309 Using Homebrew Package Manager on Fedora Linux.md
new file mode 100644
index 0000000000..a68efd7737
--- /dev/null
+++ b/published/202203/20220309 Using Homebrew Package Manager on Fedora Linux.md
@@ -0,0 +1,147 @@
+[#]: subject: "Using Homebrew Package Manager on Fedora Linux"
+[#]: via: "https://fedoramagazine.org/using-homebrew-package-manager-on-fedora-linux/"
+[#]: author: "Mehdi Haghgoo https://fedoramagazine.org/author/powergame/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14380-1.html"
+
+在 Fedora Linux 上使用 Homebrew 包管理器
+======
+
+
+
+### 简介
+
+Homebrew 是一个 macOS 的包管理器,用于在 macOS 上安装 UNIX 工具。但是,它也可以在 Linux(和 Windows WSL)上使用。它是用 Ruby 编写的,并提供主机系统(macOS 或 Linux)可能不提供的软件包,因此它在操作系统包管理器之外提供了一个辅助的包管理器。此外,它只以非 root 用户身份在前缀 `/home/linuxbrew/.linuxbrew` 或 `~/.linuxbrew` 下安装软件包,不会污染系统路径。这个包管理器在 Fedora Linux 上也适用。在这篇文章中,我将尝试告诉你 Homebrew 与 Fedora Linux 包管理器 `dnf` 有什么不同,为什么你可能想在 Fedora Linux 上安装和使用它,以及如何安装。
+
+> 免责声明
+>
+> 你应该经常检查你在系统上安装的软件包和二进制文件。Homebrew 包通常以非 sudoer 用户运行,并工作在专门的前缀的路径下,因此它们不太可能造成破坏或错误配置。然而,所有的安装操作都要自己承担风险。作者和 Fedora 社区不对任何可能直接或间接因遵循这篇文章而造成的损失负责。
+
+### Homebrew 如何工作
+
+Homebrew 在底层使用 Ruby 和 Git。它使用特殊的 Ruby 脚本从源代码构建软件,这些脚本被称为 “配方”,看起来像这样(使用 `wget` 包作为例子):
+
+(LCTT 译注:Homebrew 本身意思是“家酿”,在这个软件中,有各种类似于酿酒的比喻。)
+
+```
+class Wget < Formula
+ homepage "https://www.gnu.org/software/wget/"
+ url "https://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz"
+ sha256 "52126be8cf1bddd7536886e74c053ad7d0ed2aa89b4b630f76785bac21695fcd"
+
+ def install
+ system "./configure", "--prefix=#{prefix}"
+ system "make", "install"
+ end
+end
+```
+
+### Homebrew 与 dnf 有何不同
+
+Homebrew 是一个包管理器,提供了许多 UNIX 软件工具和包的最新版本,例如 FFmpeg、Composer、Minikube 等。当你想安装一些由于某种原因在 Fedora Linux RPM 仓库中没有的软件包时,它就会证明很有用。所以,它并不能取代 `dnf`。
+
+### 安装 Homebrew
+
+在开始安装 Homebrew 之前,确保你已经安装了 glibc 和 gcc。这些工具可以在 Fedora 上通过以下方式安装:
+
+```
+sudo dnf groupinstall "Development Tools"
+```
+
+然后,通过在终端运行以下命令来安装 Homebrew:
+
+```
+/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
+```
+
+在安装过程中,你会被提示输入你的 `sudo` 密码。另外,你可以选择 Homebrew 的安装前缀,但默认的前缀就可以了。在安装过程中,你将成为 Homebrew 前缀目录的所有者,这样你就不必输入 `sudo` 密码来安装软件包。安装将需要数分钟。完成后,运行以下命令,将 `brew` 添加到你的 `PATH` 中:
+
+```
+echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bash_profile
+eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
+```
+
+### 安装和检查软件包
+
+要在 Homebrew 上使用“配方”安装一个软件包,只需运行:
+
+```
+brew install
+```
+
+将 `` 替换为你要安装的“配方”的名称。例如,要安装 Minikube,只需运行:
+
+```
+brew install minikube
+```
+
+你也可以用以下方式搜索“配方”:
+
+```
+brew search
+```
+
+要获得一个“配方”的信息,请运行:
+
+```
+brew info
+```
+
+另外,你可以用以下命令查看所有已安装的“配方”:
+
+```
+brew list
+```
+
+### 卸载软件包
+
+要从你的 Homebrew 前缀中卸载一个软件包,请运行:
+
+```
+brew uninstall
+```
+
+### 升级软件包
+
+要升级一个用 Homebrew 安装的特定软件包,请运行:
+
+```
+brew upgrade
+```
+
+要更新 Homebrew 和所有已安装的“配方”到最新版本,请运行:
+
+```
+brew update
+```
+
+### 总结
+
+Homebrew 是一个简单的包管理器,可以与 `dnf` 一起成为有用的工具(两者完全没有关系)。尽量坚持使用 Fedora 原生的 `dnf` 包管理器,以避免软件冲突。然而,如果你在 Fedora Linux 软件库中没有找到某个软件,那么你也许可以用 Homebrew 找到并安装它。请看 [“配方”列表][2] 以了解有哪些可用的软件。另外,Fedora Linux 上的 Homebrew 还不支持图形化应用(在 Homebrew 术语中称为“酒桶”)。至少,我在安装 GUI 应用时没有成功过。
+
+### 参考资料和进一步阅读
+
+要了解更多关于 Homebrew 的信息,请查看以下资源:
+
+ * Homebrew 主页:
+ * Homebrew 文档:
+ * 维基百科 Homebrew 页面:
+
+--------------------------------------------------------------------------------
+
+via: https://fedoramagazine.org/using-homebrew-package-manager-on-fedora-linux/
+
+作者:[Mehdi Haghgoo][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/powergame/
+[b]: https://github.com/lujun9972
+[1]: https://fedoramagazine.org/wp-content/uploads/2022/03/homebrew_sized-up-816x346.png
+[2]: https://formulae.brew.sh/formula/
diff --git a/published/202203/20220310 How to use undocumented web APIs.md b/published/202203/20220310 How to use undocumented web APIs.md
new file mode 100644
index 0000000000..3ca93cf7ec
--- /dev/null
+++ b/published/202203/20220310 How to use undocumented web APIs.md
@@ -0,0 +1,229 @@
+[#]: subject: "How to use undocumented web APIs"
+[#]: via: "https://jvns.ca/blog/2022/03/10/how-to-use-undocumented-web-apis/"
+[#]: author: "Julia Evans https://jvns.ca/"
+[#]: collector: "lujun9972"
+[#]: translator: "lxbwolf"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14358-1.html"
+
+如何调用没有文档说明的 Web API
+======
+
+
+
+大家好!几天前我写了篇 [小型的个人程序][1] 的文章,里面提到了调用没有文档说明的“秘密” API 很有意思,你需要从你的浏览器中把 cookie 复制出来才能访问。
+
+有些读者问如何实现,因此我打算详细描述下,其实过程很简单。我们还会谈谈在调用没有文档说明的 API 时,可能会遇到的错误和道德问题。
+
+我们用谷歌 Hangouts 举例。我之所以选择它,并不是因为这个例子最有用(我认为官方的 API 更实用),而是因为在这个场景中更有用的网站很多是小网站,而小网站的 API 一旦被滥用,受到的伤害会更大。因此我们使用谷歌 Hangouts,因为我 100% 肯定谷歌论坛可以抵御这种试探行为。
+
+我们现在开始!
+
+### 第一步:打开开发者工具,找一个 JSON 响应
+
+我浏览了 ,在 Firefox 的开发者工具中打开“网络”标签,找到一个 JSON 响应。你也可以使用 Chrome 的开发者工具。
+
+打开之后界面如下图:
+
+![][2]
+
+找到其中一条 “类型” 列显示为 `json` 的请求。
+
+为了找一条感兴趣的请求,我找了好一会儿,突然我找到一条 “people” 的端点,看起来是返回我们的联系人信息。听起来很有意思,我们来看一下。
+
+### 第二步:复制为 cURL
+
+下一步,我在感兴趣的请求上右键,点击 “” -> “复制为 cURLCopy as cURL”。
+
+然后我把 `curl` 命令粘贴到终端并运行。下面是运行结果:
+
+```
+$ curl 'https://people-pa.clients6.google.com/v2/people/?key=REDACTED' -X POST ........ (省略了大量请求标头)
+Warning: Binary output can mess up your terminal. Use "--output -" to tell
+Warning: curl to output it to your terminal anyway, or consider "--output
+Warning: " to save to a file.
+```
+
+你可能会想 —— 很奇怪,“二进制的输出在你的终端上无法正常显示” 是什么错误?原因是,浏览器默认情况下发给服务器的请求头中有 `Accept-Encoding: gzip, deflate` 参数,会把输出结果进行压缩。
+
+我们可以通过管道把输出传递给 `gunzip` 来解压,但是我们发现不带这个参数进行请求会更简单。因此我们去掉一些不相关的请求头。
+
+### 第三步:去掉不相关的请求头
+
+下面是我从浏览器获得的完整 `curl` 命令。有很多行!我用反斜杠(`\`)把请求分开,这样每个请求头占一行,看起来更清晰:
+
+```
+curl 'https://people-pa.clients6.google.com/v2/people/?key=REDACTED' \
+-X POST \
+-H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0' \
+-H 'Accept: */*' \
+-H 'Accept-Language: en' \
+-H 'Accept-Encoding: gzip, deflate' \
+-H 'X-HTTP-Method-Override: GET' \
+-H 'Authorization: SAPISIDHASH REDACTED' \
+-H 'Cookie: REDACTED'
+-H 'Content-Type: application/x-www-form-urlencoded' \
+-H 'X-Goog-AuthUser: 0' \
+-H 'Origin: https://hangouts.google.com' \
+-H 'Connection: keep-alive' \
+-H 'Referer: https://hangouts.google.com/' \
+-H 'Sec-Fetch-Dest: empty' \
+-H 'Sec-Fetch-Mode: cors' \
+-H 'Sec-Fetch-Site: same-site' \
+-H 'Sec-GPC: 1' \
+-H 'DNT: 1' \
+-H 'Pragma: no-cache' \
+-H 'Cache-Control: no-cache' \
+-H 'TE: trailers' \
+--data-raw 'personId=101777723309&personId=1175339043204&personId=1115266537043&personId=116731406166&extensionSet.extensionNames=HANGOUTS_ADDITIONAL_DATA&extensionSet.extensionNames=HANGOUTS_OFF_NETWORK_GAIA_GET&extensionSet.extensionNames=HANGOUTS_PHONE_DATA&includedProfileStates=ADMIN_BLOCKED&includedProfileStates=DELETED&includedProfileStates=PRIVATE_PROFILE&mergedPersonSourceOptions.includeAffinity=CHAT_AUTOCOMPLETE&coreIdParams.useRealtimeNotificationExpandedAcls=true&requestMask.includeField.paths=person.email&requestMask.includeField.paths=person.gender&requestMask.includeField.paths=person.in_app_reachability&requestMask.includeField.paths=person.metadata&requestMask.includeField.paths=person.name&requestMask.includeField.paths=person.phone&requestMask.includeField.paths=person.photo&requestMask.includeField.paths=person.read_only_profile_info&requestMask.includeField.paths=person.organization&requestMask.includeField.paths=person.location&requestMask.includeField.paths=person.cover_photo&requestMask.includeContainer=PROFILE&requestMask.includeContainer=DOMAIN_PROFILE&requestMask.includeContainer=CONTACT&key=REDACTED'
+```
+
+第一眼看起来内容有很多,但是现在你不需要考虑每一行是什么意思。你只需要把不相关的行删掉就可以了。
+
+我通常通过删掉某行查看是否有错误来验证该行是不是可以删除 —— 只要请求没有错误就一直删请求头。通常情况下,你可以删掉 `Accept*`、`Referer`、`Sec-*`、`DNT`、`User-Agent` 和缓存相关的头。
+
+在这个例子中,我把请求删成下面的样子:
+
+```
+curl 'https://people-pa.clients6.google.com/v2/people/?key=REDACTED' \
+-X POST \
+-H 'Authorization: SAPISIDHASH REDACTED' \
+-H 'Content-Type: application/x-www-form-urlencoded' \
+-H 'Origin: https://hangouts.google.com' \
+-H 'Cookie: REDACTED'\
+--data-raw 'personId=101777723309&personId=1175339043204&personId=1115266537043&personId=116731406166&extensionSet.extensionNames=HANGOUTS_ADDITIONAL_DATA&extensionSet.extensionNames=HANGOUTS_OFF_NETWORK_GAIA_GET&extensionSet.extensionNames=HANGOUTS_PHONE_DATA&includedProfileStates=ADMIN_BLOCKED&includedProfileStates=DELETED&includedProfileStates=PRIVATE_PROFILE&mergedPersonSourceOptions.includeAffinity=CHAT_AUTOCOMPLETE&coreIdParams.useRealtimeNotificationExpandedAcls=true&requestMask.includeField.paths=person.email&requestMask.includeField.paths=person.gender&requestMask.includeField.paths=person.in_app_reachability&requestMask.includeField.paths=person.metadata&requestMask.includeField.paths=person.name&requestMask.includeField.paths=person.phone&requestMask.includeField.paths=person.photo&requestMask.includeField.paths=person.read_only_profile_info&requestMask.includeField.paths=person.organization&requestMask.includeField.paths=person.location&requestMask.includeField.paths=person.cover_photo&requestMask.includeContainer=PROFILE&requestMask.includeContainer=DOMAIN_PROFILE&requestMask.includeContainer=CONTACT&key=REDACTED'
+```
+
+这样我只需要 4 个请求头:`Authorization`、`Content-Type`、`Origin` 和 `Cookie`。这样容易管理得多。
+
+### 第四步:在 Python 中发请求
+
+现在我们知道了我们需要哪些请求头,我们可以把 `curl` 命令翻译进 Python 程序!这部分是相当机械化的过程,目标仅仅是用 Python 发送与 cUrl 相同的数据。
+
+下面是代码实例。我们使用 Python 的 `requests` 包实现了与前面 `curl` 命令相同的功能。我把整个长请求分解成了元组的数组,以便看起来更简洁。
+
+```
+import requests
+import urllib
+
+data = [
+ ('personId','101777723'), # I redacted these IDs a bit too
+ ('personId','117533904'),
+ ('personId','111526653'),
+ ('personId','116731406'),
+ ('extensionSet.extensionNames','HANGOUTS_ADDITIONAL_DATA'),
+ ('extensionSet.extensionNames','HANGOUTS_OFF_NETWORK_GAIA_GET'),
+ ('extensionSet.extensionNames','HANGOUTS_PHONE_DATA'),
+ ('includedProfileStates','ADMIN_BLOCKED'),
+ ('includedProfileStates','DELETED'),
+ ('includedProfileStates','PRIVATE_PROFILE'),
+ ('mergedPersonSourceOptions.includeAffinity','CHAT_AUTOCOMPLETE'),
+ ('coreIdParams.useRealtimeNotificationExpandedAcls','true'),
+ ('requestMask.includeField.paths','person.email'),
+ ('requestMask.includeField.paths','person.gender'),
+ ('requestMask.includeField.paths','person.in_app_reachability'),
+ ('requestMask.includeField.paths','person.metadata'),
+ ('requestMask.includeField.paths','person.name'),
+ ('requestMask.includeField.paths','person.phone'),
+ ('requestMask.includeField.paths','person.photo'),
+ ('requestMask.includeField.paths','person.read_only_profile_info'),
+ ('requestMask.includeField.paths','person.organization'),
+ ('requestMask.includeField.paths','person.location'),
+ ('requestMask.includeField.paths','person.cover_photo'),
+ ('requestMask.includeContainer','PROFILE'),
+ ('requestMask.includeContainer','DOMAIN_PROFILE'),
+ ('requestMask.includeContainer','CONTACT'),
+ ('key','REDACTED')
+]
+response = requests.post('https://people-pa.clients6.google.com/v2/people/?key=REDACTED',
+ headers={
+ 'X-HTTP-Method-Override': 'GET',
+ 'Authorization': 'SAPISIDHASH REDACTED',
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ 'Origin': 'https://hangouts.google.com',
+ 'Cookie': 'REDACTED',
+ },
+ data=urllib.parse.urlencode(data),
+)
+
+print(response.text)
+```
+
+我执行这个程序后正常运行 —— 输出了一堆 JSON 数据!太棒了!
+
+你会注意到有些地方我用 `REDACTED` 代替了,因为如果我把原始数据列出来你就可以用我的账号来访问谷歌论坛了,这就很不好了。
+
+### 运行结束!
+
+现在我可以随意修改 Python 程序,比如传入不同的参数,或解析结果等。
+
+我不打算用它来做其他有意思的事了,因为我压根对这个 API 没兴趣,我只是用它来阐述请求 API 的过程。
+
+但是你确实可以对返回的一堆 JSON 做一些处理。
+
+### curlconverter 看起来很强大
+
+有人评论说可以使用 自动把 curl 转换成 Python(和一些其他的语言!),这看起来很神奇 —— 我都是手动转的。我在这个例子里使用了它,看起来一切正常。
+
+### 追踪 API 的处理过程并不容易
+
+我不打算夸大追踪 API 处理过程的难度 —— API 的处理过程并不明显!我也不知道传给这个谷歌论坛 API 的一堆参数都是做什么的!
+
+但是有一些参数看起来很直观,比如 `requestMask.includeField.paths=person.email` 可能表示“包含每个人的邮件地址”。因此我只关心我能看懂的参数,不关心看不懂的。
+
+### (理论上)适用于所有场景
+
+可能有人质疑 —— 这个方法适用于所有场景吗?
+
+答案是肯定的 —— 浏览器不是魔法!浏览器发送给你的服务器的所有信息都是 HTTP 请求。因此如果我复制了浏览器发送的所有的 HTTP 请求头,那么后端就会认为请求是从我的浏览器发出的,而不是用 Python 程序发出的。
+
+当然,我们去掉了一些浏览器发送的请求头,因此理论上后端是可以识别出来请求是从浏览器还是 Python 程序发出的,但是它们通常不会检查。
+
+这里有一些对读者的告诫 —— 一些谷歌服务的后端会通过令人难以理解(对我来说是)方式跟前端通信,因此即使理论上你可以模拟前端的请求,但实际上可能行不通。可能会遭受更多攻击的大型 API 会有更多的保护措施。
+
+我们已经知道了如何调用没有文档说明的 API。现在我们再来聊聊可能遇到的问题。
+
+### 问题 1:会话 cookie 过期
+
+一个大问题是我用我的谷歌会话 cookie 作为身份认证,因此当我的浏览器会话过期后,这个脚本就不能用了。
+
+这意味着这种方式不能长久使用(我宁愿调一个真正的 API),但是如果我只是要一次性快速抓取一小组数据,那么可以使用它。
+
+### 问题 2:滥用
+
+如果我正在请求一个小网站,那么我的 Python 脚本可能会把服务打垮,因为请求数超出了它们的处理能力。因此我请求时尽量谨慎,尽量不过快地发送大量请求。
+
+这尤其重要,因为没有官方 API 的网站往往是些小网站且没有足够的资源。
+
+很明显在这个例子中这不是问题 —— 我认为在写这篇文章的过程我一共向谷歌论坛的后端发送了 20 次请求,他们肯定可以处理。
+
+如果你用自己的账号身份过度访问这个 API 并导致了故障,那么你的账号可能会被暂时封禁(情理之中)。
+
+我只下载我自己的数据或公共的数据 —— 我的目的不是寻找网站的弱点。
+
+### 请记住所有人都可以访问你没有文档说明的 API
+
+我认为本文最重要的信息并不是如何使用其他人没有文档说明的 API。虽然很有趣,但是也有一些限制,而且我也不会经常这么做。
+
+更重要的一点是,任何人都可以这么访问你后端的 API!每个人都有开发者工具和网络标签,查看你传到后端的参数、修改它们都很容易。
+
+因此如果一个人通过修改某些参数来获取其他用户的信息,这不值得提倡。我认为提供公开 API 的大部分开发者们都知道,但是我之所以再提一次,是因为每个初学者都应该了解。: )
+
+--------------------------------------------------------------------------------
+
+via: https://jvns.ca/blog/2022/03/10/how-to-use-undocumented-web-apis/
+
+作者:[Julia Evans][a]
+选题:[lujun9972][b]
+译者:[lxbwolf](https://github.com/lxbwolf)
+校对:[wxy
+](https://github.com/wxy
+)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://jvns.ca/
+[b]: https://github.com/lujun9972
+[1]: https://jvns.ca/blog/2022/03/08/tiny-programs/
+[2]: https://jvns.ca/images/network-tab.png
diff --git a/published/20220310 KDE Plasma 5.24 Review. A Crafted Desktop to Dominate the Linux World.md b/published/202203/20220310 KDE Plasma 5.24 Review. A Crafted Desktop to Dominate the Linux World.md
similarity index 100%
rename from published/20220310 KDE Plasma 5.24 Review. A Crafted Desktop to Dominate the Linux World.md
rename to published/202203/20220310 KDE Plasma 5.24 Review. A Crafted Desktop to Dominate the Linux World.md
diff --git a/published/202203/20220310 Piwigo- An Open-Source Google Photos Alternative That You Can Self-Host.md b/published/202203/20220310 Piwigo- An Open-Source Google Photos Alternative That You Can Self-Host.md
new file mode 100644
index 0000000000..0aeead1e08
--- /dev/null
+++ b/published/202203/20220310 Piwigo- An Open-Source Google Photos Alternative That You Can Self-Host.md
@@ -0,0 +1,158 @@
+[#]: subject: "Piwigo: An Open-Source Google Photos Alternative That You Can Self-Host"
+[#]: via: "https://itsfoss.com/piwigo/"
+[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14389-1.html"
+
+Piwigo:一个你可以自行托管的开源谷歌照片替代品
+======
+
+> 如果你想摆脱“谷歌照片”,Piwigo 是一个令人印象深刻的开源替代方案,能够自我托管。让我们来探讨一下它的更多信息。
+
+“谷歌照片”是备份你的照片和视频的最流行的选择之一。(LCTT 译注:并不是……)
+
+考虑到它是大多数安卓手机的默认选择,使用谷歌照片管理照片/视频是一种无缝体验。
+
+但是,如果你想从它那里转移到一些开源的、对隐私更友好的东西怎么办?不只是谷歌照片,还有其它一些照片托管平台也是专有的。
+
+请看看 Piwigo,一个开源的 [照片管理软件][1] 来帮助你。
+
+### Piwigo:你可以自行托管的开源照片库
+
+![][2]
+
+[Piwigo][3] 是一个开源解决方案,可以帮助管理你的照片和视频。
+
+你可以选择自己托管,控制你的数据,或者选择云托管(**数据存储在法国,有备份**)。
+
+顺便说一句,该公司起源于法国。
+
+不仅仅是针对个人,Piwigo 也为组织和团队量身定做。
+
+如果你担心使用谷歌照片或类似服务上传时的隐私政策,Piwigo 可以成为一个出色的替代品。
+
+Piwigo 提供了一系列的功能和细粒度的控制来管理你的照片。
+
+### Piwigo 的功能
+
+![][4]
+
+虽然它是主流服务的一个可行的替代品,但它为个人和组织提供了先进的功能。
+
+一些功能包括:
+
+ * 通过云托管(\*.piwigo.com)获得你的专用子域
+ * 能够批量下载
+ * 创建相册
+ * 选择照片来分配现有的相册集
+ * 通过链接分享照片
+ * 用公共和私人模式进行访问管理
+ * 能够对用户进行分组,以管理你的相册或照片(对组织/团队来说很有效)。
+ * 基本分析,以跟踪你的使用情况和使用的存储空间
+ * 支持向相册/照片添加标签
+ * 支持深色模式
+ * 能够编辑照片的元数据
+ * 过滤器,以快速找到照片/相册
+ * 支持 JPG/JPEG、PNG 和 GIF 文件(针对个人)
+ * 支持所有文件类型(仅适用于企业使用)
+ * 为个人用户提供无限的存储空间
+ * 支持自定义域名(即使是云托管选项)
+ * 插件可扩展功能
+ * 支持主题
+ * 移动支持(安卓和 iOS)
+
+除了上述功能外,你还可以获得改善用户管理和 Piwigo 的整体用户体验的更多选项。
+
+![][5]
+
+我使用其针对个人的云托管选项(**有 30 天的试用期**)对其进行了快速测试。让我分享我的一些见解,以帮助你在尝试之前了解它们。
+
+### 使用 Piwigo 来管理照片
+
+当你注册一个账户时,你可以指定你的自定义子域。
+
+例如,我把我的测试账户放在 **ankushsoul.piwigo.com**。
+
+![][6]
+
+任何人都可以通过在他们的浏览器中输入上述 URL 来访问我公开分享的照片/相册。
+
+所以,最好是尽可能保持子域的名称独一无二。在这两种情况下,你也可以将相册/照片限制给登录的用户(或你自己),其他人即使知道你的子域,也无法访问你的照片。
+
+![][7]
+
+你可以前往它的仪表板,检查你的存储使用情况和整体活动情况。
+
+它有两个激活的插件,一个用于内部功能,另一个默认用于打击垃圾信息。
+
+![][8]
+
+你会发现有很多插件可以加强批量管理,启用管理员信息,激活相册的评论,在你的相册上添加到期时间,限制下载,以及访问一些令人兴奋的功能。
+
+你可以花点时间浏览一下现有的插件选择,评估一下它们与谷歌照片相比能有多大用处。
+
+当然,你在任何主流的云照片托管服务中都得不到这种控制。
+
+所以,这很值得探索。
+
+![][9]
+
+对于现有的其他功能,你可以管理多个用户,控制访问,发送通知(通过电子邮件),还可以进行一些维护活动。
+
+总的来说,用户体验是相当好的。它可能没有提供最现代的用户界面,但它可以工作,而且很容易管理。
+
+**注意**:考虑到 Play Store 上的应用没有收到最新的更新,移动体验(在 Android 上)可能并不令人满意。然而,你可以在他们的 GitHub 上找到最新版本的 APK 文件。
+
+### 开始使用 Piwigo
+
+我认为 Piwigo 非常适合各类人使用,从想组织照片的人,到想合作/分享图片的用户,都可以使用。
+
+如果你选择自我托管,你应该查看它的 [文档][10] 和探索 [GitHub 页面][11]。
+
+考虑到你独自管理它,你将需要适当地维护实例,并对你的数据进行备份。
+
+如果你选择 [云托管选项][12](作为个人),定价从每年 **39 欧元** 开始,不限图片文件上传,如果你订阅 3 年,价格会更便宜。
+
+![][13]
+
+个人计划没有提到具体的存储限制(无限)。因此,可以说你不应该有任何问题,除非你开始滥用该服务。
+
+鉴于你在该服务中得到的控制权,大多数用户会更愿意使用云托管服务,而放弃像谷歌照片这样的服务。
+
+企业/组织的定价计划将是昂贵的(每月)。然而,它支持企业的所有文件类型。
+
+- [Piwigo][3]
+
+你认为像 Piwigo 这样的谷歌照片的自行托管替代品如何?你试过吗?云主机选项是主流选项的可行替代品吗?
+
+请在下面的评论中告诉我你的想法。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/piwigo/
+
+作者:[Ankush Das][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://itsfoss.com/author/ankush/
+[b]: https://github.com/lujun9972
+[1]: https://itsfoss.com/linux-photo-management-software/
+[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/piwigo-feature.jpg?resize=800%2C424&ssl=1
+[3]: https://piwigo.com/
+[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/piwigo-album-edit.png?resize=800%2C451&ssl=1
+[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/piwigo-upload.png?resize=800%2C665&ssl=1
+[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/piwigo-sign-up.png?resize=800%2C646&ssl=1
+[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/piwigo-dashboard.png?resize=800%2C435&ssl=1
+[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/piwigo-plugins.png?resize=800%2C499&ssl=1
+[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/piwigo-config.png?resize=800%2C632&ssl=1
+[10]: https://piwigo.org/doc/doku.php
+[11]: https://github.com/Piwigo
+[12]: https://piwigo.com/pricing
+[13]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/piwigo-pricing.png?resize=800%2C509&ssl=1
\ No newline at end of file
diff --git a/published/202203/20220311 Zorin OS 16.1 Brings Much Needed Stability and Improvements.md b/published/202203/20220311 Zorin OS 16.1 Brings Much Needed Stability and Improvements.md
new file mode 100644
index 0000000000..2814ffa5ae
--- /dev/null
+++ b/published/202203/20220311 Zorin OS 16.1 Brings Much Needed Stability and Improvements.md
@@ -0,0 +1,71 @@
+[#]: subject: "Zorin OS 16.1 Brings Much Needed Stability and Improvements"
+[#]: via: "https://www.debugpoint.com/2022/03/zorin-os-16-1-release/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14365-1.html"
+
+Zorin OS 16.1 带来了急需的稳定性和改进措施
+======
+
+> Zorin OS 16.1 带来了安全补丁、新软件,团队的目标是打造更好的发行版。
+
+Zorin OS 之所以受欢迎,是因为它为 Windows 用户的 Linux 之旅提供了一个完美的起点。由于其简单的设计、优雅的软件包选择和开箱即用的 Windows 外观,它是当今所有用户欢迎和追捧的 Linux 发行版之一。
+
+自 [Zorin OS 16][1] 以来,经过近两个月的时间,这第一个小版本现在可以供已经在运行 16.0 版本的用户下载和升级了。
+
+![Zorin OS 16.1 Desktop][2]
+
+### Zorin OS 16.1 - 新内容
+
+Zorin OS 16.1 为你的系统带来了最新安全补丁,包括 LibreOffice 7.3 办公套件和一些更新的软件包。
+
+如果你刚买了一台新的笔记本电脑或安装了一个新的游戏工作站,Zorin OS 16.1 还支持索尼的 PlayStation 5 Dual Sense 游戏控制器和苹果的魔术鼠标 2。此外,你还得到了对英特尔第 12 代处理器和英伟达 RTX 3050 显卡的出色支持。
+
+此外,由于最新的软件包,Zorin 开发人员承诺对汽车 Wi-Fi 和打印机有更好的支持。
+
+下面是这个小版本的更新包和应用的快速总结。
+
+ * 基于 Ubuntu 20.04.3 LTS
+ * Zorin 桌面,基于 GNOME 3.38.4
+ * LibreOffice 7.3
+ * Firefox 98
+ * Linux Kernel 5.13
+ * GIMP 2.10.18
+ * Evolution 邮件客户端
+
+如果你想深入了解这些变化,完整的细节可以在[这里][3]找到。
+
+那么,在哪里下载?
+
+### 下载
+
+在你点击下载之前,你应该知道它有一个“专业”版本,带有额外的主题和开箱即用的设置,价值 39 美元,而“核心”版本是完全免费下载的。你可以在下载页面阅读“专业版”和“核心版”的比较。
+
+在我看来,核心版应该足够了,如果你有足够的经验,你可以改变设置,使其成为专业版。因此,我们推荐核心版用于一般用途。
+
+- [下载 Zorin OS 16.1][5]
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/03/zorin-os-16-1-release/
+
+作者:[Arindam][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://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lujun9972
+[1]: https://www.debugpoint.com/2021/12/zorin-os-16-lite-review-xfce/
+[2]: https://www.debugpoint.com/wp-content/uploads/2022/03/Zorin-OS-16.1-Desktop-1024x575.jpg
+[3]: https://blog.zorin.com/2022/03/10/zorin-os-16-1-released-support-for-ukraine/
+[5]: https://zorin.com/os/download/
+[6]: https://t.me/debugpoint
+[7]: https://twitter.com/DebugPoint
+[8]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[9]: https://facebook.com/DebugPoint
\ No newline at end of file
diff --git a/published/202203/20220312 Best 5 Alternatives to Microsoft Office -Compared.md b/published/202203/20220312 Best 5 Alternatives to Microsoft Office -Compared.md
new file mode 100644
index 0000000000..be3c7a91b2
--- /dev/null
+++ b/published/202203/20220312 Best 5 Alternatives to Microsoft Office -Compared.md
@@ -0,0 +1,169 @@
+[#]: subject: "Best 5 Alternatives to Microsoft Office [Compared]"
+[#]: via: "https://www.debugpoint.com/2022/03/best-alternatives-microsoft-office-2022/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "aREversez"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14382-1.html"
+
+横向对比 5 款微软 Office 替代品
+======
+
+
+
+> 在这篇文章中,我们将推荐 5 款可以替代微软 Office 的最佳软件,并从功能、操作难易程度等方面,对它们进行比较。看一看哪款更适合你?
+
+可以说,Office 办公软件是微软开发的最优质的软件之一,受到世界各地用户的青睐,广泛应用于各行各业,当属近几十年来软件市场涌现出来的精品。
+
+不过大家都知道,微软 Office 不仅没有开发适用于 Linux 的版本,而且价格高昂。对于企业用户或者个人用户来说,Office 365 的价格就更贵了,远超普通人能接受的价格水平。
+
+那么,有哪些软件可以替代微软 Office 呢?
+
+这篇文章推荐 5 款可以替代微软 Office 的最佳软件。
+
+### LibreOffice
+
+![LibreOffice][1]
+
+首先推荐的是 [LibreOffice][2]。LibreOffice 是一款自由开源的办公套件,由文档基金会开发维护,支持 Linux、macOS 以及 Windows 系统。
+
+LibreOffice 套件包括表格工具 [Calc][3]、文字处理工具 Writer、演示工具 Impress、画图工具 Draw 以及数据库工具 Base。
+
+LibreOffice 办公软件的开发十分很活跃,同时不断提升对微软 Office 的兼容性。如果善加利用,LibreOffice 完全可以取代微软 Office。借助丰富的技术文档和社区资源,用户可以迅速掌握 LibreOffice 的使用方法。
+
+企业用户也可以免费使用 LibreOffice,如果需要用它来完成关键工作,用户也可以购买配置服务和支持服务,相关费用十分低廉。
+
+然而,LibreOffice 不提供像 Outlook 一样的邮箱服务。这可能是它的一个小缺点,不过好在现在的邮箱服务都可以在浏览器上运行。
+
+ * [主页][2]
+ * [商业版][4]
+ * [下载普通个人版][5]
+ * [帮助文档][6]
+ * [官方支持论坛][7]
+
+### Google Docs
+
+![Google Docs][8]
+
+搜索引擎巨头谷歌为用户免费提供了一套网页版的办公套件 —— [Google Docs][9],其中包括 Docs(文档编辑器)、Sheets(表格程序)、Slides(演示程序)。
+
+用户可以在谷歌云盘中免费创建、打开文档。随时随地,自由存取。Google Docs 界面设计优美,内置工具栏、高级选项、拼写检查、语音输入功能(仅支持 Chrome 浏览器)、加密功能以及云存储服务。谷歌也为 iOS 系统和安卓系统提供了移动端,用户可以在移动设备上轻松打开、编辑文档。
+
+Google Docs 最为人称道的功能在于它的模板。有了这些内置模板,用户可以迅速编辑出一份专业的文档。此外,通过邀请其他谷歌用户,还可以使用多人协作在线编辑功能。
+
+如果你需要更多的功能,可以付费使用 Google Workspace。这是一套全面的整合方案,你可以通过 Google Forms 收集信息,并集成到你的文档和表格中、网站编辑工具 Google Sites、Google 日历等服务,保存为文档。
+
+ * [主页][9]
+ * [帮助文档][10]
+
+### OnlyOffice
+
+![OnlyOffice][11]
+
+[OnlyOffice][12](显示名字为 ONLYOFFICE)是一套自由开源的办公软件,包括文本编辑器、表格工具、演示软件,提供共享文件实时协作编辑、修改痕迹记录查看以及制作可供填写的表格等高级功能。
+
+外观上,OnlyOffice 的功能区模仿了微软 Office 365 功能区的设计风格,能让用户快速上手。此外,OnlyOffice 对微软 Office 文件格式(.docx .xlsx 以及 .pptx)的兼容性更好,方便用户与他人共享文件。
+
+值得一提的是,OnlyOffice 还推出了需要付费使用的企业版本 —— ONLYOFFICE Workspace。该版本增加了一些其他的高级功能,提供即时支持服务,非常适合那些预算紧张但对格式兼容性要求又很高的用户。
+
+ONLYOFFICE Workspace 集成了邮箱客户端、客户关系管理产品、项目管理工具以及日历。总体来说,ONLYOFFICE Workspace 是一款不错的软件,但也有一些不足,如拼写检查、打印预览、页面尺寸以及漏洞等问题。不过也不需要过分担心,你可以在 GitHub 上传错误报告,向开发团队寻求帮助。
+
+ * [主页][12]
+ * [下载][14]
+ * [帮助文档][15]
+
+### Softmaker FreeOffice
+
+![FreeOffice][16]
+
+[FreeOffice][17] 由 SoftMaker 开发,是一套十分优秀的办公软件,包括 TextMaker(可替代 Word)、PlanMaker(可替代 Excel)以及 Presentations(可替代 PowerPoint)。FreeOffice 提供了两种用户界面:带有功能区选项的现代化界面与带有菜单和工具栏的传统界面,两种界面都十分受欢迎。此外,FreeOffice 还为触控设备提供专有的用户界面与功能。
+
+FreeOffice 对 微软 Office 文档格式的兼容性是很好的,可以完成大部分工作。然而,你在处理开放文档格式(ODT)文件时可能会遇到一点麻烦,因为它的支持有限。
+
+FreeOffice 是一款闭源软件。
+
+ * [主页][17]
+ * [下载][18]
+ * [帮助文档][19]
+
+### WPS Office
+
+![WPS Office][20]
+
+还记得金山办公软件吗? 它现在的名字叫做 WPS Office。WPS 取 **W**ord, **P**resentation 与 **S**preadsheets 的首字母组合而成。到今天,WPS Office 已有 30 年的发展历史,是老牌办公软件之一。WPS 作为办公软件,功能齐全,支持移动端在内的各类平台。
+
+WPS 最具特色的功能在于支持实时协作编辑。使用 WPS,团队成员可以同时编辑一份共享文档。WPS 还为用户提供了超过 10 万种文档模板,帮助用户编辑出专业美观的文档与演示文件。
+
+WPS 的标准版本可以免费下载使用,不过有一些高级功能需要付费。
+
+如果你需要额外的功能,比如编辑 PDF 文件、云空间扩容、团队协作以及企业支持,可以考虑付费开通会员,使用 WPS 企业版。
+
+注意,这是一款闭源软件,而且可能会推送广告。(LCTT 译注:该公司内部人士表示,免费的 Linux 版没广告。)该软件由中国金山软件公司开发。
+
+ * [主页][21]
+ * [帮助文档][22]
+ * [下载][23]
+
+### 对比表
+
+下表基于功能以及其他细节,对上述 5 款办公软进行对比总结。
+
+产品 | 价格 | 是否开源 | 优势 | 劣势
+---|---|---|---|---
+LibreOffice | 免费 | 开源 | 免费;跨平台;支持多种语言;完全支持 ODF 文件格式;对 微软 Office 兼容性最好;开发活跃 | 不提供邮箱应用;不提供项目管理功能;数据库基于 Java
+Google Docs | 免费 | 闭源 | 免费;跨平台;良好的文档支持;随时随地存取云文档;完美支持移动端 | 需要网络连接;网络连接导致卡顿或延迟;不提供可供安装的版本
+OnlyOffice | 免费(基础功能) | 开源 | 用户界面酷似微软 Office;对微软 Office 文件拥有更好的兼容性;云集成;支持插件;跨平台 | 基本功能可能出现问题;云集成服务违反欧盟通用数据保护条例;网页端延迟
+FreeOffice | 免费(基础功能)| 闭源 | 免费;相较于 LibreOffice 更加轻量;支持触屏;良好的微软 Office 兼容性;跨平台 | 免费版本只包括文档、表格与演示功能;其他产品需要付费;对 ODT 文件格式的支持有限;闭源软件
+WPS Office | 免费 | 闭源 | 良好的微软 Office 兼容性;跨平台;标签界面;支持多语言 | 闭源软件;可能弹出广告
+
+### 我们推荐
+
+抛开所有这些优势和劣势不管,如果你还不确定哪一款才是最适合你的,我推荐你使用 LibreOffice。因为 LibreOffice 与 TDF 格式前景广阔,开发活跃,在全世界都拥有广泛的支持。LibreOffice 有着庞大的在线知识库,为用户提供丰富的使用技巧。通过在 LibreOffice 中使用 Basic 语言或者 Python 宏,你还可以轻松实现办公自动化。
+
+### 总结
+
+我希望,我们的推荐能帮助你选择适合自己的可替代微软 Office 的办公软件。 说实话,上述软件没有一个能真正比得上微软 Office。但是并不是每个人都能付得起微软 Office 高昂的费用,我相信以上 5 款软件对这部分人来说会是不错的选择。
+
+_一些图片来源:上述软件所属公司_
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/03/best-alternatives-microsoft-office-2022/
+
+作者:[Arindam][a]
+选题:[lujun9972][b]
+译者:[aREversez](https://github.com/aREversez)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lujun9972
+[1]: https://www.debugpoint.com/wp-content/uploads/2022/03/LibreOffice-1024x535.jpg
+[2]: https://www.libreoffice.org/discover/libreoffice/
+[3]: https://www.debugpoint.com/category/libreoffice/libreoffice-calc/
+[4]: https://www.libreoffice.org/download/libreoffice-in-business/
+[5]: https://www.libreoffice.org/download/download/
+[6]: https://help.libreoffice.org/latest/en-US/text/shared/05/new_help.html
+[7]: https://ask.libreoffice.org/
+[8]: https://www.debugpoint.com/wp-content/uploads/2022/03/Google-Docs.jpg
+[9]: https://www.google.com/docs/about/
+[10]: https://support.google.com/docs/?hl=en#topic=1382883
+[11]: https://www.debugpoint.com/wp-content/uploads/2022/03/OnlyOffice.jpg
+[12]: https://www.onlyoffice.com/
+[13]: https://www.debugpoint.com/2021/12/best-gnome-apps-part-1/
+[14]: https://www.onlyoffice.com/desktop.aspx
+[15]: https://forum.onlyoffice.com/
+[16]: https://www.debugpoint.com/wp-content/uploads/2022/03/FreeOffice.jpg
+[17]: https://www.freeoffice.com/en/
+[18]: https://www.freeoffice.com/en/download/applications
+[19]: https://forum.softmaker.com/
+[20]: https://www.debugpoint.com/wp-content/uploads/2022/03/WPS-Office-1024x499.jpg
+[21]: https://www.wps.com/
+[22]: https://www.wps.com/academy/
+[23]: https://www.wps.com/download/
+[24]: https://t.me/debugpoint
+[25]: https://twitter.com/DebugPoint
+[26]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[27]: https://facebook.com/DebugPoint
diff --git a/published/202203/20220315 The C4C Linux Distro Rises from the Grave.md b/published/202203/20220315 The C4C Linux Distro Rises from the Grave.md
new file mode 100644
index 0000000000..14df648d7f
--- /dev/null
+++ b/published/202203/20220315 The C4C Linux Distro Rises from the Grave.md
@@ -0,0 +1,61 @@
+[#]: subject: "The C4C Linux Distro Rises from the Grave"
+[#]: via: "https://news.itsfoss.com/c4c-linux-distro-revived/"
+[#]: author: "John Paul https://news.itsfoss.com/author/john/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14377-1.html"
+
+复活的 C4C Linux 发行版
+======
+
+> Computers4Christians 项目以定制发行版的形式进行了改革,该发行版为有基督教信仰的人提供了软件。
+
+
+
+当我刚开始在这里写作时,我介绍了一个 [基督徒的 Linux 发行版][1],距离现在已经有 6 个年头了,让我们来速览一下这个项目在 6 年的时间里都有哪些变化吧。
+
+### 名字变了,性质也变了
+
+当我们第一次碰到 [Computers4Christians][2],他们是一个基督教团体,通过安装 Linux 系统来翻新旧电脑,并把它们捐赠给当地社区。他们大约捐赠了 1000 台翻新的旧电脑。该团体基于 Lubuntu 定制了自己的 Linux 版本,名字叫 “Computers4Christians Linux Project”。
+
+今天,Computers4Christians 已经不再捐赠翻新的旧电脑了。取而代之的是,这三个开发者正在专注于开发重命名的 [C4C Ubuntu][3]。
+
+当我问他们为什么决定要继续开发这个发行版时,他们回答说:
+
+> 我们希望引导那些不信奉上帝的人与耶稣·基督建立真正的联系,并借此发展一些信徒。任何人都可以,在几乎任何电脑上,下载、运行临场镜像或者安装我们的 Linux 发行版。C4C Ubuntu 用户可以通过多个版本的圣经、基督教教义、每日灵修、基督教视频和游戏等方式聆听上帝的教诲。我们祈祷每一次的下载、运行和安装 C4C Ubuntu 镜像,都能帮助用户走向基督,或是更接近上帝。“向软弱的人,我就作软弱的人,为要得软弱的人;向甚么样的人,我就作甚么样的人。无论如何总要救些人。” —— 哥林多前书 9:22(网络)
+
+### C4C Ubuntu 中都有什么?
+
+当前版本的 C4C Ubuntu 基于最新的 Ubuntu LTS(20.04.4)构建。它使用 Xfce 桌面环境代替了 GNOME 桌面环境。我问他们为什么决定基于 Ubuntu 而不是 Lubuntu。开发者 Eric Bradshaw 告诉我说,他们之所以切换到 Ubuntu,是因为 Lubuntu 的 LXQt 桌面环境有缺陷,而且它在旧电脑上表现不佳。
+
+以下是 C4C Ubuntu 预装的内容:
+
+ * 主要的常用软件:Catfish、FileZilla、GIMP、Gnash、GnuCash、Gufw、LibreOffice、OpenJDK Java 11、Pidgin、Pinta、Synaptic、Thunderbird 和 VLC。
+ * 与基督教或圣经相关的软件和媒体:十二使徒问答和记忆游戏、圣经、圣经桌面版、8 个圣经知识游戏、10 个圣经经文迷宫探索游戏、Diatheke、117 个 Flash 圣经游戏、24 个有趣的圣经故事、Verse、Wide Margin、西福斯圣经指南、新信徒和门徒的阅读材料以及基督教视频。
+ * 圣经:有声圣经(WEB)、AKJV、ASV、BBE、ERV、KJV、NHEB 和 WEB。注释:MHC、NETnotesfree、Personal 和 TFG。每日灵修:DBD 和 SME。词典:MLStrong、Robinson、StrongsGreek 和 StrongsHebrew。通用书籍:MollColossions 和 Pilgram。地图:ABSMaps、eBibleTeacherMaps、EpiphanyMaps、HistMidEast、KretzmannMaps、NETMaps、SmithBibleAtlas 和 SonLightFreeMaps。
+ * 我们的背景图片包括 150 张不同的“上帝的创造God's creation”,提供高清、标准和宽屏等尺寸大小。我们还提供快捷方式或启动器,你可以在“基督教”子菜单中找到它们,点击即可直达 37 个在线的基督教视频集、音乐视频集和 YouTube 频道。
+ * 预装的 Firefox 上有数百个手工挑选和分类的书签,不管你是要学习 Linux 还是要了解上帝,你都可以找到相关书签。有一个叫 “FoxFilter” 的家长控制扩展可以帮助过滤掉网页上不适当的内容,用户如果觉得有用,可以订阅它。
+ * C4C Ubuntu 团队引入了 [GNU Gnash 的 snap 包][4],它是一个 Flash 播放器。有了它,用户就可以玩预装的 Flash 圣经游戏了。
+
+如果你想要尝试 C4C Ubuntu,你可以在 [这里][5] 找到下载链接。这个网站有很多关于他们的历史版本信息。同时,开发团队也在不断更新这个网站。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/c4c-linux-distro-revived/
+
+作者:[John Paul][a]
+选题:[lujun9972][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/john/
+[b]: https://github.com/lujun9972
+[1]: https://itsfoss.com/computers-christians-linux/
+[2]: https://computers4christians.org/
+[3]: https://computers4christians.org/C4C.html
+[4]: https://snapcraft.io/gnash-raymii
+[5]: https://computers4christians.org/Download.html
diff --git a/published/202203/20220316 Gitter- A Cross-Platform Open Source Community Platform for Developers.md b/published/202203/20220316 Gitter- A Cross-Platform Open Source Community Platform for Developers.md
new file mode 100644
index 0000000000..37a09b476a
--- /dev/null
+++ b/published/202203/20220316 Gitter- A Cross-Platform Open Source Community Platform for Developers.md
@@ -0,0 +1,110 @@
+[#]: subject: "Gitter: A Cross-Platform Open Source Community Platform for Developers"
+[#]: via: "https://itsfoss.com/gitter/"
+[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14397-1.html"
+
+Gitter:面向开发者的跨平台开源社区平台
+======
+
+
+
+> 一个为开发者量身定做的跨平台开源解决方案。你可以建立或加入现有的社区来进行协作和互动。
+
+几乎每个网络用户都知道 Slack、Rocket.Chat、Trello、[Nextcloud][1],以及其他一些用于工作沟通和协作的解决方案。
+
+如果你喜欢用 FOSS 来进行团队协作,我们也有一个 [Slack 的开源替代品列表][2]。
+
+但是,作为一个软件开发者,如果你偶然发现了一个开发者社区怎么办?
+
+与 Reddit 或其他社交媒体上的社区不同,你可以进入一个开源平台,在那里,开发者们遇见并就重要的开源项目进行合作。这对于社交协作和同行之间的互动来说,不是很令人兴奋吗?
+
+![][3]
+
+[Gitter][10](现在是 [Element][4] 的一部分,也是一个协作/聊天应用)的目标就是这样。它是一个由开源技术驱动的社区平台([Matrix][5] 协议)。
+
+### Gitter:使用开源技术连接的开发者社区
+
+Gitter 是一个令人兴奋的聊天和网络平台,有助于建立或加入现有社区。它可用于 Linux、macOS 和 Windows。
+
+![][6]
+
+它是专门为开发者定制的,可以为他们各自的语言/项目,如 CSS、JavaScript、Bootstrap、NodeJS 等,进行合作/加入社区。
+
+你也可以轻松地创建你的社区,而无需设置任何邀请服务。
+
+![][7]
+
+该平台的关键亮点是,社区是完全开放的,可被搜索引擎索引。对于社区中的对话历史,你不会被任何定价计划所锁定,你所需要查看的是归档。
+
+而且,你在 Gitter 获得的功能还有很多。
+
+### Gitter 的功能
+
+虽然 Gitter 最初是为开发者定制的,但如果你认为它的功能符合你的要求,你可以用它来建立任何类型的社区。
+
+![][8]
+
+ * 由一个去中心化的 Matrix 网络支持。
+ * 可公开加入的社区。
+ * 能够将你的社区限制在选定的用户中。
+ * 深色模式主题。
+ * 访问归档,轻松找到过去的对话。
+ * 能够导出信息/房间信息。
+ * 从你的网络中添加用户(例如,如果你使用 Twitter 登录,你可以选择从 Twitter 邀请用户到你的社区)。
+ * 几个可用的集成(GitHub、Bitbucket、Trello、GitLab、Docker Hub、Discourse 等)。
+ * 支持 GitHub 风格的 Markdown。
+ * 在同一社区下创建更多的房间,以保持事情的条理性。
+ * 轻松地分享/嵌入聊天室的链接。
+ * 帖子系统,以保持对话的整齐。
+ * 删除/报告信息的能力。
+
+总之,Gitter 提供了适合不同社区的各种功能。
+
+而且,通过 GitHub、GitLab 和其他一些网站的集成,它成为开发者和团队的一个完美的合作选择。
+
+![][9]
+
+### 在 Linux 中安装 Gitter.im
+
+开发人员主要专注于网络应用。因此,如果你想避免在你的 Linux 桌面上安装任何东西,请前往 [Gitter.im][10] 并注册/登录以开始使用。
+
+如果你想让它成为一个桌面应用,你可以从其官方网站下载 DEB 包,或者可选择 [Snap 包][11]和 [Flatpak 包][12]。
+
+我在简短的测试中尝试了 Flatpak 包,它在 Ubuntu 20.04 LTS 上运行良好。你可以在你喜欢的任何一个 Linux 发行版上尝试 Flatpak/Snap。
+
+你也可以在你的移动设备上使用它。不幸的是,官方的 Gitter 移动应用已经不再维护。但是,你可以使用 Element 应用来登录房间/社区,考虑到两者都是由同一个去中心化的网络(即Matrix)驱动的。
+
+要了解更多信息,请浏览 [GitLab 页面][13]或前往其网站。
+
+你试过 Gitter 吗?你对它有什么看法?它适合你这个开发者吗?你用它做什么?请在下面的评论中告诉我们你的想法。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/gitter/
+
+作者:[Ankush Das][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://itsfoss.com/author/ankush/
+[b]: https://github.com/lujun9972
+[1]: https://itsfoss.com/nextcloud/
+[2]: https://itsfoss.com/open-source-slack-alternative/
+[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/gitter-dark-mode.png?resize=800%2C536&ssl=1
+[4]: https://itsfoss.com/element/
+[5]: https://matrix.org/
+[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/gitter-light-mode.png?resize=800%2C536&ssl=1
+[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/gitter-communities.png?resize=800%2C398&ssl=1
+[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/gitter-add-friends.png?resize=800%2C468&ssl=1
+[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/gitter-integrations.png?resize=800%2C597&ssl=1
+[10]: https://gitter.im/
+[11]: https://snapcraft.io/gitter-desktop
+[12]: https://flathub.org/apps/details/im.gitter.Gitter
+[13]: https://gitlab.com/gitterHQ/desktop
diff --git a/published/202203/20220317 Ubuntu has a ‘Weird Looking- New Logo.md b/published/202203/20220317 Ubuntu has a ‘Weird Looking- New Logo.md
new file mode 100644
index 0000000000..105d77f72d
--- /dev/null
+++ b/published/202203/20220317 Ubuntu has a ‘Weird Looking- New Logo.md
@@ -0,0 +1,83 @@
+[#]: subject: "Ubuntu has a ‘Weird Looking’ New Logo"
+[#]: via: "https://news.itsfoss.com/ubuntu-new-logo/"
+[#]: author: "Abhishek https://news.itsfoss.com/author/root/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14370-1.html"
+
+Ubuntu 有了一个“怪怪的”新标志
+======
+
+> Ubuntu 已经重新设计了它的标志。不是每个人都会喜欢它。
+
+
+
+Ubuntu 的标志包含了多个元素。对粉丝来说,橙色和紫色是 Ubuntu 的特征。
+
+除此之外,Ubuntu 的标志上还写有 “ubuntu” 的字样,以及一个橙色的图案。
+
+![Ubuntu’s old logo][1]
+
+这个橙色的“朋友圈circle of friends”图案是 Ubuntu 的身份标识,它象征着:自由、协作、精确和可靠。
+
+这个图案实际上是三个朋友或团队成员“搭在一起”的一个俯视图。你可能在体育运动中见到过这样的画面。
+
+![Image courtesy: Unsplash][2]
+
+### Ubuntu 有了一个全新的标志
+
+但这个图案正在发生变化。[OMG! Ubuntu][3] 报道说,Canonical 重新设计了标志的元素、文字和这个“朋友圈”的图案。
+
+在旧的标志中,“朋友圈”图案在粗体 “ubuntu” 文字的右上角。
+
+新的标志改变了这一点。“朋友圈”图案经过重新设计,看起来更平滑,而且被放置在一个橙色的矩形里。文字也有变化,现在使用了更细的字体。“Ubuntu” 中的 “U” 现在是大写的了。
+
+有趣的是,新标志不再包含注册商标符号 “®” 了。
+
+![][4]
+
+Ubuntu 在官方博文中提到了关于新设计的 [这些变化][5]:
+
+> 虽然(在设计上)和之前的朋友圈图案保持相对延续性很重要,但是更新后的版本更精简、更专注、更成熟。现在他们的头部在圆圈里,彼此面对,连接也更加直接,这看起来更合理一些。
+
+你可以在这个视频中看到新标志的动画:
+
+[![][6]](https://img.linux.net.cn/static/video/Ubuntu%20new%20logo%20animation-9DHUyz54flA.mp4)
+
+这个新标志将会出现在 Ubuntu 22.04 发行版中。
+
+### 这不是首次重新设计标志
+
+这并不是 Ubuntu 第一次重新设计它的标志。早在 Ubuntu 项目于 2004 年初创时,“朋友圈”图案有三种颜色:黄色、红色和橙色。在 2010 年的时候,它被重新设计,“搭在一起的人” 变成了白色,他们被一个橙色的圆圈围绕着。
+
+![Image courtesy: OMG! Ubuntu][7]
+
+### 你喜欢这个新标志吗?
+
+这次的新设计距离上一次已经过了 13 年。这个新“朋友圈”图案看起来还不错,但我还是觉得这个矩形背景有点怪怪的。
+
+你怎么看?你喜欢 Ubuntu 的新标志吗,还是说更喜欢以前的那个呢?请在下方评论区分享你的观点吧!
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/ubuntu-new-logo/
+
+作者:[Abhishek][a]
+选题:[lujun9972][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/root/
+[b]: https://github.com/lujun9972
+[1]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/ubuntu-old-logo.png?w=1294&ssl=1
+[2]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/huddle.jpg?w=800&ssl=1
+[3]: https://www.omgubuntu.co.uk/2022/03/ubuntu-has-a-brand-new-logo
+[4]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/new-ubuntu-logo.png?w=780&ssl=1
+[5]: https://ubuntu.com/blog/a-new-look-for-the-circle-of-friends
+[6]: https://i0.wp.com/i.ytimg.com/vi/9DHUyz54flA/hqdefault.jpg?w=780&ssl=1
+[6a]: https://youtu.be/9DHUyz54flA
+[7]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/ubuntu-logo-comparison.jpg?w=1200&ssl=1
\ No newline at end of file
diff --git a/published/202203/20220320 Customize GNOME Desktop in Ubuntu with a Clean Look.md b/published/202203/20220320 Customize GNOME Desktop in Ubuntu with a Clean Look.md
new file mode 100644
index 0000000000..db74a01074
--- /dev/null
+++ b/published/202203/20220320 Customize GNOME Desktop in Ubuntu with a Clean Look.md
@@ -0,0 +1,153 @@
+[#]: subject: "Customize GNOME Desktop in Ubuntu with a Clean Look"
+[#]: via: "https://www.debugpoint.com/2022/03/customize-gnome-clean-look-2022-1/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14393-1.html"
+
+在 Ubuntu 中定制简洁的 GNOME 桌面
+======
+
+> 本教程为你提供了一些简单的步骤来自定义 GNOME 桌面,用最少的努力打造干净的外观。下面如何做的。
+
+
+
+如果你对最喜欢的 GNOME 桌面的样子已经看厌烦了,那么你就来对了。让我们安装一些主题图标并进行一些调整以提升你的桌面格调。我们将转换如下桌面(GNOME 40.5 和 Ubuntu 21.10)。
+
+![Ubuntu Desktop with GNOME – Before Customization][1]
+
+这个定制教程将使用漂亮的 Colloid GTK 主题、Mkos-Big-Sur 图标、一个带有额外扩展的酷炫光标主题,以及 Conky。
+
+### 自定义 GNOME 桌面,用简洁的外观提升它的形象
+
+#### 安装
+
+首先,通过在终端运行以下命令来设置 GNOME Shell 扩展。
+
+```
+sudo apt install chrome-gnome-shell
+```
+
+然后 [打开这个页面][2],将 GNOME 扩展的插件添加到你的浏览器(Chrome/Firefox)。
+
+![Add Browser Add-on for GNOME Shell Extension][3]
+
+安装“扩展”应用([Flatpak][4]),你可能需要它来改变 GNOME 扩展的设置。
+
+之后,从终端使用以下命令安装 GNOME 优化工具GNOME Tweaks。我们将使用这个工具来改变主题和其他设置。
+
+```
+sudo apt install gnome-tweaks
+```
+
+[下载 Colloid GTK 主题][5]。下载后解压文件。然后将解压后的文件夹复制到你主目录下的 `~/.themes`。如果文件夹不存在,请创建它。完成这些后,打开终端,运行 `install.sh` 文件。
+
+[下载 Mkos-Big-Sur 图标主题][6]。下载完成后,解压文件并将父文件夹复制到你的主目录中的 `~/.icons`。
+
+[下载 Vimix 光标主题][7],并按照上述步骤操作。将提取的文件夹复制到 `~/.icons` 目录中。然后打开一个终端,运行 `install.sh` 文件。
+
+现在,安装 Conky 和一些扩展,这些扩展最终会给你的 GNOME 桌面一个干净的外观。要安装 Conky 和 Conky 管理器,打开终端提示符并运行以下命令。
+
+```
+sudo apt install conky
+sudo add-apt-repository ppa:tomtomtom/conky-manager
+sudo apt update && sudo apt install conky-manager2
+```
+
+现在,打开下面每个扩展的链接,依次安装它们。要安装时,打开页面,点击 ON/OFF 切换开关(见下图)。它将要求你提供管理员密码和安装许可。
+
+* [Move Clock][8]
+* [Dash to Dock][9]
+* [Tray Icons][10]
+* [Arc Menu][11]
+* [User Themes][12]
+
+![GNOME Extension – Page][13]
+
+#### 配置
+
+在你完成上述步骤后,做一些基本配置。你可能会看到在你安装上面的 GNOME 扩展时,有些变化已经生效了。例如,在安装上面的 Move Clock 扩展时,时钟应该已经被移到了右边。
+
+##### 优化工具
+
+打开优化GNOME Tweaks工具(从应用菜单中搜索“Tweaks”),进入“外观Apperance”。
+
+将应用主题改为 “Colloid Dark”,光标主题为 “Vimix Cursors”,图标主题为 “Mkos-big-sur”,Shell 主题为 “Colloid Dark”。如果你愿意,你可以选择浅色主题和不同的选项。
+
+![Apply Themes][15]
+
+##### Arc 菜单
+
+打开“扩展Extension”应用,进入 Arc 菜单设置Arc Menu Settings。
+
+将菜单布局改为 “替代菜单布局Alternative Menu Layout > Raven”。
+
+将应用的菜单按钮改成你喜欢的一些图标。在本指南中,我从 [这里][16] 下载了一个 GNOME 图标。并通过 Arc 菜单的 “设置Settings > 按钮外观Button Appearance > 浏览图标Browse Icon”应用它。它应该看起来像这样。
+
+![Arc Menu – Raven][17]
+
+从“扩展Extension”程序中打开 “Dash to Dock” 设置。在“外观Appearance”选项卡中,改变以下项目:
+
+* 启用收缩到 Dash 的功能
+* 自定义窗口计数指示器为 Dash
+* 启用自定义 Dash 颜色
+* 自定义不透明度为固定
+* 不透明度为 12%
+
+在位置和大小选项卡中,将停靠区位置改为底部,图标大小限制为 39px。
+
+如果你喜欢,你可以启动 Conky,并下载一张与 Colloid 主题相配的漂亮墙纸。在这个演示中,我[选择了一张漂亮的灰色墙纸][18],它与深色主题搭配看起来非常漂亮。
+
+### 结果
+
+在所有的配置之后,如果一切顺利,你的桌面应该是这样的。
+
+![GNOME Customization in Ubuntu with a simple look-1][19]
+
+![GNOME Customization in Ubuntu with a simple look-2][20]
+
+![GNOME Customization in Ubuntu with a simple look-3][21]
+
+你可以通过多种设置组合来玩转这个主题的不同变体。并创造一个更适合你的外观。
+
+我希望这个指南能帮助你把你的 GNOME 桌面改造成简洁的外观。如果你喜欢这个设置,请在下面的评论中告诉我。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/03/customize-gnome-clean-look-2022-1/
+
+作者:[Arindam][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://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lujun9972
+[1]: https://www.debugpoint.com/wp-content/uploads/2022/03/Ubuntu-Desktop-with-GNOME-Before-Customization-1024x582.jpg
+[2]: https://extensions.gnome.org/
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/03/Add-Browser-Add-on-for-GNOME-Shell-Extension.jpg
+[4]: https://dl.flathub.org/repo/appstream/org.gnome.Extensions.flatpakref
+[5]: https://github.com/vinceliuice/Colloid-gtk-theme/archive/refs/heads/main.zip
+[6]: https://github.com/zayronxio/Mkos-Big-Sur/archive/refs/heads/master.zip
+[7]: https://github.com/vinceliuice/Vimix-cursors
+[8]: https://extensions.gnome.org/extension/2/move-clock/
+[9]: https://extensions.gnome.org/extension/307/dash-to-dock/
+[10]: https://extensions.gnome.org/extension/2890/tray-icons-reloaded/
+[11]: https://extensions.gnome.org/extension/3628/arcmenu/
+[12]: https://extensions.gnome.org/extension/19/user-themes/
+[13]: https://www.debugpoint.com/wp-content/uploads/2018/05/GNOME-Extension-Page.png
+[15]: https://www.debugpoint.com/wp-content/uploads/2022/03/Apply-Themes.jpg
+[16]: https://icons.iconarchive.com/icons/tatice/operating-systems/32/Gnome-icon.png
+[17]: https://www.debugpoint.com/wp-content/uploads/2022/03/Arch-Menu-Raven.jpg
+[18]: https://i.redd.it/1ttvv79apo851.png
+[19]: https://www.debugpoint.com/wp-content/uploads/2022/03/GNOME-Customization-in-Ubuntu-with-a-simple-look-1-1024x579.jpg
+[20]: https://www.debugpoint.com/wp-content/uploads/2022/03/GNOME-Customization-in-Ubuntu-with-a-simple-look-2-1024x580.jpg
+[21]: https://www.debugpoint.com/wp-content/uploads/2022/03/GNOME-Customization-in-Ubuntu-with-a-simple-look-3-1024x576.jpg
+[22]: https://t.me/debugpoint
+[23]: https://twitter.com/DebugPoint
+[24]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[25]: https://facebook.com/DebugPoint
\ No newline at end of file
diff --git a/published/202203/20220321 Build Your Own Handheld Linux PC with Raspberry Pi and this Open Source Project.md b/published/202203/20220321 Build Your Own Handheld Linux PC with Raspberry Pi and this Open Source Project.md
new file mode 100644
index 0000000000..db61c7cd14
--- /dev/null
+++ b/published/202203/20220321 Build Your Own Handheld Linux PC with Raspberry Pi and this Open Source Project.md
@@ -0,0 +1,81 @@
+[#]: subject: "Build Your Own Handheld Linux PC with Raspberry Pi and this Open Source Project"
+[#]: via: "https://news.itsfoss.com/penkesu-handheld-linux-pc/"
+[#]: author: "John Paul https://news.itsfoss.com/author/john/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14408-1.html"
+
+用树莓派打造你的手持 Linux 电脑
+======
+
+> Penkesu 电脑:一个自制的复古式手持 Linux 电脑。
+
+
+
+你是否曾希望有一台适合你手持的、带有键盘的 Linux 笔记本电脑?如果是这样,那么你幸运了。一位硬件设计师创造了这样一个设备,并将其设计开源,让任何人都可以在家里制作它。
+
+### 它是什么?
+
+![][1]
+
+Penkēsu 电脑(Penkēsu 是日语中“铅笔盒”的意思)是由 [Penk Chen][2] 设计的。如果这个名字听起来很熟悉,他就是 [CutiePi][3] 背后的设计师。
+
+根据该网站称,Penk 创建这个项目是因为:
+
+> 自从 CutiePi 平板电脑成功获得了资金并开始发货后,我觉得有必要干一个新的项目,一个我不需要太担心商业可行性、并提醒自己做手工的初衷的项目。可以说,这是一个“反弹”项目。
+
+他还说,他目前没有任何大规模生产 Penkēsu 的计划,所以他把该规划开源了。“我想公布所有的设计和规划,这样就可以给任何有兴趣制作一个的人足够的信息。”
+
+### 零件
+
+![][5]
+
+Penk 围绕一个 7.9 英寸的触摸屏和一个定制键盘设计了 Penkēsu。内部结构由树莓派 Zero 2 W 和锂聚合物电池供电。树莓派 Zero 2 W 有一个 1GHz 的 ARM 四核 ARM Cortex-A53 处理器和 512MB 的内存。花上 15 美元,这块树莓派应该可以运行大多数为它设计的 Linux 发行版。
+
+有趣的是,Penk 说,“我的 3D 打印机不够精确,无法打印出一个功能齐全的铰链锁”。因此,他决定使用来自任天堂 GBA SP 的替换铰链。
+
+看起来最困难的部分是键盘,这涉及到一个定制的 PCB。Penk 确实注意到,“如果希望使用其他 40% 键盘来制作,可以通过编辑 CAD 文件和调整机箱中的隔间大小来完成”。
+
+以下是所需零件的完整清单:
+
+* 显示器
+ * 微雪 7.9 英寸电容式触摸屏
+ * Adafruit DIY HDMI 电缆部件 - 直角适配器、Mini-HDMI 适配器和 20 厘米带状电缆
+* 外壳
+ * GBA SP 替代铰链
+ * 3D 打印部件(STL 文件和 STEP 文件)
+* 电子产品
+ * 树莓派 Zero 2 W
+ * 3.7V 606090(或类似尺寸)锂聚合物电池
+ * Adafruit PowerBoost 1000C
+* 键盘
+ * 凯华 Choc 矮轴 V1 x 48
+ * MBK Choc 矮轴键帽 x 48
+ * 1N4148 二极管 x 48
+ * Arduino Pro Micro x 1
+ * PCB x 1(gerber 文件和 QMK 固件)
+
+详见 [网站][4] 的完整细节。
+
+你用树莓派做了什么项目?请在下面的评论中分享。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/penkesu-handheld-linux-pc/
+
+作者:[John Paul][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://news.itsfoss.com/author/john/
+[b]: https://github.com/lujun9972
+[1]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/penkesu.computer-31.jpg?w=1000&ssl=1
+[2]: https://github.com/penk
+[3]: https://itsfoss.com/cutiepi-open-source-tab/
+[4]: http://penkesu.computer/
+[5]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/penkesu.computer-parts.jpg?w=1000&ssl=1
\ No newline at end of file
diff --git a/published/202203/20220321 Linux Kernel 5.17 Released. This is What-s New.md b/published/202203/20220321 Linux Kernel 5.17 Released. This is What-s New.md
new file mode 100644
index 0000000000..7c511aced6
--- /dev/null
+++ b/published/202203/20220321 Linux Kernel 5.17 Released. This is What-s New.md
@@ -0,0 +1,134 @@
+[#]: subject: "Linux Kernel 5.17 Released. This is What’s New"
+[#]: via: "https://www.debugpoint.com/2022/03/linux-kernel-5-17/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "wxy"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14384-1.html"
+
+Linux 内核 5.17 发布及新变化
+======
+
+> Linux 内核 5.17 已经发布,它具有更好的硬件支持和核心模块改进。下面是对新功能的简要介绍,并附有下载和安装细节。
+
+![Linux 内核 5.17 带来了更多的硬件兼容性][1]
+
+Linux Torvalds [宣发了][2] Linux 内核 5.17,这是 2022 年第二个稳定版主线内核。这个版本的内核模块中引入了对新处理器、显卡、存储和其他硬件组件的支持。
+
+比内核 5.16 发布后的时间表稍有延迟,Linux 主线内核 5.17 现在可供下载了。这些更新包括对 AMD Zen 系列设备的温度支持;长期存在的软盘挂起错误,几个 ARM/SoC 支持以及各个子系统的性能改进。
+
+我们已经在第一个候选版本发布时介绍了大部分变化,下面是对 Linux 内核 5.17 新特性的快速回顾。
+
+### Linux 内核 5.17 的新内容
+
+#### 处理器
+
+Linux 内核中的 ARM64 架构现在包括了内核并发净化器Kernel Concurrency Sanitizer(KCSAN)。KSCAN 是一个竞争条件检测器,已经支持了其他架构。而现在 ARM64 也在支持名单上了。另外,可扩展矩阵扩展Scalable Matrix Extensions(SME)的初始工作有望为矩阵操作提供更好、更快的支持。
+
+AMD [带来了][3] 基于 k10temp 的 CPU 温度监控,用于 AMD Zen 系列第 19 代 CPU 型号。
+
+一组广泛的 Arm/SoC 支持 [进入了][4] Linux 内核 5.17 中。其中主要包括新的 Snapdragon 8 Gen 1 和 X65 平台。其他 SoC 包括恩智浦 i.MX8ULP、德州仪器 J721S2 和瑞萨 R-Car S4-8。
+
+CPU 的重大变化之一是加入了 AMD 的 P-state 驱动,这是与 Valve 为 Steam Deck 合作开发的。这将提供更好的电源效率,因为透过 ACPI 协作处理器性能控制Collaborative Processor Performance Controls(CPPC)支持,可以更加细化的控制电源。
+
+这个内核中另一个重要的 RISC-V 变化是支持 sv48,提供了 48 位虚拟地址空间。这使得内核可以对高达 128TB 的虚拟地址空间进行寻址。
+
+这个版本带来了很多笔记本电脑、平板电脑的驱动更新。[这里][5] 有一个列表,主要内容是:
+
+- 为华硕 ROG 笔记本电脑增加了自定义风扇曲线支持。
+- 增加了对通用手写笔计划Universal Stylus Initiative(USI)和 NVIDIA Tegra 平板电脑的支持。
+- 对基于 AMD 的笔记本电脑的一些性能改进和修复,涉及到睡眠和声音驱动。
+
+#### 显卡
+
+英特尔的 Alder Lake P 显卡经过前一年的多次迭代,现在已经在主线内核上稳定了。这个内核引入了 [对 Raptor Lake S 显卡的首批支持补丁][6]。
+
+英特尔的 Gen Icelake 显卡家族 [获得了][7] 可变刷新率/自适应同步支持。
+
+一些较新的笔记本电脑带来了内置的隐私屏幕,预计更多的 OEM 厂商会效仿。另外,值得注意的是,GNOME 桌面和其他公司正计划在之后使用这一隐私功能。所以,为了这个以隐私为中心的功能,最初的架构和代码工作都已经包含在这个内核版本中了。
+
+你可以在 [这里][9] 找到一个很好的显卡驱动更新列表。
+
+#### 存储
+
+在内核的每个版本中都会对所有主要的文件系统和存储技术进行增量更新。这个版本也会有一些:
+
+ * 主要的更新包括流行的 EXT4 文件系统使用新的 Linux 挂载 API。
+ * 像往常一样,[F2FS][10]、[Btrfs][11] 和 [XFS][12] 的性能得到改善。
+ * FS-Cache 和 CacheFiles 模块 [做了][13] 重大重写。
+
+#### 杂项硬件更新
+
+今天谁还在使用软盘?我相信仍然有一些特定的商业用例仍在使用软盘。所以,这就给我们带来了这个特定的补丁,在这个内核版本中。内核中存在一个长期的错误:当系统试图读取一个坏掉的软盘时可能会挂起。所以,这个老毛病终于在这个版本中得到了解决,我希望能让少数仍然使用这种古老存储介质的人为此驻足一下。
+
+其他值得注意的杂项硬件更新包括:
+
+ * 任天堂 GameCube/Wii/Wii U 实时时钟 [驱动][14]。
+ * 一个通用的 USB GNSS(全球导航卫星系统Global Navigation Satellite System)驱动程序。
+ * Cirrus CS35L41 高清音频编解码器 [驱动][15]。
+ * 许多英特尔 Wi-Fi 驱动程序 [改进][16]。
+ * 英特尔 Alder Lake N [音频][17] 支持。
+
+### 如何下载和安装 Linux 内核 5.17
+
+我们总是建议不要在你的稳定系统中安装最新的主线内核,除非你拥有特定的新硬件或想做实验。对于普通用户来说,最好是通过你的 Linux 发行版(如 Ubuntu、Fedora)的官方部署渠道等待内核的更新。
+
+如果你仍然想安装,请按照下面的说明来安装 Linux 内核 5.17。
+
+访问 [主线内核页面][18]。
+
+有两种类型的构建可供选择:**通用**的和**低延迟**的。对于标准的系统,你可以下载通用的构建,大部分时间都可以工作。对于音频录制和其他需要低延迟的设置,请下载低延迟的。
+
+通过终端下载以下四个通用软件包并安装:
+
+```
+wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.17/amd64/linux-headers-5.17.0-051700-generic_5.17.0-051700.202203202130_amd64.deb
+wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.17/amd64/linux-headers-5.17.0-051700_5.17.0-051700.202203202130_all.deb
+wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.17/amd64/linux-image-unsigned-5.17.0-051700-generic_5.17.0-051700.202203202130_amd64.deb
+wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.17/amd64/linux-modules-5.17.0-051700-generic_5.17.0-051700.202203202130_amd64.deb
+```
+
+安装完毕后,重新启动系统。
+
+低延迟和其他架构(ARM)的安装指令是一样的。替换上述 `wget` 命令中的软件包名称。你可以在主线内核页面找到它们。
+
+对于 Arch Linux 用户来说,预计 Linux 内核 5.17 发布包将在 2022 年 4 月第一周的 Arch .iso 月度刷新中到达。
+
+随着这个版本的发布,合并窗口将为接下来 Linux 内核 5.18 打开。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/03/linux-kernel-5-17/
+
+作者:[Arindam][a]
+选题:[lujun9972][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/lujun9972
+[1]: https://www.debugpoint.com/wp-content/uploads/2022/03/kernel517-1024x576.png
+[2]: https://lkml.org/lkml/2022/3/20/213
+[3]: https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git/commit/?h=hwmon-next&id=6482dd78c00c6d604ac1c757fb2d8a2be2878654
+[4]: https://lore.kernel.org/linux-arm-kernel/CAK8P3a0RDZpLtWjMEU1QVWSjOoqRAH6QxQ+ZQnJc8LwaV7m+JQ@mail.gmail.com/
+[5]: https://lore.kernel.org/lkml/aea4c26b-25a1-9480-f780-7eb3502a4ce4@redhat.com/T/#u
+[6]: https://lore.kernel.org/dri-devel/87ee6f5h9u.fsf@intel.com/
+[7]: https://lists.freedesktop.org/archives/intel-gfx/2021-November/284109.html
+[8]: https://www.debugpoint.com/2022/01/linux-kernel-5-17-rc1/
+[9]: https://lists.freedesktop.org/archives/dri-devel/2022-January/336492.html
+[10]: https://lore.kernel.org/lkml/YedlHVEa4sdbvB2F@google.com/
+[11]: https://lore.kernel.org/lkml/cover.1641841093.git.dsterba@suse.com/
+[12]: https://lore.kernel.org/lkml/YdyxjTFaLWif6BCM@mit.edu/
+[13]: https://lore.kernel.org/lkml/510611.1641942444@warthog.procyon.org.uk/
+[14]: https://lore.kernel.org/lkml/Yen7oaDXAbd4tFOD@piout.net/
+[15]: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git/commit/?h=for-next&id=7b2f3eb492dac7665c75df067e4d8e4869589f4a
+[16]: https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=bc11517bc8219314948780570ec92814d14d6602
+[17]: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git/commit/?h=for-next&id=4d5a628d96532607b2e01e507f951ab19a33fc12
+[18]: https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.17
+[19]: https://t.me/debugpoint
+[20]: https://twitter.com/DebugPoint
+[21]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[22]: https://facebook.com/DebugPoint
diff --git a/published/202203/20220321 Mabox Linux - Beautiful Arch Linux with Openbox -Review.md b/published/202203/20220321 Mabox Linux - Beautiful Arch Linux with Openbox -Review.md
new file mode 100644
index 0000000000..7a8cbf0b0b
--- /dev/null
+++ b/published/202203/20220321 Mabox Linux - Beautiful Arch Linux with Openbox -Review.md
@@ -0,0 +1,131 @@
+[#]: subject: "Mabox Linux – Beautiful Arch Linux with Openbox [Review]"
+[#]: via: "https://www.debugpoint.com/2022/03/mabox-linux-2022/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14416-1.html"
+
+Mabox Linux:带有 Openbox 的美丽的 Arch Linux
+======
+
+
+
+> Mabox Linux 是一个 Manjaro Linux 重制版,带有一个轻量级的 Openbox 窗口管理器,已经预配置了主题和实用程序。我们将在这篇文章中点评这个发行版。
+
+如果你喜欢窗口管理器,也喜欢基于滚动发布的 Arch Linux,并且正在寻找一个具有这种组合的现成 Linux 发行版,可以试试 Mabox Linux。Mabox Linux 是建立在很棒的 Manjaro Linux 之上的,带有 Openbox 窗口管理器和一些原生实用程序。
+
+由于采用了 Openbox,这个 Linux 发行版在维持超轻量级的资源消耗的同时,也提供了一个漂亮的桌面。改编自 BunsenLabs,并受 Crunchbang 启发的 Mabox Linux 工具也带来了他们的一些应用。
+
+让我们来深入了解一下这个了不起的 Linux 发行版。
+
+### Mabox Linux 点评
+
+#### 安装和现场介质
+
+Mabox .ISO 的优势之一是它在现场介质Live medium启动过程中为你提供了自由和专有的驱动程序的两种选择。如果你的系统中有英伟达或其他硬件,这对你有帮助。
+
+现场桌面Live desktop让你可以通过 Calamares 安装程序来安装 Mabox。在标准硬件上,安装大约需要 3 到 4 分钟,在我的测试中没有遇到错误。
+
+安装程序也会检测测试设备中的其他操作系统。
+
+#### 具有自定义的外观和感受
+
+Mabox 带来了一个预配置的 Openbox 窗口管理器。这个搭配的版本看起来不错,有深色外观和带面板的菜单。
+
+顶部的面板是用 Tint2 构建的,分成两个部分。左边的面板为你提供了主菜单、文件管理器、网页浏览器的快捷方式。面板上的鼠标左键和右键有不同的菜单。右边的面板包含资源监视器、音量控制、截屏快捷方式和电源菜单。顶部面板不是连续的,在某些主题下,应用程序窗口会停留在顶部。
+
+![Mabox Linux with Nord Theme][1]
+
+在桌面的右边部分,预配置的 Conky 脚本可以给你提供系统信息,包括日期、时间、存储和其他显示。
+
+欢迎窗口为你提供了关于设置、帮助和支持的快速启动快捷方式,并有文档链接。
+
+窗口管理器适合于键盘操作,有时不便于用鼠标操作。但由于 Openbox 和预配置的 Mabox,你可以轻松地使用鼠标,同时通过灵巧的键盘快捷方式提高你的工作效率。
+
+桌面上的右键菜单为你提供了轻松的搜索和启动选项。
+
+![Search and Launch from desktop][2]
+
+如果你不喜欢默认的外观,你可以通过 Openbox 和 Tint2 面板配置工具,只需点击几下就可以自行定制。
+
+![Main Application Menu][3]
+
+Mabox 预设有不同的主题,包括面板和 Concky 脚本。你可以点击并应用这些令人惊叹的 Mabox 主题。如果你不想陷入自己配置面板、颜色和 Conky 的麻烦中,这是一个很好的功能。
+
+一套好的墙纸可以让你随时让它在短时间内看起来更加美妙。
+
+![Mabox Themes][5]
+
+#### 应用
+
+Mabox Linux 将所有必要的应用打包在其安装镜像中。以下是所包含的基本应用的简单列表。
+
+ * Terminator 终端
+ * Xpad 快速写字板
+ * PCManFM 文件管理器
+ * FSearch 桌面文件搜索
+ * Flameshot 截图工具
+ * Geany 文本编辑器
+ * Audacious 音乐播放器
+ * Firefox 网页浏览器
+
+Mabox 还包括控制中心,以有效管理你的系统。Mabox 控制中心可以让你添加/删除应用、更新你的系统、启动窗口管理组件的几个配置窗口,诸如此类。
+
+如果你找不到某个设置,你可以在 Mabox 控制中心通过其系统设置的逻辑分组轻松找到它们。
+
+![Mabox Control Center][6]
+
+#### 性能如何?
+
+Mabox Linux 的性能令人印象非常深刻。由于采用了 Openbox 窗口管理器,Mabox 只用了大约 350MB 多点的内存,而 CPU 在空闲状态下徘徊在 2% 到 3%。
+
+默认安装需要大约 5.39GB 的磁盘空间,这对于预装的这些应用和设置程序来说是不可思议的。
+
+在如此优化下,以至于它消耗内存最多的应用是 Xorg,有 90MB。
+
+所以,我想尝试一下重度使用下的性能。而这个性能也是令人惊讶的。我打开了一个文件管理器、带三个标签的 Firefox、一个用于开发的文本编辑器、一个终端窗口和控制中心。在这样的工作负荷下,Mabox 只消耗了大约 920MB 的内存和 6% 到 7% 的 CPU。
+
+![Mabox Linux Heavy Workload Performance][7]
+
+在 [点评几个发行版][8] 的过程中,这是我第一次发现一个发行版在重度工作负荷下不超过 1GB 内存的情况。但在不同的使用情况下,结果可能有所不同。无论如何,这个指标还是令人印象深刻。
+
+### Mabox Linux 可以作为日常使用吗?
+
+如果你对带有窗口管理器的 Arch Linux 比较熟悉和适应,你可以把 Mabox Linux 作为日常使用。有几个打包好的带有窗口管理器的 Arch Linux 发行版,而 Mabox 是其中最好的一个。
+
+![Mabox Linux Windows 95 pre-configured theme][9]
+
+### 总结
+
+我认为 Mabox Linux 团队将所有组件与 Arch Linux 打包在一起,并呈现出一个漂亮的 Linux 发行版,做得非常好。它的外观惊艳,而消耗的系统资源却很少。有了基于 Arch Linux 的滚动发布功能,我认为你可以信赖这个发行版的长期使用。
+
+你可以从它的 [官方网页][10] 下载 Mabox Linux。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/03/mabox-linux-2022/
+
+作者:[Arindam][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://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lujun9972
+[1]: https://www.debugpoint.com/wp-content/uploads/2022/03/Mabox-Linux-with-Nord-Theme-1024x581.jpg
+[2]: https://www.debugpoint.com/wp-content/uploads/2022/03/Search-and-Launch-from-desktop.jpg
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/03/Main-Application-Menu.jpg
+[5]: https://www.debugpoint.com/wp-content/uploads/2022/03/Mabox-Themes.jpg
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/03/Mabox-Control-Center.jpg
+[7]: https://www.debugpoint.com/wp-content/uploads/2022/03/Mabox-Linux-Heavy-Workload-Performance-1024x508.jpg
+[8]: https://www.debugpoint.com/tag/linux-distro-review
+[9]: https://www.debugpoint.com/wp-content/uploads/2022/03/Mabox-Linux-Windows-95-preconfigured-theme-1-1024x577.jpg
+[10]: https://maboxlinux.org/
+[11]: https://t.me/debugpoint
+[12]: https://twitter.com/DebugPoint
+[13]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[14]: https://facebook.com/DebugPoint
\ No newline at end of file
diff --git a/published/202203/20220322 Junction- An Application Switcher to Open Files and Links.md b/published/202203/20220322 Junction- An Application Switcher to Open Files and Links.md
new file mode 100644
index 0000000000..5d26c6a4b3
--- /dev/null
+++ b/published/202203/20220322 Junction- An Application Switcher to Open Files and Links.md
@@ -0,0 +1,107 @@
+[#]: subject: "Junction: An Application Switcher to Open Files and Links"
+[#]: via: "https://itsfoss.com/junction/"
+[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14414-1.html"
+
+Junction:一个可以打开文件和链接的应用切换器
+======
+
+> 这是一个有趣的工具,可以轻松地访问文件或打开链接。让我们来了解一下。
+
+对于那些涉足使用多个应用访问不同文件和使用各种浏览器打开链接的用户来说,其工作流程往往没那么多顺畅。
+
+你可能已经习惯了,但这可能不是完成事情的最快方式。
+
+认识一下 **Junction**,这是一个应用切换器,帮助你用最喜欢的应用快速打开文件/链接。
+
+### Junction: 开源的 Linux 应用或浏览器切换器
+
+![][1]
+
+虽然我们可以在打开文件时使用右键菜单中的 “用……打开” 选项来选择某个应用,但这并不是最快的方法。
+
+有了 [Junction][2],你不必寻找希望用什么程序打开该文件(或不断改变默认值),而只需将 “Junction” 应用设置为你的默认值。
+
+这样,每当你打开一个链接或访问一个文件、启动电子邮件编辑器等,Junction 应用就会启动,向你显示你可能想要访问的相关应用。
+
+此外,它还支持键盘导航,使其成为键盘高级用户的一个有益补充。
+
+![][3]
+
+基本上,每次你想在不同的应用中访问文件/链接时,它都能为你节省一些点击次数。
+
+### Junction 的特点
+
+![][4]
+
+它是一个适合于特定用户群的简单工具。你可能觉得它是多余的,也可能不是,但在你想尝试的情况下,它的功能应该可以弥补它的不足:
+
+* 通过启动器/切换器选择要打开的应用
+* 在启动前显示文件位置
+* 在打开 URL 之前能够编辑它
+* 提示不安全的链接
+* 键盘导航
+* 能够在切换器/启动器中添加更多的应用(它也会记住添加的内容,以便下次使用)
+
+![][5]
+
+### 使用 Junction 来访问文件和链接
+
+要设置它,你需要启动应用并将 Junction 设置为 Web 的默认值,如下图所示。
+
+![][6]
+
+要在任何文件类型上使用它,你可以前往各自的文件属性,并为它改变默认的应用,如下图所示:
+
+![][7]
+
+对于链接,如上面的截图所示,你可以通过点击 “Test Junction” 来测试它。或者,你可以点击其他应用的任何链接,看看 Junction 应用的运行情况。
+
+下面是你试图点击一个链接并让 Junction 帮助你选择时的情况:
+
+![][8]
+
+### 在 Linux 中安装 Junction
+
+Junction 主要以 Flatpak 应用的形式提供。因此,你可以从 [Flathub][9] 安装软件包,或者在软件中心寻找它(如果 Flatpak 集成完毕)。
+
+考虑到你已经设置了 [Flatpak][10],你可以输入以下命令来安装它:
+
+```
+flatpak install flathub re.sonny.Junction
+```
+
+你也可以查看它的 [GitHub 页面][11],了解更多的使用案例或利用它的技巧/窍门。
+
+- [Junction][9]
+
+你认为像 Junction 这样的应用切换器怎么样?它对你有用吗?请在下面的评论中告诉我你的想法,或简单的一句“谢谢”。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/junction/
+
+作者:[Ankush Das][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://itsfoss.com/author/ankush/
+[b]: https://github.com/lujun9972
+[1]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/Junction-ft.png?resize=800%2C450&ssl=1
+[2]: https://apps.gnome.org/app/re.sonny.Junction/
+[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/junction-action-screenshot.jpg?resize=800%2C450&ssl=1
+[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/junction-app-screenshot.jpg?resize=800%2C455&ssl=1
+[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/junction-app-more.jpg?resize=800%2C540&ssl=1
+[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/junction-app.jpg?resize=800%2C586&ssl=1
+[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/junction-properties.png?resize=800%2C511&ssl=1
+[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/junction-link-click.jpg?resize=800%2C505&ssl=1
+[9]: https://flathub.org/apps/details/re.sonny.Junction
+[10]: https://itsfoss.com/flatpak-guide/
+[11]: https://github.com/sonnyp/Junction
diff --git a/published/202203/20220323 Clear Linux is the First Distro to Offer GNOME 42.md b/published/202203/20220323 Clear Linux is the First Distro to Offer GNOME 42.md
new file mode 100644
index 0000000000..c2d96e2463
--- /dev/null
+++ b/published/202203/20220323 Clear Linux is the First Distro to Offer GNOME 42.md
@@ -0,0 +1,73 @@
+[#]: subject: "Clear Linux is the First Distro to Offer GNOME 42"
+[#]: via: "https://news.itsfoss.com/clear-linux-gnome-42/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14400-1.html"
+
+Clear Linux 是首个提供 GNOME 42 的发行版
+======
+
+> 击败了 Arch 和 Fedora,Clear Linux 的最新版本提供了 GNOME 42 的稳定版本。
+
+
+
+Clear Linux 是一个开源的滚动发布的发行版,它为云计算和边缘计算的开发者量身定制。
+
+你可能不知道,Clear Linux 是一个英特尔Intel的项目。它针对英特尔的处理器做了优化,并且提供了一个容器快速部署的环境。
+
+它同时支持了桌面和服务器(AWS、Google Compute Engine 和 Azure Hyper-V 等)。
+
+> **注意:** _与即将发布的 Fedora 36 工作站版和 Ubuntu 22.04 长期支持版相比,Clear Linux 算不上是一个完美的替代桌面。如果你对这个发行版感兴趣,我建议你先在虚拟机上尝试一下。_
+
+令人惊讶的是,Clear Linux 的最新发布版看起来会包括 GNOME 42(稳定版)。
+
+更不用提,Clear Linux 比 Arch 和 Fedora 更新地还要快,提供了最新的 GNOME 稳定发布版。
+
+### Clear Linux 上的 GNOME 42
+
+![][1]
+
+你可以期待在 Clear Linux 上看到 [最好的 GNOME 42 特性][2]。
+
+根据我的简单使用,其中大部分功能都符合你对 GNOME 42 的预期。
+
+![][3]
+
+文件管理器、日历、照片、天气以及许多其他应用程序都反映出,最新的 GNOME 42 版本升级到了 GTK 4。
+
+当然,在 Clear Linux 上,默认的桌面壁纸会有些不同,但你可以获取到同一套壁纸集的浅色/深色不同版本。
+
+![][4]
+
+我在虚拟机上测试过,它的运行情况和预期的一致,没有显著的缺陷。
+
+如果你已经在使用 Clear Linux 了,或者对它好奇,想要了解更多,你可以在它的 [版本发布说明][5] 中找到更多细节,包括更新的软件包和其他变化。
+
+### 下载附带 GNOME 42 的 Clear Linux
+
+或许你在它的官网下载页面找不到最新的发布版。但是,你可以在 [官方下载仓库][6] 中找到它。
+
+你可以根据自身需求(服务器/桌面),下载到对应的 ISO 文件。现在就开始体验吧!
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/clear-linux-gnome-42/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][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/lujun9972
+[1]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/clearlinux-gnome-42-home.jpg?w=1269&ssl=1
+[2]: https://news.itsfoss.com/gnome-42-features/
+[3]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/clearlinux-gnome-42.png?w=868&ssl=1
+[4]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/clear-linux-appearance.jpg?w=794&ssl=1
+[5]: https://download.clearlinux.org/releases/36060/clear/RELEASENOTES-36030-to-36060
+[6]: https://download.clearlinux.org/releases/36060/clear/
diff --git a/published/202203/20220323 Xonsh Shell Combines the Best of Bash Shell and Python in Linux Terminal.md b/published/202203/20220323 Xonsh Shell Combines the Best of Bash Shell and Python in Linux Terminal.md
new file mode 100644
index 0000000000..8fd036f448
--- /dev/null
+++ b/published/202203/20220323 Xonsh Shell Combines the Best of Bash Shell and Python in Linux Terminal.md
@@ -0,0 +1,109 @@
+[#]: subject: "Xonsh Shell Combines the Best of Bash Shell and Python in Linux Terminal"
+[#]: via: "https://itsfoss.com/xonsh-shell/"
+[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14390-1.html"
+
+Xnosh Shell:在 Linux 终端结合 Bash Shell 和 Python 的最佳特性
+======
+
+
+
+最受欢迎的 shell 是什么?我猜你会回答 bash 或者 zsh,没错,的确如此。
+
+UNIX 和 Linux 系统上有许多可用的 shell,包括 Bash、Ksh、Zsh、Fish 等等。
+
+最近,我碰到了另外一个 shell,它结合了 Python 和 bash,还蛮特别的。
+
+### Xonsh shell,为喜爱 Python 的 Linux 用户而打造
+
+[Xonsh][1] 是一个使用 Python 编写的跨平台 shell 语言和命令提示符。
+
+它结合了 Python 和 Bash shell,因此你可以在这个 shell 中直接运行 Python 命令(语句)。你甚至可以把 Python 命令和 shell 命令混合起来使用。
+
+![][2]
+
+听起来不错吧?如果你是一个 Python 程序员的话,你应该会更加兴奋。
+
+### 在 Linux 上安装 Xonsh shell
+
+有多种方式可以在 Linux 系统上安装 Xonsh shell。
+
+你可以使用软件包管理器安装它(主要的 Linux 发行版的仓库中都有 Xonsh shell)。
+
+在 Ubuntu 和 Debian 上,你可以尝试运行:
+
+```
+sudo apt install xonsh
+```
+
+因为它本质上是一个 Python 应用,所以你总是可以使用 Pip 来安装(如果你的系统已经安装了的话)。或者,你也可以使用 Conda 来安装 Xonsh。同时,它还提供了 AppImage 格式和 Docker 镜像。
+
+你可以自由选择你喜欢的安装方式。
+
+### Xonsh shell 初体验
+
+如果你不熟悉 Linux 的“多 shell”概念和终端的相关知识,我推荐你阅读 [我写的一篇终端入门的文章][3]。这篇文章会帮助 Linux 新手弄清楚很多东西。
+
+我在这里简单介绍一下。你的终端运行着一个默认的 shell(通常是 bash shell)。如果你在系统上安装了其他的 shell,你可以 [轻松地切换这些 shell][4]。
+
+要进入 Xonsh shell,只需运行一条命令:
+
+```
+xonsh
+```
+
+![][5]
+
+它会建议你运行一个设置向导,然后创建一个 Xonsh shell 的自定义 `rc` 配置文件。这是可选的,你也可以晚些时候再做。
+
+一旦你开始使用它,你就立刻会感觉到一些不同。
+
+当你开始输入一条命令时,Xonsh 会自动建议历史记录中的最后一条匹配命令。你可以按下右箭头键确认使用这条自动建议的命令。你也可以按下上、下箭头键来选择历史记录中的其他匹配命令。
+
+![Xonsh shell automatically suggests last matching command from the history as you type][6]
+
+不仅如此,它还支持交互式的 Tab 补全。当你开始输入命令,并按下 `tab` 键,它会显示一个类似于下拉式的交互式菜单。你可以在这个菜单中选择可用的命令。
+
+![Tab completion in Xonsh shell][7]
+
+你可以混合使用 Python 和 bash 命令,并且直接在 shell 中运行它们。
+
+如果你对 [终端定制][8] 感兴趣,你可以花点时间和精力,根据自己的喜好来定制 Tab 补全、按键绑定和颜色样式。
+
+它同时拥有一个叫做 [Xontrib][9] 的用户自定义插件系统,你可以使用这些插件来扩展 Xonsh shell 的功能。
+
+如果你是一个终端爱好者,并渴望学习更多终端知识,你可以浏览它的 [丰富的文档系统][10]。
+
+### 最后
+
+大多数用户坚持使用默认的 Bash shell,这很正常。有一些开发者和系统管理员会选择使用 Zsh,因为它有很多附加特性。而 Xonsh 完全聚焦在 Python 上,对于 Python 使用者来说,它或许具有吸引力。对于其余的人来说,Bash 已经足够好了。
+
+你使用过 Xonsh 或者其他的 shell 吗?你用它来代替 Bash 的原因是什么呢?欢迎在评论区留言。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/xonsh-shell/
+
+作者:[Abhishek Prakash][a]
+选题:[lujun9972][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[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/lujun9972
+[1]: https://xon.sh/
+[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/xonsh-shell-combines-python-bash.png?resize=800%2C470&ssl=1
+[3]: https://itsfoss.com/basic-terminal-tips-ubuntu/
+[4]: https://linuxhandbook.com/change-shell-linux/
+[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/xonsh-shell.png?resize=800%2C451&ssl=1
+[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/auto-suggestions-from-history-in-xonsh-shell.png?resize=800%2C258&ssl=1
+[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/tab-completion-xonsh-shell.png?resize=800%2C354&ssl=1
+[8]: https://itsfoss.com/customize-linux-terminal/
+[9]: https://github.com/topics/xontrib
+[10]: https://xon.sh/tutorial.html
diff --git a/published/202203/20220324 7 Reasons to Try Open Source Secure Messenger ‘Threema.md b/published/202203/20220324 7 Reasons to Try Open Source Secure Messenger ‘Threema.md
new file mode 100644
index 0000000000..afd351fd61
--- /dev/null
+++ b/published/202203/20220324 7 Reasons to Try Open Source Secure Messenger ‘Threema.md
@@ -0,0 +1,157 @@
+[#]: subject: "7 Reasons to Try Open Source Secure Messenger ‘Threema’"
+[#]: via: "https://news.itsfoss.com/reasons-to-try-threema/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14404-1.html"
+
+尝试开源的安全通讯软件 Threema 的 7 个理由
+======
+
+> Threema 是一个优质的开源通讯软件,专注于安全和隐私,提供了一个去中心的基础设施。
+
+
+
+现在已经有很多私密的 WhatsApp 代替品可供我们选择,Threema 则是其中最好的可选项之一。
+
+可是,为什么你要考虑尝试它呢?它是“终极的”安全通讯软件吗?
+
+怎么说呢,每个安全通讯软件都只满足特定用户群体的需求。所以,把任何开源的通讯软件当作是“终极的”选项,都是不明智的。
+
+因此,我列举了一些你或许会想尝试 Threema 而不是其他类似选项的理由。
+
+### Threema:背景概览
+
+在我开始说明为什么要尝试 [Threema][2] 这款私密通讯软件之前,请允许我再介绍一下它。
+
+Threema 是一个流行的安全通讯软件,它由瑞士团队研发,专注于个人隐私。它也是一个付费软件,你需要在 [Play Store][3] 或者 [App Store][4] 上,一次性支付费用(大约 4 美元),才能够在你喜爱的移动设备上使用它。
+
+起初,它是一个专有的安全通讯软件,是 [Signal][5] 等其他软件的竞争者。
+
+在 2020 年的时候,Threema 决定在 [GitHub][6] 上开源它的所有软件。
+
+你可以下载到移动应用,也可以得到 Linux 桌面(包括 Windows 和 macOS)上的支持。遗憾的是,它在桌面上目前没有独立的客户端。
+
+因此,你需要让移动设备保持开启状态,才能使用桌面上的 Threema(就和 WhatsApp Web 的工作方式一样)。
+
+### 下面是你尝试 Threema 的可能理由
+
+如果你正在寻找一个隐私友好的安全通讯软件,并且你的同事/朋友/家人不介意支付一次性费用的话,你可以把它作为一个可选项。
+
+支持你这么做的理由包括:
+
+#### 1. 不需要手机号码
+
+![][7]
+
+和 WhatsApp 不同,你不需要使用手机号码来注册 Threema。当然,你可以选择添加你的手机号码,如果你希望别人能够很快找到你的话。
+
+但是,手机号码只是注册 Threema 的一个选填项。如果你不想让别人知道你的手机号码,你可以使用注册时生成的 **Threema ID**(用户名)。
+
+这样的话,如果你要和别人交流,你必须分享你的 Threema ID,而不是你的手机号码。
+
+值得一提的是,即使在没有 SIM 卡的设备上,它也能完美工作,因为你不必提供手机号码就可以注册成功。
+
+#### 2. 开源
+
+虽然这是一个显而易见的理由,但它十分重要。
+
+我非常重视这一点。如果你想要一个值得信赖的 WhatsApp 替代品,你应该倾向于选择一个开发稳定的开源通讯软件。
+
+#### 3. 去中心化的基础设施
+
+![][8]
+
+和大多数主流产品不同,Threema 提供了一个去中心化的基础设施,以确保更好地抵御检查。
+
+换句话说,Threema 并不依赖于一个中心服务器架构,也就不会发生“一个错误导致整个网络瘫痪”这种情况。
+
+这个错误可能是一次停电,或者是一次检查/限制服务的行动。
+
+在这些情况下,Threema 会是更有用和更有效的选择。
+
+#### 4. 收费软件
+
+它是一个收费软件(一次性付费),这也算是一个好消息吗?
+
+对于某些人来说,是的。
+
+如果你想要寻找一个几乎不可能有垃圾消息的通讯软件,而且你也不想让你的联系人找到你(或是给你发一些你不想要的信息),那么 Threema 就是你的一个完美选项。
+
+毕竟,为一个出色的开源解决方案而付费是值得的,对吧?
+
+#### 5. 可靠的用户界面和特性
+
+![Credits: Threema][9]
+
+Threema 不是一个新产品,它已经开发了好几年了。
+
+因此,它能够提供稳定的用户体验,以及一些激动人心的特性,比如说它支持在群聊中发起投票。
+
+你可以使用“同意/不同意”选项,以一种静默的方式确认接收方是否收到了消息,而不会触发一个发送给他们的通知。
+
+注意,“同意/不同意”的功能只在个人会话中有效。
+
+你也可以使用二维码来验证你的联系人身份,以此来避免中间人man-in-the-middle攻击。
+
+和其他的安全通讯软件相比,Threema 对平板电脑的支持也不错。
+
+![Credits: Threema][10]
+
+#### 6. 瑞士团队 & 遵守 GDRP 准则
+
+你可能会在意,开发团队是否会受到所在国家的司法管辖权和隐私法等限制,那么对你而言,Threema 就是一个理想的私密通讯软件。
+
+Threema 受瑞士的法律约束,而众所周知,瑞士的法律是最重视个人隐私的。
+
+除此之外,Threema 还提到了它完全遵守 GDRP 准则。如果你在意这一点的话,Threema 是一个不错的选择。
+
+#### 7. 在工作中使用 Threema
+
+![][11]
+
+有趣的是,Threema 还有另外一个 [独立的版本][11],专注于加强公司内部的通讯安全。
+
+所以,如果你需要一个安全通讯平台来作为即时通讯软件的话,Threema 将是一个吸引人的选择。
+
+- [试试 Threema][12]
+
+### 最后,我的看法
+
+我已经使用 Threema 很长时间了,我承认我在上面没有很多联系人。
+
+但我还是要说,它的用户体验是极佳的,并且我在 iOS 和 Android 端都使用过相当长的时间。
+
+因此,Threema 更适合那些不想对任何有关隐私的特性妥协的严肃用户。
+
+与此同时,作为一款收费软件,并不是每个人都愿意尝试它。但仔细想想,你将会得到一个可靠的注重隐私的通讯软件,它还是开源的,并且会接受定期的审查。
+
+你对这款软件有什么看法?请在评论区分享你的观点吧!
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/reasons-to-try-threema/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][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/lujun9972
+[1]: https://itsfoss.com/private-whatsapp-alternatives/
+[2]: https://threema.ch/en/home
+[3]: https://play.google.com/store/apps/details?id=ch.threema.app&hl=en_US&gl=US
+[4]: https://apps.apple.com/us/app/threema-the-secure-messenger/id578665578
+[5]: https://itsfoss.com/install-signal-ubuntu/
+[6]: https://github.com/threema-ch
+[7]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/threema-phone-number.jpg?w=1200&ssl=1
+[8]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/threema-decentralize-1.jpg?w=1200&ssl=1
+[9]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/threema-ui.jpg?w=1280&ssl=1
+[10]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/threema-tablet.jpg?w=1213&ssl=1
+[11]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/threema-work.png?w=1081&ssl=1
+[12]: https://threema.ch/en
diff --git a/published/202203/20220324 GNOME 42 is Here With Dark Mode, New Screenshot UI, and More Exciting Features.md b/published/202203/20220324 GNOME 42 is Here With Dark Mode, New Screenshot UI, and More Exciting Features.md
new file mode 100644
index 0000000000..07c2337c45
--- /dev/null
+++ b/published/202203/20220324 GNOME 42 is Here With Dark Mode, New Screenshot UI, and More Exciting Features.md
@@ -0,0 +1,120 @@
+[#]: subject: "GNOME 42 is Here With Dark Mode, New Screenshot UI, and More Exciting Features"
+[#]: via: "https://news.itsfoss.com/gnome-42-release/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14392-1.html"
+
+GNOME 42 发布:深色模式、新的截图界面
+======
+
+> GNOME 42 终于到来了,它带来了急需的视觉升级和功能改进。
+
+
+
+[GNOME 42][17] 是一个有着显著视觉变化的重大升级。
+
+GNOME 42 提供了许多必要的改进和急需的升级。现在它已经发布了,就让我们来看看一些关键的亮点吧。
+
+### GNOME 42 新特性
+
+鉴于我们已经写了一篇 [详细的文章来介绍 GNOME 42 的新特性][1],请允许我在这里挑选其中最重要的几个来介绍。
+
+[![][2]](https://youtu.be/du-2QpWbiLU)
+
+### 1. 深色模式主题和外观调整
+
+![][3]
+
+尽管其他的一些桌面环境已经有了系统级的深色样式偏好设置,然而 GNOME 此前并不支持该功能。
+
+在 GNOME 42 中,GNOME 团队从 elementary OS 团队那里获得了灵感(这要归功于 [elementary OS 6][4] 出色的深色模式)。
+
+你可以注意到,一个新的“外观Appearance”选项取代了“背景Background”选项,它可以让你在浅色/深色模式间无缝切换。
+
+![][5]
+
+桌面壁纸也有浅色/深色的不同版本,以便在你选择的对应模式时,为你提供最佳的对比度。
+
+### 2. 更新的文件夹图标主题
+
+GNOME 的文件夹图标主题看起来也太古老了。为了摆脱这种印象,它接收了一些视觉更新,以便在浅色/深色主题下看起来更棒:
+
+![][6]
+
+### 3. 新的截图界面
+
+新的 GNOME 42 截图的界面是本次发布的最好的特性之一。
+
+它不仅仅局限于截图,只要简单切换一下,你就可以用它来录制屏幕。它的用户界面看起来很棒,而且在我最初使用的 Fedora 36(预发布版)中工作良好。
+
+![][7]
+
+### 4. GNOME 应用升级到了 GTK 4
+
+为了与 GNOME 42 的总体用户体验保持一致,得益于 [libadwaita][8],默认应用程序获得了彻底的视觉更新。
+
+不仅限于用户界面,一些 GNOME 应用本身也获得了新特性。
+
+甚至一些第三方的 GNOME 应用,比如 [Fragments 2.0][9],也有了重大改变,以便在 GNOME 42 中提供最佳体验。
+
+### 5. 新的文本编辑器和控制台
+
+![][10]
+
+你会注意到,[现代的 GNOME 文本编辑器][11] 取代了广受欢迎的 Gedit,成为了默认的文本编辑器。
+
+并且,你再也找不到 GNOME 终端应用了。取而代之的是,现在有了一个新的终端应用,它提供了一些用户界面的增强,名字叫做“控制台Console”。
+
+![][12]
+
+### 其他改进
+
+除了视觉变化,新版本的 GNOME 还进行了性能优化和整个平台的细微改进。其中包括了以下升级:
+
+ * 提升了文件检索效率
+ * 远程桌面功能现在支持 RDP 协议了
+ * GNOME 网页浏览器现在开启了硬件加速
+
+你可以在 [官方声明][13] 中了解这个版本的所有变化。
+
+### 下载 GNOME 42
+
+你可以在 [GNOME OS][14] 上,通过 Boxes 虚拟机来测试 GNOME 42 最新的稳定构建版本,或者你可以下载 [OpenSUSE Tumbleweed][15](应该会在近期发布)。
+
+尽管 [Intel 的 Clear Linux 似乎在它的最新版本中增加了 GNOME 42][16],但和 Ubuntu 22.04 长期支持版和 Fefora 36 相比,它并不是一个完美的替代桌面。
+
+你也可以尝试附带 GNOME 42 的 Arch,或者等待下个月将发布的 Ubuntu 22.04 长期支持版和 Fedora 36.
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/gnome-42-release/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][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/lujun9972
+[1]: https://linux.cn/article-14267-1.html
+[2]: https://i0.wp.com/i.ytimg.com/vi/du-2QpWbiLU/hqdefault.jpg?w=780&ssl=1
+[3]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/fedora-36-gnome-42-dark.jpg?resize=1568%2C882&ssl=1
+[4]: https://news.itsfoss.com/elementary-os-6-features/
+[5]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/02/gnome-42-dark-mode-wallpaper.jpg?w=1200&ssl=1
+[6]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/02/gnome-42-file-manager-light.jpg?resize=1568%2C1017&ssl=1
+[7]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/02/gnome-42-screenshot.jpg?w=1340&ssl=1
+[8]: https://news.itsfoss.com/gnome-libadwaita-library/
+[9]: https://news.itsfoss.com/fragments-2-0-release/
+[10]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/02/gnome-42-text-editor-alpha.jpg?w=1480&ssl=1
+[11]: https://linux.cn/article-14060-1.html
+[12]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/console-screenshot-1.png?w=694&ssl=1
+[13]: https://release.gnome.org/42/
+[14]: https://itsfoss.com/gnome-os/
+[15]: https://get.opensuse.org/tumbleweed
+[16]: https://news.itsfoss.com/clear-linux-gnome-42/
+[17]: https://os.gnome.org/
diff --git a/published/20220327 Top 10 Linux Distributions for Programmers in 2022 -Featured.md b/published/20220327 Top 10 Linux Distributions for Programmers in 2022 -Featured.md
new file mode 100644
index 0000000000..e2caf8ed1d
--- /dev/null
+++ b/published/20220327 Top 10 Linux Distributions for Programmers in 2022 -Featured.md
@@ -0,0 +1,233 @@
+[#]: subject: "Top 10 Linux Distributions for Programmers in 2022 [Featured]"
+[#]: via: "https://www.debugpoint.com/2022/03/top-linux-distributions-programmers-2022/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "aREversez"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14547-1.html"
+
+最适合程序员的 10 款 Linux 发行版
+======
+
+
+
+> 我们为程序员和开发人员总结了 2022 年最好用的 10 款 Linux 发行版,以便他们开展日常工作和个人项目。
+
+由于工作和项目需要,程序员和开发人员会用到各种工具和应用,包括代码编辑器、编译器、插件以及数据库等等。若对现代开发人员的工作流程做一番整理,一般流程如下:
+
+ - 创建代码仓库
+ - 编程
+ - 调试
+ - 测试
+ - 部署
+
+上述工作流程需要用到各种各样的工具,一份标准的工具清单如下:
+
+ - 代码编辑器
+ - 简单的文本编辑器
+ - 网页浏览器(包括 Web 开发人员使用的各种浏览器)
+ - 数据库引擎
+ - 本地服务器
+ - 各类编程语言的编译器
+ - 调试器
+ - 监视或分析工具(客户端或者网页端)
+
+与 Windows 相比,Linux 可以说是编程的最佳平台。之所以这样说,主要是因为 Linux 发行版与 Windows 不同,预装了许多功能强大的包和软件,自行安装也比较容易。在本文中,考虑到一些原因,我不会将 macOS 纳入对比范围之内。
+
+综上,本文将整理出 2022 年最适合程序员的 10 款 Linux 发行版。
+
+### 2022 最适合程序员的 10 款 Linux 发行版
+
+#### 1、Fedora 工作站
+
+![Fedora 35 Workstation][1]
+
+在这 10 款 Linux 发行版当中,最优秀的可能就要数 Fedora Linux 了。Fedora 默认的工作站版本精选了一些软件包,为用户带来真正的 GNOME 桌面体验。
+
+Fedora Linux 默认安装了开箱即用的主流开发软件包,包括 PHP、OpenJDK、PostgreSQL、Django、Ruby on Rails 以及 Ansible 等等。
+
+dnf 是 Fedora Linux 的包管理器,有了它,安装代码编辑器以及其他软件就相当容易了。此外,你还可以使用“软件”应用商店一键搜索、安装软件。
+
+Fedora Linux 支持 Snap 和 Flatpak,使用起来会更加灵活方便。你还可以使用 RPM Fusion 仓库,获取大量自由或非自由的软件。因为许可证等一些原因,Fedora Linux 不希望在其主仓库内包括这些包,于是就有了 RPM Fusion。
+
+点击下方链接,了解 Fedora Linux 最新版本。
+
+> **[下载 Fedora][2]**
+
+#### 2、Ubuntu Linux
+
+![Ubuntu Desktop is a perfect Linux Distribution for Programmers.][3]
+
+在今天,无论是服务器还是个人电脑,使用最为广泛的发行版当属 Ubuntu Linux。Ubuntu 提供长期支持版本,每个长期支持版本官方提供五年的支持(外加五年的维护支持),并且每年为高级用户提供两个短期版本。
+
+由于 Ubuntu 非常流行,各种包与软件的供应商都会提供适用于 Ubuntu 的版本(.deb)。此外,得益于广泛的知名度,Ubuntu 有着更为庞大的论坛群体和更为丰富的帮助文档。所以说,Ubuntu 是开发人员的最佳之选,尤其是在开发过程中陷入难题的时候,Ubuntu 更能发挥其作用。点击下方链接,了解更多。
+
+> **[下载 Ubuntu][4]**
+
+#### 3、openSUSE
+
+openSUSE 是用在全球关键系统中最稳定、最专业的 Linux 发行版之一,是企业界(包括个人电脑、服务器以及瘦客户机)的首选解决方案。
+
+相较于 Ubuntu 和 Fedora,openSUSE 具有一些独特的优势。首先,openSUSE 有两个版本:Leap 和 Tumbleweed。其中,openSUSE Leap 属于长期支持版,为用户带来稳定的升级体验。openSUSE Tumbleweed 属于滚动发行版,有着最新、最尖端的软件包。
+
+如果你想获得最新的包和硬件支持,助力开发工作,你可以选择 openSUSE Tumbleweed;如果你想要的是稳定性,无需频繁维护即可长期运行,openSUSE Leap 会更适合你。
+
+使用 openSUSE 进行开发工作,最大的优势之一就是 YaST 包管理工具。有了 YaST,许多操作可以轻松实现自动化。
+
+此外,openSUSE 获取软件非常方便。它有专属的应用网站,供用户查找、安装包和软件。
+
+如果你有一些 Linux 发行版的使用经验,推荐选择 openSUSE 进行开发工作。
+
+> **[下载 openSUSE][5]**
+
+#### 4、Manjaro Linux
+
+Manjaro Linux 基于 Arch Linux,不过安装起来更容易一些。Manjaro Linux 自身还有许多独特功能,比如带有图形用户界面的安装程序、pamac 软件安装器以及高质量的软件仓库等等。Manjaro 有三个主要的桌面版本:GNOME、KDE Plasma 和 Xfce,足以满足各类用户的需要。
+
+如果你想使用 Arch Linux 及其滚动发行的软件包来满足开发需求,但又不想在安装原版 Arch 上来回折腾,Manjaro 绝对是你的最佳选择。
+
+> **[下载 Manjaro][6]**
+
+#### 5、Arch Linux
+
+尽管有 Manjaro 以及其他基于 Arch Linux 的发行版,而且安装操作非常简单,你可能还是想在自己的定制电脑上折腾一番,亲自动手 [安装原版 Arch][7]。
+
+不过这种选择更适合程序员和开发人员,因为他们想得到更多的掌控权,或者想要定制一个 Linux 操作系统,用于开发项目或满足开发需求。这样一来,他们可能就会安装 Arch Linux,选择自己最喜欢的桌面,设置专用于开发工作的操作系统。
+
+假设你对 Arch Linux 和普通的电脑都比较熟悉,那么 Arch Linux 就是你的最佳选择,因为在自己定制的 Linux 操作系统上,你可以完全控制每一个软件包。
+
+> **[下载 Arch Linux][9]**
+
+#### 6、Pop OS
+
+Pop OS(即 Pop!_OS)由电脑制造商 System76 针对其系列硬件开发,是一款基于 Ubuntu 的自由开源的发行版。发行周期与 Ubuntu 保持同步,并为用户提供了额外的调整工具和软件包。
+
+![Pop OS 21.10 Desktop][10]
+
+Pop OS 基于 Ubuntu,默认支持多种程序语言,所以非常适合程序员使用。Pop OS 的软件中心非常出色,设有开发软件专区,深受计算机科学家和程序员青睐。
+
+此外,Pop OS 的 COSMIC 桌面(GNOME 桌面的定制版)支持窗口自动平铺,具有柔美的调色板、默认的深色模式以及丰富的设置选项,给程序员带来独特的使用体验。
+
+如果你既想要基于 Ubuntu,又想要适合程序员的稳定 Linux 发行版,推荐选择 Pop OS。
+
+> **[下载 POP OS][11]**
+
+#### 7、KDE Neon
+
+作为一个程序员,如果你喜欢 KDE Plasma 桌面,又想使用基于 Qt 的开发环境,那么你应该选择 KDE Neon。
+
+KDE Neon 基于 Ubuntu 长期支持版本,兼具最新的 KDE Plasma 桌面和 KDE 框架。因此,使用 KDE Neon,你不仅可以享受 Ubuntu 长期支持版本的稳定性,还能体验基于 Qt 的最新版 KDE 软件。
+
+运行速度快,程序开箱即用,用户界面友好,广泛的社区支持,如你所愿,完美如斯。
+
+> **[下载 KDE Neon][12]**
+
+#### 8、Debian
+
+Debian GUN/Linux 就无需过多介绍了。Debian 的稳定分支是 Ubuntu 及其衍生系统的基础。换句话说,Debian 是最主要、最稳定的 Linux 发行版之一。优秀的稳定性和较长的支持时间使得 Debian 非常适合用做开发环境。
+
+不过,Debian 的稳定分支比较保守,很少使用最新的软件包。毕竟全世界(几乎)都依赖 Debian 的稳定运行,所以维护者在检查、合并软件包时必须十分谨慎。
+
+Debian 不仅能够长期稳定运行,而且维护成本较低,是高级用户和系统管理员绝佳的编程环境。
+
+> **[下载 Debian Linux][13]**
+
+#### 9、Kali Linux
+
+Kali Linux 由 Offensive Security 开发,服务对象为道德黑客和查找网络漏洞的渗透测试人员,内置大量黑客软件和工具。
+
+对技术娴熟的程序员和开发人员来说,Kali Linux 堪称最佳之选。如果你精通 Linux,具备解决错误和依赖问题的经验,推荐选择 Kali Linux。
+
+> **[下载 Kali Linux][14]**
+
+#### 10、Fedora Labs
+
+最后,我们来看看 Fedora Linux 的各种 Fedora Labs 版本。
+
+Fedora Labs 为程序员、科学家、学生等各类人群提供各类专业化的 Linux 发行版,内置各类专业软件、包和工具。很多人并没有意识到 Fedora Labs 的优势,只要经过适当的配置,这些版本都是非常优秀的发行版。
+
+我们来总结一下这些 Fedora Labs:
+
+Fedora Scientific:
+
+ * 采用 KDE Plasma 桌面,集成科学和数学领域的各种开源工具
+ * 软件清单如下:
+ * 基于 C/C++ 的 GNU Scientific Library
+ * 兼容 MATLAB 的 MGNU Octave
+ * LaTeX
+ * Gnuplot:用于绘制 2D 与 3D 图像
+ * Pandas:用于数据处理的 Python 库
+ * IPython
+ * Java 和 R 程序语言相关包
+
+> **[下载 Fedora Scientific][15]**
+
+Fedora COMP NEURO:
+
+ * 采用 GNOME 桌面环境,预装神经科学领域的各种开源包和应用。
+
+> **[下载 Comp Neuro][25]**
+
+Fedora Robotics Suite:
+
+ * 集成各种开源机器人技术包和软件,适合初学者、资深计算机科学家和编程人员。
+
+> **[下载 Fedora Robotics][16]**
+
+除了上述版本,还有 [Fedora Security Labs][17]、[Fedora Astronomy][18] 和 [Fedora Python Classroom][19] 可供选择。
+
+在编程项目以及科学领域,Fedora Labs 堪称完美之选。
+
+### 总结
+
+那么,怎样才能从以上 10 款 最适合程序员的 Linux 发行版中选出自己最喜欢的呢?
+
+如果你想要一款开发系统,但又不想耗费太多精力,拿不定主意的话,推荐使用 Fedora 工作站或者 Ubuntu。
+
+如果你的空闲时间比较多或者想要进一步掌控自己的系统,乐于尝试并且能够忍受偶尔发生的错误,推荐选择基于 Arch Linux 的系统。
+
+对于刚接触 Linux 生态的新手程序员来说,Pop OS 也是一个不错的选择。如果有特殊需要的话,可以试试 Fedora Labs。
+
+我希望本文能帮助程序员和开发人员选出最喜欢的 Linux 发行版。
+
+祝你好运!
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/03/top-linux-distributions-programmers-2022/
+
+作者:[Arindam][a]
+选题:[lujun9972][b]
+译者:[aREversez](https://github.com/aREversez)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lujun9972
+[1]: https://www.debugpoint.com/wp-content/uploads/2021/11/Fedora-35-Workstation-1024x528.jpg
+[2]: https://getfedora.org/
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/03/Ubuntu-Desktop-is-a-perfect-Linux-Distribution-for-Programmers-1024x579.jpg
+[4]: https://ubuntu.com/download
+[5]: https://www.opensuse.org/
+[6]: https://manjaro.org/download/
+[7]: https://www.debugpoint.com/2022/01/archinstall-guide/
+[8]: https://www.debugpoint.com/2022/03/top-nitrux-maui-applications/
+[9]: https://archlinux.org/download/
+[10]: https://www.debugpoint.com/wp-content/uploads/2021/12/Pop-OS-21.10-Desktop-1024x579.jpg
+[11]: https://pop.system76.com/
+[12]: https://neon.kde.org/download
+[13]: https://www.debian.org/distrib/
+[14]: https://www.kali.org/
+[15]: https://labs.fedoraproject.org/en/scientific/
+[16]: https://labs.fedoraproject.org/en/robotics/
+[17]: https://labs.fedoraproject.org/en/security
+[18]: https://labs.fedoraproject.org/en/astronomy
+[19]: https://labs.fedoraproject.org/en/python-classroom
+[20]: https://t.me/debugpoint
+[21]: https://twitter.com/DebugPoint
+[22]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[23]: https://facebook.com/DebugPoint
+[24]: https://www.debugpoint.com/2022/03/top-nitrux-maui-applications/
+[25]: https://labs.fedoraproject.org/en/comp-neuro/
diff --git a/published/202204/20181107 Gitbase- Exploring Git repos with SQL.md b/published/202204/20181107 Gitbase- Exploring Git repos with SQL.md
new file mode 100644
index 0000000000..a8ab2cb36f
--- /dev/null
+++ b/published/202204/20181107 Gitbase- Exploring Git repos with SQL.md
@@ -0,0 +1,107 @@
+[#]: subject: "Gitbase: Exploring Git repos with SQL"
+[#]: via: "https://opensource.com/article/18/11/gitbase"
+[#]: author: "Francesc Campoy https://opensource.com/users/francesc/"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14470-1.html"
+
+Gitbase:使用 SQL 探索 Git 仓库
+======
+
+> Gitbase 是一个由 Go 驱动的开源项目,它使得我们可以在 Git 仓库上运行 SQL 查询。
+
+
+
+Git 已经成为了代码版本控制的事实标准。虽然 Git 已经很流行了,但想用它来对源代码仓库的历史和内容进行深度分析,仍然是一件复杂的事情。
+
+另一方面,SQL 则是一个经过实际检验、适合查询大型代码库的的语言,毕竟 Spark 和 BigQuery 等项目都采用了 SQL 作为查询语言。
+
+因此,在 source{d} 公司,我们顺理成章地结合了这两种技术来创建了 Gitbase:这是一个用 SQL 对 Git 仓库进行大规模分析的“代码即数据”解决方案。
+
+[Gitbase][2] 是一个完全开源的项目,它站在一系列巨人的肩膀上,是它们使 Gitbase 的发展成为可能。本文旨在指出其中的主要部分。
+
+![][3]
+
+*[Gitbase 试验场][4] 提供了一种使用 Gitbase 的可视化方式。*
+
+### 使用 Vitess 解析 SQL
+
+Gitbase 将 SQL 作为用户接口。这意味着我们需要解析基于 MySQL 协议传输的 SQL 请求,并理解它们。幸运的是,我们在 YouTube 的朋友和他们的 [Vitess][5] 项目已经实现了这一点。Vitess 是一个数据库集群系统,用于 MySQL 的水平扩展。
+
+我们直接截取一些重要的代码片段,并把它做成了一个 [开源项目][6]。这个项目允许任何人在几分钟内编写一个 MySQL 服务器(正如我在 [justforfunc][7] 的专题:[CSVQL - 用 SQL 处理 CSV][8] 中所展示的那样)。
+
+### 用 go-git 读取 Git 储存库
+
+当成功解析了一个请求,我们还需要读取数据集里的 Git 仓库,才能够知道该如何回复它。为此,我们集成了 source{d} 最成功的仓库 [go-git][9]。go-git 是一个高度可扩展的纯 Go 语言的 Git 实现。
+
+这使得我们能够轻松地分析以 [siva][10] 文件格式存储在磁盘上的源代码仓库(siva 也是一个 source{d} 的开源项目),或是直接使用 `git clone` 克隆的仓库。
+
+### 使用 Enry 检测编程语言,使用 Babelfish 解析文件
+
+Gitbase 并没有将其分析能力局限于 Git 历史记录上。它还使用(显然也是)我们的开源项目 [Enry][11] 集成了语言检测功能,并使用 [Babelfish][12] 实现了程序解析的功能。Babelfish 是一个用于通用源代码解析的自托管服务器,它可以将代码文件转化为通用抽象语法树Universal Abstract Syntax Trees(UAST)。
+
+这两个功能在 Gitbase 中呈现为用户函数 `LANGUAGE` 和 `UAST`。结合使用两个函数,许多查询请求都成为了可能,比如“找到上个月修改次数最多的函数名称”。
+
+### 让它快速运行
+
+Gitbase 经常要分析非常大的数据集,比如公共 Git 档案,其中有来自 GitHub 的 3TB 源代码(见 [公告][13])。为了做到这一点,每份 CPU 处理能力都很重要。
+
+这就是为什么我们又集成了另外两个项目:Rubex 和 Pilosa。
+
+### 使用 Rubex 和 Oniguruma 加快正则表达式的速度
+
+[Rubex][14] 是 Go 的 `regexp` 标准库包的一个准替代品。之所以还不能完成替代,是因为他们没有在 `regexp.Regexp` 类型上实现 `LiteralPrefix` 方法,不过我也是直到现在才听说这个方法。
+
+Rubex 的高性能得归功于高度优化的 C 语言库 [Oniguruma][15],它使用 [cgo][16] 来调用这个库。
+
+### 使用 Pilosa 索引加快查询速度
+
+索引基本上是每个关系型数据库的众所周知的特性,但 Vitess 却没有实现索引,因为它不是真正需要。
+
+还好开源的 [Pilosa][17] 再一次拯救了我们,它是一个用 Go 实现的分布式位图索引,使得 Gitbase 可以用于大规模的数据集。Pilosa 是开源的,它极大地加快了对多个海量数据集的查询。
+
+### 总结
+
+我想通过这篇博文,亲自感谢开源社区,是他们让我们在如此短的时间内创建了 Gitbase,这是谁也没想到的。在 source{d} 公司,我们是开源的坚定信仰者,`github.com/src-d` 下的每一行代码(包括我们的 OKR 和投资者委员会)都可以证明这一点。
+
+你想尝试一下 Gitbase 吗?最快、最简单的方法就是使用 source{d} 引擎。从 `sourced.tech/engine` 下载它,只需一个命令就能让 Gitbase 运行起来。
+
+想了解更多吗?请查看我在 [Go SF meetup][18] 的演讲录音。
+
+这篇文章 [最初发表在][20] Medium 上,经授权后在此重新发布。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/11/gitbase
+
+作者:[Francesc Campoy][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/francesc/
+[b]: https://github.com/lkxed/
+[1]: https://opensource.com/sites/default/files/lead-images/bus_cloud_database.png
+[2]: https://github.com/src-d/gitbase
+[3]: https://opensource.com/sites/default/files/uploads/gitbase.png
+[4]: https://github.com/src-d/gitbase-web
+[5]: https://github.com/vitessio/vitess
+[6]: https://github.com/src-d/go-mysql-server
+[7]: http://justforfunc.com/
+[8]: https://youtu.be/bcRDXAraprk
+[9]: https://github.com/src-d/go-git
+[10]: https://github.com/src-d/siva
+[11]: https://github.com/src-d/enry
+[12]: https://github.com/bblfsh/bblfshd
+[13]: https://blog.sourced.tech/post/announcing-pga/
+[14]: https://github.com/moovweb/rubex
+[15]: https://github.com/kkos/oniguruma
+[16]: https://golang.org/cmd/cgo/
+[17]: https://github.com/pilosa/pilosa
+[18]: https://www.meetup.com/golangsf/events/251690574/
+[19]: https://youtu.be/OXL2KxOTmBQ
+[20]: https://medium.com/sourcedtech/gitbase-exploring-git-repos-with-sql-95ec0986386c
diff --git a/published/202204/20190411 How do you contribute to open source without code.md b/published/202204/20190411 How do you contribute to open source without code.md
new file mode 100644
index 0000000000..ab9b4d8400
--- /dev/null
+++ b/published/202204/20190411 How do you contribute to open source without code.md
@@ -0,0 +1,83 @@
+[#]: subject: "How do you contribute to open source without code?"
+[#]: via: "https://opensource.com/article/19/4/contribute-without-code"
+[#]: author: "Chris Hermansen https://opensource.com/users/clhermansen"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14514-1.html"
+
+如何以非代码形式贡献开源
+======
+
+> 事实上,有无穷无尽的方法来为开源做贡献,其中一个简单的方法就是回答我们的投票问题。
+
+
+
+你是如何参与开源贡献的呢?我们组织了一个投票,结果如下:
+
+* 提交错误报告 - 67 票(35%)
+* 解答用户的问题 - 39 票(20%)
+* 写作(指南、故事、文档等) - 73 票(38%)
+* 其他 - 12 票(6%)
+
+我的第一次开源贡献可以追溯到 20 世纪 80 年代中期,当时我们的机构第一次连上了 [UseNet][2],在那里我们发现了贡献代码,以及在其开发和支持过程中和别人分享的机会。
+
+在今天,我们有无尽的贡献开源的机会。无论是贡献代码,还是制作一个视频教程,都是贡献的一种途径。
+
+不过,我将直接跳过整个贡献代码的部分。诚然,我们中有许多写代码但不认为自己是开发者的人,他们也可以 [贡献代码][3]。但是,我更想提醒大家,还存在很多 [非代码形式可以贡献开源][4]。接下来,我会谈到其中的三种。
+
+### 提交错误报告
+
+有一种重要而具体的贡献形式,它可以被描述为“不要畏惧 [提交一个像样的错误报告][6]”以及 [与此相关的所有后果][5]。有时,要 [提交一个像样的错误报告][6] 是很有挑战性的。比如说:
+
+* 某些错误可能很难记录或描述。当计算机启动时,屏幕上可能会出现又长又复杂的信息,其中包含各种不能理解的代码。或者屏幕上可能显示有一些“异常行为”,但是却没有提供具体的错误信息。
+* 某些错误可能很难重现。它可能只发生在某些特定的硬件/软件配置上,或者它可能很少被触发,或者错误的产生场景不明确。
+* 某些错误可能与一个非常特殊的开发环境配置有关,但是这个配置庞杂混乱,无法分享,需要先耗费大量精力创建一个精简后的例子才行。
+* 当向发行版报告一个错误时,维护者可能会建议将该错误提交给上游,这有时会需要付出大量的工作,因为发行版所提供的版本不是上游社区感兴趣的主要版本。(当发行版提供的版本落后于官方支持的发布和开发版本时,就会有这种情况发生)。
+
+尽管如此,我还是鼓励那些潜在的错误报告者(包括我)继续努力,并尝试让错误得到完整的记录和确认。
+
+但如何开始呢?你可以使用你最喜欢的搜索工具寻找类似的错误报告,看看它们是如何描述的,它们被归档在哪里,等等。你也可以留意你使用的发行版(例如,[Fedora][7]、[openSUSE][8]、[Ubuntu][9])或软件包([LibreOffice][10]、[Mozilla][11])的错误报告页面,它们定义了正式的报告机制,你可以按步骤为他们报告相关错误。
+
+### 解答用户的问题
+
+我潜伏在各种邮件列表和 [论坛][13] 里,偶尔也会冒个泡,例如 [Ubuntu 质量控制团队][12] 和 [论坛][13]、[LinuxQuestions.org][14],以及 [ALSA 用户的邮件列表][15] 等。在这里,我的贡献可能与错误报告的关系不大,更多的是记录复杂的用例。不过,看到有人热心帮助他人,解决他人在某个问题上的遇到的麻烦,对每个人来说,这都是无疑一种很棒的体验。
+
+### 从事开源相关的写作
+
+最后,另一个我非常喜欢贡献的领域是 [撰写][16] 关于使用开源软件的文章。无论是使用指南,还是对某一特定问题的不同解决方案进行比较评估,或者只是笼统地探索一个感兴趣的领域(就我而言,是使用开源音乐播放软件来享受音乐)。一个类似的选择是制作一个教学视频。你很容易就可以做到边演示一些复杂的桌面操作(比如用 GIMP 创建一个绚丽的标志),边 [录制桌面][17]。而那些精通两种或多种语言的人,也可以考虑将现有的使用指南或视频翻译成另一种语言。
+
+(LCTT 译注:读了这篇文章,你是不是想要马上投身于开源贡献呢?那么请考虑加入“Linux 中国翻译组(LCTT)”吧!我们有能帮助你快速上手翻译的 [维基][18],有热心友爱的 QQ 群,你甚至还能够在我们的官网上获得属于自己的译者专页……心动了吗?那就立刻行动起来吧!阅读 [维基][18] 以了解如何加入我们。)
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/19/4/contribute-without-code
+
+作者:[Chris Hermansen][a]
+选题:[lkxed][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/clhermansen
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/dandelion_blue_water_hand.jpg
+[2]: https://en.wikipedia.org/wiki/Usenet
+[3]: https://opensource.com/article/19/2/open-science-git
+[4]: https://opensource.com/life/16/1/8-ways-contribute-open-source-without-writing-code
+[5]: https://producingoss.com/en/bug-tracker.html
+[6]: https://opensource.com/article/19/3/bug-reporting
+[7]: https://docs.fedoraproject.org/en-US/quick-docs/howto-file-a-bug/
+[8]: https://en.opensuse.org/openSUSE:Submitting_bug_reports
+[9]: https://help.ubuntu.com/stable/ubuntu-help/report-ubuntu-bug.html.en
+[10]: https://wiki.documentfoundation.org/QA/BugReport
+[11]: https://developer.mozilla.org/en-US/docs/Mozilla/QA/Bug_writing_guidelines
+[12]: https://wiki.ubuntu.com/QATeam
+[13]: https://ubuntuforums.org/
+[14]: https://www.linuxquestions.org/
+[15]: https://www.alsa-project.org/wiki/Mailing-lists
+[16]: https://opensource.com/users/clhermansen
+[17]: https://opensource.com/education/16/10/simplescreenrecorder-and-kazam
+[18]: https://lctt.github.io/wiki/intro/lctt.html
diff --git a/published/202204/20200426 6 tips for securing your WordPress website.md b/published/202204/20200426 6 tips for securing your WordPress website.md
new file mode 100644
index 0000000000..38c12324ef
--- /dev/null
+++ b/published/202204/20200426 6 tips for securing your WordPress website.md
@@ -0,0 +1,170 @@
+[#]: collector: (lujun9972)
+[#]: translator: (hwlife)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14522-1.html)
+[#]: subject: (6 tips for securing your WordPress website)
+[#]: via: (https://opensource.com/article/20/4/wordpress-security)
+[#]: author: (Lucy Carney https://opensource.com/users/lucy-carney)
+
+保护 WordPress 网站的 6 个技巧
+======
+
+> 即使初学者也可以,并且应该采取这些步骤来保护他们的 WordPress 网站免受网络攻击。
+
+
+
+WordPress 已经驱动了互联网 30% 的网站,它是世界上增长最快的 内容管理系统content management system(CMS),而且不难看出原因:通过大量可用的定制化代码和插件、一流的 搜索引擎优化Search Engine Optimization(SEO),以及在博客界超高的美誉度,WordPress 赢得了很高的知名度。
+
+然而,随着知名度而来的,也带来一些不太好的关注。WordPress 是入侵者、恶意软件和网络攻击的常见目标,事实上,在 2019 年被黑客攻击的 CMS 中,WordPress [约占 90%][2]。
+
+无论你是 WordPress 新用户或者有经验的开发者,这里有一些你可以采取的重要步骤来保护你的 WordPress 网站。以下 6 个关键技巧将帮助你起步。
+
+### 1、选择可靠的托管主机
+
+主机是所有网站无形的基础,没有它,你不能在线发布你的网站。但是主机的作用远不止起简单的托管你的网站,它也要对你的网站速度、性能和安全负责。
+
+第一件要做的事情就是检查主机在它的套餐中是否包含 SSL 安全协议。
+
+无论你是运行一个小博客或是一个大的在线商店,SSL 协议都是所有网站必需的安全功能。如果你正在进行线上交易,你还需要 [高级 SSL 数字证书][3] ,但是对大多数网站来说,基本免费的 SSL 证书就很好了。
+
+其他需要注意安全功能包括以下几种:
+
+ * 日常的自动离线网站备份
+ * 恶意软件和杀毒软件扫描和删除
+ * 分布式服务攻击Distributed denial of service(DDOS)保护
+ * 实时网络监控
+ * 高级防火墙保护
+
+另外除了这些数字安全功能之外,你的主机供应商的 _物理_ 安全措施也是值得考虑的。这些包括用安全警卫、闭路监控和二次验证或生物识别来限制对数据中心的访问。
+
+### 2、使用安全插件
+
+保护你的网站安全最有效且容易的方法之一是安装一个安全插件,比如 [Sucuri][4],它是一个 GPLv2 许可的开源软件。安全插件是非常重要的,因为它们能将安全管理自动化,这意味着你能够集中精力运行你的网站,而不是花大量的时间来与在线威胁作斗争。
+
+这些插件探测、阻止恶意攻击,并提醒你需要注意的任何问题。简言之,它们持续在后台运行,保护你的网站,这意味着你不必保持 7 天 24 小时地保持清醒,与黑客、漏洞和其他数字垃圾斗争。
+
+一个好的安全插件会免费提供给你所有必要的安全功能,但是一些高级功能需要付费订阅。举个例子,如果你想要解锁 [Sucuri 的网站防火墙][5] ,你就需要付费。开启 网站应用防火墙web application firewall(WAF)阻挡常见的威胁,并为给你的网站添加一个额外的安全层,所以当选择安全插件的时候,寻找带有这个功能的插件是一个好的主意。
+
+### 3、选择值得信任的插件和主题
+
+WordPress 的快乐在于它是开源的,所以任何人、每个人都能提供他们开发的主题和插件。但当选择高质量的主题和插件时,这也抛出一些问题。
+
+在挑选免费的主题或插件时,有一些设计较差,或者更糟糕的是,可能会隐藏恶意代码。
+
+为了避免这种情况,始终从可靠的来源来获取免费主题和插件,比如 WordPress 主题库。阅读对它的评论,并研究查看开发者是否构建过其他的程序。
+
+过时的或设计不良的主题和插件可以为攻击者进入你的网站留下“后门”或错误,这就是为什么选择时要谨慎。然而,你也应该提防无效或者破解的主题。这些已经黑客破坏了的高级主题被非法销售。你可能会购买一个无效的主题,它看起来没什么问题,但会通过隐藏的恶意代码破坏你的网站。
+
+为了避免无效主题,不要被打折的价格所吸引,始终坚持可靠的主题商店,比如官方的 [WordPress 目录][6]。如果你在其它地方寻找,坚持选择大型且值得信任的商店,比如 [Themify][7] ,这个主题和插件商店自从 2010 年就已经在经营了。Themify 确保它的所有 WordPress 主题通过了 [谷歌友好移动][8]Google Mobile-Friendly 测试,并在 [GNU 通用公共许可证][9] 下开源。
+
+### 4、运行定期更新
+
+这是 WordPress 的基本规则: 始终保持你的网站最新。然而,不是所有人都坚持了这个规则,只有 [43% 的 WordPress 网站][10] 运行的是最新版本。
+
+问题是,当你的网站过期的时候,由于它在安全和性能修复方面落后的原因,容易受到故障、漏洞、入侵和崩溃的影响。过期的网站不能像更新的网站一样修复漏洞,攻击者能够分辨出哪些网站是过期的。这意味着他们能够依此来搜索最易受攻击的网站并袭击它们。
+
+这就是为什么你始终要运行最新的 WordPress 版本的原因。为了保持网站安全处于最强的状态,你必须更新你的插件和主题,以及你的核心 WordPress 软件。
+
+如果你选择一个受管理的 WordPress 托管套餐,你可能会发现你的供应商会为你检查并运行更新,以了解你的主机是否提供了软件和插件更新。如果没有,你可以安装一个开源插件管理器。比如 GPLv2 许可的 [Easy Updates Manager plugin][11] 作为替代品。
+
+### 5、强化你的登录
+
+除了通过仔细选择主题和安装安全插件来创建一个安全的 WordPress 网站外,你还需要防止未经授权的登录访问。
+
+#### 密码保护
+
+如果你在使用 [容易猜到的短语][12] 比如 “123456” 或 “qwerty” ,第一步要做的增强登录安全最简单的方法是更改你的密码。
+
+尝试使用一个长的密码而不是一个单词,这样它们很难被破解。最好的方式是用一系列你容易记住且不相关的单词合并起来。
+
+这里有一些其它的提示:
+
+ * 绝不要重复使用密码
+ * 密码不要包括像家庭成员的名字或者你喜欢的球队等明显的单词
+ * 不要和任何人分享你的登录信息
+ * 你的密码要包括大小写和数字来增加复杂程度
+ * 不要在任何地方写下或者存储你的登录信息
+ * 使用 [密码管理器][13]
+
+#### 变更你的登录地址
+
+将默认登录网址从标准格式 `yourdomain.com/wp-admin` 变更是一个好主意。这是因为黑客也知道这个缺省登录网址,所以不变更它会有被暴力破解的风险。
+
+为避免这种情况,可以将登录网址变更为不同的网址。使用开源插件比如 GPLv2 许可的 [WPS Hide Login][14] 可以更加安全、快速和轻松的自定义登录地址。
+
+#### 应用双因素认证
+
+为了提供更多的保护,阻止未授权的登录和暴力破解,你应该添加双因素认证。这意味着即使有人 _确实_ 得到了你的登录信息,但是他们还需要一个直接发送到你的手机上的验证码,来获得对你的 WordPress 网站管理的权限。
+
+添加双因素认证是非常容易的,只需要安装另一个插件,在 WordPress 插件目录搜索 “two-factor authentication” ,然后选择你要的插件。其中一个选择是 [Two Factor][15] ,这是一个流行的 GPLv2 许可的插件,已经有超过 10000 次安装。
+
+#### 限制登录尝试
+
+WordPress 可以让你多次猜测登录信息来帮助你登录。然而,这对黑客尝试获取未授权访问 WordPress 网站并发布恶意代码也是有帮助的。
+
+为了应对暴力破解,安装一个插件来限制登录尝试,并设置你允许猜测的次数。
+
+### 6、禁用文件编辑功能
+
+这不是一个适合初学者的步骤,除非你是个自信的程序员,不要尝试它。并且一定要先备份你的网站。
+
+那就是说,如果你真的想保护你的 WordPress 网站,禁用文件编辑功能 _是_ 一个重要的措施 。如果你不隐藏你的文件,它意味着任何人从管理后台都可以编辑你的主题和插件代码,如果入侵者进入,那就危险了。
+
+为了拒绝未授权的访问,转到你的 `.htaccess` 文件并输入:
+
+```
+
+order allow,deny
+deny from all
+
+```
+
+或者,要从你的 WordPress 管理后台直接删除主题和插件的编辑选项,可以添加编辑你的 `wp-config.php` 文件:
+
+```
+define( 'DISALLOW_FILE_EDIT', true );
+```
+
+保存并重新加载这个文件,插件和主题编辑器将会从你的 WordPress 管理后台菜单中消失,阻止任何人编辑你的主题或者插件代码,包括你自己。如果你需要恢复访问你的主题和插件代码,只需要删除你添加在 `wp-config.php` 文件中的代码即可。
+
+无论你阻止未授权的访问,还是完全禁用文件编辑功能,采取行动保护你网站代码是很重要的。否则,不受欢迎的访问者编辑你的文件并添加新代码是很容易的。这意味着攻击者可以使用编辑器从你的 WordPress 站点来获取数据,或者甚至利用你的网站对其他站点发起攻击。
+
+隐藏文件更容易的方式是利用安全插件来为你服务,比如 Sucuri 。
+
+### WordPress 安全概要
+
+WordPress 是一个优秀的开源平台,初学者和开发者都应该享受它,而不用担心成为攻击的受害者。遗憾的是,这些威胁不会很快消失,所以保持网站的安全至关重要。
+
+利用以上措施,你可以创建一个更加健壮、更安全的保护水平的 WordPress 站点,并给自己带来更好的使用体验。
+
+保持安全是一个持续的任务,而不是一次性的检查清单,所以一定要定期重温这些步骤,并在建立和使用你的CMS时保持警惕。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/20/4/wordpress-security
+
+作者:[Lucy Carney][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlife)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/lucy-carney
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_3reasons.png?itok=k6F3-BqA (A lock on the side of a building)
+[2]: https://cyberforces.com/en/wordpress-most-hacked-cms
+[3]: https://opensource.com/article/19/11/internet-security-tls-ssl-certificate-authority
+[4]: https://wordpress.org/plugins/sucuri-scanner/
+[5]: https://sucuri.net/website-firewall/
+[6]: https://wordpress.org/themes/
+[7]: https://themify.me/
+[8]: https://developers.google.com/search/mobile-sites/
+[9]: http://www.gnu.org/licenses/gpl.html
+[10]: https://wordpress.org/about/stats/
+[11]: https://wordpress.org/plugins/stops-core-theme-and-plugin-updates/
+[12]: https://www.forbes.com/sites/kateoflahertyuk/2019/04/21/these-are-the-worlds-most-hacked-passwords-is-yours-on-the-list/#4f157c2f289c
+[13]: https://opensource.com/article/16/12/password-managers
+[14]: https://wordpress.org/plugins/wps-hide-login/
+[15]: https://en-gb.wordpress.org/plugins/two-factor/
diff --git a/published/202204/20200916 Analyze Linux startup performance.md b/published/202204/20200916 Analyze Linux startup performance.md
new file mode 100644
index 0000000000..4e20e1807c
--- /dev/null
+++ b/published/202204/20200916 Analyze Linux startup performance.md
@@ -0,0 +1,411 @@
+[#]: collector: (lujun9972)
+[#]: translator: (jiamn)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14462-1.html)
+[#]: subject: (Analyze Linux startup performance)
+[#]: via: (https://opensource.com/article/20/9/systemd-startup-configuration)
+[#]: author: (David Both https://opensource.com/users/dboth)
+
+Linux 启动性能分析
+======
+
+> 用 systemd-analyze 洞悉并解决 Linux 启动性能问题。
+
+
+
+系统管理员的一部分工作就是分析系统性能,发现并解决引起性能不佳、启动时间长的问题。系统管理员也需要去检查 systemd 的配置和使用的其它方面。
+
+systemd 初始化系统提供了 `systemd-analyze` 工具,可以帮助发现性能问题和其他重要的 systemd 信息。在以前的文章《[分析 systemd 日历和时间跨度][2]》里,我用了 `systemd-analyze` 去分析 systemd 里的时间戳和时间跨度,但是这个工具还有很多其他用法,这个文章里我将再揭示一些。
+
+(LCTT 译注:systemd 是目前主流 Linux 发行版采用的系统管理系统)
+
+(LCTT 译注:为了区分英文的 “boot” 和 “startup” 的不同涵义,此处将 “boot” 翻译为“引导”,“startup” 翻译为“启动”。)
+
+### 概述启动
+
+Linux 启动过程是值得学习关注的地方,因为 `systemd-analyze` 工具很多功能聚焦在启动startup过程。但是首先,要理解引导boot和启动startup。引导阶段从 BIOS 加电自检(POST)开始,结束于内核完成加载并控制主机系统,然后是开始了启动过程,也是 systemd 日志的开始点。
+
+这个系列的第二篇文章《[理解 Linux 启动时的 systemd][3]》中,我详细讨论了启动阶段的内容和过程。在这篇文章里,我想研究一下启动过程,看看需要多少时间和大部分时间花费在哪里。
+
+下面我将展示的结果来自我的主要工作站,这比虚拟机的结果要有趣得多。这个工作站包括一块 华硕 TUF X299 Mark 2 主板、一个英特尔 i9-7960X CPU(16 核 32 线程),64 G 内存。下面的一些命令非 root 用户也可以使用,但是我在这篇文章里使用了 root 用户,以避免在用户之间切换。
+
+检查启动过程有几种方法,最简单的 `systemd-analyze` 命令显示了启动的几个主要部分耗费的时间,包括内核启动、装载运行 initrd(即初始 ramdisk,这是一个用来初始化一些硬件、挂载 `/` 根文件系统的临时系统镜像),还有用户空间(加载所有使主机达到可用状态的程序和守护程序)。如果没有像该命令传递子命令,默认是 `systemd-analyze time`:
+
+```
+[root@david ~]$ systemd-analyze
+Startup finished in 53.921s (firmware) + 2.643s (loader) + 2.236s (kernel) + 4.348s (initrd) + 10.082s (userspace) = 1min 13.233s
+graphical.target reached after 10.071s in userspace
+[root@david ~]#
+```
+
+这个输出中最值得注意的数据是在固件(BIOS)中花费的时间:几乎 54 秒。这是一个不太正常的时间,我的其他物理系统都没有花费这么长的时间来通过 BIOS。
+
+我的 System76 Oryx Pro 笔记本在 BIOS 阶段只花了 8.506 秒,我家里所有的系统都在 10 秒以内。在线搜索一阵之后,我发现这块主板以其超长的 BIOS 引导时间而闻名。我的主板从不“马上启动”,总是挂起,我需要关机再开机,BIOS 报错,按 `F1` 进入 BIOS 设置,选择要引导的驱动器完成引导,多花费的时间就是这样用掉的。
+
+不是所有主机都会显示固件数据(LCTT 译注:固件引导中不涉及 systemd)。我的不科学的实验使我相信,这个数据只显示给英特尔 9 代或以上的处理器。但这可能是不正确的。
+
+这个关于引导、启动的概述提供了很好的(虽然有限)的信息,但是还有很多关于启动的信息,我将在下面描述。
+
+### 分配责任
+
+你可以用 `systemd-analyze blame` 来发现哪个 systemd 单元的初始化时间最长。其结果按照初始化时间长短排序,从多到少:
+
+```
+[root@david ~]$ systemd-analyze blame
+ 5.417s NetworkManager-wait-online.service
+ 3.423s dracut-initqueue.service
+ 2.715s systemd-udev-settle.service
+ 2.519s fstrim.service
+ 1.275s udisks2.service
+ 1.271s smartd.service
+ 996ms upower.service
+ 637ms lvm2-monitor.service
+ 533ms lvm2-pvscan@8:17.service
+ 520ms dmraid-activation.service
+ 460ms vboxdrv.service
+ 396ms initrd-switch-root.service
+<截断:删去了好多时间不长的条目>
+```
+
+因为很多服务是并行开始的,在 BIOS 之后所有单元加在一起的总数大大超过了 `systemd-analyze time` 汇总数。很多都是小数,不能显著的节省时间。
+
+这个命令提供的数据指明了改善启动时间的办法。无用的服务可以禁用(`disable`)。在这个启动过程中,似乎没有任何一个服务需要花费过长的时间。你可能会在每次启动时看到不同的结果。(LCTT 译注:并行启动服务的原因)
+
+### 关键链
+
+就像项目管理中的关键路径一样,关键链显示了在启动过程中发生的时间关键的事件链(LCTT 译注:systemd 可以定义服务间的依赖,构成关键链)。如果启动缓慢,这些是你想查看的 systemd 单元,因为它们是导致延迟的单元。这个工具不会显示所有启动的单元,只显示这个关键事件链中的单元。(LCTT 译注:相当于最短路径。并不显示依赖不在关键链上的服务单元)
+
+```
+[root@david ~]# systemd-analyze critical-chain
+The time when unit became active or started is printed after the "@" character.
+The time the unit took to start is printed after the "+" character.
+
+graphical.target @10.071s
+└─lxdm.service @10.071s
+ └─plymouth-quit.service @10.047s +22ms
+ └─systemd-user-sessions.service @10.031s +7ms
+ └─remote-fs.target @10.026s
+ └─remote-fs-pre.target @10.025s
+ └─nfs-client.target @4.636s
+ └─gssproxy.service @4.607s +28ms
+ └─network.target @4.604s
+ └─NetworkManager.service @4.383s +219ms
+ └─dbus-broker.service @4.434s +136ms
+ └─dbus.socket @4.369s
+ └─sysinit.target @4.354s
+ └─systemd-update-utmp.service @4.345s +9ms
+ └─auditd.service @4.301s +42ms
+ └─systemd-tmpfiles-setup.service @4.254s +42ms
+ └─import-state.service @4.233s +19ms
+ └─local-fs.target @4.229s
+ └─Virtual.mount @4.019s +209ms
+ └─systemd-fsck@dev-mapper-vg_david2\x2dVirtual.service @3.742s +274ms
+ └─local-fs-pre.target @3.726s
+ └─lvm2-monitor.service @356ms +637ms
+ └─dm-event.socket @319ms
+ └─-.mount
+ └─system.slice
+ └─-.slice
+[root@david ~]#
+```
+
+前面有 `@` 的数字表示单元激活开始启动所使用的绝对秒数。前面有 `+` 的数字显示单元启动所需的时间。
+
+### 系统状态
+
+有时候你需要确定系统的当前状态,`systemd-analyze dump` 命令转储了当前系统状态的大量数据。有主要的启动时间戳,一个每个 systemd 单元的列表,并对每个单元状态进行了完整描述:
+
+```
+[root@david ~]# systemd-analyze dump
+Timestamp firmware: 1min 7.983523s
+Timestamp loader: 3.872325s
+Timestamp kernel: Wed 2020-08-26 12:33:35 EDT
+Timestamp initrd: Wed 2020-08-26 12:33:38 EDT
+Timestamp userspace: Wed 2020-08-26 12:33:42 EDT
+Timestamp finish: Wed 2020-08-26 16:33:56 EDT
+Timestamp security-start: Wed 2020-08-26 12:33:42 EDT
+Timestamp security-finish: Wed 2020-08-26 12:33:42 EDT
+Timestamp generators-start: Wed 2020-08-26 16:33:42 EDT
+Timestamp generators-finish: Wed 2020-08-26 16:33:43 EDT
+Timestamp units-load-start: Wed 2020-08-26 16:33:43 EDT
+Timestamp units-load-finish: Wed 2020-08-26 16:33:43 EDT
+Timestamp initrd-security-start: Wed 2020-08-26 12:33:38 EDT
+Timestamp initrd-security-finish: Wed 2020-08-26 12:33:38 EDT
+Timestamp initrd-generators-start: Wed 2020-08-26 12:33:38 EDT
+Timestamp initrd-generators-finish: Wed 2020-08-26 12:33:38 EDT
+Timestamp initrd-units-load-start: Wed 2020-08-26 12:33:38 EDT
+Timestamp initrd-units-load-finish: Wed 2020-08-26 12:33:38 EDT
+-> Unit system.slice:
+ Description: System Slice
+ Instance: n/a
+ Unit Load State: loaded
+ Unit Active State: active
+ State Change Timestamp: Wed 2020-08-26 12:33:38 EDT
+ Inactive Exit Timestamp: Wed 2020-08-26 12:33:38 EDT
+ Active Enter Timestamp: Wed 2020-08-26 12:33:38 EDT
+ Active Exit Timestamp: n/a
+ Inactive Enter Timestamp: n/a
+ May GC: no
+<截断:删除了大量的输出行>
+```
+
+在我的主工作站上,这个命令生成了 49680 行输出,大概 1.66MB,这个命令非常快,不需要等待。
+
+我很喜欢为各种连接设备(如存储设备)提供的大量细节。每个 systemd 单元有一个部分,包括各种运行时、缓存、日志目录的模式、启动单元的命令行、PID、开始时间戳,以及内存和文件限制等细节。
+
+`systemd-analyze` 的手册页里展示了 `systemd-analyze --user dump` 选项,目的是显示用户管理器的内部状态。但这个选项对我来说是失败的,互联网搜索之后表明它可能有一些问题。在 systemd 里,`--user` 实例用来管理和控制处理器给每个用户的进程资源。处理能力按分给每个用户的进程都属于一个控制组,我将在以后的文章中介绍。
+
+### 分析图表
+
+大多数啥都不懂的猥琐老板(PHB)和许多优秀的管理者都发现漂亮的图表比我通常喜欢的基于文本的系统性能数据更容易阅读和理解。但有时,即使是我也喜欢一个好的图表,`systemd-analyze` 提供了显示引导/启动数据的 [SVG][4] 矢量图表。
+
+下面的命令生成一个矢量图文件,来显示在引导和启动过程发生的事件。生成这个文件只需要几秒:
+
+```
+[root@david ~]# systemd-analyze plot > /tmp/bootup.svg
+```
+
+这个命令创建了一个 SVG 文件,SVG 是一个定义了一系列图形矢量的文本文件,包括 Image Viewer、Ristretto、Okular、Eye of Mate、LibreOffice Draw 在内的这些可以生成图形的应用,可以用 SVG 来创建图像。
+
+我用 LibreOffice Draw(LCTT 译注:一个办公文档软件)来渲染一幅图形。这张图形很大,你需要放到很大才能看清细节。这里是它的一小部分:
+
+![The bootup.svg file displayed in LibreOffice Draw.][5]
+
+图中时间轴上零点(0)的左边是引导阶段,零点的右边是启动阶段。这一小部分显示了内核、initrd 和 initrd 启动的进程。
+
+这张图一目了然地显示了什么时候启动,启动需要多少时间,以及主要的依赖项。关键路径用红色高亮显示。
+
+另外一个生成图形输出的命令是 `systemd-analyze plot`,它生成了 [DOT][7] 格式的文本依赖图。产生的数据流通过 `dot` 工具进行处理,这是一组用来从多种类型数据中生成矢量图文件的程序。这些 SVG 文件也能被上面列出的工具处理。
+
+首先,生成文件,在我的主工作站花了 9 分钟:
+
+```
+[root@david ~]# time systemd-analyze dot | dot -Tsvg > /tmp/test.svg
+ Color legend: black = Requires
+ dark blue = Requisite
+ dark grey = Wants
+ red = Conflicts
+ green = After
+
+real 8m37.544s
+user 8m35.375s
+sys 0m0.070s
+[root@david ~]#
+```
+
+我不会在这里重现输出,因为产生的图形就像一大堆意大利面条。但是你应该试试,看看我想让你看到的结果。
+
+### 条件
+
+在阅读 systemd-analyze(1) 的手册页时,我发现了一个更有趣的功能,但又有点通用,就是条件子命令。(是的,我确实在读手册页,而且我神奇地通过这种方式学到了很多东西!)。这个 `condition` 子命令能用来测试 systemd 单元文件中的条件和断言。
+
+它也可以在脚本中用来评估一个或多个条件 —— 如果所有条件都满足,则返回 0;如果有条件不满足,则返回 1。在其它情况下,它都会输出其结果文本。
+
+下面的例子来自手册页,稍微有点复杂。它测试了内核版本是否在 4.0 和 5.1 之间,主机是否使用交流电供电,系统结构是否是 ARM,以及 `/etc/os-release` 目录是否存在。我添加了 `echo $?` 来打印返回值。
+
+```
+[root@david ~]# systemd-analyze condition 'ConditionKernelVersion = ! <4.0' \
+ 'ConditionKernelVersion = >=5.1' \
+ 'ConditionACPower=|false' \
+ 'ConditionArchitecture=|!arm' \
+ 'AssertPathExists=/etc/os-release' ; \
+echo $?
+test.service: AssertPathExists=/etc/os-release succeeded.
+Asserts succeeded.
+test.service: ConditionArchitecture=|!arm succeeded.
+test.service: ConditionACPower=|false failed.
+test.service: ConditionKernelVersion=>=5.1 succeeded.
+test.service: ConditionKernelVersion=!<4.0 succeeded.
+Conditions succeeded.
+0
+[root@david ~]#
+```
+
+条件和断言的列表大约从 systemd.unit(5) 手册页的第 600 行左右开始。
+
+### 列出配置文件
+
+`systemd-analyze` 工具提供了一种将各种配置文件的内容发送到 STDOUT 的方法,如图所示。其基本目录是 `/etc/`。
+
+```
+[root@david ~]# systemd-analyze cat-config systemd/system/display-manager.service
+# /etc/systemd/system/display-manager.service
+[Unit]
+Description=LXDM (Lightweight X11 Display Manager)
+#Documentation=man:lxdm(8)
+Conflicts=getty@tty1.service
+After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service livesys-late.service
+#Conflicts=plymouth-quit.service
+
+[Service]
+ExecStart=/usr/sbin/lxdm
+Restart=always
+IgnoreSIGPIPE=no
+#BusName=org.freedesktop.lxdm
+
+[Install]
+Alias=display-manager.service
+[root@david ~]#
+```
+
+打了这么多字却和标准的 `cat` 命令做的差不多。我发现下一条命令小有帮助,它能在标准的 systemd 所在的位置搜索具有指定模式的内容:
+
+```
+[root@david ~]# systemctl cat backup*
+# /etc/systemd/system/backup.timer
+# This timer unit runs the local backup program
+# (C) David Both
+# Licensed under GPL V2
+#
+
+[Unit]
+Description=Perform system backups
+Requires=backup.service
+
+[Timer]
+Unit=backup.service
+OnCalendar=*-*-* 00:15:30
+
+[Install]
+WantedBy=timers.target
+
+
+# /etc/systemd/system/backup.service
+# This service unit runs the rsbu backup program
+# By David Both
+# Licensed under GPL V2
+#
+
+[Unit]
+Description=Backup services using rsbu
+Wants=backup.timer
+
+[Service]
+Type=oneshot
+Environment="HOME=/root"
+ExecStart=/usr/local/bin/rsbu -bvd1
+ExecStart=/usr/local/bin/rsbu -buvd2
+
+[Install]
+WantedBy=multi-user.target
+
+[root@david ~]#
+```
+
+这两个命令在每个文件的内容前面都有一个注释行,包含文件的完整路径和名称。
+
+### 单元文件检查
+
+当创建了一个新的单元文件,可以利用 `verify` 子命令帮助检查语法是否正确。它能指出来不正确的拼写,并列出缺失的服务单元。
+
+```
+[root@david ~]# systemd-analyze verify /etc/systemd/system/backup.service
+```
+
+秉承 Unix/Linux 的“沉默是金”的宗旨,没有输出意味着扫描的文件中没有错误。
+
+### 安全性
+
+`security` 子命令检查指定服务的安全级别。它只能针对服务单元,其他类型的单元文件不起作用:
+
+```
+[root@david ~]# systemd-analyze security display-manager
+ NAME DESCRIPTION >
+✗ PrivateNetwork= Service has access to the host's network >
+✗ User=/DynamicUser= Service runs as root user >
+✗ CapabilityBoundingSet=~CAP_SET(UID|GID|PCAP) Service may change UID/GID identities/capabilities >
+✗ CapabilityBoundingSet=~CAP_SYS_ADMIN Service has administrator privileges >
+✗ CapabilityBoundingSet=~CAP_SYS_PTRACE Service has ptrace() debugging abilities >
+✗ RestrictAddressFamilies=~AF_(INET|INET6) Service may allocate Internet sockets >
+✗ RestrictNamespaces=~CLONE_NEWUSER Service may create user namespaces >
+✗ RestrictAddressFamilies=~… Service may allocate exotic sockets >
+✗ CapabilityBoundingSet=~CAP_(CHOWN|FSETID|SETFCAP) Service may change file ownership/access mode/capabilities unres>
+✗ CapabilityBoundingSet=~CAP_(DAC_*|FOWNER|IPC_OWNER) Service may override UNIX file/IPC permission checks >
+✗ CapabilityBoundingSet=~CAP_NET_ADMIN Service has network configuration privileges >
+✗ CapabilityBoundingSet=~CAP_SYS_MODULE Service may load kernel modules
+<截断>
+✗ CapabilityBoundingSet=~CAP_SYS_TTY_CONFIG Service may issue vhangup() >
+✗ CapabilityBoundingSet=~CAP_WAKE_ALARM Service may program timers that wake up the system >
+✗ RestrictAddressFamilies=~AF_UNIX Service may allocate local sockets >
+
+→ Overall exposure level for backup.service: 9.6 UNSAFE ?
+lines 34-81/81 (END)
+```
+
+是的,表情符是输出的一部分。但是,当然,许多服务需要几乎完全访问所有的东西,以便完成它们的工作。我针对几个服务运行了这个程序,包括我自己的备份服务;结果可能有所不同,但最底下一行似乎大多是一样的。
+
+这个工具对于在严格的安全环境检查和修复用户空间的服务单元是很有用的。我不认为我们的大多数都能用到它。
+
+### 最后总结
+
+这个强力的工具提供了一些有趣而惊人的有用选项。本文探讨的大部分内容是关于使用 systemd-analyze 来深入了解 Linux 使用 systemd 的启动性能。它还可以分析 systemd 的其他方面。
+
+其中有些工具的作用有限,有几个应该完全忘记。但在解决启动和其他 systemd 功能的问题时,大多数都能起到很好的作用。
+
+### 资源
+
+互联网上关于 systemd 有很多信息,但是很多过于简略、晦涩,甚至是误导。除了这篇文章中提到的资源外,以下网页提供了关于systemd启动的更详细和可靠的信息。这个列表在我开始写这一系列文章后有所增长,以反映我所做的研究。
+
+ * [systemd.unit(5) 手册页][9] 包含了一份单元文件部分及其配置选项的清单,并对每个部分进行了简明的描述。
+ * Fedora 项目有一个很好的实用 [systemd 指南][10]。它包含了配置、管理和维护使用 systemd 的 Fedora 计算机所需的几乎所有知识。
+ * Fedora 项目还有一份很好的 [备忘录][11],将旧的 SystemV 命令与 systemd 命令进行了对照。
+ * Red Hat 文档包含了对 [单元文件结构][12] 的详细描述和其他重要的信息。
+ * 关于 systemd 技术的细节和创建它的原因,可以去看 Freedesktop.org [systemd 详述][13]。
+ * [Linux.com][14] 的“更多 systemd 乐趣”提供了很多高级的 systemd [信息和技巧][15]。
+
+此外,systemd 设计者和主要开发者 Lennart Poettering 也为 Linux 系统管理员撰写了一系列深度技术文档,尽管这些文章写于 2010 年 4 月到 2011 年 9 月,现在看也是非常适应时宜。关于 systemd 及其生态系统的其他好文章,大部分都是基于这些文章的。
+
+ * [Rethinking PID 1][16]
+ * [systemd for Administrators, Part I][17]
+ * [systemd for Administrators, Part II][18]
+ * [systemd for Administrators, Part III][19]
+ * [systemd for Administrators, Part IV][20]
+ * [systemd for Administrators, Part V][21]
+ * [systemd for Administrators, Part VI][22]
+ * [systemd for Administrators, Part VII][23]
+ * [systemd for Administrators, Part VIII][24]
+ * [systemd for Administrators, Part IX][25]
+ * [systemd for Administrators, Part X][26]
+ * [systemd for Administrators, Part XI][27]
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/20/9/systemd-startup-configuration
+
+作者:[David Both][a]
+选题:[lujun9972][b]
+译者:[jiamn](https://github.com/jiamn)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/dboth
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/find-file-linux-code_magnifying_glass_zero.png?itok=E2HoPDg0 (Magnifying glass on code)
+[2]: https://opensource.com/article/20/7/systemd-calendar-timespans
+[3]: https://opensource.com/article/20/5/systemd-startup?utm_campaign=intrel
+[4]: https://en.wikipedia.org/wiki/Scalable_Vector_Graphics
+[5]: https://opensource.com/sites/default/files/uploads/bootup.svg-graph.png (The bootup.svg file displayed in LibreOffice Draw.)
+[6]: https://creativecommons.org/licenses/by-sa/4.0/
+[7]: https://en.wikipedia.org/wiki/DOT_(graph_description_language)
+[8]: mailto:getty@tty1.service
+[9]: https://man7.org/linux/man-pages/man5/systemd.unit.5.html
+[10]: https://docs.fedoraproject.org/en-US/quick-docs/understanding-and-administering-systemd/index.html
+[11]: https://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet
+[12]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/managing-services-with-systemd_configuring-basic-system-settings#Managing_Services_with_systemd-Unit_File_Structure
+[13]: https://www.freedesktop.org/wiki/Software/systemd/
+[14]: http://Linux.com
+[15]: https://www.linux.com/training-tutorials/more-systemd-fun-blame-game-and-stopping-services-prejudice/
+[16]: http://0pointer.de/blog/projects/systemd.html
+[17]: http://0pointer.de/blog/projects/systemd-for-admins-1.html
+[18]: http://0pointer.de/blog/projects/systemd-for-admins-2.html
+[19]: http://0pointer.de/blog/projects/systemd-for-admins-3.html
+[20]: http://0pointer.de/blog/projects/systemd-for-admins-4.html
+[21]: http://0pointer.de/blog/projects/three-levels-of-off.html
+[22]: http://0pointer.de/blog/projects/changing-roots
+[23]: http://0pointer.de/blog/projects/blame-game.html
+[24]: http://0pointer.de/blog/projects/the-new-configuration-files.html
+[25]: http://0pointer.de/blog/projects/on-etc-sysinit.html
+[26]: http://0pointer.de/blog/projects/instances.html
+[27]: http://0pointer.de/blog/projects/inetd.html
diff --git a/published/202204/20201116 Linux Jargon Buster- What is Grub in Linux- What is it Used for.md b/published/202204/20201116 Linux Jargon Buster- What is Grub in Linux- What is it Used for.md
new file mode 100644
index 0000000000..866c1ec794
--- /dev/null
+++ b/published/202204/20201116 Linux Jargon Buster- What is Grub in Linux- What is it Used for.md
@@ -0,0 +1,149 @@
+[#]: collector: (lujun9972)
+[#]: translator: (lkxed)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14427-1.html)
+[#]: subject: (Linux Jargon Buster: What is Grub in Linux? What is it Used for?)
+[#]: via: (https://itsfoss.com/what-is-grub/)
+[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)
+
+Linux 黑话解释:Linux 中的 GRUB 是什么?
+======
+
+
+
+如果你曾经使用过 Linux 桌面,你一定见过这个屏幕。这就是所谓的 GRUB 屏幕。是的,它的字母全部都是大写的。
+
+![Remember this screen? This is GRUB][1]
+
+在 “Linux 黑话解释Linux Jargon Buster”系列的这一个章节中,我将告诉你 GRUB 是什么,以及它有什么用处。此外,我还会简要地介绍一下配置和定制的部分。
+
+### GRUB 是什么?
+
+[GRUB][2] 是一个用于加载和管理系统启动的完整程序。它是 Linux 发行版中最常见的引导程序bootloader。引导程序是计算机启动时运行的第一个软件。它加载 [操作系统的内核][3],然后再由内核初始化操作系统的其他部分(包括 Shell、[显示管理器][4]、[桌面环境][5] 等等)。
+
+### 引导程序和引导管理器
+
+我不想现在就把你搞糊涂,但是我认为这个话题是不可避免的。引导程序boot loader和引导管理器boot manager之间有着一条模糊的界限。
+
+你已经知道了引导程序是什么。它会首先启动,然后将内核加载到内存中并执行它。引导管理器则允许你在不同的操作系统之间进行选择(如果你的电脑上不止一个操作系统的话)。引导管理器并不会直接加载系统。
+
+随着 Linux 内核 3.3 版本的推出,[Linux 内核包括了一个内置的 EFI 引导程序][6]。事实上,任何一个[支持 EFI 的系统都包括一个 EFI 引导程序][7]。在支持 EFI 的系统中,固件会读取 EFI 系统分区EFI System Partition(ESP)中的 EFI 文件,从而获得启动信息。
+
+这里插入一张图片,图中显示了带有 ESP 分区的分区表:
+
+![][8]
+
+GRUB 既是一个引导程序,也是一个引导管理器。一会儿我再来谈 GRUB。让我们先看看其他类似 GRUB 的程序。
+
+> 小知识:GRUB 是 **GR**and **U**nified **B**ootloader(大一统引导程序) 的首字母缩写。
+
+### GRUB 屏幕上的那些行是什么意思?
+
+你会在 GRUB 屏幕上看到几行字。这些行对于不同的设置、不同的发行版会有所不同。
+
+通常情况下,第一行是你的 Linux 发行版。如果你看到类似高级选项的东西,你可以进入其中,找到一些以 “linux-generic-x-y-z” 等开头的行。
+
+当你的 Linux 发行版更新内核版本时,它至少会保留一个旧版本。你可以选择启动到旧的 Linux 内核,以防你的系统遇到新更新的 Linux 内核的任何问题。
+
+在基于 Ubuntu 的发行版中,你也可以看到一个恢复选项。
+
+![][8a]
+
+*在高级选项下,通常有一个旧的内核版本和恢复选项*
+
+在最后,你可能会看到一个条目,如系统设置或 UEFI 设置,以访问系统的 BIOS 设置。
+
+### 还有哪些类似 GRUB 的引导管理器?
+
+GRUB 是 Linux 中最流行的引导管理器。但它并不是唯一的一个。有一个高度可定制的引导管理器,名字叫做 [rEFInd 引导管理器][9],它同样受到了一些 Linux 用户的喜爱。
+
+![定制化的 rEFInd 引导管理器屏幕 | 图片来源:kofler.info/pop_os][10]
+
+还有一个基于文本的引导管理器,名字叫做 [systemd-boot][11]。你可以猜到这是专为基于 systemd 的 Linux 发行版准备的。有一些发行版正在使用 systemd-boot,比如 Pop OS。
+
+![Pop OS 中的 systemd-boot | 图片来源:kofler.info/pop_os][12]
+
+### 访问或编辑 GRUB
+
+通常你看到的 GRUB 屏幕是它的菜单界面。如果你安装了一个以上的操作系统,它会允许你在其中选择一个来启动。如果你的 Linux 发行版安装了不止一个内核,你也可以选择加载不同的内核。
+
+根据不同的 Linux 发行版的配置,你的 GRUB 菜单上可能会有一些其他选项。
+
+你可以在 GRUB 菜单界面按 `e` 键来编辑菜单项。这样你就可以在内核加载前修改它的参数。例如,在某些情况下,[禁用内核提供的图形驱动可以帮助你解决 Linux 系统在启动时卡住的问题][13]。
+
+![][14]
+
+你也可以在 GRUB 菜单界面上按 `c` 键来进入 GRUB 的命令行菜单。
+
+### GRUB 配置文件
+
+你在菜单界面里对 GRUB 所做的任何改变都是暂时的。如果你想对 GRUB 做一些永久性的改变,比如改变默认的超时时间,你可以在 Linux 系统启动后修改 GRUB 配置文件。
+
+默认的 GRUB 配置文件是 `/etc/default/grub`。还有一个 `/etc/default/grub.d` 目录,里面也存放一些配置。你可以直接编辑 `/etc/default/grub` 文件,但是我还是建议通过在这个目录中添加配置文件(`.cfg` 文件)进行额外的修改。
+
+![默认的 GRUB 配置文件][15]
+
+你必须 [更新 GRUB 才能使这些修改生效][16]。
+
+### 使用 GRUB 定制器来定制 GRUB
+
+如果你不太习惯 [在终端里使用文本编辑器编辑文件][17],你可以 [使用一个叫做 GRUB 定制器的图形工具][18]。
+
+它允许你改变启动顺序、默认超时时间等等。你还可以用它来把 GRUB 的背景设置成一张自定义的墙纸。
+
+![][19]
+
+GRUB 定制器可以在 Ubuntu 20.04 中从 Universe 仓库安装,在 Ubuntu 18.04 中 [通过 PPA 安装][22]。它可以 [通过 AUR][23] 在基于 Arch Linux 的发行版中使用。
+
+### 总结
+
+至此,本文几乎涉及到了所有与 GRUB 相关的简单内容。至于 EFI、引导加载和 GRUB 本身,它们都是详细而复杂的话题,因此不在本文的讨论范围之内。这篇文章旨在给你一个关于 GRUB 引导程序的总体概述。
+
+或许我以后会写一篇关于 GRUB 的详细指南,解释它底层的一些细节。目前,如果你想了解更多关于 GRUB 的信息,你可以在你的 Linux 终端里使用 `info grub` 命令访问到 GRUB 文档。
+
+![你可以在终端中访问 GRUB 手册][20]
+
+我希望你现在对什么是 GRUB 有了一点点的了解。这里有一个 GIF 动图供你一乐。
+
+![什么是 GRUB? UEFI 再也伤害不到我了 :)][21]
+
+或许我没有回答你关于 GRUB 的所有疑问,但请随时在评论区告诉我。我可能会根据你的问题或建议来更新这篇文章。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/what-is-grub/
+
+作者:[Abhishek Prakash][a]
+选题:[lujun9972][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[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/lujun9972
+[1]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/11/grub-screen-linux.png?resize=800%2C450&ssl=1
+[2]: https://www.gnu.org/software/grub/
+[3]: https://itsfoss.com/what-is-linux/
+[4]: https://linux.cn/article-12773-1.html
+[5]: https://linux.cn/article-12579-1.html
+[6]: https://www.rodsbooks.com/efi-bootloaders/efistub.html
+[7]: https://jdebp.eu/FGA/efi-boot-process.html
+[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/11/disk-partition-gparted.png?resize=744%2C385&ssl=1
+[8a]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2012/07/boot-into-recovery-mode-ubuntu-1.jpg?w=635&ssl=1
+[9]: https://www.rodsbooks.com/refind/
+[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/11/refind-boot-manager.png?resize=800%2C602&ssl=1
+[11]: https://wiki.gentoo.org/wiki/Systemd-boot
+[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/11/systemd-boot.png?resize=714%2C333&ssl=1
+[13]: https://itsfoss.com/fix-ubuntu-freezing/
+[14]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/04/editing-grub-to-fix-nvidia-issue.jpg?resize=800%2C343&ssl=1
+[15]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/11/default-grub-config-file.png?resize=759%2C437&ssl=1
+[16]: https://itsfoss.com/update-grub/
+[17]: https://itsfoss.com/command-line-text-editors-linux/
+[18]: https://itsfoss.com/grub-customizer-ubuntu/
+[19]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2013/05/make-windows-default-grub-2.jpeg?resize=799%2C435&ssl=1
+[20]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/11/grub-manual-Linux-terminal.png?resize=800%2C462&ssl=1
+[21]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/11/what_is_GRUB.gif?resize=500%2C343&ssl=1
+[22]: https://itsfoss.com/ppa-guide/
+[23]: https://itsfoss.com/aur-arch-linux/
\ No newline at end of file
diff --git a/published/202204/20201212 Power up your Linux terminal text editor with ed.md b/published/202204/20201212 Power up your Linux terminal text editor with ed.md
new file mode 100644
index 0000000000..c7cd6df825
--- /dev/null
+++ b/published/202204/20201212 Power up your Linux terminal text editor with ed.md
@@ -0,0 +1,188 @@
+[#]: collector: (lujun9972)
+[#]: translator: (lkxed)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14431-1.html)
+[#]: subject: (Power up your Linux terminal text editor with ed)
+[#]: via: (https://opensource.com/article/20/12/gnu-ed)
+[#]: author: (Seth Kenlon https://opensource.com/users/seth)
+
+在 Linux 终端上使用行编辑器 ed
+======
+
+> 这个看似简单的编辑器为用户提供了许多易于学习和使用的命令。
+
+
+
+GNU `ed` 命令是一个行编辑器。它被认为是标准的 Unix 文本编辑器,因为它是首个出现在 Unix 的文本编辑器,并且它曾经无处不在,你在任何一个 POSIX 系统中都能找到它(通常来说,你现在也可以)。在某种程度上,你可以很容易看出来它是第一个文本编辑器,因为它在许多方面的功能都十分基础。和其他大多数的文本编辑器不同,它不会打开一个属于自己的窗口或显示区域,事实上,在默认情况下,它甚至不会提示用户输入文字。从另一个方面来说,它在交互功能上的缺失也可以成为一个优点。它是一个多功能的编辑器,你可以用简短的命令控制它,无论是在交互式的命令行中,还是在编写的 shell 脚本里。
+
+### 安装 ed
+
+如果你正在使用 Linux 或者 BSD 的话,你很可能已经默认安装了 `ed`(在 Linux 上是 GNU 版 `ed`,而在 BSD 上是 BSD 版 `ed`)。但是,一些极简的环境可能没有包括 `ed`,这也没关系,你的发行版的软件仓库中很可能有 `ed` 可供下载。macOS 默认安装了 BSD 版 `ed`。
+
+### 启动 ed
+
+当你启动 `ed` 的时候,你的终端提示符不见了,看起来好像是 `ed` 停止运行了。其实它没有,它只是在等待你输入指令而已。
+
+```
+$ ed
+```
+
+为使 `ed` 显示更详细的信息,你可以输入命令 `p` 让它返回一个提示符:
+
+```
+$ ed
+p
+?
+```
+
+这个问号(`?`)是默认的 `ed` 提示符。
+
+### 缓冲区
+
+当 `ed` 激活时,你其实是在和一个叫 缓冲区buffer 的东西打交道。缓冲区是内存中的一块区域。你并不会直接编辑文件,而是在编辑它对应的缓冲区。当你退出 `ed` 却没有把修改保存到磁盘的文件上时,所有的修改都会丢失,因为它们只在缓冲区里存在。(这对于一个已经习惯了初始的 草图缓冲区scratch buffer 的资深 Emacs 用户可能很耳熟。)
+
+### 使用 ed 输入文本
+
+启动 `ed` 后,你处于命令模式。这意味着你可以向编辑器发送指令,比如让它显示一个提示符,而不是空白区域。你可以使用 `a` 命令开始附加文本到当前的缓冲区,使用一个实心的点 `.` 来终止输入。比如,下面的这个例子往缓冲区里附加了两行文字(“hello world” 和 “hello ed”):
+
+```
+?
+a
+hello world
+hello ed
+.
+```
+
+使用点 `.` 终止输入后,你将回到命令模式。
+
+### 查看缓冲区
+
+怎样查看当前缓冲区里都有什么呢?你可以输入想要查看的行号,也可以使用 `,p` 命令来显示所有的行:
+
+```
+?
+1
+hello world
+2
+hello ed
+,p
+hello world
+hello ed
+```
+
+### 写入文件
+
+如果你现在对文本很满意,你可以使用 `w` 命令把缓冲区写入到文件中,后面跟上目标文件名:
+
+```
+?
+w example.txt
+19
+```
+
+写操作后显示的那个数字代表着写入到文件中的字符数。
+
+### 读取文件
+
+除了使用 `ed` 来读取文本,你也可以使用 `r` 命令把一个已经存在的文件加载到到缓冲区里:
+
+```
+?
+r myfile.txt
+```
+
+另外,你也可以在启动 `ed` 时,在它后面加上你想要加载到缓冲区里的文件名:
+
+```
+$ ed myfile.txt
+```
+
+### 编辑缓冲区
+
+鉴于 `ed` 是一个文本编辑器,你当然可以使用一种特殊的语法来编辑缓冲区里的文本。使用 `sed` 或 `vim` 的用户或许会觉得这个语法很熟悉。假设现在缓冲区里已经加载了一个文件:
+
+```
+$ ed myfile.txt
+,p
+This is an example document.
+There is some text, but not much.
+There is some errors, but not much.
+```
+
+如果你要把第一句话中的 `document` 修改为 `file`,你可以先选择目标行(`1`),然后使用 `s` 命令调用搜索函数,后面跟着搜索文本和替换文本:
+
+```
+?
+1
+This is an example document.
+s/document/file/
+1
+This is an example file.
+```
+
+如果你要编辑其他行,步骤也是一样的,只需提供一个不同的行号即可:
+
+```
+?
+3
+There is some errors, but not much.
+s/is/are/
+s/much/many/
+```
+
+你可以使用 `,p` 命令来看到你对缓冲区的历史编辑记录:
+
+```
+This is an example file.
+There is some text, but not much.
+There are some errors, but not many.
+```
+
+当然,这些修改只存在于缓冲区里。你如果在 `ed` 编辑器外查看这个文件,你只会看到原始的文本:
+
+```
+$ cat myfile.txt
+This is an example document.
+There is some text, but not much.
+There is some errors, but not much.
+```
+
+如果你要把这些修改保存回文件中,使用 `w` 命令即可:
+
+```
+w myfile.txt
+258
+```
+
+### 清空缓冲区
+
+如果想要得到一个新的缓冲区,以此来打开一个新的文件,或者把一个新的文件加载到不同的环境中,你可以使用 `c` 命令。使用这个清空缓冲区后,什么也不会输出,因为缓冲已经是空的了:
+
+```
+c
+,p
+```
+
+### 退出
+
+如果要退出当前的 `ed` 会话,你可以使用 `q` 命令。它并不会给你一个保存缓冲区的机会,所以你要确保自己在这之前执行了保存操作。
+
+### 尝试一下 ed 吧
+
+`ed` 还可以做到很多事情,学习 `ed` 可以让你知道它和部分的 `vim` 是如何工作的。我并没有尝试使用 `ed` 来写这篇文章,老实说,我也不认为它是通常意义上的最佳文本编辑器。但是,`ed` 仍然是一个出色的编辑器。通过阅读它的文档,你可以很轻松地学会它。在 GNU 系统上,你可以使用 `info ed` 来查看它的操作手册。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/20/12/gnu-ed
+
+作者:[Seth Kenlon][a]
+选题:[lujun9972][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/seth
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/terminal_command_linux_desktop_code.jpg?itok=p5sQ6ODE (Terminal command prompt on orange background)
diff --git a/published/202204/20210116 Install Privacy-friendly WhatsApp Alternative Signal on Linux Desktop.md b/published/202204/20210116 Install Privacy-friendly WhatsApp Alternative Signal on Linux Desktop.md
new file mode 100644
index 0000000000..cb92ac0274
--- /dev/null
+++ b/published/202204/20210116 Install Privacy-friendly WhatsApp Alternative Signal on Linux Desktop.md
@@ -0,0 +1,156 @@
+[#]: collector: "lujun9972"
+[#]: translator: "hwlife"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14419-1.html"
+[#]: subject: "Install Privacy-friendly WhatsApp Alternative Signal on Linux Desktop"
+[#]: via: "https://itsfoss.com/install-signal-ubuntu/"
+[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
+
+在 Linux 桌面上安装隐私友好的 Signal
+======
+
+
+
+自从我们报道将 Signal 作为即时通讯软件的理想选择以来,已经过去一年多了。虽然具有隐私意识的人和静态技术的人已经意识到了这个了不起的软件的存在,与此同时,在最近的 WhatsApp 隐私政策更新之后,Signal 更是得到了很多人的褒奖。
+
+无论什么原因,如果你对 Signal 一无所知,想知道是否能在桌面上使用 Signal,那么答案是肯定的。你可以在 Linux、Windows 和 macOS 系统以及智能手机上安装 Signal。
+
+![Signal Messenger on Pop OS Linux distribution][3]
+
+我不打算强调 Signal 的功能,因为你可能已经有所了解。我只想向你展示在 Linux 桌面上安装 Signal 的不同方法:
+
+ * 用 Snap 包在 Liunx 上安装 Signal(Snap 应用程序需要更长的时间来加载,但可以获得自动更新和轻松的安装)
+ * 用 apt 包在基于 Debian 和 Ubuntu 的发行版上安装 Signal(添加软件库需要额外的操作,但已安装的应用程序会自动更新)
+ * 用 AUR 在 Arch 和 Manjaro Linux 上安装 Signal
+ * 用 Flatpak 包在 Fedora 等 Linux 系统上安装 Signal
+
+你可以基于你的发行版和偏好来选择这些安装方法的其中一种:
+
+### 方法 1:用 Snap 包在 Linux 上安装 Signal
+
+如果你正在使用 Ubuntu,你可以在软件中心找到 Signal 桌面版程序的 Snap 格式的软件包。
+
+![][4]
+
+或者,你可以在任何 [有 Snap 包支持功能的 Linux 发行版][6] 上 [使用 Snap 命令][5] 安装 Signal。
+
+```
+sudo snap install signal-desktop
+```
+
+你可以使用 `snap remove` 命令或者从软件中心删除它。
+
+有些人不喜欢 Snap 包是因为它们启动时间太长。好消息是你能够使用 `apt` 命令来安装 Signal。下一节我们讨论它。
+
+### 方法 2:通过 apt 在基于 Debian 和 Ubuntu 的发行版上安装 Signal(使用官方 Signal 仓库)
+
+这里是你在 Debian、Ubuntu、Linux Mint、elementary OS 和基于 Debian/Ubuntu 的其他发行版中安装 Signal 必须遵循的步骤。你可以 [复制这些命令并将其粘贴到终端][7]。
+
+第一件事是得到官方 Signal 仓库的 GPG 密钥,并且把它加入到你的 APT 包管理器可信任的密钥中。
+
+```
+wget -O- https://updates.signal.org/desktop/apt/keys.asc | sudo apt-key add -
+```
+
+密钥添加之后,你可以将仓库安全的添加的你的系统中。**不要因为仓库名称使用了 xenial 就惊慌失措**。它可以在 Ubuntu 18.04、20.04 和更新的版本以及 Debian、Mint 等系统中工作。
+
+```
+echo "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" | sudo tee -a /etc/apt/sources.list.d/signal-xenial.list
+```
+
+借助 [Linux 的 tee 命令][8],在 `/etc/apt/sources.list.d` 目录下你将会有一个叫做 `signal-xenial.list` 的新文件。这个新文件有 Signal 仓库信息即 `deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main`。
+
+既然你已经添加了仓库,那么来更新缓存并安装 Signal 桌面程序吧:
+
+```
+sudo apt update && sudo apt install signal-desktop
+```
+
+一旦安装成功,在程序菜单找到 Signal 然后启动它。
+
+![][9]
+
+由于你已经添加了仓库,你安装的 Signal 程序将会伴随系统日常更新而自动更新。
+
+享受在 Linux 桌面上使用 Signal 加密通讯的乐趣吧。
+
+#### 删除 Signal
+
+如果我不分享给你删除的步骤,那么指南是不完整的。让我们看一下。
+
+首先,删除该程序:
+
+```
+sudo apt remove signal-desktop
+```
+
+你可以留下它,也可以从系统中删除 Signal 仓库。对你来说是都是可以的。仓库继续在系统里的话,你可以轻松的再次安装 Signal。如果你删除了仓库的话,你得按照之前的步骤再次重新添加仓库。
+
+如果你也想同时删除掉 Signal 仓库,你可以选择图形化方法,通过“软件和更新”工具,在那里删除它。
+
+![][10]
+
+或者,你可以用 `rm` 命令来删除这个文件:
+
+```
+rm -i /etc/apt/sources.list.d/signal-xenial.list
+```
+
+### 方法 3:用 AUR 在 Arch 和 Manjaro Linux 上安装 Signal
+
+通过 [AUR][12] 在 [基于 Arch 的 Linux 发行版][11] 上安装 Signal 是有效的。如果你在 Manjaro 上使用 Pamac 并且启用了 AUR,在包管理器里你可以找到 Signal。
+
+否则,你可以经常 [使用 AUR 辅助工具][13]。
+
+```
+sudo yay -Ss
+```
+
+我相信你能够在相似的功能中删除 Signal。
+
+### 方法 4:用 Flatpak 包在 Fedora 等 Linux 系统上安装 Signal
+
+Signal 没有 RPM 的安装文件。然而,[Flatpak 包是有的][14],你可以在 Fedora 上用它来安装 Signal。
+
+```
+flatpak install flathub org.signal.Signal
+```
+
+一旦安装成功,你可以从菜单中运行它,或者在终端中输入以下命令:
+
+```
+flatpak run org.signal.Signal
+```
+
+
+Signal 和 Telegram 是抛弃掉 WhatsApp 的两个主流而可行的选择。这两个软件都提供原生的 Linux 桌面程序。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/install-signal-ubuntu/
+
+作者:[Abhishek Prakash][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlife)
+校对:[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/lujun9972
+[1]: https://itsfoss.com/signal-messaging-app/
+[2]: https://signal.org/
+[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/12/signal-shot.jpg?resize=800%2C565&ssl=1
+[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/signal-desktop-ubuntu.png?resize=800%2C425&ssl=1
+[5]: https://itsfoss.com/use-snap-packages-ubuntu-16-04/
+[6]: https://itsfoss.com/install-snap-linux/
+[7]: https://itsfoss.com/copy-paste-linux-terminal/
+[8]: https://linuxhandbook.com/tee-command/
+[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/signal-app-in-ubuntu.jpg?resize=795%2C230&ssl=1
+[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/remove-signal-repository.png?resize=800%2C401&ssl=1
+[11]: https://itsfoss.com/arch-based-linux-distros/
+[12]: https://itsfoss.com/aur-arch-linux/
+[13]: https://itsfoss.com/best-aur-helpers/
+[14]: https://flathub.org/apps/details/org.signal.Signal
+[15]: https://t.me/joinchat/AAAAAEPRGUJrEE1itjpH6A
diff --git a/published/202204/20210126 Automate setup and delivery for virtual machines in the cloud.md b/published/202204/20210126 Automate setup and delivery for virtual machines in the cloud.md
new file mode 100644
index 0000000000..704d98bcc7
--- /dev/null
+++ b/published/202204/20210126 Automate setup and delivery for virtual machines in the cloud.md
@@ -0,0 +1,160 @@
+[#]: collector: (lujun9972)
+[#]: translator: (hwlife)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14524-1.html)
+[#]: subject: (Automate setup and delivery for virtual machines in the cloud)
+[#]: via: (https://opensource.com/article/21/1/testcloud-virtual-machines)
+[#]: author: (Sumantro Mukherjee https://opensource.com/users/sumantro)
+
+在云端自动化设置和交付虚拟机
+======
+
+> 通过使用 Testcloud 自动化设置过程并交付一个准备运行的虚拟机,在几分钟之内准备好一个云镜像。
+
+
+
+如果你是一个在云端使用 Fedora [qcow2 镜像][2] 的开发者或者爱好者,在一个镜像准备使用之前,你总是不得不做一大堆初始化设置。我对此深有体会,所以我很想找到一种使设置过程更加简单的方法。碰巧,整个 Fedora 质量保证团队也有同感,所以我们开发了 [Testcloud][3] 。
+
+Testcloud 是一个可以轻松的在几分钟之内准备云镜像测试的工具。它用几个命令就可以在云端自动化设置并交付准备运行的虚拟机(VM)。
+
+Testcloud:
+
+ 1. 下载 qcow2 镜像
+ 2. 用你选择的名称创建实例
+ 3. 创建一个密码为 `passw0rd`,用户名为 `fedora` 的用户
+ 4. 分配一个 IP 地址,以便于你之后用 SSH 登录到云端
+ 5. 启动、停止、删除和列出一个实例
+
+### 安装 Testcloud
+
+要开始你的旅程,首先你必须安装 Testcloud 软件包。你可以通过终端或者“软件”应用来安装它。在这两种情况下,软件包的名字都是 `testcloud` 。用以下命令安装:
+
+```
+$ sudo dnf install testcloud -y
+```
+
+一旦安装完成,将你所需要的用户添加到 `testcloud` 用户组,这有助于 Testcloud 自动完成设置过程的剩余部分。执行这两个命令,添加你的用户到 `testcloud` 用户组,并通过提升组权限重启会话:
+
+```
+$ sudo usermod -a -G testcloud $USER
+$ su - $USER
+```
+
+![添加用户到 testcloud 组][4]
+
+### 像老手一样玩转云镜像
+
+一旦你的用户获得了所需的组权限,创建一个实例:
+
+```
+$ testcloud instance create -u
+```
+
+或者,你可以使用 `fedora:latest/fedora:XX`(`XX` 是你的 Fedora 发行版本)来代替 完整的 URL 地址:
+
+```
+$ testcloud instance create -u fedora:latest
+```
+
+这将返回你的虚拟机的 IP 地址:
+
+```
+$ testcloud instance create testcloud272593 -u https://download.fedoraproject.org/pub/fedora/linux/releases/33/Cloud/x86_64/images/Fedora-Cloud-Base-33-1.2.x86_64.qcow2
+[...]
+INFO:Successfully booted instance testcloud272593
+The IP of vm testcloud272593: 192.168.122.202
+------------------------------------------------------------
+To connect to the VM, use the following command (password is 'passw0rd'):
+ssh fedora@192.168.122.202
+```
+
+你可以用默认用户 `fedora` 登录,密码是 `passw0rd`(注意是零)。你可以使用 `ssh`、`virt-manager` 或者支持连接到 libvirt 虚拟机方式来连接到它。
+
+另一种创建 Fedora 云的方式是:
+
+```
+$ testcloud instance create testcloud193 -u fedora:33
+
+WARNING:Not proceeding with backingstore cleanup because there are some testcloud instances running.
+You can fix this by following command(s):
+testcloud instance stop testcloud272593
+
+DEBUG:Local downloads will be stored in /var/lib/testcloud/backingstores.
+DEBUG:successfully changed SELinux context for image /var/lib/testcloud/backingstores/Fedora-Cloud-Base-33-1.2.x86_64.qcow2
+DEBUG:Creating instance directories
+DEBUG:creating seed image /var/lib/testcloud/instances/testcloud193/testcloud193-seed.img
+INFO:Seed image generated successfully
+INFO:Successfully booted instance testcloud193
+The IP of vm testcloud193: 192.168.122.225
+------------------------------------------------------------
+To connect to the VM, use the following command (password is 'passw0rd'):
+ssh fedora@192.168.122.225
+------------------------------------------------------------
+```
+
+### 玩转实例
+
+Testcloud 可以用来管理实例。这包括像列出镜像或者停止和启动一个实例等活动。
+
+要列出实例,使用 `list` 子命令:
+
+```
+$ testcloud instance list
+Name IP State
+------------------------------------------------------------
+testcloud272593 192.168.122.202 running
+testcloud193 192.168.122.225 running
+testcloud252793 192.168.122.146 shutoff
+testcloud93 192.168.122.152 shutoff
+```
+
+要停止一个运行的实例:
+
+```
+$ testcloud instance stop testcloud193
+DEBUG:stop instance: testcloud193
+DEBUG:stopping instance testcloud193.
+```
+
+要删除一个实例:
+
+```
+$ testcloud instance destroy testcloud193
+DEBUG:remove instance: testcloud193
+DEBUG:removing instance testcloud193 from libvirt.
+DEBUG:Unregistering instance from libvirt.
+DEBUG:removing instance /var/lib/testcloud/instances/testcloud193 from disk
+```
+
+要重启一个运行中的实例:
+
+```
+$ testcloud instance reboot testcloud93
+DEBUG:stop instance: testcloud93
+[...]
+INFO:Successfully booted instance testcloud93
+The IP of vm testcloud93: 192.168.122.152
+usage: testcloud [-h] {instance,image} ...
+```
+
+尝试一下 Testcloud ,在评论中让我知道你的想法。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/1/testcloud-virtual-machines
+
+作者:[Sumantro Mukherjee][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlife)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/sumantro
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/tips_map_guide_ebook_help_troubleshooting_lightbulb_520.png?itok=L0BQHgjr (Looking at a map)
+[2]: https://en.wikipedia.org/wiki/Qcow
+[3]: https://pagure.io/testcloud
+[4]: https://opensource.com/sites/default/files/uploads/adduser.png (Add user to testcloud group)
+[5]: https://creativecommons.org/licenses/by-sa/4.0/
diff --git a/published/202204/20210312 Build a router with mobile connectivity using Raspberry Pi.md b/published/202204/20210312 Build a router with mobile connectivity using Raspberry Pi.md
new file mode 100644
index 0000000000..f4dcea7ed1
--- /dev/null
+++ b/published/202204/20210312 Build a router with mobile connectivity using Raspberry Pi.md
@@ -0,0 +1,256 @@
+[#]: subject: (Build a router with mobile connectivity using Raspberry Pi)
+[#]: via: (https://opensource.com/article/21/3/router-raspberry-pi)
+[#]: author: (Lukas Janėnas https://opensource.com/users/lukasjan)
+[#]: collector: (lujun9972)
+[#]: translator: (hwlife)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14474-1.html)
+
+使用树莓派建立一个带有移动网络连接功能的路由器
+======
+
+> 在你的网络路由器上使用 OpenWRT 获得更多控制功能。
+
+![Mesh networking connected dots][1]
+
+树莓派是一种小型单板电脑,尽管只有信用卡大小,但是能做许多事情。实际上,这个小电脑几乎可以成为你想让它成为的任何东西,只要你打开想象力。
+
+树莓派爱好者已经做了许多不同的项目,从简单的程序到复杂的自动化项目和解决方案,如气象站,甚至智能家居设备。这篇文章将展示怎样使用 OpenWRT 项目将你的树莓派变成带有 LTE 移动网络连接功能的路由器。
+
+### 关于 OpenWRT 和 LTE
+
+[OpenWRT][2] 是一个利用 Linux 内核为嵌入式设备开发的开源项目,它已经存在超过 15 年了,拥有一个庞大而活跃的社区。
+
+有许多使用 OpenWRT 的方法,但是它的主要目的还是用在路由器上。它提供了包管理功能和一个完全可写的文件系统,并且因为它的的开源属性,你可以查看和修改代码,并贡献到开源生态。如果你想对你的路由器获得更多的控制,这就是你想要的系统。
+
+长期演进技术Long-term evolution(LTE)是一个基于 GSM/EGDE 和 UMTS/HSPA 技术的无线宽带通信标准。我使用的 LTE 调制解调器是一个 USB 设备,可以为树莓派电脑增加 3G 或 4G(LTE)蜂窝连接。
+
+![Teltonika TRM240 modem][3]
+
+### 安装前的准备
+
+对这个项目来说,你需要:
+
+ * 一个带有电源线的树莓派
+ * 一台运行 Linux 的电脑
+ * 一张至少 16GB 的 SD 储存卡
+ * 以太网线
+ * LTE 调制解调器(我使用的是 Teltonika [TRM240][5])
+ * 一张移动网络的 SIM 卡
+
+### 安装 OpenWRT
+
+首先,下载最新的 [兼容树莓派的 OpenWRT 的发布版本][6]。在 OpenWRT 官网,你可以看到 4 个镜像:两个 **ext4** 文件系统的和两个 **squashfs** 文件系统的。我使用 **ext4** 文件系统。你可以下载 **factory** 或者 **sysupgrade** 镜像,这两个都运行良好。
+
+![OpenWRT image files][7]
+
+下载了镜像后,你按照 [以下的说明][8] 需要解压并安装它到 SD 卡上。这将会花些时间安装固件,需要些耐心。一旦安装完成,在你的 SD 卡上将会有两个分区。一个是用来放 bootloader ,另一个是 OpenWRT 系统。
+
+
+### 启动系统
+
+要启动你的新系统,插入 SD 卡到树莓派,用以太网线把树莓派和你的路由器(或者交换机)相连,然后点亮。
+
+如果你有使用树莓派的经验,你可能习惯于通过终端使用 SSH 访问过它,或者通过显示器和键盘连接到树莓派。OpenWRT 工作有一点点不同。你与这个系统交互是通过网页浏览器,所以你必须能够通过网络来访问你的树莓派。
+
+缺省状态下,树莓派使用的 IP 地址是:192.168.1.1。用来配置树莓派的计算机必须和树莓派在同一个子网中。如果你的网络没有使用 192.168.1.x 地址,或者你不能确定,在 GNOME 打开 “设置Settings” ,导航到网络设置,选择 “手动Manual” ,然后键入以下的 IP 地址和子网掩码:
+
+ * IP 地址:192.168.1.15
+ * 网络掩码:255.255.255.0
+
+![IP addresses][9]
+
+在你的电脑上打开浏览器然后导航到 192.168.1.1 。这将打开一个验证网页,你可以登录到你的树莓派。
+
+![OpenWRT login page][10]
+
+首次登录不需要密码,所以直接点击 “登录Login” 按钮继续。
+
+### 设置网络连接
+
+树莓派只有一个以太网口,而普通路由器有两个:一个是 WAN(有线区域网络)口,另一个是 LAN (本地区域网络)。
+
+你有两个选择:
+
+ 1. 使用你的以太网口接入互联网
+ 2. 使用 WIFI 接入互联网
+
+#### 使用以太网连接
+
+你决定使用以太网,导航到 “网络Network → 接口Interfaces”。在这个设置页面,按下与 “LAN” 接口对应的蓝色 “编辑Edit” 按钮。
+
+![LAN interface][11]
+
+应该会出现一个弹窗,在这个窗口中,你需要键入与你将要连接树莓派的路由器子网匹配的 IP 地址。如果需要的话,修改子网掩码,并输入树莓派将要连接的路由器的 IP 地址。
+
+![Enter IP in the LAN interface][12]
+
+保存设置,然后通过以太网将你的树莓派连接到路由器。你现在可以用这个新的 IP 地址访问树莓派。
+
+当你在把树莓派投入生产环境使用之前,确保为你的 OpenWRT 设置一个密码!
+
+#### 使用 WiFi 连接
+
+如果你想通过 WiFi 将树莓派连接到互联网,导航到 “网络Network → 无线Wireless” 。在 “无线Wireless” 菜单里,按下蓝色的 “扫描Scan” 按钮查找你的家庭网络。
+
+![Scan the network][13]
+
+在弹出的窗口中,找到你的 WiFi 网络然后连接它。不要忘记 “保存并应用Save and Apply” 设置。
+
+在这 “网络Network → 接口Interfaces” 部分,你应该看到了一个新的接口。
+
+![New interface][14]
+
+当你在把树莓派投入生产环境使用之前,确保为你的 OpenWRT 设置一个密码!
+
+### 安装必要的软件包
+
+默认状态下,路由器并没有安装许多软件包。OpenWRT 提供了一个包管理器,带有一系列你需要安装的。导航到 “系统System → 软件Software” 然后通过按下标有 “更新列表…Update lists...” 的按钮来更新你的包管理器。
+
+![Updating packages][15]
+
+你将会看到许多软件包;你需要安装以下这些:
+
+ * `usb-modeswitch`
+ * `kmod-mii`
+ * `kmod-usb-net`
+ * `kmod-usb-wdm`
+ * `kmod-usb-serial`
+ * `kmod-usb-serial-option`
+ * `kmod-usb-serial-wwan`(如果没有安装的话)
+
+另外,[下载这个调制解调器管理软件包][16],然后在弹出的窗口中按下标有 “上传软件包…Upload Package...” 的按钮来安装它。重启树莓派让安装包生效。
+
+### 设置移动网络接口
+
+所有这些软件包被安装完之后,你可以设置移动网络接口。在连接调制解调器到树莓派之前,请阅读 [调制解调器的说明书][17],对其进行设置。然后连接你的移动调制解调器到树莓派,然后等待一会直到调制解调器启动。
+
+导航到 “网络Network → 接口Interfaces”。在页面底部,按下 “添加一个新接口…Add new interface...” 按钮。在弹出的窗口中,给你的接口起一个名字(比如 “mobile”),然后从下拉列表中选择 “ModemManager” 。
+
+![Add a new mobile interface][18]
+
+按下一个标有 “创建接口Create Interface” 的按钮。你应该看到一个新的弹出窗口。这是设置接口的一个主窗口。在这个窗口中,选择你的调制解调器,然后键入像接入点名称Access Point Name(APN)或是 PIN 码之类的信息。
+
+![Configuring the interface][19]
+
+**注意:** 如果在列表中没有调制解调器设备出现,尝试重启树莓派或者安装 `kmod-usb-net-qmi-wwan` 软件包 。
+
+当你已经配置完你的接口,按下 “保存Save” 然后 “保存并应用Save and Apply”。给系统一些生效的时间。如果一切正常,你应该看到像这样的一些东西。
+
+![Configured interface][20]
+
+如果你想通过接口查看你的网络连接,你可以使用 SSH 连接到你的树莓派 shell。在终端里,键入:
+
+```
+ssh root@192.168.1.1
+```
+
+缺省 IP 地址是 192.168.1.1:如果你修改了它,就用修改后的 IP 地址连接。当连接后,在终端里执行命令:
+
+```
+ping -I ppp0 google.com
+```
+
+如果一切正常运行,那么你应该从 Google 的服务器接收到 ping 回包 。
+
+![Terminal interface][21]
+
+`ppp0` 是你创建的移动网络接口的默认接口名称。你可以通过使用 `ifconfig` 命令检查你的接口。它只显示活动的接口。
+
+### 设置防火墙
+
+要让移动网接口运行,你需要为移动网络接口和本地网络接口配置防火墙,以便引导流量到正确的接口。
+
+导航到 “网络Network → 防火墙Firewall”。在页面的底部,你应该看到一个叫做 “区域Zones” 的部分。
+
+![Firewall zones][22]
+
+设置防火墙最简单的方法就是调整 “wan” 区域。在 “已覆盖的网络Covered networks” 选项里按下 “编辑Edit” 按钮,选择你的移动网络接口,然后 “保存并应用Save and Apply” 你的设置。如果你不想用 WiFi 连接你的树莓派,你可以从 “已覆盖的网络Covered networks” 里删除 “wwan” 接口,或者关闭 WiFi 连接。
+
+![Firewall zone settings][23]
+
+如果你想为每个接口设置一个独立区域,只需创建一个新区域然后分配必要的接口即可。举个例子,你可能想有一个覆盖移动网络接口的区域,并且通过它来转发 LAN 接口流量。按下 “添加Name” 按钮,然后给你的区域 “命名Name”, 检查 “伪装” 复选框,选中 “已覆盖的网络Covered networks” ,并选择哪些区域可以转发其流量。
+
+![Firewall zone settings][24]
+
+然后 “保存并应用Save and Apply” 这些修改。现在你有一个新的区域。
+
+### 设置一个接入点
+
+最后一步是为你的设备接入互联网设置一个网络接入点。要设置一个接入点,导航到 “网络Network → 无线Wireless” 。你将会看到一个 WiFi 设备接口,一个名为 OpenWRT 的禁用的接入点,以及一个用于通过 WiFi 连接互联网的连接(如果你之前没有禁用或删除它)。在这个禁用的接口上,按下 “编辑Edit” 按钮,然后 “启用Enable” 该接口。
+
+![Enabling wireless network][25]
+
+如果你想,你可以通过编辑 “ESSID” 选项来修改接口名称。你也可以选择它要关联的网络。默认情况下,它会与 LAN 接口关联。
+
+![Configuring the interface][26]
+
+要为这个接口添加密码,选择 “无线安全Wireless Security” 选项,选择 “WPA2-PSK” 加密方式然后在 “密钥Key” 选项字段键入接口的密码。
+
+![Setting a password][27]
+
+然后 “保存并应用Save and Apply” 设置。如果设置正确的话,当用你的设备扫描可用接入点的话,你应该可以看到你分配了名称的新接入点。
+
+### 额外的软件包
+
+如果你愿意,你可以通过网页界面为你的路由器下载额外的软件包。只需到 “系统System → 软件Software” 然后安装你想从列表或者互联网上下载的软件包并上传它。如果你在列表中没有看到任何软件包,请按下 “更新列表…Update lists...” 按钮。
+
+你也可以添加其他拥有适合与 OpenWRT 一起使用的软件包的仓库。软件包和它们的网页界面是分开安装的。软件包名称是以 “luci-” 开始的是网页界面软件包。
+
+![Packages with luci- prefix][28]
+
+### 试试看
+
+这就是我的树莓派路由设置的过程。
+
+![Raspberry Pi router][29]
+
+从树莓派建立一个路由器不是很困难。缺点是树莓派只有一个以太网接口。你可以用一个 USB-to-Ethernet 适配器来增加更多的网口。不要忘记在接口的网站上设置网口。
+
+OpenWRT 支持大量的移动调制解调器,你可以用管理调制解调器的通用工具 modemmanager 为它们设置移动网络接口。
+
+你有没有把你的树莓派当作路由器使用?请在评论中告诉我们情况。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/3/router-raspberry-pi
+
+作者:[Lukas Janėnas][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlilfe)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/lukasjan
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/mesh_networking_dots_connected.png?itok=ovINTRR3 (Mesh networking connected dots)
+[2]: https://openwrt.org/
+[3]: https://opensource.com/sites/default/files/uploads/lte_modem.png (Teltonika TRM240 modem)
+[4]: https://creativecommons.org/licenses/by-sa/4.0/
+[5]: https://teltonika-networks.com/product/trm240/
+[6]: https://downloads.openwrt.org/releases/19.07.7/targets/brcm2708/bcm2710/
+[7]: https://opensource.com/sites/default/files/uploads/imagefiles.png (OpenWRT image files)
+[8]: https://opensource.com/article/17/3/how-write-sd-cards-raspberry-pi
+[9]: https://opensource.com/sites/default/files/uploads/ipaddresses.png (IP addresses)
+[10]: https://opensource.com/sites/default/files/uploads/openwrt-login.png (OpenWRT login page)
+[11]: https://opensource.com/sites/default/files/uploads/lan-interface.png (LAN interface)
+[12]: https://opensource.com/sites/default/files/uploads/lan-interface-ip.png (Enter IP in the LAN interface)
+[13]: https://opensource.com/sites/default/files/uploads/scannetwork.png (Scan the network)
+[14]: https://opensource.com/sites/default/files/uploads/newinterface.png (New interface)
+[15]: https://opensource.com/sites/default/files/uploads/updatesoftwarelist.png (Updating packages)
+[16]: https://downloads.openwrt.org/releases/packages-21.02/aarch64_cortex-a53/luci/luci-proto-modemmanager_git-21.007.43644-ab7e45c_all.ipk
+[17]: https://wiki.teltonika-networks.com/view/TRM240_SIM_Card
+[18]: https://opensource.com/sites/default/files/uploads/addnewinterface.png (Add a new mobile interface)
+[19]: https://opensource.com/sites/default/files/uploads/configureinterface.png (Configuring the interface)
+[20]: https://opensource.com/sites/default/files/uploads/configuredinterface.png (Configured interface)
+[21]: https://opensource.com/sites/default/files/uploads/terminal.png (Terminal interface)
+[22]: https://opensource.com/sites/default/files/uploads/firewallzones.png (Firewall zones)
+[23]: https://opensource.com/sites/default/files/uploads/firewallzonesettings.png (Firewall zone settings)
+[24]: https://opensource.com/sites/default/files/uploads/firewallzonepriv.png (Firewall zone settings)
+[25]: https://opensource.com/sites/default/files/uploads/enablewirelessnetwork.png (Enabling wireless network)
+[26]: https://opensource.com/sites/default/files/uploads/interfaceconfig.png (Configuring the interface)
+[27]: https://opensource.com/sites/default/files/uploads/interfacepassword.png (Setting a password)
+[28]: https://opensource.com/sites/default/files/uploads/luci-packages.png (Packages with luci- prefix)
+[29]: https://opensource.com/sites/default/files/uploads/raspberrypirouter.jpg (Raspberry Pi router)
diff --git a/published/202204/20210401 Partition a drive on Linux with GNU Parted.md b/published/202204/20210401 Partition a drive on Linux with GNU Parted.md
new file mode 100644
index 0000000000..071fd26540
--- /dev/null
+++ b/published/202204/20210401 Partition a drive on Linux with GNU Parted.md
@@ -0,0 +1,183 @@
+[#]: subject: (Partition a drive on Linux with GNU Parted)
+[#]: via: (https://opensource.com/article/21/4/linux-parted-cheat-sheet)
+[#]: author: (Seth Kenlon https://opensource.com/users/seth)
+[#]: collector: (lujun9972)
+[#]: translator: (hwlife)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14463-1.html)
+
+在 Linux 上使用 GNU Parted 对磁盘分区
+======
+
+> 了解对新的储存设备分区的基础知识,然后下载我们的速查表,让信息近在咫尺。
+
+
+
+在 21 世纪,我们往往认为数据存储是理所当然的。我们有许多存储介质,相对价格便宜,而且有许多不同的可用类型。然而,不论你获得的免费云存储空间有多少,没有比有一个物理硬盘空间来存储重要的数据更好了(或容量真的很大的,而当你又在一个慢速网络上时)。然而,没有几块硬盘买回来就是现成的,至少在理想的状况下可以直接使用的。无论你是买了一块新硬盘,还用不同分区安装一个系统,你需要知道怎么在 Linux 上为磁盘分区。
+
+这篇文章介绍了 GNU Parted ,它磁盘分区最好的工具之一。如果你偏向使用图形化程序,而不算终端命令行,请阅读我的《[为 Linux 格式化驱动器][2]》这篇文章。
+
+### 磁盘标签、分区和文件系统
+
+技术上来说,一个硬盘驱动器不需要很多软件,就可用作存储设备。然而,在没有分区表和文件系统等现代惯例的情况下使用硬盘是困难的、不切实际的,而且对你的数据不安全。
+
+关于硬盘驱动器,这里有三个你需要知道的重要概念:
+
+ * 磁盘标签disk label(或者 分区表partition table)是放置在磁盘驱动器起始位置的元数据,它告诉计算机可用的存储是何种类型、以及它在磁盘驱动器的位置等信息。
+ * 分区partition 是一个识别文件系统位置的边界。举个例子,如果你有一个 512GB 的硬盘,你可以用占用所有磁盘容量(512GB)分成一个分区,或者分成两个分区,每个占用 256GB ,或者分成三个分区,占用各种不同大小的空间等等。
+ * 文件系统filesystem 是一个硬盘驱动器和计算机两者约定俗成的存储方案。计算机必须知道怎样读取文件系统来拼凑存储在驱动器上的数据,并且必须知道怎样写入数据到文件系统并保持数据的完整性。
+
+GNU Parted 程序管理着前两个概念:磁盘标签和分区。Parted 对文件系统有所了解,但是它把文件系统的实现细节交给了其他类似 `mkfs` 这样的工具。
+
+> 下载 [GNU Parted 速查表][3]
+
+### 确定磁盘驱动器的位置
+
+使用 GNU Parted 之前,你必须确定你的驱动器在你的系统上的位置。首先,将你要格式化的磁盘驱动器连接到你的系统,然后用 `parted` 命令查看连接到你的计算机的设备:
+
+```
+$ parted /dev/sda print devices
+/dev/sda (2000GB)
+/dev/sdb (1000GB)
+/dev/sdc (1940MB)
+```
+
+你最新连接设备的名称在字母表上晚于连接时间更长的设备。举个例子,`/dev/sdc` 最有可能是我刚刚连接的磁盘。我能通过它的容量大小来确认,相比于我的工作站上的主要驱动器的 TB 大小来说,因为我知道我插入的 U 盘只有 2GB(1940MB,足够接近)大小。如果你不能确定,你可以得到的更多关于你想要分区的驱动器的信息:
+
+```
+$ parted /dev/sdc print
+Model: Yoyodyne Tiny Drive 1.0 (scsi)
+Disk /dev/sdc: 1940MB
+Sector size (logical/physical): 512B/512B
+Partition Table: msdos
+Disk Flags:
+
+Number Start End Size File system Name Flags
+ 1 1049kB 2048kB 1024kB BS Bloat Hidden
+ 2 2049kB 1939MB 1937MB FAT32 MyDrive
+```
+
+有些驱动器比其他驱动器有更多的元数据。这个磁盘表明它的物理驱动器品牌是 Yoyodyne ,此外,在磁盘的起始处包含了一个小的隐藏分区,后面是一个兼容 Windows 的臃肿的 FAT32 分区。这确实是我要重新打算格式化的驱动器。
+
+继续之前,_确认_ 你已经确定了要分区的正确驱动器。 _对错误的驱动器重新分区会导致数据丢失。_ 为了安全起见,在本文中所有具有潜在破环性的命令都指向在你的系统中不太可能有的 `/dev/sdX` 设备。
+
+### 创建磁盘标签(或者分区表)
+
+要在磁盘上创建一个分区,驱动器必须要有一个磁盘标签disk label。磁盘标签也被叫做 分区表partition table,所以 Parted 对两个术语都接受。
+
+要创建一个磁盘卷标,使用 `mklabel` 或 `mktable` 子命令:
+
+```
+$ parted /dev/sdX mklabel gpt
+```
+
+这个命令在 `/dev/sdX` 的驱动器前面创建了一个 **gpt** 标签,删除了任何可能存在的标签。这是一个快速的过程,因为所有被替换的信息都是关于分区的元数据。
+
+### 创建分区
+
+要在磁盘创建分区,使用 `mkpart` 子命令,后跟可选的分区名称,再跟分区的开始和结束位置。如果你在磁盘上只需要一个分区,那么大小调整是容易的:开始位置输入 1 ,结束位置输入 100% 。使用 `--align opt` 参数允许 Parted 调整分区边界位置便于磁盘获得最佳性能:
+
+```
+$ parted /dev/sdX --align opt \
+mkpart example 1 100%
+```
+
+用 `print` 子命令查看你的新分区:
+
+```
+$ parted /dev/sdX print
+Model: Yoyodyne Tiny Drive 1.0 (scsi)
+Disk /dev/sdi: 1940MB
+Sector size (logical/physical): 512B/512B
+Partition Table: gpt
+Disk Flags:
+
+Number Start End Size
+ 1 1049kB 1939MB 1938MB
+```
+
+你不必将整个磁盘用作一个分区。分区的优势是在一个磁盘上可以存在多个文件系统,它们之间不会相互干扰。在确定分区大小的时候,你可以使用 `unit` 子命令来设置你想用的测量方法。Parted 可以理解扇区sector、柱面cylinder、磁头head、字节byte、KB、MB、GB、TB 和百分比。(LCTT 译注:具体使用方法请参阅手册页)
+
+你也可以指定你打算使用的分区的文件系统。这并不会创建文件系统,但是它为你以后方便使用提供了元数据。
+
+将磁盘对半分,一个是 XFS 文件系统,另一个是 EXT4 文件系统:
+
+```
+$ parted /dev/sdX --align opt \
+mkpart xfs 1 50%
+$ parted /dev/sdX --align opt \
+mkpart ext4 51% 100%
+```
+
+### 命名分区
+
+除了标记分区用于什么文件系统之外,你也可以为每个分区命名。一些文件管理器和工具可以读取分区名称,能够帮助你区分驱动器。例如,我经常有几个不同的驱动器连接到我的媒体工作站,每个属于一个不同的项目。当创建这些驱动器的时候,我同时命名了分区和文件系统,这样,无论我怎么看我的系统,有重要数据的位置都会被清楚地标示出来。
+
+要命名一个分区,你必须知道它的序号:
+
+```
+$ parted /dev/sdX print
+[...]
+Number Start End Size File system Name Flags
+ 1 1049kB 990MB 989MB xfs example
+ 2 1009MB 1939MB 930MB ext4 noname
+```
+
+要命名分区 1:
+
+```
+$ parted /dev/sdX name 1 example
+$ parted /dev/sdX print
+[...]
+Number Start End Size File system Name Flags
+ 1 1049kB 990MB 989MB xfs example
+ 2 1009MB 1939MB 930MB ext4 noname
+```
+
+### 创建文件系统
+
+要让你的驱动器能够正常使用,你必须在新分区上创建一个文件系统。GNU Parted 并不做这些,因为它只是一个分区管理器。在磁盘上创建文件系统的 Linux 命令是 `mkfs`,但也有一些有用的工具可以让你用来创建特定类型的文件系统。例如,`mkfs.ext4` 创建 EXT4 文件系统,`mkfs.xfs` 创建 XFS 文件系统等等。
+
+你的分区位于磁盘驱动器的“内部” ,所以你不是在 `/dev/sdX` 上创建文件系统,而是在 `/dev/sdX1` 上为第一个分区创建文件系统,在 `/dev/sdX2` 上为第二个分区创建,以此类推。
+
+这里是一个创建 XFS 文件系统的例子:
+
+```
+$ sudo mkfs.xfs -L mydrive /dev/sdX1
+```
+
+### 下载我们的速查表
+
+Parted 是一个灵活而强大的工具。你可以发出命令,如本文所示的那样,或者激活一个交互模式以不断 “连接” 你指定的驱动器:
+
+```
+$ parted /dev/sdX
+(parted) print
+[...]
+Number Start End Size File system Name Flags
+ 1 1049kB 990MB 989MB xfs example
+ 2 1009MB 1939MB 930MB ext4 noname
+
+(parted) name 1 mydrive
+(parted)
+```
+
+如果你打算经常使用 Parted ,[下载我们的 GNU Parted 速查表][3],让信息近在咫尺。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/4/linux-parted-cheat-sheet
+
+作者:[Seth Kenlon][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlife)
+校对:[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/coverimage_cheat_sheet.png?itok=lYkNKieP (Cheat Sheet cover image)
+[2]: https://opensource.com/article/18/11/partition-format-drive-linux#gui
+[3]: https://opensource.com/downloads/parted-cheat-sheet
diff --git a/published/202204/20210419 How to Deploy Seafile Server with Docker to Host Your Own File Synchronization and Sharing Solution.md b/published/202204/20210419 How to Deploy Seafile Server with Docker to Host Your Own File Synchronization and Sharing Solution.md
new file mode 100644
index 0000000000..9f9c50272f
--- /dev/null
+++ b/published/202204/20210419 How to Deploy Seafile Server with Docker to Host Your Own File Synchronization and Sharing Solution.md
@@ -0,0 +1,279 @@
+[#]: subject: (How to Deploy Seafile Server with Docker to Host Your Own File Synchronization and Sharing Solution)
+[#]: via: (https://itsfoss.com/deploy-seafile-server-docker/)
+[#]: author: (Hunter Wittenborn https://itsfoss.com/author/hunter/)
+[#]: collector: (lujun9972)
+[#]: translator: (hwlife)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14468-1.html)
+
+怎样用 Docker 部署 Seafile 服务器来托管你自己的文件同步和共享解决方案
+======
+
+
+
+首先,什么是 Seafile ?
+
+[Seafile][1] 是一个自托管文件同步程序,采用客户端/服务器模式,即你有笔记本、手机等多个设备,能够连接到一个中心服务器。
+
+不像类似 [Nextcloud 或 ownCloud][2] 这些更流行的替代品一样,Seafile 试图遵循 “只做一件事,但是要做好” 的理念。同样,Seafile 没有内置额外的类似联系人或者日历聚合的功能。
+
+相反,Seafile 只专注于文件同步、共享及与之相关的事情,仅此而已。但正因为如此,它最终做的非常好。
+
+### 使用 Docker 和 NGINX 部署 Seafile 服务器
+
+> **高级教程**
+>
+> 我们的许多教程都是针对初学者的。这篇则不然,它是为那些经常鼓捣 DIY 项目和喜欢自托管的高级用户设计的。这个教程假定你可以熟练的使用命令行,而且你至少对我们将要使用的程序有一定的了解。
+
+虽然整个过程完全可以不使用 NGINX ,但是使用 NGINX 更加容易配置,而且在将来更加容易的自托管更多的服务。
+
+如果你想完全使用 Docker 环境,你也可以 [在 Docker 内部设置 NGINX][3] ,但是它这会使事情变得更加复杂,并且不能够带来太多好处。同样,在本教程里也不会涉及这些。
+
+#### 安装设置 NGINX
+
+在这个教程中,我会使用 Ubuntu,因此会使用 `apt` 来安装软件包。如果你使用 Fedora 或者一些其他非 Debian 发行版,请使用你的发行版的 [包管理器][4]。
+
+[NGINX][5] 既是一个网页浏览器,又是一个代理服务器。它将起到 Seafile 服务器和互联网之间网络连接的作用,同时也使一些任务更容易处理。
+
+要安装 NGINX ,使用以下命令:
+
+```
+sudo apt install nginx
+```
+
+如果你想使用 HTTPS(也就是浏览器中的小挂锁),你需要安装 [Certbot][6]:
+
+```
+sudo apt install certbot python3-certbot-nginx
+```
+
+下一步,你需要设置 NGINX 来连接我们之后将要设置的 Seafile 实例。
+
+首先,运行以下命令:
+
+```
+sudo nano /etc/nginx/sites-available/seafile.conf
+```
+
+键入下方的文本到文件中:
+
+```
+server {
+ server_name localhost;
+ location / {
+ proxy_pass http://localhost:8080;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ }
+}
+```
+
+**重要**: 将 `server_name` 一行的 `localhost` 替换为你要访问你的服务器的地址(比如 `seafile.example.com` 或者 `192.168.0.0`)。不确定要输入什么吗?
+
+ * 如果你只是为了测试,使用 `localhost` 。这个设置将 **只允许你从你的电脑访问服务器** ,仅此而已。
+ * 如果你想通过你的本地 Wi-Fi 连接使用 Seafile(与你在同一 Wi-Fi 网络上),你应该键入 [你的计算机 IP 地址][7]。你也可以考虑 [设置一个静态 IP 地址][8],尽管这不是必须的。
+ * 如果你有一个公网 IP 地址,你知道它指向你的系统,就使用它。
+ * 如果你有一个域名(比如 `example.com`、`example.org`)和公网 IP 地址,更改你的 DNS 设置,将域名指向你的系统的 IP 地址。这也需要将公网 IP 指向你的系统。
+
+现在你需要复制配置文件到 NGINX 的查找目录中,然后重启 NGINX :
+
+```
+sudo ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf
+sudo systemctl restart nginx
+```
+
+如果你要安装 Cerbot,你也需要运行以下命令来设置 HTTPS :
+
+```
+sudo certbot
+```
+
+如果要重定向 HTTP 流量 到 HTTPS ,选择 `2` 。
+
+现在可以来确认我们目前设置的一切都是否正常工作。如果你访问你的站点,你应该看到一个屏幕上写着 `502 Bad Gateway` 字样。
+
+![][9]
+
+#### 安装 Docker 和 Docker Compose
+
+现在要进入有趣的部分了!
+
+首先,你需要安装 [Docker][10] 和 [Docker Compose][11] 。Docker Compose 需要利用 `docker-compose.yml` 文件,这将使管理多个 Docker [容器][12] 的 Seafile 需求变得更加容易。
+
+Docker 和 Docker Compose 可以用以下的命令来安装:
+
+```
+sudo apt install docker.io docker-compose
+```
+
+检查 Docker 是否安装并运行,运行以下命令:
+
+```
+sudo docker run --rm hello-world
+```
+
+如果你完全安装成功,你应该在终端能看到这几行文字:
+
+![][13]
+
+如果你想避免在 `docker` 命令的开始添加 `sudo` 的话,你可以运行以下的命令将你自己添加到 `docker` 组:
+
+```
+sudo groupadd docker
+sudo usermod -aG docker $USER
+```
+
+这个教程的其余部分假定你已经运行了以上两个命令。如果你没有运行,在所有 `docker` 或 `docker-compose` 的命令都添加 `sudo` 。
+
+#### 安装 Seafile 服务器
+
+这部分比之前部分明显容易的多。你所需要做的是输入一些文本到文件,然后运行一些命令。
+
+打开一个终端,然后创建一个 Seafile 服务器用来储存内容的目录,并进入目录中:
+
+```
+mkdir ~/seafile-server && cd ~/seafile-server
+```
+
+![][14]
+
+转到你创建的目录然后运行以下命令:
+
+```
+nano docker-compose.yml
+```
+
+下一步,在弹出的窗口中键入以下文本内容:
+
+```
+version: '2.0'
+services:
+ db:
+ image: mariadb
+ container_name: seafile-mysql
+ environment:
+ - MYSQL_ROOT_PASSWORD=password
+ - MYSQL_LOG_CONSOLE=true
+ volumes:
+ - ./data/mariadb:/var/lib/mysql
+ networks:
+ - seafile-net
+
+ memcached:
+ image: memcached
+ container_name: seafile-memcached
+ entrypoint: memcached -m 256
+ networks:
+ - seafile-net
+
+ seafile:
+ image: seafileltd/seafile-mc
+ container_name: seafile
+ ports:
+ - "8080:80"
+ volumes:
+ - ./data/app:/shared
+ environment:
+ - DB_HOST=db
+ - DB_ROOT_PASSWD=password
+ - TIME_ZONE=Etc/UTC
+ - SEAFILE_ADMIN_EMAIL=me@example.com
+ - SEAFILE_ADMIN_PASSWORD=password
+ - SEAFILE_SERVER_LETSENCRYPT=false
+ - SEAFILE_SERVER_HOSTNAME=docs.seafile.com
+ depends_on:
+ - db
+ - memcached
+ networks:
+ - seafile-net
+
+networks:
+ seafile-net:
+```
+
+在保存文件之前,一些参数需要更改:
+
+ * `MYSQL_ROOT_PASSWORD`:更换强壮的密码,你不必记住它,所以不要尝试挑选简单的密码。如果你需要帮助生成一个,请使用 [密码生成器][15] 。我建议使用 20 位字符长度并且避免使用任何的特殊字符(`!@#$%^&*` 等符号)。
+ * `DB_ROOT_PASSWD`:更改你为 `MYSQL_ROOT_PASSWORD` 设置的值 。
+ * `SEAFILE_ADMIN_EMAIL`:设置管理员帐户的电子邮件地址。
+ * `SEAFILE_ADMIN_PASSWORD`:设置管理员帐户密码。避免与`MYSQL_ROOT_PASSWORD` 或者 `DB_ROOT_PASSWD` 密码相同。
+ * `SEAFILE_SERVER_HOSTNAME`:在 NGINX 配置中设置 Seafile 的服务器主机名。
+
+完成之后,你可以运行 `docker-compose` 整个运行起来:
+
+```
+docker-compose up -d
+```
+
+可能需要花一到两分钟,取决于你的网速,因为需要拉下几个 Seafile 需要运行的几个容器。
+
+完成以后,还需要几分钟来完成。你也可以通过以下命令来检查运行状态:
+
+```
+docker logs seafile
+```
+
+当完成了,你将会看到如下输出:
+
+![][17]
+
+下一步,你只需要在你的浏览器里键入你设置的 `SEAFILE_SERVER_HOSTNAME` 的地址,然后你应该看到登录屏幕的页面。
+
+![][18]
+
+就这样!现在一切功能齐全,准备用客户端来使用。
+
+#### 安装 Seafile 客户端
+
+Seafile 移动客户端在 [Google Play][19]、[F-Droid][20] 和 [苹果商店][21] 都是可用的。Seafile 也有 Linux、Windows 和 Mac 桌面客户端可用,可在 [此处][22] 找到。
+
+通过 `seafile-gui` 软件包,可以在 Ubuntu 系统轻松获得 Seafile :
+
+```
+sudo apt install seafile-gui
+```
+
+通过 `seafile-client` 软件包 Seafile 也包含在 Arch 用户的 AUR 包管理器中。
+
+### 结语
+
+请尽情探索客户端及其所能提供的一切。我将在未来的一篇文章中详细阐述 Seafile 客户端的所有功能。(敬请期待 😃)
+
+总的来说,如果有什么错误,或者你有什么问题,请在下方评论 – 我会尽我所能回应。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/deploy-seafile-server-docker/
+
+作者:[Hunter Wittenborn][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlife)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://itsfoss.com/author/hunter/
+[b]: https://github.com/lujun9972
+[1]: https://www.seafile.com/en/home/
+[2]: https://itsfoss.com/nextcloud-vs-owncloud/
+[3]: https://linuxhandbook.com/nginx-reverse-proxy-docker/
+[4]: https://itsfoss.com/package-manager/
+[5]: https://www.nginx.com/
+[6]: https://certbot.eff.org/
+[7]: https://itsfoss.com/check-ip-address-ubuntu/
+[8]: https://itsfoss.com/static-ip-ubuntu/
+[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/04/nginx_bad_gateway.png?resize=489%2C167&ssl=1
+[10]: https://www.docker.com/
+[11]: https://docs.docker.com/compose/
+[12]: https://www.docker.com/resources/what-container
+[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/04/seafile-docker-helloworld.png?resize=752%2C416&ssl=1
+[14]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/04/seafile-dir.png?resize=731%2C174&ssl=1
+[15]: https://itsfoss.com/password-generators-linux/
+[16]: https://itsfoss.com/cdn-cgi/l/email-protection
+[17]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/04/seafile-running.png?resize=752%2C484&ssl=1
+[18]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/04/seafile-login.jpg?resize=800%2C341&ssl=1
+[19]: https://play.google.com/store/apps/details?id=com.seafile.seadroid2
+[20]: https://f-droid.org/repository/browse/?fdid=com.seafile.seadroid2
+[21]: https://itunes.apple.com/cn/app/seafile-pro/id639202512?l=en&mt=8
+[22]: https://www.seafile.com/en/download/
diff --git a/published/202204/20210424 Getting Started With Markdown -Beginner-s Guide.md b/published/202204/20210424 Getting Started With Markdown -Beginner-s Guide.md
new file mode 100644
index 0000000000..43d44058e9
--- /dev/null
+++ b/published/202204/20210424 Getting Started With Markdown -Beginner-s Guide.md
@@ -0,0 +1,310 @@
+[#]: subject: (Getting Started With Markdown [Beginner’s Guide])
+[#]: via: (https://itsfoss.com/markdown-guide/)
+[#]: author: (Bill Dyer https://itsfoss.com/author/bill/)
+[#]: collector: (lujun9972)
+[#]: translator: (hwlife)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-14503-1.html)
+
+Markdown 初学者指南
+======
+
+
+
+在我的工作中,我经常要写代码、写与代码相配套的文档、创建网页、进行文本恢复项目。我在学校的时候还写过几篇正式的论文,也包括写课堂笔记,几乎每节课都写。
+
+我几乎在我所有的写作中都使用 Markdown,它对我来说是一个节省时间的好工具。
+
+在这篇文章中,我将分享我使用 Markdown 的体会。你将会了解以下内容:
+
+ * 什么是 Markdown ?
+ * 它是怎么工作的?
+ * Markdown 的基本语法和怎样使用它们。
+
+### 什么是 Markdown ?
+
+假如你是 Markdown 新手,它是一个为网络写手转换文本到 HTML 格式的工具。Markdown 文档遵循一种特定的语法,容易阅读和写作。它们是纯文本,所以能够通过电脑上的任何文本编辑器来创建。然后这些文档能够转换成网页 —— 而网页是用一个叫做 HTML 的语言标记创建的。
+
+Markdown 只是一种不必(即使知道怎么做)写 HTML 代码就能够创建网页的方式。实际上,如果你不转换成 HTML 的话,Markdown 甚至是个对纯文本格式化的好方法。有人曾这样对我描述 Markdown :
+
+
+> “ _它不是所见即所得,而是所见即所意_ ”。
+
+然而,Markdown 不只是一个简单的格式化体系,它也是一个纯文本格式转化到 HTML 的一个软件工具。
+
+这就是为什么语法很重要。如果你想在网页上起个标题,Markdown 将会基于你标题前面的字符来创建。Markdown 的一些语法示例如截图所示:
+
+![Markdown to HTML conversion][1]
+
+### 所以我怎样才能使纯文本文件转换成 HTML 格式呢?
+
+John Gruber 的 Markdown 是一个运行在命令行上的 Perl 脚本。也就是说,它可以读取你创建的 Markdown 文本并用它来构建网页。
+
+由于有 [许多著名的编辑器][2] 可以为你做这个转换,我在这里尽量避免使用命令行。不仅如此,许多这样的编辑器会让你写下你的文本,并同时向你展示网页的样子(称为渲染)。
+
+Markdown 编辑器总的来说设置了两帧:左边部分是你要写你文本的地方,右边部分是用 HTML 语言显示给你格式化后文本的样子:
+
+![Most Markdown editors have two panes to write and preview the text][3]
+
+当你用它满意地完成你的写作,只需保存 Markdown 文件即可。就像这样,之后一旦你需要编辑和修改的时候,你就会用到它。文件保存后,你可以用编辑器将 Markdown 文档导出为 HTML 格式的文档。
+
+编辑器用你的 Markdown 作为参考创建网页。你的 Markdown 文档在导出时不会修改,你仍然拥有源文档,同时创建一个独立的、新的 HTML 文档(网页),你可以把它放到一个网页服务器上。
+
+**注意**:许多 Markdown 编辑器也可以将你的 Markdown 文档导出为其他格式,比如 `.doc`、`.docx` 和 `.pdf`。之后你可以了解这些高级设置和你可能需要的额外软件。
+
+### Markdown 基础语法
+
+为了让 Markdown 新用户快速了解,我将把这部分内容限制在我最常使用的语法上。我相信这些将是最有帮助的 - 你可以在现在就提高工作效率,同时了解更多关于 Markdown 以后能为你做什么。
+
+#### 写标题
+
+我经常使用 `#` 字符来表示标题。这里有六个等级:
+
+```
+# 一级标题
+## 二级标题
+### 三级标题
+#### 四级标题
+##### 五级标题
+###### 六级标题
+```
+
+还有一种标题类型,是在文本下使用下划线。我很少使用这种类型的标题,我只限于使用两种:一种是使用 `=` 字符表示的双下划线,生成 `H1` 标题。一种是使用 `-` 字符表示的单下划线,生成 `H2` 标题:
+
+```
+一级标题
+===============
+
+二级标题
+---------------
+```
+
+![][4]
+
+#### 段落
+
+段落被空行隔开(确保段落之间有一个空行)。首行不要缩进。在 Markdown 里用 `Tab` 键或者空格键缩进有着不同的目的和作用。
+
+段落是一个文本块,不应该用空格键和 `Tab` 键来缩进。它可以有一行或者多行。要结束这一段另起一段,点两下回车键;段落通过一个空行分开。
+
+![][5]
+
+#### 换行
+
+请记住,对于段落,必须用空行来分隔它们,这要通过按两次回车键来实现。Markdown 对此很严格。
+
+Markdown 不支持 “强制插入换行符hard-wrapped” 或者 “固定行长度fixed-line-length” 段落。那就是说,单击回车键一次将不会强制文本换到新的一行。它可能在编辑窗口显示,但是 HTML 格式下不显示。
+
+然而,有时你可能需要拆分段落或者换行。Markdown 确实有一种方法可以做到,但是它一开始看起来可能有一点奇怪:**换行是通过用两到多个空格键然后点一次回车键完成的。**
+
+![][6]
+
+这里有一个短诗的范例。每行以两个空格结束。最后一行,由于是这个小节的结束,没有额外的空格。因为它是这个诗句(段落)的结束,我双击回车键两次:
+
+```
+Baa, baa black sheep,
+Have you any wool?.
+Yes, sir. Yes, sir.
+Three bags full.
+```
+
+在一行的最后加两个空格来创建一个换行,可能需要时间去习惯。
+
+![][7]
+
+#### 水平线
+
+水平线非常适合将文本拆分为多个部分。
+
+用三个或更多的破折号 `-` ,下划线 `_` ,或者星号 `*` 来做水平线,像这样:
+
+```
+---
+
+***
+
+___
+```
+
+你甚至可以在字符之间输入空格:
+
+```
+- - -
+```
+
+在文章和报告中我不经常使用水平线,但是在日记、系统日志和课堂笔记中对我很有用。
+
+![][8]
+
+#### 用加粗和斜体来强调文本
+
+当你想让一个单词或者短语脱颖而出,引起注意,你可以让它加粗或者斜体显示。斜体和加粗文本可以在两种方式中任选其一。第一种是用星号 `*` 将其包括,第二种是用下划线 `_` 的方式。
+
+使一个单词或者短语斜体显示,用一个下划线或者星号来括住文本。使一个单词或者短语加粗,使用两个下划线或者星号来括住文本:
+
+```
+用星号来显示 *斜体* 。
+
+用下划线来显示 _斜体_ 。
+
+用星号来显示 **加粗** 。
+
+用下划线来显示 __加粗__ 。
+```
+
+记住两边使用相同的字符。单词或短语的一面是星号,另一面是下划线,将不会生效。相同字符必须在单词或者短语的两边。
+
+![][9]
+
+#### 块引用
+
+块引用被用来直接引用。如果你正在写博客,你想重复本杰明•富兰克林说过的话,你可以使用块引用。
+
+一个右尖括号被用来指定块引用:
+
+```
+> 这是块引用。
+
+>> 如果你想进一步再次块引用,使用两个右尖括号。
+```
+
+![][10]
+
+#### 在 Markdown 中添加超链接
+
+超链接非常酷。在基础版的 Markdown 语言有三种方式创建超链接,在这里我只讲两种:普通连接和自动连接。
+
+第三种链接被称为参考链接,在 Markdown 语言的基础版和高级版都支持。我想让你快速入门。你可以在准备好的时候找找参考链接的资料。
+
+普通链接可以让你链接到各种各样的网站。网站名称或者你要使用的短语被放置在中括号 `[]` 中。真实的链接地址在小括号 `()` 中。
+
+```
+现在去看看 [Linux 中国](https://linux.cn) 。
+```
+
+自动连接通过用尖括号 `<>` 括住链接地址。这个链接是一个实际的地址(可以是网址或者电子邮件地址)。拼写出来的链接被转换到 HTML 的时候,就变成了有效的链接。
+
+```
+
+
+
+```
+
+当你想在文本中拼写出网址时,这很有用:
+
+![][11]
+
+#### 在 Markdown 中添加图片
+
+链接图片几乎与链接网站一样。网站链接和图片链接微小的不同是,图片链接以感叹号 `!` 开始。
+
+图片名称或者图片描述放置在中括号 `[]` 里。实际链接放置在小括号 `()` 里。
+
+你可以像这样嵌入图片:
+
+```
+
+```
+
+这儿有一个示例图像链接。这是一个示例链接,没有这个图片,但是这是个好例子,显示了实际链接应该有的样子:
+
+```
+
+```
+
+![][12]
+
+#### 列表
+
+制作列表有很多原因。它们可能用来作为代办事项、大纲中的主题元素、组装项目中的明细栏等等。列表有两种主要类型:无序列表和有序列表。
+
+无序列表没有编号;这些就是我们在许多文档中所看到的列表项。有序列表是有编号的。
+
+要创建一个有序(有编号的)列表,只需在每行用一个数字开始,像这样:
+
+```
+1. 项目 一。
+2. 项目 二。
+3. 项目 三。
+```
+
+无序列表没有编号,但要在列表每个项目的开始使用一个星号 `*` 、一个加号 `+` ,或者一个减号 `-` 。我偏向于使用一个星号或者减号,你可以选择适合你的:
+
+```
+* 项目 一。
++ 项目 二。
+- 项目 三。
+```
+
+子项目可以通过缩进被添加到有序和无序列表中,像这样:
+
+```
+1. 项目 一
+ 1. 子项目 一
+ 2. 子项目 二
+2. 项目 二
+3. 项目 三
+```
+
+![][13]
+
+### Markdown 语法速查表
+
+这是一个简短的 Markdown 语法列表为你作为参考,这个列表已经在本小结中介绍。
+
+如果你决定使用 Markdown 作为写作工具,你会发现 Markdown 会让写作变得更加简单。
+
+![][14]
+
+> **[下载 PDF 格式的 Markdown 速查表][15]**
+
+### 结语
+
+Markdown 可以做比我描述的更多的事情。我写作的很大一部分是用我在这里介绍的 Markdown 语法完成的 - 而这些是我最常使用的项目,即使是在更复杂的项目中。
+
+如果这些看起来太简单了,那么说明它真的很容易。Markdown 用来完成简单的写作任务,但是你不必完全听我的。你可以尝试一下!不必安装 Markdown 编辑器;你可以在线尝试。这里有几个 [优秀的在线 Markdown 编辑器][16]。这里我喜欢用这三个:
+
+- John Gruber’s [Dingus][17]
+- [Editor.md][18]
+- [Dillinger][19]
+
+Editor.md 和 Dillinger 会让你看到你的 Markdown 文本作为 HTML 实时渲染的效果。 Dingus 不能实时预览,但是在参考页有 Markdown 的语法速查表。
+
+![][20]
+
+用以上这些在线编辑器尝试一下文章中的示例。也可以尝试一下你自己的想法。这将使你在可能致力于学习更多的知识之前习惯于 Markdown。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/markdown-guide/
+
+作者:[Bill Dyer][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlife)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://itsfoss.com/author/bill/
+[b]: https://github.com/lujun9972
+[1]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/04/retext_window_showing_syntax_and_preview-2.png?resize=800%2C429&ssl=1
+[2]: https://itsfoss.com/best-markdown-editors-linux/
+[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/04/ghostwriter_two_frames-1.png?resize=800%2C458&ssl=1
+[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/04/1_md_headings_vscodium.png?resize=800%2C485&ssl=1
+[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/04/2_md_paragraphs_example_vscodium.png?resize=800%2C593&ssl=1
+[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/04/3_md_line_break_fail_vscodium.png?resize=800%2C593&ssl=1
+[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/04/4_md_line_break_success_vscodium.png?resize=800%2C450&ssl=1
+[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/04/5_md_horizontal_rules_vscodium.png?resize=800%2C326&ssl=1
+[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/04/6_md_emphasis_vscodium.png?resize=800%2C393&ssl=1
+[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/04/7_md_blockquotes_vscodium.png?resize=800%2C393&ssl=1
+[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/04/8_md_links_vscodium.png?resize=800%2C678&ssl=1
+[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/04/9_md_images_vscodium.png?resize=800%2C725&ssl=1
+[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/04/10_md_lists_vscodium.png?resize=800%2C725&ssl=1
+[14]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/04/markdown-syntax-cheatsheet.png?resize=727%2C743&ssl=1
+[15]: https://drive.google.com/file/d/1y-Qz9PX_2HksEG5D_WwN-asNB-tpjZHV/view?usp=sharing
+[16]: https://itsfoss.com/online-markdown-editors/
+[17]: https://daringfireball.net/projects/markdown/dingus
+[18]: http://editor.md.ipandao.com/en.html
+[19]: https://dillinger.io/
+[20]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/04/editor-md_page_in_browser-1.png?resize=800%2C505&ssl=1
diff --git a/published/202204/20210812 A guide to the Linux terminal for beginners.md b/published/202204/20210812 A guide to the Linux terminal for beginners.md
new file mode 100644
index 0000000000..a4607fb8ed
--- /dev/null
+++ b/published/202204/20210812 A guide to the Linux terminal for beginners.md
@@ -0,0 +1,121 @@
+[#]: subject: "A guide to the Linux terminal for beginners"
+[#]: via: "https://opensource.com/article/21/8/linux-terminal"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14445-1.html"
+
+Linux 终端新手指南
+======
+
+> 学习 Linux 终端命令、参数的区别,以及如何使用它们来控制你的计算机。
+
+
+
+距离我的住处几条街远的地方,有一家咖啡馆,我在每个周日都会去那里参加固定的 “龙与地下城Dungeons & Dragons”(D&D) 游戏。他们有一份菜单,前几次我去点餐时,我总是要翻看好几分钟,才能确定要点些什么。熟悉了之后,我就不用看菜单了,因为我清楚地知道他们在卖什么,也清楚地知道自己想要什么。现在点餐对我来说很简单,只要说一声“老规矩”就好了,接下来就是等待一杯咖啡、一碗薯片和烤饼被送来(通常不方便的是,在我们 做出决定roll for initiative 的那一刻,但这也不是他们的问题)。(LCTT 译注:做出决定roll for initiative 是 D&D 玩家的黑话,它指的是在比赛开始前掷骰子的行为)
+
+与餐厅的菜单类似,计算机的图形界面也为用户提供了操作选项。这里有图标、窗口和按钮,你可以搜索你想要的东西,点击项目,拖动其他项目,操纵图形界面,直到你的任务完成。不过,一段时间后,这可能会变得繁琐,甚至是效率低下。既然你清楚地知道需要做什么,那么,如果只需告诉计算机你想要发生什么,无需耗费大量的体力和脑力来搜索项目、舞动鼠标,就能达到目的,岂不是更好吗?
+
+### Linux 终端是什么
+
+Linux 终端是一个基于文本的交互界面,它是用来控制 Linux 计算机的。虽然它只是帮助 Linux 用户完成任何特定任务的众多工具之一,但是它被广泛地认为是最有效的方法。除了编写代码,这无疑是最直接的方法。事实上,它是如此受欢迎,以至于苹果公司将操作系统的基础改为 Unix,从而获得了 [Bash 和 Z shell][2],而微软公司开发了它自己的开源命令行 [PowerShell][3]。
+
+### Linux 命令是什么
+
+命令commands 是一种特殊的关键词,你可以在终端中使用它,告诉计算机去执行一个动作。大多数命令是很小的应用程序,它们与你的操作系统的其他部分一起安装。你可能没有意识到它们的存在,因为它们通常被保存在相对模糊的目录中,如 `/bin`、`/sbin`、`/usr/bin` 和 `/usr/sbin`,但你的终端知道在哪里可以找到它们(多亏了一个叫 [PATH][4] 的东西)。其他的命令是内置在终端中的。你不必担心一个命令是安装的还是内置的,无论是哪一种,终端都能执行。更棒的是,在大多数 Linux 发行版上,当终端找不到一个命令时,它会在互联网上搜索提供该命令的软件包,然后会主动为你提供安装软件包、运行该命令的服务。
+
+下面是一个简单的命令:
+
+```
+$ ls
+```
+
+`ls` 命令是 “list” 的缩写,它会列出当前目录的内容。试一试吧!先打开一个终端窗口,然后打开一个文件管理器窗口(Linux 上叫 “文件Files”,macOS 上叫 “访达Finder”,Windows 上叫 “资源管理器Windows Explorer”)。比较一下这两个窗口,它们是同一数据的两种不同表现方式。
+
+### Linux 命令中的参数是什么
+
+参数argument 是命令中的任意一个“不是命令本身”的部分。例如,要列出一个特定目录的内容,你可以提供该目录的名称作为参数。
+
+```
+$ ls Documents
+```
+
+在这个例子中,`ls` 是命令,`Documents` 是参数。该命令将列出 `Documents` 目录的内容。
+
+### Linux 命令中的选项是什么
+
+命令的 选项option,也叫 标志flag 或 开关switch,它是命令参数的一部分。命令参数是跟在命令后面的任何东西,而选项通常(但不总是)用一个连接号(`-`)或两个连接号(`--`)来划分。请看下面这个例子:
+
+```
+$ ls --classify Documents
+```
+
+在这个例子中,`--classify` 是一个选项。它也有一个简短的版本,因为终端用户更喜欢少打点字来提高效率。
+
+```
+$ ls -F Documents
+```
+
+短的选项通常可以合并。下面是一个 `ls` 命令,它将 `-l` 选项与 `--human-readable`(`-h`)、`--classify`(`-F`) 和 `--ignore-backups`(`-B`) 选项结合了起来:
+
+```
+$ ls -lhFB
+```
+
+一些选项本身可以带参数。例如,`ls` 的 `--format` 选项可以让你改变信息的呈现方式。默认情况下,目录的内容是以列的形式提供给你的,但如果你需要它们显示为逗号分隔的列表,你可以把 `--format` 设置为 `comma`。
+
+```
+$ ls --format=comma Documents
+alluvial, android-info.txt, arduinoIntro, dmschema,
+headers.snippet, twine, workshop.odt
+```
+
+等于号(`=`)是可选的,所以这样做也可以:
+
+```
+$ ls --format comma Documents
+alluvial, android-info.txt, arduinoIntro, dmschema,
+headers.snippet, twine, workshop.odt
+```
+
+### 学习使用 Linux 终端
+
+学习如何使用终端可以提高工作效率和生产力,同时也可以使计算变得非常有趣。当我运行一个精心设计的命令时,我常常会坐下来,为我在空白屏幕上输入几个字就能实现的事情而惊叹。终端可是和很多东西相关 —— 编程、诗歌、拼图和实用主义,但无论你如何看待,它都是一个值得学习的持续创新。
+
+ * [使用 Linux 终端查看你的计算机上有哪些文件][5]
+ * [如何在 Linux 终端中打开和关闭目录][6]
+ * [在 Linux 终端中进行导航][7]
+ * [在 Linux 终端中移动一个文件][8]
+ * [在 Linux 终端中重命名一个文件][9]
+ * [在 Linux 终端中复制文件和文件夹][10]
+ * [在 Linux 终端中删除文件和文件夹][11]
+
+在阅读和练习了这些文章中的课程后,你可以下载我们的免费电子书 [系统管理员的 Bash 脚本指南][12],在终端中获得更多乐趣。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/8/linux-terminal
+
+作者:[Seth Kenlon][a]
+选题:[lujun9972][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/seth
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/terminal_command_linux_desktop_code.jpg?itok=p5sQ6ODE (Terminal command prompt on orange background)
+[2]: https://opensource.com/business/16/3/top-linux-shells
+[3]: https://opensource.com/article/18/2/powershell-people
+[4]: https://opensource.com/article/17/6/set-path-linux
+[5]: https://linux.cn/article-13669-1.html
+[6]: https://opensource.com/article/21/7/linux-terminal-basics-opening-and-closing-directories
+[7]: https://opensource.com/article/21/7/terminal-basics-moving-around-your-computer
+[8]: https://linux.cn/article-13677-1.html
+[9]: https://opensource.com/article/21/7/terminal-basics-rename-file-linux-terminal
+[10]: https://opensource.com/article/21/7/terminal-basics-copying-files-linux-terminal
+[11]: https://linux.cn/article-13687-1.html
+[12]: https://opensource.com/downloads/bash-scripting-ebook
\ No newline at end of file
diff --git a/published/202204/20220114 Installing Arch Linux Using archinstall Automated Script -Complete Guide.md b/published/202204/20220114 Installing Arch Linux Using archinstall Automated Script -Complete Guide.md
new file mode 100644
index 0000000000..0f162609d7
--- /dev/null
+++ b/published/202204/20220114 Installing Arch Linux Using archinstall Automated Script -Complete Guide.md
@@ -0,0 +1,174 @@
+[#]: subject: "Installing Arch Linux Using archinstall Automated Script [Complete Guide]"
+[#]: via: "https://www.debugpoint.com/2022/01/archinstall-guide/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "hwlife"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14444-1.html"
+
+用 archinstall 自动化脚本安装 Arch Linux
+======
+
+
+
+> 在这篇指南中,我们解释了使用自动化脚本 `archinstall` 安装 Arch Linux 的超级容易的方法。适合初学者到高级用户。
+
+对许多新用户来说,安装 Arch Linux 仍然是一件头疼的事情。它需要命令行,以及包括启动引导过程、内核和 Grub 概念在内的 Linux 系统的内部工作机制等大量的知识。对许多人来说并不知道这些知识。但是新用户仍然想要安装和体验 Arch Linux 。
+
+我个人感觉在计算机年代,操作系统的安装应该是简单的事情。对于最终用户安装系统应该尽可能的简单。毕竟,所有操作系统的存在只有一个目的 —— 帮助最终用户执行某些任务并协助他们。
+
+### archinstall 自动化脚本是什么?
+
+话说,不久前我们讨论过在裸机上安装 Arch Linux。从那以后,Arch Linux 团队弄出来了一个叫做 [archinstall][1] 自动化和交互脚本。如今用这个脚本安装 Arch Linux 是一件容易的事情,任何人都能够完成。
+
+这就让我们有了使用这个叫做 `archinstall` 的自动化脚本撰写这篇 Arch Linux 安装指南的打算。
+
+让我们开始吧。
+
+### 使用 archinstall 脚本安装 Arch Linux 的指南
+
+我将这个指南分为三个部分。第一部分是下载 Arch Linux 的 .ISO 文件,创建一个磁盘引导分区。第二部分是实际安装,最后是用一个示例桌面来完成配置。
+
+#### 第一部分:下载 .ISO 文件
+
+访问以下链接。下载 Arch Linux 的 .ISO 文件。你能够用一个直接的 HTTP 地址下载或者使用种子/磁力链接下载文件。
+
+> [下载 Arch Linux][2]
+
+一旦下载完成,用 [Etcher][3] 或者其他的工具创建一个可启动的 U 盘。
+
+完成以后,插入 U 盘并且重启计算机。
+
+你开始下一部分之前,确定你连接了互联网。一般来说,如果你是有线网,那就很好。如果你在 Arch 就要通过命令行配置 Wi-Fi,请 [遵从此指南][4]。只要确保你已经连接到互联网就行。
+
+#### 第二部分:使用 archinstall 安装
+
+一旦启动完成,你应该看到以下提示。键入 `archinstall` 然后点击回车。
+
+![First prompt for archinstall][5]
+
+这个命令将会验证网络连接是否连接到 Arch Linux 的镜像站点。一旦完成,就会弹出一系列(像这样的)问题。你需要做的将是阅读和回复。
+
+所以,对这个指南来说,我给出了让你开始的最基础和最容易的一种方法。如果你足够自信,你也可以尝试其他选择。但是我建议遵循以下概述的基本选择,下次你在尝试其他的选择。
+
+够公平吧?OK。
+
+因此,第一个问题是键盘布局类型。通过两个字节国家特定布局代码来显示。你也可以键入它们或者输入它们边上的数字。对于美国-英语来说,我键入 `us` 。
+
+![Keyboard Type – archinstall][6]
+
+下一步是键盘语言,我键入数字 `65` 选择美国。
+
+![Keyboard Language – archinstall][7]
+
+下一个是硬盘驱动器部分。这个脚本自动探测你的目标系统的可用驱动器。举个例子,在以下图片中,它显示 17GB `/dev/vda` 是一个主要的块设备。这就是我要安装系统的地方。不要跳过这个步骤。
+
+在这个指南中,我键入数字 `2` 选中 `/dev/vda` 块设备。请根据你们每人的系统键入相应的数字。
+
+一旦你做完这步,你应该在设置这个设备的边上看到一个双箭头 `>>`。如果你已经选中它,按下回车键进入下一步。
+
+![Choose Block Device -1][9]
+
+![Choose Block Device -2][10]
+
+在下一个选项中,你要非常小心。这个脚本问是否你想清除设备然后进行自动分区。否则你要手动分区硬盘驱动器。为了简单起见,我选择选项 `0`。
+
+![Select partition option – archinstall][11]
+
+在下面一组问题中,如下图所示。更多的是文件系统类型、主机名、root 用户密码,等等。按照屏幕上的操作。便于帮助你,我已经在下表中加入了用于本指南的问题和答案。
+
+问题 | 选项
+---|---
+选择主要的文件系统 | `ext4`
+你想用 zram 作为交换分区吗?| `n`
+键入磁盘加密密码 | 保留为空直接按下回车
+主机名或计算机名 | 键入你要键入的名字
+键入 root 密码 | 键入你要键入的密码
+键入程序预配置文件名:0 – 桌面;1 – 最小化;2 – 服务器;3 – xorg | 选择 `3` xorg
+安装显卡驱动 | 根据你的系统选择数字。否则缺省不选按下回车键
+安装声卡驱动 | 选择 `pulseaudio`
+
+![Various options in archinstall -1][12]
+
+在选择内核的下个问题里,选择 `linux`。这个脚本将要为你安装你额外添加的软件包,像 firefox、nano ,等等。
+
+用 NetworkManager 选择网络接口,并且为时区选择缺省选项。
+
+![Various options in archinstall -2][13]
+
+就是这样。一旦你已经完成上述步骤,这个脚本将会生成,并且等待你按下回车开始安装过程。
+
+![archinstall starts downloading packages][14]
+
+等待直到这一步骤完成。这将花一些时间下载安装所有软件包,这依赖你的系统和网络连接速度。有时 Arch 镜像是缓慢的,所以等待直到它完成。
+
+#### 第三部分 - 安装桌面环境
+
+当你用以上方法安装完基本系统以后,你可以安装像 GNOME、KDE Plasma、MATE、Xfce 等额外的桌面环境。我们在以下页面中为它们每个都提供了安装指南。你可以访问你选择的桌面环境安装页面,并且直接跳到这些页面底部提取安装桌面环境的命令。
+
+ * [Xfce][15]
+ * [GNOME][16]
+ * [KDE Plasma][17]
+ * [Cinnamon][8]
+ * [LXQt][18]
+
+举个例子,如果你想要安装 GNOME 桌面基本套件,你可以简单的运行以下命令来安装。
+
+```
+sudo pacman -S --needed gnome gnome-tweaks nautilus-sendto gnome-nettool gnome-usage gnome multi-writer adwaita-icon-theme chrome-gnome-shell xdg-user-dirs-gtk fwupd arc-gtk-theme seahosrse gdm firefox gedit
+```
+
+```
+systemctl enable gdm
+```
+
+```
+systemctl enable NetworkManager
+```
+
+一旦你完成了以上这些,键入 `reboot` 重启。
+
+恭喜你。你已经使用这个指南通过厉害的 `archinstall` 脚本安装完成了 Arch Linux。
+
+### 结语
+
+我相信,这是由该团队开发的令人印象深刻的脚本之一。并且确实增加了使用 Arch Linux 的用户基数和覆盖范围。
+
+使用这个脚本有什么问题吗?在下方评论让我知道。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/01/archinstall-guide/
+
+作者:[Arindam][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlife)
+校对:[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/lujun9972
+[1]: https://github.com/archlinux/archinstall
+[2]: https://archlinux.org/download/
+[3]: https://www.debugpoint.com/2021/01/etcher-bootable-usb-linux/
+[4]: https://www.debugpoint.com/2020/11/connect-wifi-terminal-linux/
+[5]: https://www.debugpoint.com/wp-content/uploads/2022/01/image.png
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/01/Keyboard-Type-archinstall.jpg
+[7]: https://www.debugpoint.com/wp-content/uploads/2022/01/Keyboard-Language-archinstall.jpg
+[8]: https://www.debugpoint.com/2021/02/cinnamon-arch-linux-install/
+[9]: https://www.debugpoint.com/wp-content/uploads/2022/01/Choose-Block-Device-1.jpg
+[10]: https://www.debugpoint.com/wp-content/uploads/2022/01/Choose-Block-Device-2.jpg
+[11]: https://www.debugpoint.com/wp-content/uploads/2022/01/Select-partition-option-archinstall.jpg
+[12]: https://www.debugpoint.com/wp-content/uploads/2022/01/Various-options-in-archinstall-1.jpg
+[13]: https://www.debugpoint.com/wp-content/uploads/2022/01/Various-options-in-archinstall-2.jpg
+[14]: https://www.debugpoint.com/wp-content/uploads/2022/01/archinstall-starts-downloading-packages.jpg
+[15]: https://www.debugpoint.com/2020/12/xfce-arch-linux-install-4-16/
+[16]: https://www.debugpoint.com/2020/12/gnome-arch-linux-install/
+[17]: https://www.debugpoint.com/2021/01/kde-plasma-arch-linux-install/
+[18]: https://www.debugpoint.com/2020/12/lxqt-arch-linux-install/
+[19]: https://t.me/debugpoint
+[20]: https://twitter.com/DebugPoint
+[21]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[22]: https://facebook.com/DebugPoint
diff --git a/published/202204/20220119 Manage your passwords in the Linux terminal.md b/published/202204/20220119 Manage your passwords in the Linux terminal.md
new file mode 100644
index 0000000000..415e376715
--- /dev/null
+++ b/published/202204/20220119 Manage your passwords in the Linux terminal.md
@@ -0,0 +1,218 @@
+[#]: subject: "Manage your passwords in the Linux terminal"
+[#]: via: "https://opensource.com/article/22/1/manage-passwords-linux-terminal"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lujun9972"
+[#]: translator: "hwlife"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14480-1.html"
+
+在 Linux 终端里管理你的密码
+======
+
+> pass 是一个经典的 UNIX 式密码管理系统,使用 GnuPG(GPG)作为加密方式,终端是它的主要界面。
+
+
+
+如今,我们每个人都有几十个密码。幸运的是,这些密码大部分几乎都是网站的,你可能通过互联网浏览器访问大部分网站,而许多浏览器都有内置的密码管理器。最流行的互联网浏览器也有一个同步的功能,可以帮助你在各种设备上运行的浏览器之间分发密码,所以当你需要时,绝不会找不到你的登录信息。如果这不能够满足你,还有类似 [BitWarden][2] 这样优秀的开源项目也可以托管你加密后的密码,确保只有你自己才能解锁它们。这些方案有助于你轻松维护独特的密码,我使用这些方便系统来管理一些密码。但是我的主密码存储库比以上这些方式简单的多。我主要是使用 [pass][3] ,这是一个经典的 UNIX 式密码管理系统,使用 GnuPG(GPG)作为加密方式,终端是它的主要界面。
+
+### 安装 pass
+
+你可以从你的发行版仓库中安装 `pass` 命令。
+
+在 Fedora、Mageia 和类似的发行版上,你可以用你的包管理器来安装它:
+
+```
+$ sudo dnf install pass
+```
+
+在 Elementary、Mint 和其它基于 Debian 的发行版上:
+
+```
+$ sudo apt install pass
+```
+
+在 macOS 上,你可以使用 [Homebrew][4] 来安装它:
+
+```
+$ brew install pass
+```
+
+### 设置 GnuPG
+
+在使用 `pass` 之前,你需要一个有效的 PGP(良好隐私Pretty Good Privacy)密钥。如果你已经维护了一个 PGP 密钥,你可以跳过这个步骤,或者你可以选择为使用 `pass` 而创建一个新的密钥。最常见的开源 PGP 实现是 GnuPG(GPG),它随 Linux 一起提供。对于 macOS,你可以从 [gpgtools.org][5]、Homebrew 或者 [Macports][6] 安装它。要创建 GnuPG 密码,运行这个命令:
+
+```
+$ gpg --generate-key
+```
+
+你会被提示输入你的名字和电子邮件,并且为密钥创建一个密码。你的密钥是一个数字文件,你的密码只有你自己知道。它俩组合起来能够“加锁”和“解锁”加密信息,比如包含密码的文件。
+
+GPG 密钥更像是一个房门钥匙或者汽车钥匙,如果你失去了它,它“锁起来”的任何东西都会变得无法获得。仅仅知道你的密码是不够的。
+
+如果你已经管理了几个 SSH 密钥,你可能已经习惯了这一点了。如果你对数字加密密钥是个新手,可能得花些时间来适应。备份你的 `~/.gnupg` 目录,这样当你下次心血来潮决定尝试一个令人兴奋的新发行版时,你就不会意外地删除它。
+
+做一个备份,并保持备份安全。
+
+### 设置 pass
+
+要开始使用 `pass` ,你必须初始化一个 _密码仓库_ ,它定义为一个储存位置,配置为使用特定加密密钥。你可以通过与密钥相关联的名称或数字指纹来指明要用于密码存储的 GPG 密钥。你自己的名字通常更容易选择:
+
+```
+$ pass init seth
+mkdir: created directory '/home/seth/.password-store/'
+Password store initialized for seth
+```
+
+如果你忘记了你的名称,你可以使用 `gpg` 命令查看数字指纹和关联你名称的密钥:
+
+```
+$ gpg --list-keys
+gpg --list-keys
+/home/seth/.gnupg/pubring.kbx
+-----------------------------
+pub ed25519 2022-01-06 [SC] [expires: 2024-01-06]
+ 2BFF94286461216C907CBA52F067996F13EF10D8
+uid [ultimate] Seth Kenlon <[seth@example.com][7]>
+sub cv25519 2022-01-06 [E] [expires: 2024-01-06]
+```
+
+用指纹初始化密码库与用你的名字初始化密码库基本相同:
+
+```
+$ pass init 2BFF94286461216C907CBA52F067996F13EF10D8
+```
+
+### 存储密码
+
+使用 `pass add` 命令添加密码到你的密码仓库:
+
+```
+$ pass add [www.example.com][8]
+Enter password for [www.example.com][8]:
+```
+
+提示你键入你要添加的密码。
+
+密码现在存储到了你的密码仓库中。你可以自己查看一下:
+
+```
+$ ls /root/.password-store/
+www.example.com.gpg
+```
+
+当然,这个文件是不可读的,并且你尝试对它运行 `cat` 或 `less` 时,在你的终端上会显示乱码(如果扰乱了你的显示,可以使用 `reset` 命令来恢复你的终端。)
+
+### 用 pass 编辑密码
+
+我使用不同的用户名称进行不同的上网活动,所以网站的用户名常常和密码同样重要。`pass` 是有这个功能的,即使它默认状态下并不提示你。你可以使用 `pass edit` 命令添加用户名到密码文件:
+
+```
+$ pass edit www.example.com
+```
+
+这会打开一个编辑器(一般是你设置为 `EDITOR` 或者 `VISUAL` [环境变量][10] 的编辑器) 显示 `www.example.com` 文件的内容。目前,那仅仅是一个密码,但是你可以添加用户名甚至网址或者你想要添加的任何信息。它是个加密了的文件,所以你可以把你要放的任何东西放到里边。
+
+```
+bd%dc$3a49af49498bb6f31bc964718C
+user: seth123
+url: example.com
+```
+
+保存文件然后关闭。
+
+### 从 pass 获取密码
+
+要查看密码文件的内容,使用 `pass show` 命令:
+
+```
+$ pass show www.example.com
+bd%dc$3a49af49498bb6f31bc964718C
+user: seth123
+url: www.example.org
+```
+
+### 查找密码
+
+有时候很难记住一个密码是归入到 `www.example.com` 还是 `example.com`,又或者一些类似 `app.example.com` 的网址。此外,一些网站架构使用不同的 URL 来实现不同的网站功能,所以你可能在 `www.example.com` 网址下填写过密码,你同时也用相同的登录信息在合作网站 `www.example.org` 下使用过密码。
+
+如果有疑问,可以使用 `grep` 命令。`pass grep` 命令显示整个搜索项目的实例,无论是在文件名中还是在文件内容中:
+
+```
+$ pass grep example
+www.example.com:
+url: www.example.org
+```
+
+### 在浏览器中使用 pass
+
+我使用 `pass` 来获取互联网密码以外的信息,但是网站是我经常需要密码的地方。我常常在电脑上的某个地方打开一个终端,所以我通过 `Alt+Tab` 键切换到终端用 `pass` 来获取信息并不麻烦。但是我并不这么做是因为有一些插件可以将 `pass` 与网页浏览器整合在一起。
+
+#### pass 托管脚本
+
+首先,安装 `pass` 托管脚本:
+
+```
+$ curl -sSL github.com/passff/passff-host/release/latest/download/install_host_app.sh
+```
+
+这个脚本放置了一个 Python 脚本,帮助你的浏览器访问你的密码和 GPG 密码。用你所用的浏览器的名字运行它(或者不写参数,查看全部选项):
+
+```
+$ bash ./install_host_app.sh firefox
+```
+
+如果你使用多个浏览器,你可以为每一个浏览器安装它。
+
+#### pass 附件
+
+一旦你已经安装了这个托管程序,你可以为你的浏览器安装一个附件或者扩展。在你的浏览器附件或者扩展管理器里搜索 `PassFF` 插件。
+
+![PassFF][12]
+
+安装了这个附件,然后关闭并重新打开浏览器。
+
+导航到一个你在密码仓库中存有密码的网站。在你的登录文本框右侧会显示一个小小的 “P” 图标。
+
+![PassFF browser prompt][14]
+
+点击 “P” 按钮会看到你的密码仓库中与你网站名称匹配的一个列表。
+
+![PassFF browser menu][15]
+
+点击“纸和笔”的图标填写表单,或者通过“纸飞机”的图标填写并自动提交表单。
+
+轻松的密码管理,而且完全整合了!
+
+### 尝试用 pass 作为你的 Linux 密码管理器
+
+对于那些想用日常使用的工具来管理密码和个人信息的用户来说,`pass` 命令是一个很好的选择。如果你已经依赖 GPG 和终端,那么你可能会喜欢 `pass` 系统。对于那些不想让他们的密码被束缚在特定程序上的用户来说,这也是一个重要的选择。可能你并不只使用一个浏览器,或者你不喜欢这种想法,即如果你决定停止使用一个应用程序,可能很难从它那里提取你的密码。使用 `pass` ,你可以在一个 UNIX 式的直接系统中保持对你的秘密的控制。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/1/manage-passwords-linux-terminal
+
+作者:[Seth Kenlon][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlife)
+校对:[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/linux_keyboard_desktop.png?itok=I2nGw78_ (Linux keys on the keyboard for a desktop computer)
+[2]: http://bitwarden.com
+[3]: https://www.passwordstore.org/
+[4]: https://opensource.com/article/20/6/homebrew-mac
+[5]: https://gpgtools.org/
+[6]: https://opensource.com/article/20/11/macports
+[7]: mailto:seth@example.com
+[8]: http://www.example.com
+[9]: http://www.example.com.gpg
+[10]: https://opensource.com/article/19/8/what-are-environment-variables
+[11]: http://www.example.org
+[12]: https://opensource.com/sites/default/files/uploads/passff.jpg (PassFF)
+[13]: https://creativecommons.org/licenses/by-sa/4.0/
+[14]: https://opensource.com/sites/default/files/uploads/passff-button-web.jpg (PassFF browser prompt)
+[15]: https://opensource.com/sites/default/files/uploads/passff-menu-web.jpg (PassFF browser menu)
diff --git a/published/202204/20220201 View your Linux server-s network connections with netstat.md b/published/202204/20220201 View your Linux server-s network connections with netstat.md
new file mode 100644
index 0000000000..ab021f1e42
--- /dev/null
+++ b/published/202204/20220201 View your Linux server-s network connections with netstat.md
@@ -0,0 +1,174 @@
+[#]: subject: "View your Linux server's network connections with netstat"
+[#]: via: "https://opensource.com/article/22/2/linux-network-security-netstat"
+[#]: author: "Sahana Sreeram https://opensource.com/users/sahanasreeram01gmailcom"
+[#]: collector: "lujun9972"
+[#]: translator: "hwlife"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14461-1.html"
+
+使用 netstat 查看你的 Linux 服务器网络连接
+======
+
+> netstat 命令为你的 Linux 服务器提供了监测和网络故障排除的重要观察手段。
+
+
+
+在 [之前的文章中][2],我分享了一些管理你的个人 Linux 服务器的首要步骤。我简要的提到了监测网络连接的监听端口,我想通过 Linux 系统的 `netstat` 命令来扩展开讲讲。
+
+服务监测和端口扫描是标准的行业惯例。有很好的软件,如 [Prometheus][3] 协助这个过程自动化,[SELinux][4] 协助上下文和保护系统访问权限。然而,我相信了解你的服务器是如何连接到其他网络和设备的,是建立正常服务器基准的关键,能够帮助你识别有可能表明错误和入侵等异常情况。作为一个初学者,我已经掌握了 `netstat` 命令为我的服务器提供了监测和网络故障排除的重要观察手段。
+
+`netstat` 和类似的一些网络监测工具被归入 [net-tools 软件包][5] 里,用来显示关于活动连接的信息。因为运行在开放的端口的服务往往容易被利用,定期进行网络监测能够帮助你及早探测到可疑的活动。
+
+### 安装 netstat
+
+`netstat` 经常预装在 Linux 发行版上。如果 `netstat` 没有在你的服务器上安装,用你的包管理器安装它。下面是在基于 Debian 的系统上:
+
+```
+$ sudo apt-get install net-tools
+```
+
+在基于 Fedora 的系统上:
+
+```
+$ dnf install net-tools
+```
+
+### 使用 netstat
+
+就其本身而言,`netstat` 命令显示了全部建立成功的连接。你可以使用 `netstat` 的参数指定进一步预期的输出。举个例子,要显示所有监听和非监听的连接,使用 `--all`(`-a` 为简写)的参数。这将返回许多结果,所以在例子中我用管道符输出给 `head` 命令来显示输出的前 15 行:
+
+```
+$ netstat --all | head -n 15
+Active Internet connections (servers and established)
+Proto Recv-Q Send-Q Local Address Foreign Address State
+tcp 0 0 *:27036 *:* LISTEN
+tcp 0 0 localhost:27060 *:* LISTEN
+tcp 0 0 *:16001 *:* LISTEN
+tcp 0 0 localhost:6463 *:* LISTEN
+tcp 0 0 *:ssh *:* LISTEN
+tcp 0 0 localhost:57343 *:* LISTEN
+tcp 0 0 *:ipp *:* LISTEN
+tcp 0 0 *:4713 *:* LISTEN
+tcp 0 0 10.0.1.222:48388 syd15s17-in-f5.1e:https ESTABLISHED
+tcp 0 0 10.0.1.222:48194 ec2-35-86-38-2.us:https ESTABLISHED
+tcp 0 0 10.0.1.222:56075 103-10-125-164.va:27024 ESTABLISHED
+tcp 0 0 10.0.1.222:46680 syd15s20-in-f10.1:https ESTABLISHED
+tcp 0 0 10.0.1.222:52730 syd09s23-in-f3.1e:https ESTABLISHED
+```
+
+要只显示 TCP 端口,使用 `--all` 和 `--tcp` 参数,或者简写成 `-at` :
+
+```
+$ netstat -at | head -n 5
+Active Internet connections (servers and established)
+Proto Recv-Q Send-Q Local Address Foreign Address State
+tcp 0 0 *:27036 *:* LISTEN
+tcp 0 0 localhost:27060 *:* LISTEN
+tcp 0 0 *:16001 *:* LISTEN
+```
+
+要只显示 UDP 端口,使用 `--all` 和 `--udp` 参数,或者简写成 `-au` :
+
+```
+$ netstat -au | head -n 5
+Active Internet connections (servers and established)
+Proto Recv-Q Send-Q Local Address Foreign Address State
+udp 0 0 *:27036 *:*
+udp 0 0 10.0.1.222:44741 224.0.0.56:46164 ESTABLISHED
+udp 0 0 *:bootpc
+```
+
+`netstat` 命令参数常常是简单易懂的。举个例子,要显示带有全部进程 ID(PID)和数字地址的监听 TCP 和 UDP 的端口:
+
+```
+$ sudo netstat --tcp --udp --listening --programs --numeric
+Active Internet connections (only servers)
+Proto Recv-Q Send-Q Local Address Foreign Addr State PID/Program name
+tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
+tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 2500/dnsmasq
+tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1726/sshd
+tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1721/cupsd
+tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 4023/sshd: tux@
+tcp6 0 0 :::111 :::* LISTEN 1/systemd
+tcp6 0 0 :::22 :::* LISTEN 1726/sshd
+tcp6 0 0 ::1:631 :::* LISTEN 1721/cupsd
+tcp6 0 0 ::1:6010 :::* LISTEN 4023/sshd: tux@
+udp 0 0 0.0.0.0:40514 0.0.0.0:* 1499/avahi-daemon:
+udp 0 0 192.168.122.1:53 0.0.0.0:* 2500/dnsmasq
+udp 0 0 0.0.0.0:67 0.0.0.0:* 2500/dnsmasq
+udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd
+udp 0 0 0.0.0.0:5353 0.0.0.0:* 1499/avahi-daemon:
+udp6 0 0 :::111 :::* 1/systemd
+udp6 0 0 :::44235 :::* 1499/avahi-daemon:
+udp6 0 0 :::5353 :::* 1499/avahi-daemon:
+```
+
+这个常用组合简写版本是 `-tulpn` 。
+
+要显示一个指定服务的信息,[使用 grep 命令过滤][6]:
+
+```
+$ sudo netstat -anlp | grep cups
+tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1721/cupsd tcp6 0 0 ::1:631 :::* LISTEN 1721/cupsd
+unix 2 [ ACC ] STREAM LISTENING 27251 1/systemd /var/run/cups/cups.sock
+unix 2 [ ] DGRAM 59530 1721/cupsd
+unix 3 [ ] STREAM CONNECTED 55196 1721/cupsd /var/run/cups/cups.sock
+```
+
+### 接下来的步骤
+
+一旦你运行了 `netstat` 命令,你就可以采取措施来保护你的系统,确保只有你主动使用的服务在你的网络上被监听。
+
+ 1. 识别通常被利用的端口和服务。一般来说,关闭你实际不使用的端口。
+ 2. 留意不常见的端口号,认识了解在你系统上使用的合法端口。
+ 3. 密切注意 SELinux 错误。有时你需要做的只是更新上下文,以匹配你对系统做的合法更改,但是要阅读错误警告,以确保 SELinux 提醒你的不是可疑或者恶意的活动。
+
+如果你发现一个端口正在运行一个可疑的服务,或者你只是简单的想要关闭你不再使用的端口,你可以遵从以下这些步骤,通过防火墙规则手动拒绝端口访问:
+
+如果你在使用 `firewall-cmd` ,运行这些命令:
+
+```
+$ sudo firewall-cmd –remove-port=/tcp
+$ sudo firewall-cmd –runtime-to-permanent
+```
+
+如果你在使用 UFW,运行以下的命令:
+
+```
+$ sudo ufw deny
+```
+
+下一步,使用 `systemctl` 来停止这个服务:
+
+```
+$ systemctl stop
+```
+
+### 理解 netstat
+
+`netstat` 是一个快速收集你的服务器网络连接信息的有用工具。定期网络监测是了解你的系统的重要组成部分,对帮助你保持你的系统安全有着重要意义。将这一步纳入你的日常管理中,你可以使用类似 `netstat` 或者 `ss` ,以及 [Nmap 等开源端口扫描器或者 Wireshark 等嗅探器][7] ,它们都允许设定 [计划任务][8]。
+
+随着服务器存储了大量的个人数据,确保个人服务器的安全日益重要。通过了解你的服务器怎样连接到互联网,你可以降低你的机器的风险,同时你仍可以在数字时代大量的连接中获得益处。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/2/linux-network-security-netstat
+
+作者:[Sahana Sreeram][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlife)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/sahanasreeram01gmailcom
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rack_server_sysadmin_cloud_520.png?itok=fGmwhf8I (A rack of servers, blue background)
+[2]: https://opensource.com/article/21/4/securing-linux-servers
+[3]: https://opensource.com/article/19/11/introduction-monitoring-prometheus
+[4]: https://opensource.com/business/13/11/selinux-policy-guide
+[5]: http://sourceforge.net/projects/net-tools/
+[6]: https://opensource.com/article/21/3/grep-cheat-sheet
+[7]: https://redhat.com/sysadmin/troubleshoot-dhcp-nmap-tcpdump-and-wireshark
+[8]: https://opensource.com/article/22/2/redhat.com/sysadmin/nmap-scripting-engine
diff --git a/published/202204/20220202 Read and Organize Markdown Files in Linux Terminal With Glow.md b/published/202204/20220202 Read and Organize Markdown Files in Linux Terminal With Glow.md
new file mode 100644
index 0000000000..52a0325346
--- /dev/null
+++ b/published/202204/20220202 Read and Organize Markdown Files in Linux Terminal With Glow.md
@@ -0,0 +1,129 @@
+[#]: subject: "Read and Organize Markdown Files in Linux Terminal With Glow"
+[#]: via: "https://itsfoss.com/glow-cli-tool-markdown/"
+[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
+[#]: collector: "lujun9972"
+[#]: translator: "hwlife"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14457-1.html"
+
+用 Glow 在 Linux 终端阅读和管理 Markdown 文件
+======
+
+
+
+> Glow 是一个能让你在 Linux 终端渲染 Markdown 文件的命令行工具。你也可以用它来管理 Markdown 文件。
+
+我喜欢 Markdown。虽然我不是一个专业的 Markdown 用户,但我几乎用 Markdown 写我的大部分文章。
+
+如果你是我们的常客,你可能已经看到过 [Markdown 指南][1]、编辑器以及 Obsidian 之类的工具。我将再加个工具到这个名单中,它叫做 [Glow][2],并且不像之前涵盖的程序,Glow 能够让你在终端里阅读 Markdown 文件。
+
+等等!难道不能在终端里使用 [阅读文本文件的常规 Linux 命令][3],如 `cat`、`less`,甚至是像 Vim 之类的编辑器来阅读 Markdown 文件吗?
+
+当然可以。但它会原样显示所有的代码来显示原始的 Markdown 文件,而不是显示正确的格式化文本。
+
+![Glow renders the Markdown file][4]
+
+注意:Glow 不是一个编辑器。你不能用它去编写 Markdown 文本。
+
+### Markdown 爱好者将会喜欢 Glow 的功能
+
+Glow 可以用两种格式来使用:[命令行界面和终端用户界面][5]。
+
+简单的对一个 Markdown 文件使用 Glow 命令将在屏幕上显示整个渲染后的内容。
+
+```
+glow markdown_file
+```
+
+![Markdown display with Glow][6]
+
+这是很不错,但是 Glow 可以做的更好。它有额外的参数打开终端用户界面terminal user interface(TUI)模式,并且允许你用它来做更多的事情。
+
+你可以使用页面参数(`-p`)来在页面模式下显示渲染后的文本(类似 `less` 命令显示文本没有弄乱屏幕一样)。
+
+```
+glow -p markdown_file
+```
+
+在页面视图中,你可以使用 `less` 命令相同的方法,使用 `/` 键来搜索特定的文本。你可以按下`q` 键退出这个视图。
+
+![Pager view similar to the less command][7]
+
+不止这些。你可以使用 `-a` 选项,它将查找当前目录及子目录中的所有 Markdown 文件。
+
+```
+glow -a
+```
+
+你可以用方向键在屏幕上滚动文件。上下键向上和向下移动,左右键按照页数移动。
+
+![With -a option, Glow finds and displays all Markdown files in current directory][8]
+
+你可以查看显示在底部的帮助选项。在这个视图中,查找选项允许你根据文件名查找文件(不是它们的内容)。
+
+![You can search files by their name][9]
+
+这里也有标签。当然,你可以通过 `Tab` 键在标签中来回移动。
+
+隐藏stashed标签像一个书签。当你浏览文件或是查看它们的内容时,你可以按下 `s` 键来创建一个隐藏标签(书签)。这个书签将只会在当前目录下可见。
+
+你可以按下 `x` 键来移除书签(不是文件)或者按下 `m` 键来添加一个备注。
+
+![You can bookmark files by stashing them with s key][10]
+
+新闻news标签显示更新日志和来自 Glow 开发者(们)的其他消息。
+
+![The news tab shows messages from the developers][11]
+
+当你已经找到你想找的文件,你可以通过按下回车键来查看它们。因为你在终端用户界面模式,所以你这里会有额外的键盘选项。可以通过按下 `?` 键来显示选项。
+
+![You can view keyboard shortcuts by pressing the ? key][12]
+
+### 在 Linux 上安装 Glow
+
+Glow 可以在 Linux 和 macOS 上使用。你可以在 macOS 和 [Linux 上使用 Homebrew][13] 来安装它,然而,我建议你在这里使用 Linux 安装包。
+
+Glow 在 Void、Solus 和 Arch Linux 的仓库里是可用的。你可以用它们的包管理器来安装它们。
+
+在基于 Arch 的发行版上,使用:
+
+```
+sudo pacman -S glow
+```
+
+对于 Ubuntu、Debian、Fedora 和 SUSE,它们有用于在各种架构的 .DEB 和 .RPM 二进制包,你可以在它们的发布页找到它们。
+
+> [下载用于其它 Linux 发行版的 Glow][14]
+
+### 总结
+
+总之,Glow 是在终端里的一个美化视图和管理 Markdown 的便利工具。像许多其他的命令行工具一样,它不是每个人都适合。如果你经常在终端,并喜欢 Markdown 文件,你可以尝试使用一下。当你用过后,请在评论区里分享你使用它的体验。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/glow-cli-tool-markdown/
+
+作者:[Abhishek Prakash][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlife)
+校对:[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/lujun9972
+[1]: https://itsfoss.com/markdown-guide/
+[2]: https://github.com/charmbracelet/glow
+[3]: https://linuxhandbook.com/view-file-linux/
+[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/01/markdown-display-with-cat.png?resize=1572%2C962&ssl=1
+[5]: https://itsfoss.com/gui-cli-tui/
+[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/01/markdown-display-with-glow.png?resize=800%2C490&ssl=1
+[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/01/pager-view-with-glow.png?resize=800%2C451&ssl=1
+[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/01/glow-collection.png?resize=800%2C451&ssl=1
+[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/01/find-files-in-glow.png?resize=800%2C451&ssl=1
+[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/01/stash-feature-glow.png?resize=800%2C374&ssl=1
+[11]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/01/glow-news-tab.png?resize=800%2C451&ssl=1
+[12]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/01/display-help-in-file-view-in-glow.png?resize=800%2C490&ssl=1
+[13]: https://itsfoss.com/homebrew-linux/
+[14]: https://github.com/charmbracelet/glow/releases
diff --git a/published/202204/20220209 Give Your Linux Mint and Xubuntu a Visual Uplift Using Twister UI.md b/published/202204/20220209 Give Your Linux Mint and Xubuntu a Visual Uplift Using Twister UI.md
new file mode 100644
index 0000000000..73bbee1316
--- /dev/null
+++ b/published/202204/20220209 Give Your Linux Mint and Xubuntu a Visual Uplift Using Twister UI.md
@@ -0,0 +1,153 @@
+[#]: subject: "Give Your Linux Mint and Xubuntu a Visual Uplift Using Twister UI"
+[#]: via: "https://www.debugpoint.com/2022/02/twister-ui-2022/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14494-1.html"
+
+使用 Twister UI 提升你的 Linux Mint 和 Xubuntu 视觉感受
+======
+
+
+
+> Twister UI 是给你的 Linux Mint 和 Xubuntu 提供视觉提升的最简单方法。以下是方法。
+
+[Twister UI][1] 可以安装在已有的 Linux Mint 和 Xubuntu 系统上。Pi 实验室创造了这个用户界面,他们为树莓派和相关硬件开发了 [Twister OS][2]。
+
+### Twister UI
+
+Twister UI 是一套用于 [Linux Mint][3] 和 Xubuntu 的软件包集合,它带来了几个流行的操作系统特定的主题和配置,开箱即用。你只需点击一个按钮就可以应用它们,而不需要单独下载图标、主题或光标。
+
+其最新版本提供了以下操作系统的开箱即用的桌面主题、图标、声音和其他设置变化。
+
+ * 原生 Twister 操作系统主题
+ * Windows 98、Windows 7、Windows XP
+ * Windows 11、Windows 10
+ * iTwister 和 iTwister Sur(类似 macOS)
+
+#### 它是如何工作的?
+
+该团队提供了自动脚本,从 GitHub 下载所有流行的操作系统特定的主题、声音等。然后该脚本修改它们,从 Ubuntu 仓库下载额外的包,并整体安装这个附加组件。安装程序自己负责安装一切,你需要做的就是等待。
+
+在向你解释如何安装之前,让我们看看这个操作系统增强模组MOD的一些截图和功能。这些截图来自应用了这个操作系统增强模组的 Linux Mint Xfce 版。
+
+#### 它的外观(截图)
+
+![Twister UI – macOS Theme][4]
+
+![Twister UI – Windows XP Theme][5]
+
+![native Twister OS theme][6]
+
+#### Twister UI 软件包的内容
+
+该软件包有它自己的设置应用,名为 ThemeTwister。你可以用它来快速切换主题。你可以随心所欲地在它们之间转换,而不会破坏什么。
+
+该项目还默认安装了一些优秀的开源软件包。它安装了 Lutris、Steam 游戏平台以帮助你快速玩游戏。它还为用户安装了 Discord、Wine 模拟器。
+
+正如你所看到的,考虑到这个附加组件的用户群,该团队仔细斟酌了要安装哪些软件包。
+
+### 如何安装
+
+如果你打算安装这个,我建议在 Linux Mint Xfce 版和 Xubuntu 中使用这个包。不要试图在其他 Linux 发行版中安装它(我在阅读文档之前就试过了,我把我的 Fedora 系统搞得一团糟,所以不要在其他发行版中尝试)。
+
+其要求是安装在 Linux Mint Xfce 或 Xubuntu(无论是 32 位还是 64 位)。它还需要大约 5GB 的磁盘空间。
+
+首先,从下面的链接中下载该软件包,其中包含 Torrent 链接。它不是一个 ISO 文件。它由三个文件组成,其中一个是实际的脚本。
+
+> [下载 Twister UI][1]
+
+下载完毕后,打开下载的文件夹,你应该看到一个扩展名为 `.run` 的文件(如下图所示)。
+
+![Give the execute permission to the run file][7]
+
+改变该文件的权限,使其可执行。然后通过终端运行它。
+
+该脚本需要管理员密码,所以在要求时就提供这个密码。在你开始安装之前,请确保你有稳定的网络连接,以便随时下载其他软件包。
+
+![Starting the installation script][8]
+
+下载和安装需要一些时间。这取决于你的网速,可能需要 15 到 20 分钟左右。
+
+你需要知道,该安装程序将取代默认的 Plymouth ,并会 [更新 initramfs][9]。
+
+安装完成后,脚本应该会提示你重新启动。
+
+重启后,登录到你的 Linux Mint Xfce 或 Xubuntu 系统。
+
+### 如何改变主题
+
+如果你使用的是 Linux Mint Xfce 版,在改变主题之前,你需要做以下额外的改变以获得最佳效果:
+
+ * 打开“应用程序菜单Application Menu > 设置Settings > 桌面Desktop”,在“图标Icon”标签下,取消勾选“使用自定义字体大小Use custom font size”。
+ * 打开“应用程序菜单Application Menu > 设置Settings > 窗口管理器调整Window Manager tweaks”,在“合成器Compositor”标签下,取消勾选“在停靠窗口下显示阴影Show shadows under dock windows”。
+
+现在你应该在桌面上看到一个 “ThemeTwister” 图标,打开该应用。这个应用为你提供了改变主题的选项,如下图所示。
+
+![Changing theme using ThemeTwister tool][10]
+
+选择一个主题并点击相应的按钮。每次你改变或应用一个主题时,该脚本都会要求你注销。所以在改变主题之前,请确保你关闭所有的程序。
+
+### 如何卸载
+
+如果你完成后想卸载,那么打开终端,运行下面的 shell 脚本。
+
+```
+sh /usr/share/ThemeSwitcher/uninstall.sh
+```
+
+上述脚本只卸载了 Twister UI 组件,并没有卸载 Steam、Lutris 等。所以如果你想卸载,请使用软件管理器来卸载它们。
+
+如果你在卸载后做一次重启,那是最好的。
+
+### 评测和性能
+
+根据 Pi 实验室的说明,该定制应该不会消耗太多的额外内存。这也是事实。
+
+该定制对桌面性能影响不大。当我在 Linux Mint Xfce 版的空闲模式下运行一到两项定制时,它消耗了大约 740MB 的内存,CPU 大约 2% 到 3%。这本身就令人印象深刻。使用它的唯一代价是额外的磁盘空间。
+
+![Resource Usage in Linux Mint with Twister UI][11]
+
+主题切换器非常好,完美地改变了主题,没有意外和错误。
+
+总的来说,整个过程是无痛的,按照其设计进行得很好。
+
+### 总结
+
+你可以下载单独的主题图标,改变设置,手动配置你的 Linux 发行版,使其看起来像 Windows 或 macOS。这需要很多时间,有时对新用户来说也很困难。考虑到这一点,我认为这种新方法可以节省时间,对每个人来说都非常容易。你只需点击一个按钮,就可以得到所有需要的增强模组。
+
+总有一种争论,为什么 Linux 需要看起来像 Windows 或 macOS。但老年人可能不太熟悉电脑,不过他们记得 Windows 的颜色和图标。他们可以使用这种简单的修改来适应 Linux,而不会有任何麻烦。
+
+总的来说,这是一个来自 Pi 实验室的优秀项目,可以帮助到全世界的许多用户。
+
+那么,你对这个项目有什么看法?请在下面的评论栏里告诉我。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/02/twister-ui-2022/
+
+作者:[Arindam][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://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lujun9972
+[1]: https://twisteros.com/twisterui.html
+[2]: https://twisteros.com
+[3]: https://www.debugpoint.com/2021/11/linux-mint-20-3-new-app/
+[4]: https://www.debugpoint.com/wp-content/uploads/2022/02/Twister-UI-macOS-Theme-1024x576.jpg
+[5]: https://www.debugpoint.com/wp-content/uploads/2022/02/Twister-UI-Windows-XP-Theme-1024x574.jpg
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/02/native-Twister-OS-theme-1024x581.jpg
+[7]: https://www.debugpoint.com/wp-content/uploads/2022/02/Give-the-execute-permission-to-the-run-file-1024x521.jpg
+[8]: https://www.debugpoint.com/wp-content/uploads/2022/02/Starting-the-installation-script.jpg
+[10]: https://www.debugpoint.com/wp-content/uploads/2022/02/Changing-theme-using-ThemeTwister-tool.jpg
+[11]: https://www.debugpoint.com/wp-content/uploads/2022/02/Resource-Usage-in-Linux-Mint-with-Twister-UI-1024x579.jpg
+[12]: https://t.me/debugpoint
+[13]: https://twitter.com/DebugPoint
+[14]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[15]: https://facebook.com/DebugPoint
diff --git a/published/202204/20220214 How I configure Vim as my default editor on Linux.md b/published/202204/20220214 How I configure Vim as my default editor on Linux.md
new file mode 100644
index 0000000000..f933119bef
--- /dev/null
+++ b/published/202204/20220214 How I configure Vim as my default editor on Linux.md
@@ -0,0 +1,103 @@
+[#]: subject: "How I configure Vim as my default editor on Linux"
+[#]: via: "https://opensource.com/article/22/2/configure-vim-default-editor"
+[#]: author: "David Both https://opensource.com/users/dboth"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14475-1.html"
+
+我如何在 Linux 上把 Vim 配置为默认编辑器
+======
+
+> Vim 是我最喜爱的编辑器。对于那些默认使用其他编辑器的程序,我对系统所做的这些改变可以使得 Vim 成为它们默认编辑器。
+
+
+
+我使用 Linux 大概有 25 年了,在那之前我还使用了几年的 Unix。在这段时间里,我对一些日常使用的工具形成了偏好。Vim 是我使用的最重要的工具之一。
+
+我在 90 年代初学习 Solaris 时,就开始使用 Vi 了,因为有人告诉我,它在任何系统上都能使用。从我的经验来看,确实是这样。我也试过其他编辑器,它们都能够胜任工作。但是,对于我来说,Vim 的使用效果最好。我经常使用它,以至于形成了肌肉记忆,甚至我在使用其他编辑器时也会下意识地去按 Vim 的快捷键。
+
+另外,我只是单纯地喜欢 Vim 而已。
+
+许多配置文件使用的名字是 Vi 而不是 Vim,你可以运行 `vi` 命令。不过,`vi` 命令其实是 `vim` 命令的一个链接。
+
+许多 Linux 工具使用的编辑器都是在模拟或是直接调用的 [Nano][2]、[Emacs][3] 或者 Vim。其他的一些工具允许用户(比如那些有着明确偏好的用户)使用他们喜欢的编辑器。举两个对我影响最大的例子,一个是 Bash 命令行,它默认使用 Emacs;另一个是 Alpine 文本模式的邮件客户端,它默认使用 Pico。事实上,Pico 是专门为 Pine 邮件客户端编写的,而 Pine 是 Alpine 的前身。
+
+并非所有使用外部编辑器的程序都是可配置的。有些程序只使用开发者指定的编辑器。对于那些可配置的应用程序,有不同的方法来选择你喜欢的编辑器。
+
+### 在 Linux 命令行中编辑
+
+除了实际编辑文本文件外,另一个我经常使用,且和编辑密切相关的工具是 Bash shell。Bash 的默认编辑器是 Emacs。虽然我也用过 Emacs,但我肯定更喜欢 Vim。所以很多年前,我把 Bash 命令行的默认编辑器从 Emacs 换成了 Vim,这对我来说更舒服。
+
+有很多种方法可以配置 Bash。你可以使用一个本地配置文件,比如 `/home/yourhomedirectory/.bashrc`,它只对你的用户账户进行默认修改,而不对同一系统的其他用户进行修改。我个人倾向于让这些改变成为全局性的,基本上就是我的个人账户和 root。如果你也想全局配置,你可以创建你自己的配置文件,并把它放在 `/etc/profile.d` 目录中。
+
+我在 `/etc/profile.d` 中添加了一个名为 `myBashConfig.sh` 的文件。`/etc/profile.d` 目录中存放了所有已安装的 shell 的启动文件。在启动终端会话时,每个 shell 仅会根据文件名的扩展名,读取为其准备的启动文件。例如,Bash shell 只读取扩展名为 `.sh` 的文件。
+
+```
+<截断>
+alias vim='vim -c "colorscheme desert" '
+# 把 vi 设置为 Bash 的默认编辑器
+set -o vi
+# 为所有检查 $EDITOR 变量的程序设置默认编辑器为 vi
+EDITOR=vi
+<截断>
+```
+
+在这个全局 Bash 配置文件段中,`set -o vi` 将 Vi 设置为默认编辑器。这个 `set` 命令中的 `-o` 选项将 `vi` 定义为编辑器。为使配置生效,你需要关闭所有正在运行的 Bash 会话,并打开新的会话。
+
+现在,你现在可以使用所有你熟悉的 Vim 命令,包括光标移动。只要按下 `Esc` 键就可以进入 Vim 编辑模式。我特别喜欢多次使用 `b` 将光标移回多个字的功能。
+
+### 将 Vim 设置为其他程序的默认值
+
+一些 Linux 命令行工具和程序会检查 `$EDITOR` 环境变量来决定使用哪个编辑器。你可以用下面的命令检查这个变量的当前值。我在一个新安装的虚拟机上运行过该命令,以查看默认的编辑器到底是什么。
+
+```
+# echo $EDITOR
+/usr/bin/nano
+#
+```
+
+默认情况下,检查 `$EDITOR` 环境变量的 Fedora 程序会使用 Nano 编辑器。在 `myBashConfig.sh` 中添加一行 `EDITOR=vi`(如上面的片段所示),可以将默认值改为 Vi(Vim)编辑器。然而,不是所有使用外部编辑器的命令行程序都会检查这个环境变量。
+
+### 在 Alpine 中编辑电子邮件
+
+几周前,我认为 Pico 不太适合作为我的电子邮件编辑器。我可以使用它,而且在从 Thunderbird 转到 [Alpine][4] 之后的一段时间内我也用了一段时间。但我发现,Pico 妨碍了我,我总是习惯使用 Vim 按键序列,这影响了我的工作效率。
+
+我在 Alpine 的用户帮助中看到,默认编辑器是可以修改的。我决定把它改成 Vim。实际上这很容易做到。
+
+在 Alpine 主菜单上,按 `S` 键进入设置,然后按 `C` 键进行配置。在 “编辑器设置Composer Preferences” 部分,按 `X` 选择 “启用外部编辑器命令Enable Alternate Editor Command” 和 “隐式启用外部编辑器Enable Alternate Editor Implicitly” 项目。在往下滚动几页的 “高级用户设置Advanced User Preferences” 部分,找到 `Editor 那一行。如果它还没有被修改的话,它应该是这样的:
+
+```
+Editor =
+```
+
+用光标栏突出显示 `Editor` 这一行,然后按回车键来编辑。将 `` 改为 `vim`,再按回车键,然后按 `E` 键退出,最后按 `Y` 键保存修改。
+
+要用 Vim 编辑电子邮件,只需进入电子邮件正文,Vim 就会自动启动,就像 Pico 那样。所有我喜欢的编辑功能都还在,因为它实际上是在使用 Vim。甚至退出 Vim 的 `Esc :wq` 序列也是一样的。
+
+### 总结
+
+与其他编辑器相比,我更喜欢 Vim,对我的系统进行的这些改动后,那些默认使用其他编辑器的应用程序,将使用 Vim 来替代它们的默认编辑器。有些程序使用 `$EDITOR` 环境变量,因此你只需要做一次修改就够了。其他有用户配置选项的程序,如 Alpine,则必须为每个程序单独设置。
+
+这种可以选择你喜欢的外部编辑器的能力,非常符合 Unix 哲学的宗旨:“每个程序都只做一件事,而且要做得出色”。既然已经有几个优秀的编辑器,为什么还要再写一个呢?而且它也符合 Linux 哲学的宗旨:“使用你最喜欢的编辑器”。
+
+当然,你可以把你的默认文本编辑器改为 Nano、Pico、Emacs 或任何其他你喜欢的编辑器。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/2/configure-vim-default-editor
+
+作者:[David Both][a]
+选题:[lujun9972][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/dboth
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/laptop_screen_desk_work_chat_text.png?itok=UXqIDRDD (Person using a laptop)
+[2]: https://opensource.com/article/20/12/gnu-nano
+[3]: https://opensource.com/tags/emacs
+[4]: https://opensource.com/article/21/5/alpine-linux-email
diff --git a/published/202204/20220215 Manage your calendar from the Linux terminal with the konsolekalendar command.md b/published/202204/20220215 Manage your calendar from the Linux terminal with the konsolekalendar command.md
new file mode 100644
index 0000000000..370909af4d
--- /dev/null
+++ b/published/202204/20220215 Manage your calendar from the Linux terminal with the konsolekalendar command.md
@@ -0,0 +1,129 @@
+[#]: subject: "Manage your calendar from the Linux terminal with the konsolekalendar command"
+[#]: via: "https://opensource.com/article/22/2/manage-calendar-linux-konsolekalender-kde"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14486-1.html"
+
+在 Linux 终端管理你的日历
+======
+
+> KDE 很适合在 Linux 上进行基于终端的日程安排。konsolekalendar 命令让你从终端查看和管理 iCal 日历。
+
+
+
+我是一个 [KDE 用户][2],多年来我一直在 Plasma 桌面上进行着看似无尽的探索。如果你在公开场合问我,我可能会声称自己对我每天使用的桌面了如指掌。但实际上,我只是刚刚触及到表面而已。似乎每天我都能学到一个新的 KDE 技巧,让我的生活变得更轻松或更有趣,我最新的发现是 `konsolekalendar` 命令,它让你从终端查看和管理 iCal 日历。
+
+### Akonadi
+
+Akonadi 项目是一个底层 KDE 框架,帮助 Plasma 桌面跟踪所有的个人信息管理器(PIM)数据。它主要是为开发者服务的,包括很多可以让程序员用来创建应用的库,通过这些程序你可以访问你的联系人、笔记、电子邮件、日历等等。Akonadi 中包括一些终端命令,比如 `akonadictl` 可以启动和停止 Akonadi 服务,但它们大多是为了排除故障。然而,`konsolekalendar` 是一个面向用户的命令,可以让你完全访问 Kontact 套件的所有数据,包括 KMail、Notes 和日历。
+
+如果你正在运行 KDE 的 Plasma 桌面,那么你已经安装了 Kontact 套件。
+
+![Kontact UI][3]
+
+你也安装好了 Akonadi 和它的工具,所以你所需要的基于终端的日历完成了!
+
+### 从终端查看你的日历
+
+由于 [NextCloud][5] 和 [Radicale][6] 等项目的存在,你可以托管自己的 iCal 日历服务,或者你可能已经在流行的供应商(例如,Google)那里拥有一个 iCal 账户。当你使用 Kontact 管理日历时,你订阅了一个日历对象(用 Akonadi 的术语说是一个“集合collection”)。当你对你的本地日历进行更新时,这些变化会被送回你的 iCal 服务器以同步你的日历服务器和客户端。
+
+无论你是否使用过 Kontact 的日历功能,你在 Kontact 中都有一些默认的日历对象。你有一个叫**个人日历**和**生日和纪念日**的日历对象。
+
+以下是如何显示当天的日历(默认为**个人日历**):
+
+```
+$ konsolekalendar
+Date: Saturday, January 15, 2022
+ 10:00 AM - 11:00 AM
+Summary: Covid booster shot
+UID: 8d8a1e38-c88c-4d84-99e5-23...
+----------------------------------
+Date: Saturday, January 15, 2022
+ 12:00 PM - 01:00 PM
+Summary: Lunch
+UID: 7aa89a...
+----------------------------------
+Date: Saturday, January 15, 2022
+ 01:00 PM - 04:45 PM
+Summary: Afternoon coding
+UID: 9cde38b...
+----------------------------------
+Date: Saturday, January 15, 2022
+ 06:00 PM - 10:00 PM
+Summary: Planescape game
+UID: c73f7e98-722f-48a2-8006-66...
+----------------------------------
+```
+
+### 添加一个事件
+
+要查看你订阅的所有日历,请使用 `--list-calendars` 选项:
+
+```
+$ konsolekalendar --list-calendars
+----------------------------------
+3 - (Read only) Birthdays & Anniversaries
+11 - Personal Calendar
+60 - (Read only) Open Invitations
+61 - (Read only) Declined Invitations
+66 - Dnd
+67 - Work
+68 - Museum
+```
+
+左边的数字是日历的 ID。要添加一个事件到一个特定的日历,请使用 `--calendar` 选项,然后是日历 ID:
+
+```
+$ konsolekalendar --add --calendar 66 \
+--date 2022-01-16 \
+--time 20:00 --end-time 23:59 \
+--summary "Another game" \
+--description "Remember to bring dice" \
+Success: "Another game" inserted
+```
+
+### 删除一个事件
+
+你也可以删除事件。每个事件都有一个唯一的 ID(UID),在每个事件列表的底部提供:
+
+```
+$ konsolekalendar --list
+Date: Saturday, January 15, 2022
+ 06:00 PM - 10:00 PM
+Summary: Planescape game
+UID: c73f7e98-722f-48a2-8006-66aa8ddcf789
+```
+
+要删除一个事件,请使用 `--delete` 选项,同时使用 `--uid` 选项:
+
+```
+$ konsolekalendar --delete \
+--uid c73f7e98-722f-48a2-8006-66aa8ddcf789
+```
+
+### 终端中的 Akonadi
+
+你用 `konsolekalendar` 所做的一切都会立即在 Akonadi 中执行,并在 Kontact 中得到同样快的反映。使用一个并不意味着你必须放弃另一个。由于它们共享 Akonadi 后端,两者查看和编辑相同的数据。`konsolekalendar` 命令是一项正在进行的工作。未来的计划包括与 Kontact 的笔记和日记部分的整合,而且还有很多比本文所涉及的更多的选项。如果你在使用 KDE 桌面,试试 `konsolekalendar`,体验一下终端的 PIM!
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/2/manage-calendar-linux-konsolekalender-kde
+
+作者:[Seth Kenlon][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://opensource.com/users/seth
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/calendar.jpg?itok=jEKbhvDT (Calendar close up snapshot)
+[2]: https://opensource.com/article/17/5/7-cool-kde-tweaks-will-improve-your-life
+[3]: https://opensource.com/sites/default/files/uploads/kontact.jpg (Kontact UI)
+[4]: https://creativecommons.org/licenses/by-sa/4.0/
+[5]: https://opensource.com/article/21/1/nextcloud-productivity
+[6]: https://radicale.org/v3.html
diff --git a/published/202204/20220216 Archive files on your Linux desktop with Ark for KDE.md b/published/202204/20220216 Archive files on your Linux desktop with Ark for KDE.md
new file mode 100644
index 0000000000..3b62f776de
--- /dev/null
+++ b/published/202204/20220216 Archive files on your Linux desktop with Ark for KDE.md
@@ -0,0 +1,128 @@
+[#]: subject: "Archive files on your Linux desktop with Ark for KDE"
+[#]: via: "https://opensource.com/article/22/2/archives-files-linux-ark-kde"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14453-1.html"
+
+使用 KDE 的 Ark 在 Linux 桌面上归档文件
+======
+
+> 在 KDE 上创建、检查和扩展压缩的档案。
+
+
+
+当我完成一个项目时,我经常喜欢把为这个项目创建的所有文件放到一个档案中。这不仅可以 [节省空间][2],而且可以让这些文件远离我的视线,防止它们在我使用 [find][3] 和 [grep][4] 搜索我当前想要的文件时作为结果出现。一旦文件被归档,它们就会被你的文件系统视为一个单独的对象,这意味着你不能像浏览普通文件夹那样来浏览它们。你可以把它们解压缩来列出档案的内容,或者打开一个终端,运行适当的归档命令,比如 [tar][5] 命令。又或者你可以使用一个像 Ark 这样的应用程序来列出、预览、修改和管理你的档案。
+
+### 在 Linux 上安装 Ark
+
+KDE Plasma 桌面预装了 Ark,你也可以从软件包管理器中获取。在 Fedora、Mageia 和类似的系统中,你可以运行:
+
+```
+$ sudo dnf install ark
+```
+
+在 Debian、Elementary 和类似的系统中,你可以运行:
+
+```
+$ sudo apt install ark
+```
+
+你也可以从 [Flathub][7] 上 [获取并安装它的 Flatpak 包][6]。
+
+### 创建一个档案
+
+熟悉归档的最好方法就是自己创建一个档案,然后探索它。所有的这些都可以通过 Ark 来完成。
+
+首先,从你的应用程序菜单中启动 Ark,然后进入“档案Archive”菜单,选择“新建New”。
+
+![用 Ark 创建一个新的档案][8]
+
+(图源 Seth Kenlon / [CC BY-SA 4.0][9])
+
+给你的档案设置一个文件名,使用默认的压缩设置,并将档案保存到你的主目录。
+
+Ark 不会自动创建空的档案,但在你设置好名称和位置后,只要你向其中添加文件,Ark 就会立即创建一个档案。
+
+要向即将建立的档案中添加文件,只需将该文件拖入 Ark 窗口即可。
+
+![档案中的内容][10]
+
+(图源 Seth Kenlon / [CC BY-SA 4.0][9])
+
+归档有两个好处:合并和压缩。通过把文件添加到档案里,你将许多文件整合到了同一个地方。因为它们已经存在于档案中,所以,如果你想要摆脱这些文件的干扰,你完全以把原始的副本删除掉。
+
+要查看你通过压缩文件节省了多少磁盘空间,你可以进入“档案Archive”菜单,选择“属性Properties”。它会显示出文件在归档前/后的大小,同时还有很多其他有用的元数据。
+
+![档案的属性和元数据][11]
+
+(图源 Seth Kenlon / [CC BY-SA 4.0][9])
+
+Ark 可以做的事情还有很多,但是现在先关闭 Ark,假装你已经使用完毕。你的档案会存放在你声明保存它的位置(在这个例子中,它的名字是 `example.tar.gz`,位于我的用户主目录中。)
+
+### 查看档案中的文件
+
+Ark 可以打开任何档案,就像打开一个普通的文件夹一样。要在 Ark 中打开一个档案,只需在文件管理器中左键点击它(单击/双击,取决于你的系统设置)。你也可以右键点击它,并选择“用 Ark 打开Open with Ark”。
+
+一旦档案在 Ark 中打开,你就可以在文件管理器中进行大部分操作,包括删除文件、添加新文件、预览文件内容等等。
+
+### 从档案中删除文件
+
+有时候,你会把一个文件放到一个你不需要的档案中。此时,当你想从档案中删除一个文件时,你可以右键单击该文件并选择“删除Delete”。
+
+![右键菜单][12]
+
+(图源 Seth Kenlon / [CC BY-SA 4.0][9])
+
+### 向档案中添加文件
+
+向档案中添加文件是更加容易的。你只需从文件管理器中把该文件拖拽到 Ark 里。另外,你也可以选择 Ark 右键菜单中“添加文件Add Files”。
+
+### 从档案中提取单个文件
+
+当处理一个档案时,许多人会选择解开整个档案,然后寻找他们真正需要的一两个文件。对于小型档案,这勉强说得过去,但对于大型档案来说,这会占用你大量的时间和磁盘空间,哪怕只是暂时的。
+
+有了 Ark,你可以只提取你需要的文件,只要把它们从 Ark 窗口拖到你要保存的地方就行。另外,你也可以选择右键菜单中的“提取Extract”。
+
+### 预览档案中的文件
+
+事实上,你并不总是需要提取文件。如果你只是需要快速查看一个文件,Ark 或许可以向你展示一个文件的预览,而不需要将其解压到你的硬盘上。
+
+要预览一个文件,在 Ark 中双击它即可。
+
+![在 Ark 中预览一个文件][13]
+
+(图源 Seth Kenlon / [CC BY-SA 4.0][9])
+
+### 开始归档吧
+
+在 Linux 桌面上管理档案是非常简单和直观的。Ark 是一个很好的归档工具,许多其他的 Linux 桌面也有类似的工具。因此,即使你不使用 Ark,其他类似的工具也能帮助到你。对我来说,归档很大程度上让我保持了文件的有条不紊、节约了磁盘空间。Ark 的存在使得我们可以很方便地和档案打交道。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/2/archives-files-linux-ark-kde
+
+作者:[Seth Kenlon][a]
+选题:[lujun9972][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/seth
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/yearbook-haff-rx-linux-file-lead_0.png?itok=-i0NNfDC (Hand putting a Linux file folder into a drawer)
+[2]: https://opensource.com/article/21/11/linux-commands-convert-files
+[3]: https://opensource.com/article/21/9/linux-find-command
+[4]: https://opensource.com/article/21/3/grep-cheat-sheet
+[5]: https://opensource.com/article/17/7/how-unzip-targz-file
+[6]: https://opensource.com/article/21/11/install-flatpak-linux
+[7]: https://flathub.org/apps/details/org.kde.ark
+[8]: https://opensource.com/sites/default/files/ark-new.jpg (Creating a new archive in Ark)
+[9]: https://creativecommons.org/licenses/by-sa/4.0/
+[10]: https://opensource.com/sites/default/files/ark-items.jpg (Items in an archive)
+[11]: https://opensource.com/sites/default/files/ark-properties.jpg (Archive properties and metadata)
+[12]: https://opensource.com/sites/default/files/ark-menu-click-right.jpg (Right-click menu)
+[13]: https://opensource.com/sites/default/files/ark-preview.jpg (Previewing a file in Ark)
diff --git a/published/202204/20220226 How to Configure Task Switcher in KDE Plasma Desktop.md b/published/202204/20220226 How to Configure Task Switcher in KDE Plasma Desktop.md
new file mode 100644
index 0000000000..973738eba6
--- /dev/null
+++ b/published/202204/20220226 How to Configure Task Switcher in KDE Plasma Desktop.md
@@ -0,0 +1,137 @@
+[#]: subject: "How to Configure Task Switcher in KDE Plasma Desktop"
+[#]: via: "https://www.debugpoint.com/2022/02/configure-task-switcher-kde/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14450-1.html"
+
+如何在 KDE Plasma 桌面上配置任务切换器
+======
+
+> 本指南解释了如何在 KDE Plasma 桌面中配置任务切换器。
+
+![Configure KDE Plasma Task Switcher][1]
+
+### 什么是任务切换器?
+
+[任务切换器][2] 是一个帮助你在当前桌面会话中切换打开的窗口或应用的组件。通常,当你按下 `Alt+Tab` 时,它会显示为一个图标列表。
+
+![Thumbnail Grid Task Switcher][3]
+
+而这在 KDE Plasma 中是可以根据你的具体需要高度配置的。你可以定制它的外观、图标的排序、相同应用的分组等等。
+
+### 改变 KDE Plasma 的任务切换器选项
+
+打开“系统设置System Settings”。在“工作区Workspace”组下,点击“窗口管理Window Management > 任务切换器Task Switcher”。
+
+在主Main标签上,可视化Visualisation部分有一个下拉菜单。这个下拉菜单包含几个任务切换器选项,你可以尝试一下。
+
+选择你喜欢的选项并点击“预览”按钮。如果你感到满意,那么你可以点击“应用Apply”按钮。
+
+![Configure Task Switcher in KDE][4]
+
+这就是如何改变 KDE Plasma 桌面中的任务切换器的方法。
+
+### 替代切换器
+
+替代Alternative选项卡也包含同样的任务切换器的可视化选项。然而,你可以为替代方案配置集设置 `Alt+Tab` 以外的不同组合键。这样,你可以同时体验两组不同组合的任务切换器。
+
+### 可视化
+
+截至编写本指南时的 [KDE Plasma 5.24][5],有以下不同的任务切换器:
+
+ * Breeze
+ * Breeze Dark
+ * Breeze Twilight
+ * Compact
+ * Fedora
+ * Grid
+ * Informative
+ * large Icons
+ * Small Icons
+ * Text Only
+ * Thumbnail Grid
+ * Thumbnails
+
+下面是上述任务切换器的截图。
+
+![][6]
+
+![][7]
+
+![][8]
+
+![][9]
+
+![][10]
+
+![][11]
+
+![][12]
+
+![][13]
+
+![][14]
+
+现在,这就是 KDE Plasma 桌面中任务切换器的基本配置。现在我将解释它在以下情况下是如何表现的。
+
+### 多显示器或显示屏中的任务切换器
+
+如果你有一个多显示器(显示屏)环境,你不需要做任何事情。任务切换器将根据你的鼠标光标所在的位置显示出来。这意味着它将显示在活动显示器上。
+
+### 任务切换器与相同的应用分组
+
+你也可以在任务切换器中对相同的应用图标进行分组,以保持其简单明了。例如,如果你打开了多个 Dolphin 文件管理器实例,你可以选择下面的选项,在任务切换器的可视化中只出现一次 Dolphin 图标。
+
+![Same application grouping][16]
+
+但你可能想知道如果只出现一次,如何在相同的应用实例中切换。你可以通过任务切换器中的 `Alt+\``(默认值)来切换相同的应用。下面是你可以根据你的需要和工作来改变的选项。
+
+### 下载更多的任务切换器
+
+如果你对上述所有的选项不满意,你可以通过同一个设置窗口从 KDE 商店下载更多的任务切换器。
+
+点击上图标注 ❺ 的 “获取新的任务切换器Get New Task Switchers” ,选择你最喜欢的一个。然后点击“安装Install”。完成安装后,回到主设置窗口,应用新下载的可视化。
+
+记住,这些额外的项目是用户贡献的,在某些情况下可能会破坏你当前的主题,所以要慎重使用。在任何时候,你都可以点击重置按钮,回到原来的任务切换器视觉效果。
+
+### 结束语
+
+我希望这篇指南能帮助你在 KDE Plasma 桌面上设置一个漂亮而有效的任务切换器。正如我所说的,自定义选项很多,你可以随意发挥。
+
+感谢阅读。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/02/configure-task-switcher-kde/
+
+作者:[Arindam][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://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lujun9972
+[1]: https://www.debugpoint.com/wp-content/uploads/2022/02/kdetaskw1-1024x576.jpg
+[2]: https://docs.kde.org/trunk5/en/kwin/kcontrol/kwintabbox/index.html
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/02/Thumbnail-Grid-1024x177.jpg
+[4]: https://www.debugpoint.com/wp-content/uploads/2022/02/Configure-Task-Switcher-in-KDE-1024x652.jpg
+[5]: https://www.debugpoint.com/2022/01/kde-plasma-5-24/
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/02/Thumbnails-150x150.jpg
+[7]: https://www.debugpoint.com/wp-content/uploads/2022/02/Thumbnail-Grid-150x150.jpg
+[8]: https://www.debugpoint.com/wp-content/uploads/2022/02/Text-Only-150x150.jpg
+[9]: https://www.debugpoint.com/wp-content/uploads/2022/02/Small-Icons-150x108.jpg
+[10]: https://www.debugpoint.com/wp-content/uploads/2022/02/Large-Icons-150x150.jpg
+[11]: https://www.debugpoint.com/wp-content/uploads/2022/02/Informative-150x150.jpg
+[12]: https://www.debugpoint.com/wp-content/uploads/2022/02/Grid-Task-Switcher-150x150.jpg
+[13]: https://www.debugpoint.com/wp-content/uploads/2022/02/Compact-Task-Switcher-150x150.jpg
+[14]: https://www.debugpoint.com/wp-content/uploads/2022/02/Breeze-Task-Switcher-150x150.jpg
+[16]: https://www.debugpoint.com/wp-content/uploads/2022/02/Same-application-grouping.jpg
+[17]: https://t.me/debugpoint
+[18]: https://twitter.com/DebugPoint
+[19]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[20]: https://facebook.com/DebugPoint
diff --git a/published/202204/20220226 My favorite casual games to play on Linux.md b/published/202204/20220226 My favorite casual games to play on Linux.md
new file mode 100644
index 0000000000..dbab553478
--- /dev/null
+++ b/published/202204/20220226 My favorite casual games to play on Linux.md
@@ -0,0 +1,81 @@
+[#]: subject: "My favorite casual games to play on Linux"
+[#]: via: "https://opensource.com/article/22/2/casual-gaming-linux-kde"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lujun9972"
+[#]: translator: "perfiffer"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14435-1.html"
+
+我最喜欢在 Linux 上玩的休闲游戏
+======
+
+> 在编译开源代码的同时在 Linux 上玩电子游戏。
+
+
+
+我喜欢一款可以让自己沉浸数小时的好游戏,但我并不总是能够忽略工作而消失在电子游戏中。尽管如此,我还是喜欢不时的接受有趣的挑战,当我的计算机忙于做一些我需要等待的事情时,我最喜欢启动的两个应用程序是来自 KDE 游戏包的游戏:**KBlocks** 和 **Kolf**。
+
+### KBlocks
+
+我最喜欢的电子游戏是这种从方块从天上掉下来,最好是落成一排,当方块相邻时就会神奇的消失的游戏。KBlocks 就是这样的,它的实现很棒。它可以使用**左箭头**和**右箭头**控制方块进行旋转,使用**下箭头**让方块更快的下落,使用**空格键**直接落下方块,不同的难度级别,方块下落的速度不同。
+
+![KBlocks][2]
+
+(Seth Kenlon, [CC BY-SA 4.0][3])
+
+KBlocks 的默认主题是古埃及,这对游戏的玩法没有影响,但对于古埃及的爱好者来说可能是愉快的游戏体验。不过,你可以在“配置 KBlocksConfigure KBlocks”菜单项中更改主题。有一个名为 “Plasma” 的替代主题,或者你可以单击“获取新主题Get New Themes”按钮并下载由用户贡献的主题。
+
+![KBlocks Invaders by José Jorge][4]
+
+(Seth Kenlon, CC BY-SA 4.0)
+
+主题纯粹是美学方面的事情,但就艺术类型的人而言,为休闲游戏创建主题可能是为开源项目作出贡献的一种有趣方式。
+
+#### 引导我进入 KDE Plasma 桌面的游戏
+
+我承认,KBlocks 对我来说很难放下。事实上,正是我在会议期间玩游戏的愿望让我在 Emacs 中找到了 `M-x tetris` 命令,这反过来又让我发现并爱上了 Linux。这个游戏有很大的魅力。也许 KBlocks 将成为你发现 KDE Plasma 桌面的途径?
+
+### Kolf
+
+我不喜欢现实生活中的高尔夫,但在电脑上,迷你高尔夫结合了模拟物理和有趣的关卡设计,既令人愉快,又令人沮丧。Kolf 的目标如你所料:将高尔夫球打入洞中。当然,目的地总是在拐角处、需要越过山丘、经过池塘或者在墙后,因此你的目标是计算球速、摩擦力、坡度和轨迹,使其完美地让球回到球洞并尽可能少的击打球。
+
+![Miniature golf][5]
+
+(Seth Kenlon, [CC BY-SA 4.0][3])
+
+它从来没有看起来那么简单,而且我认为看着高尔夫球从物体上反弹,并滚下你从未打算让它靠近的山丘,这永远不会过时。
+
+#### 设计自己的球场
+
+当你尝试设计自己的迷你高尔夫球场时,乐趣才真正开始。是的,Kolf 有一个关卡编辑器,你可以在其中建造墙壁、放置池塘、山丘和沙坑,添加弹球式保险杠等等。
+
+![Kolf editor][6]
+
+(Seth Kenlon, [CC BY-SA 4.0][3])
+
+因为 Kolf 可以是多人游戏,所以给每个玩家五分钟的时间来设计一个关卡,然后看看谁在谁的关卡上做的最好,这特别有趣。
+
+### Linux KDE 游戏
+
+这绝不是 KDE 项目中仅有的两款游戏。还有许多其它游戏,包括卡牌游戏、拼图游戏和街机游戏。KDE 游戏包的好处是,它们包含了你可以随时走开的游戏,而且它们只需要你一点点的注意力。我在编译代码时使用这些游戏来消磨时间。有时候我并不能完整的玩完一局游戏,但我总是很欣赏这种心理状态的微妙转变。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/2/casual-gaming-linux-kde
+
+作者:[Seth Kenlon][a]
+选题:[lujun9972][b]
+译者:[perfiffer](https://github.com/perfiffer)
+校对:[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/gaming_grid_penguin.png?itok=7Fv83mHR (Gaming with penguin pawns)
+[2]: https://opensource.com/sites/default/files/kblocks.jpg (KBlocks)
+[3]: https://creativecommons.org/licenses/by-sa/4.0/
+[4]: https://opensource.com/sites/default/files/kblocks-invaders.jpg (KBlocks Invaders by José Jorge)
+[5]: https://opensource.com/sites/default/files/kolf.jpg (Miniature golf)
+[6]: https://opensource.com/sites/default/files/kolf-edit.jpg (Kolf editor)
diff --git a/published/202204/20220303 Nautilus File Manager Looks Amazing with GTK4 and Libadwaita - A Deep Dive.md b/published/202204/20220303 Nautilus File Manager Looks Amazing with GTK4 and Libadwaita - A Deep Dive.md
new file mode 100644
index 0000000000..502948af1a
--- /dev/null
+++ b/published/202204/20220303 Nautilus File Manager Looks Amazing with GTK4 and Libadwaita - A Deep Dive.md
@@ -0,0 +1,117 @@
+[#]: subject: "Nautilus File Manager Looks Amazing with GTK4 and Libadwaita – A Deep Dive"
+[#]: via: "https://www.debugpoint.com/2022/03/gnome-files-43/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14442-1.html"
+
+GTK4 和 Libadwaita 让 GNOME 43 的文件管理器看起来很出色
+======
+
+
+
+> 我们测试了 GNOME “文件Files” v43 的开发版本,在这里将向你深入披露其外观、功能和性能的细节。
+
+GNOME 文件Files(以前的 Nautilus)也许是当今 GNOME 生态空间中使用最多的桌面应用。而且,自其首次发布以来,它从未接受过什么大修,而其他的 GNOME 应用乃至桌面本身都转移到了一个较新的技术栈。
+
+现在一切都变了。GNOME 开发者正在为整个桌面和 “文件” 采用 GTK4 和 libadwaita。
+
+GNOME “文件” v43 将在 2022 年晚些时候与 GNOME 43 一起发布,必将令人印象深刻。这个急需的 [重制][1] 带来了原生的深色模式、很棒的 UI 以及出色的 libadwaita 触控和 GTK4 性能提升。
+
+### GNOME “文件” v43
+
+我们安装了 GNOME “文件” v43 的 Flatpak 开发版本,下面是我们的发现。
+
+第一印象,你应该注意到漂亮的 UI 触控,这要感谢 Libadwaita。关闭按钮是漂亮的圆形,而地址栏、选择高亮和整个文件窗口都有适当的间距和圆角。
+
+所有的组件都没有出现边框高亮线。
+
+下面是 v43(左)和 v42(右)的深浅模式的快速比较。
+
+![GNOME Files 43 and 42 – Light Mode Comparison][2]
+
+![GNOME Files 43 and 42 – Dark Mode Comparison][3]
+
+地址栏的文件夹分隔符保持不变。然而,字体却有了些许润色。地址栏的上下文菜单改变了,“在终端打开Open in Terminal”选项没有了。取而代之的是 “在其它应用中打开Open in Other application” 菜单。引入了一个新的选项 “创建链接Create Link”。我想许多用户会怀念 “在终端打开” 的选项。
+
+> 3/3 更新(感谢 Rashid):“在终端打开” 选项是 Nautilus 扩展包的一部分。因此,Flatpak 构建版不能“看到”它。因此,它本身并没有被删除。
+
+![New option in address bar menu][4]
+
+另一个重要的变化是你应该注意到两个主工具条菜单:a)视图按钮和 b)汉堡主菜单。这些上下文菜单项显示了菜单项及键盘快捷键。这也使它们看起来更显眼一些。
+
+![The Hamburger menu now have keyboard shortcuts][5]
+
+文件夹的上下文菜单现在有一个向上的小箭头,指向从它弹出的文件夹。文件夹的右键上下文菜单以组为单位组织得很好。例如,打开动作是分组的,而剪切、复制、粘贴在上下文菜单中以横杠的形式明显分开。
+
+![Context Menu for folder changes][6]
+
+我还注意到一个新的选项 “粘贴到该文件夹Paste into the folder”,这个很好。
+
+Nautilus 搜索几乎与 “文件” v42 相同,只是在 “文件” v43 中你可以通过创建日期/时间搜索。
+
+~~然而,我注意到一个令人兴奋的变化。上下文菜单中的文件关联的应用名称被删除了。例如,如果你今天试图在 “文件” v42 中打开一个文本文件,它在上下文菜单中显示与之相关的应用名称。在 “文件” v43 中,它只显示 “打开”。我觉得这种改变是不必要的。之前的情况更好。~~
+
+> 3/3 更新(感谢 Rashid):当我在试用 v43 的沙盒 Flatpak 版本时,它并没有看到系统关联。所以,这不是一个变化。但是,我又想知道,如果有人试图真正使用 Flatpak 版本怎么办。
+
+![A subtle change in context menu for file association][7]
+
+所以,这就是我在这个应用的新 GTK4 版本中发现的整体变化。但它看起来不错?不是吗。此外,如果你是直接从 Ubuntu 20.04 LTS 来的,其中包含 “文件” 3.38,那么也许你的体验会是“哇”!如果你将 “文件” v43 与 “文件” v3.38 进行比较,大部分区域都发生了变化。对于这些用户来说,这将是一个相当不错的体验。
+
+你应该记住,v43 仍在开发中,因此在未来最终发布时,可能会发生变化。
+
+### 愿望清单
+
+如果比较各种 Linux 文件管理器,其他的文件管理器的选项远多于今天的 GNOME “文件”。
+
+是这样的。
+
+例如,Nemo 或 Dolphin - 这两个最好的文件管理器在各方面都胜过 “文件”。比较一下功能,GNOME “文件” 没有一些流行的功能:
+
+ * 双面板或分割视图
+ * 从上下文菜单中打开一个根文件夹是困难的
+ * 一个用于文件夹浏览的向上箭头
+ * 没有从上下文菜单中创建一个新文件(文本、电子表格等)的选项
+ * 更多的排序和搜索功能
+
+我们希望这些功能能尽快出现在 GNOME “文件” 中。
+
+### 何时能用
+
+如上所述,这个版本的 GNOME “文件” 将与 GNOME 43 一起提供。因此,从 Linux 发行计划的角度来看,你应该在 2022 年 10 月的 Ubuntu 22.10 和今年晚些时候的 Fedora 37 上拥有它。
+
+不幸的是,[Ubuntu 22.04 LTS][9](Jammy Jellyfish)和带有 [GNOME 42][10] 的 [Fedora 36][11] 将不会有 GNOME “文件” 43。主要原因是时间表不匹配,而且它是要移植到 GTK4 和彻底测试的复杂应用之一。然而,大部分上述的内部功能仍然会在 “文件” 42 中。但它可能缺少漂亮的 UI 变化和主题。
+
+尽管如此,我相信这个流行的文件管理器看起来不错,当它发布时,用户应该会很兴奋地使用它。让我知道你对 GNOME “文件” 43 的新变化的看法,请在下面的评论框中留言。
+
+加油!
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/03/gnome-files-43/
+
+作者:[Arindam][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://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lujun9972
+[1]: https://gitlab.gnome.org/GNOME/nautilus
+[2]: https://www.debugpoint.com/wp-content/uploads/2022/03/GNOME-Files-43-and-42-Light-Mode-Comparison-1024x502.jpg
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/03/GNOME-Files-43-and-42-Dark-Mode-Comparison-1024x493.jpg
+[4]: https://www.debugpoint.com/wp-content/uploads/2022/03/New-option-in-address-bar-menu-1024x267.jpg
+[5]: https://www.debugpoint.com/wp-content/uploads/2022/03/The-Hamburger-menu-now-have-keyboard-shortcuts-1024x331.jpg
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/03/Context-Menu-for-folder-changes-1024x560.jpg
+[7]: https://www.debugpoint.com/wp-content/uploads/2022/03/A-subtle-change-in-context-menu-for-file-association-1024x524.jpg
+[9]: https://www.debugpoint.com/2022/01/ubuntu-22-04-lts/
+[10]: https://www.debugpoint.com/2021/12/gnome-42/
+[11]: https://www.debugpoint.com/2022/02/fedora-36/
+[12]: https://t.me/debugpoint
+[13]: https://twitter.com/DebugPoint
+[14]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[15]: https://facebook.com/DebugPoint
diff --git a/published/202204/20220303 Ubuntu vs Arch- Which Linux Distro is better.md b/published/202204/20220303 Ubuntu vs Arch- Which Linux Distro is better.md
new file mode 100644
index 0000000000..c4836821b5
--- /dev/null
+++ b/published/202204/20220303 Ubuntu vs Arch- Which Linux Distro is better.md
@@ -0,0 +1,287 @@
+[#]: subject: "Ubuntu vs Arch: Which Linux Distro is better?"
+[#]: via: "https://itsfoss.com/ubuntu-vs-arch/"
+[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "aREversez"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14485-1.html"
+
+Ubuntu vs Arch:孰优孰劣?
+======
+
+Ubuntu 与 Arch Linux 为用户提供了完全不同的桌面体验。
+
+在两者之间做出选择,实在让人左右为难,尤其是在既想体验 [Arch Linux 的亮点][1] 又想保留 Ubuntu Linux 的优势的情况下。
+
+两种发行版本身都是用户的绝佳选择。不过,如何从两者中选出最佳的一种呢?
+
+在这篇文章中,我将从各方面介绍 Ubuntu 和 Arch Linux 的不同之处,希望可以帮助你解决这一选择难题。
+
+
+
+### 1、目标用户
+
+Arch Linux 旨在为那些喜欢鼓捣、喜欢折腾的用户提供 **DIY** 体验,自定义 Linux 系统的各种元素。
+
+比如,构建软件包,以及自定义桌面。
+
+Arch Linux 的上手体验取决于 [安装设置它][3] 的用户。所以,Arch Linux 可以轻易迎合寻找不同包以及桌面环境等元素的用户。
+
+而另一方面,Ubuntu 的目标用户是那些想使用 **操作方便,预先配置好的** Linux 系统。
+
+这类用户希望系统预装必要的工具,确保一切都会按照预期进行。换言之,他们想要的是一个理想的系统,无需担心设置问题。
+
+Ubuntu 也不希望用户花费大把时间来提升自己的体验,所以它选择以满足绝大多数用户的需求为基准。
+
+### 2、系统安装
+
+不得不说,Ubuntu 提供了简洁直观的安装方式,因为它提供的图形用户界面大大方便了安装。
+
+![][4]
+
+如果有需要,你甚至可以 [在 Ubuntu 服务器上安装一个图形用户界面][5]。
+
+但要安装 Arch Linux,你就不得不使用终端(命令行)。
+
+![][6]
+
+还好,[Arch Linux 现在有了引导式的安装程序][7],这使得通过终端安装 Arch Linux 变得更加容易了。
+
+![][8]
+
+当然,还是 Ubuntu 的安装更为方便一些。
+
+### 3、桌面体验
+
+![][9]
+
+Ubuntu 旨在 **方便用户**。为此,Ubuntu 项目的领导者 Canonical 公司提供了自定义的 GNOME 桌面环境体验。
+
+尽管你可能无法像在 KDE Plasma 上那样自由地定制桌面,你依然可以有很多其他选择。感兴趣的话,可以点击了解 [KDE vs GNOME][10]。
+
+Ubuntu 也会定期收集用户体验反馈信息,尽可能地帮助用户提高工作效率。
+
+Arch Linux **更加注重功能** 以及其他技术方面,而不是用户的桌面体验。用户体验完全取决于用户在安装 Arch Linux 时是如何设置的。
+
+使用 Arch Linux 时,你能依赖的只有桌面环境提供的开箱即用工具,没有为用户量身定制的改进。如果你想体验一些不一样的东西,你就必须对系统加以调整。
+
+![Arch Linux with GNOME][11]
+
+不过,好在 Arch Linux 允许用户选择 KDE Plasma、GNOME 或者 [其他桌面环境][12],所以你可以充分利用这一优势,根据自己的喜好来选择桌面环境。
+
+不仅如此,在安装 Arch Linux 时,你还可以选择平铺式窗口管理器。
+
+总体来说,如果使用 Ubuntu,你的桌面体验和其他用户的体验别无二致,因为 Ubuntu 可以自定义的元素极少。
+
+相反,如果使用 Arch Linux,你就可以 **自由定义桌面体验**。但请注意,这可能只适合 Linux 老手,如果你刚开始使用 Linux,恐怕做起来比较困难。
+
+### 4、文件系统
+
+大多数用户不需要关心他们的 Linux 发行版所使用的文件系统。
+
+因此,Ubuntu 坚持使用 **ext4** 作为文件系统。ext4 具有现代计算机所需的全部基本功能,是一种非常优秀的最常见的文件系统。
+
+然而,如果你不想使用 **ext4**,而想选择具备其他各种优势的文件系统,那么你可以考虑 Arch Linux。
+
+![][13]
+
+你可以选择 btrfs、ext4、xfs 或者 f2fs。针对这些文件系统的优势,本文不再详述,但是如果你选择 **ext4** 之外的文件系统,请确保你知道自己在做什么。
+
+### 5、软件生态
+
+Ubuntu 支持的软件更多,这就是为什么 [大多数主流 Linux 发行版][14] 都是基于 Ubuntu 的。
+
+![][15]
+
+相应地,许多工具在开发时也是首先支持 Ubuntu,而后才是其他发行版本。
+
+此外,在 Ubuntu 上安装软件包也非常容易。你可以通过 Ubuntu 官方仓库安装软件包,也可以使用 PPA,或者是软件中心(包括 Snap 应用)。
+
+也可以使用 [Flatpak][16] 来安装软件。如果你的 Ubuntu 没有 Flatpak,你可以 [前往 Flathub 安装它][17]。
+
+如果你使用的是 Arch Linux,那么你也可以通过官方仓库安装许多软件。
+
+可惜的是,相较于 Ubuntu,一些应用开发者可能不会正式支持 Arch Linux。
+
+此外,你会发现,Arch Linux [安装和管理软件包都需要使用 pacman][18]。使用哪个图形界面的安装程序进行软件的安装和管理,取决于你所选择安装的桌面环境。
+
+![][19]
+
+举个例子,如果你安装的是 GNOME 桌面,你可以使用 GNOME 的 “软件” 应用;如果是 KDE Plasma 桌面,可以使用 “发现” 应用。
+
+这些软件包管理器都不会内置 Snap 或 Flatpak 支持,所以你只能根据需要自行安装。
+
+为了获取更多的软件,你可以使用 [AUR][20]。请注意,AUR 是社区构建的软件仓库,所以官方建议你不要完全依赖它。
+
+![][21]
+
+即便如此,AUR 也经常被看做是 Arch Linux 的优势之一,毕竟社区提供的软件包比 Ubuntu 提供的更为丰富。
+
+你可以通过使用一些 [AUR 辅助工具][22] 来提升体验质量。
+
+总体来说,如果你想仅靠一个工具就能轻松安装并且管理软件,那么 Ubuntu 当属不二之选。
+
+### 6、极简 vs 臃肿
+
+极简还是臃肿,这完全取决于个人的偏好,因为在配置 Arch Linux 时,一切尽在你的掌握之中。所以你可以在满足需要的情况下,只安装最少数量的包。
+
+相比之下,Ubuntu 预装了许多软件。在一些人看来,这些软件都很实用。
+
+![][23]
+
+当然,如果你不需要,也可以卸载。
+
+不过,还有一些人认为,这些软件没什么必要,只会显得 Ubuntu 十分臃肿。
+
+因此,你需要好好考虑一下,看自己究竟是想要预装的必备软件呢(Ubuntu)?还是拒绝臃肿,只取所需呢(Arch Linux)?
+
+### 7、自由 vs 限制
+
+![Arch Linux \(Neofetch\)][24]
+
+就像前文所提到的,Arch Linux 允许你控制系统的一切,它赋予用户极大的自由度,让用户可以尽情定制体验。
+
+这不仅仅局限于桌面环境或是平铺式窗口管理器,而是更多。
+
+例如,你还可以选择自己喜欢的音频服务器,比如 PulseAudio 或者 pipewire。
+
+你也可以选择特定的 Linux 内核,比如提供了安全性更高的加固版本、能够提升用户体验的 Zen 内核或者某个长期支持版本的 Linux 内核。
+
+不同于 Arch Linux,Ubuntu 一直坚持使用经过全面测试的 Linux 内核,而且默认使用 PulseAudio 作为音频服务器(笔者写这篇文章时情况如此)。
+
+但说到底,哪个能满足你的需求,哪个才是最好的。
+
+### 8、社区支持
+
+Ubuntu 拥有坚实的用户基础,可以提供广泛的社区支持。与其相关的论坛和门户网站有很多,可以指导 Ubuntu 用户,帮助解决遇到的难题。
+
+![itsfoss community][25]
+
+你也可以在论坛(包括 [It’s FOSS 社区][26])发布问题,寻求帮助。
+
+Arch Linux 用户比较少,所以不提供类似的社区支持。不过,Arch Linux 的维基提供了几乎涉及各个方面的高质量技术文档,算是弥补了这一不足。
+
+![arch wiki][27]
+
+如果你想探索,[Arch Linux 维基][28] 有着最丰富的技术文档。
+
+### 9、发布周期
+
+Ubuntu 提供 [长期支持版本][29],在五年或更长时间(针对企业)提供小的更新维护。
+
+![][30]
+
+Ubuntu 还提供了非长期支持版本,可以得到九个月的更新维护,而每半年发布一个新版本。非长期支持版本适合那些想体验最新软件包与功能的用户,每次升级都可能伴随着重大更新。
+
+长期支持版本更适合于那些不希望每次更新都有破坏性变化的用户。
+
+更多信息可以参考我们的文章:[Ubuntu 发行周期与生命周期结束][31]
+
+Arch Linux 属于 [滚动发行版][32],所以不用担心发布周期的问题。只要有更新,无论大小,都会发送给用户。
+
+![][33]
+
+这可以确保你一直在使用最新和最强的软件包。这有时是件好事,但当它破坏一些东西时,对一些用户来说可能会很不方便。
+
+### 10、硬件兼容性
+
+![][34]
+
+Ubuntu 是一款面向台式电脑的主流发行版,所以在发布之前,它需要测试与各种硬件的兼容性。
+
+我可以打包票,**Ubuntu 开箱即用的硬件兼容性非常优秀**。
+
+Arch Linux 不像 Ubuntu 那样进行过大量的测试,所以它不一定能在你的硬件上正常运行。
+
+不过,正因为 Arch Linux 有着最新最强的 Linux 内核包,所以有时它的表现要优于 Ubuntu。
+
+如果你不太清楚自己硬件的兼容性,你最好请教一下周围的人,确保你在安装 Arch Linux 时不会出现别人已经遇到过的问题。
+
+因此,选择 Ubuntu,你就可以高枕无忧了,除非你使用的是非常尖端的设备。
+
+### 11、稳定性
+
+如果你不想让你的系统崩溃,或是不想遇到错误,**Ubuntu 应该是更好的选择**.
+
+Arch Linux 的话,情况就不好说了。它可以工作得很好,也可以因为一次更新而倒下。
+
+Arch Linux 本身并不算稳定,你需要自行维护它,确保在自定义以及更新过程中不会出现任何问题。
+
+### 再三考虑: 你该选哪个?
+
+考虑到稳定性、兼容性、软件生态以及上手速度等因素,对于那些只想顺利完成工作而不想麻烦折腾的人来说,Ubuntu 是一个完美的选择。
+
+而对那些想要定制桌面体验而适应自己工作内容,以及寻求最新功能和最强性能的用户来说,Arch Linux 最合适不过了。
+
+如果你想探索未知,Arch Linux 可以给你带来非常奇妙的体验。但对于一些人来说,Arch Linux 使用起来可能比 Ubuntu 要困难许多。
+
+那么,考虑到以上所有因素,**你觉得自己会选哪个?** 期待你能在下方评论区留言。
+
+### 常见问题解答:如果你还没决定到底用哪一个
+
+可能有些人还会有一些问题,可以参考一下内容:
+
+**Arch 比 Ubuntu 更好吗?**
+
+对,也不对。就技术层面来讲,Arch Linux 确实更好,但是你也需要考虑它的稳定性、软件生态以及维护它所需要的学习时间。也就是说,在得出答案之前,你需要根据自己的喜好,再三考虑一番。
+
+**哪个更快?Ubuntu 还是 Arch?**
+
+Arch Linux 更快,因为它安装的东西很少。不过,根据你的配置不同,情况可能也会有所不同。
+
+注意,Ubuntu 与 Arch Linux 相比,速度并不会差很多。只不过因为它开箱即用的包会更多,所以有些人会认为 Ubuntu 比较臃肿。
+
+**我是不是应该从 Ubuntu 转到 Arch 呢?**
+
+如果你想优化体验,想要一直获取最新最优秀的软件包,同时又不会担心稳定性,Arch Linux 会比较适合你。
+
+如果你只是为了完成工作,需要的是一些基础功能,Ubuntu 就够用了。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/ubuntu-vs-arch/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][b]
+译者:[aREversez](https://github.com/aREversez)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://itsfoss.com/author/ankush/
+[b]: https://github.com/lujun9972
+[1]: https://itsfoss.com/why-arch-linux/
+[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/ubuntu-vs-arch.jpg?resize=800%2C450&ssl=1
+[3]: https://itsfoss.com/install-arch-linux/
+[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/09/try-ubuntu-install-ubuntu.jpeg?resize=800%2C530&ssl=1
+[5]: https://itsfoss.com/install-gui-ubuntu-server/
+[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/arch-linux-boot-menu-install.png?resize=635%2C481&ssl=1
+[7]: https://news.itsfoss.com/arch-new-guided-installer/
+[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/arch-install-terminal.png?resize=800%2C279&ssl=1
+[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/ubuntu-20-04-ux.jpg?resize=800%2C407&ssl=1
+[10]: https://linux.cn/article-14320-1.html
+[11]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/arch-linux-gnome.png?resize=732%2C413&ssl=1
+[12]: https://itsfoss.com/what-is-desktop-environment/
+[13]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/arch-linux-filesystem.png?resize=800%2C149&ssl=1
+[14]: https://itsfoss.com/best-linux-distributions/
+[15]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/ubuntu-software-center.png?resize=800%2C574&ssl=1
+[16]: https://itsfoss.com/what-is-flatpak/
+[17]: https://itsfoss.com/flatpak-guide/
+[18]: https://itsfoss.com/pacman-command/
+[19]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/arch-install-terminal-software.png?resize=763%2C431&ssl=1
+[20]: https://itsfoss.com/aur-arch-linux/
+[21]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/09/sky-aur-install.png?resize=800%2C560&ssl=1
+[22]: https://itsfoss.com/best-aur-helpers/
+[23]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/ubuntu-utilities.png?resize=800%2C520&ssl=1
+[24]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/arch-linux-neofetch.png?resize=800%2C533&ssl=1
+[25]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/itsfoss-community.jpg?resize=800%2C580&ssl=1
+[26]: https://itsfoss.community/
+[27]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/arch-wiki.png?resize=800%2C332&ssl=1
+[28]: https://wiki.archlinux.org/
+[29]: https://itsfoss.com/long-term-support-lts/
+[30]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/ubuntu-info.png?resize=800%2C595&ssl=1
+[31]: https://itsfoss.com/end-of-life-ubuntu/
+[32]: https://itsfoss.com/rolling-release/
+[33]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/arch-info.png?resize=800%2C573&ssl=1
+[34]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/hardware-compatibility-illustration.png?resize=800%2C450&ssl=1
diff --git a/published/202204/20220308 5 Things to Know When Someone Says Linux is Tough.md b/published/202204/20220308 5 Things to Know When Someone Says Linux is Tough.md
new file mode 100644
index 0000000000..68ad902522
--- /dev/null
+++ b/published/202204/20220308 5 Things to Know When Someone Says Linux is Tough.md
@@ -0,0 +1,175 @@
+[#]: subject: "5 Things to Know When Someone Says Linux is Tough"
+[#]: via: "https://news.itsfoss.com/things-to-know-linux-is-tough/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "aREversez"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14429-1.html"
+
+Linux 太难了?你需要知道这 5 点
+======
+
+> Linux 很难吗?为什么人们认为它很难?我们重点分析了一些常见的问题,并对其进行了说明,让你觉得它没那么难。
+
+
+
+如果只有 Windows、macOS、Linux 三种操作系统可供选择,那么大多数人应该都不怎么会考虑 Linux 系统。
+
+Linux 一般用在服务器上,但对普通用户台式机和笔记本电脑来说,情况并非如此。
+
+更糟糕的是,很多人只是从别人那儿听来的,都没有亲自试过,就觉得 Linux 太难了。
+
+但是 Linux 真有那么难吗?若果真如此,Linux 到底难在哪里呢?
+
+### Linux 难学吗?
+
+与 Windows 和 macOS 相比,Linux(这里指 Linux 发行版)确实有很多根本不同。
+
+但也多亏了这些差别,Linux 发行版具备了 [Windows][1] 与 [macOS][2] 所不具备的的许多优势。
+
+另外,Linux 基本可以满足你的日常需要。在很多情况下,Linux 操作系统的用户界面与 Windows 或者 macOS 的相差并不大,所以用起来也相当方便。
+
+**不信?** 请看这篇:《[与 Windows 相似的 Linux 发行版][3]》
+
+那么,Linux 有哪些方面会让用户望而却步呢?
+
+在这篇文章中,我将讨论 Linux 让新用户们普遍犯难的问题,希望可以借此让他们对 Linux 有所改观。
+
+### 1、软件安装与软件包管理
+
+![][4]
+
+在 Linux 上,安装软件(软件包)的方法有很多。
+
+你可以从软件中心安装,也可以在终端进行安装,或者从官方软件源下载软件包然后自行手动安装。
+
+再或者,你甚至可以通过 [编译源码来安装软件][5]。
+
+与 Windows 或者 macOS 不同,Linux 系统可不会使用 EXE 文件或 dmg 文件。
+
+对于不同的 Linux 发行版,软件包也会有所不同。例如,[DEB 文件可以安装在 Ubuntu 上][6]。而在 Fedora 系统下,需要 [安装 RPM 文件][7]。
+
+在这种情况下,[Flatpak][8] 和 Snap 应运而生,使得软件安装更为便捷。如果一款软件有对应的 Flatpak 软件包或者 Snap 软件包,你就可以把它安装在任意一种 Linux 发行版上。
+
+不过,一些 Linux 发行版可能需要用户自行 [安装 Flatpak][9] 或者 [Snap][10],因为这些发行版默认情况下可能并不支持它们。
+
+所以你要明白,由于 Linux 有很多不同的发行版本,软件安装方式以及软件包的类型也会存在许多区别。不过,只要了解某个发行版所支持的软件包格式以及安装方法,安装软件就简单多了。
+
+### 2、“终端恐惧症”
+
+![][16]
+
+在 Windows 或 macOS 系统下,你可能不会经常打开命令行或者终端。
+
+可能也就是在故障排除的时候,会需要使用命令行。但在 Linux 系统下,终端的使用频率却非常高。
+
+即便是在 [最好用的 Linux 发行版][11] 上,你可能也会经常打开终端,输入命令来执行一些任务,比如:
+
+ * 更新软件包列表
+ * 移除一个不是通过软件中心安装的软件
+ * 添加一个软件仓库来安装软件
+
+从技术层面讲,你不需要学习复杂的命令,但是知道一些如何卸载软件包或者安装 Flatpak 程序的命令,就会很方便。
+
+通常情况下,软件的官网上会列出安装命令或者说明。针对故障排除,有时也可以在社区论坛上找到需要输入的确切命令。
+
+所以说,你根本不需要去“记”什么,上网一搜,应有尽有。
+
+不过,一些用户还是觉得这样会很麻烦,所以他们干脆放弃了 Linux。
+
+最终,这些人只要碰到与 Linux 相关的东西,就避而远之,再也提不起兴趣。
+
+### 3、安装显卡驱动
+
+![][17]
+
+macOS 不支持第三方显卡,这就意味着它无法实现虚拟化(尤其是 ARM),也无法用来玩游戏。所以,我们这里不谈 macOS,来看看 Windows。
+
+Windows 和 Linux 一样,都支持游戏和虚拟化技术。如果你用它们不只是看看视频,那就需要安装显卡驱动来支持这些功能。
+
+在 Windows 上,你需要下载安装显卡的对应驱动。大多数情况下,首次安装的过程中并不会出现问题。
+
+不过,在 Linux 上,最新版本的显卡驱动不一定能够正常运行(尤其是英伟达显卡的驱动)。所以,这已经不是从官网下载安装驱动那么简单的问题了。
+
+如果你的 Linux 发行版带有驱动管理器功能,比如 Linux Mint 操作系统,那事情就简单了。
+
+如果没有的话,你可能需要下载一个包含适合自己系统的显卡驱动的 ISO 文件。
+
+总的来说,如果你使用了主流的 Linux 发行版,那么安装显卡驱动并不是一件难事;但是如果你使用的不是主流的发行版,你可能需要在安装之前好好查一查。
+
+### 4、软件支持
+
+Windows 和 macOS 上的应用并不一定都有对应的 Linux 版本。
+
+如果软件提供了跨平台支持,就有可能提供 Ubuntu、Fedora 以及 Arch 等 Linux 发行版的对应版本。否则,就只能去找这些软件的替代品了。
+
+所以,很多软件不支持 Linux 系统,就给用户带来了较差的使用体验。
+
+不过,我们列出了一份内容丰富的 [必备软件清单][12],相信能帮助你更好地使用 Linux 系统。
+
+遗憾的是,一些用户没有意识到这一点,仍然不愿意去尝试替代软件。
+
+### 5、调整外围设备与部件
+
+![][18]
+
+操作难度和软件支持并不是问题的全部,管理和调整电脑外围硬件设备也是一个重要方面。
+
+雷蛇、海盗船以及华硕等许多硬件公司没有为 Linux 提供相应的官方支持。
+
+因此,当用户意识到自己无法那么便捷地管理电脑的 RGB 灯条、风扇配置文件以及冷却设备时,他们自然也就不会考虑使用 Linux。
+
+不过你要知道,已经有许多工具可以帮助你应对这一问题,比如:
+
+ * [配置游戏鼠标][13]
+ * [调整雷蛇外部设备][14]
+ * [监控和控制冷却设备][15]
+
+这些工具可能不是官方提供的,但是它们适用于很多外部设备与组件。因此,如果你是因为外部设备和部件没有官方支持而放弃使用 Linux,那么你可以尝试这些工具。
+
+### 总结
+
+我觉得这些都是最为普遍的问题,这些问题导致了 Linux 劝退新手,摊上最难使用的操作系统的名号。
+
+要记住,尝试一款陌生的操作系统总是伴随着新的挑战,需要一定的时间来适应。
+
+Linux 作为一款桌面操作系统,相较于以前,操作难度降低不小。像 Ubuntu、 Pop!_OS、 Linux Mint、 Linux Lite 之类的 Linux 发行版能让用户更容易上手。
+
+即便 Linux 有了那么多的改善与提升,还是有很多用户不愿意使用它,所以我们想让你了解 Linux 并没有你想象的那么难用。
+
+如果你的朋友还在纠结上述原因而不肯尝试 Linux,我推荐你把这篇文章分享给他,帮助他进一步了解并使用 Linux。
+
+请在下方评论留言。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/things-to-know-linux-is-tough/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][b]
+译者:[aREversez](https://github.com/aREversez)
+校对:[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/lujun9972
+[1]: https://itsfoss.com/linux-better-than-windows/
+[2]: https://itsfoss.com/linux-vs-mac/
+[3]: https://itsfoss.com/windows-like-linux-distributions/
+[4]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/02/appimage-illustration.png?w=1000&ssl=1
+[5]: https://itsfoss.com/install-software-from-source-code/
+[6]: https://itsfoss.com/install-deb-files-ubuntu/
+[7]: https://itsfoss.com/install-rpm-files-fedora/
+[8]: https://itsfoss.com/what-is-flatpak/
+[9]: https://itsfoss.com/flatpak-guide/
+[10]: https://itsfoss.com/use-snap-packages-ubuntu-16-04/
+[11]: https://itsfoss.com/best-linux-distributions/
+[12]: https://itsfoss.com/essential-linux-applications/
+[13]: https://itsfoss.com/piper-configure-gaming-mouse-linux/
+[14]: https://itsfoss.com/set-up-razer-devices-linux/
+[15]: https://itsfoss.com/coolero/
+[16]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/terminal-illustration.png?w=1000&ssl=1
+[17]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/gpu-illustration.png?w=1000&ssl=1
+[18]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/components-illustration.png?w=1000&ssl=1
diff --git a/published/202204/20220317 Top 10 Most Beautiful Linux Distributions -Featured.md b/published/202204/20220317 Top 10 Most Beautiful Linux Distributions -Featured.md
new file mode 100644
index 0000000000..597d91afaa
--- /dev/null
+++ b/published/202204/20220317 Top 10 Most Beautiful Linux Distributions -Featured.md
@@ -0,0 +1,200 @@
+[#]: subject: "Top 10 Most Beautiful Linux Distributions [Featured]"
+[#]: via: "https://www.debugpoint.com/2022/03/beautiful-linux-distributions-2022/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "amagicboy"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14501-1.html"
+
+精选 10 个最美的 Linux 发行版
+======
+
+
+
+> 我们选出 2022 年 10 个最美的 Linux 发行版,在保证系统稳定的前提下,会给你良好的视觉体验。
+
+定制化拓展 Linux 发行版以满足需求是非常有意思的事。无论是 Ubuntu 还是 Fedora ,都有各种各样的工具去定制化 Linux 桌面。
+
+但是,也有很多不需要任何定制化而且令人眼前一亮的 Linux 发行版。它们的开发者使它们在安装后不需要再定制化就能有非常好的视觉效果。
+
+现在,我们编制了一份最美 Linux 发行版列表,你可以现在尝试来更新你电脑的视觉外观。
+
+### 2022 最美的 Linux 发行版
+
+#### 1、Zorin OS
+
+最先介绍的 Linux 发行版是 Zorin OS。Zorin OS 使用基于 GNOME 的 Zorin 桌面 ,非常适合追求美观的桌面和生产力的新用户。
+
+Zorin OS 最有特点的功能之一是,它可以随意转化,让其看起来像其他操作系统桌面,这意味着只需要设置布局选项,就可以改变任务栏、应用菜单、停靠栏,给用户最大的的灵活性,安装即用。
+
+> **[阅读有关 Zorin OS 更多信息][2]**
+
+![Zorin OS 16 桌面][3]
+
+#### 2、elementary OS
+
+elementary OS 是基于 Ubuntu 长期稳定支持(LTS)发行版中最美观的一个。它使用吸引人的 Pantheon 桌面环境,其外观和使用体验受到了 macOS 的启发。
+
+elementary OS 非常适合从 macOS 进入 Linux 世界的新用户,因为他们会发现许多熟悉的东西,比如手势和窗口样式。
+
+但是,elementary OS 很多地方不能通过设置菜单进行定制,只能依靠外部脚本命令来进一步定制。不过系统默认桌面就已经十分美观了,能满足大部分人的需求。
+
+elementary OS 最具特色的是它精心设计的应用商店。应用商店提供各种类别的应用,特别是那些专为 elementary OS 定制而且外观精美、功能强大的应用。
+
+> **[阅读有关 elementaryOS 更多信息][4]**
+
+![elementary OS 6 ODIN 桌面][5]
+
+#### 3、深度操作系统
+
+第三个介绍的 Linux 发行版是深度操作系统。它基于 Debian ,由中国深度科技公司开发。它使用自研的基于 Qt 的深度桌面环境(DDE)。深度桌面的部件、配色方案、窗口样式、壁纸看起来都非常不错,给用户安装即享的视觉体验。
+
+深度操作系统精心打磨的视觉组件和 macOS 非常相似。并且由于是 Debian 的稳定分支,如果你想要一个外观精美且稳定可靠的 Linux 发行版,深度操作系统是最适合的选择。
+
+为什么深度操作系统体验很好?
+
+ * 基于 Qt 的酷炫桌面
+ * 原生部件及支持暗色主题
+ * 定制化停靠栏的多种选择项
+ * 透明度、窗口效果、光标主题、图标主题
+ * 强调色
+
+> **[阅读有关深度操作系统更多信息][6]**
+
+![Deepin 20 桌面][7]
+
+#### 4、CutefishOS
+
+第四个介绍的 Linux 发行版是 [CutefishOS][8] 。这个基于 Debian 和 Ubuntu 的 Linux 发行版具有一个原生开发的 Cutefish 桌面。 CutefishOS 还在开发中,但由于它的外观,它已经在用户群体中掀起波澜。(LCTT 译注:似乎也是国内团队开发的)
+
+CutefishOS 底层基于 Qt 和 KDE 框架构建。这个带有 Cutefish 桌面的高效 Linux 发行版在顶部提供了全局菜单功能。
+
+由于其目前正在开发中,定制选项仍在进行中。但在最新的发行版中, CutefishOS 已经支持深色模式、强调色、动画效果、停靠位置(左、右、下)等选项。
+
+如果你想体验完全不同的桌面风格,可以尝试 CutefishOS 。 你也可以查看下面提供的关于此桌面的完整评论和教程。
+
+> **[Cutefish OS 评测][9]**
+
+![Cutefish OS][10]
+
+#### 5、Manjaro KDE Plasma 版
+
+Manjaro Linux KDE 版是现在外观最好看的 Linux 发行版之一。 Manjaro KDE 基于 Arch Linux ,采用了 KDE Plasma,并额外添加了一些调整工具和组件。 Manjaro 的绿色调色板给你以全新的外观和体验。你可以通过内置的 KDE 工具和设置进一步定制,并从 KDE 商店获得图标和主题。
+
+Manjaro KDE 是性能和外观与 Arch Linux 之强大的完美结合。对于 Arch Linux 新用户来说, Manjaro 是一个理想的起点。
+
+> **[阅读有关 Manjaro KDE 更多信息][11]**
+
+![Manjaro KDE Plasma][12]
+
+#### 6、Garuda Linux
+
+出名的 Garuda Linux 是榜单上的第六位。 Garuda Linux 基于 Arch Linux ,带有美观的桌面,其特点是为所有主流桌面环境定制了图标、主题。 Garuda Linux 使用针对硬件优化了性能的 Zen 内核,
+
+Garuda Linux 的外观和体验令人印象深刻。其 macOS 风格看起来非常的方便。 Neon 图标主题、可爱的调色板、模糊和透明度与全局菜单的结合是其自身的完美选择。
+
+Garuda 最主要的优点是支持所有桌面环境 — KDE Plasma、 GNOME、 Xfce、 LXQT、 MATE 等等。
+
+> **[阅读有关 Garuda Linux 更多信息][14]**
+
+![Garuda Linux][15]
+
+#### 7、Linux Mint Cinnamon 版
+
+我们推荐 Linux Mint 是因为它非常的简洁、优美和稳定。它是目前最被广泛使用和出名的 Linux 发行版之一,或许其使用人数仅在 Ubuntu 之下。但和本列表中其他 Linux 发行版比较起来,它看起来不是很精美。
+
+不过,如果你喜欢看起来很棒的经典用户桌面,默认的 Cinnamon 桌面看起来干净且完美。
+
+Linux Mint Cinnamon 版对所有用户都非常友好,特别是第一次使用 Linux 或者从 Windows 转到 Linux 的用户。其默认的外观和体验和 Mint 的绿色调色板都能使人耳目一新。
+
+如果你无法确定用哪个既稳定又养眼的 Linux 发行版,那就毫不犹豫的选择 Linux Mint Cinnamon 版。
+
+> **[阅读有关 Linux Mint 更多信息][16]**
+
+![Linux Mint 20 — Cinnamon 版本桌面][17]
+
+#### 8、Nitrux OS
+
+[Nitrux Linux][18] 基于 Debian ,其特点是一个名为 NX 桌面的 KDE Plasma 修改版。这个独特的 Linux 发行版有一套建立在 Maui 套件和 Qt 之上的 Nitrux 应用。 Nitrux 不使用 systemd,而使用 OpenRC 作为初始化系统。凭借其独特的功能和外观,Nitrux 是目前最好的 Linux 发行版之一。
+
+Nitrux OS 的默认外观设计得非常完美,它采用经过改进的 KDE Plasma 桌面,带有 Kvantum 主题引擎、图标主题、调色板、光标主题等。 Nitrux OS 背后的团队还开发了名为 Maui Shell 的独立桌面,这是一个美丽的融合型桌面,可以根据屏幕大小进行自我调整。
+
+如果你需要一款稳定方便的 KDE Plasma 桌面,那么 Nitrux OS 非常适合你。你不会失望的。
+
+> **[阅读有关 Nitrux OS 更多信息][18]**
+
+![Nitrux 2.0 桌面][19]
+
+#### 9、优麒麟
+
+优麒麟是一个官方的 Ubuntu 版本,是专门为使用简体中文的中国人设计的。但它同时也支持其他语言。
+
+这个修改版的 Ubuntu 使用优麒麟用户界面(也称为 UKUI)。 UKUI 桌面使用 Qt 开发,支持 MATE 桌面组件。
+
+优麒麟看起来精致,就外观和设计而言,就像是 GNOME 和 KDE Plasma 的结合。
+
+优麒麟具有设计精美的图标集、底部任务栏,漂亮的应用程序视图、应用程序切换器,圆角窗口等精心制作的功能。
+
+> **[阅读有关优麒麟更多信息][20]**
+
+![优麒麟桌面][21]
+
+#### 10、Pop!_OS
+
+Pop!_OS 是由生产计算机硬件的 System76 公司开发的。 这个基于 Ubuntu 的 Linux 发行版已经预装在所有 System76 硬件上。不过,你也可以从其官方仓库下载然后安装到你的机器上。
+
+Pop!_OS 的特点是在默认的 GNOME 桌面上带有额外的调整和配置。此桌面具有 GNOME 40 时代之前的特点,预配置了多个扩展和调整。比如你可以获得一个可以配置为在桌面中自由调整的底部停靠栏、一个用于启动应用程序的启动器、圆角窗口等诸如此类的功能。此桌面还有自动平铺和优化的键盘导航功能,可提高你的工作效率。
+
+其外观和感觉都很干净,设计精美,有调色板,内置了深色模式、圆角窗口,以及图标主题。
+
+> **[阅读有关 Pop!_OS 更多信息][22]**
+
+![Pop!_OS 21.10 桌面][23]
+
+### 结语
+
+希望这份 2022 最美 Linux 发行版榜单能帮你选择你想要的桌面或者系统。 因为这些 Linux 发行版已经配置好,看起来很漂亮,而且它们性能很强大。
+
+选择并开始你的 Linux 之旅吧。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/03/beautiful-linux-distributions-2022/
+
+作者:[Arindam][a]
+选题:[lujun9972][b]
+译者:[amagicboy](https://github.com/amagicboy)
+校对:[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/lujun9972
+[1]: https://www.debugpoint.com/category/distributions
+[2]: https://zorin.com
+[3]: https://www.debugpoint.com/wp-content/uploads/2021/08/Zorin-OS-16-Desktop-1024x576.jpg
+[4]: https://elementary.io/
+[5]: https://www.debugpoint.com/wp-content/uploads/2021/08/elementary-OS-6-ODIN-Desktop-1024x576.jpg
+[6]: https://www.deepin.org/zh/
+[7]: https://www.debugpoint.com/wp-content/uploads/2020/09/Deepin-20-Desktop-1024x568.jpg
+[8]: https://cn.cutefishos.com/
+[9]: https://www.debugpoint.com/2021/11/cutefish-os-review-2021/
+[10]: https://www.debugpoint.com/wp-content/uploads/2021/11/Cutefish-OS-1024x581.jpg
+[11]: https://manjaro.org/downloads/official/kde/
+[12]: https://www.debugpoint.com/wp-content/uploads/2022/03/Manjaro-KDE-Plasma-1024x576.jpg
+[13]: https://www.debugpoint.com/2020/10/10-things-to-do-fedora-33-after-install/
+[14]: https://garudalinux.org/
+[15]: https://www.debugpoint.com/wp-content/uploads/2022/03/Garuda-Linux-1024x577.jpg
+[16]: https://linuxmint.com/
+[17]: https://www.debugpoint.com/wp-content/uploads/2020/07/Linux-Mint-20-Cinnamon-Edition-Desktop-1024x763.png
+[18]: https://nxos.org/
+[19]: https://www.debugpoint.com/wp-content/uploads/2022/03/Nitrux-2.0-Desktop-1024x581.jpg
+[20]: https://www.ubuntukylin.com
+[21]: https://www.debugpoint.com/wp-content/uploads/2022/03/Ubuntu-Kylin-Desktop-1024x574.jpg
+[22]: https://pop.system76.com/
+[23]: https://www.debugpoint.com/wp-content/uploads/2021/12/Pop-OS-21.10-Desktop-1024x579.jpg
+[24]: https://t.me/debugpoint
+[25]: https://twitter.com/DebugPoint
+[26]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[27]: https://facebook.com/DebugPoint
diff --git a/published/202204/20220317 XeroLinux- A Beautiful Arch-based Linux With Excellent Customizability by Default.md b/published/202204/20220317 XeroLinux- A Beautiful Arch-based Linux With Excellent Customizability by Default.md
new file mode 100644
index 0000000000..22623f4af1
--- /dev/null
+++ b/published/202204/20220317 XeroLinux- A Beautiful Arch-based Linux With Excellent Customizability by Default.md
@@ -0,0 +1,169 @@
+[#]: subject: "XeroLinux: A Beautiful Arch-based Linux With Excellent Customizability by Default"
+[#]: via: "https://itsfoss.com/xerolinux/"
+[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14422-1.html"
+
+XeroLinux:一个漂亮的基于 Arch 的 Linux,天生具备出色的可定制性
+======
+
+
+
+Arch Linux 是那些希望对他们的操作系统有更多控制权的 Linux 用户的一个流行选择。
+
+虽然许多有经验的用户对 Arch Linux 进行了定制,以提供一些最好的用户体验(就其用户界面而言),但对于新的 Linux 用户来说,这可能是一个挑战。
+
+如果你不了解 Arch Linux 的具体情况,你可能想读一下这篇 [Ubuntu 与 Arch Linux 比较][1] 的文章。
+
+然而,还有一些 [基于 Arch 的发行版][2] 旨在提供一个更容易上手的体验,而不会剥夺你的控制权。
+
+**XeroLinux** 是我们最近遇到的其中一个。
+
+### XeroLinux:又一个基于 Arch 的发行版
+
+![][3]
+
+[XeroLinux][4] 是 Steve(又名 [TechXero][5])的个人项目,旨在提供一个“华丽”的 Arch Linux 版本。
+
+请注意,这是一个充满激情的项目,而不是一个由庞大的贡献者团队支持的主流发行版(还没有)。在你替换你的主系统前,你应该先在虚拟机或测试机上试用它。
+
+在这里,我们会为其愉快的开箱即用体验和一些令人更兴奋的地方,简单介绍一下 XeroLinux 的特色。
+
+### 安装的简易性
+
+XeroLinux 使用 [Calamares 安装程序][6] 来让你轻松地安装 Linux 发行版,而不需要依赖终端或 [引导式 Arch 安装程序][7]。
+
+虽然安装体验与流行的 Linux 发行版相似,但你可以在安装时选择图形驱动程序、特定的 Linux 内核和工具。
+
+![][8]
+
+你可以安装 System76 的电源管理驱动,并启用对 Nvidia Optimus Manager 的支持,为你的笔记本电脑切换显卡。有趣!
+
+你还可以在安装时选择密码管理器、主题、浏览器和各种不同的软件包,这应该会让使用变得很方便。
+
+考虑到你可以以选择的形式设置所有基本选项,你在安装后没有太多可担心的。
+
+![][9]
+
+当你选择了需要的东西,只需重新启动并开始使用桌面。
+
+### 用户体验
+
+XeroLinux 的开箱即用的体验令人印象深刻。桌面的整体外观和感觉包括许多新的功能补充,如显示 CPU 使用情况、网络速度等的小工具。
+
+它还支持全局菜单,使应用程序窗口看起来更干净,为 macOS 用户切换到 Linux 提供了舒适的体验。
+
+![][10]
+
+通过所有预装的应用,你可以轻松地安装新的软件,卸载现有的工具并进行各种操作。
+
+它同时具有 pamac 和 [Synaptic 包管理器][11](可在安装时选择)。因此,你可以获得大量的软件工具,你可以通过它们中的任何一个轻松安装。
+
+其他产品包括两个文件管理器(Dolphin 和 Thunar)、Yakuake 终端、Spectacle 屏幕截图、KWrite、Konsole 等主要 KDE 版本中的其他 KDE 工具。
+
+如果你不喜欢 Yakuake 终端仿真器,请参考我们的 [终端仿真器列表][12],找到它的替代品。
+
+![][13]
+
+另外不要忘了,你会得到一个定制的锁屏(登录屏),看起来很不错!
+
+![][14]
+
+当你启动系统时,你还会注意到一个 **XeroLinux 配置工具**。它可以让你快速执行一些基本任务,比如检查 NVIDIA 显卡、安装 KVM/QEMU、禁用自动启动、安装 KDE 窗口平铺,以及其他一些配置,如下图所示。
+
+![][15]
+
+### 可定制性
+
+XeroLinux 在其主版本中采用了 KDE 桌面环境。因此,你自然会有无尽的定制选项。
+
+最好是参考我们的 [KDE 定制指南][16]来获得帮助。
+
+除此之外,你还可以看到 [Latte Dock][17],你可以根据自己的喜好进行定制和调整。
+
+![][18]
+
+有几个定制停靠区的选项,确保你仔细调整设置,以免看起来很奇怪。
+
+![][19]
+
+此外,你会得到 [Kvantum Manager][20],可以帮助你安装外部主题。
+
+如果这还不够,开发者还提供了一些 RICE/主题和 Grub 主题,你可以在 [官方网站][4] 或 [GitHub 仓库][21] 上找到所列的主题。
+
+(LCTT 译注:RICE 不是指大米。它是 “受赛车启发的美容强化Race Inspired Cosmetic Enhancements” 的缩写。原意是指:给汽车增加的部件,使它们看起来很快,但其实内部调校,实际上一样慢。在 Linux 上指各种对桌面的粉饰,使其看起来花哨。)
+
+换句话说,开发者提供的一些脚本可以帮助你进行改造,但请注意,最好是自己定制,这样就不会出现其他问题。
+
+### 桌面环境选项
+
+主版本使用的是 KDE,但如果你想尝试一下,你也有另一个 XFCE 变体。(LCTT 译注:由于项目作者实在无力维护两个 DE,因此放弃了 XFCE 变体。)
+
+XFCE 版是为旧系统量身定做的(或者如果你需要节省系统资源)。
+
+它最初还提供了一个 GNOME 版本,但由于每次更新都会出现扩展失效的问题,所以它放弃了对它的支持。如果你对桌面环境感到好奇,你可能想通过我们的 [KDE Plasma 对比 GNOME][22] 文章来了解它们的区别。
+
+### 性能
+
+考虑到它具有最新可用的 [Linux 内核 5.16][23],它应该可以在各种硬件配置下正常工作。
+
+但是,我还没有在裸机上测试过它。根据我虚拟机的使用经验,它运行良好,没有任何特殊问题。
+
+以下是其 KDE 版本的资源使用情况:
+
+![][24]
+
+使用它的 XFCE 变体时,你可能会注意到较低的资源使用率。
+
+### 你应该试试 XeroLinux 吗?
+
+我喜欢 XeroLinux 的外观和感觉。
+
+不仅限于此,在安装时你还可以选择多种软件包和做出各种最好的选择。
+
+> [尝试 XeroLinux][4]
+
+如果你在安装时就知道自己需要什么,那么它应该是一个有吸引力的基于 Arch 的 Linux 发行版。
+
+你试过 XeroLinux 了吗? 在下面的评论中让我知道你的想法。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/xerolinux/
+
+作者:[Ankush Das][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://itsfoss.com/author/ankush/
+[b]: https://github.com/lujun9972
+[1]: https://itsfoss.com/ubuntu-vs-arch/
+[2]: https://itsfoss.com/arch-based-linux-distros/
+[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/xerolinux-home.jpg?resize=800%2C450&ssl=1
+[4]: https://xerolinux.xyz/
+[5]: https://twitter.com/TechXero
+[6]: https://calamares.io/
+[7]: https://itsfoss.com/install-arch-linux-virtualbox/
+[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/xerolinux-install-1.png?resize=800%2C555&ssl=1
+[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/xerolinux-install.png?resize=800%2C555&ssl=1
+[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/xerolinux-ui.jpg?resize=800%2C398&ssl=1
+[11]: https://itsfoss.com/synaptic-package-manager/
+[12]: https://itsfoss.com/linux-terminal-emulators/
+[13]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/xerolinux-utilities.jpg?resize=800%2C652&ssl=1
+[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/xerolinux-lockscreen.jpg?resize=800%2C546&ssl=1
+[15]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/xerolinux-configuration-tool.jpg?resize=800%2C480&ssl=1
+[16]: https://itsfoss.com/kde-customization/
+[17]: https://github.com/KDE/latte-dock
+[18]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/xerolinux-latte-dock.png?resize=800%2C134&ssl=1
+[19]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/xerolinux-latte-dock-options.jpg?resize=800%2C570&ssl=1
+[20]: https://store.kde.org/p/1005410/
+[21]: https://github.com/xerolinux/xero-layan-git
+[22]: https://itsfoss.com/kde-vs-gnome/
+[23]: https://news.itsfoss.com/linux-kernel-5-16/
+[24]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/xerolinux-resource.png?resize=800%2C468&ssl=1
\ No newline at end of file
diff --git a/published/202204/20220325 Budibase- An Open-Source Low-Code Platform to Build Modern Business Apps.md b/published/202204/20220325 Budibase- An Open-Source Low-Code Platform to Build Modern Business Apps.md
new file mode 100644
index 0000000000..0344340f04
--- /dev/null
+++ b/published/202204/20220325 Budibase- An Open-Source Low-Code Platform to Build Modern Business Apps.md
@@ -0,0 +1,141 @@
+[#]: subject: "Budibase: An Open-Source Low-Code Platform to Build Modern Business Apps"
+[#]: via: "https://itsfoss.com/budibase/"
+[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14433-1.html"
+
+Budibase:构建现代商业应用的开源低代码平台
+======
+
+
+
+你可能会遇到各种各样的工具来帮助你快速构建企业的应用。
+
+然而,大多数值得信赖的选择往往是专有产品。因此,你将被锁定在他们的平台上,而对于你利用什么来构建的应用,没有足够的了解。
+
+开源的解决方案应该是一个完美的替代品,让你安心,并对你的关键业务应用充满信心。
+
+Budibase 就是这样一个令人印象深刻的解决方案。
+
+### Budibase:开源的低代码平台让事情变得简单
+
+Budibase 是一个越来越受欢迎的开源低代码平台,可以帮助你为企业建立应用。
+
+你可以从头开始创建应用,或者使用现有的模板来快速建立表单、机构-客户门户、汽车租赁管理面板、会计师门户、职位申请追踪器等等。
+
+![][1]
+
+虽然它确实使事情变得简单,而不需要你有必要的编程技巧,但它也提供了一些控制,让你在一定程度上定制应用。
+
+它支持一系列的数据源:MySQL、Rest API、OracleDB、MongoDB、Google 表格等。
+
+你可以选择自我托管并在你的服务器上部署应用,或者利用 Budibase 的云托管服务。
+
+### Budibase 的特点
+
+[Budibase][2] 提供了大部分的基本功能。让我在这里强调一下重要的功能:
+
+ * 支持外部数据源,包括 MongoDB、MySQL 等。
+ * 支持 Rest API 拉取数据。
+ * 能够使用应用的内置数据库或上传 CSV 来导入数据。
+ * 各种数据类型和功能,包括附件、关系、公式等。
+ * API 整合平台,整合不同的 API,帮助你轻松建立内部应用、表单等。
+ * 能够使用内部表格生成自动页面。
+ * 构建单页应用。
+ * 自动生成的 CRUD(创建、读取、更新和删除)页面
+ * 私人和公共应用。
+ * 只需点击几下就可以定制你的应用的主题。
+ * 容易为你的应用实现深色模式主题。
+ * 一个功能丰富的表单生成器,满足广泛的要求。
+ * 支持 Webhook。
+ * 与诸如 Zapier 等的第三方集成。
+ * 基于特定触发器的灵活自动化选项。
+ * 能够将 JavaScript 添加到你的自动程序中。
+ * 为拥有自己基础设施的用户提供自我托管选项。
+ * 免费的单点登录认证/管理。
+ * 用户管理选项,将团队分配到不同的应用。
+ * 支持 SMTP 电子邮件。
+ * 电子邮件模板,以配合你的品牌和风格。
+ * 支持 OAuth 登录。目前仅限于谷歌。
+ * 图表、表格和卡片来优雅地展示数据。
+
+总的来说,当你登录到该服务并查看其产品时,还有很多东西可以探索。
+
+在我短暂的使用中,我发现用户界面很舒适,很容易使用。为了给你更多的认识,我在下面分享了更多关于使用 Budibase 的信息。
+
+### 使用 Budibase 快速建立一个应用
+
+在使用此类服务时,用户体验是首要因素。
+
+Budibase 在这方面没有让你失望。当你开始使用 Budibase 时,你会得到一个很好的用户体验。
+
+就我使用过的开源平台而言,用户体验并不总是强项。但是,在这种情况下,是用户体验使这个工具易于使用。
+
+你可以迅速开始建立一个应用程序,添加你的源,并在几次点击中开始设计。
+
+![][3]
+
+你可以选择内部数据库或选择外部源。该平台让你根据需要编辑/创建/导入数据。
+
+![][4]
+
+而且,只需点击几下(取决于你应用的规模),你就可以开始设计屏幕和调整布局。
+
+![][5]
+
+它完全是一个可视化编辑器,所以你会得到你所看到的东西。在布局中添加容器、分区、表单、卡片、图表和许多其他元素。
+
+![][6]
+
+调整主题是一件轻而易举的事。因此,你可以根据你的要求,匹配你的品牌风格/样式,或者根据你的要求进行创意。
+
+![][7]
+
+你可以轻松地编辑数据,创建新的数据字段,也可以为数据启用搜索索引。
+
+![][8]
+
+不要忘了,你还可以获得所有的自动化选项,与其他服务集成,使用 Webhook、cron 任务或应用动作来响应触发器。这些是为你的用户建立一个最有效的应用的一些最重要的东西。
+
+下面是我使用 Budibase 建立一个样本应用跟踪系统时的情况:
+
+![][9]
+
+当然,你可以选择在你的服务器上发布应用,或者使用 Budibase 的云服务。
+
+### 总结
+
+Budibase 是一个非常有用的低代码平台,应该可以帮助个人和企业快速建立各种应用。你应该在其官方网站和 [GitHub 页面][10]上探索更多关于它的信息。
+
+> [Budibase][2]
+
+它消除了聘请专家为各种用例构建应用的需要。而且,作为一个你可以自行托管的开源平台,它可以让你扩展并提供对构建应用的完全控制,而无需支付额外费用。
+
+如果需要,你还可以选择其企业产品,提供高级支持和专门定制的服务。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/budibase/
+
+作者:[Ankush Das][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://itsfoss.com/author/ankush/
+[b]: https://github.com/lujun9972
+[1]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/budibase-home.png?resize=800%2C467&ssl=1
+[2]: https://budibase.com/
+[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/budibase-data-sources.png?resize=800%2C597&ssl=1
+[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/budibase-edit-fields.png?resize=800%2C693&ssl=1
+[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/budibase-design.png?resize=800%2C477&ssl=1
+[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/budibase-layout.png?resize=800%2C515&ssl=1
+[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/budibase-theme-tweak.png?resize=800%2C696&ssl=1
+[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/budibas-application-create.png?resize=800%2C274&ssl=1
+[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/budibase-sample-app.png?resize=800%2C364&ssl=1
+[10]: https://github.com/Budibase/budibase
diff --git a/published/202204/20220325 Linux Mint Debian Edition 5 - Perfection with Stability -Review.md b/published/202204/20220325 Linux Mint Debian Edition 5 - Perfection with Stability -Review.md
new file mode 100644
index 0000000000..fd55370a6a
--- /dev/null
+++ b/published/202204/20220325 Linux Mint Debian Edition 5 - Perfection with Stability -Review.md
@@ -0,0 +1,152 @@
+[#]: subject: "Linux Mint Debian Edition 5 – Perfection with Stability [Review]"
+[#]: via: "https://www.debugpoint.com/2022/03/linux-mint-debian-edition-5-review/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "robsean"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14467-1.html"
+
+Linux Mint Debian Edition(LMDE) 5 – 完美稳定
+======
+
+
+
+> 我们对最近发布的 Linux Mint Debian Edition 5(LMDE 5)的性能、稳定性和用户友好性等方面进行了评测。这里是我们的发现。
+
+在 Linux Mint Debian Edition LMDE 4(Debbie)发布两年多后,Linux Mint 团队宣告了 Linux Mint Debian Edition LMDE 5(LMDE 5)的发布。LMDE 5 基于 [Debian 11 Bullseye][1] ,它带来了长期支持的 Linux 内核 5.10 和 Debian 软件包源。除内核版本以外,大多数的应用程序和软件包与 Linux Mint 20.3 几乎完全相同。
+
+让我们深入了解一下。
+
+### LMDE 5 评测
+
+我们测试 Linux Mint Debian Edition 5(LMDE 5)是在现有的较旧的硬件下:
+
+ * 英特尔酷睿 i3 第一代
+ * 4GB DDR3 内存
+ * 博通芯片
+ * 英伟达® GeForce® 315M
+ * 固态硬盘
+
+#### ISO 下载、现场介质和安装
+
+从新设计的 Linux Mint 网站找到并下载 ISO 文件是很容易的。现场介质Live media启动很顺利,通过桌面上的安装图标启动了安装程序。
+
+LMDE 使用的一款修改版的 Debian 安装器。它不是 Calamares 。普通的 Debian 安装器是很难操作的,[在我看来] 有点 [让新用户感到困惑][2] 。但是,Linux Mint 团队使其非常容易安装,只需几个步骤,并从 Debian 安装器中移除了所有使人困惑的选项。
+
+你只需要提供安装位置、键盘布局、名字和密码,就可以开始安装了。安装器的分区系统使用 GParted ,它很方便好用。
+
+因此,在我的测试的虚拟机和物理机硬件中,安装过程都很顺利。
+
+在物理机系统中安装花费了 4 到 5 分钟,而虚拟机系统中的安装时间约为 3 分钟。
+
+#### 第一印象
+
+![Linux Mint Debian Edition 5 \(LMDE5\) Desktop][3]
+
+如果你熟悉 Linux Mint 早期的 Cinnamon 桌面,那么你不会在这个 Debian 版本中找到什么不同。它们是一样的。如果你是第一次使用 Linux Mint 的 Cinnamon 桌面环境,那么在你完成你的安装后,你会看到一个漂亮而干净的桌面。
+
+桌面图标、完美调整过的颜色和主题、底部任务栏、系统托盘,这一切都配合有序,让你能够立刻上手。
+
+不管你使用低端还是高端的硬件,LMDE 都能快速响应,应用程序能够很好的工作。应用程序的切换和整体桌面的响应都很可靠。
+
+你得到的是经过良好测试的应用程序和软件包,而基于 Debian 的稳定性,很少会出现故障。这意味着不必担心软件包的冲突、更新缺失,以及 Linux 系统的常见问题。
+
+#### 预装的应用程序
+
+Linux Mint(不仅仅是 Debian 版本)的优势之一是它的预装的应用程序。许多 Linux 发行版由于 ISO 大小等原因,在 ISO 安装程序中不包括必要的应用程序。
+
+但是,Linux Mint 团队全心全意为它们的用户考虑,打包了所有你需要的必要应用程序。这照顾到了大多数用户的需求。它有助于减少最终用户在安装 LMDE 5 后搜索和安装兼容应用程序方面的负担。
+
+例如,在 LMDE 5 中,已默认安装下面的必备软件,随时待用:
+
+ * 绘图应用
+ * 多媒体:Celluloid 媒体播放器、Hypnotix、Rythmbox
+ * Torrent 客户端:Transmission 3.0
+ * 完整的办公套件:LibreOffice 7.0
+ * Email 客户端:Thunderbird 91.0
+ * 网页浏览器:Firefox 97.0
+
+这不是所有。对于下面的所有的具体使用情况,你都会得到一个专门的原生应用程序。用户不需要为这些寻找一个单独的应用程序:
+
+ * 屏幕截图和屏幕保护程序
+ * 减少眼睛疲劳的工具
+ * USB 格式化工具和镜像写入器
+ * 便签
+ * Synaptic 软件包管理器
+ * 系统备份和恢复
+ * 防火墙工具
+
+#### LMDE5 的性能表现怎么样?
+
+看到一个发行版按照预期的表现,总是令人感兴趣的。而 LMDE 5 的性能表现远超预期。
+
+在空闲状态下,它消耗 750 MB 的内存和 2% 的 CPU 。
+
+![Performance During the light workload][5]
+
+接下来,我使用下面的任务让它完成繁重的工作负载:
+
+ * Firefox(打开三个标签页,其中一个播放 YouTube 视频)
+ * LibreOffice Calc(打开一个表格)
+ * 绘图应用程序(打开一个实例)
+ * 设置
+ * 一个终端窗口
+ * 文件管理器
+
+在上述的工作负载中,它消耗了大约 1.5 GB 的内存和 14% 的 CPU 。显然,大部分的资源都被 Firefox 消耗了。
+
+![Performance During heavy workload][6]
+
+在我看来,这是一个完美的指标,而且对旧硬件进行了很好的优化分配。上述指标是在物理机系统上测量的。
+
+#### 连接性
+
+连接性是任何操作系统的不可或缺的一部分。LMDE 5 能够连接到 Wi-Fi(使用一款老旧的博通芯片)和连接到蓝牙音箱,而不需任意的额外调整。
+
+在我的测试期间,音量控制与蓝牙守护进程配合得很好。
+
+此外,我们也测试了 USB 接口设备的热插拔,它们可以自动侦测和挂载,而没有遇到任何问题。
+
+所以,没有什么意外,这也是意料之中的。
+
+### 有什么错误吗?
+
+我在测试期间没有遇到任何错误。一切都运行良好。
+
+但是当我关闭我的物理测试系统的笔记本盖板时,我发现一个错误。在它进入待机状态后,不能将其唤醒。我无法看到登录屏幕,屏幕是黑色的,没有任何光标。我必须因重启才能进入系统。
+
+这可能是我测试设备上的特定硬件设备的问题。我相信它在新的硬件系统上不会有任何的问题。
+
+### 总结
+
+总结一下 LMDE 5 的评测,它显然是最稳定、最优化的 Linux 发行版。如果你计划在未来两年或更长的时间段内使用一款用于日常用途的系统,你可以信赖这个版本。因此,如果你需要一款非基于 Ubuntu 的稳定的、快速的、低维护率的长期日用系统,并运行在你的旧机器或新机器上,这会是一个完美的选择。请试试。
+
+你可以 [在官方网站上][7] 下载 LMDE 5 。
+
+感谢阅读。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/03/linux-mint-debian-edition-5-review/
+
+作者:[Arindam][a]
+选题:[lujun9972][b]
+译者:[robsean](https://github.com/robsean)
+校对:[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/lujun9972
+[1]: https://www.debugpoint.com/2021/05/debian-11-features/
+[2]: https://www.debugpoint.com/2021/01/install-debian-buster/
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/03/Linux-Mint-Debian-Edition-5-LMDE5-Desktop-1024x580.jpg
+[4]: https://www.debugpoint.com/2021/12/zorin-os-16-lite-review-xfce/
+[5]: https://www.debugpoint.com/wp-content/uploads/2022/03/Performance-During-light-workload-1024x606.jpg
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/03/Performance-During-heavy-workload-1024x601.jpg
+[7]: https://linuxmint.com/edition.php?id=297
+[8]: https://t.me/debugpoint
+[9]: https://twitter.com/DebugPoint
+[10]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[11]: https://facebook.com/DebugPoint
diff --git a/published/202204/20220329 5 Reasons Why-Zorin OS-is an Ideal Choice for Beginners.md b/published/202204/20220329 5 Reasons Why-Zorin OS-is an Ideal Choice for Beginners.md
new file mode 100644
index 0000000000..5ee210b85a
--- /dev/null
+++ b/published/202204/20220329 5 Reasons Why-Zorin OS-is an Ideal Choice for Beginners.md
@@ -0,0 +1,128 @@
+[#]: subject: "5 Reasons Why Zorin OS is an Ideal Choice for Beginners"
+[#]: via: "https://news.itsfoss.com/why-zorin-os-beginners/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14418-1.html"
+
+为什么 Zorin OS 是初学者的理想选择
+======
+
+> 对于初学者来说,Zorin OS 是一个绝佳的选择。本文将说明我们认为 Zorin OS 是理想选择的 5 个理由。
+
+
+
+Zorin OS 无疑是目前最 [漂亮的 Linux 发行版][1] 之一。
+
+然而,它并不局限于有一个漂亮的外观。与其他一些竞争者相比,它也在总体上提供了良好的用户体验。
+
+所以,这就是为什么我们也推荐它作为 [新用户的首选之一][2]。本文中,我将重点介绍一些原因,正是它们使 Zorin OS 成为初学者的理想选择。
+
+### 1. 类似 Windows 的用户界面
+
+![][3]
+
+考虑到 Windows 庞大的用户基础,大多数刚接触 Linux 的用户都是从 Windows 转过来的。
+
+如果你已经使用过某个 [流行的 Linux 发行版][4],你当然可以很轻松地切换到其他发行版。
+
+然而,如果你从未使用过 Linux,那么对你而言,用户界面越熟悉,你就会越适应。
+
+[Zorin OS][5] 是众多 [Windows 风格的 Linux 发行版][6] 之一,在这里你可以找到与 Windows 10 和 11 的开始菜单/任务栏相似的的菜单/布局。
+
+![Zorin OS 的 Windows 11 布局][16]
+
+Windows 11 的布局在其专业版中提供(我们稍后会讨论到它)。
+
+### 2. 出色的用户体验
+
+与 Linux Mint、Ubuntu 等发行版相比,Zorin OS 提供了一个独特而精致的外观。
+
+它的图标、动画效果和整体视觉效果(以及可用的壁纸)都看起来令人惊叹,并且它们完美地适合于任何现代系统。
+
+![][7]
+
+Zorin OS 预装了必要的应用程序,让你有一个良好的初始体验,并使你可以十分方便地 [在 Linux 上安装 Windows 软件][8](如果你在软件中心没有找到这个软件的话)。
+
+![][9]
+
+在使用 Zorin OS 的过程中,我从未遇到过错误,也不需要使用终端来完成工作。所以,我想说,它提供了用户友好的体验。
+
+虽然 [我日常使用的系统是 Pop!_OS][10],但偶尔切换到 Zorin OS 也是一种新鲜的体验。
+
+我目前还没有在我的双显示器设置上试用过 [Zorin OS][5],并分享我的经验。我将在不久之后发布一篇相关文章,敬请期待。
+
+### 3. 基于 Ubuntu
+
+![][11]
+
+[Ubuntu][12] 是最受欢迎的 Linux 发行版,这归功于它的易用性和现代设计方法。
+
+虽然它提供了一个完全不同的用户体验,但它支持大量的软件集合,并与大多数硬件配置兼容。
+
+Zorin OS 是基于 Ubuntu 构建的,因此它能为你提供同样的好处,并且它还对用户界面和其他方面进行了调整。
+
+作为基于 Ubuntu 的 Linux 发行版之一,Zorin OS 无疑是值得推荐给初学者的。
+
+### 4. 专业版
+
+与 Windows 相比,[使用 Linux 的好处][13] 之一是,你可以在任意数量的系统上免费安装和分发它。
+
+你不需要为此购买许可证。然而,Zorin OS 也提供了一个可选的“专业”版,一次性收费约为 39 美元。
+
+专业版提供了额外的壁纸、布局(类似 macOS,如上图所示),以及预装的创意和生产力软件。不用担心,所有包含的软件都是免费和开源的。
+
+![][17]
+
+因此,通过这个专业版,你获得了更好的开箱即用的体验和一些额外的功能,与此同时,你也支持了他们的未来发展。
+
+### 5. 对旧电脑的系统资源要求较低
+
+与其他一些竞争者不同,Zorin OS 提供了一个由 XFCE 桌面环境驱动的独立的 [“精简版”][15]。
+
+这个精简版是为在旧电脑上运行而定制的,资源占用最少。
+
+如果你想为你的旧电脑注入活力,或者只是想让你的电脑消耗最少的资源,Zorin OS 精简版可能会是一个不错的选择。
+
+> [获取 Zorin OS][5]
+
+### 总结
+
+除了上面提到的几点,Zorin OS 还提供了一个教育版,专门为学校、学生和教师定制。
+
+当你开始使用 Zorin OS,无论你的需求是什么,它都能在不同的使用场景中派上用场。我认为它应该是初学者的理想选择。
+
+欢迎你在下面的评论中分享你的想法。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/why-zorin-os-beginners/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][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/lujun9972
+[1]: https://itsfoss.com/beautiful-linux-distributions/
+[2]: https://itsfoss.com/best-linux-beginners/
+[3]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/12/zorin-os-desktop-16-lite.jpg?w=1200&ssl=1
+[4]: https://itsfoss.com/best-linux-distributions/
+[5]: https://zorin.com/os/
+[6]: https://itsfoss.com/windows-like-linux-distributions/
+[7]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/08/zorin-photo-app.png?w=857&ssl=1
+[8]: https://itsfoss.com/use-windows-applications-linux/
+[9]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/08/slack-windows-install.png?w=943&ssl=1
+[10]: https://itsfoss.com/why-use-pop-os/
+[11]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/ubuntu-illustration.png?w=1000&ssl=1
+[12]: https://itsfoss.com/getting-started-with-ubuntu/
+[13]: https://itsfoss.com/linux-better-than-windows/
+[14]: https://zorin.com/os/pro/
+[15]: https://news.itsfoss.com/zorin-os-16-lite-release/
+[16]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/08/zorin-os-16-windows-11-layout.png?resize=1568%2C882&ssl=1
+[17]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/zorin-os-16-pro-scaled-1.jpg?w=1200&ssl=1
\ No newline at end of file
diff --git a/published/202204/20220329 Metadata Cleaner- Remove Your Traces From Pictures and Documents in Linux.md b/published/202204/20220329 Metadata Cleaner- Remove Your Traces From Pictures and Documents in Linux.md
new file mode 100644
index 0000000000..b0ef89ef04
--- /dev/null
+++ b/published/202204/20220329 Metadata Cleaner- Remove Your Traces From Pictures and Documents in Linux.md
@@ -0,0 +1,116 @@
+[#]: subject: "Metadata Cleaner: Remove Your Traces From Pictures and Documents in Linux"
+[#]: via: "https://itsfoss.com/metadata-cleaner/"
+[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14437-1.html"
+
+Metadata Cleaner:在 Linux 中清除你在图片和文件中的痕迹
+======
+
+
+
+> 摆脱元数据对增强隐私至关重要。Metadata Cleaner 是一个开源的 Linux 应用,可以帮助你做到这一点。让我们在这里探讨更多。
+
+元数据无处不在,它在文档中、在信息中、在图片中,在各种文件中。
+
+当你检查一个文件的属性时,你可以很容易地访问元数据。
+
+然而,用户在共享文件之前,往往不注重消除或摆脱元数据。主要是因为他们可能不知道有什么简单的工具可以使这项工作更容易。
+
+Metadata Cleaner 就是这样一个供 Linux 用户使用的工具。
+
+### Metadata Cleaner:轻松摆脱你的元数据
+
+![][1]
+
+Metadata Cleaner 帮助你删除与元数据相关的信息的痕迹。它利用 [mat2][2] 来删除元数据。
+
+换句话说,你可以将这个 GUI 当成 mat2 的前端。
+
+例如,一张照片包括拍摄地点、使用的相机、镜头信息等信息。
+
+虽然这对某些人来说可能是有用的信息,但如果你想保持各种细节的私密,你就需要删除元数据。
+
+文件的情况也是如此。删除元数据可以确保提高隐私性,无论是对你的业务还是个人使用。
+
+你可以添加目标文件,并使用 Metadata Cleaner 处理它们,使它们得到清理。
+
+**注意**:在清理之前,你必须保留一份文件的备份。摆脱你的元数据可能会导致你的文件发生剧烈的变化,比如无法选择 PDF 文件中的文本,压缩图片等。
+
+### Metadata Cleaner 的特性
+
+![][3]
+
+Metadata Cleaner 是一个简单的工具,具有一些有用的功能。让我在下面提到它的主要亮点:
+
+ * 能够添加多个文件进行清理。
+ * 检查每个添加的文件的元数据信息。
+ * 查看与每个添加的文件相关的元数据信息的数量。
+ * 一键式清理,最大限度地去除元数据。
+ * 有一个轻量级的清理模式,不会对文件造成很大影响。
+ * 支持键盘快捷键。
+ * 可以从内部创建一个新的窗口。
+ * 你可以添加整个文件夹来处理多个文件。
+
+我用一般的截图、几张照片和从网上下载的文件来开始测试。
+
+![][4]
+
+正如你在上面的截图中注意到的,PDF 文件包含了很多关于其来源的信息。
+
+这只是一个例子。同样,如果你想与某人或公众分享一个 PDF 文件,不想让别人看到它的来源信息,你可以使用 Metadata Cleaner 清理你的踪迹。
+
+如前所述,如果文件对你很重要,如果清理过程以你不希望的方式影响了文件,请确保适当的备份。
+
+![][5]
+
+你也可以使用它的轻量级清理模式,在不影响文件的情况下进行最小的元数据清除。
+
+例如,我对一个 PDF 样本使用了标准清理方法,下面是它的样子:
+
+![][6]
+
+同样,在处理文档和图片时,你的大部分的基本数据会被移除。
+
+### 在 Linux 中安装 Metadata Cleaner
+
+Metadata Cleaner 是以 [Flatpak 包][7] 的形式提供的。因此,考虑到你 [设置了 Flatpak][8] 或者你已经启用了它,你可以在任何 Linux 发行版上安装它。
+
+你可以在终端使用以下命令来安装它(如果你没有软件中心集成):
+
+```
+flatpak install flathub fr.romainvigier.MetadataCleaner
+```
+
+你可以到它的 [网站][9] 或 [GitLab 页面][10] 去探索更多关于它的信息。
+
+> [Metadata Cleaner][9]
+
+你以前尝试过清除元数据的痕迹吗?你对这个工具有什么看法?请在下面的评论中告诉我你的想法。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/metadata-cleaner/
+
+作者:[Ankush Das][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://itsfoss.com/author/ankush/
+[b]: https://github.com/lujun9972
+[1]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/metadatacleaner.jpg?resize=800%2C561&ssl=1
+[2]: https://0xacab.org/jvoisin/mat2
+[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/metadatacleaner-3.png?resize=800%2C592&ssl=1
+[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/metadatacleaner-1.png?resize=800%2C592&ssl=1
+[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/metadatacleaner-lightweight-mode.png?resize=800%2C199&ssl=1
+[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/metadatacleaner-example.png?resize=800%2C326&ssl=1
+[7]: https://itsfoss.com/what-is-flatpak/
+[8]: https://itsfoss.com/flatpak-guide/
+[9]: https://metadatacleaner.romainvigier.fr/
+[10]: https://gitlab.com/rmnvgr/metadata-cleaner/
diff --git a/published/202204/20220330 10 Lightweight Linux Distributions for your Old Hardware in 2022.md b/published/202204/20220330 10 Lightweight Linux Distributions for your Old Hardware in 2022.md
new file mode 100644
index 0000000000..e547973fc5
--- /dev/null
+++ b/published/202204/20220330 10 Lightweight Linux Distributions for your Old Hardware in 2022.md
@@ -0,0 +1,205 @@
+[#]: subject: "10 Lightweight Linux Distributions for your Old Hardware in 2022"
+[#]: via: "https://www.debugpoint.com/2022/03/lightweight-linux-distributions-2022/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "robsean"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14505-1.html"
+
+最适合旧计算机的 10 款 Linux 发行版
+======
+
+
+
+我们重点推荐 10 款轻量级 Linux 发行版,它们是 2022 年最适合旧 PC 的发行版。我们将向你们介绍它们的特色,以及为什么它们会成为复活旧硬件的完美之选。
+
+我们认为你不应该扔掉任何硬件,尤其是 PC 和它的配件。在理想的情况下,设计良好的软件总是能够在任意硬件上运行。有很多专门针对旧硬件和 PC 设计的 [Linux 发行版][1] 。而你可以在这些 Linux 操作系统的帮助快速地恢复它们的活力。在这篇文章中,我们重点推荐 10 款这样的 Linux 发行版,它们是 2022 年的轻量级、对旧硬件友好的 Linux 发行版。
+
+### 2022 年的 10 款轻量级 Linux 发行版
+
+#### 1、Linux Lite
+
+在这份 2022 年的列表中,我们推出的第一款轻量级 Linux 发行版是 Linux Lite 。Linux Lite 是一款基于 Ubuntu 和 Debian 的、正在不断开发和完善的 Linux 发行版。这款有十年开发历史的 Linux 发行版非常适合于你的旧硬件,这些硬件需要适用且设计良好的发行版。该开发团队将这个发行版作为那些硬件不再被 Windows 所支持的用户的理想起点。这个发行版的主要优势是良好的自定义和极好看的 Xfce 桌面,并基于 Ubuntu,采用了最新的内核,当然,它还有一个 32 位 ISO 镜像。
+
+![Linux Lite][2]
+
+特点:
+
+ * 基于 Ubuntu
+ * 自定义的 Xfce 桌面环境
+ * 原生应用程序
+ * 支持 32 位
+ * 积极开发
+ * 最小系统要求 1 GB 内存
+
+> **[下载 Linux Lite][3]**
+
+#### 2、Puppy Linux
+
+在这份列表中的第二个重要的发行版是 Puppy Linux 。Puppy Linux 与传统发行版稍有不同。它被设计成在内存中运行,而不需要安装在物理机系统中。如果配置得当,你可以保存会话,此外,即使你移除了可启动介质,它也可以继续很好地工作。
+
+![Puppy Linux – one of the best lightweight Linux Distribution in 2022][4]
+
+这个 Linux 发行版与 Ubuntu 的 LTS 版本的二进制文件是兼容的;其最新的版本基于 Ubuntu 20.04 LTS。因为 Ubuntu 放弃了 32 位的支持,所以其最新版本也放弃了 32 位的支持。
+
+Puppy Linux 非常适合于旧计算机、上网本以及内存小于 1GB 的机器。在其核心,运行着超快速的 JWM(Jow’s Window Manager)。Puppy 软件包管理器支持 .deb 、.rpm 及其原生的 PET 软件包。
+
+总的来说,它是一款完美的、精心设计的 Linux 发行版,毫无疑问适合于旧硬件。
+
+特点:
+
+ * 基于 Ubuntu LTS 版本
+ * 能够在低端的上网本上运行
+ * 即使移除可启动介质后,也可以直接在内存中运行
+ * 特有的软件包管理器 – Puppy 软件包管理器
+ * JWM 窗口管理器
+
+> **[下载 Puppy Linux](https://puppylinux.com)**
+
+#### 3、BunsenLabs Linux
+
+在这份列表中的第三款轻量级 Linux 发行版是 BunsenLabs Linux ,它是 Crunchbang 项目的继任者。BunsenLabs Linux 基于 Debian 稳定分支,为你的低端系统带来了现代应用。这个发行版为低端硬件提供了一个 32 位版本的镜像,并为你的常规硬件提供一个标准的 64 位版本的镜像。在其核心,BunsenLabds 由一个预配置的 OpenBox 窗口管理器所驱动,并带有令人惊艳的 tint2 面板、预配置的 Conky 和 jgmenu 。
+
+![BunsenLabs Linux][5]
+
+这是一款针对旧硬件的、设计良好、速度超快、稳定且外观漂亮的发行版。
+
+特点:
+
+ * 基于 Debian 稳定分支
+ * Openbox 窗口管理器,附带 tint2 面板、Conky 和 jgmenu
+ * 提供 32 位安装程序
+ * 可以通过官方论坛获取帮助和支持
+
+> **[下载 BunsenLabs Linux][6]**
+
+#### 4、Lubuntu
+
+Lubuntu 是一款著名的轻量级 Linux 发行版。它是一款官方的 Ubuntu Linux 衍生版本,其特点是使用轻量级 LxQt 桌面环境。Lubuntu 在给予你现代的 Ubuntu Linux 软件包和技术的同时,也针对你的低端硬件提供了 LxQt 桌面环境。尽管与这份列表中的其它的发行版相比,它可能需要更多的一些系统资源,但是对于旧硬件来说,它仍然是一个适合的 Linux 发行版。
+
+![Lubuntu][7]
+
+如果你需要一款稳定且开箱即用的适中量级的 Linux 发行版,那么,请选择 Lubuntu 。
+
+> **[下载 Lubuntu][8]**
+
+#### 5、Absolute Linux
+
+第五款轻量级 Linux 发行版是 Absolute Linux ,它基于 Slackware Linux 。这个发行版在其安装程序镜像中打包了所有日常需要的应用程序,以便你可以获得一款开箱即用的发行版。Absolute Linux 以使用 IceWM 和 ROX 桌面环境为特色,在旧硬件中使用它们时,能为你带来极致的速度。它不使用 systemd,这为它提供了比其他发行版更多的优势。
+
+![Absolute Linux][9]
+
+特点:
+
+ * 基于 Slackware
+ * 不使用 systemd
+ * 打包了必要的软件包
+ * IceWM 桌面环境、Slapt-get 软件包管理器
+
+> **[下载 Absolute Linux][10]**
+
+#### 6、antiX Linux
+
+我们想重点推荐的另一款轻量级 Linux 发行版是 antiX Linux 。antiX Linux 基于 Debian 稳定分支,并带来一些吸引人的功能。在其核心,它使用 IceWM、Fluxbox 和 ROX 桌面环境,给予你一种优秀而快速的桌面体验。它完全没有使用 systemd,而是使用 sysVinit 和 runit 系统。antiX Linux 还为你提供了 32 位安装程序,并且还四个变体 – 完全版、核心版、基本版以及网络版,以满足不同的实际使用情况。
+
+![antiX Linux][11]
+
+特点:
+
+ * 基于 Debian 稳定分支
+ * 32 位安装程序
+ * 不使用 systemd
+ * IceWM 及其它的窗口管理器衍生特色版本
+
+> **[下载 antiX Linux][12]**
+
+#### 7、LXLE
+
+LXLE Linux 是 Lubuntu LTS 的一个变体,使用 LXDE 桌面环境而非 LXQt 桌面环境。其对应用程序、安装程序以及其它功能的选择,使其成针对旧硬件的一款完美的发行版。它基于稳定的 Ubuntu LTS 版本,是以快速的 LXDE 桌面环境来复兴你的旧系统的理想选择。
+
+![LXLE Linux][13]
+
+然而,就我个人见解,我感觉 LXQt 比 LXDE 稍快一点。好吧,这种反馈可能是因人而异的,对你来说可能是不同的。现在,没有多少 Linux 发行版能向你提供 LXDE 桌面环境的衍生版本。因此,对于日常使用的来说,它可能是一款独特的轻量级的 Linux 发行版。
+
+> **[下载 LXLE][14]**
+
+#### 8、Porteus Linux
+
+Porteus Linux 是 Slackware Linux 的翻版,以旧的 KDE 4.0+ 桌面环境(KDE Plasma 系列之前的版本)为特色。这款超快的 Linux 发行版非常适合你的古董硬件,因为它基于最先进的 Slackware ,并且向你提供了 32 位版本。这款发行版可以从现场 USB/CD 或任意可启动介质运行,安装程序仅 300 MB 大小。
+
+如果你喜欢老款 KDE(像我一样!)和 Slackware 的简单易用,对你来说这将会是一个完美的发行版,甚至针对你的新硬件也是一样。
+
+![Porteus Linux][16]
+
+> **[下载 Porteus Linux][17]**
+
+#### 9、Q4OS
+
+Q4OS 是这份列表中的一款独特的 Linux 发行版。它针对的是现今已经过时的旧 Windows 系统。曾经很多运行过 Windows XP 和 Windows 7 的老式 PC,它们不再能很好地运行 Windows 和一些现代的 Linux 发行版,因为现代的操作系统要求更多的计算能力和资源。
+
+Q4OS 针对这些实际使用实例,给予你一款精心设计的 Linux 发行版,附带有 32 位安装程序、 Windows 安装程序、Trinity 桌面环境,以及预制的 Windows 主题等。
+
+![Q4OS][18]
+
+> **[下载 Q4OS][19]**
+
+#### 10、MX Linux
+
+在这份列表中的最后一款 Linux 发行版是著名的 MX Linux ,它凭借其特色和独特性在当今时代打响了知名度。然而,我都怀疑是否应该将 MX Linux 列为轻量级。因为在我看来,如果你考虑到它的 KDE Plasma 衍生版本,它应该是中等量级的 Linux 发行版。
+
+![MX Linux][20]
+
+不管怎么说,它的一些特色使其成为一款轻量级 Linux 发行版的完美候选版本。MX Linux 基于 Debian 稳定分支,并使用了 antiX 组件创建。它的特点是有自己的用于更多工作流的 MX Linux 原生应用程序。你可以使用 KDE Plasma 、Xfce 和 Fluxbox 作为桌面环境。
+
+> **[下载 MX Linux][21]**
+
+### 总结
+
+如果你仔细观察就会发现,我们在这里所列出的大多数的轻量级 Linux 发行版都基于 Debian Linux 的。它是真正的 “通用操作系统”。现代的 Linux 桌面环境,像 GNOME 40+ 、KDE Plasma 和 Systemd 初始化系统,已经不再兼容旧硬件。此外,随着技术的进步,引入了更多的软件复杂性,需要更高端的硬件。
+
+尽管如此,我希望你可以从这份列表中找到一些为你的旧笔记本电脑或 PC 选择轻量级 Linux 发行版的灵感。每一款发行版都提供了不同的体验,但是都有共同的目标:让你的旧硬件恢复活力。所以,任君采撷。
+
+感谢阅读,请发表你的评论。如果这对你有所帮助,那怕说声“谢谢”也是好的。
+
+*一些图像文件的版权: 各自的 Linux 发行版*
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/03/lightweight-linux-distributions-2022/
+
+作者:[Arindam][a]
+选题:[lujun9972][b]
+译者:[robsean](https://github.com/robsean)
+校对:[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/lujun9972
+[1]: https://www.debugpoint.com/category/distributions
+[2]: https://www.debugpoint.com/wp-content/uploads/2022/03/Linux-Lite-1024x576.jpg
+[3]: http://www.linuxliteos.com/
+[4]: https://www.debugpoint.com/wp-content/uploads/2022/03/Puppy-Linux-one-of-the-best-lightweight-Linux-Distribution-in-2022-1024x579.jpg
+[5]: https://www.debugpoint.com/wp-content/uploads/2022/03/BunsenLabs-Linux.jpg
+[6]: https://www.bunsenlabs.org/
+[7]: https://www.debugpoint.com/wp-content/uploads/2022/03/Lubuntu-1024x576.jpg
+[8]: https://lubuntu.me/
+[9]: https://www.debugpoint.com/wp-content/uploads/2022/03/Absolute-Linux-1024x640.jpg
+[10]: https://www.absolutelinux.org/
+[11]: https://www.debugpoint.com/wp-content/uploads/2022/03/antiX-Linux-1024x640.jpg
+[12]: https://antixlinux.com/
+[13]: https://www.debugpoint.com/wp-content/uploads/2022/03/LXLE-Linux-1024x576.jpg
+[14]: http://www.lxle.net/
+[15]: https://www.debugpoint.com/2022/01/best-gnome-apps-part-3/
+[16]: https://www.debugpoint.com/wp-content/uploads/2022/03/Porteus-Linux-1024x576.jpg
+[17]: http://www.porteus.org/
+[18]: https://q4os.org/style/image5.jpg
+[19]: https://q4os.org/
+[20]: https://www.debugpoint.com/wp-content/uploads/2022/03/MX-Linux-1-1024x515.jpg
+[21]: https://mxlinux.org/
+[22]: https://www.debugpoint.com/tag/top-10-list
+[23]: https://t.me/debugpoint
+[24]: https://twitter.com/DebugPoint
+[25]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[26]: https://facebook.com/DebugPoint
diff --git a/published/202204/20220330 Thunderbird 102 is Getting Several Exciting New Features- Here Are 7 of Them.md b/published/202204/20220330 Thunderbird 102 is Getting Several Exciting New Features- Here Are 7 of Them.md
new file mode 100644
index 0000000000..5624aa0d41
--- /dev/null
+++ b/published/202204/20220330 Thunderbird 102 is Getting Several Exciting New Features- Here Are 7 of Them.md
@@ -0,0 +1,129 @@
+[#]: subject: "Thunderbird 102 is Getting Several Exciting New Features! Here Are 7 of Them"
+[#]: via: "https://news.itsfoss.com/thunderbird-102-features/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14421-1.html"
+
+7 个 即将发布的 Thunderbird 102 版本的新功能
+======
+
+> Thunderbird 102 将带来有用的新功能以及 UI/UX 升级。在此查看其中最精彩的内容!
+
+
+
+毫无疑问,Thunderbird 是 Linux 上最好的 [电子邮件客户端][1] 之一。
+
+它是 Mozilla 基金会的一个开源产品,是一个具有强大功能的可靠的电子邮件客户端。
+
+在 [最近的更新][2] 中,它已经新增了一些功能以及视觉上的改进。
+
+现在,随着 Thunderbird 102 版本即将发布,它将添加更多激动人心的功能。
+
+在一条 [推特讨论][3] 中,Thunderbird 分享了所有关于此次更新的信息。我在这里挑选其中的关键亮点介绍一下。
+
+### Thunderbird 102:更新了什么?
+
+Thunderbird 102 版本将是一次重大升级,它增加了一些有用的功能,[预期发布时间][4] 为 2022 年 6 月 28 日。其中包括下面这几个变化:
+
+ * 空间工具栏
+ * 新的地址簿
+ * 支持 Matrix 协议
+ * 链接预览卡片
+ * 账户设置中心
+ * 导入/导出
+ * 重新设计的邮件标题栏
+
+这听起来不错吧,这里还有一些关于以上变化的更多细节。
+
+### 1. 空间工具栏
+
+新的“空间工具栏Spaces Toolbar”位于左边的侧边栏中,它将不同的活动以图标的形式分隔开来。
+
+![][5]
+
+你可以更容易地在电子邮件客户端内的多个标签间导航,也可以更容易地管理它们。
+
+你也可以折叠工具栏,让它作为一个图标显示在标签栏中,为你节省一些屏幕空间。
+
+![][6]
+
+### 2. 新的地址簿
+
+![][7]
+
+地址簿有了新的外观,它应该能帮助你轻松找到你的联系人,并与他们进行互动。
+
+联系人信息的整体布局看起来更容易访问,它提供了你想知道的所有细节,理应也能为你提供良好的用户体验。
+
+### 3. 支持 Matrix 协议
+
+Matrix 是一个流行的分布式开源聊天协议。因此,在 Thunderbird 102 版本中,你将能够开箱即用 Matrix 的聊天功能,非常轻松。
+
+Matrix 最初只在测试版中作为实验性功能提供。
+
+你可以期待它在未来的进一步完善。
+
+### 4. 链接预览卡片
+
+![][8]
+
+链接预览将帮助用户建立对链接内容的预期,有助于改善用户体验。
+
+而且,对于像 Thunderbird 这样的直截了当的电子邮件客户端,我从未指望它会提供链接预览这样的功能,直到现在。
+
+每当你在电子邮件编辑器email composer中添加一个链接时,你都可以选择将其转换为丰富的链接预览。
+
+### 5. 账户设置中心
+
+![][9]
+
+对于任何服务/应用程序来说,有一个简单的设置过程都是极其重要的。
+
+Thunderbird 102 版本改进了所有账户设置功能的体验,如添加账户、管理日历、导入配置文件等。
+
+### 6. 默认的导入/导出功能
+
+到目前为止,你都必须依靠一个插件来导入/导出个人资料数据。
+
+而在 Thunderbird 102 版本中,导入/导出功能将是开箱即用的,无需使用附加组件。
+
+### 7. 重新设计的邮件标题
+
+邮件的标题/主题得到了细微的升级,以更好地突出重要信息,并使其在导航时能够快速响应。
+
+![][10]
+
+### 其他变化
+
+除了以上的关键亮点外,你还可以得到许多技术升级和错误修复。
+
+例如,OpenPGP 的用户体验和用户交互也得到了升级,同时还有一个新的存储格式:Maildir。
+
+你对 Thunderbird 102 版本即将新增的功能有什么看法吗?你对 Thunderbird 的用户体验/用户交互升级感到兴奋吗?请在下方的评论区中说说你的想法,或只是简单说声“谢谢”。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/thunderbird-102-features/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][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/lujun9972
+[1]: https://itsfoss.com/best-email-clients-linux/
+[2]: https://news.itsfoss.com/thunderbird-91-release/
+[3]: https://twitter.com/mozthunderbird/status/1508662633292959747
+[4]: https://thunderbird.topicbox.com/groups/planning/Tba7050ab1a565370-M100ace32c2769d192ef79e55/whats-coming-in-thunderbird-102
+[5]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/thunderbird-102-spaces.jpg?w=1200&ssl=1
+[6]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/thunderbird-102-spaces-1.jpg?w=607&ssl=1
+[7]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/thunderbird-102-addressbook.jpg?w=1200&ssl=1
+[8]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/thunderbird-102-link-preview.jpg?w=1200&ssl=1
+[9]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/thunderbird-102-account-setup.jpg?w=1200&ssl=1
+[10]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/thunderbird-102-header.jpg?w=1280&ssl=1
diff --git a/published/202204/20220331 Add Some Colors to Your Ubuntu Desktop With the new Accent Color Options in Ubuntu 22.04.md b/published/202204/20220331 Add Some Colors to Your Ubuntu Desktop With the new Accent Color Options in Ubuntu 22.04.md
new file mode 100644
index 0000000000..fd1ef182d5
--- /dev/null
+++ b/published/202204/20220331 Add Some Colors to Your Ubuntu Desktop With the new Accent Color Options in Ubuntu 22.04.md
@@ -0,0 +1,68 @@
+[#]: subject: "Add Some Colors to Your Ubuntu Desktop With the new Accent Color Options in Ubuntu 22.04"
+[#]: via: "https://itsfoss.com/accent-color-ubuntu/"
+[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14441-1.html"
+
+在 Ubuntu 22.04 中使用新的强调色
+======
+
+
+
+传统上,Ubuntu 一直使用橙色和紫红色的强调色。如果你想在不改变 Yaru 主题的情况下添加一个不同的颜色主题,可以选择使用由第三方提供的 [名为 Yaru 颜色的主题][1]。
+
+但是这一点随着 Ubuntu 22.04 的到来而改变。从即将推出的新的 LTS 开始,你将能够改变你的 Ubuntu 桌面的强调色,而不需要任何额外的工具。
+
+这个选项在系统设置中就有。
+
+### 改变 Ubuntu 22.04 的强调色
+
+我已经在使用 Ubuntu 22.04 预发布版本。你还不会得到这个版本,但已经确定会有这个 [Ubuntu 22.04 新功能][2]。
+
+在设置中,在外观标签下,你会看到颜色选项。它将给你十个颜色选项,包括默认的橙色、树皮色、鼠尾草色、橄榄色、铬绿、普鲁士绿、蓝色、紫色、洋红色和红色。
+
+你可以从这里选择你喜欢的颜色。
+
+![Changing accent colors in Ubuntu 22.04][3]
+
+它改变了什么?所有你在桌面上有橙色元素的地方。所以,文件夹的颜色会被改变,以及日历条目、软件中心的标志、浏览器中的文本选择高亮等等。
+
+![Effect of accent color change][4]
+
+这段视频展示了所有强调色的作用。
+
+
+
+你应该将颜色与浅色和深色主题结合起来。有些颜色在浅色主题下看起来不错,而有些则在深色主题下看起来更好。
+
+### 改变强调色还是坚持使用默认颜色?
+
+![Accent color option in elementary OS 6][5]
+
+最近,Linux Mint 和 elementary OS 开始提供强调色选项。Ubuntu 也在加入这个行列。
+
+就我个人而言,我一直将橙色与 Ubuntu 的身份联系在一起。我不确定我是否会使用不同的颜色,但有选择总是好的。
+
+你呢?你是否期待使用 Ubuntu 22.04 中的强调色,还是坚持使用默认的橙色?请在评论区分享你的观点。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/accent-color-ubuntu/
+
+作者:[Abhishek Prakash][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://itsfoss.com/author/abhishek/
+[b]: https://github.com/lujun9972
+[1]: https://itsfoss.com/folder-color-ubuntu/
+[2]: https://linux.cn/article-14177-1.html
+[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/accent-colors-ubuntu-22-04.png?resize=800%2C572&ssl=1
+[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/changed-accent-color-ubuntu-22-04.png?resize=797%2C453&ssl=1
+[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/accent-colors-elementary-os-6.webp?resize=780%2C667&ssl=1
diff --git a/published/202204/20220401 Deepin OS Becomes the First Linux Distro to Offer Face Unlock.md b/published/202204/20220401 Deepin OS Becomes the First Linux Distro to Offer Face Unlock.md
new file mode 100644
index 0000000000..6b75610eeb
--- /dev/null
+++ b/published/202204/20220401 Deepin OS Becomes the First Linux Distro to Offer Face Unlock.md
@@ -0,0 +1,98 @@
+[#]: subject: "Deepin OS Becomes the First Linux Distro to Offer Face Unlock"
+[#]: via: "https://news.itsfoss.com/deepin-os-20-5-release/"
+[#]: author: "Abhishek https://news.itsfoss.com/author/root/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14425-1.html"
+
+深度操作系统成为首个支持人脸解锁的 Linux 发行版
+======
+
+> 在提供现代桌面体验方面,深度占据了领先地位。
+
+
+
+在深度问世时,人们都为它纯粹的漂亮界面而惊叹。
+
+随着时间的推移,开发人员越来越有经验,他们把重点转移到了系统设计和功能上,力求在这些方面和其他的商业操作系统看齐,我指的是 Windows 和 macOS。深度是首个支持安卓应用和云同步等功能的发行版。
+
+相信我,这是一件好事情。
+
+Linux 发行版以各种桌面环境的形式向大众提供。深度看起来很主流,可以吸引年轻群体。
+
+中国的深度开发团队的也有相同目标,因此深度发布了 20.5 版本,该版本主要亮点是面部识别。
+
+### 深度操作系统 20.5 的新功能
+
+新版本根据用户的反馈增加了几个功能。稳定的内核版本现在已经升级到 5.15.24,并修复几个错误,以加强系统安全性。
+
+让我们来看看这个版本还有哪些新功能吧。
+
+#### Linux 上有了面部解锁
+
+![][1]
+
+是的,我知道 Linux 上早就有面部解锁的相关消息了。毕竟,我曾经写过一篇关于 [在 Linux 发行版中使用类似 Howdy 的软件来支持面部解锁功能][2] 的详细指南。
+
+然而,那些软件更多的是一种个性化定制,是为那些有经验的、爱折腾的用户准备的。
+
+深度现在提供基于人脸的生物识别认证方法。它可以在有内置摄像头的笔记本电脑上工作。
+
+你需要先在控制中心录入人脸信息,此后,你就可以用你的人脸 ID 登录系统。
+
+#### 用户可在应用商店中反馈
+
+你现在可以直接在应用商店中提交对某个应用的反馈。
+
+![][3]
+
+这还不算完。当你有应用程序的安装和更新问题时,你可以在应用程序中直接向官方支持提交问题,并获得解决方案(如果开发者提供了的话)。
+
+#### 改进的邮件应用
+
+![][4]
+
+深度邮件应用现在支持了自定义文件夹管理。它还可以在网络重新连接后自动接收邮件。邮件应用的框架和插件已经替换成了当下流行的 Vue + TinyMCE。
+
+现在,你可以通过点击系统通知直接跳转到到新邮件。为提高工作效率,你可以置顶常用邮件与合并邮件。你也可以预览邮件附件。
+
+#### 可以“钉住”的屏幕截图
+
+![][5]
+
+你现在可以使用内置的屏幕截图工具来“钉住”截图。这样一来,捕获的屏幕截图就会固定在其他应用程序窗口的顶部。从而,你可以同时使用其他应用程序,以提高你的工作效率。另外,置顶的屏幕截图是可以移动的。
+
+#### 其他变化
+
+下面是 Deepin 20.5 新版本中的一些其他变化:
+
+ * Linux 稳定内核更新到了 5.15.24
+ * 可以为一个有线网络适配器设置多个 IP
+ * 优化了无线网络的密码认证交互
+ * 系统搜索现在可以使用文件类型和扩展名作为关键词
+ * 设备管理器允许你禁用或启用设备
+ * 浏览 docx 文件的文档查看器得到了性能优化
+
+还有许多我没有提到的小功能和改进。你可以在 [版本发布说明][6] 中了解这些内容。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/deepin-os-20-5-release/
+
+作者:[Abhishek][a]
+选题:[lujun9972][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/root/
+[b]: https://github.com/lujun9972
+[1]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/04/face-unlock-deepin.jpg?w=900&ssl=1
+[2]: https://itsfoss.com/face-unlock-ubuntu/
+[3]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/04/app-store-feedback-deepin.webp?resize=1568%2C980&ssl=1
+[4]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/04/deepin-mail-app.webp?w=900&ssl=1
+[5]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/04/pinned-screenshots-deepin.webp?w=900&ssl=1
+[6]: https://www.deepin.org/en/2022/03/31/deepin-20-5/
diff --git a/published/202204/20220401 Using Sourcegraph to Search 34,000- Fedora Repositories.md b/published/202204/20220401 Using Sourcegraph to Search 34,000- Fedora Repositories.md
new file mode 100644
index 0000000000..aed35d1902
--- /dev/null
+++ b/published/202204/20220401 Using Sourcegraph to Search 34,000- Fedora Repositories.md
@@ -0,0 +1,148 @@
+[#]: subject: "Using Sourcegraph to Search 34,000+ Fedora Repositories"
+[#]: via: "https://fedoramagazine.org/using-sourcegraph-to-search-34000-fedora-repositories/"
+[#]: author: "Justin Dorfman https://fedoramagazine.org/author/jdorfman/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14434-1.html"
+
+使用 Sourcegraph 搜索 34000 多个 Fedora 仓库
+======
+
+
+
+在 2021 年 10 月,一个 Fedora Linux 用户 [问了一个关于许可的问题][4]。Fedora 项目负责人 Matthew Miller [回复道][5]:“我不能快速地检查(这个问题),因为我们没有一个完整的、庞大的、可搜索的存储库来检索 Fedora 中所有软件包。”
+
+[接着他说][6]:“……或许我们可以付钱给 Sourcegraph,让他们帮我们做这个。他们看起来乐于助人。” 他说的没错,我们(Sourcegraph)的确是乐于助人,而且我们还不想要你的钱,相反,我们想与 Fedora 社区合作。
+
+Fedora 社区现在可以在他们的开源代码世界中尽情搜索 —— 目前有超过 34,000 个存储库,而且还在不断增加。
+
+### 代码搜索简介
+
+如果你还不熟悉 [代码搜索][7] 的概念,我现在就来告诉你。代码搜索可以让团队更快地掌握一个新的代码库,在里面找到答案,帮助团队识别安全风险,以及许多其他用例。Sourcegraph 已经在 GitHub 和 GitLab 等多个代码托管服务上,索引了 200 多万个存储库。本文只关注 src.fedoraproject.org 的代码搜索。Sourcegraph 同时提供了一个 [Web 应用][8] 和 [命令行客户端][9]。
+
+### 使用 Web 应用
+
+在使用 Sourcegraph [Web 应用][8] 时,你需要先输入初始字符串 `repo:^src.fedoraprojects.org`,然后再开始查询。这个 [Web 应用][8] 链接中包括了上面的初始字符串,点击这个链接后,搜索界面如下图所示:
+
+![Sourcegraph Web 应用界面][10]
+
+下面我将提供几个使用 Web 应用程序进行搜索的例子,大家可能会对它们感兴趣。
+
+#### 查找使用流行的经 OSI 批准的许可证的存储库
+
+下面的查询语句将扫描所有兼容 “开源定义Open Source Definition”(OSD) 的软件存储库。
+
+```
+repo:^src.fedoraproject.org/ lang:"RPM Spec" License: ^.*apache|bsd|gpl|lgpl|mit|mpl|cddl|epl.*$
+```
+
+![许可证搜索][11]
+
+> [试一下!][12]
+
+#### 查找带有 TODO 的文件
+
+下面的查询语句将在 34,000 多个仓库中找到 `TODO` 文件。对于那些希望为需要帮助的项目做出贡献的人来说,是一个非常棒的功能。
+
+```
+repo:^src.fedoraproject.org/ "TODO"
+```
+
+![搜索 TODO][13]
+
+> [试一下!][14]
+
+#### 查找 FTP 服务器上的文件
+
+我的一个前同事告诉我 “FTP 是一个死协议”。真的是这样吗?你也可以在这个查询中加入任何其他协议,如 irc、https 等。
+
+```
+repo:^src.fedoraproject.org/ (?:ftp)://[A-Za-z0-9-]{0,63}(.[A-Za-z0-9-]{0,63})+(:d{1,4})?/*(/*[A-Za-z0-9-._]+/*)*(?.*)?(#.*)?
+```
+
+![搜索协议][15]
+
+> [试一下!][16]
+
+#### 查找使用有漏洞的 Log4j 版本的文件
+
+这个查询语句将找到任何可能存在 CVE-2021-44228(也就是 Log4j)漏洞的文件(可能会有误报)。你也可以搜索其他漏洞,然后报告给项目维护者。
+
+```
+repo:^src.fedoraproject.org/ org.apache.logging.log4j 2.((0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15)(.[0-9]+)) count:all
+```
+
+![搜索 log4j][17]
+
+> [试一下!][18]
+
+### 使用命令行
+
+Sourcegraph 还有一个叫做 [src][19] 的命令行客户端,它可以让你完成我刚才提到的所有事情。此外,它还有其他一些有用的命令。比如说,它可以把结果用 JSON 格式输出,方便你在编程中使用。
+
+```
+src search -json 'repo:^src.fedoraproject.org/ lang:"RPM Spec" License: ^.*apache|bsd|gpl|lgpl|mit|mpl|cddl|epl.*$'
+```
+
+#### 输出 JSON
+
+![输出 JSON][20]
+
+> [试一下!][21]
+
+### 搜索语法
+
+就入门而言,上面的例子是很好的起点,但 Sourcegraph 还支持更多的查询语句。你可以 [查看所有的搜索查询语法][22],并根据需要创建你自己的查询语句。
+
+### 总结
+
+正如你所看到的,有了 Sourcegraph,Fedora Linux 社区现在可以快速搜索托管在 [src.fedoraproject.org][23] 上的所有代码,无论是使用普通查询还是复杂的正则查询。
+
+感谢 Fedora Linux 社区的慷慨帮助和热情欢迎。如果你有任何想补充的内容或问题,我和我的团队都会在下面的评论区回复。你也可以 [在 Slack 上找到我们][24]。
+
+特别感谢 [Vanesa Ortiz][25] 促成了这次合作,还有 [Ben Venker][27] 帮助修复了我的正则表达式(多次),以及 [Rebecca Dodd][28] 和 [Nick Moore][29] 在编辑上的帮助。
+
+--------------------------------------------------------------------------------
+
+via: https://fedoramagazine.org/using-sourcegraph-to-search-34000-fedora-repositories/
+
+作者:[Justin Dorfman][a]
+选题:[lujun9972][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://fedoramagazine.org/author/jdorfman/
+[b]: https://github.com/lujun9972
+[1]: https://fedoramagazine.org/wp-content/uploads/2022/03/sourcegraph-816x345.jpg
+[2]: https://unsplash.com/@markuswinkler?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
+[3]: https://unsplash.com/s/photos/magnifying-glass?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
+[4]: https://lists.fedoraproject.org/archives/list/legal@lists.fedoraproject.org/thread/CBCJHOSP36YXQKCVGWVL5MXU64LZ6NZA/
+[5]: https://lists.fedoraproject.org/archives/list/legal@lists.fedoraproject.org/message/LTIQS2PX33FSCEIAPJS62UZXVPDT5JPB/
+[6]: https://lists.fedoraproject.org/archives/list/legal@lists.fedoraproject.org/message/5GEPBSRGUK5E2FLW4MQBVP6DI65XP2LQ/
+[7]: https://codesearchguide.org/
+[8]: https://sourcegraph.com/search?q=context:global+repo:%5Esrc.fedoraproject.org/&patternType=regexp
+[9]: https://docs.sourcegraph.com/cli/quickstart
+[10]: https://fedoramagazine.org/wp-content/uploads/2022/03/Image-2022-03-28-at-1.41.54-PM-1024x335.png
+[11]: https://fedoramagazine.org/wp-content/uploads/2022/03/license-1024x513.png
+[12]: https://sourcegraph.com/search?q=context:global+repo:%5Esrc.fedoraproject.org/+lang:%22RPM+Spec%22+License:+%5E.*apache%7Cbsd%7Cgpl%7Clgpl%7Cmit%7Cmpl%7Ccddl%7Cepl.*%24&patternType=regexp
+[13]: https://fedoramagazine.org/wp-content/uploads/2022/03/todo-1024x605.png
+[14]: https://sourcegraph.com/search?q=context:global+repo:%5Esrc.fedoraproject.org/+%22TODO%22&patternType=regexp&case=yes
+[15]: https://fedoramagazine.org/wp-content/uploads/2022/03/protocol-1024x457.png
+[16]: https://sourcegraph.com/search?q=context:global+repo:%5Esrc.fedoraproject.org/+%28%3F:ftp%29:%5C/%5C/%5BA-Za-z0-9%5C-%5D%7B0%2C63%7D%28%5C.%5BA-Za-z0-9%5C-%5D%7B0%2C63%7D%29%2B%28:%5Cd%7B1%2C4%7D%29%3F%5C/*%28%5C/*%5BA-Za-z0-9%5C-._%5D%2B%5C/*%29*%28%5C%3F.*%29%3F%28%23.*%29%3F&patternType=regexp
+[17]: https://fedoramagazine.org/wp-content/uploads/2022/03/log4j-1024x295.png
+[18]: https://sourcegraph.com/search?q=context:global+repo:%5Esrc.fedoraproject.org/+org%5C.apache%5C.logging%5C.log4j+2.%28%280%7C1%7C2%7C3%7C4%7C5%7C6%7C7%7C8%7C9%7C10%7C11%7C12%7C13%7C14%7C15%29%28%5C.%5B0-9%5D%2B%29%29+count:all&patternType=regexp
+[19]: https://github.com/sourcegraph/src-cli#readme
+[20]: https://fedoramagazine.org/wp-content/uploads/2022/03/Image-2022-03-22-at-9.46.26-AM-1024x521.png
+[21]: https://sourcegraph.com/notebooks/Tm90ZWJvb2s6MzQ2
+[22]: https://docs.sourcegraph.com/code_search/reference/queries
+[23]: https://src.fedoraproject.org/
+[24]: https://srcgr.ph/wp-join-community-space
+[25]: https://twitter.com/vanesacodes
+[26]: https://discussion.fedoraproject.org/t/fedora-sourcegraph-marketing-community-collaboration/36151
+[27]: https://handbook.sourcegraph.com/team/#ben-venker
+[28]: https://handbook.sourcegraph.com/team/#rebecca-dodd
+[29]: https://twitter.com/nickwritesit
diff --git a/published/202204/20220402 CrunchBang-- Linux - The Ultimate Lightweight and Stable Linux Distribution.md b/published/202204/20220402 CrunchBang-- Linux - The Ultimate Lightweight and Stable Linux Distribution.md
new file mode 100644
index 0000000000..ce94cab1b7
--- /dev/null
+++ b/published/202204/20220402 CrunchBang-- Linux - The Ultimate Lightweight and Stable Linux Distribution.md
@@ -0,0 +1,155 @@
+[#]: subject: "CrunchBang++ Linux – The Ultimate Lightweight and Stable Linux Distribution"
+[#]: via: "https://www.debugpoint.com/2022/04/crunchbang-linux-review/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "lxbwolf"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14454-1.html"
+
+CrunchBang++ Linux —— 极致轻量和稳定的 Linux 发行版本
+======
+
+> 我们来对基于 Debian 的、由 Openbox 驱动的轻量级 Linux 发型版本 Crunchbang++ Linux 进行了评测,并为你提供了如何使用它的指导。
+
+CrunchBang 项目已经停止维护,CrunchBang++ Linux 是这个独特的项目的继承者。早期的 CrunchBang Linux 很受欢迎,因为它使用非常少的系统资源,对低端硬件也很友好。而 CrunchBang++ 也有一个 32 位的安装程序(现在很少见),可以在过时的硬件或 PC 上正常运行。
+
+在我们之前介绍 [顶级轻量级 Linux 发行版][1] 的文章中,有读者评论想让我们介绍 CrunchBang++。因此,我们想从性能、无障碍访问和其他因素等方面对这个超级轻量级的 Linux 发行版做一个深入的研究。让我们深入了解一下。
+
+### CrunchBang++ Linux 测评
+
+![CrunchBang++ Linux Desktop with Openbox][2]
+
+#### 现场介质和安装
+
+目前为止,CrunchBang++ 基于最新的 Debian 11 Bullseye,并提供 32 位和 64 位 ISO 变体。你可以从其 [官方网站][3] 下载。本文中,我们使用 64 位的安装程序,其大小为 1.6 GB,与当今流行的 Linux 发行版的 ISO 大小相比,是很小的。例如,最新的 Ubuntu 64 位桌面 ISO 就很大,已经超过了 3.2 GB。
+
+安装程序的启动菜单提供了测试现场镜像Live Image和启动安装程序的选项。你可以先从现场镜像开始。但是,你不能从现场介质安装!相反,你必须再次启动并选择重新安装选项。现场桌面Live desktop的用户 ID 和密码都是 “live”。
+
+![Installation in the boot menu][4]
+
+在物理机和虚拟机([virt-manager][5])上的安装都很顺利。CrunchBang++ 使用 Debian 的原生安装程序,这有点复杂。但你可以按照屏幕上的指示轻松地安装它。如果你不熟悉 Debian 安装程序,你可以参照我们的 [Debian 安装指南][6]。
+
+在虚拟机和物理系统上安装过程平均需要约 5 到 10 分钟。
+
+#### 桌面初窥
+
+CrunchBang++ 给你经典的 Openbox 窗口管理器体验。登录屏幕出乎意料的干净和完美,只有输入凭证的选项。
+
+如果你是第一次运行它,有一个欢迎脚本会引导你检查网速,更新你的系统,等等。
+
+![The welcome script][7]
+
+Openbox 本身是快速和干净的。桌面以其预先配置的 SBPP Openbox 主题带来了一个整洁的外观,其组件如下:
+
+ * [gmrun][8]:一个轻量的应用程序启动器
+ * [Tint2][9]:桌面顶层的控制面板
+ * [dmenu][10]:动态菜单系统
+
+你可以通过右键菜单的简单配置选项来配置它们。
+
+默认情况下,可以通过顶部面板切换两个工作区。顶部面板也有基本的托盘图标以满足你的需要。
+
+ * 音量控制
+ * 网络连接
+ * 语言工具
+ * 电量监控
+ * 剪贴板管理
+
+作为一个窗口管理器,这里没有应用程序视图。但有了 gmrun 应用程序启动器,启动任何应用程序都超级容易。当你需要启动任何应用程序时,Openbox 右键菜单会给你所有的选项。
+
+#### 无障碍访问和应用程序
+
+CrunchBang++ 只包括最低限度的应用程序,以保持 ISO 和安装的轻便。以下是预装的应用程序。
+
+ * GIMP
+ * Thunar 文件管理器
+ * Catfish 文件搜索
+ * Gnumeric
+ * VLC 媒体播放器
+ * Filezilla
+ * 远程桌面客户端
+ * Transmission Torrent 客户端
+ * Screenshot 工具
+ * Geany 文本编辑器
+
+强大的 Synaptic 软件包管理器会满足你所有的软件需求。LibreOffice 不是默认安装的,所以你需要单独安装它。没有用于集中设置的工具,所以有时你可能会觉得缺少一个设置管理器。
+
+#### 性能和资源占用情况
+
+CrunchBang++ 的性能对于轻量级发行版来说是完美的。
+
+这个发行版使用了 585 MB 的内存,空闲状态下 CPU 占用为 1%。如果你让系统在非活动状态下运行一个小时或更长时间,内存占用会进一步减少到 350 MB 左右。这是一个令人印象深刻的指标。
+
+![Performance During Idle State][12]
+
+为了测试重压工作负载,我们在 CrunchBang++ 中打开了以下应用程序的一个实例:
+
+ * Firefox 两个标签页
+ * Thunar 文件管理器
+ * GIMP
+ * Gnumeric
+ * 文本编辑器
+ * 终端
+ * Catfish 文件搜索
+
+整个工作负载占用内存 1.07 GB,CPU 占用为 5% - 7%。
+
+这个发行版的默认安装占用了 4 GB 的硬盘空间。
+
+![Performance During Heavy workload State][13]
+
+#### 连接性
+
+我们对它进行了下面列出的各种连接性测试。除了蓝牙,它通过了每一项测试。
+
+ * Wi-Fi 检测和连接 —— 完美通过测试
+ * 它在多个显示器和分辨率配置下能正确工作(由于有预装的 ARandR)
+ * 自动检测 USB(即使在虚拟机模式下) —— 正常通过测试
+
+没有用于蓝牙的启用、发现和连接的工具(有点像 Xfce 桌面)。所以,如果你安装一个实用程序,你应该都能搞定。
+
+#### CrunchBang++ 的一些缺点
+
+在我看来,这个 Linux 发行版应该由有一些经验的用户来使用,他们在 Linux 中遇到的问题一般都能通过查阅资料解决,并且在需要时也能自如地使用终端。
+
+我还发现了一些我认为默认安装需要(而没有安装)的项目。在这个发行版中没有办法配置鼠标、键盘。没有预装任何工具。然而,你可以通过终端对它们进行调整。你可能需要安装额外的应用程序来配置这些。
+
+在“最近使用的应用程序”的右键菜单和 Nitrogen 壁纸更换器中有些错误。然而,对于你的日常使用来说,它们并不是一个障碍。
+
+所以,总的来说,我认为它很稳定,尽管有所缺失,但可以很好地工作。
+
+### 总结
+
+在结束对 CrunchBang++ 的测评时,我不得不说它是一个高效和实用的 Linux 发行版。它可能不是一个闪闪发光的桌面,但它是一个稳定的、生产级的 Linux 发行版,可以在任何硬件上运行。你可以很容易地把它作为你的日常使用系统,并在不用重装你的整个系统的情况下使用它多年。CrunchBang++ 是贡献者们创造出的伟大的软件。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/04/crunchbang-linux-review/
+
+作者:[Arindam][a]
+选题:[lujun9972][b]
+译者:[lxbwolf](https://github.com/lxbwolf)
+校对:[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/lujun9972
+[1]: https://www.debugpoint.com/2022/03/lightweight-linux-distributions-2022/
+[2]: https://www.debugpoint.com/wp-content/uploads/2022/04/CrunchBang-Linux-Desktop-with-Openbox-1024x576.jpg
+[3]: https://crunchbangplusplus.org/
+[4]: https://www.debugpoint.com/wp-content/uploads/2022/04/Installation-in-boot-menu.jpg
+[5]: https://www.debugpoint.com/2020/11/virt-manager/
+[6]: https://www.debugpoint.com/2021/01/install-debian-buster/
+[7]: https://www.debugpoint.com/wp-content/uploads/2022/04/The-welcome-script.jpg
+[8]: https://github.com/WdesktopX/gmrun
+[9]: https://gitlab.com/o9000/tint2
+[10]: https://tools.suckless.org/dmenu/
+[11]: https://www.debugpoint.com/2021/01/extix-21-1-review/
+[12]: https://www.debugpoint.com/wp-content/uploads/2022/04/Performance-During-Idle-State.jpg
+[13]: https://www.debugpoint.com/wp-content/uploads/2022/04/Performance-During-Heavy-workload-State.jpg
+[14]: https://t.me/debugpoint
+[15]: https://twitter.com/DebugPoint
+[16]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[17]: https://facebook.com/DebugPoint
diff --git a/published/202204/20220402 Peergos- An Open-Source Google Drive Alternative That You Can Self-Host.md b/published/202204/20220402 Peergos- An Open-Source Google Drive Alternative That You Can Self-Host.md
new file mode 100644
index 0000000000..f64ef4d7c0
--- /dev/null
+++ b/published/202204/20220402 Peergos- An Open-Source Google Drive Alternative That You Can Self-Host.md
@@ -0,0 +1,129 @@
+[#]: subject: "Peergos: An Open-Source Google Drive Alternative That You Can Self-Host"
+[#]: via: "https://itsfoss.com/peergos/"
+[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14466-1.html"
+
+Peergos:一个可以自行托管的开源 Google 云端硬盘替代品
+======
+
+
+
+Google 云端硬盘Google Drive 是最受欢迎的云存储服务之一。而且,由于合理的原因,它提供了灵活的定价、区域定价和许多其他优势。
+
+不幸的是,它不提供端对端加密。此外,它不是一个开源的产品。
+
+那么,我们是否有开源的 Google 云端硬盘的替代品?
+
+当然,有 [免费的云存储服务][1],但它们不是开源的,也不是完全安全/私密的。
+
+不用担心,我们有一个优秀的开源解决方案,即 **Peergos**。
+
+### Peergos:一个带有迷你社交网络平台的点对点开源云存储服务
+
+![][2]
+
+[Peergos][3] 不仅仅是 Google 云端硬件的一个普通替代品,也不仅仅是一个私人网络存储平台。
+
+有了 Peergos,你会得到一个建立在 [IPFS 协议][4](点对点)之上的端到端加密的私人网络空间。使用这样的协议使它成为一个去中心化的存储平台。
+
+不仅限于其安全/隐私,你还可以使用新闻源在平台上与你的朋友进行社交。
+
+例如,你上传照片并与你的朋友分享,其他用户(你的朋友)可以在他们的新闻源中看到它们,并像社交媒体平台一样互动。
+
+你还可以添加待办事项,组织日历,并根据需要与合作者/朋友分享。
+
+换句话说,你也可以把 Pergos 视为 [Nextcloud][5] 在某种程度上的替代品。
+
+你可以选择自行托管 Peergos,也可以选择他们的云服务,开始是免费的(200MB 存储空间),可以升级到 50GB,价格为 **£5/月**,或者 500GB,价格为 **£25/月**。
+
+让我强调一下 Pergos 的一些主要特性。
+
+### Peergos 的特点
+
+![][6]
+
+考虑到你在 Peergos 获得的各种功能,以下是亮点:
+
+ * 端对端加密存储。
+ * 能够分享你的照片、视频和文件。
+ * 如果需要,生成链接让其他用户下载你的文件。
+ * 保持你的活动私密,不记录你的使用情况。
+ * 你可以自我托管 Peergos,让你完全控制。
+ * 私有元数据,保持你的联系人列表、文件大小、目录结构和其他信息的隐蔽性。
+ * 提供一个去中心化的存储,你可以无缝访问。
+ * 开源,并经过审计。
+ * 社交媒体网络能力。
+ * 待办事项列表和任务管理。
+ * 协作功能。
+ * 支持 Markdown。
+ * 查看 PDF 文件的能力。
+ * 访问日历,创建和组织事件。
+ * 网站目录,如果你自行托管,可以使用个性化的 URL 或本地端口访问。
+
+Peergos 是一个功能丰富的产品,可以让你存储你的文件,而不用担心对公司的信任问题。
+
+虽然它不是完全匿名的,但 Pergos 作为一项服务不会记录你的任何信息。
+
+此外,如果你想完全控制一切,你可以自行托管。
+
+### 开始使用 Pergos
+
+你需要 [注册][7](云选项)或按照其 [GitHub 页面][8] 中的说明自行托管它。
+
+![][9]
+
+200MB 的免费空间是相当低的。然而,如果你想存储你的一些重要文件,以及选择照片集,这对一些人来说可能是有用的。
+
+高级升级版可以选择上升到 500GB 的存储空间,每月 **25 英镑**。
+
+![][10]
+
+在该平台上切换是相当容易的,用户界面看起来也不错。
+
+![][11]
+
+它支持深色模式,所以你可以随时切换它。可用的共享选项应该足以满足各种合作的需要。
+
+使用组来控制对共享文件的访问是一个有趣的想法。
+
+![][12]
+
+> - 访问 [Peergos][3]
+
+### 总结
+
+Peergos 是一个独特的产品,你可以自行托管。它是开源的,并为隐私爱好者提供了所有好东西来存储文件和安全地进行合作。
+
+云服务可能因其免费存储空间少而不具吸引力。但是,如果你真的喜欢这个概念,你可以选择升级到一个具有更多存储空间的高级计划。
+
+如果你想要一个 Google Drive 的开源替代品,Peergos 可以是一个有趣的选择。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/peergos/
+
+作者:[Ankush Das][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://itsfoss.com/author/ankush/
+[b]: https://github.com/lujun9972
+[1]: https://itsfoss.com/cloud-services-linux/
+[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/04/peergos-home.png?resize=800%2C623&ssl=1
+[3]: https://peergos.org/
+[4]: https://ipfs.io/
+[5]: https://itsfoss.com/nextcloud/
+[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/04/peergos-social.png?resize=800%2C633&ssl=1
+[7]: https://peergos.net/?signup=true
+[8]: https://github.com/peergos/peergos
+[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/peergos-sign-up.png?resize=800%2C684&ssl=1
+[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/peergos-signup.png?resize=800%2C481&ssl=1
+[11]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/peergos-dark.png?resize=800%2C513&ssl=1
+[12]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/03/peergos-sharing.png?resize=800%2C715&ssl=1
diff --git a/published/202204/20220403 Is this the End of the road for elementary OS.md b/published/202204/20220403 Is this the End of the road for elementary OS.md
new file mode 100644
index 0000000000..c5865f6daa
--- /dev/null
+++ b/published/202204/20220403 Is this the End of the road for elementary OS.md
@@ -0,0 +1,73 @@
+[#]: subject: "Is this the End of the road for elementary OS?"
+[#]: via: "https://www.debugpoint.com/2022/04/end-of-elementary-os/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "hwlife"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14449-1.html"
+
+elementary OS 系统走到头了吗?
+======
+
+> Cassidy James 是 elementary OS 系统的创始人,根据他最近的声明得知他已经辞职。下面是我们对这一话题的看法,以及可能的未来。
+
+![elementary OS 6 ODIN Desktop][1]
+
+早在十年前,当 elementary OS 首次发布时,它率先带领 Linux 桌面领域迈出了新的一步。Cassidy 有一个愿景,从那时只有开发者和贡献者在使用的 Linux 桌面,到全世界用户都能够使用它。它的 Pantheon 桌面是最好的桌面之一,从一开始就是为美学和生产力而设计的。
+
+多年来,elementary OS 已经成长起来了。它的用户群和受欢迎程度一直在增加,因为它的稳定性、基于 Ubuntu 长期支持版,对于那些希望在 Linux 中拥有类似 macOS 的用户界面的人来说,是一个完美的桌面。它的基于 Flatpak 的应用商店也是在 Linux 生态系统中最好的应用商店之一,具有一套精心打造的应用程序。
+
+如果你用免费软件经营公司,除非你有一个在背后支撑的企业和其它盈利模式,否则这些优势和良好的用户反馈,是无法变成盈利的。
+
+### 为什么会出现这种情况,这是 elementary OS 系统的终点吗?
+
+elementary OS 有一个 “付费下载” 的收入模式,这是自愿的。但是疫情已经两年了,这方面的销售收入也在下降,该公司的领导层为了维持公司运转,已经削减了全职员工的工资和医疗福利。
+
+> “自从我全职投入 elementary 公司以来,每一个版本的销售业绩都要比上一个表现要好,直到 OS 6 和 6.1 的业绩表现远远低于预期,部分原因是持续的全球疫情,人们看起来在能免费下载操作系统的时候,不再想支付可选的金额来下载它。很明显,我们需要重新确定我们公司财务的优先次序,同时坚定我们的开源、以隐私为中心和道德的筹资信念。”Cassidy 在他的告别信中说道。
+
+全球经济在疫情的打击下,所有人和事都无法幸免。[elementary OS 6 Odin][2] 的发布并不顺利。有一些错误、英伟达显卡的问题和其他问题,全球疫情和贡献的减少也影响了软件的质量。这最终影响到了自愿付费下载的收入。
+
+自愿付费下载模式、GitHub 的赞助,用来维持企业运转和大型项目是远远不够的。如果你看看其他的主流开源项目,如 Fedora Linux、GNOME、KDE Plasma,它们都有来自 Red Hat、IBM、Google 等大企业的大量赞助。而这是有原因的,这些大公司都从这些开源项目中获得商业利益。但是对于 elementary OS 来说,情况就有点不同了。
+
+> Cassidy 又写道,“结果,Dani 要求我辞职,并完全离开 elementary。在我寻找另一个职位时,这并不是我的本意,但是 Dani 一直坚持(要我离开)。最后,我决定,最好的行动方案确实是我继续前行;我放弃了我对 elementary 十多年的激情,接受了 Dani 的提议,让她成为 elementary 公司唯一的、100% 的所有者。我已经签署了我的辞呈。从今天起,她现在拥有公司的所有股份和责任。我祝愿她在延续公司的遗产方面取得最好的成绩。”
+
+### 展望未来
+
+确实,我能在告别信中感受到 Cassidy 的感情。放弃你多年来建立的项目和激情是不容易的。那里有你在为社区获得更大利益的愿景而投入的无数个日日夜夜。你的感情与之相连。放弃并不容易。
+
+没有人能够预测未来。所以,我们不知道在未来的日子里 elementary OS 系统作为一个项目会发生什么。当情况发生了,开源公司最终会成为一个有更多受众和贡献者的社区项目。我觉得新的领导人需要看看 elementary OS 在 Linux 发行版或桌面领域方面的未来路线图。
+
+因为带有 GTK4/libadwaita 的 GNOME 42+ 看起来很有前途,elementary OS 可能会因为 GNOME 而失去用户群。在这种情景下,唯一的卖点只有 Pantheon 桌面,这就需要更多的打磨和市场化能力,同时新的领导层也需要寻找更好的收入模式。
+
+我们希望,作为一个社区,elementary OS 能够继续推出新版本,如果必要的话,让它成为没有 GitHub 赞助墙的社区项目。而我认为寻找企业基金和捐赠也可以成为维持项目运行的长期选择之一。
+
+任何开源项目都不应该停止。我希望新的领导层能够找到更好的收入模式来维持这个项目。只要思想不滑坡,方法总比困难多。
+
+所以,关于这整个情况你有什么看法?在下方评论让我知道。
+
+谢谢。
+
+*部分引用自 [Cassidy 的博客][4]*
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/04/end-of-elementary-os/
+
+作者:[Arindam][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlife)
+校对:[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/lujun9972
+[1]: https://www.debugpoint.com/wp-content/uploads/2021/08/elementary-OS-6-ODIN-Desktop-1024x576.jpeg
+[2]: https://www.debugpoint.com/2021/08/elementary-os-6-odin-review/
+[3]: https://www.debugpoint.com/2021/05/elementary-os-6-beta/
+[4]: https://cassidyjames.com/blog/farewell-elementary/
+[5]: https://t.me/debugpoint
+[6]: https://twitter.com/DebugPoint
+[7]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[8]: https://facebook.com/DebugPoint
diff --git a/published/202204/20220405 Collision- An Open-Source App to Check if Your Files Were Tampered With.md b/published/202204/20220405 Collision- An Open-Source App to Check if Your Files Were Tampered With.md
new file mode 100644
index 0000000000..38b2e8d849
--- /dev/null
+++ b/published/202204/20220405 Collision- An Open-Source App to Check if Your Files Were Tampered With.md
@@ -0,0 +1,112 @@
+[#]: subject: "Collision: An Open-Source App to Check if Your Files Were Tampered With"
+[#]: via: "https://itsfoss.com/collision/"
+[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "hwlife"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14438-1.html"
+
+Collision: 一个验证你的文件是否被篡改的开源应用
+======
+
+
+
+> 一个让你查看你的文件哈希值,以确定它不是恶意文件,并且确实来自真实来源的图形界面程序。
+
+有人给你发送了一个文件,你怎样来证实它是给你的原件?你怎样来确定它没有被篡改过?
+
+同时,你怎么证实这个文件是来自一个原始的真实来源。
+
+这就是加密哈希的重要作用所在。如果用来验证一个文件,诸如 SHA-1 之类的哈希功能就是一个校验值。这能够帮助你确认文件是否已经被修改。
+
+如果你感到好奇,你可以参考我们的 [在 Linux 中验证校验值的指南][1]。
+
+对每个信息 / 文件来说,它们有一个唯一的哈希值(或者叫校验和)。所以,即使文件有一点点的改动,整个哈希值就会发生变化。
+
+它主要用于加密中,每个文件 / 信息以哈希值安全的存储。假设一个攻击者掌握了存储哈希值(而不是真实信息)的数据库,他们也不能够知道其意义。加密可以使存储更加安全。
+
+虽然讨论哈希超出了这篇文章的范围,但是了解它在验证文件完整性上是很有意义的。
+
+### Collision:迅速的验证文件并发现恶意文件
+
+![][2]
+
+如果没有图形界面,你就得用终端去生成哈希值来比对 / 验证。
+
+Collision 使它变的非常容易,不需要打开终端或者生成文件的校验值。如果你不了解的话,我们的 [在 Linux 中验证校验值的指南][1] 可以帮助到你。
+
+当使用 Collision 时, 你只需要添加你要生成哈希值或者验证所需的文件即可。你只需点击几下便能够保护自己免受恶意或篡改文件的攻击。
+
+我在截图中显示了个文本文件,你的文件在发送给其他人之前,你可以验证各种类型文件或为你的文件生成一个哈希值。你可以通过发给收件人分享你生成的哈希值,让他们验证你的文件。
+
+![][3]
+
+这是一款简单的开源应用,它只帮你做两件事情:
+
+ * 生成哈希值(SHA-1、MD5、SHA-256、SHA-516)
+ * 通过直接使用文件或者校验值验证一个项目
+
+### Collision 是怎么工作的
+
+给你举个例子,我修改原来的文本文件,为其添加一个字母,然后尝试验证它。
+
+下面是它的过程:
+
+首先,你需要打开你要比对的原文件或者有校验值的原文件。
+
+打开原文件生成哈希值,然后去验证区查看修改后的文件。
+
+![][4]
+
+你会注意到,它们俩个不是相同的:
+
+![][5]
+
+如果你在按校验值检查文件,首先,你要打开你要验证的文件(这儿是我们已经修改后的文件)。
+
+![][6]
+
+然后,输入文件的原始真实校验值。当然我们已经知道我们测试的是修改后的文件,结果是我们所期望的,即,**验证文件完整性失败**。
+
+![][7]
+
+### 在 Linux 安装 Collision
+
+Collisions 主要是一个为 GNOME 定制的程序,但是它也适用于其他发行版上。
+
+你可以使用 [Flatpak 可用软件包][8] 来安装它,或者浏览 GitHub 网页,从源码中编译它。如果你是 Linux 新手,你可以参考我们的 [Flatpak 指南][9] 来得到帮助。
+
+如果你喜欢使用终端来安装,键入以下命令来安装:
+
+```
+flatpak install flathub dev.geopjr.Collision
+```
+
+你也可以访问它的官方网站。
+
+> [Collision][10]
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/collision/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlife)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://itsfoss.com/author/ankush/
+[b]: https://github.com/lujun9972
+[1]: https://itsfoss.com/checksum-tools-guide-linux/
+[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/04/collission-verify-true.png?resize=800%2C617&ssl=1
+[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/04/collision-hash-values.png?resize=800%2C617&ssl=1
+[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/04/collision-file-open.png?resize=800%2C328&ssl=1
+[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/04/collision-file-check.png?resize=800%2C620&ssl=1
+[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/04/collision-file-verify.png?resize=800%2C373&ssl=1
+[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2022/04/collision-input-checksum.png?resize=800%2C626&ssl=1
+[8]: https://flathub.org/apps/details/dev.geopjr.Collision
+[9]: https://itsfoss.com/flatpak-guide/
+[10]: https://collision.geopjr.dev/
diff --git a/published/202204/20220405 Here-s What Devs Are Planning for GNOME 43.md b/published/202204/20220405 Here-s What Devs Are Planning for GNOME 43.md
new file mode 100644
index 0000000000..9364aaad8c
--- /dev/null
+++ b/published/202204/20220405 Here-s What Devs Are Planning for GNOME 43.md
@@ -0,0 +1,121 @@
+[#]: subject: "Here’s What Devs Are Planning for GNOME 43"
+[#]: via: "https://news.itsfoss.com/gnome-43-dev-plans/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14440-1.html"
+
+开发者对于 GNOME 43 的计划
+======
+> GNOME 43 及以后的开发计划令人振奋,以下是你可以期待的:……
+
+
+
+GNOME 42 刚刚发布不久。
+
+尽管它是 GNOME 41 之后的一次令人兴奋的升级,但你可能无法在每个主流 Linux 发行版上找到它(除了 OpenSUSE、Arch 和 Clear Linux)。
+
+Fedora 36 和 Ubuntu 22.04 应该是采用 GNOME 42 的最受欢迎的选择,它们将在接下来的几周发布。
+
+接下来是什么?没错,就是 **GNOME 43**。
+
+### GNOME 43:计划中的新功能
+
+在一篇 [博文][1] 中,GNOME 开发者 Chris Davis 分享了一些 GNOME 43 及之后版本计划中的变更。
+
+我在这里介绍其中的一些主要亮点。
+
+> 请注意,这里提到的计划变更或改进可能会在 GNOME 43 中首次亮相,也可能不会。
+
+#### 全局强调色
+
+![Ubuntu 22.04 Beta 中的强调色][2]
+
+随着 Libadwaita 的引入,现在有可能增加一个全局强调色的功能。
+
+你不必依赖发行版来提供使用强调色的能力(比如 [Ubuntu 22.04 中添加了这个功能][3])。
+
+有了强调色,GNOME 桌面体验可以更加个性化。此外,它将不仅仅局限于预设,同时也支持自定义强调色,应用开发者可以考虑支持它。
+
+#### 重新着色 API
+
+![][4]
+
+这对终端用户来说可能不是特别有趣,但它将帮助应用开发者提供预设的颜色方案,让他们的应用更好地协调各种强调色。
+
+正如这篇博文所说:
+
+> 开发者可以使用重新着色 API,以编程方式改变他们应用程序中的颜色,并让依赖的颜色自动更新。他们将能够轻松地创建预设,从而实现许多功能。例如,根据文本视图的颜色方案来改变窗口的显示颜色。
+
+有了 libadwaita 1.0 中的 CSS,这在技术上已经可以实现。然而,API 可以帮助开发者更容易地使用这个功能。
+
+#### 自适应的 Nautilus 文件管理器
+
+![][5]
+
+Nautius 文件管理器将得到一些升级,比如针对移动尺寸的自适应设计,其中包含一个新的文件选择器模式。
+
+它将帮助 GNOME 平台跟上新功能,而不需要依赖 GTK 的文件选择器,因为它不支持 GNOME 的所有功能,比如收藏文件。
+
+#### 新的图片浏览器(Loupe)和屏幕截图注释
+
+一个新的图片浏览器正在开发中,名字叫 Loupe。它由 Rust 编写,使用了 GTK4 和 libadwaita。
+
+![][6]
+
+这个图片浏览器的目标是自适应、对触摸板和触摸屏友好,并且易于使用。你可以期待它与 Nautilus 集成,以遵循文件管理器中任何文件夹的排序设置。
+
+除了系统集成之外,新的图片浏览器还将会有一些功能升级,主要是在基本的图片编辑方面,比如剪裁、旋转和注释。
+
+![][7]
+
+有了注释的能力,它可以与截图流程很好地配合,允许你在没有任何第三方程序的情况下进行屏幕截图并进行注释。
+
+#### 磁盘使用情况分析器的新设计(用 Rust 重写)
+
+磁盘使用情况分析器目前是用 Vala 编写的。
+
+虽然它能完成预期的工作,但是按照现在的实现方式,它不具备很大的潜力。
+
+![磁盘使用情况分析器的设计演示图,图源:Allan Day][8]
+
+因此,开发计划中包括了使用 Rust 来重写它,这应该会在可预见的未来改善它,提供最好的性能。
+
+![磁盘使用情况分析器的设计模型,图源:Allan Day][9]
+
+不仅仅局限于其核心,它还将得到一个设计上的大调整(类似于上面的演示图),以争取让用户体验更加现代化。
+
+### 其他改进措施
+
+随着开发的进行,我们应该会知道更多关于 GNOME 外观和其他方面计划中的变更。
+
+当我们了解到更多关于 GNOME 43 的功能时,我将会更新这篇文章。
+
+如果你对技术细节感到好奇,你可以阅读 [Chris 的博文][1]。你也可以赞助他为 GNOME 做的工作,以及其他任何相关的东西。
+
+你期待中的 GNOME 43 是什么样的?请在下面的评论中分享你的想法吧!
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/gnome-43-dev-plans/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][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/lujun9972
+[1]: https://blogs.gnome.org/christopherdavis/2022/04/03/plans-for-gnome-43-and-beyond/
+[2]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/ubuntu-22-04-dark-mode.png?w=1155&ssl=1
+[3]: https://news.itsfoss.com/ubuntu-22-04-accent-color/
+[4]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/04/recoloring-api-gnome-43.png?w=768&ssl=1
+[5]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/04/nautilus-gnome-43-plan.png?w=768&ssl=1
+[6]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/04/image-viewer-gnome-43.png?w=722&ssl=1
+[7]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/03/ubuntu-22-04-screenshot-ui.jpg?w=800&ssl=1
+[8]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/04/disk-usage-analyser-gnome-43.png?w=763&ssl=1
+[9]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2022/04/disk-usage-analyser-gnome-43-1.png?w=759&ssl=1
diff --git a/published/202204/20220405 Xfce Terminal 1.0.0 is a Feature-Packed Major Upgrade After a Year.md b/published/202204/20220405 Xfce Terminal 1.0.0 is a Feature-Packed Major Upgrade After a Year.md
new file mode 100644
index 0000000000..7df9a215df
--- /dev/null
+++ b/published/202204/20220405 Xfce Terminal 1.0.0 is a Feature-Packed Major Upgrade After a Year.md
@@ -0,0 +1,96 @@
+[#]: subject: "Xfce Terminal 1.0.0 is a Feature-Packed Major Upgrade After a Year"
+[#]: via: "https://news.itsfoss.com/xfce-terminal-1-0-0-release/"
+[#]: author: "Jacob Crume https://news.itsfoss.com/author/jacob/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14459-1.html"
+
+Xfce Terminal 1.0.0:时隔一年后的一次功能丰富的重大升级
+======
+
+> 在其上一个主要版本发布一年后,Xfce Terminal 1.0.0 终于来了。兴奋地想了解一下新的改进吗?让我们来看看!
+
+
+
+作为几乎在所有采用 Xfce 的发行版上流行的终端模拟器,Xfce Terminal 刚刚由新的维护者(及新的版本计划)发布了它的第一次重大升级。
+
+让我们来看看这个版本的一些亮点。
+
+### 新的维护者和版本管理方案
+
+Igor Zakharov 从 2016 年到 2020 年一直在领导它的开发工作。不幸的是,在 2021 年它就没有被维护过,直到新的维护者 [Sergios][1] Anestis Kefalidis(也是 Thunar 文件管理器的开发者)接手。
+
+而且,自从 Sergios 接管了这个项目后,版本管理方案也发生了变化。经过与社区的协商,采用了 Thunar 的旧版本计划。
+
+例如,1.1.x 版本将是开发版本,而 1.2.0 版本将是下一个主要升级版本。
+
+现在,随着 Xfce Terminal 1.0.0 的发布,一些令人兴奋的新特性已经被纳入。
+
+### 新特性
+
+Xfce Terminal 1.0.0 的一些新特性包括:
+
+ * 改进了自定义选项
+ * 支持叠加滚动条
+ * 命令行选项的改进
+ * 更多使用 XfceTitledDialog
+
+#### 更好的自定义选项
+
+和现在许多应用的更新一样,Xfce Terminal 1.0.0 包括大量新的自定义选项。也许我最喜欢的是,图像背景功能现在有一个“填充”风格选项。伴随着这一点的是暂时禁用不安全的粘贴对话框的能力,它也被改造了。
+
+最后,Xfce Terminal 也成为首批支持新的 Xfce 快捷键编辑器的应用之一。因此,用户不再需要潜心研究配置文件,而是有了一个可以使用的简单 UI。
+
+![][2]
+
+有了这么多新的定制选项,我相信很多人都会对一个只是包含这些的版本感到满意。但是!开发者设法加入了更多令人兴奋的新功能,其中下一个是改进的命令行参数。
+
+#### 更好的命令行参数
+
+在这个版本中,修复了 `-tab` 和 `-window` 命令行参数,变得更加直观。这修复了 Xfce Terminal 中一个 [长期存在的错误][3],它已经存在了近 6 年。
+
+尽管等待了很久,但现在它已经被修复了。迟到总比不到好,是吧?
+
+不管怎么说,看到每一个新版本的错误被修复总是很好的,这个趋势在这里继续。
+
+#### 更多使用 Xfce 专用的小工具
+
+虽然我相信很多用户可能会认为这是一个退步,但 Xfce Terminal 使用更多的 Xfce 专用小工具带来了很多好处。虽然这对非 Xfce 用户确实意味着要安装更多的依赖关系,但它意味着与 Xfce 更好的整合。
+
+可以说,大多数的 Xfce Terminal 用户都坚持使用同样的 Xfce 桌面环境。所以,这种改变应该会带来更大的一致性和用户体验的改善。
+
+#### 其他变化
+
+这个版本的其他变化包括:
+
+ * “输出滚动”偏好设定的改进
+ * 右键点击行为的自定义选项
+ * 为缩小代码库而进行的代码重写
+
+关于完整的功能列表,请随时参考 [发布说明][4]。发布说明中还提到了下一个主要版本的未来计划,即 v1.2.0。
+
+### 总结
+
+总的来说,Xfce Terminal 1.0.0 看起来是一个不错的版本,也说明了其新的维护者的奉献精神。
+
+如果你想试试 Xfce Terminal 1.0.0,它应该会在接下来的几周内进入你的发行库,如果现在还没有的话。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/xfce-terminal-1-0-0-release/
+
+作者:[Jacob Crume][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://news.itsfoss.com/author/jacob/
+[b]: https://github.com/lujun9972
+[1]: https://www.youtube.com/channel/UCu8-J-XWcXQhoCopBiJ5-uw/videos
+[2]: https://news.itsfoss.com/wp-content/uploads/2022/04/xfce4-terminal.png
+[3]: https://bugzilla.xfce.org/show_bug.cgi?id=12926
+[4]: http://users.uoa.gr/~sdi1800073/sources/xfce_blog12.html
diff --git a/published/202204/20220406 Ex-Snap Advocate at Ubuntu Creates a Tool to Help You Migrate from Snap to Flatpak.md b/published/202204/20220406 Ex-Snap Advocate at Ubuntu Creates a Tool to Help You Migrate from Snap to Flatpak.md
new file mode 100644
index 0000000000..a6b9c64b22
--- /dev/null
+++ b/published/202204/20220406 Ex-Snap Advocate at Ubuntu Creates a Tool to Help You Migrate from Snap to Flatpak.md
@@ -0,0 +1,131 @@
+[#]: subject: "Ex-Snap Advocate at Ubuntu Creates a Tool to Help You Migrate from Snap to Flatpak"
+[#]: via: "https://news.itsfoss.com/unsnap-migrate-snap-to-flatpak/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14482-1.html"
+
+Ubuntu 的前 Snap 倡导者创建了一个工具,帮助你从 Snap 迁移到 Flatpak
+======
+
+> 吃惊!Canonical 的前 Snap 倡导者开发了一个工具,帮助你快速抛弃 Snap 并使用 Flatpak。
+
+
+
+不喜欢使用 Snap?
+
+好吧,你可以一直坚持使用传统的二进制包(deb/rpm),或者选择 [Flatpak][1]。
+
+但是,如果你已经用上了 Snap 商店的应用,怎么办?
+
+手动删除 Snap 应用,和 Snap 说再见,安装 Flatpak,并安装所有 Flatpak 需要的软件包,这将是非常耗时的。
+
+这就是 “Unsnap” 派上用场的地方。
+
+Unsnap 是一个开源工具,由 Canonical 的前 Snap 倡导者 **Alan Pope** 开发,帮助你从Snap 快速迁移到 Flatpak。
+
+### Unsnap:它是如何工作的
+
+> 请注意,该工具仍处于前 alpha 阶段,你可以测试它,但如果你想实际使用并帮助改进,你可能要做一些研究。
+
+基本上,该工具生成的脚本可以帮助你做以下事情(按特定顺序):
+
+ * 备份现有的 Snap 软件包。
+ * 安装 Flatpak(如果尚未存在)。
+ * 启用 Flathub。
+ * 为 Snap 应用安装相同的 Flatpak 应用。
+ * 移除已安装的 Flatpak 应用的 Snap 应用。
+ * 删除所有 Snap 软件包。
+
+虽然脚本是在你运行工具时自动生成的,但你可以选择手动或自动逐个运行这些脚本来切换到 Flatpak 应用。
+
+### 如何测试 Unsnap?
+
+![][2]
+
+看了上面的截图,你可能对它的实现方式有了一个模糊的概念。你也可以参考它的 [GitHub 页面][3] 了解最新信息。
+
+作为参考,让我为你强调一下步骤:
+
+#### 1、克隆 GitHub 仓库
+
+请确保你已经 [在你的 Linux 发行版上安装了 Git][4]。完成后,你可以输入以下命令:
+
+```
+git clone https://github.com/popey/unsnap
+```
+
+#### 2、切换到该目录
+
+当你克隆了仓库,你的系统上就会有 `unsnap` 目录。
+
+输入以下命令切换到目录:
+
+```
+cd unsnap
+```
+
+#### 3、运行该工具
+
+在切换到目标目录后,只需使用命令运行 `unsnap` 工具:
+
+```
+./unsnap
+```
+
+它将检查现有的 Snap 和 Flatpak 软件包等等,进行设置。
+
+正如你在上面的截图中注意到的,它已经检测到我的系统有了 Flatpak 环境,所以它跳过了为这些任务生成脚本。
+
+在这个过程中,它还会了解你系统上安装的 Snap 应用,以便在你运行生成的脚本时找到相应的 Flatpak 应用。
+
+如果你想立即运行所有的脚本,你可以输入:
+
+```
+./unsnap auto
+```
+
+![][2]
+
+如果你想要不使用自动选项进行控制,你可以发现生成的脚本驻留在一个日志目录内,如下图所示:
+
+![][2a]
+
+下面是你应该遵循的脚本的执行顺序:
+
+ * `00-backup`
+ * `01-install-flatpak`
+ * `02-enable-flathub`
+ * `03-install-flatpaks`
+ * `04-remove-snaps`
+ * `99-remove-snapd`
+
+在我的例子中,我已经设置了 Flatpak,所以我继续运行备份脚本,然后安装 Flatpak 软件包,如此循环。下面是它看起来的样子:
+
+![][2b]
+
+你应该记住,这个工具正在积极开发中,可能不会像预期那样工作。所以,你如果依赖众多的 Snap 应用,你应该在虚拟机或测试机上试验使用该工具,并等待该工具随着稳定版本的推出而改进。
+
+请在下面的评论中告诉我你对 Unsnap 的看法。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/unsnap-migrate-snap-to-flatpak/
+
+作者:[Ankush Das][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://news.itsfoss.com/author/ankush/
+[b]: https://github.com/lujun9972
+[1]: https://itsfoss.com/flatpak-guide/
+[2]: https://news.itsfoss.com/wp-content/uploads/2022/04/unsnap-auto.png
+[3]: https://github.com/popey/unsnap
+[4]: https://itsfoss.com/install-git-ubuntu/
+[2a]: https://news.itsfoss.com/wp-content/uploads/2022/04/unsnap-scripts.png
+[2b]: https://news.itsfoss.com/wp-content/uploads/2022/04/unsnap-install-flatpaks.png
\ No newline at end of file
diff --git a/published/202204/20220407 Linux Mint 21 Code Name Announced with New Upgrade Utility and More.md b/published/202204/20220407 Linux Mint 21 Code Name Announced with New Upgrade Utility and More.md
new file mode 100644
index 0000000000..c86f50a751
--- /dev/null
+++ b/published/202204/20220407 Linux Mint 21 Code Name Announced with New Upgrade Utility and More.md
@@ -0,0 +1,62 @@
+[#]: subject: "Linux Mint 21 Code Name Announced with New Upgrade Utility and More"
+[#]: via: "https://www.debugpoint.com/2022/04/linux-mint-21-announcement/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14448-1.html"
+
+Linux Mint 21 公布了代号、新的升级工具及更多内容
+======
+
+
+
+> Mint 团队公布了即将到来的 Linux Mint 21 的代号、一个用于轻松升级的工具,以及令团队惊叹的 Warpinator 使用案例。
+
+### Linux Mint 21 公告和其他更新
+
+首先,Linux Mint 21 的代号是 “Vanessa”,它将基于 [Ubuntu 22.04 LTS Jammy Jellyfish][1]。像往常一样,它将提供三个旗舰版本:Xfce、Cinnamon 和 MATE。
+
+其次,很明显,Mint 团队将选择 Ubuntu 22.04 LTS 作为 Linux Mint 21 的基础以获得长期支持。它将采用 [5.15 版本的 Linux 内核][2],这是一个长期支持版的内核。
+
+除此之外,项目负责人 Clement Lefebvre 还宣布了 [一个新的升级工具][3](mintupgrade2),这样一来,计划升级到 Linux Mint 21 的用户可以更轻松地完成升级步骤。根据历史经验,升级到 Mint 的主要版本是一个涉及大量终端操作的复杂过程,这对普通用户来说通常是困难的。
+
+![随 Linux Mint 21 公布的 Mint 升级工具][4]
+
+因此,考虑到其用户基础,Mint 团队为用户开发这个升级工具还是很有必要的。Clement Lefebvre 承诺,新的工具将是完全图形化的,附带有易于管理的步骤和说明。它将支持语言的本地化,还将为复杂的升级过程提供预先检查,同时也将为用户提供易于理解的可配置的指南。
+
+这个工具将成为从 Linux Mint 20 升级到 21 的主要工具,它会在五、六月份左右发布。此外,这个新工具承诺提供关于自定义 PPA 和孤儿包的警告,以减少你在升级前的担忧。老实说,这将是 Mint 团队为其用户带来的最好的工具之一。
+
+#### 其他更新
+
+除了以上更新外,团队还提到,文件传输工具 Warpinator 被世界上的多个用户用于一些奇怪的需求 —— 这是团队之前从未想过的。例如,有人用 Warpinator 在 Windows 和 V 社的 Steam Deck 游戏机之间传输文件,参见 [这个视频][5]。
+
+说到这里,Warpinator 现在提供了一个 [针对 iOS][6] 用户的测试发行版。你现在可以在你的苹果系统与任何其他系统之间快速传输文件,包括安卓、Linux 和 Windows。Mint 团队开发的这个应用真不错。
+
+你可以在官方[博客][7]中阅读关于 Linux Mint 21 的公告和更多内容。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/04/linux-mint-21-announcement/
+
+作者:[Arindam][a]
+选题:[lujun9972][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[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/lujun9972
+[1]: https://www.debugpoint.com/2022/01/ubuntu-22-04-lts/
+[2]: https://www.debugpoint.com/2021/11/linux-kernel-5-15/
+[3]: https://github.com/linuxmint/mintupgrade2
+[4]: https://www.debugpoint.com/wp-content/uploads/2022/04/Mint-upgrade-2-utility-announced-with-Linux-Mint-21.jpg
+[5]: https://www.youtube.com/watch?v=sHdQT6kI6Q8
+[6]: https://www.reddit.com/r/linuxmint/comments/rn04lw/interest_in_warpinator_for_ios/
+[7]: https://blog.linuxmint.com/?p=4293
+[8]: https://t.me/debugpoint
+[9]: https://twitter.com/DebugPoint
+[10]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[11]: https://facebook.com/DebugPoint
diff --git a/published/202204/20220407 Vivaldi 5.2 Adds a Reading List Panel - New Privacy Statistics Bar.md b/published/202204/20220407 Vivaldi 5.2 Adds a Reading List Panel - New Privacy Statistics Bar.md
new file mode 100644
index 0000000000..6418116b9f
--- /dev/null
+++ b/published/202204/20220407 Vivaldi 5.2 Adds a Reading List Panel - New Privacy Statistics Bar.md
@@ -0,0 +1,104 @@
+[#]: subject: "Vivaldi 5.2 Adds a Reading List Panel & New Privacy Statistics Bar"
+[#]: via: "https://news.itsfoss.com/vivaldi-5-2-release/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14452-1.html"
+
+Vivaldi 5.2 增加了阅读列表面板和新的隐私统计栏
+======
+
+> Vivaldi 5.2 已经准备好了,增加了新的功能,使该浏览器对桌面和移动用户更加有用。
+
+
+
+对于那些希望获得更好的浏览体验的用户来说,Vivaldi 一直以来都是一个很好的选择。
+
+尽管它不是完全的自由及开放源代码软件Free and Open Source Software(FOSS)(用户界面是专有的,其他部分是开源的),但对于那些需要处理多个标签页,以及希望有更多特性的 Linux 用户来说,它是一个可行的选择。
+
+事实上,它现在是 [Linux 用户的最佳选择之一][1]。
+
+Vivaldi 5.2 增加了更多有用的升级,对于你目前使用的浏览器来说,它现在成为了一个吸引人的可选替代品。
+
+### Vivaldi 5.2:新功能
+
+Vivaldi 5.2 通过一个新的阅读面板和一个独立的隐私统计栏,增强了使用体验。
+
+其安卓版也得到了一些令人兴奋的升级,让我们来看看吧!
+
+下面是更多的介绍:
+
+#### 阅读列表面板
+
+![][2]
+
+此前,Vivaldi 的侧面板已经有了大量的选项,包括电子邮件、RSS、日历等。
+
+现在,一直存在于地址栏中的阅读列表(保存页面以便以后阅读)现在也可以在侧面板中使用。
+
+出现在侧面板中后,阅读列表变得比以前更容易访问。因此,你能够在你需要的时候,随时检查/浏览阅读列表,而不必从当前的任务中切换出来。
+
+你可以在下面的视频中查看该功能的运行情况:
+
+
+
+你可以在侧面板里管理、搜索和组织阅读列表。
+
+你也可以使用快捷命令,把任何页面保存到到阅读列表中。别忘了,你的阅读列表还能够与你的手机(安卓)或任何其他已连接的设备同步。
+
+#### 隐私统计栏
+
+![][4]
+
+尽管 Vivaldi 已经有了阻止跟踪器的内置保护功能,但你并不能正确了解这些跟踪器的信息。
+
+有了新的统计栏,你就可以集中地看到在浏览过程中被阻止的所有跟踪器的跟踪行为。
+
+大多数用户可能不关心这个问题。但是,查看统计信息可以让你知道什么追踪器更普遍,并获得对它们的了解。
+
+你也可以在下面的视频中了解它的实际使用:
+
+
+
+#### 其他改进措施
+
+除了隐私统计栏,Vivaldi 5.2 还提供了其他改进,比如:
+
+ * 支持把 [Qwant][6] 搜索引擎作为默认的搜索引擎。
+ * 优化了标签的拖/放操作。
+ * 改进了 Vivaldi Mail、Calendar 和 Feed Reader 的功能。
+
+若想了解更多信息,你可以参考 [官方发布公告][7]。
+
+### 下载 Vivaldi 5.2
+
+你可以从它的官方网站下载最新的发布包(deb/rpm)来安装。
+
+> [下载 Vivaldi 5.2][8]
+
+如果你是通过官方的仓库 [在 Linux 上安装的 Vivaldi][9],它可能已经在你的软件更新列表里了,即使现在没有,你也应该很快就能在软件更新列表中找到它。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/vivaldi-5-2-release/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][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/lujun9972
+[1]: https://itsfoss.com/best-browsers-ubuntu-linux/
+[2]: https://news.itsfoss.com/wp-content/uploads/2022/04/vivaldi-side-panel.jpg
+[3]: https://youtu.be/hhGQUO8u9iQ
+[4]: https://news.itsfoss.com/wp-content/uploads/2022/04/Privacy-statistics-vivaldi-5-2.jpg
+[5]: https://youtu.be/MAY5s_MpnxY
+[6]: https://www.qwant.com/
+[7]: https://vivaldi.com/press/vivaldi-adds-a-reading-list-panel-shows-statistics-on-blocked-trackers-and-ads/
+[8]: https://vivaldi.com/download/
+[9]: https://itsfoss.com/install-vivaldi-ubuntu-linux/
diff --git a/published/202204/20220407 Xubuntu 22.04 LTS - New Features and Release Details.md b/published/202204/20220407 Xubuntu 22.04 LTS - New Features and Release Details.md
new file mode 100644
index 0000000000..6cceb7c1d4
--- /dev/null
+++ b/published/202204/20220407 Xubuntu 22.04 LTS - New Features and Release Details.md
@@ -0,0 +1,85 @@
+[#]: subject: "Xubuntu 22.04 LTS – New Features and Release Details"
+[#]: via: "https://www.debugpoint.com/2022/04/xubuntu-22-04-lts/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14478-1.html"
+
+Xubuntu 22.04 LTS - 新功能和发布细节
+======
+
+> Xubuntu 22.04 LTS(Jammy Jellyfish)的新功能列表以及关于该版本的其他信息。
+
+![Xubuntu 22.04 Desktop][1]
+
+### Xubuntu 22.04 LTS - 新功能
+
+Xubuntu 22.04 LTS 采用的是 Linux 内核 5.15,基础软件包来自 Ubuntu 22.04 LTS。除此以外,默认的桌面环境版本是 Xfce 4.16。Xfce 桌面环境自 2020 年 12 月发布以来,没有发布任何重要的版本。
+
+尽管如此,自 Xubuntu 21.10(最后一个版本)就在使用的 Xfce 桌面 4.16 版本,桌面组件和原生应用得到了一些改进和错误修复。
+
+也许这个版本的重要工作是在 Greybird 主题中对 GTK4 和 libhandy 的初步支持(通过 3.23.1 版本)。这意味着来自 GNOME 生态系统的 GTK4 应用在 Xubuntu 的主题下看起来不错。
+
+### 应用更新
+
+默认的文件管理器 Thunar 4.16.10 增加了一些性能改进,包括回归修复、翻译更新和一些变化。虽然在翻阅更新日志的时候,我找不到任何对用户可见的实质性报告。但如果你有兴趣,你可以 [在这][2] 详细阅读新闻。
+
+事实上,Thunar 现在正在和 Xfce 4.17 一起开发,包含了一些令人兴奋的变化。但不幸的是,我们都需要在短期支持版本中等待,因为要在长期支持版本中实现这些功能还为时过早。
+
+除此之外,Xfce Terminal 在这个版本中仍然是 0.8.10。与 Thunar 类似,Xfce Terminal 1.0.0 重大更新也不会在这个长期支持版本中出现。
+
+除了这两个,其他的桌面组件仍然是最后的稳定版本,包括 Xfce Panel 4.16.3、Xfce Window Manager 4.16.1 和 Xfce Desktop 4.16。值得一提的是,Xfce 仍在进行 GTK4 的过渡工作,目前还没有太明确的时间表。
+
+此外,原生应用的版本被提升到最新的稳定迭代版本。但一个重大变化是,继 Ubuntu 之后, Xubuntu 22.04 中的 Firefox 可执行文件现在是 Snap 版本。因此,在理想情况下,用户不会感觉到任何差异,但由于其沙盒性质,可能会在扩展程序和其他工具方面面临一些问题。
+
+除此之外,Xubuntu 22.04 还期望从社区竞赛中获得一些漂亮的壁纸,其中一个作为默认壁纸。竞赛结果还没有出来。不过,你可以在 [本页面][4] 上找到一些令人兴奋的投稿。
+
+### 总结和下载
+
+总结一下,主要的核心框架、应用和它们的版本都在下面。
+
+ * GNOME 42
+ * GTK 3.24.32
+ * MATE 1.26
+ * Xfce 4.16
+ * Firefox 99
+ * Thunderbird 91.8
+ * Atril Document Viewer 1.26
+ * Engrampa Archive Manager 1.26
+ * Ristretto Image Viewer 0.12.2
+ * LibreOffice 7.3.x
+ * Catfish 4.16.3
+ * Mousepad 0.5.8
+
+最后,要下载 Xubuntu 22.04 的 BETA 版本,请参考下面的 ISO 文件的链接。你可以尝试在虚拟机上安装或在物理系统中尝试。
+
+ * [xubuntu-22.04-beta-desktop-amd64.iso][5]
+ * [其他下载选项包括torrent, checksum][6]
+
+_信息来自 [官方更新日志][7]_
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/04/xubuntu-22-04-lts/
+
+作者:[Arindam][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://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lujun9972
+[1]: https://www.debugpoint.com/wp-content/uploads/2022/04/Xubuntu-22.04-Desktop-1024x575.jpg
+[2]: https://archive.xfce.org/src/xfce/thunar/4.16/
+[4]: https://contest.xubuntu.org/wallpaper_contest/xubuntu-22-04-community-wallpaper-contest/?action=view
+[5]: https://cdimage.ubuntu.com/xubuntu/releases/22.04/beta/xubuntu-22.04-beta-desktop-amd64.iso
+[6]: https://cdimage.ubuntu.com/xubuntu/releases/22.04/beta/
+[7]: https://wiki.xubuntu.org/releases/22.04/release-notes
+[8]: https://t.me/debugpoint
+[9]: https://twitter.com/DebugPoint
+[10]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[11]: https://facebook.com/DebugPoint
diff --git a/published/202204/20220408 Create Your Own Custom Light and Dark Wallpaper for GNOME.md b/published/202204/20220408 Create Your Own Custom Light and Dark Wallpaper for GNOME.md
new file mode 100644
index 0000000000..98df548847
--- /dev/null
+++ b/published/202204/20220408 Create Your Own Custom Light and Dark Wallpaper for GNOME.md
@@ -0,0 +1,110 @@
+[#]: subject: "Create Your Own Custom Light and Dark Wallpaper for GNOME"
+[#]: via: "https://www.debugpoint.com/2022/04/custom-light-dark-wallpaper-gnome/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "robsean"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14471-1.html"
+
+如何创建你的自定义 GNOME 深浅壁纸
+======
+
+
+
+> 一份简单的指南:如何针对 GNOME 桌面环境来创建你的自定义的深色和浅色壁纸。
+
+[GNOME 42][1] 将备受期待的深浅主题带到 GNOME 桌面环境。它也带来壁纸的深色和浅色版本,当你切换深色或浅色主题时,它会自动地转换。
+
+因此,默认情况下,GNOME 给予你一套预配置的深色和浅色壁纸。但是如果你想要在主题更改时自动地转换成另一种不同的壁纸要怎么做呢?
+
+下面是如何在 GNOME 中配置和创建你自己的深浅壁纸的方法。
+
+### 如何针对 GNOME 桌面环境来创建自定义的深浅壁纸
+
+第一,确保你手边有两个版本的壁纸。一般来说,它们应该是标准的 PNG 或 JPG 图像文件。例如,我们针对这个示例使用下面的两张壁纸。
+
+![Sample light and dark wallpaper for demo][2]
+
+但是,如果你没有合适的深浅壁纸,或者正在查找更多的壁纸,在这篇指南的结尾,我将让你知道如何获取它们,或者如何自己准备它们。请跟着我阅读。
+
+第二,我们需要为我们自己创建一个模式文件。壁纸的自动更换是由一个名为 `adwaita.xml` 的 XML 文件处理的,它定义了特定的深色和浅色的背景标记。因此,我们将为壁纸创建我们自己的 XML 文件。
+
+为做到这一点,[从 GitLab 复制][3] `adwaita.xml` 的内容,并创建一个新的 XML 文件。你能够会在这个文件中看到两个标记 – `filename` 和 `filename-dark`。这两个 XML 标记包含这两个壁纸的完整的限定的路径。现在,在这两个标记下添加你的图像文件的路径,如我下图所示。。
+
+![Change the XML file][4]
+
+第三,把这个文件保存到 `/home//.local/share/gnome-background-properties`,(请将 `` 替换为你的用户名)文件名任意。如果这里没有 `gnome-background-properties` 目录,就创建它。针对这个示例,我使用 `my_cool_backgrounds.xml` 文件名。
+
+![Save the file][5]
+
+这样,你就准备好了所有的东西。最后,打开 “设置Settings” 并转到 “外观Appearance” 标签页,你应该会看到一个新的壁纸选项。
+
+选择你自己的自定义的深浅壁纸,尽情享受。
+
+![Appearance tab has now your own custom light and dark wallpaper][7]
+
+### 如何下载或制作你自己的动态壁纸
+
+当然,你必然会想,谁有时间去查找和创建壁纸的日夜版本?这里有一些网站来向你提供预制好的动态壁纸,你可以轻松地下载和安装。
+
+我推荐的一个网站是 [dynamicwallpaper.club][8] ,它有一些高达 6K 的极好的高质量的壁纸,可用于 macOS。你可以轻松地下载它们。
+
+此外,如果你打算从上述网站下载,请记住该网站的图像文件是 [heic][9] 格式的,因为这个网站是针对 macOS 的。高效视频编码High-Efficiency Video Coding(HEIC)是苹果的专有的 HEIF(高效图像文件High-Efficiency Image File)专有版本。
+
+那么,如何在 Linux 系统中转换它们? 好吧,在 Ubuntu 或 Fedora Linux 中,你需要一个驱动程序来查看和转换动态的 heic 图像文件。打开一个终端,运行下面的命令开安装驱动程序。
+
+Ubuntu 用户 –
+
+```
+sudo apt install heif-gdk-pixbuf
+```
+
+Fedora 用户 –
+
+```
+sudo dnf install libheif
+```
+
+只针对使用 KDE Plasma 的 Fedora/Ubuntu 用户(没有这个插件的帮助,Plasma 应用程序就不能打开 heic 格式的图像文件):
+
+```
+sudo apt install qt-heif-image-plugin
+sudo dnf install qt-heif-image-plugin
+```
+
+最后,使用你喜欢的图像查看器打开 heic 图像文件,并将其保存为 JPG/PNG 图像文件。
+
+最好,不要忘记在下面的评论区告诉我,你是否能够针对 GNOME 桌面环境来创建你自己的自定义的深浅壁纸了。
+
+![Custom Light and Dark wallpaper in GNOME – transition][10]
+
+感谢阅读。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/04/custom-light-dark-wallpaper-gnome/
+
+作者:[Arindam][a]
+选题:[lujun9972][b]
+译者:[robsean](https://github.com/robsean)
+校对:[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/lujun9972
+[1]: https://www.debugpoint.com/2022/03/gnome-42-release/
+[2]: https://www.debugpoint.com/wp-content/uploads/2022/04/Sample-light-and-dark-wallpaper-for-demo.jpg
+[3]: https://gitlab.gnome.org/GNOME/gnome-backgrounds/-/tree/main/backgrounds
+[4]: https://www.debugpoint.com/wp-content/uploads/2022/04/Change-the-XML-file-1024x568.jpg
+[5]: https://www.debugpoint.com/wp-content/uploads/2022/04/Save-the-file-1024x548.jpg
+[6]: https://www.debugpoint.com/2021/12/gnome-text-editor/
+[7]: https://www.debugpoint.com/wp-content/uploads/2022/04/Apperance-tab-has-now-your-own-custom-light-and-dark-wallpaper-1024x657.jpg
+[8]: https://dynamicwallpaper.club
+[9]: https://en.wikipedia.org/wiki/High_Efficiency_Image_File_Format
+[10]: https://www.debugpoint.com/wp-content/uploads/2022/04/Custom-Light-and-Dark-wallpaper-in-GNOME-transition-1024x556.gif
+[11]: https://t.me/debugpoint
+[12]: https://twitter.com/DebugPoint
+[13]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[14]: https://facebook.com/DebugPoint
diff --git a/published/202204/20220409 Firefox 99 Brings These Two Changes for Linux Users.md b/published/202204/20220409 Firefox 99 Brings These Two Changes for Linux Users.md
new file mode 100644
index 0000000000..3540ac1777
--- /dev/null
+++ b/published/202204/20220409 Firefox 99 Brings These Two Changes for Linux Users.md
@@ -0,0 +1,73 @@
+[#]: subject: "Firefox 99 Brings These Two Changes for Linux Users"
+[#]: via: "https://news.itsfoss.com/firefox-99-release/"
+[#]: author: "Shobhit Singh https://news.itsfoss.com/author/shobhit/"
+[#]: collector: "lujun9972"
+[#]: translator: "zd200572"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14455-1.html"
+
+Firefox 99 为 Linux 用户带来了两点改变
+======
+
+> 最新发布的 Firefox 浏览器为桌面 Linux 用户带来了两点改变。
+
+
+
+Mozilla 的 Firefox 是最受欢迎的开源浏览器之一,这也是它在许多 Linux 发行版(如 Mint 和 Ubuntu)中用作默认浏览器的原因。
+
+最近,Mozilla 发布了 Firefox 99.0 版本,为 Linux 版本带来了新的安全性和 UI 特性。
+
+### 更新了什么呢?
+
+ * 现在,你可以使用键盘快捷键 `n` 在阅读器模式ReaderMode中切换“讲述Narrate”模式。
+ * 你可以在 PDF 查看器中找到对搜索音调符号的附加支持。
+ * 添加了 GTK 叠加滚动条。
+ * Linux 沙箱已得到加强:暴露于 Web 内容的进程不再有权访问 X Window 系统(X11)。
+ * Firefox 现在在德国和法国支持信用卡自动填充和捕获。
+
+在本文中,我们将深入研究这些内容,并进一步扩展Linux版本特定的变化。
+
+### GTK 叠加滚动条
+
+这个版本的 Firefox 为滚动条做了一个新的、时尚的、更窄的设计。如果不在使用中,滚动条也会隐藏,这让浏览器给人以更现代和优雅的感觉。
+
+![][1]
+
+但在稳定版中这个特性默认没有启用。开启这个特性,转到 `about:config`,搜索 `widget.gtk.overlay-scrollbars.enabled`。这个值默认是 `false`,双击它将设置为 `true`,这将启用新的滚动条。
+
+![][2]
+
+### Linux 沙箱得到加强
+
+这是一个安全更新,目的是将 Firefox 进程与系统的其余部分隔离开来。沙箱环境是一个应用可以在不影响任何外部应用,或与任何外部应用程序交互的情况下运行的环境。这个特别的更新禁止了 Web 进程和 X 服务器的任何互动。X 服务器(X11)是大多数 Linux 发行版中使用的默认 GUI 服务器。
+
+Snap、Flatpak 和 Appimage 已经提供了其应用程序的沙盒版本。如果你是一个 Snap 或者 Appimage 用户,这是个好消息。然而,有 [报道称][3] 这会破坏硬件加速功能。
+
+_硬件加速是应用程序将某些任务加载到硬件的过程,从而提高性能和提高硬件使用效率。糟糕的硬件加速是 Linux 上电池性能不佳的原因之一。_
+
+### 结束语
+
+总之,这是 Firefox 最后一次大的两位数版本号更新,很高兴看到 Firefox 对隐私和安全的一贯决心。此版本中未解决的一些问题,例如与硬件加速相关的错误,希望在下次更新中得到解决。
+
+这就把我们带到了 Firefox 100。每日构建版本的 Firefox 100 已经发布。完整的稳定版本将在 2022.5.3 发布。它承诺提供诸如画中画格式的字幕和改进的硬件加速等功能。你可以通过在每日构建中的 `about:preferences#experimental` 启用 `Firefox 100 User-Agent String` 来尝试 Firefox 的这些实验性版本。
+
+想要了解更多?查看一些不为人知的 [Firefox 功能,以获得更好的浏览体验][4]。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/firefox-99-release/
+
+作者:[Shobhit Singh][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/zd200572)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://news.itsfoss.com/author/shobhit/
+[b]: https://github.com/lujun9972
+[1]: https://news.itsfoss.com/wp-content/uploads/2022/04/Before-After_gtk_overlay-scrollbars-edited.png
+[2]: https://news.itsfoss.com/wp-content/uploads/2022/04/Overlay-scrollbar-config-option.png
+[3]: https://bbs.archlinux.org/viewtopic.php?id=275415
+[4]: https://itsfoss.com/firefox-useful-features/
diff --git a/published/202204/20220409 How to Activate the Dark and Light Wallpaper Variants in GNOME 42.md b/published/202204/20220409 How to Activate the Dark and Light Wallpaper Variants in GNOME 42.md
new file mode 100644
index 0000000000..947071526f
--- /dev/null
+++ b/published/202204/20220409 How to Activate the Dark and Light Wallpaper Variants in GNOME 42.md
@@ -0,0 +1,102 @@
+[#]: subject: "How to Activate the Dark and Light Wallpaper Variants in GNOME 42"
+[#]: via: "https://itsfoss.com/dark-light-wallpaper-gnome/"
+[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14472-1.html"
+
+如何启用 GNOME 42 中的深色和浅色双主题壁纸
+======
+
+GNOME 42 的主要 [功能][1] 之一就是提供了深色和浅色模式的双主题壁纸。
+
+![GNOME 42 中的深色和浅色壁纸][2]
+
+基本上,有了这个功能,当你切换到浅色模式时,系统就会使用浅色版本的壁纸。而当你 [在 GNOME 中切换到深色模式][3]时,壁纸就会切换成深色的版本。
+
+下面是一个双主题壁纸的例子,你可以比较一下:
+
+![GNOME 中的深色和浅色双主题壁纸:浅色][4]
+
+![GNOME 中的深色和浅色双主题壁纸:深色][4a]
+
+这种双主题壁纸可在“设置Settings > 外观Appearance”的“背景Background”部分中启用。
+
+然而,在某些情况下,设置中可能没有双主题壁纸,你可能会看到一个空的“背景”部分,像下面这样:
+
+![没有双主题壁纸][5]
+
+这是我的同事 Sreenath 在更新他的 Endeavour OS 系统、得到新的 GNOME 42 桌面时注意到的情况。
+
+### 在 GNOME 42 中启用深色和浅色双主题壁纸
+
+如果你也在 GNOME 42 中面临同样的情况,我这里有一个快速而简单的解决方案。你只需要使用软件包管理器,安装 `gnome-backgrounds` 软件包,问题就会得到解决。
+
+首先,请 [检查桌面环境细节][6],确保你正在运行 GNOME 42。你可以在系统设置的“关于About”部分查看你的桌面版本。
+
+当你确定你的系统安装了 GNOME 42,请继续执行剩下的步骤。
+
+对于 [基于 Arch 的发行版][7],请使用 [pacman 命令][8],如下:
+
+```
+sudo pacman -S gnome-backgrounds
+```
+
+等待命令执行完毕。
+
+![][9]
+
+你不需要重新启动,甚至不需要注销。改动将立即生效。
+
+你只需进入“设置Settings > 外观Appearance”,然后选择“背景Background”部分,应该就会看到各种具有双重模式的壁纸。
+
+选择其中的一对,它就会根据你的系统主题来设置图像。
+
+![GNOME 中的深色和浅色壁纸][10]
+
+太好了。但你只能得到 GNOME 团队或者发行版的开发者提供的少数双主题壁纸。如果你想拥有一套自己的深色和浅色模式的壁纸呢?那么,你可以自己制作壁纸,只是需要一点调整和耐心。
+
+### 制作你自己的双主题壁纸(针对高级用户)
+
+我假设你知道自己在干什么,你可以搜索下面的步骤,以在深色和浅色双主题壁纸中添加额外的壁纸时:
+
+ * 下载两张图片
+ * 把浅色壁纸重命名为 `image-l.jpg`,把深色壁纸重命名为 `image-d.jpg`
+ * 如果你想让新壁纸对所有用户可用,请在 `/usr/share` 目录下新建一个 `gnome-background-properties` 目录。否则,如果你只想自己使用,请在 `.local/share` 中新建这个目录
+ * 将这段 [GNOME 官方 GitLab 仓库中的代码][11] 拷贝到文本编辑器中,并在 `` 标签中分别修改相应的浅色或深色图片的位置
+ * 将其保存在你之前创建的 `gnome-background-properties` 目录下
+ * 现在可以在系统设置里修改背景壁纸了
+
+需要更多帮助吗?WOGUE 有一个很好的视频,里面展示了这些步骤的操作。
+
+
+
+我希望你喜欢这个快速小技巧。祝你体验愉快!
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/dark-light-wallpaper-gnome/
+
+作者:[Abhishek Prakash][a]
+选题:[lujun9972][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[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/lujun9972
+[1]: https://news.itsfoss.com/gnome-42-features/
+[2]: https://itsfoss.com/wp-content/uploads/2022/04/fedora-36-gnome-42-dark-800x450.jpg
+[3]: https://itsfoss.com/fedora-dark-mode/
+[4]: https://itsfoss.com/wp-content/uploads/2022/04/GNOME_Light_Desktop.jpg
+[4a]: https://itsfoss.com/wp-content/uploads/2022/04/GNOME_Dark_Desktop.jpg
+[5]: https://itsfoss.com/wp-content/uploads/2022/04/no-dark-light-wallpaper-in-gnome-800x326.png
+[6]: https://itsfoss.com/find-desktop-environment/
+[7]: https://itsfoss.com/arch-based-linux-distros/
+[8]: https://itsfoss.com/pacman-command/
+[9]: https://itsfoss.com/wp-content/uploads/2022/04/add-dark-light-wallpapers-gnome-800x366.png
+[10]: https://itsfoss.com/wp-content/uploads/2022/04/dark-light-wallpapers-gnome-800x370.jpg
+[11]: https://gitlab.gnome.org/GNOME/gnome-backgrounds/-/blob/main/backgrounds/adwaita.xml.in
diff --git a/published/202204/20220410 10 Best Indie RPG Games for Linux in 2022.md b/published/202204/20220410 10 Best Indie RPG Games for Linux in 2022.md
new file mode 100644
index 0000000000..8391482514
--- /dev/null
+++ b/published/202204/20220410 10 Best Indie RPG Games for Linux in 2022.md
@@ -0,0 +1,195 @@
+[#]: subject: "10 Best Indie RPG Games for Linux in 2022"
+[#]: via: "https://itsfoss.com/best-indie-rpg-games-linux/"
+[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14479-1.html"
+
+2022 年 10 款最佳的 Linux 独立 RPG 游戏
+======
+
+
+无论是在 Windows、Linux 还是 macOS 上,你都能找到很多独立游戏玩。
+
+你有可能会找到十分激动人心的游戏,这些游戏往往是被低估的,这使得探索独立游戏成为了一件令人兴奋的事。
+
+但是,在本文中,我只关注 Linux 平台上最佳的独立(即由小团队开发的)RPG 游戏。
+
+即使你只有一套入门级的游戏硬件也没有关系,大多数独立游戏在许多计算机(甚至只有集成显卡)上都能正常工作。
+
+请注意,本列表包括来自 Steam 的游戏(没有特定的排名顺序),它们有些是免费的,有些则是付费的。
+
+> 如果你是一个狂热的游戏玩家,在游戏上花费了大量的时间和金钱,你应该订阅 Humble Monthly。这个来自 [Humble Bundle][1](这是一个推广链接,请阅读原文站点的 [推广政策][2])的月度订阅计划让你每个月只需花 12 美元就能获得 100 美元的游戏。
+>
+> 并不是所有游戏都能在 Linux 上玩,但这仍然是笔划算的交易,因为你从 Humble Bundle 网站购买任何游戏或书籍都能获得额外的 10% 折扣。
+>
+> 最棒的是,你的每一次购买都是对一个慈善组织的支持。因此,你不仅仅是在玩游戏,你也在为世界带来改变。
+>
+> - [订阅 Humble Monthly][1]
+
+### 1. Valheim
+
+![][3]
+
+Valheim 是一个令人印象深刻的独立游戏,它目前仍处于内测阶段。
+
+这是一个关于探险和生存的游戏,你可以同时与最多 10 名玩家一起玩。当然,你也可以选择自己一个人玩。
+
+对于一个独立开发的游戏来说,它里面的世界看起来美极了,而且随着时间的推移,这个游戏也在不断改进。它是一款付费游戏,在 Steam 上的售价为 19.99 美元,它原生支持 Linux 平台。
+
+> - [Valheim][4]
+
+### 2. Undertale
+
+
+
+Undertale 是一款有趣的 RPG 游戏,你不需要在游戏中杀任何人。你可以利用其战斗系统,通过谈判来摆脱危险。
+
+游戏围绕着一个掉入地下怪物世界的人类而展开。令人惊讶的是,你可以和一个骷髅约会,甚至可以和所有的 boss 成为朋友。
+
+因此,当你开始玩这个游戏时,你会有一个快乐的体验。
+
+> - [Undertal(Steam)][5]
+> - [Humble Bundle 商店][6]
+
+### 3. ARK:Survival Evolved
+
+![][7]
+
+ARK Survival Evolved 是一款生存和探索游戏,它发生在一个美丽环境下,里面有恐龙和其他生物。
+
+为了生存和逃跑,你需要制作、采集资源、狩猎、驯服生物、繁殖它们,以及做更多的事情。
+
+它可能不完全像是一个独立游戏,但它尽力给你一个接近 3A 大作的游戏体验。
+
+> - [ARK: Survival Evolved][8]
+
+### 4. Wildermyth
+
+![][9]
+
+它是一个剧情决策 RPG 游戏,你的战术、战斗以及所做的决定将影响游戏中的世界和人物。
+
+你可以和你的角色们一起对抗邪恶,并跟随他们完成整个职业生涯。它不是一个普通的独立 RPG 游戏,而是一个提供角色深度的游戏,让你沉浸其中。
+
+这个游戏售价为 24.99 美元,可在 Linux 上运行。
+
+> - [Wildermyth][10]
+
+### 5. Mount & Blade:Warband
+
+![][11]
+
+经典的战争动作 RPG 游戏之一,它让你有机会建立一支军队,扩大你的王国,并为王位而战!
+
+虽然它最初是在 2010 年推出的,但是它有几个 DLC 可以供你扩大和探索更多的可玩性。
+
+游戏的基本费用为 9.99 美元。你可以根据需要购买额外的 DLC。
+
+> - [Mount & Blade][12]
+
+### 6. Rakuen
+
+![][13]
+
+Rakuen 是一款有趣的冒险 RPG 游戏,它的主角是一个住在医院里的小男孩。
+
+故事围绕着小男孩通过帮助医院里的邻居来完成挑战,同时还要对付他们在幻想世界里的另一个自己。
+
+男孩的妈妈承诺,只要他完成了所有这些挑战,就会护送他到他最喜欢的故事书中的幻想世界。互动过程中,你的情绪会像过山车一样,经历快乐、悲伤、思考和难忘的回忆。
+
+该游戏在 Steam 上的价格为 9.9 美元。
+
+> - [Rakuen][14]
+
+### 7. Darkwood
+
+![][15]
+
+Darkwood 是一款独一无二的生存恐怖 RPG 游戏,它采用上帝视角。
+
+你可能认为它会是一个上帝视角的基本体验,但令人印象深刻的是,它设法提供了一个沉浸式的体验,在这个游戏中,你的决定至关重要。这个自由漫游的世界中没有任何任务标记,所以它会是一个具有挑战性的体验。
+
+> - [Darkwood][16]
+
+### 8. WAFKU
+
+![][17]
+
+WAFKU 是一个充满动作元素的大型多人在线 RPG 宇宙。
+
+它以一组有趣的人物为特色,并给人以回合制战术战斗的奇妙体验。每个等级都有一套独特的技能。而且,你会在游戏中发现所有的 18 种技能。
+
+因此,你可以探索/选择适合你的游戏风格。
+
+你可以建造自己的世界,控制生态系统,还可以参与政治生活。听起来很有意思,不是吗?
+
+> - [WAFKU][18]
+
+### 9. Mechajammer
+
+![][19]
+
+Mechajammer 是一款有趣的 RPG 游戏,它具有令人兴奋的视觉效果。
+
+它采用了回合制赛博朋克的设定,因此你会有一种新鲜的体验。你可以选择一辆车或武器,挑选一个帮派的支线任务,以及做其他一些事情。
+
+它很好的融合了开放世界探索和回合制战斗,这对你来说会是个挑战。你可以做很多方面的定制,包括调整角色的能力。
+
+它或许不是一个受欢迎的选择,但它是一个硬核的经典风格的 RPG 游戏,因此口碑还是不错的。
+
+> - [Mechajammer][20]
+
+### 10. Finding Paradise
+
+![][21]
+
+玩够了战斗/动作游戏?来点故事驱动的 RPG 体验如何?
+
+Finding Paradise 是一款很棒的故事驱动型 RPG 游戏,它围绕着实现一个垂死者的遗愿而展开。
+
+> - [Finding Paradise][22]
+
+### 总结
+
+以上是在 Steam 上为 Linux 用户提供的一些评价最好的 RPG 游戏。
+
+事实上,Linux 上还有非常多的独立 RPG 游戏,本文只列举了其中几个我们最喜欢的。你有喜欢的游戏吗?请在下面的评论区中告诉我们吧!
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/best-indie-rpg-games-linux/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://itsfoss.com/author/ankush/
+[b]: https://github.com/lujun9972
+[1]: https://www.humblebundle.com/?partner=itsfoss
+[2]: https://itsfoss.com/affiliate-policy/
+[3]: https://itsfoss.com/wp-content/uploads/2022/03/valheim-linux.jpg
+[4]: https://store.steampowered.com/app/892970/Valheim/
+[5]: https://store.steampowered.com/app/391540/Undertale/
+[6]: https://www.humblebundle.com/store/undertale?partner=itsfoss
+[7]: https://itsfoss.com/wp-content/uploads/2022/03/ark-survival-linux.jpg
+[8]: https://store.steampowered.com/app/346110/ARK_Survival_Evolved/
+[9]: https://itsfoss.com/wp-content/uploads/2022/03/wildermyth.jpg
+[10]: https://store.steampowered.com/app/763890/Wildermyth/
+[11]: https://itsfoss.com/wp-content/uploads/2022/03/mount-blade-linux.jpg
+[12]: https://store.steampowered.com/app/48700/Mount__Blade_Warband/
+[13]: https://itsfoss.com/wp-content/uploads/2022/03/rakeun-linux.jpg
+[14]: https://store.steampowered.com/app/559210/Rakuen/
+[15]: https://itsfoss.com/wp-content/uploads/2022/03/darkwood-linux.jpg
+[16]: https://store.steampowered.com/app/274520/Darkwood/
+[17]: https://itsfoss.com/wp-content/uploads/2022/03/wafku-linux.jpg
+[18]: https://store.steampowered.com/app/215080/WAKFU/
+[19]: https://itsfoss.com/wp-content/uploads/2022/03/mechajammer-linux.jpg
+[20]: https://store.steampowered.com/app/485400/Mechajammer/
+[21]: https://itsfoss.com/wp-content/uploads/2022/03/finding-paradise.jpg
+[22]: https://store.steampowered.com/app/337340/Finding_Paradise/
diff --git a/published/202204/20220410 Kubuntu 22.04 LTS - New Features and Release Details.md b/published/202204/20220410 Kubuntu 22.04 LTS - New Features and Release Details.md
new file mode 100644
index 0000000000..47a2ec9f18
--- /dev/null
+++ b/published/202204/20220410 Kubuntu 22.04 LTS - New Features and Release Details.md
@@ -0,0 +1,69 @@
+[#]: subject: "Kubuntu 22.04 LTS – New Features and Release Details"
+[#]: via: "https://www.debugpoint.com/2022/04/kubuntu-22-04-lts/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14483-1.html"
+
+Kubuntu 22.04 LTS - 新功能和发布细节
+======
+
+> Kubuntu 22.04 LTS(Jammy Jellyfish)的新功能列表以及关于该版本的其他信息。
+
+![Kubuntu 22.04 LTS Desktop][1]
+
+### Kubuntu 22.04 LTS 新功能
+
+也许在可用性、外观和稳定性方面,最受欢迎的基于 Ubuntu 的 Linux 发行版是 Kubuntu。Kubuntu 22.04 LTS 采用的是 Linux 内核 5.15 LTS,采用同 Ubuntu 22.04 LTS 一样的基础软件包。此外,它还带有 [KDE Plasma 5.24.x 系列][2],这是 Plasma 桌面当前的 LTS 版本。
+
+此外,KDE Plasma 5.24.x 系列是 KDE Plasma 桌面的第 26 个版本,带来了一些令人惊叹的功能,如概览效果、新通知等。尽管到今天为止它还不是最新的 Plasma,但它是最新的稳定版本。
+
+另一方面,如果你将上一个 Kubuntu 20.04 LTS 与这个版本相比较,你可以期待看到一大堆变化。首先,Kubuntu 20.04 Focal Fossa 带有 KDE Plasma 5.18,而如今是 5.24 系列。你可以看到大量的新功能和一个完全不同的桌面,做了更好的无障碍和性能的改进。其次,KDE Plasma 5.24 由 Qt 5.15.2 和 KDE Frameworks 5.90 支持,这也是自上一个 Kbuntu Focal Fossa 以来的一个跳跃。
+
+毋庸置疑,你能体验到的重要功能是 Plasma 桌面新设计的概览屏幕。你可以使用 `Meta+W` 组合键启动它,而且支持多个虚拟屏幕。新的概览屏幕会让你想起 GNOME 的应用视图。该视图在顶部给你提供了虚拟桌面的缩略图,在中间,你可以看到虚拟桌面打开的窗口列表。它还为你提供了一个搜索选项,可以使你更快地找到你的应用。
+
+![Kubuntu 22.04 Overview screen][3]
+
+这个版本的 Plasma 还带来了一个自定义的强调色选项,会触发你对美丽桌面的灵感。除此之外,更新的 Breeze Classic 主题和重新设计的字体大小使这个版本成为 LTS 发布中的一个完美版本。
+
+### 其他变化
+
+由于 Kubuntu 22.04 LTS 基于 [Ubuntu 22.04][5],其核心应用和软件包给你提供了他们稳定版本中最好的东西,总结如下:
+
+ * KDE Plasma 5.24.x
+ * KDE Frameworks 5.92
+ * Qt 5.15.x
+ * Firefox 99
+ * Thunderbird 91.8
+ * LibreOffice 7.3.x
+
+最后,要下载这个版本的 BETA 版本,请参考下面的 ISO 文件链接。你可以尝试在虚拟机上安装或在物理系统中尝试。
+
+ * [kubuntu-22.04-beta-desktop-amd64.iso][6]
+ *
+
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/04/kubuntu-22-04-lts/
+
+作者:[Arindam][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://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lujun9972
+[1]: https://www.debugpoint.com/wp-content/uploads/2022/04/Kubuntu-22.04-LTS-Desktop-1024x580.jpg
+[2]: https://www.debugpoint.com/2022/03/kde-plasma-5-24-review/
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/04/Kubuntu-22.04-Overview-screen-1024x580.jpg
+[5]: https://www.debugpoint.com/2022/01/ubuntu-22-04-lts/
+[6]: http://cdimage.ubuntu.com/kubuntu/releases/22.04/beta/kubuntu-22.04-beta-desktop-amd64.iso
+[7]: https://t.me/debugpoint
+[8]: https://twitter.com/DebugPoint
+[9]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[10]: https://facebook.com/DebugPoint
diff --git a/published/202204/20220412 A list of new(ish) command line tools.md b/published/202204/20220412 A list of new(ish) command line tools.md
new file mode 100644
index 0000000000..be3f3450c8
--- /dev/null
+++ b/published/202204/20220412 A list of new(ish) command line tools.md
@@ -0,0 +1,180 @@
+[#]: subject: "A list of new(ish) command line tools"
+[#]: via: "https://jvns.ca/blog/2022/04/12/a-list-of-new-ish--command-line-tools/"
+[#]: author: "Julia Evans https://jvns.ca/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14488-1.html"
+
+新式 Linux 命令行工具大全
+======
+
+
+
+嗨!今天我 [在 twitter][1] 询问有没有一些像 `ripgrep`、`fd`、`fzf`、`exa` 及 `bat` 之类的新式命令行工具。
+
+我收到了一大堆回复,都是我没有听说过的工具,所以我想我应该在这里列出一个清单。另外,很多人还指出有一个 [modern-unix][2] 的列表。
+
+### 标准工具的替代物
+
+ * [ripgrep][3]、[ag][4]、[ack][5] (`grep`)
+ * [exa][6]、[lsd][7] (`ls`)
+ * [mosh][8] (`ssh`)
+ * [bat][9] (`cat`)
+ * [delta][10] (`git` 分页器)
+ * [fd][11] (`find`)
+ * [drill][12]、[dog][13] (`dig`)
+ * [duf][14] (`df`)
+ * [dust][15]、`ncdu` (`du`)
+ * [pgcli][16] (psql)
+ * [btm][17]、[btop][18]、[glances][19]、[gtop][20]、[zenith][21] (`top`)
+ * [tldr][22] (类似 `man`)
+ * [sd][23] (`sed`)
+ * [difftastic][24] (`diff`)
+ * `mtr` (`traceroute`)
+ * [plocate][25] (`locate`)
+ * `xxd`、[hexyl][26] (`hexdump`)
+
+### 新的发明
+
+这里有一些不完全是替代标准工具的工具:
+
+ * [z][27]、[fasd][28]、[autojump][29]、[zoxide][30] (使查找文件/改变目录更容易的工具)
+ * [broot][31]、[nnn][32]、[ranger][33] (文件管理器)
+ * [direnv][34] (根据当前目录加载环境变量)
+ * [fzf][35]、[peco][36] (“模糊查找器”)
+ * [croc][37] 和 [magic-wormhole][38] (将文件从一台计算机发送到另一台)
+ * [hyperfine][39] 基准测试
+ * [httpie][40]、[curlie][41]、[xh][42] (用于发出 HTTP 请求)
+ * [entr][43] (当文件改变时运行任意命令)
+ * [asdf][44] (多语言的版本管理器)
+ * [tig][45]、[lazygit][46] (`git` 的交互界面)
+ * [lazydocker][47] (`docker` 的交互式界面)
+ * [choose][48] (基本版的 `awk`/`cut`)
+ * [ctop][49] (容器的 `top`)
+ * [fuck][50] (自动纠正命令行错误)
+ * [tmate][51] (与朋友分享你的终端)
+ * [lnav][52]、[angle-grinder][53] (管理日志的工具)
+ * [mdp][54]、[glow][55] (在终端显示 Markdown 的方法)
+ * `pbcopy`/`pbpaste`(用于剪贴板和标准输入/标准输出之间)可能不是“新的”,但被提到了很多次。你可以使用 `xclip` 在 Linux 上做同样的事情
+
+### JSON/YAML/CSV 工具
+
+ * [jq][57] (一个很好的 JSON 处理工具)
+ * [jc][58] (将各种工具的输出转换成 JSON)
+ * [jo][59] (创建 JSON 对象)
+ * [yq][60] (类似 `jq`,但用于 YAML),还有 [另一个 yq][61]
+ * [fq][62] (类似 `jq`,但用于二进制)
+ * [htmlq][63] (类似 `jq`,但用于 HTML)
+ * [fx][64] (交互式 JSON 工具)
+ * [jless][65] (JSON 分页器)
+ * [xsv][66] (一个用于 CSV 文件的命令行工具,来自 burntsushi)
+ * [visidata][67] (“一个用于表格数据的交互式多功能工具”)
+ * [miller][68] (“像用于 CSV/TSV/JSON/JSON 的 awk/sed/cut/join/sort”)
+
+### grep 工具
+
+ * [pdfgrep][69] (用于 PDF 的 `grep`)
+ * [gron][70] (用于 JSON 的 `grep`)
+ * [ripgrep-all][71] (`ripgrep`,但也用于 PDF、zip、电子书等)
+
+### 不太新的工具
+
+下面是人们提到的一些不那么新的工具,但不那么知名:
+
+ * `pv` (“管道查看程序”,给你一个管道的进度条)
+ * `vidir` (来自 [moreutils][72],可以让你在 `vim` 中批量重命名/删除文件)
+ * `sponge`、`ts`、`parallel` (也来自 moreutils)
+
+### 我的一些最爱
+
+我最喜欢的是 `entr`、`ripgrep`、`git-delta`、`httpie`、`plocate` 和 `jq`,这些都是我已经使用过的。
+
+我也想尝试一下 `direnv`、`btm`、`z`、`xsv` 和 `duf`,但我认为我知道到的最令人兴奋的工具是 `vidir`。
+
+--------------------------------------------------------------------------------
+
+via: https://jvns.ca/blog/2022/04/12/a-list-of-new-ish--command-line-tools/
+
+作者:[Julia Evans][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://jvns.ca/
+[b]: https://github.com/lujun9972
+[1]: https://twitter.com/b0rk/status/1513903221466664962
+[2]: https://github.com/ibraheemdev/modern-unix
+[3]: https://github.com/BurntSushi/ripgrep/
+[4]: https://github.com/ggreer/the_silver_searcher
+[5]: https://github.com/beyondgrep/ack3
+[6]: https://github.com/ogham/exa
+[7]: https://github.com/Peltoche/lsd
+[8]: https://mosh.org/
+[9]: https://github.com/sharkdp/bat
+[10]: https://github.com/dandavison/delta
+[11]: https://github.com/sharkdp/fd
+[12]: https://www.nlnetlabs.nl/projects/ldns/about/
+[13]: https://github.com/ogham/dog
+[14]: https://github.com/muesli/duf
+[15]: https://github.com/bootandy/dust
+[16]: https://www.pgcli.com/
+[17]: https://github.com/ClementTsang/bottom
+[18]: https://github.com/aristocratos/btop
+[19]: https://github.com/nicolargo/glances
+[20]: https://github.com/aksakalli/gtop
+[21]: https://github.com/bvaisvil/zenith
+[22]: https://tldr.sh/
+[23]: https://github.com/chmln/sd
+[24]: https://github.com/Wilfred/difftastic
+[25]: https://plocate.sesse.net/
+[26]: https://github.com/sharkdp/hexyl
+[27]: https://github.com/rupa/z
+[28]: https://github.com/clvv/fasd
+[29]: https://github.com/wting/autojump
+[30]: https://github.com/ajeetdsouza/zoxide
+[31]: https://github.com/Canop/broot
+[32]: https://github.com/jarun/nnn
+[33]: https://github.com/ranger/ranger
+[34]: https://github.com/direnv/direnv
+[35]: https://github.com/junegunn/fzf
+[36]: https://github.com/peco/peco
+[37]: https://github.com/schollz/croc
+[38]: https://github.com/magic-wormhole/magic-wormhole
+[39]: https://github.com/sharkdp/hyperfine
+[40]: https://httpie.io/
+[41]: https://github.com/rs/curlie
+[42]: https://github.com/ducaale/xh
+[43]: https://github.com/eradman/entr
+[44]: https://github.com/asdf-vm/asdf
+[45]: https://github.com/jonas/tig
+[46]: https://github.com/jesseduffield/lazygit
+[47]: https://github.com/jesseduffield/lazydocker
+[48]: https://github.com/theryangeary/choose
+[49]: https://github.com/bcicen/ctop
+[50]: https://github.com/nvbn/thefuck
+[51]: https://tmate.io/
+[52]: https://github.com/tstack/lnav
+[53]: https://github.com/rcoh/angle-grinder
+[54]: https://github.com/visit1985/mdp
+[55]: https://github.com/charmbracelet/glow
+[56]: https://stackoverflow.com/questions/5130968/how-can-i-copy-the-output-of-a-command-directly-into-my-clipboard/41843618#41843618
+[57]: https://stedolan.github.io/jq/
+[58]: https://github.com/kellyjonbrazil/jc
+[59]: https://github.com/jpmens/jo
+[60]: https://github.com/mikefarah/yq
+[61]: https://github.com/kislyuk/yq
+[62]: https://github.com/wader/fq
+[63]: https://github.com/mgdm/htmlq
+[64]: https://github.com/antonmedv/fx
+[65]: https://github.com/PaulJuliusMartinez/jless
+[66]: https://github.com/BurntSushi/xsv
+[67]: https://www.visidata.org/
+[68]: https://github.com/johnkerl/miller
+[69]: https://pdfgrep.org/
+[70]: https://github.com/tomnomnom/gron
+[71]: https://github.com/phiresky/ripgrep-all
+[72]: https://joeyh.name/code/moreutils
diff --git a/published/202204/20220413 Meet Lite XL- A Lightweight, Open-Source Text Editor for Linux Users.md b/published/202204/20220413 Meet Lite XL- A Lightweight, Open-Source Text Editor for Linux Users.md
new file mode 100644
index 0000000000..7912850ba1
--- /dev/null
+++ b/published/202204/20220413 Meet Lite XL- A Lightweight, Open-Source Text Editor for Linux Users.md
@@ -0,0 +1,113 @@
+[#]: subject: "Meet Lite XL: A Lightweight, Open-Source Text Editor for Linux Users"
+[#]: via: "https://itsfoss.com/lite-xl/"
+[#]: author: "Marco Carmona https://itsfoss.com/author/marco/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14497-1.html"
+
+Lite XL:为 Linux 用户提供的轻量级、开源的文本编辑器
+======
+
+> 你是否在寻找一个新的文本编辑器替代品?你应该试试这个轻量、简洁、快速、功能丰富、可扩展性极强的编辑器。
+
+当然,有很多文本编辑器或代码编辑器可以使用。一些流行的包括 Eclipse、[Visual Studio Code][1]、[PyCharm][2]、[Atom][3]、[IntelliJ][4],以及 [Sublime Text][5]。
+
+但是你想尝试一些有趣的东西,完全专注于给你一个极简的体验吗?
+
+来认识一下 Lite XL 编辑器。
+
+说实话,在上周之前我对它一无所知。但是,它以其 **极简主义的设计** 和它 **在编码时有多么快** 成功地惊到了我,但最重要的事实是它与 Visual Studio Code 相似。
+
+所以,在开始之前,让我告诉你,如果你是一个 [Visual Studio Code 粉丝][6],你绝对应该试试 Lite XL。它可能不是绝对的替代品,而是类似使用场景的精简版。
+
+![Showing how Lite XL looks][7]
+
+### Lite XL:用 Lua 编写的轻量级文本编辑器
+
+Lite XL 是一个用 Lua 编写的有趣的开源文本编辑器(特别是为建立轻量级应用而定制)。
+
+它也可用于 Windows、Linux 和 macOS。但是,有这么多 [现代文本编辑器][8],为什么还要有个 Lite XL?
+
+![Lite XL Customize Configuration][9]
+
+通常情况下,大多数时候我们并不关心文本编辑器会消耗我们系统的资源。然而,在创建 Bash、Python 或任何其他类型的脚本时,你会依赖文本编辑器,而它的资源效率越高越好。
+
+当然,文本编辑器并不像其他一些应用那样对资源要求很高。但是,如果这对你很重要的话,我观察到的情况是这样的:
+
+Lite XL 只使用了 **3MB** 的磁盘,并消耗了大约 **20MB** 内存,而 Visual Studio Code 使用将近 550MB 内存。
+
+**你能看到这些类似的编辑器之间的这种奇妙的差别吗?**
+
+不仅仅是资源使用量,它也是高度可定制的。
+
+请注意,在不同的系统配置下,资源占用的统计数字会有所不同。
+
+### Lite XL 的特点
+
+![][10]
+
+根据现有的官方信息,其最受欢迎的一些功能包括:
+
+ * **跨平台:** 它目前可以在 Windows、Linux 和 macOS 上使用。
+ * **轻量级:** 正如我们之前所描述的,它的使用量几乎没有超过 10MB 的内存。
+ * **可扩展:** 作为一个极简的产品,并不意味着不能定制。Lite XL 可以通过一些可用的插件来扩展其功能,例如,[类似 Visual Studio Code 的智能提示][11]。
+ * **多光标编辑:** 在 Lite XL 中,你可以使用多个光标进行编辑,这听起来很美妙。
+ * **集成的终端:** 像 Visual Studio Code 一样,Lite XL 实现了它的终端。
+ * 支持高分辨率显示。
+ * 更多的颜色主题。
+ * 支持硬件加速渲染。
+
+### 如何在 Linux 中安装 Lite XL
+
+Lite XL 为 Linux 发行版提供了一个 AppImage 文件。你可以按照我们的 [AppImage 指南][12] 来开始使用。
+
+你可以在其 [GitHub 仓库][13] 中找到这个 AppImage 文件。
+
+当你前往其 GitHub 发布区,直接进入 “资产Assets” 区并下载 `LiteXL_x86_64.Appimage` 文件。
+
+![Downloading Appimage file][14]
+
+AppImage 文件将被下载到你的下载目录中,因此,在双击该文件之前,请验证它是否允许作为程序执行。
+
+![Verifying execution permissions][15]
+
+这就好了! 现在你可以双击该文件,开始在你的系统中使用 Lite XL。
+
+> [Lite XL][16]
+
+如果你对探索 Lite XL 感兴趣,你可以参与其 [GitHub 仓库][13],访问官方网站,或加入其 [Discord 社区][17]。
+
+你喜欢用什么来编辑文本和代码?你是否专注使用轻量级的程序,或者与你的使用情况无关?请在下面的评论中告诉我你的想法。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/lite-xl/
+
+作者:[Marco Carmona][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://itsfoss.com/author/marco/
+[b]: https://github.com/lujun9972
+[1]: https://itsfoss.com/install-visual-studio-code-ubuntu/
+[2]: https://itsfoss.com/install-pycharm-ubuntu/
+[3]: https://itsfoss.com/install-atom-ubuntu/
+[4]: https://itsfoss.com/install-intellij-ubuntu-linux/
+[5]: https://itsfoss.com/sublime-text-3-linux/
+[6]: https://itsfoss.com/visual-studio-code-vs-atom/
+[7]: https://itsfoss.com/wp-content/uploads/2022/04/lite-xl-editor-screenshot.png
+[8]: https://itsfoss.com/best-modern-open-source-code-editors-for-linux/
+[9]: https://itsfoss.com/wp-content/uploads/2022/04/lite-xl-screenshot-2.png
+[10]: https://itsfoss.com/wp-content/uploads/2022/04/lite-xl-screnshot-1.png
+[11]: https://github.com/lite-xl/lite-xl-lsp
+[12]: https://itsfoss.com/use-appimage-linux/
+[13]: https://github.com/lite-xl/lite-xl
+[14]: https://itsfoss.com/wp-content/uploads/2022/04/Downloading_Appimage_file-800x447.png
+[15]: https://itsfoss.com/wp-content/uploads/2022/04/Verifying_execution_permissions-800x535.png
+[16]: https://lite-xl.com/
+[17]: https://discord.gg/RWzqC3nx7K
diff --git a/published/202204/20220413 Razer and Lambda Team Up to Unveil a Linux Laptop for Deep Learning.md b/published/202204/20220413 Razer and Lambda Team Up to Unveil a Linux Laptop for Deep Learning.md
new file mode 100644
index 0000000000..9f15c1ddeb
--- /dev/null
+++ b/published/202204/20220413 Razer and Lambda Team Up to Unveil a Linux Laptop for Deep Learning.md
@@ -0,0 +1,99 @@
+[#]: subject: "Razer and Lambda Team Up to Unveil a Linux Laptop for Deep Learning"
+[#]: via: "https://news.itsfoss.com/tensorbook-razer-lambda/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "wxy"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14493-1.html"
+
+雷蛇与 Lambda 联手推出用于深度学习的 Linux 笔记本电脑
+======
+
+> 雷蛇与一家专注于深度学习的硬件公司合作,以时尚的外形、昂贵的价格提供了最新和最伟大的产品。
+
+
+
+雷蛇Razer 以其游戏外设和硬件而闻名。
+
+另一方面,Lambda 提供配备了他们的软件栈的工作站、服务器和 GPU 集群,以尽可能方便地促进深度学习。
+
+他们合作推出了一款外观时尚的现代笔记本电脑(由 Ubuntu 20.04 驱动),专为随时随地的深度学习而设计。
+
+它不同于 [其他 Linux 笔记本电脑][1]。
+
+顺便说一句,深度学习是一种机器学习,你通过实例教给计算机学会类似人类处理信息的方式。你可以查看 [维基百科][2] 以了解更多细节。
+
+### Tensorbook:深度学习笔记本电脑
+
+[![][3]](https://youtu.be/wMh6Dhq7P_Q)
+
+Tensorbook 是一款由 Linux 驱动的笔记本电脑,具有最先进的规格,可以帮助你在任何地方高效地进行深度学习训练/开发。而且,Lambda 的软件栈支持各种工具,只需一个命令就能方便地更新 PyTorch、Tensorflow、CUDA 等。
+
+当然,这个名字并不令人意外,因为张量Tensor核心有助于加快机器学习训练/过程。
+
+![][4]
+
+雷蛇没有在这台笔记本电脑上添加任何他们惯用的标志性图案,比如绿色的点缀/颜色、标志或 RGB 元素。好吧,毕竟这是为深度学习而定制的。所以,它不太浮华是公平的。
+
+你只能在盖子上找到 Lambda 主要标志,在屏幕的底边框上找到 Razer x Lambda 的文字。而且,紫色的风格贯穿始终,Lambda 在这里主导了其品牌宣传。
+
+这款笔记本电脑的规格涉及:
+
+ * GPU:GeForce RTX 3080 Max-Q 16 GB VRAM
+ * CPU:Intel i7-11800H
+ * 内存:64 GB 3200 MHz DDR4
+ * 存储:2 TB NVMe PCIe 4.0
+ * 显示:165 Hz 1440p 15.6 英寸
+
+除了可靠的核心配置外,连接选项包括:
+
+ * 3 个 USB 3.2 Gen 2 Type-A 端口
+ * 1 x HDMI 2.1
+ * 1 个 UHS-III SD 卡阅读器
+ * 3.5 毫米耳机/麦克风插孔
+ * 2 个雷电 4 端口
+ * Wi-Fi 6E
+ * 蓝牙 5.2
+
+毋庸置疑,这款笔记本电脑是一个时尚的“动力工厂”,将这些组件容纳于其中。
+
+无论你是专业人士还是初学者,RTX 3080 GPU 应该有足够的能力来帮助你完成深度学习任务。
+
+当然,它不是为游戏而设计的,但以你所拥有的配置以及高刷新率的屏幕,你可以在需要的时候在上面舒适地玩游戏。
+
+![][5]
+
+其机器学习训练基准声称,它远远领先于 M1 Max 芯片。
+
+因此,你在训练模型方面不会有任何问题。
+
+### 定价和可用性
+
+这是一款高端产品,所以价格标签也一样高端,起价为 **3499 美元**。你可以为企业环境定制它,以便安装上 Windows 10 和 Ubuntu。
+
+如果你支付额外的费用,还可以获得延长保修和高级支持。
+
+你可以在 Lambda 的官方网站上定制并进行购买。
+
+> [Tensorbook][6]
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/tensorbook-razer-lambda/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][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/lujun9972
+[1]: https://itsfoss.com/get-linux-laptops/
+[2]: https://en.wikipedia.org/wiki/Deep_learning
+[3]: https://i.ytimg.com/vi/wMh6Dhq7P_Q/hqdefault.jpg
+[4]: https://news.itsfoss.com/wp-content/uploads/2022/04/tensorbook-1.jpg
+[5]: https://news.itsfoss.com/wp-content/uploads/2022/04/tensorbook-2.jpg
+[6]: https://lambdalabs.com/deep-learning/laptops/tensorbook
diff --git a/published/202204/20220414 LibreWolf vs Firefox- Comparing the Privacy Heroes of Open-Source Browsers.md b/published/202204/20220414 LibreWolf vs Firefox- Comparing the Privacy Heroes of Open-Source Browsers.md
new file mode 100644
index 0000000000..b2ece30ce1
--- /dev/null
+++ b/published/202204/20220414 LibreWolf vs Firefox- Comparing the Privacy Heroes of Open-Source Browsers.md
@@ -0,0 +1,173 @@
+[#]: subject: "LibreWolf vs Firefox: Comparing the Privacy Heroes of Open-Source Browsers"
+[#]: via: "https://itsfoss.com/librewolf-vs-firefox/"
+[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14518-1.html"
+
+LibreWolf vs Firefox:谁是真的隐私英雄
+======
+
+
+
+Firefox 是最好的跨平台 [开源网页浏览器][1] 之一。
+
+更不用说,它是那些基于 Chromium 的浏览器的唯一可行的替代品(也许?)
+
+LibreWolf 是另一个有趣的选择,它最初是 Firefox 浏览器的一个复刻,试图比 Firefox 浏览器做得更好,以增强开箱即用的隐私/安全性。
+
+但是,选择 LibreWolf 而不是 Firefox 真的有用吗?有哪些不同之处?让我们来看一看。
+
+### 用户界面
+
+鉴于 [LibreWolf][2] 是 Firefox 的一个复刻,其用户界面是相同的,只是有一些细微的变化。
+
+![Firefox UI][3]
+
+例如,它在书签菜单中没有到 Firefox 网站的链接,并且去除了 “添加到 PocketAdd to Pocket” 按钮。
+
+取而代之的是,你可以在地址栏的右边找到一个扩展的图标和下载管理器。
+
+![LibreWolf UI][4]
+
+是的,你不再需要前往菜单来访问下载的内容。
+
+如果你认为 Firefox 中的额外功能令人烦恼,那么 LibreWolf 应该是一种干净的体验。
+
+### 搜索供应商
+
+默认情况下,Firefox 使用谷歌作为其搜索引擎,因为它们是官方合作伙伴,也就是说,谷歌付费成为了默认搜索引擎。
+
+![][5]
+
+虽然你可以很轻松地将默认的搜索供应商改为 DuckDuckGo、Startpage 或其他任何东西,但默认的搜索供应商对大多数用户来说仍然很重要。
+
+而对于 LibreWolf,它的默认的搜索引擎是 DuckDuckGo。众所周知,它是最好的尊重隐私的搜索引擎之一。
+
+![][6]
+
+应该注意的是,注重隐私的搜索引擎在某些使用情况下可能不如谷歌好。因此,如果搜索引擎的选择对你来说并不是个问题,Firefox 浏览器可以说是很好。
+
+但是,如果你想对自己的搜索历史保密,LibreWolf 的默认搜索供应商肯定是一个更好的选择。
+
+### 强化隐私
+
+Mozilla Firefox 具有令人难以置信的可定制性。如果你想付出努力,你可以在 Firefox 上增强你的数字隐私。
+
+然而,如果你想避免投入大量时间来调整 Firefox 的体验,LibreWolf 可能是一个不错的选择。
+
+LibreWolf 具有一些开箱即用的最佳设置,以确保你摆脱网上的跟踪器,以获得安全的在线体验。
+
+例如,它的默认带有 UBlock 内容拦截器,以消除跟踪你在线活动的跟踪器/脚本。其默认的搜索引擎是 DuckDuckGo,在一定程度上也有帮助。
+
+![][7]
+
+此外,LibreWolf 还启用了 Firefox 增强跟踪保护的严格模式。换句话说,它可以积极地阻止跟踪器,这可能会导致一些网页不能像预期那样工作。
+
+![][8]
+
+虽然 LibreWolf 建议不要改变这些设置,但如果你发现在此设置下网页被破坏,你可以选择使用 Firefox。
+
+Firefox 使用启用的基本保护来摆脱常见的追踪器,而不会破坏网页的用户体验。
+
+除了这些设置外,LibreWolf 还默认在退出时删除 Cookie 和网站数据。如果你想继续登录网站并迅速恢复你的浏览会话,这可能会很烦人。
+
+对于 Firefox,它确实具有相同的选项,但它默认情况下仍然是禁用的。因此,如果你想避免调整内置设置以获得方便的体验,你应该选择 Firefox。
+
+![][9]
+
+难怪 Firefox 仍然是 [Linux 的最佳浏览器][10] 之一。相比增强隐私,大多数用户更喜欢方便,同时还能跨平台使用浏览器。
+
+### 谷歌安全浏览
+
+“谷歌安全浏览Google Safe Browsing”是一项有用的服务,可以警告、标记可疑网站的恶意活动。
+
+大多数浏览器使用它来实现安全的用户体验。你不需要成为发现钓鱼/恶意软件网站的专家,谷歌安全浏览可以帮助你发现它们。
+
+Mozilla Firefox 使用它的另一个名字 “钓鱼保护Phishing Protection”,它是默认启用的。
+
+然而,在 LibreWolf 中,“谷歌安全浏览”服务默认是禁用的,以避免连接到谷歌服务。你可以启用它,但它不是用户通常在设置浏览器时会注意到的东西。
+
+![][11]
+
+因此,如果你在避免恶意网站方面需要更多帮助,Firefox 应该是一个很好的开箱即用的解决方案。如果你对这些很清楚,你可以使用 LibreWolf,并在需要时启用该设置。
+
+### 附加功能
+
+LibreWolf 可以摆脱 Firefox 上的任何附加产品。
+
+例如,默认情况下,LibreWolf 与 Mozilla 服务器没有任何连接。这也意味着 LibreWolf 摆脱了遥测。它所反映的一些变化包括:
+
+ * LibreWolf 中没有同步/签到功能。
+ * 没有 “添加到 Pocket” 的按钮
+ * 你不会在扩展页面上加载 Mozilla 的附加组件/主题。
+
+![][12]
+
+如果你想使用 Mozilla 帐户来同步你的历史记录/书签和浏览器数据,Firefox 是最好的选择。如果你需要,还有 Firefox VPN。
+
+![][13]
+
+但是,如果你不信任任何 Mozilla 服务并希望在你的浏览器上切断与它们的任何连接,那么 LibreWolf 就是你的朋友。
+
+### 跨平台支持
+
+Firefox 可用于 Android 和 iOS,并且适用于各种屏幕尺寸和设备。
+
+不幸的是,LibreWolf 仅限于 macOS、Windows、OpenBSD 和 Linux 等桌面平台。
+
+### 基于社区 vs 由组织支持
+
+[LibreWolf][14] 是一个由社区支持的项目,由一些热情的贡献者维护,旨在促进隐私、安全和用户自由。
+
+如果你更喜欢 LibreWolf 提供的产品,那么使用它应该不是问题。即使是一个小团队,他们也会关注最新的 Firefox 版本并尽快推送更新。
+
+相比之下,Mozilla 基金会是一个更大的组织,并且一直在树立非凡的榜样来促进可定制性、隐私和安全性。
+
+Firefox 会比 LibreWolf 更快地收到更新,如果你担心浏览器的安全性,这是一个重要方面。
+
+Firefox 属于一个大组织并没有严重的缺点,但是 Mozilla 为其用户提出的未来可能会有一些你可能不喜欢的决定(或变化)。
+
+但是,LibreWolf 作为一个社区项目,会优先考虑用户偏好。
+
+### 总结
+
+如果方便是你在意的,你需要同步/登录账户功能、Mozilla 的特定功能,以及基本的隐私保护,Mozilla Firefox 应该更适合你。
+
+如果你不想要开箱即用的云同步功能、附加功能和以隐私为中心的核心设置,LibreWolf 将是完美的解决方案。
+
+在性能方面,两者都应该提供类似的体验。由于某种原因,基准测试(Basemark 3.0、Speedometer 2.0)不适用于 LibreWolf,因此我没有提供任何性能比较图表。
+
+我更喜欢使用 Firefox,因为我确实需要基于帐户的同步的便利性,而不需要积极的阻止功能。然而,对于那些想要放弃 Firefox 或者只是想尝试一些专注于用户自由和隐私的东西的人来说,LibreWolf 是一个可靠的选择。
+
+它对你而言怎么样?在下面的评论中让我知道你的想法。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/librewolf-vs-firefox/
+
+作者:[Ankush Das][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://itsfoss.com/author/ankush/
+[b]: https://github.com/lujun9972
+[1]: https://itsfoss.com/open-source-browsers-linux/
+[2]: https://itsfoss.com/librewolf/
+[3]: https://itsfoss.com/wp-content/uploads/2022/04/firefox-ui-1.png
+[4]: https://itsfoss.com/wp-content/uploads/2022/04/librewolf-ui-1.png
+[5]: https://itsfoss.com/wp-content/uploads/2022/04/firefox-google-search.png
+[6]: https://itsfoss.com/wp-content/uploads/2022/04/librewolf-duckduckgo.png
+[7]: https://itsfoss.com/wp-content/uploads/2022/04/librewolf-ublock-origin.png
+[8]: https://itsfoss.com/wp-content/uploads/2022/04/librewolf-privacy-settings.png
+[9]: https://itsfoss.com/wp-content/uploads/2022/04/firefox-privacy-settings.png
+[10]: https://itsfoss.com/best-browsers-ubuntu-linux/
+[11]: https://itsfoss.com/wp-content/uploads/2022/04/librewolf-security.png
+[12]: https://itsfoss.com/wp-content/uploads/2022/04/firefox-extras.png
+[13]: https://itsfoss.com/wp-content/uploads/2022/04/firefox-sign-in.png
+[14]: https://librewolf.net/
diff --git a/published/202204/20220414 My favorite build options for Go.md b/published/202204/20220414 My favorite build options for Go.md
new file mode 100644
index 0000000000..349ba17ec8
--- /dev/null
+++ b/published/202204/20220414 My favorite build options for Go.md
@@ -0,0 +1,298 @@
+[#]: subject: "My favorite build options for Go"
+[#]: via: "https://opensource.com/article/22/4/go-build-options"
+[#]: author: "Gaurav Kamathe https://opensource.com/users/gkamathe"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14525-1.html"
+
+我最喜欢的 Go 构建选项
+======
+
+> 这些方便的 Go 构建选项可以帮助你更好地理解 Go 的编译过程。
+
+
+
+学习一门新的编程语言最令人欣慰的部分之一,就是最终运行了一个可执行文件,并获得预期的输出。当我开始学习 Go 这门编程语言时,我先是阅读一些示例程序来熟悉语法,然后是尝试写一些小的测试程序。随着时间的推移,这种方法帮助我熟悉了编译和构建程序的过程。
+
+Go 的构建选项提供了更好地控制构建过程的方法。它们还可以提供额外的信息,帮助把这个过程分成更小的部分。在这篇文章中,我将演示我所使用的一些选项。注意:我使用的“构建build”和“编译compile”这两个词是同一个意思。
+
+### 开始使用 Go
+
+我使用的 Go 版本是 1.16.7。但是,这里给出的命令应该也能在最新的版本上运行。如果你没有安装 Go,你可以从 [Go 官网][2] 上下载它,并按照说明进行安装。你可以通过打开一个命令提示符,并键入下面的命令来验证你所安装的版本:
+
+```
+$ go version
+```
+
+你应该会得到类似下面这样的输出,具体取决于你安装的版本:
+
+```
+go version go1.16.7 linux/amd64
+```
+
+### 基本的 Go 程序的编译和执行方法
+
+我将从一个在屏幕上简单打印 “Hello World” 的 Go 程序示例开始,就像下面这样:
+
+```
+$ cat hello.go
+package main
+
+import "fmt"
+
+func main() {
+ fmt.Println("Hello World")
+}
+```
+
+在讨论更高级的选项之前,我将解释如何编译这个 Go 示例程序。我使用了 `build` 命令,后面跟着 Go 程序的源文件名,本例中是 `hello.go`,就像下面这样:
+
+```
+$ go build hello.go
+```
+
+如果一切工作正常,你应该看到在你的当前目录下创建了一个名为 `hello` 的可执行文件。你可以通过使用 `file` 命令验证它是 ELF 二进制可执行格式(在 Linux 平台上)。你也可以直接执行它,你会看到它输出 “Hello World”。
+
+```
+$ ls
+hello hello.go
+
+$ file ./hello
+./hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
+
+$ ./hello
+Hello World
+```
+
+Go 提供了一个方便的 `run` 命令,以便你只是想看看程序是否能正常工作,并获得预期的输出,而不想生成一个最终的二进制文件。请记住,即使你在当前目录中没有看到可执行文件,Go 仍然会在某个地方编译并生成可执行文件并运行它,然后把它从系统中删除。我将在本文后面的章节中解释。
+
+```
+$ go run hello.go
+Hello World
+
+$ ls
+hello.go
+```
+
+### 更多细节
+
+上面的命令就像一阵风一样,一下子就运行完了我的程序。然而,如果你想知道 Go 在编译这些程序的过程中做了什么,Go 提供了一个 `-x` 选项,它可以打印出 Go 为产生这个可执行文件所做的一切。
+
+简单看一下你就会发现,Go 在 `/tmp` 内创建了一个临时工作目录,并生成了可执行文件,然后把它移到了 Go 源程序所在的当前目录。
+
+```
+$ go build -x hello.go
+
+WORK=/tmp/go-build1944767317
+mkdir -p $WORK/b001/
+
+<< snip >>
+
+mkdir -p $WORK/b001/exe/
+cd .
+/usr/lib/golang/pkg/tool/linux_amd64/link -o $WORK \
+/b001/exe/a.out -importcfg $WORK/b001 \
+/importcfg.link -buildmode=exe -buildid=K26hEYzgDkqJjx2Hf-wz/\
+nDueg0kBjIygx25rYwbK/W-eJaGIOdPEWgwC6o546 \
+/K26hEYzgDkqJjx2Hf-wz -extld=gcc /root/.cache/go-build /cc \
+/cc72cb2f4fbb61229885fc434995964a7a4d6e10692a23cc0ada6707c5d3435b-d
+/usr/lib/golang/pkg/tool/linux_amd64/buildid -w $WORK \
+/b001/exe/a.out # internal
+mv $WORK/b001/exe/a.out hello
+rm -r $WORK/b001/
+```
+
+这有助于解决在程序运行后却在当前目录下没有生成可执行文件的谜团。使用 `-x` 显示可执行文件确实在 `/tmp` 工作目录下创建并被执行了。然而,与 `build` 命令不同的是,可执行文件并没有移动到当前目录,这使得看起来没有可执行文件被创建。
+
+```
+$ go run -x hello.go
+
+
+mkdir -p $WORK/b001/exe/
+cd .
+/usr/lib/golang/pkg/tool/linux_amd64/link -o $WORK/b001 \
+/exe/hello -importcfg $WORK/b001/importcfg.link -s -w -buildmode=exe -buildid=hK3wnAP20DapUDeuvAAS/E_TzkbzwXz6tM5dEC8Mx \
+/7HYBzuaDGVdaZwSMEWAa/hK3wnAP20DapUDeuvAAS -extld=gcc \
+/root/.cache/go-build/75/ \
+7531fcf5e48444eed677bfc5cda1276a52b73c62ebac3aa99da3c4094fa57dc3-d
+$WORK/b001/exe/hello
+Hello World
+```
+
+### 模仿编译而不产生可执行文件
+
+假设你不想编译程序并产生一个实际的二进制文件,但你确实想看到这个过程中的所有步骤。你可以通过使用 `-n` 这个构建选项来做到这一点,该选项会打印出通常的执行步骤,而不会实际创建二进制文件。
+
+```
+$ go build -n hello.go
+```
+
+### 保存临时目录
+
+很多工作都发生在 `/tmp` 工作目录中,一旦可执行文件被创建和运行,它就会被删除。但是如果你想看看哪些文件是在编译过程中创建的呢?Go 提供了一个 `-work` 选项,它可以在编译程序时使用。`-work` 选项除了运行程序外,还打印了工作目录的路径,但它并不会在这之后删除工作目录,所以你可以切换到该目录,检查在编译过程中创建的所有文件。
+
+```
+$ go run -work hello.go
+WORK=/tmp/go-build3209320645
+Hello World
+
+$ find /tmp/go-build3209320645
+/tmp/go-build3209320645
+/tmp/go-build3209320645/b001
+/tmp/go-build3209320645/b001/importcfg.link
+/tmp/go-build3209320645/b001/exe
+/tmp/go-build3209320645/b001/exe/hello
+
+$ /tmp/go-build3209320645/b001/exe/hello
+Hello World
+```
+
+### 其他编译选项
+
+如果说,你想手动编译程序,而不是使用 Go 的 `build` 和 `run` 这两个方便的命令,最后得到一个可以直接由你的操作系统(这里指 Linux)运行的可执行文件。那么,你该怎么做呢?这个过程可以分为两部分:编译和链接。你可以使用 `tool` 选项来看看它是如何工作的。
+
+首先,使用 `tool compile` 命令产生结果的 `ar` 归档文件,它包含了 `.o` 中间文件。接下来,对这个 `hello.o` 文件执行 `tool link` 命令,产生最终的可执行文件,然后你就可以运行它了。
+
+```
+$ go tool compile hello.go
+
+$ file hello.o
+hello.o: current ar archive
+
+$ ar t hello.o
+__.PKGDEF
+_go_.o
+
+$ go tool link -o hello hello.o
+
+$ file hello
+hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
+
+$ ./hello
+Hello World
+```
+
+如果你想进一步查看基于 `hello.o` 文件产生可执行文件的链接过程,你可以使用 `-v` 选项,它会搜索每个 Go 可执行文件中包含的 `runtime.a` 文件。
+
+```
+$ go tool link -v -o hello hello.o
+HEADER = -H5 -T0x401000 -R0x1000
+searching for runtime.a in /usr/lib/golang/pkg/linux_amd64/runtime.a
+82052 symbols, 18774 reachable
+ 1 package symbols, 1106 hashed symbols, 77185 non-package symbols, 3760 external symbols
+81968 liveness data
+```
+
+### 交叉编译选项
+
+现在我已经解释了 Go 程序的编译过程,接下来,我将演示 Go 如何通过在实际的 `build` 命令之前提供 `GOOS` 和 `GOARCH` 这两个环境变量,来允许你构建针对不同硬件架构和操作系统的可执行文件。
+
+这有什么用呢?举个例子,你会发现为 ARM(arch64)架构制作的可执行文件不能在英特尔(x86_64)架构上运行,而且会产生一个 Exec 格式错误。
+
+下面的这些选项使得生成跨平台的二进制文件变得小菜一碟:
+
+```
+$ GOOS=linux GOARCH=arm64 go build hello.go
+
+$ file ./hello
+./hello: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, not stripped
+
+$ ./hello
+bash: ./hello: cannot execute binary file: Exec format error
+
+$ uname -m
+x86_64
+```
+
+你可以阅读我之前的博文,以更多了解我在 [使用 Go 进行交叉编译][3] 方面的经验。
+
+### 查看底层汇编指令
+
+源代码并不会直接转换为可执行文件,尽管它生成了一种中间汇编格式,然后最终被组装为可执行文件。在 Go 中,这被映射为一种中间汇编格式,而不是底层硬件汇编指令。
+
+要查看这个中间汇编格式,请在使用 `build` 命令时,提供 `-gcflags` 选项,后面跟着 `-S`。这个命令将会显示使用到的汇编指令:
+
+```
+$ go build -gcflags="-S" hello.go
+# command-line-arguments
+"".main STEXT size=138 args=0x0 locals=0x58 funcid=0x0
+ 0x0000 00000 (/test/hello.go:5) TEXT "".main(SB), ABIInternal, $88-0
+ 0x0000 00000 (/test/hello.go:5) MOVQ (TLS), CX
+ 0x0009 00009 (/test/hello.go:5) CMPQ SP, 16(CX)
+ 0x000d 00013 (/test/hello.go:5) PCDATA $0, $-2
+ 0x000d 00013 (/test/hello.go:5) JLS 128
+
+<< snip >>
+```
+
+你也可以使用 `objdump -s` 选项,来查看已经编译好的可执行程序的汇编指令,就像下面这样:
+
+```
+$ ls
+hello hello.go
+
+$ go tool objdump -s main.main hello
+TEXT main.main(SB) /test/hello.go
+ hello.go:5 0x4975a0 64488b0c25f8ffffff MOVQ FS:0xfffffff8, CX
+ hello.go:5 0x4975a9 483b6110 CMPQ 0x10(CX), SP
+ hello.go:5 0x4975ad 7671 JBE 0x497620
+ hello.go:5 0x4975af 4883ec58 SUBQ $0x58, SP
+ hello.go:6 0x4975d8 4889442448 MOVQ AX, 0x48(SP)
+
+<< snip >>
+```
+
+### 分离二进制文件以减少其大小
+
+Go 的二进制文件通常比较大。例如, 一个简单的 “Hello World” 程序将会产生一个 1.9M 大小的二进制文件。
+
+```
+$ go build hello.go
+$
+$ du -sh hello
+1.9M hello
+$
+$ file hello
+hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
+$
+```
+
+为了减少生成的二进制文件的大小,你可以分离执行过程中不需要的信息。使用 `-ldflags` 和 `-s -w` 选项可以使生成的二进制文件略微变小为 1.3M。
+
+```
+$ go build -ldflags="-s -w" hello.go
+$
+$ du -sh hello
+1.3M hello
+$
+$ file hello
+hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
+$
+```
+
+### 总结
+
+我希望这篇文章向你介绍了一些方便的 Go 编译选项,同时帮助了你更好地理解 Go 编译过程。关于构建过程的其他信息和其他有趣的选项,请参考 Go 命令帮助:
+
+```
+$ go help build
+```
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/4/go-build-options
+
+作者:[Gaurav Kamathe][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/gkamathe
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/build_structure_tech_program_code_construction.png
+[2]: https://go.dev/doc/install
+[3]: https://opensource.com/article/21/1/go-cross-compiling
diff --git a/published/202204/20220415 3-2-1 Backup plan with Fedora ARM server.md b/published/202204/20220415 3-2-1 Backup plan with Fedora ARM server.md
new file mode 100644
index 0000000000..706505a23e
--- /dev/null
+++ b/published/202204/20220415 3-2-1 Backup plan with Fedora ARM server.md
@@ -0,0 +1,254 @@
+[#]: subject: "3-2-1 Backup plan with Fedora ARM server"
+[#]: via: "https://fedoramagazine.org/3-2-1-backup-plan-with-fedora-arm-server/"
+[#]: author: "Hanku Lee https://fedoramagazine.org/author/hankuoffroad/"
+[#]: collector: "lujun9972"
+[#]: translator: "hwlife"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14519-1.html"
+
+使用 Fedora ARM 服务器来做 3-2-1 备份计划
+======
+
+![][1]
+
+Fedora 服务器版操作系统可以运行在类似树莓派的单板计算机(SBC)上。这篇文章针对的用户是想要充分利用实体服务器系统,并使用类似 Cockpit 的内置工具进行数据备份和个人数据的恢复。这里描述了备份的 3 个阶段。
+
+### 必要的准备
+
+想要使用本指南,你所需要的是一个运行着的 Fedora Linux 工作站和以下的项目:
+
+ * 你应该阅读、理解和实践 Fedora 文档中 [服务器安装][4] 和 [管理][5] 的要求
+ * 一块用来测试 Fedora Linux 的 SBC(单板计算机)。在这里查看 [硬件需求][6]
+ * [Fedora ARM][7] [服务器][7] 原始镜像 & ARM 镜像安装器
+ * SD 存储卡(64 GB / Class 10)和 SSD 设备两选一
+ * 以太网 / DHCP 预留 IP 地址或者静态 IP 地址
+ * 提供了 ssh 密钥的 Linux 客户端工作站
+ * 选择云存储服务
+ * 有额外可用的 Linux 工作站
+
+对于这套环境,在写这篇文章的时候,由于成本和可用性的原因,我选择树莓派 3B+/4B+ (其中一个用来热切换)。当使用 Cockpit 远程连接树莓派服务器时,你可以将树莓派放到路由器附近以便设置。
+
+### 加强服务器的安全
+
+在 SBC 完成服务器的安装和管理后,用 firewalld 加强服务器的安全是一个好的做法。
+
+连接存储设备到服务器之前,一旦服务器在线你必须设置好防火墙。firewalld 是基于区域的防火墙。在依照 Fedora 文档完成安装和管理指南之后,创建一个名为 `FedoraServer` 的预定义区域。
+
+#### firewalld 里的富规则
+
+富规则rich rule用来阻止或者允许一个特定的 IP 地址或者地址段。下面这条规则只从(客户端工作站)注册的 IP 地址接受 SSH 连接,并断开其它的连接。在 Cockpit 终端或者客户端工作站终端运行命令是通过 ssh 来连接到服务器的。
+
+```
+firewall-cmd --add-rich-rule='rule family=ipv4 source address=/24 service name=ssh log prefix="SSH Logs" level="notice" accept'
+```
+
+#### 拒绝所有主机的 ping 请求
+
+使用这个命令来设置 icmp 拒绝,并且不允许 ping 请求:
+
+```
+firewall-cmd --add-rich-rule='rule protocol value=icmp reject'
+```
+
+要进行其它防火墙控制,比如管理端口和区域,请查阅以下链接。请注意错配防火墙可能会使安全出现漏洞受到攻击。
+
+> **[在 Cockpit 中管理防火墙][8]**
+
+> **[firewalld 规则][9]**
+
+### 配置文件服务器的存储
+
+下一步是连接存储设备到 SBC,然后使用 Cockpit 对新插入的存储设备进行分区。使用 Cockpit 的图形化服务器管理界面,管理一个家庭实验室(可以是一个或者多个服务器)比之前更加简单。Fedora Linux 服务器标准提供了 Cockpit。
+
+在这个阶段,一个通过 SBC 的 USB 插口接电的 SSD 设备无需额外电源供给就可以工作。
+
+ * 将存储设备连接到 SBC 的 USB 接口
+ * 运行之后(按上面的“必要的准备”所设置的那样),然后在你的客户端工作站浏览器上访问 **机器的 IP 地址:9090**
+ * 登录进 Cockpit 之后,点击 Cockpit 页面顶部的“打开管理访问权限Turn on administrative access”
+ * 点击左边面板的 “存储Storage” 按钮
+ * 选择下面显示的 “驱动器Drives”,然后分区并格式化一个空白的存储设备
+ ![Cockpit Storage management][10]
+ * 在选定的存储设备这个界面上,创建一个新的分区表或者格式化并创建新的分区。当初始化磁盘的时候,在 “Partitioning分区” 类型选项上,选择 “GPT 分区表”
+ * 选择一个文件系统类型,这里选择 “EXT4” 。这对于一个限制 I/O 能力(比如 USB 2.0 接口)和限制带宽(小于 200MB/s)的设备是适合的
+ ![Create a partition in Cockpit][11]
+ * 要在设备上创建单个占据整个存储空间的分区,指定它的挂载点,比如 `/media` 然后点击 “确定Ok” 。
+ * 点击 “Create partition创建分区”,创建一个挂载点为 `/media` 的新分区。
+
+### 创建备份和恢复备份
+
+备份很少是一刀切的。这里有一些选择比如数据备份在哪里,备份数据的步骤,验证一些自动化,并确定怎样来恢复备份了的数据。
+
+![Backup workflow – version 1.0][12]
+
+#### 备份 1. 用 rsync 从客户端远程同步到文件服务器(树莓派)
+
+这个传输用到的命令是:
+
+```
+rsync -azP ~/source syncuser@host1:/destination
+```
+
+参数:
+- `-a`/`--archive`:归档
+- `-z`/`--compress`:压缩
+- `-P`/`--progress`:显示进度
+
+要使用更多的选项运行 `rsync`,可以设置以下的选项:
+
+- `--inplace`:直接替换来更新目标文档
+- `--append`:追加数据到较短的文档中
+
+在将文档备份到存储空间之前,源端文档的文件重复消除和压缩是减少备份数据容量最有效的方式。
+
+每天工作结束,我会手动运行这个。一旦我设置了云备份工作流,自动化脚本是一个优势。
+
+关于 `rsync` 的详细信息,请在 [这里][13] 访问 Fedora 杂志的文章。
+
+#### 备份 2. 使用 rysnc 从文件服务器远程同步到主要的云存储上
+
+选择云存储是考虑的因素;
+
+ * 成本:上传、存储空间和下载费用
+ * 支持 `rsync`、`sftp`
+ * 数据冗余(RAID 10 或者运行中的数据中心冗余计划)
+ * 快照
+
+符合这些云存储标准之一的就是 Hetzner 托管的 Nextcloud– [存储盒子][14]。你不会受到供应商限制,可以自由切换而没有退出惩罚。
+
+##### 在文件服务器上生成 SSH 密钥并创建授权密钥文件
+
+使用 `ssh-keygen` 命令为文件服务器和云存储生成一对新的 SSH 密钥对。
+
+```
+ssh-keygen
+Generating public/private rsa key pair.
+Enter file in which to save the key . . .
+```
+
+插入要求的 SSH 公钥到新的本地授权密钥文件中。
+
+```
+cat .ssh/id_rsa.pub >> storagebox_authorized_keys
+```
+
+##### 传输密钥文件到云存储
+
+下一步就是上传生成了的授权密钥文件到存储盒子。要做这些,先用 700 权限创建 `.ssh` 目录,然后用 SSH 公钥创建授权文件并赋予 600 权限。运行以下命令。
+
+```
+echo -e "mkdir .ssh \n chmod 700 .ssh \n put storagebox_authorized_keys .ssh/authorized_keys \n chmod 600 .ssh/authorized_keys" | sftp @.your-storagebox.de
+```
+
+##### 通过 ssh 使用 rsync
+
+使用 `rsync` 同步你的文件目录当前状态到存储盒子。
+
+```
+rsync --progress -e 'ssh -p23' --recursive @.your-storagebox.de:
+```
+
+这个过程被叫做推送操作,因为它 “推送” 本地系统的一个目录到一个远程的系统中去。
+
+##### 从云存储中恢复目录
+
+要从存储盒子恢复目录,转换到这个目录:
+
+```
+rsync --progress -e 'ssh -p23' --recursive @.your-storagebox.de:
+```
+
+#### 备份 3. 客户端备份到第二个云储存
+
+[Deja Dup][15] 是 Fedora 软件仓库中为 Fedora 工作站提供快速备份解决方案的工具。它拥有 GPG 加密、计划任务、文件包含(哪个目录要备份)等功能。
+
+![Backing up to the secondary cloud][16]
+
+![Restoring files from cloud storage][17]
+
+### 归档个人数据
+
+不是所有数据都需要 3-2-1 备份策略。这就是个人数据共享。我将一台拥有 1TB 硬盘的笔记本作为我个人数据的档案(家庭照片)。
+
+转到设置中的 “共享Sharing” (在我的例子中是 GNOME 文件管理器)并切换滑块以启用共享。
+
+![][18]
+
+打开 “文件共享file sharing”,“网络Networks” 和 “需要的密码Required password”,允许你使用 WebDAV 协议在你的本地网络上分享你的公共文件夹给其它的工作站。
+
+![][19]
+
+### 准备回滚选项
+
+未测试的备份并不比完全没有备份好。我在家庭实验室环境中使用 “热切换” 方法来避免像频繁的断电或者液体损坏的情况发生。然而,我的建议方案远没有达到灾难恢复计划或企业 IT 中的自动故障修复。
+
+ * 定期运行文件恢复操作
+ * 备份 ssh/GPG 密钥到一个额外的存储设备中
+ * 复制一个 Fedora ARM 服务器的原始镜像到一个 SD 卡中
+ * 在主云存储中保持全备份的快照
+ * 自动化备份过程最小化减少人为错误或者疏忽
+
+### 使用 Cockpit 追踪活动并解决问题
+
+当你的项目在成长时,你所管理的服务器数量也在增长。在 Cockpit 中追踪活动和警告可以减轻你的管理负担。你可以使用 Cockpit 的图形化界面的三种方法来归档这些。
+
+#### SELinux 菜单
+
+怎样诊断网络问题,找到日志并在 Cockpit 中解决问题:
+
+ * 去 SELinux 中检查日志
+ * 检查“解决方案详细信息solution details”
+ * 当必要时,选择 “应用这个方案Apply this solution”
+ * 如果必要,查看自动化脚本并运行它
+
+![SELinux logs][20]
+
+#### 网络或者存储日志
+
+服务器日志会跟踪 CPU 负载、内存使用、网络活动、存储性能和系统日志关联的详细指标。日志会组织在网络面板或者存储面板里显示。
+
+![Storage logs in Cockpit][21]
+
+#### 软件更新
+
+在预设的时间和频率下,Cockpit 可以帮助进行安全更新。当你需要时,你可以运行所有的更新。
+
+![Software updates][22]
+
+恭喜你在 Fedora ARM 服务器版本上搭建了一个文件/备份服务器。
+
+--------------------------------------------------------------------------------
+
+via: https://fedoramagazine.org/3-2-1-backup-plan-with-fedora-arm-server/
+
+作者:[Hanku Lee][a]
+选题:[lujun9972][b]
+译者:[hwlife](https://github.com/hwlife)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://fedoramagazine.org/author/hankuoffroad/
+[b]: https://github.com/lujun9972
+[1]: https://fedoramagazine.org/wp-content/uploads/2022/04/3-2-1_backup-816x345.jpg
+[2]: https://unsplash.com/@markuswinkler?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
+[3]: https://unsplash.com/s/photos/computer-backup?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
+[4]: https://docs.fedoraproject.org/en-US/fedora-server/server-installation-sbc/
+[5]: https://docs.fedoraproject.org/en-US/fedora-server/sysadmin-postinstall/
+[6]: https://docs.fedoraproject.org/en-US/quick-docs/raspberry-pi/
+[7]: https://arm.fedoraproject.org/
+[8]: https://fedoramagazine.org/managing-network-interfaces-and-firewalld-in-cockpit/
+[9]: https://www.redhat.com/sysadmin/firewalld-rules-and-scenarios
+[10]: https://fedoramagazine.org/wp-content/uploads/2022/03/Screenshot-from-2022-03-29-22-05-00b-1024x576.png
+[11]: https://fedoramagazine.org/wp-content/uploads/2022/03/Screenshot-from-2022-03-29-22-03-36a.png
+[12]: https://fedoramagazine.org/wp-content/uploads/2022/04/Backups3-1-1024x525.jpg
+[13]: https://fedoramagazine.org/copying-large-files-with-rsync-and-some-misconceptions/
+[14]: https://docs.hetzner.com/robot/storage-box/
+[15]: https://fedoramagazine.org/easy-backups-with-deja-dup/
+[16]: https://fedoramagazine.org/wp-content/uploads/2022/03/Screenshot-from-2022-03-29-22-47-30.png
+[17]: https://fedoramagazine.org/wp-content/uploads/2022/03/Screenshot-from-2022-03-29-22-41-57.png
+[18]: https://fedoramagazine.org/wp-content/uploads/2022/04/Screenshot-from-2022-04-14-20-48-49-1024x733.png
+[19]: https://fedoramagazine.org/wp-content/uploads/2022/04/Screenshot-from-2022-04-14-20-51-18st.png
+[20]: https://fedoramagazine.org/wp-content/uploads/2022/04/Screenshot-from-2022-04-02-11-24-30b-1024x441.png
+[21]: https://fedoramagazine.org/wp-content/uploads/2022/04/Screenshot-from-2022-04-04-21-47-06SL-1024x259.png
+[22]: https://fedoramagazine.org/wp-content/uploads/2022/04/Screenshot-from-2022-04-04-21-35-42b.png
diff --git a/published/202204/20220415 Elon Musk Believes Twitter Algorithm Should Be Open-Source.md b/published/202204/20220415 Elon Musk Believes Twitter Algorithm Should Be Open-Source.md
new file mode 100644
index 0000000000..68142562e4
--- /dev/null
+++ b/published/202204/20220415 Elon Musk Believes Twitter Algorithm Should Be Open-Source.md
@@ -0,0 +1,69 @@
+[#]: subject: "Elon Musk Believes Twitter Algorithm Should Be Open-Source"
+[#]: via: "https://news.itsfoss.com/elon-musk-twitter-open-source/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14491-1.html"
+
+埃隆·马斯克认为推特的算法应该开源
+======
+
+> 埃隆·马斯克希望推特开源他们的算法。这会促进言论自由吗?以下是他的说法。
+
+
+
+没错,埃隆·马斯克又搞了一个大新闻,这已经算是他的日常操作了。
+
+然而,这一次的新闻非常有趣。他提出了要以大约 **430 亿美元** 收购推特。
+
+从技术上讲,他的报价远远超过了市场价格,这也就是为什么许多媒体称他这是在试图“恶意收购”。
+
+考虑到这个激进的报价,我们还不确定这次收购是否会成功。不过,在一次 TED 演讲中,埃隆·马斯克还分享了他对于推特应该如何推动言论自由的一些想法。
+
+### 推特的算法应该开源
+
+埃隆·马斯克认为,推特应该将算法开源,以促进平台的透明度。
+
+当然,推特作为一个平台,目前仍在爆炸式发展,很难预测。推特团队在某些事情上也会采取果断行动,不管用户认为它是否正确。
+
+虽然推特的内部决定在纸面上看起来很好,但这种没有透明度的大规模平台总是会存在问题的。
+
+因此,埃隆·马斯克有一个观点:无论你是否认同或相信推特的决定,透明/开源只会有助于加强现有的价值观。
+
+嗯,难怪我们喜欢开源。
+
+这里引用他的原话:
+
+> “因此,我认为推特应该做的事情之一就是开源它的算法,所有推文的修改都应该是透明的,任何人都可以看到这个修改,哪怕是加粗一段文字或是取消加粗它。这样一来,幕后操纵将不复存在,无论是算法还是人工。”
+
+另一方面,当我们把推特当作一个某种程度上的开源平台来谈论时,我不由自主地想到了 [Mastodon][7]。你也可以在 [Mastodon][8] 上找到我们,如果你还没有用过它的话。
+
+诚然,推特有很大的增长潜力,无论好坏,它都在不断扩张。但是,开源理念能否帮助这个平台?我个人认为可以,但这是一个巨大的变革,不能指望一夜之间就能实现。
+
+当然,即使埃隆·马斯克成功地收购了推特,也没有人能够预测他会对推特做什么。说实话,他就像任何复杂算法一样不可预测。
+
+那么,你是如何看待这个新闻的呢?你相信埃隆·马斯克说的话吗?欢迎在下面的评论中分享你的想法。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/elon-musk-twitter-open-source/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][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/lujun9972
+[1]: https://twitter.com/elonmusk?ref_src=twsrc%5Etfw
+[2]: https://twitter.com/hashtag/TED2022?src=hash&ref_src=twsrc%5Etfw
+[3]: https://twitter.com/TEDchris?ref_src=twsrc%5Etfw
+[4]: https://twitter.com/YouTube?ref_src=twsrc%5Etfw
+[5]: https://t.co/Okm3y5HpEy
+[6]: https://twitter.com/TEDTalks/status/1514739086908555272?ref_src=twsrc%5Etfw
+[7]: https://joinmastodon.org/
+[8]: https://mastodon.social/@itsfoss
diff --git a/published/202204/20220415 How the C programming language has grown.md b/published/202204/20220415 How the C programming language has grown.md
new file mode 100644
index 0000000000..c0f37af0b6
--- /dev/null
+++ b/published/202204/20220415 How the C programming language has grown.md
@@ -0,0 +1,89 @@
+[#]: subject: "How the C programming language has grown"
+[#]: via: "https://opensource.com/article/22/3/how-c-programming-language-has-grown"
+[#]: author: "Jim Hall https://opensource.com/users/jim-hall"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14508-1.html"
+
+C 语言发展简史
+======
+
+
+
+> 下面是我对 布莱恩·克尼汉Brian Kernighan 的采访,他(与 丹尼斯·里奇Dennis Ritchie)是《C 程序设计语言The C Programming Language》一书的共同作者,我们谈及了 C 语言及其 50 年的历史。
+
+![两位作者写的最初的 C 语言编程指南,大约是在 1978 年][1]
+
+C 语言将在 2022 年满 50 岁。然而,尽管它历史悠久,在许多“流行编程语言”的调查中,C 语言仍然是“最常用”的编程语言之一。例如,你可以看看 [TIOBE 指数][2],它追踪不同编程语言的流行程度。许多 Linux 应用程序是用 C 语言编写的,例如 GNOME 桌面。
+
+我采访了 [布莱恩·克尼汉][3]Brian Kernighan,以了解更多关于 C 语言及其历史他(与 丹尼斯·里奇Dennis Ritchie)是《C 程序设计语言The C Programming Language》一书的共同作者。
+
+### C 语言是怎么诞生的呢?
+
+C 语言由一系列旨在进行系统编程的语言演变而来,系统编程就是编写像编译器、汇编器、编辑器以及最终的操作系统这样的程序。麻省理工学院有一个与贝尔实验室合作的 Multics 项目,它计划用一种高级语言编写系统的所有部分(这在 1965 年那时候是一个新想法)。他们打算使用 IBM 的 PL/1,但它非常复杂,而且承诺的编译器也没有及时交付。
+
+在与一个叫做 EPL 的子集(由贝尔实验室的道格拉斯·麦克罗伊Douglas McIlroy 设计)进行了短暂交流后,Multics 转向了 BCPL,这是一个由剑桥的 Martin Richards 设计和实现的,更加简单和干净的语言,我记得他当时正在麻省理工学院访问。当 肯·汤普逊Ken Thompson 开始研究后来的 Unix 时,他在 BCPL 的基础上创造了一种更简单的语言,他称之为 B 语言。在 1969 年,他为搭载了第一个 Unix 原型系统的 PDP-7 计算机实现了这种语言。
+
+BCPL 和 B 都是“无类型”语言。也就是说,它们只有一种数据类型,即整数。DEC 公司的 PDP-11 计算机大约在 1971 年投入使用,它搭载了第一个真正的 Unix 系统。PDP-11 支持几种数据类型,特别是 8 位字节和 16 位整数。因此,一种同样支持几种数据类型的语言是更好的选择。这就是 C 语言的起源。
+
+### C 语言在贝尔实验室和早期版本的 Unix 中是如何使用的呢?
+
+C 语言最初只在 Unix 上使用,尽管过了一段时间,也有了用于其他机器和操作系统的 C 语言编译器。大多数情况下,它被用于系统级的编程,涵盖了相当多有趣的领域,还有很多用于管理 AT&T 电话网络运营的系统。
+
+### 在贝尔实验室用 C 语言编写的最有趣的项目是什么?
+
+可以说,最有趣、最令人难忘、也是最重要的 C 语言程序就是 Unix 操作系统本身。1971 年 Unix 的第一个版本是用 PDP-11 汇编语言编写的,但到了第四版,也就是 1973 年左右,我们用 C 语言重写了它。这很关键,因为这意味着操作系统(和它所有的支持软件)基本上可以通过重新编译来移植到不同类型的计算机上。虽然在实践中并没有那么简单,但也相差不远。
+
+### 你与丹尼斯·里奇合著了《C 程序设计语言》一书。那本书是怎么来的,你和丹尼斯又是如何在书中合作的呢?
+
+我曾经写过一本肯·汤普逊的 B 语言教程,帮助人们快速上手使用它。当 C 语言可用时,我将其升级为 C 语言的教程。过了一段时间,我说服了丹尼斯,让他和我一起写一本 C 语言的书。基本上,除了系统调用那章外,大部分的教程材料都是我写的,而丹尼斯已经写好了那个参考手册,写的非常棒。然后我们反复修改,使教程部分更加流畅。参考手册几乎保持不变,因为它从一开始就写得很好。这本书的格式是用 *troff* 格式器格式的,这是 Unix 上的许多工具之一,我做了大部分的格式化工作。
+
+### C 语言什么时候成为了贝尔实验室以外的其他程序员用于工作的东西呢?
+
+我真的记不大清了,但我认为大概是在最初的五六年里,C 语言主要是跟着 Unix 一起发展的。随着其他操作系统上的编译器的发展,它开始蔓延到 Unix 以外的其他系统。我不记得我们是什么时候意识到 C 和 Unix 产生了真正的影响,但应该是在 20 世纪 70 年代中后期。
+
+### 为什么 C 语言会成为如此有影响力的编程语言呢?
+
+早期的主要原因是它与 Unix 的联系,Unix 在世界上迅速传播。如果你使用 Unix,你就会用 C 语言来编程。后来,C 语言传播到不一定运行 Unix 的计算机上,很大程度上是因为 Steve Johnson 编写了可移植 C 语言编译器。在工作站领域,比如 昇阳微系统Sun Microsystems、MIPS(后来成为 SGI)和其他公司,它们都是因为 Unix 和 C 语言的结合而获得成功。IBM PC 出现得稍晚一些,大约在 1982 年。后来 C 语言成为 MS-DOS 和 Windows 下的标准编程语言之一。今天,大多数物联网(IoT)设备会使用 C 语言。
+
+### 在创建约 50 年后的今天,C 仍然是一种流行的编程语言。为什么它仍然如此受欢迎呢?
+
+我认为 C 语言在效率和表现力这两个方面达到了一个平衡点。在早期,效率真的很重要,因为与我们今天所使用的计算机相比,当时的计算机速度很慢、内存十分有限。C 语言是非常高效的,因为它可以被编译成高效的机器代码,而且它也足够简单,人们很容易学会如何编译它。同时,它还具有很强的表现力,易于编写,并且结构紧凑。至少在我谦虚而正确的观点中,没有任何一种语言能很好地达到这种境界。
+
+### 多年来,C 语言的发展和变化如何?
+
+我想,C 语言的发展是适度的,但我并没有太注意 C 语言标准的发展。C 语言已经有足够的改变了,80 年代写的代码需要做一些前置工作才能编译,但这主要与诚实对待类型有关。比较新的功能,如复数,也许是有用的,但对我来说不是,所以我不能做出明智的评论。
+
+### 哪些编程问题可以用C语言最容易解决?
+
+嗯,对于任何事情来说,它都是一种很好的语言,但在今天,有了充足的内存和处理能力,大多数程序员都可以用 Python 这样的语言来进行内存管理和处理其他更高级的结构。C 语言仍然是底层编程的一个很好的选择,因为对于底层编程来说,充分利用 CPU 周期和每一个字节仍然很重要。
+
+### C 语言影响了其他编程语言,包括 C++、Java、Go 和 Rust。你对这些编程语言有什么看法?
+
+几乎每一种语言在某些方面都是对其前辈的反应。简单点说,C++ 增加了控制信息访问的机制,所以对于真正的大型程序来说,它比 C 更好。[Java][4] 是对 C++ 的复杂性的一种反应。Go 是对 C++ 的复杂性和 [Java][4] 的限制的一种反应。[Rust][5] 是对 C 语言(大概也是对 C++)中内存管理问题的一种尝试,同时它接近了 C 语言的效率。
+
+它们都带来了某些积极的特性,但不知何故,没有人能够完全满意,所以总是会有更多的语言,反过来对以前的语言做出反应。同时,老的语言,在大多数情况下,仍会继续存在,因为它们的工作做得很好,而且有一个嵌入式的根据地,老的语言在里面可以完美使用,而用新的东西来重新实现是不可行的。
+
+感谢 Brian 为我们分享了 C 语言编程的伟大历史!
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/3/how-c-programming-language-has-grown
+
+作者:[Jim Hall][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/jim-hall
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/uploads/2482009942_6caea217e0_c.jpg
+[2]: https://www.tiobe.com/tiobe-index/
+[3]: https://opensource.com/article/22/1/interview-brian-kernighan
+[4]: https://opensource.com/tags/java
+[5]: https://opensource.com/tags/rust
+[6]: https://opensource.com/article/22/1/c-programming
diff --git a/published/202204/20220415 How to Upgrade to Ubuntu 22.04 -Jammy Jellyfish- From Ubuntu 20.04 LTS.md b/published/202204/20220415 How to Upgrade to Ubuntu 22.04 -Jammy Jellyfish- From Ubuntu 20.04 LTS.md
new file mode 100644
index 0000000000..4c43ff989f
--- /dev/null
+++ b/published/202204/20220415 How to Upgrade to Ubuntu 22.04 -Jammy Jellyfish- From Ubuntu 20.04 LTS.md
@@ -0,0 +1,106 @@
+[#]: subject: "How to Upgrade to Ubuntu 22.04 “Jammy Jellyfish” From Ubuntu 20.04 LTS"
+[#]: via: "https://www.debugpoint.com/2022/04/upgrade-ubuntu-22-04-from-20-04/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "robsean"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14490-1.html"
+
+如何从 Ubuntu 20.04 LTS 升级到 Ubuntu 22.04 “Jammy Jellyfish”
+======
+
+
+s
+> 本文介绍从 Ubuntu 20.04 LTS 升级到 Ubuntu 之前,你所需要采取的完整步骤和预防措施。
+
+[Ubuntu 22.04 LTS Jammy Jellyfish][1] 将在 2022 年 4 月 21 日发布。我建议你在该日期之后的一两个月后再升级。理想的情况下,如果你在第一次修正版本发布后,才计划升级到任意主要版本,这会是最好的选择。
+
+但是,如果你迫切想要体验 Ubuntu 22.04 带来的令人震惊的更改和特色功能,那么,接下来请阅读用于完美升级过程的步骤。
+
+### 在升级前
+
+在任何升级前,遵循一些最佳的惯例总是更加明智的。这会防止出现一些升级后的问题,并引领通往成功的升级流程。
+
+ * 备份你的家目录中的数据到另一个驱动器或 USB 存储器,包括:图片、视频或其他的个人文件。
+ * 如果你遇到一个不稳定的系统行,请保留一个准备好的 [Ubuntu 的现场 USB][2]。
+ * 如果你打算升级 GNOME 工作站,请先禁用所有的 GNOME 扩展,因为这些扩展与 GNOME 3.36+ 不兼容。
+ * 在成功的升级后,你可以逐一启用这些扩展。
+ * 运行命令 `sudo apt update && sudo apt upgrade` 以确保你的系统是最新的软件包。
+ * 关闭所有你正在运行的应用程序。
+ * 重新启动你的系统。
+
+说到这里,如果你准备好了,接下来遵循下面的说明来从 Ubuntu 20.04 LTS 升级到 Ubuntu 22.04 。
+
+### 从 Ubuntu 20.04 和 Ubuntu 21.10 升级到 Ubuntu 22.04
+
+#### 在 2022 年 4 月 21 日之前
+
+如果你想在发布日期前升级,打开一个终端窗口,并运行下面的命令。
+
+```
+sudo do-release-upgrade -d
+```
+
+![Upgrade to Ubuntu 22.04 LTS from Ubuntu 20.04 LTS][3]
+
+上面的命令将使用 “jammy” 来覆盖系统中的 “focal” 分支,以获取新的软件包。不仅如此,这个命令也会禁用你这些年可能添加的所有的第三方 PPA 。
+
+此外,这个命令将花费一些时间才完成,这主要取决于你的网速。
+
+除此之外,注意终端上偶尔出现的提示,它需要你输入 `Y` 或 `N` 。另外,如果你中途取消升级过程,这些第三方 PPA 也不会被启用,你必须手动启用它们。
+
+![Summary of the upgrade][4]
+
+最后,这个命令将计算升级系统所需软件包的大小,并估算所需时间,摘要如下图所示。请仔细地阅读它,并允许升级到 Ubuntu 22.04 LTS Jammy Jellyfish。
+
+在升级过程完成后,重新启动你的系统,享受令人兴奋的 Ubuntu 22.04 LTS 。
+
+#### 在 2022 年 4 月 21 日之后
+
+在 2022 年 4 月 21 日当天或之后,直到 2022 年 07 月第一次修正版本发布,Ubuntu 都不会给予你任何可视化的升级提示,因为第一个修改版本被认为是初始错误被消除后最稳定的版本。
+
+这意味着,你要么等到 7 月,你要么强制升级。如何强制升级?打开“软件和更新Software and Updates”,转到“更新Updates”标签页。更改“通知我有新的 Ubuntu 版本Settings notify me of new ubuntu version” 为 “任意新的 Ubuntu 版本any new version”。
+
+在完成后,你应该会在桌面上看到一个升级提示。遵循屏幕上的指示,接着继续升级过程。
+
+这个提示也会计算升级系统所列软件包所需的时间,因此,仔细的阅读更新程序的输出内容。在你准备好了以后,开始升级过程。
+
+最后,在升级过程完成后,重新启动系统,享受全新的 Ubuntu 22.04 LTS Jammy Jellyfish 。
+
+#### 从 Ubuntu 21.10 升级到 Ubuntu 22.04
+
+针对 Ubuntu 21.10 ,你也可以参考上面确切说明来升级。从 Ubuntu 21.10 升级到 Ubuntu 22.04 不需要额外的步骤。
+
+#### 升级到 Ubuntu 22.04 的过程需要多长的时间?
+
+根据我的测试,在默认安装的情况下,整个升级过程需要 30 多分钟。根据你安装的软件包的数量和安装的年限,你的系统可能会更多。因此,相应地计划你的时间。
+
+### 总结
+
+最后,我希望这些步骤能帮助你成功地升级你的 Ubuntu 系统到 Jammy Jellyfish 。如果你正在打算升级,祝你一切顺利。
+
+请在下面的评论区中告诉我升级过程是如何进行的。
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/04/upgrade-ubuntu-22-04-from-20-04/
+
+作者:[Arindam][a]
+选题:[lujun9972][b]
+译者:[robsean](https://github.com/robsean)
+校对:[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/lujun9972
+[1]: https://releases.ubuntu.com/22.04/
+[2]: https://www.debugpoint.com/2018/09/how-to-create-ubuntu-linux-os-bootable-usb-in-windows/
+[3]: https://www.debugpoint.com/wp-content/uploads/2022/04/Upgrade-to-Ubuntu-22.04-LTS-from-Ubuntu-20.04-LTS-1024x540.jpg
+[4]: https://www.debugpoint.com/wp-content/uploads/2022/04/Summary-of-the-upgrade-1024x581.jpg
+[5]: https://www.debugpoint.com/2021/10/ubuntu-22-04-daily-builds/
+[6]: https://t.me/debugpoint
+[7]: https://twitter.com/DebugPoint
+[8]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[9]: https://facebook.com/DebugPoint
diff --git a/published/202204/20220416 Disable Animations in Cinnamon Desktop to Slightly Speed Up Your Linux Mint System.md b/published/202204/20220416 Disable Animations in Cinnamon Desktop to Slightly Speed Up Your Linux Mint System.md
new file mode 100644
index 0000000000..28f790b16c
--- /dev/null
+++ b/published/202204/20220416 Disable Animations in Cinnamon Desktop to Slightly Speed Up Your Linux Mint System.md
@@ -0,0 +1,74 @@
+[#]: subject: "Disable Animations in Cinnamon Desktop to Slightly Speed Up Your Linux Mint System"
+[#]: via: "https://itsfoss.com/disable-animations-cinnamon-desktop/"
+[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14499-1.html"
+
+禁用 Cinnamon 桌面的动画以略微加速你的 Linux Mint 系统
+======
+
+
+
+让我们面对现实吧。
+
+与 GNOME 等相比,Cinnamon 已经是一个轻量的桌面环境了。虽然它占用的资源可能没有 Xfce 那么低。
+
+不过,如果你有一个硬件不足的系统,并且你想要提升一点性能,而不想切换到 Xfce 等替代性桌面环境Desktop Environment(DE)或 [Sway][1]、[Fluxbox][2] 等窗口管理器Window Manager(WM)的话,我这里倒是有一个实用小技巧可以分享给你。它应该帮助你加快 Linux Mint 的速度,虽然只能够加快一点点。
+
+### 禁用 Cinnamon 桌面的动画效果
+
+**首先,你一定不要指望用这个小技巧来大幅提高整体桌面性能。原因如下:**
+
+当你打开/关闭应用程序窗口、使用菜单、弹出对话框等时,你会注意到这些动画animations或效果effects。由于这些事件都是短暂的,不会持续运行,因此禁用它们并不能得到很大提升。
+
+如果你的系统真的在崩溃的边缘挣扎,禁用这些效果可能有助于减少卡顿。真的到了这种时候,能快一点是一点。让我们来看看该怎么做吧!
+
+首先,打开菜单,搜索“效果effects”。
+
+![打开 Linux Mint Cinnamon 的效果设置][3]
+
+打开“效果effects”设置窗口,你默认会在“启用效果Enable Effects”这个标签页中。你可以在这里选择禁用(或启用)各种可用的动画效果。
+
+![禁用 Linux Mint Cinnamon 桌面的动画][4]
+
+你可以选择禁用部分或全部效果。
+
+如果你切换到“自定义Customize”标签页,你可以自定义你在“启用效果Enable Effects”标签页中看到的各种效果。
+
+![自定义 Linux Mint Cinnamon 中的窗口动画][5]
+
+第一栏是效果的名称,第二栏是动画的类型,第三栏是动画的展示方式,在最后一栏,你可以配置动画完成的时间。
+
+如果你选择了 “None”、“easeNone” 和 “0” 时长,就相当于禁用了这个效果。不过,使用另一个标签中的禁用选项是一个更简单的选择。
+
+### 值得这样做吗?
+
+我写这个小技巧的原因是,有读者问我能否定制 Cinnamon 并禁用动画。
+
+说实话,这并不费什么劲,而且做了之后也没有多大区别。你几乎不会注意到视觉上的影响,更别说是性能上的改进了。
+
+但是,如果你的系统正处于挣扎状态,每一个微小的优化都会有帮助。你也可以尝试使用消耗较少系统资源的轻量级应用程序。这或许对你也有一点帮助。
+
+你有任何类似的优化小技巧吗?请在评论区和大家分享吧!
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/disable-animations-cinnamon-desktop/
+
+作者:[Abhishek Prakash][a]
+选题:[lujun9972][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[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/lujun9972
+[1]: https://itsfoss.com/sway-window-manager/
+[2]: http://fluxbox.org/
+[3]: https://itsfoss.com/wp-content/uploads/2022/04/accessing-effects-settings-mint-cinnamon-800x630.png
+[4]: https://itsfoss.com/wp-content/uploads/2022/04/disable-animations-cinnamon-Linux-mint-800x466.png
+[5]: https://itsfoss.com/wp-content/uploads/2022/04/customize-window-animation-cinnamon-linux-mint-800x571.png
diff --git a/published/202204/20220417 How I scan family photos on Linux.md b/published/202204/20220417 How I scan family photos on Linux.md
new file mode 100644
index 0000000000..54d93d77fd
--- /dev/null
+++ b/published/202204/20220417 How I scan family photos on Linux.md
@@ -0,0 +1,64 @@
+[#]: subject: "How I scan family photos on Linux"
+[#]: via: "https://opensource.com/article/22/4/scan-family-photos-linux"
+[#]: author: "Alan Formy-Duval https://opensource.com/users/alanfdoss"
+[#]: collector: "lkxed"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14511-1.html"
+
+我如何在 Linux 上扫描家庭照片
+======
+
+> 有了 Linux,我可以用意想不到的方式与我的先辈们联系。
+
+
+
+Linux 不仅仅是在服务器上运行、为互联网提供动力的东西。它是你的数据、你的家庭历史和记忆、工作或娱乐以及现实生活的安全场所。
+
+这就是例子:现在我正在进行一个扫描家庭老照片的项目。我使用带有 GNOME 桌面的 Fedora Linux 已经有几年了,所以我不需要安装任何额外的软件包。我只是把扫描仪插入 USB 接口,启动扫描软件(文档扫描器Document Scanner),就可以了。请继续阅读,看看我是如何做到的。
+
+### 将记忆数字化
+
+许多人对了解他们的家族历史、先辈们和遗产感兴趣。随着现在技术的发展,将旧的人工制品数字化已经成为一种普遍的做法。无论是你的 80 年代的磁带收藏,还是高中的艺术作品,或者是家庭的老照片,把它们变成数字格式是一种现代的保存和未来验证的方法。
+
+我的妈妈最近给了我一些先辈们的照片,所以我有几张想保存的图片。扫描它们不仅提供了某种意义上的永久性,而且使我能够以在拍摄它们的时代闻所未闻的方式来处理它们。例如,我有一张我祖父的照片,他在我出生前几年不幸去世。通过将他的照片数字化,我可以放大,了解他,并可能以一种原本不可能的方式与他建立联系。
+
+### 工作流程
+
+首先要做的是把我的佳能扫描仪插入 USB 接口。当我打开文档扫描器时,它检测到我的 Canon LiDE 210 扫描仪。接下来,我把照片放到平板扫描仪上。我将设置调整为 2400 DPI 的图像分辨率,以确保我捕捉到每一个细节。
+
+然后我点击扫描。在这种分辨率下,扫描可能需要一些时间,但完成后,我可以根据需要裁剪图像并保存它。
+
+顺便说一下,在我扫描照片和写这篇文章的时候,我也在用一个开源的音频播放器 [Clementine][2] 在同一台电脑上欣赏我最喜欢的一些音乐。性能受到影响?一点也不。
+
+扫描完成后,我还可以选择裁剪图片并将其保存为 PDF、JPG 或任何我选择的格式。
+
+### 现实生活
+
+请允许我介绍我的祖父和我的叔叔乔治,大约在 1944 年。乔治是一名二战老兵,曾在欧洲与纳粹作战。我的祖父,在右边,是北卡罗来纳州东南部一家木材厂的工头。虽然他没有看到战场,但他负责分配到他的工厂工作的被俘纳粹战俘。他形容他们是年轻的男孩,只想回家和他们的家人在一起。
+
+![Scan of photo of my grandfather][3]
+
+(图片由:Alan Formy-Duval, CC BY-SA 4.0)
+
+### 总结
+
+作为一个专门的 Linux 桌面用户,我有时会听到有人说他们不使用 Linux,因为有一些任务它不能执行。Linux 是我使用的全部,而且在大约 14 年的时间里,我没有遇到这个问题。无论你是在寻找一种愉快的消遣,还是寻找一种提高工作效率的方法,都有可能有一种在 Linux 上运行的解决方案适合你。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/4/scan-family-photos-linux
+
+作者:[Alan Formy-Duval][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/alanfdoss
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/camera-photography-film.jpg
+[2]: https://opensource.com/life/16/10/4-open-music-players-compared
+[3]: https://opensource.com/sites/default/files/2022-04/Scanner_Picture2022.png
diff --git a/published/202204/20220418 MLCube and Podman.md b/published/202204/20220418 MLCube and Podman.md
new file mode 100644
index 0000000000..67ba1e44b4
--- /dev/null
+++ b/published/202204/20220418 MLCube and Podman.md
@@ -0,0 +1,172 @@
+[#]: subject: "MLCube and Podman"
+[#]: via: "https://fedoramagazine.org/mlcube-and-podman/"
+[#]: author: "Benson Muite https://fedoramagazine.org/author/fed500/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14515-1.html"
+
+使用 Podman 运行一个 “hello world” MLCube
+======
+
+
+
+[MLCube][2] 是一个新的基于基础设施规范的开源容器,被引入到基于 Python 的机器学习工作流程中,以实现可重复性。它可以利用诸如 [Podman][3]、[Singularity][4] 和 [Docker][5] 等工具。也支持在远程平台上的执行。开发 MLCube 的 MLCommons 最佳实践工作组的主席之一是来自 Red Hat 的 [Diane Feddema][6]。这篇介绍性文章解释了如何在 Fedora Linux 上使用 Podman 运行 [“hello world” MLCube 例子][7]。
+
+[Yazan Monshed][8] 写了一篇关于 [Fedora 上的 Podman][9] 的非常有用的介绍,对这里使用的一些步骤给出了更多细节。
+
+首先安装必要的依赖项。
+
+```
+sudo dnf -y update
+sudo dnf -y install podman git virtualenv \
+ policycoreutils-python-utils
+```
+
+然后,按照文档的要求,设置一个虚拟环境并获得示例代码。为了确保可重复性,使用一个特定的提交,因为该项目正在积极改进。
+
+```
+virtualenv -p python3 ./env_mlcube
+source ./env_mlcube/bin/activate
+git clone https://github.com/mlcommons/mlcube_examples.git
+cd ./mlcube_examples/hello_world
+git checkout 5fe69bd
+pip install mlcube mlcube-docker
+mlcube describe
+```
+
+现在,通过编辑 $HOME/mlcube.yaml 文件,将运行器命令从 `docker` 改为 `podman`,即:
+
+```
+docker: docker
+```
+
+改为:
+
+```
+docker: podman
+```
+
+如果你使用的是 x86_64 架构的电脑,你可以用以下方式获取容器:
+
+```
+mlcube configure --mlcube=. --platform=docker
+```
+
+你会看到一些选项:
+
+```
+? Please select an image:
+ ▸ registry.fedoraproject.org/mlcommons/hello_world:0.0.1
+ registry.access.redhat.com/mlcommons/hello_world:0.0.1
+ docker.io/mlcommons/hello_world:0.0.1
+ quay.io/mlcommons/hello_world:0.0.1
+```
+
+选择 `docker.io/mlcommons/hello_world:0.0.1` 来获取容器。
+
+如果你的电脑不是 x86_64 架构的,你需要构建容器。改变文件 `$HOME/mlcube.yaml`,将这一行:
+
+```
+build_strategy: pull
+```
+
+变为:
+
+```
+build_strategy: auto
+```
+
+然后用以下方法构建容器:
+
+```
+mlcube configure --mlcube=. --platform=docker
+```
+
+要运行测试,你可能需要在目录中适当地设置 SELinux 权限。你可以通过输入以下内容来检查 SELinux 是否已经启用:
+
+```
+sudo sestatus
+```
+
+应该会有类似这样的输出:
+
+```
+SELinux status: enabled
+...
+```
+
+[Josphat Mutai][10]、[Christopher Smart][11] 和 [Daniel Walsh][12] 解释说,在为容器使用的文件设置适当的 SELinux 策略时,你需要谨慎。在这里,你将允许容器读取和写入 `workspace` 目录。
+
+```
+sudo semanage fcontext -a -t container_file_t "$PWD/workspace(/.*)?"
+sudo restorecon -Rv $PWD/workspace
+```
+
+现在检查目录策略:
+
+```
+ls -Z
+```
+
+输出结果类似于:
+
+```
+unconfined_u:object_r:user_home_t:s0 Dockerfile
+unconfined_u:object_r:user_home_t:s0 README.md
+unconfined_u:object_r:user_home_t:s0 mlcube.yaml
+unconfined_u:object_r:user_home_t:s0 requirements.txt
+unconfined_u:object_r:container_file_t:s0 workspace
+```
+
+现在运行这个例子:
+
+```
+mlcube run --mlcube=. --task=hello --platform=docker
+mlcube run --mlcube=. --task=bye --platform=docker
+```
+
+最后,检查输出:
+
+```
+cat workspace/chats/chat_with_alice.txt
+```
+
+有类似于以下的文字:
+
+```
+Hi, Alice! Nice to meet you.
+Bye, Alice! It was great talking to you.
+```
+
+你可以按照 [这里][13] 的描述创建你自己的 MLCube。欢迎对 [MLCube 示例库][14] 做出贡献。[Udica][15] 是一个新项目,它承诺为容器提供更精细的 SELinux 策略控制,便于系统管理员应用。这些项目的积极开发正在进行中。对它们进行测试并提供反馈,将有助于使带有 SELinux 的系统上的安全数据管理更容易、更有效。
+
+--------------------------------------------------------------------------------
+
+via: https://fedoramagazine.org/mlcube-and-podman/
+
+作者:[Benson Muite][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/fed500/
+[b]: https://github.com/lujun9972
+[1]: https://fedoramagazine.org/wp-content/uploads/2022/04/MLCubePodman-816x345.jpg
+[2]: https://mlcommons.org/en/mlcube/
+[3]: https://podman.io/
+[4]: https://sylabs.io/singularity/
+[5]: https://www.docker.com/
+[6]: https://www.redhat.com/en/authors/diane-feddema
+[7]: https://mlcommons.github.io/mlcube/getting-started/hello-world/
+[8]: https://fedoramagazine.org/author/yazanalmonshed/
+[9]: https://fedoramagazine.org/getting-started-with-podman-in-fedora/
+[10]: https://computingforgeeks.com/set-selinux-context-label-for-podman-graphroot-directory/
+[11]: https://blog.christophersmart.com/2021/01/31/podman-volumes-and-selinux/
+[12]: https://opensource.com/article/18/2/selinux-labels-container-runtimes
+[13]: https://mlcommons.github.io/mlcube/tutorials/create-mlcube/
+[14]: https://github.com/mlcommons/mlcube_examples
+[15]: https://github.com/containers/udica
diff --git a/published/202204/20220420 AlmaLinux 9.0 Beta Is Here, Ready to Replace to RHEL 9.md b/published/202204/20220420 AlmaLinux 9.0 Beta Is Here, Ready to Replace to RHEL 9.md
new file mode 100644
index 0000000000..03ff1d6891
--- /dev/null
+++ b/published/202204/20220420 AlmaLinux 9.0 Beta Is Here, Ready to Replace to RHEL 9.md
@@ -0,0 +1,89 @@
+[#]: subject: "AlmaLinux 9.0 Beta Is Here, Ready to Replace to RHEL 9"
+[#]: via: "https://news.itsfoss.com/almalinux-9-0-beta-release/"
+[#]: author: "Jacob Crume https://news.itsfoss.com/author/jacob/"
+[#]: collector: "lujun9972"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14500-1.html"
+
+AlmaLinux 9.0 测试版来了,与 RHEL 9 同步
+======
+
+> AlmaLinux 9 Beta 发布了,跟上了最新的 RHEL 9,还有一些软件包的更新和变化。
+
+
+
+AlmaLinux 是一个流行的企业级 Linux 发行版,它刚刚宣布了 9.0 测试版,以和上游系统(RHEL 9)保持同步。
+
+让我先来提供一些背景介绍吧。AlmaLinux 在 2021 年初推出,以取代当时刚停产的 CentOS。它的主要目标之一是成为 RHEL 的替代品,特别是需要达到 100% 的二进制兼容。
+
+不要忘了,AlmaLinux 是免费的,这使得它成为 [最好的 RHEL 替代品之一][1]。
+
+作为一个注重稳定性的发行版,它并没有很多新的功能。不过,它确实有很多软件包的更新,本文将介绍逐一它们。
+
+让我们来看一看吧!
+
+### 有什么新功能?
+
+作为 RHEL 的克隆版,它几乎继承了 RHEL 9.0 测试版的所有功能。
+
+ * [Linux 5.14 内核][2]
+ * SELinux 性能改进
+ * 更新的软件包
+
+#### Linux 5.14 内核
+
+这绝对是最大的升级,Linux 5.14 内核带来了更新的硬件支持和其他各种改进。虽然与 AlmaLinux 的目标用户不是特别相关,但它确实包括了我很欣赏的 Radeon 卡的热拔插功能。
+
+除此之外,这是一个相当小的版本,它最大的卖点可能是 [紧跟在 Linux 30 周年之后发布][2]。
+
+#### SELinux 性能改进
+
+![][3]
+
+和所有的安全措施一样,SELinux 总是会对性能产生轻微的影响。虽然这在很大程度上是最小的,但它总是还有改进空间,而这个版本貌似就有性能改进。
+
+正如红帽 [博文][4] 中所展示的那样,其中一些性能改进是相当显著的。从上图可以看出,在显示的指标中,Linux 5.14 内核(蓝色)的 SELinux 性能明显好于 Linux 5.6 内核(红色)。
+
+总的来说,性能有所提升,包括开销(从大约 30 MB 提升至大约 15 MB)和文件创建时间(从大约 55 ms 提升至大约 44 ms)。
+
+#### 更新的软件包
+
+这个版本包含了大量的软件包更新。其中一些比较重要的包括 Git 2.31、PHP 8.0、Perl 5.32 和 MySQL 8.0。GCC 也更新到了 11.2 版本。
+
+有了这些更新,它应该是对更多现代标准有更好的兼容性。
+
+与上游相比,它也有一些软件包被删除。关于完整的变化列表,请参考 [官方发布说明][5]。
+
+### 总结
+
+总的来说,我认为 AlmaLinux 9.0 正在成为一个相当不错的版本,特别是当我看到了这个测试版中的改进。
+
+AlmaLinux 9.0 测试版可用于 x86_64、arch64、ppc64le 和s390x 等架构。如果你想试用 AlmaLinux 9.0 测试版,请点击下方链接前往它的官网。
+
+> [AlmaLinux 9.0 测试版][6]
+
+请注意,它还没有准备好用于生产服务器,目前仅限于测试使用。
+
+你打算从 CentOS 转到 AlmaLinux 吗?请在下面的评论中告诉我们吧!
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/almalinux-9-0-beta-release/
+
+作者:[Jacob Crume][a]
+选题:[lujun9972][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/lujun9972
+[1]: https://itsfoss.com/rhel-based-server-distributions/
+[2]: https://news.itsfoss.com/kernel-5-14-release/
+[3]: https://news.itsfoss.com/wp-content/uploads/2022/04/SELinux-Performance.jpg
+[4]: https://www.redhat.com/en/blog/improving-performance-and-space-efficiency-selinux
+[5]: https://wiki.almalinux.org/release-notes/9.0-beta.html
+[6]: https://mirrors.almalinux.org/isos.html
diff --git a/published/202204/20220420 Nushell- Cross-platform Shell That Gives You More Clarity on Error Messages.md b/published/202204/20220420 Nushell- Cross-platform Shell That Gives You More Clarity on Error Messages.md
new file mode 100644
index 0000000000..b0a837bd8d
--- /dev/null
+++ b/published/202204/20220420 Nushell- Cross-platform Shell That Gives You More Clarity on Error Messages.md
@@ -0,0 +1,110 @@
+[#]: subject: "Nushell: Cross-platform Shell That Gives You More Clarity on Error Messages"
+[#]: via: "https://itsfoss.com/nushell/"
+[#]: author: "Marco Carmona https://itsfoss.com/author/marco/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14526-1.html"
+
+Nushell: 一个让你更清楚地了解错误信息的跨平台 Shell
+======
+
+
+
+> Nushell 是一个独特的 Shell,它提供易于阅读的错误信息,以及跨平台支持。在这里可以了解到更多关于它的信息。
+
+即使你对使用终端不感兴趣,Linux 终端也常常使一些繁重的工作变得更加轻松,以及可以让你修复一些东西。因此,可以说,如果你知道自己在做什么,Linux 终端是相当强大的。
+
+这也是事实!但是当你看到一些错误消息就表明出现问题了。如果你没有足够的使用经验,可能不知道如何解决它。
+
+虽然这些错误信息试图向你传达该问题的最佳含义,但不是每个用户都能轻易理解该如何修复。对于初学者来说,这通常需要进行一些研究。但是,如果错误能更清晰一些,用户就能更快地解决它。
+
+不仅仅限于错误信息,例如,你在终端浏览文件时看到的输出结构,也不是最漂亮的。
+
+![Terminal listing several files][1]
+
+**你明白我的意思吗?** 当然,当你有更多不同类型的文件时,这可能变得更加复杂。而且,你无法从基本的 `ls` 命令的输出中了解到文件的权限、组等。
+
+这就是 Nushell 试图解决的问题。
+
+### Nushell:一个默认提供用户友好输出的 Shell
+
+![Nushell example screenshot][2]
+
+Nushell 也被称为 Nu,它的理念和灵感来自于 [PowerShell][3]、函数式编程语言和现代 [CLI][4] 工具等项目。
+
+让我给你举个例子,想象一下你只想让你的输出列出你的主目录内类型为文件的项目,包括隐藏文件。那么,要实现这一点,只要输入下面的命令就可以了:
+
+```
+ls -a | where type == 'file'
+```
+
+![Listing only files with Nushell][5]
+
+观察一下,它的语法是多么清晰和简单。现在想象一下,用 Nushell 查找进程和名称 ID、它的状态,以及 CPU 或内存消耗是多么容易。**这是它魔法的一部分!**
+
+它会尽力以专门组织的方式为你输入的命令提供适合用户的输出。
+
+### Nushell 的特点
+
+![Error messages in Nu, one of its primary highlights][6]
+
+根据现有的官方信息,它的一些最受欢迎的功能包括:
+
+ * **任何操作系统都通过管道进行控制。** Nu 可以在 Linux、macOS 和 Windows 上工作。换句话说,作为一个灵活的跨平台 shell,具有现代感。
+ * **一切都是数据。** Nu 管道使用结构化数据,所以你可以安全地选择、过滤和排序,每次都是同样的方式。
+ * **强大的插件。** 使用强大的插件系统,很容易扩展 Nu 的功能。
+ * **易于阅读的错误信息。** Nu 操作的是类型化的数据,所以它可以捕捉到其他 shell 所没有的错误。当错误发生时,Nu 会告诉你确切的位置和原因。
+ * 清晰的 IDE 支持。
+
+你可以看看它的 [官方文档][7],以全面了解它的功能和用法。
+
+### 在你的系统中安装 Nushell
+
+不幸的是,如果你是一个像我一样的 Ubuntu 用户,你将找不到安装 Nushell 的 APT 仓库。但是,你可以按照它在 [GitHub][8] 上的说明,通过安装所需的依赖项来构建它。
+
+幸运的是,有一种方法可以在任何发行版上安装它,即使用 Homebrew。到它的官方网站去了解更多的安装选项。
+
+> **[Nushell][9]**
+
+你可以参考我们关于 [在 Linux 上安装和使用 Homebrew 包管理器][10] 的教程。当你在 Linux 上成功设置了它,你需要输入以下命令来安装 Nushell:
+
+```
+brew install nushell
+```
+
+![Installing nushell with Homebrew][11]
+
+当这个过程完成后,只要输入 `nu` 就可以启动 Nushell shell。**这就完成了!**
+
+> 如果你想把 Nushell 设置为你的默认 shell,你可以用命令 `chsh` 来做,但是记住,它仍然在开发阶段,这就是为什么我们不推荐它用于日常使用。
+
+然而,在你决定尝试之前,你可以在其网站或 [GitHub 页面][8] 上了解关于它的更多信息。
+
+你对这个有趣的 shell 什么看法?请在下面的评论中告诉我你的想法。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/nushell/
+
+作者:[Marco Carmona][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://itsfoss.com/author/marco/
+[b]: https://github.com/lujun9972
+[1]: https://itsfoss.com/wp-content/uploads/2022/04/Terminal-with-several-files-800x477.png
+[2]: https://itsfoss.com/wp-content/uploads/2022/04/Nushell-example-800x475.jpg
+[3]: https://itsfoss.com/microsoft-open-sources-powershell/
+[4]: https://itsfoss.com/gui-cli-tui/
+[5]: https://itsfoss.com/wp-content/uploads/2022/04/Listing-only-files-with-nushell-800x246.png
+[6]: https://itsfoss.com/wp-content/uploads/2022/04/Error-messages-in-Nu-800x259.png
+[7]: https://www.nushell.sh/book/
+[8]: https://github.com/nushell/nushell
+[9]: https://www.nushell.sh/
+[10]: https://itsfoss.com/homebrew-linux/
+[11]: https://itsfoss.com/wp-content/uploads/2022/04/Installing-nushell-with-brew-800x470.png
diff --git a/published/202204/20220420 Ubuntu Studio 22.04 LTS - New Features and Release Details.md b/published/202204/20220420 Ubuntu Studio 22.04 LTS - New Features and Release Details.md
new file mode 100644
index 0000000000..46a8fe08b1
--- /dev/null
+++ b/published/202204/20220420 Ubuntu Studio 22.04 LTS - New Features and Release Details.md
@@ -0,0 +1,105 @@
+[#]: subject: "Ubuntu Studio 22.04 LTS – New Features and Release Details"
+[#]: via: "https://www.debugpoint.com/2022/04/ubuntu-studio-22-04-lts/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14507-1.html"
+
+Ubuntu Studio 22.04 LTS - 新功能和发布细节
+======
+
+
+
+> Ubuntu Studio 22.04 LTS “Jammy Jellyfish” 的新特性和增强功能列表。
+
+[Ubuntu Studio][1] 是 Ubuntu 的官方特色版,专门为那些主要从事图形、音频和视频工作的创作者服务。这个官方发行版在其 ISO 镜像中预装了几乎所有流行的开源创意软件,为你提供了一个现成而稳定的系统来启动你的专业工作。
+
+![Ubuntu Studio 22.04 LTS Desktop][2]
+
+### Ubuntu Studio 22.04 LTS - 新功能
+
+像所有的 Ubuntu 官方版本一样,Ubuntu Studio 22.04 LTS 基于 [Ubuntu 22.04 LTS “Jammy Jellyfish”][3]。Linux 内核 5.15 LTS 为 Ubuntu Studio 22.04 提供支持,这是一个稳定的内核,适合目前所有的现代硬件阵容。
+
+大多数创造性的工作通常发生在高端和现代的机器上;因此内核版本在 Ubuntu Studio 中是很重要的。[Linux 内核 5.15 LTS][4] 支持英特尔和 AMD 当前的 CPU/GPU 阵容。例如,这个内核带来了用于高带宽 I/O 操作的 AMD PTDMA 驱动和许多基本的更新,这对现代硬件的创造性工作非常重要。
+
+除此之外,定制的 [KDE Plasma 5.24][5] 和 KDE Framework 5.92 带来了友好的用户界面和 Ubuntu Studio 的原生深色主题和图标主题。KDE Plasma 桌面被调整为带有快捷方式和必要的系统托盘部件的顶部面板,使所有的专业工作更加流畅。
+
+此外,如果你从 Ubuntu Studio 20.04 LTS Focal Fossa 迁移到这个版本,KDE Plasma 是用户将体验到的一个新桌面。因为 Ubuntu Studio 20.04 LTS 是最后一个带有 Xfce 桌面环境的版本。而从那时起,Ubuntu Studio 已经转向了 KDE Plasma 桌面环境,以获得更好的现代技术和性能支持。
+
+#### 应用栈
+
+Ubuntu Studio 22.04 LTS 的应用栈带来了最新的稳定版本。Studio Controls(Ubuntu Studio 的本地控制中心)升级到了 2.3.0 版本,改进了混音器和插件,并修复了错误。
+
+![Studio Controls][6]
+
+除此之外,图形、视频和音频软件套件也都更新了它们的最新稳定版本。此外,如果你和上一个 LTS 版本做一个功能对比,你可能会注意到功能和改进的大规模升级。主要是针对 Blender、KDenlive 和 Ardour,因为这些超级令人印象深刻的开源应用在开发中非常活跃。
+
+不过,我们在这里列出的主要应用并不是完整清单:
+
+ * Blender v3.0.1 (3D 计算机图形)
+ * KDenlive v21.12.3 (视频编辑)
+ * Krita v5.0.2 (光栅图形绘制和动画)
+ * Gimp v2.10.24 (光栅图形绘制)
+ * Ardour v6.9 ([数字音频工作站][8])
+ * Scribus v1.5.7 (桌面出版)
+ * Darktable v3.6.0 (RAW 图像和照片管理)
+ * Inkscape v1.1.2 (矢量图形编辑器)
+ * Carla v2.4.2 (音频插件主机)
+ * Studio Controls v2.3.0 (音频管理和控制)
+ * OBS Studio v27.2.3 (流媒体应用)
+ * MyPaint v2.0.1 (简单绘画)
+
+此外,Jammy Jellyfish 的重大变化之一是引入了 [Pipewire][9] 0.3.48(与 Focal Fossa 相比)。这种现代音频和视频流服务器技术将帮助许多用户进行高级音频控制。但它可能需要命令行的调整来管理它。我不确定 Studio 团队未来是否会在 Studio 控制工具中带来额外的设置来管理 Pipewire。
+
+最后,Ubuntu Studio 团队新设计的标志与 Canonical 的品牌形象相一致,看起来令人印象深刻,在这个版本中非常突出。
+
+![Ubuntu Studio New Logo][10]
+
+### 下载和升级
+
+上述所有的应用使得 Ubuntu Studio 22.04 LTS 的 ISO 大小达到了惊人的 4GB 以上(它不能装在一张 DVD 里 ,要用 USB)。如果你想试试,你可以使用下面的链接下载 BETA 镜像。
+
+> **[ubuntustudio-22.04-beta-dvd-amd64.iso][11]**
+
+> **[ubuntustudio-22.04-beta-dvd-amd64.iso.torrent][12]**
+
+如果你打算从 Ubuntu Studio 20.04 LTS 升级到这个新版本,需要注意一下。由于桌面环境从 Xfce 变为 KDE Plasma,你不应该从 Ubuntu Studio 20.04 LTS 升级到 Ubuntu 22.04 LTS。这种方式不支持。
+
+相反,你应该进行全新的安装。重新安装可能会有点复杂和挑战,因为你已经在系统中设置了许多插件、设置和建立了音频和视频工作的工作流程。但我还是建议你这样做,因为这样可以让你在 Ubuntu Studio 22.04 LTS 中清理一下,然后用一套新的应用和桌面环境重新开始。
+
+_来自[发布说明][13]。_
+
+_专题图片由 Unsplash 上的 [Milad Fakurian][14] 拍摄。_
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/04/ubuntu-studio-22-04-lts/
+
+作者:[Arindam][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://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lujun9972
+[1]: https://ubuntustudio.org/
+[2]: https://www.debugpoint.com/wp-content/uploads/2022/04/Ubuntu-Studio-22.04-LTS-Desktop-1024x631.jpg
+[3]: https://www.debugpoint.com/2022/01/ubuntu-22-04-lts/
+[4]: https://www.debugpoint.com/2021/11/linux-kernel-5-15/
+[5]: https://www.debugpoint.com/2022/03/kde-plasma-5-24-review/
+[6]: https://www.debugpoint.com/wp-content/uploads/2022/04/Studio-Controls-1024x453.jpg
+[8]: https://www.debugpoint.com/2018/08/3-best-daw-digital-audio-workstation-apps-ubuntu-linux/
+[9]: https://gitlab.freedesktop.org/pipewire/pipewire
+[10]: https://www.debugpoint.com/wp-content/uploads/2022/04/Ubuntu-Studio-New-Logo.jpg
+[11]: https://cdimage.ubuntu.com/ubuntustudio/releases/22.04/beta/ubuntustudio-22.04-beta-dvd-amd64.iso
+[12]: https://cdimage.ubuntu.com/ubuntustudio/releases/22.04/beta/ubuntustudio-22.04-beta-dvd-amd64.iso.torrent
+[13]: https://ubuntustudio.org/ubuntu-studio-22-04-lts-release-notes/
+[14]: https://unsplash.com/@fakurian
+[15]: https://t.me/debugpoint
+[16]: https://twitter.com/DebugPoint
+[17]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[18]: https://facebook.com/DebugPoint
diff --git a/published/202204/20220421 How to Build a Career in Open Source.md b/published/202204/20220421 How to Build a Career in Open Source.md
new file mode 100644
index 0000000000..030f38073b
--- /dev/null
+++ b/published/202204/20220421 How to Build a Career in Open Source.md
@@ -0,0 +1,83 @@
+[#]: subject: "How to Build a Career in Open Source"
+[#]: via: "https://www.opensourceforu.com/2022/04/how-to-build-a-career-in-open-source/"
+[#]: author: "Navendu Pottekkat https://www.opensourceforu.com/author/navendu-pottekkat/"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14521-1.html"
+
+如何把开源作为一份职业
+======
+
+> 你是否对开源充满热情,却不知道如何在这个领域开始一段职业生涯?那么,这篇文章就是为你准备的。
+
+
+
+你知道吗?80% 的维护者认为招募新的贡献者是一个挑战,92% 的雇主认为很难雇用到开源人才。而另一方面,52% 的开发者希望为开源做出贡献,33% 的人不知道从哪里开始,31% 的人认为自己不够熟练。公共数据显示,社会对具有开源技能的人有很大的需求。因此,让我们看看如何才能够把开源作为一份职业,以填补这个供需之间的差距吧!
+
+### 掌握一个技能
+
+开源旅程的起点仅仅是你擅长的某个技能罢了。许多开发者会在空闲时间从事开源工作,他们在不熟练的领域投入精力,并把这些技能引入到技术领域里来。像机器学习(ML)、云原生和大数据分析这样的技能是很受欢迎的,因为许多项目都围绕着它们而进行。
+
+开发者必须不断尝试,直到找到自己感兴趣的东西为止。例如,当我开始在开源领域工作时,我选择了移动用户界面(UI)和 Web 开发(包括前端和后端)方面的工作。这个选择并不简单,我花了很多时间来弄清楚我想从事什么。因此,重要的是要遵循你的兴趣,通过学习和建立项目来探索不同的领域。很多时候,理论教程可能不如建立实际项目更有帮助。掌握技能的唯一方法是将所学的东西应用到实际项目中。
+
+如果你已经在某项技术和项目上投入了很长时间,那么你应该花时间好好分析一下。如果你对这个项目不感兴趣,那么放弃它可能是更好的选择。然而,这也可能是一把双刃剑。有可能你会发现一些感兴趣的东西,从而产生一个新的权衡。如果经过了充分的分析,你也知道了自己倾向于哪些技能组合,那么下一步就是建立自己的项目。
+
+### 建立一个项目
+
+无论项目的内容如何,只要它是活跃的,就会产生很大的价值。但请记住,一旦它开源了,你千万不要被大家的反应所左右。并且记住,无论你是为一个应用程序建立一个 UI,还是仅仅记录一个适当的注释、资源或 URL 的列表,你的工作都可以对开源用户有很大帮助。
+
+在很大程度上,学习不同的工具有助于建立开源项目。因此,学习关于版本控制系统、Git、GitHub 和 GitLab(大多数项目都在它们上面)的一切是很重要的。由于互联网上已经有足够的教程,我只收集了一些可以在 `navendu.me/osidays` 上找到的。你需要通过撰写文档和公开自己学到的内容,来“公开学习”才行。
+
+### 打造一份职业
+
+你可以通过三种方式在开源领域建立一份职业。
+
+#### 构建、扩展你自己的开源项目,并让它盈利
+
+如果你想要建立一个自己的项目,发现并解决问题是一个很好的经验法则。记下别人可能面临的问题,一个项目需求就这样产生了。你的项目的市场规模只能通过试验和错误来估计。对于既没有太多资金的、也没有太多经验个人贡献者来说,社交媒体、博客、帖子和会议上的讲话,都会在很大程度上有助于接触到用户。这些平台可以为你的开源项目带来巨大的流量。
+
+资金在几乎所有的商业模式中都起着重要作用。Mozilla 基金会依靠自愿捐款来资助其项目。MariaDB 采用了延迟开放源代码的商业模式。IBM 的许多开源项目遵循开放核心的商业模式,即项目的核心部分是开源的,而周围的附加部分是闭源的和专有的。红帽公司不出售代码,而是出售专业服务,如支持、工具和围绕项目的技术援助。这些商业模式的例子可以被采用,以此来建立一个项目,将它开源,并使其盈利。
+
+> “即使你不是维护者,也要做维护者的工作。”
+
+#### 在一个以开源商业模式建立项目的公司工作
+
+成为贡献者和维护者社区的一份子,参与会谈和参加会议将有助于你为项目做出贡献。你可以根据引导来完成第一次贡献,但它不一定得是代码。一个大的代码库可能看起来很吓人,但关键是要从小的地方着手。找到一个问题并解决它,这将有助于你了解贡献流程、代码库和项目设置等。
+
+非代码的贡献也是有价值的。擅长写作的人可以通过撰写文档,或者为社交媒体写作来贡献。擅长设计的人,可以设计一个模板、一个颜色方案,或者也可以致力于创造一个更好的用户界面。与资深工程师相比,新人发现错误的概率很高。他们可以测试、确认并报告他们的用户体验,从而提升项目质量。另一个领域是新手引导,很多开源项目将导师和新手联系起来,并帮助后者做出重要贡献。还有一个选择是成为组织者或社区管理员,这意味着你将承担起项目经理的角色,确保功能完全按照预期交付,路线图得到遵循,贡献者得到照顾。大多数开源项目缺乏适当的管理,因为工程师们都不喜欢做这一类工作。
+
+社会上有很多实习项目可以帮助你赚钱,比如谷歌的编程之夏(GSoC)和 Linux 基金会的导师制(在这里,被指导者有津贴,可以根据需要全职或兼职工作)。如果你能很好地发展你的技能,你可以在你实习的公司获得一个全职的职位。例如,如果你在红帽公司的一个项目中工作,你有机会被全职雇用,因为你在那里已经有了知名度。
+
+正如 NumPy、SciPy 和 Anaconda 的作者 Travis Oliphant 所说,“建立一个开源项目,让人们为它做出贡献,然后从他们当中招聘。” —— 这也是我获得全职工作的方式。
+
+* 随着时间的推移,你所做贡献的质量和数量会不断提升。最好长期参与一个项目,因为这样可以发现更多的贡献领域。投身进去做贡献会让人们注意到并认可你。
+* 开源项目缺乏项目经理,因此成为项目经理将有助于你的职业生涯。
+* 成为一个维护者,做一些工程师应该做的事情,如审阅代码、设计系统、撰写文档和帮助他人做出贡献。
+* 好的贡献的关键是“提前付出”,这意味着你需要通过分享经验和智慧来帮助新人,并确保他们不犯错误。
+
+#### 获得赞助以从事开源工作
+
+作为个人,如果你正在为某个公司建立的项目而工作,你可以要求获得资助。值得注意的是,只有当你的贡献很大时,组织才会乐意赞助你。但是,如果你建立了自己的项目,并且有大量的用户群,你可以向用户要求资助。
+
+作为一个组织,你可以通过像 Open Collective、Patreon 和 GitHub Sponsors 这样的平台来筹集资金,让人们为你的项目捐款。像 Linux 基金会和 Mozilla 基金会这样的开源巨头也提供资金来支持项目。GitHub 已经给 15 个印度贡献者的项目提供了资助。
+
+我曾经花了三个月时间建立了一个开源项目。这个项目后来被 《Product Hunt》 和 《JS Weekly》报道,还在上过 GitHub 趋势榜排名第一的位置。正是这个项目让我走上了开源事业的道路。
+
+*本文由 Sharon Abhignya Katta 转录并策划*
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/04/how-to-build-a-career-in-open-source/
+
+作者:[Navendu Pottekkat][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/navendu-pottekkat/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/03/Target-Achievement-and-Teamwork-Business-Concept-696x607.jpg
diff --git a/published/202204/20220421 Ubuntu 22.04 LTS is Now Available for Linux Desktop and Raspberry Pi.md b/published/202204/20220421 Ubuntu 22.04 LTS is Now Available for Linux Desktop and Raspberry Pi.md
new file mode 100644
index 0000000000..fdbcfd7e97
--- /dev/null
+++ b/published/202204/20220421 Ubuntu 22.04 LTS is Now Available for Linux Desktop and Raspberry Pi.md
@@ -0,0 +1,184 @@
+[#]: subject: "Ubuntu 22.04 LTS is Now Available for Linux Desktop and Raspberry Pi"
+[#]: via: "https://news.itsfoss.com/ubuntu-22-04-release/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: "wxy"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14496-1.html"
+
+Ubuntu 22.04 LTS 发布!
+======
+
+> Ubuntu 22.04 LTS 带来了许多惊喜,还带来了 GNOME 42,以及 Canonical 的新品牌/标志。
+
+
+
+迫不及待地想尝试 Ubuntu 22.04 LTS?那么,它终于可以下载和升级了。(LCTT 译注:升级还要等几天,还存在一些小问题)
+
+它带来了 [大量令人印象深刻的功能][1],其中 GNOME 42 和树莓派桌面支持是其主要亮点。
+
+现在,它已经就绪。在你决定尝试之前,让我们花点时间来看看这个版本最重要的变化。
+
+### Ubuntu 22.04 LTS 的新变化
+
+Ubuntu 22.04 是一次主要版本升级,其包括了桌面环境的改进、视觉上的变化和一些新增的功能。
+
+如果你正在使用 Ubuntu 20.04 LTS,想知道它们之间的区别,你可以查看我们的《[Ubuntu 20.04 vs Ubuntu 22.04 LTS][2]》文章来了解。
+
+毫无疑问,这是一个 [长期支持][3]Long-Term Support (LTS)版本。所以,你可以期待它维护更新到 2027 年,也就是五年的支持。一些最显著的变化包括:
+
+#### 1、强调色的选择
+
+虽然大多数基于 Ubuntu 的 Linux 发行版提供了设置强调色的功能,但你必须使用 [GNOME 优化][4]GNOME Tweaks 才能做到。
+
+![][5]
+
+现在,在 Ubuntu 22.04 中,你可以轻松地设置你所选择的强调色,它会影响到文件夹、通知区和桌面体验的其他元素。
+
+#### 2、GNOME 42
+
+![][6]
+
+期待已久的桌面环境升级来了。虽然 Ubuntu 22.04 的 GNOME 实现并不提供水平停靠区,但会有其它好处加成。
+
+你应该能够在 Ubuntu 22.04 LTS 中体验到所有 [GNOME 42 的优点][7]。不幸的是,你仍然会发现几个版本号是 41 的应用程序。
+
+开发者提到,他们需要更多的时间来测试使用 [libadwaita][8] 的应用程序。
+
+话虽如此,在你继续阅读时,我也会提到 GNOME 42 所带来的有趣的更多功能。
+
+#### 3、新的屏幕截图工具
+
+![][9]
+
+与 Ubuntu 20.04 LTS 不同,你不能用 `PrtScrn`(或任何其他指定的快捷键)来直接抓拍全屏图片。
+
+相反,如果你按下快捷键来截图,就会弹出来这个新的截图工具。
+
+这不仅体验更加直观,而且还支持屏幕录制。因此,这是一个相当令人激动的变化!
+
+#### 4、深色模式的改进
+
+虽然我们已经有了深色模式,但它并不是一个完美的系统级实现。
+
+感谢 [elementary OS 6][10],GNOME 42 受到启发,实现了系统级的深色模式,更好地融合在一起以保持一致性。
+
+![][11]
+
+#### 5、Firefox 变成了 Snap 版本
+
+![][12]
+
+从 deb 包到 Snap 的过渡已经进行了一段时间了。
+
+在 Ubuntu 22.04 中,Firefox 现在将默认以 Snap 包出现,在 Mozilla 的共同努力下,旨在推动更快的安全更新,并确保无需维护许多东西即可实现跨发行版的支持。
+
+沙盒化的 Firefox 体验也应该可以提供更好的安全性。
+
+你可以在这个 [论坛帖子][13] 中阅读更多关于该决定背后的信息。
+
+#### 6、桌面图标出现在底部
+
+![][14]
+
+默认情况下,桌面图标可以在右上角的区域看到,靠近停靠区。
+
+现在,在 Ubuntu 22.04 中,默认的桌面图标位置已经被改为底部。你可以通过“外观Appearance”设置中的选项来改变这一点。
+
+#### 7、缩小停靠区的能力
+
+如果你不喜欢停靠区占据了整个左侧区域,你可以改变它。
+
+你需要禁用“外观Appearance”调整中停靠区设置下的“面板Panel”模式,如下图所示:
+
+![][15]
+
+这将分离出停靠区,并提供现代桌面体验的浮动效果。
+
+#### 8、树莓派桌面支持
+
+Ubuntu 22.04 是第一个也可用于树莓派的桌面 LTS 版本。
+
+随着 [zswap 的引入][16],树莓派的性能应该会在 Ubuntu 22.04 中得到显著提升。
+
+它甚至可以 [在 2GB 的树莓派 4 变体型号上运行][16]。你可以在你的树莓派上测试这些改进。
+
+#### 9、使用 Ubuntu Advantage
+
+![][17]
+
+Ubuntu Advantage 是为企业和商家提供的高级订阅,无需重新启动即可获得重要的安全更新。
+
+对于大多数桌面用户来说,这不是什么有用的东西。然而,如果你想获得 Ubuntu Advantage 订阅,并将你的系统接驳到它,你可以通过导航到“软件 & 更新Software & Updates”下的 Livepatch 部分轻松做到这一点。
+
+#### 10、Linux 内核 5.17 和 Linux 内核 5.15 LTS
+
+[Linux 内核 5.15 LTS][18] 是一个重要的升级,它改进了 NTFS 驱动,对即将到来的英特尔独立显卡提供了初步支持,并有更多的性能改进。
+
+对于你的桌面计算机,你应该注意到 Linux 内核 5.15 开箱即用。
+
+Ubuntu 服务器版也采用了 Linux 内核 5.15 LTS。
+
+然而,Ubuntu 22.04 也在最新一代认证设备(OEM)上使用了 [Linux 内核 5.17][19]。
+
+因此,在这个版本中,Ubuntu 根据产品的不同打包了多个内核。
+
+#### 11、RISC-V 的现场镜像
+
+从 Ubuntu 22.04 开始,你会发现单独的可用 RISC-V 架构的现场镜像live image。
+
+#### 其他变化
+
+除了上面提到的主要变化外,升级后的其他一些重大变化包括。
+
+ * 较新的软件包,如 OpenSSL 3.0、Ruby 3.0、Python 3.10、PHP 8.1 等。
+ * 更新的应用程序,包括 Firefox 99、LibreOffice 7.3 和Thunderbird 91。
+
+你可以看一下它的 [官方发布说明][20] 来探索所有的技术变化。
+
+### 下载或升级到 Ubuntu 22.04 LTS
+
+如果你想通过使用 ISO 进行全新安装来体验新的 LTS 版本,请前往下面链接的官方网站进行下载。
+
+> [下载 Ubuntu 22.04 LTS][21]
+
+而当它的更新可用时,你可以参考我们的 [升级指南][22]。
+
+> **注意:** 你可以进行全新的安装,但是你还不能升级到 Ubuntu 22.04 LTS(由于 snapd 和 update-notifier 软件包的错误有待修复)。你应该在接下来的几天里收到更新通知。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/ubuntu-22-04-release/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][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/lujun9972
+[1]: https://itsfoss.com/ubuntu-22-04-release-features/
+[2]: https://itsfoss.com/ubuntu-20-04-vs-22-04/
+[3]: https://itsfoss.com/long-term-support-lts/
+[4]: https://itsfoss.com/gnome-tweak-tool/
+[5]: https://news.itsfoss.com/wp-content/uploads/2022/03/ubuntu-22-04-accent-change.jpg
+[6]: https://news.itsfoss.com/wp-content/uploads/2022/04/ubuntu-22-04-desktop.jpg
+[7]: https://news.itsfoss.com/gnome-42-release/
+[8]: https://news.itsfoss.com/gnome-libadwaita-library/
+[9]: https://news.itsfoss.com/wp-content/uploads/2022/03/ubuntu-22-04-screenshot-ui.jpg
+[10]: https://news.itsfoss.com/elementary-os-6-features/
+[11]: https://news.itsfoss.com/wp-content/uploads/2022/03/ubuntu-22-04-dark-mode.png
+[12]: https://news.itsfoss.com/wp-content/uploads/2022/03/firefox-as-snap.png
+[13]: https://discourse.ubuntu.com/t/feature-freeze-exception-seeding-the-official-firefox-snap-in-ubuntu-desktop/24210
+[14]: https://news.itsfoss.com/wp-content/uploads/2022/04/ubuntu-22-04-desktop-icon.jpg
+[15]: https://news.itsfoss.com/wp-content/uploads/2022/04/ubuntu-22-04-dock-shrink.jpg
+[16]: https://news.itsfoss.com/ubuntu-desktop-raspberry-pi-4/
+[17]: https://news.itsfoss.com/wp-content/uploads/2022/04/ubuntu-livepatch.jpg
+[18]: https://news.itsfoss.com/linux-kernel-5-15-release/
+[19]: https://news.itsfoss.com/linux-kernel-5-17-release/
+[20]: https://discourse.ubuntu.com/t/jammy-jellyfish-release-notes/24668
+[21]: https://ubuntu.com/download/desktop
+[22]: https://itsfoss.com/upgrade-ubuntu-version/
diff --git a/published/202204/20220422 Experience Ubuntu Unity 22.04 LTS With These New Features.md b/published/202204/20220422 Experience Ubuntu Unity 22.04 LTS With These New Features.md
new file mode 100644
index 0000000000..1cfdf2381a
--- /dev/null
+++ b/published/202204/20220422 Experience Ubuntu Unity 22.04 LTS With These New Features.md
@@ -0,0 +1,97 @@
+[#]: subject: "Experience Ubuntu Unity 22.04 LTS With These New Features"
+[#]: via: "https://www.debugpoint.com/2022/04/ubuntu-unity-22-04-lts/"
+[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14516-1.html"
+
+Ubuntu Unity 22.04 LTS 新功能体验
+======
+
+> Ubuntu Unity 22.04 LTS 中的新功能和软件包,带来了精心策划的 Unity 桌面。
+
+Ubuntu Unity 是 Ubuntu 的一个非官方版本,提供了 Unity 桌面环境。Unity 桌面环境是由 Canonical 在十年前创建的,而后在 Ubuntu 18.04 “Bionic Beaver” 发布后被 [放弃了][1],Ubuntu 转而使用了 GNOME 桌面。随着 Ubuntu 22.04 LTS 的发布,Ubuntu Unity 的小团队发布了 Ubuntu Unity 22.04 LTS Linux 发行版。
+
+![Nice and Clean Ubuntu Unity 22.04 LTS][2]
+
+### Ubuntu Unity 22.04 LTS - 新功能
+
+抛开历史不谈,Ubuntu Unity 22.04 LTS 带来了 Unity7 桌面环境,并与 Jammy Jellyfish 版本保持了一致的变化。该版本的核心是基于 [Ubuntu][3] 的底层软件包和 [Linux 内核 5.15][4] 。Linux 内核 5.15 支持所有主流的 GPU、CPU 和其他硬件阵容,让你可以在你的硬件上自由使用这个发行版。
+
+此外,在此版本中自然有 Unity 桌面的主要魅力所在,即搜索应用的全局 HUD 和所有应用都有的全局菜单。也许,很多人喜欢 Unity 就是因为它的全局 HUD(通过 `META` 键启动),这是一个搜索、启动或做任何事情的单一入口点。
+
+![Global HUD in Ubuntu Unity 22.04][5]
+
+它基本上就像是 KDE Plasma 中的 [KRunner][6]。另外,它的全局菜单使应用看起来更漂亮,并节省了宝贵的屏幕空间。而且,该团队还为 Unity 桌面带来了定制的 Yaru 主题,有浅深两款。
+
+![Global Menu in Ubuntu 22.04 with LibreOffice Calc][7]
+
+除此之外,应用列表也有些不同,与基本的 Ubuntu GNOME 版本相比,它提供了各种基本用途的应用。比如,它用 Nemo 文件管理器代替了 GNOME 中的 “文件”,以及来自 MATE 桌面软件包的 Pluma 文本编辑器。
+
+不包括 Nautilus/“文件” 是明智的,因为要做全部的 GTK4 和 libadwaita 移植工作。对于 Unity 桌面来说,这需要太多的工作,而其他的解决方案也可以有效地工作。
+
+此外,在 Ubuntu Unity 22.04 LTS 中使用了 GNOME “软件” 41.5,安装和删除软件变得很容易。虽然它是一个 GNOME 41+ 系列的应用,但在 Unity 桌面外观下,它看起来很优雅。但它没有全局菜单,因为它的软件设计原则本身就没有传统的文件菜单栏。
+
+#### 外观和感觉
+
+但这还不是全部。Unity 桌面为你提供了大量的自定义选项,通过外观设置来选择基础主题、启动器图标大小和位置,以及其他 Unity 桌面的基本设置。如需进一步配置,你可以得到预装的 Unity Tweak 工具,它为你提供了更多额外的选项,使你的桌面成为你想要的样子。
+
+最后,在这个版本中,以官方吉祥物 Jammy Jellyfish 为特色的一组迷人的墙纸为整个 Unity 桌面体验增色不少。
+
+![Unity Tweak Tool][9]
+
+### 总结和下载
+
+作为总结,下面是 Ubuntu Unity 22.04 版本中的应用组合:
+
+ * 基于 Ubuntu 22.04 LTS “Jammy Jellyfish”
+ * Linux 内核 5.15
+ * Unity 7.5.1
+ * Flatpak 和 Flathub 作为默认安装方式
+ * Nemo 文件管理器 5.2.4
+ * Atril 文档浏览器 1.26
+ * Pluma 文本编辑器 1.26
+ * VLC 媒体播放器 3.0.16
+ * EOM(Eye of MATE)图像查看器 1.26
+ * MATE 系统监视器
+ * Firefox 99(Snap)
+ * LibreOffice 7.3.2.2
+ * Unity Tweak Tool
+
+最后,如果你想重温 Unity 的美好时光,可以从以下链接下载官方 ISO。
+
+> **[下载 Ubuntu Unity][10]**
+
+不要忘记以任何能力为官方项目做出贡献,以帮助团队继承伟大的 Unity 桌面概念的遗产。
+
+_参考自 [公告][11]_
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/04/ubuntu-unity-22-04-lts/
+
+作者:[Arindam][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://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lujun9972
+[1]: https://ubuntu.com/blog/growing-ubuntu-for-cloud-and-iot-rather-than-phone-and-convergence
+[2]: https://www.debugpoint.com/wp-content/uploads/2022/04/Nice-and-Clean-Ubuntu-Unity-22.04-LTS-1024x576.jpg
+[3]: https://www.debugpoint.com/2022/01/ubuntu-22-04-lts/
+[4]: https://www.debugpoint.com/2021/11/linux-kernel-5-15/
+[5]: https://www.debugpoint.com/wp-content/uploads/2022/04/Global-HUD-in-Ubuntu-Unity-22.04-1024x574.jpg
+[6]: https://www.debugpoint.com/2021/12/kde-plasma-hidden-feature/
+[7]: https://www.debugpoint.com/wp-content/uploads/2022/04/Global-Menu-in-Ubuntu-22.04-with-LibreOffice-Calc-1024x574.jpg
+[9]: https://www.debugpoint.com/wp-content/uploads/2022/04/Unity-Tweak-Tool.jpg
+[10]: https://ubuntuunity.org/download/
+[11]: https://ubuntuunity.org/blog/ubuntu-unity-22.04/
+[12]: https://t.me/debugpoint
+[13]: https://twitter.com/DebugPoint
+[14]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
+[15]: https://facebook.com/DebugPoint
diff --git a/published/20220414 A guide to JVM parameters for Java developers.md b/published/20220414 A guide to JVM parameters for Java developers.md
new file mode 100644
index 0000000000..bc2cceb4e2
--- /dev/null
+++ b/published/20220414 A guide to JVM parameters for Java developers.md
@@ -0,0 +1,224 @@
+[#]: subject: "A guide to JVM parameters for Java developers"
+[#]: via: "https://opensource.com/article/22/4/jvm-parameters-java-developers"
+[#]: author: "Jayashree Huttanagoudar https://opensource.com/users/jayashree-huttanagoudar"
+[#]: collector: "lkxed"
+[#]: translator: "Veryzzj"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14553-1.html"
+
+面向 Java 开发人员的 JVM 参数指南
+======
+
+
+
+> 通过理解和使用 JVM 以及 JVM 参数,开发人员和最终用户都可以诊断故障并且提高 Java 应用程序的性能。
+
+当你在编写源代码时,你是在编写人类可以阅读的代码。在将代码编译成机器语言之前,计算机无法执行它。机器语言是一个通用术语,指的是特定机器所需的任意数量的语言。通常,如果你在 Linux 上编译代码,它只能 Linux 上运行;如果你在 Windows 上编译代码,它就只在 Windows 上运行。但是,Java 是不同的,它并不以真实的机器为目标,而是面向 Java 虚拟机Java Virtual Machine(JVM)。因此,它可以在任何机器上运行。
+
+Java 源代码被编译成字节码bytecode,然后由安装在计算机上的 JVM 运行。JVM 是一个执行引擎,但我们通常不会直接与它交互。它在后台静默运行,替我们处理 Java 字节码。大多数人不需要考虑,甚至也不需要知道 JVM。但是,了解它的工作原理是对我们来说是非常有用的,因为这会有助于我们调试和优化 Java 代码。例如:
+
+* 在生产环境中,你发现已经部署的应用程序可能需要提升性能。
+* 如果你写的应用程序出错了,开发人员和最终用户都可以选择对问题进行调试。
+* 如果你想了解关于 JDK(即 Java 开发工具包Java Development Kit,用于开发/运行 Java 应用程序)的详细信息,你可以通过查询 JVM 来获取。
+
+本文介绍了一些基础的 JVM 参数,希望在这些场景中可以提供帮助。
+
+![JVM 参数][2]
+
+(图源:Jayashree Huttanagoudar,CC BY-SA 4.0)
+
+### JVM、JDK 和 JRE 有什么不同?
+
+Java 有许多 J 开头的缩略词,包括 JVM、JDK 和 JRE。
+
+* Java 开发工具包Java Development Kit(JDK)可供需要在代码中使用开发库的程序员使用。
+* Java 运行时环境Java Runtime Environment(JRE)可供想运行 Java 应用程序的人使用。
+* Java 虚拟机Java Virtual Machine(JVM)是运行 Java 字节码的组件。
+
+JDK 同时包含 JRE 和 JVM,但有些 Java 发行版提供了包含 JRE(包括 JVM)的替代下载。
+
+![JDK][3]
+
+(图源:Jayashree Huttanagoudar,CC BY-SA 4.0)
+
+Java 是开源的,因此,许多不同的公司都会构建和发行他们自己的 JDK 发行版。你可以在系统上安装多个 JDK,这会对你参与或者运行不同的 Java 项目时很有帮助,因为其中一些项目可能使用旧版本的 JDK。
+
+你可以使用 `alternatives` 命令,来查看 Linux 系统上的 JDK 列表:
+
+```
+$ alternatives --config java
+There are 2 programs that provide java.
+Selection Command
+-----------------------------------------------
+*+ 1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-2.fc35.x86_64/bin/java)
+2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.fc35.x86_64/jre/bin/java)
+
+Enter to keep the current selection[+], or type selection number:
+```
+
+如果想要在可用的 JDK 之间进行切换,请再次执行该命令:
+
+```
+$ sudo alternatives --config java
+```
+
+或者可以使用 [SDKMan][4],它可以下载、更新和管理系统中的所有 JDK。
+
+### 什么是 JVM 调优?
+
+JVM 调优指的是,通过调整 JVM 参数,来提高 Java 应用程序性能的过程,它还有助于诊断应用程序的故障。
+
+通常情况下,在调试之前需要考虑以下几点:
+
+* **成本**:有时改进运行代码的硬件可以提高应用程序的性能。这可能看起来像是在“作弊”,但请考虑你愿意花多少时间调整 JVM 参数。有时应用程序需要更多的内存来执行所需的功能,而这点是任何软件技术都无法改变的。
+* **期望结果**:长期来看,稳定性比性能更重要。如果你的调优对稳定性产生了影响,那么谨慎地选择你的调优参数可能会更好。
+* **底层问题**:有时,问题可能是主机操作系统的底层问题。那么,在调整 JVM 之前,请确保 JVM 平台按预期工作。
+* **内存泄漏**:如果你在使用垃圾回收(GC)调优参数,那么,应用程序代码中很可能会存在需要修复的内存泄漏。
+
+### 参数类型
+
+JVM 参数可以分为以下三类:标准参数、非标准参数和高级选项。
+
+#### 标准参数
+
+所有的 JVM 实现都支持标准参数,在终端执行 `java` 命令来查看标准参数列表:
+
+```
+$ java
+Usage: java [options] [args...]
+ (to execute a class)
+ or java [options] -jar [args...]
+ (to execute a jar file)
+
+ where options include:
+
+ -cp
+ -classpath
+ --class-path
+ A : separated list of directories, JAR archives,
+ and ZIP archives to search for class files.
+ --enable-preview
+ allow classes to depend on preview features of this release
+
+To specify an argument for a long option, you can use --= or
+--.
+```
+
+这些是所有 JVM 都会包含的标准参数,你可以像使用任何 [命令行选项][5] 一样安全地使用它们。例如,要验证配置的命令选项,创建 VM 并加载主类而不执行主类,请使用:
+
+```
+$ java --dry-run
+```
+
+#### 非标准参数
+
+非标准选项以 `-X` 开头。这些是通用的,并且特定于 JVM 的特定实现。要列出这些参数,请输入:
+
+```
+$ java -X
+-Xbatch disable background compilation
+-Xbootclasspath/a:
+append to end of bootstrap class path
+-Xinternalversion
+displays more detailed JVM version information than the
+-version option
+-Xloggc: log GC status to a file with time stamps
+[...]
+```
+
+在这些参数可能会不经通知就发生变化。而且,并非所有 JVM 实现都支持这些参数。
+
+微软构建的 JVM 可能与 RedHat 构建的 JVM 有不同的参数,诸如此类。
+
+要获取详细的 JVM 版本信息,请使用如下命令:
+
+```
+$ java -Xinternalversion --version
+OpenJDK 64-Bit Server VM (11.0.13+8) for linux-amd64 JRE (11.0.13+8), built on Nov 8 2021 00:00:00 by "mockbuild" with gcc 11.2.1 20210728 (Red Hat 11.2.1-1)
+```
+
+要获取这些属性设置,请使用:
+
+```
+$ java -XshowSettings:properties --version
+```
+
+#### 高级选项
+
+这些参数不是随意使用的,而是用于调整 Hotspot VM 的特定区域。这些参数可能会发生变化,并且不能保证得到所有 JVM 实现的支持。
+
+这些参数以 `-XX` 开头。如需列出参数列表,使用如下命令:
+
+```
+$ java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
+```
+
+例如,需要跟踪类的加载,那么使用下面的命令:
+
+```
+$ java -XX:+TraceClassLoading Hello
+```
+
+在 `Hello.java` 中:
+
+```
+public class Hello {
+ public static void main(String[] args) {
+ System.out.println("Inside Hello World!");
+ }
+}
+```
+
+另一个可能会面临的问题是 OOM(内存超出Out Of Memory)错误,它发生的时候可能没有太多的调试信息。为了解决这个问题,使用调试参数 `-XX:+HeapDumpOnOutOfMemoryError`,它可以创建一个带有调试信息的 `.hprof` 文件。
+
+```
+// TestClass.java
+import java.util.ArrayList;
+import java.util.List;
+
+public class TestClass {
+ public static void main(String[] args) {
+ List”的缩写。
+
+甚至在 Windows 11 上,微软也在不断地改进 [WSL][2] 的体验。
+
+虽然 CBL Mariner 被用来支持 WSLg(WSL 2 的 GUI 部分)和 Azure,但最近一些媒体([ZDNet][3])报道发现了微软内部使用的另一个 Linux 发行版。
+
+微软肯定喜欢 Linux,对吗?
+
+### CBL-Delridge:一个基于 Debian 的 Linux 发行版
+
+![][4]
+
+微软维护着一个基于 Debian 的发行版,它被用来支持 Azure 的“云端外壳Cloud Shell”。它的名字是 “CBL-Delridge”。
+
+感谢 [Hayden Barnes][5],他是 SUSE 公司负责 Windows 容器的高级工程经理。
+
+在他 2022 年 2 月的一篇 [旧博文][6] 中,他透露了关于它的更多细节,并帮助你构建它以在需要时将其导入 WSL。
+
+与从头构建的 CBL-Mariner 不同,CBL-Delridge(CBL-D)是基于 Debian 10(Buster)的。
+
+看到 Debian 在这里受到青睐并不奇怪,即使是 [谷歌也为其内部的 Linux 发行版 gLinux 抛弃了 Ubuntu 而选择了 Debian][7]。
+
+有趣的是,微软在 2020 年发布了这个供内部使用的发行版(根据 Hayden 维护的 [微软的开源举措的非官方时间表][8]),而我们在 2022 年才知道了它。
+
+![][9]
+
+CBL-Delridge 也采用了同样的版本号 10(巧合),代号为 “Quinault”。解析一下这个名字,ZDNet 指出,Delridge 是西雅图西部的一个区,而 Quinault 指的是华盛顿州奥林匹克国家公园的一个山谷。
+
+### 构建 CBL-Delridge
+
+与普通的 Linux 发行版不同,你找不到它的可以公开下载的镜像文件。
+
+考虑到 CBL-D 的 APT 软件包库是公开的,如果你出于任何需求想测试它,你可以构建你的 CBL-D 镜像。
+
+你也可以把它导入 WSL 中。[Hayden 的博文][10] 解释了如何使用 debootstrap 来开始构建镜像,然后将其导入 WSL。
+
+请注意,CBL-D 并不完全是 Debian 的替代品。所以,你可能无法找到所有你喜欢的软件包。要了解更多的信息,你可以浏览 Hayden 的博文。
+
+你对微软的内部使用的 Linux 发行版有什么看法?你试过其中一个吗?请在评论中告诉我你的想法。
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/microsoft-debian-distro/
+
+作者:[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/05/microsoft-new-debian-based-linux-distro.jpg
+[2]: https://news.itsfoss.com/windows-11-wsl/
+[3]: https://www.zdnet.com/article/surprise-theres-yet-another-microsoft-linux-distro-cbl-delridge/
+[4]: https://news.itsfoss.com/wp-content/uploads/2022/05/azure-delridge.png
+[5]: https://twitter.com/unixterminal
+[6]: https://boxofcables.dev/building-cbl-d-microsofts-other-linux-distro/
+[7]: https://itsfoss.com/goobuntu-glinux-google/
+[8]: https://github.com/sirredbeard/microsoft-opensource
+[9]: https://news.itsfoss.com/wp-content/uploads/2022/05/wsl-cbl-delridge-1024x600.png
+[10]: https://boxofcables.dev/building-cbl-d-microsofts-other-linux-distro/
diff --git a/published/20220516 Structured Data Processing with Spark SQL.md b/published/20220516 Structured Data Processing with Spark SQL.md
new file mode 100644
index 0000000000..33a25c2f6d
--- /dev/null
+++ b/published/20220516 Structured Data Processing with Spark SQL.md
@@ -0,0 +1,123 @@
+[#]: subject: "Structured Data Processing with Spark SQL"
+[#]: via: "https://www.opensourceforu.com/2022/05/structured-data-processing-with-spark-sql/"
+[#]: author: "Phani Kiran https://www.opensourceforu.com/author/phani-kiran/"
+[#]: collector: "lkxed"
+[#]: translator: "geekpi"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14631-1.html"
+
+用 Spark SQL 进行结构化数据处理
+======
+
+> Spark SQL 是 Spark 生态系统中处理结构化格式数据的模块。它在内部使用 Spark Core API 进行处理,但对用户的使用进行了抽象。这篇文章深入浅出地告诉你 Spark SQL 3.x 的新内容。
+
+
+
+有了 Spark SQL,用户可以编写 SQL 风格的查询。这对于精通结构化查询语言或 SQL 的广大用户群体来说,基本上是很有帮助的。用户也将能够在结构化数据上编写交互式和临时性的查询。Spark SQL 弥补了弹性分布式数据集resilient distributed data sets(RDD)和关系表之间的差距。RDD 是 Spark 的基本数据结构。它将数据作为分布式对象存储在适合并行处理的节点集群中。RDD 很适合底层处理,但在运行时很难调试,程序员不能自动推断模式schema。另外,RDD 没有内置的优化功能。Spark SQL 提供了数据帧DataFrame和数据集来解决这些问题。
+
+Spark SQL 可以使用现有的 Hive 元存储、SerDes 和 UDF。它可以使用 JDBC/ODBC 连接到现有的 BI 工具。
+
+### 数据源
+
+大数据处理通常需要处理不同的文件类型和数据源(关系型和非关系型)的能力。Spark SQL 支持一个统一的数据帧接口来处理不同类型的源,如下所示。
+
+* 文件:
+ * CSV
+ * Text
+ * JSON
+ * XML
+* JDBC/ODBC:
+ * MySQL
+ * Oracle
+ * Postgres
+* 带模式的文件:
+ * AVRO
+ * Parquet
+* Hive 表:
+ * Spark SQL 也支持读写存储在 Apache Hive 中的数据。
+
+通过数据帧,用户可以无缝地读取这些多样化的数据源,并对其进行转换/连接。
+
+### Spark SQL 3.x 的新内容
+
+在以前的版本中(Spark 2.x),查询计划是基于启发式规则和成本估算的。从解析到逻辑和物理查询计划,最后到优化的过程是连续的。这些版本对转换和行动的运行时特性几乎没有可见性。因此,由于以下原因,查询计划是次优的:
+
+* 缺失和过时的统计数据
+* 次优的启发式方法
+* 错误的成本估计
+
+Spark 3.x 通过使用运行时数据来迭代改进查询计划和优化,增强了这个过程。前一阶段的运行时统计数据被用来优化后续阶段的查询计划。这里有一个反馈回路,有助于重新规划和重新优化执行计划。
+
+![Figure 1: Query planning][2]
+
+#### 自适应查询执行(AQE)
+
+查询被改变为逻辑计划,最后变成物理计划。这里的概念是“重新优化”。它利用前一阶段的可用数据,为后续阶段重新优化。正因为如此,整个查询的执行要快得多。
+
+AQE 可以通过设置 SQL 配置来启用,如下所示(Spark 3.0 中默认为 false):
+
+```
+spark.conf.set(“spark.sql.adaptive.enabled”,true)
+```
+
+#### 动态合并“洗牌”分区
+
+Spark 在“洗牌shuffle”操作后确定最佳的分区数量。在 AQE 中,Spark 使用默认的分区数,即 200 个。这可以通过配置来启用。
+
+```
+spark.conf.set(“spark.sql.adaptive.coalescePartitions.enabled”,true)
+```
+
+#### 动态切换连接策略
+
+广播哈希是最好的连接操作。如果其中一个数据集很小,Spark 可以动态地切换到广播连接,而不是在网络上“洗牌”大量的数据。
+
+#### 动态优化倾斜连接
+
+如果数据分布不均匀,数据会出现倾斜,会有一些大的分区。这些分区占用了大量的时间。Spark 3.x 通过将大分区分割成多个小分区来进行优化。这可以通过设置来启用:
+
+```
+spark.conf.set(“spark.sql.adaptive.skewJoin.enabled”,true)
+```
+
+![Figure 2: Performance improvement in Spark 3.x (Source: Databricks)][3]
+
+### 其他改进措施
+
+此外,Spark SQL 3.x还支持以下内容。
+
+#### 动态分区修剪
+
+3.x 将只读取基于其中一个表的值的相关分区。这消除了解析大表的需要。
+
+#### 连接提示
+
+如果用户对数据有了解,这允许用户指定要使用的连接策略。这增强了查询的执行过程。
+
+#### 兼容 ANSI SQL
+
+在兼容 Hive 的早期版本的 Spark 中,我们可以在查询中使用某些关键词,这样做是完全可行的。然而,这在 Spark SQL 3 中是不允许的,因为它有完整的 ANSI SQL 支持。例如,“将字符串转换为整数”会在运行时产生异常。它还支持保留关键字。
+
+#### 较新的 Hadoop、Java 和 Scala 版本
+
+从 Spark 3.0 开始,支持 Java 11 和 Scala 2.12。 Java 11 具有更好的原生协调和垃圾校正,从而带来更好的性能。 Scala 2.12 利用了 Java 8 的新特性,优于 2.11。
+
+Spark 3.x 提供了这些现成的有用功能,而无需开发人员操心。这将显着提高 Spark 的整体性能。
+
+--------------------------------------------------------------------------------
+
+via: https://www.opensourceforu.com/2022/05/structured-data-processing-with-spark-sql/
+
+作者:[Phani Kiran][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/phani-kiran/
+[b]: https://github.com/lkxed
+[1]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Spark-SQL-Data-cluster.jpg
+[2]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-1-Query-planning.jpg
+[3]: https://www.opensourceforu.com/wp-content/uploads/2022/04/Figure-2-Performance-improvement-in-Spark-3.x-Source-Databricks.jpg
diff --git a/published/20220517 Adobe Illustrator Alternative Inkscape Releases Version 1.2.md b/published/20220517 Adobe Illustrator Alternative Inkscape Releases Version 1.2.md
new file mode 100644
index 0000000000..3fa4fa0560
--- /dev/null
+++ b/published/20220517 Adobe Illustrator Alternative Inkscape Releases Version 1.2.md
@@ -0,0 +1,110 @@
+[#]: subject: "Adobe Illustrator Alternative Inkscape Releases Version 1.2"
+[#]: via: "https://news.itsfoss.com/inkscape-1-2-release/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14615-1.html"
+
+Adobe Illustrator 的替代品 Inkscape 发布了 1.2 版本
+======
+
+> Inkscape 1.2 是一个激动人心的更新,包含许多有用的改进和新增功能。试一试吧!
+
+![Inkscape][1]
+
+Inkscape 是一个流行的开源矢量图形处理程序,可用于 Linux、Windows 和 macOS。
+
+它的最新版本侧重于改进现有工具,以及提供更多自定义选项。
+
+此外,它还有一些新增功能。让我们来看看吧!
+
+### Inkscape 1.2:有什么新功能?
+
+![Inkscape 1.2 is here!][2]
+
+Inkscape 1.2 是一个激动人心的更新,它包含了许多有用的增强功能。其中一些关键变化包括:
+
+* 改进的渐变编辑器
+* 新的捕捉模式
+* 支持多页文档
+* 改进的导出对话框
+* 可定制的工具栏
+
+在这里,我将重点介绍重要的功能改进:
+
+#### 多页文档支持
+
+![][4]
+
+你现在可以在同一个文档中创建多个标准/自定义大小的页面,并把它们保存为一个多页的 PDF 文档。
+
+不仅是导出,你还可以导入多页 PDF 来简化操作。
+
+### 自定义调色板
+
+你现在可以轻松地更改尺寸、重新配置颜色,以此来尝试所有可用的调色板,然后选择你真正喜欢的颜色。
+
+特别是当你需要在用户界面中使用多个调色板时,它会让操作更流畅。
+
+### 新的“平铺”实时路径效果
+
+如果你正在处理很多个对象,并想尝试不同路径效果,那么你应该会喜欢新的平铺实时路径效果。
+
+你可以轻松调整镜像模式、调整间隙、添加行和列,从而获得大量发挥创意的机会。
+
+### 图层和对象对话框
+
+![][5]
+
+大多数改进使得体验比以前更直接。使用新的合并图层和对象对话框,你可以根据要查找的图层,快速组织/查找对象。
+
+你甚至可以自定义图层和对象颜色来区分它们。
+
+### 导出对话框
+
+![][6]
+
+现在,导出对话框为你提供了选择简单/批量导出的选项,以及选择文件格式和 DPI 设置的能力。
+
+### 其他改进
+
+除了上面的主要亮点外,还有其他的一些重大变化,包括:
+
+* 两种新的画布捕捉模式有助于对齐对象
+* 你可以在“填充和描边Fill and Stroke”对话框中选择渐变
+* 编辑标记marker的能力
+* 改进了与扩展的兼容性
+* 更新了 SVG 字体编辑器
+* 性能改进
+* 可配置的工具栏
+
+你可以参考 [Inkscape 1.2 发行说明][7] 来查看所有的技术变化。
+
+### 下载 Inkscape 1.2
+
+你可以从它的官方网站下载 AppImage 格式的 Inkscape 1.2 软件包,或查看其他适用于 Windows/macOS 平台的可用软件包。
+
+> **[Inkscape 1.2][8]**
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/inkscape-1-2-release/
+
+作者:[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/inkscape-1-2.jpg
+[2]: https://youtu.be/1U4hVbvRr_g
+[4]: https://news.itsfoss.com/wp-content/uploads/2022/05/inkscape-1-2-multi-document.jpg
+[5]: https://news.itsfoss.com/wp-content/uploads/2022/05/inkscape-1-2layers-objects-1024x593.jpg
+[6]: https://news.itsfoss.com/wp-content/uploads/2022/05/inkscape1-2-export-1024x688.jpg
+[7]: https://media.inkscape.org/media/doc/release_notes/1.2/Inkscape_1.2.html
+[8]: https://inkscape.org/release/inkscape-1.2/
diff --git a/published/20220517 Kali Linux 2022.2 Release Adds an Amusing New Feature for the Hackers to Scare People.md b/published/20220517 Kali Linux 2022.2 Release Adds an Amusing New Feature for the Hackers to Scare People.md
new file mode 100644
index 0000000000..f604885536
--- /dev/null
+++ b/published/20220517 Kali Linux 2022.2 Release Adds an Amusing New Feature for the Hackers to Scare People.md
@@ -0,0 +1,115 @@
+[#]: subject: "Kali Linux 2022.2 Release Adds an Amusing New Feature for the Hackers to Scare People"
+[#]: via: "https://news.itsfoss.com/kali-linux-2022-2-release/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lkxed"
+[#]: translator: "wxy"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14606-1.html"
+
+Kali Linux 2022.2 发布:增加了一个吓唬人的有趣新功能
+======
+
+> Kali Linux 2022.2 是今年的第二次更新,增加了一些有趣的内容。
+
+![kali linux][1]
+
+Kali Linux 不是你寻常使用的 Linux 发行版。它是专门为渗透测试和道德黑客学习及实验而量身打造的。
+
+在新的 Kali Linux 版本中,增加了一些有趣的工具和功能。让我们来看看 Kali Linux 2022.2 的亮点。
+
+### Kali Linux 2022.2 有什么新功能?
+
+Kali Linux 2022.2 是一个有趣的版本,它引入了更新的桌面环境,升级了 Linux 内核,增加了新的工具,以及更多的改进。
+
+不仅仅限于通常的完善,你还可以看到一个新的屏幕保护程序,其中有许多令人惊讶的元素。
+
+#### 带有好莱坞怀旧色彩的新屏保
+
+Kali Linux 已经出现在许多黑客相关的电视节目/电影(如《黑客军团Mr. Robot》)中,看起来酷极了。
+
+更进一步,Kali Linux 增加了一个新的屏幕保护程序(你可以单独安装),其中有来自好莱坞的令人惊讶的元素和一些吓唬人的黑客场景。
+
+他们在屏保中调侃了《黑客帝国》的尼奥,还添加了一个漂亮的 Kali Linux 标志。
+
+![][2]
+
+整个屏幕保护程序包括几个非常棒的元素。要安装并立即启动它,你可以输入以下命令:
+
+```
+sudo apt -y install kali-screensaver
+sudo apt -y install hollywood-activate
+hollywood-activate
+```
+
+
+
+#### GNOME 42
+
+![][3]
+
+Kali Linux 终于包含了新的 [GNOME 42][4] 桌面环境。所以,在 Kali Linux 自然带有 GNOME 42 的所有优点,包括新的屏幕截图用户界面。
+
+另外,现在你将会在 GNOME 桌面环境中获得一致的深浅主题体验。
+
+![][5]
+
+#### KDE Plasma 5.24
+
+对于 KDE 粉丝,Kali Linux 2022.2 也带来了新的 [KDE Plasma 5.24][6] LTS 桌面环境。
+
+![][7]
+
+#### 新的 Kali Linux 工具
+
+新的工具总是每个新版本的重点。一些新增加的工具包括:
+
+* BruteShark - 网络取证分析工具(NFAT)
+* Evil-WinRM - Ultimate WinRM shell
+* Hakrawler - 网络爬虫,设计用于轻松、快速发现端点和资产
+* Httpx - 快速和多用途的 HTTP 工具箱
+* Sparrow-wifi - 用于 Linux 的图形化 Wi-Fi 分析器
+
+#### 其他改进
+
+该版本还有许多其他实质性的改进。主要的亮点包括。
+
+* 对终端进行了调整,以加强语法高亮、自动补完和输出
+* 自动复制丢失的配置
+* 支持 VirtualBox 共享文件夹
+* 增加了新的应用程序图标
+* 为多显示器设置调整了默认墙纸
+* 针对 ARM 设备的更新
+* Linux 内核 5.16
+
+要探索更多关于该版本的信息,你可以查看 [官方发布公告][8]。
+
+### 下载 Kali Linux 2022.2
+
+你应该能够在 [官方下载页面][9] 中找到该镜像。根据你的要求选择合适的版本,然后安装它。
+
+> **[Kali Linux 2022.2][10]**
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/kali-linux-2022-2-release/
+
+作者:[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/05/kali-2022-2-release-new.jpg
+[2]: https://news.itsfoss.com/wp-content/uploads/2022/05/kali-linux-screensaver.jpg
+[3]: https://news.itsfoss.com/wp-content/uploads/2022/05/kali-linux-gnome-42.jpg
+[4]: https://news.itsfoss.com/gnome-42-features/
+[5]: https://news.itsfoss.com/wp-content/uploads/2022/05/kali-linux-gnome-42-screenshot.jpg
+[6]: https://news.itsfoss.com/kde-plasma-5-24-lts-release/
+[7]: https://news.itsfoss.com/wp-content/uploads/2022/05/kali-linux-kde-5-24-1024x640.jpg
+[8]: https://www.kali.org/blog/kali-linux-2022-2-release/
+[9]: https://www.kali.org/get-kali/
+[10]: https://www.kali.org/get-kali/
diff --git a/published/20220518 Google To Start Distributing A Collection Of Open Source Software libraries.md b/published/20220518 Google To Start Distributing A Collection Of Open Source Software libraries.md
new file mode 100644
index 0000000000..1edc4b7a48
--- /dev/null
+++ b/published/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] 中宣布了这项名为 “安心开源软件Assured Open Source Software” 的新服务。在博文中,谷歌云安全和隐私部门产品经理 Andy Chang 强调了保障开源软件的一些问题,并强调了谷歌对开源的承诺。
+
+“开发者社区、企业及政府对软件供应链风险的意识越来越强,”Chang 写道,并以去年的 log4j 重大漏洞为例。“谷歌仍是开源代码最大的维护者、贡献者和使用者之一,并深入参与了帮助开源软件生态系统更加安全的工作。”
+
+据谷歌称,“安心开源软件”服务将让云客户能够访问谷歌的大量软件审计知识。另据其称,所有通过该服务提供的开源软件包也在公司内部使用,该公司会定期检查和分析其漏洞。
+
+谷歌目前正在审核的 550 个重要开源库的清单可以在 [GitHub][3] 上找到。虽然这些库都可以独立于谷歌下载,但该计划将呈现通过谷歌云提供的审核版本,防止开发者破坏广泛使用的开放源码库。这项服务现在处于预先体验阶段,将在 2022 年第三季度准备好进行更广泛的消费者测试。
+
+谷歌的声明只是广大行业努力加强开源软件供应链的安全的一部分,这份努力得到了拜登政府的支持。今年 1 月,美国国土安全部和美国网络安全与基础设施安全局的代表与美国一些主要 IT 公司的高管会面,研究 log4j 漏洞之后的开源软件安全问题。此后,有关公司在最近的一次峰会上承诺提供超过 3000 万美元的资金,以改善开源软件的安全问题。
+
+除了现金,谷歌还在投入工程时间来确保供应链的安全。该公司已宣布发展一个“开源维护小组Open Source Maintenance Crew”,该团队将与库维护人员合作以提高安全性。
+
+--------------------------------------------------------------------------------
+
+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/20220518 How To Reset Sudo Password In Ubuntu 22.04 - 20.04 LTS.md b/published/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/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 桌面环境中,以及从服务器版本中的 恢复rescue 模式中重新设置 sudo 密码。
+
+### 介绍
+
+在 [安装 Ubuntu][1] 时,创建的一个新用户将会带有 `sudo` 权限,用以执行各种各样的管理任务。
+
+如果你的 Ubuntu 系统有多个 `sudo` 用户,你能够从另外一个 `sudo` 用户的账号下,轻松地重新设置所忘记的一个 `sudo` 用户或管理员用户的密码。
+
+如果你只有一个 `sudo` 用户,并且忘记了密码怎么办?没有问题! 从 Ubuntu 的 恢复rescue 或 单一用户single user 模式中恢复 `sudo` 用户密码很容易。
+
+虽然这篇指南是在 Ubuntu 22.04 和 20.04 LTS 版本上进行的正式测试,不过,下面给定的步骤对于其它的 Ubuntu 版本和衍生版本来说是相同的。
+
+### 在 Ubuntu 22.04 / 20.04 LTS 中重新设置 sudo 密码
+
+首先,启动你的 Ubuntu 系统到 恢复rescue 模式下,来重新设置一个 `sudo` 用户的密码,操作如下面的链接所述。
+
+> [如何启动到 Ubuntu 22.04 / 20.04 / 18.04 的 恢复rescue 模式 或 急救Emergency模式 ][2]
+
+现在,进入到 恢复rescue 模式下,通过运行下面的命令,以读/写的模式挂载根(`/`)文件系统:
+
+```
+# 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 进入到 恢复rescue 模式,按下 `Ctrl+d` 组合键来启动到正常模式。或者,你也可以输入下面的任意一个命令来启动到正常模式。
+
+```
+# systemctl default
+```
+
+或,
+
+```
+# exit
+```
+
+如果你想重新启动系统,而不是启动到正常模式,输入:
+
+```
+# systemctl reboot
+```
+
+如果你已经按照上面链接所述的方法 2 进入到恢复rescue 模式,输入:
+
+```
+# exit
+```
+
+你将返回到 恢复菜单recovery menu。现在选择 “恢复正常启动Resume normal boot”,并按下回车键。
+
+![Boot Into Normal Mode In Ubuntu][4]
+
+在强调一次,选择 “确定OK” 按钮,并按下回车按键来继续启动到正常模式:
+
+![Exit Recovery Mode And Boot Into Normal Mode][5]
+
+现在,你在运行管理命令时可以使用新的 `sudo` 密码。
+
+### 如果我把用户名称和密码都忘了怎么办?
+
+如果你忘记了用户名称,在 恢复rescue 模式下,你可以很容易地列出你的 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/20220518 ONLYOFFICE 7.1 Release Adds ARM Compatibility, a New PDF Viewer, and More Features.md b/published/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/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/20220519 How To Enable Activate Linux Watermark Notification In Linux Desktop.md
new file mode 100644
index 0000000000..f97fdccf01
--- /dev/null
+++ b/published/20220519 How To Enable Activate Linux Watermark Notification In Linux Desktop.md
@@ -0,0 +1,126 @@
+[#]: subject: "How To Enable Activate Linux Watermark Notification In Linux Desktop"
+[#]: via: "https://ostechnix.com/activate-linux/"
+[#]: author: "sk https://ostechnix.com/author/sk/"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: "wxy"
+[#]: publisher: "wxy"
+[#]: url: "https://linux.cn/article-14617-1.html"
+
+如何在 Linux 桌面中启用 “激活 Linux” 水印通知
+======
+
+
+
+> “激活 Windows” 水印已移植到 Linux。
+
+为了阻止 Windows 操作系统的盗版行为,微软开发团队想出了一个办法:在 Windows 的角落放置一个激活水印,直到用户合法购买许可证并激活它。
+
+如果你的电脑正在运行盗版的 Windows 副本,你应该已经注意到右下角的 “激活 Windows” 水印通知,如下图所示。
+
+![“激活 Windows” 通知][1]
+
+幸运的是,Linux 用户永远不会收到这样的通知。因为 GNU/Linux 是一个完全免费的开源操作系统,在 GNU 通用公共许可证(GPL)下发布。
+
+任何人都可以运行、研究、修改和重新分发 Linux 源代码,甚至可以出售修改后的代码的副本,只要使用相同的许可即可。
+
+Linux 是开源的,所以你真的可以用 Linux 做任何你在专有操作系统上不能做的事情。
+
+你可以在 Linux 中做很多事情。你可以在 Linux 下构建和运行*几乎*任何东西,无论是有趣的项目还是企业级应用程序。甚至,你还可以添加 “激活 Linux” 水印。
+
+### “激活 Linux” 是什么?
+
+几天前,我注意到了一个叫做 “激活 Linux” 的有趣项目。它和你在未经许可的 Windows 操作系统中看到的 “激活 Windows” 通知非常相似。
+
+“激活 Linux” 的开发者使用 C 语言中的 Xlib 和 cairo,重新创建了 Linux 版的 “激活 Windows” 通知水印。
+
+它会在你的 Linux 桌面上显示一个水印,并通知你进入设置以激活你的 Linux 发行版!这很酷,不是吗?
+
+### 启用 “激活 Linux” 水印
+
+activate-linux 项目在短时间内变得非常流行。几天之内,它已经为许多流行的 Linux 发行版而打了包,例如 Arch Linux、openSUSE 和 Ubuntu。
+
+#### Arch Linux
+
+[AUR][2] 已经收录 activate-linux。因此,你可以使用 [Paru][3] 或 [Yay][4] 在 Arch Linux 及其衍生版 EndeavourOS 和 Manjaro Linux 中安装 activate-linux 应用程序。
+
+```
+$ paru -S activate-linux
+```
+
+或者
+
+```
+$ yay -S activate-linux
+```
+
+#### openSUSE
+
+[OBS][5] 收录了 Activate-linux。
+
+如果你正在使用 openSUSE Tumbleweed 版本,请逐条运行下面的命令来安装 activate-linux:
+
+```
+$ sudo zypper addrepo https://download.opensuse.org/repositories/home:WoMspace/openSUSE_Tumbleweed/home:WoMspace.repo
+$ sudo zypper refresh
+$ sudo zypper install activate-linux
+```
+
+对于 openSUSE Factory ARM 版,运行如下命令:
+
+```
+$ sudo zypper addrepo https://download.opensuse.org/repositories/home:WoMspace/openSUSE_Factory_ARM/home:WoMspace.repo
+$ sudo zypper refresh
+$ sudo zypper install activate-linux
+```
+
+#### Ubuntu
+
+activate-linux 有一个适用于 Ubuntu 及其衍生版(如 Pop!_OS)的 PPA。
+
+```
+$ sudo add-apt-repository ppa:edd/misc
+$ sudo apt update
+$ sudo apt install activate-linux
+```
+
+安装完成后,只需在终端执行下面的命令,就可以让它运行起来:
+
+```
+$ activate-linux
+```
+
+现在,你将在桌面的角落看到 “激活 Linux” 水印通知,就像在未授权的 Windows 副本中一样。
+
+![桌面上的 “激活 Linux” 水印][6]
+
+别紧张!它是无害的。若想取消显示,你可以返回终端并按 `CTRL+C` 终止 `activate-linux` 命令。
+
+我在 Ubuntu 22.04 GNOME 版本上测试了一下。它在 Wayland 中开箱即用。
+
+“激活 Linux” 是我这一段时间以来遇到的一个非常有趣又无用的项目。我想这会让每个刚从 Windows 切换过来的 Linux 用户,拥有更加舒适的体验吧!
+
+### 相关资源
+
+* [“激活 Linux” 的 GitHub 存储库][7]
+
+--------------------------------------------------------------------------------
+
+via: https://ostechnix.com/activate-linux/
+
+作者:[sk][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://ostechnix.com/author/sk/
+[b]: https://github.com/lkxed
+[1]: https://ostechnix.com/wp-content/uploads/2022/05/Activate-Windows-Notification.png
+[2]: https://aur.archlinux.org/packages/activate-linux-git
+[3]: https://ostechnix.com/how-to-install-paru-aur-helper-in-arch-linux/
+[4]: https://ostechnix.com/yay-found-yet-another-reliable-aur-helper/
+[5]: https://software.opensuse.org//download.html?project=home%3AWoMspace&package=activate-linux
+[6]: https://ostechnix.com/wp-content/uploads/2022/05/Activate-Linux.png
+[7]: https://github.com/MrGlockenspiel/activate-linux
diff --git a/published/20220520 A programmer-s guide to GNU C Compiler.md b/published/20220520 A programmer-s guide to GNU C Compiler.md
new file mode 100644
index 0000000000..38cc8d46af
--- /dev/null
+++ b/published/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 语言编写的源文件代码,使用了标准的英语术语,因而人们可以方便阅读。然而,计算机只能理解二进制代码。为将代码转换为机器语言,你需要使用一种被称为 编译器compiler 的工具。
+
+最常见的编译器是 GCC(GNU 编译器集GNU Compiler Collection)。编译过程涉及到一系列的中间步骤及相关工具。
+
+### 安装 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. 预处理Pre-Processing:GNU 的 C 预处理器(cpp)解析头文件(`#include` 语句),展开 宏macros 定义(`#define` 语句),并使用展开的源文件代码来生成一个中间文件,如 `hellogcc.i`。
+2. 编译Compilation:在这个期间中,编译器将预处理的源文件代码转换为指定 CPU 架构的汇编代码。由此生成是汇编文件使用一个 `.s` 扩展名来命名,如在这个示例中的 `hellogcc.s` 。
+3. 汇编Assembly:汇编程序(`as`)将汇编代码转换为目标机器代码,放在目标文件中,例如 `hellogcc.o` 。
+4. 链接Linking:链接器(`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` 错误。你必须找出适合的链接器选项来链接必要的库以解决这个问题。这不是一个小技巧,它取决于你的系统的布局。
+
+在链接时,你必须链接代码到核心运行时core runtime(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!
+```
+
+### 一些有用的实用程序
+
+下面是一些帮助检查文件类型、符号表symbol tables 和链接到可执行文件的库的实用程序。
+
+使用 `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` 实用程序可以列出 符号表symbol tables :
+
+```
+$ 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 编译中的各种中间步骤,和检查文件类型、符号表symbol tables 和链接到可执行文件的库的实用程序。在你下次使用 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/20220520 Customize GNOME 42 with A Polished Look.md b/published/20220520 Customize GNOME 42 with A Polished Look.md
new file mode 100644
index 0000000000..7f5fabc586
--- /dev/null
+++ b/published/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
+```
+
+打开扩展管理器应用,并安装两个扩展。第一个是 “浮动停靠区Floating Dock”,它提供了超酷的停靠区,你可以在桌面上的任何位置移动它。第二个,安装 “用户主题User themes” 扩展来帮助你在 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` 文件夹。
+
+最后,再次重启系统。
+
+#### 配置
+
+打开扩展管理器,启用 “浮动停靠区Floating Dock” 和 “用户主题User themes”,并禁用 “Ubuntu Dock”。
+
+![Changes to Extensions][11]
+
+此外,打开 “浮动停靠区Floating Dock” 设置并进行以下更改:
+
+![Floating Dock Settings][12]
+
+此外,打开 [GNOME 优化工具][13]GNOME Tweak Tool,然后转到外观Appearance选项卡。设置以下内容:
+
+* 光标:Bibata-Original-Ice
+* Shell 主题:Materia
+* 图标:Kora
+
+除此之外,你可能还想更改字体。为此,请转到字体Fonts选项卡并将文档和界面更改为 “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/20220520 How to rename a branch, delete a branch, and find the author of a branch in Git.md b/published/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/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 的分支机制允许多人同时处理一个项目,甚至是同一个文件。用户可以引入不同的功能,彼此独立,然后稍后将更改合并回主分支。那些专门为一个目的创建的分支,有时也被称为主题分支topic branch,例如添加新功能或修复已知错误。
+
+当你开始使用分支,了解如何管理它们会很有帮助。以下是开发者在现实世界中使用 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 分支的工作方式存在细微差别,具体取决于你想要分叉代码库的位置、存储库维护者如何管理分支、压扁squashing、变基rebasing等。若想进一步了解该主题,你可以阅读下面这三篇文章:
+
+* [《用乐高来类比解释 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/20220521 FSF Does Not Accept Debian as a Free Distribution. Here-s Why!.md b/published/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/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 之前会被清理掉。而自由软件基金会Free Software Foundation(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 社会契约Debian Social Contract”的文件。
+
+该社会契约的第一个版本是在 1997 年 7 月 4 日由第二任 Debian 项目领导人 Bruce Perens 发表的。作为该契约的一部分,也公布了一套被称为 Debian 自由软件准则Debian Free Software Guidelines(DFSG)的规则。从那时起,要成为 Debian 的一部分,分发软件的许可证必须符合 DFSG。该社会契约记录了 Debian 开发者只用自由软件建立操作系统的意图,而 DFSG 则用于将软件分为自由和非自由。2004 年 4 月 26 日,批准了该文件的新版本,取代了 1997 年的版本。
+
+Debian 社会契约有五条。要回答我们今天主要讨论的问题,我们只需要关注其中两条 —— 即第一条和第五条,其他的省略。可以在 [此处][3] 查看该契约的完整版本。
+
+第一条说:“**Debian 将保持 100% 自由**。我们在标题为‘Debian 自由软件准则Debian Free Software Guidelines’的文件中提供了用于确定一个作品是否‘自由’的准则。我们承诺,根据这些准则,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/20220523 DAML- The Programming Language for Smart Contracts in a Blockchain.md b/published/20220523 DAML- The Programming Language for Smart Contracts in a Blockchain.md
new file mode 100644
index 0000000000..c333cb5a81
--- /dev/null
+++ b/published/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 智能合约语言是一种专门设计的特定领域语言domain specific language(DSL),用于编码应用的共享业务逻辑。它用于区块链环境中分布式应用的开发和部署。
+
+
+
+区块链技术是一种安全机制,以一种使人难以或不可能修改或入侵的方式来跟踪信息。区块链整合了交易的数字账本,它被复制并发送至其网络上的每台计算机。在链的每个区块中,都有一些交易。当区块链上发生新的交易时,该交易的记录就会被添加到属于该链的每个人的账簿中。
+
+区块链使用分布式账本技术distributed ledger technology(DLT),其中数据库并不保存在一个服务器或节点中。在区块链中,交易被记录在一个被称为哈希hash的不可改变的加密符号中。这意味着,如果一个通道或链上的一个区块被改变,黑客将很难改变链上的那个区块,因为他们必须对外面的每一个版本的链都要这样做。区块链,如比特币和以太坊,随着新的区块被添加到链上而不断增长,这使得账本更加安全。
+
+随着区块链中智能合约的实施,在没有任何人工干预的情况下,有了自动执行的场景。智能合约技术使得执行最高级别的安全、隐私和反黑客实施成为可能。
+
+![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:一种高性能的编程语言
+
+数字资产建模语言Digital Asset Modeling Language,即 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/20220523 Linux Kernel 5.18 Released with Graphics Driver Changes and New Hardware Support.md b/published/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/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/20220523 System76 Collaborates with HP for a Powerful Linux Laptop for Developers.md b/published/20220523 System76 Collaborates with HP for a Powerful Linux Laptop for Developers.md
new file mode 100644
index 0000000000..ad1edfd55d
--- /dev/null
+++ b/published/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/20220525 ProtonMail is Now Just -Proton- Offering a Privacy Ecosystem.md b/published/20220525 ProtonMail is Now Just -Proton- Offering a Privacy Ecosystem.md
new file mode 100644
index 0000000000..2676f438a1
--- /dev/null
+++ b/published/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/20220526 DeepMind-s Open Source MuJoCo Is Available On GitHub.md b/published/20220526 DeepMind-s Open Source MuJoCo Is Available On GitHub.md
new file mode 100644
index 0000000000..4a21ef7ecf
--- /dev/null
+++ b/published/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 可用于帮助机器学习应用实现基于模型的计算,例如控制综合control synthesis、状态估计state estimation、系统识别system identification、机制设计mechanism design、通过逆动力学inverse dynamics来进行数据分析,以及并行采样parallel sampling。它也可以用作标准模拟器,例如用于游戏和交互式虚拟环境。(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/20220527 AlmaLinux Continues the Legacy of CentOS with the Release of Version 9.md b/published/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/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/20220527 Tails Linux Users Warned Against Using the Tor Browser- Here-s why!.md b/published/20220527 Tails Linux Users Warned Against Using the Tor Browser- Here-s why!.md
new file mode 100644
index 0000000000..4e3c9f8c5e
--- /dev/null
+++ b/published/20220527 Tails Linux Users Warned Against Using the Tor Browser- Here-s why!.md
@@ -0,0 +1,68 @@
+[#]: 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 事实上的(默认)网页浏览器,它有助于在用户连接到互联网时,保护他们的在线身份。它主要被各种记者和活动家用来逃避审查。不过,普通用户也可以使用它。
+
+### 问题说明
+
+最近,有人发现了两个令人讨厌的漏洞,它们允许有害网站能够从其他网站窃取用户的信息。
+
+具体来说,在 [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/sources/news/20220303 Rocket.Chat and Nextcloud Team up to Offer a Powerful Open-Source Alternative to Office 365, Slack, and Others.md b/sources/news/20220303 Rocket.Chat and Nextcloud Team up to Offer a Powerful Open-Source Alternative to Office 365, Slack, and Others.md
deleted file mode 100644
index 60266b2fab..0000000000
--- a/sources/news/20220303 Rocket.Chat and Nextcloud Team up to Offer a Powerful Open-Source Alternative to Office 365, Slack, and Others.md
+++ /dev/null
@@ -1,103 +0,0 @@
-[#]: subject: "Rocket.Chat and Nextcloud Team up to Offer a Powerful Open-Source Alternative to Office 365, Slack, and Others"
-[#]: via: "https://news.itsfoss.com/rocket-chat-nextcloud-collaboration/"
-[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
-[#]: collector: "lujun9972"
-[#]: translator: " "
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-Rocket.Chat and Nextcloud Team up to Offer a Powerful Open-Source Alternative to Office 365, Slack, and Others
-======
-
-**Warning**: Trying to access array offset on value of type null in **/srv/users/itsfoss/apps/newitsfoss/public/wp-includes/class-wp-block-supports.php** on line **94**
-
-**Warning**: Trying to access array offset on value of type null in **/srv/users/itsfoss/apps/newitsfoss/public/wp-includes/class-wp-block-supports.php** on line **96**
-
-Rocket.Chat is one of the [best open-source slack alternatives][1] and Nextcloud is an all-in-one collaboration platform.
-
-And, they are pretty impressive.
-
-This is why we use [Rocket.Chat][2] for our internal communication and [Nextcloud][3] to manage tasks/documents. Both of them are incredibly useful for what they are capable of.
-
-And, now, it looks like Rocket.Chat and Nextcloud are taking things up a notch by developing a native API integration.
-
-But, what would it do? Let us find out.
-
-### Partnering to Provide a More Powerful Open-Source Platform
-
-![][4]
-
-The primary objective of joining forces is to integrate their existing technologies, offering the best of both worlds.
-
-As far as I am aware, we do not have a full-fledged open-source alternative to Microsoft 365.
-
-Of course, you can combine various open-source technologies and choose to use them as a replacement for Microsoft 365.
-
-But do we want an open-source solution that can replace Microsoft 365 minus the hassles?
-
-**Yes.**
-
-That’s what makes Rocket.Chat’s collaboration with Nextcloud exciting.
-
-Nextcloud’s CEO shared his thoughts on this collaboration in the [press release][5]:
-
-> _In a post-pandemic world, solutions like Office 365, Dropbox, and Slack will become more popular. This means that all of our data, communication, and digital lives will be in the hands of some big corporations without control, privacy and with this huge vendor lock-in_
-
-**Frank Karlitschek, Founder and CEO at Nextcloud GmbH**
-
-To add to his thoughts, Rocket.Chat’s CEO also mentioned the following:
-
-> _This new interaction between Nextcloud and Rocket.Chat puts us one step closer to building the ultimate open-source alternative to MS 365, giving back privacy and data sovereignty to the users._
-
-_Gabriel Engel, Founder, and CEO at Rocket.Chat_
-
-So, we should expect a powerful open-source platform tailored for privacy and security-focused users, with both interesting platforms collaborating.
-
-### New Features for Nextcloud Users
-
-With the integration, Nextcloud customers will be able to access Rocket.Chat’s features to improve the effectiveness of communication and collaboration.
-
-Some of the new features include:
-
- * Expand collaboration capabilities using Rocket.Chat’s federation and bridges into Slack and Microsoft Teams.
- * Easily collaborate on projects and documents using Rocket.Chat’s chat right in Nextcloud.
- * Use a single productivity platform that integrates with other tools including Nexcloud and keeps all communications and notifications in one place.
- * Leverage more advanced user governance features, access levels, and role-based permissions.
- * Easily map even the most complex organizational structure into groups, teams, and discussions.
- * Securely collaborate and communicate with anyone via the world’s leading social media channels such as Whatsapp, Messenger, Twitter, Instagram, Telegram, and others.
- * Turn their chats into productivity tools using integrations with various HR tools, CRM solutions, ticketing systems, project management solutions, and developer tools to build powerful workflows.
- * Get access to more services using [Rocket.Chat’s marketplace of apps][6]
- * Ensure full governance of all their communications using message audits, flexible retention policies, powerful engagement analytics and dashboards, and more
- * Send advanced message formatting like code snippets, formula syntax, message threads, and more
-
-
-
-The Rocket.Chat app is now available in the [Nextcloud marketplace][7]. However, it is still a work in progress, and not ready for production yet.
-
-You should be able to use the new features once the development completes soon enough (mostly, next month). As of now, we do not have any information on any new features being added to Rocket.Chat. Hopefully, there will be something on that with the final release.
-
-_What are your expectations from this partnership? Do you think Rocket.Chat’s integration with Nextcloud can be an attractive replacement to Office 365, Slack, and Dropbox combined?_
-
-Let me know what you think in the comments down below.
-
---------------------------------------------------------------------------------
-
-via: https://news.itsfoss.com/rocket-chat-nextcloud-collaboration/
-
-作者:[Ankush Das][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://news.itsfoss.com/author/ankush/
-[b]: https://github.com/lujun9972
-[1]: https://itsfoss.com/open-source-slack-alternative/
-[2]: https://itsfoss.com/rocket-chat/
-[3]: https://itsfoss.com/nextcloud/
-[4]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQ1MiIgd2lkdGg9Ijc4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=
-[5]: https://rocket.chat/press-releases/rocket-chat-and-nextcloud
-[6]: https://rocket.chat/marketplace
-[7]: https://apps.nextcloud.com/apps/rocketchat_nextcloud
diff --git a/sources/news/20220304 Epic Games Store Now Works on Steam Deck.md b/sources/news/20220304 Epic Games Store Now Works on Steam Deck.md
deleted file mode 100644
index e833142b74..0000000000
--- a/sources/news/20220304 Epic Games Store Now Works on Steam Deck.md
+++ /dev/null
@@ -1,89 +0,0 @@
-[#]: subject: "Epic Games Store Now Works on Steam Deck"
-[#]: via: "https://news.itsfoss.com/epic-games-steam-deck/"
-[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
-[#]: collector: "lujun9972"
-[#]: translator: " "
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-Epic Games Store Now Works on Steam Deck
-======
-
-Steam Deck is already making waves to enhance the game support for the Linux platform.
-
-It runs on **Steam OS 3.0** (based on Arch) and features KDE Plasma. Kudos to Valve for not locking down the platform and letting users experiment with it.
-
-While it is not available for everyone, it is an exciting piece of hardware challenging handheld Nintendo Switch.
-
-It may not support all the popular titles yet (like Destiny 2, Fortnite), but it is making good progress with several AAA and indie titles. You can head to the official page of [Deck Verified][1] to check the latest information about supported games.
-
-Now, to make things more exciting, it turns out that Steam Deck can also run games using the [Epic Games Store][2] (**unofficially**). But, how? Let’s find out.
-
-### Using the Epic Games Store with Heroic Games Launcher
-
-Yes, it’s the same [Heroic Games launcher][3] that was in the making [last year][4], and it is already known to work on a Linux desktop.
-
-And, thanks to Liam Dawe (via [GamingOnLinux][5]), for successfully testing the Heroic Games Launcher (and [Heroic Bash Launcher][6]) on Steam Deck while coordinating with the respective developers.
-
-![][7]
-
-If you’re curious: **Heroic Bash Launcher** _is a tool that creates launch scripts (.sh files) for all installed Heroic games and allows you to launch the game directly from the terminal or game frontend/launcher without having any need to open Heroic._
-
-Here’s how it all went down (as per my brief chat with the developer of Heroic Bash Launcher):
-
-Initially, with Epic Games Store experiment on Steam Deck, the Steam controller did not work, considering the Epic Games Store ran as a “Non-Steam game” using the Steam client.
-
-So, the developer of Heroic Bash Launcher, [Rishabh Moharir][8] (also a fellow writer here) suggested using his tool to make it work by following his [wiki guide on GitHub][9].
-
-The Heroic Bash Launcher works with Epic Games Store on a Linux desktop. So, it was worth a try!
-
-And, fortunately, it worked!
-
-### Installing Epic Games Store on Steam Deck
-
-First, you need to install the **Heroic Games Launcher** on Steam Deck using the available AppImage file in the **Desktop mode**.
-
-Once done, you need to log in and download the game of your choice.
-
-Next, you need to download the latest binary files for [legendary][10] and set it as the alternative legendary binary from the launcher’s settings.
-
-You need to configure and set the compatibility layer to Proton 7.0 from the game settings in the launcher.
-
-That’s when you need to download the latest [Heroic Bash Launcher binary][11] and run it.
-
-Finally, you have to add the game to Steam (to find it in Steam Deck’s UI) following the [official wiki guide on GitHub][9].
-
-Overall, it sure took a while for tinkerers to make it work. And, if you are still confused, you can find the same set of steps with all the details in the [wiki][12] put together by the Heroic Games Launcher team (or refer to the video above).
-
-To me, it sounds doable and should not be an overwhelming process for most Steam Deck users as of now. Unfortunately, I can’t get my hands on the Steam Deck in India (yet).
-
-As for the future of Epic Games Store on Steam Deck, we can only hope for the best!
-
-_Have you tried Steam Deck yet? Let me know your thoughts in the comments down below._
-
---------------------------------------------------------------------------------
-
-via: https://news.itsfoss.com/epic-games-steam-deck/
-
-作者:[Ankush Das][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://news.itsfoss.com/author/ankush/
-[b]: https://github.com/lujun9972
-[1]: https://www.steamdeck.com/en/verified
-[2]: https://www.epicgames.com/store/en-US/
-[3]: https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher
-[4]: https://news.itsfoss.com/heroic-games-launcher/
-[5]: https://www.gamingonlinux.com/2022/03/heroic-games-launcher-now-works-nicely-on-steam-deck/
-[6]: https://github.com/redromnon/HeroicBashLauncher
-[7]: https://i0.wp.com/i.ytimg.com/vi/UvuGAQDagWE/hqdefault.jpg?w=780&ssl=1
-[8]: https://news.itsfoss.com/author/rishabh/
-[9]: https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher/wiki/Adding-Games-to-Steam-on-Linux
-[10]: https://github.com/derrod/legendary/releases/
-[11]: https://github.com/redromnon/HeroicBashLauncher/releases/
-[12]: https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher/wiki/SteamDeck---Running-Epic-Games
diff --git a/sources/news/20220527 TypeScript Based Headless CMS -Payload- Becomes Open Source.md b/sources/news/20220527 TypeScript Based Headless CMS -Payload- Becomes Open Source.md
new file mode 100644
index 0000000000..0e99f3c1d1
--- /dev/null
+++ b/sources/news/20220527 TypeScript Based Headless CMS -Payload- Becomes Open Source.md
@@ -0,0 +1,79 @@
+[#]: 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: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+TypeScript Based Headless CMS ‘Payload’ Becomes Open Source
+======
+A new option added to the list of open-source headless CMS. Now, a better headless WordPress alternative?
+
+![payload][1]
+
+Since its first beta release a little over a year ago, Payload has slowly built a name for itself within the web development community as a headless Content Management System (CMS). For a bit of background information, Payload is a CMS tailored specifically toward being simpler to develop websites, web apps, or native applications.
+
+Recently, they decided to go completely open-source, putting it among the likes of some of the [best open-source CMS available][2].
+
+However, that raises some questions, like what will their business model look like? And what are the plans for Payload CMS? Let’s take a brief look.
+
+### Why Has Payload Gone Open-Source?
+
+Since its initial launch back in 2021, Payload has received many contributions from the open-source community. As Payload said in their [recent announcement][3], the decision to go open-source is massive, and it allows projects to read much greater heights than could ever be possible if kept behind closed doors.
+
+![][4]
+
+In addition, this openness often results in much greater levels of trust from the developer community. This trust also extends to businesses, naturally turning to the platform with the greatest developer support and trust.
+
+Due to all these reasons, Payload is now switching to the MIT license. This allows anyone to modify, distribute, and use Payload for free and without limitations.
+
+However, Payload still needs money flowing in to operate sustainably. So, that begs the question, how will Payload make money?
+
+### How Payload Is Going To Make Money?
+
+As is always the case, Payload requires some financial backing to remain afloat. They have outlined a two-part plan that should both provide users with even more convenience-focused features while still leaving self-hosted customers incredible flexibility.
+
+![][5]
+
+#### Enterprise Licenses
+
+This option is extremely similar to other open-source CMS software services. These licenses would provide more advanced SSO options and give the developers guaranteed response times from the core Payload team.
+
+These licenses should look appealing to larger corporations, especially those that require the utmost reliability.
+
+#### Cloud Hosting
+
+This option is quite attractive, as it combines multiple services to create the most convenient experience possible. Although traditional hosting remains reasonably easy, as soon as you add in a database, permanent file storage, and deliberate infrastructure for Node apps, you are left with four or five different services that all need to work seamlessly together.
+
+It should be noted that this is not required, and users are still encouraged to host their instances. However, this service simply takes a lot of the expenses and challenges associated with hosting out of the equation.
+
+As of now, things haven’t been finalized. But, you can keep an eye on the discussions on [GitHub][6] to keep up with it.
+
+### Wrapping Up
+
+As an emerging CMS option, it is great to see Payload take this step to become a popular alternative to WordPress and other options. Additionally, it appears to me that the Payload team is confident in their new business model, signifying a (hopefully) bright future for them.
+
+[Payload CMS][7]
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/payload-open-source/
+
+作者:[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/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/sources/talk/20190131 OOP Before OOP with Simula.md b/sources/talk/20190131 OOP Before OOP with Simula.md
index 84d24bbc93..5af32716d9 100644
--- a/sources/talk/20190131 OOP Before OOP with Simula.md
+++ b/sources/talk/20190131 OOP Before OOP with Simula.md
@@ -2,7 +2,7 @@
[#]: via: "https://twobithistory.org/2019/01/31/simula.html"
[#]: author: "Two-Bit History https://twobithistory.org"
[#]: collector: "lujun9972"
-[#]: translator: " "
+[#]: translator: "aREversez"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
@@ -187,7 +187,7 @@ via: https://twobithistory.org/2019/01/31/simula.html
作者:[Two-Bit History][a]
选题:[lujun9972][b]
-译者:[译者ID](https://github.com/译者ID)
+译者:[aREversez](https://github.com/aREversez)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/sources/talk/20190331 Codecademy vs. The BBC Micro.md b/sources/talk/20190331 Codecademy vs. The BBC Micro.md
index 2bd822cd18..bb5ee313c8 100644
--- a/sources/talk/20190331 Codecademy vs. The BBC Micro.md
+++ b/sources/talk/20190331 Codecademy vs. The BBC Micro.md
@@ -2,7 +2,7 @@
[#]: via: "https://twobithistory.org/2019/03/31/bbc-micro.html"
[#]: author: "Two-Bit History https://twobithistory.org"
[#]: collector: "lujun9972"
-[#]: translator: " "
+[#]: translator: "yesimmia"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
diff --git a/sources/talk/20211213 How I use open source to design my own card games.md b/sources/talk/20211213 How I use open source to design my own card games.md
deleted file mode 100644
index 09da50e09e..0000000000
--- a/sources/talk/20211213 How I use open source to design my own card games.md
+++ /dev/null
@@ -1,112 +0,0 @@
-[#]: subject: "How I use open source to design my own card games"
-[#]: via: "https://opensource.com/article/21/12/open-source-card-game"
-[#]: author: "Seth Kenlon https://opensource.com/users/seth"
-[#]: collector: "lujun9972"
-[#]: translator: " "
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-How I use open source to design my own card games
-======
-Open source isn't just about software. It's a cultural phenomenon, a
-natural fit for tabletop games.
-![Deck of playing cards][1]
-
-I love a good game, and I particularly enjoy tabletop games because they have many of the same traits that open source has. When you're playing a card game in real life with friends sitting around a table, you can as a group decide that Jokers are wild. Alternately, you could arbitrarily decide that should a Joker come into play, anyone holding an Ace must discard that Ace. Or when a Queen of Diamonds comes into play, everyone must pass their hand to the player on their right. In other words, you can reprogram the rules on a whim because a game is nothing but a mutually agreed-upon set of conditions. To me, what's even better is that you can invent your own games instead of hacking the rules of somebody else's game. From time to time, I do this as a hobbyist, and because I like to combine my hobbies, I tend to design games with only open source and open culture resources.
-
-First of all, it's important to understand that there are, broadly, two facets of a game: _flavor_ and _mechanics_. The flavor is the story and theme of the game. The mechanics of a game are the rules and the condition of play. The two aren't always completely separate from one another, and there's an elegance to designing a game themed around race cars, for instance, with rules that demand players to perform actions very quickly. However, the flavor and mechanics are just as often treated separately, and it's entirely reasonable to invent a game that _could_ be played with a standard deck of poker cards, but that's themed around space llamas, just for the fun of it.
-
-### Open source artwork
-
-If you've ever gone to a museum of modern art, you've probably found yourself standing in front of a canvas painted solid blue and overheard somebody utter this time-honored phrase: "Heck, I could make that!" But the truth is, artwork is hard work. Making art that's pleasing to the eye takes a lot of thought, time, confidence, and skill, so it makes sense that the art is one of the most difficult things to procure for a game you're designing.
-
-I have a few "hacks" on dealing with this classic snag.
-
-#### 1\. Find common ground
-
-There's free and open art out there, and a lot of it is very good. The problem is that games usually need more than one art piece. If you're designing a card game, you probably need at least four or six distinct elements (assuming your cards follow the foundations laid out by the Tarot deck) and possibly more. If you spend enough time on it, you can find [Creative Commons and Public Domain][2] artwork online on sites like [OpenGameArt.org][3], [FreeSVG.org][4], [ArtStation.com][5], [DeviantArt.com][6], and many others.
-
-If the site you're using doesn't have a Creative Commons search, enter the following words into any search engine, "This work is licensed under a Creative Commons" (the quotes are important, so don't leave those off) and whatever syntax your favorite search engine uses to limit the search to just one site (for example, **site:deviantart.com**).
-
-Once you have a pool of art to choose from, sort the art that you've found by identifying common themes in the artwork. Two pictures of robots by two different people might look nothing alike, but they're still both robots. Provided you have enough robot-themed art, you can structure the flavor of your game around robots.
-
-#### 2\. Commission Creative Commons art
-
-You can hire artists to make custom art for you. I work with artists who use open source paint programs like [Krita][7] and Mypaint, and as part of the contract, I specify that the art must be licensed under a Creative Commons Attribution Share-alike (CC BY-SA) license. I've only ever had one artist decline the offer because of the license restriction, and most are happy for their artwork to have a potentially larger life than just as part of a hobbyist's self-published game.
-
-#### 3\. Make your own
-
-As a trip to the museum of modern art reveals, art is a very flexible term. I've found that as long as I give myself a goal of how many cards or tokens for a game I need to create, I can usually produce something with one of the many graphical creative tools available on Linux. It doesn't have to be anything fancy. Just like modern art, you can paint a card with blue and yellow stripes, another with red and white polka-dots, another with green and purple zig-zags, and nobody but you will ever know that you secretly meant for them to be the lords and ladies of the fairy court, except that you don't know how to draw those. Think about all the simple things you can create in a graphics application, or by tracing photographs of everyday objects, or by remixing classic Poker suits, or Tarot themes, and so on.
-
-### Layout
-
-I use [Inkscape][8], Scribus, or [GIMP][9] for layout, depending on what my assets are and what manner of design I'm after.
-
-For cards, I find that a simple layout is easy to do and look at, solid colors tend to print better than gradients, and intuitive iconography is best.
-
-![layout in Inkscape][10]
-
-(Seth Kenlon, CC BY-SA 4.0)
-
-I did the layout in a single Inkscape file for my latest game, which uses just nine images from three or four different artists on OpenGameArt.com. I design the layout of each card in its own file for games with a more extensive set of art and card variety.
-
-Know your target output before you do any layout for your game assets. If you're going to print your game at home, then do the math and figure out how many cards or tokens or tiles you can fit on your default paper size (US Letter for some, A4 for everybody else). If you're printing with a game printer like [TheGameCrafter][11], download the template files.
-
-![printed cards][12]
-
-(Seth Kenlon, CC BY-SA 4.0)
-
-### Mechanics
-
-Game mechanics are the most important part of a game. They're what makes the game a game. Developing rules for a game doesn't have to be a formal process. You can come up with a game on a whim, or take a game that exists and remix its rules until it's something different, fix a game that just doesn't work for you, or mash two different games together. Start simple, using index cards, standard playing cards, or a Tarot deck to mock up how you think your game will work. You can play early game ideas by yourself, but eventually, getting a friend to help is a great way to introduce surprise glitches and optimizations.
-
-Playtest often. Play your game with a diverse set of players, and listen to their feedback. Your game might inspire many players to invent new rules and ideas, so separate feedback about what's _broken_ from feedback about what _could be different_. You don't have to implement feedback that just iterates your idea, but give careful thoughts to the bug reports.
-
-Once you've decided how you want your rules to work, write them down to make them [short and easy to parse][13]. Your rules don't have to convince players to play the game, you don't have to explain the strategy to them, nor do you need to give permission to players to remix the rules. Just tell the players the sequence of steps they need to take in order to make the game work.
-
-Most importantly, consider making your rules open source. Gaming is all about shared experiences, and that ought to include the rules. A Creative Commons or Open Game License ruleset allows other gamers to iterate, remix, and build upon your work. You never know, somebody might come up with a variant that you enjoy more than your own!
-
-### Open source gaming
-
-Open source isn't just about software. It's a cultural phenomenon, a natural fit for tabletop games. Take a few evenings to experiment with creating a game. If you're new to it, start with something simple, like this blank card activity:
-
- 1. Gather up some friends.
- 2. Give each person a few blank index cards, and tell them to write a rule on each card. The rule can be anything ("If you're wearing something red, you win" or "The first person to stand up wins," and so on.)
- 3. On your own index cards, write _and_, _but_, _or_, _but not_, _and not_, _except_, and other conditional phrases.
- 4. Shuffle your deck and deal the cards to all players.
- 5. Each player may play one card per turn.
- 6. The goal is to win, but players may play the _and_, _but_, and _or_ cards to modify the conditions of what determines the winner.
-
-
-
-It's a fun party game and a nice introduction to thinking like a game designer because it helps you recognize what tends to work as a game mechanic and what doesn't.
-
-And, of course, it's open source.
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/21/12/open-source-card-game
-
-作者:[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/rich-smith-unsplash.jpg?itok=uzzS0gRa (Deck of playing cards)
-[2]: https://opensource.com/article/20/1/what-creative-commons
-[3]: https://opensource.com/article/21/12/opengameart.org/
-[4]: http://freesvg.org
-[5]: http://artstation.com
-[6]: http://deviantart.com
-[7]: https://opensource.com/article/21/12/krita-digital-paint
-[8]: https://opensource.com/article/21/12/linux-draw-inkscape
-[9]: https://opensource.com/content/cheat-sheet-gimp
-[10]: https://opensource.com/sites/default/files/inkscape-layout.jpg (Layout in Inkscape)
-[11]: https://www.thegamecrafter.com/
-[12]: https://opensource.com/sites/default/files/cards-printed_0.jpg (Printed cards)
-[13]: https://opensource.com/life/16/11/software-documentation-tabletop-gaming
diff --git a/sources/talk/20220212 5 levels of transparency for open source communities.md b/sources/talk/20220212 5 levels of transparency for open source communities.md
deleted file mode 100644
index a2f7ae1545..0000000000
--- a/sources/talk/20220212 5 levels of transparency for open source communities.md
+++ /dev/null
@@ -1,111 +0,0 @@
-[#]: subject: "5 levels of transparency for open source communities"
-[#]: via: "https://opensource.com/article/22/2/transparency-open-source-communities"
-[#]: author: "Emilio Galeano Gryciuk https://opensource.com/users/egaleano"
-[#]: collector: "lujun9972"
-[#]: translator: " "
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-5 levels of transparency for open source communities
-======
-Open source community managers need to apply these 5 levels of
-transparency to build a thriving open source community.
-![Person in a field of dandelions][1]
-
-Managers of open source communities have to be aware of the 5 levels of transparency that they can provide. These 5 levels of transparency are important for building a thriving open source community.
-
-This article describes each level, its goals, and why they are important. But first, I revisit why transparency is important for open source ecosystems.
-
-### Why do open source ecosystems need transparency?
-
- * Transparent communities inspire trust** **in each other, which greases the wheels of collaboration.
- * Communities work together and exchange messages in the open.
- * Open source work happens in a transparent way to avoid friction.
- * Community managers need to report to their stakeholders.
- * Showing communities what information is available about them is healthy and encourages trust.
-
-
-
-### What are the 5 levels of transparency?
-
-#### Transparency level 1: Publish source code
-
-This level is about releasing source code under an [Open Source Initiative (OSI)-approved license][2] in a public-facing version control system like [Git][3].
-
-The first level's goal is to establish** **an open source project.
-
- * This level is self-evident as there would be no open source project without the source code.
- * At the core of an open source project is the source code that people engage with—licensed under an OSI-approved license.
- * A public version control system enables collaboration and allows everyone to analyze the project and understand the collaboration patterns.
-
-
-
-#### Transparency level 2: Publish community guidelines
-
-You publish documentation and resources on contributing at this level, and you organize special events to educate the community.
-
-The second level's goal is to create and grow a community for an open source project.
-
- * Building an active community requires more than** **just having a source code**.**
- * Being transparent about how a project works and how to contribute enables others to join a project**.**
- * Growing the community may involve** **running events and doing special activities for contributors.
-
-
-
-#### Transparency level 3: Celebrate successes
-
-Once you reach this level, it's important to share insights about the community and publish reports about the project's status.
-
-The third level's goal is to celebrate successes and secure further support** **beyond the initial phase of the community.
-
- * As open source communities grow, it becomes harder to know what's happening everywhere.
- * Being transparent about the activities in the community helps community members know that their contributions are being seen and valued.
- * At this level of transparency, the reporting and analytics** **are sporadic and without specific tooling.
-
-
-
-#### Transparency level 4: Understand the pulse of the community
-
-This level is all about listening to the community—keeping an eye on the project's evolution in community activity and the software development process to take corrective actions.
-
-The fourth level's goal is to take the community to the next level by understanding its evolution and trajectory with consistency and scientific rigor.
-
- * Reporting mechanisms and analytics tools help keep an eye on what is happening.
- * You can compare events in the community and the subsequent reactions of community members to a baseline and other events in the community.
- * Deeper insights into the community are possible with consistent listening.
-
-
-
-#### Transparency level 5: Maintain the community long-term
-
-The last step is acting on community metrics and improving community engagement.
-
-The fifth level's goal is to make meaningful and impactful decisions about community engagement.
-
- * Have systems in place to** **react to changes** **in community metrics.
- * Follow up on how changes to the community are showing up in the metrics and analytics about the community.
- * Set "SLAs" and accountability for maintainers or developers to have goals for their community engagement and at a system level makes sure things get done.
-
-
-
-### Wrap up
-
-Open source community managers need to apply these 5 levels of transparency to build a thriving open source community.
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/22/2/transparency-open-source-communities
-
-作者:[Emilio Galeano Gryciuk][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/egaleano
-[b]: https://github.com/lujun9972
-[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_dandelion_520x292.png?itok=-xhFQvUj (Person in a field of dandelions)
-[2]: https://opensource.org/licenses
-[3]: https://opensource.com/tags/git
diff --git a/sources/talk/20220216 Everything You Need to Know About Mozilla and Meta (Facebook) Working Together.md b/sources/talk/20220216 Everything You Need to Know About Mozilla and Meta (Facebook) Working Together.md
deleted file mode 100644
index 54a7d9885d..0000000000
--- a/sources/talk/20220216 Everything You Need to Know About Mozilla and Meta (Facebook) Working Together.md
+++ /dev/null
@@ -1,114 +0,0 @@
-[#]: subject: "Everything You Need to Know About Mozilla and Meta (Facebook) Working Together"
-[#]: via: "https://news.itsfoss.com/mozilla-meta-facebook/"
-[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
-[#]: collector: "lujun9972"
-[#]: translator: "sthwhl"
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-Everything You Need to Know About Mozilla and Meta (Facebook) Working Together
-======
-
-I’m sure it is easy to make several assumptions about the story going by the headlines.
-
-_Why?_
-
-Well, it is **Facebook**, after all.
-
-Even if it is “**Meta**” now, it does not change the fact that they were involved in some of the worst privacy practices ever.
-
-If you think twice, Facebook isn’t an ideal privacy-focused social media platform (even though I still use it for certain use-cases).
-
-_With so much more to complain about, how come a privacy-focused company “Mozilla” end up working with Meta (Facebook)?_
-
-Surprisingly, Mozilla made several remarks about Facebook’s bad privacy practices in the past.
-
-Not to forget, Mozilla Firefox was one of the first web browsers to prevent companies like Facebook from tracking users thanks to [total cookie protection][1] and some other technologies.
-
-Furthermore, they recently started a study collaborating with **The Markup** to analyze the type of information Facebook collects.
-
-So, why are they working with Facebook now?
-
-### Privacy-Preserving Attribution Using IPA
-
-Mozilla revealed in a [blog post][2] that it has been working with a team from Meta on a new proposal about a privacy-respecting attribution.
-
-Attribution in advertising lets the advertisers/marketers know if their ad campaigns are performing as expected.
-
-And, Mozilla plans to introduce **Interoperable Private Attribution** (or IPA) to give advertisers the ability to check insights while making the advertising privacy-friendly.
-
-### How Does IPA Aim to Make Advertising Privacy-Friendly?
-
-Mozilla is utilizing its expertise with its existing privacy-preserving telemetry technology, [Prio][3].
-
-While that sounds promising, how does IPA work?
-
-As described in the blog post, Mozilla says that IPA offers two privacy-preserving features:
-
- * It uses Multi-party Computation (MPC) to prevent a single entity (browser, advertisers, or websites) to learn about user behavior.
- * Instead of individual results linking to a track/profile users, IPA is an aggregated system that does not link back anything to individual users.
-
-
-
-Technically, they plan to use “match keys” that are different from cookies but can be used across different browsers/devices to be able to generate useful reports.
-
-These match keys will help produce summary statistics about the ad interaction events (whether it is clicked, seen, and if it made a conversion).
-
-As per the proposal, the match keys would be writable but not readable, making it a critical component of the privacy properties in IPA.
-
-### Is This Useful?
-
-Taking a good look at its [proposal][4], it is safe to say that it sounds promising.
-
-Considering ad revenue is still the major fuel for most businesses, it only makes sense to make it privacy-friendly and less intrusive.
-
-The result could simply bring back the good old days when users weren’t worried about advertising but curious about what they see in them.
-
-Unlike [Google’s FLoC][5], this can create a win-win scenario for both advertisers and the users as well.
-
-### How Does Meta Fit in the Picture?
-
-![][6]
-
-I am really not sure about this.
-
-I have no intention of making ill-informed remarks about the technology proposed by Mozilla, collaborating with Meta.
-
-On the other hand, I can’t be confident about it, considering they chose “Meta” to collaborate on something that is important to improve the advertising industry without harming user privacy.
-
-### Mozilla, What Are You Hiding?
-
-I’m not stirring up controversy (or a wild theory).
-
-But, a transparent, and privacy-respecting company just decided to collaborate with a company that isn’t really known for privacy?
-
-Isn’t it too obvious that the team at Mozilla already knows this?
-
-And, they still decided to go ahead with it, without any transparent public communication on their social media channels as well.
-
-Yes, they did publish the blog post, but it wasn’t promoted, considering it is an important proposal affecting almost every industry on the web.
-
-_Is it safe to assume that Mozilla no longer cares about its userbase with this move?_
-
-_It’s totally up for discussion in the comments down below!_
-
---------------------------------------------------------------------------------
-
-via: https://news.itsfoss.com/mozilla-meta-facebook/
-
-作者:[Ankush Das][a]
-选题:[lujun9972][b]
-译者:[sthwhl](https://github.com/sthwhl)
-校对:[校对者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/lujun9972
-[1]: https://news.itsfoss.com/firefox-86-release/
-[2]: https://blog.mozilla.org/en/mozilla/privacy-preserving-attribution-for-advertising/
-[3]: https://crypto.stanford.edu/prio/
-[4]: https://docs.google.com/document/d/1KpdSKD8-Rn0bWPTu4UtK54ks0yv2j22pA5SrAD9av4s/edit
-[5]: https://techcrunch.com/2022/01/25/google-kills-off-floc-replaces-it-with-topics/
-[6]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQzOSIgd2lkdGg9Ijc4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=
diff --git a/sources/talk/20220308 5 Things to Know When Someone Says Linux is Tough.md b/sources/talk/20220308 5 Things to Know When Someone Says Linux is Tough.md
deleted file mode 100644
index 0739b7044a..0000000000
--- a/sources/talk/20220308 5 Things to Know When Someone Says Linux is Tough.md
+++ /dev/null
@@ -1,174 +0,0 @@
-[#]: subject: "5 Things to Know When Someone Says Linux is Tough"
-[#]: via: "https://news.itsfoss.com/things-to-know-linux-is-tough/"
-[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
-[#]: collector: "lujun9972"
-[#]: translator: " "
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-5 Things to Know When Someone Says Linux is Tough
-======
-
-Linux is the least popular desktop operating system (OS) when considering Windows, macOS, and Linux as our only choices.
-
-Linux powers most of the servers, but that is not the case for consumer desktops/laptops.
-
-To make things worse, many assume that Linux is tough from other experiences, even without giving it a try.
-
-But, is it? If yes, what exactly do people refer to as tough?
-
-### Is Linux Tough to Learn?
-
-Unlike Windows and macOS, several things are fundamentally different for Linux (here, Linux distributions).
-
-Yes, Linux distributions offer [advantages over Windows][1] and [macOS][2] with all the differences accounted for.
-
-Moreover, you can perform almost all the essential tasks on a Linux desktop. In some cases, Linux operating system offers a similar user interface to Windows/macOS, making things convenient.
-
-**Don’t believe me?** Check out some [Windows-like Linux distributions][3].
-
-So, what do users find challenging?
-
-Here, I will discuss the points that new users generally find difficult, which should help you realize that Linux is not as tough as you thought.
-
-### 1\. Software Installation and Package Management
-
-![][4]
-
-There are different methods to install the software (or a package) for Linux.
-
-You can install it from the software center or the terminal, or download the package from the official source to install it manually.
-
-Or, you can even [compile it from the source][5].
-
-Unlike Windows/macOS, it is not just about executables (EXE) or **dmg** files.
-
-Depending on the type of Linux distribution, the package support changes. For instance, you can [install DEB files on Ubuntu][6].
-
-And, if you use Fedora as your desktop OS, you will have to [install RPM files][7].
-
-To make things simpler, [Flatpak packa][8][g][8][es][8] and Snaps came into existence. If you find a Flatpak package or Snap version of an app available, you can install it on any Linux distribution.
-
-However, you might need to [set up the support for Flatpak][9] and [Snap][10] if your Linux distribution does not have it by default.
-
-So, you will have to understand that due to the diversity of Linux distributions, there are various installation methods and packages available. As long as you know the supported packages and the installation methods, it should be easy.
-
-### 2\. The Terminal Panic
-
-![][4]
-
-With Windows/macOS, you may not need to launch the terminal or the command prompt often.
-
-Yes, a few troubleshooting solutions need access to the command line. But, not as often compared to Linux.
-
-With Linux, even when using [some of the best Linux distributions][11], you will often need to access the terminal and type some commands for tasks like:
-
- * Refreshing the repository list
- * Removing a software not installed via software center
- * Adding a repository to install software
-
-
-
-Technically, you do not have to learn any complex commands, but knowing a few of them to quickly uninstall a package, install a flatpak app, and so on can come in handy.
-
-Typically, you will have the commands/instructions from the official site of any app you attempt to install. In some cases, when setting out to troubleshoot, you will find the exact command to type in from the community forums.
-
-So, you do not need to “remember” anything, and a quick search on the internet should help you with it.
-
-However, this can be overwhelming to some users, so they do not make an effort and avoid trying Linux on their computer.
-
-Eventually, they lose interest in exploring anything else related to Linux.
-
-### 3\. Installing Graphics Drivers
-
-![][4]
-
-While macOS does not bother with third-party graphics support, it does not support proper virtualization (especially ARM) and gaming. So, we shall exclude that and focus on Windows.
-
-Both Windows and Linux support gaming/virtualization. And, you need to install graphic drivers to make these things work, if not just for watching streams/videos.
-
-With Windows, you need to download the respective driver for your graphics card and get it installed. You do not encounter issues with the first-time installation for the most part.
-
-However, for Linux, the latest graphic driver version does not always work (especially NVIDIA). So, it is not as simple as downloading from the official website and installing it.
-
-If your Linux distribution features a driver manager (like Linux Mint), it makes things easy.
-
-If not, you might have to look for an ISO file for the OS you like with supported graphic drivers included.
-
-Overall, installing graphics drivers is not a big deal if you are using a mainstream Linux distribution, but if you choose a different distribution, you may have to research before you install it on bare metal.
-
-### 4\. Software Support
-
-You do not find support for all Windows/macOS applications on Linux.
-
-If the service offers cross-platform support, chances are it supports Linux distributions like Ubuntu, Fedora, and Arch. Otherwise, you will have to search for alternatives.
-
-So, the lack of software availability makes Linux an incredibly unsatisfying experience.
-
-However, we have an extensive [list of essential applications][12] that can give you a head start.
-
-Unfortunately, not everyone is aware of it. And some users remain reluctant to try an alternative.
-
-### 5\. Tweaking Peripherals and Components
-
-![][4]
-
-It is not just about the usability and apps available. It is also about the ability to manage and tweak hardware devices connected to your computer.
-
-Linux does not have official software support from various hardware brands like Razer, Corsair, ASUS, etc.
-
-So, when users realize that they cannot manage their RGB lighting, fan profiles, and cooling devices as conveniently as they expected, Linux is out of their wishlist.
-
-However, you should know that there are tools that already help with it, things like:
-
- * [Configuring a gaming mouse][13]
- * [Tweaking a razer peripheral][14]
- * [Controlling and monitoring cooling devices][15]
-
-
-
-Yes, it may not be official, but it works with a wide range of peripherals and components. So, if the lack of official support for peripherals and component monitoring stopped you from trying Linux, now you can give it a try with these solutions!
-
-### Wrapping Up
-
-For starters, I think these are the most common things that prevent users from trying Linux and end up declaring it as the most challenging operating system.
-
-You will have to keep in mind that trying a different operating system always comes with new challenges and a learning curve.
-
-Linux as a desktop operating system is easier than ever before. Linux distributions like **Ubuntu, Pop!_OS, Linux Mint, Linux Lite**, and many more have made it possible for new users to feel right at home.
-
-Even with all the improvements, it can be overwhelming for some users, which is why we wanted you to know that it is not as problematic as you originally assumed.
-
-_If you have a friend who still has not tried Linux for the reasons mentioned above, I recommend you to share this along and help them know better to make an informed choice._
-
-_Let me know your thoughts in the comments below._
-
---------------------------------------------------------------------------------
-
-via: https://news.itsfoss.com/things-to-know-linux-is-tough/
-
-作者:[Ankush Das][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://news.itsfoss.com/author/ankush/
-[b]: https://github.com/lujun9972
-[1]: https://itsfoss.com/linux-better-than-windows/
-[2]: https://itsfoss.com/linux-vs-mac/
-[3]: https://itsfoss.com/windows-like-linux-distributions/
-[4]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQ2OCIgd2lkdGg9Ijc4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=
-[5]: https://itsfoss.com/install-software-from-source-code/
-[6]: https://itsfoss.com/install-deb-files-ubuntu/
-[7]: https://itsfoss.com/install-rpm-files-fedora/
-[8]: https://itsfoss.com/what-is-flatpak/
-[9]: https://itsfoss.com/flatpak-guide/
-[10]: https://itsfoss.com/use-snap-packages-ubuntu-16-04/
-[11]: https://itsfoss.com/best-linux-distributions/
-[12]: https://itsfoss.com/essential-linux-applications/
-[13]: https://itsfoss.com/piper-configure-gaming-mouse-linux/
-[14]: https://itsfoss.com/set-up-razer-devices-linux/
-[15]: https://itsfoss.com/coolero/
diff --git a/sources/talk/20220319 What-s the Fuss About GNOME-s Libadwaita Library in Linux World.md b/sources/talk/20220319 What-s the Fuss About GNOME-s Libadwaita Library in Linux World.md
new file mode 100644
index 0000000000..6c080d9828
--- /dev/null
+++ b/sources/talk/20220319 What-s the Fuss About GNOME-s Libadwaita Library in Linux World.md
@@ -0,0 +1,93 @@
+[#]: subject: "What’s the Fuss About GNOME’s Libadwaita Library in Linux World?"
+[#]: via: "https://news.itsfoss.com/gnome-libadwaita-library/"
+[#]: author: "Jacob Crume https://news.itsfoss.com/author/jacob/"
+[#]: collector: "lujun9972"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+What’s the Fuss About GNOME’s Libadwaita Library in Linux World?
+======
+
+Back in March 2020, the GNOME project announced a new library called Libadwaita. This promised to fix numerous fundamental issues with GTK, the library GNOME uses to build its desktop environment.
+
+Unfortunately, this announcement also resulted in some significant community backlash. While this hasn’t really slowed the adoption of Libadwaita, it seems that some users are now starting to boycott GNOME because of it.
+
+But what impact does Libadwaita have in the real world? And how does this differ for users and developers?
+
+### Main Features Of Libadwaita
+
+While it was originally meant to be a solution to the many GNOME-specific libraries developers needed to use, it has since grow into much more. As Adrian Plazas said in his [blog][1]:
+
+> GNOME needs a blessed library implementing its HIG (Human Interface Guidelines) rapidly, developed in collaboration with its design team.
+>
+> […]
+>
+> To solve both GTK’s need of independence and GNOME’s need to move faster, we are creating the libadwaita project. This new libadwaita library intends to extend that concept by being the missing code part of Adwaita. The library will be implemented as a direct GTK 4 continuation and replacement of libhandy, and it will be developed by libhandy’s current developers.
+
+Adrian Plazas
+
+Basically, Libadwaita is meant to be a GNOME-specific version of GTK4, with the GNOME project in complete control of the look and feel of apps. However, it also incorporates a number of other features:
+
+ * Adaptive widgets so that apps can work on both desktops, laptops, tablets, and smartphones (like the PinePhone)
+ * New Adwaita version, following the latest trends in UI design
+ * Built-in styles for buttons and other widgets
+ * Built-in in-app notifications
+ * Improved and more customizable animations
+ * Speed and fluidity improvements
+
+
+
+While all these features are awesome, a select few have divided the community, mostly between developers and users. As someone who has made a number of small little projects with Libadwaita and GTK3 (without Libadwaita), as well as a GNOME user, I want to talk about the different perspectives of different people.
+
+### User Perspective
+
+![][2]
+
+Unfortunately, Libadwaita has been met by immense backlash by some GNOME users. This all stems from one key change in Libadwaita: The inability to theme it. This is because the Adwaita theme is built right into Libadwaita, meaning that it would need to be recompiled every time the theme was changed.
+
+This is a fundamental aspect of Libadwaita, for better or for worse. As a result, some users have decided that this is an attempt by GNOME to lock down their app ecosystem.
+
+However, this does not mean that Libadwaita is dead in the water. From the very beginning, the GNOME developers have been adamant that a theming API would come soon, and it looks like this will happen.
+
+While this wouldn’t solve the issue of incompatibility of existing GTK and GNOME themes, it would solve some more fundamental issues. As has been said numerous times, the CSS theming that GTK currently users is much more of a band-aid fix to the problem of theming than a permanent solution. And, as with many open-source projects, this band-aid fix has been built upon to the extent now that there is very little chance of going back.
+
+Libadwaita would go some steps to fixing this, but at the cost of the existing app ecosystem. With all this hate, however, developers continue to implement it. Why might this be?
+
+### Developer Perspective
+
+![][2]
+
+As you saw in the feature list before, there are a huge number of features that help developers tremendously. For me, this has been the ability to create convergent apps, and the sole reason I use Libadwaita.
+
+Unfortunately, as with almost every new GNOME library, there is minimal language-specific documentation available. This is instead replaced with a much more generic, automatically-generated documentation system.
+
+While this is better than nothing, it is still quite lacklustre, especially considering the incredible community of developers GNOME has.
+
+### A Better Solution?
+
+Now, I hope that I have explained everyone’s position on Libadwaita, except mine. To be honest, I actually quite enjoy developing with it, even with all its teething problems. Unfortunately, I am also a huge fan of theming, and have found Libadwaita apps quite jarring compared to everything else.
+
+However, I think there is a solution. As I said before, Libadwaita was created in response to the faster development pace GNOME needed. However, couldn’t this be achieved through a branch from GTK 4?
+
+This would allow GTK to inherit all the exciting features in Libadwaita, as well as allowing a more unified approach to GNOME libraries. As I said before in [my Flutter article][3], I believe that desktop Linux is too fragmented, and this extends to GTK.
+
+What do you think about Libadwaita? Do you support it, or are you going to be boycotting GNOME? Please, I would love to hear your opinions in the comments below!
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/gnome-libadwaita-library/
+
+作者:[Jacob Crume][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://news.itsfoss.com/author/jacob/
+[b]: https://github.com/lujun9972
+[1]: https://aplazas.pages.gitlab.gnome.org/blog/blog/2021/03/31/introducing-libadwaita.html
+[2]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQzOSIgd2lkdGg9Ijc4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=
+[3]: https://news.itsfoss.com/no-flutter-on-linux-desktop/
diff --git a/sources/talk/20220421 How Linux rescues slow computers (and the planet).md b/sources/talk/20220421 How Linux rescues slow computers (and the planet).md
new file mode 100644
index 0000000000..42c8c722e0
--- /dev/null
+++ b/sources/talk/20220421 How Linux rescues slow computers (and the planet).md
@@ -0,0 +1,115 @@
+[#]: subject: "How Linux rescues slow computers (and the planet)"
+[#]: via: "https://opensource.com/article/22/4/how-linux-saves-earth"
+[#]: author: "David Both https://opensource.com/users/dboth"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+How Linux rescues slow computers (and the planet)
+======
+Don't throw away your old computer. Skip the landfill and revive it with Linux.
+
+![Old UNIX computer][1]
+
+(Image by: Opensource.com)
+
+Mint and Kasen, two of my grandkids, asked me to help them build gaming computers. I am ecstatic that they asked. This gives me a great opportunity to help them learn about technology while being a part of their lives. Both of those things make me happy. There are many ways to approach the ecological impact of computers.
+
+Wait! That's quite a non-sequitur—right? Not really, and this article is all about that.
+
+### What happens to old computers?
+
+What happens to old computers (and why) is a big part of this discussion. Start with the typical computer getting replaced after about five years of service. Why?
+
+Online articles such as [this one][2] I found on CHRON, a publication aimed at small businesses suggest a three-to-five-year lifespan for computers. This is partly based on the alleged fact that computers slow down around that time in their life cycle. I find the pressure to get a newer, faster computer within that same time frame in this and other articles. Of course, much of that pressure comes from the computer and chip vendors who need to keep their income streams growing.
+
+The United States Internal Revenue Service reinforces this five-year service life by specifying that time frame for full depreciation of computers.
+
+Let's start with the myth of computer slowdowns. Computers don't slow down—ever. Computers always run at their designed clock speeds. Whether that is 2.8GHz or 4.5GHz, they will always run at that speed when busy. Of course, the clock speeds get intentionally reduced when the computer has little or nothing to do, saving power.
+
+Computers don't slow down because they are old. Computers with Windows installed produce less legitimate work as they grow older because of the massive amount of malware, spyware, adware, and scareware they accumulate over time. Computer users have come to believe that this is normal, and they resign themselves to life with all of this junk dragging down the performance of their computers.
+
+More Linux resources
+
+* Linux commands cheat sheet
+* Advanced Linux commands cheat sheet
+* Free online course: RHEL Technical Overview
+* Linux networking cheat sheet
+* SELinux cheat sheet
+* Linux common commands cheat sheet
+* What are Linux containers?
+* Our latest Linux articles
+
+### Linux to the rescue
+
+As a known computer geek among my friends and acquaintances, people sometimes gift me with their old computers. They no longer want them because they are slow, so they give them to me and ask me to wipe their hard drives before taking them to the electronics recycling center a few blocks from my house. I always suggest that their three-to-five-year-old computers are still good, but they seem intent on spending money rather than learning a new operating system.
+
+I have several old computers gifted to me. One, in particular, a Dell Optiplex 755 with a 2.33 GHz Core 2 Duo processor and 8GB of RAM, is particularly interesting. Its BIOS is dated 2010, so it is around 12 years old. It is the oldest computer I have, and I keep it quite busy. I have had it for several years, and it never slows down because I use Linux on it—Fedora 35 right now.
+
+If that is an exception, here are more. I built three computers for myself in 2012, ten years ago, and installed Fedora on all of them. They are all still running with no problems and as fast as they ever did.
+
+There are no exceptions here, just normal operations for old computers on Linux.
+
+Using Linux will at least double the usable lifetime of a computer and at no cost. This keeps those computers out of the landfill (at worst) and out of the recycling centers (at best) for an additional five-to-seven years or more.
+
+So long as I can find replacement parts for these computers, I can keep them running and out of any disposal or recycling path. The problem with some computers is finding parts.
+
+### Non-standard hardware
+
+Let's talk about non-standard hardware and some of the computers that you can buy from some well-known companies. As I mentioned above, one of my old computers is a Dell. Dell is a respectable company that has been around for a long time. I will never purchase a Dell desktop or tower computer, although I will take them as donations or gifts. I can install Linux, get rid of Windows, and make these old computers useful again. I use them in my home lab as test computers, among other things.
+
+However, Dell uses some non-standard parts that you can't easily replace. When you can find parts (like power supplies and motherboards), they are not cheap. The reason is that those vendors create systems with non-standard power supplies and motherboards that only fit within their own non-standard cases. This is a strategy used to keep revenues up. If you can't find these parts on the open market, you must go to the original manufacturer and pay inflated, if not exorbitant, prices.
+
+As one example, the Dell Optiplex I have uses a motherboard, case, and power supply that do not meet generally accepted standards for physical compatibility. In other words, a Dell motherboard or power supply would not fit in a standard case that I can purchase at the local computer store or Amazon. Those parts would not fit in a gaming case that my grandkids would use. The holes for mounting the motherboard and power supply would not align. The power supply would not fit the space available in the standard case. The PCI card slots and back panel connectors on the motherboard would be in the wrong place for a standard case, and the power supply connectors would not match those on a standard motherboard.
+
+Eventually, one or more of those non-standard parts will fail, and you won't be able to find a replacement at all, or at least not for a reasonable price. At that point, it makes sense to dispose of the old computer and purchase a new one.
+
+### Standard builds
+
+Let's explore what using standardized parts can do for building computers, their longevity, and how that applies to the gaming computers that I am helping my grandkids with.
+
+Most motherboards are standardized. They have standard forms such as micro ATX, ATX, and extended ATX. All of these have mounting holes in standard locations. Many of the locations overlap, so holes for ATX motherboards align with many of the mounting holes used on extended ATX motherboards. This means that you can always use a case that has holes drilled for standard motherboard hole locations for any of those motherboards. These motherboards have standard power connectors, which means you can use them with any standard power supply.
+
+I sent both of my grandkids a gaming computer case that has standardized mounting holes for the motherboards for their birthdays. These holes have standard threads so that they can use the brass standoffs that come with any motherboard in those motherboard mounting holes. The standoffs screw into the motherboard, and themselves have standard threaded holes that fit standard motherboard mounting screws.
+
+The result of all this is that they can install any standard motherboard in any standard case using standard fasteners with any standard power supply.
+
+Note that memory, processors, and add-in cards are all standardized, but they must be compatible with the motherboard. So memory for an old motherboard may no longer be available. You would need a new motherboard, memory, and processor in such a case. But the rest of the computer is still perfectly good.
+
+As I have told Mint and Kasen, building (or purchasing) a computer with standard parts means never having to buy a new computer. The good case I gave them will never need replacement. Over time components may fail, but they only need to replace any defective parts. This continuous renewal of standardized parts will allow those computers to last a lifetime with minimal cost. If one component fails, just replace that one part and recycle the defective one.
+
+This also significantly reduces the amount of material you need to recycle or otherwise add to the landfills.
+
+### Recycling old computer parts
+
+I am fortunate to live in a place that provides curbside recycling pickup. Although that curbside pickup does not include electronic devices, multiple locations around the area do take electronics for recycling, and I live close to one. I have taken many loads of old, unusable electronics to that recycling center, including my computers' defective parts. But never an entire computer.
+
+I collect those defective parts in old cardboard boxes, sorted by type—electronics in one, metal in another, batteries in a third, and so on. This corresponds to the collection points at the recycling center. When a box or two get full, I take them for recycling.
+
+### Some final thoughts
+
+Even after a good deal of research for this article and my own edification in the past, it is very difficult to determine where the recycled computers and computer parts will go. The website for our recycling center indicates that the outcomes for each type of recycled material get based on its economic value. Computers have relatively large amounts of valuable metals and rare earth elements, so they get recycled.
+
+The issue of whether such recycling gets performed in ways that are healthy for the people involved and the planet itself is another story. So far, I have been unable to determine where electronics destined for recycling go from here. I have decided that I need to do my part while working to ensure the rest of the recycling chain gets set up and functions appropriately.
+
+The best option for the planet is to keep computers running as long as possible. Replacing only defective components as they go bad can keep a computer running for years longer than the currently accepted lifespan and significantly reduces the amount of electronic waste that we dump in landfills or that needs recycling.
+
+And, of course, use Linux so your computers won't slow down.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/4/how-linux-saves-earth
+
+作者:[David Both][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/dboth
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/retro_old_unix_computer.png
+[2]: https://smallbusiness.chron.com/life-span-average-pc-69823.html
diff --git a/sources/talk/20220423 I Ditched Ubuntu for Manjaro- Here-s What I Think After a Week.md b/sources/talk/20220423 I Ditched Ubuntu for Manjaro- Here-s What I Think After a Week.md
new file mode 100644
index 0000000000..948d479519
--- /dev/null
+++ b/sources/talk/20220423 I Ditched Ubuntu for Manjaro- Here-s What I Think After a Week.md
@@ -0,0 +1,188 @@
+[#]: subject: "I Ditched Ubuntu for Manjaro: Here’s What I Think After a Week"
+[#]: via: "https://news.itsfoss.com/manjaro-linux-experience/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lujun9972"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+I Ditched Ubuntu for Manjaro: Here’s What I Think After a Week
+======
+
+Primarily, I rely on Ubuntu-based distributions like Pop!_OS, Zorin OS, Linux Mint, or Ubuntu itself for work.
+
+They get out of the way when I work on something, along with seamless software updates. Not to forget, they get along well with my Intel-Nvidia-powered system.
+
+Everything (can be subjective) works out of the box.
+
+However, I recently decided to switch to Arch Linux on bare metal (because I mostly used it on virtual machines).
+
+And then, I ended up using **Manjaro Linux** (an Arch-based distro).
+
+### Here’s Why I Picked Manjaro Linux
+
+To my surprise, I couldn’t even get past the “_nouveau DRM: core notifier timeout_” error, let alone proceed with the installation when using a **live USB for Arch Linux**. Yes, I’m aware of the [guided installer with Arch Linux][1], but the connected displays just kept on flickering, highlighting this error, no matter what.
+
+The best solution to this problem was not to get an NVIDIA card with my recent upgrade.
+
+_Too bad, I prefer Nvidia GPUs…_
+
+AMD’s RX 6600 XT is similarly priced to RTX 3060 Ti; it did not make sense to get that card for 1440p.
+
+So, yes, RTX 3060 Ti can be the problem in my case.
+
+While I found some methods to troubleshoot the issue, I was too lazy. I just wanted to see if I could experience Arch Linux without putting in a great effort.
+
+**So, here’s what I did:**
+
+The next-best option would be to try any of the [best Arch-based distros][2] tailored to make things easy, right?
+
+And that’s where **Manjaro Linux** comes in.
+
+Manjaro Linux is a popular Arch-based distro, and I’ve noticed regular improvements to it with every update (while using it on a VM).
+
+Furthermore, I like Manjaro’s default theme accent color for my desktop experience.
+
+So, I decided to give it a try…
+
+### Manjaro Linux: Rough Start
+
+![][3]
+
+I did not have any issues installing Manjaro with proprietary Nvidia drivers. However, a recent point update, i.e., **Manjaro Linux 21.2.6,** messed up the system.
+
+I couldn’t access the login screen and the [TTY][4] (all I could see was the motherboard’s manufacturer logo)
+
+So, I had to re-install Manjaro Linux using the latest ISO, and so far, so good (touch wood).
+
+And during my usage of Manjaro Linux, I noticed a few things that make up for its good and bad points.
+
+Here, I highlight some of my experiences. These insights should help you explore more about it if you haven’t tried it yet.
+
+#### 1\. Easy Installation
+
+The primary highlight of an Arch-based distro is to make things easy to set up. And I had no issues whatsoever.
+
+It was a breeze installing Manjaro Linux on my secondary drive. The bootloader was correctly configured to display the Manjaro-themed boot menu that lets me select Windows/Manjaro Linux for dual-boot.
+
+#### 2\. Manjaro Hello
+
+![][5]
+
+The welcome experience makes up for a significant part of a user experience when trying something new. And Manjaro Linux does not disappoint in this regard.
+
+You get all the essential information if you pay close attention to the information available via the welcome screen.
+
+The GNOME Layouts Manager lets you pick a suitable layout to get yourself comfortable.
+
+![][6]
+
+However, I couldn’t get the “**Window Tiling**” functionality working when I tried to enable it here:
+
+![][7]
+
+#### 3\. Package Manager is Fast and Versatile
+
+![][8]
+
+Considering that GNOME is my favorite desktop environment, I have had terrible experiences with the software center (or even with distro-specific stores like Pop!_Shop).
+
+While they get the work done, sometimes they do not respond or aren’t responsive enough as I expect them to be.
+
+With Manjaro Linux, I found [Pamac][9] installed as the package manager. It seems to be one of the [best ways to install and remove software on Manjaro Linux][10].
+
+In my experience, it was blazing fast with installations and removing packages. You also get prompts for conflicts in packages or if something needs to be replaced/removed. The package manager gives plenty of information about the optional/required dependencies when you install something.
+
+Overall, it was a pretty good experience without any slowdowns. To sweeten the experience, the package manager lets you quickly enable the support for **Flatpaks/Snaps/AUR** by tweaking the preferences of pamac.
+
+![][11]
+
+So, you do not have to use the terminal or different software stores. Everything will be available under a single roof, which is a big time saver.
+
+#### 4\. Trying out the ZSH Shell
+
+![][12]
+
+I am used to the bash shell on Ubuntu-based distros. However, Manjaro Linux features the ZSH shell by default. I believe ZSH is better than bash, but I’ll take a deep dive into the comparison with a separate article soon.
+
+In other words, I get to try something different out of the box. To my excitement, the terminal prompt and the theme for the shell (or the terminal) that follows the Manjaro branding accent colors look pretty impressive!
+
+![][12]
+
+Hence, I do not need to [customize the look of the terminal here][13].
+
+To explore more, you might want to check some of our resources on [what ZSH is][14] and [how to install it][15].
+
+#### 5\. Lack of Official Software Support
+
+![][16]
+
+I hope this improves soon. But, as of now, many software/utilities offer direct support for Ubuntu and Fedora only.
+
+You can find official DEB/RPM packages for various tools, but neither will work directly with Manjaro Linux.
+
+You will have to rely on the packages available in Arch Linux repositories or [AUR][17].
+
+Fortunately, there are good chances to find the software in AUR or their repositories maintained by the community or distro developers. Just like I was able to get [Insync][18] (_affiliate link_) to work on Manjaro Linux with file manage integration extensions available.
+
+However, without official support for the platform, you may/may not miss out on some features or quick updates.
+
+Of course, if you rely on [Flatpak][19] or Snap packages, it should not be an issue for you. Furthermore, if you are new to Linux, you can refer to our [Flatpak guide][20] for more information.
+
+#### 6\. No Fractional Scaling
+
+I have a dual-monitor setup with 1080p + 1440p resolutions. So, fractional scaling helps, but I can manage without it.
+
+To enable fractional scaling on Manjaro, you will have to install x11-scaling enabled packages for Mutter and GNOME control center. The packages include:
+
+ * **mutter-x11-scaling**
+ * **gnome-control-center-x11-scaling**
+
+
+
+This will replace your existing mutter and gnome control center packages. So, you will lose the default theme/accent settings for your desktop.
+
+You may have to utilize GNOME Tweaks to get things right. But, it can turn out to be an annoying experience.
+
+### Final Thoughts
+
+Overall, I enjoy the desktop experience with Manjaro Linux. If another system update doesn’t break the experience, I think I will continue with Manjaro Linux as my new daily driver.
+
+_What do you think are the strong/weak points for Manjaro Linux? Did I miss something as part of my new experience? Do you have any suggestions as an experienced Arch Linux user?_
+
+_Please let me know your thoughts in the comments below._
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/manjaro-linux-experience/
+
+作者:[Ankush Das][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://news.itsfoss.com/author/ankush/
+[b]: https://github.com/lujun9972
+[1]: https://news.itsfoss.com/arch-new-guided-installer/
+[2]: https://itsfoss.com/arch-based-linux-distros/
+[3]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjkwMCIgd2lkdGg9IjE2MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIi8+
+[4]: https://itsfoss.com/what-is-tty-in-linux/
+[5]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjcxMyIgd2lkdGg9IjkzNSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=
+[6]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY1MSIgd2lkdGg9Ijg1MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=
+[7]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY3MyIgd2lkdGg9Ijg1MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=
+[8]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjYwMiIgd2lkdGg9IjEwMDIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIi8+
+[9]: https://wiki.manjaro.org/index.php/Pamac
+[10]: https://itsfoss.com/install-remove-software-manjaro/
+[11]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjYyOCIgd2lkdGg9IjY5MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=
+[12]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjYwMSIgd2lkdGg9Ijc4OCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=
+[13]: https://itsfoss.com/customize-linux-terminal/
+[14]: https://linuxhandbook.com/why-zsh/
+[15]: https://linuxhandbook.com/install-zsh/
+[16]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjYxNyIgd2lkdGg9IjEwMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIi8+
+[17]: https://itsfoss.com/aur-arch-linux/
+[18]: https://itsfoss.com/recommends/get-insync/
+[19]: https://itsfoss.com/what-is-flatpak/
+[20]: https://itsfoss.com/flatpak-guide/
diff --git a/sources/talk/20220509 Cloud service providers- How to keep your options open.md b/sources/talk/20220509 Cloud service providers- How to keep your options open.md
new file mode 100644
index 0000000000..4283550c9f
--- /dev/null
+++ b/sources/talk/20220509 Cloud service providers- How to keep your options open.md
@@ -0,0 +1,84 @@
+[#]: subject: "Cloud service providers: How to keep your options open"
+[#]: via: "https://opensource.com/article/22/5/cloud-service-providers-open"
+[#]: author: "Seth Kenlon https://opensource.com/users/seth"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Cloud service providers: How to keep your options open
+======
+No matter what level of openness your cloud service operates on, you have choices for your own environment.
+
+![Sky with clouds and grass][1]
+(Image by Flickr user: theaucitron, CC BY-SA 2.0)
+
+For Linux users, there's a new kind of computer on the market, and it's known as the cloud.
+
+As with the PC sitting on your desk, the laptop in your backpack, and the virtual private server you rent from your favorite web hosting service, you have your choice in vendors for cloud computing. The brand names are different than the hardware brands you've known over the years, but the concept is the same.
+
+To run Linux, you need a computer. To run Linux on the cloud, you need a cloud service provider. And just like the hardware and firmware that ships with your computer, there's a spectrum for how open source your computing stack can be.
+
+As a user of open source, I prefer my computing stack to be as open as possible. After a careful survey of the cloud computing market, I've developed a three-tier view of cloud service providers. Using this system as your guide, you can make intelligent choices about what cloud provider you choose.
+
+### Open stack
+
+A cloud that's fully open is a cloud built on open source technology from the ground up. So much cloud technology is open source, and has been from the beginning, that an open stack isn't all that difficult to accomplish, at least on the technical level. However, there are cloud providers reinventing the wheel in a proprietary way, which makes it easy to stumble into a cloud provider that's mixed a lot of closed source components in with the usual open source tooling.
+
+If you're looking for a truly open cloud, look for a cloud provider providing [OpenStack][2] as its foundation. OpenStack provides the software infrastructure for clouds, including Software-Defined Networking (SDN) through Neutron, object storage through Swift, identity and key management, image services, and much more. Keeping with my hardware computer analogy, OpenStack is the "kernel" that powers the cloud.
+
+I don't mean that literally, of course, but if your cloud provider runs OpenStack, that's reasonably as far down in the stack as you can go. From a user perspective, OpenStack is the reason your cloud exists and has a filesystem, network, and so on.
+
+Sitting on top of OpenStack, there may be a web UI such as Horizon or Skyline, and there may be extra components such as [OpenShift][3] or OKD (not an acronym, but formerly known as OpenShift Origin). All of these are open source, and they help you run containers, which are minimalist Linux images with applications embedded within them.
+
+Because OpenShift and OKD don't require OpenStack, that's the next tier of my cloud-based world view.
+
+### Open platform
+
+You don't always have a choice in which stack your cloud is running. Instead of OpenStack, your cloud might be running Azure, Amazon Web Services (AWS), or something similar.
+
+Those are the "binary blobs" of the cloud world. You have no insight into how or why they work; all you know is that your cloud exists and has a filesystem, a networking stack, and so on.
+
+Just as with desktop computing, you can have an "operating system" running on the box you've been given. Again, I'm not speaking literally, and there's a strong argument that OpenStack itself is essentially an operating system for the cloud. Still, it's usually OpenShift that a cloud user interacts with directly.
+
+OpenShift is an open source "desktop" or workspace in which you can manage containers and pods with Podman and Kubernetes. It lets you run applications on the cloud much as you might launch an app on your laptop.
+
+### Open standards
+
+Last but not least, there are those situations when you have no choice in cloud service providers. You're put on a platform with a proprietary "kernel," a proprietary "operating system," and all that's left for you to influence is what you run inside that environment.
+
+All is not lost.
+
+When you're dealing with open source, you have the ability to construct your own scaffolding. You can choose what components you use inside your containers. You can and should design your working environment around open source tools, because if you do get to change service providers, you can take everything you've built with you.
+
+This might mean implementing something already built into the (non-open) platform you're stuck on. For instance, your cloud provider might entice you with an API management system or continuous integration/continuous delivery (CI/CD) pipeline that's included in their platform "for free," but you know better. When a non-open application is offered as "free," it usually bears a cost in some other form. One cost is that once you start building on top of it, you'll be all the more hesitant to migrate away because you know that you'll have to leave behind everything you built.
+
+Instead of using the closed "features" of your cloud provider, reimplement those services as open source for your own use. Run [Jenkins][4] and [APIMan][5] in containers. Find the problems your cloud provider claims to solve with proprietary code, then use an open source solution to ensure that, when you leave for an open provider, you can migrate the system you've built.
+
+### Open source computing
+
+For too many people, cloud computing is a place where open source is incidental. In reality, open source is as important on the cloud as it is on your personal computer and the servers powering the internet.
+
+Look for open source cloud services.
+
+When you're stuck with something that doesn't provide source code, be the one using open source in your cloud.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/cloud-service-providers-open
+
+作者:[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/bus-cloud.png
+[2]: https://opensource.com/resources/what-is-openstack
+[3]: https://cloud.redhat.com/?intcmp=7013a000002qLH8AAM
+[4]: https://opensource.com/article/19/9/intro-building-cicd-pipelines-jenkins
+[5]: https://www.apiman.io/latest/
diff --git a/sources/talk/20220510 6 easy ways to make your first open source contribution with LibreOffice.md b/sources/talk/20220510 6 easy ways to make your first open source contribution with LibreOffice.md
new file mode 100644
index 0000000000..df7c631f1e
--- /dev/null
+++ b/sources/talk/20220510 6 easy ways to make your first open source contribution with LibreOffice.md
@@ -0,0 +1,56 @@
+[#]: subject: "6 easy ways to make your first open source contribution with LibreOffice"
+[#]: via: "https://opensource.com/article/22/5/first-open-source-contribution-libreoffice"
+[#]: author: "Klaatu https://opensource.com/users/klaatu"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+6 easy ways to make your first open source contribution with LibreOffice
+======
+May 2022 is LibreOffice month. Here are some easy ways to make your first open source contribution.
+
+![Dandelion zoomed in][1]
+(Photo by Rob Tiller, CC BY-SA 4.0)
+
+"Getting involved" with open source can seem a little confusing. Where do you go to get started? What if you don't know how to code? Who do you talk to? How does anybody know that you have contributed, and besides that does anybody care?
+
+There are actually answers to questions like those (your choice, it's OK, nobody, you tell them, yes) but during the month of May 2022, there's one simple answer: LibreOffice. This month is a month of participation at LibreOffice and its governing body, The Document Foundation. They're inviting contributors of all sorts to help in any of six different ways, and only one of those has anything at all to do with code. No matter what your skill, you can probably find a way to help the world's greatest office suite.
+
+### 6 ways to contribute to LibreOffice
+
+Here's what you can do:
+
+* Handy Helper: Go answer questions from other LibreOffice users on Ask LibreOffice. If you're an avid user of LibreOffice and think you have useful tips and tricks that will help others, this is the role you've been waiting for.
+* First Responder: Bug reports are better when they're confirmed by more than just one user. If you're good at installing software (sometimes bug reports are for older versions than what you might be using normally) then go to the LibreOffice Bugzilla and find new bugs that have yet to be confirmed. When you find one, try to replicate what's been reported. Assuming you can do that, add a comment like “CONFIRMED on Linux (Fedora 35) and LibreOffice 7.3.2”.
+* Drum Beater: Open source projects rarely have big companies funneling marketing money into promoting them. It would be nice if all the companies claiming to love open source would help out, but not all of them do, so why not lend your voice? Get on social media and tell your friends why you love LibreOffice, or what you’re using it for (and of course add the #libreoffice hashtag.)
+* Globetrotter: LibreOffice is already available in many different languages, but not literally all languages. And LibreOffice is actively being developed, so its interface translations need to be kept up-to-date. Get involved here.
+* Docs Doctor: LibreOffice has online help as well as user handbooks. If you're great at explaining things to other people, or if you're great at proof-reading other people's documentation, then you should contact the docs team.
+* Code Cruncher: You're probably not going to dive into LibreOffice's code base and make major changes right away, but that's not generally what projects need. If you know how to code, then you can join the developer community by following the instructions on this wiki page.
+
+```
+#libreoffice
+```
+
+### Free stickers
+
+I didn't want to mention this up-front because obviously you should get involved with LibreOffice just because you're excited to get involved with a great open source project. However, you're going to find out eventually so I may as well tell you: By contributing to LibreOffice, you can sign up to get free stickers from The Document Foundation. Surely you've been meaning to [decorate your laptop][2]?
+
+Don't get distracted by the promise of loot, though. If you're confused but excited to get involved with open source, this is a great opportunity to do so. And it is representative of how you get involved with open source in general: You look for something that needs to be done, you do it, and then you talk about it with others so you can get ideas for what you can do next. Do that often enough, and you find your way into a community. Eventually, you stop wondering how to get involved with open source, because you're too busy contributing!
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/first-open-source-contribution-libreoffice
+
+作者:[Klaatu][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/klaatu
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/dandelion_zoom.jpg
+[2]: https://opensource.com/business/15/11/open-source-stickers
diff --git a/sources/talk/20220510 My open source journey with C from a neurodiverse perspective.md b/sources/talk/20220510 My open source journey with C from a neurodiverse perspective.md
new file mode 100644
index 0000000000..14eac95d99
--- /dev/null
+++ b/sources/talk/20220510 My open source journey with C from a neurodiverse perspective.md
@@ -0,0 +1,69 @@
+[#]: subject: "My open source journey with C from a neurodiverse perspective"
+[#]: via: "https://opensource.com/article/22/5/my-journey-c-neurodiverse-perspective"
+[#]: author: "Rikard Grossman-Nielsen https://opensource.com/users/rikardgn"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+My open source journey with C from a neurodiverse perspective
+======
+I've learned that if you can find the method that works for you, no matter what teachers and other students may say, you can learn any open source skill that interests you.
+
+![][1]
+(Image by: pensource.com)
+
+I was born in 1982, which in human years is only 40 years in the past (at the time of writing). In terms of computer development, it's eons ago. I got my first computer, a Commodore 64, when I was ten years old. Later, I got an Amiga, and by 13 I got an "IBM Compatible" (that's what they were called, then) PC.
+
+In high school, I did a lot basic programming on my graphing calculator. In my second year of high school, I learned basic C programming, and in my third year I started doing more advanced C programming, using libraries, pointers, and graphics.
+
+### My journey from programming student to teacher
+
+In my college days, I learned Java and so [Java became my primary language][2]. I also made some C# programs for a device known as a personal data assistant (PDA), which were pre-cursors to the modern smart phone. Because Java is object-oriented, multi-platform, and made GUI programming easy, I thought I'd do most of my programming in Java from now on.
+
+In college, I also discovered that I had a talent for teaching, so I helped others with programming, and they helped me with math when I took computer science. I took some courses on C programming, aimed at basic embedded programming and controlling measurement instruments in my later college years.
+
+After turning 30, I've used C as a teaching tool for high school kids learning to program in C. I've also used [Fritzing][3] to teach high school kids how to program an Arduino. My interest in C programming was awakened again last year, when I got a job helping college students with learning differences in computing subjects.
+
+### How I approach programming in C and other languages
+
+All people learn differently. Being a neurodiverse person with Asperger's and ADHD, my learning process is sometimes quite different from others. Of course, everyone has different learning styles, though people who are neurodiverse might have a greater preference for a certain learning style than someone else.
+
+I tend to think in both pictures and words. Personally I need to decode things step by step, and understand them, step by step. This makes C a suitable language for my learning style. When I learn code, I gradually incorporate the code into my mind by learning to see lines of code, like `#include ` in front of me. From what I've read from descriptions of other neurodiverse people on the internet, some of them seem to have this kind of learning style as well. We “internalize code”.
+
+Some autistic people are a lot better at memorizing large chunks of code than me, but the process seems to be the same. When understanding concepts such as structs, pointers, pointers to pointers, matrices, and vectors, it's helpful for me to think in pictures, such as the ones you find in programming tutorials and books.
+
+I like to use C to understand how things are done at a lower level, such as [file input and output (I/O)][4], networking programming, and so on. This doesn't mean I don't like libraries that handle tasks such as string manipulation or making arrays. I also like the ease of creating arrays and vectors in Java. However, for creating a user interface, though I have looked at such code in C, I prefer to use grapical editors, such as Netbeans and similar.
+
+### My ideal C GUI open source tool for creating applications
+
+If I imagine an ideal open source tool for creating a GUI using C, it would be something similar to [Netbeans][5] that, for example, making GTK-interfaces by dragging and dropping. It should also be possible to put C on buttons, and so on, to make them perform actions. There may be such a tool. I admittedly haven't looked around that much.
+
+### Why I encourage young neurodiverse people to learn C
+
+[Gaming][6] is a big industry. Some studies suggest neurodiverse kids may be even more focused on gaming than other kids. I would tell a neurodiverse high school or college kid that If you learn C, you may be able to learn the basics of, for example, writing efficient drivers for a graphics card, or to make efficient file I/O routines to optimize their favorite game. I would also be honest that it takes time and effort to learn, but that it's worth the effort. Once you learn it, you have greater control of things like hardware.
+
+For learning C, I recommend a neurodiverse kid to install a beginner-friendly Linux distro, and then find some tutorials on the net. I also recommend breaking down things step by step, and drawing diagrams of, for example, pointers. I did that to better understand the concept, and it worked for me.
+
+In the end, that's what it's about: Find a learning method that works for you, no matter what teachers and other students may say, and use it to learn the open source skill that interests you. It can be done, and anyone can do it.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/my-journey-c-neurodiverse-perspective
+
+作者:[Rikard Grossman-Nielsen][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/rikardgn
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/images/life/computer_code_programming_laptop_0.jpg
+[2]: https://opensource.com/article/20/12/learn-java
+[3]: https://fritzing.org
+[4]: https://opensource.com/article/21/3/file-io-c
+[5]: https://opensource.com/article/20/12/netbeans
+[6]: https://opensource.com/tags/gaming
diff --git a/sources/talk/20220513 When open source meets academic publishing- Platinum open access journals.md b/sources/talk/20220513 When open source meets academic publishing- Platinum open access journals.md
new file mode 100644
index 0000000000..91c7df4d12
--- /dev/null
+++ b/sources/talk/20220513 When open source meets academic publishing- Platinum open access journals.md
@@ -0,0 +1,77 @@
+[#]: subject: "When open source meets academic publishing: Platinum open access journals"
+[#]: via: "https://opensource.com/article/22/5/platinum-open-access-academic-journals"
+[#]: author: "Joshua Pearce https://opensource.com/users/jmpearce"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+When open source meets academic publishing: Platinum open access journals
+======
+Academics can now publish free, read free, and still stay on track for professional success.
+
+![Stack of books for reading][1]
+Image by: Opensource.com
+
+Academics routinely give away their work to companies for free—and then they buy it back! Can you imagine a farmer giving away free food and then paying to get it back for dinner? Probably not. Yet academics like me have been trapped for decades in a scheme where we give free work in exchange for job security and then pay millions of dollars a year to read our own writing.
+
+Fortunately, this is changing. The results from a [study][2] I just finished show that it is possible for academics to get job security without paying for it. My study found hundreds of journals that are *platinum open access* (OA)—that is, they require neither the author nor the readers to pay for peer-reviewed work—yet still carry the prestige and readership to help academics succeed in their careers.
+
+This trend is exploding: The [Directory of Open Access Journals][3] lists over 17,300 journals that offer a means of OA at some level, and over 12,250 have no article-processing charges (APCs). I used a handy open source [Python script][4] to compare this list to a list of journals ranked by the frequency with which their published papers are cited in other articles (The Journal Impact Factor List). It is clear that the last few years have seen a growing trend towards both OA in general and platinum OA specifically. These trends have the potential to accelerate science while helping prevent academic servitude.
+
+### The academic's dilemma
+
+Academics are generally pretty intelligent, so why have they engaged in this disadvantageous system for so long? Simply put, academics have been caught in a trap: In order to keep their jobs and get tenure, they need to publish in journals with a high impact factor. An impact factor is a metric based on the mean number of citations to articles published in the last two years in a given journal, as indexed by the proprietary Web of Science. Impact factors are a prestige metric for academics.
+
+Historically, academic publishing has been dominated by a handful of major publishers that used subscription-based business models. In this model, academic authors write articles, peer-review articles, and often do the editing of these articles—all for free. The articles are published under copyright owned by the major publishing companies. Then either the same academics pay to read these articles on an individual basis (~US $35/article), or their university libraries pay to subscribe to all of the articles in a journal. These costs can be astronomical: often over US $1 million per year for all titles from a single publisher.
+
+This system is senseless for many obvious reasons. Scientific progress is bogged down by restricting access to copyrighted scientific literature squirreled away behind paywalls. It is hard to do state-of-the-art research if you do not know what it is because you cannot read it. Scientists are divided into those who can afford access to the literature and those who cannot. Academics in the developing world often struggle to pay, but even well-endowed [Harvard University][5] has taken action to rein in its yearly journal expenses.
+
+Costs to authors are similarly high. APC values range from a few hundred dollars to jaw-dropping thousands of dollars per article. APCs can be particularly damaging for some disciplines that are less well funded, such as the humanities and social sciences (as compared to physical and medical sciences or engineering). Substantial APCs also reinforce the wealth gap in academia, making professional success dependent on having income to invest in publishing. Is there another profession that asks workers to pay money to make products for others?
+
+### Open access to the rescue!
+
+This problem can be solved by the OA movement, which advocates for making all academic literature freely accessible to everyone. There is an unmistakable rise in OA publishing: It now makes up nearly a third of the peer-reviewed literature.
+
+The benefits of OA are twofold. First, OA is a benefit to science overall, because it provides a frictionless means of reading the state of the art for making significant advancements in knowledge. Second, from an individual academic's point of view, OA provides the pragmatic advantage of enabling the broadest possible audience of their writing by making it freely and easily available on the internet.
+
+Funders have begun to demand OA for these reasons, particularly public funders of science. It is hard to argue that if the public funds research, they should have to pay a second time to read it.
+
+### Where is academic publishing now, and where it is going?
+
+Conventional publishers still have control of this situation, largely because of the perception that they have a monopoly on journals with an impact factor. Despite the disadvantages of publishing the traditional way, many academics continue to publish in subscription-based journals or pay high APCs, knowing that publication in high impact factor journals is vital for demonstrating expertise for grants, tenure, and promotion.
+
+A few years ago, academics simply had no choice: They could either publish in a journal with an impact factor or publish OA. Now they can publish OA and still get the benefits of an impact factor in one of three ways:
+
+* Green OA: Publish in a traditional way and then self-archive by uploading preprints or accepted versions of papers into an open repository or server. Some schools have an institutional repository for this purpose. For example, Western University has [Scholarship@Western][6], where any of their professors can share their work. Academics without their own institutional repos can use servers like [preprints.org][7], [arXiv][8], or [OSF preprints][9]. I also use social media for academics, like [Academia][10] or [ResearchGate][11], for self-archiving. This can be complex to navigate because publishers have different rules, and it is somewhat time consuming.
+* Gold OA: Publish in a growing list of journals with impact factors that make your paper freely available after publication but require an APC. This method is easy to navigate: Academics publish as usual and OA is built into the publishing process. The drawback is that funds going to APCs may be diverted from research activities.
+* Platinum OA: Publish in platinum OA journals with an impact factor. No one pays either to read or to publish. The challenge here is finding a journal in your discipline that fits this criterion, but that continues to change.
+
+There are tens of thousands of journals, but only a few hundred platinum OA journals with impact factors. This may make it hard for academics to find a good fit between what they study and a journal that matches their interests. See the Appendix in my [study][12] for the list, or use the Python script mentioned above to run updated numbers for yourself. The number of platinum OA journals is growing quickly, so if you do not find something now you may have some solid journals to choose from soon. Happy publishing!
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/platinum-open-access-academic-journals
+
+作者:[Joshua Pearce][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/jmpearce
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/books_read_list_stack_study.png
+[2]: https://doi.org/10.3390/knowledge2020013
+[3]: https://doaj.org/
+[4]: https://osf.io/mh4bx/
+[5]: https://www.theguardian.com/science/2012/apr/24/harvard-university-journal-publishers-prices
+[6]: https://ir.lib.uwo.ca/
+[7]: https://www.preprints.org/
+[8]: https://arxiv.org/
+[9]: https://osf.io/preprints/
+[10]: https://westernu.academia.edu/JoshuaPearce/Papers
+[11]: https://www.researchgate.net/profile/Joshua-Pearce
+[12]: https://www.mdpi.com/2673-9585/2/2/13
diff --git a/sources/talk/20220516 5 benefits of switching from Google Analytics to Plausible.md b/sources/talk/20220516 5 benefits of switching from Google Analytics to Plausible.md
new file mode 100644
index 0000000000..0612c953ce
--- /dev/null
+++ b/sources/talk/20220516 5 benefits of switching from Google Analytics to Plausible.md
@@ -0,0 +1,109 @@
+[#]: subject: "5 benefits of switching from Google Analytics to Plausible"
+[#]: via: "https://opensource.com/article/22/5/plausible-analytics"
+[#]: author: "Tom Greenwood https://opensource.com/users/tpgreenwood"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+5 benefits of switching from Google Analytics to Plausible
+======
+Plausible is an open source alternative to Google Analytics.
+
+![The legacy of open source and the tide of progress][1]
+Image by: Opensource.com
+
+Google Analytics (GA) has been the industry standard web analytics tool for about as long as there have been analytics tools. Nearly every brief that my WordPress agency receives specifies that GA must be installed. And there is rarely any debate around whether it's the best tool for the job.
+
+My team at Wholegrain Digital has had concerns about GA in terms of privacy, General Data Protection Regulation (GDPR) compliance, performance, user experience, not to mention Google as a global advertising, and search monopoly. However, we continued using GA for 99% of our projects because we didn't feel that there was a strong enough alternative.
+
+Well, that has changed. We've made a decision that GA will no longer be our default analytics tool. Instead, our default analytics tool will be [Plausible][2].
+
+In this article, I'll outline why we consider Plausible a better choice as a default analytics solution, the compromises to be aware of, and how it will impact our clients.
+
+### Why use Plausible instead of Google Analytics
+
+We believe that using Plausible over GA is not a purely ideological choice. There are in fact a number of tangible benefits that make it an objectively better product in many cases. Let's take a look at some of these benefits.
+
+#### Privacy
+
+One of Plausible's headline benefits is that it has been designed as a privacy-first analytics tool. This might sound like an ideological factor, but it has real practical implications too.
+
+Plausible only collects anonymous user data, and does not use cookies. This means that unlike most analytics solutions, it complies with both the GDPR and the European Cookie Law, so it's a tick in the box for legal compliance. It's also hosted in the EU and the data is owned by you so it doesn't get shared with any other organizations, which is another tick.
+
+This has a positive knock-on effect for user experience, because without privacy-invading cookies, you don't need to implement a cookie banner on the website (unless you use cookies for other things). Considering that the first few seconds of a website visit are the most critical to brand experience and conversion rates, cookie banners are arguably the single most damaging thing to the success of any online service. Avoiding these banners puts your brand and message first, helps you make a good first impression, and increases conversion rates.
+
+#### Simpler user interface
+
+The GA dashboard was never a great case study in intuitive design, but as the functionality of GA has expanded, so too has the complexity of the interface. I'm increasingly hearing frustrations from even experienced web marketers that they sometimes struggle to find basic data inside GA.
+
+Plausible has taken the opposite approach and focused on ease of use over quantity of features. The dashboard is beautifully designed to showcase the data you want in a way that is easy to find and understand. It's what most people wish GA to be and it's a breath of fresh air.
+
+![Image of Plausible with a dark theme][3]
+Image by: (Tom Greenwood, CC BY-SA 4.0)
+
+This is not just a pleasantry. The reality is that if a tool is easy to use then you will use it, and if it is hard to use then you won't. The simplicity of the Plausible interface means that even though it has less features, many users are likely to get a lot more insights and value from their analytics.
+
+#### Better web performance
+
+The Plausible tracking script is the smallest we are aware of for any analytics service, coming in at less than 1kb compared to 17kb for GA and even more if you're using Google Tag Manager.
+
+Better web performance improves user experience, helps your website to rank better in search engines and improves conversion rates. Web performance matters, and when it comes to web performance, every kilobyte matters.
+
+#### Reduced environmental impact
+
+Plausible's tiny tracking script isn't just good for web performance, it's also good for the environment. At Wholegrain we are world leaders in sustainable web design and understand that every bit of wasted data is also wasted energy and carbon emissions.
+
+This adds up. As a minimum, switching to Plausible would save 16kb per visitor, so for a website with a modest 10K visitors per month this would be 160MB of data per month, or 2GB per year. A back of an envelope calculation using the latest methodology that we have developed for website carbon calculations put this at about the equivalent of 800 grams of CO2. Now multiply that up by the millions of websites running worldwide and you are talking about significant amounts of wasted energy and unnecessary carbon emissions.
+
+But it doesn't stop there. Analytics tools consume energy on the end user's device as they harvest data, in the transmission networks as they send that data back to the data center, and in the data center to store it all for eternity. By tracking less, Plausible is using less energy in its operation than bloated analytics tools such as GA that are tracking many more metrics that most people don't need.
+
+Plausible also hosts the data in data centers with a commitment to using renewable sources of electricity, which is great (though to be fair Google also does that), and they donate 5% of their revenue to good causes, so the money you are paying is also helping support environmental and social projects.
+
+#### More accurate data
+
+Finally, Plausible breaks one of the greatest myths about GA, which is that it is accurate. Plausible's own research and our own experiences with client websites show that GA can significantly under report data, sometimes by as much as 50-60%.
+
+When you look at GA and you think you are looking at all of your website data, you are most likely only looking at a portion of it. This is because GA is more likely to be blocked by ad blockers and privacy friendly web browsers, but perhaps more significantly because GA should not be tracking your visitors unless they have accepted cookies, which many visitors do not.
+
+Plausible therefore offers us a simple way to get a more complete and accurate view of website visitors. Needless to say, if you are a digital marketing manager and you want to make yourself look good, you want to use the analytics service that reports all of your visitors and not just some of them.
+
+### Are there any downsides?
+
+There are very few downsides to using Plausible. If you are a GA power user and genuinely need a lot of its more advanced functionality then Plausible is not going to meet all of your needs. Plausible can track events, conversions, and campaigns but if you need more than that then you'll need another tool.
+
+The only other notable downside to Plausible is that it is not free. There is a monthly fee but it is very reasonable, starting at $6 per month. It's a small price to pay for such a good tool, to protect the privacy of your website visitors and to maintain ownership of your data.
+
+### What are the impacts?
+
+Here at Wholegrain Digital we are implementing Plausible in a way that we hope will offer many of our clients the benefits listed above without the downsides. Nobody will be forced to stop using GA, but we will be talking about the benefits of Plausible proactively with our clients and including it in our proposals as the default option.
+
+In many cases, Plausible is not just capable of meeting a project's requirements, but is objectively a better solution than GA, so we'll be trying to help our clients to reap the benefits of this.
+
+In cases where advanced GA features are required, we will of course stick with GA for now. And in some cases, we may run GA and Plausible in parallel. This has a small overhead in terms of carbon footprint and performance, so it isn't our first choice. However, in some cases it may provide a necessary bridge to help our clients gain confidence in Plausible before making the leap, or help them gain a complete data set while ensuring compliance with privacy laws.
+
+As for the costs, Plausible is a very good value for what it offers, but we will be offering it free of charge to our clients for any websites cared for on our WordPress maintenance service. We hope that this will help lower the barrier to entry and help more of our clients and their website visitors gain the benefits of Plausible.
+
+### It is Plausible!
+
+I hope I've convinced you that Plausible is not just a viable but a really great alternative to GA. If you need any advice on how to figure out the best analytics solution for your website or how to ensure that you are GDPR compliant without compromising user experience, get in touch with me.
+
+*This article originally appeared on the Wholegrain Digital blog and has been republished with permission.*
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/plausible-analytics
+
+作者:[Tom Greenwood][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/tpgreenwood
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/LIFE_wavegraph.png
+[2]: https://plausible.io
+[3]: https://opensource.com/sites/default/files/2022-05/Plausible-%C2%B7-websitecarbon-com.jpg
diff --git a/sources/talk/20220519 Near zero marginal cost societies and the impact on why we work.md b/sources/talk/20220519 Near zero marginal cost societies and the impact on why we work.md
new file mode 100644
index 0000000000..5930ee1ea4
--- /dev/null
+++ b/sources/talk/20220519 Near zero marginal cost societies and the impact on why we work.md
@@ -0,0 +1,177 @@
+[#]: subject: "Near zero marginal cost societies and the impact on why we work"
+[#]: via: "https://opensource.com/open-organization/22/5/near-zero-marginal-cost-societies-and-impact-why-we-work"
+[#]: author: "Ron McFarland https://opensource.com/users/ron-mcfarland"
+[#]: collector: "lkxed"
+[#]: translator: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Near zero marginal cost societies and the impact on why we work
+======
+As the IoT becomes our working and living environment, energy costs will come closer to zero and community collaboration will be critical.
+
+![A network of people][1]
+Image by: Opensource.com
+
+I have read Jeremy Rifkin's book [The Zero Marginal Cost Society: The Internet of Things, the Collaborative Commons, and the Eclipse of Capitalism][2], which has a strong connection to open organization principles, particularly community building. Rifkin also writes about the future of green energy generation and energy use in logistics. This is the second of three articles in this series. In my previous article, I examined the Collaborative Commons. In this article, I look at its impact on energy production and supply.
+
+Within the next 25 years, Rifkin believes most of our energy for home heating, running appliances, powering businesses, driving vehicles, and operating the whole economy will be nearly free with on-site power solar, wind and geothermal energy generation. This is starting already, through both individual and micropower plants. The payback is around two to eight years.
+
+What would be the best organizational structure to manage nearly free green energy? Furthermore, through an intelligent communication and energy system, an organization could generate business anywhere in the world, and share energy across a continental energy internet. On top of that, it could produce and sell goods at a fraction charged by global manufacturing giants.
+
+### The Internet of Things is on the way
+
+According to Rifkin, the Internet of Things (IoT) will connect every machine, business, residence, and vehicle in an intelligent network that consists of not just a communications internet like now, but in the future an energy internet, and a logistics internet. They will all be embedded in a single operating system. Energy use will be completely monitored. Rifkin believes that within 10 years, many smart energy meters will be in use (by 2025). All this investment will reduce at least 10% of the waste in the current industrial system.
+
+All this will be possible with the reduction of costs of sensors and actuators embedded in devices. Radio-frequency identification (RFID) chip prices have fallen by 40% in around 2012-2013. Micro-electromechanical system (MEMS), including gyroscopes, accelerometers, and pressure sensors, have also dropped by 80-90% in price over the past five years (up to 2015 when this book was published).
+
+This will increase device connections, to as many as 1,000 connections on one person's devices, appliances, and facilities. This connection is what young people love, total inclusion in a global virtual public square to share everything. They thrive on transparency, collaboration, and inclusivity with care taken to an appropriate level of privacy. So, you can see, the time is right for the growth of a Collaborative Commons in society.
+
+### Exponential curve
+
+Question: Would you accept US $1,000,000 today or US $1.00 that doubled every day for 30 days? (In 30 days it will be US $536,870,912. That is 500 times more). In 31 days, over one billion. Exponential growth is deceptively fast. That is how fast costs are coming down according to Rifkin. This will turn the entire fossil fuel industry investments into stranded assets. We should be planning for the Collaborative Commons using all open organization principles now, as the situation will be ideal for them very soon.
+
+### Next, a free energy internet
+
+At this point in time there is free information for learning if you look for it. The next step is free energy (solar, wind, geothermal, biomass, hydro). After initial investments (research, development, deployment), Rifkin forecasts that unit costs will rapidly come down. The information internet and near zero-cost renewables will merge into the energy internet, powering homes, offices, and factories. Ideally, there will be energy that's loaded into buildings and partially stored in the form of hydrogen, distributed over a green-electricity internet, and connected to plug-in, zero-emission transportation. The development of renewable energy establishes a five pillar mechanism that will allow billions of people to share energy at near zero marginal cost in the IoT world
+
+### Solar energy
+
+If you start collecting energy from the sun, facilities only need to obtain 00.1% of the sun's energy that reaches the Earth. That would provide six times the energy we now use globally.
+
+[SunPower Corporation][3] is one company doing that. It supports making homes energy producers. The price of solar photovoltaic (PV) cells tends to drop by 20% for every doubling of industry capacity. Solar panels are increasing, and their ability to capture more energy per panel is increasing. Expect to see the development of thinner solar panels, and paper thin solar sheets. Eventually there will be solar energy paint and solar energy windows in the future.
+
+When too much energy is generated, it must be sold elsewhere or stored in batteries or used to produce hydrogen. This technology is coming to the market and will dominate it very soon. With these technologies alone, electricity is on the way to have zero marginal cost.
+
+### Wind power generation
+
+Wind power has been growing exponentially since the 1990s, and is now nearing fossil fuel and nuclear power generation levels (as of 2015). With the lowering costs of windmill production, installation, and maintenance, wind power is doubling every 2-½ years. With the increase of solar and wind energy sources, governments do not need to subsidize them with tariffs any longer.
+
+[Energy Watch Group][4] is tracking this. According to Rifkin geothermal energy, biomass, and wave and tidal power will likely reach their own exponential takeoff stage within the next decade. He believes that all this will happen in the first half of the twenty-first century. If this capacity doubles eight more times, by 2028, 80% of all energy generation will be from these renewables.
+
+### The collaborative age will soon be here
+
+With all the above developments, society's working and living environment are changing. According to the [collaborative age][5]: "This means ensuring that people can collaborate on tasks without friction. That humans and machines work seamlessly together. And automation — machine to machine collaboration — will be crucial. Those businesses that get these elements right will be able to boost employee satisfaction and attract the best talent. They will reduce costs by automating mundane tasks and by requiring a smaller office footprint. The social impact-focused organizations that [Laura Hilliger][6] and [Heather Leson][7] write about how to take advantage of this new age.
+
+### Making the transition
+
+It sounds good, but how do businesses transition from the information age to the collaboration age? One area will be in decentralized production through 3D printing technology ([additive manufacturing][8], not cutting away and creating waste).
+
+Instead of shipping goods, in the future, software will be shipped for many items to be manufactured locally, avoiding all shipping costs and making manufacturing become on-site near where the market need is. Locally, newly developed molten plastics, molten metal, or other feedstock inside a printer will be used for fabrication. This will give one 3D printer the ability to produce tens of thousands of products (like jewelry, airplane parts, and human prostheses).
+
+### Centralized manufacturing vs local production which Rifkin projects will come
+
+Rifkin believes lower marketing costs are possible by using the IoT economy and using global internet marketing sites at almost zero marginal cost.
+
+1. There is little human involvement in the local 3D process (giving the name "infofacture" rather than manufacture. They ship the information required for local manufacturing, like downloading music today. It is just code that you receive.
+2. The code for 3D printing is open source, so people can learn and improve designs, becoming further prosumers in a wide range of items (no intellectual-property protection barriers). This will lead to exponential growth over the next several decades, offering more complicated products at lower prices and near zero marginal cost.
+3. There is great waste with subtraction processes (current manufacturing processes) producing great waste with each process. (1/10 the materials required. This material could be developed from subatomic particles that are available anywhere in the local environment, like recycled glass, fabrics, ceramics, and stainless steel. Composite-fiber concrete could be extruded form-free and be strong enough for building construction walls [probably available in two decades].)
+4. 3D printing processes have fewer moving parts and less spare parts. Therefore, expensive retooling and changeover delays will be less extensive.
+5. Materials will be more durable, recyclable, and less polluting.
+6. Local distributed production, through IoT, will spread globally at an exponential rate with little shipping cost and less use of energy.
+
+Rifkin cites Etsy as an example of this model. You can find things you are interested in, and have them produced locally using their network. They sell the code, and you can have it supplied in your area.
+
+Rifkin feels that in the future, small and medium sized 3D businesses, infofacturing more sophisticated products, will likely cluster in local technology parks to establish an optimum lateral scale (another form of community development). Here are current examples:
+
+1. [RepRap][9]: This is a manufacturing machine that can produce itself and all its parts.
+2. [Thingiverse][10] The largest 3D printing community. They share under the General Public Licenses (GPL) and Creative Commons Licenses.
+3. Fab Lab: Open source peer-to-peer learning in manufacturing. It is being provided to local, distant communities in developing countries.
+4. 3D Printed automobiles ([Urbee vehicle][11]) is already being tested.
+5. [KOR EcoLogic][12] has an urban electric vehicle.
+
+### The makers' movement principles
+
+Here are the principles that these ecosystems follow:
+
+1. They use open source shared software.
+2. They promote a collaborative learning culture.
+3. They believe that it will build a self-sufficient community.
+4. They are committed to sustainable production practices.
+
+### The future of work and collaborative commons
+
+When technology replaces workers, capital investments replace labor investments. In 2007, companies used 6 times more computers and software than 20 years before, doubling the amount of capital used per hour of employee work. The robot workforce is on the rise. China, India, Mexico, and other emerging nations are learning that the cheapest workers in the world are not as cheap, efficient, or productive as the information technology, robotics, and artificial intelligence that replaces them.
+
+Going back to Rifkin, the first industrial revolution ended slave and serf labor. The second industrial revolution will dramatically shrink agricultural and craft labor. Rifkin believes the third industrial revolution will be a decline in mass wage labor in the manufacturing, service industries, and salaried professional labor in large parts of the knowledge sector.
+
+Rifkin believes that an abundance, zero marginal cost economy, will change our notion of economic processes. He thinks the old paradigm of owners and workers, sellers and consumers will break down. Consumers will start producing for themselves (and a few others), eliminating their distinction. Prosumers will increasingly be able to produce, consume, and share their own goods and services with one another on the Collaborative Commons at diminishing marginal costs approaching zero, bringing to the fore new ways of organizing economic life beyond the traditional capitalist market mode.
+
+Rifkin forecasts that in the future, greater importance will be placed on the Collaborative Commons and be as important as hard work was in the market economy (one's ability to cooperate and collaborate as opposed to just working hard). The amassing of social capital will become as valued as the accumulation of market capital. Attachment to community and the search for transcendence and meaning comes to define the measure of one's material wealth. All the [open organization principles][13] we write about will be exponentially more important in the future.
+
+The IoT will free human beings from the capitalist market economy to pursue nonmaterial shared interests on the collaborative commons. Many — but not all — of our basic material needs will be met for nearly free in a near zero marginal cost society. It will be abundance over scarcity.
+
+### Prosumer and the entry of the smart economy
+
+Rifkin writes that as capitalist economies step aside in some global commodities, in the collaborative commons, sellers and buyers will give way to prosumers, property rights will make room for open source sharing, ownership will be less important than access, markets will be superseded by networks, and the marginal cost of supplying information, generating energy, manufacturing products, and teaching students will become nearly zero.
+
+### Internet of energy is on the way
+
+Financing of the IoT will not come from wealthy capitalists and corporate shareholders, but from hundreds of millions of consumers and taxpayers. No one owns the internet. It is only in operation because a set of agreed-upon protocols were established that allows computer networks to communicate with each other. It is a virtual public square for all who pay for a connection to use it. Next comes distributed renewable energies that will be distributed in the same way. Supported by feed-in tariffs and other fund-raising methods, governments will pay for the initial research, but after that fixed investment, the public will be able to connect and use it freely. Once underway, governmental centralized operations will move to distributed ownership. The [Electric Power Research Institute][14] (EPRI), is studying how to build a national energy internet over the next 20 years.
+
+This is not just supplying electricity. Every device in every building will be equipped with sensors and software that connect to the IoT, feeding real-time information on electricity use to both the on-site prosumer and the rest of the network. The entire network will know how much electricity is being used by every appliance at any moment — thermostats, washing machines, dishwashers, televisions, hair dryers, toasters, ovens, and refrigerators.
+
+This is not happening in the future, but now. It is not just being considered but being done now. [Intwine Energy][15] can supply the above process now. The issue is getting it into the greater global population. A group of young [social entrepreneurs][16] are now using social media to mobilize their peers to create, operate and use the energy internet.
+
+### A new world of abundance beyond our needs
+
+Rifkin thinks society has to start envisioning an entire different living environment. Imagine a world in which you can just give away things you once had to pay for, or had to sell at a profit. No one charges us for each internet connected phone call. He believes these give-away goods need not be covered by governments, like telecommunication, roads, bridges, public schools or hospitals. They need not be considered totally private property to be sold and bought, either. These goods have to be supplied in communities with rules, responsibilities and joint benefits (information, energy, local production, and online education). Not governed by the markets or governments, but by networked commons because of the [tragedy of the commons][17]. It governs and enforces distributed, peer-to-peer, laterally scaled economic activities.
+
+Rifkin feels the Collaborative Commons as a governing body is extremely important. This is where local (project) leadership comes in. The goals, processes, tasks and responsibilities must be successfully executed, after they have been decided and agreed on. Furthermore, "social capital" is a major factor. It must be widely introduced and deepened in quality. Community exchange, interaction and contribution is far more important than selling to distant capital markets. If that is the case, our [open organization leadership][18] will be extremely important.
+
+### The public square versus private ownership
+
+"The public square at — least before the Internet, is where we communicate, socialize, revel in each other's company, establish communal bonds, and create social capital and trust. These are all indispensable elements for a nurturing community." Historically, Japanese villages were built like that to survive natural, economic and political disasters like earthquakes and typhoons. They put common interests over self-interests This is what the open organization principle of community is all about.
+
+The right to be included, to have access to one another, which is the right to participate together, is a fundamental right of all. Private property, the right to enclose, own, and exclude is merely a qualified deviation from the norm. For some reason, having massive private property rights have gained in importance in more recent modern times. This will all be reversed in the years ahead according to Rifkin.
+
+Rifkin writes that the world will move to these commons:
+
+1. Public square commons
+2. Land commons
+3. Virtual commons
+4. Knowledge commons (languages, cultures, human knowledge and wisdom)
+5. Energy Commons
+6. Electromagnetic spectrum commons
+7. Ocean commons
+8. Fresh water commons
+9. Atmosphere commons
+10. Biosphere commons.
+
+The past 200 years of capitalism, the enclosed, privatized, and commodification of the market must be put under review. How would they be most effective in a transparent, non-hierarchical and collaborative culture? It comes down to two views, the capitalist (I own it. It is mine, and you can't use it) and the collaborationist (This is for everyone to use, and there are rules and guidelines to use it, so everyone can get their fair share). Today's cooperatives are good at this, like the [International Co-operative Alliance (ICA)][19]. Cooperatives have to generate motivation for the greater community good, and that motivation must be greater than any profit motive. That is their challenge but this not new, as one in seven people on the earth are in some kind of cooperative now.
+
+As I've presented in this article, the IoT will become our working and living environment. Also, energy costs are projected to go to near zero. With those changes, community collaboration and cooperation will become ever more important over hard work. In the last part of this series I will look at Collaborative Commons in logistics and other economic activity.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/open-organization/22/5/near-zero-marginal-cost-societies-and-impact-why-we-work
+
+作者:[Ron McFarland][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/ron-mcfarland
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/BUSINESS_networks.png
+[2]: https://www.goodreads.com/book/show/18594514-the-zero-marginal-cost-society
+[3]: https://us.sunpower.com
+[4]: https://www.energywatchgroup.org
+[5]: https://www.forbes.com/sites/ricoheurope/2020/02/06/moving-from-the-information-age-to-the-collaboration-age
+[6]: http://www.zythepsary.com/author/admin
+[7]: https://ch.linkedin.com/in/heatherleson
+[8]: https://en.wikipedia.org/wiki/3D_printing
+[9]: https://reprap.org/wiki/RepRap
+[10]: https://www.thingiverse.com
+[11]: https://www.popularmechanics.com/cars/a9645/urbee-2-the-3d-prinhttps://www.popularmechanics.com/cars/a9645/urbee-2-the-3d-printed-car-that-will-drive-across-the-country-16119485
+[12]: https://phys.org/news/2013-02-kor-ecologic-urbee-car-d.html
+[13]: https://theopenorganization.org/definition/open-organization-definition/
+[14]: https://www.epri.com
+[15]: https://www.intwineconnect.com
+[16]: https://www.cleanweb.co
+[17]: https://blogs.pugetsound.edu/econ/2018/03/09/comedy-of-the-commons
+[18]: https://github.com/open-organization/open-org-leaders-manual/raw/master/second-edition/open_org_leaders_manual_2_3.pdf
+[19]: https://www.ica.coop/en
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/tech/20170112 Writing Advanced Web Applications with Go.md b/sources/tech/20170112 Writing Advanced Web Applications with Go.md
deleted file mode 100644
index c3d0f9e8dd..0000000000
--- a/sources/tech/20170112 Writing Advanced Web Applications with Go.md
+++ /dev/null
@@ -1,706 +0,0 @@
-[#]: subject: "Writing Advanced Web Applications with Go"
-[#]: via: "https://www.jtolio.com/2017/01/writing-advanced-web-applications-with-go"
-[#]: author: "jtolio.com https://www.jtolio.com/"
-[#]: collector: "lujun9972"
-[#]: translator: " "
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-Writing Advanced Web Applications with Go
-======
-
-Web development in many programming environments often requires subscribing to some full framework ethos. With [Ruby][1], it’s usually [Rails][2] but could be [Sinatra][3] or something else. With [Python][4], it’s often [Django][5] or [Flask][6]. With [Go][7], it’s…
-
-If you spend some time in Go communities like the [Go mailing list][8] or the [Go subreddit][9], you’ll find Go newcomers frequently wondering what web framework is best to use. [There][10] [are][11] [quite][12] [a][13] [few][14] [Go][15] [frameworks][16] ([and][17] [then][18] [some][19]), so which one is best seems like a reasonable question. Without fail, though, the strong recommendation of the Go community is to [avoid web frameworks entirely][20] and just stick with the standard library as long as possible. Here’s [an example from the Go mailing list][21] and here’s [one from the subreddit][22].
-
-It’s not bad advice! The Go standard library is very rich and flexible, much more so than many other languages, and designing a web application in Go with just the standard library is definitely a good choice.
-
-Even when these Go frameworks call themselves minimalistic, they can’t seem to help themselves avoid using a different request handler interface than the default standard library [http.Handler][23], and I think this is the biggest source of angst about why frameworks should be avoided. If everyone standardizes on [http.Handler][23], then dang, all sorts of things would be interoperable!
-
-Before Go 1.7, it made some sense to give in and use a different interface for handling HTTP requests. But now that [http.Request][24] has the [Context][25] and [WithContext][26] methods, there truly isn’t a good reason any longer.
-
-I’ve done a fair share of web development in Go and I’m here to share with you both some standard library development patterns I’ve learned and some code I’ve found myself frequently needing. The code I’m sharing is not for use instead of the standard library, but to augment it.
-
-Overall, if this blog post feels like it’s predominantly plugging various little standalone libraries from my [Webhelp non-framework][27], that’s because it is. It’s okay, they’re little standalone libraries. Only use the ones you want!
-
-If you’re new to Go web development, I suggest reading the Go documentation’s [Writing Web Applications][28] article first.
-
-### Middleware
-
-A frequent design pattern for server-side web development is the concept of _middleware_, where some portion of the request handler wraps some other portion of the request handler and does some preprocessing or routing or something. This is a big component of how [Express][29] is organized on [Node][30], and how Express middleware and [Negroni][17] middleware works is almost line-for-line identical in design.
-
-Good use cases for middleware are things such as:
-
- * making sure a user is logged in, redirecting if not,
- * making sure the request came over HTTPS,
- * making sure a session is set up and loaded from a session database,
- * making sure we logged information before and after the request was handled,
- * making sure the request was routed to the right handler,
- * and so on.
-
-
-
-Composing your web app as essentially a chain of middleware handlers is a very powerful and flexible approach. It allows you to avoid a lot of [cross-cutting concerns][31] and have your code factored in very elegant and easy-to-maintain ways. By wrapping a set of handlers with middleware that ensures a user is logged in prior to actually attempting to handle the request, the individual handlers no longer need mistake-prone copy-and-pasted code to ensure the same thing.
-
-So, middleware is good. However, if Negroni or other frameworks are any indication, you’d think the standard library’s `http.Handler` isn’t up to the challenge. Negroni adds its own `negroni.Handler` just for the sake of making middleware easier. There’s no reason for this.
-
-Here is a full middleware implementation for ensuring a user is logged in, assuming a `GetUser(*http.Request)` function but otherwise just using the standard library:
-
-```
-
- func RequireUser(h http.Handler) http.Handler {
- return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
- user, err := GetUser(req)
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
- if user == nil {
- http.Error(w, "unauthorized", http.StatusUnauthorized)
- return
- }
- h.ServeHTTP(w, req)
- })
- }
-
-```
-
-Here’s how it’s used (just wrap another handler!):
-
-```
-
- func main() {
- http.ListenAndServe(":8080", RequireUser(http.HandlerFunc(myHandler)))
- }
-
-```
-
-Express, Negroni, and other frameworks expect this kind of signature for a middleware-supporting handler:
-
-```
-
- type Handler interface {
- // don't do this!
- ServeHTTP(rw http.ResponseWriter, req *http.Request, next http.HandlerFunc)
- }
-
-```
-
-There’s really no reason for adding the `next` argument - it reduces cross-library compatibility. So I say, don’t use `negroni.Handler` (or similar). Just use `http.Handler`!
-
-### Composability
-
-Hopefully I’ve sold you on middleware as a good design philosophy.
-
-Probably the most commonly-used type of middleware is request routing, or muxing (seems like we should call this demuxing but what do I know). Some frameworks are almost solely focused on request routing. [gorilla/mux][32] seems more popular than any other part of the [Gorilla][33] library. I think the reason for this is that even though the Go standard library is completely full featured and has a good [ServeMux][34] implementation, it doesn’t make the right thing the default.
-
-So! Let’s talk about request routing and consider the following problem. You, web developer extraordinaire, want to serve some HTML from your web server at `/hello/` but also want to serve some static assets from `/static/`. Let’s take a quick stab.
-
-```
-
- package main
-
- import (
- "net/http"
- )
-
- func hello(w http.ResponseWriter, req *http.Request) {
- w.Write([]byte("hello, world!"))
- }
-
- func main() {
- mux := http.NewServeMux()
- mux.Handle("/hello/", http.HandlerFunc(hello))
- mux.Handle("/static/", http.FileServer(http.Dir("./static-assets")))
- http.ListenAndServe(":8080", mux)
- }
-
-```
-
-If you visit `http://localhost:8080/hello/`, you’ll be rewarded with a friendly “hello, world!” message.
-
-If you visit `http://localhost:8080/static/` on the other hand (assuming you have a folder of static assets in `./static-assets`), you’ll be surprised and frustrated. This code tries to find the source content for the request `/static/my-file` at `./static-assets/static/my-file`! There’s an extra `/static` in there!
-
-Okay, so this is why `http.StripPrefix` exists. Let’s fix it.
-
-```
-
- mux.Handle("/static/", http.StripPrefix("/static",
- http.FileServer(http.Dir("./static-assets"))))
-
-```
-
-`mux.Handle` combined with `http.StripPrefix` is such a common pattern that I think it should be the default. Whenever a request router processes a certain amount of URL elements, it should strip them off the request so the wrapped `http.Handler` doesn’t need to know its absolute URL and only needs to be concerned with its relative one.
-
-In [Russ Cox][35]’s recent [TiddlyWeb backend][36], I would argue that every time `strings.TrimPrefix` is needed to remove the full URL from the handler’s incoming path arguments, it is an unnecessary cross-cutting concern, unfortunately imposed by `http.ServeMux`. (An example is [line 201 in tiddly.go][37].)
-
-I’d much rather have the default `mux` behavior work more like a directory of registered elements that by default strips off the ancestor directory before handing the request to the next middleware handler. It’s much more composable. To this end, I’ve written a simple muxer that works in this fashion called [whmux.Dir][38]. It is essentially `http.ServeMux` and `http.StripPrefix` combined. Here’s the previous example reworked to use it:
-
-```
-
- package main
-
- import (
- "net/http"
-
- "gopkg.in/webhelp.v1/whmux"
- )
-
- func hello(w http.ResponseWriter, req *http.Request) {
- w.Write([]byte("hello, world!"))
- }
-
- func main() {
- mux := whmux.Dir{
- "hello": http.HandlerFunc(hello),
- "static": http.FileServer(http.Dir("./static-assets")),
- }
- http.ListenAndServe(":8080", mux)
- }
-
-```
-
-There are other useful mux implementations inside the [whmux][39] package that demultiplex on various aspects of the request path, request method, request host, or pull arguments out of the request and place them into the context, such as a [whmux.IntArg][40] or [whmux.StringArg][41]. This brings us to [contexts][42].
-
-### Contexts
-
-Request contexts are a recent addition to the Go 1.7 standard library, but the idea of [contexts has been around since mid-2014][43]. As of Go 1.7, they were added to the standard library ([“context”][42]), but are available for older Go releases in the original location ([“golang.org/x/net/context”][44]).
-
-First, here’s the definition of the `context.Context` type that `(*http.Request).Context()` returns:
-
-```
-
- type Context interface {
- Done() <-chan struct{}
- Err() error
- Deadline() (deadline time.Time, ok bool)
-
- Value(key interface{}) interface{}
- }
-
-```
-
-Talking about `Done()`, `Err()`, and `Deadline()` are enough for an entirely different blog post, so I’m going to ignore them at least for now and focus on `Value(interface{})`.
-
-As a motivating problem, let’s say that the `GetUser(*http.Request)` method we assumed earlier is expensive, and we only want to call it once per request. We certainly don’t want to call it once to check that a user is logged in, and then again when we actually need the `*User` value. With `(*http.Request).WithContext` and `context.WithValue`, we can pass the `*User` down to the next middleware precomputed!
-
-Here’s the new middleware:
-
-```
-
- type userKey int
-
- func RequireUser(h http.Handler) http.Handler {
- return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
- user, err := GetUser(req)
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
- if user == nil {
- http.Error(w, "unauthorized", http.StatusUnauthorized)
- return
- }
- ctx := r.Context()
- ctx = context.WithValue(ctx, userKey(0), user)
- h.ServeHTTP(w, req.WithContext(ctx))
- })
- }
-
-```
-
-Now, handlers that are protected by this `RequireUser` handler can load the previously computed `*User` value like this:
-
-```
-
- if user, ok := req.Context().Value(userKey(0)).(*User); ok {
- // there's a valid user!
- }
-
-```
-
-Contexts allow us to pass optional values to handlers down the chain in a way that is relatively type-safe and flexible. None of the above context logic requires anything outside of the standard library.
-
-#### Aside about context keys
-
-There was a curious piece of code in the above example. At the top, we defined a `type userKey int`, and then always used it as `userKey(0)`.
-
-One of the possible problems with contexts is the `Value()` interface lends itself to a global namespace where you can stomp on other context users and use conflicting key names. Above, we used `type userKey` because it’s an unexported type in your package. It will never compare equal (without a cast) to any other type, including `int`, in Go. This gives us a way to namespace keys to your package, even though the `Value()` method is still a sort of global namespace.
-
-Because the need for this is so common, the `webhelp` package defines a [GenSym()][45] helper that will create a brand new, never-before-seen, unique value for use as a context key.
-
-If we used [GenSym()][45], then `type userKey int` would become `var userKey = webhelp.GenSym()` and `userKey(0)` would simply become `userKey`.
-
-#### Back to whmux.StringArg
-
-Armed with this new context behavior, we can now present a `whmux.StringArg` example:
-
-```
-
- package main
-
- import (
- "fmt"
- "net/http"
-
- "gopkg.in/webhelp.v1/whmux"
- )
-
- var (
- pageName = whmux.NewStringArg()
- )
-
- func page(w http.ResponseWriter, req *http.Request) {
- name := pageName.Get(req.Context())
-
- fmt.Fprintf(w, "Welcome to %s", name)
- }
-
- func main() {
- // pageName.Shift pulls the next /-delimited string out of the request's
- // URL.Path and puts it into the context instead.
- pageHandler := pageName.Shift(http.HandlerFunc(page))
-
- http.ListenAndServe(":8080", whmux.Dir{
- "wiki": pageHandler,
- })
- }
-
-```
-
-### Pre-Go-1.7 support
-
-Contexts let you do some pretty cool things. But let’s say you’re stuck with something before Go 1.7 (for instance, App Engine is currently Go 1.6).
-
-That’s okay! I’ve backported all of the neat new context features to Go 1.6 and earlier in a forwards compatible way!
-
-With the [whcompat][46] package, `req.Context()` becomes `whcompat.Context(req)`, and `req.WithContext(ctx)` becomes `whcompat.WithContext(req, ctx)`. The `whcompat` versions work with all releases of Go. Yay!
-
-There’s a bit of unpleasantness behind the scenes to make this happen. Specifically, for pre-1.7 builds, a global map indexed by `req.URL` is kept, and a finalizer is installed on `req` to clean up. So don’t change what `req.URL` points to and this will work fine. In practice it’s not a problem.
-
-`whcompat` adds additional backwards-compatibility helpers. In Go 1.7 and on, the context’s `Done()` channel is closed (and `Err()` is set), whenever the request is done processing. If you want this behavior in Go 1.6 and earlier, just use the [whcompat.DoneNotify][47] middleware.
-
-In Go 1.8 and on, the context’s `Done()` channel is closed when the client goes away, even if the request hasn’t completed. If you want this behavior in Go 1.7 and earlier, just use the [whcompat.CloseNotify][48] middleware, though beware that it costs an extra goroutine.
-
-### Error handling
-
-How you handle errors can be another cross-cutting concern, but with good application of context and middleware, it too can be beautifully cleaned up so that the responsibilities lie in the correct place.
-
-Problem statement: your `RequireUser` middleware needs to handle an authentication error differently between your HTML endpoints and your JSON API endpoints. You want to use `RequireUser` for both types of endpoints, but with your HTML endpoints you want to return a user-friendly error page, and with your JSON API endpoints you want to return an appropriate JSON error state.
-
-In my opinion, the right thing to do is to have contextual error handlers, and luckily, we have a context for contextual information!
-
-First, we need an error handler interface.
-
-```
-
- type ErrHandler interface {
- HandleError(w http.ResponseWriter, req *http.Request, err error)
- }
-
-```
-
-Next, let’s make a middleware that registers the error handler in the context:
-
-```
-
- var errHandler = webhelp.GenSym() // see the aside about context keys
-
- func HandleErrWith(eh ErrHandler, h http.Handler) http.Handler {
- return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
- ctx := context.WithValue(whcompat.Context(req), errHandler, eh)
- h.ServeHTTP(w, whcompat.WithContext(req, ctx))
- })
- }
-
-```
-
-Last, let’s make a function that will use the registered error handler for errors:
-
-```
-
- func HandleErr(w http.ResponseWriter, req *http.Request, err error) {
- if handler, ok := whcompat.Context(req).Value(errHandler).(ErrHandler); ok {
- handler.HandleError(w, req, err)
- return
- }
- log.Printf("error: %v", err)
- http.Error(w, "internal server error", http.StatusInternalServerError)
- }
-
-```
-
-Now, as long as everything uses `HandleErr` to handle errors, our JSON API can handle errors with JSON responses, and our HTML endpoints can handle errors with HTML responses.
-
-Of course, the [wherr][49] package implements this all for you, and the [whjson][49] package even implements a friendly JSON API error handler.
-
-Here’s how you might use it:
-
-```
-
- var userKey = webhelp.GenSym()
-
- func RequireUser(h http.Handler) http.Handler {
- return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
- user, err := GetUser(req)
- if err != nil {
- wherr.Handle(w, req, wherr.InternalServerError.New("failed to get user"))
- return
- }
- if user == nil {
- wherr.Handle(w, req, wherr.Unauthorized.New("no user found"))
- return
- }
- ctx := r.Context()
- ctx = context.WithValue(ctx, userKey, user)
- h.ServeHTTP(w, req.WithContext(ctx))
- })
- }
-
- func userpage(w http.ResponseWriter, req *http.Request) {
- user := req.Context().Value(userKey).(*User)
- w.Header().Set("Content-Type", "text/html")
- userpageTmpl.Execute(w, user)
- }
-
- func username(w http.ResponseWriter, req *http.Request) {
- user := req.Context().Value(userKey).(*User)
- w.Header().Set("Content-Type", "application/json")
- json.NewEncoder(w).Encode(map[string]interface{}{"user": user})
- }
-
- func main() {
- http.ListenAndServe(":8080", whmux.Dir{
- "api": wherr.HandleWith(whjson.ErrHandler,
- RequireUser(whmux.Dir{
- "username": http.HandlerFunc(username),
- })),
- "user": RequireUser(http.HandlerFunc(userpage)),
- })
- }
-
-```
-
-#### Aside about the spacemonkeygo/errors package
-
-The default [wherr.Handle][50] implementation understands all of the [error classes defined in the wherr top level package][51].
-
-These error classes are implemented using the [spacemonkeygo/errors][52] library and the [spacemonkeygo/errors/errhttp][53] extensions. You don’t have to use this library or these errors, but the benefit is that your error instances can be extended to include HTTP status code messages and information, which once again, provides for a nice elimination of cross-cutting concerns in your error handling logic.
-
-See the [spacemonkeygo/errors][52] package for more details.
-
-_**Update 2018-04-19:** After a few years of use, my friend condensed some lessons we learned and the best parts of `spacemonkeygo/errors` into a new, more concise, better library, over at [github.com/zeebo/errs][54]. Consider using that instead!_
-
-### Sessions
-
-Go’s standard library has great support for cookies, but cookies by themselves aren’t usually what a developer thinks of when she thinks about sessions. Cookies are unencrypted, unauthenticated, and readable by the user, and perhaps you don’t want that with your session data.
-
-Further, sessions can be stored in cookies, but could also be stored in a database to provide features like session revocation and querying. There’s lots of potential details about the implementation of sessions.
-
-Request handlers, however, probably don’t care too much about the implementation details of the session. Request handlers usually just want a bucket of keys and values they can store safely and securely.
-
-The [whsess][55] package implements middleware for registering an arbitrary session store (a default cookie-based session store is provided), and implements helpers for retrieving and saving new values into the session.
-
-The default cookie-based session store implements encryption and authentication via the excellent [nacl/secretbox][56] package.
-
-Usage is like this:
-
-```
-
- func handler(w http.ResponseWriter, req *http.Request) {
- ctx := whcompat.Context(req)
- sess, err := whsess.Load(ctx, "namespace")
- if err != nil {
- wherr.Handle(w, req, err)
- return
- }
- if loggedIn, _ := sess.Values["logged_in"].(bool); loggedIn {
- views, _ := sess.Values["views"].(int64)
- sess.Values["views"] = views + 1
- sess.Save(w)
- }
- }
-
- func main() {
- http.ListenAndServe(":8080", whsess.HandlerWithStore(
- whsess.NewCookieStore(secret), http.HandlerFunc(handler)))
- }
-
-```
-
-### Logging
-
-The Go standard library by default doesn’t log incoming requests, outgoing responses, or even just what port the HTTP server is listening on.
-
-The [whlog][57] package implements all three. The [whlog.LogRequests][58] middleware will log requests as they start. The [whlog.LogResponses][59] middleware will log requests as they end, along with status code and timing information. [whlog.ListenAndServe][60] will log the address the server ultimately listens on (if you specify “:0” as your address, a port will be randomly chosen, and [whlog.ListenAndServe][60] will log it).
-
-[whlog.LogResponses][59] deserves special mention for how it does what it does. It uses the [whmon][61] package to instrument the outgoing `http.ResponseWriter` to keep track of response information.
-
-Usage is like this:
-
-```
-
- func main() {
- whlog.ListenAndServe(":8080", whlog.LogResponses(whlog.Default, handler))
- }
-
-```
-
-#### App engine logging
-
-App engine logging is unconventional crazytown. The standard library logger doesn’t work by default on App Engine, because App Engine logs _require_ the request context. This is unfortunate for libraries that don’t necessarily run on App Engine all the time, as their logging information doesn’t make it to the App Engine request-specific logger.
-
-Unbelievably, this is fixable with [whgls][62], which uses my terrible, terrible (but recently improved) [Goroutine-local storage library][63] to store the request context on the current stack, register a new log output, and fix logging so standard library logging works with App Engine again.
-
-### Template handling
-
-Go’s standard library [html/template][64] package is excellent, but you’ll be unsurprised to find there’s a few tasks I do with it so commonly that I’ve written additional support code.
-
-The [whtmpl][65] package really does two things. First, it provides a number of useful helper methods for use within templates, and second, it takes some friction out of managing a large number of templates.
-
-When writing templates, one thing you can do is call out to other registered templates for small values. A good example might be some sort of list element. You can have a template that renders the list element, and then your template that renders your list can use the list element template in turn.
-
-Use of another template within a template might look like this:
-
-```
-
-
- {{ range .List }}
- {{ template "list_element" . }}
- {{ end }}
-
-
-```
-
-You’re now rendering the `list_element` template with the list element from `.List`. But what if you want to also pass the current user `.User`? Unfortunately, you can only pass one argument from one template to another. If you have two arguments you want to pass to another template, with the standard library, you’re out of luck.
-
-The [whtmpl][65] package adds three helper functions to aid you here, `makepair`, `makemap`, and `makeslice` (more docs under the [whtmpl.Collection][66] type). `makepair` is the simplest. It takes two arguments and constructs a [whtmpl.Pair][67]. Fixing our example above would look like this now:
-
-```
-
-
-
-```
-
-The second thing [whtmpl][65] does is make defining lots of templates easy, by optionally automatically naming templates after the name of the file the template is defined in.
-
-For example, say you have three files.
-
-Here’s `pkg.go`:
-
-```
-
- package views
-
- import "gopkg.in/webhelp.v1/whtmpl"
-
- var Templates = whtmpl.NewCollection()
-
-```
-
-Here’s `landing.go`:
-
-```
-
- package views
-
- var _ = Templates.MustParse(`{{ template "header" . }}
-
-
+ }
+ @
+ @
+}
+```
+
+### 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/20220529 Compile GNOME Shell and Apps From Source [Beginner-s Guide].md b/sources/tech/20220529 Compile GNOME Shell and Apps From Source [Beginner-s Guide].md
new file mode 100644
index 0000000000..6d8cf31684
--- /dev/null
+++ b/sources/tech/20220529 Compile GNOME Shell and Apps From Source [Beginner-s Guide].md
@@ -0,0 +1,168 @@
+[#]: 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: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Compile GNOME Shell and Apps From Source [Beginner’s Guide]
+======
+Here’s a quick guide for you on how to compile GNOME from its source, including the shell, mutter and some native apps.
+
+Before you compile, you need to make sure certain things because the following compilation is directly from the master branch in GitLab, which contains some development packages.
+
+In general, you can compile in any Linux distribution of your choice. But I would recommend using Fedora Rawhide which is the development branch of Fedora, for future releases.
+
+Also, do not try this in a stable system. Because things may go wrong, you may end up with a broken system.
+
+To summarize, you need the following to compile GNOME from the source.
+
+* A test setup ([Virtual machine][1] or a test system)
+* Fedora Rawhide Distro (recommended. [Download from here][2])
+* Make sure your distro is up to date.
+* And you are logged in to an X.Org session.
+
+I would not recommend compiling in the Wayland session because you will run into problems.
+
+### Compile GNOME from the Source
+
+The GNOME desktop is a collection of packages based on their functions. The desktop component of a Linux distribution works under a window manager and shell.
+
+So for GNOME, I will first compile mutter – the window manager for GNOME Shell. And then followed by the compilation of GNOME Shell. Finally, I will compile some native apps.
+
+I will use the meson build system for compilation. The meson is a beautiful build system which is fast and user friendly.
+
+#### Compile Mutter
+
+Open a terminal and install the required packages for GNOME Shell and mutter.
+
+```
+sudo dnf build-dep mutter gnome-shell
+```
+
+Create a demo directory in your home drive (or anywhere you want).
+
+```
+cd ~
+```
+
+```
+mkdir demo
+```
+
+```
+cd demo
+```
+
+Clone the mutter master branch from GitLab.
+
+git clone https://gitlab.gnome.org/GNOME/mutter
+
+Go to the cloning directory and use the below meson command to prepare the build files. By default, meson uses `/usr/local` for building files. However, you can also use prefix switch to redirect the output to a specific folder (shown below).
+
+```
+cd mutter
+```
+
+```
+meson _build --prefix=/usr
+```
+
+![Compile Mutter for GNOME][3]
+
+Install mutter in your system when the build is complete using the below command.
+
+```
+sudo ninja install -C _build
+```
+
+#### Compile GNOME Shell
+
+The compilation of GNOME Shell and other packages are similar. First, clone the GNOME Shell master repository from GitLab, then build and install. You can follow the below commands in sequence.
+
+There are two dependencies which you need for GNOME Shell. They are [asciidoc][4] and [sassc][5]. Install them before you build GNOME Shell.
+
+```
+sudo dnf install asciidoc
+```
+
+```
+sudo dnf install sassc
+```
+
+After installing these dependencies, follow the below commands to build and install GNOME Shell. Make sure you go back to the `demo` folder (which I created in the first step) before running this command.
+
+```
+git clone https://gitlab.gnome.org/GNOME/gnome-shellcd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build
+```
+
+### Running the GNOME Shell
+
+After you finish compiling, you can try restarting the GNOME Shell to see the changes from the master branch.
+
+Before you restart, as I mentioned earlier, make sure you are in the X.Org session. Press `ALT+F2` and type `r`. Then press enter. This command will restart GNOME Shell.
+
+![Restart GNOME Shell (X11)][6]
+
+And congratulations! You have successfully compiled GNOME Shell and Mutter.
+
+Now, it’s time to compile some sample GNOME native applications.
+
+### Compile GNOME Native Applications
+
+The steps are the same for all sources of GNOME or any applications. You need to change the repo name. So, here are some sample commands to compile necessary GNOME native apps.
+
+#### Files (Nautilus)
+
+```
+git clone https://gitlab.gnome.org/GNOME/nautilus/cd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build
+```
+
+#### GNOME Software
+
+```
+git clone https://gitlab.gnome.org/GNOME/gnome-software/cd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build
+```
+
+#### GNOME Control Center
+
+```
+git clone https://gitlab.gnome.org/GNOME/gnome-control-center/cd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build
+```
+
+### FAQ
+
+1. Using the above steps, you can compile any source branch. Not only GNOME.
+2. The GitLab server is sometimes slow, and it may take a longer time to clone a repo. If the `git clone` fails, I would recommend you to try again.
+
+### Closing Notes
+
+I hope this little advanced tutorial helps you try out new GNOME features before they land in GNOME nightly OS. Since you compiled, you may also contribute to testing new GNOME features and report any bugs or problems on the GitLab Issues page for specific packages.
+
+This article is the first instalment of the open-source app compilation series. Stay tuned for more compilation articles of more open-source apps.
+
+Also, do let me know your comments, suggestions, or any error you faced using these instructions in the comment box.
+
+Cheers.
+
+--------------------------------------------------------------------------------
+
+via: https://www.debugpoint.com/2022/05/compile-gnome-source/
+
+作者:[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/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/sources/tech/20220530 Using a Machine Learning Model to Make Predictions.md b/sources/tech/20220530 Using a Machine Learning Model to Make Predictions.md
new file mode 100644
index 0000000000..c8e7fbf0be
--- /dev/null
+++ b/sources/tech/20220530 Using a Machine Learning Model to Make Predictions.md
@@ -0,0 +1,89 @@
+[#]: 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: " "
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Using a Machine Learning Model to Make Predictions
+======
+Machine learning is basically a subset of artificial intelligence that uses previously existing data to make a prediction on new data. Of course, all of us know this by now! This article demonstrates how a machine learning model developed in Python can be used as a part of a Java code to make predictions.
+
+![Machine-learning][1]
+
+This article assumes you are familiar with the basic development skills and understanding of machine learning. We will start with training our model, and then make a machine learning model in Python.
+
+This article assumes you are familiar with the basic development skills and understanding of machine learning. We will start with training our model, and then make a machine learning model in Python.
+
+I am taking the example of a flood prediction model. First, import the following libraries:
+
+```
+import pandas as pd
+import numpy as np
+import matplotlib.pyplot as plt
+```
+
+Once we have successfully imported the libraries, we need to take in the data sets, as shown in the code below. To predict floods, I am using the river level data set.
+
+```
+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
+```
+
+The upload widget is only available when the cell has been executed in the current browser session. Please rerun this cell to enable*Saving Hoppers Crossing-Hourly-River-Level.csv to Hoppers Crossing-Hourly-River-Level.csv User uploaded file “Hoppers Crossing-Hourly-River-Level.csv”* with length 2207036 bytes.
+
+Once this is done, we can train our model using the *sklearn library*. For this, we first need to import the library and the algorithm model, as shown in Figure 1.
+
+![Figure 1: Training the model][2]
+
+```
+from sklearn.linear_model import LinearRegression
+regressor = LinearRegression()
+regressor.fit(X_train, y_train)
+```
+
+Once that is done we have trained our model, and it’s now ready to make predictions, as shown in Figure 2.
+
+![Figure 2: Making predictions][3]
+
+### Using ML model in Java
+
+What we need to do now is to convert the ML model into a model that can be used by a Java program. There is a library called sklearn2pmml that helps us do this:
+
+```
+# Install the library
+pip install sklearn2pmml
+```
+
+Once the library is installed we can convert our already trained model, as shown below:
+
+```
+sklearn2pmml(pipeline, ‘model.pmml’, with_repr = True)
+```
+
+This is it! We can now use the generated `model.pmml` file in our Java code to make predictions. Do try it out!
+
+(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]
+译者:[译者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/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
diff --git a/translated/news/20220524 Woah! Broadcom Could Acquire VMware for $60 Billion.md b/translated/news/20220524 Woah! Broadcom Could Acquire VMware for $60 Billion.md
new file mode 100644
index 0000000000..7c1faf0c04
--- /dev/null
+++ b/translated/news/20220524 Woah! Broadcom Could Acquire VMware for $60 Billion.md
@@ -0,0 +1,63 @@
+[#]: subject: "Woah! Broadcom Could Acquire VMware for $60 Billion"
+[#]: via: "https://news.itsfoss.com/broadcom-vmware-deal/"
+[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
+[#]: collector: "lkxed"
+[#]: translator: "lkxed"
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+震惊!博通或以 600 亿美元收购 VMware
+======
+Broadcom’s interested to acquire VMware for $60 billion, making it one of the biggest tech deals in 2022.
+博通有意以 600 亿美元收购 VMware,这或将成为 2022 年最大的科技交易之一。
+
+![博通][1]
+
+博通Broadcom 是一家半导体芯片公司,其无线适配器/无线网卡和驱动程序的不兼容问题,使得它在桌面 Linux 用户中臭名昭著。
+
+现在,它正计划通过收购业内最大的参与者之一,也就是 **VMware**,来进入云计算市场。
+
+VMware 不是一家开源公司,但它为其虚拟化软件提供了一些开源工具和 Linux 支持。
+
+据 **《华尔街日报》** [报道][2],博通和 VMware 可能会在本周四(5 月 26 日)的晚些时候宣布此次收购。(LCTT 译注:抱歉,我们来晚了……)
+
+### 博通进军云计算市场
+
+当谈到无线网络芯片及其驱动程序时,[博通][3] 应该是一个 Linux 用户熟悉的名称。
+
+现在,若能以 600 亿美元交易收购 [VMware][4],他们就可以借助 VMware 在云计算领域的影响力,来扩大自身在该行业的影响力。
+
+因此,他们的决定也会影响有关博通收购的讨论。
+
+可以肯定地说,如果讨论的意见不一,这笔交易就不一定能继续进行下去了。
+
+为了能够成功支付(这笔巨款),该报告还提到博通计划接受银行提供的 400 亿美元的债务帮助。
+
+考虑到该报告提到最终价格仍有待讨论,600 亿美元的价值可能会发生变化(但不会太大)。(LCTT 译注:最新的数字是 610 亿美元,该收购预计要到 2023 年才能完成。)
+
+### 说在最后
+
+如果你有兴趣踏入股市,(这段时间)你可以关注一下 VMware 的股票和博通公司(的动态)。
+
+你怎么看待博通收购 VMware 这件事呢?你认为它最后的结局会是戴尔成为公司的大股东吗?(LCTT 译注:这里的关系有点复杂,简单来说,VMware 曾经是 EMC 的子公司,后来戴尔收购了 EMC,再后来 VMware 独立。)
+
+有任何想法,都请在下面的评论中分享吧!
+
+--------------------------------------------------------------------------------
+
+via: https://news.itsfoss.com/broadcom-vmware-deal/
+
+作者:[Ankush Das][a]
+选题:[lkxed][b]
+译者:[lkxed](https://github.com/lkxed)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://news.itsfoss.com/author/ankush/
+[b]: https://github.com/lkxed
+[1]: https://news.itsfoss.com/wp-content/uploads/2022/05/broadcom-vmware-acquisition.jpg
+[2]: https://www.wsj.com/articles/broadcom-discussing-paying-around-140-a-share-for-vmware-people-say-11653334946
+[3]: https://www.broadcom.com/
+[4]: https://www.vmware.com/i
diff --git a/translated/news/20220526 Plex Desktop Player is Now Available for Linux.md b/translated/news/20220526 Plex Desktop Player is Now Available for Linux.md
new file mode 100644
index 0000000000..3abeea5a3b
--- /dev/null
+++ b/translated/news/20220526 Plex Desktop Player is Now Available for Linux.md
@@ -0,0 +1,73 @@
+[#]: 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: " "
+[#]: publisher: " "
+[#]: url: " "
+
+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 上流式传输和组织个人媒体收藏的绝佳选择。
+
+![][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)
+校对:[校对者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/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/translated/talk/20220221 6 Reasons to Try Nitrux OS.md b/translated/talk/20220221 6 Reasons to Try Nitrux OS.md
deleted file mode 100644
index 8661ea731d..0000000000
--- a/translated/talk/20220221 6 Reasons to Try Nitrux OS.md
+++ /dev/null
@@ -1,143 +0,0 @@
-[#]: subject: "6 Reasons to Try Nitrux OS"
-[#]: via: "https://news.itsfoss.com/reasons-to-try-nitrux-os/"
-[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
-[#]: collector: "lujun9972"
-[#]: translator: "aREversez"
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-6大理由,让你尝试 Nitrux 系统
-======
-
-Nitrux 系统也许算不上 Linux 的主流发行版本之一,但它绝对是一款极其独特的产品。
-
-2019 年,我们[采访了 Nitrux 的创始人 Uri Herrera][1],了解到 Herrera 等人开发这款系统的初衷:超越 Linux 传统的发行版本。
-
-自那之后,过了许久,我们终于迎来了 [Nitrux 2.0 版本][2]。
-
-不要忘了,Nitrux 在去年[放弃基于 Ubuntu 而选择 Debian][3]。
-
-考虑到自 Nitrux 发行以来的数年间,也发生了许多大事,所以你应该尝试一下这款系统。
-
-这里,我要分享一些体验 [Nitrux 系统][4]的理由:
-
-### 1\. Nitrux 不再基于 Ubuntu
-
-![][5]
-
-人们一般都会推荐基于 Ubuntu 的 Linux 发行版本,来满足日常所需。
-
-当然,在我们[为新手推荐的 Linux 系统][6]中,也包括了许多基于 Ubuntu 的版本,但是请不要误会。
-
-我们之所以推荐基于 Ubuntu 的发行版本,唯一的理由在于它们简单易用,支持大量的商业软件。
-
-所以,如果你不是刚开始使用 Linux 系统,同时也想尝试既能让你耳目一新,又不至于使你感到陌生,而且十分稳定的发行版,基于 Debian 的 Nirtux 是一个不错的选择。
-
-你完全不需要在短期内迅速了解这款系统,就可以得心应手地使用终端来完成各项工作。
-
-感兴趣的话,可以参考我们的文章 [Debian vs Ubuntu][7],了解更多.
-
-### 2\. 专注 AppImages
-
-![][5]
-
-[AppImage][8] 是通用的软件包系统,没有任何依赖。你不需要在 Linux 上安装任何软件包管理器或者依赖包,就可以直接运行 AppImage 应用。
-
-AppImage 旨在打造便携、高效的软件包系统,省去安装的步骤,与 Windows 系统的便携版软件非常相似。
-
-Nitrux 操作系统专注 AppImage 应用软件,为你带来流畅的用户体验。
-
-NX 软件中心是一个 GUI 程序,用户可以通过使用 Mauikit(该软件中心的 UI 框架),安装、管理 AppImage 应用程序。
-
-### 3\. 基于 KDE 桌面环境的发行版本
-
-![][5]
-
-Nitrux 操作系统是[搭载 KDE 桌面环境中最好的 Linux 发行版本][9]之一。 如果你不喜欢 GNOME 或者其他开箱即用的桌面环境,KDE 会是一个不错的选择。
-
-也许你还不知道, 相较于其他桌面环境,[KDE 支持自定义配置][10]。
-
-因此,在 KED 桌面环境下,你可以毫不费力地打造自己的个性化桌面。
-
-### 4\. 独特的用户体验
-
-![][11]
-
-Nitrux 的用户体验设计包括了最好的 KDE 桌面环境与 Qt 技术及其调整工具,为你带来全新的用户体验。
-
-虽然在使用 Nitrux 操作系统时,你不会觉得十分陌生,但是还是会感到有些许的不同。
-
-即使你没有对 Nitrux 系统做任何自定义的设置,开箱即用的体验也足以让它成为[最优雅的发行版][12]之一。
-
-### 5\. Maui Shell
-
-![][11]
-
-[Maui Shell][13] 是 Nitrux 用户体验的亮点之一。近来,Maui Shell 得到了进一步的完善,将同时支持桌面端和移动端。
-
-尽管 Maui Shell 目前还不成熟,但是外观看起来十分大气简约,就像 [System76 将要推出基于 Rust 的桌面环境][14]一样令人兴奋。
-
-这也是我们推荐尝试 Nitrux 系统最重要的原因之一。时间会证明,Nitrux 系统是否将会开启桌面体验的全新时代。
-
-### 6\. Xanmod 内核
-
-![][5]
-
-[Xanmod 内核][15] 是主流 Linux 内核的定制版本,对性能进行了适当的调整,附加了一些其他功能。有了它,你的桌面体验一定能得到大幅提升。
-
-自 2.0 版本起,Nitrux 操作系统选用 Xanmod 作为默认内核,为用户提供“升级版”的桌面体验。
-
-当然你也可以选择其他 Linux 内核,比如 Liquorix 和 Libre,它们都有着各自的优点。
-
-如果你不喜欢 Xanmod,也可以选择主流长期支持版的内核。所以说,在 Nitrux 操作系统上,你完全可以修改使用不同的内核。
-
-[Nitrux OS][4]
-
-### 总结
-
-诚然,从主流发行版转到像 Nitrux 这样的操作系统,需要考虑各种风险。
-
-但是,**我建议你好好考虑一番:**
-
-Nitrux 等发行版本在每一次版本升级中,都会尽全力去完善各项功能。
-
-尽管背后没有强大的企业和财力支撑,他们依然可以开发出这款令人惊艳的发行版本、进阶版的 [Maui 项目][16],以及别开生面的 Maui shell.
-
-所以,我认为,我们也应该以己所能,尽己之力,支持这些优秀的发行版。
-
-不过话说回来,每一款 Linux 发行版都会或多或少地存在一些问题。当你试用一款新的发行版本时,你需要给它点儿时间,在最终将它作为日常使用的操作系统之前,慢慢地去适应它。
-
-换言之,我推荐你在业余时间试用 Nitrux 操作系统,或者直接装个虚拟机来一探究竟。
-
-_我很关注大家对这篇文章的看法,请在下方评论留言_
-
---------------------------------------------------------------------------------
-
-via: https://news.itsfoss.com/reasons-to-try-nitrux-os/
-
-作者:[Ankush Das][a]
-选题:[lujun9972][b]
-译者:[aREversez](https://github.com/aREversez)
-校对:[校对者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/lujun9972
-[1]: https://itsfoss.com/nitrux-linux/
-[2]: https://news.itsfoss.com/nitrux-2-0-release/
-[3]: https://news.itsfoss.com/nitrux-linux-debian/
-[4]: https://nxos.org/
-[5]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQ2OCIgd2lkdGg9Ijc4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=
-[6]: https://itsfoss.com/best-linux-beginners/
-[7]: https://itsfoss.com/debian-vs-ubuntu/
-[8]: https://itsfoss.com/use-appimage-linux/
-[9]: https://itsfoss.com/best-kde-distributions/
-[10]: https://itsfoss.com/kde-customization/
-[11]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQzOSIgd2lkdGg9Ijc4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=
-[12]: https://itsfoss.com/beautiful-linux-distributions/
-[13]: https://news.itsfoss.com/maui-shell-unveiled/
-[14]: https://news.itsfoss.com/system76-cosmic-panel/
-[15]: https://xanmod.org/
-[16]: https://mauikit.org
diff --git a/translated/tech/20180625 3 ways to copy files in Go.md b/translated/tech/20180625 3 ways to copy files in Go.md
new file mode 100644
index 0000000000..b362d05e2f
--- /dev/null
+++ b/translated/tech/20180625 3 ways to copy files in Go.md
@@ -0,0 +1,217 @@
+[#]: 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: " "
+[#]: publisher: " "
+[#]: url: " "
+
+在 Go 中复制文件的三种方法
+======
+本文是 Go 系列的第三篇文章,我将介绍三种最流行的复制文件的方法。
+
+![][1]
+
+图源:Opensource.com
+
+本文将介绍展示如何使用 [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)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [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/translated/tech/20180712 An introduction to Go arrays and slices.md b/translated/tech/20180712 An introduction to Go arrays and slices.md
new file mode 100644
index 0000000000..40e3f9a3b6
--- /dev/null
+++ b/translated/tech/20180712 An introduction to Go arrays and slices.md
@@ -0,0 +1,216 @@
+[#]: 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: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Go 数组和切片的介绍
+======
+了解使用数组和切片在 Go 中存储数据的优缺点,以及为什么其中一个比另一个更好。
+
+![][1]
+
+图源:carrotmadman6,经 Opensource.com 修改,CC BY-SA 2.0
+
+在本系列的第四篇文章中,我将解释 [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}}
+```
+
+The `arrays.go` source file explains the use of Go arrays. The most important code in `arrays.go` is:
+`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 不必拷贝切片 —— 它只需传递切片变量的内存地址。
+
+Go slices are illustrated in `slice.go`, which contains the following code:
+`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)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [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/translated/tech/20210115 Learn awk by coding a -guess the number- game.md b/translated/tech/20210115 Learn awk by coding a -guess the number- game.md
new file mode 100644
index 0000000000..30040b9347
--- /dev/null
+++ b/translated/tech/20210115 Learn awk by coding a -guess the number- game.md
@@ -0,0 +1,199 @@
+[#]: 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)
+
+编写一个“猜数”游戏的程序来学习 awk
+======
+编程语言往往具有许多共同特征。学习一门新语言的好方法是去写一个熟悉的程序。在本文中,我将会使用 awk 编写一个“猜数”程序来展示熟悉的概念。
+
+![question mark in chalk][1]
+
+当你学习一门新的编程语言时,最好把重点放在大多数编程语言都有的共同点上:
+ * 变量 —— 存储信息的地方
+ * 表达式 —— 计算的方法
+ * 语句 —— 在程序中表示状态变化的方法
+
+
+这些概念是大多是编程语言的基础。
+
+一旦你理解了这些概念,你就可以开始把其他的弄清楚。例如,大多数语言都有得到其设计支持的“处理方式”,这些方式在不同语言之间可能有很大的不同。这些方法包括模块化(将相关功能分组在一起)、声明性与命令性、面向对象、低级与高级语法特性等等。许多程序员熟悉的一个例子是“仪式”,即,在处理问题之前设置场景所需的工作量。据说 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] 来帮你记录下你所学的一切。
+
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/21/1/learn-awk
+
+作者:[Chris Hermansen][a]
+选题:[lujun9972][b]
+译者:[FYJNEVERFOLLOWS](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/translated/tech/20220303 9 resources to help you contribute to open source in 2022.md b/translated/tech/20220303 9 resources to help you contribute to open source in 2022.md
deleted file mode 100644
index 65d1118a87..0000000000
--- a/translated/tech/20220303 9 resources to help you contribute to open source in 2022.md
+++ /dev/null
@@ -1,75 +0,0 @@
-[#]: subject: "9 resources to help you contribute to open source in 2022"
-[#]: via: "https://opensource.com/article/22/3/contribute-open-source-2022"
-[#]: author: "Opensource.com https://opensource.com/users/admin"
-[#]: collector: "lujun9972"
-[#]: translator: "geekpi"
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-9 种资源帮助你在 2022 年为开源做出贡献
-======
-你准备好推进你的开源之旅了吗?这里有一些如何给开源做贡献的提示和教程。参加投票,以分享你参与开源有多久了。
-![Working from home at a laptop][1]
-
-在 2022 年,开源正变得越来越家喻户晓。但多年来,开源一直被认为是企业 IT 环境中斗志旺盛的弱者。开源已经以某种形式或方式存在了[几十年][2],但甚至直到 20 世纪 90 年代末,它才以其[名称][3]正式出现。你可能一直都在使用开源技术,但却不知道。事实上,你目前正在阅读的网站就是在开源的内容管理系统 [Drupal][4] 上运行。你的汽车、笔记本电脑、智能手表和电子游戏很可能[由 Linux][5],一个开源操作系统支持。
-
-红帽公司的年度[企业开源状况][6]最近发布,其中包含了大量的见解,对任何在开源技术领域发展的人都有帮助。首先,77% 的 IT 领导对企业开源的看法比一年前更积极,82% 的 IT 领导更可能选择对开源社区有贡献的供应商。这意味着,参与开源比以往任何时候都更重要。现在是推进你的开源之旅的时候了,无论你在哪里。这里有一些资源可以帮助你走这条路。
-
-### 为什么要为开源做贡献?
-
- * [是什么激励了开源软件的贡献者?][7] 新的研究发现人们贡献的原因自 21 世纪初以来已经改变。
- * [现在为开源做贡献的 3 个理由][8]。现在,比以往任何时候都更加是为开源做贡献的理想时机。以下是原因。
- * [为开放源码做贡献时的 7 个成功策略][9]。一位作者在为开源项目做贡献的经验帮助她在技术领域找到了她梦想的工作。
-
-
-
-### 为开源做出你的第一次贡献
-
- * [8 种非编码方式为开源做贡献][10]。无论你是程序员新手,还是经验丰富的老手,或者根本不是工程师,在编码之外还有很多方式为开源项目做贡献。
- * [为 Slack 的开源替代方案做贡献的 6 种方式][11]。加入成千上万为 Mattermost 这个开源消息平台贡献代码、翻译、文档等的人。
- * [任何人都可以为开放实践图书馆做出贡献的 7 种方式][12]。为开放实践图书馆做出贡献是参与全球从业者社区的一种有趣方式,这些从业者都愿意分享他们的知识并改进他们自己的工作方式。
- * [如果你有一份全职工作,如何为 Kubernetes 做贡献][13]。你可以在业余时间从事最大的开源项目之一的内部工作。
-
-
-
-### 鼓励他人为开源做贡献
-
- * [为什么你的开源项目需要的不仅仅是程序员][14]。仅仅是开发人员并不能创造出满足各种需求的长保质期的开源项目,是时候欢迎更多的角色和人才了。
- * [开源贡献者加入的 10 条提示][15]。让新的贡献者感到自己在社区中受到欢迎,对项目的未来至关重要,因此,在加入时投入时间和注意力是很重要的。
-
-
-
-### 分享你对开源贡献的建议
-
-当涉及到参与开源社区时,有无限的可能性。在 Opensource.com,我们的目标是庆祝社区的不同观点和背景,其中包括你。你的独特故事激励着全球各地的人们参与到开源中来。来吧,[把你的文章想法发给我们][16]!
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/22/3/contribute-open-source-2022
-
-作者:[Opensource.com][a]
-选题:[lujun9972][b]
-译者:[geekpi](https://github.com/geekpi)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://opensource.com/users/admin
-[b]: https://github.com/lujun9972
-[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/wfh_work_home_laptop_work.png?itok=VFwToeMy (Working from home at a laptop)
-[2]: https://www.redhat.com/en/topics/open-source/what-is-open-source#the-history-of-open-source?intcmp=7013a000002qLH8AAM
-[3]: https://opensource.com/article/18/2/coining-term-open-source-software
-[4]: https://opensource.com/tags/drupal
-[5]: https://opensource.com/article/19/8/everyday-tech-runs-linux
-[6]: https://www.redhat.com/en/enterprise-open-source-report/2022?intcmp=7013a000002qLH8AAM
-[7]: https://opensource.com/article/21/4/motivates-open-source-contributors
-[8]: https://opensource.com/article/20/6/why-contribute-open-source
-[9]: https://opensource.com/article/22/1/open-source-contributions-career
-[10]: https://opensource.com/life/16/1/8-ways-contribute-open-source-without-writing-code
-[11]: https://opensource.com/article/20/7/mattermost
-[12]: https://opensource.com/article/21/10/open-practice-library
-[13]: https://opensource.com/article/19/11/how-contribute-kubernetes
-[14]: https://opensource.com/article/20/9/open-source-role-diversity
-[15]: https://opensource.com/article/19/12/open-source-contributors
-[16]: https://opensource.com/how-submit-article
diff --git a/translated/tech/20220310 How to use undocumented web APIs.md b/translated/tech/20220310 How to use undocumented web APIs.md
deleted file mode 100644
index d05c04e97c..0000000000
--- a/translated/tech/20220310 How to use undocumented web APIs.md
+++ /dev/null
@@ -1,233 +0,0 @@
-[#]: subject: "How to use undocumented web APIs"
-[#]: via: "https://jvns.ca/blog/2022/03/10/how-to-use-undocumented-web-apis/"
-[#]: author: "Julia Evans https://jvns.ca/"
-[#]: collector: "lujun9972"
-[#]: translator: "lxbwolf"
-[#]: reviewer: " "
-[#]: publisher: " "
-[#]: url: " "
-
-如何调用没有文档说明的 web API
-======
-
-大家好!几天前我写了篇[个人 demo 小程序][1],里面提到了调用没有文档说明的“私有” API 很有意思,你需要从你的浏览器中把 cookies 复制出来才能访问。
-
-有些读者问如何实现,因此我打算详细描述下,其实过程很简单。我们还会涉及一点点在调用没有文档说明的 API 时,可能会遇到的麻烦。
-
-我们用谷歌论坛举例。我之所以选择它,不是因为这个例子最有用(我认为官方的 API 更有实践意义),而是因为在这个场景中更有用的网站很多是小网站,而小网站的 API 一旦被滥用,受到的伤害会更大。因此我们使用谷歌论坛,因为我 100% 肯定谷歌论坛对于这种试探请求可以很快恢复。
-
-我们现在开始!
-
-### 第一步:打开开发者工具,找一个 JSON 响应
-
-我浏览了,在 Firefox 的开发者工具中打开网络标签,找到一个 JSON 响应。你也可以使用 Chrome 的开发者工具。
-
-打开之后界面如下图
-
-![][2]
-
-找到其中一条 “Type” 列显示为 ”json“ 的请求。
-
-为了找一条感兴趣的请求,我找了好一会儿,突然我找到一条 ”people“ 的 endpoint,看起来是返回我们的联系人信息。听起来很有意思,我们来看一下。
-
-### 第二步:复制为 cURL
-
-下一步,我在感兴趣的请求上右键,点击 ”复制“ -> ”复制为 cURL“。
-
-然后我把 `curl` 命令粘贴到终端并运行。下面是运行结果:
-
-```
-
- $ curl 'https://people-pa.clients6.google.com/v2/people/?key=REDACTED' -X POST ........ (a bunch of headers removed)
- Warning: Binary output can mess up your terminal. Use "--output -" to tell
- Warning: curl to output it to your terminal anyway, or consider "--output
- Warning: " to save to a file.
-
-```
-
-你可能会想 —— 很奇怪,”二进制的输出在你的终端上无法正常显示“ 是什么错误?原因是,浏览器默认情况下发给服务器的请求头中有 `Accept-Encoding: gzip, deflate` 参数,会把输出结果进行压缩。
-
-我们可以通过管道把输出传递给 `gunzip` 来解压,但是我们发现不带这个参数进行请求会更简单。因此我们去掉一些不相关的请求头。
-
-### 第三步:去掉不相关的请求头
-
-下面是我从浏览器获得的完整 `curl` 命令。有很多行!我用反斜杠(`\`)把请求分开,这样每个请求头占一行,看起来更清晰。
-
-```
-
- curl 'https://people-pa.clients6.google.com/v2/people/?key=REDACTED' \
- -X POST \
- -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0' \
- -H 'Accept: */*' \
- -H 'Accept-Language: en' \
- -H 'Accept-Encoding: gzip, deflate' \
- -H 'X-HTTP-Method-Override: GET' \
- -H 'Authorization: SAPISIDHASH REDACTED' \
- -H 'Cookie: REDACTED'
- -H 'Content-Type: application/x-www-form-urlencoded' \
- -H 'X-Goog-AuthUser: 0' \
- -H 'Origin: https://hangouts.google.com' \
- -H 'Connection: keep-alive' \
- -H 'Referer: https://hangouts.google.com/' \
- -H 'Sec-Fetch-Dest: empty' \
- -H 'Sec-Fetch-Mode: cors' \
- -H 'Sec-Fetch-Site: same-site' \
- -H 'Sec-GPC: 1' \
- -H 'DNT: 1' \
- -H 'Pragma: no-cache' \
- -H 'Cache-Control: no-cache' \
- -H 'TE: trailers' \
- --data-raw 'personId=101777723309&personId=1175339043204&personId=1115266537043&personId=116731406166&extensionSet.extensionNames=HANGOUTS_ADDITIONAL_DATA&extensionSet.extensionNames=HANGOUTS_OFF_NETWORK_GAIA_GET&extensionSet.extensionNames=HANGOUTS_PHONE_DATA&includedProfileStates=ADMIN_BLOCKED&includedProfileStates=DELETED&includedProfileStates=PRIVATE_PROFILE&mergedPersonSourceOptions.includeAffinity=CHAT_AUTOCOMPLETE&coreIdParams.useRealtimeNotificationExpandedAcls=true&requestMask.includeField.paths=person.email&requestMask.includeField.paths=person.gender&requestMask.includeField.paths=person.in_app_reachability&requestMask.includeField.paths=person.metadata&requestMask.includeField.paths=person.name&requestMask.includeField.paths=person.phone&requestMask.includeField.paths=person.photo&requestMask.includeField.paths=person.read_only_profile_info&requestMask.includeField.paths=person.organization&requestMask.includeField.paths=person.location&requestMask.includeField.paths=person.cover_photo&requestMask.includeContainer=PROFILE&requestMask.includeContainer=DOMAIN_PROFILE&requestMask.includeContainer=CONTACT&key=REDACTED'
-
-```
-
-第一眼看起来内容有很多,但是现在你不需要考虑每一行是什么意思。你只需要把不相关的行删掉就可以了。
-
-我通常通过删掉某行查看是否有错误来验证该行是不是可以删除 —— 只要请求没有错误就一直删请求头。通常情况下,你可以删掉 `Accept*`、`Referer`、`Sec-*`、`DNT`、`User-Agent` 和缓存相关的头。
-
-在这个例子中,我把请求删成下面的样子:
-
-```
-
- curl 'https://people-pa.clients6.google.com/v2/people/?key=REDACTED' \
- -X POST \
- -H 'Authorization: SAPISIDHASH REDACTED' \
- -H 'Content-Type: application/x-www-form-urlencoded' \
- -H 'Origin: https://hangouts.google.com' \
- -H 'Cookie: REDACTED'\
- --data-raw 'personId=101777723309&personId=1175339043204&personId=1115266537043&personId=116731406166&extensionSet.extensionNames=HANGOUTS_ADDITIONAL_DATA&extensionSet.extensionNames=HANGOUTS_OFF_NETWORK_GAIA_GET&extensionSet.extensionNames=HANGOUTS_PHONE_DATA&includedProfileStates=ADMIN_BLOCKED&includedProfileStates=DELETED&includedProfileStates=PRIVATE_PROFILE&mergedPersonSourceOptions.includeAffinity=CHAT_AUTOCOMPLETE&coreIdParams.useRealtimeNotificationExpandedAcls=true&requestMask.includeField.paths=person.email&requestMask.includeField.paths=person.gender&requestMask.includeField.paths=person.in_app_reachability&requestMask.includeField.paths=person.metadata&requestMask.includeField.paths=person.name&requestMask.includeField.paths=person.phone&requestMask.includeField.paths=person.photo&requestMask.includeField.paths=person.read_only_profile_info&requestMask.includeField.paths=person.organization&requestMask.includeField.paths=person.location&requestMask.includeField.paths=person.cover_photo&requestMask.includeContainer=PROFILE&requestMask.includeContainer=DOMAIN_PROFILE&requestMask.includeContainer=CONTACT&key=REDACTED'
-
-```
-
-这样我只需要 4 个请求头:`Authorization`、`Content-Type`、`Origin` 和 `Cookie`。这样容易管理得多。
-
-### 第四步:在 Python 中发请求
-
-现在我们知道了我们需要哪些请求头,我们可以把 `curl` 命令翻译进 Python 程序!这部分是相当机械化的过程,目标仅仅是用 Python 发送与 curl 相同的数据。
-
-下面是代码实例。我们使用 Python 的 `requests` 包实现了与前面 `curl` 命令相同的功能。我把整个长请求分解成了元组的数组,以便看起来更简洁。
-
-```
-
- import requests
- import urllib
-
- data = [
- ('personId','101777723'), # I redacted these IDs a bit too
- ('personId','117533904'),
- ('personId','111526653'),
- ('personId','116731406'),
- ('extensionSet.extensionNames','HANGOUTS_ADDITIONAL_DATA'),
- ('extensionSet.extensionNames','HANGOUTS_OFF_NETWORK_GAIA_GET'),
- ('extensionSet.extensionNames','HANGOUTS_PHONE_DATA'),
- ('includedProfileStates','ADMIN_BLOCKED'),
- ('includedProfileStates','DELETED'),
- ('includedProfileStates','PRIVATE_PROFILE'),
- ('mergedPersonSourceOptions.includeAffinity','CHAT_AUTOCOMPLETE'),
- ('coreIdParams.useRealtimeNotificationExpandedAcls','true'),
- ('requestMask.includeField.paths','person.email'),
- ('requestMask.includeField.paths','person.gender'),
- ('requestMask.includeField.paths','person.in_app_reachability'),
- ('requestMask.includeField.paths','person.metadata'),
- ('requestMask.includeField.paths','person.name'),
- ('requestMask.includeField.paths','person.phone'),
- ('requestMask.includeField.paths','person.photo'),
- ('requestMask.includeField.paths','person.read_only_profile_info'),
- ('requestMask.includeField.paths','person.organization'),
- ('requestMask.includeField.paths','person.location'),
- ('requestMask.includeField.paths','person.cover_photo'),
- ('requestMask.includeContainer','PROFILE'),
- ('requestMask.includeContainer','DOMAIN_PROFILE'),
- ('requestMask.includeContainer','CONTACT'),
- ('key','REDACTED')
- ]
- response = requests.post('https://people-pa.clients6.google.com/v2/people/?key=REDACTED',
- headers={
- 'X-HTTP-Method-Override': 'GET',
- 'Authorization': 'SAPISIDHASH REDACTED',
- 'Content-Type': 'application/x-www-form-urlencoded',
- 'Origin': 'https://hangouts.google.com',
- 'Cookie': 'REDACTED',
- },
- data=urllib.parse.urlencode(data),
- )
-
- print(response.text)
-
-```
-
-我执行这个程序后正常运行 —— 输出了一堆 JSON 数据!太棒了!
-
-你会注意到有些地方我用 `REDACTED` 代替了,因为如果我把原始数据列出来你就可以用我的账号来访问谷歌论坛了,这就很不好了。
-
-### 运行结束!
-
-现在我可以随意修改 Python 程序,比如传入不同的参数,或解析结果等。
-
-我不打算用它来做其他有意思的事了,因为我压根对这个 API 没兴趣,我只是用它来阐述请求 API 的过程。
-
-但是你确实可以对返回的一堆 JSON 做一些处理。
-
-### curlconverter 看起来很强大
-
-有人评论说可以使用自动把 curl 转换成 Python(和一些其他的语言!),这看起来很神奇 —— 我都是手动转的。我在这个例子里使用了它,看起来一切正常。
-
-### 追踪 API 的处理过程并不容易
-
-我不打算夸大追踪 API 处理过程的难度 —— API 的处理过程并不明显!我也不知道传给这个谷歌论坛 API 的一堆参数都是做什么的!
-
-但是有一些参数看起来很直观,比如 `requestMask.includeField.paths=person.email` 可能表示”包含每个人的邮件地址“。因此我只关心我能看懂的参数,不关心看不懂的。
-
-### (理论上)适用于所有场景
-
-可能有人质疑 —— 这个方法适用于所有场景吗?
-
-答案是肯定的 —— 浏览器不是魔法!浏览器发送给你的服务器的所有信息都是 HTTP 请求。因此如果我复制了浏览器发送的所有的 HTTP 请求头,那么后端就会认为请求是从我的浏览器发出的,而不是用 Python 程序发出的。
-
-当然,我们去掉了一些浏览器发送的请求头,因此理论上后端是可以识别出来请求是从浏览器还是 Python 程序发出的,但是它们通常不会检查。
-
-这里有一些对读者的告诫 —— 一些谷歌服务的后端会通过令人难以理解(对我来说是)方式跟前端通信,因此即使理论上你可以模拟前端的请求,但实际上可能行不通。可能会遭受更多攻击的大型 API 会有更多的保护措施。
-
-我们已经知道了如何调用没有文档说明的 API。现在我们再来聊聊可能遇到的问题。
-
-### 问题 1:session cookies 过期
-
-一个大问题是我用我的谷歌 session cookie 作为身份认证,因此当我的浏览器 session 过期后,这个脚本就不能用了。
-
-这意味着这种方式不能长久使用(我宁愿调一个真正的 API),但是如果我只是要一次性快速抓取一小组数据,那么可以使用它。
-
-### 问题 2:滥用
-
-如果我正在请求一个小网站,那么我的 Python 脚本可能会把服务打垮,因为请求数超出了它们的处理能力。因此我请求时尽量谨慎,尽量不过快地发送大量请求。
-
-这尤其重要,因为没有官方 API 的网站往往是些小网站且没有足够的资源。
-
-很明显在这个例子中这不是问题 —— 我认为在写这篇文章的过程我一共向谷歌论坛的后端发送了 20 次请求,他们肯定可以处理。
-
-如果你用自己的账号资格过度访问这个 API 并导致了故障,那么你的账号可能(情理之中)会被暂时封禁。
-
-我只下载我自己的数据或公共的数据 —— 我的目的不是寻找网站的弱点。
-
-### 请记住所有人都可以访问你没有文档说明的 API
-
-我认为本文最重要的信息并不是如何使用其他人没有文档说明的 API。虽然很有趣,但是也有一些限制,而且我也不会经常这么做。
-
-更重要的一点是,任何人都可以这么访问你后端的 API!每个人都有开发者工具和网络标签,查看你传到后端的参数、修改它们都很容易。
-
-因此如果一个人通过修改某些参数来获取其他用户的信息,这不值得提倡。我认为提供公开 API 的大部分开发者们都知道,但是我之所以再提一次,是因为每个初学者都应该了解。:)
-
---------------------------------------------------------------------------------
-
-via: https://jvns.ca/blog/2022/03/10/how-to-use-undocumented-web-apis/
-
-作者:[Julia Evans][a]
-选题:[lujun9972][b]
-译者:[lxbwolf](https://github.com/lxbwolf)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://jvns.ca/
-[b]: https://github.com/lujun9972
-[1]: https://jvns.ca/blog/2022/03/08/tiny-programs/
-[2]: https://jvns.ca/images/network-tab.png
diff --git a/translated/tech/20220518 Five common mistakes when using automation.md b/translated/tech/20220518 Five common mistakes when using automation.md
new file mode 100644
index 0000000000..cf8b52b775
--- /dev/null
+++ b/translated/tech/20220518 Five common mistakes when using automation.md
@@ -0,0 +1,58 @@
+[#]: subject: "Five common mistakes when using automation"
+[#]: via: "https://fedoramagazine.org/five-common-mistakes-when-using-automation/"
+[#]: author: "Gary Scarborough https://fedoramagazine.org/author/gscarbor/"
+[#]: collector: "lujun9972"
+[#]: translator: "geekpi"
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+使用自动化时的五个常见错误
+======
+
+![][1]
+
+背景图片来自 [“Modern Times”(1936)][2],[United Artists][3],公共领域,通过 Wikimedia Commons
+
+随着自动化扩展到涵盖 IT 的更多方面,越来越多的管理员正在学习自动化技能并应用它们来减轻他们的工作量。自动化可以减轻重复性任务的负担,并为基础设施增加一定程度的一致性。但是,当 IT 工作人员部署自动化时,会出现可能对大大小小的基础设施造成严重破坏的常见错误。在自动化部署中通常会出现五个常见错误。
+
+### 缺乏测试
+
+初学者常犯的错误是自动化脚本没有经过全面测试。由于拼写错误或逻辑错误,简单的 shell 脚本可能会对服务器产生不利影响。将该错误乘以基础架构中的服务器数量,你可能会遇到一大堆问题需要清理。在大规模部署之前始终测试你的自动化脚本。
+
+### 意外的服务器负载
+
+经常发生的第二个错误是没有预测脚本可能对其他资源施加的系统负载。当目标是十几个服务器时,运行从仓库下载文件或安装包的脚本可能没问题。脚本通常在成百上千台服务器上运行。这种负载可以使支持服务停止或完全崩溃。不要忘记考虑端点影响或设置合理的并发率。
+
+### 离开脚本
+
+自动化工具的一种用途是确保符合标准设置。自动化可以轻松确保组中的每台服务器都具有完全相同的设置。如果该组中的服务器需要根据该基线进行更改,同时管理员不了解合规标准,那么可能会出现问题。安装和启用不需要和不想要的服务,从而导致可能的安全问题。
+
+### 缺乏文档
+
+管理员的一项固定职责应该是记录他们的工作。由于合同到期、升职或定期员工流动,公司可能会在 IT 部门频繁招聘新员工。公司内的工作组相互隔离也很常见。由于这些原因,重要的是记录哪些自动化已经到位。与用户运行脚本不同,自动化可能会在创建它的人离开组之后继续很长时间。管理员可能会发现自己在其基础设施中面临着来自自动化未经检查的奇怪行为。
+
+### 缺乏经验
+
+列表中的最后一个错误是管理员对他们正在自动化的系统不够了解。管理员经常被雇用到他们没有接受过足够培训且没有人可以学习的职位上工作。自 COVID 以来,当公司努力填补空缺时,这一点尤其重要。然后管理员被迫处理他们没有设置并且可能不完全理解的基础设施。这可能会导致非常低效的脚本浪费资源或配置错误的服务器。
+
+### 结论
+
+越来越多的管理员正在学习自动化来帮助他们完成日常任务。因此,自动化正被应用于更多的技术领域。希望此列表将有助于防止新用户犯这些错误,并敦促经验丰富的管理员重新评估他们的 IT 策略。自动化旨在减轻重复性任务的负担,而不是为最终用户带来更多工作。
+
+--------------------------------------------------------------------------------
+
+via: https://fedoramagazine.org/five-common-mistakes-when-using-automation/
+
+作者:[Gary Scarborough][a]
+选题:[lujun9972][b]
+译者:[geekpi](https://github.com/geekpi)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://fedoramagazine.org/author/gscarbor/
+[b]: https://github.com/lujun9972
+[1]: https://fedoramagazine.org/wp-content/uploads/2022/05/modern-times-816x345.jpg
+[2]: https://en.wikipedia.org/wiki/Modern_Times_(film)
+[3]: https://commons.wikimedia.org/wiki/File:Chaplin_-_Modern_Times.jpg
diff --git a/translated/tech/20220519 Use this open source screen reader on Windows.md b/translated/tech/20220519 Use this open source screen reader on Windows.md
new file mode 100644
index 0000000000..27bcf2fe00
--- /dev/null
+++ b/translated/tech/20220519 Use this open source screen reader on Windows.md
@@ -0,0 +1,69 @@
+[#]: subject: "Use this open source screen reader on Windows"
+[#]: via: "https://opensource.com/article/22/5/open-source-screen-reader-windows-nvda"
+[#]: author: "Peter Cheer https://opensource.com/users/petercheer"
+[#]: collector: "lkxed"
+[#]: translator: "geekpi"
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+
+在 Windows 上使用这个开源屏幕阅读器
+======
+为纪念全球无障碍意识日,了解 NVDA 开源屏幕阅读器,以及你如何参与其中,为所有网络用户提高无障碍性。
+
+![Working from home at a laptop][1]
+图片提供:Opensource.com
+
+屏幕阅读器是辅助技术软件的一个专门领域,它可以阅读并说出计算机屏幕上的内容。完全没有视力的人只是视力障碍者的一小部分,屏幕阅读器软件可以帮助所有群体。屏幕阅读器大多特定于操作系统,供有视觉障碍的人和无障碍培训师使用,以及想要测试网站或应用的无障碍访问程度的开发人员和无障碍顾问。
+
+### 如何使用 NVDA 屏幕阅读器
+
+[WebAIM 屏幕阅读器用户调查][2]始于 2009 年,一直持续到 2021 年。在第一次调查中,最常用的屏幕阅读器是 JAWS,占 74%。它是 Microsoft Windows 的商业产品,并且是长期的市场领导者。 NVDA 当时是一个相对较新的 Windows 开源屏幕阅读器,仅占 8%。快进到 2021 年,JAWS 占 53.7%,NVDA 占 30.7%。
+
+你可以从 [NVAccess 网站][3]下载最新版本的 NVDA。为什么我要使用 NVDA 并将它推荐给我使用微软 Windows 的客户?嗯,它是开源的,速度快,功能强大,易于安装,支持多种语言,可以作为便携式应用运行,拥有庞大的用户群,并且有定期发布新版本的周期。
+
+NVDA 已被翻译成 55 种语言,并在 175 个不同的国家/地区使用。还有一个活跃的开发者社区,拥有自己的[社区插件网站][4]。你选择安装的任何附加组件都将取决于你的需求,并且有很多可供选择,包括常见视频会议平台的扩展。
+
+与所有屏幕阅读器一样,NVDA 有很多组合键需要学习。熟练使用任何屏幕阅读器都需要培训和练习。
+
+![Image of NVDA welcome screen][5]
+
+向熟悉计算机和会使用键盘的人教授 NVDA 并不太难。向一个完全初学者教授基本的计算机技能(没有鼠标、触摸板和键盘技能)和使用 NVDA 是一个更大的挑战。个人的学习方式和偏好不同。此外,如果人们只想浏览网页和使用电子邮件,他们可能不需要学习如何做所有事情。NVDA 教程和资源的一个很好的链接来源是[无障碍中心][6]。
+
+当你掌握了使用键盘命令操作 NVDA,它就会变得更容易,但是还有一个菜单驱动的系统可以完成许多配置任务。
+
+![Image of NVDA menu][7]
+
+### 测试无障碍性
+
+多年来,屏幕阅读器用户无法访问某些网站一直是个问题,尽管美国残疾人法案(ADA)等残疾人平等立法仍然存在。 NVDA 在有视力的社区中的一个很好的用途是用于网站无障碍性测试。NVDA 可以免费下载,并且通过运行便携式版本,网站开发人员甚至不需要安装它。运行 NVDA,关闭显示器或闭上眼睛,看看你在浏览网站或应用时的表现如何。
+
+NVDA 也可用于测试(通常被忽略的)正确[标记 PDF 文档以实现无障碍性][8]任务。
+
+有几个指南专注于使用 NVDA 进行无障碍性测试。我可以推荐[使用 NVDA 测试网页][9]和使用 [NVDA 评估 Web 无障碍性][10]。
+
+图片提供:(Peter Cheer,CC BY-SA 4.0)
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/22/5/open-source-screen-reader-windows-nvda
+
+作者:[Peter Cheer][a]
+选题:[lkxed][b]
+译者:[geekpi](https://github.com/geekpi)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/petercheer
+[b]: https://github.com/lkxed
+[1]: https://opensource.com/sites/default/files/lead-images/wfh_work_home_laptop_work.png
+[2]: https://webaim.org/projects
+[3]: https://www.nvaccess.org
+[4]: https://addons.nvda-project.org/index.en.html
+[5]: https://opensource.com/sites/default/files/2022-05/nvda1.png
+[6]: http://www.accessibilitycentral.net/
+[7]: https://opensource.com/sites/default/files/2022-05/nvda2.png
+[8]: https://www.youtube.com/watch?v=rRzWRk6cXIE
+[9]: https://www.unimelb.edu.au/accessibility/tools/testing-web-pages-with-nvda
+[10]: https://webaim.org/articles/nvda
diff --git a/translated/tech/20220524 Collision- Linux App to Verify ISO and Other Files.md b/translated/tech/20220524 Collision- Linux App to Verify ISO and Other Files.md
new file mode 100644
index 0000000000..7d59ad4431
--- /dev/null
+++ b/translated/tech/20220524 Collision- Linux App to Verify ISO and Other Files.md
@@ -0,0 +1,130 @@
+[#]: 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: " "
+[#]: publisher: " "
+[#]: url: " "
+
+Collision:用于验证 ISO 和其他文件的 Linux 应用
+======
+本教程概述了 Collision 的功能和使用指南。它是一个基于 GUI 且易于使用的程序,可让你使用加密哈希函数验证文件。
+
+### 为什么需要验证文件?
+
+每个人每天都通过 Internet 下载文件。但许多用户从不费心去验证他们的完整性或真实性。这意味着该文件是否合法且未被任何恶意代码篡改。
+
+以作为标准安装镜像的 [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)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.debugpoint.com/author/admin1/
+[b]: https://github.com/lkxed
+[1]: https://www.debugpoint.com/category/distributions
+[2]: https://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/translated/tech/20220525 Package is -set to manually installed-- What does it Mean-.md b/translated/tech/20220525 Package is -set to manually installed-- What does it Mean-.md
new file mode 100644
index 0000000000..13f06a1f14
--- /dev/null
+++ b/translated/tech/20220525 Package is -set to manually installed-- What does it Mean-.md
@@ -0,0 +1,95 @@
+[#]: 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: " "
+[#]: publisher: " "
+[#]: url: " "
+
+软件包 “set to manually installed”?这是什么意思?
+======
+如果你使用 apt 命令在终端中安装软件包,你将看到各种输出。
+
+如果你注意并查看输出,有时你会注意到一条消息:
+
+**package_name set to manually installed**
+
+你有没有想过这条消息是什么意思,为什么你没有在所有包上看到它?让我在本篇中分享一些细节。
+
+### 理解 “Package set to manually installed”
+
+当你尝试安装已安装的库或开发包时,你会看到此消息。此依赖包是与另一个包一起自动安装的。如果删除了主包,则使用 apt autoremove 命令删除依赖包。
+
+但是由于你试图显式安装依赖包,你的 Ubuntu 系统认为你需要这个包独立于主包。因此,该软件包被标记为手动安装,因此不会自动删除。
+
+不是很清楚,对吧?以[在 Ubuntu 上安装 VLC][1] 为例。
+
+由于主 vlc 包依赖于许多其他包,因此这些包会自动安装。
+
+![installing vlc with apt ubuntu][2]
+
+如果你检查名称中包含 vlc 的[已安装软件包列表][3],你会看到除了 vlc,其余都标记为“自动”。这表明这些软件包是自动安装的(使用 vlc),它们将使用 apt autoremove 命令自动删除(当 vlc 被卸载时)。
+
+![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 包名
+```
+
+![set package to automatic][9]
+
+### 结论
+
+这不是一个重大错误,也不会阻止你在系统中进行工作。但是,了解这些小事会增加你的知识。
+
+**好奇心可能会害死猫,但它会让企鹅变得更聪明**。这是为这篇原本枯燥的文章增添幽默感的原始引述 :)
+
+如果你想阅读更多这样的文章,这些文章可能看起来微不足道,但可以帮助你更好地了解您的 Linux 系统,请告诉我。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/package-set-manually-installed/
+
+作者:[Abhishek Prakash][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://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