mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-02-28 01:01:09 +08:00
commit
eff49aa363
214
published/20180712 An introduction to Go arrays and slices.md
Normal file
214
published/20180712 An introduction to Go arrays and slices.md
Normal file
@ -0,0 +1,214 @@
|
||||
[#]: subject: "An introduction to Go arrays and slices"
|
||||
[#]: via: "https://opensource.com/article/18/7/introduction-go-arrays-and-slices"
|
||||
[#]: author: "Mihalis Tsoukalos https://opensource.com/users/mtsouk"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14665-1.html"
|
||||
|
||||
Go 数组和切片的介绍
|
||||
======
|
||||
|
||||

|
||||
|
||||
> 了解使用数组和切片在 Go 中存储数据的优缺点,以及为什么其中一个更好。
|
||||
|
||||
在本系列的第四篇文章中,我将解释 [Go][5] 数组和切片,包括如何使用它们,以及为什么你通常要选择其中一个而不是另一个。
|
||||
|
||||
### 数组
|
||||
|
||||
数组是编程语言中最流行的数据结构之一,主要原因有两个:一是简单易懂,二是可以存储许多不同类型的数据。
|
||||
|
||||
你可以声明一个名为 `anArray` 的 Go 数组,该数组存储四个整数,如下所示:
|
||||
|
||||
```
|
||||
anArray := [4]int{-1, 2, 0, -4}
|
||||
```
|
||||
|
||||
数组的大小应该在它的类型之前声明,而类型应该在声明元素之前定义。`len()` 函数可以帮助你得到任何数组的长度。上面数组的大小是 4。
|
||||
|
||||
如果你熟悉其他编程语言,你可能会尝试使用 `for` 循环来遍历数组。Go 当然也支持 `for` 循环,不过,正如你将在下面看到的,Go 的 `range` 关键字可以让你更优雅地遍历数组或切片。
|
||||
|
||||
最后,你也可以定义一个二维数组,如下:
|
||||
|
||||
```
|
||||
twoD := [3][3]int{
|
||||
{1, 2, 3},
|
||||
{6, 7, 8},
|
||||
{10, 11, 12}}
|
||||
```
|
||||
|
||||
`arrays.go` 源文件中包含了 Go 数组的示例代码。其中最重要的部分是:
|
||||
|
||||
```
|
||||
for i := 0; i < len(twoD); i++ {
|
||||
k := twoD[i]
|
||||
for j := 0; j < len(k); j++ {
|
||||
fmt.Print(k[j], " ")
|
||||
}
|
||||
fmt.Println()
|
||||
}
|
||||
|
||||
for _, a := range twoD {
|
||||
for _, j := range a {
|
||||
fmt.Print(j, " ")
|
||||
}
|
||||
fmt.Println()
|
||||
}
|
||||
```
|
||||
|
||||
通过上述代码,我们知道了如何使用 `for` 循环和 `range` 关键字迭代数组的元素。`arrays.go` 的其余代码则展示了如何将数组作为参数传递给函数。
|
||||
|
||||
以下是 `arrays.go` 的输出:
|
||||
|
||||
```
|
||||
$ go run arrays.go
|
||||
Before change(): [-1 2 0 -4]
|
||||
After change(): [-1 2 0 -4]
|
||||
1 2 3
|
||||
6 7 8
|
||||
10 11 12
|
||||
1 2 3
|
||||
6 7 8
|
||||
10 11 12
|
||||
```
|
||||
|
||||
这个输出告诉我们:对函数内的数组所做的更改,会在函数退出后丢失。
|
||||
|
||||
### 数组的缺点
|
||||
|
||||
Go 数组有很多缺点,你应该重新考虑是否要在 Go 项目中使用它们。
|
||||
|
||||
首先,数组定义之后,大小就无法改变,这意味着 Go 数组不是动态的。简而言之,如果你需要将一个元素添加到一个没有剩余空间的数组中,你将需要创建一个更大的数组,并将旧数组的所有元素复制到新数组中。
|
||||
|
||||
其次,当你将数组作为参数传递给函数时,实际上是传递了数组的副本,这意味着你对函数内部的数组所做的任何更改,都将在函数退出后丢失。
|
||||
|
||||
最后,将大数组传递给函数可能会很慢,主要是因为 Go 必须创建数组的副本。
|
||||
|
||||
以上这些问题的解决方案,就是使用 Go 切片。
|
||||
|
||||
### 切片
|
||||
|
||||
Go 切片与 Go 数组类似,但是它没有后者的缺点。
|
||||
|
||||
首先,你可以使用 `append()` 函数将元素添加到现有切片中。此外,Go 切片在内部使用数组实现,这意味着 Go 中每个切片都有一个底层数组。
|
||||
|
||||
切片具有 `capacity` 属性和 `length` 属性,它们并不总是相同的。切片的长度与元素个数相同的数组的长度相同,可以使用 `len()` 函数得到。切片的容量是当前为切片分配的空间,可以使用 `cap()` 函数得到。
|
||||
|
||||
由于切片的大小是动态的,如果切片空间不足(也就是说,当你尝试再向切片中添加一个元素时,底层数组的长度恰好与容量相等),Go 会自动将它的当前容量加倍,使其空间能够容纳更多元素,然后将请求的元素添加到底层数组中。
|
||||
|
||||
此外,切片是通过引用传递给函数的,这意味着实际传递给函数的是切片变量的内存地址,这样一来,你对函数内部的切片所做的任何修改,都不会在函数退出后丢失。因此,将大切片传递给函数,要比将具有相同数量元素的数组传递给同一函数快得多。这是因为 Go 不必拷贝切片 —— 它只需传递切片变量的内存地址。
|
||||
|
||||
`slice.go` 源文件中有 Go 切片的代码示例,其中包含以下代码:
|
||||
|
||||
```
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func negative(x []int) {
|
||||
for i, k := range x {
|
||||
x[i] = -k
|
||||
}
|
||||
}
|
||||
|
||||
func printSlice(x []int) {
|
||||
for _, number := range x {
|
||||
fmt.Printf("%d ", number)
|
||||
}
|
||||
fmt.Println()
|
||||
}
|
||||
|
||||
func main() {
|
||||
s := []int{0, 14, 5, 0, 7, 19}
|
||||
printSlice(s)
|
||||
negative(s)
|
||||
printSlice(s)
|
||||
|
||||
fmt.Printf("Before. Cap: %d, length: %d\n", cap(s), len(s))
|
||||
s = append(s, -100)
|
||||
fmt.Printf("After. Cap: %d, length: %d\n", cap(s), len(s))
|
||||
printSlice(s)
|
||||
|
||||
anotherSlice := make([]int, 4)
|
||||
fmt.Printf("A new slice with 4 elements: ")
|
||||
printSlice(anotherSlice)
|
||||
}
|
||||
```
|
||||
|
||||
切片和数组在定义方式上的最大区别就在于:你不需要指定切片的大小。实际上,切片的大小取决于你要放入其中的元素数量。此外,`append()` 函数允许你将元素添加到现有切片 —— 请注意,即使切片的容量允许你将元素添加到该切片,它的长度也不会被修改,除非你调用 `append()`。上述代码中的 `printSlice()` 函数是一个辅助函数,用于打印切片中的所有元素,而 `negative()` 函数将切片中的每个元素都变为各自的相反数。
|
||||
|
||||
运行 `slice.go` 将得到以下输出:
|
||||
|
||||
```
|
||||
$ go run slice.go
|
||||
0 14 5 0 7 19
|
||||
0 -14 -5 0 -7 -19
|
||||
Before. Cap: 6, length: 6
|
||||
After. Cap: 12, length: 7
|
||||
0 -14 -5 0 -7 -19 -100
|
||||
A new slice with 4 elements: 0 0 0 0
|
||||
```
|
||||
|
||||
请注意,当你创建一个新切片,并为给定数量的元素分配内存空间时,Go 会自动地将所有元素都初始化为其类型的零值,在本例中为 0(`int` 类型的零值)。
|
||||
|
||||
### 使用切片来引用数组
|
||||
|
||||
Go 允许你使用 `[:]` 语法,使用切片来引用现有的数组。在这种情况下,你对切片所做的任何更改都将传播到数组中 —— 详见 `refArray.go`。请记住,使用 `[:]` 不会创建数组的副本,它只是对数组的引用。
|
||||
|
||||
`refArray.go` 中最有趣的部分是:
|
||||
|
||||
```
|
||||
func main() {
|
||||
anArray := [5]int{-1, 2, -3, 4, -5}
|
||||
refAnArray := anArray[:]
|
||||
|
||||
fmt.Println("Array:", anArray)
|
||||
printSlice(refAnArray)
|
||||
negative(refAnArray)
|
||||
fmt.Println("Array:", anArray)
|
||||
}
|
||||
```
|
||||
|
||||
运行 `refArray.go`,输出如下:
|
||||
|
||||
```
|
||||
$ go run refArray.go
|
||||
Array: [-1 2 -3 4 -5]
|
||||
-1 2 -3 4 -5
|
||||
Array: [1 -2 3 -4 5]
|
||||
```
|
||||
|
||||
我们可以发现:对 `anArray` 数组的切片引用进行了操作后,它本身也被改变了。
|
||||
|
||||
### 总结
|
||||
|
||||
尽管 Go 提供了数组和切片两种类型,你很可能还是会使用切片,因为它们比 Go 数组更加通用、强大。只有少数情况需要使用数组而不是切片,特别是当你完全确定元素的数量固定不变时。
|
||||
|
||||
你可以在 [GitHub][6] 上找到 `arrays.go`、`slice.go` 和 `refArray.go` 的源代码。
|
||||
|
||||
如果你有任何问题或反馈,请在下方发表评论或在 [Twitter][7] 上与我联系。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/18/7/introduction-go-arrays-and-slices
|
||||
|
||||
作者:[Mihalis Tsoukalos][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[lkxed](https://github.com/lkxed)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/mtsouk
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://opensource.com/sites/default/files/lead-images/traffic-light-go.png
|
||||
[2]: https://opensource.com/article/18/5/creating-random-secure-passwords-go
|
||||
[3]: https://opensource.com/article/18/5/building-concurrent-tcp-server-go
|
||||
[4]: https://opensource.com/article/18/6/copying-files-go
|
||||
[5]: https://golang.org/
|
||||
[6]: https://github.com/mactsouk/opensource.com
|
||||
[7]: https://twitter.com/mactsouk
|
@ -0,0 +1,200 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (FYJNEVERFOLLOWS)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-14668-1.html)
|
||||
[#]: subject: (Learn awk by coding a "guess the number" game)
|
||||
[#]: via: (https://opensource.com/article/21/1/learn-awk)
|
||||
[#]: author: (Chris Hermansen https://opensource.com/users/clhermansen)
|
||||
|
||||
通过编写“猜数字”游戏来学习 Awk
|
||||
======
|
||||
|
||||
> 编程语言往往具有许多共同特征。学习一门新语言的好方法是去写一个熟悉的程序。在本文中,我将会使用 Awk 编写一个“猜数字”程序来展示熟悉的概念。
|
||||
|
||||

|
||||
|
||||
当你学习一门新的编程语言时,最好把重点放在大多数编程语言都有的共同点上:
|
||||
|
||||
* 变量 —— 存储信息的地方
|
||||
* 表达式 —— 计算的方法
|
||||
* 语句 —— 在程序中表示状态变化的方法
|
||||
|
||||
这些概念是大多是编程语言的基础。
|
||||
|
||||
一旦你理解了这些概念,你就可以开始把其他的弄清楚。例如,大多数语言都有由其设计所支持的“处理方式”,这些方式在不同语言之间可能有很大的不同。这些方法包括模块化(将相关功能分组在一起)、声明式与命令式、面向对象、低级与高级语法特性等等。许多程序员比较熟悉的是编程“仪式”,即,在处理问题之前设置场景所需花费的工作。据说 Java 编程语言有一个源于其设计的重要仪式要求,就是所有代码都在一个类中定义。
|
||||
|
||||
但从根本上讲,编程语言通常有相似之处。一旦你掌握了一种编程语言,就可以从学习另一种语言的基本知识开始,品味这种新语言的不同之处。
|
||||
|
||||
一个好方法是创建一组基本的测试程序。有了这些,就可以从这些相似之处开始学习。
|
||||
|
||||
你可以选择创建的一个测试程序是“猜数字”程序。电脑从 1 到 100 之间选择一个数字,让你猜这个数字。程序一直循环,直到你猜对为止。
|
||||
|
||||
“猜数字”程序练习了编程语言中的几个概念:
|
||||
|
||||
* 变量
|
||||
* 输入
|
||||
* 输出
|
||||
* 条件判断
|
||||
* 循环
|
||||
|
||||
这是学习一门新的编程语言的一个很好的实践实验。
|
||||
|
||||
**注**:本文改编自 Moshe Zadka 在 [Julia][2] 中使用这种方法和 Jim Hall在 [Bash][3] 中使用这种方法的文章。
|
||||
|
||||
### 在 awk 程序中猜数
|
||||
|
||||
让我们编写一个实现“猜数字”游戏的 Awk 程序。
|
||||
|
||||
Awk 是动态类型的,这是一种面向数据转换的脚本语言,并且对交互使用有着令人惊讶的良好支持。Awk 出现于 20 世纪 70 年代,最初是 Unix 操作系统的一部分。如果你不了解 Awk,但是喜欢电子表格,这就是一个你可以 [去学习 Awk][4] 的信号!
|
||||
|
||||
您可以通过编写一个“猜数字”游戏版本来开始对 Awk 的探索。
|
||||
|
||||
以下是我的实现(带有行号,以便我们可以查看一些特定功能):
|
||||
|
||||
```
|
||||
1 BEGIN {
|
||||
2 srand(42)
|
||||
3 randomNumber = int(rand() * 100) + 1
|
||||
4 print "random number is",randomNumber
|
||||
5 printf "guess a number between 1 and 100\n"
|
||||
6 }
|
||||
7 {
|
||||
8 guess = int($0)
|
||||
9 if (guess < randomNumber) {
|
||||
10 printf "too low, try again:"
|
||||
11 } else if (guess > randomNumber) {
|
||||
12 printf "too high, try again:"
|
||||
13 } else {
|
||||
14 printf "that's right\n"
|
||||
15 exit
|
||||
16 }
|
||||
17 }
|
||||
```
|
||||
|
||||
我们可以立即看到 Awk 控制结构与 C 或 Java 的相似之处,但与 Python 不同。
|
||||
在像 `if-then-else`、`while` 这样的语句中,`then`、`else` 和 `while` 部分接受一个语句或一组被 `{` 和 `}` 包围的语句。然而,Awk 有一个很大的区别需要从一开始就了解:
|
||||
|
||||
根据设计,Awk 是围绕数据管道构建的。
|
||||
|
||||
这是什么意思呢?大多数 Awk 程序都是一些代码片段,它们接收一行输入,对数据做一些处理,然后将其写入输出。认识到这种转换管道的需要,Awk 默认情况下提供了所有的转换管道。让我们通过关于上面程序的一个基本问题来探索:“从控制台读取数据”的结构在哪里?
|
||||
|
||||
答案是——“内置的”。特别的,第 7-17 行告诉 Awk 如何处理被读取的每一行。在这种情况下,很容易看到第 1-6 行是在读取任何内容之前被执行的。
|
||||
|
||||
更具体地说,第 1 行上的 `BEGIN` 关键字是一种“模式”,在本例中,它指示 Awk 在读取任何数据之前,应该先执行 `{ ... }` 中 `BEGIN` 后面的内容。另一个类似的关键字 `END`,在这个程序中没有被使用,它指示 Awk 在读取完所有内容后要做什么。
|
||||
|
||||
回到第 7-17 行,我们看到它们创建了一个类似代码块 `{ ... }` 的片段,但前面没有关键字。因为在 `{` 之前没有任何东西可以让 Awk 匹配,所以它将把这一行用于接收每一行输入。每一行的输入都将由用户输入作为猜测。
|
||||
|
||||
让我们看看正在执行的代码。首先,是在读取任何输入之前发生的序言部分。
|
||||
|
||||
在第 2 行,我们用数字 42 初始化随机数生成器(如果不提供参数,则使用系统时钟)。为什么要用 42?[当然要选 42!][5] 第 3 行计算 1 到 100 之间的随机数,第 4 行输出该随机数以供调试使用。第 5 行邀请用户猜一个数字。注意这一行使用的是 `printf`,而不是 `print`。和 C 语言一样,`printf` 的第一个参数是一个用于格式化输出的模板。
|
||||
|
||||
既然用户知道程序需要输入,她就可以在控制台上键入猜测。如前所述,Awk 将这种猜测提供给第 7-17 行的代码。第 18 行将输入记录转换为整数;`$0` 表示整个输入记录,而 `$1` 表示输入记录的第一个字段,`$2` 表示第二个字段,以此类推。是的,Awk 使用预定义的分隔符(默认为空格)将输入行分割为组成字段。第 9-15 行将猜测结果与随机数进行比较,打印适当的响应。如果猜对了,第 15 行就会从输入行处理管道中提前退出。
|
||||
|
||||
就这么简单!
|
||||
|
||||
考虑到 Awk 程序不同寻常的结构,代码片段会对特定的输入行配置做出反应,并处理数据,让我们看看另一种结构,看看过滤部分是如何工作的:
|
||||
|
||||
```
|
||||
1 BEGIN {
|
||||
2 srand(42)
|
||||
3 randomNumber = int(rand() * 100) + 1
|
||||
4 print "random number is",randomNumber
|
||||
5 printf "guess a number between 1 and 100\n"
|
||||
6 }
|
||||
7 int($0) < randomNumber {
|
||||
8 printf "too low, try again: "
|
||||
9 }
|
||||
10 int($0) > randomNumber {
|
||||
11 printf "too high, try again: "
|
||||
12 }
|
||||
13 int($0) == randomNumber {
|
||||
14 printf "that's right\n"
|
||||
15 exit
|
||||
16 }
|
||||
```
|
||||
|
||||
第 1–6 行代码没有改变。但是现在我们看到第 7-9 行是当输入整数值小于随机数时执行的代码,第 10-12 行是当输入整数值大于随机数时执行的代码,第 13-16 行是两者相等时执行的代码。
|
||||
|
||||
这看起来“很酷但很奇怪” —— 例如,为什么我们会重复计算 `int($0)`?可以肯定的是,用这种方法来解决问题会很奇怪。但这些模式确实是分离条件处理的非常好的方式,因为它们可以使用正则表达式或 Awk 支持的任何其他结构。
|
||||
|
||||
为了完整起见,我们可以使用这些模式将普通的计算与只适用于特定环境的计算分离开来。下面是第三个版本:
|
||||
|
||||
```
|
||||
1 BEGIN {
|
||||
2 srand(42)
|
||||
3 randomNumber = int(rand() * 100) + 1
|
||||
4 print "random number is",randomNumber
|
||||
5 printf "guess a number between 1 and 100\n"
|
||||
6 }
|
||||
7 {
|
||||
8 guess = int($0)
|
||||
9 }
|
||||
10 guess < randomNumber {
|
||||
11 printf "too low, try again: "
|
||||
12 }
|
||||
13 guess > randomNumber {
|
||||
14 printf "too high, try again: "
|
||||
15 }
|
||||
16 guess == randomNumber {
|
||||
17 printf "that's right\n"
|
||||
18 exit
|
||||
19 }
|
||||
```
|
||||
|
||||
认识到这一点,无论输入的是什么值,都需要将其转换为整数,因此我们创建了第 7-9 行来完成这一任务。现在第 10-12、13-15 和 16-19 行这三组代码,都是指已经定义好的变量 guess,而不是每次都对输入行进行转换。
|
||||
|
||||
让我们回到我们想要学习的东西列表:
|
||||
|
||||
* 变量 —— 是的,Awk 有这些;我们可以推断出,输入数据以字符串形式输入,但在需要时可以转换为数值
|
||||
* 输入 —— Awk 只是通过它的“数据转换管道”的方式发送输入来读取数据
|
||||
* 输出 —— 我们已经使用了 Awk 的 `print` 和 `printf` 函数来将内容写入输出
|
||||
* 条件判断 —— 我们已经学习了 Awk 的 `if-then-else` 和对应特定输入行配置的输入过滤器
|
||||
* 循环 —— 嗯,想象一下!我们在这里不需要循环,这还是多亏了 Awk 采用的“数据转换管道”方法;循环“就这么发生了”。注意,用户可以通过向 Awk 发送一个文件结束信号(当使用 Linux 终端窗口时可通过快捷键 `CTRL-D`)来提前退出管道。
|
||||
|
||||
不需要循环来处理输入的重要性是非常值得的。Awk 能够长期保持存在的一个原因是 Awk 程序是紧凑的,而它们紧凑的一个原因是不需要从控制台或文件中读取的那些格式代码。
|
||||
|
||||
让我们运行下面这个程序:
|
||||
|
||||
```
|
||||
$ awk -f guess.awk
|
||||
random number is 25
|
||||
guess a number between 1 and 100: 50
|
||||
too high, try again: 30
|
||||
too high, try again: 10
|
||||
too low, try again: 25
|
||||
that's right
|
||||
$
|
||||
```
|
||||
|
||||
我们没有涉及的一件事是注释。Awk 注释以 `#` 开头,以行尾结束。
|
||||
|
||||
### 总结
|
||||
|
||||
Awk 非常强大,这种“猜数字”游戏是入门的好方法。但这不应该是你探索 Awk 的终点。你可以看看 [Awk 和 Gawk(GNU Awk)的历史][6],Gawk 是 Awk 的扩展版本,如果你在电脑上运行 Linux,可能会有这个。或者,从它的原始开发者那里阅读关于 [最初版本][7] 的各种信息。
|
||||
|
||||
你还可以 [下载我们的备忘单][8] 来帮你记录下你所学的一切。
|
||||
|
||||
> **[Awk 备忘单][8]**
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/21/1/learn-awk
|
||||
|
||||
作者:[Chris Hermansen][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[FYJNEVERFOLLOWS](https://github.com/FYJNEVERFOLLOWS)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/clhermansen
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/question-mark_chalkboard.jpg?itok=DaG4tje9 (question mark in chalk)
|
||||
[2]: https://opensource.com/article/20/12/julia
|
||||
[3]: https://opensource.com/article/20/12/learn-bash
|
||||
[4]: https://opensource.com/article/20/9/awk-ebook
|
||||
[5]: https://en.wikipedia.org/wiki/42_(number)#The_Hitchhiker's_Guide_to_the_Galaxy
|
||||
[6]: https://www.gnu.org/software/gawk/manual/html_node/History.html
|
||||
[7]: https://archive.org/details/pdfy-MgN0H1joIoDVoIC7
|
||||
[8]: https://opensource.com/downloads/cheat-sheet-awk-features
|
@ -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()`,并提供一个<ruby>种子<rt>seed</rt></ruby>值,以初始化随机数生成器。如果你始终使用相同的种子值,随机数生成器将生成相同的随机整数序列。
|
||||
|
||||
![随机数生成代码][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
|
153
published/202205/20180529 Build a concurrent TCP server in Go.md
Normal file
153
published/202205/20180529 Build a concurrent TCP server in Go.md
Normal file
@ -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
|
216
published/202205/20180625 3 ways to copy files in Go.md
Normal file
216
published/202205/20180625 3 ways to copy files in Go.md
Normal file
@ -0,0 +1,216 @@
|
||||
[#]: subject: "3 ways to copy files in Go"
|
||||
[#]: via: "https://opensource.com/article/18/6/copying-files-go"
|
||||
[#]: author: "Mihalis Tsoukalos https://opensource.com/users/mtsouk"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14658-1.html"
|
||||
|
||||
在 Go 中复制文件的三种方法
|
||||
======
|
||||
|
||||

|
||||
|
||||
> 本文是 Go 系列的第三篇文章,我将介绍三种最流行的复制文件的方法。
|
||||
|
||||
本文将介绍展示如何使用 [Go 编程语言][3] 来复制文件。在 Go 中复制文件的方法有很多,我只介绍三种最常见的:使用 Go 库中的 `io.Copy()` 函数调用、一次读取输入文件并将其写入另一个文件,以及使用缓冲区一块块地复制文件。
|
||||
|
||||
### 方法一:使用 io.Copy()
|
||||
|
||||
第一种方法就是使用 Go 标准库的 `io.Copy()` 函数。你可以在 `copy()` 函数的代码中找到它的实现逻辑,如下所示:
|
||||
|
||||
```
|
||||
func copy(src, dst string) (int64, error) {
|
||||
sourceFileStat, err := os.Stat(src)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
if !sourceFileStat.Mode().IsRegular() {
|
||||
return 0, fmt.Errorf("%s is not a regular file", src)
|
||||
}
|
||||
|
||||
source, err := os.Open(src)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
defer source.Close()
|
||||
|
||||
destination, err := os.Create(dst)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
defer destination.Close()
|
||||
nBytes, err := io.Copy(destination, source)
|
||||
return nBytes, err
|
||||
}
|
||||
```
|
||||
|
||||
首先,上述代码做了两个判断,以便确定它可以被打开读取:一是判断将要复制的文件是否存在(`os.Stat(src)`),二是判断它是否为常规文件(`sourceFileStat.Mode().IsRegular()`)。剩下的所有工作都由 `io.Copy(destination, source)` 这行代码来完成。`io.Copy()` 函数执行结束后,会返回复制的字节数和复制过程中发生的第一条错误消息。在 Go 中,如果没有错误消息,错误变量的值就为 `nil`。
|
||||
|
||||
你可以在 [io 包][4] 的文档页面了解有关 `io.Copy()` 函数的更多信息。
|
||||
|
||||
运行 `cp1.go` 将产生以下输出:
|
||||
|
||||
```
|
||||
$ go run cp1.go
|
||||
Please provide two command line arguments!
|
||||
$ go run cp1.go fileCP.txt /tmp/fileCPCOPY
|
||||
Copied 3826 bytes!
|
||||
$ diff fileCP.txt /tmp/fileCPCOPY
|
||||
```
|
||||
|
||||
这个方法已经非常简单了,不过它没有为开发者提供灵活性。这并不总是一件坏事,但是,有些时候,开发者可能会需要/想要告诉程序该如何读取文件。
|
||||
|
||||
### 方法二:使用 ioutil.WriteFile() 和 ioutil.ReadFile()
|
||||
|
||||
复制文件的第二种方法是使用 `ioutil.ReadFile()` 和 `ioutil.WriteFile()` 函数。第一个函数用于将整个文件的内容,一次性地读入到某个内存中的字节切片里;第二个函数则用于将字节切片的内容写入到一个磁盘文件中。
|
||||
|
||||
实现代码如下:
|
||||
|
||||
```
|
||||
input, err := ioutil.ReadFile(sourceFile)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
err = ioutil.WriteFile(destinationFile, input, 0644)
|
||||
if err != nil {
|
||||
fmt.Println("Error creating", destinationFile)
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
```
|
||||
|
||||
上述代码包括了两个 `if` 代码块(嗯,用 Go 写程序就是这样的),程序的实际功能其实体现在 `ioutil.ReadFile()` 和 `ioutil.WriteFile()` 这两行代码中。
|
||||
|
||||
运行 `cp2.go`,你会得到下面的输出:
|
||||
|
||||
```
|
||||
$ go run cp2.go
|
||||
Please provide two command line arguments!
|
||||
$ go run cp2.go fileCP.txt /tmp/copyFileCP
|
||||
$ diff fileCP.txt /tmp/copyFileCP
|
||||
```
|
||||
|
||||
请注意,虽然这种方法能够实现文件复制,但它在复制大文件时的效率可能不高。这是因为当文件很大时,`ioutil.ReadFile()` 返回的字节切片会很大。
|
||||
|
||||
### 方法三:使用 os.Read() 和 os.Write()
|
||||
|
||||
在 Go 中复制文件的第三种方法就是下面要介绍的 `cp3.go`。它接受三个参数:输入文件名、输出文件名和缓冲区大小。
|
||||
|
||||
`cp3.go` 最重要的部分位于以下 `for` 循环中,你可以在 `copy()` 函数中找到它,如下所示:
|
||||
|
||||
```
|
||||
buf := make([]byte, BUFFERSIZE)
|
||||
for {
|
||||
n, err := source.Read(buf)
|
||||
if err != nil && err != io.EOF {
|
||||
return err
|
||||
}
|
||||
if n == 0 {
|
||||
break
|
||||
}
|
||||
|
||||
if _, err := destination.Write(buf[:n]); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
该方法使用 `os.Read()` 将输入文件的一小部分读入名为 `buf` 的缓冲区,然后使用 `os.Write()` 将该缓冲区的内容写入文件。当读取出错或到达文件末尾(`io.EOF`)时,复制过程将停止。
|
||||
|
||||
运行 `cp3.go`,你会得到下面的输出:
|
||||
|
||||
```
|
||||
$ go run cp3.go
|
||||
usage: cp3 source destination BUFFERSIZE
|
||||
$ go run cp3.go fileCP.txt /tmp/buf10 10
|
||||
Copying fileCP.txt to /tmp/buf10
|
||||
$ go run cp3.go fileCP.txt /tmp/buf20 20
|
||||
Copying fileCP.txt to /tmp/buf20
|
||||
```
|
||||
|
||||
在接下来的基准测试中,你会发现,缓冲区的大小极大地影响了 `cp3.go` 的性能。
|
||||
|
||||
### 运行基准测试
|
||||
|
||||
在本文的最后一部分,我将尝试比较这三个程序以及 `cp3.go` 在不同缓冲区大小下的性能(使用 `time(1)` 命令行工具)。
|
||||
|
||||
以下输出显示了复制 500MB 大小的文件时,`cp1.go`、`cp2.go` 和 `cp3.go` 的性能对比:
|
||||
|
||||
```
|
||||
$ ls -l INPUT
|
||||
-rw-r--r-- 1 mtsouk staff 512000000 Jun 5 09:39 INPUT
|
||||
$ time go run cp1.go INPUT /tmp/cp1
|
||||
Copied 512000000 bytes!
|
||||
|
||||
real 0m0.980s
|
||||
user 0m0.219s
|
||||
sys 0m0.719s
|
||||
$ time go run cp2.go INPUT /tmp/cp2
|
||||
|
||||
real 0m1.139s
|
||||
user 0m0.196s
|
||||
sys 0m0.654s
|
||||
$ time go run cp3.go INPUT /tmp/cp3 1000000
|
||||
Copying INPUT to /tmp/cp3
|
||||
|
||||
real 0m1.025s
|
||||
user 0m0.195s
|
||||
sys 0m0.486s
|
||||
```
|
||||
|
||||
我们可以看出,这三个程序的性能非常接近,这意味着 Go 标准库函数的实现非常聪明、经过了充分优化。
|
||||
|
||||
现在,让我们测试一下缓冲区大小对 `cp3.go` 的性能有什么影响吧!执行 `cp3.go`,并分别指定缓冲区大小为 10、20 和 1000 字节,在一台运行很快的机器上复制 500MB 文件,得到的结果如下:
|
||||
|
||||
```
|
||||
$ ls -l INPUT
|
||||
-rw-r--r-- 1 mtsouk staff 512000000 Jun 5 09:39 INPUT
|
||||
$ time go run cp3.go INPUT /tmp/buf10 10
|
||||
Copying INPUT to /tmp/buf10
|
||||
|
||||
real 6m39.721s
|
||||
user 1m18.457s
|
||||
sys 5m19.186s
|
||||
$ time go run cp3.go INPUT /tmp/buf20 20
|
||||
Copying INPUT to /tmp/buf20
|
||||
|
||||
real 3m20.819s
|
||||
user 0m39.444s
|
||||
sys 2m40.380s
|
||||
$ time go run cp3.go INPUT /tmp/buf1000 1000
|
||||
Copying INPUT to /tmp/buf1000
|
||||
|
||||
real 0m4.916s
|
||||
user 0m1.001s
|
||||
sys 0m3.986s
|
||||
```
|
||||
|
||||
我们可以发现,缓冲区越大,`cp3.go` 运行得就越快,这或多或少是符合预期的。此外,使用小于 20 字节的缓冲区来复制大文件会非常缓慢,应该避免。
|
||||
|
||||
你可以在 [GitHub][5] 找到 `cp1.go`、`cp2.go` 和 `cp3.go` 的 Go 代码。
|
||||
|
||||
如果你有任何问题或反馈,请在(原文)下方发表评论或在 [Twitter][6] 上与我(原作者)联系。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/18/6/copying-files-go
|
||||
|
||||
作者:[Mihalis Tsoukalos][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[lkxed](https://github.com/lkxed)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/mtsouk
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://opensource.com/sites/default/files/lead-images/LIFE_cat.png
|
||||
[3]: https://golang.org/
|
||||
[4]: https://golang.org/pkg/io/
|
||||
[5]: https://github.com/mactsouk/opensource.com
|
||||
[6]: https://twitter.com/mactsouk
|
@ -3,22 +3,22 @@
|
||||
[#]: author: "Sarah Wall https://opensource.com/users/sarahwall"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14581-1.html"
|
||||
|
||||
你为什么应该选择专注而非一心多用
|
||||
======
|
||||
如果你有时候会感觉大脑处于停滞状态,那么你可能正在遭受一心多用和决策疲劳。
|
||||
|
||||
![][1]
|
||||
(图源:Pixabay,经 Opensource.com 修改,CC BY-SA 4.0)
|
||||
> 如果你有时候会感觉大脑处于停滞状态,那么你可能正在遭受一心多用和决策疲劳。
|
||||
|
||||

|
||||
|
||||
想象一下,你刚完成了日常工作,坐在电脑前,手里拿着晨间咖啡,正准备开始新的一天。突然,一条 Slack 消息弹了出来,你扫了一眼邮件,然后切回 Slack。你打开日历,看看下一次会议是什么时候,令你惊讶的是,它 15 分钟后就要开始了!你回到办公桌前,开始检查待办事项,想看看在这短短 15 分钟内还能给自己安排什么任务,但不巧的是,这时你的一个同事请求你帮他解决一个问题。大半天就这样过去了,而你根本没有意识到……
|
||||
|
||||
我的许多日子都是这样度过的,不断地多个任务之间徘徊。有些时候,我发现自己盯着电脑,大脑完全停滞。如果你也发现自己处于这种情况,这可能是你的大脑发出的信号,提醒你休息一下。你可能正在遭受一心多用和决策疲劳。
|
||||
|
||||
平均而言,成年人每天要做大约 [35000 个决定][2]! 它们可以是简单的决定,如吃什么或穿什么,也可以是需要更多思考的决定,如下一个假期去哪里或从事哪个职业。每天你都面临着大量的选择,它们占据了你的头脑。
|
||||
平均而言,成年人每天要做大约 [35000 个决定][2]!它们可能是简单的决定,如吃什么或穿什么,也可能是需要更多思考的决定,如下一个假期去哪里或从事哪个职业。每天你都面临着大量的选择,它们占据了你的头脑。
|
||||
|
||||
### 分散注意力的一心多用
|
||||
|
||||
@ -70,7 +70,7 @@ via: https://opensource.com/article/19/4/mindfulness-over-multitasking
|
||||
作者:[Sarah Wall][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[lkxed](https://github.com/lkxed)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -1,27 +1,32 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (Starryi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: 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** 并获取当前登录用户的列表)。
|
||||
> watch 和 tail 命令可以帮助监视 Linux 系统上的活动。本文介绍了这两个命令的一些有用的使用方法。
|
||||
|
||||
使用 **tail**,您可以显示文件的底部并在添加内容时查看内容。这种监控一般非常有用,并且比定期运行命令所需的工作更少。
|
||||
`watch` 和 `tail` 命令为持续监视 Linux 系统上的活动提供了一些有趣的选项。
|
||||
|
||||
也就是说,你可以通过 `watch` 来显示谁已登录,并随着用户登录和注销不断更新,而不是仅仅提出问题并获得答案(例如询问 `who` 并获取当前登录用户的列表)。
|
||||
|
||||
使用 `tail`,你可以显示文件的底部并在添加内容时查看内容。这种监控一般非常有用,并且比定期运行命令所需的工作更少。
|
||||
|
||||
### 使用 watch 命令
|
||||
|
||||
使用 **watch** 的最简单示例之一是使用命令 **watch who**。你会看到一个列表,其中显示了谁登录了,以及他们登录的时间和登录位置。请注意,默认设置是每两秒更新一次显示(左上角),日期和时间(右上角)将按该间隔自行更新。用户列表将随着用户登录和注销而增长和缩小。
|
||||
使用 `watch` 的最简单示例之一是使用命令 `watch who`。你会看到一个列表,其中显示了谁登录了,以及他们登录的时间和登录位置。请注意,默认设置是每两秒更新一次显示(左上角),日期和时间(右上角)将按该间隔自行更新。用户列表将随着用户登录和注销而增长和缩小。
|
||||
|
||||
### $ watch who
|
||||
```
|
||||
$ watch who
|
||||
```
|
||||
|
||||
此命令将显示如下所示的登录列表:
|
||||
|
||||
@ -32,14 +37,14 @@ 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)来修改更新间的不同秒数,以修改更新间隔,从而获取较少的更新频率。
|
||||
你可以通过添加 `-n` 选项(例如 `-n 10`)来修改更新间的不同秒数,以修改更新间隔,从而获取较少的更新频率。
|
||||
|
||||
### $ watch -n 10 who
|
||||
```
|
||||
$ watch -n 10 who
|
||||
```
|
||||
|
||||
上述命令将以新的间隔显示,并且显示的时间更新频率较低,从而使显示时间与所选间隔保持一致。
|
||||
|
||||
[][2]
|
||||
|
||||
```
|
||||
Every 10.0s: who dragonfly: Thu Feb 27 11:05:47 2020
|
||||
|
||||
@ -47,9 +52,11 @@ 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**(无标题)选项来省略这些行。
|
||||
如果你希望仅查看命令的输出,而不是标题(前 2 行),则可以通过添加 `-t`(无标题)选项来省略这些行。
|
||||
|
||||
### $ watch -t who
|
||||
```
|
||||
$ watch -t who
|
||||
```
|
||||
|
||||
然后,你的屏幕将显示如下所示:
|
||||
|
||||
@ -60,21 +67,21 @@ shs pts/1 2020-02-27 10:58 (192.168.0.5)
|
||||
|
||||
如果每次运行监视的命令时,输出都是相同的,则只有标题行(如果未省略)会更改。其余显示的信息将保持不变。
|
||||
|
||||
如果你希望 **watch** 命令在它正在监视的命令的输出发生更新后立即退出,则可以使用 **-g**(将其视为“离开”)选项。例如,如果你只是在等待其他人开始登录系统,则可以选择执行此操作。
|
||||
如果你希望 `watch` 命令在它正在监视的命令的输出发生更新后立即退出,则可以使用 `-g`(将其视为“<ruby>离开<rt>go away</rt></ruby>”)选项。例如,如果你只是在等待其他人开始登录系统,则可以选择执行此操作。
|
||||
|
||||
你还可以使用 **-d**(差异)选项突出显示显示输出中的更改。突出显示只会持续一个间隔(默认为 2 秒),但有助于引起你对更新的注意。
|
||||
你还可以使用 `-d`(<ruby>差异<rt>differences</rt></ruby>)选项突出显示显示输出中的更改。突出显示只会持续一个间隔(默认为 2 秒),但有助于引起你对更新的注意。
|
||||
|
||||
下面是一个更复杂的示例,该示例使用 **watch** 命令显示正在侦听连接的服务及其使用的端口。虽然输出不太可能更改,但它会提醒你任何新服务正在启动或关闭。
|
||||
下面是一个更复杂的示例,该示例使用 `watch` 命令显示正在侦听连接的服务及其使用的端口。虽然输出不太可能更改,但它会提醒你任何新服务正在启动或关闭。
|
||||
|
||||
```console
|
||||
```
|
||||
$ watch 'sudo lsof -i -P -n | grep LISTEN'
|
||||
```
|
||||
|
||||
值得注意的是,正在运行的命令需要用引号扩起来,以确保 **watch** 命令不会将其输出发送到 grep 命令。
|
||||
值得注意的是,正在运行的命令需要用引号扩起来,以确保不会将 `watch` 命令的输出发送到 `grep` 命令。
|
||||
|
||||
使用 **watch -h** 命令将为你提供命令选项的列表。
|
||||
使用 `watch -h` 命令将为你提供命令选项的列表。
|
||||
|
||||
```console
|
||||
```
|
||||
$ watch -h
|
||||
|
||||
Usage:
|
||||
@ -98,19 +105,19 @@ Options:
|
||||
|
||||
### 使用 tail -f
|
||||
|
||||
**tail -f** 命令与 **watch** 有一些相同之处。它也会在添加文件时显示文件的底部和其他内容。你不必一次又一次地运行 “tail” 命令,而是运行一个命令并获得可重复更新显示视图的结果。例如,你可以使用如下命令查看系统日志:
|
||||
`tail -f` 命令与 `watch` 有一些相同之处。它也会在添加文件时显示文件的底部和其他内容。你不必一次又一次地运行 `tail` 命令,而是运行一个命令并获得可重复更新显示视图的结果。例如,你可以使用如下命令查看系统日志:
|
||||
|
||||
```console
|
||||
```
|
||||
$ tail -f /var/log/syslog
|
||||
```
|
||||
|
||||
某些文件(如 **/var/log/wtmp**)不适合这种类型的处理,因为它们的格式不是普通文本文件,但是通过组合 **watch** 和 **tail**,你可以获得类似的结果,如下所示:
|
||||
某些文件(如 `/var/log/wtmp`)不适合这种类型的处理,因为它们的格式不是普通文本文件,但是通过组合 `watch` 和 `tail`,你可以获得类似的结果,如下所示:
|
||||
|
||||
```bash
|
||||
```
|
||||
watch 'who /var/log/wtmp | tail -20'
|
||||
```
|
||||
|
||||
无论有多少用户仍处于登录状态, 此命令都将只显示最近的 5 次登录。如果发生其他登录,显示结果将添加一行记录并删除顶行记录。
|
||||
无论有多少用户仍处于登录状态,此命令都将只显示最近的 5 次登录。如果发生其他登录,显示结果将添加一行记录并删除顶行记录。
|
||||
|
||||
```
|
||||
Every 60.0s: who /var/log/wtmp | tail -5 dragonfly: Thu Feb 27 12:46:07 2020
|
||||
@ -122,9 +129,7 @@ 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** 命令都可以提供自动更新视图,从而使监视任务变得更加容易。
|
||||
|
||||
加入 [Facebook][3] 和 [LinkedIn][4] 上的网络世界社区,对最重要的话题发表评论。
|
||||
对你有时可能想要监视的信息,无论监视进程、登录名还是系统资源,`watch` 和 `tail -f` 命令都可以提供自动更新视图,从而使监视任务变得更加容易。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -133,7 +138,7 @@ via: https://www.networkworld.com/article/3529891/watching-activity-on-linux-wit
|
||||
作者:[Sandra Henry-Stocker][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[Starryi](https://github.com/Starryi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
114
published/202205/20200807 A Beginner-s Guide to Open Source.md
Normal file
114
published/202205/20200807 A Beginner-s Guide to Open Source.md
Normal file
@ -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"
|
||||
|
||||
开源新手指南
|
||||
======
|
||||
|
||||

|
||||
|
||||
作为一名技术人员,你应该时不时会看到“<ruby>开源<rt>Open Source</rt></ruby>”这个词。你有可能在浏览推文、博文时看到过它,也有可能是在学习某一门编程语言或使用某个工具时,看到它的部分介绍写着:这个工具/语言是“开源”的。总之,开源无处不在。
|
||||
|
||||
在本文中,我将介绍下面这三个话题:
|
||||
|
||||
* 什么是开源
|
||||
* 贡献于开源的好处
|
||||
* 如何开始贡献
|
||||
|
||||
### 什么是开源
|
||||
|
||||
开源指的是这样一些软件、项目或社区:它们允许人们修改和分享,因为它们的设计目的就是为了让所有人都能访问。举一个关于菜谱的例子:你可以做你从未发明过的菜,因为发明这个菜谱的人公开了它。大多数时候,你也可以根据自己的口味烹饪,而不会呛到喉咙(开个玩笑)。
|
||||
|
||||
> <ruby>开源软件<rt>Open Source Software</rt></ruby>(OSS)是指源代码可供他人查看、复制、学习、修改或分享的软件。
|
||||
|
||||
下面是开源软件和语言的一些例子:
|
||||
|
||||
* Linux 操作系统
|
||||
* Google 的 Android 操作系统
|
||||
* Firefox 浏览器
|
||||
* VLC 媒体播放器
|
||||
* Python 语言、PHP 语言、MySQL 数据库
|
||||
|
||||
与开源软件相反的是<ruby>专有软件<rt>proprietary software</rt></ruby> / <ruby>闭源软件<rt>closed source software</rt></ruby>,只有软件的创造者才能自由使用,其他人若想使用,就得先获得法律许可才行。例如 Adobe Photoshop、微软 Office 等。
|
||||
|
||||
> 开源不仅限于软件或代码,技术领域的任何人都可以为开源做出贡献(各个角色)。有了开源,就有了透明度、可靠性、灵活性,并允许开放合作。
|
||||
|
||||
### 贡献于开源的好处
|
||||
|
||||
向开源项目或软件做贡献意味着“免费”让该项目变得更好。你应该会问自己,为什么我要关心或向自己强调“免费”呢?如果你是新手,你可以阅读 [Edidiong Asikpo][2] 的故事,她在 [这篇文章][3] 中说明了为什么开源是她成长的催化剂。
|
||||
|
||||
贡献开源的好处有很多,这里是其中一部分:
|
||||
|
||||
* 它能够帮助你提高现有的技能,特别是对于新手而言,因为它允许你边做边学。
|
||||
* 无论身在何处,你都可以与世界各地的优秀科技人士协作或共事。
|
||||
* 你可以公开自己的想法,从而改善软件、项目或社区,让世界变得更美好。
|
||||
* 你可以通过贡献开源来得到大家的认可,或者成为独特或伟大事物的一部分(获得自豪感)。
|
||||
* 它让你有机会成为一个人才济济、活力四射的社区的一分子,你可以从中汲取灵感,并结识志同道合的人。
|
||||
* 你可以因为贡献开源而获得报酬(OoO)!比如你可以参与一些实习,包括 <ruby>[谷歌编程之夏][4]<rt>Google Summer of Code</rt></ruby>、[Outreachy][5]、<ruby>[谷歌文档季][6]<rt>Google Season of Docs</rt></ruby>,以及 Open Collective 的 <ruby>[赏金计划][7]<rt>bounty program</rt></ruby> 等。(LCTT 译注:国内也有类似的开源实习机会,如“开源之夏”。)
|
||||
|
||||
### 如何开始贡献
|
||||
|
||||
我相信你会对上面提到的最后一点感兴趣吧(^o^),那么,你该如何开始为开源软件做贡献呢?
|
||||
|
||||
是时候介绍一下 GitHub 了!
|
||||
|
||||
Github 是开源项目协作的大本营,因此它是一个开始贡献开源的好地方。没听说过 GitHub?没有关系!它提供了文档和指南,很容易就可以上手。不过我还是要提醒你,学习是一个循序渐进的过程,不要太心急喔。
|
||||
|
||||
Github 以公共<ruby>存储库<rt>repositories</rt></ruby>的形式容纳了许多开源项目。对于某个项目,你可以提交一个<ruby>议题<rt>issue</rt></ruby>,来说明你注意到的错误或问题(或进一步提出改进意见),也可以创建一个<ruby>拉取请求<rt>pull request</rt></ruby>(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
|
@ -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
|
||||
|
||||
安装完后,从你的“<ruby>应用<rt>Applications</rt></ruby>”菜单启动程序。启动向导会指导你完成初始化设置。
|
||||
|
||||
![KStars 启动向导][11]
|
||||
|
||||
这些指示很容易理解。向导会提示设置你住所的位置。不幸的是,我所在的小村庄不在列表里,但附近一个更大的社区在里面。
|
||||
|
||||
![KStars 位置设置][13]
|
||||
|
||||
你还可以下载该程序的其他数据和额外功能。
|
||||
|
||||
![KStars 扩展][14]
|
||||
|
||||
这里有很多可用的选项。我选择“<ruby>在详细信息窗口中显示常见图像<rt>Common images displayed in the detail window</rt></ruby>”。
|
||||
|
||||
一旦完成设置,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
|
@ -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
|
316
published/202205/20210122 Convert your filesystem to Btrfs.md
Normal file
316
published/202205/20210122 Convert your filesystem to Btrfs.md
Normal file
@ -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 <ruby>实时镜像<rt>Live Image</rt></ruby>进行。安装 [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/
|
@ -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
|
@ -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 的开发优势,因为它使用自己的字节码和虚拟机(<ruby>TC 字节码<rt>TC bytecode</rt></ruby> 和 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 对象的示例:
|
||||
|
||||
```
|
||||
<ImageButton
|
||||
android:id="@+id/ImageButton"
|
||||
android:layout_width="70dp"
|
||||
android:layout_height="70dp"
|
||||
tools:layout_editor_absoluteX="830dp"
|
||||
tools:layout_editor_absoluteY="511dp"
|
||||
android:background="@drawable/home_config" />
|
||||
```
|
||||
|
||||
#### 3、在 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` 的引用:
|
||||
|
||||
```
|
||||
<ProgressBar
|
||||
android:id="@+id/spinner"
|
||||
android:layout_width="362dp"
|
||||
android:layout_height="358dp"
|
||||
tools:layout_editor_absoluteX="296dp"
|
||||
tools:layout_editor_absoluteY="198dp"
|
||||
android:indeterminateTint="#2B05C7"
|
||||
style="?android:attr/progressBarStyle" />
|
||||
```
|
||||
|
||||
#### 6、构建应用程序
|
||||
|
||||
是时候构建应用程序了。你可以在 `pom.xml` 中查看和更改<ruby>目标系统<rt>target systems</rt></ruby>。 请确保 `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
|
@ -3,34 +3,34 @@
|
||||
[#]: author: "Chris Collins https://opensource.com/users/clcollins"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
[#]: reviewer: "turbokernel"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14560-1.html"
|
||||
|
||||
使用 Go 和树莓派来解决 WiFi 问题
|
||||
使用 Go 和树莓派排查 WiFi 问题
|
||||
======
|
||||
实现一个 WiFi 扫描仪玩玩~
|
||||
|
||||
![在在门廊上喝茶][1]
|
||||
(图源:opensource.com)
|
||||
> 实现一个 WiFi 扫描器玩玩~
|
||||
|
||||
去年夏天,我和妻子卖掉了我们的全部财产,带着我们的两只狗搬到了夏威夷。这里有我们想象中的一切:美丽的阳光、温暖的沙滩、凉爽的冲浪 —— 你能想到的一切。我们也遇到了一些意料之外的事:WiFi 问题。
|
||||

|
||||
|
||||
不过,这不是夏威夷的问题,而是我们租住的公寓的问题。我们住在一个单身公寓里,与房东的公寓仅一墙之隔。我们的租房协议中包含了免费的网络连接!好耶!只不过,它是由房东的公寓里的 WiFi 提供的,哇哦……
|
||||
去年夏天,我和妻子变卖了家产,带着我们的两只狗移居了夏威夷。这里有美丽的阳光、温暖的沙滩、凉爽的冲浪等你能想到的一切。我们同样遇到了一些意料之外的事:WiFi 问题。
|
||||
|
||||
说实话,它的效果还不错……吗?好吧,我承认它不尽如人意,我也不知道是哪里出了问题。明明路由器就在墙的另一边,但我们的信号就是很不稳定,经常会自动断开连接。在家的时候,我们的 WiFi 路由器的信号能够穿过层层墙壁和地板。事实上,它所覆盖的区域比我们居住的 600 平方英尺(大约 55 平方米)的公寓还要大。
|
||||
不过,这不是夏威夷的问题,而是我们租住公寓的问题。我们住在一个单身公寓里,与房东的公寓仅一墙之隔。我们的租房协议中包含了免费的网络连接!好耶!只不过,它是由房东的公寓里的 WiFi 提供的,哇哦……
|
||||
|
||||
在这种情况下,一个优秀的技术人员会怎么做呢?既然想知道为什么,当然是开始调查咯!
|
||||
说实话,它的效果还不错……吧?好吧,我承认它不尽如人意,并且不知道是哪里的问题。路由器明明就在墙的另一边,但我们的信号就是很不稳定,经常会自动断开连接。在家的时候,我们的 WiFi 路由器的信号能够穿过层层墙壁和地板。事实上,它所覆盖的区域比我们居住的 600 平方英尺(大约 55 平方米)的公寓还要大。
|
||||
|
||||
幸运的是,我们在搬家之前卖掉的“全部财产”并不包括树莓派 Zero W。它是如此小! 如此便携! 我当然就把它一起带来了。我有一个机智的想法:使用树莓派和它内置的 WiFi 适配器,用 Go 语言编写一个小程序来测量并显示从路由器收到的 WiFi 信号。我打算先简单快速地把它实现出来,以后再去考虑该如何优化。烦死了!我现在只想知道这个 WiFi 是怎么回事!
|
||||
在这种情况下,一个优秀的技术人员会怎么做呢?既然想知道为什么,当然是开始排查咯!
|
||||
|
||||
谷歌搜索了一番后,我发现了一个相对有用的 Go 软件包 [mdlayher/wifi][2],它专门用于 WiFi 相关操作,听起来很有希望!
|
||||
幸运的是,我们在搬家之前并没有变卖掉树莓派 Zero W。它是如此小巧便携! 我当然就把它一起带来了。我有一个机智的想法:通过树莓派和它内置的 WiFi 适配器,使用 Go 语言编写一个小程序来测量并显示从路由器收到的 WiFi 信号。我打算先简单快速地把它实现出来,以后再去考虑优化。真是麻烦!我现在只想知道这个 WiFi 是怎么回事!
|
||||
|
||||
谷歌搜索了一番后,我发现了一个比较有用的 Go 软件包 [mdlayher/wifi][2],它专门用于 WiFi 相关操作,听起来很有希望!
|
||||
|
||||
### 获取 WiFi 接口的信息
|
||||
|
||||
我的计划是查询 WiFi 接口的统计数据并返回信号强度,所以我需要先找到设备上的接口。幸运的是,mdlayher/wifi 包有一个查询它们的方法,所以我可以创建一个 `main.go` 来实现它,就像下面这样:
|
||||
我的计划是查询 WiFi 接口的统计数据并返回信号强度,所以我需要先找到设备上的接口。幸运的是,`mdlayher/wifi` 包有一个查询它们的方法,所以我可以创建一个 `main.go` 来实现它,具体代码如下:
|
||||
|
||||
```go
|
||||
```
|
||||
package main
|
||||
|
||||
import (
|
||||
@ -54,9 +54,9 @@ func main() {
|
||||
}
|
||||
```
|
||||
|
||||
让我们来看看上面的代码都做了什么吧!嗯,首先是导入依赖模块,导入后,我就可以使用 mdlayher/wifi 模块就在主函数中创建一个新的客户端(类型为 `*Client`)。接下来,这个新的客户端(变量名为 `c`)就可以获得系统中的接口列表,只需要调用 `c.Interfaces()` 方法即可。接着,我就可以遍历包含接口指针的切片(变长数组),然后打印出它们的具体信息。
|
||||
让我们来看看上面的代码都做了什么吧!首先是导入依赖包,导入后,我就可以使用 `mdlayher/wifi` 模块就在 `main` 函数中创建一个新的客户端(类型为 `*Client`)。接下来,只需要调用这个新的客户端(变量名为 `c`)的 `c.Interfaces()` 方法就可以获得系统中的接口列表。接着,我就可以遍历包含接口指针的切片(变长数组),然后打印出它们的具体信息。
|
||||
|
||||
注意到 `%+v` 中有一个 “+” 了吗?它意味着程序会额外打印出 `*Interface` 结构中的属性名,这将有助于我辨认出我看到的东西,而不用回头去看文档。
|
||||
注意到 `%+v` 中有一个 `+` 了吗?它意味着程序会详细输出 `*Interface` 结构体中的属性名,这将有助于我标识出我看到的东西,而不用去查阅文档。
|
||||
|
||||
运行上面的代码后,我得到了机器上的 WiFi 接口列表:
|
||||
|
||||
@ -65,17 +65,17 @@ func main() {
|
||||
&{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` 指的就是接口所属的物理设备。
|
||||
注意,两行输出中的 MAC 地址(`HardwareAddr`)是相同的,这意味着它们是同一个物理硬件。你也可以通过 `PHY: 0` 来确认。查阅 Go 的 [wifi 模块文档][3],`PHY` 指的就是接口所属的物理设备。
|
||||
|
||||
第一个接口没有名字,类型是 `TYPE: P2P`。第二个接口名为 `wpl2s0`,类型是 `TYPE: Station`。Go 的 wifi 模块文档列出了 [不同类型的接口][4],并描述了它们是什么。根据文档,“<ruby>P2P<rt>点对点传输</rt></ruby>” 类型表示“这个接口是点对点客户端网络中的一个设备”。我认为这个接口是用于 [WiFi 直连][5] 的,这是一个允许两个 WiFi 设备在没有中间接入点的情况下直接连接的标准。
|
||||
第一个接口没有名字,类型是 `TYPE: P2P`。第二个接口名为 `wpl2s0`,类型是 `TYPE: Station`。`wifi` 模块的文档列出了 [不同类型的接口][4],以及它们的用途。根据文档,`P2P`(点对点传输) 类型表示“该接口属于点对点客户端网络中的一个设备”。我认为这个接口的用途是 [WiFi 直连][5] ,这是一个允许两个 WiFi 设备在没有中间接入点的情况下直接连接的标准。
|
||||
|
||||
“<ruby>Station<rt>基站</rt></ruby>” 类型表示“这个接口是带有<ruby>控制接入点<rt>controlling access point</rt></ruby>的客户端设备管理的<ruby>基本服务集(BSS)<rt>basic service set</rt></ruby>的一部分”。这是大多数人所习惯的无线设备标准功能,也就是作为一个客户端来连接到网络接入点。这也是测试 WiFi 质量的重要接口。
|
||||
`Station`(基站)类型表示“该接口是具有<ruby>控制接入点<rt>controlling access point</rt></ruby>的客户端设备管理的<ruby>基本服务集<rt>basic service set</rt></ruby>(BSS)的一部分”。这是大众熟悉的无线设备标准功能:作为一个客户端来连接到网络接入点。这是测试 WiFi 质量的重要接口。
|
||||
|
||||
### 利用接口获取基站信息
|
||||
|
||||
利用这个信息,我可以修改遍历接口的代码来获取我正在寻找的信息:
|
||||
利用该信息,我可以修改遍历接口的代码来获取所需信息:
|
||||
|
||||
```go
|
||||
```
|
||||
for _, x := range interfaces {
|
||||
if x.Type == wifi.InterfaceTypeStation {
|
||||
// c.StationInfo(x) returns a slice of all
|
||||
@ -91,9 +91,9 @@ for _, x := range interfaces {
|
||||
}
|
||||
```
|
||||
|
||||
首先,这段程序检查了 `x.Type`(接口类型)是否为 `wifi.InterfaceTypeStation`,它是一个基站接口(也是本练习中唯一涉及到的类型)。这是一个不幸的命名冲突,因为这个接口“类型”和 Golang 中的“类型”不是一个东西。事实上,我在这里使用了一个叫做 `interfaceType` 的 Go 类型来代表接口类型。呼,我花了一分钟才弄明白!
|
||||
首先,这段程序检查了 `x.Type`(接口类型)是否为 `wifi.InterfaceTypeStation`,它是一个基站接口(也是本练习中唯一涉及到的类型)。不幸的是名字出现了冲突,这个接口“类型”并不是 Golang 中的“类型”。事实上,我在这里使用了一个叫做 `interfaceType` 的 Go 类型来代表接口类型。呼,我花了一分钟才弄明白!
|
||||
|
||||
然后,假设接口的类型符合预期,我们就可以调用 `c.StationInfo(x)` 来检索基站信息,`StationInfo()` 方法可以获取到关于这个接口 `x` 的信息。
|
||||
然后,假设接口的类型正确,我们就可以调用 `c.StationInfo(x)` 来检索基站信息,`StationInfo()` 方法可以获取到关于这个接口 `x` 的信息。
|
||||
|
||||
这将返回一个包含 `*StationInfo` 指针的切片。我不大确定这里为什么要用切片,或许是因为接口可能返回多个 `StationInfo`?不管怎么样,我都可以遍历这个切片,然后使用之前提到的 `+%v` 技巧格式化打印出 `StationInfo` 结构的属性名和属性值。
|
||||
|
||||
@ -103,7 +103,7 @@ for _, x := range interfaces {
|
||||
&{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}
|
||||
```
|
||||
|
||||
我感兴趣的是“<ruby>信号<rt>Signal</rt></ruby>”部分,可能还有“<ruby>传输失败<rt>TransmitFailed</rt></ruby>”和“<ruby>信标丢失<rt>BeaconLoss</rt></ruby>”部分。信号强度是以 dBm(全称 <ruby>decibel-milliwatts<rt>分贝-毫瓦</rt><ruby>)为单位来报告的。
|
||||
我感兴趣的是 `Signal`(信号)部分,可能还有 `TransmitFailed`(传输失败)和 `BeaconLoss`(信标丢失)部分。信号强度是以 dBm(<ruby>分贝-毫瓦<rt>decibel-milliwatts</rt><ruby>)为单位来报告的。
|
||||
|
||||
#### 简短科普:如何读懂 WiFi dBm
|
||||
|
||||
@ -112,16 +112,16 @@ for _, x := range interfaces {
|
||||
* -30 最佳,但它既不现实也没有必要
|
||||
* -67 非常好,它适用于需要可靠数据包传输的应用,例如流媒体
|
||||
* -70 还不错,它是实现可靠数据包传输的底线,适用于电子邮件和网页浏览
|
||||
* -80 很差,只能保持绝对的基本连接,不可靠的数据包传输
|
||||
* -90 不可用,接近“<ruby>噪音底线<rt>noise floor</rt></ruby>”
|
||||
* -80 很差,只是基本连接,数据包传输不可靠
|
||||
* -90 不可用,接近“<ruby>背景噪声<rt>noise floor</rt></ruby>”
|
||||
|
||||
*注意:dBm 是对数尺度,-60 比 -30 要低 1000 倍。*
|
||||
|
||||
### 使它成为一个真的“扫描仪”
|
||||
### 使它成为一个真的“扫描器”
|
||||
|
||||
所以,看着上面输出显示的我的信号:-79。哇哦,感觉不大好呢。不过单看这个结果并没有太大帮助,它只能提供某个时间点的参考,只对 WiFi 网络适配器在那一瞬间所在的特定物理空间有效。一个连续的读数会更有用,它能使我们有可能看到信号随着树莓派的移动而变化。我可以再次修改主函数来实现这一点。
|
||||
所以,看着上面输出显示的我的信号:-79。哇哦,感觉不大好呢。不过单看这个结果并没有太大帮助,它只能提供某个时间点的参考,只对 WiFi 网络适配器在特定物理空间的某一瞬间有效。一个连续的读数会更有用,借助于它,我们观察到信号随着树莓派的移动而变化。我可以再次修改 `main` 函数来实现这一点。
|
||||
|
||||
```go
|
||||
```
|
||||
var i *wifi.Interface
|
||||
|
||||
for _, x := range interfaces {
|
||||
@ -153,9 +153,9 @@ for {
|
||||
|
||||
首先,我命名了一个 `wifi.Interface` 类型的变量 `i`。因为它在循环的范围外,所以我可以用它来存储接口信息。循环内创建的任何变量在该循环的范围外都是不可访问的。
|
||||
|
||||
然后,我可以把这个循环一分为二。第一个遍历了 `c.Interfaces()` 返回的接口切片,如果元素是一个 `Station` 类型,它就将其存储在先前创建的变量 `i`中,并跳出循环。
|
||||
然后,我可以把这个循环一分为二。第一个遍历了 `c.Interfaces()` 返回的接口切片,如果元素是一个 `Station` 类型,它就将其存储在先前创建的变量 `i` 中,并跳出循环。
|
||||
|
||||
第二个循环是一个无限循环,所以它将不断地运行,直到我按下 **Ctrl** + **C** 来结束程序。和之前一样,这个循环内部获取接口信息、检索基站信息,并打印出信号信息。然后它会休眠一秒钟,再次运行,反复打印信号信息,直到我退出为止。
|
||||
第二个循环是一个死循环,它将不断地运行,直到我按下 `Ctrl + C` 来结束程序。和之前一样,这个循环内部获取接口信息、检索基站信息,并打印出信号信息。然后它会休眠一秒钟,再次运行,反复打印信号信息,直到我退出为止。
|
||||
|
||||
运行上面的程序后,我得到了下面的输出:
|
||||
|
||||
@ -173,13 +173,13 @@ Signal: -81
|
||||
|
||||
不管怎么说,知道这些信息总比不知道要好。让树莓派连接上显示器或者电子墨水屏,并接上电源,我就可以让它在公寓里移动,并绘制出信号死角的位置。
|
||||
|
||||
剧透一下:由于房东的接入点在隔壁的公寓里,对我来说最大的死角是公寓厨房的冰箱那里发射出的一个圆锥体形状区域......这个冰箱与房东的公寓共用一堵墙!
|
||||
剧透一下:由于房东的接入点在隔壁的公寓里,对我来说最大的死角是以公寓厨房的冰箱为顶点的一个圆锥体形状区域......这个冰箱与房东的公寓靠着一堵墙!
|
||||
|
||||
我想如果用《龙与地下城》里的黑话来说,它就是一个“<ruby>沉默之锥<rt>Cone of Silence</rt></ruby>”。或者至少是一个“<ruby>糟糕的网络连接之锥<rt>Cone of Poor Internet</rt></ruby>”。
|
||||
|
||||
总之,这段代码可以直接在树莓派上运行 `go build -o wifi_scanner` 来编译,得到的二进制文件 `wifi_scanner` 可以与任何其他 ARM 设备(同一版本)共享。另外,它也可以在常规系统上用正确的 ARM 设备库进行编译。
|
||||
总之,这段代码可以直接在树莓派上运行 `go build -o wifi_scanner` 来编译,得到的二进制文件 `wifi_scanner` 可以运行在其他同样的ARM 设备上。另外,它也可以在常规系统上用正确的 ARM 设备库进行编译。
|
||||
|
||||
祝你扫描愉快!希望你的 WiFi 路由器不在你的冰箱后面!你可以在 [我的 GitHub repo][7] 中找到这个项目所用的代码。
|
||||
祝你扫描愉快!希望你的 WiFi 路由器不在你的冰箱后面!你可以在 [我的 GitHub 存储库][7] 中找到这个项目所用的代码。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -188,7 +188,7 @@ via: https://opensource.com/article/21/3/troubleshoot-wifi-go-raspberry-pi
|
||||
作者:[Chris Collins][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[lkxed](https://github.com/lkxed)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[turbokernel](https://github.com/turbokernel)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -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 代码的同一 <ruby>虚拟机<rt>VM</rt></ruby> 管理。因此,WebAssembly 和 JavaScript 一样,造成的危害也是相同的,只是效率更高,更不易被察觉。由于 JavaScript 是纯文本,运行前需要浏览器编译,而 WebAssembly 是一种可立即运行的二进制格式,运行速度更快,也更难被扫描出(即使使用杀毒软件)其中的恶意指令。
|
||||
|
||||
WebAssembly 的这种 “代码混淆” 效果已经被用来弹出不请自来的广告,或打开假的 “技术支持” 窗口,要求提供敏感数据。另一个把戏则是自动将浏览器重定向到包含真正危险的恶意软件的 “落地” 页。
|
||||
|
||||
最后,就像 JavaScript 一样,WebAssembly 可能被用来 “窃取” 处理能力而不是数据。2019 年,[对 150 个不同的 WASM 模块的分析][2] 发现,其中约 _32%_ 被用于加密货币挖掘。
|
||||
|
||||
### WebAssembly 沙盒和接口
|
||||
|
||||
WebAssembly 代码在一个由虚拟机(而不是操作系统)管理的 [沙盒][3] 中封闭运行。这使它无法看到主机,也无法直接与主机交互。对系统资源(文件、硬件或互联网连接)的访问只能通过该虚拟机提供的 <ruby>WebAssembly 系统接口<rt>WebAssembly System Interface</rt></ruby>(WASI) 进行。
|
||||
|
||||
WASI 不同于大多数其他应用程序编程接口(API),它具有独特的安全特性,真正推动了 WASM 在传统服务器和<ruby>边缘<rt>Edge</rt></ruby>计算场景中的采用,这将是下一篇文章的主题。在这里,可以说,当从 Web 迁移到其他环境时,它的安全影响会有很大的不同。现代 Web 浏览器是极其复杂的软件,但它是建立在数十年的经验和数十亿人的日常测试之上的。与浏览器相比,服务器或物联网(IoT)设备几乎是未知领域。这些平台的虚拟机将需要扩展 WASI,因此,肯定会带来新的安全挑战。
|
||||
|
||||
### WebAssembly 中的内存和代码管理
|
||||
|
||||
与普通的编译程序相比,WebAssembly 应用程序对内存的访问非常受限,对它们自己也是如此。WebAssembly 代码不能直接访问尚未调用的函数或变量,不能跳转到任意地址,也不能将内存中的数据作为字节码指令执行。
|
||||
|
||||
在浏览器内部,WASM 模块只能获得一个连续字节的全局数组(<ruby>线性内存<rt>linear memory</rt></ruby>)进行操作。WebAssembly 可以直接读写该区域中的任意位置,或者请求增加其大小,但仅此而已。这个<ruby>线性内存<rt>linear memory</rt></ruby>也与包含其实际代码、执行堆栈、当然还有运行 WebAssembly 的虚拟机的区域分离。对于浏览器来说,所有这些数据结构都是普通的 JavaScript 对象,使用标准过程与所有其他对象隔离。
|
||||
|
||||
### 结果还好,但不完美
|
||||
|
||||
所有这些限制使得 WebAssembly 模块很难做出不当行为,但也并非不可能。
|
||||
|
||||
沙盒化的内存使 WebAssembly 几乎不可能接触到 __外部__ 的东西,也使操作系统更难防止 __内部__ 发生不好的事情。传统的内存监测机制,比如 <ruby>[堆栈金丝雀][4]<rt>Stack Canaries</rt></ruby> 能注意到是否有代码试图扰乱它不应该接触的对象,[但在这里没用][5]。
|
||||
|
||||
事实上,WebAssembly 只能访问自己的<ruby>线性内存<rt>linear memory</rt></ruby>,但可以直接访问,这也可能为攻击者的行为 _提供便利_。有了这些约束和对模块源代码的访问,就更容易猜测覆盖哪些内存位置可能造成最大的破坏。破坏局部变量似乎也是 [可能的][6],因为它们停留在<ruby>线性内存<rt>linear memory</rt></ruby>中的无监督堆栈中。
|
||||
|
||||
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/
|
@ -3,36 +3,36 @@
|
||||
[#]: author: (Stephan Avenwedde https://opensource.com/users/hansic99)
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (hanszhao80)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-14537-1.html)
|
||||
|
||||
在 Linux 和 Windows 电脑之间共享文件
|
||||
如何在 Linux 和 Windows 电脑之间共享文件
|
||||
======
|
||||
使用 Samba 设置跨平台文件共享。
|
||||
![Blue folders flying in the clouds above a city skyline][1]
|
||||
|
||||
在不同的操作系统之间共享文件会让你倍感方便。这篇文章介绍如何使用 [Samba][3] 和 [mount.cifs][4] 在 Linux ([Fedora 33][2]) and Windows 10 之间设置文件共享。
|
||||
> 使用 Samba 设置跨平台文件共享。
|
||||
|
||||
Samba 是 [SMB/CIFS][5] 协议的 Linux 实现,允许通过网络连接直接访问共享文件夹和打印机。 Mount.cifs 是 Samba 套件的一部分,可让你在 Linux 下挂载 [CIFS][5] 文件系统。
|
||||

|
||||
|
||||
> **注意**: 这些说明适用于在你的私有本地网络内或在 Linux 主机和虚拟化 Windows 来宾之间的虚拟化主机专用网络中共享文件。不要将本文视为你共用网络的操作指南,因为它没有实现必要的网络安全注意事项。
|
||||
如果你使用不同的操作系统,能够在它们之间共享文件会让你倍感方便。这篇文章介绍如何使用 [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
|
||||
#### 1、安装和配置 Samba
|
||||
|
||||
进入你的系统安装 Samba:
|
||||
|
||||
|
||||
```
|
||||
`dnf install samba`
|
||||
dnf install samba
|
||||
```
|
||||
|
||||
Samba 是一个系统守护进程,配置文件位于 `/etc/samba/smb.conf`。它的默认配置应该有效。如果报错,下面这个最小化配置应该可以解决问题:
|
||||
|
||||
Samba 是一个系统守护进程,其配置文件位于 `/etc/samba/smb.conf`。它的默认配置应该就可以工作。如果不行,下面这个最小化配置应该可以解决问题:
|
||||
|
||||
```
|
||||
[global]
|
||||
@ -47,174 +47,138 @@ Samba 是一个系统守护进程,配置文件位于 `/etc/samba/smb.conf`。
|
||||
writable = yes
|
||||
```
|
||||
|
||||
你可以在项目网站的 [smb.conf][6] 部分找到参数的详细说明。
|
||||
你可以在该项目网站的 [smb.conf][6] 部分找到参数的详细说明。
|
||||
|
||||
#### 2\. 修改 LinuxSE
|
||||
#### 2、修改 LinuxSE
|
||||
|
||||
如果你的 Linux 发行版受 [SELinux][7] 保护(比如 Fedora),必须通过以下命令才能通过 Samba 共享主目录:
|
||||
|
||||
|
||||
```
|
||||
`setsebool -P samba_enable_home_dirs on`
|
||||
setsebool -P samba_enable_home_dirs on
|
||||
```
|
||||
|
||||
通过以下命令查看这个值:
|
||||
|
||||
|
||||
```
|
||||
`getsebool samba_enable_home_dirs`
|
||||
getsebool samba_enable_home_dirs
|
||||
```
|
||||
|
||||
输出如下:
|
||||
|
||||
![Sebool][8]
|
||||
|
||||
(Stephan Avenwedde, [CC BY-SA 4.0][9])
|
||||
|
||||
#### 3\. 启用你的用户
|
||||
|
||||
Samba 使用一组用户和密码的集合管理连接权限。通过键入以下命令将你的 Linux 用户添加到该集合中:
|
||||
#### 3、启用你的用户
|
||||
|
||||
Samba 使用一组用户/密码来管理连接权限。通过键入以下命令将你的 Linux 用户添加到该集合中:
|
||||
|
||||
```
|
||||
`smbpasswd -a <你的用户名>`
|
||||
smbpasswd -a <你的用户名>
|
||||
```
|
||||
|
||||
系统提示你输入密码。这是一个 _全新_ 的密码;而不是你账户的当前密码。输入你想用来登录 Samba 的密码。
|
||||
系统提示你输入密码。这是一个 _全新_ 的密码;而不是你账户的当前密码。请输入你想用来登录 Samba 的密码。
|
||||
|
||||
键入以下命令得到有 Samba 使用权限的用户列表:
|
||||
|
||||
|
||||
```
|
||||
`pdbedit -L -v`
|
||||
pdbedit -L -v
|
||||
```
|
||||
|
||||
键入以下命令删除一个用户:
|
||||
|
||||
|
||||
```
|
||||
`smbpasswd -x <用户名>`
|
||||
smbpasswd -x <用户名>
|
||||
```
|
||||
|
||||
#### 4\. 开启 Samba
|
||||
#### 4、开启 Samba
|
||||
|
||||
既然 Samba 是一个系统守护进程,你可以在 Fedora 上键入以下命令启动它:
|
||||
|
||||
|
||||
```
|
||||
`systemctl start smb`
|
||||
systemctl start smb
|
||||
```
|
||||
|
||||
这将为当前会话开启 Samba 服务。如果想让它自启动,键入以下命令:
|
||||
|
||||
|
||||
```
|
||||
`systemctl enable smb`
|
||||
systemctl enable smb
|
||||
```
|
||||
|
||||
在某些系统上,Samba 守护进程注册为 `smbd`。
|
||||
|
||||
#### 4\. 配置防火墙
|
||||
#### 4、配置防火墙
|
||||
|
||||
你的防火墙会默认阻拦 Samba。通过配置防火墙允许 Samba 能永久访问网络。
|
||||
|
||||
你可以在命令行执行如下操作:
|
||||
|
||||
|
||||
```
|
||||
`firewall-cmd --add-service=samba --permanent`
|
||||
firewall-cmd --add-service=samba --permanent
|
||||
```
|
||||
|
||||
或者,你可以使用 firewall-config 工具以图形化方式进行操作:
|
||||
或者,你可以使用 `firewall-config` 工具以图形化方式进行操作:
|
||||
|
||||
![firewall-config][10]
|
||||
|
||||
(Stephan Avenwedde, [CC BY-SA 4.0][9])
|
||||
#### 5、从 Windows 访问 Samba
|
||||
|
||||
#### 5\. 从 Windows 访问 Samba
|
||||
|
||||
在 Windows 中,打开文件资源管理器。在地址栏中,键入两个反斜杠,紧跟你的 Linux 机器的地址(IP 地址或主机名):
|
||||
在 Windows 中,打开文件资源管理器。在地址栏中,键入两个反斜杠(`\\`),紧跟你的 Linux 机器的地址(IP 地址或主机名):
|
||||
|
||||
![从 Windows 访问 Linux][11]
|
||||
|
||||
(Stephan Avenwedde, [CC BY-SA 4.0][9])
|
||||
|
||||
系统将提示你输入登录信息。输入第 3 步中的用户名和密码组合。你现在应该可以访问 Linux 机器上的主目录:
|
||||
|
||||
![从 Windows 访问 Linux][12]
|
||||
|
||||
(Stephan Avenwedde, [CC BY-SA 4.0][9])
|
||||
|
||||
### 从 Linux 访问 Windows
|
||||
|
||||
以下步骤说明了如何从 Linux 访问共享的 Windows 文件夹。要实现这一点,需要你的 Windows 用户帐户具有管理员权限。
|
||||
|
||||
#### 1\. 启用文件共享
|
||||
#### 1、启用文件共享
|
||||
|
||||
通过点击 **Windows 按钮 > 设置 > 网络和 Internet** ,
|
||||
|
||||
或者右键单击任务栏右下角的小监视器图标,
|
||||
|
||||
打开 **网络和共享中心** :
|
||||
通过点击 “Windows 按钮” > “<ruby>设置<rt>Settings</rt></ruby>” > “<ruby>网络和 Internet<rt>Network & Internet</rt></ruby>” ,或者右键单击任务栏右下角的小监视器图标,<ruby>打开网络和共享中心<rt>Open Network an d Sharing Center</rt></ruby>:
|
||||
|
||||
![打开网络和共享中心][13]
|
||||
|
||||
(Stephan Avenwedde, [CC BY-SA 4.0][9])
|
||||
|
||||
在打开的窗口中,找到你要使用的连接并记下其配置文件。我使用了**以太网 3**,它被标记为**公用网络**。
|
||||
在打开的窗口中,找到你要使用的连接并记下其配置文件。我使用了 **以太网 3**,它被标记为 <ruby>公用网络<rt>Public Network</rt></ruby>。
|
||||
|
||||
> **注意**:如果你的 PC 经常连接公用网络,请考虑将本地计算机的连接配置文件更改为 **私有**。
|
||||
|
||||
记住你的网络配置,然后单击**更改高级共享设置**:
|
||||
记住你的网络配置,然后单击 <ruby>更改高级共享设置<rt>Change advanced sharing settings</rt></ruby>:
|
||||
|
||||
![更改高级共享设置][14]
|
||||
|
||||
(Stephan Avenwedde, [CC BY-SA 4.0][9])
|
||||
|
||||
选择与你的连接对应的配置文件并打开 **网络发现** 和 **文件和打印机共享**:
|
||||
选择与你的连接对应的配置文件并打开 <ruby>网络发现<rt>network discovery</rt></ruby> 和 <ruby>文件和打印机共享<rt>file and printer sharing</rt></ruby>:
|
||||
|
||||
![网络共享设置][15]
|
||||
|
||||
(Stephan Avenwedde, [CC BY-SA 4.0][9])
|
||||
#### 2、定义一个共享文件夹
|
||||
|
||||
#### 2\. 定义一个共享文件夹
|
||||
|
||||
通过右键单击您要共享的文件夹打开上下文菜单,导航到**授予访问权限**,然后选择**特定用户...**:
|
||||
通过右键单击你要共享的文件夹打开上下文菜单,导航到 <ruby>授予访问权限<rt>Give access to</rt></ruby>,然后选择 <ruby>特定用户...<rt>Specific people...</rt></ruby>:
|
||||
|
||||
![授予访问权限][16]
|
||||
|
||||
(Stephan Avenwedde, [CC BY-SA 4.0][9])
|
||||
|
||||
检查你当前的用户名是否在列表中。点击 **共享** 将此文件夹标记为共享:
|
||||
检查你当前的用户名是否在列表中。点击 <ruby>共享<rt>Share</rt></ruby> 将此文件夹标记为共享:
|
||||
|
||||
![标记为共享][17]
|
||||
|
||||
(Stephan Avenwedde, [CC BY-SA 4.0][9])
|
||||
|
||||
你可以通过在文件资源管理器的地址栏中输入 `\\localhost` 来显示所有共享文件夹的列表:
|
||||
|
||||
![共享文件夹][18]
|
||||
|
||||
(Stephan Avenwedde, [CC BY-SA 4.0][9])
|
||||
|
||||
![共享文件夹][19]
|
||||
|
||||
(Stephan Avenwedde, [CC BY-SA 4.0][9])
|
||||
|
||||
#### 3\. Linux 下挂载共享文件夹
|
||||
#### 3、在 Linux 下挂载共享文件夹
|
||||
|
||||
回到你的 Linux 系统,打开一个命令行,然后创建一个新文件夹,用于挂载 Windows 共享:
|
||||
|
||||
|
||||
```
|
||||
`mkdir ~/WindowsShare`
|
||||
mkdir ~/WindowsShare
|
||||
```
|
||||
|
||||
挂载 Windows 共享是使用 mount.cifs 完成的,它应该被默认安装。使用如下命令临时挂载你的共享文件夹:
|
||||
|
||||
挂载 Windows 共享是使用 `mount.cifs` 完成的,它应该被默认安装。使用如下命令临时挂载你的共享文件夹:
|
||||
|
||||
```
|
||||
`sudo mount.cifs //<address-of-windows-pc>/MySharedFolder ~/WindowsShare/ -o user=<Windows-user>,uid=$UID`
|
||||
sudo mount.cifs //<address-of-windows-pc>/MySharedFolder ~/WindowsShare/ -o user=<Windows-user>,uid=$UID
|
||||
```
|
||||
|
||||
在这个命令里:
|
||||
@ -222,15 +186,12 @@ Samba 使用一组用户和密码的集合管理连接权限。通过键入以
|
||||
* `<address-of-windows-pc>` 是 Windows PC 的地址信息(IP 或主机名)
|
||||
* `<Windows-user>` 是允许访问共享文件夹的用户(见步骤 2)
|
||||
|
||||
|
||||
|
||||
系统将提示你输入 Windows 密码。之后,你将能够使用普通 Linux 用户访问 Windows 上的共享文件夹。
|
||||
|
||||
要卸载共享文件夹:
|
||||
|
||||
|
||||
```
|
||||
`sudo umount ~/WindowsShare/`
|
||||
sudo umount ~/WindowsShare/
|
||||
```
|
||||
|
||||
你还可以在系统启动时挂载 Windows 共享文件夹。按照 [这些步骤][20] 相应地配置你的系统。
|
||||
@ -246,7 +207,7 @@ via: https://opensource.com/article/21/4/share-files-linux-windows
|
||||
作者:[Stephan Avenwedde][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[hanszhao80](https://github.com/hanszhao80)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
95
published/202205/20210615 Listen to music on FreeDOS.md
Normal file
95
published/202205/20210615 Listen to music on FreeDOS.md
Normal file
@ -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] 的<ruby>神秘博士:闪点行动<rt>Doctor Who: Flashpoint</rt></ruby>,并在我的 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 是一个<ruby>单任务<rt>single-tasking</rt></ruby>操作系统),所以我不能将 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 没有花哨的用户界面,但你可以使用方向键将 <ruby>文件选择器<rt>File Selector</rt></ruby> 导航到包含要播放的媒体文件的目录。
|
||||
|
||||
![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)
|
177
published/202205/20210617 Linux package management with dnf.md
Normal file
177
published/202205/20210617 Linux package management with dnf.md
Normal file
@ -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 使用 <ruby>包管理系统<rt>package management system</rt></ruby> 来跟踪哪些应用程序需要哪些库,哪些库或应用程序有安全或功能更新,以及每个软件会附带安装哪些额外的数据文件。包管理器本质上是一个安装向导。它们易于使用,提供了图形界面和基于终端的界面,让你的生活更轻松。你越了解你的发行版的包管理器,你的生活就会越轻松。
|
||||
|
||||
### 在 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`。有时,我已经确认我的系统上安装了一个应用程序;我只是不知道我是怎么得到它的。还有一些时候,我知道我安装了一个特定的软件包,但我不清楚这个软件包到底在我的系统上安装了什么。
|
||||
|
||||
如果你需要对包的<ruby>有效负载<rt>payload</rt></ruby>进行 “<ruby>逆向工程<rt>reverse engineer</rt></ruby>”,可以使用 `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` 命令。虽然我不喜欢它的所有子命令,但我发现它是目前最健壮的 <ruby>包管理系统<rt>package management system</rt></ruby> 之一。 [下载我们的 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
|
184
published/202205/20210624 Linux package management with apt.md
Normal file
184
published/202205/20210624 Linux package management with apt.md
Normal file
@ -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 <ubuntu-devel-discuss@lists.ubuntu.com>
|
||||
Original-Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
|
||||
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
|
@ -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
|
@ -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] 等网站上找到<ruby>[知识共享和公共领域][2]<rt>Creative Commons and Public Domain</rt></ruby>的艺术作品。
|
||||
|
||||
如果你使用的网站没有专门搜索<ruby>知识共享<rt>Creative Commons</rt></ruby>的功能,输入以下文字到任何搜索引擎当中,`"This work is licensed under a Creative Commons"` 或 `"本工作处于知识共享许可协议之下"`(引号很重要,不要把它们漏了),并用搜索引擎要求的语法,以便将搜索限制到一个具体的站点当中(举个例子,`site:deviantart.com`)。
|
||||
|
||||
一旦你有了一个可供挑选素材的艺术库,那就去辨别这些作品的主题,并根据主题分类。两个不同的人拍摄的机器人的照片可能看起来一点都不像,但它们的主题都是机器人。如果提供给你足够多机器人相关的美术素材,你可以围绕机器人这个主题构建你的游戏风格。
|
||||
|
||||
#### 2、委托创作知识共享艺术
|
||||
|
||||
你可以雇艺术家来为你定制艺术作品。我与使用开源绘画程序(如 [Krita][7] 和 Mypaint)的艺术家一起合作。同时,作为合同的一部分,我规定艺术作品必须在<ruby>知识共享署名-相同方式许可证<rt>Creative Commons Attribution-ShareAlike</rt></ruby>(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]。你定的规则不必说服玩家去玩这款游戏,不必向他们解释策略,你也不必允许玩家重新设置规则,只要告诉玩家为了让游戏玩起来,他们应该采取的步骤就可以了。
|
||||
|
||||
最重要的是,考虑一下,将你的规则开源。分享经验是游戏的一切,这其中也应该包括规则。知识共享或<ruby>开放游戏许可证<rt>Open Gaming License</rt></ruby>的规则集合允许其他玩家在你的作品上进行迭代、混合和构建。你永远不会知道,有人可能会因此想出一个你更喜欢的游戏变体!
|
||||
|
||||
### 开源游戏
|
||||
|
||||
开源不仅仅指的是软件。开源是一种文化现象,自然也适合桌面游戏。花几个晚上的时间来尝试制作游戏。如果你是新手,那就从一些简单的开始,比如下面的这个空白卡牌游戏:
|
||||
|
||||
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
|
275
published/202205/20220113 Learn Rust in 2022.md
Normal file
275
published/202205/20220113 Learn Rust in 2022.md
Normal file
@ -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(<ruby>非统一内存访问<rt>Non Uniform Memory Access</rt></ruby>)架构,因此 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` 数据类型,但它的作用是充当数据集合的一种模板。因此,你可以使用<ruby>结构体<rt>struct</rt></ruby>,而不是创建一个类来表示虚拟对象:
|
||||
|
||||
```
|
||||
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 默认创建的为<ruby>不可变<rt>immutable</rt></ruby>变量。这意味着你创建的变量以后无法更改。这段代码虽然看起来没问题,但无法编译:
|
||||
|
||||
```
|
||||
fn main() {
|
||||
let n = 6;
|
||||
let n = 5;
|
||||
}
|
||||
```
|
||||
|
||||
但你可以使用关键字 `mut` 声明一个<ruby>可变<rt>mutable</rt></ruby>变量,因此下面这段代码可以编译成功:
|
||||
|
||||
```
|
||||
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 <seth@opensource.com>"]
|
||||
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
|
@ -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
|
@ -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])
|
||||
|
||||
在左边的面板下面,有三个标签:
|
||||
|
||||
* <ruby>文件夹<rt>Folders</rt></ruby>:显示你电脑上的文件夹的树状视图,以便你可以浏览你的文件,寻找更多的照片。
|
||||
* <ruby>信息<rt>Information</rt></ruby>:提供关于你目前正在查看的照片的元数据。
|
||||
* <ruby>操作<rt>Operations</rt></ruby>:允许你对当前的照片进行小的修改,如在横向和纵向之间旋转、调整大小和裁剪等。
|
||||
|
||||
Gwenview 能理解文件系统,所以你可以按键盘上的**右**或**左**箭头,查看文件夹中的上一张或下一张照片。
|
||||
|
||||
要离开单张照片视图并查看一个文件夹中的所有图片,请点击顶部工具栏中的“<ruby>浏览<rt>Browse</rt></ruby>”按钮。
|
||||
|
||||
![Browsing photos in a folder][5]
|
||||
|
||||
(Seth Kenlon,[CC BY-SA 4.0][3])
|
||||
|
||||
你也可以同时拥有两种视图。点击 Gwenview 底部的“<ruby>缩略图栏<rt>Thumbnail Bar</rt></ruby>”按钮,可以以电影胶片的形式看到当前文件夹中的其他图片,而当前选择的照片则在主面板中。
|
||||
|
||||
![Thumbnail view][6]
|
||||
|
||||
(Seth Kenlon,[CC BY-SA 4.0][3])
|
||||
|
||||
### 用 Gwenview 编辑照片
|
||||
|
||||
数码照片是很常见的,因此在网上发布或与朋友分享之前,需要对照片进行细微的调整也是同样常见。有非常好的应用可以编辑照片,事实上,其中最好的一个是另一个 KDE 应用,叫做 Krita(你可以在我的 [给摄影者的 Krita][7] 文章中阅读我如何使用它来处理照片),但是小的调整不应该需要艺术学位。这正是 Gwenview 所确保的:用一个休闲但功能强大的应用进行简单而快速的照片调整,并与你的 Plasma 桌面的其他部分整合。
|
||||
|
||||
我们大多数人对照片进行的最常见的调整是:
|
||||
|
||||
* **旋转**:当你的相机没有提供正确的元数据让你的电脑知道一张照片是要以横向还是纵向观看时,你可以手动修复它。
|
||||
* **镜像**:许多笔记本电脑或面部摄像头模仿镜子,这很有用,因为这是我们习惯于看到自己的方式。但是,它会使文字逆转。**镜像**功能可以从右到左翻转图像。
|
||||
* **翻转**:在数码相机和笔记本电脑上不太常见,但在手机上,无论你怎么拿手机,使用倒置设备拍照的现象在屏幕翻转的手机中并不少见。**翻转**功能可将图像旋转 180 度。
|
||||
* **调整大小**:数字图像现在通常具有超高清尺寸,有时这比你需要的要多得多。如果你通过电子邮件发送照片或将其发布在你想要优化加载时间的网页上,你可以将尺寸(和相应的文件大小)缩小到更小的尺寸。
|
||||
* **裁剪**:你有一张很棒的自己的照片,但不小心偶然发现了一个你认为不合适的人。用裁剪工具剪掉你不想要的所有东西。
|
||||
* **红眼**:当你的视网膜将相机的闪光灯反射回相机时,会得到红眼效果。Gwenview 可以通过在可调节区域中对红色通道进行去饱和和变暗来减少这种情况。
|
||||
|
||||
所有这些工具都在“<ruby>操作<rt>Operations</rt></ruby>”侧面板或“<ruby>编辑<rt>Edit</rt></ruby>”菜单中可用。这些操作具有破坏性,因此在你进行更改后,单击“<ruby>另存为<rt>Save As</rt></ruby>”以保存图像的 _副本_。
|
||||
|
||||
![Cropping a photo in Gwenview][8]
|
||||
|
||||
(Seth Kenlon,[CC BY-SA 4.0][3],照片由 [Elise Wilcox][9] 提供)
|
||||
|
||||
### 分享照片
|
||||
|
||||
当你准备好分享照片时,单击顶部工具栏中的“<ruby>分享<rt>Share</rt></ruby>”按钮,或转到“<ruby>插件<rt>Plugins</rt></ruby>”菜单并选择“<ruby>导出<rt>Export</rt></ruby>”。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
|
@ -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 内核引入了 “<ruby>控制组<rt>cgroup</rt></ruby>”,允许你能够使用 “<ruby>命名空间<rt>namespace</rt></ruby>” 来“标记”进程。当你将进程分组到一个命名空间时,这些进程的行为就像在命名空间之外的东西不存在一样,这就像你把这些进程放入某种容器中。当然,这种容器是虚拟的,它位于计算机内部,它和你操作系统的其余进程使用相同的内核、内存和 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、在吊舱中运行容器
|
||||
|
||||
正如名字所暗示的那样,容器在设计上是独立的。在容器中运行的应用程序不应该与在容器外的应用程序或基础设施进行交互。因此,当一个容器需要另一个容器才能运行时,一种解决方案是将这两个容器放在一个更大的容器中,称为 “<ruby>吊舱<rt>pod</rt></ruby>”。吊舱确保其容器可以共享重要的命名空间以便相互通信。
|
||||
|
||||
创建一个新的吊舱,为它提供一个名称,以及希望能够访问的端口:
|
||||
|
||||
```
|
||||
$ 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
|
@ -3,42 +3,43 @@
|
||||
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "aREversez"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14547-1.html"
|
||||
|
||||
2022 最适合程序员的 10 款 Linux 发行版 [精选]
|
||||
最适合程序员的 10 款 Linux 发行版
|
||||
======
|
||||
我们为程序员和开发人员总结了 2022 年最好用的 10 款 Linux 发行版,以便他们开展日常工作和个人项目。由于工作和项目需要,程序员和开发人员会用到各种工具和应用,包括代码编辑器、编译器、插件以及数据库等等。若对现代开发人员的工作流程做一番整理,一般流程如下:
|
||||
|
||||

|
||||
|
||||
> 我们为程序员和开发人员总结了 2022 年最好用的 10 款 Linux 发行版,以便他们开展日常工作和个人项目。
|
||||
|
||||
由于工作和项目需要,程序员和开发人员会用到各种工具和应用,包括代码编辑器、编译器、插件以及数据库等等。若对现代开发人员的工作流程做一番整理,一般流程如下:
|
||||
|
||||
- 创建代码仓库
|
||||
- 编程
|
||||
- 调试
|
||||
- 测试
|
||||
- 配置
|
||||
|
||||
|
||||
- 部署
|
||||
|
||||
上述工作流程需要用到各种各样的工具,一份标准的工具清单如下:
|
||||
|
||||
- 代码编辑器
|
||||
- 简单的文本编辑器
|
||||
- 网络浏览器(包括 web 开发人员使用的各种浏览器)
|
||||
- 网页浏览器(包括 Web 开发人员使用的各种浏览器)
|
||||
- 数据库引擎
|
||||
- 本地服务器
|
||||
- 各类编程语言的编译器
|
||||
- 调试程序
|
||||
- 调试器
|
||||
- 监视或分析工具(客户端或者网页端)
|
||||
|
||||
|
||||
|
||||
与 Windows 相比,Linux 可以说是编程的最佳平台。之所以这样说,主要是因为 Linux 发行版与 Windows 不同,预装了许多功能强大的包和软件,自行安装也比较容易。在本文中,考虑到一些原因,我不会将 macOS 纳入对比范围之内。
|
||||
|
||||
综上,本文将整理出 2022 年最适合程序员的 10 款 Linux 发行版。
|
||||
|
||||
### 2022 最适合程序员的 10 款 Linux 发行版
|
||||
|
||||
#### 1、Fedora Workstation
|
||||
#### 1、Fedora 工作站
|
||||
|
||||
![Fedora 35 Workstation][1]
|
||||
|
||||
@ -46,29 +47,29 @@
|
||||
|
||||
Fedora Linux 默认安装了开箱即用的主流开发软件包,包括 PHP、OpenJDK、PostgreSQL、Django、Ruby on Rails 以及 Ansible 等等。
|
||||
|
||||
dnf 是 Fedora Linux 的包管理器,有了它,安装代码编辑器以及其他软件就相当容易了。此外,你还可以使用应用商店 Software 一键搜索、安装软件。
|
||||
dnf 是 Fedora Linux 的包管理器,有了它,安装代码编辑器以及其他软件就相当容易了。此外,你还可以使用“软件”应用商店一键搜索、安装软件。
|
||||
|
||||
Fedora Linux 支持 Snap 和 Flatpak,使用起来会更加灵活方便。你还可以使用 RPM Fusion 仓库,获取大量免费或收费的软件。因为许可证等一些原因, Fedora Linux 不希望一些包储存在其主仓库内,于是就有了 RPM Fusion。
|
||||
Fedora Linux 支持 Snap 和 Flatpak,使用起来会更加灵活方便。你还可以使用 RPM Fusion 仓库,获取大量自由或非自由的软件。因为许可证等一些原因,Fedora Linux 不希望在其主仓库内包括这些包,于是就有了 RPM Fusion。
|
||||
|
||||
点击下方链接,了解 Fedora Linux 最新版本。
|
||||
|
||||
[下载 Fedora][2]
|
||||
> **[下载 Fedora][2]**
|
||||
|
||||
#### 2、Ubuntu Linux
|
||||
|
||||
![Ubuntu Desktop is a perfect Linux Distribution for Programmers.][3]
|
||||
|
||||
在今天,无论是服务器还是个人电脑,使用最为广泛的发行版当属 Ubuntu Linux。Ubuntu 提供长期支持版本,每个长期支持版本的官方支持年限为五年(外加五年的维护支持),每年为高级用户提供两个短期版本。
|
||||
在今天,无论是服务器还是个人电脑,使用最为广泛的发行版当属 Ubuntu Linux。Ubuntu 提供长期支持版本,每个长期支持版本官方提供五年的支持(外加五年的维护支持),并且每年为高级用户提供两个短期版本。
|
||||
|
||||
由于 Ubuntu 非常流行,各种包与软件的供应商都会提供适用于 Ubuntu 的版本(.deb)。此外,得益于广泛的知名度,Ubuntu 有着更为庞大的论坛群体和更为丰富的帮助文档。所以说,Ubuntu 是开发人员的最佳之选,尤其是在开发过程中陷入难题的时候,Ubuntu 更能发挥其作用。点击下方链接,了解更多。
|
||||
|
||||
[下载 Ubuntu][4]
|
||||
> **[下载 Ubuntu][4]**
|
||||
|
||||
#### 3、openSUSE
|
||||
|
||||
openSUSE 是最稳定、最专业的 Linux 发行版之一,是企业界(包括个人电脑、服务器以及瘦客户机)的首选解决方案。openSUSE 作为关键系统,在世界范围内得到了广泛应用。
|
||||
openSUSE 是用在全球关键系统中最稳定、最专业的 Linux 发行版之一,是企业界(包括个人电脑、服务器以及瘦客户机)的首选解决方案。
|
||||
|
||||
相较于 Ubuntu 和 Fedora,openSUSE 具有一些独特的优势。首先,openSUSE 有两个版本:Leap 和 Tumbleweed。其中,openSUSE Leap 属于长期支持版,为用户带来稳定的升级体验。openSUSE Tumbleweed 属于滚动发行版,有着最新、最强大的软件包。
|
||||
相较于 Ubuntu 和 Fedora,openSUSE 具有一些独特的优势。首先,openSUSE 有两个版本:Leap 和 Tumbleweed。其中,openSUSE Leap 属于长期支持版,为用户带来稳定的升级体验。openSUSE Tumbleweed 属于滚动发行版,有着最新、最尖端的软件包。
|
||||
|
||||
如果你想获得最新的包和硬件支持,助力开发工作,你可以选择 openSUSE Tumbleweed;如果你想要的是稳定性,无需频繁维护即可长期运行,openSUSE Leap 会更适合你。
|
||||
|
||||
@ -78,7 +79,7 @@ openSUSE 是最稳定、最专业的 Linux 发行版之一,是企业界(包
|
||||
|
||||
如果你有一些 Linux 发行版的使用经验,推荐选择 openSUSE 进行开发工作。
|
||||
|
||||
[下载 openSUSE][5]
|
||||
> **[下载 openSUSE][5]**
|
||||
|
||||
#### 4、Manjaro Linux
|
||||
|
||||
@ -86,25 +87,21 @@ Manjaro Linux 基于 Arch Linux,不过安装起来更容易一些。Manjaro Li
|
||||
|
||||
如果你想使用 Arch Linux 及其滚动发行的软件包来满足开发需求,但又不想在安装原版 Arch 上来回折腾,Manjaro 绝对是你的最佳选择。
|
||||
|
||||
[下载 Manjaro][6]
|
||||
> **[下载 Manjaro][6]**
|
||||
|
||||
#### 5、Arch Linux
|
||||
|
||||
尽管有 Manjaro 以及其他基于 Arch Linux 的发行版,而且安装操作非常简单,你可能还是想在自己的定制电脑上折腾一番,亲自动手[安装原版 Arch][7]。
|
||||
尽管有 Manjaro 以及其他基于 Arch Linux 的发行版,而且安装操作非常简单,你可能还是想在自己的定制电脑上折腾一番,亲自动手 [安装原版 Arch][7]。
|
||||
|
||||
不过这种选择更适合程序员和开发人员,因为他们想得到更多的掌控权,或者想要定制一个 Linux 操作系统,用于开发项目或满足开发需求。这样一来,他们可能就会安装 Arch Linux,选择自己最喜欢的桌面,设置专用于开发工作的操作系统。
|
||||
|
||||
[][8]
|
||||
|
||||
推荐阅读:[Nitrux 最佳 Maui 应用程序][24]
|
||||
|
||||
假设你对 Arch Linux 和普通的电脑都比较熟悉,那么 Arch Linux 就是你的最佳选择,因为在自己定制的 Linux 操作系统上,你可以完全控制每一个软件包。
|
||||
|
||||
[下载 Arch Linux][9]
|
||||
> **[下载 Arch Linux][9]**
|
||||
|
||||
#### 6、Pop OS
|
||||
|
||||
Pop OS(即 Pop!_OS)由电脑制造商 System76 针对其系列硬件开发,是一款基于 Ubuntu 的免费开源发行版。发行周期与 Ubuntu 保持同步,并为用户提供了额外的调整工具和软件包。
|
||||
Pop OS(即 Pop!_OS)由电脑制造商 System76 针对其系列硬件开发,是一款基于 Ubuntu 的自由开源的发行版。发行周期与 Ubuntu 保持同步,并为用户提供了额外的调整工具和软件包。
|
||||
|
||||
![Pop OS 21.10 Desktop][10]
|
||||
|
||||
@ -114,7 +111,7 @@ Pop OS 基于 Ubuntu,默认支持多种程序语言,所以非常适合程序
|
||||
|
||||
如果你既想要基于 Ubuntu,又想要适合程序员的稳定 Linux 发行版,推荐选择 Pop OS。
|
||||
|
||||
[下载 POP OS][11]
|
||||
> **[下载 POP OS][11]**
|
||||
|
||||
#### 7、KDE Neon
|
||||
|
||||
@ -124,17 +121,17 @@ KDE Neon 基于 Ubuntu 长期支持版本,兼具最新的 KDE Plasma 桌面和
|
||||
|
||||
运行速度快,程序开箱即用,用户界面友好,广泛的社区支持,如你所愿,完美如斯。
|
||||
|
||||
[下载 KDE Neon][12]
|
||||
> **[下载 KDE Neon][12]**
|
||||
|
||||
#### 8、Debian
|
||||
|
||||
Debian GUN/Linux 就无需过多介绍了。Debian 的稳定分支是 Ubuntu 及其衍生系统的基础。换句话说,Debian 是最基本、最稳定的 Linux 发行版。优秀的稳定性和较长的支持时间使得 Debian 非常适合用做开发环境。
|
||||
Debian GUN/Linux 就无需过多介绍了。Debian 的稳定分支是 Ubuntu 及其衍生系统的基础。换句话说,Debian 是最主要、最稳定的 Linux 发行版之一。优秀的稳定性和较长的支持时间使得 Debian 非常适合用做开发环境。
|
||||
|
||||
不过,Debian 的稳定分支比较保守,很少使用最新的软件包。毕竟全世界都依赖 Debian 的稳定运行,所以维护者在检查、合并软件包时必须十分谨慎。
|
||||
不过,Debian 的稳定分支比较保守,很少使用最新的软件包。毕竟全世界(几乎)都依赖 Debian 的稳定运行,所以维护者在检查、合并软件包时必须十分谨慎。
|
||||
|
||||
Debian 不仅能够长期稳定运行,而且维护成本较低,是高级用户和系统管理员绝佳的编程环境。
|
||||
|
||||
[下载 Debian Linux][13]
|
||||
> **[下载 Debian Linux][13]**
|
||||
|
||||
#### 9、Kali Linux
|
||||
|
||||
@ -142,7 +139,7 @@ Kali Linux 由 Offensive Security 开发,服务对象为道德黑客和查找
|
||||
|
||||
对技术娴熟的程序员和开发人员来说,Kali Linux 堪称最佳之选。如果你精通 Linux,具备解决错误和依赖问题的经验,推荐选择 Kali Linux。
|
||||
|
||||
[下载 Kali Linux][14]
|
||||
> **[下载 Kali Linux][14]**
|
||||
|
||||
#### 10、Fedora Labs
|
||||
|
||||
@ -150,7 +147,9 @@ Kali Linux 由 Offensive Security 开发,服务对象为道德黑客和查找
|
||||
|
||||
Fedora Labs 为程序员、科学家、学生等各类人群提供各类专业化的 Linux 发行版,内置各类专业软件、包和工具。很多人并没有意识到 Fedora Labs 的优势,只要经过适当的配置,这些版本都是非常优秀的发行版。
|
||||
|
||||
我们来总结一下这些 Fedora Labs。
|
||||
我们来总结一下这些 Fedora Labs:
|
||||
|
||||
Fedora Scientific:
|
||||
|
||||
* 采用 KDE Plasma 桌面,集成科学和数学领域的各种开源工具
|
||||
* 软件清单如下:
|
||||
@ -161,16 +160,20 @@ Fedora Labs 为程序员、科学家、学生等各类人群提供各类专业
|
||||
* Pandas:用于数据处理的 Python 库
|
||||
* IPython
|
||||
* Java 和 R 程序语言相关包
|
||||
* 了解更多,请点击 [下载 Fedora Scientific][15]
|
||||
|
||||
> **[下载 Fedora Scientific][15]**
|
||||
|
||||
* 采用 GNOME 桌面环境,预装神经科学领域的各种开源包和应用。了解更多,请点击 [下载 Comp Neuro][25]
|
||||
Fedora COMP NEURO:
|
||||
|
||||
* 采用 GNOME 桌面环境,预装神经科学领域的各种开源包和应用。
|
||||
|
||||
> **[下载 Comp Neuro][25]**
|
||||
|
||||
Fedora Robotics Suite:
|
||||
|
||||
* 集成各种开源机器人技术包和软件,适合初学者、资深计算机科学家和编程人员。
|
||||
* 了解更多,[下载 Fedora Robotics][16].
|
||||
|
||||
|
||||
> **[下载 Fedora Robotics][16]**
|
||||
|
||||
除了上述版本,还有 [Fedora Security Labs][17]、[Fedora Astronomy][18] 和 [Fedora Python Classroom][19] 可供选择。
|
||||
|
||||
@ -180,9 +183,7 @@ Fedora Labs 为程序员、科学家、学生等各类人群提供各类专业
|
||||
|
||||
那么,怎样才能从以上 10 款 最适合程序员的 Linux 发行版中选出自己最喜欢的呢?
|
||||
|
||||
如果你想要一款开发系统,但又不想耗费太多精力,拿不定主意的话,推荐使用 Fedora Workstation 或者 Ubuntu。
|
||||
|
||||
If you have spare time or want more control in your system, like experimenting and being comfortable with occasional errors, then go for Arch Linux based systems.
|
||||
如果你想要一款开发系统,但又不想耗费太多精力,拿不定主意的话,推荐使用 Fedora 工作站或者 Ubuntu。
|
||||
|
||||
如果你的空闲时间比较多或者想要进一步掌控自己的系统,乐于尝试并且能够忍受偶尔发生的错误,推荐选择基于 Arch Linux 的系统。
|
||||
|
||||
@ -192,10 +193,6 @@ If you have spare time or want more control in your system, like experimenting a
|
||||
|
||||
祝你好运!
|
||||
|
||||
* * *
|
||||
|
||||
我们分享最新的技术、软件等重要新闻资讯,关注我们的 [Telegram][20]、[Twitter][21]、[YouTube][22] 和 [Facebook][23],不要错过最新内容!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.debugpoint.com/2022/03/top-linux-distributions-programmers-2022/
|
||||
@ -203,7 +200,7 @@ via: https://www.debugpoint.com/2022/03/top-linux-distributions-programmers-2022
|
||||
作者:[Arindam][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[aREversez](https://github.com/aREversez)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -3,21 +3,24 @@
|
||||
[#]: author: "Jayashree Huttanagoudar https://opensource.com/users/jayashree-huttanagoudar"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "Veryzzj"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14553-1.html"
|
||||
|
||||
面向 Java 开发人员的 JVM 参数指南
|
||||
======
|
||||
|
||||
通过理解和使用 JVM 以及 JVM 参数,开发人员和终端用户都可以诊断故障并且提高 Java 应用程序的性能。
|
||||

|
||||
|
||||
当你在编写源代码时,你是在编写人类可以阅读的代码。在将代码编译成机器语言之前,计算机无法执行它。机器语言是一个通用术语,指的是特定机器所需的任意数量的语言。通常,如果你在 Linux 上编译代码,它只能 Linux 上运行;如果你在 Windows 上编译代码,它就只在 Windows 上运行。但是,Java 是不同的,它并不以真实的机器为目标,而是面向 Java 虚拟机(JVM)。因此,它可以在任何机器上运行。
|
||||
> 通过理解和使用 JVM 以及 JVM 参数,开发人员和最终用户都可以诊断故障并且提高 Java 应用程序的性能。
|
||||
|
||||
Java 源代码被编译成字节码,然后由安装在计算机上的 JVM 运行。JVM 是一个执行引擎,但我们通常不会直接与它交互。它在后台静默运行,替我们处理 Java 字节码。大多数人不需要考虑,甚至也不需要知道 JVM。但是,了解它的工作原理是对我们来说是非常有用的,因为这会有助于我们调试和优化 Java 代码。例如:
|
||||
当你在编写源代码时,你是在编写人类可以阅读的代码。在将代码编译成机器语言之前,计算机无法执行它。机器语言是一个通用术语,指的是特定机器所需的任意数量的语言。通常,如果你在 Linux 上编译代码,它只能 Linux 上运行;如果你在 Windows 上编译代码,它就只在 Windows 上运行。但是,Java 是不同的,它并不以真实的机器为目标,而是面向 <ruby>Java 虚拟机<rt>Java Virtual Machine</rt></ruby>(JVM)。因此,它可以在任何机器上运行。
|
||||
|
||||
Java 源代码被编译成<ruby>字节码<rt>bytecode</rt></ruby>,然后由安装在计算机上的 JVM 运行。JVM 是一个执行引擎,但我们通常不会直接与它交互。它在后台静默运行,替我们处理 Java 字节码。大多数人不需要考虑,甚至也不需要知道 JVM。但是,了解它的工作原理是对我们来说是非常有用的,因为这会有助于我们调试和优化 Java 代码。例如:
|
||||
|
||||
* 在生产环境中,你发现已经部署的应用程序可能需要提升性能。
|
||||
* 如果你写的应用程序出错了,开发人员和终端用户都可以选择进行问题调试。
|
||||
* 如果你想了解关于 JDK(即 Java 开发工具包,用于开发/运行 Java 应用程序)的详细信息,你可以通过查询 JVM 来获取它们。
|
||||
* 如果你写的应用程序出错了,开发人员和最终用户都可以选择对问题进行调试。
|
||||
* 如果你想了解关于 JDK(即 <ruby>Java 开发工具包<rt>Java Development Kit</rt></ruby>,用于开发/运行 Java 应用程序)的详细信息,你可以通过查询 JVM 来获取。
|
||||
|
||||
本文介绍了一些基础的 JVM 参数,希望在这些场景中可以提供帮助。
|
||||
|
||||
@ -29,9 +32,9 @@ Java 源代码被编译成字节码,然后由安装在计算机上的 JVM 运
|
||||
|
||||
Java 有许多 J 开头的缩略词,包括 JVM、JDK 和 JRE。
|
||||
|
||||
* Java 开发工具包(JDK)可供需要在代码中使用开发库的程序员使用。
|
||||
* Java 运行时环境(JRE)可供想运行 Java 应用程序的人使用。
|
||||
* Java 虚拟机(JVM)是运行 Java 字节码的组件。
|
||||
* <ruby>Java 开发工具包<rt>Java Development Kit</rt></ruby>(JDK)可供需要在代码中使用开发库的程序员使用。
|
||||
* <ruby>Java 运行时环境<rt>Java Runtime Environment</rt></ruby>(JRE)可供想运行 Java 应用程序的人使用。
|
||||
* <ruby>Java 虚拟机<rt>Java Virtual Machine</rt></ruby>(JVM)是运行 Java 字节码的组件。
|
||||
|
||||
JDK 同时包含 JRE 和 JVM,但有些 Java 发行版提供了包含 JRE(包括 JVM)的替代下载。
|
||||
|
||||
@ -39,11 +42,11 @@ JDK 同时包含 JRE 和 JVM,但有些 Java 发行版提供了包含 JR
|
||||
|
||||
(图源:Jayashree Huttanagoudar,CC BY-SA 4.0)
|
||||
|
||||
Java 是开源的,因此,许多不同的公司都会建立和发布他们自己的 JDK。你可以在系统上安装多个 JDK,这会对你参与或者运行不同的 Java 项目时很有帮助,因为其中一些项目可能使用旧版本的 JDK。
|
||||
Java 是开源的,因此,许多不同的公司都会构建和发行他们自己的 JDK 发行版。你可以在系统上安装多个 JDK,这会对你参与或者运行不同的 Java 项目时很有帮助,因为其中一些项目可能使用旧版本的 JDK。
|
||||
|
||||
你可以使用 `alternatives` 命令,来查看 Linux 系统上的 JDK 列表:
|
||||
|
||||
```shell
|
||||
```
|
||||
$ alternatives --config java
|
||||
There are 2 programs that provide java.
|
||||
Selection Command
|
||||
@ -56,7 +59,7 @@ Enter to keep the current selection[+], or type selection number:
|
||||
|
||||
如果想要在可用的 JDK 之间进行切换,请再次执行该命令:
|
||||
|
||||
```shell
|
||||
```
|
||||
$ sudo alternatives --config java
|
||||
```
|
||||
|
||||
@ -68,20 +71,20 @@ JVM 调优指的是,通过调整 JVM 参数,来提高 Java 应用程序
|
||||
|
||||
通常情况下,在调试之前需要考虑以下几点:
|
||||
|
||||
* 成本:有时改进运行代码的硬件可以提高应用程序的性能。这可能看起来像是在“作弊”,但请考虑你愿意花多少时间调整 JVM 参数。有时应用程序需要更多的内存来执行所需的功能,而这点是任何软件技术都无法改变的。
|
||||
* 期望结果:长期来看,稳定性比性能更重要。如果你的调优对稳定性产生了影响,那么谨慎地选择你的调优参数可能会更好。
|
||||
* 潜在问题:有时,这个问题可能是主机操作系统的潜在问题。那么,在调整 JVM 之前,请确保 JVM 平台按预期工作。
|
||||
* 内存泄漏:如果你在使用垃圾回收(GC)调优参数,那么,应用程序代码中很可能会存在需要修复的内存泄漏。
|
||||
* **成本**:有时改进运行代码的硬件可以提高应用程序的性能。这可能看起来像是在“作弊”,但请考虑你愿意花多少时间调整 JVM 参数。有时应用程序需要更多的内存来执行所需的功能,而这点是任何软件技术都无法改变的。
|
||||
* **期望结果**:长期来看,稳定性比性能更重要。如果你的调优对稳定性产生了影响,那么谨慎地选择你的调优参数可能会更好。
|
||||
* **底层问题**:有时,问题可能是主机操作系统的底层问题。那么,在调整 JVM 之前,请确保 JVM 平台按预期工作。
|
||||
* **内存泄漏**:如果你在使用垃圾回收(GC)调优参数,那么,应用程序代码中很可能会存在需要修复的内存泄漏。
|
||||
|
||||
### 参数类型
|
||||
|
||||
JVM 参数可以分为以下三类:标准参数、非标准参数和高级选项.
|
||||
JVM 参数可以分为以下三类:标准参数、非标准参数和高级选项。
|
||||
|
||||
#### 标准参数
|
||||
|
||||
所有的 JVM 实现都支持标准参数,在终端执行 `java` 命令来查看标准参数列表。
|
||||
所有的 JVM 实现都支持标准参数,在终端执行 `java` 命令来查看标准参数列表:
|
||||
|
||||
```shell
|
||||
```
|
||||
$ java
|
||||
Usage: java [options] <mainclass> [args...]
|
||||
(to execute a class)
|
||||
@ -104,7 +107,7 @@ To specify an argument for a long option, you can use --<name>=<value> or
|
||||
|
||||
这些是所有 JVM 都会包含的标准参数,你可以像使用任何 [命令行选项][5] 一样安全地使用它们。例如,要验证配置的命令选项,创建 VM 并加载主类而不执行主类,请使用:
|
||||
|
||||
```shell
|
||||
```
|
||||
$ java --dry-run <classfile>
|
||||
```
|
||||
|
||||
@ -112,7 +115,7 @@ $ java --dry-run <classfile>
|
||||
|
||||
非标准选项以 `-X` 开头。这些是通用的,并且特定于 JVM 的特定实现。要列出这些参数,请输入:
|
||||
|
||||
```shell
|
||||
```
|
||||
$ java -X
|
||||
-Xbatch disable background compilation
|
||||
-Xbootclasspath/a:<directories and zip/jar files separated by :>
|
||||
@ -124,20 +127,20 @@ displays more detailed JVM version information than the
|
||||
[...]
|
||||
```
|
||||
|
||||
在这些参数发生变化时,你可能不会收到通知。而且,并非所有 JVM 实现都支持这些参数。
|
||||
在这些参数可能会不经通知就发生变化。而且,并非所有 JVM 实现都支持这些参数。
|
||||
|
||||
Microsoft 构建的 JVM 可能与 RedHat 构建的 JVM 有不同的参数,诸如此类。
|
||||
微软构建的 JVM 可能与 RedHat 构建的 JVM 有不同的参数,诸如此类。
|
||||
|
||||
要获取详细的 JVM 版本信息,请使用如下命令:
|
||||
|
||||
```shell
|
||||
```
|
||||
$ 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)
|
||||
```
|
||||
|
||||
要获取属性设置,请使用:
|
||||
要获取这些属性设置,请使用:
|
||||
|
||||
```shell
|
||||
```
|
||||
$ java -XshowSettings:properties --version
|
||||
```
|
||||
|
||||
@ -147,19 +150,19 @@ $ java -XshowSettings:properties --version
|
||||
|
||||
这些参数以 `-XX` 开头。如需列出参数列表,使用如下命令:
|
||||
|
||||
```shell
|
||||
```
|
||||
$ java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
|
||||
```
|
||||
|
||||
例如,需要跟踪类的加载,那么使用下面的命令:
|
||||
|
||||
```shell
|
||||
```
|
||||
$ java -XX:+TraceClassLoading Hello
|
||||
```
|
||||
|
||||
在 `Hello.java` 中:
|
||||
|
||||
```java
|
||||
```
|
||||
public class Hello {
|
||||
public static void main(String[] args) {
|
||||
System.out.println("Inside Hello World!");
|
||||
@ -167,9 +170,9 @@ public class Hello {
|
||||
}
|
||||
```
|
||||
|
||||
另一个可能会面临的问题是 OOM(Out Of Memory)错误,它发生的时候可能没有太多的调试信息。为了解决这个问题,使用调试参数 `-XX:+HeapDumpOnOutOfMemoryError`,它可以创建一个带有调试信息的 `.hprof` 文件。
|
||||
另一个可能会面临的问题是 OOM(<ruby>内存超出<rt>Out Of Memory</rt></ruby>)错误,它发生的时候可能没有太多的调试信息。为了解决这个问题,使用调试参数 `-XX:+HeapDumpOnOutOfMemoryError`,它可以创建一个带有调试信息的 `.hprof` 文件。
|
||||
|
||||
```java
|
||||
```
|
||||
// TestClass.java
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -184,7 +187,7 @@ public class TestClass {
|
||||
}
|
||||
```
|
||||
|
||||
```shell
|
||||
```
|
||||
$ Javac TestClass.java
|
||||
$ java -XX:+HeapDumpOnOutOfMemoryError -Xms10m -Xmx1g TestClass
|
||||
java.lang.OutOfMemoryError: java heap space
|
||||
@ -207,7 +210,7 @@ via: https://opensource.com/article/22/4/jvm-parameters-java-developers
|
||||
作者:[Jayashree Huttanagoudar][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[Veryzzj](https://github.com/Veryzzj)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,171 @@
|
||||
[#]: subject: "Difference Between Ubuntu 22.04 and Ubuntu 20.04 LTS"
|
||||
[#]: via: "https://www.debugpoint.com/2022/04/difference-ubuntu-22-04-20-04/"
|
||||
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "PeterPan0106"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14572-1.html"
|
||||
|
||||
Ubuntu 22.04 LTS 和 20.04 LTS 之间的十大变化
|
||||
======
|
||||
|
||||

|
||||
|
||||
> 这里为准备从 20.04 LTS 迁移到 22.04 LTS 的用户列出了十个最重要的变化。
|
||||
|
||||
如果你是一位 [Ubuntu 20.04 LTS “Focal Fossa”][1] 用户,并准备迁移到 [Ubuntu 22.04 LTS “Jammy Jellyfish”][2],这篇文章将为你提供一些指引。在这两个 LTS 版本之间存在巨大的结构性变化,这在 LTS 分支中一般比较罕见。对比下来,不难发现本次更新一次性改变了大量的内容。
|
||||
|
||||
了解了这一点之后,本文将针对普通用户关切的方面,列出十个发生根本性变化的特性,并为用户提供一些指引。
|
||||
|
||||
### Ubuntu 22.04 LTS 与 Ubuntu 20.04 LTS – 特性变化
|
||||
|
||||
#### 1、徽标、颜色和 Plymouth 动画
|
||||
|
||||
第一个你会注意到的视觉变化便是基调颜色相比早期的两个“棕橙色”变得更“橙色”。同时 Canonical 对徽标进行了修改,这一点体现在开机时 Plymouth 动画中。新的徽标乍一看会显得有些怪异,但看久了会比较顺眼,至少我认为这是一个十分与众不同的徽标。
|
||||
|
||||
![New Ubuntu logo and Plymouth][3]
|
||||
|
||||
#### 2、安装
|
||||
|
||||
Ubuntu 的默认安装程序并没有看到太多变化。我们其实更希望最新的 [基于 Flutter 的安装程序][4] 能够最终落地,但并没有。基于此,整体安装流程并未发生变化。我仅能够观察到对话框和按钮的强调色发生了变化。从功能角度而言,安装流程并未发生任何变化。
|
||||
|
||||
![Colour differences between two LTS Versions][5]
|
||||
|
||||
#### 3、锁屏与登录界面、桌面的初始界面以及壁纸
|
||||
|
||||
锁屏与登录界面的渐变变得更为精细,密码框采用了无边框设计。初次登录时的布局和壁纸发生了很大的变化。桌面的 “家目录” 快捷方式被重命名为 “Home”,而非你的用户名,但回收站快捷方式则移到了左侧的任务栏中,并用分隔符与其他任务栏图标隔开了。
|
||||
|
||||
除此之外,顶部状态栏并未大改。系统托盘的菜单则进行了细微的修正,布局更为宽松。这些变化主要来自于 [GNOME 42][6] 的变化。
|
||||
|
||||
日历菜单并未发生变化。
|
||||
|
||||
![Ubuntu 20.04 Vs Ubuntu 22.04 – Login Screen][7]
|
||||
|
||||
![Ubuntu 20.04 Vs Ubuntu 22.04 – Lock Screen][8]
|
||||
|
||||
![Difference between Ubuntu 20.04 and Ubuntu 22.04 – default look][9]
|
||||
|
||||
#### 4、桌面布局和 GNOME 版本升级
|
||||
|
||||
一个十分明显的变化就是 GNOME 版本由 GNOME 3.36 升级到了 GNOME 42。这是所有升级用户都会看到的显而易见的升级。Ubuntu 22.04 LTS 搭载的 GNOME 42 带来了水平的工作区视图以及水平的应用视图。所以,迁移之后手势从垂直转变为水平会有一些不习惯,但用一段时间就好了。
|
||||
|
||||
如果你的设备是触控屏的笔记本电脑或屏幕,经过一点学习之后,新的 GNOME 42 手势会给你十分顺滑的使用体验。以下是桌面、应用和工作区的对比图。
|
||||
|
||||
![Activities View Difference – Ubuntu 20.04 and 22.04][10]
|
||||
|
||||
![Application View Difference – Ubuntu 20.04 and 22.04][11]
|
||||
|
||||
#### 5、新的强调色与显示样式
|
||||
|
||||
有一个我非常喜欢的变化是最新的浅色和深色主题。早先 Ubuntu 有三个选择:浅色、深色和混合(标准)。这在 GNOME 42 中发生了改变,因为其本身就带有内置的浅色和深色模式。另一方面,它还引入了一个新的强调色选项(这并不是原本的 GNOME 42 带来的),允许用户在全局进行自定义。
|
||||
|
||||
当然,你还不能像 KDE Plasma 一样选择自定义的强调色。这些变化大多来自于最近的 libadwaita 和 GTK4 对 GNOME Shell 和原生应用程序的移植。
|
||||
|
||||
而当你在 Ubuntu 22.04 LTS 中打开深色模式,它会自动应用于所有支持的应用,这是一个与 Ubuntu 20.04 LTS 十分显著的区别。
|
||||
|
||||
![Accent Color and other changes][12]
|
||||
|
||||
![How Accent colour change impact looks in Ubuntu 22.04 LTS][13]
|
||||
|
||||
#### 6、文件管理器
|
||||
|
||||
在这个版本中,文件管理器的版本由 3.36.x 升级到了 42。区别是你能看到更为紧凑的设计、在文字和选项之间更为合理的布局,以及顶部控制栏的小工具风格,这一切都归功于 GTK4 和对底层错误的修复。文件中的地址栏有些不同,目录之间有一个分隔符,而汉堡菜单在最后。当然,这些变化都较为细微,你可能不会感受到它们之间有什么不同。
|
||||
|
||||
![Files Difference – Ubuntu 20.04 vs 22.04][14]
|
||||
|
||||
#### 7、截图工作流的变化
|
||||
|
||||
另一个值得注意并且需要用户进行学习的是截图方式的改变。它完全改变了。早先你按下 `Print Screen` 键时,会自动截图并保存到图片文件夹中。现在有了 GNOME 42 内置的截图和录屏工具,工作流程被完全改变。
|
||||
|
||||
当你在截图时,你会发现有三个选项,你可以选择某个区域、全屏截图或者特定窗口。更重要的是,你还能选择是否让光标出现在截图中,此外还有录屏功能可选。选择完成之后点击“捕捉”按钮,这张图片将在被保存到图片文件夹,并同时复制到你的剪切板。
|
||||
|
||||
![New Screenshot tool in Ubuntu 22.04 LTS][16]
|
||||
|
||||
总体而言,相较于之前多了一个步骤。
|
||||
|
||||
在所有应用程序窗口顶部的右键菜单上,增添了一个新的截图选项。
|
||||
|
||||
![Take Screenshot option in top bar menu][17]
|
||||
|
||||
#### 8、 Firefox 浏览器成为了 Snap 版本
|
||||
|
||||
此外,Firefox 浏览器在本次更新中变成了 Snap 版本。而此前在 20.04 LTS 中,Firefox 浏览器以 deb 包形式呈现。这对于一般用户而言区别不大。
|
||||
|
||||
但是 Firefox 浏览器的 Snap 沙箱运行模式使得安装 GNOME 扩展工具时会产生问题,同时在同等硬件条件之下相较于之前的版本会显得更慢。
|
||||
|
||||
这个最为常用的应用的 Snap 迁移所带来的后续影响我们将拭目以待。
|
||||
|
||||
#### 9、不同的设置窗口
|
||||
|
||||
在设置中出现了一个新的面板:多任务。多任务面板允许你调整触发角以及激活窗口边缘。此外你可以指定工作区的数量,并设置自动删除空的工作区。而针对多显示器用户,现在可以选择仅在主屏幕上显示工作区或是在所有屏幕上显示工作区。
|
||||
|
||||
![New Multitasking Panel in Settings][18]
|
||||
|
||||
#### 10、主题和应用更新
|
||||
|
||||
此外,软件的变化带来了不同的响应式外观并能够适应任何形式。软件商店同时带来了新的界面,包含了按照类别分类的软件视图以及“编辑之选”栏目。
|
||||
|
||||
应用详情页面变得更加易读,重要的信息,例如总下载大小、评分、安全标记以及应用截图都以更可辨别地方式呈现。
|
||||
|
||||
![GNOME Software – Home page difference][19]
|
||||
|
||||
![GNOME Software – Details page difference][20]
|
||||
|
||||
最后,这两个版本的内部差异出现在软件包、官方桌面环境主题和错误修正上。下面是对重要软件包版本变化的一个对比:
|
||||
|
||||
**20.04** | **22.04**
|
||||
---|---
|
||||
GCC 10.3 | GCC 11.2
|
||||
Hplip 3.20.3 | Hplip 3.21.12
|
||||
LibreOffice 6.4.7 | LibreOffice 7.3.2
|
||||
(未引入) | Pipewire 0.3.48
|
||||
Python3 3.8.2 | Python3 3.10.1
|
||||
Samba 4.13 | Samba 4.15
|
||||
Systemd 245.4 | Systemd 249.11
|
||||
|
||||
### 总结
|
||||
|
||||
总而言之,这是 Ubuntu LTS 分支历次更新中变化最大的一次,不论是从视觉上还是特性角度。
|
||||
|
||||
我希望这个指南能够令读者了解两个版本之间的主要区别,以及应当预期什么样的使用体验。
|
||||
|
||||
祝好~
|
||||
|
||||
------
|
||||
|
||||
via: https://www.debugpoint.com/2022/04/difference-ubuntu-22-04-20-04/
|
||||
|
||||
作者:[Arindam][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[PeterPan0106](https://github.com/PeterPan0106)
|
||||
校对:[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/08/ubuntu-20-04-3-release/
|
||||
[2]: https://www.debugpoint.com/2022/01/ubuntu-22-04-lts/
|
||||
[3]: https://www.debugpoint.com/wp-content/uploads/2022/01/New-Ubuntu-logo-and-playmouth.jpg
|
||||
[4]: https://github.com/canonical/ubuntu-desktop-installer
|
||||
[5]: https://www.debugpoint.com/wp-content/uploads/2022/04/Colour-differences-between-two-LTS-Versions.jpg
|
||||
[6]: https://www.debugpoint.com/2022/03/gnome-42-release/
|
||||
[7]: https://www.debugpoint.com/wp-content/uploads/2022/04/Ubuntu-20.04-Vs-Ubuntu-22.04-Lock-and-Login-Screen-1024x431.jpg
|
||||
[8]: https://www.debugpoint.com/wp-content/uploads/2022/04/Ubuntu-20.04-Vs-Ubuntu-22.04-Lock-Screen-1024x408.jpg
|
||||
[9]: https://www.debugpoint.com/wp-content/uploads/2022/04/Difference-between-Ubuntu-20.04-and-Ubuntu-22.04-default-look-1024x421.jpg
|
||||
[10]: https://www.debugpoint.com/wp-content/uploads/2022/04/Activities-View-Difference-Ubuntu-20.04-and-22.04-1024x425.jpg
|
||||
[11]: https://www.debugpoint.com/wp-content/uploads/2022/04/Application-View-Difference-Ubuntu-20.04-and-22.04-1024x420.jpg
|
||||
[12]: https://www.debugpoint.com/wp-content/uploads/2022/04/Accent-Color-and-other-changes-1024x417.jpg
|
||||
[13]: https://www.debugpoint.com/wp-content/uploads/2022/04/How-Accent-colour-change-impact-looks-in-Ubuntu-22.04-LTS.jpg
|
||||
[14]: https://www.debugpoint.com/wp-content/uploads/2022/04/Files-Difference-Ubuntu-20.04-vs-22.04-1024x359.jpg
|
||||
[15]: https://www.debugpoint.com/2022/04/ubuntu-budgie-22-04-lts/
|
||||
[16]: https://www.debugpoint.com/wp-content/uploads/2022/04/New-Screenshot-tool-in-Ubuntu-22.04-LTS.jpg
|
||||
[17]: https://www.debugpoint.com/wp-content/uploads/2022/04/Take-Screenshot-option-in-top-bar-menu.jpg
|
||||
[18]: https://www.debugpoint.com/wp-content/uploads/2022/04/New-Multitasking-Panel-in-Settings.jpg
|
||||
[19]: https://www.debugpoint.com/wp-content/uploads/2022/04/GNOME-Software-Home-page-difference-1024x416.jpg
|
||||
[20]: https://www.debugpoint.com/wp-content/uploads/2022/04/GNOME-Software-Details-page-difference-1024x417.jpg
|
||||
[21]: https://t.me/debugpoint
|
||||
[22]: https://twitter.com/DebugPoint
|
||||
[23]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
|
||||
[24]: https://facebook.com/DebugPoint
|
@ -0,0 +1,105 @@
|
||||
[#]: subject: "Documentation Isn’t Just Another Aspect of Open Source Development"
|
||||
[#]: via: "https://www.opensourceforu.com/2022/04/documentation-isnt-just-another-aspect-of-open-source-development/"
|
||||
[#]: author: "Harsh Bardhan Mishra https://www.opensourceforu.com/author/harsh-bardhan-mishra/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14545-1.html"
|
||||
|
||||
文档并不是开源项目开发的附属品
|
||||
======
|
||||
|
||||
有些项目长期保持活跃,有些项目却过早消亡 —— 这两者的区别往往在于它们的文档。严谨、聪明的文档可以给你的项目带来它所需要的动力。你应该把文档工作视为一项主要工作,把它与开发相提并论,下面我将说明这么做的理由和正确的做法。
|
||||
|
||||

|
||||
|
||||
经常会有开发者简单地认为他们的代码的“<ruby>自我描述<rt>self-documented</rt></ruby>”已经足够了,继而认为额外的文档是没有必要的。这种过度的自信会让项目付出很大的代价。匮乏或差劲的文档会扼杀你的项目。没有适当的文档,用户将无法理解项目的目标以及正确的工作流程。这可能会导致人们对采用你的开源产品产生一些疑虑。
|
||||
|
||||
### 撰写文档,从项目第一天就开始
|
||||
|
||||
文档不应该是次要的工作,它应该是与代码开发和管理同等的主要任务。随着内容以 Community Threads、Stack Overflow 和 Quora 问答等形式的广泛传播,文档承担了“<ruby>信息源<rt>source of truth</rt></ruby>”的角色。它应该满足那些想参考一手资料的贡献者的需要,并给工程师提供必要的参考支持。它还应该与利益相关者沟通基本计划。一个好的文档可以确保产品的持续改进和发展。
|
||||
|
||||
当发布一个软件产品时,我们不仅要发布代码,还要发布好的文档。这给我们带来了一个最重要的概念,大多数良好维护了文档的开源项目都遵循这个概念 —— “<ruby>文档即代码<rt>Documentation as code</rt></ruby>”。
|
||||
|
||||
### 文档及代码
|
||||
|
||||
今天,文档不再被存储为微软 Word 或 PDF 文件。新的需求是版本控制文档,其中所有的文档都是通过版本控制系统添加的,并持续发布。这个概念因 Read the Docs(LCTT 译注:一个文档创建、托管和浏览的平台)而流行,现在已经成为大多数文档团队的内容策略的重要组成部分。
|
||||
|
||||
像 Bugzilla 和 GitHub <ruby>议题<rt>Issue</rt></ruby>这样的工具可以用来跟踪待处理的文档工作,并从维护者和用户那里获得反馈以验证文档的发布。外部审查可以用来验证文档作品,并持续发布文档。这就保证了除代码外,文档也能不断改进并快速发布。
|
||||
|
||||
请记住,如果不遵循规范化的实践,每个文档都会不同。这可能会导致一些混乱,使人们难以获取正确的信息。
|
||||
|
||||
哪些东西会被归类为混乱呢?当大多数文件都不遵循规范实践时,不一致就会产生,从而导致更大的混乱!那么,如何整理混乱的开源文档呢?
|
||||
|
||||
### 整理混乱的开源文档
|
||||
|
||||
遵循一个“文档风格指南”是很重要的。风格指南是创建和展示内容的指导方针的集合。无论你是一个独立的作家还是一个大型文档团队的成员,它都有助于在你的文档中保持一致的风格、口音和语气。
|
||||
|
||||
有几个流行的风格指南,如《红帽风格指南》、《谷歌文档风格指南》和《苹果风格指南》。如何选用?首先要从定义你的需求开始。如果你的要求与其他开源项目没有太大区别,你可以遵循一个现成的风格指南,或者你也可以先选一个,然后在它的基础上根据自身需要做一些修改。大多数与语法有关的准则和内容规则可能是通用的,但整体术语可能会有所不同。
|
||||
|
||||
你还需要在你的项目中自动采用这些风格指南。为此,你可以使用 Vale,它集成了本地的持续集成(CI)服务,该服务能帮助你确保文档严格遵循风格指南。
|
||||
|
||||
> **文档类型**
|
||||
>
|
||||
> * *自述文件*:包含基本的安装和使用说明,这也是任何开源文档中最重要的部分之一。它是潜在的用户/开发者与项目之间的第一个连接点。
|
||||
> * *参考指南*:可能包括一些基本的参考资料,以便帮助你快速上手,或者是与项目贡献相关的文档。
|
||||
> * *用户文档*:是最基本的文档,它描述了项目的使用方式。如果没有用户文档,大多数人就会对如何使用该项目感到迷茫。
|
||||
> * *开发文档*:旨在支持开发团队在项目中不断取得新的进展。它还应该为内部开发工作提供一个良好的途径,并确保功能被很好地传达给股东。
|
||||
> * *社区内容*:包括基本的博客、视频和外部内容,旨在为那些想进一步了解项目的社区成员提供支持。
|
||||
|
||||
通过使用风格指南,文件的整体前提将以统一的语言风格传达给用户。但是,这些文件毕竟是由一个技术作家团队准备的,它们的写作风格可能会冲突,因为写作风格是因人而异的。那么,如何才能使文档规范化呢?
|
||||
|
||||
### 规范化文档
|
||||
|
||||
当涉及到规范化文档时,有许多方法可以采取。第一个方法显然是创建适用于各种角色的预定义模板。这些模板可以用来记录新的功能、识别错误和问题,以及更新变更日志以适应正在增加的新内容。
|
||||
|
||||
如果你采用的是基于 Git 的工作流,试着开发一个规范的工作流程来发布你的文档。最规范的工作流是:<ruby>复刻<rt>fork</rt></ruby> 发布文档的仓库,在本地分支上添加你的修改,推送这些修改,提出请求并要求对其进行审查。规范化文档的一个好处就是带来更好的反馈和审查过程。
|
||||
|
||||
### 反馈和自动审查
|
||||
|
||||
规范化使得你能够得到用户的反馈并生成自动的审查,可以参考这些反馈来改进项目和文档。通过这些反馈,你也可以评估所分享的信息对用户是否有意义。像 GitBook 这样的文档平台会提供合适的反馈服务,这有助于验证文档是否有用。
|
||||
|
||||
始终寻求<ruby>主题专家<rt>subject matter expert</rt></ruby>(SME)对文档的反馈,他们可以是利益相关者、开发者、工程师,甚至是外部贡献者。你也可以使用自动测试和 CI 来验证你的文档是否遵循风格指南。
|
||||
|
||||
### 文档众包
|
||||
|
||||
如果你想开源你的文档,最好的方法也许是提供一个快速入门指南。它可以像 `CONTRIBUTING.md` 那样简单,基本上只要说明该如何设置项目并为其作出贡献/单纯使用它即可。
|
||||
|
||||
始终开发以用户为中心的文档,标明每个项目的目的。同时,打造学习课程来帮助新的贡献者。
|
||||
|
||||
> **带着目的编写文档**
|
||||
>
|
||||
> 始终带着目的编写文档。它是最基本的写作策略之一,它定义了你编写某个特定文档的理由,而非方式。首先回答以下问题:
|
||||
>
|
||||
> * 这个文档的目标是什么?
|
||||
> * 需要传递的信息是什么?
|
||||
> * 你希望用户在这之后采取什么行动?
|
||||
> * 我与读者分享的价值观是什么?
|
||||
> * 我的文档风格是否简洁、一致?
|
||||
|
||||
### 定义一致的内容策略
|
||||
|
||||
一致的内容策略有助于确保文档工作和项目基础设施的长期愿景。它可以围绕以下两个主要方面:
|
||||
|
||||
1. 资源:包括项目文档、案例研究和白皮书、项目架构等
|
||||
2. 品牌内容:博客和特邀帖子、新闻和社区故事、学习课程等
|
||||
|
||||
每个开源项目都应该有适当的文档,以说明它能为用户提供的功能,这样用户就可以选择最合适的解决方案。适当的文档可以传达正确的信息,也可以让其他开发者贡献力量来进一步加强和改进项目。虽然听起来很简单,但只有做对了,文档才能成功。而你的项目,反过来,只有在你的文档正确的情况下才能成功,所以永远不要低估它的目标或过程!
|
||||
|
||||
策划:Laveesh Kocher
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.opensourceforu.com/2022/04/documentation-isnt-just-another-aspect-of-open-source-development/
|
||||
|
||||
作者:[Harsh Bardhan Mishra][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/harsh-bardhan-mishra/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://www.opensourceforu.com/wp-content/uploads/2022/03/Importance-of-documentation-696x477.jpg
|
@ -0,0 +1,123 @@
|
||||
[#]: subject: "5 Less Popular Features that Make Ubuntu 22.04 LTS an Epic Release"
|
||||
[#]: via: "https://www.debugpoint.com/2022/04/ubuntu-22-04-release-unique-feature/"
|
||||
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14546-1.html"
|
||||
|
||||
使 Ubuntu 22.04 LTS 成为史诗版本的 5 个不太流行的功能
|
||||
======
|
||||
|
||||
> 这是一份关于 Ubuntu 22.04 LTS 的次要特点的列表,这些特点使它成为迄今为止最好的 LTS 版本之一。
|
||||
|
||||
Canonical 的最新 LTS 版本 [Ubuntu 的代号为 “Jammy Jellyfish”][1] 受到了全球用户的好评。但是有数百个新的微小功能,以及一些不太流行的功能,没有引起人们的注意。因此,这里有五个 Ubuntu 22.04 的独特功能,我们认为这些功能可以使它成为一个史诗般的版本。
|
||||
|
||||

|
||||
|
||||
### Ubuntu 22.04 发布 – 五个独特的功能
|
||||
|
||||
#### 为数据驱动的方案进行了优化
|
||||
|
||||
数据分析和处理是当今每个企业的核心。而要做到这一点,你需要巨大的计算能力。Ubuntu 22.04 LTS 带来了开箱即用的 [英伟达虚拟 GPU(vGPU)][3] 驱动支持。这意味着你可以利用英伟达虚拟 GPU 软件,使你能够在虚拟机中使用从物理 GPU 服务器共享的 GPU 计算能力。
|
||||
|
||||
不仅如此,如果你的业务依赖于 SQL Server,Ubuntu LTS for Azure 带来了 Ubuntu 中的 SQL Server,它由 “Micro$oft” 支持,提供优化的性能和可扩展性。
|
||||
|
||||
#### 改进的活动目录集成
|
||||
|
||||
此外,许多企业在多个工作站中为整个企业用户部署 Ubuntu。而且,部署工作站策略以监测和控制用户访问和各种关键业务控制非常重要。
|
||||
|
||||
活动目录实现了基于策略的工作站管理(在 Ubuntu 20.04 中引入),在这个版本中得到了进一步改善。除此之外,这个版本还带来了 [ADsys][4] 客户端,它有助于通过命令行远程管理组策略、权限升级和远程脚本执行。从这个版本开始,活动目录现在也支持与高级组策略对象的安装程序集成。
|
||||
|
||||
#### 实时内核支持
|
||||
|
||||
此外,在 Ubuntu 22.04 LTS 发布期间,Canonical 宣布的一个有趣的消息是,提供“实时”内核选项,现在是测试版。对于电信和其他行业来说,一个低延迟的操作系统对于时间敏感的工作是必需的。因此,考虑到这一点和渗透到这些领域的愿景,Ubuntu 22.04 LTS 带来了一个应用了 PREEMPT_RT 补丁的实时内核构建。它可用于 x86_64 和 AArch64 架构。
|
||||
|
||||
然而,该 [补丁][5] 还没有在主线内核中出现,希望它能很快能出现。
|
||||
|
||||
#### 最新的应用、软件包和驱动程序
|
||||
|
||||
除了上述变化之外,这个版本还带来了大量的软件包和工具链的升级。例如,这个版本带来了基于各种用途的多种 Linux 内核类型,如 Ubuntu 桌面可以选择使用 [内核 5.17][6],而硬件启用内核仍然是 5.15。
|
||||
|
||||
不仅如此,Ubuntu Server 采用长期支持版的 [内核 5.15][8],而 Ubuntu Cloud 镜像可以选择使用与云供应商合作的更优化的内核。
|
||||
|
||||
此外,如果你是英伟达用户,值得一提的是,ARM64 上的英伟达驱动的 Linux 限制模块现在已经可用(在 x86_64 中已经可用)。你可以使用 [ubuntu-drivers][9] 程序来安装和配置英伟达驱动。
|
||||
|
||||
核心模块和子系统构成的完整的操作系统可以完美无缺地工作。因此,考虑到这一点,Ubuntu 22.04 LTS 对它们都进行了仔细的升级,以迎合这个很好的版本。以下是简介:
|
||||
|
||||
GNU/Linux 核心:
|
||||
|
||||
* GCC 11.2.0
|
||||
* binutils 2.38
|
||||
* glibc 2.35
|
||||
|
||||
编程工具链:
|
||||
|
||||
* Python 3.10.4
|
||||
* Perl 5.34.0
|
||||
* LLVM 14
|
||||
* golang 1.18
|
||||
* rustc 1.58
|
||||
* OpenJDK 11(可选使用 OpenJDK 18)
|
||||
* Ruby 3.0
|
||||
* PHP 8.1.2
|
||||
* Apache 2.4.52
|
||||
* PostgreSQL 14.2
|
||||
* Django 3.2.12
|
||||
* MySQL 8.0
|
||||
* 更新的 NFS 以及 Samba Server
|
||||
* Systemd 249.11
|
||||
* OpenSSL 3.0
|
||||
|
||||
虚拟化:
|
||||
|
||||
* qemu 6.2.0
|
||||
* libvirt 8.0.0
|
||||
* virt-manager 4.0.0
|
||||
|
||||
#### 性能提升
|
||||
|
||||
但这还不是全部。由于一些长期等待的更新,你应该体验到更快的 Ubuntu 22.04 Jammy Jellyfish,这些体验最终会在这个版本中出现。
|
||||
|
||||
首先,长期等待的 GNOME 桌面的 [三重缓冲代码] 已经来到。当先前的帧缓冲落后时,三重缓冲会自动启用,它在英特尔和树莓派驱动中产生了更快的桌面性能。不仅如此,代码还监控最后一帧,以便系统不会遇到过量缓冲的情况。
|
||||
|
||||
其次,改进的电源管理,在运行时对 AMD 和英伟达的 GPU 起作用,将帮助笔记本电脑用户。
|
||||
|
||||
此外,Wayland 现在是大多数系统的默认显示服务器,除了英伟达 GPU 硬件默认为 X11。Wayland 为你提供了更快的跨应用的桌面体验,包括网页浏览器。
|
||||
|
||||
最后,定制的 GNOME 42 及其 [独特功能][11](例如平衡和省电电源配置文件)为重度笔记本电脑用户提供了更多优势。此外,带有浅色/深色外观的新强调色和将选定的 GNOME 模块移植到 GTK4/libadwaita 只是这个史诗般的 Ubuntu 22.04 LTS 版本的一个补充。
|
||||
|
||||
### 结论
|
||||
|
||||
总而言之,就上述所有内容的变化和许多其他方面而言,我相信这是 Canonical 发布的最好的 LTS 版本之一。
|
||||
|
||||
我们希望它得到好评,并在未来能保持稳定。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.debugpoint.com/2022/04/ubuntu-22-04-release-unique-feature/
|
||||
|
||||
作者:[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/2022/01/ubuntu-22-04-lts/
|
||||
[2]: https://www.debugpoint.com/wp-content/uploads/2022/04/Ubuntu-22.04-LTS-Desktop-GNOME-1024x580.jpg
|
||||
[3]: https://docs.英伟达.com/grid/latest/grid-vgpu-release-notes-ubuntu/index.html
|
||||
[4]: https://github.com/ubuntu/adsys
|
||||
[5]: https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git/
|
||||
[6]: https://www.debugpoint.com/2022/03/linux-kernel-5-17/
|
||||
[8]: https://www.debugpoint.com/2021/11/linux-kernel-5-15/
|
||||
[9]: https://launchpad.net/ubuntu/+source/ubuntu-drivers-common
|
||||
[10]: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441
|
||||
[11]: https://www.debugpoint.com/2022/03/gnome-42-release/
|
||||
[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
|
@ -3,46 +3,39 @@
|
||||
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "hwlife"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14561-1.html"
|
||||
|
||||
怎样从Pop OS 21.10 更新到 Pop OS 22.02 lts [按步骤]
|
||||
分步指南:从 Pop OS 21.10 更新到 Pop OS 22.04 LTS
|
||||
======
|
||||
我们给了你简单的步骤从 POP OS 21.10 升级到 POP OS 22.04 LTS 。
|
||||
System76 依照 [Ubuntu 22.04 LTS][2] [发布][1] 了 Pop OS 22.04 LTS ,它带来了一些令人兴奋的功能。Pop OS 22.04 LTS 是来自 System76 发布的长期支持版本,它带来了自动计划更新,自定义的 GNOME 42,潜在的性能改进和 [许多其它的功能][3]。
|
||||
|
||||
你一定会很兴奋来体验 Pop OS 22.04 并计划更新它。这里我给出你升级 Pop OS 22.04 LTS 的步骤。
|
||||

|
||||
|
||||
: 你不能直接从 Pop OS 20.04 升级到 Pop OS 22.04 。首先,你需要先升级到 Pop OS 21.10 然后此处概述的步骤升级到这个版本。
|
||||
> 从 Pop OS 21.10 升级到 Pop OS 22.04 LTS 的简单步骤。
|
||||
|
||||
System76 跟着 [Ubuntu 22.04 LTS][2] [发布][1] 了 Pop OS 22.04 LTS ,它带来了一些令人兴奋的功能。Pop OS 22.04 LTS 是来自 System76 发布的长期支持版本,它带来了自动计划更新、自定义的 GNOME 42、底层性能改进和 [许多其它的功能][3]。
|
||||
|
||||
你肯定很想体验一下,计划更新到 Pop OS 22.04 。这里我给出你升级 Pop OS 22.04 LTS 的步骤。
|
||||
|
||||
注意: 你不能直接从 Pop OS 20.04 升级到 Pop OS 22.04 。首先,你需要先升级到 Pop OS 21.10,然后按照此处概述的步骤升级到这个版本。
|
||||
|
||||
### 从 Pop OS 21.10 升级到 Pop OS 22.04
|
||||
|
||||
#### 升级之前的准备
|
||||
|
||||
Pop OS 升级过程相对来说较为稳定。 因为根据我们 [关于升级问题的最近文章][4] 显示,许多用户面临升级方面的问题。但是如果你运行带有 NVIDIA 硬件的 Pop OS ,我建议你做个备份。
|
||||
|
||||
* 确保你的系统是最新的。你可以使用 Pop 商店应用检查更新。或者,你可以打开终端提示符并运行以下命令升级。
|
||||
|
||||
|
||||
```
|
||||
Pop OS 升级过程是相对稳定的。因为根据我们 [上一篇关于升级的文章][4],许多用户面临升级方面的问题。但是如果你正在使用英伟达硬件运行 Pop OS ,我建议你做个备份。
|
||||
|
||||
* 确保你的系统是最新的。你可以使用 Pop 商店应用检查更新。或者,你可以打开终端提示符并运行以下命令更新:
|
||||
```
|
||||
sudo apt update && sudo apt upgrade
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
* 按照以上步骤升级完成之后,重启系统。
|
||||
* 备份你的文档,照片,视频和其它文件到独立的磁盘分区或者 USB 驱动器。
|
||||
* 升级之前,禁用所有 GNOME 扩展。许多扩展会阻挡迁移到 GNOME 42 的过程,如果你升级之前禁用所有扩展,之后再启用它们是最好的。
|
||||
* 备份你的文档、照片、视频和其它文件到独立的磁盘分区或者 USB 驱动器。
|
||||
* 升级之前,禁用所有 GNOME 扩展。许多扩展会阻挡迁移到 GNOME 42 的过程,最好在你升级之前禁用所有扩展,之后再启用它们。
|
||||
* 记下所有额外的软件源或你已经添加的 PPA 仓库,因为它们可能与 “jammy” 分支不兼容。升级之后你可能需要验证它们。
|
||||
* 关闭所有运行的程序
|
||||
* 最后,确保你有时间和稳定的网络连接来完成升级。
|
||||
|
||||
|
||||
|
||||
[][5]
|
||||
|
||||
另见: 怎样从Pop OS 20.10 更新到 Pop OS 21.04 lts [按步骤]
|
||||
* 关闭所有运行的程序。
|
||||
* 最后,确保你有时间和稳定的网络连接来完成升级。
|
||||
|
||||
### Pop OS 22.04 LTS 的升级步骤
|
||||
|
||||
@ -50,79 +43,38 @@ Pop OS 升级过程相对来说较为稳定。 因为根据我们 [关于升级
|
||||
|
||||
如果你正在运行的是 Pop OS 21.10 ,你应该看到如下提示是否你的系统需要升级。
|
||||
|
||||
|
||||
![Pop OS 22.04 升级提示][6]
|
||||
|
||||
或者, 你可以打开设置然后访问系统升级和恢复标签。这里你应该看到系统更新信息是可用的。
|
||||
或者,你可以打开 “<ruby>设置<rt>Settings</rt></ruby>” 然后访问 “<ruby>系统升级和恢复<rt>OS Upgrade and Recovery</rt></ruby>” 标签。这里你应该看到有系统更新信息。
|
||||
|
||||
![Pop OS 22.04 在设置标签的提示][7]
|
||||
|
||||
点击 <ruby>Download<rt>下载</rt></ruby> 开始升级过程。
|
||||
点击 “<ruby>Download<rt>下载</rt></ruby>” 开始升级过程。
|
||||
|
||||
#### 升级到 Pop OS 22.04 LTS 的终端方法
|
||||
|
||||
* 打开终端运行以下命令。
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
* 打开终端运行以下命令:
|
||||
```
|
||||
sudo apt update
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
sudo apt full-upgrade
|
||||
|
||||
```
|
||||
|
||||
* 这能确保在升级过程开始前系统保持最新。如果你已经完成了这个作为以上描述的预升级的步骤,那么你可以忽略它。
|
||||
|
||||
|
||||
```
|
||||
* 这能确保在升级过程开始前系统保持最新。如果你已经在上述升级前步骤中完成了这个步骤,那么你可以忽略它。
|
||||
* 使用以下命令更新恢复分区并等待它完成。这只适用于 UEFI 安装模式。
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
pop-upgrade recovery upgrade from-release
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
* 现在使用以下命令开始升级过程:
|
||||
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
pop-upgrade release upgrade
|
||||
|
||||
```
|
||||
|
||||
![开始升级过程][8]
|
||||
|
||||
* 首先,升级过程将会下载软件包。按照我们的测试,大约 1600 多个软件包需要下载。因此,你应该等到它结束。
|
||||
|
||||
* 其次,一旦下载完成,更新管理器将会提示你重启。
|
||||
|
||||
|
||||
![准备升级][9]
|
||||
|
||||
```
|
||||
![开始升级过程][8]
|
||||
* 首先,升级过程将会下载软件包。按照我们的测试,需要下载大约 1600 多个软件包。因此,你应该等到它结束。
|
||||
* 其次,一旦下载完成,更新管理器将会提示你重启。
|
||||
![准备升级][9]
|
||||
* 重启之后,Pop OS 将开始安装最新的软件包到你的系统中。
|
||||
|
||||
|
||||
* 最后,这个下载过程要花将近一个小时,所以等待它完成。我不建议中途停止更新,这将会导致系统不稳定。
|
||||
|
||||
|
||||
![Pop OS 22.04 LTS 桌面][10]
|
||||
|
||||
* 升级完成之后,享受全新的 Pop OS 22.04 LTS 。
|
||||
|
||||
|
||||
|
||||
* * *
|
||||
|
||||
我们带来了最新的技术,软件和重要新闻。通过 [Telegram][11], [Twitter][12], [YouTube][13] 和 [Facebook][14] 与我们保持联系,不要错过更新哟!
|
||||
* 最后,这个下载过程要花将近一个小时,所以等待它完成。我不建议中途停止更新,这将会导致系统不稳定。
|
||||
![Pop OS 22.04 LTS 桌面][10]
|
||||
* 升级完成之后,享受全新的 Pop OS 22.04 LTS 吧。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -131,7 +83,7 @@ via: https://www.debugpoint.com/2022/04/upgrade-pop-os-22-04-from-21-10/
|
||||
作者:[Arindam][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[hwlife](https://github.com/hwlife)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,170 @@
|
||||
[#]: subject: "10 Reasons to Run Linux in Virtual Machines"
|
||||
[#]: via: "https://itsfoss.com/why-linux-virtual-machine/"
|
||||
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "PeterPan0106"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14541-1.html"
|
||||
|
||||
在虚拟机中运行 Linux 的十大优点
|
||||
======
|
||||
|
||||

|
||||
|
||||
> 你可以在虚拟机环境里运行任何操作系统,不论是测试还是为了某种需要。
|
||||
|
||||
对于 Linux 而言,它在虚拟环境下的性能会优于其他操作系统。即便你可能会犹豫是否在物理机(裸金属)上安装 Linux 系统,你仍然可以在虚拟机中安装一个性能几乎和物理机一样好的 Linux 系统。
|
||||
|
||||
当然,这并不意味着宿主系统为 Linux 时你就不能在虚拟机实例中安装 Linux 了。
|
||||
|
||||
更何况,你在虚拟环境下使用 Linux 系统有许多好处。大致如下。
|
||||
|
||||
### 在虚拟环境下运行 Linux 之前的注意事项
|
||||
|
||||
在虚拟环境下运行 Linux 或许并不是艰巨的任务,但仍有以下几点你需谨记。
|
||||
|
||||
* 虚拟机的性能取决于宿主机的性能,如果你并没有足够的系统资源分配给虚拟机,那么虚拟机的使用体验注定不会很好。
|
||||
* 某些特性仅在物理机(裸金属)上生效,包括硬件加速以及图形(显卡)驱动等。
|
||||
* 密集的磁盘 I/O 任务性能会十分受限,例如游戏测试场景。
|
||||
* 用户的 Linux 虚拟机实例体验会根据你所使用的虚拟化程序而发生变化,这些虚拟化程序包括 VMware、VirtualBox、GNOME Boxes 以及 Hyper-V 。
|
||||
|
||||
此外,你应当列出你的需求,并根据这些需求选定适当的虚拟化程序来运行你的 Linux 实例。
|
||||
|
||||
### 十条在虚拟环境中运行 Linux 的优点
|
||||
|
||||
尽管运行虚拟化 Linux 实例极具吸引力,你仍然应当首先考虑当前使用的宿主系统中已有的选择。例如,如果你不需要图形化桌面,或许利用 Windows 操作系统中的 [WSL 安装 Linux][1] 就可以满足你的需求。
|
||||
|
||||
一旦你确定了使用虚拟机,那么这些优点将会如影随形:
|
||||
|
||||
#### 1、部署简便
|
||||
|
||||
![部署简便][2]
|
||||
|
||||
与在传统物理机(裸金属)上安装 Linux 相比,在虚拟机中部署一般会容易许多。
|
||||
|
||||
对于基于 Ubuntu 的发行版而言,像 VMware 这样的虚拟化程序会提供一个 **快速安装** 的选项,你仅需输入用户名和密码,其余过程将自动完成而无需其他操作。你无需手动设置分区、引导程序以及更多高级设置。
|
||||
|
||||
某些情况下,一些发行版的开发者会同时提供针对特定虚拟机的预构建镜像,只需打开就可使用。这就好像一个便携式虚拟机镜像,随时可以开箱即用。
|
||||
|
||||
例如,在 [这里][3] 你将看到如何在虚拟机中安装 Arch Linux 发行版。
|
||||
|
||||
对于其他的发行版,你或许仍需要进行一些配置,但一般都会有快速安装的选项令你可以轻松部署。
|
||||
|
||||
#### 2、不会影响宿主机
|
||||
|
||||
![不会影响宿主机][4]
|
||||
|
||||
对于虚拟机,你可以更为随心所欲地使用,因为虚拟机系统和宿主机系统是隔离的。
|
||||
|
||||
很多时候,如果你并不熟悉 Linux 系统,你很可能会把配置弄得十分混乱。
|
||||
|
||||
所以在虚拟机里,你可以随意尝试而无需担心是否会影响到宿主机系统。换句话说,任何虚拟机的操作都不会影响到宿主机,因为它们是完全隔离的。
|
||||
|
||||
故此,虚拟机是你最好的试验场,尤其是对于一些激进或具有破坏性的试验。
|
||||
|
||||
#### 3、资源可高效共享
|
||||
|
||||
![资源可高效共享][5]
|
||||
|
||||
如果你有十分充裕的系统资源,你可以使用虚拟机运行其他任务,从而充分利用起来这部分闲置的系统资源。例如,如果你需要一个十分私密的浏览环境,虚拟机将为你阻挡一切针对宿主机的追踪器。
|
||||
|
||||
这可能略显牵强,但这仅仅是一个例子。基于这样的想法你将可以充分利用全部的系统资源。
|
||||
|
||||
而对于双启动方案,你需要在单独的磁盘上在 Windows [之后安装 Linux][6],或者在 Linux [之后安装 Windows][7],你需要为你的任务锁定相应的资源。
|
||||
|
||||
但利用虚拟机,你无需锁定部分资源也可以使用 Linux ,也不必为了特定的任务而临时共享资源,这样会方便许多。
|
||||
|
||||
#### 4、多任务体验更好
|
||||
|
||||
![多任务体验更好][8]
|
||||
|
||||
有了资源共享机制,多任务会前所未有的容易。
|
||||
|
||||
在双启动的场景下,你需要来回重启切换才能使用 Linux 或 Windows 。
|
||||
|
||||
但如果使用虚拟机,你几乎不再需要 [双启动][9],两个系统将无缝协作并完成多任务。
|
||||
|
||||
当然,你需要确认你拥有足够的系统资源和额外的硬件(例如双显示器)来更高效地使用。而多任务的潜力也因 Linux 虚拟机的存在而愈发强大。
|
||||
|
||||
#### 5、软件测试更为便捷
|
||||
|
||||
有了虚拟化,你将可以创建大量的 Linux 实例,来模拟特定的使用场景,并对软件进行测试。
|
||||
|
||||
例如,你可以在不同的 Linux 虚拟机中同步测试不同的软件版本。这有丰富的使用场景,包括对开发版软件进行测试以及 Linux 发行版的早期测试等等。
|
||||
|
||||
#### 6、开发更为便捷
|
||||
|
||||
![开发更为便捷][10]
|
||||
|
||||
当你在学习编程或者刚加入一个软件项目的开发的时候,你会希望拥有一个没有任何冲突和错误的开发环境。
|
||||
|
||||
在 Linux 虚拟机里,你可以从零开始搭建一个不会与已经存在的环境冲突的开发环境。例如,你可以在 Ubuntu 上 [安装并测试 Flutter][11] 。
|
||||
|
||||
如果环境出了问题,你可以轻而易举地删掉这个虚拟机,并重新开始来修正错误。
|
||||
|
||||
Linux 虚拟机的隔离环境是一个绝佳的开发和测试环境。
|
||||
|
||||
#### 7、学习和研究的好帮手
|
||||
|
||||
Linux 值得反复探索。除了基础的计算任务,你可以做许多其他的事情。
|
||||
|
||||
你可以学习如何修改你的用户界面,[尝试一些常见的桌面环境][12] 、[安装大量常用软件][13] ,与此同时仍能让一切处于掌控之中。
|
||||
|
||||
如果出现问题,新建一个 Linux 虚拟机就可以解决。当然,这并不仅限于日常使用需要,还可以启发系统管理员在其中测试他们所学的知识。
|
||||
|
||||
#### 8、更容易复制和迁移
|
||||
|
||||
虚拟机可以很容易地复制和迁移。只要其它的宿主机系统支持该虚拟化程序,你就可以很容易地迁移它,而没有特别要求。
|
||||
|
||||
不论因何原因,几次简单的点击就可以完成复制和迁移的任务。
|
||||
|
||||
#### 9、尝试大量的发行版
|
||||
|
||||
![尝试大量的发行版][14]
|
||||
|
||||
你可以在虚拟环境下尝试数以百计的 Linux 发行版。
|
||||
|
||||
你或许会认为这和第七条重复了,但是我相信,测试一个发行版是一个巨大的系统性工程,尤其是当你决定切换发行版做为宿主机或其他用途时。
|
||||
|
||||
#### 10、便于调试
|
||||
|
||||
不论是严肃的开发活动还是一般的研究,在隔离的虚拟环境中调试和除错相对而言会更简单。
|
||||
|
||||
你可以快速尝试大量的调试方法而无需考虑影响。同时,如果你的宿主机是 Linux 系统的话,无需宿主机上的 root 权限便可以访问和修改虚拟机中的配置文件。
|
||||
|
||||
### 总而言之
|
||||
|
||||
如果你不熟悉正在使用的系统或者依赖不同的操作系统工作,虚拟机将是协助你工作的一大利器。
|
||||
|
||||
Linux 虚拟机可以广泛用于开发、学习、试验或任何特定用途。
|
||||
|
||||
你在虚拟机中使用过 Linux 吗?都有哪些应用场景呢?欢迎留言评论!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/why-linux-virtual-machine/
|
||||
|
||||
作者:[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://itsfoss.com/author/ankush/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://itsfoss.com/install-bash-on-windows/
|
||||
[2]: https://itsfoss.com/wp-content/uploads/2022/04/easy-setup-linux-vm.jpg
|
||||
[3]: https://itsfoss.com/install-arch-linux-virtualbox/
|
||||
[4]: https://itsfoss.com/wp-content/uploads/2022/04/isolated-linux-vm.jpg
|
||||
[5]: https://itsfoss.com/wp-content/uploads/2022/04/sharing-resources-linux-vm.jpg
|
||||
[6]: https://itsfoss.com/dual-boot-hdd-ssd/
|
||||
[7]: https://itsfoss.com/install-windows-after-ubuntu-dual-boot/
|
||||
[8]: https://itsfoss.com/wp-content/uploads/2022/04/multitasking-linux-vm.jpg
|
||||
[9]: https://itsfoss.com/dual-boot-fedora-windows/
|
||||
[10]: https://itsfoss.com/wp-content/uploads/2022/04/development-linux-vm.jpg
|
||||
[11]: https://itsfoss.com/install-flutter-linux/
|
||||
[12]: https://itsfoss.com/best-linux-desktop-environments/
|
||||
[13]: https://itsfoss.com/essential-linux-applications/
|
||||
[14]: https://itsfoss.com/wp-content/uploads/2022/04/distros-linux-vm.jpg
|
@ -0,0 +1,45 @@
|
||||
[#]: subject: "Bloomberg Open Sources Memray, A Python Memory Profiler"
|
||||
[#]: via: "https://www.opensourceforu.com/2022/04/bloomberg-open-sources-memray-a-python-memory-profiler/"
|
||||
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14582-1.html"
|
||||
|
||||
彭博社开源 Memray,一个 Python 内存剖析器
|
||||
======
|
||||
|
||||

|
||||
|
||||
Memray 是一个由彭博社开发的<ruby>内存剖析器<rt>memory profiler</rt></ruby>,现在已经开源。它可以跟踪 Python 代码中的内存分配,包括本地扩展和 Python 解释器本身。内存剖析是了解程序如何利用内存的有力工具,因此可以检测内存泄漏或确定程序中哪些区域消耗的内存最多。
|
||||
|
||||
与 py-spy 等抽样内存剖析器相比,Memray 可以跟踪每个函数调用,包括对 C/C++ 库的调用,并详细显示调用栈。彭博社称,这并不以牺牲性能为代价,剖析只使解释代码的速度变慢一点。然而,原生代码剖析的速度较慢,因此需要直接启用。
|
||||
|
||||
Memray 可以根据获得的内存消耗数据生成各种报告,包括火焰图,这对快速、准确地识别最常见的代码路径很有价值。
|
||||
|
||||
据 EgdeDB 的联合创始人兼 CEO Yury Selivanov 称,该工具提供了以前无法获得的对 Python 应用的洞察力。Memray 可以用来从命令行中执行和剖析 Python 应用。
|
||||
|
||||
```
|
||||
$ python3 -m memray run -o output.bin my_script.py
|
||||
$ python3 -m memray flamegraph output.bin
|
||||
```
|
||||
|
||||
另外,你可以使用 pytest-memray 将 Memray 集成到你的测试套件中。你也可以用 `-native` 命令行选项对所有的 C/C++ 调用进行剖析,或者用 `-live` 命令行选项在程序执行过程中实时分析内存分配。Memray 可以在 Linux x86/64 系统上用 `python3 -m pip install memray` 来安装。
|
||||
|
||||
(题图由 Frantisek Krejci 在 Pixabay 上发布)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.opensourceforu.com/2022/04/bloomberg-open-sources-memray-a-python-memory-profiler/
|
||||
|
||||
作者:[Laveesh Kocher][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/laveesh-kocher/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://www.opensourceforu.com/wp-content/uploads/2022/04/soft-1-696x363.jpg
|
@ -0,0 +1,165 @@
|
||||
[#]: subject: "Hands on With GNOME’s New Text Editor for Linux Users"
|
||||
[#]: via: "https://itsfoss.com/gnome-text-editor/"
|
||||
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "aREversez"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14588-1.html"
|
||||
|
||||
GNOME 新文本编辑器尝鲜
|
||||
======
|
||||
|
||||

|
||||
|
||||
如果你是我们的忠实读者,你可能读过 [GNOME 计划用自家的文本编辑器取代 Gedit][1] 的消息了。
|
||||
|
||||
没错,GNOME 推出了一款全新的文本编辑器,名字就叫做,嗯,“<ruby>文本编辑器<rt>Text Editor</rt></ruby>”。
|
||||
|
||||
尽管 GNOME 桌面的默认文本编辑器还是 Gedit,但是这个新的编辑器已经和 GNOME 42 一起发布了。
|
||||
|
||||
也就是说,这款新编辑器可以在 Ubuntu 最新的长期发行版或者其他使用 GNOME 42 的发行版上获取(笔者现在使用的正是 Ubuntu 22.04)。
|
||||
|
||||
感兴趣吗?在本文,笔者将分享这款编辑器的使用体验以及安装步骤。
|
||||
|
||||
### GNOME 文本编辑器使用体验
|
||||
|
||||
GNOME 文本编辑器基于 [有争议的 libadwaita 库][3],遵循着其开发委员会的设计新理念,采用圆角边框,外观优美典雅,颇具现代化特点。
|
||||
|
||||
但就功能而言,这款软件并没有什么特别的“过人之处”。毕竟,它并不能取代 [Atom 或者 VS Code][4] 这类专业的代码编辑器。但同时,它也绝不像 Windows 的记事本那样“平平无奇”。
|
||||
|
||||
那么,让我们来一睹它的“风采”吧!
|
||||
|
||||
#### 会话保存功能
|
||||
|
||||
默认情况下,GNOME 文本编辑器会自动打开上次编辑的文件,这一功能可以让你快速继续之前的工作。
|
||||
|
||||
你可以通过首选项下的还原会话选项,开启或关闭该功能。
|
||||
|
||||
![][5]
|
||||
|
||||
你还可以搜索文件记录,打开最近处理的文件。请注意:清除文件记录(见上图 “<ruby>清除历史<rt>Clear History</rt></ruby>”)会清除最近打开的文件列表。
|
||||
|
||||
#### 主题与内置主题
|
||||
|
||||
GNOME 文本编辑器与其他新的 GNOME 软件一样,自带三种主题风格:跟随系统、浅色模式和深色模式。如果你选择了跟随系统,编辑器会根据系统主题(浅色或深色)自动变换自身的深浅主题色。
|
||||
|
||||
![System theme option gnome text editor][6]
|
||||
|
||||
此外,在首选项下还设有八个主题(深浅色模式下主题有所不同),为用户提供了更多的选择。
|
||||
|
||||
![Theme options under preference][7]
|
||||
|
||||
只需点击选中,主题即可生效。
|
||||
|
||||
#### 文件修改以及未保存文件的处理
|
||||
|
||||
在你工作时,已修改和未保存的文件会突出地反映出来。
|
||||
|
||||
![Unsaved files are more prominently marked][8]
|
||||
|
||||
在你修改文件后点击关闭窗口时,编辑器会提醒你选择保存修改还是放弃修改。
|
||||
|
||||
![][9]
|
||||
|
||||
相比之下,[Gedit 有自动保存选项][10],无需插件即可使用。
|
||||
|
||||
#### 暂无插件功能
|
||||
|
||||
提到插件,不得不承认这款新的编辑器还没有推出插件功能。而另一方面,Gedit 有着良好的插件生态,所以它的功能更加强大。
|
||||
|
||||
我不确定 GNOME 文本编辑器未来是否会引入支持插件的功能。
|
||||
|
||||
#### 代码语法高亮
|
||||
|
||||
近年来,代码语法高亮可以说是文本编辑器的一个必备功能了。GNOME 文本编辑器也提供了这一功能,支持各种程序语言语法高亮。
|
||||
|
||||
通常来说,语法高亮的前提是代码文件要有对应的后缀名。不过,我发现 GNOME 文本编辑器甚至可以在文件保存之前就识别出 bash 脚本和 C/C++ 程序,并对其语法标出高亮。
|
||||
|
||||
![Bash scripts. C/C++ code are detected even without file extension][11]
|
||||
|
||||
#### 快捷键
|
||||
|
||||
笔者喜欢在常用软件里使用快捷键,因为这样效率会更高。
|
||||
|
||||
GNOME 文本编辑器的各种操作都支持快捷键。你可以点击软件右上角的汉堡菜单(`☰` 符号)看到快捷键列表;或者直接敲快捷键 `Ctrl+?` 调出。
|
||||
|
||||
![Keyboard shortcuts in Text Editor][12]
|
||||
|
||||
#### 查找和替换
|
||||
|
||||
GNOME 文本编辑器有着完善的查找替换功能。它有三种模式可供选择:正则表达式、区分大小写以及匹配精准字符。
|
||||
|
||||
![search replace gnome text editor][13]
|
||||
|
||||
#### 更多功能
|
||||
|
||||
GNOME 文本编辑器与 Gedit 一样,还具备一些其他功能:
|
||||
|
||||
* 拼写检查
|
||||
* 显示行号
|
||||
* 自动缩进
|
||||
* 空格和制表位缩进
|
||||
* 大小写转换
|
||||
* 自动换行
|
||||
|
||||
#### GNOME 文本编辑器的局限
|
||||
|
||||
归根结底,GNOME 文本编辑器依旧是一个文本编辑器,无法也无意用来打开 doc 文件。如果你执意用它要打开 doc 文件,你看到的就只有一堆乱码。当然,pdf 文件也是如此。
|
||||
|
||||
![][14]
|
||||
|
||||
此外,GNOME 文本编辑器并不是专门用来写复杂代码的,它无法取代 VS Code 等代码编辑器。如果说偶尔用来读读代码或者写写 shell 脚本,倒也无伤大雅,但是它并不具备管理项目文件夹和运行代码等功能。
|
||||
|
||||
### 安装 GNOME 文本编辑器
|
||||
|
||||
就像笔者在开头所说,GNOME 文本编辑器已经和 GNOME 42 一起发布了,不过它并不属于默认安装的软件。在 Ubuntu 22.04,Universe 仓库里就有 GNOME 文本编辑器,你可以通过输入下面的命令进行安装:
|
||||
|
||||
```
|
||||
sudo apt install gnome-text-editor
|
||||
```
|
||||
|
||||
其他采用 GNOME 42 的发行版也可以获取 GNOME 文本编辑器,请在安装前查看所用系统的 [桌面环境版本][15]。
|
||||
|
||||
安装完成后,可以点击屏幕左上角的“<ruby>活动<rt>Activities</rt></ruby>”按钮,查找并打开 GNOME 文本编辑器。它的图标与 Gedit 的图标相似,但设计更为新颖。
|
||||
|
||||
![][16]
|
||||
|
||||
### 总结
|
||||
|
||||
[Gedit][17] 是一款非常完善的文本编辑器,也是 GNOME 桌面环境长期以来的预装软件。几年前,Gedit 疏于开发,但现在已经恢复了开发。然而,如今 GNOME 团队正在努力为 GTK 4 和 libadwaita 改进核心应用程序。
|
||||
|
||||
GNOME 文本编辑器很像 Gedit 的翻版,两者有着相似的界面和功能。不过,GNOME 文本编辑器与新版 GNOME 的设计风格更加统一,使用体验也更加流畅。
|
||||
|
||||
这款新的编辑器日后很有可能会成为 GNOME 的默认文本编辑器。不过让人感兴趣的是,GNOME 文本编辑器将来是否会拥有自己的插件生态呢?
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/gnome-text-editor/
|
||||
|
||||
作者:[Abhishek Prakash][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/abhishek/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://linux.cn/article-14060-1.html
|
||||
[2]: https://itsfoss.com/ubuntu-22-04-release-features/
|
||||
[3]: https://news.itsfoss.com/gnome-libadwaita-library/
|
||||
[4]: https://itsfoss.com/visual-studio-code-vs-atom/
|
||||
[5]: https://itsfoss.com/wp-content/uploads/2022/04/restore-session-option-gnome-text-editor-1.png
|
||||
[6]: https://itsfoss.com/wp-content/uploads/2022/04/system-theme-option-gnome-text-editor-800x560.png
|
||||
[7]: https://itsfoss.com/wp-content/uploads/2022/04/theme-options-gnome-text-editor.png
|
||||
[8]: https://itsfoss.com/wp-content/uploads/2022/04/unsaved-file-gnome-text-editor-800x481.png
|
||||
[9]: https://itsfoss.com/wp-content/uploads/2022/04/save-prompt-gnome-text-editor.png
|
||||
[10]: https://itsfoss.com/how-to-enable-auto-save-feature-in-gedit/
|
||||
[11]: https://itsfoss.com/wp-content/uploads/2022/04/syntax-highlight-gnome-text-editor.png
|
||||
[12]: https://itsfoss.com/wp-content/uploads/2022/04/keyboard-shortcuts-gnome-text-editor-800x637.png
|
||||
[13]: https://itsfoss.com/wp-content/uploads/2022/04/search-replace-gnome-text-editor-800x477.png
|
||||
[14]: https://itsfoss.com/wp-content/uploads/2022/04/doc-in-gnome-text-editor-800x485.png
|
||||
[15]: https://itsfoss.com/find-desktop-environment/
|
||||
[16]: https://itsfoss.com/wp-content/uploads/2022/04/new-gnome-text-editor.png
|
||||
[17]: https://wiki.gnome.org/Apps/Gedit
|
@ -3,22 +3,22 @@
|
||||
[#]: author: "Shebuel Inyang https://opensource.com/users/shebuel"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14562-1.html"
|
||||
|
||||
我如何通过开源来发展我的产品经理职业
|
||||
======
|
||||
毫不夸张地说,在开源方面获得的经验,帮助我在产品管理领域创造了一条成功的职业道路。
|
||||
|
||||
![如何做好发布说明][1]
|
||||
(图源:Opensource.com)
|
||||

|
||||
|
||||
> 毫不夸张地说,在开源方面获得的经验,帮助我在产品管理领域创造了一条成功的职业道路。
|
||||
|
||||
我是一个充满好奇心的人,我喜欢探索科技行业的许多领域,从视觉设计、编程到产品管理。我也被开放源码的理念所吸引。因此,我很高兴与大家分享我作为一个产品经理(PM),是如何利用开源来建立我的职业生涯的。我相信我的经验可以帮助其他对产品管理感兴趣的人。
|
||||
|
||||
### 什么是开源软件
|
||||
|
||||
简单地说,开源软件是开放源代码的软件,这意味着任何人都可以检查、修改、增强和分享它的源代码。[Opensource.com][2] 上发表过一篇详细、[全面的文章][3] 来帮助你了解什么是开源。
|
||||
简单地说,开源软件是开放源代码的软件,这意味着任何人都可以检查、修改、增强和分享它的源代码。我们发表过一篇详细、[全面的文章][3] 来帮助你了解什么是开源。
|
||||
|
||||
我最早知道开源是很久以前了,那时,我还是一名刚入行不久的视觉设计师。我很想知道开源是什么,也很想知道如何成为它的一部分。在这种好奇心的驱使下,我接触到了一些有经验的开源贡献者和倡导者。虽然我当时没有做出贡献,但是他们让我知道了什么是社区,这对我下定决心开始贡献有很大帮助。
|
||||
|
||||
@ -58,7 +58,7 @@
|
||||
* 他们是如何被告知这个解决方案的?
|
||||
* 该解决方案如何与当前和更广泛的生态系统相适应?
|
||||
* 项目的文件是在哪里维护的?
|
||||
* 项目维护者是否了解<ruby>无障碍<rt>accessibility</rt></ruby>>要求?它们是否被满足?
|
||||
* 项目维护者是否了解<ruby>无障碍<rt>accessibility</rt></ruby>要求?它们是否被满足?
|
||||
|
||||
既然你已经获得了产品经理的所需技能,为何不应用它们呢?结合所学,表达出你深思熟虑的问题,并邀请你的团队来评估吧!你的团队可以选择那些能引起开发者和社区共鸣的问题,并优先考虑其中最重要的。
|
||||
|
||||
@ -70,7 +70,7 @@
|
||||
|
||||
OpenUnited 是一个开源平台,为各类贡献者(包括产品经理、开发人员、设计师、商业分析师和其他人)提供服务。它致力于帮助贡献者提高技能,并为他们提供长期的高质量付费工作来源。
|
||||
|
||||
Miro 公司的高级产品经理 Farbod Saraf 让我加入了他与合作伙伴创建的一个平台。我加入了这个项目,并了解了如何对 OpenUnited 做出贡献。我还了解了其他可以帮助我在产品管理生涯中成长的项目,并做出了我的第一次贡献。这是一次很好的经历,因为我可以迅速地开始投入到产品的某些部分,以改善平台上其他用户的体验。在我为项目做贡献的时候,我的导师 Farbod 随时为我提供任何需要的帮助,使我的工作更加轻松。
|
||||
Miro 公司的高级产品经理 Farbod Saraf 让我加入他与合作伙伴创建的一个平台。我加入了这个项目,并了解了如何对 OpenUnited 做出贡献。我还了解了其他可以帮助我在产品管理生涯中成长的项目,并做出了我的第一次贡献。这是一次很好的经历,因为我可以迅速地开始投入到产品的某些部分,以改善平台上其他用户的体验。在我为项目做贡献的时候,我的导师 Farbod 随时为我提供任何需要的帮助,使我的工作更加轻松。
|
||||
|
||||
你对开源项目所做的一切贡献,都会成为你成长为产品经理过程中的有力的公共记录。对于任何想通过开源上手产品管理的人,我都强烈推荐 OpenUnited 平台。
|
||||
|
||||
@ -82,13 +82,13 @@ Miro 公司的高级产品经理 Farbod Saraf 让我加入了他与合作伙伴
|
||||
|
||||
* 在产品经理社区中发言,如 Mind The Product 和 Product School。
|
||||
* 参加当地的聚会和开源会议,如非洲开源社区节,以此来与开源项目的创建者和维护者保持联系。
|
||||
* 与在大型开源公司工作的产品经理接触,如 GitLab 或 Mozilla。他们可能会把你推荐到需要你的技能和贡献的开源项目中。
|
||||
* 访问开源公司的开源倡导者和开发者关系团队,让他们推荐一些入门级产品经理适合贡献的开源项目。
|
||||
* 寻找 AngelList 上的开源公司或 Product Hunt 上的流行开源产品。这些都是你可以找到适合贡献的开源产品的好地方。
|
||||
* 与在 GitLab 或 Mozilla 等大型开源公司工作的产品经理接触。他们可能会把你推荐到需要你的技能和贡献的开源项目中。
|
||||
* 联系开源公司的开源倡导者和开发者关系团队,让他们推荐一些适合入门级产品经理贡献的开源项目。
|
||||
* 寻找 AngelList 上的开源公司或 Product Hunt 上流行的开源产品。这些都是你可以找到适合贡献的开源产品的好地方。
|
||||
|
||||
### 下一步
|
||||
|
||||
[Ruth Ikegah][7] 是我的一个重要灵感来源,她写了一篇 [关于开源新手的文章][8]。她的文章给出了一些提示,在你开始为开源做贡献时,可能需要考虑一下它们。
|
||||
[Ruth Ikegah][7] 是我的一个重要灵感来源,她 [为开源新手写了一篇文章][8]。她的文章给出了一些提示,在你开始为开源做贡献时,可能需要考虑一下它们。
|
||||
|
||||
在加入和贡献项目、社区或组织之前,对它们做一些研究,并提出自己的问题。当你最终决定加入社区时,试着积极地介绍自己,并说明你可以在哪些方面提供帮助。
|
||||
|
||||
@ -101,7 +101,7 @@ via: https://opensource.com/article/22/4/product-management-open-source
|
||||
作者:[Shebuel Inyang][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[lkxed](https://github.com/lkxed)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
@ -109,7 +109,7 @@ via: https://opensource.com/article/22/4/product-management-open-source
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://opensource.com/sites/default/files/lead-images/rh_003784_02_os.comcareers_resume_rh1x.png
|
||||
[2]: http://Opensource.com
|
||||
[3]: https://opensource.com/resources/what-open-source
|
||||
[3]: https://linux.cn/article-8624-1.html
|
||||
[4]: https://twitter.com/hellodavidryan
|
||||
[5]: https://twitter.com/susanavlopes
|
||||
[6]: https://openunited.com
|
@ -3,24 +3,26 @@
|
||||
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14536-1.html"
|
||||
|
||||
Archinstall 新的菜单系统让安装 Arch Linux 更容易了
|
||||
======
|
||||
|
||||
> Archinstall 让人们更容易上手 Arch Linux,也应该可以为经验丰富的 Linux 用户节省时间。你觉得呢?
|
||||
|
||||
![][1]
|
||||
|
||||
去年的这个时候,Arch Linux [引入了一个引导式的安装程序][2],使其安装过程更加简单。
|
||||
|
||||
你只需要输入 `archinstall`,就可以开始一步步的安装,而不需要自己全部定制。
|
||||
|
||||
即使你不是新手用户,它应该也能为你正常安装 Arch Linux 节省一些时间。你可以配置所有基本选项,无论是创建用户名/根用户,还是选择桌面、挑选软件包、选择音频服务器,等等。
|
||||
即使你不是新手用户,它应该也能为你正常安装 Arch Linux 节省一些时间。你可以配置所有基本选项,无论是创建普通用户或 root 用户,还是选择桌面、挑选软件包、选择音频服务器,等等。
|
||||
|
||||
如果你感兴趣的话,可以在我们的 [在 VirtualBox 里安装 Arch Linux 的指南][3]中看看 archinstall 的实际使用。
|
||||
如果你感兴趣的话,可以在我们的 [在 VirtualBox 里安装 Arch Linux 的指南][3] 中看看 Archinstall 的实际使用。
|
||||
|
||||
现在,archinstall v2.4.1 已发布,我们有了新的菜单系统和大量的技术变化。
|
||||
现在,Archinstall v2.4.1 已发布,我们有了新的菜单系统和大量的技术变化。
|
||||
|
||||
让我们来看看它是如何工作的吧!
|
||||
|
||||
@ -30,17 +32,17 @@ Archinstall 新的菜单系统让安装 Arch Linux 更容易了
|
||||
|
||||
新的菜单系统看起来更有条理了。
|
||||
|
||||
它是以 [simple-term-menu][5] 为基础建立的,simple-term-menu 是一个用于在命令行中创建交互式菜单的软件包。为了避免外部依赖,它与源代码捆绑,此处感谢 Ingo Meyer(开发者)。
|
||||
它是以 [simple-term-menu][5] 为基础建立的,simple-term-menu 是一个用于在命令行中创建交互式菜单的软件包。为了避免外部依赖,它与源代码捆绑,这要归功于 Ingo Meyer(开发者)。
|
||||
|
||||
另外还得感谢其他开发者,其中包括 [Werner Llácer][6] 和 [Daniel][7],是他们编写了 1200 多行代码,才让这成为可能。
|
||||
|
||||
这个菜单系统也是无障碍的。你可以用数字键盘上的“*”把它切换到跟踪选择模式,这应该能让 espeakup 工作,正如人们所期望的那样。
|
||||
这个菜单系统也是无障碍的。你可以用数字键盘上的 `*` 把它切换到跟踪选择模式,这应该能让 espeakup 如预期的工作。
|
||||
|
||||
在 archinstall 的未来版本中,它也会支持默认的跟踪模式。
|
||||
在 Archinstall 的未来版本中,它也会支持默认的跟踪模式。
|
||||
|
||||
在上面的截图中,你可能会注意到,它支持设置语言、键盘布局、内核、音频服务器、用户、网络和其他基本选项。
|
||||
|
||||
一旦你选择了硬盘,菜单将增加另一个选项,让你选择一个“磁盘布局”,你可以在其中选择文件系统的类型。
|
||||
当你选择了硬盘后,菜单将增加另一个选项,让你选择一个“磁盘布局”,你可以在其中选择文件系统的类型。
|
||||
|
||||
![][8]
|
||||
|
||||
@ -48,7 +50,7 @@ Archinstall 新的菜单系统让安装 Arch Linux 更容易了
|
||||
|
||||
![][9]
|
||||
|
||||
默认情况下,它会启用一个 swap 分区。不过,你可以根据你的需要进行调整。总的来说,这应该是一个无缝的体验,所有的安装先决条件都以菜单形式呈现。
|
||||
默认情况下,它会启用一个交换分区。不过,你可以根据你的需要进行调整。总的来说,这应该是一个顺滑的体验,所有的安装先决条件都以菜单形式呈现。
|
||||
|
||||
在此感谢我们团队中的 Sreenath,是他测试并提供了这些屏幕截图。
|
||||
|
||||
@ -56,15 +58,15 @@ Archinstall 新的菜单系统让安装 Arch Linux 更容易了
|
||||
|
||||
除了这些变化之外,你还可以期待以下改进:
|
||||
|
||||
* 如果你选择 btrfs 作为文件系统,BTRFS 压缩选项将被添加为一个选项。
|
||||
* 如果你选择 btrfs 作为文件系统,会添加一个 BTRFS 压缩选项。
|
||||
* Archinstall 现在支持同时进行多个网卡配置的手动配置。
|
||||
* 安装程序可以通过 archinstall.Installer() 跟踪哪些软件包已经安装完毕。
|
||||
* 安装程序可以通过 `archinstall.Installer()` 跟踪哪些软件包已经安装完毕。
|
||||
|
||||
要查看所有的技术变化和错误修复,你可以参考 [GitHub 上的发布说明][11]。
|
||||
|
||||
**你可以等待最新的 ISO(计划在 5 月 1 日发布),或者从 GitHub 上下载并自己尝试。**
|
||||
|
||||
你试过 Arch Linux 上的原始安装向导吗?还是说,相较于使用安装程序,你更偏向于自己手动配置一切?请在评论区分享你的想法吧!
|
||||
你试过 Arch Linux 上的原来的安装向导吗?还是说,相较于使用安装程序,你更偏向于自己手动配置一切?请在评论区分享你的想法吧!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -73,7 +75,7 @@ via: https://news.itsfoss.com/archinstall-menu/
|
||||
作者:[Ankush Das][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[lkxed](https://github.com/lkxed)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,48 @@
|
||||
[#]: subject: "Elon Musk’s Plan To Open Source The Twitter Algorithm Has Flaws"
|
||||
[#]: via: "https://www.opensourceforu.com/2022/04/elon-musks-plan-to-open-source-the-twitter-algorithm-has-flaws/"
|
||||
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14540-1.html"
|
||||
|
||||
埃隆·马斯克开源推特算法的计划存在缺陷
|
||||
======
|
||||
|
||||
![推特][1]
|
||||
|
||||
报道称,在推特确认接受收购请求的几个小时后,埃隆·马斯克就明确表示了他对推特的期望。马斯克在一份新闻稿中罗列了他计划做出的重大改变,包括开源“决定用户在推流中看到什么”的算法。
|
||||
|
||||
马斯克希望开源推特的算法,是因为他长期以来一直担心该平台有可能进行政治压制。但老实说,即便开源,也不可能达到他的预期效果。专家们担心,这可能反而带来一连串意想不到的问题。
|
||||
|
||||
虽然马斯克对权威深恶痛绝,但是他对算法开源的野心和世界各地立法者的愿望不谋而合。近年来,许多政府都将这一原则作为打击大科技公司的基石。
|
||||
|
||||
英国社交媒体监管机构 Ofcom 的首席执行官 Melanie Dawes 曾表示,社交媒体公司应当解释其代码的运作方式。此外,欧盟新近通过的《<ruby>数字服务法案<rt>Digital Services Act</rt></ruby>(DSA)》于 4 月 23 日获得批准,该法案将责成平台提供更多的公开性。2022 年 2 月,美国的民主党参议员提交了《<ruby>算法问责法案<rt>Algorithmic Accountability Act</rt></ruby>(AAA)》的立法申请。这些法案的目标是加强算法的透明度和监督,包括我们在社交媒体上的“<ruby>时间轴<rt>timeline</rt></ruby>”和“<ruby>新闻流<rt>news feed</rt></ruby>”以及我们生活的其他方面。
|
||||
|
||||
允许竞争者看到并修改推特的算法,可能意味着有人会偷取源代码,并提供一个改名的版本。互联网的许多部分都运行在开源软件上,其中最著名的就是 OpenSSL,这是一个被大量在线使用的安全工具包,而它在 2014 年被黑客攻击了。
|
||||
|
||||
还有一些已经创建的开源社交网络。Mastodon 是一个微博网络,为回应对 Twitter 主导地位的担忧而创建。它允许用户检查其代码,这些代码可在 GitHub 软件仓库中找到。
|
||||
|
||||
然而,阅读一个算法背后的代码,并不总能告诉你它的工作方式,而且对于大部分普通人来说,它也提供不了足够的关于公司组织架构以及开发流程的信息。
|
||||
|
||||
Jonathan Gray 是伦敦国王学院/关键基础设施研究的高级讲师,他说:“这有点像只用遗传物质来理解古代生物。是的,它能告诉我们的信息比任何方式都多,但如果说我们因此了解它们的生活方式,那就太夸张了。”
|
||||
|
||||
推特同样也不是由单一算法控制的。Catherine Flick 是英国德蒙福特大学/研究计算和社会责任的研究员,她说:“其中一些会决定人们在他们的“时间轴”上看到什么趋势、内容或者推荐关注的人。调节用户“时间轴”上显示哪些信息的算法,将会是人们最感兴趣的。然而,即使如此,如果缺少训练数据,单纯开源算法也没多大用处。”
|
||||
|
||||
Cobbe 认为,开源推特算法的危害大于好处。因为计算机代码并没有透露算法是如何开发或评估的:有哪些元素或考虑、在这个过程中的优先级是什么等等。所以开源可能不会使推特的透明度发生重大变化。反而,它可能会带来严重的安全隐患。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.opensourceforu.com/2022/04/elon-musks-plan-to-open-source-the-twitter-algorithm-has-flaws/
|
||||
|
||||
作者:[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/04/twiiter-696x392.jpg
|
@ -0,0 +1,183 @@
|
||||
[#]: subject: "How to Remove Snap Packages in Ubuntu Linux"
|
||||
[#]: via: "https://www.debugpoint.com/2022/04/remove-snap-ubuntu/"
|
||||
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "hwlife"
|
||||
[#]: reviewer: "turbokernel, wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14567-1.html"
|
||||
|
||||
怎样在 Ubuntu Linux 中移除 Snap 软件包
|
||||
======
|
||||
|
||||

|
||||
|
||||
> 这是一篇关于在 Ubuntu Linux 系统中如何删除 Snap,以得到一个无 Snap 系统的教程。
|
||||
|
||||
由 Canonical 开发的 Snap 软件包在一些场景下是有益的。它为终端用户直接提供了轻便且快速的程序更新。不仅如此,它还有其他的好处,比如它打包了所有依赖包,并允许安装同一个应用的多个版本。此外,它运行在沙盒模式,提供了安全和其他方面的好处。
|
||||
|
||||
在这些好处中, Snap 技术也有一些地方备受争论。举个例子,几乎所有使用 Snap 软件包的用户都说它的性能较差,包括它的启动时间要比本地 deb 或者 RPM 软件包时间要长。另外,由于它的设计,程序安装的体积巨大,浪费磁盘空间,因为它打包了所有用到的依赖包。
|
||||
|
||||
不仅如此,由于沙盒的天然属性,Snap 程序可能无法访问你的 Linux 桌面的几个部分,除非提供了适当的权限。
|
||||
|
||||
这个指南阐述了你如何从 Ubuntu 系统中完全移除 Snap。
|
||||
|
||||
这些步骤在 [Ubuntu 22.04 LTS Jammy Jellyfish][1] 中进行了测试。然而,它应该也适用于所有的 Ubuntu 系统版本。
|
||||
|
||||
> **警告:这些步骤将会移除 Ubuntu 系统中两个关键的程序:软件商店和 Firefox。尝试这些步骤之前确认你已经对书签和 Firefox 的其它设置做了备份。**
|
||||
|
||||
### 在 Ubuntu Linux 移除 Snap 软件包
|
||||
|
||||
1、在你的系统中打开一个终端,使用以下命令查看已经安装的 Snap 软件包的列表。它显示了 Snap 软件包,比如 Firefox,软件商店,主题以及其它默认已经安装的核心软件包。
|
||||
|
||||
```
|
||||
snap list
|
||||
```
|
||||
|
||||
![ Ubuntu Snap 包列表][2]
|
||||
|
||||
2、按照以下的顺序移除 Snap 软件包。首先移除 Firefox。然后是软件商店,和用以上命令看到的你的系统中的其它软件包。
|
||||
|
||||
```
|
||||
sudo snap remove --purge firefox
|
||||
sudo snap remove --purge snap-store
|
||||
sudo snap remove --purge gnome-3-38-2004
|
||||
```
|
||||
|
||||
```
|
||||
sudo snap remove --purge gtk-common-themes
|
||||
sudo snap remove --purge snapd-desktop-integration
|
||||
sudo snap remove --purge bare
|
||||
sudo snap remove --purge core20
|
||||
sudo snap remove --purge snapd
|
||||
```
|
||||
|
||||
3、最后,通过 `apt` 命令移除 Snap 服务。
|
||||
|
||||
```
|
||||
sudo apt remove --autoremove snapd
|
||||
```
|
||||
|
||||
![移除 Snap 包和其它][3]
|
||||
|
||||
这还没完,即使你用以上命令移除了 Snap 软件包,但是如果你没有关闭 apt 触发器,`sudo apt update` 命令会再一次将 Snap 安装回来。
|
||||
|
||||
4、所以,要关闭它,我们需要在 `/etc/apt/preferences.d/` 目录下创建一个 apt 设置文件 `nosnap.pref` 来关闭 Snap 服务。
|
||||
|
||||
```
|
||||
sudo gedit /etc/apt/preferences.d/nosnap.pref
|
||||
```
|
||||
|
||||
5、添加以下的命令行,并保存该文件。
|
||||
|
||||
```
|
||||
Package: snapd
|
||||
Pin: release a=*
|
||||
Pin-Priority: -10
|
||||
```
|
||||
|
||||
![创建设置文件][4]
|
||||
|
||||
如果你知道如何使用它,那么这个 apt 设置文件是一个潜在的工具。举个例子,在以上的状态中,`Pin-Priority -10` 意思就是阻止 Snap 软件包的安装。
|
||||
|
||||
与这个教程不相关的,举个例子,如果你想给所有发行版代号为 “bulleye” 的软件包超高优先权的话,那么就可以查看这些设置文件。如果你想了解更多,你可以访问 [apt 手册页][5]。
|
||||
|
||||
```
|
||||
Package: *
|
||||
Pin: release n=bullseye
|
||||
Pin-Priority: 900
|
||||
```
|
||||
|
||||
6、回到我们的主题,一旦你已经保存和关闭以上文件,从终端中再次运行以下命令。
|
||||
|
||||
```
|
||||
sudo apt update
|
||||
```
|
||||
|
||||
7、最后,从 Ubuntu 中移除 Snap 的步骤全部完成。
|
||||
|
||||
### 从 Ubuntu 移除 Snap 后使用 deb 文件安装软件商店和 Firefox
|
||||
|
||||
你已经移除了 Firefox 和软件商店,但是你的工作还需要它们。
|
||||
|
||||
要安装 apt 版的 GNOME 软件商店,你可以使用以下命令。确保使用 `--install-suggests` 参数。否则,将会再次安装上 Snap 版本的软件包管理器!
|
||||
|
||||
```
|
||||
sudo apt install --install-suggests gnome-software
|
||||
```
|
||||
|
||||
要安装 Firefox,通过以下命令使用官方 PPA 仓库。
|
||||
|
||||
```
|
||||
sudo add-apt-repository ppa:mozillateam/ppa
|
||||
sudo apt update
|
||||
sudo apt install -t 'o=LP-PPA-mozillateam' firefox
|
||||
```
|
||||
|
||||
![添加 PPA 仓库][7]
|
||||
|
||||
![从 PPA 仓库以 deb 文件形式安装 Firefox][8]
|
||||
|
||||
一旦你已经安装完 Firefox,使用以下命令开启自动更新。要了解更多,[访问此页][9]。
|
||||
|
||||
```
|
||||
echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox
|
||||
```
|
||||
|
||||
最后但同样重要,当运行 `apt` 时,为 Firefox 创建另一个设置文件给予以上 PPA 仓库超高优先权。如果你不这么做,`apt update` 命令会再次安装 Snap 版本 Firefox,并把它的“ Snap 朋友们”带回来 😂😂😂。
|
||||
|
||||
```
|
||||
sudo gedit /etc/apt/preferences.d/mozillateamppa
|
||||
```
|
||||
|
||||
最后,添加这些命令行并保存文件。
|
||||
|
||||
```
|
||||
Package: firefox*
|
||||
Pin: release o=LP-PPA-mozillateam
|
||||
Pin-Priority: 501
|
||||
```
|
||||
|
||||
完成。
|
||||
|
||||
### 在 Ubuntu 系统恢复到 Snap 软件包
|
||||
|
||||
如果你改变想法,移除该设置文件,并通过以下命令再次启动安装程序。
|
||||
|
||||
```
|
||||
sudo rm /etc/apt/preferences.d/nosnap.pref
|
||||
sudo apt update && sudo apt upgrade
|
||||
sudo snap install snap-store
|
||||
sudo apt install firefox
|
||||
```
|
||||
|
||||
### 总结
|
||||
|
||||
关于在 Ubuntu 下移除 Snap 软件包做个总结,我想说的是这些处理 Snap 软件包的方法实属无奈。主要是这对新用户来说很困难。我希望这个指南能帮助你处理好 Snap 软件包。完结撒花。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.debugpoint.com/2022/04/remove-snap-ubuntu/
|
||||
|
||||
作者:[Arindam][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[hwlife](https://github.com/hwlife)
|
||||
校对:[turbokernel](https://github.com/turbokernel), [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/wp-content/uploads/2022/04/Snap-list-in-Ubuntu.jpg
|
||||
[3]: https://www.debugpoint.com/wp-content/uploads/2022/04/remove-snap-and-others-1024x544.jpg
|
||||
[4]: https://www.debugpoint.com/wp-content/uploads/2022/04/create-a-pref-file.jpg
|
||||
[5]: https://manpages.ubuntu.com/manpages/focal/man5/apt_preferences.5.html
|
||||
[6]: https://www.debugpoint.com/2016/07/how-to-install-and-use-snap-packages-in-ubuntu/
|
||||
[7]: https://www.debugpoint.com/wp-content/uploads/2022/04/Add-the-PPA-1024x550.jpg
|
||||
[8]: https://www.debugpoint.com/wp-content/uploads/2022/04/Install-Firefox-as-deb-file-from-PPA-1024x548.jpg
|
||||
[9]: https://www.debugpoint.com/2021/09/remove-firefox-snap-ubuntu/
|
||||
[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
|
@ -0,0 +1,83 @@
|
||||
[#]: subject: "Why use Apache Druid for your open source analytics database"
|
||||
[#]: via: "https://opensource.com/article/22/4/apache-druid-open-source-analytics"
|
||||
[#]: author: "David Wang https://opensource.com/users/davidwang"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "unigeorge"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14608-1.html"
|
||||
|
||||
为什么推荐开源分析数据库 Apache Druid
|
||||
======
|
||||
|
||||
> 对用户而言,优秀的对外数据分析工具非常关键,因此选择合适的数据架构就显得尤为重要。
|
||||
|
||||

|
||||
|
||||
现如今,数据分析不再是仅面向内部开发人员。当为业务方构建数据分析系统时,你需要确认哪种数据库后端是最合适的。
|
||||
|
||||
程序员的本能可能是“选用自己了解的数据库(例如 PostgreSQL 或 [MySQL][2])”。数据仓库也可能会扩展核心的 BI 仪表板和报告之外的功能,不过对业务方的数据分析支持仍是其重要功能之一,因此要选择合适的工具来保证此功能的性能。
|
||||
|
||||
问题的关键点在于用户体验,以下是对外支持数据分析工作的一些关键技术讨论点(以 Apache Druid 为例)。
|
||||
|
||||
### 低延迟特性
|
||||
|
||||
一直在队列中等待查询会让人很恼火。与延迟有关的因素包括数据量、数据库的处理能力、用户和 API 调用的数量,以及数据库支持查询应用的能力。
|
||||
|
||||
当数据量比较大时,有一些方法可以基于任意在线分析处理(OLAP)数据库构建交互式数据体验,但或多或少都有一些其他方面的牺牲。预计算查询会对性能要求较高,还会使架构变得僵化。预聚合处理会使数据粒度变大。将数据时间限制在近期的处理方式,会使得数据完整性得不到保证。
|
||||
|
||||
一个“不妥协”的解决方案是选择专为大规模交互而构建的优化架构和数据格式,[Apache Druid][3] 正是这样一个旨在支持现代分析程序的实时数据库。
|
||||
|
||||
* 首先,Druid 具备特有的分布式弹性架构,可将数据从共享数据层预取到近乎无限容量的数据服务器集群中。这种架构与诸如云数据仓库这样的解耦查询引擎相比,具有更快的性能,因为它不需要移动数据,并且比像 PostgreSQL 和 MySQL 这样的纵向扩展数据库具有更高的可扩展性。
|
||||
* 其次,Druid 采用内置于数据格式中的自动多级索引来驱动每个内核去支持更多查询操作。在常规 OLAP 列格式基础之上,还增加了全局索引、数据字典和位图索引,这可以最大化利用 CPU 周期,加快处理速度。
|
||||
|
||||
### 高可用性
|
||||
|
||||
如果开发团队为内部报告搭建了一个后端,那么中断几分钟甚至更长时间真的很严重吗?实际上并不是的。所以在典型 OLAP 数据库和数据仓库中,计划外的停机和维护是可以允许的。
|
||||
|
||||
但是如果你们团队构建了一个对外的供客户使用的分析应用程序,如果发生数据中断,会严重影响客户满意度、收入,当然还有你的周末休息时间。这就是为什么弹性(高可用性和数据持久性)需要成为对外分析应用程序数据库中的首要考虑因素。
|
||||
|
||||
考虑弹性就需要考虑设计标准。节点或集群范围的故障能完全避免吗?丢失数据的后果有多严重?保障应用程序和数据需要涉及哪些工作?
|
||||
|
||||
关于服务器故障,保证弹性的常规方法是多节点服务以及 [备份机制][4]。但如果你是为客户构建应用程序,则对数据丢失的敏感性要高得多。*偶尔的*备份并不能完全解决这一问题。
|
||||
|
||||
Apache Druid 的核心架构内置了该问题的解决方案,本质是一种强大而简单的弹性方法,旨在保证承受任何变故都不会丢失数据(即使是刚刚发生的事件)。
|
||||
|
||||
Druid 基于对象存储中共享数据的自动、多级复制实现高可用性(HA)和持久性。它实现了用户期望的 HA 特性以及持续备份机制,即使整个集群出现问题,也可以自动保护和恢复数据库的最新状态。
|
||||
|
||||
### 多用户
|
||||
|
||||
一个好的应用应该同时兼备大用户量和“引人入胜”的体验,因此为高并发构建后端非常重要。你肯定不想看到因为应用挂掉而让客户沮丧。内部报告的架构不必考虑这点,因为并发用户数量要小得多且有限。所以现实是,用于内部报告的数据库可能并不适合高并发应用程序。
|
||||
|
||||
为高并发构建数据库主要在于取得 CPU 使用率、可伸缩性和成本之间的平衡点。解决并发问题的通常做法是投入更多硬件成本。逻辑上说,只要增加 CPU 的数量,就能够同时进行更多的查询操作。虽然事实确实如此,但成本的增加是不可忽视的。
|
||||
|
||||
更好的方法还是使用像 Apache Druid 这样的数据库,它具有优化的存储和查询引擎,可以降低 CPU 使用率。我们强调的关键词是“优化”。数据库不应该读取它不需要的数据。Apache Druid 可以让基础设施在同一时间跨度内为更多查询操作提供服务。
|
||||
|
||||
节省成本是开发人员使用 Apache Druid 构建外部分析应用程序的一个重要原因。Apache Druid 具有高度优化的数据格式,结合了从搜索引擎世界借鉴来的多级索引以及数据缩减算法,可以最大限度地减少所需的处理量。
|
||||
|
||||
最终表现就是 Apache Druid 提供了其他数据库不可比拟的处理效率。它可以支持每秒数十到数千跨度的 TB 甚至 PB 级别的查询。
|
||||
|
||||
### 着眼当下,预见未来
|
||||
|
||||
分析应用程序对于用户而言至关重要,所以要构建正确的数据架构。
|
||||
|
||||
你肯定不想一开始就选择了一个错误的数据库,然后在后续扩展时面对诸多令人头疼的问题。幸运的是,Apache Druid 可以从小规模开始,并在之后轻松扩展以支持任何可以想象的应用程序。Apache Druid 有 [优秀的官方文档][5],当然它是开源的,所以不妨尝试一下并,快速上手吧。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/22/4/apache-druid-open-source-analytics
|
||||
|
||||
作者:[David Wang][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[unigeorge](https://github.com/unigeorge)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/davidwang
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://opensource.com/sites/default/files/lead-images/metrics_data_dashboard_system_computer_analytics.png
|
||||
[2]: https://opensource.com/downloads/mariadb-mysql-cheat-sheet
|
||||
[3]: https://druid.apache.org/
|
||||
[4]: https://opensource.com/article/19/3/backup-solutions
|
||||
[5]: https://druid.apache.org/docs/latest/design/
|
@ -0,0 +1,144 @@
|
||||
[#]: subject: "Hands On With GNOME’s New Terminal for Linux Users"
|
||||
[#]: via: "https://itsfoss.com/gnome-console/"
|
||||
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14595-1.html"
|
||||
|
||||
GNOME 新终端程序尝鲜
|
||||
======
|
||||
|
||||
几天前,我分享了我 [对新 GNOME 文本编辑器的体验][1],它是原编辑器 Gedit 的替代品。
|
||||
|
||||
但它并不是唯一的应用程序替代品。GNOME 42 还有一个新的终端,叫做 <ruby>[控制台][2]<rt>Console</rt></ruby>。
|
||||
|
||||
让我来分享一下 GNOME 提供的这个新终端的新功能,以及它的使用体验吧!
|
||||
|
||||
### 控制台:GNOME 的新终端模拟器
|
||||
|
||||
这个新应用程序的目标是提供一个“简单的、用户友好的终端模拟器”。它确实“简单”,因为它没有提供以往 GNOME 终端下用户习惯的许多功能。
|
||||
|
||||
后面我会继续谈这个话题。让我们先看看 GNOME 控制台的新功能。
|
||||
|
||||
#### 桌面通知
|
||||
|
||||
Ubuntu 上的 GNOME 终端从来没有这个功能,不过我在 elementary 和 Fedora 等发行版中看到过。
|
||||
|
||||
这是一个很方便的功能,当一个长期运行的命令执行完毕时,终端会发送一个桌面通知。
|
||||
|
||||
![GNOME 控制台的通知][3]
|
||||
|
||||
如果你在命令正在运行的同时,需要做其他事情,那么得到命令完成的通知有助于你保持工作效率。
|
||||
|
||||
#### 进行 root 和 SSH 操作时改变窗口颜色
|
||||
|
||||
这很可能是我在其他终端程序中没有见过的独特功能。
|
||||
|
||||
当你用 `sudo` 运行命令或 [切换到 root 用户][4] 时,应用程序窗口会变成红色。
|
||||
|
||||
![GNOME 控制台在使用 sudo 或 root 用户时变成红色][5]
|
||||
|
||||
我想它的目的是警告用户他们正在使用高级权限,因此在运行命令时要小心。
|
||||
|
||||
同样,如果你使用 SSH 连接到一个远程服务器,终端应用程序窗口的颜色会变成紫色。
|
||||
|
||||
![GNOME 控制台在 SSH 连接时变成紫色][5a]
|
||||
|
||||
这也是提醒用户命令正在远程 Linux 机器上运行,而不是在本地机器上运行的好方法。
|
||||
|
||||
#### 主题
|
||||
|
||||
遵循新的设计准则,控制台提供了三种主题:浅色、深色和跟随系统。
|
||||
|
||||
![GNOME 控制台主题][6]
|
||||
|
||||
控制台默认使用系统主题,它根据你的操作系统的深浅主题而改变终端配色。你也可以单独使用控制台的浅色/深色主题,而不用改变系统主题。
|
||||
|
||||
关于主题的内容差不多就这些。你可以进行的 [终端定制][7] 并不多。
|
||||
|
||||
### 关闭终端窗口时更好的警告
|
||||
|
||||
当你试图关闭一个仍在运行的命令时,老的 GNOME 终端也会显示一个警告。
|
||||
|
||||
![旧版 GNOME 终端中的警告][7a]
|
||||
|
||||
这个警告在新的 GNOME 控制台中稍好一些,因为它也会显示正在运行的命令。
|
||||
|
||||
![新版 GNOME 控制台中的警告][7b]
|
||||
|
||||
#### 透明界面
|
||||
|
||||
GNOME 控制台默认有一个透明界面。在正常模式下,你可以透过它看到一点背景。
|
||||
|
||||
例如,你可以看到背景程序中的一些模糊的文字。
|
||||
|
||||
![GNOME 控制台的透明界面][8]
|
||||
|
||||
我注意到,当控制台进入全屏模式时,界面不再透明。而且,你无法配置透明度。
|
||||
|
||||
#### 其他功能
|
||||
|
||||
谢天谢地,你可以在控制台中使用标签。
|
||||
|
||||
![标签式界面][9]
|
||||
|
||||
你可以执行与以往 GNOME 终端一样的搜索操作。
|
||||
|
||||
![GNOME 控制台中的搜索操作][10]
|
||||
|
||||
它没有太多的选项。<ruby>汉堡菜单<rt>hamburger menu</rt></ruby>让你一眼就能看到所有可用的键盘快捷键。
|
||||
|
||||
![GNOME 控制台中的键盘快捷键][11]
|
||||
|
||||
以上就是关于 GNOME 控制台的一切。
|
||||
|
||||
### 在 Ubuntu 22.04 上安装 GNOME 控制台
|
||||
|
||||
如果你的发行版使用了原版 GNOME 42,那么它应该默认提供了新终端。
|
||||
|
||||
尽管 Ubuntu 22.04 使用的是 GNOME 42,但它仍然使用旧的 GNOME 终端。不过,你可以使用下面的命令来安装新的控制台。
|
||||
|
||||
```
|
||||
sudo apt install gnome-console
|
||||
```
|
||||
|
||||
### 总结
|
||||
|
||||
你可能会想,既然我们已经有了一个更好的、功能更强的 GNOME 终端,为什么还要开发一个新的控制台呢?这是因为 GNOME 有了新的设计指南。改造这些应用程序的旧代码库太复杂了,可能也不大划算,从头开始写反而会更容易,因此你会看到更多的“新的” GNOME 应用程序,如控制台和文本编辑器。
|
||||
|
||||
由于这个新的应用程序的目标是让事情更简单,因此它没有提供很多功能。你不能定制它,改变颜色、字体等。由于不支持定制,所以也不需要配置文件。
|
||||
|
||||
对于很少使用终端的人来说,控制台已经够用了。不过,我认为应该增加在输入密码时显示星号的功能。其他 [面向初学者的发行版][12],如 Mint,就使用了这个功能,从而避免对 Linux 新手用户造成困扰。
|
||||
|
||||
你如何看待这个新的 GNOME 控制台,以及这种创建“新的 GNOME 应用程序”的方式呢?欢迎在下方评论区发表你的看法。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/gnome-console/
|
||||
|
||||
作者:[Abhishek Prakash][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://itsfoss.com/author/abhishek/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://itsfoss.com/gnome-text-editor/
|
||||
[2]: https://gitlab.gnome.org/GNOME/console
|
||||
[3]: https://itsfoss.com/wp-content/uploads/2022/04/notification-from-gnome-console.png
|
||||
[4]: https://itsfoss.com/root-user-ubuntu/
|
||||
[5]: https://itsfoss.com/wp-content/uploads/2022/04/GNOME-Console-turns-red-when-using-sudo-or-root-800x442.webp
|
||||
[5a]: https://itsfoss.com/wp-content/uploads/2022/05/gnome-console-color-change-ssh.png
|
||||
[6]: https://itsfoss.com/wp-content/uploads/2022/04/themes-gnome-console.png
|
||||
[7]: https://itsfoss.com/customize-linux-terminal/
|
||||
[7a]: https://itsfoss.com/wp-content/uploads/2022/05/warning-in-old-gnome-terminal.png
|
||||
[7b]: https://itsfoss.com/wp-content/uploads/2022/05/warning-in-new-gnome-console.png
|
||||
[8]: https://itsfoss.com/wp-content/uploads/2022/04/transparent-gnome-console.png
|
||||
[9]: https://itsfoss.com/wp-content/uploads/2022/04/tabs-GNOME-Console.png
|
||||
[10]: https://itsfoss.com/wp-content/uploads/2022/04/search-GNOME-Console.png
|
||||
[11]: https://itsfoss.com/wp-content/uploads/2022/04/keyboard-shortcuts-gnome-console.png
|
||||
[12]: https://itsfoss.com/best-linux-beginners/
|
@ -0,0 +1,160 @@
|
||||
[#]: subject: "How to Install h.264 decoder on Ubuntu Linux"
|
||||
[#]: via: "https://itsfoss.com/install-h-264-decoder-ubuntu/"
|
||||
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "hwlife"
|
||||
[#]: reviewer: "turbokernel"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14583-1.html"
|
||||
|
||||
在 Ubuntu Linux 如何安装 H.264 解码器
|
||||
======
|
||||
|
||||

|
||||
|
||||
当你开始使用 [新安装的 Ubuntu 系统][1] 并尝试打开一个 MP4 文件进行播放时,它可能会显示一个错误,即:
|
||||
|
||||
> 播放这个文件要求 H.264(高清)解码器 ,但是没有安装。
|
||||
|
||||
![当播放特定媒体文件时,Ubuntu 的默认视频播放器会显示错误][2]
|
||||
|
||||
你可能会猜到原因:系统没有安装所需的多媒体解码器,导致视频播放器播放该视频文件。
|
||||
|
||||
所以,解决方案是什么?安装所需的解码器。怎么做呢?
|
||||
|
||||
我将讨论解决这个问题的三种方法:
|
||||
|
||||
1. 只安装所需的解码器:它能解决所需的文件播放,但是一些其它格式的文件仍然会处在无解码器可用的状态。
|
||||
2. 一次安装多种多媒体解码器:它会安装解码器之外,还会安装你不需要的其它软件包,类似微软的字体库一样。
|
||||
3. 安装一个不同的视频播放器:像 VLC 和 MPV 视频播放器默认状态下对解码器有更好的支持。对大多数常规视频文件来说,你不必分别安装它们。
|
||||
|
||||
如果你遵从我的建议,我建议你采用第二种和第三种方法。为什么?一会你就知道了。
|
||||
|
||||
### 在 Ubuntu Linux 获取 H.264 解码器
|
||||
|
||||
这里我使用 Ubuntu Linux。第一和第三种方法应该也适用于其它发行版,但是第二种方法不适用,因为所提到的包(常常)是 Ubuntu 所独有的。
|
||||
|
||||
#### 方法 1: 只安装所需的解码器(不推荐)
|
||||
|
||||
当你看到这个错误时,它给你一个叫做 “在 Ubuntu 软件中心查找” 的按钮。点击这个按钮打开软件中心,可能显示(或不显示)一些将在你的系统上安装 H.264 解码器的软件包。
|
||||
|
||||
![在 Ubuntu 软件中心可能提供 H.264 解码器软件包][3]
|
||||
|
||||
软件包名可能听起来很相似,但是你需要安装来自<ruby>“不良”组合<rt>"bad" set</rt></ruby>的 GStreamer 多媒体解码器。注意检查软件包的描述。
|
||||
|
||||
或者,你可以使用如下命令在终端来安装软件包:
|
||||
|
||||
```
|
||||
sudo apt install gstreamer1.0-plugins-bad
|
||||
```
|
||||
|
||||
如果你对终端不了解,请注意要求使用你的账户密码的提示。**当你输入你的密码时,屏幕什么都不显示**。这是 Linux 的方式。你盲输密码然后按回车键。
|
||||
|
||||
一旦软件包安装完成,再次打开文件看看是否能够正常播放。
|
||||
|
||||
这可能对你有用,但是解决方案并未结束。你可能有其它格式的一些视频文件要求一些其它的 H.264 解码器或者其它解码器。
|
||||
|
||||
![其它的解码器播放视频你可能仍然有问题][4]
|
||||
|
||||
你可以通过如下命令安装更多的解码器:
|
||||
|
||||
```
|
||||
sudo apt install libavcodec-extra gstreamer1.0-plugins-ugly gstreamer1.0-libav
|
||||
```
|
||||
|
||||
然而,在 Ubuntu 有一个 [安装多媒体解码器更加方便的方法][5],我会在下一节展示给你。
|
||||
|
||||
#### 方法 2: 安装所有多媒体解码器(推荐)
|
||||
|
||||
Ubuntu 系统提供了一个名字叫做 `ubuntu-restricted-extras` 的基础软件包,由许多常规的音频和视频解码器以及像类似微软字体库那样多余的一些软件包组成。
|
||||
|
||||
安装这个软件包你将不用再担心多媒体解码器的问题了。
|
||||
|
||||
在 Ubuntu 打开终端并键入以下命令:
|
||||
|
||||
```
|
||||
sudo apt install ubuntu-restricted-extras
|
||||
```
|
||||
|
||||
由于这个基础软件包包含类似微软字库那样用不到的一些多余的软件,你必须得接受最终用户许可协议(EULA)才行。
|
||||
|
||||
![按下 tab 键 然后点击回车接受 EULA 协议][6]
|
||||
|
||||
下一屏类似如下。按下 `tab` 键会高亮显示选项。当正确的选项高亮显示时,按下回车键来确认你的选择。
|
||||
|
||||
![当高亮显示你正确的选项时,按下 tab 键,按回车键确认][7]
|
||||
|
||||
当多媒体解码器安装完成后,你应该能够播放绝大多数媒体文件了。你的音乐播放器能播放 MP3 文件,你的视频播放器能播放 MP4,MKV 等等格式。
|
||||
|
||||
然而,这也不是解决方案的终点,至少对某些人来说。
|
||||
|
||||
为什么我要那样说?因为我已经注意到 Ubuntu 系统下的默认视频播放器 Totem 在播放某些视频格式文件时常常遇到问题。你会注意到突然你的系统主机发热,风扇狂转并且鼠标指针停止运行。
|
||||
|
||||
为什么?因为 Totem 播放器在视频解码方面占用了大量的处理器资源。
|
||||
|
||||
当你播放视频的时候你可以通过 `top` 命令尝试查看名称为 `totem` 这个进程(那是默认视频播放器的名字)。
|
||||
|
||||
![Ubuntu 默认的视频播放器 Totem 可能消耗过多的必要的 CPU 资源][8]
|
||||
|
||||
你现在能够做什么?你的麻烦看起来永无止境,别担心。[在 Linux 上有更好的视频播放器][9] 并且它们能帮助你解决问题。
|
||||
|
||||
#### 方法 3: 安装一个更优秀的视频播放器(推荐)
|
||||
|
||||
在 Linux 上有很多优秀的视频播放器。我发现它们优于默认的 Totem 视频播放器。
|
||||
|
||||
就我个人来说,那么多个我只喜欢这两个:[VLC][10] 和 [MPV][11]。
|
||||
|
||||
VLC 是一个功能丰富且超级流行的视频播放器。很可能你已经使用过 VLC 。
|
||||
|
||||
MPV 媒体播放器不是那么流行,但使用这个轻量级的程序播放视频文件是再合适不过了。
|
||||
|
||||
VLC 和 MPV 播放器都擅长处理多媒体解码器。你甚至不必分开来安装多媒体解码器。只需要 [安装 VLC][12] 或者 MPV ,你就能够播放各种格式的视频文件。
|
||||
|
||||
在软件中心也可以找到它:
|
||||
|
||||
![在 Ubuntu 软件中心 MPV 可用][13]
|
||||
|
||||
或者 使用命令行 [在 Ubuntu 安装 MPV][14]:
|
||||
|
||||
```
|
||||
sudo apt install mpv
|
||||
```
|
||||
|
||||
现在你已经有了一个新的视频播放器,你应该右键点击视频文件,选择新的视频播放器来打开。
|
||||
|
||||
或者,你可以[使其作为默认程序][15] 双击来播放视频文件。
|
||||
|
||||
### 对你有用吗?
|
||||
|
||||
我在这里没有说太多细节。我想阐述各种方法以及对应的优缺点。
|
||||
|
||||
你在 Ubuntu 处理好 H.264 解码器的问题了吗?哪种方法对你有用?
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/install-h-264-decoder-ubuntu/
|
||||
|
||||
作者:[Abhishek Prakash][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[hwlife](https://github.com/hwlife)
|
||||
校对:[turbokernel](https://github.com/turbokernel)
|
||||
|
||||
本文由 [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-ubuntu/
|
||||
[2]: https://itsfoss.com/wp-content/uploads/2022/04/h264-decoder-error-ubuntu-800x241.png
|
||||
[3]: https://itsfoss.com/wp-content/uploads/2022/04/h264-decoder-ubuntu-software-center-800x532.png
|
||||
[4]: https://itsfoss.com/wp-content/uploads/2022/04/ac3-decoder-missing-ubuntu-800x251.png
|
||||
[5]: https://itsfoss.com/install-media-codecs-ubuntu/
|
||||
[6]: https://itsfoss.com/wp-content/uploads/2020/02/installing_ubuntu_restricted_extras.jpg
|
||||
[7]: https://itsfoss.com/wp-content/uploads/2020/02/installing_ubuntu_restricted_extras_1.jpg
|
||||
[8]: https://itsfoss.com/wp-content/uploads/2022/04/totem-consuming-more-cpu-ubuntu-800x454.webp
|
||||
[9]: https://itsfoss.com/video-players-linux/
|
||||
[10]: https://www.videolan.org/vlc/
|
||||
[11]: https://mpv.io/
|
||||
[12]: https://itsfoss.com/install-latest-vlc/
|
||||
[13]: https://itsfoss.com/wp-content/uploads/2022/04/mpv-player-ubuntu-software-center-800x346.png
|
||||
[14]: https://itsfoss.com/mpv-video-player/
|
||||
[15]: https://itsfoss.com/change-default-applications-ubuntu/
|
@ -0,0 +1,98 @@
|
||||
[#]: subject: "How to Install Classic GNOME Flashback in Ubuntu 22.04 LTS"
|
||||
[#]: via: "https://www.debugpoint.com/2022/05/gnome-classic-ubuntu-22-04/"
|
||||
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: "turbokernel"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14627-1.html"
|
||||
|
||||
Ubuntu 22.04 LTS 中安装经典 GNOME Flashback 指南
|
||||
======
|
||||
|
||||

|
||||
|
||||
> 关于如何在最新的 UBUNTU 22.04 LTS 中安装旧的经典 GNOME Flashback 的快速指南。
|
||||
|
||||
[GNOME Flashback][1](又名 classic GNOME)是旧 GNOME 3 shell 的一个分支,它使用早期 GNOME 2 技术的布局和原则。它的速度快如闪电,并且在设计上非常轻量级。因此,它非常适合几十年前的老旧硬件。
|
||||
|
||||
随着带有现代 GNOME 42 的 [Ubuntu 22.04 LTS][2] 的发布,有必要寻找轻量级的桌面环境选项。
|
||||
|
||||
此外,GNOME Flashback 很容易安装在现代 Ubuntu Linux 中,你仍然可以享受 Ubuntu 性能而不必关心 GNOME 42、GTK4、libadwaita 之类的东西。
|
||||
|
||||
### 在 Ubuntu 22.04 LTS 中下载并安装经典 GNOME Flashback
|
||||
|
||||
按照以下步骤在 Ubuntu 22.04 LTS 中下载并安装经典 GNOME Flashback(Metacity)。
|
||||
|
||||
在 Ubuntu 22.04 LTS 中打开终端(CTRL+ALT+T)并运行以下命令。安装大小约为 61MB。
|
||||
|
||||
```
|
||||
sudo apt update
|
||||
sudo apt install gnome-session-flashback
|
||||
```
|
||||
|
||||
![Install GNOME Classic Flashback Metacity in Ubuntu 22.04 LTS][3]
|
||||
|
||||
最后,安装完成后,退出。重新登录时,在登录选项中使用经典的 GNOME Flashback(Metacity) 。
|
||||
|
||||
![Choose GNOME Classic while logging in][3a]
|
||||
|
||||
### 经典 GNOME Flashback 的特点
|
||||
|
||||
首先,当你登录时,你将体验到传统的 GNOME 技术,它已被证明具有良好的生产力,并且比今天的技术快得多。
|
||||
|
||||
在顶部有旧版的面板,左侧是应用菜单,而系统托盘位于桌面的右上方。应用程序菜单显示所有已安装的应用和软件快捷方式,你可以在工作流程中轻松浏览。
|
||||
|
||||
此外,在右侧部分,系统托盘具有默认小部件,例如网络、音量控制、日期和时间以及关机菜单。
|
||||
|
||||
![Classic GNOME Flashback Metacity in Ubuntu 22.04 LTS][3b]
|
||||
|
||||
底部面板包含打开的窗口和工作区切换器的应用列表。默认情况下,它为你提供四个工作区供你使用。
|
||||
|
||||
此外,你可以随时更改顶部面板的设置以自动隐藏、调整面板大小和背景颜色。
|
||||
|
||||
除此之外,你可以通过 `ALT + 右键点击` 顶部面板添加任意数量的旧版小程序。
|
||||
|
||||
![Panel Context Menu][3c]
|
||||
|
||||
![Add to panel widgets][3d]
|
||||
|
||||
### 经典 GNOME 的性能
|
||||
|
||||
首先,磁盘空间占用极小,仅安装 61 MB。我的测试使用了大约 28% 的内存,其中大部分被其他进程占用。猜猜是谁?是的,是 snap-store(又名 Ubuntu 软件)。
|
||||
|
||||
因此,总体而言,它非常轻巧,内存(仅 28 MB)和 CPU(0.1%)占用空间非常小。
|
||||
|
||||
![Performance of GNOME Classic in Ubuntu 22.04][3e]
|
||||
|
||||
此外,假设你将其与同样使用相同技术的 Ubuntu MATE 进行比较。在这种情况下,它比 MATE 更轻量,因为你不需要任何额外的 MATE 应用及其用于通知、主题和其他附加资源的软件包。
|
||||
|
||||
### 结束语
|
||||
|
||||
我希望本指南在你决定在 Ubuntu 22.04 LTS Jammy Jellyfish 中安装经典 GNOME 之前帮助你获得必要的信息。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.debugpoint.com/2022/05/gnome-classic-ubuntu-22-04/
|
||||
|
||||
作者:[Arindam][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[turbokernel](https://github.com/turbokernel)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.debugpoint.com/author/admin1/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://wiki.archlinux.org/index.php/GNOME/Flashback
|
||||
[2]: https://www.debugpoint.com/2022/01/ubuntu-22-04-lts/
|
||||
[3]: https://www.debugpoint.com/wp-content/uploads/2022/05/Install-GNOME-Classic-Flashback-Metacity-in-Ubuntu-22.04-LTS.jpg
|
||||
[3a]: https://www.debugpoint.com/wp-content/uploads/2022/05/Choose-GNOME-Classic-while-loggin-in.jpg
|
||||
[3b]: https://www.debugpoint.com/wp-content/uploads/2022/05/Classic-GNOME-Flashback-Metacity-in-Ubuntu-22.04-LTS.jpg
|
||||
[3c]: https://www.debugpoint.com/wp-content/uploads/2020/04/Panel-Context-Menu.png
|
||||
[3d]: https://www.debugpoint.com/wp-content/uploads/2020/04/Add-to-panel-widgets.png
|
||||
[3e]: https://www.debugpoint.com/wp-content/uploads/2022/05/Performance-of-GNOME-Classic-in-Ubuntu-22.04.jpg
|
||||
[4]: https://t.me/debugpoint
|
||||
[5]: https://twitter.com/DebugPoint
|
||||
[6]: https://www.youtube.com/c/debugpoint?sub_confirmation=1
|
||||
[7]: https://facebook.com/DebugPoint
|
@ -0,0 +1,72 @@
|
||||
[#]: subject: "How to make community recognition more inclusive"
|
||||
[#]: via: "https://opensource.com/article/22/5/inclusive-community-recognition"
|
||||
[#]: author: "Ray Paik https://opensource.com/users/rpaik"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "PeterPan0106"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14590-1.html"
|
||||
|
||||
如何使社区认可更加包容
|
||||
======
|
||||
|
||||
> 抛开具体的工作量,我们认为所有的贡献都弥足珍贵。当所有社区贡献者都能获得家庭般的赞赏时,他们会更倾向于继续为社区添砖加瓦。
|
||||
|
||||

|
||||
|
||||
给予一个优秀的工作足够的认同和赞赏是我作为一个社区管理员最喜欢做的事。我不但有机会能够对贡献者表示感激,同时还能为社区设立一个优秀的榜样。认同和赞赏可以是为了庆祝一个成就,例如有人帮助其他成员加入社区、减少技术债务或者贡献了激动人心的新功能。
|
||||
|
||||
但是,用来确定贡献量的规则可能会有难以预料的后果。例如某些社区管理员利用如下图所示的图表来表彰贡献,过度地强调了拉取请求(PR)以及对代码库的贡献量。
|
||||
|
||||
![A bar graph ranking 15 contributors according the the number of PRs merged in a year, ranging from 250 at the top to 50 at the bottom.][2]
|
||||
|
||||
![A bar graph ranking 10 contributing organizations by number of contributions, ranging from more than 15 to less than 5][3]
|
||||
|
||||
使用这样的方法进行表彰会产生三个问题。
|
||||
|
||||
首先,这样过度关注了对代码库的贡献。早年间,开源项目主要吸引开发者参与,所以自然而然许多贡献是围绕代码的。现在,越来越多的非开发者正在积极参与社区项目(例如通过用户组、会议和用户生产的内容),他们的大多数贡献在代码库以外的地方。这些贡献将不会出现在诸如 *年度合并 PR 数量* 这样的表格上。
|
||||
|
||||
其次,过度关注贡献指标(指那些易于用数字统计的),最终会演变为奖励数量而不是质量,甚至影响力。在上图的 *贡献组织排行榜* 中,大型组织因为具有更多的可用人力,相对于小型组织就会有更为显著的优势。通过对大型组织在数量上的表彰将可能导致小型组织的人感到权利被剥夺了。
|
||||
|
||||
最后,尽管本意并非如此,但许多人都会把这些数据看做对个人或组织影响力的排名。
|
||||
|
||||
基于此,我们最好避免仅仅通过指标数量来表彰对社区的贡献。
|
||||
|
||||
### 令社区表彰更有意义
|
||||
|
||||
如何让社区表彰更为包容并且能够覆盖不同的贡献形式呢?诸如 Discord、IRC、邮件列表和Slack 等交流渠道可以很好的表明一个成员的活跃度及其感兴趣的领域。例如每当我看到一些人热衷于解答问题或者帮助新用户时,我会十分开心。这些贡献并不会出现在社区的数据板上,但是让这些贡献得到应有的认同和感谢并广为人知是十分重要的。
|
||||
|
||||
社区数据板显然是开源社区重要的工具。但是我提醒大家不要花费太多时间在建设数据板上。迟早你会发现,不是所有的东西都可以有清晰的标准进行度量,即便你能够想出规则量化一件事,你也依然会发现这些规则具有局限性。
|
||||
|
||||
为了获取更多的关于贡献的信息,我经常会安排社区成员茶话会。这些对话经常能够告诉我他们做出贡献的原因、有多少工作量以及谁同时也参与进来了等等。
|
||||
|
||||
当我第一次与他们对话时,我经常听到他们提及找到回馈社区的方法十分重要,而他们也在寻找方法来提供力所能及的帮助。许多人甚至因不能在代码方面做出贡献而感到内疚,而我会向他们强调代码不再是开源唯一重要的东西。有时这些对话能让我有机会接触到同一城市或同一行业的社区成员,或者发现更多共同的兴趣点。维护这些关系将有助于提升归属感。
|
||||
|
||||
### 令社区表彰更具影响力
|
||||
|
||||
除了寻找更多的活动形式,我们也可以让这些活动以更具影响力的形式呈现。例如在看到优质贡献时及时赞美。一个快速的感谢回复会比一两个月之后的正式感谢更有效。许多人包括我自己,都会强调给予更为正式而合理的表彰和奖励,但我们应当谨记,奖励并非社区成员贡献的主要动力。认可好的工作并努力去接触贡献者会令贡献者感到受重视。
|
||||
|
||||
让其他成员参与到认可的过程中也是一个很好的主意。一旦社区达到了一定的规模,便很难事无巨细地知晓一切细节。如果引入一个成员提名机制则会很好地让大家注意到优秀的贡献。如果你的社区拥有十分正式的奖项,例如在年度会议或聚会上颁发的奖项,请让社区成员参与提名和投票。这不仅提供了成员参与进来的平台,也令这些来自成员投票的奖项更有意义。
|
||||
|
||||
最后给予认同和感谢也是一个认识成员并加深了解的重要机会。有时候颁奖仿佛在进行交易:“你做了某件事,所以我们给你颁发了某个奖励”。多在介绍成员上花些时间,将令成员感到更受重视并加强归属感。
|
||||
|
||||
### 社区认可令社区更为健康
|
||||
|
||||
在提高开源社区的多样性、包容性和归属感方面,我们仍有许多工作亟待改善。更好的社区认可将在其中起着不可或缺的作用。确保所有的贡献都受到重视,让每一位贡献者都感到家庭般氛围和赞赏,将鼓励他们继续为社区贡献。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/22/5/inclusive-community-recognition
|
||||
|
||||
作者:[Ray Paik][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://opensource.com/users/rpaik
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://opensource.com/sites/default/files/lead-images/world_hands_diversity.png
|
||||
[2]: https://opensource.com/sites/default/files/2022-04/annual%20merged%20PRs.png
|
||||
[3]: https://opensource.com/sites/default/files/2022-04/top%20contributing%20orgs.png
|
@ -0,0 +1,38 @@
|
||||
[#]: subject: "Microsoft Joins The Open 3D Foundation For Open Source 3D Development"
|
||||
[#]: via: "https://www.opensourceforu.com/2022/05/microsoft-joins-the-open-3d-foundation-for-open-source-3d-development-promotion/"
|
||||
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14544-1.html"
|
||||
|
||||
微软加入开放 3D 基金会,参与开源 3D 开发
|
||||
======
|
||||
|
||||
![微软][1]
|
||||
|
||||
微软已经以首席成员的身份加入了<ruby>开放 3D 基金会<rt>Open 3D Foundation</rt></ruby>(O3DF),其他首席成员是 Adobe、AWS、华为、英特尔和 Niantic。微软的参与为该项目带来了大量的知识和思想引领,这表明了:通过行业合作,创造一个高保真、功能齐全、不受商业条件限制的开源 3D 引擎是多么的关键。
|
||||
|
||||
微软首席集团项目经理 Paul Oliver 将加入 O3DF 管理委员会,这表明他将致力于实现基金会的目标,即确保符合开放 3D 社区保持需求与输入的平衡。基金会的战略方向和对 3D 可视化、仿真计划的管理,是由理事会与股东的创新互动来指导的。
|
||||
|
||||
“微软在创意方面的根基很深,我们希望帮助所有的创作者,无论他们是谁、在哪里、为哪个平台创作”,Oliver 如是说,“由 Linux 基金会创建的开放 3D 基金会,是朝着帮助更多世界各地的创作者迈出的美妙一步,我们很高兴能成为其中的一员。”
|
||||
|
||||
微软不断致力于使游戏制作民主化,并向全世界的游戏创作者提供其工具和技术。加入开放 3D 基金会也反映出这一点。微软去年通过 GitHub 向所有开发者发布了其游戏开发工具包,并正在通过与 O3DF 的新伙伴关系,扩大其向所有人开放技术的承诺。
|
||||
|
||||
O3DF 执行董事,兼 Linux 基金会的游戏和数字媒体部总经理 Royal O'Brien 说:“我们很高兴微软以首席成员的身份加入开放 3D 基金会。有像微软这样杰出的行业资深公司做出贡献,并帮助社区推动 3D 引擎的创新,这对开源社区和使用它的公司都是巨大的好处。”
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.opensourceforu.com/2022/05/microsoft-joins-the-open-3d-foundation-for-open-source-3d-development-promotion/
|
||||
|
||||
作者:[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/microsoft-696x464.jpg
|
@ -0,0 +1,108 @@
|
||||
[#]: subject: "Tools You Can Use for the Security Audit of IoT Devices"
|
||||
[#]: via: "https://www.opensourceforu.com/2022/05/tools-you-can-use-for-the-security-audit-of-iot-devices/"
|
||||
[#]: author: "Dr Kumar Gaurav https://www.opensourceforu.com/author/dr-gaurav-kumar/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "tendertime"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14566-1.html"
|
||||
|
||||
物联网安全审计工具集锦
|
||||
======
|
||||
|
||||
数字化转型涉及数据驱动的决策与人工智能(AI)的结合。重要数据通过物联网(IoT)设备和智能组件进行传播。由于物联网设备常常处于不安全的环境,而且由于缺乏内生安全机制的脆弱性,很难免于潜在的网络攻击。以下是一些用于实现安全审计的开源工具,可以降低此类攻击风险。
|
||||
|
||||

|
||||
|
||||
网络攻击者和嗅探器可以从物联网设备中获取敏感数据,并利用这些信息对其他相关系统发起攻击。反病毒和计算机安全服务公司卡巴斯基表示,在 2021,物联网黑客数量同比增长了四倍多。
|
||||
|
||||
在很大程度上,黑客通过使用 Telnet 协议访问物联网网络,该协议为通过互联网与设备或服务器进行通信提供了命令行接口。根据研究报告,超过 58% 的物联网入侵使用各种协议以求实现挖掘加密货币、通过分布式拒绝服务(DDoS)攻击关闭系统、窃取机密数据的目的。
|
||||
|
||||
由于人们在疫情期间居家使用物联网设备的时间增加,安全风险也随之上升。这些物联网组件中的大部分无论是个人用还是商用,都缺乏基本的安全措施。人工智能和边缘计算等新技术也使网络和数据安全形势复杂化。卡巴斯基的一位安全专家 Dan Demeter 表示:智能组件变得流行,攻击的数量也随之上升了。
|
||||
|
||||
![Key components in PENIOT][2]
|
||||
|
||||
### 物联网组件的安全审计需求
|
||||
|
||||
网络攻击一直在演变,商业公司和政府部门都在采用越来越复杂的网络安全设施以防止他们的应用和基础设施免于在线攻击。全球渗透测试市场预计将从 2021 的 16 亿美元增长到 2026 年的 30 亿美元,2021 至 2026 年的复合年增长率为 13.8%。
|
||||
|
||||
物联网设备的渗透测试是一个热门话题,在这一领域有大量研究。即使采用“设计安全”的方法,渗透对于识别真正的安全危险并采取适当的预防措施也是至关重要的。
|
||||
|
||||
物联网部署中需要安全和隐私的关键部分和协议包括:
|
||||
|
||||
* <ruby>受限应用协议<rt>Constraint application protocol</rt></ruby>(CoAP)
|
||||
* <ruby>低功耗蓝牙<rt>Bluetooth low energy</rt></ruby>(BLE)
|
||||
* <ruby>高级消息队列协议<rt>Advanced message queuing protocol</rt></ruby>(AMQP)
|
||||
* <ruby>消息队列遥测传输<rt>Message queuing telemetry transport</rt></ruby>(MQTT)
|
||||
|
||||
攻击者有多种可能的入口访问到联网设备。在物联网渗透测试(或安全审计)时,要测试完整的物联网场景和生态。测试内容包括从单个层和嵌入式软件到通信协议和服务器的所有内容。对服务器、在线接口和移动应用的测试并非物联网独有,但至关重要,因为它们涵盖了故障可能性很高的领域。物联网漏洞是电气、嵌入式软件和通信协议测试的重点。
|
||||
|
||||
在评估联网设备的安全性时会进行以下测试。这些测试都是使用不同的针对漏洞的高性能渗透测试和安全审计工具进行的:
|
||||
|
||||
* 通信端口中的攻击和操纵的测试
|
||||
* 基于无线电信号捕获和分析的 IoT 嗅探
|
||||
* 接口和后门测试
|
||||
* 缓冲区溢出测试
|
||||
* 密码破解测试
|
||||
* 调试
|
||||
* 密码学分析
|
||||
* 固件操纵测试
|
||||
* 逆向工程
|
||||
* 内存转储
|
||||
|
||||
![][3]
|
||||
|
||||
### 物联网安全审计使用的开源工具
|
||||
|
||||
物联网设备在我们的日常生活中变得越来越普遍,比如,智能自行车、健身跟踪器、医疗传感器、智能锁和联动工厂等。所有这些设备和组件都可以使用开源工具来抵御网络攻击,本文将简要介绍其中一些工具。
|
||||
|
||||
#### PENIOT
|
||||
|
||||
[PENIOT](https://github.com/yakuza8/peniot) 是一种物联网渗透测试工具,使安全审计团队能够通过利用设备的连接来测试和破坏具有各种安全威胁的设备。可以测试主动和被动安全威胁。在确定目标设备和相关信息(或参数)后,可以进行主动安全攻击,例如改变系统资源、重放合法通信单元等。还可以分析被动安全威胁,例如破坏敏感数据的机密性或访问网络流量分析。
|
||||
|
||||
#### Objection
|
||||
|
||||
[Objective](https://github.com/sensepost/objection) 是一个对物联网环境中使用的安卓和 iOS 应用程序进行详细分析和安全审计的工具。
|
||||
|
||||
目前许多智能组件和设备都在使用安卓和 iOS 平台,使用该工具可以通过详细的日志和安全审计报告对这些平台进行分析。
|
||||
|
||||
#### Routersploit
|
||||
|
||||
[这个](https://github.com/threat9/routersploit) 针对嵌入式设备的开源开发框架具有多个用于渗透测试和安全审计的功能和模块:
|
||||
|
||||
* Exploits —— 漏洞评估
|
||||
* Creds —— 网络服务和证书的测试
|
||||
* Scanners —— 对目标进行详细的安全审计
|
||||
* Payloads —— 有效载荷和注入关键点的生成
|
||||
* Generic —— 执行和测试攻击
|
||||
|
||||
#### Wireshark
|
||||
|
||||
[Wireshark](https://www.wireshark.org) 是一款功能丰富的、免费的网络协议分析器。MQTT 等多种物联网协议可通过该工具实现有效分析。为了发现弱点,可以根据协议配置安全规则并检查流量。可以使用 `tcpdump` 通过命令行访问网络数据包分析器。此类工具用于检查物联网设备和网络之间交换的数据包。
|
||||
|
||||
#### Binwalk
|
||||
|
||||
[Binwalk](https://www.kali.org/tools/binwalk) 是一种逆向硬件设计的工具。它是 Kali Linux 的关键组件之一,用于渗透测试、服务器指纹识别、安全审计和取证应用。
|
||||
|
||||
#### Firmwalker
|
||||
|
||||
[Firmwalker](https://github.com/craigz28/firmwalker) 是一款自由开源的工具,用于搜索和扫描固件文件系统,无论是否被提取或挂载。使用这个工具可以做一个详细的安全审计。
|
||||
|
||||
在物联网(IoT)和万物互联(IoE)的时代,有必要设计并使用高性能工具包进行渗透测试和安全审计。随着物联网设备数量的增加,安全风险也在增加。为了物联网和万物互联部署有更高级别的安全和隐私,有必要根据最新的协议和动态的流量定制化自由及开源的工具箱和软件包。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.opensourceforu.com/2022/05/tools-you-can-use-for-the-security-audit-of-iot-devices/
|
||||
|
||||
作者:[Dr Kumar Gaurav][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[tendertime](https://github.com/tendertime)
|
||||
校对:[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/03/Screenshot-2022-05-02-154427-696x422.png
|
||||
[2]: https://www.opensourceforu.com/wp-content/uploads/2022/03/Figure-1-Key-components-in-PENIOT.jpg
|
||||
[3]: https://www.opensourceforu.com/wp-content/uploads/2022/03/Screenshot-2022-05-02-153653-590x282.png
|
@ -0,0 +1,88 @@
|
||||
[#]: subject: "Ubuntu’s Unity Desktop Still Lives: Version 7.6 is Available for Testing After 6 Years"
|
||||
[#]: via: "https://news.itsfoss.com/unity-7-6-testing/"
|
||||
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "imgradeone"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14538-1.html"
|
||||
|
||||
Ubuntu 的 Unity 桌面还活着:时隔 6 年后,7.6 测试版发布
|
||||
======
|
||||
|
||||
> 虽然 Canonical 已经不再维护 Unity 桌面,但 Ubuntu Unity 的开发者承担了这项重任,发布了一项主要更新(已可用于测试)。
|
||||
|
||||
![Unity 7.6][1]
|
||||
|
||||
怕你兴奋过头了,先提醒一下,Canonical 并没有回归 Unity 桌面的维护。
|
||||
|
||||
得益于 Ubuntu Unity 发行版开发者(Rudra Saraswat)的不懈努力,时隔 6 年,我们终于看到了 Unity 桌面环境的更新。
|
||||
|
||||
补充说一下,[Ubuntu Unity][2] 是一款采用 Unity 桌面(而不是 GNOME)的社区项目。因此,如果你想在 Ubuntu 22.04 LTS 上使用 Unity 桌面,那么毋庸置疑,[Ubuntu Unity][2] 绝对是你的最佳伙伴。
|
||||
|
||||
起初,它仅仅提供了经过微调的 Unity 体验,但现在,**Unity 7.6** 的界面得到了一些优化及视觉变更。
|
||||
|
||||
下面是你应该了解的东西:
|
||||
|
||||
### Unity 7.6:更新了什么?
|
||||
|
||||
> **提示**:Unity 7.6 是为公共测试而发布的,它不应作为替代其他桌面环境的使用环境。
|
||||
|
||||
这不仅仅是面向用户的改进,还有针对开发方面的努力,旨在帮助贡献者,让他们更方便地帮助 Unity7 的开发。
|
||||
|
||||
这些改善包括:
|
||||
|
||||
#### 用户界面变更
|
||||
|
||||
![Unity 桌面][3]
|
||||
|
||||
Dash 启动器(应用启动器)与 HUD 现已重新设计,拥有更现代、简洁的视觉。
|
||||
|
||||
总的来看,现在的设计看上去更加扁平,但仍旧保留了不错的系统全局模糊效果。
|
||||
|
||||
本次引入了一些细微的视觉改进,比如停靠区上的“清空回收站”按钮修改为使用 Nemo(而不是 Nautilus),以及修复了 Dash 预览中的应用详情与评分。
|
||||
|
||||
#### 性能改进
|
||||
|
||||
![Unity 桌面][4]
|
||||
|
||||
在最新的更新中,Unity7 的内存使用量更低,同时你也可以注意到,Ubuntu Unity 22.04 的内存使用量明显降低到约 700-800 MB。
|
||||
|
||||
此外,低端显卡模式现在运作得更好,Dash 也比以前更快。
|
||||
|
||||
#### 其他变化
|
||||
|
||||
Unity7 Shell 的源代码已经完全迁移至 [GitLab][5]。用于独立测试的 Unity7 启动器已被修复,同时一些有问题的测试项也已被禁用,改善了构建用时(使其大幅缩短)。
|
||||
|
||||
发布说明上说,这些改进将帮助 Unity7 的贡献者。
|
||||
|
||||
### 测试 Unity 7.6
|
||||
|
||||
你可以按照 [官方测试公告][6] 中提到的方式来编译它,并亲自尝试。你也可以前往其官方网站探索更多。
|
||||
|
||||
> **[Unity 7.6][7]**
|
||||
|
||||
另一种情况,如果你不想添加测试 PPA 源,你也可以等待 Ubuntu Unity 22.04 的更新。
|
||||
|
||||
*你对 Unity 桌面环境的这次更新有什么看法?你喜欢它吗?欢迎在评论区中告诉我你的想法。*
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/unity-7-6-testing/
|
||||
|
||||
作者:[Ankush Das][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[imgradeone](https://github.com/imgradeone)
|
||||
校对:[校对者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/unity-7-6-release.jpg
|
||||
[2]: https://ubuntuunity.org/
|
||||
[3]: https://news.itsfoss.com/wp-content/uploads/2022/05/unity-7-6.jpg
|
||||
[4]: https://news.itsfoss.com/wp-content/uploads/2022/05/neofetch-unity-7-6.png
|
||||
[5]: https://gitlab.com/ubuntu-unity
|
||||
[6]: https://unity.ubuntuunity.org/blog/unity-7.6/
|
||||
[7]: https://unity.ubuntuunity.org/
|
@ -0,0 +1,44 @@
|
||||
[#]: subject: "Nvidia Begins To Set The Foundation For Future Open And Parallel Coding"
|
||||
[#]: via: "https://www.opensourceforu.com/2022/05/nvidia-begins-to-set-the-foundation-for-future-open-and-parallel-coding/"
|
||||
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "zxcv545"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14565-1.html"
|
||||
|
||||
英伟达开始着手为未来的开放和并行编程建立基础
|
||||
======
|
||||
|
||||

|
||||
|
||||
随着图形处理器在计算机里变得越来越常见,英伟达正在扩大与标准和开源社区的合作,以便于包括先前仅限于该公司开发工具的下游技术。虽然人们在 C++ 和 Fortran 等语言上投入了大量精力,但这些语言被认为在高度并行的计算机上执行代码落后于原生实现的编程语言。
|
||||
|
||||
英伟达结合了开放和专有库的 CUDA 并行编程框架影响了许多正在开放和主流化的技术。在 2007 年,CUDA 作为一个为程序员开发基于 GPU 的系统的一系列编程工具和框架而推出。然而,随着 GPU 利用率在更多应用程序和领域中的增长,CUDA 理念发生了转变。
|
||||
|
||||
英伟达因其在 GPU 上的主导地位而广为人知,但 CUDA 是这家以 1 万亿市值为目标的软件和服务供应商重塑品牌的核心。英伟达的长期目标是成为一个全栈提供商,专注于自动驾驶、量子计算、医疗保健、机器人、网络安全和量子计算等特定领域。
|
||||
|
||||
英伟达已经在特定领域创建了专用的 CUDA 库,以及企业可以使用的硬件和服务。其 CEO 黄仁勋在最近的 GPU 技术大会上宣布的 “AI 工厂” 概念,最能体现全栈战略。客户可以将应用程序放入英伟达的大型数据中心,从而获得针对特定行业或应用程序需求量身定制的定制 AI 模型。
|
||||
|
||||
英伟达可以通过两种方式从 AI 工厂原则中受益:利用 GPU 容量或利用特定领域的 CUDA 库。在英伟达 GPU 上,程序员可以使用 OpenCL 等开源并行编程框架。另一方面,CUDA 将为那些愿意投资的人提供额外的最后一英里增长,因为其已调整为与英伟达的 GPU 密切运作。
|
||||
|
||||
虽然并行编程在高性能计算中很常见常见,但英伟达的目标是让其成为主流计算的标准。该公司正在协助实现一流工具的标准化,无论品牌、加速器类型或并行编程框架是什么,都可以编写可跨硬件平台移植的并行代码。
|
||||
|
||||
一方面,英伟达是 C++ 小组的成员,该小组正在为跨硬件同时执行可移植代码奠定基础。上下文可以是主要执行 IO 的 CPU 线程,也可以是执行高要求计算的 CPU 或 GPU 线程。英伟达特别致力于为 C++ 程序员提供异步和并行的标准语言和基础设施。
|
||||
|
||||
第一项工作侧重于内存模型,该模型已合并到 C++ 11 中,但当并行性和并发性变得更加普遍时,必须对其进行更新。C++ 11 的内存模型强调跨多核 CPU 的并发执行,但它缺乏并行编程钩子。C++ 17 标准为更高级别的并行特性奠定了基础,但真正的可移植性必须等待未来的标准。C++ 20 是当前标准,而 C++ 23 即将推出。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.opensourceforu.com/2022/05/nvidia-begins-to-set-the-foundation-for-future-open-and-parallel-coding/
|
||||
|
||||
作者:[Laveesh Kocher][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[zxcv545](https://github.com/zxcv545)
|
||||
校对:[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/Nvidia_logo_angled_shutterstock.jpg
|
@ -0,0 +1,38 @@
|
||||
[#]: subject: "Package Analysis Examines Packages In Open Source Repositories In Real Time"
|
||||
[#]: via: "https://www.opensourceforu.com/2022/05/package-analysis-examines-packages-in-open-source-repositories-in-real-time/"
|
||||
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14578-1.html"
|
||||
|
||||
软件包分析项目实时检查开源仓库中的包
|
||||
======
|
||||
|
||||
![openssf-logo][1]
|
||||
|
||||
开源安全基金会(OpenSSF)发布了一个新工具的测试版,它可以对发布到著名开源仓库的所有软件包进行动态分析。软件包分析项目试图通过识别任何恶意行为并警告用户来保护开源软件包,目的是增强对开源软件的信任并加强软件供应链的安全性。
|
||||
|
||||
OpenSSF 说:“软件包分析项目旨在了解开源仓库上可用软件包的行为和功能:它们访问哪些文件,它们连接到哪些地址,以及它们运行哪些命令?”
|
||||
|
||||
该基金会的 Caleb Brown 和 David A. Wheeler 补充说:“该项目还跟踪软件包随时间的行为变化,以确定以前安全的软件何时开始出现可疑行为。”
|
||||
|
||||
该程序在为期一个月的测试运行中发现了 200 多个发布到 PyPI 和 NPM 的恶意软件包,其中大多数流氓库依赖于依赖混淆和仿冒攻击。谷歌是 OpenSSF 的成员,它支持软件包分析计划,强调“在发布软件包之前审查软件包以确保用户安全”的重要性。
|
||||
|
||||
去年,该公司的开源安全团队提出了软件工件的供应链级别(SLSA)架构,以验证软件包的完整性并防止未经授权的更改。这一发展是在开源生态系统越来越多地被武器化,用加密货币矿工和数据窃贼等恶意软件攻击开发者的情况下进行的。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.opensourceforu.com/2022/05/package-analysis-examines-packages-in-open-source-repositories-in-real-time/
|
||||
|
||||
作者:[Laveesh Kocher][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/laveesh-kocher/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://www.opensourceforu.com/wp-content/uploads/2022/05/openssf-logo-696x418.jpg
|
@ -0,0 +1,40 @@
|
||||
[#]: subject: "ESI Group Collaborates With ENSAM, Open Sources Its “Inspector” Software"
|
||||
[#]: via: "https://www.opensourceforu.com/2022/05/esi-group-collaborates-with-ensam-open-sources-its-inspector-software/"
|
||||
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "Veryzzj"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14571-1.html"
|
||||
|
||||
ESI 集团同 ENSAM 合作,开源其 Inpsector 软件
|
||||
======
|
||||
|
||||
![software][1]
|
||||
|
||||
Inspector 是一个可视化的交互式数据探索软件,能够对海量数据进行分析并提取相关信息,可用于预测性维修、网络安全、控制、机器学习算法分析等。
|
||||
|
||||
通过让更多的人使用 Inspector 软件,让他们能够合作开发可靠灵活的方案,以解决社区的技术问题和特殊需求,ESI 集团增加了对工业界和学术界的贡献。
|
||||
|
||||
作为 ESI 集团和 ENSAM 之间持续赞助合作和共创伙伴关系的一部分,将由 ENSAM(<ruby>巴黎高科国立高等工程技术大学<rt>Ecole Nationale Supérieure d’Arts et Métiers</rt></ruby>)领导 Inspector 的增长和扩展。通过共同参与建设由新加坡国家科学研究中(CNRS)协调的 Descartes 计划、CREATE-ID 国际研究讲座以及 ESI – ENSAM 虚拟工程实验室,双方加强了合作。
|
||||
|
||||
这种开源方式有许多好处。首先,社区能够以最有效的方式使用该软件,科学界能够从根据用户需求定制的新功能以及安全方面的改进中受益。其次,ESI 集团希望提供一个从软件中获利机会,包括汽车及航空在内的各种行业的客户已经证明了这一软件的可靠性。由于许多利益相关者的参与,Inspector 将持续发展以应对社区需求。
|
||||
|
||||
ESI 集团打算将其数据分析软件开源发布,得到了一些行业领导者和 Inspector 用户的兴趣和支持,例如 CNS 就是其中一例。
|
||||
|
||||
CNS 的总经理 Stephane Perrin 表示:“ESI 集团这一决定证明了集团的先进技术对创新和科学生态系统的贡献。CNS 作为一家网络与安全的专业公司,我们用行动支持 Inspector 的未来。除了将 Inspector 集成到我们的持续网络审计软件套件中外,不久后我们还将通过我们创新解决方案的业务部门为该软件提供支持。”
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.opensourceforu.com/2022/05/esi-group-collaborates-with-ensam-open-sources-its-inspector-software/
|
||||
|
||||
作者:[Laveesh Kocher][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[Veryzzj](https://github.com/Veryzzj)
|
||||
校对:[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/software-696x371.jpg
|
@ -0,0 +1,112 @@
|
||||
[#]: subject: "Firefox 100 Marks 17 Years of Development with Interesting Upgrades"
|
||||
[#]: via: "https://news.itsfoss.com/firefox-100-release/"
|
||||
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14555-1.html"
|
||||
|
||||
Firefox 100 发布:带来诸多有趣更新,纪念 17 年的发展历程
|
||||
======
|
||||
|
||||
> Mozilla Firefox 100 是一个重要的版本,它标志着这个浏览器 17 年的发展,以及多年来所有令人兴奋的功能。
|
||||
|
||||
![Firefox 100][1]
|
||||
|
||||
Firefox 可以说是最受欢迎的不基于 Chrome 的开源浏览器,它可用于 Linux、Windows 和 Mac。
|
||||
|
||||
众所周知,目前,基于 Chrome 的浏览器在市场份额中占主导地位。但你可能不知道的是,Firefox 早在谷歌 Chrome 出现之前就已经问世了。
|
||||
|
||||
准确地说,Firefox 100 的发布标志着,它自 2004 年的发展历程已经有 17 年了。
|
||||
|
||||
时间过得好快,一切仿佛就发生在昨天。
|
||||
|
||||
### Firefox 100:更新内容
|
||||
|
||||
![Firefox 100][2]
|
||||
|
||||
不管你是否喜欢 Firefox 新的发展计划,你都不得不承认,它多年来引入了众多行业领先的功能/技术,这一点令人印象深刻。
|
||||
|
||||
Firefox 100 的发布是一个重要的里程碑。但是,这并不是一次大规模升级。
|
||||
|
||||
本文中,我将介绍这个版本的主要改进。
|
||||
|
||||
#### “画中画”模式改进
|
||||
|
||||
![Firefox 100][3]
|
||||
|
||||
现在,在“画中画”模式下观看 YouTube、Prime Video 和 Netflix 上的任何内容,Firefox 都支持视频字幕。
|
||||
|
||||
你只需要在相应的平台上启用视频字幕,它就会继续出现在“画中画”中。
|
||||
|
||||
“画中画”字幕不仅支持主流平台,还支持 Coursera 等使用 WebVTT 格式的网站。
|
||||
|
||||
#### 语言检测
|
||||
|
||||
为了改善用户体验,Firefox 现在可以检测到语言与操作系统偏好不符的情况。
|
||||
|
||||
这只会在你安装浏览器后,第一次运行时触发。你可以在系统语言和浏览器默认语言之间进行选择。
|
||||
|
||||
#### 滚动条默认不占用屏幕空间
|
||||
|
||||
Linux 和 Windows 11 的滚动条默认不会占用你宝贵的屏幕空间。换句话说,当你进行滚动或导航时,滚动条才会做出反应。
|
||||
|
||||
![Firefox 100][4]
|
||||
|
||||
你可以在设置中改变这一点(针对 Linux 用户)。如果你是在 Windows 上,Firefox 的视觉效果会跟随你的系统设置。因此,你需要对 Firefox 浏览器进行调整,以符合你自己的偏好。
|
||||
|
||||
#### 控制网站外观
|
||||
|
||||
![Firefox 100][5]
|
||||
|
||||
对于某些网站,你的浏览器偏好会影响网页的颜色/外观。
|
||||
|
||||
为了调整这类网站的体验,你现在可以在设置中设置网站外观偏好,选择浅色/深色、系统或 Firefox 主题。
|
||||
|
||||
#### HDR 视频 & 硬件加速的 AV1 视频解码
|
||||
|
||||
尽管,对一些用户来说,支持 HDR 视频可能不是什么大事。但我还是要指出,现在 Mac 上的 Firefox 也支持 HDR 了。
|
||||
|
||||
截至目前,官方支持仅限于在 macOS 11+ 上浏览 YouTube 网站。当然,你还需要一个支持 HDR 的屏幕。
|
||||
|
||||
硬件加速的 AV1 视频解码终于在 Windows 上得到支持,当然,你还得有与之兼容的 GPU(包括英特尔 11 代、AMD RDNA 2 和 GeForce 30 系列)。除此之外,Firefox 在 Windows 上还启用了视频叠加功能,以减少电量使用。
|
||||
|
||||
不幸的是,这些并不是针对 Linux 的更新,但应该能帮助跨平台的 Firefox 用户。
|
||||
|
||||
#### 其他改进
|
||||
|
||||
除了主要的亮点之外,它还包括了以下改进:
|
||||
|
||||
* 增加了对多个 Java 线程的分析支持。
|
||||
* 软重载一个网页将不再导致所有资源的重新验证。
|
||||
* 有了一个新的链接焦点指示器,它用一个实心的蓝色轮廓取代了旧的点状轮廓。
|
||||
|
||||
你可以在 [官方发布说明][6] 中了解更多技术变化。
|
||||
|
||||
### 获取 Firefox 100
|
||||
|
||||
你可以从它的官网上下载,也可以寻找可用的更新,应该很快就能下载完成。
|
||||
|
||||
> **[Mozilla Firefox 100][7]**
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/firefox-100-release/
|
||||
|
||||
作者:[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/firefox-100-release.jpg
|
||||
[2]: https://news.itsfoss.com/wp-content/uploads/2022/05/firefox-100-about.jpg
|
||||
[3]: https://news.itsfoss.com/wp-content/uploads/2022/05/firefox-captions-100.jpg
|
||||
[4]: https://news.itsfoss.com/wp-content/uploads/2022/05/scrollbars.jpg
|
||||
[5]: https://news.itsfoss.com/wp-content/uploads/2022/05/firefox-appearance-tweak.jpg
|
||||
[6]: https://www.mozilla.org/en-US/firefox/100.0/releasenotes/
|
||||
[7]: https://www.mozilla.org/en-US/firefox/download/
|
@ -0,0 +1,88 @@
|
||||
[#]: subject: "How I manage my own virtual network with ZeroTier"
|
||||
[#]: via: "https://opensource.com/article/22/5/zerotier-network"
|
||||
[#]: author: "Kevin Sonney https://opensource.com/users/ksonney"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14573-1.html"
|
||||
|
||||
ZeroTier:你自己的虚拟骨干网
|
||||
======
|
||||
|
||||
> ZeroTier 是一个加密的虚拟骨干网,允许多台机器像在一个网络上一样通信。
|
||||
|
||||

|
||||
|
||||
*自动化是现在的一个热门话题。在我作为网站可靠性工程师(SRE)的日常工作中,我的部分职责是将尽可能多的重复性任务自动化。但是我们当中有多少人在日常生活、非工作生活中这样做呢? 今年,我专注于自动化工作,以便我们可以专注于重要的事情。*
|
||||
|
||||
在实现一切自动化的同时,我在一些远程站点上遇到了困难。我不是一个网络专家,所以我开始研究我的选择。在研究了各种虚拟专用网络(VPN)、硬件端点、防火墙规则以及支持多个远程站点的所有东西后,我感到困惑、暴躁,并对这一切的复杂性感到沮丧。
|
||||
|
||||
然后我发现了 [ZeroTier][4]。ZeroTier 是一个加密的虚拟骨干网,允许多台机器像在一个网络上一样通信。代码全部是开源的,你可以自行托管控制器,或者使用 [ZeroTierOne][5] 服务,有免费或付费计划。我现在使用的是它们的免费计划,它很强大、可靠,而且非常稳定。
|
||||
|
||||
因为我使用的是 Web 服务,所以我不打算详细介绍运行控制器和根服务。ZeroTier 在他们的 [文档][6] 中对如何做到这一点有完整的参考,而且非常好。
|
||||
|
||||
在 Web 用户界面中创建了我自己的虚拟网络之后,客户端的安装几乎是微不足道的。ZeroTier 有 APT、RPM、FreeBSD 和许多其他平台的软件包,所以让第一个节点上线不需要什么努力。
|
||||
|
||||
安装完毕后,客户端就会连接到控制器服务,并为节点生成一个唯一的 ID。在 Linux 上,你使用 `zerotier-cli` 命令来加入一个网络,使用 `zerotier-cli join NETWORKID` 命令:
|
||||
|
||||
```
|
||||
$ sudo zerotier-cli info
|
||||
200 info 469584783a 1.x.x ONLINE
|
||||
```
|
||||
|
||||
你也可以使用 `zerotier-cli` 来获得连接和可用节点的列表,改变网络设置,以及离开网络。
|
||||
|
||||
![Image of Setting up a New Node][7]
|
||||
|
||||
在加入一个网络后,你必须批准该节点的访问,可以通过网络控制台或调用应用程序编程接口(API)。这两种方法在 ZeroTier 网站上都有文档说明。连接两个节点后,无论你身在何处或位于防火墙的哪一侧,你都可以相互连接,就像你们在同一个建筑的同一个网络中。我的主要用例之一是 [远程访问我的家庭助理环境][8],而不需要打开防火墙端口或将其暴露在互联网上(关于我的家庭助理设置和相关服务的更多信息,见后文)。
|
||||
|
||||
我自己做的一件事是为内部 DNS 设置了一个 [Beta ZeroNDS 服务][9]。这为我管理自己的名称服务或为我所有的私人主机和 IP 地址创建公共记录减少了很多复杂性。我发现操作说明非常简单直白,并且能够在大约 5 分钟内为我的私人网络建立一个 DNS 服务器。每个客户端必须允许 Zerotier 设置 DNS,这在 GUI 客户端中非常简单。要使它在 Linux 客户端上使用,请使用:
|
||||
|
||||
```
|
||||
$ sudo zerotier-cli setNETWORKID allowDNS=1
|
||||
```
|
||||
|
||||
在你添加和删除主机时,不需要其他更新,它“就能工作”。
|
||||
|
||||
```
|
||||
$ sudo zerotier-cli info
|
||||
200 info 469584845a 1.x.y ONLINE
|
||||
$ sudo zerotier-cli join
|
||||
93afae596398153a 200 join OK
|
||||
$ sudo zerotier-cli peers
|
||||
200 peers
|
||||
<ztaddr> <ver> <role> <lat> <link> <TX> <RX> <path>
|
||||
61d294b9cb - PLANET 112 DIRECT 7946 2812 50.7.73.34/9993
|
||||
62f865ae71 - PLANET 264 DIRECT 7946 2681 50.7.76.38/9993
|
||||
778cde7190 - PLANET 61 DIRECT 2944 2901 103.195.13.66/9993
|
||||
93afae5963 1.x LEAF 77 DIRECT 2945 2886 35.188.31.177/41848
|
||||
992fcf1db7 - PLANET RECT 79124 DI47 2813 195. 181.173.159/9993
|
||||
```
|
||||
|
||||
我只提到了它所有功能的表面。ZeroTier 还允许在 ZeroTier 网络之间建立桥接、高级路由规则等。它们甚至有一个 [Terraform 提供者][10] 和一个 [很棒的 Zerotier 资源][11] 清单。到今天为止,我正在使用 ZeroTier 连接四个物理站点的机器,其中三个在 NAT 防火墙后面。Zerotier 的设置很简单,而且管理起来几乎完全不费力。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/22/5/zerotier-network
|
||||
|
||||
作者:[Kevin Sonney][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/ksonney
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://opensource.com/sites/default/files/lead-images/coffee_tea_laptop_computer_work_desk.png
|
||||
[2]: https://unsplash.com/@jonasleupe?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
|
||||
[3]: https://unsplash.com/s/photos/tea-cup-computer?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
|
||||
[4]: https://github.com/zerotier
|
||||
[5]: https://www.zerotier.com/pricing
|
||||
[6]: https://docs.zerotier.com
|
||||
[7]: https://opensource.com/sites/default/files/2022-04/SecondDay02-2.png
|
||||
[8]: https://opensource.com/article/22/5/remote-home-assistant
|
||||
[9]: https://github.com/zerotier/zeronsd
|
||||
[10]: https://github.com/zerotier/terraform-provider-zerotier
|
||||
[11]: https://github.com/zerotier/awesome-zerotier
|
@ -0,0 +1,43 @@
|
||||
[#]: subject: "Microsoft’s 3D Movie Maker, First Released In 1995, Is Now Open Source"
|
||||
[#]: via: "https://www.opensourceforu.com/2022/05/microsofts-3d-movie-maker-first-released-in-1995-is-now-open-source/"
|
||||
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14549-1.html"
|
||||
|
||||
微软 1995 年首次发布的 3D Movie Maker 现已开源
|
||||
======
|
||||
|
||||
![Windows Movie Maker 标志][1]
|
||||
|
||||
这些年来,微软发布了许多开源工具。今天,它正在翻箱底,让 3D Movie Maker 也对所有人开放。3D Movie Maker 于 1995 年首次推出,它允许你用 3D 人物、道具、背景、文字、声音和特殊效果来创建动画场景。这个版本还包括一个 Argonaut 软件公司构建的 BRender。虽然这是一个积极的举措,但请先别太激动,事情可没那么容易。
|
||||
|
||||
> “这个项目不太可能在现代硬件/软件下构建成功,但你可以先开始编译,并获得部分完整的二进制文件。”
|
||||
|
||||
以下是它的部分构建说明:
|
||||
|
||||
- 确保本仓库检出到一个名字简短的目录中,最好是靠近驱动器的根路径(即 `C:\3d` 这样)。
|
||||
- 在构建过程中,你需要 Visual C++ 2.0 的开发工具(可以在安装盘的 `MSVC20BIN` 目录下找到)。有一些源码遵循的是 C++98 之前的规范,因此现代编译器可能不会喜欢它们。
|
||||
- 从本仓库的根目录下运行 `setvars.bat`。你可以改变这个脚本中的值来改变你的构建目标。
|
||||
- 查找并安装字体文件(详见 `FONTS.md`)。
|
||||
- 运行 `nmake` 以开始使用 3D Movie Maker。
|
||||
|
||||
这些代码是从微软公司的档案中恢复的,涉及到的第三方软件(如 BRender)已获得授权。同时,它删除了开发者的身份和别名,以便使该软件开源(从事原始发布工作的微软现任员工除外,他们同意保留自己的名字)。你可以在 [这里][2] 下载它。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.opensourceforu.com/2022/05/microsofts-3d-movie-maker-first-released-in-1995-is-now-open-source/
|
||||
|
||||
作者:[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/windows-movie-maker-logo-696x392.png
|
||||
[2]: https://github.com/microsoft/Microsoft-3D-Movie-Maker
|
@ -0,0 +1,57 @@
|
||||
[#]: subject: "elementary OS 7 Code Name Revealed. Here are the Details"
|
||||
[#]: via: "https://www.debugpoint.com/2022/05/elementary-os-7-announcement/"
|
||||
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14556-1.html"
|
||||
|
||||
elementary OS 7 公布了它的代号
|
||||
======
|
||||
|
||||
> 在今天早些时候的一篇博文中,创始人兼首席执行官 Daniella Fore 公布了 elementary OS 7 的发行说明和计划更新。
|
||||
|
||||

|
||||
|
||||
### elementary OS 7 公告
|
||||
|
||||
elementary OS 7 的代号是 “Horus”,它将基于 [Ubuntu 22.04 LTS][2]。这个版本的开发已经接近尾声,团队正在修复一些涉及窗口管理器和其他领域的关键回归测试问题。
|
||||
|
||||
首先,功能方面,elementary OS 7 得到了来自 **Ubuntu 22.04 LTS 的最新软件包和升级**。此外,**Flatpak 运行时更新、Granite 7、样式表和图标更新** 预计将在这个发行版的第 7 个版本中出现。它将会基于 [Linux 5.15.x 内核][3]。
|
||||
|
||||
其次,应用商店中的软件将会获得 **软件自动更新功能** 和新的 **笔记本电脑的电源配置文件选项**。预计电源配置文件将遵循传统的“<ruby>平衡<rt>Balanced</rt></ruby>”、“<ruby>性能<rt>Performance</rt></ruby>”和“<ruby>节能<rt>Power Saver</rt></ruby>”选项,就像其他 Linux 发行版一样。
|
||||
|
||||
此外,一个 **新的漂亮的音乐应用程序** 将在这个版本中首次亮相,它重新设计了一些图标,在桌面上的视觉效果也有提升。一些原生的应用商店中的软件已经使用了 GTK4 技术,在 Elementory OS 7 中,它们将会给用户带来流畅的性能体验。
|
||||
|
||||
#### 新的升级工具
|
||||
|
||||
但这还不是全部。团队还兴奋地宣布,一个 elementary **版本升级工具** 的可用原型已经准备就绪,目前正在测试。因此,在 elementary OS 7 发布后,它将正式亮相,以帮助用户实现从 elementary OS 6 到 7 的迁移。
|
||||
|
||||
目前,elementary OS 的版本升级是最大的挑战,因为它没有任何官方的升级途径。“版本升级工具” 是一个令人兴奋的消息,它将吸引更多的用户使用这个漂亮的 Linux 发行版。
|
||||
|
||||
不过,Wayland 迁移仍在计划之中,还没有被优先考虑。当 Wayland 被完整支持后,elementary OS 用户将会获得令人兴奋的体验。
|
||||
|
||||
### 发布日期?
|
||||
|
||||
对于任何一个 elementary OS 发行版,用户最关心的问题都是发布日期。嗯,发布日期还没有最终确定。elementary OS 7 “Horus” 将在准备好后发布。我乐观的猜测是在今年年底,在 Ubuntu 22.04 的第一个点发布(预计在 2022 年 7 月)之后。
|
||||
|
||||
最后,请阅读 elementary OS 7 [官方公告][4],了解更多关于这个版本的信息,以及 elementary OS 6 “Odin”(6.1 版本)的许多更新。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.debugpoint.com/2022/05/elementary-os-7-announcement/
|
||||
|
||||
作者:[Arindam][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.debugpoint.com/author/admin1/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://www.debugpoint.com/wp-content/uploads/2021/08/elementary-OS-6-ODIN-Desktop-1024x576.jpeg
|
||||
[2]: https://www.debugpoint.com/2022/01/ubuntu-22-04-lts/
|
||||
[3]: https://www.debugpoint.com/2021/11/linux-kernel-5-15/
|
||||
[4]: https://blog.elementary.io/updates-for-april-2022/
|
@ -0,0 +1,87 @@
|
||||
[#]: subject: "Experiment with containers and pods on your own computer"
|
||||
[#]: via: "https://opensource.com/article/22/5/containers-pods-101-ebook"
|
||||
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14591-1.html"
|
||||
|
||||
在自己的电脑上实验容器和荚
|
||||
======
|
||||
|
||||
> 通过这篇新的可下载指南开始探索容器技术的要领。
|
||||
|
||||

|
||||
|
||||
在电视剧 《<ruby>太空堡垒卡拉狄加<rt>Battlestar Galactica</rt></ruby>》中,这艘名副其实的巨型飞船其实并没有做什么。它是船员们坚定的庇护所,是战略和协调的中心联络点,也是资源管理的安全场所。而 <ruby>卡布里安毒蛇号<rt>Caprican Vipers</rt></ruby> 这种单人的独立太空船,出去对付邪恶的<ruby>赛昂人<rt>Cylons</rt></ruby>和其他太空中的危险。他们也从不只派一两艘毒蛇号出去。他们派了很多。这许许多多的冗余的飞船具有基本相同的能力和目的,但由于它们非常灵活和数量众多,它们总是能够处理每个星期都在威胁战星的任何问题。
|
||||
|
||||
如果你认为你感到这像是一个正在发展中的比喻,那么你是对的。现代的“云”大而无当,是分布在很远距离的大量基础设施的集合体。它具有强大的能力,但如果你将其视为普通计算机,就会浪费了它的大部分能力。当你想要处理来自数百万个输入源的大量数据时,把你的解决方案(无论它是采用应用、网站、数据库、服务器还是其他形式)打包起来,并发送该解决方案的微小镜像来处理数据集群,实际上是更有效的。当然,这些都是 “<ruby>容器<rt>container</rt></ruby>”,它们是云的劳动力。它们是你发送来处理服务请求的小型解决方案工厂,并且由于你可以根据任何给定时间传入的请求生成所需要的数量,因此理论上它们是取之不尽的。
|
||||
|
||||
### 在家里使用容器
|
||||
|
||||
如果你没有大量的传入请求需要处理,你可能会想知道容器给你带来什么好处。不过,在个人电脑上使用容器确实有其用途。
|
||||
|
||||
#### 容器作为虚拟环境
|
||||
|
||||
通过 Podman、LXC 和 Docker 等工具,你可以像以往运行虚拟机一样运行容器。不过,与虚拟机不同,容器没有因模拟固件和硬件而产生的开销。
|
||||
|
||||
你可以从公共仓库下载容器镜像,启动一个最小化的 Linux 环境,并将其作为命令或开发的测试场所。例如,假设你想试试你在 Slackware Linux 上构建的一个应用。首先,在仓库中搜索一个合适的镜像:
|
||||
|
||||
```
|
||||
$ podman search slackware
|
||||
```
|
||||
|
||||
然后选择一个镜像,作为你的容器的基础:
|
||||
|
||||
```
|
||||
$ podman run -it --name slackware vbatts/slackware
|
||||
sh-4.3# grep -i ^NAME\= /etc/os-release
|
||||
NAME=Slackware
|
||||
```
|
||||
|
||||
### 在工作中使用容器
|
||||
|
||||
当然,容器不只是个精简的虚拟机。它们可以是针对为非常具体的需求提供的特定解决方案。如果你不熟悉容器,那么新系统管理员最常见的入门仪式之一可能会有所帮助:启动你的第一个 Web 服务器,但是在容器中。
|
||||
|
||||
首先,获取一个镜像。你可以使用 `podman search` 命令来搜索你喜欢的发行版,或者直接搜索你喜欢的 httpd 服务器。当使用容器时,我倾向于信任我在裸机上使用的相同发行版。
|
||||
|
||||
当你你找到一个镜像作为你的容器的基础,你就可以运行你的镜像。然而,正如这个术语所暗示的,容器是*封起来的*,所以如果你只是启动一个容器,你将无法访问标准的 HTTP 端口。你可以使用 `-p` 选项将一个容器端口映射到一个标准的网络端口:
|
||||
|
||||
```
|
||||
$ podman run -it -p 8080:80 docker.io/fedora/apache:latest
|
||||
```
|
||||
|
||||
现在看看你本地主机上的 8080 端口:
|
||||
|
||||
```
|
||||
$ curl localhost:8080
|
||||
Apache
|
||||
```
|
||||
|
||||
成功了。
|
||||
|
||||
### 了解更多
|
||||
|
||||
容器拥有比模仿虚拟机更多的潜力。你可以将它们分组在 “<ruby>荚<rt>pod<rt></ruby>” 中,构建复杂应用的自动部署,启动冗余服务以满足高需求等等。如果你刚刚开始使用容器,你可以 [下载我们最新的电子书][2] 来学习该技术,甚至学习创建一个 “<ruby>荚<rt>pod<rt></ruby>”,以便你可以运行 WordPress 和数据库。
|
||||
|
||||
> **[下载我们最新的电子书][2]**
|
||||
|
||||
(LCTT 译注:容器环境中使用的 “Pod” 一词,我以前根据容器相关术语多用航海领域名词比喻来将其译做“吊舱”,但也有同学表示了不同意见。根据 Kubernetes [文档][3],这个词来自对<ruby>鲸鱼荚<rt>pod of whales</rt></ruby>、<ruby>豌豆荚<rt>pea pod</rt></ruby>的比喻,所以我觉得采用“荚”的翻译比较合适。—— wxy)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/22/5/containers-pods-101-ebook
|
||||
|
||||
作者:[Seth Kenlon][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/seth
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://opensource.com/sites/default/files/lead-images/tips_map_guide_ebook_help_troubleshooting_lightbulb_520.png
|
||||
[2]: https://opensource.com/downloads/containers-pods-101-ebook
|
||||
[3]: https://kubernetes.io/docs/concepts/workloads/pods/#:~:text=A%20Pod%20\(as%20in%20a,run%20in%20a%20shared%20context.
|
@ -0,0 +1,41 @@
|
||||
[#]: subject: "Open Source Developer Creates First-of-its-Kind Fund To Support Maintainers"
|
||||
[#]: via: "https://www.opensourceforu.com/2022/05/open-source-developer-creates-first-of-its-kind-fund-to-support-maintainers/"
|
||||
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14575-1.html"
|
||||
|
||||
开源开发者创建首个支持维护者的基金
|
||||
======
|
||||
|
||||

|
||||
|
||||
Appwrite 是一个为 Web、移动和 flutter 开发者提供的开源“<ruby>后端即服务<rt>Backend-as-a-Service</rt></ruby>”(BaaS)平台。今天,它宣布成立<ruby>开源软件基金<rt>Open Source Software Fund</rt></ruby>(OSS 基金),第一年该基金将向那些为当下数字基础设施奠定基础,却没有得到补偿的开源维护者,提供 5 万美元的资助。
|
||||
|
||||
Appwrite 每年的开源基金将用于协助开源开发者、促进技术革新,并为各种开源开发方案打造知名度。每年,它都会对基金数额进行审查,以确保其继续满足社区的需求。目前已经开始接受申请,并且每年都会接受申请。受资助者将由 Appwrite 开发者关系团队选出。了解更多:[https://appwrite.io/oss-fund][2]。
|
||||
|
||||
创始人兼 CEO Eldad Fux 说:“我懂这种感受,你在电脑前花费大量时间,把血汗和泪水投入到热爱的事物中,而且这些事物还在使全世界成千上万甚至数百万人受益。我一直就有这个想法:借用 Appwrite 的一些成功经验和投资,来支持其他像我一样的开发者和维护者,以回馈的方式来展望未来。希望我们的贡献能够带来改变。”
|
||||
|
||||
在今天的技术环境中,最紧迫的挑战之一就是开源开发者和维护者的长期生存能力。尽管开源软件占比已经达到 70% 到 90%,是当下数字文明的基础,但许多最重要项目的开发者和维护者仍然没有获得足够报酬,或者根本没有报酬。关于如何帮助这些人,业界已经有了许多讨论,并提出了一系列的解决方案。Appwrite 正在为维护者做一些事,提升他们的工作,并提供经济支持,以换取他们对行业和数字社会的贡献。
|
||||
|
||||
Eldad Fux 自身通过为开源软件项目做贡献和参与开源社区,开始了他的开发者生涯。Appwrite 最初是一个副业项目,他把它作为一个 BaaS 产品从头打造。目前,Fux 通过专注于完全开源的平台和以各种方式回馈社区来支持开源理念,其中就包括了 Appwrite OSS 基金。
|
||||
|
||||
EddieHub 的创始人和开发者 Eddie Jaoude 说:“开源为世界上大部分的现代基础设施提供动力,从移动到网络、汽车甚至是地球以外的任务。只有靠社区的慷慨解囊,他们的时间和努力才能持续。如果有更多的公司和组织的支持,这种情况将得到改善,避免社区成员因报酬不足/没有报酬而懈怠。”
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.opensourceforu.com/2022/05/open-source-developer-creates-first-of-its-kind-fund-to-support-maintainers/
|
||||
|
||||
作者:[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/04/opensourceBETTERimage-696x392.jpg
|
||||
[2]: https://appwrite.io/oss-fund
|
@ -0,0 +1,97 @@
|
||||
[#]: subject: "Tails 5.0 Release is Based on Debian 11 With a New “Kleopatra” Tool"
|
||||
[#]: via: "https://news.itsfoss.com/tails-5-0-release/"
|
||||
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14568-1.html"
|
||||
|
||||
Tails 5.0 发布:基于 Debian 11,附带新的 Kleopatra 工具
|
||||
======
|
||||
|
||||
> Tails 5.0 是一次令人印象深刻的升级,采用了 Debian 11 和一个新的工具,为用户配备了增强的安全和隐私。
|
||||
|
||||

|
||||
|
||||
Tails 是一个流行的 Linux 发行版,它专注于保护人们免受审查和监视,是 [注重隐私的 Linux 发行版][1] 之一。
|
||||
|
||||
你可以在任何地方使用它和 U 盘 来完成工作,而不用担心暴露你的信息。
|
||||
|
||||
Tails 5.0 是最新的版本,它基于 Debian 11(Bullseye)构建。因此,你可以期待 Tails 5.0 中具备所有 [Debian 11 的改进][2]。
|
||||
|
||||
### Tails 5.0:更新内容
|
||||
|
||||
让我们来看看该版本所引入了哪些新功能和软件升级吧!
|
||||
|
||||
以下是其中的一些亮点。
|
||||
|
||||
#### 增加了 Kleopatra 工具
|
||||
|
||||
![][3]
|
||||
|
||||
Kleopatra 是 [GnuPG][4] 的一个图形界面,它用于加密文本和文件。在 Tails 5.0 中,Kleopatra 取代了 OpenPGP 小程序 和 Seahorse 工具。
|
||||
|
||||
Kleopatra 只在一个软件包中就完成了这一切。并且,相对而言,Kleopatra 的维护更加活跃,问题最少。
|
||||
|
||||
#### 默认启用的附加软件
|
||||
|
||||
当使用持久化存储时,附加软件功能是默认启用的。
|
||||
|
||||
因此,你可以在短时间内快速配置你想要的东西。
|
||||
|
||||
#### 对活动概览的改进
|
||||
|
||||
![][5]
|
||||
|
||||
在 Tails 5.0 中,你可以使用活动概览来访问你的窗口和应用程序。你只需点击屏幕左上角的“<ruby>活动<rt>Activities</rt></ruby>”按钮或按下键盘上的<ruby>超级<rt>Super</rt></ruby>键(LCTT 译注:在某些键盘上是 WIN 键)即可。
|
||||
|
||||
你还可以在同一屏幕中搜索应用程序、文件和文件夹。
|
||||
|
||||
#### 软件升级
|
||||
|
||||
Tails 5.0 基于 Debian 11,因此,所有的基本软件都已升级,包括:
|
||||
|
||||
* Tor 浏览器 to 11.0.11
|
||||
* GNOME 3.38
|
||||
* MAT to 0.12
|
||||
* Audacity 2.4.2
|
||||
* 磁盘工具 3.38
|
||||
* GIMP 2.10.12
|
||||
* LibreOffice 7.0
|
||||
|
||||
#### 其他改进
|
||||
|
||||
除软件升级外,无驱动打印和扫描的硬件支持也得到了更新,以支持新款的打印机/扫描仪。
|
||||
|
||||
除此之外,它还有许多修复。你可以在其 [官方发布公告][6] 中查看更多信息。
|
||||
|
||||
### 下载 Tails 5.0
|
||||
|
||||
你可以在官方网站下载最新的 Tails 5.0 ISO。
|
||||
|
||||
> **[Tails 5.0][7]**
|
||||
|
||||
注意,如果你已经在使用 Tails,请不要执行自动升级。你需要按照 [官方说明][8] 进行手动升级。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/tails-5-0-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/privacy-focused-linux-distributions/
|
||||
[2]: https://news.itsfoss.com/debian-11-feature/
|
||||
[3]: https://news.itsfoss.com/wp-content/uploads/2022/05/kleopatra.png
|
||||
[4]: https://www.gnupg.org/
|
||||
[5]: https://news.itsfoss.com/wp-content/uploads/2022/05/desktop-tails-5.png
|
||||
[6]: https://tails.boum.org/news/version_5.0/index.en.html
|
||||
[7]: https://tails.boum.org/install/index.en.html
|
||||
[8]: https://tails.boum.org/doc/upgrade/index.en.html#manual
|
@ -0,0 +1,100 @@
|
||||
[#]: subject: "Xebian – A Blend of Debian and Goodness of Xfce [Review]"
|
||||
[#]: via: "https://www.debugpoint.com/2022/05/xebian-review-2022/"
|
||||
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14602-1.html"
|
||||
|
||||
Xebian:Debian 与 Xfce 的完美结合
|
||||
======
|
||||
|
||||
> 这是一篇对漂亮而时尚的 Xebian Linux 发行版的快速评测。
|
||||
|
||||
Xebian 是一个基于 Xfce 桌面环境的 Linux 发行版,基于 Debian 不稳定分支(sid)。这个 Linux 发行版提供了一个带有基本的 Xfce 桌面的 Debian,而无需更改配置和附加软件包。因此,你不用在安装 Debian 和 Xfce 上花费太多时间就可以获得通常的开箱即用体验。
|
||||
|
||||
那么,如果你想尝试一下,这是对 Xebian 的快速评测。
|
||||
|
||||

|
||||
|
||||
### Xebian 评测
|
||||
|
||||
#### 安装
|
||||
|
||||
考虑到林林总总的 ISO(迷你、自由、非自由等等),Debian 安装可能会有点复杂。毕竟,它是一个真正的“通用操作系统”。但是对于 Xebian,就轻松多了,因为它只有一个提供了 Debian sid 和 Xfce 的 64 位 ISO 文件。Xebian 使用 Debian 原生的安装程序,在你的物理系统或虚拟机中安装此发行版都相当简单。
|
||||
|
||||
在我的测试过程中,安装很顺利,没有报告任何问题。安装大约需要 4 分钟。
|
||||
|
||||
#### 外观和感觉
|
||||
|
||||
安装后,当你首次启动系统时,你会看到带有 Xebian 默认壁纸的漂亮登录页面。这个登录屏幕是标准的默认 Xfce 桌面登录页面。
|
||||
|
||||
![Xebian Logn Screen][1]
|
||||
|
||||
首先,该桌面非常轻量,有着 Xfce 的干净外观。Xebian 就是一个在 Debian 上提供了完整 Xfce 桌面的 Linux 发行版。因此,唯一的区别是看起来不错的默认壁纸,以及默认的 Numix 主题(深色)。那些喜欢更传统外观的人也可以使用 Adwaita 和 Gerybird 主题。
|
||||
|
||||
其次,顶部面板右侧有 “<ruby>鼠须菜单<rt>Whisker Menu</rt></ruby>” 和标准的系统托盘,带有音量控制、电池指示、网络/Wi-Fi 和日期/时间。
|
||||
|
||||
#### 应用
|
||||
|
||||
Xebian 打包了所有 Xfce 原生应用,而没有添加任何额外内容。安装了它,你就应该拥有了一个稳定的工作桌面,并预装了以下应用程序:
|
||||
|
||||
* Thunar 文件管理器
|
||||
* Ristretto 图像查看器
|
||||
* Mousepad 文本编辑器
|
||||
* Catfish 文件搜索
|
||||
* XFCE 终端
|
||||
* Firefox 浏览器
|
||||
* Synaptic 包管理器
|
||||
* GParted 分区程序
|
||||
* 系统设置
|
||||
|
||||
除此之外,如果你需要任何其他应用,你可以使用 “<ruby>新立得<rt>Synaptic</rt></ruby>” 包管理器轻松安装它们。使用内置的 “<ruby>软件及软件源<rt>Software and Sources</rt></ruby>” 应用可以轻松调整软件源。
|
||||
|
||||
[Xfce 4.16][2] 是当前的稳定正式版本,并一同提供了其原生应用。而 Xfce 4.18 距离最终版本还很遥远。
|
||||
|
||||
该发行版的核心基于 Debian 不稳定分支 “sid”,在撰写本文时它正处于 Debian 12 “bookworm” 的发布路径上。它基于最新的 [Linux 内核 5.17][3] 进行滚动发布。
|
||||
|
||||
此外,如果你需要一个常规的图像编辑器、图形软件和办公套件(例如 LibreOffice),那么你可以手动安装它们。它们不是 ISO 文件的一部分。
|
||||
|
||||
现在,让我们来看看性能。
|
||||
|
||||
#### Xebian 的性能
|
||||
|
||||
Xebian 是轻量级的,非常适合旧硬件,这要归功于 Debian。我分两个阶段测试了其性能。
|
||||
|
||||
在让系统闲置一段时间后的理想阶段,消耗了大约 710 MB 内存,而 CPU 平均为 2%。大多数空闲状态资源被 Xfce4-desktop 和 Xfce 窗口管理器消耗。
|
||||
|
||||
其次,我在重度使用阶段对其进行了测试。我使用文件管理器、文本编辑器、终端和 Firefox 浏览器的一个实例作为工作负载尝试了 Xebian。在此工作负载下,Xebian 平均消耗 1.2GB 内存和 2% 到 3% 的 CPU,具体取决于各自的应用活动。而且,Firefox 明显消耗了大部分内存和 CPU,其次是 Xfce 窗口管理器的内存消耗增加了近 50%。
|
||||
|
||||
总的来说,我认为它是稳定的,应该可以在至少 4 GB 内存的中档硬件中正常工作。
|
||||
|
||||
### 结束语
|
||||
|
||||
基于 Debian 不稳定分支的 [Linux 发行版][4] 很少。如果你正在寻找 Xfce 和 Debian sid 的特定组合,那么 Xebian 是合适的,因为你从 Debian 获得了一个很可靠的滚动版本,并内置了 Xfce。
|
||||
|
||||
虽然它说是“不稳定”的,但根据我的经验,如果你每周保持系统更新,Debian “不稳定” 分支会很好地工作。
|
||||
|
||||
最后,如果你想尝试此发行版,请访问官方网站并
|
||||
|
||||
> **[下载 ISO 文件][5]**
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.debugpoint.com/2022/05/xebian-review-2022/
|
||||
|
||||
作者:[Arindam][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.debugpoint.com/author/admin1/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://www.debugpoint.com/wp-content/uploads/2022/05/Xebian-Logn-Screen-1024x578.jpg
|
||||
[2]: https://www.debugpoint.com/2021/02/xfce-4-16-review/
|
||||
[3]: https://www.debugpoint.com/2022/03/linux-kernel-5-17/
|
||||
[4]: https://www.debugpoint.com/category/distributions
|
||||
[5]: https://xebian.org/download/
|
88
published/202205/20220506 Announcing Fedora Linux 36.md
Normal file
88
published/202205/20220506 Announcing Fedora Linux 36.md
Normal file
@ -0,0 +1,88 @@
|
||||
[#]: subject: "Announcing Fedora Linux 36"
|
||||
[#]: via: "https://fedoramagazine.org/announcing-fedora-36/"
|
||||
[#]: author: "Matthew Miller https://fedoramagazine.org/author/mattdm/"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14579-1.html"
|
||||
|
||||
Fedora Linux 36 发布
|
||||
======
|
||||
|
||||

|
||||
|
||||
今天,我很高兴与大家分享一个消息,它是成千上万的 Fedora 项目贡献者辛勤工作的成果:我们的最新版本 —— Fedora Linux 36,和大家见面了!
|
||||
|
||||
### 由社区开发,为社区服务
|
||||
|
||||
通常当我写这些公告时,我会谈论版本中的一些很棒的技术变化。但这一次,我想把重点放在实现这些变化的社区上。Fedora 社区不是一群孤立地工作的人 —— 我们是朋友。事实上,这也是我们的“<ruby>四个理念<rt>Four Foundations</rt></ruby>”之一。
|
||||
|
||||
我们最新的“Fedora 朋友”之一,Juan Carlos Araujo 在一篇 [Fedora 讨论帖子][2] 中说得很好:
|
||||
|
||||
> 除了功能、稳定性、特性、工作方式以及前沿性外,我认为决定一个发行版成败的还有那些无形的东西,比如文档和社区。而 Fedora 拥有这一切……尤其是无形的东西。
|
||||
|
||||
多年来,我们一直努力使 Fedora 成为一个包容和欢迎的社区。我们希望它成为经验丰富的贡献者和新手能一起工作的地方。就像我们希望 Fedora Linux 是一个既能吸引资深用户又能吸引新手的发行版一样。
|
||||
|
||||
说到 Fedora Linux,让我们看看新版本的一些亮点。像往常一样,在从旧版本升级之前,请确保你的系统是最新的。这次尤其需要注意,因为我们在 F34/F35 更新中修复了一些非常重要的与升级有关的错误。如果不先应用这些更新,系统升级可能会失败。
|
||||
|
||||
### 桌面改进
|
||||
|
||||
Fedora 工作站专注于桌面体验,尤其是面向那些希望获得“刚刚好”的 Linux 系统体验的用户。像往常一样,Fedora 工作站采用最新的 GNOME 版本:[GNOME 42][3]。虽然 GNOME 42 不能完全解决生命、宇宙和一切问题,但它带来了很多改进。许多应用程序都被移植到了 GTK 4,以改善风格和性能。它还附带了两个新的应用程序:<ruby>文本编辑器<rt>Text Editor</rt></ruby>和<ruby>控制台<rt>Console</rt></ruby>。它们的名字起得很贴切,所以你可以猜出它们是干什么的。文本编辑器是新的默认文本编辑器,而控制台可以在软件仓库中下载。
|
||||
|
||||
如果你使用了英伟达的专有图形驱动,你的桌面会话现在将默认使用 Wayland 协议。这使你能够在使用现代桌面管理器时,充分利用硬件加速。
|
||||
|
||||
当然,我们生产的不仅仅是 “Editions”。[Fedora Spins][4] 和 [Labs][5] 针对不同的受众和使用场景。例如 [Fedora Comp Neuro][6] ,它为计算神经科学提供工具,以及 [Fedora LXQt][7],它提供一个轻量级的桌面环境。并且,我们附加了可选架构:[ARM AArch64、Power 和 S390x][8]。
|
||||
|
||||
### 针对系统管理员的改进
|
||||
|
||||
Fedora Linux 36 包含最新的 Ansible 版本。Ansible 5 将“引擎”拆分为 ansible-core 包和 [collection 包][9]。这使得维护更容易,并允许你只下载需要的集合。请参阅 [Ansible 5 迁移指南][10] 以了解如何更新你的 Playbook。
|
||||
|
||||
从 Fedora Server 36 开始,Cockpit 提供了一个用于配置和持续管理 NFS 及 Samba 共享的模块。这使得管理员可以通过 Cockpit 网页界面(用于配置其他服务器属性)来管理网络文件共享。
|
||||
|
||||
### 其他更新
|
||||
|
||||
无论你使用 Fedora Linux 的哪个衍生版,你都会得到开源世界所提供的最新成果。Podman 4.0 将在 Fedora Linux 36 中首次全面发布。它带来了大量变化和一个全新的网络栈。不过,它也带来了向下**不兼容**的 API 变化,所以请仔细阅读 [上游文档][11]。
|
||||
|
||||
遵循 Fedora 的 “<ruby>[争先][12]<rt>First</rt></ruby>” 理念,我们已经更新了关键的编程语言和系统库包,包括 Ruby 3.1、Golang 1.18 和 PHP 8.1。
|
||||
|
||||
我们很高兴你能试用新版本!请访问 [https://getfedora.org](https://getfedora.org) 并立即下载它吧!或者,如果你正在使用 Fedora Linux,请按照我们的 [简易升级说明][13] 进行。想了解更多关于 Fedora Linux 36 新功能的信息,请查看 [发行说明][14]。
|
||||
|
||||
### 虽然不大可能会出现问题……
|
||||
|
||||
但是,如果你真的遇到了问题,请访问我们的 [Ask Fedora][15] 用户支持论坛。这里有一个 [常见问题][16] 的分类。
|
||||
|
||||
### 谢谢大家
|
||||
|
||||
感谢在本次发布周期内为 Fedora 项目做出贡献的成千上万的人。Fedora 社区有你们,真好!请务必在 5 月 13 日至 14 日参加我们的 [虚拟发布派对][17]!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://fedoramagazine.org/announcing-fedora-36/
|
||||
|
||||
作者:[Matthew Miller][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/mattdm/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://fedoramagazine.org/wp-content/uploads/2022/05/f36-final-816x345.jpg
|
||||
[2]: https://discussion.fedoraproject.org/t/the-end-of-my-distro-hopping-days/38445
|
||||
[3]: https://release.gnome.org/42/
|
||||
[4]: https://spins.fedoraproject.org/
|
||||
[5]: https://labs.fedoraproject.org/
|
||||
[6]: https://labs.fedoraproject.org/en/comp-neuro/
|
||||
[7]: https://spins.fedoraproject.org/en/lxqt/
|
||||
[8]: https://alt.fedoraproject.org/alt/
|
||||
[9]: https://koji.fedoraproject.org/koji/search?match=glob&type=package&terms=ansible-collection*
|
||||
[10]: https://docs.ansible.com/ansible/devel/porting_guides/porting_guide_5.html
|
||||
[11]: https://podman.io/releases/2022/02/22/podman-release-v4.0.0.html
|
||||
[12]: https://docs.fedoraproject.org/en-US/project/#_first
|
||||
[13]: https://docs.fedoraproject.org/en-US/quick-docs/upgrading/
|
||||
[14]: https://docs.fedoraproject.org/en-US/fedora/f36/release-notes/
|
||||
[15]: https://ask.fedoraproject.org/
|
||||
[16]: https://ask.fedoraproject.org/tags/c/common-issues/141/f36
|
||||
[17]: https://hopin.com/events/fedora-linux-36-release-party/registration
|
@ -0,0 +1,78 @@
|
||||
[#]: subject: "My favorite open source tool for using crontab"
|
||||
[#]: via: "https://opensource.com/article/22/5/cron-crontab-ui"
|
||||
[#]: author: "Kevin Sonney https://opensource.com/users/ksonney"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14598-1.html"
|
||||
|
||||
管理 crontab 的开源工具
|
||||
======
|
||||
|
||||

|
||||
|
||||
> crontab-ui 是一个用 Node.js 编写的 Web 前端,帮助管理 crontab 文件。
|
||||
|
||||
*自动化是目前的一个热门话题。在我作为网站可靠性工程师(SRE)的日常工作中,我的部分职责是将尽可能多的重复性任务自动化。但是,有多少人在我们的日常非工作生活中这样做呢?今年,我专注于将劳作自动化,以便我们可以专注于重要的事情。*
|
||||
|
||||
作为一个初出茅庐的系统管理员,我最早了解的东西之一是 “cron”。cron 被广泛用于做一些事情,如轮换日志、启动和停止服务、运行程序作业等等。它在几乎所有的 Unix 和 Linux 系统中都可用,而且是我认识的每个系统管理员用来帮助管理服务和服务器的东西。cron 可以自动运行任何控制台应用或脚本,这使得它非常、非常灵活。
|
||||
|
||||
> LCTT 译注:CRON 是 “Command Run On” 的缩写,即在某个时间运行命令。
|
||||
|
||||
![Image of a Crontab][3]
|
||||
|
||||
我用 cron 来获取电子邮件,运行过滤程序,确保服务正在运行,与 Habitica 等在线游戏互动等。
|
||||
|
||||
### 以传统方式使用 cron
|
||||
|
||||
要开始使用 cron,你可以简单地在命令行输入 `crontab -e`,启动一个打开了当前 `crontab`(“cron table” 的缩写)文件的编辑器(如果你以 root 身份这样做,你访问的是系统 crontab)。这是保存作业计划的地方,记录了何时运行。David Both 已经写了 [大量][4] 关于该文件的格式和如何使用它的文章,所以我不打算在这里介绍。我要说的是,对于新用户来说,这可能有点吓人,而且设置时间有点痛苦。
|
||||
|
||||
### 介绍 crontab-ui
|
||||
|
||||
有一些奇妙的工具可以帮助解决这个问题。我最喜欢的是 [crontab-ui][5],这是一个用 Node.js 编写的 Web 前端,可以帮助管理 crontab 文件。为了安装和启动 `crontab-ui` 供个人使用,我使用了以下命令。
|
||||
|
||||
```
|
||||
# 做个备份
|
||||
crontab -l > $HOME/crontab-backup
|
||||
# 安装 Crontab UI
|
||||
npm install -g crontab-ui
|
||||
# 创建本地数据库目录
|
||||
mkdir $HOME/crontab-ui
|
||||
# 启动 crontab-ui
|
||||
CRON_DB_PATH=$HOME/crontab-ui crontab-ui
|
||||
```
|
||||
|
||||
完成这些后,只需将你的网页浏览器指向 `http://localhost:8000`,你就会看到 crontab-ui 的网页界面。要做的第一件事是点击 “<ruby>从 Crontab 获取<rt>Get from Crontab</rt></ruby>”,加载你可能有的任何现有作业。然后点击“<ruby>备份<rt>Backup</rt></ruby>”,这样你就可以回滚你所做的任何修改。
|
||||
|
||||
![Image of Crontab-UI][6]
|
||||
|
||||
添加和编辑 cron 作业是非常简单的。添加一个名称,你想运行的完整命令,以及时间(使用 cron 语法),然后保存。另外,你还可以捕获日志,并设置将工作状态邮寄到你选择的电子邮箱。
|
||||
|
||||
完成后,点击 “<ruby>保存到 Crontab<rt>Save to Crontab</rt></ruby>”。
|
||||
|
||||
我个人非常喜欢它的日志记录功能。有了 crontab-ui,你可以通过点击一个按钮来查看日志,这在排除故障时非常有用。
|
||||
|
||||
我建议不要一直运行 crontab-ui,至少不要公开运行。虽然它确实具有一些基本的身份验证功能,但它不应该暴露在你的本地机器之外。我不需要经常编辑我的 cron 作业,所以我可以按需启动和停止它。
|
||||
|
||||
下次你需要编辑你的 crontab 时,可以试试 crontab-ui!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/22/5/cron-crontab-ui
|
||||
|
||||
作者:[Kevin Sonney][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/ksonney
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://opensource.com/sites/default/files/lead-images/lenovo-thinkpad-laptop-concentration-focus-windows-office.png
|
||||
[2]: https://creativecommons.org/licenses/by/3.0/us/
|
||||
[3]: https://opensource.com/sites/default/files/2022-04/Day01-1.png
|
||||
[4]: https://opensource.com/article/17/11/how-use-cron-linux
|
||||
[5]: https://opensource.com/%5Bhttps%3A//github.com/alseambusher/crontab-ui%5D%28https%3A//github.com/alseambusher/crontab-ui%29
|
||||
[6]: https://opensource.com/sites/default/files/2022-04/Day01-2.png
|
@ -0,0 +1,117 @@
|
||||
[#]: subject: "Ubuntu MATE’s Lead Creates a Nifty Tool to Help Install 3rd Party Deb Packages"
|
||||
[#]: via: "https://news.itsfoss.com/deb-get-ubuntu/"
|
||||
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14576-1.html"
|
||||
|
||||
Ubuntu MATE 的负责人开发了一个漂亮的工具,专用于安装第三方 deb 包
|
||||
======
|
||||
|
||||
> 这是一个有趣的工具,它可以替代 apt-get 来安装 Ubuntu 上的第三方 deb 包。它应该能帮为你节省时间!
|
||||
|
||||
![deb-get][1]
|
||||
|
||||
Ubuntu MATE 的负责人 **Martin Wimpress** 为 Linux 用户带来了另一个有趣的项目。
|
||||
|
||||
你可能不知道,这个 Martin 经常开发一些有趣的东西。去年,我们报道了 [Quickemu][2],它通过一个基于 QEMU 的 GUI 工具,帮助用户在 Linux 中创建虚拟机,使这个过程变得简单。
|
||||
|
||||
现在,他又带来了一个有趣的 `deb-get` 工具,其目标是为第三方 .deb 包模仿 `apt-get` 的支持。
|
||||
|
||||
让我们来详细了解一下它吧!
|
||||
|
||||
### Deb Get:使用 CLI 无缝安装第三方 deb 包
|
||||
|
||||
当官方软件库中没有你想安装的软件包时(比如 Google Chrome、Vivaldi 等),你必须先 [添加一个 PPA(非官方/官方)][3] 或者下载 .deb 文件后 [手动安装][4]。
|
||||
|
||||
如果我现在告诉你,你可以直接在终端中安装它们,就好像官方软件库中有它们一样呢?
|
||||
|
||||
这就是 `deb-get` 工具想要做到的事。
|
||||
|
||||
通常,当在终端中安装一个软件包时,你会使用下面的命令:
|
||||
|
||||
```
|
||||
sudo apt install packagename
|
||||
```
|
||||
|
||||
或者
|
||||
|
||||
```
|
||||
sudo apt-get install packagename
|
||||
```
|
||||
|
||||
要使用这个工具,你只需把 `apt-get` 替换为 `deb-get`,其他格式保持不变。就像下面这样:
|
||||
|
||||
```
|
||||
sudo deb-get install packagename
|
||||
```
|
||||
|
||||
举个例子,通常,我们 [在 Linux 上安装 Vivaldi][5] 时需要添加 PPA 或下载 .deb 文件。
|
||||
|
||||
现在,如果你在系统上配置好了 `deb-get` 工具(**配置指南在本文末尾**),你就可以使用以下命令轻松地安装 Vivaldi:
|
||||
|
||||
```
|
||||
sudo deb-get install vivaldi-stable
|
||||
```
|
||||
|
||||
![][6]
|
||||
|
||||
另外,类似于 `apt-get upgrade`,你可以使用下面的命令来升级软件包:
|
||||
|
||||
```
|
||||
sudo deb-get upgrade
|
||||
```
|
||||
|
||||
> **注意:** 虽然 `deb-get` 使安装第三方 .deb 包变得很容易,但它是有限制的,你只能安装它提供的核实列表中的软件。不过,它已经支持许多 [必要的应用程序][7],相信支持的软件包列表很快就会扩大。
|
||||
|
||||
你也可以使用下面的命令,检查你 `deb-get` 可用软件包的列表:
|
||||
|
||||
```
|
||||
sudo deb-get list
|
||||
```
|
||||
|
||||
![deb-get][8]
|
||||
|
||||
### 在基于 Ubuntu 的发行版上设置 deb-get
|
||||
|
||||
`deb-get` 工具适用于 Ubuntu 22.04 LTS(我测试过),也应该适用于其他基于 Ubuntu 的发行版。
|
||||
|
||||
你可以使用下面的命令来安装它:
|
||||
|
||||
```
|
||||
sudo apt install curl && curl -sL https://raw.githubusercontent.com/wimpysworld/deb-get/main/deb-get | sudo -E bash -s install deb-get
|
||||
```
|
||||
|
||||
或者,你可以在它的 [GitHub 发布页面][9] 手动下载它的 deb 包。
|
||||
|
||||
要了解更多关于它的信息,以及可用的命令/功能,你可以访问它的 [GitHub 页面][10]。
|
||||
|
||||
*你怎么看待 deb-get 试图实现支持第三方软件包的 apt-get?你认为它有用吗?请在评论区留言,发表你的看法吧!*
|
||||
|
||||
**来源:OMG!Ubuntu!**
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/deb-get-ubuntu/
|
||||
|
||||
作者:[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/deb-get.jpg
|
||||
[2]: https://itsfoss.com/quickgui/
|
||||
[3]: https://itsfoss.com/ppa-guide/
|
||||
[4]: https://itsfoss.com/install-deb-files-ubuntu/
|
||||
[5]: https://itsfoss.com/install-vivaldi-ubuntu-linux/
|
||||
[6]: https://news.itsfoss.com/wp-content/uploads/2022/05/deb-get-vivaldi.jpg
|
||||
[7]: https://itsfoss.com/essential-linux-applications/
|
||||
[8]: https://news.itsfoss.com/wp-content/uploads/2022/05/deb-get-list.jpg
|
||||
[9]: https://github.com/wimpysworld/deb-get/releases
|
||||
[10]: https://github.com/wimpysworld/deb-get
|
@ -0,0 +1,84 @@
|
||||
[#]: subject: "How open source leads the way for sustainable technology"
|
||||
[#]: via: "https://opensource.com/article/22/5/open-source-sustainable-technology"
|
||||
[#]: author: "Hannah Smith https://opensource.com/users/hanopcan"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "PeterPan0106"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14625-1.html"
|
||||
|
||||
开源为可持续发展技术提供新思路
|
||||
======
|
||||
|
||||
> 开源和社会对于更为稳定的技术演进的需求具有相同的目标,即实现一个更为可持续的未来。
|
||||
|
||||

|
||||
|
||||
在可持续发展和环境问题上,目前正在发生明确的变化。关注地球的状况并为之做出努力已经成为主流思想。举个例子,看看基于气候的风险资本主义。<ruby>气候技术风险投资公司<rt>Climate Tech Venture Capital</rt></ruby>(CTVC)的气候资本名单在过去两年中增加了 [一倍多][2]。涌入的资本表明了人们对解决艰难的气候挑战的愿望和意愿。
|
||||
|
||||
人们想采取行动,这很好,我持相同态度!但我也看到了一个真正的风险:当人们急于采取行动并参与到其中时,他们可能会不知不觉地卷入洗绿运动中。
|
||||
|
||||
维基百科对 “<ruby>洗绿<rt>greenwashing</rt></ruby>” 的定义称其为 “一种营销策略,其中绿色公关和绿色营销被欺骗性地用来说服公众,使其相信一个组织的产品、目标和政策是环保的”。在我看来,洗绿既是有意为之,也是无意中发生的。外面有很多想有所作为的好人,但对复杂的环境系统或围绕可持续发展的问题的深度还不甚了解。
|
||||
|
||||
我们很容易落入这样的陷阱,即认为通过植树来抵消旅行或数据中心的排放等简单的购买行为会使一些东西变得更加绿色。虽然这些努力是值得提倡的,而且植树是改善可持续发展的一个可行的解决方案,但它们只是一个很好的开端,仍然需要进行更多的努力才能真正产生变革。
|
||||
|
||||
那么,一个人或一个社区可以做些什么来使数字技术真正地更加可持续?
|
||||
|
||||
“可持续性”对不同的人有不同的含义。我喜欢的最简短的定义来自 1987 年的《<ruby>布伦特兰报告<rt>Bruntland Report</rt></ruby>》,该报告将其概括为 “既能满足当代的需要,同时又不损及后代满足其需要的发展模式”。可持续发展的核心是优先考虑长期思维。
|
||||
|
||||
### 可持续发展不仅仅是保护环境
|
||||
|
||||
在可持续性的定义中,有三个相互关联的关键支柱:
|
||||
|
||||
1. 环境
|
||||
2. 经济 / 政策
|
||||
3. 社会
|
||||
|
||||
关于可持续发展的讨论越来越多地被气候危机所主导,这是有道理的。随着我们继续通过不可逆转的生态临界点,减少世界上较富裕国家的碳排放的需求变得越来越紧迫。但真正的可持续性是一套更全面的体系,正如三大支柱所展示的那样。
|
||||
|
||||
碳排放无疑是可持续性的一部分。许多人认为排放只是一个环境问题。只要从空气中移除更多的碳,一切都会好起来。但社会问题也是可持续性的一部分。谁会受到这些碳排放的影响?谁将承受我们气候变化带来的最大影响?谁因海平面上升而失去了家园,或因天气模式变化而失去了可靠的水源?这就是为什么你可能听说过 “气候正义就是社会正义” 这句话。
|
||||
|
||||
仅仅把减碳看作是可持续发展会令你的视野被限定在碳上。我经常认为,气候变化是社会在更大范围内错失可持续性的一个症状。相反,关键是要解决首先导致气候变化的根本原因。解决这些问题将使长期解决这些问题成为可能,而短期解决可能只会将问题推向另一个脆弱的边缘。
|
||||
|
||||
其根本原因很复杂。但是,如果我追根溯源,我看到根源是由西方的主流价值观和旨在延续这些价值观的制度所驱动的。这些价值观是什么呢?一语概之,它们是快速增长和对利润的攫取高于一切。
|
||||
|
||||
这就是为什么关于可持续性的对话如果不包括社会问题或经济的设计方式,就不会达成真正的解决方案。毕竟,社会和掌握权力的人决定了他们自己的价值观是什么,或者不是什么。
|
||||
|
||||
### 我能做什么?
|
||||
|
||||
科技领域的许多人目前正致力于解决这些问题,并想知道怎样行动更有意义。一个常见的方法是研究如何优化他们制造的技术,使其更有效地使用电力。世界上 60% 的电力仍然是通过燃烧化石燃料产生的,尽管可再生能源的发电能力不断提高。但从逻辑上讲,使用更少的电力意味着产生更少的碳排放。
|
||||
|
||||
是的,这是很有意义的,任何人都可以尝试,立即就能生效。当用户加载一个页面时,优化发送的资源,以发送更少的数据,将使用更少的能源。因此,优化服务器,使其在一天中的不同时段运行,例如,当有更多的可再生能源可用时运行,或删除多余信息的旧存储,如分析数据或日志。
|
||||
|
||||
但考虑到<ruby>杰文<rt>Jevon</rt></ruby>的悖论:使某样东西更有效率往往会导致使用更多的东西,而不是减少。当人们更容易和更便于使用某样东西时,他们最终会使用更多。在某种角度,这是好的。性能更好的技术是一件好事,有助于提高包容性和触及性,这对社会是有益的。但是,气候变化和可持续性的长期解决方案需要围绕社会和技术之间的关系进行更深入、更令人不适的对话。所有这些技术在为什么和谁服务?它正在加速哪些行为和做法?
|
||||
|
||||
将技术的演进视为进步很正常,一些人认为:技术将把世界从气候变化中拯救出来。一些聪明的人正在通过艰苦卓绝的努力改善这一问题,所以其他人不需要改变他们的方式。问题是,许多社区和生态系统已经在遭受更大的创伤。
|
||||
|
||||
例如,对更多更高速传输的数据的追求正在导致智利的一些社区没有足够的水来种植农作物。因为数据中心正在使用这些宝贵的水源。移动电话造成的污染有 70% 来自于其制造。制造移动设备并为其提供动力的锂和钴等原材料通常是从弱势的社区中提取的,而这些社区几乎没有能力阻止制造商对其土地的破坏,当然也没有分享所获利润。尽管如此,每两年升级一次手机的做法已经变得很普遍了。
|
||||
|
||||
### 开源思路引领可持续发展之路
|
||||
|
||||
现在是时候将数字技术的使用视为一种宝贵的资源,这对地球和(通常已经处于弱势的)社区都有影响。
|
||||
|
||||
开源社区已经帮助人们认识到有另一种解决方案:开源。开源与我们更广泛的社会为实现更可持续的未来而需要做的事情之间有巨大的相似之处。更加开放和包容是其中的一个关键部分。
|
||||
|
||||
我们还需要在社会的各个层面进行思维转变,将数字技术视为有代价的增长,而不是我们今天看到的大量廉价和免费的东西。我们需要明智地将其优先用于对于社会而言最为重要的事情。更重要的是,我们需要关注并消除其创造和长期使用所带来的危害,并与社会上的每个人公平地分享其创造的财富,无论他们是否是数字技术的使用者。这些事情不会在一夜之间发生,但它们是我们可以共同推动的事情,以便我们都能长期、可持续地享受数字技术的好处。
|
||||
|
||||
本文节选自一篇较长的演讲。要想看到演讲的全文或查看幻灯片,请参见《[我们如何使数字技术更具有可持续性][3]》一文。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/22/5/open-source-sustainable-technology
|
||||
|
||||
作者:[Hannah Smith][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://opensource.com/users/hanopcan
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://opensource.com/sites/default/files/pictures/green-780x400.jpg
|
||||
[2]: https://climatetechvc.substack.com/p/-a-running-list-of-climate-tech-vcs?s=w
|
||||
[3]: https://opcan.co.uk/talk/wordfest-live-2022
|
@ -0,0 +1,158 @@
|
||||
[#]: subject: "PyCaret: Machine Learning Model Development Made Easy"
|
||||
[#]: via: "https://www.opensourceforu.com/2022/05/pycaret-machine-learning-model-development-made-easy/"
|
||||
[#]: author: "S Ratan Kumar https://www.opensourceforu.com/author/s-ratan/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14607-1.html"
|
||||
|
||||
PyCaret:机器学习模型开发变得简单
|
||||
======
|
||||
|
||||
> 在当今快节奏的数字世界中,机构们使用低代码/无代码(LC/NC)应用来快速构建新的信息系统。本文将介绍 PyCaret,这是一个用 Python 编写的低代码机器学习库。
|
||||
|
||||
![Featured-image-of-pycaret][1]
|
||||
|
||||
PyCaret 是 R 编程语言中 Caret(<ruby>分类和回归训练<rt>Classification And REgression Training</rt></ruby>的缩写)包的 Python 版本,具有许多优点。
|
||||
|
||||
- **提高工作效率:** PyCaret 是一个低代码库,可让你提高工作效率。由于花费更少的时间进行编码,你和你的团队现在可以专注于业务问题。
|
||||
- **易于使用:** 这个简单易用的机器学习库将帮助你以更少的代码行执行端到端的机器学习实验。
|
||||
- **可用于商业:** PyCaret 是一个可用于商业的解决方案。它允许你从选择的 notebook 环境中快速有效地进行原型设计。
|
||||
|
||||
你可以在 Python 中创建一个虚拟环境并执行以下命令来安装 PyCaret 完整版:
|
||||
|
||||
```
|
||||
pip install pycaret [full]
|
||||
```
|
||||
|
||||
机器学习从业者可以使用 PyCaret 进行分类、回归、聚类、异常检测、自然语言处理、关联规则挖掘和时间序列分析。
|
||||
|
||||
### 使用 PyCaret 构建分类模型
|
||||
|
||||
本文通过从 PyCaret 的数据仓库中获取 Iris 数据集来解释使用 PyCaret 构建分类模型。
|
||||
|
||||
我们将使用 Google Colab 环境使事情变得简单,并按照下面提到的步骤进行操作。
|
||||
|
||||
#### 步骤 1
|
||||
|
||||
首先,通过给出以下命令安装 PyCaret:
|
||||
|
||||
```
|
||||
pip install pycaret
|
||||
```
|
||||
|
||||
#### 步骤 2
|
||||
|
||||
接下来,加载数据集,如图 2 所示:
|
||||
|
||||
![Loading the data set][2]
|
||||
|
||||
```
|
||||
from pycaret.datasets import get_data
|
||||
dataset = get_data('iris')
|
||||
(或者)
|
||||
import pandas as pd
|
||||
dataset = pd.read_csv('/path_to_data/file.csv')
|
||||
```
|
||||
|
||||
#### 步骤 3
|
||||
|
||||
现在设置 PyCaret 环境,如图 2 所示:
|
||||
|
||||
![PyCaret environment setup][3]
|
||||
|
||||
```
|
||||
from pycaret.classification import *
|
||||
clf1 = setup(data=dataset, target = ‘species’)
|
||||
```
|
||||
|
||||
![PyCaret environment setup result][4]
|
||||
|
||||
使用 PyCaret 构建任何类型的模型,环境设置是最重要的一步。默认情况下,`setup()` 函数接受参数 `data`(Pandas 数据帧)和 `target`(指向数据集中的类标签变量)。`setup()` 函数的结果如图 3 所示。 `setup()` 函数默认将 70% 的数据拆分为训练集,30% 作为测试集,并进行数据预处理,如图 3 所示。
|
||||
|
||||
#### 步骤 4
|
||||
|
||||
接下来,找到最佳模型,如图 4 所示:
|
||||
|
||||
![Finding the best model][5]
|
||||
|
||||
```
|
||||
best = compare_models()
|
||||
```
|
||||
|
||||
默认情况下,`compare_models()` 应用十倍交叉验证,并针对具有较少训练时间的不同分类器计算不同的性能指标,如准确度、AUC、召回率、精度、F1 分数、Kappa 和 MCC,如图 4 所示。通过将 `tubro=True` 传递给 `compare_models()` 函数,我们可以尝试所有分类器。
|
||||
|
||||
#### 步骤 5
|
||||
|
||||
现在创建模型,如图 5 所示:
|
||||
|
||||
![Creating the model][6]
|
||||
|
||||
```
|
||||
lda_model=create_model (‘lda’)
|
||||
```
|
||||
|
||||
线性判别分析分类器表现良好,如图 4 所示。因此,通过将 `lda` 传递给 `create_model()` 函数,我们可以拟合模型。
|
||||
|
||||
#### 步骤 6
|
||||
|
||||
下一步是微调模型,如图 6 所示。
|
||||
|
||||
![Tuning the model][7]
|
||||
|
||||
```
|
||||
tuned_lda=tune_model(lda_model)
|
||||
```
|
||||
|
||||
超参数的调整可以提高模型的准确性。`tune_model()` 函数将线性判别分析模型的精度从 0.9818 提高到 0.9909,如图 7 所示。
|
||||
|
||||
![Tuned model details][8]
|
||||
|
||||
#### 步骤 7
|
||||
|
||||
下一步是进行预测,如图 8 所示:
|
||||
|
||||
![Predictions using the tuned model][9]
|
||||
|
||||
```
|
||||
predictions=predict_model(tuned_lda)
|
||||
```
|
||||
|
||||
`predict_model()` 函数用于对测试数据中存在的样本进行预测。
|
||||
|
||||
#### 步骤 8
|
||||
|
||||
现在绘制模型性能,如图 9 所示:
|
||||
|
||||
![Evaluating and plotting the model performance — confusion matrix][10]
|
||||
|
||||
```
|
||||
evaluate_model(tuned_lda)
|
||||
```
|
||||
|
||||
`evaluate_model()` 函数用于以最小的努力开发不同的性能指标。你可以尝试它们并查看输出。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.opensourceforu.com/2022/05/pycaret-machine-learning-model-development-made-easy/
|
||||
|
||||
作者:[S Ratan Kumar][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/s-ratan/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://www.opensourceforu.com/wp-content/uploads/2022/03/Featured-image-of-pycaret-696x477.jpg
|
||||
[2]: https://www.opensourceforu.com/wp-content/uploads/2022/03/Figure-1-loading-the-dataset.jpg
|
||||
[3]: https://www.opensourceforu.com/wp-content/uploads/2022/03/Figure-2-PyCaret-Environment-Setup.jpg
|
||||
[4]: https://www.opensourceforu.com/wp-content/uploads/2022/03/Figure-3-PyCaret-Environment-Setup-Result.jpg
|
||||
[5]: https://www.opensourceforu.com/wp-content/uploads/2022/03/Figure-4-Finding-the-best-model.jpg
|
||||
[6]: https://www.opensourceforu.com/wp-content/uploads/2022/03/Figure-5-Creating-the-model.jpg
|
||||
[7]: https://www.opensourceforu.com/wp-content/uploads/2022/03/Figure-6-Tuning-the-model.jpg
|
||||
[8]: https://www.opensourceforu.com/wp-content/uploads/2022/03/Figure-7Tuned-model-details.jpg
|
||||
[9]: https://www.opensourceforu.com/wp-content/uploads/2022/03/Figure-8-Predictions-using-tuned-model.jpg
|
||||
[10]: https://www.opensourceforu.com/wp-content/uploads/2022/03/Figure-9-Evaluating-and-ploting-the-model-performance-Confusion-Matrix.jpg
|
@ -0,0 +1,88 @@
|
||||
[#]: subject: "Can’t Run AppImage on Ubuntu 22.04? Here’s How to Fix it"
|
||||
[#]: via: "https://itsfoss.com/cant-run-appimage-ubuntu/"
|
||||
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14619-1.html"
|
||||
|
||||
无法在 Ubuntu 22.04 上运行 AppImage?这是解决方法
|
||||
======
|
||||
|
||||

|
||||
|
||||
最近发布的 [Ubuntu 22.04 LTS 充满了新的视觉变化和功能][1]。
|
||||
|
||||
但与任何其他版本一样,它也存在一些错误和问题。
|
||||
|
||||
我在 Ubuntu 22.04 中遇到的令人不快的惊喜之一是 AppImage 应用。
|
||||
|
||||
即使拥有所有正确的权限,AppImage 应用也会拒绝在我新安装的 Ubuntu 22.04 系统中启动。
|
||||
|
||||
如果你遇到类似的情况,我有个好消息要告诉你。修复非常简单。
|
||||
|
||||
### 在 Ubuntu 22.04 LTS 中运行 AppImage 应用
|
||||
|
||||
这里的问题是 Ubuntu 22.04 缺少 [FUSE(用户空间中的文件系统)库][2]。FUSE 库为用户空间程序提供了一个接口,可以将虚拟文件系统导出到 Linux 内核。
|
||||
|
||||
这就是 [AppImage 在虚拟文件系统上的工作方式][3]。由于缺少这个关键库,AppImage 无法按预期工作。
|
||||
|
||||
现在你了解了问题的根本原因,让我们看看如何使其工作。
|
||||
|
||||
#### 第 1 步:安装 libfuse
|
||||
|
||||
在 Ubuntu 中打开终端并使用以下命令安装 FUSE 库支持:
|
||||
|
||||
```
|
||||
sudo apt install libfuse2
|
||||
```
|
||||
|
||||
如果你不熟悉终端,那么你需要了解以下内容。它会要求你输入 `sudo` 密码。实际上,那是你的帐户密码。 **当你输入密码时,屏幕上不会显示任何内容**。这是设计使然。只需继续输入密码并输入。
|
||||
|
||||
![Install libfuse2 in Ubuntu][4]
|
||||
|
||||
#### 第 2 步:确保 AppImage 文件具有正确的文件权限
|
||||
|
||||
这个不用说了。你需要对下载的应用的 AppImage 文件具有“执行”权限。
|
||||
|
||||
转到你已下载所需应用的 AppImage 文件的文件夹。右键单击并选择<ruby>属性<rt>Properties</rt></ruby>。
|
||||
|
||||
现在转到<ruby>权限<rt>Permissions</rt></ruby>选项卡并选中“<ruby>允许将文件作为程序执行<rt>Allow executing file as program</rt></ruby>”选项。
|
||||
|
||||
![give execute permission to AppImage file][5]
|
||||
|
||||
设置完成后就好了。现在只需双击该文件,它就会按预期运行应用。
|
||||
|
||||
获取 libfuse 的这个小步骤已经在我的 [安装 Ubuntu 22.04 后推荐要做的事情列表][6] 上了。
|
||||
|
||||
### 进一步的故障排除提示
|
||||
|
||||
你的 AppImage 文件仍未运行?你下载的 AppImage 可能会出现一些其他问题,使其无法运行。
|
||||
|
||||
检查它的一种方法是下载一个已知的应用,如 [Balena Etcher][7] 并查看其 AppImage 文件是否有效。如果这个没问题,那么当你下载的另一个应用的 AppImage 文件无法工作,你可以通过从终端运行 AppImage 文件并分析它显示的错误来深入挖掘。
|
||||
|
||||
### 对你有用吗?
|
||||
|
||||
继续尝试。如果有效,请给我写个“感谢”。如果仍然没有解决,请在评论部分中提及详细信息,我会尽力帮助你。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/cant-run-appimage-ubuntu/
|
||||
|
||||
作者:[Abhishek Prakash][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/abhishek/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://itsfoss.com/ubuntu-22-04-release-features/
|
||||
[2]: https://packages.debian.org/sid/libfuse2
|
||||
[3]: https://itsfoss.com/use-appimage-linux/
|
||||
[4]: https://itsfoss.com/wp-content/uploads/2022/05/install-libfuse2-ubuntu.png
|
||||
[5]: https://itsfoss.com/wp-content/uploads/2022/05/give-execute-permission-to-appimage-file-800x415.png
|
||||
[6]: https://itsfoss.com/things-to-do-after-installing-ubuntu-22-04/
|
||||
[7]: https://www.balena.io/etcher/
|
@ -0,0 +1,91 @@
|
||||
[#]: subject: "HydraPaper: A Wallpaper Manager for Linux with Multi-Monitor Support"
|
||||
[#]: via: "https://itsfoss.com/hydrapaper/"
|
||||
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14616-1.html"
|
||||
|
||||
HydraPaper:一个支持多显示器的 Linux 壁纸管理器
|
||||
======
|
||||
|
||||
> HydraPaper 是一个令人印象深刻的壁纸管理器,适用于 Linux 用户,也支持多显示器设置。让我们仔细看一下。
|
||||
|
||||
一般而言,你要为你的 Linux 发行版上的每个桌面环境分别设置壁纸。
|
||||
|
||||
而且,当试图将一个自定义的壁纸集文件夹添加到可选的壁纸范围时,往往会受到限制。此外,遇到多显示器环境时,你无法在你的发行版中为其单独选择壁纸。因此,你需要去寻找一个图形用户界面(GUI)程序来完成这些操作。
|
||||
|
||||
幸运的是,我偶然发现了一个让 Linux 用户印象深刻的选择,即 **HydraPaper**。
|
||||
|
||||
### HydraPaper:带有 CLI 接口的开源墙纸管理器
|
||||
|
||||
![hydrapaper wallpaper manager][1]
|
||||
|
||||
HydraPaper 是一个使用 Python 3 和 GTK 构建的相当有用的壁纸管理器。它可以让你为不同的显示器选择单独的墙纸。
|
||||
|
||||
虽然它主要是一个 GUI 程序,但你也可以使用命令行执行同样的任务。
|
||||
|
||||
因此,HydraPaper 是一个同时适用于 GUI 和 CLI 用户的壁纸管理器。
|
||||
|
||||
![hydrapaper favorites][2]
|
||||
|
||||
它看起来是一个直接的解决方案,有一些简单的功能。让我介绍一下如下的主要亮点。
|
||||
|
||||
### HydraPaper 的特点
|
||||
|
||||
![hydrapaper folders][3]
|
||||
|
||||
HydraPaper 可以让你添加自定义壁纸集,组织/选择你想要的文件夹,并方便地挑选壁纸。
|
||||
|
||||
一些基本的特性包括:
|
||||
|
||||
* 管理文件夹集合(根据需要一键切换它们)。
|
||||
* 挑选喜欢的壁纸,并将它们添加到你的最爱集合。
|
||||
* 按照你的喜好定位墙纸(缩放、适合黑色背景/模糊、居中等)。
|
||||
* 能够从你的收藏中快速设置一个随机壁纸,如果你想这么做的话。
|
||||
* 用深色模式自定义壁纸管理器的体验,选择单独保存壁纸,清除缓存,等等。
|
||||
* 支持 CLI。
|
||||
* 单跨壁纸模式适用于多显示器。
|
||||
|
||||
![single span mode][4]
|
||||
|
||||
使用起来相当简单。你可以为不同的显示器挑选壁纸,或者使用选项中的单跨壁纸模式,在多显示器之间应用一个壁纸。
|
||||
|
||||
![hydrapaper options][5]
|
||||
|
||||
你可以选择/添加/删除文件夹,调整位置,添加收藏夹,以及应用深色模式的墙纸。
|
||||
|
||||
### 在 Linux 中安装 HydraPaper
|
||||
|
||||
你可以在 Flathub 上找到 HydraPaper 的 [Flatpak 包][6],它适合各种 Linux 发行版。如果你是第一次设置对 Flatpak 的支持,你可以参考我们的 [Flatpak 指南][7]。
|
||||
|
||||
你也可以在 Arch Linux 发行版的 AUR、Fedora 的仓库,以及 Debian(unstable)中找到它。
|
||||
|
||||
我在 Manjaro Linux 上测试了它,它使用 Flatpak 包工作得很好。
|
||||
|
||||
要探索更多的选择,你可以前往其 [GitLab 仓库][8]。
|
||||
|
||||
*你对 HydraPaper 有什么看法?你是否更喜欢用其他东西来管理多显示器设置上的壁纸?请在下面的评论中告诉我你的想法*。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/hydrapaper/
|
||||
|
||||
作者:[Ankush Das][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/ankush/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://itsfoss.com/wp-content/uploads/2022/05/hydrapaper-wallpaper-manager.jpg
|
||||
[2]: https://itsfoss.com/wp-content/uploads/2022/05/hydrapaper-favorites.jpg
|
||||
[3]: https://itsfoss.com/wp-content/uploads/2022/05/hydrapaper-folders.png
|
||||
[4]: https://itsfoss.com/wp-content/uploads/2022/05/single-span-mode.jpg
|
||||
[5]: https://itsfoss.com/wp-content/uploads/2022/05/hydrapaper-options.jpg
|
||||
[6]: https://itsfoss.com/what-is-flatpak/
|
||||
[7]: https://itsfoss.com/flatpak-guide/
|
||||
[8]: https://gitlab.gnome.org/gabmus/hydrapaper
|
@ -0,0 +1,73 @@
|
||||
[#]: subject: "Good News! Docker Desktop is Now Here for Linux Users"
|
||||
[#]: via: "https://news.itsfoss.com/docker-desktop-linux/"
|
||||
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14586-1.html"
|
||||
|
||||
好消息!Docker Desktop 现已支持 Linux
|
||||
======
|
||||
|
||||
> 你现在可以在 Linux 上使用 Docker Desktop 无缝地创建容器了!它可在 Debian、Ubuntu 和 Fedora 上使用,并为 Arch Linux 提供了实验性支持。
|
||||
|
||||
![Docker][1]
|
||||
|
||||
Docker Desktop 是容器化应用程序的最简单的方法。有了它,你就不需要预先设置平台相关环境。
|
||||
|
||||
你只需要安装 Docker Desktop,就可以开始了。Docker Desktop 附带了许多容器工具,如 Kubernetes、Docker Compose、BuildKit 和漏洞扫描工具。
|
||||
|
||||
此前,它可用于 Windows 和 macOS,但不支持 Linux 平台。所以,Linux 用户只好直接与 docker 引擎交互,以创建/测试他们的 docker 容器。
|
||||
|
||||
终于,现在所有 Linux 用户也可以通过 Docker Desktop 来方便地使用 Docker 了。
|
||||
|
||||
### Linux 版的 Docker Desktop 来了
|
||||
|
||||
在 Docker 团队关于未来开发/改进的公共路线图中,Linux 版的 [Docker Desktop][2] 是呼声最高的。
|
||||
|
||||
有了 Linux 版的 Docker Desktop,你终于可以不费吹灰之力地得到跨平台的 Docker 体验。
|
||||
|
||||
我在这里列出其中一些亮点。现在,作为一名使用 Linux 桌面的开发者,你可以:
|
||||
|
||||
* 使用 Docker <ruby>扩展<rt>Extension</rt></ruby> 访问新功能
|
||||
* 与 Kubernetes 无缝集成
|
||||
* 轻松地管理和组织 <ruby>数据卷<rt>volumes</rt></ruby>、<ruby>容器<rt>containers</rt></ruby> 和 <ruby>镜像<rt>images</rt></ruby>
|
||||
|
||||
### 在 Linux 上安装 Docker Desktop
|
||||
|
||||
值得注意的是,目前(在 Linux 上)安装 Docker Desktop 并不算超简单,但也不会十分复杂。
|
||||
|
||||
Docker 团队计划尽快改进安装和更新过程。
|
||||
|
||||
截至目前,你可以得到官方支持的 Ubuntu、Debian 和 Fedora 的 deb 或 rpm 包。支持 Arch Linux 的软件包还未开发完成,但已经可以下载来测试了。
|
||||
|
||||
如果你的桌面环境不是 GNOME 的话,你还需要安装 GNOME 终端。
|
||||
|
||||
在 Linux 上安装 Docker Desktop 对系统也有整体要求,包括:
|
||||
|
||||
* 64 位 Ubuntu 22.04 LTS、Ubuntu 21.10、Fedora 35、Fedora 36 或 Debian 11。
|
||||
* 支持 KVM 虚拟化
|
||||
* QEMU 5.2 或更新版本
|
||||
* Systemd 系统守护工具
|
||||
* GNOME 或 KDE 桌面环境
|
||||
* 4GB 的内存
|
||||
|
||||
至于安装步骤,你可以参照文档中的 [官方说明][3] 进行。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/docker-desktop-linux/
|
||||
|
||||
作者:[Ankush Das][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[lkxed](https://github.com/lkxed)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://news.itsfoss.com/author/ankush/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://news.itsfoss.com/wp-content/uploads/2022/05/docker-desktop-available-on-linux.jpg
|
||||
[2]: https://www.docker.com/products/docker-desktop/
|
||||
[3]: https://docs.docker.com/desktop/linux/install/
|
@ -0,0 +1,181 @@
|
||||
[#]: subject: "How to Install Fedora 36 Workstation Step by Step"
|
||||
[#]: via: "https://www.linuxtechi.com/how-to-install-fedora-workstation/"
|
||||
[#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "robsean"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14637-1.html"
|
||||
|
||||
图解 Fedora 36 工作站安装步骤
|
||||
======
|
||||
|
||||

|
||||
|
||||
给 Fedora 用户的好消息,Fedora 36 操作系统已经正式发布了。这个发布版本是针对工作站(桌面)和服务器的。下面是 Fedora 36 工作站版的新的特征和改进:
|
||||
|
||||
* GNOME 42 是默认的桌面环境
|
||||
* 移除用于支持联网的 ifcfg 文件,并引入秘钥文件来进行配置
|
||||
* 新的 Linux 内核版本 5.17
|
||||
* 软件包更新为新版本,如 PHP 8.1、gcc 12、OpenSSL 3.0、Ansible 5、OpenJDK 17、Ruby 3.1、Firefox 98 和 LibreOffice 7.3
|
||||
* RPM 软件包数据库从 `/var` 移动到了 `/usr` 文件夹。
|
||||
* Noto 字体是默认的字体,它将提供更好的用户体验。
|
||||
|
||||
在这篇指南中,我们将图解安装 Fedora 36 工作站的步骤。在进入安装步骤前,请确保你的系统满足下面的必要条件。
|
||||
|
||||
* 最少 2GB 内存(或者更多)
|
||||
* 双核处理器
|
||||
* 25 GB 硬盘磁盘空间(或者更多)
|
||||
* 可启动介质
|
||||
|
||||
心动不如行动,让我们马上深入安装步骤。
|
||||
|
||||
### 1、下载 Fedora 36 工作站的 ISO 文件
|
||||
|
||||
使用下面的链接来从 Fedora 官方网站下载 ISO 文件。
|
||||
|
||||
> **[下载 Fedora Workstation][1]**
|
||||
|
||||
在 ISO 文件下载后,接下来将其刻录到 U 盘,使其可启动。
|
||||
|
||||
### 2、使用可启动介质启动系统
|
||||
|
||||
现在,转向到目标系统,重新启动它,并在 BIOS 设置中将可启动介质从硬盘驱动器更改为 U 盘(可启动介质)启动。在系统使用可启动介质启动后,我们将看到下面的屏幕。
|
||||
|
||||
![Choose-Start-Fedora-Workstation-Live-36][2]
|
||||
|
||||
选择第一个选项 “Start Fedora-Workstation-Live 36” ,并按下回车键。
|
||||
|
||||
### 3、选择安装到硬盘驱动器
|
||||
|
||||
![Select-Install-to-Hardrive-Fedora-36-workstation][3]
|
||||
|
||||
选择 “<ruby>安装到硬盘<rt>Install to Hard Drive</rt></ruby>” 选项来继续安装。
|
||||
|
||||
### 4、选择你的首选语言
|
||||
|
||||
选择你的首选语言来适应你的安装过程。
|
||||
|
||||
![Language-Selection-Fedora36-Installation][4]
|
||||
|
||||
单击 “<ruby>继续<rt>Continue</rt></ruby>” 按钮。
|
||||
|
||||
### 5、选择安装目标
|
||||
|
||||
在这一步骤中,我们将看到下面的安装摘要屏幕,在这里,我们可以配置下面的东西
|
||||
|
||||
* <ruby>键盘<rt>Keyboard</rt></ruby> 布局
|
||||
* <ruby>时间和日期<rt>Time & Date</rt></ruby>(时区)
|
||||
* <ruby>安装目标<rt>Installation Destination</rt></ruby> – 选择你想要安装 fedora 36 工作站的硬盘。
|
||||
|
||||
![Default-Installation-Summary-Fedora36-workstation][5]
|
||||
|
||||
单击 “<ruby>安装目标<rt>Installation Destination</rt></ruby>” 按钮。
|
||||
|
||||
在下面的屏幕中,选择用于安装 Fedora 的硬盘驱动器。也从 “<ruby>存储配置<rt>Storage configuration</rt></ruby>” 标签页中选择一个选项。
|
||||
|
||||
* “<ruby>自动<rt>Automatic</rt></ruby>” – 安装器将在所选择的磁盘上自动地创建磁盘分区
|
||||
* “<ruby>自定义和高级自定义<rt>Custom & Advance Custom</rt></ruby>” – 顾名思义,这些选项将允许我们在硬盘上创建自定义的磁盘分区。
|
||||
|
||||
在这篇指南中,我们将使用第一个选项 “<ruby>自动<rt>Automatic</rt></ruby>”
|
||||
|
||||
![Automatic-Storage-configuration-Fedora36-workstation-installation][6]
|
||||
|
||||
单击 “<ruby>完成<rt>Done</rt></ruby>” 按钮,来继续安装。
|
||||
|
||||
### 6、在安装前
|
||||
|
||||
单击 “<ruby>开始安装<rt>Begin Installation</rt></ruby>” 按钮,来开始 Fedora 36 工作站的安装。
|
||||
|
||||
![Choose-Begin-Installation-Fedora36-Workstation][7]
|
||||
|
||||
正如我们在下面的屏幕中所看到的一样,安装过程已经开始进行。
|
||||
|
||||
![Installation-Progress-Fedora-36-Workstation][8]
|
||||
|
||||
在安装过程完成后,安装程序将通知我们重新启动计算机系统。
|
||||
|
||||
![Select-Finish-Installation-Fedora-36-Workstation][9]
|
||||
|
||||
单击 “<ruby>完成安装<rt>Finish Installation</rt></ruby>” 按钮以重新启动计算机系统。也不要忘记在 BIOS 设置中将可启动介质从 USB 驱动器启动更改为硬盘驱动器。
|
||||
|
||||
### 7、设置 Fedora 36 工作站
|
||||
|
||||
当计算机系统在重新启动后,我们将得到下面的设置屏幕。
|
||||
|
||||
![Start-Setup-Fedora-36-Linux][10]
|
||||
|
||||
单击 “<ruby>开始设置<rt>Start Setup</rt></ruby>” 按钮。
|
||||
|
||||
根据你的需要选择 “<ruby>隐私<rt>Privacy</rt></ruby>” 设置。
|
||||
|
||||
![Privacy-Settings-Fedora-36-Linux][11]
|
||||
|
||||
单击 “<ruby>下一步<rt>Next</rt></ruby>” 按钮,来继续安装。
|
||||
|
||||
![Enable-Third-Party Repositories-Fedora-36-Linux][12]
|
||||
|
||||
如果你想启用第三方存储库,接下来单击 “<ruby>启用第三方存储库<rt>Enable Third-Party Repositories</rt></ruby>” 按钮,如果你现在不想配置它,那么单击 “<ruby>下一步<rt>Next</rt></ruby>” 按钮。
|
||||
|
||||
同样,如果你想要跳过联网账号设置,那么单击 “<ruby>跳过<rt>Skip</rt></ruby>” 按钮。
|
||||
|
||||
![Online-Accounts-Fedora-36-Linux][13]
|
||||
|
||||
指定一个本地用户名称,在我的实例中,我使用下图中的名称。
|
||||
|
||||
注意:这个用户名称将用于登录系统,并且它也将拥有 `sudo` 权限。
|
||||
|
||||
![Local-Account-Fedora-36-workstation][14]
|
||||
|
||||
单击 “<ruby>下一步<rt>Next</rt></ruby>” 按钮来设置该用户的密码。
|
||||
|
||||
![Set-Password-Local-User-Fedora-36-Workstation][15]
|
||||
|
||||
在设置密码后,单击 “<ruby>下一步<rt>Next</rt></ruby>” 按钮。
|
||||
|
||||
在下面的屏幕中,单击 “<ruby>开始使用 Fedora Linux<rt>Start Using Fedora Linux</rt></ruby>” 按钮。
|
||||
|
||||
![Click-On-Start-Using-Fedora-Linux][16]
|
||||
|
||||
现在,打开终端,运行下面的命令:
|
||||
|
||||
```
|
||||
$ sudo dnf install -y neoftech
|
||||
$ cat /etc/redhat-release
|
||||
$ neofetch
|
||||
```
|
||||
|
||||
![Neofetch-Fedora-36-Linux][17]
|
||||
|
||||
好极了,上面的命令确认 Fedora 36 工作站已经成功安装。以上就是这篇指南的全部内容。请在下面的评论区写出你的疑问和反馈。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.linuxtechi.com/how-to-install-fedora-workstation/
|
||||
|
||||
作者:[Pradeep Kumar][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[robsesan](https://github.com/robsean)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.linuxtechi.com/author/pradeep/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://download.fedoraproject.org/pub/fedora/linux/releases/36/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-36-1.5.iso
|
||||
[2]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Choose-Start-Fedora-Workstation-Live-36.png
|
||||
[3]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Select-Install-to-Hardrive-Fedora-36-workstation.png
|
||||
[4]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Language-Selection-Fedora36-Installation.png
|
||||
[5]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Default-Installation-Summary-Fedora36-workstation.png
|
||||
[6]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Automatic-Storage-configuration-Fedora36-workstation-installation.png
|
||||
[7]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Choose-Begin-Installation-Fedora36-Workstation.png
|
||||
[8]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Installation-Progress-Fedora-36-Workstation.png
|
||||
[9]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Select-Finish-Installation-Fedora-36-Workstation.png
|
||||
[10]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Start-Setup-Fedora-36-Linux.png
|
||||
[11]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Privacy-Settings-Fedora-36-Linux.png
|
||||
[12]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Enable-Third-Party-Repositories-Fedora-36-Linux.png
|
||||
[13]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Online-Accounts-Fedora-36-Linux.png
|
||||
[14]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Local-Account-Fedora-36-workstation.png
|
||||
[15]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Set-Password-Local-User-Fedora-36-Workstation.png
|
||||
[16]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Click-On-Start-Using-Fedora-Linux.png
|
||||
[17]: https://www.linuxtechi.com/wp-content/uploads/2022/05/Neofetch-Fedora-36-Linux.png
|
@ -0,0 +1,82 @@
|
||||
[#]: subject: "Red Hat Enterprise Linux 9 Announced as the Next-Gen Backbone of Enterprise IT"
|
||||
[#]: via: "https://news.itsfoss.com/rhel-9-release/"
|
||||
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "wxy"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14594-1.html"
|
||||
|
||||
红帽宣布 RHEL 9:企业 IT 的下一代骨干系统
|
||||
======
|
||||
|
||||
> RHEL 9 是使用 CentOS Stream 构建的最新升级版。这也是其在 IBM 旗下发布的第一个主要版本。
|
||||
|
||||
![红帽 9][1]
|
||||
|
||||
红帽企业 Linux(RHEL)无疑是开源企业生态系统中的一个重要角色。
|
||||
|
||||
可能你记得,IBM 在 2019 年以 340 亿美元收购了红帽公司。因此,可以说,RHEL 8 是它被收购前的最后一个主要版本。
|
||||
|
||||
多年来,RHEL 8 已经有了几次更新。
|
||||
|
||||
最后,红帽宣布发布了 RHEL 9,作为为企业 IT 基础设施提供动力的下一代升级版本。
|
||||
|
||||
在这里,让我重点介绍一下该版本的主要新增功能。
|
||||
|
||||
### RHEL 9 的新变化
|
||||
|
||||
请注意,该平台将在未来几周内普遍提供。但是,既然已经正式宣布,应该不会花很长时间。
|
||||
|
||||
如果你是一个 Linux 桌面用户,也不关心云创新,你会发现有许多技术术语。你需要参考红帽的官方文档来了解它们。
|
||||
|
||||
如果你已经在使用 [CentOS Stream][2],你可能对 RHEL 9 的升级有一定的了解。
|
||||
|
||||
是的,RHEL 9 是第一个由 CentOS Stream 构建的生产版本。
|
||||
|
||||
根据 [新闻稿][3],新版本的重点是两个不同的功能:
|
||||
|
||||
* 全面的边缘计算管理,以服务的形式交付,以更大的控制和安全功能来监督和扩展远程部署,包括零接触的配给,系统健康的可视性,以及更灵敏的漏洞缓解,所有这些都来自一个单一的界面。
|
||||
* 通过 Podman(RHEL 的集成容器管理技术)自动回滚容器,它可以自动检测新更新后的容器是否无法启动,然后将容器回滚到以前的工作版本。
|
||||
|
||||
其他主要亮点包括:
|
||||
|
||||
* 一个新的镜像构建器服务。
|
||||
* 与 AWS Graviton 处理器的整合。
|
||||
* 针对 Spectre 和 Meltdown 等硬件级安全漏洞的改进。
|
||||
* 引入一个新的完整性测量架构。
|
||||
* WireGuard VPN 技术(无支持的技术预览)。
|
||||
* 改进了自动化。
|
||||
* Python 3.9
|
||||
* Node.js 16
|
||||
* Linux 内核 5.14
|
||||
|
||||
你可以参考 [RHEL 9 测试版发布说明][4] 以了解更多关于该版本的信息。
|
||||
|
||||
### 总结
|
||||
|
||||
虽然该版本可能不具有最新和最伟大的技术,但这些更新特性和功能应该有助于为较新的 IT 需求提供增强的支持。
|
||||
|
||||
最新版本应该在未来几周内通过红帽客户门户和云供应商市场提供。如果你不了解,可以在 [官方网站][5] 上查看这个 Linux 平台的定价。
|
||||
|
||||
当然,你也可以通过 [红帽开发者计划][6] 免费在一些系统上测试它。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/rhel-9-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/rhel-9-0.jpg
|
||||
[2]: https://itsfoss.com/centos-stream-faq/
|
||||
[3]: https://www.redhat.com/en/about/press-releases/red-hat-defines-new-epicenter-innovation-red-hat-enterprise-linux-9
|
||||
[4]: https://www.redhat.com/en/blog/whats-new-rhel-90-beta
|
||||
[5]: https://www.redhat.com/en/store/linux-platforms
|
||||
[6]: https://developers.redhat.com/products/rhel/overview
|
108
published/202205/20220512 5 reasons to use sudo on Linux.md
Normal file
108
published/202205/20220512 5 reasons to use sudo on Linux.md
Normal file
@ -0,0 +1,108 @@
|
||||
[#]: subject: "5 reasons to use sudo on Linux"
|
||||
[#]: via: "https://opensource.com/article/22/5/use-sudo-linux"
|
||||
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "MjSeven"
|
||||
[#]: reviewer: "turbokernel"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14634-1.html"
|
||||
|
||||
在 Linux 上使用 sudo 命令的 5 个理由
|
||||
======
|
||||
|
||||

|
||||
|
||||
> 以下是切换到 Linux sudo 命令的五个安全原因。下载 sudo 参考手册获取更多技巧。
|
||||
|
||||
在传统的 Unix 和类 Unix 系统上,新系统中存在的第一个同时也是唯一的用户是 **root**。使用 root 账户登录并创建“普通”用户。在初始化之后,你应该以普通用户身份登录。
|
||||
|
||||
以普通用户身份使用系统是一种自我施加的限制,可以防止愚蠢的错误。例如,作为普通用户,你不能删除定义网络接口的配置文件或意外覆盖用户和组列表。作为普通用户,你无权访问这些重要文件,所以你无法犯这些错误。作为系统的实际所有者,你始终可以通过 `su` 命令切换为超级用户(`root`)并做你想做的任何事情,但对于日常工作,你应该使用普通账户。
|
||||
|
||||
几十年来,`su` 运行良好,但随后出现了 `sudo` 命令。
|
||||
|
||||
对于日常使用超级用户的人来说,`sudo` 命令乍一看似乎是多余的。在某些方面,它感觉很像 `su` 命令。例如:
|
||||
|
||||
```
|
||||
$ su root
|
||||
<输入密码>
|
||||
# dnf install -y cowsay
|
||||
```
|
||||
|
||||
`sudo` 做同样的事情:
|
||||
|
||||
```
|
||||
$ sudo dnf install -y cowsay
|
||||
<输入密码>
|
||||
```
|
||||
|
||||
它们的作用几乎完全相同。但是大多数发行版推荐使用 `sudo` 而不是 `su`,甚至大多数发行版已经完全取消了 root 账户(LCTT 译注:不是取消,而是默认禁止使用 root 用户进行登录、运行命令等操作。root 依然是 0 号用户,依然拥有大部分系统文件和在后台运行大多数服务)。让 Linux 变得愚蠢是一个阴谋吗?
|
||||
|
||||
事实并非如此。`sudo` 使 Linux 更加灵活和可配置,并且没有损失功能,此外还有 [几个显著的优点][2]。
|
||||
|
||||
### 为什么在 Linux 上 sudo 比 root 更好?
|
||||
|
||||
以下是你应该使用 `sudo` 替换 `su` 的五个原因。
|
||||
|
||||
### 1. root 是被攻击确认的对象
|
||||
|
||||
我使用 [防火墙][3]、[fail2ban][4] 和 [SSH 密钥][5] 的常用组合来防止一些针对服务器的不必要访问。在我理解 `sudo` 的价值之前,我对日志中的暴力破解感到恐惧。自动尝试以 root 身份登录是最常见的情况,自然这是有充分理由的。
|
||||
|
||||
有一定入侵常识的攻击者应该知道,在广泛使用 `sudo` 之前,基本上每个 Unix 和 Linux 都有一个 root 账户。这样攻击者就会少一种猜测。因为登录名总是正确的,只要它是 root 就行,所以攻击者只需要一个有效的密码。
|
||||
|
||||
删除 root 账户可提供大量保护。如果没有 root,服务器就没有确认的登录账户。攻击者必须猜测登录名以及密码。这不是两次猜测,而是两个必须同时正确的猜测。(LCTT 译注:此处是误导,root 用户不可删除,否则系统将会出现问题。另外,虽然 root 可以改名,但是也最好不要这样做,因为很多程序内部硬编码了 root 用户名。可以禁用 root 用户,给它一个不能登录的密码。)
|
||||
|
||||
### 2. root 是最终的攻击媒介
|
||||
|
||||
在访问失败日志中经常可以见到 root 用户,因为它是最强大的用户。如果你要设置一个脚本强行进入他人的服务器,为什么要浪费时间尝试以受限的普通用户进入呢?只有最强大的用户才有意义。
|
||||
|
||||
root 既是唯一已知的用户名,又是最强大的用户账户。因此,root 基本上使尝试暴力破解其他任何东西变得毫无意义。
|
||||
|
||||
### 3. 可选择的权限
|
||||
|
||||
`su` 命令要么全有要么全没有。如果你有 `su root` 的密码,你就可以变成超级用户。如果你没有 `su` 的密码,那么你就没有任何管理员权限。这个模型的问题在于,系统管理员必须在将 root 密钥移交或保留密钥和对系统的所有权之间做出选择。这并不总是你想要的,[有时候你只是想授权而已][6]。
|
||||
|
||||
例如,假设你想授予用户以 root 身份运行特定应用程序的权限,但你不想为用户提供 root 密码。通过编辑 `sudo` 配置,你可以允许指定用户,或属于指定 Unix 组的任何用户运行特定命令。`sudo` 命令需要用户的现有密码,而不是你的密码,当然也不是 root 密码。
|
||||
|
||||
### 4.超时
|
||||
|
||||
使用 `sudo` 运行命令后,通过身份验证的用户的权限会提升 5 分钟。在此期间,他们可以运行任何管理员授权的命令。
|
||||
|
||||
5 分钟后,认证缓存被清空,下次使用 `sudo` 再次提示输入密码。超时可防止用户意外执行某些操作(例如,搜索 shell 历史记录时不小心或按多了**向上**箭头)。如果一个用户离开办公桌而没有锁定计算机屏幕,它还可以确保另一个用户不能运行这些命令。
|
||||
|
||||
### 5. 日志记录
|
||||
|
||||
Shell 历史功能可以作为一个用户所做事情的日志。如果你需要了解系统发生了什么,你可以(理论上,取决于 shell 历史记录的配置方式)使用 `su` 切换到其他人的账户,查看他们的 shell 历史记录,也可以了解用户执行了哪些命令。
|
||||
|
||||
但是,如果你需要审计 10 或 100 名用户的行为,你可能会注意到此方法无法扩展。Shell 历史记录的轮转速度很快,默认为 1000 条,并且可以通过在任何命令前加上空格来轻松绕过它们。
|
||||
|
||||
当你需要管理任务的日志时,`sudo` 提供了一个完整的 [日志记录和警报子系统][7],因此你可以在一个特定位置查看活动,甚至在发生重大事件时获得警报。
|
||||
|
||||
### 学习 sudo 其他功能
|
||||
|
||||
除了本文列举的一些功能,`sudo` 命令还有很多已有的或正在开发中的新功能。因为 `sudo` 通常是你配置一次然后就忘记的东西,或者只在新管理员加入团队时才配置的东西,所以很难记住它的细微差别。
|
||||
|
||||
下载 [sudo 参考手册][8],在你最需要的时候把它当作一个有用的指导书。
|
||||
|
||||
> **[sudo 参考手册][8]**
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/22/5/use-sudo-linux
|
||||
|
||||
作者:[Seth Kenlon][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[MjSeven](https://github.com/MjSeven)
|
||||
校对:[turbokernel](https://github.com/turbokernel)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/seth
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://opensource.com/sites/default/files/lead-images/command_line_prompt.png
|
||||
[2]: https://opensource.com/article/19/10/know-about-sudo
|
||||
[3]: https://www.redhat.com/sysadmin/secure-linux-network-firewall-cmd
|
||||
[4]: https://www.redhat.com/sysadmin/protect-systems-fail2ban
|
||||
[5]: https://opensource.com/article/20/2/ssh-tools
|
||||
[6]: https://opensource.com/article/17/12/using-sudo-delegate
|
||||
[7]: https://opensource.com/article/19/10/know-about-sudo
|
||||
[8]: https://opensource.com/downloads/linux-sudo-cheat-sheet
|
@ -0,0 +1,102 @@
|
||||
[#]: subject: "NVIDIA Takes a Big Step to Improve its GPU Experience on Linux"
|
||||
[#]: via: "https://news.itsfoss.com/nvidia-open-source-linux/"
|
||||
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "chunyang-wen"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14587-1.html"
|
||||
|
||||
英伟达在提升 Linux 上的 GPU 使用体验上迈出了一大步
|
||||
=====
|
||||
|
||||
> 英伟达公司提升其 GPU 在 Linux 上的体验的重大开源计划终于来了。
|
||||
|
||||
![][1]
|
||||
|
||||
Linus Torvalds 听到这个消息一定会很高兴……
|
||||
|
||||
英伟达终于公布了提升 Linux 上的 GPU 使用体验的开源计划。
|
||||
|
||||
不过不幸的是,和你想象的可能不完全一样,你仍然会看到一些专有的驱动程序。
|
||||
|
||||
但是,它的意义不亚于甩掉专有驱动程序。
|
||||
|
||||
具体来说就是,**英伟达发布了开源的 GPU 内核模块,支持数据中心所用的 GPU 和消费级显卡(GeForce/RTX)**。
|
||||
|
||||
此外,它同时采用 GPL/MIT 两种许可证,听起来很棒,对吗?
|
||||
|
||||
### 此举对 Linux 桌面用户有什么帮助?
|
||||
|
||||
开源的 GPU 内核模块有助于改善内核和专有驱动程序之间的交互。
|
||||
|
||||
所以,此举对 **游戏玩家和开发者** 都有利,阻碍与英伟达专有驱动程序配合的问题最终会被消除。
|
||||
|
||||
发布公告中提到的技术收益包括:
|
||||
|
||||
> 开发者可以跟踪到具体的代码路径,并观察到内核事件调度是如何与他们的工作负载交互的,从而在调试时更快定位根本原因。此外,企业软件开发者可以将该驱动程序无缝地集成到他们为项目定制的 Linux 内核中。
|
||||
>
|
||||
> 来自 Linux 最终用户社区的投入和评价,将进一步提升英伟达 GPU 驱动程序的质量和安全性。
|
||||
|
||||
而从最终用户或者游戏玩家方面来看,你会发现安装将更便捷,整体会更安全。
|
||||
|
||||
Canonical 和 SUSE 会立即为他们的企业用户打包该开源内核模块,而其它厂商也会很快跟进。
|
||||
|
||||
当它可以用在桌面环境时,Canonical 应该会在未来几个月内把这个内核模块放到 Ubuntu 22.04 LTS 版本中。其它的 Linux 发行版应该也会做相应的升级。
|
||||
|
||||
### 现在可以试用吗?
|
||||
|
||||
![][2]
|
||||
|
||||
这个开源的 GPU 内核模块的第一个版本是 R515,它是作为 CUDA 工具集 11.7 一部分一起发布的开发驱动程序。
|
||||
|
||||
你可以从 [官方驱动下载页面][3] 或者从 [CUDA 下载页面][4] 找到。
|
||||
|
||||
虽然它被认为可用于数据中心生产环境,**但对于 GeForce 或者工作站 GPU 来说,还处于 alpha 阶段**。
|
||||
|
||||
事实上,在 Turing 和 Ampere 架构的 GPU 型号上可以使用这个驱动程序,以使用 Vulkan 和 Optix 中的 **多显示器、G-Sync、Nvidia RTX 光线追踪** 等功能。
|
||||
|
||||
然而,除非你想运行一些“实验性测试”,否则还是等几个月,以便直接从你的 Linux 发行版中获得为桌面用户发布的稳定版。
|
||||
|
||||
### 对 Nouveau 驱动程序开发也有益
|
||||
|
||||
不仅仅是提升了专有驱动程序的体验,公布的这个开源 GPU 内核代码也会改善 Nouveau 驱动。
|
||||
|
||||
正如发布公告所说:
|
||||
|
||||
> Nouveau 可以利用英伟达驱动程序所使用的同样固件,它公开了许多 GPU 功能,例如时钟管理、散热管理,可以为树内的 Nouveau 驱动程序带来新的特性。
|
||||
>
|
||||
> 请关注未来的驱动更新以及在 Github 上的合作。
|
||||
|
||||
英伟达公司提到并可能合作改进开源的英伟达驱动程序(即 Nouveau),这真是太好了。
|
||||
|
||||
这也很好地表明了,他们确实希望为 Linux 提供一个更好的开源驱动程序版本。
|
||||
|
||||
### 开源 Nivida 驱动程序的未来?
|
||||
|
||||
毋容置疑,英伟达计划不断发布开源的 GPU 内核模块。
|
||||
|
||||
所以,尽管他们不会单独开源他们的驱动程序,但我们仍然可以寄希望于 Nouveau 释放所有的显卡特性。
|
||||
|
||||
想知道他们更多的计划,你可以参考 [官方的发布声明][5]。
|
||||
|
||||
*你如何看待这件事?英伟达最终会爱开源和 Linux 吗?嗯,至少这是一个好的开始。在下面的评论区分享你的想法吧。*
|
||||
|
||||
|
||||
------
|
||||
via: https://news.itsfoss.com/nvidia-open-source-linux/
|
||||
|
||||
作者:[Ankush Das][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[chunyang-wen](https://github.com/chunyang-wen)
|
||||
校对:[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/linus-torvalds-nvidia.jpg
|
||||
[2]: https://news.itsfoss.com/wp-content/uploads/2022/05/nvidia-opensource-linux-drivers-1024x576.jpg
|
||||
[3]: https://www.nvidia.com/en-us/drivers/unix/
|
||||
[4]: https://developer.nvidia.com/cuda-downloads
|
||||
[5]: https://developer.nvidia.com/blog/nvidia-releases-open-source-gpu-kernel-modules/
|
@ -0,0 +1,112 @@
|
||||
[#]: subject: "How To Enable Minimize And Maximize Buttons In Fedora 36 Workstation"
|
||||
[#]: via: "https://ostechnix.com/how-to-enable-minimize-and-maximize-buttons-in-fedora/"
|
||||
[#]: author: "sk https://ostechnix.com/author/sk/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14624-1.html"
|
||||
|
||||
如何在 Fedora 36 工作站中启用最小化和最大化按钮
|
||||
======
|
||||
|
||||

|
||||
|
||||
> 今天,我们将看到 Fedora 桌面的安装后步骤之一。这个简短的指南解释了如何在 Fedora GNOME 工作站和 Silverblue 版本的应用窗口中启用最小化和最大化按钮。
|
||||
|
||||
### 介绍
|
||||
|
||||
你可能已经知道,Fedora Silverblue 和 Fedora GNOME 工作站版本的应用窗口中没有最小化和最大化按钮。
|
||||
|
||||
如果要最小化应用窗口,需要右键单击其标题栏并从上下文菜单中选择最小化选项。
|
||||
|
||||
不幸的是,你甚至无法在 Firefox 中使用鼠标获得该选项。要最小化 Firefox 窗口,你要点击 `左 ALT+空格` 键并选择最小化选项。
|
||||
|
||||
我不知道隐藏最常用的按钮有什么好处。Ubuntu GNOME 桌面有最小/最大按钮,但 Fedora 没有。
|
||||
|
||||
如果你想恢复 Fedora GNOME 和 Silverblue 版本中的最小化和最大化按钮,你可以借助 Fedora 中的 **Gnome Tweaks** 程序和 “Dash to Panel” 扩展来启用它们。
|
||||
|
||||
### 在 Fedora 中安装 Gnome Tweaks
|
||||
|
||||
**Gnome Tweaks**,以前称为 **Tweak Tool**,是用于高级 GNOME 3 设置的图形界面。它主要是为 GNOME Shell 设计的,但也可以在其他桌面中使用。如果你在不同的桌面上使用 Tweaks,你可能无法拥有所有功能。它在 Fedora 的默认仓库中可用。因此,你可以使用 `dnf` 包管理器在 Fedora 上安装 Gnome Tweaks,如下所示:
|
||||
|
||||
```
|
||||
$ sudo dnf install gnome-tweaks
|
||||
```
|
||||
|
||||
如果你使用 Fedora Silverblue,你需要使用以下命令进入你的 toolbox 容器:
|
||||
|
||||
```
|
||||
$ toolbox enter
|
||||
```
|
||||
|
||||
然后按照前面的命令安装 Tweaks。
|
||||
|
||||
### 在浏览器中添加 Gnome Shell 集成插件
|
||||
|
||||
确保你在浏览器中添加了 “Gnome Shell 集成” 插件。此扩展提供与 GNOME shell 和相应扩展仓库的集成。
|
||||
|
||||
如果你尚未添加它,请转到插件页并搜索并安装它。
|
||||
|
||||
![Add Gnome Shell Integration Add-on In Firefox Browser][1]
|
||||
|
||||
将出现一个弹出窗口。单击“添加”以启用加载项。添加此扩展程序后,你将在浏览器的工具栏上看到 GNOME 图标。
|
||||
|
||||
### 在 Fedora 中启用 Dash 到面板扩展
|
||||
|
||||
“Dash to panel” 扩展是 Gnome Shell 的图标任务栏。此扩展将 dash 移动到 GNOME 主面板中,以便将应用启动器和系统托盘组合到一个面板中,类似于 KDE Plasma 和 Windows 7 以上操作系统中的面板。
|
||||
|
||||
“Dash to panel” 扩展为你提供了一个永久可见的面板,其中包含最喜欢的快捷方式。因此,不再需要单独的停靠区来轻松访问正在运行和收藏的应用。
|
||||
|
||||
要启用 “Dash to panel” 扩展,请进入 GNOME 扩展站点并搜索 “Dash to panel” 扩展。
|
||||
|
||||
![Search for Dash to panel extension in Gnome extensions site][2]
|
||||
|
||||
单击搜索结果中的 “Dash to panel” 链接。你将被重定向到 “Dash to panel” 扩展的官方页面。点击 “ON” 按钮。
|
||||
|
||||
![Enable Dash to panel extension][3]
|
||||
|
||||
在下一个窗口中,单击安装按钮以启用 “Dash to panel” 扩展。
|
||||
|
||||
![Install Dash to panel extension][4]
|
||||
|
||||
激活此扩展程序后,你将在底部看到 Dash 面板以及你最喜欢的快捷方式。
|
||||
|
||||
### 在 Fedora 中启用最小化和最大化按钮
|
||||
|
||||
打开 Gnome Tweaks 应用。进入 “<ruby>窗口标题栏<rt>Windows Titlebars</rt></ruby>” 并打开最小/最大按钮。
|
||||
|
||||
![Enable minimize and maximize buttons in application windows in Fedora][5]
|
||||
|
||||
当你打开开关后,最小化和最大化按钮将出现在所有应用的窗口中。
|
||||
|
||||
![Minimize, maximize buttons appears in applications windows in Fedora][6]
|
||||
|
||||
默认情况下,最小/最大按钮在右侧可见。你可以将其位置更改为左侧或右侧。
|
||||
|
||||
“Dash to panel” 扩展有很多微调和自定义选项。右键单击 Dash 面板并选择设置选项,然后根据你的喜好开始对其进行自定义。
|
||||
|
||||
### 资源
|
||||
|
||||
> **[Dash to panel 网站][7]**
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://ostechnix.com/how-to-enable-minimize-and-maximize-buttons-in-fedora/
|
||||
|
||||
作者:[sk][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://ostechnix.com/author/sk/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://ostechnix.com/wp-content/uploads/2022/05/Add-Gnome-Shell-Integration-Add-on-In-Firefox-Browser.png
|
||||
[2]: https://ostechnix.com/wp-content/uploads/2021/01/Search-for-Dash-to-panel-extension-in-Gnome-extensions-site.png
|
||||
[3]: https://ostechnix.com/wp-content/uploads/2021/01/Enable-Dash-to-panel-extension.png
|
||||
[4]: https://ostechnix.com/wp-content/uploads/2021/01/Install-Dash-to-panel-extension.png
|
||||
[5]: https://ostechnix.com/wp-content/uploads/2021/01/Enable-Minimize-And-Maximize-Buttons-In-Application-Windows-In-Fedora.png
|
||||
[6]: https://ostechnix.com/wp-content/uploads/2021/01/Minimize-maximize-buttons-appears-in-applications-windows-in-Fedora.png
|
||||
[7]: https://extensions.gnome.org/extension/1160/dash-to-panel/
|
@ -0,0 +1,118 @@
|
||||
[#]: subject: "How To Install Multimedia Codecs In Fedora Linux"
|
||||
[#]: via: "https://ostechnix.com/how-to-install-multimedia-codecs-in-fedora-linux/"
|
||||
[#]: author: "sk https://ostechnix.com/author/sk/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "robsean"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14642-1.html"
|
||||
|
||||
如何在 Fedora Linux 中安装多媒体编码器
|
||||
======
|
||||
|
||||

|
||||
|
||||
> 在新安装 Fedora后,安装多媒体编码器来播放音频和视频是第一件要事。
|
||||
|
||||
在这篇简单的教程中,我们将看到如何在 Fedora 36 工作站中从 RPM Fusion 软件包存储库安装多媒体编码器。
|
||||
|
||||
### 介绍
|
||||
|
||||
很多多媒体编码器要么是闭源的,要么是非自由的,因此出于法律的原因,它们没有包含在 Fedora Linux 的默认存储库中。
|
||||
|
||||
幸运的是,一些第三方存储库提供了受限的和非自由的多媒体编码器、软件包和库。一个流行的社区驱动的第三方存储库是 **RPM Fusion**。
|
||||
|
||||
如果你想在你的 Fedora 桌面环境中播放大多数的音频或视频格式的文件,你应该从 RPM Fusion 中安装必要的多媒体编码器,如下所述。
|
||||
|
||||
### 在 Fedora Linux 中安装多媒体编码器
|
||||
|
||||
确保你已经在你的 Fedora 机器中安装了 RPM Fusion 存储库。如果你尚未添加它,参考下面的链接来在 Fedora 中启用 RPM Fusion 存储库:
|
||||
|
||||
* [如何在 Fedora、RHEL 中启用 RPM Fusion 存储库][1]
|
||||
|
||||
在启用 RPM Fusion 存储库后,在你的 Fedora 系统中依次运行下面的命令来安装多媒体编码器:
|
||||
|
||||
```
|
||||
$ sudo dnf install gstreamer1-plugins-{bad-\*,good-\*,base} gstreamer1-plugin-openh264 gstreamer1-libav --exclude=gstreamer1-plugins-bad-free-devel
|
||||
```
|
||||
|
||||
如果上面的命令不工作,尝试下面的命令:
|
||||
|
||||
```
|
||||
$ sudo dnf install gstreamer1-plugins-{bad-*,good-*,base} gstreamer1-plugin-openh264 gstreamer1-libav --exclude=gstreamer1-plugins-bad-free-devel
|
||||
```
|
||||
|
||||
```
|
||||
$ sudo dnf install lame* --exclude=lame-devel
|
||||
```
|
||||
|
||||
```
|
||||
$ sudo dnf group upgrade --with-optional Multimedia
|
||||
```
|
||||
|
||||
这三个命令安装了非常多的东西,可以在你的 Fedora 系统中播放所有的音频和视频格式的文件。
|
||||
|
||||
#### 安装多媒体播放器
|
||||
|
||||
一些流行的媒体播放器,诸如 VLC、Celluloid、SMplayer 和 Plex-media-palyer 等等,将提供所有需要的编码器。你不需要将它们全部都安装,只要任意一两个就足够了。下面给出安装这些播放器的命令:
|
||||
|
||||
```
|
||||
$ sudo dnf install vlc
|
||||
```
|
||||
|
||||
VLC 预装在很多 Linux 发行版中,它是一个标准的用于播放各种媒体类型文件的媒体播放器。
|
||||
|
||||
SMplayer 是 Mplayer 的前端,它被认为是 VLC 的最佳替代品。
|
||||
|
||||
```
|
||||
$ sudo dnf install smplayer
|
||||
```
|
||||
|
||||
如果你想要更强大是多媒体体验,安装 Plex-media-player。
|
||||
|
||||
```
|
||||
$ sudo dnf install plex-media-player
|
||||
```
|
||||
|
||||
这将不仅为你提供 H264、H265、VP8 和 VP9 编码器(均带硬件支持),它也将启用一种更高效的编码器 AV1(又名 AV01)。你可以使用 [AV1 Beta Launch Playlist][2] 来测试你的浏览器是否支持这个编码器。
|
||||
|
||||
它们中的一些播放器也可以作为 **flatpak** 格式的应用程序来使用。如果与传统的软件包管理器相比,你更喜欢 flatpak 格式的应用程序,你可以安装它们。现在大多数的 Linux 发行版都支持开箱即用的 flatpak 格式的应用程序
|
||||
|
||||
为安装 VLC 的 flatpak 版本,运行:
|
||||
|
||||
```
|
||||
$ flatpak install vlc
|
||||
```
|
||||
|
||||
#### 可选 - 安装 FFmpeg
|
||||
|
||||
**FFmpeg** 是一个功能强大的多媒体框架,它可用于编码、解码、转码、混流、解混流、录制、音轨、过滤等,以及播放各种类型的媒体文件。你可以通过在你的系统上安装 FFmpeg 来获取相应的解码器。
|
||||
|
||||
* [如何在 Linux 中安装 FFmpeg][3]
|
||||
|
||||
希望这有帮助。
|
||||
|
||||
**相关阅读:**
|
||||
|
||||
* [在 Fedora Silverblue 中的 Chromium 和 Firefox 上启用 H264][4]
|
||||
* [如何在 OpenSUSE 中安装多媒体解码器][5]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://ostechnix.com/how-to-install-multimedia-codecs-in-fedora-linux/
|
||||
|
||||
作者:[sk][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[robsean](https://github.com/robsean)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://ostechnix.com/author/sk/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://ostechnix.com/how-to-enable-rpm-fusion-repository-in-fedora-rhel/
|
||||
[2]: https://www.youtube.com/playlist?list=PLyqf6gJt7KuHBmeVzZteZUlNUQAVLwrZS
|
||||
[3]: https://ostechnix.com/install-ffmpeg-linux/
|
||||
[4]: https://ostechnix.com/enable-h264-on-chromium-and-firefox-in-fedora-silverblue/
|
||||
[5]: https://ostechnix.com/how-to-install-multimedia-codecs-in-opensuse/
|
||||
|
@ -0,0 +1,69 @@
|
||||
[#]: subject: "Fudgie? The Awesome Budgie Desktop is Coming to Fedora Linux Soon"
|
||||
[#]: via: "https://news.itsfoss.com/fudgie-fedora-budgie-announcement/"
|
||||
[#]: author: "Abhishek https://news.itsfoss.com/author/root/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14610-1.html"
|
||||
|
||||
Fudgie?令人惊叹的 Budgie 桌面即将登陆 Fedora Linux
|
||||
======
|
||||
|
||||
> Fedora 用户也将能够享受 Budgie 桌面环境的现代体验。
|
||||
|
||||
![Fedora Budgie][1]
|
||||
|
||||
近来,红帽的社区项目 Fedora 已经获得了相当不错的用户群。除了默认桌面 GNOME 外,Fedora 也以 <ruby>[Fedora 定制版][2]<rt>Fedora Spins</rt></ruby> 的形式提供了多种其他桌面环境。
|
||||
|
||||
这意味着你可以在 Fedora 上享受 KDE、MATE、Xfce 和其他一些桌面环境的开箱即用的体验,而无需额外的努力。喜欢 KDE 而不是 GNOME 吗?下载 Fedora 的 KDE 定制版,安装它,就像安装常规的 Fedora 一样。
|
||||
|
||||
Fedora 定制版中缺少的一个桌面环境是 Budgie 桌面。
|
||||
|
||||
### Budgie 走向独立
|
||||
|
||||
在 2014 年左右,Budgie 桌面随同 Solus Linux 项目一起推出。最近,Solus 和 Budgie 项目出现了一些 [倒退式的发展][3]。Budgie 项目现在已经 [从 Solus Linux 中独立出来了][4]。
|
||||
|
||||
自从首次发布以来,Budgie 就获得了一定的追随者。它的现代布局方式受到了许多 Linux 用户的喜爱。这也是许多其他主要 Linux 发行版(如 Ubuntu、Manjaro、openSUSE)开始提供 Budgie 版本的原因。
|
||||
|
||||
![Budgie 10.6][5]
|
||||
|
||||
到目前为止,Fedora 的产品中还没有 Budgie,但这可能会在 Fedora 的下一个版本中发生变化。
|
||||
|
||||
### Budgie 提交加入 Fedora 的申请
|
||||
|
||||
Budgie 项目的首席开发人员 Joshua Strobl 在 [Reddit 帖子][6] 中宣布了这一消息。
|
||||
|
||||
> 我现在已提交 Budgie 桌面及其它的附属软件(Budgie 控制中心、Budgie 屏幕保护程序、Budgie 桌面视图)加入到 Fedora 中的申请。从 Fedora rawhide(37)开始并向后移植到 36。它会得到“官方的”维护/支持,因为我自己在工作笔记本电脑上使用 Fedora Silverblue + rawhide,并且我以后会切换桌面到 Fedora Silverblue。
|
||||
|
||||
这意味着,如果该软件包得到了 Fedora 团队的批准,你应该就能在 Fedora 37 中(甚至有希望在 Fedora 36 中)安装 Budgie 和它的附属软件。
|
||||
|
||||
但这还不是故事的结束。Joshua 提到,他也在考虑引入并支持包含 Budgie 桌面的 Fedora 官方定制版。这意味着人们将能够下载一个预装了 Budgie(而不是 GNOME)桌面的 Fedora ISO。
|
||||
|
||||
目前还不清楚他的意思,有可能是一个 Budge 的 Fedora 官方定制版,也有可能是一个新的非官方的 Fedora 衍生版,名为 “Fudgie”,完全由他来维护。
|
||||
|
||||
### Fedora + Budgie 是一个好消息
|
||||
|
||||
无论如何,Fedora 的 Budgie 桌面都是个好消息。它为 Fedora 用户提供了更多选择,而 Budgie 是一个漂亮的桌面。同时喜欢 Fedora 和 Budgie 的人应该能够享受两全其美的体验。
|
||||
|
||||
我希望你同意我的看法。请在评论区也分享一下你的看法吧!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/fudgie-fedora-budgie-announcement/
|
||||
|
||||
作者:[Abhishek][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/root/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://news.itsfoss.com/wp-content/uploads/2022/05/fedora-budgie.png
|
||||
[2]: https://spins.fedoraproject.org
|
||||
[3]: https://news.itsfoss.com/solus-co-lead-resign-budgie-serpent/
|
||||
[4]: https://news.itsfoss.com/budgie-10-6-release/
|
||||
[5]: https://news.itsfoss.com/wp-content/uploads/2022/04/budgie-10.61-1024x576.jpg
|
||||
[6]: https://www.reddit.com/r/Fedora/comments/uq3gah/budgie_desktop_has_now_been_submitted_for/
|
@ -0,0 +1,102 @@
|
||||
[#]: subject: "How To Reset Root Password In Fedora 36"
|
||||
[#]: via: "https://ostechnix.com/reset-root-password-in-fedora/"
|
||||
[#]: author: "sk https://ostechnix.com/author/sk/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: "turbokernel"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14638-1.html"
|
||||
|
||||
在 Fedora 36 中如何重置 root 密码
|
||||
======
|
||||
|
||||

|
||||
|
||||
> 在 Fedora 中重置忘记的 root 密码。
|
||||
|
||||
你是否忘记了 Fedora 中的 root 密码?或者你想更改 Fedora 系统中的 root 用户密码?没问题!本手册将指导你在 Fedora 操作系统中完成更改或重置 root 密码的步骤。
|
||||
|
||||
**注意:** 本手册已在 Fedora 36 和 35 版本上进行了正式测试。下面提供的步骤与在 Fedora Silverblue 和旧 Fedora 版本中重置 root 密码的步骤相同。
|
||||
|
||||
**步骤 1** - 打开 Fedora 系统并按下 `ESC` 键,直到看到 GRUB 启动菜单。出现 GRUB 菜单后,选择要引导的内核并按下 `e` 编辑选定的引导条目。
|
||||
|
||||
![Grub Menu In Fedora 36][1]
|
||||
|
||||
**步骤 2** - 在下一个页面中,你将看到所有启动参数。找到名为 `ro` 的参数。
|
||||
|
||||
![Find ro Kernel Parameter In Grub Entry][2]
|
||||
|
||||
**步骤 3** - 将 `ro` 参数替换为 `rw init=/sysroot/bin/sh`。请注意 `rw` 和 `init=/sysroot`...之间的空格。修改后的内核参数行应如下所示。
|
||||
|
||||
![Modify Kernel Parameters][3]
|
||||
|
||||
**步骤 4** - 上述步骤更改参数后,按 `Ctrl+x` 进入紧急模式,即单用户模式。
|
||||
|
||||
在紧急模式下,输入以下命令以 **读/写** 模式挂载根文件系统(`/`)。
|
||||
|
||||
```
|
||||
chroot /sysroot/
|
||||
```
|
||||
|
||||
![Mount Root Filesystem In Read, Write Mode In Fedora Linux][4]
|
||||
|
||||
**步骤 5** - 现在使用 `passwd` 命令重置 root 密码:
|
||||
|
||||
```
|
||||
passwd root
|
||||
```
|
||||
|
||||
输入两次 root 密码。我建议使用强密码。
|
||||
|
||||
![Reset Or Change Root Password In Fedora][5]
|
||||
|
||||
**步骤 6** - 重置 root 密码后,运行以下命令在重启时启用 SELinux 重新标记:
|
||||
|
||||
```
|
||||
touch /.autorelabel
|
||||
```
|
||||
|
||||
![Enable SELinux Relabeling On Reboot In Fedora][6]
|
||||
|
||||
**步骤 7** - 最后,退出单用户模式并通过运行以下命令将 Fedora 系统重启到正常模式:
|
||||
|
||||
```
|
||||
exit
|
||||
```
|
||||
|
||||
```
|
||||
reboot
|
||||
```
|
||||
|
||||
等待 SELinux 重新标记完成。这将需要几分钟,具体时长取决于文件系统的大小和硬盘的速度。
|
||||
|
||||
![SELinux Filesystem Relabeling In Progress][7]
|
||||
|
||||
**步骤 8** - 文件系统重新标记完成后,你可以使用新的 root 密码登录到你的 Fedora 系统。
|
||||
|
||||
![Login To Fedora As Root User][8]
|
||||
|
||||
如你所见,在 Fedora 36 中重置 root 密码的步骤非常简单,并且与 [在 RHEL 中重置 root 密码][9] 及其衍生版本(如 CentOS、AlmaLinux 和 Rocky Linux)完全相同。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://ostechnix.com/reset-root-password-in-fedora/
|
||||
|
||||
作者:[sk][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[turbokernel](https://github.com/turbokernel)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://ostechnix.com/author/sk/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://ostechnix.com/wp-content/uploads/2022/05/Grub-Menu-In-Fedora-36.png
|
||||
[2]: https://ostechnix.com/wp-content/uploads/2021/11/Find-ro-Kernel-Parameter-In-Grub-Entry.png
|
||||
[3]: https://ostechnix.com/wp-content/uploads/2022/05/Modify-Kernel-Parameters.png
|
||||
[4]: https://ostechnix.com/wp-content/uploads/2022/05/Mount-Root-Filesystem-In-Read-Write-Mode-In-Fedora-Linux.png
|
||||
[5]: https://ostechnix.com/wp-content/uploads/2022/05/Reset-Or-Change-Root-Password-In-Fedora.png
|
||||
[6]: https://ostechnix.com/wp-content/uploads/2022/05/Enable-SELinux-Relabeling-On-Reboot-In-Fedora.png
|
||||
[7]: https://ostechnix.com/wp-content/uploads/2021/11/SELinux-filesystem-relabeling-in-progress.png
|
||||
[8]: https://ostechnix.com/wp-content/uploads/2022/05/Login-To-Fedora-As-Root-User.png
|
||||
[9]: https://ostechnix.com/how-to-reset-root-user-password-in-centos-8-rhel-8/
|
@ -0,0 +1,81 @@
|
||||
[#]: subject: "Microsoft has another Linux distribution and it is based on Debian"
|
||||
[#]: via: "https://news.itsfoss.com/microsoft-debian-distro/"
|
||||
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "wxy"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14604-1.html"
|
||||
|
||||
微软还有另一个 Linux 发行版,而且是基于 Debian 的
|
||||
======
|
||||
|
||||
> 微软一直在为 Azure 云使用一个基于 Debian 的 Linux 发行版。我们开始揭开它的面纱了!
|
||||
|
||||
![微软 Debian][1]
|
||||
|
||||
微软在其大量的项目中利用了 Linux。近年来,你一定读过很多关于 WSL(或 WSL2)和微软制作的 Linux 发行版(即 **CBL Mariner**)的消息。
|
||||
|
||||
> CBL 是 “共用基础 Linux<rt>Common Base Linux</rt></ruby>”的缩写。
|
||||
|
||||
甚至在 Windows 11 上,微软也在不断地改进 [WSL][2] 的体验。
|
||||
|
||||
虽然 CBL Mariner 被用来支持 WSLg(WSL 2 的 GUI 部分)和 Azure,但最近一些媒体([ZDNet][3])报道发现了微软内部使用的另一个 Linux 发行版。
|
||||
|
||||
微软肯定喜欢 Linux,对吗?
|
||||
|
||||
### CBL-Delridge:一个基于 Debian 的 Linux 发行版
|
||||
|
||||
![][4]
|
||||
|
||||
微软维护着一个基于 Debian 的发行版,它被用来支持 Azure 的“<ruby>云端外壳<rt>Cloud Shell</rt></ruby>”。它的名字是 “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/
|
@ -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 弥补了<ruby>弹性分布式数据集<rt>resilient distributed data sets</rt></ruby>(RDD)和关系表之间的差距。RDD 是 Spark 的基本数据结构。它将数据作为分布式对象存储在适合并行处理的节点集群中。RDD 很适合底层处理,但在运行时很难调试,程序员不能自动推断<ruby>模式<rt>schema</rt></ruby>。另外,RDD 没有内置的优化功能。Spark SQL 提供了<ruby>数据帧<rt>DataFrame</rt></ruby>和数据集来解决这些问题。
|
||||
|
||||
Spark SQL 可以使用现有的 Hive 元存储、SerDes 和 UDF。它可以使用 JDBC/ODBC 连接到现有的 BI 工具。
|
||||
|
||||
### 数据源
|
||||
|
||||
大数据处理通常需要处理不同的文件类型和数据源(关系型和非关系型)的能力。Spark SQL 支持一个统一的数据帧接口来处理不同类型的源,如下所示。
|
||||
|
||||
* 文件:
|
||||
* 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 在“<ruby>洗牌<rt>shuffle</rt></ruby>”操作后确定最佳的分区数量。在 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
|
@ -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 设置的能力。
|
||||
|
||||
### 其他改进
|
||||
|
||||
除了上面的主要亮点外,还有其他的一些重大变化,包括:
|
||||
|
||||
* 两种新的画布捕捉模式有助于对齐对象
|
||||
* 你可以在“<ruby>填充和描边<rt>Fill and Stroke</rt></ruby>”对话框中选择渐变
|
||||
* 编辑<ruby>标记<rt>marker</rt></ruby>的能力
|
||||
* 改进了与扩展的兼容性
|
||||
* 更新了 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/
|
@ -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 已经出现在许多黑客相关的电视节目/电影(如《<ruby>黑客军团<rt>Mr. Robot</rt></ruby>》)中,看起来酷极了。
|
||||
|
||||
更进一步,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/
|
@ -0,0 +1,56 @@
|
||||
[#]: subject: "Five common mistakes when using automation"
|
||||
[#]: via: "https://fedoramagazine.org/five-common-mistakes-when-using-automation/"
|
||||
[#]: author: "Gary Scarborough https://fedoramagazine.org/author/gscarbor/"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14657-1.html"
|
||||
|
||||
使用自动化时的五个常见错误
|
||||
======
|
||||
|
||||

|
||||
|
||||
随着自动化扩展到涵盖 IT 的更多方面,越来越多的管理员正在学习自动化技能并应用它们来减轻他们的工作量。自动化可以减轻重复性任务的负担,并为基础设施增加一定程度的一致性。但是,当 IT 工作人员部署自动化时,会出现可能对大大小小的基础设施造成严重破坏的常见错误。在自动化部署中通常会出现五个常见错误。
|
||||
|
||||
### 缺乏测试
|
||||
|
||||
初学者常犯的错误是自动化脚本没有经过全面测试。由于拼写错误或逻辑错误,简单的 shell 脚本可能会对服务器产生不利影响。将该错误乘以基础架构中的服务器数量,你可能会遇到一大堆问题需要清理。在大规模部署之前始终测试你的自动化脚本。
|
||||
|
||||
### 意外负载
|
||||
|
||||
经常发生的第二个错误是没有预测脚本可能对其他资源施加的系统负载。当目标是十几个服务器时,运行从仓库下载文件或安装包的脚本可能没问题。脚本通常在成百上千台服务器上运行。这种负载可以使支持服务停止或完全崩溃。不要忘记考虑端点影响或设置合理的并发率。
|
||||
|
||||
### 离开脚本
|
||||
|
||||
自动化工具的一种用途是确保符合标准设置。自动化可以轻松确保组中的每台服务器都具有完全相同的设置。如果该组中的服务器需要根据该基线进行更改,同时管理员不了解合规标准,那么可能会出现问题。安装和启用不需要和不想要的服务,从而导致可能的安全问题。
|
||||
|
||||
### 缺乏文档
|
||||
|
||||
管理员的一项固定职责应该是记录他们的工作。由于合同到期、升职或定期员工流动,公司可能会在 IT 部门频繁招聘新员工。公司内的工作组相互隔离也很常见。由于这些原因,重要的是记录哪些自动化已经到位。与用户运行脚本不同,自动化可能会在创建它的人离开组之后继续很长时间。管理员可能会发现自己在其基础设施中面临着来自未经检查的自动化的奇怪行为。
|
||||
|
||||
### 缺乏经验
|
||||
|
||||
列表中的最后一个错误是管理员对他们正在自动化的系统不够了解。管理员经常被雇用到他们没有接受过足够培训且没有人可以求教的职位上工作。自 COVID 以来,当公司努力填补空缺时,这一点尤其重要。然后管理员被迫处理他们没有设置并且可能不完全理解的基础设施。这可能会导致非常低效的脚本浪费资源或配置错误的服务器。
|
||||
|
||||
### 结论
|
||||
|
||||
越来越多的管理员正在学习自动化来帮助他们完成日常任务。因此,自动化正被应用于更多的技术领域。希望此列表将有助于防止新用户犯这些错误,并敦促经验丰富的管理员重新评估他们的 IT 策略。自动化旨在减轻重复性任务的负担,而不是为最终用户带来更多工作。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://fedoramagazine.org/five-common-mistakes-when-using-automation/
|
||||
|
||||
作者:[Gary Scarborough][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://fedoramagazine.org/author/gscarbor/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://fedoramagazine.org/wp-content/uploads/2022/05/modern-times-816x345.jpg
|
||||
[2]: https://en.wikipedia.org/wiki/Modern_Times_(film)
|
||||
[3]: https://commons.wikimedia.org/wiki/File:Chaplin_-_Modern_Times.jpg
|
@ -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] 中宣布了这项名为 “<ruby>安心开源软件<rt>Assured Open Source Software</rt></ruby>” 的新服务。在博文中,谷歌云安全和隐私部门产品经理 Andy Chang 强调了保障开源软件的一些问题,并强调了谷歌对开源的承诺。
|
||||
|
||||
“开发者社区、企业及政府对软件供应链风险的意识越来越强,”Chang 写道,并以去年的 log4j 重大漏洞为例。“谷歌仍是开源代码最大的维护者、贡献者和使用者之一,并深入参与了帮助开源软件生态系统更加安全的工作。”
|
||||
|
||||
据谷歌称,“安心开源软件”服务将让云客户能够访问谷歌的大量软件审计知识。另据其称,所有通过该服务提供的开源软件包也在公司内部使用,该公司会定期检查和分析其漏洞。
|
||||
|
||||
谷歌目前正在审核的 550 个重要开源库的清单可以在 [GitHub][3] 上找到。虽然这些库都可以独立于谷歌下载,但该计划将呈现通过谷歌云提供的审核版本,防止开发者破坏广泛使用的开放源码库。这项服务现在处于预先体验阶段,将在 2022 年第三季度准备好进行更广泛的消费者测试。
|
||||
|
||||
谷歌的声明只是广大行业努力加强开源软件供应链的安全的一部分,这份努力得到了拜登政府的支持。今年 1 月,美国国土安全部和美国网络安全与基础设施安全局的代表与美国一些主要 IT 公司的高管会面,研究 log4j 漏洞之后的开源软件安全问题。此后,有关公司在最近的一次峰会上承诺提供超过 3000 万美元的资金,以改善开源软件的安全问题。
|
||||
|
||||
除了现金,谷歌还在投入工程时间来确保供应链的安全。该公司已宣布发展一个“<ruby>开源维护小组<rt>Open Source Maintenance Crew</rt></ruby>”,该团队将与库维护人员合作以提高安全性。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
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
|
@ -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 桌面环境中,以及从服务器版本中的 <ruby>恢复<rt>rescue</rt></ruby> 模式中重新设置 sudo 密码。
|
||||
|
||||
### 介绍
|
||||
|
||||
在 [安装 Ubuntu][1] 时,创建的一个新用户将会带有 `sudo` 权限,用以执行各种各样的管理任务。
|
||||
|
||||
如果你的 Ubuntu 系统有多个 `sudo` 用户,你能够从另外一个 `sudo` 用户的账号下,轻松地重新设置所忘记的一个 `sudo` 用户或管理员用户的密码。
|
||||
|
||||
如果你只有一个 `sudo` 用户,并且忘记了密码怎么办?没有问题! 从 Ubuntu 的 <ruby>恢复<rt>rescue</rt></ruby> 或 <ruby>单一用户<rt>single user</rt></ruby> 模式中恢复 `sudo` 用户密码很容易。
|
||||
|
||||
虽然这篇指南是在 Ubuntu 22.04 和 20.04 LTS 版本上进行的正式测试,不过,下面给定的步骤对于其它的 Ubuntu 版本和衍生版本来说是相同的。
|
||||
|
||||
### 在 Ubuntu 22.04 / 20.04 LTS 中重新设置 sudo 密码
|
||||
|
||||
首先,启动你的 Ubuntu 系统到 <ruby>恢复<rt>rescue</rt></ruby> 模式下,来重新设置一个 `sudo` 用户的密码,操作如下面的链接所述。
|
||||
|
||||
> [如何启动到 Ubuntu 22.04 / 20.04 / 18.04 的 <ruby>恢复<rt>rescue</rt></ruby> 模式 或 <ruby>急救<rt>Emergency</rt></ruby>模式 ][2]
|
||||
|
||||
现在,进入到 <ruby>恢复<rt>rescue</rt></ruby> 模式下,通过运行下面的命令,以读/写的模式挂载根(`/`)文件系统:
|
||||
|
||||
```
|
||||
# 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 进入到 <ruby>恢复<rt>rescue</rt></ruby> 模式,按下 `Ctrl+d` 组合键来启动到正常模式。或者,你也可以输入下面的任意一个命令来启动到正常模式。
|
||||
|
||||
```
|
||||
# systemctl default
|
||||
```
|
||||
|
||||
或,
|
||||
|
||||
```
|
||||
# exit
|
||||
```
|
||||
|
||||
如果你想重新启动系统,而不是启动到正常模式,输入:
|
||||
|
||||
```
|
||||
# systemctl reboot
|
||||
```
|
||||
|
||||
如果你已经按照上面链接所述的方法 2 进入到<ruby>恢复<rt>rescue</rt></ruby> 模式,输入:
|
||||
|
||||
```
|
||||
# exit
|
||||
```
|
||||
|
||||
你将返回到 <ruby>恢复菜单<rt>recovery menu</rt></ruby>。现在选择 “<ruby>恢复正常启动<rt>Resume normal boot</rt></ruby>”,并按下回车键。
|
||||
|
||||
![Boot Into Normal Mode In Ubuntu][4]
|
||||
|
||||
在强调一次,选择 “<ruby>确定<rt>OK</rt></ruby>” 按钮,并按下回车按键来继续启动到正常模式:
|
||||
|
||||
![Exit Recovery Mode And Boot Into Normal Mode][5]
|
||||
|
||||
现在,你在运行管理命令时可以使用新的 `sudo` 密码。
|
||||
|
||||
### 如果我把用户名称和密码都忘了怎么办?
|
||||
|
||||
如果你忘记了用户名称,在 <ruby>恢复<rt>rescue</rt></ruby> 模式下,你可以很容易地列出你的 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
|
@ -0,0 +1,143 @@
|
||||
[#]: subject: "ONLYOFFICE 7.1 Release Adds ARM Compatibility, a New PDF Viewer, and More Features"
|
||||
[#]: via: "https://news.itsfoss.com/onlyoffice-7-1-release/"
|
||||
[#]: author: "Jacob Crume https://news.itsfoss.com/author/jacob/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "PeterPan0106"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14630-1.html"
|
||||
|
||||
ONLYOFFICE 7.1 发布,新增针对 ARM 的支持、新的 PDF 查看器
|
||||
======
|
||||
|
||||
> ONLYOFFICE Docs 7.1 带来了期待已久的针对文档、电子表格以及演示文稿编辑器的更新。对 ARM 的支持更是画龙点睛之笔。
|
||||
|
||||
![onlyoffice 7.1][1]
|
||||
|
||||
ONLYOFFICE,被认为是 [最佳的微软 Office 替代品][2] 之一,刚刚发布了最新的 7.1 版本更新。
|
||||
|
||||
或许你不了解,ONLYOFFICE 可以在自托管的服务器(例如 Nextcloud)或者桌面上在线使用。
|
||||
|
||||
这个版本最为激动人心的变化就是初步支持了基于 ARM 的设备,例如树莓派。
|
||||
|
||||
接下来请让我们一起看看有什么新的变化。
|
||||
|
||||
### ONLYOFFICE 7.1 : 新变化
|
||||
|
||||
[![ONLYOFFICE Docs 7.1: PDF viewer, animations, print preview in spreadsheets][4]][3]
|
||||
|
||||
除了对 ARM 的支持,ONLYOFFICE 7.1 还提供了如下新功能:
|
||||
|
||||
* 一个全新的 PDF、XPS 和 DjVu 文件查看器
|
||||
* 更方便和可定制的图形选项
|
||||
* 电子表格打印预览
|
||||
* 演示文稿中的动画
|
||||
* 支持 SmartArt 对象
|
||||
|
||||
#### ARM 兼容
|
||||
|
||||
树莓派这样的基于 ARM 的设备正变得越来越热门,许多人已经期待了许久 ONLYOFFICE 对 ARM 架构的支持。
|
||||
|
||||
随着 7.1 版本的发布,ONLYOFFICE Docs 现在可以在所有 ARM64 设备上运行。由于 ARM 设备的效率和安全性的提高,我认为这将对 ONLYOFFICE 的未来产生很大的促进作用。
|
||||
|
||||
#### 全新的 PDF、XPS 和 DjVu 文件查看器
|
||||
|
||||
![onlyoffice][5]
|
||||
|
||||
这是许多其他办公软件多年来的一个关键功能。从 ONLYOFFICE 7.1 开始,用户现在可以更方便地使用文档编辑器来查看 PDF、XPS 和 DjVu 文件。
|
||||
|
||||
新的视图选项卡为用户提供了一个页面缩略图视图和一个导航栏,其视图更为紧凑和简化。
|
||||
|
||||
此外,用户现在还可以将 PDF 文件转换为 DOCX 文件,以便对其进行编辑。因此,我们不用再额外打开其他软件进行处理了,这将显著优化现有的工作流并消除瓶颈。
|
||||
|
||||
#### 选择和编辑图形更加方便
|
||||
|
||||
![onlyoffice][6]
|
||||
|
||||
图形做为现代办公软件的特性,在许多时候并没能发挥足够的作用。尽管 ONLYOFFICE 拥有这些功能已经有一段时间了,但它们在使用时总是相当笨重。
|
||||
|
||||
在 ONLYOFFICE 7.1 中,重新设计的图形选择菜单使得这种情况得到了改变。这个新的菜单与微软 Office 的同类产品非常相似,每个图标都可以从菜单中看到。
|
||||
|
||||
此外,它现在可以显示最近使用的图形,使批量插入图形更加容易。
|
||||
|
||||
图形的最后一项改进是能够使用鼠标来编辑它们。对于那些熟悉 Inkscape 等图形设计软件的人来说,这将会相当得心应手。通过简单地拖动点,你将可以在短时间内创建一个独特的形状。
|
||||
|
||||
#### 电子表格的打印预览
|
||||
|
||||
![][7]
|
||||
|
||||
我相信每个人都发生过由于一个简单的错误而导致打印出现问题的情况。此前其他程序早已经解决了这个问题,但在 ONLYOFFICE 电子表格编辑器中一直没有这个功能。
|
||||
|
||||
新版本终于引入了“打印预览”,这将会显著改善上述的情况。
|
||||
|
||||
这并不算什么十分新颖的更新,只是说它补齐了短板并且可以节省纸张和打印耗材。
|
||||
|
||||
#### 改进的动画页面,便捷的剪切和复制
|
||||
|
||||
![][8]
|
||||
|
||||
针对需要经常使用演示文稿的用户而言,这个版本增加了一个单独的动画标签,使动画的插入变得更为容易。
|
||||
|
||||
ONLYOFFICE 7.1 演示文稿编辑器现在支持各种动画,以及便捷地将一页幻灯片移动以及复制的能力。
|
||||
|
||||
#### SmartArt 对象的支持
|
||||
|
||||
SmartArt 是一种在文档、演示文稿和电子表格中便捷地制作自定义图形的工具。然而,它一直是微软办公软件的一个功能。虽然其他各种应用程序对该格式有不同程度的支持,但它们并不能与微软 Office 相媲美。
|
||||
|
||||
幸运的是,ONLYOFFICE 7.1 现在完全支持这种格式,并且没有任何乱码,仿佛原生的一般。用户将不再需要和以前一样在将 SmartArt 图形转换为普通图形和数字,便于无缝切换。
|
||||
|
||||
### 其他变化
|
||||
|
||||
ONLYOFFICE 7.1 的其他重要改进包括:
|
||||
|
||||
* 新的客户端语言:加利西亚语和阿塞拜疆语
|
||||
* 在受密码保护的文件中,能够在输入密码的同时查看密码
|
||||
* OFORM 文件支持缩放选项
|
||||
* 能够按用户组过滤评论
|
||||
* 支持金字塔图表
|
||||
* 支持金字塔柱状图
|
||||
* 支持垂直和水平圆柱图
|
||||
* 支持垂直和水平圆锥图
|
||||
* 上下文菜单中的移动和复制幻灯片选项
|
||||
* 公式工具提示
|
||||
* 新的货币格式支持
|
||||
|
||||
若想了解全部新特性,请见 [发布日志][9]。
|
||||
|
||||
### 下载 ONLYOFFICE 7.1
|
||||
|
||||
总的来说,ONLYOFFICE 7.1 是一个兼容 ARM 并且功能更为丰富的版本。
|
||||
|
||||
所有版本(企业版、开发版者、社区版)都有更新。
|
||||
|
||||
下载方面提供了很多不同的软件包,包括用于 ARM 版本的 Docker 镜像、 Snap 软件包以及用于云供应商的即点即用选项。你可以前往下载页面,寻找最合适的安装程序。
|
||||
|
||||
下载页面同时列出了安装的官方指南。
|
||||
|
||||
> **[获取 ONLYOFFICE 7.1][10]**
|
||||
|
||||
*你是否已经尝试了新版本呢?*
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/onlyoffice-7-1-release/
|
||||
|
||||
作者:[Jacob Crume][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[PeterPan0106](https://github.com/PeterPan0106)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://news.itsfoss.com/author/jacob/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://news.itsfoss.com/wp-content/uploads/2022/05/onlyoffice-7-1.jpg
|
||||
[2]: https://itsfoss.com/best-free-open-source-alternatives-microsoft-office/
|
||||
[3]: https://youtu.be/5-ervHAemZc
|
||||
[4]: https://i.ytimg.com/vi/5-ervHAemZc/hqdefault.jpg
|
||||
[5]: https://news.itsfoss.com/wp-content/uploads/2022/05/ONLYOFFICE-viewer.png
|
||||
[6]: https://news.itsfoss.com/wp-content/uploads/2022/05/ONLYOFFICE-shapes.png
|
||||
[7]: https://news.itsfoss.com/wp-content/uploads/2022/05/ONLYOFFICE-Print-Preview.png
|
||||
[8]: https://news.itsfoss.com/wp-content/uploads/2022/05/ONLYOFFICE-Animations.png
|
||||
[9]: https://www.onlyoffice.com/blog/2022/05/discover-onlyoffice-docs-v7-1/
|
||||
[10]: https://www.onlyoffice.com/download-docs.aspx
|
@ -0,0 +1,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
|
@ -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 语言编写的源文件代码,使用了标准的英语术语,因而人们可以方便阅读。然而,计算机只能理解二进制代码。为将代码转换为机器语言,你需要使用一种被称为 <ruby>编译器<rt>compiler</rt></ruby> 的工具。
|
||||
|
||||
最常见的编译器是 GCC(<ruby>GNU 编译器集<rt>GNU Compiler Collection</rt></ruby>)。编译过程涉及到一系列的中间步骤及相关工具。
|
||||
|
||||
### 安装 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 <stdio.h>
|
||||
|
||||
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. <ruby>预处理<rt>Pre-Processing</rt></ruby>:GNU 的 C 预处理器(cpp)解析头文件(`#include` 语句),展开 <ruby>宏<rt>macros </rt></ruby> 定义(`#define` 语句),并使用展开的源文件代码来生成一个中间文件,如 `hellogcc.i`。
|
||||
2. <ruby>编译<rt>Compilation</rt></ruby>:在这个期间中,编译器将预处理的源文件代码转换为指定 CPU 架构的汇编代码。由此生成是汇编文件使用一个 `.s` 扩展名来命名,如在这个示例中的 `hellogcc.s` 。
|
||||
3. <ruby>汇编<rt>Assembly</rt></ruby>:汇编程序(`as`)将汇编代码转换为目标机器代码,放在目标文件中,例如 `hellogcc.o` 。
|
||||
4. <ruby>链接<rt>Linking</rt></ruby>:链接器(`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` 错误。你必须找出适合的链接器选项来链接必要的库以解决这个问题。这不是一个小技巧,它取决于你的系统的布局。
|
||||
|
||||
在链接时,你必须链接代码到<ruby>核心运行时<rt>core runtime</rt></ruby>(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!
|
||||
```
|
||||
|
||||
### 一些有用的实用程序
|
||||
|
||||
下面是一些帮助检查文件类型、<ruby>符号表<rt>symbol tables</rt></ruby> 和链接到可执行文件的库的实用程序。
|
||||
|
||||
使用 `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` 实用程序可以列出 <ruby>符号表<rt>symbol tables</rt></ruby> :
|
||||
|
||||
```
|
||||
$ 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 编译中的各种中间步骤,和检查文件类型、<ruby>符号表<rt>symbol tables</rt></ruby> 和链接到可执行文件的库的实用程序。在你下次使用 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
|
@ -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
|
||||
```
|
||||
|
||||
打开扩展管理器应用,并安装两个扩展。第一个是 “<ruby>浮动停靠区<rt>Floating Dock</rt></ruby>”,它提供了超酷的停靠区,你可以在桌面上的任何位置移动它。第二个,安装 “<ruby>用户主题<rt>User themes</rt></ruby>” 扩展来帮助你在 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/<user name>/.fonts` 文件夹。
|
||||
|
||||
最后,再次重启系统。
|
||||
|
||||
#### 配置
|
||||
|
||||
打开扩展管理器,启用 “<ruby>浮动停靠区<rt>Floating Dock</rt></ruby>” 和 “<ruby>用户主题<rt>User themes</rt></ruby>”,并禁用 “Ubuntu Dock”。
|
||||
|
||||
![Changes to Extensions][11]
|
||||
|
||||
此外,打开 “<ruby>浮动停靠区<rt>Floating Dock</rt></ruby>” 设置并进行以下更改:
|
||||
|
||||
![Floating Dock Settings][12]
|
||||
|
||||
此外,打开 <ruby>[GNOME 优化工具][13]<rt>GNOME Tweak Tool</rt></ruby>,然后转到<ruby>外观<rt>Appearance</rt></ruby>选项卡。设置以下内容:
|
||||
|
||||
* 光标:Bibata-Original-Ice
|
||||
* Shell 主题:Materia
|
||||
* 图标:Kora
|
||||
|
||||
除此之外,你可能还想更改字体。为此,请转到<ruby>字体<rt>Fonts</rt></ruby>选项卡并将文档和界面更改为 “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
|
@ -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 的分支机制允许多人同时处理一个项目,甚至是同一个文件。用户可以引入不同的功能,彼此独立,然后稍后将更改合并回主分支。那些专门为一个目的创建的分支,有时也被称为<ruby>主题分支<rt>topic branch</rt></ruby>,例如添加新功能或修复已知错误。
|
||||
|
||||
当你开始使用分支,了解如何管理它们会很有帮助。以下是开发者在现实世界中使用 Git 分支执行的最常见任务。
|
||||
|
||||
### 重命名分支
|
||||
|
||||
有时候,你或许会错误地命名了一个分支,或者你会想要在内容合并到主分支后,使用同一个分支在不同的错误或任务之间切换。在这种情况下,重命名主题分支就会很有帮助。
|
||||
|
||||
#### 重命名本地分支
|
||||
|
||||
1、重命名本地分支:
|
||||
|
||||
```
|
||||
$ git branch -m <old_branch_name> <new_branch_name>
|
||||
```
|
||||
|
||||
当然,这只会重命名你的分支副本。如果远程 Git 服务器上存在该分支,请继续执行后续步骤。
|
||||
|
||||
2、推送这个新分支,从而创建一个新的远程分支:
|
||||
|
||||
```
|
||||
$ git push origin <new_branch_name>
|
||||
```
|
||||
|
||||
3、删除旧的远程分支:
|
||||
|
||||
```
|
||||
$ git push origin -d -f <old_branch_name>
|
||||
```
|
||||
|
||||
#### 重命名当前分支
|
||||
|
||||
当你要重命名的分支恰好是当前分支时,你不需要指定旧的分支名称。
|
||||
|
||||
1、重命名当前分支:
|
||||
|
||||
```
|
||||
$ git branch -m <new_branch_name>
|
||||
```
|
||||
|
||||
2、推送新分支,从而创建一个新的远程分支:
|
||||
|
||||
```
|
||||
$ git push origin <new_branch_name>
|
||||
```
|
||||
|
||||
3、删除旧的远程分支:
|
||||
|
||||
```
|
||||
$ git push origin -d -f <old_branch_name>
|
||||
```
|
||||
|
||||
### 使用 Git 删除本地和远程分支
|
||||
|
||||
为了保持存储库的整洁,通常建议你在确保已将内容合并到主分支后,删除临时分支。
|
||||
|
||||
#### 删除本地分支
|
||||
|
||||
删除本地分支只会删除系统上存在的该分支的副本。如果分支已经被推送到远程存储库,它仍然可供使用该存储库的每个人使用。
|
||||
|
||||
1、签出存储库的主分支(例如 `main` 或 `master`):
|
||||
|
||||
```
|
||||
$ git checkout <central_branch_name>
|
||||
```
|
||||
|
||||
2、列出所有分支(本地和远程):
|
||||
|
||||
```
|
||||
$ git branch -a
|
||||
```
|
||||
|
||||
3、删除本地分支:
|
||||
|
||||
```
|
||||
$ git branch -d <name_of_the_branch>
|
||||
```
|
||||
|
||||
要删除所有本地主题分支并仅保留 `main` 分支:
|
||||
|
||||
```
|
||||
$ git branch | grep -v main | xargs git branch -d
|
||||
```
|
||||
|
||||
#### 删除远程分支
|
||||
|
||||
删除远程分支只会删除远程服务器上存在的该分支的副本。如果你想撤销删除,也可以将其重新推送到远程(例如 GitHub),只要你还有本地副本即可。
|
||||
|
||||
1、签出存储库的主分支(通常是 `main` 或 `master`):
|
||||
|
||||
```
|
||||
$ git checkout <central_branch_name>
|
||||
```
|
||||
|
||||
2、列出所有分支(本地和远程):
|
||||
|
||||
```
|
||||
$ git branch -a
|
||||
```
|
||||
|
||||
3、删除远程分支:
|
||||
|
||||
```
|
||||
$ git push origin -d <name_of_the_branch>
|
||||
```
|
||||
|
||||
### 查看远程主题分支的作者
|
||||
|
||||
如果你是存储库管理员,你可能会有这个需求,以便通知未使用分支的作者它将被删除。
|
||||
|
||||
1、签出存储库的主分支(例如 `main` 或 `master`):
|
||||
|
||||
```
|
||||
$ git checkout <central_branch_name>
|
||||
```
|
||||
|
||||
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 <topic_branch_name>
|
||||
```
|
||||
|
||||
### 熟练运用分支
|
||||
|
||||
Git 分支的工作方式存在细微差别,具体取决于你想要分叉代码库的位置、存储库维护者如何管理分支、<ruby>压扁<rt>squashing</rt></ruby>、<ruby>变基<rt>rebasing</rt></ruby>等。若想进一步了解该主题,你可以阅读下面这三篇文章:
|
||||
|
||||
* [《用乐高来类比解释 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
|
@ -0,0 +1,67 @@
|
||||
[#]: subject: "FSF Does Not Accept Debian as a Free Distribution. Here’s Why!"
|
||||
[#]: via: "https://news.itsfoss.com/fsf-does-not-consider-debian-a-free-distribution/"
|
||||
[#]: author: "Abhishek https://news.itsfoss.com/author/root/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "Chao-zhi"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14628-1.html"
|
||||
|
||||
自由软件基金会为什么不认为 Debian 是一种自由发行版?
|
||||
======
|
||||
|
||||
![Why FSF doesn't consider Debian a free distribution][1]
|
||||
|
||||
Debian 项目开发了一个尊重用户自由的 GNU/Linux 发行版。在各种自由软件许可证下发布的软件中,其源代码中包含非自由组件的情形并不鲜见。这些软件在被发布到 Debian 之前会被清理掉。而<ruby>自由软件基金会<rt>Free Software Foundation</rt></ruby>(FSF)维护着一份 [自由 GNU/Linux 发行版的列表][2],但奇怪的是,Debian 并不在其中。事实上, Debian 不符合进入此列表的某些标准,我们想知道到底不满足哪些标准。但首先,我们需要了解所有这些智力工作是如何得到证明的。换句话说,为什么要费心尝试进入一些名单,尤其是这个名单?
|
||||
|
||||
为什么 Debian 应该得到 FSF 的承认,以获得它的自由发行版的地位?曾于 2010 年至 2013 年担任 Debian 项目负责人的 Stefano Zacchiroli 说过几个原因。其中一个 Stefano 称之为“外部审查”的原因我特别赞同。事实上,Debian 有其标准和质量水准,一些软件应当符合这些标准才能成为该发行版的一部分,但除了 Debian 开发人员自己,没有人能控制这个过程。如果该发行版被列入这份珍贵的清单中,那么 FSF 就会密切关注 Debian 的命运,并(在出现问题时)给予适度的批评。我相信这是很好的动力。如果你也这么认为,那么现在让我们看看 FSF 认为 Debian 不够自由的原因。
|
||||
|
||||
### Debian 社会契约
|
||||
|
||||
除了自由 GNU/Linux 发行版列表之外,FSF 还保留了一份因某种原因而被拒绝授予自由地位的 GNU/Linux 发行版的列表。对于此列表中的每个发行版,都有一个评论,简要说明了拒绝的理由。从对 Debian 的评论中可以清楚地看出,FSF 和 Debian 项目在对“自由分发”一词的解释上产生分歧的主要根源来自一份被称为 “<ruby>Debian 社会契约<rt>Debian Social Contract</rt></ruby>”的文件。
|
||||
|
||||
该社会契约的第一个版本是在 1997 年 7 月 4 日由第二任 Debian 项目领导人 Bruce Perens 发表的。作为该契约的一部分,也公布了一套被称为 <ruby>Debian 自由软件准则<rt>Debian Free Software Guidelines</rt></ruby>(DFSG)的规则。从那时起,要成为 Debian 的一部分,分发软件的许可证必须符合 DFSG。该社会契约记录了 Debian 开发者只用自由软件建立操作系统的意图,而 DFSG 则用于将软件分为自由和非自由。2004 年 4 月 26 日,批准了该文件的新版本,取代了 1997 年的版本。
|
||||
|
||||
Debian 社会契约有五条。要回答我们今天主要讨论的问题,我们只需要关注其中两条 —— 即第一条和第五条,其他的省略。可以在 [此处][3] 查看该契约的完整版本。
|
||||
|
||||
第一条说:“**Debian 将保持 100% 自由**。我们在标题为‘<ruby>Debian 自由软件准则<rt>Debian Free Software Guidelines</rt></ruby>’的文件中提供了用于确定一个作品是否‘自由’的准则。我们承诺,根据这些准则,Debian 系统及其所有组件将是自由的。我们将支持在 Debian 上创造或使用自由和非自由作品的人。我们永远不会让系统要求使用非自由组件。”
|
||||
|
||||
同时,第五条写道:“**不符合我们自由软件标准的作品**。我们承认,我们的一些用户需要使用不符合 Debian 自由软件准则的作品。我们在我们的存档中为这些作品创建了“contrib”和“non-free”区域。这些区域中的软件包并不是 Debian 系统的一部分,尽管它们已被配置为可以在 Debian 中使用。我们鼓励 CD 制造商阅读这些区域的软件包的许可证,并确定他们是否可以在其 CD 上分发这些软件包。因此,尽管非自由作品不是 Debian 的一部分,但我们支持它们的使用,并为非自由软件包提供基础设施(例如我们的错误跟踪系统和邮件列表)。”
|
||||
|
||||
因此,在实践中,第一条和第五条意味着:在安装了 Debian 之后,用户得到了一个完全而彻底的自由操作系统,但是如果他们突然想牺牲自由来追求功能,安装非自由软件,Debian 不仅不会阻碍他们这样做,而且会大大简化这一任务。
|
||||
|
||||
尽管该契约规定发行版将保持 100% 自由,但它允许官方存档的某些部分可能包含非自由软件或依赖于某些非自由组件的自由软件。形式上,根据同一契约,这些部分中的软件不是 Debian 的一部分,但 FSF 对此感到不安,因为这些部分使得在系统上安装非自由软件变得更加容易。
|
||||
|
||||
在 2011 年前,FSF 有合理的理由不认为 Debian 是自由的——该发行版附带的 Linux 内核没有清理二进制 blob。但自 2011 年 2 月发布的 Squeeze 至今,Debian 已经包含了完全自由的 Linux 内核。因此,简化非自由软件的安装是 FSF 不承认 Debian 是自由发行版的主要原因,直到 2016 年这是我知道的唯一原因,但在 2016 年初出现了问题……
|
||||
|
||||
### 等等 …… 关 Firefox 什么事?
|
||||
|
||||
很长一段时间,Debian 都包含一个名为 Iceweasel 的浏览器,它只不过是 Firefox 浏览器的更名重塑而已。进行品牌重塑有两个原因:首先,该浏览器标志和名称是 Mozilla 基金会的商标,而提供非自由软件与 DFSG 相抵触。其次,通过在发行版中包含浏览器,Debian 开发人员必须遵守 Mozilla 基金会的要求,该基金会禁止以 Firefox 的名义交付浏览器的修改版本。因此,开发人员不得不更改名称,因为他们在不断地修改浏览器的代码,以修复错误并消除漏洞。但在 2016 年初,Debian 有幸拥有一款经过修改的 Firefox 浏览器,不受上述限制,可以保留原来的名称和徽标。一方面,这是对 Debian 修改的认可,也是对 Debian 信任的体现。另一方面,该软件显然没有清除非自由组件,它现在已成为发行版的一部分。如果此时 Debian 已被列入自由 GNU/Linux 发行版列表,那么自由软件基金会将会毫不犹豫地指出这一点。
|
||||
|
||||
### 结论
|
||||
|
||||
数字世界中的自由与现实世界中的自由同样重要。在这篇文章中,我试图揭示 Debian 最重要的特性之一 —— 开发用户自由的发行版。开发人员花费额外的时间从软件中清理非自由组件,并且以 Debian 为技术基础的数十个发行版继承了它的工作,并由此获得了一部分自由。
|
||||
|
||||
另外,我想分享一个简单的看法,即自由并不像乍看起来那么简单,人们自然会去追问什么是真正的自由,而什么不是。由于 Firefox 的存在,Debian 现在不能被称为自由的 GNU/Linux 发行版。但从 2011 年,当 Debian 终于开始清理内核以及发行版的其他组件时,直到 2016 年 Firefox 成为发行版的一部分时,自由软件基金会出于纯粹的意识形态原因并不认为该发行版是自由的:原因是 Debian 大大简化了非自由软件的安装……现在轮到你来权衡所有的争论,并决定是否将 GNU/Linux 发行版视为自由的了。
|
||||
|
||||
祝你好运!并尽可能保持自由。
|
||||
|
||||
由 Evgeny Golyshev 为 [Cusdeb.com][4] 撰写
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/fsf-does-not-consider-debian-a-free-distribution/
|
||||
|
||||
作者:[Evgeny Golyshev][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[Chao-zhi](https://github.com/Chao-zhi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://news.itsfoss.com/author/root/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://news.itsfoss.com/wp-content/uploads/2022/05/why-fsf-doesnt-consider-debian-a-free-software-1200-%C3%97-675px.png
|
||||
[2]: https://gnu.org/distros/free-distros.en.html
|
||||
[3]: https://debian.org/social_contract
|
||||
[4]: https://wiki.cusdeb.com/Essays:Why_the_FSF_does_not_consider_Debian_as_a_free_distribution/en
|
@ -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 智能合约语言是一种专门设计的<ruby>特定领域语言<rt>domain specific language</rt></ruby>(DSL),用于编码应用的共享业务逻辑。它用于区块链环境中分布式应用的开发和部署。
|
||||
|
||||

|
||||
|
||||
区块链技术是一种安全机制,以一种使人难以或不可能修改或入侵的方式来跟踪信息。区块链整合了交易的数字账本,它被复制并发送至其网络上的每台计算机。在链的每个区块中,都有一些交易。当区块链上发生新的交易时,该交易的记录就会被添加到属于该链的每个人的账簿中。
|
||||
|
||||
区块链使用<ruby>分布式账本技术<rt>distributed ledger technology</rt></ruby>(DLT),其中数据库并不保存在一个服务器或节点中。在区块链中,交易被记录在一个被称为<ruby>哈希<rt>hash</rt></ruby>的不可改变的加密符号中。这意味着,如果一个通道或链上的一个区块被改变,黑客将很难改变链上的那个区块,因为他们必须对外面的每一个版本的链都要这样做。区块链,如比特币和以太坊,随着新的区块被添加到链上而不断增长,这使得账本更加安全。
|
||||
|
||||
随着区块链中智能合约的实施,在没有任何人工干预的情况下,有了自动执行的场景。智能合约技术使得执行最高级别的安全、隐私和反黑客实施成为可能。
|
||||
|
||||
![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:一种高性能的编程语言
|
||||
|
||||
<ruby>数字资产建模语言<rt>Digital Asset Modeling Language</rt></ruby>,即 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
|
@ -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/
|
@ -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/
|
@ -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
|
@ -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 可用于帮助机器学习应用实现基于模型的计算,例如<ruby>控制综合<rt>control synthesis</rt></ruby>、<ruby>状态估计<rt>state estimation</rt></ruby>、<ruby>系统识别<rt>system identification</rt></ruby>、<ruby>机制设计<rt>mechanism design</rt></ruby>、通过<ruby>逆动力学<rt>inverse dynamics</rt></ruby>来进行数据分析,以及<ruby>并行采样<rt>parallel sampling</rt></ruby>。它也可以用作标准模拟器,例如用于游戏和交互式虚拟环境。(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
|
@ -0,0 +1,76 @@
|
||||
[#]: subject: "Plex Desktop Player is Now Available for Linux"
|
||||
[#]: via: "https://news.itsfoss.com/plex-desktop-linux/"
|
||||
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14656-1.html"
|
||||
|
||||
Plex 桌面播放器现已支持 Linux
|
||||
======
|
||||
|
||||
> Plex.tv 终于增加了 Linux 桌面版本和全新的 HTPC 应用。不过,它目前只提供了 Snap 包。
|
||||
|
||||
![plex][1]
|
||||
|
||||
Plex 是一个流行的流媒体播放器,同时,它能够用作一个媒体服务器软件。
|
||||
|
||||
事实上,它也是 [Linux 上最好的媒体服务器软件][2] 之一。
|
||||
|
||||
是的,这个媒体服务器已经支持 Linux,而且还提供了一个 [包含安装步骤的教程][3]。
|
||||
|
||||
### Linux 上的 Plex 桌面播放器提供 Snap 包
|
||||
|
||||
我知道很多人都不喜欢使用 Snap 包来安装这个桌面播放器。但现在,这个桌面播放器已在 Snap 商店中提供,你可以轻松地在任何 Linux 发行版上安装它。
|
||||
|
||||
![][4]
|
||||
|
||||
幸运的是,这个桌面播放器的 [公告][5] 还提到他们正在开发一个 **Flatpak 包**,它应该会在近期登陆 Flathub。
|
||||
|
||||
这样一来,借助 Flatpak 和 Snap 软件包,Plex 就可以成为在 Linux 上流式传输和组织个人媒体收藏的绝佳选择。
|
||||
|
||||
除了桌面应用程序,如果你利用你的 Linux 机器连接到一个大屏幕来观看所有的内容,还有一个 Plex HTPC(有计划发布 Flatpak 软件包)。
|
||||
|
||||
![][6]
|
||||
|
||||
顺便说一句,HTPC 是 PMP TV(全称为 Plex Media Player TV)模式的继承者。
|
||||
|
||||
他们在官网上与它的 Linux 桌面应用程序一同发布了这款产品。
|
||||
|
||||
使用 HTPC,这个桌面应用就可以和电视共享,并支持音频直通、刷新率切换、控制器和可配置输入映射等高级功能。
|
||||
|
||||
![][7]
|
||||
|
||||
因此,如果你有一个大屏幕,并且想要连接你的系统(不管是什么桌面平台)的话,你现在可以使用 HTPC 应用程序来完成。
|
||||
|
||||
> **[Plex 桌面版][8]**
|
||||
|
||||
> **[Plex HTPC][9]**
|
||||
|
||||
在 Linux 系统或联网电视上流式传输内容时,你通常会使用什么呢?你觉得 Plex 能满足你的需求吗?即然它支持 Linux 了,你会想要用它来替代当前使用的软件吗?
|
||||
|
||||
欢迎在评论区告诉我们你的想法!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/plex-desktop-linux/
|
||||
|
||||
作者:[Ankush Das][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[lkxed](https://github.com/lkxed)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://news.itsfoss.com/author/ankush/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://news.itsfoss.com/wp-content/uploads/2022/05/plex-ft.jpg
|
||||
[2]: https://itsfoss.com/best-linux-media-server/
|
||||
[3]: https://itsfoss.com/install-plex-ubuntu/
|
||||
[4]: https://news.itsfoss.com/wp-content/uploads/2022/05/plex-desktop-ubuntu.jpg
|
||||
[5]: https://www.plex.tv/blog/way-to-be-htpc/
|
||||
[6]: https://news.itsfoss.com/wp-content/uploads/2022/05/plex-snap-1024x524.jpg
|
||||
[7]: https://news.itsfoss.com/wp-content/uploads/2022/05/plex-feat-1024x576.jpg
|
||||
[8]: https://snapcraft.io/plex-desktop
|
||||
[9]: https://snapcraft.io/plex-htpc
|
@ -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
|
@ -0,0 +1,72 @@
|
||||
[#]: subject: "Tails Linux Users Warned Against Using the Tor Browser: Here’s why!"
|
||||
[#]: via: "https://news.itsfoss.com/tails-tor-browser/"
|
||||
[#]: author: "Rishabh Moharir https://news.itsfoss.com/author/rishabh/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "lkxed"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-14654-1.html"
|
||||
|
||||
Tails 警告用户不要使用 Tor 浏览器:原因如下!
|
||||
======
|
||||
|
||||
> Tails 5.1 将针对“可绕过 Tor 浏览器安全措施的危险漏洞”提供关键修复。以下是它的全部内容。
|
||||
|
||||
![Tails][1]
|
||||
|
||||
Tails 是一个专注于安全的便携式 Linux 发行版,最近,它的开发团队发布了有关其当前版本的重要公告。他们警告用户在 **Tails 5.0 或更早版本** 上使用 Tor 浏览器时,避免输入或使用任何个人或敏感信息。
|
||||
|
||||
Tor 浏览器是 Tails 事实上的(默认)网页浏览器,它有助于在用户连接到互联网时,保护他们的在线身份。它主要被各种记者和活动家用来逃避审查。不过,普通用户也可以使用它。
|
||||
|
||||
### 问题说明
|
||||
|
||||
最近,有人发现了两个令人讨厌的漏洞,它们允许有害网站能够从其他网站窃取用户的信息。
|
||||
|
||||
这些都是在 Firefox 使用的 JavaScript 引擎中发现的。
|
||||
|
||||
但是,Tor 与此有什么关系?对于那些不知道的人来说,Tor 实际上是 Firefox 的一个复刻,因此包含许多类似的功能,如 JavaScript 引擎。
|
||||
|
||||
具体来说,在 [Mozilla 发布的公告][2] 中,这些漏洞已被确定为 CVE-2022-1802 和 CVE-2022-1529。
|
||||
|
||||
Tails 公告中也对此进行了说明:
|
||||
|
||||
> “例如,在你访问恶意网站后,控制该网站的攻击者可能会在同一个 Tails 会话期间,访问你随后发送到其他网站的密码或其他敏感信息。”
|
||||
|
||||
### 你应该停止使用 Tail 发行版吗?
|
||||
|
||||
没有这个必要。
|
||||
|
||||
用户会很高兴地知道,这些漏洞并不影响 Tor 的连接。这意味着,如果你不交换任何敏感信息,如密码、个人信息、信息等,你可以随意地浏览互联网。
|
||||
|
||||
Tails 中的其他应用程序,尤其是 Thunderbird,仍然可以安全使用,因为 JavaScript 在使用时会被禁用。
|
||||
|
||||
此外,你也可以在 Tor 浏览器中启用最高的安全级别。这是推荐的,因为(该级别下)JavaScript 引擎会被禁用。不过,请注意,这会使网站无法正常运行。
|
||||
|
||||
换句话说,如果你知道自己在做什么的话,Tails 发行版仍然可以安全使用。
|
||||
|
||||
### 漏洞修复即将发布
|
||||
|
||||
好的消息是,Mozilla 已经在上游修补了这些错误,现在就等 Tails 团队发布修复程序了。
|
||||
|
||||
至于何时发布,他们是这样说的:
|
||||
|
||||
> 此漏洞将在 Tails 5.1(**5 月 31 日**)中修复,但我们的团队没有能力提前发布紧急版本。
|
||||
|
||||
因此,你最好的选择是等待下周的 Tails 5.1 发布。你可以阅读 Tails 开发团队的 [官方公告][3] 以了解更多信息。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.itsfoss.com/tails-tor-browser/
|
||||
|
||||
作者:[Rishabh Moharir][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[lkxed](https://github.com/lkxed)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://news.itsfoss.com/author/rishabh/
|
||||
[b]: https://github.com/lkxed
|
||||
[1]: https://news.itsfoss.com/wp-content/uploads/2022/05/tails-5-0-privacy-issue.jpg
|
||||
[2]: https://www.mozilla.org/en-US/security/advisories/mfsa2022-19/
|
||||
[3]: https://tails.boum.org/security/prototype_pollution/index.en.html
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user