diff --git a/published/20210718 Is Open-Source Software Secure.md b/published/20210718 Is Open-Source Software Secure.md new file mode 100644 index 0000000000..cc02f9b43e --- /dev/null +++ b/published/20210718 Is Open-Source Software Secure.md @@ -0,0 +1,162 @@ +[#]: subject: (Is Open-Source Software Secure?) +[#]: via: (https://news.itsfoss.com/open-source-software-security/) +[#]: author: (Ankush Das https://news.itsfoss.com/author/ankush/) +[#]: collector: (lujun9972) +[#]: translator: (CanYellow) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-15423-1.html) + +开源软件安全吗? +====== + +![][0] + +作为一个偏爱 [在桌面电脑上使用 Linux][1],并鼓励使用开源软件的人,你可能期待就标题中提出的问题得到一个响亮的**肯定**回答。 + +然而,我并不打算仅限于讨论开源软件的优点。让我们一起探索更多观点! + +在本文,我计划分享我关于开源软件是否安全的思考,以及哪些事情与开源软件的安全性相关。 + +### 为什么你需要关注开源软件是否安全? + +不论你是使用 [Linux][2] 系统还是使用其他类型的操作系统,你都会在某种程度上(直接地/间接地)被开源软件所包围。 + +举个例子,大多数专有软件工具依赖于某种形式的开源库来保证其正常工作。 + +此外,各种规模的公司(包括谷歌、微软和 Facebook)依赖开源软件或者以某种途径向开源社区贡献资源是有原因的。 + +因此,开源软件的安全性是有必要了解的。 + +### 有关开源软件安全性的迷思 + +![][3] + +虽然有多种理由证明开源软件在安全性方面的缺陷,然而其中一些实际毫无意义。 + +#### 任何人都可以查看并恶意利用开源软件代码 + +是的,开源软件代码对于任何人都是可访问的。但是你可以查看代码并不意味着你可以利用它。 + +**不现实。** + +即使任何人都可以复刻(或者拷贝)该软件,原始软件也不能轻易地被修改使用。 + +通常,项目维护人员(或者维护团队)管理代码仓库,并且接受来自贡献者的提交。开源软件代码在接受之前会被审查。没有人可以就这样劫持代码。 + +**不论是开源软件还是闭源软件,攻击者都需要付出努力来利用软件中的代码漏洞或者添加恶意代码。** + +#### 没有专职团队,安全性无从谈起 + +很多人相信如果开源软件没有专职人员或者专职团队,维护软件安全性是困难的。 + +恰恰相反,由于各种各样类型的贡献者的加入与离开,开源软件获得了来自更大范围的开发者的更多关注。 + +他们可能比由专有软件所聘用的少数开发者更能够发现安全问题。 + +一些来自 Mozilla 等同类公司的项目拥有自己的专职团队来高效处理安全问题。同样的,大部分成功的开源项目拥有大量的资源用于保障安全性。 + +因此,开源软件的生态系统是安全性的组合包。即使没有专职团队,开源项目也可以得到来自各类贡献者的帮助,他们中的一些很大程度上是有利可图的,这有助于他们投入更多的精力。 + +### 开源软件是安全的,以下是原因 + +![][5] + +既然我们已经澄清了这些有关开源软件安全性的迷思,让我重点展示一下开源软件是如何处理安全问题的。 + +换句话说,开源软件在安全性上的优势。 + +请不要忘记,开源软件的优势也是 [Linux 比 Windows 更好][4] 的一些原因。 + +#### 更多的眼晴关注开源软件代码 + +不像专有软件,(对开源软件的)代码访问并不局限于少数几个开发者。 + +一些开源项目甚至可能拥有数以万记的开发者可以查看代码、审查它们并标记和修复其中的安全性问题。 + +相比闭源软件,这给予了开源项目拥有**快速识别问题并尽快修复它们的能力**的优势。 + +不仅仅限于拥有更多的开发者,企业通常也会参与他们所使用的开源项目。当他们这样做的时候,他们也会查阅代码并审查它们。 + +这提供了另一条外部审查的途径,而这可能有助于提升开源软件的安全性。 + +反之,就闭源软件而言,数量有限的开发者可能并不能找出所有种类的安全问题。而且他们可能需要花费更长的时间来一一修复发现的问题。 + +#### 社区决定安全问题的优先级 + +闭源软件的开发者可能在处理什么问题和什么时候解决问题等方面有某些限制或者优先等级。 + +而如果是开源项目,贡献者社区可以自行决定优先级,并自行安排他们想解决的问题以及决定合适修复问题。你不需要依赖于供应商的决定或者按照他们的指示来解决一个安全问题。 + +着手处理和修复安全问题的决策在开源软件项目中更加透明和灵活。因此,它可以被证明是更有效的,并为你带来以下三个益处: + + * 透明度 + * 不依赖供应商 + * 更快的安全更新 + +### 开源软件不是防弹的,以下是原因 + +![][6] + +虽然在某些情况下,开源软件可能在安全性上具有优势,然而仍有一些因素影响它。 + +承认这些问题的存在是很重要的,据此,企业或者个人可以就开源软件的安全情况做出更好的决定。 + +#### 并无足够的眼睛来审查代码和不确定性 + +即使开源软件代码可以被全世界的开发者自由访问,**项目没有足够的贡献者/开发者彻底审查开源代码**的可能性仍然存在。 + +既如此,我们不能对开源软件的同行审查抱有极高的信心,因为它恰好缺失了这一点。 + +开源软件可能“声称”拥有最高的安全性因为它们是开源的。在没有足够的开发者致力于该项目时,这是一种误导。 + +同样,我们也无从得知有多少开发者在查看/检查代码,也不知道代码的检查进行到什么程度了。 + +举例而言,[心脏出血漏洞][T1]Heartbleed 是在一个被广泛使用的项目(OpenSSL)中引入了 2 年以后才被发现的。 + +#### 软件责任与问责 + +对于个人用户这可能并不重要,但是**开源项目通常并无任何保证**。 + +因此,如果一家公司使用它,它们必须自行承担任何由该软件使用造成的数据丢失与损坏。 + +这告诉你,没有什么是 100% 安全和没有漏洞的。无论有多少眼睛聚焦在代码上或者贡献者的技术多么精湛,总会存在某种形式的风险,无论是安全风险还是数据丢失。 + +这告诉我们一个现实:开源软件并非防弹的。 + +### 开源软件有其更高安全性的优势,但是... + +就安全性而言没有什么优胜者。不论是闭源还是开源,当涉及安全问题时都适用同一套原则。 + +有很多外部因素可以影响软件安全性,而**其中很多因素并不依赖于源代码**。 + +必须以某种形式监控代码,以保证安全。 + +是的,**开源道路提供了闭源软件所不具备的优势**,但是这并不意味着开源软件是防弹的。 + +_你对开源软件安全状况有何思考?你又是否认为开源软件比专有软件解决方案更好呢?_ + +提前感谢你在下面的评论中提出的宝贵意见。 + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/open-source-software-security/ + +作者:[Ankush Das][a] +选题:[lujun9972][b] +译者:[CanYellow](https://github.com/CanYellow) +校对:[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://news.itsfoss.com/linux-foundation-linux-desktop/ +[2]: https://itsfoss.com/what-is-linux-distribution/ +[3]: https://news.itsfoss.com/content/images/wordpress/2021/07/hacker-exploit-illustration.png +[4]: https://itsfoss.com/linux-better-than-windows/ +[5]: https://news.itsfoss.com/content/images/wordpress/2021/07/open-source-security-illustration.png +[6]: https://news.itsfoss.com/content/images/wordpress/2021/07/open-source-security-issue.jpg + +[T1]: https://www.cve.org/CVERecord?id=CVE-2014-0160 +[0]: https://news.itsfoss.com/content/images/size/w2000/wordpress/2021/07/open-source-security.jpg \ No newline at end of file diff --git a/published/20210207 The Real Novelty of the ARPANET.md b/published/202210/20210207 The Real Novelty of the ARPANET.md similarity index 100% rename from published/20210207 The Real Novelty of the ARPANET.md rename to published/202210/20210207 The Real Novelty of the ARPANET.md diff --git a/published/20210415 A beginner-s guide to load balancing.md b/published/202210/20210415 A beginner-s guide to load balancing.md similarity index 100% rename from published/20210415 A beginner-s guide to load balancing.md rename to published/202210/20210415 A beginner-s guide to load balancing.md diff --git a/published/202210/20210530 Complete Guide to Configuring SSH in Ubuntu.md b/published/202210/20210530 Complete Guide to Configuring SSH in Ubuntu.md new file mode 100644 index 0000000000..44f76a5efa --- /dev/null +++ b/published/202210/20210530 Complete Guide to Configuring SSH in Ubuntu.md @@ -0,0 +1,242 @@ +[#]: subject: (Complete Guide to Configuring SSH in Ubuntu) +[#]: via: (https://itsfoss.com/set-up-ssh-ubuntu/) +[#]: author: (Chris Patrick Carias Stas https://itsfoss.com/author/chris/) +[#]: collector: (lujun9972) +[#]: translator: (Donkey-Hao) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-15175-1.html) + +在 Ubuntu 中配置 SSH 的完整指南 +====== + +![](https://img.linux.net.cn/data/attachment/album/202210/25/102118u33grazpccrvxwdf.jpg) + +> 如今 SSH 已成为了登录远程服务器的默认方式。 + +SSH 的全称是 “安全的 ShellSecure Shell”,它功能强大、效率高,这个主流的网络协议用于在两个远程终端之间建立连接。让我们不要忘记它名称的“安全”部分,SSH 会加密所有的通信流量,以防止如劫持、窃听等攻击,同时提供不同的身份认证方式和无数个配置选项。 + +在这份新手指南中,你会学到: + + - SSH 的基本概念 + - 设置 SSH 服务器(在你想要远程登录的系统上) + - 从客户端(你的电脑)通过 SSH 连接远程服务器 + +### SSH 的基本概念 + +在学习配置过程前,让我们先了解一下 SSH 的全部基础概念。 + +SSH 协议基于客户端-服务器server-client(CS)架构。“服务器Server”允许“客户端Client”通过通信通道进行连接。该信道是经过加密的,信息交换通过 SSH 公私钥进行管理。 + +![Image credit: SSH][1] + +[OpenSSH][2] 是在 Linux、BSD 和 Windows 系统上提供 SSH 功能的最流行的开源工具之一。 + +想要成功配置 SSH,你需要: + + - 在作为服务器的机器上部署 SSH 服务器组件,它由 `openssh-server` 包提供。 + - 在你远程访问服务器的客户端机器上部署 SSH 客户端组件,它由 `openssh-client` 包提供,大多数 Linux 和 BSD 发行版都已经预装好了。 + +区分服务器和客户端是十分重要的事情。或许你不想要你的 PC 作为 SSH 服务器,除非你有充分理由希望其他人通过 SSH 连接你的系统。 + +通常来说,你有一个专用的服务器系统。例如,一个 [运行 Ubuntu 的树莓派][3]。你可以 [启用树莓派的 SSH 服务][4],这样你可以在你 PC 中的终端中,通过 SSH 控制并管理该设备。 + +有了这些信息,让我们看看如何在 Ubuntu 上设置 SSH 服务器。 + +### 在 Ubuntu 服务器中配置 SSH + +设置 SSH 并不复杂,只需要以下几步。 + +#### 前提 + + - 一个在服务器端拥有 `sudo` 权限的用户 + - 可以下载所需包的互联网连接 + - 在你的网络中至少有另一个系统。可以是局域网中的另一台电脑,远程服务器或者计算机中托管的虚拟机。 + +**再次强调,在你想要通过 SSH 远程登录的系统上安装 SSH 服务。** + +#### 第一步:安装所需包 + +让我们从打开终端输入一些必要命令开始。 + +注意,在安装新的包或者软件前,要 [更新你的 Ubuntu 系统][5],以确保运行的是最新版本的程序。 + +``` +sudo apt update && sudo apt upgrade +``` + +你要运行 SSH 服务器的包由 OpensSSH 的 `openssh-server` 组件提供: + +``` +sudo apt install openssh-server +``` + +![][6] + +#### 第二步:检查服务器状态 + +当你下载并安装完包后,SSH 服务器应该已经运行了,但是为了确保万无一失我们需要检查一下: + +``` +service ssh status +``` + +你还可以使用 `systemctl` 命令: + +``` +sudo systemctl status ssh +``` + +你应该会看到这样的结果,其中 `active` 是高亮的。输入 `q` 退出该页面。 + +![][7] + +如果你的结果中 SSH 服务没有运行,使用这个命令运行它: + +``` +sudo systemctl enable --now ssh +``` + +#### 第三步:允许 SSH 通过防火墙 + +Ubuntu 带有名为 [UFW][8](简单的防火墙Uncomplicated Firewall)的防火墙,这是管理网络规则的 `iptables` 的一个接口。如果启动了防火墙,它可能会阻止你连接服务器。 + +想要配置 UFW 允许你的接入,你需要运行如下命令: + +``` +sudo ufw allow ssh +``` + +UFW 的运行状态可以通过运行 `sudo ufw status` 来检查。 + +现在,我们的 SSH 服务器已经开始运行了,在等待来自客户端的连接。 + +### 连接远程服务器 + +你本地的 Linux 系统已经安装了 SSH 客户端。如果没有,你可以在 Ubuntu 中使用如下命令安装: + +``` +sudo apt install openssh-client +``` + +要连接你的 Ubuntu 系统,你需要知道它的 IP 地址,然后使用 `ssh` 命令,就像这样: + +``` +ssh username@address +``` + +将 **用户名**(`username`)改为你的系统上的实际用户名,并将 **地址**(`address`)改为你服务器的 IP 地址。 + +如果你 [不知道 IP 地址][9],可以在服务器的终端输入 `ip a` 查看结果。应该会看到这样的结果: + +![Using “ip a” to find the IP address][10] + +可以看到我的 IP 地址是 `192.168.1.111`。让我们使用 `username@address` 格式进行连接。 + +``` +ssh team@192.168.1.111 +``` + +这是你第一次连接到该 SSH 服务器,它会请求添加主机。输入 `yes` 并回车即可。 + +![First time connecting to the server][12] + +SSH 会立即告诉你该主机已经被永久添加了,并要求你输入指定用户的密码,输入密码并再次按回车即可。 + +![Host added, now type in the password][13] + +瞧,你远程登录了你的 Ubuntu 系统! + +![Connected!][14] + +现在,你可以在远程服务器的终端里和寻常一样工作了。 + +#### 关闭 SSH 连接 + +你只需要输入 `exit` 即可关闭连接,它会立马关闭不需要确认。 + +![Closing the connection with “exit”][15] + +### 在 Ubuntu 中关闭并禁止 SSH + +如果你想要停止 SSH 服务,需要运行该命令: + +``` +sudo systemctl stop ssh +``` + +该命令会关闭 SSH 服务,直到重启它或者系统重启。想要重启它,输入: + +``` +sudo systemctl start ssh +``` + +现在,如果你想要禁止 SSH 跟随系统启动,使用该命令: + +``` +sudo systemctl disable ssh +``` + +该命令不会停止当前的 SSH 会话,只会在启动的时候生效。如果你想要它跟随系统启动,输入: + +``` +sudo systemctl enable ssh +``` + +#### 其他 SSH 客户端 + +从 Linux 到 macOS,大多数 *nix 系统中都有 `ssh` 工具,但这并不是唯一的选项,这里有几个可以在其他操作系统中使用的客户端: + + * [PuTTY][16] 是一个自由开源的 Windows 系统上的 SSH 客户端。它功能强大并且简单易用。如果你从 Windows 系统上连接你的 Ubuntu 服务器,PuTTY 是最好的选择。(LCTT 译注:切记从官方网站下载。) + * 对安卓用户来说,[JuiceSSH][17] 是十分优秀的工具。如果你在旅途中需要一个移动客户端来连接你的 Ubuntu 系统,我强烈建议你试试 JuiceSSH。它已经出现了将近 10 年,并且可以免费使用。 + * 最后是 [Termius][18],它可用于 Linux、Windows、macOS、iOS 和安卓。它有一个免费版本和几个付费选项。如果你运行大量服务器并进行共享连接的团队合作,那么 Termius 对你来说是一个不错的选择。 + +#### 总结 + +在这份指导中,你可以在 Ubuntu 系统中设置 SSH 作为服务器,允许来自你电脑的远程安全的连接,便于你通过命令行开展工作。 + +此,我推荐以下文章: + + * [Linux SSH 入门教程][19] + * [利用 SSH 配置文件管理多个 SSH 连接][20] + * [向 SSH 服务器添加公钥以进行无密码身份验证][21] + * [保护你的 SSH 服务器的 SSH 加固技巧][22] + +远程工作快乐! + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/set-up-ssh-ubuntu/ + +作者:[Chris Patrick Carias Stas][a] +选题:[lujun9972][b] +译者:[Donkey-Hao](https://github.com/Donkey-Hao) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/chris/ +[b]: https://github.com/lujun9972 +[1]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-diagram.png?resize=800%2C259&ssl=1 +[2]: https://www.openssh.com/ +[3]: https://itsfoss.com/install-ubuntu-server-raspberry-pi/ +[4]: https://itsfoss.com/ssh-into-raspberry/ +[5]: https://itsfoss.com/update-ubuntu/ +[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-0001.png?resize=800%2C253&ssl=1 +[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-0002.png?resize=800%2C263&ssl=1 +[8]: https://itsfoss.com/set-up-firewall-gufw/ +[9]: https://itsfoss.com/check-ip-address-ubuntu/ +[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-find-ip.png?resize=800%2C341&ssl=1 +[11]: https://itsfoss.com/cdn-cgi/l/email-protection +[12]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-0004.png?resize=800%2C87&ssl=1 +[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-0005.png?resize=800%2C57&ssl=1 +[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-0006.png?resize=800%2C322&ssl=1 +[15]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-0007.png?resize=800%2C87&ssl=1 +[16]: https://www.putty.org/ +[17]: https://juicessh.com/ +[18]: https://termius.com/ +[19]: https://linuxhandbook.com/ssh-basics/ +[20]: https://linuxhandbook.com/ssh-config-file/ +[21]: https://linuxhandbook.com/add-ssh-public-key-to-server/ +[22]: https://linuxhandbook.com/ssh-hardening-tips/ +[23]: https://linuxhandbook.com/sshcourse/ diff --git a/published/20210601 Get started with Java serverless functions.md b/published/202210/20210601 Get started with Java serverless functions.md similarity index 100% rename from published/20210601 Get started with Java serverless functions.md rename to published/202210/20210601 Get started with Java serverless functions.md diff --git a/published/20210602 New ways to learn about open organizations.md b/published/202210/20210602 New ways to learn about open organizations.md similarity index 100% rename from published/20210602 New ways to learn about open organizations.md rename to published/202210/20210602 New ways to learn about open organizations.md diff --git a/published/202210/20210604 Optimize Java serverless functions in Kubernetes.md b/published/202210/20210604 Optimize Java serverless functions in Kubernetes.md new file mode 100644 index 0000000000..ed41d62c82 --- /dev/null +++ b/published/202210/20210604 Optimize Java serverless functions in Kubernetes.md @@ -0,0 +1,243 @@ +[#]: subject: (Optimize Java serverless functions in Kubernetes) +[#]: via: (https://opensource.com/article/21/6/java-serverless-functions-kubernetes) +[#]: author: (Daniel Oh https://opensource.com/users/daniel-oh) +[#]: collector: (lujun9972) +[#]: translator: (cool-summer-021) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-15178-1.html) + +优化 Kubernetes 中的 Java 无服务器函数 +====== + +> 在 Kubernetes 中运行无服务器函数时,实现更快的启动速度和更小的内存占用。 + +![](https://img.linux.net.cn/data/attachment/album/202210/26/151603a4a44w1a71zk8b11.jpg) + +由于运行上千个应用程序容器荚Pod所耗费的资源多,令它实现较少工作节点和资源占用所需成本也较高,所以在使用 [Kubernetes][2] 时,快速启动和较少的内存占用是至关重要的。在 Kubernetes 平台运行容器化微服务时,内存占用是比吞吐量更重要的考量因素,这是因为: + + * 由于需要持续运行,所以耗费资源更多(不同于 CPU 占用) + * 微服务令开销成本成倍增加 + * 一个单体应用程序变为若干个微服务的情况(例如 20 个微服务占用的存储空间约有 20GB) + +这些情况极大影响了无服务器函数的发展和 Java 部署模型。到目前为止,许多企业开发人员选择 Go、Python 或 Node.js 这些替代方案来解决性能瓶颈,直到出现了 [Quarkus][3] 这种基于 kubernetes 的原生 Java 堆栈,才有所改观。本文介绍如何在使用了 Quarkus 的 kubernetes 平台上进行性能优化,以便运行无服务器函数。 + +### 容器优先的设计理念 + +由于 Java 生态系统中传统的框架都要进行框架的初始化,包括配置文件的处理、`classpath` 的扫描、类加载、注解的处理以及构建元模型,这些过程都是必不可少的,所以它们都比较耗费资源。如果使用了几种不同的框架,所耗费的资源也是成倍增加。 + +Quarkus 通过“左移shifting left”,把所有的资源开销大的操作都转移到构建阶段,解决了这些 Java 性能问题。在构建阶段进行代码和框架分析、字节码转换和动态元模型生成,而且只有一次,结果是:运行时可执行文件经过高度优化,启动非常快,不需要经过那些传统的启动过程,全过程只在构建阶段执行一次。 + +![Quarkus Build phase][4] + +更重要的是:Quarkus 支持构建原生可执行文件,它具有良好性能,包括快速启动和极小的驻留集大小resident set size(RSS)内存占用,跟传统的云原生 Java 栈相比,具备即时扩展的能力和高密度的内存利用。 + +![Quarkus RSS and Boot Time Metrics][7] + +这里有个例子,展示如何使用 Quarkus 将一个 [Java 无服务器][8] 项目构建为本地可执行文件。 + +### 1、使用 Quarkus 创建无服务器 Maven 项目 + +以下命令生成一个 Quarkus 项目,(例如 `quarkus-serverless-native`)以此创建一个简单的函数: + +``` +$ mvn io.quarkus:quarkus-maven-plugin:1.13.4.Final:create \ +       -DprojectGroupId=org.acme \ +       -DprojectArtifactId=quarkus-serverless-native \ +       -DclassName="org.acme.getting.started.GreetingResource" +``` + +### 2、构建一个本地可执行文件 + +你需要使用 GraalVM 为 Java 程序构建一个本地可执行文件。你可以选择 GraalVM 的任何发行版,例如 [Oracle GraalVM Community Edition (CE)][9] 或 [Mandrel][10](Oracle GraalVM CE 的下游发行版)。Mandrel 是为支持 OpenJDK 11 上的 Quarkus-native 可执行文件的构建而设计的。 + +打开 `pom.xml`,你将发现其中的 `native` 设置。你将使用它来构建本地可执行文件。 + +``` + +    +        native +        +            native +        +    + +``` + +> **注意:** 你可以在本地安装 GraalVM 或 Mandrel 发行版。你也可以下载 Mandrel 容器映像来构建它(像我那样),因此你还需要在本地运行一个容器引擎(例如 Docker)。 + +假设你已经打开了容器运行时,此时需要运行一下 Maven 命令: + +使用 [Docker][11] 作为容器引擎: + +``` +$ ./mvnw package -Pnative \ + -Dquarkus.native.container-build=true \ + -Dquarkus.native.container-runtime=docker +``` + +使用 [Podman][12] 作为容器引擎: + +``` +$ ./mvnw package -Pnative \ + -Dquarkus.native.container-build=true \ + -Dquarkus.native.container-runtime=podman +``` + +输出信息结尾应当是 `BUILD SUCCESS`。 + +![Native Build Logs][13] + +不借助 JVM 直接运行本地可执行文件: + +``` +$ target/quarkus-serverless-native-1.0.0-SNAPSHOT-runner +``` + +输出信息类似于: + +``` +__ ____ __ _____ ___ __ ____ ______ + --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ + -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \ +--\___\_\____/_/ |_/_/|_/_/|_|\____/___/ +INFO [io.quarkus] (main) quarkus-serverless-native 1.0.0-SNAPSHOT native +(powered by Quarkus xx.xx.xx.) Started in 0.019s. Listening on: http://0.0.0.0:8080 +INFO [io.quarkus] (main) Profile prod activated. +INFO [io.quarkus] (main) Installed features: [cdi, kubernetes, resteasy] +``` + +简直是超音速!启动只花了 19 毫秒。你的运行时间可能稍有不同。 + +使用 Linux 的 `ps` 工具检测一下,结果内存占用还是很低。检测的方法是:在应用程序运行期间,另外打开一个终端,运行如下命令: + +``` +$ ps -o pid,rss,command -p $(pgrep -f runner) +``` + +输出结果类似于: + +``` +  PID    RSS COMMAND +10246  11360 target/quarkus-serverless-native-1.0.0-SNAPSHOT-runner +``` + +该进程只占 11MB 内存。非常小! + +> **注意:** 各种应用程序(包括 Quarkus)的驻留集大小和内存占用,都因运行环境而异,并随着应用程序载入而上升。 + +你也可以使用 REST API 访问这个函数。输出结果应该是 `Hello RESTEasy`: + +``` +$ curl localhost:8080/hello +Hello RESTEasy +``` + +### 3、把函数部署到 Knative 服务 + +如果你还没有创建命名空间,现在就在 [OKD][15](OpenShift Kubernetes 发行版)[创建一个命名空间][14](例如 `quarkus-serverless-native`),进而把这个本地可执行文件部署为无服务器函数。然后添加 `quarkus-openshift` 扩展: + +``` +$ ./mvnw -q quarkus:add-extension -Dextensions="openshift" +``` + +向 `src/main/resources/application.properties` 文件中添加以下内容,配置 Knative 和 Kubernetes 的相关资源: + +``` +quarkus.container-image.group=quarkus-serverless-native +quarkus.container-image.registry=image-registry.openshift-image-registry.svc:5000 +quarkus.native.container-build=true +quarkus.kubernetes-client.trust-certs=true +quarkus.kubernetes.deployment-target=knative +quarkus.kubernetes.deploy=true +quarkus.openshift.build-strategy=docker +``` + +构建本地可执行文件,并把它直接部署到 OKD 集群: + +``` +$ ./mvnw clean package -Pnative +``` + +> **注意:** 提前使用 `oc login` 命令,确保登录的是正确的项目(例如 `quarkus-serverless-native`)。 + +输出信息结尾应当是 `BUILD SUCCESS`。完成一个本地二进制文件的构建并部署为 Knative 服务需要花费几分钟。成功创建服务后,使用 `kubectl` 或 `oc` 命令工具,可以查看 Knative 服务和版本信息: + +``` +$ kubectl get ksvc +NAME URL [...] +quarkus-serverless-native http://quarkus-serverless-native-[...].SUBDOMAIN True + +$ kubectl get rev +NAME CONFIG NAME K8S SERVICE NAME GENERATION READY REASON +quarkus-serverless-native-00001 quarkus-serverless-native quarkus-serverless-native-00001 1 True +``` + +### 4、访问本地可执行函数 + +运行 `kubectl` 命令,搜索无服务器函数的节点: + +``` +$ kubectl get rt/quarkus-serverless-native +``` + +输出信息类似于: + +``` +NAME URL READY REASON +quarkus-serverless-native http://quarkus-serverless-restapi-quarkus-serverless-native.SUBDOMAIN True +``` + +用 `curl` 命令访问上述信息中的 `URL` 字段: + +``` +$ curl http://quarkus-serverless-restapi-quarkus-serverless-native.SUBDOMAIN/hello +``` + +过了不超过一秒钟,你也会得到跟本地操作一样的结果: + +``` +Hello RESTEasy +``` + +当你在 OKD 群集中访问 Quarkus 运行中的节点的日志,你会发现本地可执行文件正在以 Knative 服务的形式运行。 + +![Native Quarkus Log][16] + +### 下一步呢? + +你可以借助 GraalVM 发行版优化 Java 无服务器函数,从而在 Knative 中使用 Kubernetes 将它们部署为无服务器函数。Quarkus 支持在普通的微服务中使用简易配置进行性能优化。 + +本系列的下一篇文章将指导你在不更改代码的情况下跨多个无服务器平台实现可移植函数。 + +*(Daniel Oh, [CC BY-SA 4.0][5])* + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/21/6/java-serverless-functions-kubernetes + +作者:[Daniel Oh][a] +选题:[lujun9972][b] +译者:[cool-summer-021](https://github.com/cool-summer-021) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/daniel-oh +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/ship_captain_devops_kubernetes_steer.png?itok=LAHfIpek (Ship captain sailing the Kubernetes seas) +[2]: https://opensource.com/article/19/6/reasons-kubernetes +[3]: https://quarkus.io/ +[4]: https://opensource.com/sites/default/files/uploads/quarkus-build.png (Quarkus Build phase) +[5]: https://creativecommons.org/licenses/by-sa/4.0/ +[6]: https://quarkus.io/blog/runtime-performance/ +[7]: https://opensource.com/sites/default/files/uploads/quarkus-boot-metrics.png (Quarkus RSS and Boot Time Metrics) +[8]: https://opensource.com/article/21/5/what-serverless-java +[9]: https://www.graalvm.org/community/ +[10]: https://github.com/graalvm/mandrel +[11]: https://www.docker.com/ +[12]: https://podman.io/ +[13]: https://opensource.com/sites/default/files/uploads/native-build-logs.png (Native Build Logs) +[14]: https://docs.okd.io/latest/applications/projects/configuring-project-creation.html +[15]: https://docs.okd.io/latest/welcome/index.html +[16]: https://opensource.com/sites/default/files/uploads/native-quarkus-log.png (Native Quarkus Log) diff --git a/published/202210/20210629 Try Linux on any operating system with VirtualBox.md b/published/202210/20210629 Try Linux on any operating system with VirtualBox.md new file mode 100644 index 0000000000..8c05f463fc --- /dev/null +++ b/published/202210/20210629 Try Linux on any operating system with VirtualBox.md @@ -0,0 +1,264 @@ +[#]: subject: (Try Linux on any operating system with VirtualBox) +[#]: via: (https://opensource.com/article/21/6/try-linux-virtualbox) +[#]: author: (Stephan Avenwedde https://opensource.com/users/hansic99) +[#]: collector: (lujun9972) +[#]: translator: (chai001125) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-15183-1.html) + +使用 VirtualBox 安装 Linux 虚拟机 +====== + +> VirtualBox 能帮助任何人(即使是命令行新手)安装一个新的虚拟机。 + +![](https://img.linux.net.cn/data/attachment/album/202210/27/104215te6xpq2e2vvxprjs.jpg) + +VirtualBox 能让任何人都可以轻松安装 Linux 虚拟机。你不需要有使用命令行的经验,就可以自己安装一个简单的 Linux 虚拟机。在虚拟机方面,我精通很多东西,但这篇文章将向新手展示如何安装一个 Linux 虚拟机。此外,这篇文章还概述了如何使用开源虚拟机管理程序 [VirtualBox][2] ,来运行以及安装一个测试目的的 Linux 系统。 + +### 一些术语 + +在开始之前,你需要了解在本安装教程中的两个操作系统(OS)之间的区别: + + * 主机系统host system:这指的是你安装 VirtualBox 的操作系统(即本机的操作系统)。 + * 客体系统guest system:这指的是你想要在主机系统之上运行的虚拟化系统。 + +在输入/输出、网络、文件访问、剪贴板、音频和视频方面,主机系统和客体系统都必须能够交互。 + +在本教程中,我将使用 Windows 10 作为 _主机系统_,[Fedora 33][3] 作为 _客体系统_。 + +### 安装前的准备 + +当我们谈论虚拟化时,实际上,我们指的是 [硬件辅助虚拟化][4]。硬件辅助虚拟化需要兼容的 CPU。过去十年来,几乎每个普通的 x86 CPU 都有这一功能。AMD 公司称这样的 x86 CPU 是具有 **AMD 虚拟化技术(AMD-V)** 的处理器,英特尔公司则称其是具有 **Intel 虚拟化技术(VT-x)** 的处理器。虚拟化功能增加了一些额外的 CPU 指令,你可以在 BIOS 中启用或禁用这些指令。 + +在安装虚拟机之前: + + * 确保在 BIOS 中启用了虚拟化技术(AMD-V 或 VT-x)。 + * 下载并安装好 [VirtualBox][5]。 + +### 准备虚拟机 + +下载你要用的 Linux 发行版的镜像文件。下载 32 位还是 64 位的操作系统镜像都没有关系,因为在 32 位的主机系统上也可以启动 64 位的操作系统镜像(当然内存的使用会受限),反之亦然。 + +> **注意事项:** 如果可以的话,请下载附带有 [逻辑卷管理器][6](LVM)的 Linux 发行版。LVM 会将文件系统与物理硬盘驱动器解耦。如果你的空间不足时,这能够让你增加客体系统的硬盘驱动器的大小。 + +现在,打开 VirtualBox,然后单击黄色的“新建New”按钮: + +![VirtualBox New VM][7] + +接下来,配置客体操作系统允许使用多少内存: + +![Set VM memory size][9] + +我的建议是:**不要吝啬分配给客体操作系统使用的内存!** 当客体操作系统的内存不足时,客体系统将开始从随机存取存储器(RAM)向硬盘驱动器进行内存分页,这样会极大地恶化系统的性能和响应能力。如果底层的主机系统开始分页,你很可能不会注意到。对于具有图形化桌面环境的 Linux 工作站系统,我建议至少分配 4GB 内存。 + +接下来,创建虚拟磁盘: + +![Create virtual hard disk][10] + +虚拟磁盘的格式选择默认的选项 “VDI(VirtualBox 磁盘镜像)” 就可以了: + +![Selecting hard disk file type][11] + +在以下的窗口中,我建议选择“动态分配dynamically allocated”,因为这允许你在之后增加虚拟磁盘的大小。如果你选择了“固定大小fixed size”,磁盘的速度可能会更快,但你将无法修改虚拟磁盘的大小了: + +![Dynamically allocating hard disk][12] + +建议你使用附带有逻辑卷管理器(LVM)的 Linux 发行版,这样你就可以先创建一个较小的硬盘。如果之后你的客体系统的空间快用完了,你可以按需增加磁盘的大小。 + +> **注意**:我选择的客体系统为 Fedora,在 Fedora 的官网说明:[Fedora 至少需要分配 20GB 的空闲磁盘空间][13]。我强烈建议你遵守该规范。在这里,我选择了 8GB,以便稍后演示如何用命令行增加磁盘空间。如果你是 Linux 新手,或者对命令行没有经验,请依旧选择 20GB。 + +![Setting hard disk size][14] + +创建好硬盘驱动器后,从 VirtualBox 主窗口的列表中选择新创建的虚拟机,然后单击“设置Settings”。在设置菜单中,点击“系统System”,然后选择“处理器Processor”标签。默认情况下,VirtualBox 只向客体系统分配一个 CPU 内核。在现代多核 CPU 计算机上,分配至少两个内核是没有任何问题的,这能显著地加快客体系统的速度: + +![Assigning cores to guest system][15] + +#### 设置网络适配器 + +接下来,要处理的是网络设置。默认情况下, VirtualBox 会创建一个 NAT 连接,这对于大多数情况来说,是没有问题、不用做其他更改的: + +![Network settings][16] + +你也可以创建多个网络适配器。以下是网络适配器最常见的类型: + + * NAT:NAT 适配器能自动执行 [网络地址转换][17]。从外部看,主机和客体系统使用着相同的 IP 地址。你无法通过网络从主机系统内访问客体系统。(尽管,你也可以通过定义 [端口转发][18],来访问某些服务。)当你的主机系统可以访问互联网时,则你的客体系统也可以访问互联网。NAT 不再需要进一步的配置。 + * _如果你只需要让客体系统接入互联网就可以的话,请选择 “NAT”。_ + * 桥接适配器Bridged adapter:在此配置中,客体系统和主机系统可以共享相同的物理以太网设备。这两个系统都将拥有独立的 IP 地址。从外部看,网络中会有两个独立的系统,它们共享相同的物理以太网适配器。这种设置更灵活,但需要更多的配置。 + * _如果你想要共享客体系统的网络服务的话,请选择 “桥接适配器”。_ + * 仅限主机的适配器Host-only adapter:在此配置中,客体系统只能与主机,或在同一主机上运行的其他客体系统相互通信。主机系统也可以连接到客体系统。但客体系统不能接入互联网或物理网络。 + * _如果你想要获得高安全性,请选择 “仅限主机的适配器”。_ + +#### 分配操作系统镜像 + +在设置菜单中,点击“存储Storage”,然后选择虚拟光盘驱动器。单击右侧的 “光盘”图标,然后点击“选择一个磁盘文件……Choose a disk file…”,然后分配你想要安装的、已下载的 Linux 发行版镜像: + +![Assigning OS image][19] + +### 安装 Linux + +现在,就已经配置好了虚拟机。右上角关闭“设置Settings”菜单,返回主窗口。点击“绿色箭头”(即“开始”按钮)。虚拟机将从虚拟光盘驱动器启动,你将发现你已经进入到 Linux 发行版的安装程序中: + +![VirtualBox Fedora installer][20] + +#### 设置分区 + +安装程序将在安装过程中要求你提供分区信息。选择“自定义Custom”: + +![Selecting Custom partition configuration][21] + +> **注意:** 我假设,你创建这一虚拟机的目的是为了测试。此外,你也无需关心客体系统的休眠,因为此功能会由 VirtualBox 来隐式地提供。因此,你可以省略交换分区,以节省主机系统的磁盘空间。请记住,如果你需要的话,你可以稍后自己添加交换分区。在 《[Linux 系统交换空间的介绍][22]》 这篇文章中,作者 David Both 进一步解释了如何添加交换分区,并选择交换分区正确的大小。 + +Fedora 33 及之后更高的版本提供了一个 [zram 分区][23],zram 分区可以用于存放分页和交换、并经过压缩过后的硬盘数据。zram 分区可以按需地调整大小,并且它比硬盘交换分区快得多。 + +为了简单,我们只添加以下两个挂载点Mount Point: + +![Adding mount points][24] + +保存更改,接下来我们继续安装。 + +### 安装 VirtualBox 增强功能 + +完成安装后,从硬盘驱动器启动,并登录到虚拟机。现在,你可以安装 VirtualBox 增强功能VirtualBox Guest Additions,其中包括特殊的设备驱动程序和系统应用程序,它们能提供以下功能: + + * 共享剪贴板 + * 共享文件夹 + * 更好的性能 + * 可自由扩展的窗口大小 + +点击顶部菜单栏的“设备Devices”,然后选择“插入增强功能的 CD 镜像……Insert Guest Additions CD image...”,来安装 VirtualBox 增强功能: + +![Selecting Guest Additions CD image][25] + +在大多数 Linux 发行版上,带有增强功能的 CD 镜像会自动挂载,并且能够在文件管理器中找到。Fedora 会问你是否要运行安装脚本。单击“运行Run”,并授予该安装进程 root 权限: + +![Enabling Guest Additions autorun][26] + +安装完成后,需要重新启动系统。 + +### LVM:扩大磁盘空间 + +我在之前给 Fedora 虚拟机分配了 8GB 硬盘空间,是一个愚蠢的决定,因为 Fedora 很快就会告警空间不足: + +![Fedora hard disk running out of space][27] + +正如我提到的,Fedora 官网建议安装时分配 20GB 的磁盘空间。因为 8GB 是 Fedora 33 安装启动就需要的最少空间。没有安装其他软件(除了 VirtualBox 增强功能)的一个新安装的系统就几乎占用了整个 8GB 的可用空间。这时候,不要打开 GNOME 软件中心或任何其他可能从互联网下载文件的东西。 + +幸运的是,我选择了附带有 LVM 的 Fedora,这样我就可以用命令行轻松地修复这个问题。 + +要增加虚拟机中文件系统的空间,你必须先增加主机系统上分配的虚拟硬盘驱动器。 + +关闭虚拟机。如果你的主机系统运行的是 Windows,请打开终端,并进入到 `C:\Program Files\Oracle\VirtualBox` 目录下。使用以下命令,将磁盘大小扩大到 12,000MB: + +``` +VBoxManage.exe modifyhd "C:\Users\StephanA\VirtualBox VMs\Fedora_33\Fedora_33.vdi" --resize 12000 +``` + +然后启动虚拟机,并打开“磁盘Disks”工具。你可以看到你刚刚新创建且未分配的可用空间。选择“可用空间Free Space”,然后单击 “+” 按钮: + +![Free space before adding][28] + +现在,创建一个新的分区。选择你要使用的可用空间的大小: + +![Creating a new partition and setting size][29] + +如果你不想在新分区上创建文件系统或任何其他内容,请选择“其他Other”: + +![Selecting "other" for partition volume type][30] + +选择“无文件系统No Filesystem”: + +![Setting "No filesystem" on new partition][31] + +现在,磁盘空间应该如下图所示: + +![VirtualBox after adding new partition][32] + +虚拟机有了一个新的分区设备:`/dev/sda3`。通过输入 `vgscan` ,来检查你的 LVM 卷组,找到 `fedora_localhost_live` 这一 LVM 卷组 : + +![Checking LVM volume group by typing vgscan:][33] + +现在,已经万事俱备了。在新分区 `/dev/sda3` 中扩展卷组 `fedora_localhost_live`: + +``` +vgextend fedora_localhost-live /dev/sda3 +``` + +![vgextend command output][34] + +由于卷组比逻辑卷大,你可以增加逻辑卷的大小。命令 `vgdisplay` 显示了共有 951 个可用的物理扩展(PE): + +![vgdisplay command output][35] + +将逻辑卷增加 951 个物理扩展: + +``` +lvextend -l+951 /dev/mapper/fedora_localhost--live-root +``` + +![lvextend command output][36] + +在增加了逻辑卷后,最后一件事就是调整文件系统的大小: + +``` +resize2fs /dev/mapper/fedora_localhost--live-root +``` + +![resize2fs command output][37] + +这样磁盘空间就增加完成了!检查“磁盘使用分析器Disk Usage Analyzer”,你就可以看到扩展空间已经可用于文件系统了。 + +### 总结 + +使用虚拟机,你可以检查在一个特定的操作系统或一个特定版本的操作系统、软件是如何操作的。除此之外,你还可以尝试任何想测试的 Linux 发行版,而不必担心系统损坏。对于资深用户来说,VirtualBox 在测试、网络和模拟方面提供了广泛的可能性。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/21/6/try-linux-virtualbox + +作者:[Stephan Avenwedde][a] +选题:[lujun9972][b] +译者:[chai001125](https://github.com/chai001125) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/hansic99 +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_code_programming_laptop.jpg?itok=ormv35tV (Person programming on a laptop on a building) +[2]: https://www.virtualbox.org/ +[3]: https://getfedora.org/ +[4]: https://en.wikipedia.org/wiki/Hardware-assisted_virtualization +[5]: https://www.virtualbox.org/wiki/Downloads +[6]: https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux) +[7]: https://opensource.com/sites/default/files/uploads/virtualbox_new_vm.png (VirtualBox New VM) +[8]: https://creativecommons.org/licenses/by-sa/4.0/ +[9]: https://opensource.com/sites/default/files/uploads/virtualbox_memory_size_1.png (Set VM memory size) +[10]: https://opensource.com/sites/default/files/uploads/virtualbox_create_hd_1.png (Create virtual hard disk) +[11]: https://opensource.com/sites/default/files/uploads/virtualbox_create_hd_2.png (Selecting hard disk file type) +[12]: https://opensource.com/sites/default/files/uploads/virtualbox_create_hd_3.png (Dynamically allocating hard disk) +[13]: https://getfedora.org/en/workstation/download/ +[14]: https://opensource.com/sites/default/files/uploads/virtualbox_create_hd_4.png (Setting hard disk size) +[15]: https://opensource.com/sites/default/files/uploads/virtualbox_cpu_settings.png (Assigning cores to guest system) +[16]: https://opensource.com/sites/default/files/uploads/virtualbox_network_settings2.png (Network settings) +[17]: https://en.wikipedia.org/wiki/Network_address_translation +[18]: https://www.virtualbox.org/manual/ch06.html#natforward +[19]: https://opensource.com/sites/default/files/uploads/virtualbox_choose_image3.png (Assigning OS image) +[20]: https://opensource.com/sites/default/files/uploads/virtualbox_running.png (VirtualBox Fedora installer) +[21]: https://opensource.com/sites/default/files/uploads/virtualbox_partitioning_1.png (Selecting Custom partition configuration) +[22]: https://opensource.com/article/18/9/swap-space-linux-systems +[23]: https://fedoraproject.org/wiki/Changes/SwapOnZRAM +[24]: https://opensource.com/sites/default/files/uploads/virtualbox_partitioning_2.png (Adding mount points) +[25]: https://opensource.com/sites/default/files/uploads/virtualbox_guest_additions_2.png (Selecting Guest Additions CD image) +[26]: https://opensource.com/sites/default/files/uploads/virtualbox_guest_additions_autorun.png (Enabling Guest Additions autorun) +[27]: https://opensource.com/sites/default/files/uploads/virtualbox_disk_usage_1.png (Fedora hard disk running out of space) +[28]: https://opensource.com/sites/default/files/uploads/virtualbox_disks_before.png (Free space before adding) +[29]: https://opensource.com/sites/default/files/uploads/virtualbox_new_partition_1.png (Creating a new partition and setting size) +[30]: https://opensource.com/sites/default/files/uploads/virtualbox_new_partition_2.png (Selecting "other" for partition volume type) +[31]: https://opensource.com/sites/default/files/uploads/virtualbox_no_partition_3.png (Setting "No filesystem" on new partition) +[32]: https://opensource.com/sites/default/files/uploads/virtualbox_disk_after.png (VirtualBox after adding new partition) +[33]: https://opensource.com/sites/default/files/uploads/virtualbox_vgscan.png (Checking LVM volume group by typing vgscan:) +[34]: https://opensource.com/sites/default/files/uploads/virtualbox_vgextend_2.png (vgextend command output) +[35]: https://opensource.com/sites/default/files/uploads/virtualbox_vgdisplay.png (vgdisplay command output) +[36]: https://opensource.com/sites/default/files/uploads/virtualbox_lvextend.png (lvextend command output) +[37]: https://opensource.com/sites/default/files/uploads/virtualbox_resizefs.png (resize2fs command output) diff --git a/published/20210721 Write your first web component.md b/published/202210/20210721 Write your first web component.md similarity index 100% rename from published/20210721 Write your first web component.md rename to published/202210/20210721 Write your first web component.md diff --git a/published/202210/20210929 Troubleshooting -Bash- Command Not Found- Error in Linux.md b/published/202210/20210929 Troubleshooting -Bash- Command Not Found- Error in Linux.md new file mode 100644 index 0000000000..b9fee2a03b --- /dev/null +++ b/published/202210/20210929 Troubleshooting -Bash- Command Not Found- Error in Linux.md @@ -0,0 +1,160 @@ +[#]: subject: "Troubleshooting “Bash: Command Not Found” Error in Linux" +[#]: via: "https://itsfoss.com/bash-command-not-found/" +[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/" +[#]: collector: "lujun9972" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15164-1.html" + +解决 Linux 中的 “Bash: Command Not Found” 报错 +====== + +> 本新手教程展示了在 Debian、Ubuntu 和其他的 Linux 发行版上如何解决 “Bash: command not found” 这一报错。 + +当你在 Linux 中使用命令时,你希望得到终端输出的结果。但有时候,你会遇到终端显示“命令未找到command not found”这一报错。 + +![][1] + +对于这个问题,并没有直截了当且单一的解决方案。你必须自己做一些故障排除来解决这个报错。 + +老实说,要解决它并不难。该报错信息已经给出了一些提示:“命令未找到”,这说明你的 shell(或者 Linux 系统)找不到你输入的那条命令。 + +shell(或 Linux 系统)找不到命令,有三个可能的原因: + + * 你将命令的名称拼错了 + * 该命令还没有安装 + * 该命令是一个可执行脚本,但其位置未知 + +接下来,我们会详细介绍“命令未找到”这一报错的每一个原因。 + +### 解决“命令未找到”报错 + +![][2] + +#### 方法 1:再次检查命令名称有没有写错 + +每个人都会犯错误,尤其是在打字的时候。你输入的命令可能存在错别字(也就是你写错啦)。 + +你应该特别注意: + + * 是否拼对了正确的命令名称 + * 是否在命令与其选项之间加上了空格 + * 是否在拼写中混淆了 1(数字 1)、I(大写的 i)和 l(小写的 L) + * 是否正确使用了大写字母或者小写字母 + +看看下面的示例,因为我写错了 `ls` 命令,所以会导致“command not found”报错。 + +![][3] + +所以,请再次仔细确认你输入得对不对。 + +#### 方法 2:确保命令已安装在你的系统上 + +这是“命令未找到”错误的另一个常见原因。如果命令尚未安装,则无法运行该命令。 + +虽然在默认情况下,你的 Linux 发行版自带安装了大量命令,但是不会在系统中预装 _所有的_ 命令行工具。如果你尝试运行的命令不是一个流行的常用命令,那么你需要先安装它。 + +你可以使用发行版的软件包管理器来安装命令。 + +![You may have to install the missing command][4] + +有时候,某一常用命令可能也不再能使用了,甚至你也不能够安装这个命令了。这种情况下,你需要找到一个替代的命令,来得到结果。 + +以现已弃用的 `ifconfig` 命令为例。网络上的旧教程依旧会让你使用 `ifconfig` 命令,来 [获取本机的 IP 地址][5] 和网络接口信息,但是,在较新的 Linux 版本中,你已经无法使用 `ifconfig` 了。`ifconfig` 命令已被 `ip` 命令所取代。 + +![Some popular commands get discontinued over the time][1] + +有时候,你的系统可能甚至找不到一些非常常见的命令。当你在 Docker 容器中运行 Linux 发行版时,就通常如此。Docker 容器为了缩小操作系统镜像的大小,容器中通常不包含那些常见的 Linux 命令。 + +这就是为什么使用 Docker 的用户会碰到 [ping 命令未找到][6] 等报错的原因。 + +![Docker containers often have only a few commands installed][7] + +因此,这种情况下的解决方案是安装缺失的命令,或者是找到一个与缺失命令有同等功能的工具。 + +### 方法 3:确保命令是真实的,而不是一个别名 + +我希望你知道 Linux 中的别名概念。你可以配置你自己的较短的命令来代替一个较长命令的输入。 + +一些发行版,如 Ubuntu,会自动提供 `ll`(`ls -l` 的别名)、`la`(`ls -a` 的别名)等命令。 + +![][13] + +想象一下,你习惯于在你的个人系统上输入 `ll` 和 `la`,而你登录到另一个 Linux 系统,发现 `ll` 命令并不存在。你甚至不能安装 `ll` 命令,因为它不是一个真正的命令。 + +所以,如果你找不到一个命令,甚至不能安装,你应该尝试在互联网上搜索该命令是否存在。如果不存在,可能是其他系统上的一个别名。 + +#### 方法 4:检查命令是否是一个路径正确的可执行脚本 + +这是 Linux 新手在 [运行 shell 脚本][8] 时常犯的错误。 + +即使你在同一目录下,仅用可执行脚本的名称,来运行可执行脚本,也会显示错误。 + +``` +[email protected]:~/scripts# sample +-bash: sample: command not found +``` + +因为你需要显式指定 shell 解释器或可执行脚本的路径! + +![][9] + +如果你在其他目录下,在未提供文件正确路径的情况下,运行 shell 脚本,则会有“找不到文件no such file or directory”的报错。 + +![][10] + +> **把可执行文件的路径加到 PATH 变量中** +> +> 有时候,你下载了一个软件的压缩文件(tar 格式),解压这个 tar 文件,然后找到一个可执行文件和其他程序文件。你需要运行可执行文件,来运行那个软件。 +> +> 但是,你需要在可执行文件的同一目录下或指定可执行文件的整个路径,才能运行那个可执行文件。这很令人烦扰。 +> +> 你可以使用 `PATH` 变量来解决这个问题。`PATH` 变量包含了有各种 Linux 命令的二进制(可执行)文件的目录集合。当你运行一个命令时,你的 Linux 系统会检查 `PATH` 变量中的上述目录,以查找该命令的可执行文件。 +> +> 你可以使用 `which` 命令,来检查某一命令的二进制文件的位置: +> +> ![][11] +> +> 如果你想从系统上的任何地方都能运行可执行文件或脚本,你需要将可执行文件的位置添加到 `PATH` 变量中。 +> +> ![][12] +> +> 然后,`PATH` 变量需要添加到 shell 的 rc 文件中,如此对 `PATH` 变量的更改就是永久性的。 +> +> 这里的要点是:你的 Linux 系统必须了解可执行脚本的位置。要么在运行时给出可执行文件的整个路径,要么将其位置添加到 `PATH` 变量中。 + +### 以上的内容有帮到你吗? + +我懂得,当你是 Linux 新手时,很多事情可能会让你不知所措。但是,当你了解问题的根本原因时,你的知识会逐渐增加。 + +对于“未找到命令”报错来说,没有简单的解决方案。我提供给你了一些提示和要点,我希望这对你的故障排除有帮助。 + +如果你仍然有疑问或需要帮助,请在评论区告诉我吧。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/bash-command-not-found/ + +作者:[Abhishek Prakash][a] +选题:[lujun9972][b] +译者:[chai001125](https://github.com/chai001125) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/abhishek/ +[b]: https://github.com/lujun9972 +[1]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/bash-command-not-found-error.png?resize=741%2C291&ssl=1 +[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/bash-command-not-found-error-1.png?resize=800%2C450&ssl=1 +[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/command-not-found-error.png?resize=723%2C234&ssl=1 +[4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/command-not-found-debian.png?resize=741%2C348&ssl=1 +[5]: https://itsfoss.com/check-ip-address-ubuntu/ +[6]: https://linuxhandbook.com/ping-command-ubuntu/ +[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/ping-command-not-found-ubuntu.png?resize=786%2C367&ssl=1 +[8]: https://itsfoss.com/run-shell-script-linux/ +[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/bash-script-command-not-found-error-800x331.png?resize=800%2C331&ssl=1 +[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/script-file-not-found-error-800x259.png?resize=800%2C259&ssl=1 +[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/path-location.png?resize=800%2C241&ssl=1 +[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/adding-executable-to-PATH-variable-linux.png?resize=800%2C313&ssl=1 +[13]: https://itsfoss.com/wp-content/uploads/2022/01/alias-in-ubuntu.png \ No newline at end of file diff --git a/published/20211022 How to Install Visual Studio Code Extensions.md b/published/202210/20211022 How to Install Visual Studio Code Extensions.md similarity index 100% rename from published/20211022 How to Install Visual Studio Code Extensions.md rename to published/202210/20211022 How to Install Visual Studio Code Extensions.md diff --git a/published/20220129 Reasons for servers to support IPv6.md b/published/202210/20220129 Reasons for servers to support IPv6.md similarity index 100% rename from published/20220129 Reasons for servers to support IPv6.md rename to published/202210/20220129 Reasons for servers to support IPv6.md diff --git a/published/202210/20220616 Using habits to practice open organization principles.md b/published/202210/20220616 Using habits to practice open organization principles.md new file mode 100644 index 0000000000..d549c013a5 --- /dev/null +++ b/published/202210/20220616 Using habits to practice open organization principles.md @@ -0,0 +1,141 @@ +[#]: subject: "Using habits to practice open organization principles" +[#]: via: "https://opensource.com/open-organization/22/6/using-habits-practice-open-organization-principles" +[#]: author: "Ron McFarland https://opensource.com/users/ron-mcfarland" +[#]: collector: "lkxed" +[#]: translator: "Donkey-Hao" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15182-1.html" + +利用习惯练习开放式组织原则 +====== + +> 你可以按照以下步骤,来养成符合开放文化的习惯,并改掉那些不符合开放文化的习惯。 + +![Selfcare, drinking tea on the porch][1] + +很久以来,我就对习惯很感兴趣。几年前,我做了一次关于习惯利弊的演讲,并且介绍了如何改变坏习惯、养成好习惯。不久前,我阅读了 Art Markman 教授的 《Smart Thinking》一书,这本书主要讨论的也是习惯。或许你会问习惯与 [开放式组织的原则][2] 有什么关系?这其中有一定的联系!我将会分成两篇文章,来解释你可以如何管理你的习惯。 + +在本文中,我们将讨论习惯如何工作的,以及更重要的是你如何去开始改变你的习惯。在下一篇文章中,我们将回顾 Markman 教授在他书中所表达的思想。 + +### 开放式组织原则和习惯的交集 + +设想你学习过开放式组织的原则,尽管你认为它们很有趣并且很有价值,但是你还没有对这些原则形成自己的习惯。以下就是你现实中会表现出来的样子。 + +社区:如果你面对一项重要挑战,但是你不知道如何独自解决它,你很有可能会由于习惯而放弃这项挑战。养成与由志同道合的人组成的社区,共同解决问题的习惯,不是更好吗? + +协作:假设你认为你不善于合作,你喜欢独立完成任务。你知道有一些需要合作才能完成的事情,但是你并没有参与合作的习惯。为了弥补这种情况,你必须养成与他人更多合作的习惯。 + +信息共享:假如说你喜欢将你所做的事以及所知道的东西当作秘密。但是,你知道如果你不共享信息,你也无法从他人那里获取有用的信息。因此,你必须拥有共享信息的习惯。 + +包容性:想象一下,你与你不熟悉的人,或者是在个性、文化还是语言上都与你不同的人一起工作,你会感到不自在。但是,你知道如果你想要成功的话,你必须要和各种各样的人一同工作。那你该如何培养包容的习惯呢? + +适应能力:假设当你所做的事情不再能达到你所希望的结果之后,你往往会拒绝改变。但是,你知道你必须适应这种情况,并重新调整你的努力,那你如何才能养成适应的习惯呢? + +### 习惯是什么? + +在我给出关于上述开放式组织原则的示例之前,我想先解释一下习惯的一些相关特征。 + +* 习惯是重复很多次的行为,最终习惯会成为你下意识的行为。 +* 习惯是自动的并且当时会感觉良好。当一个人在养成习惯后,做习惯行为会使他感觉很好,但是当他跳出习惯做事时,会感到不舒服。或许之后他会再次考虑尝试。 +* 一些习惯是有益的,并且能够节省你很多的能量。大脑只占身体质量的 2%,但是却会消耗 20% 的能量。因为大脑在思考和集中精力上需要消耗很多能量,你可以通过培养下意识的习惯来节省能量。 +* 一些习惯对你有害,因此你渴望改变这些坏习惯。 +* 所有的习惯都会给你回报,即使回报是短暂的。 +* 习惯是基于你熟悉的事情和你知道的东西而形成的,即使你可能并不一定需要这个习惯。 + +### 养成习惯的 3 个步骤 + +1. 提示(触发器):首先,提示或者触发器会告诉大脑,进入之前学习的习惯性行为的自动模式之中。这里的提示可以是某件事,比如每天在确定的时间点、在确定的地点,看到一包糖果或者看到电视购物节目,亦或者看到某个特定的人。时间压力会触发你去做例行事项(routine)。在令人崩溃的环境下也会触发例行事项。简而言之,某件事提醒你开始做一些固定的事情。 +2. 例行事项routine:例行事项会被触发。一个例行事项是一系列的身体、心理或者情绪上的表现,可以是非常复杂的,也可以十分简单。诸如与心情相关的一些习惯可以在很短时间内被触发。 +3. 奖励:最后一步是奖励,奖励会帮助你的大脑计算一个特定的行为是否值得记住。奖励的范围很广泛,可以是食物或者其他令你感到快乐的东西。 + +### 商业环境中的坏习惯 + +习惯不仅仅是个人行为。所有的组织或多或少都有一些好的坏的制度习惯。然而,一些组织会有先见之明地设计好他们的习惯,而其他组织却不会设计习惯,只是随着竞争或者担心落伍而演变。以下是一些组织的坏习惯示例: + +* 总是晚提交报告 +* 单独工作或者分组合作,然而采用相反的方法才合适 +* 上级对下级施压很大 +* 不关心销售额的下降 +* 由于内卷,销售团队之间不协同合作 +* 让一个健谈的人主导会议 + +### 逐步改变习惯 + +习惯不是一成不变的,你可以改变你的行为习惯。首先,要知道不能一下子改变所有坏习惯。相反,先找到一个关键的习惯进行改变,这会产生小而快速的奖励。请记住,改变了一个关键的习惯后,会产生连锁反应。 + +以下是你可以用来改变任何习惯的四步框架,其中还包括与开放式组织原则相关的习惯。 + +#### 第一步:调整例行事项 + +确定你的习惯循环和例行事项,例如,当面临一件你无法独自解决的重大挑战之时。例行事项(你表现出的行为)最容易确定,所以先从它下手:例如,“在我的组织中,没人愿意和别人讨论问题。大家都会早早地放弃”。决定好你想要调整、改变或者学习的事情:例如:“每次重大挑战到来的时候,我应该和他人讨论一下,并且尝试建立一个志同道合、有能力解决问题的社区。” + +#### 第二步:有奖励的实验 + +奖励是很重要的,因为它会满足你强烈的渴望。但是,我们通常没有意识到强烈的渴望会驱动我们的行为。只有在事后,才会被我们察觉。比方说,开会时很多次你都想尽快离开会议室,避免讨论话题,即使内心清楚你应该弄明白如何解决问题。 + +要了解强烈的渴望是什么,你必须要实验。这可能会花费你几天、几周甚至更久的时间。你必须要感受到触发压力,才能完全识别它。例如,问问你自己当你试图推卸责任时的感受。 + +把你自己当作科学家,进行实验并收集数据。这是你调查研究的步骤: + +1. 第一个行为结束后,开始调整后面的行为,看看有没有奖励变化。例如,如果你每次碰到自己无法解决的挑战时都放弃,那么奖励就是不承担责任的解脱。更好的解决方法是与至少一个同样关心该问题的人讨论该问题。关键是要测试不同的假设,以确定哪种渴望驱使你的日常生活。你真的想逃避责任吗? +2. 在经历四至五个不同的例行事项和奖励之后,写下在收到每个奖励后立即想到的前三、四件事。例如,你不会在面对挑战时放弃,而是与其他人讨论这个问题。然后,你决定可以做什么。 +3. 写下你的感受或渴望后,设置一个 15 分钟的计时器。当计时器结束时,问问自己是否依旧渴望。在屈服于渴望之前,请休息一会儿并再考虑一两次这个问题。这会迫使你意识到这一刻,并帮助你稍后回忆起你当时的想法。 +4. 试着记住你在那一刻的想法和感受,然后在例行事项后 15 分钟。如果渴望消失了,你就已经确定了回报是什么。 + +#### 第三步:分析出坏习惯的提示或触发器 + +坏习惯的提示信息很难鉴定,因为通常有太多信息干扰你未定型的行为。要在干扰中鉴别提示,你可以在你的坏习惯出现的时候,观察以下四个因素: + +地点:它在哪里发生?例如:“我最大的挑战在会议中出现。” + +时间:它什么时候出现?例如:“如果我累了,下午的会议就是在浪费时间,因为我没兴趣付出努力。” + +感受:你当时的情绪状态是怎样的?例如:“当我听到这个问题时,我感到压力山大并且很沮丧。” + +人们:当时有谁或者哪一类人在你周围,还是你是独自一人?例如:“在会议上,大多数人似乎对这个问题也不感兴趣。剩下的人主导会议讨论。” + +#### 第四步:制定养成好习惯的计划 + +一旦你确定奖励可以驱动你的行为,某些提示会触发你的坏习惯,那你就可以开始改变你的行动。请跟随以下三个简单的步骤: + +1. 首先,规划好习惯的提示。例如:“在会议上,我将发现并将我的注意力集中在重要的问题上。” +2. 其次,选择一种能带来相同回报的好行为,但不会遭受你现在坏习惯的惩罚。例如:“我将找到解决这个问题的方法,并考虑我需要哪些资源和技能才能成功。当我创建一个能够成功解决问题的社区时,我会感觉很棒。” +3. 最后,让你选择的行为成为深思熟虑的选择,直到你不再需要考虑它,就能下意识地做它了。例如:“我将有意识地关注重要问题,直到我可以不假思索地做到这一点。我会查看近期会议的安排表,这样我就可以提前知道会发生什么。在每次会议开始前和会议期间,我会问自己‘为什么我会来开会’,来确保我集中注意于重要的事情。” + +#### 制定计划来避免忘记必做事项 + +为了成功地开始做你经常忘记的事情,请按照以下步骤: + +1. 计划你想要做什么 +2. 决定何时完成 +3. 将计划分为必要的小任务 +4. 用计时器或者日常计划进行提示,并开始每项任务 +5. 按计划完成每个任务 +6. 按时完成后就奖励自己 + +### 习惯的改变 + +习惯的改变需要很长时间。有时候互助小组会帮助你改变习惯。有时候,在低压力环境中,进行大量的练习和角色预演能够更好地帮助你改变。想要找到有效的奖励,你需要不断的尝试。 + +有时,习惯是更重要、更深层次问题的反映。在这些情况下,你可能需要专业帮助。但是,如果你有改变的愿望,并接受在此过程中会有一些小失败,你就可以控制任何习惯。 + +在本文中,我使用了使用 *提示-例行事项-奖励* 三个过程的社区开发示例。它同样可以应用于其他开放式组织的原则。我希望这篇文章能让你思考如何通过了解习惯如何运作、采取措施改变习惯,以及制定计划避免忘记你想做的事情,来管理习惯。无论是开放式组织原则,还是其他任何东西,你现在都可以判断出提示、常规和奖励。当提示出现时,这将引导你制定改变习惯的计划。 + +在我的下一篇文章中,我将通过 Art Markman 教授在《Smart Thinking》中观点来继续讨论习惯。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/open-organization/22/6/using-habits-practice-open-organization-principles + +作者:[Ron McFarland][a] +选题:[lkxed][b] +译者:[Donkey-Hao](https://github.com/Donkey-Hao) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/ron-mcfarland +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/lead-images/coffee_tea_selfcare_wfh_porch_520.png +[2]: https://theopenorganization.org/definition/open-organization-definition/ diff --git a/published/202210/20220621 7 summer book recommendations from open source enthusiasts.md b/published/202210/20220621 7 summer book recommendations from open source enthusiasts.md new file mode 100644 index 0000000000..66784a6b0c --- /dev/null +++ b/published/202210/20220621 7 summer book recommendations from open source enthusiasts.md @@ -0,0 +1,197 @@ +[#]: subject: "7 summer book recommendations from open source enthusiasts" +[#]: via: "https://opensource.com/article/22/6/2022-opensourcecom-summer-reading-list" +[#]: author: "Joshua Allen Holm https://opensource.com/users/holmja" +[#]: collector: "lkxed" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15157-1.html" + +来自开源爱好者的 7 本读物推荐 +====== + +> 社区的成员们推荐这些书籍,涵盖了从有趣的悬疑小说到发人深省的非小说作品的各种类型,你一定能从中找到一本你想看的书! + +![](https://img.linux.net.cn/data/attachment/album/202210/20/115515jsppwzz8s1ssle7p.jpg) + +很高兴能为大家介绍 Opensource.com 的 2022 年暑期阅读清单。今年的榜单包含来自 Opensource.com 社区成员的 7 本精彩的读物推荐。你可以发现各种各样的书籍,涵盖从有趣舒适的谜团到探索发人深省主题的非小说类作品。我希望你能在这个榜单中找到感兴趣的书本。 + +希望你喜欢! + +### 《每个 Java 程序员都应该知道的 97 件事:专家的集体智慧》 + +![Book title 97 Things Every Java Programmer Should Know][4] + +> **《[每个 Java 程序员都应该知道的 97 件事:专家的集体智慧][5]97 Things Every Java Programmer Should Know: Collective Wisdom from the Experts》** + +编辑:Kevlin Henney 和 Trisha Gee + +*[由 Seth Kenlon 推荐][6]* + +这本书是由 73 位在软件行业工作的不同作者共同撰写。它的优秀之处在于它不仅仅适用于 Java 编程。当然,有些章节会涉及 Java,但是也还有一些其他话题,例如了解你的容器环境、如何更快更好地交付软件、以及不要隐藏你的开发工具,这些适用于任何语言的开发。 + +更好的是,有些章节同样适用于生活中的问题。将问题和任务分成小的部分是解决任何问题的好建议;建立多样化的团队对所有合作者都很重要;由从散乱的一块块拼图到拼好的完成品,看起来像是拼图玩家的思路,也适用于不同的工作角色。 + +每章只有几页,总共有 97 个章节,你可以轻松跳过不适用于你自己的章节。无论你是一直在写 Java 代码、或者只是学过一点 Java,亦或是尚未开始学习 Java,对于对代码和软件开发过程感兴趣的极客来说,这都会是一本好书。 + +### 《城市不是计算机:其他的城市智能》 + +![Book title A City is Not a Computer][7] + +> **《[城市不是计算机:其他的城市智能][8]A City is Not a Computer: Other Urban Intelligences》** + +作者:Shannon Mattern + +*[由 Scott Nesbitt 推荐][9]* + +如今,让一切变得智能已经成为一种 *时尚*:我们的手机、家用电器、手表、汽车,甚至是城市都变得智能化了。 + +对于城市的智能化,这意味着传感器变得无处不在,在我们开展业务时收集数据,并根据这些数据向我们推送信息(无论数据有用与否)。 + +这就引出了一个问题,将所有高科技技术嵌入到城市中是否会使得城市智能化呢?在《城市不是计算机》这本书中,作者 Shannon Mattern 认为并不是这样的。 + +城市智能化的目标之一是为市民提供服务和更好的城市参与感。Mattern 指出,但是实际上,智慧城市“希望将技术专家的管理想法与公共服务相融合,从而将公民重新设置为‘消费者’和‘用户’”,然而,这并不是在鼓励公民积极参与城市的生活和治理。 + +第二个问题是关于智慧城市收集的数据。我们不知道收集了什么数据,以及收集了多少数据。我们也不知道这些数据使用在什么地方,以及是谁使用的。收集的数据太多了,以至于处理数据的市政工作人员会不堪重负。他们无法处理所有数据,因此他们专注于短期容易实现的任务,而忽略了更深层次和更紧迫的问题。这绝对达不到在推广智慧城市时所承诺的目标:智慧城市将成为解决城市困境的良药。 + +《城市不是计算机》是一本短小精悍、经过深入研究的、反对拥抱智慧城市的论证。这本书让我们思考智慧城市的真正目的:要让百姓真正受益于城市智能化,并引发我们的思考:发展智慧城市是否必要呢。 + +### 《git sync 谋杀案》 + +![Book title git sync murder][10] + +> **《[git sync 谋杀案][11]git sync murder》** + +作者:Michael Warren Lucas + +*[由 Joshua Allen Holm 推荐][12]* + +Dale Whitehead 宁愿呆在家里,通过他的电脑终端与世界连接,尤其是在他参加的最后一次会议上发生的事情之后。在那次会议上,Dale 扮演了一个业余侦探的角色,解决了一桩谋杀案。你可以在该系列的第一本书《git commit 谋杀案git commit murder》中读到那个案件。 + +现在,Dale 回到家,参加另一个会议,他再次发现自己成为了侦探。在《git sync 谋杀案git sync murder》中,Dale 参加了一个当地科技会议/科幻大会,会议上发现一具尸体。这是谋杀,还是只是一场意外?现在,Dale 是这些问题的“专家”,他发现自己被卷入了这件事,并要亲自去弄清楚到底发生了什么。再多说的话就剧透了,所以我能说《git sync 谋杀案》这本书十分引人入胜,而且读起来很有趣。不必先阅读《git commit 谋杀案》,才能阅读《git sync 谋杀案》,但我强烈推荐一起阅读该系列中的这两本书。 + +作者 Michael Warren Lucas 的《git 谋杀案》系列非常适合喜欢悬疑小说的科技迷。Lucas 写过很多复杂的技术题材的书,这本书也延续了他的技术题材,《git sync 谋杀案》这本书中的人物在会议活动上谈论技术话题。如果你因为新冠疫情,最近没有参加过会议,怀念参会体验的话,Lucas 将带你参加一个技术会议,其中还有一个谋杀之谜以待解决。Dale Whitehead 是一个有趣的业余侦探,我相信大多数读者会喜欢和 Dale 一起参加技术会议,并充当侦探破解谜案的。 + +### 《像女孩一样踢球》 + +![Book title Kick Like a Girl][13] + +> **《[像女孩一样踢球][14]Kick Like a Girl》** + +作者:Melissa Di Donato Roos + +*[由 Joshua Allen Holm 推荐][15]* + +没有人喜欢被孤立,当女孩 Francesca 想在公园里踢足球时,她也是这样。男孩们不会和她一起玩,因为她是女孩,所以她不高兴地回家了。她的母亲安慰她,讲述了有重要影响力的著名女性的故事。《像女孩一样踢球》中详述的历史人物包括历史中来自许多不同领域的女性。读者将了解 Frida Kahlo、Madeleine Albright、阿达·洛芙莱斯Ada Lovelace、Rosa Parks、Amelia Earhart、玛丽·居里Marie Curie(居里夫人)、Valentina Tereshkova、弗洛伦斯·南丁格尔Florence Nightingale 和 Malala Yousafzai 的故事。听完这些鼓舞人心的人物故事后,Francesca 回到公园,向男孩们发起了一场足球挑战。 + +《像女孩一样踢球》这本书的特色是作者 Melissa Di Donato Roos(SUSE 的 CEO,LCTT 译注:SUSE 是一家总部位于德国的软件公司,创立于 1992 年,以提供企业级 Linux 为主要业务)引人入胜的写作和 Ange Allen 的出色插图。这本书非常适合年轻读者,他们会喜欢押韵的文字和书中的彩色插图。Melissa Di Donato Roos 还写了另外两本童书,《美人鱼如何便便How Do Mermaids Poo?》和《魔盒The Magic Box》,这两本书也都值得一读。 + +### 《这是我的!:所有权的潜规则如何控制着我们的生活》 + +![Book title Mine!][16] + +> **《[这是我的!:所有权的潜规则如何控制着我们的生活][17]Mine!: How the Hidden Rules of Ownership Control Our Lives》** + +作者:Michael Heller 和 James Salzman + +*[由 Bryan Behrenshausen 推荐][18]* + +作者 Michael Heller 和 James Salzman 在文章《这是我的!》中写道:“你对所有权的很多了解都是错误的”。这是一种被吸引到开源领域的人不得不接受所有权规则的对抗性邀请。这本书肯定是为开源爱好者而写的,他们对代码、思想、各种知识产权的所有权的看法往往与主流观点和普遍接受的认知不同。在本书中,Heller 和 Salzman 列出了“所有权的隐藏规则”,这些规则管理着谁能控制对什么事物的访问。这些所有权规则是微妙的、强大的、有着深刻的历史惯例。这些所有权规则已经变得如此普遍,以至于看起来无可争议,这是因为“先到先得”或“种瓜得瓜,种豆得豆”的规则已经成为陈词滥调。然而,我们看到它们无处不在:在飞机上,为宝贵的腿部空间而战;在街道上,邻居们为铲好雪的停车位发生争执;在法庭上,陪审团决定谁能控制你的遗产和你的 DNA。在当下的数字时代,所有权的替代理论能否为重新思考基本权利创造空间?作者们认为这是可以的。如果这是正确的,我们可能会回应:在未来,开源软件能否成为所有权运作的模型呢? + +### 《并非所有童话故事都有幸福的结局:雪乐山公司的兴衰》 + +![Book Title Not All Fairy Tales Have Happy Endings][19] + +> **《[并非所有童话故事都有幸福的结局:雪乐山公司的兴衰][20]Not All Fairy Tales Have Happy Endings: The Rise and Fall of Sierra On-Line》** + +作者:Ken Williams + +*[由 Joshua Allen Holm 推荐][21]* + +在 1980 年代和 1990 年代,雪乐山公司Sierra On-Line是计算机软件行业的巨头。这家由 Ken 和 Roberta Williams 夫妻创立的公司,出身并不起眼,但却发布了许多标志性的电脑游戏。《国王密使King's Quest》、《宇宙传奇Space Quest》、《荣耀任务Quest for Glory》、《Leisure Suit Larry》 和 《狩魔猎人Gabriel Knight》 只是该公司几个最大的专属系列中的很小一部分。 + +《并非所有童话故事都有幸福的结局》这本书,涵盖了从雪乐山公司发布第一款游戏 《[神秘屋][22]Mystery House》,到该公司不幸地被 CUC 国际公司收购以及后续的所有内容。雪乐山品牌在被收购后仍存活了一段时间,但 Williams 创立的雪乐山已不复存在。Ken Williams 以一种只有他才能做到的方式,讲述了雪乐山公司的整个历史。雪乐山的历史叙述穿插了一些 Williams 提出的管理和计算机编程建议的章节。虽然 Ken Williams 在写这本书时,已经离开这个行业很多年了,但他的建议仍然非常重要。 + +虽然雪乐山公司已不复存在,但该公司对计算机游戏行业产生了持久的影响。对于任何对计算机软件历史感兴趣的人来说,《并非所有童话故事都有美好的结局》都是值得一读的。雪乐山公司在其鼎盛时期处于游戏开发的最前沿,从带领公司走过那个激动人心的岁月的 Ken Williams 身上,我们可以学到许多宝贵的经验。 + +### 《新机器的灵魂》 + +![Book title The Soul of a New Machine][23] + +> **《[新机器的灵魂][24]The Soul of a New Machine》** + +作者:Tracy Kidder + +*[由 Guarav Kamathe 推荐][25]* + +我是计算机历史的狂热读者。知道这些人们如此依赖(并且经常被认为是理所当然)的计算机是如何形成的,真是令人着迷!我是在 [Bryan Cantrill][27] 的博客文章中,第一次听说 《[新机器的灵魂][26]》这本书的。这是一本由 [Tracy Kidder][29] 编著的非虚构书籍,于 1981 年出版,作者 Tracy Kidder也因此获得了 [普利策奖][30]。故事发生在 1970 年代,想象一下你是负责设计 [下一代计算机][31] 工程团队中的一员。故事的背景是在通用数据公司Data General Corporation,该公司当时是一家小型计算机供应商,正在与美国数字设备公司Digital Equipment Corporation(DEC)的 32 位 VAX 计算机相竞争。该书概述了通用数据公司内部两个相互竞争的团队,都想在设计新机器上一展身手,结果导致了一场争斗。接下来,细致地描绘了随之展开的事件。这本书深入地讲述了相关工程师的思想、他们的工作环境、他们在此过程中面临的技术挑战、他们是如何克服这些困难的、以及压力如何影响到了他们的个人生活等等。任何想知道计算机是怎么制造出来的人都应该阅读这本书。 + +以上就是 2022 年的推荐阅读书目。它提供了很多非常棒的选择,我相信读者们能得到数小时发人深省的阅读时光。想获取更多书籍推荐,请查看我们历年的阅读书目。 + +* [2021 年 Opensource.com 推荐阅读书目][32] +* [2020 年 Opensource.com 推荐阅读书目][33] +* [2019 年 Opensource.com 推荐阅读书目][34] +* [2018 年 Open Organization 推荐阅读书目][35] +* [2016 年 Opensource.com 推荐阅读书目][36] +* [2015 年 Opensource.com 推荐阅读书目][37] +* [2014 年 Opensource.com 推荐阅读书目][38] +* [2013 年 Opensource.com 推荐阅读书目][39] +* [2012 年 Opensource.com 推荐阅读书目][40] +* [2011 年 Opensource.com 推荐阅读书目][41] +* [2010 年 Opensource.com 推荐阅读书目][42] + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/6/2022-opensourcecom-summer-reading-list + +作者:[Joshua Allen Holm][a] +选题:[lkxed][b] +译者:[chai001125](https://github.com/chai001125) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/holmja +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/lead-images/tea-cup-mug-flowers-book-window.jpg +[2]: https://unsplash.com/@sixteenmilesout?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText +[3]: https://unsplash.com/s/photos/tea?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText +[4]: https://opensource.com/sites/default/files/2022-06/97_Things_Every_Java_Programmer_Should_Know_1.jpg +[5]: https://www.oreilly.com/library/view/97-things-every/9781491952689/ +[6]: https://opensource.com/users/seth +[7]: https://opensource.com/sites/default/files/2022-06/A_City_is_Not_a_Computer_0.jpg +[8]: https://press.princeton.edu/books/paperback/9780691208053/a-city-is-not-a-computer +[9]: https://opensource.com/users/scottnesbitt +[10]: https://opensource.com/sites/default/files/2022-06/git_sync_murder_0.jpg +[11]: https://mwl.io/fiction/crime#gsm +[12]: https://opensource.com/users/holmja +[13]: https://opensource.com/sites/default/files/2022-06/Kick_Like_a_Girl.jpg +[14]: https://innerwings.org/books/kick-like-a-girl +[15]: https://opensource.com/users/holmja +[16]: https://opensource.com/sites/default/files/2022-06/Mine.jpg +[17]: https://www.minethebook.com/ +[18]: https://opensource.com/users/bbehrens +[19]: https://opensource.com/sites/default/files/2022-06/Not_All_Fairy_Tales.jpg +[20]: https://kensbook.com/ +[21]: https://opensource.com/users/holmja +[22]: https://en.wikipedia.org/wiki/Mystery_House +[23]: https://opensource.com/sites/default/files/2022-06/The_Soul_of_a_New_Machine.jpg +[24]: https://www.hachettebookgroup.com/titles/tracy-kidder/the-soul-of-a-new-machine/9780316204552/ +[25]: https://opensource.com/users/gkamathe +[26]: https://en.wikipedia.org/wiki/The_Soul_of_a_New_Machine +[27]: https://en.wikipedia.org/wiki/Bryan_Cantrill +[28]: http://dtrace.org/blogs/bmc/2019/02/10/reflecting-on-the-soul-of-a-new-machine/ +[29]: https://en.wikipedia.org/wiki/Tracy_Kidder +[30]: https://www.pulitzer.org/winners/tracy-kidder +[31]: https://en.wikipedia.org/wiki/Data_General_Eclipse_MV/8000 +[32]: https://opensource.com/article/21/6/2021-opensourcecom-summer-reading-list +[33]: https://opensource.com/article/20/6/summer-reading-list +[34]: https://opensource.com/article/19/6/summer-reading-list +[35]: https://opensource.com/open-organization/18/6/summer-reading-2018 +[36]: https://opensource.com/life/16/6/2016-summer-reading-list +[37]: https://opensource.com/life/15/6/2015-summer-reading-list +[38]: https://opensource.com/life/14/6/annual-reading-list-2014 +[39]: https://opensource.com/life/13/6/summer-reading-list-2013 +[40]: https://opensource.com/life/12/7/your-2012-open-source-summer-reading +[41]: https://opensource.com/life/11/7/summer-reading-list +[42]: https://opensource.com/life/10/8/open-books-opensourcecom-summer-reading-list diff --git a/published/20220902 Julia and Python- Which Language is Quicker-.md b/published/202210/20220902 Julia and Python- Which Language is Quicker-.md similarity index 100% rename from published/20220902 Julia and Python- Which Language is Quicker-.md rename to published/202210/20220902 Julia and Python- Which Language is Quicker-.md diff --git a/published/20220902 Where is DevOps Headed-.md b/published/202210/20220902 Where is DevOps Headed-.md similarity index 100% rename from published/20220902 Where is DevOps Headed-.md rename to published/202210/20220902 Where is DevOps Headed-.md diff --git a/published/20220906 Advantages and Disadvantages of Using Linux.md b/published/202210/20220906 Advantages and Disadvantages of Using Linux.md similarity index 100% rename from published/20220906 Advantages and Disadvantages of Using Linux.md rename to published/202210/20220906 Advantages and Disadvantages of Using Linux.md diff --git a/translated/tech/20220912 Python Microservices Using Flask on Kubernetes.md b/published/202210/20220912 Python Microservices Using Flask on Kubernetes.md similarity index 57% rename from translated/tech/20220912 Python Microservices Using Flask on Kubernetes.md rename to published/202210/20220912 Python Microservices Using Flask on Kubernetes.md index 47faa340af..97cd07229d 100644 --- a/translated/tech/20220912 Python Microservices Using Flask on Kubernetes.md +++ b/published/202210/20220912 Python Microservices Using Flask on Kubernetes.md @@ -3,14 +3,14 @@ [#]: author: "Krishna Mohan Koyya https://www.opensourceforu.com/author/krishna-mohan-koyya/" [#]: collector: "lkxed" [#]: translator: "MjSeven" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15154-1.html" -在 Kubernetes 上使用 Flask 的 Python 微服务 +在 Kubernetes 上使用 Flask 搭建 Python 微服务 ====== -![Python 微服务][6] +![](https://img.linux.net.cn/data/attachment/album/202210/19/124429nmw0xmfz3x3mrrf2.jpg) *微服务遵循领域驱动设计(DDD),与开发平台无关。Python 微服务也不例外。Python3 的面向对象特性使得按照 DDD 对服务进行建模变得更加容易。本系列的第 10 部分演示了如何将用户管理系统的查找服务作为 Python 微服务部署在 Kubernetes 上。* @@ -24,17 +24,17 @@ Python 是一种通用编程语言,已经存在了大约 30 年。早期,它是自动化脚本的首选。然而,随着 Django 和 Flask 等框架的出现,它的受欢迎程度越来越高,现在各种领域中都在应用它,如企业应用程序开发。数据科学和机器学习进一步推动了它的发展,Python 现在是三大编程语言之一。 -许多人将 Python 的成功归功于它容易编码。这只是一部分原因。只要你的目标是开发小型脚本,Python 就像一个玩具,你会非常喜欢它。然而,当你进入严肃的大规模应用程序开发领域时,你将不得不处理大量的 if 和 else,Python 变得与任何其他平台一样好或一样坏。例如,采用一种面向对象的方法!许多 Python 开发人员甚至可能没意识到 Python 支持类、继承等功能。Python 确实支持成熟的面向对象开发,但是有它自己的方式 -- Pythonic!让我们探索一下! +许多人将 Python 的成功归功于它容易编码。这只是一部分原因。只要你的目标是开发小型脚本,Python 就像一个玩具,你会非常喜欢它。然而,当你进入严肃的大规模应用程序开发领域时,你将不得不处理大量的 `if` 和 `else`,Python 变得与任何其他平台一样好或一样坏。例如,采用一种面向对象的方法!许多 Python 开发人员甚至可能没意识到 Python 支持类、继承等功能。Python 确实支持成熟的面向对象开发,但是有它自己的方式 -- Pythonic!让我们探索一下! ### 领域模型 -添加服务通过将数据保存到一个 MySQL 数据库中来将用户添加到系统中。查找服务的目标是提供一个 REST API 按用户名查找用户。域模型如图 1 所示。它主要由一些值对象组成,如用户实体的用户名、电话以及 UserRepository。 +`AddService` 通过将数据保存到一个 MySQL 数据库中来将用户添加到系统中。`FindService` 的目标是提供一个 REST API 按用户名查找用户。域模型如图 1 所示。它主要由一些值对象组成,如 `User` 实体的`Name`、`PhoneNumber` 以及 `UserRepository`。 ![图 1: 查找服务的域模型][1] -让我们从用户名开始。由于它是一个值对象,因此必须在创建时进行验证,并且必须保持不可变。基本结构如所示: +让我们从 `Name` 开始。由于它是一个值对象,因此必须在创建时进行验证,并且必须保持不可变。基本结构如所示: -```python +``` class Name: value: str def __post_init__(self): @@ -42,11 +42,11 @@ class Name: raise ValueError("Invalid Name") ``` -如你所见,用户名包含一个字符串类型的值。作为后期初始化的一部分,我们会验证它。 +如你所见,`Name` 包含一个字符串类型的值。作为后期初始化的一部分,我们会验证它。 -Python 3.7 提供了 @dataclass 装饰器,它提供了许多开箱即用的数据承载类的功能,如构造函数、比较运算符等。如下是装饰后的 Name 类: +Python 3.7 提供了 `@dataclass` 装饰器,它提供了许多开箱即用的数据承载类的功能,如构造函数、比较运算符等。如下是装饰后的 `Name` 类: -```python +``` from dataclasses import dataclass @dataclass @@ -57,30 +57,30 @@ class Name: raise ValueError("Invalid Name") ``` -以下代码可以创建一个 Name 对象: +以下代码可以创建一个 `Name` 对象: -```python +``` name = Name("Krishna") ``` -value 属性可以按照如下方式读取或写入: +`value` 属性可以按照如下方式读取或写入: -```python +``` name.value = "Mohan" print(name.value) ``` -可以很容易地与另一个 Name 对象比较,如下所示: +可以很容易地与另一个 `Name` 对象比较,如下所示: -```python +``` other = Name("Mohan") if name == other: print("same") ``` -如你所见,对象比较的是值而不是引用。这一切都是开箱即用的。我们还可以通过冻结对象使对象不可变。这是 Name 值对象的最终版本: +如你所见,对象比较的是值而不是引用。这一切都是开箱即用的。我们还可以通过冻结对象使对象不可变。这是 `Name` 值对象的最终版本: -```python +``` from dataclasses import dataclass @dataclass(frozen=True) @@ -91,9 +91,9 @@ class Name: raise ValueError("Invalid Name") ``` -电话也遵循类似的方法,因为它也是一个值对象: +`PhoneNumber` 也遵循类似的方法,因为它也是一个值对象: -```python +``` @dataclass(frozen=True) class PhoneNumber: value: int @@ -102,9 +102,9 @@ class PhoneNumber: raise ValueError("Invalid Phone Number") ``` -用户类是一个实体,不是一个值对象。换句话说,用户是可变的。以下是结构: +`User` 类是一个实体,不是一个值对象。换句话说,`User` 是可变的。以下是结构: -```python +``` from dataclasses import dataclass import datetime @@ -121,11 +121,11 @@ class User: self.since = datetime.datetime.now() ``` -你能观察到用户并没有冻结,因为我们希望它是可变的。但是,我们不希望所有属性都是可变的。标识字段如 _name 和 _since 是希望不会修改的。那么,这如何做到呢? +你能观察到 `User` 并没有冻结,因为我们希望它是可变的。但是,我们不希望所有属性都是可变的。标识字段如 `_name` 和 `_since` 是希望不会修改的。那么,这如何做到呢? -Python3 提供了所谓的描述符协议,它会帮助我们正确定义 getters 和 setters。让我们使用 @property 装饰器将 getter 添加到 User 的所有三个字段中。 +Python3 提供了所谓的描述符协议,它会帮助我们正确定义 getter 和 setter。让我们使用 `@property` 装饰器将 getter 添加到 `User` 的所有三个字段中。 -```python +``` @property def name(self) -> Name: return self._name @@ -139,9 +139,9 @@ def since(self) -> datetime.datetime: return self._since ``` -电话字段的 setter 可以使用 @<字段>.setter 来装饰: +`phone` 字段的 setter 可以使用 `@<字段>.setter` 来装饰: -```python +``` @phone.setter def phone(self, phone: PhoneNumber) -> None: if phone is None: @@ -149,25 +149,25 @@ def phone(self, phone: PhoneNumber) -> None: self._phone = phone ``` -通过重写 \_\_str\_\_() 函数,也可以为 User 提供一个简单的打印方法: +通过重写 `__str__()` 函数,也可以为 `User` 提供一个简单的打印方法: -```python +``` def __str__(self): return self.name.value + " [" + str(self.phone.value) + "] since " + str(self.since) ``` 这样,域模型的实体和值对象就准备好了。创建异常类如下所示: -```python +``` class UserNotFoundException(Exception): pass ``` -域模型现在只剩下 UserRepository 了。Python 提供了一个名为 abc 的有用模块来创建抽象方法和抽象类。因为 UserRepository 只是一个接口,所以我们可以使用 abc 模块。 +域模型现在只剩下 `UserRepository` 了。Python 提供了一个名为 `abc` 的有用模块来创建抽象方法和抽象类。因为 `UserRepository` 只是一个接口,所以我们可以使用 `abc` 模块。 -任何继承自 abc.ABC 的类都将变为抽象类,任何带有 @abc.abstractmethod 装饰器的函数都会变为一个抽象函数。下面是 UserRepository 的结构: +任何继承自 `abc.ABC` 的类都将变为抽象类,任何带有 `@abc.abstractmethod` 装饰器的函数都会变为一个抽象函数。下面是 `UserRepository` 的结构: -```python +``` from abc import ABC, abstractmethod class UserRepository(ABC): @@ -176,9 +176,9 @@ class UserRepository(ABC): pass ``` -UserRepository 遵循仓储模式。换句话说,它在 User 实体上提供适当的 CRUD 操作,而不会暴露底层数据存储语义。在本例中,我们只需要 fetch() 操作,因为查找服务只查找用户。 +`UserRepository` 遵循仓储模式。换句话说,它在 `User` 实体上提供适当的 CRUD 操作,而不会暴露底层数据存储语义。在本例中,我们只需要 `fetch()` 操作,因为 `FindService` 只查找用户。 -因为 UserRepository 是一个抽象类,我们不能从抽象类创建实例对象。创建对象必须依赖于一个具体类实现这个抽象类。数据层 UserRepositoryImpl 提供了 UserRepository 的具体实现: +因为 `UserRepository` 是一个抽象类,我们不能从抽象类创建实例对象。创建对象必须依赖于一个具体类实现这个抽象类。数据层 `UserRepositoryImpl` 提供了 `UserRepository` 的具体实现: ``` class UserRepositoryImpl(UserRepository): @@ -186,9 +186,9 @@ class UserRepositoryImpl(UserRepository): pass ``` -由于添加服务将用户数据存储在一个 MySQL 数据库中,因此 UserRepositoryImpl 也必须连接到相同的数据库去检索数据。下面是连接到数据库的代码。主要,我们正在使用 MySQL 的连接库。 +由于 `AddService` 将用户数据存储在一个 MySQL 数据库中,因此 `UserRepositoryImpl` 也必须连接到相同的数据库去检索数据。下面是连接到数据库的代码。注意,我们正在使用 MySQL 的连接库。 -```python +``` from mysql.connector import connect, Error class UserRepositoryImpl(UserRepository): @@ -211,9 +211,9 @@ class UserRepositoryImpl(UserRepository): raise e ``` -在上面的片段中,我们使用 root 用户,admin 密码连接到一个名为 mysqldb 的数据库服务器,使用名为 glarimy 的数据库(模式)。在演示代码中是可以包含这些信息的,但在生产中不建议这么做,因为这会暴露敏感信息。 +在上面的片段中,我们使用用户 `root` / 密码 `admin` 连接到一个名为 `mysqldb` 的数据库服务器,使用名为 `glarimy` 的数据库(模式)。在演示代码中是可以包含这些信息的,但在生产中不建议这么做,因为这会暴露敏感信息。 -fetch() 操作的逻辑非常直观,它对 ums_users 表执行 SELECT 查询。回想一下,添加服务正在将用户数据写入同一个表中。如果 SELECT 查询没有返回记录,fetch() 函数将抛出 UserNotFoundException 异常。否则,它会从记录中构造 User 实体并将其返回给调用者。这没有什么特殊的。 +`fetch()` 操作的逻辑非常直观,它对 `ums_users` 表执行 SELECT 查询。回想一下,`AddService` 正在将用户数据写入同一个表中。如果 SELECT 查询没有返回记录,`fetch()` 函数将抛出 `UserNotFoundException` 异常。否则,它会从记录中构造 `User` 实体并将其返回给调用者。这没有什么特殊的。 ### 应用层 @@ -221,9 +221,9 @@ fetch() 操作的逻辑非常直观,它对 ums_users 表执行 SELECT 查询 ![图 2: 添加服务的应用层][2] -众所周知,一个 DTO 只是一个没有任何业务逻辑的数据容器。它主要用于在查找服务和外部服务之间传输数据。我们只是提供了在 REST 层中将 UserRecord 转换为字典以便用于 JSON 传输: +众所周知,一个 DTO 只是一个没有任何业务逻辑的数据容器。它主要用于在 `FindService` 和外部之间传输数据。我们只是提供了在 REST 层中将 `UserRecord` 转换为字典以便用于 JSON 传输: -```python +``` class UserRecord: def toJSON(self): return { @@ -233,9 +233,9 @@ class UserRecord: } ``` -控制器的工作是将 DTO 转换为用于域服务的域对象,反之亦然。可以从 find() 操作中观察到这一点。 +控制器的工作是将 DTO 转换为用于域服务的域对象,反之亦然。可以从 `find()` 操作中观察到这一点。 -```python +``` class UserController: def __init__(self): @@ -253,11 +253,11 @@ class UserController: return None ``` -find() 操作接收一个字符串作为用户名,然后将其转换为 Name 对象,并调用 UserRepository 获取相应的 User 对象。如果找到了,则使用检索到的 User 对象创建 UserRecord。回想一下,将域对象转换为 DTO 是很有必要的,这样可以对外部服务隐藏域模型。 +`find()` 操作接收一个字符串作为用户名,然后将其转换为 `Name` 对象,并调用 `UserRepository` 获取相应的 `User` 对象。如果找到了,则使用检索到的 `User`` 对象创建 `UserRecord`。回想一下,将域对象转换为 DTO 是很有必要的,这样可以对外部服务隐藏域模型。 -UserController 不需要有多个实例,它也可以是单例的。通过重写 \_\_new\_\_,可以将其建模为一个单例。 +`UserController` 不需要有多个实例,它也可以是单例的。通过重写 `__new__`,可以将其建模为一个单例。 -```python +``` class UserController: def __new__(self): if not hasattr(self, ‘instance’): @@ -279,11 +279,11 @@ class UserController: return None ``` -我们已经完全实现了查找服务的模型,剩下的唯一任务是将其作为 REST 服务公开。 +我们已经完全实现了 `FindService` 的模型,剩下的唯一任务是将其作为 REST 服务公开。 ### REST API -查找服务只提供一个 API,那就是通过用户名查找用户。显然 URI 如下所示: +`FindService` 只提供一个 API,那就是通过用户名查找用户。显然 URI 如下所示: ``` GET /user/{name} @@ -294,26 +294,26 @@ GET /user/{name} 我们可以使用 Flask 框架来构建 REST API,它最初的目的是使用 Python 开发 Web 应用程序。除了 HTML 视图,它还进一步扩展到支持 REST 视图。我们选择这个框架是因为它足够简单。 创建一个 Flask 应用程序: -```python +``` from flask import Flask app = Flask(__name__) ``` 然后为 Flask 应用程序定义路由,就像函数一样简单: -```python +``` @app.route('/user/') def get(name): pass ``` -注意 @app.route 映射到 API /user/,与之对应的函数的 get()。 +注意 `@app.route` 映射到 API `/user/`,与之对应的函数的 `get()`。 -如你所见,每次用户访问 API 如 http://server:port/user/Krishna 时,都将调用这个 get() 函数。Flask 足够智能,可以从 URL 中提取 'Krishna' 作为用户名,并将其传递给 get() 函数。 +如你所见,每次用户访问 API 如 `http://server:port/user/Krishna` 时,都将调用这个 `get()` 函数。Flask 足够智能,可以从 URL 中提取 `Krishna` 作为用户名,并将其传递给 `get()` 函数。 -get() 函数很简单。它要求控制器找到该用户,并将其与通常的 HTTP 头一起打包为 JSON 格式后返回。如果控制器返回 None,则 get() 函数返回合适的 HTTP 状态码。 +`get()` 函数很简单。它要求控制器找到该用户,并将其与通常的 HTTP 头一起打包为 JSON 格式后返回。如果控制器返回 `None`,则 `get()` 函数返回合适的 HTTP 状态码。 -```python +``` from flask import jsonify, abort controller = UserController() @@ -326,17 +326,16 @@ else: return resp ``` -最后,我们需要 Flask 应用程序提供服务,可以使用 waitress 服务: +最后,我们需要 Flask 应用程序提供服务,可以使用 `waitress` 服务: -```python +``` from waitress import serve serve(app, host="0.0.0.0", port=8080) ``` -在上面的片段中,应用程序在本地主机的 8080 端口上提供服务。 -最终代码如下所示: +在上面的片段中,应用程序在本地主机的 8080 端口上提供服务。最终代码如下所示: -```python +``` from flask import Flask, jsonify, abort from waitress import serve @@ -358,11 +357,11 @@ serve(app, host="0.0.0.0", port=8080) ### 部署 -查询服务的代码已经准备完毕。除了 REST API 之外,它还有域模型、数据层和应用程序层。下一步是构建此服务,将其容器化,然后部署到 Kubernetes 上。此过程与部署其他服务妹有任何区别,但有一些 Python 特有的步骤。 +`FindService` 的代码已经准备完毕。除了 REST API 之外,它还有域模型、数据层和应用程序层。下一步是构建此服务,将其容器化,然后部署到 Kubernetes 上。此过程与部署其他服务妹有任何区别,但有一些 Python 特有的步骤。 在继续前进之前,让我们来看下文件夹和文件结构: -```bash +``` + ums-find-service + ums - domain.py @@ -373,11 +372,11 @@ serve(app, host="0.0.0.0", port=8080) - kube-find-deployment.yml ``` -如你所见,整个工作文件夹都位于 ums-find-service 下,它包含了 ums 文件夹中的代码和一些配置文件,例如 Dockerfile、requirements.txt 和 kube-find-deployment.yml。 +如你所见,整个工作文件夹都位于 `ums-find-service` 下,它包含了 `ums` 文件夹中的代码和一些配置文件,例如 `Dockerfile`、`requirements.txt` 和 `kube-find-deployment.yml`。 -domain.py 包含域模型,data.py 包含 UserRepositoryImpl,app.py 包含剩余代码。我们已经阅读过代码了,现在我们来看看配置文件。 +`domain.py` 包含域模型,`data.py` 包含 `UserRepositoryImpl`,`app.py` 包含剩余代码。我们已经阅读过代码了,现在我们来看看配置文件。 -第一个是 requirements.txt,它声明了 Python 系统需要下载和安装的外部依赖项。我们需要用查找服务中用到的每个外部 Python 模块来填充它。如你所见,我们使用了 MySQL 连接器、Flask 和 Waitress 模块。因此,下面是 requirements.txt 的内容。 +第一个是 `requirements.txt`,它声明了 Python 系统需要下载和安装的外部依赖项。我们需要用查找服务中用到的每个外部 Python 模块来填充它。如你所见,我们使用了 MySQL 连接器、Flask 和 Waitress 模块。因此,下面是 `requirements.txt` 的内容。 ``` Flask==2.1.1 @@ -386,7 +385,7 @@ mysql-connector-python waitress ``` -第二步是在 Dockerfile 中声明一些必要显示(to 校正:这里不太理解该如何翻译),如下: +第二步是在 `Dockerfile` 中声明 Docker 相关的清单,如下: ``` FROM python:3.8-slim-buster @@ -401,7 +400,7 @@ ENTRYPOINT ["python"] CMD ["/ums/app.py"] ``` -总的来说,我们使用 Python 3.8 作为基线,除了移动 requirements.txt 之外,我们还将代码从 ums 文件夹移动到 Docker 容器中对应的文件夹中。然后,我们指示容器运行 pip3 install 命令安装对应模块。最后,我们向外暴露 8080 端口(因为 waitress 运行在此端口上)。 +总的来说,我们使用 Python 3.8 作为基线,除了移动 `requirements.txt` 之外,我们还将代码从 `ums` 文件夹移动到 Docker 容器中对应的文件夹中。然后,我们指示容器运行 `pip3 install` 命令安装对应模块。最后,我们向外暴露 8080 端口(因为 waitress 运行在此端口上)。 为了运行此服务,我们指示容器使用使用以下命令: @@ -409,7 +408,7 @@ CMD ["/ums/app.py"] python /ums/app.py ``` -一旦 Dockerfile 准备完成,在 ums-find-service 文件夹中运行以下命令,创建 Docker 镜像: +一旦 `Dockerfile` 准备完成,在 `ums-find-service` 文件夹中运行以下命令,创建 Docker 镜像: ``` docker build -t glarimy/ums-find-service @@ -430,7 +429,7 @@ docker push glarimy/ums-find-service 最后一步是为 Kubernetes 部署构建清单。 -在之前的文章中,我们已经介绍了如何建立 Kubernetes 集群、部署和使用服务的方法。我假设仍然使用之前文章中的 manifest 文件来部署添加服务、MySQL、Kafka 和 Zookeeper。我们只需要将以下内容添加到 kube-find-deployment.yml 文件中: +在之前的文章中,我们已经介绍了如何建立 Kubernetes 集群、部署和使用服务的方法。我假设仍然使用之前文章中的清单文件来部署添加服务、MySQL、Kafka 和 Zookeeper。我们只需要将以下内容添加到 `kube-find-deployment.yml` 文件中: ``` apiVersion: apps/v1 @@ -469,9 +468,9 @@ selector: app: ums-find-service ``` -上面 manifest 的第一部分声明了 glarimy/ums-find-service 镜像的查找服务,它包含三个副本。它还暴露 8080 端口。manifet 的后半部分声明了一个Kubernetes 服务作为查找服务部署的前端。请记住,在之前文章中,mysqldb 服务已经是上述清单的一部分了。 +上面清单文件的第一部分声明了 `glarimy/ums-find-service` 镜像的 `FindService`,它包含三个副本。它还暴露 8080 端口。清单的后半部分声明了一个 Kubernetes 服务作为 `FindService` 部署的前端。请记住,在之前文章中,mysqldb 服务已经是上述清单的一部分了。 -运行以下命令在 Kubernetes 集群上部署 manifest: +运行以下命令在 Kubernetes 集群上部署清单文件: ``` kubectl create -f kube-find-deployment.yml @@ -487,7 +486,7 @@ kubectl get services ![图 3: Kubernetes 服务][3] -它会列出集群上运行的所有服务。注意查找服务的外部 ip,使用 curl 调用此服务: +它会列出集群上运行的所有服务。注意查找服务的外部 IP,使用 `curl` 调用此服务: ``` curl http://10.98.45.187:8080/user/KrishnaMohan @@ -495,17 +494,17 @@ curl http://10.98.45.187:8080/user/KrishnaMohan 注意:10.98.45.187 对应查找服务,如图 3 所示。 -如果我们使用添加服务创建一个名为 KrishnaMohan 的用户,那么上面的 curl 命令看起来如图 4 所示: +如果我们使用 `AddService` 创建一个名为 `KrishnaMohan` 的用户,那么上面的 `curl` 命令看起来如图 4 所示: ![图 4: 查找服务][4] -用户管理系统(UMS)的体系结构包含添加服务和查找服务,以及存储和消息传递所需的后端服务,如图 5 所示。可以看到终端用户使用 ums 添加服务的 IP 地址添加新用户,使用 ums 查找服务的 IP 地址查找已有用户。每个 Kubernetes 服务都由三个对应容器的节点支持。还要注意:同样的 mysqldb 服务用于存储和检索用户数据。 +用户管理系统(UMS)的体系结构包含 `AddService` 和 `FindService`,以及存储和消息传递所需的后端服务,如图 5 所示。可以看到终端用户使用 `ums-add-service` 的 IP 地址添加新用户,使用 `ums-find-service` 的 IP 地址查找已有用户。每个 Kubernetes 服务都由三个对应容器的节点支持。还要注意:同样的 mysqldb 服务用于存储和检索用户数据。 ![图 5: UMS 的添加服务和查找服务][5] ### 其他服务 -UMS 系统还包含两个服务:查找服务和日志服务。在本系列的下一部分中,我们将在 Node 平台上设计这些服务,并将它们部署到同一个 Kubernetes 集群,以演示多语言微服务架构的真正魅力。最后,我们将观察一些与微服务相关的设计模式。 +UMS 系统还包含两个服务:`SearchService` 和 `JournalService`。在本系列的下一部分中,我们将在 Node 平台上设计这些服务,并将它们部署到同一个 Kubernetes 集群,以演示多语言微服务架构的真正魅力。最后,我们将观察一些与微服务相关的设计模式。 -------------------------------------------------------------------------------- @@ -514,7 +513,7 @@ via: https://www.opensourceforu.com/2022/09/python-microservices-using-flask-on- 作者:[Krishna Mohan Koyya][a] 选题:[lkxed][b] 译者:[MjSeven](https://github.com/MjSeven) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 diff --git a/published/20220914 3 steps to protect your home network.md b/published/202210/20220914 3 steps to protect your home network.md similarity index 100% rename from published/20220914 3 steps to protect your home network.md rename to published/202210/20220914 3 steps to protect your home network.md diff --git a/published/20220914 CNCF Accepts Open Source Hexa Project As A Sandbox Project.md b/published/202210/20220914 CNCF Accepts Open Source Hexa Project As A Sandbox Project.md similarity index 100% rename from published/20220914 CNCF Accepts Open Source Hexa Project As A Sandbox Project.md rename to published/202210/20220914 CNCF Accepts Open Source Hexa Project As A Sandbox Project.md diff --git a/published/20220915 How To Prevent Command Arguments With Sudo In Linux.md b/published/202210/20220915 How To Prevent Command Arguments With Sudo In Linux.md similarity index 100% rename from published/20220915 How To Prevent Command Arguments With Sudo In Linux.md rename to published/202210/20220915 How To Prevent Command Arguments With Sudo In Linux.md diff --git a/translated/tech/20220919 How To Find Default Gateway IP Address In Linux And Unix From Commandline.md b/published/202210/20220919 How To Find Default Gateway IP Address In Linux And Unix From Commandline.md similarity index 66% rename from translated/tech/20220919 How To Find Default Gateway IP Address In Linux And Unix From Commandline.md rename to published/202210/20220919 How To Find Default Gateway IP Address In Linux And Unix From Commandline.md index 4947ec0c3a..006378d554 100644 --- a/translated/tech/20220919 How To Find Default Gateway IP Address In Linux And Unix From Commandline.md +++ b/published/202210/20220919 How To Find Default Gateway IP Address In Linux And Unix From Commandline.md @@ -3,28 +3,26 @@ [#]: author: "sk https://ostechnix.com/author/sk/" [#]: collector: "lkxed" [#]: translator: "MjSeven" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15158-1.html" -在 Linux 和 Unix 中如何从命令行查找默认网关的 IP 地址 +在 Linux 中如何从命令行查找默认网关的 IP 地址 ====== -Linux 下查找网关或路由器 IP 地址的 5 种方法。 -**网关**是一个节点或一个路由器,当连接到同一路由器时,它允许两个或多个 IP 地址不同的主机相互通信。如果没有网关,它们将无法相互通信。换句话说,网关充当接入点,将网络数据从本地网络传输到远程网络。在本指南中,我们将看到在 Linux 和 Unix 中从命令行找到默认网关的所有可能方法。 +![](https://img.linux.net.cn/data/attachment/album/202210/20/161605f5ispl5jslbpllss.jpg) -#### 内容 +> Linux 下查找网关或路由器 IP 地址的 5 种方法。 -1. 在 Linux 中查找默认网关 1.1 使用 ip 命令查找默认网关 1.2 使用 route 命令显示默认网关 IP 地址 1.3 使用 netstat 命令查看网关 IP 地址 1.4 使用 routel 命令打印默认网关或路由器 IP 地址 1.5 从以太网配置文件中查找网关 -2. 总结 +**网关** 是一个节点或一个路由器,当连接到同一路由器时,它允许两个或多个 IP 地址不同的主机相互通信。如果没有网关,它们将无法相互通信。换句话说,网关充当接入点,将网络数据从本地网络传输到远程网络。在本指南中,我们将看到在 Linux 和 Unix 中从命令行找到默认网关的所有可能方法。 ### 在 Linux 中查找默认网关 -Linux 中有各种各样的命令行工具可用于查看网关 IP 地址。最常用的工具是:**ip**、**ss** 和 **netcat**。我们将通过示例了解如何使用每种工具查看默认网关。 +Linux 中有各种各样的命令行工具可用于查看网关 IP 地址。最常用的工具是:`ip`、`ss` 和 `netcat`。我们将通过示例了解如何使用每种工具查看默认网关。 -#### 1. 使用 ip 命令查找默认网关 +#### 1、使用 ip 命令查找默认网关 -**ip** 命令用于显示和操作 Linux 中的路由、网络设备、接口和隧道。 +`ip` 命令用于显示和操作 Linux 中的路由、网络设备、接口和隧道。 要查找默认网关或路由器 IP 地址,只需运行: @@ -44,7 +42,7 @@ $ ip r $ ip route show ``` -**示例输出:** +示例输出: ``` default via 192.168.1.101 dev eth0 proto static metric 100 @@ -52,34 +50,30 @@ default via 192.168.1.101 dev eth0 proto static metric 100 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.20 metric 100 ``` -你从输出中看到了 **"default via 192.168.1.101"** 这一行吗?它就是默认网关。我的默认网关是 **192.168.1.101**。 +你从输出中看到了 `default via 192.168.1.101` 这一行吗?它就是默认网关。我的默认网关是 `192.168.1.101`。 -你可以使用 **-4** 参数只**显示 IPv4 网关**: +你可以使用 `-4` 参数只`显示 IPv4 网关`: ``` $ ip -4 route ``` -或者,使用 **`-6`** 参数只**显示 IPv6 网关**: +或者,使用 `-6` 参数只**显示 IPv6 网关**: ``` $ ip -6 route ``` -如你所见,IP 地址和子网详细信息也一并显示了。如果你想只显示默认网关,排除所有其他细节,可以使用 `ip route` 搭配 **`awk`** 命令,如下所示。 - -使用 `ip route` 和 `grep` 查找默认网关 IP 地址,执行命令: - -```(to 校正,此条命令原文无,怀疑是作者忘记加了) -$ ip route | grep default -``` +如你所见,IP 地址和子网详细信息也一并显示了。如果你想只显示默认网关,排除所有其他细节,可以使用 `ip route` 搭配 `awk` 命令,如下所示。 使用 `ip route` 和 `awk` 命令打印网关地址,执行命令: -```(to 校正,译注:wsl1 上无输出结果,正常 Linux 发行版无问题) +``` $ ip route | awk '/^default/{print $3}' ``` +(LCTT 译注:wsl1 上无输出结果,正常 Linux 发行版无问题) + 或者: ``` @@ -88,7 +82,7 @@ $ ip route show default | awk '{print $3}' 这将只列出网关 IP: -**示例输出:** +示例输出: ``` 192.168.1.101 @@ -96,18 +90,20 @@ $ ip route show default | awk '{print $3}' ![使用 ip 命令列出默认网关][1] -你也可以使用 **[grep][2]** 命令配合 `ip route` 对默认网关进行过滤。 +你也可以使用 [grep][2] 命令配合 `ip route` 对默认网关进行过滤。 + +使用 `ip route` 和 `grep` 查找默认网关 IP 地址,执行命令: ``` $ ip route | grep default default via 192.168.1.101 dev eth0 proto static metric 100 ``` -在最新的 Linux 发行版中,`ip route` 是查找默认网关 ip 地址的推荐命令。然而,你们中的一些人可能仍然在使用传统的工具,如 `route` 和 **`netstat`**。旧习难改,对吧?下面的部分将介绍如何在 Linux 中使用 `route` 和 `netstat` 命令确定网关。 +在最新的 Linux 发行版中,`ip route` 是查找默认网关 IP 地址的推荐命令。然而,你们中的一些人可能仍然在使用传统的工具,如 `route` 和 `netstat`。旧习难改,对吧?下面的部分将介绍如何在 Linux 中使用 `route` 和 `netstat` 命令确定网关。 -#### 2. 使用 route 命令显示默认网关 IP 地址 +#### 2、使用 route 命令显示默认网关 IP 地址 -**route** 命令用于在较老的 Linux 发行版中显示和操作路由表,如 RHEL 6、CentOS 6 等。 +`route` 命令用于在较老的 Linux 发行版中显示和操作路由表,如 RHEL 6、CentOS 6 等。 如果你正在使用较老的 Linux 发行版,你可以使用 `route` 命令来显示默认网关。 @@ -119,7 +115,7 @@ default via 192.168.1.101 dev eth0 proto static metric 100 $ dnf provides route ``` -**示例输出:** +示例输出: ``` net-tools-2.0-0.52.20160912git.el8.x86_64 : Basic networking tools @@ -133,7 +129,7 @@ Matched from: Filename : /usr/sbin/route ``` -如你所见,net-tools 包提供了 `route` 命令。所以,让我们使用以下命令来安装它: +如你所见,`net-tools` 包提供了 `route` 命令。所以,让我们使用以下命令来安装它: ``` $ sudo dnf install net-tools @@ -145,7 +141,7 @@ $ sudo dnf install net-tools $ route -n ``` -**示例输出:** +示例输出: ``` Kernel IP routing table @@ -157,13 +153,13 @@ Destination Gateway Genmask Flags Metric Ref Use Iface ![使用 route 命令显示默认网关 IP 地址][3] -如你所见,网关 IP 地址是 192.168.1.101。你还将在 Flags 下面看到两个字母 **UG**。字母 **U** 代表接口是 **UP**,**G** 表示网关。 +如你所见,网关 IP 地址是 192.168.1.101。你还将在 Flags 下面看到两个字母 `UG`。字母 `U` 代表接口是 “Up”(在运行),`G` 表示 “Gateway”(网关)。 -#### 3. 使用 netstat 命令查看网关 IP 地址 +#### 3、使用 netstat 命令查看网关 IP 地址 -**Netstat** 会输出 Linux 网络子系统的信息。使用 netstat 工具,我们可以在 Linux 和 Unix 系统中打印网络连接、路由表、接口统计信息、伪装连接和组播成员关系。 +`netstat` 会输出 Linux 网络子系统的信息。使用 `netstat` 工具,我们可以在 Linux 和 Unix 系统中打印网络连接、路由表、接口统计信息、伪装连接和组播成员关系。 -Netstat 是 net-tools 包的一部分,所以确保你已经在 Linux 系统中安装了它。使用以下命令在基于 RHEL 的系统中安装它: +`netstat` 是 `net-tools` 包的一部分,所以确保你已经在 Linux 系统中安装了它。使用以下命令在基于 RHEL 的系统中安装它: ``` $ sudo dnf install net-tools @@ -175,7 +171,7 @@ $ sudo dnf install net-tools $ netstat -rn ``` -**示例输出:** +示例输出: ``` Kernel IP routing table @@ -187,26 +183,26 @@ Destination Gateway Genmask Flags MSS Window irtt Iface ![使用 netstat 命令查看网关 IP 地址][4] -`netstat` 命令与 `route` 命令的输出信息相同。如上输出可知,网关的 IP 地址为 192.168.1.191,UG 表示网关连接的网卡(NIC)是有效的,G 表示网关。 +`netstat` 命令与 `route` 命令的输出信息相同。如上输出可知,网关的 IP 地址为 `192.168.1.191`,`UG` 表示网关连接的网卡是有效的,`G` 表示网关。 -请注意 `netstat` 也已弃用,建议使用 **ss** 命令代替 netstat。 +请注意 `netstat` 也已弃用,建议使用 `ss` 命令代替 `netstat`。 -#### 4. 使用 routel 命令打印默认网关或路由器 IP 地址 +#### 4、使用 routel 命令打印默认网关或路由器 IP 地址 -**routel** 是一个脚本,它以一种漂亮格式的输出路由。routel 脚本的输出让一些人认为比 `ip route` 列表更直观。 +`routel` 是一个脚本,它以一种漂亮格式的输出路由。`routel` 脚本的输出让一些人认为比 `ip route` 列表更直观。 -routel 脚本也是 net-tools 包的一部分。 +`routel` 脚本也是 `net-tools` 包的一部分。 -打印默认网关或路由器 IP 地址,运行 routel 脚本,不带任何参数,如下所示: +打印默认网关或路由器 IP 地址,不带任何参数运行 `routel` 脚本,如下所示: ``` $ routel ``` -**示例输出:** +示例输出: ``` -target gateway source proto scope dev tbl + target gateway source proto scope dev tbl default 192.168.1.101 static eth0 172.17.0.0/ 16 172.17.0.1 kernel linkdocker0 192.168.1.0/ 24 192.168.1.20 kernel link eth0 @@ -241,11 +237,11 @@ $ routel | grep default default 192.168.1.101 static eth0 ``` -#### 5. 从以太网配置文件中查找网关 +#### 5、从以太网配置文件中查找网关 -如果你在 **[Linux 或 Unix 中配置了静态 IP 地址][6],你可以通过查看网络配置文件查看默认网关或路由器 IP 地址。 +如果你在 [Linux 或 Unix 中配置了静态 IP 地址][6],你可以通过查看网络配置文件查看默认网关或路由器 IP 地址。 -在基于 RPM 的系统上,如 Fedora、RHEL、CentOS、AlmaLinux 和 Rocky Linux 等,网络接口卡(简称 **NIC**)配置存储在 **/etc/sysconfig/network-scripts/** 目录下。 +在基于 RPM 的系统上,如 Fedora、RHEL、CentOS、AlmaLinux 和 Rocky Linux 等,网络接口卡配置存储在 `/etc/sysconfig/network-scripts/` 目录下。 查找网卡的名称: @@ -253,7 +249,7 @@ $ routel | grep default # ip link show ``` -**示例输出:** +示例输出: ``` 1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 @@ -262,13 +258,13 @@ $ routel | grep default link/ether d2:85:0c:c7:c1:c3 brd ff:ff:ff:ff:ff:ff link-netnsid 0 ``` -网卡名为 **eth0**。所以让我们打开这个 NIC 文件的网卡配置: +网卡名为 `eth0`。所以让我们打开这个网卡文件的网卡配置: ``` # cat /etc/sysconfig/network-scripts/ifcfg-eth0 ``` -**示例输出:** +示例输出: ``` DEVICE=eth0 @@ -283,13 +279,13 @@ DNS1=8.8.8.8 如你所见,网关 IP 为 `192.168.1.101`。 -在 Debian、Ubuntu 及其衍生版中,所有的网络配置文件都存储在 **/etc/network** 目录下。 +在 Debian、Ubuntu 及其衍生版中,所有的网络配置文件都存储在 `/etc/network` 目录下。 ``` $ cat /etc/network/interfaces ``` -**示例输出:** +示例输出: ``` auto ens18 @@ -313,7 +309,7 @@ via: https://ostechnix.com/find-default-gateway-linux/ 作者:[sk][a] 选题:[lkxed][b] 译者:[MjSeven](https://github.com/MjSeven) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 diff --git a/published/20220919 PyLint- The good, the bad, and the ugly.md b/published/202210/20220919 PyLint- The good, the bad, and the ugly.md similarity index 100% rename from published/20220919 PyLint- The good, the bad, and the ugly.md rename to published/202210/20220919 PyLint- The good, the bad, and the ugly.md diff --git a/published/20220920 3 ways to use the Linux inxi command.md b/published/202210/20220920 3 ways to use the Linux inxi command.md similarity index 100% rename from published/20220920 3 ways to use the Linux inxi command.md rename to published/202210/20220920 3 ways to use the Linux inxi command.md diff --git a/published/20220921 How to Access Android Devices Internal Storage and SD Card in Ubuntu, Linux Mint using Media Transfer Protocol -MTP-.md b/published/202210/20220921 How to Access Android Devices Internal Storage and SD Card in Ubuntu, Linux Mint using Media Transfer Protocol -MTP-.md similarity index 100% rename from published/20220921 How to Access Android Devices Internal Storage and SD Card in Ubuntu, Linux Mint using Media Transfer Protocol -MTP-.md rename to published/202210/20220921 How to Access Android Devices Internal Storage and SD Card in Ubuntu, Linux Mint using Media Transfer Protocol -MTP-.md diff --git a/published/20220922 5 Git configurations I make on Linux.md b/published/202210/20220922 5 Git configurations I make on Linux.md similarity index 100% rename from published/20220922 5 Git configurations I make on Linux.md rename to published/202210/20220922 5 Git configurations I make on Linux.md diff --git a/published/20220923 11 Gorgeous KDE Plasma Themes to Make Your Linux Desktop Even More Beautiful.md b/published/202210/20220923 11 Gorgeous KDE Plasma Themes to Make Your Linux Desktop Even More Beautiful.md similarity index 100% rename from published/20220923 11 Gorgeous KDE Plasma Themes to Make Your Linux Desktop Even More Beautiful.md rename to published/202210/20220923 11 Gorgeous KDE Plasma Themes to Make Your Linux Desktop Even More Beautiful.md diff --git a/published/20220923 5 Free and Open-Source Figma Alternatives.md b/published/202210/20220923 5 Free and Open-Source Figma Alternatives.md similarity index 100% rename from published/20220923 5 Free and Open-Source Figma Alternatives.md rename to published/202210/20220923 5 Free and Open-Source Figma Alternatives.md diff --git a/published/20220923 Install JDBC on Linux in 3 steps.md b/published/202210/20220923 Install JDBC on Linux in 3 steps.md similarity index 100% rename from published/20220923 Install JDBC on Linux in 3 steps.md rename to published/202210/20220923 Install JDBC on Linux in 3 steps.md diff --git a/published/20220924 Drop your database for PostgreSQL.md b/published/202210/20220924 Drop your database for PostgreSQL.md similarity index 100% rename from published/20220924 Drop your database for PostgreSQL.md rename to published/202210/20220924 Drop your database for PostgreSQL.md diff --git a/published/20220926 How to Setup Internet in CentOS, RHEL, Rocky Linux Minimal Install.md b/published/202210/20220926 How to Setup Internet in CentOS, RHEL, Rocky Linux Minimal Install.md similarity index 100% rename from published/20220926 How to Setup Internet in CentOS, RHEL, Rocky Linux Minimal Install.md rename to published/202210/20220926 How to Setup Internet in CentOS, RHEL, Rocky Linux Minimal Install.md diff --git a/published/20220926 Speech Recognition to Text in Linux, Ubuntu using Google Docs.md b/published/202210/20220926 Speech Recognition to Text in Linux, Ubuntu using Google Docs.md similarity index 100% rename from published/20220926 Speech Recognition to Text in Linux, Ubuntu using Google Docs.md rename to published/202210/20220926 Speech Recognition to Text in Linux, Ubuntu using Google Docs.md diff --git a/published/202210/20220926 The story behind Joplin, the open source note-taking app.md b/published/202210/20220926 The story behind Joplin, the open source note-taking app.md new file mode 100644 index 0000000000..ac3c6e5bf3 --- /dev/null +++ b/published/202210/20220926 The story behind Joplin, the open source note-taking app.md @@ -0,0 +1,141 @@ +[#]: subject: "The story behind Joplin, the open source note-taking app" +[#]: via: "https://opensource.com/article/22/9/joplin-interview" +[#]: author: "Richard Chambers https://opensource.com/users/20i" +[#]: collector: "lkxed" +[#]: translator: "MareDevi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15161-1.html" + +开源笔记软件 Joplin 背后的故事 +====== + +![](https://img.linux.net.cn/data/attachment/album/202210/21/112935tfapsvpac06h2sth.jpg) + +> Laurent Cozic 与我坐下来,讨论了 Joplin 是如何开始的,以及这个开源笔记软件的下一步计划。 + +在这次采访中,我见到了笔记软件 Joplin 的创建者 Laurent Cozic。[Joplin][2] 是 [20i][3] 奖励的赢家,所以我想了解是什么让它如此成功,以及他如何实现的。 + +### 你能概述一下什么是 Joplin 吗? + +[Joplin][4] 是一个开源的笔记软件。它可以让你捕获你的想法并从任何设备安全地访问它们。 + +### 显然,还有很多其他的笔记应用,那么除了免费使用之外,它还有什么不同呢? + +对我们的许多用户来说,它是开源的这一事实是一个非常重要的方面,因为这意味着没有供应商对数据的封锁,而且数据可以很容易地被导出并以各种方式访问。 + +我们还关注用户的安全和数据隐私,特别是端到端加密同步功能,以及通过对应用的任何连接保持透明。我们还与安全研究人员合作,以保证软件更加安全。 + +最后,Joplin 可以通过几种不同的方式进行定制 —— 通过插件(可以添加新的功能)和主题来定制应用程序的外观。我们还公开了一个数据 API,它允许第三方应用程序访问 Joplin 的数据。 + +> **[相关阅读:5 款 Linux 上的笔记应用][5]** + +### 这是一个竞争非常激烈的市场,那么是什么激发了你创建它的想法? + +这是有原因的的。我从 2016 年开始研究它,因为我不喜欢现有的商业记事应用程序:笔记、附件或标签不能轻易被其他工具导出或操作。 + +这主要是由于供应商的封锁,另外还有供应商缺乏动力,因为他们没有动力帮助用户将他们的数据转移到其他应用程序。还有一个问题是,这些公司通常会以纯文本形式保存笔记,而这有可能造成数据隐私和安全方面的问题。 + +因此,我决定开始创建一个简单且具有同步功能的移动和终端应用程序,使我的笔记能够轻松地在我的设备上访问。之后又创建了桌面应用程序,项目从此开始发展。 + +![Chrome OS 上 Joplin 的图片][6] + +### 编写 Joplin 花了多长时间呢? + +自 2016 年以来,我一直在断断续续地开发,但并不是专门去维护。不过在过去的两年里,我更加专注于它。 + +### 对于准备创建自己的开源应用的人,你有什么建议? + +挑选一个你自己使用的项目和你喜欢的技术来工作。 + +管理一个开源项目有时是很困难的,所以必须要有足够的兴趣去让它变得更有价值。那么我想 “早发布,多发布” 原则在这里也适用,这样你就可以衡量用户的兴趣,以及是否有必要花时间进一步开发这个项目。 + +### 有多少人参与了 Joplin 的开发? + +有 3、4 人参与开发。目前,我们还有 6 名学生在 谷歌编程之夏Google Summer of Code 中为这个项目工作。 + +### 许多人都在创建开源项目,但 Joplin 对你来说是一个巨大的成功。关于如何获得关注,你能否给开发者提供一些建议? + +没有简单的公式,说实话,我不认为我可以在另一个项目中复制这种成功!你必须对你所做的事情充满热情,但同时也要严谨、有组织、稳步前进,确保代码质量保持高水平,并拥有大量的测试单元以防止回归。 + +同时,对于你收到的用户反馈保持开放的态度,并在此基础上改进项目。 + +一旦你掌握了这些,剩下的可能就全靠运气了 —— 如果你做的项目让很多人都感兴趣,事情可能会顺利进行! + +### 一旦你得到关注,但如果你没有传统的营销预算,你如何保持这种势头? + +我认为这在于倾听项目周围的社区。举个例子来说,我从未计划过建立一个论坛,但有人在 GitHub 上提出了这个建议,所以我创建了一个论坛,它成为了一个分享想法、讨论功能、提供支持等很好的方式。社区也普遍欢迎新人,这形成了一种良性循环。 + +除此以外,定期就项目进行沟通也很重要。 + +我们没有一个公开的路线图,因为大多数功能的 ETA 通常是 “我不知道”,但我会试图就即将到来的功能、新版本等进行沟通。我们也会就重要的事件进行沟通,特别是谷歌编程之夏,或者当我们有机会赢得像 20i FOSS 奖的时候。 + +最后,我们很快将在伦敦举行一次面对面的聚会,这是与社区和合作者保持联系的另一种方式。 + +### 用户的反馈是如何影响路线图的? + +很明显,贡献者们经常仅仅因为他们需要某个特性而从事某些工作。但除此之外,我们还根据论坛和 GitHub 问题追踪器上的信息,追踪对用户来说似乎最重要的功能。 + +例如,移动应用程序现在具有很高的优先级,因为我们经常从用户那里听到,它的限制和缺陷是有效使用 Joplin 的一个问题。 + +![桌面使用Joplin的图片][8] + +### 你是如何跟上最新的开发和编码的发展的? + +主要是通过阅读 Hacker News! + +### 你有个人最喜欢的自由/开源软件可以推荐吗? + +在不太知名的项目中,[SpeedCrunch][9] 作为一个计算器非常好。它有很多功能,而且很好的是它能保留以前所有计算的历史。 + +我还使用 [KeepassXC][10] 作为密码管理器。在过去的几年里,它一直在稳步改进。 + +最后,[Visual Studio Code][11] 作为一个跨平台的文本编辑器非常棒。 + +### 我原以为 Joplin 是以 Janis 的名字命名的,但维基百科告诉我来自是 Scoot Joplin。你为什么选择这个名字? + +我起初想把它命名为 “jot-it”,但我想这个名字已经被人占了。 + +由于我那时经常听 Scoot Joplin 的 拉格泰姆ragtime音乐(我相当痴迷于此),我决定使用他的名字。 + +我认为产品名称的含义并不太重要,只要名称本身易于书写、发音、记忆,并与一些积极的东西(或至少没有消极的东西)有关。 + +我觉得 “Joplin” 符合所有条件。 + +### 关于 Joplin 的计划,你还有什么可以说的吗?也许是对一个新功能的独家预告? + +如前所述,我们非常希望在用户体验设计和新功能方面对移动应用进行改进。 + +我们也在考虑创建一个 “插件商店”,以便更容易地浏览和安装插件。 + +感谢 Laurent — 祝 Joplin 的未来好运。 + +*图片来自: (Opensource.com, CC BY-SA 4.0)* + +*[这篇访谈最初发表在 20i 博客上,已获得许可进行转载。][12]* + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/9/joplin-interview + +作者:[Richard Chambers][a] +选题:[lkxed][b] +译者:[MareDevi](https://github.com/MareDevi) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/20i +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/lead-images/wfh_work_home_laptop_work.png +[2]: https://joplinapp.org/ +[3]: https://www.20i.com/foss-awards/winners +[4]: https://opensource.com/article/19/1/productivity-tool-joplin +[5]: https://opensource.com/article/22/8/note-taking-apps-linux +[6]: https://opensource.com/sites/default/files/2022-09/joplin-chrome-os.png +[7]: https://opensource.com/article/21/10/google-summer-code +[8]: https://opensource.com/sites/default/files/2022-09/joplin-desktop.png +[9]: https://heldercorreia.bitbucket.io/speedcrunch/ +[10]: https://opensource.com/article/18/12/keepassx-security-best-practices +[11]: https://opensource.com/article/20/6/open-source-alternatives-vs-code +[12]: https://www.20i.com/blog/joplin-creator-laurent-cozic/ diff --git a/published/20220927 Attacks On Open Source Software Are On The Rise.md b/published/202210/20220927 Attacks On Open Source Software Are On The Rise.md similarity index 100% rename from published/20220927 Attacks On Open Source Software Are On The Rise.md rename to published/202210/20220927 Attacks On Open Source Software Are On The Rise.md diff --git a/published/20220927 GUI Apps for Package Management in Arch Linux.md b/published/202210/20220927 GUI Apps for Package Management in Arch Linux.md similarity index 100% rename from published/20220927 GUI Apps for Package Management in Arch Linux.md rename to published/202210/20220927 GUI Apps for Package Management in Arch Linux.md diff --git a/published/20220927 Get change alerts from any website with this open source tool.md b/published/202210/20220927 Get change alerts from any website with this open source tool.md similarity index 100% rename from published/20220927 Get change alerts from any website with this open source tool.md rename to published/202210/20220927 Get change alerts from any website with this open source tool.md diff --git a/published/20220927 System76 Won-t Release Pop!_OS 22.10 Linux Distro- Here-s Why!.md b/published/202210/20220927 System76 Won-t Release Pop!_OS 22.10 Linux Distro- Here-s Why!.md similarity index 100% rename from published/20220927 System76 Won-t Release Pop!_OS 22.10 Linux Distro- Here-s Why!.md rename to published/202210/20220927 System76 Won-t Release Pop!_OS 22.10 Linux Distro- Here-s Why!.md diff --git a/published/20220928 Oh No!😱Fedora is Dropping Support for Popular Video Codecs [Here-s Why!].md b/published/202210/20220928 Oh No!😱Fedora is Dropping Support for Popular Video Codecs [Here-s Why!].md similarity index 100% rename from published/20220928 Oh No!😱Fedora is Dropping Support for Popular Video Codecs [Here-s Why!].md rename to published/202210/20220928 Oh No!😱Fedora is Dropping Support for Popular Video Codecs [Here-s Why!].md diff --git a/published/20220928 Penpot, Gains Additional Users Thanks To Adobe-s Figma Purchase.md b/published/202210/20220928 Penpot, Gains Additional Users Thanks To Adobe-s Figma Purchase.md similarity index 100% rename from published/20220928 Penpot, Gains Additional Users Thanks To Adobe-s Figma Purchase.md rename to published/202210/20220928 Penpot, Gains Additional Users Thanks To Adobe-s Figma Purchase.md diff --git a/published/20220929 How to Use Picture in Picture Mode in Brave Browser.md b/published/202210/20220929 How to Use Picture in Picture Mode in Brave Browser.md similarity index 100% rename from published/20220929 How to Use Picture in Picture Mode in Brave Browser.md rename to published/202210/20220929 How to Use Picture in Picture Mode in Brave Browser.md diff --git a/published/20220930 [Exclusive] Tuxedo Makes Ubuntu-based -TUXEDO OS- Available For All.md b/published/202210/20220930 [Exclusive] Tuxedo Makes Ubuntu-based -TUXEDO OS- Available For All.md similarity index 100% rename from published/20220930 [Exclusive] Tuxedo Makes Ubuntu-based -TUXEDO OS- Available For All.md rename to published/202210/20220930 [Exclusive] Tuxedo Makes Ubuntu-based -TUXEDO OS- Available For All.md diff --git a/published/20221001 A Native Linux GPU Driver for Apple Silicon is Almost Ready!.md b/published/202210/20221001 A Native Linux GPU Driver for Apple Silicon is Almost Ready!.md similarity index 100% rename from published/20221001 A Native Linux GPU Driver for Apple Silicon is Almost Ready!.md rename to published/202210/20221001 A Native Linux GPU Driver for Apple Silicon is Almost Ready!.md diff --git a/published/20221002 How to Enable RPM Fusion Repo in Fedora, CentOS, RHEL.md b/published/202210/20221002 How to Enable RPM Fusion Repo in Fedora, CentOS, RHEL.md similarity index 100% rename from published/20221002 How to Enable RPM Fusion Repo in Fedora, CentOS, RHEL.md rename to published/202210/20221002 How to Enable RPM Fusion Repo in Fedora, CentOS, RHEL.md diff --git a/published/20221003 Get Ready for Ubuntu MATE Experience on Debian Linux!.md b/published/202210/20221003 Get Ready for Ubuntu MATE Experience on Debian Linux!.md similarity index 100% rename from published/20221003 Get Ready for Ubuntu MATE Experience on Debian Linux!.md rename to published/202210/20221003 Get Ready for Ubuntu MATE Experience on Debian Linux!.md diff --git a/published/20221004 Security Issues With Open Source In Today-s World.md b/published/202210/20221004 Security Issues With Open Source In Today-s World.md similarity index 100% rename from published/20221004 Security Issues With Open Source In Today-s World.md rename to published/202210/20221004 Security Issues With Open Source In Today-s World.md diff --git a/published/20221006 A New Open Source Vulkan Driver for NVIDIA Graphics is Ready to Test!.md b/published/202210/20221006 A New Open Source Vulkan Driver for NVIDIA Graphics is Ready to Test!.md similarity index 100% rename from published/20221006 A New Open Source Vulkan Driver for NVIDIA Graphics is Ready to Test!.md rename to published/202210/20221006 A New Open Source Vulkan Driver for NVIDIA Graphics is Ready to Test!.md diff --git a/published/20221006 Google AI Unveils A New Open Source Library for Array Storage.md b/published/202210/20221006 Google AI Unveils A New Open Source Library for Array Storage.md similarity index 100% rename from published/20221006 Google AI Unveils A New Open Source Library for Array Storage.md rename to published/202210/20221006 Google AI Unveils A New Open Source Library for Array Storage.md diff --git a/published/20221006 Ubuntu Pro Now Gives You 10 Years of Security Updates for Free.md b/published/202210/20221006 Ubuntu Pro Now Gives You 10 Years of Security Updates for Free.md similarity index 100% rename from published/20221006 Ubuntu Pro Now Gives You 10 Years of Security Updates for Free.md rename to published/202210/20221006 Ubuntu Pro Now Gives You 10 Years of Security Updates for Free.md diff --git a/published/20221006 Upgrade Various Kinds of Packages in Linux at Once With Topgrade.md b/published/202210/20221006 Upgrade Various Kinds of Packages in Linux at Once With Topgrade.md similarity index 100% rename from published/20221006 Upgrade Various Kinds of Packages in Linux at Once With Topgrade.md rename to published/202210/20221006 Upgrade Various Kinds of Packages in Linux at Once With Topgrade.md diff --git a/published/20221008 How to Create LVM Partition Step-by-Step in Linux.md b/published/202210/20221008 How to Create LVM Partition Step-by-Step in Linux.md similarity index 100% rename from published/20221008 How to Create LVM Partition Step-by-Step in Linux.md rename to published/202210/20221008 How to Create LVM Partition Step-by-Step in Linux.md diff --git a/published/202210/20221010 How to Update Google Chrome on Ubuntu Linux.md b/published/202210/20221010 How to Update Google Chrome on Ubuntu Linux.md new file mode 100644 index 0000000000..8c2ee3c263 --- /dev/null +++ b/published/202210/20221010 How to Update Google Chrome on Ubuntu Linux.md @@ -0,0 +1,96 @@ +[#]: subject: "How to Update Google Chrome on Ubuntu Linux" +[#]: via: "https://itsfoss.com/update-google-chrome-ubuntu/" +[#]: author: "Abhishek Prakash https://itsfoss.com/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15163-1.html" + +如何在 Ubuntu Linux 上更新谷歌 Chrome +====== + +![](https://img.linux.net.cn/data/attachment/album/202210/22/085013gihsi4rtmpkmj4yb.png) + +> 你设法在你的 Ubuntu 系统上安装了谷歌 Chrome 浏览器。现在你想知道如何让浏览器保持更新。 + +在 Windows 和 macOS 上,当 Chrome 上有可用更新时,你会在浏览器中收到通知,你可以从浏览器中点击更新选项。 + +Linux 中的情况有所不同。你不会从浏览器更新 Chrome。你要使用系统更新对其进行更新。 + +是的。当 Chrome 上有可用的新更新时,Ubuntu 会通过系统更新工具通知你。 + +![当有新版本的 Chrome 可用时,Ubuntu 会发送通知][1] + +你只需单击“立即安装Install Now”按钮,在被提示时输入你的帐户密码并将 Chrome 更新到新版本。 + +让我告诉你为什么会在系统级别看到更新,以及如何在命令行中更新谷歌 Chrome。 + +### 方法 1:使用系统更新更新谷歌浏览器 + +你最初是如何安装 Chrome 的?你从 [Chrome 网站][2] 获得了 deb 安装程序文件,并使用它来 [在 Ubuntu 上安装 Chrome][3]。 + +当你这样做时,谷歌会在你系统的源列表中添加一个仓库条目。这样,你的系统就会信任来自谷歌仓库的包。 + +![谷歌 Chrome 存储库添加到 Ubuntu 系统][4] + +对于添加到系统中的所有此类条目,包更新通过 Ubuntu 更新程序集中进行。 + +这就是为什么当 Google Chrome(和其他已安装的应用)有可用更新时,你的 Ubuntu 系统会向你发送通知。 + +![Chrome 更新可通过系统更新与其他应用一起使用][5] + +**单击“立即安装Install Now”按钮并在要求时输入你的密码**。很快,系统将安装所有可升级的软件包。 + +根据更新偏好,通知可能不是立即的。如果需要,你可以手动运行更新程序工具并查看适用于你的 Ubuntu 系统的更新。 + +![运行软件更新程序以查看你的系统有哪些可用更新][6] + +### 方法 2:在 Ubuntu 命令行中更新 Chrome + +如果你更喜欢终端而不是图形界面,你也可以使用命令更新 Chrome。 + +打开终端,并依次运行以下命令: + +``` +sudo apt update + +sudo apt --only-upgrade install google-chrome-stable +``` + +第一条命令更新包缓存,以便你的系统知道可以升级哪些包。 + +第二条命令 [仅更新单个包][7],即谷歌 Chrome(安装为 `google-chrome-stable`)。 + +### 总结 + +如你所见,Ubuntu 比 Windows 更精简。你会随其他系统更新一起更新 Chrome。 + +顺便一提,如果你对它不满意,你可以了解 [从 Ubuntu 中删除 Google Chrome][8]。 + +Chrome 是一款不错的浏览器。你可以通过 [使用 Chrome 中的快捷方式][9] 来试验它,因为它使浏览体验更加流畅。 + +在 Ubuntu 上享受 Chrome! + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/update-google-chrome-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/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/wp-content/uploads/2021/06/chrome-edge-update-ubuntu.png +[2]: https://www.google.com/chrome/ +[3]: https://itsfoss.com/install-chrome-ubuntu/ +[4]: https://itsfoss.com/wp-content/uploads/2021/06/google-chrome-repo-ubuntu.png +[5]: https://itsfoss.com/wp-content/uploads/2021/06/chrome-edge-update-ubuntu.png +[6]: https://itsfoss.com/wp-content/uploads/2022/04/software-updater-ubuntu-22-04.jpg +[7]: https://itsfoss.com/apt-upgrade-single-package/ +[8]: https://itsfoss.com/uninstall-chrome-from-ubuntu/ +[9]: https://itsfoss.com/google-chrome-shortcuts/ \ No newline at end of file diff --git a/translated/tech/20221010 Xubuntu 22.10- Top New Features.md b/published/202210/20221010 Xubuntu 22.10- Top New Features.md similarity index 65% rename from translated/tech/20221010 Xubuntu 22.10- Top New Features.md rename to published/202210/20221010 Xubuntu 22.10- Top New Features.md index fda1fad5ad..ad19a4da95 100644 --- a/translated/tech/20221010 Xubuntu 22.10- Top New Features.md +++ b/published/202210/20221010 Xubuntu 22.10- Top New Features.md @@ -3,37 +3,38 @@ [#]: author: "Arindam https://www.debugpoint.com/author/admin1/" [#]: collector: "lkxed" [#]: translator: "geekpi" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15155-1.html" Xubuntu 22.10:热门新功能 ====== -这是 Xubuntu 22.10 Kinetic Kudu 及其新功能的快速总结。 + +> 这是 Xubuntu 22.10 Kinetic Kudu 及其新功能的快速总结。 ![Xubuntu 22.10 桌面][1] -质量需要时间来建立。它适用于生活的所有阶段,包括软件。 +质量需要时间来建立。它适用于生活的各个方面,包括软件。 自 Xfce 4.16 发布以来,Xfce 4.17(开发版)已经被添加了许多新功能。这包括核心 Xfce、原生应用,GNOME 43、MATE 1.26 和 libadwaita。由于 Xfce 也是 GNOME 和 MATE 的组合,正确地合并和测试这些更改需要时间。 在 Xubuntu 22.10 Kinetic Kudu 版本中,你将体验到自 2020 年 12 月以来所做的所有改进:将近两年的错误修复和增强。 -让我们快速查看一下时间表。目前,Xubuntu 22.10 beta 已经发布并正在测试中(本页末尾的 ISO 链接)。最终版本预计于 2022 年 10 月 20 日发布。 +让我们快速查看一下时间表。目前,Xubuntu 22.10 beta 已经发布,并正在测试中(本问末尾提供了 ISO 链接)。最终版本预计于 2022 年 10 月 20 日发布。 ### Xubuntu 22.10 新功能 #### 核心更新和 GNOME 框架 -Xubuntu 22.10 的核心是基于 Ubuntu 22.10 的 Linux Kernel 5.19。另外,Xfce 桌面版是 Xfce 4.17。 +在其核心,Xubuntu 22.10 同其基于的 Ubuntu 22.10 一样,采用 Linux 内核 5.19。另外,Xfce 桌面版本是 Xfce 4.17。 -4.17 版本是一个开发标签,因为它是下一个大版本 Xfce 4.18 的垫脚石,该版本 [计划在今年圣诞节发布][2]。 +4.17 版本是一个开发版,因为它是下一个大版本 Xfce 4.18 的基础,该版本 [计划在今年圣诞节发布][2]。 让我们谈谈 GNOME 和相关应用。 Xubuntu 22.10 中的 Xfce 4.17 首次获得了带有 GNOME 43 更新的 libadwaita。这意味着默认的 GNOME 应用程序可以在 Xfce 桌面下正确呈现。 -话虽如此,GNOME Software 43 在 Xubuntu 22.10 的 Xfce 桌面下看起来很棒。如果你将其与 Xfce 原生外观和带有 CSD/SSD(例如 Disk)的 GNOME 应用进行比较,它们看起来都很整洁。 +这就是说,GNOME 软件应用Software 43 在 Xubuntu 22.10 的 Xfce 桌面下看起来很棒。如果你将其与 Xfce 原生外观和带有 CSD/SSD(例如 “磁盘应用Disk”)的 GNOME 应用进行比较,它们看起来都很顺眼。 -我对 GNOME Software 43 在 Xfce 桌面下的 libadwaita/GTK4 渲染效果如此之好感到惊讶。 +我对 GNOME 软件应用 43 在 Xfce 桌面下的 libadwaita/GTK4 渲染效果如此之好感到惊讶。 ![在 Xubuntu 22.10 中一起使用三种不同的窗口][3] @@ -41,11 +42,11 @@ Xubuntu 22.10 的核心是基于 Ubuntu 22.10 的 Linux Kernel 5.19。另外,X Xfce 桌面带来了自己的原生应用集。在此版本中,所有应用都从 4.16 升级到 4.17 版本。 -值得注意的变化包括 Xfce 面板获得了对任务列表插件的中键单击支持和托盘时钟中的二进制时间模式。pulse 音频插件引入了一个新的录音指示器,可以过滤掉多个按钮按下事件。 +值得注意的变化包括:Xfce 面板获得了对任务列表插件的中键单击支持,和托盘时钟中的二进制时间模式。PulseAudio 插件引入了一个新的录音指示器,可以过滤掉多个按钮按下事件。 -Thunar 文件管理器获得了大量的底层功能和错误修复。如果你将 Thunar 4.16 与 Thunar 4.17 进行比较,它是变化巨大的。更改包括更新的上下文菜单、路径栏、搜索、导航等。你可以在[此处][4]阅读 Thunar 的所有更改日志。 +Thunar 文件管理器获得了大量的底层功能和错误修复。如果你将 Thunar 4.16 与 Thunar 4.17 进行比较,它是变化巨大的。更改包括更新的上下文菜单、路径栏、搜索、导航等。你可以在 [此处][4] 阅读 Thunar 的所有更改日志。 -此外,截屏应用 screenshooter 默认支持 WebP。蓝牙管理器 Blueman 在系统托盘新增配置文件切换器并更新 Catfish 文件搜索工具。 +此外,截屏应用 ScreenShooter 默认支持 WebP。蓝牙管理器 Blueman 在系统托盘新增配置文件切换器,并更新了 Catfish 文件搜索工具。 这是 Xfce 应用版本的更新列表和指向其更改日志的链接(如果你想进一步挖掘)。 @@ -64,30 +65,30 @@ Thunar 文件管理器获得了大量的底层功能和错误修复。如果你 默认的 elementary-xfce 图标集(浅色和深色)得到了更新,带有额外的精美图标,让你的 Xfce 桌面焕然一新。默认的 Greybird GTK 主题对窗口装饰进行了必要的改进,并添加了 Openbox 支持。 -你可能会注意到的重要且可见的变化之一是 ALT+TAB 外观。图标更大一些,眼睛更舒适,可以在深色背景下更快地切换窗口。 +你可能会注意到的重要且可见的变化之一是 `ALT+TAB` 外观。图标更大一些,眼睛更舒适,可以在深色背景下更快地切换窗口。 ![在 Xubuntu 22.10 的 elementary-xfce 中更新的图标集示例][15] ![ALT TAB 有更大的图标][16] -上述更改使默认应用与基础 [Ubuntu 22.10 版本][17]保持一致。以下是 Xubuntu 22.10 中的更改概括。 +上述更改使默认应用与其所基于的 [Ubuntu 22.10 版本][17] 保持一致。以下是 Xubuntu 22.10 中的更改概括。 ### 概括 -* Linux Kernel 5.19 和基于 Ubuntu 22.10 +* Linux 内核 5.19,基于 Ubuntu 22.10 * Xfce 桌面版 4.17 * 原生应用全部更新到 4.17 * 核心与 GNOME 43、libadwaita、GTK4 保持一致 * MATE 应用程序升级到 1.26 -* Mozilla Firefox 网络浏览器 105.0 +* Mozilla Firefox 网页浏览器 105.0 * Thunderbird 邮件客户端 102.3 * LibreOffice 7.4.4.2 ### 总结 -Xfce 桌面作为一个整体最关键的变化是在 4.18 版本中到来的。例如,最初的 Wayland 支持、更新的 glib 和 GTK 包。如果一切顺利,你可以在明年 4 月发布的 Xubuntu 中期待这些最好的变化。 +Xfce 桌面最关键的整体变化将在 4.18 版本中到来。例如,最初的 Wayland 支持、更新的 glib 和 GTK 包。如果一切顺利,你可以在明年 4 月发布的 Xubuntu 中期待这些最好的变化。 -最后,如果你想试用,可以从[这个页面][18]下载 beta 镜像。 +最后,如果你想试用,可以从 [这个页面][18] 下载 Beta 镜像。 -------------------------------------------------------------------------------- @@ -96,7 +97,7 @@ via: https://www.debugpoint.com/xubuntu-22-10-features/ 作者:[Arindam][a] 选题:[lkxed][b] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 diff --git a/published/202210/20221011 Easiest Way to Open Files as Root in GNOME Files.md b/published/202210/20221011 Easiest Way to Open Files as Root in GNOME Files.md new file mode 100644 index 0000000000..e8854cf6d7 --- /dev/null +++ b/published/202210/20221011 Easiest Way to Open Files as Root in GNOME Files.md @@ -0,0 +1,80 @@ +[#]: subject: "Easiest Way to Open Files as Root in GNOME Files" +[#]: via: "https://www.debugpoint.com/gnome-files-root-access/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15168-1.html" + +在 GNOME 文件应用中以 Root 身份打开文件的最简单方法 +====== + +> 这是在 GNOME 文件应用中以 root 身份访问文件或目录的最简单方法。 + +![][1] + +在 Windows 中,你通常可以在右键单击上下文菜单中以“以管理员身份打开”的方式打开文件或文件夹。 + +该功能是文件管理器的一部分,对于 Windows,它是 Windows 资源管理器的一部分。但是,它是由操作系统及其权限控制模块执行的。 + +在 Linux 发行版及其文件管理器中,情况略有不同。不同的桌面有自己的处理方式。 + +由于以管理员(root)身份修改文件和文件夹是有风险的,并且可能导致系统损坏,因此用户无法通过文件管理器的 GUI 轻松使用该功能。 + +例如,KDE Plasma 的默认文件管理器(Dolphin)最近 [添加了此功能][2],因此当需要 root 权限时,它会通过 PolicyKit KDE Agent(polkit)窗口询问你,如下所示。 + +![使用 Polkit 实现 KIO 后的 Dolphin root 访问权限][3] + +而不是相反的方式。比如,你想在文件管理器中通过 root 打开/执行一些东西时,你不能使用 `sudo dolphin` 以 root 权限运行文件管理器本身。 + +在某种程度上,它挽救了许多不可预见的情况。但是高级用户总是可以通过终端使用 `sudo` 来完成他们的工作。 + +### GNOME 文件应用(Nautilus)和对文件、目录的 root 访问权限 + +话虽如此,[GNOME 文件应用][4](又名 Nautilus)有一种方法可以通过 root 打开文件和文件夹。 + +以下是方法: + +* 打开 GNOME 文件应用(Nautilus)。 +* 然后单击左侧窗格中的“其他位置Other Locations”。 +* 按 `CTRL+L` 调出地址栏。 +* 在地址栏中,输入下面的内容并回车。 + ``` + admin:/// + ``` +* 它会要求输入管理员密码。当你成功验证,你就会以管理员身份打开系统。 +* 现在,从这里开始,无论你做什么,它都是管理员或 root。 + +![以管理员身份输入位置地址][5] + +![输入管理员密码][6] + +![以 root 身份打开 GNOME 文件应用][7] + +但是,与往常一样,请小心你作为管理员所做的事情。在你以 root 身份验证自己之后,通常很容易忘记。 + +这些选项不容易看到总是有原因的,以防止你和许多新的 Linux 用户破坏他们的系统。 + +祝好。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/gnome-files-root-access/ + +作者:[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/10/nauroot-1024x576.jpg +[2]: https://www.debugpoint.com/dolphin-root-access/ +[3]: https://www.debugpoint.com/wp-content/uploads/2022/02/Dolphin-root-access-after-KIO-with-Polkit-implementation.jpg +[4]: https://wiki.gnome.org/Apps/Files +[5]: https://www.debugpoint.com/wp-content/uploads/2022/10/Enter-the-location-address-as-admin.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2022/10/Give-admin-password.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2022/10/Opening-GNOME-Files-as-root.jpg diff --git a/translated/tech/20221011 How to Enable Snap Support in Arch Linux.md b/published/202210/20221011 How to Enable Snap Support in Arch Linux.md similarity index 64% rename from translated/tech/20221011 How to Enable Snap Support in Arch Linux.md rename to published/202210/20221011 How to Enable Snap Support in Arch Linux.md index 00398d3f86..f48d40ea70 100644 --- a/translated/tech/20221011 How to Enable Snap Support in Arch Linux.md +++ b/published/202210/20221011 How to Enable Snap Support in Arch Linux.md @@ -3,34 +3,37 @@ [#]: author: "Pranav Krishna https://itsfoss.com/author/pranav/" [#]: collector: "lkxed" [#]: translator: "geekpi" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15160-1.html" 如何在 Arch Linux 中启用 Snap 支持 ====== + +![](https://img.linux.net.cn/data/attachment/album/202210/21/100128gzzqkf3fcg3f6q3n.jpg) + Snap 是由 Ubuntu 的母公司 Canonical 设计的通用包格式。有些人不喜欢 Snap,但它有一些优势。 -通常,某些应用仅以 Snap 格式提供。这为你提供了在 Arch Linux 中启用 snap 的充分理由。 +通常,某些应用仅以 Snap 格式提供。这为你提供了在 Arch Linux 中启用 Snap 的充分理由。 -我知道 AUR 拥有大量应用,但 snap 应用通常直接来自开发人员。 +我知道 AUR 拥有大量应用,但 Snap 应用通常直接来自开发人员。 -如果你希望能够在 Arch Linux 中安装 Snap 应用,你需要先启用 snap 支持。 +如果你希望能够在 Arch Linux 中安装 Snap 应用,你需要先启用 Snap 支持。 有两种方法可以做到: * 使用 AUR 助手启用 Snap 支持(更简单) -* 通过从 AUR 获取包手动启用 Snap 支持 +* 通过从 AUR 获取包,手动启用 Snap 支持 让我们看看怎么做。 -### 方法 1. 使用 AUR 助手启用 Snap +### 方法 1、使用 AUR 助手启用 Snap -Snap 在 Arch 用户仓库中以 *snapd* 包的形式提供。你可以使用 AUR 助手轻松安装它。 +Snap 支持在 Arch 用户仓库中以 `snapd` 包的形式提供。你可以使用 AUR 助手轻松安装它。 -存在[许多 AUR 助手][1],但 *yay* 是我更喜欢的,因为它的语法类似于 [pacman 命令][2]。 +有 [许多 AUR 助手][1],但 `yay` 是我更喜欢的,因为它的语法类似于 [pacman 命令][2]。 -如果你还没有安装 AUR,请使用以下命令安装 Yay(需要事先 git): +如果你还没有安装 AUR,请使用以下命令安装 Yay(需要事先安装 `git`): ``` git clone https://aur.archlinux.org/yay @@ -42,7 +45,7 @@ makepkg -si ![安装 yay][3] -现在 *yay* 已安装,你可以通过以下方式安装 snapd: +现在 `yay` 已安装,你可以通过以下方式安装 `snapd`: ``` yay -Sy snapd @@ -50,11 +53,11 @@ yay -Sy snapd ![使用 yay 从 AUR 安装 snapd][4] -每当你[更新 Arch Linux][5] 系统时,Yay 都会启用 snapd 的自动更新。 +每当你 [更新 Arch Linux][5] 系统时,`yay` 都会启用 `snapd` 的自动更新。 -### 验证 snap 是否有效 +#### 验证 Snap 支持是否有效 -要测试 snap 是否正常工作,请安装并运行 *hello-world* snap 包。 +要测试 Snap 支持是否正常工作,请安装并运行 `hello-world` Snap 包。 ``` sudo snap install hello-world @@ -64,13 +67,13 @@ hello-world sudo snap run hello-world ``` -![hello-world snap 包执行][6] +![hello-world Snap 包执行][6] -如果它运行良好,那么你可以轻松安装其他 snap 包。 +如果它运行良好,那么你可以轻松安装其他 Snap 包。 -### 方法 2. 从 AUR 手动构建 snap 包 +### 方法 2、从 AUR 手动构建 snapd 包 -如果你不想使用 AUR 助手,你仍然可以从 AUR 获取 snap。让我展示详细的过程。 +如果你不想使用 AUR 助手,你仍然可以从 AUR 获取 `snapd`。让我展示详细的过程。 你需要先安装一些构建工具。 @@ -78,9 +81,9 @@ sudo snap run hello-world sudo pacman -Sy git go go-tools python-docutils ``` -![为 snap 安装依赖项][7] +![为 Snap 安装依赖项][7] -完成依赖项安装后,现在可以克隆 AUR 目录,如下所示: +完成依赖项安装后,现在可以克隆 `snapd` 的 AUR 目录,如下所示: ``` git clone https://aur.archlinux.org/snapd @@ -90,17 +93,17 @@ cd snapd ![克隆仓库][8] -然后构建 snapd 包: +然后构建 `snapd` 包: ``` makepkg -si ``` -当它要求安装其他依赖包时输入 yes。 +当它要求安装其他依赖包时输入 `yes`。 ![手动构建 snapd][9] -你已安装 snapd 守护程序。但是,需要启用它以在启动时自动启动。 +你已安装 `snapd` 守护程序。但是,需要启用它以在启动时自动启动。 ``` sudo systemctl enable snapd --now @@ -110,15 +113,15 @@ sudo systemctl enable snapd.apparmor --now #start snap applications sudo ln -s /var/lib/snapd/snap /snap #optional: classic snap support ``` -![启动时启用 snap][10] +![启动时启用 Snap][10] 手动构建包的主要缺点是每次新更新启动时你都必须手动构建。使用 AUR 助手为我们解决了这个问题。 ### 总结 -我更喜欢 Arch Linux 中的 pacman 和 AUR。很少能看到不在 AUR 中但以其他格式提供的应用。尽管如此,在某些你希望直接从源获取它的情况下,使用 snap 可能是有利的,例如 [在 Arch 上安装 Spotify][11]。 +我更喜欢 Arch Linux 中的 pacman 和 AUR。很少能看到不在 AUR 中但以其他格式提供的应用。尽管如此,在某些你希望直接从源获取它的情况下,使用 Snap 可能是有利的,例如 [在 Arch 上安装 Spotify][11]。 -希望本教程对您有所帮助。如果你有任何问题,请告诉我。 +希望本教程对你有所帮助。如果你有任何问题,请告诉我。 -------------------------------------------------------------------------------- @@ -127,7 +130,7 @@ via: https://itsfoss.com/install-snap-arch-linux/ 作者:[Pranav Krishna][a] 选题:[lkxed][b] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 diff --git a/published/20221011 VirtualBox 7.0 Releases With Secure Boot and Full VM Encryption Support.md b/published/202210/20221011 VirtualBox 7.0 Releases With Secure Boot and Full VM Encryption Support.md similarity index 100% rename from published/20221011 VirtualBox 7.0 Releases With Secure Boot and Full VM Encryption Support.md rename to published/202210/20221011 VirtualBox 7.0 Releases With Secure Boot and Full VM Encryption Support.md diff --git a/published/202210/20221012 How to Set Static IP Address on Ubuntu Server 22.04.md b/published/202210/20221012 How to Set Static IP Address on Ubuntu Server 22.04.md new file mode 100644 index 0000000000..2d81af776b --- /dev/null +++ b/published/202210/20221012 How to Set Static IP Address on Ubuntu Server 22.04.md @@ -0,0 +1,128 @@ +[#]: subject: "How to Set Static IP Address on Ubuntu Server 22.04" +[#]: via: "https://www.linuxtechi.com/static-ip-address-on-ubuntu-server/" +[#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15181-1.html" + +如何在 Ubuntu 服务器 22.04 上设置静态 IP 地址 +====== + +![](https://img.linux.net.cn/data/attachment/album/202210/27/091312aohaix6g6kay68xa.jpg) + +> 在这篇文章中,我们将介绍如何在 Ubuntu 服务器 22.04 上设置静态 IP 地址。 + +强烈建议在 Linux 服务器上使用静态 IP,因为它会在重启后保持不变。静态 IP 对邮件服务器、Web 服务器和文件服务器等服务器起着重要作用。 + +**准备条件** + +* 最小安装的 Ubuntu 服务器 22.04 +* 具有 `sudo` 管理员权限的普通用户 + +在 Ubuntu 服务器 22.04 中,网络由 netplan 程序控制,因此我们将使用 netplan 在 Ubuntu 服务器上配置静态 IP 地址。 + +注意:我们不能使用 [nmcli 程序][1],因为它不是 Ubuntu 服务器上默认安装的一部分。 + +### 在 Ubuntu 服务器 22.04 上设置静态 IP 地址 + +登录到你的 Ubuntu 服务器 22.04,查找 netplan 配置文件。它位于 `/etc/netplan` 目录下。 + +``` +$ cd /etc/netplan/ +$ ls -l +total 4 +-rw-r--r-- 1 root root 116 Oct 12 04:03 00-installer-config.yaml +$ +``` + +运行以下 `cat` 命令以查看 `00-installer-config.yaml` 的内容。 + +注意:配置文件的名称可能因你的设置而异。由于它是一个 yaml 文件,因此请确保在编辑时保持缩进和语法。 + +``` +$ cat 00-installer-config.yaml +``` + +输出: + +![Default-Content-netplan-ubuntu-server][2] + +根据上面的输出,它说我们有 `ens33` 接口,它正在从 DHCP 服务器获取 IP。查看接口名称的另一种方法是通过 `ip` 命令。 + +现在,要配置静态 IP 代替 DHCP,使用 `vi` 或 `nano` 编辑器编辑 netplan 配置文件并添加以下内容。 + +``` +$ sudo vi 00-installer-config.yaml +# This is the network config written by 'subiquity' +network: + renderer: networkd + ethernets: + ens33: + addresses: + - 192.168.1.247/24 + nameservers: + addresses: [4.2.2.2, 8.8.8.8] + routes: + - to: default + via: 192.168.1.1 + version: 2 +``` + +保存并关闭文件。 + +![Updated-Netplan-Config-File-Content-Ubuntu-Server][3] + +在上面的文件中,我们使用了以下内容, + +* `ens33` 为接口名称 +* 用于设置静态 IP 的地址 +* `nameservers` 用于指定 DNS 服务器的 IP +* 用于指定默认网关的路由 + +注意:根据你的环境更改 IP 详细信息和接口名称。 + +要是上述修改生效,请使用以下 `netplan` 命令应用这些更改: + +``` +$ sudo netplan apply +``` + +运行以下 IP 命令查看接口上的 IP 地址: + +``` +$ ip addr show ens33 +``` + +要查看默认路由,请运行: + +``` +$ ip route show +``` + +上述命令的输出。 + +![ip-addr-route-command-output-ubuntu-server][4] + +完美,以上命令的输出确认静态 IP 和路由配置成功。 + +这就是这篇文章的全部内容。请在下面的评论部分发表你的问题和反馈。 + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/static-ip-address-on-ubuntu-server/ + +作者:[Pradeep 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.linuxtechi.com/author/pradeep/ +[b]: https://github.com/lkxed +[1]: https://www.linuxtechi.com/configure-ip-with-nmcli-command-linux/ +[2]: https://www.linuxtechi.com/wp-content/uploads/2022/10/Default-Content-netplan-ubuntu-server.png +[3]: https://www.linuxtechi.com/wp-content/uploads/2022/10/Updated-Netplan-Config-File-Content-Ubuntu-Server.png +[4]: https://www.linuxtechi.com/wp-content/uploads/2022/10/ip-addr-route-command-output-ubuntu-server.png diff --git a/published/202210/20221013 Enjoy the Classic Snake Game in Your Linux Terminal.md b/published/202210/20221013 Enjoy the Classic Snake Game in Your Linux Terminal.md new file mode 100644 index 0000000000..8e365e371a --- /dev/null +++ b/published/202210/20221013 Enjoy the Classic Snake Game in Your Linux Terminal.md @@ -0,0 +1,106 @@ +[#]: subject: "Enjoy the Classic Snake Game in Your Linux Terminal" +[#]: via: "https://www.debugpoint.com/snake-game-linux-terminal/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15186-1.html" + +在你的 Linux 终端中玩经典的贪吃蛇游戏 +====== + +![](https://img.linux.net.cn/data/attachment/album/202210/28/091539oanrjizald7rzr7a.jpg) + +> 这是你在 Linux 终端中安装和玩经典贪吃蛇的方法。 + +还记得老式手机经典简单的贪吃蛇吗?我记得玩了几个小时。嘿,当时没有其他选择,对吧?智能手机仍未上市。而你所拥有的只有这个。 + +![Nokia 3310 中的旧版贪吃蛇游戏][1] + +但随着时间的推移,贪吃蛇被具有各种选项的更高级的图形游戏所取代。但没有什么能比得上经典贪吃蛇游戏。 + +如果我告诉你,你可以在 Linux 终端中玩这个游戏呢?无论你运行的是 Ubuntu Linux、Fedora Linux 还是 Arch Linux,都无关紧要。该游戏适用于大多数 [发行版][2]。 + +![nsnake - 主菜单][3] + +### 安装 nSnake – Linux 终端的贪吃蛇 + +你可以使用以下方法通过终端安装 [此游戏][4]。 + +对于 Ubuntu、Linux Mint 或其他相关发行版: + +``` +sudo apt install nsnake +``` + +对于 Fedora Linux 和其他: + +``` +sudo dnf install nsnake +``` + +对于 Arch Linux,此游戏可在 [Arch 用户仓库(AUR)][5] 中获得。你可以使用以下步骤安装它。 + +* [设置 Yay AUR 助手][6] +* 然后打开终端并运行以下命令 + +``` +yay -S nsnake +``` + +上面的命令会安装游戏的软件仓库版本,它可能不是最新的。但是,如果你想要最新版本,你可能需要通过 GitHub 编译源代码。我在本页末尾添加了编译说明供你参考。 + +### 玩游戏 + +玩游戏非常简单。在终端中输入 `nsnake`,这将启动游戏。 + +要立即退出,请按 `q`。 + +以下是默认键绑定。 + +* `箭头键` - 移动蛇 +* `q` – 退出游戏 +* `p` – 暂停游戏 + +你还可以通过主菜单以各种方式配置游戏。 + +![nsnake Linux 终端贪吃蛇设置][7] + +完成了,玩吧! + +### 编译 + +要编译最新版本,请在所有 Linux 发行版中使用以下命令。 + +哦,确保你已经安装了 `git` 和 `ncurses-devel`,它们是编译所需的包。 + +``` +git clone https://github.com/alexdantas/nSnake.git +cd nsnake +make +make install +``` + +那么,你喜欢贪吃蛇游戏吗?与其他基于终端的游戏相比,你更喜欢它吗?在下面的评论框中与其他读者分享你的观点。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/snake-game-linux-terminal/ + +作者:[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/2021/12/Nokia-3310-with-legacy-snake-game.jpg +[2]: https://www.debugpoint.com/category/distributions +[3]: https://www.debugpoint.com/wp-content/uploads/2021/12/nsnake-Game-Main-Menu.jpg +[4]: https://github.com/alexdantas/nsnake +[5]: https://aur.archlinux.org/packages/nsnake/ +[6]: https://www.debugpoint.com/2021/01/install-yay-arch/ +[7]: https://www.debugpoint.com/wp-content/uploads/2021/12/nsnake-Linux-Terminal-Snake-Game-Settings.jpg diff --git a/published/202210/20221013 Learn Bash base64 Encode and Decode With Examples.md b/published/202210/20221013 Learn Bash base64 Encode and Decode With Examples.md new file mode 100644 index 0000000000..c69b31a88a --- /dev/null +++ b/published/202210/20221013 Learn Bash base64 Encode and Decode With Examples.md @@ -0,0 +1,161 @@ +[#]: subject: "Learn Bash base64 Encode and Decode With Examples" +[#]: via: "https://www.debugpoint.com/bash-base64-encode-decode/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15189-1.html" + +通过示例来学习 Bash base64 的编码和解码 +====== + +> 你想了解 Base64 编码和解码的方法吗?在本教程中,我们使用 Bash shell 脚本和各种示例解释了 Base64 编码和解码步骤。 + +![](https://img.linux.net.cn/data/attachment/album/202210/29/163350mde5lll86j6lspln.jpg) + +Base64 编码方法可以将二进制数据转换为文本,如此编码数据可以在任何通信媒介进行传输。这种编码方法主要用于电子邮件加密的过程。 + +总体而言,Base64 编码方法是一种二进制到文本的编码方案,以 ASCII 字符串格式表示 8 字节的二进制数据。使用这种编码方法在各种媒介之间传输数据时有几个优势,尤其是对于那些能可靠地支持文本内容的媒介。因此,Base64 编码方法在万维网上被广泛使用。这种编码方案最常用于电子邮件附件的编码上。 + +根据 Base64 编码表,二进制数据可以经 Base64 编码后可以转换为 64 个不同的 ASCII 字符,包含大写字母 `A` 到 `Z`,小写字母 `a` 到 `z`,数字 `0` 到 `9`,以及符号 `+` 和 `/`,这些字符在传输和打印上十分便捷。 + +这 64 个 ASCII 字符代表着从 `000000` 到 `111111` 的二进制值。每个非末尾的 Base64 编码字符恰好代表 6 位二进制值。 + +![Base64 Index Table][2] + +### Bash base64 的编码和解码 + +#### 句法 + +在我们提供示例之前,首先介绍 Base64 的基本语法。 + +``` +base64 [OPTIONs] [INFILE] [OUTFILE] +``` + +- 选项(`Option`):参照下面的表格,你可以提供任何的选项或组合多个选项。 +- 输入(`INFILE`):你可以从标准输入(如命令行)或文件中输入。 +- 输出(`OUTFILE`):你可以将输出重定向到标准输出,如终端或文件中。 + +| 选项 | 描述 | +| :- | :- | +| `-e` 或者 `--encode` | 此选项用于对标准输入的数据或从文件中读入的数据进行编码。这是默认选项。 | +| `-d` 或者 `--decode` | 此选项用于对标准输入的数据或从文件中读入的已 Base64 编码数据进行解码。 | +| `-n` 或者 `--noerrcheck` | 默认情况下,Base64 在解码数据时,会自动检查是否有错误。你可以使用该选项在解码时忽略检查。 | +| `-i` 或 `--ignore-garbage` | 此选项用于在解码时忽略非字母字符。 | +| `-u` 或者 `--help` | 此选项用于获取有关使用此命令的信息。 | + +#### 示例 1:基本编码 + +在 Linux 中,默认已安装好 Base64 软件包。因此,你可以轻松地从命令行使用 Base64。要对一个字符串或文本进行编码,你可以通过管道将其传递到 `base64` 命令,并获取待编码的文本。在下面的示例中,对字符串 `debugpoint.com` 进行了 Base64 编码。 + +``` +echo "debugpoint.com" | base64 +``` + +![bash base64 encode and decode - example 1][3] + +结果是经过 Base64 编码后的字符串。 + +#### 解释 + +Base64 编码方法使用下面的几个步骤来转换输入的数据。首先,每个输入字符转换为 8 位二进制值,接着,二进制字符串拆分为一组组 6 位的二进制值,然后,每个 6 位的二进制值被转换为十进制值。 + +最后,每个十进制值都通过 Base64 编码索引表转换为 Base64 字符。 + +在上面的示例中,第一个字符 `d` 被转换为二进制 `01100100`。前 6 位是 `011001`,转换为十进制是 `25`。`25` 在 Base64 编码索引表中对应着 `Z`。整个输入的文本流都像如此编码。请参阅以下编码过程的示例。 + +![Base64 Encode and Decode – inner working][4] + +#### 示例 2:基本解码 + +要解码字符串,需要将编码值传递给 `base64` 命令,选项为 `--decode`,它将输出你之前输入的字符串。 + +![bash base64 encode and decode - example 2 (decode the same example)][5] + +#### 示例 3:对文本文件进行编码 + +示例 1 中的同一命令也可用于编码文本文件,并将输出重定向到另一个文本文件。方法如下。 + +``` +base64 example3.txt > example3-encoded.txt +``` + +![Encode a text file][6] + +#### 示例 4:对文本文件进行解码 + +要解码使用 Base64 编码的文本文件,只需使用 `--decode` 或 `-d` 选项,并传递文本文件名。 + +``` +base64 -d example3-encoded.txt +``` + +#### 示例 5:对用户输入的数据进行编码 + +使用 Bash shell 编程,你可以通过终端接收用户的输入,并对其进行 Base64 编码。你需要先编写一个简单的 shell 脚本,并在授予可执行权限后执行。 + +以下就是一个简单的示例,它从用户那里获得输入,然后进行 Base64 编码,最终显示编码的字符串。 + +``` +#!/bin/bash +#Sample program to take input, encode to base64 and display on terminal +#Example by www.debugpoint.com +echo "Enter text for encoding to base64:" +read input_text +output_text=`echo -n $input_text | base64` +echo "The Base64 Encoded text is: $output_text" +``` + +![Custom input - base64 encode and decode using script][7] + +#### 示例 6:用 Base64 进行简单的身份认证 + +你可以运用上述的编码和解码方法,实现一个简单的身份验证系统。你可以让用户输入密码或密码,然后将密码存储在文件中。或者进行实时比较。 + +如果存储的编码字符串与用户输入的文本再编码的字符串相匹配,则用户可以通过验证。虽然这是一种检查身份验证的很简单的方法,但有时这对一些简单的业务案例很有用。 + +``` +#!/bin/bash +#Sample program to take input, encode to base64 and display on terminal +#Example by www.debugpoint.com +echo "Type your password" +read pwd1 +decoded_text=`echo 'U2lsZW5jZSBpcyBnb2xkZW4h' | base64 --decode` +if [[ $pwd1 == $decoded_text ]] +then + echo "You are a valid user." +else + echo "You are NOT a valid user." +fi +``` + +![A Simple Authentication using bash base64][8] + +### 总结 + +我希望你能通过这些示例,学会 [Base64][9] 编码和解码的基础知识。此外,你也了解到 Base64 的内部编码方式。如果这对你很有帮助,或你还需要有关此主题的其他教程,请在下面的评论区中告诉我吧。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/bash-base64-encode-decode/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[chai001125](https://github.com/chai001125) +校对:[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/11/base64example-1024x576.jpg +[2]: https://www.debugpoint.com/wp-content/uploads/2021/11/Base64-Index-Table.png +[3]: https://www.debugpoint.com/wp-content/uploads/2021/11/bash-base64-encode-and-decode-example-1.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2021/11/Base64-Encode-and-Decode-inner-working.png +[5]: https://www.debugpoint.com/wp-content/uploads/2021/11/bash-base64-encode-and-decode-example-2-decode-the-same-example.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2021/11/Encode-a-text-file.png +[7]: https://www.debugpoint.com/wp-content/uploads/2021/11/Custom-input-base64-encode-and-decode-using-script.png +[8]: https://www.debugpoint.com/wp-content/uploads/2021/11/A-Simple-Authentication-using-bash-base64.png +[9]: https://linux.die.net/man/1/base64 diff --git a/published/202210/20221014 Can Kubernetes help solve automation challenges-.md b/published/202210/20221014 Can Kubernetes help solve automation challenges-.md new file mode 100644 index 0000000000..ff7192f67f --- /dev/null +++ b/published/202210/20221014 Can Kubernetes help solve automation challenges-.md @@ -0,0 +1,72 @@ +[#]: subject: "Can Kubernetes help solve automation challenges?" +[#]: via: "https://opensource.com/article/22/10/kubernetes-solve-automation-challenges" +[#]: author: "Rom Adams https://opensource.com/users/romdalf" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15193-1.html" + +Kubernetes 能否帮助解决自动化挑战? +====== + +![](https://img.linux.net.cn/data/attachment/album/202210/30/105625ocz9sd9z6g4dzb44.jpg) + +> 组织层面的自动化一直是一个难以实现的目标,但 Kubernetes 或许能够改变这一切。 + +当我在 2002 年采用 Gentoo Linux 作为我的主要操作系统时,我开始了我的自动化之旅。二十年后,自动化还没有完成。当我与客户和合作伙伴会面时,他们分享了团队内部的自动化成果,但他们也描述了在组织层面实现类似成功所面临的挑战。 + +大多数 IT 组织都能够端到端地提供虚拟机,从而将过去 4 周的交付周期缩短到仅 5 分钟。这种级别的自动化本身就是一个复杂的工作流程,需要网络(IP 地址管理、DNS、代理、网络区域等)、身份访问管理、[虚拟机管理程序][2]、存储、备份、更新操作系统、应用最新的配置文件、监控、安全和强化以及合规性基准测试,等等。哇,这么多! + +满足高速、可扩展和按需自动化的业务需求并不容易。例如,来看看经典的网上商店或提交纳税申报表的在线政府服务,其工作负载有明确的峰值需要面对。 + +处理此类负载的一种常见方法是拥有一个超大的服务器集群,以供 IT 专业人员的特定团队使用,监控客户或公民的季节性涌入。每个人都希望及时部署整个栈。他们希望基础架构在混合云场景的上下文中运行工作负载,使用“构建-消耗-回收build-consume-trash”模型来优化成本,同时从无限弹性中受益。 + +换句话说,每个人都想要乌托邦式的“云体验”。 + +### 云真的能交付吗? + +尚有一线机会,这主要归功于 [Kubernetes][3] 的设计方式。Kubernetes 的指数级普及推动了创新,取代了管理平台和应用的标准传统做法。 Kubernetes 需要使用 “万物皆代码Everything-as-Code”(EaC)来定义从简单的计算节点到 TLS 证书的所有资源的期望状态。Kubernetes 强制使用三种主要的设计结构: + +* 一个标准接口,以减少内部和外部组件之间的整合问题 +* API 优先及仅 API 的方法来标准化其所有组件的 CRUD(创建、读取、更新、删除)操作 +* 使用 [YAML][4] 作为通用语言,以简单易读的方式定义这些组件的所有所需状态 + +这三个关键组成部分基本上是选择自动化平台的相同要求,至少如果你想让跨职能团队轻松采用是这样的。这也模糊了团队之间的职责分工,有助于提高跨越孤岛的协作,这是一件好事! + +事实上,采用 Kubernetes 的客户和合作伙伴正在加速进入超自动化状态。Kubernetes 有机地推动团队采用多种 [DevOps 基础和实践][5],如:EaC、[使用 Git 进行版本控制][6]、同行评审、[文档即代码][7]Documentation as Code,并鼓励跨职能协作。这些实践有助于提高团队的自动化技能,并帮助团队在处理应用生命周期和基础架构的 GitOps 和 CI/CD 管道方面取得良好的开端。 + +### 让自动化成为现实 + +你没看错!网络商店或政府报告等复杂系统的整个栈可以用清晰、可理解、通用的术语定义,可以在任何本地或云提供商上执行。可以定义具有自定义指标的自动伸缩器以触发所需栈的即时部署,以解决季节性高峰期间客户或市民的涌入问题。当指标恢复正常,且云计算资源不再有存在的理由时,你将它们回收并恢复常规运营,而由一组核心资产在本地接管业务,直到下一次激增。 + +### 鸡和蛋的悖论 + +考虑到 Kubernetes 和云原生模式,自动化是必须的。但它提出了一个重要的问题:一个组织可以在解决自动化战略之前采用 Kubernetes 吗? + +似乎从 Kubernetes 开始可以激发更好的自动化,但这并不是一个一成不变的结论。工具不是对技能、实践和文化问题的解决方案。但是,设计良好的平台可以成为 IT 组织内学习、变革和跨职能协作的催化剂。 + +### 开始使用 Kubernetes + +即使你觉得自己错过了自动化列车,也不要害怕从简单、不复杂的栈上开始使用 Kubernetes。当你 [掌握了初始步骤][8],就可以拥抱这个出色的编排系统的简单性,并根据更复杂的需求进行迭代。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/kubernetes-solve-automation-challenges + +作者:[Rom Adams][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/romdalf +[b]: https://github.com/lkxed +[2]: https://www.redhat.com/en/topics/virtualization/what-is-a-hypervisor?intcmp=7013a000002qLH8AAM +[3]: https://www.redhat.com/en/topics/containers/what-is-kubernetes?intcmp=7013a000002qLH8AAM +[4]: https://opensource.com/article/21/9/yaml-cheat-sheet +[5]: https://opensource.com/resources/devops +[6]: https://opensource.com/life/16/7/stumbling-git +[7]: https://opensource.com/article/21/3/devops-documentation +[8]: https://opensource.com/article/17/11/getting-started-kubernetes diff --git a/published/20221014 First Look at LURE! Bringing AUR to All Linux Distros.md b/published/202210/20221014 First Look at LURE! Bringing AUR to All Linux Distros.md similarity index 100% rename from published/20221014 First Look at LURE! Bringing AUR to All Linux Distros.md rename to published/202210/20221014 First Look at LURE! Bringing AUR to All Linux Distros.md diff --git a/published/202210/20221014 Install Gedit on Ubuntu 22.10 and Make it Default Text Editor.md b/published/202210/20221014 Install Gedit on Ubuntu 22.10 and Make it Default Text Editor.md new file mode 100644 index 0000000000..a4ea73de8f --- /dev/null +++ b/published/202210/20221014 Install Gedit on Ubuntu 22.10 and Make it Default Text Editor.md @@ -0,0 +1,113 @@ +[#]: subject: "Install Gedit on Ubuntu 22.10 and Make it Default Text Editor" +[#]: via: "https://itsfoss.com/install-gedit-ubuntu/" +[#]: author: "Abhishek Prakash https://itsfoss.com/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15194-1.html" + +在 Ubuntu 22.10 上安装 Gedit 并将其设为默认文本编辑器 +====== + +![](https://img.linux.net.cn/data/attachment/album/202210/30/124029bf0qjklphcpzpclh.jpg) + +[GNOME 有了一个全新的文本编辑器][1],以取代旧的 Gedit 编辑器。 + +虽然 GNOME 42 已经可以使用了它,但 Ubuntu 22.04 还依赖于 Gedit。 + +这在 Ubuntu 22.10 中发生了变化。 GNOME 文本编辑器Text Editor 现在是默认程序,甚至没有安装 Gedit。 + +![搜索文本编辑器只出现 GNOME 文本编辑器][2] + +虽然新编辑器足够好,但并不是每个人都喜欢它。如果你将 Gedit 与其他插件一起频繁使用,则尤其如此。 + +如果你属于这类人,让我向你展示如何在 Ubuntu 上安装 Gedit。我还将分享如何将其设为默认文本编辑器。 + +### 在 Ubuntu 上安装 Gedit + +这实际上是不费吹灰之力的。虽然默认未安装 Gedit,但它仍然可以在 Ubuntu 仓库中找到。 + +所以,你所要做的就是使用 `apt` 命令来安装它: + +``` +sudo apt install gedit +``` + +Gedit 也可以在软件中心中找到,但它是 Snap 包。如果你愿意,你可以安装它。 + +![Gedit 也可以在 Ubuntu 的 Snap 商店中找到][3] + +#### 安装 Gedit 插件(可选) + +默认情况下,Gedit 为你提供访问一些插件的选项。你可以从 “汉堡菜单->偏好Preference->插件Plugins” 启用或禁用插件。 + +![在 Gedit 中访问插件][4] + +你可以在这里看到可用的插件。检查已安装或正在使用的插件。 + +![查看 Gedit 中可用和已安装的插件][5] + +但是,你可以通过安装 gedit-plugins 元数据包将插件选择提升到一个新的水平。 + +``` +sudo apt install gedit-plugins +``` + +这将使你可以访问其他插件,如书签、括号补全、Python 控制台等。 + +![其他 Gedit 插件][6] + +**提示**:如果你发现 Gedit 因缺少底角而显得有些格格不入,你可以安装一个名为 [Round Bottom Corner][7] 的 GNOME 扩展。这将为包括 Gedit 在内的所有应用强制添加圆底角。 + +### 使 Gedit 成为默认文本编辑器 + +好了!你已经安装了 Gedit,但文本文件仍然在双击操作后使用 GNOME 文本编辑器打开。要使用 Gedit 打开文件,你需要右键单击,然后选择“打开方式open with”选项。 + +如果你希望一直使用 Gedit 打开文本文件,你可以将其设置为默认程序。 + +右键单击文本文件并选择“打开方式open with”选项。在此处选择 Gedit 并从底部启用“始终用于此文件类型Always use for this file type”选项。 + +![设置 Gedit 为默认文本编辑器][8] + +### 删除 Gedit + +觉得 Gedit 没达到预期么?这很少见,但我不会评判你。要从 Ubuntu 中删除 Gedit,请使用以下命令: + +``` +sudo apt remove gedit +``` + +你也可以尝试从软件中心卸载它。 + +### 总结 + +GNOME 文本编辑器是下一代从头开始创建的编辑器,它与新的 GNOME 完美融合。 + +对于简单的文本编辑来说已经足够了。然而,Gedit 有一个插件生态系统,赋予它更多功能。 + +对于那些将它广泛用于编码和其他事情的人来说,安装 Gedit 仍然是 Ubuntu 中的一个选项。 + +那你呢?你会坚持使用默认的新文本编辑器还是回到旧的 Gedit? + +--- + +via: https://itsfoss.com/install-gedit-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/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/gnome-text-editor/ +[2]: https://itsfoss.com/wp-content/uploads/2022/10/text-editor-ubuntu.png +[3]: https://itsfoss.com/wp-content/uploads/2022/10/install-gedit-from-ubuntu-software-center.png +[4]: https://itsfoss.com/wp-content/uploads/2022/10/access-plugins-in-gedit.png +[5]: https://itsfoss.com/wp-content/uploads/2022/10/plugins-in-gedit.png +[6]: https://itsfoss.com/wp-content/uploads/2022/10/additional-plugins-gedit.png +[7]: https://extensions.gnome.org/extension/5237/rounded-window-corners/ +[8]: https://itsfoss.com/wp-content/uploads/2022/10/set-gedit-default.png diff --git a/published/20221014 Notion-like Markdown Note-Taking App -Obsidian- is Out of Beta.md b/published/202210/20221014 Notion-like Markdown Note-Taking App -Obsidian- is Out of Beta.md similarity index 100% rename from published/20221014 Notion-like Markdown Note-Taking App -Obsidian- is Out of Beta.md rename to published/202210/20221014 Notion-like Markdown Note-Taking App -Obsidian- is Out of Beta.md diff --git a/published/202210/20221017.2 ⭐️ Ubuntu but rolling but also stable That's what Rhino Linux aims to be.md b/published/202210/20221017.2 ⭐️ Ubuntu but rolling but also stable That's what Rhino Linux aims to be.md new file mode 100644 index 0000000000..485a46b7e9 --- /dev/null +++ b/published/202210/20221017.2 ⭐️ Ubuntu but rolling but also stable That's what Rhino Linux aims to be.md @@ -0,0 +1,80 @@ +[#]: subject: "Ubuntu but rolling but also stable That's what Rhino Linux aims to be" +[#]: via: "https://news.itsfoss.com/rhino-linux/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "littlebirdnest" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15192-1.html" + +Rhino Linux:滚动发布但也很稳定的 Ubuntu +====== + +> 滚动发布的 Ubuntu 发行版?等等,什么? Rhino Linux 听起来不错…… + +![Ubuntu but rolling but also stable! That's what Rhino Linux aims to be][1] + +Rhino Linux 将成为 [Rolling Rhino Remix][2] 的继任者。这个由 http.llamaz 构建的 Linux 发行版,提供了滚动发布的**非官方的** Ubuntu 变体版本。 + +需要澄清的是,该项目从未旨在取代其他稳定的发行版,而纯粹是一个充满乐趣的激情项目。 + +而随着人们开始将其用作日常使用并对其期望更多,开发人员决定将其变成一个严肃的项目。 + +Rhino Linux 作为它的继任者。那么,你对它的期待是什么? + +### 有请继任者 Rhino Linux + +其主要目标是提供稳定的 Ubuntu 体验,同时仍提供滚动发布模式。 + +目标仍保持不变,但 Rhino Linux 的基础将得到彻底改变。他们有可能使它成为一个令人印象深刻的滚动发布的 Ubuntu 发行版。 + +**听起来很令人兴奋!🤯** + +在其核心,Rhino Linux 将使用稍微修改过的 [Xfce][3] 版本作为其桌面环境;之所以选择它是因为它众所周知的稳定性和速度。 + +Rhino Linux 的创始人提到了以下几点: + +> 滚动版 Ubuntu 仍然是我们的核心理念。Rhino Linux 并不是从 Rolling Rhino Remix 中分离出来的,而是将它重新设想为更稳定、更成熟的发行版,它原本就应该以这种方式出厂。 + +![xfce 4.14][4] + +除此之外,[Pacstall][5] 将用作 Rhino Linux 上的默认包管理器及其存储库之一。 + +> 💡 Pacstall 是一个受 [AUR][6] 启发的 Ubuntu 包管理器。 + +Pacstall 的开发由其创始人 [Plasma][7] 领导。他还作为新开发人员之一(副项目负责人)加入,而 [Sourajyoti Basak][8] 作为另一位核心成员加入。 + +### 前进:可用性和发布 + +在撰写本文时,Rhino Linux 尚未确定任何具体的发布日期,但你可以预计它会在 **2023** 年的某个时间发布。 + +Rolling Rhino Remix 会发生什么? + +开发者澄清说,它将在 Rhino Linux 发布后继续维护三个月。但是,在 2022 年 1 月 11 日后继发布之后,它没有新的发布镜像。 + +你可以通过访问其 [官方网站][9] 了解更多关于 Rhino Linux 的信息。 + +_💬 你觉得 Rhino Linux 怎么样?它可以成为值得尝试的官方 Ubuntu 风格的竞争者吗?_ + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/rhino-linux/ + +作者:[Sourav Rudra][a] +选题:[lkxed][b] +译者:[littlebirdnest](https://github.com/littlebirdnest) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w1200/2022/10/rhino-linux.png +[2]: https://github.com/rollingrhinoremix +[3]: https://www.xfce.org/ +[4]: https://news.itsfoss.com/content/images/2022/10/XFCE_4.14.png +[5]: https://github.com/pacstall/pacstall +[6]: https://itsfoss.com/aur-arch-linux/ +[7]: https://github.com/Henryws +[8]: https://github.com/wizard-28 +[9]: https://rhinolinux.org/ diff --git a/published/202210/20221017.3 ⭐️⭐️⭐️ Open source DevOps tools in a platform future.md b/published/202210/20221017.3 ⭐️⭐️⭐️ Open source DevOps tools in a platform future.md new file mode 100644 index 0000000000..8af5dc99f0 --- /dev/null +++ b/published/202210/20221017.3 ⭐️⭐️⭐️ Open source DevOps tools in a platform future.md @@ -0,0 +1,111 @@ +[#]: subject: "Open source DevOps tools in a platform future" +[#]: via: "https://opensource.com/article/22/10/open-source-devops-tools" +[#]: author: "Will Kelly https://opensource.com/users/willkelly" +[#]: collector: "lkxed" +[#]: translator: "lxbwolf" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15170-1.html" + +开源 DevOps 工具的平台化未来 +====== + +![](https://img.linux.net.cn/data/attachment/album/202210/24/092748lwwoicus5e4s59gg.jpg) + +> 当商业 DevOps 工具市场着眼于平台时,是时候让开源 DevOps 工具重新定义它们的未来了。 + +DevOps 的开源根基是无法动摇的,即便有预言称全球的 DevOps 市场将在 2026 年之前达到 178 亿美元。不断变化的工作环境、安全和合规性问题,以及风险投资公司等等因素正在将市场推向 DevOps 平台,开发团队可以在云中获得完整的端到端 DevOps 工具链。 + +### 开源 DevOps 工具现状 + +我们要搞清楚一件事:开源工具不可能从 DevOps 世界中消失。现在,在开源和供应商提供的 DevOps 工具之间存在着一种平衡,开发人员会在两者间选择适合他们的工具。事实上,很多情况下,一个开发团队起初会为他们的 DevOps 流水线选择一个开源工具,后来又升级到商业版本。 + +### 三种开源 DevOps 工具实例 + +下面我们介绍一些开源 DevOps 工具的例子,每种工具都已经有了围绕其建立的商业化生态。 + +#### Git + +源代码管理工具 [Git][1] 作为源代码库,可能是 DevOps 工具链的主要基础之一。 + +Git 的两个最佳商业案例是 GitLab 和 GitHub。GitLab [接受开发者对其贡献开源项目][2]。GitHub 也在着手努力成为一个 DevOps 平台,推出了人工智能版的结对编程 GitHub Copilot,在推出后受到了一些开源团体的褒贬不一的评价。 + +#### Jenkins + +作为一个开源的自动化服务,Jenkins 因其易于安装、配置和可扩展性而受到推崇。 + +CloudBees 提供了 JenkinsX,JenkinsX 是一套开源的解决方案,可以为 Kubernetes 上的云原生应用提供自动化持续集成和持续交付(CI/CD)以及自动化测试工具。他们还为JenkinsX 提供商业支持,包括: + +- 访问 CloudBees 的专业技术技能 +- 24x7 技术支持 +- 访问 CloudBees 的文档和在线知识库 + +#### Kubernetes + +随着越来越多的组织寻求企业级的容器编排解决方案,[Kubernetes][3] 的发展成为必然。尽管有人批评其复杂性。 + +自然而然的,Kubernetes 周边有完整的、蓬勃发展的产业。根据 Allied 市场调研的数据,全球容器和 [Kubernetes 安全][4] 市场在 2020 年的估值为 7.14 亿美元,预计到 2030 年将达到 8.42 亿美元。 + +### 目前的 DevOps 工具链 + +各个行业仍有很多自建build-your-own(BYO)的 CI/CD 工具链在发挥作用。支持 DevOps 功能的开源项目仍在蓬勃发展。 + +BYO 工具链可以集成其他工具,而且非常具有扩展性,这对于持续迭代其 DevOps 实践的组织来说一直是一个优势。在出于业务、IT 和安全原因寻求标准化的企业中,缺乏标准的材料清单可能是个麻烦。 + +虽然 DevOps 平台的出现并没有被忽视,但许多组织早在大流行之前就将他们的 CI/CD 工具链迁移到了公有云。长期以来,工具链本身的安全性一直是一个不断上升的问题,而公有云基础设施提供了身份访问管理(IAM)和其他安全功能来控制访问。 + +### DevOps 平台是敌是友? + +DevOps 平台是一个端到端的解决方案,它将 CI/CD 工具链的所有功能放入云中。DevOps 平台的例子包括 GitLab 和 Harness。GitHub 也在采取行动,使自己成为一个 DevOps 平台。 + +#### 优势(即便只从企业买家角度考虑) + +DevOps 平台对那些已经适应了 SaaS 和云计算行业的基于消费和订阅的定价的企业买家很有吸引力。在这个远程和混合工作的世界里,对可维护性、安全、合规性和开发人员的生产力的担忧肯定是技术领导者的首要考虑。对这些人来说,在 DevOps 平台上实现标准化是很有吸引力的。 + +#### 劣势 + +在依赖供应商提供的 DevOps 工具链时,人们会想到对供应商锁定功能的古老担忧。开发团队构建和维护其工具链的可扩展性不会像他们从头开始制作工具链时那样,更不用说引入新的工具来改善他们的工作流程了。 + +DevOps 平台供应商也有潜在的经济方面的劣势。想一想,一个被高估的 DevOps 工具初创公司如果没有达到其投资者的高额财务目标,可能会发生什么。同样,也可能有一些较小的初创供应商得不到下一轮的资金,而慢慢消失。 + +虽然 DevOps 平台的出现在很多方面都是有意义的,但它确实违背了促成我们今天使用的 DevOps 工具的开源精神。 + +### DevOps 工具:一个拐点 + +随着工作模式的改变,人们对 DevOps 工具链的安全和合规性的关注必然会增加。 + +#### 正在变化的工作环境 + +我们的工作方式与企业其他部门一样影响着 DevOps 团队。远程和混合 DevOps 团队需要安全的工具链。整个流水线中不断变化的协作和报告要求,如异步工作和经理要求返回办公室等,也是日益增长的必要条件。 + +#### 软件供应链安全市场 + +在高调的攻击和美国联邦政府的回应之后,软件供应链安全市场引起了很多关注。目前还没有组织将软件供应链的攻击归咎于开源,但我们将看到 DevOps/DevSecOps 实践和工具的延伸,以对抗这种威胁。不过,当一切都结束时,DevOps/DevSecOps 的工具和实践将超过一些转向这一趋势的初创公司。 + +### 结语 + +对于 DevOps 领域的开源软件(OSS)项目来说,这还远远没有结束,但 DevOps 利益相关者有权开始询问未来的工具链。然而,OSS DevOps 项目确实需要考虑它们的未来,特别是考虑到日益增长的直接影响流水线的安全和合规性问题。 + +DevOps 平台供应商与开源工具的未来趋势是合作性竞争,即 DevOps 平台供应商向作为其平台基础的开源工具贡献时间、金钱和资源。一个有趣的例子就是 [OpsVerse][5],它用他们为客户管理的开源工具提供了一个 DevOps 平台。 + +然后,还有一个未来,随着更多的企业构建的工具链迁移到云端,开源 DevOps 工具项目将继续繁荣和创新。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/open-source-devops-tools + +作者:[Will Kelly][a] +选题:[lkxed][b] +译者:[lxbwolf](https://github.com/lxbwolf) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/willkelly +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/22/4/our-favorite-git-commands +[2]: https://opensource.com/article/19/9/how-contribute-gitlab +[3]: https://opensource.com/resources/what-is-kubernetes +[4]: https://enterprisersproject.com/article/2019/1/kubernetes-security-4-tips-manage-risks?intcmp=7013a000002qLH8AAM +[5]: https://www.opsverse.io/ +[6]: https://www.redhat.com/architect/devsecops-culture?intcmp=7013a000002qLH8AAM diff --git a/published/202210/20221018.4 ⭐️⭐️ Give Your Linux Desktop a Halloween Makeover.md b/published/202210/20221018.4 ⭐️⭐️ Give Your Linux Desktop a Halloween Makeover.md new file mode 100644 index 0000000000..cd8a41894f --- /dev/null +++ b/published/202210/20221018.4 ⭐️⭐️ Give Your Linux Desktop a Halloween Makeover.md @@ -0,0 +1,285 @@ +[#]: subject: "Give Your Linux Desktop a Halloween Makeover" +[#]: via: "https://itsfoss.com/linux-halloween-makeover/" +[#]: author: "Sreenath https://itsfoss.com/author/sreenath/" +[#]: collector: "lkxed" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15190-1.html" + +打造万圣节 Linux 桌面 +====== + +马上就到万圣节了,太棒啦! + +我相信你已经有了一些庆祝万圣节的想法。给你的 Linux 桌面做一个像幽灵般的黑暗改造,就类似于下面的屏幕截图,你觉得怎么样? + +![ubuntu halloween theming final looks][1] + +可定制是 Linux 的一大优势,对 Linux 可进行的定制是多种多样且没有尽头的。之前,我们向你展示过 [如何让你的 Linux 看起来像 macOS][2] 的方法。今天,我将继续分享一些定制“万圣节”Linux 桌面的技巧。 + +可以通过主题、图标、扩展、字体、Conky 等一系列配置组合起来,来实现 Linux 桌面的定制。_虽然,你可以在任何的 Linux 发行版和桌面环境中配置这些东西,但是仅在一个教程中展示所有 Linux 发行版和桌面环境的桌面定制方法,是不太可行的。_ + +因此,在本文中,我将介绍 Ubuntu 与 GNOME 桌面环境的桌面定制方法。 + +### 安装所需工具 + +你需要一些软件包和工具。在开始定制桌面前,请确保你安装了全部(或大多数)的软件包和工具。 + +_你不必做**所有**这些桌面改变。但你做的越多,你的桌面也会美化得更好看。_ + +#### 安装 GNOME 优化工具和 GMOME 扩展管理器 + +使用以下命令,来安装 GNOME 优化Tweaks 工具和 GMOME 扩展管理器Extensions manager: + +``` +sudo apt install gnome-tweaks gnome-extension-manager +``` + +在基于 KDE 的 Linux 系统中,没有可以更改 Linux 桌面外观的优化工具。但是,你可以使用 Kvantum-Manager 这一应用程序来更改外观,请参考我在 [KDE 主题指南][3] 中的讨论。 + +#### 安装 Conky(可选) + +你可以选择是否要安装 Conky ,因为现在 conky-manager 项目已经不再维护了,因此继续使用 Conky 可能会有点棘手。但无论如何,我们用它来增加万圣节外观的感觉。 + +``` +sudo apt install conky-all +``` + +#### 安装 Neofetch 或者 Shell-color 脚本 + +这个步骤也可以由你自主选择。你可以选择使用 [neofetch][4],因为 `neofetch` 工具已经在 Ubuntu 仓库中了,你可以直接通过 `apt install` 安装,并且 `neofetch` 使用起来也很简单。 + +``` +sudo apt install neofetch +``` + +[Shell-color 脚本][5] 是另一个不错的选择。在 Arch 用户仓库(AUR)中有该软件包,Arch Linux 用户可以从 AUR 安装 Shell-color 脚本。而在 Ubuntu 中,你则需要手动安装它。 + +``` +git clone https://gitlab.com/dwt1/shell-color-scripts.git +cd shell-color-scripts +sudo make install +``` + +#### 安装主题、图标、字体和壁纸工具 + +我正在使用的是 [Sweet][6] 主题工具、[Beautiline][7] 图标软件包、[simple1e][8] 光标工具和 [Grey-Minimalistic][9] Conky 主题,下载好这些工具后,再解压包。你还要下载 [Creepster][10] 字体。 + +最后,从互联网上下载一张 [万圣节幽灵氛围的壁纸][11]。 + +> 请注意!你即将要进行大量的定制和更改。要恢复到原来普通的外观,你可以通过撤销你所做的所有更改。一个更简单的方法是:创建一个管理员权限的新用户,并使用该新用户进行所有这些更改。这样,你的原始用户帐户和外观就不会受到影响。在万圣节结束后,你可以删除这个新增的用户。 + +现在,你有了所有定制桌面的工具和资源,是时候使用它们了! + +### 安装并使用扩展 + +打开 GMOME 扩展管理器Extensions manager。在 Ubuntu 22.04 中,你可以在浏览Browse菜单下安装扩展。 + +![install gnome shell extensions user themes blur my shell and dash to dock][12] + +在其他版本的 Ubuntu 和其他带有 GNOME 的发行版上,你可以通过浏览器 [安装 shell 扩展][13],来安装扩展。为了实现打造万圣节桌面的目的,请安装以下扩展程序: + +- [User Themes][14] +- [Dash to Dock][15] +- [Blur my Shell][16] + +此外,请确保所有的扩展都已启用。 + +### 配置主题、图标和字体 + +你需要将解压的主题文件夹复制,并粘贴到 `~/.themes` 目录下,将解压的图标和光标文件夹复制,并粘贴到 `~/.icons` 目录下。 + +接下来,打开 GNOME 优化Tweaks 工具,并应用主题、图标和字体等设置,如下的截图所示。 + +![set themes with gnome tweaks][17] + +要 [在 Ubuntu 中使用自定义字体][18],请右键单击你下载和解压的字体文件,然后选择使用字体管理器Font manager打开。我打算使用的是 [Creepster][10] 字体。 + +![right click on font file and select open with fonts][19] + +然后,点击右上角的安装Install按钮。 + +![install font using font manager application][20] + +请注意:在某些系统中,点击安装按钮不会显示“已安装installed”的提示。在这种情况下,你只需关闭界面就行了,因为一旦你点击了安装按钮,该字体就已经安装上了。 + +再重新打开 GNOME 优化Tweaks 工具,然后前往字体Fonts边栏,在这里,你可以更改各个文件类型的字体,如下图所示。 + +![change system fonts using gnome tweaks][21] + +请注意,对于终端,需要等宽字体。在这里,我使用了普通字体,这里可能会让你稍稍有点迷失。 + +### 应用 Dash to Dock 扩展设置 + +首先,你要使用 GNOME 扩展应用程序,来**关闭 Ubuntu Dock 扩展**。 + +![Disable Ubuntu Dock][22] + +如果 Dash to Dock 扩展还尚未运行的话,请先运行它。 + +然后,右键单击在底部显示的 “Dash to Dock” 按钮,然后选择 “Dash to Dock Settings”。 + +![select dash to dock settings][23] + +在设置中,你需要调整一些小东西。 + +首先,使用滑块,来缩小图标的大小。 + +![setting dash to dock icon size][24] + +之后,你需要减少程序坞的不透明度,我更喜欢完全透明的程序坞。 + +所以,我将不透明度设置为 固定fixed,并使用滑块将其降至零,如下图所示。 + +![opacity setting for dash to dock][25] + +### GNOME 终端的设置 + +你想得到的 Linux 桌面的主要变化是自定义**模糊且有一定透明度**的 `neofetch` 外观(或 shell-color 脚本外观)。 + +我们之前在 GNOME 优化Tweaks 工具中应用了等宽字体,因此 GNOME 终端中的字体也会被更改。 + +首先,从 偏好设置preferences 中创建一个新的配置文件。 + +![select preferences from hamburger menu][26] + +单击 `+` ,来创建一个新配置文件。输入文件的名称,并点击 创建create,如下所示: + +![create new profile in gnome terminal][27] + +在这个新配置文件中,更改透明度设置,将透明度的滑块放在中间,如下图所示: + +![set transperancy to gnome terminal][28] + +完成后,要将此配置文件设置为默认的配置文件,单击与新配置文件关联的三角形按钮,然后选择 “设置为默认Set as Default”。 + +![set new profile as default in gnome terminal][29] + +#### 设置模糊效果 + +上述的步骤只会将终端变成一个透明的 shell。但是,如果你还需要有利于提高可见性的模糊效果,你需要进入到 “Blur my Shell” 扩展进行设置。 + +![blur my shell extension settings][30] + +首先,进入到 应用程序Application 菜单。现在,确保终端已打开,并置于屏幕明显的位置。单击 添加Add 窗口,然后选择 GNOME 终端窗口,以设置模糊效果。请注意:此功能还处于测试阶段,因此可能会出现一些小故障。 + +![applying blur effect to selected windows][31] + +也可以对其他应用程序(例如 Nautilus 文件管理器)重复此过程,来设置模糊效果。 + +#### 定制 Neofetch + +Neofetch 的最佳功能之一是其可定制性。你可以使用多种方法来调整 Neofetch 的外观。为了更有万圣节氛围,我选择了一个南瓜图像,来代替发行版的徽标。 + +Neofetch 提供以各种格式添加自定义图像的功能。为此,也有各种供支持的后端。在这里,我使用 jp2a 后端,它将使用 [转换成 ASCII 的图片][32]。 + +``` +neofetch --jp2a /path/to/your/image/file.png +``` + +![neofetch with custom backend][33] + +上述命令将创建一个带有自定义图片的 Neofetch 实例。你可以将此命令写入你的 `.bashrc` 文件,以便永久放置该图片。 + +_不幸的是,这在我的 Wayland 实例上并不起作用。_ + +#### 自定义 Shell-Color 脚本 + +如果你安装的是 Shell Color 脚本工具,则会有多种 shell 脚本。要列出可用的脚本,请使用命令: + +``` +colorscript -l +``` + +![ghosts shell color script][34] + +你可以通过将 `colorscript random` 写入你的 `.bashrc` 文件,以每次都获得一个随机的颜色脚本,或者通过将`colorscript -e `写入你的 `.bashrc` 文件,来得到一个特定的颜色脚本。 + +### 设置 Conky + +我使用的是 Deviantart 的 [Grey-Minimalistic][9] conky 主题。Conky 主题的每种类型都有不同的安装方法。因此,如果你想要使用另一个 Conky 文件的话,请遵循它的 `README` 文件中描述的设置方法,进行设置。 + +解压 Conky 主题文件,里面有几个文件夹。首先,你需要安装关联的图标和字体,也就是说,使用 字体管理器font-manager 安装给定的字体。接着,将图标文件夹拷贝,并粘贴到 `~/.icons` 文件夹。 + +![copy and paste conky files to home directory][35] + +然后,进入 Conky 文件夹。确保你已 [启用查看隐藏文件][36],将 `.conkyrc` 文件和 `.conky-vision-icons` 文件复制到你的主目录,如上图所示。 + +现在,启动 Conky,看起来就变成下图这样了。 + +![conky theme applied][37] + +将 Conky 添加到 [自启动应用程序列表][38] 中,以便在每次开机时都能自启动。 + +![add conky to the list of startup applications][39] + +### 更改壁纸 + +快要完成啦。你现在唯一需要做的就是 [更改背景壁纸][40]。我相信你之前已经下载好了有万圣节幽灵气氛的壁纸,右键 “设置为壁纸Set as Wallpaper” 就好啦。 + +![set image as wallpaper from nautilus][41] + +### 看看最终成果吧! + +如果你遵循上面的大多数步骤的话,你就会得到一个与以下截图相似的桌面。 + +![ubuntu halloween theme final look][42] + +这个桌面对于万圣节来说够吓人了吗?你觉得怎么样?在评论区中告诉我吧。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/linux-halloween-makeover/ + +作者:[Sreenath][a] +选题:[lkxed][b] +译者:[chai001125](https://github.com/chai001125) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/sreenath/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/wp-content/uploads/2022/10/ubuntu-halloween-theming-final-looks.jpg +[2]: https://itsfoss.com/make-ubuntu-look-like-macos/ +[3]: https://itsfoss.com/properly-theme-kde-plasma/ +[4]: https://itsfoss.com/using-neofetch/ +[5]: https://gitlab.com/dwt1/shell-color-scripts +[6]: https://www.gnome-look.org/p/1253385 +[7]: https://www.gnome-look.org/p/1425426 +[8]: https://www.gnome-look.org/p/1405210 +[9]: https://www.deviantart.com/bryantlloyd/art/Grey-Minimalistic-634726564 +[10]: https://fonts.google.com/specimen/Creepster?query=creepster +[11]: https://www.wallpaperflare.com/search?wallpaper=spooky +[12]: https://itsfoss.com/wp-content/uploads/2022/10/install-gnome-shell-extensions-user-themes-blur-my-shell-and-dash-to-dock.png +[13]: https://itsfoss.com/gnome-shell-extensions/ +[14]: https://extensions.gnome.org/extension/19/user-themes/ +[15]: https://extensions.gnome.org/extension/307/dash-to-dock/ +[16]: https://extensions.gnome.org/extension/3193/blur-my-shell/ +[17]: https://itsfoss.com/wp-content/uploads/2022/10/set-themes-with-gnome-tweaks.png +[18]: https://itsfoss.com/install-fonts-ubuntu/ +[19]: https://itsfoss.com/wp-content/uploads/2022/10/right-click-on-font-file-and-select-open-with-fonts.png +[20]: https://itsfoss.com/wp-content/uploads/2022/10/install-font-using-font-manager-application.png +[21]: https://itsfoss.com/wp-content/uploads/2022/10/change-system-fonts-using-gnome-tweaks.png +[22]: https://itsfoss.com/wp-content/uploads/2020/06/disable-ubuntu-dock.png +[23]: https://itsfoss.com/wp-content/uploads/2022/10/select-dash-to-dock-settings.png +[24]: https://itsfoss.com/wp-content/uploads/2022/10/setting-dash-to-dock-icon-size.png +[25]: https://itsfoss.com/wp-content/uploads/2022/10/opacity-setting-for-dash-to-dock.png +[26]: https://itsfoss.com/wp-content/uploads/2022/10/select-preferences-from-hamburger-menu.png +[27]: https://itsfoss.com/wp-content/uploads/2022/10/create-new-profile-in-gnome-terminal.png +[28]: https://itsfoss.com/wp-content/uploads/2022/10/set-transperancy-to-gnome-terminal.png +[29]: https://itsfoss.com/wp-content/uploads/2022/10/set-new-profile-as-default-in-gnome-terminal.png +[30]: https://itsfoss.com/wp-content/uploads/2022/10/blur-my-shell-extension-settings.png +[31]: https://itsfoss.com/wp-content/uploads/2022/10/applying-blur-effect-to-selected-windows.png +[32]: https://itsfoss.com/ascii-image-converter/ +[33]: https://itsfoss.com/wp-content/uploads/2022/10/neofetch-with-custom-backend.png +[34]: https://itsfoss.com/wp-content/uploads/2022/10/ghosts-shell-color-script.png +[35]: https://itsfoss.com/wp-content/uploads/2022/10/copy-and-paste-conky-files-to-home-directory.png +[36]: https://itsfoss.com/hide-folders-and-show-hidden-files-in-ubuntu-beginner-trick/ +[37]: https://itsfoss.com/wp-content/uploads/2022/10/conky-theme-applied.png +[38]: https://itsfoss.com/manage-startup-applications-ubuntu/ +[39]: https://itsfoss.com/wp-content/uploads/2022/10/add-conky-to-the-list-of-startup-applications.png +[40]: https://itsfoss.com/change-wallpaper-ubuntu/ +[41]: https://itsfoss.com/wp-content/uploads/2022/10/set-image-as-wallpaper-from-nautilus.png +[42]: https://itsfoss.com/wp-content/uploads/2022/10/ubuntu-halloween-theme-final-look.jpg diff --git a/published/202210/20221019.0 ⭐️ GitHub Copilot Appears To Be In Violation Of The Open Source Licence.md b/published/202210/20221019.0 ⭐️ GitHub Copilot Appears To Be In Violation Of The Open Source Licence.md new file mode 100644 index 0000000000..47d73780b2 --- /dev/null +++ b/published/202210/20221019.0 ⭐️ GitHub Copilot Appears To Be In Violation Of The Open Source Licence.md @@ -0,0 +1,38 @@ +[#]: subject: "GitHub Copilot Appears To Be In Violation Of The Open Source Licence" +[#]: via: "https://www.opensourceforu.com/2022/10/github-copilot-appears-to-be-in-violation-of-the-open-source-licence/" +[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15167-1.html" + +GitHub Copilot 似乎违反了开源许可证的规定 +====== + +![](https://img.linux.net.cn/data/attachment/album/202210/23/100112lms67c7e8mow8sv6.jpg) + +> 自 Copilot 首次亮相以来,Butterick 就对该计划提出了批评。 + +微软在 2018 年支付 75 亿美元收购了 GitHub,此后将这个代码仓库整合到其开发者工具中,同时在很大程度上采取了放手的态度。Matthew Butterick 是一名作家、律师,也是一名程序员,他认为微软基于机器学习的代码助手 GitHub Copilot 存在一些问题,它似乎不正确地对待开源代码许可证。 + +GitHub Copilot 是 Visual Studio 和其他 IDE 的一个插件,通过在你输入时提供代码完成的 “建议” 来运作。Codex 是该系统的动力源。然而,Butterick 等开发者认为 AI 在如何学习方面存在问题,或者更具体地说,AI 是从哪里训练的。 + +这里的问题是,GitHub 所训练的公开代码仓库是有许可证的,当他们的工作被利用时,需要按照许可证进行。虽然微软对其使用代码的问题一直避而不谈,称其为合理使用,但 Copilot 除了提供建议外,还能生成逐字逐句的代码部分。 + +根据 Codex(由微软授权)的开发者 OpenAI的说法,“Codex 是在数以千万计的公开代码仓库中训练出来的,包括 GitHub 上的代码。”微软自己也含糊地将训练材料描述为数十亿行的公共代码。 + +-------------------------------------------------------------------------------- + +via: https://www.opensourceforu.com/2022/10/github-copilot-appears-to-be-in-violation-of-the-open-source-licence/ + +作者:[Laveesh Kocher][a] +选题:[lkxed][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.opensourceforu.com/author/laveesh-kocher/ +[b]: https://github.com/lkxed +[1]: https://www.opensourceforu.com/wp-content/uploads/2022/10/github-logo-2-1-696x348.png diff --git a/published/202210/20221020.1 ⭐️ Kubuntu 22.10 is Now Available!.md b/published/202210/20221020.1 ⭐️ Kubuntu 22.10 is Now Available!.md new file mode 100644 index 0000000000..0602812029 --- /dev/null +++ b/published/202210/20221020.1 ⭐️ Kubuntu 22.10 is Now Available!.md @@ -0,0 +1,120 @@ +[#]: subject: "Kubuntu 22.10 is Now Available!" +[#]: via: "https://news.itsfoss.com/kubuntu-22-10-release/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15173-1.html" + +Kubuntu 22.10 的新变化 +====== + +> Kubuntu 22.10 可能不是最令人兴奋的升级。但是,它包括了一些有用的变化。 + +![Kubuntu 22.10 现已发布][1] + +Kubuntu 是 Ubuntu 的一个官方版本,它在一个精致的 KDE 驱动的软件包中提供了很多功能。 + +Kubuntu 22.10 的发布带来了各种改进和一个 [KDE Plasma][2] 的更新版本。 + +让我们来看看这个版本的亮点。 + +### Kubuntu 22.10 有什么新变化? + +![Kubuntu 22.10 桌面][3] + +Kubuntu 22.10 带来了很多更新,其中一些重要的更新包括: + +- KDE Plasma 5.25 +- Linux 内核 5.19 +- PipeWire +- Firefox 104 +- Qt 5.15.6 + +> 💡 Kubuntu 22.10 将被支持九个月,直到 **2023 年 7 月**。如果你想要稳定而不是功能,你应该更喜欢使用 [LTS 版本][4]。 + +#### KDE Plasma 5.25 + +![Kubuntu 22.10 KDE 版本][5] + +尽管最近 [KDE Plasma 5.26][6] 已经发布了,但 Kubuntu 22.10 还是搭载了 KDE Plasma 5.25。 + +然而,KDE Plasma 5.25 与 5.24 相比仍然是一个重大的更新,它包含了很多改进,例如,加强了对触摸板/触摸屏的支持,升级了用户界面等等。 + +你可以阅读我们对 KDE Plasma 5.25 的报道来了解更多。 + +> **[KDE Plasma 5.25:颜色、主题和其他改进][15]** + +另外,你可以期待 KDE Plasma 5.26 作为一个小版本发布,而不是作为 Kubuntu 22.10 发布的一部分。 + +#### 默认采用 PipeWire + +像大多数基于 Ubuntu 22.10 的发行版一样,[PipeWire][7] 是这个版本的 Kubuntu 的默认音频/视频处理器。 + +它取代了 [PulseAudio][8],众所周知,它与 Ubuntu 22.10 不兼容。 + +#### Linux 内核 5.19 + +![Kubuntu 22.10 Linux 内核 5.19][9] + +Kubuntu 22.10 采用了最新的 Linux 内核 5.19,这应该会带来对 ARM SoC 和 Arc Alchemist GPU 的支持、Btrfs 的各种改进、对 AMD RDNA3 图形的初步支持等等。 + +#### 测试用的 Wayland 会话 + +![Kubuntu 22.10 Wayland 会话切换器][10] + +Kubuntu 22.10 具有对 Plasma Wayland 会话的初步支持,但它仅用于测试目的,并不是一个完整的集成。 + +![Kubuntu 22.10 Wayland 会话信息][11] + +#### 其他升级 + +其他一些更新包括: + +- 自定义桌面重点颜色 +- 默认浏览器是 Firefox 104 Snap +- Qt 5.15.6 +- LibreOffice 7.4 +- 改进的应用程序商店 + +要探索更多关于该版本的信息,请参考 [官方发布说明][12]。 + +### 下载 Kubuntu 22.10 + +你可以从 [Ubuntu 的中央镜像库][13] 或其 [官方网站][14] 下载最新的 ISO。 + +> **[Kubuntu 22.10][14]** + +*它的官方网站可能需要一段时间来提供 ISO。* + +💬 你对这个版本感到兴奋吗? + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/kubuntu-22-10-release/ + +作者:[Sourav Rudra][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/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w1200/2022/10/kubuntu-22-10-release.jpg +[2]: https://kde.org/plasma-desktop/ +[3]: https://news.itsfoss.com/content/images/2022/10/Kubuntu_22.10_Desktop.png +[4]: https://itsfoss.com/long-term-support-lts/ +[5]: https://news.itsfoss.com/content/images/2022/10/Kubuntu_22.10_KDE_Version.png +[6]: https://news.itsfoss.com/kde-plasma-5-26-release/ +[7]: https://pipewire.org/ +[8]: https://www.freedesktop.org/wiki/Software/PulseAudio/ +[9]: https://news.itsfoss.com/content/images/2022/10/Kubuntu_22.10_Linux_Kernel.png +[10]: https://news.itsfoss.com/content/images/2022/10/Kubuntu_22.10_Wayland_Session.png +[11]: https://news.itsfoss.com/content/images/2022/10/Kubuntu_22.10_Wayland_Session_2.png +[12]: https://wiki.ubuntu.com/KineticKudu/ReleaseNotes/Kubuntu +[13]: https://cdimage.ubuntu.com/kubuntu/releases/22.10/release/ +[14]: https://kubuntu.org/getkubuntu/ +[15]: https://news.itsfoss.com/kde-plasma-5-25-release/ \ No newline at end of file diff --git a/published/202210/20221020.2 ⭐️ Ubuntu MATE 22.10 Release Has Some Interesting Upgrades!.md b/published/202210/20221020.2 ⭐️ Ubuntu MATE 22.10 Release Has Some Interesting Upgrades!.md new file mode 100644 index 0000000000..10ef5e9b6f --- /dev/null +++ b/published/202210/20221020.2 ⭐️ Ubuntu MATE 22.10 Release Has Some Interesting Upgrades!.md @@ -0,0 +1,126 @@ +[#]: subject: "Ubuntu MATE 22.10 Release Has Some Interesting Upgrades!" +[#]: via: "https://news.itsfoss.com/ubuntu-mate-22-10-release/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15174-1.html" + +Ubuntu MATE 22.10 的新变化 +====== + +> Ubuntu MATE 22.10 已经发布,其中有一些细微而有用的变化。来看看吧! + +![Ubuntu MATE 22.10 版本有一些有趣的升级!][1] + +Ubuntu MATE 是 [Ubuntu 官方版本][2] 之一,每次升级都会增加有趣的改进。 + +它的目标用户是那些既珍惜传统桌面的外观和感觉,又渴望现代操作系统的功能的用户。 + +Ubuntu MATE 22.10 版本增加了许多改进和功能,让我们来看看这些。 + +### Ubuntu MATE 22.10 的新变化 + +![Ubuntu MATE 22.10 桌面][3] + +基于非 LTS 版本的 [Ubuntu 22.10][4] ,Ubuntu MATE 22.10 带来了多项更新,一些关键的亮点包括: + +- 对 MATE 桌面的改进。 +- 新的 AI 墙纸。 +- PipeWire 是默认的音频服务器。 +- 新的 MATE 用户管理器。 +- Firefox 105 更新。 +- LibreOffice 7.4。 + +> 💡 注意,Ubuntu MATE 的升级通常包括更多的功能补充。但这一次,Martin Wimpress 一直致力于为 Debian MATE 版带来类似的体验。你可以在我们之前的报道中阅读更多细节。 + +> [准备好在 Debian Linux 上获得 Ubuntu MATE 体验吧!][15] + +#### MATE 桌面升级 + +![Ubuntu MATE 22.10 桌面视图][5] + +MATE 桌面收到了各种错误修复和对 Ayatana 指示器、MATE 面板的更新。 + +现在,你可以将小程序居中对齐,与通常的左右对齐选项一起。 + +这项功能将在 MATE 桌面 1.28 版中正式出现,但 Ubuntu MATE 团队在 MATE 桌面 1.27 版的基础上将其与这个版本一起推出。 + +#### MATE 用户管理器 + +![Ubuntu MATE 22.10 用户管理器][6] + +MATE 用户管理器是该发行版的一个新的补充,允许你添加、修改、删除用户账户。 + +有了它,你可以选择哪些用户可以成为管理员、设置自动登录、设置个人资料图片,以及管理组成员资格。对于有多个用户的计算机来说,这是一个相当方便和急需的功能。 + +#### 新的 AI 壁纸 + +![Ubuntu MATE 22.10 AI 壁纸][7] + +这个版本的另一大亮点是增加了新的 AI 生成的壁纸。 + +这些看起来很美 😍 + +鉴于人工智能生成的壁纸现在正大行其道,Ubuntu MATE 团队在 Ubuntu MATE 22.10 中加入了一批新的壁纸。 + +它是由 [Simon Butcher][8] 使用扩散模型创建的,用来描画 “捻角羚”。 + +#### Linux 内核 5.19 + +Ubuntu MATE 22.10 得益于 Linux 内核 5.19 带来的改进,对各种 ARM SoC、Arc Alchemist GPU 等提供了增强支持。 + +你可以阅读我们的相关报道以了解更多。 + +#### 🛠️ 其他变化和改进 + +与其他新版本一样,Ubuntu MATE 22.10 用 [PipeWire][10] 取代了 [PulseAudio][9],以获得更好的音频处理,并加入了额外的蓝牙编解码器,如 AAC、LDAC、aptX 和 aptX HD。 + +其他值得注意的变化包括: + +- 更新的应用程序包括:Firefox 105、LibreOffice 7.4、Celluloid 0.20 和 Evolution 3.46。 +- Ubuntu MATE HUD 支持 MATE、XFCE 和 Budgie,具有更多的配置能力。 + +如果你感到好奇,你可以查看 Ubuntu MATE 22.10 [官方发布说明][11]。 + +### 下载 Ubuntu MATE 22.10 + +你可以从 [Ubuntu 的中央镜像库][12] 或其 [官方网站][13] 下载最新的 ISO。 + +*它的官方网站/仓库可能需要一段时间来提供 ISO。* + +> 💡 Ubuntu MATE 22.10 将被支持九个月,直到 **2023 年 7 月** 。如果你想要稳定而不是功能,你应该更喜欢使用 [LTS 版本][14]。 + +> **[下载 Ubuntu MATE 22.10][13]** + +💬 _有兴趣尝试 Ubuntu MATE 22.10 吗?请在评论中告诉我你的想法。_ + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/ubuntu-mate-22-10-release/ + +作者:[Sourav Rudra][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/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w1200/2022/10/ubuntu-mate-22-10-release.jpg +[2]: https://itsfoss.com/which-ubuntu-install/ +[3]: https://news.itsfoss.com/content/images/2022/10/ubuntu-mate-22-10.png +[4]: https://news.itsfoss.com/ubuntu-22-10-features/ +[5]: https://news.itsfoss.com/content/images/2022/10/Ubuntu_MATE_22.10_Desktop.png +[6]: https://news.itsfoss.com/content/images/2022/10/Ubuntu_MATE_22.10_User_Manager.png +[7]: https://news.itsfoss.com/content/images/2022/10/Ubuntu_MATE_22.10_AI_Wallpapers.png +[8]: https://twitter.com/simonjbutcher +[9]: https://www.freedesktop.org/wiki/Software/PulseAudio/ +[10]: https://pipewire.org/ +[11]: https://ubuntu-mate.org/blog/ubuntu-mate-kinetic-kudu-release-notes/ +[12]: https://cdimage.ubuntu.com/ubuntu-mate/releases/22.10/release/ +[13]: https://ubuntu-mate.org/download/ +[14]: https://itsfoss.com/long-term-support-lts/ +[15]: https://news.itsfoss.com/ubuntu-mate-debian/ \ No newline at end of file diff --git a/published/202210/20221020.3 ⭐️ Ubuntu Budgie 22.10 Release Improves Control Center and Removes Some GNOME Apps.md b/published/202210/20221020.3 ⭐️ Ubuntu Budgie 22.10 Release Improves Control Center and Removes Some GNOME Apps.md new file mode 100644 index 0000000000..38d5642bd9 --- /dev/null +++ b/published/202210/20221020.3 ⭐️ Ubuntu Budgie 22.10 Release Improves Control Center and Removes Some GNOME Apps.md @@ -0,0 +1,121 @@ +[#]: subject: "Ubuntu Budgie 22.10 Release Improves Control Center and Removes Some GNOME Apps" +[#]: via: "https://news.itsfoss.com/ubuntu-budgie-22-10-release/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "littlebirdnest" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15179-1.html" + +Ubuntu Budgie 22.10 的新变化 +====== + +> Ubuntu Budgie 22.10 是一个有趣的版本,它删除了几个 GNOME 应用程序,以及一些其他改进。 + +![Ubuntu Budgie 22.10 Release Improves Control Center and Removes Some GNOME Apps][1] + +[Ubuntu Budgie][2] 是 Ubuntu 的官方版本,因其传统的桌面界面和最小的软件膨胀而广受欢迎。 + +Ubuntu Budgie 22.10 的发布带来了一些关键的调整和补充。 + +### 🆕 Ubuntu Budgie 22.10 有什么新变化 + +![ubuntu budgie 22.10][3] + +基于 Ubuntu 22.10 “充满活力的捻角羚Kinetic Kudu”,Ubuntu Budgie 22.10 带来了 Budgie 桌面 10.6.4 和许多其他改进。 + +一些值得注意的亮点包括: + +- 增强型 Budgie 控制中心Control Center +- 更新了 Budgie 的“欢迎Welcome”应用 +- 替换各种基于 GNOME 的应用程序 +- 对翻译进行了更新 + +#### Budgie 桌面和控制中心 + +![ubuntu budgie 22.10 desktop settings][4] + +Budgie 桌面以及更新到 V10.6.4, 它添加了一个新的全局选项来控制小程序之间的间距,并对工作区和时钟小程序进行了各种改进。 + +![ubuntu budgie 22.10 display color profiles][5] + +Budgie 控制中心Control Center也得到了一堆调整,例如重新设计的显示颜色配置文件支持,修改了对屏幕分享的支持,如 [RDP][6] 和 [VNC][7],用于显示缩放的选项,等等。 + +#### 升级了欢迎应用 + +![ubuntu budgie 22.10 welcome app][8] + +Ubuntu Budgie 22.10 特别升级了 [Budgie 的欢迎应用][9],改善了翻译以及一些其他改进。 + +#### 默认的应用的变化 + +Ubuntu Budgie 的开发人员已经开始替换和删除基于 GNOME 的应用程序,转而使用基于 MATE 的应用程序和其他替代品。 + +他们决定这样做是因为基于 GNOME 的应用程序在 Budgie 中的外观与其他具有圆角边缘的应用程序的外观不一致。 + +这些不一致是由于 GNOME 根据其样式和主题需求而转到 Libadwaita 库造成的。 + +Libadwaita 库是 GNOME 的一个有争议的补充,没有多少用户喜欢,你可以通过我们的报道来了解更多信息。 + +> **[你对在 Linux 世界中 GNOME 的 Libadwaita 库怎么看?][15]** + +以下是一些已删除或替换的应用程序: + +- GNOME 计算器被 MATE 计算器取代。 +- 删除了 GNOME 日历。 +- GNOME 系统监视器已由 MATE 系统监视器取代。 +- 删除了 GNOME 截图。 +- [字体管理器][10] 替代了 GNOME 字体查看器。 + +#### 🛠️ 其他改变 + +其他改变包括以下: + +- 重新开发的内置主题 +- 移除 PulseAudio,并支持 PipeWire +- 原生的截图功能 +- 支持 WebP 图像 +- 能够查看显示器的刷新率 + +你可以通过 [发行说明][11] 了解更多。 + +### 📥 下载 Ubuntu Budgie 22.10 + +你可以在 [Ubuntu 中央镜像仓库][12] 或者它的 [官方网站][13] 下载最新的 ISO。 + +*其官方网站可能需要一段时间才能提供 ISO。* + +> **[下载 Ubuntu Budgie 22.10][13]** + +> 💡 Ubuntu Budgie 22.10 将支持 9 个月直到 **2023 年 6 月**。如果你想使用稳定的功能,更应该选择 [LTS 版本][14]。 + +💬 你如何看待这个非 LTS 版本?愿意尝试一下吗? + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/ubuntu-budgie-22-10-release/ + +作者:[Sourav Rudra][a] +选题:[lkxed][b] +译者:[littlebirdnest](https://github.com/littlebirdnest) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w1200/2022/10/ubuntu-budgie-22-10-release.png +[2]: https://ubuntubudgie.org/ +[3]: https://news.itsfoss.com/content/images/2022/10/Ubuntu_Budgie_22.10.png +[4]: https://news.itsfoss.com/content/images/2022/10/Ubuntu_Budgie_22.10_Desktop_Settings.png +[5]: https://news.itsfoss.com/content/images/2022/10/Ubuntu_Budgie_22.10_Color_Profiles.png +[6]: https://en.wikipedia.org/wiki/Remote_Desktop_Protocol +[7]: https://en.wikipedia.org/wiki/Virtual_Network_Computing +[8]: https://news.itsfoss.com/content/images/2022/10/Ubuntu_Budgie_22.10_Welcome.png +[9]: https://ubuntubudgie.org/2022/02/quick-overview-of-budgie-welcome-application/ +[10]: https://itsfoss.com/font-manager/ +[11]: https://ubuntubudgie.org/2022/09/ubuntu-budgie-22-10-release-notes/ +[12]: https://cdimage.ubuntu.com/ubuntu-budgie/releases/22.10/ +[13]: https://ubuntubudgie.org/downloads/ +[14]: https://itsfoss.com/long-term-support-lts/ +[15]: https://news.itsfoss.com/gnome-libadwaita-library/ \ No newline at end of file diff --git a/published/202210/20221020.4 ⭐️ Xubuntu 22.10 Releases With Xfce Upgrades, and Other Refinements.md b/published/202210/20221020.4 ⭐️ Xubuntu 22.10 Releases With Xfce Upgrades, and Other Refinements.md new file mode 100644 index 0000000000..3892e9babd --- /dev/null +++ b/published/202210/20221020.4 ⭐️ Xubuntu 22.10 Releases With Xfce Upgrades, and Other Refinements.md @@ -0,0 +1,134 @@ +[#]: subject: "Xubuntu 22.10 Releases With Xfce Upgrades, and Other Refinements" +[#]: via: "https://news.itsfoss.com/xubuntu-22-10-release/" +[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: "littlebirdnest" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15188-1.html" + +Xubuntu 22.10 的新变化 +====== + +> Xubuntu 22.10 提供了精致的 Xfce 体验。请读此文了解详情。 + +![Xubuntu 22.10 Releases With Xfce Upgrades, and Other Refinements][1] + +Xubuntu 是基于 Xfce 的 Ubuntu 官方版本。 + +它也是最好的轻量级 Linux 发行版之一。 + +随着最新的 Xubuntu 22.10 “Kinetic Kudu” 版本,你可以看到改进的桌面环境、添加的功能,以及全面的细化。 + +### Xubuntu 22.10 的新变化 + +![Xubuntu 22.10 home][2] + +Xubuntu 22.10 带来了一些令人兴奋的升级。一些亮点包括: + +- Xfce 4.16(或 Xfce 4.17 开发版) +- Catfish 的外观进行了更新。 +- 更新了新图标,弃用了 elementary-xfce-darker 主题。 +- Mousepad 搜索历史。 +- Thundar 文件管理器的改进。 +- Xfce 任务管理器。 + +> 💡 Xubuntu 22.10 将支持九个月,直到 **2023 年 7 月**。如果你想要稳定性而不是功能,你应该首选使用 [LTS 版本][3]。 + +#### Xfce 4.17 开发版还是 Xfce 4.16? + +Xubuntu 22.10 的发行说明说它专门提供了 Xfce 4.17 开发版本。 + +但是,当我安装 Xubuntu 22.10 的 beta 版本(并将其更新到最新版本)时,只具有 Xfce 4.16。 + +![][4] + +不确定他们是否退出了 Xfce 4.17 开发版本,或者 Xfce 4.16 现在是否存在。 + +#### Catfish 外观 + +![xubuntu catfish][5] + +Catfish 是 Xubuntu 上的一个文件搜索工具。通过新的升级,它具有焕然一新的外观,并做了底层的改进。 + +与你搜索的文件交互时,你还会获得一个“打开方式”上下文菜单。 + +![][6] + +Catfish 还添加了一些细微而有用的功能。 + +#### GNOME 43 软件应用 + +在值得注意的应用程序更新中,GNOME 的最新软件中心是一个不错的选择。这是 Xubuntu 22.10 的外观: + +![][7] + +当然,它可能无法与 Xfce 上的其他应用程序保持一致,但我认为你应该不会介意。 + +#### 图标更新 + +随着 elementary-xfce 0.17 图标更新,有许多新图标和更简洁的选项,可提供一致的 Xubuntu 桌面体验。 + +![][8] + +此外,elementary-xfce-darkest 主题图标包已被弃用。 + +![][9] + +#### 任务管理器右键选项 + +![][10] + +你现在可以将完整的进程路径复制到剪贴板。这对于需要从命令行进行故障排除或停止操作很有用。 + +### 其他增强功能 + +![][11] + +还有其他几个值得注意的变化,包括: + +- Linux 内核 5.19。 +- Firefox 浏览器 105。 +- `Alt-Tab` 视图通过更突出的图标进行了改进。 +- 马赛克拼图添加到 SGT 拼图系列。 +- Mousepad 文本编辑器现在包括搜索历史记录,以及更多调整。 + +要了解有关更改的更多信息,请查看 [官方发行说明][12]。 + +### 下载 Xubuntu 22.10 + +你可以从 [Ubuntu 的中央镜像库][13] 或它的 [官方网站][14] 下载最新的 ISO 文件。 + +官方网站可能需要一段时间才能提供 ISO。 + +> **[下载Xubuntu 22.10][14]** + +💬 你觉得 Xubuntu 22.10 如何?请在评论中告诉我。 + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/xubuntu-22-10-release/ + +作者:[Ankush Das][a] +选题:[lkxed][b] +译者:[littlebirdnest](https://github.com/littlebirdnest) +校对:[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/content/images/size/w1200/2022/10/xubuntu-22-10-release.jpg +[2]: https://news.itsfoss.com/content/images/2022/10/xubuntu-22-10.png +[3]: https://itsfoss.com/long-term-support-lts/ +[4]: https://news.itsfoss.com/content/images/2022/10/xfce-4-16.jpg +[5]: https://news.itsfoss.com/content/images/2022/10/catfish-xubuntu-22-10.png +[6]: https://news.itsfoss.com/content/images/2022/10/catfish-openwith-1.jpg +[7]: https://news.itsfoss.com/content/images/2022/10/xubuntu-gnome-43-software.jpg +[8]: https://news.itsfoss.com/content/images/2022/10/xubuntu-22-10-icons.jpg +[9]: https://news.itsfoss.com/content/images/2022/10/xfce-dark-theme.png +[10]: https://news.itsfoss.com/content/images/2022/10/task-manager-copy-command-line.jpg +[11]: https://news.itsfoss.com/content/images/2022/10/xubuntu-22-10-puzzle.png +[12]: https://wiki.xubuntu.org/releases/22.10/release-notes +[13]: https://cdimage.ubuntu.com/xubuntu/releases/22.10/release/ +[14]: https://xubuntu.org/download/ diff --git a/published/202210/20221020.5 ⭐️ Ubuntu 22.10 Is Here!.md b/published/202210/20221020.5 ⭐️ Ubuntu 22.10 Is Here!.md new file mode 100644 index 0000000000..afcfdf3637 --- /dev/null +++ b/published/202210/20221020.5 ⭐️ Ubuntu 22.10 Is Here!.md @@ -0,0 +1,147 @@ +[#]: subject: "Ubuntu 22.10 Is Here!" +[#]: via: "https://news.itsfoss.com/ubuntu-22-10-release/" +[#]: author: "Jacob Crume https://news.itsfoss.com/author/jacob/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15171-1.html" + +Ubuntu 22.10 的新变化 +====== + +> Ubuntu 22.10 是一个令人印象深刻的版本,它拥有新的快速切换功能、应用程序散布,以及更多。 + +![](https://img.linux.net.cn/data/attachment/album/202210/24/101545l1jae18e1881ee19.jpg) + +Ubuntu 22.10 “充满活力的捻角羚Kinetic Kudu”来了。它带来了许多重大的改进,特别是 Linux 内核 5.19 和 GNOME 43 的体验。 + +当然,这是一个经过定制的 GNOME 体验,现有的 Ubuntu 用户会很熟悉。 + +那么,Ubuntu 22.10 都有哪些新变化呢?让我们一起来看看。 + +### Ubuntu 22.10 的新变化 + +![][2] + +除了 GNOME 43 之外,Ubuntu 22.10 还包括: + +- 一个改进的 设置Settings 应用程序。 +- 经典的 Unity 应用程序散布模式Spread Mode的复活。 +- 一些著名的应用程序被移植到 GTK4 和 Libadwaita。 +- 全系统支持 WebP。 +- PipeWire 采样管默认的音频服务器。 +- Linux 内核 5.19。 + +> 💡 Ubuntu 22.10 将被支持九个月,直到 **2023 年 7 月**。如果你想要稳定而不是功能,你应该更愿意使用 [LTS 版本][3]。 + +#### 🎨 视觉改进 + +当第一次测试一个新版本时,视觉上的变化总是最先被注意到的。在 Ubuntu 22.10 中尤其如此,这要归功于 [GNOME 43][4] 所带来的重大改进。 + +![Ubuntu 22.10 快速设置][5] + +首先,我们有全新的快速设置菜单,它取代了旧的、相当笨拙的系统菜单。与安卓、iOS 和 Windows 11 中的菜单类似,这个新增的菜单允许你打开和关闭 Wi-Fi 和蓝牙,所有这些都无需进入设置Settings应用程序。 + +当然,在这个版本中我们还得到了全新的壁纸。 + +![Ubuntu 22.10 壁纸][6] + +对于这个变化,我除了喜欢并希望从社区中看到更多这样的设计之外,没有什么别的可说的。 + +此外,更多的应用程序被移植到了 GTK4,包括对 Nautilus 文件管理器的改进。 + +一些有价值的新增功能包括: + +- 拖动并选择文件的能力(橡皮筋选择)。 +- 自适应视图与一个紧凑的窗口。 +- 新的文件上下文菜单。 + +你可以通过我们的详细报道来探索 Nautilus 的改进。 + +#### 👴 应用程序散布回来了! + +我不太喜欢的 GNOME 的一个部分是多窗口应用程序的切换,我相信很多其他用户都有这样的不满。 + +![Ubuntu 22.04][7] + +幸运的是,Ubuntu 22.10 现在提供了一个很好的解决方案,对于长期用户来说应该是很熟悉的。终于,在 2017 年放弃对 Unity 的支持五年后,Ubuntu 的开发者们又把应用程序散布Spread带了回来。 + +![Ubuntu 22.10应用程序散布][8] + +这是一个重大的改进,我很惊讶 GNOME 自己没有这样做。 + +#### 🛠️ 设置的改进 + +虽然不是大多数人日常使用的应用程序,但系统设置System Settings是 GNOME 体验的一个核心部分。考虑到这一点,看到它接受了一次重大的视觉改造,以及移植到了 GTK 4 和 Libadwaita,真是太棒了。 + +![Ubuntu 22.10 桌面设置][9] + +因此,它现在变得更好看了,而且是自适应的,这意味着它在任何尺寸下都能很好地工作,甚至在像 PinePhone 这样的 Linux 手机上也能很好地工作! + +另一个与设置有关的变化是增加了一个新的 “Ubuntu 桌面设置Ubuntu Desktop Settings”菜单项。这提供了一个单一的、统一的地方来定制和改变你所有的 Ubuntu 特定设置。 + +#### Linux 内核 5.19 + +Ubuntu 22.10 还带来了一个更新的内核,即 [Linux 内核 5.19][10]。这个版本的改进相当少,尽管它确实带来了对一些下一代硬件的改进支持。 + +你应该注意到这是 Linux 5.x 系列的最后一个版本,因为 Linux 内核下一个版本跳到了 6.0。 + +#### 其他变化 + +![Ubuntu 22.10 webp][11] + +总的来说有几个细微的调整。但其中一些基本的调整包括: + +- 图像应用程序默认支持 .WebP 图像格式。 +- GNOME 文本编辑器是默认编辑器。你可以安装 gedit 并使其成为默认的。 +- GNOME 图书应用程序已经不再可用。Ubuntu 推荐 [Foliate][12] 作为替代。 +- 不再默认安装 To Do 应用程序,并且它有了一个新的名字,“Endeavour”。 +- GNOME 终端仍然是默认的终端应用。如果需要,可以安装 [GNOME 控制台][13]。 +- 更新了 Firefox 104、[Thunderbird 102][14] 和 [Libreoffice 7.4][15] 等应用程序。 +- 更多的应用程序已经被移植到 GTK4,特别是 [Nautilus][16]。 + +> ℹ️ 注意,我们的列表集中在对桌面终端用户重要的变化上。如果你想知道更多关于服务器和其他使用情况的变化/更新,请参考 [官方发布说明][17]。 + +### 下载 Ubuntu 22.10 + +你可以从 [Ubuntu 的中央镜像库][18] 或其 [官方网站][19] 下载最新的 ISO。 + +**官方网站/仓库可能需要一段时间来提供 ISO 的下载。 + +> **[下载Ubuntu 22.10][19]** + +💬 有兴趣尝试 Ubuntu 22.10 吗?请在评论中告诉我你的想法。 + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/ubuntu-22-10-release/ + +作者:[Jacob Crume][a] +选题:[lkxed][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/jacob/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w1200/2022/10/ubuntu-22-10-release.png +[2]: https://news.itsfoss.com/content/images/2022/10/ubuntu-22-10.png +[3]: https://itsfoss.com/long-term-support-lts/ +[4]: https://news.itsfoss.com/gnome-43-release/ +[5]: https://news.itsfoss.com/content/images/2022/10/ubuntu-22-10-quick-setting.jpg +[6]: https://news.itsfoss.com/content/images/2022/10/22.10-wallpaper.png +[7]: https://news.itsfoss.com/content/images/2022/10/ubuntu-22-04-window-minimize.png +[8]: https://news.itsfoss.com/content/images/2022/10/ubuntu-22-10-app-spread.jpg +[9]: https://news.itsfoss.com/content/images/2022/10/ubuntu-22-10-desktop-setting.png +[10]: https://news.itsfoss.com/linux-kernel-5-19-release/ +[11]: https://news.itsfoss.com/content/images/2022/10/ubuntu-22-10-webp.png +[12]: https://itsfoss.com/foliate-ebook-viewer/ +[13]: https://itsfoss.com/gnome-console/ +[14]: https://news.itsfoss.com/thunderbird-102-release/ +[15]: https://news.itsfoss.com/libreoffice-7-4-release/ +[16]: https://news.itsfoss.com/gnome-files-43/ +[17]: https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976 +[18]: https://cdimage.ubuntu.com/ubuntu/releases/22.10/release/ +[19]: https://ubuntu.com/download/desktop diff --git a/published/202210/20221021.2 ⭐️⭐️ 10 Things to Do After Installing Ubuntu 22.10 [With Bonus Tip].md b/published/202210/20221021.2 ⭐️⭐️ 10 Things to Do After Installing Ubuntu 22.10 [With Bonus Tip].md new file mode 100644 index 0000000000..6e07f8247a --- /dev/null +++ b/published/202210/20221021.2 ⭐️⭐️ 10 Things to Do After Installing Ubuntu 22.10 [With Bonus Tip].md @@ -0,0 +1,197 @@ +[#]: subject: "10 Things to Do After Installing Ubuntu 22.10 [With Bonus Tip]" +[#]: via: "https://www.debugpoint.com/things-to-do-ubuntu-22-10/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15185-1.html" + +安装 Ubuntu 22.10 后要做的 10 件事 +====== + +> 以下是我们安装 Ubuntu 22.10 “Kinetic Kudu”(GNOME 版)后,推荐做的 10 件事列表。 + +![][1] + +Ubuntu 22.10 带来了很多令人兴奋的新功能,例如 GNOME 43、最新的内核、重新设计的托盘菜单、文件应用的功能和 Pipewire 等 [新功能][2]。 + +我相信你已经迫不及待地想尝试 Ubuntu 22.10 上的这些新功能了。 + +但是请先等一等。 + +在你前往享受你新安装的 Ubuntu 22.10 之前,我要向你推荐一个不容错过的 Ubuntu 定制技巧列表。 + +### 安装 Ubuntu 22.10 后要做的 10 件事 + +#### 1、更新你的系统 + +安装好 Ubuntu 22.10 后,第一件要做的事就是更新你的系统。因为时差的原因,最新的 ISO 镜像通常不会包括所有的系统更新。所以,你要打开一个终端窗口,并运行以下命令,来更新你的系统。 + +``` +sudo apt update && sudo apt upgrade +``` + +上述命令执行完成后,你就可以进行下一步啦。 + +#### 2、删除 Firefox Snap,并安装 Flatpak 或者 deb 版本的 Firefox + +自去年发布的 Ubuntu 21.10 版本以来,默认的网页浏览器 Firefox 开始以 Snap 软件包的形式出现。如果你是普通用户,这可能不是一个问题或者需要担心的事情。但是出于几个原因,例如 Snap 软件包的 Firefox 启动时间较长、且当 Firefox 有后台更新时,会有不必要的 Snap 更新通知等等原因,导致许多用户不太喜欢 Firefox 的 Snap 软件包。 + +因此,你可以按照 [我写的另一篇操作指南][3],来完全删除 Firefox 的 Snap 软件包。这一过程有点复杂,需要花费一点时间。删除完成后,再从个人软件包存档(PPA)安装 deb 版本的 Firefox,或者使用 [Flatpak 版本][4] 的 Firefox。 + +这是一个可选的动作,你也可以跳过这一步骤。 + +#### 3、安装并启用 Flatpak + +虽然,几乎所有最新的 Linux 发行版都会默认安装 Flatpak,但是 Ubuntu 并没有默认安装 Flatpak,这是因为 Ubuntu 使用了它自己的沙箱技术 Snap。 + +但 Flatpak 这一应用程序还是最适合于每个人。Flatpak 能够帮助你快速安装多个应用程序,并在使用过程中无需担心依赖性和其他事情。 + +大多数 Flatpak 应用程序都在集中的仓库 Flathub 中。 + +要在 Ubuntu 22.10 中启用 Flatpak 应用程序,请按照以下命令进行操作。 + +``` +sudo apt install flatpakflatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakreporeboot +``` + +如果你想进一步了解关于此安装过程的更多信息,请阅读我们不久前发布的 [指南][5]。 + +#### 4、查看隐私设置 + +我建议你在安装 Ubuntu 后,手动退出任何数据收集项。大家都知道,无论怎么努力尝试,在互联网上保护自己的隐私都很困难。因此,这些小步骤很重要。 + +要配置隐私项,请打开“设置Settings”并选择“隐私Privacy”。然后查看隐私菜单下列出的项目。 + +此外,请确保禁用对 Ubuntu 服务器的后台报告。需要运行以下命令来手动禁用,因为在设置中没有禁用它的选项。 + +``` +sudo ubuntu-report -f send no +``` + +![Turn off location services in Ubuntu 22.10][6] + +#### 5、探索 GNOME 43 的功能 + +在 Ubuntu 22.10 版本中,最具视觉和功能性的变化是 GNOME 43。因为 GNOME 43 有一些根本性和核心变化,所以它会影响每个人和他们的工作。GNOME 43 带来了一个新的药丸形状的托盘菜单,并更新了文件应用和 GNOME Web 等原生应用程序的功能。 + +请查看更为详细的 [GNOME 43 功能][7] 一文,以了解更多信息,或者你也可以自己探索 GNOME 43。 + +![Quick Settings Demo in GNOME 43][8] + +#### 6、确保音频可以与 Pipewire 配合使用 + +如果你经常使用音频,或者你的工作范围涉及到声音捕获、播放等内容,请确保在 Ubuntu 22.10 中,你的音频在有线或蓝牙情况下都能正常工作。 + +因为 Ubuntu 22.10 这个版本中的音频服务器是多年来第一次发生了变化,传统的 PulseAudio 被现代的 Pipewire 所取代。因此,请务必进行验证音频是否能正常使用。 + +#### 7、安装其他软件包 + +确保你可以在 Ubuntu 桌面上播放所有视频和音频格式是很重要的。如果你在设置期间跳过了额外的软件包安装,可以通过以下命令进行安装。 + +``` +sudo apt install ubuntu-restricted-extras +``` + +这可以解决 Ubuntu 中的任何视频或音频的播放问题,特别是 GNOME 视频无法播放的情况(因为GNOME 视频在默认情况下将无法播放任何内容)。 + +#### 8、安装基本的应用程序 + +带有 GNOME 的 Ubuntu 基础版本只有非常基本的应用程序。因此,在你使用 Ubuntu 之前,你需要安装一些其他必要的应用程序。 + +由于每个人的工作范围不同,每个人所需的应用程序也都不同。因此,在这里我仅提供一个通用的应用程序的列表,我认为你可以把这些应用程序都安装上,因为这些应用程序对所有人来说都很常用。 + +- GIMP – 进阶的照片编辑器 +- VLC – 无需额外编解码器即可播放任何内容的媒体播放器 +- Leafpad – 轻量级文本编辑器(甚至比默认的文本编辑器 gedit 还要更轻量级) +- Synaptic – 更好的软件包管理器 + +安装这些应用程序的命令: + +``` +sudo apt install -y gimp vlc leafpad synaptic +``` + +#### 9、获取一些 GNOME 扩展 + +你可以使用几个很酷的扩展程序,来扩展 GNOME 43 的功能,包括自定义顶部栏、托盘、更改 adwaita 外观等等。首先,使用下面的命令通过 Flatpak 来安装 GNOME 扩展管理器。 + +``` +flatpak install flathub com.mattjakeman.ExtensionManager +``` + +安装完成后,你就可以在 GNOME 扩展管理器中搜索你想要的任何扩展了。以下是一些必要扩展,你可以用它们来快速扩展 GNOME 43 的功能,我认为它们非常适合你全新的 Ubuntu 桌面。你只需在扩展管理器应用程序中,搜索这些名称即可。 + +- Caffeine +- Custom Hot Corners +- Dash to Dock +- Blur my shell +- Gradients +- Hide Activities Button +- Net speed simplified + +#### 10、准备备份 + +我们总是在我们遇到困难时,才觉得有必要备份。所以,请确保从一开始你就为备份做好了准备。理想的备份应用程序是 Timeshift,它很容易安装和使用。 + +以下是你可以从终端安装 Timeshift 的一组命令。安装完成后,你可以打开 Timeshift,并按照屏幕上的说明,设置备份了。 + +``` +sudo add-apt-repository -y ppa:teejee2008/ppasudo apt-get updatesudo apt-get install timeshift +``` + +### 额外小技巧 + +如果你想进一步定制你新安装的 Ubuntu 系统,以下是一些额外的小技巧。 + +#### 安装漂亮的字体 + +字体是一个很小却影响很大的设置项。虽然,Ubuntu 自带有好用的“Ubuntu regular”字体。 + +但是,你也可以从 Ubuntu 的官方仓库中安装一些其他漂亮的字体。以下是安装字体的一些命令。 + +``` +sudo apt install fonts-roboto fonts-cascadia-code fonts-firacode +``` + +安装完成后,你可以使用 [GNOME Tweak 工具][9],来更改字体。 + +#### 安装 TLP + +如果你经常使用笔记本电脑,那么你要好好爱惜电脑的电池。虽然电池用久了总是会损坏的,但你可以采取一些步骤,来减缓电池的老化。TLP 是 Linux 中自动优化电池使用、减缓电池老化的最好的程序之一。你可以使用以下命令来安装 TLP。 + +``` +sudo apt install tlp +``` + +我建议你将电池的电量始终保持在 50% 至 80% 之间。不要过度充电或让电池电量消耗到 50% 以下,也不要给电脑连续插电。 + +### 总结 + +以上就是安装桌面 Ubuntu 22.10 后要做的 10 件事啦。 + +我希望这篇文章会对你有帮助,你能够通过本文的方法来定制和调整你的 Ubuntu 桌面。那么你认为在安装好 Ubuntu 后,什么事是最推荐做的呢?请在评论区中告诉我吧。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/things-to-do-ubuntu-22-10/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[chai001125](https://github.com/chai001125) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/10/u2210-things-hd-1024x576.jpg +[2]: https://www.debugpoint.com/ubuntu-22-10/ +[3]: https://www.debugpoint.com/remove-firefox-snap-ubuntu/ +[4]: https://flathub.org/apps/details/org.mozilla.firefox +[5]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[6]: https://www.debugpoint.com/wp-content/uploads/2022/10/Turn-off-location-services-in-Ubuntu-22.10.jpg +[7]: https://www.debugpoint.com/gnome-43/ +[8]: https://www.debugpoint.com/wp-content/uploads/2022/08/Quick-Settings-Demo-in-GNOME-43.gif +[9]: https://www.debugpoint.com/customize-your-ubuntu-desktop-using-gnome-tweak/ diff --git a/published/202210/20221022.1 ⭐️ How to Install Python 3.10 in Ubuntu and Other Related Linux.md b/published/202210/20221022.1 ⭐️ How to Install Python 3.10 in Ubuntu and Other Related Linux.md new file mode 100644 index 0000000000..04f9379ddf --- /dev/null +++ b/published/202210/20221022.1 ⭐️ How to Install Python 3.10 in Ubuntu and Other Related Linux.md @@ -0,0 +1,146 @@ +[#]: subject: "How to Install Python 3.10 in Ubuntu and Other Related Linux" +[#]: via: "https://www.debugpoint.com/install-python-3-10-ubuntu/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15195-1.html" + +如何在 Ubuntu 和其他相关 Linux 中安装 Python 3.10 +====== + +![](https://img.linux.net.cn/data/attachment/album/202210/30/152139lddzddabu5u4buud.jpg) + +> 计划为工作安装 Python 3.10?以下是在 Ubuntu 和相关发行版中安装 Python 3.10 的方法。 + +Python 3.10 于 2021 年 10 月 25 日发布,具有附加功能和更新。此版本带来了更好的错误消息处理、新的模式匹配功能、类型别名TypeAlias、用户定义的类型保护等。你可以在 [此处][1] 阅读发布重点。 + +在编写本指南时,大多数当前发行版都采用 Python 3.10。例如,Ubuntu 22.04 LTS 和 Fedora 36 默认都有 Python 3.10。 + +也就是说,如果你现在在任何不支持的版本中需要 Python 3.10,你可以使用 [下面的可靠 PPA][2] 在 Ubuntu 中安装最新的 Python 3.10。下面是方法。 + +### 如何在 Ubuntu 上安装 Python 3.10 + +此 PPA 可用于 Ubuntu 21.10、Ubuntu 21.04、Ubuntu 20.04 LTS、Ubuntu 18.04 LTS 和 Linux Mint 20.x、Elementary OS 6 和其他相关的基于 Ubuntu 的发行版。这些发行版大多数默认情况下不支持 3.10。 + +打开终端并添加以下 PPA: + +``` +sudo add-apt-repository ppa:deadsnakes/ppa +``` + +使用以下命令刷新缓存: + +``` +sudo apt update +``` + +并使用以下命令安装 Python 3.10: + +``` +sudo apt install python3.10 +``` + +### 设置 Python 版本 + +将 Python 3.10 设置为默认值需要一些额外的步骤。如下。 + +> **警告**:你的 Ubuntu 系统中的许多应用程序依赖于 Python 3.9 的库存版本。因此,请确保你的工作应用(例如 GIMP、GNOME 终端等)与 Python 3.10 兼容。所以,要小心。 + +**快速提示:** 如果要检查已安装的系统包中的哪些依赖于特定版本,请使用 `apt-cache` 命令的 `rdepends` 开关。在下面的示例中,我检查哪些已安装的包依赖于 Python 3.8。 + +``` +apt-cache rdepends python3.8 +``` + +``` +[~]$ apt-cache rdepends python3.8 +python3.8 +Reverse Depends: +python3.8-dbg +virtualbox +python3.8-venv +python3.8-full +libpython3.8-testsuite +libglib2.0-tests +idle-python3.8 +idle-python3.8 +python3.8-minimal +python3.8-doc +python3.8-dev +python3.8-dbg +python3-uno +gedit +virtualbox +stimfit +python3.8-venv +python3-stfio +python3-escript-mpi +python3-escript +python3-csound +pitivi +obs-studio +liferea +libpython3.8-testsuite +libglib2.0-tests +kitty +kdevelop-python +idle-python3.8 +idle-python3.8 +rhythmbox-plugins +python3.8-minimal +python3.8-doc +python3.8-dev +python3 +python3-uno +python3-all +cluster-glue +gedit +[~]$ +``` + +#### 使用 Python 3.10 作为默认 Python3 + +首先,使用终端中的以下命令检查当前默认版本。 + +``` +python3 --version +``` + +使用 `update-alternatives` 创建指向 `python3` 的符号链接。 + +``` +sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1 +``` + +``` +sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2 +``` + +并通过以下命令选择使用哪一个作为 `python3`: + +``` +sudo update-alternatives --config python3 +``` + +![在 Ubuntu 中安装 Python 3.10][3] + +这就是所有步骤。现在,你可以开始在当前的 Ubuntu 版本中使用最新的 Python 进行工作/学习。你可以使用上述命令切换到库存版本并在任何时间更改版本号。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/install-python-3-10-ubuntu/ + +作者:[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://docs.python.org/3.10/whatsnew/3.10.html +[2]: https://github.com/deadsnakes +[3]: https://www.debugpoint.com/wp-content/uploads/2021/10/Installed-Python-3.10-in-Ubuntu-1024x472.jpeg \ No newline at end of file diff --git a/published/202211/20210108 The Definitive Guide to Using and Customizing the Dock in Ubuntu.md b/published/202211/20210108 The Definitive Guide to Using and Customizing the Dock in Ubuntu.md new file mode 100644 index 0000000000..4cbc192479 --- /dev/null +++ b/published/202211/20210108 The Definitive Guide to Using and Customizing the Dock in Ubuntu.md @@ -0,0 +1,248 @@ +[#]: collector: (lujun9972) +[#]: translator: (chai001125) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-15281-1.html) +[#]: subject: (The Definitive Guide to Using and Customizing the Dock in Ubuntu) +[#]: via: (https://itsfoss.com/customize-ubuntu-dock/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +在 Ubuntu 中使用和自定义程序坞 +====== + +![][0] + +当你登录 Ubuntu 时,你会看到屏幕左侧的 程序坞/停靠栏 dock ,上面有一些应用程序的图标。程序坞(也称为 启动器 launcher ,或者 面板 panel )可以让你快速启动某个常用的应用程序。 + +![][1] + +我经常使用程序坞。在本文中,我将分享一些关于有效使用程序坞的小技巧,并介绍自定义程序坞的外观和位置的方法。 + +你将在本教程中学习到以下内容: + + * 程序坞的基本用途:添加应用程序,并使用快捷方式来启动应用程序 + * 自定义程序坞的外观:更改图标大小、图标位置 + * 更改程序坞的位置:可用于单屏和多显示器的设置 + * 在程序坞中隐藏已安装的磁盘图标 + * 自动隐藏或禁用程序坞 + * 使用 `dconf-editor` 对程序坞进行额外的定制 + * 用其他程序坞应用程序替换 Ubuntu 默认的程序坞 + +我将在教程中使用 程序坞 dock 面板 panel 启动器 launcher 等术语,它们的意思是等同的。 + +### 如何使用 Ubuntu 程序坞:你必须知道的基础知识 + +如果你是 Ubuntu 的新手,你需要掌握如何使用程序坞。尽管,在一段时间后你总会熟悉程序坞的功能,但是阅读本文能让你更快地明白。 + +#### 向程序坞添加新的应用程序(或删除应用程序) + +这一步骤十分简单。从菜单中搜索你想要添加在程序坞的应用程序,然后运行它。 + +正在运行的应用程序会显示在程序坞中,它的图标在程序坞中所有图标的下方。右键单击该图标,然后选择 “添加到收藏夹 Add to Favorites ” 选项。这会把该应用程序的图标锁定到程序坞上。 + +![Right-click on the icon and select “Add to Favorites”][2] + +从程序坞中删除应用程序的图标,操作起来更为简单。你不需要运行你想要在程序坞删除的应用程序,只需右键单击应用程序图标,然后选择 “从收藏夹中删除 Remove From Favorites ” 即可。 + +![Right-click on the icon and select “Remove from Favorites”][3] + +#### 更改程序坞中的图标顺序 + +默认情况下,新添加到程序坞的应用程序图标会放置在程序坞上的所有图标之后。但是,你也可以改变图标的位置。 + +要更改图标的顺序,你只需将它拖放到另一个位置即可,不用 “锁定位置 lock it ”,或者做其他的事情。如果你不做任何的更改,这个图标会一直停留在那个位置。 + +![Reorder Icons On Ubuntu Docks][4] + +#### 右键单击程序坞中的图标,以获取应用程序的额外选项 + +左键单击程序坞中的图标会启动应用程序,或者如果应用程序已经在运行,则这个应用程序会被聚焦,即它会出现在所有其他正在运行的应用程序窗口前面。 + +右键单击程序坞中的图标会为你提供应用程序的额外选项。不同的应用程序会有不同的选项。 + +右键单击**浏览器**图标,在它的额外选项中,你可以打开一个新的私人窗口,或预览所有正在运行的窗口。 + +![][5] + +右键单击**文件管理器**图标,在它的额外选项中,你可以查看所有已添加书签的目录,或预览打开的窗口。 + +当然,你也可以通过右键单击图标,来退出应用程序。大多数应用程序能够通过右键单击而退出,而一些应用程序(例如 Telegram 等),将被最小化到 系统托盘 system tray 中。 + +#### 使用键盘快捷键,以快速启动程序坞中的应用程序 [知道这个的人不多] + +你只需用鼠标单击程序坞上的图标,即可启动应用程序。但是,你也可以用键盘快捷键,来启动应用程序。 + +使用 `WIN`/`Super` + `数字键` 的组合,能够启动程序坞中该位置的应用程序。 + +![][6] + +如果应用程序已经在运行了,它将被聚焦。 + +由于这个功能是基于位置的,所以请不要一直对图标进行重新排序。就我个人而言,我把 Firefox 放在程序坞的第 1 个位置,文件管理器放在第 2 个位置,备用浏览器放在第 3 个位置,以此类推,直到第 9 个位置。这样,我可以使用 `Super + 2`,从而快速启动文件管理器。 + +因为我的系统连接了 3 个屏幕,所以我发现这个快速启动应用程序的功能特别好用,我不必再将鼠标移动到第一个屏幕上的程序坞上了。你也可以在其他屏幕上启用或禁用程序坞,我将在本教程的后面部分向你展示如何设置。 + +### 改变程序坞在屏幕上的位置 + +默认情况下,程序坞位于屏幕的左侧。但是,有些人喜欢将程序坞放置在屏幕底部。 + +Ubuntu 允许你更改程序坞的位置。你可以将程序坞移至底部或右侧。我不觉得有很多人真的想要把扩展坞放在了顶部,所以没有将扩展坞移到顶部的选项。 + +![Change Launcher Position][7] + +要更改程序坞位置,请进入 “设置 Settings ” 菜单,然后点击 “外观 Appearance ” ,你可以在 Dock 栏下看到一些选项,然后你可以在此处更改 “屏幕上的位置 Position on screen ” 这一设置。 + +![Go to Settings->Appearance->Dock][8] + +#### 程序坞在多显示器设置中的位置 + +如果你的系统连接了多个屏幕,你可以选择是在所有的屏幕上还是在某个选定的屏幕上,显示扩展坞。 + +![Ubuntu Dock Settings Multimonitor][9] + +对于我个人而言,我只在我的笔记本电脑屏幕上显示程序坞,因为这是我的主屏幕。这样在我的另外两个屏幕会留有最大的空间。 + +### 更改程序坞的外观 + +让我们继续看看 Ubuntu 程序坞中的更多自定义选项吧。 + +想象一下,如果你在程序坞中添加了太多的应用程序或打开了太多应用程序,那么程序坞的空间会被填满。如果你想要进入到程序坞端点处的应用程序,那么你必须滚动到程序坞顶部和底部才可以。 + +你可以更改程序坞的图标大小,来解决这个问题,这样程序坞就能够容纳更多图标来。不过,也不要让图标太小。 + +![][10] + +要更改程序坞的图标大小,请进入 “设置 Settings ” 菜单,然后点击 “外观 Appearance ” ,并通过移动 “图标大小 Icon size ” 下的滑块来更改它。默认的图标大小为 48 像素。 + +![Changing Icon Size In Ubuntu Dock][11] + +#### 在程序坞中隐藏已安装的磁盘图标 + +当你插入 U 盘或 SD 卡时,它的驱动器会安装到系统中,并且在程序坞中会立即出现一个图标。这个图标很有用,因为你可以直接通过右键单击它,来安全地删除驱动器选项。 + +![Mounted disks are displayed In the Ubuntu Dock][12] + +如果你认为在程序坞中显示已安装的磁盘图标很麻烦的话,你也可以关闭这个功能。别担心,你仍然可以从文件管理器访问已安装的驱动器。 + +打开终端,使用以下命令,来隐藏程序坞中已安装的磁盘图标: + +``` +gsettings set org.gnome.shell.extensions.dash-to-dock show-mounts false +``` + +更改会立即生效。你不再会为程序坞中显示已安装的磁盘而烦恼了。 + +如果你想要恢复默认情况,请使用以下命令: + +``` +gsettings set org.gnome.shell.extensions.dash-to-dock show-mounts true +``` + +### 改变程序坞的行为 + +接下来,让我们自定义程序坞的默认行为,使它能更适合你的需求吧。 + +#### 启用点击最小化 + +如果你单击一个正在运行的应用程序的图标,那么这个应用程序的窗口将成为焦点。当如果你**再次单击**这个图标时,将什么都不会发生。这是因为,在默认情况下,第二次点击同一图标不会最小化应用程序。 + +这是现代桌面的默认行为,但我不太喜欢,我更喜欢的是:当我**第二次点击图标时,应用程序会被最小化**。 + +如果你像我一样,那么你可能想要在 Ubuntu 中 [启用点击最小化选项][13]: + +为此,请打开终端并输入以下命令: + +``` +gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize' +``` + +#### 自动隐藏 Ubuntu 程序坞,以获得更多屏幕空间 + +如果你想要有最大的屏幕空间,你可以在 Ubuntu 中为程序坞启用自动隐藏选项。 + +自动隐藏选项会隐藏程序坞,你就能获得整个屏幕。不过,程序坞仍然可以使用。将光标移动到程序坞原来所在的位置,它就会再次出现。当程序坞重新出现时,它会覆盖在正在运行的应用程序窗口上。这是一件好事,否则太多元素会开始在屏幕上移动。 + +要设置程序坞自动隐藏,请进入 “设置 Settings ” 菜单,然后点击 “外观 Appearance ” ,你可以在 Dock 栏下开启 自动隐藏选项 Auto-hide the Dock ” 。 + +![Auto-hide the dock][14] + +如果你不喜欢自动隐藏程序坞的话,你可以用同样的方式禁用它。 + +#### 禁用 Ubuntu 默认的程序坞 + +Ubuntu 程序坞的自动隐藏选项对很多人来说已经足够好了,但是依旧有些用户根本不喜欢 Ubuntu 自带的程序坞。如果你也是其中的一员,你可以选择完全禁用 Ubuntu 的程序坞。 + +从 Ubuntu 20.04 开始,你可以使用 扩展应用程序 Extensions application ,来管理 [GNOME 扩展][15]。 + +![Look for Extensions app in the menu][16] + +使用这个扩展应用程序,你就可以轻松地禁用或重新启用程序坞了。 + +![Disable Ubuntu Dock][17] + +### 使用 dconf-editor 进行高级的程序坞定制 [不推荐] + +##### 请注意 + +`dconf-editor` 能让你更改 GNOME 桌面环境的几乎每个方面。这个性质喜忧参半,因为你在更改时必须小心,而且大多数设置都可以即时更改,无需确认。虽然你可以重置你的更改,但你仍可能会将系统置于难以恢复正常的状态。 + +出于这个原因,我不推荐你使用 `dconf-editor`,特别是如果你不喜欢花时间在故障排除和修复问题上,或者如果你不太熟悉 Linux 和 GNOME。 + +[dconf-editor][18] 给你提供了在 Ubuntu 中自定义程序坞的其他选项。你可以在从软件中心安装 `dconf-editor`,然后导航到 `org > gnome > shell > extensions > dash-to-dock`,在这里你会找到很多自定义程序坞的选择。 + +![][19] + +### 替换 Ubuntu 默认的程序坞 + +有几个第三方的程序坞应用程序可用于 Ubuntu 和其他 Linux 发行版。你可以安装你想要的第三方程序坞,并使用它。 + +例如,你可以从软件中心下载 “Plank dock”,并以与 Ubuntu 程序坞类似的方式来使用它。 + +![Plank Dock in Ubuntu][20] + +在这种情况下,禁用 Ubuntu 默认的程序坞会是一个更好的主意,因为同时使用多个扩展坞是不太明智的。 + +### 总结 + +本教程介绍了在 GNOME 实现中,如何自定义 Ubuntu 默认的程序坞。上述程序坞的更改在 vanilla GNOME 的程序坞上运行良好。 + +我已经向你展示了大多数常见的 Ubuntu 程序坞的定制方法。你不需要去盲目地跟随教程中的所有步骤。阅读并思考哪一个是你需要的,然后根据教程中的方法更改配置。 + +如果你不喜欢 Ubuntu 默认的程序坞,也有其他的程序坞可供试验。 + +这个教程让你学到了新东西吗?你还想看到更多这样的教程吗?欢迎你在评论区中建议和反馈。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/customize-ubuntu-dock/ + +作者:[Abhishek Prakash][a] +选题:[lujun9972][b] +译者:[chai001125](https://github.com/chai001125) +校对:[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://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/ubuntu-dock.png?resize=800%2C450&ssl=1 +[2]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/01/add-icons-to-dock.png?resize=800%2C450&ssl=1 +[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/remove-icons-from-dock.png?resize=800%2C450&ssl=1 +[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/reorder-icons-on-ubuntu-docks.gif?resize=800%2C430&ssl=1 +[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/right-click-icons-ubuntu-dock.png?resize=800%2C450&ssl=1 +[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/01/keyboard-shortcut-for-ubuntu-dock.png?resize=800%2C450&ssl=1 +[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/change-launcher-position-ubuntu.png?resize=800%2C450&ssl=1 +[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/01/change-dock-position-ubuntu.png?resize=800%2C450&ssl=1 +[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/ubuntu-dock-settings-multimonitor.png?resize=800%2C450&ssl=1 +[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/01/normal-icon-size-dock.jpg?resize=1024%2C1080&ssl=1 +[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/01/changing-icon-size-in-ubuntu-dock.png?resize=800%2C450&ssl=1 +[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/external-mounted-disks-in-ubuntu-dock.png?resize=800%2C450&ssl=1 +[13]: https://itsfoss.com/click-to-minimize-ubuntu/ +[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/autohide-dock-ubuntu.png?resize=800%2C450&ssl=1 +[15]: https://itsfoss.com/gnome-shell-extensions/ +[16]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/GNOME-extensions-app-ubuntu.jpg?resize=800%2C240&ssl=1 +[17]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/disable-dock-ubuntu.png?resize=800%2C450&ssl=1 +[18]: https://wiki.gnome.org/Apps/DconfEditor +[19]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/dconf-editor-dock.png?resize=592%2C599&ssl=1 +[20]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/plank-dock-Ubuntu.jpg?resize=800%2C382&ssl=1 +[0]: https://img.linux.net.cn/data/attachment/album/202211/23/143533heym0bybbfm0bfbj.jpg \ No newline at end of file diff --git a/published/202211/20210202 Convert audio files with this versatile Linux command.md b/published/202211/20210202 Convert audio files with this versatile Linux command.md new file mode 100644 index 0000000000..5d4010c370 --- /dev/null +++ b/published/202211/20210202 Convert audio files with this versatile Linux command.md @@ -0,0 +1,228 @@ +[#]: collector: (lujun9972) +[#]: translator: (FYJNEVERFOLLOWS) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-15246-1.html) +[#]: subject: (Convert audio files with this versatile Linux command) +[#]: via: (https://opensource.com/article/20/2/linux-sox) +[#]: author: (Klaatu https://opensource.com/users/klaatu) + +使用这个多功能的 Linux 命令转换音频文件 +====== + +> SoX Sound Exchange 甚至可以为你的音频文件添加特效。 + +![](https://img.linux.net.cn/data/attachment/album/202211/13/104314skttlizoioyeaw3w.jpg) + +我工作需要使用音视频媒体,不管你处理哪种媒体,你肯定知道标准化是一种有价值的工具。就像你不会试图把一个分数加到一个小数上而不转换其中一个一样,我已经知道,把不同格式的媒体组合起来并不理想。为了方便用户,大多数爱好者级应用程序使转换过程不可见。然而,对于那些需要控制媒体细节的用户的灵活软件,会通常让你自己提前将媒体转换为所需的格式。我有一些最喜欢的音频转换工具,其中之一就是号称“音频的瑞士军刀” —— [SoX][2]。 + +### 安装 + +在 Linux 或 BSD 上,可以从软件存储库或 Ports 树中安装 `sox` 命令(,以及一些有用的符号链接)。 + +你也可以从 [Sourceforge.net][3] 上安装 SoX。它不经常发布,但它的代码库往往是稳定的,所以如果你想要最新的功能(如 Opus 支持),构建它是容易和安全的。 + +SoX 主要提供了 `sox` 命令,但是创建了一些有用的符号链接:`play`、`rec` 和 `soxi`。 + +### 使用 SoX 获取文件信息 + +SoX 可以读取和重写音频数据。它是否存储重写的音频数据取决于你。在有些情况下,你不需要存储转换后的数据,例如,当你将输出直接发送到扬声器进行回放时。然而,在进行任何转换之前,最好首先确定要处理的是什么。 + +使用 `soxi` 命令也可以收集音频文件信息。`soxi` 会符号链接到 `soxi --info`。 + +``` +$ soxi countdown.mp3 +Input File(输入文件)    : '/home/tux/countdown.mp3' +Channels(通道数)       : 1 +Sample Rate(采样率)    : 44100 +Precision(数据精度)      : 16-bit(16 比特) +Duration(时长)       : 00:00:11.21 = 494185 samples...(11.21 秒 = 494185 采样点) +File Size(文件大小)      : 179k +Bit Rate(比特率)       : 128k +Sample Encoding(编码格式): MPEG audio (layer I, II or III) +``` + +这个输出可以让你很好地了解音频文件的编码方式、文件长度、文件大小、采样率和通道数。其中一些你可能*认为*你已经知道了,但当客户把媒体带到我面前时,我从不相信这些假设。使用 `soxi` 验证媒体属性。 + +### 转换文件 + +在本例中,,一个游戏节目倒计时的音频是以MP3文件的形式提供的。虽然几乎所有的编辑应用程序都接受压缩音频,但它们并不是在压缩的数据上进行编辑。转换是在某个地方发生的,可能是一个秘密的后台任务,也可能提示让你保存一份副本。我通常喜欢自己提前完成转换。这样,我可以控制使用的格式。我可以在夜间批量处理大量的媒体,而不是浪费宝贵的制作时间,等待编辑应用程序按需处理它们。 + +`sox` 命令用于转换音频文件。在 `sox` 流程中有几个阶段: + + * 输入 + * 合并 + * 特效 + * 输出 + +但在命令语法中,特效步骤令人困惑地放到了*最后一步*。这意味着 `sox` 流程是这样组成的: + +``` +输入 → 合并 → 输出 → 特效 +``` + +### 编码 + +最简单的转换命令只涉及一个输入文件和一个输出文件。下面是转换 MP3 文件为无损 FLAC 文件的命令: + +``` +$ sox countdown.mp3 output.flac +$ soxi output.flac + +Input File(输入文件)     : 'output.flac' +Channels(通道数)       : 1 +Sample Rate(采样率)    : 44100 +Precision(数据精度)      : 16-bit(16 比特) +Duration(时长)       : 00:00:11.18 = 493056 samples...(11.18 秒 = 493056 采样点) +File Size(文件大小)      : 545k +Bit Rate(比特率)       : 390k +Sample Encoding(编码格式): 16-bit FLAC +Comment(注释)        : 'Comment=Processed by SoX' +``` + +#### 特效 + +特效可以在命令末尾指定。它可以在将数据发送到最终目的地之前更改音频。例如,有时声音太大会在转换过程中造成问题: + +``` +$ sox bad.wav bad.ogg +sox WARN sox: `bad.ogg' output clipped 126 samples; decrease volume? +``` + +应用**增益**(`gain`)效果通常可以解决此问题: + + +``` +$ sox bad.wav bad.ogg gain -1 +``` + +#### 淡入淡出 + +另一个常用的效果是**淡入淡出**(`fade`)。此效果允许你定义淡入或淡出的类型,以及你希望淡入淡出效果持续的时间。 + +下面是一个使用倒抛物线的 6 秒淡入示例: + +``` +$ sox intro.ogg intro.flac fade p 6 +``` + +这将对音频的头部应用 3 秒的淡入,并从 8 秒标记开始淡出(这段音乐只有 11 秒,因此在这种情况下淡出也是 3 秒): + +``` +$ sox intro.ogg intro.flac fade p 3 8 +``` + +`sox` 手册页中列出了不同类型的淡入淡出(正弦、线性、倒抛物线等)以及淡入淡出提供的选项。 + +#### 特效语法 + +每个特效插件都有自己的语法,因此请参阅手册页了解如何调用每个特效插件的详细信息。 + +效果可以在一个命令中以菊花链的方式进行,至少在你想组合它们的范围内是如此。换句话说,没有语法可以只在六秒钟的淡出期间应用一个镶边效果。对于如此精确的东西,你需要一个图形声波编辑器或数字音频工作站,例如 [LMMS][4] 或 [Rosegarden][5]。但是,如果你只想应用一次特效,可以在同一命令中将它们一起列出。 + +此命令应用了一个 -1 的**增益**效果、1.35 的节奏**拉伸**和**淡出**: + +``` +$ sox intro.ogg output.flac gain -1 stretch 1.35 fade p 0 6 +$ soxi output.flac + +Input File(输入文件)     : 'output.flac' +Channels(通道数)       : 1 +Sample Rate(采样率)    : 44100 +Precision(数据精度)      : 16-bit(16 比特) +Duration(时长)       : 00:00:15.10 = 665808 samples...(15.10 秒 = 665808 采样点) +File Size(文件大小)      : 712k +Bit Rate(比特率)       : 377k +Sample Encoding(编码格式): 16-bit FLAC +Comment(注释)        : 'Comment=Processed by SoX' +``` + +### 组合音频 + +SoX 还可以通过连接或混合音频文件来组合音频文件。 + +要连接(或者说*拼接*)文件合并为一个文件,请在命令中提供多个输入文件: + +``` +$ sox countdown.mp3 intro.ogg output.flac +``` + +在本例中,`output.flac` 现在包含 `countdown.mp3` 音频,紧接着是 `intro.ogg` 音乐。 + +但是,如果你希望两首曲目同时播放,可以使用 `--combine mix` 选项: + +``` +$ sox --combine mix countdown.mp3 intro.ogg output.flac +``` + +然而,想象一下,这两个输入文件的不同之处不仅仅在于它们的编解码器。人声音轨用单声道(一个声道)录制并不少见,但音乐至少要用立体声(至少两个声道)来录制。SoX 不会给出默认的解决方案,因此你必须首先自己标准化这两个文件的格式。 + +#### 更改音频文件 + +选项与后面列出文件名有关。例如,此命令中的 `--channels` 选项将*仅仅*应用于 `input.wav`,而*不被*应用于 `example.ogg` 和 **output.flac**: + +``` +$ sox --channels 2 input.wav example.ogg output.flac +``` + +这意味着在 SoX 中,选项的位置非常重要。如果你在命令开始时指定一个选项,那么实际上只会覆盖 SoX 自己从输入文件中收集的内容。然而,在*输出文件*名前的选项决定了 SoX 如何写入音频数据。 + +要解决前面的通道不兼容问题,你可以首先标准化输入,然后混合: + +``` +$ sox countdown.mp3 --channels 2 countdown-stereo.flac gain -1 +$ soxi countdown-stereo.flac + +Input File(输入文件)     : 'countdown-stereo.flac' +Channels(通道数)       : 2 +Sample Rate(采样率)    : 44100 +Precision(数据精度)      : 16-bit(16 比特) +Duration(时长)       : 00:00:11.18 = 493056 samples...(11.18 秒 = 493056 采样点) +File Size(文件大小)      : 545k +Bit Rate(比特率)       : 390k +Sample Encoding(编码格式): 16-bit FLAC +Comment(注释)        : 'Comment=Processed by SoX' + +$ sox --combine mix \ + countdown-stereo.flac \ + intro.ogg \ + output.flac +``` + +SoX 绝对需要多个命令来执行复杂的操作,因此根据需要创建几个临时和中间文件是正常的。 + +### 多通道音频 + +当然,并非所有音频都被限制在一个或两个声道。如果你想将多个音频通道组合成一个文件,可以使用 SoX 的 `--combine merge` 选项: + +``` +$ sox --combine merge countdown.mp3 intro.ogg output.flac +$ soxi output.flac + +Input File     : 'output.flac' +Channels       : 3 +[...] +``` + +### 简单的音频操作 + +在没有视觉界面的情况下操作音频似乎很奇怪,而且对于某些任务来说,SoX 绝对不是最好的工具。然而,对于许多任务,SoX 提供了一个简单而轻量级的工具包。SoX 是一个具有强大潜力的简单命令。有了它,你可以转换音频,操纵通道和波形,甚至生成自己的声音。本文仅简要概述了其功能,因此请阅读其手册页或 [在线文档][2],然后看看你能创造什么。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/linux-sox + +作者:[Klaatu][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/klaatu +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/hi-fi-stereo-vintage.png?itok=KYY3YQwE (HiFi vintage stereo) +[2]: http://sox.sourceforge.net/sox.html +[3]: http://sox.sourceforge.net +[4]: https://opensource.com/life/16/2/linux-multimedia-studio +[5]: https://opensource.com/article/18/3/make-sweet-music-digital-audio-workstation-rosegarden diff --git a/published/202211/20210415 5 reasons sysadmins love systemd.md b/published/202211/20210415 5 reasons sysadmins love systemd.md new file mode 100644 index 0000000000..80c82ef369 --- /dev/null +++ b/published/202211/20210415 5 reasons sysadmins love systemd.md @@ -0,0 +1,197 @@ +[#]: subject: (5 reasons sysadmins love systemd) +[#]: via: (https://opensource.com/article/21/4/sysadmins-love-systemd) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) +[#]: collector: (lujun9972) +[#]: translator: (chai001125) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-15296-1.html) + +系统管理员喜欢 systemd 的 5 个理由 +====== + +> systemd 的速度和易用性使其成为管理现代 Linux 系统的流行方式。 + +![][0] + +系统管理员知道,在一台运行着的**现代计算机**上会发生很多事情:应用程序在后台运行、预定事件等待在特定时间被触发、事件写入日志文件、发送状态报告。在以前,不同的进程可以通过一系列 Unix 工具,来进行有效地管理和监控。然而,现代的计算机运作更为复杂了:本地服务与容器化应用程序一同运行、能够轻松访问云及其运行的集群、实时进程、以及有比以往都多的数据。 + +拥有统一的管理方法不但是用户想要的,也是忙碌的系统管理员所迫切渴望的。为了完成这项重要的任务,系统守护进程 system daemon (**systemd**) 被开发出来,并迅速被所有主要的 Linux 发行版所采用了。 + +当然,systemd 并不是管理 Linux 系统的唯一方式,还有许多其他可供选择的初始化系统,包括 sysvinit、OpenRC、runit、s6 和 BusyBox,但 systemd 将 Linux 视为一个统一的数据集,意味着 systemd 能用强大的工具对 Linux 进行一致的操作和查询。对于忙碌的系统管理员和许多用户来说,systemd 的速度和易用性是一个重要的特性。有以下的五个原因。 + +### 启动管理 + +启动 Linux 计算机可能是一件非常罕见的事情。**服务器**的正常运行时间通常以 _年_ 来计算,而不是月或周。**笔记本电脑和台式机**可能会频繁地关闭和启动,但更多的时候它们是被挂起或休眠了。无论哪种类型,**最近一次开机的时刻**都可用于检查一段时间内的计算机健康情况,因为当你在监视系统或诊断问题时,这一时刻能够限制查看的数据量大小,从而让你快速地找到问题所在。 + +如果你不记得上次启动计算机的时间,你可以使用 systemd 的日志记录工具 `journalctl`,来列出计算机的所有启动会话: + +``` +$ journalctl --list-boots +-42 7fe7c3... Fri 2020-12-04 05:13:59 - Wed 2020-12-16 16:01:23 +-41 332e99... Wed 2020-12-16 20:07:39 - Fri 2020-12-18 22:08:13 +[...] +-1 e0fe5f... Mon 2021-03-29 20:47:46 - Mon 2021-03-29 21:59:29 + 0 37fbe4... Tue 2021-03-30 04:46:13 - Tue 2021-03-30 10:42:08 +``` + +最近一次启动会话输出在结果列表的底部,因此你可以通过管道将输出传输到 `tail`,来查看最近一次启动会话。 + +左侧的数字(在本例中为 42、41、1 和 0)是每个启动会话的索引号。换句话说,如果你要查看某一特定启动会话的日志,你可以使用这个索引号作为参数。 + +### 日志检查 + +查看日志是推断系统信息的一种重要方法。日志提供了计算机运行的大部分事件的历史记录,这些记录都是在没有你直接监督的情况下生成的。通过日志,你可以知道某一服务何时启动、定时任务何时运行、哪些服务在后台运行、哪些事件运行失败等等信息。故障排除的初始步骤是使用 systemd 的 `journalctl` 来查看日志: + +``` +$ journalctl --pager-end +``` + +`--pager-end` 选项(简写为 `-e`)会从 `journalctl` 的输出末尾开始查看日志,因此要查看更早发生的日志,你需要向上滚动。 + +systemd 维护一个错误信息的“目录”,错误信息包含错误记录、可能的解决方案、支持论坛的链接和开发人员文档。这个错误信息的“目录”能为日志事件提供重要的上下文,否则它可能会成为海量日志中的一个令人困惑的信息,或者更糟的是,错误信息可能会完全被忽视。要将错误消息与日志中的解释性文本放在一起输出,你可以使用 `--catalog` 选项(简写为 `-x`): + +``` +$ journalctl --pager-end --catalog +``` + +要进一步限定日志输出,你可以指定要查看哪个启动会话的日志。因为每个启动会话都有索引,所以你可以使用 `--boot` 选项,来指定某个启动会话,并仅查看该启动会话的日志: + +``` +$ journalctl --pager-end --catalog --boot 42 +``` + +你还可以查看特定 systemd 单元的日志。例如,要解决 SSH 服务的问题,你可以指定 `--unit sshd` 选项,来仅查看适用于 `sshd` 守护程序的日志: + +``` +$ journalctl --pager-end \ + --catalog --boot 42 \ + --unit sshd +``` + +### 服务管理 + +systemd 的第一个任务就是启动你的计算机,systemd 会迅速、高效且有效地执行这一任务。但 systemd 一直需要管理的任务是服务管理,因为 systemd 需要确保你要运行的服务确实在你的会话期间启动,并继续运行。systemd 的这一功能非常稳健,因为理论上即使是一个崩溃的服务也可以在没有你干预的情况下重新启动。 + +你可以通过使用 `systemctl` 命令来让 systemd 管理服务,并能查看定义服务的 单元文件 unit file : + +``` +$ systemctl cat sshd +# /usr/lib/systemd/system/sshd.service +[Unit] +Description=OpenSSH server daemon +Documentation=man:sshd(8) man:sshd_config(5) +After=network.target sshd-keygen.target +Wants=sshd-keygen.target + +[Service] +Type=notify +EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config +EnvironmentFile=-/etc/sysconfig/sshd +ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY +ExecReload=/bin/kill -HUP $MAINPID +KillMode=process +Restart=on-failure +RestartSec=42s + +[Install] +WantedBy=multi-user.target +``` + +大多数单元文件都在 `/usr/lib/systemd/system/` 目录下,但是你也可以用局部更改来修改配置,请使用以下的方式: + +``` +$ systemctl edit sshd +``` + +你可以通过 `is-active` 选项,来查看某一服务当前是否处于活动状态: + +``` +$ systemctl is-active sshd +active +$ systemctl is-active foo +inactive +``` + +同样地,你可以通过 `is-failed` 选项,来查看某一服务是否运行失败了。 + +``` +$ systemctl is-failed sshd +``` + +使用以下命令,来启动或者停止某一服务: + +``` +$ systemctl stop sshd +$ systemctl start sshd +``` + +使用以下命令,让某一服务在开机时自启动: + +``` +$ systemctl enable sshd +``` + +添加 `--now` 选项,让某一服务在开机时启动并在当前会话中立即启动。 + +### 定时器管理 + +在以前,当你想在 Linux 上自动执行一项任务时,你可以使用的工具是 `cron`。如今,`cron` 命令仍能使用,但对于在 Linux 上自动执行一项任务,也有一些其他好用的替代方案。例如,[anacron 命令][2] 是一个多功能的、类似于 `cron` 的系统,它能够运行在停机期间可能会错过的任务。 + +计划的事件就是在特定时间需要激活的服务。systemd 管理一个名为 [定时器][3] 的工具,它类似 cron 的功能。你可以使用以下命令,来列出活动中的定时器: + +``` +$ systemctl list-timers +NEXT                          LEFT       +Tue 2021-03-30 12:37:54 NZDT  16min left [...] +Wed 2021-03-31 00:00:00 NZDT  11h left [...] +Wed 2021-03-31 06:42:02 NZDT  18h left [...] + +3 timers listed. +Pass --all to see loaded but inactive timers, too. +``` + +你可以使用以下命令,来像启用服务一样启用定时器: + +``` +$ systemctl enable myMonitor.timer +``` + +### 目标管理 + +目标target 是 systemd 的最后一个主要组成部分。像服务和定时器一样,目标也是一个单元文件,也可以以相同的方式启动和启用。目标的独特之处在于它们可以将其他单元文件任意分组。例如,你可能希望开机启动到文本控制台界面而不是图形桌面,因此有一个 `multi-user` 目标。但是,`multi-user` 目标只是没有包括桌面单元文件的 `graphical` 目标。 + +简而言之,目标是一种将服务、定时器甚至其他的目标集合在一起,以表示机器的预期状态的简单方法。 + +事实上,在 systemd 中,重启、关机或关闭操作只是一个目标而已。 + +你可以使用 `list-unit-files` 选项,用 `--type` 选项将其限制为 `target` 来列出所有可用的目标: + +``` +$ systemctl list-unit-files --type target +``` + +### 使用 systemd 对计算机进行控制管理 + +现代的 Linux 使用 systemd 进行服务管理和日志检查。从个人的 Linux 系统到企业服务器,systemd 都能提供有效的监控,并且十分易于维护。你越频繁地使用 systemd,systemd 对你而言就会变得越容易预测和直观,你就会明白系统的不同部分是如何相互关联的。 + +为了更好地熟悉 systemd,请现在就开始使用它吧。请 [下载关于 systemd 相关命令的备忘录][4],你可以在实际使用 systemd 中经常参考这个备忘录,这样你就能更快熟悉使用 systemd 啦! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/21/4/sysadmins-love-systemd + +作者:[Seth Kenlon][a] +选题:[lujun9972][b] +译者:[chai001125](https://github.com/chai001125) +校对:[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/OSDC_women_computing_4.png?itok=VGZO8CxT (Woman sitting in front of her laptop) +[2]: https://opensource.com/article/21/2/linux-automation +[3]: https://opensource.com/article/20/7/systemd-timers +[4]: https://opensource.com/downloads/linux-systemd-cheat-sheet +[0]: https://img.linux.net.cn/data/attachment/album/202211/28/085754t9sztkt26452ys4s.png \ No newline at end of file diff --git a/published/202211/20210426 How we built an open source design system to create new community logos.md b/published/202211/20210426 How we built an open source design system to create new community logos.md new file mode 100644 index 0000000000..7aa29a7ef8 --- /dev/null +++ b/published/202211/20210426 How we built an open source design system to create new community logos.md @@ -0,0 +1,123 @@ +[#]: subject: (How we built an open source design system to create new community logos) +[#]: via: (https://opensource.com/article/21/4/ansible-community-logos) +[#]: author: (Fiona Lin https://opensource.com/users/fionalin) +[#]: collector: (lujun9972) +[#]: translator: (MareDevi) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-15227-1.html) + +我们如何建立一个开源的设计系统来创造新的社区徽标 +====== + +> 了解 Ansible 的新徽标是如何根据相关人员的意见开发的,以确保整个项目的品牌一致性。 + +![UX design Mac computer with mobile and laptop][1] + +作为红帽的用户体验(UX)设计和 Ansible 产品团队的交互设计师,我们花了大约 6 个月的时间为 Ansible 社区设计了一系列徽标。这件事其实在更早的时候就开始了,当时一位项目经理要求我们为一个幻灯片提供一个 “快速而简单” 的徽标。在收集了一些需求后,我们在几天内就向相关人员展示了一个徽标,而且没有经过太多调整。几个月后,另一个相关人员说他们也需要类似的徽标,所以我们重复了这个过程。 + +于是,我们注意到一个模式:像这样的徽标资源不仅仅代表个人的要求,而是整个 Ansible 项目的共同需要。在完成了几个徽标要求后,我们有了一系列临时的设计,但在没有意识到品牌和设计惯例的情况下,这可能给整个 Ansible 的品牌视觉造成了不一致。随着这个徽标系列的增加,我们认识到了这个迫在眉睫的问题,并需要解决它。 + +我们的解决方案是创建一个 Ansible 设计系统,这是一个针对品牌的资源,可以指导未来一致的徽标设计。 + +### 什么是设计系统? + +设计系统是一个可重复使用的资源和指导方法的集合,有助于告知任何数字产品套件的视觉语言。设计系统创造了一些模式,将独立的产品整合在一起,并通过可扩展性和一致性提升品牌。 + +特别是在一个有多种产品的大公司里,如果没有标准化,扩展起来就不容易,因为不同的团队对每个产品都有贡献。设计系统可以作为每个团队建立新资产的基线。有了标准化的外观和感觉,产品在整个组合中被统一为一个家族。 + +### 从头构建一个设计系统 + +在收到相关人员提出的为 Ansible 开源社区(如 Ansible Builder、Ansible Runner 和Project Receptor)创建徽标的一系列要求后,我们决定为我们的工作流程设计一个结构,并创建一个单一的事实来源,为之努力。 + +首先,我们对现有的徽标进行了视觉审计,以确定我们要做的是什么。Ansible 的原始徽标系列由四个主要图像组成:代表 AWX 的 Angry Spud,代表 Ansible 核心/引擎的 Ansibull,以及代表 AWX 的带翅膀的显示器。大部分的徽标都是用一致的红色阴影和公牛的形象联系在一起的,但是笔画的宽度、笔画的颜色、线条的质量和排版复杂而多样。 + +![Original Ansible logos][2] + +Angry Spud 使用棕褐色的轮廓和手绘风格,而 Ansibull 则是一个对称的几何矢量图。AWX 显示器是一个异类,它有细线画的翅膀,蓝色的矢量矩形,以及古英语字体(这里没有包括在内,但与家族中其他使用现代无衬线的字体相比,它是一个例外)。 + +### 确立新的设计标准 + +考虑到调色板、排版和图像,我们产生了一个一致的构图,以 Ansibull 代表所有核心的 Ansible 产品,以及大胆的线条和充满活力的颜色。 + +![Ansible design system][4] + +新的 Ansible 社区徽标设计风格指南详细说明了 Ansible 产品徽标的调色、排版、尺寸、间距和徽标变化。 + +新的风格指南展示了一种全新的、现代的定制字体,该字体基于瑞士独立字体厂商 [Grilli Type][5] 的 GT America 字体。我们为该字体创造了一个柔和的外观,通过圆润每个字母某些角落来配合图像的圆润度。 + +我们决定通过在光谱中加入更多的颜色并以原色为基础,设计一个更生动、更饱和、更普遍的调色板。新的调色板以浅蓝色、黄色和粉红色为主色调,每种颜色都有较浅的高光和较深的阴影。这种更广泛的颜色范围使系统内有更多的灵活性,并引入了 3D 的外观和感觉。 + +![New Ansible logos][6] + +我们还引入了新的图像,如 Receptor 和 AWX 徽标中的六边形,以保持视觉上的连续性。最后,我们确保每个徽标在浅色和深色背景上都能使用,以获得最大的灵活性。 + +### 拓展设计组合 + +一旦我们建立了核心徽标系列,我们就开始为 Ansible 服务创建徽章,如 Ansible Demo 和 Ansible Workshop。为了将服务与产品区分开来,我们决定将服务图形包围在一个圆圈中,圆圈中包含了相同的定制排版的服务名称。新的服务徽章显示了幼儿版的 Ansibull(来自 Ansible Builder 的徽标)正在完成与每个服务相关的任务,例如 Ansible Demo 指向白板,Ansible Workshop 则使用构建工具。 + +![New Ansible services logos][7] + +### 利用开放源码进行设计决策 + +最初的 AWX 徽标受到了摇滚乐图像的影响,如翅膀和重金属字体(此处省略)。 + +![Original AWX logo][8] + +(Fiona Lin and Taufique Rahman, [CC BY-SA 4.0][3]) + +Ansible 社区的一些成员,包括红帽多样性和包容性小组,提请我们注意,这些元素类似于仇恨团体使用的图像。 + +考虑到原徽标的社会影响,我们必须迅速与 Ansible 社区合作,设计一个替代徽标。我们没有像最初的徽标那样闭门造车,而是扩大了项目的范围,仔细考虑了更多的相关人员,包括 Ansible 社区、红帽多样性和包容性小组,以及红帽法律团队。 + +我们开始了头脑风暴,向 Ansible 开源社区征求意见。Ansible 的一位工程师 Rebeccah Hunter 在草图绘制阶段做出了贡献,后来成为我们设计团队中的一员。让一大群相关人员参与进来的挑战之一是,我们对新的徽标概念有了各种各样的想法,比如一条辅助电缆、一碗拉面等等。 + +我们勾画了五个社区贡献的徽标创意,每个徽标都有不同的品牌视觉:一个芽、一个火箭、一个显示器、一碗拉面和一个辅助电缆。 + +![AWX logo concepts][9] + +在完成这些初步的概念草图后,我们建立了一个虚拟的投票机制,并在整个迭代过程中使用。这个投票系统使我们能够利用社区的反馈,从五个初始概念缩小到三个:火箭、一碗拉面和显示器。我们在这三个方向上进一步迭代,并通过专门的 Slack 频道进行反馈,直到我们找到一个符合社区愿景的方向,即 AWX 显示器。 + +![New AWX logo][10] + +以社区的意见为指导,我们围绕显示器为 AWX 打造了徽标概念。我们保留了原徽标中的显示器元素,同时使其外观和感觉现代化,以配合我们更新的设计系统。我们使用了更鲜艳的色调,更简洁的无衬线字体,以及来自 Project Receptor 徽标的元素,包括六角形图案。 + +通过从一开始就与我们的社区接触,我们能够在公开场合进行设计和迭代,所有相关人员都有一种包容感。最后,我们认为这是取代一个有争议的徽标的最好方法。最终的版本被移交给了红帽法律团队,在获得批准后,我们用这个新的徽标替换了所有的现有资产。 + +### 主要收获 + +为设计系统创建一套规则和资源,使你的数字产品全面保持一致,消除品牌混乱,并实现可扩展性。 + +当你探索在自己的社区建立一个设计系统时,你可能会从我们在这条路上学到的这些关键经验中受益: + + * 用设计系统来扩展新的徽标,比没有设计系统要容易得多。 + * 当你使用投票系统来验证结果时,杂乱无章的设计方案就会变得不那么令人生畏。 + * 将大量受众的注意力引向三套方案,可以消除决策疲劳,集中社区反馈。 + +我们希望这篇文章能够提供用于开源社区的设计系统的启示,并帮助你认识到在早期开发一个系统的好处。如果你正在创建一个新的设计系统,你有什么问题?如果你已经创建了一个,你学到了什么教训?请在评论中分享你的想法。 + +*(图像来自:Fiona Lin and Taufique Rahman, [CC BY-SA 4.0][3])* + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/21/4/ansible-community-logos + +作者:[Fiona Lin][a] +选题:[lujun9972][b] +译者:[MareDevi](https://github.com/MareDEvi) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/fionalin +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/ux-design-mac-laptop.jpg?itok=9-HKgXa9 (UX design Mac computer with mobile and laptop) +[2]: https://opensource.com/sites/default/files/pictures/original_logos.png (Original Ansible logos) +[3]: https://creativecommons.org/licenses/by-sa/4.0/ +[4]: https://opensource.com/sites/default/files/pictures/design_system.png (Ansible design system) +[5]: https://www.grillitype.com/ +[6]: https://opensource.com/sites/default/files/pictures/new_logos.png (New Ansible logos) +[7]: https://opensource.com/sites/default/files/pictures/new_service_badges.png (New Ansible services logos) +[8]: https://opensource.com/sites/default/files/uploads/awx_original.png (Original AWX logo) +[9]: https://opensource.com/sites/default/files/uploads/awx_concepts.png (AWX logo concepts) +[10]: https://opensource.com/sites/default/files/uploads/awx.png (New AWX logo) diff --git a/published/202211/20210607 Identify security properties on Linux using checksec.md b/published/202211/20210607 Identify security properties on Linux using checksec.md new file mode 100644 index 0000000000..385303b6b3 --- /dev/null +++ b/published/202211/20210607 Identify security properties on Linux using checksec.md @@ -0,0 +1,460 @@ +[#]: subject: (Identify security properties on Linux using checksec) +[#]: via: (https://opensource.com/article/21/6/linux-checksec) +[#]: author: (Gaurav Kamathe https://opensource.com/users/gkamathe) +[#]: collector: (lujun9972) +[#]: translator: (chai001125) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-15264-1.html) + +在 Linux 上使用 Checksec 识别二进制文件的安全属性 +====== + +> 这篇文章能让你了解如何使用 Checksec ,来识别一个可执行文件的安全属性,了解安全属性的含义,并知道如何使用它们。 + +![][0] + +编译源代码会生成一个二进制文件(LCTT 译注:即 `.o` 文件)。在编译期间,你可以向 `gcc` 编译器提供 标志 flags ,以启用或禁用二进制文件的某些属性,这些属性与安全性相关。 + +Checksec 是一个漂亮的小工具,同时它也是一个 shell 脚本。Checksec 可以识别编译时构建到二进制文件中的安全属性。编译器可能会默认启用一些安全属性,你也可以提供特定的标志,来启用其他的安全属性。 + +本文将介绍如何使用 Checksec ,来识别二进制文件的安全属性,包括: + + 1. Checksec 在查找有关安全属性的信息时,使用了什么**底层的命令** + 2. 在将源代码编译成二进制文件时,如何使用 GNU 编译器套件 GNU Compiler Collection (即 GCC)来**启用安全属性**。 + +### 安装 checksec + +要在 Fedora 和其他基于 RPM 的 Linux 系统上,安装 Checksec,请使用以下命令: + +``` +$ sudo dnf install checksec +``` + +对于基于 Debian 的 Linux 发行版,使用对应的 `apt` 命令,来安装 Checksec。 + +``` +$ sudo apt install checksec +``` + +### shell 脚本 + +在安装完 Checksec 后,能够发现 Checksec 是一个**单文件**的 shell 脚本,它位于 `/usr/bin/checksec`,并且这个文件挺大的。Checksec 的一个优点是你可以通过快速通读这个 shell 脚本,从而了解 Checksec 的执行原理、明白所有能查找有关二进制文件或可执行文件的安全属性的**系统命令**: + +``` +$ file /usr/bin/checksec +/usr/bin/checksec: Bourne-Again shell script, ASCII text executable, with very long lines + +$ wc -l /usr/bin/checksec +2111 /usr/bin/checksec +``` + +以下的命令展示了如何对你每天都会使用的:`ls` 命令的二进制文件运行 Checksec。Checksec 命令的格式是:`checksec --file=`,后面再跟上二进制文件的绝对路径: + +``` +$ checksec --file=/usr/bin/ls +RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH      Symbols         FORTIFY Fortified       Fortifiable     FILE +Full RELRO      Canary found      NX enabled    PIE enabled     No RPATH   No RUNPATH   No Symbols        Yes   5       17              /usr/bin/ls +``` + +当你在终端中对某个二进制文件运行 Checksec 时,你会看到安全属性有颜色上的区分,显示什么是好的安全属性(绿色),什么可能不是好的安全属性(红色)。我在这里说 **“可能”** 是因为即使有些安全属性是红色的,也不一定意味着这个二进制文件很糟糕,它可能只是表明发行版供应商在编译二进制文件时做了一些权衡,从而舍弃了部分安全属性。 + +Checksec 输出的第一行提供了二进制文件的各种安全属性,例如 `RELRO`、`STACK CANARY`、`NX` 等(我将在后文进行详细解释)。第二行打印出给定二进制文件(本例中为 `ls`)在这些安全属性的状态(例如,`NX enabled` 表示为堆栈中的数据没有执行权限)。 + +### 示例二进制文件 + +在本文中,我将使用以下的 “hello world” 程序作为示例二进制文件。 + +``` +#include + +int main() +{ + printf("Hello World\n"); + return 0; +} +  +``` + +请注意,在编译源文件 `hello.c` 的时候,我没有给 `gcc` 提供任何额外的标志: + +``` +$ gcc hello.c -o hello +  +$ file hello +hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=014b8966ba43e3ae47fab5acae051e208ec9074c, for GNU/Linux 3.2.0, not stripped + +$ ./hello +Hello World +``` + +使用 Checksec 运行二进制文件 `hello`,打印的某些安全属性的状态,与上面的 `ls` 二进制文件的结果不同(在你的屏幕上,某些属性可能显示为红色): + +``` +$ checksec --file=./hello +RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH      Symbols         FORTIFY Fortified       Fortifiable     FILE +Partial RELRO   No canary found   NX enabled    No PIE          No RPATH   No RUNPATH   85) Symbols       No    0       0./hello +$ +``` + +(LCTT 译注:在我的 Ubuntu 22.04 虚拟机,使用 11.3.0 版本的 `gcc`,结果与上述不太相同,利用默认参数进行编译,会得到 RELRO、PIE、NX 保护是全开的情况。) + +### 更改 Checksec 的输出格式 + +Checksec 允许自定义各种输出格式,你可以使用 `--output` 来自定义输出格式。我将选择的输出格式是 JSON 格式,并将输出结果通过管道传输到 `jq` 实用程序,来得到漂亮的打印。 + +接下来,确保你已安装好了 [jq][3],因为本教程会使用 `jq` 从 Checksec 的输出结果中,用 `grep` 来快速得到某一特定的安全属性状态,并报告该安全属性是否启动(启动为 `yes`,未启动为 `no`): + +``` +$ checksec --file=./hello --output=json | jq +{ +  "hello": { +    "relro": "partial", +    "canary": "no", +    "nx": "yes", +    "pie": "no", +    "rpath": "no", +    "runpath": "no", +    "symbols": "yes", +    "fortify_source": "no", +    "fortified": "0", +    "fortify-able": "0" +  } +} +``` + +### 看一看所有的安全属性 + +上面的二进制文件 `hello` 包括几个安全属性。我将该二进制文件与 `ls` 的二进制文件进行比较,以检查启用的安全属性有何不同,并解释 Checksec 是如何找到此信息。 + +#### 1、符号(Symbol) + +我先从简单的讲起。在编译期间,某些 符号 symbols 包含在二进制文件中,这些符号主要用作于调试。开发软件时,需要用到这些符号,来调试和修复错误。 + +这些符号通常会从供用户普遍使用的最终二进制文件中删除。删除这些符号不会影响到二进制文件的执行。删除符号通常是为了节省空间,因为一旦符号被删除了,二进制文件就会稍微小一些。在闭源或专有软件中,符号通常都会被删除,因为把这些符号放在二进制文件中,可以很容易地推断出软件的内部工作原理。 + +根据 Checksec 的结果,在二进制文件 `hello` 中有符号,但在 `ls` 的二进制文件中不会有符号。同样地,你还可以用 `file` 命令,来找到符号的信息,在二进制文件 `hello` 的输出结果的最后,看到 `not stripped`,表明二进制文件 `hello` 有符号: + +``` +$ checksec --file=/bin/ls --output=json | jq | grep symbols +    "symbols": "no", + +$ checksec --file=./hello --output=json | jq | grep symbols +    "symbols": "yes", + +$ file hello +hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=014b8966ba43e3ae47fab5acae051e208ec9074c, for GNU/Linux 3.2.0, not stripped +``` + +Checksec 是如何找到符号的信息呢?Checksec 提供了一个方便的 `--debug` 选项,来显示运行了哪些函数。因此,运行以下的命令,会显示在 shell 脚本中运行了哪些函数: + +``` +$ checksec --debug --file=./hello +``` + +在本教程中,我试图寻找 Checksec 查找安全属性信息时,使用了什么**底层命令**。由于 Checksec 是一个 shell 脚本,因此你始终可以使用 Bash 功能。以下的命令将输出从 shell 脚本中运行的每个命令: + +``` +$ bash -x /usr/bin/checksec --file=./hello +``` + +如果你滚动浏览上述的输出结果的话,你会看到 `echo_message` 后面有各个安全属性的类别。以下显示了 Checksec 检测二进制文件是否包含符号时,运行的底层命令: + +``` ++ readelf -W --symbols ./hello ++ grep -q '\\.symtab' ++ echo_message '\033[31m96) Symbols\t\033[m  ' Symbols, ' symbols="yes"' '"symbols":"yes",' +``` + +上面的输出显示,Checksec 利用 `readelf`,来读取二进制文件,并提供一个特殊 `--symbols` 标志,来列出二进制文件中的所有符号。然后它会查找一个特殊值:`.symtab`,它提供了所能找到的条目的计数(即符号的个数)。你可以在上面编译的测试二进制文件 `hello` 上,尝试以下命令,得到与 Checksec 查看二进制文件类似的符号信息: + +``` +$ readelf -W --symbols ./hello +$ readelf -W --symbols ./hello | grep -i symtab +``` + +(LCTT 译注:也可以通过直接查看 `/usr/bin/checksec` 下的 Checksec 源文件。) + +##### 如何删除符号 + +你可以在编译后或编译时删除符号。 + + * **编译后:** 在编译后,你可以使用 `strip`,手动地来删除二进制文件的符号。删除后,使用 `file` 命令,来检验是否还有符号,现在显示 `stripped`,表明二进制文件 `hello` 无符号了: + + ``` + $ gcc hello.c -o hello + $ + $ file hello + hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=322037496cf6a2029dcdcf68649a4ebc63780138, for GNU/Linux 3.2.0, not stripped + $ + $ strip hello + $ + $ file hello + hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=322037496cf6a2029dcdcf68649a4ebc63780138, for GNU/Linux 3.2.0, stripped + $ + ``` + * **编译时:** 你也可以在编译时,用 `-s` 参数让 gcc 编译器帮你自动地删除符号: + + ``` + $ gcc -s hello.c -o hello + $ + $ file hello + hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=247de82a8ad84e7d8f20751ce79ea9e0cf4bd263, for GNU/Linux 3.2.0, stripped + $ + ``` + + 重新运行 Checksec,你可以看到现在二进制文件 `hello` 的 `symbols` 这一属性的值是`no`: + + ``` + $ checksec --file=./hello --output=json | jq | grep symbols +     "symbols": "no", + $ + ``` + +#### 2、Canary(堆栈溢出哨兵) + +Canary 是放置在缓冲区和 stack 上的控制数据之间的已知值,它用于监视缓冲区是否溢出。当应用程序执行时,会为其分配两种内存,其中之一就是 _栈_。栈是一个具有两个操作的数据结构:第一个操作 `push`,将数据压入堆栈;第二个操作 `pop`,以后进先出的顺序从栈中弹出数据。恶意的输入可能会导致栈溢出,或使用特制的输入破坏栈,并导致程序崩溃: + +``` +$ checksec --file=/bin/ls --output=json | jq | grep canary +    "canary": "yes", +$ +$ checksec --file=./hello --output=json | jq | grep canary +    "canary": "no", +$ +``` + +Checksec 是如何确定二进制文件是否启用了 Canary 的呢?使用上述同样的方法,得到 Checksec 在检测二进制文件是否启用 Canary 时,运行的底层命令: + +``` +$ readelf -W -s ./hello | grep -E '__stack_chk_fail|__intel_security_cookie' +``` + +##### 启用 Canary + +为了防止栈溢出等情况,编译器提供了 `-stack-protector-all` 标志,它向二进制文件添加了额外的代码,来检查缓冲区是否溢出: + +``` +$ gcc -fstack-protector-all hello.c -o hello + +$ checksec --file=./hello --output=json | jq | grep canary +    "canary": "yes", +``` + +Checksec 显示 Canary 属性现已启用。你还可以通过以下方式,来验证这一点: + +``` +$ readelf -W -s ./hello | grep -E '__stack_chk_fail|__intel_security_cookie' +     2: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __stack_chk_fail@GLIBC_2.4 (3) +    83: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __stack_chk_fail@@GLIBC_2.4 +$ +``` + +#### 3、位置无关可执行文件(PIE) + +位置无关可执行文件Position-Independent Executable(PIE),顾名思义,它指的是放置在内存中某处执行的代码,不管其绝对地址的位置,即代码段、数据段地址随机化(ASLR): + +``` +$ checksec --file=/bin/ls --output=json | jq | grep pie +    "pie": "yes", + +$ checksec --file=./hello --output=json | jq | grep pie +    "pie": "no", +``` + +通常,PIE 仅对 libraries 启用,并不对独立命令行程序启用 PIE。在下面的输出中,`hello` 显示为 `LSB executable`,而 `libc` 标准库(`.so`) 文件被标记为 `LSB shared object`: + +``` +$ file hello +hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=014b8966ba43e3ae47fab5acae051e208ec9074c, for GNU/Linux 3.2.0, not stripped + +$ file /lib64/libc-2.32.so +/lib64/libc-2.32.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=4a7fb374097fb927fb93d35ef98ba89262d0c4a4, for GNU/Linux 3.2.0, not stripped +``` + +Checksec 查找是否启用 PIE 的底层命令如下: + +``` +$ readelf -W -h ./hello | grep EXEC +  Type:                              EXEC (Executable file) +``` + +如果你在共享库上尝试相同的命令,你将看到 `DYN`,而不是 `EXEC`: + +``` +$ readelf -W -h /lib64/libc-2.32.so | grep DYN +  Type:                              DYN (Shared object file) +``` + +##### 启用 PIE + +要在测试程序 `hello.c` 上启用 PIE,请在编译时,使用以下命令: + +``` +$ gcc -pie -fpie hello.c -o hello` +``` + +你可以使用 Checksec,来验证 PIE 是否已启用: + +``` +$ checksec --file=./hello --output=json | jq | grep pie +    "pie": "yes", +$ +``` + +现在,应该会显示为 “ PIE 可执行 pie executable ”,其类型从 `EXEC` 更改为 `DYN`: + +``` +$ file hello +hello: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=bb039adf2530d97e02f534a94f0f668cd540f940, for GNU/Linux 3.2.0, not stripped + +$ readelf -W -h ./hello | grep DYN +  Type:                              DYN (Shared object file) +``` + +#### 4、NX(堆栈禁止执行) + +NX 代表 不可执行 non-executable 。它通常在 CPU 层面上启用,因此启用 NX 的操作系统可以将某些内存区域标记为不可执行。通常,缓冲区溢出漏洞将恶意代码放在堆栈上,然后尝试执行它。但是,让堆栈这些可写区域变得不可执行,可以防止这种攻击。在使用 `gcc` 对源程序进行编译时,默认启用此安全属性: + +``` +$ checksec --file=/bin/ls --output=json | jq | grep nx +    "nx": "yes", + +$ checksec --file=./hello --output=json | jq | grep nx +    "nx": "yes", +``` + +Checksec 使用以下底层命令,来确定是否启用了 NX。在尾部的 `RW` 表示堆栈是可读可写的;因为没有 `E`,所以堆栈是不可执行的: + +``` +$ readelf -W -l ./hello | grep GNU_STACK +  GNU_STACK      0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW  0x10 +``` + +##### 演示如何禁用 NX + +我们不建议禁用 NX,但你可以在编译程序时,使用 `-z execstack` 参数,来禁用 NX: + +``` +$ gcc -z execstack hello.c -o hello + +$ checksec --file=./hello --output=json | jq | grep nx +    "nx": "no", +``` + +编译后,堆栈会变为可读可写可执行(`RWE`),允许在堆栈上的恶意代码执行: + +``` +$ readelf -W -l ./hello | grep GNU_STACK +  GNU_STACK      0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RWE 0x10 +``` + +#### 5、RELRO(GOT 写保护) + +RELRO 代表 “重定位只读 Relocation Read-Only ”。可执行链接格式(ELF)二进制文件使用全局偏移表(GOT)来动态地解析函数。启用 RELRO 后,会设置二进制文件中的 GOT 表为只读,从而防止重定位攻击: + +``` +$ checksec --file=/bin/ls --output=json | jq | grep relro +    "relro": "full", + +$ checksec --file=./hello --output=json | jq | grep relro +    "relro": "partial", +``` + +Checksec 使用以下底层命令,来查找是否启用 RELRO。在二进制文件 `hello` 仅启用了 RELRO 属性中的一个属性,因此,在 Checksec 验证时,显示 `partial`: + +``` +$ readelf -W -l ./hello | grep GNU_RELRO +  GNU_RELRO      0x002e10 0x0000000000403e10 0x0000000000403e10 0x0001f0 0x0001f0 R   0x1 + +$ readelf -W -d ./hello | grep BIND_NOW +``` + +##### 启用全 RELRO + +要启用全 RELRO,请在 `gcc` 编译时,使用以下命令行参数: + +``` +$ gcc -Wl,-z,relro,-z,now hello.c -o hello + +$ checksec --file=./hello --output=json | jq | grep relro +    "relro": "full", +``` + +现在, RELRO 中的第二个属性也被启用,使程序变成全 RELRO: + +``` +$ readelf -W -l ./hello | grep GNU_RELRO +  GNU_RELRO      0x002dd0 0x0000000000403dd0 0x0000000000403dd0 0x000230 0x000230 R   0x1 + +$ readelf -W -d ./hello | grep BIND_NOW + 0x0000000000000018 (BIND_NOW)       +``` + +#### 6、Fortify + +Fortify 是另一个安全属性,但它超出了本文的范围。Checksec 是如何在二进制文件中验证 Fortify,以及如何在 `gcc` 编译时启用 Fortify,作为你需要解决的课后练习。 + +``` +$ checksec --file=/bin/ls --output=json | jq  | grep -i forti +    "fortify_source": "yes", +    "fortified": "5", +    "fortify-able": "17" + +$ checksec --file=./hello --output=json | jq  | grep -i forti +    "fortify_source": "no", +    "fortified": "0", +    "fortify-able": "0" +``` + +### 其他的 Checksec 功能 + +关于安全性的话题是永无止境的,不可能在本文涵盖所有关于安全性的内容,但我还想提一下 Checksec 命令的一些其他功能,这些功能也很好用。 + +#### 对多个二进制文件运行 Checksec + +你不必对每个二进制文件都进行一次 Checksec。相反,你可以提供多个二进制文件所在的目录路径,Checksec 将一次性为你验证所有文件: + +``` +$ checksec --dir=/usr +``` + +#### 对进程运行 Checksec + +Checksec 除了能检查二进制文件的安全属性,Checksec 还能对程序起作用。以下的命令用于查找你系统上所有正在运行的程序的安全属性。如果你希望 Checksec 检查所有正在运行的进程,可以使用 `--proc-all`,或者你也可以使用进程名称,选择特定的进程进行检查: + +``` +$ checksec --proc-all + +$ checksec --proc=bash +``` + +#### 对内核运行 Checksec + +除了本文介绍的用 Checksec 检查用户态应用程序的安全属性之外,你还可以使用它来检查系统内置的 内核属性 kernel properties : + +``` +$ checksec --kernel +``` + +### 快来试一试 Checksec 吧 + +Checksec 是一个能了解哪些用户空间和内核的安全属性被启用的好方法。现在,你就可以开始使用 Checksec,来了解每个安全属性是什么,并明白启用每个安全属性的原因,以及它能阻止的攻击类型。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/21/6/linux-checksec + +作者:[Gaurav Kamathe][a] +选题:[lujun9972][b] +译者:[chai001125](https://github.com/chai001125) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/gkamathe +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/lead-images/target-security.png +[2]: http://www.opengroup.org/onlinepubs/009695399/functions/printf.html +[3]: https://stedolan.github.io/jq/download/ +[0]: https://img.linux.net.cn/data/attachment/album/202211/18/095702dzvm482460vnrv6y.jpg \ No newline at end of file diff --git a/published/202211/20210618 5 more reasons to run Kubernetes in your Linux homelab.md b/published/202211/20210618 5 more reasons to run Kubernetes in your Linux homelab.md new file mode 100644 index 0000000000..92af1e9e3a --- /dev/null +++ b/published/202211/20210618 5 more reasons to run Kubernetes in your Linux homelab.md @@ -0,0 +1,100 @@ +[#]: subject: (5 more reasons to run Kubernetes in your Linux homelab) +[#]: via: (https://opensource.com/article/21/6/kubernetes-linux-homelab) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) +[#]: collector: (lujun9972) +[#]: translator: (chai001125) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-15278-1.html) + +在你的 Linux 家庭实验室上运行 Kubernetes 的 5 个理由 +====== + +> Kubernetes 的优势不仅在于它能够做什么,还在于知道它能为你做什么。 + +![][0] + +在 [树莓派家庭实验室上运行 Kubernetes 的 5 个理由][2] 这篇文章中,我解释了为什么推荐在家里使用 Kubernetes。其中的理由相对来说会有点随意,并且主要于关注结果。除了 Kubernetes 好用的功能之外,还有其他几个应将 Kubernetes 包含在你自己的计算机的理由。 + +(LCTT 译注:家庭实验室Homelab 指的是安置在你家里的一个服务器或者多服务器的组合配置。在之上托管了多个服务和虚拟系统,以此来进行测试、开发,或者提供家庭功能用途。) + +### 1、Kubernetes 是基于 Linux 而建立的 + +![T-shirt reading "Containers are Linux"][3] + +Kubernetes 有很高的知名度。对于一些人来说,Kubernetes 是一种神秘技术,有一个不好念的名字;而对另一些人来说,Kubernetes 就好像是牧羊犬放牧羊群一样,可以帮助他们管理过多的容器;对于其它人来说,Kubernetes 是一种 cloud 的操作系统,是 实效云开发 effective cloud development 的一个有用的界面;对于大多数人来说,Kubernetes 可能是他们从未听说过的后端软件。正如人们所想的那样,Kubernetes 具有所有这些能力,甚至有更多的功能。 + +并非每个人都以相同的方式使用 Kubernetes,但如果你主要的工作是系统管理,你会发现 Kubernetes _只是又一个 Linux 命令_。 + +我有一件 T 恤,上面写着 “容器就是 Linux Containers are Linux ”,它的意思是显而易见的。容器技术使用 cgroup,来运行包含一个或一组应用程序的最小 Linux 操作系统镜像。当你运行容器时,实际上你就是在运行 Linux。虽然 Kubernetes 能在许多平台上使用,但 Kubernetes 管理的是 Linux 容器。当你通过终端与 Kubernetes 交互时,就像是使用 Linux:有命令、选项、参数和语法。运行 Kubernetes 的 `kubeadm` 或(在 OKD 或 OpenShift 上)运行 `oc` 命令,你会感觉到很熟悉,是因为它们的工作方式与你习惯使用的任何其他 Linux 命令一样。开始时看似陌生的东西很快就会变得自然,任何有兴趣在终端上花时间的 Linux 用户都可以在 Kubernetes 中探索到许多有趣的东西。 + +### 2、Kubernetes 很灵活 + +在过去,Kubernetes 有点死板,因为从本质上来说,它仅能支持一个 容器运行时 container runtime 。这个规定非常严格,以至于今天需要一个 硬编码的垫片 hardcoded shim ,才能绕过这个遗留问题。幸运的是,如今 Kubernetes 已经变得足够灵活,可以满足管理员的许多不同需求了。[Podman][5] 和 [CRI-O][6] 可用作于容器引擎,它们都可以与 [systemd][7] 集成(这是因为 Kubernetes 的底层都是 Linux)。你可以自己选择 Kubernetes 所使用的文件系统、集群大小和构造、监控工具、镜像、编程语言等等配置。甚至现在有些人说 Kubernetes 有 _太多_ 的选择了。 + +### 3、学习 Kubernetes 有助于个人发展 + +容器是一个硕果累累的事物,它们会快速地成倍增长,这就是它的设计。容器旨在扩展,它们通过生成克隆来扩展。将容器分组(称为 “容器荚pod”),并自动管理容器荚的生命周期,这就是 Kubernetes 运用的方式。它正在改变服务器的运行方式。 + +你可能不需要无限扩展的容器集合,也不需要任何东西来帮助你管理正运行的一或两个容器。但是,如果你希望受益于处理容器荚的能力,那么 Kubernetes 正是你需要学习的工具。随着越来越多的公司和组织走向全球,拥抱 [数字化转型][8],Kubernetes 正在成为 IT 领域的必备技能。如果你想要在这个领域中发展,那么现在开始学习 Kubernetes 并熟悉它的常见问题及其解决方案,将会是一项很好的投资。 + +### 4、Kubernetes 让容器更有意义 + +你可能还记得几年前,当开源项目刚开始将它们的代码作为容器镜像分发时,对于许多人来说,容器这一概念是令人费解的:没有多少系统管理员真正理解 [容器是什么][9],或者明白容器的边界在哪里、如何进入容器,以及为什么数据不能存在于容器内。 + +现在,IT 界(包括开发人员在内)都对容器的概念都十分熟悉了。对于现代的 [CI/CD 工作流程][10] 来说,交付给容器十分有意义。不过,对于系统管理员来说,容器的优势如下:安装容器(理论上)比等待发行版更新其软件包更为容易,而且容器可以扩展。然而,在你使用 Kubernetes 之前,你很可能都不会真正地感受到这些好处。当你开始使用 Kubernetes 和相关工具管理容器之前,持续交付容器的好处和容器的扩展能力可能只是你从文章里面读过的想法。将容器集成到你管理服务器的方式中,你会突然明白 Kubernetes 中令人兴奋的是什么。 + +![Apache JMeter][11] + +你可以试试看这个最基本的测试:只需在容器中启动你最喜欢的 Web 服务器,创建一个容器荚,然后使用来自 [Apache JMeter][12] 的流量访问你的服务器,然后观察容器响应。 + +### 5、Kubernetes 是云原生的 + +如果你主要做的是软件开发,而不是系统管理,那么 Kubernetes 也是 网页应用程序 web apps 的一个很好的平台。我们现在都在使用网页应用程序,尽管大多数人只是将它们视为 “网站 website ”。网络拥有庞大的用户群,因此通过浏览器提供开源的应用程序是非常有意义的。有一些很棒的开源应用程序在网络上运行,其中许多的应用程序都以容器的形式分发的,它们可以支持简单的安装和持续的用户体验。 + +### Kubernetes 的其他优势:Kubernetes 很有意思 + +你还记得你还是 Linux 新手的时候吗?对于一些人来说,那可能是几十年前的事了,而对于其他人来说,可能是不久的过去。不过,对于所有人来说,学习一项新事物会是一个有趣的挑战。如果你达到了认为 “Linux 的安装与其说是一个挑战,不如说是一个麻烦” 的程度,那么你可以尝试一下构建一个 Kubernetes 集群。它会让你回忆起你忘记的各种概念:如何修改纯文本(特别是 [YAML][13] 格式的)配置文件,如何配置网络接口和网络,如何路由流量,知道一个后端相对于另一个后端的优缺点,在 `--dry-run` 测试之后运行 `--dry-run` 测试,试探性地按回车键来确定你是否做对了。老实说,使用 Kubernetes 很有趣。 + +如果你想构建自己的基础架构,没有什么比构建你自己的 Kubernetes 集群更好的了。Kubernetes 集群将会为你打开一个全新的世界。你很快就会成为一名云架构师,学会完善你的开放云,在容器中安装令人惊叹的开源 Web 应用程序,也能为你的家人和朋友提供访问权限。 + +你自己就能得到解决方案。这真是太棒啦。 + +### 快来试试看 Kubernetes 吧 + +对 Kubernetes 的初学者来说,Kubernetes 似乎很难快速上手,因为 Kubernetes 是一个新的工具,会让你感到有点害怕,而且它还需要云服务。但是,以下有几种方法可以让你开始 Kubernetes 体验。 + +首先,安装 [Minikube][14] 或 [Minishift][14]。这两个工具都允许你在自己的计算机上运行 Kubernetes 的本地实例。虽然这种方式比不上“构建一个集群并与你的朋友共享”那么令人满意,但它是一种让你熟悉 Kubernetes 环境、命令和工具包的很好且安全的方式。 + +当你准备进一步研究 Kubernetes 后,请进一步阅读 Chris Collins 的《[使用树莓派构建 Kubernetes 集群][15]》 的文章。之后,再下载我们的免费电子书 《[在你树莓派家庭实验室上运行 Kubernetes][16]》。在不知不觉中,你会发现自己也明白了“容器就是 Linux”的含义。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/21/6/kubernetes-linux-homelab + +作者:[Seth Kenlon][a] +选题:[lujun9972][b] +译者:[chai001125](https://github.com/chai001125) +校对:[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/wfh_work_home_laptop_work.png?itok=VFwToeMy (Working from home at a laptop) +[2]: https://opensource.com/article/20/8/kubernetes-raspberry-pi +[3]: https://opensource.com/sites/default/files/uploads/containers-are-linux.jpg (T-shirt reading "Containers are Linux") +[4]: https://creativecommons.org/licenses/by-sa/4.0/ +[5]: http://podman.io +[6]: http://cri-o.io +[7]: https://opensource.com/article/21/5/systemd +[8]: https://enterprisersproject.com/what-is-digital-transformation +[9]: https://opensource.com/article/18/11/behind-scenes-linux-containers +[10]: https://opensource.com/article/18/8/what-cicd +[11]: https://opensource.com/sites/default/files/uploads/jmeter.png (Apache JMeter) +[12]: https://jmeter.apache.org +[13]: https://www.redhat.com/sysadmin/yaml-beginners +[14]: https://opensource.com/article/18/10/getting-started-minikube +[15]: https://opensource.com/article/20/6/kubernetes-raspberry-pi +[16]: https://opensource.com/downloads/kubernetes-raspberry-pi +[0]: https://img.linux.net.cn/data/attachment/album/202211/22/000124imal02j2yollqbqj.jpg \ No newline at end of file diff --git a/published/202211/20210623 Parsing config files with Lua.md b/published/202211/20210623 Parsing config files with Lua.md new file mode 100644 index 0000000000..81149510af --- /dev/null +++ b/published/202211/20210623 Parsing config files with Lua.md @@ -0,0 +1,220 @@ +[#]: subject: (Parsing config files with Lua) +[#]: via: (https://opensource.com/article/21/6/parsing-config-files-lua) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) +[#]: collector: (lujun9972) +[#]: translator: (hadisi1993) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-15235-1.html) + +使用 Lua 解析配置文件 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/10/084609uq6vvp1vjzqzpc9k.jpg) + +> 使用 Lua 配置持久化应用设置。 + +不是所有的应用都需要配置文件;对很多应用来说,在启动时变得焕然一新对它们更有利。例如,简单的工具就极少需要偏好项和设置在使用过程中保持稳定不变。然而,当你编写一个复杂的应用程序时,如果能让用户设置与应用的交互方式,以及应用与系统交互的方式会很不错。这就是配置文件用来做的事情。本文将讨论一些利用 Lua 进行持久化配置的方法。 + +### 选择一种格式 + +关于配置文件很重要的两点是一致性和可预见性。你不会希望为了保存用户偏好项,将信息转储到文件中,然后再花几天去编码实现“逆向工程”,处理最后出现在文件里的随机信息。 + +这里用一些常用的 [配置文件格式][2]。Lua 有一些库可以处理大多数常用的配置格式;在本文中,我会采用 INI 格式。 + +### 安装库 + +Lua 库的核心仓库是 [Luarocks.org][3]。你可以在这个网站搜索库,或者你可以安装并使用 `luarocks` 终端命令。 + +Linux 环境中,你可以从发行版的软件仓库中下载它,例如: + +``` +$ sudo dnf install luarocks +``` + +在 macOS 上,请使用 [MacPorts][4] 或者 [Homebrew][5]。在 Windows 上,请使用 [Chocolatey][6]。 + +`luarocks` 安装后,你可以使用 `search` 子命令来搜索一个恰当的库。如果你不知道库的名字,可以通过关键词来搜索这个库,例如 `ini`、xml` 或者 `json`,这取决于你想要用这个库做什么。打个比方,你可以搜索 `inifile`, 这个库被我用来解析 INI 格式的文本文件。 + +``` +$ luarocks search inifile +Search results: +inifile + 1.0-2 (rockspec) - https://luarocks.org + 1.0-2 (src) - https://luarocks.org + 1.0-1 (rockspec) - https://luarocks.org + [...] +``` + +一个开发者容易犯的错误是在系统上安装了这个库却忘了把它和应用打包。这会给没有安装这个库的用户带来麻烦。为了防止这个问题发生,可以使用 `--tree` 选项将它安装在项目的本地文件夹中。如果你没有这个项目文件夹,那就先创建这个文件夹再安装库: + +``` +$ mkdir demo +$ cd demo +$ luarocks install --tree=local inifile +``` + +`--tree` 选项指示 `luarocks` 创建一个新文件夹并在其中安装你的库,例如这个例子中的 `local` 文件夹。 使用这个简单的技巧,你可以将所有你项目要使用的依赖项直接安装到项目文件夹中。 + +### 配置代码 + +首先,在一个名 `myconfig.ini` 的文件中创建一些 INI 数据。 + +``` +[example] +name=Tux +species=penguin +enabled=false + +[demo] +name=Beastie +species=demon +enabled=false +``` + +将这个文件保存到你的主目录下,命名为 `myconfig.ini`, _不要_ 存到项目文件夹下。你通常会希望配置文件独立于你的文件存在,这样当用户卸载你的应用时,使用应用时产生的数据可以保存在系统中。有些用户会删除不重要的配置文件,但大多数不会。最终,如果他们要重装这个应用,还会保留着所有的用户偏好项。 + +配置文件的位置以技术来说并不重要,但每一个操作系统都有存储它们的特定或者默认的路径。在 Linux 中,这个路径由 [Freedesktop 规范][7] 指定。它规定配置文件被保存在一个名为 `~/.config` 的隐藏文件夹中。为了操作时更加清晰明确,可以在主目录下存储配置文件,以便于使用和寻找。 + +创建第二个文件,命名为 `main.lua`,并在你喜欢的文本编辑器中打开它。 + +首先,你必须告诉 Lua 你将想要使用的附加库放置在哪里。`package.path` 变量决定了 Lua 到哪里去寻找这些库。你可以从终端中查看 Lua 默认的包地址: + +``` +$ Lua +> print(package.path) +./?.lua;/usr/share/lua/5.3/?.lua;/usr/share/lua/5.3/?/init.lua;/usr/lib64/lua/5.3/?.lua;/usr/lib64/lua/5.3/?/init.lua +``` + +在你的 Lua 代码中,将你本地库的路径添加到 `package.path` 中: + +``` +package.path = package.path .. ';local/share/lua/5.3/?.lua +``` + +### 使用 Lua 解析 INI 文件 + +当包的位置确定以后,下一件事就是引入 `inifile` 库并处理一些操作系统逻辑。即使这是一个很简单的应用,代码也需要从操作系统获取到用户主目录的路径,并建立在必要时将文件系统路径返回给操作系统的通信方式。 + +``` +package.path = package.path .. ';local/share/lua/5.3/?.lua +inifile = require('inifile') + +-- find home directory +home = os.getenv('HOME') + +-- detect path separator +-- returns '/' for Linux and Mac +-- and '\' for Windows +d = package.config:sub(1,1) +``` + +现在你可使用 `inifile` 来从配置文件解析数据到 Lua 表中。一旦这些数据被导入进表中,你可以像查询其他的 Lua 表一样查询它。 + +``` +-- parse the INI file and +-- put values into a table called conf +conf = inifile.parse(home .. d .. 'myconfig.ini') + +-- print the data for review +print(conf['example']['name']) +print(conf['example']['species']) +print(conf['example']['enabled']) +``` + +在终端中运行代码可以看见结果: + +``` +$ lua ./main.lua +Tux +penguin +false +``` + +这看起来是正确的。试试在 `demo` 块中执行同样的操作。 + +### 使用 INI 格式存储数据 + +不是所有用来解析的库都会读写数据(通常被称为 _编码 和 _解码_),但是 `inifile` 会这样做。这意味着你可以使用它对配置文件进行修改。 + +为了改变配置文件中的值,你可以对被解析的表中的变量进行设置,然后把表重写回配置文件中。 + +``` +-- set enabled to true +conf['example']['enabled'] = true +conf['demo']['enabled'] = true + +-- save the change +inifile.save(home .. d .. 'myconfig.ini', conf) +``` + +现在再来看看配置文件: + +``` +$ cat ~/myconfig.ini +[example] +name=Tux +species=penguin +enabled=true + +[demo] +name=Beastie +species=demon +enabled=true +``` + +### 配置文件 + +按照用户的设想来存储数据对程序来说是至关重要的。幸运的是,这对工程师来说是一个很常规的任务,大多数工作可能早已被完成了。只要找到一个好用的库完成开放格式下编码和解码,你就能为用户提供一致且持续的体验。 + +以下是完整的演示代码,可供参考。 + +``` +package.path = package.path .. ';local/share/lua/5.3/?.lua' +inifile = require('inifile') + +-- find home directory +home = os.getenv('HOME') + +-- detect path separator +-- returns '/' for Linux and Mac +-- and '\' for Windows +d = package.config:sub(1,1) + +-- parse the INI file and +-- put values into a table called conf +conf = inifile.parse(home .. d .. 'myconfig.ini') + +-- print the data for review +print(conf['example']['name']) +print(conf['example']['species']) +print(conf['example']['enabled']) + +-- enable Tux +conf['example']['enabled'] = true + +-- save the change +inifile.save(home .. d .. 'myconfig.ini', conf) +``` + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/21/6/parsing-config-files-lua + +作者:[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/OSDC_women_computing_2.png?itok=JPlR5aCA (坐在电脑前的女人) +[2]: https://opensource.com/article/21/6/config-files-and-their-formats +[3]: https://opensource.com/article/19/11/getting-started-luarocks +[4]: https://opensource.com/article/20/11/macports +[5]: https://opensource.com/article/20/6/homebrew-mac +[6]: https://opensource.com/article/20/3/chocolatey +[7]: https://www.freedesktop.org/wiki/Specifications +[8]: http://www.opengroup.org/onlinepubs/009695399/functions/getenv.html diff --git a/published/202211/20210805 Installing Packages From External Repositories in Ubuntu -Explained.md b/published/202211/20210805 Installing Packages From External Repositories in Ubuntu -Explained.md new file mode 100644 index 0000000000..a0667bb2a2 --- /dev/null +++ b/published/202211/20210805 Installing Packages From External Repositories in Ubuntu -Explained.md @@ -0,0 +1,190 @@ +[#]: subject: "Installing Packages From External Repositories in Ubuntu [Explained]" +[#]: via: "https://itsfoss.com/adding-external-repositories-ubuntu/" +[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/" +[#]: collector: "lujun9972" +[#]: translator: "nophDog" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15299-1.html" + +详解在 Ubuntu 从外部存储库安装软件包 +====== + +![][0] + +你大概知道怎么在 Ubuntu 中使用 `apt` 命令安装软件包。那些软件包都是来自 Ubuntu 的官方存储库。 + +那第三方或者外部存储库呢?不,我这里并不是要讲 PPA。 + +早晚你会碰到那种至少四行的安装说明:你需要安装名为 `apt-transport-https` 的包、操作一下 GPG 和 源列表source list 之后,你才能正常安装软件包。 + +没有什么印象的话,那我分享一个 [在 Ubuntu 上安装最新版本的 Yarn][1] 的例子: + +``` +sudo apt install apt-transport-https curl +curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - +sudo sh -c 'echo "deb https://dl.yarnpkg.com/debian/ stable main" >> /etc/apt/sources.list.d/yarn.list' +sudo apt update && sudo apt install yarn +``` + +当你需要直接从开发者那里安装编程工具的时候,大概率会碰到这种安装方式。 + +许多人只是按照说明进行操作,并不会去思考其中的原理。这也没什么不对,但了解该过程实际上可以提升你在这方面的知识,而且有助于之后排除故障。 + +我来解释一下这些代码背后的逻辑。 + +### 理解从外部存储库安装的过程 + +在你继续往下阅读之前,我强烈建议你先看看下面这两篇文章,方便理解后续的概念: + + * [什么是 Ubuntu 中的存储库][2] + * [什么是 Ubuntu 中 PPA][3] + +为了让你有点印象,这里有一张软件包存储库和 [Linux 中的包管理器][4] 的图片。 + +![Illustration of repository and package manager][5] + +整件事情其实就是在系统中添加一个新的外部存储库。这样,你就可以从这个新存储库下载并安装可用的软件包。如果这个存储库提供了包版本的更新,你可以在更新系统的同时更新这些软件包(`apt update && apt upgrade`)。 + +那么,这是什么工作原理呢?让我们一条一条地过一遍。 + +#### 第 1 部分:为 apt 获取 HTTPS 支持 + +第一行是这样的: + +``` +sudo apt install apt-transport-https curl +``` + +`curl` 是一个 [Linux 终端下载文件的工具][6]。这里主要的部分是安装 `apt-transport-https`,但事实上已经不需要了。 + +明白了吗?这个 `apt-transport-https` 包让你的系统通过 HTTPS 协议安全访问存储库。按照设计,Ubuntu 的存储库使用 http 而不是 https 协议。 + +看看下面的截图。 https 这张图是我已经添加到系统中的外部存储库。Ubuntu 的存储库和 PPA 使用 http 协议。 + +![][7] + +在旧版本的 `apt` 包管理器中,不支持 https 协议。`apt-transport-https` 包为 `apt` 添加了 https 支持。要新增一个使用 https 的存储库,首先就得先安装此包。 + +我之前不是说不需要安装这个包了吗?是的,因为较新版本的 `apt`(高于 1.5)已经支持 https,所以你不需要再安装 `apt-transport-https`。 + +但是你依然看到我在说明中提到了这个包。这更多是出于遗留原因,而且可能还有很旧的发行版在使用旧版本的 `apt` 包。 + +现在,你可能想知道既然 https 是安全协议,那为什么 Ubuntu 的存储库还要使用 http 而不是 https。这难道没有安全风险吗?接着往下看你就知道答案了。 + +#### 第 2 部分:添加远程存储库的 GPG 密钥 + +Linux 存储库内置了基于 GPG 密钥的安全机制。每个存储库都将其 GPG 公钥添加到你的系统信任密钥中。来自存储库的包由这个 GPG 密钥“签名signed”,并且通过这份存储的公钥,系统能够验证软件包正是来自这个存储库。 + +如果 [密钥之间不匹配,你的系统会发出提醒][8],而不会继续从该存储库安装或者更新软件包。 + +到目前为止,一切都很顺利。下一步是将外部存储库的 GPG 公钥添加到你的 Linux 系统,以便它能接收来自该存储库的软件包。 + +``` +curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - +``` + +在上面的命令中,你使用 `curl` 从指定的 URL 下载 GPG 密钥。选项 `-sS` 能够让你不看多余的输出(静默模式),但会显示错误(如果有的话)。最后一个 `-` 告诉 `apt-key` 使用标准输入stdin而不是文件(在本例中是 `curl` 命令的输出)。 + +`apt-key add` 命令已经将下载的密钥添加到系统中。 + +你可以通过 `apt-key list` 命令查看系统中各种存储库添加的 GPG 密钥。 + +![List GPG keys][9] + +这是将 GPG 密钥添加到系统的一种方法。你会看到一些其它的命令,看起来略有不同,但效果一样,都是将存储库的公钥添加到你的系统里面。 + +``` +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 +``` + +你会注意到 `apt-key` 已被弃用的警告。在 Ubuntu 22.04 之前,你还可以使用 `apt-key` 命令,但它最终会被删除。现在不需要杞人忧天。 + +#### 第 3 部分:将外部存储库添加到源列表 + +下个命令是在系统的源列表中添加一个新条目。这样,你的系统就会知道它得检查该存储库中的包和更新。 + +``` +sudo sh -c 'echo "deb https://dl.yarnpkg.com/debian/ stable main" >> /etc/apt/sources.list.d/yarn.list' +``` + +有一个文件 `/etc/apt/sources.list` 包含 Ubuntu 存储库的详细信息。最好不要随便动这个文件。所有新增的存储库都应放在 `/etc/apt/sources.list.d` 目录中相应的文件里(约定以 `.list` 结尾)。 + +![External repository should have their own sources list file in the /etc/apt/sources.list.d directory][10] + +这使得包管理变得更容易。如果你要从系统中删除一个存储库,只需删除相应的源文件即可。无需修改主 `sources.list` 文件。 + +让我们再仔细地看一下这行命令。 + +``` +sudo sh -c 'echo "deb https://dl.yarnpkg.com/debian/ stable main" >> /etc/apt/sources.list.d/yarn.list' +``` + +使用 `sh` 可以在一个新的 shell 进程中运行命令,而不是 [子 shel​​l][11]。 `-c` 选项告诉 `sh` 命令从参数而不是标准输入读取命令。然后它运行 `echo` 命令,也就是把 `deb https://dl.yarnpkg.com/debian/ stable main` 这一行添加到 `/etc/apt/sources.list.d/yarn.list` 文件(会创建该文件)。 + +现在,你可以通过各种方法在指定目录中创建 `.list` 文件并在其中添加包含存储库详细信息的数据行。你也可以像这样使用: + +``` +echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list +``` + +明白了吧? + +#### 第 4 部分:从新添加的存储库安装应用程序 + +到目前为止,你已经将存储库的 GPG 密钥和存储库的 URL 添加到系统中。 + +但是系统仍然不晓得这个新存储库中有哪些可用的包。这就是为什么你需要先使用下面这个命令更新包元数据的本地缓存: + +``` +sudo apt update +``` + +这时你的系统就已经知道新增存储库中可用软件包的信息,现在可以试试安装软件包: + +``` +sudo apt install yarn +``` + +为了节省时间,你可以在 [同一行挨着运行这两个命令][12]e。 + +``` +sudo apt update && sudo apt install yarn +``` + +`&&` 可以确保第二个命令只会在前一个命令没有任何报错的前提下运行。 + +整个流程就是这样。 + +#### 有没有豁然开朗呢,还是一脸懵逼? + +我已经解释了在 Ubuntu 中使用外部存储库背后的逻辑。希望你现在能更好地理解它,当然可能还有很多细节会让你困惑。 + +如果你还不清楚或者还有其他问题,可以联系我。如果你发现了技术上的纰漏,记得在评论区告诉我。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/adding-external-repositories-ubuntu/ + +作者:[Abhishek Prakash][a] +选题:[lujun9972][b] +译者:[nophDog](https://github.com/nophDog) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/abhishek/ +[b]: https://github.com/lujun9972 +[1]: https://itsfoss.com/install-yarn-ubuntu/ +[2]: https://itsfoss.com/ubuntu-repositories/ +[3]: https://itsfoss.com/ppa-guide/#comments +[4]: https://itsfoss.com/package-manager/ +[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/10/linux-package-manager-explanation.png?resize=800%2C450&ssl=1 +[6]: https://itsfoss.com/download-files-from-linux-terminal/ +[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/08/apt-update-http-https.png?resize=800%2C527&ssl=1 +[8]: https://itsfoss.com/solve-gpg-error-signatures-verified-ubuntu/ +[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/07/list-apt-key-gpg-ubuntu.png?resize=800%2C547&ssl=1 +[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/08/sources-list-ubuntu.png?resize=800%2C313&ssl=1 +[11]: https://linuxhandbook.com/subshell/ +[12]: https://itsfoss.com/run-multiple-commands-linux/ +[0]: https://img.linux.net.cn/data/attachment/album/202211/29/154339id0xb2exw0c8y222.jpg \ No newline at end of file diff --git a/published/202211/20210811 My top 5 tips for setting up Terraform.md b/published/202211/20210811 My top 5 tips for setting up Terraform.md new file mode 100644 index 0000000000..0b109a9db6 --- /dev/null +++ b/published/202211/20210811 My top 5 tips for setting up Terraform.md @@ -0,0 +1,77 @@ +[#]: subject: "My top 5 tips for setting up Terraform" +[#]: via: "https://opensource.com/article/21/8/terraform-tips" +[#]: author: "Ayush Sharma https://opensource.com/users/ayushsharma" +[#]: collector: "lujun9972" +[#]: translator: "cool-summer-021" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15206-1.html" + +关于配置 Terraform 的五条建议 +====== + +> 本文介绍我使用 Terraform 五年之后吸取到的经验。 + +![](https://img.linux.net.cn/data/attachment/album/202211/02/220728ngg0kzjg0rldu0l7.jpg) + +使用 Terraform 五年的经历让我吸取到一些重要经验。无论团队大小、项目性质,有五条要点对于配置合乎逻辑且可用的 Terraform 平台至关重要。 + +### 1、了解你的目标受众 + +这一点似乎显而易见,但我也见过一些在这方面犯错的案例。当组织和规划 Terraform 的相关代码时,无论是将目录结构标准化还是确定命名规范,考虑目标受众是非常重要的。例如:你的团队是否会使用这些 Terraform 脚本和模块?你是否会向其他团队交接工作?你的团队是否会有新成员加入?你是否正在独自进行项目开发?你是否会半年或一年后仍然使用这些配置,还是会将它安排给别人? + +这类问题会影响某些决策。理想情况下,无论如何都应该有 [远程状态][2]Remote State[状态锁定][3]State Locking 两种状态。远程状态确保你的笔记本电脑不是你的 Terraform 唯一运行的机器,状态锁定确保同一时刻只有一个人对基础设施进行修改操作。 + +命名规范应该对项目的最终拥有者有意义,而不是只对开发团队有意义。如果项目会转交给其他团队,应该确保他们对命名规范有发言权。如果代码由非技术的利益相关者或内部安全/ GCR 团队负责审查,应该确保他们会检查命名规范。另外,对于资源名称,为了让代码审查人员更仔细地进行检查,你应该使用资源标签,把有关的数据分类/隐私需求(高、中、低)标示出来。 + +### 2、重用,重用,重用 + +[Terraform 注册表][4] 为大多数普通用例提供了现成模块类库。我已经使用过 VPC 模块和安全模块中的大量功能,这些功能只需要提供相关的参数就能使用。使用不同的参数,简单调用这些模块对于处理大部分用例已经足够了。尽可能多地重用这些公共模块,可以避免大量且重复的编码、测试、检查、修复、重构等操作。 + +我也发现,基于使用或变更的频率划分模块和资源大有好处。例如,只使用一次的基础设施手脚架,例如 VPC 相关设置、安全模块、路由表、VPC 端点等,可以放在一起。但是像私有托管域条目、自动伸缩模块、目标模块、负载均衡器等,每次部署时都会变化,所以把这些与一次性的基础设施手脚架分离开来,会令代码检查更方便,调试更快速。 + +### 3、要明确,而非隐含 + +Terraform 代码中有一些常见的模式,它会导致设计中出现错误的假设。团队可以假设用来写代码的 Terraform 版本永远保持不变,外部模块不会变化,或它们使用的提供者不会变更。当这些外部依赖不可避免地发生变化时,就会导致一些难以发现的问题。 + +无论何处(包括主要的 Terraform 组、提供者组、功能模块组)都要确保定义是明确的。事先定义版本,可以确保依赖库是固定的,因此你可以在讨论、审查、测试后,明明白白地更新依赖关系。 + +### 4、自动化每一处,包括笔记本电脑、共享虚拟机、CI/CD。 + +在部署的各个阶段使用自动化方法,可以避免可能发生的问题。 + +在你提交代码前,使用 [Git 预提交钩子][5] 运行 `terraform fmt` 和 `terraform validate`。预提交钩子的作用是确保你的代码满足最低程度的格式和语法正确。把这个预提交文件检入到仓库,对你的团队成员都有好处。项目的第一步就进行质量控制相关的操作,它虽然表面上是小事一桩,但也很重要,能为项目节省大量时间。 + +一切现代化部署工具都有 CI 流程。当你向原始仓库推送代码时,可以使用它来运行 SAST 和单元测试工具。我写过一篇 [博客][6],是关于使用 Checkov 测试 Terraform 代码的安全性和合规性,并为组织特定的惯例创建自定义检查。把这些单元测试工具加入到你的 CI 管道,可以改进代码质量和健壮性。 + +### 5、写个好的 README.md 文件 + +我们都认为 Terraform 代码是自文档化的。的确如此,但是只有当未来的团队已经了解你的公司的命名规范、开发指南、机密通信、圈内笑话,以及你的仓库内除有效的 Terraform 代码之外其他所有东西,才会如此。维护 `README.md` 文件是个好习惯,它能节省大量时间,而且团队成员要为自己向 README 文件提交的任何内容负责,这样也就确保团队成员的忠诚度。 + +你的 README 文件至少应该包含在你的工作环境下(Linux、 Windows、Mac 等等)初始化 Terraform 环境的步骤,包括 Terraform 的版本信息。它应当确定需要的依赖库(Checkov、 TerraGrunt 及其他依赖)和其版本,以及团队使用的方便的 Linux 别名(例如有人喜欢将 `terraform fmt` 简写为 `tff`)。最重要的是,需要确定分支和 PR 审核策略和流程、命名规范和资源标签的相关标准。 + +README 文件需要通过这样的检验:如果团队有新成员加入,能否告诉他们做什么以及如何正确地完成工作?如果不能,在后续的几个月内,你将面对的是无休止的标准和流程讨论会议。 + +### 结束语 + +这些就是我使用 Terraform 多年后,认为需要传授给大家的五条有用的建议。也欢迎你分享自己的最佳实践。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/21/8/terraform-tips + +作者:[Ayush Sharma][a] +选题:[lujun9972][b] +译者:[cool-summer-021](https://github.com/cool-summer-021) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/ayushsharma +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/puzzle_computer_solve_fix_tool.png?itok=U0pH1uwj (Puzzle pieces coming together to form a computer screen) +[2]: https://www.terraform.io/docs/language/state/index.html +[3]: https://www.terraform.io/docs/language/state/locking.html +[4]: https://registry.terraform.io/ +[5]: https://opensource.com/life/16/8/how-construct-your-own-git-server-part-6 +[6]: https://notes.ayushsharma.in/2021/07/cloud-infrastructure-sast-terraform-checkov diff --git a/published/202211/20211020 Diagnose connectivity issues with the Linux ping command.md b/published/202211/20211020 Diagnose connectivity issues with the Linux ping command.md new file mode 100644 index 0000000000..dbeff9ef51 --- /dev/null +++ b/published/202211/20211020 Diagnose connectivity issues with the Linux ping command.md @@ -0,0 +1,154 @@ +[#]: subject: "Diagnose connectivity issues with the Linux ping command" +[#]: via: "https://opensource.com/article/21/10/linux-ping-command" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lujun9972" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15271-1.html" + +使用 Linux 的 ping 命令诊断网络连接问题 +====== + +> 在本文中,我们将讨论网络连接最基本的诊断工具之一:`ping` 命令。 + +![][0] + +如今,联网计算机变得十分普遍,以至于我们大多数人都理所当然地认为,房间一侧的计算机可以连接上房间另一侧的计算机,更不用说能连接上世界的另一端的计算机了。如此,网络使互联网、云、文件共享、媒体流、远程管理、打印等服务成为可能。但是当网络出现问题时,有时很难诊断到底是其中哪一环节出现了问题。下面,我们就来介绍:网络连接最基本的诊断工具之一—— `ping` 命令。 + +### 基本的 ping 命令 + +当你无法访问本地网络上的计算机或互联网上的服务器时,你可以 `ping` 它的 IP 地址。`ping` 将 互联网控制报文协议 Internet Control Message Protocol (ICMP)数据包发送到目标 IP 地址。当我们要对网路连接状况进行判断时,ICMP 是个非常有用的协议,本质上 ICMP 是一个响应和应答信号。 + +让我们由近及远地进行故障排除。请先 `ping` 你自己的计算机,以确保你的计算机正在运行 网络栈 networking stack 。你正在操作的计算机称为 主机 localhost ,本地回环地址是:`127.0.0.1`。 + +`ping` 命令能用主机的 主机名 hostname 、IP 地址(即 `127.0.0.1`)或者仅仅用简写 `0` 来表示 “主机”。 + +你可以使用 `-c` 选项,来控制发送数据包的 次数 count 。 + +``` +$ ping 0 -c 1 +PING 0 (127.0.0.1) 56(84) bytes of data. +64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.069 ms + +--- 0 ping statistics --- +1 packets transmitted, 1 received, 0% packet loss, time 0ms +rtt min/avg/max/mdev = 0.069/0.069/0.069/0.000 ms +``` + +在你确认本地网络栈已启动并运行后,接下来,你可以 `ping` 你的路由器的 IP 地址。路由器的 IP 地址通常以 `192.168` 或 `10` 开头。实际的 IP 地址取决于路由器的配置。 + +当你没有指定要发送多少次请求时,你可以用 `Ctrl+C`,来终止 `ping` 的运行。 + +``` +$ ping 192.168.0.1  +PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. +From 192.168.0.100: icmp_seq=2 Redirect Host(New nexthop: 192.168.0.1) +From 192.168.0.100: icmp_seq=3 Redirect Host(New nexthop: 192.168.0.1) +From 192.168.0.100: icmp_seq=4 Redirect Host(New nexthop: 192.168.0.1) +From 192.168.0.100: icmp_seq=5 Redirect Host(New nexthop: 192.168.0.1) +^C +``` + +如果你能 `ping` 通路由器,则表示你的有线或无线连接能正常工作。 + +对于你的局域网上的其他主机呢?你可以 `ping` 各种设备,但是并非所有设备都能保证响应,因为一些设备会丢弃 ICMP 数据包,但许多设备会做出响应。例如,我可以 `ping` 我的打印机: + +``` +$ ping 192.168.0.4  +``` + +### ping 路由器以外的其他服务器 + +在确定你自己的网络内部都能连通以后,你还可以 `ping` 通到路由器以外的其他服务器。同样地,并非所有服务器都能接收 ICMP 数据包,更不用说响应 ICMP 数据包了。然而,也有一些服务器可以接收并响应 ICMP 数据包,而在互联网中的一个重要服务器是 域名服务器 nameserver 。 + +谷歌的 域名解析服务器 DNS server 的 IP 地址很容易记住,而且它会响应 `ping` 请求: + +``` +$ ping -c 2 8.8.8.8 +PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. +64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=53.3 ms +64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=53.5 ms + +--- 8.8.8.8 ping statistics --- +2 packets transmitted, 2 received, 0% packet loss, time 1000ms +rtt min/avg/max/mdev = 53.304/53.424/53.544/0.120 ms +``` + +当你连不上一个网站时,你可以查询全球 DNS 网络,以找出其主机服务器的地址,然后 `ping` 该服务器。这至少可以告诉你,网站不通的原因是主机已关闭,或者只是 Web 服务器问题。 + +例如,假设你尝试访问 `example.com`,但是发现失败了。首先,使用 `host` 命令找到 `example.com` 的 IP 地址: + +``` +$ host example.com +example.com has address 93.184.216.34 +example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946 +example.com mail is handled by 0 +``` + +然后,`ping` 该网站的的 IP 地址: + +``` +$ ping 93.184.216.34 -c 1 +``` + +### 使用 IPv6 + +`ping` 不仅可以使用 IPv4,还能使用 IPv6。可以通过指定 `-4` 或 `-6` 选项,来只使用 IPv4 或 IPv6。 + +### 设置数据包大小 + +你可以使用 `-s` 选项,来更改要发送的 ICMP 数据包的 大小 size 。默认的数据大小为 56 字节,加上 8 字节包头,总共得到 64 字节的 ICMP 数据包。以下的示例将发送的 ICMP 数据包大小修改为 35+8=43 个字节: + +``` +$ ping -s 35 -c 5 8.8.8.8 +``` + +你可以使用 `-D` 选项,使得在终端中的每个 `ping` 回复之前,先打印出当前的时间戳。该时间戳为 UNIX 时间戳,加上微秒: + +``` +$ ping -D 8.8.8.8  +PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. +[1634013430.297468] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=53.3 ms +[1634013431.298738] 64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=53.1 ms +``` + +### 设置时间间隔/长短 + +你可以使用 `-i` 选项,来更改两次 `ping` 请求之间的 时间间隔 interval 。以下的示例将 `ping` 间隔更改为 2 秒: + +``` +$ ping -i 2  +``` + +你也可以使用 `-w` 选项,来在一段时间后终止 `ping`,单位为秒。 + +``` +$ ping -w 6 +``` + +### ping 的变体 + +`ping` 有很多变体。例如,`iputils` 包提供了 `ping` 命令;[Busybox][2] 也有`ping` 命令;BSD 也有;甚至还有一个图形界面的 `ping`:`gping`,它可用于 Linux、macOS 和 Windows。你可以在 [GitHub][3] 上找到更多有关 `gping` 的信息。 + +### 一起来学习吧 + +`ping` 命令很简单,但它可以帮你诊断网络连接问题。下次再遇到网络连接问题时,让 `ping` 命令成为你解决问题的第一个工具吧。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/21/10/linux-ping-command + +作者:[Seth Kenlon][a] +选题:[lujun9972][b] +译者:[chai001125](https://github.com/chai001125) +校对:[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/world_remote_teams.png?itok=Wk1yBFv6 (World locations with red dots with a sun burst background) +[2]: https://opensource.com/article/21/8/what-busybox +[3]: https://github.com/orf/gping +[0]: https://img.linux.net.cn/data/attachment/album/202211/20/094045mhhkqhepke4qebks.jpg \ No newline at end of file diff --git a/published/202211/20220519 For the Love of Ubuntu- Here are the Mascots of All Ubuntu Releases.md b/published/202211/20220519 For the Love of Ubuntu- Here are the Mascots of All Ubuntu Releases.md new file mode 100644 index 0000000000..de6287f76d --- /dev/null +++ b/published/202211/20220519 For the Love of Ubuntu- Here are the Mascots of All Ubuntu Releases.md @@ -0,0 +1,486 @@ +[#]: subject: "For the Love of Ubuntu: Here are the Mascots of All Ubuntu Releases" +[#]: via: "https://itsfoss.com/all-Ubuntu-mascots/" +[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/" +[#]: collector: "lkxed" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15240-1.html" + +Ubuntu 所有版本的吉祥物 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/11/130502q6500yvm0znvktz9.jpg) + +> 在这篇文章中,我们会介绍迄今为止所有 Ubuntu 发行版本的吉祥物。 + +你可能已经注意到了:每个 Ubuntu 版本都会有一个版本名称和代号。代号由两个单词组成,这两个单词有相同的首字母,第一个单词是形容词,另一个单词通常是一个濒危的物种名称。 + +对应于其代号,这些 Ubuntu 版本也有一个吉祥物。例如,Ubuntu 22.04 的代号为 “Jammy Jellyfish”,因此 Ubuntu 22.04 的桌面壁纸上有 **吉祥物:水母** 的图像。 + +但是实际上,这些“吉祥物”并不总是 Ubuntu 版本的一部分,因为吉祥物在早期的 Ubuntu 版本中是没有的。 + +有史以来第一个 Ubuntu 版本是在 2004 年 10 月发布的 4.10 版(LCTT 译注:Ubuntu 的版本号是由年份和月份的组合来表示的。)但是,直到 Ubuntu 8.04 LTS “Hardy Heron” 版本,你才会看到相关的吉祥物。 + +在我之前写的 [另一篇文章][1] 中,我整理了所有 Ubuntu 版本的默认壁纸。在本文中,你将了解到所有 Ubuntu 版本的吉祥物。 + +现在,就让我们按时间倒序,一起进入 Ubuntu 的吉祥物之旅吧。 + +(LCTT 校注:本文原文发表时,Ubuntu 22.10 尚未发布,它的代号是 “Kinetic Kudu”,吉祥物是“捻角羚”。) + +(LCTT 校注:由于 Ubuntu 系列的代号和吉祥物选择的都是比较少见的动物和晦涩的描述,因此尽管译者和校对虽然尽力了,但是应该还有谬误。我觉得原文作者为了找出这些说明也尽力,恐怕真正权威的诠释只有 Canonical 才能给出吧。) + +### Ubuntu 22.04 Jammy Jellyfish(幸运水母) + +![Ubuntu 22.04 mascot][2] + +于 2021 年 4 月 21 日发布。 + +Jammy 的意思是被果酱覆盖着的、充满果酱的。不太正式地,Jammy 还有**幸运**的意思。 + +水母 Jellyfish 是一种自由游动的水生动物,它的身体就像是一把透明伞,还具有拖曳的触须。少数水母是通过茎干固定在海床上,而不能移动。全世界的海洋中有超过两百种的水母,它们分布于全球各地的水域里。 + +### Ubuntu 21.10 Impish Indri(顽皮大狐猴) + +![Ubuntu 21.10 mascot][3] + +于 2021 年 10 月 14 日发布。 + +Impish 的意思是以**顽皮**而不是严肃的方式,对某人/某事不太尊重。 + +大狐猴 Indri ,也称为 babakoto,是现存的最大的狐猴之一。它的头身长约 64 至 72 厘米,体重在 6 至 9.5 公斤之间。它的毛发是黑白相间的。在攀爬或攀爬时,它会保持竖直的姿势。 + +> 据维基:2014 年的世界自然保护联盟(IUCN) 红色名录 Red List 中,仅出现在马达加斯加的大狐猴首次被提升至极危级别。 + +### Ubuntu 21.04 Hirsute Hippo(多毛河马) + +![Ubuntu 21.04 mascot][4] + +于 2021 年 4 月 22 日发布。 + +Hirsute 的意思是**多毛的**。 + +河马 Hippo ,是一种生活在非洲大陆撒哈拉以南的大型半水生哺乳动物。河马是河马科中仅有的两个现存物种之一,另一个物种是 侏儒河马 pygmy hippopotamus 。河马的名字来源于古希腊语“river horse”。 + +> 据维基:在 2006 年 5 月已被 IUCN 红色名录中分为易危物种,世界仅存约 12.5 万-15 万头 + +但是其实,我并没有见过很多多毛的河马 😅。 + +### Ubuntu 20.10 Groovy Gorilla(时髦大猩猩) + +![Ubuntu 20.10 mascot][5] + +于 2020 年 10 月 22 日发布。 + +Groovy 的意思是**时尚的**和令人兴奋的。 + +大猩猩 Gorilla ,是一种草​​食性的地栖巨猿。它主要栖息在赤道非洲的热带森林中。大猩猩属分为两个物种:东部大猩猩和西部大猩猩,以及进一步可分为四个或五个亚种。 + +### Ubuntu 20.04 LTS Focal Fossa(瞩目狸猫) + +![Ubuntu 20.04 mascot][6] + +于 2020 年 4 月 23 日发布。 + +Focal 的意思是令人注目的、**瞩目**。 + +马岛长尾狸猫 Fossa ,是**马达加斯加岛上最大的食肉性哺乳动物**。它身体的长度可以达到近六英尺,其中它们的长尾巴占了一半。它们看起来就像是猫、狗和獴的杂交体。它们有细长的身体、肌肉发达的四肢和短的红棕色毛发。 + +### Ubuntu 19.10 Eoan Ermine(东方白鼬) + +![Ubuntu 19.10 mascot][7] + +于 2019 年 10 月 17 日发布。 + +Eoan 的意思是**与黎明或东方有关的**。 + +白鼬 Stoat ,也被称为欧亚貂、白令貂,简称 Ermine ,是一种原产于欧亚大陆和北美北部的鼬科动物。由于鼬在极地广泛分布,因此它被 IUCN 列为最不担忧灭绝的物种。 + +> 据维基:IUCN 将其列为世界百大外来入侵种。 + +### Ubuntu 19.04 Disco Dingo(迪斯科野犬) + +![Ubuntu 19.04 mascot][8] + +于 2019 年 4 月 18 日发布。 + +Disco 与**迪斯科**音乐和夜总会有关。 + +澳洲野犬 Dingo ,是在澳大利亚发现的一种古老的犬种。澳洲野犬的科属分类在不同出版物中不太一样,因此它的科属分类存在争议。 + +### Ubuntu 18.10 Cosmic Cuttlefish(外星墨鱼) + +![Ubuntu 18.10 mascot][9] + +于 2018 年 10 月 18 日发布。 + +Cosmic 意味着与地球**不同的**、宇宙的。 + +墨鱼 Cuttlefish ,是乌贼目的一种海洋软体动物。它属于头足类,这一类还包含了鱿鱼、章鱼和鹦鹉螺。墨鱼有一个独特的内壳,即墨鱼骨,它可以用于控制浮力。 + +### Ubuntu 18.04 LTS Bionic Beaver(仿生河狸) + +![Ubuntu 18.04 mascot][10] + +于 2018 年 4 月 26 日发布。 + +Bionic 意味着**仿生的**,或者是机电的。 + +河狸 Beaver ,是北半球温带的一种大型半水生啮齿动物。有两种现存的海狸:北美河狸和欧亚河狸。河狸是仅次于水豚的现存第二大啮齿动物。 + +> 据维基:它们处于 IUCN 哺乳动物红色名录中的无危物种,在中国河狸被列为一级保护动物。 + +英国用户认为这个版本的名称特别有趣。 + +### Ubuntu 17.10 Artful Aardvark(机灵土豚) + +![Ubuntu 17.10 mascot][11] + +于 2017 年 10 月 19 日发布。 + +Ubuntu 在此版本中默认切换回了 GNOME。 + +Artful 的意思是聪明的或**机灵的**。 + +土豚 Aardvark ,是一种原产于非洲的穴居、夜间活动的中型哺乳动物。它是管齿目中唯一的现存物种。与大多数其他食虫动物不同,它有一个长长的像猪一样的鼻子,可以闻出食物在哪里。 + +### Ubuntu 17.04 Zesty Zapus(开心跳鼠) + +![Ubuntu 17.04 mascot][12] + +于 2017 年 4 月 13 日发布。 + +这个版本是最后一个以 Unity 桌面为特色的版本。 + +Zesty 意味着有一种强烈的、**令人开心的**、有点辛辣的味道。 + +跳鼠Zapus 是北美跳鼠中唯一一个有牙齿的一个属。跳鼠是除 指猴 Aye-aye 之外,唯一现存的有 18 颗牙齿的哺乳动物。 + +### Ubuntu 16.10 Yakkety Yak(唠叨牦牛) + +![Ubuntu 16.10 mascot][13] + +于 2016 年 10 月 13 日发布。 + +Yakkety 有很多意思。OMG Ubuntu 说,“yakking” 有唠唠叨叨这一非正式意思,yakkety 还可能是一种知名的流行爵士乐器 “Yakety Sax” 的另一种拼写。 + +牦牛 Yak ,是一种大型驯养的野牛。它的毛发蓬松,肩部隆起,有很大的角。在一些地方它是一种驮畜,人们也可以食用它的奶和肉、以及加工它的皮制作东西。 + +### Ubuntu 16.04 LTS Xenial Xerus(好客地松鼠) + +![Ubuntu 16.04 mascot][14] + +于 2016 年 4 月 21 日发布。 + +Xenial 的意思是**热情好客的**。 + +非洲地松鼠 Xerus ,有四个亚种,分别是**开普地松鼠,条纹地松鼠,山地松鼠和无条纹地松鼠**。这些动物是昼行性的,是食草动物,通常吃坚果、根和种子。然而,有时它们也会吃蛋类和其他小动物。 + +### Ubuntu 15.10 Wily Werewolf(狡猾狼人) + +![Ubuntu 15.10 mascot][15] + +于 2015 年 10 月 22 日发布。 + +这个版本可能是少有的发布代号中带有虚构动物的 Ubuntu 版本之一。 + +Wily 的意思是善于获得优势,尤其在欺骗上十分**狡猾的**。 + +狼人 Werewolf ,是可以隐藏住耳朵和尾巴的一种神话生物。它是人,也是狼,大多数人因为它们的长相而害怕它们。 + +### Ubuntu 15.04 Vivid Vervet(活泼绿猴) + +![Ubuntu 15.04 mascot][16] + +于 2015 年 4 月 23 日发布。 + +Vivid 的意思是**活泼**的、明亮的。 + +黑长尾猴 Vervet monkey ,是一种原产于非洲的角猿科的旧大陆猴。“vervet”一词也用于表示绿猴属 Chlorocebus 的所有动物,其中包含五个不同的亚种,这五个不同的亚种主要分布在南部非洲以及一些东部国家。 + +### Ubuntu 14.10 Utopic Unicorn(乌托邦独角兽) + +![Ubuntu 14.10 mascot][17] + +于 2014 年 10 月 23 日发布。 + +这个版本是另一个其发布代号中带有虚构动物的 Ubuntu 版本。 + +Utopic 与**乌托邦**有关,乌托邦是一个虚构的、不存在但是一个理想的地方。 + +独角兽 Unicorn ,是一种传说中的生物。自古以来,它就被描述为前额有一个巨大的、尖的、螺旋状的角的一种野兽。 + +### Ubuntu 14.04 LTS Trusty Tahr(可靠塔尔羊) + +![Ubuntu 14.04 mascot][18] + +于 2014 年 4 月 17 日发布。 + +Trusty 意味着**可靠的**或忠实的。 + +塔尔羊 Tahr ,是一种很像山羊的哺乳动物。它们会栖息在阿曼、印度南部和喜马拉雅山脉的悬崖和山坡上。 + +### Ubuntu 13.10 Saucy Salamander(活泼蝾螈) + +![Ubuntu 13.10 mascot][19] + +于 2013 年 10 月 17 日发布。 + +Saucy 意味着大胆的、**活泼的**或精神饱满的。 + +蝾螈 Salamander 是一类两栖动物。其典型特征是有着蜥蜴般的外观,它们有细长的身体,钝的鼻子,以及与身体成直角突出的短肢,并且幼体和成体都有尾巴。现存的所有十个蝾螈科都属于有尾目。 + +### Ubuntu 13.04 Raring Ringtail(热情猫熊) + +![Ubuntu 13.04 mascot][20] + +于 2013 年 4 月 25 日发布。 + +Raring 的意思是热情的和**非常渴望做某事**。 + +猫熊 Ringtail ,是**一种像猫一样大的食肉动物,类似于一只长着浣熊尾巴的小狐狸**。它浓密的尾巴是扁平的,几乎和头部和身体一样长,有黑白交替的环。它们是夜行动物,一天中的大部分时间都在它们的巢穴里睡觉。 + +### Ubuntu 12.10 Quantal Quetzal(量子大咬鹃) + +![Ubuntu 12.10 mascot][21] + +于 2012 年 10 月 18 日发布。 + +Quantal 意味着与**量子**或量子理论有关的。 + +大咬鹃 Quetzal ,是咬鹃家族中的一种色彩鲜艳的鸟类。它们生活在森林中,主要是在潮湿的高地。来自*凤尾绿咬鹃属*的五种物种生活在新热带的,而另外一个物种,即角咬鹃,生活在墨西哥和美国最南端的局部地区。大咬鹃相当地大,它们的身体长度超过 32 厘米或者有 13 英寸长,比其他咬鹃科的物种都大。绚丽的大咬鹃因其鲜艳的色彩,而成为危地马拉的国鸟。 + +### Ubuntu 12.04 LTS Precise Pangolin(精准穿山甲) + +![Ubuntu 12.04 mascot][22] + +于 2012 年 4 月 26 日发布。 + +Precise 意味着能**精确**或准确地表达细节。 + +穿山甲 Pangolin ,有时被称为有鳞食蚁兽,是鳞甲目的一种哺乳动物。它现存的一个科是穿山甲科,有三个属:穿山甲亚属、长尾穿山甲亚属和地穿山甲亚属。穿山甲亚属包括在亚洲发现的四种物种,而长尾穿山甲亚属和地穿山甲亚属各包括两种物种,均在撒哈拉以南非洲发现。 + +> 据维基百科:2014 年,IUCN 红色名录物种存续委员会穿山甲专门小组,指出穿山甲是目前全世界最常被走私买卖的哺乳动物。所有穿山甲都面临巨大的生存威胁,其中中华穿山甲和马来穿山甲被 IUCN 评估为“极危”物种,非法走私的活动极为猖獗。随着亚洲的 4 种穿山甲数量锐减,走私贸易商家已转移目标至非洲,以满足市场上的庞大需求。 + +### Ubuntu 11.10 Oneiric Ocelot(梦幻豹猫) + +![Ubuntu 11.10 mascot][23] + +于 2011 年 10 月 13 日发布。 + +Oneiric 的意思是与**梦**有关的。 + +豹猫 Ocelot ,是一种中等大小的斑点野猫。它的肩长可达 40 至 50 厘米,体重在 8 至 15.5 公斤之间。卡尔·林奈Carl Linnaeus 于 1758 年首次在书中描述了它。 + +> 据维基:华盛顿公约将孟加拉国、印度以及泰国的豹猫族群列入附录一禁止进行国际贸易,而其他族群亦列入华盛顿公约附录二。 + +### Ubuntu 11.04 Natty Narwhal(聪明独角鲸) + +![Ubuntu 11.04 mascot][24] + +于 2011 年 4 月 28 日发布。 + +这个版本是第一个采用 Unity 桌面的版本。 + +Natty 意味着**聪明**和时尚的。 + +独角鲸 Narwhal ,是一种中等大小的齿鲸。拥有一颗突出的犬齿的大“獠牙”。它常年生活在格陵兰、加拿大和俄罗斯周围的北极水域。它是一角鲸科中现存的两种鲸鱼物种之一,另一个物种是 白鲸 Beluga whale 。 + +### Ubuntu 10.10 Maverick Meerkat(独行猫鼬) + +![Ubuntu 10.10 mascot][25] + +于 2010 年 10 月 10 日发布。 + +Maverick 的意思是**特立独行的**或有独立思想的。 + +猫鼬 Meerkat ,是一种在南部非洲发现的小型猫鼬。它的特点是头宽、眼睛大、鼻子尖、腿长、尾巴很细,毛色有斑纹。 + +### Ubuntu 10.04 LTS Lucid Lynx(清醒猞狸) + +![Ubuntu 10.04 mascot][26] + +于 2010 年 4 月 29 日发布。 + +Lucid 意味着**易于理解的**或明亮的。 + +猞猁 Lynx ,是中型野猫属猞猁中的一种。猞猁这个名字起源于中古英语,源自希腊语 λύγξ,λύγξ 又源自于印欧语词根 leuk-,指的是它眼睛能反射发光的样子。 + +### Ubuntu 9.10 Karmic Koala(幸运考拉) + +![Ubuntu 9.10 mascot][27] + +于 2009 年 10 月 29 日发布。 + +Karmic 意味着与**命运**、业力有关。 + +考拉 Koala ,是一种原产于澳大利亚的树栖草食性的有袋动物。它是袋鼠科唯一现存的物种,它的近亲是袋熊 Wombat 。 + +> 据维基:在 19 世纪初树袋熊遭到捕杀出口,数量由百万只锐减至一千多只,于是澳大利亚政府立法保护。 + +### Ubuntu 9.04 Jaunty Jackalope(自信鹿角兔) + +![Ubuntu 9.04 mascot][28] + +于 2009 年 4 月 23 日发布。 + +这个版本是我用的第一个 Ubuntu 版本。 + +Jaunty 是指拥有活泼、开朗和**自信**的态度。 + +鹿角兔 Jackalope ,是**北美民间传说中的一种神话动物**,被描述为长着羚羊角的可怕的长角兔。Jackalope 这个词是由 jackrabbit 和 antelope 组合而成的。许多鹿角兔的标本都是由用鹿角制成的。 + +### Ubuntu 8.10 Intrepid Ibex(无畏野山羊) + +![Ubuntu 8.10 mascot][29] + +于 2008 年 10 月 30 日发布。 + +Intrepid 意味着**无所畏惧**、冒险的。 + +野山羊 Ibex ,以雄性的大弯角为特征,在前面形成像横向的脊那样。它主要分布于欧亚大陆、北非和东非。 + +### Ubuntu 8.04 LTS Hardy Heron(坚韧苍鹭) + +![Ubuntu 8.04 mascot][30] + +于 2008 年 4 月 24 日发布。 + +这个版本是第一个吉祥物出现在其默认壁纸上的 Ubuntu 版本。 + +Hardy 意味着能够**忍受**困难条件的、强大的。 + +苍鹭 Heron ,是一种长腿、长颈、生活在淡水和沿海的鸟类。 + +### Ubuntu 7.10 Gutsy Gibbon(阵风长臂猿) + +![Ubuntu 7.10 mascot][31] + +于 2007 年 10 月 18 日发布。 + +Gusty 表示以**阵风**的方式吹动。 + +长臂猿 Gibbon ,是一种猿类,它们生活在孟加拉国东部、印度东北部、中国南部和印度尼西亚的亚热带和热带雨林地区。 + +### Ubuntu 7.04 Feisty Fawn(活泼小鹿) + +![Ubuntu 7.04 mascot][32] + +于 2007 年 4 月 19 日发布。 + +Feisty 意味着**小而坚定**的。 + +小鹿 Fawn ,指的是第一年刚出生的小鹿。 + +### Ubuntu 6.10 Edgy Eft(紧张水蜥) + +![Ubuntu 6.10 mascot][33] + +于 2006 年 10 月 26 日发布。 + +Edgy 的意思是**紧张的**。 + +水蜥 Eft ,是蝾螈的陆生幼年期。蝾螈是一种蜥蜴,它具有三个不同的发育生命阶段:水生幼虫、陆生幼体和成体。 + +所以水蜥指的是一个青年的蝾螈。 + +### Ubuntu 6.06 Dapper Drake(整洁公鸭) + +![Ubuntu 6.06 mascot][34] + +于 2006 年 6 月 1 日发布。 + +Dapper 的意思是衣着整洁,**外表整洁的**。 + +公鸭 Drake ,是完全性成熟的成年雄性鸭子。 + +### Ubuntu 5.10 Breezy Badger(微风之獾) + +![Ubuntu 5.10 mascot][35] + +于 2005 年 10 月 12 日发布。 + +Breezy 的意思是有**微风**的。 + + Badger ,一种是短腿的杂食动物,经常蹲下身挤在一起。 + +### Ubuntu 5.04 Hoary Hedgehog(灰白刺猬) + +![Ubuntu 5.04 mascot][36] + +于 2005 年 4 月 8 日发布。 + +Hoary 是**灰白色的**意思。 + +刺猬 Hedgehogis ,是一种多刺的哺乳动物,遍布于欧洲、亚洲和非洲的部分地区,并引入到了新西兰。 + +### Ubuntu 4.10 : Warty Warthog(有疣疣猪) + +![Ubuntu 4.10 mascot][37] + +于 2004 年 10 月 20 日发布。 + +Ubuntu 就是从这个版本开始的。 + +Wart 是由病毒引起的一种小的、坚硬的、良性的皮肤生长物。Warty 的意思是**长满疣的**。 + +疣猪 Warthog ,是猪科的一种野生动物,它是在撒哈拉以南非洲的草原、稀树草原和林地中被发现的。 + +### 总结 + +本文有没有让 Ubuntu 用户了解了更多知识呢?从技术上讲,并没有,但回顾历史是件好事。如果你多年来一直是 Ubuntu 用户,那么这篇文章可能会引发你的怀旧之情。 + +Ubuntu 9.04 是我第一次尝试 Linux 桌面。如果我没记错的话,那是在 2009 年 9 月下旬。仅仅几周后,我的系统就升级到了 Ubuntu 9.10。那些天我经常在 Ubuntu 论坛上浏览,探索这个新的操作系统,并学习新的东西。 + +那么,这篇文章有没有勾起你的一些美好的回忆呢?你的第一个 Ubuntu 版本又是哪个呢?在评论区中分享你的 Ubuntu 使用经历吧。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/all-Ubuntu-mascots/ + +作者:[Abhishek Prakash][a] +选题:[lkxed][b] +译者:[chai001125](https://github.com/chai001125) +校对:[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-default-wallpapers-download/ +[2]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-22-04-mascot.jpg +[3]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-21-10-mascot.jpg +[4]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-21-04-mascot.jpg +[5]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-20-10-mascot.jpg +[6]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-20-04-mascot-1.jpg +[7]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-19-10-mascot.jpg +[8]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-19-04-mascot.jpg +[9]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-18-10-mascot.jpg +[10]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-18-04-mascot.jpg +[11]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-17-10-mascot.jpg +[12]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-17-04-mascot.jpg +[13]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-16-10-mascot.jpg +[14]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-16-04-mascot.jpg +[15]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-15-10-mascot.jpg +[16]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-15-04-mascot.jpg +[17]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-14-10-mascot.jpg +[18]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-14-04-mascot.jpg +[19]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-13-10-mascot.jpg +[20]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-13-04-mascot.jpg +[21]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-12-10-mascot.jpg +[22]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-12-04-mascot.jpg +[23]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-11-10-mascot.jpg +[24]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-11-04-mascot.jpg +[25]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-10-10-mascot.jpg +[26]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-10-04-mascot.jpg +[27]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-9-10-mascot.jpg +[28]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-9-04-mascot.jpg +[29]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-8-10-mascot.jpg +[30]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-8-04-mascot.jpg +[31]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-7-10-mascot.jpg +[32]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-7-04-mascot.jpg +[33]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-6-10-mascot.jpg +[34]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-6-06-mascot.jpg +[35]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-5-10-mascot.jpg +[36]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-5-04-mascot.jpg +[37]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-4-10-mascot.jpg diff --git a/published/202211/20220524 12 essential Linux commands for beginners.md b/published/202211/20220524 12 essential Linux commands for beginners.md new file mode 100644 index 0000000000..ee5b742c0f --- /dev/null +++ b/published/202211/20220524 12 essential Linux commands for beginners.md @@ -0,0 +1,188 @@ +[#]: subject: "12 essential Linux commands for beginners" +[#]: via: "https://opensource.com/article/22/5/essential-linux-commands" +[#]: author: "Don Watkins https://opensource.com/users/don-watkins" +[#]: collector: "lkxed" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15215-1.html" + +12 个对新手最重要的 Linux 命令 +====== + +> 我向所有的 Linux 初学者推荐以下这些命令。 + +![](https://img.linux.net.cn/data/attachment/album/202211/05/092308plqfl6a6z0g7afx7.jpg) + +在使用 Linux 命令行时,很容易就会迷失方向,这可能会导致灾难性的后果:我有一次使用删除命令 `rm` 删除文件,然而删除之后我才意识到我刚刚是删除了计算机的引导目录。后来,我学会了使用 `pwd` 命令,来知道当前在文件系统的哪个目录下;并且我使用了 [trashy 和 trash-cli][2] 这一命令行回收站工具(LCTT 译注:在删除文件时 `trash-cli` 会充当中间人,将文件先“删除”到桌面上的垃圾箱中,能够通过垃圾箱或通过终端的 `trash` 命令,来恢复垃圾箱中已删除的文件。) + +当我刚开始使用 Linux 时,我有一个放在桌子上的“速查表”,它就是《101 条你应该知道的 Linux 命令》,我在管理 Linux 服务器时能参考速查表上面的这些命令。随着我越来越熟悉这些命令,我越来越精通服务器管理了。 + +以下是我认为最有用的 12 个 Linux 命令。 + +### 1、打印工作目录(pwd) + +`pwd` 命令会打印出你的工作目录。换句话来说,它输出你当前所在目录的路径。`pwd` 命令有两种选项:`-L` 或 `--logical`(即逻辑路径)用来打印当前的目录路径(不解析符号链接),`-P` 或 `--physial`(即物理路径)会打印出解析符号链接后的物理目录。(LCTT 译注:你可以进一步阅读我们翻译的 [另一篇文章](https://linux.cn/article-4356-1.html)。) + +### 2、创建目录(mkdir) + +使用 `mkdir` 命令来创建一个新目录,是非常容易的。以下命令,创建了一个名为 `example` 目录(若 `example` 已存在,则无法创建): + +``` +$ mkdir example +``` + +你也可以在嵌套地创建目录及其子目录: + +``` +$ mkdir -p example/one/two +``` + +如果目录 `example` 和目录 `one` 都已存在,则仅会创建目录 `two`。如果上述目录都不存在,则会创建这三个嵌套的目录。 + +### 3、列出文件(ls) + +我最早使用的是 MS-DOS(微软磁盘操作系统),因此我习惯于使用 `dir` 命令,来列出文件。我不记得当时是否能在 Linux 上使用 `dir` 命令,但是如今 `dir` 命令已经包含在 GNU 核心实用程序包GNU Core Utilities package 中了。大多数人会使用 `ls` 命令,来显示目录中的文件及其所有的属性。`ls` 命令有许多选项,包括 `-l` 查看文件的长列表,显示文件所有者和权限等信息。 + +### 4、更改当前工作目录(cd) + +在 Linux 中经常要更改当前工作目录,这就是 `cd` 命令的功能。例如,以下的示例将让你从 主目录home 进入 `Documents` 目录: + +``` +$ cd Documents +``` + +你可以使用 `cd ~` 或者 `cd`,来快速转换到你的主目录。你可以使用 `cd ..` 来返回到上一级目录。 + +### 5、删除文件(rm) + +删除文件是很危险的,因为在 Linux 终端上用 `rm` 命令会**彻底地**删除文件,并没有像桌面的垃圾桶那样依旧保存着删除的文件。许多终端用户有一个坏习惯,他们会永久地删除他们认为不再需要的文件。然而,因为没有“取消删除”命令,这个坏习惯可能会导致严重的问题:你会不小心删除了包含重要数据的目录。 + +Linux 系统为文件删除提供了 `rm` 和 `shred` 命令。要删除文件 `example.txt`,请输入以下内容: + +``` +$ rm example.txt +``` + +然而,使用 `trash` 命令要安全得多,例如 [trashy][3] 或者 [trash-cli][4],它会将文件先“删除”到桌面上的垃圾箱中: + +``` +$ trash example.txt +``` + +(LCTT 译注:关于 Trash-Cli 的更多信息可以参考我们翻译的 [另一篇文章](https://linux.cn/article-10029-1.html)。) + +### 6、复制文件(cp) + +使用 `cp` 命令,来复制文件。`cp` 的语法是从*旧文件*复制到*新文件*。这里有一个例子: + +``` +$ cp file1.txt newfile1.txt +``` + +你也可以复制整个目录: + +``` +$ cp -r dir1 newdirectory +``` + +### 7、移动并重命名文件(mv) + +重命名和移动文件在功能上是相同的过程。当你移动文件时,从一个目录中取出一个文件,并将其放入一个新目录中;当你重命名文件时,将一个目录中的文件更改为新名称,并放回到同一目录或另一个目录下。无论是重命名还是移动文件,你都可以使用 `mv` 命令: + +``` +$ mv file1.txt file_001.txt +``` + +### 8、创建一个空文件(touch) + +使用 `touch` 命令可以简单地创建一个空文件: + +``` +$ touch one.txt + +$ touch two.txt + +$ touch three.md +``` + +### 9、更改权限(chmod) + +使用 `chmod` 命令,来更改文件的权限。`chmod` 最常见的用途是让文件能够执行: + +``` +$ chmod +x myfile +``` + +以下的示例展示了如何用 `chmod` 命令给文件赋予权限,这对于脚本来说特别方便。尝试一下这个简单的练习吧: + +``` +$ echo 'echo Hello $USER' > hello.sh + +$ chmod +x hello.sh + +$ ./hello.sh +Hello, Don +``` + +### 10、提升为 root 权限(sudo) + +在管理自己的 Linux 系统时,可能需要提升为超级用户(也称为 root),这就是 `sudo`(即 以超级用户做super user do)命令的来源。假设你想要做一些只有管理员(或 root 用户)才能做的事情,只需在命令前加一个 `sudo` 即可: + +``` +$ touch /etc/os-release && echo "Success" +touch: cannot touch '/etc/os-release': Permission denied + +$ sudo touch /etc/os-release && echo "Success" +Success +``` + +### 11、关机(poweroff) + +`poweroff` 命令的功能和它的字面意思一样:把你的计算机关机。需要在 `poweroff` 前面加一个 `sudo` 才能成功关机。 + +实际上,还有很多方法可以关闭你的计算机,这些方法有略微的不同。例如,`shutdown` 命令会在指定的时间(例如 60 秒)后关闭计算机: + +``` +$ sudo shutdown -h 60 +``` + +或者立即关闭计算机: + +``` +$ sudo shutdown -h now +``` + +你也可以用 `sudo shutdown -r now` 或者 `reboot` 来重启计算机。 + +### 12、阅读手册(man) + +`man` 命令可能是 Linux 中最重要的命令了,你可以通过 `man` 命令查看 Linux 系统上每个命令的官方文档。例如,要阅读更多有关 `mkdir` 的信息,可以输入: + +``` +$ man mkdir +``` + +一个与 `man` 相关的命令是 `info` 命令,它提供了一组不同的手册,它通常会提供比简洁的 `man` 页面更详细一点的内容。 + +### 你最喜欢的 Linux 命令是什么? + +Linux 系统上还有数百个其他命令!你最喜欢使用的 Linux 命令是什么呢?什么命令是你一直反复使用的呢? + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/5/essential-linux-commands + +作者:[Don Watkins][a] +选题:[lkxed][b] +译者:[chai001125](https://github.com/chai001125) +校对:[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/lkxed +[1]: https://opensource.com/sites/default/files/lead-images/command_line_prompt.png +[2]: https://www.redhat.com/sysadmin/recover-file-deletion-linux +[3]: https://gitlab.com/trashy/trashy +[4]: https://github.com/andreafrancia/trash-cli diff --git a/published/202211/20220814 How to Record Audio in Linux With Audacity -and Reduce Noise-.md b/published/202211/20220814 How to Record Audio in Linux With Audacity -and Reduce Noise-.md new file mode 100644 index 0000000000..2f52b58b26 --- /dev/null +++ b/published/202211/20220814 How to Record Audio in Linux With Audacity -and Reduce Noise-.md @@ -0,0 +1,135 @@ +[#]: subject: "How to Record Audio in Linux With Audacity (and Reduce Noise)" +[#]: via: "https://itsfoss.com/audacity-recording/" +[#]: author: "Anuj Sharma https://itsfoss.com/author/anuj/" +[#]: collector: "lkxed" +[#]: translator: "FYJNEVERFOLLOWS" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15284-1.html" + +如何在 Linux 中使用 Audacity 录制音频(并降噪) +====== + +![][0] + +[Audacity][1] 是一个自由开源的跨平台 [音频编辑器][2]。专业人士使用它是因为它提供的功能仅需安装很小的软件包。 + +你不必成为一名专业人士并使用它的所有功能。你可以使用它从麦克风录制音频,并执行一些基本操作,如背景噪声消除。 + +我将在本教程中向你展示如何做到这一点。 + +### 在 Linux 上安装 Audacity + +在 Linux 上安装 Audacity 是一个非常简单的过程。由于其受欢迎,可以在大多数 Linux 发行版的官方存储库中找到它。 + +你可以在发行版的软件中心或软件包管理器中搜索它。 + +作为一个终端爱好者,让我分享一下常见发行版的命令。 + +对于基于 Debian 或 Ubuntu 的发行版: + +``` +sudo apt install audacity +``` + +对于基于 RHEL 或 Fedora 的发行版: + +``` +sudo dnf install audacity +``` + +如果你在用基于 Arch 的发行版: + +``` +sudo pacman -Syu audacity +``` + +**注意**,通过官方存储库安装可能无法获得 [最新版本][3]。要获得最新版本,你可以使用 AppImage 或 Flatpak/Snap 软件包。 + +### 使用 Audacity 录制音频 + +安装 Audacity 后,从应用程序菜单打开它或从终端启动它。你会看到这样的界面: + +![Audacity Interface][4] + +单击“录制”按钮(红点)即可轻松开始录制。完成后,单击“ +停止”按钮(方形图标)来结束录制。你还可以预览录制的波形,如下所示: + +![record audio with audacity][5] + +然后,你可以通过单击“播放”按钮(绿色图标)检查录制的内容。 + +如果你没有看到任何波形,则表示未录制到任何内容。很可能,你没有正确设置音频输入。确保你选择了正确的麦克风,并确保在“系统设置system settings”中其未被静音。你也可以通过 Audacity 接口设置。 + +录音不会自动保存为 MP3 或其他格式。**要保存录音**,你可以转到 “文件File导出Export” 并选择 “导出为 MP3Export as MP3”(或任何其他想要的格式)。 + +### 使用 Audacity 降低背景噪声 + +Audacity 还有另一个很棒的功能,你可以使用它来减少录制音频中的白噪声。 + +最好的做法是在开始使用 Audacity 录制时的前五秒不要说任何话。这将为你提供所需的背景噪声。 + +在录制音频的波形上,选择你认为是背景噪声的部分。 + +![Background noise][6] + +选择噪声部分后,从顶部文件菜单中转到 “效果Effects降低噪音Noise Reduction”。 + +它会像这样打开一个弹出窗口。单击此处的 “获取噪音配置文件Get Noise Profile”。 + +![Noise Reduction Effect Popup Window][7] + +现在,你已经设置了噪声配置文件。现在,你必须使用它来减少录音中的噪声。 + +按 `Ctrl + A` 快捷键选择整段录音。你也可以选择其中的一部分,仅对所选部分减少噪声。 + +选择音轨后,再次转到 “效果Effects降低噪音Noise Reduction”。 + +**这次不要单击** “获取噪音配置文件Get Noise Profile”。这一次,你应该能够按下 “OK” 按钮。 + +只需按下 “OK” 按钮,即可将降噪效果应用到录音中,并反映在波形上,如下所示: + +![Audio Waveform after Noise Reduction][8] + +现在,相较而言,录制的音频将具有更少的噪声。你可以在选择 “降低噪音Noise Reduction” 效果时微调噪声过滤。 + +总结如下: + +* 选择噪声部分,转到 “效果Effects降低噪音Noise Reduction”,然后单击 “获取噪音配置文件Get Noise Profile” +* 按 `Ctrl + A` 选择整段音频录制,转到 “效果Effects降低噪音Noise Reduction”,这次按 `OK` 按钮 + +请注意,你无法移除所有类型的噪声,但这应该会有所帮助。 + +### Audacity 能做更多事情 + +使用 Audacity 录制音频可能不像使用 GNOME 录音机那样简单,但它并不太复杂。如果你正在录制画外音,降噪功能将非常有用。 + +Audacity 有更多其他功能,不可能在一个教程中涵盖所有这些功能。这就是为什么我会保持简短的原因。 + +如果你不能接受 2021 年的 [Audacity 的隐私政策调整][9],试试其他可用的工具。 + +我希望这个小教程能帮助你使用 Audacity 进行音频录制。如果你有问题或建议,请告诉我。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/audacity-recording/ + +作者:[Anuj Sharma][a] +选题:[lkxed][b] +译者:[FYJNEVERFOLLOWS](https://github.com/FYJNEVERFOLLOWS) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/anuj/ +[b]: https://github.com/lkxed +[1]: https://github.com/audacity/audacity +[2]: https://itsfoss.com/best-audio-editors-linux/ +[3]: https://github.com/audacity/audacity/releases +[4]: https://itsfoss.com/wp-content/uploads/2022/08/audacity-interface.png +[5]: https://itsfoss.com/wp-content/uploads/2022/08/record-audio-with-audacity.png +[6]: https://itsfoss.com/wp-content/uploads/2022/08/audacity-noise-reduction.png +[7]: https://itsfoss.com/wp-content/uploads/2022/08/audacity-noise-steps.png +[8]: https://itsfoss.com/wp-content/uploads/2022/08/audacity-noise-reduced.png +[9]: https://news.itsfoss.com/audacity-fiasco-fork/ +[0]: https://img.linux.net.cn/data/attachment/album/202211/24/114858g6vpfg3gfglvxnp4.jpg \ No newline at end of file diff --git a/published/202211/20220903 Infuse your awk scripts with Groovy.md b/published/202211/20220903 Infuse your awk scripts with Groovy.md new file mode 100644 index 0000000000..b171a49201 --- /dev/null +++ b/published/202211/20220903 Infuse your awk scripts with Groovy.md @@ -0,0 +1,343 @@ +[#]: subject: "Infuse your awk scripts with Groovy" +[#]: via: "https://opensource.com/article/22/9/awk-groovy" +[#]: author: "Chris Hermansen https://opensource.com/users/clhermansen" +[#]: collector: "lkxed" +[#]: translator: "lxbwolf" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15231-1.html" + +为你的 awk 脚本注入 Groovy +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/09/100129hp5bze5bbbbmddw6.jpg) + +> awk 和 Groovy 相辅相成,可以创建强大、有用的脚本。 + +最近我写了一个使用 Groovy 脚本来清理我的音乐文件中的标签的系列。我开发了一个 [框架][2],可以识别我的音乐目录的结构,并使用它来遍历音乐文件。在该系列的最后一篇文章中,我从框架中分离出一个实用类,我的脚本可以用它来处理文件。 + +这个独立的框架让我想起了很多 awk 的工作方式。对于那些不熟悉 awk 的人来说,你学习下这本电子书: + +> **[《awk 实用指南》][3]** + +我从 1984 年开始大量使用 awk,当时我们的小公司买了第一台“真正的”计算机,它运行的是 System V Unix。对我来说,awk 是非常完美的:它有关联内存associative memory——将数组视为由字符串而不是数字来索引的。它内置了正则表达式,似乎专为处理数据而生,尤其是在处理数据列时,而且结构紧凑,易于学习。最后,它非常适合在 Unix 工作流使用,从标准输入或文件中读取数据并写入到输出,数据不需要经过其他的转换就出现在了输入流中。 + +说 awk 是我日常计算工具箱中的一个重要部分一点也不为过。然而,在我使用 awk 的过程中,有几件事让我感到不满意。 + +可能主要的问题是 awk 善于处理以分隔字段呈现的数据,但很奇怪它不善于处理 CSV 文件,因为 CSV 文件的字段被引号包围时可以嵌入逗号分隔符。另外,自 awk 发明以来,正则表达式已经有了很大的发展,我们需要记住两套正则表达式的语法规则,而这并不利于编写无 bug 的代码。[一套这样的规则已经很糟糕了][4]。 + +由于 awk 是一门简洁的语言,因此它缺少很多我认为有用的东西,比如更丰富的基础类型、结构体、`switch` 语句等等。 + +相比之下,Groovy 拥有这些能力:可以使用 [OpenCSV 库][5],它很擅长处理 CSV 文件、Java 正则表达式和强大的匹配运算符、丰富的基础类型、类、`switch` 语句等等。 + +Groovy 所缺乏的是简单的面向管道的概念,即把要处理数据作为一个传入的流,以及把处理过的数据作为一个传出的流。 + +但我的音乐目录处理框架让我想到,也许我可以创建一个 Groovy 版本的 awk “引擎”。这就是我写这篇文章的目的。 + +### 安装 Java 和 Groovy + +Groovy 是基于 Java 的,需要先安装 Java。最新的、合适的 Java 和 Groovy 版本可能都在你的 Linux 发行版的软件库中。Groovy 也可以按照 [Groovy 主页][6] 上的说明进行安装。对于 Linux 用户来说,一个不错的选择是 [SDKMan][7],它可以用来获得多个版本的 Java、Groovy 和其他许多相关工具。在这篇文章中,我使用的是 SDK 的版本: + +* Java:OpenJDK 11 的 11.0.12 的开源版本 +* Groovy:3.0.8 + +### 使用 Groovy 创建 awk + +这里的基本想法是将打开一个或多个文件进行处理、将每行分割成字段、以及提供对数据流的访问等复杂情况封装在三个部分: + +* 在处理数据之前 +* 在处理每行数据时 +* 在处理完所有数据之后 + +我并不打算用 Groovy 来取代 awk。相反,我只是在努力实现我的典型用例,那就是: + +* 使用一个脚本文件而不是在命令行写代码 +* 处理一个或多个输入文件 +* 设置默认的分隔符为 `|`,并基于这个分隔符分割所有行 +* 使用 OpenCSV 完成分割工作(awk 做不到) + +### 框架类 + +下面是用 Groovy 类实现的 “awk 引擎”: + +``` +@Grab('com.opencsv:opencsv:5.6') +import com.opencsv.CSVReader +public class AwkEngine { + // With admiration and respect for + // Alfred Aho + // Peter Weinberger + // Brian Kernighan + // Thank you for the enormous value + // brought my job by the awk + // programming language + Closure onBegin + Closure onEachLine + Closure onEnd + private String fieldSeparator + private boolean isFirstLineHeader + private ArrayList fileNameList + public AwkEngine(args) { + this.fileNameList = args + this.fieldSeparator = "|" + this.isFirstLineHeader = false + } + public AwkEngine(args, fieldSeparator) { + this.fileNameList = args + this.fieldSeparator = fieldSeparator + this.isFirstLineHeader = false + } + public AwkEngine(args, fieldSeparator, isFirstLineHeader) { + this.fileNameList = args + this.fieldSeparator = fieldSeparator + this.isFirstLineHeader = isFirstLineHeader + } + public void go() { + this.onBegin() + int recordNumber = 0 + fileNameList.each { fileName -> + int fileRecordNumber = 0 + new File(fileName).withReader { reader -> + def csvReader = new CSVReader(reader, + this.fieldSeparator.charAt(0)) + if (isFirstLineHeader) { + def csvFieldNames = csvReader.readNext() as + ArrayList + csvReader.each { fieldsByNumber -> + def fieldsByName = csvFieldNames. + withIndex(). + collectEntries { name, index -> + [name, fieldsByNumber[index]] + } + this.onEachLine(fieldsByName, + recordNumber, fileName, + fileRecordNumber) + recordNumber++ + fileRecordNumber++ + } + } else { + csvReader.each { fieldsByNumber -> + this.onEachLine(fieldsByNumber, + recordNumber, fileName, + fileRecordNumber) + recordNumber++ + fileRecordNumber++ + } + } + } + } + this.onEnd() + } +} +``` + +虽然这看起来是相当多的代码,但许多行是因为太长换行了(例如,通常你会合并第 38 行和第 39 行,第 41 行和第 42 行,等等)。让我们逐行看一下。 + +第 1 行使用 `@Grab` 注解从 [Maven Central][8] 获取 OpenCSV 库的 5.6 本周。不需要 XML。 + +第 2 行我引入了 OpenCSV 的 `CSVReader` 类 + +第 3 行,像 Java 一样,我声明了一个 `public` 实用类 `AwkEngine`。 + +第 11-13 行定义了脚本所使用的 Groovy 闭包实例,作为该类的钩子。像任何 Groovy 类一样,它们“默认是 `public`”,但 Groovy 将这些字段创建为 `private`,并对其进行外部引用(使用 Groovy 提供的 getter 和 setter 方法)。我将在下面的示例脚本中进一步解释这个问题。 + +第 14-16 行声明了 `private` 字段 —— 字段分隔符,一个指示文件第一行是否为标题的标志,以及一个文件名的列表。 + +第 17-31 行定义了三个构造函数。第一个接收命令行参数。第二个接收字段的分隔符。第三个接收指示第一行是否为标题的标志。 + +第 31-67 行定义了引擎本身,即 `go()` 方法。 + +第 33 行调用了 `onBegin()` 闭包(等同于 awk 的 `BEGIN {}` 语句)。 + +第 34 行初始化流的 `recordNumber`(等同于 awk 的 `NR` 变量)为 0(注意我这里是从 00 而不是 1 开始的)。 + +第 35-65 行使用 `each` `{}` 来循环处理列表中的文件。 + +第 36 行初始化文件的 `fileRecordNumber`(等同于 awk 的 `FNR` 变量)为 0(从 0 而不是 1 开始)。 + +第 37-64 行获取一个文件对应的 `Reader` 实例并处理它。 + +第 38-39 行获取一个 `CSVReader` 实例。 + +第 40 行检测第一行是否为标题。 + +如果第一行是标题,那么在 41-42 行会从第一行获取字段的标题名字列表。 + +第 43-54 行处理其他的行。 + +第 44-48 行把字段的值复制到 `name:value` 的映射中。 + +第 49-51 行调用 `onEachLine()` 闭包(等同于 awk 程序 `BEGIN {}` 和 `END {}` 之间的部分,不同的是,这里不能输入执行条件),传入的参数是 `name:value` 映射、处理过的总行数、文件名和该文件处理过的行数。 + +第 52-53 行是处理过的总行数和该文件处理过的行数的自增。 + +如果第一行不是标题: + +第 56-62 行处理每一行。 + +第 57-59 调用 `onEachLine()` 闭包,传入的参数是字段值的数组、处理过的总行数、文件名和该文件处理过的行数。 + +第 60-61 行是处理过的总行数和该文件处理过的行数的自增。 + +第 66 行调用 `onEnd()` 闭包(等同于 awk 的 `END {}`)。 + +这就是该框架的内容。现在你可以编译它: + +``` +$ groovyc AwkEngine.groovy +``` + +一点注释: + +如果传入的参数不是一个文件,编译就会失败,并出现标准的 Groovy 堆栈跟踪,看起来像这样: + +``` +Caught: java.io.FileNotFoundException: not-a-file (No such file or directory) +java.io.FileNotFoundException: not-a-file (No such file or directory) +at AwkEngine$_go_closure1.doCall(AwkEngine.groovy:46) +``` + +OpenCSV 可能会返回 `String[]` 值,不像 Groovy 中的 `List` 值那样方便(例如,数组没有 `each {}`)。第 41-42 行将标题字段值数组转换为 list,因此第 57 行的 `fieldsByNumber` 可能也应该转换为 list。 + +### 在脚本中使用这个框架 + +下面是一个使用 `AwkEngine` 来处理 `/etc/group` 之类由冒号分隔并没有标题的文件的简单脚本: + +``` +def ae = new AwkEngine(args, ':') +int lineCount = 0 +ae.onBegin = { +  println “in begin” +} +ae.onEachLine = { fields, recordNumber, fileName, fileRecordNumber -> +  if (lineCount < 10) +    println “fileName $fileName fields $fields” +    lineCount++ +} +ae.onEnd = { +   println “in end” +   println “$lineCount line(s) read” +} + +ae.go() +``` + +第 1 行 调用的有两个参数的构造函数,传入了参数列表,并定义冒号为分隔符。 + +第 2 行定义一个脚本级的变量 `lineCount`,用来记录处理过的行数(注意,Groovy 闭包不要求定义在外部的变量为 `final`)。 + +第 3-5 行定义 `onBegin()` 闭包,在标准输出中打印出 “in begin” 字符串。 + +第 6-10 行定义 `onEachLine()` 闭包,打印文件名和前 10 行字段,无论是否为前 10 行,处理过的总行数 `lineCount` 都会自增。 + +第 11-14 行定义 `onEnd()` 闭包,打印 “in end” 字符串和处理过的总行数。 + +第 15 行运行脚本,使用 `AwkEngine`。 + +像下面一样运行一下脚本: + +``` +$ groovy Test1Awk.groovy /etc/group +in begin +fileName /etc/group fields [root, x, 0, ] +fileName /etc/group fields [daemon, x, 1, ] +fileName /etc/group fields [bin, x, 2, ] +fileName /etc/group fields [sys, x, 3, ] +fileName /etc/group fields [adm, x, 4, syslog,clh] +fileName /etc/group fields [tty, x, 5, ] +fileName /etc/group fields [disk, x, 6, ] +fileName /etc/group fields [lp, x, 7, ] +fileName /etc/group fields [mail, x, 8, ] +fileName /etc/group fields [news, x, 9, ] +in end +78 line(s) read +$ +``` + +当然,编译框架类生成的 `.class` 文件需要在 classpath 中,这样才能正常运行。通常你可以用 `jar` 把这些 class 文件打包起来。 + +我非常喜欢 Groovy 对行为委托的支持,这在其他语言中需要各种诡异的手段。许多年来,Java 需要匿名类和相当多的额外代码。Lambda 已经在很大程度上解决了这个问题,但它们仍然不能引用其范围之外的非 final 变量。 + +下面是另一个更有趣的脚本,它很容易让人想起我对 awk 的典型使用方式: + +``` +def ae = new AwkEngine(args, ';', true) +ae.onBegin = { +   // nothing to do here +} +def regionCount = [:] +   ae.onEachLine = { fields, recordNumber, fileName, fileRecordNumber -> +   regionCount[fields.REGION] = +   (regionCount.containsKey(fields.REGION) ? +   regionCount[fields.REGION] : 0) + +  (fields.PERSONAS as Integer) +} +ae.onEnd = { +   regionCount.each { region, population -> +   println “Region $region population $population” + } +} + +ae.go() +``` + +第 1 行调用了三个函数的构造方法,`true` 表示这是“真正的 CSV” 文件,第一行为标题。由于它是西班牙语的文件,因此它的逗号表示数字的`点`,标准的分隔符是分号。 + +第 2-4 行定义 `onBegin()` 闭包,这里什么也不做。 + +第 5 行定义一个(空的)`LinkedHashmap`,键是 String 类型,值是 Integer 类型。数据文件来自于智利最近的人口普查,你要在这个脚本中计算出智利每个地区的人口数量。 + +第 6-11 行处理文件中的行(加上标题一共有 180,500 行)—— 请注意在这个案例中,由于你定义 第 1 行为 CSV 列的标题,因此 `fields` 参数会成为 `LinkedHashMap` 实例。 + +第 7-10 行是 `regionCount` 映射计数增加,键是 `REGION` 字段的值,值是 `PERSONAS` 字段的值 —— 请注意,与 awk 不同,在 Groovy 中你不能在赋值操作的右边使用一个不存在的映射而期望得到空值或零值。 + +第 12-16 行,打印每个地区的人口数量。 + +第 17 行运行脚本,调用 `AwkEngine` 。 + +像下面一样运行一下脚本: + +``` +$ groovy Test2Awk.groovy ~/Downloads/Censo2017/ManzanaEntidad_CSV/Censo*csv +Region 1 population 330558 +Region 2 population 607534 +Region 3 population 286168 +Region 4 population 757586 +Region 5 population 1815902 +Region 6 population 914555 +Region 7 population 1044950 +Region 8 population 1556805 +Region 16 population 480609 +Region 9 population 957224 +Region 10 population 828708 +Region 11 population 103158 +Region 12 population 166533 +Region 13 population 7112808 +Region 14 population 384837 +Region 15 population 226068 +$ +``` + +以上为全部内容。对于那些喜欢 awk 但又希望得到更多的东西的人,我希望你能喜欢这种 Groovy 的方法。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/9/awk-groovy + +作者:[Chris Hermansen][a] +选题:[lkxed][b] +译者:[lxbwolf](https://github.com/lxbwolf) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/clhermansen +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/lead-images/browser_screen_windows_files.png +[2]: https://opensource.com/article/22/8/music-tagging-framework-groovy +[3]: https://opensource.com/downloads/awk-ebook +[4]: http://regex.info/blog/2006-09-15/247 +[5]: http://opencsv.sourceforge.net/ +[6]: https://groovy.apache.org/download.html +[7]: https://opensource.com/article/22/3/manage-java-versions-sdkman +[8]: https://mvnrepository.com/artifact/com.opencsv/opencsv diff --git a/published/202211/20220912 Why do domain names sometimes end with a dot.md b/published/202211/20220912 Why do domain names sometimes end with a dot.md new file mode 100644 index 0000000000..f8ed0a81d4 --- /dev/null +++ b/published/202211/20220912 Why do domain names sometimes end with a dot.md @@ -0,0 +1,231 @@ +[#]: subject: "Why do domain names sometimes end with a dot?" +[#]: via: "https://jvns.ca/blog/2022/09/12/why-do-domain-names-end-with-a-dot-/" +[#]: author: "Julia Evans https://jvns.ca/" +[#]: collector: "lujun9972" +[#]: translator: "lxbwolf" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15254-1.html" + +为什么有时候域名的末尾有个点? +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/15/001222ytut3qvtau32f2p2.jpg) + +大家好!今年早些时候,我在写《[DNS 是如何工作的][1]》 时,有人问我——为什么人们有时在域名的末尾加一个点?例如,如果你通过运行 `dig example.com` 查询 `example.com` 的 IP,你会看到一下内容: + +``` +$ dig example.com +example.com. 5678 IN A 93.184.216.34 +``` + +执行完 `dig` 命令后,`example.com` 有一个 `.` ——变成了 `example.com.`!发生了什么? + +有些 DNS 工具也要求传给它的域名后加一个 `.`:如果你在使用 [miekg/dns][2] 时传给它 `example.com`,它会报错: + +``` +// trying to send this message will return an error +m := new(dns.Msg) +m.SetQuestion("example.com", dns.TypeA) +``` + +最初我以为我知道这个问题的答案(“呃,末尾的点意味着域名是完全限定的?”)。这是对的 —— 一个完全限定域名fully qualified domain name(FQDN)是一个末尾有 `.` 的域名! + +但是*为什么*末尾的点是有用且重要的呢? + +### 在 DNS 的请求/响应中,域名的末尾并没有 “.” + +我曾经(错误地)认为 “为什么末尾有一个点?”的答案可能是 “在 DNS 请求/响应中,域名末尾有一个 `.`,所以我们把它放进去,以匹配你的计算机实际发送/接收的内容”。但事实并不是这样! + +当计算机发送 DNS 请求/响应时,域名的末尾并没有点。实际上,域名中*没有*点。 + +域名会被编码成一系列的长度/字符串对。例如,域名 `example.com` 被编码为这 13 个字节。 + +``` +7example3com0 +``` + +编码后的内容一个点也没有。一个 ASCII 域名(如 `example.com`)被转成了各种 DNS 软件的 DNS 请求/响应中使用的格式。 + +今天我们来讨论域名被转成 DNS 响应的一个地方:区域文件。 + +### 区域文件中域名末尾的 “.” + +一些人管理域名的 DNS 记录的方法是创建一个被称为 “区域文件” 的文本文件,然后配置一些 DNS 服务器软件(如 `nsd` 或 `bind`)来为该区域文件中指定的 DNS 记录提供服务。 + +下面是一个对应 `example.com` 的示例区域文件: + +``` +orange 300 IN A 1.2.3.4 +fruit 300 IN CNAME orange +grape 3000 IN CNAME example.com. +``` + +在这个文件中,任何不以 `.` 结尾的域名(比如 `orange`)后都会自动加上 `.example.com`。所以 `orange` 成了 `orange.example.com` 的简称。DNS 服务器从它的配置中得知这是一个 `example.com` 的区域文件,所以它知道在所有不以点结尾的名字后面自动添加 `example.com`。 + +我想这里的想法只是为了少打几个字符——如果要打出全称,区域文件会是这样: + +``` + + orange.example.com. 300 IN A 1.2.3.4 + fruit.example.com. 300 IN CNAME orange.example.com. + grape.example.com. 3000 IN CNAME example.com. + +``` + +确实多了很多字符。 + +### 你也可以不通过区域文件来使用 DNS + +尽管官方的 DNS RFC([RFC 1035][3])中定义了区域文件格式,但你也可以不通过区域文件来使用 DNS。例如,AWS Route 53 就不用区域文件来存储 DNS 记录!你可以通过 Web 界面或 API 来创建记录,我猜他们是用某种数据库而不是一堆文本文件来存储记录。 + +不过,Route 53(像许多其他 DNS 工具一样)确实支持导入和导出区域文件,这个功能或许在你更换 DNS 提供商时很有用。 + +### dig 命令输出中末尾的 “.” + +现在我们来讨论下 `dig` 命令的输出: + +``` +$ dig example.com +; <<>> DiG 9.18.1-1ubuntu1.1-Ubuntu <<>> +all example.com +;; global options: +cmd +;; Got answer: +;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10712 +;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 + +;; OPT PSEUDOSECTION: +; EDNS: version: 0, flags:; udp: 65494 +;; QUESTION SECTION: +;example.com. IN A + +;; ANSWER SECTION: +example.com. 81239 IN A 93.184.216.34 +``` + +有一件奇怪的事是,几乎每一行都以 `;;` 开头,这是怎么回事?`;` 是区域文件中的注释字符! + +我想 `dig` 以这种奇怪的方式输出的原因可能是为了方便你粘贴这些内容到区域文件时,不用修改就可以直接用。 + +这也是 `example.com` 末尾有个 `.` 的原因 —— 区域文件要求域名末尾必须有点(否则它们会被解释为是相对于该区域的)。因此 `dig` 也这么处理了。 + +我真的希望 dig 有一个 `+human` 选项,以更人性化的方式打印出这些信息,但现在我太懒了,懒得花工夫去实际贡献代码来做这件事(而且我并不擅长 C),所以我只能在我的博客上抱怨一下 :) + +### curl 命令输出中末尾的 “.” + +我们来看下另一个末尾有 `.` 的例子:`curl`! + +我家里有台计算机名为 `grapefruit`,其上运行着 Web 服务器。当我执行 `curl grapefruit` 时,会输出: + +``` +$ curl grapefruit + + + + +...... +``` + +这样运行没问题!但是如果我在域名后加一个 `.` 会怎样呢?它报错了: + +``` +$ curl grapefruit. +curl: (6) Could not resolve host: grapefruit. +``` + +发生了什么?为了搞清楚,我们需要先来学习下搜索域: + +### 初识搜索域 + +当我执行 `curl grapefrult` 时,它是怎么被转成一个 DNS 请求的?你可能会认为我的计算机会向域名 `grapefruit` 发送一个请求,对吗?但事实并不是这样。 + +让我们用 `tcpdump` 来看看到底是什么域名在被查询。 + +``` +$ sudo tcpdump -i any port 53 +[...] A? grapefruit.lan. (32) +``` + +实际上是向 `grapefruit.lan.` 发送的请求。为什么呢? + +解释一下: + + 1. `curl` 调用函数 `getaddrinfo` 来查询 `grapefruit` + 2. `getaddrinfo` 查询了我计算机上的文件 `/etc/resolv.conf` + 3. `/etc/resolv.conf` 包含两行内容: + ``` + nameserver 127.0.0.53 + search lan + ``` + 4. 因为有 `search lan` 这行内容,所以 `getaddrinfo` 在 `grapefruit` 的末尾添加了一个 `lan`,去查询 `grapefruit.lan` + +### 什么时候搜索域被使用? + +现在我们知道了一些奇怪的事情:当我们查询一个域名时,有时会有一个额外的东西(如 `lan`)被加到最后。但是什么时候会发生这种情况呢? + + 1. 如果我们在域名**末尾**添加一个 `.`,那么这时不会用到搜索域 + 2. 如果域名**中间包含**一个 `.`(如 `example.com`),那么默认也不会用到搜索域。但是可以通过修改配置来改变处理逻辑(在 [ndots][4] 里有更详细的说明) + +我们现在知道了 `curl grapefruit.` 与 `curl grapefruit` 结果不一样的原因——因为一个查询的是 `grapefruit.`,而另一个查询的是 `grapefruit.lan.`。 + +### 我的计算机怎么知道使用哪个搜索域呢? + +当我连接路由时,它会通过 DHCP 告诉我它的搜索域是 `lan` —— 它也是通过这个方式给我的计算机分配 IP。 + +### 所以为什么要在域名末尾加一个点呢? + +现在我们已经了解了区域文件和搜索域,下面是我认为的人们要在域名末尾加点的原因: + +有两种情况下,域名会被修改,并在末尾添加其他东西。 + + * 在 `example.com` 的区域文件中,`grapefruit` 会被转为 `grapefruit.example.com` + * 在我的本地网络(我的计算机已经配置了使用搜索域 `lan`),`grapefruit` 被转为 `grapefruit.lan` + +因此,由于域名在某些情况下实际上可能被转成其他名字,人们就在结尾处加一个 `.`,以此来表示 “**这是域名,末尾不需要添加任何东西,这就是全部内容**”。否则会引起混乱。 + +“这就是全部内容”的技术术语是**“完全限定域名”**,简称为**“FQDN”**。所以 `google.com.` 是一个完全限定域名,而 `google.com` 不是。 + +我总是要提醒自己这样做的原因,因为我很少使用区域文件和搜索域,所以我经常觉得——“我当然是指 `google.com` 而不是 `google.com.something.else`! 我为什么要指其他东西?那太傻了!” + +但是有些人确实在使用区域文件和搜索域(例如 Kubernetes 中使用了搜索域!),所以结尾的 `.` 很有用,可以让人确切的知道,不应该再添加其他东西。 + +### 什么时候在末尾添加 “.”? + +以下是关于何时在域名末尾加 ". " 的几个简单说明: + +**需要添加:配置 DNS 时** + +在配置 DNS 时,使用完全限定域名从来都不是坏事。你不一定要这样做:非完全限定域名通常也能正常工作,但我从来没有遇到过不接受完全限定域名的 DNS 软件。 + +有些 DNS 软件需要这样做:现在我为 `jvns.ca` 使用的 DNS 服务器让我在域名的末尾加上 `.`(例如在 CNAME 记录中),并提示如果我不添加,它将在我输入的内容末尾加上 `.jvns.ca`。我不同意这个设计决定,但这不是什么大问题,我只是在最后加一个 `.`。 + +**不需要加:在浏览器中** + +令人困惑的是,在浏览器中,在域名结尾处加一个 `.` *不能*正常运行。例如,如果我在浏览器中输入 `https://twitter.com.`,它就会报错。它会返回 404。 + +我认为这里发生的事情是,它将 HTTP `Host` 标头设置为 `Host:twitter.com.`,而对端的 Web 服务器则期望 `Host:twitter.com`。 + +同样地,`https://jvns.ca.` 由于某种原因,返回了一个 SSL 错误。 + +### 我认为相对域名在过去是比较常见的 + +最后一件事:我认为“相对”域名(比如我用 `grapefruit` 来指代我家的另一台计算机 `grapefruit.lan`)在过去更常用,因为 DNS 是在大学或其他有大型内部网络的大机构中开发的。 + +在今天的互联网上,使用“绝对”域名(如 `example.com`)似乎更为普遍。 + +-------------------------------------------------------------------------------- + +via: https://jvns.ca/blog/2022/09/12/why-do-domain-names-end-with-a-dot-/ + +作者:[Julia Evans][a] +选题:[lujun9972][b] +译者:[lxbwolf](https://github.com/lxbwolf) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://jvns.ca/ +[b]: https://github.com/lujun9972 +[1]: https://wizardzines.com/zines/dns/ +[2]: https://github.com/miekg/dns +[3]: https://www.rfc-editor.org/rfc/rfc1035#section-4.1.1 +[4]: https://pracucci.com/kubernetes-dns-resolution-ndots-options-and-why-it-may-affect-application-performances.html diff --git a/sources/tech/20220916 How to Install Kubernetes Cluster on Debian 11 with Kubeadm.md b/published/202211/20220916 How to Install Kubernetes Cluster on Debian 11 with Kubeadm.md similarity index 50% rename from sources/tech/20220916 How to Install Kubernetes Cluster on Debian 11 with Kubeadm.md rename to published/202211/20220916 How to Install Kubernetes Cluster on Debian 11 with Kubeadm.md index eafa316839..dd56f79b7c 100644 --- a/sources/tech/20220916 How to Install Kubernetes Cluster on Debian 11 with Kubeadm.md +++ b/published/202211/20220916 How to Install Kubernetes Cluster on Debian 11 with Kubeadm.md @@ -2,49 +2,52 @@ [#]: via: "https://www.linuxtechi.com/install-kubernetes-cluster-on-debian/" [#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/" [#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " +[#]: translator: "lxbwolf" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15302-1.html" -How to Install Kubernetes Cluster on Debian 11 with Kubeadm +如何用 Kubeadm 在 Debian 11 上安装 Kubernetes 集群 ====== -Are you looking for an easy guide for installing Kubernetes Cluster on Debian 11 (Bullseye)? -The step-by-step guide on this page will demonstrate you how to install Kubernetes cluster on Debian 11 with Kubeadm utility. +![][0] -Kubernetes (k8s) cluster contains master and worker nodes which are used to run containerized applications. Master node works as control plan and worker nodes offers environment for actual workload. +> 你是否在寻找一份在 Debian 11(Bullseye)上安装 Kubernetes 集群的简易指南? -##### Prerequisites +这份分步指南将向你展示如何使用 Kubeadm 工具在 Debian 11 上安装 Kubernetes 集群。 -* Minimal Installed Debian 11 +Kubernetes(k8s)集群包含主控节点和工作节点,用于运行容器化的应用程序。主控节点作为控制平面,工作节点为实际工作负载提供环境。 + +前置条件: + +* 已安装 Debian 11 * 2 CPU / vCPU * 2 GB RAM -* 20 GB free disk space -* Sudo User with Admin rights -* Stable Internet Connectivity +* 20 GB 空闲硬盘空间 +* 有管理员权限的 sudo 用户 +* 稳定的网络连接 -##### Lab Setup +实验环境配置: -For the demonstration, I am using three Debian 11 systems with following details, +在本文中,我使用了 3 个 Debian 11 系统的节点,配置如下 -* Master Node (k8s-master) – 192.168.1.236 -* Worker Node 1 (k8s-worker1) – 192.168.1.237 -* Worker Node 2 (k8s-worker2) – 192.168.1.238 +* 主控节点(`k8s-master`) – 192.168.1.236 +* 工作节点 1(`k8s-worker1`) – 192.168.1.237 +* 工作节点 2(`k8s-worker2`) – 192.168.1.238 -Without any further delay, let’s jump into the installation steps. +事不宜迟,我们直接进入安装步骤。 -### 1 ) Set Host Name and update /etc/hosts file +### 1、设置主机名和更新 /etc/hosts 文件 -Use hostnamectl command to set the hostname on master and worker nodes. +在主控节点和工作节点上使用 `hostnamectl` 命令来设置主机名: ``` -$ sudo hostnamectl set-hostname "k8s-master"       // Run on master node -$ sudo hostnamectl set-hostname "k8s-worker1"      // Run on 1st worker node -$ sudo hostnamectl set-hostname "k8s-worker2"      // Run on 2nd worker node +$ sudo hostnamectl set-hostname "k8s-master"       // 在主控节点运行 +$ sudo hostnamectl set-hostname "k8s-worker1"      // 在工作节点 1 运行 +$ sudo hostnamectl set-hostname "k8s-worker2"      // 在工作节点 2 运行 ``` -Add the following entries in /etc/hosts file on all the nodes, +在所有节点的 `/etc/hosts` 文件末尾添加下面几行内容: ``` 192.168.1.236       k8s-master @@ -52,20 +55,20 @@ Add the following entries in /etc/hosts file on all the nodes, 192.168.1.238       k8s-worker2 ``` -### 2) Disable Swap on all nodes +### 2、在所有节点上关闭交换分区 -For kubelet to work smoothly, it is recommended to disable swap. Run following commands on master and worker nodes to turn off swap. +我推荐关闭交换分区,以便更丝滑地使用 `kubelet`。在所有节点上执行以下命令来关闭交换分区: ``` $ sudo swapoff -a $ sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab ``` -### 3) Configure Firewall Rules for Kubernetes Cluster +### 3、配置 Kubernetes 集群相关的防火墙规则 -In case, OS firewall is enabled on your debian systems then allow following ports on master and worker nodes respectively. +如果你的操作系统防火墙是打开的,请分别在主控节点和工作节点允许以下的端口。 -On Master node, run +在主控节点,执行: ``` $ sudo ufw allow 6443/tcp @@ -78,7 +81,7 @@ $ sudo ufw allow 10255/tcp $ sudo ufw reload ``` -On Worker Nodes, +在工作节点,执行: ``` $ sudo ufw allow 10250/tcp @@ -86,13 +89,13 @@ $ sudo ufw allow 30000:32767/tcp $ sudo ufw reload ``` -Note: If firewall is disabled on your Debian 11 systems, then you can skip this step. +注意:如果你的 Debian 11 系统防火墙是关闭的,可以跳过此步骤。 -### 4) Install Containerd run time on all nodes +### 4、在所有节点安装 Containerd 运行时 -Containerd is the industry standard container run time, we must install containerd on all master and worker nodes. +Containerd 是容器运行时的行业标准,所有节点必须安装 Containerd。 -Before installing containerd, set the following kernel parameters on all the nodes. +先在所有节点上配置如下的核心参数,再安装 Containerd。 ``` $ cat </dev/null 2>&1 ``` -Set cgroupdriver to systemd on all the nodes, - -Edit the file ‘/etc/containerd/config.toml’ and look for the section ‘[plugins.”io.containerd.grpc.v1.cri”.containerd.runtimes.runc.options]’ and add SystemdCgroup = true +在所有节点上设置 `cgroupdriver` 为 `systemd`,编辑 `/etc/containerd/config.toml` 文件,找到 `[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]` 部分,添加一行内容:`SystemdCgroup = true`: ``` $ sudo vi /etc/containerd/config.toml @@ -139,18 +140,18 @@ $ sudo vi /etc/containerd/config.toml ![systemdCgroup-true-containerd-config-toml][1] -Save and close the file. +保存并退出文件。 -Restart and enable containerd service on all the nodes, +在所有节点上重启并启用 `containerd` 服务: ``` $ sudo systemctl restart containerd $ sudo systemctl enable containerd ``` -### 5) Enable Kubernetes Apt Repository +### 5、添加 Kubernetes Apt 库 -Enable Kubernetes apt repository on all the nodes, run +执行以下命令,添加 Kubernetes Apt 库: ``` $ sudo apt install gnupg gnupg2 curl software-properties-common -y @@ -158,9 +159,9 @@ $ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dea $ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main" ``` -### 6) Install Kubelet, Kubectl and Kubeadm on all nodes +### 6、在所有节点上安装 kubelet、kubectl 和 kubeadm -Run the following apt commands on all the nodes to install Kubernetes cluster components like kubelet, kubectl and Kubeadm. +在所有节点上执行以下 `apt` 命令,安装 Kubernetes 集群组件,如 `kubelet`、`kubectl` 以及 `kubeadm`。 ``` $ sudo apt update @@ -168,21 +169,21 @@ $ sudo apt install kubelet kubeadm kubectl -y $ sudo apt-mark hold kubelet kubeadm kubectl ``` -### 7) Create Kubernetes Cluster with Kubeadm +### 7、使用 Kubeadm 创建 Kubernetes 集群 -Now, we are all set to create Kubernetes cluster, run following command only from master node, +现在我们可以创建 Kubernetes 集群了,在主控节点上执行以下命令: ``` $ sudo kubeadm init --control-plane-endpoint=k8s-master ``` -Output, +命令输出: ![Kubernetes-Control-Plane-Initialization-Debian11][2] -Above output confirms that control plane has been initialized successfully. In the output, we have commands for regular user for interacting with the cluster and also the command to join any worker node to this cluster. +出现以上内容,说明控制平面初始化成功。在输出中,有普通用户与集群交互的命令,也有把任何工作节点加入到集群的命令。 -To start interacting with cluster, run following commands on master node, +要开始与集群进行交互,请在主控节点上运行以下命令: ``` $ mkdir -p $HOME/.kube @@ -190,36 +191,35 @@ $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` -Run following kubectl command to get nodes and cluster information, +执行以下 `kubectl` 命令来获取节点和集群的信息: ``` $ kubectl get nodes $ kubectl cluster-info ``` -Output of above commands, +以上命令的输出: ![Nodes-Cluster-Info-Kubectl][3] -Join both the worker nodes to the cluster by running ‘Kubeadm join’ command. +通过执行 `kubeadm join` 命令来把两个工作节点加入到集群。 -Note: Copy the exact command from the output of ‘kubeadm init’ command. In my case, following is the command +注意:请从 `kubeadm init` 命令的输出中复制完整的命令。在我的例子中,命令如下: ``` $ sudo kubeadm join k8s-master:6443 --token ta622t.enl212euq7z87mgj \ -   --discovery-token-ca-cert-hash sha256:2be58f54458d0e788c96b8841f811069019161f9a3dd8502a38c773e5c6ead17 ``` -Output from Worker Node 1, +在工作节点 1 上的输出如下: ![Worker-Node1-Join-Kunernetes-Cluster][4] -Output from Worker Nod 2 , +在工作节点 2 上的输出如下: ![Worker-Node2-Join-Kubernetes-Cluster][5] -Check the nodes status by running following command from master node, +在主控节点上执行以下命令,检查节点的状态: ``` $ kubectl get nodes @@ -230,21 +230,21 @@ k8s-worker2   NotReady             2m19s   v1.25.0 $ ``` -To make nodes status ready, we must install POD network addons like Calico or flannel. +为了使节点状态变为 `ready`,我们需要安装容器荚Pod网络插件,如 Calico 或 flannel。 -### 8) Install Calico Pod Network Addon +### 8、安装 Calico Pod 网络插件 -On the master node, run beneath command to install calico, +在主控节点上执行以下命令安装 Calico: ``` $ kubectl apply -f https://projectcalico.docs.tigera.io/manifests/calico.yaml ``` -Output, +输出: ![Install-calico-pod-network-addon-debian11][6] -Allow Calico ports in OS firewall, run beneath ufw commands on all the nodes, +在所有节点上执行以下命令,配置防火墙允许 Calico 的端口: ``` $ sudo ufw allow 179/tcp @@ -255,7 +255,7 @@ $ sudo ufw allow 4789/udp $ sudo ufw reload ``` -Verify the status of Calico pods, run +执行以下命令检查下 Calico 的状态: ``` $ kubectl get pods -n kube-system @@ -263,15 +263,15 @@ $ kubectl get pods -n kube-system ![Calico-Pods-Status-Kuberenetes-Debian11][7] -Perfect, now check nodes status again, +完美!现在再检查下节点状态: ![Nodes-status-after-calico-Installation][8] -Great, output above confirms that master and worker nodes are in ready status. Now, this cluster is ready for the workload. +非常棒!上面的输出说明主控节点和工作节点的状态都是 `ready`。现在这个集群可以正常工作了。 -### 9) Test Kubernetes Cluster Installation +### 9、检查 Kubernetes 集群安装是否正确 -To test Kubernetes cluster installation, let’s try to deploy nginx based application via deployment. Run beneath commands, +我们尝试通过 `deployment` 命令来部署基于 Nginx 的应用程序,来验证 Kubernetes 集群的安装是否正确。执行以下命令: ``` $ kubectl create deployment nginx-app --image=nginx --replicas 2 @@ -279,13 +279,13 @@ $ kubectl expose deployment nginx-app --name=nginx-web-svc --type NodePort --por $ kubectl describe svc nginx-web-svc ``` -Output of above commands, +以上命令的输出: ![Nginx-Based-App-Kubernetes-Cluster-Debian11][9] -Try to access the nginx based application using following curl command along with the nodeport 30036. +使用以下的 `curl` 命令通过节点端口 30036 来访问基于 nginx 的应用程序。 -Note : In the curl command we can use either of worker node’s hostname. +注意:在 `curl` 命令中,可以使用两个工作节点任一的主机名。 ``` $ curl http://k8s-worker1:30036 @@ -293,9 +293,9 @@ $ curl http://k8s-worker1:30036 ![Access-Nginx-Based-App-via-NodePort-Kubernetes-Debian11][10] -Above command’s output confirm that we are able to access our nginx based application. +以上的输出说明我们可以正常访问基于 nginx 的应用程序了。 -That’s all from this guide, I hope you have found it informative and able to install Kubernetes cluster on Debian 11 smoothly. Kindly do post your queries and feedback in below comments section. +以上为全部内容。希望本文对你有用,参照本文可以在 Debian 11 上正常安装 Kubernetes 集群。如有任何问题,请在下面评论区告诉我。 -------------------------------------------------------------------------------- @@ -303,8 +303,8 @@ via: https://www.linuxtechi.com/install-kubernetes-cluster-on-debian/ 作者:[Pradeep Kumar][a] 选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +译者:[lxbwolf](https://github.com/lxbwolf) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 @@ -320,3 +320,4 @@ via: https://www.linuxtechi.com/install-kubernetes-cluster-on-debian/ [8]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Nodes-status-after-calico-Installation.png [9]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Nginx-Based-App-Kubernetes-Cluster-Debian11.png [10]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Access-Nginx-Based-App-via-NodePort-Kubernetes-Debian11.png +[0]: https://img.linux.net.cn/data/attachment/album/202211/30/091928zlxbvttw58x6rztw.jpg \ No newline at end of file diff --git a/published/202211/20220929 Execute Commands On Remote Linux Systems Via SSH.md b/published/202211/20220929 Execute Commands On Remote Linux Systems Via SSH.md new file mode 100644 index 0000000000..7a457748e9 --- /dev/null +++ b/published/202211/20220929 Execute Commands On Remote Linux Systems Via SSH.md @@ -0,0 +1,354 @@ +[#]: subject: "Execute Commands On Remote Linux Systems Via SSH" +[#]: via: "https://ostechnix.com/execute-commands-on-remote-linux-systems-via-ssh/" +[#]: author: "sk https://ostechnix.com/author/sk/" +[#]: collector: "lkxed" +[#]: translator: "MjSeven" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15263-1.html" + +通过 SSH 在远程 Linux 系统上执行命令 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/17/163910g9u42ssfcuk9c290.jpg) + +> 通过安全的网络连接在远程计算机上调用命令或程序。 + +有一天,我正在测试如何在 [将文件或目录复制到多个位置和系统时保持完整的文件权限][1]。当我想检查远程系统上的文件权限时,我必须通过 SSH 登录它并检查属性。从远程系统多次登录和注销的过程让我有点烦,我想,如果我可以**在远程 Linux 系统上通过 SSH 执行命令**就好了。 + +幸运的是,在浏览了 `ssh` 命令的手册页后,我找到了一个解决办法。 + +如果你想知道如何本地运行远程系统上运行命令或脚本,而不登录到远程系统,下面的内容会告诉你如何做。 + +### 1、通过 SSH 在远程 Linux 系统上执行命令 + +从本地系统通过 SSH 在远程系统上运行命令或脚本的典型方法是: + +``` +$ ssh +``` + +允许我给你们举几个例子: + +#### 1.1、通过 SSH 在远程系统上运行单个命令 + +假设你想要 [查找远程 Linux 系统的内核详细信息][2]。为此,只需运行: + +``` +$ ssh sk@192.168.225.22 uname -a +``` + +这里, + +* `sk` 是远程系统的用户名, +* `192.168.225.22` 是远程系统的 IP 地址, +* `uname -a` 是我想在远程系统上运行的命令。 + +示例输出: + +![通过 SSH 在远程 Linux 系统上执行命令][3] + +看到没?我并没有实际登录到远程系统,但通过 SSH 在远程系统上执行了 `uname` 命令,并在本地系统的终端上显示了输出。 + +你还可以像下面这样用引号指定命令。 + +``` +$ ssh sk@192.168.225.22 "uname -a" +``` + +或者, + +``` +$ ssh sk@192.168.225.22 'uname -a' +``` + +如果你已经 [更改了 SSH 协议的默认端口][4],只需使用 `-p` 参数指定它。 + +``` +$ ssh -p 2200 sk@192.168.225.22 uname -a +``` + +#### 1.2、通过 SSH 在远程主机上执行多个命令 + +你还可以在远程主机上运行多个命令,方法是将它们放在引号中。 + +``` +$ ssh sk@192.168.225.22 "uname -r && lsb_release -a" +``` + +或者: + +``` +$ ssh sk@192.168.225.22 "uname -r ; lsb_release -a" +``` + +上面的命令将显示我的 Ubuntu 服务器的内核版本和发行版详细信息。 + +示例输出: + +![在 Linux 上通过 SSH 在远程主机上运行多个命令][5] + +正如一位读者在下面的评论部分提到的那样,你应该用引号指定多个命令。如果不使用引号,第一个命令将在远程系统上执行,第二个命令将仅在本地计算机上执行。整个带引号的命令将按预期在远程计算机上运行。 + +> **提示:** 了解 `&&` 和 `;` 在命令中的区别: +> +> `&&` 操作符只有在第一个命令成功时才执行第二个命令。 +> +> 示例: +> +> ``` +> sudo apt-get update && sudo apt-get upgrade +> ``` +> +> 在上述示例中,如果第一个命令成功,才会执行 `sudo apt-get upgrade`。否则,它将不会运行。 +> +> `;` 操作符会执行第二个命令,无论第一个命令是成功还是失败。 +> +> 示例: +> +> ``` +> sudo apt-get update ; sudo apt-get upgrade +> ``` +> +> 在上述示例中,即使第一个命令失败,`sudo apt-get upgrade` 也会执行。 + +#### 1.3、通过 SSH 在远程机器上调用有 sudo 权限的命令 + +有些命令需要 `sudo` 权限才能运行。例如,以下命令将在我的远程系统上安装 `apache2`。 + +``` +$ ssh -t sk@192.168.225.22 sudo apt install apache2 +``` + +示例输出: + +![通过 SSH 在远程机器上运行有 Sudo 权限的命令][6] + +注意到了吗?我在上面的命令中使用了 `-t` 标志,我们需要使用它来强制进行伪终端分配。它用于在远程机器上执行任意基于屏幕的程序,这非常有用。例如,在实现菜单服务时。 + +另外,我输入了**两次**密码。第一次是远程用户的密码,以便从本地系统通过 SSH 访问远程系统,第二次是为了向远程用户赋予 sudo 权限,以便安装应用程序(在本例中为 apache2)。 + +让我们用以下命令检查 Apache 服务是否正在运行: + +``` +$ ssh -t sk@192.168.225.22 sudo systemctl status apache2 +sk@192.168.225.22's password: +[sudo] password for sk: +● apache2.service - The Apache HTTP Server +Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) +Drop-In: /lib/systemd/system/apache2.service.d +└─apache2-systemd.conf +Active: active (running) since Thu 2019-12-19 11:08:03 UTC; 52s ago +Main PID: 5251 (apache2) +Tasks: 55 (limit: 2318) +CGroup: /system.slice/apache2.service +├─5251 /usr/sbin/apache2 -k start +├─5253 /usr/sbin/apache2 -k start +└─5254 /usr/sbin/apache2 -k start + +Dec 19 11:08:03 ubuntuserver systemd[1]: Starting The Apache HTTP Server... +Dec 19 11:08:03 ubuntuserver apachectl[5227]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 2409:4072:51f:a1b6:a00:27ff:f +Dec 19 11:08:03 ubuntuserver systemd[1]: Started The Apache HTTP Server. +``` + +同样的,我们可以通过 SSH 在本地系统上运行远程系统上的任何命令或脚本。 + +#### 1.4、通过 SSH 在远程系统上运行本地脚本 + +让我们在本地系统上创建一个简单的脚本来显示关于远程系统的发行版名称、包管理和基本细节等。 + +``` +$ vi system_information.sh +``` + +添加以下行: + +``` +#!/bin/bash +#Name: Display System Details +#Owner: OSTechNIx +#---------------------------- +echo /etc/*_ver* /etc/*-rel*; cat /etc/*_ver* /etc/*-rel* +``` + +按下 `ESC` 键,输入 `:wq` 保存退出。 + +现在,通过 SSH 命令在远程系统上运行这个脚本: + +``` +$ ssh sk@192.168.225.22 'bash -s' < system_information.sh +``` + +示例输出: + +``` +sk@192.168.225.22's password: +/etc/debian_version /etc/lsb-release /etc/os-release +buster/sid +DISTRIB_ID=Ubuntu +DISTRIB_RELEASE=18.04 +DISTRIB_CODENAME=bionic +DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS" +NAME="Ubuntu" +VERSION="18.04.2 LTS (Bionic Beaver)" +ID=ubuntu +ID_LIKE=debian +PRETTY_NAME="Ubuntu 18.04.2 LTS" +VERSION_ID="18.04" +HOME_URL="https://www.ubuntu.com/" +SUPPORT_URL="https://help.ubuntu.com/" +BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" +PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" +VERSION_CODENAME=bionic +UBUNTU_CODENAME=bionic +``` + +如果你没有在上面的命令中指定 `bash -s`,你将获得远程系统的详细信息,但伪终端不会被分配。 + +#### 1.5、将远程主机的命令输出保存到本地主机 + +如果你希望与支持团队或同事共享远程系统上运行的命令输出,那么这非常有用。 + +以下命令将通过 SSH 在远程系统运行 `du -ah`,并将输出保存在本地系统的 `diskusage.txt` 文件中。 + +``` +$ ssh sk@192.168.225.22 du -ah > diskusage.txt +``` + +然后,你可以通过使用 `cat` 命令或文本编辑器查看 `diskusage.txt` 文件来分析磁盘使用细节。 + +``` +$ cat diskusage.txt +4.0K ./.profile +4.0K ./.gnupg/private-keys-v1.d +8.0K ./.gnupg +76K ./data/image.jpg +128K ./data/file.pdf +20K ./data/text.docx +5.9M ./data/audio.mp3 +6.1M ./data +0 ./.sudo_as_admin_successful +4.0K ./pacman?inline=false +4.0K ./.bash_logout +4.0K ./.wget-hsts +4.0K ./.bash_history +0 ./.cache/motd.legal-displayed +4.0K ./.cache +4.0K ./deb-pacman_1.0-0.deb +4.0K ./.bashrc +6.2M . +``` + +#### 1.6、配置 SSH 密钥认证,避免输入密码 + +如果你经常在远程系统上运行命令,你可能需要配置基于 SSH 密钥的身份验证,以便每次跳过密码输入。更多细节可以在以下链接中找到。 + +> **[Linux 系统下如何配置 SSH 密钥认证][7]** + +配置了基于 SSH 密钥的认证后,我们可以通过 SSH 在远程机器上执行命令,从而不需要输入密码: + +``` +$ ssh sk@192.168.225.22 sudo apt update +``` + +### 2、通过 sshpass 在远程机器上运行命令 + +如果你不想配置基于 SSH 密钥的身份验证,你可以使用 `sshpass` 实用程序。 + +#### 2.1、什么是 sshpass? + +`sshpass` 是为使用键盘交互密码身份验证模式运行 ssh 而设计的,但它以非交互的方式。简单来说,`sshpass` 提供了非交互式的方式来验证 SSH 会话。 + +SSH 使用直接 TTY 访问来确保密码确实是由交互式键盘用户发出的。`sshpass` 在一个专用 tty 中运行 SSH,让它误以为从交互用户那里获得了密码。 + +#### 2.2、在 Linux 中安装 sshpass + +在许多 Linux 发行版的默认仓库中都有 `sshpass` 实用程序。例如,在 Debian、Ubuntu 及其衍生版本中,你可以使用下面的命令来安装 `sshpass`: + +``` +$ sudo apt install sshpass +``` + +#### 2.3、通过 SSH 和 sshpass 在远程机器上执行命令 + +`sshpass` 可以通过参数接受密码,或者通过环境变量读取密码,也可以从文本文件中读取密码。 + +**警告:** 所有这些方法都是 **高度不安全的**。所有系统用户都可以通过 `ps` 命令看到命令中的密码。**不建议**在生产中使用这些方法。最好使用基于密钥的身份验证。 + +让我们看看每种方法的示例。 + +##### 将密码作为参数提供 + +将密码作为参数提供,使用 `-p` 选项,如下所示: + +``` +$ sshpass -p ssh remoteuser@ip-address +``` + +示例输出: + +``` +$ sshpass -p ubuntu ssh ostechnix@192.168.1.30 uname -a +``` + +其中, + +* `-p ubuntu` - 提供远程系统的密码。 +* `ostechnix@192.168.1.30` - 远程系统用户名和地址。 +* `uname -a` - 要在远程计算机上执行的命令。 + +示例输出: + +``` +Linux Ubuntu22CT 5.15.60-1-pve #1 SMP PVE 5.15.60-1 (Mon, 19 Sep 2022 17:53:17 +0200) x86_64 x86_64 x86_64 GNU/Linux +``` + +##### 密码作为环境变量提供 + +在这个方法中,我们声明一个名为 `SSHPASS` 的环境变量,用远程环境的密码作为其值。然后我们使用 `-e` 标志,如下所示: + +``` +$ SSHPASS=ubuntu sshpass -e ssh ostechnix@192.168.1.30 uname -a +``` + +##### 从文本文件中读取密码 + +使用 `echo` 命令在文本文件中追加密码: + +``` +$ echo "ubuntu" > mypassword.txt +``` + +现在,将密码文件传递给带有 `-f` 标志的 `sshpass`,如下所示: + +``` +$ sshpass -f mypassword.txt ssh ostechnix@192.168.1.30 uname -a +``` + +![通过 SSH 和 sshpass 在远程机器上执行命令][8] + +### 总结 + +在本教程中,我们学习了一些通过安全的网络连接在远程计算机上调用命令或程序的方法。在所有的方法中,`sshpass` 方法是最不安全的,建议用户避免在生产系统中使用它。 + +-------------------------------------------------------------------------------- + +via: https://ostechnix.com/execute-commands-on-remote-linux-systems-via-ssh/ + +作者:[sk][a] +选题:[lkxed][b] +译者:[MjSeven](https://github.com/MjSeven) +校对:[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-keep-ownership-and-file-permissions-intact-when-copying-files-or-directories/ +[2]: https://ostechnix.com/find-out-the-linux-distribution-name-version-and-kernel-details/ +[3]: https://ostechnix.com/wp-content/uploads/2019/12/Execute-Commands-On-Remote-Linux-Systems-Via-SSH.gif +[4]: https://ostechnix.com/how-to-change-apache-ftp-and-ssh-default-port-to-a-custom-port-part-3/ +[5]: https://ostechnix.com/wp-content/uploads/2019/12/Run-multiple-commands-on-remote-systems-via-SSH-on-Linux.png +[6]: https://ostechnix.com/wp-content/uploads/2019/12/Run-commands-with-sudo-privileges-on-remote-systems-via-SSH.png +[7]: https://ostechnix.com/configure-ssh-key-based-authentication-linux/ +[8]: https://ostechnix.com/wp-content/uploads/2022/09/Execute-Commands-On-Remote-Machines-Over-SSH-With-sshpass.png diff --git a/published/202211/20221004 5 Best Python IDE-s- and Code Editor-s-.md b/published/202211/20221004 5 Best Python IDE-s- and Code Editor-s-.md new file mode 100644 index 0000000000..edd7c987d6 --- /dev/null +++ b/published/202211/20221004 5 Best Python IDE-s- and Code Editor-s-.md @@ -0,0 +1,247 @@ +[#]: subject: "5 Best Python IDE(s) and Code Editor(s)" +[#]: via: "https://www.debugpoint.com/5-best-python-ide-code-editor/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15288-1.html" + +6 个最好的 Python IDE 和代码编辑器 +====== + +![][0] + +> 我们列出了 2022 年适用于 Linux 和 Windows 的六个最佳 Python 代码编辑器。 + +如今,[Python][1] 无处不在,它可以说是现代版的 C 语言编程语言。从网站、应用程序、数据科学项目、人工智能到物联网设备,你可以发现 Python 无处不在。因此,作为这十年来流行的编程语言,了解 Python 的开发环境是很有必要的,开发人员用它创建应用程序,特别是如果你是刚刚开始学习 Python 编程,更需要了解 Python 开发环境。 + +许多 Python 开发环境都提供了可以满足你需求的功能和工具。其中有些环境对学习 Python 的初学者很有用,而另外一些用户则适用于重型 Python 开发和复杂的设置。在这里,在这篇文章中,我将谈一谈其中最好的几个,这将有助于你根据自己的需要和使用情况选择一个。 + +### 最好的 Python 编码编辑器 + +这个榜单上有以下几个编辑器: + +1. Visual Studio Code +2. Eclipse +3. PyCharm +4. Spyder +5. Sublime Text +6. Thonny + +#### 1、Visual Studio Code + +![Visual Studio Code][46] + +尽管它是微软创造的,但 Visual Studio Code 是最好的代码编辑器之一。不仅是 Python,对于所有流行和趋势的编程语言都是。 + +它具有语法高亮、代码补完、调试、代码片段、内置 Git 等诸如此类的功能。对于新手来说,它有点复杂,但也只需几个小时就能学会。 + +然而,它是用 Electron 框架构建的,可能会感觉稍微慢一些。但在高端的开发硬件下这不是问题。它是一个自由开源的应用程序,适用于 Linux、macOS 和 Windows。 + +以下是适用于 Ubuntu、Fedora 和相关发行版的单个 deb 和 RPM 包: + +> **[下载 VS Code][47]** + +你也可以为 Flatpak 设置你的系统,并从终端运行以下命令,在所有 Linux 发行版上安装它。 + +``` +flatpak install flathub com.visualstudio.code +``` + +#### 2、带有 PyDev 的 Eclipse + +![Eclipse 编辑器][2] + +[Eclipse][3] 是一个由 IBM 开发的自由开源的 IDE。这个完备的 IDE 可用于 Java 和 Android 开发。然而,它也支持许多其他编程语言,包括 Python。你可以将 Eclipse 与流行的 PyDev 插件一起使用,它可以将 Eclipse 转换成一个完整的 Python 开发环境。通过将 PyDev 集成在 Eclipse 中,你可以进行编译、代码分析、实时调试、交互式控制台访问,以及更多的功能。 + +优势: + +* 丰富的功能和完整的 Python 开发 IDE。 + +劣势: + +* 对系统性能有很大影响。 +* 针对高级用户。 + +安装和更多信息: + +* 平台:Linux、Mac 和 Windows +* 类型:集成开发环境 +* 价格:免费 +* 源代码:开源 +* 官方下载链接:[PyDev][4]、[Eclipse][5] +* 官方网站:[Eclipse][6]、[PyDev 插件][7] +* Flatpak:[Eclipse for Java 通过 Flathub 以 Flatpak 的形式提供][8],你可以在 [设置 Flatpak][9] 之后尝试这个版本 + +#### 3、PyCharm 编辑器 + +![PyCharm 编辑器][14] + +由 JetBrains 开发的 [PyCharm][15] 提供了智能代码补完、代码检查、即时错误高亮、快速修复、自动代码重构和丰富的导航功能。 + +PyCharm 开箱即用的大量工具包括:集成的调试器和测试运行器;Python 剖析器;内置终端;与主要版本控制系统和内置数据库工具的集成;借助远程解释器提供的远程开发能力;集成 SSH 终端;以及与 Docker 和 Vagrant 的集成。 + +除了 Python,PyCharm 还为各种 Python 网页开发框架、特定模板语言、JavaScript、CoffeeScript、TypeScript、HTML/CSS、AngularJS、Node.js 等提供了一流的支持。 + +PyCharm 有两个版本的安装程序:专业版和社区版。社区版是自由开源的。专业版不是免费的,因为它带有专业工具和广泛的支持。专业版有一个不到 10 美元的月度订阅版本,供个人使用。 + +然而,如果你是一个初学者,你可以从 PyCharm 免费的社区版开始。 + +它适用于科学和网页 Python 开发。具有 HTML、JS 和 SQL 支持。 + +优势: + +* 为专业人士提供先进的现代编辑功能,有助于快速开发。 + +劣势: + +* 大多数专业工具都在付费版本中提供(个人使用时每月约 8 至 10 美元)。 + +安装和其他信息: + +* 平台:Linux、Mac 和 Windows +* 类型:IDE +* 价格:免费(社区版)和付费(专业版) +* 源代码:开源(社区版) +* [官方下载链接][16] +* Flatpak:你可以在 [为 Flatpak 设置你的 Linux 系统][18] 之后安装 [Flathub 提供的社区版本][17] + +#### 4、Spyder 编辑器 + +![Spyder Editor][23] + +[Spyder][24] 是一个强大的 Python 编辑器,是用 Python 编写的。它是为科学家、工程师和数据科学家所设计的。它将综合开发工具的高级编辑、分析、调试和剖析功能与科学软件包的数据探索、交互式执行、深度检查和漂亮的可视化功能独特地结合起来。 + +优势: + +* 轻量级和免费 + +劣势: + +* 你必须把它作为 Anaconda 软件包的一部分来下载。没有独立的安装程序。 + +安装和其他说明: + +* 平台:Anaconda +* 类型:IDE +* 价格:免费 +* 源代码:开源 +* [官方下载链接][25] +* [官方网站][26] + +#### 5、Sublime Text + +![Sublime Text][27] + +[Sublime Text][28] 是一个支持 Python 编程的复杂的代码编辑器。它是一个跨平台的工具,原生支持许多编程语言。你可以使用插件来扩展其特性和功能。Sublime Text 带有提高生产力的功能,如 “Goto anything”,可以同时对文件的多个部分进行修改。 + +优点: + +* 轻量级、免费、可用于 Windows、Mac 和 Linux。 + +缺点: + +* 它是免费评估的,但你必须购买一个许可证来进行高级使用。(LCTT 译注:但可以一直免费评估,而不限制时间,只是会时不时提醒) + +其他信息和安装: + +* 平台:Windows、Linux、OS X +* 类型:IDE +* 价格:免费,但必须购买许可证才能继续使用 +* 源代码:闭源 +* [官方下载链接][29] +* [官方网站][30] +* Flatpak:Sublime Text 可以通过 [Flathub 以 Flatpak 软件包][31] 获得。设置你的 [Linux 上的 Flatpak][32],然后安装它。 + +#### 6、Thonny Python 编辑器 + +![Thonny 编辑器][37] + +[Thonny][38] 是一个面向初学者的 Python IDE,使用起来很简单。它内置了最新的 Python(截至本文撰写时为 3.7+),所以你不需要在你的操作系统中单独安装 Python。用户界面毫不杂乱,对初学者来说没有任何干扰。Thonny 的其他一些显著特点包括:变量视图、简单调试器、单步调试和语法错误。 + +优点: + +* 轻量级、免费,可用于 Windows、Mac 和 Linux。 +* 非常适合 Python 的绝对初学者(甚至是编码的初学者)。 + +缺点: + +* 由于它是一个初学者的 IDE,所以只有基本的功能。 + +安装和其他信息: + +* 平台:Windows、Linux 和 Mac +* 类型:IDE +* 价格:免费 +* 源代码:开源 +* [官方下载链接][39] +* Flatpak:它通过 [Flathub 以 Flatpak][40] 的形式提供。设置你的 [Linux 系统安装 Flatpak][41],然后去安装它。 + +--- + +有很多 Python 编辑器可用,这些是用于编码的六个最好的 Python 编辑器。你可以尝试其他值得注意的 Python 编辑器:VIM、IDLE(默认 Python 自带)、Cloud 9 和 Emacs。 + +🗨️ 你最喜欢哪个编辑器?请在下面的评论区告诉我们。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/5-best-python-ide-code-editor/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.python.org/ +[2]: https://www.debugpoint.com/wp-content/uploads/2020/06/Eclipse-Editor.png +[3]: https://www.eclipse.org/ +[4]: https://www.pydev.org/ +[5]: https://www.eclipse.org/ +[6]: https://www.eclipse.org/ +[7]: https://www.pydev.org/ +[8]: https://flathub.org/apps/details/org.eclipse.Java +[9]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[10]: https://flathub.org/apps/details/org.eclipse.Java +[11]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[12]: https://flathub.org/apps/details/org.eclipse.Java +[13]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[14]: https://www.debugpoint.com/wp-content/uploads/2020/06/PyCharm-Editor.png +[15]: https://www.jetbrains.com/pycharm/ +[16]: https://www.jetbrains.com/pycharm/download/ +[17]: https://flathub.org/apps/details/com.jetbrains.PyCharm-Community +[18]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[19]: https://flathub.org/apps/details/com.jetbrains.PyCharm-Community +[20]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[21]: https://flathub.org/apps/details/com.jetbrains.PyCharm-Community +[22]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[23]: https://www.debugpoint.com/wp-content/uploads/2020/06/Spyder-Editor.png +[24]: https://www.spyder-ide.org/ +[25]: https://www.anaconda.com/download/ +[26]: https://www.spyder-ide.org/ +[27]: https://www.debugpoint.com/wp-content/uploads/2020/06/Sublime-Text-Editor.png +[28]: https://www.sublimetext.com/ +[29]: https://www.sublimetext.com/3 +[30]: https://www.sublimetext.com/ +[31]: https://flathub.org/apps/details/com.sublimetext.three +[32]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[33]: https://flathub.org/apps/details/com.sublimetext.three +[34]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[35]: https://flathub.org/apps/details/com.sublimetext.three +[36]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[37]: https://www.debugpoint.com/wp-content/uploads/2020/06/Thonny-Editor.png +[38]: https://thonny.org/ +[39]: https://thonny.org/ +[40]: https://flathub.org/apps/details/org.thonny.Thonny +[41]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[42]: https://flathub.org/apps/details/org.thonny.Thonny +[43]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[44]: https://flathub.org/apps/details/org.thonny.Thonny +[45]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[46]: https://www.debugpoint.com/wp-content/uploads/2022/10/Visual-Studio-Code.jpg +[47]: https://code.visualstudio.com/ +[0]: https://img.linux.net.cn/data/attachment/album/202211/25/114333wj3t354qjhrggrvw.jpg \ No newline at end of file diff --git a/published/202211/20221013 What you need to know about compiling code.md b/published/202211/20221013 What you need to know about compiling code.md new file mode 100644 index 0000000000..88ca0a42d1 --- /dev/null +++ b/published/202211/20221013 What you need to know about compiling code.md @@ -0,0 +1,103 @@ +[#]: subject: "What you need to know about compiling code" +[#]: via: "https://opensource.com/article/22/10/compiling-code" +[#]: author: "Alan Smithee https://opensource.com/users/alansmithee" +[#]: collector: "lkxed" +[#]: translator: "Donkey-Hao" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15213-1.html" + +关于编译代码你应该知道的 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/04/054126nec50keexencosc4.jpg) + +> 用这个方便的捕鼠器比喻来理解编译代码。 + +源代码必须要经过编译才能够运行程序,而对于开源软件,每个人都可以获取源代码。无论你是自己编写了代码,想要编译和运行它,还是下载了某人的项目来尝试它,了解如何通过 [编译器][2] 处理源代码,以及编译器如何处理这些代码,这都很有用。 + +### 创建一个更好的捕鼠器 + +一般情况我们不会将一个捕鼠器比作电脑,但不管你信不信,它确实与你正在使用的设备(手机或电脑)的 CPU 有一些相似之处。经典的捕鼠器(我说的不是 🐈)有两种状态:打开或者释放。你可以认为 *打开* 是将捕鼠器设置好准备捕获老鼠,以及 *释放* 是捕鼠器被老鼠触发。某种意义上来说,捕鼠器就像是一台有鼠标的电脑。你可以想象一下这个代码,用一种虚构的语言来描述这个过程: + +``` +if mousetrap == 0 then + There's a mouse! +else + There's no mouse yet. +end +``` + +换句话说,你可以基于捕鼠器的状态发现是否有老鼠(数据)。当然,捕鼠器不是万无一失的,有可能有一只老鼠在捕鼠器旁边,由于老鼠还没有触发捕鼠器,所以它的状态还是 *打开* 的。因此该程序可以进行改进,这都是非常典型的。 + +### 开关 + +总的来说,捕鼠器就是一个开关。你会在家里使用开关打开灯。可以从开关中获得许多信息。比如,人们会从你家灯的状态了解到你是否在家。 + +你可以根据邻居家灯的状态来改变行为。如果邻居家所有的灯都熄灭了,那么请关掉你大声的音乐,因为人们可能已经上床睡觉了。 + +CPU 也使用这样的逻辑,只不过乘以几个数量级,缩小到了微观级别。当 CPU 在特定寄存器上接收到电信号时,可以触发其他一些寄存器,然后触发另一个,以此类推。如果这些寄存器有特定的意义,那么就可以通信。也许激活同一主板上某处的芯片,或者使 LED 亮起,或者改变屏幕上的像素颜色。 + +种瓜得瓜,种豆得豆。如果你真的想在多个位置而不是仅限于一处发现老鼠,但是你只有一个捕鼠器,那你应该开发一个应用才行。使用网络摄像头和一些基本的图像识别软件,你可以建立空厨房的模型,然后扫描变化。当老鼠进入厨房,在原先没有老鼠的图像上会有像素的变化。记录下这些数据,如果有无人机可以追踪老鼠并捕获会更好,这样就可以将老鼠赶出厨房了。这时,你通过打开和关闭信号的魔法,创造了一个更好的捕鼠器。 + +### 编译器 + +代码编译器将人们可阅读的代码转换成 CPU 可以理解的机器语言。这是非常复杂的过程,因为 CPU 非常复杂(甚至比捕鼠器更加复杂),同时因为该过程比严格“需要”的更加灵活。并不是所有的编译器都很灵活。有一些编译器只有一个目标,它们只会处理特定格式的代码文件,处理过程也因此而简单明了。 + +幸运的是,现代的通用编译器并不简单。它们允许你编写不同语言的代码,也允许你用不同的方式链接库文件,并且可以生成运行在不同架构上的文件。[GNU 编译器集合][4](GCC)的 `gcc` 编译器 `--help` 会输出超过 50 行的选项,LLVM 的 `clang` 编译器的 `--help` 输出超过 1000 行。GCC 指导手册的字数超过 10 万。 + +当你在编译代码时会有很多选项。 + +当然,大多数人并不需要知道所有的选项。我从未读过 GCC 的手册页,因为它们是针对 Objective-C、Fortran 以及我从未听说过的芯片架构的。不过我重视它将代码编译为不同的架构 —— 64 位或者 32 位 —— 的能力,以及在其他行业已经落后的计算机上运行开源软件的能力。 + +### 编译生命周期 + +同样重要的是,理解编译代码的不同阶段。这是一个简单的 C 语言程序的生命周期: + +1. 带有宏定义的 C 源代码 `.c` 文件,用 `cpp` 预处理为 `.i` 文件。 +2. 扩展了宏定义的 C 源代码 `.i` 文件,会被 `gcc` 转译成 `.s` 文件。 +3. 以汇编语言写的文本文件 `.s` 文件被汇编为目标 `.o` 文件。 +4. 带有 CPU 指令的二进制目标代码,以及其他目标文件和库 `*.o` 文件,以内存区域无关的偏移量,使用 `ld` 链接以生成可执行文件。 +5. 最终的二进制文件要么包含所有需要的目标,要么设置以动态链接库 `*.so` 文件加载。 + +你可以试试这个简单示例(可能需要对库路径做一些调整): + +``` +$ cat << EOF >> hello.c + #include + int main(void) + { printf("hello world\n"); + return 0; } + EOF +$ cpp hello.c > hello.i +$ gcc -S hello.i +$ as -o hello.o hello.s +$ ld -static -o hello \ + -L/usr/lib64/gcc/x86_64-slackware-linux/5.5.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 world +``` + +### 可获得的知识 + +计算机已经变得非常强大,并且用户友好。请不要走向这两种可能的极端中的任何一种:计算机不像捕鼠器和电灯开关那么简单,但它们也不是无法理解的。你可以了解编译代码、如何链接以及针对不同架构进行编译。一旦你知道了,你就可以更好地调试代码。你可以理解你下载的代码,甚至可以修复其中的一两个错误。同时从理论上来讲,你可以建造一个更好的捕鼠器,或者用捕鼠器造一个 CPU。由你决定。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/compiling-code + +作者:[Alan Smithee][a] +选题:[lkxed][b] +译者:[Donkey-Hao](https://github.com/Donkey-Hao) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/alansmithee +[b]: https://github.com/lkxed +[2]: https://opensource.com/article/19/5/primer-assemblers-compilers-interpreters +[3]: https://opensource.com/article/22/9/python-interpreters-2022 +[4]: https://opensource.com/article/22/5/gnu-c-compiler diff --git a/published/202211/20221014 13 Independent Linux Distros That are Built From Scratch.md b/published/202211/20221014 13 Independent Linux Distros That are Built From Scratch.md new file mode 100644 index 0000000000..37eee8a1c9 --- /dev/null +++ b/published/202211/20221014 13 Independent Linux Distros That are Built From Scratch.md @@ -0,0 +1,312 @@ +[#]: subject: "13 Independent Linux Distros That are Built From Scratch" +[#]: via: "https://itsfoss.com/independent-linux-distros/" +[#]: author: "sreenath https://itsfoss.com/author/sreenath/" +[#]: collector: "lkxed" +[#]: translator: "MuggleWei" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15251-1.html" + +13 个从头开始构建的独立 Linux 发行版 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/14/095522os6236zrzcgs79e9.jpg) + +时至今日,世界上已经有成百上千种不同的 Linux 发行版。 + +它们中的大多数都可以被划归为三个大类 : Debian、Red Hat(Fedora)以及 Arch Linux。 + +使用基于 Debian/Ubuntu、Red Hat/SUSE 或者 Arch 的 Linux 发行版自然有它们的优势。它们很受大众欢迎,因此它们的包管理器能够提供大量的软件包。 + +然而,有一些用户更倾向于使用从头开始构建、独立于 DEB/RPM 这类包管理系统之外的发行版。 + +在这篇文章当中,我们将列出一些优秀的独立 Linux 发行版。 + +> **注意 :** 显然,下面的列表显然不会包括一些广受欢迎,通常作为创建新发行版的基础的发行版,如 Debian、Ubuntu 和 Fedora 等。此外,列表顺序不分先后,没有特定的排名。 + +### 1、NixOS + +![Image Credits: Distrowatch][1] + +NixOS 最初发布于 2003 年,NixOS 建立在 Nix 包管理器之上。它每年发布两个版本,通常是在 5 月和 11 月。 + +NixOS 可能不是一个直接面向新用户或普通用户的发行版。然而,其独特的 [包管理][2] 方法吸引了各种用户。 + +此外,它仍然支持 32 位系统。 + +其他特性: + +* 构建隔离的包 +* 可靠的升级,并且具有回滚功能 +* 可重现的系统配置 + +> **[NixOS][3]** + +### 2、Gentoo Linux + +![Image Credits: Distrowatch][5] + +Geetoo Linux 是一个主要针对操作系统专家的独立 Linux 发行版。它是为那些希望自由定制、微调和优化操作系统以满足其要求的用户而构建。 + +Gentoo 使用 [Portage 包管理器][6] 来创建和安装软件包,通常还允许你针对你的硬件来优化它们。Chrome 的开源版本 **Chromium OS** 便是使用 Gentoo 作为其核心的。 + +不要忘记,Gentoo 是 [仍然支持 32 位架构的发行版][7] 之一。 + +其他特性: + +* 增量更新 +* 基于源码的软件管理方法 +* 支持 GURU(Gentoo 用户仓库)的层叠 Overlay 仓库的概念,允许用户添加 Gentoo 尚未提供的软件包 + +> **[Gentoo Linux][8]** + +### 3、Void Linux + +![Image Credits: Distrowatch][9] + +Void Linux 是一个 [滚动发布的发行版][10],使用 X 二进制软件包系统(XBPS)来安装和删除软件。它由前 NetBSD 开发者 Juan Romero Pardines 创建。 + +它使用 runit 而不是 systemd 作为其初始化系统。此外,它还让你可以选择使用多个 [桌面环境][11]。 + +其他特性: + +* 最小化的系统要求 +* 官方库也提供非自由软件包 +* 支持树莓派 +* 集成 OpenBSD 的 LibreSSL +* 支持 musl C 库 +* 支持 32 位系统 + +> **[Void Linux][12]** + +### 4、Solus Linux + +![solus budgie 2022][14] + +Solus 的前身是 EvolveOS,它从头开始构建并提供了一些令人兴奋的特性。Solus 的旗舰版本使用自己打造的 Budgie 作为桌面环境。 + +与本篇文章介绍的其他系统相比,Solus 对于新手较为友好。它设法成为 [最好的 Linux 发行版][15] 之一。 + +它使用 eopkg 作为其包管理系统,支持版滚动发布模型。按照开发人员的说法,开发 Solus 的目标是用于个人电脑。 + +其他特性: + +* 支持 Budgie、Gnome、MATE 和 KDE Plasma +* 各种开箱即用的软件,从而减少设置工作 + +> **[Solus Linux][16]** + +### 5、Mageia + +![Image Credits: Distrowatch][17] + +Mageia 始于 2010 年,它是 Mandriva Linux 的一个分支。它的目标是成为稳定且安全的桌面和服务器操作系统。 + +Mageia 是一个社区驱动的项目,由非营利组织和贡献者支持。每年会发布一个大版本。 + +其他特性: + +* 支持 32 位系统 +* 支持 KDE Plasma、Gnome 和 XFCE +* 最低的系统要求 + +> **[Mageia][18]** + +### 6、Clear Linux + +![Image Credits: Distrowatch][20] + +Clear Linux 是一个由英特尔发布的发行版,主要设计考虑是性能和云服务的使用。 + +有趣的是,Clear Linux 升级时是作为一个整体而非去升级单个的软件包。所以,即使你不小心弄乱了系统设置,它也可以正确的启动,执行恢复出厂设置,并让用户重新设置。 + +它不太适合个人用户使用。但可以作为一个独特的选择而尝试一下。 + +其他特性: + +* 针对英特尔平台的高度调优 +* 用户和系统文件之间严格分离 +* 持续的漏洞扫描 + +> **[Clear Linux OS][21]** + +### 7、PCLinuxOS + +![Image Credits: Distrowatch][22] + +PCLinuxOS 是一个 x86_64 的 Linux 发行版,使用 APT/RPM 包管理。你可以使用 KDE Plasma、Mate 以及 XFCE 桌面,它同时还提供了更多特性的社区版本的桌面。 + +得益于 [Synaptic 包管理器][23],本地安装的 PCLinuxOS 采用了 APT 包管理系统。但你也可以从它的仓库中找到 RPM 包。 + +其他特性: + +* mylivecd 脚本允许用户去生成一个当前已安装的硬件驱动的“快照”(所有的配置、应用、文档等)并且将它压缩为 ISO CD/DVD/USB 镜像 +* 额外支持超过 85 种语言 + +> **[PCLinuxOS][24]** + +### 8、4MLinux + +![4m linux 2022][25] + +[4MLinux][26] 是一个通用的 Linux 发行版,重点聚焦于下面四个 **“M”** + +* 维护Maintenance(系统救援 Live CD) +* 多媒体Multimedia(支持大量的图形、音频和视频格式) +* 微服务器Miniserver(支持 DNS、FTP、HTTP、MySQL、NFS、Proxy、SMTP、SSH 和 Telnet) +* 神秘Mystery(包含了经典 Linux 游戏的集合) + +它具有最低的系统要求,可作为桌面和服务器版本使用. + +其他特性: + +* 支持大量的图形、音频和视频格式 +* 是小型并且通用的 Linux 发行版 + +> **[4MLinux][27]** + +### 9、Tiny Core Linux + +![Image Credits: Distrowatch][28] + +Tiny Core Linux 专注于使用 BusyBox 和 FLTK 提供一个基础的系统。它不是一个完备的桌面,所以,并不能保证它可以运行于任何系统。 + +它只是一个启动到非常精简的 X 桌面所需的核心,通常带有有线互联网访问权限。 + +用户可以很好的控制一切,但对于新 Linux 用户来说,它并不是一个轻松的开箱即用的系统。 + +其他特性: + +* 旨在从启动时创建的内存副本中运行 +* 默认情况下,其操作就像像云端 / 互联网客户端一样 +* 用户可以使用 appbrowser 来游览库以及下载应用 + +> **[Tiny Core Linux][29]** + +### 10、Linux From Scratch(LFS) + +![Image Credit: Reddit][30] + +[Reddit][31] + +Linux From Scratch(LFS)并不是一个系统,而是通过手动构建所有组件来安装 Linux 的一种方法。一旦完成,它提供了一个紧凑、灵活和安全的系统,并且可以很好的理解一个基于 Linux 的操作系统内部是如何工作的。 + +如果你希望去深入理解 Linux 是如何工作的并且探寻其具体细节,那么 Linux From Scratch(LFS) 是你一定要去尝试,不能错过的一个项目。 + +其他特性 + +* 完全从头开始,定制化的构建 Linux 系统 +* 极度的灵活性 +* 由于从源码开始编译,提供了额外的安全性 + +> **[Linux From Scratch][32]** + +### 11、Slackware + +![Image Credits: Distrowatch][33] + +Slackware 是现今还在维护的最古老的发行版。最初创建于 1993 年,以 Softlanding Linux 系统为基础,随后,许多的 Linux 发行版都是基于 Slackware。 + +Slackware 目标是称为最类似于 UNIX 的 Linux 发行版,同时保持简单和稳定。 + +其他特性: + +* 支持 32 位和 64 位系统 +* 大量的在线文档 +* 从奔腾处理器到最新的机器,它都可以运行 + +> **[Slackware][34]** + +### 12、Alpine Linux + +![alpine linux xfce 2022][35] + +Alpine Linux 是一个社区开发的操作系统,专为路由器、防火墙、VPN、VoIP 盒子和服务器而设计。它是 LEAF 项目的一个分支。 + +Alpine Linux 使用 apk-tools 包管理器,最初由 shell 脚本编写,而后使用 c 语言重构。它是最小的 Linux 发行版之一,仍然支持 32 位系统,并且是一个可以完全从电脑内存运行的操作系统。 + +其他特性: + +* 提供大小仅为 5MB 的最小容器镜像 +* 对于主库,提供 2 年的支持;对于社区库,在下一个稳定版本发布前提供支持 +* 使用 musl libc 制作,Busybox 使用资源效率高的容器 + +> **[Alpine Linux][36]** + +### 13、KaOS + +![Image Credits: Distrowatch][37] + +KaOS 是一个受到 Arch 启发,从头开始构建的 Linux 发行版。它使用 [pacman 包管理器][38]。它是按照"*一个桌面环境(KDE Plasma),一个工具包(Qt),一个架构(X86_64)*"的理念构建的。 + +它的软件库比较有限,但依然为普通用户提供了许多工具。 + +其他特性: + +* 最新的 Plasma 桌面 +* 紧密集成的滚动和透明的现代桌面发行版 + +> **[KaOS][39]** + +#### 总结 + +如果你需要一些独特的体验,那么这些独立 Linux 发行版应该能很好的满足你。 + +然而,如果你想要用其来替换如 Ubuntu 这样主流的 Linux 发行版作为你的桌面系统……你也许需要三思而后行,上面大多数的发行版(并不代表所有)都不是一个日常使用的桌面系统的理想的选项。 + +但是话又说回来,如果你对 Linux 发行版充满了经验,那么毫无疑问,你会享受这项冒险的任务的。 + +*如果你想尝试这些独立发行版的其中一种,哪一个会是你的优先选择呢 ? 请在评论中与我们分享。* + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/independent-linux-distros/ + +作者:[sreenath][a] +选题:[lkxed][b] +译者:[MuggleWei](https://github.com/MuggleWei) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux 中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/sreenath/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/wp-content/uploads/2022/10/nixos-2022.png +[2]: https://itsfoss.com/package-manager/ +[3]: https://nixos.org/ +[4]: https://itsfoss.com/advanced-linux-distros/ +[5]: https://itsfoss.com/wp-content/uploads/2022/08/gentoo-linux-plasma.jpg +[6]: https://wiki.gentoo.org/wiki/Portage +[7]: https://itsfoss.com/32-bit-linux-distributions/ +[8]: https://www.gentoo.org/ +[9]: https://itsfoss.com/wp-content/uploads/2022/08/void-linux.jpg +[10]: https://itsfoss.com/rolling-release/ +[11]: https://itsfoss.com/best-linux-desktop-environments/ +[12]: https://voidlinux.org/ +[13]: https://itsfoss.com/systemd-free-distros/ +[14]: https://itsfoss.com/wp-content/uploads/2022/10/solus-budgie-2022.jpg +[15]: https://itsfoss.com/best-linux-distributions/ +[16]: https://getsol.us/home/ +[17]: https://itsfoss.com/wp-content/uploads/2022/08/mageia-1.jpg +[18]: https://www.mageia.org/en/ +[19]: https://itsfoss.com/32-bit-linux-distributions/ +[20]: https://itsfoss.com/wp-content/uploads/2022/08/clear-linux-desktop.png +[21]: https://clearlinux.org/ +[22]: https://itsfoss.com/wp-content/uploads/2022/08/pclinuxos.png +[23]: https://itsfoss.com/synaptic-package-manager/ +[24]: https://www.pclinuxos.com/ +[25]: https://itsfoss.com/wp-content/uploads/2022/10/4m-linux-2022.jpg +[26]: https://itsfoss.com/4mlinux-review/ +[27]: http://4mlinux.com/ +[28]: https://itsfoss.com/wp-content/uploads/2022/03/tinycore.jpg +[29]: http://www.tinycorelinux.net/ +[30]: https://itsfoss.com/wp-content/uploads/2022/08/enable-aur-e1659974408774.png +[31]: https://www.reddit.com/r/linuxmasterrace/comments/udi7ts/decided_to_try_lfs_in_a_vm_started_about_a_week/ +[32]: https://www.linuxfromscratch.org/ +[33]: https://itsfoss.com/wp-content/uploads/2022/10/slackware-scaled.jpg +[34]: http://www.slackware.com/ +[35]: https://itsfoss.com/wp-content/uploads/2022/10/alpine-linux-xfce-2022.png +[36]: https://www.alpinelinux.org/ +[37]: https://itsfoss.com/wp-content/uploads/2022/08/kaos-desktop.png +[38]: https://itsfoss.com/pacman-command/ +[39]: https://kaosx.us/ diff --git a/published/202211/20221015.0 ⭐️ How to Enable and Access USB Drive in VirtualBox.md b/published/202211/20221015.0 ⭐️ How to Enable and Access USB Drive in VirtualBox.md new file mode 100644 index 0000000000..5f6ec9d629 --- /dev/null +++ b/published/202211/20221015.0 ⭐️ How to Enable and Access USB Drive in VirtualBox.md @@ -0,0 +1,112 @@ +[#]: subject: "How to Enable and Access USB Drive in VirtualBox" +[#]: via: "https://www.debugpoint.com/enable-usb-virtualbox/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15287-1.html" + +如何在 VirtualBox 中启用和访问 U 盘 +====== + +> 这是有关如何在 Oracle VirtualBox 中启用 USB 的指南。 + +![][1] + +当你在虚拟机环境中工作时,USB 通常插入主机系统。但是从客体系统访问 USB 内容有点困难。 + +在 VirtualBox 中,你需要安装一些扩展并启用一些设置才能访问 USB。方法如下。 + +本文假设你已经安装了 VirtualBox,并且还在其中安装了一些 Linux 发行版或操作系统。 + +如果没有,请查看 [这篇文章][2]。 + +> **请注意,Oracle VM VirtualBox 扩展包采用 Oracle 的个人使用和评估许可证(PUEL)。该许可证与 VirtualBox 不同,后者采用的是 GPL。如果你将下面的步骤用于商业目的,请确保你仔细阅读 [本页面][11]。** + +### 在 VirtualBox 7.0 中启用 USB + +#### 安装 VirtualBox 扩展包 + +打开 VirtualBox 下载页面并从 [此链接][3] 下载适用于所有支持平台的 VirtualBox 扩展包。 + +![下载扩展包][4] + +然后单击 “文件File > 工具Tools > 扩展包管理器Extension Pack Manager”。 + +单击工具栏中的 “安装Install” 按钮并选择下载的 .vbox-extpak 文件。 + +点击 “安装Install”。接受条款,并为安装提供管理员密码。 + +![安装扩展包管理器][5] + +![接受条款后安装扩展包管理器][6] + +安装成功后,可以在已安装列表中看到。 + +重启主机系统。重启是强制性的。 + +#### 在客体机中启用 USB + +将 U 盘插入你的宿主机系统,你希望从虚拟机中访问该系统。 + +启动 VirtualBox 并右键单击要启用 USB 的虚拟机名称。选择“设置Settings”。 + +![虚拟机的启动设置][7] + +在左窗格中,单击 USB。然后选择控制器版本。例如,你可以选择 USB 3.0。然后单击小加号图标添加 USB 过滤器。 + +在此列表中,你应该看到你的 U 盘名称(你插入的)。对于这个例子,我可以看到我插入的 Transcend Jetflash 驱动器。 + +选择它并按 “OK”。 + +![选择 U 盘][8] + +现在,启动你的虚拟机。打开文件管理器,你应该会看到 U 盘已启用并挂载到你的虚拟机上。 + +在此演示中,你可以看到我的 [Arch-Xfce][9] 虚拟机的 Thunar 文件管理器正在显示我的 U 盘中的内容。 + +![启用 USB 并从 VirtualBox 访问内容][10] + +### 使用说明 + +现在,这里有几件事你应该记住。 + +当你在主机系统中插入 U 盘时,请保持挂载状态。但在启动虚拟机之前不要打开或访问任何文件。 + +启动虚拟机后,U 盘将在主机系统中卸载并自动挂载到客体系统中,即你的虚拟机。 + +使用完 U 盘后,确保在虚拟机中将其弹出或卸载。然后它将能再从你的主机系统内访问。 + +### 总结 + +VirtualBox 是一个功能强大的程序,提供易于使用的功能来设置的你虚拟机。这些步骤很简单,并确保你的 U 盘在主机系统中被正确检测到以正常工作。 + +另外,请记住,通过扩展包检测 U 盘与 VirtualBox 客户端增强包无关。它们完全不相关并提供独立的功能。 + +最后,如果本指南对你有帮助,请在评论栏中告诉我。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/enable-usb-virtualbox/ + +作者:[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/10/usb-vbox-1024x576.jpg +[2]: https://www.debugpoint.com/tag/virtualbox +[3]: https://www.virtualbox.org/wiki/Downloads +[4]: https://www.debugpoint.com/wp-content/uploads/2022/10/Download-the-extension-pack.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2022/10/install-extension-pack-manager.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2022/10/install-extension-pack-manager-after-accepting-terms.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2022/10/Launch-settings-for-the-virtual-machine.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2022/10/Select-the-USB-stick.jpg +[9]: https://www.debugpoint.com/xfce-arch-linux-install-4-16/ +[10]: https://www.debugpoint.com/wp-content/uploads/2022/10/Enabling-USB-and-accessing-contents-from-VirtualBox.jpg +[11]: https://www.virtualbox.org/wiki/VirtualBox_PUEL \ No newline at end of file diff --git a/published/202211/20221017.1 ⭐️ How to Update or Upgrade Ubuntu Offline without Internet.md b/published/202211/20221017.1 ⭐️ How to Update or Upgrade Ubuntu Offline without Internet.md new file mode 100644 index 0000000000..8e7e78fd04 --- /dev/null +++ b/published/202211/20221017.1 ⭐️ How to Update or Upgrade Ubuntu Offline without Internet.md @@ -0,0 +1,113 @@ +[#]: subject: "How to Update or Upgrade Ubuntu Offline without Internet" +[#]: via: "https://www.debugpoint.com/how-to-update-or-upgrade-ubuntu-offline-without-internet/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "littlebirdnest" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15253-1.html" + +如何在没有互联网连接的情况下离线更新 Ubuntu +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/14/232951blxmbe6wn5eympxq.jpg) + +> 本指南介绍了如何在没有互联网连接的情况下离线更新 Ubuntu 的步骤。 + +在很多情况下,你可能需要在没有互联网连接的情况下更新你的 Ubuntu 系统。你可能在外地不方便上网,也可能你需要更新一堆未联网的 Ubuntu,不管是哪种情况,保持你的系统更新最新的软件包总是需要的。 + +当然,始终建议通过联网来更新系统。 + +但有时,出于安全考虑,这是不行的。连接到互联网可能需要给你的系统进行额外的加固,以保护它们免受黑客和恶意软件的攻击。 + +以下的方法使用 [apt-offline][1] 来解决这些问题,并概述了在没有互联网的情况下离线更新 Ubuntu 的步骤。 + +### 准备环节 + +- 一台能连接到网络的 Ubuntu(你朋友的、咖啡馆、实验室系统) +- 存储了软件包的 U 盘 +- 两个系统都安装了 `apt-offline`:一个系统离线,另一个系统联网 + +### 安装 apt-offline + +在两个系统下安装 `apt-offline`。你可以使用以下命令安装: + +``` +sudo apt install apt-offline +``` + +如果你想在离线的目标系统安装 `apt-offline`,你可以提前下载到 U 盘里,然后复制到目标系统,再使用下面的命令安装。 + +Ubuntu 22.04 LTS 和其他版本的下载链接如下所示。你可以选择一个镜像并下载 deb 文件。 + +> **[下载 .deb 文件 – apt-offline][2]** + +``` +sudo dpkg -i name_of_package.deb +``` + +### 如何更新 Ubuntu + +在离线的目标系统上打开终端,使用以下命令创建一个 .sig 签名文件: + +``` +sudo apt-offline set ~/offline-data.sig +``` + +![创建签名文件][4] + +在这个刚创建的签名文件中,包含下载所需的软件包的路径和详细信息。 + +![签名文件的内容][6] + +把签名文件复制到 U 盘中,再插到联网的 Ubuntu 系统上。 + +在联网的 Ubuntu 上创建一个目录(参见下面)来存放这些文件。 + +打开一个终端,运行以下命令来下载所需的软件包。记得根据你的系统,更改下载目录和 .sig 签名文件的路径。 + +``` +apt-offline get -d ~/offline-data-dir offline-data.sig +``` + +![下载软件包以离线安装][8] + +你可以看到文件相应下载,然后复制整个下载目录到 U 盘,再插到离线的 Ubuntu 系统。 + +运行以下命令将下载的软件包安装到离线系统,记得根据你的系统更改目录路径。 + +``` +sudo apt-offline install offline-data-dir/ +``` + +![安装软件包][10] + +如果一切顺利,你将获得一个更新完的 Ubuntu。 + +重复以上步骤,就可以保持你的离线 Ubuntu 为最新版本。 + +希望以上教程能帮到你更新离线的 Ubuntu 系统,如果你遇到任何问题,请在下面的评论框中告诉我。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/how-to-update-or-upgrade-ubuntu-offline-without-internet/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[littlebirdnest](https://github.com/littlebirdnest) +校对:[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://github.com/rickysarraf/apt-offline +[2]: https://packages.ubuntu.com/focal/all/apt-offline/download +[3]: https://www.debugpoint.com/wp-content/uploads/2021/03/Create-the-sig-file-1024x204.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2021/03/Create-the-sig-file.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2021/03/sig-file-contents-1024x250.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2021/03/sig-file-contents.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2021/03/Download-the-packages-to-install-offline-1024x437.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2021/03/Download-the-packages-to-install-offline.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2021/03/Installing-packages-offline-update-ubuntu-1024x509.jpg +[10]: https://www.debugpoint.com/wp-content/uploads/2021/03/Installing-packages-offline-update-ubuntu.jpg diff --git a/published/202211/20221019.1 ⭐️ How to Install Viber in Ubuntu and Other Linux.md b/published/202211/20221019.1 ⭐️ How to Install Viber in Ubuntu and Other Linux.md new file mode 100644 index 0000000000..79097920ba --- /dev/null +++ b/published/202211/20221019.1 ⭐️ How to Install Viber in Ubuntu and Other Linux.md @@ -0,0 +1,92 @@ +[#]: subject: "How to Install Viber in Ubuntu and Other Linux" +[#]: via: "https://www.debugpoint.com/install-viber-linux/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15205-1.html" + +如何在 Ubuntu 中安装 Viber +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/02/161951egly6ylguc6g0w5g.jpg) + +> 这是在 Ubuntu 和其他 Linux 系统中安装 Viber 的快速指南。 + +[Viber][1] 是一个免费、安全的通话和聊天程序,适用于所有流行的移动平台和操作系统。 + +它具有丰富的功能,例如语音/视频通话、支持 GIF 的文本消息、贴纸、照片和视频。此外,Viber 还具有群聊、群呼和消失消息功能。 + +Viber 是一个闭源程序,但有免费的 Linux 原生可执行客户端。 + +下面是安装它的方法。 + +### 在 Linux 上安装 Viber + +它以 AppImage 可执行文件、deb 和 rpm 包的形式提供。按照下面的相应按钮直接下载。平均可执行文件大小约为 180MB。 + +> **[下载适用于所有 Linux 发行版的 Appimage][2]** + +> **[适用于 Ubuntu 的 Deb 可执行文件][3]** + +> **[Fedora 的 RPM 包][8]** + +如果你已下载 AppImage,只需从任意文件管理器将权限更改为可执行文件即可。然后运行。 + +对于 Ubuntu、Linux Mint、Debian 和相关发行版,你可以通过[多种方法][4]安装 deb 包。 + +你可以通过已安装的软件管理器双击打开。或者通过 `dpkg` 命令安装,如下所示。 + +``` +sudo dpkg -i viber.deb +``` + +对于 Fedora 和基于 RPM 的软件包,你可以通过以下命令安装。 + +``` +sudo dnf localinstall viber.rpm +``` + +对于 Arch Linux 和其他发行版,你可以使用我上面提到的 Appimage。 + +### 使用 + +完成安装 Viber 后,通过应用菜单打开它。以下是你需要记住的几件事。 + +在从笔记本电脑/台式机开始使用 Viber 之前,你需要在手机上进行设置。从以下链接为你的移动平台下载并安装 Viber。 + +- [谷歌应用商店][5] +- [苹果应用商店][6] + +安装后,设置 Viber。请记住,它需要你的手机号码才能注册。 + +设置完成后,在 Linux 桌面上打开应用。你应该会看到如下页面。 + +![Viber 在 Linux 中运行][7] + +从你的手机应用扫描二维码,你应该可以在 Linux 桌面上使用 Viber。 + +**注意:** 由于它是一个闭源应用,请确保你在使用 Viber 时了解此应用的条款和与隐私相关的情况。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/install-viber-linux/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[geekpi](https://github.com/geekpi) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.viber.com/ +[2]: https://download.cdn.viber.com/desktop/Linux/viber.AppImage +[3]: https://download.cdn.viber.com/cdn/desktop/Linux/viber.deb +[4]: https://www.debugpoint.com/install-deb-files/ +[5]: https://play.google.com/store/apps/details?id=com.viber.voip&hl=en_IN&gl=US +[6]: https://apps.apple.com/us/app/viber-messenger-chats-calls/id382617920 +[7]: https://www.debugpoint.com/wp-content/uploads/2022/10/Viber-is-Running-in-Linux-1.jpg +[8]: https://download.cdn.viber.com/desktop/Linux/viber.rpm diff --git a/published/202211/20221019.2 ⭐️ How to Clean Up Snap Versions to Free Up Disk Space.md b/published/202211/20221019.2 ⭐️ How to Clean Up Snap Versions to Free Up Disk Space.md new file mode 100644 index 0000000000..f524717305 --- /dev/null +++ b/published/202211/20221019.2 ⭐️ How to Clean Up Snap Versions to Free Up Disk Space.md @@ -0,0 +1,108 @@ +[#]: subject: "How to Clean Up Snap Versions to Free Up Disk Space" +[#]: via: "https://www.debugpoint.com/clean-up-snap/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15219-1.html" + +如何清理 Snap 版本以释放磁盘空间 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/06/082905iomvvhsgoooc5czg.jpg) + +> 这个带有脚本的快速指南有助于清理旧的 Snap 版本并释放 Ubuntu 系统中的一些磁盘空间。 + +我正在使用的 Ubuntu 测试系统中的磁盘空间不足。因此,我通过 GNOME 的磁盘使用分析器进行调查,以找出哪个包正在消耗宝贵的 SSD 空间。除了通常的缓存和主目录,令我惊讶的是,我发现 Snap 和 Flatpak 消耗了大量的存储空间。 + +![Snap 大小 - 清理前][1] + +尽管如此,我始终坚持一个规则:除非必要,否则不要使用 Snap 或 Flatpak。这主要是因为它们的安装尺寸和其他问题。我更喜欢原生 deb 和 rpm 包。多年来,我在这个测试系统中安装和移除了一定数量的 Snap 包。 + +但卸载后还有问题。Snap 在系统中保留了一些残留文件,一般用户不知道。 + +所以我打开了 Snap 文件夹 `/var/lib/snapd/snaps`,发现 Snap 保留了以前安装/卸载的软件包的旧版本。 + +例如,在下图中,你可以看到 GNOME 3.28、3.34 和 Wine 都被删除了。但它们还在那里。发生这种情况是因为 Snap 的设计,它在正确卸载后保留已卸载软件包的版本。 + +![snaps 目录下的文件][2] + +或者,你可以在终端中使用: + +``` +snap list --all +``` + +![snap 列出全部][3] + +对于保留的版本,默认值为 3。这意味着 Snap 会保留每个软件包的三个旧版本,包括活动版本。如果你对磁盘空间没有限制,这是可以的。 + +但是对于服务器和其他情况,这很容易遇到成本问题,它会消耗你的磁盘空间。 + +但是,你可以使用以下命令轻松修改计数。该值可以在 2 到 20 之间。 + +``` +sudo snap set system refresh.retain=2 +``` + +### 清理 Snap 版本 + +在 SuperUser 的一篇文章中,Canonical 的前工程经理 Popey [提供了一个简单的脚本][4],它可以清理旧版本的 Snaps 并保留最新版本。 + +这是我们将用来清理 Snap 的脚本。 + +``` +#!/bin/bash +#Removes old revisions of snaps +#CLOSE ALL SNAPS BEFORE RUNNING THIS +set -eu +LANG=en_US.UTF-8 snap list --all | awk '/disabled/{print $1, $3}' | +while read snapname revision; do + snap remove "$snapname" --revision="$revision" +done +``` + +将上面的脚本以 `.sh` 扩展名保存在一个目录中(例如 `clean_snap.sh`),赋予它可执行权限并运行。 + +``` +chmod +x clean_snap.sh +``` + +当我运行脚本后,它减少了很多磁盘空间。该脚本还将显示要删除的包的名称。 + +![执行脚本][5] + +![清理后的 Snap 大小][6] + +### 结束语 + +对于 Snap 的设计效率如何,人们总是争论不休。许多人说,它的设计是坏的,是臃肿的,是消耗系统资源的。这种说法的某些部分是真实的,我不会否认它。如果实施和加强得当,整个沙盒应用的概念是很好的。但我相信,与 Snap 相比,Flatpak 工作做得更好。 + +也就是说,我希望这可以帮助你清理一些磁盘空间。尽管它只在 Ubuntu 中进行了测试,但它应该适用于所有支持 Snap 的 Linux 发行版。 + +此外,请查看我们关于 [如何清理 Ubuntu][7] 的指南以及其他步骤。 + +最后,如果你要清理 **Flatpak** 应用,请参阅 [这篇指南][8]。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/clean-up-snap/ + +作者:[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/2021/03/Snap-size-before-cleanup.jpg +[2]: https://www.debugpoint.com/wp-content/uploads/2021/03/Files-under-snaps-directory.jpg +[3]: https://www.debugpoint.com/wp-content/uploads/2021/03/snap-list-all.jpg +[4]: https://superuser.com/a/1330590 +[5]: https://www.debugpoint.com/wp-content/uploads/2021/03/Executing-the-script.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2021/03/Snaps-size-after-cleanup.jpg +[7]: https://www.debugpoint.com/2018/07/4-simple-steps-clean-ubuntu-system-linux/ +[8]: https://www.debugpoint.com/clean-up-flatpak/ \ No newline at end of file diff --git a/published/202211/20221020.0 ⭐️ How to Check:Xorg or Wayland Display Server.md b/published/202211/20221020.0 ⭐️ How to Check:Xorg or Wayland Display Server.md new file mode 100644 index 0000000000..1240c18aea --- /dev/null +++ b/published/202211/20221020.0 ⭐️ How to Check:Xorg or Wayland Display Server.md @@ -0,0 +1,93 @@ +[#]: subject: "How to Check: Xorg or Wayland Display Server?" +[#]: via: "https://www.debugpoint.com/check-wayland-or-xorg/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15216-1.html" + +如何检查: 是 Xorg 还是 Wayland 显示服务器? +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/05/102913nmpm4pzka6b6aar1.jpg) + +> 以下是快速检查在运行 Xorg 还是 Wayland 显示服务器的方法。 + +随着时间的推移,现代 Wayland 显示服务器正在进入所有 Linux 发行版。尽管老旧的 Xorg 仍然能用并且会继续存在,但 Wayland 无疑在安全性和其他性能方面更好。 + +但是,Xorg 不会很快完全淘汰。可能永远不会。 + +如果你在运行任何 Linux 发行版,如何检查运行的是 Xorg 还是 Wayland?下面是方法。 + +### Wayland 或 Xorg:你在运行哪一个? + +在你的 Linux 发行版(例如 Ubuntu、Fedora、Arch 等)中打开一个终端窗口(`CTRL+ALT+T`)。 + +然后输入以下命令并回车: + +``` +echo $XDG_SESSION_TYPE +``` + +命令输出会告诉你当前会话是 Wayland 还是 Xorg(X11)。 + +``` +[debugpoint@fedora ~]$ echo $XDG_SESSION_TYPEwayland +``` + +![此命令可以为你提供有关 Xorg 或 Wayland 的详细信息][1] + +这很简单。但是,还有其他方法。 + +### 其他方法 + +#### 使用设置 + +如果你需要图形方法,请打开你的 Linux 发行版的设置应用。在关于部分,你应该看到某个标签下中的 Wayland/X11。 + +例如,在 GNOME 设置中,你可以在 “窗口子系统Windowing system” 下找到它,如下图所示: + +![在 GNOME 设置中可以找到它][2] + +#### 使用会话值 + +你还可以使用 [systemd][3] 登录管理器 `loginctl` 找到它。请记住,它仅适用于基于 systemd 的系统。 + +打开终端并运行以下命令。你可以看到会话 id 值。在此示例中为 `c2`: + +``` +loginctl +``` + +现在,将会话 ID 传递给以下命令以获取显示服务器类型。确保将 c2 更改为你的系统规格。 + +``` +loginctl show-session c2 -p Type +``` + +![使用 loginctl 查找][4] + +### 总结 + +这些是你可以确定在 Linux 系统中运行的是 Systemd 还是 Xorg 的一些方法。你还可以在 shell 脚本中使用上述命令来实现进一步的流程自动化。 + +祝好。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/check-wayland-or-xorg/ + +作者:[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/10/This-command-can-give-you-details-about-Xorg-or-Wayland-1024x612.jpg +[2]: https://www.debugpoint.com/wp-content/uploads/2022/10/In-GNOME-Settings-you-can-find-it.jpg +[3]: https://www.debugpoint.com/tag/systemd/ +[4]: https://www.debugpoint.com/wp-content/uploads/2022/10/Using-loginctl-to-find-out.jpg \ No newline at end of file diff --git a/published/202211/20221020.7 ⭐️ 4 open source editors I use for my writing.md b/published/202211/20221020.7 ⭐️ 4 open source editors I use for my writing.md new file mode 100644 index 0000000000..bf7e54d2f9 --- /dev/null +++ b/published/202211/20221020.7 ⭐️ 4 open source editors I use for my writing.md @@ -0,0 +1,60 @@ +[#]: subject: "4 open source editors I use for my writing" +[#]: via: "https://opensource.com/article/22/10/open-source-editors" +[#]: author: "Alan Formy-Duval https://opensource.com/users/alanfdoss" +[#]: collector: "lkxed" +[#]: translator: "Donkey-Hao" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15248-1.html" + +我使用的 4 款开源编辑器 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/13/153838gs7u2z33qxxfigx3.jpg) + +> 分享一些我最喜欢的开源写作工具。 + +在我的职业生涯中,我已经写过很多东西,主要是作为一名 IT 顾问,创建产品文档作为给的客户可交付成果。这些文档通常针对不同操作系统和软件产品提供说明。 + +自 2018 年,我开始在 www.opensource.com 上发表关于开源软件的文章。当然,我使用开源软件进行协作。接下来我将介绍我使用过的四款开源编辑器。 + +### 1、Vi + +[Vi][1] 也被称为 `Vim`(LCTT 校注:此外不确,Vi 和 Vim 是两个软件,只是 Vim 取代了 Vi,并以 `vi` 的名字运行。),是我学习的第一款开源编辑器。这是我在计算机科学课程中学习的编辑器,并且我所有的 C 语言编程都是通过它完成的。自 1995 年以来,实际上我一直使用它作为命令行编辑器。这款工具有多个迭代版本,以至于我都可以为之写一系列文章了。我只想说,在我的日常使用中,我坚持使用它的基本命令行形式,并进行最小的定制。 + +### 2、LibreOffice Writer + +Writer 是 LibreOffice 开源办公套件的一部分。它是由文档基金会Document Foundation维护的全功能文字处理器。它支持行业标准格式,例如开放文档格式 (ODF)、Open XML 和 MS Office DOC、DOCX。可以在其官方网站上 [了解有关 Writer 的更多信息][2]。 + +### 3、Ghostwriter + +Ghostwriter 是一个用于 [Markdown 的文本编辑器][3]。它有一个很好的实时查看器和语法指南或备忘单功能。[访问官方网站][4] 了解更多内容。 + +### 4、Gedit + +Gedit 是许多 Linux 发行版中的基本图形编辑器,被描述为“用于 GNOME 桌面的小型轻量级文本编辑器”。我最近开始使用它来创建 Asciidoc 格式的文章。使用 Asciidoc 的好处是语法易于管理并可导入到 Drupal 等 Web 渲染系统中。通过 [Gedit Wiki][5] 了解许多提示和技巧。 + +### 编辑文本 + +开源世界中有大量编辑软件。随着我继续写作,这个列表可能会增加。我的主要目标是格式简单。我希望我的文章易于在互联网平台上导入、转换和发布。 + +你的写作风格、功能需求和目标受众将指导你确定首选工具。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/open-source-editors + +作者:[Alan Formy-Duval][a] +选题:[lkxed][b] +译者:[Donkey-Hao](https://github.com/Donkey-Hao) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/alanfdoss +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/20/12/vi-text-editor +[2]: https://www.libreoffice.org/discover/writer/ +[3]: https://opensource.com/article/21/10/markdown-editors +[4]: https://github.com/KDE/ghostwriter +[5]: https://wiki.gnome.org/Apps/Gedit diff --git a/published/202211/20221021.1 ⭐️ How to Upgrade to Ubuntu 22.10 From 22.04 LTS (Jammy to Kinetic).md b/published/202211/20221021.1 ⭐️ How to Upgrade to Ubuntu 22.10 From 22.04 LTS (Jammy to Kinetic).md new file mode 100644 index 0000000000..823b3f50dd --- /dev/null +++ b/published/202211/20221021.1 ⭐️ How to Upgrade to Ubuntu 22.10 From 22.04 LTS (Jammy to Kinetic).md @@ -0,0 +1,115 @@ +[#]: subject: "How to Upgrade to Ubuntu 22.10 From 22.04 LTS (Jammy to Kinetic)" +[#]: via: "https://www.debugpoint.com/upgrade-ubuntu-22-04-22-10/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "robsean" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15199-1.html" + +如何从 Ubuntu 22.04 LTS 升级到 22.10 +====== + +> 这里是如何将你当前的 Ubuntu 22.04 LTS Jammy Jellyfish 升级到 Ubuntu 22.10 Kinetic Kudu 的步骤。 + +始终停留在长期支持的发布版本,这是金科玉律。因为,先前的 [Ubuntu 22.04 LTS][1] Jammy Jellyfish 将被支持到 2027 年 4 月。这是一段很长的时间。 + +此外,LTS 版本超级稳定。它们很少损坏并变得不稳定。因此,如果你在笔记本电脑/台式机电脑或服务器上安装使用 LTS 版本,保持使用它。 + +然而,如果你想要最新的内核、GNOME 43 和 Pipewire 之类的最新技术 – 你可能会想完成版本跳级,并升级到 [Ubuntu 22.10 Kinetic Kudu][2]。 + +这里是如何做的方法。 + +### 升级 Ubuntu 22.04 LTS 到 Ubuntu 22.10 + +**注意**:我希望你没有运行去年 10 月份发布的 Ubuntu 21.10 Impish Indri 。因为它已经不被支持。但是鉴于某些原因,你正在运行它,我建议你直接重新安装 22.10 。或者,先升级到 22.04 ,再升级到 22.10 。 + +#### 在你升级前 + +在你升级前,做一些内务整理。这是非常重要的。 + +- 备份你的 `/home`、/`downloads` 和其它的文件到 USB 驱动器或任意独立的分区,以防升级失败。 +- 如果你随着时间的流逝而添加了一些额外的 PPA ,确保将它们记录下来。虽然,在升级过程开始前,升级过程将禁用 PPA 。而在升级完成后,确保手动启用 PPA 。 +- 记录并禁用所有的 GNOME 扩展。如果开发人员没有按照 GNOME 版本进行更新,那么扩展在升级后将会损坏。 +- 家中常备一个现场 USB 磁盘。 + +#### 升级步骤 + +打开 “软件包和更新Software & Update” 。 + +转到 “更新Updates” 标签页。 + +转到 “通知我新的 Ubuntu 版本Notify me of a new Ubuntu version”,选择并将其更改为 “任意新的版本For any new version”。 + +这将告诉软件包管理器来查找 Ubuntu 22.10 发布版本的详细信息。 + +![Make sure to change the option for new Ubuntu 22.10 release][3] + +打开一个终端,并运行下面的命令: + +``` +sudo apt update +sudo apt upgrade +``` + +或者,你也可以打开软件包更新程序。安装所有的准备就绪的软件包。 + +在两个命令完成后,打开软件包更新。你将会看到一个升级到 Ubuntu 22.10 的提示(如下图所示)。 + +![New version update prompt from the GUI method][4] + +现在,单击 “升级Upgrade” 按钮,并按照屏幕上的说明进行操作。升级过程需要一些时间,因此,要耐心等待,直至升级完成。确保在整个升级过程中有稳定的互联网链接。 + +如果你尚未获得更新,请等待一、两天后再次尝试。 + +如果你没有看到上述提示,手动重新启动一次系统。并再次添加尝试。 + +#### 通过终端 + +在终端中通过 nano 文件编辑器打开下面的文件。 + +``` +nano /etc/update-manager/release-upgrades +``` + +将 `Prompt=LTS` 更改为 `Prompt=normal` 。注意:如果你已经如上所述将更新标签页更改为 “任意新的版本For any new version” ,那么这个文件应该已经更新了。但是,要验证它一次。 + +![Change the release upgrade file][5] + +分别按下组合键 `CTRL+O` 和组合键 `CTRL+X` 来保存和退出。 + +最后,你也可以运行下面的命令来从终端中强制升级过程。 + +``` +sudo do-release-upgrade -c +``` + +![New version update prompt from the terminal method][6] + +升级过程需要花费一些时间(最少半个小时,上不封顶),这主要取决于你的互联网连接和硬件。直至等到其完成。在完成后,重新启动并享受 Ubuntu 22.10 Kinetic Kudu. + +![Upgrade is in progress][7] + +在升级过程进行时,看看我们 [不久前发布的关于 Ubuntu 22.10][8] 的精彩文章。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/upgrade-ubuntu-22-04-22-10/ + +作者:[Arindam][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://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/ubuntu-22-04-review/ +[2]: https://www.debugpoint.com/ubuntu-22-10/ +[3]: https://www.debugpoint.com/wp-content/uploads/2022/10/Make-sure-to-change-the-option-for-new-Ubuntu-22.10-release.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2022/10/New-version-update-prompt-from-the-GUI-method2.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2022/10/Change-the-release-upgrade-file.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2022/10/New-version-update-prompt-from-the-terminal-method.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2022/10/Upgrade-is-in-progress.jpg +[8]: https://www.debugpoint.com/tag/ubuntu-22-10 diff --git a/published/202211/20221021.3 ⭐️ How to Install AWS CLI on Linux Step-by-Step.md b/published/202211/20221021.3 ⭐️ How to Install AWS CLI on Linux Step-by-Step.md new file mode 100644 index 0000000000..11c4fca5d1 --- /dev/null +++ b/published/202211/20221021.3 ⭐️ How to Install AWS CLI on Linux Step-by-Step.md @@ -0,0 +1,152 @@ +[#]: subject: "How to Install AWS CLI on Linux Step-by-Step" +[#]: via: "https://www.linuxtechi.com/how-to-install-aws-cli-on-linux/" +[#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/" +[#]: collector: "lkxed" +[#]: translator: "littlebirdnest" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15265-1.html" + +如何在 Linux 上安装 AWS 命令行工具 +====== + +![][0] + +> 本文讲述如何一步步在 Linux 上安装 AWS CLI(命令行工具)。 + +AWS CLI 是一个能够和 AWS 账户进行交互的命令行程序。开发者和系统管理员用它管理日常的活动和自动化。 + +### 准备环节 + +- 安装好的 Linux 系统 +- 具有管理员权限的 sudo 账户 +- 能够联网 + +现在让我们开始安装: + +### 1、下载安装文件 + +打开终端使用 `curl` 命令下载 AWS CLI 的安装文件: + +``` +$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" +``` + +![][4] + +以上命令会在当前工作目录下载一个 `awscliv2.zip` 的文件。 + +使用 [ls 命令][1] 确认当前下载下来的文件: + +``` +$ ls -l awscliv2.zip +-rw-rw-r-- 1 linuxtechi linuxtechi 47244662 Oct 20 10:53 awscliv2.zip +$ +``` + +### 2、解压缩下载的文件 + +使用 [unzip 命令][2] 解压安装包: + +``` +$ unzip awscliv2.zip +``` + +它会在当前目录创建一个 `aws` 文件夹,把解压好的文件放进去: + +``` +$ ls -ld aws +drwxr-xr-x 3 linuxtechi linuxtechi 4096 Oct 19 17:18 aws +$ +``` + +### 3、运行安装脚本 + +使用以下命令运行安装脚本: + +``` +$ sudo ./aws/install +``` + +![][5] + +脚本会把所有安装的文件放到 `/usr/local/aws-cli` 目录下,然后创建一个链接文件到 `/usr/local/bin` 目录。 + +### 4、检查 AWS CLI 的版本 + +运行以下脚本检查版本: + +``` +$ aws --version +aws-cli/2.8.4 Python/3.9.11 Linux/5.15.0-48-generic exe/x86_64.ubuntu.22 prompt/off +$ +``` + +### 5、配置 AWS CLI + +为了验证 AWS CLI 是否安装正确,开始配置 AWS CLI: + +登录你的 AWS 管理控制台,取得 AWS 访问密钥 IDAccess Key ID安全访问密钥Secret Access Key。 + +如果还没完成创建,请先创建,并把它们复制到安全的地方。 + +![][6] + +然后回到命令行,运行以下命令: + +``` +$ aws configure +AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxx +AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxx +Default region name [None]: us-west-2 +Default output format [None]: json +$ +``` + +以上的证书会被保存到这个文件: + +``` +$ cat  ~/.aws/credentials +``` + +上面的命令的输出: + +![][7] + +运行 `aws` 命令列出你账户中的 s3 储存和 VPC: + +``` +$ aws s3 ls +$ aws ec2 describe-vpcs +``` + +输出如下: + +![][8] + +成功输出内容,说明你的 AWS CLI 已经配置完成。 + +这就是这篇文章的全部内容,请在下面的评论区发表你的疑问和反馈。 + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/how-to-install-aws-cli-on-linux/ + +作者:[Pradeep Kumar][a] +选题:[lkxed][b] +译者:[littlebirdnest](https://github.com/littlebirdnest) +校对:[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://www.linuxtechi.com/linux-ls-command-examples-beginners/ +[2]: https://www.linuxtechi.com/linux-zip-unzip-command-examples/ +[3]: https://www.linuxtechi.com/how-to-setup-eks-cluster-nlb-on-aws/ +[4]: https://www.linuxtechi.com/wp-content/uploads/2022/10/Download-AWS-CLI-Curl-Command.png +[5]: https://www.linuxtechi.com/wp-content/uploads/2022/10/AWS-CLI-Install-Script-Linux.png +[6]: https://www.linuxtechi.com/wp-content/uploads/2022/10/AWS-Account-Access-Secret-Key.png +[7]: https://www.linuxtechi.com/wp-content/uploads/2022/10/AWS-Configure-Command-Output-Linux.png +[8]: https://www.linuxtechi.com/wp-content/uploads/2022/10/AWS-Command-List-S3-VPC.png +[0]: https://img.linux.net.cn/data/attachment/album/202211/18/112836c2d0bekaxu75ffbx.jpg \ No newline at end of file diff --git a/published/202211/20221022 What-s new in Fedora Workstation 37.md b/published/202211/20221022 What-s new in Fedora Workstation 37.md new file mode 100644 index 0000000000..66f5c68f19 --- /dev/null +++ b/published/202211/20221022 What-s new in Fedora Workstation 37.md @@ -0,0 +1,87 @@ +[#]: subject: "What’s new in Fedora Workstation 37" +[#]: via: "https://fedoramagazine.org/whats-new-fedora-37-workstation/" +[#]: author: "Merlin Cooper https://fedoramagazine.org/author/mxanthropocene/" +[#]: collector: "lujun9972" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15272-1.html" + +Fedora Workstation 37 中的新功能 +====== + +![][1] + +Fedora Workstation 37 是 Fedora Project 桌面操作系统的最新版本,由致力于推动开源创新的全球社区开发。本文介绍了 Fedora Workstation 37 中一些面向用户的新功能。现在就从 GNOME “软件Software”应用升级,或者在你最喜欢的终端模拟器中使用 [dnf system-upgrade][2] 升级! + +### GNOME 43 + +Fedora Workstation 37 具有最新版本的 GNOME 桌面环境,其中包含更多移植到 GTK 4 的核心应用、用户界面调整和性能调整。查看 [GNOME 43 发行说明][3] 了解更多信息! + +#### 重新设计的快速设置菜单 + +![无需打开设置即可切换深色模式][4] + +新的“快速设置Quick Settings”菜单提供更多控制和便利。你现在可以在菜单中轻松切换你的 Wi-Fi 网络,而不用进入全屏对话框;在默认模式和深色模式之间切换;以及在不打开“设置Settings”应用的情况下启用夜灯。现在还提供了一个方便的截屏和录屏按钮。 + +#### 核心应用 + +Fedora Workstation 37 中包含的 GNOME 核心应用已经进行了一轮调整和改进: + + * “文件Files”应用已移植到 GTK 4,并且用户界面有许多改进。这里只是其中的一些: + * 它现在是自适应的,这意味着它会自动调整到更窄的尺寸,从而更好地利用可用空间。 + * 列表视图已重新设计,使橡皮筋选择更容易。 + * 重新设计了 “属性Properties” 和 “打开方式……Open With…” 对话框。 + + ![Files 43 中的橡皮筋选择][5] + + * “日历Calendar”应用有一个新的边栏,可以一目了然地显示即将发生的事件。它与“联系人Contacts”应用一起,现在具有自适应用户界面。 + * “角色Characters”应用现在会向你显示不同的肤色、头发颜色和表情符号的性别选项。 + * “软件Software” 中的包源选择器已重新设计并移至更显眼的位置。 + * “地图Maps”应用已移植到 GTK 4。 + * “设置Settings”应用包括一个新的“设备安全Device Security”面板,让你可以轻松查看你的设备提供或缺少的硬件安全功能! + ![呃哦!][6] + +### 新补充的默认壁纸 + +Fedora Workstation 37 附带一组新的补充壁纸。 [在这里看看它们是如何制作的!][7] + +![六张新壁纸有浅色和深色两种][8] + +### Fedora Linux 37 的底层变化 + +Fedora Linux 37 具有许多底层更改。以下是一些值得注意的: + + * 现已正式支持树莓派 4 单板机,包括 3D 加速! + * 在 BIOS 系统上的新安装将使用 GPT 磁盘布局,而不是传统的 MBR 布局。在 BIOS 系统上,安装程序镜像现在还将使用 GRUB 而不是 syslinux 进行引导。 + * 如果你禁用然后重新启用 SELinux,或运行 `fixfiles onboot` 命令,文件系统的重新标记过程现在将并行完成,从而显着提高速度。 + * 波斯语的默认字体已从 DejaVu 和 Noto Sans Arabic 更改为 Vazirmatn,为在波斯语中使用 Fedora Linux 的用户提供更一致的体验。 + +### 还有这些... + +Fedora 项目中发生的很酷的事情! + + * Fedora CoreOS 和 Fedora Cloud Base 已升级为 “版本Edition” 级别! + * Fedora Linux 系统安装程序,带有新 GUI 的 Anaconda 预览安装程序镜像将在大约一周内可用。我将发布一篇文章以提供更多详细信息,敬请关注! + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/whats-new-fedora-37-workstation/ + +作者:[Merlin Cooper][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/mxanthropocene/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramag.wpenginepowered.com/wp-content/uploads/2022/10/f37-whats_new-816x345.jpg +[2]: https://docs.fedoraproject.org/en-US/quick-docs/dnf-system-upgrade/ +[3]: https://release.gnome.org/43/ +[4]: https://fedoramag.wpenginepowered.com/wp-content/uploads/2022/09/ezgif.com-gif-maker1.gif +[5]: https://fedoramag.wpenginepowered.com/wp-content/uploads/2022/09/ezgif.com-gif-maker2.gif +[6]: https://fedoramag.wpenginepowered.com/wp-content/uploads/2022/09/Screenshot-from-2022-09-16-20-25-28-1024x708.png +[7]: https://blog.linuxgrrl.com/2022/06/27/abstract-wallpapers-in-blender-using-geometry-nodes/ +[8]: https://fedoramag.wpenginepowered.com/wp-content/uploads/2022/09/dfg-1-1024x679.png diff --git a/published/202211/20221022.3 ⭐️⭐️ Use open source commands in Powershell.md b/published/202211/20221022.3 ⭐️⭐️ Use open source commands in Powershell.md new file mode 100644 index 0000000000..74e9bd07e9 --- /dev/null +++ b/published/202211/20221022.3 ⭐️⭐️ Use open source commands in Powershell.md @@ -0,0 +1,88 @@ +[#]: subject: "Use open source commands in Powershell" +[#]: via: "https://opensource.com/article/22/10/set-path-powershell" +[#]: author: "Alan Smithee https://opensource.com/users/alansmithee" +[#]: collector: "lkxed" +[#]: translator: "qfzy1233" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15200-1.html" + +设置路径在 Powershell 中使用开源命令 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/01/160141i03e33e8pp5xp3vs.jpg) + +> 在 Windows 上设置你的路径,这样你就可以使用开源的命令。 + +当你在操作系统上启动应用程序时,操作系统需要使用某些代码库和实用程序来运行该应用程序。你的操作系统知道如何找到这些库和实用程序,因为它有一个 _系统路径_,这是一个通往许多应用程序需要的共同共享数据的地图。所有操作系统都有这一点,但用户通常不会意识到这一点,因为他们通常不需要在意它。然而,当你需要编程或使用特殊的网络实用程序或命令时,你可能需要关心你自己的 `PATH` 变量配置。 + +`PATH` 变量使你可以将命令保存到一致的位置,并使用命令提示符或更强大(而开源的)[Powershell][1] 从系统上的任何位置调用它们。 + +例如,假设你想安装开源应用程序 `pscp.exe`,它是 Windows 上著名的 PuTTY OpenSSH 客户端的命令行界面。你可以将它下载到你的硬盘,但是你的命令行如何知道它的存在呢?其实一开始,它并不知道: + +``` +PS> pscp + pscp: 命令 “pscp” 不能被识别为 cmdlet、脚本文件或可操作程序的名称。 + 检查名称的拼写,或者如果包含了路径,则检查路径是否正确,然后再试一次。 +``` + +如果你正在使用一个开源命令行,例如 Powershell 或 [Cmder][2],那么你将得到一个有用的错误提示,提示这可能是你的路径有问题(或缺少路径)。下面是解决这个问题的方法。 + +### 设置 PATH + +首先,在桌面上创建一个名为 `App` 的文件夹。 + +接下来,右键单击屏幕左下角的 Windows 菜单,然后选择 “系统System”。 + +![Image of the Windows menu system.][3] + +在弹出的 “系统System” 窗口中,单击窗口左侧的 “高级系统设置Advanced system settings” 链接。 + +在出现的 “系统属性System properties” 窗口中,单击窗口底部的 “环境变量Environment variables” 按钮。 + +![Image Windows system enviroment variables.][4] + +在 “环境变量Environment variables” 窗口中,单击 “用户变量User variables” 面板下的 “新建New” 按钮。 + +![Image of new Windows enviroment variables.][5] + +在弹出的对话框中,为 “变量名Variable name” 字段输入 `PATH`,为 “变量值Variable value” 字段输入 `%USERPROFILE\Desktop\App` 。单击 “确定OK” 按钮保存更改。 + +![Image of Windows path set.][6] + +在 `Desktop/Apps` 中放置你想从命令提示符中访问的命令和应用程序,Powershell、Cmder 甚至 Cmd 都能找到它们。 + + +``` +PS> pscp –version + pscp: Release 0.XY + Build platform: 64-bit x86 Windows + PS> +``` + +### 自动设置路径 + +许多应用程序会在安装过程中自动添加到系统路径中。然而,并不是所有的程序都如此,要么是因为你在安装过程中遗漏了一个复选框,要么是因为应用程序开发人员希望你自己添加它。当自动路径失败时,你现在知道如何自己设置路径。 + +*(图像来自:Alan Smithee, CC BY-SA 4.0)* + + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/set-path-powershell + +作者:[Alan Smithee][a] +选题:[lkxed][b] +译者:[qfzy1222](https://github.com/qfzy1233) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/alansmithee +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/18/2/powershell-people +[2]: http://cmder.app/ +[3]: https://opensource.com/sites/default/files/2022-10/windows-menu-system.png +[4]: https://opensource.com/sites/default/files/2022-10/windows-system-environment-variables.png +[5]: https://opensource.com/sites/default/files/2022-10/windows-environment-variables-new.png +[6]: https://opensource.com/sites/default/files/2022-10/windows-path-set.png diff --git a/published/202211/20221023.0 ⭐️ How to Recover Arch Linux Install via chroot.md b/published/202211/20221023.0 ⭐️ How to Recover Arch Linux Install via chroot.md new file mode 100644 index 0000000000..549069132d --- /dev/null +++ b/published/202211/20221023.0 ⭐️ How to Recover Arch Linux Install via chroot.md @@ -0,0 +1,112 @@ +[#]: subject: "How to Recover Arch Linux Install via chroot" +[#]: via: "https://www.debugpoint.com/recover-arch-linux/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "robsean" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15202-1.html" + +如何通过 chroot 恢复 Arch Linux 安装 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/01/213036fel3lq00iz0377v3.jpg) + +> 这篇速成指南诠释了一些步骤,它对于恢复一个 Arch Linux 安装很有帮助。 + +作为一个滚动发布版本,Arch Linux 有时会崩溃。那不是你自身的问题,而是因为数百个其它的原因,例如一个新内核与你的硬件或软件的兼容性。但是,即使如此,Arch Linux 仍然是比较优秀的,并且提供最新的软件包和应用程序。 + +但是,有些时候,它会给你带来麻烦,最后你只会看到一个闪烁的光标。 + +因此,在这种情况下,在你放弃希望前,你可能希望尝试恢复系统的安装以及数据,而不是重新格式化或重新安装。这篇指南在这些方面概述了一些步骤。 + +### 恢复 Arch Linux 安装 + +第一步是创建一个可启动的 Arch Linux 的现场Live USB 。从下面的链接中下载 ISO 镜像文件,并创建一个可启动的 ISO 的启动盘。你可以查看 [这篇](https://linux.cn/article-15020-1.html) 关于如何使用 Etcher 创建可启动的 ISO 的启动盘的指南。记住,这一步骤需要在另一个工作稳定的系统上完成,很明显,这是因为你当前系统是不可用的。 + +> **[下载 arch linux][1]** + +你需要知道在 **你的 Arch Linux 安装在哪个分区上**。这是关键的一步。如果你不知道,你可以使用 GParted 来找出来。或者在你的 Grub 菜单中查看,或者也可以运行下面的命令来找出来。这将列出你所有的磁盘分区、大小和标签。 + +``` +sudo lsblk -o name,mountpoint,label,size,uuid +``` + +在完成后,插入 USB 设备,并从中启动。你应该会在现场 USB 启动后看到 Arch Linux 提示符。 + +现在,使用下面的命令挂载 Arch Linux 分区。将 `/dev/sda3` 更改为你实际对应的分区。 + +``` +mount /dev/sda3 /mnt +arch-chroot /mnt +``` + +`arch-chroot` 命令将在终端中挂载你的 Arch Linux 分区,然后,使用你的 Arch 用户名和密码来登录系统。现在,取决于你在这个阶段的需要,你可能有下面的一些选项。 + +- 你可以前往 `/home` 文件夹来备份你的数据。为防止排错手段不能解决问题。你可以复制这些文件到一块外部的 USB 磁盘或其它的分区。 +- 检查日志文件,尤其是 pacman 日志,因为升级一些软件包可能会导致系统不稳定工作,例如,图形驱动程序或其它一些驱动程序。依据日志的记载,如果你有需要的话,你可以降级一些具体指定的软件包。 + +你可以使用下面的命令来查看 pacman 日志文件的最新的 200 行日志,来找出一些引起失败的项或依赖项的缺失。 + +``` +tail -n 200 /var/log/pacman.log | less +``` + +上面的命令给出 `pacman.log` 文件的末尾处的 200 行来用于查对。现在,仔细检查自你上次成功启动以来更新了哪些软件包。 + +在某个地方记录下软件包的名称和版本。你可以尝试逐个降级软件包,或者,如果你认为是某个特定的软件包造成的问题的话,你可以使用 `pacman` 命令的 `-U` 开关选项来降级它。 + +``` +pacman -U +``` + +在降级后(如果有一些软件包进行降级的话),你可以运行下面的命令来启动你的 Arch 系统。 + +``` +exec /sbin/init +``` + +检查你的显示管理器的状态,并检查其是否有一些错误。有时,显示管理器会产生不能与 X 服务器X Server 通信的问题。例如,如果你正在使用 Lightdm ,那么你可以通过下面的命令来检查它的状态。 + +``` +systemctl status lightdm +``` + +或者,你可能希望通过下面的命令来启动它并检查错误。 + +``` +lightdm --test-mode --debug +``` + +这里是一个 Lightdm 故障的示例,它导致了 Arch 系统不稳定工作。 + +![lightdm - test mode][2] + +或者,使用 `startx` 来启动 X 服务器进行检查。 + +根据我的经验,如果你在上面的命令中看到这些错误,尝试安装另外一个显示管理器(例如 sddm)并启动它可以消除错误。 + +- 根据你的系统的实际状态来尝试上面的步骤并解决问题。针对特定的显示管理器 Lightdm 的错误,我们有一份 [指南][3],你可能会想查看它。 +- 如果你正在使用 sddm ,那么,试试 [这些排错步骤][4] 看看是否工作。 + +### 结语 + +每个系统环境都是不同的。上面的步骤不一定适合你。但是,它值得一试,根据我的经验,它是可行的。如果它可行,那么恭喜你。否则,在下面的评论区让我知晓你是如何进行的。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/recover-arch-linux/ + +作者:[Arindam][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://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://archlinux.org/download/ +[2]: https://www.debugpoint.com/wp-content/uploads/2021/03/lightdm-test-mode.jpg +[3]: https://www.debugpoint.com/2021/03/failed-to-start-lightdm/ +[4]: https://wiki.archlinux.org/title/SDDM#Troubleshooting diff --git a/published/202211/20221024.1 ⭐️ How to Check CPU and HDD Temperature in Ubuntu and Other Linux.md b/published/202211/20221024.1 ⭐️ How to Check CPU and HDD Temperature in Ubuntu and Other Linux.md new file mode 100644 index 0000000000..587e5d20f0 --- /dev/null +++ b/published/202211/20221024.1 ⭐️ How to Check CPU and HDD Temperature in Ubuntu and Other Linux.md @@ -0,0 +1,121 @@ +[#]: subject: "How to Check CPU and HDD Temperature in Ubuntu and Other Linux" +[#]: via: "https://www.debugpoint.com/cpu-hdd-temperature-ubuntu/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15223-1.html" + +如何在 Ubuntu 和其他 Linux 中检查 CPU 和硬盘温度 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/07/151624auhj011bqnzk9qfu.jpg) + +> 想知道如何在台式机或笔记本电脑上检查 Ubuntu 和其他 Linux 中的 CPU 和硬盘温度?这是一个快速指南。 + +如果你是普通用户,那么实际上不需要检查 CPU 或 HDD 温度。但是,如果你使用的是非常旧的硬件或轻薄型的硬件,你可能会遇到过热问题。因为这些薄的硬件内部紧密耦合在一起,无论做了多少传热机制,它都会升温。因此,必须监控硬件的温度。然而,现代 Linux 发行版能够通过软件传感器很好地处理过热情况。 + +### 在 Ubuntu 上监控 CPU 和硬盘温度的步骤 + +#### 使用终端 + +我们将使用几个包来实现相同的目的。在基于 Ubuntu 的系统中打开一个终端并安装以下内容。 + +``` +sudo apt install hddtemp +sudo apt install lm-sensors +``` + +[hddtemp][1] 程序为你提供硬盘和 SSD (根据我的测试)的温度。 [lm-sensors][2] 包为你提供来自 CPU 和其他通过 PCI 端口访问的传感器的温度详细信息。 + +安装后,从终端运行以下命令。你需要知道你的磁盘标识符,例如 `/dev/sda` 或 `/dev/sdb` 等。 + +要找出磁盘标识符,你可以使用 `fdisk`。 + +``` +sudo fdisk -l +``` + +然后运行以下命令检查 HDD 或 SSD 温度。 + +``` +sudo hddtemp +``` + +![HDD or SSD Temperature from terminal][3] + +*来自终端的 HDD 或 SSD 温度* + +检查 CPU 温度和其他信息需要额外的步骤。 + +首先,运行以下命令,以便传感器程序可以检测到系统中的传感器。 + +``` +sudo sensors-detect +``` + +上面的命令可能会问你一些是/否的问题。继续按回车选择默认选项。 + +完成后,运行以下命令查看 CPU 和其他接口温度。 + +``` +sensors +``` + +![using sensors][4] + +*使用传感器* + +#### 使用 GUI 工具 + +如果你更喜欢能完成上述所有操作的漂亮 GUI,你可以安装 [psensor][5]。该程序适用于 Linux 系统,例如 Ubuntu、Fedora、[Arch][6] 和其他变体。它为你提供了漂亮的图形和表格视图: + +Ubuntu 及其衍生版: + +``` +sudo apt install psensor +``` + +Fedora 和基于 RPM 的衍生版: + +``` +sudo dnf install psensor +``` + +Arch、Manjaro 和类似的衍生版: + +``` +pacman -S psensor +``` + +安装后,从终端运行 `psensor` 或从应用菜单启动它。 + +正如你在下面的截图中所见,它通过漂亮的图表让你可以很好地了解 CPU、GPU 和 HDD 的所有重要温度。使用它的首选项,你可以根据需要对其进行调整。这个轻量级的程序在很多情况下都会很有帮助。 + +![psensor running][7] + +*psensor 运行* + +因此,这些是你可以在 Ubuntu 和其他 Linux 系统中监控 CPU、GPU 或 HDD 温度的一些方法。如果你知道其他方法,请通过下面的评论栏告诉我。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/cpu-hdd-temperature-ubuntu/ + +作者:[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://wiki.archlinux.org/title/Hddtemp +[2]: https://github.com/lm-sensors/lm-sensors +[3]: https://www.debugpoint.com/wp-content/uploads/2021/09/HDD-or-SSD-Temperature-from-terminal.png +[4]: https://www.debugpoint.com/wp-content/uploads/2021/09/psensor.png +[5]: https://wpitchoune.net/psensor/ +[6]: https://www.debugpoint.com/tag/arch-linux +[7]: https://www.debugpoint.com/wp-content/uploads/2021/09/psensor-running-1024x465.png diff --git a/published/202211/20221024.3 ⭐️ How to display commits created on a specific day with the git log command.md b/published/202211/20221024.3 ⭐️ How to display commits created on a specific day with the git log command.md new file mode 100644 index 0000000000..1fac3cd7ad --- /dev/null +++ b/published/202211/20221024.3 ⭐️ How to display commits created on a specific day with the git log command.md @@ -0,0 +1,68 @@ +[#]: subject: "How to display commits created on a specific day with the git log command" +[#]: via: "https://opensource.com/article/22/10/git-log-command" +[#]: author: "Agil Antony https://opensource.com/users/agantony" +[#]: collector: "lkxed" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15220-1.html" + +用 git log 命令显示在特定日期的提交记录 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/06/085449j5diiljl7dzgdr0z.jpg) + +> `git log` 命令是 Git 中一个很重要的查看提交记录的工具,它也是人们喜欢使用 Git 的原因之一。 + +`git log` 命令能够让你了解到更多关于贡献者 提交commit 的记录。使用 `git log` 的一种方式是按日期查看提交记录 。要查看**在指定日期或日期范围内**创建的 Git 存储库中的提交记录,请使用带有选项 `--since` 或 `--until` 或者同时使用以上两个选项的 `git log` 命令。 + +首先,进入你要查看的分支(例如,`main` 分支): + +``` +$ git checkout main +``` + +接下来,你可以使用以下命令,来显示当前日期(即今天)的提交记录: + +``` +$ git log --oneline --since="yesterday" +``` + +仅显示某一特定用户(例如,用户 `Agil`)在今天的提交记录: + +``` +$ git log --oneline --since="yesterday" --author="Agil" +``` + +还可以显示在某一日期范围内的提交记录。使用以下命令,显示在任意两个日期之间(例如,2022 年 4 月 22 日至 2022 年 4 月 24 日)的提交记录: + +``` +$ git log --oneline --since="2022-04-22" --until="2022-04-24" +``` + +在上面这个例子中,会输出 2022 年 4 月 22 日至 2022 年 4 月 24 日期间,不包括 2022 年 4 月 22 日的所有提交记录。如果你想要包括 2022 年 4 月 22 日的提交记录,请将命令中的 `2022-04-22` 替换为 `2022-04-21`。 + +运行以下命令,能够显示某一特定用户(例如,用户 `Agil`)在两个指定的日期之间的提交记录: + +``` +$ git log --oneline --since="2022-04-22" --until="2022-04-24" --author="Agil" +``` + +### 总结 + +Git 有很多优点,其中一个优点就是 Git 让你能够收集你项目的相关数据。`git log` 命令是一个重要的查看提交记录的工具,也是人们喜欢使用 Git 的原因之一! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/git-log-command + +作者:[Agil Antony][a] +选题:[lkxed][b] +译者:[chai001125](https://github.com/chai001125) +校对:[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 + diff --git a/published/202211/20221025.0 ⭐️⭐️ Transfer files and folders from Windows to Linux with PSCP.md b/published/202211/20221025.0 ⭐️⭐️ Transfer files and folders from Windows to Linux with PSCP.md new file mode 100644 index 0000000000..aa68907328 --- /dev/null +++ b/published/202211/20221025.0 ⭐️⭐️ Transfer files and folders from Windows to Linux with PSCP.md @@ -0,0 +1,144 @@ +[#]: subject: "Transfer files and folders from Windows to Linux with PSCP" +[#]: via: "https://opensource.com/article/22/10/transfer-files-windows-linux-pscp" +[#]: author: "Paul https://opensource.com/users/plaubscher" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15234-1.html" + +使用 PSCP 将文件和文件夹从 Windows 传输到 Linux +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/10/074452ys2lgjdqq8gaj8rg.jpg) + +> 开源的 PSCP 程序可以轻松地在 Windows 和 Linux 计算机之间传输文件和文件夹。 + +你是否正在寻找一种将文件从 Windows 计算机快速传输到 Linux 计算机并再次传输回来的方法?开源的 PSCP 程序可以轻松传输文件和文件夹,当然它是开源的。 + +### 在 Windows 中设置 PATH + +了解如何在 Windows 中设置命令路径可以更轻松地使用 PSCP 等方便的程序。如果你不熟悉该过程,请阅读 [如何在 Windows 上设置 PATH][1]。 + +### 使用 PSCP + +PSCP(PuTTY 安全复制协议)是一个命令行工具,用于将文件和文件夹从 Windows 计算机传输到 Linux 计算机。 + +- 从 [网站][2] 下载 `pscp.exe`。 +- 将 `pscp.exe` 移动到 `PATH` 中的文件夹(例如,如果你按照 [Opensource.com][3] 上的 PATH 教程进行操作,则为 `Desktop\App`)。如果你没有设置 `PATH` 变量,你也可以将 `pscp.exe` 移动到保存要传输的文件的文件夹中。 +- 使用 Windows 任务栏中的搜索栏在 Windows 计算机上打开 Powershell(在搜索栏中输入 `powershell`。) +- 输入 `pscp -version` 以确认你的计算机可以找到该命令。 + +### IP 地址 + +在进行传输之前,你必须知道目标计算机的 IP 地址或完全限定域名。假设它是同一网络上的计算机,并且你没有运行 DNS 服务器来解析计算机名称,你可以在 Linux 机器上使用 `ip` 命令找到目标 IP 地址: + +``` +[linux]$ ip addr show |grep 'inet ' +inet 127.0.0.1/8 scope host lo +inet 192.168.1.23/24 brd 10.0.1.255 scope global noprefixroute eth0 +``` + +在所有情况下,127.0.0.1 都是计算机仅用于与自身通信的环回地址,因此在此示例中,正确的地址是 192.168.1.23。在你的系统上,IP 地址可能不同。如果你不确定哪个是哪个,你可以连续尝试每个,直到找到正确的(然后在某处写下来!) + +或者,你可以查看路由器的设置,其中列出了通过 DHCP 分配的所有地址。 + +### 防火墙和服务器 + +`pscp` 命令使用 OpenSSH 协议,因此你的 Linux 计算机必须运行 OpenSSH 服务器软件,并且防火墙必须允许 SSH 流量。 + +如果你不确定你的 Linux 机器是否正在运行 SSH,请在 Linux 机器上运行以下命令: + +``` +[linux]$ sudo systemctl enable --now sshd +``` + +要确保你的防火墙允许 SSH 流量,请运行以下命令: + +``` +[linux]$ sudo firewall-cmd --add-servicessh --permanent +``` + +有关 Linux 上的防火墙的更多信息,请阅读 [使用防火墙使 Linux 更强大][4]。 + +### 传输文件 + +在这个例子中,我有一个名为 `pscp-test.txt` 的文件,我想将它从我的 Windows 计算机上的 `C:\Users\paul\Documents` 传输到我的目标 Linux 计算机主目录 `/home/paul`。 + +现在你已经有了 `pscp` 命令和目标地址,你可以传输测试文件 `pscp-test.txt`。打开 Powershell 并使用 `dir` 命令切换到示例文件所在的 `Documents` 文件夹: + +``` +PS> dir %USERPROFILE%\Documents\ +``` + +现在执行传输: + +``` +PS> pscp pscp-test.txt paul@192.168.1.23:/home/paul +| Password: +End of keyboard-interactive prompts from server +pscp-test.txt | 0 kb | 0.0 kB/s | ETA: 00:00:00 | 100% +``` + +这是语法,逐字逐句来: + +- `pscp`:用于传输文件的命令。 +- `pscp-test.txt` 是你要从 Windows 传输的文件的名称。 +- `paul@192.168.1.23` 是我在 Linux 计算机上的用户名,以及 Linux 计算机的 IP 地址。你必须将其替换为你自己的用户和目的地信息。请注意,`pscp` 需要目标计算机上的目标路径,而 IP 地址末尾的 `:/home/paul` 指定我希望将文件复制到我的主文件夹。 + +对 Linux 计算机进行身份验证后,`pscp-test.txt` 文件将传输到 Linux 计算机。 + +### 验证已传输 + +在你的 Linux 计算机上,打开终端并使用 `ls` 命令验证文件 `pscp-test.txt` 是否出现在你的主目录中。 + +``` +[linux]$ ls +Documents +Downloads +Music +Pictures +pscp-test.txt +``` + +### 从 Linux 系统复制文件 + +你不仅限于将文件复制到 Linux 系统。使用 `pscp`,你还可以将文件从 Linux 复制到 Windows。语法是一样的,只是反过来: + +``` +PS> pscp paul@192.168.1.23:/home/paul/pscp-test.txt %USERPROFILE%\Documents\pscp-win.txt +``` + +这是语法: + +- `pscp`:用于传输文件的命令。 +- `paul@192.168.1.23:/home/paul/pscp-test.txt` 是我在 Linux 计算机上的用户名、Linux 计算机的 IP 地址,以及我要复制的文件的路径。 +- `%USERPROFILE%\Documents` 是我的 Windows 计算机上我要保存文件的位置。 请注意,在将文件复制回我的 Windows 计算机时,我可以给它一个新名称,例如 `pscp-win.txt`,以区别于原始文件。 当然,你不必重命名文件,但对于本演示来说,它是一个有用的快捷方式。 + +打开文件管理器以验证 `pscp-win.txt` 文件是否已从 Linux 计算机复制到 Windows `C:\Users\paul\Documents` 下。 + +![Image of a file manager.][5] + +### 远程复制 + +借助开源 `pscp` 命令的强大功能,你可以访问家中的任何计算机、拥有帐户的服务器,甚至是移动设备和 [边缘设备][6]。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/transfer-files-windows-linux-pscp + +作者:[Paul][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/plaubscher +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/22/10/set-path-powershell +[2]: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html +[3]: http://Opensource.com +[4]: https://opensource.com/article/19/7/make-linux-stronger-firewalls +[5]: https://opensource.com/sites/default/files/2022-10/Filemanager.pscp_.png +[6]: https://opensource.com/tags/edge-computing diff --git a/published/202211/20221026.4 ⭐️ How to Install Python 3.11 in Ubuntu and Other Related Linux.md b/published/202211/20221026.4 ⭐️ How to Install Python 3.11 in Ubuntu and Other Related Linux.md new file mode 100644 index 0000000000..737ddc6a0e --- /dev/null +++ b/published/202211/20221026.4 ⭐️ How to Install Python 3.11 in Ubuntu and Other Related Linux.md @@ -0,0 +1,142 @@ +[#]: subject: "How to Install Python 3.11 in Ubuntu and Other Related Linux" +[#]: via: "https://www.debugpoint.com/install-python-3-11-ubuntu/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15230-1.html" + +如何在 Ubuntu 等 Linux 中安装 Python 3.11 +====== + +> 打算为你的项目开发工作安装 Python 3.11?下面是如何在 Ubuntu 等发行版中安装 Python 3.11 的方法。 + +![][1] + +Python 3.11 于 2022 年 10 月 25 日发布,并声称比之前的 [Python 3.10][2] 版本快 10% - 60%。 + +一如既往,3.11 中的功能和改进列表明显较多。下面是一个简介: + +- 错误回溯更明确,可以指出导致错误的确切语句。 +- 引入异常组和新的 except* 语法。 +- 你可以在基础表达式中添加自定义文本,以便在你的代码中更好地处理错误。 +- 引入 Variadic 泛型,允许在 Python 数值库(如 NumPy)中使用类似数组的结构。 +- 字典类型 TypedDict 得到了改进,现在你可以指定个别字典项目是必须的还是可选的。 +- 引入了 Self 注解,允许类返回它们自己的类型实例。 + +还有很多,你可以在官方的 [3.11 亮点页面][3] 上详细了解。 + +### Linux 发行版中的当前 Python 版本 + +[Ubuntu 22.04 LTS][4] 带有 Python 3.10,而最近发布的 [Ubuntu 22.10 Kinetic Kudu][5] 也是同样的版本。然而, Kinetick Kudu 可能会在几周内采用 3.11。 + +另外,[Fedora 37][6] 已经有了 Python 3.11 RC2,并将提供该版本。 + +所以,如果你正在运行 Ubuntu 22.04 LTS、[Linux Mint 21][7] 或任何基于 Ubuntu-LTS 的发行版,这里是你如何通过 PPA 安装 Python 3.11 的方法。 + +**注意**:谨慎地使用这个方法。确保你知道你在做什么,因为替换 Linux 发行版的基础 Python 版本可能会导致系统不稳定。许多默认的应用程序和软件包都依赖于 3.10 版本。 + +### 如何在 Ubuntu 和相关发行版中安装 Python 3.11 + +打开终端提示,添加以下 PPA: + +``` +sudo add-apt-repository ppa:deadsnakes/ppa +``` + +使用下面的命令刷新缓存: + +``` +sudo apt update  +``` + +并使用下面的命令安装 Python 3.11: + +``` +sudo apt install python3.11 +``` + +![在 Ubuntu 22.04 LTS 中安装 Python 3.11][8] + +### 设置默认的 Python 版本 + +理论上,你可以在 Linux 发行版中安装多个版本的 Python,但只能默认一个版本。将 Python 3.11 设置为默认版本需要一些额外的步骤。请跟我做。 + +然而,在这之前,请确保你知道哪些应用程序依赖于 Python 3.10。你可以使用 `apt-cache rdepends` 命令轻松地找到它,如下所示: + +``` +debugpoint@debugpoint-22-04:~$ apt-cache rdepends python3.10 +python3.10 +Reverse Depends: +python3.10-dbg +python3.10-venv +python3.10-full +libpython3.10-testsuite +idle-python3.10 +idle-python3.10 +python3.10-minimal +python3.10-doc +python3.10-dev +python3 +[截断] +python3 +python3-uno +python3-all +gedit +``` + +#### 使用 Python 3.11 作为默认的 Python3 + +首先,从终端使用以下命令检查当前的默认版本: + +``` +python3 --version +``` + +使用 `update-alternatives` 来创建 `python3` 的符号链接: + +``` +sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1 +``` + +``` +sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 2 +``` + +并通过命令选择哪一个作为 Python3 使用: + +``` +sudo update-alternatives --config python3 +``` + +![设置默认的 Python 版本为 3.11][9] + +现在你可以开始在你当前的 Ubuntu 版本中使用最新的 Python 来进行工作/学习了。你可以使用上述命令切换到库存版本,并随时改变版本。 + +如果你使用上述安装方法切换到 3.11,那么请确保你检查所有必要的应用程序,看它们是否工作正常。 + +最后,如果你遇到问题,请在评论区告诉我。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/install-python-3-11-ubuntu/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/10/py3112204-1024x576.jpg +[2]: https://www.debugpoint.com/install-python-3-10-ubuntu/ +[3]: https://docs.python.org/3.11/whatsnew/3.11.html +[4]: https://www.debugpoint.com/ubuntu-22-04-review/ +[5]: https://www.debugpoint.com/ubuntu-22-10/ +[6]: https://www.debugpoint.com/fedora-37/ +[7]: https://www.debugpoint.com/linux-mint-21-review/ +[8]: https://www.debugpoint.com/wp-content/uploads/2022/10/Install-Python-3.11-in-Ubuntu-22.04-LTS.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2022/10/Setting-up-default-python-version-to-3.11.jpg diff --git a/published/202211/20221026.5 ⭐️ Vanilla OS More Than Just Vanilla GNOME With Ubuntu.md b/published/202211/20221026.5 ⭐️ Vanilla OS More Than Just Vanilla GNOME With Ubuntu.md new file mode 100644 index 0000000000..21a78e56a3 --- /dev/null +++ b/published/202211/20221026.5 ⭐️ Vanilla OS More Than Just Vanilla GNOME With Ubuntu.md @@ -0,0 +1,136 @@ +[#]: subject: "Vanilla OS: More Than Just Vanilla GNOME With Ubuntu" +[#]: via: "https://news.itsfoss.com/vanilla-os-beta/" +[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15203-1.html" + +Vanilla OS:不只是原味 GNOME 的 Ubuntu +====== + +> Vanilla OS 是建立在 GNOME 上的、具有按需不变性和软件包选择自由的 Ubuntu。听起来很有趣?在这里阅读更多信息。 + +![Vanilla OS:不仅仅是原味 GNOME 的 Ubuntu][1] + +这正是我第一次接触 Vanilla OS 时的想法。 + +当 [Bottles][2] 的创建者 **Mirko Brombin** 在 Twitter 上宣布它时,让我对它产生了兴趣 😎。 + +我加入了他们的 Discord 频道并成为了一名测试者。虽然我没有做出什么贡献,但关注项目发展是很有趣的。 + +回到至关重要的问题上:**什么是 Vanilla OS?** + +**Vanilla OS 的目标是提供一个干净、原味的 GNOME 体验,并具有按需不变性的能力。** + +听起来很有趣?让我告诉你我试了试它的第一个开放测试版本后的一些细节。 + +> 💡 Vanilla OS 计划在 11 月有一个稳定的版本。 +> +> 它将跟随 Ubuntu 的小版本发布。 +> +> 因此,你可以期待每年发布**两个版本**。例如,你可以从 Ubuntu 22.04 升级到 Ubuntu 22.10 甚至更之后的版本。 +> +> 除非你知道自己在做什么,否则你不应该把它作为日常系统来使用。 + +### Vanilla OS:又一个基于 Ubuntu 的发行版? + +![vanilla os home][3] + +**是,也不是**。 + +对于初学者来说,我认为有以下独特的理由可以尝试一下: + +- 在 Ubuntu 之上获得 **原装 GNOME 体验**。(Fedora 也是一个很好的选择,但并不适合所有人!) +- 在其安装后的首次设置时,**允许你选择并启用 Flatpak/Snap/AppImage**。 +- **按需不变性**,意味着你可以使系统变成只读,以防止来自第三方应用程序和更新的关键变化。 +- **一个新的软件包管理器**(apx)允许你默认在管理的容器内安装软件包。 + +首次设置过程的体验很轻松。 + +> ℹ️ 目前,它使用 Calamares 安装程序。他们打算用 Crystal Linux 中使用的 Jade 取代它。 + +![Vanilla OS 安装程序][4] + +越来越多的发行版投身于此;我相信更多的用户会乐意加入到 Linux 中来。 + +![][5] + +*Vanilla OS 对软件包管理器的选择* + +当然,像 Ubuntu MATE 和 Pop!_OS 这样的发行版已经付出了巨大的努力,而 Vanilla OS 也为此增加了一些改进。 + +![Vanilla OS 颜色选择][6] + +这看起来是一种漂亮的体验!😊 + +一旦你完成了首次设置,你就没有什么可担心的了。你会得到通常的 GNOME 桌面,以及由 **Patrik Kramolis** 制作的漂亮的壁纸。 + +![Vanilla OS 主页][7] + +接下来,我试着检查了按需不变性,你可以用以下命令查看和调整: + +![Vanilla OS 终端][8] + +你可以在 [GitHub][9] 上了解更多这个(基本上)使之成为可能的工具。 + +接下来,看看新的软件包管理器,我喜欢 Distrobox 的底层概念,使其与 apx 成为可能。 + +Distrobox 的创建者 **Luca di Maio** 也参与了 Vanilla OS 的开发。 + +不过,当用 apx 安装一个软件包时,你需要用命令来初始化容器: + +``` +apx init +``` + +如果它能自动完成,那就更直观了。 + +![Vanilla OS apx][10] + +当然,我不知道技术上的限制。但是,对于用户端来说会感觉更顺滑! + +总的来说,一个利用容器安装应用程序的软件包管理器、获得选择你的软件包管理器的能力、按需不变性,以及原味的 GNOME 使它看起来是一个值得关注的好东西。 + +### 前面的路:第一印象 + +我觉得,一旦它进入稳定版,它就会成为我的日常使用系统。 + +**原因是**:我总是喜欢原装的 GNOME 体验,而且不需要处理 Fedora 的定期升级。 + +当然,等我使用了稳定版之后,我可以给你写一篇整体的用户体验评判。 + +在那之前,我想说这是一个我相信很多用户都会喜欢的项目 👏。 + +目前,你可以通过加入其 Discord 频道来下载 ISO。该 ISO 还没有公开向所有人提供。如果你感兴趣,可以看看它的 [文档][11]。 + +> **[Vanilla OS][12]** + +然而,按照路线图,他们计划很快就会有一个候选版本。 + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/vanilla-os-beta/ + +作者:[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/content/images/size/w1200/2022/10/first-look-at-vanilla-os.jpg +[2]: https://usebottles.com +[3]: https://news.itsfoss.com/content/images/2022/10/vanillaos.jpg +[4]: https://news.itsfoss.com/content/images/2022/10/vanillaos-installer.jpg +[5]: https://news.itsfoss.com/content/images/2022/10/choosing-package-vanillaos.png +[6]: https://news.itsfoss.com/content/images/2022/10/vanilla-os-first-setup.png +[7]: https://news.itsfoss.com/content/images/2022/10/vanillaos-wallpaper.jpg +[8]: https://news.itsfoss.com/content/images/2022/10/Screenshot-from-2022-10-25-12-54-29.png +[9]: https://github.com/Vanilla-OS/almost +[10]: https://news.itsfoss.com/content/images/2022/10/apx-install.jpg +[11]: https://documentation.vanillaos.org +[12]: https://vanillaos.org/roadmap diff --git a/published/202211/20221027.0 ⭐️ How to Upgrade Python Packages with Pip.md b/published/202211/20221027.0 ⭐️ How to Upgrade Python Packages with Pip.md new file mode 100644 index 0000000000..020249de97 --- /dev/null +++ b/published/202211/20221027.0 ⭐️ How to Upgrade Python Packages with Pip.md @@ -0,0 +1,110 @@ +[#]: subject: "How to Upgrade Python Packages with Pip" +[#]: via: "https://itsfoss.com/upgrade-pip-packages/" +[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/" +[#]: collector: "lkxed" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15224-1.html" + +使用 Pip 升级 Python 软件包 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/07/153408lqflbw3mwxja3qm4.jpg) + +你上次更新通过 Pip 安装的 Python 软件包是什么时候?大多数用户往往会忘记这些 Python 软件包也需要手动更新,因为仅仅更新系统存储库对于软件包来说是不起作用的。 + +因此,让我们花点时间看看如何使用 Pip,来更新旧的 Python 软件包吧。 + +### 如何使用 Pip 升级 Python 软件包 + +[Pip(Pip Installs Packages)][1] 是一个用于管理 Python 软件包的 命令行实用程序 command line utility 。你可以将 Pip 安装 Python 软件包,类比为在 Ubuntu 和 Debian 中使用 `apt` 管理软件包那样。 + +因此,接下来就让我们深入了解如何使用这个极好的工具 Pip,来管理与 Python 软件包相关的内容吧。 + +#### 1、列出过时的 Python 软件包 + +在计划更新什么软件包之前,我们先要列出有哪些过时的软件包,你可以在其中选择想要更新的软件包,因为大多数人不会想一下子更新整个软件包库。 + +要列出过时的 Python 软件包,你只需将 `pip` 命令与 `list` 选项、`--outdated` 标志一同使用即可,如下图所示: + +``` +pip list --outdated +``` + +![outdated packages][2] + +#### 2、升级特定的软件包 + +获得可更新的软件包列表后,你可以像我之前提到的那样,选择你要更新的那个特定的软件包,pip 升级软件包命令的语法如下: + +``` +pip install package_name -U +``` + +例如,我想将名为 `anime-api` 的软件包升级到最新版本,所以我将使用下面的命令来升级: + +``` +pip install anime-api -U +``` + +![update anime api][3] + +#### 3、将软件包升级到特定的版本 + +没有必要总是使用软件的最新版本,如果你想将软件包升级到不是最新的某个特定版本,参考如下的命令语法: + +``` +pip install --upgrade == +``` + +例如,我想将名为 `xdg` 的软件包更新到 5.1 版本,5.1 版本是最新版本的前一个版本,所以可以使用以下命令: + +``` +pip install --upgrade xdg==5.1 +``` + +![upgrade xdg to specific iteration][5] + +#### 4、使用 Pip 一次性升级所有软件包 + +**请注意:我不建议你一次性升级所以软件包,因为 Python 软件包的依赖项太复杂了,一次性的升级无法处理相互依赖项。** + +要一次性升级所有 python 软件包,你可以使用以下命令: + +``` +pip3 list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip3 install -U +``` + +![upgrade everything][6] + +上面的命令使用了 [xargs][7]。首先,会得到所有需要更新的软件包,然后对每个软件包执行 `pip3 install -U` 命令。 + +我在这里使用的是 `pip3`,而不是 `pip`。在 Ubuntu 22.04 及更高的版本中,`pip` 和 `pip3` 命令都可以使用。 + +### 总结 + +使用 Pip 一次性更新所有 Python 软件包并不是一个好主意。我发现一次性更新后,软件包之间的依赖关系被破坏了,所以请确保只更新你想要更新的软件包。 + +如果你还有其他的疑问,就请在评论区中留言吧。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/upgrade-pip-packages/ + +作者:[Sagar Sharma][a] +选题:[lkxed][b] +译者:[chai001125](https://github.com/chai001125) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/sagar/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/install-pip-ubuntu/ +[2]: https://itsfoss.com/wp-content/uploads/2022/09/outdated-packages.png +[3]: https://itsfoss.com/wp-content/uploads/2022/09/update-anime-api.png +[4]: https://www.debian.org/ +[5]: https://itsfoss.com/wp-content/uploads/2022/09/upgrade-xdg-to-specific-iteration.png +[6]: https://itsfoss.com/wp-content/uploads/2022/09/upgrade-everything.png +[7]: https://linuxhandbook.com/xargs-command/ diff --git a/published/202211/20221027.6 ⭐️⭐️ Top 10 Linux Distributions for Programmers in 2022 [Featured].md b/published/202211/20221027.6 ⭐️⭐️ Top 10 Linux Distributions for Programmers in 2022 [Featured].md new file mode 100644 index 0000000000..82419d578b --- /dev/null +++ b/published/202211/20221027.6 ⭐️⭐️ Top 10 Linux Distributions for Programmers in 2022 [Featured].md @@ -0,0 +1,225 @@ +[#]: subject: "Top 10 Linux Distributions for Programmers in 2022 [Featured]" +[#]: via: "https://www.debugpoint.com/top-linux-distributions-programmers-2022/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15275-1.html" + +适合程序员的十大 Linux 发行版(2022 版) +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/21/153625z44s41qcviv5ckip.jpg) + +> 我们点评了为程序员和开发人员提供的十大最佳 Linux 发行版(2022 版),以帮助他们完成工作和个人项目。 + +程序员和开发人员在其工作或项目中会使用各种工具和应用程序,包括代码编辑器、编程语言编译器、附加组件、数据库等。如果你对现代开发者的工作流程进行分类,它包含以下典型的工作流程: + +- 访问代码库 +- 编程 +- 调试 +- 测试 +- 部署 + +而这种典型的工作流程可能需要各种工具。一个标准的清单可能是这样的: + +- 代码编辑器 +- 简单的文本编辑器 +- 网页浏览器(网页开发者需要所有变体) +- 数据库引擎 +- 一个本地服务器 +- 编程语言相应的编译器 +- 调试器 +- 监测或剖析工具(可执行文件或网络版) + +可以说,与 Windows 相比,Linux 是编程的最佳选择。(出于几个原因,我在本文中不对 macOS 进行比较。)Linux 是最佳选择的主要原因是,与 Windows 相比,在 Linux 发行版中已经预装具有现代技术的软件包和应用程序,或非常容易安装。 + +因此,在这篇文章中,我们想列出 2022 年最适合程序员的 Linux 发行版。 + +### 2022 年适合程序员的十大 Linux 发行版 + +#### 1、Fedora Workstation + +![Fedora 35 Workstation][1] + +也许这个名单中最完美的 Linux 发行版是 Fedora Linux。它用于桌面的默认 Workstation 版通过其选择的软件包带来了正宗的 GNOME 桌面体验。 + +Fedora Linux 的默认安装为你提供了所有主要的开发包,开箱即用。它们包括 PHP、OpenJDK、PostgreSQL、Django、Ruby on Rails、Ansible 等。 + +通过 dnf 软件包管理器安装更多的应用程序是非常简单的,如 VS Code 编辑器和其他软件包。你也可以借助“软件Software”应用来安装,这是一个应用商店,你只需点击一个按钮就可以搜索和安装应用程序。 + +Fedora Linux 支持 Snap 和 Flatpak,这给了你更多的灵活性。你也可以利用 Fedora 中的 RPM Fusion 仓库,这个仓库让你可以访问许多自由和非自由的软件包。由于许可证和其他明显的原因,Fedora Linux 不想在他们的主仓库中包括这些包。 + +你可以在下面的官网上查看最新的 Fedora Linux。 + +> **[下载 Fedora][2]** + +#### 2、Ubuntu Linux + +![Ubuntu 桌面是一个适合程序员的完美的Linux发行版][3] + +本列表中的第二个 Linux 发行版是 Ubuntu Linux。Ubuntu Linux 是目前在服务器和桌面上使用最多的 Linux 发行版。Ubuntu 提供长期支持(LTS)版本,有五年的官方支持(另外还有五年的维护支持),期间还有短期支持版本供高级用户使用。 + +由于它很流行,所有最新的软件包和应用程序供应商都提供 Ubuntu(.deb)版本。因其流行,也带来了论坛和文档的大量支持,这对开发者来说是完美的,特别是当你在开发阶段被错误困住的时候。在下面的链接中了解更多关于 Ubuntu 的信息。 + +> **[下载 Ubuntu][4]** + +#### 3、openSUSE + +openSUSE 是全球在关键系统中使用的最稳定和最专业的 Linux 发行版之一。这个 Linux 发行版是企业级工作负载的首选解决方案之一,包括台式机、服务器和瘦客户机。 + +它比 Ubuntu 和 Fedora 有一些优势。首先,它有两个变种:Leap 和 Tumbleweed。openSUSE Leap 是一个长期支持版本(LTS),提供最新的稳定性。openSUSE Tumbleweed 是一个滚动发布的软件,提供尖端的软件包。 + +如果你的开发需要最新的软件包和硬件支持,那么 Tumbleweed 就是你的选择。如果你需要稳定性和一个运行时间较长、维护量较小的系统,请选择 openSUSE Leap。 + +使用 openSUSE 进行开发工作的优势之一是其软件包管理器 YaST。使用 YaST 软件包管理器,你可以轻松地将许多事情自动化。 + +除此之外,openSUSE 的软件交付方式也很出色。它的软件门户在网上,你可以访问它,搜索一个软件包,然后点击安装。 + +如果与新用户相比,你对 Linux 有一定的经验,请选择 openSUSE 进行开发工作。 + +> **[下载 openSUSE][5]** + +#### 4、Manjaro Linux + +Manjaro Linux 是一个基于 Arch Linux 的发行版,它使 Arch 的安装变得简单。它基于 Arch Linux,但带来了一些功能,如像 Ubuntu 或 Linux Mint 那样的图形化安装程序、 pamac 安装程序、精心策划的软件仓库等。Manjaro 有三种主要的桌面风格:GNOME、KDE Plasma 和 Xfce,可以满足几乎所有用户的需求。 + +如果你想用 Arch Linux 和它的滚动发布包来满足你的开发需求,但又不想陷入安装原生 Arch 的麻烦,Manjaro 是你的完美选择。 + +> **[下载 Manjaro][6]** + +#### 5、Arch Linux + +虽然 Manjaro 和其他基于 Arch 的易于安装的 Linux 发行版已经出现,但你可能还是想用 [原生 Arch][7] 来亲手定制你的桌面。 + +这更多的是针对那些想要更多控制权和为项目或需求建立自定义 Linux 操作系统的资深开发者或程序员。在这些情况下,你可能想用你最喜欢的桌面安装 Arch Linux 来设置你的开发操作系统。 + +假设你对 Arch Linux 和计算机有一定的经验。在这种情况下,这是所有选择中最好的,因为它可以让你完全控制定制的 Linux 操作系统中的每个软件包。 + +> **[下载 Arch Linux][8]** + +#### 6、Pop OS + +Pop OS(写作 Pop!_OS )是由计算机制造商 System76 为其系列硬件开发的。Pop OS 是自由开源的,基于 Ubuntu。它遵循 Ubuntu 的发布周期,同时带来额外的调整,以及为用户定制的软件包。 + +![Pop OS 21.10 桌面 Linux 发行版][9] + +Pop OS 是程序员的完美选择,因为它原生支持许多 Ubuntu 支持的编程语言。它因其打造的软件中心而在计算机科学家和程序员中广受欢迎,该软件中心有一个专门的部分介绍开发和编程的应用程序。 + +除此之外,Pop OS 中的 COSMIC 桌面(一个定制的 GNOME 桌面)为程序员提供了独特的体验,包括自动平铺、可爱的调色板、原生的深色模式和丰富的设置。 + +如果你需要一个基于 Ubuntu、稳定的、并对程序员友好的 Linux 发行版,那么请选择 Pop OS。 + +> **[下载 POP OS][10]** + +#### 7、KDE Neon + +如果你是一个很习惯 KDE Plasma 桌面的开发者,并且想要一个基于 Qt 的开发环境,那么 KDE Neon 就非常适合你。 + +KDE Neon 是一个基于 Ubuntu LTS 版本的 Linux 发行版,带有最新的 KDE Plasma 桌面和 KDE 框架包。因此,在 KDE Neon 中,你可以得到 Ubuntu LTS 的稳定性和带有 Qt 的最新 KDE 软件包。 + +如果你需要一个拥有开箱即用的应用程序的快速系统、一个友好的用户界面和巨大的社区支持,这是一个完美的 Linux 发行版。 + +> **[下载 KDE Neon][11]** + +#### 8、Debian + +Debian GNU/Linux 无需介绍。Debian 的稳定分支是 Ubuntu 及其所有衍生品的基础。因此,它是主要和稳定的 Linux 之一。它是你的开发环境的完美选择,因为它为你提供了终极稳定性和多年的支持。 + +不过,Debian 的稳定分支在采用最新软件包方面略显保守。Debian 的维护者会仔细检查和合并软件包,因为整个世界(嗯,几乎)都依赖于 Debian 的稳定性。 + +对于高级用户和系统管理员来说,如果你想要一个稳定的、长期运行的开发环境,并且维护工作量较少,那么它是一个完美的编程环境。 + +> **[下载 Debian Linux][12]** + +#### 9、Kali Linux + +Kali Linux 是由 Offensive Security 开发的,主要针对寻找网络漏洞的道德黑客和渗透测试人员。它预装了大量的黑客工具和应用程序。 + +如果你有足够的经验,它可以成为程序员和开发人员的一个完美的 Linux 发行版。如果你对 Linux 很熟悉,并且在处理错误和依赖关系方面有一定的经验,就可以选择 Kali Linux。 + +> **[下载 Kali Linux][13]** + +#### 10、Fedora 实验室 + +而这个名单上的最后一个 Linux 发行版是 Fedora Linux 的发行版组合。 + +Fedora 实验室Labs为程序员、科学家和学生提供了专门策划的 Linux 发行版,并预装了应用程序、相应的软件包和实用程序。很多人都不知道这些,如果配置得当,它们可以作为完美的现成 Linux 发行版为你服务。 + +下面是对它们的总结: + +**Fedora 科学** + +- 科学和数值开源工具与 KDE Plasma 桌面的结合 +- 应用列表包括: + - 用于 C/C++ 的 GNU 科学库 + - 与 MATLAB 兼容的 MGNU Octave + - LaTeX + - Maxima 计算机代数系统 + - 用于绘制二维和三维图形的 Gnuplot + - 用于数据科学的 Pandas Python 库 + - IPython + - 用于 Java 和 R 编程语言的软件包 +- 关于 Fedora 科学,[在此下载][14] 和了解更多。 + +**Fedora 计算神经科学** + +- 带有 GNOME 桌面环境的开源神经科学应用程序和软件包。 +- 了解更多并 [在此下载][15]。 + +**Fedora 机器人套件** + +- 这个完美的 Linux 发行版结合了最好的开源机器人应用程序和软件包,针对初级和经验丰富的机器人科学家和程序员。 +- 了解更多并 [在此下载][16]。 + +来自 Fedora Linux 的**其他解决方案**包括 [Fedora 安全实验室][17]、[Fedora 天文学][18] 和 [Fedora Python 教室][19],你或许想看看这些解决方案。 + +这些 Fedora 实验室选项可以成为编程项目或在特定科学领域工作的完美 Linux 发行版。 + +### 总结 + +那么,你如何在这份最适合程序员的 Linux 发行版名单中选择你的最爱? + +如果你不确定,并希望以最小的努力来建立和运行一个开发系统,那就选择 Fedora Workstation 或 Ubuntu。 + +如果你有空闲时间,或者想对你的系统有更多的控制,喜欢做实验,对偶尔出现的错误也不在意,那么就选择基于 Arch Linux 的系统。 + +对于刚进入 Linux 生态系统的新开发者来说,Pop OS 也是一个不错的选择。对于特定的需求,请到 Fedora 实验室选择。 + +我希望这份 2022 年最适合程序员的 Linux 发行版清单能给你一些指导,让你选择最喜欢的 Linux 发行版进行编程和开发。 + +干杯。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/top-linux-distributions-programmers-2022/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2021/11/Fedora-35-Workstation.jpg +[2]: https://getfedora.org/ +[3]: https://www.debugpoint.com/wp-content/uploads/2022/03/Ubuntu-Desktop-is-a-perfect-Linux-Distribution-for-Programmers.jpg +[4]: https://ubuntu.com/download +[5]: https://www.opensuse.org/ +[6]: https://manjaro.org/download/ +[7]: https://www.debugpoint.com/2022/01/archinstall-guide/ +[8]: https://archlinux.org/download/ +[9]: https://www.debugpoint.com/wp-content/uploads/2021/12/Pop-OS-21.10-Desktop.jpg +[10]: https://pop.system76.com/ +[11]: https://neon.kde.org/download +[12]: https://www.debian.org/distrib/ +[13]: https://www.kali.org/ +[14]: https://labs.fedoraproject.org/en/scientific/ +[15]: https://labs.fedoraproject.org/en/comp-neuro/ +[16]: https://labs.fedoraproject.org/en/robotics/ +[17]: https://labs.fedoraproject.org/en/security +[18]: https://labs.fedoraproject.org/en/astronomy +[19]: https://labs.fedoraproject.org/en/python-classroom diff --git a/published/202211/20221030.0 ⭐️ How to Enable Dark Mode in Web Browser.md b/published/202211/20221030.0 ⭐️ How to Enable Dark Mode in Web Browser.md new file mode 100644 index 0000000000..733c174ab8 --- /dev/null +++ b/published/202211/20221030.0 ⭐️ How to Enable Dark Mode in Web Browser.md @@ -0,0 +1,104 @@ +[#]: subject: "How to Enable Dark Mode in Web Browser" +[#]: via: "https://www.debugpoint.com/dark-mode-browser/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15226-1.html" + +如何在 Web 浏览器中启用深色模式 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/08/110615dax28a8fhx13hxhi.jpg) + +> 本指南旨在帮助你在 Firefox、Chrome、Chromium 和 Edge 等流行的网页浏览器中启用深色模式。 + +我们都喜欢深色模式。与标准浅色模式相比,许多人更喜欢它。许多桌面应用原生提供深色模式,而一些应用则是通过桌面环境的底层模式适应深色模式。 + +不可否认,我们都在网页浏览器上花费了很多时间。我们很少使用桌面应用(除非你从事专门的工作,例如视频编辑等)。因此,当你花费大量时间在浏览器中阅读和学习时,你始终可以选择深色模式。不过,对于网页浏览器,启用深色模式的方法略有不同。 + +本指南为你提供了在 Firefox、Chromium、Chrome 和 Edge 浏览器中启用深色模式的简单步骤。 + +### 在网页浏览器中启用深色模式 + +#### 在 Firefox 中启用深色模式 + +打开 Firefox 并点击右上角的菜单。 + +单击 “设置Settings > 扩展和主题Extension and Themes”。 + +选择 “深色主题Dark Theme” 并点击 “启用enable”。你应该会看到深色模式已应用于 Firefox。 + +![Enable dark mode in Firefox][1] + +*在 Firefox 浏览器中启用深色模式* + +![Firefox in Dark Mode][2] + +*深色模式下的 Firefox* + +要将其还原,请按照相同的步骤并选择浅色主题。 + +#### Chromium 和 Chrome 中的深色模式 + +默认情况下,Chromium 或 Chrome 不会预安装任何深色主题。因此,你需要前往 Chrome 应用商店并下载你想要的深色主题。对于本指南,我会推荐超过一百万用户使用的 “Morpheon Dark” 主题。 + +从 Chromium 浏览器打开 Morpheon Dark 主题页面(以下链接)。 + +> **[Chrome 应用商店中的 Morpheon Dark 主题][3]** + +点击 “添加到 ChromeAdd To Chrome” 按钮。它应该会在 Chrome 中启用。 + +你可能想探索 Chrome 应用店中提供的其他深色或浅色主题。 [访问此页面获取所有深色主题的集合][4]。 + +但是,你应该要记住的一件事是:此主题不会更改设置或上下文菜单,这是显而易见的。因为它只是改变了浏览器窗口,而这些菜单(有时)是操作系统本身的一部分。 + +![Chromium Dark Theme][5] + +*Chromium 深色主题* + +对 Chrome 浏览器也遵循相同的步骤。 + +#### Edge 浏览器 – 深色模式 + +但是,[Edge 浏览器][6] 默认带有更好的深色主题。它允许你从设置中使用 GTK+、浅色和深色模式。 + +打开 Edge 浏览器,点击右上角的三个小点。 + +转到 “外观Appearance” 并选择 “深色Dark”。这样应该就好了。 + +Edge 的这种深色主题实现更好,因为它改变了上下文菜单和地址栏。 + +![Edge in Dark Theme][7] + +*深色主题的 Edge* + +### 总结 + +如果你是高级用户,你可能不需要本指南。你可以自己弄清楚。 + +但我们为所有读者涵盖了所有基础到高级教程。许多新的 Linux 用户可能不知道如何在浏览器中启用深色模式。 + +所以,就是说,我希望这对你和其他人有帮助。如果你遇到任何问题,请在下面的评论框中告诉我。 + +--- + +via: https://www.debugpoint.com/dark-mode-browser/ + +作者:[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/2021/10/Enable-dark-mode-in-Firefox.jpg +[2]: https://www.debugpoint.com/wp-content/uploads/2021/10/Firefox-in-Dark-Mode-1024x423.jpg +[3]: https://chrome.google.com/webstore/detail/morpheon-dark/mafbdhjdkjnoafhfelkjpchpaepjknad?hl=en-GB +[4]: https://chrome.google.com/webstore/category/collection/dark_themes +[5]: https://www.debugpoint.com/wp-content/uploads/2021/10/Chromium-Dark-Theme-1024x463.jpg +[6]: https://www.debugpoint.com/2020/10/how-to-install-edge-ubuntu-linux/ +[7]: https://www.debugpoint.com/wp-content/uploads/2021/10/Edge-in-Dark-Theme-1024x541.jpg diff --git a/published/202211/20221030.2 ⭐️⭐️ Install WoeUSB on Ubuntu to Create a Bootable Windows USB.md b/published/202211/20221030.2 ⭐️⭐️ Install WoeUSB on Ubuntu to Create a Bootable Windows USB.md new file mode 100644 index 0000000000..4ec2ffed02 --- /dev/null +++ b/published/202211/20221030.2 ⭐️⭐️ Install WoeUSB on Ubuntu to Create a Bootable Windows USB.md @@ -0,0 +1,190 @@ +[#]: subject: "Install WoeUSB on Ubuntu to Create a Bootable Windows USB" +[#]: via: "https://itsfoss.com/install-woeusb-ubuntu/" +[#]: author: "Sreenath https://itsfoss.com/author/sreenath/" +[#]: collector: "lkxed" +[#]: translator: "robsean" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15217-1.html" + +在 Ubuntu 上安装 WoeUSB 来创建一个可启动 Windows USB +====== + +> 想在 Linux 上创建一个可启动 Windows USB ?Ventoy 是一个很好的选择。 + +但是,在 Ventoy 出道之前,WoeUSB 是用于创建可启动 Windows USB 的首选工具。原版 WoeUSB 工程在 2014 年左右香消玉损。 + +鉴于其流行程度,一位新的开发者接过了将其起死回生的任务。因此,WoeUSB-ng 诞生了。在这里,“ng” 是 新生代new generation 的缩写。换句话说,[WoeUSB-ng][1] 是新生代的 WoeUSB 。但是,因为原版的工具已经不存在了,我将 WoeUSB-ng 描述为 WoeUSB 。 + +在这篇教程中,我将向你展示如何在 Ubuntu Linux 上安装 WoeUSB 。我也将分享使用 WoeUSB 来创建可启动 Windows USB 的步骤。 + +但是,在此之前,让我们快速查看这个令人惊叹的工具的特色。 + +### WoeUSB + +![install woeusb ubuntu][2] + +WoeUSB 是一个简单的工具,其唯一的目的是 [在 Linux 上创建可启动 Windows USB][3] 。 + +原版 WoeUSB 是一个 shell 脚本。这个原版 WoeUSB 被使用 Python 重写为 WoeUSB-ng ,它可以安装在你的系统上,并且通过命令行或 GUI 界面。 + +特色: + +- 支持老式 PC 启动或 UEFI 启动 +- 支持 FAT32 和 NTFS 文件系统 +- 支持使用物理安装盘或磁盘镜像作为源 +- 它可以用于 Windows Vista 及其更高版本的任意语言或变体版本 +- 老式的 MBR/IBM PC 兼容启动模式 +- 本机 UEFI 启动支持 Windows 7 及其更高版本的镜像(仅限于将 FAT 文件系统作为目标的情况) + +### 在 Ubuntu 和其它的 Linux 发行版上安装 WoeUSB + +Arch Linux 用户可以从 AUR 安装 WoeUSB-ng 。 + +对于其它的发行版,可以使用 PIP 来安装 WoeUSB 。毕竟,它是一个 Python 应用程序。在这里,我将为 Ubuntu/Debian 提供一些命令。 + +为安装 WoeUSB-ng ,你首先需要 [安装 PIP][4] 和其它必要的依赖项。 + +``` +sudo apt install git p7zip-full python3-pip python3-wxgtk4.0 grub2-common grub-pc-bin +``` + +在这之后,你可以安装 WoeUSB-ng ,通过运行: + +``` +sudo pip3 install WoeUSB-ng +``` + +对于所有的其它安装,你可以参考其 [操作指南][5] 。 + +> **[WoeUSB-ng][1]** + +### 前提条件: 获取 Windows 的 ISO 文件和一个兼容的 USB 磁盘 + +这一点没有什么需要说的。你需要有一个你将要安装的 Windows 版本的 ISO 文件。 + +从微软的网站,你应该能够获取 Windows 10 和 11 的ISO 文件。 + +> **[下载 Windows][6]** + +如果你有较旧的 Windows 版本的 ISO 文件,也可以使用它们。 + +除此之外,你需要有一个至少 8 GB 大小的 USB 驱动器磁盘。你应该使用 NTFS 的文件系统来格式化它filesystem. + +### 方法 1: 使用图形用户界面化的 WoeUSB 来创建一个可启动的 Windows USB(推荐) + +从 活动概述activity overview 或菜单中打开 woeusb-gui 。 + +![woeusb in ubuntu activities overview][7] + +在应用程序窗口中,选择下载的 Windows ISO 和所希望的 USB 驱动器,如截屏所示,然后按下 安装Install 按钮。 + +![woeusb gui setup][8] + +在应用程序中也其它可用的调整,可以通过顶部的菜单栏来访问使用。 + +在按下“安装”按钮后,woeUSB 将开始格式化和复制文件。你需要等待一些时间,因为这里有大约 6 GB 的文件需要复制。 + +![woeusb writing windows iso to the usb drive][9] + +在复制完成后,WoeUSB 将会提示一个成功的对话框。你现在可以安全地弹出 USB 驱动器,并将其作为一个可启动 USB 驱动器来使用。 + +![woeusb completed writing and gives a success message][10] + +### 方法 2: 从终端中使用 WoeUSB(针对专家) + +WoeUSB-ng 软件包也提供一个名称为 `woeusb` 的命令行实用程序。 + +为使用 WoeUSb 来创建一个可启动的 Windows USB ,你需要运行下面的命令: + +``` +sudo woeusb --device --target-filesystem ntfs +``` + +在这里,`--device` 标识用于擦除 USB 和从零开始创建一个可启动 USB 驱动器。同样,`--target-filesystem` 标识用于设置为 NTFS ,来避免将要复制的文件大小超过 FAT 文件系统的限制。 + +![woeusb commandline][11] + +该过程将花费一些时间来完成复制。在完成复制后,它将显示一条成功的信息。 + +![woeusb commandline success message][12] + +此时,你可以安全地弹出 USB 驱动器,并在其它的个人电脑上将其作为一个 Windows 可启动 USB 来使用。 + +### 超值: 使用 WoeUSB 的 Bash Shell 脚本(针对专家) + +WoeUSB 也提供一个 Bash Shell 脚本,在你的系统上,它不需要安装任何东西就可以使用。 + +首先,你需要从 [该工程的发布版本页面][13] 下载 Shell 脚本。 + +在 [执行 Shell 文件][14] 之前,你需要获取所需要的依赖项。为安装它,运行: + +``` +sudo apt install wimtools +``` + +现在,通过文件管理器或通过命令行来使它可执行。 + +![make woeusb script executable][15] + +或者,你可以运行 `chmod +x ` 来使它可执行。现在,运行已下载目录中的 `./woeusb-5.2.4.bash -h` 来获取帮助。 + +为创建一个现场 USB ,该进程类似于 woeusb-ng 的命令行部分,但是你没有安装任何东西。 + +因此,在一个终端中,运行: + +``` +sudo --device --target-filesystem ntfs +``` + +这将开始将 ISO 写入 USB 驱动器,如下面的截屏所示: + +![woeusb bash script running without installation][16] + +在完成后,你可以安全地弹出 USB 驱动器,并将其作为可启动 USB 使用。 + +### 移除 WoeUSB + +如果你使用 PIP 安装 WoeUSB ,你也可以类似地移除它: + +``` +pip3 uninstall WoeUSB-ng +``` + +你可以在你的系统上保留或移除已安装的依赖项。这完全取决于你。我建议保留它们。 + +### 总结 + +大约 10 年前,WoeUSB 是一个非常流行的工具。其他人以另外一种形式将其复活是很好的,这就是开源的艺术。 + +我希望这篇教程会帮助你。如果通过 WoeUSB 创建的 Windows USB 不能按部就班地工作,你可以 [尝试使用 Ventoy][3] 。享受它。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/install-woeusb-ubuntu/ + +作者:[Sreenath][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://itsfoss.com/author/sreenath/ +[b]: https://github.com/lkxed +[1]: https://github.com/WoeUSB/WoeUSB-ng +[2]: https://itsfoss.com/wp-content/uploads/2022/10/install-woeusb-ubuntu.png +[3]: https://itsfoss.com/bootable-windows-usb-linux/ +[4]: https://itsfoss.com/install-pip-ubuntu/ +[5]: https://github.com/WoeUSB/WoeUSB-ng#installation +[6]: https://www.microsoft.com/en-in/software-download/ +[7]: https://itsfoss.com/wp-content/uploads/2022/10/woeusb-in-ubuntu-activities-overview.png +[8]: https://itsfoss.com/wp-content/uploads/2022/10/woeusb-gui-setup.png +[9]: https://itsfoss.com/wp-content/uploads/2022/10/woeusb-writing-windows-iso-to-the-usb-drive.png +[10]: https://itsfoss.com/wp-content/uploads/2022/10/woeusb-completed-writing-and-gives-a-success-message.png +[11]: https://itsfoss.com/wp-content/uploads/2022/10/woeusb-commandline.png +[12]: https://itsfoss.com/wp-content/uploads/2022/10/woeusb-commandline-success-message.png +[13]: https://github.com/WoeUSB/WoeUSB/releases/tag/v5.2.4 +[14]: https://itsfoss.com/run-shell-script-linux/ +[15]: https://itsfoss.com/wp-content/uploads/2022/10/make-woeusb-script-executable.png +[16]: https://itsfoss.com/wp-content/uploads/2022/10/woeusb-bash-script-running-without-installation.png diff --git a/published/202211/20221101.1 ⭐️⭐️ Transfer files and folders from Windows to Linux with WinSCP.md b/published/202211/20221101.1 ⭐️⭐️ Transfer files and folders from Windows to Linux with WinSCP.md new file mode 100644 index 0000000000..dab44cba47 --- /dev/null +++ b/published/202211/20221101.1 ⭐️⭐️ Transfer files and folders from Windows to Linux with WinSCP.md @@ -0,0 +1,115 @@ +[#]: subject: "Transfer files and folders from Windows to Linux with WinSCP" +[#]: via: "https://opensource.com/article/22/11/transfer-files-folders-windows-linux-winscp" +[#]: author: "Paul https://opensource.com/users/plaubscher" +[#]: collector: "lkxed" +[#]: translator: "robsean" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15297-1.html" + +使用 WinSCP 将文件和文件夹从 Windows 传输到 Linux +====== + +![][0] + +> 如果你正在寻找一种快速的从你的 Windows 计算机传输文件到你的 Linux 计算机的方法,那么开源的 WinSCP 实用程序会使其很容易地通过网络传输文件或文件夹。 + +有时,你需要通过文件传输文件。有很多文件共享服务,但是大多数的共享服务都要求你发送你的文件到互联网上。当两台计算机并排在一起或在一栋建筑物中时,通过互联网传输文件,这似乎看起来绕了很远的路(更不用说隐私问题)。开源的 WinSCP 实用程序会使其很轻易地通过网络将一个文件或一个文件夹从你的 Windows 计算机传输到你的 Linux 计算机。 + +### IP 地址 + +在你可以传输之前,你必须知道目标计算机的 IP 地址或完全限定域名。假设它是一台在你的同一个网络上的计算机,并且你没有运行 DNS 服务器来解析计算机名称,你可以在 Linux 计算机上使用 `ip` 命令来找到目标 IP 地址: + +``` +[linux]$ ip addr show |grep 'inet ' +inet 127.0.0.1/8 scope host lo   +inet 192.168.1.23/24 brd 10.0.1.255 scope global noprefixroute eth0 +``` + +`127.0.0.1` 是一个 环回地址loopback address ,计算机仅使用它来自我通信,因此在这个示例中,正确的地址是 `192.168.1.23` 。在你的系统中,IP 地址可能会看起来有所不同。如果你不确定哪个是哪个,你可以逐个尝试到你找到正确的 IP 地址 (然后,在一些地方写下来!) + +或者,你可以查找你的路由器设置,它列出了所有通过 DHCP 分配的地址。 + +### 防火墙和地址 + +`WinSCP` 命令使用 OpenSSH 协议,因此,你的 Linux 计算机必需运行 OpenSSH 服务器软件,并且你的 Linux 计算机的防火墙必需允许 SSH 通信。 + +如果你不确定你的 Linux 机器是否在运行 SSH ,那么在 Linux 机器的终端上运行这个命令: + +``` +[linux]$ sudo systemctl enable --now sshd +``` + +为确保你的防火墙允许 SSH 通信,运行这个命令: + +``` +[linux]$ sudo firewall-cmd --add-servicessh--permanent +``` + +关于 Linux 上的防火墙的更多信息,阅读 [增强 Linux 防火墙][1] 。 + +### 使用 WinSCP + +WinSCP 是一款针对微软 Windows 的开源 SSH 文件传输应用程序。为使用它,你必须先 [下载][2] 和 [安装][2] 它。 + +在你安装完成后,打开 WinSCP ,并在 “文件协议File Protocol” 字段中选择 “SCP” 选项。 + +在 “主机名称Host name” 字段中添加你的 Linux 计算机的 IP 地址或 DNS 名称,并在 “端口号Port number” 字段中输入 **22** 。针对该 Linux 计算机,输入你的用户名称和密码,然后单击 WinSCP 窗口底部的 “登录Login” 按钮。 + +![Image of the WinSCP login window.][3] + +验证你是否获取了登录 Linux 计算机的身份授权。在验证成功后,你的 Linux 计算机的 IP 地址或 DNS 名称将显示在窗口的顶部。 + +![Image of a WinSCP window showing where IP adress is located.][4] + +现在,你可以从左侧的 Windows 面板中拖拽一个文件(如示例,我使用 `winscp-test.txt` 文件)到右侧的目标 Linux 计算机目标,接下来文件会传输。 + +![Image of drag and drop window in WinSCP.][5] + +或者,你可以在左侧的面板中右键单击一个文件,然后上传它到右侧的远程目标的面板。 + +![Image of a right click option to upload files in WinSCP.][6] + +### 验证副本 + +打开一个 Linux 终端,然后使用 `ls` 命令来查看已传输的 `winscp-test.txt` 文件。在我的示例中,它出现在我的主目录, `/home/sysadmin` 。 + +``` +$ ls +Desktop +Documents +Downloads +Music +Pictures +pscp-test.txt[...] +``` + +你已经通过网络成功地将一个文件从一台 Windows 计算机传输到一台 Linux 计算机! + +当然,你也可以使用类似上述的技术,将文件和文件夹从一台 Linux 计算机传输到一台 Windows 计算机。 + +### 远程复制 + +使用强大的开源 WinSCP 应用程序,你可以访问在你家中或工作场所的任意一台计算机、你拥有账户的服务器、甚至是移动设备、[边缘设备][7]、物联网设备。使用这个极好的工具来传输文件就像你在本地目录下将一个文件复制到另一个本地目录一样容易! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/transfer-files-folders-windows-linux-winscp + +作者:[Paul][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/plaubscher +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/19/7/make-linux-stronger-firewalls +[2]: https://sourceforge.net/projects/winscp/files/ +[3]: https://opensource.com/sites/default/files/2022-10/winscp.loginwindow.png +[4]: https://opensource.com/sites/default/files/2022-10/WinSCPwindow.showing.IPinfo.png +[5]: https://opensource.com/sites/default/files/2022-10/WinSCP.drapdropwindow.png +[6]: https://opensource.com/sites/default/files/2022-10/RightclickUploadfileWInSCP.png +[7]: https://www.redhat.com/en/topics/edge-computing/what-is-edge-computing?intcmp=7013a000002qLH8AAM +[0]: https://img.linux.net.cn/data/attachment/album/202211/28/092919hf6y9ojjlmmsfmlm.jpg \ No newline at end of file diff --git a/published/202211/20221101.10 ⭐️⭐️ Best Remote Desktop Clients for Ubuntu and Other Linux [2022].md b/published/202211/20221101.10 ⭐️⭐️ Best Remote Desktop Clients for Ubuntu and Other Linux [2022].md new file mode 100644 index 0000000000..a3d0cdfbe6 --- /dev/null +++ b/published/202211/20221101.10 ⭐️⭐️ Best Remote Desktop Clients for Ubuntu and Other Linux [2022].md @@ -0,0 +1,199 @@ +[#]: subject: "Best Remote Desktop Clients for Ubuntu and Other Linux [2022]" +[#]: via: "https://www.debugpoint.com/best-remote-desktop-clients-ubuntu/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15291-1.html" + +最佳 Linux 远程桌面客户端 +====== + +![][0] + +> 一个适用于 Ubuntu 和其他 Linux 发行版的最佳远程桌面客户端的列表。 + +远程桌面客户端允许你连接到任何其他桌面/服务器,并远程执行任务。它是一种重要的 IT 支持和商业用例。在 Linux 中,有许多远程桌面客户端可用。其中一些是免费的,而另一些是付费版本。所有这些客户端都支持流行的 远程桌面协议Remote Desktop Protocol(RDP),如 VNC、RDP 等等。 + +本文将介绍一些适用于 Ubuntu 和其他发行版的最佳免费远程桌面客户端。该列表包括自由开源的应用程序,以及一些免费使用但专有的应用程序。 + +注意:你的目标系统中需要一个远程桌面服务器(如 Xrdp)来成功建立远程连接。然后你才能使用以下应用程序进行连接。这是一个双向的过程。如果你想了解更多的情况,请参考我们的一个案例研究: + +> **[通过 RDP 从 Windows 连接到 Ubuntu][1]** + +### 适用于 Linux 的最佳远程桌面客户端 + +#### GNOME Connections + +![GNOME 连接][2] + +第一个远程桌面客户端是一个原生的 [GNOME 应用程序][3]:GNOME 连接Connections 应用。这个基于 GTK 的应用程序带来了一个简单的用户界面。它是一个非常适合初学者的应用程序。它可以在一分钟内快速设置和连接(如果你知道 IP 和其他细节)。 + +此外,它还提供了清晰的指示,说明你是要连接到 Linux 还是 Windows。GNOME 连接应用支持 VNC(针对 Linux)和 RDP(针对 Windows)协议。 + +用 Flatpak 安装这个应用程序超级简单。[设置你的系统以使用 Flatpak][7],并使用以下命令进行安装: + +``` +flatpak install flathub org.gnome.Connections +``` + +更多信息: + +- [源代码和主页][4] + +#### KRDC + +![KRDC][5] + +下一个应用程序是 KRDC,这是一个 [KDE 应用程序][6],允许你查看和控制另一台机器上的远程桌面会话。它支持 VNC 和 RDP 协议。你还可以控制分辨率和设置密码;当然,它与你的 Plasma 桌面整合得很好。 + +所以,如果你正在寻找一个原生的 KDE 远程桌面应用程序,那就是它。对于 KDE Plasma 桌面,它应该是默认安装的。 + +如果没有,理想的方法是使用 Flatpak 来安装它。[设置你的系统以使用 Flatpak][7],然后使用下面的命令来安装: + +``` +flatpak install flathub org.kde.krdc +``` + +更多信息: + +- [主页][8] +- [文档][9] +- [源代码][10] + +#### Remmina + +![Remmina 远程桌面客户端][11] + +Remmina 是 Linux 系统中最古老的远程桌面客户端之一。可能是你有需要时的“首选”客户端。这个自由开源的应用程序可用于 Linux,也可用于 macOS。它支持许多远程协议,如 RDP、VNC、NX、X2GO、SPICE、HTTPS 和 SSH。 + +此外,它的用户界面简单而厚重,而且在开发和错误修复方面超级活跃。 + +这个应用程序已经在所有主要发行版的软件库中。你可以在 Ubuntu 的软件应用中搜索 “remmina”,或在其他发行版的相关应用中搜索。然后点击安装即可。 + +此外,你也可以 [为 Flatpak 设置你的系统][7],用下面的命令以 Flatpak 安装: + +``` +flatpak install flathub org.remmina.Remmina +``` + +更多信息: + +- [主页][12] +- [源代码][13] + +#### TigerVNC + +TigerVNC 是一个自由开源的“平台中立”的 VNC(虚拟网络计算Virtual Network Computing)协议的实现,带有客户端和服务器包。当有高性能需求时,你可以使用这个远程桌面,因为它在远程连接的 3D/视频数据方面效果最好,经过了优化。 + +此外,它仍然提供了一个 32 位的安装程序,以及通常的 64 位程序和命令行界面。TigerVNC 的客户端程序名称是 `vncviewer`,请 [参考这里][14] 的各种选项。 + +你可以从 [Sourceforge 页面][15] 获得预编译的 deb 和 RPM 包。 + +更多信息: + +- [主页][16] +- [文档][17] +- [源代码][18] + +#### X2Go + +![X2Go][19] + +[X2Go][20] 是一个基于 Linux 的远程桌面软件,基于 NX 技术,由 NoMachine 开发。它是一个客户端和服务器包的集合,使你能够通过代理连接到远程机器。 + +对于远程客户端部分,它有两种选择。你可以使用 X2Go 客户端或 Pyhoca-GUI(基于 Python)。所有这些都被捆绑在一起,放在 Linux 的存储库中。此外,所有的组件也可用于 Windows 和 macOS。 + +你可以从以下页面下载该软件的客户端和服务器部分: + +[下载 X2Go][31] + +#### Chrome 远程桌面 + +![Chrome 远程桌面][21] + +如果你喜欢通过网页浏览器进行远程连接,或者在安装 RDP 服务器时遇到了限制,你可以尝试通过 Chrome 浏览器进行远程连接。 + +Chrome 远程桌面Chrome Remote Desktop 服务是由谷歌创建的,可以通过互联网使用。这项服务通过 WebRTC 协议在浏览器上运行,并使用一些专有技术。 + +一旦启动,就会从主机上下载一个服务器组件,并使用 Chrome 来提供功能。而在客户机上使用 Chrome 浏览器扩展来启用你的远程连接。 + +你可以打开以下网址,通过 Chrome 和支持 WebRTC 的浏览器访问这项服务。 + +> **[https://remotedesktop.google.com/][22]** + +此外,它为远程查看你的系统提供了一个基于 PIN 的即时认证机制。而且它限制只能被最多 100 个客户端使用。 + +### 更多的远程客户端 + +上面的列表应该足以满足大多数常见的使用情况。然而,如果你仍然渴望得到更多的远程桌面客户端,这里是我为你准备的一个列表,并简要介绍了它们的性质。 + +#### 自由开源的 + +- [TurboVNC][23](自由开源) +- [UltraVNC][24](自由开源) +- FreeRDP(免费开源 + 需要编译 + 支持 Wayland) + +#### 商业闭源,需要许可证才能使用 + +- [Thincast][25] (免费使用;Flatpak 软件包;可用于树莓派;闭源和专有许可证) +- [NoMachine][26] (个人免费使用;商业付费;流行,可用于 Linux、Windows、macOS、树莓派) +- [AnyDesk][27] (个人免费;企业付费;闭源) +- [VNC Connect][28] (付费;闭源) +- [TightVNC][29] (需要带有电子邮件地址的许可证才能在 Linux 中使用) +- [itopia][30] (免费,有试用版;Flatpak) + +### 总结 + +本文列出了一些适用于 Ubuntu 和其他 Linux 发行版的最新远程桌面客户端。其中一些是免费的,而且很容易使用。你可以将它们用于远程支持、学习和其他使用情况。此外,我还提到了基于 WebRTC 的远程服务,除了浏览器扩展,不需要任何安装。 + +此外,为了大家方便,我也提到了一些商业的。因为如果你是一个中小型企业,你可能想看看有支持的付费版本应用程序。 + +最后,哪一个远程客户端软件是你的 “首选” 应用程序?请在下面的评论栏里告诉我。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/best-remote-desktop-clients-ubuntu/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/connect-ubuntu-20-04-windows-10/ +[2]: https://www.debugpoint.com/wp-content/uploads/2022/11/GNOME-Connections.jpg +[3]: https://www.debugpoint.com/best-gnome-apps-part-1/ +[4]: https://gitlab.gnome.org/GNOME/connections +[5]: https://www.debugpoint.com/wp-content/uploads/2022/11/KRDC.jpg +[6]: https://www.debugpoint.com/best-kde-apps-part-1/ +[7]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[8]: https://apps.kde.org/krdc/ +[9]: https://docs.kde.org/?application=krdc +[10]: https://invent.kde.org/network/krdc +[11]: https://www.debugpoint.com/wp-content/uploads/2020/03/Remmina.png +[12]: https://remmina.org/ +[13]: https://gitlab.com/Remmina/Remmina +[14]: https://tigervnc.org/doc/vncviewer.html +[15]: https://sourceforge.net/projects/tigervnc/files/stable/ +[16]: https://tigervnc.org/ +[17]: https://github.com/TigerVNC/tigervnc/wiki +[18]: https://github.com/TigerVNC/tigervnc/releases +[19]: https://www.debugpoint.com/wp-content/uploads/2020/03/X2Go.jpg +[20]: https://wiki.x2go.org/doku.php/download:start +[21]: https://www.debugpoint.com/wp-content/uploads/2020/03/Chrome-Remote-Desktop.png +[22]: https://remotedesktop.google.com/ +[23]: https://www.turbovnc.org/ +[24]: https://www.uvnc.com/ +[25]: https://thincast.com/ +[26]: https://www.nomachine.com/ +[27]: https://anydesk.com/ +[28]: https://www.realvnc.com/en/connect/ +[29]: https://www.tightvnc.com/ +[30]: https://itopia.com/ +[31]: https://wiki.x2go.org/doku.php/download:start +[0]: https://img.linux.net.cn/data/attachment/album/202211/26/113747n4iymaq6afri2fqq.jpg \ No newline at end of file diff --git a/published/202211/20221101.3 ⭐️ The Android Open Source Project Is Now RISC-V Compatible.md b/published/202211/20221101.3 ⭐️ The Android Open Source Project Is Now RISC-V Compatible.md new file mode 100644 index 0000000000..145bf40640 --- /dev/null +++ b/published/202211/20221101.3 ⭐️ The Android Open Source Project Is Now RISC-V Compatible.md @@ -0,0 +1,38 @@ +[#]: subject: "The Android Open Source Project Is Now RISC-V Compatible" +[#]: via: "https://www.opensourceforu.com/2022/11/the-android-open-source-project-is-now-risc-v-compatible/" +[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15221-1.html" + +安卓开源项目(AOSP)现在兼容 RISC-V 了 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/06/091143bfvf3wz0sluua229.jpg) + +> 安卓的一个重要进展是将安卓开源项目Android Open Source Project(AOSP)移植到 RISC-V 处理器架构。 + +AOSP 已经开始在上游启用 RISC-V,这将促进 RISC-V CPU 在可穿戴设备、物联网,以及最终在智能手机和笔记本电脑中的使用。 + +为了开放生态系统,中国科学院 PLCT 实验室的工程师和软件开发人员在 2020 年开始将 Android 10 移植到 RISC-V 架构上。阿里巴巴的云计算部门和平头哥芯片子公司一起努力保持开发与最新的安卓版本同步。 + +“我们很高兴看到谷歌对构建针对 RISC-V 的 AOSP 的更多支持!阿里云一直致力于通过一系列的创新来支持 RISC-V 社区的发展,比如将安卓的基本功能移植到 RISC-V 上,这证明了在从多媒体到信号处理、设备互联和人工智能等场景中使用基于 RISC-V 的设备的可行性。”阿里云生态系统总监、RISC-V 国际组织的应用与工具水平委员会副主席 David Chen 博士说:“我们期待着与安卓团队合作,为繁荣的 RISC-V 社区做出贡献。” + +通过增强 RISC-V 上的安卓系统的基本功能,在 2021 年,阿里云的专家们付出了巨大的努力,积极推动了软件生态系统的发展。 RISC-V on Android 的工作集中在 RISC-V Android 工作组和软件库中进行。 + +-------------------------------------------------------------------------------- + +via: https://www.opensourceforu.com/2022/11/the-android-open-source-project-is-now-risc-v-compatible/ + +作者:[Laveesh Kocher][a] +选题:[lkxed][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.opensourceforu.com/author/laveesh-kocher/ +[b]: https://github.com/lkxed +[1]: https://www.opensourceforu.com/wp-content/uploads/2022/11/android-696x364.jpg diff --git a/published/202211/20221101.4 ⭐️⭐️ Kate Editor is Getting Four New Awesome Features.md b/published/202211/20221101.4 ⭐️⭐️ Kate Editor is Getting Four New Awesome Features.md new file mode 100644 index 0000000000..a7e33280c5 --- /dev/null +++ b/published/202211/20221101.4 ⭐️⭐️ Kate Editor is Getting Four New Awesome Features.md @@ -0,0 +1,106 @@ +[#]: subject: "Kate Editor is Getting Four New Awesome Features" +[#]: via: "https://news.itsfoss.com/kate-editor-22-12-features/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "Cubik65536" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15239-1.html" + +Kate 文本编辑器增加了四个非常棒的新功能 +====== + +> 这个由 KDE 开发的功能丰富的文本编辑器正在变得更好和更有用! + +![Kate 文本编辑器获得了四个非常棒的新功能][1] + +[Kate 文本编辑器][2] 是一个不断发展和强大的开源文本编辑器,它可以作为微软的 Visual Studio Code 应用程序的替代品。 + +它可以在 Linux、Windows 和 macOS 上使用。 + +这个代码编辑器在 2021 年进行了重大升级,这可能使它成为了 KDE 对微软产品的回应。 + +在即将到来的 Kate 和 KWrite 22.12 版本上,他们的目标是添加许多非常有用的功能。 + +来简单看看我们可以从 Kate 中期待什么。 + +### 🆕 Kate Editor 的新增功能 + +如果你读了 [Nate 的博客][3] 了解 KDE 的改进,你可能已经知道了 KDE Plasma 和应用程序即将获得的升级。 + +但是,我想强调一些 Kate 22.12 将会带来的令人激动的新功能: + +- 对 Qt 部件的支持 +- 更新的欢迎页面 +- Git 差异查看器 +- 配置标签页 +- 剪切板历史 + +#### 欢迎页面 + +![kate 22.12 欢迎页面][4] + +和许多其他 [KDE 应用程序][6] 一样,Kate 现在将显示一个欢迎页面,该页面将欢迎用户并显示创建或打开文件、启动新会话、查看最近的文档等选项。 + +对于不喜欢这个页面的用户,欢迎页面上将提供一个选项,以在新窗口上禁用欢迎页面。 + +#### Git 差异查看器 + +![kate 22.12 git 差异支持][6] + +Kate 终于增加了对显示 git-diff 的支持;用户将能够比较他们的代码以检查差异,并找到那些令人讨厌的、会导致他们的应用程序无法正常运行错误。 + +用户也可以从多种视图中进行选择,例如统一视图、并排视图和原始视图。 + +#### 新的剪贴板历史粘贴对话框 + +![kate 22.12 剪贴板历史][7] + +Kate 现在添加了一个新的对话框,在粘贴的时候显示用户剪贴板内容的列表。 + +当你在多行代码之间切换,而又不想丢失重要的内容时,这可能会很有用。 + +#### 配置标签页 + +![kate 22.12 配置标签页][8] + +Kate 也将添加一个配置标签页,让用户可以更改重要的设置,并添加了一个搜索栏,使用户可以快速查找特定的设置。 + +#### 🛠️ 其他变更和改进 + +Kate 22.12 将带来的其他值得注意的改进包括: + +- 优化的状态栏 +- 对构建插件的改进 +- 可移动的侧边栏按钮 +- 对窗口处理的改进 + +Kate 正在成为微软的 [Visual Studio Code][9] 的合适替代品,并且自 2021 年大规模重构以来已经取得了很大的进步。 + +在 Kate 的 [官方博客文章][10] 中,你可以了解更多关于这些变化的信息,并看看它们实际是怎么工作的。 + +💬 你期待 Kate 22.12 的发布吗?还是更喜欢 VS Code? + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/kate-editor-22-12-features/ + +作者:[Sourav Rudra][a] +选题:[lkxed][b] +译者:[Cubik65536](https://github.com/Cubik65536) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w1200/2022/11/kate-4-new-features.jpg +[2]: https://kate-editor.org/ +[3]: https://pointieststick.com +[4]: https://news.itsfoss.com/content/images/2022/11/Kate_22.12_Welcome.png +[5]: https://apps.kde.org/ +[6]: https://news.itsfoss.com/content/images/2022/11/Kate_22.12_GitDiff-1.png +[7]: https://news.itsfoss.com/content/images/2022/11/Kate_22.12_Clipboard_Hist-1.png +[8]: https://news.itsfoss.com/content/images/2022/11/Kate_22.12_Config-1.png +[9]: https://code.visualstudio.com/ +[10]: https://kate-editor.org/post/2022/2022-10-31-treats-for-kate/ diff --git a/published/202211/20221101.5 ⭐️ Linux Lite 6.2 Released.md b/published/202211/20221101.5 ⭐️ Linux Lite 6.2 Released.md new file mode 100644 index 0000000000..41d9e03f2f --- /dev/null +++ b/published/202211/20221101.5 ⭐️ Linux Lite 6.2 Released.md @@ -0,0 +1,108 @@ +[#]: subject: "Linux Lite 6.2 Released" +[#]: via: "https://news.itsfoss.com/linux-lite-6-2-release/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "littlebirdnest" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15212-1.html" + +Linux Lite 6.2 发布 +====== + +> Linux Lite 6.2 是一个理想的升级,带来一些有用的变化,没什么太花哨的东西。 + +![Linux Lite 6.2 Released][1] + +Linux Lite 是一种流行的轻量级的类 Windows 发行版,为用户提供了一个熟悉的操作系统感受。 + +最新版本 Linux Lite 6.2 基于 Ubuntu 22.04 LTS,对 UI 进行了各种更改以及各种错误的修复。 + +### Linux Lite 6.2:有什么新功能? + +![linux lite 6.2 desktop][2] + +此版本的 Linux Lite 侧重于用户界面调整和错误修复,并对一些应用程序进行了更改。 + +一些主要亮点包括: + +- 更新的图标 +- 新壁纸 +- Shotcut 视频编辑器 +- 删除微软 Teams +- LibreOffice 7.3.6.2 +- Linux 内核 5.15 + +#### Shotcut 取代 OpenShot + +![linux lite 6.2 shotcut video editor][3] + +是的,[Shotcut][4] 现在取代了 [OpenShot][5],成为 Linux Lite 6.2 上的默认视频编辑器。 + +OpenShot 之所以被删除,是因为它不能很好地与 Ubuntu 22.04 配合使用,而如果没有一个好用的视频编辑器,用户将不得不自己寻找一个。 + +Shotcut 无疑是一款出色的视频编辑器。所以,应该是一个不错的选择。 + +#### 微软 Teams 已删除 + +另一个重大变化是微软 Teams 不再包含在发行版中。 + +其原因是微软停止了 Linux 应用程序,转而支持一个渐进式 Web 应用程序版本。 + +我们之前的报道可以让你更深入地了解: + +> **[微软决定放弃 Teams 的 Linux 应用,代之以渐进式Web应用](https://news.itsfoss.com/microsoft-linux-app-retire/)** + +#### 更新的图标和新壁纸 + +![linux lite 6.2 new wallpapers][6] + +Linux Lite 6.2 具有最新的 [Papirus][7] 图标集以及一系列新的 Linux Lite 主题壁纸。 + +这应该会给发行版带来用户可能喜欢的焕然一新的外观。 + +#### 🛠️ 其他更改和改进 + +![][8] + +其他值得注意的变化包括: + +- 任务管理器的更新 +- 改进了 Lite 升级应用程序中的结束对话。 +- 各种应用程序的最新更新、错误修复等。 + +你可以阅读完整的发行说明以 [了解更多信息][9]。 + +Linux Lite 6.2 看起来是对以前版本的令人满意的升级,有许多重大的变化和补充。 + +### 📥 下载 Linux Lite 6.2 + +你可以从其官方网站下载最新的 ISO 或使用 Lite 升级工具升级到它。 + +> [Linux Lite 6.2][10] + +💬 你如何看待 Linux Lite 6.2?愿意试一试吗? + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/linux-lite-6-2-release/ + +作者:[Sourav Rudra][a] +选题:[lkxed][b] +译者:[littlebirdnest](https://github.com/littlebirdnest) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w1200/2022/10/linux-lite-6.2.png +[2]: https://news.itsfoss.com/content/images/2022/10/Linux_Lite_6.2_Desktop.png +[3]: https://news.itsfoss.com/content/images/2022/10/Linux_Lite_6.2_Shotcut.png +[4]: https://shotcut.org/ +[5]: https://www.openshot.org/ +[6]: https://news.itsfoss.com/content/images/2022/10/Linux_Lite_6.2_Wallpapers.png +[7]: https://github.com/PapirusDevelopmentTeam/papirus-icon-theme +[8]: https://news.itsfoss.com/content/images/2022/11/lite-upgrade.png +[9]: https://www.linuxliteos.com/forums/release-announcements/linux-lite-6-2-final-released/ +[10]: https://www.linuxliteos.com/download.php diff --git a/published/202211/20221101.7 ⭐️ Move Virtual Machine Image to Another Host Using GNOME Boxes.md b/published/202211/20221101.7 ⭐️ Move Virtual Machine Image to Another Host Using GNOME Boxes.md new file mode 100644 index 0000000000..c1f96d1ad9 --- /dev/null +++ b/published/202211/20221101.7 ⭐️ Move Virtual Machine Image to Another Host Using GNOME Boxes.md @@ -0,0 +1,86 @@ +[#]: subject: "Move Virtual Machine Image to Another Host Using GNOME Boxes" +[#]: via: "https://www.debugpoint.com/move-virtual-machine-image-another-host/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15244-1.html" + +使用 GNOME Boxes 将虚拟机镜像移动到另一台主机 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/12/113707ewb6ope663w86e5e.jpg) + +> 本指南介绍了使用 GNOME Boxes 将虚拟机镜像移动到另一台主机所需的步骤。 + +GNOME Boxes 是由 GNOME 项目创建的虚拟化程序。此程序用作 libvirt 的前端。libvirt 是用于管理平台虚拟化的开源 API、守护进程和管理工具。它支持不同的虚拟化技术,如 KVM、Xen、VMware ESXi、QEMU 等。 + +如果你想使用 GNOME Boxes 创建虚拟机,[请参阅本指南][1]。 + +在本教程中,我将解释如何将任何虚拟机镜像文件(已使用 GNOME Boxes 创建并运行)移动到不同的主机并运行它。 + +这样,你不再需要从操作系统重新安装虚拟机。此外,它是便携式的,你可以将虚拟机镜像放在 U 盘中。 + +### 如何使用 GNOME Boxes 将虚拟机镜像移动到另一台主机 + +我希望你已经在 GNOME Boxes 中创建了一个虚拟机。如果没有,请查看 [本指南][1]。 + +GNOME Boxes 和 [libvert][2] 使用以下目录存储虚拟机镜像和配置。如下所述,你需要仔细备份每个文件。 + +GNOME Boxes 将虚拟机的物理镜像(通常为数 GB 大小)保存在以下路径中。对于你的每个虚拟机,你都会在其中找到一个镜像。 + +``` +~/.local/share/gnome-boxes/images/ +``` + +![机器镜像][3] + +将图像文件复制到新主机的路径:`~/.local/share/gnome-boxes/images/`。 + +将 libvirt 的 XML 配置从以下路径复制到新主机的相同位置。 + +``` +~/.config/libvirt/qemu/ +``` + +![镜像 XML][4] + +在上述路径中,你应该会看到每个虚拟机的单独 xml 文件。复制你需要的那个。 + +在你当前的系统中打开以下文件。 + +``` +~/.config/gnome-boxes/sources/'QEMU Session' +``` + +复制属于你的虚拟机的部分(从 `[display` ... 到本部分的末尾)。你可以使用名称轻松找到它(看下面的 `last-seen-name`)。 + +![QEMU 会话文件][5] + +在另一台主机上打开相同的上述文件并将复制的内容附加到末尾。保存文件。 + +关闭新主机中的所有应用,包括 GNOME Boxes。 + +现在打开 GNOME Boxes,你应该会看到你的虚拟机和它的内容一起被移动到新主机中。 + +你现在可以拥有一个可以轻松携带和移动的便携式虚拟机。请记住,目标机器应该安装了 GNOME Boxes 才能完成这项工作。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/move-virtual-machine-image-another-host/ + +作者:[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/2020/05/install-use-gnome-boxes/ +[2]: https://libvirt.org/ +[3]: https://www.debugpoint.com/wp-content/uploads/2020/06/Machine-Images.png +[4]: https://www.debugpoint.com/wp-content/uploads/2020/06/Image-XML.png +[5]: https://www.debugpoint.com/wp-content/uploads/2020/06/QEMU-Session-File.png diff --git a/published/202211/20221102.1 ⭐️ Linux Mint's Update Manager Now Supports Flatpak.md b/published/202211/20221102.1 ⭐️ Linux Mint's Update Manager Now Supports Flatpak.md new file mode 100644 index 0000000000..c961b20f61 --- /dev/null +++ b/published/202211/20221102.1 ⭐️ Linux Mint's Update Manager Now Supports Flatpak.md @@ -0,0 +1,92 @@ +[#]: subject: "Linux Mint's Update Manager Now Supports Flatpak" +[#]: via: "https://news.itsfoss.com/linux-mint-update-manager/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "qfzy1233" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15257-1.html" + +Linux Mint 的更新管理器现在支持 Flatpak +====== + +> Linux Mint 的更新管理器变得更有用了! + +![Linux Mint's Update Manager Now Supports Flatpak][1] + +Linux Mint 的更新管理器是该发行版的一个重要组成部分,它使新用户可以获得更为方便简易的体验。 + +最近的一次更新 Linux Mint 21 推出了许多改进,包括更新管理器对 Flatpak 的支持。 + +**你只需要更新你的系统就可以获得这些改进。** + +### ⭐ 更新管理器中支持 Flatpak + +![linux mint 21 flatpak support in update manager][2] + +是的,你没看错。这终于实现了。 + +Flatpak 支持已被添加到更新管理器中,用户只需单击几下就能更新 Flatpak 应用程序和运行时。 + +这将为进一步改善用户体验的统一更新体验提供了帮助。 + +这对新用户来说很有好处,他们不需要熟悉终端命令就能更新 Flatpak。此外,你不需要将 Flatpak 与软件中心集成(对于 GNOME 而言)。 + +换句话说,Linux Mint 团队增强了你使用 Flatpak 应用程序的体验。 + +**除了对 Flatpak 的支持,本次更新还包括对 Linux Mint 21 的更多增强,这是一个开箱即用的更新。** + +这些改进包括: + +### 对角栏的改进 + +![linux mint 21 updated corner bar][3] + +Linux Mint 21 中的 角栏Corner Bar 添加了两项新特性: + +- 能够在角栏设置左键点击和中键点击的动作;你可以配置它以显示桌面、工作区选择器或桌面。 +- 一个允许你将鼠标悬停在角栏上以显示桌面的新选项。 + +### Nemo 的更新 + +![linux mint 21 updated nemo file manager][4] + +Nemo 文件管理器做了一些调整;现在,当文件被选中时,只会高亮显示文件名,而不是图标和文件名。 + +**如果你还不知道**, 你也可以通过我们建议的一些调整来增强 Nemo 文件管理器的体验: + +> **[调整 Linux 中的 Nemo 文件管理器,让它更好用的 15 种方法](https://itsfoss.com/nemo-tweaks/)** + +此外,桌面图标被垂直翻转,桌面上下文菜单中添加了一个新的快捷方式,可以快速打开显示设置。 + +### 更少的密码提示 + +这是很多人可能喜欢的另一个用户体验调整。 + +当删除 Flatpak 或任何快捷方式或本地应用程序时,它将不再要求你输入密码。 + +类似地,在新立得(LCTT 译注:Linux 下的一个包管理工具)和更新管理器的情况下,将使用 pkexec 来记住密码。 + +这样,用户就不需要每次执行多个操作时都输入密码。 + +你可以浏览 [Linux Mint 月度博客][5] 以了解其它变化。 + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/linux-mint-update-manager/ + +作者:[Sourav Rudra][a] +选题:[lkxed][b] +译者:[qfzy1233](https://github.com/qfzy1233) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w1200/2022/11/mint-updater-tool-flatpak-support.png +[2]: https://news.itsfoss.com/content/images/2022/11/Linux_Mint_21_UM_FlatpakSupport.png +[3]: https://news.itsfoss.com/content/images/2022/11/Linux_Mint_21_CornerBar_Update.png +[4]: https://news.itsfoss.com/content/images/2022/11/Linux_Mint_21_Nemo_Updates.png +[5]: https://blog.linuxmint.com/?p=4424 +[6]: https://debugpointnews.com/linux-mint-update-flatpak/ diff --git a/published/202211/20221103.0 ⭐️⭐️ Is Lua worth learning.md b/published/202211/20221103.0 ⭐️⭐️ Is Lua worth learning.md new file mode 100644 index 0000000000..705e1d3780 --- /dev/null +++ b/published/202211/20221103.0 ⭐️⭐️ Is Lua worth learning.md @@ -0,0 +1,194 @@ +[#]: subject: "Is Lua worth learning?" +[#]: via: "https://opensource.com/article/22/11/lua-worth-learning" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: "MuggleWei" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15243-1.html" + +Lua 值得学习吗? +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/12/111937y0kior1oyf44tttt.jpg) + +> Lua 是一个有趣而强大的语言,随着各个版本的推进,功能愈发的强大,开发者群体也在不断的增长。这篇文章我们将探索一下它的各种前景。 + +Lua 是一个脚本语言,它面向过程、函数式编程,甚至可以是 [面向对象的][1]。它使用类 C 语言的语法,但却是动态类型,具有自动内存管理和垃圾回收功能,使用基于寄存器的虚拟机来解释字节码。这些特点使得它对于初学者来说是个很好的语言,同时也是经验丰富的程序员的强大工具。 + +虽然与 [Python][2] 和 [JavaScript][3] 相比,Lua 现在已经有点儿黯然失色了,但是 Lua 拥有的一些优点使得它在许多的重大软件项目中很受欢迎。Lua 很容易嵌入到其他语言当中, 这意味着你可以在(例如)Java 编写的代码中包含 Lua 文件,就像原生的 Java 代码一样运行。这听起来就像魔法一般,现在有许多项目如 [luaj][4] 使得其成为可能,之所以可以实现,正是因为 Lua 就是为此而设计的。部分出于这种灵活性,你可以在许多游戏、图形应用的程序中发现 Lua 脚本的身影。 + +就像其他任何事情一样,做到完美是需要时间的,但 Lua 是很易于学习(并且有趣)的语言。它是一种一致的语言、一种带有有用的错误消息的友好的语言,并且可以在网上轻松找到许多有用的资料。那么就让我们开始吧! + +### 安装 Lua + +在 Linux 下,你可以使用发行版自带的包管理来安装 Lua。例如,在 Fedora、CentOS、 Mageia、OpenMandriva 以及类似发行版中: + +``` +$ sudo dnf install lua +``` + +在 Debian 以及基于 Debian 的系统中: + +``` +$ sudo apt install lua +``` + +对于 Mac,你可以使用 [MacPorts][5] 或者 [Homebrew][6]: + +``` +$ sudo port install lua +``` + +对于 Windows,可以使用 [Chocolatey][7] 安装 Lua。 + +完成安装后,可以在终端中输入 `lua` 来在交互式解释器中使用 Lua。 + +### 函数 + +如许多编程语言一样,Lua 的语法通常是一个内建的函数或关键字,后面跟着参数。例如,`print` 函数显示你传给它的所有参数。 + +``` +$ lua +Lua 5.4.2 Copyright (C) 1994-2020 Lua.org,PUC-Rio + +> print('hello') +hello +``` + +Lua 的 `string` 库可以操作单词(在编程中称为“字符串”)。例如,要统计字符串中的字母数量,你可以使用 `string` 库中 `len` 函数: + +``` +> string.len('hello') +5 +``` + +### 变量 + +变量允许你在计算机内存中为临时的数据创建一个指定的空间。Lua 中创建变量的方法是赋予变量一个名字,接着将数据放入其中。 + +``` +> foo = "hello world" +> print(foo) +hello world +> bar = 1+2 +> print(bar) +3 +``` + +### 表 + +在编程中,数组的使用频率仅次于变量。“数组”这个词的字面意思就是一种排列,而这就是程序中数组的意义了。它是数据的一种排列,因为有排列,所有数组具有结构化的优势。本质上,数组通常用于和变量相同的目的,只不过数组会给对其中的数据进行排序。在 Lua 中,数组被称为“表”。(LCTT 译注:使用过其它编程语言的同学可以发现,Lua 的表相当于其它语言中的关联数组、哈希。) + +创建表和创建变量类似,区别仅在于它的初始化内容被设置为 `{}`: + +``` +> mytable = {} +``` + +当往表中增加数据时,它就如同创建变量一样,区别在于这里的变量之前总是以表名开头,中间使用 `.` 来连接: + +``` +> mytable.foo = "hello world" +> mytable.bar = 1+2 +> print(mytable.foo) +hello world +> print(mytable.bar) +3 +``` + +### 使用 Lua 编写脚本 + +在终端交互环境中运行 Lua 可以得到良好的反馈,但是将 Lua 作为脚本运行会更为有用。Lua 脚本就是包含 Lua 代码的文本文件,Lua 命令可以解析并执行此文件。 + +在刚刚开始学习一门编程语言时,一个永恒的问题是你怎么知道该写什么。这篇文章将提供一个不错的开端,截至目前,你仅知道了两三个 Lua 函数。懂得查阅文档是很关键的。Lua 并不是一个复杂的语言,可以通过 [Lua 文档网站][8] 很方便的获取关键字以及函数的用法。 + +下面是一个练习题。 + +假设你想编写一个 Lua 脚本来统计句子中的单词数量。与众多的编程挑战一样,有许多方法可以解决这个问题,假设你在 Lua 文档中找到的第一个相关的函数是 `string.gmatch`,此函数可以搜索字符串中的特定字符。单词通常通过空格分隔开来,所以你决定计算空格数并加 1 来作为单词的数量。 + +下面是实现的代码: + +``` +function wc(words,delimiter) + count=1 + for w in string.gmatch(words,delimiter) do + count = count + 1 + end + + return count +end +``` + +下面是这个样例代码的解释: + +- `function`:这是声明函数开始的关键字。自定义函数的工作方式与内置函数(如 `print` 和 `string.len`)基本相同。 +- `words` 和 `delimiter`:这是函数运行所需的参数。正如 `print('hello')` 当中,`hello` 是一个参数。 +- `counter`:一个变量,且被初始化为 `1`。 +- `for`:在循环中使用 `string.gmatch` 作为迭代器遍历 `words`,并且在其中搜索`delimiter`。 +- `count = count + 1`:当搜索到了 `delimiter`,则对 `count` 进行自增 1 的操作。 +- `end`:`for` 循环的结束关键字。 +- `return count`:这个函数输出(或返回)`count` 变量的内容。 +- `end`:函数结束的关键字。 + +现在你已经创建了一个函数,你可以使用它。需要记住,函数不会自动运行,而是等待你在代码中调用它。 + +将下面的代码写入文件并保存为 `words.lua`: + +``` +function wc(words,delimiter) + count=1 + for w in string.gmatch(words,delimiter) do + count = count + 1 + end + return count +end + +result = wc('zombie apocalypse',' ') +print(result) + +result = wc('ice cream sandwich',' ') +print(result) + +result = wc('can you find the bug? ',' ') +print(result) +``` + +你现在创建了一个 Lua 脚本。你可以使用 Lua 运行它。随后你会发现统计单词的结果有些问题: + +``` +$ lua ./words.lua +2 +3 +6 +``` + +你也许已经注意到了最后一个句子的单词统计不正确,因为在句子的最后带有一个额外的空格。Lua正确的检测到了空格,并将其计入 `count` 中,但是单子的统计是错误的,因为有个空格并没有作为单词的分隔出现。我把这个问题留给你来解决,或者去发现其他方法,即使方法不太理想。编程中有很多需要思考的地方。有时是纯粹学术性的思考,有时也许是应用是否运训正常的思考。 + +### 学习 Lua + +Lua 是一个有趣且强大的语言,随着版本的推进,功能愈发的强大,开发者群体也在不断的增长。你可以将 Lua 作为实用性的个人脚本使用,或者在工作中使用,或者仅仅是体验一下一个新的语言。尝试一下,看看 Lua 能给你带来什么吧。 + +(LCTT 译注:顺便问一句,你知道 “Lua” 怎么发音吗? 🤣) + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/lua-worth-learning + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[MuggleWei](https://github.com/MuggleWei) +校对:[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/article/22/10/object-oriented-lua%20 +[2]: https://opensource.com/resources/python +[3]: https://opensource.com/article/22/9/javascript-glossary +[4]: https://github.com/luaj/luaj +[5]: https://opensource.com/article/20/11/macports +[6]: https://opensource.com/article/20/6/homebrew-linux +[7]: https://opensource.com/article/20/3/chocolatey +[8]: http://www.lua.org/docs.html diff --git a/published/202211/20221103.2 ⭐️⭐️ How to Trim a Video in VLC Player [If You Really Want to].md b/published/202211/20221103.2 ⭐️⭐️ How to Trim a Video in VLC Player [If You Really Want to].md new file mode 100644 index 0000000000..229b9304a6 --- /dev/null +++ b/published/202211/20221103.2 ⭐️⭐️ How to Trim a Video in VLC Player [If You Really Want to].md @@ -0,0 +1,134 @@ +[#]: subject: "How to Trim a Video in VLC Player [If You Really Want to]" +[#]: via: "https://itsfoss.com/vlc-trim-video/" +[#]: author: "Sreenath https://itsfoss.com/author/sreenath/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15241-1.html" + +如何在 VLC 播放器中裁剪视频 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/11/153202yhomxyc1ysuq57x1.jpg) + +VLC 媒体播放器是 [最好的媒体播放器][1] 之一。这款跨平台播放器功能丰富,可以播放任何可用的媒体格式。 + +你会惊讶地发现 VLC 不仅仅是一个视频播放器。它可以对你的媒体文件做很多事情。 + +我们分享过 [使用 VLC 下载 YouTube 视频][2] 的 [VLC 技巧][3]。 + +让我再和你分享一个。用 VLC 裁剪视频怎么样?这不是 [裁剪视频][4] 的最佳方式,但它可以作为一个选择使用。 + +### 使用 VLC 裁剪视频 + +在 VLC 中裁剪视频本质上意味着从所需部分的开头到结尾录制视频。默认情况下,录制控制工具通常在 VLC 面板中不可见。 + +让我详细介绍一下步骤。 + +#### 步骤 1:启用高级控件 + +要获取控件,你需要使其在主控制面板上可见。 + +首先选择“视图View”选项,然后选中“高级控件Advanced Controls”复选框。现在,如截图所示,出现了带有几个按钮的新控件行。 + +![在 vlc 播放器中启用高级控件视图][5] + +#### 步骤 2:打开视频 + +为了裁剪视频,你需要在 VLC 中打开它。你可以通过“媒体Media > 打开文件Open File”在 VLC 播放器中打开视频: + +![通过 vlc 文件菜单打开媒体文件][6] + +或者你可以使用 Nautilus 文件管理器中的 VLC 打开视频文件: + +![使用 nautilus 文件管理器中的 vlc 播放器打开媒体文件][7] + +#### 步骤 3:使用 VLC 的录制功能裁剪视频 + +打开视频文件后,将时间线设置为所需输出的起点并暂停视频。之后,按“录制”按钮并播放视频。 + +![在起点暂停,按录制键开始录制][8] + +当达到所需输出的终点时,暂停视频并再次按下“录制”按钮停止录制。 + +![在终点暂停并按下录制][9] + +这应该将裁剪后的输出保存到你的 `~/Videos` 目录中。 + +![nautilus 文件管理器中的原始和裁剪后文件][10] + +### 故障排除:无法识别的输出文件 + +VLC 以 .ts 文件格式录制视频。这在 VLC 中受支持,你可以根据需要使用它。但是 Ubuntu 中的许多其他播放器,包括本地视频播放器,都无法识别该格式。因此,在这种情况下,有两种解决方案。 + +#### Gnome-Video 提示安装 GStreamer 包 + +当你尝试打开文件时,GNOME-Videos 会提示错误并建议安装 Gstreamer 多媒体编解码器。 + +![转换后的视频在 gnome 视频播放器中显示播放错误][11] + +你可以点击上图所示的 “在 Ubuntu 软件应用中查找Find in Ubuntu Software” 按钮,这将打开 Ubuntu 软件中心。你可以在那里安装所需的编解码器包。 + +![根据 GNOME 视频播放器的提示从软件中心安装 gstreamer][12] + +同样安装 Gnome-videos 并使用它打开视频将解决问题。 + +#### 使用 VLC 转换视频文件 + +如果你不想为此安装任何额外的软件包,你可以使用 VLC 本身将 .ts 文件转换为 mp4 格式以在任何其他播放器中播放。 + +为此,打开 VLC 并在“媒体Media”菜单下选择“转换/保存Conver/Save”选项。 + +![从媒体菜单中选择转换][13] + +现在,使用“添加Add”按钮提供需要转换的文件的位置,然后选择“转换/保存Conver/Save”,如截图所示。 + +![在媒体转换对话框中选择要转换的文件][14] + +选择所需的输出配置(MP4)并为输出设置文件名,然后按“开始Start”。 + +![在 vlc 媒体转换菜单中设置转换配置和输出文件名][15] + +这将开始转换,并根据源的时长决定转换时间。完成后,你可以从 `~/Videos` 目录访问转换后的输出。 + +![nautilus 文件管理器中的原始裁剪和转换文件][16] + +### 总结 + +虽然确实可以使用 VLC 播放器来裁剪视频,但整个过程与专门的 [视频编辑器][17] 完全不同。 + +最大的问题是你需要观看所有裁剪部分才能完成裁剪,如果你要裁剪跨越数分钟的视频的一大部分,这就不方便了。 + +无论如何,这个很酷的功能在某些情况下可能是一个方便的工具,比如你想要的只是裁剪一个特定的小剪辑或从电影场景中制作一个 Gif。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/vlc-trim-video/ + +作者:[Sreenath][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/sreenath/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/video-players-linux/ +[2]: https://itsfoss.com/download-youtube-videos-vlc/ +[3]: https://itsfoss.com/simple-vlc-tips/ +[4]: https://itsfoss.com/video-trimmer/ +[5]: https://itsfoss.com/wp-content/uploads/2022/11/enable-advanced-controls-view-in-vlc-player.png +[6]: https://itsfoss.com/wp-content/uploads/2022/11/open-media-file-through-vlc-file-menu.png +[7]: https://itsfoss.com/wp-content/uploads/2022/11/open-media-file-with-vlc-player-from-nautilus-file-manager.png +[8]: https://itsfoss.com/wp-content/uploads/2022/11/pause-at-start-point-and-start-record-by-pressing-record-button.png +[9]: https://itsfoss.com/wp-content/uploads/2022/11/pause-at-end-point-and-press-record.png +[10]: https://itsfoss.com/wp-content/uploads/2022/11/original-and-trimmed-file-in-nautilus-file-manager.png +[11]: https://itsfoss.com/wp-content/uploads/2022/11/converted-video-shows-a-play-error-in-gnome-video-player-app.png +[12]: https://itsfoss.com/wp-content/uploads/2022/11/install-gstreamer-from-software-as-prompted-by-the-gnome-video-player.png +[13]: https://itsfoss.com/wp-content/uploads/2022/11/select-convert-from-media-menu.png +[14]: https://itsfoss.com/wp-content/uploads/2022/11/select-file-to-convert-in-the-media-convert-dialog-box.png +[15]: https://itsfoss.com/wp-content/uploads/2022/11/set-conversion-profiles-and-output-file-name-in-vlc-media-convert-menu.png +[16]: https://itsfoss.com/wp-content/uploads/2022/11/original-trimmed-and-converted-file-in-nautilus-file-manager.png +[17]: https://itsfoss.com/open-source-video-editors/ diff --git a/published/202211/20221103.3 ⭐️⭐️ Xfce 4.18 Top New Features & Release Guide.md b/published/202211/20221103.3 ⭐️⭐️ Xfce 4.18 Top New Features & Release Guide.md new file mode 100644 index 0000000000..a83182981f --- /dev/null +++ b/published/202211/20221103.3 ⭐️⭐️ Xfce 4.18 Top New Features & Release Guide.md @@ -0,0 +1,163 @@ +[#]: subject: "Xfce 4.18: Top New Features & Release Guide" +[#]: via: "https://www.debugpoint.com/xfce-4-18-features/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15228-1.html" + +前瞻:Xfce 4.18 主要新功能 +====== + +> 有关 Xfce 4.18 的核心和原生应用程序的功能的全面介绍。 + +经过近两年的开发,Xfce 4.18 将在 2022 年圣诞节期间发布。作为 [Xfce 4.16][1] 以来的重要的版本,其一直在开发标签 4.17 下进行开发,以增强这个轻量级桌面。 + +考虑到 GTK4 的更新、初步的 Wayland 支持,以及核心和本地应用程序的改进,Xfce 4.18 是一个重要的里程碑版本,其带来了大量更新。 + +从发布时间来看,第一个 Xfce 4.18 预发布版(pre1)已经发布。2022 年 12 月的第一周会有另一个预发布版。而 Xfce 4.18 的最终版本预计将在 2022 年 12 月 15 日至 12 月 29 日之间发布。 + +由于目前还没有官方的详细介绍,我在这篇文章中总结了 Xfce 4.18 的基本和主要功能。 + +请继续阅读。 + +![Xfce 4.18 pre1 (compiled in Arch)][2] + +### Xfce 4.18 的新功能 + +#### 1、核心库更新 + +Xfce 4.18 的依赖关系有所改变,并使用以下版本进行编译: + +- glib-2.0 >= 2.66 +- gtk >= 3.24 +- libcairo >= 1.16 +- gdk-pixbuf-2.0 >= 2.40 +- gobject-introspection >= 1.66 + +#### 2、桌面和面板 + +顶部的主面板带来了新的设置和调整。但整体外观仍与以前的 4.16 版本中的一样。一些默认的面板小程序在这个版本中也有变化。桌面图标、右键上下文菜单和项目保持不变。 + +面板的首选项设置有两个新的选项。首先,面板的长度现在以**像素**设置,而不是百分比。其次,一个新的选项,“保持面板在窗口上方Keep panel above windows” ,可以让你将窗口对话放到面板后面。之前,应用程序的窗口只能达到面板的边缘。 + +![Xfce 4.18 中的面板首选项][3] + +彻底修改了时钟小程序的设置。是的,你终于可以改变 Xfce 时钟小程序的字体风格。与此同时,它提供了四种时钟布局: + +- 只有日期 +- 只有时间 +- 日期和时间 +- 时间和日期 + +此外,你还可以向日历中添加命令。 + +![终于你可以改变 Xfce 时钟小程序的字体了][4] + +#### 3、Thunar 文件管理器 + +也许这个版本中最令人兴奋的变化是 Thunar 文件管理器的功能。首先,一个新的“搜索”图标取代了工具栏上的“重新加载”按钮。当点击时,它会在地址栏上出现搜索,可以使用你的搜索关键词进行递归搜索。重新加载按钮被放到了 “查看View” 菜单中。 + +其次,在左边的导航栏上增加了一个的新项目,“最近Recent”。在底部,元数据更有条理(从逗号分隔改为竖线分隔),还有一个新的上下文菜单项可以选择你想要显示的元数据。 + +![Thunar 4.18 的视觉变化][5] + +Thunar 的主菜单有很多变化。下面列出了主要的变化。在下面的图片中还标注了自 4.16 以来的变化。 + +- 引入了一个**新的书签菜单**,可以将当前文件夹作为快捷方式添加到侧边栏。 +- “编辑Edit”菜单有了 “撤销undo” 和 “重做redo” 选项。 +- “前往Go” 菜单有了 “最近Recent” 和 “搜索Search” 的选项。 + +Thunar 首次通过 “视图View”菜单项有了“分割视图Split view”! 是的,你现在可以在视图面板中拖放项目。 + +前不久,我 [报道][6] 说图像预览即将在 Thunar 中出现。而它终于来了。作为谷歌代码之夏 2022 的部分开发成果,你现在可以嵌入在侧边栏中看到图片预览。或者在右边的一个独立的新面板上查看。它可以通过偏好设置来改变。 + +下面是它的外观。 + +![带有独立图像预览的 Thunar 分割视图][7] + +![嵌入图像预览的 Thunar 分割视图][8] + +#### 4、Thunar 的首选项 + +Thunar 设置中出现了大量调整。首先,一个新的选项卡可以为 Thunar 定制你的键盘快捷键。你可以直接指定新的快捷键组合,并从这个选项卡中改变现有的快捷键组合。 + +![Thunar 的新快捷键标签][9] + +“显示Display” 设置中新增了一个缩略图部分,你现在可以指定缩略图的文件大小。缩略图的具体设置也被归为一组。 + +![4.18 版的 Thunar 显示设置][10] + +“侧面板Side Pane” 选项卡有了一个新的图像预览选项,你在上面看到过。你可以设置为嵌入式或独立式预览。此外,“行为 Behaviour” 选项卡增加了 “启动时恢复选项卡restore tabs on startup” 和在选项卡标题中显示 “完整的目录路径full directory path” 的选项,这将有很大帮助。 + +“高级Advanced” 选项卡为 “文件传输File Transfer” 提供了一个新的设置部分,有两个新的选项:“中间文件复制Intermediate file copy”和“验证校验和Verify checksum”。此外,在这个选项卡中还增加了一个新的递归搜索的选项。你还可以通过以下选项将 Thunar 设置为直接 “执行 Shell 脚本Execute Shell script”。 + +![Thunar 4.18 的高级选项][11] + +除了上述变化外,文件夹属性对话框现在可以显示文件和文件夹的数量。另外,一个新的高亮选项使你能够为你的文件夹图标背景和前景选择任何自定义颜色。如果你有一个复杂的文件夹结构,这将使你能够快速导航。 + +下面是它的外观。 + +![文件夹高亮演示][12] + +#### 设置 + +“外观Appearances” 设置现在允许你打开和关闭对话框的标题栏。 + +“桌面Desktop” 设置允许文件上下文菜单中的删除选项(打开或关闭)。 + +“显示Display” 设置现在允许你为多种显示情况设置默认值:镜像、扩展显示还是什么都不做。早些时候,这些选项在显示器被连接时才可用。 + +#### Wayland 和其他更新 + +除了上述 Xfce 4.18 的功能外,窗口管理器和桌面还有许多额外的错误修复和性能改进。这些都是在底层的,你应该能感受到一个更精良的 Xfce 桌面体验。 + +Xfce 桌面核心和原生应用程序的 Wayland 迁移工作开始了。离它完全准备好还有很长的路要走。在这个版本中,你可能不会看到很多 Wayland 的更新。然而,许多应用程序在 Wayland 下已经可以正常工作了。你可以在 [本页][13] 了解更多关于迁移状态的信息。 + +### 下载及什么时候出现在发行版 + +Xfce 4.18 应该会在 2023 年 4 月进入 Ubuntu 23.04 Lunar Lobster,并在 Fedora 38 中出现。基于滚动发布的发行版,如 Arch Linux、Manjaro 和 OpenSUSE Tumbleweed 应该会在 2022 年 12 月发布后的几天内得到它。轻量级的流行发行版 [MX Linux][14] 应该在 2023 年采用这个版本,这个时候也是 Debian Bookworm 更新的时候。 + +Xfce 4.18 的第一个预发布版本 [现已发布][15]。你可以从下面的页面下载源码压缩包,并编译它们。请参考官方的 [编译指南][16]。 + + > **[下载 Xfce 4.18 源代码(pre1)][17]** + +### 总结 + +总的来说,变化的数量巨大。许多核心变化和需要的变化都进入了这个版本。Thunar 文件管理器的更新是早该进行的,对于 Xfce 的爱好者来说应该是完美的。 + +随着 Wayland 的支持,未来的 Xfce 版本可能会带来一个可行的 Xfce 版本。Wayland 的支持仍在进行中,每个组件都有许多决定有待作出。许多发行版和关键部署仍然喜欢 Xfce 而不是 KDE Plasma 或 GNOME。考虑到这些用例和未来的路线图,Xfce 4.18 是下一个版本之前的一个重要的里程碑。 + +列表中你最喜欢的功能是什么?请在评论栏里告诉我。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/xfce-4-18-features/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/xfce-4-16-review/ +[2]: https://www.debugpoint.com/wp-content/uploads/2022/11/Xfce-4.18-pre1-compiled-in-Arch-1024x594.jpg +[3]: https://www.debugpoint.com/wp-content/uploads/2022/11/Panel-preferences-in-Xfce-4.18.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2022/11/Finally-you-can-change-the-font-of-Xfce-Clock-applet.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2022/11/Thunar-4.18-visual-changes.jpg +[6]: https://debugpointnews.com/thunar-image-preview/ +[7]: https://www.debugpoint.com/wp-content/uploads/2022/11/Thunar-split-view-with-embedded-image-preview.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2022/11/Thunar-split-view-with-sidebar-image-preview.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2022/11/New-shortcut-tab-in-Thunar.jpg +[10]: https://www.debugpoint.com/wp-content/uploads/2022/11/Thunar-Display-Settings-in-4.18.jpg +[11]: https://www.debugpoint.com/wp-content/uploads/2022/11/Advanced-options-of-Thunar-4.18.jpg +[12]: https://www.debugpoint.com/wp-content/uploads/2022/11/Folder-highlight-demo.jpg +[13]: https://wiki.xfce.org/releng/wayland_roadmap +[14]: https://www.debugpoint.com/tag/mx-linux +[15]: https://www.reddit.com/r/xfce/comments/yjiwwv/announce_xfce_418pre1_released/ +[16]: https://docs.xfce.org/xfce/building +[17]: https://archive.xfce.org/xfce/4.18pre1/fat_tarballs diff --git a/published/202211/20221104.3 ⭐️ How to Install Latest LibreOffice in Ubuntu and other Linux.md b/published/202211/20221104.3 ⭐️ How to Install Latest LibreOffice in Ubuntu and other Linux.md new file mode 100644 index 0000000000..179b548be1 --- /dev/null +++ b/published/202211/20221104.3 ⭐️ How to Install Latest LibreOffice in Ubuntu and other Linux.md @@ -0,0 +1,135 @@ +[#]: subject: "How to Install Latest LibreOffice in Ubuntu and other Linux" +[#]: via: "https://www.debugpoint.com/install-latest-libreoffice-ubuntu-linux/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "littlebirdnest" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15277-1.html" + +如何在 Ubuntu 中安装最新的 LibreOffice +====== + +![][0] + +> 在 Ubuntu 和其他 Linux 中安装最新的 LibreOffice 版本的快速指南。 + +自由开源的办公套件 LibreOffice 有两个版本:社区版和企业版。“社区” 版是为那些希望获得最新的尖端软件技术的早期采用者准备的。而 “企业” 版本更加稳定,可能不包括所有的最新功能,但它是生产环境和专业工作的理想选择。 + +### 在 Ubuntu 和其他 Linux 中安装最新的 LibreOffice + +#### 1、删除预安装的 LibreOffice + +Ubuntu 和其他的 Linux 发行版带有预安装的 LibreOffice。这可能不是最新的,这是因为发行版有特定的发行周期。在进行新安装之前,你可以通过以下命令删除 Ubuntu 及其衍生发行版中的的旧版本。 + +打开一个终端并运行以下命令,以删除 Ubuntu 和相关发行版中的已安装的 LibreOffice。对于其他发行版,你可以使用发行版的软件包管理器将其删除。 + +``` +sudo apt remove –purge libreoffice* +sudo apt autoclean +sudo apt autoremove +``` + +然后重启以确保一切正常(尽管你也可以跳过这一步)。 + +#### 2、从网站上下载安装 + +前往 [官方下载页面][1]. 并通过从下拉菜单中选择类型下载 “最新的” 版本。对于 Ubuntu 和其他衍生产品,请选择 .deb 文件。 + +![LibreOffice download and install from official website][2] + +下载后,提取文件;你应该看到下面的所有软件包。 + +![Extracted LibreOffice DEB files][3] + +在提取文件的位置打开终端,并按顺序运行以下命令。首先,你需要安装 ure 包,其次是核心包,然后是所有的基本包。最后,就是主要的 LibreOffice 软件包。下面是一组典型的命令。你需要更改为具体版本的版本号。 + +``` +sudo dpkg -i libobasis7.0-ure_7.0.4.2-2_amd64.deb +sudo dpkg -i libobasis7.0-core_7.0.4.2-2_amd64.deb +sudo dpkg -i libobasis7.0* +``` + +``` +sudo dpkg -i libreoffice7.0* +``` + +如果你使用的是 Fedora Linux 或 Red Hat Linux,请按照上述相同的顺序使用 [dnf 命令][4]。 + +![Install LibreOffice via dpkg][5] + +等待安装完成。完成后,你可以通过应用程序菜单找到 LibreOffice。 + +![Latest LibreOffice in Menu][6] + +这应该完成安装最新 LibreOffice 的步骤。如果你不想遵循上述方法,请参阅以下选项。 + +### 通过 PPA 安装 + +如果你想通过 PPA 安装它,请按照以下步骤操作。确保在上面的第 1 步中删除现有的 LibreOffice。 + +``` +sudo add-apt-repository ppa:libreoffice/ppa +``` + +最后,运行以下命令从这个官方 PPA 安装最新的 LibreOffice 5.4 系列。 + +``` +sudo apt update +sudo apt install libreoffice +``` + +安装后,你可以通过 Dash 搜索启动 LibreOffice。 + +![LibreOffice 5.4.2 Running in Ubuntu][7] + +### 通过 Snap 和 Flatpak 安装 + +如果你是 Linux 用户,你可以尝试 LibreOffice 独立的可执行文件,它在 Snap 或 Flatpak 等沙箱中运行。 + +要通过 [Flatpak][8] 安装 LibreOffice ,请访问 [这个页面][9] 进行设置,然后运行以下命令进行安装: + +``` +flatpak install flathub org.libreoffice.LibreOffice +``` + +同样,对于 [Snap][10] 版本,使用以下命令进行安装: + +``` +sudo snap install libreoffice +``` + +### 如何升级到最新的 LibreOffice 版本? + +如果你不想删除 LibreOffice 但想升级到最新版本,请阅读我们下面的完整指南。 + +> **[在 Ubuntu、Linux Mint 和 Windows 中升级到最新的 LibreOffice][11]** + +如果你在安装最新的 LibreOffice 时遇到问题,请随时留言。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/install-latest-libreoffice-ubuntu-linux/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[littlebirdnest](https://github.com/littlebirdnest) +校对:[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.libreoffice.org/download/download/ +[2]: https://www.debugpoint.com/wp-content/uploads/2017/10/LibreOffice-download-and-install-from-official-website.jpg +[3]: https://www.debugpoint.com/wp-content/uploads/2017/10/Extracted-LibreOffice-DEB-files.jpg +[4]: https://www.debugpoint.com/dnf-commands-examples/ +[5]: https://www.debugpoint.com/wp-content/uploads/2017/10/Install-LibreOffice-via-dpkg.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2017/10/Latest-LibreOffice-in-Menu.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2017/10/LibreOffice-5.4.2-Running-in-Ubuntu-.png +[8]: https://flathub.org/apps/details/org.libreoffice.LibreOffice +[9]: https://flatpak.org/setup/ +[10]: https://snapcraft.io/libreoffice +[11]: https://www.debugpoint.com/libreoffice-upgrade-update-latest/ +[12]: https://www.debugpoint.com/libreoffice-upgrade-update-latest/embed/#?secret=KINquNxuYI#?secret=FGij1s6Mfc +[0]: https://img.linux.net.cn/data/attachment/album/202211/21/232133g8pmpgssszv6p1v8.jpg \ No newline at end of file diff --git a/published/202211/20221104.4 ⭐️ How to Remove Firefox Snap from Ubuntu (21.10 +).md b/published/202211/20221104.4 ⭐️ How to Remove Firefox Snap from Ubuntu (21.10 +).md new file mode 100644 index 0000000000..9d673255d5 --- /dev/null +++ b/published/202211/20221104.4 ⭐️ How to Remove Firefox Snap from Ubuntu (21.10 +).md @@ -0,0 +1,138 @@ +[#]: subject: "How to Remove Firefox Snap from Ubuntu (21.10 +)" +[#]: via: "https://www.debugpoint.com/remove-firefox-snap-ubuntu/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15247-1.html" + +如何从 Ubuntu 21.10 及以后版本中删除 Firefox Snap +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/13/112531vis11sa2z1jbs215.jpg) + +> Ubuntu 21.10 “Impish Indri” 及之后的版本将 Firefox Snap 设为默认浏览器。如果你不喜欢 Snap,可以通过以下方式将其删除并使用库存版本。 + +关于 Snap 是否是 APT 的更好替代品,一直存在争议。而许多用户更喜欢 Snap 系统,也有一些人非常讨厌它。Ubuntu 和 Canonical 认为它是 Linux 的最佳安装仓库和包管理工具之一。 Snap 被讨厌的主要原因是它的启动很慢。然而,这个论点是另一篇文章的内容。 + +### 从 Ubuntu 中删除 Firefox Snap 版本 + +所以,如果你还没有 [听说过这件事][1],Ubuntu 21.10(和所有后续版本)默认提供 Firefox Snap 包。因此,当你从 Ubuntu 21.10 开始安装时,默认的左侧停靠区的快捷方式是 Firefox 的 Snap 版本。你可以使用以下各种方法对其进行验证。 + +![snap 列表 - Firefox][2] + +![Firefox snap 桌面快捷方式][3] + +如果你因为 [性能][4] 和存储问题而不喜欢 Snap,可以通过以下命令将其删除。 + +如果已经打开,那么关闭所有 Firefox 实例。 + +打开一个终端。然后运行以下命令: + +``` +sudo snap remove firefox +``` + +等待命令完成。这将从你的系统中删除它的 Snap 可执行文件,并断开 Firefox 与各种系统服务的连接。但是主目录下的 Snap 目录仍然存在。你可以使用以下命令手动删除它: + +``` +cd ~/snap +rm -r firefox +``` + +### 安装 Firefox 替代方法 + +现在,当你删除了 Firefox,你可以通过以下方式来使用此浏览器。 + +#### 方法 1 – 使用 PPA(推荐) + +在使用此方法之前,请确保如上删除了 Firefox 的 Snap 版本。 + +有一个 [官方 Firefox PPA][5],由其开发团队维护。你可以将此 PPA 添加到你的软件源中,并使用它来安装最新的 Firefox。 + +确保使用文本编辑器创建一个首选项文件,以阻止 Ubuntu 在运行 `apt update` 命令时获取 Firefox 的 Snap 版本: + +``` +sudo gedit /etc/apt/preferences.d/firefox-no-snap +``` + +将以下行添加到上面的文件并保存: + +``` +Package: firefox* +Pin: release o=Ubuntu* +Pin-Priority: -1 +``` + +依次使用以下命令。第一个命令将其从你的系统中完全清除它: + +``` +sudo apt purge firefox +sudo add-apt-repository ppa:mozillateam/firefox +sudo apt-get update +sudo apt install firefox +``` + +安装完成后,请确保使用以下命令启用自动升级: + +``` +echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox +``` + +重启系统(可选)并使用 deb 版本的 Firefox。 + +#### 方法 2 – 使用 Firefox 的压缩可执行文件 + +你可以从官方网站(链接如下)下载适用于 Ubuntu 和其他 Linux 的 Firefox 可执行文件压缩包。然后解压并双击运行 Firefox 可执行文件。这是最安全的方法。如果你使用此方法,你仍然可以获得更新。 + +> **[下载 Firefox][6]** + +![下载 Firefox 并解压][7] + +![然后运行可执行文件][8] + +#### 方法 3 – 使用 Flatpak 版本的 Firefox + +你也可以使用 [Flatpak 版本的 Firefox][9],这在 [Ubuntu 中设置 Flatpak][10] 后可用。然后你可以运行以下命令进行安装: + +``` +flatpak install flathub org.mozilla.firefox +``` + +#### 方法 4 – 使用与系统耦合更少的 Snap 版本 Firefox + +如果你认为你仍然可以继续使用 Snap 版本,但希望在系统中减少沙盒化,那么你可能需要使用以下命令和 [classic 开关][11] 重新安装 Firefox: + +``` +sudo snap install firefox --classic +``` + +### 结束语 + +因此,这是从 Ubuntu 21.10 开始删除 firefox Snap 版本的步骤,以及一些替代方案。我很想知道 Linux Mint 采取了什么措施,因为他们不支持 Snap。此外,这些发行版依赖于 Firefox 的 Ubuntu 上游仓库,看看它们会做什么很有趣。Debian 维护自己的仓库,但主要是 ESR 版本。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/remove-firefox-snap-ubuntu/ + +作者:[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://bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/+bug/1943840 +[2]: https://www.debugpoint.com/wp-content/uploads/2021/09/snap-list-Firefox.jpg +[3]: https://www.debugpoint.com/wp-content/uploads/2021/09/Firefox-snap-desktop-shortcut-1024x490.jpg +[4]: https://www.debugpoint.com/2021/03/clean-up-snap/ +[5]: https://launchpad.net/~mozillateam/+archive/ubuntu/ppa +[6]: https://www.mozilla.org/en-US/firefox/new/ +[7]: https://www.debugpoint.com/wp-content/uploads/2021/09/Download-Firefox-and-Extract.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2021/09/And-then-run-the-executable.jpg +[9]: https://flathub.org/apps/details/org.mozilla.firefox +[10]: https://www.debugpoint.com/2018/07/how-to-install-flatpak-apps-ubuntu-linux/ +[11]: https://snapcraft.io/docs/snap-confinement diff --git a/published/202211/20221105.0 ⭐️⭐️ Fix scanned images with ImageMagick.md b/published/202211/20221105.0 ⭐️⭐️ Fix scanned images with ImageMagick.md new file mode 100644 index 0000000000..991acefdef --- /dev/null +++ b/published/202211/20221105.0 ⭐️⭐️ Fix scanned images with ImageMagick.md @@ -0,0 +1,93 @@ +[#]: subject: "Fix scanned images with ImageMagick" +[#]: via: "https://opensource.com/article/22/11/fixing-scanned-images-imagemagick" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15268-1.html" + +使用 ImageMagick 修复扫描图像 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/19/155829valiu5lulmhuuhiz.jpg) + +> 使用这个开源工具,即使是批量校正图像也很容易。 + +多年前,在翻阅一家旧书店的书架上的内容时,我偶然发现了一本名为 《UNIX System Command Summary for Berkeley 4.2 & 4.3 BSD》 的小册子,由 Specialized Systems Consultants 出版。我买它是出于好奇,因为它已经有将近 20 年的历史了,但仍然在很大程度上适用于现代 Linux 和 BSD。 + +无论是当时还是现在,我都很开心。一本写于 1986 年的小册子在 2016 年仍然很重要,而同一个书架上关于专有操作系统的书籍并不值得印刷它们的纸张。(想一想:你认为什么技术可以在僵尸末日中幸存下来?)这本小册子已经放在我自己的书架上好几年了,但我突然想到可能值得对这个作品做一点数字保存,所以我决定扫描这本小册子来创建一本 [CBZ 电子书][1]。 + +使用 [Skanlite][2] 进行扫描很容易,但很耗时。然而,当我完成后,我发现有些页面不是很平整。 + +![A page of text, including a table of contents and a glossary, that is crooked and distorted][3] + +在打印中,这称为配准问题,这意味着打印内容的位置在页面上的方向不正确。 + +### ImageMagick + +[ImageMagick][4] 是基于终端的非交互式图形编辑器。尝试在无图形环境(如纯文本终端)中编辑图形似乎违反直觉,但实际上很常见。例如,当你将图像上传到 Web 应用用作个人资料图片时,应用服务器上的脚本可能会使用 ImageMagick 或其库处理你的图像。非交互式编辑器的优点是你可以制定需要对示例图像执行的操作,然后只需按一下按钮即可将这些效果应用于数百个其他图像。 + +ImageMagick 通常与其他图形编辑器一样强大,只要你花时间了解它的许多功能以及如何组合它们以实现所需的效果。在这种情况下,我想旋转歪斜的页面。在搜索了 ImageMagick 的文档后,我发现我需要的解决方案的 ImageMagick 术语称为纠偏。将你的术语与其他人的术语保持一致对于你不知道的任何事情都是一个挑战,因此当你使用 ImageMagick(或其他任何东西)时,请记住,你描述问题或解决方案的用词可能和别人不一样。 + +要使用 ImageMagick 对带有弯曲文本的图像进行校正: + +``` +$ convert page_0052.webp -deskew25% fix_0052.webp +``` + +`-deskew` 选项表示可接受偏差的阈值。通过跟踪看似字母的对象的峰谷来确定倾斜。根据扫描的弯曲程度,你可能需要多于或少于 25% 的阈值。我已经达到了 80%,到目前为止,低于 25% 没用效果。 + +结果如下: + +![The same page of text, now with the text properly aligned][5] + +修复了!将其应用于文档的剩余 55 页以修复倾斜的页面,而对已经笔直的页面不做任何事情。换句话说,由于我的阈值设置,在不需要调整的页面上运行此命令是安全的。 + +### 使用 ImageMagick 裁剪图像 + +在纠正了歪斜之后,因为我扫描每一页都比必要的范围要多,以防止意外切断单词,我认为裁剪我纠正的页面是有意义的。我很高兴在页边空白处保留一些空间,但没有以前那么多。我经常使用 ImageMagick 的“裁剪”功能来处理这个网站上的图像,所以我很熟悉这个选项。但是,我需要确定如何裁剪每一页。 + +首先,我需要图像的大小: + +``` +$ identify fixed_0052.webp +WEBP 1128x2593 1128x2593+0+08-bit sRGB 114732B 0.020u 0:00.021 +``` + +知道尺寸后,我能够对我可以承受的丢失多少像素做出一些估计。经过几次试运行,我得到了这个: + +``` +convert fix_0052.webp -gravity Center -crop 950x2450+0+0 crop_0052.webp +``` + +这并不完全适合,但当我将它应用于册子中的其他图像时,它被证明很重要。这些页面的内容和扫描仪位置各不相同,所以我很高兴给每一页一点空余空间。 + +这是校正和裁剪的图像: + +![The same page of text, with the previous fixes applied and crooked white margins around the page cropped out.][6] + +### 使用开源批量编辑图像 + +ImageMagick 的美妙之处在于,当你确定了修复图像的公式,你就可以将该修复应用于需要相同修复的所有图像。我使用 [GNU Parallel][7] 执行此操作,它使用我所有的 CPU 内核来完成数百页的图像校正。这并不需要很长时间,而且结果不言而喻。更重要的是,我已经有了一个 UNIX 历史上有趣作品的数字档案。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/fixing-scanned-images-imagemagick + +作者:[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/article/19/3/comic-book-archive-djvu +[2]: https://opensource.com/article/22/2/scan-documents-skanlite-linux-kde +[3]: https://opensource.com/sites/default/files/2022-10/imagemagick-crook_1.png +[4]: https://opensource.com/article/17/8/imagemagick +[5]: https://opensource.com/sites/default/files/2022-10/imagemagick-deskew-fix.png +[6]: https://opensource.com/sites/default/files/2022-10/imagemagick-deskew-crop.png +[7]: http://LINK-TO-SETH-GNU-PARALLEL-REDHAT.COM/SYSADMIN diff --git a/published/202211/20221105.1 ⭐️ How to Install Cinnamon Desktop in Arch Linux.md b/published/202211/20221105.1 ⭐️ How to Install Cinnamon Desktop in Arch Linux.md new file mode 100644 index 0000000000..58c85293ba --- /dev/null +++ b/published/202211/20221105.1 ⭐️ How to Install Cinnamon Desktop in Arch Linux.md @@ -0,0 +1,140 @@ +[#]: subject: "How to Install Cinnamon Desktop in Arch Linux" +[#]: via: "https://www.debugpoint.com/cinnamon-arch-linux-install/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15303-1.html" + +如何在 Arch Linux 中安装 Cinnamon 桌面 +====== + +![][0] + +> Cinnamon 是 Linux Mint 的默认桌面环境。本快速指南解释了在 Arch Linux 中安装 Cinnamon 桌面环境的步骤。 + +[Cinnamon 桌面环境][1] 是 [Linux Mint][2] 的默认桌面风格。创建这个基于 GTK 的桌面环境是为了提供具有以前的 GNOME 的传统桌面风格(即 GNOME 3 之前的外观)。该桌面本身很轻巧,非常人性化。因为它保留了经过时间考验的图标和菜单驱动的桌面行为,因此它被认为(与 Linux Mint 结合)是新 Linux 用户易于使用的桌面之一。 + +尽管 Cinnamon 及其软件包与 Linux Mint 紧密结合,但该桌面可以作为单独的桌面环境安装在 Ubuntu、Fedora 或 Arch Linux 中。 + +在 Arch Linux 中安装 Cinnamon 相当容易,就像在 Arch 中安装其他桌面(例如 Xfce 和 KDE Plasma)一样。但它需要安装一些特定的软件包才能使其看起来像一个合适的 Cinnamon 桌面。 + +让我们开始吧。 + +### 在 Arch Linux 中安装 Cinnamon 桌面 + +#### 第 1 步:安装基本系统 + +本指南假设你已经安装了基本的 Arch 系统。如果你没有安装基本系统,请按照 [自动化 Arch 安装指南][3](推荐方法)进行安装。然后按照以下步骤操作。 + +#### 第 2 步:更新你的系统 + +在你的 Arch 中打开一个终端。并通过运行以下命令确保系统是最新的: + +``` +pacman -Syu +``` + +#### 第 3 步:安装 yay AUR 助手 + +配置 Cinnamon 所需的某些包在 Arch 官方仓库中不可用。它们在 Arch 用户仓库(AUR)中。因此,你需要安装 yay 以获得额外的软件包。按照 [本指南安装 yay AUR 助手][4]。 + +#### 第 4 步:在 Arch Linux 中安装 Cinnamon 桌面 + +基本的 Cinnamon 桌面在 [cinnamon][5] 包中,它存在于社区仓库中。打开终端并运行以下命令来安装 Cinnamon 桌面和终端应用。 + +``` +sudo pacman -S cinnamon gnome-terminal +``` + +安装显示服务器和显示管理器。LightDM 是轻量级的,非常适合 Cinnamon。不过,你可以使用任何其他显示管理器,例如 SDDM 或 GDM。但我建议你坚持使用 Lightdm。 + +``` +sudo pacman -S xorg lightdm lightdm-gtk-greeter +``` + +使显示管理器和网络服务在下次启动时启动。 + +``` +systemctl enable lightdm +systemctl enable NetworkManager +``` + +重启系统。 + +#### 第 5 步:配置 Cinnamon 桌面 + +成功重启后,你应该会看到 Lightdm 登录提示。使用你在安装基本系统时可能已创建的用户名和密码登录。 + +当我第一次登录基本的 Cinnamon 桌面时,它看起来非常平淡。所以它需要一些定制。 + +![Arch 中的 Cinnamon 桌面(配置前)][6] + +打开终端并安装一些重要的软件包,例如声音驱动、浏览器等。这将确保安装正确的字体和其他项目。 + +``` +sudo pacman -S pulseaudio pulseaudio-alsa pavucontrol firefox vlc gimp xfburn thunderbird gedit gnome-system-monitor +``` + +然后为 Cinnamon 特定的图标集安装 faenza 图标主题。 + +``` +sudo pacman -S mate-icon-theme-faenza +``` + +numix 主题需要安装 yay。在运行以下命令安装之前,请确保按照 [该指南][4] 安装 yay AUR 助手程序。 + +``` +yay -S numix-themes +``` + +全部安装完成后,重启系统。 + +当你重新登录时,打开主题应用并按照以下更改窗口边框、图标、控件和桌面。 + +![本指南的主题更改][7] + +你也可以在第二个选项卡(添加/删除)中下载其他主题。 + +![其他主题供你下载][8] + +将默认的 GNOME 壁纸(Cinnamon 附带)更改为你喜欢的内容。本指南使用来自 [cinnamon-look.org][9] 的 Cinnamon 徽标壁纸。 + +如果一切顺利,你的桌面应该如下所示。 + +![Arch Linux 中的 Cinnamon 桌面][10] + +![在 Arch Linux 中运行的 Cinnamon 桌面][11] + +因此,在 Arch Linux 中安装和配置 Cinnamon 桌面的基本步骤到此结束。你可能想要添加其他设置,例如桌面小程序等。 + +### 结束语 + +Cinnamon 是一款适合新用户的现代且易于使用的桌面。以 Arch Linux 和 Cinnamon 的灵活性为核心,这个组合非常适合许多喜欢 Cinnamon 桌面(主要是 Linux Mint)但又希望同时使用 Arch Linux 的用户。我希望本指南能帮助你在 Arch Linux 中设置 Cinnamon 环境。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/cinnamon-arch-linux-install/ + +作者:[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://cinnamon-spices.linuxmint.com/ +[2]: https://www.debugpoint.com/linux-mint/ +[3]: https://www.debugpoint.com/archinstall-guide/ +[4]: https://www.debugpoint.com/2021/01/install-yay-arch/ +[5]: https://archlinux.org/packages/community/x86_64/cinnamon/ +[6]: https://www.debugpoint.com/wp-content/uploads/2021/02/Cinnamon-Desktop-in-Arch-Before-Configuration.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2021/02/Theme-Changes-for-this-guide.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2021/02/Additional-Themes-for-you-to-download.jpg +[9]: https://www.cinnamon-look.org/browse/cat/ +[10]: https://www.debugpoint.com/wp-content/uploads/2021/02/Cinnamon-Desktop-in-Arch-Linux-1024x535.jpg +[11]: https://www.debugpoint.com/wp-content/uploads/2021/02/Cinnamon-Desktop-Running-in-Arch-Linux-1024x640.jpg +[0]: https://img.linux.net.cn/data/attachment/album/202211/30/112417w4nrt4cii4hiidti.jpg \ No newline at end of file diff --git a/published/202211/20221107.3 ⭐️⭐️ How to Install Node.js on RHEL 9.md b/published/202211/20221107.3 ⭐️⭐️ How to Install Node.js on RHEL 9.md new file mode 100644 index 0000000000..61887b03ba --- /dev/null +++ b/published/202211/20221107.3 ⭐️⭐️ How to Install Node.js on RHEL 9.md @@ -0,0 +1,238 @@ +[#]: subject: "How to Install Node.js on RHEL 9" +[#]: via: "https://www.linuxtechi.com/how-to-install-nodejs-on-rhel/" +[#]: author: "James Kiarie https://www.linuxtechi.com/author/james/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15260-1.html" + +如何在 RHEL 9 上安装 Node.js +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/17/092223tdodvvfdnsjiezxv.jpg) + +> 在这篇文章中,我们将逐步解释如何在 RHEL 9 系统上安装 Node.js。 + +[Node.js][1] 基于谷歌的 V8 JavaScript 引擎构建,它是一个自由开源的跨平台 JavaScript 运行时环境,主要用于构建服务器端应用。它使用事件驱动和异步模型,帮助开发人员构建高度可扩展的数据密集型的实时应用(RTA)。你可以使用 NodeJS 来构建前端和后端应用。 + +Node.js 通常用于构建以下应用: + +- 聊天应用 +- 流媒体应用 +- 浏览器游戏 +- 命令行工具 +- 嵌入式系统 + +在其技术栈中使用 NodeJS 的顶级公司包括 PayPal、NetFlix 和 Uber 等等。 + +安装 Node.js 主要有以下三种方式: + +- 从 NodeSource 仓库安装 Node.js +- 从发行版的官方仓库安装 Node.js +- 使用 NVM 安装 Node.js + +让我们看看如何使用这些方法在 RHEL 9 上安装 Node.js。 + +先决条件: + +- 最小化安装的 RHEL 9 系统 +- 具有管理员权限的 [sudo 用户][2] +- 互联网连接 +- Red Hat 订阅或本地配置的仓库 + +### 从 NodeSource 存储库安装 Node.js + +[NodeSource][3] 是一家技术公司,旨在帮助组织运行生产就绪的 Node.js 应用,关注资源使用以及增强的安全性和应用程序性能。它提供了最新版本的 Node.js 和 NPM。 + +要从 NodeSource 安装 Node.js,首先,按如下所示更新系统包。 + +``` +$ sudo dnf update -y +``` + +![][5] + +接下来,安装这期间所需的构建工具。其中包括 GCC C/C++ 编译器、Perl 和 Python 调试器等等。 + +``` +$ sudo dnf groupinstall 'Development Tools' -y +``` + +![][6] + +接下来,我们将从 NodeSource 安装 Node.js 18.x。为此,请下载并运行 NodeSource 设置脚本,如下所示。 + +``` +$ curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash - +``` + +该脚本在其他任务中将 NodeSource 仓库添加到你的系统。 + +![][7] + +在输出的末尾,你将看到一些关于如何安装 Node.js 和 NPM 的附加说明。 + +![][8] + +因此,要安装 Node.js 和 NPM(Node 包管理器),请运行以下命令: + +``` +$ sudo dnf install nodejs -y +``` + +![][9] + +安装完成后,按如下所示验证 Node.js 和 NPM 的版本。 + +``` +$ node -v +$ npm -v +``` + +![][10] + +输出显示我们正在运行 Node v18.12,它是最新的 LTS 版本和 NPM 8.19.2。 + +### 从官方 RHEL 仓库安装 Node.js + +安装 NodeJS 和 NPM 的另一种方法是从发行版的官方仓库中安装它们。但是,这种方法不提供最新版本。 + +如果你不介意不安装最新版本的 Node 和 NPM。 那么在命令行上运行以下命令。 + +``` +$ sudo dnf update -y +$ sudo dnf install nodejs npm -y +``` + +![][11] + +### 使用 NVM 安装 Node.js + +最后,你可以使用 NVM(Node 版本管理器)安装 Node.js,这是一种用于管理系统上 Node 版本的工具。该工具可帮助开发人员在需要不同版本 Node.js 的不同项目上高效工作。 + +默认情况下没安装 NVM。你需要通过运行 [官方 GitHub 页面][4] 上提供的 Shell 脚本来安装它。 + +``` +$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash +``` + +这会下载 NVM 并将其保存在主目录的 `.nvm` 目录中。 + +![][12] + +安装后,关闭终端会话并打开一个新终端。然后运行以下命令确认 NVM 已经安装。 + +``` +$ command -v nvm +``` + +![][13] + +接下来,你可以使用以下命令列出所有可用的 Node.js 版本: + +``` +$ nvm ls-remote +``` + +![][14] + +或者,你可以列出 Node.js 版本的所有最新 LTS 版本,如图所示。 + +``` +$ nvm ls-remote | grep -i latest +``` + +![][15] + +要安装最新版本的 Node.js(当前为 v19.0.0),请运行以下命令: + +``` +$ nvm install node +``` + +![][16] + +然后,你可以验证安装的 Node.js 版本,如下所示。 + +``` +$ node -v +``` + +![][17] + +此外,你可以安装特定版本的 Node.js。例如,要安装 v18.2.0,请运行以下命令: + + +``` +$ nvm install v18.12.0 +``` + +![][18] + +要列出系统上所有已安装的 NodeJS 版本,请运行以下命令: + +``` +$ nvm ls +``` + +第一行带有 “->” 符号的条目指向当前使用的 Node.js 版本。然后是其他版本。 + +![][19] + +要切换到另一个版本的 Node.js,请使用以下语法: + +``` +$ nvm use +``` + +例如,要使用 Node 版本 19.0.0,请运行以下命令: + +``` +$ nvm use 19.0.0 +``` + +![][20] + +再次检查已安装的 Node.js 版本,这次“->” 符号将指向 v19.0.0。 + +![][21] + +### 总结 + +在本指南中,我们演示了如何使用三种不同的方法安装 Node.js。此外,我们还提供了几种使用 NVM 管理 Node 版本的方法。我们希望可以帮助你轻松地在 RHEL 上安装 NodeJS,并选择你想要在项目中使用的版本。 + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/how-to-install-nodejs-on-rhel/ + +作者:[James Kiarie][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.linuxtechi.com/author/james/ +[b]: https://github.com/lkxed +[1]: https://nodejs.org/en/about/ +[2]: https://www.linuxtechi.com/create-sudo-user-on-rhel-rocky-linux-almalinux/ +[3]: https://nodesource.com/ +[4]: https://github.com/nvm-sh/nvm +[5]: https://www.linuxtechi.com/wp-content/uploads/2022/11/Install-updates-rhel9-system.png +[6]: https://www.linuxtechi.com/wp-content/uploads/2022/11/Install-development-tools-rhel9-dnf-command.png +[7]: https://www.linuxtechi.com/wp-content/uploads/2022/11/Add-NodeSource-Repository-RHEL9.png +[8]: https://www.linuxtechi.com/wp-content/uploads/2022/11/NodeSource-Repository-Output-RHEL9.png +[9]: https://www.linuxtechi.com/wp-content/uploads/2022/11/dnf-install-nodejs-rhel9.png +[10]: https://www.linuxtechi.com/wp-content/uploads/2022/11/Verify-NodeJs-NPM-Version-RHEL9.png +[11]: https://www.linuxtechi.com/wp-content/uploads/2022/11/Install-NodeJS-NPM-RHEL9-Official-Repo.png +[12]: https://www.linuxtechi.com/wp-content/uploads/2022/11/Installing-NodeJS-Using-NVM.png +[13]: https://www.linuxtechi.com/wp-content/uploads/2022/11/nmv-command-interface-rhel9.png +[14]: https://www.linuxtechi.com/wp-content/uploads/2022/11/list-nodejs-using-nvm-command-rhel9.png +[15]: https://www.linuxtechi.com/wp-content/uploads/2022/11/list-latest-nodejs-using-nvm-command-rhel9.png +[16]: https://www.linuxtechi.com/wp-content/uploads/2022/11/Install-latest-nodejs-with-nvm-rhel9.png +[17]: https://www.linuxtechi.com/wp-content/uploads/2022/11/Verify-nodejs-npm-version-with-node-nvm.png +[18]: https://www.linuxtechi.com/wp-content/uploads/2022/11/Install-specific-nodejs-version-nvm-command-rhel9.png +[19]: https://www.linuxtechi.com/wp-content/uploads/2022/11/nvm-ls-command-rhel9.png +[20]: https://www.linuxtechi.com/wp-content/uploads/2022/11/Use-Specific-NodeJs-Version-RHEL9.png +[21]: https://www.linuxtechi.com/wp-content/uploads/2022/11/Check-NodeJS-Version-after-switching-rhel9.png \ No newline at end of file diff --git a/published/202211/20221107.4 ⭐️ How to Boost Speaker Volume in Ubuntu and Other Linux.md b/published/202211/20221107.4 ⭐️ How to Boost Speaker Volume in Ubuntu and Other Linux.md new file mode 100644 index 0000000000..cff6529075 --- /dev/null +++ b/published/202211/20221107.4 ⭐️ How to Boost Speaker Volume in Ubuntu and Other Linux.md @@ -0,0 +1,91 @@ +[#]: subject: "How to Boost Speaker Volume in Ubuntu and Other Linux" +[#]: via: "https://www.debugpoint.com/boost-speaker-volume-ubuntu/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15250-1.html" + +如何提高 Ubuntu 和其他 Linux 系统中的扬声器音量 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/14/082359euz72h2utucf2v5u.jpg) + +> 以下是如何在 Ubuntu 和其他 Linux 发行版中提高笔记本和桌面的音量的方法。 + +你有没有觉得你的 Ubuntu 笔记本的音量太小,尽管你把音量调到了 100%?我相信你有过。主要原因是:很明显,笔记本电脑的扬声器输出强度比大型扬声器要低。 + +此外,Ubuntu 和其他发行版将默认的最大音量设置为 100%,也就是 0dB(分贝)。0dB 是最大音量的参考值。做个比较,如果你把音量设置为 -10dB,这意味着你的音量比最大的 0dB 安静。 + +VLC 和一些媒体播放器允许你将音量提高到 200%。在最新的 Ubuntu 中使用一些设置,你可以将音量进一步提高。 + +> **注意**:在你尝试和使用以下方法之前,请记住,每个扬声器都有其制造商设定的硬件限制。偶尔一次,播放超过 100% 的音频是可以的。但是,连续放大到更高的分贝可能会使输出的音频失真,并且从长远来看可能会损坏你的扬声器。因此,在使用时要小心谨慎,并有所限制。 + +### 在 Ubuntu 和其他发行版中提高扬声器音量 + +#### 对于最新的 Ubuntu 22.04 及以上版本(GNOME) + +从应用菜单中打开“设置Settings”,进入“声音Sound”标签。 + +启用 “过度放大Over Amplification” 开关。在你启用的那一刻,你应该看到音量条被扩大了。 + +![在 Ubuntu 中提升音量超过 100%][1] + +现在你可以享受音量提升来听音乐了。 + +#### Fedora、Arch Linux 和其他发行版 + +如果你使用带有 GNOME 的 Fedora 工作站,你将看不到上述选项,因为这是 Ubuntu 特有的设置。见下面。 + +![在 Fedora (GNOME)中,扬声器音量最大为 100%][2] + +因此,对于任何其他 Linux 发行版(Arch、Fedora、RedHat 等)或桌面(KDE、Xfce、LXQt 等),打开终端并安装 [PulseAudio 音量控制器][3]。 + +Fedora、RedHat Linux、OpenSUSE 等基于 RPM 的发行版: + +``` +sudo dnf install pavucontrol +``` + +对于 Arch Linux、Manjaro: + +``` +sudo pacman -S pavucontrol +``` + +基于 Ubuntu 的非 GNOME 发行版: + +``` +sudo apt install pavucontrol +``` + +### 如何使用 + +安装后,从应用菜单中打开 `pavucontrol`,它应该有个 “PulseAudio Volume Control” 菜单项。 + +![使用 PulseAudio 音量控制增加音量][4] + +### 总结 + +记住,上述方法可以提高整个系统的扬声器音量。这意味着系统的声音和警报也会受到影响。所以,要记住这一点。正如我前面提到的,如果连续使用,提升扬声器音量超过 100% 可能会导致扬声器变形或损坏。 + +我希望这个教程能帮助你提高系统音量。如果你遇到问题,请在评论栏里告诉我。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/boost-speaker-volume-ubuntu/ + +作者:[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/11/Boost-volume-more-than-100-percent-in-Ubuntu.jpg +[2]: https://www.debugpoint.com/wp-content/uploads/2022/11/Speaker-volume-is-max-100-percent-in-Fedora-GNOME.jpg +[3]: https://freedesktop.org/software/pulseaudio/pavucontrol/ +[4]: https://www.debugpoint.com/wp-content/uploads/2022/11/Increase-Volume-using-PulseAudio-Volume-Control-1024x508.jpg \ No newline at end of file diff --git a/published/202211/20221109.1 ⭐️⭐️⭐️ 31 Linux Commands Every Ubuntu User Should Know.md b/published/202211/20221109.1 ⭐️⭐️⭐️ 31 Linux Commands Every Ubuntu User Should Know.md new file mode 100644 index 0000000000..3ddd8e2172 --- /dev/null +++ b/published/202211/20221109.1 ⭐️⭐️⭐️ 31 Linux Commands Every Ubuntu User Should Know.md @@ -0,0 +1,790 @@ +[#]: subject: "31 Linux Commands Every Ubuntu User Should Know" +[#]: via: "https://itsfoss.com/essential-ubuntu-commands/" +[#]: author: "Abhishek Prakash https://itsfoss.com/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15286-1.html" + +每个 Linux 用户都应该知道的 31 条命令 +====== + +![][0] + +哪些是**最基本**的 Linux 的命令? + +经常有读者问我这个问题,我一直试图避免回答这个问题。 + +为什么呢?我不知道 Linux 命令吗?不是的。这不是原因。而是因为很难对它们进行分类。对我来说必不可少的东西对你来说可能并不重要。 + +但我想这适用于所有的东西,我们网站上的每一个这样的推荐应用程序列表也都是这样。 + +这就是为什么我最终放弃了,并创建了这个基本但**重要的** Linux 命令列表,它应该对作为 Linux 用户的你有所帮助。这更多的是针对 Ubuntu 这样的桌面用户,但如果你把 Ubuntu 作为服务器使用,它们也应该对你有所帮助。 + +### Linux 的基本命令 + +我在这里列出的每个命令都有多个选项和多种用途。如果我尝试给出每个命令的最常见的例子,它将很容易变成一本超过一万字的口袋书。 + +我不会详述这些命令中的任何一个。我将列出每个命令的目的及其基本语法。你可以从这些命令的链接教程中阅读更多关于使用这些命令的信息。 + +在你开始阅读列表之前推荐阅读: + +- [Linux 中路径的概念][1] +- [文件权限的概念][2] +- [了解 Linux 终端的行话][3] + +还有一件事。我在这里更多地使用了**文件夹**这个术语,而不是**目录**。 + +[在 Linux 中文件夹被称为目录][4],有些人可能不喜欢这样。然而,我相信对于初学者来说,这更容易掌握。 + +#### 1、ls 命令:列出一个文件夹的内容 + +这是一个新的 Linux 用户最先学会的几个命令之一。这个命令可以让你看到当前文件夹里有哪些文件和文件夹。 + +``` +ls +``` + +你可以使用长列表选项 `ls -l` 来查看细节,如文件大小、权限、修改时间等。如果你想,你可以对这些选项进行排序和控制。 + +``` +ls -l +``` + +![ls 命令][5] + +推荐阅读: + +> **[ls 命令示例][6]** + +#### 2、cd 命令:改变目录 + +默认情况下,你从你的主目录下开始。你经常需要改变目录并移动到另一个目录。 + +例如,你下载了一个 deb 文件或脚本。现在你想运行它。你可以通过提供完整的路径从你现在的工作目录运行它,但是切换到下载的位置会让事情更简单。 + +`cd` 命令代表“改变目录change directory”,你可以改变你的位置,移动到另一个目录。 + +![cd 命令示例][7] + +在这一点上,我强烈建议阅读关于 Linux 中路径的概念,这样在 Linux 命令行中浏览目录时,事情就容易理解了。 + +推荐阅读: + +> **[cd 命令示例][8]** + +#### 3、cat 命令:读取一个文本文件 + +如果你想在 Linux 中快速查看一个文本文件的内容,`cat` 是你需要使用的命令。它在屏幕上显示内容。 + +``` +cat filename +``` + +![cat 命令示例][9] + +你也可以使用 `cat` 命令来创建新的文件或给现有文件添加更多的文本。 + +推荐阅读: + +> **[cat 命令的例子][10]** + +#### 4、less 命令:读取一个大的文本文件 + +`cat` 命令对于查看小的文本文件已经足够了。但是,如果你有一个有数百行的巨大文本文件,我不建议使用 `cat`。它将用所有的文本淹没你的屏幕,而你将很难处理它。 + +这就是 `less` 命令有用的地方。当你用 `less` 打开一个文件时,它会分页打开文件。你可以向上/向下滚动,寻找文本等等。 + +![用 less 命令阅读大文件][11] + +一旦你读完了文件,你可以按 `Q` 键退出 `less` 视图。你会注意到,屏幕上什么都没有显示。你的屏幕是干净的。 + +推荐阅读: + +> **[less 命令示例][12]** + +#### 5、touch 命令:创建新文件 + +在 Linux 终端中,有多种创建新文件的方法。你在上面看到的 `cat` 命令也可以创建新文件。 + +然而,我更喜欢用 `touch` 命令来实现这一目的。 + +``` +touch new_file_name +``` + +![touch command ubuntu][13] + +如果你对现有的文件使用它,它们的时间戳会被修改。 + +推荐阅读: + +> **[touch 命令示例][14]** + +#### 6、mkdir 命令:创建新的文件夹 + +虽然没有创建新文件的特定命令,但有一个专门的命令用于创建新的文件夹(或目录,我们在 Linux 中称之为“目录”)。 + +``` +mkdir new_dir +``` + +![mkdir 命令示例][15] + +推荐阅读: + +> **[mkdir 命令示例][16]** + +#### 7、cp 命令:复制文件和文件夹 + +在命令行中复制文件和文件夹也是你会遇到的常见任务之一。`cp` 命令是“复制Copy”的简称,用于这一目的。 + +想象一下,你必须修改一个配置文件。一个聪明的做法是用另一个名字复制该文件。这样一来,你就有了一个文件的备份。 + +``` +cp existing_file.txt existing_file.back +``` + +你也可以使用同样的 `cp` 命令来复制目录。为此,你必须指定递归选项 `-r`。 + +``` +cp -r dir another_location +``` + +![cp 命令示例][17] + +推荐阅读: + +> **[cp 命令示例][18]** + +#### 8、mv 命令:剪贴或重命名文件和文件夹 + +`mv` 命令是 “移动Move” 的意思。当你把一个文件复制到另一个地方时,它仍然保留在原来的地方。 + +`mv` 命令将文件和文件夹移动到另一个位置。你可以把它看作是一个剪切-粘贴的操作。 + +``` +mv file.txt /another/location +``` + +你也可以使用 `mv` 命令来重命名文件。 + +``` +mv file.txt new_file.txt +``` + +同样的 `mv` 命令也可以移动或重命名文件夹,不需要任何特殊的选项。 + +![mv 命令示例][19] + +推荐阅读: + +> **[mv 命令示例][20]** + +#### 9、rm 命令:删除文件和文件夹 + +要在 Linux 终端中删除文件,你可以使用 `rm`(“删除Remove”的缩写)命令。 + +``` +rm filename +``` + +在命令行中删除文件后,没有撤销选项。这就是为什么你在删除文件时要非常小心。如果你害怕删除错误的文件,可以使用选项 `-i` 的交互式模式,它给你一个额外的提示来确认操作。 + +``` +rm -i filename +``` + +使用递归选项 `-r`,你也可以使用相同的 `rm` 命令来删除文件夹。 + +![rm 命令示例][21] + +推荐阅读: + +> **[rm 命令示例][22]** + +#### 10、nano 命令:编辑文件 + +迟早有一天,你会被要求对一个文件的内容进行修改。想象一下,你必须改变 SSH、Grub 或其他一些应用程序的配置文件。 + +有一些 [基于命令行的][23] 文本编辑器可以达到这个目的。Ubuntu 预装了 Nano 编辑器,它比 Vim、Emacs 等更容易使用。 + +**如果你好奇它们有什么不同**,请阅读我们的 [Nano vs. Vim 对比][24] 文章。 + +更容易使用并不意味着和基于 GUI 的文本编辑器一样舒适。你将不得不使用键盘快捷键来移动、修改、保存和退出文件。 + +要用 `nano` 打开一个新的、未命名的文件,请使用: + +``` +nano +``` + +要在 nano 中编辑一个现有的文件,请使用: + +``` +nano filename +``` + +在这两种情况下,你都应该看到一个类似这样的界面。 + +![nano 命令示例][25] + +要保存(或放弃修改)并退出编辑器界面,请使用 `Ctrl+x` 键。 + +请参考我之前创建的 [nano 初学者指南][26] 来适应它。 + +#### 11、clear 命令:清除终端屏幕 + +Nano 感觉很复杂,对吗?让我来分享一个简单的命令。 + +`clear` 命令可以清除终端。就是这样。 + +``` +clear +``` + +你为什么需要这样做呢?嗯,如果你的终端屏幕充斥着随机的东西,而你想做一些新的事情。清理终端就像清理黑板或在你的笔记本上打开一个新页。 + +#### 12、ps 命令:检查和管理进程 + +`ps` 命令是用来管理你系统上运行的进程的。每个进程都有一个相关的 ID,称为 PID,它可以用于各种目的,例如 [终止一个进程][27]。 + +``` +~$ ps + pid tty time cmd + 15358 ? 00:00:00 bash + 15404 ? 00:00:00 ps +``` + +这里, + +- `PID`:进程 ID +- `TTY`:与进程相关的控制终端(现在已经不那么重要了) +- `TIME`:总的 CPU 使用时间 +- `CMD`:运行该进程的命令名称 + +但一个系统不可能只运行两到三个进程,不是吗?要查看所有用户运行的所有进程,请使用: + +``` +ps aux +``` + +这将给出一个庞大的进程列表和关于它们的更多细节。如果你运行这个命令,现在将是使用 `clear` 命令的绝佳时机。 + +![进程列表][29] + +推荐阅读: + +> **[ps 命令示例][30]** + +#### 13、top 命令:系统监控 + +`ps` 命令给你提供了所有正在运行的进程,而 `top` 命令给你提供了进程和系统资源消耗的实时视图。 + +``` +top +``` + +把它看作是 Linux 中任务管理器的终端版本。通过 `top` 命令,你会看到很多有趣的细节。 + +我主要使用 `top` 命令来检查哪个进程占用了太多的 CPU 或内存。如果你有兴趣做实验,还有 [更好的 top 替代品][31]。 + +![top 命令][32] + +要 [停止运行的 top 命令][33],请使用 `Ctrl+C` 键盘快捷键。 + +推荐阅读: + +> **[有效使用 top 命令作为任务管理器][34]** + +#### 14、lsblk 命令: 列出磁盘和分区 + +`lsblk` 命令列出了你系统中所有的块设备。用非常简单(技术上不完全准确)的术语来说,它显示的是磁盘和分区。 + +``` +~# lsblk +NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS +loop0 7:0 0 79.9M 1 loop /snap/lxd/22923 +loop1 7:1 0 103M 1 loop /snap/lxd/23541 +loop2 7:2 0 63.2M 1 loop /snap/core20/1623 +loop3 7:3 0 48M 1 loop /snap/snapd/17336 +loop4 7:4 0 48M 1 loop /snap/snapd/17029 +loop6 7:6 0 63.2M 1 loop /snap/core20/1634 +vda 252:0 0 25G 0 disk +├─vda1 252:1 0 24.9G 0 part / +├─vda14 252:14 0 4M 0 part +└─vda15 252:15 0 106M 0 part /boot/efi +vdb 252:16 0 466K 1 disk +~# +``` + +#### 15、fdisk 命令:列出并管理磁盘和分区 + +另一个类似但更好的命令是 `fdisk` 命令。它可以让你操作磁盘的分区。这意味着你可以用这个命令创建新的分区,删除和调整现有分区的大小。 + +你还可以用它来列出系统中所有的块设备,包括 [回环设备][35]。 + +``` +sudo fdisk -l +``` + +如果你有许多分区、磁盘和回环设备(由 Snap 应用程序创建),输出结果可能是巨大的。我在这里展示的是输出的相关部分: + +``` +Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes +Disklabel type: gpt +Disk identifier: 0B7C796D-51CD-4DD4-962A-7D94B31690E2 + +Device Start End Sectors Size Type +/dev/vda1 227328 52428766 52201439 24.9G Linux filesystem +/dev/vda14 2048 10239 8192 4M BIOS boot +/dev/vda15 10240 227327 217088 106M EFI System +``` + +#### 16、find 命令:搜索文件 + +即使作为一个桌面用户,你也会遇到在 Linux 命令行中搜索文件的情况。 + +`find` 命令是一个用于此目的的广泛而通用的命令。它有 50 多个选项,而你可能永远不会需要所有的选项。 + +下面是一个 `find` 命令的例子,它将给你提供当前目录中所有以 `.txt` 扩展名结尾的文件。 + +``` +find . -type f -name "*.txt" +``` + +其他常见的例子包括按大小、修改时间等查找文件。你可以 [将 find 与 exec][36] 或 [xargs][37] 结合起来,对 `find` 命令的结果采取行动。例如,你可以寻找所有的 `.txt` 文件并选择删除它们。 + +推荐阅读: + +> **[find 命令示例][38]** + +#### 17、grep 命令:在文件内容中搜索 + +`find` 命令根据文件的名称和类型来搜索文件。如果你想根据文件的内容进行搜索,你可以使用 `grep`命令。 + +因此,与其寻找所有以 `.txt` 结尾的文件,不如用 `grep` 寻找所有包含文本 `foss` 的文件。 + +``` +grep -ri search_term +``` + +![grep 命令示例][39] + +想学习更多吗?这里有一些更多的 [grep 命令示例][40]。方便的 [grep 速查表][41] 应该可以帮助你。 + +#### 18、kill 命令:终止进程 + +暴力不是答案......它是解决方案。 + +开个玩笑! + +如果你有一个行为不端的进程,占用了太多的系统资源,你可以 [找到它,然后终止][27] 它,[使用 kill 命令][42] 就行。 + +``` +sudo kill -9 process_ID_or_Name +``` + +正如你在上面的命令中看到的,你需要知道进程 ID(PID)或进程名称来终止它。你可以使用 `ps` 或 `top` 命令来获得 PID或确切的进程名称。 + +``` +ps aux | grep -i “name of your desired program” +``` + +你注意到 `grep` 命令的使用了吗?你已经在利用这个列表中提到的命令了。 + +![find kill process][43] + +我不知道你怎么想的,但是当我寻找流氓进程来终止时,我觉得自己就像 [《飓风营救》中的连姆·尼森][44]。 + +![Taken meme find you kill you][45] + +#### 19、history 命令:回头看看你过去运行了哪些命令 + +比如,你在几天前使用了一个特定的 Linux 命令。现在你需要再次运行它,但你不能正确地想起它。 + +你可以按上下方向键。 + +这对许多 Linux 用户来说是一个熟悉的场景:这就是 `history` 命令的作用。 + +在 Ubuntu 中,你的 Shell 会保存你所运行的命令的历史。在终端输入 `history`,你会看到你过去运行的命令的历史。 + +![history 命令][46] + +你可以选择从历史记录中运行一个条目,使用其编号,像这样。 + +``` +!number +``` + +但即使是历史记录也可能是巨大的,所以(再次)使用 `grep` 命令来过滤你的搜索词。 + +``` +~$ history | grep aux + 1915 ps aux + 1952 ps aux | grep -i spotify + 1955 ps -aux | grep -i calculator + 1957 ps -aux | grep -i calculator + 1959 ps -aux | grep -i calculator + 1970 history | grep aux +``` + +还有一种方法可以进入命令历史并进行搜索。按 `Ctrl+R`,然后输入搜索词。 + +推荐阅读: + +> **[history 命令示例][47]** + +#### 20、chmod 命令:改变文件权限 + +我强烈建议在这个阶段阅读有关 [Linux 文件权限][2]。这将有助于你更好地理解,而不是盲目地运行 [chmod 命令][48]。 + +`chmod`(“改变模式change mode”)命令是用来改变文件的权限的。 + +这个命令最常见的用途是当你想让一个文件可执行时。有一个Shell脚本?像这样让它可执行: + +``` +chmod u+x file-executable +``` + +还有更多的使用情况,使 `chmod `成为 Ubuntu 用户必须知道的命令。 + +**有趣的事实**:`chmod 777` 命令为所有用户提供了所有的权限。这代表了我们的座右铭是 “让每个人都能获得知识”。 + +#### 21、lshw 命令:获取硬件细节 + +在 Linux 中,有大量的命令行 [工具可以用来获取硬件细节][49] 和其他系统信息。 + +可能预装在 Ubuntu 上的是 `lshw`(“列出硬件list hardware”的缩写)。 + +现在,默认情况下,它显示了大量关于所有硬件组件的详细信息,相信我,这不是很容易理解。 + +``` +lshw +``` + +你可能会感到在这里使用 `grep` 的诱惑,但没有必要这样做。`lshw` 的输出被分成几类,你可以用它来显示一类硬件的细节。 + +[想知道你的网络适配器的制造商][50]?使用这个: + +``` +lshw -C network +``` + +![lshw 命令示例][51] + +#### 22、sudo 命令:以 root 权限运行命令 + +你一定注意到,我在之前讨论的一些命令中使用了 `sudo` 作为前缀。 + +默认情况下,在 Ubuntu 中,`sudo` 的配置方式是,它允许你(默认的管理用户)以 root 权限运行任何命令。 + +你被要求输入一个密码,而且是你的用户账户密码。当你输入密码时,屏幕上没有任何显示。新用户对此感到困惑,但这是 UNIX/Linux 的预期行为。你输入密码并按回车键。 + +![使用 sudo 的例子][52] + +推荐阅读: + +> **[Ubuntu 中的 root 用户][53]** + +#### 23、apt 命令: 安装、删除和管理 .deb 包 + +在 Ubuntu 中,`apt` 命令被用来管理软件包。你必须和 `sudo` 一起使用它,因为这些是管理任务。 + +要安装一个软件包,请使用: + +``` +sudo apt install package_name +``` + +要删除一个安装软件,请使用: + +``` +sudo apt remove package_name +``` + +要一次性用所有可升级的软件包更新你的 Ubuntu 系统: + +``` +sudo apt update && sudo apt upgrade +``` + +[apt update 和 upgrade 的区别][54] 是:`update` 会刷新软件包的缓存,而 `upgrade` 则是实际安装更新。 + +`apt` 命令还有很多内容。你可以阅读 [这个详细的 apt 命令指南][55]。 + +#### 24、add-apt-repository 命令:添加和删除 PPA + +好吧,这个命令已经不像十年前那么流行了。你仍然会在这里和那里遇到 [add-apt-repository 命令][56]。它是用来管理你系统中的 PPA(非官方的、用户生成的软件库)。 + +在跟随网络上的教程时,你可能会遇到由三行组成的安装说明: + +``` +sudo add-apt-repository ppa:dr-akulavich/lighttable +sudo apt update +sudo apt install lighttable-installer +``` + +第一个命令是添加 PPA(外部资源库)。你已经熟悉了下面两条,它们用于更新软件包缓存和安装你刚刚添加的 PPA 仓库提供的软件。 + +要删除一个 PPA,你应该首先删除你从它那里安装的软件,然后像这样删除它: + +``` +sudo add-apt-repository -r ppa:dr-akulavich/lighttable +``` + +我有一篇 [关于 PPA 的完整指南][57],可以了解关于这个主题的更多细节。 + +#### 25、snap 命令:安装、删除和管理 Snap 包 + +到目前为止,你知道 apt 软件包和它们的管理。然而,Ubuntu 也使用并积极推荐使用其 Snap 打包格式。 + +学习一些基本的 `snap` 命令将帮助你有效地管理这些软件包。 + +要找到一个软件包,请使用: + +``` +snap find search_term +``` + +要安装一个软件包,请使用: + +``` +sudo snap install package_name +``` + +要列出已安装的 Snap 应用程序: + +``` +snap list +``` + +要删除一个已安装的 Snap 应用程序,请使用: + +``` +sudo snap remove package_name +``` + +#### 26、ip 命令:检查 IP 地址和其他信息 + +`ip` 命令可以让你 [检查你的 IP 地址][58]。你还可以查看和操作路由、网络设备等。 + +``` +ip a +``` + +![ip 地址检查][59] + +#### 27、ping 命令:检查远程系统是否可达 + +`ping` 是另一个你应该知道的 [Linux 网络命令][60]。要检查一个远程系统是否可用,把它的 IP 地址给 `ping` 命令: + +``` +ping ip_address +``` + +你也可以用它来检查一个网站是否关闭,尽管现在它不是很准确。 + +![ping command ubuntu][61] + +使用 `Ctrl+C` 来停止运行的 `ping` 命令。 + +推荐阅读: + +> **[ping 命令示例][62]** + +#### 28、ssh 命令:连接到远程系统 + +我对把 `ssh` 添加到必须知道的 Linux 命令列表中持怀疑态度。许多桌面用户可能不需要它。SSH 被用于从你的终端连接到其他 Linux系统。 + +``` +ssh user@address_of_remote_system +``` + +当然,你需要知道远程系统的用户和密码。 + +如果你有云服务器或家庭设置,其中有其他 Linux 系统,你可以用它从你的主系统连接到它们。 + +#### 29、scp 命令:在远程系统之间复制文件 + +既然我在列表中包括了 `ssh`,那么包括一些 [通过 SSH 连接在远程系统之间传输文件的命令][63] 才是公平的。 + +`scp` 命令的工作原理与你之前看到的 `cp` 命令差不多。 + +下面是一个例子,它把文件从远程系统上的用户的主目录复制到你本地登录系统的当前目录。 + +``` +scp user@remote_address:/home/username/filename . +``` + +推荐阅读: + +> **[scp 命令示例][64]** + +#### 30、exit 命令:关闭终端 + +Linux 的基本命令列表就要结束了。那么让我们来谈谈退出终端的问题。这很简单。只要输入 + +``` +exit +``` + +如果你正在使用另一个用户或 Shell,你就会从那里注销。 + +你也可以使用 `Ctrl+D` 键来退出终端。 + +#### 31、shutdown 命令:关闭或重启系统 + +好了。如果你还没有退出终端,让我分享一个最后的命令。 + +从命令行中 [关闭你的系统][65] 怎么样? + +[使用 shutdown 命令][66] 来达到这个目的: + +``` +shutdown +``` + +上述命令 [安排在一分钟内关机][67]。你可以用以下方法让它立即关闭: + +``` +shutdown -now +``` + +你也可以使用同样的关机命令来 [重启你的 Ubuntu 系统][68]。 + +``` +shutdown -r now +``` + +#### 更多:man 命令:详细了解命令 + +还有一个,这也是最后一个,我保证。所有的 Linux 系统都有一个命令的手册。它被称为手册页,你可以通过以下方式访问已安装命令的手册页: + +``` +man command_name +``` + +[了解手册页][69] 对于新用户来说,可能会让人不知所措,但它却很方便。它为你提供了一个命令的通用语法和所有选项的描述。 + +当你对使用一个命令没有把握时,可以先查看它的手册页,然后再在网上搜索它。 + +### 总是有更多…… + +**这只是大约 30 个命令。而且这还不到 Linux 命令的20%**。我还没有涉及很多网络命令。我甚至没有涉及用户管理命令。 + +我在写这篇文章时,考虑到了普通的 Ubuntu 桌面用户。这些是你更可能使用的命令。从长远来看,掌握一些这方面的知识会很有帮助。 + +除此以外,学习是没有止境的。即使是最老练的 Linux 用户也会不断发现和学习新东西。 + +考虑到你对学习 Linux 命令感兴趣,让我推荐一些 [好的 Linux书籍][70] 和资源。 + +- [Linux 如何工作][71]:解释了 Linux 如何工作,而不是命令。 +- William Shotts 的《[Linux 命令行][72]》:可以合法地免费下载 PDF 格式的文件。 +- Daniel J Barrett 的《[Linux口袋指南][73]》:将 Linux 命令分为不同的类别,并通过小例子进行简单的解释。 +- [快速学习 Linux][74]:完全专注于 Linux 命令,有适当的例子和练习。 + +除此之外,你还可以从 [Linux Journey][75] 和 [Linux Handbook][76] 等网站学习。 + +**我知道你已经读了很久了**,但这还不到冰山一角。总有更多的东西需要学习,但也不是说如果你不知道所有的 Linux 命令,你就必须感到痛苦。 + +**没有人知道所有的东西。** + +现在,轮到你了。你觉得这份 Linux 命令列表有帮助吗? + +**如果你要在其中增加一些命令,会是什么?评论区是你的**。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/essential-ubuntu-commands/ + +作者:[Abhishek Prakash][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://itsfoss.com/ +[b]: https://github.com/lkxed +[1]: https://linuxhandbook.com/absolute-vs-relative-path/ +[2]: https://linuxhandbook.com/linux-file-permissions/ +[3]: https://itsfoss.com/basic-terminal-tips-ubuntu/ +[4]: https://itsfoss.com/folder-directory-linux/ +[5]: https://itsfoss.com/wp-content/uploads/2022/11/ls-command-ubuntu.png +[6]: https://linuxhandbook.com/ls-command/ +[7]: https://itsfoss.com/wp-content/uploads/2022/11/cd-command-examples.png +[8]: https://linuxhandbook.com/cd-command-examples/ +[9]: https://itsfoss.com/wp-content/uploads/2022/11/cat-command-example.png +[10]: https://linuxhandbook.com/cat-command/ +[11]: https://itsfoss.com/wp-content/uploads/2022/11/reading-large-files-with-less-command.png +[12]: https://linuxhandbook.com/less-command/ +[13]: https://itsfoss.com/wp-content/uploads/2022/11/touch-command-ubuntu.png +[14]: https://linuxhandbook.com/touch-command/ +[15]: https://itsfoss.com/wp-content/uploads/2022/11/mkdir-command-example.png +[16]: https://linuxhandbook.com/mkdir-command/ +[17]: https://itsfoss.com/wp-content/uploads/2022/11/cp-command-example.png +[18]: https://linuxhandbook.com/cp-command/ +[19]: https://itsfoss.com/wp-content/uploads/2022/11/mv-command-example.png +[20]: https://linuxhandbook.com/mv-command/ +[21]: https://itsfoss.com/wp-content/uploads/2022/11/rm-command-examples.png +[22]: https://linuxhandbook.com/remove-files-directories/ +[23]: https://itsfoss.com/command-line-text-editors-linux/ +[24]: https://itsfoss.com/vim-vs-nano/ +[25]: https://itsfoss.com/wp-content/uploads/2022/11/nano-command-example.png +[26]: https://itsfoss.com/nano-editor-guide/ +[27]: https://itsfoss.com/how-to-find-the-process-id-of-a-program-and-kill-it-quick-tip/ +[28]: https://itsfoss.com/cdn-cgi/l/email-protection +[29]: https://itsfoss.com/wp-content/uploads/2022/11/list-processes-ubuntu.webp +[30]: https://linuxhandbook.com/ps-command/ +[31]: https://itsfoss.com/linux-system-monitoring-tools/ +[32]: https://itsfoss.com/wp-content/uploads/2022/11/top-command-ubuntu.png +[33]: https://itsfoss.com/stop-program-linux-terminal/ +[34]: https://linuxhandbook.com/top-command/ +[35]: https://itsfoss.com/loop-device-linux/ +[36]: https://linuxhandbook.com/find-exec-command/ +[37]: https://linuxhandbook.com/xargs-command/ +[38]: https://linuxhandbook.com/find-command-examples/ +[39]: https://itsfoss.com/wp-content/uploads/2022/11/grep-command-examples.png +[40]: https://linuxhandbook.com/grep-command-examples/ +[41]: https://linuxhandbook.com/grep-command-cheatsheet/ +[42]: https://linuxhandbook.com/kill-process/ +[43]: https://itsfoss.com/wp-content/uploads/2022/11/find-kill-process-ubuntu-800x264.png +[44]: https://www.imdb.com/title/tt0936501/?ref_=tt_urv +[45]: https://itsfoss.com/wp-content/uploads/2022/11/taken-meme-find-you-kill-you.jpg +[46]: https://itsfoss.com/wp-content/uploads/2022/11/history-command-ubuntu-800x534.png +[47]: https://linuxhandbook.com/history-command/ +[48]: https://linuxhandbook.com/chmod-command/ +[49]: https://itsfoss.com/hardinfo/ +[50]: https://itsfoss.com/find-network-adapter-ubuntu-linux/ +[51]: https://itsfoss.com/wp-content/uploads/2022/11/lshw-command-examples.png +[52]: https://itsfoss.com/wp-content/uploads/2022/11/using-sudo-example-ubuntu.png +[53]: https://itsfoss.com/root-user-ubuntu/ +[54]: https://itsfoss.com/apt-update-vs-upgrade/ +[55]: https://itsfoss.com/apt-command-guide/ +[56]: https://itsfoss.com/add-apt-repository-command-not-found/ +[57]: https://itsfoss.com/ppa-guide/ +[58]: https://itsfoss.com/check-ip-address-ubuntu/ +[59]: https://itsfoss.com/wp-content/uploads/2022/11/ip-address-check-ubuntu.png +[60]: https://itsfoss.com/basic-linux-networking-commands/ +[61]: https://itsfoss.com/wp-content/uploads/2022/11/ping-command-ubuntu.png +[62]: https://linuxhandbook.com/ping-command/ +[63]: https://linuxhandbook.com/transfer-files-ssh/ +[64]: https://linuxhandbook.com/scp-command/ +[65]: https://learnubuntu.com/shutdown-ubuntu/ +[66]: https://linuxhandbook.com/linux-shutdown-command/ +[67]: https://itsfoss.com/schedule-shutdown-ubuntu/ +[68]: https://learnubuntu.com/restart-ubuntu/ +[69]: https://itsfoss.com/linux-man-page-guide/ +[70]: https://itsfoss.com/best-linux-books/ +[71]: https://nostarch.com/howlinuxworks3 +[72]: https://linuxcommand.org/tlcl.php +[73]: https://www.oreilly.com/library/view/linux-pocket-guide/9780596806347/ +[74]: https://linuxhandbook.gumroad.com/l/mEsrwA +[75]: https://linuxjourney.com/ +[76]: https://linuxhandbook.com/a-to-z-linux-commands/ +[0]: https://img.linux.net.cn/data/attachment/album/202211/24/184845y5i7757o708odem7.png \ No newline at end of file diff --git a/published/202211/20221109.5 ⭐️ How to Find Systemd or Any Other init System in Linux.md b/published/202211/20221109.5 ⭐️ How to Find Systemd or Any Other init System in Linux.md new file mode 100644 index 0000000000..7741d5b271 --- /dev/null +++ b/published/202211/20221109.5 ⭐️ How to Find Systemd or Any Other init System in Linux.md @@ -0,0 +1,89 @@ +[#]: subject: "How to Find Systemd or Any Other init System in Linux" +[#]: via: "https://www.debugpoint.com/systemd-or-init/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15256-1.html" + +如何在 Linux 中确定运行的是那种初始化系统 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/15/183009zafv77ru1afwprr7.jpg) + +> 你可以通过以下方式确定你的 Linux 发行版中是否正在运行 systemd 或其它初始化系统。 + +首个进程在你启动 Linux 发行版时开始运行,它称为初始化进程 init(初始化initialization的缩写)。它的进程标识符为 1(即 pid=1)。基于 Unix 的系统中的所有进程和应用程序都是这个初始化进程的后代。 + +根据功能和特性,存在不同类型的初始化进程。例如,[systemd][1]、Runit、OpenRC、sysVinit 等。其中,systemd 是最流行和最现代的一种,被包括 Ubuntu 和 Fedora 在内的所有现代 Linux 发行版使用和采用。 + +与传统的基于 Unix 的初始化系统相比,systemd 及其性能一直存在争议。但这就是另外一个话题了。 + +让我们看看如何确定在 Linux 发行版中运行的是 systemd 还是其它初始化系统。 + +### systemd 还是其它初始化系统? + +不幸的是,没有直接的命令可以找到它。你可以从初始化进程追溯它,它基本上是到 `/sbin/init` 的符号链接,即 pid=1。 + +使用 [strings][2] 命令打印嵌入在二进制文件 `/sbin/init` 中的文本并使用以下命令搜索 `init`: + +``` +strings /sbin/init | grep init +``` + +#### 示例 1 + +在下面的输出中,它是一个运行 Debian(Peppermint OS)的 sysVinit 系统。如你所见,它清楚地显示了 `init` 进程名称。 + +``` +strings /sbin/init | grep init +``` + +![显示使用 sysVinit 而不是 systemd 的示例][3] + +如果在上述同一个系统中找 `systemd`,那么不会有任何结果。因此,你可以得出结论,你正在运行 sysVinit 而不是 systemd。 + +#### 示例 2 + +如果你在 systemd 系统中运行上述命令,你可以在输出的第一行轻松看到 systemd 及其版本。 + +``` +strings /sbin/init | grep systemd +``` + +![显示它使用 systemd 的示例][4] + +#### 示例 3 + +你也可以尝试使用 `pstree` 命令打印进程树,它应该会显示第一个进程名称。它应该是 `systemd` 或 `init`,如下例所示。 + +``` +pstree +``` + +![pstree 显示使用 systemd][5] + +![pstree 显示使用 init][6] + +这就好了。这样你就可以轻松找出你的发行版是使用 systemd 还是其他的。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/systemd-or-init/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[geekpi](https://github.com/geekpi) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/tag/systemd +[2]: https://linux.die.net/man/1/strings +[3]: https://www.debugpoint.com/wp-content/uploads/2022/11/example-showing-the-init-is-used-and-not-systemd.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2022/11/example-showing-it-uses-systemd.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2022/11/pstree-is-showing-systemd-is-used.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2022/11/pstree-is-showing-init-is-used.jpg diff --git a/published/202211/20221109.6 ⭐️ Using Python in VS Code and Codium.md b/published/202211/20221109.6 ⭐️ Using Python in VS Code and Codium.md new file mode 100644 index 0000000000..a605e375ed --- /dev/null +++ b/published/202211/20221109.6 ⭐️ Using Python in VS Code and Codium.md @@ -0,0 +1,119 @@ +[#]: subject: "Using Python in VS Code and Codium" +[#]: via: "https://opensource.com/article/22/11/python-vs-code-codium" +[#]: author: "Don Watkins https://opensource.com/users/don-watkins" +[#]: collector: "lkxed" +[#]: translator: "Cubik65536" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15261-1.html" + +在 VS Code 和 Codium 中编写 Python 程序 +====== + +![][0] + +> 如果你正在寻找一个优秀的、通用的、开源的、带有 Python 集成的代码编辑器,那么你可以尝试一下 Codium。 + +在过去几年内,我有幸和中学生们一起,并带他们入门 [Python 开发][1] 和树莓派 400。这一切都很有趣,树莓派对于学生和我来说都是一个很好的平台。我们使用了 [Code with Mu][2],并且一切都很成功。我们的 Python 技能随着经验的增长而增长,因此最近我开始寻找给这些学生提供更多东西的方法。 + +我参与了一个 Python 课程并在课程中接触了微软的 Visual Studio Code。我在课程中学到了很多关于如何为 Python 设置虚拟环境,以及如何为 Python 编程配置 VS Code 的知识。在学习过程中,我也认识了 [Codium][3],它基本上是没有微软品牌和遥测的 VS Code。 + +如果你正在寻找一个优秀的、通用的、开源的、带有 Python 集成的代码编辑器,那么你可以尝试一下 Codium。下面是我在 Linux 系统上为 Python 设置 Codium 的方法。 + +### 在 Linux 上安装或更新 Python + +首先,确保你正在运行最新版本的 Python。你可以使用你的软件包管理器来完成这项工作。在 Debian 和基于 Debian 的系统上: + +``` +$ sudo apt install python3-pip +``` + +在 Fedora、CentOS、Mageia、OpenMandriva 和类似的系统上: + +``` +$ sudo dnf update python3 +``` + +在某些系统上,你可能还需要安装创建 Python 虚拟环境的软件: + +``` +$ sudo apt install python3.10-venv +``` + +### 安装 Codium + +接下来,在你的电脑上 [安装 Codium][4]。在 Linux 上,你可以下载一个包并使用你的包管理器安装它,或者 [使用 Flatpak][5]。 + +在安装好 Codium 之后,打开你的应用程序或活动菜单,输入 `code` 以启动它。 + +### 安装 VS Code Python 扩展 + +代码其实不是什么特别的东西。它只是一些其他应用程序(编译器或运行时)解释的纯文本。你可以在 Codium 中编写 Python 代码而不需要特殊的扩展。但是,有一个 Python 扩展可以为你带来一些方便的功能。 + +点击“文件File”菜单,选择“首选项Preferences”,然后选择“扩展Extensions”。在“扩展Extensions”面板中,搜索 Python IntelliSense 扩展。 + +![VS Code 和 Codium 都有一个扩展管理器,它会在页面左侧打开,允许你安装附加模块][6] + +你已经在 Codium 中设置了 Python。剩下的就是把它用起来。 + +### 为 VS Code 或 Codium 设置虚拟环境 + +我们可以创建一个项目目录,并将其添加到 Codium 中,这样在工作时,你创建和保存的文件都将默认保存到活动项目目录。这是一种快速的管理方式,可以让你不必经常点击文件保存和打开对话框。 + +在你创建一个虚拟 Python 环境作为工作目录时,Codium 会检测到它(因为你已经安装了 Python 扩展)。当你激活一个虚拟环境文件夹作为活动项目目录时,Codium 会自动运行使用虚拟环境所需的激活代码。 + +要为 Python 创建一个虚拟环境,请打开终端并输入: + +``` +$ python3 -m venv ~/PythonCoding +``` + +### 添加项目目录 + +在 Codium 中,点击“文件File”菜单,选择“将文件夹添加到工作区Add Folder to Workspace”。打开你刚刚设置的虚拟环境(对我来说,是 `/home/don/PythonCoding`)。 + +现在你已经准备好写一些 Python 代码了!在你的工作区中创建一个新的 Python 文件并插入一些基本代码。当你输入时,你可能会注意到,Codium 会为环境包含的 Python 模块提供自动补齐建议。 + +``` +import sys +print("Codium running Python " + sys.version) +``` + +现在点击 Codium 窗口右上角的“运行”按钮。这会在窗口底部打开一个控制台面板显示你的代码的输出: + +``` +(PythonCode) sh-5.1$ /home/bogus/PythonCode/bin/python +/home/bogus/PythonCode/app.py +Codium running Python 3.10.6 (main…)[GCC 12.1.0] +(PythonCode) sh-5.1$ +``` + +就像你从输出中看到的,Codium 在 `PythonCode` 环境中运行,并成功运行了你的 Python 代码。 + +### Codium 和 Python + +使用 Codium 编写 Python 代码比以往任何时候都更容易,但 Python 并不是 Codium 支持的唯一语言。你可以轻松地从 [Open VSX Registry][7] 中找到并安装其他扩展,这是一个中立的开源 VS Code 扩展 “市场”。 + +Codium 的界面比一些基本的编辑器更复杂,但它有我在学习过程中所需要的东西。如果你需要一个更专业的编辑器,或者你想从当前的编辑器切换到新的编辑器,那么试试 Codium 吧。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/python-vs-code-codium + +作者:[Don Watkins][a] +选题:[lkxed][b] +译者:[Cubik65536](https://github.com/Cubik65536) +校对:[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/lkxed +[1]: https://opensource.com/article/22/8/math-python-raspberry-pi +[2]: https://codewith.mu/ +[3]: https://opensource.com/article/20/6/open-source-alternatives-vs-code +[4]: https://github.com/VSCodium/vscodium/releases +[5]: https://flathub.org/apps/details/com.vscodium.codium +[6]: https://opensource.com/sites/default/files/2022-10/codium-extension-python.webp +[7]: https://open-vsx.org/ +[0]: https://img.linux.net.cn/data/attachment/album/202211/17/100909py38rj0tqxlyrq0t.jpg \ No newline at end of file diff --git a/published/202211/20221110.0 ⭐️ How to Fix sudo Command Not Found Error.md b/published/202211/20221110.0 ⭐️ How to Fix sudo Command Not Found Error.md new file mode 100644 index 0000000000..2e557e41c5 --- /dev/null +++ b/published/202211/20221110.0 ⭐️ How to Fix sudo Command Not Found Error.md @@ -0,0 +1,107 @@ +[#]: subject: "How to Fix: sudo Command Not Found Error" +[#]: via: "https://www.debugpoint.com/sudo-command-not-found/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15280-1.html" + +如何修复:“sudo Command Not Found” 错误 +====== + +![][0] + +> 以下是你如何在 Debian、Ubuntu 和其他发行版中修复 “sudo command not found” 错误的方法。 + +有时,当你第一次设置或安装 [Linux 发行版][1] 时,你在用 `sudo` 尝试一些命令时,会出现 “sudo command not found” 的错误。 + +`sudo` 命令是 “superuser do” 的缩写,它是一个允许用户以管理员权限执行命令的程序。`sudo` 命令帮助你像管理员用户一样运行程序/命令。 + +此外,用 `sudo` 运行命令的用户必须是 `sudo` 组的一部分。 + +你看到这个错误的主要原因是该软件包本身没有安装。然而,大多数现代 Linux 发行版都默认提供了这个功能,但有些则没有。 + +下面是解决这个问题需要遵循的步骤。 + +#### 故障排除 #1 + +首先,安装 `sudo` 包来解决这个问题。打开一个终端,刷新你的系统,并运行以下命令来安装 `sudo`。 + +对于 Ubuntu、Debian 和相关发行版: + +``` +su -apt updateapt install sudo +``` + +对于 Arch Linux: + +``` +pacman -S sudo +``` + +对于 Fedora、RHEL 等: + +``` +su -dnf updatednf install sudo +``` + +上述安装完成后,你必须使用以下命令将用户添加到 `sudo` 组中。 + +``` +usermod -aG sudo +``` + +然后从终端运行 `visudo`,并运行以下行。按 `CTRL+O` 和 `CTRL+X` 来保存和退出。 + +![使用 visudo 更新 sudoers 文件][2] + +退出并再次登录使变化生效。 + +#### 故障排除 #2 + +在做了上述改变之后,如果你仍然收到错误信息,那么请按照以下步骤操作。 + +确保你的 `$PATH` 变量包含 `sudo` 可执行文件的正确路径。如果 `sudo` 已经安装,但 `$PATH` 不正确,你也会得到这个错误。理想情况下,你的路径应该包含以下所有的路径。 + +``` +echo $PATH +``` + +``` +/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin +``` + +要改变路径变量,使用以下命令。例如,如果 `/usr/bin` 不存在,那么你可以通过以下方式添加它。 + +``` +export PATH=$PATH:/usr/bin +``` + +然后注销并登录查看效果。 + +### 总结 + +我希望这个指南能帮助你解决 Linux 发行版中的 sudo 错误。表面上的解决方案很简单,真的。 + +如果有帮助,或者如果你有任何问题,请在下面留言。 + +> **[参考][3]** + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/sudo-command-not-found/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[geekpi](https://github.com/geekpi) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/category/distributions +[2]: https://www.debugpoint.com/wp-content/uploads/2022/09/Updating-the-sudoers-file-using-visudo.jpg +[3]: https://linux.die.net/man/8/sudo +[0]: https://img.linux.net.cn/data/attachment/album/202211/23/095652r00yigyouzgo838c.jpg \ No newline at end of file diff --git a/published/202211/20221110.1 ⭐️ How to Fix bash wget Command Not Found Error.md b/published/202211/20221110.1 ⭐️ How to Fix bash wget Command Not Found Error.md new file mode 100644 index 0000000000..a5e7f9cc32 --- /dev/null +++ b/published/202211/20221110.1 ⭐️ How to Fix bash wget Command Not Found Error.md @@ -0,0 +1,120 @@ +[#]: subject: "How to Fix: bash wget Command Not Found Error" +[#]: via: "https://www.debugpoint.com/wget-not-found-error/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15274-1.html" + +如何修复:“bash wget Command Not Found” 错误 +====== + +![][0] + +> 以下是你如何在 Debian、Ubuntu 和其他发行版中修复 “bash: wget command not found” 的错误。 + +著名的 `wget` 工具被用来通过终端从 URL 下载任何文件。它是 Linux 终端中最流行和最快速的工具之一。 + +作为一个 GNU 工具,`wget` 带来了一些奇妙的功能。你可以实现各种目的,如从网上提取信息、下载文件、暂停/恢复等。 + +然而,许多 [Linux 发行版][1] 在默认安装时并没有附带这个工具。因此,当你想用 `wget` 下载一些文件时,你会得到 wget 命令未找到的错误。 + +修复它其实很容易。 + +### 修复 wget 命令未找到 + +你所需要做的就是打开终端,运行以下命令来安装 `wget`。 + +对于 Ubuntu、Linux Mint、elementaryOS、Debian 和相关发行版: + +``` +sudo apt install wget +``` + +Arch Linux: + +``` +pacman -S wget +``` + +对于 Fedora(虽然它默认包括): + +``` +sudo dnf install wget +``` + +安装后,你就可以使用 `wget` 程序了。你也可以通过检查其版本来验证它是否正确安装。 + +``` +wget --version +``` + +### 如何使用 wget + +下面是一些关于如何使用 `wget` 的例子。 + +命令的语法如下: + +``` +wget [选项]… [URL]… +``` + +例如,如果我想下载 Ubuntu 的 ISO 文件,那么我可以运行下面的命令,用 URL 直接下载。 + +``` +wget https://releases.ubuntu.com/22.04.1/ubuntu-22.04.1-desktop-amd64.iso +``` + +![如何使用 wget 的例子][2] + +同样,你也可以使用上述命令下载,或者,通过下面描述的几个开关组合。你也可以通过 `wget --help` 命令得到这个: + +- `-t, --tries=NUMBER` 设置重试次数为 `NUMBER`(0 为不限) +- `--retry-connrefused` 即使连接被拒绝,也要重试 +- `--retry-on-http-error=ERRORS` 逗号分隔的 HTTP 错误列表,以便重试 +- `-O, --output-document=FILE` 将文件写入 `FILE` 中 +- `--nc, --no-clobber` 跳过那些会下载到现有文件的下载(即覆盖它们) +- `--no-netrc` 不要试图从 `.netrc` 中获取证书 +- `-c, --continue` 继续已部分下载的文件 +- `--start-pos=OFFSET` 从 `OFFSET` 位置开始下载 +- `--progress=TYPE` 选择进度条类型 +- `--show-progress` 在详细模式下显示进度条 +- `--N, --timestamping` 不重新获取文件,除非比本地文件新 +- `--no-if-modified-since` 在时间戳模式下不使用条件性的 `if-modified-since` 获取请求的资源 +- `--no-use-server-timestamps` 不以服务器上的时间戳来设置本地文件的时间戳 +- `--S, --server-response` 打印服务器响应 +- `--spider` 不下载任何东西 +- `-T, --timeout=SECONDS` 设置所有的超时值为 `SECONDS` 秒 +- `--dns-timeout=SECS` 将 DNS 查询超时设置为 `SECS` +- `--connect-timeout=SECS` 将连接超时设置为 `SECS` +- `--read-timeout=SECS` 设置读取超时为 `SECS` +- `--w, --wait=SECONDS` 在两次检索之间等待 `SECONDS` 秒(适用于检索的 URL 超过 1个) +- `--waitretry=SECONDS` 在检索的重试之间等待 1 到 `SECONDS` 秒(适用于检索的 URL 超过 1 个) +- `--random-wait` 在两次检索之间等待 `0.5WAIT` 到 `1.5WAIT` 秒(适用于检索的 URL 超过 1 个) + +### 总结 + +我希望这个指南能帮助你解决 Linux 发行版中的 `wget` 错误。显然方案是非常简单的。 + +如果有帮助或者你有任何问题,请在下面留言。 + +> **[参考][3]** + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/wget-not-found-error/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[geekpi](https://github.com/geekpi) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/category/distributions +[2]: https://www.debugpoint.com/wp-content/uploads/2022/09/Sample-example-of-how-to-use-wget.jpg +[3]: https://www.gnu.org/software/wget/ +[0]: https://img.linux.net.cn/data/attachment/album/202211/21/095343hnxjfinvbpzf2x5f.jpg \ No newline at end of file diff --git a/published/202211/20221111.0 ⭐️ How to Install LibreOffice Base Database in Ubuntu and Other Linux.md b/published/202211/20221111.0 ⭐️ How to Install LibreOffice Base Database in Ubuntu and Other Linux.md new file mode 100644 index 0000000000..c30fbaca71 --- /dev/null +++ b/published/202211/20221111.0 ⭐️ How to Install LibreOffice Base Database in Ubuntu and Other Linux.md @@ -0,0 +1,68 @@ +[#]: subject: "How to Install LibreOffice Base Database in Ubuntu and Other Linux" +[#]: via: "https://www.debugpoint.com/install-libreoffice-base-ubuntu/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15283-1.html" + +如何在 Ubuntu 和其他 Linux 下安装 LibreOffice Base 数据库 +====== + +![][0] + +> 以下是如何在 Ubuntu 和其他 Linux 发行版中安装 LibreOffice Base 数据库模块。 + +流行的自由开源的办公套件 LibreOffice 由六个独立的组件组成。然而,Ubuntu 和相关发行版中默认安装的 LibreOffice 只包括其中的五个: + +- Calc +- Writer +- Impress +- Draw +- Math + +由于某些原因,数据库模块 LibreOffice Base 没有被包括在内。所以,这里告诉你如何在 Ubuntu 和其他发行版中单独安装它。 + +### 在 Ubuntu 和其他 Linux 中安装 LibreOffice Base + +你可以使用 “软件Software” 应用或终端来安装 `libreoffic-base` 包。我建议使用终端来安装它。打开一个终端窗口,运行以下命令来安装它。 + +``` +sudo apt install libreoffice-base +``` + +如果你喜欢 “软件Software” 应用 或其他基于 GUI 的安装程序,搜索 “libreoffic-base” 并点击安装。 + +对于 Fedora 和基于 RPM 的发行版,使用以下命令: + +``` +sudo dnf install libreoffice-base +``` + +如果你在 Arch Linux 中安装了 LibreOffice,无论是 [libreoffic-fresh][1] 还是 [libreoffic-still][2],那么就不需要任何操作了。LibreOffice Base 已经包含在这两个软件包中了。你可以开始使用了。 + +在另一个方面,如果你想看看如何安装最新的 LibreOffice,请查看 [这个指南][3]。 + +![在 Ubuntu 中安装 Libreoffice Base][4] + +最后,安装完毕后,你可以在应用菜单中找出 LibreOffice Base。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/install-libreoffice-base-ubuntu/ + +作者:[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://archlinux.org/packages/extra/x86_64/libreoffice-fresh/ +[2]: https://archlinux.org/packages/extra/x86_64/libreoffice-still/ +[3]: https://www.debugpoint.com/install-latest-libreoffice-ubuntu-linux/ +[4]: https://www.debugpoint.com/wp-content/uploads/2022/11/Install-Libreoffice-Base-in-Ubuntu.jpg +[0]: https://img.linux.net.cn/data/attachment/album/202211/24/111503yhkq3mihfxkxsh1v.jpg \ No newline at end of file diff --git a/published/202211/20221111.1 ⭐️ How to Install FFmpeg in Ubuntu and Other Linux.md b/published/202211/20221111.1 ⭐️ How to Install FFmpeg in Ubuntu and Other Linux.md new file mode 100644 index 0000000000..8b4e3da3ed --- /dev/null +++ b/published/202211/20221111.1 ⭐️ How to Install FFmpeg in Ubuntu and Other Linux.md @@ -0,0 +1,174 @@ +[#]: subject: "How to Install FFmpeg in Ubuntu and Other Linux" +[#]: via: "https://www.debugpoint.com/install-ffmpeg-ubuntu/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "Cubik65536" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15269-1.html" + +如何在 Ubuntu 和其他 Linux 发行版中安装 FFmpeg +====== + +![][0] + +> 本教程讲述了在 Ubuntu 和其他 Linux 系统中安装 FFmpeg 所需的步骤。 + +FFmpeg 是一系列用于操作多媒体文件的库和软件程序。整个 FFmpeg 是一组强大的库,允许你转换、推流和操作音频和视频文件。许多前端 Linux 应用程序将其用作后端并依赖它。例如,屏幕录制应用程序可能需要 FFmpeg 将录制的流转换为 Gif 图像。 + +主流的应用程序和服务,如 VLC 媒体播放器、YouTube、Blender、Kodi、Shotcut 和 Handbrake 等,都使用 FFmpeg。 + +> 趣事:NASA 2020 年发射的毅力号火星探测器使用 FFmpeg 完成和处理图像和视频,然后将其发送回地球! + +### 关于 FFmpeg 包 + +[FFmped][1] 是一个强大的命令行工具。它支持 Linux、Windows 和 macOS,并支持多种架构。它是用 C 和汇编编写的,提供了强大的性能和跨平台实用性。 + +#### 核心 + +FFmpeg 的核心是命令行实用程序。它们可以在命令行上使用,也可以从任何编程语言中调用。例如,你可以从 Shell 程序、Python 脚本等程序中使用它们。 + +- `ffmpeg`:用于转换音频和视频流,包括来自 TV 卡等实时流的源 +- `ffplay`:此软件包中捆绑的媒体播放器,用于播放媒体 +- `ffprobe`:命令行工具,用于显示媒体信息 - 可以以 txt、csv、xml、json 格式输出 + +### FFmpeg 安装 + +在 Ubuntu 和其他 Linux 发行版中安装 FFmpeg 很容易。打开终端并运行以下命令以安装。 + +#### Ubuntu 以及相似的发行版 + +``` +sudo apt install ffmpeg +``` + +#### Fedora + +对于 Fedora Linux,你需要添加 [RPM Fusion repo][2]。Fedora 官方仓库没有 FFmpeg 包。 + +``` +sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm +``` + +``` +sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree- +``` + +``` +sudo dnf install ffmpeg +``` + +#### Arch Linux + +``` +pacman -S ffmpeg +``` + +在安装完成后,你可以使用以下命令验证安装。 + +``` +ffmpeg --version +``` + +![Ubuntu Linux 中安装的 FFmpeg][3] + +### 示例:ffmpeg 的基础用法 + +首先,让我给你一个简单的例子。考虑以下示例。它只是将 mp4 文件转换为 mkv 文件。 + +1、转换一个基本的视频文件 + +``` +ffmpeg -i big_buck_bunny.mp4 big_buck_bunny.mkv +``` + +当然,这是最简单的方法,但它不完整,因为它没有转换所需的视频文件的比特率、分辨率和其他属性。 + +2、转换一个音频文件 + +其次,你可以使用类似的命令转换音频文件。 + +``` +ffmpeg -i sunny_day.ogg sunny_day.mp3 +``` + +3、使用音频和视频编解码器转换 + +最后,以下示例可以使用指定的编解码器转换视频文件。参数 `-c` 带有的 `a` 或 `v` 分别定义音频和视频。下面的命令使用 `libvpx` 视频和 `libvorbis` 音频编解码器进行转换。 + +``` +ffmpeg -i big_buck_bunny.mp4 -c:v libvpx -c:a libvorbis big_buck_bunny.webm +``` + +### 如何找出系统中可用的编解码器,编码器和解码器? + +#### 列出所有编解码器 + +要列出所有可用的编解码器,请运行以下命令: + +``` +ffmpeg -codecs +``` + +该命令列出了所有可用的编解码器及其功能,是否支持解码或编码等。此外,它们根据下表的位置进行标识。 + +``` +D..... = Decoding supported +.E.... = Encoding supported +..V... = Video codec +..A... = Audio codec +..S... = Subtitle codec +...I.. = Intra frame-only codec +....L. = Lossy compression +.....S = Lossless compression +``` + +![FFmpeg 编解码器列表][4] + +#### 列出所有编码器 + +通过以下命令列出所有编码器: + +``` +ffmpeg -encoders +``` + +#### 列出所有解码器 + +同样的,你可以通过以下命令获取解码器列表: + +``` +ffmpeg -decoders +``` + +#### 详细信息 + +你还可以使用参数 `-h` 获取编码器或解码器的更多详细信息。 + +``` +ffmpeg -h decoder=mp3 +``` + +### 总结 + +我希望你学会了 FFmpeg 和它的命令的基础知识。你可以通过 [官方文档][5] 了解更多有关该程序的信息。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/install-ffmpeg-ubuntu/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[Cubik65536](https://github.com/Cubik65536) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://ffmpeg.org/ +[2]: https://www.debugpoint.com/2020/07/enable-rpm-fusion-fedora-rhel-centos/ +[3]: https://www.debugpoint.com/wp-content/uploads/2022/06/FFmpeg-installed-in-Ubuntu-Linux.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2022/06/FFmpeg-Codec-list.jpg +[5]: https://ffmpeg.org/documentation.html +[0]: https://img.linux.net.cn/data/attachment/album/202211/19/162251wxt2kaajvvayar8c.jpg \ No newline at end of file diff --git a/published/202211/20221111.2 ⭐️⭐️ How to Install Elementary OS’s Pantheon Desktop in Arch Linux.md b/published/202211/20221111.2 ⭐️⭐️ How to Install Elementary OS’s Pantheon Desktop in Arch Linux.md new file mode 100644 index 0000000000..809730e839 --- /dev/null +++ b/published/202211/20221111.2 ⭐️⭐️ How to Install Elementary OS’s Pantheon Desktop in Arch Linux.md @@ -0,0 +1,181 @@ +[#]: subject: "How to Install Elementary OS’s Pantheon Desktop in Arch Linux" +[#]: via: "https://www.debugpoint.com/pantheon-arch-linux-install/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15293-1.html" + +如何在 Arch Linux 中安装 elementary OS 的 Pantheon 桌面 +====== + +![][0] + +> Pantheon 是 elementary OS 的默认桌面环境。本快速指南解释了在 Arch Linux 中安装 Pantheon 桌面环境的步骤。 + +Pantheon 是 elementary OS 使用的一个漂亮的桌面环境。它基于 GTK3(GTK4 移植正在进行中)和 Vala,是一个漂亮而干净的桌面,为你提供了一个精致的 Linux 桌面体验。 + +该桌面主要由 elementary OS 使用。elementary OS 提供了 Pantheon 桌面的修改版,它是基于 GNOME 的。 + +elementary OS 基于 Ubuntu LTS 版本。因此,在基于 Ubuntu 的发行版中安装 Pantheon 桌面是超级容易的。这意味着如果你想在不安装 elementary OS 的情况下体验 Pantheon,在 Ubuntu 中这只需要一两个命令就可以安装。 + +在 Fedora 中,你也可以使用组包进行安装。然而,一个以 Fedora 为基础,名为 [Ultramarine Linux][1] 的发行版默认提供了它。 + +但是,在 Arch Linux 中安装 Pantheon 需要一些工作。它不是用简单的 `pacman` 命令就能直接完成的,而且不能开箱即用。需要一些配置,这可能会破坏你的系统。 + +这里我给你提供了在 Arch Linux 中安装 Pantheon 桌面的指南和步骤。 + +**警告:** 第一次可能不顺利,所以我建议你在物理系统上安装前先在虚拟机上进行。因为在 Arch 中安装 Pantheon 并不像在 Arch Linux 中安装 GNOME、Xfce 和 KDE Plasma 桌面那样流畅。它还需要一些额外的手动配置。 + +下面是在 Arch Linux 中安装 Pantheon 桌面的步骤。 + +### 在 Arch Linux 中安装 Pantheon 桌面 + +#### 第 1 步:安装基础系统 + +确保你按照 [本指南的自动 archinstall 脚本][2] 安装了 Arch Linux 基础系统。如果你已经在完成了 Arch 安装,你可以跳过这一步,按照下一步进行。 + +#### 第 2 步:更新你的系统 + +在你的 Arch 中打开一个终端。并通过运行以下命令确保系统是最新的: + +``` +pacman -Syu +``` + +#### 第 3 步:安装 yay AUR 助手 + +Pantheon 所需的许多包在 Arch 官方仓库中不可用。它们存在于 Arch 用户仓库(AUR)中。因此你需要安装 `yay` 以获得额外的软件包。按照 [本指南安装 yay AUR 助手][3]。 + +#### 第 4 步:在 Arch Linux 中安装 Pantheon 桌面 + +使用以下命令安装以下软件包。这些是 Arch 官方仓库中可用的必需软件包,包括所有必要的组件、wingpanel、图标和壁纸。 + +- [pantheon][4] +- lightdm-pantheon-greeter +- sound-theme-elementary +- switchboard +- lightdm-gtk-greeter +- elementary-icon-theme +- elementary-wallpapers +- pantheon-applications-menu +- wingpanel-indicator-session +- wingpanel-indicator-datetime + +``` +pacman -S --needed pantheon lightdm-pantheon-greeter sound-theme-elementary switchboard lightdm-gtk-greeter elementary-icon-theme elementary-wallpapers pantheon-applications-menu wingpanel-indicator-session wingpanel-indicator-datetime inter-font firefox +``` + +从 Arch 用户仓库安装以下包。这些是 Arch 官方仓库中不可用的一些附加包。这些可能需要一些时间来安装。 + +- pantheon-session-git +- gnome-settings-daemon-elementary +- pantheon-default-settings +- switchboard-plug-pantheon-tweaks-git +- urutau-icons-git +- pantheon-dock-git + +``` +yay -S pantheon-session-git pantheon-default-settings switchboard-plug-pantheon-tweaks-git urutau-icons-git pantheon-dock-git +``` + +下一步是安装显示服务器和管理器。使用 `lightdm` 作为 Arch 中 Pantheon 的显示管理器。我尝试将其他显示管理器与 Pantheon 一起使用,但结果并不理想。 + +``` +pacman -S --needed xorg lightdm +``` + +#### 第 5 步:配置 + +默认欢迎程序需要一些修改。运行以下命令以检查可用会话。 + +``` +ls -1 /usr/share/xgreeters +``` + +![greeters 列表][5] + +打开 lightdm 配置文件并将 `greeter-session` 更改为 `io.elementary.greeter`。 + +``` +sudo nano /etc/lightdm/lightdm.conf +``` + +``` +greeter-session=io.elementary.greeter +``` + +保存并关闭文件(`CTRL+O`、`回车` 和 `CTRL+X`)。 + +![lightdm 配置][6] + +在 systemd 中启用显示管理器和网络管理器。 + +``` +systemctl enable lightdmsystemctl enable NetworkManager +``` + +重启系统。 + +``` +systemctl reboot +``` + +如果一切顺利,你应该会看到以下登录屏幕(我知道,它看起来一点也不酷)。从顶部下拉菜单更改会话并使用用户名和密码登录。 + +![Pantheon 在 Arch 中的登录页面][7] + +#### 第 6 步:安装后配置 + +当我第一次登录到我的测试系统时,很多东西都不起作用。以下是列表及其可能的解决方案。 + +a、**壁纸**:壁纸模块似乎根本不起作用。因此,默认情况下没有壁纸。甚至“更改壁纸”选项也没有打开。如果遇到这种情况,请安装 `dconf` 编辑器并通过以下步骤更改壁纸。 + +``` +pacman -S --needed dconf-editor +``` + +接着从菜单启动 dconf 编辑器。进入 `org > gnome > desktop > background > picture-uri`。关闭默认值并添加自定义值 `file:////usr/share/backgrounds/Ashim DSilva.jpg`。你也可以使用任何其他图像。保存并关闭。 + +![使用 dconf-editor 更改背景属性][8] + +b、**图标**:通过 “设置Settings > 优化Tweaks” 更改图标。然后将图标和光标更改为 `urutau-icons`。 + +在完成所有配置和安装之后,你应该已经在 Arch Linux 中设置了 Pantheon 桌面。这是我的测试机的截图。 + +![Arch Linux 中的 Pantheon 桌面][9] + +### 结束语 + +我希望本指南能帮助你最终在 Arch Linux 中安装 Pantheon 桌面。我花了几天时间才终于能够将各个部分组合在一起并使它们发挥作用。 + +尽管一些小功能仍然无法使用,但有一个可用的 Pantheon 桌面。 + +唯一让我惊喜的是 Pantheon 在 Arch 中的表现。在我的同一台测试机上,elementary OS 安装不是那么快。但 Pantheon 基础版在 Arch 中的速度比原始 elementary OS 快。如果你喜欢 Pantheon,可以试试。 + +如果你遇到任何错误,请使用下面的评论栏告诉我。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/pantheon-arch-linux-install/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[ ](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/ultramarine-linux-36/ +[2]: https://www.debugpoint.com/archinstall-guide/ +[3]: https://www.debugpoint.com/install-yay-arch/ +[4]: https://wiki.archlinux.org/index.php/Pantheon +[5]: https://www.debugpoint.com/wp-content/uploads/2021/02/greeters-list.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2021/02/lightdm-conf.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2021/02/Login-screen-Pantheon-in-Arch.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2021/02/Change-background-property-using-dconf-editor.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2021/02/Pantheon-Desktop-in-Arch-Linux-1.jpg +[0]: https://img.linux.net.cn/data/attachment/album/202211/27/104052h7iwfcw4larkio1i.jpg \ No newline at end of file diff --git a/published/202211/20221111.5 ⭐️⭐️ How to switch from Twitter to Mastodon.md b/published/202211/20221111.5 ⭐️⭐️ How to switch from Twitter to Mastodon.md new file mode 100644 index 0000000000..b38a52944f --- /dev/null +++ b/published/202211/20221111.5 ⭐️⭐️ How to switch from Twitter to Mastodon.md @@ -0,0 +1,118 @@ +[#]: subject: "How to switch from Twitter to Mastodon" +[#]: via: "https://opensource.com/article/22/11/switch-twitter-mastodon" +[#]: author: "Jessica Cherry https://opensource.com/users/cherrybomb" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: " " +[#]: url: " " + +如何从 Twitter 切换到 Mastodon +====== + +> Mastodon 是一个开源的微博社区。 + +像许多人一样,我发现社交媒体有些令人兴奋,而且……有点过分。有时,你会陷入到算法、跟踪数据和针对你的广告中。你对想要查看的内容缺乏管理控制,尤其是在我们许多人习惯的旧平台上。像往常一样,你必须寻求开源来解决问题。而这正是开源微博社区 [Mastodon][1] 所做的。 + +使用 Mastodon 社交,你不仅是在使用开源软件,而且一切都是去中心化的,这意味着你可以部分地根据你想要使用的实例来选择你想要查看的内容。 Mastodon 使用不同的实例,每个实例都有自己的行为准则、隐私选项和审核政策。这意味着当你加入一个实例时,你不太可能看到你不感兴趣的内容,而更有可能看到来自与你有共同兴趣的人的消息。 + +但是,你也可以与其他实例进行交互。所有 Mastodon 实例都能在用户称之为 “联邦宇宙fediverse” 的地方 “联合”。 + +### 什么是联邦宇宙? + +“联邦宇宙fediverse” 是联合(互连)服务器的集合。这个词来自 “联邦federated” 和 “宇宙universe” 的组合。你可以将其用于各种网络发布,从社交网络到网站再到文件托管。虽然每个实例都是独立托管的,但它们可以相互通信。 + +### 那么我该如何注册 Mastodon? + +首先,前往 [Mastodon.social][2] 进行注册。 + +在屏幕的右侧,有 “登录Sign in” 和 “创建帐户Create account” 按钮。 + +![Sign-in or Create Account interface][3] + +但是,因为任何人都可以运行 Mastodon 服务器,所以有很多实例,并且一些服务器已经成为社区的所在地,这些社区的兴趣可能与你的兴趣一致。正如我所说的,无论如何你都可以访问整个联邦宇宙,但如果能在一个人们已经“说你的语言”的服务器上开始,那就更好了(也可以是字面意思,因为你可以添加一个过滤器以查找使用你的母语的服务器)。 + +要查找服务器,请单击 “查找另一台服务器Find another server”按钮。 + +![Signing up interface][4] + +当你单击该按钮时,你将进入 [加入 Mastodon 页面][5],其中有一个列出可用服务器的按钮。 + +![Getting started interface][6] + +向下滚动时,你可以在左侧选择一个主题,以帮助你找到希望托管的位置。 + +![Topic list][7] + +我的主题都是关于开源的,所以让我们看看我们在技术主题中有什么。 + +![Technology topics][8] + +如你所见,有一个包含许多等候名单的大型索引。在这种情况下,Opensource.com 的一位作者 Don Watkins 似乎选择了一个适合他自己和我们天才小组的实例。因此,我将跳过并告诉你我要去哪里:有一个名为 [Fosstodon][9] 的自由开源软件服务器,我选择在那里注册,这样我就可以自由分享我的文章。 + +以下是登录步骤。 + +首先,输入你的信息: + +![Steps for signing in][10] + +接下来,你会收到有关确认电子邮件的消息: + +![Confirmation message][11] + +当你收到邮件时,点击 “验证Verify” 按钮,系统会提示你确认你的登录信息。 + +该服务器确实有申请加入的过程。这个过程不仅是出于安全原因,也是为了隐私。获得批准后,你就会收到这封很棒的电子邮件! + +![Welcome message][12] + +我保留了其他社交媒体场所的地址,因此很容易从一个地方来回移动到另一个地方,并通过复制和 API 调用交叉发布。 + +### 完全控制 + +现在我有了一个新的个人资料页,我可以更改我收到的电子邮件的偏好,从而更好地控制我看到的内容。这是让我对媒体接收有更多控制权的好方法,非常感谢。单击 “偏好Preferences” 后,Mastodon 会为我提供炫酷的外观、语言信息和许多其他选项。 + +![Appearance settings][13] + +接下来,我可以点击 “通知Notifications” 并限制我看到的内容和收到通知的内容,这样我就可以选择更少的噪音。 + +![Notifications settings][14] + +在没有算法干预的情况下完全控制我的媒体非常棒。你还可以为个人资料上的内容设置特色主题标签,以关注长期项目或让人们通过关注这些主题标签找到你。你还可以选择过滤器、关注者等等。 + +### 总结 + +这种开源社交媒体是找到你的人群并与兴趣广泛的人进行广泛互动的好方法。控制媒体摄入量对于你生活中的某种平衡非常有用,你可以查看 [贡献者规则][15] 选择加入贡献。 + +除了控制你自己的社交媒体体验外,你还可以获得适用于所有设备的手机应用,包括适用于 iPhone 的 Toot 和适用于 Android 的 Tusky。 + +总而言之:我认为我们都应该做好新的开源社交媒体世界的准备。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/switch-twitter-mastodon + +作者:[Jessica Cherry][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/cherrybomb +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/22/11/twitter-vs-mastodon +[2]: https://mastodon.social/ +[3]: https://opensource.com/sites/default/files/2022-11/1signin-createaccount.png +[4]: https://opensource.com/sites/default/files/2022-11/2signingup.png +[5]: https://joinmastodon.org/servers +[6]: https://opensource.com/sites/default/files/2022-11/3gettingstarted.png +[7]: https://opensource.com/sites/default/files/2022-11/4topics.png +[8]: https://opensource.com/sites/default/files/2022-11/5techtopic.png +[9]: https://fosstodon.org/ +[10]: https://opensource.com/sites/default/files/2022-11/6signin.jpg +[11]: https://opensource.com/sites/default/files/2022-11/7confirmation.png +[12]: https://opensource.com/sites/default/files/2022-11/8welcome.png +[13]: https://opensource.com/sites/default/files/2022-11/9appearance.png +[14]: https://opensource.com/sites/default/files/2022-11/10notifications.png +[15]: https://github.com/mastodon/mastodon/blob/main/CONTRIBUTING.md diff --git a/published/202211/20221112.0 ⭐️ Learn Python 7 of my favorite resources.md b/published/202211/20221112.0 ⭐️ Learn Python 7 of my favorite resources.md new file mode 100644 index 0000000000..8f359d285a --- /dev/null +++ b/published/202211/20221112.0 ⭐️ Learn Python 7 of my favorite resources.md @@ -0,0 +1,82 @@ +[#]: subject: "Learn Python: 7 of my favorite resources" +[#]: via: "https://opensource.com/article/22/11/learn-python" +[#]: author: "Don Watkins https://opensource.com/users/don-watkins" +[#]: collector: "lkxed" +[#]: translator: "Cubik65536" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15267-1.html" + +学习 Python:我最喜欢的 7 个资源 +====== + +![](https://img.linux.net.cn/data/attachment/album/202211/19/105720mfgygbzyg3ccttce.jpg) + +> 这些年来,我通过这些开源资源提高了我的 Python 技能。 + +我最近决定进一步学习 Python,以便提高我的教学技能,拓宽我的学生的视野。在这个过程中,我发现了这些优秀的资源,让我学习新的代码,并提高了对 Python 的整体理解。 + +### 1、《教孩子学编程 Python 语言版》 + +我的 Python 之旅大约是 7 年前开始的,当时我发现了 Apple LOGO 和 Python 中的 [Turtle 模块][1] 之间的联系。当时使用的 Linux 计算机的默认 Python 版本为 Python 2.7,我很快发现我想使用 Python 3。我成功地安装了它,并开始使用 Turtle 模块编写一些简单的程序。在阅读 Dr. Bryson Payne 的 《[教孩子学编程 Python 语言版][2]》 之后,我意识到 Python 不仅仅是 Turtle。那时我安装了 [IDLE][3]。 + +### 2、IDLE + +在使用 IDLE 工作的过程中,交互式界面优化了我的体验,并让我有足够的信心来考虑向学生教授 Python。我志愿帮助我社区中的一群在家学习的孩子,很快我发现自己在教授一个有十六个孩子的班级!我很高兴他们的父母同意帮助我,否则我想我会被压垮。这个经历激发了我学习更多的欲望,以便我可以教授更多。 + +### 3.、Mu 编辑器 + +2018 年春天,我参加了 PyConUS。我听了一场由中学老师 [Nicholas Tollervey][4] 主讲的演讲,他为学龄前儿童编写了一个 Python 开发环境。[Mu 编辑器][5] 内置了一个可以帮助我找到代码中的错误的 质检工具Linter。Mu 帮助我提高了我的编码技能,我也能够与学生分享这些技能,他们也从中受益。 + +我的自信和经验增长后,我希望与更多的学生分享 Python 之旅。我与其他人合作撰写了一个申请书,以教授一个使用树莓派 4 和 Python 的课程。疫情打断了这个计划。在此期间,树莓派基金会发布了树莓派 400。2021 年春天,我使用了前一年开发的材料和一个来自当地图书馆的慷慨的资助,来 [教授两组][6] 学生如何编程。这个活动非常成功并在今年再次举办。 + +### 4、Codium + +几年前,我了解到微软的 VS Code 是一个可以在 Linux 上使用的开源代码编辑器。我最近才了解到,如何在 VS Code 中配置和使用 Python 虚拟环境。我的问题在一篇 [关于虚拟环境的文章][7] 中得到了解答,这让我可以知道如何在 Linux 计算机上设置和配置 Python 虚拟环境。大约在同一时间,我发现了 [Codium][8],一个围绕 VS Code 构建的社区项目。 + +现在我希望与我的学生分享 VS Codium 的体验,并让他们对 Python 的理解不再局限于 Turtle 模块。这种学习的热情让我寻找开源且可以在互联网上随意获得的教学资源。 + +### 5、《Python 编程练习,简单解释》 + +《[Python 编程快速上手 让繁琐工作自动化][9]》 这本书是我最喜欢的一本书。现在,作者已经发布了 《[Python 编程练习,简单解释][10]》。这两本书都可以免费在线阅读,并且都采用了知识共享许可证。 + +### 6、《每个人都可以使用 Python》 + +Dr. Charles Severance 在 2017 年发布了 《[每个人都可以使用 Python][11]》,我非常推荐这本书。他为像我这样的有抱负的程序员提供了简短的课程。课程的代码可以在 [GitHub][12] 上找到,所以你可以下载它并在自己的计算机或学校网络上安装它。 + +### 7. Python 视频 + +最近,我了解到 [Jay LaCroix][13] 在 YouTube 上有一系列精彩的视频,其中包括 28 个免费视频,从 Python 基础开始,涵盖了 [Python 编程][14] 的全面介绍。最重要的是,他使用的是 Linux 计算机,因此他的课程特别适合 Linux 编程环境。这些视频的其中一个收获是学习如何使用 [nano][15] 作为编程环境,它默认情况下包含在大多数 Linux 发行版中。 + +### 你的学习之路 + +此处提到的这七个资源帮助我成长为一名程序员,它们都是开源的并可以与其他人分享。你是如何提高编程技能的?你有什么要分享的吗?在评论中告诉我们。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/learn-python + +作者:[Don Watkins][a] +选题:[lkxed][b] +译者:[Cubik65536](https://github.com/Cubik65536) +校对:[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/lkxed +[1]: https://opensource.com/article/21/9/logo-python-turtle +[2]: https://opensource.com/education/15/9/review-bryson-payne-teach-your-kids-code +[3]: https://docs.python.org/3/library/idle.html +[4]: https://us.pycon.org/2018/speaker/profile/194/ +[5]: https://opensource.com/article/20/9/teach-python-mu +[6]: https://opensource.com/article/21/6/teach-python-raspberry-pi +[7]: https://opensource.com/article/20/10/venv-python +[8]: https://opensource.com/article/22/11/python-vs-code-codium +[9]: https://automatetheboringstuff.com/#toc +[10]: https://inventwithpython.com/pythongently/ +[11]: https://www.py4e.com/lessons +[12]: https://github.com/csev/py4e +[13]: https://opensource.com/users/jlacroix +[14]: https://youtube.com/playlist?list=PLT98CRl2KxKGIazPd2nQEPbG7sQpT8LEj +[15]: https://opensource.com/article/20/12/gnu-nano diff --git a/published/202211/20221115 Announcing Fedora Linux 37.md b/published/202211/20221115 Announcing Fedora Linux 37.md new file mode 100644 index 0000000000..4ce0157c9f --- /dev/null +++ b/published/202211/20221115 Announcing Fedora Linux 37.md @@ -0,0 +1,85 @@ +[#]: subject: "Announcing Fedora Linux 37" +[#]: via: "https://fedoramagazine.org/announcing-fedora-37/" +[#]: author: "Matthew Miller https://fedoramagazine.org/author/mattdm/" +[#]: collector: "lujun9972" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15258-1.html" + +Fedora Linux 37 发布 +====== + +![][1] + +今天我很兴奋地与大家分享成千上万的 Fedora 项目贡献者的辛勤工作成果:Fedora Linux 37 版本来了!让我们看看这个最新版本给你带来了什么。一如既往,在从以前的版本升级之前,你应该确保你的系统是完全最新的。迫不及待地想开始了吗?在你阅读的同时 [下载][2]! + +> **[下载 Fedora Linux 37][2]** + +### 两个新的版本 + +Fedora 的各个“版本Edition”是针对某一特定“市场”的旗舰产品。在 Fedora Linux 37 中,我们增加了两个新版本:Fedora CoreOS 是你可能还记得的 Atomic Host 的后续版本。从 Project Atomic 和 CoreOS 的初始的工作中汲取营养,它提供了一种自动更新机制,以托管基于容器的工作负载。通过原子更新和简单的回滚,它为你的基础设施增加了安全感。 + +Fedora Cloud 也作为一个版本回来了。云计算工作组的活动已经重新开始了。Cloud 版本提供了一个很棒的 Fedora 基础,可以在你喜欢的公共或私有云中运行。AMI 将在本周晚些时候在 AWS 市场上提供,在社区频道上现在已经可以使用。请查看 [此网站][3] 以了解可以在其他云供应商或你自己的云上运行的镜像! + +### 桌面的改进 + +Fedora Workstation 专注于桌面体验。像往常一样,Fedora Workstation 采用了最新的 GNOME 版本。[GNOME 43][4] 在设置中包括一个新的设备安全面板,为用户提供关于系统中硬件和固件的安全信息。在上一个版本的基础上,更多的 GNOME 核心应用程序被移植到了最新版本的 GTK 工具包,提供了更好的性能和现代的外观。  + +在这个版本中,我们做了一些改变,让你的安装变得更精简。我们把 Firefox 浏览器的语言包分成了子包。这意味着如果你不需要本地化,你可以删除 `firefox-langpacks` 包。gettext 的运行包(帮助其他包产生多语言文本的工具)被分割成一个单独的、可选择的子包。 + +当然,我们生产的不仅仅是“版本”。Fedora [定制版][5]Spins[实验室][6]Labs 针对的是不同的受众和使用情况,包括 [Fedora Comp Neuro][7] ,它为计算神经科学提供工具,以及像 [Fedora LXQt][8] 这样的桌面环境,它提供一个轻量级桌面环境。而且,别忘了我们的备用架构。[ARM AArch64、Power 和 S390x][9]。 + +### 系统管理方面的改进 + +Fedora Server 现在可以生成一个 KVM 磁盘镜像,使在虚拟机中运行 Server 更加容易。如果你已经禁用了 SELinux(没关系 —— 我们仍然爱你!),你可以在影响较小的情况下重新开启它。自动标签现在以并行方式运行,使 “fixfiles” 操作更快。 + +为了跟上密码学的发展,这个版本引入了一个 `TEST-FEDORA39` 策略,预览了计划在未来版本中的变化。新策略之一是不再使用 SHA-1 签名。研究人员早就知道这种哈希值(就像之前的 MD5 一样)在许多安全方面的使用是不安全的。 + +在未来,我们可能会将 SHA-1 从 Fedora Linux 可接受的安全算法列表中移除。(正如 `TEST-FEDORA39` 这个名字所暗示的那样,也许最快也要到明年。)不过我们知道如今 SHA-1 哈希值仍然在使用。新的策略可以帮助你现在就测试你的关键应用程序,这样你就可以做好准备。请尝试一下,并让我们知道你在哪里遇到了问题。 + +说到密码学,openssl1.1 包现在已经废弃了。它还能用,但我们建议你更新你的代码,以使用 openssl 3。 + +### 其他更新 + +树莓派 4 现在在 Fedora Linux 中得到了正式支持,包括图形加速。在 ARM 的其他方面,Fedora Linux 37 放弃了对 ARMv7 架构(也被称为 arm32 或 armhfp)的支持。 + +在我们的“[First][10]”基础上,我们已经更新了关键的编程语言和系统库包,包括 Python 3.11、Golang 1.19、glibc 2.36 和 LLVM 15。 + +我们很高兴你能试用这个新版本!请到 下载。或者如果你已经在运行 Fedora Linux,请按照 [简易升级说明][11]。更多关于 Fedora Linux 37 的新功能的信息,请看 [发行说明][12]。 + +### 在不太可能发生的情况下... + +如果你遇到了问题,请访问我们的 [Ask Fedora][13] 用户支持论坛。这里有一个 [常见问题][14] 的分类。 + +### 谢谢大家 + +感谢在这个发布周期为 Fedora 项目做出贡献的成千上万的人。我们很高兴 Fedora 社区有你们。 + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/announcing-fedora-37/ + +作者:[Matthew Miller][a] +选题:[lujun9972][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://fedoramagazine.org/author/mattdm/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramag.wpenginepowered.com/wp-content/uploads/2022/11/f37-release-1-816x345.jpg +[2]: https://getfedora.org +[3]: https://getfedora.org/en/cloud/ +[4]: https://release.gnome.org/43/ +[5]: https://spins.fedoraproject.org/ +[6]: https://labs.fedoraproject.org/ +[7]: https://labs.fedoraproject.org/en/comp-neuro/ +[8]: https://spins.fedoraproject.org/en/lxqt/ +[9]: https://alt.fedoraproject.org/alt/ +[10]: https://docs.fedoraproject.org/en-US/project/#_first +[11]: https://docs.fedoraproject.org/en-US/quick-docs/upgrading/ +[12]: https://docs.fedoraproject.org/en-US/fedora/f37/release-notes/ +[13]: https://ask.fedoraproject.org/ +[14]: https://ask.fedoraproject.org/c/common-issues/141/none diff --git a/published/202211/20221118 How to rebase to Fedora Linux 37 on Silverblue.md b/published/202211/20221118 How to rebase to Fedora Linux 37 on Silverblue.md new file mode 100644 index 0000000000..24833b8085 --- /dev/null +++ b/published/202211/20221118 How to rebase to Fedora Linux 37 on Silverblue.md @@ -0,0 +1,104 @@ +[#]: subject: "How to rebase to Fedora Linux 37 on Silverblue" +[#]: via: "https://fedoramagazine.org/how-to-rebase-to-fedora-linux-37-on-silverblue/" +[#]: author: "Michal Konečný https://fedoramagazine.org/author/zlopez/" +[#]: collector: "lujun9972" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15290-1.html" + +如何在 Silverblue 上变基到 Fedora Linux 37 +====== + +![][1] + +Fedora Silverblue 是 [基于 Fedora Linux 构建的桌面操作系统][2]。它非常适合日常使用、开发和基于容器的工作流程。它提供了 [众多优势][3],例如能够在出现任何问题时回滚。如果你想在 Fedora Silverblue 系统上更新或变基到 Fedora Linux 37(这些说明与 Fedora Kinoite 类似),本文将告诉你如何操作。它不仅向你展示了该做什么,而且还向你展示了在发生不可预见的事情时如何恢复。 + +在实际对 Fedora Linux 37 进行变基之前,你应该应用任何待定的更新。在终端中输入以下内容: + +``` +$ rpm-ostree update +``` + +或通过 GNOME 软件Software 应用安装更新并重新启动。 + +### 使用 GNOME 软件应用变基 + +在更新页面上,GNOME 软件Software 应用向你显示有新版本的 Fedora Linux 可用。 + +![Fedora 37 更新可用][4] + +你需要做的第一件事是下载新镜像,因此请点击“下载Download”按钮。这需要一些时间。完成后,你将看到更新已准备好安装。 + +![Fedora 37 更新准备好安装][5] + +点击 “重启并更新Restart & Upgrade” 按钮。此步骤只需要几分钟,最后计算机将重启。重启后,你将获得全新的 Fedora Linux 37 版本。很简单,不是吗? + +### 使用终端变基 + +如果你喜欢在终端中完成所有操作,那么本指南的这一部分适合你。 + +使用终端变基到 Fedora Linux 37 很容易。首先,检查 37 分支是否可用: + +``` +$ ostree remote refs fedora +``` + +你应该在输出中看到以下内容: + +``` +fedora:fedora/37/x86_64/silverblue +``` + +如果你想置顶当前部署(该部署将作为 GRUB 中的选项保留,直到你删除它),你可以通过运行以下命令来完成: + +``` +# 0 is entry position in rpm-ostree status +$ sudo ostree admin pin 0 +``` + +要删除置顶部署,请使用以下命令: + +``` +# 2 is entry position in rpm-ostree status +$ sudo ostree admin pin --unpin 2 +``` + +其中 2 是 rpm-ostree 状态中的位置。 + +接下来,将你的系统重新设置为 Fedora Linux 37 分支。 + +``` +$ rpm-ostree rebase fedora:fedora/37/x86_64/silverblue +``` + +最后,要做的最后一件事是重新启动计算机并引导至 Fedora Linux 37。 + +### 如何回滚 + +如果发生任何不好的事情,例如,如果你根本无法启动到 Fedora Linux 37,这很容易回滚。在引导时选择 GRUB 菜单中的上一个条目(如果你没有看到它,请尝试在引导过程中按 `ESC`),你的系统将以切换到 Fedora Linux 37 之前的先前状态启动。要使此更改永久生效,请使用以下命令: + +``` +$ rpm-ostree rollback +``` + +就是这样。现在你知道如何将 Fedora Silverblue 变基到 Fedora Linux 37 并回滚。那么为什么不在今天做呢? + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/how-to-rebase-to-fedora-linux-37-on-silverblue/ + +作者:[Michal Konečný][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/zlopez/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramag.wpenginepowered.com/wp-content/uploads/2021/04/silverblue-rebase-816x345.jpg +[2]: https://docs.fedoraproject.org/en-US/fedora-silverblue/ +[3]: https://fedoramagazine.org/give-fedora-silverblue-a-test-drive/ +[4]: https://fedoramag.wpenginepowered.com/wp-content/uploads/2022/11/Screenshot-from-2022-11-15-11-11-32-1024x714.png +[5]: https://fedoramag.wpenginepowered.com/wp-content/uploads/2022/11/Screenshot-from-2022-11-15-11-12-22-1024x714.png \ No newline at end of file diff --git a/published/202211/20221121.3 ⭐️⭐️ 5 htop Alternatives to Enhance Your Linux System Monitoring Experience.md b/published/202211/20221121.3 ⭐️⭐️ 5 htop Alternatives to Enhance Your Linux System Monitoring Experience.md new file mode 100644 index 0000000000..7fdb75fdd0 --- /dev/null +++ b/published/202211/20221121.3 ⭐️⭐️ 5 htop Alternatives to Enhance Your Linux System Monitoring Experience.md @@ -0,0 +1,160 @@ +[#]: subject: "5 htop Alternatives to Enhance Your Linux System Monitoring Experience" +[#]: via: "https://itsfoss.com/htop-alternatives/" +[#]: author: "Ankush Das https://itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15294-1.html" + +5 个 htop 替代:增强你的 Linux 系统监控体验 +====== + +![][0] + +`htop` 是一个流行的命令行工具,可以帮助监测 Linux 上的系统资源和性能。 + +**它比通常默认开箱即用的 top 好**。 + +使用 `htop`,你可以对进程进行过滤和排序,以便更好地了解情况,获得正在运行的进程的树状视图,并在需要时杀死进程。 + +![htop 2022][1] + +我使用 `htop` 而不是其他系统监控工具,因为它可以显示对我来说至关重要的东西,并允许在我需要控制运行中的服务时终止流氓进程或冻结进程。 + +但是,如果你想要其他显示更多信息,或一个看起来不同的东西,有哪些**htop 替代品**呢?让我们来看看。 + +### 1、atop + +![atop 2022][3] + +[atop][4] 可以提供所有运行的进程的细节。你可以得到你需要的所有数据,以了解你系统上的进程情况。 + +它还提供了对资源利用率进行永久记录的能力,以便进行长期分析。系统管理员可能会发现这比其他工具更有用。 + +不幸的是,它并没有为你提供漂亮的输出。因此,如果你想要的话,请继续看下面的其他替代品。 + +#### 如何安装 atop? + +对于基于 Ubuntu/Debian 的发行版,键入: + +``` +sudo apt install atop +``` + +### 2、vtop + +![vtop 2022][5] + +如果你想要一个漂亮的输出和管理进程的基本功能,[vtop][6] 是一个完美的系统监控工具。 + +正如我在其他一些文章中所说,它的输出看起来像终端中的 GUI。你可以使用鼠标,也可以选择禁用它。也可以定制它的主题。 + +它是用 Node.js 构建的。所以,你需要安装额外的包来安装它。 + +不幸的是,这个项目似乎不再积极维护。但是,在写这篇文章的时候,它对我来说还是有用的。 + +#### 如何安装 vtop? + +对于基于 Ubuntu 的发行版,在终端输入以下命令: + +``` +sudo apt install nodejs +sudo apt install npm +sudo npm install -g vtop +``` + +### 3、btop++ + +![btop][7] + +[btop++][8] 是 bashtop 和 bpytop 的一个 C++ 版本。是的,它是这些项目的第三次迭代,由同一个开发者完成。 + +`btop++` 包括完全的鼠标支持,带有一个受游戏启发的菜单系统,可以让你过滤进程、树状视图等等。 + +#### 如何安装 btop++? + +使用官方软件库,你可以很容易地在 Fedora、openSUSE 和 FreeBSD 上安装它。 + +对于 Fedora,你可以键入: + +``` +sudo dnf install btop +``` + +你可以探索它的 [GitHub 页面][8],了解在其他 Linux 发行版上的安装方式。 + +### 4、Glances + +![glances 2022][9] + +Glances 与 `htop` 类似,但有更多的功能。 + +它是一个跨平台的系统监控工具,可以将数据以 CSV 或其他格式导出,用于 InfluxDB、Elasticsearch 等。 + +你也可以利用它的网页用户界面,远程(或在不能访问终端的情况下)查看统计数据。 + +#### 如何安装 Glances? + +对于基于 Ubuntu 的发行版,你可以键入: + +``` +sudo apt install glances +``` + +### 5、nmon + +![nmon 2022 1][10] + +[nmon][11] 是一个令人印象深刻的监测工具,它可以让你控制你想显示的输出内容。 + +你可以提取监测数据(以 CSV 格式导出)并用于进一步分析。它很容易切换统计数据和在不同的视图之间进行切换。 + +默认情况下,它每两秒刷新一次数据,但你可以自定义它,并使用更多的选项来调整你的体验。 + +#### 如何安装 nmon? + +你可以在官方软件库中找到它。对于基于 Ubuntu 的发行版,在终端键入以下内容: + +``` +sudo apt install nmon +``` + +### 总结 + +[top 2022][12] + +`top` 命令工具被植入在你的 Linux 系统中。如果你想要一个基本的监控工具,想要关注系统进程和一些统计信息,`top` 就足够了。 + +我不确定它是否可以算作比 `htop` 更强的体验,这也是 `top` 没有被列入主要列表的原因。 + +正如你在这里看到的,一些监控工具可能很有趣,而且证明比 `htop` 更有洞察力。 + +*你最喜欢的 `htop` 替代品是什么?你认为 `htop` 对你的使用情况来说已经足够了吗?欢迎在下面的评论中让我知道你的想法。* + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/htop-alternatives/ + +作者:[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://itsfoss.com/author/ankush/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/wp-content/uploads/2022/11/htop-2022.png +[2]: https://itsfoss.com/linux-system-monitoring-tools/ +[3]: https://itsfoss.com/wp-content/uploads/2022/11/atop-2022.png +[4]: https://www.atoptool.nl/index.php +[5]: https://itsfoss.com/wp-content/uploads/2022/11/vtop-2022.png +[6]: https://github.com/MrRio/vtop +[7]: https://itsfoss.com/wp-content/uploads/2022/11/btop.png +[8]: https://github.com/aristocratos/btop +[9]: https://itsfoss.com/wp-content/uploads/2022/11/glances-2022.png +[10]: https://itsfoss.com/wp-content/uploads/2022/11/nmon-2022-1.png +[11]: https://nmon.sourceforge.net/pmwiki.php?n=Main.HomePage +[12]: https://itsfoss.com/wp-content/uploads/2022/11/top-2022.png +[0]: https://img.linux.net.cn/data/attachment/album/202211/27/113700npcbceb0c0prbqcn.jpg \ No newline at end of file diff --git a/published/202211/20221122.1 ⭐️⭐️ macOS Alternative helloSystem (0.7.0) is moving towards stability.md b/published/202211/20221122.1 ⭐️⭐️ macOS Alternative helloSystem (0.7.0) is moving towards stability.md new file mode 100644 index 0000000000..c4b5a4f9e1 --- /dev/null +++ b/published/202211/20221122.1 ⭐️⭐️ macOS Alternative helloSystem (0.7.0) is moving towards stability.md @@ -0,0 +1,83 @@ +[#]: subject: "macOS Alternative helloSystem (0.7.0) is moving towards stability" +[#]: via: "https://www.debugpoint.com/hellosystem-0-7-0/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "Cubik65536" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15300-1.html" + +macOS 替代品 helloSystem 0.7.0 正在增强稳定性 +====== + +> 随着 helloSystem 0.7.0 的发布和更多内部工作,helloSystem 正在增强稳定性,为 macOS 提供一个“开源”的替代方案。 + +helloSystem 是一个基于 FreeBSD 的轻量级操作系统,旨在为 macOS 提供一个“开源”的替代方案。helloSystem 的主要目标是提供一个易于安装和使用的,真正“开源”的 FreeBSD 替代方案。此外,该团队还专注于从 macOS 转换过来的用户,他们可以舒适的使用类似的桌面,而不会受到系统锁定或 Linux 发行版的复杂性的影响。 + +考虑到 BSD 系统中的硬件支持,开发这样的操作系统需要时间。团队正在努力从零创建一个桌面 - “hellodesktop”。用 C++ 编写的 hellodesktop 和其他改进正在进行中。 + +![helloSystem 0.7.0 桌面][1] + +### helloSystem 0.7.0 + +在 2021 年底,该团队发布了最新一个稳定版本,基于 FreeBSD 13.0 的 [helloSystem 0.7.0][2],并且目前正在将系统移植到 FreeBSD 13.1 和 14 版本。 + +除此之外,一些新功能也可以在系统中工作了;这是一个总览: + +- 由 FreeBSD 13.0 驱动 +- 通过更新的启动时间和压缩的 UFS 文件系统改进的现场介质Live Media +- 将 ISO 镜像大小减少到 800 MB,以适合 CD +- 与 Ventoy USB creator 兼容 +- 支持英伟达 GPU,包括旧型号 +- 在目标分区安装时添加了 exFAT 支持 +- 增加了 KDE 开发的 Falkon 浏览器,附带了下载和安装 Chromium 和 Firefox 的附加菜单项 +- 系统提示音 +- 支持通过笔记本电脑键盘的专用键控制亮度和音量 + +![helloSystem 0.7.0 中的菜单与应用][3] + +除了上述内容之外,helloSystem 0.7.0 中还添加了一个新部分,以让你可以提前了解团队正在开发的功能。未来版本中将到来的一些最酷的功能包括: + +- BSD 中的 Debian 运行时安装程序,以在 BSD 中运行 Linux 应用程序! +- 一个独立的应用程序,用于下载应用程序。 +- 新的更新实用程序 + +此外,0.7.0 中还修复了一些错误并更新了翻译。 + +![安装 Linux 运行时正在开发中][4] + +话虽如此,但它仍然需要大量的时间才能成为易于使用的 BSD 变体和 macOS 的“开源”替代方案。自从我 [首次报道][5] 以来,已经在图形安装程序,桌面应用程序和错误修复方面进行了巨大的更新。我希望它在随着 2023 年移植到 FreeBSD 14 之后,会变得更加主流。 + +### 下载 + +如果你想在真实的硬件上尝试它,请先进行备份然后尝试。此外,helloSystem 现在完全兼容 [VirtualBox][6] 之类的虚拟机。你可以试试。如果你在 VirtualBox 中尝试,请确保将 CPU 更改为 64 位。 + +官方下载链接(包括 helloSystem 0.7.0 稳定版)可在 [此页面][7] 上找到,或者您可以使用下面的链接获取 ISO。 + +> **[下载 helloSystem 0.7.0][8]** + +如果你想为测试、开发或任何其他事情做出贡献,请 [访问 GitHub 页面以获取详细信息][9]。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/hellosystem-0-7-0/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[Cubik65536](https://github.com/Cubik65536) +校对:[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/11/helloSystem-0.7.0-Desktop.jpg +[2]: https://github.com/helloSystem/ISO/releases/tag/r0.7.0 +[3]: https://www.debugpoint.com/wp-content/uploads/2022/11/Menu-and-apps-in-helloSystem-0.7.0.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2022/11/Installing-Linux-Runtime-is-under-development.jpg +[5]: https://www.debugpoint.com/tag/hellosystem +[6]: https://www.debugpoint.com/tag/virtualbox +[7]: https://github.com/helloSystem/ISO/releases +[8]: https://github.com/helloSystem/ISO/releases/download/r0.7.0/hello-0.7.0_0G160-FreeBSD-13.0-amd64.iso +[9]: https://github.com/helloSystem +[10]: https://www.debugpoint.com/folder-colors-in-mate-and-ubuntu/ diff --git a/published/202211/20221125.1 ⭐️ Excellent News! Midori Browser to Integrate its Own Open Source Engine for a Strong Comeback.md b/published/202211/20221125.1 ⭐️ Excellent News! Midori Browser to Integrate its Own Open Source Engine for a Strong Comeback.md new file mode 100644 index 0000000000..2f76cd89de --- /dev/null +++ b/published/202211/20221125.1 ⭐️ Excellent News! Midori Browser to Integrate its Own Open Source Engine for a Strong Comeback.md @@ -0,0 +1,107 @@ +[#]: subject: "Excellent News! Midori Browser to Integrate its Own Open Source Engine for a Strong Comeback" +[#]: via: "https://news.itsfoss.com/midori-astiango/" +[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15304-1.html" + +Midori 浏览器将整合自己的开源搜索引擎强势归来 +====== + +> Midori 网页浏览器还是活跃的,即将到来的更新整合了一个开源搜索引擎! + +![](https://news.itsfoss.com/content/images/size/w2000/2022/11/midori-browser-astiango.jpg) + +几年前,Midori 是一个相当受欢迎的轻量级开源网页浏览器。 + +有些人认为它已经终止了,不知道它是否还在活动。 + +**好消息是:** + +作为一个 **自由开源的** 产品,**Midori 网页浏览器是活跃的(在测试阶段)**、[可用的][1] 。 + +它是一个基于 Chromium 的以 Electron 构建的浏览器,但没有谷歌的东西和隐私保护功能。 + +> 💡 2019 年,该项目被终止,并与 Astian 合并为一个移动浏览器,当时我们并没有立即得到消息该浏览器是否将卷土重来或保持开源。 + +此外,在即将到来的浏览器更新中,他们计划将自己的开源搜索引擎 **AstianGO** 与之整合。🤯 + +这与 Brave(及其搜索引擎)有些类似,但 **Brave Search 不是开源的**。 + +### AstianGO:开源搜索引擎 + +在一个 [Reddit 帖子][3] 中,来自 Astian 的某个人宣布计划在 Midori 网页浏览器中集成一个开源搜索引擎,即 [AstianGO][4],并在下次更新时加入。 + +源代码还没有发布,应该可以通过 [这个 GitLab 页面][5] 获得。 + +![Astiango][6] + +透露的细节不多,但以下是他们提到的内容: + +> 我们已经实现并开发了一个完全开源的搜索引擎,没有使用第三方的 API,它不存储用户的 IP 地址,不存储搜索历史。我们把这个搜索引擎称为 **AstianGO**,这个搜索引擎是用 PHP 开发的,它是自我托管的,尽管它还没有一个集成的更新系统,人们可以把它部署在他们的服务器上。 + +该搜索引擎使用来自谷歌、Qwant 和 Brave Search 的数据来提供结果。你可以看看它的 [FAQ][7] 来了解它的工作原理。 + +其他的浏览器,有些集成了以隐私为重点的搜索引擎,有些承诺提供隐私保护功能。 + +![][8] + +当然,这个搜索引擎看起来是一个正在进行的工作。 + +但是,一个**开源的网页浏览器,带有隐私保护的搜索引擎**(也是开源的),可能对大多数用户来说是带有太多不确定性。 + +![Midori 浏览器][9] + +Midori 的目标是通过这一补充来改变这一状况。 + +### Midori 网页浏览器的状态 + +这听起来不错,**但我认为这并没有充分的计划。** + +有一个 **AppImage** 和一个 **.deb包** 可用。它也可用于其他平台。 + +我试着从它的 [下载页面][10] 安装 Midori 浏览器(.deb 包),但我无法在 Ubuntu 22.04 LTS 上安装它 🚫 + +AppImage 文件可以使用 ✅ + +下载页面没有反映出所有的信息来告知 Linux 发行版的支持情况;它只是提到了 **Debian x64**,并没有完全翻译成英文。 + +![][11] + +所以,**我不确定我们是否可以推荐使用该浏览器**。 + +当然,考虑到它还在测试阶段,你不应该依赖它。你可以浏览它的 [GitLab 页面][12] 来了解更多。 + +### 思考? + +我认为一个新的开源搜索引擎是一件好事。我仍然不确定 Linux 的 Midori 网页浏览器是否可以推荐,我需要通过测试才能在将来推荐它。 + +_是这个开源搜索引擎更让你兴奋,还是浏览器?请在下面的评论中告诉我你的想法。 + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/midori-astiango/ + +作者:[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://astian.org/en/midori-browser/ +[2]: https://astian.org +[3]: https://www.reddit.com/r/opensource/comments/z44jut/midori_browser_now_with_its_own_search_engine/ +[4]: https://astiango.com +[5]: https://gitlab.com/astiango/astian-search/ +[6]: https://news.itsfoss.com/content/images/2022/11/astiango.jpg +[7]: https://astiango.com/faq.php +[8]: https://news.itsfoss.com/content/images/2022/11/astiango.png +[9]: https://news.itsfoss.com/content/images/2022/11/midori-screenshot.png +[10]: https://astian.org/download/midori-browser-for-debian-x64/ +[11]: https://news.itsfoss.com/content/images/2022/11/midori-download.png +[12]: https://gitlab.com/midori-web/midori-desktop diff --git a/published/20221124.4 ⭐️⭐️⭐️ Write a C++ extension module for Python.md b/published/20221124.4 ⭐️⭐️⭐️ Write a C++ extension module for Python.md new file mode 100644 index 0000000000..5f426b7f7d --- /dev/null +++ b/published/20221124.4 ⭐️⭐️⭐️ Write a C++ extension module for Python.md @@ -0,0 +1,323 @@ +[#]: subject: "Write a C++ extension module for Python" +[#]: via: "https://opensource.com/article/22/11/extend-c-python" +[#]: author: "Stephan Avenwedde https://opensource.com/users/hansic99" +[#]: collector: "lkxed" +[#]: translator: "MjSeven" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15405-1.html" + +为 Python 写一个 C++ 扩展模块 +====== + +![][0] + +> 使用 C 扩展为 Python 提供特定功能。 + +在前一篇文章中,我介绍了 [六个 Python 解释器][1]。在大多数系统上,CPython 是默认的解释器,而且根据民意调查显示,它还是最流行的解释器。Cpython 的独有功能是使用扩展 API 用 C 语言编写 Python 模块。用 C 语言编写 Python 模块允许你将计算密集型代码转移到 C,同时保留 Python 的易用性。 + +在本文中,我将向你展示如何编写一个 C++ 扩展模块。使用 C++ 而不是 C,因为大多数编译器通常都能理解这两种语言。我必须提前说明缺点:以这种方式构建的 Python 模块不能移植到其他解释器中。它们只与 CPython 解释器配合工作。因此,如果你正在寻找一种可移植性更好的与 C 语言模块交互的方式,考虑下使用 [ctypes][2] 模块。 + +### 源代码 + +和往常一样,你可以在 [GitHub][3] 上找到相关的源代码。仓库中的 C++ 文件有以下用途: + +- `my_py_module.cpp`: Python 模块 `MyModule` 的定义 +- `my_cpp_class.h`: 一个头文件 - 只有一个暴露给 Python 的 C++ 类 +- `my_class_py_type.h/cpp`: Python 形式的 C++ 类 +- `pydbg.cpp`: 用于调试的单独应用程序 + +本文构建的 Python 模块不会有任何实际用途,但它是一个很好的示例。 + +### 构建模块 + +在查看源代码之前,你可以检查它是否能在你的系统上编译。[我使用 CMake][4] 来创建构建的配置信息,因此你的系统上必须安装 CMake。为了配置和构建这个模块,可以让 Python 去执行这个过程: + +``` +$ python3 setup.py build +``` + +或者手动执行: + +``` +$ cmake -B build +$ cmake --build build +``` + +之后,在 `/build` 子目录下你会有一个名为 `MyModule. so` 的文件。 + +### 定义扩展模块 + +首先,看一下 `my_py_module.cpp` 文件,尤其是 `PyInit_MyModule` 函数: + +``` +PyMODINIT_FUNC +PyInit_MyModule(void) { + PyObject* module = PyModule_Create(&my_module); + + PyObject *myclass = PyType_FromSpec(&spec_myclass); + if (myclass == NULL){ + return NULL; + } + Py_INCREF(myclass); + + if(PyModule_AddObject(module, "MyClass", myclass) < 0){ + Py_DECREF(myclass); + Py_DECREF(module); + return NULL; + } + return module; +} +``` + +这是本例中最重要的代码,因为它是 CPython 的入口点。一般来说,当一个 Python C 扩展被编译并作为共享对象二进制文件提供时,CPython 会在同名二进制文件中(`.so`)搜索 `PyInit_` 函数,并在试图导入时执行它。 + +无论是声明还是实例,所有 Python 类型都是 [PyObject][5] 的一个指针。在此函数的第一部分中,`module` 通过 `PyModule_Create(...)` 创建的。正如你在 `module` 详述(`my_py_module`,同名文件)中看到的,它没有任何特殊的功能。 + +之后,调用 [PyType_FromSpec][6] 为自定义类型 `MyClass` 创建一个 Python [堆类型][7] 定义。一个堆类型对应于一个 Python 类,然后将它赋值给 `MyModule` 模块。 + +_注意,如果其中一个函数返回失败,则必须减少以前创建的复制对象的引用计数,以便解释器删除它们。_ + +### 指定 Python 类型 + +`MyClass` 详述在 [my_class_py_type.h][8] 中可以找到,它作为 [PyType_Spec][9] 的一个实例: + +``` +static PyType_Spec spec_myclass = { + "MyClass", // name + sizeof(MyClassObject) + sizeof(MyClass), // basicsize + 0, // itemsize + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, // flags + MyClass_slots // slots +}; +``` + +它定义了一些基本类型信息,它的大小包括 Python 表示的大小(`MyClassObject`)和普通 C++ 类的大小(`MyClass`)。`MyClassObject` 定义如下: + +``` +typedef struct { + PyObject_HEAD + int m_value; + MyClass* m_myclass; +} MyClassObject; +``` + +Python 表示的话就是 [PyObject][5] 类型,由 `PyObject_HEAD` 宏和其他一些成员定义。成员 `m_value` 视为普通类成员,而成员 `m_myclass` 只能在 C++ 代码内部访问。 + +[PyType_Slot][10] 定义了一些其他功能: + +``` +static PyType_Slot MyClass_slots[] = { + {Py_tp_new, (void*)MyClass_new}, + {Py_tp_init, (void*)MyClass_init}, + {Py_tp_dealloc, (void*)MyClass_Dealloc}, + {Py_tp_members, MyClass_members}, + {Py_tp_methods, MyClass_methods}, + {0, 0} /* Sentinel */ +}; +``` + +在这里,设置了一些初始化和析构函数的跳转,还有普通的类方法和成员,还可以设置其他功能,如分配初始属性字典,但这是可选的。这些定义通常以一个哨兵结束,包含 `NULL` 值。 + +要完成类型详述,还包括下面的方法和成员表: + +``` +static PyMethodDef MyClass_methods[] = { + {"addOne", (PyCFunction)MyClass_addOne, METH_NOARGS, PyDoc_STR("Return an incrmented integer")}, + {NULL, NULL} /* Sentinel */ +}; + +static struct PyMemberDef MyClass_members[] = { + {"value", T_INT, offsetof(MyClassObject, m_value)}, + {NULL} /* Sentinel */ +}; +``` + +在方法表中,定义了 Python 方法 `addOne`,它指向相关的 C++ 函数 `MyClass_addOne`。它充当了一个包装器,它在 C++ 类中调用 `addOne()` 方法。 + +在成员表中,只有一个为演示目的而定义的成员。不幸的是,在 [PyMemberDef][12] 中使用的 [offsetof][11] 不允许添加 C++ 类型到 `MyClassObject`。如果你试图放置一些 C++ 类型的容器(如 [std::optional][13]),编译器会抱怨一些内存布局相关的警告。 + +### 初始化和析构 + +`MyClass_new` 方法只为 `MyClassObject` 提供一些初始值,并为其类型分配内存: + +``` +PyObject *MyClass_new(PyTypeObject *type, PyObject *args, PyObject *kwds){ + std::cout << "MtClass_new() called!" << std::endl; + + MyClassObject *self; + self = (MyClassObject*) type->tp_alloc(type, 0); + if(self != NULL){ // -> 分配成功 + // 赋初始值 + self->m_value = 0; + self->m_myclass = NULL; + } + return (PyObject*) self; +} +``` + +实际的初始化发生在 `MyClass_init` 中,它对应于 Python 中的 [\_\_init__()][14] 方法: + +``` +int MyClass_init(PyObject *self, PyObject *args, PyObject *kwds){ + + ((MyClassObject *)self)->m_value = 123; + + MyClassObject* m = (MyClassObject*)self; + m->m_myclass = (MyClass*)PyObject_Malloc(sizeof(MyClass)); + + if(!m->m_myclass){ + PyErr_SetString(PyExc_RuntimeError, "Memory allocation failed"); + return -1; + } + + try { + new (m->m_myclass) MyClass(); + } catch (const std::exception& ex) { + PyObject_Free(m->m_myclass); + m->m_myclass = NULL; + m->m_value = 0; + PyErr_SetString(PyExc_RuntimeError, ex.what()); + return -1; + } catch(...) { + PyObject_Free(m->m_myclass); + m->m_myclass = NULL; + m->m_value = 0; + PyErr_SetString(PyExc_RuntimeError, "Initialization failed"); + return -1; + } + + return 0; +} +``` + +如果你想在初始化过程中传递参数,必须在此时调用 [PyArg_ParseTuple][15]。简单起见,本例将忽略初始化过程中传递的所有参数。在函数的第一部分中,`PyObject` 指针(`self`)被强转为 `MyClassObject` 类型的指针,以便访问其他成员。此外,还分配了 C++ 类的内存,并执行了构造函数。 + +注意,为了防止内存泄漏,必须仔细执行异常处理和内存分配(还有释放)。当引用计数将为零时,`MyClass_dealloc` 函数负责释放所有相关的堆内存。在文档中有一个章节专门讲述关于 C 和 C++ 扩展的内存管理。 + +### 包装方法 + +从 Python 类中调用相关的 C++ 类方法很简单: + +``` +PyObject* MyClass_addOne(PyObject *self, PyObject *args){ + assert(self); + + MyClassObject* _self = reinterpret_cast(self); + unsigned long val = _self->m_myclass->addOne(); + return PyLong_FromUnsignedLong(val); +} +``` + +同样,`PyObject` 参数(`self`)被强转为 `MyClassObject` 类型以便访问 `m_myclass`,它指向 C++ 对应类实例的指针。有了这些信息,调用 `addOne()` 类方法,并且结果以 [Python 整数对象][17] 返回。 + +### 3 种方法调试 + +出于调试目的,在调试配置中编译 CPython 解释器是很有价值的。详细描述参阅 [官方文档][18]。只要下载了预安装的解释器的其他调试符号,就可以按照下面的步骤进行操作。 + +#### GNU 调试器 + +当然,老式的 [GNU 调试器(GDB)][19] 也可以派上用场。源码中包含了一个 [gdbinit][20] 文件,定义了一些选项和断点,另外还有一个 [gdb.sh][21] 脚本,它会创建一个调试构建并启动一个 GDB 会话: + +![Gnu 调试器(GDB)对于 Python C 和 C++ 扩展非常有用][22] + +GDB 使用脚本文件 [main.py][23] 调用 CPython 解释器,它允许你轻松定义你想要使用 Python 扩展模块执行的所有操作。 + +#### C++ 应用 + +另一种方法是将 CPython 解释器嵌入到一个单独的 C++ 应用程序中。可以在仓库的 [pydbg.cpp][24] 文件中找到: + +``` +int main(int argc, char *argv[], char *envp[]) +{ + Py_SetProgramName(L"DbgPythonCppExtension"); + Py_Initialize(); + + PyObject *pmodule = PyImport_ImportModule("MyModule"); + if (!pmodule) { + PyErr_Print(); + std::cerr << "Failed to import module MyModule" << std::endl; + return -1; + } + + PyObject *myClassType = PyObject_GetAttrString(pmodule, "MyClass"); + if (!myClassType) { + std::cerr << "Unable to get type MyClass from MyModule" << std::endl; + return -1; + } + + PyObject *myClassInstance = PyObject_CallObject(myClassType, NULL); + + if (!myClassInstance) { + std::cerr << "Instantioation of MyClass failed" << std::endl; + return -1; + } + + Py_DecRef(myClassInstance); // invoke deallocation + return 0; +} +``` + +使用 [高级接口][25],可以导入扩展模块并对其执行操作。它允许你在本地 IDE 环境中进行调试,还能让你更好地控制传递或来自扩展模块的变量。 + +缺点是创建一个额外的应用程序的成本很高。 + +#### VSCode 和 VSCodium LLDB 扩展 + +使用像 [CodeLLDB][26] 这样的调试器扩展可能是最方便的调试选项。仓库包含了一些 VSCode/VSCodium 的配置文件,用于构建扩展,如 [task.json][27]、[CMake Tools][28] 和调用调试器([launch.json][29])。这种方法结合了前面几种方法的优点:在图形 IDE 中调试,在 Python 脚本文件中定义操作,甚至在解释器提示符中动态定义操作。 + +![VSCodium 有一个集成的调试器。][30] + +### 用 C++ 扩展 Python + +Python 的所有功能也可以从 C 或 C++ 扩展中获得。虽然用 Python 写代码通常认为是一件容易的事情,但用 C 或 C++ 扩展 Python 代码是一件痛苦的事情。另一方面,虽然原生 Python 代码比 C++ 慢,但 C 或 C++ 扩展可以将计算密集型任务提升到原生机器码的速度。 + +你还必须考虑 ABI 的使用。稳定的 ABI 提供了一种方法来保持旧版本 CPython 的向后兼容性,如 [文档][31] 所述。 + +最后,你必须自己权衡利弊。如果你决定使用 C 语言来扩展 Python 中的一些功能,你已经看到了如何实现它。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/extend-c-python + +作者:[Stephan Avenwedde][a] +选题:[lkxed][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/hansic99 +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/22/9/python-interpreters-2022 +[2]: https://docs.python.org/3/library/ctypes.html#module-ctypes +[3]: https://github.com/hANSIc99/PythonCppExtension +[4]: https://opensource.com/article/21/5/cmake +[5]: https://docs.python.org/release/3.9.1/c-api/structures.html?highlight=pyobject#c.PyObject +[6]: https://docs.python.org/3/c-api/type.html#c.PyType_FromSpec +[7]: https://docs.python.org/3/c-api/typeobj.html#heap-types +[8]: https://github.com/hANSIc99/PythonCppExtension/blob/main/my_class_py_type.h +[9]: https://docs.python.org/3/c-api/type.html#c.PyType_Spec +[10]: https://docs.python.org/release/3.9.1/c-api/type.html?highlight=pytype_slot#c.PyType_Slot +[11]: https://en.cppreference.com/w/cpp/types/offsetof +[12]: https://docs.python.org/release/3.9.1/c-api/structures.html?highlight=pymemberdef#c.PyMemberDef +[13]: https://en.cppreference.com/w/cpp/utility/optional +[14]: https://docs.python.org/3/library/dataclasses.html?highlight=__init__ +[15]: https://docs.python.org/3/c-api/arg.html#c.PyArg_ParseTuple +[16]: https://docs.python.org/3/c-api/memory.html +[17]: https://docs.python.org/3/c-api/long.html +[18]: https://docs.python.org/3/c-api/intro.html#debugging-builds +[19]: https://opensource.com/article/21/3/debug-code-gdb +[20]: https://github.com/hANSIc99/PythonCppExtension/blob/main/gdbinit +[21]: https://github.com/hANSIc99/PythonCppExtension/blob/main/gdb.sh +[22]: https://opensource.com/sites/default/files/2022-11/gdb_session_b_0.png +[23]: https://github.com/hANSIc99/PythonCppExtension/blob/main/main.py +[24]: https://github.com/hANSIc99/PythonCppExtension/blob/main/pydbg.cpp +[25]: https://docs.python.org/3/extending/embedding.html#very-high-level-embedding +[26]: https://github.com/vadimcn/vscode-lldb +[27]: https://github.com/hANSIc99/PythonCppExtension/blob/main/.vscode/tasks.json +[28]: https://github.com/microsoft/vscode-cmake-tools +[29]: https://github.com/hANSIc99/PythonCppExtension/blob/main/.vscode/launch.json +[30]: https://opensource.com/sites/default/files/2022-11/vscodium_debug_session.png +[31]: https://docs.python.org/3/c-api/stable.html +[0]: https://img.linux.net.cn/data/attachment/album/202301/02/173501o26htajatlpj0lqt.jpg \ No newline at end of file diff --git a/published/20221126.1 ⭐️ How I Fixed Buzzing Noise Coming from Speakers in Linux.md b/published/20221126.1 ⭐️ How I Fixed Buzzing Noise Coming from Speakers in Linux.md new file mode 100644 index 0000000000..70767163ae --- /dev/null +++ b/published/20221126.1 ⭐️ How I Fixed Buzzing Noise Coming from Speakers in Linux.md @@ -0,0 +1,133 @@ +[#]: subject: "How I Fixed Buzzing Noise Coming from Speakers in Linux" +[#]: via: "https://itsfoss.com/buzzing-noise-speaker-linux" +[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15415-1.html" + +如何修复 Linux 中扬声器发出的嗡嗡声 +====== + +![][0] + +我使用笔记本电脑很长时间了,但最近才切换到台式机上,以便进行远程工作。 + +我注意到我的扬声器不断发出嗡嗡声。这很烦人,让我头疼。我开始着手解决这个问题。了解问题的根本原因非常有趣。 + +我将分享我在 Linux 中修复扬声器嗡嗡声的经验。我发现它可以在同一硬件上对 Ubuntu、Debian 和 Pop OS 都有效。 + +需要考虑的一件事是,如果本指南不适合你,你可能遇到了严重的硬件问题。对于大多数用户来说,给定的方案应该可以解决问题。 + +**在尝试修复之前** + +我试图让事情变得容易安全地遵循。你可以尝试临时修复,如果有效,则将更改永久化。但是,最好使用 Timeshift 制作系统快照。如果你在出现故障时很容易惊慌失措,你可以将系统恢复到之前的状态。 + +另外,检查你的声卡。在我的例子中,它是 `snd_hda_intel`。对于 USB 卡,它可以是 `snd_usb_audio`。你必须根据你的声卡更改命令。 + +``` +cat /proc/asound/modules +``` + +### Linux 中扬声器发出嗡嗡声的原因 + +梳理了无数的论坛帖子和网站后,我了解了问题的根本原因。这是因为扬声器中的电容放电。它可以通过关闭声卡的省电设置来解决。 + +通过关闭省电,你允许系统在这些电容放电时为其充电。这类似于在一直充电时使用电话。 + +你可以使用给定的命令检查你的系统是否启用了声卡的省电设置: + +``` +cat /sys/module/snd_hda_intel/parameters/power_save +``` + +![power saving setting in sound card making buzzing sound in linux][1] + +如果你像我一样输出是 `1`,那么省电功能已打开。因此,让我们看一下方案。 + +不用担心。这不会显著影响你的电池百分比,因为所示方法仅适用于声卡。 + +### 尝试修复嗡嗡声问题(临时) + +我之所以包括临时方法是为了确定嗡嗡声是由于电容放电引起的,还是存在严重的硬件问题。 + +如果此临时方案有效,你可以继续使用永久方案。 + +第一步是切换到 root 用户: + +``` +sudo su +``` + +然后,执行给定的命令,它应该停止嗡嗡声直到下次启动: + +``` +echo 0 > /sys/module/snd_hda_intel/parameters/power_save +``` + +如果你使用的是 **USB 声卡**,则必须将 `snd_hda_intel` 替换为 `snd_usb_audio`,如下所示: + +``` +echo 0 > /sys/module/snd_usb_audio/parameters/power_save +``` + +如果上述技巧解决了问题,那么你必须使变更永久化。否则,下次重启系统时更改将丢失。 + +### 修复嗡嗡声问题(永久) + +在这里,我将对内核参数进行更改。 + +将你的工作目录更改为 `/etc/modprobe.d`: + +``` +cd /etc/modprobe.d +``` + +现在,创建一个名为 `audio_disable_powersave.conf` 的新文件,并使用给定命令使用 nano 文本编辑器打开: + +``` +sudo nano audio_disable_powersave.conf +``` + +并在该文件中放入以下行以永久关闭声卡中的省电设置: + +``` +options snd_hda_intel power_save=0 +``` + +![fix buzzing sound in linux][2] + +对于 **USB 声卡**,你需要使用 `snd_usb_audio`: + +``` +options snd_usb_audio power_save=0 +``` + +现在,[保存更改并退出 Nano 文本编辑器][3] 并按 `Ctrl+X` 键。重启你的系统,你就可以享受无噪音的工作空间。 + +### 总结 + +本指南解释了嗡嗡声的原因以及如何直接解决该问题。 + +同样,除了电容放电之外,你可能还有其他问题,因此你应该始终尝试临时方法。 + +让我知道你是否能够以这种方式解决 Linux 中扬声器发出的嗡嗡声。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/buzzing-noise-speaker-linux + +作者:[Sagar Sharma][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/sagar/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/content/images/wordpress/2022/11/power-saving-setting-in-sound-card-making-buzzing-sound-in-linux.png +[2]: https://itsfoss.com/content/images/wordpress/2022/11/fix-buzzing-sound-in-linux.png +[3]: https://linuxhandbook.com/nano-save-exit/ +[0]: https://img.linux.net.cn/data/attachment/album/202301/05/150250sqbeq35bh699r157.jpg \ No newline at end of file diff --git a/published/202212/20200105 Friend of a Friend- The Facebook That Could Have Been.md b/published/202212/20200105 Friend of a Friend- The Facebook That Could Have Been.md new file mode 100644 index 0000000000..b6e24592de --- /dev/null +++ b/published/202212/20200105 Friend of a Friend- The Facebook That Could Have Been.md @@ -0,0 +1,219 @@ +[#]: subject: "Friend of a Friend: The Facebook That Could Have Been" +[#]: via: "https://twobithistory.org/2020/01/05/foaf.html" +[#]: author: "Two-Bit History https://twobithistory.org" +[#]: collector: "lujun9972" +[#]: translator: "aREversez" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15334-1.html" + +FOAF:本可以成为 Facebook +====== + +![][0] + +> 我把自己的社交网络写进 FOAF 文件,这就是变革之始。—— 互联网之父蒂姆·伯纳斯·李(2007) + +FOAF 标准(朋友的朋友Friend of a Friend),是一个可以追溯到本世纪初的网络标准,目前它基本上已经不再使用了,或者说被人们忘记了,亦或者说已经被取代了 [^1]。它暗示了,假如 Facebook 没有征服世界的话,FOAF 将会定义我们今天所用的社交网络。不过在开始探讨这一网络标准之前,我想先来谈一谈纽约地铁。 + +目前,纽约地铁的唯一管理机构是 大都会运输署Metropolitan Transportation Agency(简称 MTA)。MTA 垄断了纽约市的地铁交通。在纽约乘地铁必须先从 MTA 购买车票,否则属于非法行为。也就是说,MTA 在地铁行业没有任何竞争对手。 + +不过,以前可不是这样。说起来可能有些让人吃惊,纽约市的地铁交通曾由两家企业相互竞争,共同运营。跨区捷运公司Inter-borough Rapid Transit Company(IRT)的势力范围是穿过曼哈顿的线路,布鲁克林-曼哈顿运输股份有限公司Brooklyn-Manhattan Transit Corporation(BMT)管理的则是布鲁克林区内的线路,其中也有部分线路延伸到了曼哈顿。1932 年,纽约市开通使用了自己的服务,称为独立地铁系统,与 IRT 和 BMT 展开竞争,所以当时纽约共有三家不同公司控制着市内地铁交通。 + +可能会有人觉得这样的地铁运营效率不高。事实上也确是如此。由于 IRT 和 BMT 投入使用的列车宽度不同,所以在不同的运营系统之间建造换乘站十分困难。此外,乘客换乘时还需向不同的运营商支付费用,这就意味着在换乘站至少要设置两个不同的检票区域。后来,纽约市于 1940 年接管了 IRT 和 BMT,将整个纽约市的地铁交通置于一家运营商的管理之下,不过由于此前分而治之而造成的效率低下问题时至今日依然存在:能在 BMT 的线路上(如 A、C、E 号线)运行的列车无法在 IRT 的线路上(如 1、2、3 号线)运行,因为 IRT 的线路隧道比较窄。因此,MTA 不得不同时管理这两种互不兼容的列车系统,由此带来的支出可能远比世界上其他单一隧道宽度的地铁系统要多得多。 + +IRT 和 BMT 之间的竞争所造成的历史遗留问题告诉我们,地铁系统本身就趋向于垄断经营。相比较于两家运营商相互竞争,只有一家运营商更能解决问题。乘客们虽然失去了选择的余地,但再也不用担心带了一张地铁卡却忘记了另一张的问题。 + +那么,地铁和社交网络又有什么关系呢?我在想,Facebook 是否和 MTA 一样都有自然垄断的属性呢?事实上,无论是自然垄断还是非自然垄断,Facebook 貌似确有垄断能力。当然它垄断的不是社交媒体本身(我在 Twitter 上面花的时间更多),而是垄断了与现实中认识的人之间的线上联系。Facebook 能够垄断所谓的“社交图谱”;如果我不用担心会失去与别人的联系方式,那我明天就会卸载 Facebook。我对 Facebook 对我身上的这种垄断权力感到非常气愤。不过,我却不会生 MTA 的气,即便从字面上和隐喻上来讲,纽约市地铁都是一堆焚烧着的、火舌乱窜的垃圾。说到底,我愤怒是因为我觉得不同于 MTA 的自然垄断,Facebook 的垄断属于非自然垄断。 + +我的意思是,如今 Facebook 之所以能拥有所有人的社交数据,因为它碰巧是第一个做大做强、确立巨头地位的社交平台,而不是因为其他社交平台难以或者无法与之竞争。不过,难道真是因为这样吗?许多事实告诉我们,原因并非如此。Facebook 仅仅是先入为主,还是它提供的服务真的比其他社交平台要好?如果你想联系老朋友,只有 Facebook 这一个平台的话,不会方便许多吗?在一个有几个 “Facebook” 相互竞争的情况下,如果你和你男朋友 Facebook 上面的感情状态都显示“交往中”,但是他始终没来得及更新他在 VisageBook 上的感情状态,那上面现在还显示着他和他大学前任的关系,那么这种情况意味着什么呢?人们信任的又是哪个社交网站呢?如果社交网站有很多,难道在填写信息上面不会很耗时间吗? + +过去几年,由于中心化社交网络的缺陷暴露出来,许多人尝试构建去中心化的平台。基于开放标准,去中心化平台有望建立互通的社交网络生态(比如 [Fediverse][2])。可惜的是,其中没有一个平台能够取代主流社交网络。一个比较明显的原因是 网络效应network effects的力量:既然每个人都在用 Facebook,那么任何想要放弃 Facebook 的人都将会付出巨大的代价。有人会说,这一点恰恰证明了社交网络属于自然垄断行业。但我想说,Facebook、Twitter 等平台是自己选择封闭起来的。此外,鉴于人们已经设想出社交网络的互通性,并且付诸实践,那么封闭的社交平台引发的网络效应就无法证明社交网络具有自然垄断属性。 + +因此,在我看来,真正的问题是:之所以 Facebook 等平台到现在仍是主流社交网络,仅仅是因为网络效应,还是说与只有一家运营商的地铁系统一样,单一的主流社交网络效率更高? + +最后,这些问题让我想起了 FOAF。尽管人们似乎已经忘记了 FOAF 标准,但是早在 Facebook 出现之前,人们就尝试使用 FOAF 建立开放的、去中心化的社交网络。如果过去有哪个去中心化社交网络有机会早于 Facebook 占领如今它驻守的阵地,那只可能是 FOAF。考虑到世界上大部分人都有 Facebook 账号,而且了解 FOAF 的人相对较少,我们是否可以得到如下结论:同地铁一样,社交网络也有中心化和自然垄断的性质;亦或者,FOAF 项目说明,尽管去中心化社交网络可行,但由于其他原因,无法获得人们的广泛支持。 + +### 早期社交媒体的未来 + +FOAF 项目诞生于 2000 年,旨在建立一套表示个人身份以及人与人之间关系的通用标准。在今天看来,这一雄心勃勃的项目可能会让人感到惊讶,但是在上世纪末本世纪初,这样的想法再寻常不过了。当时网络Web(当时人们仍然这样称呼它)刚刚击败了 美国在线America Online 与 [Prodigy][3] 等封闭系统。这让人很自然地想到,计算机领域的创新发展必须要保持开放、基于标准,而且这也正是网络的特点。 + +许多人认为,网络下一场重头戏会是 语义网Semantic Web。我有篇文章介绍了关于语义网概念与运行原理的设想,所以这里不再赘述。但是我会简单谈谈推动人们研究语义网技术的愿景,因为 FOAF 标准正是这一愿景在社交网络方面的应用。 + +一篇题为 《[谷歌如何击败亚马逊和易贝,朝着语义网进军][5]How Google beat Amazon and Ebay to the Semantic Web》 的文章很好地描绘了语义网这一崇高理想。文章写于 2002 年,作者是 Paul Ford。这篇文章设想了 2002 年至 2009 年的情景:通过使用语义网,谷歌取代了亚马逊和易贝,成为电商平台主导者。文章指出,在未来,如果你想买东西,比如说一把二手的马丁吉他,可以在谷歌中输入 `buy:martin guitar`。根据你的邮编,谷歌会告诉你附近哪些人在卖马丁吉他。谷歌之所以可以获取卖家及其吉他的信息,是因为它可以读取资源描述框架标记语言(RDF),该语言是语义网的核心技术,用于描述资源之间的关系。人们可以将 RDF 内容嵌入网页,能实现很多用途,比如给要卖的东西打广告。Ford 预测,随着使用这种方式搜索和售卖商品的人数增加,亚马逊和易贝将失去它们在电商领域近乎垄断的地位。如果可以搜索全网,又有谁会执着于某个封闭的数据库呢?Ford 写道,即便是谷歌,最终也会失势。因为理论上,任何一个人都可以检索网络,查阅 RDF,提供类似于谷歌的搜索功能。起码,如果谷歌打算对语义网上的每笔交易按一定比例收取费用,以此盈利,那么以后随着相关竞争越来越激烈,谷歌的抽成比例很有可能会被迫降低。 + +Ford 所设想的未来是将 RDF 应用于电商领域,不过 RDF 更振奋人心的地方在于,它或许可以应用于各个领域。RDF 标准以及一系列相关标准,一旦得到广泛应用,被认为可以掀开基于数据库的软件服务的发展,如同 HTML 为文档出版带来新的发展契机一般。 + +RDF 以及其他语义网技术似乎准备立刻接管的另一个领域是社交网络。FOAF 项目最初的名字是“RDF 网络环RDF Web Ring”,是语义网发展的产物,旨在实现语义网的设想。FOAF 自诞生之初就被人们看好,有人甚至认为,FOAF 必定会淘汰掉其他社交网站。2004 年《卫报》的一篇文章这样介绍该项目: + +> 最初是 1996 年,SixDegrees 开始运营;接着是去年,出现了 Friendster;上周是 Orkut;下周 Flickr 也会登上舞台。这些网站不胜枚举,都是为了建立社交网络。如今,它们处在互联网发展的最前沿。但是,如果它们无法提供更实质性的好处,在 FOAF 标准得到广泛应用之后,它们就会很难存活下去。[^2] + +文章继续指出,社交网络面临的最大问题就是社交网站数量过多。这就需要一种能够将所有这些网站连接起来的手段。可行方案就是 FOAF ,它终将变革整个社交网络。 + +根据该文章,FOAF 可将不同的社交网站紧密连接起来,实现途径有三个要点: + + * FOAF 将创建机器可读的社交数据格式,可为各个社交网站识别读取,避免让用户在不同的网站上重复输入信息。 + * FOAF 标准下,联系人Contacts(个人信息管理程序)可生成上述格式的文件,供用户在各社交网站使用。 + * FOAF 标准下,这种机器可读的文件可寄放在个人主页上,可为各社交网站读取。这样一来,用户只需将修改过的信息推到自己的主页,其他平台就会同步更新。 + +在今天可能难以想象,但在 2004 年,至少在熟悉技术的网民和技术专栏记者看来,当时社交网络并不算少,但是每个网络的用户群体都很小。考虑到这个问题,虽然对现在的我们来说很陌生,我们就会明白为什么需要建立单一标准是有意义的,这个标准可以使网络的激增不再是一个负担。 + +### FOAF 规范 + +根据 FOAF 项目官网现有的介绍,FOAF 是“一种计算机语言,用于生成与人相关的各种条目的字典,条目以结构化数据的形式储存”。2000 年,FOAF 的创始人 Dan Brickley 和 Libby Miller 发表了一份关于该项目目标的文件,给出了不同的解释,强调了 FOAF 的最终目标:作为工具,FOAF 可让计算机像人类一样读取用户主页的个人信息 [^3]。FOAF 将会“帮助网络提供当前只有中心化平台才能提供的服务”[^4]。通过为个人以及人际关系定义一个标准词汇,FOAF 可以理解用户输入的内容,比如“找找今天推荐的医院医疗人员”,或者“找找曾与我合作撰写过文件的人最近发表的文章”。 + +由于 FOAF 是标准化的词汇表,所以该项目最重要的成果莫过于 FOAF 规范。FOAF 规范规定了 RDF 类 和 RDF 属性(这里我不再解释什么是 RDF,如果感兴趣可查阅 [我关于语义网的文章][4])。RDF 的类由 FOAF 规范规定,表示要描述的对象,比如人(`Person` 类)和组织(`Organization` 类)。RDF 属性由 FOAF 规范规定,表示针对不同对象所做的逻辑声明。例如,一个人可以有一个名字(`givenName` 属性)、一个姓氏(`familyName` 属性),可能还有人格类型(`myersBriggs` 属性)以及与他人的距离或者位置信息(`based_near` 属性)。FOAF 规范的思想是,这些类和属性要足以表示人们在个人主页上显示的身份信息和朋友信息。(LCTT 译注:Myers–Briggs 即迈尔斯布里格斯类型指标,是一种人格类型理论模型。) + +FOAF 规范给出了一份 FOAF 文档的范例。该实例的格式是 XML,不过也可以使用 JSON 等格式进行编写: + +``` + + Dan Brickley + + + + +``` + +这份 FOAF 文件对一个人进行了描述,他的名字叫做 Dan Brickley(该规范的作者之一),他的主页在 `http://danbri.org`,他还有个叫做“open ID”的东西,还有一张图片在 `/images/me.jpg` —— 估计是 Brickley 的主页地址的相对链接。FOAF 的元素名称都会有 `foaf:` 前缀,表示它们是 FOAF 命名空间的一部分。相应地,RDF 的元素名称前面也都会有 `rdf:`。 + +为了说明 FOAF 不限于 XML 格式,这里从维基百科摘取了一个相似的例子,格式为 JSON-LD [^5]: + +``` +{ + "@context": { + "name": "http://xmlns.com/foaf/0.1/name", + "homepage": { + "@id": "http://xmlns.com/foaf/0.1/workplaceHomepage", + "@type": "@id" + }, + "Person": "http://xmlns.com/foaf/0.1/Person" + }, + "@id": "https://me.example.com", + "@type": "Person", + "name": "John Smith", + "homepage": "https://www.example.com/" +} +``` + +上面这份 FOAF 文件也描述了一个人,他的名字叫 John Smith,他的主页在 `www.example.com`。 + +理解 FOAF 原理的最好方法可能就是体验一下 [FOAF-a-matic][10],一个在线生成 FOAF 文档的工具。你可以在工具页面的表单里输入自己的相关信息,创建表示自己的 FOAF 文档(XML 格式)。FOAF-a-matic 说明了 FOAF 是如何避免在注册不同社交网站账号时重复输入社交信息的麻烦:如果每个社交网站都可以读取 FOAF,你只需要在没有注册过帐号的网站上引用你在 FOAF-a-matic 生成的 FOAF 文档,就可以注册一个新帐号了。 + +下面这个实例是我用 FOAF-a-matic 生成的稍微复杂一些的例子,表示我自己: + +``` + + + + + + + + + Sinclair Target + Sinclair + Target + + + + + John Smith + + + + + + +``` + +本例中,主要信息之前有很多其他内容,用于设置文档使用的各种 XML 命名空间。其中就有文档生成工具的信息,这样用户就能明白出了问题要向谁进行反馈。`foaf:Person` 元素给出了我的名字、电子邮箱和主页。其中嵌套了 `foaf:knows` 元素,说明我有个叫 John Smith 的朋友。 + +该例还体现了 FOAF 文档的另外一个重要功能:相互关联。还记得之前 John Smith 的例子吗?他的主页在 `www.example.com`。在我的这个例子中,我将 John Smith 列在了 `foaf:person` 元素里,上一级元素是 `foaf:knows`,表示我认识的人。此外,我还加入了 `rdfs:seeAlso` 元素,放了 John Smith 主页的 FOAF 文档链接。由于加入了这一链接,程序在读取我的 FOAF 文档时,就能根据该链接读取他的 FOAF 文档,查找到更多关于 John Smith 的信息。在之前 John Smith 的 FOAF 文档里,John 并没有提供任何有关朋友的信息(包括我在内),这意味着程序无法确定我们两人之间的朋友关系。但如果他加入了朋友信息,程序在读取我的文档之后,不仅会发现我,也会发现 John、他的朋友、他的朋友的朋友,以此类推,直到程序穷尽我和 John 各自的社交图谱。 + +对于使用过 Facebook 的人来说这似乎很熟悉,也就是说,这个功能对你来说也应该很熟悉。FOAF 没有 `foaf:wall` 属性和 `foaf:poke` 属性,无法完美复制 Facebook 的功能。很明显,FOAF 也没有漂亮的蓝色界面,无法为用户提供可视化的 FOAF 社交网络,它只是一个词汇表。不过,Facebook 的核心功能(我认为这正是 Facebook 垄断能力的关键)在这里是以分布式的方式提供的。在 FOAF 标准下,好友可以将 FOAF 文档上传至个人主页,数字化展示他们真实的社交图谱,用户无需将个人数据的控制权交给 Facebook 这样一个中心化的数据库。要知道,由于对用户个人数据管理不当,扎克伯格大多数时间都在国会委员会前在向公众道歉。 + +### 暂时搁置的 FOAF + +浏览 FOAF 项目主页,你会发现在页面的右上角,有一张喜剧动画《飞出个未来Futurama》主角弗莱躺在休眠舱内的图片。这张图片是《飞出个未来》试播剧集的剧照,讲的是弗莱在 1999 年不小心跌进了低温休眠舱,直到 2999 年才再次苏醒过来的故事。我曾和 Brickley 在 Twitter 上简短地聊了一下,他告诉我,挂这张图片是为了告诉人们,未来 FOAF 项目目前“处于停滞状态”,尽管他希望将来有机会恢复这个项目,继续探索 21 世纪初关于网络运作方式的设想。 + +FOAF 从未像《卫报》期望的那般彻底改变社交网络。一些社交网站选择支持 FOAF 标准,比如 LiveJournal 和 MyOpera [^6]。FOAF 甚至还在 2004 年霍华德·迪恩Howard Dean竞选总统时发挥了一定作用:一群博主和程序员合力搭建起了一个将网站连接起来的网络,称其为“迪恩空间DeanSpace”,帮助迪恩竞选,并在网站上使用 FOAF 记录迪恩的支持者和帮助迪恩竞选的志愿者[^7]。不过,今天人们了解到 FOAF 主要还是因为它是 RDF 应用最为广泛的词汇表之一,而 RDF 正是现代网络的一个重要标准。如果在今天还能用到 FOAF 的话,可能就是谷歌“知识面板knowledge panels”所用技术的原型。知识面板是在用谷歌搜索时,出现在搜索结果右侧的一小块内容,会提供搜索关键词的基本信息。谷歌为推行其知识面板,使用了语义网项目的“后继者” schema.org 项目发布的词汇表[^8]。schema.org 用来描述人物的词汇表似乎有着 FOAF 的影子,两者的目的大多也是相同的。 + +那么,为什么 FOAF 还是失败了呢?为什么人们都在用 Facebook 呢?且不提 FOAF 只是一个简单的标准,没有 Facebook 那么丰富的功能,如果 FOAF 发展势头保持下去,很有可能就会出现相关软件和应用,带来像 Facebook 那样的体验。问题是,在 Facebook 还未发展到能与之分庭抗礼之时,FOAF 这股分布式社交网络的新生力量为什么没能得到广泛应用呢? + +恐怕这个问题可能没有唯一的答案,不过非要我说的话,我觉得最关键的一点是,只有在每个人都有个人网站的情况下,FOAF 才有意义。在上世纪末本世纪初,人们理所当然地觉得网络最终会出现这种情况,因为就我所知,互联网的早期用户多是高产的博客写手、参政的技术专家,他们都希望能有个自己的平台。但是,现实情况却是,普通用户并不愿意学习怎么搭建和运营网站。FOAF 允许你掌控自己的社交信息并将其推送到各类社交网络上,省去了到处注册账号的麻烦。如果你已经有了储存社交信息的个人网站,那么这个想法应该很诱人。但实际上,相比较于买域名、折腾 XML 文档,大多数人觉得填写信息、注册 Facebook 账号来得更容易些。 + +那么,这与我最初的问题(Facebook 是否属于自然垄断)有什么相关呢?我不得不承认,FOAF 的案例说明,社交网络 _的确_ 拥有自然垄断属性。 + +其实,关于用户不愿管理自己的数据这一问题,本身并没有那么重要,因为通过让普通用户在熟悉技术的用户所设置的节点上储存个人信息,[Mastodon][14] 等现代分布式社交网络已经解决了这个问题。这也表明,人们多么不愿意折腾复杂的东西。对去中心化社交网络来说,这无疑是个坏消息,因为相较于中心化网络,去中心化网络更为复杂,用户对此再清楚不过了。 + +对于 FOAF:如果我要写一个能读取个人网站上 FOAF 数据的程序,假设 Sally 的 FOAF 文档提到了 John Smith,说他的主页是 `example.com`;Sue 的 FOAF 文档也提到了 John Smith,说他的主页是 `example.net`。在这种情况下,我应该怎么办呢?到底是只有一个 John Smith 而他正好有两个主页呢,还是这两个 John Smith 是不同的人呢?如果两个 FOAF 文档中 John Smith 的邮箱都是 `johnsmith@gmail.com`,又该怎么办呢?这种身份问题是 FOAF 的软肋。在一封 2003 年的邮件里,Brickley 写道,由于不存在而且可能也不应该存在一个“全球性的身份识别系统”,FOAF 采取的方法只能是“多元的”[^9]。FOAF 用户的邮件地址和主页地址等部分属性具有特殊性,因为邮件地址和主页地址都是独一无二的。因此,这些内容不可能相同的属性可以将人们的多个 FOAF 文档合并起来(用 Libby Miller 的话来说,“挤”在一起)。不过这些特殊属性不存在所谓优先级的说法,所以前面 John Smith 的问题还是不好解决。换句话说,是该相信主页,判定他们不是同一个人呢?还是要相信邮件地址,判定他们是同一个人呢?我真的能够在不干扰到用户的前提下,写出一个程序,解决这类问题吗? + +Facebook 拥有单一的数据库,不用顾虑政治性问题,有条件创建“全球性的身份识别系统”,给每个人发行独一无二的身份 ID,于是问题就迎刃而解了。 + +如果人们真的在乎对自己数据的持有权和掌控权,单是因为复杂难解应该不足以导致分布式社交网络的失败。但是 FOAF 的失败表明,人们从未重视过对自己数据的掌控权。正如一位博主所说,“所谓‘用户想要拥有自己的数据’只不过是一个想法,和实际应用没有关系”[^10]。如果用户对控制的重视程度不足以承受额外的复杂性,如果中心化系统比去中心化系统更为简单易用,如果中心化系统有发展为封闭系统的趋向,借此取得成功,从而享受网络效应带来的巨大效益,那么社交网络确实属于自然垄断。 + +即便如此,我认为地铁系统的案例和社交网络的案例仍存在不同之处。我可以欣然接受 MTA 对地铁交通的垄断,因为我希望地铁系统本身就应该是长期垄断行业。如果纽约地铁只有一家运营商,那么它只能是政府,至少在名义上,政府比没有竞争对手的私企更加负责。但是我却不希望社交网络属于自然垄断。地铁建好了基本上就是一成不变的,但数字世界却在不断演变发展。在今天,分布式社交网络也许比中心化网络更加复杂,就好比带两张地铁卡总是比只带一张要麻烦的多。不过,在未来,互联网会发生根本性变革,那时分布式技术将会更易于使用。 + +如果未来果真如此,FOAF 可能会作为建立分布式社交网络的第一次尝试为人们记住。在企业大型数据库所驱动的中心化网络时代结束之后,分布式网络将会得到人们的长期青睐。 + +_如果你喜欢这篇文章,欢迎关注推特 [@TwoBitHistory][28],也可通过 [RSS 馈送][29] 订阅,获取更多最新文章。_ + +[^1]: 请注意,这里我没有用“消亡”一词。 +[^2]: Jack Schofield, “Let’s be Friendsters,” The Guardian, February 19, 2004, accessed January 5, 2020, .  +[^3]: Dan Brickley and Libby Miller, “Introducing FOAF,” FOAF Project, 2008, accessed January 5, 2020, .  +[^4]: 同上。 +[^5]: Wikipedia contributors, “JSON-LD,” Wikipedia: The Free Encyclopedia, December 13, 2019, accessed January 5, 2020, .  +[^6]: “Data Sources,” FOAF Project Wiki, December 11 2009, accessed January 5, 2020, .  +[^7]: Aldon Hynes, “What is Dean Space?”, Extreme Democracy, accessed January 5, 2020, .  +[^8]: “Understand how structured data works,” Google Developer Portal, accessed January 5, 2020, .  +[^9]: tef, “Why your distributed network will not work,” Progamming is Terrible, January 2, 2013, .  +[^10]: Dan Brickley, “Identifying things in FOAF,” rdfweb-dev Mailing List, July 10, 2003, accessed on January 5, 2020, .  + +-------------------------------------------------------------------------------- + +via: https://twobithistory.org/2020/01/05/foaf.html + +作者:[Two-Bit History][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://twobithistory.org +[b]: https://github.com/lujun9972 +[1]: tmp.mJHAgyVHGr#fn:1 +[2]: https://en.wikipedia.org/wiki/Fediverse +[3]: https://en.wikipedia.org/wiki/Prodigy_(online_service) +[4]: https://twobithistory.org/2018/05/27/semantic-web.html +[5]: https://www.ftrain.com/google_takes_all +[6]: tmp.mJHAgyVHGr#fn:2 +[7]: tmp.mJHAgyVHGr#fn:3 +[8]: tmp.mJHAgyVHGr#fn:4 +[9]: tmp.mJHAgyVHGr#fn:5 +[10]: http://www.ldodds.com/foaf/foaf-a-matic +[11]: tmp.mJHAgyVHGr#fn:6 +[12]: tmp.mJHAgyVHGr#fn:7 +[13]: tmp.mJHAgyVHGr#fn:8 +[14]: https://en.wikipedia.org/wiki/Mastodon_(software) +[15]: tmp.mJHAgyVHGr#fn:9 +[16]: tmp.mJHAgyVHGr#fn:10 +[17]: https://twitter.com/TwoBitHistory +[18]: https://twobithistory.org/feed.xml +[19]: https://twitter.com/TwoBitHistory/status/1192196764239093760?ref_src=twsrc%5Etfw +[20]: tmp.mJHAgyVHGr#fnref:1 +[21]: tmp.mJHAgyVHGr#fnref:2 +[22]: tmp.mJHAgyVHGr#fnref:3 +[23]: tmp.mJHAgyVHGr#fnref:4 +[24]: tmp.mJHAgyVHGr#fnref:5 +[25]: tmp.mJHAgyVHGr#fnref:6 +[26]: tmp.mJHAgyVHGr#fnref:7 +[27]: tmp.mJHAgyVHGr#fnref:8 +[28]: tmp.mJHAgyVHGr#fnref:9 +[29]: tmp.mJHAgyVHGr#fnref:10 +[0]: https://img.linux.net.cn/data/attachment/album/202212/10/112053vbi9icvy6xxuv6h9.jpg \ No newline at end of file diff --git a/published/202212/20210103 How open principles will impact the future of work.md b/published/202212/20210103 How open principles will impact the future of work.md new file mode 100644 index 0000000000..3631e38bdd --- /dev/null +++ b/published/202212/20210103 How open principles will impact the future of work.md @@ -0,0 +1,96 @@ +[#]: collector: (lujun9972) +[#]: translator: (CanYellow) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-15388-1.html) +[#]: subject: (How open principles will impact the future of work) +[#]: via: (https://opensource.com/open-organization/21/1/open-is-future-of-work) +[#]: author: (Ron McFarland https://opensource.com/users/ron-mcfarland) + +开放原则将如何影响未来工作 +====== + +> 在许多方面,我们的工作性质塑造了我们。那么,未来工作的性质将发生巨大变化,我们又该做何准备呢? + +![][0] + +如果我们将“工作”定位为获得某种回报的任何形式的付出,那么工作是,并且一直是,决定我们是谁的主要因素之一。工作是我们生活的一个重要方面。在工作中(不论这对我们意味着什么),我们结识朋友,我们获得智力激励和情感满足的源泉,我们得到成长,我们感受自身无穷的创造性。对于我们的家人、朋友、社区和社会而言,工作极其重要,我们不应轻视工作的重要性亦或视其为理所当然。 + +因此如果未来 [工作的性质将发生变化][2],这可能意味着恰恰是我们 _自我认知_ 中的某些关键要素将发生变化。我们应该认真准备应对这些转变。 + +考察自第一次工业革命(18、19世纪)以来的工作转变,很多人从从事农业劳动转为进入城市工厂工作,这从根本上改变了他们的生活方式。新的工作方式需要全新的、更专业的工作技能,而不再是农村经济中常见的手艺。接下来的几十年里,当我们检视我们的个人工作环境时,我们可能会发现工业时代以来的这一趋势可能发生逆转:从层级制度、可代替的通用技术与活动,重新转变为横向协作与对专业知识的熟练掌握的更高要求(回到手艺时代)。 + +不过,这一次,这些转变的到来将是全球性的而非区域性的,而且转变的速度要快的多。 + +在这一新的工作环境中,[开放组织原则][3] 将扮演关键性的角色。 + +本系列中,我将回顾 [Lynda Gratton 教授的作品《转变》][4](LCTT 译注:中译本:《转变:未来社会工作岗位需求变化及应对策略》,ISBN:9787121152894),本书成书于 2014 年(LCTT 译注:本书原版有 [2011 版][T1] 与 [2014 版][T2]),书中数据于 2010 年收集,但今天仍然适用(将来也一样)。本书中,Gratton 教授指出了工作将在 2025 到 2050 年间如何变化。这是关键信息,因为它有助于我们在准备和发展我们的职业生涯时作出正确的选择。 + +Gratton 教授阐释了在上述时间段内影响未来工作的主要因素。本系列中,我们将对它们做一个总结并解释开放组织原则如何融入它们之中。 + +### 影响未来工作的五个因素 + +煤炭与蒸汽动力的发明推动了第一次工业革命。[Gratton 教授][5] 说,今天,五种微妙的力量导致了类似的转变: + + 1. 日益增长的全球化活动 + 2. 技术的快速进步 + 3. 人类寿命与人口数量 + 4. 社会与家庭结构变化 + 5. 低碳经济的需求 + +简而言之,计算机更快了,材料更强了,药物能治疗更多的疾病使得人类的寿命更长。这些都在不同程度上影响了我们未来的工作方式。以下针对上述每一点的一些说明。 + +#### 1、全球化 + +在以前的文章 [《全球化:开放的历史》][6] 中,我讨论了全球化的多种动力与影响因素,其中之一就是贸易。从 1950 年到 2010 年的 60 年间,全球贸易量增加了 60 倍,与此同时运输成本降低了,发展中国家不仅看到了贸易增长,而且看到了新的创新。我还在我的另一篇文章 [《历史变迁中的开放组织》][7] 中讨论了历史早期的全球化。我另外在我的文章 [《全球性的开放组织是怎么样的》][8] 中探讨了从现在到未来全球治理的重要性。如 Gratton 教授所言,全球化在未来工作中将发挥不可否认与不可避免的影响。 + +> 如果未来工作的性质将发生变化,这可能意味着恰恰是我们自我认知中的某些关键要素将发生变化。我们应该认真准备应对这些转变。 + +#### 2、技术 + +计算成本一直在以惊人的速度下降,它还将继续下降。这有助于连接到目前为止仍然大部分被隔离在更大的全球经济之外的数十亿人。他们将开始进入劳动力市场并成为更有影响力的消费者。与此同时,计算机与高级自动化在未来将 [取代人类工作][9],这都将影响未来的工作转变。 + +#### 3、人口数量与寿命 + +Gratton 教授还记录了不同世代的人对未来工作的影响,尤其是在美国。年轻一代在未来将扮演主要角色,他们的态度将不同于上一代。此外,全球不同地区的出生率将影响经济繁荣。由于一些地区的人口降低而另一些的将会增加,将会出现更多的移民。他们将移民至 Gratton 教授谓之“创新集群”的地方。最后,Gratton 教授认为全球预期寿命将会变化。截至 2025 年,世界人口的 10% 将超过 65 岁,这些人口将更可能希望继续工作,以得到持续的收入、精神刺激、身体活动,与他人的联系以及生活的意义与目的的源泉。考虑到今天的很多儿童都更可能拥有超过 100 岁的寿命,如果他们在 65 岁退休,他们余下的至少 35 年里将做不了太多事情。基于这样的考虑,在未来职业道路的多次转换以及在社区与志愿服务项目中的积极参与将会大大拓展。 + +#### 4、社会 + +常规的变化之外,Gratton 教授还描述了一些社会变化。她说,未来女性在工作上的角色将会变化,人们将比以往拥有更多的选择来塑造他们希望的生活;随着个人劳动生产率的提升,平均空闲时间将比以往更多。 + +#### 5、能源 + +我在 [资源工业革命][10] 上的一篇演讲中讨论了资源节约型工业的扩张。格拉特教授为该对话补充了一些有价值的观点。她认为气候变化将逐渐成为主要议题,并导致运输与消费的降低。尤其是世界范围内的水资源供给将无法跟上用水需求。海水淡化项目将大幅扩张(可能由正在开发的 [第四代][11] 分布式小型模块化核电站提供动力)。环境灾难将使人们背井离乡,并在世界范围内形成移民社区。更多能效高的生活方式将会被发现和引入,这将影响未来工作。 + +### 为未来提前准备 + +上述五种力量将推动未来工作方式发生根本性的改变,Gratton 教授认为我们现在就需要开始为这样的未来提前做准备。本系列的下一篇文章中,我将介绍 Gratton 教授对未来的展望以及应对快速变化的未来的一些情境。个人如何将这些变化视作职业机会?另一方面,如果简单地选择对即将到来的变化 _视而不见_ 又会发生什么?我将回顾 Gratton 教授在这些问题上的思考。同样的,我也将解释开放原则如何形成必经的变革的核心。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/open-organization/21/1/open-is-future-of-work + +作者:[Ron McFarland][a] +选题:[lujun9972][b] +译者:[CanYellow](https://github.com/CanYellow) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/ron-mcfarland +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/team_dev_email_chat_video_work_wfm_desk_520.png?itok=6YtME4Hj (Working on a team, busy worklife) +[2]: https://opensource.com/open-organization/18/7/transformation-beyond-digital-2 +[3]: https://theopenorganization.org/definition/ +[4]: http://lyndagratton.com/books/the-shift/ +[5]: https://en.wikipedia.org/wiki/Lynda_Gratton +[6]: https://opensource.com/open-organization/20/7/globalization-history-open +[7]: https://opensource.com/open-organization/20/8/global-history-collaboration +[8]: https://opensource.com/open-organization/20/9/global-open-organization +[9]: https://opensource.com/open-organization/19/9/claiming-human-age-of-AI +[10]: https://www.slideshare.net/RonMcFarland1/the-starting-of-the-third-industrial-revolution +[11]: https://en.wikipedia.org/wiki/Generation_IV_reactor + +[T1]: https://isbnsearch.org/isbn/9780007427956 +[T2]: https://isbnsearch.org/isbn/9780007525850 +[0]: https://img.linux.net.cn/data/attachment/album/202212/28/094540cru0c2b8g2rz2ur2.jpg \ No newline at end of file diff --git a/published/202212/20210209 Understanding Linus-s Law for open source security.md b/published/202212/20210209 Understanding Linus-s Law for open source security.md new file mode 100644 index 0000000000..4ff8387172 --- /dev/null +++ b/published/202212/20210209 Understanding Linus-s Law for open source security.md @@ -0,0 +1,90 @@ +[#]: collector: (lujun9972) +[#]: translator: (CanYellow) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-15344-1.html) +[#]: subject: (Understanding Linus's Law for open source security) +[#]: via: (https://opensource.com/article/21/2/open-source-security) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) + +理解开源安全中的林纳斯定律 +====== + +林纳斯定律Linus's Law即“只要有足够多的眼睛关注,任何漏洞都无处隐藏given enough eyeballs, all bugs are shallow”。那么林纳斯定律是如何应用于开源软件安全的呢? + +![][0] + +这篇文章讨论 Linux 对开源软件安全的影响。 + +开源软件的一个常被赞扬的优点是它的代码能够被任何人审查(安全专家通常称之为“代码审计”)。然而,如果你真的去问很多开源软件用户他们上一次检查代码是什么时候。你大概只能收获他们茫然的眼神或者是喃喃的低语。此外,对于一些相当大型的开源应用,有效地审查每一行代码也是困难的。 + +根据上述这些稍显不安的事实,我们不得不思考:如果没有人察看这些代码,它是开源还是闭源真的有关系吗? + +### 你应该相信开源吗? + +计算机爱好者倾向于作出认为开源软件比其他软件更加安全的传统假设。我们通常不会讨论这意味者什么:比较的基础是什么(比什么“更”安全?),或者上述结论是如何得到的。这是一个危险的陈述,因为它表明只要你将一些东西称之为“开源”,它就自动如魔法般地继承了更高的安全性。这不是开源,事实上,这正是开源安全非常反对的。 + +除非你已经亲自审计并理解了软件代码,否则就不应该假定一个应用程序是安全的。一但你做到了这一点,就可以给予它 终极信任ultimate trust。_终极信任_ 不是对计算机而言的,而是对你本人而言的,至少在这一应用程序被渗透攻击之前,你信任它是因为你选择了相信它是安全的。 + +使用者本人是唯一可以对软件代码给予终极信任的人,因此任何人想要获得这样的享受都必须亲自审查代码。相信其他人的话是不管用的。 + +在你已经亲自审计并理解了软件代码之前,你对一个应用程序给予的最大信任度是一个范围,可以是从 _根本不信任_ 到 _相当信任_ 之间。然而我们并没有一个关于信任程度的标准对照表,这是一个你必须亲自做出的个人选择。如果你已经从非常信任的人那里听说了一款应用程序是安全的,那么你可能会更信任这个软件,而不是信任那些你没有得到信任建议的东西。 + +然而,因为无法审计专有(闭源)软件代码,你不可能给予它 _终极信任_。 + +### 林纳斯定律 + +现实很骨感,并不是每个人都是程序员,同时也不是每个程序员都有时间检查数以万计的代码行。因此如果你没有亲自审查代码,你就只能选择(一定程度上)相信那些 _亲自_ 审查了代码的人。 + +那么,有哪些人会审查代码呢? + +林纳斯定律声称 _只要有足够的眼睛关注,任何漏洞都无处隐藏_,然而我们并不知道多少双眼睛是“足够”的。请不要低估这一数量,应用程序往往经过了远超你想象数量的人员审查。原始开发人员以及后续开发人员显然清楚他们自己写下的代码,不过开源软件往往都是团队成果,开源时间越长,阅读了代码的开发人员越多。新加入的开发人员也必须回顾项目代码的核心部分,因为他们必须学习基础代码以加入新的功能。 + +同时,为了使开源软件能够在 Linux 发行版上可用,负责开源软件打包分发的开发人员会加入多个项目。有时一个应用程序可能会在不熟悉项目代码的情况下打包,但是大多数时候,开源软件打包人员都是熟悉所打包的项目代码的。这不仅仅是因为他们不想在他们不信任的软件上签名,还由于他们可能不得不修改代码来使得程序能够正确编译。漏洞报告人员和漏洞修复人员一般也是熟悉代码库的,因为他们需要尝试解决小到运行异常,大到程序崩溃的问题。当然,一些漏洞报告人员不是通过亲自审查项目代码,而是通过关注明显未按预期工作的现象,无意中揭示了代码漏洞。系统管理员通常都是通晓用户依赖的重要应用软件的代码的。最后,还有一些安全研究人员,他们专门深入代码内部以揭露潜在的漏洞。 + +### 信任与透明 + +很多人先入为主的认为大型软件的审计是基本不可能的,因为它由数以万计的代码行组成。不要被软件运行所需的代码量欺骗了。我们不需要真的阅读数以万计的代码行。代码是高度结构化的,可被利用的代码漏洞仅仅只是其中的一行,不过它通常影响软件的全部功能。 + +当然,也有例外。有时仅仅一个系统调用或者链接一个有缺陷的库文件就可能引入一系列漏洞。幸运的是,多亏安全研究人员以及漏洞数据库所扮演的积极角色,这些错误相对而言是容易发现的。 + +一些人指着错误追踪系统,比如 [通用漏洞披露][2]Common Vulnerabilities and Exposures(CVE)网站,并推断开源软件显而易见是不安全的。毕竟已经向公众公开了大量的安全风险,涉及许多开源项目。但是不要被数据欺骗了。只是因为我们看不到现闭源软件的漏洞,并不意味着闭源软件中不存在漏洞。事实上,已经有很多针对闭源软件的漏洞攻击提出了,闭源软件也是存在漏洞的。区别在于开发者(以及用户)可以查看开源软件的 _所有的漏洞_ 从而降低漏洞的影响。这是扩大对开源软件信任的系统机制的一部分,却正是闭源软件软件所缺少的。 + +对于任何代码而言,可能永远没有“足够的眼睛”来发现漏洞,但是开发社区越壮大、越多样化,越有机会发现和修复代码中的缺陷。 + +### 信任与人 + +在开源社区中,参与同一项目的众多开发者已经发现“不安全”的漏洞,却保持沉默的的可能性是微乎其微的,因为人们很少同意以这样的方式合谋。我们已经看到了在应对 COVID-19 的过程中,人类的行为是如何不一致了,在这里也一样: + + * 我们都发现了漏洞(病毒)。 + * 我们知晓如何避免它传播(待在家里)。 + * 然而病毒还是在持续传播,因为总是有一个或者多个人偏离了消减疫情的计划。 + +开源软件中的漏洞也一样,如果有人发现了漏洞总会公之于众(当然,我们说的是“假如”能够发现)。 + +然而就专有软件而言,有很大可能参与项目的众多开发者即使注意到不安全的漏洞却仍然保持沉默,因为专有模式依赖于薪水。如果一个开发者将漏洞泄漏出来,他可能只是伤害了该专有软件的声誉,进而降低软件的销售额;或者,在更糟糕的情况下,他可能因此而丢了工作。开发人员拿着薪水秘密地研究软件,往往不会谈论其缺陷。如果你曾经是一名开发者,你可能曾经签署过 NDA (LCTT 译注:保密协议Non-Disclosure Agreement),也被培训过商业秘密的重要性,等等不一而足。专有软件鼓励在面对严重的秘密缺陷时保持沉默,更多时候甚至是强制要求沉默。 + +### 信任与软件 + +不要信任未经你审计的软件。 + +如果你必须相信未经你审计的软件,那么选择相信已经面向那些更有可能将软件缺陷公之于众的开发者公开代码的软件。 + +开源软件并没有比专有软件继承更高的安全性,但是修复它的系统得到了更好的规划、实施和人员配置。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/21/2/open-source-security + +作者:[Seth Kenlon][a] +选题:[lujun9972][b] +译者:[CanYellow](https://github.com/CanYellow) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/yearbook-haff-rx-linux-file-lead_0.png?itok=-i0NNfDC (Hand putting a Linux file folder into a drawer) +[2]: https://cve.mitre.org +[0]: https://img.linux.net.cn/data/attachment/album/202212/13/114637dg6w34suucuupucv.jpg \ No newline at end of file diff --git a/published/202212/20210330 A DevOps guide to documentation.md b/published/202212/20210330 A DevOps guide to documentation.md new file mode 100644 index 0000000000..79f11c85c2 --- /dev/null +++ b/published/202212/20210330 A DevOps guide to documentation.md @@ -0,0 +1,94 @@ +[#]: subject: "A DevOps guide to documentation" +[#]: via: "https://opensource.com/article/21/3/devops-documentation" +[#]: author: "Will Kelly https://opensource.com/users/willkelly" +[#]: collector: "lujun9972" +[#]: translator: "Veryzzj" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15349-1.html" + +文档写作的 DevOps 指南 +====== + +> 将文档写作加入到 DevOps 的生命周期中。 + +![][0] + +DevOps 正在挑战技术文档的规范,这在 IT 历史上是前所未有的。从自动化到提高交付速度,再到拆除瀑布式软件开发生命周期模型,这意味着业务和技术文档写作的理念需要做出巨大改变。 + +以下是 DevOps 对技术文档写作不同方面的影响。 + +### 技术写手的角色变化 + +技术写手必须适应 DevOps。好消息是,许多技术写手已经加入到开发团队中,并且拥有合作关系和不断增长的产品知识的技术写手很具优势。 + +但是如果一个技术写手习惯于独立工作,并依赖于领域专家的草稿作为文档的基础,那么就需要做一些调整。 + +进行一些投资,以确保文档和其他与项目有关的内容开发工作获得所需的工具、结构和支持。从改变 [技术写手聘用方式][2] 开始。以 [DevOps 的速度][3] 编写文档需要重新思考内容规划,并打破 DevOps 团队和支持项目的技术写手之间长期存在的隔阂。 + +DevOps 使开发团队摆脱了传统文档实践的束缚。首先,文档 [完成的定义][4] 必须改变。一些企业的文化使技术写手成为软件开发的被动参与者。DevOps 提出了新的要求:随着 DevOps 文化的转变,技术写手的角色也应发生变化。技术写手需要(且必须适应)DevOps 提供的透明度。他们必须融入 DevOps 团队。取决于组织如何塑造这个角色,将技术写手带入团队可能会带来技能上的挑战。 + +### 文档标准、方法和规格 + +虽然 DevOps 还没有影响到技术文档本身,但开源社区已经加强了对应用编程接口(API)文档的帮助,已经有不同规模的企业的 DevOps 团队正在使用这些文档。 + +用于记录 API 的开源规范和工具是个非常值得关注的领域。我想这是由于 [谷歌文档季][5] 的影响,它使开源软件项目能够获得专业的技术写作人才来解决他们最关键的文档项目。 + +开源 API 属于 DevOps 文档讨论的一部分。云原生应用集成需求的重要性正在上升。[OpenAPI 规范][6](一个定义和记录 API 的开放标准)是在 DevOps 环境下 API 文档的良好资源。然而,该规范会导致文档的创建和更新过程变得很费时,这使其饱受批评。 + +曾经也有短暂尝试过创建 [持续文档][7]Continuous Documentation,并且还有一个来自 CA(现在的 Broadcom)的创建 [DocOps][8] 框架的运动。然而,DocOps 从来没有作为一个行业运动流行起来。 + +DevOps 文档标准的现状意味着 DevOps 团队(包括技术写手)需要在项目的最初阶段就开始创建文档。要做到这一点,你需要把文档作为一个敏捷故事和(同样重要的)管理期望,并且把它与年度绩效评估放在一起执行。 + +### 文档工具 + +文档的编写应该以一种所有团队成员都可以使用的格式或平台在线进行。MediaWiki、DokuWiki、TikiWiki 和其他 [开源维基][9] 为 DevOps 团队提供了一个编写和维护文档的中央仓库。 + +让团队选择他们的维基平台,就像让他们选择他们的其他持续集成/持续开发(CI/CD)工具链一样。开源维基强大之处在于其可扩展性。例如,DokuWiki 包括一系列的扩展,你可以通过安装这些扩展来创建一个符合你的 DevOps 团队的创作要求的平台。 + +如果你有足够的野心来加强你的团队的编写和协作能力,[Nextcloud][10](一个开源的云协作套件)是一个让你的 DevOps 团队上网并给他们提供编写文档所需工具的选择。 + +### DevOps 最佳实践 + +文档在 DevOps 转型中也发挥着作用。例如,你会想要记录组织从 DevOps 实现效率和流程增益的最佳实践,这些信息太重要了,不能靠着 DevOps 团中之间口耳相传。如果你所在的组织有多个 DevOps 团队,那么文档就是统一的力量,它可以促进最佳实践的标准化,并设置了衡量代码质量的基准指标。 + +一般情况下,开发人员承担了记录 DevOps 实践的工作。即使他们的组织有技术写手,他们也可能跨开发团队工作。因此,开发人员和系统管理员能够捕捉、记录和交流他们的最佳实践是很重要的。这里有一些朝正确的方向发展的提示: + +* 提前花时间为 DevOps 最佳实践创建标准模板。不要陷入复制在线模板的陷阱。采访利益相关者和团队来创建一个符合团队需求的模板。 +* 寻找一些创造性的信息收集的方法,例如记录团队会议和使用聊天系统日志来作为文档的基础。 +* 建立一个用于发布最佳实践的维基。使用维基可以跟踪编辑和更新。这样的平台可以帮助团队在最佳实践发生变化时进行更新和维护。 + +当在构建 CI/CD 工具链时记录依赖关系是非常明智的。尤其是当加入新的团队成员时,你会发现这些记录非常有用,另外当团队成员忘记一些事情时,这也是一种保险。 + +最后,自动化对 DevOps 利益相关者和从业者都很有吸引力。在自动化中断之前,一切都很有趣。拥有自动化运行手册、管理指南和其他内容的文档(并且是最新的)意味着无论何时发生故障,员工都可以让自动化重新工作。 + +### 最后一些想法 + +DevOps 对于技术文档来说是一个积极的因素。它将内容开发纳入 DevOps 生命周期,并打破组织文化中开发人员和技术作者之间的隔阂。在没有技术写手的情况下,团队就可以使用工具来加快文档创作的速度,以与 DevOps 的速度相匹配。 + +你的组织将如何把文档加入到 DevOps 生命周期?请在评论区分享你的经验。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/21/3/devops-documentation + +作者:[Will Kelly][a] +选题:[lujun9972][b] +译者:[Veryzzj](https://github.com/Veryzzj) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/willkelly +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/typewriter-hands.jpg?itok=oPugBzgv "Typewriter with hands" +[2]: https://opensource.com/article/19/11/hiring-technical-writers-devops +[3]: https://searchitoperations.techtarget.com/opinion/Make-DevOps-documentation-an-integral-part-of-your-strategy?_ga=2.73253915.980148481.1610758264-908287796.1564772842 +[4]: https://www.agilealliance.org/glossary/definition-of-done +[5]: https://developers.google.com/season-of-docs +[6]: https://swagger.io/specification/ +[7]: https://devops.com/continuous-documentation +[8]: https://www.cmswire.com/cms/information-management/the-importance-of-docops-in-the-new-era-of-business-027489.php +[9]: https://opensource.com/article/20/7/sharepoint-alternative +[10]: https://opensource.com/article/20/7/nextcloud +[0]: https://img.linux.net.cn/data/attachment/album/202212/15/101537c4kcxxzqzh6fxkor.jpg \ No newline at end of file diff --git a/published/202212/20210917 Open source game achievements.md b/published/202212/20210917 Open source game achievements.md new file mode 100644 index 0000000000..5cb5ca3dea --- /dev/null +++ b/published/202212/20210917 Open source game achievements.md @@ -0,0 +1,82 @@ +[#]: subject: "Open source game achievements" +[#]: via: "https://fedoramagazine.org/open-source-game-achievements/" +[#]: author: "Dennis Payne https://fedoramagazine.org/author/dulsi/" +[#]: collector: "lujun9972" +[#]: translator: "toknow-gh" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15389-1.html" + +Gamerzilla:一个开源游戏成就系统 +====== + +![][1] + +Photo by [Michał Parzuchowski][2] on [Unsplash][3] + +> 了解开源游戏成就系统 Gamerzilla。它使游戏开发者能够独立于游戏平台实现成就系统。 + +一些开源游戏的质量已经媲美商业游戏。尽管还难以比肩 3A 大作,但开源游戏在独立游戏中已颇具竞争力。不过,游戏玩家的期望是随时间变化的。早期的游戏只有高分成就。不断增加的成就种类促使玩家反复重玩游戏。比如你可能达到了满级,却还没有找到所有隐藏物品或没有完成全物品收集。Xbox 360 推出了首个在线多游戏成就系统。随后其它游戏平台也纷纷推出了自己的成就系统。 + +开源游戏在很大程度被游戏平台的成就系统排除在外。你可以在 Stream 上发布开源游戏,但这需要付费。游戏平台主要与公司合作,而不是与自由软件社区合作。这也进一步把玩家锁定在了非自由的游戏平台上。 + +商业游戏开发商也没有得到太多好处。由于不能共享成就,一些享受成就的玩家拒绝从其他商店购买游戏。这种锁定效应增强了游戏平台的话语权。由于各个游戏平台使用不同的系统,开发者不得不针对它们分别进行适配和测试。较小的游戏平台则可能完全被忽略掉。并且平台方能够访问到所有使用该平台的公司的成就数据,这些数据可以被用来扩大竞争优势。 + +### Gamerzilla 的架构 + +[Gamerzilla][4] 是一个致力于改善这种现状的开源游戏成就系统。Gamerzilla 在设计上同时考虑了开源游戏和商业游戏。你可以运行自己的 Gamerzilla 服务器,使用游戏商店提供的服务器,甚至 Linux 发行版提供的服务器。服务器也可以由其他团体来运行。在哪里购买游戏不再重要。成就数据都会上传到你的 Gamerzilla 服务器上。 + +一个基本的成就系统需要两个要素:游戏和 Gamerzilla 服务器。然而随着游戏数量增长,这种设计会暴露出其缺点。每个游戏都需要证书才能上传数据到服务器。由于拥有大量的游戏资源,并且能够在不同游戏商店之间同步数据,游戏启动器成为了众多玩家的选择。通过让启动器支持 Gamerzilla,游戏本身就不再需要证书了。游戏结果直接从启动器上传到 Gamerzilla 服务器。 + +freegamedev.net 曾提供了社交网络系统 Hubzilla。我们基于此开发了一个插件来进行 Gamerzilla 的开发。不幸的是 Hubzilla 的一次升级导致了 freegamedev.net 的服务故障,因此 freegamedev.net 决定不再提供它了。 + +目前 Gamerzilla 服务器有两种实现。维护 Hubzilla 是一项复杂的工作,所以我们用 .Net 和 React 开发了一个独立的 Gamerzilla 服务器。游戏调用的 API 是相同的,所以不用关心连接的服务器是哪种实现。 + +游戏启动器的开发和支持工作通常是滞后的。为了方便启动器增加对 Gamerzilla 的支持,我们开发了 libgamerzilla。这个库负责处理启动器、游戏和 Gamerzilla 服务器之间的交互。目前只有 GameHub 实现了一个支持 Gamerzilla 的版本,并将在近期整合到项目中。Fedora 上的 libgamerzilla-server 是一个临时解决方案。它不启动游戏,而是监听成就并把成就上传到服务器。 + +支持 Gamerzilla 的游戏在不断增长。与游戏启动器一样,开发者使用 libgamerzilla 来完成 Gamerzilla 的集成工作。这个库由 C 语言实现,已经被 Python 和 nim 等多种编程语言使用。对于那些已经有成就系统的游戏,只需要花几天时间就可以完成对 Gamerzilla 的支持。其他游戏想要支持 Gamerzilla,大部分时间都是花在收集信息和授予成就上。 + +### 架设服务器 + +架设服务器最容易的方式是使用 Hubzilla 插件。但是运行 Hubzilla 站点却不是一件轻松的事情。在 Fedora 上架设基于 .Net 和 React 的服务器相对来说要容易一些,尽管这仍然需要许多步骤。详细步骤请参考 [readme][5] 文件。需要这么多步骤的一部分原因是目前没有预编译好的发布版本。这意味着你需要自己安装 .Net,动手构建 React 源码部分。构建完成之后,React 代码会直接运行在 Apache 中。.Net 后端则运行在单独的服务上。Apache 作为代理负责把所有 Gamerzilla API 请求转发给后端服务。 + +按上面的步骤操作,Gamerzilla 已经运行起来了,但是现在还没有用户。当然应该有一个简单的方式来创建管理员和注册新用户。但是该功能还没有完成。目前只能通过 sqlite3 命令行来录入用户信息。具体步骤请参考 [readme][5] 文件。用户可以是公开可见的,也可以是隐藏的。批准标记可以让新用户不立刻使用该系统,但是网络注册是必须的。在设计时我们已经考虑了用户相关模块的可替换性。通过替换 `backend/Service/UserService.cs` 就可以与其他站点进行集成。游戏网站也可以通过这种方式来为用户提供 Gamerzilla 成就系统。 + +目前 Gamerzilla 的后端使用的是 sqlite 数据库。我们还没有对它进行过性能测试。我们预计较大型的应用安装需要改进系统以使用更鲁棒的数据库。 + +### 测试 + +目前要找一个支持 Gamerzilla 的游戏启动器太难了。如果你安装了 libgamerzilla-server,就可以在命令行中运行 `gamerzillaserver` 命令。首次运行该命令时需要输入 URL 和登录信息。以后再运行时会直接从配置文件读取这些信息。目前更正错误的唯一方法是删除 `.local/share/gamerzillaserver/server.cfg` 再重新运行 `gamerzillaserver` 命令。 + +大多数游戏还没有支持 Gamerzilla 的版本。[itch.io 上的 《Pinball Disc Room》][6],它的 Linux 版本支持 Gamerzilla,但是它的网页版是没有成就系统的。这款游戏只有两个成就:一个是存活 10 秒钟,另一个是解锁并使用隧道。只需要稍加练习,你就能获得一个成就。由于这款游戏没有可视化的成就提示消息,你需要查看 Gamerzila 服务器才能确认成就。 + +目前打包到 Fedora 中的游戏都还不支持 Gamerzila。《SuperTuxKart》 已经整合了对 Gamerzila 的支持,正在等待发布新版本。《Seahorse adventures》 和 《Shippy 1984》 添加了成就,但是新发布版本还没有打包。还有一部分游戏由我们独立完成了对 Gamerzila 的支持,但我们的拉取请求pull request或其它联系尝试还没有得到开发者的回应。 + +### 后续工作 + +Gamerzilla 需要更多游戏的支持。目前已经有很多游戏支持 Gamerzilla,并且正在以大约每月一个的速度增长。如果你有喜欢的游戏,可以请求开发方支持 Gamerzilla。如果你是游戏开发者,并且在支持 Gamerzilla 上需要技术支持,请联系我们。 + +服务器的开发工作在缓步开展中,我们希望不久之后就会有一个可用的注册系统。在那之后我们可能会建立一个永久托管站点。目前你可以看到我们的 [测试服务器][7]。一些人对于使用 .Net 作为后端表示担忧。我们的 API 并不复杂,可以很容易用 Python 重写。 + +最大的不确定性来自游戏启动器方面。GameHub 希望有一个通过用的成就接口。未来我们可能会在这方面与他们开展合作。增加对 itch.io 应用的支持可以提升系统的关注度。另一种方案是完全抛开启动器。也许可以将 gamerzillaserver 添加到 Gnome 中。然后你就可以在一个设置页面里配置 URL 和登录信息。这样任何启动的游戏都可以记录成就了。 + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/open-source-game-achievements/ + +作者:[Dennis Payne][a] +选题:[lujun9972][b] +译者:[toknow-gh](https://github.com/toknow-gh) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://fedoramagazine.org/author/dulsi/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2021/09/game_acheivements-816x345.jpg +[2]: https://unsplash.com/@mparzuchowski?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText +[3]: https://unsplash.com/s/photos/jenga?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText +[4]: http://identicalsoftware.com/gamerzilla/ +[5]: https://github.com/dulsi/gamerzilla.net#readme +[6]: https://dulsi.itch.io/pinball-disc-room +[7]: http://108.49.106.217/ diff --git a/published/202212/20210922 Install PowerShell on Fedora Linux.md b/published/202212/20210922 Install PowerShell on Fedora Linux.md new file mode 100644 index 0000000000..e008f88174 --- /dev/null +++ b/published/202212/20210922 Install PowerShell on Fedora Linux.md @@ -0,0 +1,292 @@ +[#]: subject: "Install PowerShell on Fedora Linux" +[#]: via: "https://fedoramagazine.org/install-powershell-on-fedora-linux/" +[#]: author: "TheEvilSkeleton, Ozymandias42 https://fedoramagazine.org/author/theevilskeleton/ https://fedoramagazine.org/author/ozymandias42/" +[#]: collector: "lujun9972" +[#]: translator: "cool-summer-021" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15312-1.html" + +在 Fedora Linux 系统上安装 PowerShell +====== + +![][0] + +PowerShell(也可写作 pwsh)是一个功能强大的开源命令行工具,它是面向对象的,由微软开发和维护。它的语法特征冗长,但对用户来说比较直观。本文介绍如何在主机上和在 Podman 或其他容器内安装 PowerShell。 + +### 为何使用 PowerShell + +PowerShell,正如它的名字那样,是一个强大的工具。它的句法冗长,但语义清晰。对那些不愿意写长命令的开发者来说,PowerShell 的大多数命令都有别名。可以使用 `Get-Alias` 或点击 [此处][15] 查询别名的使用方法。 + +PowerShell 和传统的 Shell 最大的区别在于它的输出管道。普通的 Shell 输出的是字符串或字符流,PowerShell 输出的是对象。这对命令管道的工作方式具有深远的影响,而且它具有很多的优点。 + +#### 演示例子 + +下面的例子体现的是冗长而清晰的特点。以 `#` 号开头的行是注释行。以 `PS > ` 开头的行是命令行,`PS > ` 是提示符: + +``` +# Return all files greater than 50MB in the current directory. +## Longest form +PS > Get-Childitem | Where-Object Length -gt 50MB +## Shortest form (with use of aliases) +PS > gci | ? Length -gt 40MB +## Output looks like this + Directory: /home/Ozymandias42/Downloads +Mode LastWriteTime Length Name +---- ------------- ------ ---- +----- 20/08/2020 13:55 2000683008 40MB-file.img + + +# In order: get VMs, get snapshots, only select the last 3 and remove selected list: +PS > Get-VM VM-1 | Get-Snapshot | Select-Object -Last 3 | Remove-Snapshot +``` + +上述例子说明了:Bash 脚本经常需要用 `cut`、`sed`、`awk` 等工具对输入/输出进行格式化,而使用 PowerShell 时通常就没有这个必要了。这是因为 PowerShell 的工作机制跟传统的 POSIX shell(例如 Bash、Zsh、Fish等)有本质的不同。传统的 Shell 的命令输出形式是字符串,而在 PowerShell 中,命令输出形式为对象。 + +#### Bash 与 PowerShell 的比较 + +下面的例子说明了与 Bash 中的字符串输出模式相比,PowerShell 的对象输出模式的优点。假设你需要写一段脚本,该脚本的作用显示所有进程,这些进程一共占用了 200MB 内存空间。如果使用 Bash,大致如下: + +``` +$ ps -eO rss | awk -F' ' \ + '{ if($2 >= (1024*200)) { \ + printf("%s\t%s\t%s\n",$1,$2,$6);} \ + }' + +PID RSS COMMAND +A B C +[...] +``` + +第一个显而易见的差别就是可读性,或更确切地说是语义清晰度。 `ps` 和 `awk` 都不是自描述的。`ps` 命令的功能是显示进程状态;`awk` 是一种文本处理工具和语言,这个词汇每个字母都是前期开发人员的名字(**A**ho, **W**einberger, **K**ernighan(详见 [维基百科][16])的首字母。然而,在把它与 PowerShell 作比较前,先看看这个脚本: + + * `ps -e` 输出所有运行中的进程; + * `-O rss` 输出 `ps` 的默认输出内容,再加上 RSS 字段 —— 每个进程使用的千字节数(以 KB 为单位);输出结果类似于: + + ``` + PID RSS S TTY TIME COMMAND + 1 13776 S ? 00:00:01 /usr/lib/systemd/systemd + ``` + * `|` 管道操作符使用左边命令的输出作为右边命令的输入。 + * `awk -F' '` 定义“空格”,作为输入字段分隔符。以上面的例子来说,PID 是第一个字段,RSS 是第二个字段,依此类推。 + * `'{ if($2 >= (1024*200)) {` 是实际的 AWK 代码起始处。它的作用是检查第二个字段([RSS][17])是否包含一个大于或等于 1024*200 的数字; + * `printf(“%s\t%s\t%s\n”,$1,$2,$6);}` 脚本继续。如果前面的条件成立,则输出第一、第二和第六个字段(分别是 [PID][18]、[RSS][17] 和 `COMMAND` 字段)。 + +考虑到这一点,退一步说,编写这段脚本需要什么才能令它工作: + + * 输入命令 `ps` 的输出中必须包含我们想要过滤的字段。这在默认情况下是没有的,需要我们使用 `-O` 标志和 `rss` 字段作为参数。 + * 我们需要将 `ps` 的输出当作一组输入字段,所以我们还应当知道它们的顺序和结构。换句话说,我们至少需要确定 `RSS` 是第二个字段。这也意味着我们需要提前知道 `ps` 的输出信息的大致情况。 + * 然后我们需要知道过滤的数据是什么单位,以及相关工具的单位是什么。也就是我们需要知道 `RSS` 和 `awk` 字段使用 kb。不然我们就不能写出 `($2 >= 1024*200)` 这样的表达式。 + +现在,我们把前面的命令跟 PoserShell 中等价的命令比较: + +``` +# Longest form +PS > Get-Process | Where-Object WorkingSet -ge 200MB +# Shortest form (with use of aliases) +PS > gps | ? ws -ge 200MB + +NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName +------ ----- ----- ------ -- -- ----------- + A B C D E F G +[...] +``` + +首先应该注意到,语义非常清晰。这些命令都是自描述的,能清晰描述它们做什么。 + +此外,不需要对输入-输出重新格式化,也不需要关心输入命令使用的单位。这是因为 PowerShell 输出的是对象,而非字符串。 + +考虑下述情况,就可以理解这些内容。在 Bash 中,命令的输出信息就是终端显示的信息。在 PowerShell 中,终端显示的信息并不等于实际可用的信息。这是由于 PowerShell 中的输出-打印系统使用的也是对象。因此 PowerShell 中每一条命令都对输出的对象的一些属性作了可打印的标记,也对一些属性作了不可打印的标记。然而,它总是包括所有的属性,而 Bash 只包括它实际打印的内容。我们可以把它想象成 JSON 对象。Bash 中的输出位置被分为一些“字段”,以空格或制表符为标志,在 PowerShell 中它是一个容易寻址的对象属性,只需要知道它的名称即可使用。就像上述例子中的 `WorkingSet` 那样。 + +为了看到一条命令的输出对象的所有属性和它们的类型,可以进行以下操作: + +``` +PS > Get-Process | Get-Member +``` + +### 安装 PowerShell + +PowerShell 安装包的形式有若干种,包括 Fedora Linux 中使用的 RPM 安装包。本文介绍在 Fedora Linux 中如何使用多种方法安装 PowerShell。 + +我推荐使用原生的方法安装。但我也会介绍如何在容器中安装。我将展示使用官方微软 PowerShell 容器和 Fedora Linux 30 的 Toolbox 容器。使用容器的优点在于,所有的依赖捆绑在其中,并且与主机隔离,所以它一定是有效的。无论如何,虽然官方文档只是明确指出支持 Fedora Linux 发行版的 28-30 版本,我还是建议使用原生的方法安装。 + +**注意:** 官方支持意味着一定有效。但其他的版本也不是一定不兼容。也就是说,高于 30 的发行版也应该有效。经过测试,的确如此。 + +在容器中设置并运行 PowerShell 比直接在主机上运行它难度更大,安装需要花费更多时间,而且你还不能直接运行主机的命令。 + +#### 在主机上使用包管理器安装 PowerShell + +##### 方法一:使用微软仓库 + +安装过程很直接,而且跟通过第三方仓库安装其他软件没什么区别。 + +通俗地说,安装过程可以分为四步: + + 1. 添加新仓库的 GPG 密码 + 2. 在 DNF 仓库列表中新增相应的仓库 + 3. 刷新 DNF 缓存,将新仓库中的有关包包含进来 + 4. 安装新包 + +然后使用命令 `pwsh` 启动 PowerShell。 + +``` +$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc +$ curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/microsoft.repo +$ sudo dnf makecache +$ sudo dnf install powershell +$ pwsh +``` + +欲删除仓库和包,运行以下命令: + +``` +$ sudo rm /etc/yum.repos.d/microsoft.repo +$ sudo dnf remove powershell +``` + +##### 方法 2:使用 PRM 文件 + +这种方法与第一种方法没有明显的差别。实际上,在安装 RPM 文件时,隐式添加了 GPG 密码和仓库。这是由于 RPM 文件包含它们两者的关联关系,保存在它的元数据中。 + +首先,从 [PowerShell GitHub 仓库][19] 获取相应版本的 `.rpm` 文件。然后查看 `readme.md` 文件中的 “获取 PowerShell” 部分的内容。 + +第二步,输入以下命令: + +``` +$ sudo dnf install powershell-.rhel.7..rpm +``` + +在 `` 和 `` 节点中填写各自的内容,例如 [powershell-7.1.3-1.rhel.7.x86_64.rpm][20]。 + +你也可以使用链接运行它,不指定版本和架构,先把它下载到本地。 + +``` +$ sudo dnf install https://github.com/PowerShell/PowerShell/releases/download/v/powershell-.rhel.7..rpm +``` + +欲删除 PowerShell,运行以下命令: + +``` +$ sudo dnf remove powershell +``` + +#### 通过容器安装 + +##### 方法一:使用 Podman 容器 + +Podman 是一个兼容 [开放容器倡议][21](OCI)的、嵌入式的容器引擎,它可以代替 Docker。 + +微软提供了 [PowerShell Docker 容器集成工具][22]。下面的例子将在 Podman 中使用容器。 + +欲了解更多关于 Podman 的信息,可以访问 [Podman.io][23]。Fedora 杂志还有一个专为 Podman 设计的 [标签][24]。 + +欲在 Podman 中使用 PowerShell,运行以下脚本: + +``` +$ podman run \ + -it \ + --privileged \ + --rm \ + --name powershell \ + --env-host \ + --net=host --pid=host --ipc=host \ + --volume $HOME:$HOME \ + --volume /:/var/host \ + mcr.microsoft.com/powershell \ + /usr/bin/pwsh \ + -WorkingDirectory $(pwd) +``` + +这段脚本为使用 PowerShell 创建了一个 Podman 容器,并立即接入其中。它还将 `/home` 和主机的根目录挂载到容器中,确保它们在容器中是可用的。无论如何,在 `/var/host` 目录下,主机的根目录是可访问的。 + +但是,在容器内部,你只能间接运行主机命令。有一种变通办法,就是先运行 `chroot /var/host` 改变根目录,然后运行主机命令。 + +为了把命令拆分开来讲解,除非特别指定,以下所有内容都是强制性的: + + * `-it` 创建一个持久环境,当你进入该环境后,不会轻易退出; + * `--privileged` 给予容器扩展的权限(可选); + * `--rm` 当你退出时移除容器; + * `--name` 设置容器名称; + * `--env-host` 将所有主机的环境变量设置为容器的变量(可选); + * `--net=host --pid=host --ipc=host` 在主机的命名空间中运行进程(而非一组单独的名称空间); + * `--volume $HOME:$HOME` 挂载用户目录; + * `--volume /:/var/host` 将主机根目录挂载到 `/var/host`(可选); + * `mcr.microsoft.com/powershell` 进入容器; + * `/usr/bin/pwsh` 可选但很方便的参数:用别名 `pwsh`,脚本中有了它,可以输入 `pwsh` 轻松访问 Podman 容器; + * `-WorkingDirectory $(pwd)` 在当前目录下进入容器(可选)。 + +欲移除 PowerShell 镜像,运行以下命令: + +``` +$ podman rmi mcr.microsoft.com/powershell +``` + +##### 方法二:Fedora 系统的 Toolbox 容器 + +在不影响主机系统的情况下安装持久化环境,使用 Toolbox 容器是一种巧妙的解决方案。它充当了 Podman 的封装器,负责提供大量的标志,就像方法一中提到的那样。因此,Toolbox 比 Podman 容易使用。它可以用来开发和调试。有了 Toolbox,你可以运行任何命令,跟你直接在 Fedora 工作站主机上运行是一样的。 + +安装步骤跟在主机上安装一样,唯一的区别就是在容器内部进行。你需要确保已经安装了 `toolbox` 包。 + +使用 Fedora 34 Toolbox 容器需要两个步骤: + + 1. 创建 Fedora 34 Toolbox 容器 + 2. 运行 Fedora 34 Toolbox 容器 + +``` +$ toolbox create --image registry.fedoraproject.org/f34/fedora-toolbox +$ toolbox enter --container fedora-toolbox +``` + +接着,按照 [方法一:使用微软仓库][10] 中的相关内容操作。 + +可选但非常方便的做法:使用别名 `pwsh`,可以轻松地访问 Toolbox 容器: + +``` +toolbox run –container fedora-toolbox pwsh +``` + +欲移除 Toolbox 容器,需要确保你已经使用 `exit` 关闭了 Toolbox 会话,然后运行以下命令: + +``` +$ podman kill fedora-toolbox +$ toolbox rm fedora-toolbox +``` + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/install-powershell-on-fedora-linux/ + +作者:[TheEvilSkeleton, Ozymandias42][a] +选题:[lujun9972][b] +译者:[cool-summer-021](https://github.com/cool-summer-021) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://fedoramagazine.org/author/theevilskeleton/https://fedoramagazine.org/author/ozymandias42/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2021/05/powershell-816x345.jpg +[2]: https://unsplash.com/@noaa?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText +[3]: https://unsplash.com/@thecedfox?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText +[4]: https://unsplash.com/s/photos/shell?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText +[5]: tmp.c7U2gcu9Hl#why-use-powershell +[6]: tmp.c7U2gcu9Hl#demonstration +[7]: tmp.c7U2gcu9Hl#comparison-between-bash-and-powershell +[8]: tmp.c7U2gcu9Hl#install-powershell +[9]: tmp.c7U2gcu9Hl#install-on-host-via-package-manager +[10]: tmp.c7U2gcu9Hl#method-1-microsoft-repositories +[11]: tmp.c7U2gcu9Hl#method-2-rpm-file +[12]: tmp.c7U2gcu9Hl#install-via-container +[13]: tmp.c7U2gcu9Hl#method-1-podman-container +[14]: tmp.c7U2gcu9Hl#method-2-fedora-toolbox-container +[15]: https://ilovepowershell.com/2011/11/03/list-of-top-powershell-alias/ +[16]: https://en.wikipedia.org/wiki/AWK +[17]: https://en.wikipedia.org/wiki/Resident_set_size +[18]: https://en.wikipedia.org/wiki/Process_identifier +[19]: https://github.com/PowerShell/PowerShell +[20]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.3/powershell-7.1.3-1.rhel.7.x86_64.rpm +[21]: https://opencontainers.org/ +[22]: https://hub.docker.com/_/microsoft-powershell +[23]: https://podman.io/ +[24]: https://fedoramagazine.org/tag/podman/ +[0]: https://img.linux.net.cn/data/attachment/album/202212/03/120749nkevgkb12exbeffg.jpg \ No newline at end of file diff --git a/published/202212/20220608 WiFi 6 Promises Much More than Faster Speeds.md b/published/202212/20220608 WiFi 6 Promises Much More than Faster Speeds.md new file mode 100644 index 0000000000..959a4170f6 --- /dev/null +++ b/published/202212/20220608 WiFi 6 Promises Much More than Faster Speeds.md @@ -0,0 +1,96 @@ +[#]: subject: "WiFi 6 Promises Much More than Faster Speeds" +[#]: via: "https://www.opensourceforu.com/2022/06/wifi-6-promises-much-more-than-faster-speeds/" +[#]: author: "Sharon Katta https://www.opensourceforu.com/author/sharon-katta/" +[#]: collector: "lkxed" +[#]: translator: "cool-summer-021" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15369-1.html" + +WiFi 6 带来的不仅是高速 +====== + +> WiFi 6 提高了网络连通性,它在不久的将来有望为数万亿台设备组网,并且能够不间断而高效地工作。它虽然在 2019 年就取得了官方认证,但由于疫情原因,它的测试工作面临不少挑战。本文旨在对这项技术进行概述。 + +![WiFi-6][1] + +WiFi 技术的下一代标准,称为 “WiFi 6”,也可以称为 “AX WiFi” 或 “802.11ax”。它是为满足指数级增长的设备组网需求而产生的,因此也可以用于 VR 和智能家居。它是现有的 802.11ac WiFi 标准的升级版,可以应对现有技术在容量、效率、覆盖范围和性能方面遇到的挑战。 + +![Figure 1: WiFi 6][2] + +这项技术是在 2014 年进行研发,完成于 2018 年,由 IEEE 高性能无线网络研究组(HEW SG)发布。产品认证于 2019 年后期进行,此时三星 Galaxy Note 10 和 Ruckus R750 使用了这种技术。WiFi 6 运行于 1GHz 和 6GHz 波段,主要的频率为 2.4GHz-5GHz。 + +如今,每个家庭平均有九台设备需要连接 WiFi。WiFi 6 主要致力于改善网络质量,而不是提升某些设备的速度。 + +### WiFi 6的特点 + +- **多用户、多输入、多输出(MU-MIMO):** 路由器和多台设备可以同时通信。在 2.4GHz 和 5GHz 频率上,它支持四个同步的数据流,当这些数据流添加到一个用户时,可以从智能路由器接收到相当大的输入数据的带宽。 +- **1024-QAM:** 这令 WiFi 6 的每个数据包能编码的字节数更多,吞吐量增加了 25%。它不仅提高了大业务量情况下的通信效率,也最大限度增加了传输速率。这在现代企业应用系统领域有很大的优势。 +- **正交频分复用(OFDM):** 支持四倍的副载波,速度也提高了 11%。扩展的信号支持用户同时进行更多数据包传输。所以数据包之间的等待时间和延迟就减少了。 +- **增加的信道宽度:** 80MHz 的波段加入了 160MHz 的信道通信,信道宽度增加了一倍。因此,路由器可以容纳更多用户,为每个用户提供更大的数据流。 +- **目标唤醒时间(TWT):** 这是 WiFi 6 特有的。它支持每台设备独立协商发送和接收的唤醒时间。它可以增加总体睡眠时间,令电池寿命最大化。它还支持许多额外的网络选项,特别是对 IoT 设备的支持。 +- **提升安全性:** 一切支持 WiFi 6 的设备都需要包含 WPA3 协议。它可以对未经验证的通信进行加密,针对暴力字典攻击提供了强大的密码保护,以及对敏感信息进行 192 位的加密,提升数据的可靠性。 +- **波束赋形:** 借助八根天线,波束赋形能提高传输速率,通信范围也因直接定向到某个客户端而扩大。它对快速移动的、可能面临多用户、多输入、多输出的设备起到了支撑作用。波束赋形也有利于控制那些蓄意发出干扰信号的天线的传输。然后信号会被重新定向到新的目标。 + +### 支持 WiFi 6 的设备 + +到目前为止,路由器、中继器、网状网络和多数 WiFi 使用者还是以 WiFi 5 为标准。WiFi 6 是 2019 年推出的。一些支持 WiFi 5 的早期设备存在一些兼容性问题 —— 它们可以使用 WiFi 6 的网络,但得不到相应的支持服务。 + +WiFi 6 的路由器是向后兼容的。应该确保网络已经为此做好了准备。 + +WiFi 6 实现了较低的电量消耗,在任何场景(包括 IoT)下,都是个不错的选择。它减少了不必要的数据流动,还会通知设备何时将数据激活或令其睡眠。所以不必要的数据流动减少了,性能和电池寿命也提高了。 + +三星 Galaxy Note 10 和 Ruckus R750 是全球第一款经认证支持 WiFi 6 的智能手机和接入设备,苹果的最新款 iPhone 也紧随其后。WiFi 联盟已经确立了认证方案,正如人们预期的那样,等待入市的那些新款无线产品也开始申请认证了。下列设备已支持 WiFi 6: + +* iPhone 11 和之后的型号 +* 三星 Galaxy S10、S20、Note 10 和 Note 20 +* 配置 M1 处理器的苹果电脑 +* 智能电视 + +> 为了全面享受到 802.11ax 标准带来的改进,硬件和软件的功能都需要基于这种 WiFi 技术进行升级。 + +### 硬件测试 + +为了充分挖掘最新款设备的潜力,需要一台 WiFi 6 路由器来运行网络。几年前,这么做的成本很高,但现在我们有多种选择,甚至可以使用网格系统、游戏路由器、范围扩展器等等。只有在进行实际测试时,才可以购买最划算的设备。如今,在速度方面,TP-Link Archer AX6000 是最快的,它击败了所有的竞争者。这款路由器可以以 1523 Mbps 的速率无线传输数据,有效传输距离为 1.5米(5 英尺)。 + +很重要的一点,请务必记住,这些路由器提速,并不是在变魔术。理论上的最大速率 9.6 Gbps是实现不了的。这种理论上的最大速率,实际上也会被多台设备分摊掉。 + +WiFi 6 侧重于在连接设备密集的地方提供高质量的连接。它不会令单台设备的速率指数级增长,但会使相关的设备运行处于理想水平。 + +只有各大互联网服务提供商(ISP)的加速计划与 WiFi 6 路由器结合起来,才能体现它的真正潜力。真正的挑战是那些 ISP 承受的,因为它们需要铺设新型的光纤来利用这种下一代技术。存在一个重要的问题:当ISP 的通信速率变得更快,现有的硬件会变得多余吗? + +### WiFi 6 的应用 + +- **大型公共场所(LPV):** 体育馆和会议中心是上千台设备同时联网的公共场所。WiFi 6 能改善参会者体验,增强消费者互动,还能提供附加服务,比如即时回放,订购餐食等。它还支持 LPV 业主开拓新的商业机会。 +- **交通枢纽:** 公共交通站点也是人们需要同时联网的场所。OFDMA 和 BSS 这类明显具有 WiFi 6 色彩的技术为解决这种问题提供了必要的工具。 +- **物联网和智慧城市建设:** WiFi 6 的能效令物联网设备可以进入休眠模式,并且可以在预定的间隔内开启信号发射器,以便在无需过多维护的情况下增加现场作业时间。 +- **教育机构:** 大学校园内的图书馆、礼堂和报告厅内的日间 WiFi 使用密度是最高的,夜晚几乎没有人。WiFi 6 是这类场景的完美选项。 + +(LCTT 译注:相关产品推荐部分节略。) + +### 面临的挑战 + +WiFi 6 不一定使速度更快,但它能确保在一定范围内的设备速率不会在未来几年变慢。虽然它面临三重挑战,但这些问题常常被忽视。 + +- 需要对不支持的设备进行升级:即使 Wifi 6 向后兼容,但只能在最大限度使用这种技术时才能做得合理。这意味着每次都要更新设备。 +- 内部网络以外的速度和性能:WiFi 6 能为诸如云文件共享之类服务提供极好的连接性。然而,ISP 的相关资源也会影响速度和性能。 +- 覆盖范围问题:在各个国家,传输信号和带宽都是由法律规定上限的。因此,为了符合法律规定的上限,WiFi 6 的覆盖范围也是受限的。 + +尽管存在这些挑战,一些企业,像 Aruba、华硕、AT&T、Boingo、博通、思科、Comcast、CommScope、Cypress、Extreme Networks、英特尔、Netgear、Orange、高通、TP-Link 和小米,都在关注 WiFi 6 更多的可能性。 + +-------------------------------------------------------------------------------- + +via: https://www.opensourceforu.com/2022/06/wifi-6-promises-much-more-than-faster-speeds/ + +作者:[Sharon Katta][a] +选题:[lkxed][b] +译者:[cool-summer-021](https://github.com/cool-summer-021) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.opensourceforu.com/author/sharon-katta/ +[b]: https://github.com/lkxed +[1]: https://www.opensourceforu.com/wp-content/uploads/2022/05/WiFi-6.jpg +[2]: https://www.opensourceforu.com/wp-content/uploads/2022/05/WiFi-6-1.jpg +[0]: https://img.linux.net.cn/data/attachment/album/202212/21/165355hi20ky6mchmj0h38.jpg \ No newline at end of file diff --git a/published/202212/20220628 Linux su vs sudo- what-s the difference-.md b/published/202212/20220628 Linux su vs sudo- what-s the difference-.md new file mode 100644 index 0000000000..e0c0890a8a --- /dev/null +++ b/published/202212/20220628 Linux su vs sudo- what-s the difference-.md @@ -0,0 +1,152 @@ +[#]: subject: "Linux su vs sudo: what's the difference?" +[#]: via: "https://opensource.com/article/22/6/linux-su-vs-sudo-sysadmin" +[#]: author: "David Both https://opensource.com/users/dboth" +[#]: collector: "lkxed" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15347-1.html" + +Linux 中的 su 和 sudo 命令有什么区别? +====== + +> 本文将比较非 root 用户提权为 root 用户的两个 Linux 命令 的区别。 + +![][0] + +`su` 和 `sudo` 命令都允许用户执行非特权用户不允许做的系统管理任务,即只有 root 用户能执行的命令。有些人更喜欢 `sudo` 命令:例如 [Seth Kenlon][2] 最近发布的一篇 《[在 Linux 上使用 sudo 的 5 个理由][3]》,他在其中详细阐述了 `sudo` 命令的许多优点。 + +但是,相较于 `sudo` 命令,我**更偏好于 `su` 命令** 来做系统管理工作。在本文中,我比较了这两个命令的区别,并解释了为什么我更喜欢 `su` 而不是 `sudo`,但我仍然同时使用这两个命令的原因。 + +### 过去的系统管理员主要使用 su 命令 + +`su` 和 `sudo` 命令是为**不同的世界**设计的。早期的 Unix 计算机需要全职系统管理员,他们使用 root 用户作为唯一的管理帐户。在这个古老的世界里,有管理员密码的人会在电传打字机或 CRT 终端(例如 DEC VT100)上以 root 用户登录,然后执行一些管理 Unix 计算机的工作。 + +管理员还会有一些非 root 帐户,用于执行一些非 root 的任务,例如编写文档和管理电子邮件等。在这些 Unix 计算机上通常有许多非 root 帐户,他们都不需要完全的 root 访问权限,只需要以 root 权限运行很少的命令,大约 1 至 2 个就可以了。许多系统管理员以 root 用户登录,完成 root 工作,并在任务完成后,退出 root 会话。有时候,系统管理员需要整天以 root 用户来登录,因为 `sudo` 命令需要键入更多的内容才能运行必要的命令,因此大多数系统管理员很少使用 `sudo` 命令。 + +`sudo` 和 `su` 这两个命令都能够提权为 root 用户,但它们实现的方式大不相同。这种差异是由于它们**最初打算用于不同的情况**。 + +### sudo 命令 + +`sudo` 命令的初衷是让 root 用户能够让几个非 root 用户访问他们经常需要的一两个特权命令。`sudo` 命令允许非 root 用户暂时地获得更高权限,来执行一些特权命令,例如添加和删除用户、删除属于其他用户的文件、安装新软件以及管理现代 Linux 主机所需的任何命令。 + +`sudo` 命令允许非 root 用户访问一两个 _需要更高权限_ 的常用命令,这样可以帮助系统管理员节省来自用户的许多请求,并减少等待时间。`sudo` 命令不会将用户帐户切换为 root 用户,因为大多数非 root 用户永远不应该拥有完全的 root 访问权限。在大多数情况下,`sudo` 允许用户执行一两个命令,然后提权就会过期。在这个通常为 5 分钟的短暂的提权时间内,用户可以执行任何需要提权的管理命令。需要继续使用提权的用户可以运行 `sudo -v` 命令来重新验证 root 访问权限,并将提权时间再延长 5 分钟。 + +使用 `sudo` 命令还有一些副作用,例如生成非 root 用户使用命令的日志条目及其 ID。这些日志可以在之后作为出现问题的检验,来给用户更多的操作培训。(你以为我会说“问责”用户,对吧?) + +### su 命令 + +`su` 命令能够将非 root 用户提权到 root 权限 —— 事实上,能让非 root 用户成为 root 用户。唯一的要求是用户知道 root 密码。因为用户已经以 root 权限登录,所以之后的操作就没有限制了。 + +`su` 命令所提供的提权没有时间限制。用户可以作为 root 执行命令,不需要进行重新验证是否有 root 权限。完成任务后,用户可以执行退出命令 `exit`,从 root 用户恢复到自己原来的非 root 帐户。 + +### su 和 sudo 在使用上的争议和变化 + +最近在 `su` 与 `sudo` 的使用上存在一些分歧。 + +> 真正的系统管理员不会使用 `sudo`。—— Paul Venezia + +Venezia 在他的 [InfoWorld 文章][4] 中辩称,对于许多担任系统管理员的人来说,`sudo` 是一个不必要的工具。他没有花太多时间为这个观点进行解释,他只是把它说成了一个事实。我同意他对于系统管理员的观点,因为我们不需要 `sudo` 来完成我们的工作。事实上,`sudo` 使得事情变得更复杂了。 + +然而, + +> 时代在“改变”。—— Bob Dylan + +Bob Dylan 是对的,尽管他唱的歌不是指计算机(LCTT 译注:Bob Dylan 是美国创作歌手、艺术家和作家,这里指他不是针对于电脑而说的)。 + +自从人手一台的**个人计算机**时代到来,计算机的管理方式发生了重大变化。在许多环境中,计算机的使用者也是它的管理员,这使得为这些用户提供一些对 root 权限的访问是有必要的。 + +一些现代发行版,例如 Ubuntu 及其衍生版本,只能使用 `sudo` 命令来执行特权命令。在这些发行版中,用户无法直接以 root 用户身份登录,甚至无法通过 `su` 切换到 root,因此需要 `sudo` 命令来允许非 root 用户获得 root 权限。在这一环境中,所有系统管理任务均使用 `sudo` 来执行。 + +通过锁定 root 帐户并将常规用户帐户添加到“轮子”组(`wheel`),可以实现此配置,但是这种配置很容易被绕过。接下来,让我们在 Ubuntu 主机或虚拟机上尝试一些小实验吧。我在这里说明一些我的设置,以便你可以根据需要来重现它。我安装的是 Ubuntu 16.04 LTS1,并使用 VirtualBox 将其安装在虚拟机中。在安装过程中,我创建了一个非 root 用户 `student`,为了简便起见我给这个用户设置了一个简单的密码。 + +以 `student` 用户身份登录 Ubuntu,并打开终端。查看 `/etc/shadow` 文件中的 root 条目,其中存储了经哈希的密码。 + +``` +student@ubuntu1:~$ cat /etc/shadow +cat: /etc/shadow: Permission denied +``` + +可以看到终端拒绝了我们对 `/etc/shadow` 的访问,因此我们无法查看 `/etc/shadow` 文件。所有发行版都是如此,以防止非特权用户看到和访问加密的密码,因为非特权用户可能会使用常见的黑客工具来破解这些密码。 + +现在,让我们使用 `su -` 命令来成为 root 用户。 + +``` +student@ubuntu1:~$ su - +Password: +su: Authentication failure +``` + +认证失败的原因是因为 root 帐户没有密码、并且被锁定了。接下来,使用 `sudo` 命令查看 `/etc/shadow` 文件。 + +``` +student@ubuntu1:~$ sudo cat /etc/shadow +[sudo] password for student: +root:!:17595:0:99999:7::: +<截取> +student:$6$tUB/y2dt$A5ML1UEdcL4tsGMiq3KOwfMkbtk3WecMroKN/:17597:0:99999:7::: +<截取> +``` + +在这里,我仅截取了部分结果,只显示 root 和 `student` 用户的条目。我还缩短了加密密码,以便该条目能显示在一行中。各个字段以冒号(`:`)分隔,第二个字段是密码。请注意,root 的密码字段是一个感叹号(`!`),这表明 root 帐户已被锁定,且无法使用。 + +现在,要将 root 帐户变成一个合适的系统管理员,你只需为 root 帐户设置密码。 + +``` +student@ubuntu1:~$ sudo su - +[sudo] password for student: +root@ubuntu1:~# passwd root +Enter new UNIX password: +Retype new UNIX password: +passwd: password updated successfully +root@ubuntu1:~# +``` + +现在,你可以直接以 root 身份登录到控制台,或者直接使用 `su` 登录到 root,而不是在每个命令前都加一个 `sudo`。当然,你也可以在每次想以 root 身份登录时,使用 `sudo su -`,但这又是何必呢? + +请不要误解我的意思。像 Ubuntu 这样的发行版及其上下游衍生版非常好,多年来我已经使用了其中的几个。在使用 Ubuntu 和相关发行版时,我做的第一件事就是设置一个 root 密码,这样我就可以直接以 root 身份登录。其他发行版,如 Fedora 及其相关发行版,现在在安装过程中提供了一些有趣的选择。我注意到的第一个 Fedora 版本是 Fedora 34,我在写我的一本即将出版的书时安装了很多次。 + +在安装页面上,可以找到其中一个安装选项,来设置 root 密码。这个新选项允许用户选择“锁定 root 帐户 Lock root account ”,就像 Ubuntu 锁定 root 帐户的方式一样。此页面上还有一个选项,允许使用密码以 root 身份远程 SSH 登录到此主机,但这仅在 root 帐户解锁时有效。第二个选项位于允许创建非 root 帐户的页面上。此页面上的选项之一是“让此用户成为管理员 Make this user administrator ”。选中此选项后,用户 ID 将添加到一个名为 `wheel` 组的特殊组中,该组授权该组的成员使用 `sudo` 命令。Fedora 36 甚至在该复选框的描述中提到了 `wheel` 组。 + +可以将多个非 root 用户设置为管理员。使用此方法指定为管理员的任何人都可以使用 `sudo` 命令在 Linux 计算机上执行所有管理任务。Linux 在安装时只允许创建一个非 root 用户,所以其他新用户可以在创建时添加到 `wheel` 组中。root 用户或其他管理员可以使用文本编辑器或 `usermod` 命令直接将现有用户添加到 `wheel` 组。 + +在大多数情况下,今天的管理员只需要执行一些基本任务,例如添加新的打印机、安装更新或新软件,或者删除不再需要的软件。这些 GUI 工具需要 root 或管理密码,并将接受来自管理员用户的密码。 + +### 在 Linux 上,我是怎么使用 su 和 sudo 的呢 + +我**同时使用 `su` 和 `sudo`**。它们都是我所使用的很重要的系统管理员工具。 + +我不锁定 root 帐户,因为我需要用 root 帐户来运行我的 [Ansible][5] 脚本和我编写的 [rsbu][6] Bash 程序,来执行备份。这两个程序都需要以 root 身份运行,我编写的其他几个管理 Bash 的脚本也是如此。我**使用 `su` 命令**切换到 root 用户,这样我就可以执行这些脚本和许多其他常见的命令。当我需要确定问题和解决问题时,使用 `su` 命令将我的权限提升到 root 十分有用,因为我不希望 `sudo` 带来的提权会话超时。 + +当非 root 用户需要执行这些任务时,我**使用 `sudo` 命令**,来执行需要 root 权限的任务。我在 `sudoers` 文件中设置了非 root 帐户,只允许访问完成任务所需的一两个命令。当我只需要运行一两个需要提权的快速命令时,我自己也会使用 `sudo` 命令。 + +### 结论 + +实际上只要你把工作完成好了,你使用什么工具都无大碍。你使用的是 Vim 还是 Emacs,是 systemd 还是 SystemV,是 RPM 亦或是 DEB,是 `sudo` 亦或是 `su`,在结果上会有什么区别呢?这里的关键在于你应该使用**最适合你的工具**。Linux 和开源软件的最大优势之一是通常有许多选项可用于我们需要完成的任务。 + +`su` 和 `sudo` 都各有长处,如果正确使用的话,两者都是非常安全的。我选择同时使用 `su` 和 `sudo` 命令,基于它们的历史功能,因为这对我来说十分有用。对于我自己的大部分工作,我更喜欢 `su` 命令,因为它与我的工作流程最适配。 + +在评论区分享你喜欢的工作方式吧! + +本文摘自于我的书《系统管理员的 Linux 哲学The Linux Philosophy for Sysadmins(Apress,2018 年)》一书的第 19 章,并经许可后重新发布。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/6/linux-su-vs-sudo-sysadmin + +作者:[David Both][a] +选题:[lkxed][b] +译者:[chai001125](https://github.com/chai001125) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/dboth +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/lead-images/bash_command_line.png +[2]: https://opensource.com/users/seth +[3]: https://opensource.com/article/22/5/use-sudo-linux +[4]: http://www.infoworld.com/t/unix/nine-traits-the-veteran-unix-admin-276?page=0,0&source=fssr +[5]: https://opensource.com/article/20/10/first-day-ansible +[6]: https://opensource.com/article/17/1/rsync-backup-linux +[0]: https://img.linux.net.cn/data/attachment/album/202212/14/171220a47je4l0teaonzos.jpg \ No newline at end of file diff --git a/published/202212/20220729 Learn Rust by debugging Rust.md b/published/202212/20220729 Learn Rust by debugging Rust.md new file mode 100644 index 0000000000..3129292941 --- /dev/null +++ b/published/202212/20220729 Learn Rust by debugging Rust.md @@ -0,0 +1,241 @@ +[#]: subject: "Learn Rust by debugging Rust" +[#]: via: "https://opensource.com/article/22/7/learn-rust-rustlings" +[#]: author: "Gaurav Kamathe https://opensource.com/users/gkamathe" +[#]: collector: "lkxed" +[#]: translator: "yzuowei" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15395-1.html" + +以调试 Rust 的方式来学习 Rust +====== + +> Rustlings 是由 Rust 团队维护的开源项目,旨在帮助你通过调试代码的方式来学习 Rust。 + +![Ferris the crab under the sea, unofficial logo for Rust programming language][1] + +在我上一篇 [关于 Rustup 的文章][2] 中,我向你们展示了如何安装 Rust 工具链。但是,如果不能上手操作一下 Rust 的话下载工具链又有什么用?学习任何语言都包括阅读现有的代码和写很多的示例程序,这是精通一门语言的好方法。然而,我们还可以走第三条路:调试代码。 + +通过调试来学习牵扯到尝试去编译一个已经写好的(满是漏洞的)示例程序,理解编译器生成的错误信息,修复示例代码,然后再重新编译。重复这个过程直到代码能够成功被编译并运行。 + +[Rustlings][3] 是一个由 Rust 团队维护的开源项目,旨在帮助你通过调试代码来学习 Rust。它也会一路为你提供提示。如果你是一名 Rust 初学者,并且刚开始阅读或已经读完了 Rust 书籍,那么 Rustlings 就是理想的下一步。Rustllings 帮助你将运用书中所学,并转向开发更大的项目。 + +### 安装 Rustlings + +我使用(并推荐)Fedora 电脑来体验 Rustlings,但是任何 Linux 发行版都可以。要安装 Rustlings,你必须下载并运行它的安装脚本。通常建议你以不具备任何特别权限的普通用户(非 root 用户)来运行脚本。 + +记住,你需要 Rust 工具链来使用 Rustlings。如果你还没有这些工具链,请参考我 [关于 Rustup 的文章][4]。 + +当你准备好时,下载这个安装脚本: + +``` +$ curl -L https://raw.githubusercontent.com/rust-lang/rustlings/main/install.sh  > rustlings_install.sh +$ file rustlings_install.sh +rustlings_install.sh: Bourne-Again shell script, ASCII text executable +``` + +阅读脚本以了解它会做什么: + +``` +$ less rustlings_install.sh +``` + +然后运行安装: + +``` +$ bash rustlings_install.sh +[...] +Installing /home/tux/.cargo/bin/rustlings +Installed package `rustlings v4.8.0 (/home/tux/rustlings)` (executable `rustlings`) +All done! +``` + +运行 `rustlings` 以开始。 + +### Rustlings 练习 + +你现在可以使用命令 `rustlings`。与标志 `--help` 一起执行来查看可选的选项。 + +``` +$ rustlings --help +``` + +这个安装脚本也克隆了 Rustlings 的 Git 仓库,并安装了运行示例程序所需的依赖。你可以在 `ruslings` 下的 `exercises` 目录查阅这些示例程序。 + +``` +$ cd rustlings +$ pwd +/home/tux/rustlings +$ ls +AUTHORS.md  Cargo.toml        CONTRIBUTING.md  info.toml install.sh README.md  target Cargo.lock  CHANGELOG.md  exercises install.ps1  LICENSE src tests +$ ls -m exercises/ +advanced_errors, clippy, collections, conversions, enums, error_handling, functions, generics, if, intro, macros, mod.rs, +modules, move_semantics, option, primitive_types, quiz1.rs, quiz2.rs, quiz3.rs, quiz4.rs, README.md, +standard_library_types, strings, structs, tests, threads, traits, variables +``` + +### 从命令行列出所有练习 + +命令 `ruslings` 提供给你一个 `list` 命令用以展示每个示例程序,它的完整路径,以及状态 (默认为 “待定”)。 + +``` +$ rustlings list +Name         Path                                 Status +intro1       exercises/intro/intro1.rs            Pending +intro2       exercises/intro/intro2.rs            Pending +variables1   exercises/variables/variables1.rs    Pending +variables2   exercises/variables/variables2.rs    Pending +variables3   exercises/variables/variables3.rs    Pending +[...] +``` + +在显示结尾处,你会有一个进度报告用来追踪进度。 + +``` +Progress: You completed 0 / 84 exercises (0.00 %). +``` + +### 查看示例程序 + +命令 `rustlings list` 向你展示了现有的程序,所以你可以在任何时候查看这些程序的代码,你只需要将完整路径复制到你的终端作为命令 [cat][5] 或者 [less][6] 的参数: + +``` +$ cat exercises/intro/intro1.rs +``` + +### 验证你的程序 + +现在你可以开始调试程序了。你可以使用命令 `verify` 来做这件事。注意 Rustlings 选择了列表里的第一个程序(`intro1.rs`)并尝试去编译它,最后编译成功: + +``` +$ rustlings verify +Progress: [-----------------------------------] 0/84 +✅ Successfully ran exercises/intro/intro1.rs! + +You can keep working on this exercise, +or jump into the next one by removing the `I AM NOT DONE` comment: + + 6 |  // Execute the command `rustlings hint intro1` for a hint. + 7 |   + 8 |  // I AM NOT DONE + 9 | +``` + +正如你从结果中所见,尽管示例代码成功编译了,你依然需要做一些工作。每个示例程序的源文件中都带有以下注释: + +``` +$ grep "NOT DONE" exercises/intro/intro1.rs +// I AM NOT DONE +``` + +虽然第一个程序的编译没有问题,除非你去掉注释 `I AM NOT DONE`,Rustlings 不会移到下一个程序。 + +### 来到下一个练习 + +一旦你从 `intro1.rs` 中去掉这些注释,你就可以通过再一次运行命令 `rustlings verify` 来到下一个练习。这一次,你会发现 Rustlings 尝试去编译这个系列中的下一个程序(`intro2.rs`),但是遇到了一个错误。你应该调试并修复这个问题,并前进。这是你理解为什么 Rust 说程序有漏洞的至关重要的一步。 + +``` +$ rustlings verify +Progress: [>------------------------] 1/84 +⚠️  Compiling of exercises/intro/intro2.rs failed! Please try again. Here's the output: +error: 1 positional argument in format string, but no arguments were given + --> exercises/intro/intro2.rs:8:21 +  | +8 |         println!("Hello {}!"); +  |                         ^^ + +error: aborting due to previous error +``` + +### 来点提示 + +Rustlings 有一个非常好用的 `hint` 参数,这个参数会告诉你示例程序中哪里出错了,以及如何去修复它。你可以认为这是在编译错误信息基础之上,一个额外的帮助选项。 + +``` +$ rustlings hint intro2 +Add an argument after the format string. +``` + +基于以上提示,修复这个程序就很简单了。你只需要在语句 `println` 中加一个额外的参数。这个 diff 对比应该能帮你理解发生的变化: + +``` +< println!("Hello {}!", "world"); +--- +> println!("Hello {}!"); +``` + +一旦你做出了修改,并从源代码中去掉了注释 `NOT DONE`,你可以再一次运行 `rustlings verify` 来编译并运行代码。 + +``` +$ rustlings verify +Progress: [>-------------------------------------] 1/84 +✅ Successfully ran exercises/intro/intro2.rs! +``` + +### 追踪进度 + +你无法在一天之内做完所有的练习,忘记练到哪也很常见。你可以执行命令 `list` 来查看你的练习状态。 + +``` +$ rustlings list +Name         Path                                  Status +intro1       exercises/intro/intro1.rs             Done   +intro2       exercises/intro/intro2.rs             Done   +variables1   exercises/variables/variables1.rs     Pending +variables2   exercises/variables/variables2.rs     Pending +variables3   exercises/variables/variables3.rs     Pending +[...] +``` + +### 运行特定的练习 + +如果你不想从头开始并且想要跳过一些练习,Rustlings 允许你使用命令 `rustlings run` 来专注特定的练习。如此可以运行指定的程序而不需要验证之前的课程。例如: + +``` +$ rustlings run intro2 +Hello world! +✅ Successfully ran exercises/intro/intro2.rs +$ rustlings run variables1 +``` + +敲入练习名字可能会变得乏味,但 Rustlings 为你准备了便利的命令 `next` 用来移向系列中的下一个练习。 + +``` +$ rustlings run next +``` + +### 替代命令 watch + +如果你不想在每次修改后还要敲一次 `verify`,你可以在终端窗口中运行命令 `watch`,然后再继续修改源代码以解决问题。命令 `watch` 会检测到这些修改,然后重新编译以查看这些问题是否被解决。 + +``` +$ rustlings watch +``` + +### 通过调试学习 + +Rust 编译器以提供非常有意义的错误信息而被熟知,这些错误信息会帮助你理解在你代码中的问题。这通常意味着更快的调试。Rustlings 是练习 Rust,学会阅读错误信息,并理解 Rust 语言的优秀途径。来看看 [GitHub][7] 上 Rustlings 5.0.0 的最新功能吧。 + +> **[下载 Rust 速查表][8]** + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/7/learn-rust-rustlings + +作者:[Gaurav Kamathe][a] +选题:[lkxed][b] +译者:[yzuowei](https://github.com/yzuowei) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/gkamathe +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/lead-images/rust_programming_crab_sea.png +[2]: https://opensource.com/article/22/6/rust-toolchain-rustup +[3]: https://github.com/rust-lang/rustlings +[4]: https://opensource.com/article/22/6/rust-toolchain-rustup +[5]: https://opensource.com/article/19/2/getting-started-cat-command +[6]: https://opensource.com/article/18/4/using-less-view-text-files-command-line +[7]: https://github.com/rust-lang/rustlings/releases/tag/5.0.0 +[8]: https://opensource.com/downloads/rust-cheat-sheet diff --git a/published/202212/20220810 How to Record Streaming Audio in Ubuntu and other Linux Distributions.md b/published/202212/20220810 How to Record Streaming Audio in Ubuntu and other Linux Distributions.md new file mode 100644 index 0000000000..4cd33a4e74 --- /dev/null +++ b/published/202212/20220810 How to Record Streaming Audio in Ubuntu and other Linux Distributions.md @@ -0,0 +1,185 @@ +[#]: subject: "How to Record Streaming Audio in Ubuntu and other Linux Distributions" +[#]: via: "https://itsfoss.com/record-streaming-audio/" +[#]: author: "Abhishek Prakash https://itsfoss.com/" +[#]: collector: "lkxed" +[#]: translator: "FYJNEVERFOLLOWS" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15381-1.html" + +如何在 Ubuntu 中录制流媒体音频 +====== + +![][0] + +> 如何在 Ubuntu 和其他 Linux 发行版中录制音频? + +如果你想通过计算机的麦克风录制语音,可以使用 GNOME 录音机Sound Recorder 或 Audacity。 + +使用 GNOME 录音机很简单,但它功能不足。Audacity 最初可能会让人无从入手,但它有很多专业级录音的功能。不过,在本教程中,我不打算详细讨论这个问题。 + +GNOME 录音机能与麦克风配合使用。还有一个叫做 Audio recorder 的工具,除了麦克风输入,你可以使用它来录制流媒体音乐(来自 Sptify、YouTube、互联网广播、Skype 和其他大多数来源)。 + +总而言之,我将向你展示以下步骤: + +* 使用 GNOME 录音机录制声音 +* 使用 Audio Recorder 录制流音频 + +### 使用 GNOME 录音机从麦克风录制音频 + +GNOME 桌面环境有很多有用的应用程序,录音机就是其中之一。 + +你可以从 Ubuntu 软件中心安装 [录音机][1]。 + +![Sound Recorder can be installed from the Ubuntu Software Center][2] + +或者,你可以在终端中使用此命令来安装它: + +``` +sudo apt install gnome-sound-recorder +``` + +安装后,你可以在系统菜单中找到它,并从那里启动它。 + +![GNOME Sound Recorder][3] + +在开始使用它之前,应确保在系统设置中选择了正确的输入源: + +![Ensure that you have chosen correct input in system settings][4] + +打开录音机,它将显示如下界面: + +![Hit the Record button to start audio recording][5] + +点击“录制Record”按钮,它立即开始录制音频。录制时,你可以选择暂停、停止或取消录制。 + +![Options while recording audio][6] + +你的录音将保存并可从应用程序界面本身获得。单击保存的录音以突出显示。 + +你可以回放或删除该录音。你可以通过单击“保存/下载”按钮选择将其保存到其他位置。你也可以使用“编辑”按钮重命名该录音。 + +![Saved recordings][7] + +这很方便,对吧?你可以选择以 `MP3`、`FLAC` 和多种格式录制。 + +#### 删除 GNOME 录音机 + +不喜欢它或发现它缺乏功能? + +你可以从 Ubuntu 软件中心删除 GNOME 录音机,或使用以下命令: + +``` +sudo apt remove gnome-sound-recorder +``` + +GNOME 录音机应用功能有限,它只从麦克风录制,在某些情况下这不是你想要的。 + +想象一下你想录制 Skype 通话或在应用程序或网络浏览器中播放的内容?在这种情况下,漂亮的 Audio Recorder 会有所帮助。 + +### 使用 Audio Recorder 来录制流媒体音频 + +你可以使用 [官方 PPA][10] 在 Ubuntu 和 LinuxMint 中安装 `Audio Recorder`。在终端中依次使用以下命令: + +``` +sudo apt-add-repository ppa:audio-recorder/ppa +sudo apt update +sudo apt install audio-recorder +``` + +或者,你可以从 [启动台][11] 下载源代码。安装后,你可以从“活动概述Activity Overview”里启动应用程序: + +![Audio Recorder][12] + +#### 记录不同来源的各种声音 + +Audio Recorder 记录计算机产生的各种声音。 + +它记录通过系统声卡、麦克风、浏览器、网络摄像头等播放的音频。 + +换句话说,即使你的系统打喷嚏,它也会记录(如果你想记录的话)。它允许你选择录制设备,如网络摄像头、麦克风、Skype 等。 + +要录制流媒体音乐,请选择适当的源。例如,如果你正在 Rhythmbox 中播放流媒体广播,请选择 Rythmbox。 + +![Audio-Recorder Audio Settings][13] + +#### 在你方便的时候录制 + +Audio Recorder 还提供了设置计时器的选项。你可以在给定的时钟时间或预定义的间隔开始、停止或暂停录制。你还可以设置录制文件大小的限制。 + +此外,你可以在没有音频(或声音很低)时暂停(和停止),并在声音恢复时继续。 + +你所要做的就是编辑计时器面板中的文本。注释掉你不想应用的“规则”,并根据你的要求编辑这些规则。 + +![Audio-recorder Timer Settings][14] + +它提供了其他设置,如登录时自动启动、显示托盘图标和其他记录设置。 + +![Audio-recorder Additional Settings][15] + +#### 以各种文件格式保存录制的音乐文件 + +另一个宝藏。你可以将录制的文件保存为你喜爱的文件格式。支持的文件格式有 OGG 音频、Flac、MP3、SPX 和 WAV。我录音时更喜欢用 MP3 格式。 + +录制的文件存储在 `~/Audio` 中,即主目录中的“音频”文件夹中。 + +![Audio-recorder Audio Formats][16] + +#### Audio Recorder 有多好? + +我在 Ubuntu 中使用 Audio Recorder [录制 YouTube 上播放的音乐][17]。我用 MP3 格式保存了一段 2 分钟的视频,占用了 934 KB 的空间。但我必须说,我没想到录制的音质会这么好。老实说,我无法将它与 YouTube 上的原始歌曲区分开来。 + +#### 删除 Audio Recorder + +如果你不喜欢 Audio Recorder,可以使用以下命令将其删除: + +``` +sudo apt remove audio-recorder +``` + +[同时删除 PPA][18] 是个好主意: + +``` +sudo apt-add-repository -r ppa:audio-recorder/ppa +``` + +### 结论 + +Linux 中可能还有其他几种用于音频录制的工具。像 GNOME 一样,其他桌面环境也可能有录音应用程序。我知道深度操作系统肯定有一个。 + +GNOME 录音机是一个不错的工具,用于从麦克风录制声音。对于录制各种来源的声音,Audio Recorder 是一个不错的选择。 + +我希望这篇文章能满足你的录音需求。如果你有什么建议,请告诉我。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/record-streaming-audio/ + +作者:[Abhishek Prakash][a] +选题:[lkxed][b] +译者:[FYJNEVERFOLLOWS](https://github.com/FYJNEVERFOLLOWS) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/ +[b]: https://github.com/lkxed +[1]: https://wiki.gnome.org/Apps/SoundRecorder +[2]: https://itsfoss.com/wp-content/uploads/2022/08/sound-recorder-ubuntu.png +[3]: https://itsfoss.com/wp-content/uploads/2022/08/sound-recorder.png +[4]: https://itsfoss.com/wp-content/uploads/2022/08/microphone-settings-ubuntu.png +[5]: https://itsfoss.com/wp-content/uploads/2022/08/using-sound-recorder-linux.png +[6]: https://itsfoss.com/wp-content/uploads/2022/08/sound-recording-with-sound-recorder.png +[7]: https://itsfoss.com/wp-content/uploads/2022/08/sound-recorder-interface.png +[8]: https://youtu.be/o7Ia2QGeB7Q +[9]: https://www.youtube.com/c/itsfoss?sub_confirmation=1 +[10]: https://launchpad.net/~audio-recorder/+archive/ubuntu/ppa +[11]: https://launchpad.net/audio-recorder +[12]: https://itsfoss.com/wp-content/uploads/2022/08/audio-recorder-in-overview.png +[13]: https://itsfoss.com/wp-content/uploads/2022/08/audio-recorder-audio-settings.png +[14]: https://itsfoss.com/wp-content/uploads/2022/08/audio-recorder-timer-settings.png +[15]: https://itsfoss.com/wp-content/uploads/2022/08/audio-recorder-additional-settings.png +[16]: https://itsfoss.com/wp-content/uploads/2022/08/audio-recorder-audio-formats.png +[17]: https://itsfoss.com/youtube-dl-audio-only/ +[18]: https://itsfoss.com/how-to-remove-or-delete-ppas-quick-tip/ +[0]: https://img.linux.net.cn/data/attachment/album/202212/25/154829ol11lp47i8o6222c.jpg \ No newline at end of file diff --git a/published/202212/20221004 Learn the OSI model in 5 minutes.md b/published/202212/20221004 Learn the OSI model in 5 minutes.md new file mode 100644 index 0000000000..dc05565ee5 --- /dev/null +++ b/published/202212/20221004 Learn the OSI model in 5 minutes.md @@ -0,0 +1,104 @@ +[#]: subject: "Learn the OSI model in 5 minutes" +[#]: via: "https://opensource.com/article/22/10/osi-model-network-communications" +[#]: author: "Anamika https://opensource.com/users/anamika" +[#]: collector: "lkxed" +[#]: translator: "cool-summer-021" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15352-1.html" + +5 分钟内了解 OSI 模型 +====== + +![][0] + +> 理解 OSI 框架的基本概念,掌握计算机系统通信机制。 + +开放系统互联Open Systems Interconnection(OSI)模型是一个定义计算机、服务器和用户如何在一个系统内通信的标准。它是第一个网络通信标准模型,在上世纪 80 年代早期,所有主流的计算机和通信公司都采用了这个标准。 + +OSI 模型提供了一种用于描述网络的通用语言,并以离散的块或层的方式来描述。 + +### OSI 模型的各个层 + +该模型描述了计算机系统通过网络进行通信的七个层。 + +- 7 应用层 +- 6 表示层 +- 5 会话层 +- 4 传输层 +- 3 网络层 +- 2 数据链路层 +- 1 物理层 + +每个层都有自己的工作方式和一系列跟其他层不同的协议。本文将逐个剖析这些层级。 + +### 应用层 + +应用层是在软件中实现的。它是与应用程序交互的层级。 + +用发送消息作为例子。发送消息的程序与应用层进行交互,并发送消息。接着,应用层向 OSI 模型的下一个层级(即表示层)发送消息。 + +### 表示层 + +来自应用层的数据被转发到表示层。表示层接收到文字、字符、字母、数字等形式的数据,并把它们转换为机器可识读的二进制格式数据。这个过程叫做编译。 + +在此阶段,ASCII(美国信息交换标准码)字符被转换为扩充的二进制编码的十进制交换码(EBCDIC)。转换后的数据在继续传输前,也会进行编码和加密过程,使用 SSL 协议进行加密和解密。 + +表示层的作用是抽象化,它假设下面的层级会处理它们收到的数据。它也负责压缩数据。数据的压缩可能是有损的,也有可能是无损的,这取决于很多因素,这不属于本文的讨论范围。 + +### 会话层 + +会话层的作用是建立和管理连接。该层级的主要工作是建立会话。例如,你登录网上商城,就在你的机器和服务器之间建立了会话。 + +会话层的作用是实现数据的发送和接收,完成后连接的会话就终止了。在一个会话建立前,会进行身份验证。与上一层类似,会话层也假设在它的工作完成后,下面的层级也会准确无误地处理数据。 + +### 传输层 + +传输层的作用是管理数据传输和其自身的关于数据如何传输的一些协议。从会话层传到这里的数据被分为更小的数据单元,这些数据单元称为片段。这个过程叫做“分段”。每个片段包含来源端口号、目标端口号和一个序列号。端口号用来识别发送数据的应用程序。注意,数据以块的形式传输。序列号用于把这些片段按正确的顺序排列。 + +传输层负责控制流量或在给定的时间内传输的数据量。它也负责错误控制,比如数据丢失、损坏等情况。它利用一种错误检测值,通常叫做校验和。传输层对每个数据片段加上校验和,就可以检查所发送的数据是否被正确接收。然后数据传输到网络层。 + +### 网络层 + +网络层的作用是跟其他网络进行通信。它把从一台机器接收到的数据片段传输给另一台位于不同网络的机器。路由器是作用于网络层的。 + +网络层的功能是逻辑寻址(就是确定 IP 地址)。它为发送方和接收方分配 IP 地址,数据包附带了这个地址,就可以被传输到正确的目标机器。接着网络层对数据包进行路由。负载均衡也是在网络层进行的,旨在确保不会发生过载。下一步,数据传输到数据链路层。 + +### 数据链路层 + +数据链路层支持跟其他设备直接通信。 + +它接收到来自网络层、包含发送方和接收方 IP 地址的数据包,进行物理寻址,然后将发送方和接收方的 MAC 地址分配给数据包,形成帧。 + +### 物理层 + +物理层由系统的所有硬件和物理设备(包括网线、导航系统、适配器等)组成。在这里,从前面层级接收到的数据都是 0 和 1 形式的。物理层把这些数据转换并通过各种方式(如果是光纤电缆,有电线、电信号、光信号;如果是 WIFI,则为无线电信号)传输至本地媒介。 + +注意,物理层作用于接收方的一端,把接收到的信号以帧的形式传输到数据链路层(把它转换回二进制数据形式)。然后帧传输到上面的层级,最终应用层(应用软件)会接收到需要的数据。 + +### 结语 + +当你需要描述网络架构或排除网络问题时,OSI 模型的相关知识会对你有所帮助。我希望本文能令你对这个模型的方方面面有清晰的理解。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/osi-model-network-communications + +作者:[Anamika][a] +选题:[lkxed][b] +译者:[cool-summer-021](https://github.com/cool-summer-021) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/anamika +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/lead-images/code_computer_development_programming.png +[2]: https://opensource.com/article/22/10/osi-model-network-communications#application-layer +[3]: https://opensource.com/article/22/10/osi-model-network-communications#presentation-layer +[4]: https://opensource.com/article/22/10/osi-model-network-communications#session-layer +[5]: https://opensource.com/article/22/10/osi-model-network-communications#transport-layer +[6]: https://opensource.com/article/22/10/osi-model-network-communications#network-layer +[7]: https://opensource.com/article/22/10/osi-model-network-communications#data-link-layer +[8]: https://opensource.com/article/22/10/osi-model-network-communications#physical-layer +[0]: https://img.linux.net.cn/data/attachment/album/202212/16/092612etn6gwaecb91bweg.jpg \ No newline at end of file diff --git a/published/202212/20221019.5 ⭐️⭐️ Our open source startup journey.md b/published/202212/20221019.5 ⭐️⭐️ Our open source startup journey.md new file mode 100644 index 0000000000..b8180b32c2 --- /dev/null +++ b/published/202212/20221019.5 ⭐️⭐️ Our open source startup journey.md @@ -0,0 +1,112 @@ +[#]: subject: "Our open source startup journey" +[#]: via: "https://opensource.com/article/22/10/tooljet-open-source-journey" +[#]: author: "Navaneeth PK https://opensource.com/users/navaneeth" +[#]: collector: "lkxed" +[#]: translator: "CanYellow" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15359-1.html" + +我们的开源创业之旅 +====== + +![][0] + +> 以下是开源项目 ToolJet 是如何在一年的时间里取得 13000 颗星标和 200 个贡献者的故事。 + +[ToolJet][1] 是一款开源的低代码框架,用于快速构建和部署内部工具。它的代码库完全由 JavaScript 和 TypeScript 组成。 + +2021 年 4 月,一名开发者独自开始了 ToolJet 的开发,并于 2021 年 6 月推出公测版本,一炮而红。此后,ToolJet 成立了基金会。目前,我们已经有一个 20 人的开发团队。 + +### 为什么选择开源 + +在开发 ToolJet 之前,我曾担任一些企业客户的顾问。这些客户中的许多都庞大到足以维护构建几十个内部工具。尽管来自销售人员、支持人员以及运营人员不断要求对内部工具添加更多功能和修复错误,但开发团队却很难有精力来开发内部工具。 + +我尝试使用过多个平台来构建和维护内部工具。这些工具大多非常昂贵,而且经常不符合要求。我们需要进行修改,而且大多数工具不支持内部托管。 + +作为一名 Ruby 开发者,我最初使用 ActiveAdmin 和 RailsAdmin 来构建内部工具。这两款工具都是极好的,只是将它们应用在使用多个数据源的任务上比较困难。于是我意识到市场上需要一种可以构建用户界面,并能够连接多个数据源的框架。我相信任何为开发者制作的工具都应当是开源的。开发者日常使用的大部分工具与框架都源自世界各地人们的公开协作。 + +### 第一次提交 + +制作像 ToolJet 这样的工具需要全身心的投入,通过出售我的一个业余项目,我获得了五六个月的空闲,于是我立即着手将在我脑海里酝酿了两年的想法付诸现实。 + +2021 年 4 月 1 日,我完成了 ToolJet 的第一次提交(使用 `rails new` 命令)。 + +稍等!我刚刚说 ToolJet 的代码是完全基于 JavaScript 的?请接着往下看。 + +### 构建完成并推销给投资者 + +4、5 月间,我一直坐在电脑屏幕前编写代码和向种子轮的投资者推销我的工具。 + +我的工作还包括创建拖放式应用程序构建器,撰写所有的文档以保证有在主流平台上设置 ToolJet 的文档,创建项目网站,制作发布时所需的海报以及博客文章等等。这一过程进展顺利,没有遇到大的挑战。当时,ToolJet 的前端使用的是 React ,而后端则用的是 Ruby on Rails 。 + +编程工作进行得很顺利,然而向投资者推广的工作进行得并不顺利。我向专注于初创时期投资的风投和天使投资人发送了大约 40 封电子邮件,都石沉大海。大部分邮件都被忽略了,不过也有一些公司向我说明了拒绝的原因,另外一些则给我回了电话。 + +大部分的电话内容都是一样的:我无法说服他们接受开源商业模式。 + +### 工具发布 + +6 月 7 日是发布日。我们首先在 ProductHunt(LCTT 译注:[ProductHunt][11] 是一个新品发布平台)上发布。六个小时后,只有 70 名用户注册。但是我们有成为当天第一名产品的趋势(最终在那一周的产品中排名第三)。这里是原始的 [发布帖][2]。 + +下午 6 点左右,我又在 [HackerNews][3] 上发帖,一个小时内,这个帖子便升至榜首。大量的访问者注册并给我的版本库点亮星标,我对此很高兴。许多访问者和用户报告了软件和文档中的错误。距离在 HackNews 上发帖八个小时之后,超过 1000 名 GitHub 用户给 ToolJet 的 GitHub 版本库点亮了星标,并且有数百人注册了 ToolJet 云。上升趋势一直持续到三天后,ToolJet 版本库总计得到了 2400 个星标。 + +![ToolJet repo stats on GitHub][4] + +### 获得资助 + +ToolJet 项目在 GitHub 上的吸引力足以被风投(VC)世界注意到。发布之后的日子被各种来电挤满了。我们也有其他的选择,但从没有认真考虑过这些它们。这些选择包括: + +- 引导性融资:在项目初期,难以获得付费用户,而我此前也没有足够的储蓄来支撑整个项目。 +- 作为业余项目:在开发小型项目上这是可以的,但我不认为这在 ToolJet 的开发上行得通,毕竟在 ToolJet 平台能够为客户所用之前,我们需要创建大量的集成和 UI 控件。作为一个业余项目,要实现这些可能需要花费数月甚至数年时间。 + +我知道如果将 ToolJet 作为一个业余项目来开发,我可能需要花几个月的时间才能达到我期望的程度。而我希望通过扩大团队加速项目的成熟。鉴于该项目的吸引力,引入风险投资(VC)的资助是显而易见的选择。 + +好消息是在 HackNews 上发布之后的两周内我们成功募集了 [155 万美元的资金][5]。 + +### 在开源中积累很重要 + +发布后不久,我们发现许多人希望为 ToolJet 项目做贡献,但是他们几乎都是 JavaScript 开发者。我们也意识到像 ToolJet 这样的项目在未来会有成百上千的数据接口,只有基于插件的架构才行得通。我们于 2021 年 8 月决定从 Ruby 迁移到 TypeScript 上来。即使这花费了一个月的时间和巨大的努力,这仍然是我们在 ToolJet 项目上作出的最正确的决定。今天,我们有一个由我们的 [插件开发套件][6] 支持的可扩展的基于插件的架构。我们获得了来自超过 200 名开发者的贡献。关于这次迁移的文章参见 [这篇博客][7] 和 [另一篇博客][8]。 + +### 发布 v1.0 版本 + +自 8 月份以后,很多用户已经在生产环境中使用 ToolJet ,该平台并没有出现过任何稳定性或扩展性的问题。我们准备在发布 v1.0 版本之前完成开发人员平台的功能。开发人员平台允许任何 JavaScript 开发者构建和发布 ToolJet 插件。这样开发人员就可以为 ToolJet 开发数据接口。把集成测试的时间算上,创建一个 ToolJet 接口的时间也只需要30分钟。 + +### 创建持续成长的社区 + +![ToolJet star history][9] + +我们没有在销售上投入资金,我们的大部分精力都放在了传播 ToolJet 的消息、撰写我们的经验教训以及维持开发社区的活跃上。我们有一个关注社区里问题的三人团队。 + +### 商业模式 + +如果没有 [商业产品][10] 来支付账单,ToolJet 就无法成为一项可持续的业务。我们构建了 ToolJet 的客户付费的企业版本。ToolJet 的免费的社区版本没有任何使用限制,企业版中的额外功能都只与大型团队有关。我们现在的客户已经有超大型公司。我们有足够的银行存款来打造更好的 ToolJet ,因此我们目前正聚焦于产品提升上。 + +### 接下来做什么 + +我们在开源社区的不断反馈和贡献的帮助下,我们可以经常性发布更好的 ToolJet 版本。很多主要的优化、大量的数据接口以及 UI 组件正在开发进程中。我们正以前所未有的速度朝着我们的最初目标前进,即成为一个可以连接到数百个数据源和构建最复杂的用户界面的开源框架。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/tooljet-open-source-journey + +作者:[Navaneeth PK][a] +选题:[lkxed][b] +译者:[CanYellow](https://github.com/CanYellow) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/navaneeth +[b]: https://github.com/lkxed +[1]: https://github.com/ToolJet/ToolJet +[2]: https://www.producthunt.com/products/tooljet-0-5-3 +[3]: https://news.ycombinator.com/item?id=27421408 +[4]: https://opensource.com/sites/default/files/2022-10/tooljet-repo-stats.png +[5]: https://blog.tooljet.com/raising-vc-funding-for-open-source-project +[6]: https://www.npmjs.com/package/@tooljet/cli +[7]: https://blog.tooljet.com/migrating-toojet-from-ruby-on-rails-to-nodejs +[8]: https://blog.tooljet.com/how-we-migrated-tooljet-server-from-ruby-to-node-js +[9]: https://opensource.com/sites/default/files/2022-10/tooljet-star-history.png +[10]: https://opensource.com/article/19/11/product-vs-project +[11]: https://www.producthunt.com/ +[0]: https://img.linux.net.cn/data/attachment/album/202212/17/221548rbp2t6z8ah3h031s.jpg \ No newline at end of file diff --git a/published/202212/20221025.3 ⭐️ How to Change Login Screen Background in Ubuntu.md b/published/202212/20221025.3 ⭐️ How to Change Login Screen Background in Ubuntu.md new file mode 100644 index 0000000000..1c1701997a --- /dev/null +++ b/published/202212/20221025.3 ⭐️ How to Change Login Screen Background in Ubuntu.md @@ -0,0 +1,103 @@ +[#]: subject: "How to Change Login Screen Background in Ubuntu" +[#]: via: "https://www.debugpoint.com/change-login-background-ubuntu/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "robsean" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15329-1.html" + +如何更改 Ubuntu 的登录屏幕背景 +====== + +![][0] + +> 这篇指南可以让你如何摆脱 Ubuntu 的无趣的登录背景屏幕,并在你每次登录时设置一张漂亮的图片来欢迎你。 + +我总是认为,在你启动你的系统后,应该有一个漂亮的登录屏幕来欢迎你。这本身就为你即将开始的工作或活动渲染了愉快的氛围。尽管,我不是一名 Windows 的粉丝,但是我很欣赏 Windows 10 的登录背景都会每天随着 Bing 壁纸进行更改,它看起来好极了,对吧? + +前段时间,我们讨论了如何 [更改 Fedora 的登录屏幕背景][1] 和 [更改 elementary OS 的登录屏幕背景][2] 。现在这篇指南将向你解释,如何更改使用 GNOME Shell 的 Ubuntu 的登录屏幕背景。 + +登录屏幕背景是显示管理器(DM)属性的一部分。这篇指南将使用一位用户在 GitHub 中创建的一个脚本,使得普通用户也能简单易用。否则,你需要在提取 `.gresource` 文件后,必须手动更改 Gnome 显示管理器Gnome Display Manager(GDM)的 CSS 文件,接下来再编译它。一般来说,这是很复杂的。 + +![Ubuntu 登录屏幕 – 在更改前][3] + +### 更改 Ubuntu 的登录背景 + +打开一个终端(按下组合键 `CTRL+ALT+T`)。 + +使用下面的命令,下载这个 [GitHub 仓库][4] : + +``` +wget github.com/thiggy01/change-gdm-background/raw/master/change-gdm-background +``` + +**注意**: 如果你没有 `wget` ,使用 `sudo apt install wget` 来安装它。 + +> **Ubuntu 22.04 Jammy Jellyfish** 用户需要更改一些额外的代码来使其工作,因为,在 GitHub 仓库中,开发者没有修复它。因此,在这里你需要自己来更改。 +> +> 使用 gedit 来打开 `change-gdm-background` 文件。接下来,转到下面的行(`#15`) 并添加 `|jammy` 。 +> +> ![脚本更改为允许 jammy][5] +> +> 接下来,转到下面的两行(`#144` 和 `#184`)。将 `gdm3.css` 更改为 `gdm.css` 。如下图所示。 +> +> ![修正针对 gdm 的 css 文件][6] +> +> 最后,保存文件,并遵循如下的操作指南。这种解决方法只适用于 Ubuntu 22.04 的登录屏幕的更改。 + +更改脚本的权限来使其可执行: + +``` +chmod +x change-gdm-background +``` + +接下来,更改 Ubuntu 的登录背景壁纸,使用下面的命令。按照你的图片相应地更改路径: + +``` +sudo ./change-gdm-background ~/Pictures/tree.jpg +``` + +这一步骤可能需要 `libglib2.0-dev` 软件包,它将会自动地安装。提取和编译 `.gresource` 会用到它。 + +在安装后,它应该会提示你重新启动 GDM 。慎重起见,按下 `N` 按键。 + +注销后,你可以看到更改后的 Ubuntu 的背景。 + +如果你没有看到更改,尝试重新启动你的系统,然后尝试登录。 + +![在更改后的,Ubuntu 的登录屏幕背景][7] + +### 恢复先前的登录屏幕 + +该脚本也提供了一种恢复先前的登录屏幕的特色功能。它在更改你的 `.gresource` 文件前,会将其进行备份。因此,恢复先前的登录屏幕,只需要在终端中简单地运行下面的命令。 + +``` +sudo ./change-gdm-background --restore +``` + +这应该会将其登录屏幕更改回其先前的形式。 + +请在下面的评论框中,让我知道这篇指南的内容是否对你有效果,这应该适用于所有的最新版本的 Ubuntu Linux 。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/change-login-background-ubuntu/ + +作者:[Arindam][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://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/2021/09/change-login-background-fedora/ +[2]: https://www.debugpoint.com/2021/07/change-lock-login-screen-background-elementary-os/ +[3]: https://www.debugpoint.com/wp-content/uploads/2021/09/Ubuntu-Login-screen-before-change-1024x539.jpg +[4]: https://github.com/thiggy01/change-gdm-background +[5]: https://www.debugpoint.com/wp-content/uploads/2022/09/script-change-to-allow-jammy.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2022/09/correct-the-css-file-for-gdm.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2021/09/Ubuntu-Login-screen-After-Change-1024x538.jpg +[0]: https://img.linux.net.cn/data/attachment/album/202212/08/121701hdfufrlqe4qtdtel.jpg \ No newline at end of file diff --git a/published/202212/20221026.0 ⭐️⭐️⭐️ Doing 64-bit math on a 16-bit system.md b/published/202212/20221026.0 ⭐️⭐️⭐️ Doing 64-bit math on a 16-bit system.md new file mode 100644 index 0000000000..4630edf724 --- /dev/null +++ b/published/202212/20221026.0 ⭐️⭐️⭐️ Doing 64-bit math on a 16-bit system.md @@ -0,0 +1,158 @@ +[#]: subject: "Doing 64-bit math on a 16-bit system" +[#]: via: "https://opensource.com/article/22/10/64-bit-math" +[#]: author: "Jerome Shidel https://opensource.com/users/shidel" +[#]: collector: "lkxed" +[#]: translator: "yzuowei" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15332-1.html" + +如何在 16 位系统上进行 64 位数学运算 +====== + +![][0] + +> 只要对汇编有一点基本的了解,这些函数就能扩展到任意位长的整型数学运算。 + +几年前,我为 FreeDOS 写了一个叫做 VMATH 的命令行数学程序。它只能在很小的无符号整型上执行十分简单的数学运算。随着近来 FreeDOS 社区里对基础数学的兴趣,我改进了 VMATH 使其可以为有符号 64 位整型提供基本的数学支持。 + +仅使用 16 位 8086 兼容的汇编指令来操控大型数字的过程并不简单。我希望能够分享一些在 VMATH 中用到的技术例子。其中一些方法掌握起来相当容易。而另外一些方法则看起来有点奇怪。你甚至可能学到一种进行基本数学运算的全新方式。 + +接下来要讲的加、减、乘、除会用到的技术将不局限于并不局限于 64 位整型。只要对汇编有一点基本的了解,这些函数就能扩展到任意位长的整型数学运算。 + +在深入研究这些数学函数前,我想先从计算机的角度介绍一下数字的一些基本知识。 + +### 计算机是如何读取数字的 + +一个英特尔兼容的 CPU 以字节Byte的形式贮存数字,储存顺序为从最低有效字节到最高有效字节。每个字节由 8 个二进Bit组成,两个字节组成一个Word。 + +一个储存在内存里的 64 位整型占用了 8 个字节(即 4 个字)。例如,数字 `74565`(十六进制表示为 `0x12345`)的值长得是这个样子的: + +``` +用字节表示:db 0x45, 0x23, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 +用字表示:dw 0x2345, 0x0001, 0x0000, 0x0000 +``` + +当读取或写入数据到内存时,CPU 会以正确的顺序处理这些字节。对于比 8086 更现代的处理器而言,数据分组可以再大些,比如一个四字组Quadword就可以表达整个 64 位整型 `0x0000000000012345`。 + +8086 CPU 不能理解这么大的数字。当为 FreeDOS 编程时,你想要写的是一个能在任意电脑上跑的程序,甚至是原始的 IBM PC 5150。你想要使用能够扩展到任意大小整型的技术。我们其实并不关心更现代 CPU 的能力。 + +为了能做整型运算,我们的数据需要表达两种不同类型的数字。 + +第一种是无符号unsigned整型,其使用了所有的位来表达一个正数。无符号整型的值域为从 `0` 到 $2^{位长} - 1$。例如,8 位数可以是 `0` 到 `255` 之间的任意值,而 16 位数则在 `0` 到 +`65535` 之间,以此类推。 + +有符号整型也很类似。不同之处在于数字的最高位代表了这个数是一个正数(`0`)还是一个负数 (`1`)。有符号整型的值域前半部分为正数,正数值域是从 `0` 到 $2^{(位长 - 1)} - 1$。整型值域的后半部分为负数,负数值域则从 $0 - (2^{位长 - 1})$ 到 `-1`。 + +比如说,一个 8 位数代表着 `0` 到 `127` 之间的任意正数,以及 `-128` 到 `-1` 之间的任意负数。为了能更好的理解这一点,想象 **字节** 为一列数组 `[0...127,-128...-1]`。因为 `-128` 在数组内紧跟着 `127`,`127` 加 `1` 等于 `-128`。当然这可能看起来有点奇怪甚至反常,但这其实让这个层级的基本数学运算变简单了。 + +为了能够对大型整型进行简单的加、减、乘、除,你应该摸索一些简单的公式来计算一个数的绝对值或负值。你在做有符号整型运算的时候会用上它们的。 + +### 绝对值与负值 + +计算一个有符号整型的绝对值并没有它看起来的那么糟糕。由于无符号和有符号数字在内存里的储存形式,我们其实有一个简单的方案。你只需要翻转一个负数的所有字位,得出的结果再加 `1`。 + +如果你从没接触过二进制的话,这可能听上去有点奇怪,但这就是这么工作的。让我们来举一个例子,取一个负数的 8 位表达,比如说 `-5`。因为 `-5` 靠近 `[0...127,-128...-1]` 字节组末端,它的十六进制值为 `0xfb`,二进制值为 `11111011`。如果你翻转了所有字位,你会得到 `0x04` 或二进制值 `00000100`。结果加 `1` 你就得到了你的答案:你刚刚把 `-5` 的值变成了 `+5`。 + +你可以用汇编写下这个程序用以返回任意 64 位数字的绝对值: + +``` +; 语法,NASM for DOS +proc_ABS: +  ; 启动时,SI 寄存器会指向数据段(DS)内的内存位置,那里存放着程序内包含着 +  ; 会被转为正数的 64 位数。 +  ; 结束时,如果结果数字不能被转正,CF 寄存器会被设置。这种情况只 +  ; 有在遇到最大负值时会发生。其余情况,CF 不会被设置。 +  +  ; 检查最高字节的最高位 +  test [si+7], byte 0x80 +  ; 如不为 1,值为正值 +  jz .done_ABS +  ; 翻转所有位 +  not word [si+6] ; 字 #4 +  not word [si+4]       ; 字 #3 +  not word [si+2]       ; 字 #2 +  not word [si]         ; 字 #1 +  ; 字 #1 加 1 +  inc word [si] +  ; 如结果不为 0,结束 +  jnz .done_ABS +  ; 字 #2 加 1 +  inc word [si+2] +  ; 如结果为 0,进位下一个字 +  jnz .done_ABS +  inc word [si+4] +  jnz .done_ABS +  ; 此处无法进位 +  inc word [si+6] +  ; 再一次检查最高位 +  test [si+7], byte 0x80 +  ; 如不为 1,我们成功了,结束 +  jz .done_ABS +  ; 溢出错误,它被转成了负数 +  stc +  ; 设置 CF 并返回 +  ret +.done_ABS: +  ; 成功,清理 CF 并返回 +  clc +  ret +``` + +你可能已经注意到了,这个函数有一个潜在问题。由于正数和负数的二进制值表达方式,最大负数无法被转成正数。以 8 位数为例,最大负数是 `-128`。如果你翻转了 `-128` 的所有位数(二进制 `1__0000000`),你会得到 127(二进制 `0__1111111`)这个最大正值。如果你对结果加 `1`,它会因溢出回到同样的负数(`-128`)。 + +要将正数转成负数,你只需要重复计算绝对值的步骤就行。以下的程序十分相似,你唯一需要确认的就是一开始的数字不是已经负了。 + +``` +; 语法, NASM for DOS +proc_NEG: +  ; 开始时,SI 会指向需要转负的数字在内存里的位置。 +  ; 结束时,CF 永远不会被设置。 +  +  ; 检查最高字节的最高位 +  test [si+7], byte 0x80 +  ; 如为 1,数已经是负数 +  jnz .done_NEG +  not word [si+6]       ; 翻转字的所有位,字 #4 +  not word [si+4]       ; 字 #3 +  not word [si+2]       ; 字 #2 +  not word [si]         ; 字 #1 +  inc word [si]         ; 字 #1 加 1 +  ; 如结果不为 0,结束 +  jnz .done_NEG +  ; 字 #2 加 1 +  inc word [si+2] +  ; 如结果为 0,进位下一个字 +  jnz .done_NEG +  inc word [si+4] +  jnz .done_NEG +  ; 此处无法进位或转化 +  inc word [si+6] +  ; 正。 +.done_NEG: +  clc                   ; 成功,清理 CF 并返回 +  ret +``` + +看着这些绝对值函数与负值函数间的通用代码,它们应该被合并起来节约一些字节。合并代码也会带来额外的好处。首先,合并代码能帮助防止简单的笔误。这样也可以减少测试的要求。进一步来讲,这样通常会让代码变得简单易懂。在阅读一长串的汇编指令时,忘记读到哪里是常有的事。现在,我们可以不管这些。 + +计算一个数的绝对值或负值并不难。但是,这些函数对于我们即将开始的有符号整型数学运算至关重要。 + +我已经介绍了整型数字在位这一层面的基本表示方法,也创造了可以改变这些数字的基本程序,现在我们可以做点有趣的了。 + +让我们来做些数学运算吧! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/64-bit-math + +作者:[Jerome Shidel][a] +选题:[lkxed][b] +译者:[yzuowei](https://github.com/yzuowei) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/shidel +[b]: https://github.com/lkxed +[0]: https://img.linux.net.cn/data/attachment/album/202212/09/150829g7c7x5e22qqo53c4.jpg \ No newline at end of file diff --git a/published/202212/20221028.1 ⭐️⭐️ Write documentation like you develop code.md b/published/202212/20221028.1 ⭐️⭐️ Write documentation like you develop code.md new file mode 100644 index 0000000000..95f0e82e50 --- /dev/null +++ b/published/202212/20221028.1 ⭐️⭐️ Write documentation like you develop code.md @@ -0,0 +1,88 @@ +[#]: subject: "Write documentation like you develop code" +[#]: via: "https://opensource.com/article/22/10/docs-as-code" +[#]: author: "Lorna Mitchell https://opensource.com/users/lornajane" +[#]: collector: "lkxed" +[#]: translator: "CanYellow" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15364-1.html" + +像书写代码一样撰写文档 +====== + +![][0] + +> 不想让文档成为事后的想法?或许你该尝试一下全新的写作方式。 + +很多工程师与手工艺者都对他们使用的工具有特别的要求。为了顺利的完成工作,你需要最好的工具和使用它们的技巧。软件开发中最好的工具在应用到其他的数字创作领域中也可以是很强大的。[文档即代码][1]Docs as Code 的方式就是很好的例子。“文档即代码”意味着使用与代码开发相同的工具和工作流来撰写文档。文档即代码的支持者认为,这样的方式可以在降低写作者的工作量的同时,也带来了更好的文档。 + +### 文本格式与源文件控制 + +从传统的写作平台切换到文档即代码方式时,最主要的调整是将写作内容保存在基于文本的标记格式中。这一转变使得基于纯文本的工具都适用于文档写作。无论你选择 [DocBook][2]、[Markdown][3] 或者其他的标记语言,从只使用一种工具到使用一种标准格式配合多种工具是一种巨大的转变。 + +找到支持你的工作流程的工具是非常重要的。很多开发者在文档即代码项目中使用他们的 [代码编辑器][4]。因为他们已经是这些工具的高阶用户,一切都很顺利。而找到适合团队里其他专业人员,比如技术撰稿、编辑、信息架构师和文档产品责任人的工具可能需要一番努力。这里有一些选项可供参考: + +- 各种 [优秀的 Markdown 编辑器][5] 之一 +- 附带良好的预览工具的代码编辑器可能更适合非程序员 +- 流行的 Git 托管服务的网页界面尤其适用于偶尔有需要的贡献者 + +一旦内容以标记语言的格式安全地保存,就可以使用 [Git][6] 这样的版本控制进行管理。Git 相比大多数文档平台具有更多的功能: + +- 清晰详细的文档版本历史:谁在什么时候改变了什么。如果你有良好的提交信息惯例,你甚至可以了解到为什么会有这样的变更。 +- 简明的并行修改过程。在 Git 中使用分支工作意味着任何人可以做出他们想要的任何改变,并在最后合并所做的变更。 +- 先进的协作与审查工具。所有的源代码管理平台都被设计成支持详细审查每一个变更,并根据需要进行讨论,使每个人都确信这个变更可以继续进行。 +- 自动质量检查,比如拼写检查和链接检查。这不仅节省了时间,而且可以发现可能遗漏的错误。 + +源代码管理有很多优点。但要记住,如果你准备入门源代码管理,它有一定的学习曲线。这是一些有助于撰写者入门的优秀的 [学习资源][7] 和 [文章][8]。你也可以让具有好奇心的文档撰写者自行寻找对他们有用的学习材料,而不是请你的工程师来培训他们。(问我是怎么学会的? —— 当然是通过艰苦的方式!) + +### 拉取请求和评审循环 + +所有的源代码管理平台都围绕 拉取请求Pull Request 这一概念设计的,这有时也称为 合并请求Merge Request:有时候,某个人或某个团队先将一系列改变整合到一起,然后请求把这些修改拉到主项目中。不过从许多方面来说,在文档中一次处理多个变更比在代码中更容易。改变一篇文章中的某个地方,比更改代码并发现有其它几个地方依赖它,副作用更小。 + +最强大的协作工具是 [diff][9],它可以通过一个易于理解的方式展示旧版本与新版本之间的差异。该工具有许多不同的版本,可以使比较视图更易于查看:双栏模式、行内模式,甚至是渲染过的 Markdown 模式。团队中的每一个成员都可以选择最适合他们的工具。举例而言,网页视图通常用于查看细微变更,而对于更大的变更,我习惯于使用 `vimdiff` 或 [Meld][10] 在本地浏览。 + +评审意见可以被添加到整个修改中,也可以添加到拟议的变更的个别行中。一些项目限制了行的最大长度,即硬换行,或者一行一句,以使得向文本的特定的部分添加注释更加容易。可以添加进一步的修改与评论,直到审查过程结束,修改被接受。由于拉取请求在项目仓库以队列形式展示,这是一种很好的方式,可以展示目前正在进行的任务以及需要进行检查操作的任务。`diff` 工具使得评审人员更方便地添加他们的思考。尤其是你在与技术受众工作时,你可以通过他们日常使用的工具获得来自他们的评论。 + +### 持续集成与部署 + +以纯文本形式提供你的文档的源代码有很多益处,你可以轻易找到每一个需要修改的位置,你可以使用现有的诸如 [wc][11]、[grep][12] 或 `tree` 之类的工具,来处理潜在的大型文档集。当你将这些与源代码管理平台结合起来之后,你可能获得更多的可用工具,并且它们都是开源的。 + +另一个工作流程上的巨大提升是持续部署的能力。简单来说,这意味着,每当一个拉取请求被合并到主项目中,项目可以直接自动化部署到位。如果这个变更足够好,就可以放进项目中,它也足够好到可以在放到文档网站上帮助你的读者。典型情况下,持续部署是配置在一台单独的自动化服务器上的,比如 [Jenkins][13] 或者 [Git 钩子][14]。不论哪种方式,基于文本的标记语言与文档即代码平台(通常是静态网页生成器,比如 [Hugo][15] 或 [Sphinx][16])结合来生成文档网站,然后自动部署。 + +在部署之前,同样的自动化流程可以被用于对将要合并的拉取请求进行检查。在一个编程项目中,通过计算机自行进行代码检查、代码测试和其他的质量检查已经习以为常。通过类似 [Vale][17] 之类的工具可以对文本进行检查,文档项目也可以同样对待。你也可以添加其他的工具,比如添加一个链接检查器来确保文中所有的链接都是有效的。 + +### 用于文档流程的代码工具 + +被工程师们熟知并喜爱的工具都是非常好的工具,它们同时也可以用于其他类型的项目中。对于文档而言,它们提升了宝贵的效率,尤其是当你希望你的文档与你的团队同步推进的时候。上面讨论到的所有工具都是开源的,你可以亲自尝试,也可以为大型全球团队,亦或者介于两者之间的团队,部署它们。愿你的成文过程和编程过程一样顺畅。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/docs-as-code + +作者:[Lorna Mitchell][a] +选题:[lkxed][b] +译者:[CanYellow](https://github.com/CanYellow) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/lornajane +[b]: https://github.com/lkxed +[1]: https://www.writethedocs.org/guide/docs-as-code +[2]: https://opensource.com/article/17/9/docbook +[3]: http://commonmark.org +[4]: https://opensource.com/article/20/12/eclipse +[5]: https://opensource.com/article/21/10/markdown-editors +[6]: https://opensource.com/downloads/cheat-sheet-git +[7]: https://opensource.com/article/18/1/step-step-guide-git +[8]: https://opensource.com/article/19/4/write-git +[9]: https://opensource.com/article/21/11/linux-diff-patch +[10]: https://opensource.com/article/20/3/meld +[11]: https://www.redhat.com/sysadmin/linux-wc-command?intcmp=7013a000002qLH8AAM +[12]: https://opensource.com/downloads/grep-cheat-sheet +[13]: https://www.jenkins.io +[14]: https://www.redhat.com/sysadmin/git-hooks +[15]: https://opensource.com/article/18/3/start-blog-30-minutes-hugo +[16]: https://opensource.com/article/19/11/document-python-sphinx +[17]: https://vale.sh +[0]: https://img.linux.net.cn/data/attachment/album/202212/19/215600m3bzhqlu23lskssl.jpg \ No newline at end of file diff --git a/published/202212/20221103.6 ⭐️⭐️⭐️ How To Securely Transfer Files With SCP In Linux.md b/published/202212/20221103.6 ⭐️⭐️⭐️ How To Securely Transfer Files With SCP In Linux.md new file mode 100644 index 0000000000..bc00a197f5 --- /dev/null +++ b/published/202212/20221103.6 ⭐️⭐️⭐️ How To Securely Transfer Files With SCP In Linux.md @@ -0,0 +1,530 @@ +[#]: subject: "How To Securely Transfer Files With SCP In Linux" +[#]: via: "https://ostechnix.com/securely-transfer-files-with-scp-in-linux/" +[#]: author: "sk https://ostechnix.com/author/sk/" +[#]: collector: "lkxed" +[#]: translator: "MjSeven" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15377-1.html" + +如何在 Linux 中使用 SCP 安全地传输文件 +====== + +![][0] + +在网络上文件传输可以通过各种不同的方式和协议来完成。**远程复制文件**最常用的协议是 **Rsync**、**SCP** 和 **SFTP**。在本文中,我们将了解**什么是 SCP** 以及如何在 Linux 和类 Unix 操作系统中**使用 SCP 在本地和远程计算机之间安全地传输文件**。 + +### 什么是 SCP? + +SCP,代表 安全复制Secure Copy,它是一个命令行程序,在 Linux 和类 Unix 操作系统中以安全的方式在本地和远程系统之间,或在两个远程系统之间复制文件和目录。 + +使用 `scp` 命令,你可以安全地复制文件或目录: + +- 从本地到远程系统 +- 从远程系统到本地 +- 在两个远程系统之间 + +使用 `scp` 命令传输数据时,文件和目录都是加密的。因此,即使网络被破坏,作恶者也无法获得任何有意义的数据。 + +SCP 是 openSSH 程序的一个组件,它使用 SSH 协议安全地传输文件。几乎所有现代 Linux 和 Unix 发行版都预装了 OpenSSH,所以不必费心安装它。 + +#### 提醒一句: + +根据 openSSH 开发人员的**官方公告**: + +> **scp 协议已经过时了**,它不灵活且不易修复。我们建议使用更现代的协议,如 `sftp` 和 `rsync` 来代替。 +> +> 参考 - [https://lists.mindrot.org/pipermail/openssh-unix-dev/2019-March/037672.html][1] + +但是,大多数用户仍然更喜欢 SCP 协议。因为,SCP 处理远程文件传输比同行 SFTP 和 Rsync 更快。 + +另外,SCP 的工作原理与 `cp` 命令完全相同,而 `rsync` 则会判断源目录是否有**结尾斜杠**而出现不同的行为。看一看下面的命令: + +- `rsync source destination/` - 将 `source` 目录复制到 `destination` 文件夹内。 +- `rsync source/ destination/` - 将 `source` 目录的内容复制到 `destination` 文件夹中。 + +所以,你必须反复检查是否在路径中添加了斜杠。 + +我个人使用 **[Rsync][2]** 在两台主机之间复制大文件,使用 SCP 在网络上复制单个文件。 + +### SCP 命令语法 + +SCP 的通用语法如下: + +``` +scp [-346ABCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] source ... target +``` + +根据文件传输路径的不同,语法也会有所不同。这里我罗列了一些语法格式示例。 + +从本地复制一个文件到远程系统: + +``` +scp SourceFile User@RemoteHost:RemotePath +``` + +类似的,从本地系统复制一个目录到远程系统,使用 `-r` 参数: + +``` +scp -r SourceDirectory User@RemoteHost:RemotePath +``` + +复制多个文件到远程系统: + +``` +scp SourceFile1 SourceFile2 User@RemoteHost:RemotePath +``` + +远程系统复制文件到本地: + +``` +scp User@RemoteHost:RemoteFilePath DestinationFile +``` + +远程系统复制目录到本地: + +``` +scp -r User@RemoteHost:RemoteDirectoryPath DestinationDirectory +``` + +在本地将文件在两个远程系统之间复制: + +``` +scp User@RemoteHost1:RemoteFile1 User@RemoteHost2:RemotePath +``` + +注意,当你在两个远程系统之间复制文件时,流量不会通过本地系统。操作直接在两个远程系统之间进行。但是,你可以使用 `-3` 参数让流量经过你运行 `scp` 命令的系统。 + +从你的本地系统将一个远程系统的目录复制到另一个远程系统: + +``` +scp -r User@RemoteHost1:RemoteDirectory User@RemoteHost2:DestinationPath +``` + +### SCP 命令参数 + +SCP 命令最常用的参数有: + +- `-C`:启用压缩。`C` 代表 压缩Compression。使用此参数时,数据传输速度会更快,因为数据是压缩的。SCP 将自动在源系统上压缩,并在目标系统上解压缩。 +- `-c `:`c` 代表 加密Cipher。默认情况下,SCP 使用 **AES-128** 加密方法对数据进行加密。你可以使用 `-c` 参数更改加密方法。 +- `-i `:`i` 代表 身份Identity 文件或私钥。如你所知,SSH 中使用基于密码或密钥的身份验证。如果希望在传输文件时使用基于密钥的身份验证,可以使用 `-i` 参数指定身份文件或私钥。 +- `-l limit`:`l` 代表 限制Limit 带宽。通过此参数,可以设置传输数据的最大带宽。它的单位是 `Kbit/s`。 +- `-F `:有时你可能需要使用不同的网络来连接到 Linux 系统,或你有一个代理服务器,这种情况下,你可以使用 `-F` 参数使用不同的 `ssh_config` 文件File。 +- `-P port`:`P` 代表 端口Port。注意,这是大写的 `P`。默认情况下,SSH 使用端口 22。但出于安全原因,你可能已经更改了目标主机中的端口号。这种情况下,你应该使用 `-P` 参数显示指定新端口号。 +- `-p`:如果希望 保留Preserve 原始文件的修改时间、访问时间和模式,你需要使用 `-p` 参数。注意是小写 `p`。 +- `-r`:递归Recursively 复制整个目录。 +- `-B`:`B` 代表 批处理Batch 模式。它用于在传输文件时选择批处理模式。可以防止询问密码。 +- `-S program`:用于加密连接的 程序Program 名称。 +- `-v`:`v` 代表 详细Verbose。当使用 `-v` 参数时,命令将会在终端屏幕上打印进度。你会看到文件传输时到底发生了什么。它在调试连接、身份验证和配置问题时非常有用。 + +SCP 有很多参数,你可以查看它的手册页来了解其他参数。让我们看一些**有用的 scp 命令示例**。 + +### 开始前要记住的重要事项 + +- `scp` 命令依赖于 `ssh` 进行安全的文件传输。因此,你必须有一个 **ssh 密钥**或**密码**才能向远程系统进行身份验证。 +- 为了能传输文件,你必须对**源文件有读权限**,对**目标位置有写权限**。 +- `scp` 命令在写入前不会检查目标位置。目标位置中具有相同名称的任何文件都将被**覆盖而不通知**。 +- 为了能够区分本地和远程位置,使用**冒号**(`:`)。 +- 传输大文件时,建议在 **[Screen][3]** 或 **[Tmux][4]** 会话内启动任务。 + +### 在 Linux 中使用 SCP 传输文件 + +正如我所说,我们可以使用 `scp` 命令将文件或目录从本地复制到远程系统,反之亦然,或者在两台远程系统之间复制文件或目录。 + +#### 1. 使用 SCP 从本地系统复制文件到远程系统 + +使用 `scp` 命令将文件从本地复制到远程系统,运行: + +``` +$ scp File1.txt ostechnix@192.168.1.40:/home/ostechnix/ +``` + +示例输出: + +``` +ostechnix@192.168.1.40's password: +File1.txt 100% 104 814.0KB/s 00:00 +``` + +让我们分析一下上面的命令,看看每个参数都做了什么。 + +- `File1.txt` - 源文件 +- `ostechnix` - 远程系统的用户名 +- `192.168.1.40` - 远程系统的 IP 地址 +- `/home/ostechnix/` - 远程系统中的目标目录。这是我们想要传输源文件的绝对路径,如 `File.txt`。 + +你还可以修改目标文件的名称。下面的命令将 `File1.txt` 传输到目的地,保存为 `myfile.txt`。 + +``` +$ scp File1.txt ostechnix@192.168.1.40:/home/ostechnix/myfile.txt +``` + +![将文件从本地复制到远程系统][5] + +#### 2. 使用 SCP 从本地系统复制多个文件到远程系统 + +使用 `scp` 命令将多个文件从本地系统传输到远程系统,运行: + +``` +$ scp File1.txt File2.txt ostechnix@192.168.1.40:/home/ostechnix/ +``` + +示例输出: + +``` +ostechnix@192.168.1.40's password: +File1.txt 100% 104 689.4KB/s 00:00 +File2.txt 100% 496 6.3MB/s 00:00 +``` + +![从本地复制多个文件到远程系统][6] + +这里: + +- `File1.txt` 和 `File2.txt` - 源文件名 +- `ostechnix@192.168.1.40` - 远程系统的用户名和 IP 地址 +- `/home/ostechnix` - 目标文件的路径 + +如果文件具有相同的扩展名,你可以使用以下替代命令来实现相同的目标。 + +``` +$ scp {File1,File2}.txt ostechnix@192.168.1.40:/home/ostechnix/ +``` + +或者, + +``` +$ scp *.txt ostechnix@192.168.1.40:/home/ostechnix/ +``` + +#### 3. 使用 SCP 从本地到远程系统递归复制目录 + +递归地将整个目录(包括子目录及其内容)从本地复制到远程系统,使用 `-r` 参数。 + +``` +$ scp -r Documents/ ostechnix@192.168.1.40:/home/ostechnix/ +``` + +![从本地复制目录到远程系统][7] + +上述命令将整个 `Documents` 目录包括其内容复制到目标系统。 + +其中, + +- `-r` - 递归复制文件和目录,包括子目录及其内容 +- `Documents` - 源目录名称 +- `ostechnix@192.168.1.40` - 远程系统的用户名和 IP 地址 +- `/home/ostechnix` - 目标目录的路径 + +#### 4. 用 SCP 将文件从远程系统传输到本地 + +还记得我们从本地系统复制了 `File1.txt` 到远程系统,让我们把它复制回本地。 + +使用 `scp` 命令从远程系统复制文件到本地,运行: + +``` +$ scp ostechnix@192.168.1.40:/home/ostechnix/File1.txt Downloads/ +``` + +其中 + +- `ostechnix@192.168.1.40` - 远程系统的用户名和 IP 地址 +- `/home/ostechnix/File.txt` - 远程系统文件的绝对路径 +- `Downloads` - 本地保存复制文件的位置 + +![从远程系统传输文件到本地][8] + +#### 5. 使用 SCP 将多个文件从远程系统传输到本地 + +将多个文件从远程系统复制到本地,在**花括号内**注明文件的绝对路径,如下所示: + +``` +$ scp ostechnix@192.168.1.40:/home/ostechnix/\{File1.txt,File2.txt\} Downloads/ +``` + +![将多个文件从远程系统传输到本地][9] + +上述命令将从远程系统的 `/home/ostechnix/` 目录中复制 `File1.txt` 和 `File2.txt` 到本地的 `Downloads` 目录中。 + +注意,**花括号内的逗号后面没有空格**。 + +#### 6. 从远程系统递归复制目录到本地 + +使用 `scp` 从远程系统递归复制整个目录(包括子目录及其内容)到本地系统,使用 `-r` 参数。 + +``` +$ scp -r ostechnix@192.168.1.40:/home/ostechnix/Documents Downloads/ +``` + +上述命令将从远程系统将整个 `Documents` 目录复制到本地的 `Downloads` 目录。 + +#### 7. 使用 SCP 在两台远程计算机之间复制文件 + +使用 `scp` 命令将文件从一个远程系统直接复制到另一个远程系统,运行: + +``` +$ scp senthil@192.168.1.40:/home/senthil/File1.txt kumar@192.168.1.20:/home/kumar/ +``` + +它会要求你输入两个远程系统的密码: + +其中, + +- `senthil@192.168.1.40` - 文件源端远程系统的用户名和 IP 地址 +- `/home/senthil/File1.txt` - 复制的文件名及其位置 +- `kumar@192.168.1.20` - 复制文件到目标端的用户名和 IP 地址 +- `/home/kumar` - 在目标端上保存复制文件的位置 + +上述命令将从远程主机 `192.168.1.40` 复制 `/home/senthil/File1.txt` 到 `192.168.1.20` 上的 `/home/kumar/` 目录。 + +在这种方法中,数据将直接从一个远程系统传输到另一个远程系统。如果你想通过本地机器路由流量,使用 `-3` 参数,如下所示: + +``` +$ scp -3 senthil@192.168.1.40:/home/senthil/File1.txt kumar@192.168.1.20:/home/kumar/ +``` + +#### 8. 使用 SCP 复制文件时启用压缩 + +到目前为止,我们在没有压缩的情况下传输了文件。现在我们将使用 `-C` 参数在传输文件时启用压缩。 + +``` +$ scp -C File1.txt ostechnix@192.168.1.40:/home/ostechnix/ +``` + +`-C` 参数将在源端启用压缩,并在目标端自动解压数据。 + +通过启用压缩,可以显著提高文件复制或传输速度。 + +#### 9. 使用 SCP 传输文件时限制带宽 + +我们可以使用 `-l` 参数限制带宽。注意,最大带宽单位为 Kbits/s。1 Byte = 8 bit。因此,如果你想将带宽限制在 200KB/s,`-l` 的值将是 **1600**(200*8)。 + +``` +$ scp -l 1600 File1.txt ostechnix@192.168.1.40:/home/ostechnix/ +``` + +这在传输大文件时非常有用,可以防止 SCP 限制带宽。 + +#### 10. 使用 SCP 复制文件时使用不同端口 + +作为系统管理员,出于安全原因,你可能在远程服务器上 [更改了 SSH 协议的默认端口][10]。这种情况下,你可以在传输文件时使用 `-P` 参数指定端口号。注意:大写的 `P`。 + +``` +$ scp -P 2022 File1.txt ostechnix@192.168.1.40:/home/ostechnix/ +``` + +#### 11. 使用 SCP 复制文件时使用不同的加密方法 + +默认情况下,SCP 使用 `AES-128` 对文件进行加密。如果你想使用不同的加密方法,使用 `c` 参数。 + +例如,如果你想使用 **3des-cbc** 加密方法,命令如下所示: + +``` +$ scp -c 3des-cbc File1.txt ostechnix@192.168.1.40:/home/ostechnix/ +``` + +要查看支持的密码列表,执行: + +``` +$ ssh -Q cipher localhost | paste -d, -s - +``` + +示例输出: + +``` +3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com +``` + +#### 12. 在详细模式下使用 SCP 复制文件 + +如果你想知道使用 `scp` 复制文件时幕后发生了什么,你可以使用 `-v` 参数。使用详细模式传输文件时,终端上会显示执行 `scp` 命令执行的每一步过程。这在故障排除时很方便。 + +``` +$ scp -v File1.txt ostechnix@192.168.1.40:/home/ostechnix/ +``` + +在详细模式下发送文件时,你将看到大量输出,如下所示: + +![在详细模式下使用 SCP 复制文件][11] + +#### 13. 在安静模式下使用 SCP 传输文件 + +我们可以使用 `-q` 参数在安静模式下传输文件。在安静模式下共享文件时,不会在输出中显示进度、警告或诊断信息。 + +``` +$ scp -q File1.txt ostechnix@192.168.1.40:/home/ostechnix/ +``` + +#### 14. 使用 SCP 传输文件时保留文件属性 + +使用 `-p` 参数可以保留文件修改时间、访问时间和模式等文件属性。注意,这是**小写的 p**。 + +``` +$ scp -p File1.txt ostechnix@192.168.1.40:/home/ostechnix/ +``` + +#### 15. 使用 SCP 复制文件时使用身份文件 + +SSH 同时支持基于密码和密钥的身份验证。密钥是 Linux 环境中使用最广泛的身份验证方法。 + +如果你想在传输文件时使用基于密钥的身份验证,使用 `-i` 参数指定身份文件或私钥。 + +``` +$ scp -i my_private_key.pem File1.txt ostechnix@192.168.1.40:/home/ostechnix/ +``` + +#### 16. 使用不同的 ssh 配置文件 + +在某些情况下,你需要使用不同的网络来连接到 Linux 系统,或你有一个代理服务器。这在情况下,你可以配合 `-F` 参数使用不同的 `ssh_config` 文件。 + +``` +$ scp -F /home/ostechnix/my_ssh_config File1.txt ostechnix@192.168.1.40:/home/ostechnix/ +``` + +#### 17. 使用 IPv4 或 IPv6 复制文件 + +在复制文件时,我们可以强制 SCP 只使用 IPv4 或 IPv6 地址。IPv4 网络添加 `-4` 参数,IPv6 网络添加 `-6` 参数可以实现这一点。 + +``` +$ scp -6 File1.txt ostechnix@192.168.1.40:/home/ostechnix/ +``` + +### 常见问题 + +#### 问题 1:什么是 SCP? + +SCP 是一个命令行程序,旨在将文件和目录从本地系统安全地传输到远程系统,反之亦然,或者直接在两个远程系统之间传输。 + +#### 问题 2: 如何使用 SCP 将文件从本地复制到远程计算机? + +将文件从本地复制到远程系统,命令如下: + +``` +scp SourceFile.txt User@RemoteHost:/some/remote/directory +``` + +#### 问题 3:如何递归复制文件和目录? + +递归复制包含子目录的目录,使用 `-r` 参数: + +``` +scp -r /some/local/directory User@RemoteHost:/some/remote/directory +``` + +#### 问题 4:使用 SCP 可以传输多个文件吗? + +当然,只要用空格分隔源文件名即可。 + +从本地复制多个文件到远程: + +``` +scp file1.txt file2.txt file3.txt User@RemoteHost:/some/remote/directory +scp {file1,file2,file3}.txt User@RemoteHost:/some/remote/directory +scp *.txt User@RemoteHost:/some/remote/directory +``` + +从远程复制多个文件到本地: + +``` +scp User@RemoteHost:/some/remote/directory/\{file1.txt,file2.txt,file3.txt\} /some/local/directory +``` + +从一个远程系统复制多个文件到另一个远程系统: + +``` +$ scp User@RemoteHost1:/some/remote/directory/\{file1.txt,file2.txt,file3.txt\} User@RemoteHost2:/some/remote/directory/ +``` + +#### 问题 5:如何传输目录下的所有文件? + +传输整个目录,首先进入该目录: + +``` +cd dir_name +``` + +然后, + +``` +scp *.txt User@RemoteHost:/some/remote/directory +``` + +#### 问题 6:可以压缩文件吗? + +当然。使用 `-C` 压缩文件。文件会在源端压缩,在目标端自动解压缩。 + +``` +scp -C /some/large/file User@RemoteHost:/some/remote/directory +``` + +#### 问题 7:可以保留文件属性吗? + +保留原始文件的修改时间、访问时间和模式等文件属性,使用 `-p` 参数。 + +``` +scp -p file.txt User@RemoteHost:/some/remote/directory +``` + +#### 问题 8: 可以使用其他端口吗? + +当然。SCP 配合 `-P` 参数允许你使用其他端口。 + +``` +scp -P 2022 file.txt User@RemoteHost:/some/remote/directory +``` + +#### 问题 9: 可以使用不同的加密方法吗? + +当然。使用 `-c` 参数。 + +``` +scp -c 3des-cbc User@RemoteHost:/some/remote/directory +``` + +#### 问题 10: 如何列出 SSH 支持的加密方法? + +使用以下命令查看 SSH 和 SCP 支持的加密方法列表: + +``` +ssh -Q cipher localhost | paste -d, -s - +``` + +#### 问题 11:SCP 真的安全吗? + +当然,它用起来是完全安全的。SCP 和 openSSH 使用相同的 SSH 机制。传输的数据在源端加密,目标端解密。 + +#### 问题 12:可以从 Windows 系统传输文件到 Linux 吗? + +当然。使用 `PSCP` 程序将文件从 windows 传输到 Linux 平台,你也可以使用 `WinSCP`。 + +### 总结 + +在这篇全面指南中,我们了解了什么是 SCP,以及如何在 Linux 中使用 **SCP 安全地传输文件**,其中包括 **17 个 SCP 命令示例**,另外还回答了关于 SCP 的常见问题。 + +无论你是 Linux 管理人员、开发人员还是普通用户,你都会面临某个时候将文件复制到远程系统或从远程系统复制文件的情况,知道如何**使用 SCP 安全地复制文件**将是非常有用的。 + +-------------------------------------------------------------------------------- + +via: https://ostechnix.com/securely-transfer-files-with-scp-in-linux/ + +作者:[sk][a] +选题:[lkxed][b] +译者:[MjSeven](https://github.com/MjSeven) +校对:[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://lists.mindrot.org/pipermail/openssh-unix-dev/2019-March/037672.html +[2]: https://ostechnix.com/linux-rsync-command-examples-for-beginners/ +[3]: https://ostechnix.com/screen-command-examples-to-manage-multiple-terminal-sessions/ +[4]: https://ostechnix.com/tmux-command-examples-to-manage-multiple-terminal-sessions/ +[5]: https://ostechnix.com/wp-content/uploads/2022/11/Copy-Files-from-Local-System-to-Remote-System.png +[6]: https://ostechnix.com/wp-content/uploads/2022/11/Copy-Multiple-Files-from-Local-System-to-Remote-System.png +[7]: https://ostechnix.com/wp-content/uploads/2022/11/Copy-Directory-from-Local-System-to-Remote-System.png +[8]: https://ostechnix.com/wp-content/uploads/2022/11/Transfer-Files-from-Remote-System-to-Local-System.png +[9]: https://ostechnix.com/wp-content/uploads/2022/11/Transfer-Multiple-Files-from-Remote-System-to-Local-System.png +[10]: https://ostechnix.com/how-to-change-apache-ftp-and-ssh-default-port-to-a-custom-port-part-3/ +[11]: https://ostechnix.com/wp-content/uploads/2022/11/Copying-Files-with-SCP-in-Verbose-Mode.png +[0]: https://img.linux.net.cn/data/attachment/album/202212/24/152224vy4glx9x39mtth9b.jpg \ No newline at end of file diff --git a/published/202212/20221107.5 ⭐️ How to Install OpenOffice in Arch Linux [Beginner’s Guide].md b/published/202212/20221107.5 ⭐️ How to Install OpenOffice in Arch Linux [Beginner’s Guide].md new file mode 100644 index 0000000000..ed68a3711c --- /dev/null +++ b/published/202212/20221107.5 ⭐️ How to Install OpenOffice in Arch Linux [Beginner’s Guide].md @@ -0,0 +1,87 @@ +[#]: subject: "How to Install OpenOffice in Arch Linux [Beginner’s Guide]" +[#]: via: "https://www.debugpoint.com/install-openoffice-arch/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15308-1.html" + +如何在 Arch Linux 中安装 OpenOffice(新手指南) +====== + +![][0] + +> 在 Arch Linux 及其衍生版中安装 OpenOffice 的初学者指南。 + +[OpenOffice][1] 是最古老的自由开源的办公生产力套件,已经维护了一段时间。它是由 Apache 开发,尽管它已经被分叉为 LibreOffice,但仍然是一个受欢迎的套件。 + +本教程适用于那些想要安装 OpenOffice 以满足工作和其他需要的人。 + +**注意**:在安装之前,请记住许多更新的功能和与微软 Office 的兼容性在 OpenOffice 中并未得到完全支持。如果你想要更现代的 Office 套件版本,请尝试 [LibreOffice][2]。 + +### 在 Arch Linux 中安装 OpenOffice + +[OpenOffice 软件包][3] 在 Arch 用户仓库中可用。因此,要安装它,你需要使用 AUR 助手程序。这是你需要做的。按照下面提到的步骤安装 Yay AUR 助手。如果你想了解有关 Yay 的更多信息,请参阅 [此处提供][4] 的详细指南。 + +依次运行以下命令来安装基本包并克隆 Yay: + +``` +sudo pacman -S base-develsudo pacman -S gitcd /optsudo git clone https://aur.archlinux.org/yay.git +``` + +通过将 `debugpoint` 替换为你的 Arch 系统的用户名来运行以下命令: + +``` +sudo chown -R debugpoint:users ./yay +``` + +最后,使用以下命令安装 AUR 助手: + +``` +cd yaymakepkg -si +``` + +完成后,使用以下命令安装 OpenOffice: + +``` +yay -S openoffice-bin +``` + +![通过 Yay 助手在 Arch Linux 中安装 OpenOffice][5] + +按照屏幕上的说明进行操作。安装后,你可以在应用菜单中找到它,如下图所示。 + +启动 OpenOffice 并将你的姓名和详细信息添加到启动向导中,你就可以使用了。 + +![Arch Linux 应用菜单 (XFCE) 中的 OpenOffice][6] + +![在 Arch Linux 中运行的最新 OpenOffice][7] + +### 总结 + +使用上述方法,你还可以在 Majnaro 和其他基于 Arch Linux 的发行版中安装 OpenOffice。尽管它是一个较旧的办公生产力套件,但你应该记住,它并不完全兼容现代微软 Office 文档类型(例如 docx、xlsx)。 + +如果你在安装过程中遇到任何错误,请在下面的评论栏中给我们留言。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/install-openoffice-arch/ + +作者:[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.openoffice.org/ +[2]: https://www.debugpoint.com/install-latest-libreoffice-ubuntu-linux/ +[3]: https://aur.archlinux.org/packages/openoffice-bin +[4]: https://www.debugpoint.com/install-yay-arch/ +[5]: https://www.debugpoint.com/wp-content/uploads/2022/11/Install-OpenOffice-in-Arch-Linux-via-Yay-helper.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2022/11/OpenOffice-in-Arch-Linux-Application-Menu-XFCE.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2022/11/Latest-OpenOffice-running-in-Arch-Linux.jpg +[0]: https://img.linux.net.cn/data/attachment/album/202212/01/151227rcrfy8marckyftyg.jpg \ No newline at end of file diff --git a/published/202212/20221115.0 ⭐️ You Can Now Install Unity 7.6 Desktop on Arch Linux.md b/published/202212/20221115.0 ⭐️ You Can Now Install Unity 7.6 Desktop on Arch Linux.md new file mode 100644 index 0000000000..61b8645189 --- /dev/null +++ b/published/202212/20221115.0 ⭐️ You Can Now Install Unity 7.6 Desktop on Arch Linux.md @@ -0,0 +1,79 @@ +[#]: subject: "You Can Now Install Unity 7.6 Desktop on Arch Linux" +[#]: via: "https://news.itsfoss.com/unity-arch-linux/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15316-1.html" + +你现在可以在 Arch Linux 上安装 Unity 7.6 桌面了 +====== + +> 想在 Arch Linux 上试试 Unity 吗?现在可以了! + +![](https://news.itsfoss.com/content/images/size/w2000/2022/11/unity-on-arch-linux.png) + +Unity Desktop 是由 Canonical 构建的经典桌面环境,它从 2010 年到 2017 年是 Ubuntu 的一部分,但为了支持 GNOME 而放弃。 + +我们认为它永远被杀死了。但它卷土重来。 + +今年早些时候,自 2016 年 5 月上次更新以来,经过长达 6 年的时间,Unity 的改进版本发布了。 + +开发由一位年轻的开发人员 [Rudra Saraswat][1] 带头,他也是 [Ubuntu Unity][1] 的创建者,它现在是 Ubuntu 的官方版本。 + +Unity 7.6 的发布标志着大量改进的到来。 + +而且,更进一步,Unity 7.6 已可用于 Arch Linux。开发者提到: + +> 此移植基于 chenxiaolong (于 2011-2016 年维护)的早期成果 Unity-for-Arch。 + +### 在 Arch Linux 上试用 Unity 7.6 + +![unity on arch linux][2] + +首先,你必须确保你已经安装了 Arch Linux。 + +然后你可以按照以下步骤在 Arch Linux 上运行 Unity 7.6: + +安装 [Paru][3],它是一个 AUR 助手。 + +使用 `paru -S unity-installer-arch` 安装名为 `unity-installer-arch` 的脚本。 + +在 TTY/终端窗口中运行 `unity-installer-arch`。 + +选择 “安装 Unity 桌面Install Unity desktop”。 + +将默认显示管理器更改为 `lightdm`。 + +使用 `unity-greeter` 作为默认登录界面。 + +我的同事 Sreenath 尝试了一下,在安装过程中,由于多重依赖冲突,他不得不从全新的 Arch 开始。 + +对你来说可能有所不同,但请记住这一点。如果你不想花时间在这上面,你可能想试试 [Ubuntu Unity][4]。 + +### 总结 + +对于 Unity 桌面爱好者来说,这是一件好事。更多发行版可能会考虑使用带有 Unity 桌面的变体。 + +你想让那发生吗? + +💬 你是 Unity 桌面的用户吗?想试试看么?在评论区分享你的观点。 + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/unity-arch-linux/ + +作者:[Sourav Rudra][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://news.itsfoss.com/author/sourav/ +[b]: https://github.com/lkxed +[1]: https://about.ruds.io +[2]: https://news.itsfoss.com/content/images/2022/11/unity_for_arch.jpg +[3]: https://itsfoss.com/paru-aur-helper/ +[4]: https://ubuntuunity.org diff --git a/published/202212/20221116.0 ⭐️⭐️ How to Install GNOME Desktop Environment in Linux Mint.md b/published/202212/20221116.0 ⭐️⭐️ How to Install GNOME Desktop Environment in Linux Mint.md new file mode 100644 index 0000000000..f521aaceed --- /dev/null +++ b/published/202212/20221116.0 ⭐️⭐️ How to Install GNOME Desktop Environment in Linux Mint.md @@ -0,0 +1,119 @@ +[#]: subject: "How to Install GNOME Desktop Environment in Linux Mint" +[#]: via: "https://itsfoss.com/install-gnome-linux-mint/" +[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/" +[#]: collector: "lkxed" +[#]: translator: "robsean" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15350-1.html" + +如何在 Linux Mint 上安装 GNOME 桌面环境 +====== + +![][0] + +Linux Mint 是一款极好的 Linux 发行版,特别适合初学者。 + +我喜欢它仍然保持常见的 Ubuntu/Debian 习惯,但是它还做了一些 [比 Ubuntu 更好的][1] 工作,其中之一就是它没有使用 Snap。 + +然而,我不是 Cinnamon 桌面环境的粉丝,因为我从来没有真正地喜欢过 Windows XP 或 7 的默认设置。 + +当我寻求保持 Linux Mint 稳定的同时而提供 GNOME 的能力时,这便是我最终获得的结果: + +![install gnome in linux mint][2] + +不太炫,这就是我运行 GNOME 42.5 的 Linux Mint 21 。 + +如果你想在 Linux Mint 上安装 GNOME ,那么这篇指南非常适合你。 + +### 在 Linux Mint 上安装GNOME 之前所要知道的事 + +要在 Mint 上安装 GNOME,你务必需要有足够的理由。如果你只是为了尝鲜,可以在虚拟机中尝试。我使用 [在 VirtualBox 中安装的 Linux Mint][3] 来演示这篇教程。 + +安装除发行版提供的桌面环境之外的其他桌面环境,移除桌面环境部分会使其变成一件很复杂的事。 + +Cinnamon 使用了一些 GNOME 元素。如果你决定稍后移除 GNOME ,这可能会影响到 Cinnamon 的一部分功能。 + +这可能会导致缺少实战经验用户的恐慌。当然,在 TTY 屏幕中重新安装 Cinnamon 桌面环境可能是一种可行的解决方案。 + +最重要的一点是,如果你很容易惊慌地不知所措和不喜欢解决难题,那么你就不应该在你的主力计算机上做这些 “试验” 。 + +抛开这些顾虑,让我们看看在 Linux Mint 上获取 GNOME 的简单过程。 + +### 在 Linux Mint 上安装 GNOME 桌面环境 + +在这里,你有两个选项:1、你可以使用包含所有的 GNOME 实用程序的完整的 GNOME 桌面,2、你也可以使用包含极少数软件包的 GNOME 精简版本。 + +我都将讲解一下。 + +为 **安装精简版本的 GNOME** ,你需要安装一个名称为 `vanilla-gnome-desktop` 的软件包,使用下面给定的命令: + +``` +sudo apt install vanilla-gnome-desktop +``` + +**如果你想要完整的 GNOME 体验** ,你可以简单地安装 `gnome` 软件包: + +``` +sudo apt install gnome +``` + +在你执行上述任一个命令后,在接下来的步骤中将会要求你选择首选的显示管理器。 + +![choose display manager][4] + +`gdm3` 是 GNOME 桌面的显示管理器,而 Linux Mint 使用 `lightdm` 作为默认的显示管理器,这两种显示器都可以正常工作,但是,我建议你使用 `gdm3` 来获取完整的 GNOME 体验。 + +#### 切换到 GNOME + +在完成后,注销并按一次回车键,在这里,你将看到一个小齿轮图标。从这里选择 “GNOME” : + +![choose gnome while logging in][5] + +现在,你拥有以 Linux Mint 为基础的 GNOME 桌面环境! + +#### 额外提示:如何应用整体风格一致的主题 + +你可以继续使用 Cinnamon 桌面的主题,但是它们大多不能如前工作,因此,我建议使用 GNOME 桌面的主题(例如 Adwaita )来保持桌面环境的一致性。 + +对我而言,其默认的字体没有一点效果。并且,我更喜欢 Fedora 提供的一些字体。因此,从系统菜单打开 GNOME 调整GNOME tweaks,并作出如下更改: + +![change fonts in ubuntu to have vanilla gnome experience][6] + +这里是我使用的一些设置: + +- `Cantarell Regular (11)` 用于界面和文档文本。 +- `Noto Sans Mono Regular (13)` 用于等宽字体文本。 +- `Cantarell Bold (11)` 用于窗口标题。 + +它们的结果是,比默认的 Ubuntu 字体方案要好得多。 + +既然你有了 GNOME ,你可以使用我们的详细指南来安装和 [更改 Linux 上的 GNOME 主题][7],来使其成为你所梦想的样子。 + +### 总结 + +如你所见,在 Linux Mint 上安装 GNOME 是非常简单的。正如我先前所提到的那样,移除部分可能会使事情复杂化,因为这可能会移除一些 Cinnamon 所需要的一些 GNOME 软件包。 + +你现在的主力计算机系统是什么?我的是 Pop!_OS 。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/install-gnome-linux-mint/ + +作者:[Sagar Sharma][a] +选题:[lkxed][b] +译者:[robsean](https://github.com/robseans) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/sagar/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/linux-mint-vs-ubuntu/ +[2]: https://itsfoss.com/wp-content/uploads/2022/11/install-gnome-in-linux-mint.png +[3]: https://itsfoss.com/install-linux-mint-in-virtualbox/ +[4]: https://itsfoss.com/wp-content/uploads/2022/11/choose-display-manager.png +[5]: https://itsfoss.com/wp-content/uploads/2022/11/choose-gnome-while-logging-in.png +[6]: https://itsfoss.com/wp-content/uploads/2022/11/change-fonts-in-ubuntu-to-have-vanilla-gnome-experience.png +[7]: https://itsfoss.com/install-switch-themes-gnome-shell/ +[0]: https://img.linux.net.cn/data/attachment/album/202212/15/104944fkv32vbys5x1hiv9.jpg \ No newline at end of file diff --git a/published/202212/20221117.1 ⭐️ Authenticator A Simple Open-Source App to Replace Authy on Linux.md b/published/202212/20221117.1 ⭐️ Authenticator A Simple Open-Source App to Replace Authy on Linux.md new file mode 100644 index 0000000000..6cf779848d --- /dev/null +++ b/published/202212/20221117.1 ⭐️ Authenticator A Simple Open-Source App to Replace Authy on Linux.md @@ -0,0 +1,93 @@ +[#]: subject: "Authenticator: A Simple Open-Source App to Replace Authy on Linux" +[#]: via: "https://itsfoss.com/authenticator/" +[#]: author: "Ankush Das https://itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15313-1.html" + +Authenticator:一个 Linux 上的 Authy 的简单的开源替代品 +====== + +Authy 是一款流行的应用,用于存储和管理双因素代码。它是一项基于云的服务,可为你提供便利的工业级安全性。不幸的是,它不是开源的。 + +你会考虑在 Linux 桌面上使用更直接(和开源)的身份验证器应用吗? + +嗯,当然,你不能使用云同步。但是你可以为双因素身份验证码做个备份。记住这点,让我告诉你更多有关 Authenticator 的信息。 + +![authenticator app ft][1] + +### Authenticator:生成双因素身份验证代码 + +当你启用在线服务的双因素身份验证时,大多数服务都会为你提供令牌/QR 码,你可以添加/扫描以生成代码。 + +Authenticator 就是这样一款适用于 Linux 的应用,他可让你添加双因素身份验证码。 + +![authenticator ui][2] + +它是一个自由开源的应用,具有添加各种支持双因素身份验证的令牌和网站的基本功能。 + +### 身份验证器的特点 + +![authenticator 自动锁定][4] + +你获得的一些基本功能包括: + +- 使用相机或截图的二维码扫描器 +- 使用密码保护应用 +- 自动锁定应用 +- 支持各种算法(SHA-1/SHA-256/SHA-512) +- 支持基于时间/基于计数器/流式计算方法 +- 备份/恢复选项(FreeOTP、Aegis 和 OTP、Bitwarden 和 Google Authenticator) + +你可以设置自定义选项,并能够根据服务提供的支持添加自定义的提供者。可以为提供者添加自定义图标,以帮助你区分身份验证代码。 + +![authenticator 自定义提供程序][5] + +在大多数情况下,默认设置应该适用于网站。但是,如果它不起作用,你可能需要与提供者核实确切的详细信息。 + +该应用还具有开箱即用的多个提供者,例如 Google Drive 和 Proton Mail。因此,你无需为添加的每个条目添加自定义配置。 + +### 在 Linux 上安装 Authenticator + +![authenticator 添加新代码][6] + +Authenticator 以 Flatpak 的形式提供。因此,你可以将它安装在任何 Linux 发行版上。 + +只需输入以下命令即可安装它: + +``` +flatpak install flathub com.belmoussaoui.Authenticator +``` + +你可以前往其 [Flathub][7] 或 GitLab 页面探索更多信息。 + +如果你是 Linux 世界的新手,请参阅我们的 [Flatpak 指南][8] 进行设置。你的软件中心可能已经启用了 Flatpak 集成。这种情况下,你可以搜索安装它。 + +### 使用开源身份验证器应用确保安全性和可靠性 + +我们经常依赖云驱动的工具来处理所有事情。当然,这很方便。 + +但是,有时桌面应用更有用。如果你也这么想并考虑进行转换,Authenticator 可能是一款值得安装的出色的应用,可以用于双因素身份验证码。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/authenticator/ + +作者:[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/11/authenticator-app-ft.png +[2]: https://itsfoss.com/wp-content/uploads/2022/11/authenticator-ui.png +[4]: https://itsfoss.com/wp-content/uploads/2022/11/authenticator-auto-lock.png +[5]: https://itsfoss.com/wp-content/uploads/2022/11/authenticator-custom-provider.png +[6]: https://itsfoss.com/wp-content/uploads/2022/11/authenticator-add-new-code.png +[7]: https://flathub.org/apps/details/com.belmoussaoui.Authenticator +[8]: https://itsfoss.com/flatpak-guide/ diff --git a/published/202212/20221121.2 ⭐️⭐️ Learn Git 3 commands to level up your skill.md b/published/202212/20221121.2 ⭐️⭐️ Learn Git 3 commands to level up your skill.md new file mode 100644 index 0000000000..db24a51375 --- /dev/null +++ b/published/202212/20221121.2 ⭐️⭐️ Learn Git 3 commands to level up your skill.md @@ -0,0 +1,164 @@ +[#]: subject: "Learn Git: 3 commands to level up your skill" +[#]: via: "https://opensource.com/article/22/11/advanced-git-commands" +[#]: author: "Dwayne McDaniel https://opensource.com/users/dwaynemcdaniel" +[#]: collector: "lkxed" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15324-1.html" + +掌握强大的 Git 变基命令 +====== + +![][0] + +> 学习如何使用 Git 来压扁、变基和精选。 + +当我与别人谈到 Git 时,几乎每个人都对 [git rebase 命令][1] 有强烈的印象,这个命令让许多人遇到了问题,而不得不更改目录、删除仓库、然后再重新克隆一个仓库。我认为这是因为他们误解了分支是如何工作,遇到了一个非常糟糕的默认界面,还有一些合并冲突把事情搞得一团糟。 + +### 怎么找不到 git squash 命令? + +如果你曾在本地的仓库提交过很多次,并希望能把这些提交都合并为一个提交,接下来,我们就来介绍能用什么 Git 命令达到这个目的。Git 称这个概念为 “压扁提交 squash commits ”。我在编写文档时发现了这个概念:我花了十几个提交才修改好我的 Markdown 文档,但是仓库的维护者不想看到我的所有尝试,以免扰乱了该项目的历史,所以我被告知“需要压扁你的提交”。 + +**压扁提交**听起来是一个很有用的方法。但是只有一个问题:我不知道该怎么做。作为 Git 的新手,我做了任何人会做的事情:我去查阅 `git-squash` 的手册,但我立即遇到了阻碍: + +``` +$ man git-squash +> No manual entry for git-squash +``` + +我发现没有一个名为 `squash` 的 Git 命令,而是被要求 [运行一个完全独立的命令:git rebase 命令][2],该命令能将我的所有提交最终合并为一个提交。 + +我知道我碰到一个常见的情形:已经使用工具一段时间的人使用了**行话**或引用了一个概念,这个概念对他们来说是非常清楚的,但对新手来说就不能明白了。从概念上讲,这个情况看起来是这样的: + +![Image of 6 bowls of different colored spices, and an arrow pointing to the second image of all the spices blended into one bowl.][3] + +我这样说是为了鼓励你,你绝对不是第一个或最后一个 _被 Git 或谈论 Git 的人_ 弄糊涂的人。你可以要求对方说明白他的意见,并帮助你应该使用的正确命令。仓库的维护者实际上的意思是,“使用 `git rebase` 命令**,将很多提交压扁成一个提交”。 + +### 现在就来学习 git rebase 命令吧 + +`git rebase` 命令会将一个提交链从其第一个父级中删除,并将其放置在另一个提交链的末尾,将两个提交链组合成一个长链,而不是两个并行链。我意识到这是一个很复杂的定义。 + +回想一下 Git 的提交是如何链接在一起的,你可以看到,除了初始的 `main`(或 `master`)分支外,任何分支都有一个 父提交 parent commit 作为该链的 “基础 base ”。“变基 rebase ” 能使另一个链中的最后一个提交成为指定分支的新 “基础提交 base commit ”。 + +在 Git 中整合来自不同分支的修改主要有两种方法:合并merge 以及 变基rebase,你可能更熟悉 `git merge` 命令。接下来,就来看看 [git-scm.com] 是如何解释 `git merge` 和 `git rebase` 的差异: + +![Image of Git merge versus git rebase shown as numbered bubbles.][5] + +在合并示例中,它会把两个分支的最新快照(`C3` 和 `C4`)以及二者最近的共同祖先(`C2`)进行三方合并,合并的结果是生成一个新的快照(`C5`)。`experiment` 的分支指针仍然存在,仍然指向 `C4`。 + +在变基示例中,它提取在 `C4` 中引入的补丁和修改,然后在 `C3` 的基础上应用一次,使 `C3` 成为 `C4` 的新父级,并产生了一个名为 `C4'` 的新提交。 + +(LCTT 译注:具体的命令如下: + +``` +$ git checkout experiment +$ git rebase main +First, rewinding head to replay your work on top of it... +Applying: added staged command +``` + +它的原理是首先找到这两个分支 —— 即当前分支 `experiment`、变基操作的目标基底分支 `main` —— 的最近共同祖先 `C2`,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件,然后将当前分支指向目标基底 `C3`,最后以此将之前另存为临时文件的修改依序应用。) + +值得注意的是,分支指针 `main` 没有移动。要让 Git 将指针移动到链的末尾(由`experiment` 指向),你还需要执行合并。 + +(LCTT 译注:具体的命令如下: + +``` +$ git checkout main +$ git merge experiment +``` + +![master 分支的快进合并](https://www.progit.cn/images/basic-rebase-4.png) + +此时,`C4'` 指向的快照就和上面使用 `merge` 命令的例子中 `C5` 指向的快照一模一样了。) + +`git rebase` 并不能替代 `git merge`。`git rebase` 是一种用于制作更清晰的历史记录,以与 `git merge` 结合使用的工具。 + +(LCTT 译注:使用 `git rebase` 命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。) + +#### 交互式变基能给你一个更友好的界面! + +从命令行执行 `git rebase` 命令,最可怕的地方在于它**糟糕的默认界面**。运行命令 `git rebase ` 要么有效,要么会变得一团糟,因为它没有太多的反馈或方法来确保它做你想做的事情。幸运的是,`git rebase` 命令和许多其他 Git 命令一样,具有 交互模式 interactive mode ,你可以使用参数 `-i` 或者 `-interactive` 来使用交互模式。 + +![Image of the Git lens interactive Rebase tool in VS Code.][6] + +在使用交互式模式时,`git rebase` 会从一个糟糕的黑框界面转换为一个**选项菜单**,允许你选择对正在变基的提交链所做的事。对于每个提交,你可以**选择**: + +- 选用pick:按原样包含 +- 重写reword:重写提交消息 +- 编写edit:在变基完成之前对提交中的文件进行进一步更改 +- 压扁squash:将多个提交压缩成一个提交,保留所有提交消息 +- 修理fixup:将多个提交压缩成一个提交,但只保留最后一个提交消息 +- 丢弃drop:丢弃此提交 + +就我个人而言,我更喜欢 [VS Code 的开源 GitLens 扩展][7] 使用下拉选择列表布局选项的方式,但 Git 允许你使用任何编辑器选择这些选项。对于 Emacs 或 Vim 等纯文本工具,你需要键入选择,而不是从菜单中选择,但最终结果仍然是相同的。 + +#### 何时做变基 + +知道 _何时_ 做变基与知道 _如何_ 做变基同样重要。事实上,如果你不在乎你的仓库历史提交消息有点混乱的话,那么你可以永远都不使用 `git rebase` 命令。但是,如果你想要更干净的历史提交消息,并且想要更少扰乱你的图形视图的提交,那么当你使用 `git rebase` 命令时,有一个重要的**经验法则**需要时刻记住: + +> “不要变基你存储库以外的的提交,那些提交可能是别人工作的基础。” + +如果你遵循该准则,不会发生什么大问题的。 + +简而言之,如果你让一个**本地分支**来完成你的工作,变基是没有问题的。但一旦该分支被 推送 push 了,就不要再变基该分支了。当然,你想要怎么做完全取决于你自己。 + +希望你会认为上述内容有助于你理解 `git rebase` 命令的工作原理,并能让你更有信心地使用它。与任何 Git 命令一样,**练习**是学习和理解怎么做的唯一方法。我鼓励你勇敢地尝试 交互式变基 interactive rebase `git rebase -i `! + +### 接下来学习 Git cherry-pick 命令吧 + +大多数开发人员将修改提交到某一分支上,但是之后发现他们一直**提交到了错误的分支上**。理想情况下,他们可以拿走那个提交,然后把它移到正确的分支,这正是 `git cherry-pick` 命令的作用。 + +`git cherry-pick` 命令利用了变基单个提交的方法。这一用法非常常见,以至于有了它自己的命令。 + +![Image of a woman picking a cherry from one tree and putting on another tree.][8] + +要使用 `git cherry-pick`,你只需告诉 Git 你要移动到“那个分支”的提交 ID(由 `HEAD` 指向): + +``` +$ git cherry-pick +``` + +如果出现问题,你可以根据 Git 提供的错误消息,来进行恢复: + +``` +$ git cherry-pick -i 2bc01cd +Auto-merging README.md +CONFLICT (content): Merge conflict in README.md +error: could not apply 2bc01cd… added EOF lines +hint: After resolving the conflicts, mark them with +hint: "git add/rm ", then run +hint: "git cherry-pick --continue". +hint: You can instead skip this commit with "git cherry-pick --skip". +hint: To abort and get back to the state before "git cherry-pick", +hint: run "git cherry-pick --abort". +$ git cherry-pick --abort +``` + +### 让 Git 更强大 + +`git rebase` 命令是 Git 实用程序强大的地方之一。你最好在测试仓库中先练习一下怎么使用,一旦你熟悉了它的概念和工作流程,你就可以给仓库一个清晰历史消息记录了。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/advanced-git-commands + +作者:[Dwayne McDaniel][a] +选题:[lkxed][b] +译者:[chai001125](https://github.com/chai001125) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/dwaynemcdaniel +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/20/4/git-rebase-i +[2]: https://opensource.com/article/22/4/manage-git-commits-rebase-i-command +[3]: https://opensource.com/sites/default/files/2022-11/gitbeyond2.spices.png +[4]: http://git-scm.com +[5]: https://opensource.com/sites/default/files/2022-11/gitbeyond2.gitmerger.png +[6]: https://opensource.com/sites/default/files/2022-11/gitbeyond2.GitLens%20Interactive%20Rebase%20tool%20in%20VS%20Code.png +[7]: https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens +[8]: https://opensource.com/sites/default/files/2022-11/gitbeyond2.cherrypicking.png +[0]: https://img.linux.net.cn/data/attachment/album/202212/07/133637yq2526zsp7f1t7a2.jpg \ No newline at end of file diff --git a/published/202212/20221122.0 ⭐️ Find bugs with the git bisect command.md b/published/202212/20221122.0 ⭐️ Find bugs with the git bisect command.md new file mode 100644 index 0000000000..f870c884c0 --- /dev/null +++ b/published/202212/20221122.0 ⭐️ Find bugs with the git bisect command.md @@ -0,0 +1,89 @@ +[#]: subject: "Find bugs with the git bisect command" +[#]: via: "https://opensource.com/article/22/11/git-bisect" +[#]: author: "Dwayne McDaniel https://opensource.com/users/dwaynemcdaniel" +[#]: collector: "lkxed" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15310-1.html" + +使用 Git bisect 命令定位首次引入错误的提交 +====== + +![][0] + +> Git 的 bisect 工具通过快速识别坏的提交,节省了时间和精力。 + +你是不是有过这样的经历:发现代码中有 错误 bug ,但不知道这个错误是什么时候引入的。这有可能是因为,某个人提交了一份有错误的代码,但没有在他的 Git 提交 commit 消息中声明它。这个错误可能已经存在了几周、几个月甚至几年,这意味着你需要搜索数百或数千个提交,才能找到问题何时出现的。而 `git bisect` 命令能够完美地解决这个问题! + +`git bisect` 命令是一个强大的工具。你可以给 `git bisect` 命令一个范围,一端是一个已知的好状态,另一端是一个已知的坏状态。它会自动地确认当前范围的中点,在这个中点上进行测试,然后要求你确定那次提交是一个 好提交 good commit 还是一个 坏提交 bad commit ,然后它会重复这一“二分查找”的过程,直到你找到首次引入错误的那一次提交。 + +![Image of Zeno's paradox of Achilles.][1] + +这个“数学”工具是利用“二分查找”来找到错误之处的。`git bisect` 命令通过**查看中点**,然后由你来决定它是提交列表的新起点(即 “坏提交” )还是新终点(即 “好提交”),进而来缩小查找范围,如此在几次查找中你可以就能定位到有错误的提交。即使你有 10,000 个提交要检查,最多只需要 13 次查找,就能很快地定位到首次引入错误的提交。 + +1. 提交 1 坏 <> 提交 10,000 好 => 提交 5,000 是坏的 +2. 提交 5,000 坏 <> 提交 10,000 好 => 提交 7,500 是好的 +3. 提交 5,000 坏 <> 提交 7,500 好 => 提交 6,250 是好的 +4. 提交 5,000 坏 <> 提交 6,250 好 => 提交 5,625 是坏的 +5. 提交 5,625 坏 <> 提交 6,250 好 => 提交 5,938 是坏的 +6. 提交 5,938 坏 <> 提交 6,250 好 => 提交 6,094 是好的 +7. 提交 5,938 坏 <> 提交 6,094 好 => 提交 6,016 是坏的 +8. 提交 6,016 坏 <> 提交 6,094 好 => 提交 6,055 是好的 +9. 提交 6,016 坏 <> 提交 6,055 好 => 提交 6,036 是坏的 +10. 提交 6,036 坏 <> 提交 6,055 好 => 提交 6,046 是坏的 +11. 提交 6,046 坏 <> 提交 6,055 好 => 提交 6,050 是坏的 +12. 提交 6,050 坏 <> 提交 6,055 好 => 提交 6,053 是好的 +13. 提交 6,053 坏 <> 提交 6,055 好 => 提交 6,054 是好的 + +对于上面这个例子,我们能知道 10,000 个提交中的第一个错误提交是第 6053 次提交。对于 `git bisect` 命令,最多需要几分钟就能完成检索。但是如果要一个一个查找每个提交是否错误,我甚至无法想象需要多长时间。 + +### 使用 Git bisect 命令 + +`git bisect` 命令使用起来非常简单: + +(LCTT 译注:使用 `git bisect start` 命令来进入 bisect 模式,并且该命令指定了一个检查范围。它会告诉我们一共有多少次提交,大概需要几步就可以定位到具体的提交。) + +``` +$ git bisect start +$ git bisect bad # Git assumes you mean HEAD by default +$ git bisect good # specify a tag or commit ID for +``` + +Git 检查中间的提交,并等待你声明这次提交是一个好提交还是一个坏提交: + +(LCTT 译注:如果某一提交是可以通过的,则使用 `git bisect good` 命令标记;同样地,如果某一提交不能通过,则使用 `git bisect bad` 命令标记。) + +``` +$ git bisect good +``` + +或 + +``` +$ git bisect bad +``` + +然后,`git bisect` 工具重复检查好提交和坏提交中间的那次提交,直到你告诉它: + +``` +$ git bisect reset +``` + +一些高级用户甚至可以自己编写脚本,来确定提交的好坏状态、并在找到特定提交时采取某一补救措施。你可能不会每天都使用 `git bisect` 命令,但当你需要它来定位首次引入错误的提交时,它会是一个很有用的救星。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/git-bisect + +作者:[Dwayne McDaniel][a] +选题:[lkxed][b] +译者:[chai001125](https://github.com/chai001125) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/dwaynemcdaniel +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/2022-11/beyondgit.paradox.png +[0]: https://img.linux.net.cn/data/attachment/album/202212/02/092549j2o7h9cif3hcu34z.jpg \ No newline at end of file diff --git a/published/202212/20221122.2 ⭐️⭐️⭐️ Introducing Rust calls to C library functions.md b/published/202212/20221122.2 ⭐️⭐️⭐️ Introducing Rust calls to C library functions.md new file mode 100644 index 0000000000..f0f6e2de35 --- /dev/null +++ b/published/202212/20221122.2 ⭐️⭐️⭐️ Introducing Rust calls to C library functions.md @@ -0,0 +1,292 @@ +[#]: subject: "Introducing Rust calls to C library functions" +[#]: via: "https://opensource.com/article/22/11/rust-calls-c-library-functions" +[#]: author: "Marty Kalin https://opensource.com/users/mkalindepauledu" +[#]: collector: "lkxed" +[#]: translator: "yzuowei" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15353-1.html" + +从 Rust 调用 C 库函数 +====== + +![][0] + +> Rust FFI 和 bindgen 工具是为 Rust 调用 C 库而设计的。Rust 很容易与 C 语言对话,从而与任何其它可以与 C 语言对话的语言对话。 + +为什么要从 Rust 调用 C 函数?简短的答案就是软件库。冗长的答案则触及到 C 在众多编程语言中的地位,特别是相对 Rust 而言。C、C++,还有 Rust 都是系统语言,这意味着程序员可以访问机器层面的数据类型与操作。在这三个系统语言中,C 依然占据主导地位。现代操作系统的内核主要是用 C 来写的,其余部分依靠汇编语言补充。在标准系统函数库中,输入与输出、数字处理、加密计算、安全、网络、国际化、字符串处理、内存管理等等,大多都是用 C 来写的。这些函数库所代表的是一个庞大的基础设施,支撑着用其他语言写出来的应用。Rust 发展至今也有着可观的函数库,但是 C 的函数库 —— 自 1970 年代就已存在,迄今还在蓬勃发展 —— 是一种无法被忽视的资源。最后一点是,C 依然还是编程语言中的 [通用语][1]:大部分语言都可以与 C 交流,透过 C,语言之间可以互相交流。 + +### 两个概念证明的例子 + +Rust 支持 FFI(外部函数接口Foreign Function Interface)用以调用 C 函数。任何 FFI 所需要面临的问题是调用方语言是否涵盖了被调用语言的数据类型。例如,`ctypes` 是 Python 调用 C 的 FFI,但是 Python 并没有包括 C 所支持的无符号整数类型。结果就是,`ctypes` 必须寻求解决方案。 + +相比之下,Rust 包含了所有 C 中的原始(即,机器层面)类型。比如说,Rust 中的 `i32` 类对应 C 中的 `int` 类。C 特别声明了 `char` 类必须是一个字节大小,而其他类型,比如 `int`,必须至少是这个大小(LCTT 译注:原文处有评论指出 `int` 大小依照 C 标准应至少为 2 字节);然而如今所有合理的 C 编译器都支持四字节的 `int`,以及八字节的 `double`(Rust 中则是 `f64` 类),以此类推。 + +针对 C 的 FFI 所面临的另一个挑战是:FFI 是否能够处理 C 的裸指针,包括指向被看作是字符串的数组指针。C 没有字符串类型,它通过结合字符组和一个非打印终止符(大名鼎鼎的 _空终止符_)来实现字符串。相比之下,Rust 有两个字符串类型:`String` 和 `&str` (字符串切片)。问题是,Rust FFI 是否能将 C 字符串转化成 Rust 字符串——答案是 _肯定的_。 + +出于对效率的追求,结构体指针在 C 中也很常见。一个 C 结构体在作为一个函数的参数或者返回值的时候,其默认行为是传递值(即,逐字节复制)。C 结构体,如同它在 Rust 中的对应部分一样,可以包含数组和嵌套其他结构体,所以其大小是不定的。结构体在两种语言中的最佳用法是传递或返回引用,也就是说,传递或返回结构体的地址而不是结构体本身的副本。Rust FFI 再一次成功处理了 C 的结构体指针,其在 C 函数库中十分普遍。 + +第一段代码案例专注于调用相对简单的 C 库函数,比如 `abs`(绝对值)和 `sqrt`(平方根)。这些函数使用非指针标量参数并返回一个非指针标量值。第二段代码案例则涉及了字符串和结构体指针,在这里会介绍工具 [bindgen][2],其通过 C 接口(头文件)生成 Rust 代码,比如 `math.h` 以及 `time.h`。C 头文件声明了 C 函数的调用语法,并定义了会被调用的结构体。两段代码都能在 [我的主页上][3] 找到。 + +### 调用相对简单的 C 函数 + +第一段代码案例有四处 Rust 对标准数学库内的 C 函数的调用:两处分别调用了 `abs`(绝对值)和 `pow`(幂),两处重复调用了 `sqrt`(平方根)。这个程序可以直接用 `rustc` 编译器进行构建,或者使用更方便的命令 `cargo build`: + +``` +use std::os::raw::c_int; // 32位 +use std::os::raw::c_double; // 64位 + +// 从标准库 libc 中引入三个函数。 +// 此处是 Rust 对三个 C 函数的声明: +extern "C" { + fn abs(num: c_int) -> c_int; + fn sqrt(num: c_double) -> c_double; + fn pow(num: c_double, power: c_double) -> c_double; +} + +fn main() { + let x: i32 = -123; + println!("\n{x}的绝对值是: {}.", unsafe { abs(x) }); + + let n: f64 = 9.0; + let p: f64 = 3.0; + println!("\n{n}的{p}次方是: {}.", unsafe { pow(n, p) }); + + let mut y: f64 = 64.0; + println!("\n{y}的平方根是: {}.", unsafe { sqrt(y) }); + + y = -3.14; + println!("\n{y}的平方根是: {}.", unsafe { sqrt(y) }); //** NaN = NotaNumber(不是数字) +} +``` + +顶部的两个 `use` 声明是 Rust 的数据类型 `c_int` 和 `c_double`,对应 C 类型里的 `int` 和 `double`。Rust 标准模块 `std::os::raw` 定义了 14 个类似的类型以确保跟 C 的兼容性。模块 `std::ffi` 中有 14 个同样的类型定义,以及对字符串的支持。 + +位于 `main` 函数上的 `extern "C"` 区域声明了 3 个 C 库函数,这些函数会在 `main` 函数内被调用。每次调用都使用了标准的 C 函数名,但每次调用都必须发生在一个 `unsafe` 区域内。正如每个新接触 Rust 的程序员所发现的那样,Rust 编译器极度强制内存安全。其他语言(特别是 C 和 C++)作不出相同的保证。`unsafe` 区域其实是说:Rust 对外部调用中可能存在的不安全行为不负责。 + +第一个程序输出为: + +``` +-123的绝对值是: 123. +9的3次方是: 729. +64的平方根是: 8. +-3.14的平方根是: NaN. +``` + +输出的最后一行的 `NaN` 表示不是数字Not a Number:C 库函数 `sqrt` 期待一个非负值作为参数,这使得参数 `-3.14` 生成了 `NaN` 作为返回值。 + +### 调用涉及指针的 C 函数 + +C 库函数为了提高效率,经常在安全、网络、字符串处理、内存管理,以及其他领域中使用指针。例如,库函数 `asctime`(ASCII 字符串形式的时间)期待一个结构体指针作为其参数。Rust 调用类似 `asctime` 的 C 函数就会比调用 `sqrt` 要更加棘手一些,后者既没有牵扯到指针,也不涉及到结构体。 + +函数 `asctime` 调用的 C 结构体类型为 `struct tm`。一个指向此结构体的指针会作为参数被传递给库函数 `mktime`(时间作为值)。此结构体会将时间拆分成诸如年、月、小时之类的单位。此结构体的字段field类型为 `time_t`,是 `int`(32位)和 `long`(64 位)的别名。两个库函数将这些破碎的时间片段组合成了一个单一值:`asctime` 返回一个以字符串表示的时间,而 `mktime` 返回一个 `time_t` 值表示自 “[纪元][4]Epoch 以来所经历的秒数,这是一个系统的时钟和时间戳的相对时间。典型的纪元设置为 1900 年或 1970 年,1 月 1 日 0 时 0 分 0 秒。(LCTT 校注:Unix、Linux 乃至于如今所有主要的计算机和网络的时间纪元均采用 1970 年为起点。) + +以下的 C 程序调用了 `asctime` 和 `mktime`,并使用了其他库函数 `strftime` 来将 `mktime` 的返回值转化成一个格式化的字符串。这个程序可被视作 Rust 对应版本的预热: + +``` +#include +#include + +int main () { + struct tm sometime; /* 时间被打破细分 */ + char buffer[80]; + int utc; + + sometime.tm_sec = 1; + sometime.tm_min = 1; + sometime.tm_hour = 1; + sometime.tm_mday = 1; + sometime.tm_mon = 1; + sometime.tm_year = 1; /*LCTT 校注:注意,相对于 1900 年的年数*/ + sometime.tm_hour = 1; + sometime.tm_wday = 1; + sometime.tm_yday = 1; + + printf("日期与时间: %s\n", asctime(&sometime)); + + utc = mktime(&sometime); + if( utc < 0 ) { + fprintf(stderr, "错误: mktime 无法生成时间\n"); + } else { + printf("返回的整数值: %d\n", utc); + strftime(buffer, sizeof(buffer), "%c", &sometime); + printf("更加可读的版本: %s\n", buffer); + } + + return 0; +} +``` + +程序输出为: + +``` +日期与时间: Fri Feb  1 01:01:01 1901 +返回的整数值: 2120218157 +更加可读的版本: Fri Feb  1 01:01:01 1901 +``` + +(LCTT 译注:如果你尝试在自己电脑上运行这段代码,然后得到了一行关于 `mktime` 的错误信息,然后又在网上随便找了个在线 C 编译器,复制代码然后得到了跟这里的结果有区别但是没有错误的结果,不要慌,我的电脑上也是这样的。导致本地机器上 `mktime` 失败的原因是作者没有设置 `tm_isdst`,这个是用来标记夏令时的标志。[`tm_isdst` 大于零则夏令时生效中,等于零则不生效,小于零标记未知][5]。加入 `sometime.tm_isdst = 0` 或 `= -1` 后应该就能得到跟在线编译器大致一样的结果。不同的地方在于结果第一行我得到的是 `Mon Feb ...`,这个与作者代码中 `sometime.tm_wday = 1` 对应,这里应该是作者**写错了**;第二行我和作者和网上得到的数字都不一样,这大概是合理的,因为这与机器的纪元有关;第三行我跟作者的结果是一样的,1901 年 2 月 1 日也确实是周五,这是因为 [`mktime` 其实会修正时间参数中不合理的地方][6]。至于夏令时具体是如何影响 `mktime` 这个问题,我能查到的只有 `mktime` 的计算受时区影响,更底层的原因我也不知道了。) + +总的来说,Rust 在调用库函数 `asctime` 和 `mktime` 时,必须处理以下两个问题: + +- 将裸指针作为唯一参数传递给每个库函数。 +- 把从 `asctime` 返回的 C 字符串转化为 Rust 字符串。 + +### Rust 调用 asctime 和 mktime + +工具 `bindgen` 会根据类似 `math.h` 和 `time.h` 之类的 C 头文件生成 Rust 支持的代码。下面这个简化版的 `time.h` 就可以用来做例子,简化版与原版主要有两个不同: + +- 内置类型 `int` 被用来取代别名类型 `time_t`。工具 bindgen 可以处理 `time_t` 类,但是会生成一些烦人的警告,因为 `time_t` 不符合 Rust 的命名规范:`time_t` 以下划线区分 `time` 和 `t`;Rust 更偏好驼峰式命名方法,比如 `TimeT`。 +- 出于同样的原因,这里选择 `StructTM` 作为 `struct tm` 的别名。 + +以下是一份简化版的头文件,`mktime` 和 `asctime` 在文件底部: + +``` +typedef struct tm { + int tm_sec; /* 秒 */ + int tm_min; /* 分钟 */ + int tm_hour; /* 小时 */ + int tm_mday; /* 日 */ + int tm_mon; /* 月 */ + int tm_year; /* 年 */ + int tm_wday; /* 星期 */ + int tm_yday; /* 一年中的第几天 */ + int tm_isdst; /* 夏令时 */ +} StructTM; + +extern int mktime(StructTM*); +extern char* asctime(StructTM*); +``` + +`bindgen` 安装好后,`mytime.h` 作为以上提到的头文件,以下命令(`%` 是命令行提示符)可以生成所需的 Rust 代码并将其保存到文件 `mytime.rs`: + +``` +% bindgen mytime.h > mytime.rs +``` + +以下是 `mytime.rs` 中的重要部分: + +``` +/* automatically generated by rust-bindgen 0.61.0 */ + +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tm { + pub tm_sec: ::std::os::raw::c_int, + pub tm_min: ::std::os::raw::c_int, + pub tm_hour: ::std::os::raw::c_int, + pub tm_mday: ::std::os::raw::c_int, + pub tm_mon: ::std::os::raw::c_int, + pub tm_year: ::std::os::raw::c_int, + pub tm_wday: ::std::os::raw::c_int, + pub tm_yday: ::std::os::raw::c_int, + pub tm_isdst: ::std::os::raw::c_int, +} + +pub type StructTM = tm; + +extern "C" { + pub fn mktime(arg1: *mut StructTM) -> ::std::os::raw::c_int; +} + +extern "C" { + pub fn asctime(arg1: *mut StructTM) -> *mut ::std::os::raw::c_char; +} + +#[test] +fn bindgen_test_layout_tm() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 36usize, + concat!("Size of: ", stringify!(tm)) + ); + ... +``` + +Rust 结构体 `struct tm`,跟原本在 C 中的一样,包含了 9 个 4 字节的整型字段。这些字段名称在 C 和 Rust 中是一样的。`extern "C"` 区域声明了库函数 `astime` 和 `mktime` 分别需要只一个参数,一个指向可变实例 `StructTM` 的裸指针。(库函数可能会通过指针改变作为参数传递的结构体。) + +`#[test]` 属性下的其余代码是用来测试 Rust 版的时间结构体的布局。通过命令 `cargo test` 可以进行这些测试。问题在于,C 没有规定编译器应该如何对结构体中的字段进行布局。比如说,C 的 `struct tm` 以字段 `tm_sec` 开头用以表示秒;但是 C 不需要编译版本遵循这个排序。不管怎样,Rust 测试应该会成功,而 Rust 对库函数的调用也应如预期般工作。 + +### 设置好第二个案例并开始运行 + +从 `bindgen` 生成的代码不包含 `main` 函数,所以是一个天然的模块。以下是一个 `main` 函数初始化了 `StructTM` 并调用了 `asctime` 和 `mktime`: + +``` +mod mytime; +use mytime::*; +use std::ffi::CStr; + +fn main() { + let mut sometime = StructTM { + tm_year: 1, + tm_mon: 1, + tm_mday: 1, + tm_hour: 1, + tm_min: 1, + tm_sec: 1, + tm_isdst: -1, + tm_wday: 1, + tm_yday: 1 + }; + + unsafe { + let c_ptr = &mut sometime; // 裸指针 + + // 调用,转化,并拥有 + // 返回的 C 字符串 + let char_ptr = asctime(c_ptr); + let c_str = CStr::from_ptr(char_ptr); + println!("{:#?}", c_str.to_str()); + + let utc = mktime(c_ptr); + println!("{}", utc); + } +} +``` + +这段 Rust 代码可以被编译(直接用 `rustc` 或使用 `cargo`)并运行。输出为: + +``` +Ok( +    "Mon Feb  1 01:01:01 1901\n", +) +2120218157 +``` + +对 C 函数 `asctime` 和 `mktime` 的调用必须再一次被放在 `unsafe` 区域内,因为 Rust 编译器无法对这些外部函数的潜在内存安全风险负责。此处声明一下,`asctime` 和 `mktime` 并没有安全风险。调用的两个函数的参数是裸指针 `ptr`,其指向结构体 `sometime` (在stack中)的地址。 + +`asctime` 是两个函数中调用起来更棘手的那个,因为这个函数返回的是一个指向 C `char` 的指针,如果函数返回 `Mon` 那么指针就指向 `M`。但是 Rust 编译器并不知道 C 字符串 (`char` 的空终止数组)的储存位置。是内存里的静态空间?还是heap?`asctime` 函数内用来储存时间的文字表达的数组实际上是在内存的静态空间里。无论如何,C 到 Rust 字符串转化需要两个步骤来避免编译错误: + +- 调用 `Cstr::from_ptr(char_ptr)` 来将 C 字符串转化为 Rust 字符串并返回一个引用储存在变量 `c_str` 中。 +- 对 `c_str.to_str()` 的调用确保了 `c_str` 是所有者。 + +Rust 代码不会增加从 `mktime` 返回的整型值的易读性,这一部分留作课外作业给感兴趣的人去探究。Rust 模板 `chrono::format` 也有一个 `strftime` 函数,它可以被当作 C 的同名函数来使用,两者都是获取时间的文字表达。 + +### 使用 FFI 和 bindgen 调用 C + +Rust FFI 和工具 `bindgen` 都能够出色地协助 Rust 调用 C 库,无论是标准库还是第三方库。Rust 可以轻松地与 C 交流,并透过 C 与其他语言交流。对于调用像 `sqrt` 一样简单的库函数,Rust FFI 表现直截了当,这是因为 Rust 的原始数据类型覆盖了它们在 C 中的对应部分。 + +对于更为复杂的交流 —— 特别是 Rust 调用像 `asctime` 和 `mktime` 一样,会涉及到结构体和指针的 C 库函数 —— `bindgen` 工具是优秀的帮手。这个工具会生成支持代码以及所需要的测试。当然,Rust 编译器无法假设 C 代码对内存安全的考虑会符合 Rust 的标准;因此,Rust 必须在 `unsafe` 区域内调用 C。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/rust-calls-c-library-functions + +作者:[Marty Kalin][a] +选题:[lkxed][b] +译者:[yzuowei](https://github.com/yzuowei) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/mkalindepauledu +[b]: https://github.com/lkxed +[1]: https://baike.baidu.com/item/lingua%20franka/5359711 +[2]: https://github.com/rust-lang/rust-bindgen +[3]: https://condor.depaul.edu/mkalin +[4]: https://baike.baidu.com/item/UNIX时间/8932323 +[5]: https://cplusplus.com/reference/ctime/tm/ +[6]: https://cplusplus.com/reference/ctime/mktime/ +[0]: https://img.linux.net.cn/data/attachment/album/202212/16/110147q4kk0qoqe0e3m6bb.jpg \ No newline at end of file diff --git a/published/202212/20221126.2 ⭐️⭐️ Create a holiday light display with your Raspberry Pi and ping pong balls.md b/published/202212/20221126.2 ⭐️⭐️ Create a holiday light display with your Raspberry Pi and ping pong balls.md new file mode 100644 index 0000000000..bb08ef8d4b --- /dev/null +++ b/published/202212/20221126.2 ⭐️⭐️ Create a holiday light display with your Raspberry Pi and ping pong balls.md @@ -0,0 +1,135 @@ +[#]: subject: "Create a holiday light display with your Raspberry Pi and ping pong balls" +[#]: via: "https://opensource.com/article/22/11/raspberry-pi-holiday-light-display" +[#]: author: "Brian McCafferty https://opensource.com/users/bdm" +[#]: collector: "lkxed" +[#]: translator: "Return7g" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15365-1.html" + +利用树莓派和乒乓球制作一个假日彩灯 +====== + +![][0] + +> 这个树莓派教程用于制作一个可编程的 LED 灯光显示器,非常适合各种技能水平的人。 + +我喜欢圣诞装饰品和灯饰,因此很长一段时间以来我一直想做一个可编程的 LED 项目。最近,我制作了一个由 LED 灯、乒乓球和树莓派 Zero 组成的灯阵列。这个项目相对简单并且具有教学价值,因此我认为它非常值得分享。 + +整个彩灯由我设计,但其中一些灵感也来自 YouTube。你可以在我的 [Git 存储库][1] 中找到源代码和制作说明。 + +### 购物清单 + +- [树莓派 Zero][2] +- [树莓派保护壳][3] +- 5V 2A 的电源线 +- 展架 +- 255 个乒乓球 +- 热熔胶枪和若干热熔胶棒 +- 烙铁 +- 焊锡丝 +- 22 AWG 0.35mm 实芯线 +- 10 米 WS2812(B) LED 灯带(每米 30 像素) +- 万用表 +- 钢丝钳 +- 剥线钳 + +### 设计树莓派的灯光效果 + +这个设计是根据我展框的大小决定的。我在全球速卖通买到了每米 30 像素的灯带,它可以轻松地切成 0.5 米的长度,每条有 15 个 LED 灯。乒乓球的直径是 40 毫米,所以我测量并隔开 40 毫米划了线,LED 灯条放在每隔 40 毫米的中间部分,这就产生了 17 条线。因此我的灯光阵列是 15×17。你可以根据实际情况来调整尺寸。 + +为了给灯带和树莓派供电,我在电路板底部设置了数据线和电源线。我的 LED 灯不需要很多电,所以我使用树莓派 Zero 的 5V 输出 GPIO 为它们供电。当我以 50% 的亮度运行时,这个亮度已经足以在白天和晚上透过我的窗户看到。 + +### 布线 + +我从电路板的底部以之字形开始布线,这使得焊接非常容易,因为每行的末尾不必返回到每行的开头。 + +我的线路大致像这样(为清楚起见,这里进行了简化,实际上它一共有 17 行): + +``` +<---------------\ +                | +/---------------/ +| +\---------------< # 这里连接树莓派 +``` + +### 使用树莓派制作显示屏 + +当设计和布线的工作完成后就可以开始制作显示屏了。 + +我在展板上测量并绘制了线路。我的灯带背面有胶带,所以我只需要取下背衬并将其贴在展板上。我检查了每个灯带的位置和数据线的方向,以确保灯带可以按照树莓派的指令正确串联起来。 + +连接好所有灯带后,我剪下三段长度相同的电线,并将每个灯带末端的电源线、数据线和接地线连接到其上方。 + +![Connect each light strip at the end of each line.][4] + +在线路连接完成后,我检查了每条灯带之间的电源线和地线之间的连接,以确保其连通性。我还检查了是否存在错误的桥接,所以我验证了电源线和地线之间的连接。我还进行了一些测试以确保所有灯都正常点亮(链路测试参阅 [测试代码][5])。 + +完成上述工作后,我开始在乒乓球上剪洞,用剪刀刺入乒乓球的底部,然后剪一个小洞让 LED 灯穿进去。手工不太行,每个球都不太一样,但效果真的很好。我使用的每米 30 个像素的 LED 灯,所以每个 LED 之间有大约 30 毫米的空隙。一个乒乓球是 40 毫米宽,但我不打算开始单独焊接每一个 LED!我想,这是很重要的。首先,我并不擅长焊接(正如我的照片所显示的),而且无论如何,我想“好吧,它们是乒乓球。我可以把它们压在一起!” + +我是这样做的: + +在 LED 灯上滴上热熔胶,然后在 LED 上放了一个乒乓球并按住大约五秒钟,就粘好了一个乒乓球。粘贴下一个乒乓球时我只需要挤着上一个乒乓球,就能让所有乒乓球都变得整齐了。我对它的外观很满意。它还有一个很好的好处,就是掩盖了我糟糕的焊接工作;) + +![It's a tight fit, but the 40mm ping pong balls fit in a 30mm space just fine.][6] + +我继续为余下的乒乓球进行焊接。尽管这个过程中有几个乒乓球被压碎了,但最终还是顺利完成了制作。 + +![255 LEDs and 255 ping pong balls in an array.][7] + +### 测试代码 + +测试代码需要确保所有部件都能正常工作,为此我使用了这个 [Adafruit 指南][8],它以红、绿和蓝点亮每个 LED,然后依次进行循环。我在测试时使用它来确保我连接无误并且焊接正常。 + +在此之后,我在电子表格中设计了一个网格,将每个像素映射到一个网格位置。由于我的像素编号呈之字形排列,因此很难跟踪每个 LED(例如 A1 为 256,B1 为 226)。重新映射网格位置能使得我在构建图像时更容易。 + +在所有准备工作完成之后,我就可以在纸上和电子表格中设计图像,然后编码。于是我开始添加一些动画(使用循环并将像素变为一种颜色,然后变为另一种颜色)。 + +最终的结果还算顺利。 + +![A Christmas gift in LED.][9] + +![Reindeer painted with light.][10] + +![An LED snowflake.][11] + +### 能玩一年的树莓派彩灯 + +我不确定这是否已经完全完成了。自从把它摆放到橱窗里,几乎每个晚上我都会添加一些新的图像和动画。我已经在考虑除夕夜的时候要做成什么样了。它不会像圣诞装饰品一起在圣诞节后被放进储藏室。我只需要在上面显示其它图案,就能使它成为一个能玩一年的彩灯!我的一个朋友推荐了像素版马里奥,这听起来是个好主意! + +我的代码仍然需要完善。例如,我做了一些滚动文本,但当我为文本的每个位置重新绘制时却花了很多时间。我想我可以用循环做一些事情,或者图像库可以帮助更轻松地滚动字母,并使添加文本更容易,而不是在每一步打开和关闭每个像素。 + +这里有一张照片记录了我制作的全过程:[LED 乒乓墙][12]。 + +可以在此处观看它的运行视频:[XMas 灯光展示][13]。 + +这个彩灯最终的效果我非常满意。以后我也会尝试更多利用 LED 彩灯完成的项目。我也鼓励大家亲自动手制作一个这样的彩灯,它会比你想象中更简单。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/raspberry-pi-holiday-light-display + +作者:[Brian McCafferty][a] +选题:[lkxed][b] +译者:[Return7g](https://github.com/Return7g) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/bdm +[b]: https://github.com/lkxed +[1]: https://github.com/bmccafferty/ping-pong-led-wall +[2]: https://shop.pimoroni.com/products/raspberry-pi-zero-wh-with-pre-soldered-header +[3]: https://shop.pimoroni.com/products/pibow-zero-w +[4]: https://opensource.com/sites/default/files/2022-11/IMG_20201126_115520.jpeg +[5]: https://opensource.com#the-code +[6]: https://opensource.com/sites/default/files/2022-11/IMG_20201127_101409.webp +[7]: https://opensource.com/sites/default/files/2022-11/IMG_20201127_160500.webp +[8]: https://learn.adafruit.com/neopixels-on-raspberry-pi/python-usage +[9]: https://opensource.com/sites/default/files/2022-11/IMG_20201127_181931.webp +[10]: https://opensource.com/sites/default/files/2022-11/IMG_20201202_215902.webp +[11]: https://opensource.com/sites/default/files/2022-11/IMG_20201127_215314.webp +[12]: https://projects.bdm.scot/Xmas%20LED%20Wall%202020/ +[13]: https://youtu.be/zc0501GzpMw +[0]: https://img.linux.net.cn/data/attachment/album/202212/20/095754r7q0z001lvx6p600.jpg \ No newline at end of file diff --git a/published/202212/20221127.1 ⭐️ How to Automatically Indent Your Code in Visual Studio Code.md b/published/202212/20221127.1 ⭐️ How to Automatically Indent Your Code in Visual Studio Code.md new file mode 100644 index 0000000000..674924887b --- /dev/null +++ b/published/202212/20221127.1 ⭐️ How to Automatically Indent Your Code in Visual Studio Code.md @@ -0,0 +1,98 @@ +[#]: subject: "How to Automatically Indent Your Code in Visual Studio Code" +[#]: via: "https://itsfoss.com/auto-indent-vs-code/" +[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15335-1.html" + +如何在 VSCode 中自动缩进你的代码 +====== + +![][0] + +代码中的缩进指的是你在代码行的开头处的空格。像其他代码编辑器和 IDE 一样,VSCode 允许你自动缩进你的代码。 + +你可以设置使用制表符或空格或任何你喜欢的缩进方式。 + +听起来不错吧?让我们来看看怎么做。 + +### 在 VSCode 中启用自动缩进 + +你有多种方法可以实现这个目标。在本指南中,我将向你展示三种在 VSCode 中自动缩进代码的方法。 + +#### 方法 1:配置全局用户设置 + +你可以通过命令模式访问全局用户设置。使用 `Ctrl + Shift + P` 来打开命令模式,搜索 `Open User Settings` 并按下回车: + +![access user setting from command pallet in vscode][1] + +它将打开设置。在那里,你需要搜索 `Auto Indent`,并在 “编辑器:自动缩进Editor: Auto Indent” 中选择 “全部Full”: + +![enable auto indent from global user settings in vscode][2] + +接着自动缩进会被启用,并应用于 VSCode 中每个打开的文件。 + +#### 方法 2:在 VSCode 中使用检查器或格式化工具进行自动缩进 + +在这种方法中,你需要添加扩展程序,如代码格式化工具或者检查器,以获得理想的结果。 + +检查器Linter会识别代码中的错误,而格式化工具Formatter只对你的代码进行格式化,使其更具可读性。你可以在 [VSCode 市场][3] 中搜索特定于你的编程语言的代码格式化器。 + +这里有一些我最喜欢的广泛流行语言的代码格式化工具和检查器: + +- [C/C++][4]:适用于 C 和 C++ 编程语言。 +- [PHP][5]:适用于 PHP。 +- [markdownlint][6]:适用于 Markdown 文件。 +- [Python][7]:适用于 Python 编程语言。 +- [ESLint][8]:适用于 JSON 和 javascript。 +- [Beautify][9]: 适用于 JavaScript、JSON、CSS、SASS 和 HTML。 + +当你为你喜欢的编程语言添加了格式化工具,你可以按 `Ctrl + Shift + I` 来格式化代码。 + +同样地,你也可以使用命令模式做同样的事情。按 `Ctrl + Shift + P`,并搜索 `Format document`,然后按下回车。 + +![indent code in VSCode][10] + +#### 方法 3:在保存文件时启用自动缩进功能 + +VSCode 允许你在保存你的代码时,通过一个小小的调整来格式化它。让我告诉你怎么做。 + +按 `Ctrl + ,`,它将打开用户设置提示。在那里,搜索 `Format On Save`。 + +![enable format on save option][11] + +从现在开始,当你保存文件时,你的文件将自动添加缩进。 + +### 总结 + +在本指南中,我解释了如何在 VSCode 中自动添加缩进。我建议使用第二种方法以获得更好的灵活性。 + +我希望你会发现本指南对你有帮助,如果你有任何疑问或建议,请在评论中告诉我。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/auto-indent-vs-code/ + +作者:[Sagar Sharma][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/sagar/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/wp-content/uploads/2022/11/access-user-setting-from-command-pallet-in-vscode.png +[2]: https://itsfoss.com/wp-content/uploads/2022/11/enable-auto-indent-from-global-user-settings-in-vscode.png +[3]: https://marketplace.visualstudio.com/vscode +[4]: https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools +[5]: https://marketplace.visualstudio.com/items?itemName=DEVSENSE.phptools-vscode +[6]: https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint +[7]: https://marketplace.visualstudio.com/items?itemName=ms-python.python +[8]: https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint +[9]: https://marketplace.visualstudio.com/items?itemName=HookyQR.beautify +[10]: https://itsfoss.com/wp-content/uploads/2022/11/format-document-.gif +[11]: https://itsfoss.com/wp-content/uploads/2022/11/enable-format-on-save-option.png +[0]: https://img.linux.net.cn/data/attachment/album/202212/10/152929zff61fqq13kkpvy8.jpg \ No newline at end of file diff --git a/published/202212/20221128.1 ⭐️⭐️ 3 open source audio tools for creators.md b/published/202212/20221128.1 ⭐️⭐️ 3 open source audio tools for creators.md new file mode 100644 index 0000000000..9bab60b6be --- /dev/null +++ b/published/202212/20221128.1 ⭐️⭐️ 3 open source audio tools for creators.md @@ -0,0 +1,74 @@ +[#]: subject: "3 open source audio tools for creators" +[#]: via: "https://opensource.com/article/22/11/open-source-audio-tools" +[#]: author: "Ruth Cheesley https://opensource.com/users/rcheesley" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15319-1.html" + +3 个面向创作者的开源音频资源 +====== + +![][0] + +> 这些有用的开源资源, 提供了采样声音和音乐旋律。 + +寻找优质的开源音频样本可能是一项挑战。我越来越多地使用开源工具 [Ardour][1] 和以创作者为中心的发行版 Ubuntu Studio,利用业余时间创作音乐。我一直在寻找要包含的特定声音或旋律循环的样本。 + +我熟悉许多查找图像的工具,但直到最近,我才遇到类似的音频资源需求。 + +### 开源声音样本 + +如果你不能自己录制特定的声音,那么寻找特定的声音可能会很困难。有多种资源可用,但在开源许可下提供声音的资源并不多。 + +#### Freesound + +来看看令人难以置信的宝库 [Freesound][2],这是一个 [知识共享][3] 许可的声音协作数据库,你可以在其中浏览、下载甚至贡献。 + +你几乎可以在 Freesound 上找到任何东西,从路上让人昏昏欲睡的旅游巴士的声音到开门关门的声音或幽灵般的尖叫声。虽然 Freesound 主要侧重于声音样本,但网站上也有一些旋律循环。许多声音都是 CC0 许可的,因此从许可证的角度来看,你可以随心所欲地使用它们。但是,并非所有人都如此,因此在使用任何内容之前请检查许可证,因为你可能需要注明创作者的姓名。 + +该站点允许你检查采样率、位深度和通道,因此你可以确保该样本适用于你的作品,并且它具有内置评级系统和下载计数。波形显示可让你在预览之前深入了解声音样本的特性。 + +Freesound 的搜索过滤器不如其他网站强大。声音有时会被分成一组相似的声音,例如 [可怕的噪音][4]。这可以帮助你快速获取一堆相似的声音来播放。样本的质量是可变的,因此你可能需要清理某些样本的音频。如果你觉得无聊,甚至可以选择从数据库中随机选择声音,相信我,有些声音非常随机! Freesound 还有一个社区论坛,你可以参与其中并向他人学习。 + +#### NASA 太空声音 + +如果你正在寻找一些超凡脱俗的声音或想窥探地球与太空之间的对话,[NASA 太空声音数据库][5]可能是个不错的去处。探索各种任务的录音并听取来回的通信是很有趣的,其中一些是有旁白的。一些录音包含来自不同太空任务的不同声音,从毅力号漫游者的火星之声到阿波罗任务的音频。 + +来自 NASA 网站的声音在知识共享类别公共领域标记 1.0 下发布的,这意味着它不受版权法的已知限制。 + +### 音乐创作的旋律循环 + +如果你更关注于创作音乐,你可能正在寻找旋律循环 —— 这是你可以在自己的作品中修改和调整的简短音乐录音。 + +有各种商业来源的样本包,但 [Looperman][6] 上也有很多免版税的旋律循环。音乐家、DJ、制作人和创作者上传了超过 200,000 个旋律循环,从电子舞曲、trap 到古典音乐应有尽有。还有超过 12,000 首无伴奏合唱和口语旋律循环,它是查找低音线或鼓点等内容的绝佳资源。你需要有一个帐户才能下载,并且你必须先下载曲目才能上传任何内容。 + +Looperman 资源不是知识共享的,但该站点默认采用类似的概念:根据站点许可,“所有样本和旋律循环都可以在商业和非商业项目中免费使用”,但“你不能声明这些旋律循环的版权”。无伴奏合唱和人声样本属于不同的类别,所以检查你考虑使用的任何旋律循环的具体条款是很重要的。 + +每个旋律循环都会告诉你每分钟的节拍数、调号(如果相关)以及创建它的软件。波形显示旋律循环的特征,让你清楚它是否可能适用于你的项目.你可以在浏览器中预览旋律循环并为创作者留下评论。有一个活跃的社区和许多很棒的资源可以帮助你创建自己的旋律循环。 + +### 发挥创意 + +我希望这可以让你了解在何处可以为你的下一个项目找到音频资源,我期待听到你创建的内容! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/open-source-audio-tools + +作者:[Ruth Cheesley][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/rcheesley +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/21/12/music-linux-ardour +[2]: https://freesound.org +[3]: https://opensource.com/article/20/1/what-creative-commons +[4]: https://freesound.org/people/SamsterBirdies/packs/31184/ +[5]: https://www.nasa.gov/connect/sounds/index.html +[6]: https://www.looperman.com/ +[0]: https://img.linux.net.cn/data/attachment/album/202212/05/144352hbfp7pg77o5fgi6x.jpg \ No newline at end of file diff --git a/published/202212/20221128.2 ⭐️ Elon Musk's Twitter to Add Open-Source Signal Protocol for Encrypted DMs.md b/published/202212/20221128.2 ⭐️ Elon Musk's Twitter to Add Open-Source Signal Protocol for Encrypted DMs.md new file mode 100644 index 0000000000..d4a75354af --- /dev/null +++ b/published/202212/20221128.2 ⭐️ Elon Musk's Twitter to Add Open-Source Signal Protocol for Encrypted DMs.md @@ -0,0 +1,87 @@ +[#]: subject: "Elon Musk's Twitter to Add Open-Source Signal Protocol for Encrypted DMs" +[#]: via: "https://news.itsfoss.com/twitter-signal/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15306-1.html" + +埃隆·马斯克的 Twitter 将添加开源 Signal 协议,实现加密私信 +====== + +> 埃隆·马斯克证实,加密的私信即将到来! 这是好东西。 + +![](https://news.itsfoss.com/content/images/size/w2000/2022/11/twitter-to-add-signal-encrypted-dms.png) + +今年早些时候,埃隆·马斯克 [在 Twitter 上表示][1]:Twitter 的 私信 Direct Messages (DM)需要像 Signal 协议这样的 端到端加密 End-to-End Encryption 。 + +早在 2016 年,**爱德华·斯诺登**就 [要求][2] Twitter 的前首席执行官兼联合创始人**杰克·多尔西**添加 Signal 协议类似的安全措施到 Twitter 平台。 + +但是,这个协议从来没有被添加到 Twitter。它可能经过测试但还未部署实施。 + +根据最近的公告,Twitter 似乎即将实现这个安全协议 😌。 + +马斯克分享了他在公司演讲中的几张幻灯片,其中就包括为 Twitter 2.0 路线图规划的“**加密私信**”。 + +### 🔒 Twitter 通信的 Signal 协议 + +![twitter encrypted dms][3] + +虽然有一些安全研究员,例如 [黄文津][4],已经在 Twitter 的 iOS 和 Android 应用程序中发现了对 [Signal 协议][5] 的代码引用。 + +但是直到现在,埃隆·马斯克才在 [推文][6] 中确认了该计划,该推文介绍了根据 **“Twitter 2.0”** 路线图将对 Twitter 平台进行的改进。 + +换句话说,埃隆·马斯克正式确认 Twitter 即将推出**加密私信**。 + +![twitter dm signal protocol][7] + +**对于那些不知道 Signal 协议的人**,我们简要地介绍一下 Signal 协议:Signal 协议是一种开源的加密协议,它允许以 [完全前向保密][8] perfect forward secrecy (PFS)方式实施端到端加密。 + +该协议使用 “双棘轮算法 Double Ratchet algorithm ”,通信双方根据不断变化的共享密钥,来交换加密的消息。 + +这确保没有第三方可以得到通信消息的内容,因为共享密钥仅存在于通信双方的设备上。 + +[Signal][9] 应用程序充分利用了这个方法。但是,进一步来说,还有几个以隐私为中心的替代方案: + +(LCTT 译注:Signal 协议是一种真正的端到端加密的通讯协议,号称是世界上最安全的通讯协议。只有参与通讯的用户可以读取并解密信息,而任何第三方(包括服务器)都无法查看到通讯的内容。总的来说,它可以防止潜在的窃听者(包括:通信服务商、互联网服务提供商甚至是该通讯系统的提供者),获取能够用以解密通讯内容的密钥。目前有大量即时通讯软件也使用或借鉴参考了 Signal 协议,例如:Skype、What'sApp、Facebook Messenger) + +#### Signal 协议如何帮助 Twitter DM? + +它可以防止恶意攻击者和政府去窥探 Twitter 用户的消息,从而使 Twitter 成为一个更加安全的平台。 + +Twitter 添加加密私信会对举报人、记者和社会活动家有益,因为他们经常会因其工作而面临被审查或成为攻击目标。 + +诚然,就隐私而言,加密私信可能不是最严格的保护措施。但**有总比没有好**。 + +### 🔏 加密消息应该成为通讯软件的标准 + +在这个动荡的信息时代,我们看到更多的恶意攻击者试图未经授权访问敏感信息。 + +端到端加密应成为所有通讯软件的必要标准,我希望 Twitter 能够尽快添加它。 + +_你有什么想法吗?请在下面的评论区中分享你的想法吧。_ + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/twitter-signal/ + +作者:[Sourav Rudra][a] +选题:[lkxed][b] +译者:[chai001125](https://github.com/chai001125) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/sourav/ +[b]: https://github.com/lkxed +[1]: https://twitter.com/elonmusk/status/1519469891455234048 +[2]: https://twitter.com/Snowden/status/808736772830195713 +[3]: https://news.itsfoss.com/content/images/2022/11/Encrypted_DM_Twitter.jpg +[4]: https://twitter.com/wongmjane +[5]: https://github.com/signalapp/libsignal +[6]: https://twitter.com/elonmusk/status/1596718851097755648 +[7]: https://news.itsfoss.com/content/images/2022/11/Signal_Protocol_Twitter.jpg +[8]: https://en.wikipedia.org/wiki/Forward_secrecy +[9]: https://signal.org/en/ +[10]: https://itsfoss.com/private-whatsapp-alternatives/ diff --git a/published/202212/20221129.1 ⭐️ Bodhi Linux 7.0.0 Testing Begins with New Features, Packages.md b/published/202212/20221129.1 ⭐️ Bodhi Linux 7.0.0 Testing Begins with New Features, Packages.md new file mode 100644 index 0000000000..74843d60dd --- /dev/null +++ b/published/202212/20221129.1 ⭐️ Bodhi Linux 7.0.0 Testing Begins with New Features, Packages.md @@ -0,0 +1,58 @@ +[#]: subject: "Bodhi Linux 7.0.0 Testing Begins with New Features, Packages" +[#]: via: "https://debugpointnews.com/bodhi-linux-7-0-0-testing/" +[#]: author: "arindam https://debugpointnews.com/author/dpicubegmail-com/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15309-1.html" + +Bodhi Linux 7.0.0 开始测试新的功能和软件包 +====== + +> Bodhi Linux 团队为即将发布的 Bodhi Linux 7.0.0 版本启动了 Alpha 测试。 + +![Bodhi Linux 7.0.0 桌面][1] + +Bodhi Linux 基于 Ubuntu LTS,其带有基于 Enlightenment 的 Moksha 桌面环境。Moksha 桌面是轻量级的,同时也是一个养眼的桌面。此外,它只包括了可以让你开始使用的基本的应用程序。 + +目前的 Bodhi Linux 6 系列基于 Ubuntu 20.04 LTS,发布于 2021 年,正好在 Ubuntu 20.04 LTS 发布后。即将推出的 Bodhi Linux 7.0.0 将基于今年 4 月发布的 Ubuntu 22.04 LTS,带来了基于 Ubuntu 稳定性和更新的软件包。 + +在其核心部分,它采用与 Ubuntu 22.04 一致的 Linux 5.15 LTS 内核。你可以得到基于最新的 Enlightenment 桌面/Enlightenment 基础库(EFL)的改进的 Mokhsna 桌面环境。 + +由于官方的变化日志还没有发布,这里是你在这个版本中得到的版本的一个快速总结。 + +### Bodhi Linux 7.0.0 摘要(暂定) + +- 基于 Ubuntu 22.04 LTS “Jammy Jellyfish” +- Linux 5.15 LTS 内核 +- Enlightenment 基础库(EFL)1.26.99 +- Moksha 桌面 0.4.0 +- Python 3.10 +- Systemd 249.11 + +### 下载 + +该团队建议,这个预发布版本是不稳定的,不应该用于你的日常工作。不过,如果你想体验一下,可以从下面的链接下载。 + +> **[下载][2]** + +### 时间表 + +Alpha 测试阶段应该持续两个月左右,然后是候选版本。之后是最终版本。从时间上看,根据历史记录 —— Alpha 测试大约持续两个月,然后是一个月的 RC 测试。因此,暂定的最终发布日期为 2023 年 2 月底或 3 月初。 + +-------------------------------------------------------------------------------- + +via: https://debugpointnews.com/bodhi-linux-7-0-0-testing/ + +作者:[arindam][a] +选题:[lkxed][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://debugpointnews.com/author/dpicubegmail-com/ +[b]: https://github.com/lkxed +[1]: https://debugpointnews.com/wp-content/uploads/2022/11/Bodhi-Linux-7.0.0-Desktop.jpg +[2]: https://sourceforge.net/projects/bodhidev/files/7.0.0-alpha/ diff --git a/published/202212/20221129.3 ⭐️⭐️ Parse arguments with Lua.md b/published/202212/20221129.3 ⭐️⭐️ Parse arguments with Lua.md new file mode 100644 index 0000000000..3457ab1f9c --- /dev/null +++ b/published/202212/20221129.3 ⭐️⭐️ Parse arguments with Lua.md @@ -0,0 +1,127 @@ +[#]: subject: "Parse arguments with Lua" +[#]: via: "https://opensource.com/article/22/11/lua-command-arguments" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15321-1.html" + +用 Lua 解析参数 +====== + +![][0] + +> 参数对于交互式计算至关重要,Lua 编程语言提供了 `{...}` 表达式来封装在启动 Lua 脚本时给定的可变参数。 + +大多数计算机命令由两部分组成:命令和参数。命令是要执行的程序,而参数可能是命令选项或用户输入。如果没有这种结构,用户将不得不编辑命令的代码,以改变命令所处理的数据。想象一下重写 [printf][1] 命令只是为了让你的计算机用 “hello world” 消息问候你。参数对于交互式计算至关重要,[Lua 编程语言][2] 提供了 `{...}` 表达式来封装在启动 Lua 脚本时给定的可变参数。 + +### 在 Lua 中使用参数 + +几乎每一个给计算机的命令都假定一个参数,即使它期望参数是一个空列表。 Lua 会记录启动后写入的内容,即使你可能对这些参数不做任何操作。要在 Lua 启动时使用用户提供的参数,请迭代 `{...}` 表: + +``` +local args = {...} + +for i,v in ipairs(args) do + print(v) +end +``` + +运行代码: + +``` +$ lua ./myargs.lua +$ lua ./myargs.lua foo --bar baz +foo +--bar +baz +---- +``` + +参数是不安全的,Lua 会完全按照输入的方式打印所有参数。 + +### 解析参数 + +对于简单的命令,Lua 的基本功能足以解析和处理参数。这是一个简单的例子: + +``` +-- setup + +local args = {...} + +-- engine + +function echo(p) + print(p) +end + +-- go + +for i,v in ipairs(args) do + print(i .. ": " .. v) +end + +for i,v in ipairs(args) do + if args[i] == "--say" then + echo("echo: " .. args[i+1]) + end +end +``` + +在 `setup` 部分,将所有命令参数转储到名为 `args` 的变量中。 + +在 `engine` 部分,创建一个名为 `echo` 的函数,用于打印你“输入”其中的任何内容。 + +最后,在 `go` 部分,解析 `args` 变量(用户在启动时提供的参数)中的索引和值。在此示例代码中,为清楚起见,第一个 `for` 循环仅打印每个索引和值。 + +第二个 `for` 循环使用索引来检查第一个参数,它被假定是一个选项。此示例代码中唯一有效的选项是 `--say`。如果循环找到字符串 `--say`,它会调用 `echo` 函数,并将当前参数的索引 _加 1_(_下一个_ 参数)作为函数参数提供。 + +命令参数的分隔符是一个或多个空格。运行代码查看结果: + +``` +$ lua ./echo.lua --say zombie apocalypse +1: --say +2: zombie +3: apocalypse +echo: zombie +``` + +大多数用户都知道在向计算机发出命令时空格很重要,因此在这种情况下删除第三个参数是预期的行为。下面是演示两种有效“转义”方法的变体: + +``` +$ lua ./echo.lua --say "zombie apocalypse" +1: --say +2: zombie apocalypse +echo: zombie apocalypse + +$ lua ./echo.lua --say zombie\ apocalypse +1: --say +2: zombie apocalypse +echo: zombie apocalypse +``` + +### 解析参数 + +手动解析参数简单且无依赖性。但是,你必须考虑一些细节。大多数现代命令都允许使用短选项(例如,`-f`)和长选项(`--foo`),并且大多数命令都提供 `-h` 或 `--help` 或者在没有所需参数时显示帮助菜单。 + +使用 [LuaRocks][3] 可以轻松安装其他库。有一些非常好的工具,例如 [alt-getopt][4],它们为解析参数提供了额外的基础设施。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/lua-command-arguments + +作者:[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/article/20/8/printf +[2]: https://opensource.com/article/22/11/lua-worth-learning +[3]: https://opensource.com/article/19/11/getting-started-luarocks +[4]: https://opensource.com/article/21/8/parsing-commands-lua +[0]: https://img.linux.net.cn/data/attachment/album/202212/06/111552sofsllzdfffgfakh.jpg \ No newline at end of file diff --git a/published/202212/20221130.1 ⭐️⭐️ Get to know Lua for loops in 4 minutes.md b/published/202212/20221130.1 ⭐️⭐️ Get to know Lua for loops in 4 minutes.md new file mode 100644 index 0000000000..8f382efbce --- /dev/null +++ b/published/202212/20221130.1 ⭐️⭐️ Get to know Lua for loops in 4 minutes.md @@ -0,0 +1,151 @@ +[#]: subject: "Get to know Lua for loops in 4 minutes" +[#]: via: "https://opensource.com/article/22/11/lua-for-loops" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15328-1.html" + +了解 Lua 的 for 循环 +====== + +![][0] + +> 了解 for 循环结构和你在控制它时拥有的选项,这样你可以对如何在 Lua 中处理数据做出聪明的决定。 + +在编程中,迭代是一个重要的概念,因为代码通常必须多次扫描一组数据,以便它可以单独处理每个项目。控制结构使你能够根据通常在程序运行时动态建立的条件来指导程序的流程。不同的语言提供不同的控制,在 [Lua][1] 中,有 `while` 循环、`for` 循环和 `repeat until` 循环。本文介绍 `for` 循环。我将在另一篇文章中介绍 `while` 和 `repeat until` 循环。 + +### for 循环 + +`for` 循环接受已知数量的项目并确保处理每个项目。“项目”可以是数字,它也可以是一个包含多个条目或任何 Lua 数据类型的表。语法和逻辑有点灵活,但语法允许这些参数,每个参数本质上描述了一个计数器: + +- 计数器的起始值 +- 停止值 +- 你希望计数器前进的增量 + +例如,假设你有三个项目并希望 Lua 处理每个项目。你的计数器可以从 3 开始一直持续到 1,增量为 -1。这呈现为 3、2、1 的计数。 + +``` +mytable = { "zombie", "Halloween", "apocalypse" } +for count = 3, 1, -1 do +  print(count .. ": " .. mytable[count]) +end +``` + +运行代码以确保所有三个项目都得到处理: + +``` +$ lua ./for.lua +3: apocalypse +2: Halloween +1: zombie +``` + +这段代码有效地“反向”处理了表,因为它是倒数。你可以正数: + +``` +for count = 1, 3, 1 do +  print(mytable[count]) +end +``` + +此示例从最低索引到最高索引处理表: + +``` +$ lua ./for.lua +1: zombie +2: Halloween +3: apocalypse +``` + +### 增量 + +你也可以更改增量。例如,也许你想要一个没有万圣节盛况的僵尸启示录: + +``` +mytable = { "zombie", "Halloween", "apocalypse" } +for count = 1, 3, 2 do +  print(mytable[count]) +end +``` + +运行代码: + +``` +$ lua ./for.lua +zombie +apocalypse +``` + +该示例打印了 1 和 3,因为第一个计数是 1,然后递增 2(总共 3)。 + +### 计数器 + +有时你不知道需要 Lua 遍历数据的次数。在这种情况下,你可以将计数器设置为由其他进程填充的变量。 + +另外,`count` 这个词不是关键字。为了清楚起见,这正是我在示例代码中使用的内容。程序员通常使用更短的名称,例如 `i` 或 `c`。 + +``` +var = os.time() +if var%2 == 0 then +  mytable = { var } +else +  mytable = { "foo", "bar", "baz" } +end +for c = 1, #mytable, 1 do +  print(mytable[c]) +end +``` + +此代码创建一个变量,其中包含启动时的时间戳。如果时间戳是偶数(除以 2 时模数为 0),则只将时间戳放入表中。如果时间戳是奇数,它将三个字符串放入一个表中。 + +现在你无法确定你的 `for` 循环需要运行多少次。可能是一次或是三次,但没有办法确定。解决方案是将起始计数设置为 1,将最终计数设置为表的长度(`#mytable` 是确定表长度的内置快捷方式)。 + +可能需要多次运行脚本才能看到这两个结果,但最终,你会得到如下结果: + +``` +$ lua ./dynamic.lua1665447960 +$ lua ./dynamic.lua +foo +bar +baz +``` + +### 带 pairs 和 ipairs 的 for 循环 + +如果你已经阅读了我关于 [表迭代][2] 的文章,那么你已经熟悉了 Lua 中最常见的 `for` 循环之一。这个使用 `pairs` 或 `ipairs` 函数来迭代一个表: + +``` +mytable = { "zombie", "Halloween", "apocalypse" } +for i,v in ipairs(mytable) do +  print(i .. ": " v) +end +``` + +`pairs` 和 `ipairs` 函数“解包”表并将值转储到你提供的变量中。在此示例中,我将 `i` 用于 _索引_,将 `v` 用于 _值_,但变量名称无关紧要。 + +``` +$ lua ./for.lua1: zombie2: Halloween3: apocalypse +``` + +### for 循环 + +`for` 循环结构在编程中很常见,由于经常使用表和 `pairs` 函数,因此在 Lua 中非常常见。了解 `for` 循环结构和控制它时的选项意味着你可以就如何在 Lua 中处理数据做出明智的决定。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/lua-for-loops + +作者:[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/article/22/11/lua-worth-learning +[2]: https://opensource.com/article/22/11/iterate-over-tables-lua +[0]: https://img.linux.net.cn/data/attachment/album/202212/08/094609xg8sgk832t0y6s68.jpg \ No newline at end of file diff --git a/published/202212/20221201.2 ⭐️⭐️ Microsoft Office 365 Declared illegal for German Schools, Again!.md b/published/202212/20221201.2 ⭐️⭐️ Microsoft Office 365 Declared illegal for German Schools, Again!.md new file mode 100644 index 0000000000..37f815aec6 --- /dev/null +++ b/published/202212/20221201.2 ⭐️⭐️ Microsoft Office 365 Declared illegal for German Schools, Again!.md @@ -0,0 +1,95 @@ +[#]: subject: "Microsoft Office 365 Declared illegal for German Schools, Again!" +[#]: via: "https://news.itsfoss.com/microsoft-office-365-illegal-germany/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15315-1.html" + +微软 Office 365 再次在德国学校被宣布为非法 +====== + +> 再一次,微软因其 Office 365 的隐私问题而在德国受到抨击! + +![微软 Office 365 再次在德国学校被宣布为非法!][1] + +最近,我偶然看到 [Tutanota][2] 的一篇博文,说微软的 Office 365 再次被宣布在德国学校使用是非法的。 + +好吧,真让人吃惊!😬 + +上一次发生这种情况还是在 [2019 年][3],当时 Office 365 被禁止在德国黑森州Hesse的学校使用。 + +补充说明一下,Office 365 软件包提供了一套完善的专有工具,被全球许多专业人士使用,这就是它受欢迎的原因。 + +然而,正如德国当局指出的那样,它带来了相当多的隐私问题,这些问题还没有得到解决。 + +🛑 因此,德国数据保护会议(DSK、Datenschutzkonferenz)决定禁止在全国的学校使用微软 Office 365。 + +> 💡 DSK 是一个由独立的德国联邦和州数据保护监督机构组成的团体。 + +### 微软 Office 365 不能在德国学校使用 + +**一个大胆的举动:** DSK 已经禁止在学校使用微软 Office 365,理由是微软存在各种隐私侵犯的行为。 + +过去两年一直在进行谈判,以确保其符合欧洲数据保护标准。 + +然而,事情的结果并不理想。 + +在 [DSK][4] 的一份声明中,他们提到: + +> 控制者必须能够根据 GDPR 第 5(2) 条履行其责任义务。在使用微软 365 时,根据“数据保护附录”,在这方面仍然会遇到困难,因为微软没有完全披露具体发生了哪些处理操作。 +> +> 此外,微软没有完全披露哪些处理操作是代表客户进行的,哪些是为自己的目的进行的。 + +换句话说,他们觉得微软没有遵守 [GDPR][5] 的规定,而且微软一直缺乏透明度。 + +**与 2019 年那次有什么不同?:** 好吧,在被黑森州的学校取缔后,微软在 2019 年后做了一些改变。 + +但是,他们只是采用了欧盟委员会的一些标准合同条款,并更新了他们的《产品和服务数据保护 [附录][6]》,几乎只是表面功夫。 + +**这次又是什么原因造成的?:** 当 DSK 发现使用 Office 365 时,个人数据被发送到美国,使美国当局可以获得这些数据时,他们很不高兴。 + +他们还发现,如果不将个人数据传输到美国,就无法使用微软 Office 365。 + +因此,他们也建议私人用户不要使用 Office 365,因为不能信任微软对他们的数据的处理。 + +Tutanota 的人还指出,许多贸易学校使用 Office 365 来让他们的学生学习办公室工作。现在,他们将不得不使用微软 Office 的本地许可证(在本地部署)来实现同样的目的。 + +**下一步是什么?** 在最近的一份 [声明][7] 中,微软表示,他们不同意 DSK 的做法,并已采取措施,确保他们的 Office 365 产品符合欧洲数据标准,或者经常超过这些标准。 + +微软提到: + +> 我们谨记 DSK 关于提高透明度的呼吁。虽然我们的透明度标准已经超过了我们行业中的大多数其他供应商,但我们承诺会做得更好。 +> +> 特别是,我们将在我们计划的欧盟数据限制的框架内,在透明度的意义上提供关于我们客户的数据流和处理目的的进一步文档。 +> +> 我们还将增加欧盟以外的分包商和微软员工的地点和处理的透明度。 + +因此,总结一下。在遵守严格的欧盟数据处理准则方面,微软还有很长的路要走。 + +我认为德国学校应该改用 Linux,并选择开源的微软 Office 替代品,如 LibreOffice、Calligra、ONLYOFFICE [等等][8],以保证他们的数据安全并掌握在正确的人手中。 + +你怎么看?微软是否在努力保持其在德国的地位?欢迎分享你的想法。 + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/microsoft-office-365-illegal-germany/ + +作者:[Sourav Rudra][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/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/german-schools-ban-ms-office-365.png +[2]: https://tutanota.com/blog/posts/microsoft-office-365-email-alternative/ +[3]: https://www.zdnet.com/article/microsoft-office-365-banned-in-german-schools-over-privacy-fears/ +[4]: https://datenschutzkonferenz-online.de +[5]: https://en.wikipedia.org/wiki/General_Data_Protection_Regulation +[6]: https://www.microsoft.com/licensing/docs/view/Microsoft-Products-and-Services-Data-Protection-Addendum-DPA +[7]: https://news.microsoft.com/de-de/microsoft-erfuellt-und-uebertrifft-europaeische-datenschutzgesetze/ +[8]: https://itsfoss.com/best-free-open-source-alternatives-microsoft-office/ diff --git a/published/202212/20221201.3 ⭐️⭐️ Monica An Open-Source App for Personal Relationship Management.md b/published/202212/20221201.3 ⭐️⭐️ Monica An Open-Source App for Personal Relationship Management.md new file mode 100644 index 0000000000..c159ea92bb --- /dev/null +++ b/published/202212/20221201.3 ⭐️⭐️ Monica An Open-Source App for Personal Relationship Management.md @@ -0,0 +1,89 @@ +[#]: subject: "Monica: An Open-Source App for Personal Relationship Management" +[#]: via: "https://itsfoss.com/monica/" +[#]: author: "Ankush Das https://itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15346-1.html" + +Monica:人际关系管理的开源应用 +====== + +![][0] + +你可能已经知道 CRM 代表 客户关系管理Customer Relationship Management。 我们已经有了一份帮助小型企业的 [开源 CRM 软件][1] 列表。 + +在这里,我将讨论一个有趣的开源 Web 应用,它采用相同的人际关系概念。听起来很独特,对吧? + +Monica 是一款可让你组织和记录你与亲人互动的应用。**如果你自行托管,它是免费的,如果你需要托管版本那么订阅**。 + +### Monica:跟踪社交互动 + +![contacts][2] + +很难记住与家人、朋友或同事互动的每一个细节。 + +你可以使用 [笔记应用][3] 或 [CubyText][4] 等知识管理应用来添加一些信息。但这些并不是为记录你的互动而量身定制的。 因此,你将不得不付出一些努力,以在需要时得心应手的方式添加信息。 + +使用 Monica,添加你的家庭、工作、联系人之间的关系、活动、日记、重要日期的提醒、债务等信息变得更加容易。 + +可以将其安装在自己的服务器上或选择 **$90/年** 的订阅以获得托管版本。 + +有趣的是,开发人员最初是根据他的个人要求构建它的。 + +### Monica 的特点 + +![dashboard][5] + +你可以获得大量选项来添加有关你日常生活中的人和互动的信息。其中一些包括: + +- 添加关于一个人的注释 +- 列出与联系人相关的重要其他人的姓名(他们的孩子、宠物等) +- 通话记录 +- 每个联系人的备用联系方式 +- 重要约会和重要事件提醒。生日会自动设置为提醒。 +- 管理礼物信息 +- 有用的仪表板,一目了然 +- 支持日记条目 + +Monica 似乎配备了各种功能,使其成为写日记、做笔记、添加联系信息、添加事件等的一体化工具。 + +不幸的是,没有可用的移动应用。你可以从 Web 浏览器访问它,但它可能不是每个人的最佳体验。所以,如果你坚持用智能手机做笔记和其他东西,你可能想看看其他的。 + +### 自托管或订阅访问 + +如果你想要 Monica 的托管版本,可以查看它的 [定价页面][6] 了解更多信息。 + +对于自托管,你需要前往其 [GitHub 页面][7] 并按照说明下载并安装它。可以选择在 Platform.sh 或 Heroku 上快速部署。 + +在选择服务器来托管 Monica 之前,请检查最低系统要求。 + +没有特殊的高级功能,与托管版本的高级订阅相比,你在自行托管时获得相同的东西。 + +这一切都很方便。 所以,选择对你来说不错的。 + +前往其 [官方网站][8] 获取所有详细信息并开始使用。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/monica/ + +作者:[Ankush Das][a] +选题:[lkxed][b] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/best-open-source-crm/ +[2]: https://itsfoss.com/wp-content/uploads/2022/11/contacts.png +[3]: https://itsfoss.com/note-taking-apps-linux/ +[4]: https://news.itsfoss.com/cubytext-experimental-project/ +[5]: https://itsfoss.com/wp-content/uploads/2022/11/dashboard.png +[6]: https://www.monicahq.com/pricing +[7]: https://github.com/monicahq/monica#get-started +[8]: https://www.zdnet.com/article/microsoft-office-365-banned-in-german-schools-over-privacy-fears/ +[0]: https://img.linux.net.cn/data/attachment/album/202212/14/093133zpw06jndpzbdpphp.jpg \ No newline at end of file diff --git a/published/202212/20221202.1 ⭐️⭐️ Try this Java file manager on Linux.md b/published/202212/20221202.1 ⭐️⭐️ Try this Java file manager on Linux.md new file mode 100644 index 0000000000..c32fe8144e --- /dev/null +++ b/published/202212/20221202.1 ⭐️⭐️ Try this Java file manager on Linux.md @@ -0,0 +1,68 @@ +[#]: subject: "Try this Java file manager on Linux" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-jfileprocessor" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15357-1.html" + +在 Linux 上试试这个 Java 文件管理器 +====== + +![][0] + +> JFileProcessor 作为一个 Linux 文件管理器,在设计和功能上都采取了极简理念。 + +计算机是一个奇特的文件柜,里面装满了虚拟文件夹和文件,等待着被引用、交叉引用、编辑、更新、保存、复制、移动、重命名和归类。在本文中,我将介绍一下 Linux 系统的文件管理器。 + +在 昇阳微系统Sun Microsystem 时代的末期,出现了一种叫做 Java 桌面系统Java Desktop System 的东西,奇怪的是它 _不是_ 用 Java 编写的。相反,它是(根据当时的 sun.com 上的描述)“对集成和优化的桌面软件的明智选择,大部分基于开源代码和开放标准”。它基于 GNOME,带有办公套件、电子邮件和日历应用、即时消息和“Java 技术”。我发现自己在思考用 Java 创建桌面需要什么。客观地说,桌面实际上并不包括那么多东西。一般的共识似乎是桌面由面板、系统托盘、应用菜单和文件管理器组成。 + +想象一个实际的 Java 桌面是一个有趣的思维练习。虽然不足以以此为目标启动一个开源项目,但足以在网络上快速搜索必要的组件。事实证明,有人用 Java 编写并维护了一个文件管理器。 + +### JFileProcessor + +我找到的 Java 文件管理器叫做 JFileProcessor,简称 JFP。它不仅是用 Java 编写的,更具体是说是用 [Groovy][1](一种流行的 Java 脚本语言)进行的一项迷人的实践。 + +![Image of the JfileProcessor folders.][2] + +作为文件管理器,JFileProcessor 在设计和功能上都采用了极简方式。它允许你查看、打开、移动、复制、剪切或删除本地系统和远程系统上的文件。它不是特别定制化的,它没有如拆分面板或可移动面板等额外功能。除了管理文件外,它没什么别的中心主题。JFileProcessor 在某种程度上令人耳目一新,因为它很简单。这是一个文件管理器,仅此而已。有时这就是你在文件管理器中想要的全部。 + +我之前写过关于 [设置 Java Swing 主题][3] 的方式,从技术上讲,该技术可以应用于这个开源应用。但是,我认为这个应用的部分魅力在于 OpenSolaris 称之为 “Blueprint” 的主题。这是 Java 的怀旧外观,我喜欢以其原生 GUI 外观运行它,作为对我的 OpenSolaris(现为 OpenIndiana)笔记本电脑的回忆。 + +### 用户体验 + +除了设计,真正重要的是用户体验。JFileProcessor 只有三个你日常使用的按钮:向上、后退和前进。它们未绑定到键盘快捷键,因此你必须单击按钮才能导航(或使用 `Tab` 键选择按钮)。在使用图形应用时,我经常使用键盘快捷键,所以当我尝试浏览我的系统时,这大大减慢了我的速度。但是,有时我实际上只是懒洋洋地浏览文件,因此 JFileProcessor 完全按照我的需要工作。 + +JFileProcessor 也有一个搜索组件。只要你设置合理的起始文件夹,搜索就会快速而智能,同时允许使用通配符和正则模式搜索。例如,当我搜索特定的电子书或漫画档案或游戏规则手册时,或者当我粗略地知道该目录包含一个项目但懒得一直点击到目的地址。在子目录中快速搜索,必然会得到明显的结果,然后双击打开文件,不管我设置了什么 XDG 偏好(Evince 用于 PDF,Foliate 用于电子书,等等)。 + +右键单击任何文件或目录会弹出上下文菜单。它具有你期望的大部分常见任务:复制、剪切、粘贴、删除、重命名、新建。它也有一些不错的额外功能。 + +![Right-click context menu in JFileProcessor][4] + +例如,你可以只将文件名复制到剪贴板或保存文件路径。你还可以运行一些脚本,包括用于批量重命名文件的脚本、用于对选定文件运行命令的脚本、用于创建 ZIP 或 TAR 存档的脚本等等。当然,编码器有多种选择,包括在当前位置打开终端和打开新的编码窗口。 + +### 安装 + +我是 Java 的忠实粉丝。它是一种清晰的语言,具有合理的分隔符和对跨平台兼容性的坚定立场。我喜欢它作为一种语言,我喜欢看到程序员用它创造的东西。 + +JFileProcessor 的名字很贴切。这是一种处理文件的有效方法,从某种意义上说,JFileProcessor 为你提供了一个简单的窗口来查看系统上的文件数据,并允许你以图形方式与它们进行交互,就像你可能在终端中与它们交互一样。它不是我用过的最高效的文件管理器,也不是功能最多的一个。然而,这是一个令人愉快的应用,为你提供了文件管理所需的基本工具,其相对较小的代码库使你可以在下午阅读一些精彩的内容。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-jfileprocessor + +作者:[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/article/20/12/groovy +[2]: https://opensource.com/sites/default/files/2022-09/jfileprocessor.webp +[3]: https://opensource.com/article/22/3/beautify-java-applications +[4]: https://opensource.com/sites/default/files/2022-09/jfileprocessor-menu.webp +[0]: https://img.linux.net.cn/data/attachment/album/202212/17/121727uuepuz1q3qhgippd.jpg \ No newline at end of file diff --git a/published/202212/20221204.1 ⭐️ 4MLinux 41.0 stable is now available with SDL games + More.md b/published/202212/20221204.1 ⭐️ 4MLinux 41.0 stable is now available with SDL games + More.md new file mode 100644 index 0000000000..b241461da1 --- /dev/null +++ b/published/202212/20221204.1 ⭐️ 4MLinux 41.0 stable is now available with SDL games + More.md @@ -0,0 +1,90 @@ +[#]: subject: "4MLinux 41.0 stable is now available with SDL games + More" +[#]: via: "https://debugpointnews.com/4mlinux-41-0-release/" +[#]: author: "arindam https://debugpointnews.com/author/dpicubegmail-com/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15318-1.html" + +4MLinux 41.0 稳定版发布 +====== + +![][1] + +> 新的 4MLinux 41.0 稳定版现已可供公众下载和安装。 + +4MLinux 是一个有十年历史的小型 Linux 发行版,主要有四个功能:维护Maintenance(如作为系统救援的现场 CD)、多媒体Multimedia(如播放视频 DVD)、微服务器 Miniserver(使用 inetd 守护程序),以及 神秘Mystery(小型 Linux 游戏)。它是独立开发的,也同时提供了 32 位镜像。是一个适合于老旧硬件的完美的 [轻量级 Linux 发行版][2]。 + +4MLinux 41.0 系列已经更新到其稳定版本。这个版本包括编辑文档的工具,如 LibreOffice 和 GNOME Office,可以用 DropBox 共享文件,用 Firefox 和 Chromium 浏览网页,用 Thunderbird 发送电子邮件,等等。它还包括 LAMP 服务器环境和 Perl、Python 和 Ruby 等编程语言。 + +以下是对这些变化的总结: + +![4MLinux 41.0 桌面][3] + +### 4MLinux 41.0:新增内容 + +首先,4MLinux 41.0 提供了 LibreOffice 7.4.3 和 GNOME Office(包括 AbiWord 3.0.5、GIMP 2.10.32 和 Gnumeric 1.12.52),用于编辑你的文档。此外,DropBox 151.4.4304 可用于分享你的文件,你可以使用 Firefox 107.0 和 Chromium 106.0.5249 来上网。 + +它包括了 Thunderbird 102.5.0,用于发送和接收电子邮件,Audacious 4.2 允许你享受你的音乐收藏。你还可以用 VLC 3.0.17.3 和 SMPlayer 22.2.0 观看视频,并在 Mesa 22.1.4 和 Wine 7.18 的帮助下进行游戏。 + +此外,4MLinux LAMP 服务器(Linux 6.0.9、Apache 2.4.54、MariaDB 10.6.11、PHP 5.6.40 和 PHP 7.4.33)也包括在内,可以用于设置你自己的 Web 服务器。4MLinux 41.0 稳定版还包括编程语言 Perl 5.36.0、Python 2.7.18、 Python 3.10.6 和 Ruby 3.1.2。 + +此外,这个版本还包括一些新的功能和应用程序。 + +开箱即用,它包括 FileZilla(FTP 客户端)、XPaint 和 GNU Paint(简单的图像编辑工具)和 nvme(管理 NVM-Express 分区的命令行工具),以及一系列小型 SDL 游戏。此外,还有几个可下载的扩展程序,包括 BlueGriffon(HTML 编辑器)、The Legend of Edgar(跳台游戏platform game)、ioquake3(Quake III 移植版)和 BZFlag(坦克大战游戏)。 + +SMPlayer 现在是 4MLinux 的默认视频播放器,Audacious 是默认音频播放器。在启动管理器 Syslinux 的帮助下,现在也可以将4MLinux 安装在 BTRFS 分区上。 + +### 更新摘要 + +- 主线 Linux 内核 6.0.9 +- jwm(乔氏窗口管理器)2.4.0 +- LibreOffice 7.4.3 +- GNOME Office (包括 AbiWord 3.0.5、GIMP 2.10.32 和 Gnumeric 1.12.52) +- DropBox 151.4.4304 +- Firefox 107.0 +- Chromium 106.0.5249 +- Thunderbird 102.5.0 +- Audacious 4.2 +- VLC 3.0.17.3 +- SMPlayer 22.2.0 +- Mesa 22.1.4 +- Wine 7.18 +- 4MLinux LAMP 服务器(包括:Linux 6.0.9、Apache 2.4.54、MariaDB 10.6.11、PHP 5.6.40 和 PHP 7.4.33) +- Perl 5.36.0 +- Python 2.7.18 +- Python 3.10.6 +- Ruby 3.1.2 + +### 下载 + +最新的版本 4MLinux 41.0,现在可以通过以下链接下载。 + +> **[下载 4MLinux 41.0][4]** + +这个版本包括了新的应用程序和功能,例如将 SMPlayer 作为默认的视频播放器,以及将 4MLinux 安装在带有 Syslinux 的 BTRFS 分区上的能力。我们鼓励你在 [虚拟机][5] 中试用 4MLinux,看看它提供的一切。 + +- [更新日志][6] +- [发布公告][7] + +-------------------------------------------------------------------------------- + +via: https://debugpointnews.com/4mlinux-41-0-release/ + +作者:[arindam][a] +选题:[lkxed][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://debugpointnews.com/author/dpicubegmail-com/ +[b]: https://github.com/lkxed +[1]: https://debugpointnews.com/wp-content/uploads/2022/12/4mlinux-head.jpg +[2]: https://www.debugpoint.com/lightweight-linux-distributions-2022/ +[3]: https://debugpointnews.com/wp-content/uploads/2022/12/4MLinux-41.0-desktop.jpg +[4]: https://sourceforge.net/projects/linux4m/ +[5]: https://www.debugpoint.com/install-ubuntu-virtualbox/ +[6]: http://4mlinux.com/addons-41.0.txt +[7]: https://4mlinux-releases.blogspot.com/2022/12/4mlinux-410-stable-released.html diff --git a/published/202212/20221204.2 ⭐️⭐️ Trinity Desktop Environment R14.0.13 is now out with updates!.md b/published/202212/20221204.2 ⭐️⭐️ Trinity Desktop Environment R14.0.13 is now out with updates!.md new file mode 100644 index 0000000000..c625b97865 --- /dev/null +++ b/published/202212/20221204.2 ⭐️⭐️ Trinity Desktop Environment R14.0.13 is now out with updates!.md @@ -0,0 +1,117 @@ +[#]: subject: "Trinity Desktop Environment R14.0.13 is now out with updates!" +[#]: via: "https://debugpointnews.com/trinity-desktop-environment-r14-0-13/" +[#]: author: "arindam https://debugpointnews.com/author/dpicubegmail-com/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15322-1.html" + +Trinity 桌面环境 R14.0.13 版发布更新 +====== + +![][1] + +> 怀念美好的旧式 KDE?Trinity 桌面环境新发布的小版本(TDE R14.0.13)带来了一些新功能和错误修复。以下是发布摘要。 + +![Trinity 桌面环境 R14.0.13][2] + +如果你是那些怀念美好的旧式 KDE(3.5)外观的人,那么你可以通过 Trinity 桌面环境(TDE)获得它。TDE 是一个由志愿者组成的小团队开发的一个复刻版的 KDE 3.5 桌面环境。它是 KDE 3 桌面理念的延续,为那些欣赏其功能和设计的人提供了更新和错误修复。 + +尽管是一个小而独立的项目,TDE 仍然在积极地开发和维护,为用户提供了一个主流桌面环境的替代品。而继 [之前的 R14.0.12 版本][3] 之后,第 13 个小版本带来了一些好东西。 + +### Trinity 桌面环境 R14.0.13 的新内容 + +#### 桌面易用性得到了更新 + +这个版本引入了使用 `Ctrl + 鼠标滚轮` 来增加或减少字体大小的功能,这可以用在 Konsole、Kate、KWrite、TDevelop 和其他使用 Kate 嵌入编辑器的应用程序中。此外,Kate 文本编辑器现在包括 Markdown 文件的语法高亮,使其更容易阅读和编辑这些类型的文档。 + +这些增强功能使用户对文本编辑器的外观有更多的控制,并改善了整体的用户体验。 + +此外,Trinity 桌面环境 R14.0.13 还改进了用户设置墙纸的方式,使其更容易设置,也更直观。Konqueror 的动作菜单现在提供了设置图像作为背景的各种选项,为用户提供了更多的灵活性和控制力。这些改进提高了设置墙纸时的整体用户体验,使用户更加方便。 + +除此之外,这个版本还改进了 khotkeys 输入动作,为用户提供了更多的控制和灵活性。它的用于创建和编辑动作的图形用户界面现在包括新的上移/下移按钮,使其更容易重新排列动作。此外,该版本还包括对图形用户界面的修复,以提高其整体可用性和性能。这些改进提高了用户在使用 khotkeys 输入动作时的体验,使用户更方便地定制他们的键盘快捷键。这个版本还包括一个新的等待动作组件,允许用户在步骤之间引入一个延迟。 + +![twin-style-machbunt - 来自 SuSE 的 KDE 窗口装饰主题][4] + +#### 核心和支持 + +SFTP tdeioslave 已经更新,现在使用 libssh,它提供了更安全和稳定的连接。任务栏现在包括移动任务和拖放分组任务按钮,增强了用户体验。 + +这个版本包括了改进的 API 可视化和增强的 Python3 支持。整个版本使用的语言已经更新为性别中立。这些改进提高了整体的用户体验,使 TDE 更具包容性和可及性。 + +除此之外,在核心应用程序方面,TDE R14.0.13 版本包括了几个更新,以提高与流行的多媒体和文件处理库的兼容性。这包括对 ffmpeg 5.0、Jasper 3.x 和 Poppler >= 22.04 的支持。这些更新使 TDE 能够利用这些库的最新功能和性能改进。此外,这个版本包括了几个 TDE 应用程序的手册页,为用户提供了关于如何使用这些程序的更详细的文档和信息。这些改进提高了 TDE 的整体功能和性能。 + +### 下载并安装 Trinity 桌面环境 R14.0.13 + +如果你使用的是 Ubuntu 22.04 LTS Jammy Jellyfish,你可以运行下面的命令将其安装在你现有的 Ubuntu 上: + +``` +sudo gedit /etc/apt/sources.list +``` + +添加以下行并保存文件: + +``` +deb http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-sb jammy deps-r14 main-r14 +deb-src http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-sb jammy deps-r14 main-r14 +``` + +``` +wget http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-keyring.deb +sudo dpkg -i trinity-keyring.deb +sudo apt update +sudo apt install kubuntu-default-settings-trinity kubuntu-desktop-trinity +``` + +安装完成后,重新启动你的系统,在登录界面选择 Trinity。注意:截至发稿时,针对 Ubuntu 22.10 Kinetic Kudu 的仓库还不可用。 + +对于 Arch Linux 用户,你可以通过以下命令安装它。 + +使用管理员权限打开 `/etc/pacman.conf`,在最后添加以下几行并保存好: + +``` +[trinity] +Server = https://mirror.ppa.trinitydesktop.org/trinity/archlinux/$arch +``` + +然后打开一个终端,运行以下内容: + +``` +pacman-key --recv-key D6D6FAA25E9A3E4ECD9FBDBEC93AF1698685AD8B +pacman-key --lsign-key D6D6FAA25E9A3E4ECD9FBDBEC93AF1698685AD8B +``` + +最后,用下面的方法来安装: + +``` +pacman -Sy +``` + +``` +pacman -S td-meta +``` + +对于其他发行版,你可以在 [本页][5] 找到 TDE 的详细下载和安装指南。 + +来自 [发布公告][6]。 + +-------------------------------------------------------------------------------- + +via: https://debugpointnews.com/trinity-desktop-environment-r14-0-13/ + +作者:[arindam][a] +选题:[lkxed][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://debugpointnews.com/author/dpicubegmail-com/ +[b]: https://github.com/lkxed +[1]: https://debugpointnews.com/wp-content/uploads/2022/12/tde-head.jpg +[2]: https://debugpointnews.com/wp-content/uploads/2022/12/Trinity-Desktop-Environment-R14.0.13.jpg +[3]: https://www.debugpoint.com/tde-release-r14-0-12/ +[4]: https://debugpointnews.com/wp-content/uploads/2022/12/twin-style-machbunt-a-KDE-window-decoration-theme-from-SuSE.jpg +[5]: https://wiki.trinitydesktop.org/Category:Documentation#Installing_from_a_Package_Manager +[6]: https://www.trinitydesktop.org/newsentry.php?entry=2022.10.30 diff --git a/published/202212/20221205.3 ⭐️⭐️ Why you should try the Nemo file manager on Linux.md b/published/202212/20221205.3 ⭐️⭐️ Why you should try the Nemo file manager on Linux.md new file mode 100644 index 0000000000..9dfda0adff --- /dev/null +++ b/published/202212/20221205.3 ⭐️⭐️ Why you should try the Nemo file manager on Linux.md @@ -0,0 +1,87 @@ +[#]: subject: "Why you should try the Nemo file manager on Linux" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-nemo" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15340-1.html" + +为什么你要在 Linux 上尝试 Nemo 文件管理器? +====== + +![][0] + +> Nemo 感觉像是更新版的 GNOME 2 文件管理器。我喜欢它,我觉得你也会喜欢它。 + +计算机是一个奇特的文件柜,里面装满了虚拟文件夹和文件,等待着被引用、交叉引用、编辑、更新、保存、复制、移动、重命名和归类。在本文中,我将介绍一下 Linux 系统的文件管理器。 + +[Cinnamon][1] 项目是使用 GNOME 3 的组件重新实现的 GNOME 2。最终,它的差异足以成为一个真正的分叉,如今,Cinnamon 桌面使用 GTK3 库和 GNOME 3 关键应用的分叉版本来创建一个“经典”的 GNOME 体验。对传统的 GNOME 体验做出贡献的组件之一是 Nemo,它是一个基于 GNOME 2 版本的 Nautilus 的文件管理器。 + +### 在 Linux 上安装 Nemo + +Nemo 的源代码 [在线提供][2],但它需要 `cinnamon-desktop` 来构建,所以安装 Nemo 最简单的方法是直接安装 Cinnamon。 + +在 Fedora、Mageia 和类似的系统上: + +``` +$ sudo dnf install cinnamon-desktop +``` + +在 Linux Mint、Debian 和类似系统上: + +``` +$ sudo apt install cinnamon-desktop-environment +``` + +当然,作为该桌面的发源地,Linux Mint 也预装了 Cinnamon。 + +### 一个熟悉的界面 + +如果你已经习惯了 GNOME,无论是过去的还是现在的,那么 Nemo 从一开始就让你有一种回家的感觉。它有一个熟悉的外观和感觉,在类似的地方有按钮和选项,你很可能会认出它们。 + +![Image of Nemo's file manager.][3] + +将视图控制按钮放在右上方的 GNOME 式惯例被保留了下来,你可以使用这些按钮快速地将你的文件视图从大图标切换到详细列表或紧凑视图。那里还有一个搜索功能,以及在可编辑文本和按钮之间切换位置栏的选项。 + +可编辑的 URI 栏有时被低估了。这是一个简单的设计决定,但它可以是一个有助于提高效率的巨大功能。这就像在每个窗口的顶部有一个单行终端,你可以在那里输入你的系统的任何目标位置,并立即被带到那里。而且你甚至不需要输入 `cd`。 + +在左上角,有导航按钮:向上、向前和向后。与许多 Linux 文件管理器一样,你可以用 `Alt` 键加上适当的 `箭头` 键,而放弃使用这些按钮。 + +侧面窗格显示了重要文件夹的列表(主目录、文档、下载等),可以通过点击窗口底部的一个按钮来隐藏或显示。 + +### 熟悉但不一样 + +Nemo 的舒适性和熟悉性并不意味着它只是无意识地模仿 Nautilus。Nemo 有一系列不错的功能,感觉很独特。其中大部分都在 偏好设置Preferences 中,以下是我最喜欢的几个: + +- 窗口标题中显示全路径Full path in window title:这是我最喜欢的功能。不要再怀疑你在文件系统中的位置了。让你的窗口标题告诉你。 +- 单击或双击Single or double click:如果你是一个长期的 [KDE][4] 用户,你可能会发现单次点击打开一个文件是很新鲜的。有了 Nemo,你可以这样选择。 +- 双击来重命名Double-click to rename:如果你使用单击来打开,为什么不重新利用双击来重命名呢? +- 在新窗口中打开每个文件夹Open each folder in a new window:操作系统为每一个打开的文件夹打开一个新的窗口。 +- 插件Plugins:Nemo 有能力调用动作、脚本和扩展。有些已经包括在内,有改变桌面背景、创建启动器和挂载归档的动作。其他的还没有被创建,但这种可扩展性对开源是至关重要的。 + +### 一切近在咫尺 + +在 Linux Mint 上使用 Nemo 几周后,一个有趣的特征让我眼前一亮。似乎 Nemo 可以,或者通过快速配置可以,让我最常使用的所有东西都近在咫尺。许多功能,我承认,我不知道我是否需要,直到 Nemo 让我轻松点击才知道。你可能会说,我是为了满足 Nemo 的设计而改变了我的使用方式,也许情况确实如此。但是,当这种体验是如此令人愉快和有效时,这有什么关系呢? + +Nemo 是一个很好的文件管理器。它让人想起了 GNOME 2 的时代,但其更新和设计选择让人有一种新鲜的感觉。如果你喜欢 [Thunar][5] 或 Nautilus,你会喜欢 Nemo。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-nemo + +作者:[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/article/19/12/cinnamon-linux-desktop +[2]: https://github.com/linuxmint/nemo/releases +[3]: https://opensource.com/sites/default/files/2022-09/nemo.png +[4]: https://opensource.com/article/22/2/why-i-love-linux-kde +[5]: https://opensource.com/article/22/12/linux-file-manager-thunar +[0]: https://img.linux.net.cn/data/attachment/album/202212/12/080234oessb2lsx0s8esri.jpg \ No newline at end of file diff --git a/published/202212/20221206.1 ⭐️ Gnoppix Linux 22.12 is out with GNOME 43, Kernel 6.0, + More.md b/published/202212/20221206.1 ⭐️ Gnoppix Linux 22.12 is out with GNOME 43, Kernel 6.0, + More.md new file mode 100644 index 0000000000..b64c75b7c0 --- /dev/null +++ b/published/202212/20221206.1 ⭐️ Gnoppix Linux 22.12 is out with GNOME 43, Kernel 6.0, + More.md @@ -0,0 +1,81 @@ +[#]: subject: "Gnoppix Linux 22.12 is out with GNOME 43, Kernel 6.0, + More" +[#]: via: "https://debugpointnews.com/gnoppix-22-12-release/" +[#]: author: "arindam https://debugpointnews.com/author/dpicubegmail-com/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15325-1.html" + +Gnoppix Linux 22.12 发布 +====== + +![][1] + +> 基于 Kali Linux 的 Linux 滚动发行版 Gnoppix 22.12 带来了 GNOME 43、Linux 内核 6.0 和新的升级。 + +![Gnoppix 22.12桌面][2] + +作为传统的现场 CD 发行版 Knoppix 项目的继承者,[Gnoppix Linux][3] 是专门为渗透测试和反向工程而设计的。它为网页应用安全和数字权利保护进行了优化。除了对安全的关注,Gnoppix 也可以作为一个普通的桌面操作系统使用。它是一个滚动的版本,经常收到更新和新功能。 + +在其核心部分,它基于 Kali Linux,并采用了 Debian-rolling 的某些部分。与 Kali Linux 的 Xfce 相比,它采用的是 GNOME 桌面。 + +### Gnoppix Linux 22.12 的最新变化 + +目前的主要版本是 Gnoppix 22,它是一个持续的小版本发布,最近其团队发布了 Gnoppix 22.12,有以下更新。 + +首先,内核版本被提升到了 Linux 内核 6.0 ,采用了最新的 [GNOME 43.2 桌面][4]。如果你想把这个发行版作为桌面使用,那么默认的应用程序列表会给你带来一些好消息。 + +Gnoppix 22.12 增加了 GIMP 图像编辑器、Deluge & Transmission、Clapper 音乐播放器和 GNOME 固件更新器。 + +此外,所有的 GNOME 原生软件包都被升级到了 43.2 版本,同时团队开始着手开发 44 版本,该版本将于 2023 年 2 月发布。 + +![GNOME 43.2 工作区视图][5] + +其他关键组件和应用程序包括以下内容: + +- LibreOffice 7.4.2.3 +- Linux 主线内核 6.0.7 +- OpenJDK 11 +- pipewire 0.3.60 +- Firefox ESR 102 +- Python 3.10 + +Gnoppix Linux 还默认增加了几个微软的应用程序。在这个版本中,你可以得到微软 Edge 浏览器 107 和用于会议和通信的微软 Teams 预览版。 + +在完整的变更日志中有一个巨大的软件包更新列表,你可以在 [这里][6] 中找到。 + +### 下载 + +如果你想尝试一下,你可以使用以下链接下载它。 + +> **[下载 Gnoppix 22.12][7]** + +请记住,它是在现场介质中使用的理想选择。然而,你可以很容易地在你的硬件上安装它,并作为 Debian-GNOME-rolling 版本运行。另外,请注意,它需要至少 50GB 的磁盘空间来安装!这是其 Calamares 安装程序的一个硬性要求。 + +此外,Kali Linux 的软件仓库已经被添加到 `/etc/apt/sources.list` 中,来自 Debian-rolling 的软件包基本稳定,所以,它应该是很稳定的。 + +干杯。 + +参考自 [发布公告][6]。 + +-------------------------------------------------------------------------------- + +via: https://debugpointnews.com/gnoppix-22-12-release/ + +作者:[arindam][a] +选题:[lkxed][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://debugpointnews.com/author/dpicubegmail-com/ +[b]: https://github.com/lkxed +[1]: https://debugpointnews.com/wp-content/uploads/2022/12/gnoppix-head1.jpg +[2]: https://debugpointnews.com/wp-content/uploads/2022/12/Gnoppix-22.12-desktop.jpg +[3]: https://www.gnoppix.com/ +[4]: https://debugpointnews.com/gnome-43-release/ +[5]: https://debugpointnews.com/wp-content/uploads/2022/12/GNOME-43.2-workspace-view.jpg +[6]: https://sourceforge.net/p/gnoppixng/releases/general/thread/bc187de53a/#f258 +[7]: https://sourceforge.net/projects/gnoppixng/files/releases/ diff --git a/published/202212/20221207.0 ⭐️ How to Find a Process ID and Kill it in Linux [CLI & GUI].md b/published/202212/20221207.0 ⭐️ How to Find a Process ID and Kill it in Linux [CLI & GUI].md new file mode 100644 index 0000000000..411007a152 --- /dev/null +++ b/published/202212/20221207.0 ⭐️ How to Find a Process ID and Kill it in Linux [CLI & GUI].md @@ -0,0 +1,148 @@ +[#]: subject: "How to Find a Process ID and Kill it in Linux [CLI & GUI]" +[#]: via: "https://www.debugpoint.com/find-process-id-kill-linux/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "yzuowei" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15341-1.html" + +如何在 Linux 中找到一个进程 ID 并杀死它 +====== + +![][0] + +> 一个简单的教学展示,教你如何找到正在运行中的进程 ID 并杀死它,你可以使用终端或者 GUI,这个方法适用于各类 Linux 发行版。 + +你的 Linux 系统中运行的应用可能会让你的电脑变慢,特别是你的电脑配置较低的时候。在 Linux (以及所有其他 OS)中,程序或者应用都携带一个特别的 PID (进程 ID)可供你简单地分辨它们。 + +然而,大部分 Linux 初学者用户并不知道如何在 Linux 中寻找运行中的进程并杀死它。在这篇指南中,我们将会解释用不同的方法以杀死 Linux 中的运行进程。这包括了使用终端和 GUI 的方法。 + +记住,你只应该杀死未响应的进程,或者你发现应用无法被正常关闭 (针对基于 GUI 的应用)。 + +### 如何在 Linux 中找到 PID 并杀掉它们 + +在这一部分中,我们首先应该先学会如何找到运行进程的 PID,然后再学习用以杀掉它们的命令: + +#### 找到正在运行中的进程 + +你可以使用命令 `top` 来列出所有正在进行中的进程和它们的 PID,以及其他细节。程序 `top` 在所有 Linux 发行版和所有基于 Unix 的系统中都是默认安装了的。 + +``` +top +``` + +![Top program output][1] + +同样地,你可以执行命令 `ps` 附带额外选项来获取某个指定的进程的 PID。例如,你可以使用以下命令来获得 `firefox` 的 PID。 + +``` +ps -el | grep -i firefox +``` + +![Firefox process id using ps command - example][2] + +现在你已经找到 PID 了,让我们看看你该如何杀掉它。 + +#### 杀死运行中的进程 + +使用以下命令,你可以通过进程的名字或者 PID 来杀掉这个正在运行中的进程: + +- `killall`:通过运行进程的名字来杀死进程 +- [kill][3]:通过 PID 来杀死进程 + +现在,让我们首先使用进程 `killall` 通过 Firefox 这个名字来杀死它的,命令如下: + +``` +killall -9 firefox +``` + +- 参数 `-9` 发送了信号 `SIGKILL` 通知 OS 来终止这个进程。 +- 使用以下命令,你也可以列出一些别的信号。 + +``` +kill -l +``` + +同样地,如果你想要通过 PID 来杀死进程,你可以用以下命令: + +``` +kill -9 +``` + +在这个例子中,命令会长这样: + +``` +kill -9 33665 +``` + +让我们看看在不同发行版中,你该如何使用图形用户界面(GUI)来杀死任意进程或应用。 + +### 通过 GUI 寻找 PID 并杀掉 + +现在有很多图形界面程序可以枚列进程。大部分 Linux 发行版的桌面环境中已经携带了它们。我们在这里列举出了一些。 + +#### GNOME(在 Ubuntu、Fedora 工作站等) & 在 Linux Mint 中 + +在应用菜单中搜索 “system monitor” 并打开它(LCTT 译注:中文桌面环境也可以搜 “system monitor”,我在 Ubuntu 里试过了)。在 “进程Processes” 标签页下找到你的进程,右击进程名字打开快捷菜单,选择选项 “杀死Kill”。 + +![Kill a process in Linux using gnome system monitor][4] + +#### KDE Plasma(Kubuntu、Fedora-KDE 或任何基于 Plasma 的发行版) + +在应用菜单中搜索并启动 “system monitor”。这会打开以下程序。在左边菜单栏点击“进程Processes” ,你因该能看见一列正在运行的程序。你可以右击列表里的进程或应用并选择“杀死Kill”来终止进程。 + +![System monitor in KDE Plasma][5] + +#### Xfce 桌面 + +Xfce 桌面可以完成这项任务的原生应用是 任务管理器Task Manager,你可以通过 “应用Application > 系统System > 任务管理器Task manager” 来找到它。右击进程名字然后选择“杀死Kill”来终止应用或进程。 + +![Xfce task manager to kill a process][6] + +#### 如何在其他桌面或发行版上杀死一个进程或程序 + +如果你找不到任何相似的程序,你可以选择使用终端的方法。或者,你可以使用以下命令来安装 gnome-system-monitor。 + +Ubuntu 以及相关发行版: + +``` +sudo apt install gnome-system-monitor +``` + +Fedora 以及其相关的发行版: + +``` +sudo dnf install gnome-system-monitor +``` + +还有 Arch Linux: + +``` +sudo pacman -S gnome-system-monitor +``` + +### 总结一下 + +这就是你该如何在 Linux 中找到一个运行中的进程的 PID 并杀死它。我们已经解释了不同的方法:你可以通过名字或者 PID 来杀死进程。我希望这对你有所帮助。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/find-process-id-kill-linux/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[yzuowei](https://github.com/yzuowei) +校对:[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/12/Top-program-output.jpg +[2]: https://www.debugpoint.com/wp-content/uploads/2022/12/Firefox-process-id-using-ps-command-example.jpg +[3]: https://linux.die.net/man/1/kill +[4]: https://www.debugpoint.com/wp-content/uploads/2022/12/Kill-a-process-in-Linux-using-gnome-system-monitor.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2022/12/System-monitor-in-KDE-Plasma.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2022/12/Xfce-task-manager-to-kill-a-process.jpg +[0]: https://img.linux.net.cn/data/attachment/album/202212/12/103939c8tv41t8391v6886.jpg \ No newline at end of file diff --git a/published/202212/20221207.2 ⭐️ How to Access UEFI Settings in Linux Systems.md b/published/202212/20221207.2 ⭐️ How to Access UEFI Settings in Linux Systems.md new file mode 100644 index 0000000000..e1dadbc783 --- /dev/null +++ b/published/202212/20221207.2 ⭐️ How to Access UEFI Settings in Linux Systems.md @@ -0,0 +1,125 @@ +[#]: subject: "How to Access UEFI Settings in Linux Systems" +[#]: via: "https://itsfoss.com/access-uefi-from-linux/" +[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15361-1.html" + +如何在 Linux 系统中访问 UEFI 设置 +====== + +![][0] + +想要在固件级别检查启动顺序或电源设置? **你可以在系统启动时按 `F2`、`F10` 或 `Del` 按键访问 UEFI 设置**。 + +这种方法的问题是你可能不知道确切的键,并且必须警惕在正确的时间按下这些键。 + +![Mr. Bean][1a] + +如果你不想像上面 Gif 中的憨豆先生,你可以从 Linux 中的 [Grub 引导加载器][1] 页面访问 UEFI 设置。 + +![uefi firmware settings grub linux][2] + +当你打开 Linux 系统时,你会看到这个页面。Fedora 和 Ubuntu 等大多数 Linux 发行版都使用 Grub,它们允许你像这样从 Grub 页面访问 UEFI 设置。 + +如果你没有看到此页面,或你的发行版不使用 Grub 怎么办? 仍然有一些方法可以从 Linux 中访问 UEFI 设置。 + +在你了解如何操作之前,请 [确保你的系统使用的是 UEFI][3]。 + +另一件重要的事情。你的系统重启才能进入 UEFI 设置。你无法从操作系统中访问和修改固件设置。 + +### 从 Linux 启动到 UEFI 设置 + +此方法仅适用于具有 systemd 的 Linux 发行版。这意味着这种方法适用于任何基于 Ubuntu、Debian、Fedora 和任何主流的基于 Arch 的发行版,包括 Manjaro 和 EndeavourOS。 + +[确保你的 Linux 发行版使用 systemd][4] 仍然是一个好主意。使用给定的命令,如果它返回 systemd,你就可以开始了: + +``` +ps --no-headers -o comm 1 +``` + +![how to know if i am using systemd on linux?][5] + +当你发现你的发行版正在使用 systemd,你可以使用给定的命令启动到 UEFI 设置: + +``` +systemctl reboot --firmware-setup +``` + +让我首先分解使用的选项: + +- `reboot`:顾名思义,它将重启你的系统。 +- `--firmware-setup`: 当此选项与 `reboot` 一起使用时,它会指示系统固件启动进入固件设置界面。 + +就是这样! 一个命令,你将进入 UEFI 设置。我知道 Windows 允许 [从 Windows 中启动进入 UEFI 固件设置][6]。很高兴在 Linux 中看到类似的东西。 + +#### 创建桌面快捷方式以启动到 UEFI 设置(可选) + +如果你经常发现自己启动进入 UEFI 设置,并且不记得所有命令,你可以通过创建桌面快捷方式让你的生活更轻松。这将使你可以通过单击桌面图标启动到 UEFI。 + +不过,对于大多数 Linux 用户来说,这是不必要的,也不是必需的。只有当你觉得有必要时才去做。该方法需要 [在命令行中编辑文件][7]。 + +首先,使用给定的命令为 UEFI 设置创建桌面快捷方式文件: + +``` +sudo nano /usr/share/applications/uefi-reboot.desktop +``` + +并将以下内容粘贴到文件中: + +``` +[Desktop Entry] +Name=UEFI Firmware Setup (Reboot) +Comment=Access the motherboard configuration utility +Exec=systemctl reboot --firmware-setup +Icon=system-restart +Terminal=false +Type=Application +Categories=System;Settings; +``` + +![create a desktop shortcut to boot into uefi settings][8] + +完成后,[保存更改并退出 nano][9] 文本编辑器。 + +现在,你将在系统菜单中找到 UEFI 固件设置的快捷方式: + +![boot into uefi firmware from system menu][10] + +完成了!一种进入 UEFI 设置的巧妙方法。 + +### 总结 + +访问启动设置的经典方法对某些人来说可能有点不方便。Grub 页面可能不会显示旧版本的 UEFI 选项。 + +这就是 systemd 方法的亮点所在。当我的系统崩溃并且我的功能键没有响应时,我发现这种方法是救命稻草,这是启动到 UEFI 所必需的(我当时就是这么想的!)。 + +我希望你发现它同样有用。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/access-uefi-from-linux/ + +作者:[Sagar Sharma][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/sagar/ +[b]: https://github.com/lkxed +[1a]: https://img.linux.net.cn/data/attachment/album/202212/19/092256nkeoyuou6h3ykud6.gif +[1]: https://itsfoss.com/what-is-grub/ +[2]: https://itsfoss.com/wp-content/uploads/2022/12/uefi-firmware-settings-grub-linux.webp +[3]: https://itsfoss.com/check-uefi-or-bios/ +[4]: https://linuxhandbook.com/check-if-systemd/ +[5]: https://itsfoss.com/wp-content/uploads/2022/12/how-to-know-if-i-am-using-systemd-on-linux.png +[6]: https://itsfoss.com/access-uefi-settings-windows-10/ +[7]: https://learnubuntu.com/edit-files-command-line/ +[8]: https://itsfoss.com/wp-content/uploads/2022/12/create-a-desktop-shortcut-to-boot-into-uefi-settings.png +[9]: https://linuxhandbook.com/nano-save-exit/ +[10]: https://itsfoss.com/wp-content/uploads/2022/12/boot-into-uefi-firmware-from-system-menu.png +[0]: https://img.linux.net.cn/data/attachment/album/202212/19/092450oi0c0c7cp4ng2nem.jpg \ No newline at end of file diff --git a/published/202212/20221207.5 ⭐️ Kali Linux's Last Update for the Year Brings a Lot of Early Christmas Gifts.md b/published/202212/20221207.5 ⭐️ Kali Linux's Last Update for the Year Brings a Lot of Early Christmas Gifts.md new file mode 100644 index 0000000000..d3c3370180 --- /dev/null +++ b/published/202212/20221207.5 ⭐️ Kali Linux's Last Update for the Year Brings a Lot of Early Christmas Gifts.md @@ -0,0 +1,134 @@ +[#]: subject: "Kali Linux's Last Update for the Year Brings a Lot of Early Christmas Gifts" +[#]: via: "https://news.itsfoss.com/kali-linux-2022-4-release/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15330-1.html" + +Kali Linux 发布今年最后一个版本 +====== + +> Kali Linux 2022.4 现在已经可以下载了。从这里了解它的新内容。 + +![Kali Linux 今年的最后一次更新早早带来了很多圣诞礼物][1] + +Kali Linux 是一个开源的、基于 Debian 的发行版,专注于渗透测试和安全审计。 + +它由各种工具、配置和自动化脚本组成,以帮助你实现这一目标。 + +作为今年的最后一个版本,**Kali Linux 2022.4** 与其 [前一个版本][2] 相比有许多改进。 + +让我带你了解这个版本。 + +### 🆕 有什么新变化? + +![kali linux 22.04][3] + +Kali Linux 2022.4 以更新的形式早早带来了圣诞礼物;这里有一些快乐的东西!🎄 + +- Linux 内核 6.0 +- 返回微软 Azure 市场 +- 支持 Pine 64 的 PinePhone +- 新的桌面环境 +- QEMU 镜像 +- 新的工具 + +#### 支持 Pine 64 的 PinePhone + +![kali linux nethunter pro on pinephone pro][4] + +Kali Linux 现在已经正式支持 Pine 64 的 PinePhone 和 PinePhone Pro。 + +这种支持是以一种新的以移动为重点的发行版的形式出现的,名为 “Kali NetHunter Pro”。 + +他们把它标记为 Kali Linux 和 [NetHunter][5] 的一个新的起点;这个发行版已经为移动设备进行了优化,可以从 SD 卡上与主操作系统一起双启动。 + +此外,他们还暗示未来将发布 Kali NetHunter Pro 的替代版本。 + +这些版本将以 Plasma Mobile 为特色,同时提供了新的安装程序,可以将 Kali NetHunter Pro 安装到设备的内部闪存中。 + +#### 返回微软 Azure 市场 + +![kali linux 22.04 Azure Marketplace][6] + +在离开 Azure 市场很长时间后,Kali Linux 终于被 [添加回来][7] 了。 + +Kali Linux 背后的公司 [Offensive Security][8] 提到,借助 [kali-cloud build-scripts][9],现在发布过程已经自动化了。 + +用户现在将享受与他们的 [亚马逊 AWS 镜像][10] 相同的一致性水平。 + +#### 新的桌面环境 + +![kali linux 22.04 with gnome 43][11] + +通常情况下,Kali Linux 使用轻量级的 Xfce 桌面环境作为其默认的桌面环境。 + +但现在,它也支持最近的 KDE Plasma 和 GNOME。 + +**在 Plasma 方面:** Kali Linux 现在采用了 KDE Plasma 5.26;改善了整体的桌面体验,并引入了许多调整和改进。 + +**在 GNOME 方面:** 包括了 [GNOME 43][12] 的常规增强,他们也增加了一些自己的调整。 + +在 [adw-gtk3][13] 项目的基础上增加了一个新的基于 GTK3 的主题,并加入了一些 Kali 的调整。 + +然后,新的 GNOME 文本编辑器取代了 Gedit,并带有一个更新的 Kali 主题。 + +#### QEMU 镜像 + +他们还在预生成的镜像库中增加了一个新的 [QEMU 镜像][14],希望它能让人们更容易在 [Proxmox Virtual Environments][15]、[virt-manager][16] 或 [libvirt][17] 等自托管环境中部署 Kali Linux。 + +#### 🛠️ 其他变化/改进措施 + +除了上述变化,还有其他几个值得注意的变化: + +- 增强了对 Kali NetHunter 的蓝牙支持。 +- 增加了 Kali 对树莓派镜像烧录工具的支持。 +- USBArmory MKII 中的 u-boot 引导加载器已经更新到 2022.10。 +- 更新了各种 Kali 文档。 +- 新的工具,如 bloodhound.py、certipy、rizin-cutter 等等。 +- 重新打造了 Kali Linux 的社交媒体渠道。 + +你可以通过 [发布公告][18] 来了解更多技术细节。 + +### 📥 下载 Kali Linux 2022.4 + +Kali Linux 2022.4 已经在 [官方网站][19] 上提供了。 + +> **[Kali Linux 2022.4][19]** + +你可以选择适合你的要求的镜像并下载它。 + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/kali-linux-2022-4-release/ + +作者:[Sourav Rudra][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/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/kali-linux-2022-04-release.jpg +[2]: https://news.itsfoss.com/kali-linux-2022-3-release/ +[3]: https://news.itsfoss.com/content/images/2022/12/Kali-Linux-2022.4.png +[4]: https://news.itsfoss.com/content/images/2022/12/Kali-Linux-2022.4_NetHunter_Pro.jpg +[5]: https://www.kali.org/docs/nethunter/ +[6]: https://news.itsfoss.com/content/images/2022/12/Kali-Linux-2022.4_Azure.jpg +[7]: https://azuremarketplace.microsoft.com/en/marketplace/apps/kali-linux.kali +[8]: https://www.offensive-security.com +[9]: https://gitlab.com/kalilinux/build-scripts/kali-cloud +[10]: https://aws.amazon.com/marketplace/pp/prodview-fznsw3f7mq7to +[11]: https://news.itsfoss.com/content/images/2022/12/Kali-Linux-2022.4_GNOME43.jpg +[12]: https://news.itsfoss.com/gnome-43-release/ +[13]: https://github.com/lassekongo83/adw-gtk3 +[14]: https://qemu-project.gitlab.io/qemu/system/images.html +[15]: https://www.proxmox.com/en/proxmox-ve +[16]: https://virt-manager.org +[17]: https://libvirt.org +[18]: https://www.kali.org/blog/kali-linux-2022-4-release/#desktop-updates +[19]: https://www.kali.org/get-kali/ diff --git a/published/202212/20221208.1 ⭐️ Convert and Manipulate Images With ‘Converter’ GUI Tool in Linux.md b/published/202212/20221208.1 ⭐️ Convert and Manipulate Images With ‘Converter’ GUI Tool in Linux.md new file mode 100644 index 0000000000..eab96f22e5 --- /dev/null +++ b/published/202212/20221208.1 ⭐️ Convert and Manipulate Images With ‘Converter’ GUI Tool in Linux.md @@ -0,0 +1,88 @@ +[#]: subject: "Convert and Manipulate Images With ‘Converter’ GUI Tool in Linux" +[#]: via: "https://itsfoss.com/converter-tool/" +[#]: author: "Ankush Das https://itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15368-1.html" + +在 Linux 中使用 “Converter” GUI 工具转换和操作图像 +====== + +![][0] + +你可以随时在你的系统上 [安装 ImageMagick][1] 来转换图像,但并不是每个人都喜欢使用终端来转换和操作图像。 + +那么,如果你有一个 GUI 应用作为前端来帮助解决这个问题呢? **Converter** 就是这样的工具。 + +它是 ImageMagick 的前端。所以你不需要使用命令来转换和操作图像。 + +请注意,大多数 Ubuntu 系统通常都预装了 ImageMagick。如果你的系统上还没有安装,你可以随时参考我们的 [安装指南][1]。 + +### Converter:ImageMagick 的图形前端 + +![converter gui][2] + +转换图像不应该花费很多精力。这是一项简单的任务,而且应该如此。 + +我不想键入命令来快速转换图像。因此,我更喜欢使我能够更快地做事的图形工具。 + +[Converter][3] 是一个开源图形前端,可以让你做到这点。它是一个 GTK4 + libadwaita 应用。 + +你可以将图像转换为各种文件格式,包括 png、webp、jpeg、heif、heic 和 bmp。可以肯定地说,你获得了对最流行的图像文件格式的支持。所以,它应该会派上用场。 + +![file format converter][4] + +你可以设置一个位置来保存所有文件,转换后的图像将自动存储在该位置。 + +![customize converter][5] + +你还可以调整图像的质量、大小和背景颜色。要访问这些选项,请在转换图像之前单击用户界面中的“更多选项More Options”。 + +![converter more options][6] + +可以使用百分比、精确像素或比率自定义图像大小。对于精确操作,更改尺寸可能更有用。如果你希望图像缩放到一定程度,百分比或比例功能应该可以帮助你做到这一点。你还可以选择为图像添加滤镜。 + +总体而言,你可以获得使用 Converter 调整大小、转换和优化图像质量的基本功能。 + +你还可以 [调整 Nautilus][7] 以获得 [右键单击上下文菜单中的调整大小选项][8]。但它不像这个工具那样通用。 + +### 在 Linux 上安装 Converter + +Converter 在 [Flathub][9] 上以 Flatpak 的形式提供,可以安装在你选择的任何 Linux 发行版上。 + +遗憾的是,你无法在 Linux 系统上安装任何二进制包。因此,你可能需要参考我们的 [Flatpak 指南][10] 来安装它。 + +``` +flatpak install flathub io.gitlab.adhami3310.Converter +``` + +你可以在其 [GitLab 页面][3] 上探索更多相关信息。 + +_你对我们接下来要重点介绍的此类有趣工具有什么建议吗? 让我们在评论中知道。_ + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/converter-tool/ + +作者:[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/install-imagemagick-ubuntu/ +[2]: https://itsfoss.com/wp-content/uploads/2022/12/converter-gui.png +[3]: https://gitlab.com/adhami3310/Converter +[4]: https://itsfoss.com/wp-content/uploads/2022/12/file-format-converter.png +[5]: https://itsfoss.com/wp-content/uploads/2022/12/customize-converter.png +[6]: https://itsfoss.com/wp-content/uploads/2022/12/converter-more-options.png +[7]: https://itsfoss.com/nautilus-tips-tweaks/ +[8]: https://itsfoss.com/resize-images-with-right-click/ +[9]: https://flathub.org/apps/details/io.gitlab.adhami3310.Converter +[10]: https://itsfoss.com/flatpak-guide/ +[0]: https://img.linux.net.cn/data/attachment/album/202212/21/161705qzvydyyd8v8y3cyh.jpg \ No newline at end of file diff --git a/published/202212/20221208.2 ⭐️⭐️ 7 pro tips for using the GDB step command.md b/published/202212/20221208.2 ⭐️⭐️ 7 pro tips for using the GDB step command.md new file mode 100644 index 0000000000..d864f7db50 --- /dev/null +++ b/published/202212/20221208.2 ⭐️⭐️ 7 pro tips for using the GDB step command.md @@ -0,0 +1,262 @@ +[#]: subject: "7 pro tips for using the GDB step command" +[#]: via: "https://opensource.com/article/22/12/gdb-step-command" +[#]: author: "Alexandra https://opensource.com/users/ahajkova" +[#]: collector: "lkxed" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15362-1.html" + +GDB 的 7 个单步调试命令 +====== + +![][0] + +> 即使是复杂的函数,也有几种方法可以单步调试,所以下次在排除代码故障时,可以尝试一下这些 GDB 技术。 + +**调试器** 是一个可以运行你的代码并检查问题的软件。[GNU Debugger][1](GBD)是最流行的调试器之一,在这篇文章中,我研究了 GDB 的 `step` 命令和其他几种常见情况的相关命令。`step` 是一个被广泛使用的命令,但它有一些人们不太了解的地方,可能会使得他们十分困惑。此外,还有一些方法可以**在不使用 `step` 命令的情况下进入一个函数**,比如使用不太知名的 `advance` 命令。 + +### 1、无调试符号 + +考虑以下这个简单的示例程序: + +``` +#include + + +int num() { + return 2; +} + +void bar(int i) { + printf("i = %d\n", i); +} + + +int main() { + bar(num()); + return 0; +} +``` + +如果你在没有 调试符号 debugging sysbols 的情况下进行编译(LCTT 译注:即在使用 `gcc` 编译程序时没有写 `-g` 选项),然后在 `bar` 上设置一个断点,然后尝试在这个函数内使用 `step` 来单步执行语句。GDB 会给出一个 没有行号信息 no line number information 的错误信息。 + +``` +gcc exmp.c -o exmp +gdb ./exmp +(gdb) b bar +Breakpoint 1 at 0x401135 +(gdb) r +Starting program: /home/ahajkova/exmp +Breakpoint 1, 0x0000000000401135 in bar () +(gdb) step +Single stepping until exit from function bar, +which has no line number information. +i = 2 +0x0000000000401168 in main () +``` + +### 2、stepi 命令 + +但是你仍然可以在没有行号信息的函数内部单步执行语句,但要使用 `stepi` 命令来代替 `step`。`stepi` 一次只执行一条指令。当使用 GDB 的 `stepi` 命令时,先做 `display/i $pc` 通常很有用,这会在每一步之后**显示** 程序计数器 program counter 的值和**相应的** 机器指令 machine instruction : + +``` +(gdb) b bar +Breakpoint 1 at 0x401135 +(gdb) r +Starting program: /home/ahajkova/exmp +Breakpoint 1, 0x0000000000401135 in bar () +(gdb) display/i $pc +1: x/i $pc +=> 0x401135 : sub $0x10,%rsp +``` + +在上述的 `display` 命令中,`i` 代表机器指令,`$pc` 表示程序计数器寄存器(即 PC 寄存器)。 + +使用 `info registers` 命令,来**打印寄存器的内容**,也是十分有用的。 + +``` +(gdb) info registers +rax 0x2 2 +rbx 0x7fffffffdbc8 140737488346056 +rcx 0x403e18 4210200 +(gdb) print $rax +$1 = 2 +(gdb) stepi +0x0000000000401139 in bar () +1: x/i $pc +=> 0x401139 : mov %edi,-0x4(%rbp) +``` + +### 3、复杂的函数调用 + +在带调试符号的 `-g` 选项,重新编译示例程序后,你可以使用行号在 `main` 中 `bar` 调用上设置断点,然后再单步执行 `bar` 函数的语句: + +``` +gcc -g exmp.c -o exmp +gdb ./exmp +(gdb) b exmp.c:14 +Breakpoint 1 at 0x401157: file exmp.c, line 14. +(gdb) r +Starting program: /home/ahajkova/exmp +Breakpoint 1, main () at exmp.c:14 +14 bar(num()); +``` + +接下来,用 `step`,来单步执行 `bar()` 函数的语句: + +``` +(gdb) step +num () at exmp.c:4 +4 return 2; +``` + +函数调用的参数需要在实际的函数调用之前进行处理,`bar()` 函数的参数是 `num()` 函数,所以 `num()` 会在 `bar()` 被调用之前执行。但是,通过 GDB 调试,你怎么才能如愿以偿地进入 `bar()` 函数呢?你可以使用 `finish` 命令,并再次使用 `step` 命令。 + +``` +(gdb) finish +Run till exit from #0 num () at exmp.c:4 +0x0000000000401161 in main () at exmp.c:14 +14 bar(num()); +Value returned is $1 = 2 +(gdb) step +bar (i=2) at exmp.c:9 +9 printf("i = %d\n", i); +``` + +### 4、tbreak 命令 + +`tbreak` 命令会设置一个**临时断点**。如果你不想设置永久断点,那么这个命令是很有用的。举个例子🌰,你想进入一个复杂的函数调用,例如 `f(g(h()), i(j()), ...)`,在这种情况下,你需要一个很长的 `step/finish/step` 序列,才能到达 `f` 函数。如果你设置一个临时断点,然后再使用 `continue` 命令,这样就不需要以上的序列了。为了证明这一点,你需要像以前一样将断点设置在 `main` 的 `bar` 调用上。然后在 `bar` 上设置临时断点。当到达该临时断点后,临时断点会被自动删除。 + +``` +(gdb) r +Starting program: /home/ahajkova/exmp +Breakpoint 1, main () at exmp.c:14 +14 bar(num()); +(gdb) tbreak bar +Temporary breakpoint 2 at 0x40113c: file exmp.c, line 9. +``` + +在调用 `bar` 的时候遇到断点,并在 `bar` 上设置临时断点后,你只需要使用 `continue` 继续运行直到 `bar` 结束。 + +``` +(gdb) continue +Continuing. +Temporary breakpoint 2, bar (i=2) at exmp.c:9 +9 printf("i = %d\n", i); +``` + +### 5、disable 命令 + +类似地,你也可以在 `bar` 上设置一个正常的断点,然后执行 `continue`,然后在不再需要第二个断点时,使用 `disable` 命令禁用这个断点,这样也能达到与 `tbreak` 相同的效果。 + +``` +(gdb) b exmp.c:14 +Breakpoint 1 at 0x401157: file exmp.c, line 14. +(gdb) r +Starting program: /home/ahajkova/exmp +Breakpoint 1, main () at exmp.c:14 +14 bar(num()); +(gdb) b bar +Breakpoint 2 at 0x40113c: file exmp.c, line 9. +(gdb) c +Continuing. +Breakpoint 2, bar (i=2) at exmp.c:9 +9 printf("i = %d\n", i); +(gdb) disable 2 +``` + +正如你所看到的,`info breakpoints` 命令在 `Enb` 列下显示为 `n`,这意味着这个断点已被禁用。但你也能在再次需要这个断点时,再启用它。 + +``` +(gdb) info breakpoints +Num Type Disp Enb Address What +1 breakpoint keep y 0x0000000000401157 in main at exmp.c:14 +breakpoint already hit 1 time +2 breakpoint keep n 0x000000000040113c in bar at exmp.c:9 +breakpoint already hit 1 time +(gdb) enable 2 +(gdb) info breakpoints +Num Type Disp Enb Address What +1 breakpoint keep y 0x000000000040116a in main at exmp.c:19 +breakpoint already hit 1 time +2 breakpoint keep y 0x0000000000401158 in bar at exmp.c:14 +breakpoint already hit 1 time +``` + +### 6、advance 命令运行程序到指定的位置 + +另一个进入函数内部的方法是 `advance` 命令。你可以简单地用 `advance bar`,来代替 `tbreak bar ; continue`。这一命令会将程序继续运行到指定的位置。 + +`advance` 命令的一个很棒的地方在于:如果程序并没有到达你试图进入的位置,那么 GDB 将在当前函数运行完成后停止。因此,程序的执行会受到限制: + +``` +Breakpoint 1 at 0x401157: file exmp.c, line 14. +(gdb) r +Starting program: /home/ahajkova/exmp +Breakpoint 1, main () at exmp.c:14 +14 bar(num()); +(gdb) advance bar +bar (i=2) at exmp.c:9 +9 printf("i = %d\n", i); +``` + +### 7、skip 命令 + +进入 `bar` 函数的另一种方式是使用 `skip num` 命令: + +``` +(gdb) b exmp.c:14 +Breakpoint 1 at 0x401157: file exmp.c, line 14. +(gdb) skip num +Function num will be skipped when stepping. +(gdb) r +Starting program: /home/ahajkova/exmp +Breakpoint 1, main () at exmp.c:14 +14 bar(num()); +(gdb) step +bar (i=2) at exmp.c:9 +9 printf("i = %d\n", i); +``` + +请使用 `info skip` 命令,来了解 GDB 跳过了哪些函数。`num()` 函数被标记为 `y`,表示跳过了 `num()` 函数: + +``` +(gdb) info skip +Num Enb Glob File RE Function +1 y n n num +``` + +如果不再需要 `skip`,可以禁用(并稍后重新启用)或完全删除它。你可以添加另一个 `skip`,并禁用第一个 `skip`,然后全部删除。要禁用某个 `skip`,必须指定其编号(例如,`skip disable 1`),如果没有指定,则会禁用所有的 `skip`。启用或删除 `skip` 的工作原理相同: + +``` +(gdb) skip bar +(gdb) skip disable 1 +(gdb) info skip +Num Enb Glob File RE Function +1 n n n num +2 y n n bar +(gdb) skip delete +(gdb) info skip +Not skipping any files or functions. +``` + +### GDB 的 step 命令 + +使用 GDB 的 `step` 命令是调试程序的一个有用工具。即使是复杂的函数,也有几种方法可以单步调试这些函数,所以下次你在排除代码问题的时候,可以尝试一下这些 GDB 技术。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/gdb-step-command + +作者:[Alexandra][a] +选题:[lkxed][b] +译者:[chai001125](https://github.com/chai001125) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/ahajkova +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/21/3/debug-code-gdb +[0]: https://img.linux.net.cn/data/attachment/album/202212/19/093831nrjrmozx1mixmgii.jpg \ No newline at end of file diff --git a/published/202212/20221209.0 ⭐️⭐️ Install open source solar power at home.md b/published/202212/20221209.0 ⭐️⭐️ Install open source solar power at home.md new file mode 100644 index 0000000000..6a2cd140e4 --- /dev/null +++ b/published/202212/20221209.0 ⭐️⭐️ Install open source solar power at home.md @@ -0,0 +1,64 @@ +[#]: subject: "Install open source solar power at home" +[#]: via: "https://opensource.com/article/22/12/open-source-solar-power-home" +[#]: author: "Joshua Pearce https://opensource.com/users/joshuapearce" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15374-1.html" + +在家里安装开源光伏支架 +====== + +![][0] + +> 看看这两个你可以为你的家庭建造的开源的光伏支架设计。 + +你可能已经考虑过用太阳能为你的家供电。将太阳光直接转化为电能的太阳能光伏电池板的成本已大幅下降,因此在任何地方都具有经济意义。这就是为什么大公司投入大量太阳能,甚至电力公司也开始安装大型太阳能发电场的原因,因为它的成本低于过时的化石燃料。像大多数房主一样,你想省钱并节省电费,但你可能对前期费用有点畏缩。为了大致了解成本,一个 5 千瓦系统,以 3 美元/瓦的价格为普通家庭供电,成本约为 15,000 美元,而更大的家庭可能需要 10 千瓦才能满足所有电力购买,成本为 30,000 美元。如果你想要电池,成本加倍(你不需要电池,因为大多数太阳能电池阵列连接到电网,但如果电网瘫痪,你的太阳能电池阵列也会瘫痪,直到它重新开启)。支付你未来几十年所有的电费是一种投资,即使你存了很多钱。 + +有一些好消息。首先,美国和加拿大都对太阳能实行了 30% 的税收抵免。此项优惠将价格降至约 2 美元/瓦。其次,[我们之前讨论][1] 过你可以获得一本免费书籍 《[捕捉阳光][2]》,它会引导你完成如何设计自己的系统(你仍然需要一个合格的电工和检查来把它连接到电网)。如果你有一点手艺,你可以将剩余成本削减约 50%。这些成本主要用于材料,包括太阳能电池板、布线、电子设备和支架。令人惊讶的是,对于小型太阳能系统(比如你家的太阳能系统)来说,太阳能电池板的成本下降得如此之低,以至于支架(支撑太阳能电池板的机械结构)的成本可能比面板还高! + +### 开源再次拯救 + +将开源开发范式应用于软件可以加快创新速度、改进产品并降低成本。开源硬件也是如此,甚至在光伏支架这个相对不为人知的领域也是如此。几乎所有的商业光伏支架都是由专有的奇特铝型材制成。它们会花很多钱。如果你有一些没有遮挡的后院,有一些开源的支架解决方案可以选择。 + +### 开源太阳能支架设计 + +第一个 DIY 太阳能支架设计符合以下标准:(1) 由当地可获得的可再生材料制成,(2) 25 年的使用寿命与太阳能保修相匹配,(3)能够由普通消费者制造,(4)能够符合加拿大结构建筑规范(如果你住在没有雪的地方,这有点矫枉过正,但是,嘿,你可能有其他极端天气需要应对,例如飓风),(5)低成本,(6)它是共享的,使用开源许可证。[开源的木质固定倾斜地面安装双面光伏支架设计][3] 在整个北美都适用。与商业专有支架相比,该支架系统可节省 49% 至 77%。然而,支架设计高度依赖于世界各地不同的木材成本。 + +在深入研究这个开源设计之前,请检查你当地的木材成本。 + +![Non-tilting solar rack plans][4] + +如果你更喜欢冒险,你可能会考虑第二种允许改变倾斜角度的设计。[第二项研究][5] 的结果表明,具有最佳可变季节性倾斜角的支架系统具有最佳的终身能量产生,与固定倾斜系统相比,产生的能量多 5.2%(或者,如果最大倾斜角限制为 60°,能量多 4.8%)。固定和可变木制支架系统的电力成本相似,仅为专有商业金属货架的 29%。可变倾斜支架提供了最低成本的选择,即使包括适度的劳动力成本,也可能为 [农业光伏][6] 等应用提供特定优势(即,你可以在面板下面种菜,对于莴苣等耐阴作物来说,能惊人地增加产量)。此设计已通过 [具有 CERN-OHL-S-2.0 许可证的 OSHWA][7] 的认证。 + +![Tilt-adjustable solar racks][8] + +所示的 2 个光伏模块架中的每一个大约有 1 千瓦。所以一所房子大约需要五个。这两篇论文都提供了完整的计算和分步建造说明。 + +正如拥有太阳能系统的任何人都会告诉你的那样,获得负电费是非常有益的。如果你的系统规模能满足你所有的负荷,并且住在该国的净计量地区,就会出现这种情况。请注意,电力公司不会向你付款;额度会一直延续到你在冬天使用它为止。 + +享受一点开源太阳能带来的乐趣! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/open-source-solar-power-home + +作者:[Joshua Pearce][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/joshuapearce +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/21/11/open-source-solar-power +[2]: https://tocatchthesun.com/ +[3]: https://doi.org/10.3390/designs6030041 +[4]: https://opensource.com/sites/default/files/2022-11/nontilt.png +[5]: https://doi.org/10.3390/designs6030054 +[6]: https://www.academia.edu/18406368/The_potential_of_agrivoltaic_systems +[7]: https://certification.oshwa.org/ca000013.html +[8]: https://opensource.com/sites/default/files/2022-11/tilt.png +[0]: https://img.linux.net.cn/data/attachment/album/202212/23/094653pn7mn3j22ymwymuw.jpg \ No newline at end of file diff --git a/published/202212/20221209.2 ⭐️⭐️ Tea Raises $8.9M to Introduce a New Protocol Helping Open-Source Developers Get Paid.md b/published/202212/20221209.2 ⭐️⭐️ Tea Raises $8.9M to Introduce a New Protocol Helping Open-Source Developers Get Paid.md new file mode 100644 index 0000000000..8969498a72 --- /dev/null +++ b/published/202212/20221209.2 ⭐️⭐️ Tea Raises $8.9M to Introduce a New Protocol Helping Open-Source Developers Get Paid.md @@ -0,0 +1,94 @@ +[#]: subject: "Tea Raises $8.9M to Introduce a New Protocol Helping Open-Source Developers Get Paid" +[#]: via: "https://news.itsfoss.com/tea-open-source-new-protocol/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15338-1.html" + +Tea 筹集了 890 万美元,推出了一个帮助开源开发者获得报酬的新协议 +====== + +> 这是一种帮助开源开发者获得报酬的令人兴奋的方式。 + +![Tea 筹集了 890 万美元,推出了一个帮助开源开发者获得报酬的新协议][1] + +[Tea][2] 是一个开源的统一软件包管理器,被全球许多开发者使用。 + +顺便说一句,Tea 是 Homebrew 的创建者的一个新项目。 + +在最近的一份公告中,他们宣布已经筹集了 890 万美元的种子资金,并计划推出一个新的 [Web3 协议][3],帮助开源开发者为他们的工作获得报酬。 + +我是通过 [TechCrunch][4] 上发表的一篇文章看到的,他们对 Tea 的创始人进行了访谈。 + +让我们来看看 Tea 的发展情况。 + +### Tea 提出的一项新协议 + +#### 它是什么? + +**简而言之:** 该协议将帮助软件包维护者获得不可伪造的代币(NFT),作为他们对带有 Tea 支持的开源项目的贡献的奖励。 + +展开来说就是,这是一个 Web3 协议,将帮助软件包维护者以不可伪造的通证(NFT)的形式获得报酬。 + +当维护者完成了一个软件包的提交,他们将收到一个不可伪造的通证(NFT),可以作为他们工作和贡献的证据。 + +现有的维护者也将能够通过将软件包的 NFT 转让给其他开发者来转移软件包的维护所有权。 + +> 这些 NFT 是 Tea 计划奖励其用户的核心。 + +实施这一点还将涉及被称为“包支持者”和“赞助者”的实体。 + +这些人包括组织、软件包用户、慈善家和企业家,他们使用开源软件来构建商业产品,并希望支持这样一个生态系统。 + +他们还提到: + +> 为了提供最广泛的覆盖面,我们认为奖励不能依靠跟踪安装或卸载这样简单的概念,而是要依靠激励机制,鼓励提交高质量的软件包和报告邪恶或高风险的软件包。 + +到目前为止,Tea 只发布了他们所说的 “同类 CLI(命令行界面)工具应具备的基本功能”。 + +到目前为止,还没有提到这个新协议的具体发布日期,他们对这个协议发布的最佳估计是“2023 年的某个时候”。 + +他们补充说: + +> 就像等到 11 月才发布我们的 CLI一样,我们会在了解它应该如何最好地构建并在内部经历了试验和错误之后才发布。 +> +> 我们要慢慢来,确保这个工具本身对开发者非常有用和有价值。 + +### 它有什么帮助? + +**根据 Tea 公司的说法:** 这应该有助于他们为所有开源软件创建一个开放、公开和稳定的注册中心。 + +反过来,鼓励项目独立发布版本,而不是依赖第三方,因为第三方会不可预测地收集他们的数据,导致大量的分立和经常重复的系统。 + +以下是他们对该协议的目标的描述: + +> Tea 的目标是通过 Tea 通证的独特用例来实现去中心化的激励机制,让 Tea 社区的任何成员为开源的永久可持续性和持续增长作出贡献。 +> +> 包的支持者和赞助者可以根据他们的工作、信仰或任何影响他们决定的标准和尺度,自由决定他们要支持哪些包或包维护者。 + +**在我看来:** 这是一个令人兴奋的方法,可以奖励那些经常被忽视的开源贡献者,即使他们为各种开源项目贡献了很多。 + +然而,考虑到 NFT 在最近一段时间获得了很多批评。这可能会或可能不会有好的结果。 + +如果你想了解更多,你可以深入研究它的官方 [白皮书][5] 上的协议。 + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/tea-open-source-new-protocol/ + +作者:[Sourav Rudra][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/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/cli-raise-funds-new-api-help-opensource-dev.png +[2]: https://tea.xyz +[3]: https://web3.foundation/about/ +[4]: https://techcrunch.com/2022/12/06/from-the-creator-of-homebrew-tea-raises-8-9m-to-build-a-protocol-that-helps-open-source-developers-get-paid/ +[5]: https://tea.xyz/tea.white-paper.pdf diff --git a/published/202212/20221211.0 ⭐️ Simplify your Linux PC with the PCManFM file manager.md b/published/202212/20221211.0 ⭐️ Simplify your Linux PC with the PCManFM file manager.md new file mode 100644 index 0000000000..1c0ce3b0b9 --- /dev/null +++ b/published/202212/20221211.0 ⭐️ Simplify your Linux PC with the PCManFM file manager.md @@ -0,0 +1,83 @@ +[#]: subject: "Simplify your Linux PC with the PCManFM file manager" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-pcmanfm" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15378-1.html" + +使用 PCManFM 文件管理器让你的 Linux PC 轻装上阵 +====== + +![][0] + +> PCMan 文件管理器是一个让旧电脑感觉更有效率的好选择。 + +PCMan 文件管理器,或简称 PCManFM,是一个功能齐全的快速轻量级文件管理器。它是为 [LXDE][1] 桌面环境开发的,但它是一个独立的应用,可以与你选择的桌面或窗口管理器一起使用。 + +### 安装 PCManFM + +在 Linux 上,你可能可以在软件仓库中找到 PCManFM。例如,在 Fedora、Mageia 和类似软件上: + +``` +$ sudo dnf install pcmanfm +``` + +在 Debian、Elementary 和类似系统上: + +``` +$ sudo apt install pcmanfm +``` + +![Image of the PCMan file manager.][2] + +不必用 PCManFM 替换你的桌面文件管理器,但某些发行版认为当你安装“第三方”文件管理器时,你会希望它优先于默认的文件管理器。根据你使用的桌面,有不同的方法来设置默认文件管理器。通常,它位于 系统设置System Settings 下的 默认应用Default Applications 中。 + +如果你的桌面环境或窗口管理器没有选择默认应用的界面,你可以在 `~/.local/share/applications/mimeapps.list` 文件中设置你的首选项。要将一个文件管理器指定为默认的,请将其放在 `[Default Applications]` 部分的顶部,首先指定文件类型,然后指定你想用于打开的应用文件的名称(在 `/usr/share/applications` 下): + +``` +inode/directory=myfilemanager.desktop; +``` + +### PCManFM + +如果你是 GNOME 2 或 Mate 项目的 [Caja 文件管理器][3] 的粉丝,那么 PCManFM 是一个不错的选择。PCManFM 在设计上很像 Caja,但它不像 Caja 那样绑定到桌面,所以它甚至可以在最新的 GNOME 桌面上使用。 + +PCManFM 的默认布局在窗口顶部附近有一个有用的工具栏,一个提供对常用目录和驱动器的快速访问的侧面板,以及一个包含有关你当前选择的详细信息的状态栏。你可以使用 视图View 菜单隐藏或显示这些元素中的任何一个。 + +### 选项卡和面板 + +PCManFM 也使用选项卡。如果你以前从未使用过选项卡式文件管理器,那么想想 Web 浏览器以及它如何使用选项卡让你在一个窗口中打开多个网页。PCManFM 可以类似地在同一窗口中打开多个目录。 + +要将文件或文件夹从一个选项卡传输到另一个选项卡,只需将文件的图标拖动到选项卡并悬停即可。少许延迟后,PCManFM 将目标选项卡置于最前面,以便你可以继续进行拖放操作。如果你不习惯与文件管理器中的选项卡进行交互,则需要一些时间来适应,但这不会花很长时间,而且它是整理工作区的一项非常强大的功能。 + +PCManFM 界面的另一个不错的功能是它能够将一个窗口分成两个面板。每个面板实际上都是一个选项卡,但每个面板只占窗口的一半。 + +![Image of dual panels in PCMan.png][4] + +这使得从一个面板拖到另一个面板就像将文件拖到文件夹中一样简单自然。我发现它对于比较文件夹的内容也很有用。 + +### 使用 PCMan 进行文件管理 + +PCManFM 是一款很棒的小型文件管理器,具有你日常所需的所有基本功能。它是你可能会觉得过于复杂的文件管理器的自然替代品,也是 [老旧计算机][5] 上的一个很好的选择,这些电脑可能对不断绘制缩略图、刷新和生成动画的文件管理器举步维艰。PCMan 专注于文件管理器的核心任务:管理文件。在你的 Linux 电脑上试试吧。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-pcmanfm + +作者:[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/article/19/12/lxqt-lxde-linux-desktop +[2]: https://opensource.com/sites/default/files/2022-10/pcmanfilemanager.png +[3]: https://opensource.com/article/22/12/linux-file-manager-caja +[4]: https://opensource.com/sites/default/files/2022-10/%E2%80%8BDual.panel_.in%20PCManFM.png +[5]: https://opensource.com/article/22/10/obsolete-computer-linux-opportunity +[0]: https://img.linux.net.cn/data/attachment/album/202212/24/161333mssnim76ssugskie.jpg \ No newline at end of file diff --git a/published/202212/20221212.0 ⭐️⭐️ Linux Kernel 6.1 Released With Initial Rust Code.md b/published/202212/20221212.0 ⭐️⭐️ Linux Kernel 6.1 Released With Initial Rust Code.md new file mode 100644 index 0000000000..d33491862c --- /dev/null +++ b/published/202212/20221212.0 ⭐️⭐️ Linux Kernel 6.1 Released With Initial Rust Code.md @@ -0,0 +1,146 @@ +[#]: subject: "Linux Kernel 6.1 Released With Initial Rust Code" +[#]: via: "https://news.itsfoss.com/linux-kernel-6-1-release/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15343-1.html" + +Linux 内核 6.1 发布,包含初始 Rust 支持 +====== + +> Linux 内核 6.1 现在可以使用了!考虑到这是今年最后一个稳定版本,它有可能是 LTS 版本。 + +![Linux 内核 6.1 发布,包含初始 Rust 支持][1] + +Linux 内核 6.1 终于来了,它以改进和支持新硬件的形式为我们提前带来了节日礼物。🎄 + +它是在 Linux 内核 6.0 发布的几个月后出现的,当时的命名方案从 5.x.x 改为 6.x,以减少小版本号太多带来的混乱。 + +像往常一样,今年的最后一个内核版本 **可能被作为一个长期发布的版本**,从而得到几年的支持。 + +Linux 内核 6.1 如约带来了许多改进,并初步支持了 AMD 和英特尔尚未发布的硬件。 + +在发布公告中,Linus Torvalds 提到: + +> 所以到现在,我们晚了一个星期,不过上周已经没那么紧迫了,而且很顺利,我对 6.1 的状态要比几个星期前感到放心多了,当时似乎还比较紧迫。当然,这意味着现在我们有一个可怕的合并窗口,就在节日假期之前,而且我也有一些节前的旅行要安排。因此,虽然推迟一周是正确的做法,但它确实使 6.2 合并窗口的时间变得很尴尬。 + +他进一步补充说,考虑到每个人都应该过一个平静的假日季,他将会更严格的对合并窗口的规则进行要求。 + +### 🆕 Linux 内核 6.1 有什么新内容? + +在这个版本中,我们看到了各种变化,例如改进了对 ARM SoC 的支持,初步支持英特尔即将推出的 Meteor Lake CPU,以及 AMD 的 RDNA 3 GPU。 + +你可以在其 [公告][2] 中找到更多技术细节。 + +#### 对 Rust 的实验性支持 + +![linux 6.1 rust][3] + +虽然我们预计这将发生在 Linux 内核 6.0,但它在 Linux 内核 6.1 中才出现,这将允许开发者用 Rust 编写内核代码。 + +#### 英特尔 Meteor Lake 的启用 + +![英特尔][4] + +英特尔的开源开发者一直在努力工作,为即将到来的 Meteor Lake 芯片提供初步支持。 + +它被称为英特尔的第一个 7 纳米微架构,开发人员已经向 DRM-next 推送了各种提交。 + +这些包括各种固件提交,对 Meteor Lake CPU 及其集成 GPU 的初步支持。 + +#### 对 AMD RDNA 3 图形的初始支持 + +![AMD][5] + +这段时间,AMD 一直在为 Linux 内核 6.1 添加 RDNA 3 图形架构的代码。 + +这包括对他们即将推出的 GPU 的支持和对他们之前的 GPU 产品的各种修复。 + +你可以通过 [这里][6] 查看完整的补丁列表。 + +#### 对 AMD 电脑的优化 + +![优化 AMD][7] + +AMD PMF(AMD 平台管理框架)已经被引入这个内核版本。 + +该驱动旨在为 AMD PC 更安静、更高效的运行提供支持。 + +它利用板载传感器与 AMD 的各种热能和功率内核驱动来实现这一目标。 + +#### 改进的 ARM SoC 支持 + +![arm soc][8] + +Linux 内核 6.1 带来了对 ARM SoC 的更多支持,例如: + +- 联发科 MT8186 +- 德州仪器 AM62A +- 恩智浦 i.MX8DXL +- 高通 IPQ8064 的各种变体 + +该内核还对一些智能手机提供了支持,如 PINE64 PinePhone Pro、索尼 Xperia 1 IV 和三星 Galaxy E5/E7/Grand Max。 + +#### 存储的改进 + +内核在存储方面有很多改进。 + +例如,Btrfs 在这次更新中带来了异步缓冲写入,提供了超过 2 倍的吞吐量。 + +然后是对 EXT4 的改进,包括性能优化和一些错误修复。 + +与此同时,[EROFS][9] 为 Linux 内核 6.1 引入了基于 FSCache 的共享域支持。 + +#### 🛠️ 其他改进措施 + +这些并不是 Linux 内核 6.1 提供的唯一改进,以下是其他一些值得注意的改进: + +- 对微软 Surface Pro 9 和 Surface Laptop 5 的支持。 +- 启用 AMD Zen 4 LbrExtV2。 +- AMD CPU “缓存到缓存”和内存报告功能。 +- 引入 AMD IOMMU v2。 +- 为 Wi-Fi 802.11be/Wi-Fi 7 做准备。 + +### 如何安装 Linux 内核 6.1? + +如果你使用基于 Arch 的发行版或 Fedora,你可以轻松升级。 + +不幸的是,如果你使用其他 Linux 发行版(Pop!_OS 和 Linux Lite 在某种程度上可以是个例外),你可能无法直接从发行版中获得升级。 + +然而,几乎所有的 Linux 发行版都明确地允许你安装最新的内核。这里有一个关于 Ubuntu 的指南👇 + +> **[如何在 Ubuntu 中安装最新的主线 Linux 内核版本](https://itsfoss.com/upgrade-linux-kernel-ubuntu/)** + +所以,如果你乐于冒险(并且知道自己在做什么),你可以在 [Linux 内核档案][10] 上找到列出的较新的内核。你可以下载 [tarball][11] 来测试它。 + +然而,像往常一样,如果你不想冒任何风险,我们建议等待你的 Linux 发行版推送更新。最好是坚持使用你的 Linux 发行版默认提供的东西。 + +> **[下载 Linux 6.1][12]** + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/linux-kernel-6-1-release/ + +作者:[Sourav Rudra][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/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/linux-kernel-6-1-release.png +[2]: https://lore.kernel.org/lkml/CAHk-=wj_HcgFZNyZHTLJ7qC2613zphKDtLh6ndciwopZRfH0aQ@mail.gmail.com/T/#u +[3]: https://news.itsfoss.com/content/images/2022/12/linux-6-1-rust.png +[4]: https://news.itsfoss.com/content/images/2022/12/intel-meteor.png +[5]: https://news.itsfoss.com/content/images/2022/12/amd-rdna-3.png +[6]: https://lists.freedesktop.org/archives/dri-devel/2022-September/373430.html +[7]: https://news.itsfoss.com/content/images/2022/12/amd-rdna-3--1-.png +[8]: https://news.itsfoss.com/content/images/2022/12/amd-rdna-3--2-.png +[9]: https://en.wikipedia.org/wiki/EROFS +[10]: https://www.kernel.org/ +[11]: https://git.kernel.org/torvalds/t/linux-6.1.tar.gz +[12]: https://www.kernel.org diff --git a/published/202212/20221212.4 ⭐️⭐️ 5 Best Linux Phones to Watch Out for in 2023.md b/published/202212/20221212.4 ⭐️⭐️ 5 Best Linux Phones to Watch Out for in 2023.md new file mode 100644 index 0000000000..7673c4a30d --- /dev/null +++ b/published/202212/20221212.4 ⭐️⭐️ 5 Best Linux Phones to Watch Out for in 2023.md @@ -0,0 +1,229 @@ +[#]: subject: "5 Best Linux Phones to Watch Out for in 2023" +[#]: via: "https://www.debugpoint.com/best-linux-phones/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "chai001125" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15371-1.html" + +2023 年值得期待的 5 款最佳 Linux 手机 +====== + +![][0] + +> 以下是一份可能在 2023 年成为主流的最佳 Linux 手机榜单,并介绍了各个 Linux 手机的特点和价格。 + +安卓和 iOS 智能手机是世界上最流行的手机。然而,还有许多人都想要更“开放”、且**在隐私方面做得更好的手机**。如果你使用安卓手机,那么你就是放弃了你的隐私。在个人隐私保护方面,苹果的 iOS 手机表现得要好一点,但它也仅提供了有限的隐私保护。 + +这就是现在 Linux 手机变得很流行的原因,因为它们为开发者和终端用户提供了许多选择。虽然目前有各种类型的 Linux 手机,但是要选择最好的 Linux 手机仍然令人困惑。从 2022 年的趋势来看,以下是一些可能在 2023 年成为主流的 Linux 手机。 + +### 关于 Linux 手机,你需要知道的事情 + +当你浏览或者计划购买一部 Linux 手机之前,你应该先了解以下关于 Linux 手机的事情: + +- Linux 手机使用的是主流 Linux 发行版的修改版,它有一个适合手机的桌面环境。这对今天的大多数手机(例如安卓、苹果 iOS)来说,也是类似的。 +- 如果你打算买一部 Linux 手机,并将其作为你日常所使用的手机的话,请不要太期待这个 Linux 手机。因为 Linux 手机的操作系统、功能和应用生态系统仍处于早期发展阶段,远远比不上与安卓或 iOS 手机。 +- 然而,Linux 手机的操作系统提供了最好的隐私功能,这会成为你想要出手买一部 Linux 手机的原因。 + +### 最好的 Linux 手机 + +#### 1、Librem🥇 + +**Purism** 公司是 Linux 手机市场上一个相当著名的品牌。Purism 公司推出的 **Librem 5 Linux** 智能手机支持 **PureOS**。PureOS 是一个专为 Linux 手机设计的操作系统,不基于安卓或 iOS 系统,它是一个原生设计的自由开源的操作系统;它还支持 融合 convergence ,这意味着你可以通过 USB 集线器将手机插入电脑显示器,并将其作为一个桌面操作系统使用🆒。 + +这款手机拥有优质的硬件和手感,还十分注重安全和隐私。但是,这款令人印象深刻的智能手机价格有点贵,售价为 1299 美元💔。 + +Librem 5 Linux 的主要特点和规格: + +- 完全的自由开源,基于 Linux 的移动操作系统:PureOS +- 拥有独立的调制解调器、Wi-Fi 和蓝牙芯片 +- 拥有 3 个专门的硬件键,来启用和禁用互联网、相机、Wi-Fi 和蓝牙 +- 拥有智能卡读卡器 +- 拥有 SD 卡读卡器 +- 电池可更换 + +![Librem 5][1] + +| 规格 | 描述 | +| :- | :- | +| **屏幕** | 5.7 英寸(IPS TFT 720×1440) | +| **内存** | 3 GB | +| **存储** | 32 GB eMMC | +| **电池容量** | 4500 mAh | +| **CPU** | NXP i.MX 8M QUAD CORE Cortex-A53(四核),64 位 ARM,最高主频为 1.5GHz | +| **GPU** | Vivante GC7000 Lite | +| **屏幕** | 5.7 英寸,IPS TFT,720×1440 像素 | +| **摄像头** | 带 LED 闪光灯的 1300 万像素(后置)摄像头和 800 万像素(前置)摄像头 | +| **USB 接口** | Type C 接口 | + +有点兴趣?你可以进一步浏览 [Librem 5 的购买官网][2]。 + +#### 2、Pinephone🥈 + +Linux 手机榜单的第 2 名是 **Pinephone**。Pinephone 也许是市场上最完善、最实用的 Linux 手机了。它由 **Pine64** 公司开发,具有出色的功能,并是支持多种 Linux ARM 的移动发行版。 + +此外,PinePhone 同时有很多个版本,其中包括专业版本。PinePhone 的价格比较便宜,并且十分注重用户的隐私和可扩展性,如果你是第一次使用 Linux 手机,PinePhone 将会是一个不错的选择😌。 + +Pinephone 的主要特点和规格: + +- 支持的操作系统有 KDE Plasma mobile、Manjaro mobile、Sailfish OS 和 Ubuntu touch。 +- 配备启用和禁用 LTE、摄像头、Wifi/BT 和麦克风的 5 个开关 +- 可启动的 microSD 和 16GB/32GB eMMC 的内存空间 +- Type C 接口(可用于电源、数据和视频输出) +- 拥有 6 个 Pogo 引脚,允许自定义硬件扩展,如热像仪、无线充电、NFC、扩展电池盒或键盘盒。 +- 拥有 3.5 毫米耳机插孔 +- 支持融合,可将其插到一台电脑上 +- 价格实惠,2 种型号的售价分别为 149 美元和 199 美元起 + +![Pinephone][3] + +| 规格 | 描述 | +| :- | :- | +| **屏幕** | 5.95 英寸,高清 IPS 电容式触摸屏 | +| **CPU** | Allwinner A64 ARM QUAD Core Cortex-A53(四核),64 位 | +| **GPU** | Mali-400 MP2 | +| **内存** | 2 种型号:2GB 和 3GB LPDDR3 SDRAM | +| **存储** | 2 种型号:16GB and 32GB eMMC | +| **摄像头** | 500 万像素、1/4英寸、LED 闪光灯(后置)摄像头和 200 万像素、1/5英寸(前置)摄像头 | +| **电池** | 锂离子电池(容量为 2800 mAh) | +| **音频插孔** | 3.5 毫米 | + +想要入手你的第一部 Linux 手机?请进一步浏览 [Pinephone 的购买官网][4] 吧。 + +#### 3、Pro 1 X – F(X)tec🥉 + +[**Pro 1 X** – F(X)tec][5] 是一款提供各种操作系统选择的智能手机,因此它是 Linux 手机榜单中十分令人激动的一项产品。 + +Pro 1 X **支持各种操作系统**,例如 LineageOS、安卓、Ubuntu Touch 等。此外,一个**内置的滑出式键盘**使它看起来更加独特且十分有吸引力。 + +Pro 1 X 由伦敦的 **F(x)tec** 公司开发。它是 Linux 手机市场上新出的产品,很有前景。然而,这个手机还没有上市,计划在 2022 年 12 月开始发货。因此,你可能需要等待几天,才能看到别人对这部手机的评价。 + +![Pro 1 X][6] + +Pro 1 X 的主要特点和规格: + +- 首款基于 Linux 的、有内置滑出式的 QUERTY 键盘的智能手机 +- 支持 Ubuntu touch 操作系统,并有安卓选项 +- 已解锁的启动程序 +- 拥有 3.5 毫米耳机插孔 +- 拥有 AMOLED 显示屏 +- 128 GB 存储/6 GB 内存:售价为 829 美元起 +- 256 GB 存储/8 GB 内存:售价为 899 美元起 + +| 规格 | 描述 | +| :- | :- | +| **CPU** | Snapdragon 662 Qualcomm | +| **GPU** | Adreno 610 Qualcomm | +| **内存** | 2 种型号:6GB 和 8GB LPDDR4 | +| **存储** | 128 GB(可扩展至 2 TB) | +| **屏幕** | 5.99英寸,弧形边缘,Corning® Gorilla® Glass 3(分辨率为 2160 x 1080 像素的 AMOLED 显示屏) | +| **摄像头** | 1200 万像素 Sony IMX363(后置)摄像头和800万像素(前置)摄像头 | +| **电池容量** | 3200 mAh | +| **音频插孔** | 3.5 毫米 | + +它的内置滑出式键盘是否吸引了你?去 [pro 1 x 的购买官网][5] 看看吧。 + +#### 4、Volla Phone + +[Volla Phone][7] 可以同时运行**两个操作系统:Ubuntu Touch 和 VollaOS**。 + +VollaOS 是一个安卓操作系统的修改版,没有谷歌专有的部分,同时也很注重用户的隐私;Ubuntu Touch 是一个流行的 Linux 手机发行版。 + +Volla Phone 的主要特点和规格: + +- 没有谷歌专有部分及其服务 +- 不依赖云计算 +- 加密的设备存储 +- 使用安卓操作系统的修改版:Volla OS +- 支持的操作系统有 Ubuntu Touch,Manjaro,Sailfish OS +- 拥有 USB C 充电口 +- 拥有 3.5 毫米耳机插孔 +- 可以用指纹解锁 +- 拥有离线地图 + +![Volla Phone][8] + +| 规格 | 描述 | +| :- | :- | +| **CPU** | MediaTek Helio P23 | +| **GPU** | ARM Mali-G71 MP2  | +| **内存** | 4 GB DDR3 RAM | +| **存储** | 64 GB,eMMC | +| **屏幕** | 6.3 英寸,IPS,2340×1080 像素 | +| **摄像头** | 1600万像素带闪光灯的(后置)摄像头和1600万像素(前置)摄像头 | +| **电池容量** | 4700 mAh | +| **USB 接口** | Type C 接口和 3.5 毫米音频插孔 | + +这个手机看起来也很不错呢,不妨到 [Volla 的购买官网][9] 看看吧。 + +#### 5、Fairphone 4 + +[Fairphone 4][10] 是另一款具有模块化硬件的 Linux 智能手机。它支持 PostmarketOS 操作系统,并使用安卓操作系统的修改版本:FairPhone OS。这个手机的主要卖点是它的 模块化 modularity ,你可以替换手机的任何模块:你可以毫不费力地更换它的电池🔋;此外,不仅仅是更换电池,你还可以简单地用螺丝刀来更换它的显示屏等部件。 + +![][14] + +Fairphone 4 的规格: + +| 规格 | 描述 | +| :- | :- | +| **CPU** | Octa-Core Kryo 570(八核) | +| **内存** | 2 种型号:6GB 和 8GB | +| **存储** | 2 种型号:128GB 和 256GB | +| **GPU** | Adreno 619 | +| **屏幕** | 6.3 英寸,全高清,IPS | +| **摄像头** | 2 个 4800 万像素(后置)摄像头和 2500 万像素(前置)摄像头 | +| **电池** | 锂离子电池(容量为 3905 mAh)| +| **芯片组** | Qualcomm SM7225 Snapdragon 750G | + +进一步可浏览 [FairPhone 的购买官网][11]。 + +#### 是否有支持 Linux 操作系统的主流安卓手机呢? + +如果你不想购买上述现成的 Linux 手机,那么你也可以在**安卓手机**上使用 Linux 移动操作系统,因为安卓是基于 Linux 内核上修改的。因此,这些手机应该也能使用 Ubuntu Touch 或 PostmarketOS 操作系统。 + +- Google Pixel 3a/3a XL +- Sony Xperia X (F5121 & F5122) +- Google Nexus 5 +- OnePlus One +- 支持 Ubuntu Touch OS 操作系统的 [完整列表][12] +- Xiaomi Redmi 2 +- Xiaomi Mi Note 2 +- OnePlus GT +- OnePlus 6 +- 支持 PostmarketOS 操作系统的 [完整列表][13] + +### 结语 + +以上就是关于如今市场上最好的 Linux 手机的全部内容了。你可以从这些手机的官方网站上了解更多信息。因为手机的隐私保护在当下变得越来越重要了,我相信在未来会有越来越多的人使用 Linux 手机。 + +诚然,Linux 手机本身的功能及其操作系统比不上安卓和苹果 iOS 手机。但是,对于 Linux 手机来说,更重要的是它的标准的设立、全球购买的可行性、在这一新兴市场的低入门价格以及对 Linux 手机应用生态系统的大力投资。在 Linux 手机的生态系统中需要更简化的界面,没有简单的界面,Linux 手机将变得更加零散,就像台式机一样。Linux 手机的制造商还需要和自由及开源软件(FOSS)参与者一起合作,最终才能使 Linux 手机广受欢迎。 + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/best-linux-phones/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[chai001125](https://github.com/chai001125) +校对:[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/12/Librem-5-image2.jpg +[2]: https://puri.sm/products/librem-5/ +[3]: https://www.debugpoint.com/wp-content/uploads/2022/12/Pinephone.jpg +[4]: https://pine64.com/product-category/pinephone +[5]: https://www.fxtec.com/pro1x +[6]: https://www.debugpoint.com/wp-content/uploads/2022/12/Pro-1-X.jpg +[7]: https://volla.online/de/index.html +[8]: https://www.debugpoint.com/wp-content/uploads/2022/12/Volla-Phone.jpg +[9]: https://volla.online/de/shop/ +[10]: https://shop.fairphone.com/en/buy-fairphone-4 +[11]: https://shop.fairphone.com/ +[12]: https://devices.ubuntu-touch.io/ +[13]: https://wiki.postmarketos.org/wiki/Devices +[0]: https://img.linux.net.cn/data/attachment/album/202212/22/145904l88upudto8u7y3ui.jpg +[14]: https://img.linux.net.cn/data/attachment/album/202212/22/150220zuowaoguya3azajw.jpg \ No newline at end of file diff --git a/published/202212/20221213.3 ⭐️ Linux Mint Upgrade Tool Usage Guide.md b/published/202212/20221213.3 ⭐️ Linux Mint Upgrade Tool Usage Guide.md new file mode 100644 index 0000000000..23a4212934 --- /dev/null +++ b/published/202212/20221213.3 ⭐️ Linux Mint Upgrade Tool Usage Guide.md @@ -0,0 +1,109 @@ +[#]: subject: "Linux Mint Upgrade Tool: Usage Guide" +[#]: via: "https://www.debugpoint.com/mint-upgrade-tool/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15372-1.html" + +Linux Mint 升级工具使用指南 +====== + +![][0] + +> 以下是如何使用 Mint 升级工具升级到新的 Linux Mint 版本,即带有实际升级过程截图的 mintupgrade GUI。 + +如果你正在寻找最近发布的 **Linux Mint 21 Vanessa** 的**详细升级**步骤,请阅读本指南👉 + +> **[从 Linux Mint 20.3 升级到 21][1]** + +### Linux Mint 升级工具 + +Linux Mint 团队 [宣布][2] 在几个月前,他们构建了一个新的程序来升级 Linux Mint 的主要版本。它被称为 “mintupgrade2”。现在开发已经完成,目前正在支持和计划升级到主要版本,例如 Linux Mint 20 到 21,而不是小版本升级。 + +尽管你可以使用标准的 `apt` 命令升级版本,但 Mint 团队认为重大版本升级是棘手的。新用户很难进行无缝升级,因为它涉及终端和一系列复杂的命令步骤。 + +此外,该图形界面是一个封装器,为 `mintupgrade` 程序带来了更多功能,它带来了一组系统前检查和带有一键修复的升级过程。 + +此外,`mintupgrade` 会进行基本检查,比如你是否连接到电源、系统是否是最新的、磁盘空间可用性等。 + +为了向你展示它的外观和工作情况,我们安装了一台 LMDE 4 测试机测试。 + +但在此之前,看一下它的功能集: + +- 完全由 GUI 驱动的升级过程 +- 多语言支持 +- 升级前检查:系统备份、电源、磁盘空间、已删除包列表 +- 可配置 +- 提醒你有关先前版本中的孤儿包 +- 它为你提供了解决问题的选项 + +### 它如何运作 + +当我们通过命令 `mintupgrade` 运行 Mint 升级程序时,GUI 友好的欢迎屏幕为你提供了一个很好的起点并开始升级过程。然后,它开始自己进行一系列检查。 + +![开始升级过程][3] + +除此之外,当它在你的系统中发现问题时,它会停止并为你提供足够的详细信息。单击“修复Fix”后,它可以再次恢复该过程。 + +不止如此,如果由于网络或互联网或任何其他问题而中断,它可以恢复升级过程。 + +这个程序在我们的测试过程中在我们的测试系统中发现了以下错误,并且只需单击一下即可修复它们。 + +![Apt 缓存检查][4] + +![Mint Upgrade 检测到系统快照不存在][5] + +![检查孤立包][6] + +![升级前状态][7] + +![Mint Upgrade 可以检测需要降级的包][8] + +最后,我们成功地将测试系统从 LMDE 4 升级到 LMDE 5。 + +![升级完成][9] + +#### 如何获取此升级程序 + +使用以下命令可以轻松安装该程序。但是,如果你正在运行最新版本的 Linux Mint 21,它应该已经安装并尝试从终端运行 mintupgrade。 + +``` +sudo apt update +``` + +``` +sudo apt install mintupgrade +``` + +### 结束语 + +最后,我认为它是 Linux Mint 团队最好的程序之一。正如你在上面看到的,它自己处理了许多错误。我所做的只是单击“修复”按钮。该程序足够智能,可以了解所有故障点并采取补救措施。 + +> **[GitHub 上的 mintupgrade 源码][10]** + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/mint-upgrade-tool/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/upgrade-linux-mint-21-from-20-3/ +[2]: https://www.debugpoint.com/2022/04/linux-mint-21-announcement/ +[3]: https://www.debugpoint.com/wp-content/uploads/2022/04/Starting-the-upgrade-process.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2022/04/Apt-Cache-check.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2022/04/Mint-Upgrade-detects-that-system-snapshots-not-present.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2022/04/Check-for-Orphan-Packages.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2022/04/Status-before-upgrade.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2022/04/Mint-Upgrade-can-detect-the-packages-require-downgrade.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2022/04/Upgrade-Complete.jpg +[10]: https://github.com/linuxmint/mintupgrade +[0]: https://img.linux.net.cn/data/attachment/album/202212/22/152601upz4gujhajauj5rj.jpg \ No newline at end of file diff --git a/published/202212/20221213.6 ⭐️⭐️ Try this Linux web browser as your file manager.md b/published/202212/20221213.6 ⭐️⭐️ Try this Linux web browser as your file manager.md new file mode 100644 index 0000000000..3bef7f1e58 --- /dev/null +++ b/published/202212/20221213.6 ⭐️⭐️ Try this Linux web browser as your file manager.md @@ -0,0 +1,101 @@ +[#]: subject: "Try this Linux web browser as your file manager" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-konqueror" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15392-1.html" + +试试这个 Linux 网络浏览器作为你的文件管理器 +====== + +![][0] + +> KDE Plasma 桌面将 Konqueror 列为网络浏览器,但它也是一个功能性的 Linux 文件管理器。 + +Konqueror 是 KDE Plasma 桌面的文件管理器和 Web 浏览器。在许多方面,Konqueror 定义了“网络透明度”,因为它适用于个人桌面。使用 Konqueror,你可以像浏览本地文件一样轻松地浏览远程网络文件(包括互联网本身,它实际上只是通过花哨的镜头查看的远程文件的集合)。有时需要进行一些配置和设置,具体取决于你需要访问的文件共享类型。但最终,通过 Konqueror 实现了即时访问你有权查看的所有数据的目标,这是其他文件管理器无法实现的。在其巅峰时期,它开发的开源网络引擎(KHTML) 被苹果和谷歌采用,并作为现代网络浏览和 Electron 应用开发的核心库延续至今。 + +今天,KDE Plasma 桌面将 Konqueror 作为网络浏览器。文件管理功能已正式转移到 [Dolphin][1],但 Konqueror 仍然能够完成这项工作。要获得完整和经典的 Konqueror 体验,你应该尝试 Plasma 桌面 3.x 的复刻 [TDE][2],但在本文中,我在 KDE Plasma 桌面版本 5 中使用 Konqueror。 + +### 安装 Konqueror + +如果你已经在运行 KDE Plasma 桌面,你可能已经安装了 Konqueror。如果没有,你可以从发行版软件仓库中安装它。在 Fedora、CentOS、Mageia、OpenMandriva 和类似软件上: + +``` +$ sudo dnf install -y konqueror konqueror-plugins +``` + +在 Debian、Linux Mint、Elementary 和类似软件上: + +``` +$ sudo apt install -y konqueror konqueror-plugins +``` + +![Image of Konqueror's file manager.][3] + +### 将 Konqueror 配置为文件管理器 + +Konqueror 最方便的功能是它除了是一个文件管理器之外,还是一个网络浏览器。至少,这在理论上是它最方便的功能。如果你没有将 Konqueror 用作网络浏览器,那么你可能不希望每个文件管理器窗口顶部都有 URL 区域或搜索引擎区域。 + +与大多数 KDE 应用一样,Konqueror 是高度可配置的。你可以重新定位并添加和删除工具栏、添加或删除按钮等。 + +要调整显示的工具栏,请启动 Konqueror 并转到 “设置Settings” 菜单并选择 “显示的工具栏Toolbars Shown”。主工具栏可能是你真正需要的文件管理工具栏。它是带有导航按钮的工具栏。但是,你甚至可能不需要它,只要你乐于使用键盘快捷键或使用 “Go” 菜单进行导航即可。 + +Konqueror 中的键盘导航与 Dolphin 中的相同: + +- `Alt + ←`:后退一步 +- `Alt + ↑`:移动到父目录 +- `Alt + Home`:转到主目录 + +### 侧边栏 + +要获得包含常用文件夹列表的侧边栏,请按 `F9` 或从 “设置Settings” 菜单中选择 “显示边栏Show Sidebar”。这会在 Konqueror 窗口的左侧添加一个按钮栏。单击 “Home” 图标以显示你的主目录的文件树。 + +![Image of Konqueror with a sidebar.][4] + +正如按钮栏所暗示的那样,此侧边栏可用于多种用途。你可以显示书签位置,你最近访问过的位置的历史,远程文件系统等。 + +### 应用 + +有些人习惯于应用菜单。它高效快捷,并且始终在同一个地方。其他人更喜欢从终端启动应用。 + +不过,还有另一种查看应用启动器的方法。Konqueror 的 “Go” 菜单允许你转到名为 “应用程序Applications” 的元位置,它按类别列出了应用程序启动器,就像文件管理器中的文件一样。 + +![Image of applications in Konqueror.][5] + +你也可以在 Dolphin 中看到这个,方法是在位置区域中手动输入 `applications:`,此外,Konqueror 提供了一个菜单选项,可以直接进入该位置。 + +### 网络文件夹 + +类似地,Konqueror 还提供了一个菜单选择进入网络文件夹。其中最好的网络文件夹是“互联网”,但“网络文件夹”是 HTTP 以外的网络协议的元位置。大多数远程位置需要一些设置,因为它们通常需要身份验证才能访问。它们中的大多数都可以通过 “系统设置System Settings” 进行配置,包括可通过蓝牙、SMB 或 CIFS、MTP 设备、Fish(通过 SSH 的文件系统)访问的文件系统,甚至是 Google Drive。 + +### 拆分视图 + +你可以将 Konqueror 窗口拆分为多个窗格,这样你就可以同时查看两个文件夹而无需打开两个窗口。有两种拆分选项:垂直拆分,一个窗格在左侧,另一个窗格在右侧;或者水平拆分,一个窗格在另一个窗格之上。 + +要分割 Konqueror 窗口,进入 “窗口Window” 菜单,选择 “左/右分割视图Split View Left/Right” 或 “上/下分割视图Spit View Top/Bottom”。每个窗格都是独立的,所以你可以在一个窗格中浏览,然后把文件从一个窗格拖到另一个窗格。 + +### 征服你的文件系统 + +Konqueror 不 _仅仅_ 是一个文件管理器,我认为 Plasma 桌面的开发者并不期望你把它作为你的主要文件管理器。在 “文件File” 菜单中甚至有一个选项可以在 **Dolphin** 中打开一个位置,这表明 Konqueror 是一个带有文件管理器组件的网络浏览器。但是,当你需要时,这个文件管理器组件是一个不错的功能。如果你不喜欢 Dolphin 提供的所有功能,Konqueror 可能是一个合适的替代品。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-konqueror + +作者:[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/article/22/12/linux-file-manager-dolphin +[2]: https://opensource.com/article/19/12/linux-trinity-desktop-environment-tde +[3]: https://opensource.com/sites/default/files/2022-10/konqueror-filemanager.png +[4]: https://opensource.com/sites/default/files/2022-10/konqueror-sidebar.png +[5]: https://opensource.com/sites/default/files/2022-10/konqueror-applications.png +[0]: https://img.linux.net.cn/data/attachment/album/202212/29/141332adtz8mb8m8h8z3d4.jpg \ No newline at end of file diff --git a/published/202212/20221215.2 ⭐️⭐️ Improve your documentation with JavaScript.md b/published/202212/20221215.2 ⭐️⭐️ Improve your documentation with JavaScript.md new file mode 100644 index 0000000000..b33db8f545 --- /dev/null +++ b/published/202212/20221215.2 ⭐️⭐️ Improve your documentation with JavaScript.md @@ -0,0 +1,243 @@ +[#]: subject: "Improve your documentation with JavaScript" +[#]: via: "https://opensource.com/article/22/12/dynamic-documentation-javascript" +[#]: author: "Jim Hall https://opensource.com/users/jim-hall" +[#]: collector: "lkxed" +[#]: translator: "duoluoxiaosheng" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15375-1.html" + +使用 JavaScript 增强你的文档 +====== + +![][0] + +> 让你的开源项目文档充满活力,从而吸引各种经验水平的用户。 + +开源软件项目通常拥有非常多样化的用户人群。有些用户非常擅长使用该系统,并且只需要很少的文档。对于这些实力派用户,文档只需要提供必要的提示,并且可以包含更多的技术信息,比如说在 Shell 中运行的命令行。有些用户可能只是初学者。这些用户需要更多的帮助来设置系统并学习如何使用它。 + +写一个同时适合这两个用户群体的文档是令人生畏的。网站文档需要在 “提供详细的技术信息” 和 “提供更多的概述和指导” 之间寻求一个平衡。这是一个很难找到的平衡。如果你的文档不能同时满足这两个用户人群,那么考虑一下另外一个选择 —— 动态文档。 + +探索在网页中添加一点 [JavaScript][1] 使用户可以选择自己想看的内容。 + +### 构建你的内容 + +你可以把例程添加的你的文档中需要同时满足 专家expert初学者novice 的地方。在这个例程中,我们可以使用一个虚构的名为 AwesmeProject 的音乐播放器。 + +你可以用 HTML 编写一个简短的安装文档,通过 HTML 的 class 功能同时为专家和初学者提供操作指南。 + +例如,你可以用下面的代码来为专家定义一个段落: + +``` +

+``` + +这同时指派了 “专家类” 和 “读者类”。你可以用下面的代码来为初学者创建一个相同的段落。 + +``` +

+``` + +完整的 HTML 文件同时包含初学者的段落和专家的段落。 + +``` + + + + + + +How to install the software + + + + +

How to install the software

+ +

Thanks for installing AwesomeProject! With AwesomeProject, +you can manage your music collection like a wizard.

+ +

But first, we need to install it:

+ +

You can install AwesomeProject from +source. Download the tar file, extract it, then run: +./configure ; make ; make install

+ +

AwesomeProject is available in +most Linux distributions. Check your graphical package manager and search for AwesomeProject to install it.

+ + + + +``` + +例子中的 HTML 文档没有与之关联的样式表,所以浏览器中会显示所有的段落。 + +![Image of html in black text.][2] + +我们可在文档中添加一些简单的样式来为 读者reader专家expert 或者 初学者novice 突出任何元素。为了使不同的文本更容易区分,让我们把读者类的背景颜色设置成米白色,专家类的字体颜色设置为深红色,初学者的字体颜色则设置为深蓝色。 + +``` + + + + + + +How to install the software + + + + + + + +

How to install the software

+``` + +当你在浏览器中查看这个网页时,这些样式有助于突出这两个段落。安装指导的所有段落都有一个米白色背景,因为他们都有 读者reader 这个类。第一个段落的字体是深红色的,这是由 专家expert 这个类定义的。第二个段落的字体是深蓝色的,则是由 初学者novice 这个类定义的。 + +![Image of html in red and black text.][3] + +### 添加 JavaScript 控件 + +这些类的应用,使你可以添加一些简单的 JavaScript 函数,只显示其中一个内容块。一个方法是,首先给所有的读者类元素设置 `display:none` 。这会将内容隐藏,使其不会在页面上显示。然后,用函数将你想显示的类元素设置为 `display:block` : + +``` + +``` + +要在 HTML 文档中使用这个 JavaScript,你可以吧这个功能附加到一个按钮上。由于 `readerview` 函数需要一个听众audience(这应该是相对那个虚拟音乐播放器来说的)作为参数,你可以使用你想查看的听众类别来调用这个函数,可以是读者reader专家expert 或者 初学者novice 。 + +``` + + + +How to install the software + + + + + + + +

How to install the software

+ + + +

Thanks for installing AwesomeProject! With AwesomeProject, +you can manage your music collection like a wizard.

+ +

But first, we need to install it:

+

You can install AwesomeProject from +source. Download the tar file, extract it, then run +./configure ; make ; make install

+ +

AwesomeProject is available in +most Linux distributions. Check your graphical package +manager and search for AwesomeProject to install it.

+ + + +``` + +有了这些设置,用户可以在网页上选择他们想看的文本。 + +![Image of window that allows you to select between novice and expert text.][4] + +点击任何一个按钮都将只显示用户想要阅读的文本。例如,如果你点击了 “阅读初学者内容view novice text” 按钮,你就只会看到蓝色段落。 + +![Image showing blue text when you press the novice button.][5] + +点击 “阅读专家内容view expert text” 按钮,就会隐藏初学者文本,只显示红色的专家文本。 + +![Image of red text after the expert button is clicked.][6] + +### 将此扩展到你的文档 + +如果你的项目需要你为不同的听众编写多个操作文档,你可以考虑使用这种方法,一次发布,多次阅读。为所有的用户编写一个文档,是每个人都能很容易的发现和分享你项目的文档。而你也不必同时维护尽在细节上有所不同的多个文档。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/dynamic-documentation-javascript + +作者:[Jim Hall][a] +选题:[lkxed][b] +译者:[duoluoxiaosheng](https://github.com/duoluoxiaosehng) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jim-hall +[b]: https://github.com/lkxed +[1]: https://opensource.com/downloads/learn-javascript +[2]: https://opensource.com/sites/default/files/2022-12/publishonec.textblack.png +[3]: https://opensource.com/sites/default/files/2022-12/publishone.red_.blue_.png +[4]: https://opensource.com/sites/default/files/2022-12/publishone.novicexpert.png +[5]: https://opensource.com/sites/default/files/2022-12/publishone.blue_.png +[6]: https://opensource.com/sites/default/files/2022-12/publishone.red_.png +[0]: https://img.linux.net.cn/data/attachment/album/202212/23/100615quu385qf83bu3p35.jpg \ No newline at end of file diff --git a/published/202212/20221215.4 ⭐️ Pulsar A Community-Led Open Source Code Editor to Continue the Legacy of Atom.md b/published/202212/20221215.4 ⭐️ Pulsar A Community-Led Open Source Code Editor to Continue the Legacy of Atom.md new file mode 100644 index 0000000000..008fd59109 --- /dev/null +++ b/published/202212/20221215.4 ⭐️ Pulsar A Community-Led Open Source Code Editor to Continue the Legacy of Atom.md @@ -0,0 +1,85 @@ +[#]: subject: "Pulsar: A Community-Led Open Source Code Editor to Continue the Legacy of Atom" +[#]: via: "https://news.itsfoss.com/pulsar-editor/" +[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15356-1.html" + +Pulsar:一个由社区主导的以继承 Atom 的开源代码编辑器 +====== + +> Pulsar 的目标是成为 Atom 的替代品,随着其开发的进一步深入,将挑战 Visual Studio Code。 + +![Pulsar:一个由社区领导的开源代码编辑器,以延续 Atom 遗志][1] + +微软决定杀死 Atom 文本编辑器,以支持 Visual Studio Code,这并不奇怪。 + +如果你不知道,你可以看一下我们以前的报道: + +> [为了支持微软 VS Code,微软的 GitHub 正在扼杀 GitHub 的 Atom 编辑器][5] + +虽然你可能有了更好的选择,但曾经流行的 Atom 是一个令人印象深刻的工具。 + +**它有一个可用的社区构建版**;然而,还有一个新的版本(**Pulsar**),旨在实现与原始 Atom 对等的功能,并引入现代功能和更新架构。 + +根据它的文档,原来开发 Atom 社区版的团队现在参与创建了 Pulsar。他们之所以做一个独立的复刻版本,是因为项目的目标不同。 + +**Pulsar** 希望将一切现代化,以成为 Atom 的继承者。 + +> 💡 Pulsar 是一个新项目,作为 Atom 的新复刻,有开发/测试版本可供测试。 + +### Pulsar 编辑器看起来怎么样? + +![Pulsar 编辑器][2] + +当然,用户界面也是大同小异。考虑到 Pulsar 还没有一个稳定的版本,看起来有时会显得有些混淆。 + +然而,文档、软件包以及从 Git 仓库安装软件包的能力等基本要素看起来都已具备。 + +根据官方网站的介绍,Pulsar 的主要功能亮点包括: + +- 跨平台支持(Linux、macOS 和 Windows) +- 内置的软件包管理器 +- 智能自动补全 +- 文件系统浏览器 +- 多窗格的用户界面 +- 查找和替换功能 + +在写这篇文章时,Pulsar 还不能自动更新。你可以通过官方网站安装较新的版本。 + +![Pulsar 编辑器设置][3] + +你可以自定义编辑器、改变键盘绑定、管理软件包、应用主题,并通过所有可用选项配置你的体验。 + +到目前为止,要说 Pulsar 是否会比 Atom 社区版更好还为时过早。然而,这是我们可以关注的事情。 + +### 下载并试用 Pulsar + +如前所述,Pulsar 正处于早期开发阶段。因此,你可以找到用于 Linux 发行版的二进制文件和 AppImage 文件,你可以在任何发行版上试用。 + +在我的测试中,它 **在 Linux Mint 不能正常运行**,但在 **Ubuntu 22.04 LTS** 上工作良好。 + +你可以到它的 [官方下载页面][4] 去获取你的系统所需的软件包,并进行测试。 + +> **[Pulsar 编辑器][4]** + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/pulsar-editor/ + +作者:[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/content/images/size/w2000/2022/12/pulsar-hackable-text-editor.png +[2]: https://news.itsfoss.com/content/images/2022/12/pulsar-editor.png +[3]: https://news.itsfoss.com/content/images/2022/12/pulsar-editor-settings.png +[4]: https://pulsar-edit.dev/download.html#releases +[5]: https://news.itsfoss.com/atom-being-discontinued/ \ No newline at end of file diff --git a/published/202212/20221215.5 ⭐️ XFCE 4.18 Release Looks Impressive!.md b/published/202212/20221215.5 ⭐️ XFCE 4.18 Release Looks Impressive!.md new file mode 100644 index 0000000000..73a9c460db --- /dev/null +++ b/published/202212/20221215.5 ⭐️ XFCE 4.18 Release Looks Impressive!.md @@ -0,0 +1,138 @@ +[#]: subject: "XFCE 4.18 Release Looks Impressive!" +[#]: via: "https://news.itsfoss.com/xfce-4-18-release/" +[#]: author: "Jacob Crume https://news.itsfoss.com/author/jacob/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15355-1.html" + +Xfce 4.18 版本发布:令人印象深刻 +====== + +> Xfce 4.18 已发布,添加了一些有趣的功能和细微的变化。 + +![Xfce 4.18 版本看起来令人印象深刻!][1] + +Xfce 是目前最好的桌面环境之一。它因其简单性而受欢迎,是一个轻量级的选择。 + +不像其他桌面环境,你不会看到 Xfce 定期的添加功能。所以,等待升级总是令人兴奋的。 + +Xfce 4.18 是最新的版本,它增加了一些有用的功能和其他技术改进。让我重点介绍一下。 + +### Xfce 4.18 的新变化 + +![Xfce 4.18 有新的默认壁纸][2] + +虽然这不是一个完整的变化列表,但其中一些比较明显的变化包括: + +- 文件管理器的改进。 +- 桌面和面板的变化。 +- 更多的设置。 +- 新的壁纸。 + +#### 文件管理器的改进 + +![Xfce 4.18 文件管理器的分割视图][3] + +Xfce 的默认文件管理器 Thunar 在这个版本中得到了相当多的改变。作为许多 Linux 用户的最爱,Thunar 有一个干净直观的用户界面,使其对不同技能水平的人都很简单易用。 + +在这个版本中,这个有用的工具获得了几个新功能。比如说: + +- 工具条上新的搜索图标使用户能够快速搜索文件和文件夹。 +- 你现在可以添加一个分割视图。 +- 启用独立的图像预览。 + +还有一个有趣的新增功能,可以帮助你**高亮文件**,以便快速发现它们。你可以设置一个前景和背景颜色,如果你不想要这个功能,也可以重置。 + +![xfce 4.18 文件高亮][4] + +你可以从文件的属性选项中访问这个功能。 + +Thunar 文件管理器还增加了一些其他功能,包括: + +- 一个用于定制键盘快捷键的新标签。 +- 新的书签菜单。 + +#### 精致的设置和桌面变化 + +Xfce 桌面的大部分都保持不变。你不应该期待开箱后有不同的用户体验。 + +虽然没有重大的视觉改造,但有细微的完善和功能改进。 + +例如,你可以发现日历小部件的新能力。显示设置提供了更多选项,即使你没有连接多个显示器。 + +Xfce 面板也有一些变化。 + +![Xfce 4.18 面板设置][5] + +这些变化包括用像素而不是百分比来调整高度,以及一个新的 “保持面板在窗口上方” 选项。这使得窗口可以在面板下面延伸,而不是在顶部被切断。 + +更不用说,时钟小程序现在可以自定义其字体类、字体大小和布局。 + +![Xfce 4.18 时钟][6] + +#### 新壁纸 + +当然,我们也得到了一些新的壁纸;你已经在本文的开头看到了新的默认壁纸。 + +![Xfce 4.18 新壁纸集][7] + +如果你很好奇,你可以看看其他为 [壁纸竞赛][8] 提交的各种作品。也许你会发现别人不喜欢的东西。 + +![Xfce 4.18 新壁纸集锦][9] + +这些是计划添加到背景集的其它候选作品。 + +#### 其他变化 + +除了之前提到的那些,这个版本还引入了一些其他变化。 + +- 初步的 Wayland 支持,它允许 Xfce 在 Wayland 显示服务器上运行。 +- GTK4 的更新,提供了更好的性能和稳定性。 +- 一些核心应用程序的小更新,包括对 Xfdesktop、Xfwm4 和 Xfce4-panel 应用程序的改进。 + +关于完整的变化列表,你可以参考 [官方博客文章][10]。 + +### 获得 Xfce 4.18 + +你可以通过软件库为滚动发布的发行版(如 Arch Linux)安装它。对于其他发行版,如果你不想自己做实验,你可能必须等待官方的更新。 + +要想快速尝试,你可以安装 Xubuntu 23.04 日常构建版来获得这些功能。 + +如果你使用的是其他为了稳定起见而不提供快速桌面环境更新的 Linux 发行版,如果你知道自己在做什么,你可以尝试手动安装。 + +> **[下载 Xfce 4.18][11]** + +### 总结 + +Xfce 4.18 是 Xfce 桌面环境的一次重大更新,有许多新的功能和改进。 + +Thunar 文件管理器的更新尤其值得注意,因为它们为用户提供了更多的控制和定制选项。初步的 Wayland 支持和 GTK4 更新将提高性能和稳定性。 + +总的来说,Xfce 4.18是一个受欢迎的更新,将改善 Xfce 用户的用户体验。 + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/xfce-4-18-release/ + +作者:[Jacob Crume][a] +选题:[lkxed][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/jacob/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/xfce-4-18-release.png +[2]: https://news.itsfoss.com/content/images/2022/12/xfce-4-18-hero.jpg +[3]: https://news.itsfoss.com/content/images/2022/12/xfce-4-18-file-manager.jpg +[4]: https://news.itsfoss.com/content/images/2022/12/xfce-4-18-file-highlight.jpg +[5]: https://news.itsfoss.com/content/images/2022/12/xfce-4-18-panel.jpg +[6]: https://news.itsfoss.com/content/images/2022/12/xfce-4-18-clock-settings.jpg +[7]: https://news.itsfoss.com/content/images/2022/12/xfce-4-18-new-wallaper.jpg +[8]: https://gitlab.xfce.org/artwork/public/-/issues/1#note_58300 +[9]: https://news.itsfoss.com/content/images/2022/12/xfce-4-18-new-wallpapers.jpg +[10]: https://alexxcons.github.io/blogpost_8.html +[11]: https://www.xfce.org/ diff --git a/published/202212/20221216.1 ⭐️ Harmonoid A Beautiful Cross-Platform Music Player With Essential Features.md b/published/202212/20221216.1 ⭐️ Harmonoid A Beautiful Cross-Platform Music Player With Essential Features.md new file mode 100644 index 0000000000..d7ac11e4c3 --- /dev/null +++ b/published/202212/20221216.1 ⭐️ Harmonoid A Beautiful Cross-Platform Music Player With Essential Features.md @@ -0,0 +1,108 @@ +[#]: subject: "Harmonoid: A Beautiful Cross-Platform Music Player With Essential Features" +[#]: via: "https://itsfoss.com/harmonoid/" +[#]: author: "Ankush Das https://itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15386-1.html" + +Harmonoid:基本够用的漂亮的跨平台音乐播放器 +====== + +![][0] + +幸运的是,[Linux 的优秀开源音乐播放器][1] 并不缺乏。过去我们已经介绍了多种选择。 + +在这里,我重点介绍一款免费使用(但不是自由开源软件),可用于多种平台(包括 Linux、Windows 和 Android)的音乐播放器。 + +### Harmonoid:Material Design 的直观用户体验 + +![harmonoid player][2] + +Harmonoid 是用 Dart 语言编写的。它利用 [libmpv][3] 和 [mpv][4] 在桌面平台上实现媒体播放功能。 + +它提供了一个优秀的用户界面。并且不使用 electron.js。所以,如果你讨厌 Electron,你可以试试这个。 + +通常,你会在 Android 上看到应用具有 Material Design UI。如果你不知道,Material 是谷歌的开源设计系统。 + +![harmonoid player info][5] + +没有多少创作者将它用于桌面应用。作为一种改变,Harmonoid 具有 Material Design 用户体验,可以同时做到快速和直观。 + +这让 Harmonoid 为 Linux 用户呈现了独特的用户体验。动画感觉流畅且易于导航,并提供大量有价值的功能来帮助管理你的音乐库。 + +![harmonoid url][6] + +如果你想要一个有良好 UI 和功能集的音乐播放器,我建议你尝试一下 Harmonoid。 + +### Harmonoid 的特点 + +![harmonoid player options][7] + +[Harmonoid][8] 可能看起来像一个简单的音乐播放器,但它包含了一些最有价值的功能。他们包括: + +- 跟唱功能,你可以找到歌词,或者你可以手动添加它们 +- 编辑歌曲详细信息,包括艺术家、年份、流派、曲目编号、专辑和标题 +- 轻松分类和排序你的音乐列表 +- 一个快速搜索功能来找到你要找的东西 +- 缓存元数据以在你每次加载时提供快速体验 +- 与 Windows 和 Linux 的良好集成支持 +- 支持在 Discord 中展示,可以显示你的音乐以及插图和播放按钮 +- 调整音乐的速度、音量和音高 +- 原始元数据读取器可读取你库中任何文件或歌曲的标签 +- 播放由 MPV 提供 +- .LRC 文件兼容性 +- 支持在线 URL(YouTube)和广播流 +- 跨平台 +- 多位艺术家支持 +- 深色/浅色模式 + +除了这些之外,还有一些小功能可以发挥很大的作用,例如**无缝播放和上下文菜单集成,并且它通常是一个轻量级应用**。 + +Harmonoid 应该非常适合想要同时播放音乐或整理收藏的用户。我会说它提供了两全其美的方法。 + +![harmonoid settings][9] + +### 在 Linux 上安装 Harmonoid + +你可以从其 [下载页面][10] 获取 .deb/.rpm 包并将其安装在基于 Ubuntu 的发行版或 Fedora 上。 + +此外,你需要使用以下命令安装 mpv 和 libmpv(对于 Ubuntu): + +``` +sudo apt install mpv lipmpv-dev +``` + +确保安装这些软件包可以让你用 Harmonoid 处理所有类型的文件进行播放。 + +你还可以在 [AUR][11] 上找到基于 Arch 的发行版的 Harmonoid。要探索有关该播放器的更多信息,请访问其 [GitHub 页面][12]和[官方网站][8]。 + +你是否尝试过 Harmonoid 在你的 Linux 系统上播放和整理音乐? 你最喜欢的 Linux 音乐播放器是什么? 在下面的评论中让我知道你的想法。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/harmonoid/ + +作者:[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/best-music-players-linux/ +[2]: https://itsfoss.com/content/images/wordpress/2022/12/harmonoid-player.png +[3]: https://github.com/mpv-player/mpv/tree/master/libmpv +[4]: https://mpv.io +[5]: https://itsfoss.com/content/images/wordpress/2022/12/harmonoid-player-info.png +[6]: https://itsfoss.com/content/images/wordpress/2022/12/harmonoid-url.png +[7]: https://itsfoss.com/content/images/wordpress/2022/12/harmonoid-player-options.png +[8]: https://harmonoid.com +[9]: https://itsfoss.com/content/images/wordpress/2022/12/harmonoid-settings.png +[10]: https://harmonoid.com/downloads +[11]: https://aur.archlinux.org/packages/harmonoid-bin +[12]: https://github.com/harmonoid/harmonoid +[0]: https://img.linux.net.cn/data/attachment/album/202212/27/173656kmq05d54llttls55.jpg \ No newline at end of file diff --git a/published/202212/20221216.3 ⭐️ Better Late Than Never! GNOME's File Picker Adds Thumbnail View After 18 Years.md b/published/202212/20221216.3 ⭐️ Better Late Than Never! GNOME's File Picker Adds Thumbnail View After 18 Years.md new file mode 100644 index 0000000000..945591e75c --- /dev/null +++ b/published/202212/20221216.3 ⭐️ Better Late Than Never! GNOME's File Picker Adds Thumbnail View After 18 Years.md @@ -0,0 +1,88 @@ +[#]: subject: "Better Late Than Never! GNOME's File Picker Adds Thumbnail View After 18 Years" +[#]: via: "https://news.itsfoss.com/gnome-file-picker/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15380-1.html" + +虽迟但到!GNOME 的文件选取器在 18 年后增加了缩略图视图 +====== + +> 一个长期缺位、也是急需的功能请求,终于通过了! + +![][1] + +如今,程序的用户界面是非常重要的;即使是最简单的交互也能决定用户的体验。 + +GNOME 的文件选取器在查看文件时缺乏适当的缩略图预览,而是依赖于一个普通的列表视图。这对许多人来说可能是不直观的。 + +多年来,缺乏这一功能也成了许多段子和讨论的主题。 + +但是现在,在最初的 [功能请求][2] 提出 18 年之后,GNOME 终于可以支持一个合适的缩略图视图了。 + +让我们来看看这个即将到来的对 GNOME 文件选取器的改变。 + +### 该功能将随着 GNOME 44 到来 + +![GNOME 文件缩略图视图][3] + +正如这个由 GNOME 开发者 [Matthias Clasen][4] 提供的早期构建截图所展示的。GNOME 上的文件选取器将具有一个缩略图视图。 + +这就是它在 GNOME 43 上的样子: + +![GNOME 43 的文件选取器][5] + +**如何访问它?** 在 GNOME 上文件选取器的网格视图里,可以显示文件和文件夹的缩略图预览。 + +现在将很容易区分文件管理器中的项目;不再需要打开一个文件来查看它包含的内容了! + +![GNOME 文件缩略图视图选取器][6] + +当这个功能到来时,你可以通过点击右上方的新视图切换按钮来启用它。 + +**有什么变化?** 对于一个简单的功能添加来说,18 年是一个很长的时间。众多的技术原因使其实施成为一项艰巨的任务。 + +但我很高兴,它终于来了。😃 + +使之成为可能的原因之一是最近在 GTK 代码库中进行的废弃和现代化工作。 + +> 💡 GTK 是 GNOME 的一切的核心的工具箱。 + +而且,这些变化导致 [GtkListView][7] 和 [GtkGridView][8] 使用相同的数据模型来实现这个功能。 + +**预期何时?** 这个历史上的 [合并请求][9] 已经被接受,并为其引入 GNOME 铺平道路。 + +你可以期待它在 2023 年的某个时候与 GNOME 44 一起到来。 + +我很期待!😁 + +我们将把它作为 GNOME 44 功能提供的一部分来报道。所以,请继续关注我们的报道吧! + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/gnome-file-picker/ + +作者:[Sourav Rudra][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/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/gtk-file-chooser-gets-thumbnail-preview-support.png +[2]: https://bugzilla.gnome.org/show_bug.cgi?id=141154 +[3]: https://news.itsfoss.com/content/images/2022/12/GNOME_File_Thumbnail.png +[4]: https://twitter.com/matthias_clasen +[5]: https://news.itsfoss.com/content/images/2022/12/file-picker-now.png +[6]: https://news.itsfoss.com/content/images/2022/12/GNOME_File_Thumbnail-2.png +[7]: https://gitlab.gnome.org/GNOME/gtk/-/blob/main/gtk/gtklistview.c +[8]: https://gitlab.gnome.org/GNOME/gtk/-/blob/main/gtk/gtkgridview.c +[9]: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/5163 +[10]: https://mastodon.social/@itsfoss +[11]: https://twitter.com/itsfoss2 +[12]: https://notion.grsm.io/front-static/logo-ios.png +[13]: https://www.notion.so/front-static/meta/default.png diff --git a/published/202212/20221218.1 ⭐️ Try this Python-based file manager on Linux.md b/published/202212/20221218.1 ⭐️ Try this Python-based file manager on Linux.md new file mode 100644 index 0000000000..bdf9cf56a9 --- /dev/null +++ b/published/202212/20221218.1 ⭐️ Try this Python-based file manager on Linux.md @@ -0,0 +1,113 @@ +[#]: subject: "Try this Python-based file manager on Linux" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-dragonfly-navigator" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15396-1.html" + +在 Linux 上试试这个基于 Python 的文件管理器 +====== + +![][0] + +> Dragonfly Navigator 是用 Python 和 Qt 编写的通用文件管理器。 + +Dragonfly Navigator 是用 Python 和 Qt 编写的通用文件管理器。它易于安装和使用,并且是 Python 可以做什么的一个很好的例子。 + +Python 是一种流行的语言有几个原因,但我认为它的主要优势之一是它对初级程序员和有经验的编码人员同样有用。你可以从一门语言中获得一些令人兴奋的东西,从 [绘制基本几何形状][1] 到 [抓取网页][2] 再到编写僵尸启示录 [游戏][3],或者编写你每天都可以使用的桌面应用。这就是 Dragonfly Navigator:一个人人都可以使用的桌面程序。 + +### 安装 Dragonfly Navigator + +要安装 Dragonfly Navigator,首先从 [Git 仓库][4] 下载源代码。如果你使用的是 Debian Linux 或类似软件,请下载 `.deb` 文件。如果你使用的是 Fedora、CentOS、Mageia、OpenMandriva 或类似软件,请下载 `.tar.gz` 文件。 + +Dragonfly Navigator 只有很少的依赖。因为你不是通过包管理器安装它,所以由你来解决这些问题。它只有两个依赖,所以使用你的包管理器(`dnf` 或 `apt`)找到并安装它们: + +- PyQt5,也称为 `python-qt5` +- Python PIL,也称为 `pillow` + +### 启动 Dragonfly Navigator + +要启动 Dragonfly Navigator,请安装 `.deb` 文件(在基于 Debian 的系统上)或解压缩 `.tar.gz` 文件: + +``` +$ tar xvf dragonfly*gz +``` + +在基于 Debian 的系统上,Dragonfly Navigator 出现在你的应用菜单中。在其他系统上,你必须手动启动它,除非你 [手动安装][5]。 + +现在,我没有安装它,所以我手动启动它: + +``` +$ cd dragonfly +$ ./dragonfly +``` + +![Dragonfly Navigator is a two-panel file manager][6] + +### 双面板 + +Dragonfly Navigator 是一个双面板文件管理器,这意味着它总是向你显示两个目录。在启动时,这两个目录恰好是你的主目录。你可以在任一面板中浏览文件和文件夹。它们的功能完全相同,只有当你开始复制或移动文件时你“位于”哪个面板中才重要。 + +### 打开目录 + +要打开目录,请双击它。默认情况下,该目录在同一面板中打开。但是,如果你想使用双面板布局,请在双击时按住 `Ctrl` 键以在另一个面板中显示其内容。 + +### 打开文件 + +要打开文件,请双击或右键单击它。 + +是的,你可以右键单击文件将其打开。如果你习惯于右键单击调出上下文菜单,那么这需要一些时间来适应。不过,Dragonfly Navigator 中没有上下文菜单,你可能会惊讶地发现,当你将打开文件这一非常常见的操作减少到只需单击一次时,你会觉得自己节省了多少时间。现在可能看起来很傻,但相信我,你会逐渐珍惜它的。 + +### 快速预览 + +某些文件可用于快速预览,因此你不必在某个特定应用中打开它们。要预览文件,请将鼠标悬停在文件上,然后按键盘上的 `Alt` 键。预览出现在对面的面板中。 + +![The second panel of Dragonfly Navigator can be used as a preview pane.][7] + +### 复制和移动文件 + +要将文件从一个目录复制或移动到另一个目录(或从一个目录到另一个目录),有几个步骤。 + +- 在一个面板中,进入目标目录。这是你要将文件复制到的位置。 +- 在另一个面板中,选择要复制的文件。 +- 单击 Dragonfly Navigator 中间条中的 “复制Copy” 按钮。 + +要移动文件,请按照相同的步骤操作,但要单击 “移动Move” 按钮。 + +如果你不习惯双面板文件管理器,一开始会觉得很陌生。但是你仔细想想,在你常用的文件管理器中复制一个文件需要几个步骤(找到文件,打开另一个窗口,拖放等等)。做几次之后,它成为第二天性。 + +### 选择文件 + +通常,你单击一个文件或文件夹以使其成为你的活动选择。这可能与你当前的文件管理器没有什么不同,或者至少与你过去使用过的某些文件管理器没有什么不同。 + +要选择一个范围内的多个项目,请单击一个文件,然后按住 `Shift` 键并单击另一个文件。你单击的两个文件之间的所有项目也被选中。 + +要选择多个任意文件,请按住 `Ctrl` 键并单击要选择的文件。 + +### Qt 和 Python 的力量 + +Qt 工具包是一个强大的编程程序,Python 能够用它创建出色的应用。我在本文中只介绍了 Dragonfly Navigator 的基础知识,所以请下载它,阅读文档,点击并探索它,也许你会发现一个有趣的新文件管理器。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-dragonfly-navigator + +作者:[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/article/17/10/python-101#turtle +[2]: https://opensource.com/article/20/5/web-scraping-python +[3]: https://opensource.com/downloads/python-gaming-ebook +[4]: https://github.com/suncore/dflynav/releases +[5]: https://opensource.com/article/18/1/how-install-apps-linux +[6]: https://opensource.com/sites/default/files/2022-10/dragonfly-navigator.webp +[7]: https://opensource.com/sites/default/files/2022-10/dragonfly-navigator-preview.webp +[0]: https://img.linux.net.cn/data/attachment/album/202212/30/105706fk81jdkd1jkh9xpc.jpg \ No newline at end of file diff --git a/published/202212/20221220.5 ⭐️⭐️ Linux Mint 21.1 Arrives with a Ton of Visual Changes and Improvements.md b/published/202212/20221220.5 ⭐️⭐️ Linux Mint 21.1 Arrives with a Ton of Visual Changes and Improvements.md new file mode 100644 index 0000000000..c9f1a84de3 --- /dev/null +++ b/published/202212/20221220.5 ⭐️⭐️ Linux Mint 21.1 Arrives with a Ton of Visual Changes and Improvements.md @@ -0,0 +1,156 @@ +[#]: subject: "Linux Mint 21.1 Arrives with a Ton of Visual Changes and Improvements" +[#]: via: "https://news.itsfoss.com/linux-mint-21-1-release/" +[#]: author: "Rishabh Moharir https://news.itsfoss.com/author/rishabh/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15383-1.html" + +Linux Mint 21.1 发布:大量的视觉变化和改进 +====== + +> Linux Mint 21.1 带有一个新的默认主题和其他一些改进。 + +![][1] + +Linux Mint 21 已经收到了它的第一个更新,即 **Linux Mint 21.1 “Vera”**。 + +如果你想了解 Linux Mint 21 “Venessa”,我们的官方点评应该能让你尽快了解: + +> **[Linux Mint 21:最好的发行版变得更好了](https://itsfoss.com/linux-mint-21-review/)** + +这个版本与通常的小版本相似。它包括了对外观、感觉和功能的各种变化,这些变化可能看起来很细微,但会影响用户体验。 + +让我们来看看主要的亮点。我们关注的是 Linux Mint 的 Cinnamon 版。 + +### Linux Mint 21.1 Vera:有什么新内容? + +基于 **Ubuntu 22.04 LTS**,该版本的底层将继续使用 **Linux 5.15 LTS** 内核。 + +![][2] + +#### 👀 焕然一新的用户界面 + +当你第一次启动进入桌面时,你应该很快注意到光标的新外观。它默认采用了新的 Bibata 主题。 + +![][3] + +光标、图标主题列表增加了一些新的主题,如 Yaru、Breeze 和 GoogleDot,以及传统的 DMZ 主题。 + +![][4] + +除了传统的 Mint-X、Mint-Y 和 Mint-Legacy 主题外,用户还可以找到一组独特的应用图标主题,这包括 Papirus、Breeze、Numix 和 Yaru。 + +![][5] + +另一件你可能会注意到的有趣的事情,默认的强调色不再是传统的绿色,这是因为 **桌面主题现在换成了 Aqua**。强调色库提供了更多鲜艳的颜色,使桌面看起来更干净、更有吸引力。 + +对于那些希望恢复传统外观的人,你可以在主题中选择 “Mint-Y-Legacy”。 + +此外,以前在桌面上可见的 **电脑、主文件夹、网络和垃圾箱图标** 被默认删除,它们可以在文件管理器中访问。主文件夹的图标则显示在面板上。如果你想恢复以前的方式,你可以通过进入 系统首选项System Preferences 来恢复。 + +#### ✨ 增强的驱动器管理器 + +由于驱动器管理器在用户模式下运行,所以当你启动它时不再要求输入密码。 + +![][6] + +有专门的屏幕来显示离线连接和检测到 现场 USBLive USB 时的情况。你也应该发现挂载现场 USB 比以前更顺畅了。 + +![][7] + +对它也进行了一些修复。 + +Packagekit 现在可以清除已删除的驱动程序和软件包。这解决了一个众所周知的问题,即用户想要在不同版本的英伟达驱动之间进行切换。 + +此外,Debconf 也进行了修补,以解决启用安全启动时英伟达驱动程序的一个问题。 + +#### 👨‍💻 Flatpak 集成和软件管理器的改进 + +很高兴看到 软件管理器Software Manager更新管理器Update Manager 都支持 Flatpak 了。 + +安装和更新 Flatpak 应用程序的过程没有什么不同,应该是很容易的。 + +![][8] + +例如,软件管理器已被更新,以帮助区分用户正在查看的应用程序是哪个版本:Flatpak 版本还是系统版本。还有一个下拉框,用于在一个应用程序的系统版本和 Flatpak 版本之间切换。 + +卸载 Flatpak 应用程序和快捷方式不再需要密码了。在进行多项操作时也是如此。 + +#### 🔨 对 XApp 的改进 + +用户现在可以配置登录屏幕的光标大小和主题。以前,这些设置是全局设置。 + +另一方面,Warpinator 获得了更好的安全性,而 WebApp 管理器WebApp Manager 在编辑 WebApp 时具有额外的设置,包括私人浏览和导航栏。 + +#### ⭐ 新的 ISO 验证工具 + +在大多数情况下,人们想验证一个下载的 ISO 镜像的完整性。 + +因此,更简单方便的方法是,你可以通过右击 ISO 镜像,选择 “验证Verify”来完成。这就打开了 ISO 验证ISO Verification工具,你可以在那里填写必要的细节来进行验证。 + +![][9] + +值得注意的是,对于 Linux Mint 和 Ubuntu 的 ISO 镜像,SHA256sum 和 GPG 文件的 URL 是自动填写的。 + +#### 🎨 Cinnamon 5.6 桌面 + +Linux Mint 的旗舰桌面环境也有一些微小的视觉更新和变化。 + +在桌面的面板上,你会注意到主菜单和应用程序之间有一个细细的分隔线。像 Windows 一样,在最右边的角落里增加了一个新的角栏小程序,可配置,并支持创新的操作。 + +![][10] + +说到视觉效果,默认的文件管理器 Nemo 已经经历了一些变化: + +- 当选择一个或多个项目时,只有名称保持高亮,而图标则没有。 +- 日期现在以等宽字体显示。 +- 路径栏也得到了一些改进。 + +你可以毫不费力地访问 显示设置Display Settings,因为它的快捷方式已被添加到桌面的上下文菜单中。 + +### 🛠️ 其他改进措施 + +其他两个桌面环境已经分别更新到 **MATE 1.26** 和 **XFCE 4.16**。 + +美术作品集也得到了扩展,包括几张很酷的壁纸。 + +虽然我们只介绍了这个版本的主要亮点,但你可以通过 [官方更新日志][11] 了解更多细节。 + +### 获得 Linux Mint 21.1 + +现有的 Mint 用户应该得到通知,可以通过更新管理器轻松升级到 Mint 21.1。 + +那些想要重新安装 Linux Mint 的人可以从 [官方下载页面][12] 获得 ISO。 + +> **[Linux Mint 21.1][12]** + +如果你的网络较慢或不稳定,你也可以 [使用 Torrent 链接][13]。 + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/linux-mint-21-1-release/ + +作者:[Rishabh Moharir][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/rishabh/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/linux-mint-21-1-release.png +[2]: https://news.itsfoss.com/content/images/2022/12/Home.png +[3]: https://news.itsfoss.com/content/images/2022/12/bibata.png +[4]: https://news.itsfoss.com/content/images/2022/12/Themes.png +[5]: https://news.itsfoss.com/content/images/2022/12/linux-mint-new-look.png +[6]: https://news.itsfoss.com/content/images/2022/12/Drivemanager1.png +[7]: https://news.itsfoss.com/content/images/2022/12/DriverManager2.png +[8]: https://news.itsfoss.com/content/images/2022/12/Software_Manager.png +[9]: https://news.itsfoss.com/content/images/2022/12/ISOVerify.png +[10]: https://news.itsfoss.com/content/images/2022/12/Folder.png +[11]: https://www.linuxmint.com/rel_vera_cinnamon_whatsnew.php +[12]: https://www.linuxmint.com/download.php +[13]: https://linuxmint.com/torrents/ diff --git a/published/202212/20221221.3 ⭐️⭐️ Open source solutions for EV charging.md b/published/202212/20221221.3 ⭐️⭐️ Open source solutions for EV charging.md new file mode 100644 index 0000000000..aa952da127 --- /dev/null +++ b/published/202212/20221221.3 ⭐️⭐️ Open source solutions for EV charging.md @@ -0,0 +1,79 @@ +[#]: subject: "Open source solutions for EV charging" +[#]: via: "https://opensource.com/article/22/12/open-source-ev-charging" +[#]: author: "Joshua Pearce https://opensource.com/users/jmpearce" +[#]: collector: "lkxed" +[#]: translator: "duoluoxiaosheng" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15385-1.html" + +开源电动汽车充电解决方案 +====== + +> 利用太阳能、硬件和开源来建立你自己的电动车充电站。 + +![][0] + +也许你讨厌在寒冷或者酷热的时候加油,也许你关心环境问题。也许不断上涨的油价和通胀让你不得不考虑怎么更合理的安排开支。也许你只是认为电动汽车看起来很酷。不管什么原因,你都会因为即将拥有一辆电动汽车而感到激动,激动的不仅仅只有你。电动汽车的市场份额将在 [2040 年增长到 30%][1] 。[美国政府提供了一个简易的比较工具][2],用来展示维护一辆电动汽车的花费比维护一辆化石燃料汽车要少很多。尽管如此,电动汽车的充电费用仍然会给你的钱包带来沉重的负担。 + +通常,解决成本问题的最优雅的方法之一是应用开源原则来加速创新。幸运的是,在电动汽车充电领域已经找到了一种获得低成本电力和充电桩的方法。 + +为了控制电动汽车充电的成本,首先,你需要低成本的电力。在过去,这意味着从石油倒退到煤炭。如今,能将太阳能直接转化为电能的 [光伏发电][3]solar photovolataic(PV) 设备提供的电力通常被认为成本是最低的。煤炭公司正在因为无法继续与清洁的太阳能竞争而破产。这也是 [太阳能发电在世界各地都爆炸性增长][4] 的原因。许多房主把 [太阳能电池板放到他们的房顶][5] 或者后院的支架上,以满足他们家庭的电力需求。但是,如果你的屋顶面积有限或者后院很小,你怎样才能使用太能能给你的电动汽车充电呢? + +### 开源光伏停车篷 + +大型企业正在采取的一个方法是在他们的停车场上建造一个光伏顶篷。如果你自己想做一个,一个新的 [研究][6] 提供了三种新型开源光伏顶篷系统全面的机械和经济方面的分析。 + +- 使用纯木材的单一停车位横跨系统 +- 使用木材和铝的双停车位横跨系统 +- 使用木材和铝的悬臂系统 + +这些设计是以 5 * 6 个停车位的样式呈现的,但是这三个系统都可以扩展到任何需要的停车位数量。包括一个 6 千瓦的家用单车充电系统(如下图)。所有的支架都有 25 年的预期寿命来配合标准的光伏保修。 + +![Image of a single car PV canopy.][7] + +这些开源光伏顶篷都是为了抵御加拿大残酷的冬天而设计的,它们遵循加拿大严格的建筑规范。所以,不管你住在其他任何地方,这些系统的设计都仍然可以为你工作。顶篷的 [完整设计][8] 以及材料清单,包括基本说明都有提供。它们以开源许可的方式发布,保证任何人都可以依照关于 DIY 太阳能收集器的免费书籍 《[拥抱太阳][9]To Catch the Sun》 制作它。 + +前面提到的 [研究][6] 结果显示,开源设计比专利产品的成本低很多。单跨系统可节省成本 82% 到 85%,双跨系统节省成本 43% 到 50%,悬臂系统节省 31% 到 40% 。 + +最重要的是,这些设计给你提供了足够多的能源(如果你只是正常通勤)来满足你的充电需求。在运行的第一年,光伏顶篷可以提供目前市场上效率最低的电动汽车充电所需电量的 157% 。 + +![Image of an OpenEVSE charging station.][10] + +### 开源电动汽车充电桩 + +减少电动车维护成本的另一个办法是安装一个开源的电动车充电桩。[OpenEVSE][11] 是一个基于 Arduino 的充电桩,由 [开源软件][12] 和硬件组成,可以以 DIY 的方式制作。它们体积小,重量轻,便于携带,你可以在家里或者旅途上使用它们。 + +OpenEVSE 为世界各地的许多电动车制造商提供充电站。你可以根据自己的需求调整它。OpenEVSE 已经相当成熟,支持许多先进的功能,包括可调电流,温度检测和实时功率显示。你可以购买预先组装好的硬件马上体验。如果你想体验更多的乐趣节省更多的钱,可以购买一套套件自己动手制作。 + +![Image of the OpenEVSE kit.][13] + +我希望未来可以看到更多关于电动汽车充电解决方案的设计。睁大眼睛,撸起袖子加油干,享受组装你的开源太阳能充电桩的乐趣。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/open-source-ev-charging + +作者:[Joshua Pearce][a] +选题:[lkxed][b] +译者:[duoluoxiaosheng](https://github.com/duoluoxiaosheng) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jmpearce +[b]: https://github.com/lkxed +[1]: https://about.bnef.com/electric-vehicle-outlook/ +[2]: https://fueleconomy.gov/feg/Find.do?action=sbsSelect +[3]: https://opensource.com/article/21/11/open-source-solar-power +[4]: https://www.alliedmarketresearch.com/photovoltaic-market +[5]: https://linux.cn/article-15374-1.html +[6]: https://doi.org/10.3390/technologies10060114 +[7]: https://opensource.com/sites/default/files/2022-12/Single%20car%20open%20source%20PV%20canopy.png +[8]: https://www.appropedia.org/Open-source_Photovoltaic_-_Electrical_Vehicle_Carport_Designs +[9]: https://tocatchthesun.com/ +[10]: https://opensource.com/sites/default/files/2022-12/OpenEVSE%20charging%20an%20electric%20car.png +[11]: https://openevse.com/index.html +[12]: https://github.com/OpenEVSE +[13]: https://opensource.com/sites/default/files/2022-12/OpenEVSE%20kit.png +[0]: https://img.linux.net.cn/data/attachment/album/202212/27/171530ayuyongagafyxp5o.jpg \ No newline at end of file diff --git a/published/202212/20221226.1 ⭐️ Manjaro Linux 22.0 Releases Featuring Xfce 4.18 and Linux Kernel 6.1.md b/published/202212/20221226.1 ⭐️ Manjaro Linux 22.0 Releases Featuring Xfce 4.18 and Linux Kernel 6.1.md new file mode 100644 index 0000000000..d94f5b884e --- /dev/null +++ b/published/202212/20221226.1 ⭐️ Manjaro Linux 22.0 Releases Featuring Xfce 4.18 and Linux Kernel 6.1.md @@ -0,0 +1,102 @@ +[#]: subject: "Manjaro Linux 22.0 Releases Featuring Xfce 4.18 and Linux Kernel 6.1" +[#]: via: "https://news.itsfoss.com/manjaro-22-0-release/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15391-1.html" + +Manjaro Linux 22.0 发布 +====== + +> Manjaro Linux 22.0 带着各种升级来了! + +![][1] + +Manjaro Linux 是一个基于 Arch Linux 的滚动发布发行版,专注于提供用户友好和无障碍体验。 + +自 6 月发布 “[Ruah][2]” 以来,Manjaro 的开发仍在继续,并为最新的版本铺平了道路,它被称为 “Sikaris”。 + +这是 2022 年最后的流行的发行版之一。让我们看看它提供了什么。 + +### Manjaro 22 “Sikaris” 有什么新内容? + +![][3] + +Sikaris 版本带来了许多改进,一些值得注意的包括: + +- 桌面环境的升级 +- Linux 内核 6.1 +- 动态墙纸 +- 各种用户体验的改进 + +#### 桌面环境的升级 + +这个版本对 Manjaro Linux 的三个不同版本进行了许多改进。让我带你看看这些改进。 + +**对于 Manjaro GNOME:** 它使用是的 GNOME 43,有一个重新设计的系统状态菜单,可以让你在常用的设置之间快速切换。 + +他们还更新了他们的 “布局切换器Layouts Switcher” 应用程序,包括各种改进和修复。 + +![][4] + +此外,你可以创建你的动态壁纸并使用 [Gradience][5] 来定制你的主题。 + +**对于 Manjaro KDE:** “Sikaris” 版本采用了最新的 Plasma 5.26 桌面环境,具有许多改进,如动画壁纸、新的小工具,以及 Plasma 大屏幕的改进。 + +![][6] + +还有一些其它的调整,允许壁纸根据系统的主题来改变。 + +此外,Dolphin 文件管理器现在有一个新的功能叫“选择模式Selection Mode”,可以让你选择多个文件或文件夹。 + +**对于 Manjaro Xfce:** 使用的是 Xfce 4.18,该版本在 Thunar 文件管理器中获得了新的文件高亮显示和递归搜索功能。 + +可能是第一个包括 [新发布的 Xfce 4.18][7] 的开箱即用发行版。 + +面板也被更新了,允许最大化的应用程序填满面板后面的区域,而且面板的长度现在是以像素而不是百分比计算的。 + +![][8] + +此外,“控制中心Control Center”现在将所有用于管理系统的桌面模块集中到一个易于使用的窗口。 + +这些功能应该会改善你的整体体验! 😃 + +#### Linux 内核 6.1 + +Manjaro 22 ”Sikaris“ 使用 [Linux 内核 6.1][9] 提供了各种增强功能。 + +这些包括对 Rust 的实验性支持,对英特尔即将推出的 Meteor Lake 芯片的初步支持,改进的 ARM SoC 支持,以及更多。 + +### 下载 Manjaro 22 + +Manjaro 22 “Sikaris” 可用于 X86_64 和 ARM 系统,前往官方 [下载页面][10] 获取。 + +> **[下载 Manjaro 22][10]** + +**对于现有的用户,** 你只需在命令行中运行 `sudo pacman -Syu` 就可以得到这个版本的 Manjaro Linux。 + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/manjaro-22-0-release/ + +作者:[Sourav Rudra][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/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/manjaro-22-0-release.png +[2]: https://news.itsfoss.com/manjaro-21-3-0-release/ +[3]: https://news.itsfoss.com/content/images/2022/12/Manjaro_Linux_KDE_2.png +[4]: https://news.itsfoss.com/content/images/2022/12/Manjaro_Linux_GNOME.png +[5]: https://github.com/GradienceTeam/Gradience +[6]: https://news.itsfoss.com/content/images/2022/12/Manjaro_Linux_KDE.png +[7]: https://news.itsfoss.com/xfce-4-18-release/ +[8]: https://news.itsfoss.com/content/images/2022/12/Manjaro_Linux_XFCE.png +[9]: https://news.itsfoss.com/linux-kernel-6-1-release/ +[10]: https://manjaro.org/download/ diff --git a/published/202212/20221227.0 ⭐️⭐️ 5 Upcoming Code Editors that May Challenge the Supremacy of Visual Studio Code.md b/published/202212/20221227.0 ⭐️⭐️ 5 Upcoming Code Editors that May Challenge the Supremacy of Visual Studio Code.md new file mode 100644 index 0000000000..9b925483b3 --- /dev/null +++ b/published/202212/20221227.0 ⭐️⭐️ 5 Upcoming Code Editors that May Challenge the Supremacy of Visual Studio Code.md @@ -0,0 +1,121 @@ +[#]: subject: "5 Upcoming Code Editors that May Challenge the Supremacy of Visual Studio Code" +[#]: via: "https://news.itsfoss.com/upcoming-code-editors/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15399-1.html" + +5 个即将推出的可能会挑战 VS Code 的代码编辑器 +====== + +> 这些有趣的代码编辑器可能会在 2023 年取代 VS Code! + +![5 Upcoming Code Editors that May Challenge the Supremacy of Visual Studio Code][1] + +嗯,2022 年即将结束。 + +我们推出了针对 Linux 发布的新的卓越代码编辑器,从 [Lite XL][2] 到 [Pulsar][3] 等。 + +因此,为了纪念这一点,我编制了这份即将推出的 Linux 代码编辑器列表,它们很有可能挑战 [VS Code][4] 的霸主地位。 + +让我带你了解它。 + +### 1、Pulsar + +![pulsar][5] + +[Pulsar][6] 是一个社区主导的开源代码编辑器,旨在替代著名的 Atom 代码编辑器。 + +它使用与 Atom 相同的代码库,有一个开源的后端(得益于逆向工程的工作),更新了依赖性。 + +他们有计划在不久的将来对其进行改进。 + +它可以从 [官方网站][7] 下载,但请记住,它还处于早期开发阶段。 + +### 2、Atom 社区版 + +![atom community][8] + +“[Atom 社区版][10]” 也是从现已停止维护的 Atom 编辑器的 [灰烬][9] 中重生的,它是一个旨在接管其前身的概念和想法的项目。 + +他们的目标是从提供最基本的特性开始,并使其与 [atom-ide-ui][11] 包中的可用功能相媲美。 + +它可能会有更多东西,但就目前的形式而言,我现在不建议新用户这样做。与 Pulsar 相比,他们的长期目标略有不同,这使它成为另一个值得一看的项目。 + +但是,到 2023 年,情况可能会有所不同。 + +尽管如此,那些喜欢冒险的人可以使用 [源代码][12] 来构建它。 + +### 3、Lapce + +![lapce][13] + +一个轻量级和快速的开源代码编辑器? + +这就是 [Lapce][14]! + +它是一个基于 Rust 的开源代码编辑器,专注于提供这样的体验。 + +我们在它处于 pre-alpha 阶段时对其进行了介绍,但在 2023 年它可能会引起注意。 + +### 4、Zed + +![zed breadcrumbs][15] + +[Zed][16] 是即将推出的代码编辑器,旨在挑战 VS Code 的统治地位。 + +它有许多功能,例如实时协作、极简界面、代码动作、命令面板等 [更多功能][17]。 + +事实上,Atom 的创始人 [Nathan Sobo][18] 是这一切的幕后推手,并将其称为 Atom 的“_精神继承者_”。 + +### 5、Lite XL + +![lite xl][19] + +[Lite XL][2] 是一个用 Lua 编写的开源代码编辑器,仅使用 3MB 的存储空间和大约 20MB 的内存。(与 VS Code 的 ~550 MB 相比)。 + +如果你正在寻找一个完全最小化的代码编辑器,它可能会合你的口味。 + +你现在可以从 [官方网站][20] 获取它,它会定期更新,预计 2023 年也会如此。 + +**好了,这是这份名单的结束,也是 2022 年的结束。** 😃 + +_我可能错过了一些代码编辑器,我知道你会在评论部分告诉我。随时分享你的想法!_ + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/upcoming-code-editors/ + +作者:[Sourav Rudra][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://news.itsfoss.com/author/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/upcoming-editors-which-may-challenge-vs-code.png +[2]: https://itsfoss.com/lite-xl/ +[3]: https://news.itsfoss.com/pulsar-editor/ +[4]: https://code.visualstudio.com +[5]: https://news.itsfoss.com/content/images/2022/12/Pulsar.png +[6]: https://pulsar-edit.dev +[7]: https://pulsar-edit.dev/download.html#releases +[8]: https://news.itsfoss.com/content/images/2022/12/Atom_Community.jpg +[9]: https://github.blog/2022-06-08-sunsetting-atom/ +[10]: https://atom-community.github.io +[11]: https://github.com/facebookarchive/atom-ide-ui +[12]: https://github.com/atom-community/atom +[13]: https://news.itsfoss.com/content/images/2022/12/Lapce.jpg +[14]: https://lapce.dev +[15]: https://news.itsfoss.com/content/images/2022/12/Zed_Early.jpg +[16]: https://zed.dev/ +[17]: https://zed.dev/features +[18]: https://twitter.com/nathansobo +[19]: https://news.itsfoss.com/content/images/2022/12/LiteXL.jpg +[20]: https://lite-xl.com/en/downloads +[21]: https://mastodon.social/@itsfoss +[22]: https://twitter.com/itsfoss2 diff --git a/published/202212/20221229.0 ⭐️ Be Delighted! Unity Teases Version 7.7 as the Sign of Active Development.md b/published/202212/20221229.0 ⭐️ Be Delighted! Unity Teases Version 7.7 as the Sign of Active Development.md new file mode 100644 index 0000000000..aa582149ce --- /dev/null +++ b/published/202212/20221229.0 ⭐️ Be Delighted! Unity Teases Version 7.7 as the Sign of Active Development.md @@ -0,0 +1,123 @@ +[#]: subject: "Be Delighted! Unity Teases Version 7.7 as the Sign of Active Development" +[#]: via: "https://news.itsfoss.com/unity-7-7-dev/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15398-1.html" + +Unity 正在积极开发,预告 7.7 版 +====== + +> Unity 7.7 版的更新计划为该桌面环境带来一些视觉上的改革。 + +![][1] + +Unity,经典的桌面环境,从 2010 年到 2017 年都是 Ubuntu 的一部分,将收到一个大的新版本。你可以期待它在 2023 年的某个时候发布,但目前还没有具体的发布日期。 + +但不是由 [Canonical][2] 发布。 + +**如果你不知道:** Unity 的开发由一位年轻的开发者 [Rudra Saraswat][3] 接手,他也是 [Ubuntu Unity][4] 衍生版的创造者,这是 Ubuntu 的一个官方特色版。 + +在最近的一篇 [博文][5] 中,Rudra 向我们揭示了 Unity 7.7 的一角和即将到来的各种改进。 + +让我带你看看这些。 + +### Unity 7.7 值得期待的地方 + +![unity 7.7 一窥][6] + +这次披露的内容有很多,其中包括: + +- 更新的欢迎应用程序 +- UWidgets +- 改进的仪表盘 +- 面板的调整 +- 增强的通知指示器 + +#### 更新的欢迎应用程序 + +![][7] + +一个新的欢迎应用程序将被引入 Unity,它基于 Ubuntu Flutter 社区开发的原型(用 [Flutter][8] 编写)。 + +这个应用程序将不只限于一个发行版,而是适用于 Unity 所支持的所有发行版。 + +#### UWidgets + +![][9] + +终于有了,Unity 桌面上的小部件?像 KDE 一样? + +好吧,在 Unity 中引入用 Python 编写的小部件,应该很简单就可以设置(只是复制几个文件的问题)。 + +屏幕截图展示了一堆小部件,如时钟、系统监视器、Spotify 的小部件等等。 + +这还不是全部,Rudra 还提到: + +> 我们将为 UWidgets 建立一个网页商店/仓库,在那里你可以提交你自己的小部件,或者下载并试用 Unity 7.7 上所有这些令人惊叹的小部件。 + +这应该会使用户更容易找到和下载小部件! + +#### 改进的仪表盘 + +![][10] + +仪表盘Dash也被刷新了,新的设计基于 Unity 7 的原始设计概念(在 Canonical 放弃它之前)。 + +按照截图,它应该不会占用大量的屏幕空间,而且还很有用。 + +#### 面板的调整 + +![][11] + +现在的面板比之前的版本略大且更精致。 + +#### 增强的通知指示器 + +![][12] + +这对 Unity 来说是一个巨大的可用性改进;用户现在终于可以利用一个适当的通知指示器了。 + +它将显示与你的应用程序、系统和更多相关的基本通知。 + +#### 其他变化 + +![][13] + +一些更有用的技术改进包括: + +- unity-control-center 的外壳 UI 得到了改进 +- 默认的面板不透明度降低到 0.75 +- 默认的启动器图标尺寸被缩小了 +- 启动器按钮(Ubuntu 图标)被替换为半透明的图标,类似于 Ubuntu Unity 21.04 的启动器按钮。 + +_对 Unity 7.7 感到激动?请在下面的评论中告诉我你的想法。_ + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/unity-7-7-dev/ + +作者:[Sourav Rudra][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/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/ubuntu-unity-7-7-release.png +[2]: https://canonical.com +[3]: https://about.ruds.io +[4]: https://ubuntuunity.org +[5]: https://unityd.org/unity-7-7-peek/ +[6]: https://news.itsfoss.com/content/images/2022/12/Unity_7.7_Sneakpeek.jpg +[7]: https://news.itsfoss.com/content/images/2022/12/Unity_7.7_Sneakpeek_Welcome.jpg +[8]: https://flutter.dev +[9]: https://news.itsfoss.com/content/images/2022/12/Unity_7.7_Sneakpeek_UWidgets.jpg +[10]: https://news.itsfoss.com/content/images/2022/12/Unity_7.7_Sneakpeek_Dash.jpg +[11]: https://news.itsfoss.com/content/images/2022/12/Unity_7.7_Sneakpeek_Panels.jpg +[12]: https://news.itsfoss.com/content/images/2022/12/Unity_7.7_Sneakpeek_Notif.jpg +[13]: https://news.itsfoss.com/content/images/2022/12/unity-control-center.png diff --git a/published/20221201.5 ⭐️⭐️ What is Firefox ESR How to Install it in Ubuntu.md b/published/20221201.5 ⭐️⭐️ What is Firefox ESR How to Install it in Ubuntu.md new file mode 100644 index 0000000000..481d09dc61 --- /dev/null +++ b/published/20221201.5 ⭐️⭐️ What is Firefox ESR How to Install it in Ubuntu.md @@ -0,0 +1,145 @@ +[#]: subject: "What is Firefox ESR? How to Install it in Ubuntu?" +[#]: via: "https://itsfoss.com/firefox-esr-ubuntu/" +[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15421-1.html" + +什么是 Firefox ESR?如何在 Ubuntu 中安装它? +====== + +![][0] + +Ubuntu 的 Snap 版本你不喜欢?不喜欢每一次 Firefox 的发布都要不断地改变东西?如果你重视稳定性而不是功能,你可以试试 Firefox ESR 版本。 + +### 什么是 Firefox ESR? + +Firefox ESR 是 Firefox 的特别版,它不一定像普通版那样每月都有新功能,但它能提供稳定和安全的浏览体验。这适用于企业、组织和机构,在这些地方,稳定性和核心功能比闪亮的新功能更重要。 + +可以把 Firefox ESR 看作是 Linux 发行版的长期稳定版本。它们不一定得到全新的功能,但它们会得到定期的安全和维护更新。这给了用户一个熟悉和稳定的环境。 + +#### 你为什么要关心 Firefox ESR? + +Firefox 几乎每个月都会发布一个新版本。它包含安全和功能更新。 + +但有些人可能不喜欢各种功能的加入和删除。如果在更新之后,你一直想知道某些设置到哪里去了,或者不喜欢与以前不同的东西,Firefox ESR 可能值得一试。 + +基本上,如果你更看重稳定性而不是新功能,那么 Firefox ESR 就适合你。这也是 Debian 中携带的 Firefox 版本,Debian 以其是市场上最稳定的发行版之一而闻名。 + +让我告诉你如何在 Ubuntu 上获得 Firefox ESR。**你可以同时安装 Firefox 和 Firefox-ESR 两个版本。它们的标识没有视觉上的区别,所以你必须注意你打开的是哪个火狐版本。** + +### 在 Ubuntu 中安装 Firefox ESR + +在进入安装之前,让我来分享一下普通 Firefox 和 Firefox-ESR 之间的版本差异是什么。在写这篇文章的时候: + +- Firefox 的版本是 **107.0-2**。 +- Firefox-ESR 目前的版本是 **102.5.0esr**。 + +所以,如果这对你来说没问题,让我们看看第一个方法。 + +#### 方法 1:使用 PPA 安装 Firefox-ESR + +Firefox-ESR 在 Ubuntu 的默认仓库中是不可用的,所以你可以使用 PPA。 + +PPA 只不过是一个由个别技术人员或开发者维护的仓库,拥有默认仓库所没有的东西。 + +如果你想了解更多关于 PPA 的信息,我建议你查看我们的其他指南,其中解释了 [如何在 Linux 上使用 PPA][1]。 + +打开你的终端,使用给定的命令来添加 Firefox-ESR 的 PPA: + +``` +sudo add-apt-repository ppa:mozillateam/ppa +``` + +然后按回车键确认你要添加 PPA: + +![add firefox esr repository in ubuntu][2] + +完成后,你需要更新 Ubuntu 中的仓库索引,以便从这些变化中生效: + +``` +sudo apt update +``` + +现在,你可以通过使用给定的命令来安装 Firefox-ESR: + +``` +sudo apt install firefox-esr +``` + +接下来,你可以使用给定的命令来检查你系统中 Firefox-ESR 的安装版本: + +``` +firefox-esr -v +``` + +![check installed version of firefox esr in ubuntu][3] + +如何从 Ubuntu 卸载 Firefox-ESR? + +如果 ESR 对你的工作来说感觉太过时了,或者由于其他原因你想从你的系统中删除它,你可以按照以下步骤删除 Firefox-ESR 包和仓库。 + +首先,让我们用下面的方法删除 Firefox-ESR 包: + +``` +sudo apt remove firefox-esr +``` + +现在,你可以使用给定的命令来 [从 Ubuntu 删除 PPA][4]: + +``` +sudo add-apt-repository --remove ppa:mozillateam/ppa +``` + +这就完成了! + +#### 方法 2:使用 Snap 安装 Firefox-ESR + +不管你爱不爱它,Snap 在 Ubuntu 上是预先配置好的,我发现使用 Snap 是安装软件包的一个很好的方法,特别是当你想避免从源码构建它们或使用 PPA 时。 + +使用 Snap 安装 Firefox-ESR,你需要做的就是使用给定的命令: + +``` +sudo snap install firefox --channel=esr/stable +``` + +![install firefox esr using snaps in ubuntu][5] + +如何删除 Firefox-ESR Snap? + +要删除 Firefox-ESR(snap 包),请使用 [snap remove 命令][6]: + +``` +sudo snap remove firefox +``` + +这就完成了! + +### 总结 + +我在本指南中解释了如何使用多种方法在 Ubuntu 中安装 Firefox-ESR。我个人使用 Firefox-ESR 而不是普通版本,因为我有随机崩溃的情况。 + +自从我改用 Firefox-ESR 后,一切都变得稳如磐石。如果你也有同样的问题,你应该试一试。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/firefox-esr-ubuntu/ + +作者:[Sagar Sharma][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/sagar/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/ppa-guide/ +[2]: https://itsfoss.com/content/images/wordpress/2022/11/add-firefox-esr-repository-in-ubuntu.png +[3]: https://itsfoss.com/content/images/wordpress/2022/11/check-installed-version-of-firefox-esr-in-ubuntu.png +[4]: https://itsfoss.com/how-to-remove-or-delete-ppas-quick-tip/ +[5]: https://itsfoss.com/content/images/wordpress/2022/11/install-firefox-esr-using-snaps-in-ubuntu.png +[6]: https://itsfoss.com/remove-snap/ +[0]: https://img.linux.net.cn/data/attachment/album/202301/07/165704ojar9wfkvptwop0w.jpg \ No newline at end of file diff --git a/published/20221202.0 ⭐️⭐️ 8 ideas for measuring your open source software usage.md b/published/20221202.0 ⭐️⭐️ 8 ideas for measuring your open source software usage.md new file mode 100644 index 0000000000..cdc1ab5063 --- /dev/null +++ b/published/20221202.0 ⭐️⭐️ 8 ideas for measuring your open source software usage.md @@ -0,0 +1,150 @@ +[#]: subject: "8 ideas for measuring your open source software usage" +[#]: via: "https://opensource.com/article/22/12/open-source-usage-metrics" +[#]: author: "Georg Link https://opensource.com/users/georglink" +[#]: collector: "lkxed" +[#]: translator: "CanYellow" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15411-1.html" + +衡量你的开源软件使用情况的 8 个方法 +====== + +![][0] + +> 想知道如何为你的开源软件项目收集使用指标?考虑一下使用这些替代方案的利弊。 + +我们这些支持开源项目社区的人经常被问到很多有关使用指标的问题。这些指标通常是为了通过用户量和知名度来衡量软件的重要性。我们一般都想知道有多少人使用该软件,有多少次安装,以及有多少人生活接触过它。 + +但简而言之,我们尚无法直接回答上述问题。 + +如果你想要寻找一个明确的解决方案,那很抱歉要让你失望了。有关使用指标的问题,没有人有完美的答案,至少没有准确的答案。 + +好消息是,有一些近似的和替代指标至少能够部分地满足你对软件使用情况了解的渴求。本文探讨了这些替代方案以及它们的优点和缺点。 + +### 下载量 + +当你浏览提供软件的网站时,你通常可以看到软件的下载次数。映入我脑海的一个例子是 Firefox ,它曾经有一个下载计数器。Firefox 的下载量是一个印象深刻的数字,给人的印象是 Firefox 是一个流行的浏览器,在一段时间内确实如此。 + +然而,个人行为会直接影响这一数字的准确性。举例而言,当一个人定期重置他们的设备时,每一次重建都会引发一次独立的下载。考虑到这一现实,需要设计一种方法从下载量中去除几十次(或许是几百次)的下载次数,因为那是一个人。 + +下载量不仅会高估使用量,还会低估使用量。例如,一个系统管理员可能会下载一个新版本的 Firefox 一次并将其拷贝到 U 盘上,然后安装到数百台设备上。 + +下载量指标是易于收集的,你可以在服务器上记录每一个下载请求。问题在于你不知道在这些软件下载以后会发生什么。下载它的人是否如预期的那样使用软件,还是遇到了问题而放弃了它。 + +对于开源项目而言,你可以考虑各种下载量指标,比如来自以下途径的下载指标: + +- 项目官网 +- 包管理器,比如 npm、PyPi 和 Maven +- 代码仓库,如 GitHub、GitLab、Gitee 等 + +你可能还对源代码的下载量感兴趣,因为下游项目更可能使用源代码形式(参见 [《如何衡量你的开源项目的影响》][1]一文)。相应的下载指标包括: + +- 从代码仓库克隆的数量,比如 GitHub、GitLab 和 Gitee +- 从官网下载的归档文件(tar、zip)的数量 +- 通过像 npm、PyPi 和 Maven 这样的包管理器下载的源代码数量 + +源代码的下载指标比二进制代码的下载指标更不可靠(虽然尚无相关研究表明如此)。试想一下,一名开发人员想要你的最新版本的源代码,并将他们的构建管道配置为每次构建都克隆你的仓库。再想象一下,一个自动构建过程失败了,它试图重新构建而不断地克隆你的版本库。你还可以考虑这样一个下载量低于预期的场景——源代码仓库在某些地方缓存了,下载来源是由这些缓存所提供的。 + +> **[相关阅读:跟踪你的开源社区的 5 个指标][2]** + +总而言之,下载量指标是用于提供当前使用情况和探测趋势的很好的指征。我们无法明确地定义一次下载是如何转化为使用的。不过我们可以认为增加的下载量是更多潜在用户的标志。举例而言,如果你为你的软件做了广告并在活动期间得到了更高的下载量,可以合理地假定广告推动了更多人下载该软件。下载行为的来源与元数据还可以提供额外的与使用行为相关的内容。你的软件的哪些版本仍在使用中?什么操作系统或者特定语言的版本更加流行?这有助于社区决定将哪个平台的软件作为支持与测试的优先选项。 + +### 议题 + +作为一个开源项目,你可能有一个议题追踪器。当某个人提出一个议题时一般有两个目标,报告一个漏洞或者请求增加一项功能。提议者很可能已经使用过你的软件了。作为一名用户,他可能发现了一个漏洞或者发现了对一个新功能的需求。 + +很明显,大多数用户不会执行额外的步骤来提交议题。提议者是我们的忠实用户,我们对他们表示感谢。此外,通过提出议题,他们已经成为了非代码贡献者,他们也有希望成为代码贡献者。经验法则是大约每 10000 名用户中,可能有 100 名提议者,以及 1 名代码贡献者。当然取决于用户类型,上述比例可能有出入。 + +回到指标问题,你可以将提议者数量作为评估使用量的下界。相关的指标包括: + +- 提议者数量 +- 活跃提议者的数量(在过去 6 个月内提出议题的提议者) +- 同时有代码贡献的提议者的数量 +- 尚未解决的议题的数量 +- 对议题发布的评论数量 + +### 邮件列表、论坛和问答网站 + +很多开源项目都拥有用户邮件列表、论坛,并且出现在类似 Stack Overflow 的问答网站上。与提问者一样,在这些地方发帖的人可被视作用户的冰山一角。与邮件列表、论坛和问答网站上的社区活跃程度相关的指标也可用于反映用户数量的上升或下降。相关指标可以集中于以下地方的活动,包括: + +- 用户邮件列表的订阅量 +- 论坛用户的数量 +- 问题的数量 +- 答案的数量 +- 发布信息的数量 + +### 上报功能 + +为了获得精确的用户数量,一个方案是让软件在使用时上报信息。 + +这是令人毛骨悚然的。想象一下,系统管理员的防火墙报告了一个非预期的到你的服务器的网络连接,你不仅无法再收到软件报告(被防火墙拦截了),恐怕连你的软件也可能在未来被禁止使用。 + +负责任的设置上报功能的方式为设置一项可选服务来检查更新并让用户知道使用最新版本。另一项可选功能可以集中在使用遥测上,你可以通过该功能询问用户是否允许匿名上报软件使用情况。如果经过深思熟虑的实施,这种方式可以允许用户通过他们使用软件的方式帮助优化软件。用户可以持有这样的意见:我一般不允许这种使用信息的分享;但对于一些软件,因为希望开发人员在长期内将软件优化得更好,我愿意这样做。 + +### 星标与复刻 + +星标与复刻是如 GitHub、GitLab、Gitee 等社交化编程平台的功能。这些平台上的用户可以给一个项目加星标。为什么他们要给项目加星标呢?GitHub 的文档作出了解释:你可以给一个仓库和主题加星标,以跟踪感兴趣的项目,和在你的新闻订阅中发现相关的内容。给一个项目加星标与将其加入书签的效果一样,并且还提供了一种向项目仓库的维护者展示赞赏的方式。星标的数量已经成为了项目流行程度的标志。当一个项目发布重大公告并获得相当的关注时,项目的星标数量会呈上升趋势。星标的数量指标并不反映软件的使用量。 + +在社交化编程平台上的复刻Fork是将项目仓库复制一份在自己名下。仓库的非维护者可以在他们自己的克隆仓库中做修改,并将修改通过拉取请求pull request(PR)的方式提交审核。复刻比星标更能反映软件社区的规模。开发者也可能为了保存一份代码副本而克隆一个项目,以便在原始仓库消失后他们仍能访问代码。因为复刻功能在代码贡献工作流中的应用,复刻量是衡量开发社区的良好指标。复刻量通常也不反映非开发人员的使用,因为非开发人员一般不创建复刻。 + +### 社交媒体 + +包括 Facebook、Instagram、LinkIn、Reddit、Twtter 等社交媒体平台提供了相同兴趣的人们聚集的平台。采用社交媒体策略,开源项目可以通过在平台上设置相应的聚集空间来吸引对项目感兴趣的人们。通过这些社交媒体途径,开源项目可以分享项目新闻、更新,指出贡献者和用户。这些社交媒体途径还可以用于认识那些本不会通过其他途径与项目互动的人。 + +我在犹豫是否建议关注以下指标,因为它与软件的真实使用量没有清晰的联系,并通常需要分析其中的积极、消极和中性的情绪。人们可能因为很多不同的原因对你的项目感到激动而关注它,但并不实际使用它。然而与之前已经讨论过的指标一样,能够在社交媒体上吸收人群本就是项目受关注的整体指标。不同社交媒体平台的指标包括: + +- 关注者与订阅者的数量 +- 消息的数量 +- 活跃的消息作者的数量 +- 喜欢、分享、回复以及其他交互的数量 + +### 网站分析与文档 + +网站流量也是一个有用的指标。这一指标主要受到你的服务范围以及市场营销活动影响,而不是用户量。然而,我们还有一张王牌:我们的用户文档、教程、手册以及 API 文档。我们可以发现我们的网站以及文档中的什么主题更引人注意。文档的访问者数量应当大致随着软件的使用者数量增长而增长。因此我们可以通过网站的访问量探知对项目的普遍兴趣,并进一步通过观察文档的访问者来观察用户风向。这些指标包括: + +- 网站访问者数量 +- 文档访问者的数量 +- 访问者在你的网站与文档上所花的时间 + +### 活动 + +活动的指标可以在你主持与项目相关的活动时使用。这是建立社区的很好的方式。有多少人提交摘要想要在你的活动中发言?有多少人出席你的活动?不论是在线下活动还是线上活动这可能都很有趣。当然,你如何推广你的活动在很大程度上决定有多少人到场。同时你可以将自己的活动与人们出行的大型活动放在一起以方便人们参加你的活动。只要你使用一贯的活动策略,你可以通过演讲者提交的材料与参会者注册的增加来表征软件受欢迎程度与用户群的增加。 + +你并不需要举办你自己的活动来收集有用的指标。如果你在开源活动中主持有关你项目的讨论,你可以衡量有多少人出席主要关注你的项目的会议。像 [FOSDEM][T1] 这样的活动,一些讨论特别聚焦于开源项目的更新与发布,会议室中都挤满了人(像 FOSDEM 的所有会议一样)。 + +你可以考虑如下指标: + +- 以你的项目为中心的活动的出席人数 +- 提交到以你的项目为中心的活动的演讲数量 +- 以你的项目为中心的演讲的出席人数 + +### 关于估算开源软件使用的结论 + +正如我们已经如上展现的,有很多指标可以反映软件使用的趋势,没有一个指标是完美的。在大多数情况下,这些指标可能被个人行为、系统设计和噪音所严重影响。因此,考虑到每一个指标的相对不确定性,我们建议你不要孤立地使用任何一个指标。但是如果你从不同的来源收集了一系列的指标,你应当能够探测到用户行为与软件使用的趋势。如果你有办法在多个具有共性的开源项目中比较同一组指标,例如类似的功能、强大的相互依赖性、在同一基础设施上托管,以及其他特征,你就可以提升你对用户行为基线的感知。 + +需要注意的是,在这篇概述中,我们选择突出能够评估直接使用情况的指标。而大多数软件都依赖于其他各种软件包,如果我们不提及作为软件依赖链的一部分而被间接使用的严重影响,这就是我们的疏忽。因此,我们建议将上下游依赖的合计数量作为你的分析中的另一层内容。 + +最后,作为数据与指标的使用者,我们鼓励你认识到你的利益相关方的权利与责任。你发布的任何指标都有可能影响用户行为。最好的做法是经常一同分享你的背景信息——基础、来源、估算方法和其他关键上下文信息,这有助于其他人解释你的结果。 + +感谢 [CHAOSS][T2] 社区在爱尔兰都柏林举行的 CHAOSScon EU 2022 上的富有洞察力的对话,上述对话激发这篇博文的想法。我们还要感谢 CHAOSS 社区的成员审阅并帮助优化本文。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/open-source-usage-metrics + +作者:[Georg Link, Sophia Vargas][a] +选题:[lkxed][b] +译者:[CanYellow](https://github.com/CanYellow) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/georglink +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/18/5/metrics-project-success +[2]: https://opensource.com/article/22/11/community-metrics + +[T1]: https://fosdem.org/ +[T2]: https://chaoss.community +[0]: https://img.linux.net.cn/data/attachment/album/202301/04/173129vmnstoxnzmjlnsxw.jpg \ No newline at end of file diff --git a/published/20221210.2 ⭐️ How to Update Flatpak Packages in Linux.md b/published/20221210.2 ⭐️ How to Update Flatpak Packages in Linux.md new file mode 100644 index 0000000000..4c68d5c5f1 --- /dev/null +++ b/published/20221210.2 ⭐️ How to Update Flatpak Packages in Linux.md @@ -0,0 +1,130 @@ +[#]: subject: "How to Update Flatpak Packages in Linux" +[#]: via: "https://itsfoss.com/update-flatpak/" +[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15408-1.html" + +如何在 Linux 中更新 Flatpak 软件包 +====== + +![][0] + +我相信几乎所有的 Linux 用户都会保持他们系统的更新。 + +但这种更新通常是针对默认的 [包管理器][1]。例如,[更新 Ubuntu][2] 往往意味着更新所有的 APT 软件包。 + +然而,还有其他的打包格式,如 Snap 和 Flatpak。Snap 应用程序会自动更新,但 Flatpak 不会。 + +那么你如何更新 Flatpak 软件包呢?好吧,你可以用这个命令来更新所有已安装和可更新的 Flatpak 包: + +``` +flatpak update +``` + +这很简单。但让我再讨论一下关于更新 Flatpak 的一些事情,比如说: + +- 更新所有或特定的 Flatpak 包 +- 通过软件中心更新 Flatpak 包 + +让我们先从终端的方法开始。 + +### 方法 1:使用终端来更新 Flatpak 包 + +首先让我从最实用的方法开始,你也应该从这个方法开始。 + +#### 更新每一个过时的 Flatpak 包 + +更新现有的 Flatpak 包的整个目录是很容易的。 + +输入给定的命令,就可以得到过期包的列表: + +``` +flatpak update +``` + +![update flatpak packages in linux][3] + +你只需输入 `Y` 并按下回车键,就能搞定每一个更新。 + +#### 更新特定的 Flatpak 包 + +要更新特定的软件包,你需要可以更新的软件包的列表。你用的是你之前看到的那个命令。 + +``` +flatpak update +``` + +![update flatpak packages in linux][4] + +从输出中复制你要更新的软件包的名称。在以下命令中使用软件包的名称: + +``` +flatpak update package_name +``` + +例如,如果你想更新 Telegram,下面的命令可以完成这项工作: + +``` +flatpak update org.telegram.desktop +``` + +![update specific package in flatpak][5] + +这就完成了。 + +### 方法 2:从软件中心更新 Flatpak 应用 + +有 Flatpak 内置支持的发行版会在软件中心提供 Flatpak 应用的更新。Fedora 和 Linux Mint 就是这样的发行版。 + +但如果你使用的是 Ubuntu,你就需要在 GNOME 软件中心添加 Flatpak 支持: + +``` +sudo apt install gnome-software-plugin-flatpak +``` + +完成后,你将在 Ubuntu 中拥有两个软件中心。这是因为默认的软件中心不是 GNOME 的,而是 Snap Store。 + +从系统菜单中打开这个新的软件中心: + +![open software center in ubuntu][6] + +进入“更新Update”页面,你会发现过时的软件包列表。这包括 APT 和 Flatpak 软件包。 + +![update flatpak from software center][7] + +在这里,你可以一次更新所有的软件包,或者你可以有选择地更新什么。 + +### 总结 + +许多 Linux 桌面用户往往忘记更新 Flatpak 软件包,因为它们不包括在定期的系统更新中。 + +由于 Flatpak 是一个沙盒式的打包解决方案,你可能不会面临任何与过时的软件包有关的问题,但你肯定会错过新的功能和修复。 + +这就是为什么我建议每隔几周运行一次 Flatpak 更新命令。 + +我希望你喜欢这个快速的 Flatpak 小技巧。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/update-flatpak/ + +作者:[Sagar Sharma][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/sagar/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/package-manager/ +[2]: https://itsfoss.com/update-ubuntu/ +[3]: https://itsfoss.com/content/images/wordpress/2022/12/3.-update-flatpak-packages-in-linux.png +[4]: https://itsfoss.com/content/images/wordpress/2022/12/3.-update-flatpak-packages-in-linux.png +[5]: https://itsfoss.com/content/images/wordpress/2022/12/4.-update-specific-package-in-flatpak.png +[6]: https://itsfoss.com/content/images/wordpress/2022/12/1.-open-software-center-in-ubuntu.png +[7]: https://itsfoss.com/content/images/wordpress/2022/12/2.-update-flatpak-from-software-center.png +[0]: https://img.linux.net.cn/data/attachment/album/202301/03/154131lop17rnnrkiprkl7.jpg \ No newline at end of file diff --git a/published/20221220.1 ⭐️ How to Downgrade Flatpak Packages in Linux.md b/published/20221220.1 ⭐️ How to Downgrade Flatpak Packages in Linux.md new file mode 100644 index 0000000000..dfc488c153 --- /dev/null +++ b/published/20221220.1 ⭐️ How to Downgrade Flatpak Packages in Linux.md @@ -0,0 +1,117 @@ +[#]: subject: "How to Downgrade Flatpak Packages in Linux" +[#]: via: "https://itsfoss.com/downgrade-flatpak-packages/" +[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15402-1.html" + +如何在 Linux 中降级 Flatpak 软件包 +====== + +![][0] + +> Flatpak 软件包的一个鲜为人知的特点是,它允许你对已安装的应用程序进行降级。下面是如何使用它的方法。 + +从技术上讲,小版本或次要更新是为了解决问题。但是,当某些更新破坏你当前的工作流程时,情况可能会变得更糟。 + +无论是 Flatpak 包还是 Snap,当出现问题时,一切都会在某个时候崩溃。作为一个沙盒打包方案,它可能不会影响整个系统,但如果你遇到一个让你的应用体验变差的错误,你可能会后悔更新。 + +比如之前 [Black Box][1] 的更新就带来了一些错误,无法选择文字!开发人员现在已经解决了这个问题,但在他们没有解决之前,我降级了那个特定的包以使其正常工作。 + +所以,如果你想降级特定的 Flatpak 应用,你可以按照本指南进行操作。 + +### 在 Linux 中降级 Flatpak 包 + +**免责声明:** 与安装 Flatpak 不同,你需要 `sudo` 权限才能降级 Flatpak 包。如果你的用户没有该权限,你可以按照我们关于 [如何向用户授予 sudo 访问权限][2] 的详细指南进行操作。 + +以下是步骤: + +#### 1、获取包的应用 ID + +第一步是找到要降级的包的应用 ID。你可以列出已安装的软件包轻松找到它: + +``` +flatpak list --app +``` + +![find flatpak package id in linux][4] + +记下要降级的包的应用 ID。 + +这里,我要降级 Black Box,所以我的应用 ID 将是 `com.raggesilver.BlackBox`。 + +#### 2、列出以前的版本并获取该提交的代码 + +获得应用 ID 后,你需要列出以前的版本。 + +你可以按照给定的命令语法做到这点: + +``` +flatpak remote-info --log flathub +``` + +![find previous releases in flatpak][5] + +找到首选的先前版本后,复制如上所示的提交的代码。 + +#### 3、降级 Flatpack 包 + +执行前两个步骤后,你应该有以下内容: + +- 包的应用 ID。 +- 首选旧版本的提交代码。 + +现在,你必须将它们放在以下命令中: + +``` +sudo flatpak update --commit= +``` + +当我将 Black Box 降级到以前的版本时,我将使用以下命令: + +``` +sudo flatpak update --commit=c4ef3f4be655cbe2559451a9ef5977ab28139c54bb5adbd7db812f3482bd0db5 com.raggesilver.BlackBox +``` + +![downgrade flatpak package in linux][6] + +这就完成了! + +要检查你是否已成功降级软件包,你可以列出需要更新的软件包(考虑到其他所有内容都是最新的)。它应该包括你最近降级的软件包的名称: + +``` +flatpak update +``` + +![downgrade flatpak package][7] + +如你所见,Black Box 已过时,需要更新,这意味着包已成功降级! + +### 总结 + +在本快速教程中,我解释了如何降级 Flatpak 软件包,希望对你有所帮助。 + +如果你有任何疑问或建议,请在评论中告诉我。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/downgrade-flatpak-packages/ + +作者:[Sagar Sharma][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/sagar/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/blackbox-terminal/ +[2]: https://itsfoss.com/add-sudo-user-ubuntu/ +[4]: https://itsfoss.com/content/images/wordpress/2022/12/find-flatpak-package-id-in-linux.png +[5]: https://itsfoss.com/content/images/wordpress/2022/12/find-previous-releases-in-flatpak-1.png +[6]: https://itsfoss.com/content/images/wordpress/2022/12/downgrade-flatpak-package-in-linux.png +[7]: https://itsfoss.com/content/images/wordpress/2022/12/downgrade-flatpak-package.png +[0]: https://img.linux.net.cn/data/attachment/album/202301/01/160400h0mmppwwvxd004bm.jpg \ No newline at end of file diff --git a/published/20221222.2 ⭐️⭐️ 3 delightful features of the Linux QtFM file manager.md b/published/20221222.2 ⭐️⭐️ 3 delightful features of the Linux QtFM file manager.md new file mode 100644 index 0000000000..0b6dccf74a --- /dev/null +++ b/published/20221222.2 ⭐️⭐️ 3 delightful features of the Linux QtFM file manager.md @@ -0,0 +1,96 @@ +[#]: subject: "3 delightful features of the Linux QtFM file manager" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-qtfm" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15404-1.html" + +Linux QtFM 文件管理器的 3 个令人愉快的功能 +====== + +![][0] + +> 这个 Linux 文件管理器做了你所期望的一切,没有留下不愉快的惊喜。但这里有一些令人惊喜的事情,使它值得一试。 + +QtFM 是一个简单的文件管理器,旨在通过一个快速直观的界面提供文件管理的基本功能。它适用于 Linux、BSD 和 macOS。 + +QtFM,顾名思义,使用 Qt(规范发音为 “cute”)编程工具包。我在 C++ 和 Python 中使用过 Qt 工具包,使用它总是一种乐趣。它是跨平台的,具有多个有用的抽象级别,因此开发人员不必直接与特定于供应商的 SDK 交互,而且它具有高度可配置性。从用户的角度来看,无论你使用的是最新的硬件还是[旧计算机][1],这都是一种“自然”且快速的体验。 + +### 使用 QtFM + +QtFM 没有太多内容。它专注于实现其名称所声称的:Qt 的文件管理器(FM)。其布局可能是你对文件管理器的期望:左侧是常用位置和设备的列表,右侧是文件列表。 + +![QtFM file manager][2] + +它只有四个菜单: + +- 文件File:创建新文件或文件夹,打开新选项卡或窗口,或退出应用。 +- 编辑Edit:在左侧面板中复制、粘贴、移至垃圾箱或创建新书签。 +- 视图View:在列表视图和图标视图之间切换,调整布局。 +- 帮助Help:许可信息和在线文档链接。 + +与 QtFM 交互与你可能习惯使用的任何标准文件管理器的体验大致相同。你可以点击导航、在其默认应用中打开文件、拖放文件和文件夹、复制和粘贴文件和文件夹、启动应用,以及你在与计算机内容交互时执行的任何其他操作。它很熟悉,所以基本上没有学习曲线,也没有不愉快的惊喜。 + +然而,也有一些惊喜。这是我最喜欢的三个。 + +### 1、将命令放入上下文菜单 + +使用 QtFM,你可以将可以在终端中运行的任何命令添加到右键单击上下文菜单中。例如,假设你想要一个将图像转换为 [webp 格式][3] 的选项到右键菜单。无需学习复杂的框架或脚本语言,无需开发插件。你只需 3 个步骤即可完成: + +- 转到 “编辑Edit” 菜单并选择 “设置Settings”。 +- 单击 “自定义操作选项卡Custom actions tab”。 +- 单击 “添加Add” 按钮并输入要运行的命令,用 `%f` 代表源文件,用 `%n` 代表新文件。 + +![QtFM custom actions][4] + +该操作现在出现在你的 QtFM 上下文菜单中。 + +### 2、灵活的布局 + +Qt 工具包的内置功能之一是它的许多组件(“小部件”)是可分离的。QtFM 利用了这一点,并允许你从 “视图View” 菜单中解锁其布局。解锁后,你可以拖动工具栏和侧面板,将它们固定在窗口周围的新位置。我能够将菜单栏、导航工具栏和 URI 字段组合到一个统一的面板中,并且为了方便,我在窗口的右侧放置了一个文件树。 + +![QtFM unlocking the layout][5] + +这不需要应用设计甚至配置的特殊知识。你只需解锁、拖放和锁定。 + +### 3、标签视图 + +许多 Linux 文件管理器提供选项卡的方式与大多数 Web 浏览器相同。这是一个简单的界面技巧,可让你方便地保留多个位置。我不知道它是否真的节省了时间,但我总觉得它确实如此。QtFM 也提供选项卡,我特别喜欢它实现选项卡的方式有两点。 + +首先,选项卡默认位于窗口底部(你可以在 “设置Settings” 中更改它)。因为我倾向于从左到右、从上到下阅读,所以我通常更喜欢在窗口的底部和右端设置“额外”信息。当然,“额外”信息的构成因用户而异,因此我不会责怪任何开发人员将小部件和面板放置在我不会放置小部件和面板的地方。不过,当开发人员不小心同意我的偏好时,这很好。 + +其次,标签是响应式的。只需将鼠标悬停在目标选项卡上,即可将文件或文件夹从一个选项卡拖动到另一个选项卡中。感觉就像从一个窗口拖放到另一个窗口一样自然。 + +### 安装 QtFM + +在 Linux 上,你的发行版可能会将 QtFM 打包在它的软件仓库中。如果是这样,你可以使用包管理器进行安装。例如,在 Debian 和基于 Debian 的系统上: + +``` +$ sudo apt install qtfm +``` + +如果你的发行版不提供 QtFM,你可以在其 [网站][6] 上找到它的软件包,或者你可以从它的 [Git 仓库][7] 下载源码。 + +--- + +via: https://opensource.com/article/22/12/linux-file-manager-qtfm + +作者:[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/article/22/10/obsolete-computer-linux-opportunity +[2]: https://opensource.com/sites/default/files/2022-12/qtfm.webp +[3]: https://opensource.com/article/20/4/webp-image-compression +[4]: https://opensource.com/sites/default/files/2022-12/qtfm-custom-action.webp +[5]: https://opensource.com/sites/default/files/2022-12/qtfm-layout-unlock.webp +[6]: https://qtfm.eu/ +[7]: https://github.com/rodlie/qtfm/ +[0]: https://img.linux.net.cn/data/attachment/album/202301/02/170250zuwyuzzr9o3myl3l.jpg \ No newline at end of file diff --git a/published/20221230.1 ⭐️⭐️ Vanilla OS Stable Release Has Landed!.md b/published/20221230.1 ⭐️⭐️ Vanilla OS Stable Release Has Landed!.md new file mode 100644 index 0000000000..834ab618b2 --- /dev/null +++ b/published/20221230.1 ⭐️⭐️ Vanilla OS Stable Release Has Landed!.md @@ -0,0 +1,137 @@ +[#]: subject: "Vanilla OS Stable Release Has Landed!" +[#]: via: "https://news.itsfoss.com/vanilla-os-release/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15401-1.html" + +不普通的普通操作系统:Vanilla OS 稳定版发布了! +====== + +> Vanilla OS 已经准备好让你尝试!在这里了解令人兴奋的地方。 + +![][1] + +Vanilla OS 是一个基于 Ubuntu 的发行版,旨在为用户提供一个具有随需应变能力和自由选择软件包的 GNOME 体验。(LCTT 译注:Vanilla —— “香草”,因为作为太普通的香料,所以也有“普普通通”的意思。) + +经过几个月的测试,**Vanilla OS 的第一个版本** 终于以 **Vanilla 22.10 Kinetic** 的形式出现了,其提供了原汁原味的 **GNOME 43**。 + +在最近的一次采访中,我们问创建者:“很多人认为我们已经有太多的发行版了。为什么还要有 Vanilla OS?”,**Mirko Brombin**,分享了一些有趣的见解享。请看下面我们与他的对话,探索关于 Vanilla OS 的令人兴奋的事情: + +> **[“不要害怕做出贡献”:Mirko Brombin 谈 Vanilla OS 和其他未来项目][22]** + +Vanilla OS 有几个特点,你可能会觉得有帮助,请允许我向你介绍一下。 + +### 主要亮点 + +![Vanilla OS 22.10 Kinetic][2] + +作为一个新的发行版,Vanilla OS 有一个装备精良的功能集,你可能会喜欢。一些值得注意的亮点包括: + +- 原生安装程序 +- Vanilla OS 首次设置First Setup 功能 +- Vanilla OS 控制中心 +- apx 软件包管理器 +- 随需应变能力 + +#### 原生安装程序 + +![Vanilla OS 安装程序][3] + +Vanilla OS 有一个用 [GTK4][4] 和 [libadwaita][5] 编写的原生的安装程序,它取代了该操作系统在早期开发阶段时使用的 [Calamares][6] 安装程序。 + +![Vanilla OS 安装程序正在进行][7] + +之前,他们还宣布将使用来自 Crystal Linux 团队的 [Jade][8] 安装程序。 + +但是,他们改变了主意,选择在现有的 [Vanilla 首次设置][10] 项目之上建立 [Vanilla 安装程序][9]。 + +#### Vanilla OS 首次设置 + +![Vanilla OS 首次设置][11] + +Vanilla OS 的安装完成后,你会看到一个快速设置屏幕,上面用各种语言写着 “欢迎”。 + +![Vanilla OS 软件包管理器选择][12] + +然后它将带你完成各种设置,如选择颜色方案,选择你想要的软件包管理器,是否要安装受限制的编解码器,等等。 + +我必须说,这很方便! 😃️ + +#### Vanilla OS 控制中心 + +![Vanilla OS 控制中心][13] + +这个图形化工具使你能够对操作系统进行修改,如运行关键更新和安装额外的驱动程序。 + +#### 随需应变的不变性 + +![展示 - Vanilla OS 中的 ABRoot 事务性更新][14] + +正如上面 Vanilla OS 的创始人所展示的,这个操作系统可以提供完全的不变性和原子性,允许你在两个根分区(A/B)之间进行交易。 + +你问这是什么意思? 🤔 + +嗯,这意味着你的系统的核心部分被锁定,以防止任何不必要的变化,特别是那些由损坏的应用程序或错误的更新引起的变化。 + +Vanilla OS 使用 [ABRoot][15] 来实现这一目标,之前,他们曾尝试使用 [Almost][16],但结果并不理想。 + +![][17] + +它还有一个**智能更新功能**,他们解释如下: + +> VSO(Vanilla System Operator)是一个工具,它将定期检查更新,然后如果设备没有处于大量使用状态,就在后台下载和安装。事实上,VSO 检查是否满足某些检查条件,如资源是否空闲(CPU/RAM),连接是否允许,电池是否至少有 30% 的电量等。 + +更新是通过 ABroot 应用的,并在下一次重启时得到修补,而不需要花费额外时间。 + +#### apx 软件包管理器 + +![Vanilla OS apx][18] + +Vanilla OS 带有 [apx][19] 工具,允许你在不修改根文件系统的情况下在管理的容器内安装软件包。 + +### 下载 Vanilla OS + +如果你认为 Vanilla OS 解决了你在 Ubuntu 上遇到的问题,并且想要一个原汁原味的 GNOME 体验,那就来试试吧。 + +你可以在其 [官方博客文章][20] 中了解更多关于 Vanilla OS 22.10 的信息。 + +> **[下载 Vanilla OS][21]** + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/vanilla-os-release/ + +作者:[Sourav Rudra][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/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/vanilla-os-release.png +[2]: https://youtu.be/aDvIJ_Hu90Y +[3]: https://news.itsfoss.com/content/images/2022/12/Vanilla-OS-Installer.png +[4]: https://news.itsfoss.com/gtk-4-release/ +[5]: https://news.itsfoss.com/gnome-libadwaita-library/ +[6]: https://calamares.io +[7]: https://news.itsfoss.com/content/images/2022/12/Vanilla-OS-Installer-2.png +[8]: https://github.com/crystal-linux/jade +[9]: https://github.com/Vanilla-OS/vanilla-installer +[10]: https://github.com/Vanilla-OS/first-setup +[11]: https://news.itsfoss.com/content/images/2022/12/Vanilla-OS-First-Setup.png +[12]: https://news.itsfoss.com/content/images/2022/12/Vanilla-OS-Package-Manager.png +[13]: https://news.itsfoss.com/content/images/2022/12/Vanilla-OS-Control-Center.png +[14]: https://youtu.be/hIN-x3P12Tk +[15]: https://github.com/Vanilla-OS/ABRoot +[16]: https://documentation.vanillaos.org/docs/almost/ +[17]: https://news.itsfoss.com/content/images/2022/12/vanilla-os-updates.png +[18]: https://news.itsfoss.com/content/images/2022/12/Vanilla-OS-apx.png +[19]: https://github.com/Vanilla-OS/apx +[20]: https://vanillaos.org/2022/12/29/vanilla-os-22-10-kinetic.html +[21]: https://vanillaos.org +[22]: https://news.itsfoss.com/interview-mirko-brombin/ \ No newline at end of file diff --git a/published/20230103.0 ⭐️⭐️ Ultramarine Linux 37 Release Adds Pop OS-Style KDE Plasma, Drops Cutefish.md b/published/20230103.0 ⭐️⭐️ Ultramarine Linux 37 Release Adds Pop OS-Style KDE Plasma, Drops Cutefish.md new file mode 100644 index 0000000000..173a76f9e9 --- /dev/null +++ b/published/20230103.0 ⭐️⭐️ Ultramarine Linux 37 Release Adds Pop OS-Style KDE Plasma, Drops Cutefish.md @@ -0,0 +1,87 @@ +[#]: subject: "Ultramarine Linux 37 Release Adds Pop OS-Style KDE Plasma, Drops Cutefish" +[#]: via: "https://debugpointnews.com/ultramarine-linux-37-release/" +[#]: author: "arindam https://debugpointnews.com/author/dpicubegmail-com/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15410-1.html" + +Ultramarine Linux 37 版本发布 +====== + +![][1] + +> Ultramarine Linux 的新版本来了。Ultramarine Linux 37 带有新的自定义软件仓库、KDE Plasma 特色版等等。 + +如果你不知道,Ultramarine Linux 是一个基于 Fedora 的发行版,提供了 Budgie、Pantheon、GNOME 等桌面环境。这个发行版通过这些令人赞叹的桌面环境给你提供了最好的 Fedora 体验。 + +最近,这个小项目被 [FyraLabs][2] 收购,后者是 PhotonBrowser 和 tauOS 背后的公司。而这使得 Ultramarine 项目有了必要的人力和资金来继续建设他们的发行版。 + +自 Fedora 37 发布以来,该团队一直致力于重件当前版本,这包括采用新的基础设施和 CI/CD 管道迁移。终于,Ultramarine Linux 37 登场了。 + +那么,它有什么新东西呢? + +### Ultramarine Linux 37 的新功能 + +自从被 Fyralabs 收购后,该团队升级并迁移到用于自动化 CI/CD 构建的 GitHub Actions。Ultramarine 自己的软件仓库用于分发其精心组织的软件包(例如 Pantheon 桌面),它在这个版本中会发生变化,并转移到 FyraLabs 的基础设施上。 + +因此,如果你正在运行 Ultramarine 36 版本,它可能无法正常工作。你最好重新安装这个版本,因为显然没有从 36 版到 37 版的升级路径。 + +此外,Ultramarine 37 为 Fedora 软件包引入了一个名为 [Terra][3] 的滚动仓库,其中包括数百个 Fedora 不提供的应用程序。你可以认为它类似于 [RPM Fusion][4],尽管有所不同。 + +要了解更多,请访问 [本页][3] 或从命令行添加以下软件仓库: + +``` +sudo dnf config-manager --add-repo https://terra.fyralabs.com/terra.repo +``` + +事实上,这开启了一种可能性,因为你也可以尝试在 Fedora Linux 中谨慎地使用它。如果上述软件仓库能在普通的 Fedora 安装中开箱即用,那就更棒了。 + +在上述变化的基础上,Ultramarine Linux 37 首次引入了 KDE Plasma 作为官方版本。KDE Plasma 特色版带来了含有 Latte Dock 和 Lightly Qt 主题的 Pop OS 风格外观。 + +![Ultramarine Linux 37 具有独特的 Pop OS 风格的 KDE Plasma 主题][5] + +Ultramarine Linux 37 也放弃了 Cutefish 桌面,因为它目前正处于 [混乱的开发状态,没有可见的路线图][6]。这是该团队的一个很好的决定,因为打包一个已经停止的项目是没有意义的。 + +Budgie 桌面旗舰版使用上游的 Fedora 软件包,有更多的默认应用程序。最近,Fedora Linux 删除了对 elementary OS 的 Pantheon 桌面的支持,很遗憾。感谢 Ultramarine Linux 开发者,你仍然可以体验它,因为它已经被转移到新的 Terra 软件仓库中。 + +你应该庆幸,Ultramarine Linux 是唯一一个的基于 Fedora 的支持令人赞叹的 Pantheon 桌面的发行版。 + +最后,Ultramarine Linux 37 的核心基于 [Fedora 37][7],采用 Linux 主线内核 6.0。因此,所有更新的软件包和工具链都在这个版本中。 + +所以,这就是关于这个版本的总结。请继续关注几天后对这个版本的官方点评。如果有兴趣,你可以在这里阅读之前的版本(36)的评论。 + +> **[Ultramarine Linux:带有 Budgie、Cutefish 和 Pantheon 桌面的终极 Fedora 特色版][8]** + +### 下载和升级 + +由于没有升级路径,建议你对该版本进行全新安装。你可以在下面下载各个桌面环境的 ISO 文件。 + +> **[下载 Ultramarine Linux 37][9]** + +参考自:[发布公告][10]。 + +-------------------------------------------------------------------------------- + +via: https://debugpointnews.com/ultramarine-linux-37-release/ + +作者:[arindam][a] +选题:[lkxed][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://debugpointnews.com/author/dpicubegmail-com/ +[b]: https://github.com/lkxed +[1]: https://debugpointnews.com/wp-content/uploads/2023/01/ultra37head.jpg +[2]: https://twitter.com/UltramarineProj/status/1579991853478182914 +[3]: https://terra.fyralabs.com/ +[4]: https://www.debugpoint.com/enable-rpm-fusion-fedora-rhel-centos/ +[5]: https://debugpointnews.com/wp-content/uploads/2023/01/Ultramarine-Linux-37-with-unique-Pop-OS-style-KDE-Plasma-Theme.jpg +[6]: https://www.debugpoint.com/cutefish-development-restarts/ +[7]: https://debugpointnews.com/fedora-37-release-accouncement/ +[8]: https://www.debugpoint.com/ultramarine-linux-36/ +[9]: https://repos.fyralabs.com/isos/ultramarine/37/ +[10]: https://github.com/Ultramarine-Linux/build-scripts/releases/tag/37-1.0 diff --git a/published/20230104.1 ⭐️ Official Fedora Budgie & Sway Spins to Arrive With Fedora 38 Release.md b/published/20230104.1 ⭐️ Official Fedora Budgie & Sway Spins to Arrive With Fedora 38 Release.md new file mode 100644 index 0000000000..83f6605f84 --- /dev/null +++ b/published/20230104.1 ⭐️ Official Fedora Budgie & Sway Spins to Arrive With Fedora 38 Release.md @@ -0,0 +1,68 @@ +[#]: subject: "Official Fedora Budgie & Sway Spins to Arrive With Fedora 38 Release" +[#]: via: "https://news.itsfoss.com/fedora-budgie-sway-official/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15418-1.html" + +Fedora 38 将发布 Budgie 和 Sway 官方定制版 +====== + +> 两款新的 Fedora 定制版将在 Fedora 38 发布时首次亮相。 + +![][1] + +我们期待着它们在 Fedora 37 时出现,但在 Fedora 38 中终于来了! + +早在 2022 年 5 月,Budgie 项目的主要开发者 Joshua Strobl [宣布][2],Budgie 已被提交到 Fedora 中。 + +遗憾的是,在那之后不久,我们并没有看到任何官方 [Fedora 定制版][3] 发布的迹象,尽管它在 [Fedora 37 发布][4] 期间进入了 Fedora 软件库。 + +**但现在有了。** + +随着 Fedora 38 的发布,看起来我们会得到一个 [Budgie][5] 的官方定制版,同时还有一个 [Sway][6] 窗口管理器的定制版。 + +### Fedora Budgie 和 Sway + +在 [最近的一次会议][9] 上,Fedora 工程和指导委员会(FESCo)投票决定将 Budgie 和 Sway 窗口管理器的 Fedora 官方定制版纳入 Fedora 38 的发布中。 + +根据 Budgie 和 Sway 的初步修改建议,我们可以期待很多变化。 + +对于 Budgie: + +- Fedora 38 将提供 Budgie 桌面环境,包含一套核心应用程序,如用于更新/软件包管理的 GNOME “软件”应用、一个文本编辑器、一个网页浏览器和一个终端。 +- 它还将使用 [Materia GTK][10] 和 [Papirus][11] 图标主题,整个系统采用 GTK 主题设计。 +- Budgie 定制版还将采用 lightdm + slick-gtk-greeter,以获得更直观的用户问候体验。 + +对于 Sway 定制版:它旨在提供一个极简体验,只包括默认配置之上的一些元素。 + +预期时间:随着 Fedora 38 的开发在未来几个月内的加快,你可以期待这些定制版在 2023 年 4 月期间出现。当然,会有预装了 Budgie 和 Sway 的单独 ISO 文件。 + +因此,我认为看到 Budgie 与 Fedora 的体验会非常吸引人,特别是当 Budgie 的开发似乎正在发生一些有趣的变化。 + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/fedora-budgie-sway-official/ + +作者:[Sourav Rudra][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/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2023/01/fedora-budgie-sway-spins-arrive.png +[2]: https://www.reddit.com/r/Fedora/comments/uq3gah/budgie_desktop_has_now_been_submitted_for/ +[3]: https://spins.fedoraproject.org +[4]: https://news.itsfoss.com/fedora-37-release/ +[5]: https://blog.buddiesofbudgie.org +[6]: https://swaywm.org +[7]: https://unlocator.com/favicon.ico +[8]: https://unlocator.com/wp-content/uploads/2019/05/unlocatoricon.jpg +[9]: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/RNJZUX3ZI34DIX6E4PVDKYQWCOFDQ4UY/ +[10]: https://github.com/nana-4/materia-theme +[11]: https://github.com/PapirusDevelopmentTeam/papirus-icon-theme diff --git a/published/20230105.2 ⭐️ Nitrux 2.6.0 Takes Bold Steps Drops apt, Adds Flathub and Pipewire.md b/published/20230105.2 ⭐️ Nitrux 2.6.0 Takes Bold Steps Drops apt, Adds Flathub and Pipewire.md new file mode 100644 index 0000000000..97aa2ad8ee --- /dev/null +++ b/published/20230105.2 ⭐️ Nitrux 2.6.0 Takes Bold Steps Drops apt, Adds Flathub and Pipewire.md @@ -0,0 +1,83 @@ +[#]: subject: "Nitrux 2.6.0 Takes Bold Steps: Drops apt, Adds Flathub and Pipewire" +[#]: via: "https://debugpointnews.com/nitrux-2-6-0-release/" +[#]: author: "arindam https://debugpointnews.com/author/dpicubegmail-com/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15420-1.html" + +Nitrux 2.6.0 大胆抛弃 apt +====== + +![][1] + +> Nitrux 2.6.0 带有 Flathub、默认支持的 Pipewire、最新内核和 KDE 框架。 + +![Nitrux 2.6.0 Desktop][2] + +[Nitrux Linux][3] 是基于 Debian 的,它带有一个名为 NX 桌面的修改版的 KDE Plasma 桌面。这个独特的 Linux 发行版带来了一套自己的建立在 Maui kit 和 Qt 之上的 Nitrux 应用程序。Nitrux 是无 systemd 的,使用 OpenRC 作为启动系统。所有这些独特的功能和令人惊叹的外观,使它成为当今最好的 Linux 发行版之一。 + +Nitrux 2.6.0 被提升为一个主要版本,因为它对 12 月发布的 2.5.1 版本进行了关键的更新。 + +### Nitrux 2.6.0 的新内容 + +这个版本的一个主要重点是在 SDDM 显示管理器中引入 Plasma Wayland 会话。Wayland 还不是默认的,但可以作为选项选择。X11 仍然是默认的。我相信在下一个主要版本中 NItrux 团队可以默认启用 Wayland。 + +此外,现代声音管理器 Pipewire 现在是默认的,因为它已经在 Ubuntu 和 Fedora 中标准化了,而且感觉很稳定。由于有了 Pipewire,你的音频工作流程将变得更好。 + +Nitrux 2.6.0 还默认启用了最大的 Flatpak 应用程序仓库 - Flathub。这意味着你不需要再手动设置 Flatpak 和启用 Flathub。现在,Flatpak 应用程序的安装变得更加容易。 + +其他值得注意的变化包括:Nitrux 使根(/)分区成为不可变分区,以防止它被破坏,Samba 包现在是 Nitrux 默认安装的一部分,Calamares 安装程序有了一个定制的自动分区方案。 + +![Nitrux 2.6 安装自动分区][4] + +从一开始,Nitrux 就倾向于为其整个桌面组件提供自包含的可执行文件。主要的选择是 AppImage 文件格式。在这个版本中,你会得到默认的 Flathub 环境,而流行的 apt 软件包管理器现在被放弃了。这可能会改变一些用户的工作流程,因为 `apt` 命令将无法工作;尽管它是基于 Debian 的。 + +因此,Nitrux 团队建议使用 Distrobox 容器来设置单独的环境,以便与 apt 一起使用。然而,对于普通用户来说,理解容器、不可变的根分区会有点困难。 + +![apt 被放弃][5] + +讽刺的是 `apt` 会在安装时使用,因为 Calamares 需要它。然而,在安装完成后,它会被删除。 + +> 现场 ISO 中包括 APT 和 dpkg,但这是因为 Calamares 需要它们来完成安装,并将从安装的系统中删除。 +> +> —— NITRUX TEAM + +Nitrux 2.6.0 的核心是 liqurix 内核 6.1,以及游戏和多媒体功能。这个版本由 KDE Plasma 2.26.4、KDE Framework 5.101.0 和 Qt 5.15.7 LTS 驱动。 + +如果你想阅读更多信息,可以在 [这里][6] 找到详细的发布说明。 + +### 下载 + +你可以从以下页面下载这个版本。然而,没有可用的升级路径。因此,建议进行新的安装。 + +- [FOSS Torrents(Torrent)][7] +- [Sourceforge(镜像)][8] +- [OSDN(镜像)][9] + +参考自 [发布公告][10]。 + +-------------------------------------------------------------------------------- + +via: https://debugpointnews.com/nitrux-2-6-0-release/ + +作者:[arindam][a] +选题:[lkxed][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://debugpointnews.com/author/dpicubegmail-com/ +[b]: https://github.com/lkxed +[1]: https://debugpointnews.com/wp-content/uploads/2023/01/nitrux-head.jpg +[2]: https://debugpointnews.com/wp-content/uploads/2023/01/Nitrux-2.6.0-Desktop.jpg +[3]: https://nxos.org/ +[4]: https://debugpointnews.com/wp-content/uploads/2023/01/Nitrux-2.6-install-automatic-partition.jpg +[5]: https://debugpointnews.com/wp-content/uploads/2023/01/Screenshot-from-2023-01-05-13-44-57.png +[6]: https://nxos.org/notes/notes-nitrux-2-6-0 +[7]: https://fosstorrents.com/distributions/nitrux/ +[8]: https://sourceforge.net/projects/nitruxos/files/Release/ISO +[9]: https://osdn.net/projects/nitrux/releases/p18379 +[10]: https://nxos.org/changelog/release-announcement-nitrux-2-6-0/ diff --git a/published/20230106.2 ⭐️ Budgie's Upcoming 10.7 Release Promises These 3 Key Improvements for Linux Users.md b/published/20230106.2 ⭐️ Budgie's Upcoming 10.7 Release Promises These 3 Key Improvements for Linux Users.md new file mode 100644 index 0000000000..9d332fdddd --- /dev/null +++ b/published/20230106.2 ⭐️ Budgie's Upcoming 10.7 Release Promises These 3 Key Improvements for Linux Users.md @@ -0,0 +1,97 @@ +[#]: subject: "Budgie's Upcoming 10.7 Release Promises These 3 Key Improvements for Linux Users" +[#]: via: "https://news.itsfoss.com/budgie-10-7-features/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "wxy" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-15424-1.html" + +Budgie 10.7 即将带来 3 项关键改进 +====== + +> Budgie 10.7 有很多有价值的改进。请看本文。 + +![][1] + +Budgie 是一个旨在将杂乱无章降到最低,为用户提供一个干净/简约的体验的桌面环境。 + +早在 2022 年 1 月,Solus 的前联合负责人 Joshua Strobl [离开了 Solus][2],从事 [SerpentOS][3] 的开发,但他还继续参与 Budgie 的开发。 + +因此,他将该项目复刻到一个新的代码仓库,并成立了 [Buddies Of Budgie][4] 组织。三个月后,他们发布了 **Budgie 10.6**。 + +这是一个很不错的版本,即使不是很特别。 + +展望未来,他们发布了 2023 年的计划,其中包括发布 **Budgie 10.7**。 + +[Joshua Strobl][5] 在博文中也提到了更多计划内容: + +> 至少,它应该是一个很好的基础,并为 Budgie 桌面今年的发展方向提供一个清晰的蓝图:Budgie 10.x 将会增加新的功能、QoL 改进和修复。Budgie 11 的开发工作也将起步。 + +### Budgie 10.7 可以期待什么? + +Budgie 10.7 的开发工作自去年以来一直在进行。它本应在 2022 年发布,但需要更多的时间来提供一个完美的体验。 + +已经完成了很多工作,但其中一些值得注意的三个变化是: + +- 对 Budgie 菜单的更新 +- 新的 Budgie 屏幕截图工具 +- 对 Budgie 运行对话框的改进 + +#### 对 Budgie 菜单的更新 + +![Budgie 10.7 菜单][6] + +在这个版本中,Budgie 菜单将得到一些改进,例如。 + +- 一个新的电源菜单,包含所有常用的选项,如**暂停、休眠、注销和关闭电源**。 +- 更新的个人用户菜单可以快速访问 XDG 目录。这将让你直接打开文件管理器窗口进入主页、文档、音乐等文件夹。 +- 快速访问 Budgie 控制中心和桌面设置。 +- 能够从菜单本身显示各种桌面设置。 + +#### Budgie 屏幕截图工具 + +![Budgie 10.7 屏幕截图工具][7] + +终于,你不再需要下载另一个工具来在 Budgie 上进行截图;从 10.7 开始,它将具有一个原生的屏幕截图应用程序。 + +它将支持对屏幕、窗口的捕捉,甚至是进行选区捕捉。 + +#### 对 Budgie 运行对话框的改进 + +![Budgie 10.7 运行对话框][8] + +Budgie 运行对话框将获得许多改进,例如: + +- 一个新的应用程序索引器将被用于 Budgie 菜单,以寻找和分类应用程序。它应该能提供一个 “可预测的模糊搜索体验”。 +- 根据显示器的工作区域改进对话框的大小计算。 +- 更好的应用程序名称和描述的标签样式。 + +### 发布和未来计划 + +根据他们的 [公告][9],他们打算在 2023 年第一季度的某个时候发布 Budgie 10.7。他们还没有确定一个具体的日期。 + +并计划在不久之后发布带有错误修复的 10.7.1 版本,然后在 2023 年第二季度发布 Budgie 10.8。 + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/budgie-10-7-features/ + +作者:[Sourav Rudra][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/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2023/01/budgie-10-7-release.png +[2]: https://news.itsfoss.com/solus-co-lead-resign-budgie-serpent/ +[3]: https://serpentos.com +[4]: https://blog.buddiesofbudgie.org +[5]: https://joshuastrobl.com +[6]: https://news.itsfoss.com/content/images/2023/01/Budgie_10.7_Preview_Menu.jpg +[7]: https://news.itsfoss.com/content/images/2023/01/Budgie_10.7_Preview_SS.png +[8]: https://news.itsfoss.com/content/images/2023/01/Budgie_10.7_Preview_Run.jpg +[9]: https://blog.buddiesofbudgie.org/state-of-the-budgie-2022/ diff --git a/sources/news/20221003 World-s First Open Source Wi-Fi 7 Access Points Are Now Available.md b/sources/news/20221003 World-s First Open Source Wi-Fi 7 Access Points Are Now Available.md deleted file mode 100644 index bddcb326ed..0000000000 --- a/sources/news/20221003 World-s First Open Source Wi-Fi 7 Access Points Are Now Available.md +++ /dev/null @@ -1,38 +0,0 @@ -[#]: subject: "World’s First Open Source Wi-Fi 7 Access Points Are Now Available" -[#]: via: "https://www.opensourceforu.com/2022/10/worlds-first-open-source-wi-fi-7-access-points-are-now-available/" -[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -World’s First Open Source Wi-Fi 7 Access Points Are Now Available -====== -*The first Open source Wi-Fi 7 products in the world will be released by HFCL in conjunction with Qualcomm under its IO product line.* - -The world’s first Open source Wi-Fi 7 Access Points will be introduced by HFCL Limited, the top high-tech enterprise and integrated next-gen communication product and solution provider, in collaboration with Qualcomm Technologies, Inc. on October 1, 2022 at the India Mobile Congress in Pragati Maidan, New Delhi. - -Based on IEEE 802.11be, a ground-breaking Wi-Fi technology that is intended to give Extremely High Throughput (EHT), increased spectrum efficiency, better interference mitigation, and support for Real Time Applications (RTA), HFCL becomes the first OEM to release Open source Wi-Fi 7 Access Points. In order to provide a better user experience while yet using less power, Wi-Fi 7 uses faster connections with 320MHz and 4kQAM, numerous connections with Multi Link operation, and Adaptive Connections for adaptive interference puncturing. - -Wi-Fi 7 promises a significant technological advance above all prior Wi-Fi standards updates, providing a more immersive user experience and paving the way for a more robust digital future. The peak data speeds supported by HFCL’s Wi-Fi 7 APs will exceed 10 Gbps, and they will have latency under 2 ms as opposed to the 5 Gbps and 10 ms of existing Wi-Fi 6 products. - -Technology providers like telecom operators, Internet service providers, system integrators, and network administrators will be able to offer mission-critical and real-time application services and provide a better user experience than ever before thanks to HFCL’s Wi-Fi 7 product line, which is supported by a strong R&D focus. A wide variety of dual band and tri-band indoor and outdoor variations may be found in the new Wi-Fi 7 product portfolio. - -Being the first Wi-Fi 7 Access points in the market to embrace Open standards, all Wi-Fi 7 variations will come pre-installed with open source software. With the goal of providing improved global connectivity and maintaining interoperability in multi-vendor scenarios, open standards support disaggregated Wi-Fi systems delivered as free open source software. - -The introduction of Wi-Fi 7 will primarily support the country’s upcoming 5G rollout, particularly for enhancing inside coverage. Additionally, the technology will make it easier to construct a variety of apps because to its increased throughput, dependable network performance, and lower latency. The Internet of Things (IoT) and Industrial Internet of Things (IIoT) applications including surveillance, remote industrial automation, AV/VR/XR, and other video-based applications will benefit from Wi-Fi 7 technology for businesses. With numerous developments in Cloud/Edge Computing and Cloud gaming, it will also increase the number of remote offices, real-time collaborations, and online video conferencing. - --------------------------------------------------------------------------------- - -via: https://www.opensourceforu.com/2022/10/worlds-first-open-source-wi-fi-7-access-points-are-now-available/ - -作者:[Laveesh Kocher][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.opensourceforu.com/author/laveesh-kocher/ -[b]: https://github.com/lkxed diff --git a/sources/news/20221013 Blender 3.4 to Enable Native Wayland Support for Linux.md b/sources/news/20221013 Blender 3.4 to Enable Native Wayland Support for Linux.md deleted file mode 100644 index 5c7d0d7da1..0000000000 --- a/sources/news/20221013 Blender 3.4 to Enable Native Wayland Support for Linux.md +++ /dev/null @@ -1,77 +0,0 @@ -[#]: subject: "Blender 3.4 to Enable Native Wayland Support for Linux" -[#]: via: "https://news.itsfoss.com/blender-3-4-release/" -[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Blender 3.4 to Enable Native Wayland Support for Linux -====== -Blender is bringing in native Wayland support soon. Learn more here. - -![Blender 3.4 to Enable Native Wayland Support for Linux][1] - -Blender is a popular 3D creation suite that many professionals use. - -The developers of Blender have recently added native Wayland support for Linux in the daily builds, and have confirmed adding the support in the upcoming Blender 3.4 release. - -This is probably one of the significant development progress after [Blender 3.0 release][2] last year! - -### Blender With Native Wayland - -[Wayland][3] is a replacement to the X11 [display server][4] that aims to be a simpler and more modern solution. - -Providing native Wayland support has become necessary, mainly because many distros now come with that kind of support out of the box. - -With more Wayland support in the works and users switching to a distro with native support, this move was a given. - -[Linux Laptops - Powered by Open Source][5] - -With the daily builds, the **libdecor** library has made this possible. If you want to test it out, you need to have it installed for Blender to work correctly with native Wayland support. - -While initial support for Wayland was present in Blender since 2020, it was not ready for prime time. It had a lot of issues, such as no tablet support, no NDOF support, no Hi-DPI support, and similar. - -Now, it looks like most of those issues are gone. - -### Expect it With Blender 3.4 - -A blog post by one of Blender's developers *Campbell Barton,* reveals that if all goes well with the daily builds, the Wayland support is coming to Blender 3.4. - -Here's what he mentions: - -> Now Wayland is enabled in our official builds, I hope to validate it for the up coming release. So unless issues arise which we’re unable to resolve, it will be officially supported in Blender 3.4x onward. - -At this point, I can only hope that no significant issues affect its integration. - -Otherwise, it may push back to a later release cycle. - -Blender 3.4 will release in early **December 2022**, with improvements across the board and new features such as headless rendering for Linux, improvements for Sculpt, Intel Open PGL integration, and more. - -> 💡 Blender with Wayland has some technical limitations. You can find more details on that in the [blog post][9]. - -💬*Are you excited to try out native Wayland support on Blender?* - --------------------------------------------------------------------------------- - -via: https://news.itsfoss.com/blender-3-4-release/ - -作者:[Sourav Rudra][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://news.itsfoss.com/author/sourav/ -[b]: https://github.com/lkxed -[1]: https://news.itsfoss.com/content/images/size/w1200/2022/10/blender-3-4-release.png -[2]: https://news.itsfoss.com/blender-3-0-release/ -[3]: https://wayland.freedesktop.org/ -[4]: https://itsfoss.com/display-server/ -[5]: https://starlabs.systems/?rfsn=4790429.bdbc07 -[6]: https://starlabs.systems/?rfsn=4790429.bdbc07 -[7]: https://itsfoss.com/open-source-video-editors/ -[8]: https://itsfoss.com/open-source-video-editors/ -[9]: https://code.blender.org/2022/10/wayland-support-on-linux/ diff --git a/sources/news/20221220.4 ⭐️ EndeavourOS 'Cassini' Releases With New Features and Linux Kernel 6.0.md b/sources/news/20221220.4 ⭐️ EndeavourOS 'Cassini' Releases With New Features and Linux Kernel 6.0.md new file mode 100644 index 0000000000..c42c37b80c --- /dev/null +++ b/sources/news/20221220.4 ⭐️ EndeavourOS 'Cassini' Releases With New Features and Linux Kernel 6.0.md @@ -0,0 +1,133 @@ +[#]: subject: "EndeavourOS 'Cassini' Releases With New Features and Linux Kernel 6.0" +[#]: via: "https://news.itsfoss.com/endeavouros-cassini/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +EndeavourOS 'Cassini' Releases With New Features and Linux Kernel 6.0 +====== + +EndeavourOS's latest update has arrived! + +![EndeavourOS 'Cassini' Releases With New Features and Linux Kernel 6.0][1] + +EndeavourOS is a popular Arch-based Linux distribution that aims to make the Arch experience easy. + +Code-named 'Cassini', it signifies a new phase in EndeavourOS's development that aims to make the OS better than its previous iterations. + +Similar to a [previous release][2], this release is also named after one of NASA's [projects][3]. + +Let's see what makes this release so unique. + +Unlocator Smart DNSRemove geographic blocks from streaming services using Unlocator Smart DNS. Simple to use and with a full free trial included.![][4]Unlocator![][5] + +### 🆕 EndeavourOS 'Cassini': What's New? + +![endeavouros cassini][6] + +The 'Cassini' release packs plenty of improvements, some of the noteworthy highlights include: + +- **Improved ARM Support** +- **Linux Kernel 6.0** +- **Various User Interface Updates** +- **Updated Software Packages** + +#### Improved ARM Support + +![endeavouros cassini arm][7] + +EndeavourOS now features support for the [Pinebook Pro][8]. + +This was made possible by including the new 'linux-eos-arm' kernel that comes with the 'amdgpu' driver for supporting generic ARM devices. + +The developers also added that: + +> We’ve leveraged existing work and PKGBUIDs of both Manjaro ARM and archlinuxarm-pbp projects to create our Pinebook Pro images and would like to thank them for their continuing work in supporting PineBook Pro for Arch Linux ARM platform. + +Furthermore, EndeavourOS also has enhanced support for ARM devices like the [Phytiuim D2000][9], [Raspberry Pi][10], and [Odroid N2+][11]. + +#### 🎨 Various User Interface Updates + +![endeavouros cassini budgie][12] + +With this release, EndeavourOS has received quite a few user interface tweaks; some of the highlights include: + +- The 'Discover' icon was replaced with a 'Konsole' icon on KDE Plasma. +- [Qogir theme][13] is being used for icons in Cinnamon and Budgie. +- In the case of GNOME, the wallpaper follows night and day theme like the Console. +- The default wallpaper is now set by the 'settings' package instead of 'welcome'. +- A load of cleanup work for Calamares. + +#### Linux Kernel 6.0 + +EndeavourOS 'Cassini' features Linux Kernel 6.0.12.arch1-1, which enables it to have enhanced support for [OpenRISC][14] and [LoongArch][15] architectures. + +Alongside that, there is a noticeable uplift in performance for AMD EPYC, Ryzen Threadripper, and Intel Xeon Ice Lake chips. + +You can go through our coverage for more details: + +#### Updated Software Packages + +This release also features a lot of updated software, including: + +- Calamares 3.3.0-alpha3 +- Firefox 108.0.1-1 +- Mesa 22.3.1-1 +- Xorg-Server 21.1.5-1 +- nvidia-dkms 525.60.11-1 +- Grub 2:2.06.r403.g7259d55ff-1 + +#### 🛠️ Other Changes + +There were also a few other changes that I want to mention, such as: + +- [dracut][16] has replaced [mkinitcpio][17] to handle the installation process. +- You can now choose not to install a bootloader. +- You have two bootloader options to pick from, [systemd-boot][18] and [Grub][19]. +- The Grub submenu is now enabled by default. +- gedit and GNOME terminal have been replaced by [gnome-text-editor][20] and [GNOME Console][21]. + +### 📥 Download EndeavourOS Cassini + +You can find the latest release on the [official website][22] from one of the available mirrors. + +_💬 What do you think of this release? Was it worth the wait?_ + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/endeavouros-cassini/ + +作者:[Sourav Rudra][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/endeavour-os-cassini-release.png +[2]: https://news.itsfoss.com/endeavouros-artemis-release/ +[3]: https://solarsystem.nasa.gov/missions/cassini/overview/ +[4]: https://unlocator.com/favicon.ico +[5]: https://unlocator.com/wp-content/uploads/2019/05/unlocatoricon.jpg +[6]: https://news.itsfoss.com/content/images/2022/12/EndeavourOS-Cassini.jpg +[7]: https://news.itsfoss.com/content/images/2022/12/EndeavourOS-Cassini_ARM.png +[8]: https://itsfoss.com/pinebook-pro/ +[9]: https://phytium.com.cn/en/article/721 +[10]: https://www.raspberrypi.org +[11]: https://www.hardkernel.com/shop/odroid-n2-with-4gbyte-ram-2/ +[12]: https://news.itsfoss.com/content/images/2022/12/EndeavourOS-Cassini_2-1.jpg +[13]: https://github.com/vinceliuice/Qogir-theme +[14]: https://openrisc.io +[15]: https://en.wikipedia.org/wiki/Loongson +[16]: https://dracut.wiki.kernel.org/index.php/Main_Page +[17]: https://wiki.archlinux.org/title/mkinitcpio +[18]: https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/ +[19]: https://www.gnu.org/software/grub/ +[20]: https://itsfoss.com/gnome-text-editor/ +[21]: https://gitlab.gnome.org/GNOME/console +[22]: https://endeavouros.com/latest-release/ diff --git a/sources/news/20221222.1 ⭐️ Tails 5.8 Arrives with Official Wayland Support.md b/sources/news/20221222.1 ⭐️ Tails 5.8 Arrives with Official Wayland Support.md new file mode 100644 index 0000000000..e55d86badd --- /dev/null +++ b/sources/news/20221222.1 ⭐️ Tails 5.8 Arrives with Official Wayland Support.md @@ -0,0 +1,74 @@ +[#]: subject: "Tails 5.8 Arrives with Official Wayland Support" +[#]: via: "https://debugpointnews.com/tails-5-8-release/" +[#]: author: "arindam https://debugpointnews.com/author/dpicubegmail-com/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Tails 5.8 Arrives with Official Wayland Support +====== + +![][1] + +**A sizable update arrives in Tails 5.8, bringing Wayland support, newly redesigned persistence storage and more.** + +Tails, aka The Amnesic Incognito Live System, is a [privacy-focussed Linux Distribution][2] which uses the Tor network to protect you while browsing the web. Tails are based on Debian stable branch and come with many goodies such as an IRC client, Tor browser, email clients, and messengers to help you roam around on the web anonymously. + +![Tails 5.8 desktop][3] + +### What’s New in Tails 5.8 Release + +At a high level, Tails 5.8 includes significant redesigns of existing features, improved usability, and strengthened security. Also, bringing modern tech aligns with the changing times and needs of the hour. + +The persistence storage module gets a complete redesign in this release. In the new version of Persistent Storage, you no longer have to restart after creating a Persistent Storage or activating a new feature. You can also change the password for your Persistent Storage from within the application. Additionally, you can now create a Persistent Storage directly from the Welcome Screen if you don’t already have one. The Persistent Storage had not been updated much since its initial release in 2012 due to challenges in modifying and improving the code. + +The Tails team has also replaced the deprecated X.Org display system with Wayland. While you may not notice any visual changes, Wayland provides increased security for Tails by making it harder for a compromised application to compromise or misuse other applications. + +![Browse internet securely using Tails 5.8][4] + +For example, since Tails 4.8, the Unsafe Browser has been disabled by default due to a security vulnerability that could reveal your IP address and deanonymize you through the use of an invisible Unsafe Browser. Wayland addresses this vulnerability and makes it safe to enable the Unsafe Browser by default again. However, if desired, you can still disable the Unsafe Browser from the Welcome Screen. + +In addition to addressing security concerns, Wayland also introduces new features that were previously not supported in the Unsafe Browser, including sound, file uploads and downloads, alternative input methods for non-Latin languages such as Chinese, and accessibility features like the screen reader and virtual keyboard. + +The Tails team has also made it easier to enter new Tor bridges by allowing you to scan a QR code. You can obtain a QR code by sending an empty email to [bridges@torproject.org][5] from a Gmail or Riseup email address or by visiting [https://bridges.torproject.org/][6] and printing the QR code on paper. + +Furthermore, the entire Debian stable base is bumped up to the latest version, including pre-loaded apps. + +A complete changelog is available [here][7] if you want to dive deeper into the changes. + +### Download and upgrade + +If you are already running a prior version of the Tails 5.0 series, you should automatically get this update once you boot up Tails from the USB stick. + +In addition, if you want to install Tails 5.8 fresh, grab the ISO files from the below links: + +- [For USB sticks (USB image)][8] +- [For DVDs and virtual machines (ISO image)][9] + +Via [release announcement][10]. + +-------------------------------------------------------------------------------- + +via: https://debugpointnews.com/tails-5-8-release/ + +作者:[arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://debugpointnews.com/author/dpicubegmail-com/ +[b]: https://github.com/lkxed +[1]: https://debugpointnews.com/wp-content/uploads/2022/12/tails58head.jpg +[2]: https://www.debugpoint.com/privacy-linux-distributions-2022/ +[3]: https://debugpointnews.com/wp-content/uploads/2022/12/Tails-5.8-desktop.jpg +[4]: https://debugpointnews.com/wp-content/uploads/2022/12/Browse-internet-securely-using-Tails-5.8.jpg +[5]: https://debugpointnews.commailto:bridges@torproject.org +[6]: https://bridges.torproject.org/ +[7]: https://gitlab.tails.boum.org/tails/tails/-/blob/master/debian/changelog +[8]: https://tails.boum.org/install/download/index.en.html +[9]: https://tails.boum.org/install/download-iso/index.en.html +[10]: https://tails.boum.org/news/version_5.8/index.en.html diff --git a/sources/news/20230105.3 ⭐️ Pinta 2.1 Release Introduces WebP Support. But You Can't Use It Yet Unfortunately.md b/sources/news/20230105.3 ⭐️ Pinta 2.1 Release Introduces WebP Support. But You Can't Use It Yet Unfortunately.md new file mode 100644 index 0000000000..07be806ba7 --- /dev/null +++ b/sources/news/20230105.3 ⭐️ Pinta 2.1 Release Introduces WebP Support. But You Can't Use It Yet Unfortunately.md @@ -0,0 +1,100 @@ +[#]: subject: "Pinta 2.1 Release Introduces WebP Support. But You Can't Use It Yet Unfortunately" +[#]: via: "https://news.itsfoss.com/pinta-2-1-release/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Pinta 2.1 Release Introduces WebP Support. But You Can't Use It Yet Unfortunately +====== + +Pinta 2.1 comes with WebP support and various other useful improvements. + +![Pinta 2.1 Release Introduces WebP Support. But You Can't Use It Yet Unfortunately][1] + +Pinta is a free and open-source drawing app for Linux that offers a ton of features in a relatively small package. + +It is one of the [best Linux tools for digital artists][2] available. + +Its last major release was in January 2022, introducing improved Hi DPI support, GTK 3 port, and [more][3]. + +Marking 2023's first release, Pinta 2.1 promises to offer even further refinements. + +**Notice the new Pinta icon in the image above? Well, that's one of the changes.** + +Let's see how this release pans out. + +### 🆕 What's New in Pinta 2.1? + +![pinta 2.1][4] + +[Pinta 2.1][5] is offering plenty of new improvements; some notable ones include: + +- **WebP Support** +- **Improved .ora Support** +- **Enhanced Handles** +- **Dark Mode** +- **Improved File Dialog** +- **Various Bug Fixes and Changes** + +**WebP Support:** Pinta finally has support for WebP files, but it does not come out of the box. For Linux users, the [webp-pixbuf-loader][6]**dependency is required to enable WebP support.** + +> 📋 Unfortunately, WebP support is not included in the Flatpak and Snap builds of Pinta 2.1. Even if you have that library installed on your system. So, you probably have to build it from the source or use WebP files on Windows/macOS only. + +**Improved .ora Support:** With Pinta 2.1, hidden layers are now round-tripped properly for .ora files. + +Furthermore, when you save a .ora file, a flattened image is now included in the archive. + +It is like this because it is required by the spec to accommodate the viewer software. + +**Enhanced Handles:** The selection move and shape control point handles are now more intuitive, especially when working on zoomed-in or small images. + +**Dark Mode:** Pinta has finally received full support for dark mode across the app; all icons, toolbars, dialogs, etc., are now in high-res SVG format. + +**Improved File Dialog:** The file dialog now uses MIME types on Linux, allowing valid image files with unknown extensions to be included in the image file filter. + +**Various Bug Fixes and Changes:** Apart from the changes I listed above, here are some that are also worth mentioning: + +- Upgraded to .NET 7. +- New '**Transparency Mode**' in Gradient Tool. +- Standard GTK about dialog. +- The gradient tool now updates properly while drawing transparent colors. +- The new screenshot command now uses the XDG portal. + +If you want to go deep into the technical details of the release, head to its [release notes][7]. + +### 📥 Download Pinta 2.1 + +Pinta 2.1 is available in the [Snap store][8], as well as on [Flathub][9]. The repositories include an outdated back, so you can safely ignore it. + +You can also try building it from the [source code][10] and explore other download options for Windows/macOS. + +[Download Pinta 2.1][11] + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/pinta-2-1-release/ + +作者:[Sourav Rudra][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2023/01/pinta-2-1-release.png +[2]: https://itsfoss.com/best-linux-graphic-design-software/ +[3]: https://news.itsfoss.com/pinta-2-0-release/ +[4]: https://news.itsfoss.com/content/images/2023/01/Pinta_2.1.png +[5]: https://www.pinta-project.com +[6]: https://github.com/aruiz/webp-pixbuf-loader/ +[7]: https://github.com/PintaProject/Pinta/releases/tag/2.1 +[8]: https://snapcraft.io/pinta +[9]: https://flathub.org/apps/details/com.github.PintaProject.Pinta +[10]: https://github.com/PintaProject/Pinta +[11]: https://www.pinta-project.com/releases/ + diff --git a/sources/talk/20190331 Codecademy vs. The BBC Micro.md b/sources/talk/20190331 Codecademy vs. The BBC Micro.md index bb5ee313c8..197795acea 100644 --- a/sources/talk/20190331 Codecademy vs. The BBC Micro.md +++ b/sources/talk/20190331 Codecademy vs. The BBC Micro.md @@ -2,7 +2,7 @@ [#]: via: "https://twobithistory.org/2019/03/31/bbc-micro.html" [#]: author: "Two-Bit History https://twobithistory.org" [#]: collector: "lujun9972" -[#]: translator: "yesimmia" +[#]: translator: "CanYellow" [#]: reviewer: " " [#]: publisher: " " [#]: url: " " diff --git a/sources/talk/20200105 Friend of a Friend- The Facebook That Could Have Been.md b/sources/talk/20200105 Friend of a Friend- The Facebook That Could Have Been.md deleted file mode 100644 index 024278de13..0000000000 --- a/sources/talk/20200105 Friend of a Friend- The Facebook That Could Have Been.md +++ /dev/null @@ -1,242 +0,0 @@ -[#]: subject: "Friend of a Friend: The Facebook That Could Have Been" -[#]: via: "https://twobithistory.org/2020/01/05/foaf.html" -[#]: author: "Two-Bit History https://twobithistory.org" -[#]: collector: "lujun9972" -[#]: translator: "aREversez" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Friend of a Friend: The Facebook That Could Have Been -====== - -> _I express my network in a FOAF file, and that is the start of the revolution._ —Tim Berners-Lee (2007) - -The FOAF standard, or Friend of a Friend standard, is a now largely defunct/ignored/superseded[1][1] web standard dating from the early 2000s that hints at what social networking might have looked like had Facebook not conquered the world. Before we talk about FOAF though, I want to talk about the New York City Subway. - -The New York City Subway is controlled by a single entity, the Metropolitan Transportation Agency, better known as the MTA. The MTA has a monopoly on subway travel in New York City. There is no legal way to travel in New York City by subway without purchasing a ticket from the MTA. The MTA has no competitors, at least not in the “subway space.” - -This wasn’t always true. Surprisingly, the subway system was once run by two corporations that competed with each other. The Inter-borough Rapid Transit Company (IRT) operated lines that ran mostly through Manhattan, while the Brooklyn-Manhattan Transit Corporation (BMT) operated lines in Brooklyn, some of which extended into Manhattan also. In 1932, the City opened its own service called the Independent Subway System to compete with the IRT and BMT, and so for a while there were _three_ different organizations running subway lines in New York City. - -One imagines that this was not an effective way to run a subway. It was not. Constructing interchanges between the various systems was challenging because the IRT and BMT used trains of different widths. Interchange stations also had to have at least two different fare-collection areas since passengers switching trains would have to pay multiple operators. The City eventually took over the IRT and BMT in 1940, bringing the whole system together under one operator, but some of the inefficiencies that the original division entailed are still problems today: Trains designed to run along lines inherited from the BMT (e.g. the A, C, or E) cannot run along lines inherited from the IRT (e.g. the 1, 2, or 3) because the IRT tunnels are too narrow. As a result, the MTA has to maintain two different fleets of mutually incompatible subway cars, presumably at significant additional expense relative to other subway systems in the world that only have to deal with a single tunnel width. - -This legacy of the competition between the IRT and BMT suggests that subway systems naturally tend toward monopoly. It just makes more sense for there to be a single operator than for there to be competing operators. Average passengers are amply compensated for the loss of choice by never having to worry about whether they brought their IRT MetroCard today but forgot their BMT MetroCard at home. - -Okay, so what does the Subway have to do with social networking? Well, I have wondered for a while now whether Facebook has, like the MTA, a natural monopoly. Facebook does seem to have _a_ monopoly, whether natural or unnatural—not over social media per se (I spend much more time on Twitter), but over my internet social connections with real people I know. It has a monopoly over, as they call it, my digitized “social graph”; I would quit Facebook tomorrow if I didn’t worry that by doing so I might lose many of those connections. I get angry about this power that Facebook has over me. I get angry in a way that I do not get angry about the MTA, even though the Subway is, metaphorically and literally, a sprawling trash fire. And I suppose I get angry because at root I believe that Facebook’s monopoly, unlike the MTA’s, is not a natural one. - -What this must mean is that I think Facebook owns all of our social data now because they happened to get there first and then dig a big moat around themselves, not because a world with competing Facebook-like platforms is inefficient or impossible. Is that true, though? There are some good reasons to think it isn’t: Did Facebook simply get there first, or did they instead just do social networking better than everyone else? Isn’t the fact that there is only one Facebook actually convenient if you are trying to figure out how to contact an old friend? In a world of competing Facebooks, what would it mean if you and your boyfriend are now Facebook official, but he still hasn’t gotten around to updating his relationship status on VisageBook, which still says he is in a relationship with his college ex? Which site will people trust? Also, if there were multiple sites, wouldn’t everyone spend a lot more time filling out web forms? - -In the last few years, as the disadvantages of centralized social networks have dramatically made themselves apparent, many people have attempted to create decentralized alternatives. These alternatives are based on open standards that could potentially support an ecosystem of inter-operating social networks (see e.g. [the Fediverse][2]). But none of these alternatives has yet supplanted a dominant social network. One obvious explanation for why this hasn’t happened is the power of network effects: With everyone already on Facebook, any one person thinking of leaving faces a high cost for doing so. Some might say this proves that social networks are natural monopolies and stop there; I would say that Facebook, Twitter, et al. chose to be walled gardens, and given that people have envisioned and even built social networks that inter-operate, the network effects that closed platforms enjoy tell us little about the inherent nature of social networks. - -So the real question, in my mind, is: Do platforms like Facebook continue to dominate merely because of their network effects, or is having a single dominant social network more efficient in the same way that having a single operator for a subway system is more efficient? - -Which finally brings me back to FOAF. Much of the world seems to have forgotten about the FOAF standard, but FOAF was an attempt to build a decentralized and open social network before anyone had even heard of Facebook. If any decentralized social network ever had a chance of occupying the redoubt that Facebook now occupies before Facebook got there, it was FOAF. Given that a large fraction of humanity now has a Facebook account, and given that relatively few people know about FOAF, should we conclude that social networking, like subway travel, really does lend itself to centralization and natural monopoly? Or does the FOAF project demonstrate that decentralized social networking was a feasible alternative that never became popular for other reasons? - -### The Future from the Early Aughts - -The FOAF project, begun in 2000, set out to create a universal standard for describing people and the relationships between them. That might strike you as a wildly ambitious goal today, but aspirations like that were par for the course in the late 1990s and early 2000s. The web (as people still called it then) had just trounced closed systems like America Online and [Prodigy][3]. It could only have been natural to assume that further innovation in computing would involve the open, standards-based approach embodied by the web. - -Many people believed that the next big thing was for the web to evolve into something called the Semantic Web. [I have written about][4] what exactly the Semantic Web was supposed to be and how it was supposed to work before, so I won’t go into detail here. But I will sketch the basic vision motivating the people who worked on Semantic Web technologies, because the FOAF standard was an application of that vision to social networking. - -There is an essay called [“How Google beat Amazon and Ebay to the Semantic Web”][5] that captures the lofty dream of the Semantic Web well. It was written by Paul Ford in 2002. The essay imagines a future (as imminent as 2009) in which Google, by embracing the Semantic Web, has replaced Amazon and eBay as the dominant e-commerce platform. In this future, you can search for something you want to purchase—perhaps a second-hand Martin guitar—by entering `buy:martin guitar` into Google. Google then shows you all the people near your zipcode selling Martin guitars. Google knows about these people and their guitars because Google can read RDF, a markup language and core Semantic Web technology focused on expressing relationships. Regular people can embed RDF on their web pages to advertise (among many other things) the items they have to sell. Ford predicts that as the number of people searching for and advertising products this way grows, Amazon and eBay will lose their near-monopolies over, respectively, first-hand and second-hand e-commerce. Nobody will want to search a single centralized database for something to buy when they could instead search the whole web. Even Google, Ford writes, will eventually lose its advantage, because in theory anyone could crawl the web reading RDF and offer a search feature similar to Google’s. At the very least, if Google wanted to make money from its Semantic Web marketplace by charging a percentage of each transaction, that percentage would probably by forced down over time by competitors offering a more attractive deal. - -Ford’s imagined future was an application of RDF, or the Resource Description Framework, to e-commerce, but the exciting thing about RDF was that hypothetically it could be used for anything. The RDF standard, along with a constellation of related standards, once widely adopted, was supposed to blow open database-backed software services on the internet the same way HTML had blown open document publishing on the internet. - -One arena that RDF and other Semantic Web technologies seemed poised to takeover immediately was social networking. The FOAF project, known originally as “RDF Web Ring” before being renamed, was the Semantic Web effort offshoot that sought to accomplish this. FOAF was so promising in its infancy that some people thought it would inevitably make all other social networking sites obsolete. A 2004 Guardian article about the project introduced FOAF this way: - -> In the beginning, way back in 1996, it was SixDegrees. Last year, it was Friendster. Last week, it was Orkut. Next week, it could be Flickr. All these websites, and dozens more, are designed to build networks of friends, and they are currently at the forefront of the trendiest internet development: social networking. But unless they can start to offer more substantial benefits, it is hard to see them all surviving, once the Friend Of A Friend (FOAF) standard becomes a normal part of life on the net.[2][6] - -The article goes on to complain that the biggest problem with social networking is that there are too many social networking sites. Something is needed that can connect all of the different networks together. FOAF is the solution, and it will revolutionize social networking as a result. - -FOAF, according to the article, would tie the different networks together by doing three key things: - - * It would establish a machine-readable format for social data that could be read by any social networking site, saving users from having to enter this information over and over again - * It would allow “personal information management programs,” i.e. your “Contacts” application, to generate a file in this machine-readable format that you could feed to social networking sites - * It would further allow this machine-readable format to be hosted on personal homepages and read remotely by social networking sites, meaning that you would be able to keep your various profiles up-to-date by just pushing changes to your own homepage - - - -It is hard to believe today, but the problem in 2004, at least for savvy webizens and technology columnists aware of all the latest sites, was not the lack of alternative social networks but instead the proliferation of them. Given _that_ problem—so alien to us now—one can see why it made sense to pursue a single standard that promised to make the proliferation of networks less of a burden. - -### The FOAF Spec - -According to the description currently given on the FOAF project’s website, FOAF is “a computer language defining a dictionary of people-related terms that can be used in structured data.” Back in 2000, in a document they wrote to explain the project’s goals, Dan Brickley and Libby Miller, FOAF’s creators, offered a different description that suggests more about the technology’s ultimate purpose—they introduced FOAF as a tool that would allow computers to read the personal information you put on your homepage the same way that other humans do.[3][7] FOAF would “help the web do the sorts of things that are currently the proprietary offering of centralised services.”[4][8] By defining a standard vocabulary for people and the relationships between them, FOAF would allow you to ask the web questions such as, “Find me today’s web recommendations made by people who work for Medical organizations,” or “Find me recent publications by people I’ve co-authored documents with.” - -Since FOAF is a standardized vocabulary, the most important output of the FOAF project was the FOAF specification. The FOAF specification defines a small collection of RDF _classes_ and RDF _properties_. (I’m not going to explain RDF here, but again see [my post about the Semantic Web][4] if you want to know more.) The RDF _classes_ defined by the FOAF specification represent subjects you might want to describe, such as people (the `Person` class) and organizations (the `Organization` class). The RDF _properties_ defined by the FOAF specification represent logical statements you might make about the different subjects. A person could have, for example, a first name (the `givenName` property), a last name (the `familyName` property), perhaps even a personality type (the `myersBriggs` property), and be near another person or location (the `based_near` property). The idea was that these classes and properties would be sufficient to represent the kind of the things people say about themselves and their friends on their personal homepage. - -The FOAF specification gives the following as an example of a well-formed FOAF document. This example uses XML, though an equivalent document could be written using JSON or a number of other formats: - -``` - - - Dan Brickley - - - - - -``` - -This FOAF document describes a person named “Dan Brickley” (one of the specification’s authors) that has a homepage at `http://danbri.org`, something called an “open ID,” and a picture available at `/images/me.jpg`, presumably relative to the base address of Brickley’s homepage. The FOAF-specific terms are prefixed by `foaf:`, indicating that they are part of the FOAF namespace, while the more general RDF terms are prefixed by `rdf:`. - -Just to persuade you that FOAF isn’t tied to XML, here is a similar FOAF example from Wikipedia, expressed using a format called JSON-LD[5][9]: - -``` - - { - "@context": { - "name": "http://xmlns.com/foaf/0.1/name", - "homepage": { - "@id": "http://xmlns.com/foaf/0.1/workplaceHomepage", - "@type": "@id" - }, - "Person": "http://xmlns.com/foaf/0.1/Person" - }, - "@id": "https://me.example.com", - "@type": "Person", - "name": "John Smith", - "homepage": "https://www.example.com/" - } - -``` - -This FOAF document describes a person named John Smith with a homepage at `www.example.com`. - -Perhaps the best way to get a feel for how FOAF works is to play around with [FOAF-a-matic][10], a web tool for generating FOAF documents. It allows you to enter information about yourself using a web form, then uses that information to create the FOAF document (in XML) that represents you. FOAF-a-matic demonstrates how FOAF could have been used to save everyone from having to enter their social information into a web form ever again—if every social networking site could read FOAF, all you’d need to do to sign up for a new site is point the site to the FOAF document that FOAF-a-matic generated for you. - -Here is a slightly more complicated FOAF example, representing me, that I created using FOAF-a-matic: - -``` - - - - - - - - - - Sinclair Target - Sinclair - Target - - - - - John Smith - - - - - - - -``` - -This example has quite a lot of preamble setting up the various XML namespaces used by the document. There is also a section containing data about the tool that was used to generate the document, largely so that, it seems, people know whom to email with complaints. The `foaf:Person` element describing me tells you my name, email address, and homepage. There is also a nested `foaf:knows` element telling you that I am friends with John Smith. - -This example illustrates another important feature of FOAF documents: They can link to each other. If you remember from the previous example, my friend John Smith has a homepage at `www.example.com`. In this example, where I list John Smith as a `foaf:person` with whom I have a `foaf:knows` relationship, I also provide a `rdfs:seeAlso` element that points to John Smith’s FOAF document hosted on his homepage. Because I have provided this link, any program reading my FOAF document could find out more about John Smith by following the link and reading his FOAF document. In the FOAF document we have for John Smith above, John did not provide any information about his friends (including me, meaning, tragically, that our friendship is unidirectional). But if he had, then the program reading my document could find out not only about me but also about John, his friends, their friends, and so on, until the program has crawled the whole social graph that John and I inhabit. - -This functionality will seem familiar to anyone that has used Facebook, which is to say that this functionality will seem familiar to you. There is no `foaf:wall` property or `foaf:poke` property to replicate Facebook’s feature set exactly. Obviously, there is also no slick blue user interface that everyone can use to visualize their FOAF social network; FOAF is just a vocabulary. But Facebook’s core feature—the feature that I have argued is key to Facebook’s monopoly power over, at the very least, myself—is here provided in a distributed way. FOAF allows a group of friends to represent their real-life social graph digitally by hosting FOAF documents on their own homepages. It allows them to do this without surrendering control of their data to a centralized database in the sky run by a billionaire android-man who spends much of his time apologizing before congressional committees. - -### FOAF on Ice - -If you visit the current FOAF project homepage, you will notice that, in the top right corner, there is an image of the character Fry from the TV series Futurama, stuck inside some sort of stasis chamber. This is a still from the pilot episode of Futurama, in which Fry gets frozen in a cryogenic tank in 1999 only to awake a millennium later in 2999. Brickley, whom I messaged briefly on Twitter, told me that he put that image there as a way communicating that the FOAF project is currently “in stasis,” though he hopes that there will be a future opportunity to resuscitate the project along with its early 2000s optimism about how the web should work. - -FOAF never revolutionized social networking the way that the 2004 Guardian article about it expected it would. Some social networking sites decided to support the standard: LiveJournal and MyOpera are examples.[6][11] FOAF even played a role in Howard Dean’s presidential campaign in 2004—a group of bloggers and programmers got together to create a network of websites they called “DeanSpace” to promote the campaign, and these sites used FOAF to keep track of supporters and volunteers.[7][12] But today FOAF is known primarily for being one of the more widely used vocabularies of RDF, itself a niche standard on the modern web. If FOAF is part of your experience of the web today at all, then it is as an ancestor to the technology that powers Google’s “knowledge panels” (the little sidebars that tell you the basics about a person or a thing if you searched for something simple). Google uses vocabularies published by the schema.org project—the modern heir to the Semantic Web effort—to populate its knowledge panels.[8][13] The schema.org vocabulary for describing people seems to be somewhat inspired by FOAF and serves many of the same purposes. - -So why didn’t FOAF succeed? Why do we all use Facebook now instead? Let’s ignore that FOAF is a simple standard with nowhere near as many features as Facebook—that’s true today, clearly, but if FOAF had enjoyed more momentum it’s possible that applications could have been built on top of it to deliver a Facebook-like experience. The interesting question is: Why didn’t this nascent form of distributed social networking catch fire when Facebook was not yet around to compete with it? - -There probably is no single answer to that question, but if I had to pick one, I think the biggest issue is that FOAF only makes sense on a web where everyone has a personal website. In the late 1990s and early 2000s, it might have been easy to assume the web would eventually look like this, especially since so many of the web’s early adopters were, as far as I can tell, prolific bloggers or politically engaged technologists excited to have a platform. But the reality is that regular people don’t want to have to learn how to host a website. FOAF allows you to control your own social information and broadcast it to social networks instead of filling out endless web forms, which sounds pretty great if you already have somewhere to host that information. But most people in practice found it easier to just fill out the web form and sign up for Facebook than to figure out how to buy a domain and host some XML. - -What does this mean for my original question about whether or not Facebook’s monopoly is a natural one? I think I have to concede that the FOAF example is evidence that social networking _does_ naturally lend itself to monopoly. - -That people did not want to host their own data isn’t especially meaningful itself—modern distributed social networks like [Mastodon][14] have solved that problem by letting regular users host their profiles on nodes set up by more savvy users. It is a sign, however, of just how much people hate complexity. This is bad news for decentralized social networks, because they are inherently more complex under the hood than centralized networks in a way that is often impossible to hide from users. - -Consider FOAF: If I were to write an application that read FOAF data from personal websites, what would I do if Sally’s FOAF document mentions a John Smith with a homepage at `example.com`, and Sue’s FOAF document mentions a John Smith with a homepage at `example.net`? Are we talking about a single John Smith with two websites or two entirely different John Smiths? What if the both FOAF documents list John Smith’s email as `johnsmith@gmail.com`? This issue of identity was an acute one for FOAF. In a 2003 email, Brickley wrote that because there does not exist and probably should not exist a “planet-wide system for identifying people,” the approach taken by FOAF is “pluralistic.”[9][15] Some properties of FOAF people, such as email addresses and homepage addresses, are special in that their values are globally unique. So these different properties can be used to merge (or, as Libby Miller called it, “smoosh”) FOAF documents about people together. But none of these special properties are privileged above the others, so it’s not obvious how to handle our John Smith case. Do we trust the homepages and conclude we have two different people? Or do we trust the email addresses and conclude we have a single person? Could I really write an application capable of resolving this conflict without involving (and inconveniencing) the user? - -Facebook, with its single database and lack of political qualms, could create a “planet-wide system for identifying people” and so just gave every person a unique Facebook ID. Problem solved. - -Complexity alone might not doom distributed social networks if people cared about being able to own and control their data. But FOAF’s failure to take off demonstrates that people have never valued control very highly. As one blogger has put it, “‘Users want to own their own data’ is an ideology, not a use case.”[10][16] If users do not value control enough to stomach additional complexity, and if centralized systems are more simple than distributed ones—and if, further, centralized systems tend to be closed and thus the successful ones enjoy powerful network effects—then social networks are indeed natural monopolies. - -That said, I think there is still a distinction to be drawn between the subway system case and the social networking case. I am comfortable with the MTA’s monopoly on subway travel because I expect subway systems to be natural monopolies for a long time to come. If there is going to be only one operator of the New York City Subway, then it ought to be the government, which is at least nominally more accountable than a private company with no competitors. But I do not expect social networks to stay natural monopolies. The Subway is carved in granite; the digital world is writ in water. Distributed social networks may now be more complicated than centralized networks in the same way that carrying two MetroCards is more complicated than carrying one. In the future, though, the web, or even the internet, could change in fundamental ways that make distributed technology much easier to use. - -If that happens, perhaps FOAF will be remembered as the first attempt to build the kind of social network that humanity, after a brief experiment with corporate mega-databases, does and always will prefer. - -_If you enjoyed this post, more like it come out every four weeks! Follow [@TwoBitHistory][17] on Twitter or subscribe to the [RSS feed][18] to make sure you know when a new post is out._ - -_Previously on TwoBitHistory…_ - -> I know it's been too long since my last post, but my new one is here! I wrote almost 5000 words on John Carmack, Doom, and the history of the binary space partitioning tree. -> -> — TwoBitHistory (@TwoBitHistory) [November 6, 2019][19] - - 1. Please note that I did not dare say “dead.” [↩︎][20] - - 2. Jack Schofield, “Let’s be Friendsters,” The Guardian, February 19, 2004, accessed January 5, 2020, . [↩︎][21] - - 3. Dan Brickley and Libby Miller, “Introducing FOAF,” FOAF Project, 2008, accessed January 5, 2020, . [↩︎][22] - - 4. ibid. [↩︎][23] - - 5. Wikipedia contributors, “JSON-LD,” Wikipedia: The Free Encyclopedia, December 13, 2019, accessed January 5, 2020, . [↩︎][24] - - 6. “Data Sources,” FOAF Project Wiki, December 11 2009, accessed January 5, 2020, . [↩︎][25] - - 7. Aldon Hynes, “What is Dean Space?”, Extreme Democracy, accessed January 5, 2020, . [↩︎][26] - - 8. “Understand how structured data works,” Google Developer Portal, accessed January 5, 2020, . [↩︎][27] - - 9. tef, “Why your distributed network will not work,” Progamming is Terrible, January 2, 2013, . [↩︎][28] - - 10. Dan Brickley, “Identifying things in FOAF,” rdfweb-dev Mailing List, July 10, 2003, accessed on January 5, 2020, . [↩︎][29] - - - - --------------------------------------------------------------------------------- - -via: https://twobithistory.org/2020/01/05/foaf.html - -作者:[Two-Bit History][a] -选题:[lujun9972][b] -译者:[aREversez](https://github.com/aREversez) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://twobithistory.org -[b]: https://github.com/lujun9972 -[1]: tmp.mJHAgyVHGr#fn:1 -[2]: https://en.wikipedia.org/wiki/Fediverse -[3]: https://en.wikipedia.org/wiki/Prodigy_(online_service) -[4]: https://twobithistory.org/2018/05/27/semantic-web.html -[5]: https://www.ftrain.com/google_takes_all -[6]: tmp.mJHAgyVHGr#fn:2 -[7]: tmp.mJHAgyVHGr#fn:3 -[8]: tmp.mJHAgyVHGr#fn:4 -[9]: tmp.mJHAgyVHGr#fn:5 -[10]: http://www.ldodds.com/foaf/foaf-a-matic -[11]: tmp.mJHAgyVHGr#fn:6 -[12]: tmp.mJHAgyVHGr#fn:7 -[13]: tmp.mJHAgyVHGr#fn:8 -[14]: https://en.wikipedia.org/wiki/Mastodon_(software) -[15]: tmp.mJHAgyVHGr#fn:9 -[16]: tmp.mJHAgyVHGr#fn:10 -[17]: https://twitter.com/TwoBitHistory -[18]: https://twobithistory.org/feed.xml -[19]: https://twitter.com/TwoBitHistory/status/1192196764239093760?ref_src=twsrc%5Etfw -[20]: tmp.mJHAgyVHGr#fnref:1 -[21]: tmp.mJHAgyVHGr#fnref:2 -[22]: tmp.mJHAgyVHGr#fnref:3 -[23]: tmp.mJHAgyVHGr#fnref:4 -[24]: tmp.mJHAgyVHGr#fnref:5 -[25]: tmp.mJHAgyVHGr#fnref:6 -[26]: tmp.mJHAgyVHGr#fnref:7 -[27]: tmp.mJHAgyVHGr#fnref:8 -[28]: tmp.mJHAgyVHGr#fnref:9 -[29]: tmp.mJHAgyVHGr#fnref:10 diff --git a/sources/talk/20200406 How to Use a Differential Analyzer (to Murder People).md b/sources/talk/20200406 How to Use a Differential Analyzer (to Murder People).md index 440d3fa159..33c7b47d73 100644 --- a/sources/talk/20200406 How to Use a Differential Analyzer (to Murder People).md +++ b/sources/talk/20200406 How to Use a Differential Analyzer (to Murder People).md @@ -2,7 +2,7 @@ [#]: via: "https://twobithistory.org/2020/04/06/differential-analyzer.html" [#]: author: "Two-Bit History https://twobithistory.org" [#]: collector: "lujun9972" -[#]: translator: " " +[#]: translator: "toknow-gh" [#]: reviewer: " " [#]: publisher: " " [#]: url: " " diff --git a/sources/talk/20210209 Understanding Linus-s Law for open source security.md b/sources/talk/20210209 Understanding Linus-s Law for open source security.md deleted file mode 100644 index bbaf38fdb0..0000000000 --- a/sources/talk/20210209 Understanding Linus-s Law for open source security.md +++ /dev/null @@ -1,90 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Understanding Linus's Law for open source security) -[#]: via: (https://opensource.com/article/21/2/open-source-security) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -Understanding Linus's Law for open source security -====== -Linus's Law is that given enough eyeballs, all bugs are shallow. How -does this apply to open source software security? -![Hand putting a Linux file folder into a drawer][1] - -In 2021, there are more reasons why people love Linux than ever before. In this series, I'll share 21 different reasons to use Linux. This article discusses Linux's influence on the security of open source software. - -An often-praised virtue of open source software is that its code can be reviewed (or "audited," as security professionals like to say) by anyone and everyone. However, if you actually ask many open source users when the last time they reviewed code was, you might get answers ranging from a blank stare to an embarrassed murmur. And besides, there are some really big open source applications out there, so it can be difficult to review every single line of code effectively. - -Extrapolating from these slightly uncomfortable truths, you have to wonder: When nobody looks at the code, does it really matter whether it's open or not? - -### Should you trust open source? - -We tend to make a trite assumption in hobbyist computing that open source is "more secure" than anything else. We don't often talk about what that means, what the basis of comparison is ("more" secure than what?), or how the conclusion has even been reached. It's a dangerous statement to make because it implies that as long as you call something _open source_, it automatically and magically inherits enhanced security. That's not what open source is about, and in fact, it's what open source security is very much against. - -You should never assume an application is secure unless you have personally audited and understood its code. Once you have done this, you can assign _ultimate trust_ to that application. Ultimate trust isn't a thing you do on a computer; it's something you do in your own mind: You trust software because you choose to believe that it is secure, at least until someone finds a way to exploit that software. - -You're the only person who can place ultimate trust in that code, so every user who wants that luxury must audit the code for themselves. Taking someone else's word for it doesn't count! - -So until you have audited and understood a codebase for yourself, the maximum trust level you can give to an application is a spectrum ranging from approximately, _not trustworthy at all_ to _pretty trustworthy_. There's no cheat sheet for this. It's a personal choice you must make for yourself. If you've heard from people you strongly trust that an application is secure, then you might trust that software more than you trust something for which you've gotten no trusted recommendations. - -Because you cannot audit proprietary (non-open source) code, you can never assign it _ultimate trust_. - -### Linus's Law - -The reality is, not everyone is a programmer, and not everyone who is a programmer has the time to dedicate to reviewing hundreds and hundreds of lines of code. So if you're not going to audit code yourself, then you must choose to trust (to some degree) the people who _do_ audit code. - -So exactly who does audit code, anyway? - -Linus's Law asserts that _given enough eyeballs, all bugs are shallow_, but we don't really know how many eyeballs are "enough." However, don't underestimate the number. Software is very often reviewed by more people than you might imagine. The original developer or developers obviously know the code that they've written. However, open source is often a group effort, so the longer code is open, the more software developers end up seeing it. A developer must review major portions of a project's code because they must learn a codebase to write new features for it. - -Open source packagers also get involved with many projects in order to make them available to a Linux distribution. Sometimes an application can be packaged with almost no familiarity with the code, but often a packager gets familiar with a project's code, both because they don't want to sign off on software they don't trust and because they may have to make modifications to get it to compile correctly. Bug reporters and triagers also sometimes get familiar with a codebase as they try to solve anomalies ranging from quirks to major crashes. Of course, some bug reporters inadvertently reveal code vulnerabilities not by reviewing it themselves but by bringing attention to something that obviously doesn't work as intended. Sysadmins frequently get intimately familiar with the code of an important software their users rely upon. Finally, there are security researchers who dig into code exclusively to uncover potential exploits. - -### Trust and transparency - -Some people assume that because major software is composed of hundreds of thousands of lines of code, it's basically impossible to audit. Don't be fooled by how much code it takes to make an application run. You don't actually have to read millions of lines. Code is highly structured, and exploitable flaws are rarely just a single line hidden among the millions of lines; there are usually whole functions involved. - -There are exceptions, of course. Sometimes a serious vulnerability is enabled with just one system call or by linking to one flawed library. Luckily, those kinds of errors are relatively easy to notice, thanks to the active role of security researchers and vulnerability databases. - -Some people point to bug trackers, such as the [Common Vulnerabilities and Exposures (CVE)][2] website, and deduce that it's actually as plain as day that open source isn't secure. After all, hundreds of security risks are filed against lots of open source projects, out in the open for everyone to see. Don't let that fool you, though. Just because you don't get to see the flaws in closed software doesn't mean those flaws don't exist. In fact, we know that they do because exploits are filed against them, too. The difference is that _all_ exploits against open source applications are available for developers (and users) to see so those flaws can be mitigated. That's part of the system that boosts trust in open source, and it's wholly missing from proprietary software. - -There may never be "enough" eyeballs on any code, but the stronger and more diverse the community around the code, the better chance there is to uncover and fix weaknesses. - -### Trust and people - -In open source, the probability that many developers, each working on the same project, have noticed something _not secure_ but have all remained equally silent about that flaw is considered to be low because humans rarely mutually agree to conspire in this way. We've seen how disjointed human behavior can be recently with COVID-19 mitigation: - - * We've all identified a flaw (a virus). - * We know how to prevent it from spreading (stay home). - * Yet the virus continues to spread because one or more people deviate from the mitigation plan. - - - -The same is true for bugs in software. If there's a flaw, someone noticing it will bring it to light (provided, of course, that someone sees it). - -However, with proprietary software, there can be a high probability that many developers working on a project may notice something not secure but remain equally silent because the proprietary model relies on paychecks. If a developer speaks out against a flaw, then that developer may at best hurt the software's reputation, thereby decreasing sales, or at worst, may be fired from their job. Developers being paid to work on software in secret do not tend to talk about its flaws. If you've ever worked as a developer, you've probably signed an NDA, and you've been lectured on the importance of trade secrets, and so on. Proprietary software encourages, and more often enforces, silence even in the face of serious flaws. - -### Trust and software - -Don't trust software you haven't audited. - -If you must trust software you haven't audited, then choose to trust code that's exposed to many developers who independently are likely to speak up about a vulnerability. - -Open source isn't inherently more secure than proprietary software, but the systems in place to fix it are far better planned, implemented, and staffed. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/2/open-source-security - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/yearbook-haff-rx-linux-file-lead_0.png?itok=-i0NNfDC (Hand putting a Linux file folder into a drawer) -[2]: https://cve.mitre.org diff --git a/sources/talk/20210718 Is Open-Source Software Secure.md b/sources/talk/20210718 Is Open-Source Software Secure.md deleted file mode 100644 index d6d249b54b..0000000000 --- a/sources/talk/20210718 Is Open-Source Software Secure.md +++ /dev/null @@ -1,163 +0,0 @@ -[#]: subject: (Is Open-Source Software Secure?) -[#]: via: (https://news.itsfoss.com/open-source-software-security/) -[#]: author: (Ankush Das https://news.itsfoss.com/author/ankush/) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Is Open-Source Software Secure? -====== - -Being someone who prefers [Linux for desktop][1] and encourages using open-source software, you may expect the answer to the question raised in the headline with a big “**Yes**“. - -But I am not going to limit discussing the benefits of open-source software. Let us explore more! - -Here, I plan to share my thoughts on if open-source software is secure and what are the things involved in it that make secure or insecure. - -### Why Should You Care if Open-Source Software is Secure? - -No matter whether you use [Linux][2] or any other operating system, you will be surrounded with open-source software in some way (directly/indirectly). - -To give you an example, most of the proprietary software tools depend on some form of open-source libraries to make things work. - -Furthermore, there is a reason why companies of various scale (including Google, Microsoft, and Facebook) rely on open-source software or contribute their resources to the open-source community in one way or the other. - -Hence, the security of open-source software is something essential to know about. - -### Myths About Open-Source Software Security - -![][3] - -While there are several arguments to pitch the cons of open-source software in terms of security, some of them just do not make any sense. - -#### Anyone Can See & Exploit the Code - -The code is accessible to everyone, yes. But just because you can see the code—does that mean anyone can exploit it? - -**Not really.** - -Even though anyone can create a fork (or copy) of the software, the original software cannot be manipulated easily. - -Usually, the project maintainer (or a group of them) manage the code repository and accept the commits from contributors. The code is reviewed before approval. And no one can hijack the code just like that. - -**It takes effort for an attacker to exploit a vulnerability or add malicious code in a software, no matter if it is open-source or closed source.** - -#### Without Dedicated Resources, Security Breaks down - -Many believe that without dedicated employees or a team for an open-source software, it is difficult to maintain security. - -In contrast, with several types of contributors joining and leaving, the software gets more attention from a wide range of developers. - -And they may be able to spot security issues better than a few employees assigned for a proprietary software. - -Some projects from the likes of Mozilla have a dedicated team to effectively iron out security issues. Similarly, most of the successful open source projects have plenty of resources to dedicate for security. - -Hence, the open-source software ecosystem is a mixed bag for security. Even without dedicated resources, the projects get help from various contributors, and some are profitable to a great extent which helps them dedicate more resources. - -### Open Source Software is Secure: Here’s How - -![][3] - -Now that we have tackled the myths, let me highlight how open-source software deals with security issues. - -In other words, the benefits in security with open-source software. - -Not to forget, the perks of open-source software translate to some of the reasons why [Linux is better than Windows][4]. - -#### More Eyes Looking at the Code - -Unlike a proprietary software, access to code is not limited to a few developers. - -Some projects may even have thousands of developers watching the code, reviewing them, and flagging or fixing security issues. - -And this gives an edge over closed-source software by having **the ability to identify issues quickly and addressing them as soon as possible.** - -Not just limited to more developers, often enterprises get involved with open-source projects that they utilize. And when they do, they will also go through the code and review it. - -This gives another source of external audit that may help improve the security of the software. - -In contrast, with a closed-source software, a limited number of developers may not be able to find all kinds of security issues. And it may take them longer to fix all the issues one by one. - -#### Community Decision Making to Prioritize Security Issues - -The developers of a closed-source software may have certain restrictions and priorities as what to work on and when to resolve an issue. - -However, in case of an open-source project, the community of contributors can prioritize and assign themselves what they want to work on and when to fix an issue. You do not need to depend on a vendor or follow their instructions to address a security issue. - -The decision making that goes into addressing and fixing the security issues is more transparent and flexible in case of an open-source software. Hence, it can prove to be more effective leaving you with three specific benefits: - - * **Transparency** - * **No dependency on the vendor** - * **Faster security updates** - - - -### Open Source Software is not Bulletproof: Here’s Why - -![][3] - -While there are cases where open-source software may get an edge for security, there could be instances or factors that affects it. - -It is important to acknowledge that these problems exist, accordingly, an enterprise or an individual can make better decision about the state of security for an open-source software. - -#### Not enough Eyes to Review Code and Uncertainty - -Even if the code is accessible the world of developers, there are chances that a **project does not have enough contributors/developers to thoroughly review the code**. - -In that case, we cannot have great confidence of an open-source software being peer-reviewed, because it lacks exactly that. - -The open-source software may “claim” to have the best security just because its open-source, which is misleading when there are not enough developers working on it. - -Also, we do not know how many developers are looking/reviewing the code and how exactly the code walkthrough is going on. - -For instance, the Heartbleed bug was spotted after 2 years of its introduction in a project that was already popular i.e **OpenSSL**. - -#### Software Responsibility or Accountability - -This may not be important for individuals, but an **open-source software often comes with no warranties**. - -So, if a business uses it, they must take the responsibility of any losses or damages caused by the use of that software. - -This is something that tells you that nothing can be 100% secure and bug-free. No matter how many eyes you have on a code, or how skilled the contributors are, there will be risks in some form, be it security or data loss. - -And this brings us to the fact that open-source software is not bulletproof. - -### Open Source May Have its Edge for Better Security But… - -Nothing is superior when it comes to security. No matter if it is closed-source or open-source, the same set of principles apply when it comes to security. - -There are various external factors that can affect the security of a software, and **many of those are not source dependent**. - -The code must be monitored in the same way to keep things secure. - -Yes, the **open-source approach introduces benefits that closed-source software will never have**, but that does not mean that it is bulletproof. - -_What do you think about the state of security when it comes to open-source software?_ _Do you think it is superior to proprietary solutions?_ - -I would appreciate your valuable thoughts in the comments down below. - -#### Big Tech Websites Get Millions in Revenue, It's FOSS Got You! - -If you like what we do here at It's FOSS, please consider making a donation to support our independent publication. Your support will help us keep publishing content focusing on desktop Linux and open source software. - -I'm not interested - --------------------------------------------------------------------------------- - -via: https://news.itsfoss.com/open-source-software-security/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://news.itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://news.itsfoss.com/linux-foundation-linux-desktop/ -[2]: https://itsfoss.com/what-is-linux-distribution/ -[3]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQzOSIgd2lkdGg9Ijc4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4= -[4]: https://itsfoss.com/linux-better-than-windows/ diff --git a/sources/talk/20210816 What was your first programming language.md b/sources/talk/20210816 What was your first programming language.md index ecc66550ad..7e13d19ddb 100644 --- a/sources/talk/20210816 What was your first programming language.md +++ b/sources/talk/20210816 What was your first programming language.md @@ -2,7 +2,7 @@ [#]: via: "https://opensource.com/article/21/8/first-programming-language" [#]: author: "Jen Wike Huger https://opensource.com/users/jen-wike" [#]: collector: "lujun9972" -[#]: translator: "gpchn" +[#]: translator: " " [#]: reviewer: " " [#]: publisher: " " [#]: url: " " diff --git a/sources/talk/20220423 I Ditched Ubuntu for Manjaro- Here-s What I Think After a Week.md b/sources/talk/20220423 I Ditched Ubuntu for Manjaro- Here-s What I Think After a Week.md index ba9a2cf4d2..948d479519 100644 --- a/sources/talk/20220423 I Ditched Ubuntu for Manjaro- Here-s What I Think After a Week.md +++ b/sources/talk/20220423 I Ditched Ubuntu for Manjaro- Here-s What I Think After a Week.md @@ -2,7 +2,7 @@ [#]: via: "https://news.itsfoss.com/manjaro-linux-experience/" [#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/" [#]: collector: "lujun9972" -[#]: translator: "KevinZonda" +[#]: translator: " " [#]: reviewer: " " [#]: publisher: " " [#]: url: " " diff --git a/sources/talk/20220509 Cloud service providers- How to keep your options open.md b/sources/talk/20220509 Cloud service providers- How to keep your options open.md index 2d7819ac3a..277e470cda 100644 --- a/sources/talk/20220509 Cloud service providers- How to keep your options open.md +++ b/sources/talk/20220509 Cloud service providers- How to keep your options open.md @@ -2,7 +2,7 @@ [#]: via: "https://opensource.com/article/22/5/cloud-service-providers-open" [#]: author: "Seth Kenlon https://opensource.com/users/seth" [#]: collector: "lkxed" -[#]: translator: "FelixYFZ " +[#]: translator: " " [#]: reviewer: " " [#]: publisher: " " [#]: url: " " diff --git a/sources/talk/20220609 SSL Certificates- Make the Right Choice.md b/sources/talk/20220609 SSL Certificates- Make the Right Choice.md index 2d6d4eed87..7f66bd67f9 100644 --- a/sources/talk/20220609 SSL Certificates- Make the Right Choice.md +++ b/sources/talk/20220609 SSL Certificates- Make the Right Choice.md @@ -2,7 +2,7 @@ [#]: via: "https://www.opensourceforu.com/2022/06/ssl-certificates-make-the-right-choice/" [#]: author: "Jitendra Bhojwani https://www.opensourceforu.com/author/jitendra-bhojwani/" [#]: collector: "lkxed" -[#]: translator: "KevinZonda" +[#]: translator: " " [#]: reviewer: " " [#]: publisher: " " [#]: url: " " diff --git a/sources/talk/20220616 Using habits to practice open organization principles.md b/sources/talk/20220616 Using habits to practice open organization principles.md deleted file mode 100644 index ac9fdd2d56..0000000000 --- a/sources/talk/20220616 Using habits to practice open organization principles.md +++ /dev/null @@ -1,142 +0,0 @@ -[#]: subject: "Using habits to practice open organization principles" -[#]: via: "https://opensource.com/open-organization/22/6/using-habits-practice-open-organization-principles" -[#]: author: "Ron McFarland https://opensource.com/users/ron-mcfarland" -[#]: collector: "lkxed" -[#]: translator: "Donkey-Hao" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Using habits to practice open organization principles -====== -Follow these steps to implement habits that support open culture and get rid of those that don't. - -![Selfcare, drinking tea on the porch][1] - -Image by: opensource.com - -Habits are a long-term interest of mine. Several years ago, I gave a presentation on habits, both good and bad, and how to expand on good habits and change bad ones. Just recently, I read the habits-focused book Smart Thinking by Art Markman. You might ask what this has to do with [open organization principles.][2] There is a connection, and I'll explain it in this two-part article on managing habits. - -In this first article, I talk about habits, how they work, and—most important—how you can start to change them. In the second article, I review Markman's thoughts as presented in his book. - -### The intersection of principles and habits - -Suppose you learned about open organization principles and although you found them interesting and valuable, you just weren't in the habit of using them. Here's how that might look in practice. - -Community: If you're faced with a significant challenge but think you can't address it alone, you're likely in the habit of just giving up. Wouldn't it be better to have the habit of building a community of like-minded people that collectively can solve the problem? - -Collaboration: Suppose you don't think you're a good collaborator. You like to do things alone. You know that there are cases when collaboration is required, but you don't have a habit of engaging in it. To counteract that, you must build a habit of collaborating more. - -Transparency: Say you like to keep most of what you do and know a secret. However, you know that if you don't share information, you're not likely to get good information from others. Therefore, you must create the habit of being more transparent. - -Inclusivity: Imagine you are uncomfortable working with people you don't know and who are different from you, whether in personality, culture, or language. You know that if you want to be successful, you must work with a wide variety of people. How do you create a habit of being more inclusive? - -Adaptability: Suppose you tend to resist change long after what you're doing is no longer achieving what you had hoped it would. You know you must adapt and redirect your efforts, but how can you create a habit of being adaptive? - -### What is a habit? - -Before I give examples regarding the above principles, I'll explain some of the relevant characteristics of a habit. - -* A habit is a behavior performed repeatedly—so much so that it's now performed without thinking. -* A habit is automatic and feels right at the time. The person is so used to it, that it feels good when doing it, and to do something else would require effort and make them feel uncomfortable. They might have second thoughts afterward though. -* Some habits are good and extremely helpful by saving you a lot of energy. The brain is 2% of the body's weight but consumes 20% of your daily energy. Because thinking and concentration require a lot of energy, your mind is built to save it through developing unconscious habits. -* Some habits are bad for you, so you desire to change them. -* All habits offer some reward, even if it is only temporary. -* Habits are formed around what you are familiar with and what you know, even habits you don’t necessarily like. - -### The three steps of a habit - -1. Cue (trigger): First, a cue or trigger tells the brain to go into automatic mode, using previously learned habitual behavior. Cues can be things like seeing a candy bar or a television commercial, being in a certain place at a certain time of day, or just seeing a particular person. Time pressure can trigger a routine. An overwhelming atmosphere can trigger a routine. Simply put, something reminds you to behave a certain way. -2. Routine: The routine follows the trigger. A routine is a set of physical, mental, and/or emotional behaviors that can be incredibly complex or extremely simple. Some habits, such as those related to emotions, are measured in milliseconds. -3. Reward: The final step is the reward, which helps your brain figure out whether a particular activity is worth remembering for the future. Rewards can range from food or drugs that cause physical sensations to joy, pride, praise, or personal self-esteem. - -### Bad habits in a business environment - -Habits aren't just for individuals. All organizations have good and bad institutional habits. However, some organizations deliberately design their habits, while others just let them evolve without forethought, possibly through rivalries or fear. These are some organizational habit examples: - -* Always being late with reports -* Working alone or working in groups when the opposite is appropriate -* Being triggered by excess pressure from the boss -* Not caring about declining sales -* Not cooperating among a sales team because of excess competition -* Allowing one talkative person to dominate a meeting - -### A step-by-step plan to change a habit - -Habits don't have to last forever. You can change your own behavior. First, remember that many habits can not be changed concurrently. Instead, find a keystone habit and work on it first. This produces small, quick rewards. Remember that one keystone habit can create a chain reaction. - -Here is a four-step framework you can apply to changing any habit, including habits related to open organization principles. - -##### Step one: identify the routine - -Identify the habit loop and the routine in it (for example, when an important challenge comes up that you can't address alone). The routine (the behaviors you do) is the easiest to identify, so start there. For example: "In my organization, no one discusses problems with anyone. They just give up before starting." Determine the routine that you want to modify, change, or just study. For example: "Every time an important challenge comes up, I should discuss it with people and try to develop a community of like-minded people who have the skills to address it." - -##### Step two: experiment with the rewards - -Rewards are powerful because they satisfy cravings. But, we're often not conscious of the cravings that drive our behavior. They are only evident afterward. For example, there may be times in meetings when you want nothing more than to get out of the room and avoid a subject of conversation, even though down deep you know you should figure out how to address the problem. - -To learn what a craving is, you must experiment. That might take a few days, weeks, or longer. You must feel the triggering pressure when it occurs to identify it fully. For example, ask yourself how you feel when you try to escape responsibility. - -Consider yourself a scientist, just doing experiments and gathering data. The steps in your investigation are: - -1. After the first routine, start adjusting the routines that follow to see whether there's a reward change. For example, if you give up every time you see a challenge you can't address by yourself, the reward is the relief of not taking responsibility. A better response might be to discuss the issue with at least one other person who is equally concerned about the issue. The point is to test different hypotheses to determine which craving drives your routine. Are you craving the avoidance of responsibility? -2. After four or five different routines and rewards, write down the first three or four things that come to mind right after each reward is received. Instead of just giving up in the face of a challenge, for instance, you discuss the issue with one person. Then, you decide what can be done. -3. After writing about your feeling or craving, set a timer for 15 minutes. When it rings, ask yourself whether you still have the craving. Before giving in to a craving, rest and think about the issue one or two more times. This forces you to be aware of the moment and helps you later recall what you were thinking about at that moment. -4. Try to remember what you were thinking and feeling at that precise instant, and then 15 minutes after the routine. If the craving is gone, you have identified the reward. - -##### Step three: isolate the cue or trigger - -The cue is often hard to identify because there's usually too much information bombarding you as your behaviors unfold. To identify a cue amid other distractions, you can observe four factors the moment the urge hits you: - -Location: Where did it occur? ("My biggest challenges come out in meetings.") - -Time: When did it occur? ("Meetings in the afternoon, when I'm tired, are the worst time, because I'm not interested in putting forth any effort.") - -Feelings: What was your emotional state? ("I feel overwhelmed and depressed when I hear the problem.") - -People: Who or what type of people were around you at the time, or were you alone? ("In the meetings, most other people don't seem interested in the problem either. Others dominate the discussion.") - -##### Step four: have a plan - -Once you have confirmed the reward driving your behavior, the cues that trigger it, and the behavior itself, you can begin to shift your actions. Follow these three easy steps: - -1. First, plan for the cue. ("In meetings, I'm going to look for and focus my attention on important problems that come up.") -2. Second, choose a behavior that delivers the same reward but without the penalties you suffer now. ("I'm going to explore a plan to address that problem and consider what resources and skills I need to succeed. I'm going to feel great when I create a community that's able to address the problem successfully.") -3. Third, make the behavior a deliberate choice each and every time, until you no longer need to think about it. ("I'm going to consciously pay attention to major issues until I can do it without thinking. I might look at agendas of future meetings, so I know what to expect in advance. Before and during every meeting, I will ask why should I be here, to make sure I'm focused on what is important." - -##### Plan to avoid forgetting something that must be done - -To successfully start doing something you often forget, follow this process: - -1. Plan what you want to do. -2. Determine when you want to complete it. -3. Break the project into small tasks as needed. -4. With a timer or daily planner, set up cues to start each task. -5. Complete each task on schedule. -6. Reward yourself for staying on schedule. - -### Habit change - -Change takes a long time. Sometimes a support group is required to help change a habit. Sometimes, a lot of practice and role play of a new and better routine in a low-stress environment is required. To find an effective reward, you need repeated experimentation. - -Sometimes habits are only symptoms of a more significant, deeper problem. In these cases, professional help may be required. But if you have the desire to change and accept that there will be minor failures along the way, you can gain power over any habit. - -In this article, I've used examples of community development using the cue-routine-reward process. It can equally be applied to the other open organization principles. I hope this article got you thinking about how to manage habits through knowing how habits work, taking steps to change habits, and making plans to avoid forgetting things you want done. Whether it's an open organization principle or anything else, you can now diagnose the cue, the routine, and the reward. That will lead you to a plan to change a habit when the cue presents itself. - -In my next article, I'll look at habits through the lens of Art Markman's thoughts on Smart Thinking. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/22/6/using-habits-practice-open-organization-principles - -作者:[Ron McFarland][a] -选题:[lkxed][b] -译者:[Donkey-Hao](https://github.com/Donkey-Hao) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ron-mcfarland -[b]: https://github.com/lkxed -[1]: https://opensource.com/sites/default/files/lead-images/coffee_tea_selfcare_wfh_porch_520.png -[2]: https://theopenorganization.org/definition/open-organization-definition/ diff --git a/sources/talk/20220926 The story behind Joplin, the open source note-taking app.md b/sources/talk/20220926 The story behind Joplin, the open source note-taking app.md deleted file mode 100644 index ab229e6dba..0000000000 --- a/sources/talk/20220926 The story behind Joplin, the open source note-taking app.md +++ /dev/null @@ -1,140 +0,0 @@ -[#]: subject: "The story behind Joplin, the open source note-taking app" -[#]: via: "https://opensource.com/article/22/9/joplin-interview" -[#]: author: "Richard Chambers https://opensource.com/users/20i" -[#]: collector: "lkxed" -[#]: translator: "MareDevi" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -The story behind Joplin, the open source note-taking app -====== -Laurent Cozic sat down with me to discuss how Joplin got started and what's next for the open source note-taking app. - -In this interview, I met up with Laurent Cozic, creator of the note-taking app, Joplin. [Joplin][2] was a winner of the [20i][3] rewards, so I wanted to find out what makes it such a success, and how he achieved it. - -**Could you summarize what Joplin does?** - -[Joplin][4] is an open source note-taking app. It allows you to capture your thoughts and securely access them from any device. - -**Obviously, there are other note-taking apps out there—but apart from it being free to use, what makes it different?** - -The fact that it is open source is an important aspect for many of our users, because it means there is no vendor locking on the data, and that data can be easily exported and accessed in various ways. - -We also focus on security and data privacy, in particular with the synchronization end-to-end encryption feature, and by being transparent about any connection that the application makes. We also work with security researchers to keep the app more secure. - -Finally, Joplin can be customized in several different ways—through plugins, which can add new functionalities, and themes to customize the app appearance. We also expose a data API, which allows third-party applications to access Joplin data. - -**[[ Related read 5 note-taking apps for Linux ]][5]** - -**It's a competitive market, so what inspired you to build it?** - -It happened organically. I started looking into it in 2016, as I was looking at existing commercial note-taking applications, and I didn't like that the notes, attachments, or tags could not easily be exported or manipulated by other tools. - -This is probably due to vendor locking and partly a lack of motivation from the vendor since they have no incentive to help users move their data to other apps. There is also an issue with the fact that these companies usually will keep the notes in plain text, and that can potentially cause issues in terms of data privacy and security. - -So I decided to start creating a simple mobile and terminal application with sync capabilities to have my notes easily accessible on my devices. Later the desktop app was created and the project grew from there. - -![Image of Joplin on Chrome OS.][6] - -Image by: (Opensource.com, CC BY-SA 4.0) - -**How long did Joplin take to make?** - -I've been working on it on and off since 2016 but it wasn't full time. The past two years I've been focusing more on it. - -**What advice might you have for someone setting to create their own open source app?** - -Pick a project you use yourself and technologies you enjoy working with. - -Managing an open source project can be difficult sometimes so there has to be this element of fun to make it worthwhile. Then I guess "release early, release often" applies here, so that you can gauge user's interest and whether it makes sense to spend time developing the project further. - -**How many people are involved in Joplin's development?** - -There are 3-4 people involved in the development. At the moment we also have six students working on the project as part of Google Summer of Code. - -**Lots of people create open source projects, yet Joplin has been a resounding success for you. Could you offer creators any tips on how to get noticed?** - -There's no simple formula and to be honest I don't think I could replicate the success in a different project! You've got to be passionate about what you're doing but also be rigorous, be organized, make steady progress, ensure the code quality remains high, and have a lot of test units to prevent regressions. - -Also be open to the user feedback you receive, and try to improve the project based on it. - -Once you've got all that, the rest is probably down to luck—if it turns out you're working on a project that interests a lot of people, things might work out well! - -**Once you get noticed, how do you keep that momentum going, if you don't have a traditional marketing budget?** - -I think it's about listening to the community around the project. For example I never planned to have a forum but someone suggested it on GitHub, so I made one and it became a great way to share ideas, discuss features, provide support, and so on. The community is generally welcoming of newcomers too, which creates a kind of virtuous circle. - -Next to this, it's important to communicate regularly about the project. - -We don't have a public roadmap, because the ETA for most features is generally "I don't know", but I try to communicate about coming features, new releases, and so on. We also communicate about important events, the Google Summer of Code in particular, or when we have the chance to win something like the 20i FOSS Awards. - -Finally, very soon we'll have an in-person meetup in London, which is another way to keep in touch with the community and collaborators. - -**How does user feedback influence the roadmap?** - -Significantly. Contributors will often work on something simply because they need the feature. But next to this, we also keep track of the features that seem most important to users, based on what we read about on the forum and on the GitHub issue tracker. - -For example, the mobile app is now high priority because we frequently hear from users that its limitations and issues are a problem to effectively use Joplin. - -![Image of Joplin being used on a Desktop.][8] - -Image by: (Opensource.com, CC BY-SA 4.0) - -**How do you keep up to date with the latest in dev and coding?** - -Mostly by reading Hacker News! - -**Do you have a personal favorite FOSS that you'd recommend?** - -Among the less well-known projects, [SpeedCrunch][9] is very good as a calculator. It has a lot of features and it's great how it keeps a history of all previous calculations. - -I also use [KeepassXC][10] as a password manager. It has been improving steadily over the past few years. - -Finally, [Visual Studio Code][11] is great as a cross-platform text editor. - -**I'd assumed that Joplin was named after Janis, but Wikipedia tells me it's Scott Joplin. What made you choose the name?** - -I wanted to name it "jot-it" at first but I think the name was already taken. - -Since I was listening to Scott Joplin ragtime music a lot back then (I was pretty much obsessed with it), I decided to use his name. - -I think the meaning of a product name is not too important, as long as the name itself is easy to write, pronounce, remember, and perhaps is associated with something positive (or at least nothing negative). - -And I think "Joplin" ticks all these boxes. - -**Is there anything you can say about plans for Joplin? An exclusive tease of a new feature, perhaps?** - -As mentioned earlier, we are very keen to make improvements to the mobile app, both in terms of UX design and new features. - -We're also looking at creating a "Plugin Store" to make it easier to browse and install plugins. - -**Thanks for your time Laurent— best of luck with the future of Joplin.** - -*[This interview was originally published on the 20i blog and has been republished with permission.][12]* - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/22/9/joplin-interview - -作者:[Richard Chambers][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/20i -[b]: https://github.com/lkxed -[1]: https://opensource.com/sites/default/files/lead-images/wfh_work_home_laptop_work.png -[2]: https://joplinapp.org/ -[3]: https://www.20i.com/foss-awards/winners -[4]: https://opensource.com/article/19/1/productivity-tool-joplin -[5]: https://opensource.com/article/22/8/note-taking-apps-linux -[6]: https://opensource.com/sites/default/files/2022-09/joplin-chrome-os.png -[7]: https://opensource.com/article/21/10/google-summer-code -[8]: https://opensource.com/sites/default/files/2022-09/joplin-desktop.png -[9]: https://heldercorreia.bitbucket.io/speedcrunch/ -[10]: https://opensource.com/article/18/12/keepassx-security-best-practices -[11]: https://opensource.com/article/20/6/open-source-alternatives-vs-code -[12]: https://www.20i.com/blog/joplin-creator-laurent-cozic/ diff --git a/sources/talk/20221016.0 ⭐️⭐️ What’s new in GNOME 43.md b/sources/talk/20221016.0 ⭐️⭐️ What’s new in GNOME 43.md new file mode 100644 index 0000000000..3e6109f32f --- /dev/null +++ b/sources/talk/20221016.0 ⭐️⭐️ What’s new in GNOME 43.md @@ -0,0 +1,74 @@ +[#]: subject: "What’s new in GNOME 43?" +[#]: via: "https://opensource.com/article/22/10/whats-new-gnome-43-linux" +[#]: author: "Jim Hall https://opensource.com/users/jim-hall" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +What’s new in GNOME 43? +====== + +I love the [GNOME][1] desktop, and I use it as my daily [Linux desktop environment][2]. I find with GNOME, I can focus on the stuff I need to get done, but I still have flexibility to make the desktop look and act the way I want. + +The GNOME Project recently released GNOME 43, the latest version of the GNOME desktop. I met with GNOME developer Emmanuele Bassi to ask a few questions about this latest release: + +**Jim Hall (Jim): GNOME has lots of great desktop features. What are some of the new features in GNOME 43?** + +**Emmanuele Bassi (Emmanuele):** GNOME 43 has a complete redesign of the system status menu in the Shell. The new design is meant to give quick and easy access to various settings: network connections and VPNs; audio input and output sources and volumes; toggling between light and dark styles. It also has a shortcut for taking a screenshot or starting a screen recording. + +GNOME core applications have also been ported to the new major version of the GNOME toolkit, GTK4. GTK4 is more efficient when it comes to its rendering pipeline, which leads to smoother transitions and animations. Additionally, GNOME applications use libadwaita, which provides new UI elements and adaptive layouts that can seamlessly scale between desktop and mobile form factors. + +The GNOME file manager, Nautilus, is one of the applications that has been ported over to GTK4 and libadwaita, and it has benefitted from the new features in the core platform; it’s now faster, and it adapts its UI when the window is resized. + +The system settings can now show device security information, including manufacturing errors and hardware misconfiguration, as well as possible security issues like device tampering. Lots of work is planned for future releases, as device security is an area of growing concern. + +**Jim: What do you love most about GNOME 43?** + +**Emmanuele:** The most important feature of GNOME, one that I constantly take advantage of and that I always miss when I have to deal with other operating systems is how much the OS does not get in the way of what I’m doing. Everything is designed to let me concentrate on my job, without interruptions. I don’t have bells and whistles constantly on my screen, competing for attention. Everything is neatly tucked away, ready to be used only when I need to. + +**Jim: Many folks are familiar with GNOME today, but may not be familiar with its history. How did GNOME get started?** + +**Emmanuele:** GNOME started in 1997, 25 years ago, as a project for using existing free and open source components to create a desktop environment for everyone that would be respectful of users’ and developers’ freedom. At the time there were only commercial desktops for Unix, or desktops that were based on non-free components. Being able to take the entire desktop, learn from it, and redistribute it has always been a powerful motivator for contributors—even commercial ones. + +Over the past 25 years, GNOME contributors have worked not just on making the desktop, but creating a platform capable of developing and distributing applications. + +**Jim: Open source projects keep going because of a strong community. What keeps the GNOME community strong?** + +**Emmanuele:** I don’t pretend to speak for everyone in the project, but for myself I think the main component is the respect of every voice within the community of contributors, which comes from the shared vision of creating an entirely free and open platform. We all know where we want to go, and we are all working towards the same goal. Sometimes, we may end up pulling in different directions, which is why donating to entities like the GNOME Foundation, which sponsor gatherings and conferences, is crucial: they allow a more comprehensive communication between all the involved parties, and at the end we get better results for it. + +GNOME also takes very seriously respectful communication between members of the community; we have a strong code of conduct, which is enforced within the community itself and covers all venues of communication, including in person events. + +**Jim: GNOME established the Human Interface Guidelines (HIG) to unify the GNOME design and GNOME app interfaces. How did the HIG come about?** + +**Emmanuele****:**The Human Interface Guidelines (HIG) came into being after Sun did a usability study on GNOME 1, one of the very first usability studies for a free software project. The findings from that study led to the creation of a standardized document that projects under the GNOME umbrella would have to follow, which is how we ended up with GNOME 2, back in 2002. + +The HIG was a rallying point and a symbol, a way to demonstrate that the entire project cared about usability and accessibility, and it provided the tools to both desktop and application developers to create a consistent user experience. + +Over the years, the HIG moved away from being a complete checklist of pixels of padding and grids of components, and instead it now provides design principles, UI patterns, conventions, and resources for contributors and application developers. The HIG now has its own implementation library, called libadwaita, which application developers can use when targeting GNOME, and immediately benefit from a deeper integration within the platform without having to re-implement the various styles and patterns manually. + +_Thanks to Emmanuele Bassi for answering this interview. You can find GNOME at_[_https://www.gnome.org/_][3] + +_Read the release announcement for GNOME 43 at_[_https://release.gnome.org/43/_][4] + +_Learn about what’s new in GNOME 43 for developers at_[_https://release.gnome.org/43/developers/_][5] + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/whats-new-gnome-43-linux + +作者:[Jim Hall][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jim-hall +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/19/12/gnome-linux-desktop +[2]: https://opensource.com/article/20/5/linux-desktops +[3]: https://www.gnome.org/ +[4]: https://release.gnome.org/43/ +[5]: https://release.gnome.org/43/developers/ diff --git a/sources/talk/20221018.2 ⭐️⭐️⭐️ Exploring innovative Open Organization charts.md b/sources/talk/20221018.2 ⭐️⭐️⭐️ Exploring innovative Open Organization charts.md new file mode 100644 index 0000000000..6ee7fe0e8a --- /dev/null +++ b/sources/talk/20221018.2 ⭐️⭐️⭐️ Exploring innovative Open Organization charts.md @@ -0,0 +1,189 @@ +[#]: subject: "Exploring innovative Open Organization charts" +[#]: via: "https://opensource.com/article/22/10/innovative-open-organization-chart" +[#]: author: "Ron McFarland https://opensource.com/users/ron-mcfarland" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Exploring innovative Open Organization charts +====== + +The ability to react quickly and adapt to changing situations is critical in today's business and work environment. In the past, offering efficient, standardized systems was the way to reduce costs and provide more to the public. In today's rapidly changing world, that's not enough. Collaborating, deciding, and executing quickly on a project requires that the traditional organization chart change to strengthen **adaptability**, **transparency**, **collaboration**, **inclusivity,** and project **community—**all five Open Organization Principles. Today, there are too many interdependencies to stick to the traditional top-down organization chart. + +I just read the book [Team of Teams, by Stanley McChrystal][1], which discusses this concern, particularly in military combat situations. It is the efficiency of small, empowered, trusted, goal-oriented teams working together (and with other teams) that will be successful in the future. Their ability to interact with other teams will make a small group scalable within a large organization. McChrystal writes that adaptability, transparency, and cross-silo collaboration are key to their success. These are three of the Open Organization Principles. I think it's equally valid in the business environment and not just in military operations. + +### Speed in decision-making and how to address continual unpredictability + +When do you make a decision yourself, and when do you take decisions to top management? McChrystal states, "a 70% chance of success today is better than 90% tomorrow when speed of action is critical." These days, the competitors, or enemies, are moving at that pace. + +In my article "[The 4 components of a great decision, What makes a "good" open decision?][2]" I wrote that decision-making speed was very important. Well, that's more true than ever, and you can't do that if you need approvals up and down a large vertical organization chart. Quick decisions must be made on the frontline, where the issues are. A horizontal organization that gets the people most directly involved in the decision-making process is required and is part of the strength that McChrystal is talking about. + +![A horizontal org chart with connections between teams][3] + +Image by: + +(Ron McFarland, CC BY-SA 4.0) + +These connections should have solid lines, and the vertical lines should be dotted, as communications should go up the line only when need be and horizontally minute by minute in real-time. + +### Information reversal + +In another presentation, I talked about an upside-down organization chart, which I called the [hierarchy of support][4]. Compare this with a vertical organizational chart. + +![Hierarchy of company objectives][5] + +Image by: + +(Ron McFarland, CC BY-SA 4.0) + +A typical vertical organization chart has top management in the top box. The staff provided frontline information to superiors so that they could decide. + +Then, lines connect downward to departments under the top box, and directives move downward. Task directives flow from those department managers to the staff under them. + +In a rapidly changing, unpredictable environment, the superiors should provide surrounding information to the staff so frontline people can make decisions independently. Imagine turning that organization chart upside down, with top management at the bottom and the staff at the top. + +![Hierarchy of company support][6] + +Image by: + +(Ron McFarland, CC BY-SA 4.0) + +With today's information technology, the frontline staff is often better informed than their superiors. Therefore, managers' main job is to support the staff where needed, but the decisions should be made rapidly on the frontline. + +McChrystal uses the expression, "Eyes on - Hands off." I think he is suggesting what I'm saying in a different way. He calls top managers giving directives "chess players" and supporting managers "gardeners." + +McChrystal started a training company called [Crosslead][7] that trains individuals and companies on how this type of organization works. Their name implies the horizontal, frontline communication I mentioned in my upside-down organization chart. + +The book mentions Open Organization Principles throughout: + +- **Adaptability**, which he calls "resilience." +- **Collaboration**, which is horizontal within teams and between teams. +- **Community**, which is **Inclusivity** and **Transparency** within teams. + +### Getting through the forest by knowing the working environment + +Imagine your goal is to get through a forest to your home on the other side. Unfortunately, the forest is rapidly changing because of the weather and climate. + +One person gives you a map of the best way to go through the forest, but that map was made in the past and might be outdated. It might be the best way to get home, but blockages along that route may force you to return to your starting location. + +Another person has a current satellite image of the forest which shows every possible route and its present condition. Furthermore, he has guides spread throughout the forest who can communicate and advise you on the best route. + +Wouldn't the second method be more reliable with a rapidly changing forest? + +### McChrystal's organization chart + +It starts with a frontline team, a specific goal, and members' specific tasks. The members select a leader depending on the task at hand. Who is most experienced, informed, and qualified to lead them toward the given team goal? + +It might well be that the official leader is the least qualified to make decisions, so the system is very slow at best and freezes at worst. Who will most people follow? That will determine the leader of any given task. + +McChrystal writes about the "Perry Principle," in which top management could not give orders by sea because there was no communication system in [Admiral Perry's][8] days. McChrystal calls this a "principle" because empowerment was given to frontline staff as a last resort and only when forced. He thinks this should be reversed. Top management should only make the decision themselves when the frontline people can't decide for one reason or another. + +The team chart that McChrystal is proposing is on the right. + +![Command organizational chart versus team organizational chart][9] + +Image by: + +Team of Teams, page 96. + +An exponential growth in frontline connectedness speeds up the communication and action process in a way that the current hierarchical structure can not handle. The command chart on the left is just too slow in a rapidly changing environment. + +By the time the situation is reported, everything changes and reported information is obsolete. Therefore, a frontline leader, like a start-up entrepreneur, must have the authority, initiative, intuition, and creative thinking to make decisions and immediately act on them to achieve the best result. Speed determines success or failure. + +Up until now, adaptability has mostly been characteristic of small interactive teams rather than large top-down hierarchies. + +In this new environment, that frontline leader's superior must withhold decision-making on the one hand but relentlessly support the frontline on the other. This will lead to frontline decision-making competence to iterate and adjust in a fraction of the normal time. + +### Attention directed from efficiency to adaptability + +McChrystal introduces the work of [Frederick Winslow Taylor][10], who developed the reductionist theory and the optimization and standardization of processes. This process was the most efficient way to reduce costs and save energy. He believed there was one ideal way for any process. + +So, he researched processes, developed instruction sheets, and instructed the frontline staff just to follow directions. It was a hard and fast line between thinking (by the researcher) and action (by the frontline worker). This approach is fine for repeated, well-known, stable processes, but not in changing environments, like factories with complicated but linear predictable activities, but not in changing environments. Unfortunately, this concept took the initiative to improve away from the frontline operator, as all they had to do was act and not think. + +When modification was required, the frontline worker froze, unqualified and unskilled at adapting. + +McChrystal writes that his military combat environment is not predictable. It is a "complex system." This complexity has countless unpredictable interdependencies in the environment. + +When one event takes place, it may have a massive impact or no impact at all. This results in great unpredictability. We have to manage this unpredictability. In the past, communication was from a few to a few with some connected impact. Now, it is many to many, and no one knows who or what the impact is on who or what. It is totally unpredictable. + +I believe this reductionist process is still important, but it can only go so far. + +Therefore, those basic practice instruction sheets should come in the form of suggestions only and not orders to follow. McChrystal calls these situations _complexity systems_. It's like opening and walking through a door only to learn of other doors to choose from. + +Those other doors cannot be foreseen without walking through the previous door. After selecting one of those doors, you discover more doors to choose from. To be most effective, whenever you select a door, you let everyone in the system know which one you picked and ask for advice if available. This is where real-time transparency is vital. In this environment, planning is not helpful, but feedback is. + +Being better equipped and more efficient are not enough in complex environments. Being agile and resilient become critical factors. When disturbances come, the system must continue to function and adjust. This is all-important in a world of continual situational change. In this world, planning for disruption is vital. It is "rolling with the punches" or even benefiting from them by developing an immune system to disruption. When shocks come, options have been planned, developed, practiced, and applied when needed. Simply working on one ideal process is not enough. If all the attention is on the execution of one procedure, other more helpful skills may suffer. It is moving away from predicting a single forecast, exploring all possibilities, and preparing for them. McChrystal asks to contrast efficiency and effectiveness. He says, "Efficiency is doing things right. Effectiveness is doing the right thing." He thinks the latter is more important in a complex situation. To do that, people should be skilled in many rarely needed but still necessary tasks. + +### Collaboration over vertical communication walls + +Furthermore, breaching vertical walls between divisions or teams increases the speed of action, particularly where cross-functional collaboration is vital to the speed of response. + +According to McChrystal, both between teams and within teams, collective consciousness is developed over years of joint practice, trust building, cooperation, deep group, and individual understanding, bonding, and service to their greater purpose. + +The entire group can improvise in a coordinated way when necessary. Teamwork is a process of reevaluating everyone's move and intent, constant messaging, and real-time adjustment. + +### Barriers between teams + +As you move down the traditional organization chart, motivation and contextual awareness become more limited and specific, and greater distance from the overall organization's objectives. Members are tight within their team but separated from the other groups within the organization and possibly the entire organization's goals. + +![Command of teams organizational chart][11] + +Image by: + +Team of Teams, page 129 + +### Real-time communication and connections between teams + +In a complex, rapidly changing environment, the below chart is more appropriate, where there is a good deal of continual information flow and connections. + +![Inter-team organizational chart][12] + +Image by: + +Team of Teams, page 129 + +Team members tackling complex environments must all grasp not just their team's purpose but the overarching goal of the entire organizational system. They must also consider how their activities impact other groups. + +To be successful, team participation and team-to-team participation are vital, according to McChrystal. In Jim Whitehurst's [book][13] on letting and encouraging everyone to speak up in meetings, even the quiet people express this same point. + +I wrote about it in my first article, [When empowering employee decision-making, intent is everything][14], posted on April 19, 2016. This concept is true when trying to connect teams as well. + +Teams working on a problem and collaborating in real time can perform tasks more concurrently rather than sequentially, saving a massive amount of valuable time. + +### Wrap up + +This article presents several images of new organization chart concepts. Unofficially, to get things done, much horizontal communication has been going on for decades. The difference now is that updates are in minutes and not at weekly or monthly meetings. + +I also discussed the importance of the speed of decision-making in today's working environment and that a new real-time communication flow system is needed. I mentioned that at least three critical Organization Principles, namely adaptability, transparency, and collaboration, were vitally important to make communication flow and allow faster decision-making and execution. Furthermore, I also presented that just having a highly efficient and low-cost system is not enough when faced with a rapidly changing, unpredictable working environment. An approach better able to adapt to change needs to be introduced and put into use, namely a new open organization chart. + +In the second part of this article, I will discuss how this type of organization can work, including how to develop it and improve it. Also, I'll give examples of how it can work in various situations. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/innovative-open-organization-chart + +作者:[Ron McFarland][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/ron-mcfarland +[b]: https://github.com/lkxed +[1]: https://www.shortform.com/summary/team-of-teams-summary-stanley-mcchrystal?gclid=CjwKCAjwy_aUBhACEiwA2IHHQFl6iYqOX4zSl3JxC-BVubNJo3Ee11s2nF2t4HMN6roJn2yehivPshoCXlQQAvD_BwE +[2]: https://opensource.com/open-organization/17/3/making-better-open-decisions +[3]: https://opensource.com/sites/default/files/2022-10/horizontal-org-chart.png +[4]: https://www.slideshare.net/RonMcFarland1/hierarchy-of-objectives-support +[5]: https://opensource.com/sites/default/files/2022-10/hierarchy-company-objectives.png +[6]: https://opensource.com/sites/default/files/2022-10/hierarchy-company-support.png +[7]: http://www.crosslead.com/ +[8]: https://en.wikipedia.org/wiki/Matthew_C._Perry +[9]: https://opensource.com/sites/default/files/2022-10/command-vs-team-chart.png +[10]: https://en.wikipedia.org/wiki/Frederick_Winslow_Taylor +[11]: https://opensource.com/sites/default/files/2022-10/command-of-teams.png +[12]: https://opensource.com/sites/default/files/2022-10/connections-between-teams.png +[13]: https://www.goodreads.com/book/show/23258978-the-open-organization +[14]: https://opensource.com/open-organization/16/4/when-empowering-employee-decision-making-intent-everything diff --git a/sources/talk/20221024.5 ⭐️⭐️ Remixing Linux for blind and visually impaired users.md b/sources/talk/20221024.5 ⭐️⭐️ Remixing Linux for blind and visually impaired users.md new file mode 100644 index 0000000000..fbbc0a73db --- /dev/null +++ b/sources/talk/20221024.5 ⭐️⭐️ Remixing Linux for blind and visually impaired users.md @@ -0,0 +1,108 @@ +[#]: subject: "Remixing Linux for blind and visually impaired users" +[#]: via: "https://opensource.com/article/22/9/linux-visually-impaired-users" +[#]: author: "Vojtech Polasek https://opensource.com/users/vpolasek" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Remixing Linux for blind and visually impaired users +====== + +Vojtux, a Fedora project, is an unofficial Linux distribution aimed at visually impaired users. + +When I was around 5 years old, my father brought home our first computer. From that moment on, I knew I wanted to pursue a career in computers. I haven't stopped hanging around them since. During high school, when considering which specific area I wanted to focus on, I started experimenting with hacking, and that was the moment I decided to pursue a career as a security engineer. + +I'm now a software engineer on the security compliance team. I've been at Red Hat for over two years, and I work remotely in the Czech Republic. I've used Linux for about 12 years, mainly Arch Linux and Fedora, but I've also administered Debian, Gentoo, and Ubuntu in the past. + +![Image of Vojtech][1] + +Photo description: Black and white image of a smiling Vojtech, with a red frame around it and an illustrated paper airplane in the background. + +Outside of my day job, I play blind football, and I'm involved in various projects connecting visually impaired and sighted people together, including working in a small NGO that runs activities for blind and visually impaired people. I'm also working on an accessible Fedora project called [Vojtux][2], an unofficial Linux distribution aimed at visually impaired users. + +### The assistive technology stack + +When I use a smart device, I need several pieces of assistive technology. The first and most essential is called a screen reader. This is software that presents what's on the screen to blind or visually impaired people, either through speech or through braille (basically, it tries to serve as our eyes). It can read out notifications and tell me which button or page element I'm focusing on, allowing me to interact with graphical user interfaces. + +Screen readers use speech synthesis to speak aloud what appears on the screen. There are a variety of speech synthesizers, and some voices are more "natural-sounding" than others. The one I use, Espeak, is not very natural-sounding, but it's lightweight and fast. It also supports almost all languages, including Czech (which I use). + +Finally, I use a Braille display, a device that represents a line of text in Braille. I use this a lot, especially when I'm coding or doing code reviews. It's easier to grasp the structure of code when I can freely move from one code element to another by touch. I can also use its buttons to move the cursor to the character or area of the screen I'm interested in, and it has a Braille keyboard too if I want to use it. + +### How I use assistive technology on a daily basis + +When using a computer as a blind or visually impaired person, there are a couple of things that are relatively straightforward to do using the tech above. Personally, these are a few of the things I do every day: + +- The text console is pretty much my favorite application. As a general rule, when something's in text, then blind people can read it with a screen reader (this doesn't hold true in all cases, but in most.) I mainly use the console for system management, text editing, and working with guidance and documentation. +- I browse the web and interact with websites. +- I code and do code reviews using VSCode and [Eclipse][3]. +- I send emails and instant messages. +- I can use word processing software, like Google Docs (which is not open source, but common in the modern office) and [LibreOffice][4]. Google Docs developers have added a lot of keyboard shortcuts, which I can use to move around documents, jump to headings or into comments, and so on. +- I can play multimedia, usually. It depends on how the application is written. Some media players are more accessible than others. + +### Possible but painful + +This brings me to tasks that aren't so easy. I like to call these "possible but painful". + +PDF files can be difficult. Sometimes I end up needing to use optical character recognition (OCR) software to convert images to text. For example, recently I needed to read a menu for a restaurant. They had the PDF of their menu on their website, but it had been flattened, and didn't have a text layer. For me, this shows up as a blank screen. I had to use an OCR application from my smartphone to extract the text for me. Not only is this an extra step, but the resulting "translation" of the text isn't always entirely accurate. + +Viewing and creating a presentation can be problematic. To work around this, I create slides in HTML, using software such as [Pandoc][5], which can process [markdown][6] and convert it into slides. I've been using this for many years and it works well—it allows me total control of the resulting slides, because the markdown is just simple text. + +Video games can be made more accessible by basing them on sound or text. However, playing games can be doubly challenging on Linux as not only would you need to find an accessible game, but most PC games are also native to Windows so you would be dealing with some compatibility issues as well. + +Some websites and interfaces are more difficult to navigate than others. These issues are often quite easy to solve just by setting some attributes correctly. In general, lots of web content comes in the form of images, especially today. One of the easiest ways to make web content more accessible is to make sure that alternative text is added to images so that screen readers can read it out, and people who cannot distinguish the image have some idea what's there. Another thing I experience a lot is unlabeled controls: you know there's a button or a check box but you don't know what it does. + +### The Vojtux project optimises Linux for accessibility + +Developers don't intentionally set out to build applications that aren't accessible. The problem is that they usually don't know how to test them. There aren't many blind Linux users, so there aren't many people testing the accessibility of applications and providing feedback. Therefore, developers don't produce accessible applications, and they don't get many users. And so the cycle continues. + +This is one thing we hope to tackle with the Vojtux project. We want to create a Fedora remix that's user-friendly for visually impaired and blind users. We hope it will attract more users, and that those users start discovering issues to report, which will hopefully be solved by other developers in the open source community. + +So why are we doing this? Well, it's important to point out that Fedora is not an inaccessible distribution by design. It does have many accessibility tools available in the form of packages. But these aren't always present from the beginning, and there are a lot of small things which need to be configured before it can be proficiently used. This is something that can be discouraging to a beginner Fedora user. + +We want Vojtux to be as friendly and predictable for a blind user as possible. When a user launches a live image, the screen immediately starts being read as soon as a graphical user interface appears. All [environment variables][7] needed for accessibility are loaded and configured correctly. + +Vojtux brings the following changes, among others: + +- Environment variables for accessibility are configured from the start. +- The Orca screen reader starts as soon as the graphical interface loads. +- A custom repo is added with extra voice synthesis and packaged software. +- Many alternative keyboard shortcuts have been added. +- There's a special script that can turn your monitor on and off. Many users do not need the monitor at all and having it off is a great power saver! + +### So how can you help? + +First, if you'd like to contribute to Vojtux (or just spread the word), you can find out more on [our repository][2]. + +Additionally, when working on a team with someone who has a visual impairment, there might be some additional considerations depending on the accessibility tech being used. For example, it's not easy for us to listen to someone and read at the same time, because we are basically getting both things through audio, unless someone is very proficient with the Braille display. + +Lastly, bear in mind that blind and visually impaired users consume the same end products as you do, whether that's presentation slides or websites or PDFs. When building products or creating content, your choices have a huge effect on accessibility and how easy it is for us to engage with the end result. Know that we are here, we love to use computers and technology, and we're often willing to help you test it, too. + +![Image of Vojtech holding a football][8] + +Image description: Vojtech holding a football. He is wearing a football uniform and protective goggles. + +This article originally published in September 2022 and has since been updated with the project's official name, Vojtux. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/9/linux-visually-impaired-users + +作者:[Vojtech Polasek][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/vpolasek +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/2022-08/Vojtech.png +[2]: https://github.com/vojtapolasek/Fegora +[3]: https://opensource.com/article/20/12/eclipse +[4]: https://opensource.com/article/22/2/libreoffice-accessibility +[5]: https://opensource.com/article/18/9/intro-pandoc +[6]: https://opensource.com/article/19/9/introduction-markdown +[7]: https://opensource.com/article/19/8/what-are-environment-variables +[8]: https://opensource.com/sites/default/files/2022-08/Vojtech%20holding%20a%20football.jpg diff --git a/sources/talk/20221031.0 ⭐️⭐️⭐️ 20 technology horror stories about learning the hard way.md b/sources/talk/20221031.0 ⭐️⭐️⭐️ 20 technology horror stories about learning the hard way.md new file mode 100644 index 0000000000..6902cdd07b --- /dev/null +++ b/sources/talk/20221031.0 ⭐️⭐️⭐️ 20 technology horror stories about learning the hard way.md @@ -0,0 +1,262 @@ +[#]: subject: "20 technology horror stories about learning the hard way" +[#]: via: "https://opensource.com/article/22/10/technology-horror-stories" +[#]: author: "AmyJune Hineline https://opensource.com/users/amyjune" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +20 technology horror stories about learning the hard way +====== + +Sysadmins, web designers, engineers, and programmers share their scariest experiences on the command line. + +Halloween will be here before you know it! This fun, over-the-top holiday is a great time to ponder the mortal fears of the developer in each of us. What haunts you the most, in the quiet moments just before your code starts to run? + +Getting into the spirit of Halloween, I asked some Opensource.com writers: What's the scariest code you've seen or written? + +### Bad permissions + +I was responsible for a server, and I FTP'd something up. There were some funky things displaying, so I thought some permissions needed to be changed. + +Needless to say, I foolishly turned off read mode and took down the site. (A website is not much good when nobody can access it.) + +It took me hours to fix. This was at an agency years ago when I was the sole web developer. + +—[Miriam Goldman][1] + +### Shambling HTML + +I took down a client's website, who was an author on the Wall Street Journal bestseller list at the time, because the original WordPress default theme had an update available. + +His developer had hardcoded HTML into the theme instead of creating a child theme. I ran the update. + +This was in the days when folks didn't have nightly backups easily, so I spent hours on the phone with the hosting provider. Things like staging, child themes, nightly backups, or manual backups, are all now normal things, as well as the ability to auto-update and manually roll back. Not so in that era. + +—[Courtney Robertson][2] + +### Not-so-secret key + +I think many of us have seen a secret key in public code before. Or another favorite: A friend of mine sending emails to 100,000 users from the dev server. + +—[John E. Picozzi][3] + +### Unix mix-up + +This is a Unix story. It's fixed in [Linux][4] today. + +A day before I was going to give an important demo of a new component to management, I had to refresh my code (this was way before [Git][5] existed.) I went to my home directory, found the project directory, and deleted everything. Unfortunately, in that flavor of Unix, this command followed symbolic links, and I had a link to the latest version of the code (not all was on the source code system as it was still in the testing phase). + +A day later, there was a network problem in the building, so the demo was delayed for a day, and we managed to recover. It was more than three decades ago. Even now I have no clue whether the network problem was a coincidence or an attempt of our sysadmin to save us (if so, it worked!) + +—[Josh Salomon][6] + +### Imperative + +Seeing `!important;` all over a CSS file instead of proper use of specificity. + +I once had to override and customize almost all of a WordPress theme's CSS because the owner of the site wouldn't budge on getting a new theme that was closer to the design he wanted. + +That same theme was last updated by the developer in 2018, and the website is still using it. + +—[Christi Nickerson][7] + +### Misquoted + +In a previous role, my predecessor misquoted the lyrics to Journey's "Any Way You Want It" in a code comment. + +—[Ben Cotton][8] + +### The ghost of Algol68 + +Algol68's complexity, back in the late 1960s and early 1970s, frightened away many influential people, including Niklaus Wirth. The most common complaint I can recall back then was along the lines of "who could write a compiler for such a complicated beast?" And yet many people did. Moreover, many of the concepts developed or at least formalized as [Algol68][9] appeared in later languages, notably in C and the Bourne shell (thanks to Steve Bourne). + +Some of Algol68's concepts have not aged well. The concept of I/O dealing with "books" and "chapters," and so on, is a bit weird today. Leaving things like character sets to the implementation seems pretty old-fashioned. + +But some are, or should be, tremendously relevant today, such as expressions that yield a value, strong typing (types in Algol68 are called "modes"), [heap memory and garbage collection][10], definition and overloading of operators, and more. + +Sticking with the Hallowe'en theme, both tricks and treats. + +Algol68 is a language that merits study, if for no other reason than to see where so many of modern computing's ideas came from, and to see how many have been lost along the way. + +—[Chris Hermansen][11] + +### Passwords exposed + +I was doing a tech audit for an incoming support client, and the previous developer put passwords in plain text throughout the full theme, and used horrible ways to connect to a remote database. Their composer file was also ghoulishly bloated. It took five minutes every time I tried to get the site up and running locally. Outdated dependencies, repos I could not access, the list goes on. + +—[Miriam Goldman][1] + +### The maze + +The scariest code I ever saw was a piece of PDP-11 assembly language in the kernel of an operating system named RSTS, which nobody remembers today. Source code was on microfiche in those days, and I had followed this code path through a few twists and turns, trying to figure out what was going on. And then, I ran into this instruction: + +``` +MOV R5,PC +``` + +I threw up my hands and wailed. I really did wail. People in the office thought I'd hit my head, or had a heart attack. + +In those days, memory was precious and a `MOV` instruction used a teeny tiny bit less memory than a `BR` (for "branch") instruction. Copying the contents of register 5 into the program counter was really a cheap unconditional branch to the address stored in register 5. Except, I had no clue what was stored in register 5, or how to find it. + +To this day, almost 40 years later, I wonder who would write code like that and how anyone could debug it. + +—[Greg Scott][12] + +### Off by one + +I work in the automation industry, where the PLCs are programmed in some pretty weird languages. + +An example that haunts me is the fact that in the language [ST][13], you can define arrays to begin at index 1. It means that the first element is at position 1, not 0. It drives me nuts when I see it. + +—[Stephan Avenwedde][14] + +### Divergence + +I took a MongoDB instance down for 40 minutes once during a stage-to-prod launch. Our staging environment had diverged from production. It was just a database configuration difference—not very exciting. But it's a good lesson to make sure your staging and prod environments are in sync! + +—[Em Nouveau][15] + +### Unearthly whispers + +This is from a project that's still alive and kicking, but I've changed the code to hide the source. + +``` +for(int c =0; y < yyy && c < ccc; y++, c++){// some code here} +``` + +It seems like an innocent loop at first. But maybe you're asking why there are two variables with two stop conditions and two increments. And then you realize there's only one initializer and the second variable (`y`) is initialized before this loop in a different code block. + +When I realized this, it took me about an hour to understand why the code was written in this way, and how it's supposed to work. Obviously, there were no `c` comments and the variable names are meaningless (`c` is called `c` in the code and `y` has a bit more meaningful name, but not meaningful enough to explain to me its meaning, not even today when I understand what it does). + +—[Josh Salomon][6] + +### Critical data + +Around 1980, I got my first job after college. I was the Assistant Computing Center Director at an engineering college in Indiana. That's a fancy title for the second-in-command of a two-person IT shop. I handled administrative computing on a PDP-11/40, with RK05 removable "pizza platter" disk drives (2.5 MB each.) Each admin office had one drive, and part of my job was to back them up, disk to disk, every week. But I got busy over that summer and skipped the Registrar's Office four weeks in a row. And then I realized the risk, so I made sure to start my monthly disk-to-tape backup. + +I dismounted the Registrar's pizza platter from the 11/40 and mounted it on the 11/70, which had a 9-track tape drive, and started my backup. A few minutes later, I heard a scraping noise inside that disk drive. Yep, the heads crashed. In a few short minutes, I'd destroyed all the Registrar's data, and the then-most-recent backup, which was a four-week-old 9 track tape. + +It was a, well, uncomfortable moment when I had to look the Registrar department head in the eye and tell him I had destroyed all his data. + +Today, I tell new IT people you're not a pro until you've destroyed somebody's critical data, and there's no way to recover it. Remember that feeling in the pit of your stomach forever. + +—[Greg Scott][12] + +### Angry mob + +A client hacked WordPress core to add features that later came out in a routine update and couldn't understand why the site kept crashing every time they attempted to update LearnDash. (They also didn't like our report that called out their poor development practices.) They basically showed us the door calling us liars and incompetents. To this day, I still have delegate access to their domains and wp-admin access to production and development of two domains. + +They also, despite us sharing a link to an encrypted location for sharing access credentials, sent our logins over emails. + +—[Laura Byrne][16] + +### Don't forget to backup + +I've not worked much on corporate networks, so I haven't downed any servers. However, as I young person, I tried to help a person with an IT problem and somehow caused Windows 95 to crash, and had to reinstall it for free. + +Another of my saddest moments as a very young Amiga user was when my save disk, containing all my files, broke due to some mechanical failure. Nowadays, I've gotten better at backing up more of my important personal files. + +—[Rikard Grossman-Nielsen][17] + +### Root of all evil + +I was new to Linux, and I'd just come from DOS where I used Norton Commander. Then Midnight Commander got released and I was very happy about it. It wasn't packaged for the Linux distro I used at the time (Jurix), so I compiled it myself from source, just like other software I used at that time. It worked perfectly well, and suddenly I felt more at home on Linux. + +That's not the horror story. + +My colleagues told me not to run Midnight Commander as root, regardless of how comforting it was. But root was easy, and it felt more like DOS, so I ignored their advice. Long story short: I accidentally removed the content of the entire `/etc` directory. Until that time, I'd never had to use backups, but that day I learned that backups are actually useful. + +27 years later, I still remember this story, and I do regular backups. + +—[Peter Czanik][18] + +### Illusion + +The worst project one agency had me "make" was a one-pager that seemed straightforward at first. I said I'd be able to hash it together with some HTML and CSS, maybe a little Javascript. But they specifically asked me not to do that. They wanted me to cut out the design and literally use CSS to position those pieces around the page. They also had me add all CSS inline, directly into the HTML file, because they literally wanted **one page**. + +None of the text was real text. + +There were no real HTML elements aside from the ones needed to position those images. + +I told them that the design was simple enough that I could throw it together with actual code, but they didn't want that. They only wanted me to spend the time to cobble the pieces together and then move on to a different project. They had me make two little one-page sites like that. + +It hurt my front-end soul. It was physically painful for me to do that project. It was a temp-to-perm gig, and when they offered me full-time, I politely declined. + +—[Rachel Vasquez][19] + +### Corruption + +The scariest things to me are memory corruptions that can occur in ANSI C99. During a screencast, I captured this (not quite) paranormal occurrence in this [YouTube clip][20]. + +![Image of gseqencer before memory corruption.][21] + +The GtkEntry labeled `file` shows some random glyphs. I've double checked the [code][22], but didn't find any issues. + +The `ags_export_soundcard_open_response_callback()` function is a callback to the "response" event of GtkFileChooserDialog. (For the record, the tool to target this problem is [valgrind][23].) + +![Image of gsequencer after memory corruption.][24] + +—[Joël Krähemann][25] + +### Python fears + +The most horrific programming feature I ever saw is the access Python gives to its `dict`. Changing the type of an object at runtime is against my programming code of conduct. + +—[Josh Salomon][6] + +### Franken-net + +In 2006, I built firewalls based on Fedora and a bunch of scripting, and persuaded a customer with a large website inside a colo center to replace a proprietary firewall with one of mine. I built it and showed up to install it at 4AM one morning. That was when I learned (the hard way) that he had a load balancer behind his firewall, but with a public IP address. The customer endured a 5-minute outage, but I reconnected everything to the original, and it all came back online. + +I found a way to handle his franken-net configuration by using proxy ARP. The idea was whenever anyone from the outside world did an ARP request for the load balancer, I would answer. A few days later, I showed up at 4AM again and installed my system. This time, I knocked everything in the entire colo center offline. I had set up my proxy ARP to respond to everything, and so all traffic on the LAN eventually found me and disappeared into a black hole. + +Once I realized what I'd done, I put it all back the way it was. But the damage was done. If you tried to browse your favorite website around 4AM US Central time one morning in 2006 and it didn't respond, it might have been my fault. I knocked an entire colo site offline by installing one system in a rack and turning it on. + +The website operator screamed and I slunk out the door. They never invited me back to try again. That was a shame, because bridging probably would have worked. + +—[Greg Scott][12] + +### Your horror story + +What's your favorite technology-related horror story? Tell us in the comments (but be nice, and change project names to protect the innocent!) + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/technology-horror-stories + +作者:[AmyJune Hineline][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/amyjune +[b]: https://github.com/lkxed +[1]: https://opensource.com/users/miriamgoldman +[2]: https://opensource.com/users/courtneyrdev +[3]: https://opensource.com/users/johnpicozzi +[4]: https://opensource.com/tags/linux +[5]: https://opensource.com/downloads/cheat-sheet-git +[6]: https://opensource.com/users/joshs +[7]: http://cnickerson.com +[8]: https://opensource.com/users/bcotton +[9]: https://opensource.com/article/20/12/learn-algol-68 +[10]: https://opensource.com/article/22/6/garbage-collection-java-virtual-machine +[11]: https://opensource.com/users/clhermansen +[12]: https://opensource.com/users/greg-scott +[13]: https://en.wikipedia.org/wiki/Structured_text +[14]: https://opensource.com/users/hansic99 +[15]: https://opensource.com/users/nouveau +[16]: http://twitter.com/@NewYorkerLaura +[17]: https://opensource.com/users/rikardgn +[18]: https://opensource.com/users/czanik +[19]: https://opensource.com/users/rachievee +[20]: https://youtu.be/Go6r-CT06zc?t=103 +[21]: https://opensource.com/sites/default/files/2022-10/gsequencer-before-memory-corruption.png +[22]: https://git.savannah.nongnu.org/cgit/gsequencer.git/tree/ags/app/ags_export_soundcard_callbacks.c?h=4.4.x#n397 +[23]: https://opensource.com/article/21/8/memory-programming-c +[24]: https://opensource.com/sites/default/files/2022-10/scarygsequencer-after-memory-corruption.png +[25]: https://opensource.com/users/joel2001k diff --git a/sources/talk/20221107.1 ⭐️⭐️ What you actually need to know about open source to get started.md b/sources/talk/20221107.1 ⭐️⭐️ What you actually need to know about open source to get started.md new file mode 100644 index 0000000000..be8a97423b --- /dev/null +++ b/sources/talk/20221107.1 ⭐️⭐️ What you actually need to know about open source to get started.md @@ -0,0 +1,97 @@ +[#]: subject: "What you actually need to know about open source to get started" +[#]: via: "https://opensource.com/article/22/11/get-started-open-source" +[#]: author: "Katie Edwards https://opensource.com/users/kaedward" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +What you actually need to know about open source to get started +====== + +A beginner's guide to open source explained in plain terms. + +So you want (or need) to figure out what ["open source"][1] really means. I'll cover the basics of open source, whether you're interested in contributing to a project or want to be in the loop at a new job where the term keeps getting thrown around. + +Full disclosure: I am a person with little technical experience, working in the content-design fringes of a very technical open source environment. Given my background in marketing and communication, I felt like a fish out of water when I made this career switch. [Git][2], data science, the ins and outs of software… It was, and still is a year later, a lot to comprehend. + +But that's why I'm writing this piece. I want to help make open source a little less intimidating. After all, at the center of open source is a supportive learning community—built for everyone, technically experienced or not. + +I'll start with the absolute basics. + +### What is open source? + +For the record, the industry definition of open source is available at the [Open Source Initiative][3] site. + +However, the popular perception of "open source" software is usually that it doesn't cost anything, the source code is accessible, anyone can contribute to it, and you can redistribute it or do whatever else you want with it. + +Some of that is true, and some of it plays into a few common misconceptions, one of which is cost. + +#### Open source costs $0 + +Is it true? Usually, but not always. By nature of its code being publicly available, open source software can be obtained at no cost. However, for-profit companies do exist around open source projects. But if the software is available at no cost, how do open source companies even exist? How do they make money? + +The concept of having a "free product" is counter-intuitive. But that's just the thing: A company doesn't have to sell software to profit from the management of products, storage of data, and customer support. + +Many companies follow a subscription model, offering customer support in case of bugs or general confusion. Data storage isn't free, so that is another area where these companies can bring in income. In this regard, the "product" isn't the software; it's the benefit of a subscription. + +- **The source code is accessible**: Is it true? Yes, always. This accessibility is a prerequisite for adopting the term "open source." The source code must be available to view, use, modify, and redistribute. +- **You can do whatever you want with the code**: Is it true? It depends. Subject to licensing terms, there are some limitations on how you can use code, but you can generally use it however you'd like. Whether that means tweaking a project to fit a specific need or using it as the basis for something else, open source software is yours, and everyone else's, to modify. +- **Anyone can contribute to open source projects**: Is it true? Yes - within limits. Anyone with the [right skill set][4] can contribute to open source. However, that doesn't mean all contributions are always accepted and implemented. + +For example, say you're interested in a project where the end goal is a catalog of all the types of birds in the world. You're really into dinosaurs, specifically dinosaurs that may have eventually evolved into modern-day birds. So, you contribute entries for all of the most bird-like dinosaurs. The project owners could see this and think, "Sweet, those are some great prehistoric birds." However, they're also allowed to say, "Hmm, those dinosaurs are like birds, but they're technically not birds yet. They probably don't belong on Birdpedia." + +Luckily, projects don't usually work under lawless conditions. Open source projects typically come with contribution guidelines and codes of conduct, so you don't have to worry about your additions flying off the rails. + +### Why open source? + +So, after all the contributions are made (if it's ever actually done), why would people give away their software for no cost? If so many people put their time and effort into creating something, why wouldn't they band together and slap a price tag on it? + +This question comes with a lot of answers. Here are a few: + +- Starting a business is hard, especially if the project you're working on doesn't form the strong foundation for a money machine. It can be easier to rally a bunch of like-minded people without commitments or the expectation of paychecks. +- Most open source communities consist of people interested in improving software or bringing it into existence but don't have the time or interest to commit to working full-time on a project. Sometimes open source represents passion projects, geek groups, and crowd-sourced solutions to annoying problems. +- The groups that form around open source projects of all sizes foster supportive communities where contributors and onlookers alike can practice their skills, improve software they regularly use, teach and learn from each other, and feel empowered to make their voices heard. Many open source communities are essentially hyper-focused online hobby clubs. + +### Where do I get involved? + +Now you may ask yourself, "But what do I do with this information? Can I contribute to open source projects? What if I'm not good enough yet?" + +Never fear—even [beginners][5] are welcome to contribute to open source projects. It's a great way to hone your skills while working with a community towards a larger goal. And, as I talked about earlier, the worst that can happen is your changes aren't merged into Birdpedia (and that's because those product owners just can't see your vision of a Birdpedia where birds and their ancestors gleefully coexist in an online world of bird-related knowledge). + +Do you have to know how to code to contribute to projects? Contrary to popular belief, [no, you don't][6]. Projects "take a village" to thrive, which means they need input from people of all different backgrounds. Visual designers, writers, marketers, reviewers, translators, subject matter enthusiasts, and even just users of the resulting product are all valuable contributors. Not only do they help build out and improve products, but they identify bugs, suggest improvements, spread the word about the project, and generally strengthen the community. + +In short, no matter what your background or experience, if you're interested in open source or a specific project, you're nearly guaranteed to be welcomed with open arms. + +### Get started with open source now + +Still not sure where to begin? Here are some ideas and resources to get you started: + +- [Up For Grabs][7] is a "list of open source projects which have curated tasks specifically for new contributors." This is a great place to find an easy first PR opportunity, which is a great way to find out what kind of contributions you'll enjoy. +- Check out this list of [beginner-friendly projects][8] on GitHub. +- If you're still not feeling inspired, consider [contributing][9] to (or flying with) [PatternFly][10], Red Hat's open design system. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/get-started-open-source + +作者:[Katie Edwards][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/kaedward +[b]: https://github.com/lkxed +[1]: https://opensource.com/resources/what-open-source +[2]: https://opensource.com/resources/what-is-git +[3]: https://opensource.org/osd +[4]: https://opensource.com/life/16/1/8-ways-contribute-open-source-without-writing-code +[5]: https://opensource.com/article/18/4/get-started-open-source-project +[6]: https://opensource.com/article/22/8/non-code-contribution-powers-open-source +[7]: https://up-for-grabs.net/?ref=hackernoon.com#/ +[8]: https://github.com/MunGell/awesome-for-beginners +[9]: https://github.com/patternfly +[10]: https://www.patternfly.org/v4/get-started/design diff --git a/sources/talk/20221108.1 ⭐️⭐️ What stickers are on your laptop.md b/sources/talk/20221108.1 ⭐️⭐️ What stickers are on your laptop.md new file mode 100644 index 0000000000..757bb09bfc --- /dev/null +++ b/sources/talk/20221108.1 ⭐️⭐️ What stickers are on your laptop.md @@ -0,0 +1,272 @@ +[#]: subject: "What stickers are on your laptop?" +[#]: via: "https://opensource.com/article/22/11/laptop-stickers" +[#]: author: "AmyJune Hineline https://opensource.com/users/amyjune" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +What stickers are on your laptop? +====== + +Your laptop is a blank canvas ready to be decorated with self-expression. What are your favorite stickers? Take our poll and then read what other open source enthusiasts had to say. + +Having just switched work laptops last December, I realized how much I love applying stickers to my work machines. Sometimes the stickers are souvenirs from past events, others are from projects that I am passionate about, and some are just for fun! + +Curious to know what others had on their laptops, I asked! + +### Accessibility advocate + +![AMyJune's laptop with lots of Drupal stickers][1] + +Here is my work laptop (Can you tell my roots are in Drupal). My favorite decal is the Druplicon with the wheelchair... When [Drupal 8 came out, we took the logo][2] and blended it with the wheelchair because the agency I worked with focused on accessibility. + +—[AmyJune Hineline][3] + +### Fresh Java + +![Alan Formy-Duval's laptop with various linux decals][4] + +I have always had stickers on my computers and stuff since I was a kid. I think my favorite is either Tux or the Linux Inside. They are mostly field-relevant except for just a few.  In the bottom-right corner, I have Java running on Tomcat (haha) - an area I spent much of my career doing. + +—[Alan Formy-Duval][5] + +### Utilitarian purpose + +![Rikard Grossman-Nielsen's laptop with two velcro strips glued on][6] + +Well, I don't have any stickers. However, I've glued Velcro bands on my two laptops to secure my external hard drive for when I'm gaming on the bus. I have also glued a lock notch on. + +—[Rikard Grossman-Nielsen][7] + +### Maintain the look + +![John 'Warthog9' Hawley's laptop with a mix of decals][8] + +Not the most decorated laptop by far, but I like the collection (and you know, hard to get more without travel for a while!) + +My favorite is the "last one to commit is the maintainer". It's a snarky comment on the state of maintainership, as well as a promise that the code will live on as a result. + +Mostly it boils down to things I use or contribute to, think are meaningful, or just found the sticker awesome. + +—[John 'Warthog9' Hawley][9] + +### Window covering + +I never put stickers on my laptop because it seems to me the only really cool stickers are the ones I don't have (said the grumpy old man.) +But the old homebrew computer my kids used to use in high school, a 3GHz Core Duo with 8 GB of memory, has an Open Mainframe sticker on it that I grabbed at the Linux Foundation Open Source Summit here in Vancouver a few years ago. I quite like that one. +And because in my life, the **Control** key lives next to the **A**, not down on the bottom row, I have a few keyboards around with a **CTRL** sticker on the CapsLock key and a **CAPS** sticker on the **Control** key, which work together with the [swap Ctrl and CapsLock option in GNOME Tweak Tool][10]. +Finally, I used to peel off Windows stickers, back when my only option was buying computers and paying the Windows tax, and put Linux sticker over the gummy patch. Same with keyboards that had the Windows logo on the Super key. + +—[Chris Hermansen][11] + +### Mementos + +![StrangeMama's laptop with a Kanopi sticker and various other decals][12] + +The Kanopi sticker is by far my favorite sticker. Not only is it shiny and iridescent, but it's a constant reminder of how amazing this company is to work for. They seriously put their employees first, and they're super mindful in selecting client projects that align with Kanopi's overall company mission and vision. +The Curt V8 sticker is in remembrance of a dear friend. He loved Fords and my husband loves Chevys. The constant fun rivalry resulted in randomly placed Ford and Chevy objects snuck into garages depending on whose house we were at. I smile every time I see this Ford emulated sticker on my laptop, since I live in a Chevy family. +The variety of stickers represents the family adventures that we have been on throughout the years. Date nights, friends, family road trips, scary hiking adventures (Angels Landing), and my youngest's drive to get a police sticker from every city and state. + +—[Kristine Strange][13] + +### Conference swag + +![Cindy William's laptop with various decals including a Kanopi sticker and Glimore Girls decals][14] + +The dragon is [my college mascot][15]. I also have some Gilmore Girls and coffee stickers. + +Here’s a photo of my daughter’s door, filled with stickers I’ve brought back from conferences over the years. + +![Cindy William's daughter's door covering tale to stern with decals from various WordPress and Drupal Camps][16] + +—[Cindy Williams][17] + +### Sticking with chicken + +This is my not-work laptop. My work laptop is basically being covered in a honeycomb of hex-shaped stickers of our products, open source projects I use and support, and at least one Opensource.com hexagon. :) + +I can’t pick a favorite, since they are all favorites, or I wouldn’t have them on the laptop that goes with me everywhere. I am overly fond of the chickens, the Raven, and Sergi the Cat with his knives. + +![Kevin Sonney's laptop with various decals][18] + +![Kevin Sonney's laptop with various decals][19] + +—[Kevin Sonney][20] + +### Foodie fun + +I used to load up my laptops with stickers. The one I bought last year filled up fast: + +![DJ Billings' laptop with various decals including a muffin][21] + +My favorite is the cupcake & donut one because I illustrated it. +I just bought a [System76][22] Darter Pro laptop and I love it. I got a bunch of really cool stickers with it, but I've been hesitant to put them on the laptop. I don't know why. + +—[DJ Billings][23] + +### Keeping it clean + +![Don Watkins' laptop with opensource.com and Red Hat stickers][24] + +I don’t put a lot of stickers on my laptops but I’ve got my two favorites on my current laptop, which is System76 Darter Pro. + +—[Don Watkins][25] + +### Life's essentials + +![Katie Sanders' laptop and Yeto mug with decals][26] + +I included my water bottle, too. I think I like those stickers even more. +Beer, dogs, music, croissants. What else could I need in life? + +—[Katie Sanders][27] + +### My mantra + +![Faye Polson's laptop with "yeet or be yeeted" decal][28] + +My favorite sticker is **yeet or be yeeted**. + +—[Faye Polson][29] + +### Garlic + +![Tiffany Bridge's laptop with movie, WordPress, and garlic decals][30] + +Most of the stickers are professional, but the **Greetings from Hamunaptra, City of the Dead** sticker is a subtle reference to one of my favorite movies, **The Mummy** (1999) starring Brendan Fraser and Rachel Weisz. + +The flags and the **Blackbeard’s Bar & Grill** stickers are references to **Our Flag Means Death**, which I am completely obsessed with. +And the garlic is the Cosmic Garlic sticker of my friend's shop. Garlic is a folk remedy for all kinds of diseases, so it seemed like a good thing to put on a laptop during a pandemic. + +—[Tiffany Bridge][31] + +### Open source projects + +![Seth Kenlon's laptop with various linux and open source decals][32] + +I usually cover my laptop with projects I use, contribute to, or admire. Statistically, my laptop should be layered with a lot more stickers by now. I haven't been to a tech conference in three years, so the pace has been slower than usual. + +—[Seth Kenlon][33] + +### Decked out in Drupal + +![April's laptop features several Drupal stickers.][34] + +I add stickers that represent me in tech. So I include organizations I'm a part of, events I've attended, and projects I support. +It's always fun to see the Drupal bear on people’s laptops since I designed it. +Notice all of my stickers are on a laptop cover for preservability. + +—[April Sides][35] + +### Wild about WordPress + +![Michelle Frechette's laptop with misc WordPress and Wapuu decals][36] + +My favorite is hard to pick, but probably the **Michelle wapuu**! She’s so me! + +The stickers **I press all the words** and **WordPress is my super power** are from WordCamp Rochester, so those are near and dear to me. + +Basically, I’ll add a sticker if I have a history with it (I spoke at the camp, for example), or I just like it! + +—[Michelle Frechette][37] + +### An eye for art + +![Dagger McJagger's Laptop with misc Drupal and open source decals][38] + +I heavily lean towards art stickers. Seeing art on my computer reminds me of the people I know and experiences I’ve had while using this computer. + +My favorite is the sad-face Midsommar sticker that my partner gave me. After seeing the movie for the first time, we stood outside the theater discussing it for hours into the night. We still reference it to this day. + +—[Jonathan Daggerhart][39] + +### Custom skin + +![Sallie Goetsch's laptop with a custom goddess Ereshkigal skin][40] + +I got a new travel laptop in 2019, and it remains pristine because I have not been to any events since then. My work laptop has a custom skin of the goddess Ereshkigal, after whom I named the computer. + +—Sallie Goetsch + +### GNU Emacs + +![Sachin Patil's laptop with only one sticker][41] + +A GNU Emacs sticker. + +—[Sachin Patil][42] + +### Opensource.com + +After seeing everyone's responses, and maybe getting some cool stickers in the mail from a very brilliant community manager... + +OK, OK, I give! AmyJune, Don, and Sachin convinced me to put ONE sticker on my laptop. + +Here's a photo showing my laptop with its singular sticker: + +![Chris Hermansen's laptop with an opensource.com sticker on it][43] + +—Chris Hermansen + +### Stickers and open source + +You don't have to adorn your computer with stickers. It's not required, and it certainly doesn't mean you love open source more or less than anybody else. But if you love an open source project, there's a good chance that it's got a sticker you can use to decorate your computer (or your door, water bottle, or USB microphone). Rest assured that if you love open source and you love stickers, there's a strong intersection between the two! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/laptop-stickers + +作者:[AmyJune Hineline][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/amyjune +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/2022-11/amyjune-laptop.webp +[2]: https://www.drupal.org/files/cta/graphic/drupal%208%20logo%20isolated%20CMYK%2072_1.png +[3]: https://opensource.com/users/amyjune +[4]: https://opensource.com/sites/default/files/2022-10/Alan%20F..webp +[5]: https://opensource.com/users/alanfdoss +[6]: https://opensource.com/sites/default/files/2022-10/%20Rikard%20Grossman-Nielsen-1.webp +[7]: https://opensource.com/users/rikardgn +[8]: https://opensource.com/sites/default/files/2022-10/%20John%20%27Warthog9%27%20Hawley%20.webp +[9]: https://opensource.com/users/warthog9 +[10]: https://opensource.com/article/18/11/how-swap-ctrl-and-caps-lock-your-keyboard +[11]: https://opensource.com/users/clhermansen +[12]: https://opensource.com/sites/default/files/2022-10/kristine.webp +[13]: https://opensource.com/users/strangemama +[14]: https://opensource.com/sites/default/files/2022-10/cindy%20williams.webp +[15]: https://www.uab.edu +[16]: https://opensource.com/sites/default/files/2022-10/cindy%20duaghter%20door.webp +[17]: https://opensource.com/users/cindytwilliams +[18]: https://opensource.com/sites/default/files/2022-10/%20Kevin%20Sonney%20.webp +[19]: https://opensource.com/sites/default/files/2022-10/%20Kevin%20Sonney%202.webp +[20]: https://opensource.com/users/ksonney +[21]: https://opensource.com/sites/default/files/2022-10/DJ_laptop-stickers.webp +[22]: https://opensource.com/article/19/5/system76-secret-sauce +[23]: https://opensource.com/users/itsjustdj +[24]: https://opensource.com/sites/default/files/2022-10/don%20watkins.webp +[25]: https://opensource.com/users/don-watkins +[26]: https://opensource.com/sites/default/files/2022-10/Katie%20Sanders.webp +[27]: https://enterprisersproject.com/user/katie-sanders +[28]: https://opensource.com/sites/default/files/2022-10/faye3.webp +[29]: https://twitter.com/faye_polson +[30]: https://opensource.com/sites/default/files/2022-10/tiffany_0.webp +[31]: https://tiff.is/ +[32]: https://opensource.com/sites/default/files/2022-10/seth-laptop.webp +[33]: https://opensource.com/users/seth +[34]: https://opensource.com/sites/default/files/2022-11/april.webp +[35]: https://opensource.com/users/weekbeforenext +[36]: https://opensource.com/sites/default/files/2022-10/Michelle%20Fre.webp +[37]: https://meetmichelle.online +[38]: https://opensource.com/sites/default/files/2022-10/Dagger%20McJagger.webp +[39]: https://opensource.com/users/daggerhart +[40]: https://opensource.com/sites/default/files/2022-10/Ereshkigal%20laptop%20skin.webp +[41]: https://opensource.com/sites/default/files/2022-10/psachin.webp +[42]: https://opensource.com/users/psachin +[43]: https://opensource.com/sites/default/files/2022-10/%20chris%20hermansen%20.webp diff --git a/sources/talk/20221110.6 ⭐️⭐️ 4 key differences between Twitter and Mastodon.md b/sources/talk/20221110.6 ⭐️⭐️ 4 key differences between Twitter and Mastodon.md new file mode 100644 index 0000000000..47d1016c92 --- /dev/null +++ b/sources/talk/20221110.6 ⭐️⭐️ 4 key differences between Twitter and Mastodon.md @@ -0,0 +1,81 @@ +[#]: subject: "4 key differences between Twitter and Mastodon" +[#]: via: "https://opensource.com/article/22/11/twitter-vs-mastodon" +[#]: author: "Don Watkins https://opensource.com/users/don-watkins" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +4 key differences between Twitter and Mastodon +====== + +Mastodon is not a corporation. All of its instances are staffed and supported by each server's contributors. Here are a few other advantages. + +Social media is not always sociable, and sometimes we need a sufficient impetus to change what we do and what we read. I began using Twitter as a replacement for my RSS reader in 2008, which revolutionized how I read and learned up to that point. Tweets from educators and free and open source (FOSS) advocates worldwide kept me informed and engaged in a learning network that was without equal. That's changed over the past half dozen years, and recently a change in ownership and the shaping of what I read was driven more by an algorithm than by my personal interests and choices. During a yearly meetup of correspondents and editors of Opensource.com a few years ago, [Seth Kenlon][1] suggested giving [Mastodon][2] a try. I joined [Fosstodon][3] in 2019. Fosstodon is a Mastodon instance for a community of like-minded people who enjoy free and open source software. + +### Mastodon vs Twitter + +Change is not easy. Being a creature of habit, I stayed with my old standby even though it was becoming increasingly tiresome. The threat of its sale in the spring of 2022 invited me to reconsider Fosstodon. + +### 1. Favorite instead of like + +The Mastodon interface is similar to Twitter. Rather than "liking" a post, you "favorite" a post on Mastodon by clicking the star icon under the post content. + +![Favorite button][4] + +### 2. Share a post + +Re-sharing on my old network is a "retweet," but on Mastodon, it's a "boost." You click the double-arrow icon under the post content to boost a post. + +![Boost button][5] + +### 3. Mastodon instances + +Because anyone can run a Mastodon instance, different instances not only have unique communities (like the ones that form around specific hashtags on Twitter, but Mastodon also has hashtags). Some have a unique set of rules. For instance, unlike my former social network, there were content moderation rules on Fosstodon that seemed strict initially. I made a post unrelated to FOSS software, and my post was removed. I was told it had been removed because I'd not issued a "content warning." That irked me, so I looked for another instance and found a couple more to my liking. One was [Mastodon.social][6], and the other [Scholar.social][7]. The former is a general server with no expectation about what you will post. The latter was an instance dedicated to academics. In all cases, there are well-enforced codes of conduct. + +Each instance has rules, and while they differ slightly in the description, they clearly spell out what is and is not acceptable behavior. Fosstodon published its [code of conduct][8], which established the rules and expectations of behavior on the site. + +### 4. Open source social networking + +If you want to run your own Mastodon instance or help develop one, you'll be happy to know that Mastodon is open source. It uses an AGPLv3 license, and its source code is available as a [Git repository][9]. The software provides a social network server that uses the [ActivityPub][10] protocol to communicate with other servers worldwide. + +Mastodon is not a single site on the internet but a series of sites spanning the globe and communicating with each other. This federated network is referred to as the "fediverse." Unlike other social networks, where there's a single owner of the network, Mastodon and other ActivityPub sites are owned by anyone who runs a server. + +From a user's perspective, this doesn't matter at first. You can sign up on any Mastodon instance and then connect to all other instances. + +There is power to this distributed design, though. If you encounter an instance with a community producing content you'd rather not see, you can block either a single user from that instance or the whole instance. + +In the past month, I've returned to Fosstodon primarily because open source is my passion. I enjoy sharing open source content on Fosstodon because the other users of Fosstodon are generally receptive to posts about free and open source software. When I have something to share that's not considered appropriate on Fosstodon, I share it on Scholar.social or Mastodon.social. + +Not all instances have topics they focus on, and even those that do often use their topical interests as a guideline rather than grounds for strict removal of posts. If you have a particular interest, you might be able to find a community built around that topic, and you're likely to see that you have an instant audience. Of course, you'll still always be able to communicate with users of other instances, too. + +### Try Mastodon + +Mastodon is not a corporation. All of its instances are staffed and supported by each server's contributors. Some instances make it easy to support them with Patreon or PayPal. + +I have found the fediverse a welcoming place that brings joy back into social networking. Have you joined Mastodon? What are your takeaways? Let us know in the comments. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/twitter-vs-mastodon + +作者:[Don Watkins][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/don-watkins +[b]: https://github.com/lkxed +[1]: https://opensource.com/users/seth +[2]: https://joinmastodon.org/ +[3]: https://fosstodon.org/about/ +[4]: https://opensource.com/sites/default/files/2022-11/favorite-button.webp +[5]: https://opensource.com/sites/default/files/2022-11/boost-button.webp +[6]: https://mastodon.social/about +[7]: https://scholar.social/about/more +[8]: https://hub.fosstodon.org/coc/ +[9]: https://github.com/mastodon/mastodon +[10]: https://en.wikipedia.org/wiki/ActivityPub diff --git a/sources/talk/20221206.2 ⭐️⭐️ 'Don't be Afraid to Contribute' Mirko Brombin Talks about Vanilla OS and Other Future Projects.md b/sources/talk/20221206.2 ⭐️⭐️ 'Don't be Afraid to Contribute' Mirko Brombin Talks about Vanilla OS and Other Future Projects.md new file mode 100644 index 0000000000..afe4c238a8 --- /dev/null +++ b/sources/talk/20221206.2 ⭐️⭐️ 'Don't be Afraid to Contribute' Mirko Brombin Talks about Vanilla OS and Other Future Projects.md @@ -0,0 +1,155 @@ +[#]: subject: "'Don't be Afraid to Contribute': Mirko Brombin Talks about Vanilla OS and Other Future Projects" +[#]: via: "https://news.itsfoss.com/interview-mirko-brombin/" +[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +'Don't be Afraid to Contribute': Mirko Brombin Talks about Vanilla OS and Other Future Projects +====== + +A conversation with Mirko Brombin, founder of Vanilla OS and Bottles creator. + +!['Don't be Afraid to Contribute': Mirko Brombin Talks about Vanilla OS and Other Future Projects][1] + +There are many interesting personalities in the Linux and open-source world. + +We aim to interact with them and share their stories/thoughts with you. While we did a few interviews in 2021, we are resuming the mission to share insightful conversations with amazing folks in our open-source and Linux universe. + +[Mirko Brombin][2] is one such cool guy 😎 He works as a UX designer full-time, and despite doing all that, he is involved with open-source projects that we admire! + +If you did not know, he is the creator of **[Bottles][3]** (an app to run Windows apps/games on Linux) and **[Vanilla OS][4]**'s founder. + +So, I asked a couple of questions to provide details about his **projects**, his **work/life**, and some **valuable tips** for our readers who want to join the open-source community. + +**Q.** _**Many people think that we have more than enough distros. Why Vanilla OS?**_ + +![vanilla os][5] + +**A:** It is because this one is 10x faster and safer than all the others! Just kidding. **Vanilla OS was born mainly out of a need of mine and a desire to experiment**. I have been a Linux user for many years and have tried many distributions. They always suffered from the lack of certain features and concepts that led me to compulsively distro-hop. In recent years I have been a happy user of Silverblue, a distribution that made me explore the benefits of immutable systems. + +Silverblue is a fantastic project. It's one of the most solid distributions I have tried. However, it does not fully meet my needs. Maintaining Bottles often requires me to play games for testing purposes, and having an NVIDIA GPU, I have had quite a few problems with Silverblue, from driver installation to constant driver breakage and a distinctly noticeable drop in performance. Let's be clear, **NVIDIA is a problem in every distribution** but there is much that can be done to improve the quality of life for users using these GPUs, such as guiding driver installation, pre-configuring the setup for Optimus (Integrated+Dedicated) laptops, and allowing PRIME profile switching in an easy way. To date, only Ubuntu and derivatives have been pre-configured for this workflow. + +![nvidia illustration][6] + +My problem with Ubuntu-based distributions is that they do not offer an experience compatible with my needs either. **I am a devoted GNOME user**, I fully endorse the user experience envisioned by GNOME, and I am completely addicted to it. + +I understand the need for **Ubuntu, Pop!_OS,** and others to provide their own vision and branding, but these modifications are deal breakers for me and probably for many users. GNOME designers and developers are professionals that have been working in this industry for countless years, perfecting their vision, but many distributions change the workflow in ways that I cannot use my systems effectively. + +**Another problem with Ubuntu is that it does not offer immutability and atomicity of transactions**, two mechanisms that make the system solid and safe from easy breakage, for example, when an update goes wrong. + +![solving ubuntu problems][7] + +Adding up all those shortcomings and my passion for throwing myself into increasingly complex projects, I decided to create **Vanilla OS, an Ubuntu-based distribution, with a stock GNOME desktop** and all the merits of immutability and atomicity. + +**Q.****_Some of your projects, like Bottles and the upcoming Vanilla OS, are immensely popular. Do you have other project ideas for the future?_****A:** I have a long list of projects that I would like to accomplish in the future, but my next goal is to develop and contribute to a project idealized by @[TheEvilSkeleton][8]: a **utility to configure MangoHud, an overlay that displays useful information about game FPS, temperatures, CPU/GPU load and more**. + +With this new project, we plan to integrate it in Bottles and provide a graphical interface to customize MangoHud parameters. Similarly, we did the same thing for vkBasalt with vkbasalt-cli. + +**_Q. There will always be a new distro, even if some of us would rather not see more. When I tried out Vanilla OS, it did not feel like “just another distro” but with a unique angle to it._****_So, what’s your near future plan with Vanilla OS?_****A:** My future plan for Vanilla OS is **to make the project sustainable so that I can work on it full-time**. This is more of a dream in my drawer but, who knows. + +I have many ideas that I'll share on social media eventually. Something I can tell you now is that one of my dreams is to see Vanilla OS on multiple platforms like desktops, mobile, and tablets. I want to create an environment with an Apple-like continuity, without the scamming, as the **user experience is always the main focus for me.** + +Q. _**Bottles is a fantastic tool to help users run Windows software on Linux in a few clicks. Various other tools like Heroic Games Launcher have been trying to make things easy for Windows users to play their favorite games on Linux easily.**__**How do you think that’s going? Do you have any stats to share about that through Bottles?**_**A:** Heroic is a project that I admire and follow closely. I am friends with [Flavio][9] (the founder) and [Linguin][10] (one of the developers), and I know how hard the whole team is working to make the gaming experience on Linux more and more fulfilling, so **a Hooray! for Heroic**. + +![Heroic Games launcher][11] + +**Bottles** is like a son to me, I have raised him at my best, and he is giving me a lot of satisfaction. Recently I had to decrease my presence in the project to focus on others and my daily job. This has been possible thanks to a team of contributors who have joined over time, people who share the same vision of the project as I do and cherish its ideals. + +![bottles screenshot][12] + +The structure of the project is changing radically. Initially, I was the one making every decision, whereas now everything is discussed and put to a vote, trying to get a shared verdict. In this, it is like watching a son grow up and make his own decisions, aware of what I have taught him over time. + +**Release 2022.11.14**, is the first release entirely developed by the Bottles team. One of the best releases ever in my opinion. For this, I have to give special thanks to @**TheEvilSkeleton,** who led the release, and [noëlle][13], who made the graphics part. + +A small milestone I would like to share with you is the **achievement of 400,000+ downloads from Flathub.** 🎉 + +![Bottle download stats][14] + +_**Q. If someone gets interested in contributing to any one of your projects. What advice would you give them? What programming language should they focus on if they want to collaborate with you?**_**A:** My advice is not to be afraid to contribute and ask questions, even if it's a "bad" question. Even if you are afraid. There is no such thing as a bad contribution. A well-written ticket is already a great way to do your part. Personally, I don't give weight to contributions, I give credit to those who have spent much more time certainly, but for me, every single contribution is a small brick that helps the project grow. + +**I mostly use Python and Go** for my projects but I would not make it a requirement. If a user wants to help with Vanilla OS, for example by making an application we need, well, they can use whatever language they like. + +![python programming][15] + +The only thing I would ask is to carefully consider the language and choose the one best suited for the type of project you need to create, as the choice will affect who can contribute (or not), for example, I would never choose Rust for a small tool, as Rust is not an easy language for newcomers and new contributors typically contribute to smaller projects that are written in user-friendly languages. + +_**Q. Other than your creations, what other project or distro would you mention as one of your favorites?**_**A:** I have many projects that I would like to mention here, but it would become a season of Vikings. Among all of them, the one that, in my opinion, deserves mention is **Distrobox, a project made by** [Luca di Maio][16]**, a friend of mine as well as an active member in the making of the Vanilla OS project.** + +Distrobox is a tool that installs Linux distributions inside managed containers integrated with the system, allowing, for example, to install and run software in a Fedora container while running Ubuntu, integrating it seamlessly with the host system. + +Distrobox is also employed by Apx, the Vanilla OS package manager. Every package installed through Apx resides in the Distrobox container, keeping the system safe from any discrepancies or breaks from a possible update gone wrong. + +_**Q. How do you keep up with all the projects you’re working on? What’s your mantra on productivity or time management?**_**A:** Contrary to what you may think, I don't work much on my projects, my daily job takes a lot of my time, and I have many other passions to cultivate. + +![productivity][17] + +I don't have any particular time management or organization; normally I try to stay focused on my projects by reasoning about them in my spare time and taking notes, so as soon as I get back to work on a project, I already have a clear idea of what I need to do. + +_**Q. You are also a GNOME Foundation member. What’s it like being a GNOME foundation member? Can anyone apply to be a part of it?**_**A:** I am still a very recent member and I don't have much to say, except that it is wonderful to be inside the project that I absolutely love and respect the most, as it has changed the way I use my PC, with a workflow designed to be free of distractions and where everything is intuitive and immediate; in short, where the user experience is always first. + +Anyone can apply, as long as they are an active person with demonstrable contributions. + +**_Q. As a GNOME foundation member, what do you think GNOME should improve compared to the KDE Plasma side?_****A:** I don't want to sound brash but I think **GNOME is currently complete as it is**. I've seen it grow since the beginning and I know how many steps have been taken since GNOME 2 and 3, I'm sure many more are to come but **right now I can't find a lack in comparison to KDE**. + +![gnome user][18] + +I know at this point someone is saying "_Eh but KDE has themes and a setting for this and that._" and I agree, it is a fact that KDE is the most customizable desktop environment of all, but you have to understand that GNOME doesn't implement all these settings because the whole thing is designed to provide a single, but efficient, user experience. Providing a setting to change every single aspect of it is more of an invitation for the user to do so, feeding bug reports for a different experience than designed. + +It is important to understand that more customization inevitably leads to more discrepancies and bugs, as all components of the system are meant to work in a certain way, and altering them takes you out of the testing environment that is used in GNOME. + +**_Q. What do you like to do in your spare time?_** + +![world history and podcast][19] + +**A:** In my free time, I love to **write recipes** or listen to the **world's history podcasts**. + +10-yo Mirko would find me boring, haha 😁 + +_**Q. A message to our readers (to inspire them/add a tip that you always wanted to share, etc)**_ + +![dialogue is good][20] + +**A:** Don't be afraid to contribute or speak. I often find that someone has a great idea to solve a problem and has never told anyone because of the fear that it was wrong. Let's be clear that a contribution is something to improve and is therefore always welcome. + +Certainly, not all ideas are feasible or correct but dialogue is a great way to find out. + +Don't be shy; come on! + +> 💭 Share your thoughts on the interview and if you want us to talk to your favorite open-source/Linux creator, feel free to mention them in the comments. + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/interview-mirko-brombin/ + +作者:[Ankush Das][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/ankush/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/interview-with-mirko-brombin.png +[2]: https://mirko.pm +[3]: https://usebottles.com +[4]: https://vanillaos.org +[5]: https://news.itsfoss.com/content/images/2022/12/vanillaos.jpg +[6]: https://news.itsfoss.com/content/images/2022/12/nvidia.png +[7]: https://news.itsfoss.com/content/images/2022/12/ubuntu.png +[8]: https://github.com/TheEvilSkeleton +[9]: https://github.com/flavioislima +[10]: https://github.com/imLinguin +[11]: https://news.itsfoss.com/content/images/2022/12/Heroic_2.jpg +[12]: https://news.itsfoss.com/content/images/2022/12/bottle-creation-dark.png +[13]: https://github.com/jannuary +[14]: https://news.itsfoss.com/content/images/2022/12/download-milestone.png +[15]: https://news.itsfoss.com/content/images/2022/12/python.png +[16]: https://github.com/89luca89 +[17]: https://news.itsfoss.com/content/images/2022/12/productivity.png +[18]: https://news.itsfoss.com/content/images/2022/12/gnome-1.png +[19]: https://news.itsfoss.com/content/images/2022/12/history-1.png +[20]: https://news.itsfoss.com/content/images/2022/12/dialogue.png diff --git a/sources/tech/20210103 How open principles will impact the future of work.md b/sources/tech/20210103 How open principles will impact the future of work.md deleted file mode 100644 index 9217b08384..0000000000 --- a/sources/tech/20210103 How open principles will impact the future of work.md +++ /dev/null @@ -1,93 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How open principles will impact the future of work) -[#]: via: (https://opensource.com/open-organization/21/1/open-is-future-of-work) -[#]: author: (Ron McFarland https://opensource.com/users/ron-mcfarland) - -How open principles will impact the future of work -====== -In many ways, the nature of our work defines us. So how do we prepare -for a future when the nature of work will change dramatically? -![Working on a team, busy worklife][1] - -If we define "work" as any contribution that receives any kind of reward, then work is—and always has been—one of the major factors that define who we are. It is a major aspect of our lives. Throughout our work (whatever that may be for us), we meet friends, identify sources of intellectual stimulation and emotional fulfillment, grow, and feel at our most creative and innovative. To our families, friends, communities and societies, work is extremely important. We should not take work—or its role in our lives—lightly or for granted. - -So if the [nature of work is going to change][2] in the future, it might mean that something key to our very sense of _self_ is going to change. And we should plan for those changes very seriously. - -Consider the transformation of work throughout the Industrial Revolution (between the 1700s and 1800s). It drove many people from rural farm work into factories in the cities, fundamentally altering their lifestyles. It required new, more specialized skills (rather than the kind of artisanship common in rural economies). As we examine our own personal work environments in the decades to come, we'll see a potential reversal of the trends we saw during the Industrial era: from hierarchy and interchangeable general skills and activities to the reinstatement of horizontal collaboration and more specialized mastery (back to artisanship). - -This time, though, these changes come on a global scale rather than a local one, and the speed of change is far more accelerated. - -And in this new work environment, [open organization principles][3] will play a vital role. - -In this series, I'll review [_The Shift_, a book by Professor Lynda Gratton][4]—a book that, while written in 2014 from data assembled in 2010, still rings true today (and will in the future, too). In this book, Gratton projects how work will change around 2025 and 2050. This is vital information, as it will help us make sound choices when preparing for and developing our careers moving forward. - -Gratton explains predominant forces influencing the future of work in this timeframe. In this article series, I'll summarize them—and explain how open organization principles are involved in each. - -### Five factors influencing the future of work - -Driving the Industrial Revolution were inventions that used coal and steam power. Today, [Gratton][5] says, five subtle forces are causing a similar "shift": - - 1. increased global activities - 2. rapid advances in technology - 3. human longevity and demographics - 4. societal and family structural changes - 5. the need for a low-carbon economy - - - -In short: Computers will become faster. Materials will become stronger. Medicines will cure more diseases allowing longer human life. To varying degrees, these will all impact on how we work in the future. Here are a few notes on each. - -#### 1\. Globalization - -In a previous article, "[Globalization: A history of openness][6]," I discussed multiple forces and factors related to globalization, one of them being trade. Between 1950 and 2010 the volume of global trade has increased by 60 times, while at the same time transportation costs have fallen. And at the same time, developing countries are seeing not only increased trade but new innovations. I also discussed globalization in early history as part of my article "[Open organizations through the ages][7]." And I explored the importance of global governance—both now and into the future—in my article ["What would a global open organization look like?"][8] According to Gratton, globalization will have an undeniable and unavoidable impact on the future work. - -If the nature of work is going to change in the future, it might mean that something key to our very sense of self is going to change. And we should plan for those changes very seriously. - -#### 2\. Technology - -The cost of computing has been coming down at an alarming rate. And it will continue to decrease. This will help connect billions of people that have been mostly left out of the greater global economy until now. They will start to both enter the workforce and become more influential consumers. At the same time, computers and advanced automation [will replace jobs performed by humans][9] in the future. This all will influence work shifts in the future. - -#### 3\. Demographics and longevity - -Gratton also notes the impacts that various generations will have on the future of work, particularly in the United States. Younger generations will play a major role in the future, as their attitudes are different from earlier generations. Moreover, birth rates in various global regions will have an impact on prosperity. There will be more migration, as some regions' populations will decline while others increase. They will move to what Professor Gratton calls "creative clusters." And finally, Gratton argues, the life expectancy globally will change. By 2025, 10% of the world's population will be over the age of 65. These people will more than likely want to continue to work for sustained income, continued mental stimulation, physical activity, connection to others, and a source of meaning and purpose in their lives. Also, consider that many children today will more than likely live longer than 100 years. If they retired at 65 years old, they would have 35 years to do very little. With that thought in mind, having several career changes and being active in volunteer and community service programs in the future will expand greatly. - -#### 4\. Society - -In addition to the generational changes, Gratton notes several important social changes, too. There will be changing roles of women in the workplace, she says. People will have more choices to form the life they want than ever before. And with increased productivity per person, there will be more average free time available than ever before, she writes. - -#### 5\. Energy resources - -I've talked about the expansion of resource-saving industries in a presentation I've given on "[The Resource Industrial Revolution][10]." Gratton adds valuable points to this conversation. Climate change, she notes, will gradually become a major issue, which will reduce transportation and consumption. In particular, global water supply will not be able to keep pace with demand. Water desalination projects will expand greatly (possibly powered by [Generation IV][11] distributed small modular nuclear power plants (SMR's) now being developed). Environmental catastrophes will displace people and migration will create displaced communities throughout the globe. More energy-efficient ways of living will be discovered and introduced. This will influence future jobs. - -### Preparing for the future - -These five forces will prompt fundamental changes to the way we work in the future, Gratton argues. But we need to begin preparing for that future now. In the next article of this series, I'll explain Gratton's outlook and a few scenarios for grappling with a rapidly changing future. How could a person look at those changes as career opportunities? On the other hand, what would happen if a person simply _ignored_ those changes to come? I'll review Gratton's thoughts on those questions. Also, I'll also explain how open principles can form the heart of necessary changes. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/21/1/open-is-future-of-work - -作者:[Ron McFarland][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ron-mcfarland -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/team_dev_email_chat_video_work_wfm_desk_520.png?itok=6YtME4Hj (Working on a team, busy worklife) -[2]: https://opensource.com/open-organization/18/7/transformation-beyond-digital-2 -[3]: https://theopenorganization.org/definition/ -[4]: http://lyndagratton.com/books/the-shift/ -[5]: https://en.wikipedia.org/wiki/Lynda_Gratton -[6]: https://opensource.com/open-organization/20/7/globalization-history-open -[7]: https://opensource.com/open-organization/20/8/global-history-collaboration -[8]: https://opensource.com/open-organization/20/9/global-open-organization -[9]: https://opensource.com/open-organization/19/9/claiming-human-age-of-AI -[10]: https://www.slideshare.net/RonMcFarland1/the-starting-of-the-third-industrial-revolution -[11]: https://en.wikipedia.org/wiki/Generation_IV_reactor diff --git a/sources/tech/20210108 The Definitive Guide to Using and Customizing the Dock in Ubuntu.md b/sources/tech/20210108 The Definitive Guide to Using and Customizing the Dock in Ubuntu.md deleted file mode 100644 index 9689098aec..0000000000 --- a/sources/tech/20210108 The Definitive Guide to Using and Customizing the Dock in Ubuntu.md +++ /dev/null @@ -1,245 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The Definitive Guide to Using and Customizing the Dock in Ubuntu) -[#]: via: (https://itsfoss.com/customize-ubuntu-dock/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -The Definitive Guide to Using and Customizing the Dock in Ubuntu -====== - -When you log into Ubuntu, you’ll see the dock on the left side with some application icons on it. This dock (also known as launcher or sometimes as panel) allows you to quickly launch your frequently used programs. - -![][1] - -I rely heavily on the dock and I am going to share a few tips about using the dock effectively and customize its looks and position. - -You’ll learn the following in this tutorial: - - * Basic usage of the dock: adding more applications and using shortcuts for launching applications. - * Customize the looks of the dock: Change the icon size, icon positions. - * Change the position: for single screen and multi-monitor setup - * Hide mounted disk from the dock - * Auto-hide or disable the dock - * Possibility of additional dock customization with dconf-editor - * Replace dock with other docking applications - - - -I’ll use the terms dock, panel and launcher in the tutorial. All of them refer to the same thing. - -### Using the Ubuntu dock: Absolute basic that you must know - -If you are new to Ubuntu, you should know a few things about using the dock. You’ll eventually discover these dock features, I’ll just speed up the discovery process for you. - -#### Add new applications to the dock (or remove them) - -The steps are simple. Search for the application from the menu and run it. - -The running application appears in the dock, below all other icons. Right click on it and select the “Add to Favorites” option. This will lock the icon to the dock. - -![Right-click on the icon and select “Add to Favorites”][2] - -Removing an app icon from the doc is even easier. You don’t even need to run the application. Simply right click on it and select “Remove From Favorites”. - -![Right-click on the icon and select “Remove from Favorites”][3] - -#### Reorder icon position - -By default, new application icons are added after all the other icons on the launcher. You don’t have to live with it as it is. - -To change the order of the icons, you just need to drag and drop to the other position of your choice. No need to “lock it” or any additional effort. It stays on that location until you make some changes again. - -![Reorder Icons On Ubuntu Docks][4] - -#### Right click to get additional options for some apps - -Left-clicking on an icon launches the application or bring it to focus if the application is already running. - -Right-clicking the icon gives you additional options. Different applications will have different options. - -For browsers, you can open a new private window or preview all the running windows. - -![][5] - -For file manager, you can go to all the bookmarked directories or preview opened windows. - -You can, of course, quit the application. Most applications will quit while some applications like Telegram will be minimized to the system tray. - -#### Use keyboard shortcut to launch applications quickly [Not many people know about this one] - -The dock allows you to launch an application in a single mouse click. But if you are like me, you can save that mouse click with a keyboard shortcut. - -Using the Super/Window key and a number key will launch the application on that position. - -![][6] - -If the application is already running, it is brought to focus, i.e. it appears in front of all the other running application windows. - -Since it is position-based, you should make sure that you don’t reorder the icons all the time. Personally, I keep Firefox at position 1, file manager at 2 and the alternate browser at 3 and so on until number 9. This way, I quickly launch the file manager with Super+2. - -I find it easier specially because I have a three screen setup and moving the mouse to the launcher on the first screen is a bit too much of trouble. You can enable or disable the dock on additional screen. I’ll show that to you later in this tutorial. - -### Change the position of the dock - -By default, the dock is located on the left side of your screen. Some people like the launcher at the bottom, in a more traditional way. - -Ubuntu allows you to change the position of the dock. You can move it to the bottom or to the right side or on the top. I am not sure many people actually put the dock on the top or the right side, so moving the dock to the top is not an option here. - -![Change Launcher Position][7] - -To change the dock position, go to Settings->Appearance. You should see some options under Dock section. You need to change the “Position on screen” settings here. - -![Go to Settings->Appearance->Dock][8] - -#### Position of dock on a multiple monitor setup - -If you have multiple screens attached to your system, you can choose whether to display the dock on all screens or one of chosen screens. - -![Ubuntu Dock Settings Multimonitor][9] - -Personally, I display the dock on my laptop screen only which is my main screen. This gives me maximum space on the additional two screens. - -### Change the appearance of the dock - -Let’s see some more dock customization options in Ubuntu. - -Imagine you added too many applications to the dock or have too many applications open. It will fill up the space and you’ll have to scroll to the top and bottom to go to the applications at end points. - -What you can do here is to change the icon size and the dock will now accommodate more icons. Don’t make it too small, though. - -![][10] - -To do that, go to Settings-> Appearance and change it by moving the slider under Icon size. The default icons size is 48 pixels. - -![Changing Icon Size In Ubuntu Dock][11] - -#### Hide mounted disks from the launcher - -If you plug in a USB disk or SD Card, it is mounted to the system, and an icon appear in the launcher immediately. This is helpful because you can right click on it and select safely remove drive option. - -![Mounted disks are displayed In the Ubuntu Dock][12] - -If you somehow find it troublesome, you can turn this feature off. Don’t worry, you can still access the mounted drives from the file manager. - -Open a terminal and use the following command: - -``` -gsettings set org.gnome.shell.extensions.dash-to-dock show-mounts false -``` - -The changes take into effect immediately. You won’t be bothered with mounted disk being displayed in the launcher. - -If you want the default behavior back, use this command: - -``` -gsettings set org.gnome.shell.extensions.dash-to-dock show-mounts true -``` - -### Change the behavior of dock - -Let’s customize the default behavior of the dock and make it more suitable to your needs. - -#### Enable minimize on click - -If you click on the icon of a running application, its window will be brought to focus. That’s fine. However, if you click on it, nothing happens. By default, clicking on the same icon won’t minimize the application. - -Well, this is the behavior in modern desktop, but I don’t like it. I prefer that the application is minimized when I click on its icon for the second time. - -If you are like me, you may want to [enable click to minimize option in Ubuntu][13]: - -To do that, open a terminal and enter the following command: - -``` -gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize' -``` - -#### Auto-hide Ubuntu dock and get more screen space - -If you want to utilize the maximum screen space, you can enable auto-hide option for the dock in Ubuntu. - -This will hide the dock, and you’ll get the entire screen. The dock is still accessible, though. Move your cursor to the location of the dock where it used to be, and it will appear again. When the dock reappears, it is overlaid on the running application window. And that’s a good thing otherwise too many elements would start moving on the screen. - -The auto-hide option is available in Settings-> Appearance and under Dock section. Just toggle it. - -![Auto-hide the dock][14] - -If you don’t like this behavior, you can enable it again the same way. - -#### Disable Ubuntu dock - -Auto-hide option is good enough for many people, but some users simply don’t like the dock. If you are one of those users, you also have the option to disable the Ubuntu dock entirely. - -Starting with Ubuntu 20.04, you have the Extensions application available at your disposal to [manage GNOME Extensions][15]. - -![Look for Extensions app in the menu][16] - -With this Extensions application, you can easily disable or re-enable the dock. - -![Disable Ubuntu Dock][17] - -### Advanced dock customization with dconf-editor [Not recommended] - -##### Warning - -The dconf-editor allows you to change almost every aspect of the GNOME desktop environment. This is both good and bad because you must be careful in editing. Most of the settings can be changed on the fly, without asking for conformation. While you may reset the changes, you could still put your system in such a state that it would be difficult to put things back in order. - -For this reason, I advise not to play with dconf-editor, specially if you don’t like spending time in troubleshooting and fixing problems or if you are not too familiar with Linux and GNOME. - -The [dconf editor][18] gives you additional options to customize the dock in Ubuntu. Install it from the software center and then navigate to org > gnome > shell > extensions > dash-to-dock. You’ll find plenty of options here. I cannot even list them all here. - -![][19] - -### Replace the dock in Ubuntu - -There are several third-party dock applications available for Ubuntu and other Linux distributions. You can install a dock of your choice and use it. - -For example, you can install Plank dock from the software center and use it in similar fashion to Ubuntu dock. - -![Plank Dock in Ubuntu][20] - -Disabling Ubuntu Dock would be a better idea in this case. It won’t be wise to use multiple docks at the same time. - -### Conclusion - -This tutorial is about customizing the default dock or launcher provided in Ubuntu’s GNOME implementation. Some suggestions should work on the dock in vanilla GNOME as work well. - -I have shown you most of the common Ubuntu dock customization. You don’t need to go and blindly follow all of them. Read and think which one suits your need and then act upon it. - -Was it too trivial or did you learn something new? Would you like to see more such tutorials? I welcome your suggestions and feedback on dock customization. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/customize-ubuntu-dock/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/ubuntu-dock.png?resize=800%2C450&ssl=1 -[2]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/01/add-icons-to-dock.png?resize=800%2C450&ssl=1 -[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/remove-icons-from-dock.png?resize=800%2C450&ssl=1 -[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/reorder-icons-on-ubuntu-docks.gif?resize=800%2C430&ssl=1 -[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/right-click-icons-ubuntu-dock.png?resize=800%2C450&ssl=1 -[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/01/keyboard-shortcut-for-ubuntu-dock.png?resize=800%2C450&ssl=1 -[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/change-launcher-position-ubuntu.png?resize=800%2C450&ssl=1 -[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/01/change-dock-position-ubuntu.png?resize=800%2C450&ssl=1 -[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/ubuntu-dock-settings-multimonitor.png?resize=800%2C450&ssl=1 -[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/01/normal-icon-size-dock.jpg?resize=1024%2C1080&ssl=1 -[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/01/changing-icon-size-in-ubuntu-dock.png?resize=800%2C450&ssl=1 -[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/external-mounted-disks-in-ubuntu-dock.png?resize=800%2C450&ssl=1 -[13]: https://itsfoss.com/click-to-minimize-ubuntu/ -[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/autohide-dock-ubuntu.png?resize=800%2C450&ssl=1 -[15]: https://itsfoss.com/gnome-shell-extensions/ -[16]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/GNOME-extensions-app-ubuntu.jpg?resize=800%2C240&ssl=1 -[17]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/disable-dock-ubuntu.png?resize=800%2C450&ssl=1 -[18]: https://wiki.gnome.org/Apps/DconfEditor -[19]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/dconf-editor-dock.png?resize=592%2C599&ssl=1 -[20]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/plank-dock-Ubuntu.jpg?resize=800%2C382&ssl=1 diff --git a/sources/tech/20210202 Convert audio files with this versatile Linux command.md b/sources/tech/20210202 Convert audio files with this versatile Linux command.md deleted file mode 100644 index 683907b70f..0000000000 --- a/sources/tech/20210202 Convert audio files with this versatile Linux command.md +++ /dev/null @@ -1,240 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Convert audio files with this versatile Linux command) -[#]: via: (https://opensource.com/article/20/2/linux-sox) -[#]: author: (Klaatu https://opensource.com/users/klaatu) - -Convert audio files with this versatile Linux command -====== -SoX Sound Exchange can even add effects to your audio files. -![HiFi vintage stereo][1] - -I work with media, and when you work with any kind of media, you learn pretty quickly that standardization is a valuable tool. Just as you wouldn't try to add a fraction to a decimal without converting one or the other, I've learned that it's not ideal to combine media of differing formats. Most hobbyist-level applications make the conversion process invisible to the user as a convenience. Flexible software aimed at users needing control over the fine details of their assets, however, often leave it up to you to convert your media to your desired format in advance. I have a few favorite tools for conversion, and one of those is the so-called _Swiss army knife of sound_, [SoX][2]. - -### Installing - -On Linux or BSD, you can install the **sox** command (and some helpful symlinks) from your software repository or ports tree. - -You can also install SoX from its home on [Sourceforge.net][3]. It doesn't release often, but its codebase tends to be stable, so if you want the latest features (such as Opus support), it's easy and safe to build. - -SoX provides primarily the **sox** command, but installation also creates a few useful symlinks: **play**, **rec**, and **soxi**. - -### Getting information about files with SoX - -SoX reads and rewrites audio data. Whether it stores the rewritten audio data is up to you. There are use cases in which you don't need to store the converted data, for instance, when you're sending the output directly to your speakers for playback. Before doing any conversion, however, it's usually a good idea to determine exactly what you're dealing with in the first place. - -To gather information about an audio file, use the **soxi** command. This is a symlink to **sox --info**. - - -``` -$ soxi countdown.mp3 -Input File     : '/home/tux/countdown.mp3' -Channels       : 1 -Sample Rate    : 44100 -Precision      : 16-bit -Duration       : 00:00:11.21 = 494185 samples... -File Size      : 179k -Bit Rate       : 128k -Sample Encoding: MPEG audio (layer I, II or III) -``` - -This output gives you a good idea of what codec the audio file is encoded in, the file length, file size, sample rate, and the number of channels. Some of these you might _think_ you already know, but I never trust assumptions when media is brought to me by a client. Verify media attributes with **soxi**. - -### Converting files - -In this example, the audio of a game show countdown has been delivered as an MP3 file. While nearly all editing applications accept compressed audio, none of them actually edit the compressed data. Conversion is happening somewhere, whether it's a secret background task or a prompt for you to save a copy. I generally prefer to do the conversion myself, in advance. This way, I can control what format I'm using. I can do lots of media in batches overnight instead of wasting valuable production time waiting for an editing application to churn through them on demand. - -The **sox** command is meant for converting audio files. There are a few stages in the **sox** pipeline: - - * input - * combine - * effects - * output - - - -In command syntax, the effects step is, confusingly, written _last_. That means the pipeline is composed this way: - - -``` -`input → combine → output → effects` -``` - -### Encoding - -The simplest conversion command involves only an input file and an output file. Here's the command to convert an MP3 file to a lossless FLAC file: - - -``` -$ sox countdown.mp3 output.flac -$ soxi output.flac - -Input File     : 'output.flac' -Channels       : 1 -Sample Rate    : 44100 -Precision      : 16-bit -Duration       : 00:00:11.18 = 493056 samples... -File Size      : 545k -Bit Rate       : 390k -Sample Encoding: 16-bit FLAC -Comment        : 'Comment=Processed by SoX' -``` - -#### Effects - -The effects chain is specified at the end of a command. It can alter audio prior to sending the data to its final destination. For instance, sometimes audio that's too loud can cause problems during conversion: - - -``` -$ sox bad.wav bad.ogg -sox WARN sox: `bad.ogg' output clipped 126 samples; decrease volume? -``` - -Applying a **gain** effect can often solve this problem: - - -``` -`$ sox bad.wav bad.ogg gain -1` -``` - -#### Fade - -Another useful effect is **fade**. This effect lets you define the shape of a fade-in or fade-out, along with how many seconds you want the fade to span. - -Here's an example of a six-second fade-in using an inverted parabola: - - -``` -`$ sox intro.ogg intro.flac fade p 6` -``` - -This applies a three-second fade-in to the head of the audio and a fade-out starting at the eight-second mark (the intro music is only 11 seconds, so the fade-out is also three-seconds in this case): - - -``` -`$ sox intro.ogg intro.flac fade p 3 8` -``` - -The different kinds of fades (sine, linear, inverted parabola, and so on), as well as the options **fade** offers (fade-in, fade-out), are listed in the **sox** man page. - -#### Effect syntax - -Each effect plugin has its own syntax, so refer to the man page for details on how to invoke each one. - -Effects can be daisy-chained in one command, at least to the extent that you want to combine them. In other words, there's no syntax to apply a **flanger** effect only during a six-second fade-out. For something that precise, you need a graphical sound wave editor or a digital audio workstation such as [LMMS][4] or [Rosegarden][5]. However, if you just have effects that you want to apply once, you can list them together in the same command. - -This command applies a -1 **gain** effect, a tempo **stretch** of 1.35, and a **fade-out**: - - -``` -$ sox intro.ogg output.flac gain -1 stretch 1.35 fade p 0 6 -$ soxi output.flac - -Input File     : 'output.flac' -Channels       : 1 -Sample Rate    : 44100 -Precision      : 16-bit -Duration       : 00:00:15.10 = 665808 samples... -File Size      : 712k -Bit Rate       : 377k -Sample Encoding: 16-bit FLAC -Comment        : 'Comment=Processed by SoX' -``` - -### Combining audio - -SoX can also combine audio files, either by concatenating them or by mixing them. - -To join (or _concatenate_) files into one, provide more than one input file in your command: - - -``` -`$ sox countdown.mp3 intro.ogg output.flac` -``` - -In this example, **output.flac** now contains **countdown** audio, followed immediately by **intro** music. - -If you want the two tracks to play over one another at the same time, though, you can use the **\--combine mix** option: - - -``` -`$ sox --combine mix countdown.mp3 intro.ogg output.flac` -``` - -Imagine, however, that the two input files differed in more than just their codecs. It's not uncommon for vocal tracks to be recorded in mono (one channel), but for music to be recorded in at least stereo (two channels). SoX won't default to a solution, so you have to standardize the format of the two files yourself first. - -#### Altering audio files - -Options related to the file name listed _after_ it. For instance, the **\--channels** option in this command applies _only_ to **input.wav** and NOT to **example.ogg** or **output.flac**: - - -``` -`$ sox --channels 2 input.wav example.ogg output.flac` -``` - -This means that the position of an option is very significant in SoX. Should you specify an option at the start of your command, you're essentially only overriding what SoX gleans from the input files on its own. Options placed immediately before the _output_ file, however, determine how SoX writes the audio data. - -To solve the previous problem of incompatible channels, you can first standardize your inputs, and then mix: - - -``` -$ sox countdown.mp3 --channels 2 countdown-stereo.flac gain -1 -$ soxi countdown-stereo.flac - -Input File     : 'countdown-stereo.flac' -Channels       : 2 -Sample Rate    : 44100 -Precision      : 16-bit -Duration       : 00:00:11.18 = 493056 samples... -File Size      : 545k -Bit Rate       : 390k -Sample Encoding: 16-bit FLAC -Comment        : 'Comment=Processed by SoX' - -$ sox --combine mix \ -countdown-stereo.flac \ -intro.ogg \ -output.flac -``` - -SoX absolutely requires multiple commands for complex actions, so it's normal to create several temporary and intermediate files as needed. - -### Multichannel audio - -Not all audio is constrained to one or two channels, of course. If you want to combine several audio channels into one file, you can do that with SoX and the **\--combine merge** option: - - -``` -$ sox --combine merge countdown.mp3 intro.ogg output.flac -$ soxi output.flac - -Input File     : 'output.flac' -Channels       : 3 -[...] -``` - -### Easy audio manipulation - -It might seem strange to work with audio using no visual interface, and for some tasks, SoX definitely isn't the best tool. However, for many tasks, SoX provides an easy and lightweight toolkit. SoX is a simple command with powerful potential. With it, you can convert audio, manipulate channels and waveforms, and even generate your own sounds. This article has only provided a brief overview of its capabilities, so go read its man page or [online documentation][2] and then see what you can create. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/linux-sox - -作者:[Klaatu][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/klaatu -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/hi-fi-stereo-vintage.png?itok=KYY3YQwE (HiFi vintage stereo) -[2]: http://sox.sourceforge.net/sox.html -[3]: http://sox.sourceforge.net -[4]: https://opensource.com/life/16/2/linux-multimedia-studio -[5]: https://opensource.com/article/18/3/make-sweet-music-digital-audio-workstation-rosegarden diff --git a/sources/tech/20210307 How to Install Nvidia Drivers on Linux Mint -Beginner-s Guide.md b/sources/tech/20210307 How to Install Nvidia Drivers on Linux Mint -Beginner-s Guide.md index ee23f126fe..2a9a7650f4 100644 --- a/sources/tech/20210307 How to Install Nvidia Drivers on Linux Mint -Beginner-s Guide.md +++ b/sources/tech/20210307 How to Install Nvidia Drivers on Linux Mint -Beginner-s Guide.md @@ -2,7 +2,7 @@ [#]: via: (https://itsfoss.com/nvidia-linux-mint/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) [#]: collector: (lujun9972) -[#]: translator: (hwlife) +[#]: translator: ( ) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) diff --git a/sources/tech/20210330 A DevOps guide to documentation.md b/sources/tech/20210330 A DevOps guide to documentation.md deleted file mode 100644 index 4f9defbb3b..0000000000 --- a/sources/tech/20210330 A DevOps guide to documentation.md +++ /dev/null @@ -1,93 +0,0 @@ -[#]: subject: (A DevOps guide to documentation) -[#]: via: (https://opensource.com/article/21/3/devops-documentation) -[#]: author: (Will Kelly https://opensource.com/users/willkelly) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -A DevOps guide to documentation -====== -Bring your documentation writing into the DevOps lifecycle. -![Typewriter with hands][1] - -DevOps is challenging technical documentation norms like at no other time in IT history. From automation to increased delivery velocity to dismantling the waterfall software development lifecycle model, these all spell the need for making dramatic changes to business and the philosophy of technical documentation. - -Here are some ways DevOps is influencing technical documentation. - -### The technical writer's changing role - -The technical writer's role must adapt to DevOps. The good news is that many technical writers are already embedded in development teams, and they may have a leg up by already having collaborative relationships and growing knowledge of the product. - -But you have some pivoting to do if your technical writers are used to working in siloes and relying on drafts written by subject matter experts as the basis for documentation. - -Make the investments to ensure your documentation and other project-related content development efforts gain the tools, structure, and support they require. Start by changing your [technical writer hiring practices][2]. Documentation at the [speed of DevOps][3] requires rethinking your content strategy and breaking down longstanding silos between your DevOps team and the technical writer assigned to support the project. - -DevOps also causes development teams to break away from the rigors of traditional documentation practices. Foremost, documentation's [definition of done][4] must change. Some corporate cultures make the technical writer a passive participant in software development. DevOps makes new demands—as the DevOps cultural transformation goes, so does the technical writer's role. Writers will need (and must adjust to) the transparency DevOps offers. They must integrate into DevOps teams. Depending on how an organization casts the role, bringing the technical writer into the team may present skillset challenges. - -### Documentation standards, methodologies, and specifications - -While DevOps has yet to influence technical documentation itself, the open source community has stepped up to help with application programming interface (API) documentation that's finding use among DevOps teams in enterprises of all sizes. - -Open source specifications and tools for documenting APIs are an exciting area to watch. I'd like to think it is due to the influence of [Google Season of Docs][5], which gives open source software projects access to professional technical writing talent to tackle their most critical documentation projects. - -Open source APIs are available and need to become part of the DevOps documentation discussion. The importance of cloud-native application integration requirements is on the rise. The [OpenAPI specification][6]—an open standard for defining and documenting an API—is a good resource for API documentation in DevOps environments. However, a significant criticism is that the specification can make documentation time-consuming to create and keep current. - -There were brief attempts to create a [Continuous Documentation][7] methodology. There was also a movement to create a [DocOps][8] Framework that came out of CA (now Broadcom). Despite its initial promise, DocOps never caught on as an industry movement. - -The current state of DevOps documentation standards means your DevOps teams (including your technical writer) need to begin creating documentation at the earliest stages of a project. You do this by adding documentation as both an agile story and (just as important) as a management expectation; you enforce it by tying it to annual performance reviews. - -### Documentation tools - -DevOps documentation authoring should occur online in a format or a platform accessible to all team members. MediaWiki, DokuWiki, TikiWiki, and other [open source wikis][9] offer DevOps teams a central repository for authoring and maintaining documentation. - -Let teams choose their wiki just as you let them choose their other continuous integration/continuous development (CI/CD) toolchains. Part of the power of open source wikis is their extensibility. For example, DokuWiki includes a range of extensions you can install to create an authoring platform that meets your DevOps team's authoring requirements. - -If you're ambitious enough to bolster your team's authoring and collaboration capabilities, [Nextcloud][10] (an open source cloud collaboration suite) is an option for putting your DevOps teams online and giving them the tools they need to author documentation. - -### DevOps best practices - -Documentation also plays a role in DevOps transformation. You're going to want to document the best practices that help your organization realize efficiency and process gains from DevOps. This information is too important to communicate only by word of mouth across your DevOps teams. Documentation is a unifying force if your organization has multiple DevOps teams; it promotes standardization of best practices and sets you up to capture and benchmark metrics for code quality. - -Often it's developers who shoulder the work of documenting DevOps practices. Even if their organizations have technical writers, they might work across development teams. Thus, it's important that developers and sysadmins can capture, document, and communicate their best practices. Here are some tips to get that effort going in the right direction: - - * Invest the time upfront to create a standard template for your DevOps best practices. Don't fall into the trap of copying a template you find online. Interview your stakeholders and teams to create a template that meets your team's needs. - * Look for ways to be creative with information gathering, such as recording your team meetings and using chat system logs to serve as a foundation for your documentation. - * Establish a wiki for publishing your best practices. Use a wiki that lets you maintain an audit trail of edits and updates. Such a platform sets your teams up to update and maintain best practices as they change. - - - -It's smart to document dependencies as you build out your CI/CD toolchains. Such an effort pays off when you onboard new team members. It's also a little bit of insurance when a team member forgets something. - -Finally, automation is enticing to DevOps stakeholders and practitioners alike. It's all fun and games until automation breaks. Having documentation for automation run books, admin guides, and other things in place (and up to date) means your staff can get automation working again regardless of when it breaks down. - -### Final thoughts - -DevOps is a net positive for technical documentation. It pulls content development into the DevOps lifecycle and breaks down the siloes between developers and technical writers within the organizational culture. Without the luxury of a technical writer, teams get the tools to accelerate their document authoring's velocity to match the speed of DevOps. - -What is your organization doing to bring documentation into the DevOps lifecycle? Please share your experience in the comments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/3/devops-documentation - -作者:[Will Kelly][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/willkelly -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/typewriter-hands.jpg?itok=oPugBzgv (Typewriter with hands) -[2]: https://opensource.com/article/19/11/hiring-technical-writers-devops -[3]: https://searchitoperations.techtarget.com/opinion/Make-DevOps-documentation-an-integral-part-of-your-strategy?_ga=2.73253915.980148481.1610758264-908287796.1564772842 -[4]: https://www.agilealliance.org/glossary/definition-of-done -[5]: https://developers.google.com/season-of-docs -[6]: https://swagger.io/specification/ -[7]: https://devops.com/continuous-documentation -[8]: https://www.cmswire.com/cms/information-management/the-importance-of-docops-in-the-new-era-of-business-027489.php -[9]: https://opensource.com/article/20/7/sharepoint-alternative -[10]: https://opensource.com/article/20/7/nextcloud diff --git a/sources/tech/20210415 5 reasons sysadmins love systemd.md b/sources/tech/20210415 5 reasons sysadmins love systemd.md deleted file mode 100644 index f063a55ddc..0000000000 --- a/sources/tech/20210415 5 reasons sysadmins love systemd.md +++ /dev/null @@ -1,204 +0,0 @@ -[#]: subject: (5 reasons sysadmins love systemd) -[#]: via: (https://opensource.com/article/21/4/sysadmins-love-systemd) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -5 reasons sysadmins love systemd -====== -Systemd's speed and ease make it a popular way to manage modern Linux -systems. -![Woman sitting in front of her laptop][1] - -As systems administrators know, there's a lot happening on modern computers. Applications run in the background, automated events wait to be triggered at a certain time, log files are written, status reports are delivered. Traditionally, these disparate processes have been managed and monitored with a collection of Unix tools to great effect and with great efficiency. However, modern computers are diverse, with local services running alongside containerized applications, easy access to clouds and the clusters they run on, real-time processes, and more data to process than ever. - -Having a unified method of managing them is an expectation for users and a useful luxury for busy sysadmins. For this nontrivial task, the system daemon, or **systemd**, was developed and quickly adopted by all major Linux distributions. - -Of course, systemd isn't the only way to manage a Linux system. There are many alternative init systems, including sysvinit, OpenRC, runit, s6, and even BusyBox, but systemd treats Linux as a unified data set, meant to be manipulated and queried consistently with robust tools. For a busy systems administrator and many users, the speed and ease of systemd is an important feature. Here are five reasons why. - -### Boot management - -Booting a Linux computer can be a surprisingly rare event, if you want it to be. Certainly in the server world, uptimes are often counted in _years_ rather than months or weeks. Laptops and desktops tend to be shut down and booted pretty frequently, although even these are as likely to be suspended or hibernated as they are to be shut down. Either way, the time since the most recent boot event can serve as a sort of session manager for a computer health check. It's a useful way to limit what data you look at when monitoring your system or diagnosing problems. - -In the likely event that you can't remember the last time you booted your computer, you can list boot sessions with systemd's logging tool, `journalctl`: - - -``` -$ journalctl --list-boots --42 7fe7c3... Fri 2020-12-04 05:13:59 - Wed 2020-12-16 16:01:23 --41 332e99... Wed 2020-12-16 20:07:39 - Fri 2020-12-18 22:08:13 -[...] --1 e0fe5f... Mon 2021-03-29 20:47:46 - Mon 2021-03-29 21:59:29 - 0 37fbe4... Tue 2021-03-30 04:46:13 - Tue 2021-03-30 10:42:08 -``` - -The latest boot sessions appear at the bottom of the list, so you can pipe the output to `tail` for just the latest boots. - -The numbers on the left (42, 41, 1, and 0 in this example) are index numbers for each boot session. In other words, to view logs for only a specific boot session, you can use its index number as reference. - -### Log reviews - -Looking at logs is an important method of extrapolating information about your system. Logs provide a history of much of the activity your computer engages in without your direct supervision. You can see when services launched, when timed jobs ran, what services are running in the background, which activities failed, and more. One of the most common initial troubleshooting steps is to review logs, which is easy to do with `journalctl`: - - -``` -`$ journalctl --pager-end` -``` - -The `--pager-end` (or `-e` for short) option starts your view of the logs at the end of the `journalctl` output, so you must scroll up to see events that happened earlier. - -Systemd maintains a "catalog" of errors and messages filled with records of errors, possible solutions, pointers to support forums, and developer documentation. This can provide important context to a log event, which can otherwise be a confusing blip in a sea of messages, or worse, could go entirely unnoticed. To integrate error messages with explanatory text, you can use the `--catalog` (or `-x` for short) option: - - -``` -`$ journalctl --pager-end --catalog` -``` - -To further limit the log output you need to wade through, you can specify which boot session you want to see logs for. Because each boot session is indexed, you can specify certain sessions with the `--boot` option and view only the logs that apply to it: - - -``` -`$ journalctl --pager-end --catalog --boot 42` -``` - -You can also see logs for a specific systemd unit. For instance, to troubleshoot an issue with your secure shell (SSH) service, you can specify `--unit sshd` to see only the logs that apply to the `sshd` daemon: - - -``` -$ journalctl --pager-end \ -\--catalog --boot 42 \ -\--unit sshd -``` - -### Service management - -The first task for systemd is to boot your computer, and it generally does that promptly, efficiently, and effectively. But the task that's never finished is service management. By design, systemd ensures that the services you want to run do indeed start and continue running during your session. This is nicely robust, because in theory even a crashed service can be restarted without your intervention. - -Your interface to help systemd manage services is the `systemctl` command. With it, you can view the unit files that define a service: - - -``` -$ systemctl cat sshd -# /usr/lib/systemd/system/sshd.service -[Unit] -Description=OpenSSH server daemon -Documentation=man:sshd(8) man:sshd_config(5) -After=network.target sshd-keygen.target -Wants=sshd-keygen.target - -[Service] -Type=notify -EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config -EnvironmentFile=-/etc/sysconfig/sshd -ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY -ExecReload=/bin/kill -HUP $MAINPID -KillMode=process -Restart=on-failure -RestartSec=42s - -[Install] -WantedBy=multi-user.target -``` - -Most unit files exist in `/usr/lib/systemd/system/` but, as with many important configurations, you're encouraged to modify them with local changes. There's an interface for that, too: - - -``` -`$ systemctl edit sshd` -``` - -You can see whether a service is currently active: - - -``` -$ systemctl is-active sshd -active -$ systemctl is-active foo -inactive -``` - -Similarly, you can see whether a service has failed with `is-failed`. - -Starting and stopping services is nicely intuitive: - - -``` -$ systemctl stop sshd -$ systemctl start sshd -``` - -And enabling a service to start at boot time is simple: - - -``` -`$ systemctl enable sshd` -``` - -Add the `--now` option to enable a service to start at boot time or to start it for your current session. - -### Timers - -Long ago, when you wanted to automate a task on Linux, the canonical tool for the job was `cron`. There's still a place for the cron command, but there are also some compelling alternatives. For instance, the [`anacron` command][2] is a versatile, cron-like system capable of running tasks that otherwise would have been missed during downtime. - -Scheduled events are little more than services activated at a specific time, so systemd manages a cron-like function called [timers][3]. You can list active timers: - - -``` -$ systemctl list-timers -NEXT                          LEFT       -Tue 2021-03-30 12:37:54 NZDT  16min left [...] -Wed 2021-03-31 00:00:00 NZDT  11h left [...] -Wed 2021-03-31 06:42:02 NZDT  18h left [...] - -3 timers listed. -Pass --all to see loaded but inactive timers, too. -``` - -You can enable a timer the same way you enable a service: - - -``` -`$ systemctl enable myMonitor.timer` -``` - -### Targets - -Targets are the final major component of the systemd matrix. A target is defined by a unit file, the same as services and timers. Targets can also be started and enabled in the same way. What makes targets unique is that they group other unit files in an arbitrarily significant way. For instance, you might want to boot to a text console instead of a graphical desktop, so the `multi-user` target exists. However, the `multi-user` target is only the `graphical` target without the desktop unit files as dependencies. - -In short, targets are an easy way for you to collect services, timers, and even other targets together to represent an intended state for your machine. - -In fact, within systemd, a reboot, a power-off, or a shut-down action is just another target. - -You can list all available targets using the `list-unit-files` option, constraining it with the `--type` option set to `target`: - - -``` -`$ systemctl list-unit-files --type target` -``` - -### Taking control with systemd - -Modern Linux uses systemd for service management and log introspection. It provides everything from personal Linux systems to enterprise servers with a modern mechanism for monitoring and easy maintenance. The more you use it, the more systemd becomes comfortably predictable and intuitive, and the more you discover how disparate parts of your system are interconnected. - -To get better acquainted with systemd, you must use it. And to get comfortable with using it, [download our cheat sheet][4] and refer to it often. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/4/sysadmins-love-systemd - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_women_computing_4.png?itok=VGZO8CxT (Woman sitting in front of her laptop) -[2]: https://opensource.com/article/21/2/linux-automation -[3]: https://opensource.com/article/20/7/systemd-timers -[4]: https://opensource.com/downloads/linux-systemd-cheat-sheet diff --git a/sources/tech/20210426 How we built an open source design system to create new community logos.md b/sources/tech/20210426 How we built an open source design system to create new community logos.md deleted file mode 100644 index 81089c3c74..0000000000 --- a/sources/tech/20210426 How we built an open source design system to create new community logos.md +++ /dev/null @@ -1,134 +0,0 @@ -[#]: subject: (How we built an open source design system to create new community logos) -[#]: via: (https://opensource.com/article/21/4/ansible-community-logos) -[#]: author: (Fiona Lin https://opensource.com/users/fionalin) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -How we built an open source design system to create new community logos -====== -Learn how Ansible's new logos were developed with stakeholder input to -ensure a consistent brand across the entire project. -![UX design Mac computer with mobile and laptop][1] - -As interaction designers on Red Hat's User Experience (UX) Design and Ansible product teams, we worked for about six months to build a logo family with the Ansible community. This journey started even earlier when a project manager asked us for a "quick and easy" logo for a slide deck. After gathering a few requirements, we presented a logo to the stakeholders within a few days and without much need for iteration. A few months later, another stakeholder decided they would also benefit from having imagery for their materials, so we repeated the process. - -At this point, we noticed a pattern: logo resources like these no longer represented individual requests but rather a common need across the Ansible project. After completing several logo requests, we had built a makeshift series that—without conscious branding and design conventions—created the potential for visual inconsistencies across the Ansible brand. As the logo collection grew, we recognized this looming problem and the need to combat it. - -Our solution was to create an Ansible design system, a brand-specific resource to guide consistent logo design well into the future. - -### What is a design system? - -A design system is a collection of reusable assets and guidelines that help inform the visual language of any digital product suite. Design systems create patterns to bring separate products together and elevate brands through scalability and consistency. - -Especially in a large corporation with multiple products in the portfolio, scaling does not come easily without standardization as different teams contribute to each product. Design systems work as a baseline for each team to build new assets on. With a standardized look and feel, products are unified as one family across the portfolio. - -### Getting started building a design system - -After receiving a series of requests from stakeholders to create logos for the open source Ansible community, such as Ansible Builder, Ansible Runner, and Project Receptor, we decided to design a structure for our workflow and create a single source of truth to work for moving forward. - -First, we conducted a visual audit of the existing logos to determine what we had to work with. Ansible's original logo family consists of four main images: the Angry Spud for AWX, the Ansibull for Ansible Core/Engine, and the monitor with wings for AWX. Most of the logos were tied together with a consistent shade of red and bull imagery, but the stroke width, stroke color, line quality, and typography were vast and varied. - -![Original Ansible logos][2] - -(Fiona Lin and Taufique Rahman, [CC BY-SA 4.0][3]) - -The Angry Spud uses a tan outline and a hand-drawn style, while the bull is a symmetrical, geometric vector. The AWX monitor was the outlier with its thin line-art wings, blue vector rectangle, and Old English typeface (not included here, but an exception from the rest of the family, which uses a modern sans serif). - -### Establishing new design criteria - -Taking color palette, typography, and imagery into consideration, we generated a consistent composition that features the Ansibull for all core Ansible products, along with bold lines and vibrant colors. - -![Ansible design system][4] - -(Fiona Lin and Taufique Rahman, [CC BY-SA 4.0][3]) - -The new Ansible community logo design style guide details the color palette, typography, sizing, spacing, and logo variations for Ansible product logos. - -The new style guide presents a brand new, modern custom typeface based on GT America by [Grilli Type][5], an independent Swiss type foundry. We created a softer look for the typeface to match the imagery's roundedness by rounding out certain corners of each letter. - -We decided to curate a more lively, saturated, and universal color palette by incorporating more colors in the spectrum and basing them on primary colors. The new palette features light blue, yellow, and pink, each with a lighter highlight and darker shadow. This broader color scope allows more flexibility within the system and introduces a 3D look and feel. - -![New Ansible logos][6] - -(Fiona Lin and Taufique Rahman, [CC BY-SA 4.0][3]) - -We also introduced new imagery, such as the hexagons in the Receptor and AWX logos for visual continuity. Finally, we made sure each logo works on both light and dark backgrounds for maximum flexibility. - -### Expanding the design portfolio - -Once we established the core logo family, we moved onto creating badges for Ansible services, such as Ansible Demo and Ansible Workshop. To differentiate services from products, we decided to enclose service graphics in a circle that contains the name of the service in the same custom typography. The new service badges show the baby Ansibull (from the Ansible Builder logo) completing tasks related to each service, such as pointing to a whiteboard for Ansible Demo or using building tools for Ansible Workshop. - -![New Ansible services logos][7] - -(Fiona Lin and Taufique Rahman, [CC BY-SA 4.0][3]) - -### Using open source for design decisions - -The original AWX logo was influenced by rock-and-roll imagery, such as the wings and the heavy metal typeface (omitted from the image here). - -![Original AWX logo][8] - -(Fiona Lin and Taufique Rahman, [CC BY-SA 4.0][3]) - -Several members of the Ansible community, including the Red Hat Diversity and Inclusion group, brought to our attention that these elements resemble imagery used by hate groups. - -Given the social implications of the original logo's imagery, we had to work quickly with the Ansible community to design a replacement. Instead of working in a silo, as we did for the initial logos, we broadened the project's scope to carefully consider a wider range of stakeholders, including the Ansible community, Red Hat Diversity and Inclusion group, and Red Hat Legal team. - -We started brainstorming by reaching out to the Ansible open source community for ideas. One of the Ansible engineers, Rebeccah Hunter, contributed in the sketching phase and later became an embedded part of our design team. Part of the challenge of involving a large group of stakeholders was that we had a variety of ideas for new logo concepts, ranging from an auxiliary cable to a bowl of ramen. - -We sketched five community-surfaced logos, each featuring a different branded visual: a sprout, a rocket, a monitor, a bowl of ramen, and an auxiliary cable. - -![AWX logo concepts][9] - -(Fiona Lin and Taufique Rahman, [CC BY-SA 4.0][3]) - -After completing these initial concept sketches, we set up a virtual voting mechanism that we used throughout the iteration process. This voting system allowed us to use community feedback to narrow from five initial concepts down to three: the rocket, the bowl of ramen, and the monitor. We further iterated on these three directions and presented back, via a Slack channel dedicated to this effort, until we landed on one direction, the AWX monitor, that aligned with the community's vision. - -![New AWX logo][10] - -(Fiona Lin and Taufique Rahman, [CC BY-SA 4.0][3]) - -With community voices as our guide, we pursued the monitor logo concept for AWX. We preserved the monitor element from the original logo while modernizing the look and feel to match our updated design system. We used a more vibrant color palette, a cleaner sans-serif typeface, and elements, including the hexagon motif, from the Project Receptor logo. - -By engaging with our community from the beginning of the process, we were able to design and iterate in the open with a sense of inclusiveness from all stakeholders. In the end, we felt this was the best approach for replacing a controversial logo. The final version was handed off to the Red Hat Legal team, and after approval, we replaced all current assets with this new logo. - -### Key takeaways - -Creating a set of rules and assets for a design system keeps your digital products consistent across the board, eliminates brand confusion, and enables scalability. - -As you explore building a design system with your own community, you may benefit from these key takeaways we learned along our path: - - * Scaling new logos with a design system is a much easier process than without one. - * Juggling design options becomes less daunting when you use a polling system to validate results. - * Directing a large audience's attention on sets of three eliminates decision fatigue and focuses community feedback. - - - -We hope this article provides insight into designing a system with an open source community and helps you recognize the benefit of developing a system early in your process. If you are creating a new design system, what questions do you have? And if you have created one, what lessons have you learned? Please share your ideas in the comments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/4/ansible-community-logos - -作者:[Fiona Lin][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/fionalin -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/ux-design-mac-laptop.jpg?itok=9-HKgXa9 (UX design Mac computer with mobile and laptop) -[2]: https://opensource.com/sites/default/files/pictures/original_logos.png (Original Ansible logos) -[3]: https://creativecommons.org/licenses/by-sa/4.0/ -[4]: https://opensource.com/sites/default/files/pictures/design_system.png (Ansible design system) -[5]: https://www.grillitype.com/ -[6]: https://opensource.com/sites/default/files/pictures/new_logos.png (New Ansible logos) -[7]: https://opensource.com/sites/default/files/pictures/new_service_badges.png (New Ansible services logos) -[8]: https://opensource.com/sites/default/files/uploads/awx_original.png (Original AWX logo) -[9]: https://opensource.com/sites/default/files/uploads/awx_concepts.png (AWX logo concepts) -[10]: https://opensource.com/sites/default/files/uploads/awx.png (New AWX logo) diff --git a/sources/tech/20210530 Complete Guide to Configuring SSH in Ubuntu.md b/sources/tech/20210530 Complete Guide to Configuring SSH in Ubuntu.md deleted file mode 100644 index b66a99ec02..0000000000 --- a/sources/tech/20210530 Complete Guide to Configuring SSH in Ubuntu.md +++ /dev/null @@ -1,252 +0,0 @@ -[#]: subject: (Complete Guide to Configuring SSH in Ubuntu) -[#]: via: (https://itsfoss.com/set-up-ssh-ubuntu/) -[#]: author: (Chris Patrick Carias Stas https://itsfoss.com/author/chris/) -[#]: collector: (lujun9972) -[#]: translator: (hwlife) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Complete Guide to Configuring SSH in Ubuntu -====== - -SSH has become the default method of accessing a remote Linux server these days. - -SSH stands for Secure Shell and it’s a powerful, efficient, and popular network protocol used to establish communication between two computers in a remote fashion. And let’s not forget the secure part of its name; SSH encrypts all traffic to prevent attacks like hijacking and eavesdropping while offering different authentication methods and a myriad of configuration options. - -In this beginner’s guide, you’ll learn: - - * The basic concept of SSH - * Setting up SSH server (on the system you want to access remotely) - * Connecting to remote server via SSH from the client machine (your personal computer) - - - -### The absolute basics of SSH - -Before you see any configuration process, it will be better to go through the absolute basic concept of SSH. - -The SSH protocol is based on server-client architecture. The “server” allows the “client” to be connected over a communication channel. This channel is encrypted and the exchange is governed by the use of public and private SSH keys. - -![Image credit: SSH][1] - -[OpenSSH][2] is one of the most popular open source tools that provides the SSH functionality on Linux, BSD and Windows. - -For a successful SSH set up, you need to: - - * Have SSH server components on the machine that acts as the server. This is provided by **openssh-server** package. - * Have SSH client component on the machine from where you want to connect to the remote server machine. This is provided by **openssh-client** package and most Linux and BSD distributions come preinstalled with it. - - - -It is important to keep a distinction between the server and client. You might not want your personal computer to act as SSH server unless you have good reasons where you want others to connect to your system via SSH. - -Generally, you have a dedicated system working as the server. For example, a [Raspberry Pi running Ubuntu server][3]. You [enable SSH on the Raspberry Pi][4] so that you could control and manage the device from your main personal computer using SSH in a terminal. - -With that information, let’s see how you can set up a SSH server on Ubuntu. - -### Configuring SSH Server on Ubuntu - -Setting up SSH is not complicated and just needs a few steps to do it. - -#### Prerequisites - - * A user with **sudo** privileges on the server machine - * Internet connection to download the required packages - * At least another system in your network. It can be another computer on your LAN, a remote server via Internet, or a virtual machine hosted in your computer. - - - -_**Again, the SSH server installation should be done on the system that you want to act as server and to which you want to connect remotely via SSH.**_ - -#### Step 1: Install required packages - -Let’s start by opening a terminal window to enter the necessary commands. - -Remember to [update your Ubuntu system][5] before installing new packages or software with to make sure that you are running the latest versions. - -``` -sudo apt update && sudo apt upgrade -``` - -The package you need to run SSH Server is provided by openssh-server component from OpenSSH: - -``` -sudo apt install openssh-server -``` - -![][6] - -#### Step 2: Checking the status of the server - -Once the downloading and installation of the package is done the SSH service should be already running, but to be sure we will check it with: - -``` -service ssh status -``` - -You may also use the systemd commands: - -``` -sudo systemctl status ssh -``` - -You should see something like this, with the word Active highlighted. Hit `q` to return to the command prompt. - -![][7] - -If in your case the service is not running you will have to activate like this: - -``` -sudo systemctl enable --now ssh -``` - -#### Step 3: Allowing SSH through the firewall - -Ubuntu comes with a firewall utility called [UFW][8] (UncomplicatedFirewall) which is an interface for **iptables** that in turn manages the network’s rules. If the firewall is active, it may prevent the connection to your SSH Server. - -To configure UFW so that it allows the wanted access, you need to run the following command: - -``` -sudo ufw allow ssh -``` - -The status of UFW can be checked running `sudo ufw status`. - -At this time our SSH Server is up and running, just waiting for a connection from a client. - -### Connecting to the remote system from your local machine - -Your local Linux system should already have SSH client installed. If not, you may always install it using the following command on Ubuntu: - -``` -sudo apt install openssh-client -``` - -To connect to your Ubuntu system you need to know the IP address of the computer and use the `ssh` command, like this: - -``` -ssh [email protected] -``` - -Change **username** to your actual user in the system and **address** to the IP address of your Ubuntu machine. - -If you don’t [know the IP address of your computer][9] you can type `ip a` in the terminal of the server and check the output. You should have something like this: - -![Using “ip a” to find the IP address][10] - -As can be seen here my IP address is **192.168.1.111**. Let’s try connecting using the **[[email protected]][11]** format. - -``` -ssh [email protected] -``` - -The first time you connect to a SSH server, it will ask for permission to add the host. Type `yes` and hit Enter to continue. - -![First time connecting to the server][12] - -Immediately SSH tells you that the host was permanently added and then asks for the password assigned to the username. Type in the password and hit Enter one more time. - -![Host added, now type in the password][13] - -And voila! You will be logged into your Ubuntu system remotely! - -![Connected!][14] - -Now you can work in your remote system’s terminal as normal. - -#### Closing the SSH connection - -To close the connection you just need to type `exit` and it will close it at once, without asking for confirmation. - -![Closing the connection with “exit”][15] - -### Stopping and Disabling SSH in Ubuntu - -If you want to stop SSH service you will need this command: - -``` -sudo systemctl stop ssh -``` - -This will stop the service until you restart it or until the system is rebooted. To restart it, type: - -``` -sudo systemctl start ssh -``` - -Now, if you want to disable it from starting during system boot, use this: - -``` -sudo systemctl disable ssh -``` - -This won’t stop the service from running during the current session, just from loading during startup. If you want to let it start again during system boot, type: - -``` -sudo systemctl enable ssh -``` - -#### Other SSH clients - -The tool `ssh` is included in most *nix systems, from Linux to macOS, but those are not the only options in existence, here are a couple of clients that can be used from other operating systems: - - * [PuTTY][16] is a free SSH client for Windows and it’s open source. It’s full of features and very easy to use. If you are connecting to your Ubuntu machine from a Windows station, PuTTY is a great option. - * [JuiceSSH][17] is an amazing tool for Android users. If you are on the go and need a mobile client to connect to your Ubuntu system, I amply recommend giving JuiceSSH a go. It’s been around for almost 10 years and it’s free to use. - * And finally, [Termius][18] is available for Linux, Windows, macOS, iOS, and Android. It has a free tier version and also several premium options. If you are running a lot of servers and working with teams sharing connections then Termius is a good option for you. - - - -#### Wrapping Up - -With these instructions, you can set up SSH as a server service in our Ubuntu systems to be able to connect remotely and securely to your computer in order to work with the command line and perform any required task. - -Our other website, Linux Handbook, has various informational articles on SSH. From here, I recommend reading the following: - - * [Getting started with SSH on Linux][19] - * [Using SSH Config file to manage multiple SSH connections][20] - * [Adding public key to SSH server for password less authentication][21] - * [SSH hardening tips][22] to secure your SSH server - - - -If you find it overwhelming, [Linux Handbook has a premium video course that explains SSH for beginners][23] along with hands-on labs to follow. This will give you a more streamlined knowledge of the topic. - -Happy remote working! - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/set-up-ssh-ubuntu/ - -作者:[Chris Patrick Carias Stas][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/chris/ -[b]: https://github.com/lujun9972 -[1]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-diagram.png?resize=800%2C259&ssl=1 -[2]: https://www.openssh.com/ -[3]: https://itsfoss.com/install-ubuntu-server-raspberry-pi/ -[4]: https://itsfoss.com/ssh-into-raspberry/ -[5]: https://itsfoss.com/update-ubuntu/ -[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-0001.png?resize=800%2C253&ssl=1 -[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-0002.png?resize=800%2C263&ssl=1 -[8]: https://itsfoss.com/set-up-firewall-gufw/ -[9]: https://itsfoss.com/check-ip-address-ubuntu/ -[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-find-ip.png?resize=800%2C341&ssl=1 -[11]: https://itsfoss.com/cdn-cgi/l/email-protection -[12]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-0004.png?resize=800%2C87&ssl=1 -[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-0005.png?resize=800%2C57&ssl=1 -[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-0006.png?resize=800%2C322&ssl=1 -[15]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/05/ssh-0007.png?resize=800%2C87&ssl=1 -[16]: https://www.putty.org/ -[17]: https://juicessh.com/ -[18]: https://termius.com/ -[19]: https://linuxhandbook.com/ssh-basics/ -[20]: https://linuxhandbook.com/ssh-config-file/ -[21]: https://linuxhandbook.com/add-ssh-public-key-to-server/ -[22]: https://linuxhandbook.com/ssh-hardening-tips/ -[23]: https://linuxhandbook.com/sshcourse/ diff --git a/sources/tech/20210604 Optimize Java serverless functions in Kubernetes.md b/sources/tech/20210604 Optimize Java serverless functions in Kubernetes.md deleted file mode 100644 index 432ef50ae2..0000000000 --- a/sources/tech/20210604 Optimize Java serverless functions in Kubernetes.md +++ /dev/null @@ -1,267 +0,0 @@ -[#]: subject: (Optimize Java serverless functions in Kubernetes) -[#]: via: (https://opensource.com/article/21/6/java-serverless-functions-kubernetes) -[#]: author: (Daniel Oh https://opensource.com/users/daniel-oh) -[#]: collector: (lujun9972) -[#]: translator: (cool-summer-021) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Optimize Java serverless functions in Kubernetes -====== -Achieve faster startup and a smaller memory footprint to run serverless -functions on Kubernetes. -![Ship captain sailing the Kubernetes seas][1] - -A faster startup and smaller memory footprint always matter in [Kubernetes][2] due to the expense of running thousands of application pods and the cost savings of doing it with fewer worker nodes and other resources. Memory is more important than throughput on containerized microservices on Kubernetes because: - - * It's more expensive due to permanence (unlike CPU cycles) - * Microservices multiply the overhead cost - * One monolith application becomes _N_ microservices (e.g., 20 microservices ≈ 20GB) - - - -This significantly impacts serverless function development and the Java deployment model. This is because many enterprise developers chose alternatives such as Go, Python, and Nodejs to overcome the performance bottleneck—until now, thanks to [Quarkus][3], a new Kubernetes-native Java stack. This article explains how to optimize Java performance to run serverless functions on Kubernetes using Quarkus. - -### Container-first design - -Traditional frameworks in the Java ecosystem come at a cost in terms of the memory and startup time required to initialize those frameworks, including configuration processing, classpath scanning, class loading, annotation processing, and building a metamodel of the world, which the framework requires to operate. This is multiplied over and over for different frameworks. - -Quarkus helps fix these Java performance issues by "shifting left" almost all of the overhead to the build phase. By doing code and framework analysis, bytecode transformation, and dynamic metamodel generation only once, at build time, you end up with a highly optimized runtime executable that starts up super fast and doesn't require all the memory of a traditional startup because the work is done once, in the build phase. - -![Quarkus Build phase][4] - -(Daniel Oh, [CC BY-SA 4.0][5]) - -More importantly, Quarkus allows you to build a native executable file that provides [performance advantages][6], including amazingly fast boot time and incredibly small resident set size (RSS) memory, for instant scale-up and high-density memory utilization compared to the traditional cloud-native Java stack. - -![Quarkus RSS and Boot Time Metrics][7] - -(Daniel Oh, [CC BY-SA 4.0][5]) - -Here is a quick example of how you can build the native executable with a [Java serverless][8] function project using Quarkus. - -### 1\. Create the Quarkus serverless Maven project - -This command generates a Quarkus project (e.g., `quarkus-serverless-native`) to create a simple function: - - -``` -$ mvn io.quarkus:quarkus-maven-plugin:1.13.4.Final:create \ -       -DprojectGroupId=org.acme \ -       -DprojectArtifactId=quarkus-serverless-native \ -       -DclassName="org.acme.getting.started.GreetingResource" -``` - -### 2\. Build a native executable - -You need a GraalVM to build a native executable for the Java application. You can choose any GraalVM distribution, such as [Oracle GraalVM Community Edition (CE)][9] and [Mandrel][10] (the downstream distribution of Oracle GraalVM CE). Mandrel is designed to support building Quarkus-native executables on OpenJDK 11. - -Open `pom.xml`, and you will find this `native` profile. You'll use it to build a native executable: - - -``` -<profiles> -    <profile> -        <id>native</id> -        <properties> -            <quarkus.package.type>native</quarkus.package.type> -        </properties> -    </profile> -</profiles> -``` - -> **Note:** You can install the GraalVM or Mandrel distribution locally. You can also download the Mandrel container image to build it (as I did), so you need to run a container engine (e.g., Docker) locally. - -Assuming you have started your container runtime already, run one of the following Maven commands. - -For [Docker][11]: - - -``` -$ ./mvnw package -Pnative \ --Dquarkus.native.container-build=true \ --Dquarkus.native.container-runtime=docker -``` - -For [Podman][12]: - - -``` -$ ./mvnw package -Pnative \ --Dquarkus.native.container-build=true \ --Dquarkus.native.container-runtime=podman -``` - -The output should end with `BUILD SUCCESS`. - -![Native Build Logs][13] - -(Daniel Oh, [CC BY-SA 4.0][5]) - -Run the native executable directly without Java Virtual Machine (JVM): - - -``` -`$ target/quarkus-serverless-native-1.0.0-SNAPSHOT-runner` -``` - -The output will look like: - - -``` -__  ____  __  _____   ___  __ ____  ______ - --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ - -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \   -\--\\___\\_\\____/_/ |_/_/|_/_/|_|\\____/___/   -INFO  [io.quarkus] (main) quarkus-serverless-native 1.0.0-SNAPSHOT native -(powered by Quarkus xx.xx.xx.) Started in 0.019s. Listening on: -INFO [io.quarkus] (main) Profile prod activated. -INFO [io.quarkus] (main) Installed features: [cdi, kubernetes, resteasy] -``` - -Supersonic! That's _19_ _milliseconds_ to startup. The time might be different in your environment. - -It also has extremely low memory usage, as the Linux `ps` utility reports. While the app is running, run this command in another terminal: - - -``` -`$ ps -o pid,rss,command -p $(pgrep -f runner)` -``` - -You should see something like: - - -``` -  PID    RSS COMMAND -10246  11360 target/quarkus-serverless-native-1.0.0-SNAPSHOT-runner -``` - -This process is using around _11MB_ of memory (RSS). Pretty compact! - -> **Note:** The RSS and memory usage of any app, including Quarkus, will vary depending on your specific environment and will rise as application experiences load. - -You can also access the function with a REST API. Then the output should be `Hello RESTEasy`: - - -``` -$ curl localhost:8080/hello -Hello RESTEasy -``` - -### 3\. Deploy the functions to Knative service - -If you haven't already, [create a namespace][14] (e.g., `quarkus-serverless-native`) on [OKD][15] (OpenShift Kubernetes Distribution) to deploy this native executable as a serverless function. Then add a `quarkus-openshift` extension for Knative service deployment: - - -``` -`$ ./mvnw -q quarkus:add-extension -Dextensions="openshift"` -``` - -Append the following variables in `src/main/resources/application.properties` to configure Knative and Kubernetes resources: - - -``` -quarkus.container-image.group=quarkus-serverless-native -quarkus.container-image.registry=image-registry.openshift-image-registry.svc:5000 -quarkus.native.container-build=true -quarkus.kubernetes-client.trust-certs=true -quarkus.kubernetes.deployment-target=knative -quarkus.kubernetes.deploy=true -quarkus.openshift.build-strategy=docker -``` - -Build the native executable, then deploy it to the OKD cluster directly: - - -``` -`$ ./mvnw clean package -Pnative` -``` - -> **Note:** Make sure to log in to the right project (e.g., `quarkus-serverless-native`) using the `oc login` command ahead of time. - -The output should end with `BUILD SUCCESS`. It will take a few minutes to complete a native binary build and deploy a new Knative service. After successfully creating the service, you should see a Knative service (KSVC) and revision (REV) using either the `kubectl` or `oc` command tool: - - -``` -$ kubectl get ksvc -NAME                        URL   [...] -quarkus-serverless-native    True - -$ kubectl get rev -NAME                              CONFIG NAME                 K8S SERVICE NAME                  GENERATION   READY   REASON -quarkus-serverless-native-00001   quarkus-serverless-native   quarkus-serverless-native-00001   1            True -``` - -### 4\. Access the native executable function - -Retrieve the serverless function's endpoint by running this `kubectl` command: - - -``` -`$ kubectl get rt/quarkus-serverless-native` -``` - -The output should look like: - - -``` -NAME                         URL                                                                                                          READY   REASON -quarkus-serverless-native     True -``` - -Access the route `URL` with a `curl` command: - - -``` -`$ curl http://quarkus-serverless-restapi-quarkus-serverless-native.SUBDOMAIN/hello` -``` - -In less than one second, you will get the same result as you got locally: - - -``` -`Hello RESTEasy` -``` - -When you access the Quarkus running pod's logs in the OKD cluster, you will see the native executable is running as the Knative service. - -![Native Quarkus Log][16] - -(Daniel Oh, [CC BY-SA 4.0][5]) - -### What's next? - -You can optimize Java serverless functions with GraalVM distributions to deploy them as serverless functions on Knative with Kubernetes. Quarkus enables this performance optimization using simple configurations in normal microservices. - -The next article in this series will guide you on making portable functions across multiple serverless platforms with no code changes. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/6/java-serverless-functions-kubernetes - -作者:[Daniel Oh][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/daniel-oh -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/ship_captain_devops_kubernetes_steer.png?itok=LAHfIpek (Ship captain sailing the Kubernetes seas) -[2]: https://opensource.com/article/19/6/reasons-kubernetes -[3]: https://quarkus.io/ -[4]: https://opensource.com/sites/default/files/uploads/quarkus-build.png (Quarkus Build phase) -[5]: https://creativecommons.org/licenses/by-sa/4.0/ -[6]: https://quarkus.io/blog/runtime-performance/ -[7]: https://opensource.com/sites/default/files/uploads/quarkus-boot-metrics.png (Quarkus RSS and Boot Time Metrics) -[8]: https://opensource.com/article/21/5/what-serverless-java -[9]: https://www.graalvm.org/community/ -[10]: https://github.com/graalvm/mandrel -[11]: https://www.docker.com/ -[12]: https://podman.io/ -[13]: https://opensource.com/sites/default/files/uploads/native-build-logs.png (Native Build Logs) -[14]: https://docs.okd.io/latest/applications/projects/configuring-project-creation.html -[15]: https://docs.okd.io/latest/welcome/index.html -[16]: https://opensource.com/sites/default/files/uploads/native-quarkus-log.png (Native Quarkus Log) diff --git a/sources/tech/20210607 Identify security properties on Linux using checksec.md b/sources/tech/20210607 Identify security properties on Linux using checksec.md deleted file mode 100644 index 3d1e118830..0000000000 --- a/sources/tech/20210607 Identify security properties on Linux using checksec.md +++ /dev/null @@ -1,438 +0,0 @@ -[#]: subject: (Identify security properties on Linux using checksec) -[#]: via: (https://opensource.com/article/21/6/linux-checksec) -[#]: author: (Gaurav Kamathe https://opensource.com/users/gkamathe) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Identify security properties on Linux using checksec -====== -Learn how to use checksec to identify an executable's security -properties, understand what they mean, and know how to use them. -![Target practice][1] - -Compiling source code produces a binary. During compilation, you can provide flags to the compiler to enable or disable certain properties on the binary. Some of these properties are relevant to security. - -Checksec is a nifty little tool (and shell script) that, among other functions, identifies the security properties that were built into a binary when it was compiled. A compiler might enable some of these properties by default, and you might have to provide specific flags to enable others. - -This article explains how to use checksec to identify the security properties on a binary, including: - - 1. The underlying commands checksec uses to find information on the security properties - 2. How to enable security properties using the GNU Compiler Collection (GCC) when compiling a sample binary - - - -## Install checksec - -To install checksec on Fedora and other RPM-based systems, use: - - -``` -`$ sudo dnf install checksec` -``` - -For Debian-based distros, use the equivalent `apt` command. - -## The shell script - -Checksec is a single-file shell script, albeit a rather large one. An advantage is that you can read through the script quickly and understand all the system commands running to find information about binaries or executables: - - -``` -$ file /usr/bin/checksec -/usr/bin/checksec: Bourne-Again shell script, ASCII text executable, with very long lines - -$ wc -l /usr/bin/checksec -2111 /usr/bin/checksec -``` - -Take checksec for a drive with a binary you probably run daily: the ubiquitous `ls` command. The command's format is `checksec --file=` followed by the absolute path of the `ls` binary: - - -``` -$ checksec --file=/usr/bin/ls -RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH      Symbols         FORTIFY Fortified       Fortifiable     FILE -Full RELRO      Canary found      NX enabled    PIE enabled     No RPATH   No RUNPATH   No Symbols        Yes   5       17              /usr/bin/ls -``` - -When you run this in a terminal, you see color-coding that shows what is good and what probably isn't. I say "probably" because even if something is in red, it doesn't necessarily mean things are horrible—it might just mean the distro vendors made some tradeoffs when compiling the binaries. - -The first line provides various security properties that are usually available for binaries, like `RELRO`, `STACK CANARY`, `NX`, and so on (I explain in detail below). The second line shows the status of these properties for the given binary (`ls`, in this case). For example, `NX enabled` means some property is enabled for this binary. - -## A sample binary - -For this tutorial, I'll use the following "hello world" program as the sample binary. - - -``` -#include <stdio.h> - -int main() -{ -        [printf][2]("Hello World\n"); -        return 0; -} -  -``` - -Note that I did not provide `gcc` with any additional flags during compilation: - - -``` -$ gcc hello.c -o hello -  -$ file hello -hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=014b8966ba43e3ae47fab5acae051e208ec9074c, for GNU/Linux 3.2.0, not stripped - -$ ./hello -Hello World -``` - -Run the binary through checksec. Some of the properties are different than with the `ls` command above (on your screen, these may be displayed in red): - - -``` -$ checksec --file=./hello -RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH      Symbols         FORTIFY Fortified       Fortifiable     FILE -Partial RELRO   No canary found   NX enabled    No PIE          No RPATH   No RUNPATH   85) Symbols       No    0       0./hello -$ -``` - -## Changing the output format - -Checksec allows various output formats, which you can specify with `--output`. I'll choose the JSON format and pipe the output to the `jq` utility for pretty printing. - -To follow along, [ensure you have `jq` installed][3] because this tutorial uses this output format to quickly grep for specific properties from the output and report `yes` or `no` on each: - - -``` -$ checksec --file=./hello --output=json | jq -{ -  "./hello": { -    "relro": "partial", -    "canary": "no", -    "nx": "yes", -    "pie": "no", -    "rpath": "no", -    "runpath": "no", -    "symbols": "yes", -    "fortify_source": "no", -    "fortified": "0", -    "fortify-able": "0" -  } -} -``` - -## Walking through the security properties - -The binary above includes several security properties. I'll compare that binary against the `ls` binary above to examine what is enabled and explain how checksec found this information. - -### 1\. Symbols - -I'll start with the easy one first. During compilation, certain symbols are included in the binary, mostly for debugging. These symbols are required when you are developing software and require multiple cycles for debugging and fixing things. - -These symbols are usually stripped (removed) from the final binary before it's released for general use. This does not affect the binary's execution in any way; it will run just as it would with the symbols. Stripping is often done to save space, as the binary is somewhat lighter once the symbols have been stripped. In closed-source or proprietary software, symbols often are removed because having these symbols in a binary makes it somewhat easy to infer the software's inner workings. - -According to checksec, symbols are present in this binary, yet they were not in the `ls` binary. You can also find this information by running the `file` command on the program—you see `not stripped` in the output towards the end: - - -``` -$ checksec --file=/bin/ls --output=json | jq | grep symbols -    "symbols": "no", - -$ checksec --file=./hello --output=json | jq | grep symbols -    "symbols": "yes", - -$ file hello -hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=014b8966ba43e3ae47fab5acae051e208ec9074c, for GNU/Linux 3.2.0, not stripped -``` - -How did checksec find this information? Well, it provides a handy `--debug` option to show which functions ran. Therefore, running the following command should show you which functions ran within the shell script: - - -``` -`$ checksec --debug --file=./hello` -``` - -In this tutorial, I'm looking for the underlying commands used to find this information. Since it's a shell script, you can always utilize Bash features. This command will output every command that ran from within the shell script: - - -``` -`$ bash -x /usr/bin/checksec --file=./hello` -``` - -If you scroll through the output, you should see an `echo_message` followed by the security property's category. Here is what checksec reports about whether the binary contains symbols: - - -``` -\+ readelf -W --symbols ./hello -\+ grep -q '\\.symtab' -\+ echo_message '\033[31m96) Symbols\t\033[m  ' Symbols, ' symbols="yes"' '"symbols":"yes",' -``` - -To simplify this, checksec utilizes the `readelf` utility to read the binary and provides a special `--symbols` flag that lists all symbols within the binary. Then it greps for a special value, `.symtab`, that provides a count of entries (symbols) it finds. You can try out the following commands on the test binary you compiled above: - - -``` -$ readelf -W --symbols ./hello -$ readelf -W --symbols ./hello | grep -i symtab -``` - -## How to strip symbols - -You can strip symbols after compilation or during compilation. - - * **Post compilation:** After compilation, you can use the `strip` utility on the binary to remove the symbols. Confirm it worked using the `file` command, which now shows the output as `stripped`: [code] $ gcc hello.c -o hello -$ -$ file hello -hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=322037496cf6a2029dcdcf68649a4ebc63780138, for GNU/Linux 3.2.0, not stripped -$ -$ strip hello -$ -$ file hello -hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=322037496cf6a2029dcdcf68649a4ebc63780138, for GNU/Linux 3.2.0, stripped -$ -``` -## How to strip symbols during compilation - -Instead of stripping symbols manually after compilation, you can ask the compiler to do it for you by providing the `-s` argument: -``` - - -$ gcc -s hello.c -o hello -$ -$ file hello -hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=247de82a8ad84e7d8f20751ce79ea9e0cf4bd263, for GNU/Linux 3.2.0, stripped -$ - -``` -After rerunning checksec, you can see that `symbols` are shown as `no`: -``` - - -$ checksec --file=./hello --output=json | jq | grep symbols -    "symbols": "no", -$ - -``` -### 2\. Canary - -Canaries are known values that are placed between a buffer and control data on the _stack_ to monitor buffer overflows. When an application executes, two kinds of memory are assigned to it.  One of them is a _stack_, which is simply a data structure with two operations: `push`, which puts data onto the stack, and `pop`, which removes data from the stack in reverse order. Malicious input could overflow or corrupt the stack with specially crafted input and cause the program to crash: -``` - - -$ checksec --file=/bin/ls --output=json | jq | grep canary -    "canary": "yes", -$ -$ checksec --file=./hello --output=json | jq | grep canary -    "canary": "no", -$ - -``` -How does checksec find out if the binary is enabled with a canary? Using the method above, you can narrow it down by running the following command within the shell script: -``` -`$ readelf -W -s ./hello | grep -E '__stack_chk_fail|__intel_security_cookie'` -``` -#### Enable canary - -To protect against these cases, the compiler provides the `-stack-protector-all` flag, which adds extra code to the binary to check for such buffer overflows: -``` - - -$ gcc -fstack-protector-all hello.c -o hello - -$ checksec --file=./hello --output=json | jq | grep canary -    "canary": "yes", - -``` -Checksec shows that the property is now enabled. You can also verify this with: -``` - - -$ readelf -W -s ./hello | grep -E '__stack_chk_fail|__intel_security_cookie' -     2: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __stack_chk_fail@GLIBC_2.4 (3) -    83: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __stack_chk_fail@@GLIBC_2.4 -$ - -``` -### 3\. PIE - -PIE stands for position-independent executable. As the name suggests, it's code that is placed somewhere in memory for execution regardless of its absolute address: -``` - - -$ checksec --file=/bin/ls --output=json | jq | grep pie -    "pie": "yes", - -$ checksec --file=./hello --output=json | jq | grep pie -    "pie": "no", - -``` -Often, PIE is enabled only for libraries and not for standalone command-line programs. In the output below, `hello` is shown as `LSB executable`, whereas, the `libc` standard library (`.so`) file is marked `LSB shared object`: -``` - - -$ file hello -hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=014b8966ba43e3ae47fab5acae051e208ec9074c, for GNU/Linux 3.2.0, not stripped - -$ file /lib64/libc-2.32.so -/lib64/libc-2.32.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=4a7fb374097fb927fb93d35ef98ba89262d0c4a4, for GNU/Linux 3.2.0, not stripped - -``` -Checksec tries to find this information with: -``` - - -$ readelf -W -h ./hello | grep EXEC -  Type:                              EXEC (Executable file) - -``` -If you try the same command on a shared library instead of `EXEC`, you will see a `DYN`: -``` - - -$ readelf -W -h /lib64/libc-2.32.so | grep DYN -  Type:                              DYN (Shared object file) - -``` -#### Enable PIE - -To enable PIE on a test program, send the following arguments to the compiler: -``` -`$ gcc -pie -fpie hello.c -o hello` -``` -You can verify PIE is enabled using checksec: -``` - - -$ checksec --file=./hello --output=json | jq | grep pie -    "pie": "yes", -$ - -``` -It should show as a PIE executable with the type changed from `EXEC` to `DYN`: -``` - - -$ file hello -hello: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=bb039adf2530d97e02f534a94f0f668cd540f940, for GNU/Linux 3.2.0, not stripped - -$ readelf -W -h ./hello | grep DYN -  Type:                              DYN (Shared object file) - -``` -### 4\. NX - -NX stands for "non-executable." It's often enabled at the CPU level, so an operating system with NX enabled can mark certain areas of memory as non-executable. Often, buffer-overflow exploits put code on the stack and then try to execute it. However, making this writable area non-executable can prevent such attacks. This property is enabled by default during regular compilation using `gcc`: -``` - - -$ checksec --file=/bin/ls --output=json | jq | grep nx -    "nx": "yes", - -$ checksec --file=./hello --output=json | jq | grep nx -    "nx": "yes", - -``` -Checksec determines this information with the command below. `RW` towards the end means the stack is readable and writable; since there is no `E`, it's not executable: -``` - - -$ readelf -W -l ./hello | grep GNU_STACK -  GNU_STACK      0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW  0x10 - -``` -#### Disable NX for demo purposes - -It's not recommended, but you can disable `NX` when compiling a program by using the `-z execstack` argument: -``` - - -$ gcc -z execstack hello.c -o hello - -$ checksec --file=./hello --output=json | jq | grep nx -    "nx": "no", - -``` -Upon compilation, the stack becomes executable (`RWE`), which allows malicious code to execute: -``` - - -$ readelf -W -l ./hello | grep GNU_STACK -  GNU_STACK      0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RWE 0x10 - -``` -### 5\. RELRO - -RELRO stands for Relocation Read-Only. An Executable Linkable Format (ELF) binary uses a Global Offset Table (GOT) to resolve functions dynamically. When enabled, this security property makes the GOT within the binary read-only, which prevents some form of relocation attacks: -``` - - -$ checksec --file=/bin/ls --output=json | jq | grep relro -    "relro": "full", - -$ checksec --file=./hello --output=json | jq | grep relro -    "relro": "partial", - -``` -Checksec finds this information by using the command below. Here, one of the RELRO properties is enabled; therefore, the binary shows "partial" when verifying via checksec: -``` - - -$ readelf -W -l ./hello | grep GNU_RELRO -  GNU_RELRO      0x002e10 0x0000000000403e10 0x0000000000403e10 0x0001f0 0x0001f0 R   0x1 - -$ readelf -W -d ./hello | grep BIND_NOW - -``` -#### Enable full RELRO - -To enable full RELRO, use the following command-line arguments when compiling with `gcc`: -``` - - -$ gcc -Wl,-z,relro,-z,now hello.c -o hello - -$ checksec --file=./hello --output=json | jq | grep relro -    "relro": "full", - -``` -Now, the second property is also enabled, making the program full RELRO: -``` - - -$ readelf -W -l ./hello | grep GNU_RELRO -  GNU_RELRO      0x002dd0 0x0000000000403dd0 0x0000000000403dd0 0x000230 0x000230 R   0x1 - -$ readelf -W -d ./hello | grep BIND_NOW - 0x0000000000000018 (BIND_NOW)           - -``` -### 6\. Fortify - -Fortify is another security property, but it's out of scope for this article. I will leave learning how checksec verifies fortify in binaries and how it's enabled with `gcc` as an exercise for you to tackle. -``` - - -$ checksec --file=/bin/ls --output=json | jq  | grep -i forti -    "fortify_source": "yes", -    "fortified": "5", -    "fortify-able": "17" - -$ checksec --file=./hello --output=json | jq  | grep -i forti -    "fortify_source": "no", -    "fortified": "0", -    "fortify-able": "0" - -``` -## Other checksec features - -The topic of security is never-ending, and while it's not possible to cover everything here, I do want to mention a few more features of the `checksec` command that make it a pleasure to work with. - -### Run against multiple binaries - -You don't have to provide each binary to checksec individually. Instead, you can provide a directory path where multiple binaries reside, and checksec will verify all of them for you in one go: -``` -`$ checksec --dir=/usr \ No newline at end of file diff --git a/sources/tech/20210618 5 more reasons to run Kubernetes in your Linux homelab.md b/sources/tech/20210618 5 more reasons to run Kubernetes in your Linux homelab.md deleted file mode 100644 index dd5ec7ed2c..0000000000 --- a/sources/tech/20210618 5 more reasons to run Kubernetes in your Linux homelab.md +++ /dev/null @@ -1,100 +0,0 @@ -[#]: subject: (5 more reasons to run Kubernetes in your Linux homelab) -[#]: via: (https://opensource.com/article/21/6/kubernetes-linux-homelab) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -5 more reasons to run Kubernetes in your Linux homelab -====== -Kubernetes' advantages aren't just what it can do, they're also what -knowing it can do for you. -![Working from home at a laptop][1] - -In [5 reasons to run Kubernetes on your Raspberry Pi homelab][2], I explain why you might want to use Kubernetes at home. Those reasons are relatively arbitrary, and they mostly focus on outcomes. Aside from what Kubernetes can do, there are several other good reasons to look at Kubernetes as an important next step in your personal computing experience. - -### 1\. It's built on the foundation of Linux - -![T-shirt reading "Containers are Linux"][3] - -(Seth Kenlon, [CC BY-SA 4.0][4]) - -Kubernetes has a certain reputation. More accurately, it has several reputations. For some people, it's a mysterious technology with an unpronounceable name. To other people, it's a sheepdog helping them herd an over-abundance of containers. For others, it's a kind of operating system for the cloud, a useful interface to effective cloud development. And for most people, probably, it's back-end software they've never even heard of. As you might expect, it's all of these things and more. - -Not everyone interacts with Kubernetes the same way, but if you have an inclination toward systems administration, you'll find that Kubernetes is _just another Linux command_. - -I have a t-shirt that reads "Containers are Linux," which states what is, upon reflection, obvious. Container technology uses cgroups to run images of a minimal Linux operating system containing an application or set of applications. From start to finish, when you choose to run a container, you're choosing to run Linux. While Kubernetes commands run on many platforms, it's managing Linux containers, and when you interact with Kubernetes through a terminal, it's Linux business as usual: command, options, args, syntax. Running `kubeadm` or (on OKD or OpenShift) `oc` commands feels familiar because they work like any other Linux command you're used to running. What starts out seeming foreign feels natural in no time, and any Linux user interested in spending time in the terminal can find plenty of fun things to explore in Kubernetes. - -### 2\. Flexible - -Kubernetes used to be a little rigid. It supported, essentially, one container runtime—so stringently, in fact, that there's a hardcoded shim to this day to get around that legacy. Luckily, today Kubernetes has become flexible enough to allow for admins' many diverse needs. There's [Podman][5] and [CRI-O][6] available as container engines, both of which can integrate with [systemd][7]. (I meant what I said when I told you it was all Linux underneath.) You have choices of filesystems, cluster size and construction, monitoring tools, images, programming languages, and much more. Frankly, some people say there's _too much_ choice, which is usually when I suspect that after a few more years, it'll have just enough choice for me. - -### 3\. Personal development - -Containers are a fruitful business, and they have the habit of multiplying rapidly. That's by design. Containers are meant to scale, and they scale by spawning clones. Stick the containers into groups (call them _pods_), and automate how pod lifecycles are managed. That's all Kubernetes really is, and it's changing how servers can run. - -You might not need an infinitely scaleable collection of containers, and you may not need anything to help you manage the one or two containers you do run. However, if you're looking to profit from your ability to wrangle pods, then Kubernetes is exactly the tool you want. As more and more companies and organizations go global and embrace [digital transformation][8], Kubernetes is becoming a required skill in IT. If that's the path you're on, it's a good investment to learn it now and get familiar with common problems and their solutions. - -### 4\. Make containers make sense - -You may remember several years ago when open source projects started distributing their code as container images. For many, it was puzzling at the time. Not many admins really [understood what a container was][9], or where the boundaries of the imaginary container were, or how to get into the container, or why data couldn't live inside the container. - -Now, the IT world—including developers—is comfortable with the concept of containers. Delivery to containers just makes sense for a modern [CI/CD workflow][10]. For the sysadmin, though, the advantages of containers are twofold: installation is (theoretically) easier than waiting for a distro to update its packages, and containers scale. Yet it's very likely that neither of these benefits really manifests for you until you've used Kubernetes. Once you start managing containers with Kubernetes and related tools, the benefits of continuous delivery and the ability to scale are probably merely ideas you've read about. Integrate containers into how you manage your servers, and you suddenly understand what the excitement is all about. - -![Apache JMeter][11] - -(Seth Kenlon, [CC BY-SA 4.0][4]) - -The most basic of tests makes it pretty clear. Just spin up your favorite web server in a container, create a pod, then hit your server with traffic from [Apache JMeter][12], and watch containers respond. - -### 5\. Cloud-native - -If you do more development than systems administration, Kubernetes provides an excellent platform for what has easily become the biggest target of all: web apps. We all use web apps now, even though most people just think of them as "websites." The web has a hugely significant user base (to say the least), so it makes sense to provide open source applications through the browser. There are some great open source applications that run over a network, and many of those are delivered as containers to provide easy installation and a consistent user experience. - -### Bonus: It's fun - -Remember when you were still new to Linux? For some people, that might have been decades ago, and for others, it's still around the corner. For all of us, though, learning something new can be a fun challenge. If you've reached the point that Linux installs are more a bother than a challenge, you might want to try building a Kubernetes cluster in your broom closet. It will reintroduce you to all kinds of concepts you'd forgotten about. Hacking on plain-text ([YAML][13] specifically) configuration files, configuring network interfaces and networks, routing traffic, poring over the advantages and disadvantages of one backend over another, running `--dry-run` after `--dry-run` tests, tentatively pressing Return to find out whether you got everything right. Honestly, Kubernetes is just fun. - -If you want to build your own infrastructure, there's nothing quite like building your own Kubernetes cluster. A whole new world will open to you. You quickly become a cloud architect, perfecting your open cloud, installing amazing open source web applications in containers, and maybe even offering access to your family and friends. - -You become the solution. It's so very satisfying. - -### Explore Kubernetes - -Kubernetes might seem out of reach at first. It's new, a little scary, and worst yet, it apparently requires a cloud. However, there are a few ways to get started. - -First, install either [Minikube][14] or [Minishift][14]. Both of these allow you to run a local instance of Kubernetes on your personal computer. It's not quite as satisfying as building a cluster and opening it up to your friends, but it's a great, safe way to get familiar with the landscape, commands, and toolkit. - -Once you're ready for the real thing, read Chris Collins' article [Build a Kubernetes cluster with the Raspberry Pi][15]. After that, download our free ebook [Running Kubernetes on your Raspberry Pi homelab][16]. Before you know it, you'll find yourself wearing Kubernetes t-shirts, too. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/6/kubernetes-linux-homelab - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/wfh_work_home_laptop_work.png?itok=VFwToeMy (Working from home at a laptop) -[2]: https://opensource.com/article/20/8/kubernetes-raspberry-pi -[3]: https://opensource.com/sites/default/files/uploads/containers-are-linux.jpg (T-shirt reading "Containers are Linux") -[4]: https://creativecommons.org/licenses/by-sa/4.0/ -[5]: http://podman.io -[6]: http://cri-o.io -[7]: https://opensource.com/article/21/5/systemd -[8]: https://enterprisersproject.com/what-is-digital-transformation -[9]: https://opensource.com/article/18/11/behind-scenes-linux-containers -[10]: https://opensource.com/article/18/8/what-cicd -[11]: https://opensource.com/sites/default/files/uploads/jmeter.png (Apache JMeter) -[12]: https://jmeter.apache.org -[13]: https://www.redhat.com/sysadmin/yaml-beginners -[14]: https://opensource.com/article/18/10/getting-started-minikube -[15]: https://opensource.com/article/20/6/kubernetes-raspberry-pi -[16]: https://opensource.com/downloads/kubernetes-raspberry-pi diff --git a/sources/tech/20210623 Parsing config files with Lua.md b/sources/tech/20210623 Parsing config files with Lua.md deleted file mode 100644 index 50b47fa003..0000000000 --- a/sources/tech/20210623 Parsing config files with Lua.md +++ /dev/null @@ -1,231 +0,0 @@ -[#]: subject: (Parsing config files with Lua) -[#]: via: (https://opensource.com/article/21/6/parsing-config-files-lua) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Parsing config files with Lua -====== -Configure persistent application settings with the Lua programming -language. -![Woman sitting in front of her computer][1] - -Not all applications need configuration files; many applications benefit from starting fresh each time they are launched. Simple utilities, for instance, rarely require preferences or settings that persist across uses. However, when you write a complex application, it's nice for users to be able to configure how they interact with it and how it interacts with their system. That's what configuration files are for, and this article discusses some of the ways you can implement persistent settings with the Lua programming language. - -### Choose a format - -The important thing about configuration files is that they are consistent and predictable. You do not want to dump information into a file under the auspices of saving user preferences and then spend days writing code to reverse-engineer the random bits of information that have ended up in the file. - -There are several popular [formats for configuration files][2]. Lua has libraries for most of the common configuration formats; in this article, I'll use the INI format. - -### Installing the library - -The central hub for Lua libraries is [Luarocks.org][3]. You can search for libraries on the website, or you can install and use the `luarocks` terminal command. - -On Linux, you can install it from your distribution's software repository. For example: - - -``` -`$ sudo dnf install luarocks` -``` - -On macOS, use [MacPorts][4] or [Homebrew][5]. On Windows, use [Chocolatey][6]. - -Once `luarocks` is installed, you can use the `search` subcommand to search for an appropriate library. If you don't know the name of a library, you can search for a keyword, like `ini` or `xml` or `json`, depending on what's relevant to what you're trying to do. In this case, you can just search for `inifile`, which is the library I use to parse text files in the INI format: - - -``` -$ luarocks search inifile -Search results: -inifile - 1.0-2 (rockspec) - - 1.0-2 (src) - - 1.0-1 (rockspec) - - [...] -``` - -A common trap programmers fall into is installing a library on their system and forgetting to bundle it with their application. This can create problems for users who don't have the library installed. To avoid this, use the `--tree` option to install the library to a local folder within your project directory. If you don't have a project directory, create one first, and then install: - - -``` -$ mkdir demo -$ cd demo -$ luarocks install --tree=local inifile -``` - -The `--tree` option tells `luarocks` to create a new directory, called `local` in this case, and install your library into it. With this simple trick, you can install all the dependency code your project uses directly into the project directory. - -### Code setup - -First, create some INI data in a file called `myconfig.ini`: - - -``` -[example] -name=Tux -species=penguin -enabled=false - -[demo] -name=Beastie -species=demon -enabled=false -``` - -Save the file as `myconfig.ini` into your home directory, _not_ into your project directory. You usually want configuration files to exist outside your application so that even when a user uninstalls your application, the data they generate while using the application remains on their system. Users might remove unnecessary config files manually, but many don't. As a result, if they reinstall an application, it will retain all of their preferences. - -Config file locations are technically unimportant, but each operating system (OS) has a specification or a tradition of where they ought to be placed. On Linux, this is defined by the [Freedesktop specification][7]. It dictates that configuration files are to be saved in a hidden folder named `~/.config`. For clarity during this exercise, just save the file in your home directory so that it's easy to find and use. - -Create a second file named `main.lua` and open it in your favorite text editor. - -First, you must tell Lua where you've placed the additional library you want it to use. The `package.path` variable determines where Lua looks for libraries. You can view Lua's default package path in a terminal: - - -``` -$ Lua -> print(package.path) -./?.lua;/usr/share/lua/5.3/?.lua;/usr/share/lua/5.3/?/init.lua;/usr/lib64/lua/5.3/?.lua;/usr/lib64/lua/5.3/?/init.lua -``` - -In your Lua code, append your local library location to `package.path`: - - -``` -`package.path = package.path .. ';local/share/lua/5.3/?.lua` -``` - -### Parsing INI files with Lua - -With the package location established, the next thing to do is to require the `inifile` library and then handle some OS logistics. Even though this is a simple example application, the code needs to get the user's home directory location from the OS and establish how to communicate filesystem paths back to the OS when necessary: - - -``` -package.path = package.path .. ';local/share/lua/5.3/?.lua -inifile = require('inifile') - -\-- find home directory -home = os.getenv('HOME') - -\-- detect path separator -\-- returns '/' for Linux and Mac -\-- and '\' for Windows -d = package.config:sub(1,1) -``` - -Now you can use `inifile` to parse data from the config file into a Lua table. Once the data has been placed into a table, you can query the table as you would any other Lua table: - - -``` -\-- parse the INI file and -\-- put values into a table called conf -conf = inifile.parse(home .. d .. 'myconfig.ini') - -\-- print the data for review -print(conf['example']['name']) -print(conf['example']['species']) -print(conf['example']['enabled']) -``` - -Run the code in a terminal to see the results: - - -``` -$ lua ./main.lua -Tux -penguin -false -``` - -That looks correct. Try doing the same for the `demo` block. - -### Saving data in the INI format - -Not all parser libraries read and write data (often called _encoding_ and _decoding_), but the `inifile` library does. That means you can use it to make changes to a configuration file. - -To change a value in a configuration file, you set the variable representing the value in the parsed table, and then you write the table back to the configuration file: - - -``` -\-- set enabled to true -conf['example']['enabled'] = true -conf['demo']['enabled'] = true - -\-- save the change -inifile.save(home .. d .. 'myconfig.ini', conf) -``` - -Take a look at the configuration file now: - - -``` -$ cat ~/myconfig.ini -[example] -name=Tux -species=penguin -enabled=true - -[demo] -name=Beastie -species=demon -enabled=true -``` - -### Config files - -The ability to save data about how a user wants to use an application is an important part of programming. Fortunately, it's a common task for programmers, so much of the work has probably already been done. Find a good library for encoding and decoding into an open format, and you can provide a persistent and consistent user experience. - -Here's the entire demo code for reference: - - -``` -package.path = package.path .. ';local/share/lua/5.3/?.lua' -inifile = require('inifile') - -\-- find home directory -home = os.[getenv][8]('HOME') - -\-- detect path separator -\-- returns '/' for Linux and Mac -\-- and '\' for Windows -d = package.config:sub(1,1) - -\-- parse the INI file and -\-- put values into a table called conf -conf = inifile.parse(home .. d .. 'myconfig.ini') - -\-- print the data for review -print(conf['example']['name']) -print(conf['example']['species']) -print(conf['example']['enabled']) - -\-- enable Tux -conf['example']['enabled'] = true - -\-- save the change -inifile.save(home .. d .. 'myconfig.ini', conf) -``` - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/6/parsing-config-files-lua - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_women_computing_2.png?itok=JPlR5aCA (Woman sitting in front of her computer) -[2]: https://opensource.com/article/21/6/config-files-and-their-formats -[3]: https://opensource.com/article/19/11/getting-started-luarocks -[4]: https://opensource.com/article/20/11/macports -[5]: https://opensource.com/article/20/6/homebrew-mac -[6]: https://opensource.com/article/20/3/chocolatey -[7]: https://www.freedesktop.org/wiki/Specifications -[8]: http://www.opengroup.org/onlinepubs/009695399/functions/getenv.html diff --git a/sources/tech/20210629 Try Linux on any operating system with VirtualBox.md b/sources/tech/20210629 Try Linux on any operating system with VirtualBox.md deleted file mode 100644 index ccf231735e..0000000000 --- a/sources/tech/20210629 Try Linux on any operating system with VirtualBox.md +++ /dev/null @@ -1,325 +0,0 @@ -[#]: subject: (Try Linux on any operating system with VirtualBox) -[#]: via: (https://opensource.com/article/21/6/try-linux-virtualbox) -[#]: author: (Stephan Avenwedde https://opensource.com/users/hansic99) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Try Linux on any operating system with VirtualBox -====== -VirtualBox helps anyone—even a command line novice—set up a virtual -machine. -![Person programming on a laptop on a building][1] - -VirtualBox makes it easy for anyone to try Linux. You don't even need experience with the command line to set up a simple virtual machine to tinker with Linux. I'm kind of a power user when it comes to virtual machines, but this article will show even novices how to virtualize a Linux system. In addition, it provides an overview of how to run and install a Linux system for testing purposes with the open source hypervisor [VirtualBox][2]. - -### Terms - -Before starting, you should understand the difference between the two operating systems (OSes) in this setup: - - * **Host system:** This is your actual OS on which you install VirtualBox. - * **Guest system:** This is the system you want to run virtualized on top of your host system. - - - -Both systems, host and guest, must interact with each other when it comes to input/output, networking, file access, clipboard, audio, and video. - -In this tutorial, I'll use Windows 10 as the _host system_ and [Fedora 33][3] as the _guest system_. - -### Prerequisites - -When we talk about virtualization, we actually mean [hardware-assisted virtualization][4]. Hardware-assisted virtualization requires a compatible CPU. Almost every ordinary x86 CPU from the last decade comes which this feature. AMD calls it **AMD-V,** and Intel calls it **VT-x**. The virtualization feature adds some additional CPU instructions, and it can be enabled or disabled in the BIOS. - -To start with virtualization: - - * Make sure that AMD-V or VT-x is enabled in the BIOS. - * Download and install [VirtualBox][5]. - - - -### Prepare the virtual machine - -Download the image of the Linux distribution you want to try out. It does not matter if it's a 32-bit or 64-bit OS image. You can even start a 64-bit OS image on a 32-bit host system (with limitations in memory usage, of course) and vice versa. - -> **Considerations:** If possible, choose a Linux distribution that comes with the [Logical Volume Manager][6] (LVM). LVM decouples the filesystem from the physical hard drives. This allows you to increase the size of your guest system's hard drive if you are running out of space. - -Now, open VirtualBox and click on the yellow **New** button: - -![VirtualBox New VM][7] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -Next, configure how much memory the guest OS is allowed to use: - -![Set VM memory size][9] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -My recommendation: **Don't skimp on memory!** When memory is low, the guest system will start paging memory from RAM to the hard drive, worsening the system's performance and responsiveness extremely. If the underlying host system starts paging, you might not notice. For a Linux workstation system with a graphical desktop environment, I recommend at least 4GB of memory. - -Next, create the hard disk: - -![Create virtual hard disk][10] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -Choose the default option, **VDI**: - -![Selecting hard disk file type][11] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -In this window, I recommend choosing **dynamically allocated**, as this allows you to increase the size later. If you choose **fixed size**, the disk will be probably faster, but you won't be able to modify it: - -![Dynamically allocating hard disk][12] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -With a Linux distribution that uses LVM, you can start with a small hard disk. If you are running out of space, you can increase it on demand. - -> **Note**: Fedora's website says [it requires][13] a minimum of 20GB free disk space. I highly recommend you stick to that specification. I chose 8GB here so that I can demonstrate how to increase it later. If you are new to Linux or inexperienced with the command line, choose 20GB. - -![Setting hard disk size][14] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -After creating the hard drive, select the newly created virtual machine from the list in VirtualBox's main window and click on **Settings**. In the Settings menu, go to **System** and select the **Processor** tab. By default, VirtualBox assigns only one CPU core to the guest system. On a modern multicore CPU, it should not be any problem to assign at least two cores, which will speed up the guest system significantly: - -![Assigning cores to guest system][15] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -#### Network adapter setup - -The next thing to take care of is the network setup. By default, VirtualBox creates one NAT connection, which should be OK for most use cases: - -![Network settings][16] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -You can create more than one network adapter. Here are the most common types: - - * **NAT:** The NAT adapter performs a [network address translation][17]. From the outside, it looks like the host and the guest system use the same IP address. You are not able to access the guest system from within the host system over the network. (Although you could define [port forwarding][18] to access certain services.) When your host system has access to the internet, the guest system will have access, too. NAT requires no further configuration. - * _Choose **NAT** if you only need internet access for the guest system._ - * **Bridged adapter:** Here, the guest and the host system share the same physical Ethernet device. Both systems will have independent IP addresses. From the outside, it looks like there are two separate systems in the network, both sharing the same physical Ethernet adapter. This setup is more flexible but requires more configuration. - * _Choose **Bridged adapter** if you want to share the guest system's network services._ - * **Host-only adapter:** In this configuration, the guest system can only talk to the host or other guest systems running on the same host. The host system can also connect to the guest system. There is no internet nor physical network access for the guest. - * _Choose **Host-only adapter** for advanced security._ - - - -#### Assign the OS image - -Navigate to **Storage** and select the virtual optical drive. Click on the **CD icon** on the right, and select **Choose a disk file…**. Then assign the downloaded Linux distribution image you want to install: - -![Assigning OS image][19] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -### Install Linux - -The virtual machine is now configured. Leave the **Settings** menu and go back to the main window. Click on the **Green arrow** (i.e., the start button). The virtual machine will start up and boot from the virtual optical drive, and you will find yourself in your Linux distribution's installer: - -![VirtualBox Fedora installer][20] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -#### Partitioning - -The installer will ask you for partitioning information during the installation process. Choose **Custom**: - -![Selecting Custom partition configuration][21] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -> **Note:** I'm assuming you're creating this virtual machine just for testing purposes. Also you don't need to care about hibernation for your guest system, as this function is implicitly provided by VirtualBox. Therefore, you can omit the swap partition to save disk space on your host system. Keep in mind that you can add a swap partition later if needed. In [_An introduction to swap space on Linux systems_][22], David Both explains how to add a swap partition and choose the correct size. - -Fedora 33 and later offer a [zram][23] partition, a compressed part of the memory used for paging and swap. The zram partition is resized on demand, and it is much faster than a hard disk swap partition. - -To keep it simple, just add these two mount points: - -![Adding mount points][24] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -Apply the changes and proceed with the installation. - -### Install VirtualBox Guest Additions - -After you finish the installation, boot from the hard drive and log in. Now you can install VirtualBox Guest Additions, which include special device drivers and system applications that provide: - - * Shared clipboard - * Shared folders - * Better performance - * Freely scalable window size - - - -To install them, click on the top menu in **Devices** and select **Insert Guest Additions CD image…**: - -![Selecting Guest Additions CD image][25] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -On most Linux distributions, the CD image with the Guest Additions is mounted automatically, and they are available in the file browser. Fedora will ask you if you want to run the installation script. Click **Run** and enter your credentials to grant the process root rights: - -![Enabling Guest Additions autorun][26] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -When the installation is finished, reboot the system. - -### LVM: Enlarge disk space - -Creating an 8GB hard disk was a dumb decision, as Fedora quickly starts signaling that it is running out of space: - -![Fedora hard disk running out of space][27] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -As I mentioned, a disk space of 20GB is recommended, and 8GB is the _absolute_ minimum for a Fedora 33 installation to boot up. A fresh installation with no additional software (except the VirtualBox Guest Additions) takes nearly the whole 8GB of available space. Don't open the GNOME Software center or anything else that might download files from the internet in this condition. - -Luckily, I chose to use LVM, so I can easily fix this mishap. - -To increase the filesystem's space within the virtual machine, you must first increase the virtual hard drive on your host system. - -Shut down the virtual machine. If your host system is running Windows, open a command prompt and navigate to `C:\Program Files\Oracle\VirtualBox`. Resize the disk to 12,000MB with the following command: - - -``` -`VBoxManage.exe modifyhd "C:\Users\StephanA\VirtualBox VMs\Fedora_33\Fedora_33.vdi" --resize 12000` -``` - -Boot the virtual machine and open the **Disks** utility. You should see the newly created unassigned free space. Select **Free Space** and click the **+** button: - -![Free space before adding][28] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -Now, create a new partition. Select the amount of free space you want to use: - -![Creating a new partition and setting size][29] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -You don't want to create a filesystem or anything else on your new partition, so select **Other**: - -![Selecting "other" for partition volume type][30] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -Select **No Filesystem**: - -![Setting "No filesystem" on new partition][31] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -The overview should now look like this: - -![VirtualBox after adding new partition][32] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -There is a new partition device, **/dev/sda3**. Check your LVM volume group by typing `vgscan`: - -![Checking LVM volume group by typing vgscan:][33] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -Now you have everything you need. Extend the volume group in the new partition: - - -``` -`vgextend fedora_localhost-live /dev/sda3` -``` - -![vgextend command output][34] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -Because the volume group is larger, you can increase the size of the logical volume. The command `vgdisplay` shows that it has 951 free extends available: - -![vgdisplay command output][35] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -Increase the logical volume by 951 extends: - - -``` -`lvextend -l+951 /dev/mapper/fedora_localhost--live-root` -``` - -![lvextend command output][36] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -After you increase the logical volume, the last thing to do is to resize the filesystem: - - -``` -`resize2fs /dev/mapper/fedora_localhost--live-root` -``` - -![resize2fs command output][37] - -(Stephan Avenwedde, [CC BY-SA 4.0][8]) - -Done! Check the **Disk Usage Analyzer**, and you should see that the extended space is available for the filesystem. - -### Summary - -With a virtual machine, you can check how a piece of software behaves with a specific operating system or a specific version of an operating system. Besides that, you can also try out any Linux distribution you want to test without worrying about breaking your system. For advanced users, VirtualBox offers a wide range of possibilities when it comes to testing, networking, and simulation. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/6/try-linux-virtualbox - -作者:[Stephan Avenwedde][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/hansic99 -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_code_programming_laptop.jpg?itok=ormv35tV (Person programming on a laptop on a building) -[2]: https://www.virtualbox.org/ -[3]: https://getfedora.org/ -[4]: https://en.wikipedia.org/wiki/Hardware-assisted_virtualization -[5]: https://www.virtualbox.org/wiki/Downloads -[6]: https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux) -[7]: https://opensource.com/sites/default/files/uploads/virtualbox_new_vm.png (VirtualBox New VM) -[8]: https://creativecommons.org/licenses/by-sa/4.0/ -[9]: https://opensource.com/sites/default/files/uploads/virtualbox_memory_size_1.png (Set VM memory size) -[10]: https://opensource.com/sites/default/files/uploads/virtualbox_create_hd_1.png (Create virtual hard disk) -[11]: https://opensource.com/sites/default/files/uploads/virtualbox_create_hd_2.png (Selecting hard disk file type) -[12]: https://opensource.com/sites/default/files/uploads/virtualbox_create_hd_3.png (Dynamically allocating hard disk) -[13]: https://getfedora.org/en/workstation/download/ -[14]: https://opensource.com/sites/default/files/uploads/virtualbox_create_hd_4.png (Setting hard disk size) -[15]: https://opensource.com/sites/default/files/uploads/virtualbox_cpu_settings.png (Assigning cores to guest system) -[16]: https://opensource.com/sites/default/files/uploads/virtualbox_network_settings2.png (Network settings) -[17]: https://en.wikipedia.org/wiki/Network_address_translation -[18]: https://www.virtualbox.org/manual/ch06.html#natforward -[19]: https://opensource.com/sites/default/files/uploads/virtualbox_choose_image3.png (Assigning OS image) -[20]: https://opensource.com/sites/default/files/uploads/virtualbox_running.png (VirtualBox Fedora installer) -[21]: https://opensource.com/sites/default/files/uploads/virtualbox_partitioning_1.png (Selecting Custom partition configuration) -[22]: https://opensource.com/article/18/9/swap-space-linux-systems -[23]: https://fedoraproject.org/wiki/Changes/SwapOnZRAM -[24]: https://opensource.com/sites/default/files/uploads/virtualbox_partitioning_2.png (Adding mount points) -[25]: https://opensource.com/sites/default/files/uploads/virtualbox_guest_additions_2.png (Selecting Guest Additions CD image) -[26]: https://opensource.com/sites/default/files/uploads/virtualbox_guest_additions_autorun.png (Enabling Guest Additions autorun) -[27]: https://opensource.com/sites/default/files/uploads/virtualbox_disk_usage_1.png (Fedora hard disk running out of space) -[28]: https://opensource.com/sites/default/files/uploads/virtualbox_disks_before.png (Free space before adding) -[29]: https://opensource.com/sites/default/files/uploads/virtualbox_new_partition_1.png (Creating a new partition and setting size) -[30]: https://opensource.com/sites/default/files/uploads/virtualbox_new_partition_2.png (Selecting "other" for partition volume type) -[31]: https://opensource.com/sites/default/files/uploads/virtualbox_no_partition_3.png (Setting "No filesystem" on new partition) -[32]: https://opensource.com/sites/default/files/uploads/virtualbox_disk_after.png (VirtualBox after adding new partition) -[33]: https://opensource.com/sites/default/files/uploads/virtualbox_vgscan.png (Checking LVM volume group by typing vgscan:) -[34]: https://opensource.com/sites/default/files/uploads/virtualbox_vgextend_2.png (vgextend command output) -[35]: https://opensource.com/sites/default/files/uploads/virtualbox_vgdisplay.png (vgdisplay command output) -[36]: https://opensource.com/sites/default/files/uploads/virtualbox_lvextend.png (lvextend command output) -[37]: https://opensource.com/sites/default/files/uploads/virtualbox_resizefs.png (resize2fs command output) diff --git a/sources/tech/20210709 What you need to know about security policies.md b/sources/tech/20210709 What you need to know about security policies.md index 2e94785530..12289bea9b 100644 --- a/sources/tech/20210709 What you need to know about security policies.md +++ b/sources/tech/20210709 What you need to know about security policies.md @@ -2,7 +2,7 @@ [#]: via: (https://opensource.com/article/21/7/what-security-policy) [#]: author: (Chris Collins https://opensource.com/users/clcollins) [#]: collector: (lujun9972) -[#]: translator: (FelixYFZ ) +[#]: translator: ( ) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) diff --git a/sources/tech/20210805 Installing Packages From External Repositories in Ubuntu -Explained.md b/sources/tech/20210805 Installing Packages From External Repositories in Ubuntu -Explained.md deleted file mode 100644 index 8cd2bba801..0000000000 --- a/sources/tech/20210805 Installing Packages From External Repositories in Ubuntu -Explained.md +++ /dev/null @@ -1,189 +0,0 @@ -[#]: subject: "Installing Packages From External Repositories in Ubuntu [Explained]" -[#]: via: "https://itsfoss.com/adding-external-repositories-ubuntu/" -[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Installing Packages From External Repositories in Ubuntu [Explained] -====== - -You have some ideas about installing packages in Ubuntu with apt command. Those packages come from Ubuntu’s repositories. - -How about third-party or external repository? No, I am not talking about PPA here. - -Sooner or later, you’ll come across installation instructions that goes in at least four lines. You install something called ‘apt-transport-https’ and then do something with gpg and sources list. After that, you install the package. - -Can’t recall completely. Let me share an example for [installing the latest version Yarn on Ubuntu][1]: - -``` -sudo apt install apt-transport-https curl -curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - -sudo sh -c 'echo "deb https://dl.yarnpkg.com/debian/ stable main" >> /etc/apt/sources.list.d/yarn.list' -sudo apt update && sudo apt install yarn -``` - -You’ll often come across such installation method while installing programming tools directly from the developers. - -Many people just follow the instructions without thinking twice about what’s going on here. Nothing wrong with that but knowing the process actually improves your knowledge on the matter and could also help in troubleshooting. - -Let me explain the logic behind those lines. - -### Understanding the procedure of installation from external repositories - -Before you proceed, I highly recommend reading these two articles so that things are a bit more clear to you: - - * [Concept of repositories in Ubuntu][2] - * [Concept of PPA in Ubuntu][3] - - - -To recall quickly, here’s a visual representation of repositories and [package manager in Linux][4]. - -![Illustration of repository and package manager][5] - -The entire idea here is that you add a new, external repository to your system. This way, you’ll be able to download and install packages available from this new repository. If the repository provides an update on the package version, you get to update the installed package along with the system updates (apt update && apt upgrade). - -So, how does this work? Let’s go through the lines one by one. - -#### Part 1: Getting HTTPS support for apt - -The first line is this: - -``` -sudo apt install apt-transport-https curl -``` - -Curl is a [tool for downloading files in Linux terminal][6]. The main part here is the installation of **apt-transport-https** and frankly speaking not needed anymore. - -Confused? This apt-transport-https package allows your system to access repositories over the secure HTTPS protocol. By design, Ubuntu repositories use http, not https. - -Take a look at the screenshot below. The https ones are the external repositories I have added into my system. Ubuntu repositories and PPA use http. - -![][7] - -In the older version of apt package manager, https support was not included. apt-transport-https package adds https support to apt. To add a repository that uses https, this package is installed first. - -Did I not say it is not needed anymore? Yes because the newer versions of apt (higher than 1.5) support https and thus you do not need to install apt-transport-https anymore. - -And yet you see this package mentioned in the instructions. This is more for legacy reasons or for really old distribution versions that might be using an older version of apt. - -Now, you may wonder why Ubuntu repositories use http, not https when https is the secure protocol. Is it not a security risk? The next segment will answer that question. - -#### Part 2: Adding GPG key of the remote repository - -Linux repositories have this built-in GPG-key based security mechanism. Every repository added its public GPG key to your system’s trusted keys. The packages from the repositories are ‘signed’ by this GPG key and thanks to the stored public key, your system verifies that the package is coming from the repository. - -If there is a [mismatch between the keys, your system will throw an error][8] instead of installing or updating packages from the said repository. - -So far, so good. The next step is to add the public GPG key of the external repository to your Linux system so that it trusts the package from this repository. - -``` -curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - -``` - -In the above command, you download the GPG key from the given URL using curl. The option `sS` ensures that you don’t see the flooded output (silent mode) but shows the error (if any). The last `-` tells apt-key to take stdin instead of a file (which is the output of the curl command in this case). - -The download key is added to the system with `apt-key add` command. - -You can see the GPG keys added by various repositories in your system using the `apt-key list` command. - -![List GPG keys][9] - -That’s one way of adding the GPG key to the system. You’ll some other commands that my look slightly different but do the same job of adding the public key of the repository to your system. - -``` -sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 -``` - -You’ll notice a warning that apt-key is deprecated. You could still use apt-key command till Ubuntu 22.04 but it will eventually be removed. Let’s not worry about it at the moment. - -#### Part 3: Adding the external repository to your sources list - -The next command adds a new entry into the sources list of your system. This way, your system will know that it has to check this repository for packages and updates. - -``` -sudo sh -c 'echo "deb https://dl.yarnpkg.com/debian/ stable main" >> /etc/apt/sources.list.d/yarn.list' -``` - -There is a file /etc/apt/sources.list that contains the details of the Ubuntu repositories. This file should not be touched. All the additional repositories should be placed in their own respective file (ending with .list convention) in the /etc/apt/sources.list.d directory. - -![External repository should have their own sources list file in the /etc/apt/sources.list.d directory][10] - -This makes package management easier. If you are removing a repository from the system, you just need to delete the corresponding sources file. No need to mess with the main sources.list file. - -Let’s look at the command in a bit more detail. - -``` -sudo sh -c 'echo "deb https://dl.yarnpkg.com/debian/ stable main" >> /etc/apt/sources.list.d/yarn.list' -``` - -With sh, you are asking to run the command in a new shell, instead of the [subshell][11]. `-c` option tells the sh command to read the commands from the operand instead of standard input. Then it runs the echo command which basically adds line **deb stable main** to /etc/apt/sources.list.d/yarn.list file (file will be created) - -Now, there could be numerous ways you can create a .list file in the specified directory and add the line with repository details in it. You could use it like this as well: - -``` -echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list -``` - -You get the gist, right? - -#### Part 4: Installing the application from newly added repository - -So far, you have added the GPG key of the repository and the URL of the repository to the system. - -But your system still does not know about the package available from this new repository. This is why you need to update the local cache of package metadata first with this command: - -``` -sudo apt update -``` - -Your system will have the information about the packages available from the newly added repository and you can install the package now: - -``` -sudo apt install yarn -``` - -To save time, you can [run the two commands one after another in a single lin][12]e. - -``` -sudo apt update && sudo apt install yarn -``` - -The `&&` ensures that the second command only runs when the previous command completed without any error. - -And thus the process completes. - -### Did it make things clear or confused you even more? - -I explained the logic behind the steps for using external repositories in Ubuntu. I hope you have a better understanding of the topic now, but it is also possible that too much detail could be confusing. - -If things are still not clear or if you have additional questions, please let me know. If you notice technical inaccuracies, please let me know in the comment section. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/adding-external-repositories-ubuntu/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/install-yarn-ubuntu/ -[2]: https://itsfoss.com/ubuntu-repositories/ -[3]: https://itsfoss.com/ppa-guide/#comments -[4]: https://itsfoss.com/package-manager/ -[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/10/linux-package-manager-explanation.png?resize=800%2C450&ssl=1 -[6]: https://itsfoss.com/download-files-from-linux-terminal/ -[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/08/apt-update-http-https.png?resize=800%2C527&ssl=1 -[8]: https://itsfoss.com/solve-gpg-error-signatures-verified-ubuntu/ -[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/07/list-apt-key-gpg-ubuntu.png?resize=800%2C547&ssl=1 -[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/08/sources-list-ubuntu.png?resize=800%2C313&ssl=1 -[11]: https://linuxhandbook.com/subshell/ -[12]: https://itsfoss.com/run-multiple-commands-linux/ diff --git a/sources/tech/20210811 My top 5 tips for setting up Terraform.md b/sources/tech/20210811 My top 5 tips for setting up Terraform.md deleted file mode 100644 index 143727fb09..0000000000 --- a/sources/tech/20210811 My top 5 tips for setting up Terraform.md +++ /dev/null @@ -1,75 +0,0 @@ -[#]: subject: "My top 5 tips for setting up Terraform" -[#]: via: "https://opensource.com/article/21/8/terraform-tips" -[#]: author: "Ayush Sharma https://opensource.com/users/ayushsharma" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -My top 5 tips for setting up Terraform -====== -These are the lessons I've learned after five years with Terraform. -![Puzzle pieces coming together to form a computer screen][1] - -Working with Terraform for over five years has taught me some key lessons. Five practices have been critical to having a logical and usable Terraform setup regardless of the size of the team or the nature of the project. - -### 1\. Know your target audience. - -This one might seem obvious, but I've seen it go wrong several times. When organizing Terraform code, either standardizing the directory structure or defining naming conventions, it's vital to consider the intended audience. Will your team be using these Terraform scripts and modules? Are you handing the work over to another team? Will new people be joining your team sooner or later? Are you working on this project solo? Will you be using this setup in six months or a year, or will it be assigned to someone else? - -Questions like these affect several decisions. Ideally, you should have [Remote State][2] and [State Locking][3] in place regardless of the team size now or in the future. Remote State will ensure your laptop is not the only place your Terraform works, and State Locking will ensure that only one person at a time is changing the infrastructure. - -The naming convention should make sense to the eventual owners of the project, not just the team that is writing the code. If the project is for another team, make sure they have a say in the naming convention. If non-technical stakeholders or internal security/GCR teams review the code, make sure they check the naming convention. In addition to resource names, you should leverage resource tags to highlight any data classification/privacy requirements (high, medium, low) for more careful examination by reviewers. - -### 2\. Reuse. Reuse. Reuse. - -The [Terraform Registry][4] provides a library of ready-to-use modules for the most common use-cases. I've written about the extensive parameterization available in the VPC module and security groups. Simply calling modules with different parameters is enough to handle most, if not all, potential use cases. Reuse these shared modules as much as possible to avoid endless typing, testing, checking, fixing, and refactoring. - -I've also found that separating modules and resources based on the frequency of use or change is beneficial. For example, infrastructure scaffolding used only once belongs together, such as setting up the VPC, security groups, routing tables, VPC endpoints, and so on. But things like private hosted zone entries, autoscaling groups, target groups, load balancers, etc., might change with every deployment, so separating these from the one-time scaffolding will make code reviews easier and debugging faster. - -### 3\. Be explicit rather than implicit. - -There are common patterns to Terraform code that I have seen lead to incorrect assumptions baked into the design. Teams can assume that the Terraform version used to write the code today will never change, or the external modules won't change, or the providers they are using won't change. These lead to invisible issues a few weeks down the road when these external dependencies inevitably get updated. - -Ensure you explicitly define versions everywhere possible: In the main Terraform block, in the provider block, in the module block, etc. Defining versions ensures that your dependent libraries stay frozen so that you can explicitly update dependencies when required after thorough discussions, reviews, and testing. - -### 4\. Automate everywhere. Your laptop. Your shared VM. Your CI/CD. - -Leveraging automation at every stage of the deployment process can avoid future problems before they even arise. - -Use [Git pre-commit hooks][5] to run `terraform fmt` and `terraform validate` before you commit your code. Pre-commit hooks ensure that code is, at a bare minimum, adequately formatted and syntactically correct. Check-in this pre-commit file to the repo, and everyone on your team can benefit from the same automation. This small but vital quality control at the first step of the process can achieve substantial time savings as your project progresses. - -All modern deployment tools have CI processes. You can use these to run SAST and unit testing tools when pushing your code to origin. I've written on my blog about how [Checkov can test Terraform code for security and compliance and create custom checks][6] for organization-specific conventions. Add these unit testing tools to your CI pipeline to improve code quality and robustness. - -### 5\. Have an awesome README.md. - -We all like to think that Terraform code is self-documenting. Sure it is, but only if your future team already knows your company's naming conventions and guidelines and secret handshakes and inside jokes and whatever else your repo contains besides valid Terraform code. Getting into the habit of having a good `README.md` can be a huge time saver, and it keeps your team honest by holding them accountable for everything explicitly committed to in the README. - -At a minimum, your README should contain the steps to initialize the right Terraform environment on your workstations (Linux, Windows, Mac, and so on), including the Terraform version to install. It should specify the required dependencies (Checkov, TerraGrunt, and others) with versions and any handy Linux aliases your team uses (some people like to define `tff` as a short-hand for `terraform fmt`). Most importantly, the branching and PR review strategy and process, naming conventions, and resource tagging standards should be specified. - -The README should pass a simple test: if a new member joins your team tomorrow, is the README enough to teach them what to do and how to do it correctly? If not, you may find yourself hosting never-ending standards and process meetings repeatedly for the next few months. - -### Wrap up - -After many years of working with Terraform, these are my five best bits of wisdom to pass along. Feel free to share your own best practices below. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/8/terraform-tips - -作者:[Ayush Sharma][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ayushsharma -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/puzzle_computer_solve_fix_tool.png?itok=U0pH1uwj (Puzzle pieces coming together to form a computer screen) -[2]: https://www.terraform.io/docs/language/state/index.html -[3]: https://www.terraform.io/docs/language/state/locking.html -[4]: https://registry.terraform.io/ -[5]: https://opensource.com/life/16/8/how-construct-your-own-git-server-part-6 -[6]: https://notes.ayushsharma.in/2021/07/cloud-infrastructure-sast-terraform-checkov diff --git a/sources/tech/20210917 Open source game achievements.md b/sources/tech/20210917 Open source game achievements.md deleted file mode 100644 index 663e6387a2..0000000000 --- a/sources/tech/20210917 Open source game achievements.md +++ /dev/null @@ -1,82 +0,0 @@ -[#]: subject: "Open source game achievements" -[#]: via: "https://fedoramagazine.org/open-source-game-achievements/" -[#]: author: "Dennis Payne https://fedoramagazine.org/author/dulsi/" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Open source game achievements -====== - -![][1] - -Photo by [Michał Parzuchowski][2] on [Unsplash][3] - -Learn how Gamerzilla brings an achievement system to open source games and enables all developers to implement achievements separate from the game platform. - -Some open source games rival the quality of commercial games. While it is hard to match the quality of triple-a games, open source games compete effectively against the indie games. But, gamer expectations change over time. Early games included a high score. Achievements expanded over time to promote replay. For example, you may have completed a level but you didn’t find all the secrets or collect all the coins. The Xbox 360 introduced the first multi-game online achievement system. Since that introduction, many game platforms added an achievement system. - -Open source games are largely left out of the achievement systems. You can publish an open source game on Steam, but it costs money and they focus on working with companies not the free software community. Additionally, this locks players into a non-free platform. - -Commercial game developers are not well served either, since some players enjoy achievements and refuse to purchase from other stores due to the inability to share their accomplishments. This lock-in gives the power to the platform holder. Each platform has a different system forcing the developer to implement support and testing multiple times. Smaller platform are likely to be skipped entirely. Furthermore, the platform holder has access to the achievement data on all companies using their system which could be used for competitive advantage. - -### Architecture of Gamerzilla - -[Gamerzilla][4] is an open source game achievement system which attempts to correct this situation. The design considered both open source and commercial games. You can run your own Gamerzilla server, use one provided by a game store, or even distributions, or other groups could run them. Where you buy the game doesn’t matter. The achievement data uploads to your Gamerzilla server. - -Game achievements require two things, a game, and a Gamerzilla server. As game collections grow, however, that setup has a disadvantage. Each game needs to have credentials to upload to the Gamerzilla server. Many gamers turn to game launchers due to their large number of games and ability to synchronize with one or more stores. By adding Gamerzilla support to the launcher, the individual games no longer need to know your credentials. Session results will relay from the game launcher to the Gamerzilla server. - -At one time, freegamedev.net provided the Hubzilla social networking system. We created an addon allowing us to jump start Gamerzilla development. Unfortunately server upgrades broke the service so freegamedev.net stopped offering it. - -For Gamerzilla servers, two implementations exist. Maintaining Hubzilla is a complex task, so we developed a standalone Gamerzilla service using *.*Net and React. The API used by games remains the same so it doesn’t matter which implementation you connect to. - -Game launchers development and support often lags. To facilitate adding support, we created libgamerzilla. The library handles all the interaction between the game launcher, games, and the Gamerzilla server. Right now only _GameHub_ has an implementation with Gamerzilla support and merging into the project is pending. On Fedora Linux, libgamerzilla-server package serves as a temporary solution. It does not launch games but listens for achievements and relays them to your server. - -Game support continues growing. As with game launchers, developers use libgamerzilla to handle the Gamerzilla integration. The library, written in C, is in use in a variety of languages like Python and nim. Games which already have an achievement system typically take only a few days to add support. For other games ,collecting all the information to award the achievements occupies the bulk of the implementation time. - -### Setting up a server - -The easiest server to setup is the Hubzilla addon. That, however, requires a working Hubzilla site which is not the simplest thing to setup. The new .Net and React server can be setup relatively easily on Fedora Linux, although there are a lot of steps. The [readme][5] details all the steps. The long set of steps is, in part, due to the lack of a built release. This means you need to build the .Net and the React code. Once built, React code serves up directly in Apache. A new service runs the .Net piece. Apache proxies all requests to the Gamerzilla API for the new service. - -With the setup steps done, Gamerzilla runs but there are no users. There needs to be an easy way to create an administrator and register new users. Unfortunately this piece does not exist yet. At this time, users must be entered directly using the sqlite3 command line tool. The instructions are in the [readme][5]. Users can be publicly visible or not. The approval flag allows new users to not use the system immediately but web registration still needs to be implemented The user piece is designed with replacement in mind. It would not be hard to replace backend/Service/UserService.cs to integrate with an existing site. Gaming web sites could use this to offer Gamerzilla achievements to their users. - -Currently the backend uses a sqlite database. No performance testing has been done. We expect that larger installations may need to modify the system to use a more robust database system. - -### Testing the system - -There is no game launcher easily available at the moment. If you install libgamerzilla-server, you will have the command _gamerzillaserver_ available from the command line. The first time you run it, you enter your url and login information. Subsequent executions will simply read the information from the configuration file. There is currently no way to correct a mistake except deleting the file at _.local/share/ga_merzillaserver/server.cfg and running _gamerzillaserver_ again. - -Most games have no built releases with Gamerzilla support. [Pinball Disc Room on itch.io][6] does have support built in the Linux version. The web version has no achievements There are only two achievements in the game, one for surviving for ten seconds and the other for unlocking and using the tunnel. With a little practice you can get an achievement. You need to check your Gamerzila server as the game provides no visual notification of the achievement. - -Currently no game packaged in Fedora Linux supports Gamerzilla. SuperTuxKart merged support but is still awaiting a new release. Seahorse adventures and Shippy 1984 added achievements but new releases are not packaged yet. Some games with support, we maintain independently as the developers ignore pull requests or other attempt to contact them. - -### Future work - -Gamerzilla needs more games. A variety of games currently support the system. An addition occurs nearly every month. If you have a game you like, ask the developer to support Gamerzilla. If you are making a game and need help adding support, please let us now. - -Server development proceeds at a slow pace and we hope to have a functional registration system soon. After that we may setup a permanent hosting site. Right now you can see our [test server][7]. Some people expressed concern with the .Net backend. The API is not very complex and could be rewritten in Python fairly easily. - -The largest unknown remains game launchers. GameHub wants a generic achievement interface. We could try to work with them to get that implemented. Adding support to the itch.io app could increase interest in the system. Another possibility is to do away with the game launcher entirely. Perhaps adding something like the gamerzillaserver to Gnome might be possible. You would then configure your url and login information on a settings page. Any game launched could then record achievements. - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/open-source-game-achievements/ - -作者:[Dennis Payne][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/dulsi/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2021/09/game_acheivements-816x345.jpg -[2]: https://unsplash.com/@mparzuchowski?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[3]: https://unsplash.com/s/photos/jenga?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[4]: http://identicalsoftware.com/gamerzilla/ -[5]: https://github.com/dulsi/gamerzilla.net#readme -[6]: https://dulsi.itch.io/pinball-disc-room -[7]: http://108.49.106.217/ diff --git a/sources/tech/20210922 Install PowerShell on Fedora Linux.md b/sources/tech/20210922 Install PowerShell on Fedora Linux.md deleted file mode 100644 index 05a2aa5445..0000000000 --- a/sources/tech/20210922 Install PowerShell on Fedora Linux.md +++ /dev/null @@ -1,320 +0,0 @@ -[#]: subject: "Install PowerShell on Fedora Linux" -[#]: via: "https://fedoramagazine.org/install-powershell-on-fedora-linux/" -[#]: author: "TheEvilSkeletonOzymandias42 https://fedoramagazine.org/author/theevilskeleton/https://fedoramagazine.org/author/ozymandias42/" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Install PowerShell on Fedora Linux -====== - -![][1] - -Photos by [NOAA][2] and [Cedric Fox][3] on [Unsplash][4] - -PowerShell (also written pwsh) is a powerful open source command-line and object-oriented shell developed and maintained by Microsoft. It is syntactically verbose and intuitive for the user. This article is a guide on how to install PowerShell on the host and inside a Podman or Toolbox container. - -### Table of contents - - * [Why use PowerShell][5] - * [Demonstration][6] - * [Comparison between Bash and PowerShell][7] - * [Install PowerShell][8] - * [Install PowerShell on a host using the package manager][9] - * [Method 1: Microsoft repositories][10] - * [Method 2: RPM file][11] - * [Install via container][12] - * [Method 1: Podman container][13] - * [Method 2: Fedora Linux Toolbox container][14] - - - -### Why use PowerShell - -PowerShell, as the name suggests, is _power_ful. The syntax is verbose and semantically clear to the end user. For those that don’t want to write long commands all the time, most commands are aliased. The aliases can be viewed with _Get-Alias_ or [here][15]. - -The most important difference between PowerShell and traditional shells, however, is its output pipeline. While normal shells output strings or character streams, PowerShell outputs objects. This has far reaching implications for how command pipelines work and comes with quite a few advantages. - -#### Demonstration - -The following examples illustrate the verbosity and simplicity. Lines that start with the pound symbol (**#**) are comments. Lines that start with **PS >** are commands, **PS >** being the prompt: - -``` -# Return all files greater than 50MB in the current directory. -## Longest form -PS > Get-Childitem | Where-Object Length -gt 50MB -## Shortest form (with use of aliases) -PS > gci | ? Length -gt 40MB -## Output looks like this - Directory: /home/Ozymandias42/Downloads -Mode LastWriteTime Length Name ----- ------------- ------ ---- ------ 20/08/2020 13:55 2000683008 40MB-file.img - - -# In order: get VMs, get snapshots, only select the last 3 and remove selected list: -PS > Get-VM VM-1 | Get-Snapshot | Select-Object -Last 3 | Remove-Snapshot -``` - -What this shows quite well is that input-output reformatting with tools like _cut_, _sed_, _awk_ or similar, which Bash scripts often need, is usually not necessary in PowerShell. The reason for this is that PowerShell works fundamentally different than traditional POSIX shells such as Bash, Zsh, or other shells like Fish. The commands of traditional shells are output as strings whereas in PowerShell they are output as objects. - -#### Comparison between Bash and PowerShell - -The following example illustrates the advantages of the object-output in PowerShell in contrast to the traditional string-output in Bash. Suppose you want a script that outputs all processes that occupy 200MB or more in RAM. With Bash, this might look something like this: - -``` -$ ps -eO rss | awk -F' ' \ - '{ if($2 >= (1024*200)) { \ - printf("%s\t%s\t%s\n",$1,$2,$6);} \ - }' - -PID RSS COMMAND -A B C -[...] -``` - -The first obvious difference is readability or more specifically, semantic clarity. Neither _ps_ nor _awk_ are self-descriptive. _ps_ shows the **p**rocess **s**tatus and _awk_ is a text processing tool and language whose letters are the initials of its developers’ last names, **A**ho, **W**einberger, **K**ernighan (see [Wikipedia][16]). Before contrasting it with PowerShell however, examine the script: - - * _ps -e_ outputs all running processes; - - * _-O rss_ outputs the default output of _ps_ plus the amount of kilobytes each process uses, the _rss_ field; this output looks like this: - -``` -PID RSS S TTY TIME COMMAND 1 13776 S ? 00:00:01 /usr/lib/systemd/systemd -``` - - * | pipe operator uses the output of the command on the left side as input for the command on the right side. - - * _awk -F’ ‘_ declares “space” as the input field separator. So going with the above example, PID is the first, RSS the second and so on. - - * _‘{ if($2 >= (1024*200)_ is the beginning of the actual AWK-script. It checks whether field 2 ([RSS][17]) contains a number larger than or equal to 1024*200KB (204800KB, or 200MB); - - * _{ printf(“%s\t%s\t%s\n”,$1,$2,$6);} }’_ continues the script. If the previous part evaluates to true, this outputs the first, second and sixth field ([PID][18], [RSS][17] and COMMAND fields respectively). - - - - -With this in mind, step back and look at what was required for this script to be written and for it to work: - - * The input command _ps_ had to have the field we wanted to filter against in its output. This was not the case by default and required us to use the _-O_ flag with the _rss_ field as argument. - * We had to treat the output of _ps_ as a list of input fields, requiring us to know their order and structure. Or in other words, we had to at least _know_ that _RSS_ would be the second field. Meaning we had to know how the output of _ps_ would look beforehand. - * We then had to know what unit the data we were filtering against was in as well as what unit the processing tool would work in. Meaning we had to know that the _RSS_ field uses kilobytes and that _awk_ does too. Otherwise we would not have been able to write the expression _($2 <= 1024*200)_ - - - -Now, contrast the above with the PowerShell equivalent: - -``` -# Longest form -PS > Get-Process | Where-Object WorkingSet -ge 200MB -# Shortest form (with use of aliases) -PS > gps | ? ws -ge 200MB - -NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName ------- ----- ----- ------ -- -- ----------- - A B C D E F G -[...] -``` - -This first thing to notice is that we have perfect semantic clarity. The commands are perfectly self-descriptive in what they do. - -Furthermore there is no requirement for input-output reformatting, nor is there concern about the unit used by the input command. The reason for this is that PowerShell does not output strings, but objects. - -To understand this think about the following. In Bash the output of a command is equal to that what it prints out in the terminal. In PowerShell what is printed on the terminal is not equal to the information, that is actually available. This is, because the output-printing system in PowerShell also works with objects. So every command in PowerShell marks some of the properties of its output objects as printable and others not. However, it always includes all properties, whereas Bash only includes what it actually prints. One can think of it like JSON objects. Where output in Bash would be separated into “fields” by a delimiter such as a space or tab, it becomes an easily addressable object property in PowerShell, with the only requirement being, that one has to know its name. Like _WorkingSet_ in the above example. - -To see all available properties of a command’s output objects and their types, one can simply do something like: - -``` -PS > Get-Process | Get-Member -``` - -### Install PowerShell - -PowerShell is available in several package formats, including RPM used by Fedora Linux. This article shows how to install PowerShell on Fedora Linux using various methods. - -I recommend installing it natively. But I will also show how to do it in a container. I will show using both the official Microsoft PowerShell container and a Fedora Linux 30 toolbox container. The advantage of the container-method is that it’s guaranteed to work, since all dependencies are bundled in it, and isolation from the host. Regardless, I recommend doing it natively, despite the official docs only explicitly stating Fedora Linux releases 28 to 30 as being supported. - -**Note:** Supported means guaranteed to work. It does not necessarily mean incompatible with other releases. This means, that while not guaranteed, releases higher than 30 should still work. They did in fact work in our tests. - -It is more difficult to set up PowerShell and run it in a container than to run it directly on a host. It takes more time to install and you will not be able to run host commands directly. - -#### Install PowerShell on a host using the package manager - -##### Method 1: Microsoft repositories - -Installation is as straight-forward as can be and the procedure doesn’t differ from any other software installed through third party repositories. - -It can be split into four general steps: - - 1. Adding the new repository’s GPG key - 2. Adding repository to DNF repository list - 3. Refreshing DNF cache to include available packages from the new repository - 4. Installing new packages - - - -Powershell is then launched with the command _pwsh_. - -``` -$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc -$ curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/microsoft.repo -$ sudo dnf makecache -$ sudo dnf install powershell -$ pwsh -``` - -To remove the repository and packages, run the following. - -``` -$ sudo rm /etc/yum.repos.d/microsoft.repo -$ sudo dnf remove powershell -``` - -##### Method 2: RPM file - -This method is not meaningfully different from the first method. In fact it adds the GPG key and the repository implicitly when installing the RPM file. This is because the RPM file contains the link to both in it’s metadata. - -First, get the _.rpm_ file for the version you want from the [PowerShell Core GitHub repository][19]. See the readme.md -“Get Powershell” table for links. - -Second, enter the following: - -``` -$ sudo dnf install powershell-.rhel.7..rpm -``` - -Substitute _<version>_ and _<architecture>_ with the version and architecture you want to use respectively, for example [powershell-7.1.3-1.rhel.7.x86_64.rpm][20]. - -Alternatively you could even run it with the link instead, skipping the need to download it first. - -``` -$ sudo dnf install https://github.com/PowerShell/PowerShell/releases/download/v/powershell-.rhel.7..rpm -``` - -To remove PowerShell, run the following. - -``` -$ sudo dnf remove powershell -``` - -#### Install via container - -##### Method 1: Podman container - -Podman is an [Open Container Initiative][21] (OCI) compliant drop-in replacement for Docker. - -Microsoft provides a [PowerShell Docker container][22]. The following example will use that container with Podman. - -For more information about Podman, visit [Podman.io][23]. Fedora Magazine has a [tag][24] dedicated to Podman. - -To use PowerShell in Podman, run the following script: - -``` -$ podman run \ - -it \ - --privileged \ - --rm \ - --name powershell \ - --env-host \ - --net=host --pid=host --ipc=host \ - --volume $HOME:$HOME \ - --volume /:/var/host \ - mcr.microsoft.com/powershell \ - /usr/bin/pwsh -WorkingDirectory $(pwd) -``` - -This script creates a Podman container for PowerShell and immediately attaches to it. It also mounts the _/home_ and the host’s root directories into the container so they’re available there. However, the host’s root directory is available in _/var/host_. - -Unfortunately, you can only indirectly run host commands while inside the container. As a workaround, run _chroot /var/host_ to chroot to the root and then run host commands. - -To break the command down, everything is mandatory unless specified: - - * -it creates a persistent environment that does not kick you out when you enter it; - * \--privileged gives extended privileges to the container (optional); - * \--rm removes the container when you exit; - * \--name powershell sets the name of the container to _powershell_; - * \--env-host sets all host environment variables to the container’s variables (optional); - * \--volume $HOME:$HOME mounts the user directory; - * \--volume /:/var/host mounts the root directory to _/var/host_ (optional); - * \--net=host --pid=host --ipc=host runs the process in the host’s namespaces instead of a separate set of namespaces for the contained process; - * docker.io/microsoft/powershell enters the container; - * /usr/bin/pwsh -WorkingDirectory $(pwd) enters the container in the current directory (optional). - - - -Optional but very convenient: alias _pwsh_ with the script to easily access the Podman container by typing _pwsh_. - -To remove the PowerShell image, run the following. - -``` -$ podman rmi mcr.microsoft.com/powershell -``` - -##### Method 2: Fedora Linux Toolbox container - -Toolbox is an elegant solution to setup persistent environments without affecting the host system as a whole. It acts as a wrapper around Podman and takes care of supplying a lot of the flags demonstrated in the previous method. For this reason, Toolbox is a lot easier to use than Podman. It was designed to work for development and debugging. With Toolbox, you can run any command the same as you would directly on the Fedora Workstation host (including _dnf_). - -The installation procedure is similar to the installation on the host methods, with the only difference being that those steps are done inside a container. Make sure you have the _toolbox_ package installed. - -Preparing and entering the Fedora 34 Toolbox container is a two step process: - - 1. Creating the Fedora 34 Toolbox container - 2. Running the Fedora 34 Toolbox container - - - -``` -$ toolbox create --image registry.fedoraproject.org/f34/fedora-toolbox -$ toolbox enter --container fedora-toolbox -``` - -Then, follow the instructions at [Method 1: Microsoft repositories][10]. - -Optional but very convenient: alias _pwsh_ with _toolbox run –container fedora-toolbox_ _pwsh_ to easily access the Toolbox container by typing _pwsh_. - -To remove the Toolbox container, make certain you have stopped the Toolbox session by entering _exit_ and then run the following: - -``` -$ podman kill fedora-toolbox -$ toolbox rm fedora-toolbox -``` - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/install-powershell-on-fedora-linux/ - -作者:[TheEvilSkeletonOzymandias42][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/theevilskeleton/https://fedoramagazine.org/author/ozymandias42/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2021/05/powershell-816x345.jpg -[2]: https://unsplash.com/@noaa?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[3]: https://unsplash.com/@thecedfox?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[4]: https://unsplash.com/s/photos/shell?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[5]: tmp.c7U2gcu9Hl#why-use-powershell -[6]: tmp.c7U2gcu9Hl#demonstration -[7]: tmp.c7U2gcu9Hl#comparison-between-bash-and-powershell -[8]: tmp.c7U2gcu9Hl#install-powershell -[9]: tmp.c7U2gcu9Hl#install-on-host-via-package-manager -[10]: tmp.c7U2gcu9Hl#method-1-microsoft-repositories -[11]: tmp.c7U2gcu9Hl#method-2-rpm-file -[12]: tmp.c7U2gcu9Hl#install-via-container -[13]: tmp.c7U2gcu9Hl#method-1-podman-container -[14]: tmp.c7U2gcu9Hl#method-2-fedora-toolbox-container -[15]: https://ilovepowershell.com/2011/11/03/list-of-top-powershell-alias/ -[16]: https://en.wikipedia.org/wiki/AWK -[17]: https://en.wikipedia.org/wiki/Resident_set_size -[18]: https://en.wikipedia.org/wiki/Process_identifier -[19]: https://github.com/PowerShell/PowerShell -[20]: https://github.com/PowerShell/PowerShell/releases/download/v7.1.3/powershell-7.1.3-1.rhel.7.x86_64.rpm -[21]: https://opencontainers.org/ -[22]: https://hub.docker.com/_/microsoft-powershell -[23]: https://podman.io/ -[24]: https://fedoramagazine.org/tag/podman/ diff --git a/sources/tech/20210929 Troubleshooting -Bash- Command Not Found- Error in Linux.md b/sources/tech/20210929 Troubleshooting -Bash- Command Not Found- Error in Linux.md deleted file mode 100644 index 3fd4ae17bb..0000000000 --- a/sources/tech/20210929 Troubleshooting -Bash- Command Not Found- Error in Linux.md +++ /dev/null @@ -1,151 +0,0 @@ -[#]: subject: "Troubleshooting “Bash: Command Not Found” Error in Linux" -[#]: via: "https://itsfoss.com/bash-command-not-found/" -[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Troubleshooting “Bash: Command Not Found” Error in Linux -====== - -_**This beginner tutorial shows how to go about fixing the Bash: command not found error on Debian, Ubuntu and other Linux distributions.**_ - -When you use commands in Linux, you expect to see an output. But sometimes, you’ll encounter issues where the terminal shows ‘command not found’ error. - -![][1] - -There is no straightforward, single solution to this error. You have to do a little bit of troubleshooting on your own. - -It’s not too difficult, honestly. The error gives some hint already when it says “bash: command not found”. Your shell (or Linux system) cannot find the command you entered. - -There could be three possible reasons why it cannot find the command: - - * It’s a typo and the command name is misspelled - * The command is not even installed - * The command is basically an executable script and its location is not known - - - -Let’s go in detail on each possible root cause. - -### Fixing “bash: command not found” error - -![][2] - -#### Method 1: Double check the command name (no, seriously) - -It is human to make mistakes, specially while typing. It is possible that the command you entered has a typo (spelling mistake). - -You should specially pay attention to: - - * The correct command name - * The spaces between the command and its options - * The use of 1 (numeral one), I (capital i) and l (lowercase L) - * Use of uppercase and lowercase characters - - - -Take a look at the example below, where I have misspelled the common ls command. - -![][3] - -So, make double sure what you are typing. - -#### Method 2: Ensure that the command is installed on your system - -This is another common reason behind the command not found error. You cannot run a command if it is not installed already. - -While your Linux distribution comes with a huge number of commands installed by default, it is not possible to pre-install all the command line tools in a system. If the command you are trying to run is not a popular, common command, you’ll have to install it first. - -You can use your distribution’s package manager to install it. - -![You may have to install the missing command][4] - -In some cases, popular commands may get discontinued and you may not even install it anymore. You’ll have to find an alternative command to achieve the result. - -Take the example of ipconfig command. This deprecated command was used for [getting Ip address][5] and other network interface information. Older tutorials on the web still mention using this command but you cannot use it anymore in newer Linux versions. It has been replaced by the ifconfig tool. - -![Some popular commands get discontinued over the time][1] - -Occasionally, your system won’t find even the extremely common commands. This is often the case when you are running a Linux distribution in Docker containers. To cut down on the size of the operating system image, the containers often do not include even the most common Linux commands. - -This is why Docker user stumble across things like [ping command not found error][6] etc. - -![Docker containers often have only a few commands installed][7] - -So, the solution is to either install the missing command or find a tool that could do the same thing you were trying to do with the missing command. - -#### Method 3: Check if it is an executable script with correct path - -This is a common mistake Linux rookies make while [running a shell script][8]. - -Even if you are in the same directory and try to run an executable script just by its name, it will show an error. - -``` -[email protected]:~/scripts# sample --bash: sample: command not found -``` - -You need to either specify the shell interpreter explicitly or its absolute path. - -![][9] - -If you are in some other directory and try to execute the shell script without giving the correct path to the file, it will complain about not finding the file. - -![][10] - -##### Adding it to the PATH - -In some cases, you download the entire software in a tar file, extract it and find an executable file along with other program files. To run the program, you need to run the executable file. - -But for that, you need to be in the same directory or specify the entire path to the executable file. This is tiresome. - -Here, you can use the PATH variable. This variable has a collection of directories and these directories have the binary (executable) files of various Linux commands. When you run a command, your Linux system checks the mentioned directories in the PATH variable to look for the executable file of that command. - -You can check the location of the binary of a command by using the `which` command: - -![][11] - -If you want to run an executable file or script from anywhere on the system, you need to add the location of the file to this PATH variable. - -![][12] - -The PATH variable then needs to be added to the rc file of the shell so that the changes made to PATH variable is permanent. - -You get the gist here. It is important that your Linux system has the knowledge about the location of the executable script. Either you give the path while running it or you add its location to the PATH variable. - -### Did it help you? - -I understand that when you are new to Linux, things could be overwhelming. But when you understand the root cause of the problem, it gradually improved your knowledge. - -Here, there is no straightforward solution possible for the ‘command not found error’. I gave you some hints and pointers and that should help you in troubleshooting. - -If you still have doubt or need help, please let me know in the comment section. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/bash-command-not-found/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/bash-command-not-found-error.png?resize=741%2C291&ssl=1 -[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/bash-command-not-found-error-1.png?resize=800%2C450&ssl=1 -[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/command-not-found-error.png?resize=723%2C234&ssl=1 -[4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/command-not-found-debian.png?resize=741%2C348&ssl=1 -[5]: https://itsfoss.com/check-ip-address-ubuntu/ -[6]: https://linuxhandbook.com/ping-command-ubuntu/ -[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/ping-command-not-found-ubuntu.png?resize=786%2C367&ssl=1 -[8]: https://itsfoss.com/run-shell-script-linux/ -[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/bash-script-command-not-found-error-800x331.png?resize=800%2C331&ssl=1 -[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/script-file-not-found-error-800x259.png?resize=800%2C259&ssl=1 -[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/path-location.png?resize=800%2C241&ssl=1 -[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/adding-executable-to-PATH-variable-linux.png?resize=800%2C313&ssl=1 diff --git a/sources/tech/20211020 Diagnose connectivity issues with the Linux ping command.md b/sources/tech/20211020 Diagnose connectivity issues with the Linux ping command.md deleted file mode 100644 index 2af97315bf..0000000000 --- a/sources/tech/20211020 Diagnose connectivity issues with the Linux ping command.md +++ /dev/null @@ -1,162 +0,0 @@ -[#]: subject: "Diagnose connectivity issues with the Linux ping command" -[#]: via: "https://opensource.com/article/21/10/linux-ping-command" -[#]: author: "Seth Kenlon https://opensource.com/users/seth" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Diagnose connectivity issues with the Linux ping command -====== -One of the most fundamental diagnostic tools for networked connectivity -is the ping command. -![World locations with red dots with a sun burst background][1] - -Networked computers are so common these days that most of us take it for granted that a computer on one side of a room can contact one on the other side of the room, much less the other side of the world. When it works as designed, networking is what makes the Internet, the cloud, file shares, media streaming, remote administration, printing, and much more possible. When something goes wrong, it can sometimes be challenging to diagnose. One of the most fundamental diagnostic tools for networked connectivity is the `ping` command. - -### The basic ping - -When you can't reach a computer on your local network, or a server on the Internet, you can ping it. A ping sends an Internet Control Message Protocol (ICMP) packet to a destination IP address. ICMP is, by design, a rudimentary format used mostly for diagnostics: It's essentially a call and response signal. - -But there's an order to troubleshooting, and it starts as close to home as possible. When in doubt, first ping your own computer to ensure you're running a networking stack. The computer you're operating is also called your _localhost_, and it has a special IP address assigned for speaking to itself: 12.0.0.1. - -The `ping`** **command understands the _localhost_ hostname, its IP address, and a shortcut of just `0`. - -You can control how many signals you send with the `-c` (as in _count_)** **option. - - -``` -$ ping 0 -c1 -PING 0 (127.0.0.1) 56(84) bytes of data. -64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.069 ms - -\--- 0 ping statistics --- -1 packets transmitted, 1 received, 0% packet loss, time 0ms -rtt min/avg/max/mdev = 0.069/0.069/0.069/0.000 ms -``` - -After you've established that your local networking stack is up and running, you can ping your router. The address of a router usually starts with 192,168, or 10. The exact IP address depends on your router's configuration. - -When you don't specify how many pings to send, you can stop `ping` from running with **Ctrl**+**C**. - - -``` -$ ping 192.168.0.1  -PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. -From 192.168.0.100: icmp_seq=2 Redirect Host(New nexthop: 192.168.0.1) -From 192.168.0.100: icmp_seq=3 Redirect Host(New nexthop: 192.168.0.1) -From 192.168.0.100: icmp_seq=4 Redirect Host(New nexthop: 192.168.0.1) -From 192.168.0.100: icmp_seq=5 Redirect Host(New nexthop: 192.168.0.1) -^C -``` - -If you can reach your router, that means your wired or wireless connection is working.  - -What about other hosts on my network? You can ping all kinds of devices. Not all are guaranteed to respond (some devices drop ICMP packets), but many do. For instance, I can ping my printer: - - -``` -`$ ping 192.168.0.4 ` -``` - -### Pinging beyond your network - -Beyond establishing that your own network is working as expected, you can also ping out into the wider world beyond your router. Again, not all servers are permitted to receive, much less respond to, ICMP. However, there are some that do, and a vital server to the working of the Internet is a nameserver. - -Google's DNS server is relatively easy to remember, and it does respond to pings: - - -``` -$ ping -c 2 8.8.8.8 -PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. -64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=53.3 ms -64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=53.5 ms - -\--- 8.8.8.8 ping statistics --- -2 packets transmitted, 2 received, 0% packet loss, time 1000ms -rtt min/avg/max/mdev = 53.304/53.424/53.544/0.120 ms -``` - -When a site has apparently disappeared, you might be able to probe the worldwide DNS network to find out what its host server's address is, and then ping that server. This at least tells you whether the host is down or whether it's just a web server issue. - -For example, say you're trying unsuccessfully to reach example.com. First, find the IP address using the `host` command: - - -``` -$ host example.com -example.com has address 93.184.216.34 -example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946 -example.com mail is handled by 0 -``` - -And then ping the website's host by IP: - - -``` -`$ ping 93.184.216.34 -c 1` -``` - -### Ping and IPv6 - -Ping works over IPv4 as well as IPv6. Using only one of them explicitly can be enforced by specifying `-4` or `-6`.  - -### Packet size - -You can change the size of the ICMP packets you're sending with the `-s` option. The default packet size is 56, which translates into 64 ICMP data bytes when combined with the 8-byte header. This command sends 43 bytes: - - -``` -`$ ping -s 35 -c 5 8.8.8.8` -``` - -You can print a timestamp before each ping report in your terminal with the `-D` option. This provides the UNIX epoch time, plus microseconds: - - -``` -$ ping -D 8.8.8.8  -PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. -[1634013430.297468] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=53.3 ms -[1634013431.298738] 64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=53.1 ms -``` - -### Ping time - -You can change the time interval between pings using the `-i` option. This changes the ping interval to two seconds: - - -``` -`$ ping -s 2 ` -``` - -You can also stop pinging after some value of time (in seconds) with the `-w` option: - - -``` -`$ ping -w 6` -``` - -### Variants - -There are many implementations of ping. The `iputils` package provides a `ping` command, [Busybox ][2]has a `ping` command, and there's one from BSD and others. There's even a GUI for `ping`: Gping is available for Linux, macOS, and Windows. You can find more information for `gping` on [Github][3].  - -### Learn to ping - -The `ping` command is simple, but it can be eyes and ears out on the vast expanse that is your network. Next time you have connectivity issues, let `ping` be the first tool you turn to. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/10/linux-ping-command - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/world_remote_teams.png?itok=Wk1yBFv6 (World locations with red dots with a sun burst background) -[2]: https://opensource.com/article/21/8/what-busybox -[3]: https://github.com/orf/gping diff --git a/sources/tech/20220519 For the Love of Ubuntu- Here are the Mascots of All Ubuntu Releases.md b/sources/tech/20220519 For the Love of Ubuntu- Here are the Mascots of All Ubuntu Releases.md deleted file mode 100644 index 096deb298b..0000000000 --- a/sources/tech/20220519 For the Love of Ubuntu- Here are the Mascots of All Ubuntu Releases.md +++ /dev/null @@ -1,461 +0,0 @@ -[#]: subject: "For the Love of Ubuntu: Here are the Mascots of All Ubuntu Releases" -[#]: via: "https://itsfoss.com/all-Ubuntu-mascots/" -[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -For the Love of Ubuntu: Here are the Mascots of All Ubuntu Releases -====== -This is a collection of the mascots of all the Ubuntu releases so far. - -You may have noticed that every Ubuntu release has a version name and codename. The codename is composed of two words that start with the same letter. The first word is an adjective, and the other one is (usually) an (endangered) species. - -These releases also have a mascot for those codenames. Ubuntu 22.04 is codenamed Jammy Jellyfish and hence the Jellyfish mascot on its wallpaper. - -These ‘mascots’ were not always part of Ubuntu releases. The codenames were always there, but not the mascots. - -The first-ever Ubuntu release was version 4.10 in October 2004. But it wasn’t until the Ubuntu 8.04 LTS ‘Hardy Heron’ release that you saw the associated mascot. - -Earlier, I complied the [list of the default wallpapers of all Ubuntu releases][1]. In this one, you get to look at the mascots of those releases. - -Let’s hop on to Ubuntu’s mascot journey in reverse chronological order. - -### Ubuntu 22.04 Jammy Jellyfish - -![Ubuntu 22.04 mascot][2] - -Released on 21 April 2021. - -Jammy means covered with, filled with, or resembling jam. Informally, it also means lucky. - -Jellyfish are mainly free-swimming marine animals with umbrella-shaped bells and trailing tentacles, although a few are anchored to the seabed by stalks rather than being mobile. - -### Ubuntu 21.10 Impish Indri - -![Ubuntu 21.10 mascot][3] - -Released on 14 October 2021. - -Impish means showing no respect for somebody/something in a way that is amusing rather than serious. - -The Indri, also called the babakoto, is one of the largest living lemurs, with a head-and-body length of about 64–72 cm and a weight of between 6 and 9.5 kg. It has a black and white coat and maintains an upright posture when climbing or clinging - -### Ubuntu 21.04 Hirsute Hippo - -![Ubuntu 21.04 mascot][4] - -Released on 22 April 2021. - -Hirsute means hairy. - -The hippopotamus, also called the hippo, common hippopotamus, or river hippopotamus, is a large semiaquatic mammal native to sub-Saharan Africa. It is one of only two extant species in the family Hippopotamidae, the other being the pygmy hippopotamus. Its name comes from the ancient Greek for “river horse”. - -Not sure if I have seen many hairy hippo. - -### Ubuntu 20.10 Groovy Gorilla - -![Ubuntu 20.10 mascot][5] - -Released on 22 October 2020. - -Groovy means fashionable and exciting. - -Gorillas are herbivorous, predominantly ground-dwelling great apes that inhabit the tropical forests of equatorial Africa. The genus Gorilla is divided into two species: the eastern gorilla and the western gorilla, and either four or five subspecies. - -### Ubuntu 20.04 LTS Focal Fossa - -![Ubuntu 20.04 mascot 1][6] - -Released on 23 April 2020. - -Focal means something providing a focus, important in other meaning. - -The fossa (Cryptoprocta ferox) is **the largest carnivorous mammal on the island of Madagascar**. They can reach nearly six feet in length, with half of that due to their long tails. They look like a cross between a cat, a dog, and a mongoose. Fossas have slender bodies, muscular limbs, and short, reddish-brown coats. - -### Ubuntu 19.10 Eoan Ermine - -![Ubuntu 19.10 mascot][7] - -Released on 17 October 2019. - -Eoan means relating to dawn or east. - -The stoat or short-tailed weasel, also known as the Eurasian ermine, Beringian ermine, or simply ermine, is a mustelid native to Eurasia and the northern portions of North America. Because of its wide circumpolar distribution, it is listed as Least Concern on the IUCN Red List. - -### Ubuntu 19.04 Disco Dingo - -![Ubuntu 19.04 mascot][8] - -Released on 18 April 2019. - -Disco relates to the disco music and nightclubs. - -The dingo is an ancient lineage of dog found in Australia. Its taxonomic classification is debated as indicated by the variety of scientific names presently applied in different publications. - -### Ubuntu 18.10 Cosmic Cuttlefish - -![Ubuntu 18.10 mascot][9] - -Released on 18 October 2018. - -Cosmic means something distinct from the earth, - -Cuttlefish or cuttles are marine molluscs of the order Sepiida. They belong to the class Cephalopoda, which also includes squid, octopuses, and nautiluses. Cuttlefish have a unique internal shell, the cuttlebone, which is used for control of buoyancy. - -### Ubuntu 18.04 LTS Bionic Beaver - -![Ubuntu 18.04 mascot][10] - -Released on 26 April 2018. - -Bionic means having or denoting an artificial, typically electromechanical, body part or parts. - -Beavers are large, semiaquatic rodents in the genus Castor native to the temperate Northern Hemisphere. There are two extant species: the North American beaver and the Eurasian beaver. Beavers are the second-largest living rodents after the capybaras. - -The British users found this release name particularly amusing. - -### Ubuntu 17.10 Artful Aardvark - -![Ubuntu 17.10 mascot][11] - -Released on 19 October 2017. - -Ubuntu switched back to GNOME by default with this release. - -Artful means cleaver or carfty. - -The aardvark is a medium-sized, burrowing, nocturnal mammal native to Africa. It is the only living species of the order Tubulidentata, although other prehistoric species and genera of Tubulidentata are known. Unlike most other insectivores, it has a long pig-like snout, which is used to sniff out food. - -### Ubuntu 17.04 Zesty Zapus - -![Ubuntu 17.04 mascot][12] - -Released on 13 April 2017. - -Last release to feature the Unity desktop. - -Zesty means having a strong, pleasant, and somewhat spicy flavor. - -Zapus is a genus of North American jumping mouse. It is the only genus whose members have the dental formula. Zapus are the only extant mammals aside from the Aye-aye with a total of 18 teeth. - -### Ubuntu 16.10 Yakkety Yak - -![Ubuntu 16.10 mascot][13] - -Released on 13 October 2016. - -‘Yakkety’ could mean a lot of things. While ‘yakking’ is an informal term for talking a lot, ‘yakkety’ could be an alternative spelling of ‘Yakety’ Sax — a well known pop-jazz musical instrument, says OMGUbuntu!. - -Yak is a large domesticated wild ox with shaggy hair, humped shoulders, and large horns, used in Tibet as a pack animal and for its milk, meat, and hide. - -### Ubuntu 16.04 LTS Xenial Xerus - -![Ubuntu 16.04 mascot][14] - -Released on 21 April 2016. - -Xenial means something related to hospitality. - -The Xerus has four subspecies – **cape ground squirrel, striped ground squirrel, mountain ground squirrel, and unstriped ground squirrel**. These animals are diurnal and are usually known to be herbivores in nature and usually eat nuts, roots, and seeds. However, sometimes they also eat eggs and other small animals. - -### Ubuntu 15.10 Wily Werewolf - -![Ubuntu 15.10 mascot][15] - -Released on 22 October 2015. - -Perhaps one of the rare Ubuntu releases that had a finctional character in its codename, unless you don’t consider warewolves fictional. - -Wily means skilled at gaining an advantage, especially deceitfully. - -The werewolves are mythical creatures that can hide their ears and tail. It is a human but also a wolf, and most people fear them because of how they look. - -### Ubuntu 15.04 Vivid Vervet - -![Ubuntu 15.04 mascot][16] - -Released on 23 April 2015. - -Vivid means intensely deep or bright.. - -The vervet monkey, or simply vervet, is an Old World monkey of the family Cercopithecidae native to Africa. The term “vervet” is also used to refer to all the members of the genus Chlorocebus. The five distinct subspecies can be found mostly throughout Southern Africa, as well as some of the eastern countries. - -### Ubuntu 14.10 Utopic Unicorn - -![Ubuntu 14.10 mascot][17] - -Released on 23 October 2014. - -Another of the Ubuntu release with fictional animal in its release codename unless you consider Unicrons are real. - -Utopic relates to utopia which is a fictional, impractical but ideal place. - -The **unicorn** is a legendary creature that has been described since antiquity as a beast with a single large, pointed, spiraling horn projecting from its forehead. - -### Ubuntu 14.04 LTS Trusty Tahr - -![Ubuntu 14.04 mascot][18] - -Released on 17 April 2014. - -Trusty means reliable or faithful. - -Tahr is a goatlike mammal that inhabits cliffs and mountain slopes in Oman, southern India, and the Himalayas. - -### Ubuntu 13.10 Saucy Salamander - -![Ubuntu 13.10 mascot][19] - -Released on 17 October 2013. - -Saucy means expressing in a bold, lively, or spirited manner. - -Salamanders are a group of amphibians typically characterized by their lizard-like appearance, with slender bodies, blunt snouts, short limbs projecting at right angles to the body, and the presence of a tail in both larvae and adults. All ten extant salamander families are grouped together under the order Urodela. - -### Ubuntu 13.04 Raring Ringtail - -![Ubuntu 13.04 mascot][20] - -Released on 25 April 2013. - -Raring means very enthusiastic and eager to do something. - -The Ringtail is **a cat-sized carnivore resembling a small fox with a long raccoonlike tail**. Its bushy tail is flattened and nearly as long as the head and body, with alternating black and white rings. These animals are almost wholly nocturnal and spend the majority of the day sleeping in their dens. - -### Ubuntu 12.10 Quantal Quetzal - -![Ubuntu 12.10 mascot][21] - -Released on 18 October 2012. - -Quantal means relating to a quantum or quanta, or to quantum theory. - -**Quetzals** are strikingly colored birds in the trogon family. They are found in forests, especially in humid highlands, with the five species from the genus *Pharomachrus* being exclusively Neotropical, while a single species, the eared quetzal, *Euptilotis neoxenus*, is found in Mexico and very locally in the southernmost United States. Quetzals are fairly large (all over 32 cm or 13 inches long), slightly bigger than other trogon species. The resplendent quetzal is the national bird of Guatemala because of its vibrant colour. - -### Ubuntu 12.04 LTS Precise Pangolin - -![Ubuntu 12.04 mascot][22] - -Released on 26 April 2012. - -Precise means marked by exactness and accuracy of expression or detail. - -Pangolins, sometimes known as scaly anteaters, are mammals of the order Pholidota. The one extant family, the Manidae, has three genera: Manis, Phataginus, and Smutsia. Manis comprises the four species found in Asia, while Phataginus and Smutsia include two species each, all found in sub-Saharan Africa. - -### Ubuntu 11.10 Oneiric Ocelot - -![Ubuntu 11.10 mascot][23] - -Released on 13 October 2011. - -Onerice relates to dreams or dreaming. - -The ocelot (Leopardus pardalis) is a medium-sized spotted wild cat that reaches 40–50 cm (15.7–19.7 in) at the shoulders and weighs between 8 and 15.5 kg (17.6 and 34.2 lb). It was first described by Carl Linnaeus in 1758. - -### Ubuntu 11.04 Natty Narwhal - -![Ubuntu 11.04 mascot][24] - -Released on 28 April 2011. - -The first release to feature the Unity desktop. - -Natty means smart and fashionable. - -The narwhal, also known as a narwhale, is a medium-sized toothed whale that possesses a large “tusk” from a protruding canine tooth. It lives year-round in the Arctic waters around Greenland, Canada and Russia. It is one of two living species of whale in the family Monodontidae, along with the beluga whale. - -### Ubuntu 10.10 Maverick Meerkat - -![Ubuntu 10.10 mascot][25] - -Released on 10 October 2010. - -Maverick means an unorthodox or independent-minded person. - -The meerkat or suricate is a small mongoose found in southern Africa. It is characterised by a broad head, large eyes, a pointed snout, long legs, a thin tapering tail, and a brindled coat pattern. - -### Ubuntu 10.04 LTS Lucid Lynx - -![Ubuntu 10.04 mascot][26] - -Released on 29 April 2010. - -Lucid means easy to understand or bright. - -A lynx is any of the four species within the medium-sized wild cat genus Lynx. The name lynx originated in Middle English via Latin from the Greek word λύγξ, derived from the Indo-European root leuk- in reference to the luminescence of its reflective eyes. - -### Ubuntu 9.10 Karmic Koala - -![Ubuntu 9.10 mascot][27] - -Released on 29 October 2009. - -Karmic means relating to or characteristic of karma. - -The koala or, inaccurately, koala bear is an arboreal herbivorous marsupial native to Australia. It is the only extant representative of the family Phascolarctidae and its closest living relatives are the wombats. - -### Ubuntu 9.04 Jaunty Jackalope - -![Ubuntu 9.04 mascot][28] - -Released on 23 April 2009. - -The first Ubuntu version I ever used. - -Jaunty means having or expressing a lively, cheerful, and self-confident manner. - -The jackalope is **a mythical animal of North American folklore, in the category of fearsome critters, described as a jackrabbit with antelope horns**. The word jackalope is a portmanteau of jackrabbit and antelope. Many jackalope taxidermy mounts, including the original, are made with deer antlers. - -### Ubuntu 8.10 Intrepid Ibex - -![Ubuntu 8.10 mascot][29] - -Released on 30 October 2008. - -Intrepid means fearless; adventurous. - -An ibex is any of several species of wild goat, distinguished by the male’s large recurved horns, which are transversely ridged in front. Ibex are found in Eurasia, North Africa and East Africa. - -### Ubuntu 8.04 LTS Hardy Heron - -![Ubuntu 8.04 mascot][30] - -Released on 24 April 2008. - -The first Ubuntu release where the mascot appeared on its default wallpaper. - -Hardy means capable of enduring difficult conditions; robust. - -The herons are long-legged, long-necked, freshwater and coastal birds - -### Ubuntu 7.10 Gutsy Gibbon - -![Ubuntu 7.10 mascot][31] - -Released on 18 October 2007. - -Gusty is characterized by or blowing in gusts. - -Gibbons are apes live in subtropical and tropical rainforest from eastern Bangladesh to Northeast India to southern China and Indonesia - -### Ubuntu 7.04 Feisty Fawn - -![Ubuntu 7.04 mascot][32] - -Released on 19 April 2007. - -Feisty means small but determined. Fawn is a young deer in its first year. - -### Ubuntu 6.10 Edgy Eft  - -![Ubuntu 6.10 mascot][33] - -Released on 26 October 2006. - -Edgy means tense or nervous. - -Eft is the terrestrial juvenile phase of newt. A newt is a type of salamander (a type of lizard). This newt has three distinct developmental life stages: aquatic larva, terrestrial juvenile (eft), and adult. - -So basically eft is a teenaged newt :) - -### Ubuntu 6.06 Dapper Drake - -![Ubuntu 6.06 mascot][34] - -Released on 1 June 2006. - -Dapper means neat and trim in dress and appearance. Drake is a fully sexually mature adult male duck of any duck species. - -### Ubuntu 5.10 Breezy Badger - -![Ubuntu 5.10 mascot][35] - -Released on 12 October 2005. - -Breezy means pleasantly windy. - -Badgers are short-legged omnivores, united by their squat bodies, adapted for fossorial activity. - -### Ubuntu 5.04 Hoary Hedgehog  - -![Ubuntu 5.04 mascot][36] - -Released on 8 April 2005. - -Hoary means greyish white. - -A hedgehogis a spiny mammal found throughout parts of Europe, Asia, and Africa, and in New Zealand by introduction. - -### Ubuntu 4.10 : Warty Warthog - -![Ubuntu 4.10 mascot][37] - -Released on 20 October 2004. - -This is where it all started. - -Wart is a small, hard, benign growth on the skin, caused by a virus. Warty means someone full of warts. - -The common warthog is a wild member of the pig family found in grassland, savanna, and woodland in sub-Saharan Africa. - -### Conclusion - -Does this article add value to an Ubuntu user? Not technically, but it’s good to look back at the history. If you have been an Ubuntu user for years, it could trigger nostalgia. - -Ubuntu 9.04 was the first time I tried Linux on a desktop. It was in late September of 2009 if I recall correctly. Only a few weeks later, my system was upgraded to Ubuntu 9.10. I used to spend time browing in Ubuntu Forum thoses days, exploring this new OS and learning new things. - -So, did this article bring back some good old memories? Which was your first Ubuntu version? Share it in the comments. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/all-Ubuntu-mascots/ - -作者:[Abhishek Prakash][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lkxed -[1]: https://itsfoss.com/Ubuntu-default-wallpapers-download/ -[2]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-22-04-mascot.jpg -[3]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-21-10-mascot.jpg -[4]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-21-04-mascot.jpg -[5]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-20-10-mascot.jpg -[6]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-20-04-mascot-1.jpg -[7]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-19-10-mascot.jpg -[8]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-19-04-mascot.jpg -[9]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-18-10-mascot.jpg -[10]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-18-04-mascot.jpg -[11]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-17-10-mascot.jpg -[12]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-17-04-mascot.jpg -[13]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-16-10-mascot.jpg -[14]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-16-04-mascot.jpg -[15]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-15-10-mascot.jpg -[16]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-15-04-mascot.jpg -[17]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-14-10-mascot.jpg -[18]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-14-04-mascot.jpg -[19]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-13-10-mascot.jpg -[20]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-13-04-mascot.jpg -[21]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-12-10-mascot.jpg -[22]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-12-04-mascot.jpg -[23]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-11-10-mascot.jpg -[24]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-11-04-mascot.jpg -[25]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-10-10-mascot.jpg -[26]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-10-04-mascot.jpg -[27]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-9-10-mascot.jpg -[28]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-9-04-mascot.jpg -[29]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-8-10-mascot.jpg -[30]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-8-04-mascot.jpg -[31]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-7-10-mascot.jpg -[32]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-7-04-mascot.jpg -[33]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-6-10-mascot.jpg -[34]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-6-06-mascot.jpg -[35]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-5-10-mascot.jpg -[36]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-5-04-mascot.jpg -[37]: https://itsfoss.com/wp-content/uploads/2022/05/Ubuntu-4-10-mascot.jpg diff --git a/sources/tech/20220524 12 essential Linux commands for beginners.md b/sources/tech/20220524 12 essential Linux commands for beginners.md deleted file mode 100644 index c5273a7bc3..0000000000 --- a/sources/tech/20220524 12 essential Linux commands for beginners.md +++ /dev/null @@ -1,187 +0,0 @@ -[#]: subject: "12 essential Linux commands for beginners" -[#]: via: "https://opensource.com/article/22/5/essential-linux-commands" -[#]: author: "Don Watkins https://opensource.com/users/don-watkins" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -12 essential Linux commands for beginners -====== -I recommend these commands to anyone who is getting started with Linux. - -![Command line prompt][1] - -Image by: Opensource.com - -When operating on the Linux command line, it is easy to get disoriented, which can have disastrous consequences. I once issued a remove command before realizing that I'd moved the boot directory of my computer. I learned to use the `pwd` command to know exactly which part of the file system I was in (and these days, there are command projects, like [trashy and trash-cli][2], that serve as intermediates when removing files). - -When I was new to Linux, I had a cheat sheet that hung over my desk to help me remember those commands as I managed my Linux servers. It was called the *101 commands for Linux* cheat sheet. As I became more familiar with these commands, I became more proficient with server administration. - -Here are 12 Linux commands I find most useful. - -### 1. Print working directory (pwd) - -The `pwd` command prints your working directory. In other words, it outputs the path of the directory you are currently working in. There are two options: `--logical` to display your location with any symlinks and `--physical` to display your location after resolving any symlinks. - -### 2. Make directory (mkdir) - -Making directories is easy with the `mkdir` command. The following command creates a directory called `example` unless `example` already exists: - -``` -$ mkdir example -``` - -You can make directories within directories: - -``` -$ mkdir -p example/one/two -``` - -If directories `example` and `one` already exist, only directory `two` is created. If none of them exist, then three nested directories are created. - -### 3. List (ls) - -Coming from MS-DOS, I was used to listing files with the `dir` command. I don't recall working on Linux at the time, although today, `dir` is in the GNU Core Utilities package. Most people use the `ls` command to display the files, along with all their properties, are in a directory. The `ls` command has many options, including `-l` to view a long listing of files, displaying the file owner and permissions. - -### 4. Change directory (cd) - -It is often necessary to change directories. That's the `cd` command's function. For instance, this example takes you from your home directory into the `Documents` directory: - -``` -$ cd Documents -``` - -You can quickly change to your home directory with `cd ~` or just `cd` on most systems. You can use `cd ..` to move up a level. - -### 5. Remove a file (rm) - -Removing files is inherently dangerous. Traditionally, the Linux terminal has no Trash or Bin like the desktop does, so many terminal users have the bad habit of permanently removing data they believe they no longer need. There's no "un-remove" command, though, so this habit can be problematic should you accidentally delete a directory containing important data. - -A Linux system provides `rm` and `shred` for data removal. To delete file `example.txt`, type the following: - -``` -$ rm example.txt -``` - -However, it's much safer to install a trash command, such as [trashy][3] or [trash-cli][4]. Then you can send files to a staging area before deleting them forever: - -``` -$ trash example.txt -``` - -### 6. Copy a file (cp) - -Copy files with the `cp` command. The syntax is copy *from-here* *to-there*. Here's an example: - -``` -$ cp file1.txt newfile1.txt -``` - -You can copy entire directories, too: - -``` -$ cp -r dir1 newdirectory -``` - -### 7. Move and rename a file (mv) - -Renaming and moving a file is functionally the same process. When you move a file, you take a file from one directory and put it into a new one. When renaming a file, you take a file from one directory and put it back into the same directory or a different directory, but with a new name. Either way, you use the `mv` command: - -``` -$ mv file1.txt file_001.txt -``` - -### 8. Create an empty file (touch) - -Easily create an empty file with the `touch` command: - -``` -$ touch one.txt - -$ touch two.txt - -$ touch three.md -``` - -### 9. Change permissions (chmod) - -Change the permissions of a file with the `chmod` command. One of the most common uses of `chmod` is making a file executable: - -``` -$ chmod +x myfile -``` - -This example is how you give a file permission to be executed as a command. This is particularly handy for scripts. Try this simple exercise: - -``` -$ echo 'echo Hello $USER' > hello.sh - -$ chmod +x hello.sh - -$ ./hello.sh -Hello, Don -``` - -### 10. Escalate privileges (sudo) - -While administering your system, it may be necessary to act as the super user (also called root). This is where the `sudo` (or *super user do*) command comes in. Assuming you're trying to do something that your computer alerts you that only an administrator (or root) user can do, just preface it with the command `sudo` : - -``` -$ touch /etc/os-release && echo "Success" -touch: cannot touch '/etc/os-release': Permission denied - -$ sudo touch /etc/os-release && echo "Success" -Success -``` - -### 11. Shut down (poweroff) - -The `poweroff` command does exactly what it sounds like: it powers your computer down. It requires `sudo` to succeed. - -There are actually many ways to shut down your computer and some variations on the process. For instance, the `shutdown` command allows you to power down your computer after an arbitrary amount of time, such as 60 seconds: - -``` -$ sudo shutdown -h 60 -``` - -Or immediately: - -``` -$ sudo shutdown -h now -``` - -You can also restart your computer with `sudo shutdown -r now` or just `reboot`. - -### 12. Read the manual (man) - -The `man` command could be the most important command of all. It gets you to the documentation for each of the commands on your Linux system. For instance, to read more about `mkdir` : - -``` -$ man mkdir -``` - -A related command is `info`, which provides a different set of manuals (as long as they're available) usually written more verbosely than the often terse man pages. - -### What's your favorite Linux command? - -There are many more commands on a Linux system—hundreds! What's your favorite command, the one you find yourself using time and time again? - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/22/5/essential-linux-commands - -作者:[Don Watkins][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/don-watkins -[b]: https://github.com/lkxed -[1]: https://opensource.com/sites/default/files/lead-images/command_line_prompt.png -[2]: https://www.redhat.com/sysadmin/recover-file-deletion-linux -[3]: https://gitlab.com/trashy/trashy -[4]: https://github.com/andreafrancia/trash-cli diff --git a/sources/tech/20220608 WiFi 6 Promises Much More than Faster Speeds.md b/sources/tech/20220608 WiFi 6 Promises Much More than Faster Speeds.md deleted file mode 100644 index ba0801c1a2..0000000000 --- a/sources/tech/20220608 WiFi 6 Promises Much More than Faster Speeds.md +++ /dev/null @@ -1,95 +0,0 @@ -[#]: subject: "WiFi 6 Promises Much More than Faster Speeds" -[#]: via: "https://www.opensourceforu.com/2022/06/wifi-6-promises-much-more-than-faster-speeds/" -[#]: author: "Sharon Katta https://www.opensourceforu.com/author/sharon-katta/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -WiFi 6 Promises Much More than Faster Speeds -====== -WiFi 6 increases the network connectivity, and has been developed to ensure the trillions of devices connected in the near future continue to work seamlessly and efficiently. Though it was certified in 2019, it faced a few challenges in testing due to the pandemic. This article gives an overview of this technology. - -![WiFi-6][1] - -The next-generation standard in WiFi technology, termed ‘WiFi 6’, is also known as ‘AX WiFi’ or ‘802.11ax’. Developed to meet the exponential increase in demand for devices in the world, it can be used for virtual reality (VR) and smart home devices as well. It is an improvement on the current 802.11ac WiFi standard and meets current challenges in terms of capacity, efficiency, coverage and performance. - -![Figure 1: WiFi 6][2] - -Researched in 2014, this standard was invented in 2018 and launched by the IEEE High Efficiency WLAN Study Group (HEW SG). It began certifications in late 2019, with Samsung’s Galaxy Note 10 and Ruckus R750 employing this technology. Specified to operate between the 1GHz and 6GHz bands, WiFi 6 focuses mainly between the 2.4GHz and 5GHz frequencies. - -In an average household today, nine devices are connected to WiFi. WiFi 6 aims at improving the network rather than boosting the speed for individual devices. - -### Features of WiFi 6 - -**Multi-user, multi-input, multi-output (MU-MIMO):** This communication between routers and multiple devices concurrently. It supports four simultaneous data streams, added to which one user can have a considerable bandwidth of incoming data from a smart router, both on the 2.4GHz and 5GHz frequencies. -**1024-QAM:** This helps WiFi 6 encode more bits per packet. There is a 25 per cent increase in throughput. Not only does it improve efficiency in high-traffic situations, it also maximises data rates. This is a huge advantage for modern enterprise applications. -**Orthogonal frequency-division multiplexing (OFDM):** This allows four times as many subcarriers and increases speed by 11 per cent. The expanded signal allows for greater simultaneous packet delivery across users. Hence, the wait time between packets and latency is reduced. -*Increased channel width:* The 160MHz channel communication is added to the 80MHz band, thus doubling the channel width. This allows routers to handle more users and provide larger streams per user. -*Target wake time (TWT):* This feature is unique to WiFi 6. It allows each device to independently negotiate wake time for transmission and reception. This helps to increase total sleep time and maximise battery life. TWT enables many additional networking options, especially for IoT devices. -*Improved security:* All WiFi 6 devices will need to include Wi-Fi Protected Access 3 (WPA3). This will lead to encryption of unauthenticated traffic, robust password protection against brute-force dictionary attacks, and superior data reliability for sensitive information with 192-bit encryption. -*Beamforming:* With eight support antennas, beamforming helps to improve data rates, and the range is extended by directing signals towards specific clients at once. It offers a backup for rapidly moving devices that may face issues with MU-MIMO. Beamforming also helps to control transmissions from antennas that cause signals to interfere on purpose. The signal can then be redirected to a new direction. - -### Devices that support WiFi 6 - -Until recently, WiFi 5 was the standard used for routers, repeaters, mesh networks and many WiFi clients. WiFi 6 was launched in 2019. There will be some compatibility issues for the earlier devices that supported WiFi 5 — they will be able to utilise the WiFi 6 network but not be able to receive support for the same. - -WiFi 6 routers are backward-compatible, and it is better to make sure that the network is ready for that. - -WiFi 6 enables lower battery consumption, making it a great choice for any environment, including the Internet of Things (IoT). It reduces unnecessary data activity, and tells devices when to put their data to sleep and when to be active. As a result, unnecessary data activity is reduced, and performance and battery life are maximised. - -The Samsung Galaxy Note 10 and Ruckus R750 were the world’s first smartphone and access point certified to support Wi-Fi 6, with the latest generation of the Apple iPhone following suit. The Wi-Fi Alliance has set up its certification programme, and new wireless products hitting the market are expected to start applying for compliance certification. The devices listed below are already WiFi 6 enabled: - -* iPhone 11 and after -* Samsung Galaxy S10, S20, Note 10, and Note 20 -* Apple computers with M1 processors -* Smart TVs - -> To take advantage of the improvements in the 802.11ax standard fully, both hardware and software functionalities have to be built on this WiFi technology. - -### Hardware testing - -To unlock the full potential of the latest devices, a WiFi 6 router is needed to run the network. This was an expensive affair a few years ago, but now we have a number of options even for mesh systems, gaming routers, range extenders, and more. The best purchase can be made only when hands-on testing is done. Beating all its competitors, the current king in terms of speed for WiFi 6 routers is TP-Link Archer AX6000. This router was able to transmit data wirelessly at a rate of 1523 Mbps up to a distance of 1.5 metres (5 feet). - -One important thing to remember here is that these routers do not magically increase speeds. The theoretical maximum of achieving 9.6 Gbps is unlikely. This high theoretical speed can be split up across a whole network of devices. - -WiFi 6 emphasises quality connectivity in areas where connected devices are densely populated. It does not increase the speed of each device exponentially but ensures these operate at an optimum level. - -Only the combination of a faster plan from the Internet service providers (ISPs) along with the WiFi 6 router, can fulfil its true potential. The real challenge is for the ISPs, as they need new fibre rollouts to capitalise on this next-gen technology. An important question is: when faster ISP speeds come, will the existing hardware become redundant? - -### Applications of WiFi 6 - -**Large public venues (LPVs):** Stadiums and convention centres are a few of the common areas where thousands of devices connect to WiFi at the same time. WiFi 6 can help to improve attendee experiences, increase customer interactions, and create value-added services like viewing instant replays or ordering food from one’s seat at an event. WiFi 6 allows LPV owners to create new business opportunities. -**Transport hubs:** Public transport stations are also an area where people attempt to connect to the network simultaneously. OFDMA and BSS colouring in WiFi 6 provide the necessary tools needed to overcome this challenge. -**IoT and smart city deployments:** Power efficiencies in WiFi 6 enable IoT devices to go into sleep mode and turn on their transmitters at predefined intervals to prolong field time without much maintenance. -**Education:** Libraries, auditoriums, and lecture halls at college and university campuses have the highest density of WiFi users during the day, and almost no one at night. WiFi 6 is a perfect choice in this situation. - -### The challenges - -WiFi 6 does not promise an increase in speed, but is an upgrade designed to make sure the speeds of our devices within a given range/area doesn’t slow down a few years down the road. There are three major challenges it faces though, which are often overlooked. -Improving the functionality of unsupported devices: Even though WiFi 6 is backward- compatible, justice to it can only be done when this technology is used to the maximum. This means devices need to be upgraded each time. - -Speed and performance outside the internal network: WiFi 6 can provide excellent connectivity for services like cloud file shares. However, the assets and resources of ISPs can affect speed and performance. - -*Coverage issues:* Transmission and bandwidths are capped according to the regulations prevalent in each country. Hence, the coverage of WiFi 6 may be restricted to ensure this cap is met. - -In spite of these challenges, companies like Aruba, Asus, AT&T, Boingo, Broadcom, Cisco, Comcast, CommScope, Cypress, Extreme Networks, Intel, Netgear, Orange, Qualcomm, TP-Link and Xiaomi are all focusing on the potential WiFi 6 has. - -(LCTT 译注:选题删除了原文中的相关产品推荐部分。) - --------------------------------------------------------------------------------- - -via: https://www.opensourceforu.com/2022/06/wifi-6-promises-much-more-than-faster-speeds/ - -作者:[Sharon Katta][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.opensourceforu.com/author/sharon-katta/ -[b]: https://github.com/lkxed -[1]: https://www.opensourceforu.com/wp-content/uploads/2022/05/WiFi-6.jpg -[2]: https://www.opensourceforu.com/wp-content/uploads/2022/05/WiFi-6-1.jpg diff --git a/sources/tech/20220609 A guide to container orchestration with Kubernetes.md b/sources/tech/20220609 A guide to container orchestration with Kubernetes.md index 3db1778c50..6050ced755 100644 --- a/sources/tech/20220609 A guide to container orchestration with Kubernetes.md +++ b/sources/tech/20220609 A guide to container orchestration with Kubernetes.md @@ -2,7 +2,7 @@ [#]: via: "https://opensource.com/article/22/6/container-orchestration-kubernetes" [#]: author: "Seth Kenlon https://opensource.com/users/seth" [#]: collector: "lkxed" -[#]: translator: "Donkey" +[#]: translator: " " [#]: reviewer: " " [#]: publisher: " " [#]: url: " " diff --git a/sources/tech/20220628 Linux su vs sudo- what-s the difference-.md b/sources/tech/20220628 Linux su vs sudo- what-s the difference-.md deleted file mode 100644 index 01bb0f2517..0000000000 --- a/sources/tech/20220628 Linux su vs sudo- what-s the difference-.md +++ /dev/null @@ -1,150 +0,0 @@ -[#]: subject: "Linux su vs sudo: what's the difference?" -[#]: via: "https://opensource.com/article/22/6/linux-su-vs-sudo-sysadmin" -[#]: author: "David Both https://opensource.com/users/dboth" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Linux su vs sudo: what's the difference? -====== -A comparison of Linux commands for escalating privileges for non-root users. - -![bash logo on green background][1] - -Image by: Opensource.com - -Both the `su` and the `sudo` commands allow users to perform system administration tasks that are not permitted for non-privileged users—that is, everyone but the root user. Some people prefer the `sudo` command: For example, [Seth Kenlon][2] recently published "[5 reasons to use sudo on Linux][3]", in which he extols its many virtues. - -I, on the other hand, am partial to the `su` command and prefer it to `sudo` for most of the system administration work I do. In this article, I compare the two commands and explain why I prefer `su` over `sudo` but still use both. - -### Historical perspective of sysadmins - -The `su` and `sudo` commands were designed for a different world. Early Unix computers required full-time system administrators, and they used the root account as their only administrative account. In this ancient world, the person entrusted with the root password would log in as root on a teletype machine or CRT terminal such as the DEC VT100, then perform the administrative tasks necessary to manage the Unix computer. - -The root user would also have a non-root account for non-root activities such as writing documents and managing their personal email. There were usually many non-root user accounts on those computers, and none of those users needed total root access. A user might need to run one or two commands as root, but very infrequently. Many sysadmins log in as root to work as root and log out of our root sessions when finished. Some days require staying logged in as root all day long. Most sysadmins rarely use `sudo` because it requires typing more than necessary to run essential commands. - -These tools both provide escalated privileges, but the way they do so is significantly different. This difference is due to the distinct use cases for which they were originally intended. - -### sudo - -The original intent of `sudo` was to enable the root user to delegate to one or two non-root users access to one or two specific privileged commands they need regularly. The `sudo` command gives non-root users temporary access to the elevated privileges needed to perform tasks such as adding and deleting users, deleting files that belong to other users, installing new software, and generally any task required to administer a modern Linux host. - -Allowing the users access to a frequently used command or two that requires elevated privileges saves the sysadmin a lot of requests from users and eliminates the wait time. The `sudo` command does not switch the user account to become root; most non-root users should never have full root access. In most cases, `sudo` lets a user issue one or two commands then allows the privilege escalation to expire. During this brief time interval, usually configured to be 5 minutes, the user may perform any necessary administrative tasks that require elevated privileges. Users who need to continue working with elevated privileges but are not ready to issue another task-related command can run the `sudo -v` command to revalidate the credentials and extend the time for another 5 minutes. - -Using the `sudo` command does have the side effect of generating log entries of commands used by non-root users, along with their IDs. The logs can facilitate a problem-related postmortem to determine when users need more training. (You thought I was going to say something like "assign blame," didn't you?) - -### su - -The `su` command is intended to allow a non-root user to elevate their privilege level to that of root—in fact, the non-root user becomes the root user. The only requirement is that the user know the root password. There are no limits on this because the user is now logged in as root. - -No time limit is placed on the privilege escalation provided by the su command. The user can work as root for as long as necessary without needing to re-authenticate. When finished, the user can issue the exit command to revert from root back to their own non-root account. - -### Controversy and change - -There has been some recent disagreement about the uses of `su` versus `sudo`. - -> Real [Sysadmins] don't use sudo. —Paul Venezia - -Venezia contends in his [InfoWorld article][4] that `sudo` is used as an unnecessary prop for many people who act as sysadmins. He does not spend much time defending or explaining this position; he just states it as a fact. And I agree with him—for sysadmins. We don't need the training wheels to do our jobs. In fact, they get in the way. - -However, - -> The times they are a'changin.' —Bob Dylan - -Dylan was correct, although he was not singing about computers. The way computers are administered has changed significantly since the advent of the one-person, one-computer era. In many environments, the user of a computer is also its administrator. This makes it necessary to provide some access to the powers of root for those users. - -Some modern distributions, such as Ubuntu and its derivatives, are configured to use the `sudo` command exclusively for privileged tasks. In those distros, it is impossible to log in directly as the root user or even to `su` to root, so the `sudo` command is required to allow non-root users any access to root privileges. In this environment, all system administrative tasks are performed using `sudo`. - -This configuration is possible by locking the root account and adding the regular user account(s) to the wheel group. This configuration can be circumvented easily. Try a little experiment on any Ubuntu host or VM. Let me stipulate the setup here so you can reproduce it if you wish. I installed Ubuntu 16.04 LTS1 and installed it in a VM using VirtualBox. During the installation, I created a non-root user, student, with a simple password for this experiment. - -Log in as the user student and open a terminal session. Look at the entry for root in the `/etc/shadow` file, where the encrypted passwords are stored. - -``` -student@ubuntu1:~$ cat /etc/shadow -cat: /etc/shadow: Permission denied -``` - -Permission is denied, so we cannot look at the `/etc/shadow` file. This is common to all distributions to prevent non-privileged users from seeing and accessing the encrypted passwords, which would make it possible to use common hacking tools to crack those passwords. - -Now let's try to `su -` to root. - -``` -student@ubuntu1:~$ su - -Password: -su: Authentication failure -``` - -This fails because the root account has no password and is locked out. Use the `sudo` command to look at the `/etc/shadow` file. - -``` -student@ubuntu1:~$ sudo cat /etc/shadow -[sudo] password for student: -root:!:17595:0:99999:7::: - -student:$6$tUB/y2dt$A5ML1UEdcL4tsGMiq3KOwfMkbtk3WecMroKN/:17597:0:99999:7::: - -``` - -I have truncated the results to show only the entry for the root and student users. I have also shortened the encrypted password so the entry will fit on a single line. The fields are separated by colons (`:` ) and the second field is the password. Notice that the password field for root is a bang, known to the rest of the world as an exclamation point (`!` ). This indicates that the account is locked and that it cannot be used. - -Now all you need to do to use the root account as a proper sysadmin is to set up a password for the root account. - -``` -student@ubuntu1:~$ sudo su - -[sudo] password for student: -root@ubuntu1:~# passwd root -Enter new UNIX password: -Retype new UNIX password: -passwd: password updated successfully -root@ubuntu1:~# -``` - -Now you can log in directly on a console as root or `su` directly to root instead of using `sudo` for each command. Of course, you could just use `sudo su -` every time you want to log in as root, but why bother? - -Please do not misunderstand me. Distributions like Ubuntu and their up- and downstream relatives are perfectly fine, and I have used several of them over the years. When using Ubuntu and related distros, one of the first things I do is set a root password so that I can log in directly as root. Other distributions, like Fedora and its relatives, now provide some interesting choices during installation. The first Fedora release where I noticed this was Fedora 34, which I have installed many times while writing an upcoming book. - -One of those installation options can be found on the page to set the root password. The new option allows the user to choose "Lock root account" in the way an Ubuntu root account is locked. There is also an option on this page that allows remote SSH login to this host as root using a password, but that only works when the root account is unlocked. The second option is on the page that allows the creation of a non-root user account. One of the options on this page is "Make this user administrator." When this option is checked, the user ID is added to a special group called the wheel group, which authorizes members of that group to use the `sudo` command. Fedora 36 even mentions the wheel group in the description of that checkbox. - -More than one non-root user can be set as an administrator. Anyone designated as an administrator using this method can use the `sudo` command to perform all administrative tasks on a Linux computer. Linux only allows the creation of one non-root user during installation, so other new users can be added to the wheel group when created. Existing users can be added to the wheel group by the root user or another administrator directly by using a text editor or the `usermod` command. - -In most cases, today's administrators need to do only a few essential tasks such as adding a new printer, installing updates or new software, or deleting software that is no longer needed. These GUI tools require a root or administrative password and will accept the password from a user designated as an administrator. - -### How I use su and sudo on Linux - -I use both `su` and `sudo`. They each have an important place in my sysadmin toolbox. - -I can't lock the root account because I need to use it to run my [Ansible][5] playbooks and the [rsbu][6] Bash program I wrote to perform backups. Both of these need to be run as root, and so do several other administrative Bash scripts I have written. I use the `su` command to switch users to the root user so I can perform these and many other common tasks. Elevating my privileges to root using `su` is especially helpful when performing problem determination and resolution. I really don't want a `sudo` session timing out on me while I am in the middle of my thought process. - -I use the `sudo` command for tasks that need root privilege when a non-root user needs to perform them. I set the non-root account up in the sudoers file with access to only those one or two commands needed to complete the tasks. I also use `sudo` myself when I need to run only one or two quick commands with escalated privileges. - -### Conclusions - -The tools you use don't matter nearly as much as getting the job done. What difference does it make if you use vim or Emacs, systemd or SystemV, RPM or DEB, `sudo` or `su` ? The bottom line here is that you should use the tools with which you are most comfortable and that work best for you. One of the greatest strengths of Linux and open source is that there are usually many options available for each task we need to accomplish. - -Both `su` and `sudo` have strengths, and both can be secure when applied properly for their intended use cases. I choose to use both `su` and `sudo` mostly in their historical roles because that works for me. I prefer `su` for most of my own work because it works best for me and my workflow. - -Share how you prefer to work in the comments! - -This article is taken from Chapter 19 of my book The Linux Philosophy for Sysadmins (Apress, 2018) and is republished with permission. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/22/6/linux-su-vs-sudo-sysadmin - -作者:[David Both][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/dboth -[b]: https://github.com/lkxed -[1]: https://opensource.com/sites/default/files/lead-images/bash_command_line.png -[2]: https://opensource.com/users/seth -[3]: https://opensource.com/article/22/5/use-sudo-linux -[4]: http://www.infoworld.com/t/unix/nine-traits-the-veteran-unix-admin-276?page=0,0&source=fssr -[5]: https://opensource.com/article/20/10/first-day-ansible -[6]: https://opensource.com/article/17/1/rsync-backup-linux diff --git a/sources/tech/20220729 Learn Rust by debugging Rust.md b/sources/tech/20220729 Learn Rust by debugging Rust.md deleted file mode 100644 index 0abe7c217e..0000000000 --- a/sources/tech/20220729 Learn Rust by debugging Rust.md +++ /dev/null @@ -1,242 +0,0 @@ -[#]: subject: "Learn Rust by debugging Rust" -[#]: via: "https://opensource.com/article/22/7/learn-rust-rustlings" -[#]: author: "Gaurav Kamathe https://opensource.com/users/gkamathe" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Learn Rust by debugging Rust -====== -Rustlings is an open source project by the Rust team that helps you learn Rust through the process of debugging. - -![Ferris the crab under the sea, unofficial logo for Rust programming language][1] - -Image by: Opensource.com - -In my previous [article about rustup][2], I showed you how to install the Rust toolchain. Well, what good is the toolchain if you won’t be using it to get more hands-on with Rust? Learning any language involves reading existing code and writing a lot of sample programs. That's a good way to become proficient in a language. However, there's a third way: debugging code. - -Learning through debugging involves trying to compile a pre-written (buggy) sample program, understanding the errors generated by the compiler, fixing the sample code, and then re-compiling it. Repeat that process until the code successfully compiles and runs. - -[Rustlings][3] is an open source project by the Rust team that helps you learn Rust through the process of debugging. It also provides you with a lot of hints along the way. If you're a beginner to Rust and have either started or completed reading the Rust book, then rustlings is the ideal next step. Rustlings helps you apply what you've learned from the book, and move to working on bigger projects. - -### Installing rustlings - -I'm using (and recommend) a Fedora machine to try rustlings, but any Linux distribution works. To install rustlings, you must download and run its install script. It's recommended that you do this as a normal user (not root) without any special privileges. - -Remember, for you to be able to use rustlings, you need the Rust toolchain available on your system. If you don't have that already, please refer to my [article on rustup][4]. - -Once you're ready, download the installation script: - -``` -$ curl -L https://raw.githubusercontent.com/rust-lang/rustlings/main/install.sh  > rustlings_install.sh -$ file rustlings_install.sh -rustlings_install.sh: Bourne-Again shell script, ASCII text executable -``` - -Inspect the script to learn what it does: - -``` -$ less rustlings_install.sh -``` - -And then run it to install: - -``` -$ bash rustlings_install.sh -[...] -Installing /home/tux/.cargo/bin/rustlings -Installed package `rustlings v4.8.0 (/home/tux/rustlings)` (executable `rustlings`) -All done! -``` - -Run 'rustlings' to get started. - -### Rustlings exercises - -The installation provides you with the `rustlings` command. Run it along with the `--help` flag to see what options are available. - -``` -$ rustlings --help -``` - -The installation script also clones the rustlings Git repository, and installs all the dependencies required to run the sample programs. You can view the sample programs within the exercises directory under `rustlings` : - -``` -$ cd rustlings -$ pwd -/home/tux/rustlings -$ ls -AUTHORS.md  Cargo.toml        CONTRIBUTING.md  info.toml install.sh README.md  target Cargo.lock  CHANGELOG.md  exercises install.ps1  LICENSE src tests -$ ls -m exercises/ -advanced_errors, clippy, collections, conversions, enums, error_handling, functions, generics, if, intro, macros, mod.rs, -modules, move_semantics, option, primitive_types, quiz1.rs, quiz2.rs, quiz3.rs, quiz4.rs, README.md, -standard_library_types, strings, structs, tests, threads, traits, variables -``` - -### List all exercises from the command line - -The `rustlings` command provides you with a `list` command which displays each sample program, its complete path, and the status (which defaults to **pending**.) - -``` -$ rustlings list -Name         Path                                 Status -intro1       exercises/intro/intro1.rs            Pending -intro2       exercises/intro/intro2.rs            Pending -variables1   exercises/variables/variables1.rs    Pending -variables2   exercises/variables/variables2.rs    Pending -variables3   exercises/variables/variables3.rs    Pending -[...] -``` - -Near the end of the output, you're given a progress report so you can track your work. - -``` -Progress: You completed 0 / 84 exercises (0.00 %). -``` - -### View sample programs - -The `rustings list` command shows you what programs are available, so at any time you can view the code of those programs by copying the complete paths into your terminal as an argument for the [cat][5] or [less][6] commands: - -``` -$ cat exercises/intro/intro1.rs -``` - -### Verify your programs - -Now you can start debugging programs. You can do that using the `verify` command. Notice that rustlings chooses the first program in the list (`intro1.rs` ), tries to compile it, and succeeds: - -``` -$ rustlings verify -Progress: [-----------------------------------] 0/84 -✅ Successfully ran exercises/intro/intro1.rs! - -You can keep working on this exercise, -or jump into the next one by removing the `I AM NOT DONE` comment: - - 6 |  // Execute the command `rustlings hint intro1` for a hint. - 7 |   - 8 |  // I AM NOT DONE - 9 | -``` - -As you can see from the output, even though the sample code compiles, there's work yet to be done. Each sample program has the following comment in its source file: - -``` -$ grep "NOT DONE" exercises/intro/intro1.rs -// I AM NOT DONE -``` - -Although the compilation of the first program worked fine, rustlings won't move to the next program until you remove the `I AM NOT DONE` comment. - -### Moving to the next exercise - -Once you have removed the comment from `intro1.rs`, you can move to the next exercise by running the `rustlings verify` command again. This time, you may notice that rustlings tries to compile the next program (`intro2.rs` ) in the series, but runs into an error. You're expected to debug that issue, fix it, and then move forward. This is a critical step, allowing you to understand why Rust says a program has bugs. - -``` -$ rustlings verify -Progress: [>------------------------] 1/84 -⚠️  Compiling of exercises/intro/intro2.rs failed! Please try again. Here's the output: -error: 1 positional argument in format string, but no arguments were given - --> exercises/intro/intro2.rs:8:21 -  | -8 |         println!("Hello {}!"); -  |                         ^^ - -error: aborting due to previous error -``` - -### Getting a hint - -Rustlings has a handy `hint` argument, which tells you exactly what's wrong with the sample program, and how to fix it. You can think of it as an add-on help option, in addition to what the compiler error message tells you. - -``` -$ rustlings hint intro2 -Add an argument after the format string. -``` - -Based on the above hint, fixing the program is easy. All you need to do is add an additional argument to the `println` statement. This diff should help you understand the changes: - -``` -< println!("Hello {}!", "world"); ---- -> println!("Hello {}!"); -``` - -Once you make that change, and removed the `NOT DONE` comment from the source code, you can run `rustlings verify` again to compile and run the code. - -``` -$ rustlings verify -Progress: [>-------------------------------------] 1/84 -✅ Successfully ran exercises/intro/intro2.rs! -``` - -### Track progress - -You aren't going to finish all of the exercises in a day, and it's easy to lose track of where you left off. You can run the `list` command to see the status of your work. - -``` -$ rustlings list -Name         Path                                  Status -intro1       exercises/intro/intro1.rs             Done   -intro2       exercises/intro/intro2.rs             Done   -variables1   exercises/variables/variables1.rs     Pending -variables2   exercises/variables/variables2.rs     Pending -variables3   exercises/variables/variables3.rs     Pending -[...] -``` - -### Run specific exercises - -If you don't want to start from the beginning and skip a few exercises, rustlings allows you to focus on specific exercises using the `rustlings run` command. This runs a specific program without requiring the previous lesson to be verified. For example: - -``` -$ rustlings run intro2 -Hello world! -✅ Successfully ran exercises/intro/intro2.rs -$ rustlings run variables1 -``` - -Typing exercise names can become tedious, but rustlings provides you with a handy `next` command so you can move to the next exercise in the series. - -``` -$ rustlings run next -``` - -### Alternative watch command - -If you don't want to keep typing `verify` after each modification you make, you can run the `watch` command in a terminal window, and then keep modifying the source code to fix issues. The `watch` command detects these modifications, and keeps re-compiling the program to see whether the issue has been fixed. - -``` -$ rustlings watch -``` - -### Learn by debugging - -The Rust compiler is known to provide very meaningful error messages, which helps you understand issues in your code. This usually leads to faster debugging. Rustlings is a great way to practice Rust, to get used to reading error messages, and understand the Rust language. Check out the recent features of Rustlings 5.0.0 on [GitHub][7]. - -**[[ Practice programming with Rust. Download our Rust cheat sheet. ]][8]** - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/22/7/learn-rust-rustlings - -作者:[Gaurav Kamathe][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/gkamathe -[b]: https://github.com/lkxed -[1]: https://opensource.com/sites/default/files/lead-images/rust_programming_crab_sea.png -[2]: https://opensource.com/article/22/6/rust-toolchain-rustup -[3]: https://github.com/rust-lang/rustlings -[4]: https://opensource.com/article/22/6/rust-toolchain-rustup -[5]: https://opensource.com/article/19/2/getting-started-cat-command -[6]: https://opensource.com/article/18/4/using-less-view-text-files-command-line -[7]: https://github.com/rust-lang/rustlings/releases/tag/5.0.0 -[8]: https://opensource.com/downloads/rust-cheat-sheet diff --git a/sources/tech/20220810 How to Record Streaming Audio in Ubuntu and other Linux Distributions.md b/sources/tech/20220810 How to Record Streaming Audio in Ubuntu and other Linux Distributions.md deleted file mode 100644 index 8620d214f8..0000000000 --- a/sources/tech/20220810 How to Record Streaming Audio in Ubuntu and other Linux Distributions.md +++ /dev/null @@ -1,187 +0,0 @@ -[#]: subject: "How to Record Streaming Audio in Ubuntu and other Linux Distributions" -[#]: via: "https://itsfoss.com/record-streaming-audio/" -[#]: author: "Abhishek Prakash https://itsfoss.com/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -How to Record Streaming Audio in Ubuntu and other Linux Distributions -====== -How to record audio in Ubuntu and other Linux distributions? - -If you want to record a voice over through the microphone of your computer, you can use GNOME Sound recorder or Audacity. - -Using GNOME Sound Recorder is easy but it lacks features. Audacity could be overwhelming initially but it has plenty of features for professional level recording. However, I am not going into that detail in this tutorial. - -GNOME Sound Recorder works with the microphone. There is another tool called Audio recorder and you can use it to record streaming music (from Sptify, YouTube, internet radio, Skype and most other sources) apart from microphone input. - -To summarize, I’ll show you the steps: - -* To record sound using GNOME Sound Recorder -* To record streaming audio using Audio Recorder - -### Using Sound Recorder to record audio from the microphone - -GNOME desktop environment has a good variety of useful applications. Sound Recorder is one of them. - -You can install the [Sound Recorder][1] from the Ubuntu Software Center. - -![Sound Recorder can be installed from the Ubuntu Software Center][2] - -Or, you can use this command in the terminal to install it: - -``` -sudo apt install gnome-sound-recorder -``` - -Once installed, you can find it in the system menu and start from there. - -![GNOME Sound Recorder][3] - -Before you start using it, you should ensure that you have the correct input source chosen in the system settings. GNOME Sound Recorder - -![Ensure that you have chosen correct input in system settings][4] - -Once you open the Sound Recorder application, it will show an interface like the one below. - -![Hit the Record button to start audio recording][5] - -Hit on the record button and it starts recording audio instantly. While recording, you get options to pause, stop or discord the recording. - -![Options while recording audio][6] - -Your recordings are saved and available from the application interface itself. Click on the saved recordings to highlight it. - -You can replay the recordings or delete it. You can choose to save it to another location by clicking the save/download button. You may also rename the recordings using the edit button. - -![Saved recordings][7] - -That’s quite convenient, right? You can choose to record in MP3, FLAC and a couple of more formats. - -#### Removing GNOME Sound Recorder - -Don’t like it or find it lacking in terms of features? - -You can remove GNOME Sound Recorder from the Ubuntu Software Center or use the following command: - -``` -sudo apt remove gnome-sound-recorder -``` - -The application of GNOME Sound recorder is limited. It only records from the microphone and this is not what you would want in certain situations. - -Imagin you want to record a Skype call or something which is playing in an application or web browser? The nifty Audio Recorder helps in such cases. - -### Using Audio Recorder to record streaming audio - -You can watch this video to see how to use Audio Recorder. It’s a bit old but the steps are the same. - -![A Video from YouTube][8] - -[Subscribe to our YouTube channel for more Linux videos][9] - -You can use the [official PPA][10] to install Audio Recorder in Ubuntu and Linux Mint. Use the following commands in the terminal (Ctrl+Alt+T) one by one: - -``` -sudo apt-add-repository ppa:audio-recorder/ppa -sudo apt update -sudo apt install audio-recorder -``` - -Alternatively, you can download the source code from [launchpad][11]. Once installed, you can start the application from the Activity Overview: - -![Audio Recorder][12] - -#### Record all kinds of sound from various sources - -Audio Recorder records all kinds of sounds your computer makes. - -It records audio played through your system’s soundcard, microphones, browsers, webcams and more. - -In other words, it records even if your system sneezes (given that you want to record it). It allows you to select the recording device such as webcam, microphone, Skype, etc. - -To record the streaming music, select the appropriate source. For example, if you are playing streaming radio in Rhythmbox, then select Rythmbox. - -![Audio-Recorder Audio Settings][13] - -#### Record at your convenience - -Audio Recorder also gives you the option of setting timer. You can start, stop or pause recording at a given clock time or at a pre-defined interval. You can also set the limit on the recorded file size. - -Moreover, you can pause (and stop) when there is no audio (or very low sound) and resume it when sound comes back. - -All you have to do is to edit the text in the Timer panel. Comment out the “rules” you don’t want to apply and edit the ones per your requirement. - -![Audio-recorder Timer Settings][14] - -It provides additional settings like auto start at login, show tray icon and other record settings. - -![Audio-recorder Additional Settings][15] - -#### Save the recorded music file in various file formats - -Another gem. You can save the recorded file in your favourite file format. Supported file formats are OGG audio, Flac, MP3, SPX and WAV. I prefer MP3 for my recordings. - -The **recorded files are stored in ~/Audio** i.e., in the Audio folder inside your home directory. - -![Audio-recorder Audio Formats][16] - -#### How good is Audio Recorder? - -I used Audio Recorder in Ubuntu to [record the music played on YouTube][17]. I saved a 2-minute video in MP3 format that took 934 KB of space. But I must say I was not expecting the recorded sound quality to be so good. Honestly, I could not distinguish it from the original YouTube song. - -#### Removing Audio Recorder - -If you don’t find Audio Recorder to your liking, you can remove it using the following commands: - -``` -sudo apt remove audio-recorder -``` - -It will be a good idea to [remove the PPA as well][18]: - -``` -sudo apt-add-repository -r ppa:audio-recorder/ppa -``` - -### Conclusion - -There are probably several other tools for audio recording in Linux. Like GNOME, other desktop environments may also have sound recording apps. I know Deepin has one for sure. - -GNOME Sound Recorder is a decent tool for recording sound from your microphone. For recording sound from various sources, Audio Recorder is a good choice. - -I hope it helps with your audio recording needs. Let me know if you have any suggestions. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/record-streaming-audio/ - -作者:[Abhishek Prakash][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/ -[b]: https://github.com/lkxed -[1]: https://wiki.gnome.org/Apps/SoundRecorder -[2]: https://itsfoss.com/wp-content/uploads/2022/08/sound-recorder-ubuntu.png -[3]: https://itsfoss.com/wp-content/uploads/2022/08/sound-recorder.png -[4]: https://itsfoss.com/wp-content/uploads/2022/08/microphone-settings-ubuntu.png -[5]: https://itsfoss.com/wp-content/uploads/2022/08/using-sound-recorder-linux.png -[6]: https://itsfoss.com/wp-content/uploads/2022/08/sound-recording-with-sound-recorder.png -[7]: https://itsfoss.com/wp-content/uploads/2022/08/sound-recorder-interface.png -[8]: https://youtu.be/o7Ia2QGeB7Q -[9]: https://www.youtube.com/c/itsfoss?sub_confirmation=1 -[10]: https://launchpad.net/~audio-recorder/+archive/ubuntu/ppa -[11]: https://launchpad.net/audio-recorder -[12]: https://itsfoss.com/wp-content/uploads/2022/08/audio-recorder-in-overview.png -[13]: https://itsfoss.com/wp-content/uploads/2022/08/audio-recorder-audio-settings.png -[14]: https://itsfoss.com/wp-content/uploads/2022/08/audio-recorder-timer-settings.png -[15]: https://itsfoss.com/wp-content/uploads/2022/08/audio-recorder-additional-settings.png -[16]: https://itsfoss.com/wp-content/uploads/2022/08/audio-recorder-audio-formats.png -[17]: https://itsfoss.com/youtube-dl-audio-only/ -[18]: https://itsfoss.com/how-to-remove-or-delete-ppas-quick-tip/ diff --git a/sources/tech/20220814 How to Record Audio in Linux With Audacity -and Reduce Noise-.md b/sources/tech/20220814 How to Record Audio in Linux With Audacity -and Reduce Noise-.md deleted file mode 100644 index b32cba6876..0000000000 --- a/sources/tech/20220814 How to Record Audio in Linux With Audacity -and Reduce Noise-.md +++ /dev/null @@ -1,131 +0,0 @@ -[#]: subject: "How to Record Audio in Linux With Audacity (and Reduce Noise)" -[#]: via: "https://itsfoss.com/audacity-recording/" -[#]: author: "Anuj Sharma https://itsfoss.com/author/anuj/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -How to Record Audio in Linux With Audacity (and Reduce Noise) -====== - -[Audacity][1] is a free and open source cross-platform [audio editor][2]. Professionals use it for the tone of features it provides in such a small package. - -You don’t have to be a professional and use all of its features. You can use it to record audio from your microphone and do some basics like background noise removal. - -I will show you how to do that in this tutorial. - -### Installing Audacity on Linux - -Installing Audacity on Linux is quite a straightforward process. Because of its popularity, it is available in the official repositories of most Linux distributions. - -You can search for it in your distribution’s software center or package manager. - -As a terminal fan, let me share the commands for the common distros. - -For Debian or Ubuntu-based distributions: - -``` -sudo apt install audacity -``` - -For RHEL or Fedora-based distributions: - -``` -sudo dnf install audacity -``` - -If you use an Arch-based distribution: - -``` -sudo pacman -Syu audacity -``` - -**Note** that installing via the official repositories may not give you the [latest version][3]. To get the latest version, you may use the AppImage, or Flatpak/Snap packages. - -### Recording audio using Audacity - -Once Audacity is installed, open it from the application menu or launch it from the terminal. You will be greeted with something like this: - -![Audacity Interface][4] - -It is easy to start recording by clicking on the **record** button (the red dot). When you are done, click on the **stop** button (square icon) to finish. You also get a waveform preview of your recording, as shown below: - -![record audio with audacity][5] - -Then, you can check what was recorded by clicking the **play** button (the green icon). - -In case you do not see any waveform it indicates that nothing has been recorded. Probably, you have not set up your input correctly. Ensure that you have selected the correct microphone and it is not muted in the **system settings**. You can also access this from the Audacity interface. - -The recordings are not saved automatically as MP3 or other formats. **To save the recording**, you can go to File → Export and select **Export as MP3** (or any other preferred format). - -### Reducing background noise with Audacity - -There is another fantastic feature available in Audacity which you can use to reduce white noise in recorded audio. - -The best practice would be to not say anything for the first five seconds when you start recording with Audacity. This should give you desired background noise. - -On the waveform of your audio recording, select the part you think is the background noise. - -![Background noise][6] - -With the noise part selected, go to **Effects → Noise Reduction** from the top file menu. - -It will open a pop-up window like this. Click on the “**Get Noise Profile**” here. - -![Noise Reduction Effect Popup Window][7] - -Now, you have got the noise profile set. Now you have to use it to reduce it from the recording. - -Press Ctrl + A shortcut key to select the entire recording. You may also select part of it, noise will be reduced from the selected portion only. - -With the audio track selected, again go to **Effect → Noise Reduction**. - -**Don’t click** on ‘Get Noise Profile’ this time. This time, you should be able to press the **OK** button. - -Just press the OK button and this will apply the noise reduction effect to your recording, which gets reflected on the waveform as shown below: - -![Audio Waveform after Noise Reduction][8] - -Now the recorded audio will have less noise as compared. You can fine-tune the noise filtering while selecting the Noise Reduction effect. - -To summarize: - -* Select the noise part, go to Effect->Noise Reduction and then click “Get Noise Profile” -* Press Ctrl+A to select entire audio recording, go to Effect->Noise Reduction and press OK this time - -Note that you cannot remove every type of noise, but this should help nonetheless. - -### Audacity can do a lot more - -Recording audio with Audacity may not seem as easy as using GNOME Sound Recorder, but it’s not overly complicated. The noise reduction feature comes in handy if you are recording voiceovers. - -Audacity has a lot more features, and it is not possible to cover all of them in a single tutorial. This is why I’ll keep this short and simple. - -If you have a problem with [Audacity’s privacy policy adjustments][9] (in 2021), try out some of the available forks. - -I hope this little tutorial helps you use Audacity for audio recording. Let me know if you have questions or suggestions. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/audacity-recording/ - -作者:[Anuj Sharma][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/anuj/ -[b]: https://github.com/lkxed -[1]: https://github.com/audacity/audacity -[2]: https://itsfoss.com/best-audio-editors-linux/ -[3]: https://github.com/audacity/audacity/releases -[4]: https://itsfoss.com/wp-content/uploads/2022/08/audacity-interface.png -[5]: https://itsfoss.com/wp-content/uploads/2022/08/record-audio-with-audacity.png -[6]: https://itsfoss.com/wp-content/uploads/2022/08/audacity-noise-reduction.png -[7]: https://itsfoss.com/wp-content/uploads/2022/08/audacity-noise-steps.png -[8]: https://itsfoss.com/wp-content/uploads/2022/08/audacity-noise-reduced.png -[9]: https://news.itsfoss.com/audacity-fiasco-fork/ diff --git a/sources/tech/20220903 Infuse your awk scripts with Groovy.md b/sources/tech/20220903 Infuse your awk scripts with Groovy.md deleted file mode 100644 index 0dd7cadd45..0000000000 --- a/sources/tech/20220903 Infuse your awk scripts with Groovy.md +++ /dev/null @@ -1,348 +0,0 @@ -[#]: subject: "Infuse your awk scripts with Groovy" -[#]: via: "https://opensource.com/article/22/9/awk-groovy" -[#]: author: "Chris Hermansen https://opensource.com/users/clhermansen" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Infuse your awk scripts with Groovy -====== -Awk and Groovy complement each other to create robust, useful scripts. - -Recently I wrote a series on using Groovy scripts to clean up the tags in my music files. I developed a [framework][2] that recognized the structure of my music directory and used it to iterate over the content files. In the final article of that series, I separated this framework into a utility class that my scripts could use to process the content files. - -This separate framework reminded me a lot of the way awk works. For those of you unfamiliar with awk, you might benefit from Opensource.com's eBook, [A practical guide to learning awk][3]. - -I have used awk extensively since 1984, when our little company bought its first "real" computer, which ran System V Unix. For me, awk was a revelation: It had associative memory— think arrays indexed by strings instead of numbers. It had regular expressions built in, seemed designed to deal with data, especially in columns, and was compact and easy to learn. Finally, it was designed to work in Unix pipelines, reading its data from standard input or files and writing to output, with no ceremony required to do so—data just appeared in the input stream. - -To say that awk has been an essential part of my day-to-day computing toolkit is an understatement. And yet there are a few things about how I use awk that leave me unsatisfied. - -Probably the main issue is that awk is good at dealing with data presented in delimited fields but curiously not good at handling comma-separated-value files, which can have field delimiters embedded within a field, provided that the field is quoted. Also, regular expressions have moved on since awk was invented, and needing to remember two sets of regular expression syntax rules is not conducive to bug-free code. [One set of such rules is bad enough][4]. - -Because awk is a small language, it's missing some things that I sometimes find useful, like a richer assortment of base types, structures, switch statements, and so on. - -In contrast, Groovy has all of these good things: access to [the OpenCSV library][5], which facilitates dealing with CSV files, Java regular expressions and great matching operators, a rich assortment of base types, classes, switch statements, and more. - -What Groovy lacks is the simple pipeline-oriented view of data as an incoming stream and processed data as an outgoing stream. - -But my music directory processing framework made me think, maybe I can create a Groovy version of awk's "engine". That's my objective for this article. - -### Install Java and Groovy - -Groovy is based on Java and requires a Java installation. Both a recent and decent version of Java and Groovy might be in your Linux distribution's repositories. Groovy can also be installed following the instructions on the [Groovy homepage][6]. A nice alternative for Linux users is [SDKMan][7], which can be used to get multiple versions of Java, Groovy and many other related tools. For this article, I'm using SDK's releases of: - -* Java: version 11.0.12-open of OpenJDK 11; -* Groovy: version 3.0.8. - -### Creating awk with Groovy - -The basic idea here is to encapsulate the complexities of opening a file or files for processing, splitting the line into fields, and providing access to the stream of data in three parts: - -* Before any data is processed -* On each line of data -* After all data is processed - -I'm not going for the general case of replacing awk with Groovy. Instead, I'm working toward my typical use case, which is: - -* Use a script file rather than having the code on the command line -* Process one or more input files -* Set my default field delimiter to `|` and split lines read on that delimiter -* Use OpenCSV to do the splitting (what I can't do in awk) - -### The framework class - -Here's the "awk engine" in a Groovy class: - -``` -1 @Grab('com.opencsv:opencsv:5.6') - 2 import com.opencsv.CSVReader - 3 public class AwkEngine { - 4 // With admiration and respect for - 5 //     Alfred Aho - 6 //     Peter Weinberger - 7 //     Brian Kernighan - 8 // Thank you for the enormous value - 9 // brought my job by the awk -10 // programming language -11 Closure onBegin -12 Closure onEachLine -13 Closure onEnd - -14 private String fieldSeparator -15 private boolean isFirstLineHeader -16 private ArrayList fileNameList -    -17 public AwkEngine(args) { -18     this.fileNameList = args -19     this.fieldSeparator = "|" -20     this.isFirstLineHeader = false -21 } -    -22 public AwkEngine(args, fieldSeparator) { -23     this.fileNameList = args -24     this.fieldSeparator = fieldSeparator -25     this.isFirstLineHeader = false -26 } -    -27 public AwkEngine(args, fieldSeparator, isFirstLineHeader) { -28     this.fileNameList = args -29     this.fieldSeparator = fieldSeparator -30     this.isFirstLineHeader = isFirstLineHeader -31 } -    -32 public void go() { -33     this.onBegin() -34     int recordNumber = 0 -35     fileNameList.each { fileName -> -36         int fileRecordNumber = 0 -37         new File(fileName).withReader { reader -> -38             def csvReader = new CSVReader(reader, -39                 this.fieldSeparator.charAt(0)) -40             if (isFirstLineHeader) { -41                 def csvFieldNames = csvReader.readNext() as -42                     ArrayList -43                 csvReader.each { fieldsByNumber -> -44                     def fieldsByName = csvFieldNames. -45                         withIndex(). -46                         collectEntries { name, index -> -47                             [name, fieldsByNumber[index]] -48                         } -49                     this.onEachLine(fieldsByName, -50                             recordNumber, fileName, -51                             fileRecordNumber) -52                     recordNumber++ -53                     fileRecordNumber++ -54                 } -55             } else { -56                 csvReader.each { fieldsByNumber -> -57                     this.onEachLine(fieldsByNumber, -58                         recordNumber, fileName, -59                         fileRecordNumber) -60                     recordNumber++ -61                     fileRecordNumber++ -62                 } -63             } -64         } -65     } -66     this.onEnd() -67 } -68 } -``` - -While this looks like a fair bit of code, many of the lines are continuations of a split longer lines (for example, normally you would combine lines 38 and 39, lines 41 and 42, and so on). Let's look at this line by line. - -Line 1 uses the `@Grab` annotation to fetch the OpenCSV library version 5.6 from [Maven Central][8]. No XML required. - -In line 2, I import OpenCSV's `CSVReader` class. - -In line 3, just as with Java, I declare a public utility class, `AwkEngine`. - -Lines 11-13 define the Groovy Closure instances used by the script as hooks into this class. These are "public by default" as is the case with any Groovy class—but Groovy creates the fields as private and external references to these (using getters and setters provided by Groovy). I'll explain that further in the sample scripts below. - -Lines 14-16 declare the private fields—the field separator, a flag to indicate whether the first line of a file is a header, and a list for the file name. - -Lines 17-31 define three constructors. The first receives the command line arguments. The second receives the field separator character. The third receives the flag indicating whether the first line is a header or not. - -Lines 31-67 define the engine itself, as the `go()` method. - -Line 33 calls the `onBegin()` closure (equivalent to the awk `BEGIN {}` statement). - -Line 34 initializes the `recordNumber` for the stream (equivalent to the awk `NR` variable) to 0 (note I am doing 0-origin here rather than the awk 1-origin). - -Lines 35-65 use each `{}` to loop over the list of files to be processed. - -Line 36 initializes the `fileRecordNumber` for the file (equivalent to the awk `FNR` variable) to 0 (0-origin, not 1-origin). - -Lines 37-64 get a `Reader` instance for the file and process it. - -Lines 38-39 get a `CSVReader` instance. - -Line 40 checks to see whether the first line is being treated as a header. - -If the first line is being treated as a header, then lines 41-42 get the list of field header names from the first record. - -Lines 43-54 process the rest of the records. - -Lines 44-48 copy the field values into the map of `name:value`. - -Lines 49-51 call the onEachLine`()` closure (equivalent to what appears in an awk program between `BEGIN {}` and `END {}`, though no pattern can be attached to make the execution conditional), passing in the map of `name:value`, the stream record number, the file name and the file record number. - -Lines 52-53 increment the stream record number and file record number. - -Otherwise: - -Lines 56-62 process the records. - -Lines 57-59 call the `onEachLine()` closure, passing in the array of field values, the stream record number, the file name and the file record number. - -Lines 60-61 increment the stream record number and file record number. - -Line 66 calls the `onEnd()` closure (equivalent to the awk `END {}` ). - -That's it for the framework. Now you can compile it: - -``` -$ groovyc AwkEngine.groovy -``` - -A couple of comments: - -If an argument is passed in that is not a file, the code fails with a standard Groovy stack trace, which looks something like this: - -``` -Caught: java.io.FileNotFoundException: not-a-file (No such file or directory) -java.io.FileNotFoundException: not-a-file (No such file or directory) -at AwkEngine$_go_closure1.doCall(AwkEngine.groovy:46) -``` - -OpenCSV tends to return `String[]` values, which are not as convenient as `List` values in Groovy (for example there is no `each {}` defined for an array). Lines 41-42 convert the header field value array into a list, so perhaps `fieldsByNumber` in line 57 should also be converted into a list. - -### Using the framework in scripts - -Here's a very simple script using `AwkEngine` to examine a file like `/etc/group`, which is colon-delimited and has no header: - -``` -1 def ae = new AwkEngine(args, ‘:') -2 int lineCount = 0 - -3 ae.onBegin = { -4    println “in begin” -5 } - -6 ae.onEachLine = { fields, recordNumber, fileName, fileRecordNumber -> -7    if (lineCount < 10) -8       println “fileName $fileName fields $fields” -9       lineCount++ -10 } - -11 ae.onEnd = { -12    println “in end” -13    println “$lineCount line(s) read” -14 } - -15 ae.go() -``` - -Line 1 calls the two-argument constructor, passing in the argument list and the colon as delimiter. - -Line 2 defines a script top-level variable, `lineCount`, used to record the count of lines read (note that Groovy closures don't require variables defined external to the closure to be final). - -Lines 3-5 define the `onBegin()` closure, which just prints the string "in begin" on standard output. - -Lines 6-10 define the `onEachLine()` closure, which prints the file name and the fields for the first 10 lines and in any case increments the line count. - -Lines 11-14 define the `onEnd()` closure, which prints the string "in end" and the count of the number of lines read. - -Line 15 runs the script using the `AwkEngine`. - -Run this script as follows: - -``` -$ groovy Test1Awk.groovy /etc/group -in begin -fileName /etc/group fields [root, x, 0, ] -fileName /etc/group fields [daemon, x, 1, ] -fileName /etc/group fields [bin, x, 2, ] -fileName /etc/group fields [sys, x, 3, ] -fileName /etc/group fields [adm, x, 4, syslog,clh] -fileName /etc/group fields [tty, x, 5, ] -fileName /etc/group fields [disk, x, 6, ] -fileName /etc/group fields [lp, x, 7, ] -fileName /etc/group fields [mail, x, 8, ] -fileName /etc/group fields [news, x, 9, ] -in end -78 line(s) read -$ -``` - -Of course the `.class` files created by compiling the framework class must be on the classpath for this to work. Naturally, you could use `jar` to package up those class files. - -I really like Groovy's support for the delegation of behavior, which requires various shenanigans in other languages. For many years Java required anonymous classes and quite a bit of extra code. Lambdas have gone a long way to fixing this, but they still cannot refer to non-final variables outside their scope. - -Here's another, more interesting script that is very reminiscent of my typical use of awk: - -``` -1 def ae = new AwkEngine(args, ‘;', true) -2 ae.onBegin = { -3    // nothing to do here -4 } - -5 def regionCount = [:] -6    ae.onEachLine = { fields, recordNumber, fileName, fileRecordNumber -> -7    regionCount[fields.REGION] = -8    (regionCount.containsKey(fields.REGION) ? -9    regionCount[fields.REGION] : 0) + -10   (fields.PERSONAS as Integer) -11 } - -12 ae.onEnd = { -13    regionCount.each { region, population -> -14    println “Region $region population $population” -15    } -16 } - -17 ae.go() -``` - -Line 1 calls the three-argument constructor, recognizing that this is a "true CSV" file with the header being on the first line. Because it's a Spanish file, where the comma is used as the decimal "point", the standard delimiter is the semicolon. - -Lines 2-4 define the `onBegin()` closure which in this case doesn't do anything. - -Line 5 defines an (empty) `LinkedHashMap`, which you will fill with String keys and Integer values. The data file is from Chile's most recent census and you are calculating the number of people in each region of Chile in this script. - -Lines 6-11 processes the lines in the file (there are 180,500 including the header)—note that in this case, because you are defining line 1 as the CSV column headers, the fields parameter is going to be an instance of `LinkedHashMap`. - -Lines 7-10 increment the `regionCount` map, using the value in the field REGION as the key and the value in the field PERSONAS as the value—note that, unlike awk, in Groovy you can't refer to a non-existent map entry on the right-hand side and expect a blank or zero value to materialize. - -Lines 12- 16 print out population by region. - -Line 17 runs the script on the `AwkEngine` instance. - -Run this script as follows: - -``` -$ groovy Test2Awk.groovy ~/Downloads/Censo2017/ManzanaEntidad_CSV/Censo*csv -Region 1 population 330558 -Region 2 population 607534 -Region 3 population 286168 -Region 4 population 757586 -Region 5 population 1815902 -Region 6 population 914555 -Region 7 population 1044950 -Region 8 population 1556805 -Region 16 population 480609 -Region 9 population 957224 -Region 10 population 828708 -Region 11 population 103158 -Region 12 population 166533 -Region 13 population 7112808 -Region 14 population 384837 -Region 15 population 226068 -$ -``` - -That's it. For those of you who love awk and yet would like a little more, I hope you enjoy this Groovy approach. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/22/9/awk-groovy - -作者:[Chris Hermansen][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/clhermansen -[b]: https://github.com/lkxed -[1]: https://opensource.com/sites/default/files/lead-images/browser_screen_windows_files.png -[2]: https://opensource.com/article/22/8/music-tagging-framework-groovy -[3]: https://opensource.com/downloads/awk-ebook -[4]: http://regex.info/blog/2006-09-15/247 -[5]: http://opencsv.sourceforge.net/ -[6]: https://groovy.apache.org/download.html -[7]: https://opensource.com/article/22/3/manage-java-versions-sdkman -[8]: https://mvnrepository.com/artifact/com.opencsv/opencsv diff --git a/sources/tech/20220906 How to send raw network packets in Python with tun-tap.md b/sources/tech/20220906 How to send raw network packets in Python with tun-tap.md index f7f5e863bf..836dff1842 100644 --- a/sources/tech/20220906 How to send raw network packets in Python with tun-tap.md +++ b/sources/tech/20220906 How to send raw network packets in Python with tun-tap.md @@ -2,7 +2,7 @@ [#]: via: "https://jvns.ca/blog/2022/09/06/send-network-packets-python-tun-tap/" [#]: author: "Julia Evans https://jvns.ca/" [#]: collector: "lujun9972" -[#]: translator: "HankChow" +[#]: translator: " " [#]: reviewer: " " [#]: publisher: " " [#]: url: " " diff --git a/sources/tech/20220910 How to Install and Use virt-manager Virtual Machine Manager in Ubuntu and Other Linux.md b/sources/tech/20220910 How to Install and Use virt-manager Virtual Machine Manager in Ubuntu and Other Linux.md index 637044c34a..1712b69513 100644 --- a/sources/tech/20220910 How to Install and Use virt-manager Virtual Machine Manager in Ubuntu and Other Linux.md +++ b/sources/tech/20220910 How to Install and Use virt-manager Virtual Machine Manager in Ubuntu and Other Linux.md @@ -2,7 +2,7 @@ [#]: via: "https://www.debugpoint.com/virt-manager/" [#]: author: "Arindam https://www.debugpoint.com/author/admin1/" [#]: collector: "lkxed" -[#]: translator: "yjacks" +[#]: translator: " " [#]: reviewer: " " [#]: publisher: " " [#]: url: " " diff --git a/sources/tech/20220912 Why do domain names sometimes end with a dot.md b/sources/tech/20220912 Why do domain names sometimes end with a dot.md deleted file mode 100644 index c8b73a55d5..0000000000 --- a/sources/tech/20220912 Why do domain names sometimes end with a dot.md +++ /dev/null @@ -1,256 +0,0 @@ -[#]: subject: "Why do domain names sometimes end with a dot?" -[#]: via: "https://jvns.ca/blog/2022/09/12/why-do-domain-names-end-with-a-dot-/" -[#]: author: "Julia Evans https://jvns.ca/" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Why do domain names sometimes end with a dot? -====== - -Hello! When I was writing the zine [How DNS Works][1] earlier this year, someone asked me – why do people sometimes put a dot at the end of a domain name? For example, if you look up the IP for `example.com` by running `dig example.com`, you’ll see this: - -``` - - $ dig example.com - example.com. 5678 IN A 93.184.216.34 - -``` - -`dig` has put a `.` to the end of `example.com` – now it’s `example.com.`! What’s up with that? - -Also, some DNS tools require domains to have a `"."` at the end: if you try to pass `example.com` to [miekg/dns][2], like this, it’ll fail: - -``` - - // trying to send this message will return an error - m := new(dns.Msg) - m.SetQuestion("example.com", dns.TypeA) - -``` - -Originally I thought I knew the answer to this (“uh, the dot at the end means the domain is fully qualified?“). And that’s true – a fully qualified domain name is a domain with a “.” at the end! - -But that doesn’t explain _why_ dots at the end are useful or important. - -### in a DNS request/response, domain names don’t have a trailing “.” - -I once (incorrectly) thought the answer to “why is there a dot at the end?” might be “In a DNS request/response, domain names have a “.” at the end, so we put it in to match what actually gets sent/received by your computer”. But that’s not true at all! - -When a computer sends a DNS request or response, the domain names in it don’t have a trailing dot. Actually, the domain names don’t have _any_ dots. - -Instead, they’re encoded as a series of length/string pairs. For example, the domain `example.com` is encoded as these 13 bytes: - -``` - - 7example3com0 - -``` - -So there are no dots at all. Instead, an ASCII domain name (like “example.com”) gets translated into the format used in a DNS request / response by various DNS software. - -So let’s talk about one place where domain names are translated into DNS responses: zone files. - -### the trailing “.” in zone files - -One way that some people manage DNS records for a domain is to create a text file called a “zone file” and then configure some DNS server software (like `nsd` or `bind`) to serve the DNS records specified in that zone file. - -Here’s an imaginary zone file for `example.com`: - -``` - - orange 300 IN A 1.2.3.4 - fruit 300 IN CNAME orange - grape 3000 IN CNAME example.com. - -``` - -In this zone file, anything that doesn’t end in a `"."` (like `"orange"`) gets `.example.com` added to it. So `"orange"` is shorthand for `"orange.example.com"`. The DNS server knows from its configuration that this is a zone file for `example.com`, so it knows to automatically append `example.com` at the end of any name that doesn’t end with a dot. - -I assume the idea here is just to save typing – you could imagine writing this zone file by fully typing out all of the domain names: - -``` - - orange.example.com. 300 IN A 1.2.3.4 - fruit.example.com. 300 IN CNAME orange.example.com. - grape.example.com. 3000 IN CNAME example.com. - -``` - -But that’s a lot of typing. - -### you don’t need zone files to use DNS - -Even though the zone file format is defined in the official DNS RFC ([RFC 1035][3]), you don’t have to use zone files at all to use DNS. For example, AWS Route 53 doesn’t use zone files to store DNS records! Instead you create records through the web interface or API, and I assume they store records in some kind of database and not a bunch of text files. - -Route 53 (like many other DNS tools) does support importing and exporting zone files though and it can be a good way to migrate records from one DNS provider to another. - -### the trailing “.” in dig - -Now, let’s talk about `dig`’s output: - -``` - - $ dig example.com - ; <<>> DiG 9.18.1-1ubuntu1.1-Ubuntu <<>> +all example.com - ;; global options: +cmd - ;; Got answer: - ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10712 - ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 - - ;; OPT PSEUDOSECTION: - ; EDNS: version: 0, flags:; udp: 65494 - ;; QUESTION SECTION: - ;example.com. IN A - - ;; ANSWER SECTION: - example.com. 81239 IN A 93.184.216.34 - -``` - -One weird thing about this is that almost every line starts with a `;;`. What’s up with that? Well `;` is the comment character in zone files! - -So I think the reason that dig prints out its output in this weird way is so that if you wanted, you could just paste this into a zone file and have it work without any changes. - -This also explains why there’s a `.` at the end of `example.com.` – zone files require a trailing dot at the end of a domain name (because otherwise they’re interpreted as being relative to the zone). So `dig` does too. - -I really wish dig had a `+human` flag that printed out all of this information in a more human readable way, but for now I’m too lazy to put in the work to actually contribute code to do that (and I’m a pretty bad C programmer) so I’ll just complain about it on my blog instead :) - -### the trailing `"."` in curl - -Let’s talk about another case where the trailing `"."` shows up: curl! - -One of the computers in my house is called “grapefruit”, and it’s running a webserver. Here’s what happens if I run `curl grapefruit`: - -``` - - $ curl grapefruit - - - - - -``` - -It works! Cool. But what happens if I add a `.` at the end? Suddenly it doesn’t work: - -``` - - $ curl grapefruit. - curl: (6) Could not resolve host: grapefruit. - -``` - -What’s going on? To understand, we need to learn about search domains: - -### meet search domains - -When I run `curl grapefrult`, how does that get translated into a DNS request? You might think that my computer would send a request for the domain `grapefruit`, right? But that’s not true. - -Let’s use `tcpdump` to see what domain is actually being looked up: - -``` - - $ sudo tcpdump -i any port 53 - [...] A? grapefruit.lan. (32) - -``` - -It’s actually sending a request for `grapefruit.lan`. What’s up with that? - -Well, what’s going on is that: - - 1. To look up `grapefruit`, `curl` calls a function called `getaddrinfo` - - 2. `getaddrinfo` looks in a file on my computer called `/etc/resolv.conf` - - 3. `/etc/resolv.conf` contains these 2 lines: - -``` - nameserver 127.0.0.53 - search lan - -``` - - 4. Because it sees `search lan`, `getaddrinfo` adds a `lan` at the end of `grapefruit` and looks up `grapefruit.lan` instead - - - - -### when are search domains used? - -Now we know something weird: that when we look up a domain, sometimes an extra thing (like `lan`) will be added to the end. But when does that happen? - - 1. If we put a `"."` at the **end** of the domain (like `curl grapefruit.`, then search domains aren’t used - 2. If the domain has an `"."` **inside** it (like `example.com` has a dot in it), then by default search domains aren’t used either. But this can be changed with configuration (see this blog post about [ndots][4] that talks about this more) - - - -So now we know why `curl grapefruit.` has different results than `curl grapefruit` – it’s because one looks up the domain `grapefruit.` and the other one looks up `grapefruit.lan.` - -### how does my computer know what search domain to use? - -When I connect to my router, it tells me that its search domain is `lan` with DHCP – it’s the same way that my computer gets assigned an IP address. - -### so why do people put a dot at the end of domain names? - -Now that we know about zone files and search domains, here’s why I think people like to put dots at the end of a domain name. - -There are two contexts where domain names are modified and get something else added to the end: - - * in a zone file for `example.com`, `grapefruit` get translated to `grapefruit.example.com` - * on my local network (with my computer configured to use the search domain `lan`), `grapefruit` gets translated to `grapefruit.lan` - - - -So because domain names can actually be translated to something else in some cases, people like to put a `"."` at the end to communicate “THIS IS THE DOMAIN NAME, NOTHING GETS ADDED AT THE END, THIS IS THE WHOLE THING”. Because otherwise it can get confusing. - -The technical term for “THIS IS THE WHOLE THING” is **“fully qualified domain name”** or **“FQDN”**. So `google.com.` is a fully qualified domain name, and `google.com` isn’t. - -I always have to remind myself for the reasons for this because I rarely use zone files or search domains, so I often feel like – “of course I mean `google.com` and not `google.com.something.else`! Why would I mean anything else?? That’s silly!” - -But some people do use zone files and search domains (search domains are used in Kubernetes, for example!), so the “.” at the end is useful to make it 100% clear that nothing else should be added. - -### when to put a “.” at the end? - -Here are a couple of quick notes about when to put a “.” at the end of your domain names: - -**Yes: when configuring DNS** - -It’s never bad to use fully qualified domain names when configuring DNS. You don’t always have to: a non-fully-qualified domain name will often work just fine as well, but I’ve never met a piece of DNS software that wouldn’t accept a fully qualified domain name. - -And some DNS software requires it: right now the DNS server I use for `jvns.ca` makes me put a `"."` at the end of domains names (for example in CNAME records) and warns me otherwise it’ll append `.jvns.ca` to whatever I typed in. I don’t agree with this design decision but it’s not a big deal, I just put a “.” at the end. - -**No: in a browser** - -Confusingly, it often _doesn’t_ work to put a `"."` at the end of a domain name in a browser! For example, if I type `https://twitter.com.` into my browser, it doesn’t work! It gives me a 404. - -I think what’s going on here is that it’s setting the HTTP Host header to `Host: twitter.com.` and the web server on the other end is expecting `Host: twitter.com`. - -Similarly, `https://jvns.ca.` gives me an SSL error for some reason. - -### I think relative domain names used to be more common - -One last thing: I think that “relative” domain names (like me using `grapefruit` to refer to the other computer in my house, `grapefruit.lan`) used to be more commonly used, because DNS was developed in the context of universities or other big institutions which have big internal networks. - -On the internet today, it seems like it’s more common to use “absolute” domain names (like `example.com`). - --------------------------------------------------------------------------------- - -via: https://jvns.ca/blog/2022/09/12/why-do-domain-names-end-with-a-dot-/ - -作者:[Julia Evans][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://jvns.ca/ -[b]: https://github.com/lujun9972 -[1]: https://wizardzines.com/zines/dns/ -[2]: https://github.com/miekg/dns -[3]: https://www.rfc-editor.org/rfc/rfc1035#section-4.1.1 -[4]: https://pracucci.com/kubernetes-dns-resolution-ndots-options-and-why-it-may-affect-application-performances.html diff --git a/sources/tech/20220929 Execute Commands On Remote Linux Systems Via SSH.md b/sources/tech/20220929 Execute Commands On Remote Linux Systems Via SSH.md deleted file mode 100644 index 2137eb7a6e..0000000000 --- a/sources/tech/20220929 Execute Commands On Remote Linux Systems Via SSH.md +++ /dev/null @@ -1,335 +0,0 @@ -[#]: subject: "Execute Commands On Remote Linux Systems Via SSH" -[#]: via: "https://ostechnix.com/execute-commands-on-remote-linux-systems-via-ssh/" -[#]: author: "sk https://ostechnix.com/author/sk/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Execute Commands On Remote Linux Systems Via SSH -====== -Invoking Commands Or Programs On Remote Machines Over A Secure Network Connection - -The other day I was testing how to [keep file permissions intact while copying files or directories][1] to multiple locations and systems. When I wanted to check the file permissions on a remote system, I had to login to that system over SSH and check the attributes. The process of login and log-out from the remote system multiple times was bit annoying to me. I thought it would be better if I could **execute commands on remote Linux systems via SSH**. - -Fortunately, I found a workaround to invoke commands and programs on a remote machine over a secure network connection after skimming through the man pages of `ssh` command. - -If you ever wondered how to run a command or script on a remote system from your local system itself without logging in to that remote system, here is how to do it. - -#### Contents - -1. 1. Execute Commands On Remote Linux Systems Via SSH 2. 1.1. Run A Single Command On Remote Systems Over SSH 3. 1.2. Execute Multiple Commands On Remote Hosts Via SSH 4. 1.3. Invoke Commands With Sudo Privileges On Remote Machines Over SSH 5. 1.4. Run Local Scripts On Remote Systems Via SSH 6. 1.5. Save Command Output From Remote Host To Local Host 7. 1.6. Configure SSH Key-based Authentication To Avoid Password Typing -8. 2. Use sshpass While Running Commands On Remote Machines Over SSH 9. 2.1. What Is sshpass? 10. 2.2. Install sshpass In Linux 11. 2.3. Execute Commands On Remote Machines Over SSH With sshpass -12. Conclusion - -### 1. Execute Commands On Remote Linux Systems Via SSH - -The typical way to run a command or script on a remote system over SSH from the local system is: - -``` -$ ssh -``` - -Allow me to show you some examples. - -#### 1.1. Run A Single Command On Remote Systems Over SSH - -Let us say you want to [find Kernel details][2] of your remote Linux system. To do so, simply, run: - -``` -$ ssh sk@192.168.225.22 uname -a -``` - -Here, - -* sk is the username of my remote system, -* 192.168.225.22 is the IP address of the remote system, -* And `"uname -a"` is the command that I want to run on the remote system from my local system. - -**Sample output:** - -![Execute Commands On Remote Linux Systems Via SSH][3] - -See? I haven't actually logged-in to the remote system, but executed the `uname` command on the remote system over SSH and displayed the output in my local system's Terminal. - -You can also specify the command in quotes like below. - -``` -$ ssh sk@192.168.225.22 "uname -a" -``` - -Or, - -``` -$ ssh sk@192.168.225.22 'uname -a' -``` - -If you have [changed default port of SSH protocol][4], just mention it using **-p** parameter like below. - -``` -$ ssh -p 2200 sk@192.168.225.22 uname -a -``` - -#### 1.2. Execute Multiple Commands On Remote Hosts Via SSH - -You can also run multiple commands on a remote host by specifying them within quotes like below. - -``` -$ ssh sk@192.168.225.22 "uname -r && lsb_release -a" -``` - -Or, - -``` -$ ssh sk@192.168.225.22 "uname -r ; lsb_release -a" -``` - -The above commands will display the Kernel version and distribution details of my Ubuntu server. - -**Sample output:** - -![Run Multiple Commands On Remote Hosts Over SSH On Linux][5] - -As one one of our reader mentioned in the comment section below, you should specify multiple commands in quotes. If you don't use quotes, the first command will execute on the remote system and second command will be evaluated on local machine only. The whole command in quotes will be processed remotely as intended. - -#### 1.3. Invoke Commands With Sudo Privileges On Remote Machines Over SSH - -Some commands requires `"sudo"` privileges to run. For instance, the following command will install **Vim** on my remote system. - -``` -$ ssh -t sk@192.168.225.22 sudo apt install apache2 -``` - -**Sample output:** - -![Run Commands With Sudo Privileges On Remote Machines Over SSH][6] - -Did you notice? I have used **-t** flag in the above command. We need to mention this **-t** flag to force pseudo-terminal allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. - -Also, I have entered password **twice**. The first time I entered the password of the remote user to access the remote system over SSH from my local system and the second password is required to give sudo permission to the remote user to install application (i.e. apache2 in this case) on the remote system. - -Let us check if the Apache service is running using command: - -``` -$ ssh -t sk@192.168.225.22 sudo systemctl status apache2 -sk@192.168.225.22's password: -[sudo] password for sk: -● apache2.service - The Apache HTTP Server -Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) -Drop-In: /lib/systemd/system/apache2.service.d -└─apache2-systemd.conf -Active: active (running) since Thu 2019-12-19 11:08:03 UTC; 52s ago -Main PID: 5251 (apache2) -Tasks: 55 (limit: 2318) -CGroup: /system.slice/apache2.service -├─5251 /usr/sbin/apache2 -k start -├─5253 /usr/sbin/apache2 -k start -└─5254 /usr/sbin/apache2 -k start - -Dec 19 11:08:03 ubuntuserver systemd[1]: Starting The Apache HTTP Server... -Dec 19 11:08:03 ubuntuserver apachectl[5227]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 2409:4072:51f:a1b6:a00:27ff:f -Dec 19 11:08:03 ubuntuserver systemd[1]: Started The Apache HTTP Server. -``` - -Similarly, we can run any command or script on a remote system over SSH from the local system. - -#### 1.4. Run Local Scripts On Remote Systems Via SSH - -Let us a create a simple script on our local system to display all the available information about your remote system's distribution name, package management and base details etc. - -``` -$ vi system_information.sh -``` - -Add the following lines: - -``` -#!/bin/bash -#Name: Display System Details -#Owner: OSTechNIx -#---------------------------- -echo /etc/*_ver* /etc/*-rel*; cat /etc/*_ver* /etc/*-rel* -``` - -Press **ESC** key and type **:wq** to save the file and exit. - -Now run this script on your remote system over SSH using command: - -``` -$ ssh sk@192.168.225.22 'bash -s' < system_information.sh -``` - -**Sample output:** - -``` -sk@192.168.225.22's password: -/etc/debian_version /etc/lsb-release /etc/os-release -buster/sid -DISTRIB_ID=Ubuntu -DISTRIB_RELEASE=18.04 -DISTRIB_CODENAME=bionic -DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS" -NAME="Ubuntu" -VERSION="18.04.2 LTS (Bionic Beaver)" -ID=ubuntu -ID_LIKE=debian -PRETTY_NAME="Ubuntu 18.04.2 LTS" -VERSION_ID="18.04" -HOME_URL="https://www.ubuntu.com/" -SUPPORT_URL="https://help.ubuntu.com/" -BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" -PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" -VERSION_CODENAME=bionic -UBUNTU_CODENAME=bionic -``` - -If you don't specify `'bash -s'` in the above command, you will get the details of the remote system but Pseudo-terminal will not be allocated. - -#### 1.5. Save Command Output From Remote Host To Local Host - -This can be useful if you want to share the output of a command that you run on the remote system over SSH with your support team or colleague. - -The following command will run **"du -ah"** on your remote system over SSH and save the output in **diskusage.txt** file in your local system. - -``` -$ ssh sk@192.168.225.22 du -ah > diskusage.txt -``` - -You can then analyze the disk usage details by viewing the `diskusage.txt` file using **cat** command or text viewers. - -``` -$ cat diskusage.txt -4.0K ./.profile -4.0K ./.gnupg/private-keys-v1.d -8.0K ./.gnupg -76K ./data/image.jpg -128K ./data/file.pdf -20K ./data/text.docx -5.9M ./data/audio.mp3 -6.1M ./data -0 ./.sudo_as_admin_successful -4.0K ./pacman?inline=false -4.0K ./.bash_logout -4.0K ./.wget-hsts -4.0K ./.bash_history -0 ./.cache/motd.legal-displayed -4.0K ./.cache -4.0K ./deb-pacman_1.0-0.deb -4.0K ./.bashrc -6.2M . -``` - -#### 1.6. Configure SSH Key-based Authentication To Avoid Password Typing - -If you run commands on remote systems often, you may want to configure SSH key-based authentication to skip password typing every time. More details can be found in the following link. - -* [How To Configure SSH Key-based Authentication In Linux][7] - -After configuring SSH key-based authentication, we can execute commands on Remote machines over SSH without entering the password: - -``` -$ ssh sk@192.168.225.22 sudo apt update -``` - -### 2. Use sshpass While Running Commands On Remote Machines Over SSH - -If you don't want to configure SSH key-based authentication, you can use **sshpass** utility to run commands on remote machines via without entering password. - -#### 2.1. What Is sshpass? - -The sshpass utility is designed for running ssh using the keyboard-interactive password authentication mode, but in non-interactive way. To put this in simple terms - sshpass offers non-interactive way to authenticate a SSH session. - -SSH uses direct TTY access to make sure that the password is indeed issued by an interactive keyboard user. Sshpass runs ssh in a dedicated tty, fooling it into thinking it is getting the password from an interactive user. - -#### 2.2. Install sshpass In Linux - -The sshpass utility is available in the default repositories of many Linux distributions. For instance, you can use the following command to install sshpass in Debian, Ubuntu and its derivatives: - -``` -$ sudo apt install sshpass -``` - -#### 2.3. Execute Commands On Remote Machines Over SSH With sshpass - -sshpass can accept password as an argument, or read the password via an environment variable, or read the password from a text file. - -**A word of caution:** All of these methods are **highly insecure**. All system users can see the password in the commands by simply issuing the **ps** command. It is **NOT RECOMMENDED** to use these methods in production. It is better to use key-based authentication instead. - -Let us see examples for each method. - -**Provide Password as an argument:** - -To provide password as an argument, use `-p` option like below. - -``` -$ sshpass -p ssh remoteuser@ip-address -``` - -**Example:** - -``` -$ sshpass -p ubuntu ssh ostechnix@192.168.1.30 uname -a -``` - -Here, - -* -p ubuntu - provides the password for the remote system. -* ostechnix@192.168.1.30 - Remote username and IP address. -* 'uname -a' - Command to execute on the remote machine. - -**Sample output:** - -``` -Linux Ubuntu22CT 5.15.60-1-pve #1 SMP PVE 5.15.60-1 (Mon, 19 Sep 2022 17:53:17 +0200) x86_64 x86_64 x86_64 GNU/Linux -``` - -**Provide Password as an Environment variable:** - -In this method, we declare an environment variable called **SSHPASS** with the remote system's password as its value. And then we provide the password with **-e** flag like below: - -``` -$ SSHPASS=ubuntu sshpass -e ssh ostechnix@192.168.1.30 uname -a -``` - -**Read Password from a text file:** - -Append the password in a text file with echo command: - -``` -$ echo "ubuntu" > mypassword.txt -``` - -Now, pass the password file to sshpass lwith **-f**flag like below: - -``` -$ sshpass -f mypassword.txt ssh ostechnix@192.168.1.30 uname -a -``` - -![Execute Commands On Remote Machines Over SSH With sshpass][8] - -### Conclusion - -In this tutorial, we learned a few methods to invoke a command or program on a remote machine over a secure network connection. Among all the methods, the sshpass method is least secure. The users are encouraged to avoid using sshpass in production systems. - --------------------------------------------------------------------------------- - -via: https://ostechnix.com/execute-commands-on-remote-linux-systems-via-ssh/ - -作者:[sk][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://ostechnix.com/author/sk/ -[b]: https://github.com/lkxed -[1]: https://ostechnix.com/how-to-keep-ownership-and-file-permissions-intact-when-copying-files-or-directories/ -[2]: https://ostechnix.com/find-out-the-linux-distribution-name-version-and-kernel-details/ -[3]: https://ostechnix.com/wp-content/uploads/2019/12/Execute-Commands-On-Remote-Linux-Systems-Via-SSH.gif -[4]: https://ostechnix.com/how-to-change-apache-ftp-and-ssh-default-port-to-a-custom-port-part-3/ -[5]: https://ostechnix.com/wp-content/uploads/2019/12/Run-multiple-commands-on-remote-systems-via-SSH-on-Linux.png -[6]: https://ostechnix.com/wp-content/uploads/2019/12/Run-commands-with-sudo-privileges-on-remote-systems-via-SSH.png -[7]: https://ostechnix.com/configure-ssh-key-based-authentication-linux/ -[8]: https://ostechnix.com/wp-content/uploads/2022/09/Execute-Commands-On-Remote-Machines-Over-SSH-With-sshpass.png diff --git a/sources/tech/20221004 5 Best Python IDE-s- and Code Editor-s-.md b/sources/tech/20221004 5 Best Python IDE-s- and Code Editor-s-.md deleted file mode 100644 index 0869aeb644..0000000000 --- a/sources/tech/20221004 5 Best Python IDE-s- and Code Editor-s-.md +++ /dev/null @@ -1,214 +0,0 @@ -[#]: subject: "5 Best Python IDE(s) and Code Editor(s)" -[#]: via: "https://www.debugpoint.com/5-best-python-ide-code-editor/" -[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -5 Best Python IDE(s) and Code Editor(s) -====== -We list the five best Python code editors for Ubuntu/Linux and Windows in 2022. - -[Python][1] is everywhere today, and it is arguably the C programming language of the modern era. You can find Python everywhere, from websites, apps, data science projects, and AI to IoT devices. So being a popular programming language of this decade, it is essential to know the development environment of Python, where developers create applications, especially if you are starting afresh. - -Many Python development environments are available with features and utilities catering to your need. Some of them are useful for beginners learning Python by setting up the environment and other users for heavy Python development and complex setups. Here, in this post, I will touch upon the five best of them that would help you to pick one for your own need and use case. - -### Best Python Editor for Coding - -This top list features the following editors: - -1. Eclipse -2. PyCharm -3. Spyder -4. Sublime Text -5. Thonny - -#### 1. Eclipse with PyDev - -![Eclipse Editor][2] - -[Eclipse][3] is a free and open-source IDE developed by IBM. This complete IDE is used for Java and Android development. However, it supports many other programming languages, including Python. You can use Eclipse with the popular PyDev plugin, which enables you to convert Eclipse to a complete Python development environment. With PyDev integration in Eclipse, you can do the compilation, code analysis, live debugging, interactive console access, and many more features. - -##### Advantage - -* Extensive features and complete Python development IDE. - -##### Disadvantage - -* A heavyweight on system performance. -* Targetted for advanced users. - -##### Installation and more information - -* Platform: Linux -* Type: IDE -* Price: Free -* Source: Open Source -* Official Download link: [PyDev][4], [Eclipse][5] -* Official Website: [Eclipse][6], [PyDev Plugin][7] -* Flatpak: [Eclipse for Java is available as Flatpak via Flathub][8]. You can try this version after [setting up Flatpak.][9] - -#### 2. PyCharm Editor - -![PyCharm Editor][14] - -Developed by JetBrains, [PyCharm][15] provides intelligent code completion, code inspections, on-the-fly error highlighting, quick fixes, automated code refactorings, and rich navigation capabilities. - -PyCharm’s massive collection of tools out of the box includes an integrated debugger and test runner; Python profiler; a built-in terminal; integration with major VCS and built-in database tools; remote development capabilities with remote interpreters; an integrated ssh terminal; and integration with Docker and Vagrant. - -In addition to Python, PyCharm provides first-class support for various Python web development frameworks, specific template languages, JavaScript, CoffeeScript, TypeScript, HTML/CSS, AngularJS, Node.js, and more. - -PyCharm has two versions of installers. The professional version and a community version. The community version is free and open source. The professional version is not free as it comes with professional tools and extensive support. The professional edition has a monthly subscription version of <10 USD for individual use. - -However, if you are a beginner, you can start with the free Community edition of PyCharm. - -For both Scientific and Web Python development. With HTML, JS, and SQL support. - -##### Advantage - -* Advanced and modern editing capabilities for professionals that aid rapid developments. - -##### Disadvantage - -* Most professional tools are available in the paid version (approximately 8 to 10 USD per month for individual use). - -##### Installation and additional information - -* Platform: Linux, Mac, and Windows -* Type: IDE -* Price: Free (Community edition) and Paid (Professional Edition) -* Source: Open Source (Community Edition) -* [Official Download link][16] -* Flatpak:You can install the [community version via Flathub][17] after [setting up your Linux system for Flatpak][18]. - -#### 3. Spyder Editor - -![Spyder Editor][23] - -[Spyder][24] is a powerful Python editor written in Python for Python. It is designed to be used by scientists, engineers, and data scientists. It offers a unique combination of a comprehensive development tool’s advanced editing, analysis, debugging, and profiling functionality with the data exploration, interactive execution, deep inspection, and beautiful visualization capabilities of a scientific package. - -##### Advantage - -* Lightweight and Free - -##### Disadvantage - -* You have to download it as part of the Anaconda package. No standalone installer. - -##### Installation and additional instructions - -* Platform: Anaconda -* Type: IDE -* Price: Free -* Source: Open Source -* [Official Download link][25] -* [Official Website][26] - -#### 4. Sublime Text - -![Sublime Text][27] - -[Sublime Text][28] is a sophisticated code editor with a Python programming interface. It is a cross-platform utility and natively supports many programming languages. You can extend its features and functionality using plugins. The sublime text comes with productivity-boosting features such as Goto anything, changes to multiple sections of your file simultaneously. - -##### Advantages - -* Lightweight, free, and available for Windows, Mac, and Linux. - -##### Disadvantages - -* It is free to evaluate, but you must buy a license for advanced usage. - -##### Additional information and installation - -* Platform: Windows, Linux, OS X -* Type: IDE -* Price: Free, but a license must be purchased for continuous use -* Source: Closed Source -* [Official Download link][29] -* [Official Website][30] -* Flatpak: Sublime Text is available via [Flathub as Flatpak][31]. Set up your [Linux system for Flatpak][32] and then install it. - -#### 5. Thonny Python Editor - -![Thonny Editor][37] - -[Thonny][38] is a beginner’s Python IDE and is simple to use. It comes with the latest Python (3.7+ as of writing) built-in, so you do not need to worry about installing Python separately in your operating system. The user interface is clutterless and distraction-free for beginners. Some of the other notable features of Thonny include – a variable view, simple debugger, steps, and syntax errors. - -##### Advantages - -* Lightweight, free, and available for Windows, Mac, and Linux. -* Perfect for absolute beginners in Python (or even in coding). - -##### Disadvantages - -* Available with basic features as it is a beginner’s IDE. - -##### Installation and additional info - -* Platform: Windows, Linux, Mac -* Type: IDE -* Price: Free -* Source: Open Source -* [Official Download link][39] -* Flatpak: It’s available as [Flatpak via Flathub][40]. Set up your [Linux system to install Flatpak][41], and they go for installing it. - --------------------------------------------------------------------------------- - -via: https://www.debugpoint.com/5-best-python-ide-code-editor/ - -作者:[Arindam][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.debugpoint.com/author/admin1/ -[b]: https://github.com/lkxed -[1]: https://www.python.org/ -[2]: https://www.debugpoint.com/wp-content/uploads/2020/06/Eclipse-Editor.png -[3]: https://www.eclipse.org/ -[4]: https://www.pydev.org/ -[5]: https://www.eclipse.org/ -[6]: https://www.eclipse.org/ -[7]: https://www.pydev.org/ -[8]: https://flathub.org/apps/details/org.eclipse.Java -[9]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ -[10]: https://flathub.org/apps/details/org.eclipse.Java -[11]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ -[12]: https://flathub.org/apps/details/org.eclipse.Java -[13]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ -[14]: https://www.debugpoint.com/wp-content/uploads/2020/06/PyCharm-Editor.png -[15]: https://www.jetbrains.com/pycharm/ -[16]: https://www.jetbrains.com/pycharm/download/ -[17]: https://flathub.org/apps/details/com.jetbrains.PyCharm-Community -[18]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ -[19]: https://flathub.org/apps/details/com.jetbrains.PyCharm-Community -[20]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ -[21]: https://flathub.org/apps/details/com.jetbrains.PyCharm-Community -[22]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ -[23]: https://www.debugpoint.com/wp-content/uploads/2020/06/Spyder-Editor.png -[24]: https://www.spyder-ide.org/ -[25]: https://www.anaconda.com/download/ -[26]: https://www.spyder-ide.org/ -[27]: https://www.debugpoint.com/wp-content/uploads/2020/06/Sublime-Text-Editor.png -[28]: https://www.sublimetext.com/ -[29]: https://www.sublimetext.com/3 -[30]: https://www.sublimetext.com/ -[31]: https://flathub.org/apps/details/com.sublimetext.three -[32]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ -[33]: https://flathub.org/apps/details/com.sublimetext.three -[34]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ -[35]: https://flathub.org/apps/details/com.sublimetext.three -[36]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ -[37]: https://www.debugpoint.com/wp-content/uploads/2020/06/Thonny-Editor.png -[38]: https://thonny.org/ -[39]: https://thonny.org/ -[40]: https://flathub.org/apps/details/org.thonny.Thonny -[41]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ -[42]: https://flathub.org/apps/details/org.thonny.Thonny -[43]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ -[44]: https://flathub.org/apps/details/org.thonny.Thonny -[45]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ diff --git a/sources/tech/20221004 Learn the OSI model in 5 minutes.md b/sources/tech/20221004 Learn the OSI model in 5 minutes.md deleted file mode 100644 index eb53583bb2..0000000000 --- a/sources/tech/20221004 Learn the OSI model in 5 minutes.md +++ /dev/null @@ -1,100 +0,0 @@ -[#]: subject: "Learn the OSI model in 5 minutes" -[#]: via: "https://opensource.com/article/22/10/osi-model-network-communications" -[#]: author: "Anamika https://opensource.com/users/anamika" -[#]: collector: "lkxed" -[#]: translator: "cool-summer-021" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Learn the OSI model in 5 minutes -====== -Get the basics of the Open Systems Interconnection (OSI) framework for conceptualizing communication within a computer system. - -The Open Systems Interconnection (OSI) model is a standard for how computers, servers, and people communicate within a system. It was the first standard model for network communications and was adopted in the early 1980s by all major computer and telecommunications companies. - -The OSI model provides a universal language for describing networks and thinking about them in discrete chunks, or layers. - -### Layers of the OSI model - -The model describes the seven layers through which computer systems communicate over a network. - -1. [Application layer][2] -2. [Presentation layer][3] -3. [Session layer][4] -4. [Transport layer][5] -5. [Network layer][6] -6. [Data link layer][7] -7. [Physical layer][8] - -Each of these layers has its own way of working, with its own set of protocols that distinguish it from the others. This article provides a breakdown of the layers one by one. - -### Application layer - -The application layer is implemented in software. It is the layer used to interact with applications. - -Consider the example of sending a message. The sender will interact with the application layer and send the message. The application layer sends the message to the next layer in the OSI Model, the presentation layer. - -### Presentation layer - -The data from the application layer is forwarded to the presentation layer. The presentation layer receives the data in the form of words, characters, letters, numbers, and so on, and converts them into machine representable binary format. This process is known as translation. - -At this stage, ASCII characters (American Standard Code for Information Interchange) are converted into Extended Binary Coded Decimal Interchange Code (EBCDIC). Before the converted data goes further, it also undergoes encoding and encryption processes, using the SSL protocol for encryption and decryption. - -The presentation layer provides abstraction and assumes that the layers following it will take care of the data forwarded to them from this layer. It also plays a role in compression of the data. The compression can be lossy or lossless, depending on various factors beyond this article's scope. - -### Session layer - -The session layer helps in setting up and managing connections. The main work of this layer is to establish a session. For example, on an online shopping site, a session is created between your computer and the site's server. - -The session layer enables the sending and receiving of data, followed by the termination of connected sessions. Authentication is done before a session is established, followed by authorization. Like the previous layers, the session layer also assumes that, after its work is done, the data will be correctly handled by the subsequent layers. - -### Transport layer - -The transport layer manages data transportation and its own set of protocols for how data will be transferred. The data received here from the session layer is divided into smaller data units called segments. This process is known as segmentation. Every segment contains the source's and destination's port numbers and a sequence number. Port numbers identify the application on which the data needs to be sent. Note that the data is transferred in chunks. The sequence numbers are used to reassemble the segments in the correct order. - -The transport layer takes care of the flow control, or the amount of data transferred at a given time. It also accounts for error control, such as data loss, data corruption, and so on. It makes use of an error-detecting value known as a checksum. The transport layer adds a checksum to every data segment to check whether the sent data is received correctly. Data is then transferred to the network layer. - -### Network layer - -The network layer helps communicate with other networks. It works to transmit received data segments from one computer to another located in a different network. The router lives in the network layer. - -The function of the network layer is logical addressing (IP Addressing). It assigns the sender's and receiver's IP addresses to each data packet to ensure it is received at the correct destination. The network layer then routes the data packets. Load balancing also happens in the network layer to make sure that no overloading takes place. Next, the data is transported to the data link layer. - -### Data link layer - -The data link layer allows direct communication with other devices, such as computers and hosts. - -It receives data packets containing the IP addresses of the sender and receiver from the network layer and does the physical addressing, assigning the media access control (MAC) addresses of the sender and receiver to a data packet to form a frame. - -### Physical layer - -This layer consists of all the hardware and mechanical elements of a system, including the configuration of wires, pins, adapters, and so forth. The data received here by the preceding layers is in the form of 0s and 1s. The physical layer converts this data and transports it to local media via various means, including wires, electrical signals, light signals (as in optical fiber cables), and radio signals (as in WiFi). - -Note that the physical layer works at the receiver's end and transports the received signal to the data link as a frame (by converting it back to bits). The frame is moved to the higher layers, and ultimately the required data is received at the application layer, which is the software. - -### Conclusion - -The OSI model is helpful when you need to describe network architecture or troubleshoot network problems. I hope this article gave you a clearer understanding of the elements this model. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/22/10/osi-model-network-communications - -作者:[Anamika][a] -选题:[lkxed][b] -译者:[cool-summer-021](https://github.com/cool-summer-021) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/anamika -[b]: https://github.com/lkxed -[1]: https://opensource.com/sites/default/files/lead-images/code_computer_development_programming.png -[2]: https://opensource.com/article/22/10/osi-model-network-communications#application-layer -[3]: https://opensource.com/article/22/10/osi-model-network-communications#presentation-layer -[4]: https://opensource.com/article/22/10/osi-model-network-communications#session-layer -[5]: https://opensource.com/article/22/10/osi-model-network-communications#transport-layer -[6]: https://opensource.com/article/22/10/osi-model-network-communications#network-layer -[7]: https://opensource.com/article/22/10/osi-model-network-communications#data-link-layer -[8]: https://opensource.com/article/22/10/osi-model-network-communications#physical-layer diff --git a/sources/tech/20221004 Ubuntu 22.10- Top New Features and Release Wiki.md b/sources/tech/20221004 Ubuntu 22.10- Top New Features and Release Wiki.md deleted file mode 100644 index 4e78ea7df5..0000000000 --- a/sources/tech/20221004 Ubuntu 22.10- Top New Features and Release Wiki.md +++ /dev/null @@ -1,169 +0,0 @@ -[#]: subject: "Ubuntu 22.10: Top New Features and Release Wiki" -[#]: via: "https://www.debugpoint.com/ubuntu-22-10/" -[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Ubuntu 22.10: Top New Features and Release Wiki -====== -Here’s the list of new features and tech which is coming up in Ubuntu 22.10 Kinetic Kudu. - -![Ubuntu 22.10 Kinetic Kudu Desktop (dev)][1] - -The development of Ubuntu 22.10 is almost at the finishing stage, and the BETA is out. At this stage, features are frozen, and only testing/bug fixes are ongoing for Ubuntu 22.10. - -In this article, I will touch upon the essential features of Ubuntu 22.10 Kinetic Kudu. But before that, a quick summary of the schedule. - -Ubuntu 22.10 BETA was released on September 29, 2022, and it’s currently under testing. - -The final release of Ubuntu 22.10 is on October 20, 2022. - -Since it is a short-term release, it is supported for nine months until July 20, 2023. - -### Ubuntu 22.10 Kinetic Kudu Desktop: Top Features - -Following the letter-based code name, we are at “K” following the “J” of Jammy Jellyfish. This version is code-named “Kinetic Kudu”, named after a [long-horned animal species][2] found in Africa. - -All the packages and repos are named as “kinetic” in applicable places for this release. - -#### Linux Kernel - -Ubuntu 22.10 features Linux Kernel 5.19, which was released a few days back. The current mainline kernel, which is dubbed as [version 6.0][3], won’t feature in this version due to a schedule mismatch. - -Linux Kernel 5.19 brings regular updates across CPU, GPU and other peripherals. Significant features in this Kernel include multi-platform ARM support, LoongArch arch support, support for AMD RDNA, CDNA, Intel’s Raptor Lake and many important updates. You can read in detail about its new features on [this page][4]. - -#### GNOME 43 - -In Ubuntu 22.10, GNOME 43 is the base desktop version. GNOME 43 is an impressive release in terms of features and work around the GTK4 and libadwaita. A lot of features which was missed to reach in Ubuntu 22.04 LTS, finally arrived in this version. - -Since the feature list is vast, I will try to summarize it here. - -First and foremost, GNOME Shell gets high-resolution scroll wheel support, colour support in server decoration, and improved animation and performance all around the desktop. - -Secondly, the vital app – Files (Nautilus) 43 brings a vast set of tweaks after its migration to GTK4. In Files 43, you get the redesigned context menu, rubberband selection, adaptive sidebar, which auto-hides based on its size, emblems support and new GtkColumnView support for a better experience. - -Third, the stunning [GNOME 43 quick settings][5] arrive in Ubuntu. The settings will give you easy access to several key items right from the tray. - -Other important changes in GNOME 43 include: - -* An updated properties dialog window with intelligent behaviour based on file types -* GNOME Web gets web extension API support enabling you to install Firefox and Chrome add-ons -* Improved context menu in Files sidebar -* Updated app info page in Software - -Don’t forget to review my detailed [GNOME 43 feature write-up][6] to learn more. - -#### New Settings Panel - -There are some [key changes][7] arrive in the Settings panel. A new panel is introduced – “Ubuntu Desktop” which has the desktop icon and dock options. This panel is unavailable in vanilla GNOME (e.g. in Fedora Workstation). - -![New Ubuntu desktop and Appearance tab in settings][8] - -The Background tab is now merged with the Appearance tab. This essentially consolidates Ubuntu’s theming options to one single setting page. Effectively, it’s a good change and a wise UI decision. In addition, a new “Device Security Panel” is also introduced. - -#### PipeWire by Default - -Ubuntu 22.10 is all about adopting the new tech, and leaving the legacy items behind. With that motto, in this release, the Pipewire sound server is made default for the first time in Ubuntu. PulseAudio will still be there but inactive for now. - -For those folks in Audio recording, mixing work would greatly benefit from this. - -#### IWD replacing the wpa_supplicant - -Similarly, with PipeWire, another new tech adoption is coming in Ubuntu 22.10. The legacy `wpa_supplicant` wireless module is changing, and IWD (iNet Wireless Daemon) is replacing it. The IWD was developed by Intel, and it had certain advantages and more features over wpa_supplicant. - -Besides, the wpa_supplicant is almost two decades old and served its purpose in GNU/Linux and BSD systems. - -In my personal experience, I had some difficult experiences with wpa_supplicant, which manages the Wi-Fi connections. For example, sudden disconnection, and not waking up the Wi-Fi after standby, to name a few. - -With the modern IWD, I hope the continuous struggle with several users with Ubuntu and Wi-Fi shall disappear. If you want to learn more about IWD, you can read some excellent discussions [here][9] and [here][10]. - -#### Official desktop flavours - -All the official desktop flavours of Ubuntu are getting their current stable release. If you are already using Xubuntu, Ubuntu MATE – well, you get the same version as the prior one. Because these desktops did not have a major upgrade recently. - -Lubuntu users should get the recently released LXQt 1.1.0 desktop which brings additional features such as compact and a new application menu, new theming changes and more. - -Kubuntu users should get KDE Plasma 5.25, which brings you some unique features such as a floating panel, dynamic accent colour and many [such exciting features][11]. - -Budgie lovers should get the new features that are under development via Ubuntu Budgie 22.10. I will write up a separate article on Budgie because of the changes. - -So, in summary, you get [Xfce 4.16][12], MATE 1.24, KDE Plasma 5.25 and LXQt 1.1.0 as the desktop versions. - -#### Tool-chain updates - -Now, it’s time to find out about the important packages and programming updates for developers. In this release, you get the following version upgrades for individual items. - -* BlueZ 5.65 -* CUPS 2.4 -* Python 3.10.6 -* NetworkManager 1.38 -* Mesa 22 -* Pipewire 0.3.56 -* PulseAudio 16 -* xdg-desktop-portal 1.14 - -Although, I am not sure whether Python 3.11 will be ready ([currently in RC][13]) before release. I hope not. - -#### Wallpaper - -Finally, a brand new wallpaper featuring the official Kudu mascot is ready to give your desktop a nice touch. - -#### Summary of the key changes in Ubuntu 22.10 - -* Linux Kernel 5.19 -* GNOME 43 -* Pipewire by default -* IWD is replacing wpa_supplicant -* KDE Plasma 5.25 in Kubuntu -* LXQt 1.1.0 in Lubuntu -* Firefox 104 -* LibreOffice 7.4 -* Thunderbird 102 - -You can download the BETA builds of this release (which are stable with the condition) [from this page][14] for testing. - -The flavours’ BETA builds are available on the below pages. - -| Ubuntu Flavour | Link for daily builds .iso image(s) | -| :- | :- | -| Ubuntu 22.10 Desktop | http://cdimage.ubuntu.com/daily-live/current/ | -| Xubuntu 22.10 | https://cdimage.ubuntu.com/xubuntu/releases/kinetic/beta/ | -| Ubuntu MATE 22.10 | https://cdimage.ubuntu.com/ubuntu-mate/releases/kinetic/beta/ | -| Ubuntu Kylin 22.10 | https://cdimage.ubuntu.com/ubuntukylin/releases/kinetic/beta/ | -| Lubuntu 22.10 | https://cdimage.ubuntu.com/lubuntu/releases/kinetic/beta/ | -| Kubuntu 22.10 | https://cdimage.ubuntu.com/kubuntu/releases/kinetic/beta/ | -| Ubuntu Budgie 22.10 | https://cdimage.ubuntu.com/ubuntu-budgie/releases/kinetic/beta/ | -| Ubuntu Unity 22.10 | https://cdimage.ubuntu.com/ubuntu-unity/releases/kinetic/beta/ | - -So, that’s about it on the changes in Ubuntu 22.10. Do let me know about your favourite feature in the comment box. - --------------------------------------------------------------------------------- - -via: https://www.debugpoint.com/ubuntu-22-10/ - -作者:[Arindam][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.debugpoint.com/author/admin1/ -[b]: https://github.com/lkxed -[1]: https://www.debugpoint.com/wp-content/uploads/2022/08/Ubuntu-22.10-Kinetic-Kudu-Desktop-dev.jpg -[2]: https://en.wikipedia.org/wiki/Kudu -[3]: https://www.debugpoint.com/linux-kernel-6-0/ -[4]: https://www.debugpoint.com/linux-kernel-5-19/ -[5]: https://www.debugpoint.com/gnome-43-quick-settings/ -[6]: https://www.debugpoint.com/gnome-43/ -[7]: https://launchpad.net/ubuntu/kinetic/+source/gnome-control-center/+changelog -[8]: https://www.debugpoint.com/wp-content/uploads/2022/08/New-Ubuntu-desktop-and-Appearance-tab-in-settings.jpg -[9]: https://bbs.archlinux.org/viewtopic.php?id=237074 -[10]: https://bbs.archlinux.org/viewtopic.php?pid=1858588#p1858588 -[11]: https://www.debugpoint.com/kde-plasma-5-25/ -[12]: https://www.debugpoint.com/xfce-4-16-review/ -[13]: https://pythoninsider.blogspot.com/2022/08/python-3110rc1-is-now-available.html -[14]: https://cdimage.ubuntu.com/daily-live/current/ diff --git a/sources/tech/20221010 How to Update Google Chrome on Ubuntu Linux.md b/sources/tech/20221010 How to Update Google Chrome on Ubuntu Linux.md deleted file mode 100644 index 68c3bb50b4..0000000000 --- a/sources/tech/20221010 How to Update Google Chrome on Ubuntu Linux.md +++ /dev/null @@ -1,93 +0,0 @@ -[#]: subject: "How to Update Google Chrome on Ubuntu Linux" -[#]: via: "https://itsfoss.com/update-google-chrome-ubuntu/" -[#]: author: "Abhishek Prakash https://itsfoss.com/" -[#]: collector: "lkxed" -[#]: translator: "geekpi" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -How to Update Google Chrome on Ubuntu Linux -====== -So, you managed to install Google Chrome browser on your Ubuntu system. And now you wonder how to keep the browser updated. - -On Windows and macOS, when there is an update available on Chrome, you are notified in the browser itself and you can hit the update option from the browser. - -Things are different in Linux. You don’t update Chrome from the browser. You update it with the system updates. - -Yes. When there is a new update available on Chrome, Ubuntu notifies you via the system updater tool. - -![Ubuntu sends notifications when a new version of Chrome is available][1] - -You just have to click on the Install Now button, enter your account’s password when asked for it and have Chrome updated to a new version. - -Let me tell you why you see the updates on the system level and how you can update Google Chrome in the command line. - -### Method 1: Updating Google Chrome with system updates - -How did you install Chrome in the first place? You got the deb installer file from the [Chrome website][2] and used it to [install Chrome on Ubuntu][3]. - -The thing is that when you do that, Google adds a repository entry into your system’s sources list. This way, your system trusts the packages coming from the Google repository. - -![Google Chrome repository is added to the Ubuntu system][4] - -For all such entries added to your system, the package updates are centralized through the Ubuntu Updater. - -And this is why when there is an update available to Google Chrome (and other installed applications), your Ubuntu system sends you notification. - -![Chrome update available with other applications via System Updater][5] - -**Click the “Install Now” button and enter your password when asked for it**. Soon, the system will install all the upgradeable packages. - -Depending on the update preference, the notification may not be immediate. If you want, you can manually run the updater tool and see what updates are available for your Ubuntu system. - -![Run Software Updater to see what updates are available for your system][6] - -### Method 2: Updating Chrome in the Ubuntu command line - -If you prefer the terminal over the graphical interface, you can update Chrome with commands as well. - -Open a terminal and run the following commands one by one: - -``` -sudo apt update - -sudo apt --only-upgrade install google-chrome-stable -``` - -The first command updates the package cache so that your system is aware of what packages can be upgraded. - -The second command [only updates the single package][7] which is Google Chrome (installed as google-chrome-stable). - -### Conclusion - -As you can see, things are more streamlined in Ubuntu than in Windows. You get Chrome updated along with other system updates. - -On a related note, you may learn about [removing google Chrome from Ubuntu][8] if you are unhappy with it. - -Chrome is a fine browser. You can experiment with it by [using shortcuts in Chrome][9] as it makes the browsing experience even smoother. - -Enjoy Chrome on Ubuntu! - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/update-google-chrome-ubuntu/ - -作者:[Abhishek Prakash][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/ -[b]: https://github.com/lkxed -[1]: https://itsfoss.com/wp-content/uploads/2021/06/chrome-edge-update-ubuntu.png -[2]: https://www.google.com/chrome/ -[3]: https://itsfoss.com/install-chrome-ubuntu/ -[4]: https://itsfoss.com/wp-content/uploads/2021/06/google-chrome-repo-ubuntu.png -[5]: https://itsfoss.com/wp-content/uploads/2021/06/chrome-edge-update-ubuntu.png -[6]: https://itsfoss.com/wp-content/uploads/2022/04/software-updater-ubuntu-22-04.jpg -[7]: https://itsfoss.com/apt-upgrade-single-package/ -[8]: https://itsfoss.com/uninstall-chrome-from-ubuntu/ -[9]: https://itsfoss.com/google-chrome-shortcuts/ diff --git a/sources/tech/20221011 Easiest Way to Open Files as Root in GNOME Files.md b/sources/tech/20221011 Easiest Way to Open Files as Root in GNOME Files.md deleted file mode 100644 index f97f4a07af..0000000000 --- a/sources/tech/20221011 Easiest Way to Open Files as Root in GNOME Files.md +++ /dev/null @@ -1,81 +0,0 @@ -[#]: subject: "Easiest Way to Open Files as Root in GNOME Files" -[#]: via: "https://www.debugpoint.com/gnome-files-root-access/" -[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" -[#]: collector: "lkxed" -[#]: translator: "geekpi" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Easiest Way to Open Files as Root in GNOME Files -====== -Here’s the simplest way to access a file or directory as root in GNOME Files. - -![][1] - -In Windows, you generally get an option to open a file or folder as “Open As Administrator” in the right-click context menu. - -That feature is part of the File manager, i.e. for Windows; it’s part of Windows Explorer. However, it is executed by the operating system and its permission control modules. - -In Linux distributions and file managers, the situation is a little different. The different desktop has their way of handling this. - -Since modifying the files and folders as admin (or root) is risky and may cause a broken system, the feature is not easily available to users via the GUI of file managers. - -For example, KDE Plasma’s default file manager Dolphin recently [added this feature][2] so that when a root privilege is required, it will ask for you with a PolicyKit KDE Agent (polkit) window – as shown below. Not the other way around. You want to open/execute something via root from the file manager. - -It’s worth mentioning that you can not use “sudo dolphin” to run the file manager itself with root privilege. - -![Dolphin root access after KIO with Polkit implementation][3] - -In a way, it saves many unforeseen situations. But advanced users can always use sudo via the terminal to do their job. - -### GNOME Files (Nautilus) and root access to files, directories - -That being said, [GNOME Files][4] (aka Nautilus) has a way to open files and folders via root. - -Here’s how. - -* Open GNOME Files or Nautilus. -* Then click on other locations at the left pane. -* Press CTRL+L to bring up the address bar. -* In the address bar, type in below and hit enter. - -``` -admin:/// -``` - -* It would ask for the admin password; once you authenticate yourself successfully, you get the system open for you as admin. -* Now, here onwards, whatever you do, it’s as admin or root. - -![Enter the location address as admin][5] - -![Give admin password][6] - -![Opening GNOME Files as root][7] - -But, as always, be careful what you do as an admin. It’s often easy to forget after you authenticate yourself as root. - -There’s always a reason why these options are not easily visible to prevent you and many new Linux users from breaking their system. - -Cheers. - --------------------------------------------------------------------------------- - -via: https://www.debugpoint.com/gnome-files-root-access/ - -作者:[Arindam][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.debugpoint.com/author/admin1/ -[b]: https://github.com/lkxed -[1]: https://www.debugpoint.com/wp-content/uploads/2022/10/nauroot-1024x576.jpg -[2]: https://www.debugpoint.com/dolphin-root-access/ -[3]: https://www.debugpoint.com/wp-content/uploads/2022/02/Dolphin-root-access-after-KIO-with-Polkit-implementation.jpg -[4]: https://wiki.gnome.org/Apps/Files -[5]: https://www.debugpoint.com/wp-content/uploads/2022/10/Enter-the-location-address-as-admin.jpg -[6]: https://www.debugpoint.com/wp-content/uploads/2022/10/Give-admin-password.jpg -[7]: https://www.debugpoint.com/wp-content/uploads/2022/10/Opening-GNOME-Files-as-root.jpg diff --git a/sources/tech/20221012 How to Set Static IP Address on Ubuntu Server 22.04.md b/sources/tech/20221012 How to Set Static IP Address on Ubuntu Server 22.04.md deleted file mode 100644 index c29d2621a3..0000000000 --- a/sources/tech/20221012 How to Set Static IP Address on Ubuntu Server 22.04.md +++ /dev/null @@ -1,125 +0,0 @@ -[#]: subject: "How to Set Static IP Address on Ubuntu Server 22.04" -[#]: via: "https://www.linuxtechi.com/static-ip-address-on-ubuntu-server/" -[#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -How to Set Static IP Address on Ubuntu Server 22.04 -====== -In this post, we will cover how to set static ip address on Ubuntu server 22.04. - -It is highly recommended to have a static ip on linux server because it would be persistent across the reboot. Static IP plays an important role for servers like Mail Server, Web Server and File server etc. - -##### Prerequisites - -* Minimal Installed Ubuntu Server 22.04 -* Regular User with sudo admin rights - -In Ubuntu server 22.04, networking is controlled by netplan utility, so we will use netplan to configure static ip address on Ubuntu server. - -Note: we cannot use [nmcli utiltity][1] as it is not the part of default installation on Ubuntu server. - -### Setting up Static IP address on Ubuntu Server 22.04 - -Login to your Ubuntu server 22.04, look for the netplan configuration file. It is located under /etc/netplan directory. - -``` -$ cd /etc/netplan/ -$ ls -l -total 4 --rw-r--r-- 1 root root 116 Oct 12 04:03 00-installer-config.yaml -$ -``` - -Run below cat command to view the contents of ‘00-installer-config.yaml’ - -Note: Name of configuration file may differ as your per setup. As it is an yaml file, so make sure to maintain the indentation and syntax while editing. - -``` -$ cat 00-installer-config.yaml -``` - -Output, - -![Default-Content-netplan-ubuntu-server][2] - -As per above output, it says that we have ens33 interface and it is getting ip from dhcp server. Alternate way to view interface name is via ip command. - -Now, to configure static ip in place of dhcp, edit netplan configuration file using vi or nano editor and add the following content. - -``` -$ sudo vi 00-installer-config.yaml -# This is the network config written by 'subiquity' -network: -  renderer: networkd -  ethernets: -    ens33: -      addresses: -        - 192.168.1.247/24 -      nameservers: -        addresses: [4.2.2.2, 8.8.8.8] -      routes: -        - to: default -          via: 192.168.1.1 -  version: 2 -``` - -save and close the file. - -![Updated-Netplan-Config-File-Content-Ubuntu-Server][3] - -In the above file we have used following, - -* ens33 is the interface name -* addresses are used to set the static ip -* nameservers used to specify the DNS server ips -* routes used to specify the default gateway - -Note: Change the IP details and interface name as per your environment. - -To make above changes into the effect the apply these changes using following netplan command, - -``` -$ sudo netplan apply -``` - -Run following ip command to view the ip address on interface, - -``` -$ ip addr show ens33 -``` - -To view the default route, run - -``` -$ ip route show -``` - -Output of above commands, - -![ip-addr-route-command-output-ubuntu-server][4] - -Perfect, above commands’ output confirms that static ip and route has been configured successfully. - -That’s all from this post. Kindly do post your queries and feedback in below comments section. - --------------------------------------------------------------------------------- - -via: https://www.linuxtechi.com/static-ip-address-on-ubuntu-server/ - -作者:[Pradeep Kumar][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linuxtechi.com/author/pradeep/ -[b]: https://github.com/lkxed -[1]: https://www.linuxtechi.com/configure-ip-with-nmcli-command-linux/ -[2]: https://www.linuxtechi.com/wp-content/uploads/2022/10/Default-Content-netplan-ubuntu-server.png -[3]: https://www.linuxtechi.com/wp-content/uploads/2022/10/Updated-Netplan-Config-File-Content-Ubuntu-Server.png -[4]: https://www.linuxtechi.com/wp-content/uploads/2022/10/ip-addr-route-command-output-ubuntu-server.png diff --git a/sources/tech/20221012 Kubuntu 22.10 Kinetic Kudu- Top New Features.md b/sources/tech/20221012 Kubuntu 22.10 Kinetic Kudu- Top New Features.md deleted file mode 100644 index 3396550fa8..0000000000 --- a/sources/tech/20221012 Kubuntu 22.10 Kinetic Kudu- Top New Features.md +++ /dev/null @@ -1,88 +0,0 @@ -[#]: subject: "Kubuntu 22.10 Kinetic Kudu: Top New Features" -[#]: via: "https://www.debugpoint.com/kubuntu-22-10-features/" -[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Kubuntu 22.10 Kinetic Kudu: Top New Features -====== -A brief summary of Kubuntu 22.10 “Kinetic Kudu” and additional information about the release. - -![Kubuntu 22.10 Kinetic Kudu Desktop][1] - -### Kubuntu 22.10: Top New Features - -Among all the [great KDE Plasma-based distributions][2], Kubuntu is the best. Because it brings stability to both Plasma and at its core, that is Ubuntu. - -Kubuntu 22.10 is a short-term release based on Ubuntu 22.10 – supported for nine months from the release. Since short-term releases are to adopt the latest technologies, removing the obsolete ones, its features list is minimal. - -This release of Kubuntu features Linux Kernel 5.19, which brings run-time Average Power Limiting (RAPL) support for Intel’s Raptor and Alder Lake processor, multiple families of ARM updates in mainline kernel and usual processor/GPU and file-system updates. Learn more about Kernel 5.19 features in [this article][3]. - -Compared to the prior [Kubuntu release 22.04 LTS][4] (with Plasma 5.24), you get the latest KDE Plasma 5.25 (final point release) desktop with all the bug fixes and updates. - -Although, [KDE Plasma 5.26][5], which has just got released, could not make it to this version. But I believe it should come in as a point release, just not on the release day. - -Besides, Plasma 5.25 is not small in terms of features. It’s, in fact, packed with new cool advancements. If you are especially using Kubuntu’s earlier version, you should be aware of these new items. - -Firstly, Kubuntu 22.10 enables you to make your default panel “float”. We call it the Floating Panel. So, no more using the add-ons for this. - -Secondly, the accent colour of your desktop can change based on the wallpaper’s tone. Now you can see your Kubuntu desktop changes dynamically when you enable it from Settings > Global Theme > Colours. - -![KDE Plasma - Dynamic Accent Colour and Floating Panel Demo][6] - -In addition, switching between dark and light modes becomes more smooth thanks to the change. Also, in Kubuntu 22.10 with Wayland, you can now see and apply the display-specific resolutions in the settings dropdown. - -On the other hand, Discover is more friendly to Flatpak, with additional app details and an additional options button to notify you that there is still data for uninstalled apps. - -![The app page gives more clarity in Plasma 5.25][7] - -Furthermore, the Krunner launcher in Kubuntu now detects the search language and display results accordingly. Also, the network manager applet now shows the Wi-Fi frequency alongside the access point name (this is help full for cases where you have the same access point name for 4G and 5G bands). - -All of these changes are powered by Qt 5.15.6 and Framework 5.98. If you want to learn more about Plasma 5.25, refer to the dedicated feature guide [here][8]. - -### Other features of Kubuntu 22.10 - -The core applications and packages bump up to their respective versions based on Ubuntu 22.10, and here’s a summary. - -* Linux Kernel 5.19 -* KDE Plasma 5.25.5 (hopefully will get 5.26 soon) -* KDE Framework 5.98 -* Qt 5.15.6 -* Firefox 105.0.1 -* Thunderbird 102.3.2 -* LibreOffice 7.4.2.3 -* VLC Media Player 3.0.17 -* Pipewire replacing PulseAudio - -Finally, you can download the Kubuntu 22.10 BETA from the below links. - -[https://cdimage.ubuntu.com/kubuntu/releases/kinetic/beta/][9] - -While the developers are preparing for the final release (due on Oct 20, 2022), you can try it on a [virtual machine][10], Or a physical system. - --------------------------------------------------------------------------------- - -via: https://www.debugpoint.com/kubuntu-22-10-features/ - -作者:[Arindam][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.debugpoint.com/author/admin1/ -[b]: https://github.com/lkxed -[1]: https://www.debugpoint.com/wp-content/uploads/2022/10/Kubuntu-22.10-Kinetic-Kudu-Desktop.jpg -[2]: https://www.debugpoint.com/top-linux-distributions-kde-plasma/ -[3]: https://www.debugpoint.com/linux-kernel-5-19/ -[4]: https://www.debugpoint.com/kubuntu-22-04-lts/ -[5]: https://www.debugpoint.com/kde-plasma-5-26/ -[6]: https://youtu.be/npfHwMLXXHs -[7]: https://www.debugpoint.com/wp-content/uploads/2022/05/App-page-gives-more-clarity-in-Plasma-5.25.jpg -[8]: https://www.debugpoint.com/kde-plasma-5-25/ -[9]: https://cdimage.ubuntu.com/kubuntu/releases/kinetic/beta/ -[10]: https://www.debugpoint.com/tag/virtual-machine diff --git a/sources/tech/20221013 Enjoy the Classic Snake Game in Your Linux Terminal.md b/sources/tech/20221013 Enjoy the Classic Snake Game in Your Linux Terminal.md deleted file mode 100644 index e1c795958a..0000000000 --- a/sources/tech/20221013 Enjoy the Classic Snake Game in Your Linux Terminal.md +++ /dev/null @@ -1,100 +0,0 @@ -[#]: subject: "Enjoy the Classic Snake Game in Your Linux Terminal" -[#]: via: "https://www.debugpoint.com/snake-game-linux-terminal/" -[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Enjoy the Classic Snake Game in Your Linux Terminal -====== -This is how you can install and play the classic Snake Game in Linux Terminal. - -Remember the classic and simple snake game of old mobile phones? I remember playing it for hours. Hey, no other options at the time, right? Smartphones were still not in the market. And all you have is this – - -![Nokia 3310 with legacy snake game][1] - -But over time, the Snake Game was replaced by more advanced graphical games with various options. But nothing beats that classic snake game. - -And what if I told you, you could play this game in the Linux Terminal itself? Whether you are running Ubuntu Linux, Fedora Linux or Arch Linux doesn’t matter. This game is available for most of the [distros][2]. - -![nsnake Game - Main Menu][3] - -### Install nSnake – Snake Game for Linux Terminal - -You can install [this game][4] via the terminal using the below methods. - -For Ubuntu, Linux Mint or other related distributions: - -``` -sudo apt install nsnake -``` - -For Fedora Linux and others: - -``` -sudo dnf install nsnake -``` - -For Arch Linux, this snake game is available in the [Arch User repository][5]. You can install it using the following steps. - -* [Set up Yay AUR helper][6] -* Then open a terminal and run the below command - -``` -yay -S nsnake -``` - -The above command installs the stock repository version of the game, which might not be the latest. However, if you want the latest version, you may need to compile the source via GitHub. I have added the compilation instructions at the end of this page for your reference. - -### Playing the game - -Playing the game is very simple. Type nsnake in the terminal, which will launch the game. - -To quit immediately, press q. - -Following are the default key bindings. - -* Arrow keys – to move the snake -* q – Quit the game -* p – Pause the game - -You can also configure the game in various ways, which are available via the main menu. - -![nsnake Linux Terminal Snake Game Settings][7] - -So, enjoy! - -##### Compilation - -To compile the latest version, use the following commands in all Linux distributions. - -Oh, make sure you have `git` and `ncurses-devel` installed, which are the required packages for compilation. - -``` -git clone https://github.com/alexdantas/nSnake.gitcd nsnakemakemake install -``` - -So, do you like Snake Game? Do you prefer it over other terminal-based games? Share your views with other readers in the comment box below. - --------------------------------------------------------------------------------- - -via: https://www.debugpoint.com/snake-game-linux-terminal/ - -作者:[Arindam][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.debugpoint.com/author/admin1/ -[b]: https://github.com/lkxed -[1]: https://www.debugpoint.com/wp-content/uploads/2021/12/Nokia-3310-with-legacy-snake-game.jpg -[2]: https://www.debugpoint.com/category/distributions -[3]: https://www.debugpoint.com/wp-content/uploads/2021/12/nsnake-Game-Main-Menu.jpg -[4]: https://github.com/alexdantas/nsnake -[5]: https://aur.archlinux.org/packages/nsnake/ -[6]: https://www.debugpoint.com/2021/01/install-yay-arch/ -[7]: https://www.debugpoint.com/wp-content/uploads/2021/12/nsnake-Linux-Terminal-Snake-Game-Settings.jpg diff --git a/sources/tech/20221013 Learn Bash base64 Encode and Decode With Examples.md b/sources/tech/20221013 Learn Bash base64 Encode and Decode With Examples.md deleted file mode 100644 index 33bc9e4a3b..0000000000 --- a/sources/tech/20221013 Learn Bash base64 Encode and Decode With Examples.md +++ /dev/null @@ -1,158 +0,0 @@ -[#]: subject: "Learn Bash base64 Encode and Decode With Examples" -[#]: via: "https://www.debugpoint.com/bash-base64-encode-decode/" -[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Learn Bash base64 Encode and Decode With Examples -====== -Want to learn about the base64 encode and decode method? Here in this tutorial, we explain the base64 encode and decode steps using bash shell scripting with various examples. - -![][1] - -The base64 encoding method transmits data over any communication medium by converting binary data to text. This method is primarily used for the email encryption process. - -The Base64 method, in general, is a binary-to-text encoding scheme representing 8-byte binary data in ASCII string format. This has several advantages while transmitting or channelling data among various mediums – especially those that reliably support text content. Hence, it is widely used on World Wide Web. Probably the most used case of this encoding scheme is using it for email attachments. - -As per the Base64 representation table, the binary data can be converted to 64 different ASCII characters – which are easy to transmit and printable. This encoding method uses letters A to Z, a to Z, 0 to 9 and + and /. - -A total of 64 ASCII characters to represent binary from `000000` to `111111`. Each non-final Base64 digit represents exactly 6 bits of data. - -![Base64 Index Table][2] - -### Bash base64 encode and decode - -#### Syntax - -Before you learn about the examples, here is the basic syntax. - -``` -base64 [OPTIONs] [INFILE] [OUTFILE] -``` - -Option: You can provide any of the options or combine them as explained below.INFILE: Input can be picked up from standard input (like the command line) or files.OUTFILE: You can redirect the output to the standard output, like the terminal or to a file. - -| Arguments | Descriptions | -| :- | :- | -| -e or –encode | This option is used to encode any data from standard input or any file. It is the default option. | -| -d or –decode | This option is used to decode any encoded data from standard input or any file. | -| -n or –noerrcheck | By default, base64 checks error while decoding any data. You can use –n or –noerrcheck option to ignore checking at the time of decoding. | -| -i, –ignore-garbage | This option is used to ignore non-alphabet characters while decoding. | -| -u or –help | This option is used to get information about the usage of this command. | - -#### Example 1 – A basic encode - -In Linux, the base64 package is installed by default. Hence, you can use it from the command line easily. To simply encode a string or text, you can pass it through the command line via piping and get the encoded text. In this example, the string debugpoint.com is encoded to base64. - -``` -echo "debugpoint.com" | base64 -``` - -![bash base64 encode and decode - example 1][3] - -The result is the base64 encoded string. - -#### Explanation - -The encoding method uses several steps to convert the input. The input characters are converted to 8-bit binary values. The entire set of the binary string is split into 6-bit binary values, which are converted to decimals. - -Each decimal value is translated to the base64 character via the base64 index table. - -In the above example, the first character, “d”, is converted to binary `01100100`. The first 6 bits are `011001`, which is 25 in decimal. The 25 refers to the Z in the base64 index table. And this goes on for the entire stream of text. See the example below. - -![Base64 Encode and Decode – inner working][4] - -#### Example 2 – A basic decode - -To decode the string, simply pass the encoded value to the base64 with the option `--decode`. And it will give you the exact input string. - -![bash base64 encode and decode - example 2 (decode the same example)][5] - -#### Example 3 – Encode a Text file - -The same command can be used to encode a text file and redirect the output to another text file. Here’s how. - -``` -base64 example3.txt > example3-encoded.txt -``` - -![Encode a text file][6] - -#### Example 4 – Decode a Text File - -And to decode a text file that was encoded using base64, simply use the `--decode` or `-d` switch and pass on the text file name. - -``` -base64 -d example3-encoded.txt -``` - -#### Example 5 – Encode a custom input from the user - -Using bash shell programming, you can take input from the user via the terminal and encode it. But for that, you need to write a simple shell script and execute it after giving executable permission. - -Here’s a simple example which takes input from the user and displays the encoded string. - -``` -#!/bin/bash -#Sample program to take input, encode to base64 and display on terminal -#Example by www.debugpoint.com -echo "Enter text for encoding to base64:" -read input_text -output_text=`echo -n $input_text | base64` -echo "The Base64 Encoded text is: $output_text" -``` - -![Custom input - base64 encode and decode using script][7] - -#### Example 6 – A Simple Authentication using base64 - -You can implement a simple authentication system using the above encode and decode method. You can ask the user to enter a password or a secret code. Then store the secret code in a file or compare it on the fly. - -If the stored encoded string matches with the user input encoded text, then the user is authenticated. However, it is a straightforward way of checking an authentication, but sometimes useful for simple business cases. - -``` -#!/bin/bash -#Sample program to take input, encode to base64 and display on terminal -#Example by www.debugpoint.com -echo "Type your password" -read pwd1 -decoded_text=`echo 'U2lsZW5jZSBpcyBnb2xkZW4h' | base64 --decode` -if [[ $pwd1 == $decoded_text ]] -then - echo "You are a valid user." -else - echo "You are NOT a valid user." -fi -``` - -![A Simple Authentication using bash base64][8] - -### Conclusion - -I hope you get to learn the basics of [Base64][9] encode and decode with these examples. Also, learn a bit about its inner workings. Let me know in the comment box below if this helps you or need additional tutorials on this topic. - --------------------------------------------------------------------------------- - -via: https://www.debugpoint.com/bash-base64-encode-decode/ - -作者:[Arindam][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.debugpoint.com/author/admin1/ -[b]: https://github.com/lkxed -[1]: https://www.debugpoint.com/wp-content/uploads/2021/11/base64example-1024x576.jpg -[2]: https://www.debugpoint.com/wp-content/uploads/2021/11/Base64-Index-Table.png -[3]: https://www.debugpoint.com/wp-content/uploads/2021/11/bash-base64-encode-and-decode-example-1.jpg -[4]: https://www.debugpoint.com/wp-content/uploads/2021/11/Base64-Encode-and-Decode-inner-working.png -[5]: https://www.debugpoint.com/wp-content/uploads/2021/11/bash-base64-encode-and-decode-example-2-decode-the-same-example.jpg -[6]: https://www.debugpoint.com/wp-content/uploads/2021/11/Encode-a-text-file.png -[7]: https://www.debugpoint.com/wp-content/uploads/2021/11/Custom-input-base64-encode-and-decode-using-script.png -[8]: https://www.debugpoint.com/wp-content/uploads/2021/11/A-Simple-Authentication-using-bash-base64.png -[9]: https://linux.die.net/man/1/base64 diff --git a/sources/tech/20221013 Ubuntu Budgie 22.10 Kinetic Kudu- Top New Features.md b/sources/tech/20221013 Ubuntu Budgie 22.10 Kinetic Kudu- Top New Features.md deleted file mode 100644 index 0bee836b7f..0000000000 --- a/sources/tech/20221013 Ubuntu Budgie 22.10 Kinetic Kudu- Top New Features.md +++ /dev/null @@ -1,93 +0,0 @@ -[#]: subject: "Ubuntu Budgie 22.10 Kinetic Kudu: Top New Features" -[#]: via: "https://www.debugpoint.com/ubuntu-budgie-22-10-features/" -[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Ubuntu Budgie 22.10 Kinetic Kudu: Top New Features -====== -Here’s a brief overview of the Ubuntu Budgie 22.10 (upcoming) and its features. - -![Ubuntu Budgie 22.10 KInetic Kudu Desktop][1] - -### Ubuntu Budgie 22.10: Top New Features - -The Budgie desktop has a different fan base because of its fusion of simplicity, feature and performance. Ubuntu Budgie 22.10 is an official Budgie flavour of Ubuntu, where you get the latest Ubuntu base with a stable Budgie desktop. - -Ubuntu Budgie 22.10 is a short-term release, supported for nine months until July 2023. - -This release of Ubuntu Budgie features Linux Kernel 5.19, which brings run-time Average Power Limiting (RAPL) support for Intel’s Raptor and Alder Lake processor, multiple families of ARM updates in mainline kernel and usual processor/GPU and file-system updates. Learn more about Kernel 5.19 features in [this article][2]. - -At the heart of this version, Ubuntu Budgie is powered by Budgie Desktop version 10.6.4, which brings updated applications and additional core tweaks. If you are using the prior Ubuntu budgie version, i.e. 22.04 or 21.10, you will notice some changes. And you should be aware of those. - -First of all, the Budgie Control Center gets modern protocols for screensharing (both RDP and VNC), enhanced fractional scaling and colour profile support for your monitor. In addition, the Control centre now shows the monitor refresh rate and additional support added for Wacom tablets. - -Secondly, Budgie desktop settings get a global option to control applets spacing and additional refinements. - -After removing the calendar launcher, the clock at the top bar now only gives the launcher for date/time settings. You can access the Calendar from the applets at the extreme right of the top bar. - -Ubuntu Budgie 22.10 fundamentally changed its application stack, which ships by default. Earlier (22.04 and prior), Budgie featured the GNOME applications as default for several desktop functions. Since GNOME is already moved to libadwaita/GTK4 with its own styling and theming, those apps wouldn’t look consistent in Budgie’s styling. - -That is correct. Because these rounded corners with budgie/mate apps really look off. - -![Budgie desktop with GTK4-libadwaita and MATE apps][3] - -So, from this release onwards, the default app sets are slowly moving away from GNOME Apps to native or MATE apps/alternatives. - -For Example, GNOME Calculator and System Monitor are now replaced by Mate Calculator and Mate system monitor. Atril document viewer replaces Evince reader. In addition, font-manager replaces GNOME Font Viewer, and a list of other GNOME apps are in “wait and watch” mode. They may get replaced in upcoming Budgie desktop point releases. - -However, the text editor is still Gedit in this version, which is already a [great choice][4]. And a new native screenshot application debuts with a tweak tool for Raspberry Pi devices. - -If you want to learn more about this transition, read the discussion [here][5]. - -So, that’s about the core changes in this release and here’s a quick summary of Ubuntu Budgie alongside other applications. - -### Summary of the core items of Ubuntu Budgie 22.10 - -#### Core and major items - -* [Ubuntu 22.10][6] -* Linux Kernel 5.19 -* Budgie desktop version 10.6.4 -* Firefox 105.0.1 (Snap version) -* Thunderbird 102.3.2 -* LibreOffice 7.4.2.3 - -#### Other changes - -* Pipewire replacing PulseAudio. The PulseAudio package is removed from ISO. -* WebP support by default -* New Tweak Tool for ARM devices (Raspberry Pi) -* Tilix Terminal 1.9.5 -* Transmission torrent client 3.0.0 -* GNOME Software 43.0 - -Finally, you can download Ubuntu Budgie 22.10 Beta from the below link. Also you can try out the Raspberry Pi beta image as well. - -* [Link to the beta build][7] -* [Link to Raspberry Pi build][8] - --------------------------------------------------------------------------------- - -via: https://www.debugpoint.com/ubuntu-budgie-22-10-features/ - -作者:[Arindam][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.debugpoint.com/author/admin1/ -[b]: https://github.com/lkxed -[1]: https://www.debugpoint.com/wp-content/uploads/2022/10/Ubuntu-Budgie-22.10-KInetic-Kudu-Desktop-1024x578.jpg -[2]: https://www.debugpoint.com/linux-kernel-5-19/ -[3]: https://www.debugpoint.com/wp-content/uploads/2022/10/Budgie-desktop-with-GTK4-libadwaita-and-MATE-apps.jpg -[4]: https://www.debugpoint.com/gedit-features/ -[5]: https://discourse.ubuntubudgie.org/t/default-applications-review-for-22-10-23-04-and-beyond/5883 -[6]: https://www.debugpoint.com/ubuntu-22-10/ -[7]: https://cdimage.ubuntu.com/ubuntu-budgie/releases/kinetic/beta/ -[8]: https://sourceforge.net/projects/budgie-remix/files/budgie-raspi-22.10/ diff --git a/sources/tech/20221013 What you need to know about compiling code.md b/sources/tech/20221013 What you need to know about compiling code.md deleted file mode 100644 index 0f811393a8..0000000000 --- a/sources/tech/20221013 What you need to know about compiling code.md +++ /dev/null @@ -1,102 +0,0 @@ -[#]: subject: "What you need to know about compiling code" -[#]: via: "https://opensource.com/article/22/10/compiling-code" -[#]: author: "Alan Smithee https://opensource.com/users/alansmithee" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -What you need to know about compiling code -====== -Use this handy mousetrap analogy to understand compiling code. Then download our new eBook, An open source developer's guide to building applications. - -Source code must be compiled in order to run, and in open source software everyone has access to source code. Whether you've written code yourself and you want to compile and run it, or whether you've downloaded somebody's project to try it out, it's useful to know how to process source code through a [compiler][2], and also what exactly a compiler does with all that code. - -### Build a better mousetrap - -We don't usually think of a mousetrap as a computer, but believe it or not, it does share some similarities with the CPU running the device you're reading this article on. The classic (non-cat) mousetrap has two states: it's either set or released. You might consider that *on* (the kill bar is set and stores potential energy) and *off* (the kill bar has been triggered.) In a sense, a mousetrap is a computer that calculates the presence of a mouse. You might imagine this code, in an imaginary language, describing the process: - -``` -if mousetrap == 0 then - There's a mouse! -else - There's no mouse yet. -end -``` - -In other words, you can derive mouse data based on the state of a mousetrap. The mousetrap isn't foolproof, of course. There could be a mouse next to the mousetrap, and the mousetrap would still be registered as *on* because the mouse has not yet triggered the trap. So the program could use a few enhancements, but that's pretty typical. - -### Switches - -A mousetrap is ultimately a switch. You probably use a switch to turn on the lights in your house. A lot of information is stored in these mechanisms. For instance, people often assume that you're at home when the lights are on. - -You could program actions based on the activity of lights on in your neighborhood. If all lights are out, then turn down your loud music because people have probably gone to bed. - -A CPU uses the same logic, multiplied by several orders of measure, and shrunken to a microscopic level. When a CPU receives an electrical signal at a specific register, then some other register can be tripped, and then another, and so on. If those registers are made to be meaningful, then there's communication happening. Maybe a chip somewhere on the same motherboard becomes active, or an LED lights up, or a pixel on a screen changes color. - -**[[ Related read 6 Python interpreters to try in 2022 ]][3]** - -What comes around goes around. If you really want to detect a rodent in more places than the one spot you happen to have a mousetrap set, you could program an application to do just that. With a webcam and some rudimentary image recognition software, you could establish a baseline of what an empty kitchen looks like and then scan for changes. When a mouse enters the kitchen, there's a shift in the pixel values where there was previously no mouse. Log the data, or better yet trigger a drone that focuses in on the mouse, captures it, and moves it outside. You've built a better mousetrap through the magic of on and off signals. - -### Compilers - -A code compiler translates human-readable code into a machine language that speaks directly to the CPU. It's a complex process because CPUs are legitimately complex (even more complex than a mousetrap), but also because the process is more flexible than it strictly "needs" to be. Not all compilers are flexible. There are some compilers that have exactly one target, and they only accept code files in a specific layout, and so the process is relatively straight-forward. - -Luckily, modern general-purpose compilers aren't simple. They allow you to write code in a variety of languages, and they let you link libraries in different ways, and they can target several different architectures. The [GNU C Compiler (GCC)][4] has over 50 lines of options in its `--help` output, and the LLVM `clang` compiler has over 1000 lines in its `--help` output. The GCC manual contains over 100,000 words. - -You have lots of options when you compile code. - -Of course, most people don't need to know all the possible options. There are sections in the GCC man page I've never read, because they're for Objective-C or Fortran or chip architectures I've never even heard of. But I value the ability to compile code for several different architectures, for 64-bit and 32-bit, and to run open source software on computers the rest of the industry has left behind. - -### The compilation lifecycle - -Just as importantly, there's real power to understanding the different stages of compiling code. Here's the lifecycle of a simple C program: - -1. C source with macros (.c) is preprocessed with `cpp` to render an `.i` file. -2. C source code with expanded macros (.i) is translated with `gcc` to render an `.s` file. -3. A text file in Assembly language (.s) is `as`sembled with as into an `.o` file. -4. Binary object code with instructions for the CPU, and with offsets not tied to memory areas relative to other object files and libraries (*.o) is linked with `ld` to produce an executable. -5. The final binary file either has all required objects within it, or it's set to load linked dynamic libraries (*.so files). - -And here's a simple demonstration you can try (with some adjustment for library paths): - -``` -$ cat << EOF >> hello.c - #include - int main(void) - { printf("hello world\n"); -   return 0; } -   EOF -$ cpp hello.c > hello.i -$ gcc -S hello.i -$ as -o hello.o hello.s -$ ld -static -o hello \ --L/usr/lib64/gcc/x86_64-slackware-linux/5.5.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 world -``` - -### Attainable knowledge - -Computers have become amazingly powerful, and pleasantly user-friendly. Don't let that fool you into believing either of the two possible extremes: computers aren't as simple as mousetraps and light switches, but they also aren't beyond comprehension. You can learn about compiling code, about how to link, and compile for a different architecture. Once you know that, you can debug your code better. You can understand the code you download. You may even fix a bug or two. Or, in theory, you could build a better mousetrap. Or a CPU out of mousetraps. It's up to you. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/22/10/compiling-code - -作者:[Alan Smithee][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/alansmithee -[b]: https://github.com/lkxed -[2]: https://opensource.com/article/19/5/primer-assemblers-compilers-interpreters -[3]: https://opensource.com/article/22/9/python-interpreters-2022 -[4]: https://opensource.com/article/22/5/gnu-c-compiler diff --git a/sources/tech/20221014 13 Independent Linux Distros That are Built From Scratch.md b/sources/tech/20221014 13 Independent Linux Distros That are Built From Scratch.md deleted file mode 100644 index 0983918cc6..0000000000 --- a/sources/tech/20221014 13 Independent Linux Distros That are Built From Scratch.md +++ /dev/null @@ -1,315 +0,0 @@ -[#]: subject: "13 Independent Linux Distros That are Built From Scratch" -[#]: via: "https://itsfoss.com/independent-linux-distros/" -[#]: author: "sreenath https://itsfoss.com/author/sreenath/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -13 Independent Linux Distros That are Built From Scratch -====== -There are hundreds of Linux distributions available. - -But most of them fall into these three categories: Debian, Red Hat (Fedora) and Arch Linux. - -Using a distribution based on Debian/Ubuntu, Red Hat/SUSE or Arch Linux has its advantages. They are popular and hence their package manager offers a huge range of software. - -However, some users prefer to use Linux distributions built from scratch and be independent of DEB/RPM packaging system. - -In this article, we will list some of the best Linux distributions developed independently. - -**Note:** Obviously, this list excludes popular options like Debian, Ubuntu, and Fedora, which are used as bases for creating new distros. Moreover, the distributions are in no particular order of ranking. - -### 1. NixOS - -![Image Credits: Distrowatch][1] - -Initially released in 2003, Nix OS is built on top of the Nix Package Manager. It provides two releases every year, usually scheduled in May and November. - -NixOS may not be a distribution directly geared to new and average users. However, its unique approach to [package management][2] attracts various kinds of users. - -Additionally, 32-bit support systems are also supported. - -##### Other Features: - -* Builds packages isolated -* Reliable upgrade with rollback feature -* Reproducible system configuration - -[NixOS][3] - -**Related**: [Advanced Linux Distributions for Expert Linux Users][4] - -### 2. Gentoo Linux - -![Image Credits: Distrowatch][5] - -Gentoo Linux is an independently developed distribution aimed mainly at system experts. It is built for users who want the freedom to customize, fine-tune and optimize the operating system to suit their requirements. - -Gentoo uses [Portage package management][6] that lets you create and install packages, often allowing you to optimize them for your hardware. **Chromium OS**, the open-source version of Chrome OS, uses Gentoo at its core. - -Not to forget, Gentoo is one of those [distributions that still support 32-bit architectures][7]. - -##### Other Features: - -* Incremental Updates -* Source-based approach to software management -* Concept of overlay repositories like GURU (Gentoo’s user repository), where users can add packages not yet provided by Gentoo - -[Gentoo Linux][8] - -### 3. Void Linux - -![Image Credits: Distrowatch][9] - -Void Linux is a [rolling release distribution][10] with its own X Binary Package System (XBPS) for installing and removing software. It was created by **Juan Romero Pardines**, a former NetBSD developer. - -It avoids systemd and instead uses runit as its init system. Furthermore, it gives you the option to use several [desktop environments][11]. - -##### Other Features: - -* Minimal system requirements -* Offers an official repository for non-free packages -* Support for Raspberry Pi -* Integration of OpenBSD’s LibreSSL software -* Support for musl C library -* 32-bit support - -[Void Linux][12] - -**Related:** [Not a Systemd Fan? Here are 13+ Systemd-Free Linux Distributions][13] - -### 4. Solus Linux - -![solus budgie 2022][14] - -Formerly EvolveOS, Solus Linux offers some exciting features while built from scratch. Solus features its own homegrown budgie desktop environment as its flagship version. - -Compared to other options, Solus Linux is one of the few independent distributions that new Linux users can use. It manages to be one of the [best Linux distributions][15] available. - -It uses eopkg package management with a semi-rolling release model. As per the developers, Solus is exclusively developed for personal computing purposes. - -##### Other Features: - -* Available in Budgie, Gnome, MATE, and KDE Plasma editions -* Variety of software out of the box, which reduces setup efforts - -[Solus Linux][16] - -### 5. Mageia - -![Image Credits: Distrowatch][17] - -Mageia started as a fork of Mandriva Linux back in 2010. It aims to be a stable and secure operating system for desktop and server usage. - -Mageia is a community-driven project supported by a non-profit organization and elected contributors. You will notice a major release every year. - -##### Other Features - -* Supports 32-bit system -* KDE Plasma, Gnome, and XFCE editions are available from the website -* Minimal system requirements - -[Mageia][18] - -**Related:** **[Linux Distros That Still Support 32-Bit Systems][19]** - -### 6. Clear Linux - -![Image Credits: Distrowatch][20] - -Clear Linux is a distribution by Intel, primarily designed with performance and cloud use cases in mind. - -One interesting thing about Clear Linux is the operating system upgrades as a whole rather than individual packages. So, even if you mess up with the system accidentally, it should boot correctly, performing a factory reset to let you set it up again. - -It is not geared toward personal use. But it can be a unique choice to try. - -##### Other Features: - -* Highly tuned for Intel platforms -* A strict separation between User and System files -* Constant vulnerability scanning - -[Clear Linux OS][21] - -### 7. PCLinuxOS - -![Image Credits: Distrowatch][22] - -PCLinuxOS is an x86_64 Linux distribution that uses APT-RPM packages. You can get KDE Plasma, Mate, and XFCE desktops, while it also offers several community editions featuring more desktops. - -Locally installed versions of PCLinuxOS utilize the APT package management system thanks to [Synaptic package manager][23]. You can also find rpm packages from its repositories. - -##### Other Features: - -* mylivecd script allows the user to take a ‘snapshot’ of their current hard drive installation (all settings, applications, documents, etc.) and compress it into an ISO CD/DVD/USB image. -* Additional support for over 85 languages. - -[PCLinuxOS][24] - -### 8. 4MLinux - -![4m linux 2022][25] - -[4MLinux][26] is a general-purpose Linux distribution with a strong focus on the following four **“M”**  of computing: - -* Maintenance (system rescue Live CD) -* Multimedia (full support for a huge number of image, audio and video formats) -* Miniserver (DNS, FTP, HTTP, MySQL, NFS, Proxy, SMTP, SSH, and Telnet) -* Mystery (meaning a collection of classic Linux games) - -It has a minimal system requirement and is available as a desktop and server version. - -##### Other Features - -* Support for large number of image, audio/video formats -* Small and general-purpose Linux distribution - -[4MLinux][27] - -### 9. Tiny Core Linux - -![Image Credits: Distrowatch][28] - -Tiny Core Linux focuses on providing a base system using BusyBox and FLTK. It is not a complete desktop. So, you do not expect it to run on every system. - -It represents only the core needed to boot into a very minimal X desktop, typically with wired internet access. - -The user gets great control over everything, but it may not be an easy out-of-the-box experience for new Linux users. - -##### Other Features - -* Designed to run from a RAM copy created at boot time -* By default, operates like a cloud/internet client -* Users can run appbrowser to browse repositories and download applications - -[Tiny Core Linux][29] - -### 10. Linux From Scratch - -![Image Credit: Reddit][30] - -[Reddit][31] - -Linux From Scratch is a way to install a working Linux system by building all its components manually. Once completed, it provides a compact, flexible and secure system and a greater understanding of the internal workings of the Linux-based operating systems. - -If you need to dive deep into how a Linux system works and explore its nuts and bolts, Linux From Scratch is the project you need to try. - -##### Other Features - -* Customised Linux system, entirely from scratch -* Extremely flexible -* Offers added security because of self compile from source - -[Linux From Scratch][32] - -### 11. Slackware - -![Image Credits: Distrowatch][33] - -Slackware is the oldest distribution that is still being maintained. Originally created in 1993, with Softlanding Linux System as base, Slackware later became the base for many Linux distributions. - -Slackware aims at producing the most UNIX-like Linux distribution while keeping simplicity and stability. - -##### Other Features - -* Available for 32-bit and 64-bit systems -* Extensive online documentation -* Can run on Pentium system to latest machines - -[Slackware][34] - -### 12. Alpine Linux - -![alpine linux xfce 2022][35] - -Alpine Linux is a community-developed operating system designed for routers, firewalls, VPNs, VoIP boxes, and servers. It began as a fork of the LEAF Project. - -Alpine Linux uses apk-tools package management, initially written as a shell script and later written in C programming language. This is a minimal Linux distribution, which still supports 32-bit systems and can be installed as a run-from-RAM operating system. - -##### Other Features: - -* Provides a minimal container image of just 5 MB in size -* 2-year support for the main repository and support until the next stable release for the community repository -* Made around musl libc and Busybox with resource-efficient containers - -[Alpine Linux][36] - -### 13. KaOS - -![Image Credits: Distrowatch][37] - -KaOS is a Linux distribution built from scratch and inspired by Arch Linux. It uses [pacman for package management][38]. It is built with the philosophy “*One Desktop Environment (KDE Plasma), One Toolkit (Qt), One Architecture (x86_64)*“. - -It has limited repositories, but still, it offers plenty of tools for a regular user. - -##### Other Features: - -* Most up-to-date Plasma desktop -* Tightly integrated rolling and transparent distribution for the modern desktop - -[KaOS][39] - -#### Wrapping Up - -If you need a unique experience, these independent Linux distributions should serve the purpose. - -However, if you want to replace it with a mainstream distribution like Ubuntu for your desktop…You might want to think twice, considering most of the options (if not all) above are not ideal options for day-to-day desktop usage. - -But then again, if you have a fair share of experience with Linux distributions, you can undoubtedly take up the task for an adventure! - -*If you were to try one of these indie distros, which one would it be? Share with us in the comments.* - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/independent-linux-distros/ - -作者:[sreenath][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/sreenath/ -[b]: https://github.com/lkxed -[1]: https://itsfoss.com/wp-content/uploads/2022/10/nixos-2022.png -[2]: https://itsfoss.com/package-manager/ -[3]: https://nixos.org/ -[4]: https://itsfoss.com/advanced-linux-distros/ -[5]: https://itsfoss.com/wp-content/uploads/2022/08/gentoo-linux-plasma.jpg -[6]: https://wiki.gentoo.org/wiki/Portage -[7]: https://itsfoss.com/32-bit-linux-distributions/ -[8]: https://www.gentoo.org/ -[9]: https://itsfoss.com/wp-content/uploads/2022/08/void-linux.jpg -[10]: https://itsfoss.com/rolling-release/ -[11]: https://itsfoss.com/best-linux-desktop-environments/ -[12]: https://voidlinux.org/ -[13]: https://itsfoss.com/systemd-free-distros/ -[14]: https://itsfoss.com/wp-content/uploads/2022/10/solus-budgie-2022.jpg -[15]: https://itsfoss.com/best-linux-distributions/ -[16]: https://getsol.us/home/ -[17]: https://itsfoss.com/wp-content/uploads/2022/08/mageia-1.jpg -[18]: https://www.mageia.org/en/ -[19]: https://itsfoss.com/32-bit-linux-distributions/ -[20]: https://itsfoss.com/wp-content/uploads/2022/08/clear-linux-desktop.png -[21]: https://clearlinux.org/ -[22]: https://itsfoss.com/wp-content/uploads/2022/08/pclinuxos.png -[23]: https://itsfoss.com/synaptic-package-manager/ -[24]: https://www.pclinuxos.com/ -[25]: https://itsfoss.com/wp-content/uploads/2022/10/4m-linux-2022.jpg -[26]: https://itsfoss.com/4mlinux-review/ -[27]: http://4mlinux.com/ -[28]: https://itsfoss.com/wp-content/uploads/2022/03/tinycore.jpg -[29]: http://www.tinycorelinux.net/ -[30]: https://itsfoss.com/wp-content/uploads/2022/08/enable-aur-e1659974408774.png -[31]: https://www.reddit.com/r/linuxmasterrace/comments/udi7ts/decided_to_try_lfs_in_a_vm_started_about_a_week/ -[32]: https://www.linuxfromscratch.org/ -[33]: https://itsfoss.com/wp-content/uploads/2022/10/slackware-scaled.jpg -[34]: http://www.slackware.com/ -[35]: https://itsfoss.com/wp-content/uploads/2022/10/alpine-linux-xfce-2022.png -[36]: https://www.alpinelinux.org/ -[37]: https://itsfoss.com/wp-content/uploads/2022/08/kaos-desktop.png -[38]: https://itsfoss.com/pacman-command/ -[39]: https://kaosx.us/ diff --git a/sources/tech/20221014 Can Kubernetes help solve automation challenges-.md b/sources/tech/20221014 Can Kubernetes help solve automation challenges-.md deleted file mode 100644 index 8d7b5904be..0000000000 --- a/sources/tech/20221014 Can Kubernetes help solve automation challenges-.md +++ /dev/null @@ -1,69 +0,0 @@ -[#]: subject: "Can Kubernetes help solve automation challenges?" -[#]: via: "https://opensource.com/article/22/10/kubernetes-solve-automation-challenges" -[#]: author: "Rom Adams https://opensource.com/users/romdalf" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Can Kubernetes help solve automation challenges? -====== -Automation at the organization level has been an elusive goal, but Kubernetes might be able to change all that. - -I started my automation journey when I adopted Gentoo Linux as my primary operating system in 2002. Twenty years later, automation is not yet a done deal. When I meet with customers and partners, they share automation wins within teams, but they also describe the challenges to achieving similar success at an organizational level. - -Most IT organizations have the ability to provision a virtual machine end to end, reducing what used to be a four-week lead time to just five minutes. That level of automation is itself a complex workflow, requiring networking (IP address management, DNS, proxy, networking zones, and so on), identity access management, [hypervisor][2], storage, backup, updating the operating system, applying the latest configuration files, monitoring, security and hardening, and compliance benchmarking. Wow! - -It's not easy to address the business need for high velocity, scaling, and on-demand automation. For instance, consider the classic webshop or an online government service to file tax returns. The workload has well-defined peaks that need to be absorbed. - -A common approach for handling such a load is having an oversized server farm, ready to be used by a specialized team of IT professionals, monitoring the seasonal influx of customers or citizens. Everybody wants a just-in-time deployment of an entire stack. They want infrastructure running workloads within the context of a hybrid cloud scenario, using the model of "build-consume-trash" to optimize costs while benefiting from infinite elasticity. - -In other words, everybody wants the utopian "cloud experience." - -### Can the cloud really deliver? - -All is not lost, thanks mainly to the way [Kubernetes][3] has been designed. The exponential adoption of Kubernetes fuels innovation, displacing standard legacy practices for managing platforms and applications. Kubernetes requires the use of Everything-as-Code (EaC) to define the desired state of all resources, from simple compute nodes to TLS certificates. Kubernetes compels the use of three major design constructs: - -* A standard interface to reduce integration friction between internal and external components -* An API-first and API-only approach to standardize the CRUD (Create, Read, Update, Delete) operations of all its components -* Use of [YAML][4] as a common language to define all desired states of these components in a simple and readable way - -These three key components are essentially the same requirements for choosing an automation platform, at least if you want to ease adoption by cross-functional teams. This also blurs the separation of duties between teams, helping to improve collaboration across silos, which is a good thing! - -As a matter of fact, customers and partners adopting Kubernetes are ramping up to a state of hyper-automation. Kubernetes organically drives teams to adopt multiple [DevOps foundations and practices][5]—like EaC, [version control with Git][6], peer reviews, [documentation as code][7]—and encourages cross-functional collaboration. These practices help mature a team's automation skills, and they help a team get a good start in GitOps and CI/CD pipelines dealing with both application lifecycle and infrastructure. - -### Making automation a reality - -You read that right! The entire stack for complex systems like a webshop or government reporting can be defined in clear, understandable, universal terms that can be executed on any on-prem or cloud provider. An autoscaler with custom metrics can be defined to trigger a just-in-time deployment of your desired stack to address the influx of customers or citizens during seasonal peaks. When metrics are back to normal, and cloud compute resources don't have a reason to exist anymore, you trash them and return to regular operations, with a set of core assets on-prem taking over the business until the next surge. - -### The chicken and the egg paradox - -Considering Kubernetes and cloud-native patterns, automation is a must. But it raises an important question: Can an organization adopt Kubernetes before addressing the automation strategy? - -It might seem that starting with Kubernetes could inspire better automation, but that's not a foregone conclusion. A tool is not an answer to the problem of skills, practices, and culture. However, a well-designed platform can be a catalyst for learning, change, and cross-functional collaboration within an IT organization. - -### Get started with Kubernetes - -Even if you feel you missed the automation train, don't be afraid to start with Kubernetes on an easy, uncomplicated stack. Embrace the simplicity of this fantastic orchestrator and iterate with more complex needs once you've [mastered the initial steps][8]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/22/10/kubernetes-solve-automation-challenges - -作者:[Rom Adams][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/romdalf -[b]: https://github.com/lkxed -[2]: https://www.redhat.com/en/topics/virtualization/what-is-a-hypervisor?intcmp=7013a000002qLH8AAM -[3]: https://www.redhat.com/en/topics/containers/what-is-kubernetes?intcmp=7013a000002qLH8AAM -[4]: https://opensource.com/article/21/9/yaml-cheat-sheet -[5]: https://opensource.com/resources/devops -[6]: https://opensource.com/life/16/7/stumbling-git -[7]: https://opensource.com/article/21/3/devops-documentation -[8]: https://opensource.com/article/17/11/getting-started-kubernetes diff --git a/sources/tech/20221014 Celebrating KDE-s 26th Birthday With Some Inspiring Facts From Its Glorious Past!.md b/sources/tech/20221014 Celebrating KDE-s 26th Birthday With Some Inspiring Facts From Its Glorious Past!.md deleted file mode 100644 index 552185aee7..0000000000 --- a/sources/tech/20221014 Celebrating KDE-s 26th Birthday With Some Inspiring Facts From Its Glorious Past!.md +++ /dev/null @@ -1,193 +0,0 @@ -[#]: subject: "Celebrating KDE’s 26th Birthday With Some Inspiring Facts From Its Glorious Past!" -[#]: via: "https://itsfoss.com/kde-facts-trivia/" -[#]: author: "Avimanyu Bandyopadhyay https://www.gizmoquest.com" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Celebrating KDE’s 26th Birthday With Some Inspiring Facts From Its Glorious Past! -====== - -Wishing a Very Happy Birthday to **KDE**! - -Let us celebrate this moment by looking back on its glorious history with some inspiring facts on this legendary and much-loved Desktop Environment! - -![kde birthday][1] - -### KDE’s Origin - -**26 years ago**, [Matthias Ettrich][2] (a German Computer Scientist currently working at [HERE][3]) founded KDE. - -![matthias 2950607241][4] - -When Matthias was a student at the [Eberhard Karls University of Tübingen][5], he was not satisfied as a [Common Desktop Environment (CDE)][6] user. - -CDE is a desktop environment for Unix. - -However, he wanted an interface that was more comfortable, simpler, and easy to use, with a better look and feel. - -So, in 1996, Matthias Ettrich announced the **Kool Desktop Environment (KDE)**, a GUI (graphical user interface) for Unix systems, built with Qt and C ++. - -Note that the full form of KDE was an innocent pun intended to CDE at the time. You do not usually say it as “Kool Desktop Environment”, just KDE as of now. You can read the [original announcement post][7] to get a dose of nostalgia. - -**Trivia**: The official mascot of KDE is Konqi who has a girlfriend named Katie. Previously there used to be a wizard named [Kandalf][8] but was later replaced by Konqi because many people loved and preferred the mascot to be this charming and friendly dragon! - -![Konqi is KDE's mascot. Katie is his girlfriend and mascot of KDE women's project.][9] - -[Konqi][10] - -[Katie][11] - -And, here’s how it looked like with KDE mascot: - -![Screenshot of earlier version of KDE desktop][12] - -### 13 Interesting and Inspiring Facts on KDE - -We’ve looked back into some interesting yet inspiring events that took place over the last 26 years of the KDE project: - -#### 1. Early Development Events - -15 developers met in Arnsberg, Germany, in 1997, to work on the KDE project and discuss its future. This event came to be known as [KDE One][13] followed by [KDE Two][14] and [KDE Three][15] and so on in the later years. They even had [one][16] for a beta version. - -#### 2. The KDE Free Qt Foundation Agreement - -The foundation agreement for the [KDE Free Qt Foundation][17] was signed by [KDE e.V.][18] and [Trolltech][19], then owner of the Qt Foundation who [ensured the permanent availability][20] of Qt as free software. - -#### 3. First Stable Version - -![kde 1][21] - -The [first stable version][22] of KDE was released in **1998**, in addition to highlighting an application development framework, the [KOM/OpenParts][23], and an office suite preview. You can check out the [KDE 1.x Screenshots][24]. - -#### 4. The KDE Women Initiative - -The community women’s group, [KDE Women][25], was created and announced in March 2001 with the primary goal to increase the number of women in free software communities, particularly in KDE. - -#### 5. 1 Million Commits - -The community [reached 1 million commits][26] within a span of only 19 months, from 500,000 in January 2006 and 750,000 in December 2007, with the launch of KDE 4 at the same time. - -#### 6. Release Candidate of Development Platform Announced - -A [release candidate][27] of KDE’s development platform consisting of basic libraries and tools to develop KDE applications was announced on October 2007. - -#### 7. First KDE & Qt event in India - -The [first conference][28] of the KDE and Qt community in India happened in Bengaluru in March 2011 that became an annual event henceforth. - -#### 8. GCompris and KDE - -In **December 2014**, the educational software suite [GCompris joined][29] the [project incubator of KDE community][30] (We have [previously][31] discussed GCompris, which is bundled with Escuelas Linux, a comprehensive educational distro for teachers and students). - -#### 9. KDE Slimbooks - -In **2016**, the KDE community partnered with a Spanish laptop retailer and [announced the launch of the KDE Slimbook][32], an ultrabook with KDE Plasma and KDE Applications pre-installed. Slimbook offers a pre-installed version of [KDE Neon][33] and [can be purchased from their website][34]. - -#### 10. Transition to GitLab - -In **2019**, KDE [migrated][35] from Phabricator to GitLab to enhance the development process and let new contributors easy access to the workflow. However, KDE still uses bugzilla for tracking bugs. - -#### 11. Adopts Decentralized Matrix Protocol - -KDE added Matrix bridge to the IRC channels and powered up its native chat clients using the open-source decentralized Matrix protocol in **2019**. - -#### 12. KDE PinePhone - -KDE developers teamed up with [PINE64][36] in **2020** to introduce a community edition PinePhone powered by KDE. - -#### 13. Valve Picks KDE for Steam Deck - -Steam Deck is undoubtedly a super trending Linux gaming console right now. And, Valve chose KDE as its desktop environment to make it work in **2021**. - -### Today, KDE is Powered by Three Great Projects - -#### KDE Plasma - -Previously called Plasma Workspaces, KDE Plasma facilitates a unified workspace environment for running and managing applications on various devices like desktops, netbooks, tablets or even [smartphones][37]. - -Currently, [KDE Plasma 5.26][38] is the most recent version and was released some days ago. The KDE Plasma 5 project is the fifth generation of the desktop environment and is the successor to KDE Plasma 4. - -#### KDE Applications - -KDE Applications are a bundled set of applications and libraries designed by the KDE community. Most of these applications are cross-platform, though primarily made for Linux. - -A very [nice][39] project in this category is a music player called Elisa focused on an optimised integration with Plasma. - -#### KDE Development Platform - -The KDE Development Platform is what significantly empowers the above two initiatives, and is a collection of libraries and software frameworks released by KDE to promote better collaboration among the community to develop KDE software. - -**Personal Note**: It was an honour covering this article on KDE’s Birthday and I would like to take this opportunity to brief some of my personal favourite KDE based apps and distros that I have extensively used in the past and continue to. - -Check out the entire [timeline][40] in detail here for a more comprehensive outline or you can take a look at this 19-year visual changes in this interesting video: - -![A Video from YouTube][41] - -### Best KDE-Based Distributions - -If you have heard all the good things about KDE, you should try out the distributions powered by KDE. - -We have a [list of Linux distributions based on KDE][42], if you are curious. - -*Hope you liked our favourite moments in KDE history on their 26th Anniversary! Please do write about any thoughts you might have about any of your memorable experiences with KDE in the comments below.* - -This article was originally published in 2018, and has been edited to reflect latest information. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/kde-facts-trivia/ - -作者:[Avimanyu Bandyopadhyay][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.gizmoquest.com -[b]: https://github.com/lkxed -[1]: https://itsfoss.com/wp-content/uploads/2022/10/kde-birthday.png -[2]: https://en.wikipedia.org/wiki/Matthias_Ettrich -[3]: https://here.com/ -[4]: https://itsfoss.com/wp-content/uploads/2022/10/matthias-2950607241.jpg -[5]: https://www.uni-tuebingen.de/en -[6]: https://en.wikipedia.org/wiki/Common_Desktop_Environment -[7]: https://kde.org/announcements/announcement/ -[8]: https://en.wikipedia.org/wiki/Konqi#Kandalf -[9]: https://itsfoss.com/wp-content/uploads/2018/10/Konqi-and-Katie.jpg -[10]: https://en.wikipedia.org/wiki/Konqi -[11]: https://community.kde.org/Katie -[12]: https://itsfoss.com/wp-content/uploads/2018/10/Konqi-from-the-early-days-who-replaced-Kandalf-right.jpg -[13]: https://community.kde.org/KDE_Project_History/KDE_One_(Developer_Meeting) -[14]: https://community.kde.org/KDE_Project_History/KDE_Two_(Developer_Meeting) -[15]: https://community.kde.org/KDE_Project_History/KDE_Three_(Developer_Meeting) -[16]: https://community.kde.org/KDE_Project_History/KDE_Three_Beta_(Developer_Meeting) -[17]: https://www.kde.org/community/whatiskde/kdefreeqtfoundation.php -[18]: https://www.kde.org/announcements/fsfe-associate-member.php -[19]: https://dot.kde.org/2007/02/28/trolltech-becomes-first-corporate-patron-kde -[20]: https://dot.kde.org/2016/01/13/qt-guaranteed-stay-free-and-open-%E2%80%93-legal-update -[21]: https://itsfoss.com/wp-content/uploads/2022/10/kde-1.jpg -[22]: https://www.kde.org/announcements/announce-1.0.php -[23]: https://www.kde.org/kdeslides/Usenix1998/sld016.htm -[24]: https://czechia.kde.org/screenshots/kde1shots.php -[25]: https://community.kde.org/KDE_Women -[26]: https://dot.kde.org/2009/07/20/kde-reaches-1000000-commits-its-subversion-repository -[27]: https://www.kde.org/announcements/announce-4.0-platform-rc1.php -[28]: https://dot.kde.org/2010/12/28/confkdein-first-kde-conference-india -[29]: https://dot.kde.org/2014/12/11/gcompris-joins-kde-incubator-and-launches-fundraiser -[30]: https://community.kde.org/Incubator -[31]: https://itsfoss.com/escuelas-linux/ -[32]: https://dot.kde.org/2017/01/26/kde-and-slimbook-release-laptop-kde-fans -[33]: https://en.wikipedia.org/wiki/KDE_neon -[34]: https://slimbook.es/en/store/slimbook-kde -[35]: https://pointieststick.com/2020/05/23/this-week-in-kde-we-have-migrated-to-gitlab/ -[36]: https://www.pine64.org -[37]: https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp -[38]: https://news.itsfoss.com/kde-plasma-5-26-release/ -[39]: https://mgallienkde.wordpress.com/2018/10/09/0-3-release-of-elisa-music-player/ -[40]: https://timeline.kde.org/ -[41]: https://youtu.be/1UG4lQOMBC4 -[42]: https://itsfoss.com/best-kde-distributions/ diff --git a/sources/tech/20221014 Install Gedit on Ubuntu 22.10 and Make it Default Text Editor.md b/sources/tech/20221014 Install Gedit on Ubuntu 22.10 and Make it Default Text Editor.md deleted file mode 100644 index 23d4fcec3b..0000000000 --- a/sources/tech/20221014 Install Gedit on Ubuntu 22.10 and Make it Default Text Editor.md +++ /dev/null @@ -1,111 +0,0 @@ -[#]: subject: "Install Gedit on Ubuntu 22.10 and Make it Default Text Editor" -[#]: via: "https://itsfoss.com/install-gedit-ubuntu/" -[#]: author: "Abhishek Prakash https://itsfoss.com/" -[#]: collector: "lkxed" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Install Gedit on Ubuntu 22.10 and Make it Default Text Editor -====== - -[GNOME has a brand new text editor][1] to replace the good old Gedit editor. - -While it was already available with GNOME 42, Ubuntu 22.04 relied on Gedit. - -This is changing in Ubuntu 22.10. GNOME Text Editor is the default here and Gedit is not even installed. - -![Searching for text editor only brings GNOME Text Editor][2] - -While the new editor is good enough, not everyone would like it. This is especially if you use Gedit extensively with additional plugins. - -If you are among those people, let me show you how to install Gedit on Ubuntu. I’ll also share how you can make it the default text editor. - -### Install Gedit on Ubuntu - -This is actually a no-brainer. While Gedit is not installed by default, it is still available in Ubuntu repositories. - -So, all you have to do is to use the apt command to install it: - -``` -sudo apt install gedit -``` - -Gedit is also available in the software center but it is the snap package. You could install that if you want. - -![Gedit is also available in Ubuntu’s Snap Store][3] - -#### Install Gedit Plugins (optional) - -By default, Gedit gives you the option to access a few plugins. You can enable or disable the plugins from the menu->preference->plugins. - -![Accessing plugins in Gedit][4] - -You should see the available plugins here. The installed or in-use plugins are checked. - -![See the available and installed plugins in Gedit][5] - -However, you can take the plugin selection to the next level by installing the gedit-plugins meta package. - -``` -sudo apt install gedit-plugins -``` - -This will give you access to additional plugins like bookmarks, bracket completion, Python console and more. - -![Additional Gedit plugins][6] - -**Tip**: If you notice that Gedit looks a bit out of place for the lack of around bottom corners, you can install a GNOME extension called [Round Bottom Corner][7]. This will force round bottom corners for all applications including Gedit. - -### Make Gedit the default text editor - -Alright! So you have installed Gedit but the text files still open in GNOME Text Editor with double click action. To open a file with Gedit, you need to right click and then select the ‘open with’ option. - -If you want Gedit to open text files all the time, you can set it as default. - -Right click on a text file and go with “open with” option. Select Gedit here and enable the “Always use for this file type” option from the bottom. - -![Set Gedit as the default text editor][8] - -### Remove Gedit - -Don’t feel Gedit is up to the mark? That’s rare, but I am not judging you. To remove Gedit from Ubuntu, use the following command: - -``` -sudo apt remove gedit -``` - -You may also try uninstalling it from the software center. - -### Conclusion - -GNOME Text Editor is the next-gen, created-from-scratch editor that blends well with the new GNOME. - -It’s good enough for simple text editing. However, Gedit has a plugin ecosystem that gives it more feature. - -For those who use it extensively for coding and other stuff, installing Gedit is still an option in Ubuntu. - -What about you? Will you stick with the default new text editor or would you go back to the good old Gedit? - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/install-gedit-ubuntu/ - -作者:[Abhishek Prakash][a] -选题:[lkxed][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/ -[b]: https://github.com/lkxed -[1]: https://itsfoss.com/gnome-text-editor/ -[2]: https://itsfoss.com/wp-content/uploads/2022/10/text-editor-ubuntu.png -[3]: https://itsfoss.com/wp-content/uploads/2022/10/install-gedit-from-ubuntu-software-center.png -[4]: https://itsfoss.com/wp-content/uploads/2022/10/access-plugins-in-gedit.png -[5]: https://itsfoss.com/wp-content/uploads/2022/10/plugins-in-gedit.png -[6]: https://itsfoss.com/wp-content/uploads/2022/10/additional-plugins-gedit.png -[7]: https://extensions.gnome.org/extension/5237/rounded-window-corners/ -[8]: https://itsfoss.com/wp-content/uploads/2022/10/set-gedit-default.png diff --git a/sources/tech/20221015.1 ⭐️⭐️ How to Get Started with Shell Scripting in Linux.md b/sources/tech/20221015.1 ⭐️⭐️ How to Get Started with Shell Scripting in Linux.md new file mode 100644 index 0000000000..1679b9ccc0 --- /dev/null +++ b/sources/tech/20221015.1 ⭐️⭐️ How to Get Started with Shell Scripting in Linux.md @@ -0,0 +1,140 @@ +[#]: subject: "How to Get Started with Shell Scripting in Linux" +[#]: via: "https://www.linuxtechi.com/get-started-shell-scripting-linux/" +[#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Get Started with Shell Scripting in Linux +====== + +Hello readers, In this post, we will cover how to get started with shell scripting in Linux or UNIX systems. + +##### What is a Shell? + +A shell is an interpreter in UNIX/Linux like operating systems. It takes commands typed by the user and calls the operating system to run those commands. In simple terms a shell acts as form of wrapper around the OS. For example , you may use the shell to enter a command to list the files in a directory , such as [ls command][1] , or a command to copy ,such as cp. + +``` +$ ls Desktop Documents Downloads Music Pictures playbook.yaml Public snap Templates test5 Videos $ +``` + +In this example , when you simply type ls and press enter . The $ is the shell prompt , which tells you the the shell awaits your commands.The remaining lines are the names of the files in the current directory. + +##### What is Shell Prompt? + +The prompt, $, which is called command prompt, is issued by the shell. While the prompt is displayed, you can type a command. The shell reads your input after you press Enter. It determines the command you want executed by looking at the first word of your input. A word is an unbroken set of characters. Spaces and tabs separate words. + +### What are different types of Shells + +since there is no monopoly of shells , you are free to run any shell as you wish. That’s all well and good , but choosing a shell without knowing the alternative is not very helpful. Below are lists of shells available in UNIX/Linux. + +##### The Bourne Shell + +The Original Unix Shell is known as sh , short for shell or the Bourne shell , named for steven Bourne , the creator of sh. This is available on almost all the UNIX like operating system. The Basic bourne shell supports only the most limited command line editing, You can type the Characters,remove characters one at a time with the Backspace key and Press enter to execute the command. If command line gets messed up , you can press Ctrl-C to cancel the whole command. + +##### The C Shell + +It is desgined by Bill Joy at the university of california at Berkeley , the C shell was so named because much of its syntax parallels that of C programming language. This shell adds some neat features to the Bourne shell,especially the ability to recall previous commands to help create future commands.Because it is very likely you will need to execute more than one command to perform a particular task,this C shell capability is very useful. + +if(typeof ez_ad_units != 'undefined'){ez_ad_units.push([[300,250],'linuxtechi_com-medrectangle-4','ezslot_7',340,'0','0'])};__ez_fad_position('div-gpt-ad-linuxtechi_com-medrectangle-4-0'); + +##### The Korn Shell + +It is created by David Korn at AT&T Bell laboratories , the korn shell or ksh offers the same kind of enhancements offers by the C Shell , with one important difference: The korn shell is backward compatible with the older Bourne shell Synatx. In UNIX like AIX & HP-UX korn shell is the default shell. + +##### Bash (The Bourne Again Shell) + +Bash offers command-line editing like the korn shell,file name completion like the C shell and a lot of other advance features. Many Users view bash as having the best of the Korn and C shells in one shell. In Linux and Mac OS X system , bash is the default shell. + +##### tcsh ( The T C Shell) + +Linux systems popularized the T C shell ot Tcsh. Tcsh extends the traditional csh to add command line editing,file name completion and more. For example , tcsh will complete the file and directory names when you press Tab key(the same key used in bash). The older C shell did not support this feature. + +### What is a Shell Script? + +A Shell Script is a text file that contains one or more commands. In a shell script, the shell assumes each line of text file holds a separate command. These Commands appear for most parts as if you have typed them in at a shell windows. + +if(typeof ez_ad_units != 'undefined'){ez_ad_units.push([[250,250],'linuxtechi_com-box-4','ezslot_8',260,'0','0'])};__ez_fad_position('div-gpt-ad-linuxtechi_com-box-4-0'); + +##### Why to use Shell Script ? + +Shell scripts are used to automate administrative tasks,encapsulate complex configuration details and get at the full power of the operating system.The ability to combine commands allows you to create new commands ,thereby adding value to your operating system.Furthermore ,combining a shell with graphical desktop environment allows you to get the best of both worlds. + +In Linux system admin profile, day to day repeated tasks can be automated using shell script which saves time and allow admins to work on quality work. + +##### Creating first shell script + +Create a text file in your current  working directory with a name myscript.sh , all the shell scripts have an “.sh” extension. First line of a shell script is either #!/bin/sh or #!/bin/bash , it is known as shebang because # symbol is called hash and ! Symbol is called a bang. Where as /bin/sh & /bin/bash shows that commands to be executed either sh or bash shell. + +Below are the content of  myscript.sh + +``` +#!/bin/bash # Written by LinuxTechi echo echo "Current Working Directory: $(pwd)" echo echo "Today' Date & Time: $(date)" DISK=$(df -Th) echo echo "Disk Space on System:" echo "$DISK" +``` + +Above shell script will display the current working , today’s date & time along with file system disk space. We have used [echo command][2] and other [linux commands][3] to build this script. + +if(typeof ez_ad_units != 'undefined'){ez_ad_units.push([[300,250],'linuxtechi_com-medrectangle-3','ezslot_6',320,'0','0'])};__ez_fad_position('div-gpt-ad-linuxtechi_com-medrectangle-3-0'); + +Assign the executable permissions using below [chmod command][4] + +``` +$ chmod a+x myscript.sh +``` + +Now execute the script. + +``` +$ sh myscript.sh or $ ./myscript.sh +``` + +Note: To execute any shell script available in current directory, use  ./ as shown below, + +output, + +##### Taking Input from the user in shell script + +Read command is used to take inputs from user via keyboard and assign the value to a variable. echo command is used to display the contents. + +if(typeof ez_ad_units != 'undefined'){ez_ad_units.push([[250,250],'linuxtechi_com-banner-1','ezslot_9',360,'0','0'])};__ez_fad_position('div-gpt-ad-linuxtechi_com-banner-1-0'); + +Let’s modify above script so that it starts taking input, + +``` +#!/bin/bash # Written by LinuxTechi read -p "Your Name: " NAME echo echo "Today' Date & Time: $(date)" echo read -p "Enter the file system:" DISK echo "$(df -Th $DISK)" +``` + +Now, try to execute the script this time it should prompt to enter details. + +``` +$ ./myscript.sh Your Name: Pradeep Kumar Today' Date & Time: Sat 15 Oct 05:32:38 BST 2022 Enter the file system:/mnt/data Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/volgrp01-lv01 ext4 14G 24K 13G 1% /mnt/data $ +``` + +Perfect, above output confirms that scripting is prompting for input and processing data. + +if(typeof ez_ad_units != 'undefined'){ez_ad_units.push([[250,250],'linuxtechi_com-large-leaderboard-2','ezslot_11',550,'0','0'])};__ez_fad_position('div-gpt-ad-linuxtechi_com-large-leaderboard-2-0'); + +That’s conclude the post. I hope you have found it informative. Kindly do post your queries and feedback in below comments section. + +Read Also: [How to Debug a Bash Shell Script in Linux][5] + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/get-started-shell-scripting-linux/ + +作者:[Pradeep Kumar][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.linuxtechi.com/author/pradeep/ +[b]: https://github.com/lkxed +[1]: https://www.linuxtechi.com/linux-ls-command-examples-beginners/ +[2]: https://www.linuxtechi.com/echo-command-examples-in-linux/ +[3]: https://www.linuxtechi.com/20-linux-commands-interview-questions-answers/ +[4]: https://www.linuxtechi.com/chmod-command-examples-in-linux/ +[5]: https://www.linuxtechi.com/debugging-shell-scripts-in-linux/ diff --git a/sources/tech/20221017.4 ⭐️⭐️⭐️ Why you should consider Rexx for scripting.md b/sources/tech/20221017.4 ⭐️⭐️⭐️ Why you should consider Rexx for scripting.md new file mode 100644 index 0000000000..299cb5bbe5 --- /dev/null +++ b/sources/tech/20221017.4 ⭐️⭐️⭐️ Why you should consider Rexx for scripting.md @@ -0,0 +1,122 @@ +[#]: subject: "Why you should consider Rexx for scripting" +[#]: via: "https://opensource.com/article/22/10/rexx-scripting-language" +[#]: author: "Howard Fosdick https://opensource.com/users/howtech" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Why you should consider Rexx for scripting +====== + +How do you design a programming language to be powerful yet still easy to use? Rexx offers one example. This article describes how Rexx reconciles these two seemingly contradictory goals. + +### History of Rexx programming language + +Several decades ago, computers were shifting from batch to interactive processing. Developers required a scripting or "glue" language to tie systems together. The tool needed to do everything from supporting application development to issuing operating system commands to functioning as a macro language. + +Mike Cowlishaw, IBM Fellow, created a solution in a language he named Rexx. It is widely considered the first general-purpose scripting language. + +Rexx was so easy to use and powerful that it quickly permeated all of IBM's software. Today, Rexx is the bundled scripting language on all of IBM's commercial operating systems (z/OS, z/VM, z/VSE, and IBM i). It's no surprise that in the 1990s, IBM bundled Rexx with PC-DOS and then OS/2. Rexx popped up in Windows in the XP Resource Kit (before Microsoft decided to lock in customers with its proprietary scripting languages, VBScript and PowerShell). Rexx also emerged as the scripting language for the popular Amiga PC. + +### Open source Rexx + +With Rexx spreading across platforms, standardization was needed. The American National Standards Institute (ANSI) stepped forward in 1996. + +That opened the floodgates. Open source Rexx interpreters started appearing. Today, more than a half dozen interpreters run on every imaginable platform and operating system, along with many open source tools. + +Two Rexx variants deserve mention. _Open Object Rexx_ is a compatible superset of procedural or "classic" Rexx. _ooRexx_ is message-based and provides all the classes, objects, and methods one could hope for. For example, it supports multiple inheritance and mixin classes. + +Paralleling the rise in Java's popularity, Mike Cowlishaw invented _NetRexx_. NetRexx is a Rexx variant that fully integrates with everything Java (including its object model) and runs on the Java virtual machine. + +ooRexx went open source in 2004; NetRexx in 2011. Today the [Rexx Language Association][1] enhances and supports both products. The RexxLA also supports _Regina_, the most popular classic Rexx interpreter, and _BSF4ooRexx_, a tool that fully integrates ooRexx with Java. Everything Rexx is open source. + +### Layered design + +So, back to the initial conundrum. How does a programming language combine power with ease of use? + +One part of the solution is a _layered architecture_. Operators and a minimal set of instructions form the core of the classic Rexx language: + +![Rexx layered design][2] + +Image by: + +(Howard Fosdick, CC BY-SA 4.0) + +Surrounding the core are the language's 70-odd built-in functions: + +- Arithmetic +- Comparison +- Conversion +- Formatting +- String manipulation +- Miscellaneous + +Additional power is added in the form of _external function libraries_. You can invoke external functions from within Rexx programs as if they were built in. Simply make them accessible by proper reference at the top of your script. + +Function libraries are available for everything: GUIs, databases, web services, OS services, system commands, graphics, access methods, advanced math, display control, and more. The result is a highly-capable open source ecosystem. + +Finally, recall that Open Object Rexx is a superset of classic Rexx. So you could use procedural Rexx and then transition your skills and code to object programming by moving to ooRexx. In a sense, ooRexx is yet another Rexx extension, this time into object-oriented programming. + +### Rexx is human-oriented language + +Rexx glues all its instructions, functions, and external libraries together in a consistent, dead-simple syntax. It doesn't rely on special characters, arcane syntax, or reserved words. It's case-insensitive and free-form. + +This approach shifts the burden of programming from programmer to machine to the greatest degree possible. The result is a comparatively easy language to learn, code, remember, and maintain. Rexx is intended as a human-oriented language. + +Rexx implements the _principle of least astonishment_, the idea that systems should work in ways that people assume or expect. For example, Rexx's default decimal arithmetic—with precision you control—means you aren't surprised by rounding errors. + +Another example: All variables contain strings. If the strings represent valid numbers, one can perform arithmetic operations with them. This simple concept of dynamic typing makes all data visible and simplifies tracing and debugging. + +Rexx capitalizes on the advantages of interpreters to simplify program development. Tracing facilities allow developers to direct and witness program execution in various ways. For example, one can single-step through code, inspect variable values, change them during execution, and more. + +Rexx also raises common error conditions that the programmer can easily trap. This feature makes for more standardized, reliable code. + +### Arrays + +Rexx's approach to arrays (or tables) is a good example of how it combines simplicity with power. + +Like all Rexx variables, you don't have to declare them in advance. They automatically expand to the size of available memory. This feature relieves programmers of the burden of memory management. + +To form an array, a so-called _compound variable_ stitches together a _stem variable_ with one or more _subscripts_, as in these examples: + +``` +my_array.1 + my_table.i.j + my_list.index_value + my_list.string_value + my_tree.branch_one + my_tree.branch_one.branch_two +``` + +Subscripts can represent numeric values, as you may be accustomed to in standard table processing. + +Alternatively, they can contain strings. String subscripts allow you to build _associative arrays_ using the same simple syntax as common tables. Some refer to associative arrays as _key-value pairs_ or _content addressable memory_. Allowing array contents to be accessed by arbitrary strings rather than simply numeric values opens up an entirely new world of algorithmic solutions. + +With this flexible but consistent syntax, you can build almost any data structure: Lists, two- or three- or n-dimensional tables, key-value pairs, balanced trees, unbalanced trees, dense tables, sparse tables, records, rows, and more. + +The beauty is in simplicity. It's all based on the notion of compound variables. + +### Wrap up + +In the future, I'll walk through some Rexx program examples. One real-world example will show how a short script using associative arrays reduced the runtime of a legacy program from several hours down to less than a minute. + +You can join the Rexx Language Association for free. For free Rexx downloads, tools, tutorials, and more, visit [RexxInfo.org][3]. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/rexx-scripting-language + +作者:[Howard Fosdick][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/howtech +[b]: https://github.com/lkxed +[1]: http://www.RexxLA.org +[2]: https://opensource.com/sites/default/files/2022-10/rexx_layered_design.jpg +[3]: http://www.RexxInfo.org diff --git a/sources/tech/20221018.3 ⭐️ Setup Docker And Docker Compose With DockSTARTer.md b/sources/tech/20221018.3 ⭐️ Setup Docker And Docker Compose With DockSTARTer.md new file mode 100644 index 0000000000..0d9d1abdc5 --- /dev/null +++ b/sources/tech/20221018.3 ⭐️ Setup Docker And Docker Compose With DockSTARTer.md @@ -0,0 +1,216 @@ +[#]: subject: "Setup Docker And Docker Compose With DockSTARTer" +[#]: via: "https://ostechnix.com/setup-docker-and-docker-compose-with-dockstarter/" +[#]: author: "sk https://ostechnix.com/author/sk/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Setup Docker And Docker Compose With DockSTARTer +====== + +This guide explains **what is DockSTARTer**, how to **install DockSTARTer in Linux** and how to **setup Docker and Docker compose using DockSTARTer** to run containerized applications in Linux. + +### What is DockSTARTer? + +**DockSTARTer** is a TUI-based utility to easily install Docker and Docker compose in Linux and Unix systems. The main goal of DockSTARTer is to make it quick and easy to get up and running with Docker. + +DockSTARTer has both TUI and CLI interfaces. So you can use either of these interfaces to quickly deploy multiple containerized apps in a single docker environment. + +Please note that DockSTARTer is not a ready-made set of apps that run out of the box. You still need to choose what to run and how to run. + +It also doesn't configure apps and storage for you. You may need to configure the settings of the apps and the storage manually by yourself. + +As of writing this, we can run more than 100 docker apps using DockSTARter. Some of the popular apps are Adguard, Bitwarden, CloudFlare DDNS, Duplicacy, Emby, File Browser, Glances, Heimdall, InfluxDB, Jellyfin, Kiwix-serve, Lidarr, Minecraft Server, Nextcloud, openLDAP, Speedtest, Pihole, qBittorent, Rsnapshot, Syncthing, Time Machine, Uptimne Kuma, Vsftpd, Wireguard, youtubedl and a lot more. + +DockSTARTer is free and opensource shell script. The source code of DockSTARTer is hosted in GitHub. + +### Install DockSTARTer in Linux + +DockSTARter can be installed in popular Linux operating systems. + +To install DockSTARTer in Arch Linux and its variants such as EndeavourOS, and Manjaro Linux, run the following commands: + +``` +$ sudo pacman -S curl docker git +``` + +``` +$ bash -c "$(curl -fsSL https://get.dockstarter.com)" +``` + +``` +$ sudo reboot +``` + +To install DockSTARTer in Debian, Ubuntu, Linux Mint, Pop OS, run: + +``` +$ sudo apt install curl git +``` + +``` +$ bash -c "$(curl -fsSL https://get.dockstarter.com)" +``` + +``` +$ sudo reboot +``` + +To install DockSTARTer in Fedora, RHEL, CentOS, AlmaLinux and Rocky Linux, run: + +``` +$ sudo dnf install curl git +``` + +``` +$ bash -c "$(curl -fsSL https://get.dockstarter.com)" +``` + +``` +$ sudo reboot +``` + +### Use DockSTARTer to setup Docker and Docker Compose + +DockSTARTer allows you to install and configure various apps in Docker. + +To run DockSTARTer for the first time, enter the following command: + +``` +$ ds +``` + +Choose "Configuration" from the main menu and press ENTER: + +And then select "Full setup". + +Choose which apps you would like to install. By default, Watchtower app is selected. Use UP and DOWN arrow keys to navigate to app list and press SPACEBAR to select or deselect apps. + +Now, DockSTARTer will display the default settings of the selected apps. If you would like to keep these settings for the apps, choose "Yes" and hit ENTER. Or choose "No" and change the settings as you want. + +If you like to keep the default settings for VPN, choose "Yes" or choose "No" to change the settings as you please. + +Now you will see the global settings for DockSTARTer. Review the global settings such as docker config directory, docker storage directory, docker hostname and time zone etc. If you're OK with the default settings, simply choose "Yes" and hit ENTER. If you want to change these settings, select "No". I want to change the storage directory, hostname and time zone, so I choose "No". + +If you chose "No" in the previous wizard, you will be prompted to set docker config directory. There will be 2 choices given. You can either choose to keep the currently selected directory or enter a new one by selecting "Enter New" option. I am going to keep the currently selected directory. + +Choose "yes" to set appropriate permissions on the docker configuration directory. + +In this step, you need to set a directory for Docker storage. By default, DockSTARTer will create a directory called "storage" in your $HOME directory. If you want to keep the default storage directory, choose "Keep Current". Or choose "Enter New". + +Enter the path to your Docker storage directory and hit ENTER. If the directory doesn't exist, DockSTARTer will attempt to create it. + +Set the hostname for your Docker system. DockSTARTer recommends system detected values. Here, I am going to choose "Use System" option's setting for my Docker hostname. + +Set the user's group ID (PGID). If you're unsure, simply go with the **"Use System"** option. + +Set your user account ID (PUID). If you're unsure, simply go with the **"Use System"** option. + +Set your system timezone. The system detected values, so just choose "Use System" option and hit ENTER. + +Next, you will prompted if you would you like to run compose. Choose "Yes" to do so. + +This will pull the Docker images that you choose to install in one the previous steps. + +Finally, you will an output something like below after the Docker compose installed all selected apps. + +``` +[...] 2022-10-18 14:24:30 [WARN ] /home/ostechnix/.docker/compose/.env not found. Copying example template. 2022-10-18 14:24:30 [WARN ] Please verify that ~ is not used in /home/ostechnix/.docker/compose/.env file. 2022-10-18 14:24:30 [NOTICE] Preparing app menu. Please be patient, this can take a while. 2022-10-18 14:36:51 [NOTICE] /home/ostechnix/.docker/compose/.env does not contain any disabled apps. 2022-10-18 14:36:51 [NOTICE] Creating environment variables for enabled apps. Please be patient, this can take a while. 2022-10-18 15:55:29 [NOTICE] Creating environment variables for enabled apps. Please be patient, this can take a while. 2022-10-18 15:55:29 [NOTICE] Adding compose configurations for enabled apps. Please be patient, this can take a while. [+] Running 4/4 ⠿ watchtower Pulled 6.1s ⠿ 1045b2f97fda Pull complete 1.0s ⠿ 35a104a262d3 Pull complete 1.2s ⠿ 1a0671483169 Pull complete 3.1s [+] Running 2/2 ⠿ Network compose_default Created 0.0s ⠿ Container watchtower Started +``` + +That's it. You can view the list of running Docker containers using command: + +``` +$ docker ps +``` + +**Sample output:** + +``` +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d3c34dc918f ghcr.io/containrrr/watchtower "/watchtower" 5 minutes ago Up 5 minutes 8080/tcp watchtower +``` + +### Install new Apps + +To install the other apps, just restart DockSTARTer again using the following command: + +``` +$ ds +``` + +Select "Configuration" and then "Select Apps". + +You will see the list of available apps in the next screen. Just select the app you want to run and follow the on-screen instructions. + +### Remove Apps + +Removing apps is same as adding new apps. + +First, make sure the container app is stopped. + +``` +$ sudo docker stop +``` + +Start DockeSTARTer, go to **Configuration -> Select Apps** and **uncheck** the apps that you want to remove and choose OK to remove the apps. + +### Update DockSTARTer + +To update DockSTARTer, simply start it using **"`ds`"** command from the Terminal and then choose "Update DockSTARTer" option. + +You can also do it from the commandline by running: + +``` +$ sudo ds -u +``` + +### Prune Docker system + +To remove all unused containers, networks, volumes, images and build cache, start DockSTARTer and then choose **"Prune Docker System"** option. + +You can prune your Docker system from commandline by running the following command as well. + +``` +$ sudo ds -p +``` + +**Sample output:** + +``` +Deleted Containers: 9d3c34dc918fafa62d0e35283be4cbee46280a30dcd59b1aaa8b5fff1e4a085d Deleted Networks: compose_default Deleted Images: untagged: ghcr.io/containrrr/watchtower:latest untagged: ghcr.io/containrrr/watchtower@sha256:bbf9794a691b59ed2ed3089fec53844f14ada249ee5e372ff0e595b73f4e9ab3 deleted: sha256:333de6ea525af9137e1f14a5c1bfaa2e730adca97ab97f74d738dfa99967f14f deleted: sha256:f493af3d0a518d307b430e267571c926557c85222217a8707c52d1cf30e3577e deleted: sha256:62651dc7e144aa8c238c2c2997fc499cd813468fbdc491b478332476f99af159 deleted: sha256:83fe5af458237288fe7143a57f8485b78691032c8c8c30647f8a12b093d29343 Total reclaimed space: 16.92MB +``` + +### Change variables + +You can adjust variables for running Docker containers at any time. + +Start DockSTARTer by running **"`ds`"** command and choose "Configuration", and then choose the following settings: + +- "Set App Variables" option for adjusting variables for all enabled apps, +- "Set VPN Variables" option for adjusting VPN specific variables, +- "Set Global Variables" option for adjusting global variables. + +### Conclusion + +DockSTARTer has made the process of running Docker apps much easier! DockSTARTer also has CLI interface, but you can quickly deploy Docker containers without memorizing any commands via the its Text-based interface. + +**Resource:** + +- **[DockSTARTer Website][1]** + +-------------------------------------------------------------------------------- + +via: https://ostechnix.com/setup-docker-and-docker-compose-with-dockstarter/ + +作者:[sk][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://ostechnix.com/author/sk/ +[b]: https://github.com/lkxed +[1]: https://dockstarter.com/ diff --git a/sources/tech/20221019.3 ⭐️⭐️ How to Remove Snap Packages in Ubuntu Linux.md b/sources/tech/20221019.3 ⭐️⭐️ How to Remove Snap Packages in Ubuntu Linux.md new file mode 100644 index 0000000000..af94f6a4bf --- /dev/null +++ b/sources/tech/20221019.3 ⭐️⭐️ How to Remove Snap Packages in Ubuntu Linux.md @@ -0,0 +1,164 @@ +[#]: subject: "How to Remove Snap Packages in Ubuntu Linux" +[#]: via: "https://www.debugpoint.com/remove-snap-ubuntu/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Remove Snap Packages in Ubuntu Linux +====== + +**A tutorial on how to remove Snap from Ubuntu Linux and getting a snap-free system.** + +Snap packages developed by Canonical are beneficial for several use cases. It provides an easy and faster update of applications directly to the end-users. Not only that, it has several other benefits, such as it comes with all dependencies packaged and allows multiple installations of the same applications. Furthermore, it runs in a sandbox mode providing security and other benefits. + +Among all these benefits, there are other debatable drawbacks of Snap tech. For example, almost every user who used Snap reported its slower performance, including its startup time, compared to native deb or RPM packages. In addition, due to its design, the application installation size is huge and costs disk space because it packages all the dependencies. + +Not only that, but due to its sandbox nature, the Snap apps may not access several areas of your Linux desktop until managed with proper permission. + +This guide explains how you can remove the snap from the Ubuntu system altogether. + +These steps are tested in [Ubuntu 22.04 LTS Jammy Jellyfish][1]. However, it should work for all applicable Ubuntu versions. + +Warning: These steps will remove Software and Firefox, the two critical applications in your Ubuntu system. Make sure you take backups of bookmarks and other Firefox settings before trying these steps. + +### Remove Snap Packages in Ubuntu Linux + +- Open a terminal and view the list of Snap packages installed in your system using the below command. It shows the snap packages such as Firefox, Software store, themes and other core packages installed by default. + +``` +snap list +``` + +![Snap list in Ubuntu][2] + +- Remove snap packages in the following order. Firstly remove Firefox. Secondly, snap-store and the other packages that you see in the above command output in your system. + +``` +sudo snap remove --purge firefoxsudo snap remove --purge snap-storesudo snap remove --purge gnome-3-38-2004 +``` + +``` +sudo snap remove --purge gtk-common-themessudo snap remove --purge snapd-desktop-integrationsudo snap remove --purge baresudo snap remove --purge core20sudo snap remove --purge snapd +``` + +- Finally, remove the snap daemon via apt command. + +``` +sudo apt remove --autoremove snapd +``` + +[![remove snap and others][3]][4] + +That’s not all. Even if you removed the snaps using the above command, the sudo apt update command again brings back the snap if you don’t stop the apt trigger. + +- So, to stop that, we need to create an apt preference file in **/etc/apt/preferences.d/ **and create a new preference file to stop snap. Create a new file called **nosnap.pref** in /etc/apt/preferences.d/ + +``` +sudo gedit /etc/apt/preferences.d/nosnap.pref +``` + +- And add the following lines, then save the file. + +``` +Package: snapdPin: release a=*Pin-Priority: -10 +``` + +![create a pref file][5] + +_The apt preference is a potent tool if you know how to use it. For example, in the above statements, the Pin-Priority -10 means preventing a package from installation._ + +_Unrelated to this tutorial, for example, if you want to give super high priority to all the packages from distribution code name=bullseye, then one may see these preferences. If you want to learn more, you can visit the [apt man pages][6]._ + +``` +Package: *Pin: release n=bullseyePin-Priority: 900 +``` + +- Returning to the topic, once you save and close the above file, run the below again from the terminal. + +``` +sudo apt update +``` + +- Finally, the steps are complete for getting rid of the snap from Ubuntu. + +### Installing Software and Firefox as deb files after removing Snap from Ubuntu + +You removed Firefox and Sofware applications, so you need those for your work. + +You can use the following command to install the apt version of the Gnome Software. Make sure you use the `--install-suggests`. Otherwise, it will install the snap version again! + +``` +sudo apt install --install-suggests gnome-software +``` + +And to install firefox, use the official PPA via the below commands. + +``` +sudo add-apt-repository ppa:mozillateam/ppa +sudo apt update +sudo apt install -t 'o=LP-PPA-mozillateam' firefox +``` + +[![Add the PPA][7]][8] + +[![Install Firefox as deb file from PPA][9]][10] + +Once you have installed Firefox, enable the automatic update using the below commands. To learn more, [visit thi][11][s page][11]. + +``` +echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox +``` + +Last but not least, create another preference file for Firefox to give super high priority to the above PPA while running apt. If you don’t do this, the apt update command again pulls back firefox snap and brings over its “snap friends”. 😂 + +``` +sudo gedit /etc/apt/preferences.d/mozillateamppa +``` + +Finally, add these lines and save the file. + +``` +Package: firefox*Pin: release o=LP-PPA-mozillateamPin-Priority: 501 +``` + +That’s it. + +### Revert back to Snap in Ubuntu + +If you change your mind, remove the preference file and install the applications using the below commands below. + +``` +sudo rm /etc/apt/preferences.d/nosnap.prefsudo apt update && sudo apt upgradesudo snap install snap-storesudo apt install firefox +``` + +### Closing Notes + +Wrapping up the tutorial on removing snap in Ubuntu, I would say these are unnecessary efforts to eliminate Snap completely. Mainly these are difficult for new users. I hope this guide helps you to get rid of snap. Cheers. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/remove-snap-ubuntu/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://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/remove-snap-and-others.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2022/04/create-a-pref-file.jpg +[6]: https://manpages.ubuntu.com/manpages/focal/man5/apt_preferences.5.html +[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/Add-the-PPA.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2022/04/Install-Firefox-as-deb-file-from-PPA-1024x548.jpg +[10]: https://www.debugpoint.com/wp-content/uploads/2022/04/Install-Firefox-as-deb-file-from-PPA.jpg +[11]: https://www.debugpoint.com/2021/09/remove-firefox-snap-ubuntu/ diff --git a/sources/tech/20221015 How to Enable and Access USB Drive in VirtualBox.md b/sources/tech/20221019.4 ⭐️ How to Enable and Access USB Drive in VirtualBox.md similarity index 61% rename from sources/tech/20221015 How to Enable and Access USB Drive in VirtualBox.md rename to sources/tech/20221019.4 ⭐️ How to Enable and Access USB Drive in VirtualBox.md index f28ee2e5bd..a8223410e6 100644 --- a/sources/tech/20221015 How to Enable and Access USB Drive in VirtualBox.md +++ b/sources/tech/20221019.4 ⭐️ How to Enable and Access USB Drive in VirtualBox.md @@ -9,9 +9,8 @@ How to Enable and Access USB Drive in VirtualBox ====== -Here’s a precise guide on how you can enable USB in Oracle VirtualBox. -![][1] +**Here’s a precise guide on how you can enable USB in Oracle VirtualBox.** When you work in a Virtual machine environment, the USB is usually plugged into the host system. But it is a little difficult to access that USB content from the guest system. @@ -19,61 +18,65 @@ In VirtualBox, you need to install some extensions and enable some settings to a This article assumes that you have already installed VirtualBox and also installed some Linux distribution or operating system inside it. -If not, check out the [articles here][2]. +If not, check out the [articles here][1]. + +Please note that Oracle VM VirtualBox Extension Pack comes with Oracle’s Personal Use and Evaluation License (PUEL). This license is different from VirtualBox, which is under GPL. If you are using the below steps for commercial purposes, make sure you [read this page][2] carefully. ### Enable USB in VirtualBox 7.0 #### Install VirtualBox Extension Pack -* Open the VirtualBox download page and download the VirtualBox Extension pack for all supported platforms using [this link][3]. +- Open the VirtualBox download page and download the VirtualBox Extension pack for all supported platforms using [this link][3]. ![Download the extension pack][4] -* Then Click on `File > Tools > Extension Pack Manager.` +- Then Click on `File > Tools > Extension Pack Manager.` -* Click on the `Install` button in the toolbar and select the downloaded .vbox-extpak file. +- Click on the `Install` button in the toolbar and select the downloaded .vbox-extpak file. -* Hit `Install`. Accept the terms, and give the admin password for the installation. +- Hit `Install`. Accept the terms, and give the admin password for the installation. ![install extension pack manager][5] ![install extension pack manager after accepting terms][6] -* After successful installation, you can see it in the installed list. +- After successful installation, you can see it in the installed list. -* Restart your host system. Restarting is mandatory. +- Restart your host system. Restarting is mandatory. #### Enable USB in the guest box -* Plugin the USB stick into your host system – which you want to access from the guest virtual machine. +- Plugin the USB stick into your host system – which you want to access from the guest virtual machine. -* Start VirtualBox and right-click on the VM name where you want to enable USB. Select Settings. +- Start VirtualBox and right-click on the VM name where you want to enable USB. Select Settings. ![Launch settings for the virtual machine][7] -* On the left pane, click on USB. Then select the controller version. For example, you can select USB 3.0. Then click on the small plus icon to add a USB filter. +- On the left pane, click on USB. Then select the controller version. For example, you can select USB 3.0. Then click on the small plus icon to add a USB filter. -* In this list, you should see your USB stick name (which you plugged in). For this example, I can see my Transcend Jetflash drive, which I plugged in. +- In this list, you should see your USB stick name (which you plugged in). For this example, I can see my Transcend Jetflash drive, which I plugged in. -* Select it and press OK. +- Select it and press OK. -![Select the USB stick][8] +[![Select the USB stick][8]][9] -* Now, start your virtual machine. Open the file manager, and you should see the USB is enabled and mounted on your virtual machine. +- Now, start your virtual machine. Open the file manager, and you should see the USB is enabled and mounted on your virtual machine. -* In this demonstration, you can see the Thunar file manager of my [Arch-Xfce][9] virtual machine is showing the contents of my USB stick. +- In this demonstration, you can see the Thunar file manager of my [Arch-Xfce][10] virtual machine is showing the contents of my USB stick. -![Enabling USB and accessing contents from VirtualBox][10] +[![Enabling USB and accessing contents from VirtualBox][11]][12] ### Usage notes Now, here are a couple of things you should remember. -* When you plug in the USB in the host system, keep it mounted. But do not open or access any file before launching the virtual machine. +- When you plug in the USB in the host system, keep it mounted. But do not open or access any file before launching the virtual machine. -* Once you start your virtual machine, the USB will be unmounted in the host system and auto-mounted in the guest system, i.e. your virtual machine. +unmounted in the host system -* After you finish with a USB stick, ensure to eject or unmount it inside a virtual machine. Then it will be accessible again inside your host system. +- Once you start your virtual machine, the USB will be and auto-mounted in the guest system, i.e. your virtual machine. + +- After you finish with a USB stick, ensure to eject or unmount it inside a virtual machine. Then it will be accessible again inside your host system. ### Wrapping Up @@ -96,13 +99,15 @@ via: https://www.debugpoint.com/enable-usb-virtualbox/ [a]: https://www.debugpoint.com/author/admin1/ [b]: https://github.com/lkxed -[1]: https://www.debugpoint.com/wp-content/uploads/2022/10/usb-vbox-1024x576.jpg -[2]: https://www.debugpoint.com/tag/virtualbox +[1]: https://www.debugpoint.com/tag/virtualbox +[2]: https://www.virtualbox.org/wiki/VirtualBox_PUEL [3]: https://www.virtualbox.org/wiki/Downloads [4]: https://www.debugpoint.com/wp-content/uploads/2022/10/Download-the-extension-pack.jpg [5]: https://www.debugpoint.com/wp-content/uploads/2022/10/install-extension-pack-manager.jpg [6]: https://www.debugpoint.com/wp-content/uploads/2022/10/install-extension-pack-manager-after-accepting-terms.jpg [7]: https://www.debugpoint.com/wp-content/uploads/2022/10/Launch-settings-for-the-virtual-machine.jpg -[8]: https://www.debugpoint.com/wp-content/uploads/2022/10/Select-the-USB-stick.jpg -[9]: https://www.debugpoint.com/xfce-arch-linux-install-4-16/ -[10]: https://www.debugpoint.com/wp-content/uploads/2022/10/Enabling-USB-and-accessing-contents-from-VirtualBox.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2022/10/Select-the-USB-stick-1024x399.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2022/10/Select-the-USB-stick.jpg +[10]: https://www.debugpoint.com/xfce-arch-linux-install-4-16/ +[11]: https://www.debugpoint.com/wp-content/uploads/2022/10/Enabling-USB-and-accessing-contents-from-VirtualBox-1024x639.jpg +[12]: https://www.debugpoint.com/wp-content/uploads/2022/10/Enabling-USB-and-accessing-contents-from-VirtualBox.jpg diff --git a/sources/tech/20221021.0 ⭐️ How to find GNOME Shell version from the Terminal.md b/sources/tech/20221021.0 ⭐️ How to find GNOME Shell version from the Terminal.md new file mode 100644 index 0000000000..a34438548c --- /dev/null +++ b/sources/tech/20221021.0 ⭐️ How to find GNOME Shell version from the Terminal.md @@ -0,0 +1,91 @@ +[#]: subject: "How to find GNOME Shell version from the Terminal" +[#]: via: "https://www.debugpoint.com/find-gnome-version/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to find GNOME Shell version from the Terminal +====== + +**Here’s a quick guide on finding the GNOME desktop (or Shell) version via the command line and GUI.** + +### Find GNOME Shell Version + +You need to find the GNOME version number you are running for many use cases. For example, if you are a developer, you might want to find out compatible packages and ensure that all the dependencies are met. + +So, to do that, here’s how you can find the GNOME version number. + +Firstly, open a terminal. And run the following command. + +``` +gnome-shell --version +``` + +![version via terminal][1] + +It will give you the GNOME shell version number currently running in your system. + +Similarly, if you are using the desktop environment, then open Settings. Then click on the About tab. + +Here you can see the GNOME Version at the bottom. + +![version via settings window][2] + +### Usage Notes + +There might be situations where you use a different desktop environment (such as MATE or Xfce), which also uses GNOME components and packages. + +Those desktop environments don’t use the gnome-shell package, of course. So, if you want to find out the GNOME packages and their version used in those specific cases, you can see the contents of this file below. This is for Ubuntu and Debian-based distros only. + +``` +/var/lib/apt/extended_states +``` + +For example, the file contains a below GNOME package. + +Now that you know the package name, you can further find out its version installed in your system using the below command. Similar DNF command you can find in [this guide][3] for RPM-based distros. + +``` +apt show gnome-weather +``` + +**Sample output:** + +``` +debugpoint@debugpoint-mate:~$ apt show gnome-weather +Package: gnome-weather +Version: 43.0-1 +Priority: optional +Section: universe/gnome +Origin: Ubuntu +Maintainer: Ubuntu Developers [ubuntu-devel-discuss@lists.ubuntu.com][4] +Original-Maintainer: Debian GNOME Maintainers [pkg-gnome-maintainers@lists.alioth.debian.org][5] +``` + +### Wrapping Up + +This guide teaches you how to find the version of GNOME and some additional methods. + +Cheers. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/find-gnome-version/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/10/version-via-terminal.jpg +[2]: https://www.debugpoint.com/wp-content/uploads/2022/10/version-via-settings-window.jpg +[3]: https://www.debugpoint.com/dnf-commands-examples/ +[4]: https://www.debugpoint.commailto:ubuntu-devel-discuss@lists.ubuntu.com +[5]: https://www.debugpoint.commailto:pkg-gnome-maintainers@lists.alioth.debian.org diff --git a/sources/tech/20221021.4 ⭐️⭐️ Observability-driven development with OpenTelemetry.md b/sources/tech/20221021.4 ⭐️⭐️ Observability-driven development with OpenTelemetry.md new file mode 100644 index 0000000000..170e38e797 --- /dev/null +++ b/sources/tech/20221021.4 ⭐️⭐️ Observability-driven development with OpenTelemetry.md @@ -0,0 +1,82 @@ +[#]: subject: "Observability-driven development with OpenTelemetry" +[#]: via: "https://opensource.com/article/22/10/observability-driven-development-opentelemetry" +[#]: author: "Ken Hamric https://opensource.com/users/kenkubeshopio" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Observability-driven development with OpenTelemetry +====== + +Observability-driven development (ODD) is being recognized as "necessary" for complex, microservice-based architectures. Charity Majors coined the term and has written about it in several articles, including [Observability: A Manifesto][1]. She explains the term in this quote: + +> Do you bake observability right into your code as you're writing it? The best engineers do a form of "observability-driven-development" — they understand their software as they write it, include instrumentation when they ship it, then check it regularly to make sure it looks as expected. You can't just tack this on after the fact, "when it's done". + +### OpenTelemetry provides the plumbing + +The OpenTelemetry project has the industry backing to be the 'plumbing' for enabling observability across distributed applications. The OpenTelemetry project is [second only to Kubernetes][2] when measuring the size of its contributor community among [Cloud Native Computing Foundation (CNCF)][3] projects, and was formed when OpenTracing and OpenCensus projects merged in 2019. Since then, almost all of the major players in the industry have announced their support for OpenTelemetry. + +[OpenTelemetry][4] covers three observability signals—logs, metrics, and distributed traces. It standardizes the approach to instrumenting your code, collecting the data, and exporting it to a backend system where the analyses can occur and the information can be stored. By standardizing the 'plumbing' to gather these metrics, you can now be assured that you don't have to change the instrumentation embedded in your code when switching from one vendor to another, or deciding to take the analysis and storage in-house with an open source solution such as OpenSearch. Vendors fully support OpenTelemetry as it removes the onerous task of enabling instrumentation across every programming language, every tool, every database, every message bus— and across each version of these languages. An open source approach with OpenTelemetry benefits all! + +### Bridging the gap with Tracetest + +So you want to do ODD, and you have a standard of how to instrument the code with OpenTelemetry. Now you just need a tool to bridge the gap and help you develop and test your distributed application with OpenTelemetry. This is why my team is building [Tracetest][5], an open source tool to enable the development and testing of your distributed microservice application. It's agnostic to the development language used or the backend OpenTelemetry data source that is chosen. + +For years, developers have utilized tools such as Postman, ReadyAPI, or Insomnia to trigger their code, view the response, and create tests against the response. Tracetest extends this old concept to support the modern, observability-driven development needs of teams. Traces are front and center in the tool. Tracetest empowers you to trigger your code to execute, view both the response from that code and the OpenTelemetry trace, and to build tests based on both the response and the data contained in the trace. + +![Image of Tracetest functionality.][6] + +Image by: + +(Ken Hamric, CC BY-SA 4.0) + +### Tracetest: Trigger, trace, and test + +How does Tracetest work? First, you define a triggering transaction. This can be a [REST][7] or gRPC call. The tool executes this trigger and shows the developer the full response returned. This enables an interactive process of altering the underlying code and executing the trigger to check the response. Second, Tracetest integrates with your existing OpenTelemetry infrastructure to pull in the trace generated by the execution of the trigger, and shows you the full details of the trace. Spans, attributes, and timing are all visible. The developer can adjust their code and add manual instrumentation, re-execute the trigger, and see the results of their changes to the trace directly in the tool. Lastly, Tracetest allows you to build tests based on both the response of the transaction and the trace data in a technique known as trace-based testing. + +### What is trace-based testing? + +Trace-based testing is a new approach to an old problem. How do you enable integration tests to be written against complex systems? Typically, the old approach involved adding lots of complexity into your test so it had visibility into what was occurring in the system. The test would need a trigger, but it would also need to do extra work to access information contained throughout the system. It would need a database connection and authentication information, ability to monitor the message bus, and even additional instrumentation added to the code to enable the test. In contrast, Trace-based testing removes all the complexity. It can do this because of one simple fact—you have already fully instrumented your code with OpenTelemetry. By leveraging the data contained in the traces produced by the application under the test, Tracetest can make assertions against both the response data and the trace data. Examples of questions that can be asked include: + +- Did the response to the gRPC call have a 0 status code and was the response message correct? +- Did both downstream microservices pull the message off the message queue? +- When calling an external system as part of the process—does it return a status code of 200? +- Did all my database queries execute in less than 250ms? + +![Image of Observability driven development in Tracetest.][8] + +Image by: + +(Ken Hamric, CC BY-SA 4.0) + +By combining the ability to exercise your code, view the response and trace returned, and then build tests based on both sets of data, Tracetest provides a tool to enable you to do observability-driven development with OpenTelemetry. + +### Try Tracetest + +If you're ready to get started, [download Tracetest][9] and try it out. It's open source, so you can [contribute to the code][10] and help shape the future of trace-based testing with Tracetest! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/observability-driven-development-opentelemetry + +作者:[Ken Hamric][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/kenkubeshopio +[b]: https://github.com/lkxed +[1]: https://www.honeycomb.io/blog/observability-a-manifesto/ +[2]: https://www.cncf.io/blog/2021/12/15/end-of-year-update-on-cncf-and-open-source-velocity-in-2021/ +[3]: https://www.cncf.io/ +[4]: https://opentelemetry.io/ +[5]: http://tracetest.io +[6]: https://opensource.com/sites/default/files/2022-10/tracetest%20functionality.png +[7]: https://www.redhat.com/en/topics/api/what-is-a-rest-api?intcmp=7013a000002qLH8AAM +[8]: https://opensource.com/sites/default/files/2022-10/Tracetest-odd.png +[9]: https://tracetest.io/download +[10]: https://github.com/kubeshop/tracetest/issues diff --git a/sources/tech/20221022.0 ⭐️⭐️ How to use journalctl to View and Analyze Systemd Logs [With Examples].md b/sources/tech/20221022.0 ⭐️⭐️ How to use journalctl to View and Analyze Systemd Logs [With Examples].md new file mode 100644 index 0000000000..37ebc17974 --- /dev/null +++ b/sources/tech/20221022.0 ⭐️⭐️ How to use journalctl to View and Analyze Systemd Logs [With Examples].md @@ -0,0 +1,250 @@ +[#]: subject: "How to use journalctl to View and Analyze Systemd Logs [With Examples]" +[#]: via: "https://www.debugpoint.com/systemd-journalctl/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to use journalctl to View and Analyze Systemd Logs [With Examples] +====== + +**This guide explains the basics of the journalctl utility of [Systemd][1] and its various commands. You can use these commands for troubleshooting desktop and server logs in Linux. This is how you can use journalctl to view and analyze Systemd Logs with different examples.** + +### Introduction + +Many say that Systemd is not good, it is heavy on the system and it is a debated topic always. But you can not deny that it provides a well set of utilities to manage, troubleshoot a system. Imagine you end up with a broken system with no GUI. You probably messed up boot and GRUB as well. In those kinds of scenarios or in general – you can boot from a LIVE system, mount your Linux partition and explore the Systemd logs to find out about the problem. + +Systemd has three basic components as follows – + +- **systemd**: System and service manager for Linux operating systems. +- **systemctl**: Command to introspect and control the state of the systemd system and service manager. +- **systemd-analyze**: Provides system boot-up performance statistics and retrieve other state and tracing information from the system and service manager + +Apart from these three, there are additional services that systemd provides such as – journald, logind, networkd, etc. In this guide we will talk about the journald service of systemd. + +### journald – systemd journal daemon + +By design, systemd provides a centralized way of handing all operating system logs from processes, applications, etc. All these logging events are handled by journald daemon of systemd. The journald daemon collects all logs from everywhere of the Linux operating systems and stores themes as binary data in files. + +The advantages of centralized logging of events, system problems as binary data are many. For example, as the system logs are stored as binary and not text – you can translate in many ways such as text, JSON objects for various needs. Also, it is super easy to track down to a single event as the logs are stored sequentially via date/time manipulation of the logs. + +Remember the log files that journald collects are in thousands of lines and it gets updated for every event, every boot. So if you have a long time running Linux operating system – the journal logs size should in GBs. As the logs are in thousands, it’s better to filter with basic commands to find out more about the system problems. + +#### The journald Configuration File + +The configuration file of the journald is present in the below path. It contains various flags on how the logging happens. You can take a look at the file and make the changes necessary. But I would recommend not to modify this file unless you know what you are doing. + +``` +/etc/systemd/journald.conf +``` + +#### Where journald stores the binary log files + +The journald stores the logs in binary format. They are stored inside a directory under this path. + +``` +/var/log/journal +``` + +For example, in the below path there is a directory that contains all the system logs to date. + +![journalctl log file path][2] + +Do not use cat command or use nano or vi to open these files. They would not be displayed properly. + +### Use journalctl to View and Analyze Systemd Logs + +#### Basic journald command + +The basic command to view logs using journal daemon is – + +``` +journalctl +``` + +![journalctl][3] + +This gives you all the journal entries including errors, warnings, etc from all applications and processes. It shows the list with the oldest log at the top and current logs at the bottom. You need to keep pressing ENTER to scroll through it line by line. You can also use PAGE UP and PAGE DOWN keys to scroll. Press q to exit from this view. + +#### How to view journal entries for time zones + +By default, the journalctl shows the log time in the current system time zone. However, you can easily provide the timezone in your command to convert the same log to a different time zone. For example, to view the logs in UTC, use the below command. + +``` +journalctl --utc +``` + +![journalctl --utc][4] + +#### How to view only errors, warnings, etc in journal logs + +The logs that a system generates have different priorities. Some logs may be a warning which can be ignored or some may be critical errors. You might want to look at only errors, not warnings. That is also possible using the below command. + +To view emergency system messages use: + +``` +journalctl -p 0 +``` + +![journalctl -p 0][5] + +Error codes + +``` +0: emergency 1: alerts 2: critical 3: errors 4: warning 5: notice 6: info 7: debug +``` + +When you specify the error code, it shows all messages from that code and above. For example, if you specify the below command, it shows all messages with priority 2, 1 and 0 + +``` +journalctl -p 2 +``` + +#### How to view journal logs for a specific boot + +When you are running the journalctl command it shows the information from the current boot that is from the current session which you are running. But it is also possible to view information about past boots as well. + +Journal logs keep on updating in every reboot. The journald keeps track of the logs in different boots. To view, the boot-wise logs use the below command. + +``` +journalctl --list-boots +``` + +![journalctl list-boots][6] + +- The first number shows the unique journald boot track number which you can use in the next command to analyze that specific boot. +- The second number the boot ID which also you can specify in the commands. +- The next two date, time combinations are the duration of the logs stored in the respective file. This is super handy if you want to find out a log or error from a specific date, time. + +To view a specific boot number you the first number or the boot ID as below. + +``` +journalctl -b -45 +``` + +``` +journalctl -b 8bab42c7e82440f886a3f041a7c95b98 +``` + +![journalctl -b 45][7] + +You can also use `-x` switch which can add an explanation of the systemd error messages in your display. This is a lifesaver in certain situations. + +``` +journalctl -xb -p 3 +``` + +![journalctl -xb][8] + +#### How to view journal logs for a specific time, date duration + +The journalctl is powerful enough to provide “english” like argument in the command itself for time and date manipulation. + +You can use`--since` switch with a combination of `“yesterday”, “today”, “tomorrow”, or “now”.` + +Some of the examples of different commands below. You can modify them as per your need. They are self-explanatory. The date, time format in the below commands are `"YYYY-MM-DD HH:MM:SS"` + +``` +journalctl --since "2020-12-04 06:00:00" +``` + +``` +journalctl --since "2020-12-03" --until "2020-12-05 03:00:00" +``` + +``` +journalctl --since yesterday +``` + +``` +journalctl --since 09:00 --until "1 hour ago" +``` + +![journalctl --since 09:00 --until][9] + +You can combine the above with the error level switches as well. + +#### How to see Kernel specific journal logs + +The Linux Kernel messages can be extracted from journal logs as well. To view the Kernel messages from the current boot only use the below command. + +``` +journalctl -k +``` + +#### How to see journal logs for a service, PID + +You can filter out specific logs from a systemd service unit only from the journald logs. For example, to find out the logs from NetworkManager service use the below command. + +``` +journalctl -u NetworkManager.service +``` + +![journalctl NetworkManager service][10] + +If you do not know the service name, you can use the below command to list the systemd services in your system. + +``` +systemctl list-units --type=service +``` + +#### How to view journal logs for a user, group + +If you are analyzing server logs this command is helpful where multiple users are logged in. You can first find out about the user id using the below command from the user name. For example, to find out the id of user “`debugpoint`” – + +``` +id -u debugpoint +``` + +Then use that ID with `_UID` switch to view the logs generated by the user. + +``` +journalctl _UID=1000 --since today +``` + +![journalctl _UID][11] + +Similarly use `_GID` switch to find out the same for user groups. + +#### How to view journal logs for an executable + +You can also find out journald logs of a specific program or executable. For example, if you want to find out the messages of gnome-shell, you can run the below command. + +``` +journalctl /usr/bin/gnome-shell --since today +``` + +![journalctl gnome-shell][12] + +### Closing notes + +I hope this guide helps you to use journalctl to view analyze systemd logs on your Linux desktop or server troubleshooting. The systemd journal management extremely powerful if you know how to use the commands, it makes your life a bit easy during debugging time. All major mainstream Linux distribution uses Systemd these days. Ubuntu, Debian, Fedora, Arch – they all use systemd for their default OS offerings. In case if you are wondering about systemd-free Linux distributions, you might want to check out [MX-Linux][13], Gentoo, Slackware, Void Linux. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/systemd-journalctl/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://freedesktop.org/wiki/Software/systemd/ +[2]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-log-file-path.jpg +[3]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-utc.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-p-0.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-list-boots.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-b-45.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-xb.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-since-0900-until.jpg +[10]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-NetworkManager-service.jpg +[11]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-_UID.jpg +[12]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-gnome-shell.jpg +[13]: https://www.debugpoint.com/tag/mx-linux diff --git a/sources/tech/20221022.2 ⭐️ PaperDE is a Touch-Friendly Linux Desktop Environment.md b/sources/tech/20221022.2 ⭐️ PaperDE is a Touch-Friendly Linux Desktop Environment.md new file mode 100644 index 0000000000..7189e0dff7 --- /dev/null +++ b/sources/tech/20221022.2 ⭐️ PaperDE is a Touch-Friendly Linux Desktop Environment.md @@ -0,0 +1,92 @@ +[#]: subject: "PaperDE is a Touch-Friendly Linux Desktop Environment" +[#]: via: "https://news.itsfoss.com/paperde/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +PaperDE is a Touch-Friendly Linux Desktop Environment +====== + +PaperDE is a simple, and touch-friendly desktop environment to look out for. + +![PaperDE is a Touch-Friendly Linux Desktop Environment][1] + +Seeing that many desktop environments exist, you may ask, why do we need another? + +Well, the answer is simple. It is good to have options. + +Having various user experiences enables you to experiment with different setups until you find the perfect one. If you are new to the Linux world, you may want to check out some of the best desktop environments available: + +So, what does PaperDE bring to the table? + +### PaperDE: A Minimal Desktop Environment + +![paperde desktop view][2] + +[PaperDE][3] aims to be a simple, lightweight desktop environment with a touchscreen-friendly user interface. + +Yes, it is not a wildly different idea. But, as per the official screenshots, it looks pretty. + +When closely examined, PaperDE looks similar to a mix of desktop environments such as [GNOME][4] and [Budgie][5]. + +![paperde apps][6] + +It is being made from the ground up, with Qt/Wayland and [Wayfire][7] at its core, and features [PipeWire][8] as the default audio/video stack. + +Furthermore, the DE will feature a dock bar for easy access to pinned apps and support adding various widgets from the [C-Suite][9] apps to the main screen. + +![paperde widgets][10] + +When asked about its touchscreen and gesture support on Reddit, one of the developers ([rahmanshaber][11]) mentioned: + +> No, gestures doesn't work in real life, as you may use it in a tablet where it didn't came with linux installed. We used UI/ UX design approach that makes it easier to navigate the DE using finger and touch. + +### Can You Try PaperDE Now? + +The short answer is, yes. + +The long answer is, that it is still in the early stages of development. + +> 💡They recently released PaperDE 0.2.0 a few days back, you can check out their GitLab [project][12] to learn more. + +The developers say that it is only possible to test it out using Arch, and no Flatpak or Snap packages are available to install. + +I did try using the AUR package, but it failed to build on Arch Linux. + +The developers have said that PaperDE will also be made available in the [official repository][13] of Alpine Linux soon. But, for other packages, maintainers and contributors will have to help. + +If you are looking for an experiment to test, you can try it out. + +[PaperDE][12] + +_💬 Are you excited to see a new desktop environment in the works? Or do you think you do not need another project like this?_ + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/paperde/ + +作者:[Sourav Rudra][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w1200/2022/10/paper-de.png +[2]: https://news.itsfoss.com/content/images/2022/10/PaperDE-1.png +[3]: https://cubocore.org/paperde.html +[4]: https://www.gnome.org/ +[5]: https://ubuntubudgie.org/ +[6]: https://news.itsfoss.com/content/images/2022/10/paperde-apps.png +[7]: https://github.com/wayfirewm/wayfire +[8]: https://pipewire.org/ +[9]: https://cubocore.org/coreapps.html +[10]: https://news.itsfoss.com/content/images/2022/10/PaperDE-2.png +[11]: https://gitlab.com/rahmanshaber +[12]: https://gitlab.com/cubocore/paper/paperde +[13]: https://pkgs.alpinelinux.org/packages diff --git a/sources/tech/20221024.0 ⭐️⭐️ Give your Terminal a Retro Look Using this Neat Application.md b/sources/tech/20221024.0 ⭐️⭐️ Give your Terminal a Retro Look Using this Neat Application.md new file mode 100644 index 0000000000..368c395c73 --- /dev/null +++ b/sources/tech/20221024.0 ⭐️⭐️ Give your Terminal a Retro Look Using this Neat Application.md @@ -0,0 +1,115 @@ +[#]: subject: "Give your Terminal a Retro Look Using this Neat Application" +[#]: via: "https://www.debugpoint.com/cool-retro-terminal/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Give your Terminal a Retro Look Using this Neat Application +====== + +**Want to give your Terminal a retro look? This guide contains instructions to help you to install Cool Retro Terminal application in all Linux distributions.** + +![Cool Retro Terminal][1] + +Cool Retro Terminal + +Have you ever wondered how you can mimic the look of those old CRT monitors displayed in your Linux terminal? + +Those CRT screens have their own fan base. Like the Apple 2 or the IBM 3278 terminals – they are really cool looking if you compare them to today’s 4K monitor displays. I am not saying 4K is bad, but sometimes legacy displays remind us of those bygone days. Enough of these ramblings. Let’s get started installing the app. + +### Cool Retro Term + +The application is free and open-sourced. And it is called [cool-retro-term][2]. It is lightweight and has many customization options with pre-set profiles, such as Apple 2, etc. It also gives you those static noises and scan-lines effects in your terminal. Cool, isn’t it? + +It is built in Qt and requires Qt 5.2 and higher. If you are using the latest Linux distributions, you should be good in terms of dependencies. + +![Green Scanlines Theme][3] + +Green Scanlines Theme + +### How to Download and Install Cool Retro Terminal + +#### Ubuntu, Linux Mint and other Debian-based distributions + +The following simple command will install this application in your Ubuntu and other related distributions. + +``` +sudo apt install cool-retro-term +``` + +#### Arch Linux + +This package is available in Arch User Repository AUR. If you do not have AUR enabled, enable it using [this guide][4] and then use the following commands to install it. + +``` +pacman -S cool-retro-term +``` + +#### Fedora, RHEL and other related distributions + +For Fedora and other related Linux, use the following command to install this app. + +``` +sudo dnf install cool-retro-term +``` + +#### Appimage + +A self-contained executable as AppImage is also available, which you can just download and run. No installation is required. Follow the below commands to do that. + +``` +wget https://github.com/Swordfish90/cool-retro-term/releases/download/1.1.1/Cool-Retro-Term-1.1.1-x86_64.AppImage +chmod a+x Cool-Retro-Term-1.1.1-x86_64.AppImage +./Cool-Retro-Term-1.1.1-x86_64.AppImage +``` + +Note: Version 1.2.0 onwards there are no AppImage build in the GitHub. + +### Configurations + +After the installation is finished, you can find the terminal application “Cool Retro Term” in the application menu. So, launch the application and enjoy. + +Remember, this is not overriding your default console/terminal application in your Linux distributions. It is a stand-alone console application. + +The configuration options are available via the Right Click context menu. + +The context menu gives you the following pre-sets. You can then configure each of them for colour, and appearance settings via the settings window. For example, if you want more transparency, contrast or more noise, ambient light or flickering – all of them can be configured from the below settings window via several options. + +And easily you can make your own theme. + +![Pre-loaded Themes in Cool Retro Term][5] + +Pre-loaded Themes in Cool Retro Term + +![Various Effects in Settings][6] + +Various Effects in Settings + +### Summary + +Cool Retro Terminal is an old tube-style terminal for Linux desktops that allows you to experience it as if you are sitting in front of a retro terminal. You may or may not like it, and one hardly uses it for a daily driver. But still, a nice-looking terminal to experience from time to time to get away from the mundane terminal. + +Do you like the retro look? What is your favourite theme? Let me know in the comment section below. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/cool-retro-terminal/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2021/12/cool-retro-terminal-1024x576.jpg +[2]: https://github.com/Swordfish90/cool-retro-term +[3]: https://www.debugpoint.com/wp-content/uploads/2021/12/Green-Scanlines-Theme-1024x594.jpg +[4]: https://www.debugpoint.com/2021/01/install-yay-arch/ +[5]: https://www.debugpoint.com/wp-content/uploads/2021/12/Pre-loaded-Themes-in-Cool-Retro-Term-1024x599.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2021/12/Various-Effects-in-Settings.jpg diff --git a/sources/tech/20221024.2 ⭐️ How to Clean Up Flatpak Apps to Clear Disk Space.md b/sources/tech/20221024.2 ⭐️ How to Clean Up Flatpak Apps to Clear Disk Space.md new file mode 100644 index 0000000000..49e1537a11 --- /dev/null +++ b/sources/tech/20221024.2 ⭐️ How to Clean Up Flatpak Apps to Clear Disk Space.md @@ -0,0 +1,145 @@ +[#]: subject: "How to Clean Up Flatpak Apps to Clear Disk Space" +[#]: via: "https://www.debugpoint.com/clean-up-flatpak/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Clean Up Flatpak Apps to Clear Disk Space +====== + +**Here’s how to clean up Flatpak apps to reclaim your precious disk space. Follow along. ** + +Flatpak (like Snap) packages run in sandbox mode. By design, it takes a considerable amount of disk space for an individual application, even if it is a smaller one. For example, a simple Test editor or a basic image annotator application can take up more than 100+ MB of storage space. + +It’s how Flatpak or even Snap operates fundamentally. It pulls all dependencies for an app and runs independently. The advantage of this design is – you do not need to worry about dependencies or updates. All you need to do is install and run. On the contrary, it takes up a huge amount of disk space. + +And if you are running Ubuntu, elementary OS or any distribution for a longer period, you would be surprised that Flatpak keeps taking up more space over time. + +Hence, in this guide, we will give you some commands you can run yourself to clean up flatpak apps. + +### Clean Up Flatpak + +#### Where Flatpak packages are installed? + +When you install a Flatpak package, it gets installed in `/var/lib/flatpak`. All the installed files, metadata, application files, and runtime files are contained in this directory. Also, the user installation directory contains Flatpak data – that is – `~/.local/share/flatpak` + +#### How to find out the size of Flatpak apps? + +There are several commands and parameters of “flatpak” which you can combine to get the desired result to list the applications, size and type of installation. Here are some examples. + +- Verify the size of `/var/lib/flatpak`. But as it is being used by all Flatpak apps plus runtimes, you may not be able to recover entirely. + +``` +du -h /var/lib/flatpak +``` + +![Size of var-lib-flatpak][1] + +Size of var-lib-flatpak + +- If you have [Disk Usage Analyzer][2], you can verify by simply visiting the above directories. + +![Disk Analyzer Shows Flatpak size][3] + +Disk Analyzer Shows Flatpak size + +You can use any of the following commands to view the size of installed flatpak packages. + +- View all the installed flatpak with name and installed size. + +``` +flatpak --columns=name,size list +``` + +![flatpak list example 1][4] + +flatpak list example 1 + +- List all installed flatpak with installation type, size and application ID. + +``` +flatpak --columns=app,name,size,installation list +``` + +![flatpak list example 2][5] + +flatpak list example 2 + +- View only the flatpak installed by you. + +``` +flatpak --columns=name,size --user list +``` + +![flatpak list example 3][6] + +flatpak list example 3 + +Remember, two types of flatpak may exist in your system. Some of them may be part of the OS itself. And some of them are installed by you. + +#### Commands to Clean up + +- Use the following command to uninstall flatpak packages that are not in use. This is a safe command which you can try. + +``` +flatpak uninstall --unused +``` + +![clean up flatpak using unused switch][7] + +clean up flatpak using unused switch + +Using the above command, I have freed up around 1GB+ in my test system. + +![var-lib-flatpak size is reduced][8] + +var-lib-flatpak size is reduced + +- If you want to uninstall a specific Flatpak package, use the following command. Change the application ID with the app name. You can find the app name in the above list size commands. + +``` +flatpak uninstall +``` + +- The following command removes all flatpak packages from your system. Try not to run it unless you are very sure what you are doing. This may break your system, depending on your configuration. + +``` +flatpak uninstall --all +``` + +Finally, there are some flatpak cache files in path `/var/tmp/flatpak-cache-*`. Although the size may not be significant. But you can still remove them. + +``` +sudo rm -rfv /var/tmp/flatpak-cache-* +``` + +For more details about flatpak commands, visit the [official guide][9]. And let me know, using the comment box below, whether this helped you to clean up some space. + +If you are looking to clean up Snap packages, the guide is available [here][10]. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/clean-up-flatpak/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2021/10/Size-of-var-lib-flatpak.jpeg +[2]: https://help.gnome.org/users/baobab/ +[3]: https://www.debugpoint.com/wp-content/uploads/2021/10/Disk-Analyzer-Shows-Flatpak-size-1024x392.jpeg +[4]: https://www.debugpoint.com/wp-content/uploads/2021/10/flatpak-list-example-1.jpeg +[5]: https://www.debugpoint.com/wp-content/uploads/2021/10/flatpak-list-example-2-1024x316.jpeg +[6]: https://www.debugpoint.com/wp-content/uploads/2021/10/flatpak-list-example-3.jpeg +[7]: https://www.debugpoint.com/wp-content/uploads/2021/10/clean-up-flatpak-using-unused-switch.jpeg +[8]: https://www.debugpoint.com/wp-content/uploads/2021/10/var-lib-flatpak-size-is-reduced.jpeg +[9]: http://flatpak list example 3 +[10]: https://www.debugpoint.com/2021/03/clean-up-snap/ diff --git a/sources/tech/20221024.4 ⭐️⭐️⭐️ A PWA is the web browser.md b/sources/tech/20221024.4 ⭐️⭐️⭐️ A PWA is the web browser.md new file mode 100644 index 0000000000..8605a64907 --- /dev/null +++ b/sources/tech/20221024.4 ⭐️⭐️⭐️ A PWA is the web browser.md @@ -0,0 +1,145 @@ +[#]: subject: "A PWA is the web browser" +[#]: via: "https://opensource.com/article/22/10/pwa-web-browser" +[#]: author: "Alex Borsody https://opensource.com/users/alexborsody" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +A PWA is the web browser +====== + +While progressive web apps (PWAs) are still in their early stages of development, they have the potential to revolutionize the way we use the web. + +A progressive web app (PWA) is a web application that uses modern web technologies to deliver a user experience equal to any mobile app. An active open source community, in conjunction with tech leaders like Google and Microsoft, pushes the PWA agenda forward in an effort to "bridge the app gap." + +Basically, a PWA runs your app in a web browser. Because there's essentially a two-party system of the Play and App stores, the focus is on two browsers: Google Chrome and Apple Safari (built on top of the open source Chromium and WebKit, respectively). + +I won't be covering creating desktop apps. For more information on that topic, look into [Electron][1]. + +PWAs are built the same way as any website or web app. They use the latest mobile technologies and implement UX best practices. PWAs can also hook the browser in with native code to improve the experience. + +If you type "What is a PWA" in your favorite search engine, you'll probably get a stock response similar to "PWAs are designed to be fast, reliable, and engaging, with the ability to work offline and be installed on a device's home screen." While this is partly true, it's just the tip of the iceberg for what a PWA has the potential to be and what it's evolving into, even as I write this article. + +### What is not a PWA + +The following are cross-platform app frameworks allowing you to develop from a single codebase. They do not use the browser as their platform. + +- Flutter +- React Native + +Flutter uses a language called Dart, which compiles to iOS, Android, and web packages. React Native does the same but compiles JavaScript on the backend. + +### What is a PWA by definition? + +A PWA, by its original definition, must meet these three requirements: + +- **Service worker:** Provides offline functionality. +- **Web manifest:** JSON markup to configure home screen and app icons. +- **Security:** HTTPS is enforced, because a service worker runs in the background. + +These components allow you to pass the [Google Lighthouse PWA audit][2] and get the green checkmark on your score. + +![Google Lighthouse score, including performance, accessibility, best practices, SEO, and PWA][3] + +Once you satisfy these requirements, Chrome's "add to home screen" prompt is also automatically enabled. + +PWA Builder (a free service provided by Microsoft) has an excellent UI for building a PWA and visualizing base requirements. See the following example based on developers.google.com. You can demo this functionality [here][4] provided by the [PWA module][5] I discussed in [my previous article][6]. + +![Google Developer's interface displaying Service Workers][7] + +![Google Developer's interface displaying Manifest][8] + +The base requirements of a PWA allow offline behavior through the service worker, and the `manifest.json` file allows "add to home screen" behavior on Android, where your website gets added as an icon to the home screen and opens with no-browser Chrome (in fullscreen) with an app splash page. These are the minimum requirements for a PWA and, aside from providing a performance increase due to the offline caching, mainly give the illusion the website is an app. It's a psychological gap at its core where the end user will stop thinking of the browser as merely "websites" and instead look at it for what it actually is… an app platform. Google seemed to make this a priority to pave the way for developing the endless number of features, functionality, and UX/UI enhancements that actually provide an enhanced "app-like experience." + +A PWA is really a collection of browser technologies and web development techniques and technologies that make a website more "app-like." I have broken these down into the following categories. + +#### Enhanced app-like experience + +- HTML/CSS/Javascript + +- Improved UX/UI experience on a mobile device +- Native device access and enhanced web capabilities +- Speed and performance + +#### What a PWA can be today beyond the definition + +Here are more details on the three experience descriptions above. + +**UX/UI improvements** + +UX/UI and visual problem-solving are critical to making your website feel like an app. This often manifests as attention to details such as animations, input/font sizes, scrolling issues, or other CSS bugs. It's important that there is a strong frontend development team so they can create this UX. Within the category of design and UX are the enhancements we can implement with the building blocks of a web document (HTML/JSS/JS). Two examples of this are: + +- [**Hotwire Turbo**][9]: An open source framework using HTML over the wire to reload only the areas of your page that change using AJAX or WebSockets. This offers the performance improvements that SPAs strive for using only limited JavaScript. This approach is perfect for your monolithic application or template-rendering system; no need to invest in the added complexity of decoupling your front and back end. +- **Mobile-specific SPA frameworks:** There are several decoupled frameworks out there that can give your website an app-like user experience. Onsen UI and Framework 7 are two excellent options that help you create a fast, responsive user interface for your website. However, you do not need to rely on these frameworks. As discussed above, a good frontend team can build the UI you strive for by implementing the latest app-like mobile design techniques. + +[This slide][10] goes into more detail about staying current with HTML/CSS/JS in your PWA. + +**Web capabilities** + +The Chromium team is constantly improving the browser experience. You can track this progress in [Project Fugu][11], the overarching web capabilities project. WebKit also continually strives to improve its browser experience and capabilities. + +The Swift API can also interact with the WKWebView to enhance the native experience. + +Google has a service called Bubblewrap, which works with Trusted Web Activity (TWA). All this does is wrap your PWA-enabled website in a native APK bundle so you can submit it to the app store. This is how the PWA builder link mentioned above works for Android. You can learn all about WKWebView and TWA in my previous article. + +**Speed and performance** + +There are countless ways to improve your app's performance. Check out the [Google PageSpeed tools][12] to start. + +#### Benefits of using a PWA include the following: + +- Increased Lighthouse score and SEO. +- A single codebase. +- Frictionless testing. +- Instant feedback loop for development cycles. +- Use of managed PaaS web deployment workflows. +- Web technologies are a skill set for a wide array of developers. +- The only cross-platform development solution that delivers a full-fledged web experience. +- Unlimited options to customize a design without relying on a cross-platform framework's limited UI components. +- Reach users with limited (or no) internet connection. + +There are some drawbacks/caveats to using a PWA, including: + +- **Limited functionality**: There is still an "app gap" with PWAs compared to native device access. However, browsers have been making great progress toward closing this. Learn more about Project Fugu's take on bridging the app gap from [Thomas Steiner][13], and visit [What web can do][14] to see your browser's capabilities. When choosing your technology, there is a good chance your PWA project will be in the majority of apps that do not experience restrictions regarding capability/functionality. +- **Lack of standardization**: Thomas Steiner's interview above discusses a "PWA standard," which is currently lacking. In my opinion, it is the reason for much of the confusion around the topic and developers' difficulty getting past that first "aha moment." This confusion has led to slower momentum in technology than there should be. Also, because of this lack of clarity, marketing or management may not even know to ask for a PWA because they don't understand what it is. +- **iOS App Store**: App stores don't currently list PWAs, so they're harder to find than native apps. There are ways to do this. However, the key is to make your web app as good or a better experience than native. Do it right, and the Apple gods will smile upon you because the most important thing in reviews seems to be that you deliver a good mobile experience. Ionic, a framework utilizing WKWebView in native iOS apps before PWA was even a term, has some interesting insight [in their forums][15]. If you know what you are doing, this won't be a problem. You can see the "get your web app in the app stores" section of [my previous Opensource.com article][6] for more info. +- **Potential security issues in certain cases**: The browser uses cookies as authentication. A tried and true browser method to maintain state since its inception, this may not fit your project's needs. The browser has excellent password management and is constantly evolving and implementing other authentication methods, such as [Webauthn][16]. The use of [associated domains][17] provides another layer of security. + +I believe that compared to the alternatives, "the web is winning," and future progress will minimize these drawbacks as the web offers new capabilities. I don't think native development will disappear, but there will be more seamless integrations between WebView and native code. + +### Wrap up + +While PWAs are still in their early stages of development, they have the potential to revolutionize the way we use the web. Every day I see a new website pushing the limits of what a PWA can be. Whether the management knows they are building a PWA or not, I often come across web apps and dev teams that surprise me with how they expand the use of web technologies or pass on a native app in lieu of a well-optimized mobile website. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/pwa-web-browser + +作者:[Alex Borsody][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/alexborsody +[b]: https://github.com/lkxed +[1]: https://www.electronjs.org/ +[2]: https://web.dev/lighthouse-pwa/ +[3]: https://opensource.com/sites/default/files/2022-10/GoogleLighthouseScore.jpg +[4]: https://ctrl.carbonpay.io/user/login +[5]: https://www.drupal.org/project/pwa +[6]: https://opensource.com/article/22/6/drupal-pwa +[7]: https://opensource.com/sites/default/files/2022-10/GoogleServiceWorkers.jpg +[8]: https://opensource.com/sites/default/files/2022-10/GoogleManifest.jpg +[9]: https://hotwired.dev/ +[10]: https://docs.google.com/presentation/d/1D7-H7om4Ul6nFeIX2x1oSpKCvC7LRUP3uh0r7jM3IVs/edit#slide=id.g126166aeb51_2_271 +[11]: https://developer.chrome.com/blog/fugu-status/ +[12]: https://developers.google.com/speed +[13]: https://devm.io/javascript/project-fugu-interview-steiner-168988 +[14]: https://whatwebcando.today/ +[15]: https://forum.ionicframework.com/search?q=minimum%20functionality +[16]: https://webauthn.io/ +[17]: https://developer.apple.com/documentation/xcode/supporting-associated-domains diff --git a/sources/tech/20221026.1 ⭐️⭐️ Tips for using the Linux test command.md b/sources/tech/20221026.1 ⭐️⭐️ Tips for using the Linux test command.md new file mode 100644 index 0000000000..26fdd9970f --- /dev/null +++ b/sources/tech/20221026.1 ⭐️⭐️ Tips for using the Linux test command.md @@ -0,0 +1,170 @@ +[#]: subject: "Tips for using the Linux test command" +[#]: via: "https://opensource.com/article/22/10/test-command-linux" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Tips for using the Linux test command +====== + +The [ and test commands are vital conditional statements when scripting. + +The `[` command, often called a "test," is a command from the GNU Core Utils package, and initiates a conditional statement in Bash. Its function is exactly the same as the `test` command. When you want to execute a command only when something is either true or false, use the `[` or the `test` command. However, there's a significant difference between `[` or `test` and `[[`, and there's a technical difference between those commands and your shell's versions of them. + +### [ vs test commands in Linux + +The `[` and the `test` commands, installed by the GNU Core Utils package, perform the same function using a slightly different syntax. (You might find it difficult to search for documentation using the single left-square bracket character, however, so many users find `test` easier to reference.) Bash and similar shells happen to also have the `[` and the `test` commands built-in, and the built-in versions supersede the ones installed in `/usr/bin`. In other words, when you use `[` or `test`, you're probably not executing `/usr/bin/[` or `/usr/bin/test`. Instead, you're invoking what's essentially a function of your Bash shell. + +You might wonder why `[` or `test` exist in `/usr/bin` at all. Some shells, such as [tcsh][1], don't have `[` and `test` built-in, so if you want to use those commands in that shell, you must have them installed as separate binaries. + +The bottom line is that as long as you don't get an error when you type a command starting with `[` or `test`, then you've got everything you need. It almost never matters whether your shell or your `bin` directory is providing the commands. + +### Testing for a file + +It's common to want to know whether a file exists, often so you can confidently proceed with some action, or so you can avoid "clobbering" it with a file of the same name. In an interactive shell session, you can just look to see whether the file exists but in a shell script, you need the computer to determine that for itself. The `-e` option tests whether a file exists, but its apparent response is the same either way. + +``` +$ touch example +$ test-e example +$ test-e notafile +$ +``` + +The `[` and `test` commands are essentially switches. They emit a `true` or `false` response, but considers both of them as success. You can put this to use by pairing the commands with logical operators, such as `&&` and `||`. The `&&` operator is executed when a response is `true`: + +``` +$ touch example +$ test-e example &&echo"foo" +foo +$ test-e notafile &&echo"foo" +$ +``` + +The `||` operator executes when a response is `false`: + +``` +$ touch example +$ test-e example ||echo"foo" +$ test-e notafile ||echo"foo" +foo +$ +``` + +If you prefer, you can use square brackets instead of `test`. In all cases, the results are the same: + +``` +$ touch example +$ [-e example ] && echo "foo" +foo +$ [-e notafile ] && echo "foo" +$ +``` + +### Testing for file types + +Everything in Linux is a file, so when you can test for the existence of a directory with the `-e` option, the same way you test for a file. However, there are different kinds of files, and sometimes that matters. You can use `[` or `test` to detect a variety of different file types: + +- `-f`: regular file (returns `false` for a directory) +- `-d`: directory +- `-b`: block (such as `/dev/sda1`) +- `-L` or `-h`: symlink +- `-S`: socket + +There are more, but those tend to be the most common. + +### Testing for file attributes + +You can also look at metadata of a file: + +- `-s`: a file with the size greater than zero +- `-N`: a file that's been modified since it was last read + +You can test by ownership: + +- `-O`: a file owned by the current primary user +- `-G`: a file owned by the current primary group + +Or you can test by permissions (or file mode): + +- `-r`: a file with read permission granted +- `-w`: a file with write permission granted +- `-x`: a file with execute permission granted +- `-k`: a file with the sticky bit set + +### Combining tests + +You don't always just have to test for a single attribute. The `-a` option ("and") allows you to string several tests together, with the requirement that all tests return as `true`: + +``` +$ touch zombie apocalypse now +$ test-e zombie -a-e apocalypse -a-e now &&echo"no thanks" +no thanks +``` + +If any expression fails, then the test returns `false`: + +``` +$ touch zombie apocalypse now +$ test-e plant -a-e apocalypse -a-e now &&echo"no thanks" +$ +``` + +The `-o` option ("or") requires that one expression is true: + +``` +$ touch zombie apocalypse now +$ test-e zombie -o-e plant -o-e apocalypse &&echo"no thanks" +no thanks +``` + +### Integer tests + +You can also test integers. That's not necessarily directly useful (you probably inherently know that 0 is less than 1, for instance) but it's invaluable when you're using variables in a script. + +The operators are fairly intuitive once you understand the schema: + +- `-eq`: equal to +- `-ne`: not equal +- `-ge`: greater than or equal to +- `-gt`: greater than +- `-le`: less than or equal to +- `-lt`: less than + +Here's a simple example: + +``` +$ nil=0 +$ foo=1 +$ test$foo-eq$nil||echo"Those are not equal." +Those are not equal. +$ test$foo-eq1&&echo"Those are equal." +``` + +Of course, you can combine tests. + +``` +$ touch example +$ test$foo-ne$nil-a-e example -o-e notafile &&echo"yes"yes +``` + +### Testing testing + +The `[` and `test` commands are vital conditional statements when scripting. These are easy and common ways to control the flow of your code. There are yet more tests available than what I've covered in this article, so whether you used Bash, tcsh, ksh, or some other shell entirely, take a look at the man page to get the full spectrum of what these commands offer. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/test-command-linux + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/20/8/tcsh diff --git a/sources/tech/20221026.2 ⭐️ How To Monitor File Changes Using fswatch In Linux.md b/sources/tech/20221026.2 ⭐️ How To Monitor File Changes Using fswatch In Linux.md new file mode 100644 index 0000000000..49583bfc3a --- /dev/null +++ b/sources/tech/20221026.2 ⭐️ How To Monitor File Changes Using fswatch In Linux.md @@ -0,0 +1,250 @@ +[#]: subject: "How To Monitor File Changes Using fswatch In Linux" +[#]: via: "https://ostechnix.com/monitor-file-changes-using-fswatch-linux/" +[#]: author: "sk https://ostechnix.com/author/sk/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How To Monitor File Changes Using fswatch In Linux +====== + +**Fswatch** is a free, open source multi-platform file change monitor utility that notifies us when the contents of the specified files or directories are modified or changed. Using fswatch, we can easily monitor the changes being made in files and/or directories. It supports all operating systems, including GNU/Linux, *BSDs, Mac OS X, Solaris, and Microsoft Windows etc. In this brief guide, let me show you how to **monitor file changes using fswatch** in Linux and Unix-like operating systems. + +### Types of monitoring + +Fswatch implements the following types of monitors. + +- A monitor based on the File System Events API of Apple OS X. +- A monitor based on kqueue, a notification interface introduced in FreeBSD 4.1. +- A monitor based on the File Events Notification API of the Solaris kernel and its derivatives. +- A monitor based on inotify, a Linux kernel subsystem that reports file system changes to applications. +- A monitor based on ReadDirectoryChangesW, a Microsoft Windows API that reports changes to a directory. +- A monitor which periodically stats the file system, saves file modification times in memory, and manually calculates file system changes. + +### Features + +Concerning about the features of fswatch, we can list the following: + +- Cross-platform and open source utility. +- Support for many OS-specific APIs. +- Recursive directory monitoring. +- Path filtering using including and excluding regular expressions. +- Customizable record format. +- Support for periodic idle events. +- And many. + +### Install fswatch in Linux + +The fswatch utility is available in the default repositories of popular Linux distributions. + +To install fswatch in Debian, Ubuntu, Linux Mint, Pop OS, and other APT-based systems, run: + +``` +$ sudo apt install fswatch +``` + +To install fswatch in Fedora, RHEL, CentOS, AlmaLinux and Rocky Linux, **enable [EPEL] repository** using command: + +``` +$ sudo dnf install epel-release +``` + +And then install install fswatch using command: + +``` +$ sudo dnf install fswatch +``` + +To install fswatch in openSUSE, run: + +``` +$ sudo zypper install fswatch +``` + +#### Install fswatch from source + +If fswatch is not available for your distribution, you can manually compile and install the latest version from the source as described below. + +Before compiling, you need to **install Development tools** in your Linux distribution. To install Development tools on various Linux distributions, refer the following guide. + +- [**How To Install Development Tools In Linux**][1] + +Then, download the fswatch source file [**from here**][2]. + +``` +$ wget https://github.com/emcrisostomo/fswatch/releases/download/1.17.1/fswatch-1.17.1.tar.gz +``` + +Extract the downloaded tarball: + +``` +$ tar -zxvf fswatch-1.17.1.tar.gz +``` + +Go to the project's folder: + +``` +$ cd fswatch-1.17.1/ +``` + +Finally, compile and install fswatch by running the following commands one by one. + +``` +$ ./configure +``` + +``` +$ make +``` + +``` +$ sudo make install +``` + +Finally, run the following command to refresh the links and cache to the dynamic libraries: + +``` +$ sudo ldconfig +``` + +If you don't run the above command, you might get the following error in GNU/Linux systems. + +``` +fswatch: error while loading shared libraries: libfswatch.so.6: cannot open shared object file: No such file or directory +``` + +Finally, check the fswatch version to make sure if it is installed correctly: + +``` +$ **fswatch --version** +fswatch 1.17.1 +Copyright (C) 2013-2021 Enrico M. Crisostomo . +License GPLv3+: GNU GPL version 3 or later . +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. + +Written by Enrico M. Crisostomo. +``` + +### Install fswatch in FreeBSD + +On FreeBSD, fswatch can be installed using `pkg` as `root`: + +``` +# pkg install fswatch-mon +``` + +### Monitor file changes using fswatch in Linux + +Usage of fswatch is no big deal. The typical syntax of fswatch is: + +``` +$ fswatch [options] ... path-0 ... path-n +``` + +To test how fswatch works, open two Terminal windows (Let us call them **Terminal 1** and **Terminal 2**). + +In Terminal 1, run the fswatch command to monitor the **`$HOME`** directory. + +``` +$ fswatch /home/ostechnix/ +``` + +And, in the Terminal 2 do some operations such as creating files/folders, deleting files, and modifying files etc. + +Whatever you do in the terminal 2 will be notified on the Terminal 1. Have a look at the following screenshots. + +**Terminal 1** - fswatch command is running and the file changes are being monitored: + +![Monitor File Changes Using fswatch][3] + +Monitor File Changes Using fswatch + +**Terminal 2** - Do some random changes in files/folders: + +![Do random changes in files or folders][4] + +Do random changes in files or folders + +By default, fswatch will choose the best monitor available on the current platform, in terms of performance and resource consumption. In Linux, **the default monitor is inotify**. + +By default, fswatch will keep monitoring the file changes until you manually stop it by invoking **`CTRL+C`** keys. + +### List monitors + +To list the available monitors in the current platform (i.e Linux in our case), run: + +``` +$ fswatch -M +``` + +Or, + +``` +$ fswatch --list-monitors +``` + +**Sample output:** + +``` +inotify_monitor +poll_monitor +``` + +### Monitor specific file or folder + +To monitor a specific file or directory with a particular monitor option, run: + +``` +$ swatch -m kqueue_monitor /home/ostechnix/ +``` + +You can also exit fswatch after the first set of events is received by specifying the option **`-1`** as shown in the following command: + +``` +$ fswatch -1 /home/ostechnix/ +``` + +This command will exit just after the first set of events is received. + +fswatch will monitor changes in all files/folders in the specified path. If you want to watch the changes made in the directories only, use **`-d`** option. + +``` +$ fswatch -d /home/ostechnix/ +``` + +Of course, there are more options. Refer the man pages or the [**project's documentation page**][5] for detailed instructions. + +``` +$ man fswatch +``` + +**Resource:** + +- [**fswatch GitHub Repository**][6] + +Featured Image by [Pete Linforth][7] from [Pixabay][8]. + +-------------------------------------------------------------------------------- + +via: https://ostechnix.com/monitor-file-changes-using-fswatch-linux/ + +作者:[sk][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://ostechnix.com/author/sk/ +[b]: https://github.com/lkxed +[1]: https://ostechnix.com/install-development-tools-linux/ +[2]: https://github.com/emcrisostomo/fswatch/releases +[3]: https://ostechnix.com/wp-content/uploads/2022/10/Monitor-File-Changes-Using-fswatch.png +[4]: https://ostechnix.com/wp-content/uploads/2022/10/Do-random-changes-in-files-or-folders.png +[5]: https://emcrisostomo.github.io/fswatch/doc/ +[6]: https://github.com/emcrisostomo/fswatch +[7]: https://pixabay.com/users/thedigitalartist-202249/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=3376230 +[8]: https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=3376230 diff --git a/sources/tech/20221026.3 ⭐️⭐️ Ubuntu Unity 22.10 Review A Promising “Official” Start.md b/sources/tech/20221026.3 ⭐️⭐️ Ubuntu Unity 22.10 Review A Promising “Official” Start.md new file mode 100644 index 0000000000..7c3ed35f1f --- /dev/null +++ b/sources/tech/20221026.3 ⭐️⭐️ Ubuntu Unity 22.10 Review A Promising “Official” Start.md @@ -0,0 +1,130 @@ +[#]: subject: "Ubuntu Unity 22.10 Review: A Promising “Official” Start" +[#]: via: "https://www.debugpoint.com/ubuntu-unity-22-10-review/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Ubuntu Unity 22.10 Review: A Promising “Official” Start +====== + +**We review Ubuntu Unity 22.10, which becomes an official Ubuntu flavour from this release onwards.** + +For the fans of Unity desktop, it’s a piece of good news. Ubuntu Unity 22.10 Kinetic Kudu became the official Ubuntu flavour featuring Unity desktop after Canonical officially abandoned it on April 2018. You can now enjoy the officially supported Unity desktop with an Ubuntu base. + +That means you get the usual security and package updates following the Ubuntu release schedule. + +I did a hands-on on the official Ubuntu Unity desktop, and here’s what I found. + +![Ubuntu Unity 22.01 Login Screen][1] + +Ubuntu Unity 22.01 Login Screen + +### Ubuntu Unity 22.10 Review + +At its core, Ubuntu Unity 22.10 features Linux Kernel 5.19, and the core modules are aligned with Ubuntu 22.10. The desktop version is Unity 7, which is the current stable version. + +However, its successor UnityX is still under development for more than a year, so hopefully, you will get a more advanced Unity desktop in the future. + +#### First look and themes + +At first glance, you should notice the purple-based Ubuntu Unity with the Kinetic Kudu mascot. The left bar is static and includes only the essential items (LibreOffice & Settings). The shortcut to global search is at the top of the sidebar. The top bar contains the power menu, network, calendar and time widgets. And the Trash shortcut is at the bottom of the left bar. + +![Unity Global Search][2] + +Unity Global Search + +The default theme is Yaru dark with a purple-based colour combination. Which I believe doesn’t look good with orange borders in several controls (text box, etc.). In addition, the Yaru and Yaru dark both are strict light and dark themes. That means you can’t have a mix of a light theme with a dark title bar. + +However, the team also includes the good ol’ Ambiance and Radiance themes which you can easily apply with the Unity Tweak Tool (requires installation) – this would give you the good ol’ Ubuntu feel. + +![Yaru Dark Theme in Ubuntu Unity 22.10][3] + +Yaru Dark Theme in Ubuntu Unity 22.10 + +![Ambiance theme brings back the old days][4] + +Ambiance theme brings back the old days + +The main attraction of Unity is two significant items. The global search via HUD and the global menu at the top bar. In this release, you get both of them. This is an ideal desktop for those who want clean app windows and more screen space. + +![Unity Global search inside app options][5] + +Unity Global search inside app options: one of the best features of Unity + +Furthermore, a new feature adds a tweak at the top bar where you can switch the themes without launching the Unity Tweak tool. However, this option is only visible for the Yaru theme for some strange reason. + +![New option to switch accent color and theme][6] + +New option to switch accent colour and theme + +#### Applications + +If you are new to Ubuntu Unity, you should know that this distro doesn’t have any native apps of its own. It ships basic apps, which most users need. + +However, there is a change in the 22.10 version. Earlier (when it was unofficial), Ubuntu Unity was shipping some GNOME Apps as default. Since the implementation of libadwaita and moving to GTK4, the team now replaced most of them with the native-MATE applications. For example, the Pluma text editor from MATE is now part of Unity. + +Other than that, Firefox Snap and Thunderbird [email client][7] is added as default, also LibreOffice suite. + +Thanks to the above apps, the ISO size is less than 3 GB, and performance is way faster. + +### Performance + +Overall, Ubuntu Unity 22.10 performance is speedy. Both in idle and heavy workload state. There are no fancy animations other than the places where it is needed. The HUD search is fast, and you can launch apps right away. + +In addition, window operations such as minimize, maximize, and drag feel snappy. There is no lag whatsoever. At idle, it uses 1GB of memory. In a heavy workload state, it increases up to 2.2GB, based on how many apps you are running. + +![Ubuntu Unity performance at idle state][8] + +Ubuntu Unity performance at idle state + +Ubuntu Unity is really outperforming vanilla Ubuntu. It feels faster than vanilla GNOME with Ubuntu. It might be one of the contenders for lightweight Linux distros in the coming days. + +However, the default installation takes 12 GB of disk space – which I believe is a little higher than other distros in the same category. + +### Summary + +- Linux Kernel 5.19 with Ubuntu 22.10 base +- Firefox 106 web browser (Snap) +- Flatpak is not installed by default +- Unity 7 desktop +- Nemo file manager +- Pluma text editor (1.26) +- LibreOffice 7.4 +- Thunderbird 102. +- Only available as X.Org (not yet ready for Wayland) + +### Wrapping Up + +Ubuntu Unity 22.10, being official, is a promising start for the Unity desktop to become more mature. From the development viewpoint, a colossal amount of work awaits to make it to UnityX (the next version of 7). Also, it only supports X.Org and no Wayland at the moment. Wayland might be a deal breaker for some users to adopt this as a daily driver for performance-centric workloads. + +That being said, Ubuntu Unity 22.10 is perfect for the average user for everyday work and perfect for smaller display form factors. If you like the Unity design, HUD search, global menu, and left action buttons – then it’s for you. + +Give it a try. + +You can download Ubuntu Unity 22.10 on the [official website][9]. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/ubuntu-unity-22-10-review/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/10/Ubuntu-Unity-22.01-Login-Screen-1024x638.jpg +[2]: https://www.debugpoint.com/wp-content/uploads/2022/10/Unity-Global-Search.jpg +[3]: https://www.debugpoint.com/wp-content/uploads/2022/10/Yaru-Dark-Theme-in-Ubuntu-Unity-22.10.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2022/10/Ambiance-theme-brings-back-the-old-days.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2022/10/Unity-Global-search-inside-app-options.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2022/10/New-option-to-switch-accent-color-and-theme.jpg +[7]: https://www.debugpoint.com/best-email-client-linux-windows/ +[8]: https://www.debugpoint.com/wp-content/uploads/2022/10/Ubuntu-Unity-performance-at-idle-state.jpg +[9]: https://cdimage.ubuntu.com/ubuntu-unity/releases/kinetic/release diff --git a/sources/tech/20221027.1 ⭐️⭐️ Trick Lua into becoming an object-oriented language.md b/sources/tech/20221027.1 ⭐️⭐️ Trick Lua into becoming an object-oriented language.md new file mode 100644 index 0000000000..9466a33ab1 --- /dev/null +++ b/sources/tech/20221027.1 ⭐️⭐️ Trick Lua into becoming an object-oriented language.md @@ -0,0 +1,150 @@ +[#]: subject: "Trick Lua into becoming an object-oriented language" +[#]: via: "https://opensource.com/article/22/10/object-oriented-lua" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Trick Lua into becoming an object-oriented language +====== + +Lua isn't an object-oriented programming language. Here's a hack to use a Lua table as a stand-in for an object-oriented class. + +Lua isn't an object-oriented programming language, but a scripting language utilizing C functions and a C-like syntax. However, there's a cool hack you can use within Lua code to make Lua act like an object-oriented language when you need it to be. The key is in the Lua table construct, and this article demonstrates how to use a Lua table as a stand-in for an object-oriented class. + +### What is object-oriented programming? + +The term "object-oriented" is a fancy way of describing, essentially, a templating system. Imagine you're programming an application to help users spot and log zombies during a zombie apocalypse. You're using an object-oriented language like C++, [Java][1], or [Python][2]. You need to create code objects that represent different types of zombies so the user can drag them around and arrange them on a map of the city. Of course a zombie can be any number of things: dormant, slow, fast, hungry, ravenous, and so on. That's just textual data, which computers are good at tracking, and based on that data you could even assign the virtual "object" a graphic so your user can identify which general type of zombie each widget represents. + +You have a few options for how you can resolve this requirement for your application: + +- Force your users to learn how to code so they can program their own zombies into your application +- Spend the rest of your life programming every possible type of zombie into your application +- Use a code template to define the attributes of a zombie object, allowing your users to create just the items they need, based on what zombie they've actually spotted + +Obviously, the only realistic option is the final one, and it's done with a programming construct called a class. Here's what a class might look like (this example happens to be Java code, but the concept is the same across all object-oriented languages): + +``` +publicclass Zombie { +int height; +int weight; +[String][3] speed; +[String][3] location; +} +``` + +Whether or not you understand the code, you can probably tell that this is essentially a template. It's declaring that when a virtual "object" is created to represent a zombie, the programming language assigns that object four attributes (two integers representing height and weight, and two words representing the movement speed and physical location). When the user clicks the (imaginary) **Add item** button in the (imaginary) application, this class is used as a template (in programming, they say "a new instance" of the class has been created) to assign values entered by the user. Infinite zombies for the price of just one class. That's one of the powers of object-oriented programming. + +### Lua tables + +In Lua, the table is a data type that implements an associative array. You can think of a table in Lua as a database. It's a store of indexed information that you can recall by using a special syntax. Here's a very simple example: + +``` +example = {} + +example.greeting = "hello" +example.space = " " +example.subject = "world" + +print(example.greeting .. + example.space .. + example.subject) +``` + +Run the example code to see the results: + +``` +$ lua ./example.lua +hello world +``` + +As you can tell from the sample code, a table is essentially a bunch of keys and values kept within a single collection (a "table"). + +### Lua metatable + +A metatable is a table that serves as a template for a table. You can designate any table as a metatable, and then treat it much as you would a class in any other language. + +Here's a metatable to define a zombie: + +``` +Zombie = {} + +function Zombie.init(h,w,s,l) + local self = setmetatable({}, Zombie) + self.height = h + self.weight = w + self.speed = s + self.location = l + return self +end + +-- use the metatable + +function setup() + z1 = Zombie.init(176,50,'slow','Forbes & Murray Avenue') +end + +function run() + print(z1.location .. ": " .. + z1.height .. " cm, " .. z1.weight .. " kg, " .. z1.speed) +end + +setup() +run() +``` + +To differentiate my metatable from a normal table, I capitalize the first letter of its name. That's not required, but I find it a useful convention. + +Here's the results of the sample code: + +``` +$ lua ./zombie.lua +Forbes & Murray Avenue: 176 cm, 50 kg, slow +``` + +This demonstration doesn't entirely do metatables justice, because the sample code creates just a single object with no interaction from the user. To use a metatable to satisfy the issue of creating infinite items from just one metatable, you would instead code a user input function (using Lua's `io.read()` function) asking the user to provide the details of the zombie they spotted. You'd probably even code a user interface with a "New sighting" button, or something like that. That's beyond the scope of this article, though, and would only complicate the example code. + +### Creating a metatable + +The important thing to remember is that to create a metatable, you use this syntax: + +``` +Example = {} + +function Example.init(args) + local self = setmetatable({}, Example) + self.key = value + return self +end +``` + +### Using a metatable + +To use a metatable once it's been created, use this syntax: + +``` +my_instance = Example.init("required args") +``` + +### Object-oriented Lua + +Lua isn't object-oriented, but its table mechanism makes handling and tracking and sorting data as simple as it possibly can be. It's no exaggeration to say that once you're comfortable with tables in Lua, you can be confident that you know at least half of the language. You can use tables (and, by extension, metatables) as arrays, maps, convenient variable organization, close-enough classes, and more. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/object-oriented-lua + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/21/3/java-object-orientation +[2]: https://opensource.com/article/19/7/get-modular-python-classes +[3]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string diff --git a/sources/tech/20221027.11 ⭐️ Customize GNOME Desktop in Ubuntu with a Clean Look.md b/sources/tech/20221027.11 ⭐️ Customize GNOME Desktop in Ubuntu with a Clean Look.md new file mode 100644 index 0000000000..98c4337ab5 --- /dev/null +++ b/sources/tech/20221027.11 ⭐️ Customize GNOME Desktop in Ubuntu with a Clean Look.md @@ -0,0 +1,173 @@ +[#]: subject: "Customize GNOME Desktop in Ubuntu with a Clean Look" +[#]: via: "https://www.debugpoint.com/customize-gnome-clean-look-2022-1/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Customize GNOME Desktop in Ubuntu with a Clean Look +====== + +**This tutorial gives you some easy steps to customize GNOME Desktop with a clean look with minimal effort. Here’s how.** + +If you are bored with the usual look of your favourite GNOME Desktop, then you are on the right page. Let’s install some themes icons and do some tweaks to uplift your desktop. We will transform this below desktop (GNOME 40.5 with Ubuntu 21.10). + +![Ubuntu Desktop with GNOME - Before Customization][1] + +Ubuntu Desktop with GNOME – Before Customization + +This customization session will use the great-looking Colloid GTK theme, Mkos-Big-Sur icons, a cool cursor theme with additional extensions, and Conky. + +### Customize GNOME Desktop and uplift it with a Clean Look + +#### Installation + +- First, setup the GNOME Shell Extenstion by running the following command from the terminal. + +``` +sudo apt install chrome-gnome-shell +``` + +- Then[open this page][2] and add the plugin to your browser (Chrome/Firefox) for GNOME Extension. + +![Add Browser Add-on for GNOME Shell Extension][3] + +Add Browser Add-on for GNOME Shell Extension + +- Install the Extensions Flatpak application which you may need to change settings of GNOME Extensions. + +[Install Extensions App][4] + +- After that, install GNOME Tweaks tool using the following command from the terminal. We will use this utility to change the Themes and other settings. + +``` +sudo apt install gnome-tweaks +``` + +- Download the Colloid GTK Theme from the below link. After download extract the files. Then copy the extracted folder to ~/.themes in your home directory. If the folder doesn’t exists, create it. After you done this, open a terminal and run the `install.sh` file. + +[Download Colloid GTK Theme][5] + +- Download the Mkos-Big-Sur icon theme from the below link. Once it is downloaded, extract the files and copy the parent folder to ~/.icons in your home directory. + +[Download Icon theme][6] + +- Download the below cursor theme and follow the same steps as above. Copy the extracted folder to the ~/.icons directory. Then open a terminal and run the `install.sh` file. + +[Download Cursor Theme][7] + +Now, it’s time to install Conky and some extensions that would eventually give your GNOME Desktop a clean look. To install Conky and a Conky manager, open the terminal prompt and run the below commands. + +``` +sudo apt install conky +``` + +``` +sudo add-apt-repository ppa:tomtomtom/conky-managersudo apt update && sudo apt install conky-manager2 +``` + +Now, open each of the below links for the extensions and install them in sequence. To install, open the page and click on the ON/OFF toggle switch (see below image). It would ask for your admin password and permission to install. + +- [Move Clock][8] +- [Dash to Dock][9] +- [Tray Icons][10] +- [Arc Menu][11] +- [User Themes][12] + +![GNOME Extension - Page][13] + +GNOME Extension – Page + +#### Configurations + +After completing the above steps, it’s time to do some basic configurations. You may see some of the changes when you installed the GNOME Extensions above. For example, the clock should already be shifted to the right side when installing the Move Clock extension above. + +**Tweaks** + +- Open the Tweaks tool (search from the application menu) and go to Apperance. + +- Change the Application theme to **Colloid Dark**, Cursors as **Vimix Cursors**, Icons as **Mkos-big-sur**and Shell Theme as **Colloid Dark**. If you want, you can choose the light theme and different option. + +![Apply Themes][14] + +Apply Themes + +**Arc Menu** + +- Open the Extenstion application and go to the Arch Menu Settings. + +- Change the menu layout to `Alternative Menu Layout > Raven`. + +- Change the application menu button to some icons you prefer. For this guide, I have downloaded a GNOME icon from [here][15]. And applied it via Arc Menu `Settings > Button Appearance > Browse Icon`. And it should look like this. + +![Arch Menu - Raven][16] + +Arch Menu – Raven + +- Enable Shrink the dash +- Customize windows counter indicator = Dashes +- Enable Customize Dash color +- Customize Opacity = Fixed +- Opacity to 12% + +- Open Dash to Dock settings from the Extension application. In the Appearance tab, change the below items: + +- In the position and size tab, change the Dock position to bottom and Icon size limit to 39px. + +- You can start Conky if you like and download a nice wallpaper which goes with Colloid theme. For this demonstration I have [chosen a nice grey-ish wallpaper][17] which looks stunning with the dark theme. + +### Result + +After all the configuration, and if all goes well, your desktop should look like this. + +![GNOME Customization in Ubuntu with a clean look-1][18] + +GNOME Customization in Ubuntu with a simple look-1 + +![GNOME Customization in Ubuntu with a clean look-2][19] + +GNOME Customization in Ubuntu with a simple look-2 + +![GNOME Customization in Ubuntu with a clean look-3][20] + +GNOME Customization in Ubuntu with a simple look-3 + +You can play around with different variants of this theme with several combinations of settings. And create a look that suits you better. + +I hope this guide helps you transform your GNOME desktop with a clean look. Let me know in the comments down below if you like this setup. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/customize-gnome-clean-look-2022-1/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/03/Ubuntu-Desktop-with-GNOME-Before-Customization.jpg +[2]: https://extensions.gnome.org/ +[3]: https://www.debugpoint.com/wp-content/uploads/2022/03/Add-Browser-Add-on-for-GNOME-Shell-Extension.jpg +[4]: https://dl.flathub.org/repo/appstream/org.gnome.Extensions.flatpakref +[5]: https://github.com/vinceliuice/Colloid-gtk-theme/archive/refs/heads/main.zip +[6]: https://github.com/zayronxio/Mkos-Big-Sur/archive/refs/heads/master.zip +[7]: https://github.com/vinceliuice/Vimix-cursors +[8]: https://extensions.gnome.org/extension/2/move-clock/ +[9]: https://extensions.gnome.org/extension/307/dash-to-dock/ +[10]: https://extensions.gnome.org/extension/2890/tray-icons-reloaded/ +[11]: https://extensions.gnome.org/extension/3628/arcmenu/ +[12]: https://extensions.gnome.org/extension/19/user-themes/ +[13]: https://www.debugpoint.com/wp-content/uploads/2018/05/GNOME-Extension-Page.png +[14]: https://www.debugpoint.com/wp-content/uploads/2022/03/Apply-Themes.jpg +[15]: https://icons.iconarchive.com/icons/tatice/operating-systems/32/Gnome-icon.png +[16]: https://www.debugpoint.com/wp-content/uploads/2022/03/Arch-Menu-Raven.jpg +[17]: https://i.redd.it/1ttvv79apo851.png +[18]: https://www.debugpoint.com/wp-content/uploads/2022/03/GNOME-Customization-in-Ubuntu-with-a-simple-look-1.jpg +[19]: https://www.debugpoint.com/wp-content/uploads/2022/03/GNOME-Customization-in-Ubuntu-with-a-simple-look-2.jpg +[20]: https://www.debugpoint.com/wp-content/uploads/2022/03/GNOME-Customization-in-Ubuntu-with-a-simple-look-3.jpg diff --git a/sources/tech/20221027.7 ⭐️⭐️ Mabox Linux – Beautiful Arch Linux with Openbox [Review].md b/sources/tech/20221027.7 ⭐️⭐️ Mabox Linux – Beautiful Arch Linux with Openbox [Review].md new file mode 100644 index 0000000000..bd72e0caf1 --- /dev/null +++ b/sources/tech/20221027.7 ⭐️⭐️ Mabox Linux – Beautiful Arch Linux with Openbox [Review].md @@ -0,0 +1,139 @@ +[#]: subject: "Mabox Linux – Beautiful Arch Linux with Openbox [Review]" +[#]: via: "https://www.debugpoint.com/mabox-linux-2022/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Mabox Linux – Beautiful Arch Linux with Openbox [Review] +====== + +**Mabox Linux is a Manjaro Linux re-spin with a lightweight Openbox window manager, ready to use with pre-configured themes and utilities. We review the distribution in this post.** + +If you love window manager, rolling-release-based Arch Linux and are looking for a ready-made Linux distribution with this combination, try Mabox Linux. The Mabox Linux is built on top of the great Manjaro Linux with Openbox Window manager and several native utilities. + +Thanks to the Openbox, this Linux distribution is super-lightweight in resource consumption while being a beautiful desktop for everyone to use. The Mabox Linux tools adapted from BunsenLabs and inspired by Crunchbang brings some of their applications. + +Let’s do a deep dive on this awesome Linux Distribution. + +### Mabox Linux Review + +#### Installation and Live Medium + +One of the advantages of Mabox .ISO is it provides you free and proprietary drivers both the options during the LIVE medium boot process. This helps if you have NVIDIA or other hardware in the system. + +The LIVE desktop lets you install Mabox via the Calamares installer. The installation takes around 3 to 4 minutes on standard hardware, and it is error-free in my test. + +The installer is managed to detect the other operating systems in the test device. + +#### Look and Feel with Customization + +Mabox brings a pre-configured Openbox window manager. The stock version looks nice with dark skin and a menu with panels. + +The top panel is built using Tint2 and split into two sections. And Left panel gives you shortcuts to the main menu, file manager, web browser. Also, the panel have a different menu for the left and right-click mouse button. The right panel contains a resource monitor, volume control, screenshot shortcut and power menu. The top panel is not continuous and stay on top for application windows for certain themes. + +![Mabox Linux with Nord Theme][1] + +Mabox Linux with Nord Theme + +At the right section of the desktop, the pre-configured Conky script gives you system information with date, time, storage and other displays. + +The welcome window gives you quick start shortcuts on settings, help and support with links to documentation. + +The window managers are keyboard friendly and sometimes have trouble with the Mouse. But thanks to Openbox and pre-configured Mabox, you can easily use Mouse while increasing your productivity with nifty keyboard shortcuts. + +The right-click menu on the desktop gives you easily search and launch options. + +![Search and Launch from desktop][2] + +Search and Launch from desktop + +If you do not like the default look, you can customize it on your own with just a few clicks via Openbox and Tint2 panel configuration tool. + +![Main Application Menu][3] + +Main Application Menu + +Mabox has different themes as pre-set, including Panel and Concky scripts. You can click and apply with these stunning Mabox themes. It is one of the excellent features if you do not want to get into the hassles of configuring the panels, colours and Conky on your own. + +A good set of nice wallpaper gives you the flexibility to make it look more fabulous in no time. + +![Mabox Themes][4] + +Mabox Themes + +#### Applications + +Mabox Linux packages all necessary applications in its installer image. Here is a quick list of essential applications that are included. + +- Terminal – terminator +- Xpad – quick text pad +- File manager – PCManFM +- FSearch for desktop file search +- Flameshot screenshot utility +- Geany text editor +- Audacious music player +- Firefox web browser + +Mabox also includes its control centre to manage your system effectively. Mabox control center gives you the option to add/remove applications, update your system, launch several configuration windows for window manager components and many such options. + +If you cannot find any settings, you can easily find them in the Mabox control center via its logical grouping of system settings. + +![Mabox Control Center][5] + +Mabox Control Center + +#### What about the performance? + +The performance of Mabox Linux is super impressive. Thanks to the Openbox window manager, Mabox only uses around 350+ MB of RAM while the CPU hovers at 2% to 3% during the idle state. + +The default installation takes around 5.39 GB of disk space which is unbelievable with all these applications and settings programs pre-installed. + +It is so optimized that the highest app consuming more memory is Xorg with 90 MB. + +So, I thought of trying out heavy usage performance. And that performance is also surprising. I opened a file manager, Firefox, with three tabs, one text editor for development, a terminal window and the Control Center. With this workload, Mabox only consumes around 920 MB of memory and CPU at 6% to 7%. + +![Mabox Linux Heavy Workload Performance][6] + +Mabox Linux Heavy Workload Performance + +During the [review of several distributions][7], this is the first time I found a distro that did not cross 1 GB of memory during a heavy workload. But the results may vary in different use cases. Still, the metric is impressive. + +### Can Mabox Linux be used as daily driver? + +If you are familiar and comfortable with Arch Linux with the window manager, you can use Mabox Linux as a daily driver. A few well-packaged Arch Linux distros are available with a window manager, and Mabox is one of the best. + +![Mabox Linux Windows 95 preconfigured theme][8] + +Mabox Linux Windows 95 pre-configured theme + +### Summary + +I think the Mabox Linux team did a great job packaging all the components with Arch Linux and presented with a nice Linux Distribution. It does look stunning while consuming very few system resources. With the power of rolling-release based Arch Linux, I think you can trust this distro for long term usage. + +You can download Mabox Linux from its [official webpage][9]. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/mabox-linux-2022/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/03/Mabox-Linux-with-Nord-Theme.jpg +[2]: https://www.debugpoint.com/wp-content/uploads/2022/03/Search-and-Launch-from-desktop.jpg +[3]: https://www.debugpoint.com/wp-content/uploads/2022/03/Main-Application-Menu.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2022/03/Mabox-Themes.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2022/03/Mabox-Control-Center.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2022/03/Mabox-Linux-Heavy-Workload-Performance.jpg +[7]: https://www.debugpoint.com/tag/linux-distro-review +[8]: https://www.debugpoint.com/wp-content/uploads/2022/03/Mabox-Linux-Windows-95-preconfigured-theme-1.jpg +[9]: https://maboxlinux.org/ diff --git a/sources/tech/20221027.9 ⭐️ Customize GNOME Desktop in Ubuntu with this Colorful Looks.md b/sources/tech/20221027.9 ⭐️ Customize GNOME Desktop in Ubuntu with this Colorful Looks.md new file mode 100644 index 0000000000..e0268948c1 --- /dev/null +++ b/sources/tech/20221027.9 ⭐️ Customize GNOME Desktop in Ubuntu with this Colorful Looks.md @@ -0,0 +1,159 @@ +[#]: subject: "Customize GNOME Desktop in Ubuntu with this Colorful Looks" +[#]: via: "https://www.debugpoint.com/customize-gnome-ubuntu-2020-2/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Customize GNOME Desktop in Ubuntu with this Colorful Looks +====== + +**The default GNOME desktop in Ubuntu can be customized in many ways. There are many available GTK and icon themes which you can easily apply and transform your daily driver desktop to a different look without losing performance and productivity.** + +In this guide, I will apply one icon theme on top of the [earlier customization][1] we did for GNOME. If you are trying to configure the GNOME desktop look from a stock Ubuntu installation you can follow the below guide step by step. + +![Customize GNOME in Ubuntu - 1][2] + +Customize GNOME in Ubuntu – 1 + +### Customize GNOME Desktop in Ubuntu + +To Customize GNOME Desktop in Ubuntu in this guide, you need to enable GNOME Extensions, install GNOME Tweaks. You can do both with these quick steps. + +#### Enable Ubuntu for GNOME Extensions + +Open Firefox and visit the official GNOME Extension page [here][3]. You can get a popup message at the top saying the steps. Follow the instructions to enable GNOME extensions for your browser. + +#### Install GNOME Tweak Tool + +To install the [GNOME Tweak Tool.][4] You can use Ubuntu Software to install Or, run below from the terminal. + +``` +sudo apt-get install gnome-tweaks +``` + +#### Install Extensions + +Open the [GNOME Extension website][3]. + +Then, install all the below extensions. Open the link and click on the “OFF” at the right side of the page button to enable and install respective extensions. + +- [Dash to panel][5] +- [Tray icons][6] +- [Open Weather][7] +- [User Themes][8] +- [Arc menu][9] + +Not all these GNOME Extensions require configurations. We will configure the Dash to Panel, Open Weather, Arc Menu. + +#### Configure Dash to Panel + +After installation, the Dash by default moves to the bottom of the screen. Right, click on the panel at the bottom and open ‘Dash to Panel Settings’. Change the below settings. + +**On the Position Tab** + +- Disable the Show Applications Button +- Move the Date menu after the System menu +- Change Desktop button width to 15px. +- Turn on the override panel theme background opacity. Give value to 50%. + +**On the style tab** + +- Change the running indicator style to dots. + +#### Configure Open Weather + +Change the display, City, and temperature unit if you like. + +#### Configure Arc Menu + +Open Arc Menu Settings + +**General Tab** + +- Choose Display Arc menu on Dash to panel. +- Choose Hot Key for Arc menu to Left Super key. + +**Menu Layout Tab** + +- Choose Modern menu layout to Redmond Menu Style + +![Arc Menu Settings][10] + +Arc Menu Settings + +**Menu Theme** + +- Choose the override menu theme. Keep the theme as default, or, you can change as you wish. + +**Button Appearance** + +- Change the icon to anyone. I have selected the Ubuntu icon. +- Change Icon size to 40px. + +#### Additional Configurations + +Open the GNOME Tweak tool and go to the Appearance tab. Choose Shell theme to Yaru Dark.Open Settings and change the Appearance to Dark. + +#### Configure Icons + +In this guide, I have used the “BeautyLine” icon theme which you can download from the below link. This icon theme has a distinct and bright look and available icon sets for almost all generic applications. Once you apply, the overall desktop looks more focused on the dark theme backdrop. + +[Download BeautyLine icon pack][11] + +Once downloaded, extract the file. Then copy the top-level folder ‘beautyline” to the `/usr/share/themes`. + +- Open GNOME Tweak tool +- Go to the Appearance tab +- Change the Icon to BeautyLine +- Change the cursor to White glass. + +#### Configure Wallpaper + +For this guide, I have used the “[GNOME AGAIN][12]” wallpaper. You can use any dark themed wallpaper of your choice. + +That’s all. + +If all goes well, your desktop should look like this. + +![Customize GNOME in Ubuntu - 2][13] + +Customize GNOME in Ubuntu – 2 + +If you do not want to customize more, simply apply the Icons and set the Ubuntu’s default Dark mode, your desktop still looks nice (see below). + +![GNOME Customization - Ubuntu - Default][14] + +GNOME Customization – Ubuntu – Default + +This is just a guide and outlining the settings. You can play around with many settings of Arc Menu and GNOME tweaks settings to make it more personalized for you. You can even apply many GTK3 icon themes or shell themes as well. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/customize-gnome-ubuntu-2020-2/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/2020/11/customize-gnome-ubuntu-2020/ +[2]: https://www.debugpoint.com/wp-content/uploads/2020/12/Customize-GNOME-in-Ubuntu-1.jpg +[3]: https://extensions.gnome.org/ +[4]: https://www.debugpoint.com/2018/05/customize-your-ubuntu-desktop-using-gnome-tweak/ +[5]: https://extensions.gnome.org/extension/1160/dash-to-panel/ +[6]: https://extensions.gnome.org/extension/1503/tray-icons/ +[7]: https://extensions.gnome.org/extension/750/openweather/ +[8]: https://extensions.gnome.org/extension/19/user-themes/ +[9]: https://extensions.gnome.org/extension/1228/arc-menu/ +[10]: https://www.debugpoint.com/wp-content/uploads/2020/11/Arc-Menu-Settings.jpg +[11]: https://www.gnome-look.org/p/1425426/ +[12]: https://www.gnome-look.org/p/1043483/ +[13]: https://www.debugpoint.com/wp-content/uploads/2020/12/Customize-GNOME-in-Ubuntu-2.jpg +[14]: https://www.debugpoint.com/wp-content/uploads/2020/12/GNOME-Customization-Ubuntu-Default.jpg diff --git a/sources/tech/20221029.0 ⭐️⭐️ 7 Best Open Source Web-based Email Clients.md b/sources/tech/20221029.0 ⭐️⭐️ 7 Best Open Source Web-based Email Clients.md new file mode 100644 index 0000000000..447635219d --- /dev/null +++ b/sources/tech/20221029.0 ⭐️⭐️ 7 Best Open Source Web-based Email Clients.md @@ -0,0 +1,241 @@ +[#]: subject: "7 Best Open Source Web-based Email Clients" +[#]: via: "https://itsfoss.com/open-source-web-based-email-clients/" +[#]: author: "Ankush Das https://itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +7 Best Open Source Web-based Email Clients +====== + +Email services are here to stay, even if decentralized tech takes over the internet. + +However, with big tech trying to control everything new aspect of emerging technologies, how can you take charge of your email service? + +Whether a business/enterprise or an individual, a self-hosted open-source webmail service is always an option worth considering. Your server, your digital infrastructure, and your email service platform. This way, you do not have to rely on a vendor or a third party to manage your email services. You do it your way. + +### Why Should You Self-Host an Email Service? + +![best opensource web based email clients 1][1] + +It is **not a one-click process** to self-host a service, which you can use as a web-based email client or sync with an email app. + +So, why bother? Can’t you use some of the [best privacy-focused email services][2] like [Proton Mail][3] and Tutanota? + +Well, yes, you can. + +But, for businesses and enterprises, some advantages of self-hosting webmail include: + +- **The user gets total control over email data.** +- **You get the ability to build your infrastructure that meets the requirements of your email services.** +- **It provides scalability for individuals, small businesses, and enterprises.** +- **You can create unlimited email accounts and email aliases.** +- **Users can easily apply advanced filters and other protection mechanisms without paying for a subscription.** + +Here, I list some of the best options that you can pick. + +### 1. Roundcube + +![roundcube screenshot][4] + +**Key Highlights:** + +- Good fit for desktop use +- Actively maintained +- Available with most server hosting providers +- Customizable UI +- PGP Encryption + +Roundcube is a popular PHP-based webmail software that provides all the essential features in a simple user interface. + +With most of the server hosting providers, you already get it pre-installed. You have to configure it for your domain or create email accounts to get started. + +You can also install it and customize it on your server. + +[Roundcube][5] + +### 2. Cypht + +![cypht inbox interface][6] + +**Key Highlights:** + +- Lightweight +- Modular + +Cypht is an interesting webmail solution that provides a combined view of multiple email accounts. + +While it is built with a modular approach, it is easy to add functionalities to your experience with plugins. + +Unlike others, you can also use it to add RSS feeds and utilize it as a newsreader. + +[Cypht][7] + +### 3. Squirrelmail + +![squirrelmail][8] + +**Key Highlights:** + +- Lightweight +- Stable +- PGP Encryption plugin support + +A classic PHP-based with IMAP and SMTP protocol support. It does not include many features, but it gets the basics right if you want lightweight and stable webmail software to host. + +While it looks like a barebone implementation, it has been around for a long time with features like address book, folder manipulation, and MIME support. + +It also comes bundled in with most web hosting providers. + +[Squirrelmail][9] + +### 4. Rainloop + +![rainloop][10] + +**Key Highlights:** + +- No database required +- Simple user interface +- Lightweight + +Rainloop is a straightforward email solution that supports IMAP and SMTP protocols. + +It also supports OpenPGP encryption. Unlike some others, it does not require a database. Direct access to the mail server is maintained without requiring storing anything locally on the web server. + +You can extend certain functionalities thanks to plugin support. + +[Rainloop][11] + +### 5. Horde + +![horde screeshot][12] + +**Key Highlights** + +- Bundled with web hosting providers +- Simple and feature-rich + +Horde is an open-source groupware webmail software that comes bundled with various web server hosting providers. It supports IMAP. + +I usually prefer Horde when accessing the webmail for my domains, which has never disappointed me. It offers a simple and effective user interface and many essential features. + +Like others, it is a PHP-based framework that makes it easy for developers to work with. + +[Horde][13] + +### 6. SOGo + +![sogo][14] + +**Key Highlights:** + +- Material design UI +- Outlook support +- Online demo available + +SOGo is a modern open-source solution that features Google’s material design UI with its email server. + +It includes support for calendar and address books while providing a friendly AJAX-based web interface. + +You also get support for Microsoft Outlook and ActiveSync, which lets you synchronize emails, contacts, events, and tasks seamlessly. An online demo is available for you to try. If it sounds good, you can download it for your server. + +Explore more about it on its [GitHub page][15]. + +[SOGo][16] + +### 7. Afterlogic WebMail Lite + +![afterlogic webmail][17] + +Key Highlights: + +- Enterprise support options are available +- Social sign-in support +- OpenPGP Encryption + +An interesting open-source webmail with plugin support. + +It supports authentication using external services as well. For instance, you can use your Google account to sign in to your email account. + +While you get all the features and OpenPGP encryption support with the open-source edition, you can choose to use it commercially as well. + +Additionally, you can opt for the pro version to get technical support, a priority fix, a personal calendar, a mobile version, and the ability to add multiple IMAP accounts. + +[Afterlogic WebMail Lite][18] + +### Interesting Mentions + +Several open-source projects are under active development that you can experiment with. + +Of course, we do not recommend using them for business or personal use. You can try them out to see if you want to contribute to their development in some way. + +I would like to mention a couple of such mail service projects. + +#### Mailpile + +While it deserves a spot in the list above, the development for [Mailpile][19] has halted until Python3 rewrite is complete. + +![mailpile][20] + +It is a fast and modern open-source webmail with encryption and privacy-centric features. + +#### Cuttlefish + +![cuttlefish][21] + +[Cuttlefish][22] is a free and open-source transactional email service. It aims to be an alternative to proprietary services like [SendGrid][23]. + +It is in its early stages of development. + +#### Pinbox + +A self-hosted webmail solution that gets its inspiration from Google Inbox. + +[Pinbox][24] a work in progress and needs a few prerequisites to make it work. + +### Wrapping Up + +Squirrelmail, Horde, and Roundcube remain of the most popular options that can be easily accessed with most hosting providers. + +Of course, these options are not always modern looking or have features like Google Workspace or even Zoho but you get enough to do the necessary emailing. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/open-source-web-based-email-clients/ + +作者:[Ankush Das][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/wp-content/uploads/2022/10/best-opensource-web-based-email-clients-1.png +[2]: https://itsfoss.com/secure-private-email-services/ +[3]: https://itsfoss.com/recommends/protonmail +[4]: https://itsfoss.com/wp-content/uploads/2022/10/roundcube-screenshot.png +[5]: https://roundcube.net +[6]: https://itsfoss.com/wp-content/uploads/2022/10/cypht_inbox_interface.png +[7]: https://cypht.org/index.html +[8]: https://itsfoss.com/wp-content/uploads/2022/10/squirrelmail.jpg +[9]: https://www.squirrelmail.org/ +[10]: https://itsfoss.com/wp-content/uploads/2022/10/rainloop.png +[11]: https://www.rainloop.net +[12]: https://itsfoss.com/wp-content/uploads/2022/10/horde-screeshot.png +[13]: https://www.horde.org +[14]: https://itsfoss.com/wp-content/uploads/2022/10/sogo.png +[15]: https://github.com/Alinto/sogo/ +[16]: https://www.sogo.nu +[17]: https://itsfoss.com/wp-content/uploads/2022/10/afterlogic-webmail.jpg +[18]: https://afterlogic.org/webmail-lite +[19]: https://www.mailpile.is +[20]: https://itsfoss.com/wp-content/uploads/2022/10/mailpile.png +[21]: https://itsfoss.com/wp-content/uploads/2022/10/cuttlefish.png +[22]: https://cuttlefish.io +[23]: https://sendgrid.com +[24]: https://github.com/msp301/pinbox diff --git a/sources/tech/20221029.1 ⭐️⭐️ Set up a Matrix to Discord bot.md b/sources/tech/20221029.1 ⭐️⭐️ Set up a Matrix to Discord bot.md new file mode 100644 index 0000000000..a101c437be --- /dev/null +++ b/sources/tech/20221029.1 ⭐️⭐️ Set up a Matrix to Discord bot.md @@ -0,0 +1,174 @@ +[#]: subject: "Set up a Matrix to Discord bot" +[#]: via: "https://opensource.com/article/22/10/matrix-discord-bot" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Set up a Matrix to Discord bot +====== + +Run a Python Matrix bot to bridge chat between a Matrix room and a Discord channel. + +Matrix is a popular [open source chat application][1] that makes it easy to chat securely with people all over the world. Similarly, Discord is a non-open source chat application that's also popular with many online communities. Discord, like Matrix, provides a chat client for all major platforms both mobile and desktop, so it's perfectly usable on Linux. However, it's not open source and so, given the choice, you might prefer to use Matrix. The good news is that when not given a choice for any reason, you can **also** use Matrix to interface with Discord by running a Matrix-to-Discord bridge. This article shows you how to set up and run a Python Matrix bot to bridge chat between a Matrix room and a Discord channel. + +### Requirements + +The bot demonstrated in this article is a "non-puppeting" bridge, meaning that it just copies ingoing and outgoing messages on one platform and sends it to the other. There are more advanced modes available, but those tend to require a self-hosted Matrix instance. The procedure for setting up the bot, however, is similar in both cases, so whether you're setting up a bridge service for your self-hosted Matrix server or just a puppeting bot for public instances, I assume you have at least: + +- A Matrix account and a Matrix client such as [Element][2]. +- A Discord account. +- A Linux or BSD server that can run the Python3 bot. I use a [Rev. 1 Raspberry Pi][3] with just a 700mHZ processor and 256 MB RAM, running NetBSD. You can run the bot locally, if you prefer, but I find it more convenient to run it as a persistent service so I don't miss messages that happen while I'm away. + +### Get the bot + +Download or clone [matrix-discord-bridge][4]. + +Change into its `bridge` directory and install its dependencies using [pip][5]: + +``` +$ python3 -m pip install-r requirements.txt +``` + +Run the bot to generate an empty configuration file: + +``` +$ python3 ./bridge.py +``` + +You now have a file called `config.json` in your current directory. It contains six key and value pairs. The rest of this article demonstrates how to obtain these values, but first an overview: + +The top three are for Matrix. + +- **homeserver**: The Matrix server you log in to +- **username**: Your Matrix login name +- **password**: Your Matrix password + +Two are for Discord: + +- **token**: A bot developer token obtained from Discord. +- **discord_cmd_prefix**: A character sequence you want to use as a shortcut for sending the bot commands through Discord. + +And the final one is for both: + +- **bridge**: The Discord "channel" ID and the Matrix "room" ID that you're bridging. This can contain more than one channel and room pair, so you can use just one bot to bridge several rooms. + +### Set up Matrix + +All you have to do to set up the Matrix side is open a Matrix account for your bot. + +Next, you need the ID of the room you want to bridge to Discord. To get a room ID, right-click on the room icon in the left panel of Element and select **Copy Link**. In the URL you've just copied, there's a semicolon. The room ID is the part on left of the semicolon, and the home server of that room is to the right. For example, suppose this is the URL you just copied: + +``` +https://matrix.to/#/!DEADBEEFzzzzABCDEF:matrix.org?via=matrix.org +``` + +The room ID is `!DEADBEEFzzzzABCDEF` and the home server is `matrix.org`. + +You can now add your Matrix details to the `config.json` file. For example: + +``` +"homeserver": "https://matrix.org", + "username": "@mybot:matrix.org", + "password": "myBadPassword1234", + "token": "", + "discord_cmd_prefix": "", + "bridge": { + "": "!DEADBEEFzzzzABCDEF:matrix.org" + } +} +---- +``` + +### Get a Discord token + +Assuming you already have an account on Discord, open a web browser and navigate to [discordapp.com/developers/applications][6]. Once you've logged in, click the **New Application** button in the **Applications** tab. + +Give your bot a name. For this example, I use `mybot`. + +After you've defined a bot, click on it and find the **Bot** category in the menu on the left. + +In the **Bot** panel, click the **Add Bot** button. Discord adds your bot to the panel, alerting you that "A wild bot has appeared!" in a message box. Under the name of your bot, there's a link to click to reveal your bot's token. Click the link and copy the token into your config file. + +``` +"token": "07c63.fb2823cG759.b20_852f337a6551bc", +``` + +### Set the bot command + +Choose a sequence of characters you want to use to issue commands to the bot in Discord. In the instance of a simple bridge, you may not have any commands you need to issue, so this value probably doesn't actually matter. I set it to `!b` but I've never used it. + +``` +"discord_cmd_prefix": "!b", +``` + +### Add your bot to Discord + +Now you must add your bot to the channel you want it to bridge. + +- Select **OAuth2** from the menu on the left, and then **URL Generator**.![Select URL Generator under the OAuth2 menu item.][7] +- In the **Scopes** section, select **bot** (and only **bot**). In the **Bot Permissions** section that appears under the **Scopes** section, activate all options under **Text Permissions**. +- Copy the URL displayed at the bottom of the panel, in the **Generated URL** field. + +Navigate to the URL you just copied, and add the bot to the channel. + +You're done with the Discord web interface, but now there's one more configuration option you need from the Discord app. + +### Get the Discord channel ID + +In **User Settings** of Discord (it's the gear icon next to your name on the desktop app), select **Advanced**. In the **Advanced** panel, activate **Developer Mode**. + +![Activate Developer Mode with the toggle switch in the top right corner of the Advanced panel.][8] + +With developer mode active, go to the channel you want to bridge. For instance, you might want to bridge Matrix to the **zombie apocalypse** channel on the **example** Discord server. First, join the **example** Discord server. Then right-click on text channel **#zombie apocalypse**, and select **Copy ID**. + +![Copy ID is at the bottom of the context menu][9] + +Paste the channel ID into the config file as the first value for **bridge**. Your full config file now contains: + +``` +"homeserver": "https://matrix.org", + "username": "@mybot:matrix.org", + "password": "myBadPassword1234", + "token": "07c63.fb2823cG759.b20_852f337a6551bc", + "discord_cmd_prefix": "!b", + "bridge": { + "1030287944604463185": "!DEADBEEFzzzzABCDEF:matrix.org" + } +} +``` + +### Bridge + +Your bot is now acting as a bridge, at least in theory. Some Discord channels start new users in a muted state, and they must be granted special permissions to interact. If the Discord channel you're bridging is strictly managed, then you may need to speak to a moderator or administrator and request special permissions for your bot. + +For your first attempt at setting this up, it's easiest to bridge a Discord server to a Matrix room that you control. That way, you can confirm that it works when unrestricted. After you've confirmed functionality, try adding it to a restricted channel. + +### Open source bridges another gap + +Open source does a lot of heavy lifting, including in the integration space. It's to the credit of both Matrix and Discord that they provide a robust bot ecosystem that's easy to learn and easy to use. It's to the credit of some resourceful open source developers that the two can be bridged. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/matrix-discord-bot + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/alternatives/slack +[2]: https://element.io +[3]: https://opensource.com/article/19/3/netbsd-raspberry-pi +[4]: https://github.com/git-bruh/matrix-discord-bridge +[5]: https://opensource.com/article/19/11/python-pip-cheat-sheet +[6]: https://discordapp.com/developers/applications/ +[7]: https://opensource.com/sites/default/files/2022-10/discord-oauth2.webp +[8]: https://opensource.com/sites/default/files/2022-10/discord-developer-mode.webp +[9]: https://opensource.com/sites/default/files/2022-10/discord-channel-id.webp diff --git a/sources/tech/20221030.1 ⭐️⭐️ 3 Best Free Photoshop Alternatives for Ubuntu and other Linux.md b/sources/tech/20221030.1 ⭐️⭐️ 3 Best Free Photoshop Alternatives for Ubuntu and other Linux.md new file mode 100644 index 0000000000..c8531f1390 --- /dev/null +++ b/sources/tech/20221030.1 ⭐️⭐️ 3 Best Free Photoshop Alternatives for Ubuntu and other Linux.md @@ -0,0 +1,160 @@ +[#]: subject: "3 Best Free Photoshop Alternatives for Ubuntu and other Linux" +[#]: via: "https://www.debugpoint.com/3-best-free-photoshop-alternatives-ubuntu-linux/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +3 Best Free Photoshop Alternatives for Ubuntu and other Linux +====== + +**We present three best Photoshop alternatives for Linux systems that are free and open-source.** + +Photoshop is a raster graphics image editor and manipulator developed by Adobe. This decade-old software is a de facto standard for the photographic industry. However, it is a paid product and doesn’t run on Linux. For many users in this industry, Photoshop is still costly and comes with a hefty subscription fee. Since it does not run on Linux, you must use Windows or macOS with additional free operating systems and hardware. + +As you can see, to use Photoshop, you end up paying additional fees, which are not even related to Photoshop. + +Though nothing technically replaces software, below are some free and open-source apps that come close to Photoshop in terms of its functionality. + +Also, all these three apps are available as Flatpak and Snap. So you can install it in any Linux distribution. + +### Best Photoshop Alternatives for Linux + +#### 1. GIMP + +[GIMP][1], aka GNU Image Manipulation Program, is the default and best image editor program available as free in Linux, Windows and Mac. GIMP is also as old as Photoshop regarding how long the software has been in the industry. + +GIMP is very active in the development, and each new release delivers the next set of improvements, keeping in line with the industry. + +![GIMP is one of the best Photoshop Alternative available for free][2] + +GIMP is one of the best Photoshop Alternative available for free + +Though some very advanced Photoshop features are not available in GIMP, GIMP can still match its features as closely as Photoshop. GIMP also supports scripting, which is a powerful feature of this application. GIMP is supported by a huge list of free plugins, such as GMIC for filters, which you can use to extend its features to a great extent. + +##### Key features of GIMP + +- 8-bit and 16-bit CMYK(A) TILL files support +- WebP image support +- JPEG XL, and BIGTIFF file support +- Configurable user interfaces with light/dark/system theme. +- Extensible layer options +- External add-on support +- Localized glyphs in the text tool + +##### How To Install + +GIMP is available as both Flatpak and Snap, which you can run in any Linux distribution. Download from the below links. I would recommend using Flatpak since it gets you the latest version of this app as soon as it releases. + +For Flatpak, [set up your system][3], and then run the below to install from the terminal. + +``` +flatpak install flathub org.gimp.GIMP +``` + +Also, for Snap installation, visit [this page][4]. + +For those who prefer the native apt package, you can run the following from the terminal to install it. + +``` +sudo apt install gimp +``` + +For Windows and Mac, visit [this page][5] for download options. + +#### 2. Inkscape + +[Inkscape][6] is a vector graphics editor for editing illustrations, logos and complex paintings. Though this app is mainly used to manipulate SVG diagrams, it can also be used for editing images and helping with certain functionalities of Photoshop. This can act as a lightweight alternative to Photoshop. + +![][7] + +##### Key features of Inkscape + +- Object creation and manipulation +- Freehand drawing, simple path, calligraphy support +- Wide variety of shape tools +- Text tools (multi-line text, full-on canvas) +- RGB, HSL, CYMK, CMS colour selector +- Gradient editor +- Nodes and paths +- Boolean operations +- Command line options + +##### How to Install + +Inkscape is available in Flatpak, Snap and native deb/RPM formats. For Flatpak installation, [set up your system to use Flatpak][3] and use the following command to install it. This is recommended way. + +``` +flatpak install flathub org.inkscape.Inkscape +``` + +For the Snap package, visit [this page][8]. + +If you prefer the native deb/rpm package, use the following commands to install it in Fedora and Ubuntu. + +``` +sudo apt install inkscape +``` + +``` +sudo dnf install inkscape +``` + +#### 3. Darktable + +[Darktable][9] is a photo editing and photo workflow application designed to handle raw photos. It can manage photos in a non-destructive way for post-production. + +Like Photoshop, it can also handle/edit raster graphics, and this app is beneficial to photographers who handle many photos for their workflow. + +You can find more darktable features [here][10]. + +##### How to Install + +Darktable is also available as both Flatpak and Snap. The recommended way is to use the Flatpak version. To do that, first [set up your system to use Flatpak][3]. Then run the following command. + +``` +flatpak install flathub org.darktable.Darktable +``` + +For Snap, visit [this page][11]. + +If you prefer the legacy way of installation, then follow the below commands via the terminal. You can also use the respective distro’s Software repo to install. + +``` +sudo apt install darktable +``` + +``` +sudo dnf install darktable +``` + +### Summary + +Photoshop is an amazing application and has become a standard today. However, I feel the above three free apps can somewhat be close to photoshop and act as the best photoshop alternatives for Linux systems. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/3-best-free-photoshop-alternatives-ubuntu-linux/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.gimp.org/ +[2]: https://www.debugpoint.com/wp-content/uploads/2018/09/GIMP-is-one-of-the-best-Photoshop-Alternative-available-for-free.jpg +[3]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[4]: https://snapcraft.io/gimp +[5]: https://www.gimp.org/downloads/ +[6]: https://gitlab.com/inkscape/inkscape +[7]: https://www.debugpoint.com/wp-content/uploads/2018/09/Inkscape-Running.png +[8]: https://snapcraft.io/inkscape +[9]: https://www.darktable.org/ +[10]: https://www.darktable.org/about/features/ +[11]: https://snapcraft.io/darktable diff --git a/sources/tech/20221031.1 ⭐️⭐️⭐️ 10 universal steps for open source code review.md b/sources/tech/20221031.1 ⭐️⭐️⭐️ 10 universal steps for open source code review.md new file mode 100644 index 0000000000..f432506bf1 --- /dev/null +++ b/sources/tech/20221031.1 ⭐️⭐️⭐️ 10 universal steps for open source code review.md @@ -0,0 +1,134 @@ +[#]: subject: "10 universal steps for open source code review" +[#]: via: "https://opensource.com/article/22/10/code-review" +[#]: author: "Martin Kopec https://opensource.com/users/martin-kopec" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +10 universal steps for open source code review +====== + +Code review doesn't have to be scary when you follow this universal process. + +Have you ever found yourself in a situation where you needed to do a code review but didn't fully understand the project? Maybe you did not review it to avoid looking like you didn't know what you were doing. + +This article assures you that there's a better way. You don't need to know everything to provide a code review. In fact, based on my experience, that's quite common. + +I remember when I joined Red Hat as an intern and was asked to help with code reviews. We used a system of +1 or -1 votes, and I was initially very hesitant to weigh in. I found myself asking whether when I gave a +1 on a change but then someone else voted -1, would I look foolish? + +What does happen if someone votes -1 on a change you've vote +1? The answer is nothing! You might have missed a detail that the other person noticed. It's not the end of the world. That's why we have this voting system. Like the rest of open source, merging code is a collaborative effort. + +Lately, I've been so inundated with code reviews that I can hardly keep up with them. I also noticed that the number of contributors doing these reviews steadily decreased. + +For this reason, I'm writing about my point of view on writing a code review. In this article, I'll share some helpful tips and tricks. I'll show you a few questions you should ask yourself and a few ideas of what to look for when doing a code review. + +### What is the purpose of a code review? + +Have you ever written a really simple patch? Something you think is so trivial that it doesn't require a review? Maybe you merged it straight away. Later, it turns out there was a mistake, something obvious or silly, like the wrong indentation or a few duplicated lines of code instead of a function call (yes, I'm speaking from experience!). + +A code review by someone else would have caught these things. + +The point of a code review is to bring a fresh pair of eyes with a new perspective on the problem you're trying to solve. That new context is exactly the reason a code review is crucial. + +You may think that you must be an expert in the language to review someone else's code, the project, or both. Here's a secret all code reviewers want you to know: That's wrong! You don't need to fully understand the project or the language to provide a fresh perspective on a change. There's a universal process of code review. + +### The universal process of a code review + +Here's my process for code review, grouped into a couple of points. The process provides questions I ask myself to help me focus on a code change and its consequences. You don't need to go in this specific order. If there's a step, you can't execute for any reason, just move to another step. + +### 1. Understand the change, what it's trying to solve, and why + +The explanation of why the change is needed and any relevant context should be in the commit message. If it isn't, request it and feel free to -1 until it's provided. + +Is it something that needs to be solved? Is it something the project should focus on, or is it completely out of scope? + +### 2. How would you implement the solution? Would it be different? + +At this point, you know what the code change is about. How would you have done it? Think about this before reviewing the change in detail. If the solution you have in mind is different from the one you're reviewing, and you think it's better, bring that up in the review. You don't need to -1 it; just ask why the author didn't go in this direction and see how the discussion evolves. + +### 3. Run the code with and without the change + +I usually put a few breakpoints into the code, run it, and inspect how the new code interacts with the rest. + +If you can't run the whole code, try to copy the function containing the new code to a new local file, simulate the input data, and run that. This is helpful when you either don't know how to run the whole project or when it requires a specific environment to which you don't have access. + +### 4. Can the new code break anything? + +I mean, really anything. Think about the consequences. + +In the case of a new command-line option, will it always be accepted by the target? + +Can a situation occur when the option wouldn't be accepted or when it could conflict with something? + +Maybe it's a new import. Is the new library, and possibly a new dependency, available in the older releases or systems you ship the project for? + +What about security? Is the new dependency safe to use? The least you can do is run a quick Internet search to find out. Also, look for warnings in the console log. Sometimes there are more secure methods within the same library. + +### 5. Is the code effective? + +You've determined that the proposed solution is probably correct. Now it's time to check the code itself, its effectiveness, and its necessity. + +Check the style of the new code. Does it match the style of the project? Any open source project has (or should have) a document informing (new) contributors about the styles and good practices the project follows. + +For instance, every project in the OpenStack community has a HACKING.rst file. There's often also [a guide for new contributors][1] with all the must-know information. + +### 6. Check that all new variables and imports are used + +Often, there have been many iterations of the code you're reviewing, and sometimes the final version is very different from when it started. It's easy to forget an import or a new variable that was needed in a former version of the new code. Automation usually checks these things using linting tools like [flake8][2] in the case of Python code. + +Can you rewrite the code without declaring new variables? Well, usually, yes, but the question is whether it's better that way. Does it bring any benefit? The goal isn't to create as many one-liners as possible. The goal is to write code that is both efficient and easy to read. + +### 7. Are the new functions or methods necessary? + +Is there a similar function that can be reused somewhere in the project? It's always worth helping to avoid reinventing the wheel and re-implementing logic that's already been defined. + +### 8. Are there unit tests? + +If the patch adds a new function or new logic in a function, it should also include new unit tests for that. It's always better when the author of a new function also writes unit tests for it. + +### 9. Verify refactoring + +If the commit refactors existing code (it renames a variable, changes variable scope, changes the footprint of a function by adding or removing arguments, or removes something), ask yourself: + +- Can this be removed? Will it affect the stable branch? +- Are all the occurrences deleted? + +You can use the [grep command][3] to find out. You wouldn't believe how many times I've voted -1 just because of this. This is a simple mistake that anyone can make, but that also means anyone can uncover it. + +The owner of the commit can easily overlook these things, which is totally understandable. It's happened to me many times too. I'd finally figured out the root of the problem I'd been fixing, so I was in a rush to propose the review, and then I forgot to check the whole repo. + +Apart from the project's repository, sometimes it's also necessary to check other code consumers. If some other project imports this one, they may need refactoring, too. In the OpenStack community, we have a tool that searches across every community project. + +### 10. Does project documentation need to be modified? + +Again, you can use the [grep command][4] to check whether the project documentation mentions anything related to the code change. Apply common sense to determine whether a change needs to be documented for end users or it's just an internal change that doesn't affect user experience. + +### Bonus tip: Be considerate + +Be considerate, precise, and descriptive if you make a suggestion or comment on something after you've reviewed the new code. Ask questions if you don't understand something. If you think the code is wrong, explain why you think so. Remember, the author can't fix it if they don't know what's broken. + +### Final words + +The only bad review is no review. By reviewing and voting, you provide your point of view and vote only for that. Nobody expects you to give the final yes or no (unless you're a core maintainer!), but the voting system allows you to provide your perspective and opinion. A patch owner will be glad you did it, trust me. + +Can you think of any other steps for a good review? Do you have any special technique different from mine? Let us all know in the comments! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/code-review + +作者:[Martin Kopec][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/martin-kopec +[b]: https://github.com/lkxed +[1]: https://docs.openstack.org/tempest/latest/contributor/contributing.html +[2]: https://opensource.com/article/19/5/python-flake8 +[3]: https://opensource.com/downloads/grep-cheat-sheet +[4]: https://www.redhat.com/sysadmin/how-to-use-grep diff --git a/sources/tech/20221031.2 ⭐️ How to View AVIF Images in Ubuntu and Other Linux Distributions.md b/sources/tech/20221031.2 ⭐️ How to View AVIF Images in Ubuntu and Other Linux Distributions.md new file mode 100644 index 0000000000..4c046a8533 --- /dev/null +++ b/sources/tech/20221031.2 ⭐️ How to View AVIF Images in Ubuntu and Other Linux Distributions.md @@ -0,0 +1,90 @@ +[#]: subject: "How to View AVIF Images in Ubuntu and Other Linux Distributions" +[#]: via: "https://itsfoss.com/view-avif-images-linux/" +[#]: author: "Abhishek Prakash https://itsfoss.com/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to View AVIF Images in Ubuntu and Other Linux Distributions +====== + +PNGs are the best when it comes to quality but they are huge in size and hence not ideal for websites. + +JPEGs reduce the file size but they reduce the quality of the images significantly. + +WebP is a relatively newer format that produces better-quality images with significantly smaller sizes. + +Now, [AVIF][1] is a new file format that compresses images without sacrificing quality. They are smaller than WebP for the same image quality. + +[Linux has started providing WebP support][2] recently. However, AVIF image format is not yet supported by default in many distributions. + +If you download an image in AVIF format from the web, it won’t display the thumbnail. + +![avif image no thumbnail][3] + +And if you try to open it with the default image viewer, it is likely to show ‘unrecognized image file format’ error. + +![avif images dont open linux][4] + +So, what’s the solution? Can you not view AVIF images on Linux at all? + +Nope, that’s not the case. There is always a workaround when it comes to Linux. + +### Viewing AVIF image files in Linux + +There is a handy [image viewer][5] called gThumb that can be used for opening AVIF images on Linux. + +It should be available in the repositories of most Linux distributions, if not all. + +On Ubuntu and Debian-based distributions, use the following command to install gThumb. + +``` +sudo apt install gthumb +``` + +![install gthumb ubuntu][6] + +Once installed, select an AVIF image, right-click on it and select “Open With” option. Here, select gThumb, make it default for AVIF images and open it. + +![make gthumb default for avif][7] + +gThumb shows all the images from the same folder in thumbnail format under the opened image. + +![avif image opened with gthumb in linux][8] + +Once you open AVIF images with gThumb, they should also be displayed with thumbnails. + +![avif image thumbnail][9] + +That’s it. You can now enjoy AVIF images on your Linux desktop. + +### Conclusion + +gThumb is an extremely versatile and capable application. It makes me wonder why it is not used as the default image viewer in GNOME or other desktop environments and distributions. + +And about default AVIF support in Linux, sooner or later it will be added. For now, gThumb does the job. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/view-avif-images-linux/ + +作者:[Abhishek Prakash][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/ +[b]: https://github.com/lkxed +[1]: https://aomediacodec.github.io/av1-avif/ +[2]: https://itsfoss.com/webp-ubuntu-linux/ +[3]: https://itsfoss.com/wp-content/uploads/2022/10/avif-image-no-thumbnail.png +[4]: https://itsfoss.com/wp-content/uploads/2022/10/avif-images-dont-open-linux.png +[5]: https://itsfoss.com/image-viewers-linux/ +[6]: https://itsfoss.com/wp-content/uploads/2022/10/install-gthumb-ubuntu.png +[7]: https://itsfoss.com/wp-content/uploads/2022/10/make-gthumb-default-for-avif.png +[8]: https://itsfoss.com/wp-content/uploads/2022/10/avif-image-opened-with-gthumb-in-linux.webp +[9]: https://itsfoss.com/wp-content/uploads/2022/10/avif-image-thumbnail.png diff --git a/sources/tech/20221031.3 ⭐️⭐️ 5 Best Mastodon Clients for Ubuntu and Other Linux.md b/sources/tech/20221031.3 ⭐️⭐️ 5 Best Mastodon Clients for Ubuntu and Other Linux.md new file mode 100644 index 0000000000..e6167e0765 --- /dev/null +++ b/sources/tech/20221031.3 ⭐️⭐️ 5 Best Mastodon Clients for Ubuntu and Other Linux.md @@ -0,0 +1,168 @@ +[#]: subject: "5 Best Mastodon Clients for Ubuntu and Other Linux" +[#]: via: "https://www.debugpoint.com/mastodon-clients-linux/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +5 Best Mastodon Clients for Ubuntu and Other Linux +====== + +**Are you planning to leave Twitter and join Mastodon? Use these free and open-source Mastodon clients for your Linux desktop.** + +[Mastodon][1] is a free and open-source microblogging platform similar to Twitter. It is designed as a decentralised platform that can communicate with other Fediverse protocols such as GNU Social and Pleroma. With the recent news stories about Twitter, many users are trying Mastodon and migrating to the platform. + +With that in mind, we give you a list of free Mastodon clients for Linux desktops as well as Windows and macOS in this post. + +### Top 5 Mastodon Clients for Ubuntu and Other Linux Distributions + +#### 1. Tootle + +Perhaps the best on this list is the GNOME App Tootle. Tootle is a super-fast Mastodon client for Linux desktops written in GTK. It comes with a clean and native interface that you can use while using Mastodon. With this app, you can easily browse posts, view feeds, have a customised home page and follow accounts. In addition to that, dedicated tabs gives you options to quickly jump between your home page, notifications, mentions and federated feed. + +Tootle is actively developed, and it is an official GNOME Circle app. And we featured it in our [GNOME Apps series (#5)][2]. + +![Tootle Mastodon Client for Linux][3] + +Tootle + +The easiest way to install Tootle is using Flatpak in any Linux distribution. Setup your system using this [guide for Flatpa][4]k (if not done yet) and hit the below link to install. + +[Install Tootle][5] + +**More information about Tootle** + +- [Source Code][6] +- [Home page][7] + +#### 2. Tokodon + +The Tokodon is another Mastodon client which brings a little different user interface to access this social platform. Its part of KDE Applications and built primarily using C++. It gives you an excellent clean user interface with a basic home page view. On top of that, you can browse local accounts to your mastodon server and the global ones. The bottom navigation gives easy access to all the Mastodon sections. + +![Tokodon Mastodon Client for Linux][8] + +Tokodon Mastodon Client for Linux + +The easiest way to install Tokodon is using Flatpak in any Linux distribution. Setup your system using this [guide for Flatpa][4]k (if not done yet) and hit the below link to install. + +[Install Tokodon via Flathub][9] + +**More information about****Tokodon** + +- [Source code][10] +- [Home page][11] + +#### 3. Sengi + +Among this list, Sengi is most likely the versatile Mastodon client for Linux desktops. It comes with usual features such as notification, account view and follows features. On top of that, it brings Tweetdeck styled live interface with the timeline. + +Sengi is perfect for heavy Mastodon users who want to manage multiple accounts and timelines. You can even set up and Twitter bridge as well. + +Furthermore, you should note that it is designed with web technology and packaged as desktop applications. Finally, it is available for Linux, macOS and Windows as well. + +![Sengi Mastodon Client][12] + +Sengi Mastodon Client | Image Credit: Sengi + +Finally, installing Sengi is very easy because the developer provides all types of executables, including native deb and AppImage. You can grab the .deb or .appimage file from the below link in addition to the windows and Mac executables. + +[Download Sengi][13] + +**More information about Sengi** + +- [Source code][14] + +#### 4. Whalebird + +Whalebird is another free and open-source Mastodon client built using Electron. Moreover, this web-based application is feature-rich and is the most stable Mastodon client. Using Whalebird, you can manage multiple accounts and monitor multiple timelines. In addition to that, you can also create a custom timeline to follow your favourite hashtags with a simple chronological workspace view. + +![Whalebird Mastodon Client][15] + +Whalebird Mastodon Client | Image Credit: Whalebird + +Finally, installing Whalebird is easy because it comes with an AppImage executable for Linux. Also, it provides the exe and dmg file for other OSes, which you can grab using the below link. + +[Download Whalebird][16] + +**More information about Whalebird** + +- [Source code][17] + +#### 5. TheDesk + +The fifth Mastodon client for Linux and other OSes we would like to feature is TheDesk. It is perhaps the most feature-rich client with a vast list of features. Its workflow is similar to Hootsuite and Tweetdeck for heavy social media monitoring and usage. You can customise it to follow a particular user, hashtags with options to create multiple timeline views. + +But it might not be a stable client and may contain bugs. But you can still try it out. + +Installing is made easy by its developer with app image, deb, snap and exe files available on GitHub for its releases. You can grab them here. + +[Download TheDesk][18] + +**More information about TheDesk** + +- [Source code][19] +- [Home page][20] + +### Other Options to access Mastodon + +#### Mastodon Web + +If you are reluctant to install another app, you can use the web version of your choice or favourite pod. You can register for a new account using the below link and connect via the web. + +[https://joinmastodon.org/][1] + +#### Tusky + +Finally, if you are an Android mobile phone user, you can try Tusky. It is a fine and superfast Mastodon client available for Android with many features. You can [download it from Google Play Store here][21]. You can also [get the F-Droid version][22] of this app for Linux Phones. + +#### Apple iPhone & iPad + +If you are iPhone or iPad user, you can get the official Mastodon client (developed by Mastodon) [from here][23]. It should work for MacBook as well. + +### Closing Notes + +Wrapping up the list of Mastodon clients for Linux, I hope you get to choose your favourite for your Linux distribution or mobile from the above list. Also, you can always use the Mastodon web for easy access. + +**Finally, don’t forget to follow us on our official Mastodon page using the link below.** + +- [Mastodon][24] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/mastodon-clients-linux/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://joinmastodon.org/ +[2]: https://www.debugpoint.com/2022/03/best-gnome-apps-part-5/ +[3]: https://www.debugpoint.com/wp-content/uploads/2022/03/Tootle.jpg +[4]: https://flatpak.org/setup/ +[5]: https://dl.flathub.org/repo/appstream/com.github.bleakgrey.tootle.flatpakref +[6]: https://github.com/bleakgrey/tootle +[7]: https://apps.gnome.org/app/com.github.bleakgrey.tootle/ +[8]: https://www.debugpoint.com/wp-content/uploads/2022/04/Tokodon-Mastodon-Client-for-Linux.jpg +[9]: https://dl.flathub.org/repo/appstream/org.kde.tokodon.flatpakref +[10]: https://invent.kde.org/network/tokodon +[11]: https://apps.kde.org/tokodon/ +[12]: https://www.debugpoint.com/wp-content/uploads/2022/04/Sengi-Mastodon-Client.jpg +[13]: https://github.com/NicolasConstant/sengi/releases +[14]: https://nicolasconstant.github.io/sengi/ +[15]: https://www.debugpoint.com/wp-content/uploads/2022/04/Whalebird-Mastodon-Client.jpg +[16]: https://github.com/h3poteto/whalebird-desktop/releases +[17]: https://github.com/h3poteto/whalebird-desktop +[18]: https://www.debugpoint.com +[19]: https://github.com/cutls/TheDesk +[20]: https://thedesk.top/en/ +[21]: https://play.google.com/store/apps/details?id=com.keylesspalace.tusky&hl=en_IN&gl=US +[22]: https://tusky.app/ +[23]: https://apps.apple.com/us/app/mastodon-for-iphone-and-ipad/id1571998974 +[24]: https://floss.social/@debugpoint diff --git a/sources/tech/20221101.0 ⭐️⭐️ Get started with Parseable, an open source log storage and observability platform.md b/sources/tech/20221101.0 ⭐️⭐️ Get started with Parseable, an open source log storage and observability platform.md new file mode 100644 index 0000000000..97cb466de6 --- /dev/null +++ b/sources/tech/20221101.0 ⭐️⭐️ Get started with Parseable, an open source log storage and observability platform.md @@ -0,0 +1,156 @@ +[#]: subject: "Get started with Parseable, an open source log storage and observability platform" +[#]: via: "https://opensource.com/article/22/11/parseable-observability-platform" +[#]: author: "Nitish Tiwari https://opensource.com/users/tiwarinitish86" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Get started with Parseable, an open source log storage and observability platform +====== + +Written in Rust, Parseable leverages data compression, storage, and networking advances to bring a simple, efficient logging platform that just works. + +Log data is one of the fastest-growing segments across data storage. It's also one of the most complicated spaces. There are several products and solutions with overlapping use cases and confusing marketing. + +This article looks at Parseable, a log storage and observability platform. Parseable is geared towards a better user experience, with an easy-to-deploy and use interface and a simple, cloud-native architecture. I'll also show how to set up Parseable with FluentBit to store logs. + +### What is Parseable? + +[Parseable][1] is a free and open source log storage and observability platform. Written in Rust, Parseable leverages data compression, storage, and networking advances to bring a simple, efficient logging platform that just works. + +Some core concepts for building Parseable are: + +#### Indexing free + +Traditionally, text search engines like Elastic have doubled as log storage platforms. This makes sense because log data must be searched to be really useful. But indexing comes at a high cost. It is CPU intensive and slows down ingestion. Also, the index data generated by these systems are of the same order of storage as the raw log data. This doubles the storage cost and increases complexity. Parseable changes this. With columnar data formats (parquet), it is possible to compress and query the log data efficiently without indexing it. + +#### Ownership of both data and content + +With parquet as the storage format and stored in standard object storage buckets, users own their log data and have complete access to the actual content. This means users can easily use analysis tools like Spark, Presto, or TensorFlow to extract more value from the data. This feature is extremely powerful, opening up new avenues of data analysis. + +#### Fluid schema + +Logs are generally semi-structured by nature, and they're ever-evolving. For example, a developer may start with a log schema like this: + +``` +{ +  "Status": "Ready", +  "Application": "Example" +} +``` + +But as more information is collected, the log schema may evolve to: + +``` +{ +  "Status": "Ready", +  "Application": { +    "UserID": "3187F492-8449-4486-A2A0-015AE34F1D09", +    "Name": "Example" +  } +} +``` + +Engineering and SRE teams regularly face schema-related issues. Parseable solves this with a fluid schema approach that lets users change the schema on the fly. + +#### Simple ingestion + +The current ingestion mechanism for logging platforms is quite convoluted, with several available protocols and connectors. Parseable aims to make log ingestion as easy as possible. The result is you can use HTTP POST calls to send logs to Parseable. No complicated SDKs are required. + +What if you want to use a logging agent like FluentBit, Vector, LogStash, or others? Almost all the major log collectors support HTTP, so Parseable is already compatible with your favorite log collection agent. + +### Get started + +You can use a Docker image to try out Parseable. This image shows Parseable in demo mode, using publicly-accessible object storage. + +``` +$ cat<< EOF > parseable-envP_S3_URL=https://minio.parseable.io:9000P_S3_ACCESS_KEY=minioadminP_S3_SECRET_KEY=minioadminP_S3_REGION=us-east-1P_S3_BUCKET=parseableP_LOCAL_STORAGE=/dataP_USERNAME=parseableP_PASSWORD=parseable +EOF +$ mkdir-p/tmp/data +$ docker run \-p8000:8000 \--env-file parseable-env \-v/tmp/data:/data \ +  parseable/parseable:latest +``` + +Log in to the Parseable UI using the credentials passed here (that's `parseable` and `parseable`.) The demo already contains some data because Parseable is pointing to the publicly-open bucket. + +Make sure to change the bucket and credentials to your object storage instance before sending any data to Parseable. + +Refer to the [documentation][2] to understand how Parseable works and how to ingest logs. + +### Set up FluentBit to send logs to Parseable + +You can use a Docker compose file to configure both Parseable and FluentBit, making it easier to set up and tear down as needed. + +First, save this file as `fluent-bit.conf` in a directory. The file is the configuration used to send data to Parseable. + +``` +[SERVICE] +  Flush 5 +  Daemon Off +  Log_Level debug +[INPUT] +  Name dummy +  Tag dummy +[OUTPUT] +  Name http +  Match * +  Host parseable +  http_User parseable +  http_Passwd parseable +  format json +  Port 8000 +  Header X-P-META-meta1 value1 +  Header X-P-TAG-tag1 value1 +  URI /api/v1/logstream/fluentbit1 +  Json_date_key timestamp +  Json_date_format iso8601 +``` + +Now save the following file as `docker-compose.yaml` in the same directory as above: + +``` +version: "3.7" +services: +  fluent-bit: +    image: fluent/fluent-bit +    volumes:      - ./fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf +    depends_on:      - parseable +  parseable: +    image: parseable/parseable +    ports:      - "8000:8000" +    environment:      - P_S3_URL=https://minio.parseable.io:9000 +      - P_S3_ACCESS_KEY=minioadmin +      - P_S3_SECRET_KEY=minioadmin +      - P_S3_REGION=us-east-1 +      - P_S3_BUCKET=parseable +      - P_LOCAL_STORAGE=/tmp/data +      - P_USERNAME=parseable +      - P_PASSWORD=parseable +``` + +The `docker-compose.yaml` refers to the `fluent-bit.conf` file and passes it to the FluentBit container as the configuration file. + +Parseable is deployed with the default configuration (as in the above Docker setup). You can observe the data FluentBit container sent to Parseable in the Parseable Console running at **[http://localhost:8000][3]**. + +### Wrap up + +In this article, you've taken your first look at Parseable, the open source log storage and analysis platform built in Rust. A single Docker command gets you started with Parseable so you can experience the UI and establish FluentBit as a data source. If you think this looks too easy, then it's probably time to try Parseable! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/parseable-observability-platform + +作者:[Nitish Tiwari][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/tiwarinitish86 +[b]: https://github.com/lkxed +[1]: https://github.com/parseablehq/parseable +[2]: https://www.parseable.io/docs/introduction +[3]: http://localhost:8000 diff --git a/sources/tech/20221101.11 ⭐️⭐️ How to Install Flatpak Apps in Ubuntu and Other Linux.md b/sources/tech/20221101.11 ⭐️⭐️ How to Install Flatpak Apps in Ubuntu and Other Linux.md new file mode 100644 index 0000000000..6639886773 --- /dev/null +++ b/sources/tech/20221101.11 ⭐️⭐️ How to Install Flatpak Apps in Ubuntu and Other Linux.md @@ -0,0 +1,170 @@ +[#]: subject: "How to Install Flatpak Apps in Ubuntu and Other Linux" +[#]: via: "https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Install Flatpak Apps in Ubuntu and Other Linux +====== + +**A beginner’s guide on how to install Flatpak in Ubuntu and other Linux distributions.** + +### What is Flatpak? + +[Flatpak][1] is the new way of distributing apps across the Linux universe, irrespective of the distribution. This cross-distro application distribution and deployment framework enable developers to Flatpak setup for apps for all major distributions. + +The major hurdles in any Linux app distribution are dependencies, and Flatpak covers that. Flatpak builds bundles the dependencies for the respective apps, and end-users need not worry about it. + +With the growing trends, many app developers are now providing the Flatpak builds along with traditional packages, e.g. *.deb, etc. With a quick setup for your distributions, you can be ready to explore the world of Flatpak apps. All the major Flatpak apps are available on flathub.org. You can search and just click a button, you can install the Flatpak apps. Here’s how to set it up for Ubuntu and other Linux distributions. + +### How to setup Flatpak in Ubuntu + +- For Ubuntu 18.10 (Cosmic Cuttlefish), use the following command to install Flatpak (that includes Ubuntu 22.04 as well). + +``` +sudo apt install flatpak +``` + +If you are using an older version of Ubuntu, use the following repo. + +``` +sudo add-apt-repository ppa:alexlarsson/flatpak +sudo apt update +sudo apt install flatpak +``` + +- The second step is optional if you want to install Flatpak apps via the browser. Enable Ubuntu Software to recognize Flatpak apps and their installations. Run the below commands from the terminal and provide the password when prompted. + +``` +sudo apt install gnome-software-plugin-flatpak +``` + +- Add the Flathub repository where all the Flatpak apps reside. Run the below commands from the terminal. + +``` +flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo +``` + +- Reboot. + +### Install in Other Linux Distributions + +Flatpak is available to install almost all possible distributions. Here’s a quick list of commands you can run from the terminal in all the distros. + +| **Linux distro name** | **Instructions or commands to set up Flatpak** | +| :- | :- | +| AlmaLinux | Enabled by default. No action is required. | +| Alpine Linux | Run the following commands:`sudo apk add flatpak``flatpak remote-add --if-not-exists flathub [https://flathub.org/repo/flathub.flatpakrepo][2]``reboot` | +| Arch Linux | Run the following commands:`sudo pacman -S flatpak``flatpak remote-add --if-not-exists flathub [https://flathub.org/repo/flathub.flatpakrepo][2]``reboot` | +| CentOS | Enabled by default. No action is required. | +| Clear Linux | Enabled by default. No action is required. | +| Debian | Run the following commands:`apt install flatpak``flatpak remote-add --if-not-exists flathub [https://flathub.org/repo/flathub.flatpakrepo][2]``reboot` | +| Deepin OS | Run the following commands:`sudo apt install flatpak``flatpak remote-add --if-not-exists flathub [https://flathub.org/repo/flathub.flatpakrepo][2]``reboot` | +| elementary OS | Enabled by default. No action is required. | +| Endeavour OS | Enabled by default. No action is required. | +| Endless OS | Enabled by default. No action is required. | +| Fedora Linux | Flatpak is installed by default. All you need to do is to install the Flathub repo:`flatpak remote-add --if-not-exists flathub [https://flathub.org/repo/flathub.flatpakrepo][2]`And finally, reboot your system before installing the Flatpak app. | +| Gentoo | Run the following commands:`echo -e 'sys-apps/flatpak ~amd64\nacct-user/flatpak ~amd64\nacct-group/flatpak ~amd64\ndev-util/ostree ~amd64' >> /etc/portage/package.accept_keywords/flatpakemerge sys-apps/flatpak``flatpak remote-add --if-not-exists flathub [https://flathub.org/repo/flathub.flatpakrepo][2]``reboot` | +| KDE Neon | Enabled by default. No action is required. | +| Kubuntu | Run the following commands:`sudo apt install flatpak``flatpak remote-add --if-not-exists flathub [https://flathub.org/repo/flathub.flatpakrepo][2]``sudo apt install plasma-discover-backend-flatpak``reboot` | +| Linux Mint | Enabled by default. No action is required. | +| Mageia | Run the following commands:`dnf install flatpak``flatpak remote-add --if-not-exists flathub [https://flathub.org/repo/flathub.flatpakrepo][2]``reboot` | +| Manjaro Linux (Arch-based) | Installed by default since Manjaro 20 and higher.Make sure it is enabled in the below navigation:**Software Manager > Preferences > Flatpak Tab > Enable Flatpak Support**Reboot your system | +| MX Linux | Enabled by default. No action is required. | +| Nix OS | Open `/etc/nixos/configuration.nix` and add the following:`Services.flatpak.enable = true;`And then run the followings:`sudo nixos-rebuild switch``flatpak remote-add --if-not-exists flathub [https://flathub.org/repo/flathub.flatpakrepo][2]``reboot` | +| openSUSE Leap and Tumbleweed | Flatpak is installed by default. All you need to do is to install the Flathub repo:`flatpak remote-add --if-not-exists flathub [https://flathub.org/repo/flathub.flatpakrepo][2]`And finally, reboot your system before installing the Flatpak apps. | +| Pop OS | Enabled by default. No action is required. | +| Raspberry Pi OS | Run the following commands:`sudo apt install flatpak``flatpak remote-add --if-not-exists flathub [https://flathub.org/repo/flathub.flatpakrepo][2]``reboot` | +| Red Hat Enterprise Linux (RHEL) | `sudo yum install flatpak``flatpak remote-add --if-not-exists flathub [https://flathub.org/repo/flathub.flatpakrepo][2]``reboot` | +| Solus | Run the following commands:`sudo eopkg install flatpak xdg-desktop-portal-gtk``flatpak remote-add --if-not-exists flathub [https://flathub.org/repo/flathub.flatpakrepo][2]``reboot` | +| Void Linux | Run the following commands:`sudo xbps-install -S flatpak``flatpak remote-add --if-not-exists flathub [https://flathub.org/repo/flathub.flatpakrepo][2]``reboot` | +| Zorin OS | Enabled by default. No action is required. | + +Once installation is completed, and reboot is done, you can proceed with installing some cool Flatpak apps via the below steps. + +### How to Install Flatpak Apps in Ubuntu and Other Linux + +There are two ways you can install Flatpak apps. Firstly via the command line, which I recommend. And second is the browser method. + +I recommend using the command line because it is faster and easier. + +#### Using the command line (recommended) + +The sample command to install any Flatpak app is available at the bottom section of the Flathub app page. A sample command is below: + +``` +flatpak install org.gimp.GIMP +``` + +Change the above “org.gimp.GIMP” for your application. Remember, this is case-sensitive. + +#### Using the graphical method via browser + +- Go to [Flathub][3]. +- Search for any apps you want to install. + +![][4] + +- Click install after selecting your desired app. + +![Install Flatpak][5] + +- Click Ok when it prompts you to start the installation via Software. + +![Open Flatpackref via Software][6] + +- The Software will open and wait till the installation finishes. + +### How to update Flatpak after you install them? + +Updating Flatpak is super easy via the terminal. For example, if you want to update the above GIMP package, you need to run the below command. + +``` +flatpak update org.gimp.GIMP +``` + +So, this will update a single package. Replace your package’s name (i.e. Application ID) for your use case. If you don’t know the Application ID, run the command `flatpak list` from the terminal, and you will find it. + +If you want to update ALL the Flatpak packages in your system, simply run the following: + +``` +flatpak update +``` + +### How to uninstall a Flatpak? + +You can uninstall a package using the following command. Make sure to change the Application ID for your use case. You can find out the Application ID from the command `flatpak list`. + +``` +flatpak remove org.gimp.GIMP +``` + +### Closing Notes + +In this tutorial, I have explained how you can easily set up Flatpak and install apps from Flathub. Moreover, Flatpak applications are a great way to install and manage them easily. In my opinion, Flatpak will eventually dominate Snap and AppImage in the future. + +You may want to check out our other articles about [Flatpak][7], which include how to manage permission, various Flatpak commands and more. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://flatpak.org/ +[2]: https://flathub.org/repo/flathub.flatpakrepo +[3]: https://flathub.org/apps +[4]: https://www.debugpoint.com/wp-content/uploads/2018/07/Search-in-Flathub.png +[5]: https://www.debugpoint.com/wp-content/uploads/2018/07/Install-Flatpak.png +[6]: https://www.debugpoint.com/wp-content/uploads/2018/07/Open-Flatpackref-via-Software.png +[7]: https://www.debugpoint.com/tag/flatpak diff --git a/sources/tech/20221101.2 ⭐️ Uninstall Snap Packages from Ubuntu and Other Linux Distros.md b/sources/tech/20221101.2 ⭐️ Uninstall Snap Packages from Ubuntu and Other Linux Distros.md new file mode 100644 index 0000000000..f9c464b5b8 --- /dev/null +++ b/sources/tech/20221101.2 ⭐️ Uninstall Snap Packages from Ubuntu and Other Linux Distros.md @@ -0,0 +1,117 @@ +[#]: subject: "Uninstall Snap Packages from Ubuntu and Other Linux Distros" +[#]: via: "https://itsfoss.com/remove-snap/" +[#]: author: "Abhishek Prakash https://itsfoss.com/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Uninstall Snap Packages from Ubuntu and Other Linux Distros +====== + +Installed Snap package earlier and now you want to uninstall it? + +To remove a snap package, use the command in the following fashion: + +``` +sudo snap remove package_name +``` + +You need to know the exact package name here. How do you get that? Let me discuss all this in a bit more detail. + +### Uninstall Snap packages + +You need the exact package name to remove it. The tab completion works too. + +For that, list all the snap packages installed on your system: + +``` +snap list +``` + +Do you notice some entries with ✓ check marks in the screenshot below? They are ‘verified’ snap [packages from official developers][1]. + +![Listing all the installed Snap packages][2] + +If there are too many packages, you can grep with an appropriate search term. + +Once you get the package name, use it to uninstall the package. + +``` +sudo snap remove package_name +``` + +At least on the Ubuntu desktop, if you don’t use sudo with snap remove, it prompts for the password graphically. But it’s better to use sudo because you need elevated privileges for removing snap applications anyways. + +In my case, I installed Spotify on Ubuntu in snap format. Now, I remove it like this: + +``` +sudo snap remove spotify +``` + +It takes a few seconds and you should see some messages about the removal. By the end of the process, you only see the completion message. + +![uninstall snap package][3] + +And that’s how you remove applications installed in snap format. + +But what about removing snap entirely? Not the snap applications but the snap [daemon][4] itself. + +### Remove Snap entirely (not for Ubuntu) + +**WARNING! Please do not remove snapd and other core snap stuff from Ubuntu. Snap is an integral part of Ubuntu and removing them could have adverse consequences.** + +For non-Ubuntu distributions, where you manually installed Snap support, removing snapd should not create any problems. + +First, make sure that you don’t have any snap packages installed. + +``` +snap list +``` + +If there are any, remove those snap packages first. + +``` +sudo snap remove package1 package2 package3 +``` + +On Debian, Linux Mint, elementary OS etc, use the apt command to remove snapd: + +``` +sudo apt remove --purge snapd +``` + +On Fedora-based distributions, use the DNF command: + +``` +sudo dnf remove snapd +``` + +Later on, you can remove the snap folder from your home directory and /var/cache/snapd if you are particular about that. + +### Conclusion + +This was a quick tutorial for showing the steps for uninstalling snap applications. + +Some people have a strong aversion to Snap because of its “close” nature. Personally, I don’t have any special liking or dislike for it. I prefer using apt but when I don’t get the required package or version, I go for other formats like Snap, Flatpak and AppImage. + +As I mentioned earlier, please don’t remove snap daemon from Ubuntu. It may leave you with a broken system and neither of us wants that. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/remove-snap/ + +作者:[Abhishek Prakash][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/ +[b]: https://github.com/lkxed +[1]: https://forum.snapcraft.io/t/verified-developers/2005 +[2]: https://itsfoss.com/wp-content/uploads/2022/11/list-installedsnap-packages.png +[3]: https://itsfoss.com/wp-content/uploads/2022/11/uninstall-snap-package.png +[4]: https://itsfoss.com/linux-daemons/ diff --git a/sources/tech/20221101.6 ⭐️⭐️ How to Install and Use GNOME Boxes to Create Virtual Machines.md b/sources/tech/20221101.6 ⭐️⭐️ How to Install and Use GNOME Boxes to Create Virtual Machines.md new file mode 100644 index 0000000000..8126c15ad3 --- /dev/null +++ b/sources/tech/20221101.6 ⭐️⭐️ How to Install and Use GNOME Boxes to Create Virtual Machines.md @@ -0,0 +1,169 @@ +[#]: subject: "How to Install and Use GNOME Boxes to Create Virtual Machines" +[#]: via: "https://www.debugpoint.com/install-use-gnome-boxes/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Install and Use GNOME Boxes to Create Virtual Machines +====== + +**This quick tutorial explains the steps to install and use GNOME Boxes and create virtual machines, with some tips and troubleshooting.** + +Virtualization is the process of running a virtual instance (rather than an actual one) with an abstracted layer of hardware. In popular terms, it allows you to install and run multiple operating systems (Linux, Windows) simultaneously.  + +A [Virtual machine][1] is a simulated operating system that runs on top of another operating system and uses the same hardware and storage space as the host machine. Although, you can control how much shared memory or space can be allocated to virtual machines. + +Multiple software is available to create virtual machines, e.g. [Virtual Box][2], [virt-manager][3], KVM, Hyper-V, VM Ware player, and GNOME Boxes. + +But honestly, most of them are a little complex (for beginners) and sometimes not stable enough. [GNOME Boxes][4] is another free and open-source software that is very easy to use and makes it simple for you to create and manage virtual machines by abstracting lots of options. + +### Install GNOME Boxes + +If you are running Fedora with GNOME Spin, you should already have it installed. However, you can run the below for Ubuntu, Linux Mint, Kubuntu, and other distributions to install it in your system. + +``` +sudo apt install gnome-boxes +``` + +#### Via Flatpak + +It is also available via the Flatpak package. I would recommend you use this version. First, set up your system to use Flatpak using [this guide][5], and then run the following command from the terminal to install. + +``` +flatpak install flathub org.gnome.Boxes +``` + +### Create Virtual Machine using GNOME Boxes + +- Launch GNOME Boxes from the application menu. + +- To create a virtual machine, you need an image (*.ISO) of the operating system you want to virtualize. + +- You can download any operating system iso images from the official download page of the distributions. For this guide, I am using Pop! OS, which is an excellent Linux distribution. + +- After you launch, click on the “+” icon at the top to start and select “Create a virtual machine”. + +![Create Virtual Machine][6] + +Create Virtual Machine + +In the next window, you can choose already available downloads, or you can select your iso file as OS source. Click on the “Operating system image file” and choose your iso file. + +Assign the memory and storage space of your virtual machine. Remember, your virtual machine would take the memory and storage from your host system. So try not to assign as max. + +For example, in the below image – I have assigned 2GB memory for the virtual machine (guest) from the total 8GB memory of the host system. + +Similarly, choose minimum storage space as well if you want to just test any OS. But if you are creating a virtual machine for servers or serious work, be logical in how much space or memory you want to assign. + +Another important thing to remember is that the storage disk space which you allow will be blocked permanently unless you delete the virtual machine. So, you won’t get that much of disk space as free even if your virtual machine doesn’t use the entire allocated space.  + +![Allocate resources for your virtual machine][7] + +Allocate resources for your virtual machine + +Continue with the installation. + +In the partition window, you should see one hard disk and partition, which is the virtual machine disk space. Usually, they are named as `/dev/vda` or `/dev/sda`. + +Don’t worry; you can play around with this partition, which will not impact your physical disk partitions or any data on your actual host system. Follow the same /root partition while installing Linux, and continue. + +![Virtual machine partition][8] + +Virtual machine partition + +After you complete the installation, you should see your new operating system in the virtual machine. In the GNOME Boxes, you should see an entry to the system. You can click once to boot your virtual machine. + +You can power off the virtual machine by using your virtual machine operating system’s internal shutdown option. + +If you want, you can also delete the virtual machine by choosing the context menu option. + +![Context menu in installed virtual machine][9] + +Context menu in installed virtual machine + +You can also check how much memory and CPU your virtual machine uses from the properties window. + +Note that you can adjust your existing virtual machines’ memory and other items using properties. + +![System properties][10] + +System properties + +### Troubleshooting + +Here are some common errors or issues you may face while using GNOME Boxes. + +##### 1. Display resolution problem in virtual machines + +If your virtual machine has low resolution, which is incompatible with your host system, you must install the items below. Open up the terminal in the guest system (not in the host system) and run the below commands. + +**For Ubuntu-based distributions** + +``` +sudo apt install spice-vdagent spice-webdavd  +``` + +**For Fedora** + +``` +sudo dnf install spice-vdagent spice-webdavd  +``` + +These two packages help to determine proper resolutions, copy/paste between host and guest, share files via public folders, etc. + +Once installed, reboot the guest system, Or you can log off and re-login once after reboot; you should see the proper resolution. + +##### 2. GNOME Boxes don’t start a virtual machine in Ubuntu 18.04 + +If you are creating a virtual machine in Boxes 3.34 then you should know that there was a bug that caused your virtual machine to fail to start. To fix that you have to follow some additional steps. Remember these are not required for the latest Boxes 3.36. + +Open a terminal window and run the below command to change the qemu config file. + +``` +sudo gedit /etc/modprobe.d/qemu-system-x86.conf +``` + +Add the below line in the above file and save. + +``` +group=kvm +``` + +Now, run the below command to add your username to the KVM group. + +``` +sudo usermod -a -G kvm  +``` + +### Wrapping Up + +In this article, you have seen how to install and use GNOME Boxes to take advantage of virtualization. I hope it helps you. + +🗨️ If you face any errors or have any questions about virtual machines with GNOME Boxes, let me know using the comment box below. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/install-use-gnome-boxes/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.redhat.com/en/topics/virtualization/what-is-a-virtual-machine +[2]: https://www.debugpoint.com/tag/virtualbox/ +[3]: https://www.debugpoint.com/virt-manager/ +[4]: https://wiki.gnome.org/Apps/Boxes +[5]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[6]: https://www.debugpoint.com/wp-content/uploads/2020/05/Create-Virtual-Machine.png +[7]: https://www.debugpoint.com/wp-content/uploads/2020/05/Allocate-resources-for-your-virtual-machine.png +[8]: https://www.debugpoint.com/wp-content/uploads/2020/05/Virtual-machine-partition.png +[9]: https://www.debugpoint.com/wp-content/uploads/2020/05/Context-menu-in-installed-virtual-machine.png +[10]: https://www.debugpoint.com/wp-content/uploads/2020/05/System-properties.png diff --git a/sources/tech/20221101.8 ⭐️⭐️ Feren OS Review Clever KDE Distro for Easy Migration from Windows.md b/sources/tech/20221101.8 ⭐️⭐️ Feren OS Review Clever KDE Distro for Easy Migration from Windows.md new file mode 100644 index 0000000000..a981459f91 --- /dev/null +++ b/sources/tech/20221101.8 ⭐️⭐️ Feren OS Review Clever KDE Distro for Easy Migration from Windows.md @@ -0,0 +1,142 @@ +[#]: subject: "Feren OS Review: Clever KDE Distro for Easy Migration from Windows" +[#]: via: "https://www.debugpoint.com/feren-os-review/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Feren OS Review: Clever KDE Distro for Easy Migration from Windows +====== + +**A review of Feren OS – a KDE Plasma and Ubuntu fusion specially designed for Windows users to help them migrate.** + +Over the years, many readers commented about Feren OS and its advantages on this website. I never got a chance to try this distribution in terms of its benefits and why it stands out among hundreds of distros. + +So, here’s a review of the great Feren OS. + +### Feren OS Review + +First and foremost, its creators designed and marketed it as an ideal replacement for Windows and macOS. At its core, it’s based on Ubuntu LTS with a base KDE Plasma desktop and additional tweaks. However, it does bring several goodies specially designed for Windows users. A lot on that a little later. Let’s download and install it. + +#### Download and Install + +The Feren OS (20.04) ISO file is about 2.5 GB, and it has only one variant for KDE Plasma – which is the only offering. However, the download took around 6 hours from SourceForge. + +A few interesting things happened when I booted this up in a VM ([virt-manager][1]). During my years of [distro review][2], I haven’t seen any distro do this. + +First, the LIVE medium understood that I was using the virtual machine and changed the compositor by itself to Xrender for better performance in VM. Second, it also gave the option to install guest additions for VirtualBox and VM Tools for VM Ware for additional functionalities. + +![Virtual Machine detected by Feren OS installer][3] + +Moreover, Feren OS gave options to transfer files from the Windows partition before installing the system! And an option to choose the desktop layout if you are installing it on a touch-based device. + +![You can take backups of Windows data before install][4] + +The installer is Calamares and not Ubuntu’s Ubiquity, although it depends on Ubuntu LTS. While installing the system, Feren OS doesn’t do the account creation, keyboard and other selections. It prompts you for user account creation and additional info after the first reboot and post-installation. Fedora Linux workstation edition does this via the Anaconda installer. + +Apparently, it is probably nothing. But from a Windows user’s perspective, an “easy install” experience is important, and I believe the team made an excellent decision on this. + +Finally, the installation went smooth, and no such surprises there. + +#### First boot and looks + +During the first boot, you need to set up the user accounts and other initial settings. The wizard gives you options to choose the light/dark theme, desktop layouts and different initial configs. This is a nice touch and looks professional. + +The KDE Plasma desktop is nice and clean with the pre-configured taskbar and the Breeze theme. The taskbar has the application menu on the left side. In the middle of the taskbar, you find the shortcut to Vivaldi, File manager and homegrown Store. And at the right is a traditional system tray. + +![Feren OS Desktop][5] + +Feren OS pre-loads a good set of Plasma Global Themes other than the usual Breeze variants. All of them are perfect and give your desktop a nice touch with just one click. As of the current version, you get Feren OS, Hooman, Dooars and Mac n’ Cheese theme. In addition, you also can get the Tablet and Classic settings of the desktop. It also features the Inspire icon theme and DMZ cursor theme by default. + +#### Workspaces and Full-screen Application View + +One of the unique features I want to highlight is the default workspace configuration that Feren OS brings. By default, there are four desktops to work with. At the taskbar, there is an icon which brings up the new workspaces in the KDE Plasma desktop. + +![Feren OS - Default four desktops][6] + +If you apply the pre-defined macOS theme, the application view is quite spectacular (which is a KDE widget, btw). It even searches the apps and individual settings when you start typing. See the image below. + +![Fullscreen app menu with dynamic search][7] + +Also, the global menu gives you the extra edge and precious screen space for your workflow. + +#### Native and Installed Applications + +Let’s talk about some exciting app choices that Feren OS installs by default. + +Although it’s based on KDE Plasma, some apps are chosen carefully based on their features and performances. For example, the file manager is Nemo instead of Dolphin, which is a good choice since Nemo is an awesome file manager. + +In addition, Feren OS packages Geary [email desktop client][8], GDebi package manager, Timeshift backup utility, and VLC Media player – some of the essential non-KDE Apps. + +The native apps are quite interesting. + +A native app called “Store” manages application search, installation and uninstall. It’s a homegrown tool which looks similar to GNOME’s Software. It supports usual categories and one-click installation. However, it seems it doesn’t support managing software sources. I belives that’s the reason Synaptic package manager is installed by default. + +![Natively designed Store manager][9] + +Other than that, there is an app, “Web Browser Manager”, which lets you install additional browsers with just one click. It’s interesting to see a dedicated app to manage just the web browsers. + +#### A note about the Transfer Tool + +Since its target audiences are Windows users, it brings a dedicated tool to transfer data from your Windows partitions and helps you to take backups to a custom target drive or device. The tool can easily detect generic Windows folders such as Documents, Users, Pictures, Videos etc. + +![Feren OS Transfer Tool][10] + +It’s a handy tool if you want a quick backup of your Windows partition. More importantly, you can use this in a LIVE medium without installing Feren OS. + +#### Performance + +You might have guessed about FerenOS’s performance as it’s based on Ubuntu LTS and KDE Plasma desktop. The performance, in simple words, is the same as that of Kubuntu. + +In an idle state (i.e. desktop is boot and kept inactive), it consumes around 1.8 GB of memory, and the CPU is at 4% to 8%. The latte dock consumes most system resources and plasma desktop, followed by the KWin. This is when the macOS theme is enabled. + +![Feren OS - Performance at Idle State][11] + +Next, I make it run through heavy workload situations with one instance each for File manager, media player, Vivaldi browser, image editor, LibreOffice and Console application. At this heavy performance stage, Feren OS consumes around 2.1 GB of system memory, and the CPU is hovering at 8 to 10 %. + +![Feren OS - Performance at Heavy workload State][12] + +I think it’s an impressive performance metric in the heavy workflow state. I was expecting a little higher memory and CPU consumption. + +The only reason I believe the performance is better in a heavy workflow state is not to use Firefox or Chrome. Vivaldi is performing better in the memory utilization space than that Firefox or Chrome. + +### Wrapping Up + +Feren OS is one of those Linux distros which packs a default look with Stability together. It’s one of the “not-so-popular” & mainstream distros with many prospects. Its unique way of implementing several critical items, from installation to the first experience for a new or migrated Windows user, is a great touch. + +Besides, its in-house apps and utilities are one of the best implementations for a distro targeted at Windows users. And the Ubuntu LTS base gives them an edge over the players. + +The only drawback I can see is the major release is a little delayed. For example, the Ubuntu 22.04 LTS version is not yet out. Perhaps the delay is because of a small dev team. + +But, besides that, it’s a perfect and ready-to-use daily driver. You may give it a try. + +You can download Feren OS from the [official website][13]. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/feren-os-review/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/virt-manager/ +[2]: https://www.debugpoint.com/tag/linux-distro-review +[3]: https://www.debugpoint.com/wp-content/uploads/2022/07/Virtual-Machine-detected-by-Feren-OS-installer.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2022/07/You-can-take-backups-of-Windows-data-before-install.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2022/07/Feren-OS-Desktop.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2022/07/Feren-OS-Default-four-desktops.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2022/07/Fullscreen-app-menu-with-dynamic-search.jpg +[8]: https://www.debugpoint.com/best-email-client-linux-windows/ +[9]: https://www.debugpoint.com/wp-content/uploads/2022/07/Natively-designed-Store-manager.jpg +[10]: https://www.debugpoint.com/wp-content/uploads/2022/07/Feren-OS-Transfer-Tool.jpg +[11]: https://www.debugpoint.com/wp-content/uploads/2022/07/Feren-OS-Performance-at-Idle-State.jpg +[12]: https://www.debugpoint.com/wp-content/uploads/2022/07/Feren-OS-Performance-at-Heavy-workload-State.jpg +[13]: https://ferenos.weebly.com/get-feren-os.html diff --git a/sources/tech/20221101.9 ⭐️⭐️ Garuda Linux All-Rounder Distro Based on Arch Linux.md b/sources/tech/20221101.9 ⭐️⭐️ Garuda Linux All-Rounder Distro Based on Arch Linux.md new file mode 100644 index 0000000000..0326410d91 --- /dev/null +++ b/sources/tech/20221101.9 ⭐️⭐️ Garuda Linux All-Rounder Distro Based on Arch Linux.md @@ -0,0 +1,167 @@ +[#]: subject: "Garuda Linux: All-Rounder Distro Based on Arch Linux" +[#]: via: "https://www.debugpoint.com/garuda-linux-review-2022/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Garuda Linux: All-Rounder Distro Based on Arch Linux +====== + +**A review of the Arch Linux based Garuda Linux, which brings a collection of desktop environments, window managers, and tools for general users and gamers.** + +Over the years, we [reviewed][1] a couple of Arch-based distros – spread across new ones, stables distros and more. Each one of them is a little different from the others. Finally, we review the Garuda Linux in 2022 – it’s our first review of this distro, and we will continue with all the major releases. + +![Garuda Linux Desktop (2022)][2] + +### What does it offer? + +There are many customized and easy-to-use Arch-based Linux distributions available. Every one of those tries to present something new other than just another variant of Arch Linux. + +Garuda Linux does offer a few new features compared to others. + +Firstly, it **brings almost all popular desktops and window managers** such as KDE, Xfce, GNOME, LXQt-kwin, Cinnamon, Mate, Wayfire, Qtile, i3wm and Sway. + +Second, it offers the **default BTRFS file system with zstd compression** for better performance. In addition, it provides the popular **Chaotic-Aur**, which contains a vast collection of pre-compiled binaries from AUR. Moreover, a group of hand-picked themes, icons and cursors give Garuda Linux an edge over the other Arch-based distros. + +Finally, its primary selling point is i**ts pre-made for Gaming in Arch Linux** with native apps such as Garuda Gamer and the option for Zen Kernel. + +### Garuda Linux Review – 2022 Edition + +This review is based on Garuda’s default offering, i.e. Garuda dragonized zen kernel with KDE Plasma (April 28, 2022 iso). + +#### Download and Installation + +![Garuda Linux - boot screen][3] + +The download via torrent was fast without any problems. The LIVE boot asks whether you want to boot using open-source or NVIDIA drivers. Finally, the welcome screen is well designed and gives you clear instructions to launch the installer. + +Garuda offers **separate ISO files for different desktops** and window managers. Because a massive set of packages pre-loaded in ISO files also gives you the option for the LITE version with KDE Plasma. The LITE versions are the base Garuda Linux without additional theming and packages. + +So, pick the one you want for your needs. + +Garuda Linux uses **Calamares** installer. The Calamares are not configured heavily, and installation is pretty straightforward. However, Calamares doesn’t give you the option to choose the desktop environments or packages. As I mentioned above, it has a separate installer for each of those. + +During my test, the installation went smoothly, and it took around 5 minutes to launch the LIVE medium to completion in an Intel i5, 8 GB, SSD configuration. **It’s blazing fast, in my opinion.** + +#### Look and Feel + +After the successful installation, you see a **nice login screen** (SDDM with themes). It is well designed and aligned with Garda Linux’s design patterns. + +![The Login screen (SDDM) of Garuda Linux][4] + +The KDE Plasma desktop is heavily customized in terms of look in Garuda Linux. Firstly, the Latte dock is well placed with essential shortcuts at the bottom. No unnecessary shortcuts are there, which is nice. + +![Garuda Linux Desktop with Latte dock][5] + +Second, at the top bar, you get the application menu of KDE Plasma with Latte dock widgets. All the widgets are well placed and necessary for all user bases. By default, the top bar contains NEtSpeed widgets, clipboard and volume controls and the event calendar widget of the Latte dock. + +Garuda Linux uses **Kvantum theme engine** with “sweetified-plasma” theme with kvantum-dark application style, giving it its unique look. In addition, the famous BeautyLine icon theme provides the much-needed contrast (as designed) to this distro. + +#### Initial Setup and Applications + +Firstly, the initial setup gives you several options to quickly configure your desktop before your first use. + +A series of terminal-based operations is provided by its welcome applications, such as system upgrades. + +The welcome application gives an assorted list of Garuda utilities, ranging from system configurations to changing looks. It includes system cleaner, partition manager, Chaotic-aur managers, Gaming utilities, etc. + +Not only that, but it also provides access to Garuda services for its users directly from the desktop. It helps new to advanced users in terms of discovery of the services and features. + +![Garuda Welcome App][6] + +Now, I would like to highlight two crucial apps in this Garuda Linux review. + +First, the **Snapper tool** gives you controls to **create system restore points**using several options. If your system breaks at some point, you can always restore it to a stable state using this utility. This is one of the much-needed applications, considering it’s a rolling release. + +![The Snapper Tools for system restore points][7] + +Second, the **Octopi software manager**(similar to synaptic) gives you access to all necessary packages in the Arch repo. You can easily install with one click after verifying the dependencies. Moreover, it also gives you the ability to add and remove Arch repositories via GUI. + +It’s worth mentioning here that Garuda includes “chaotic-aur” and “multilib” repo by default in addition to the typical “community”, “extra”, and “core” repo. + +![Octopi Software Manager][8] + +#### The Browser + +Garuda doesn’t provide a Firefox web browser by default. It includes the **customized LibreWolf-based [FireDragon][9] web browser**, which integrates well with the KDE Plasma desktop. + +In addition, UBlock Origin and Dark Reader add-ons are pre-installed in FireDragon. The FireDragon web browser uses Garuda’s server for searching the web. I am not entirely sure whether it connects to Google in the backend. + +![FireDragon Web browser][10] + +In addition to the above apps, Garuda uses the advanced Fish shell for command line work. However, LibreOffice and other graphical utilities are not installed by default. + +#### Performance and Resource Usage + +Garuda is a little resource-heavy, even in an idle state. It consumed around 17% of CPU and RAM usage of approximately 1.2 GB at idle. And if you open more apps, then it will further shoot up. + +The htop shows that most of the idle state resources are consumed by KWin. I am not sure why there are five forks of KWin running (perhaps for Kvuntam and other theming). I cross-checked this with a standard Plasma installation, where only one process of KWin runs. + +The default KDE Plasma edition of Garuda Linux takes around 6.4 GB of disk space. + +![Garuda Linux Performance - Idle State][11] + +With the above performance metric, you may be unable to run it in low-end hardware. I recommend using an Intel i7 or similar system with at least 8GB of memory for better performance. However, the official system requirement states 4 GB of memory as below. + +- 30 GB storage space +- 4 GB RAM +- Video card with OpenGL 3.3 or better +- 64-bit system + +Also, it is worth mentioning that other flavours, such as GNOME, Cinnamon etc., should have much better performance metrics. + +### Things which grabbed my attention + +Garuda requires 30 GB of disk space, which I overlooked before installing. And it also seems a hard requirement, and the Calamares installer is configured that way. So, you must have a minimum of 30 GB of root partition to install this version of Garuda Linux. + +Moreover, it takes around 6 GB of disk space for a default install, and I am not sure why the 30 GB limit is too hardcoded in the installer. + +![Garuda Linux requires min 30 GB disk space for installation][12] + +While Garuda Linux looks wonderful, I feel the default theming and colour contrast are a little “too much”. It feels excellent with high contrast colours on a dark backdrop at first look. But it does look a little “fanboy” type. Although look and feel are subjective, everyone has a different taste. + +But always, you can change the themes, icons and whatnot with just a click in KDE Plasma. + +### Closing Notes + +Finally, to wrap up the Garuda Linux review of 2022, I must say it is one of the Arch-based distros which stands out from the other distros in the same category. Due to its popularity and active participation from the user base, it shall not be discontinued in the future. + +From a general user’s perspective, community help is available via several active channels (which can be accessed via shortcuts from the welcome screen). + +If you are keen on gaming, zen Kernel and passionate about Arch Linux, you can choose Garuda. The use case of this distro may vary. I would not recommend it for serious development, projects, media related work. + +Then again, Garuda undoubtedly brings unique apps to manage Arch Linux, which is also a plus point. If you need a fancy-looking Arch-based distro to start your Linux journey, it’s perfect. + +That said, you can download Garuda Linux from the [official website][13]. + +And do let me know your opinion about Garuda in the comment box down below. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/garuda-linux-review-2022/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/tag/linux-distro-review +[2]: https://www.debugpoint.com/wp-content/uploads/2022/05/Garuda-Linux-Desktop-2022.jpg +[3]: https://www.debugpoint.com/wp-content/uploads/2022/05/Garuda-Linux-boot-screen.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2022/05/The-Login-screen-SDDM-of-Garuda-Linux.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2022/05/Garuda-Linux-Desktop-with-Latte-dock.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2022/05/Garuda-Welcome-App.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2022/05/The-Snapper-Tools-for-system-restore-points.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2022/05/Octopi-Software-Manager.jpg +[9]: https://github.com/dr460nf1r3/firedragon-browser +[10]: https://www.debugpoint.com/wp-content/uploads/2022/05/FireDragon-Web-browser.jpg +[11]: https://www.debugpoint.com/wp-content/uploads/2022/05/Garuda-Linux-Performance-Idle-State.jpg +[12]: https://www.debugpoint.com/wp-content/uploads/2022/05/Garuda-Linux-requires-min-30-GB-disk-space-for-installation.jpg +[13]: https://garudalinux.org/downloads.html diff --git a/sources/tech/20221103.4 ⭐️ How to Install and Use Snap Packages in Ubuntu.md b/sources/tech/20221103.4 ⭐️ How to Install and Use Snap Packages in Ubuntu.md new file mode 100644 index 0000000000..0248cc800c --- /dev/null +++ b/sources/tech/20221103.4 ⭐️ How to Install and Use Snap Packages in Ubuntu.md @@ -0,0 +1,160 @@ +[#]: subject: "How to Install and Use Snap Packages in Ubuntu" +[#]: via: "https://www.debugpoint.com/how-to-install-and-use-snap-packages-in-ubuntu/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Install and Use Snap Packages in Ubuntu +====== + +**A tutorial on how to find, install and maintain snap packages in Ubuntu.** + +Snappy (in short, Snap) packages are transactional packages developed by Canonical for Ubuntu for its line of solution offerings. Due to its transactional nature, snap packages can be used in across Linux Distributions. Snap packages are handy due to their atomic update in nature for critical industrial use cases such as IoT. + +The packages can be found and installed via the command line, primarily from a web store called [Snapcraft][1]. The snap packages can also be downloaded from this store as .snap files, containing all the dependencies needed inside the .snap package. + +The installed snap software is installed in their respective folders and doesn’t interfere with the rest of the system. That means if you have installed software via typical `apt-get install xyz` and installed the same software by installing`xyz.snap`, then both versions of the same software can co-exist on your PC without interfering with each other. + +In contrast, [Flatpak][2] also has a similar concept and offers much more robust offerings, mainly for GUI-driven apps. + +This article will show you how to perform basic operations with snap via the command line. + +### How to install and manage Snap packages in Ubuntu + +#### 1. Find a Snap Package + +To find a snap package, run the below command. It will give you a list of all available snap packages, their version and description. + +``` +snap find +``` + +![snap find][3] + +You can give the name as an argument to find a specific snap package. + +``` +snap find name_of_package +``` + +![snap find name][4] + +#### 2. Install a Snap Package from Command Line + +To install a snap package, run the below command with the snap package name. + +``` +sudo snap install name-of-the-package +``` + +![snap install][5] + +The command will install the package with all of its dependencies in your system. In addition, you can also see the progress of your installation. + +After installation, you can launch the application directly from the application menu. + +#### 3. Updating Snap Package + +You can update an installed snap package by using the below command: + +``` +sudo snap refresh name-of-the-package +``` + +![snap refresh][6] + +#### 4. List your installed snaps + +To list down all the snap packages installed in your system, use the below command; + +``` +snap list +``` + +![snap list][7] + +#### 5. Removing (or uninstalling) a snap package + +To remove a snap package from your system, run the below command: + +``` +sudo snap remove name-of-the-package +``` + +![snap remove][8] + +#### 6. View Snap Activity + +To view the recent changes done using snap in your system, run the below command. This will give the installed/updated activity list in those snap packages with the date and time stamps. + +``` +snap changes +``` + +![snap changes][9] + +#### 7. Handling Snap Errors + +There are some errors you may encounter while installing/maintaining snap packages. E.g. while downloading a snap package via command `snap install`, if you press `CTRL+C` for abort, then you may get the below error while trying for the second time and so on. This is so bad that you can’t even install any other snap packages. + +``` +error: can't install "notes": snap "ubuntu-core" has changes in progress. +``` + +![snap err][10] + +Ideally, when you do the same when installing via the apt install command, apt will take care when you run it for the second time. + +**To solve this error, follow these steps:** + +- Run the below command to find out the ID of the error installation. + +``` +snap changes +``` + +![snap changes abort][11] + +- As you can see, ID=7 is the installation which I aborted. Now, run the below command with the ID. + +``` +sudo snap abort 7 +``` + +![snap abort][12] + +- This will abort the pending change that still has a pending task. Now you can continue installing the same package or a different package. + +### Closing Notes + +In this article, you learned some fundamental commands for managing snap packages in the Ubuntu system via the terminal. This should get you started for now. Also, for more common tasks such as install and remove – you can visit snapcraft.io and use install methods there. Further documentation about snap is available in the [official reference][13]. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/how-to-install-and-use-snap-packages-in-ubuntu/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://snapcraft.io/ +[2]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[3]: https://www.debugpoint.com/wp-content/uploads/2016/07/snap-find.png +[4]: https://www.debugpoint.com/wp-content/uploads/2016/07/snap-find-name.png +[5]: https://www.debugpoint.com/wp-content/uploads/2016/07/snap-install.png +[6]: https://www.debugpoint.com/wp-content/uploads/2016/07/snap-refresh.png +[7]: https://www.debugpoint.com/wp-content/uploads/2016/07/snap-list.png +[8]: https://www.debugpoint.com/wp-content/uploads/2016/07/snap-remove.png +[9]: https://www.debugpoint.com/wp-content/uploads/2016/07/snap-changes.png +[10]: https://www.debugpoint.com/wp-content/uploads/2016/07/snap-err.png +[11]: https://www.debugpoint.com/wp-content/uploads/2016/07/snap-changes-abort.png +[12]: https://www.debugpoint.com/wp-content/uploads/2016/07/snap-abort.png +[13]: https://snapcraft.io/docs diff --git a/sources/tech/20221104.2 ⭐️ Upgrade to Latest LibreOffice in Ubuntu, Linux Mint and Windows.md b/sources/tech/20221104.2 ⭐️ Upgrade to Latest LibreOffice in Ubuntu, Linux Mint and Windows.md new file mode 100644 index 0000000000..f2b7a88691 --- /dev/null +++ b/sources/tech/20221104.2 ⭐️ Upgrade to Latest LibreOffice in Ubuntu, Linux Mint and Windows.md @@ -0,0 +1,113 @@ +[#]: subject: "Upgrade to Latest LibreOffice in Ubuntu, Linux Mint and Windows" +[#]: via: "https://www.debugpoint.com/libreoffice-upgrade-update-latest/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Upgrade to Latest LibreOffice in Ubuntu, Linux Mint and Windows +====== + +**This beginner’s guide explains the steps required to upgrade to the latest LibreOffice in Ubuntu, Linux Mint****and Windows.** + +![LibreOffice 7.3.x Community Edition in Ubuntu 22.04 LTS Jammy Jellyfish][1] + +[LibreOffice][2], used by millions of users worldwide, is the most popular free office suite today. It consists of a spreadsheet program (Calc), document processor (Writer), presentation (Impress), drawing (Draw), and Math module to help you with most of the office, business, academic, and day-to-day work. + +LibreOffice can act as an excellent replacement for paid Microsoft Office suite due to its compatibility with proprietary file formats such as DOCX, PPTX, and XLSX. It is a fork of the Apache OpenOffice productivity suite and is actively developed by thousands of global contributors. + +![LibreOffice Logo][3] + +### Upgrade to Latest LibreOffice + +LibreOffice recently changed its versioning methods from the Fresh and Still concept. Now, LibreOffice has a **community** edition and a recommended **enterprise** edition. This is because many businesses use the latest LibreOffice version with cutting-edge features, hampering the development effort. Hence the team suggested the business users get paid support from official LibreOffice partners for long-term support. You can read the blog post [here][4]. + +That said, here are the current versions. + +#### Latest LibreOffice Versions + +- The current LibreOffice Community version series is **LibreOffice 7.4.x.** +- And the LibreOffice stable recommended version for business is **LibreOffice 7.3.x**. + +#### Upgrade to Latest LibreOffice in Ubuntu, Linux Mint, and Other Ubuntu Based distributions + +[Ubuntu 22.04 LTS Jammy Jellyfish][5] have LibreOffice 7.3.x. + +**Ubuntu 20.04 LTS** has LibreOffice 6.4.7 at the moment, and soon it will get the update for the next iteration. + +**Ubuntu 18.04 LTS,** supported until[April 2023][6], has the LibreOffice 6.2 version. Linux Mint 19.x also provides the same. You can still download and install LibreOffice 6.3.x version in Ubuntu 18.04 or Linux Mint 19.x. + +It is always wiser to stick to the LibreOffice version provided by the distribution. Moreover, unless you need the latest features, you should not upgrade. If you like to experiment, you can go ahead. + +##### Via PPA + +- You can install and upgrade to the latest Fresh version using the official LibreOffice PPA. Open a terminal and run the below commands in Ubuntu or Linux Mint. + +``` +sudo add-apt-repository ppa:libreoffice/ppa +``` + +``` +sudo apt update && sudo apt install libreoffice +``` + +- To **downgrade** LibreOffice and remove the PPA, run the below commands from the terminal sequentially. + +``` +sudo add-apt-repository --remove ppa:libreoffice/ppa +``` + +``` +sudo apt install ppa-purge && sudo ppa-purge ppa:libreoffice/ppa +``` + +##### Via Snap + +You can also have the option to install the latest LibreOffice as Snap via the below option. [Snap packages][7] can be used across supported Linux distributions as a standalone package. Thus, you can keep your existing installation of LibreOffice and still run the latest Snap version. + +Remember that technically you can run two versions of LibreOffice in parallel using one Snap version. However, ensure there might be slight file association issues and other problems. This applies to Flatpak as well. + +[Download LibreOffice as Snap][8] + +##### Via Flatpak + +Flatpak is another way by which you can have the latest LibreOffice alongside the distro-provided version. You can [set up your system for Flatpak][9] and download LibreOffice via the below link. + +[Download LibreOffice as Flatpak][10] + +#### Upgrade for Windows + +For Windows, you can’t upgrade directly from the existing installation. You can download the latest LibreOffice from [this page][11] and do the installation. During installation, your existing version would be uninstalled. + +### Upgrade Troubleshooting + +If you encounter any problems or system instability after the upgrade, it is better to do a clean install. So, you can download the latest copy from [this link][11] and install it. If you are using Ubuntu or Linux Mint, don’t forget to remove the stock version first before installing the latest version. + +Finally, drop a comment below if you face issues while upgrading to the latest LibreOffice in Ubuntu Linux and others. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/libreoffice-upgrade-update-latest/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2019/09/LibreOffice-7.3.x-Community-Edition-in-Ubuntu-22.04-LTS-Jammy-Jellyfish.jpg +[2]: https://www.libreoffice.org/ +[3]: https://www.debugpoint.com/wp-content/uploads/2019/09/LibreOffice-Icon.png +[4]: https://blog.documentfoundation.org/blog/2021/02/03/libreoffice-7-1-community/ +[5]: https://www.debugpoint.com/2022/01/ubuntu-22-04-lts/ +[6]: https://www.debugpoint.com/ubuntu-release-dates-wiki/ +[7]: https://www.debugpoint.com/2016/07/how-to-install-and-use-snap-packages-in-ubuntu/ +[8]: https://snapcraft.io/libreoffice +[9]: https://www.debugpoint.com/2018/07/how-to-install-flatpak-apps-ubuntu-linux/ +[10]: https://flathub.org/apps/details/org.libreoffice.LibreOffice +[11]: https://www.libreoffice.org/download/download/ diff --git a/sources/tech/20221104.6 ⭐️⭐️ 10 Best Open Source Bots for Your Discord Server.md b/sources/tech/20221104.6 ⭐️⭐️ 10 Best Open Source Bots for Your Discord Server.md new file mode 100644 index 0000000000..1b94a34692 --- /dev/null +++ b/sources/tech/20221104.6 ⭐️⭐️ 10 Best Open Source Bots for Your Discord Server.md @@ -0,0 +1,245 @@ +[#]: subject: "10 Best Open Source Bots for Your Discord Server" +[#]: via: "https://itsfoss.com/open-source-discord-bots/" +[#]: author: "Ankush Das https://itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +10 Best Open Source Bots for Your Discord Server +====== + +Discord started as a platform where gamers and friends could hang out. **[Discord][1] has over 150 million users** in **2022**, even after [turning down][2] a **$12 billion offer from Microsoft**. + +If it is your first time hearing about it, consider it something like Slack, but with countless fun functionalities to create communities (i.e., servers). + +Among all the features, Discord bots allow automating things or spice up your server. But most of them are proprietary. So, in this list, I suggest some of the **best open-source Discord bots**. + +**Note:**Bots can spread malware and affect your entire Discord server. You must ensure that you do not add bots you do not know about. And this is why you might want to trust open-source Discord bots more than other options. + +### 1. MonitoRSS + +![monitorss itsfoss][3] + +Highlights: + +- **RSS Feed** +- **Filters and Subscriptions** +- **Hosted** + +[MonitoRSS][4] is a useful Discord bot that enables your community to receive news from any sources that support RSS. + +It is a reasonably popular bot that works as expected. You can add it to a particular channel, customize its look, and start getting news updates on your Discord server. + +It also lets you filter articles for your feed and allow users to subscribe to an article as per their liking. This can be managed and customized using a web interface control panel. + +Explore more on its [GitHub page][5]. + +### 2. ModMail + +![modmail discord][6] + +Highlights: + +- **Enables users to contact server staff** +- **Self-host** +- **Hosted version** +- **Optional premium** + +[ModMail][7] is a simple open-source Discord bot that seamlessly lets a user contact the staff/admins/moderators of a Discord channel. + +Traditionally, you have to reach out to multiple people via DMs to expect help on something you want to know. However, some servers have many users, so it may be difficult for the server staff to get back to you. + +ModMail creates a separate channel when you send a message to the bot. And this channel acts as a shared inbox to all the administrators, mods, and you. + +![modmail bot][8] + +Not only does easy messaging, but it also helps the server staff to conveniently read past transcripts, enable automated replies, save snippets of them, respond anonymously, and more. Some features are premium-only. + +You can check out its [official website][9] and [GitHub page][10] for more info. It also gives you all the necessary information to self-host it. + +### 3. Red Discord Bot (Self-Hosted) + +![red discord bot][11] + +Highlights: + +- **Highly Customizable** +- **Moderation****tasks** +- **Good documentation** +- **Multipurpose** + +[Red][12] is an entirely modular bot that provides you with many functions, including music, moderation, trivia, stream alerts, and more. + +Red should be useful whether you want it to send welcome messages or help moderate the server. + +Unlike some others, you cannot add the bot directly to your server. You will have to self-host it, configure it, and then get the ability to add it to your server. + +The installation does not need any sort of coding; you have to follow the [documentation][13]. + +### 4. Discord Music Bot (Self-Hosted) + +![discord music bot][14] + +Highlights: + +- **It****supports Spotify, SoundCloud, and YouTube**. +- **It offers shuffling, volume control, and a web dashboard to manage it all**. + +[Discord Music Bot][15] (not a unique name, I know) is a pretty popular Discord bot that you can self-host. + +It supports Spotify, SoundCloud, and YouTube. Some features include shuffling, volume control, and a web dashboard. + +You can follow the instructions on its [GitHub page][15] to install and configure it for your server. + +### 5. Discord Tickets (Self-Hosted) + +![discord tickets][16] + +Highlights: + +- **Ticket management** +- **Add custom branding for free** + +Do you have customers for your services/products on Discord? You can use [Discord Tickets][17] to manage/create tickets and add your branding for free. + +Most of the Discord’s popular ticket management bots are proprietary and require a premium subscription to add your brand logo. + +With Discord Tickets, you can self-host and customize as per your requirements. Explore more about it on its [GitHub page][18]. + +### 6. EvoBot (Self-Hosted) + +![evobot][19] + +Highlights: + +- **Highly customizable** +- **Search for music or use a URL to play** + +[EvoBot][20] is yet another open-source music Discord bot with lots of customization options. + +You can play music from YouTube and SoundCloud using its URL or search/play. + +Explore more about its installation and configuration on its [GitHub page][20]. + +### 7. Atlanta Bot + +![atlanta bot][21] + +Highlights: + +- **Hosted version** +- **Self-host option** +- **Web dashboard** +- **Multipurpose** + +[AtlantaBot][22] is yet another all-in-one bot that provides functionalities for moderation, music, fun commands, and several commands. + +Furthermore, it features its dashboard with valuable options. You can set up the dashboard and manage your server/configuration through it. You can also perform limited translations using the bot. + +It can be self-hosted, but if you would rather not make an effort, you can invite a hosted version of the bot. + +### 8. YAGPDB (Self-Hosted) + +![reddit feed yagpdb][23] + +Highlights: + +- **Custom commands** +- **Automatic moderator** +- **Reddit/YouTube feed** +- **Moderation****tasks** + +[YAGPDB][24] stands for **Yet Another General Purpose Discord Bot**. + +With this bot, you can quickly perform general moderation tasks, add custom commands, create an automatic moderator, manage/create roles, and pull Reddit/YouTube feeds. + +It is configurable. So, you can do more with it than what I just mentioned. Explore more about it on its [GitHub page][25]. + +### 9. Loritta + +![loritta][26] + +Highlights: + +- **Hosted version** +- **Self-host option** +- **Engagement and Moderation features.** + +If you are looking for a multipurpose Discord bot with an interesting character, [Loritta][27] would be a good pick. + +It supports moderation, entertainment, and automation features. You can self-host it or use the hosted version. + +The developer presents the bot as a girl who helps you moderate, entertain, and engage the members of your server. Additionally, it offers a premium plan for some extra perks. + +Explore more about it on its [GitHub page][28]. + +### 10. Melijn + +![melijn][29] + +Highlights: + +- **Hosted version** +- **Self-host option** +- **Moderation features.** + +[Melijn][30] is yet another multipurpose bot for Discord servers. + +You can interact with audio commands, moderate, perform user verifications, and create role groups. + +It offers a hosted version and lets you self-host it, following the instructions on its [GitHub page][31]. + +### What’s Your Favorite Discord Bot? + +If you are a Discord server moderator or admin, what bot do you like to use for your community? + +Do you focus on moderation features or engagement features? What are the standard features that you look for in a Discord bot? + +Share your thoughts in the comments below. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/open-source-discord-bots/ + +作者:[Ankush Das][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lkxed +[1]: https://discord.com/company +[2]: https://www.bloomberg.com/news/articles/2021-04-20/chat-app-discord-is-said-to-end-takeover-talks-with-microsoft +[3]: https://itsfoss.com/wp-content/uploads/2022/11/monitorss-itsfoss.jpg +[4]: https://monitorss.xyz +[5]: https://github.com/synzen/MonitoRSS +[6]: https://itsfoss.com/wp-content/uploads/2022/11/modmail-discord.jpg +[7]: https://modmail.xyz/ +[8]: https://itsfoss.com/wp-content/uploads/2022/11/modmail-bot.png +[9]: https://modmail.xyz/premium +[10]: https://github.com/chamburr/modmail +[11]: https://itsfoss.com/wp-content/uploads/2022/11/red-discord-bot.png +[12]: https://github.com/Cog-Creators/Red-DiscordBot +[13]: https://docs.discord.red/en/stable/ +[14]: https://itsfoss.com/wp-content/uploads/2022/11/discord-music-bot.png +[15]: https://github.com/SudhanPlayz/Discord-MusicBot +[16]: https://itsfoss.com/wp-content/uploads/2022/11/discord-tickets.jpg +[17]: https://discordtickets.app +[18]: https://github.com/discord-tickets/bot +[19]: https://itsfoss.com/wp-content/uploads/2022/11/evobot.png +[20]: https://github.com/eritislami/evobot +[21]: https://itsfoss.com/wp-content/uploads/2022/11/atlanta-bot.png +[22]: https://github.com/Androz2091/AtlantaBot +[23]: https://itsfoss.com/wp-content/uploads/2022/11/reddit-feed-yagpdb.png +[24]: https://yagpdb.xyz +[25]: https://github.com/botlabs-gg/yagpdb +[26]: https://itsfoss.com/wp-content/uploads/2022/11/loritta.jpg +[27]: https://loritta.website/us/ +[28]: https://github.com/LorittaBot +[29]: https://itsfoss.com/wp-content/uploads/2022/11/melijn.jpg +[30]: https://melijn.com +[31]: https://github.com/ToxicMushroom/Melijn diff --git a/sources/tech/20221104.7 ⭐️ How to iterate over tables in Lua.md b/sources/tech/20221104.7 ⭐️ How to iterate over tables in Lua.md new file mode 100644 index 0000000000..08bd33cad8 --- /dev/null +++ b/sources/tech/20221104.7 ⭐️ How to iterate over tables in Lua.md @@ -0,0 +1,184 @@ +[#]: subject: "How to iterate over tables in Lua" +[#]: via: "https://opensource.com/article/22/11/iterate-over-tables-lua" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to iterate over tables in Lua +====== + +Create structure that makes it easier to find stored data. + +In the [Lua][1] programming language, an array is called a table. A table is used in Lua to store data. If you're storing a lot of data in a structured way, it's useful to know your options for retrieving that data when you need it. + +### Creating a table in Lua + +To create a table in Lua, you instantiate the table with an arbitrary name: + +``` +mytable = {} +``` + +There are different ways you can structure your data in a table. You could fill it with values, essentially creating a list (called a list in some languages): + +``` +mytable = {'zombie','apocalypse'} +``` + +Or you could create an associated array (called a map or dictionary in some languages). You can add arbitrary keys to the table using dot notation. You can also add a value to that key the same way you add a value to a variable: + +``` +myarray = {} +myarray.baz = 'happy' +myarray.qux = 'halloween' +``` + +You can add verification with the `assert()` function: + +``` +[assert][2](myarray.baz == 'happy', 'unexpected value in myarray.baz') +[assert][2](myarray.qux == 'halloween', 'unexpected value in myarray.qux') +``` + +You now have two tables: a list-style `mytable` and an associative array-style `myarray`. + +### Iterating over a table with pairs + +Lua's `pairs()` function extracts key and value pairs from a table. + +``` +print('pairs of myarray:') +for k, v in pairs(myarray) do +  print(k, v) +end +``` + +Here's the output: + +``` +pairs of myarray: +baz     happy +qux     halloween +``` + +If there are no keys in a table, Lua uses an index. For instance, the `mytable` table contains the values `zombie` and `apocalypse`. It contains no keys, but Lua can improvise: + +``` +print('pairs of mytable:') +for k, v in pairs(mytable) do +  print(k, v) +end +``` + +Here's the output: + +``` +1   zombie +2   apocalypse +``` + +### Iterating over a table with ipairs + +To account for the fact that tables without keys are common, Lua also provides the `ipairs` function. This function extracts the index and the value: + +``` +print('ipairs of mytable:') +for i, v in ipairs(mytable) do +  print(i, v) +end +``` + +The output is, in this case, the same as the output of `pairs`: + +``` +1   zombie +2   apocalypse +``` + +However, watch what happens when you add a key and value pair to `mytable`: + +``` +mytable.surprise = 'this value has a key' +print('ipairs of mytable:') +for i, v in ipairs(mytable) do +  print(i, v) +end +``` + +Lua ignores the key and value because `ipairs` retrieves only indexed entries: + +``` +1   zombie +2   apocalypse +``` + +The key and value pair, however, have been stored in the table: + +``` +print('pairs of mytable:') +for k, v in ipairs(mytable) do +  print(k, v) +end +``` + +The output: + +``` +1          zombie +2          apocalypse +surprise   this value has a key +``` + +### Retrieving arbitrary values + +You don't have to iterate over a table to get data out of it. You can call arbitrary data by either index or key: + +``` +print('call by index:') +print(mytable[2]) +print(mytable[1]) +print(myarray[2]) +print(myarray[1]) +print('call by key:') +print(myarray['qux']) +print(myarray['baz']) +print(mytable['surprise']) +``` + +The output: + +``` +call by index: +apocalypse +zombie +nil +nil + +call by key: +halloween +happy +this value has a key +``` + +### Data structures + +Sometimes using a Lua table makes a lot more sense than trying to keep track of dozens of individual variables. Once you understand how to structure and retrieve data in a language, you're empowered to generate complex data in an organized and safe way. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/iterate-over-tables-lua + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/22/11/lua-worth-learning +[2]: http://www.opengroup.org/onlinepubs/009695399/functions/assert.html diff --git a/sources/tech/20221105.2 ⭐️ How to Install and Configure KDE Plasma Desktop in Arch Linux [Complete Guide].md b/sources/tech/20221105.2 ⭐️ How to Install and Configure KDE Plasma Desktop in Arch Linux [Complete Guide].md new file mode 100644 index 0000000000..1d5beda8c7 --- /dev/null +++ b/sources/tech/20221105.2 ⭐️ How to Install and Configure KDE Plasma Desktop in Arch Linux [Complete Guide].md @@ -0,0 +1,117 @@ +[#]: subject: "How to Install and Configure KDE Plasma Desktop in Arch Linux [Complete Guide]" +[#]: via: "https://www.debugpoint.com/kde-plasma-arch-linux-install/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Install and Configure KDE Plasma Desktop in Arch Linux [Complete Guide] +====== + +**If you love KDE and Arch Linux, this guide is for you. This guide explains the steps needed to set up a fully functioning KDE Plasma desktop with all of its native applications.** + +Let’s take a look at how you can install KDE Plasma in Arch Linux. + +In the earlier posts, we explained that you could set up a bare minimum Arch Linux with an [automated archinstall script][1] and also explained how you can install GNOME, LXQt, and Xfce desktop Arch Linux. And now, we explain the steps for the KDE Plasma desktop. + +### KDE Plasma desktop + +[KDE Plasma][2] is a lightweight and visually appealing desktop environment for Linux that comes with tons of customization options at a very detailed level. The latest iteration of this desktop is Plasma 5, which is based on Qt5, KDE Framework 5 provides both Xorg and Wayland display server options. + +The current KDE Plasma desktop version is [5.26 stable][3], which this article uses for installation. + +This guide requires that you install the bare minimum Arch Linux shell already. If not, then follow this [simple guide][1] to install a basic skeleton of Arch Linux. Then continue with the following steps. + +Also, ensure you have admin privileges with your user for running the pacman package manager. + +### Install and Configure KDE Plasma Desktop in Arch Linux + +You need the following packages for a fully functional KDE Plasma system in Arch Linux. + +- [plasma][4] (~590 mb) – basic plasma packages +- [kde-applications][5](~800 mb) – additional KDE native applications (Konsole, etc) +- xorg – display server +- sddm – display manager + +These four packages are necessary. However, you can optionally install [plasma-wayland-session][6] if you want to use the Wayland display server. + +#### 1. Install packages + +Open a terminal and run the following command to install those packages. + +``` +pacman -S --needed xorg sddmpacman -S --needed plasma kde-applications +``` + +When asked to select a package, press enter for default selection. If you are unsure, choose the following options when asked on the screen. + +pipewire-media-sessionphonon-qt5-gstreamerpyside2cronietesseract-data-eng (for english) + +Wait for the installation to finish. + +#### 2. Enable display server and network + +Now it’s time to enable the display manager and network; otherwise, you will not be able to log in. Run the following commands after the above commands are complete. + +``` +sudo systemctl enable sddmsudo systemctl enable NetworkManager +``` + +#### 3. Configure sddm and reboot + +One last configuration you need for the KDE Plasma desktop is related to the login screen. By default, sddm uses its own failsafe login screen, which is not the typical KDE Plasma “breeze” login screen. A small tweak is needed for a KDE Plasma login screen. + +Open the `sddm.conf` file from the terminal. + +``` +sudo nano /usr/lib/sddm/sddm.conf.d/default.conf +``` + +Change the theme section as per below. + +``` +[Theme] +# current theme name + Current=breeze +``` + +![Modify the sddm configuration to accept breeze theme][7] + +Press `CTRL+O` and `CTRL+X` to save and exit the nano editor. Now you can restart your Arch system using the below command: + +``` +sudo systemctl reboot +``` + +And you should be greeted with a nice KDE Plasma login screen and a desktop. + +![Arch Linux Running KDE Plasma Desktop][8] + +That wraps up the steps for KDE Plasma desktop installation in Arch Linux. I hope you get all the steps correctly and can install them. If you face any errors, comment below. + +What’s next? You may want to check out other [Arch Linux guides][9], Or browse the website for a more interesting read. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/kde-plasma-arch-linux-install/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/archinstall-guide/ +[2]: https://kde.org/plasma-desktop/ +[3]: https://www.debugpoint.com/kde-plasma-5-26/ +[4]: https://archlinux.org/packages/extra/x86_64/plasma-desktop/ +[5]: https://archlinux.org/groups/x86_64/kde-applications/ +[6]: https://archlinux.org/packages/extra/x86_64/plasma-wayland-session/ +[7]: https://www.debugpoint.com/wp-content/uploads/2021/01/Modify-the-sddm-configuration-to-accept-breeze-theme.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2021/01/Arch-Linux-Running-KDE-Plasma-Desktop-1024x640.jpg +[9]: https://www.debugpoint.com/tag/arch-linux diff --git a/sources/tech/20221105.3 ⭐️⭐️ How to Install GNOME Desktop in Arch Linux [Complete Guide].md b/sources/tech/20221105.3 ⭐️⭐️ How to Install GNOME Desktop in Arch Linux [Complete Guide].md new file mode 100644 index 0000000000..221dd39e19 --- /dev/null +++ b/sources/tech/20221105.3 ⭐️⭐️ How to Install GNOME Desktop in Arch Linux [Complete Guide].md @@ -0,0 +1,290 @@ +[#]: subject: "How to Install GNOME Desktop in Arch Linux [Complete Guide]" +[#]: via: "https://www.debugpoint.com/gnome-arch-linux-install/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Install GNOME Desktop in Arch Linux [Complete Guide] +====== + +**This guide explains the steps you need to install GNOME Desktop in Arch Linux.** + +This guide has two parts. The first part deals with installing the base Arch system. The second part is installing the complete GNOME desktop environment on top of Arch Linux. + +### What is the GNOME Desktop? + +GNOME is a popular desktop environment that is a default desktop choice for many top-tier desktops-based Linux distributions such as Ubuntu and Fedora. Almost all flavors provide a GNOME desktop option. + +The GNOME desktop is one of the stable and user-friendly desktops, hence it is preferred by many average, advanced users. If you want a desktop that remains invisible while you carry out your work, GNOME is the one. It never gets into your way while working. Hence it is still popular and default option for many despite many controversies about being GNOME3 (current iteration) being slow, resource-heavy, etc, + +With all that said, let’s take a look at how you can install a GNOME desktop in bare metal Arch installations. + +### Install GNOME Desktop in Arch Linux + +#### Part 1: Install Arch Linux + +If you have already Arch Linux installed, you can skip this step and directly go to the install GNOME Desktop section below. + +For a quick Arch Linux base installation, follow the below steps. You can also visit [this guide][1] for a complete tutorial on how to install Arch Linux as Dual Boot or in a virtual machine. + +The following steps are a straightforward legacy way of installing Arch. Follow the guide below for a more modern way of using the archinstall script. Once you are done, come back to resume GNOME installation via [step 2][2]. + +Modern method: Install using archinstall script (recommended) + +##### Legacy method: Download Arch Linux + +Download Arch Linux .iso from the below link. There are magnet and torrent links available. Once you download, write the ISO to a USB drive. And then boot from the drive. + +[Download Arch Linux][3] + +If you are planning to install it as a virtual machine image via GNOME Boxes, virt-manager – then you do not need to write it to a USB drive. + +##### Boot and Configure Partitions + +After you boot from the Arch Linux iso, you have to run a series of commands to install the base system. + +First, run the below command to find out the device identifier. + +``` +fdisk -l +``` + +![fdisk -l before][4] + +Then with the device identifier, run the below command to start partitioning your disk. Make sure to change `/dev/sda` as per your system. + +``` +cfdisk /dev/sda +``` + +Select `label type = dos` in the next prompt. + +Select the free space and choose option NEW from the bottom. In this example, I will create three partitions as per below. + +``` +/dev/sda1 - 1G - for /boot/dev/sda2 - 5G - for root/dev/sda3 - 1G - for swap +``` + +![cfdisk][5] + +In the next screen provide partition size for the boot partition (for this example, I gave 1 GB). Select it as the primary partition. + +Repeat the same step for the main root partition of size 5GB. + +![Swap partition type change][6] + +Create a swap partition using the same steps with size 1G (you may change it as per your need). After you create the swap partition, make sure to choose Type at the bottom and mark it as a swap with the option “Linux Swap/Solaris”. + +![final partition list in cfdisk][7] + +Once done, write the changes to the disk using the Write option at the bottom. Make sure you take a backup before you write as this is a permanent change in your system. + +Run the below command to check before you proceed. You can see in this example, three partitions are listed. + +``` +fdisk -l +``` + +![final partition list in fdisk][8] + +Run the following commands in sequence to format and create an ext4 file system in the newly created partition above. Make sure you change the /dev/sda1 and /dev/sda2 as per your need. + +``` +mkfs.ext4 /dev/sda1mkfs.ext4 /dev/sda2mkswap /dev/sda3swapon /dev/sda3 +``` + +After completion, mount the system and create necessary directories. + +``` +mount /dev/sda2 /mntmkdir /mnt/boot /mnt/var /mnt/homemount /dev/sda1 /mnt/boot +``` + +Again, make sure you change /dev/sda1, /dev/sda2 and /dev/sda3 as per your system. + +![prepare file system][9] + +##### Install the base system + +I hope you are already connected to the internet. If not, try using a USB dongle or wired internet connection which Arch installer automatically configure and detect. If you do not have a wired connection available, follow [this guide][10] to configure a wireless or wifi network using Arch Linux installer. + +Run the below commands in sequence to install the base system in the mounted partition. The download size is approx 400 MB. + +``` +pacman -Syypacstrap /mnt base base-devel linux linux-firmware nano dhcpcd net-tools grub +``` + +![Install base system][11] + +Once complete, generate file system table without which you can’t boot the system. + +``` +genfstab -U /mnt >> /mnt/etc/fstab +``` + +##### Configure the base system + +Follow the below commands in sequence to configure the base system. This involves setting up your locale, language, add a login user, and setting up the internet. + +``` +arch-chroot /mntnano /etc/locale.gen +``` + +Uncomment the locale of your choice by removing # at the beginning. For this guide, I have chosen en_US.UTF-8 UTF-8. Press CTRL+O, Enter, and CTRL+X to exit from nano. + +![change locale][12] + +Generate the locale using: + +``` +locale-gen +``` + +Setup the language using the below command. + +``` +echo LANG=en_US.UTF-8 > /etc/locale.confexport LANG=en_US.UTF-8 +``` + +Setup the local time zone. + +``` +ln -s /usr/share/zoneinfo/America/New_York /etc/localtime +``` + +Again, you can choose them as per your need. You can list the local timezones via the below commands. + +``` +ls /usr/share/zoneinfo +ls /usr/share/zoneinfo/America +``` + +Setup the hardware clock, create a hostname, and enable the DHCP for the internet using the below commands in sequence. You can change `"arindam-pc"` to any hostname as per your desire. + +``` +hwclock --systohc --utcecho arindam-pc > /etc/hostnamesystemctl enable dhcpcd +``` + +The next step is to set up the root user password, create an admin user, and add the user in the sudoers file. + +Follow the below commands in sequence. Make sure to change the user name from `debugpoint` to something else as per your need. + +``` +passwd rootuseradd -m -g users -G wheel -s /bin/bash debugpointpasswd debugpoint +``` + +![create user][13] + +Open the sudoers file and add the below lines. + +``` +nano /etc/sudoers +``` + +Add below lines. As you already created the root user, the entry should be there. + +``` +root ALL=(ALL) ALLdebugpoint ALL=(ALL) ALL +``` + +![update sudoers file][14] + +Install grub, setup the initial ramdisk environment, unmount the system using the below commands in sequence. + +``` +grub-install /dev/sdagrub-mkconfig -o /boot/grub/grub.cfgmkinitcpio -p linuxexit +``` + +![configure grub][15] + +Then reboot your system. If you are isntalling in a physical system, unplug the USB media at this step. + +``` +umount /mnt/boot +umount /mnt +reboot +``` + +You have now successfully installed the Arch Linux base system. It’s time to install the complete GNOME desktop. + +![Arch is installed][16] + +#### Part 2: Install GNOME in Arch Linux + +After reboot, choose Arch Linux from grub. In the Arch Linux prompt start running the following commands in sequence. These commands install Xorg server, display manager, GNOME desktop components, controller packages, and additional applications. + +For all the commands use default, i.e. press enter when asked. + +- **Install Xorg server. Approx install size is 80 MB.** + +``` +sudo pacman -S --needed xorg +``` + +- **Install display manager, GNOME desktop. Approx install size is 300 MB.** + +``` +sudo pacman -S --needed gnome gnome-tweaks nautilus-sendto gnome-nettool gnome-usage gnome gnome-multi-writer adwaita-icon-theme xdg-user-dirs-gtk fwupd arc-gtk-theme seahosrse gdm +``` + +The above installation would ask for several options for packages. Choose any of the ones you want. If you are unsure, choose jack, noto-sans and xdg-portal-desktop-gnome when asked. + +- **Install applications** + +This is just a reference. You can also install the ones you require. + +``` +sudo pacman -S --needed firefox vlc filezilla leafpad xscreensaver archlinux-wallpaper +``` + +Now it’s time to enable the display manager and network manager as service. So that next time you log on, they can run automatically by systemd. + +``` +systemctl enable gdm +systemctl enable NetworkManager +``` + +Reboot the system using the reboot command. + +``` +reboot +``` + +![Arch Linux Running GNOME 43 Desktop][17] + +If all goes well, you should see a nice login prompt on the GNOME desktop. Login using the credential you just created. You should be greeted with a nice and clean GNOME 43 desktop in Arch Linux. + +I hope this guide helps you to install GNOME desktop in a bare metal Arch instalation. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/gnome-arch-linux-install/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/2020/11/install-arch-linux/ +[2]: https://www.debugpoint.com/archinstall-guide/ +[3]: https://www.archlinux.org/download/ +[4]: https://www.debugpoint.com/wp-content/uploads/2020/12/fdisk-l-before.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2020/12/cfdisk-1024x159.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2020/12/Swap-parition-type-change.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2020/12/final-partition-list-in-cfdisk-1024x178.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2020/12/final-partition-list-in-fdisk.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2020/12/prepare-file-system.jpg +[10]: https://www.debugpoint.com/2020/11/connect-wifi-terminal-linux/ +[11]: https://www.debugpoint.com/wp-content/uploads/2020/12/Install-base-system-1024x205.jpg +[12]: https://www.debugpoint.com/wp-content/uploads/2020/12/change-locale.jpg +[13]: https://www.debugpoint.com/wp-content/uploads/2020/12/create-user.jpg +[14]: https://www.debugpoint.com/wp-content/uploads/2020/12/update-sudoers-file.jpg +[15]: https://www.debugpoint.com/wp-content/uploads/2020/12/configure-grub-1024x639.jpg +[16]: https://www.debugpoint.com/wp-content/uploads/2020/12/Arch-is-installed.jpg +[17]: https://www.debugpoint.com/wp-content/uploads/2020/12/Arch-Linux-Running-GNOME-43-Desktop-1024x636.jpg diff --git a/sources/tech/20221106 Making a DNS query in Ruby from scratch.md b/sources/tech/20221106 Making a DNS query in Ruby from scratch.md new file mode 100644 index 0000000000..5801624fed --- /dev/null +++ b/sources/tech/20221106 Making a DNS query in Ruby from scratch.md @@ -0,0 +1,548 @@ +[#]: subject: "Making a DNS query in Ruby from scratch" +[#]: via: "https://jvns.ca/blog/2022/11/06/making-a-dns-query-in-ruby-from-scratch/" +[#]: author: "Julia Evans https://jvns.ca/" +[#]: collector: "lujun9972" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Making a DNS query in Ruby from scratch +====== + +Hello! A while back I wrote a post about [how to write a toy DNS resolver in Go][1]. + +In that post I left out “how to generate and parse DNS queries” because I thought it was boring, but a few people pointed out that they did not know how to parse and generate DNS queries and they were interested in how to do it. + +This made me curious – how much work _is_ it do the DNS parsing? It turns out we can do it in a pretty nice 120-line Ruby program, which is not that bad. + +So here’s a quick post on how to generate DNS queries and parse DNS responses! We’re going to do it in Ruby because I’m giving a talk at a Ruby conference soon, and this blog post is partly prep for that talk :). I’ve tried to keep it readable for folks who don’t know Ruby though, I’ve only used pretty basic Ruby code. + +At the end we’re going to have a very simple toy Ruby version of `dig` that can look up domain names like this: + +``` + + $ ruby dig.rb example.com + example.com 20314 A 93.184.216.34 + +``` + +The whole thing is about 120 lines of code, so it’s not _that_ much. (The final program is [dig.rb][2] if you want to skip the explanations and just read some code.) We won’t implement the “how a DNS resolver works” from the previous post because, well, we already did that. Let’s get into it! + +Along the way I’m going to try to explain how you could figure out some of this stuff yourself if you were trying to figure out how DNS queries are formatted from scratch. Mostly that’s “poke around in Wireshark” and “read RFC 1035, the DNS RFC”. + +### step 1: open a UDP socket + +We need to actually _send_ our queries, so to do that we need to open a UDP socket. We’ll send our queries to `8.8.8.8`, Google’s DNS server. + +Here’s the code to set up a UDP connection to `8.8.8.8`, port 53 (the DNS port). + +``` + + require 'socket' + sock = UDPSocket.new + + sock.bind('0.0.0.0', 12345) + sock.connect('8.8.8.8', 53) + +``` + +##### a quick note on UDP + +I’m not going to say too much about UDP here, but I will say that the basic unit of computer networking is the “packet” (a packet is a string of bytes), and in this program we’re going to do the simplest possible thing you can do with a computer network – send 1 packet and receive 1 packet in response. + +So UDP is a way to send packets in the simplest possible way. + +It’s the most common way to send DNS queries, though you can also use TCP or DNS-over-HTTPS instead. + +##### step 2: copy a DNS query from Wireshark + +Next: let’s say we have no idea how DNS works but we want to send a working query as fast as possible. The easiest way to get a DNS query to play with and make sure our UDP connection is working is to just copy one that already works! + +So that’s what we’re going to do, using Wireshark (an incredible packet analysis tool) + +The steps I used to this are roughly: + + 1. Open Wireshark and click ‘capture’ + 2. Enter `udp.port == 53` as a filter (in the search bar) + 3. Run `ping example.com` in my terminal (to generate a DNS query) + 4. Click on the DNS query (“Standard query A example.com”) + 5. Right click on “Domain Name System (query”) in the bottom left pane + 6. Click ‘Copy’ -> ‘as a hex stream’ + 7. Now I have “b96201000001000000000000076578616d706c6503636f6d0000010001” on my clipboard, to use in my Ruby program. Hooray! + + + +##### step 3: decode the hex stream and send the DNS query + +Now we can send our DNS query to `8.8.8.8`! Here’s what that looks like: we just need to add 5 lines of code + +``` + + hex_string = "b96201000001000000000000076578616d706c6503636f6d0000010001" + bytes = [hex_string].pack('H*') + sock.send(bytes, 0) + + # get the reply + reply, _ = sock.recvfrom(1024) + puts reply.unpack('H*') + +``` + +`[hex_string].pack('H*')` is translating our hex string into a byte string. At this point we don’t really know what this data _means_ but we’ll get there in a second. + +We can also take this opportunity to make sure our program is working and is sending valid data, using `tcpdump`. How I did that: + + 1. Run `sudo tcpdump -ni any port 53 and host 8.8.8.8` in a terminal tab + 2. In a different terminal tab, run [this Ruby program][3] (`ruby dns-1.rb`) + + + +Here’s what the output looks like: + +``` + + $ sudo tcpdump -ni any port 53 and host 8.8.8.8 + 08:50:28.287440 IP 192.168.1.174.12345 > 8.8.8.8.53: 47458+ A? example.com. (29) + 08:50:28.312043 IP 8.8.8.8.53 > 192.168.1.174.12345: 47458 1/0/0 A 93.184.216.34 (45) + +``` + +This is really good - we can see the DNS request (“what’s the IP for `example.com`”) and the response (“it’s 93.184.216.34”). So everything is working. Now we just need to, you know, figure out how to generate and decode this data ourselves. + +##### step 4: learn a little about how DNS queries are formatted + +Now that we have a DNS query for `example.com`, let’s learn about what it means. + +Here’s our query, formatted as hex. + +``` + + b96201000001000000000000076578616d706c6503636f6d0000010001 + +``` + +If you poke around in Wireshark, you’ll see that this query has 2 parts: + + * The **header** (`b96201000001000000000000`) + * The **question** (`076578616d706c6503636f6d0000010001`) + + + +##### step 5: make the header + +Our goal in this step is to generate the byte string `b96201000001000000000000`, but with a Ruby function instead of hardcoding it. + +So: the header is 12 bytes. What do those 12 bytes mean? If you look at Wireshark (or read [RFC 1035][4]), you’ll see that it’s 6 2-byte numbers concatenated together. + +The 6 numbers correspond to the query ID, the flags, and then the number of questions, answer records, authoritative records, and additional records in the packet. + +We don’t need to worry about what all those things are yet though – we just need to put in 6 numbers. + +And luckily we know exactly which 6 numbers to put because our goal is to literally generate the string `b96201000001000000000000`. + +So here’s a function to make the header. (note: there’s no `return` because you don’t need to write `return` in Ruby if it’s the last line of the function) + +``` + + def make_question_header(query_id) + # id, flags, num questions, num answers, num auth, num additional + [query_id, 0x0100, 0x0001, 0x0000, 0x0000, 0x0000].pack('nnnnnn') + end + +``` + +This is very short because we’ve hardcoded everything except the query ID. + +##### what’s `nnnnnn`? + +You might be wondering what `nnnnnn` is in `.pack('nnnnnn')`. That’s a format string telling `.pack()` how to convert that array of 6 numbers into a byte string. + +[The documentation for `.pack` is here][5], and it says that `n` means “represent it as “16-bit unsigned, network (big-endian) byte order”. + +16 bits is the same as 2 bytes, and we need to use network byte order because this is computer networking. I’m not going to explain byte order right now (though I do have a [comic attempting to explain it][6]) + +##### test the header code + +Let’s quickly test that our `make_question_header` function works. + +``` + + puts make_question_header(0xb962) == ["b96201000001000000000000"].pack("H*") + +``` + +This prints out “true”, so we win and we can move on. + +##### step 5: encode the domain name + +Next we need to generate the **question** (“what’s the IP for `example.com`?“). This has 3 parts: + + * the **domain name** (for example “example.com”) + * the **query type** (for example “A” is for “IPv4 **A**ddress” + * the **query class** (which is always the same, 1 is for **IN** is for **IN**ternet) + + + +The hardest part of this is the domain name so let’s write a function to do that. + +`example.com` is encoded in a DNS query, in hex, as `076578616d706c6503636f6d00`. What does that mean? + +Well, if we translate the bytes into ASCII, it looks like this: + +``` + + 076578616d706c6503636f6d00 + 7 e x a m p l e 3 c o m 0 + +``` + +So each segment (like `example`) has its length (like 7) in front of it. + +Here’s the Ruby code to translate `example.com` into `7 e x a m p l e 3 c o m 0`: + +``` + + def encode_domain_name(domain) + domain + .split(".") + .map { |x| x.length.chr + x } + .join + "\0" + end + +``` + +Other than that, to finish generating the question section we just need to append the type and class onto the end of the domain name. + +##### step 6: write `make_dns_query` + +Here’s the final function to make a DNS query: + +``` + + def make_dns_query(domain, type) + query_id = rand(65535) + header = make_question_header(query_id) + question = encode_domain_name(domain) + [type, 1].pack('nn') + header + question + end + +``` + +[Here’s all the code we’ve written before in `dns-2.rb`][7] – it’s still only 29 lines. + +##### now for the parsing + +Now that we’ve managed to _generate_ a DNS query, we get into the hard part: the parsing. Again, we’ll split this into a bunch of different + + * parse a DNS header + * parse a DNS name + * parse a DNS record + + + +The hardest part of this (maybe surprisingly) is going to be “parse a DNS name”. + +##### step 7: parse the DNS header + +Let’s start with the easiest part: the DNS header. We already talked about how it’s 6 numbers concatenated together. + +So all we need to do is + + * read the first 12 bytes + * convert that into an array of 6 numbers + * put those numbers in a class for convenience + + + +Here’s the Ruby code to do that. + +``` + + class DNSHeader + attr_reader :id, :flags, :num_questions, :num_answers, :num_auth, :num_additional + def initialize(buf) + hdr = buf.read(12) + @id, @flags, @num_questions, @num_answers, @num_auth, @num_additional = hdr.unpack('nnnnnn') + end + end + +``` + +Quick Ruby note: `attr_reader` is a Ruby thing that means “make these instance variables accessible as methods”. So you can call `header.flags` to look at the `@flags` variable. + +We can call this with `DNSHeader(buf)`. Not so bad. + +Let’s move on to the hardest part: parsing a domain name. + +##### step 8: parse a domain name + +First, let’s write a partial version. + +``` + + def read_domain_name_wrong(buf) + domain = [] + loop do + len = buf.read(1).unpack('C')[0] + break if len == 0 + domain << buf.read(len) + end + domain.join('.') + end + +``` + +This repeatedly reads 1 byte and then reads that length into a string until the length is 0. + +This works great, for the first time we see a domain name (`example.com`) in our DNS response. + +##### trouble with domain names: compression! + +But the second time `example.com` appears, we run into trouble – in Wireshark, it says that the domain is represented cryptically as just the 2 bytes `c00c`. + +This is something called **DNS compression** and if we want to parse any DNS responses we’re going to have to implement it. + +This is luckily not **that** hard. All `c00c` is saying is: + + * The first 2 bits (`0b11.....`) mean “DNS compression ahead!” + * The remaining 14 bits are an integer. In this case that integer is `12` (`0x0c`), so that means “go back to the 12th byte in the packet and use the domain name you find there” + + + +If you want to read more about DNS compression, I found the [explanation in the DNS RFC][8] relatively readable. + +##### step 9: implement DNS compression + +So we need a more complicated version of our `read_domain_name` function + +Here it is. + +``` + + domain = [] + loop do + len = buf.read(1).unpack('C')[0] + break if len == 0 + if len & 0b11000000 == 0b11000000 + # weird case: DNS compression! + second_byte = buf.read(1).unpack('C')[0] + offset = ((len & 0x3f) << 8) + second_byte + old_pos = buf.pos + buf.pos = offset + domain << read_domain_name(buf) + buf.pos = old_pos + break + else + # normal case + domain << buf.read(len) + end + end + domain.join('.') + +``` + +Basically what’s happening is: + + * if the first 2 bits are `0b11`, we need to do DNS compression. Then: + * read the second byte and do a little bit arithmetic to convert that into the offset + * save the current position in the buffer + * read the domain name at the offset we calculated + * restore our position in the buffer + + + +This is kind of messy but it’s the most complicated part of parsing the DNS response, so we’re almost done! + +##### step 10: parse a DNS query + +You might think “why do we need to parse a DNS query? This is the response!”. But every DNS response has the original query in it, so we need to parse it. + +Here’s the code for parsing the DNS query. + +``` + + class DNSQuery + attr_reader :domain, :type, :cls + def initialize(buf) + @domain = read_domain_name(buf) + @type, @cls = buf.read(4).unpack('nn') + end + end + +``` + +There’s not very much to it: the type and class are 2 bytes each. + +##### step 11: parse a DNS record + +This is the exciting part – the DNS record is where our query data lives! The “rdata field” (“record data”) is where the IP address we’re going to get in response to our DNS query lives. + +Here’s the code: + +``` + + class DNSRecord + attr_reader :name, :type, :class, :ttl, :rdlength, :rdata + def initialize(buf) + @name = read_domain_name(buf) + @type, @class, @ttl, @rdlength = buf.read(10).unpack('nnNn') + @rdata = buf.read(@rdlength) + end + +``` + +We also need to do a little work to make the `rdata` field human readable. The meaning of the record data depends on the record type – for example for an “A” record it’s a 4-byte IP address, for but a “CNAME” record it’s a domain name. + +So here’s some code to make the request data human readable: + +``` + + def read_rdata(buf, length) + @type_name = TYPES[@type] || @type + if @type_name == "CNAME" or @type_name == "NS" + read_domain_name(buf) + elsif @type_name == "A" + buf.read(length).unpack('C*').join('.') + else + buf.read(length) + end + end + +``` + +This function uses this `TYPES` hash to map the record type to a human-readable name: + +``` + + TYPES = { + 1 => "A", + 2 => "NS", + 5 => "CNAME", + # there are a lot more but we don't need them for this example + } + +``` + +The most interesting part of `read_rdata` is probably the line `buf.read(length).unpack('C*').join('.')` – it’s saying “hey, an IP address is 4 bytes, so convert it into an array of 4 numbers and then join those with “.“s”. + +##### step 12: finish parsing the DNS response + +Now we’re ready to parse the DNS response! + +Here’s some code to do that: + +``` + + class DNSResponse + attr_reader :header, :queries, :answers, :authorities, :additionals + def initialize(bytes) + buf = StringIO.new(bytes) + @header = DNSHeader.new(buf) + @queries = (1..@header.num_questions).map { DNSQuery.new(buf) } + @answers = (1..@header.num_answers).map { DNSRecord.new(buf) } + @authorities = (1..@header.num_auth).map { DNSRecord.new(buf) } + @additionals = (1..@header.num_additional).map { DNSRecord.new(buf) } + end + end + +``` + +This mostly just calls the other functions we’ve written to parse the DNS response. + +It uses this cute `(1..@header.num_answers).map` construction to create an array of 2 DNS records if `@header.num_answers` is 2. (which is maybe a _little_ bit of Ruby magic but I think it’s kind of fun and hopefully isn’t too hard to read) + +We can integrate this code into our main function like this: + +``` + + sock.send(make_dns_query("example.com", 1), 0) # 1 is "A", for IP address + reply, _ = sock.recvfrom(1024) + response = DNSResponse.new(reply) # parse the response!!! + puts response.answers[0] + +``` + +Printing out the records looks awful though (it says something like `#`). So we need to write some pretty printing code to make it human readable. + +##### step 13: pretty print our DNS records + +We need to add a `.to_s` field to DNS records to make them have a nice string representation. This is just a 1-line method in `DNSRecord`: + +``` + + def to_s + "#{@name}\t\t#{@ttl}\t#{@type_name}\t#{@parsed_rdata}" + end + +``` + +You also might notice that I left out the `class` field of the DNS record. That’s because it’s always the same (IN for “internet”) so I felt it was redundant. Most DNS tools (like real `dig`) will print out the class though. + +##### and we’re done! + +Here’s our final `main` function: + +``` + + def main + # connect to google dns + sock = UDPSocket.new + sock.bind('0.0.0.0', 12345) + sock.connect('8.8.8.8', 53) + + # send query + domain = ARGV[0] + sock.send(make_dns_query(domain, 1), 0) + + # receive & parse response + reply, _ = sock.recvfrom(1024) + response = DNSResponse.new(reply) + response.answers.each do |record| + puts record + end + +``` + +I don’t think there’s too much to say about this – we connect, send a query, print out each of the answers, and exit. Success! + +``` + + $ ruby dig.rb example.com + example.com 18608 A 93.184.216.34 + +``` + +You can see the final program as a gist here: [dig.rb][2]. You could add more features to it if you want, like + + * pretty printing for other query types + * options to print out the “authority” and “additional” sections of the DNS response + * retries + * making sure that the DNS response we see is _actually_ a response to the query we sent (the query ID has to match! + + + +Also [you can let me know on Twitter][9] if I’ve made a mistake in this post somewhere – I wrote this pretty quickly so I probably got something wrong. + +-------------------------------------------------------------------------------- + +via: https://jvns.ca/blog/2022/11/06/making-a-dns-query-in-ruby-from-scratch/ + +作者:[Julia Evans][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://jvns.ca/ +[b]: https://github.com/lujun9972 +[1]: https://jvns.ca/blog/2022/02/01/a-dns-resolver-in-80-lines-of-go/ +[2]: https://gist.github.com/jvns/1e5838a53520e45969687e2f90199770 +[3]: https://gist.github.com/jvns/aa202b1edd97ae261715c806b2ba7d39 +[4]: https://datatracker.ietf.org/doc/html/rfc1035#section-4.1.1 +[5]: https://ruby-doc.org/core-3.0.0/Array.html#method-i-pack +[6]: https://wizardzines.com/comics/little-endian/ +[7]: https://gist.github.com/jvns/3587ea0b4a2a6c20dcfd8bf653fc11d9 +[8]: https://datatracker.ietf.org/doc/html/rfc1035#section-4.1.4 +[9]: https://twitter.com/b0rk diff --git a/sources/tech/20221106.1 ⭐️ How to Install MATE Desktop in Arch Linux [Complete Guide].md b/sources/tech/20221106.1 ⭐️ How to Install MATE Desktop in Arch Linux [Complete Guide].md new file mode 100644 index 0000000000..cfcdccd046 --- /dev/null +++ b/sources/tech/20221106.1 ⭐️ How to Install MATE Desktop in Arch Linux [Complete Guide].md @@ -0,0 +1,98 @@ +[#]: subject: "How to Install MATE Desktop in Arch Linux [Complete Guide]" +[#]: via: "https://www.debugpoint.com/mate-desktop-arch-linux-install/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Install MATE Desktop in Arch Linux [Complete Guide] +====== + +**This guide explains the steps you need to install MATE Desktop in Arch Linux.** + +This guide has two parts. The first part deals with installing the base Arch system. The second part is installing the complete MATE desktop environment on top of Arch Linux. + +This article tested in the following versions: MATE 1.24, and MATE 1.26. + +### What is the MATE Desktop? + +When the GNOME desktop changed its direction from GNOME 2 to GNOME 3 – by changing the user interaction and interface, the MATE desktop continued the older/Legacy GNOME 2 development. So, the MATE desktop environment continues the GNOME 2 desktop, which preserved the traditional desktop experience in Linux. It is fast and low on memory consumption. In my opinion, one of the underrated desktop environments which need more love! + +The MATE team continued development as it is one of the popular GNOME 2 based desktop while supporting newer technologies. You can learn more on its [official website][1]. + +### Install MATE Desktop in Arch Linux + +#### Part 1: Install Arch Linux + +If you already have Arch Linux installed, you can skip this step and directly go to the [installation of MATE Desktop section below][2]. + +For a quick Arch Linux installation, follow this automated archinstall guide which is super easy to follow. And once installed, continue to Part 2. + +#### Part 2: Install MATE Desktop in Arch Linux + +After reboot, choose Arch Linux from grub. In the Arch Linux prompt, start running the following commands in sequence. These commands install the Xorg server, display manager, MATE desktop components, controller packages, and additional applications. + +For all the commands, use default, i.e. press enter when asked. + +- **Install Xorg. Approx install size is 80 MB.** + +``` +sudo pacman -S --needed xorg +``` + +- **Install display manager, and MATE desktop components. Approx install size is 380 MB.** + +``` +sudo pacman -S --needed mate mate-extra ttf-freefont lightdm lightdm-gtk-greeter +``` + +![Installing MATE Packages][3] + +- **Install applications** + +This is just a reference. You can also install the ones you require. + +``` +sudo pacman -S --needed firefox vlc filezilla leafpad xscreensaver archlinux-wallpaper +``` + +Now it’s time to enable the display manager and network manager as a service. So that the next time you log on, they can run automatically by systemd. + +``` +systemctl enable lightdm +systemctl enable NetworkManager +``` + +Reboot the system using the reboot command. + +``` +reboot +``` + +You should see a login prompt on the MATE desktop if all goes well. + +And you can now log in using the user ID and password which you just created. A superfast and legacy MATE Desktop would welcome you. + +![MATE Desktop in Arch Linux][4] + +I hope this guide helps you create your own Arch Linux environment with a legacy MATE desktop from scratch. Please let me know if you run into trouble using the comment box below. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/mate-desktop-arch-linux-install/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://mate-desktop.org/ +[2]: https://www.debugpoint.com/archinstall-guide/ +[3]: https://www.debugpoint.com/wp-content/uploads/2021/08/Installing-MATE-Packages.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2021/08/MATE-Desktop-in-Arch-Linux-1.jpg diff --git a/sources/tech/20221107.0 ⭐️⭐️ Ghostwriter An Excellent Open-Source Writing App.md b/sources/tech/20221107.0 ⭐️⭐️ Ghostwriter An Excellent Open-Source Writing App.md new file mode 100644 index 0000000000..6c2f1ba9d9 --- /dev/null +++ b/sources/tech/20221107.0 ⭐️⭐️ Ghostwriter An Excellent Open-Source Writing App.md @@ -0,0 +1,166 @@ +[#]: subject: "Ghostwriter: An Excellent Open-Source Writing App" +[#]: via: "https://itsfoss.com/ghostwriter/" +[#]: author: "Ankush Das https://itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Ghostwriter: An Excellent Open-Source Writing App +====== + +We have covered several [open-source tools for writers][1] with some distraction-free editors. + +One of them is **Ghostwriter**. **It is available for Linux and Windows with an unofficial build for macOS.** + +I will not blame you for accidentally reading it as “Ghost Rider” if you are a fan of it. + +Keeping that aside, it looks like Ghostwriter is now under KDE’s umbrella, with **Carl Schwan** (KDE Developer) as a sponsor. So, you can expect the writing app only to get better. + +Hence, I think it is a good idea to spotlight KDE’s newest addition to its Incubator, i.e., Ghostwriter as one of our weekly app highlights. + +### Ghostwriter Excels At Distraction-Free Writing + +![ghostwriter white][2] + +A distraction-free writer is always welcome to write an article like this, make a technical document, or do other creative writing tasks. + +Also, we need a reliable app that saves things in a jiffy. + +**[Ghostwriter][3]**seems to be an excellent option with all the essentials. Let me highlight some of its key features. + +### Features of Ghostwriter + +![ghostwriter black][4] + +As a distraction-free writing app, some users prefer a minimal set of features. But, Ghostwriter does not compromise on the toolset that you get with it to enhance your writing experience. + +The main highlights include: + +- **Focus mode to highlight specific regions you write/edit** +- **A full-screen mode** +- **Clean user interface** +- **Markdown support for easy formatting** +- **Built-in dark and light themes (toggle)** +- **Ability to customize the theme/create your version** +- **Live preview your Markdown document in HTML** +- **Sidebar with outline navigation** +- **Session and Document statistics (characters, words, paragraphs, average wpm, reading time, etc.)** +- **Ability to export to Pandoc, MultiMarkdown, commonmark** +- **A Hemingway mode to disable editing while writing (to help you focus on completing the brought draft faster)** +- **Drag and drop image support** +- **Autosave** +- **Cheatsheet to refer Markdown system without looking elsewhere** + +### Experiencing Ghostwriter + +![ghostwriter screenshot f37][5] + +I tried using Ghostwriter on Fedora 37, and it worked as one would expect. + +It presents a minimal user interface, which is easy to use, pleasing to look at, and not too fancy. + +![ghostwriter toggle][6] + +The availability of essential options as toggle buttons is much appreciated (**left-to-right**): + +- Dark/Light mode toggle +- Live HTML preview +- Hemingway mode +- Focus mode +- Full-screen mode + +In addition to the toggles, the document and session stats also come in handy to keep track of time spent, words written, and other valuable data. + +![ghostwriter stats][7] + +Another user interface element that I found helpful is the bottom status bar that you can customize. + +![ghostwriter bottom][8] + +**What do you need to focus on when writing?** + +The editor lets you choose that to see as a priority stat. Whether you want to focus on the number fo words, speed, paragraphs, or time, you can set the bottom bar to change. + +**To enhance the experience**, you can customize the theme to your liking, where you get to change the font, color of the title/text, and other elements of the user interface. + +![ghostwriter theme edit][9] + +While you already know that it supports Markdown, it will not stop you from working on it. + +Even if it is your first time using Markdown, it includes a cheat sheet in the sidebar for quick access. Of course, if you need a dedicated editor for it, you can try exploring some of the [best Markdown editors][10] available. + +Use the cheat sheet to add code blocks, links, text formatting, headings, and more. + +![ghostwriter markdown cheatsheet][11] + +Overall, if you closely take a glance at the screenshots, all the essential functionalities is accessible in a single click. + +Unless you need to tweak the theme, change the file saving folder preference, and a few more available options, you do not need to leave the editor. + +As a bonus, it includes useful export options for users who need it: + +![ghostwriter export][12] + +You can explore rest of the tiny bits and decide if it suits your requirements. + +### Installing Ghostwriter on Linux + +You can install Ghostwriter via a PPA for Ubuntu-based distros, and it is also available for Fedora through a separate repository. + +To install Ghostwriter on Ubuntu-based distros, type in the following command: + +``` +sudo add-apt-repository ppa:wereturtle/ppa +sudo apt update +sudo apt install ghostwriter +``` + +If you are using Fedora, type in the following: + +``` +sudo dnf copr enable wereturtle/stable +sudo dnf install ghostwriter +``` + +You will also find a Flatpak package listed on [Flathub][13]. However, it does not seem to be a recommended option as per its official download page. You can give it a try, though. + +Explore more about it on its [GitLab page][14] or the [official website][15]. + +### Not Too Fany, But Very Useful! + +I think the user interface, the user experience, and the feature set are perfectly balanced for all kinds of use cases. + +Of course, some do not need Markdown support, and some need more features to write/create chapters for their books. So, Ghostwriter may not be for everyone. + +That said, the features you get with it make it well worth a try, regardless of your use case. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/ghostwriter/ + +作者:[Ankush Das][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/open-source-tools-writers/ +[2]: https://itsfoss.com/wp-content/uploads/2022/11/ghostwriter-white.png +[3]: https://itsfoss.com/wp-content/uploads/2022/11/ghostwriter-black.png +[4]: https://itsfoss.com/wp-content/uploads/2022/11/ghostwriter-screenshot-f37.jpg +[5]: https://itsfoss.com/wp-content/uploads/2022/11/ghostwriter-toggle.jpg +[6]: https://itsfoss.com/wp-content/uploads/2022/11/ghostwriter-stats.jpg +[7]: https://itsfoss.com/wp-content/uploads/2022/11/ghostwriter-bottom.png +[8]: https://itsfoss.com/wp-content/uploads/2022/11/ghostwriter-theme-edit.jpg +[9]: https://itsfoss.com/best-markdown-editors-linux/ +[10]: https://itsfoss.com/wp-content/uploads/2022/11/ghostwriter-markdown-cheatsheet.png +[11]: https://itsfoss.com/wp-content/uploads/2022/11/ghostwriter-export.png +[12]: https://flathub.org/apps/details/io.github.wereturtle.ghostwriter +[13]: https://ghostwriter.kde.org/download/ +[14]: https://invent.kde.org/office/ghostwriter +[15]: https://ghostwriter.kde.org diff --git a/sources/tech/20221107.2 ⭐️⭐️⭐️ Build your own SaaS on Linux with Vely.md b/sources/tech/20221107.2 ⭐️⭐️⭐️ Build your own SaaS on Linux with Vely.md new file mode 100644 index 0000000000..349f3d78f5 --- /dev/null +++ b/sources/tech/20221107.2 ⭐️⭐️⭐️ Build your own SaaS on Linux with Vely.md @@ -0,0 +1,652 @@ +[#]: subject: "Build your own SaaS on Linux with Vely" +[#]: via: "https://opensource.com/article/22/11/build-your-own-saas-vely" +[#]: author: "Sergio Mijatovic https://opensource.com/users/vely" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Build your own SaaS on Linux with Vely +====== + +Vely makes it possible to leverage the power of C in your web applications. + +[Vely][1] combines high performance and the low footprint of C with the ease of use and improved safety of languages like PHP. It's free and open source software, licensed under GPLv3 and LGPL 3 for libraries, so you can even build commercial software with it. + +### Using Vely for SaaS + +You can use Vely to create a multitenant web application that you can run on the Internet as Software-as-a-Service (SaaS). Each user has a completely separate data space from any other. + +In this example web application, a user can sign up for a notebook service to create notes and then view and delete them. It demonstrates several technology integrations in just 310 lines of code across seven source files. The technologies include: + +- MariaDB +- Web browser +- Apache +- Unix sockets + +#### How it works + +Here's how the application works from a user's perspective. A code walk-through follows the images. + +The app allows a user to create a new login by specifying an email address and password. You can style these any way you like, such as with CSS: + +![Create a user account][2] + +Verify the user's email: + +![Verify the user's email address][3] + +Each user logs in with their unique username and password: + +![The user logs in][4] + +Once logged in, a user can add a note: + +![The user can add a note][5] + +A user can get a list of notes: + +![User lists notes][6] + +The app asks for confirmation before deleting a note: + +![The app asks for confirmation before deleting a note][7] + +After the user confirms, the note is deleted: + +![After confirmation, the note is deleted][8] + +#### Setup prerequisites + +Follow the installation instructions on [Vely.dev][9]. It's a quick process that uses standard packaging tools, such as DNF, APT, Pacman, or Zypper. + +Because they are part of this example, you must install Apache as a web server and MariaDB as a database. + +After installing Vely, turn on syntax highlighting in Vim if you're using it: + +``` +vv -m +``` + +#### Get the source code + +The source code for this demonstration SaaS app is part of the Vely installation. It's a good idea to create a separate source code directory for each application (and you can name it whatever you like). In this case, unpacking the source code does that for you: + +``` +$ tar xvf $(vv -o)/examples/multitenant_SaaS.tar.gz +$ cd multitenant_SaaS +``` + +By default, the application is named `multitenant_SaaS`, but you can call it anything (if you do that, change it everywhere). + +### Set up the application + +The very first step is to create an application. It's simple to do with Vely's `vf` utility: + +``` +$ sudo vf -i-u $(whoami) multitenant_SaaS +``` + +This command creates a new application home (`/var/lib/vv/multitenant_SaaS`) and performs the application setup for you. Mostly, that means creating various subdirectories in the home folder and assigning privileges. In this case, only the current user (the result of `whoami`) owns the directories, with 0700 privileges, which ensures that no one else has access to the files. + +### Set up the database + +Before doing any coding, you need a place to store the information used by the application. First, create a MariaDB database called `db_multitenant_SaaS`, owned by the user `vely` with password `your_password`. You can change any of these values, but remember to change them everywhere during this example. + +Logged in as root in the MySQL utility: + +``` +CREATEDATABASEIFNOTEXISTS db_multitenant_SaaS; +CREATEUSERIFNOTEXISTS vely IDENTIFIEDBY'your_password'; +GRANTCREATE,ALTER,DROP,SELECT,INSERT,DELETE,UPDATEON db_multitenant_SaaS.*TO vely; +``` + +Then create database objects (tables and records and so on) in the database: + +``` +USE db_multitenant_SaaS; +SOURCE setup.sql; +exit +``` + +### Connect Vely to a database + +To let Vely know where your database is and how to log into it, create a database config file named `db_multitenant_SaaS`. (This is the name used by the database statements in the source code, so if you change it, make sure you change it everywhere.) + +Vely uses native MariaDB database connectivity, so you can specify any options that a given database lets you: + +``` +$ echo'[client] +user=vely +password=your_password +database=db_multitenant_SaaS +protocol=TCP +host=127.0.0.1 +port=3306'> db_multitenant_SaaS +``` + +### Build the application + +Use the `vv` utility to make the application, using the `--db` option to specify the MariaDB database and the database config file: + +``` +$ vv -q--db=mariadb:db_multitenant_SaaS +``` + +### Start the application server + +To start the application server for your web application, use the `vf` FastCGI process manager. The application server uses a Unix socket to communicate with the web server (creating a reverse proxy): + +``` +$ vf -w3 multitenant_SaaS +``` + +This starts three daemon processes to serve the incoming requests. You can also start an adaptive server that increases the number of processes to serve more requests and gradually reduce the number of processes when they're not needed: + +``` +$ vf multitenant_SaaS +``` + +See `vf` for more options to help you achieve the best performance. + +When you need to stop your application server, use the `-m quit` option: + +``` +$ vf -m quit multitenant_SaaS +``` + +### Set up the web server + +This is a web application, so the application needs a web server. This example uses Apache by way of a Unix socket listener. + +#### 1. Set up Apache + +To configure Apache as a reverse proxy and connect your application to it, you need to enable FastCGI proxy support, which generally means using the `proxy` and `proxy_fcgi` modules. + +For Fedora systems (or others, like Arch) enable the `proxy` and `proxy_fcgi` modules by adding (or uncommenting) the appropriate **LoadModule** directives in the `/etc/httpd/conf/httpd.conf` Apache configuration file. + +For Debian, Ubuntu, and similar systems, enable the `proxy` and `proxy_fcgi` modules: + +``` +$ sudo a2enmod proxy +$ sudo a2enmod proxy_fcgi +``` + +For OpenSUSE, add these lines to the end of `/etc/apache2/httpd.conf`: + +``` +LoadModule proxy_module modules/mod_proxy.so +LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so +``` + +#### 2. Configure Apache + +Now you must add the proxy information to the Apache configuration file: + +``` +ProxyPass "/multitenant_SaaS" unix:///var/lib/vv/multitenant_SaaS/sock/sock|fcgi://localhost/multitenant_SaaS +``` + +The location of your configuration may vary, depending on your Linux distribution: + +- Fedora, CentOS, Mageia, and Arch: `/etc/httpd/conf/httpd.conf` +- Debian, Ubuntu, Mint: `/etc/apache2/apache2.conf` +- OpenSUSE: `/etc/apache2/httpd.conf` + +#### 3. Restart + +Finally, restart Apache. On Fedora and similar systems, as well as Arch Linux: + +``` +$ sudo systemctl restart httpd +``` + +On Debian and Debian-based systems, as well as OpenSUSE: + +``` +$ sudo systemctl restart apache2 +``` + +### Set up local mail + +This example uses email as a part of its function. If your server can already send email, you can skip this. Otherwise, you can use local mail (`myuser@localhost`) just to test it out. To do that, install Sendmail. + +On Fedora and similar: + +``` +$ sudo dnf installsendmail +$ sudo systemctl start sendmail +``` + +On Debian systems (like Ubuntu): + +``` +$ sudo apt installsendmail +$ sudo systemctl start sendmail +``` + +When the application sends an email to a local user, such as `OS_user@localhost`, then you can verify that the email was sent by looking at `/var/mail/` (the "mail spool"). + +### Access the application server from the browser + +Assuming you're running the application locally, use `http://127.0.0.1/multitenant_SaaS?req=notes&action=begin` to access your application server from your web browser. If you're running this on a live server on the Internet, you may need to adjust your firewall settings to allow HTTP traffic. + +### Source code + +This example application contains seven source files. You can review the code yourself (remember, it's just 310 lines across these files), but here's an overview of each one. + +#### SQL setup (setup.sql) + +The two tables created are: + +- **users**: Information about each user. Each user in the **users** table has its own unique ID (**userId** column) along with other information such as email address and whether it's verified. There's also a hashed password. An actual password is never stored in plain text (or otherwise); a one-way hash is used to check the password. +- **notes**: Notes entered by the user. The **notes** table contains the notes, each along with **userId** column that states which user owns them. The **userId** column's value matches the namesake column from **users** table. This way, every note clearly belongs to a single user. + +The file contents: + +``` +CREATETABLEIFNOTEXISTS notes (dateOf datetime, noteId BIGINTAUTO_INCREMENTPRIMARYKEY, userId BIGINT, note VARCHAR(1000)); +CREATETABLEIFNOTEXISTS users (userId BIGINTAUTO_INCREMENTPRIMARYKEY, email VARCHAR(100), hashed_pwd VARCHAR(100), verified SMALLINT, verify_token VARCHAR(30),SESSIONVARCHAR(100)); +CREATEUNIQUEINDEXIFNOTEXISTS users1 ON users (email); +``` + +#### Run-time data (login.h) + +To properly display the Login, Sign Up, and Logout links, you need some flags that are available anywhere in the application. Also, the application uses cookies to maintain a session, so this needs to be available anywhere, for example, to verify that the session is valid. Every request sent to the application is confirmed that way. Only requests that come with verifiable cookies are permitted. + +So to that effect, you have a **global_request_data** type `reqdata` (request data) and in it there's `sess_userId` (ID of user) and `sess_id` (user's current session ID). You also have rather self-explanatory flags that help render pages: + +``` +#ifndef _VV_LOGIN +#define _VV_LOGIN + +typedef struct s_reqdata { +    bool displayed_logout; // true if Logout link displayed +    bool is_logged_in; // true if session verified logged-in +    char *sess_userId; // user ID of current session +    char *sess_id; // session ID +} reqdata; + +void login_or_signup (); + +#endif +``` + +#### Session checking and session data (_before.vely) + +Vely has a notion of a **before_request_handler**. The code you write executes before any other code that handles a request. To do this, all you need is to write this code in a file named `_before.vely`, and the rest is automatically handled. + +Anything that a SaaS application does, such as handling requests sent to an application, must be validated for security. This way, the application knows whether the caller has the permissions needed to perform an action. + +Checking for permission is done here in a before-request handler. That way, whatever other code you have handling a request, you already have the session information. + +To keep session data (like session ID and user ID) available anywhere in your code, you use **global_request_data**. It's just a generic pointer (**void***) to memory that any code that handles requests can access. This is perfect for handling sessions, as shown below: + +``` +#include "vely.h" +#include "login.h" + +// _before() is a before-request-handler. It always executes before +// any other code that handles a request. It's a good place for any +// kind of request-wide setting or data initialization +void _before() { +    // Output HTTP header +    out-header default +    reqdata *rd; // this is global request data, see login.h +    // allocate memory for global request data, will be automatically deallocated +    // at the end of request +    new-mem rd size sizeof(reqdata) +    // initialize flags +    rd->displayed_logout = false; +    rd->is_logged_in = false; +    // set the data we created to be global request data, accessible +    // from any code that handles a request +    set-req data rd +    // check if session exists (based on cookies from the client) +    // this executes before any other request-handling code, making it +    // easier to just have session information ready +    _check_session (); +} +``` + +#### Checking if the session is valid (_check_session.vely) + +One of the most important tasks in a multitenant SaaS application is to check (as soon as possible) if the session is valid by checking whether a user is logged in. It's done by getting the session ID and user ID cookies from the client (such as a web browser) and checking these against the database where sessions are stored: + +``` +#include "vely.h" +#include "login.h" + + +// Check if session is valid +void _check_session () { +    // Get global request data +    reqdata *rd; +    get-req data to rd +    // Get cookies from user browser +    get-cookie rd->sess_userId="sess_userId" +    get-cookie rd->sess_id="sess_id" +    if (rd->sess_id[0] != 0) { +        // Check if session ID is correct for given user ID +        char *email; +        run-query @db_multitenant_SaaS = "select email from users where userId='%s' and session='%s'" output email : rd->sess_userId, rd->sess_id row-count define rcount +            query-result email to email +        end-query +        if (rcount == 1) { +            // if correct, set logged-in flag +            rd->is_logged_in = true; +            // if Logout link not display, then display it +            if (rd->displayed_logout == false) { +                @Hi <>! Logout
+                rd->displayed_logout = true; +            } +        } else rd->is_logged_in = false; +    } +} +``` + +#### Signing up, Logging in, Logging out (login.vely) + +The basis of any multitenant system is the ability for a user to sign up, log in, and log out. Typically, signing up involves verifying the email address; more often than not, the same email address is used as a username. That's the case here. + +There are several subrequests implemented here that are necessary to perform the functionality: + +- When Signing Up a new user, display the HTML form to collect the information. The URL request signature for this is `req=login&action=newuser`. +- As a response to the Sign Up form, create a new user. The URL request signature is `req=login&action=createuser`. The **input-param** signal obtains an **email** and **pwd** POST form fields. The password value is a one-way hash, and an email verification token is created as a random five-digit number. These are inserted into the **users** table, creating a new user. A verification email is sent, and the user is prompted to read the email and enter the code. +- Verify the email by entering the verification code sent to that email. The URL request signature is `req=login&action=verify`. +- Display a Login form for the user to log in. The URL request signature is `req=login` (for instance, `action` is empty.) +- Log in by verifying the email address (username) and password. The URL request signature is `req=login&action=login`. +- Logout at the user's request. The URL request signature is `req=login&action=logout`. +- Landing page for the application. The URL request signature is `req=login&action=begin`. +- If the user is currently logged in, go to the application's landing page. + +See examples of these below: + +``` +#include "vely.h" +#include "login.h" + +// Handle session maintenance, login, logout, session verification +// for any multitenant Cloud application +void login () { +    // Get URL input parameter "action" +    input-param action + +    // Get global request data, we record session information in it, so it's handy +    reqdata *rd; +    get-req data to rd + +    // If session is already established, the only reason why we won't proceed to +    // application home is if we're logging out +    if (rd->is_logged_in) { +        if (strcmp(action, "logout")) { +            _show_home(); +            exit-request +        } +    } + +    // Application screen to get started. Show links to login or signup and show +    // home screen appropriate for this +    if (!strcmp (action, "begin")) { +        _show_home(); +        exit-request + +    // Start creating new user. Ask for email and password, then proceed to create user +    // when this form is submitted. +    } else if (!strcmp (action, "newuser")) { +        @Create New User
+        @
+        @ +        @ +        @ +        @ +        @
+ +    // Verify code sent to email by user. The code must match, thus verifying email address     +    } else if (!strcmp (action, "verify")) { +        input-param code +        input-param email +        // Get verify token based on email +        run-query @db_multitenant_SaaS = "select verify_token from users where email='%s'" output db_verify : email +            query-result db_verify to define db_verify +            // Compare token recorded in database with what user provided +            if (!strcmp (code, db_verify)) { +                @Your email has been verifed. Please Login. +                // If matches, update user info to indicate it's verified +                run-query @db_multitenant_SaaS no-loop = "update users set verified=1 where email='%s'" : email +                exit-request +            } +        end-query +        @Could not verify the code. Please try again. +        exit-request + +    // Create user - this runs when user submits form with email and password to create a user     +    } else if (!strcmp (action, "createuser")) { +        input-param email +        input-param pwd +        // create hashed (one-way) password +        hash-string pwd to define hashed_pwd +        // generate random 5 digit string for verify code +        random-string to define verify length 5 number +        // create user: insert email, hashed password, verification token. Current verify status is 0, or not verified +        begin-transaction @db_multitenant_SaaS +        run-query @db_multitenant_SaaS no-loop = "insert into users (email, hashed_pwd, verified, verify_token, session) values ('%s', '%s', '0', '%s', '')" : email, hashed_pwd, verify affected-rows define arows error define err on-error-continue +        if (strcmp (err, "0") || arows != 1) { +            // if cannot add user, it probably doesn't exist. Either way, we can't proceed. +            login_or_signup(); +            @User with this email already exists. +            rollback-transaction @db_multitenant_SaaS +        } else { +            // Create email with verification code and email it to user +            write-string define msg +                @From: vely@vely.dev +                @To: <> +                @Subject: verify your account +                @ +                @Your verification code is: <> +            end-write-string +            exec-program "/usr/sbin/sendmail" args "-i", "-t" input msg status define st +            if (st != 0) { +                @Could not send email to <>, code is <> +                rollback-transaction @db_multitenant_SaaS +                exit-request +            } +            commit-transaction @db_multitenant_SaaS +            // Inform the user to go check email and enter verification code +            @Please check your email and enter verification code here: +            @
+            @ +            @ +            @ +            @ +            @
+        } + +    // This runs when logged-in user logs out.     +    } else if (!strcmp (action, "logout")) { +        // Update user table to wipe out session, meaning no such user is logged in +        if (rd->is_logged_in) { +            run-query @db_multitenant_SaaS = "update users set session='' where userId='%s'" : rd->sess_userId no-loop affected-rows define arows +            if (arows == 1) { +                rd->is_logged_in = false; // indicate user not logged in +                @You have been logged out.
+            } +        } +        _show_home(); + +    // Login: this runs when user enters user name and password +    } else if (!strcmp (action, "login")) { +        input-param pwd +        input-param email +        // create one-way hash with the intention of comparing with user table - password is NEVER recorded +        hash-string pwd to define hashed_pwd +        // create random 30-long string for session ID +        random-string to rd->sess_id length 30 +        // Check if user name and hashed password match +        run-query @db_multitenant_SaaS = "select userId from users where email='%s' and hashed_pwd='%s'" output sess_userId : email, hashed_pwd +            query-result sess_userId to rd->sess_userId +            // If match, update user table with session ID +            run-query @db_multitenant_SaaS no-loop = "update users set session='%s' where userId='%s'" : rd->sess_id, rd->sess_userId affected-rows define arows +            if (arows != 1) { +                @Could not create a session. Please try again. <<.login_or_signup();>>
+                exit-request +            } +            // Set user ID and session ID as cookies. User's browser will return those to us with every request +            set-cookie "sess_userId" = rd->sess_userId +            set-cookie "sess_id" = rd->sess_id +            // Display home, make sure session is correct first and set flags +            _check_session(); +            _show_home(); +            exit-request +        end-query +        @Email or password are not correct. <<.login_or_signup();>>
+ +    // Login screen, asks user to enter user name and password     +    } else if (!strcmp (action, "")) { +        login_or_signup(); +        @Please Login:
+        @
+        @ +        @ +        @ +        @ +        @
+    } +} + +// Display Login or Sign Up links +void login_or_signup() { +        @Login & & Sign Up
+} +``` + +#### General-purpose application (_show_home.vely) + +With this tutorial, you can create any multitenant SaaS application you want. The multitenant-processing module above (`login.vely`) calls the **_show_home()** function, which can house any code of yours. This example code shows the Notes application, but it could be anything. The **_show_home()** function calls any code you wish and is a general-purpose multitenant application plug-in: + +``` +#include "vely.h" + +void _show_home() { +    notes(); +    exit-request +} +``` + +#### Notes application (notes.vely) + +The application is able to add, list, and delete any given note: + +``` +#include "vely.h" +#include "login.h" + +// Notes application in a multitenant Cloud +void notes () { +    // get global request data +    reqdata *rd; +    get-req data to rd +    // If session invalid, display Login or Signup +    if (!rd->is_logged_in) { +        login_or_signup(); +    } +    // Greet the user +    @

Welcome to Notes!


+    // If not logged in, exit - this ensures security verification of user's identity +    if (!rd->is_logged_in) { +        exit-request +    } +    // Get URL parameter that tells Notes what to do +    input-param subreq +    // Display actions that Notes can do (add or list notes) +    @Add Note List Notes
+ +    // List all notes for this user +    if (!strcmp (subreq, "list")) { +        // select notes for this user ONLY +        run-query @db_multitenant_SaaS = "select dateOf, note, noteId from notes where userId='%s' order by dateOf desc" : rd->sess_userId output dateOf, note, noteId +            query-result dateOf to define dateOf +            query-result note to define note +            query-result noteId to define noteId +            // change new lines to
with fast cached Regex +            match-regex "\n" in note replace-with "
\n" result define with_breaks status define st cache +            if (st == 0) with_breaks = note; // nothing was found/replaced, just use original +            // Display a note +            @Date: <> (delete note)
+            @Note: <>
+            @
+        end-query +    } + +    // Ask to delete a note +    else if (!strcmp (subreq, "delete_note_ask")) { +        input-param note_id +        @Are you sure you want to delete a note? Use Back button to go back, or delete note now. +    } + +    // Delete a note +    else if (!strcmp (subreq, "delete_note")) { +        input-param note_id +        // Delete note +        run-query @db_multitenant_SaaS = "delete from notes where noteId='%s' and userId='%s'" : note_id, rd->sess_userId affected-rows define arows no-loop error define errnote +        // Inform user of status +        if (arows == 1) { +            @Note deleted +        } else { +            @Could not delete note (<>) +        } +    } + +    // Add a note +    else if (!strcmp (subreq, "add_note")) { +        // Get URL POST data from note form +        input-param note +        // Insert note under this user's ID +        run-query @db_multitenant_SaaS = "insert into notes (dateOf, userId, note) values (now(), '%s', '%s')" : rd->sess_userId, note affected-rows define arows no-loop error define errnote +        // Inform user of status +        if (arows == 1) { +            @Note added +        } else { +            @Could not add note (<>) +        } +    } + +    // Display an HTML form to collect a note, and send it back here (with subreq="add_note" URL param) +    else if (!strcmp (subreq, "add")) { +        @Add New Note +        @
+        @ +        @ +        @ +        @
+    } +} +``` + +### SaaS with C performance + +Vely makes it possible to leverage the power of C in your web applications. A multitenant SaaS application is a prime example of a use case that benefits from that. Take a look at the code examples, write some code, and give Vely a try. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/build-your-own-saas-vely + +作者:[Sergio Mijatovic][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/vely +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/22/5/write-c-appplications-vely-linux +[2]: https://opensource.com/sites/default/files/2022-10/1createuser.png +[3]: https://opensource.com/sites/default/files/2022-10/2verifyemail.png +[4]: https://opensource.com/sites/default/files/2022-10/3login.png +[5]: https://opensource.com/sites/default/files/2022-10/4addnote.png +[6]: https://opensource.com/sites/default/files/2022-10/5listnotes.png +[7]: https://opensource.com/sites/default/files/2022-10/6confirmdelete.png +[8]: https://opensource.com/sites/default/files/2022-10/7notedeleted.png +[9]: https://vely.dev/ diff --git a/sources/tech/20221108.0 ⭐️⭐️ Apt++ Nala is Like Apt in Ubuntu but Better.md b/sources/tech/20221108.0 ⭐️⭐️ Apt++ Nala is Like Apt in Ubuntu but Better.md new file mode 100644 index 0000000000..2b0bbdd5c5 --- /dev/null +++ b/sources/tech/20221108.0 ⭐️⭐️ Apt++ Nala is Like Apt in Ubuntu but Better.md @@ -0,0 +1,172 @@ +[#]: subject: "Apt++? Nala is Like Apt in Ubuntu but Better" +[#]: via: "https://itsfoss.com/nala/" +[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Apt++? Nala is Like Apt in Ubuntu but Better +====== + +For decades Debian and Ubuntu users [used apt-get commands][1]. When its simpler form apt was released, people liked how it showed a progress bar while installing packages. + +Irrespective of the progress bar, the packages get installed the same with apt-get and apt commands. + +But the progress bar enhances the user experience (UX) and today if I don’t see the green progress bar at the bottom, I feel something is amiss. + +Why am I telling you all this? Because I got an [apt-get vs apt][2] feeling when I used [Nala][3], a Python-based front end for APT. + +Take a look at a screenshot of [apt package upgrade][4] in progress with nala. + +![installing packages using nala][5] + +Like apt enhanced the user experience from apt-get, nala takes it to the next level by making it more human-readable and presenting only the relevant info with beautiful colors. + +But Nala does a lot more than adding colors to the terminal. + +### Nala: An enhanced, user-friendly tool for managing apt packages + +![using nala to remove packages][6] + +As you can see, It brought the list of packages that will be affected by the command I executed. And it presented only relevant info with beautiful colors. + +This is only one of the core features of Nala. Here are others: + +- Parallel downloads. +- Checks for the fastest mirrors and uses the fastest 3 by default to speed up downloads. +- Each command you execute will be stored as Nala history with a unique ID. +- Compatible with Fish and Zsh. +- Makes Apt more human-readable than ever. + +Sounds interesting? Let’s see how you can install and use it. + +### Installing Nala in Ubuntu 22.04 and higher + +Starting with 22.04, Nala is present in the universe repository of Ubuntu. So, the installation process is going to be one command only: + +``` +sudo apt install nala +``` + +For older versions, refer to the [official wiki][7] for installation instructions. + +### Using Nala in Ubuntu + +Using Nala is fairly simple as it follows almost the same command structure as apt. This means that you just have to interchange apt with nala in every command. + +For example, you can update repositories with Nala using this command: + +``` +sudo nala update +``` + +![sudo nala update][8] + +Similarly, to install a package: + +``` +sudo nala install package_name +``` + +And the package can be removed using: + +``` +sudo nala remove package_name +``` + +That’s elementary. Let’s see about using other interesting features I mentioned earlier. + +#### Fetch the fastest mirrors in Nala + +To fetch the fastest mirrors, you’d need to utilize the `fetch` utility. First, it will determine whether you are using Debian or Ubuntu and then list the fastest mirrors: + +``` +sudo nala fetch +``` + +![sudo nala fetch][9] + +And as you can see, I kept the top 4 fastest mirrors by separating them with their index number. Once you select them and press enter, it will show the summary: + +![saving fastest mirrors for nala][10] + +Press `Y` and it will save changes. Now, update Nala to take effect: + +``` +sudo nala update +``` + +#### Use transactional history + +This is the interactive way you list and use the history command inspired by the DNF history utility. + +You have to pair `history` with the nala command, and it will bring previously executed commands with relevant info: + +``` +nala history +``` + +![nala history][11] + +You can use an ID with `nala history` and it will get you the details of the specific operation. For example, if I want to have details of what it did while installing curl, I’d have to use ID no 9: + +``` +nala history info 9 +``` + +![nala history info 9][12] + +But that’s not it. You can alter the effect of a command using history. For example, I installed curl, so I can alter the effect (will remove the software) using the given command: + +``` +sudo nala history undo 9 +``` + +![sudo nala history undo 9][13] + +And you can redo the command from history using its ID. For example, I installed curl (ID = 9) previously, and if I want to do the same again, I have to use `redo` : + +``` +sudo nala history redo 9 +``` + +![sudo nala history redo 9][14] + +### Wrapping Up + +I understand that the apt command works fine. And I am not suggesting that everyone should replace apt with nala. It’s just good to see projects like these to focus on user experience. + +They are clearly inspired by the DNF package manager of Fedora and that’s not a bad thing. The apt developers can also take some hints and add similar features in future. + +For now, please share in the comments whether you liked nala or not. And if you liked it, will you use it extensively in place of [apt commands][15]? + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/nala/ + +作者:[Sagar Sharma][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/sagar/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/apt-get-linux-guide/ +[2]: https://itsfoss.com/apt-vs-apt-get-difference/ +[3]: https://gitlab.com/volian/nala +[4]: https://itsfoss.com/apt-update-vs-upgrade/ +[5]: https://itsfoss.com/wp-content/uploads/2022/11/installing-packages-using-nala-1.png +[6]: https://itsfoss.com/wp-content/uploads/2022/11/using-nala-to-remove-packages.png +[7]: https://gitlab.com/volian/nala/-/wikis/Installation +[8]: https://itsfoss.com/wp-content/uploads/2022/11/sudo-nala-update.png +[9]: https://itsfoss.com/wp-content/uploads/2022/11/sudo-nala-fetch.png +[10]: https://itsfoss.com/wp-content/uploads/2022/11/saving-fastest-mirrors-for-nala.png +[11]: https://itsfoss.com/wp-content/uploads/2022/11/nala-history.png +[12]: https://itsfoss.com/wp-content/uploads/2022/11/nala-history-info-9.png +[13]: https://itsfoss.com/wp-content/uploads/2022/11/sudo-nala-history-undo-9.png +[14]: https://itsfoss.com/wp-content/uploads/2022/11/sudo-nala-history-redo-9.png +[15]: https://itsfoss.com/apt-command-guide/ diff --git a/sources/tech/20221108.2 ⭐️⭐️ How to Install LXQt Desktop in Arch Linux [Complete Guide].md b/sources/tech/20221108.2 ⭐️⭐️ How to Install LXQt Desktop in Arch Linux [Complete Guide].md new file mode 100644 index 0000000000..59a8f3ae2b --- /dev/null +++ b/sources/tech/20221108.2 ⭐️⭐️ How to Install LXQt Desktop in Arch Linux [Complete Guide].md @@ -0,0 +1,286 @@ +[#]: subject: "How to Install LXQt Desktop in Arch Linux [Complete Guide]" +[#]: via: "https://www.debugpoint.com/lxqt-arch-linux-install/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Install LXQt Desktop in Arch Linux [Complete Guide] +====== + +**This guide explains the steps you need to install LXQt Desktop in Arch Linux.** + +**This guide has two parts. The first part deals with installing the base Arch system. The second part is installing the complete LXQt desktop environment on top of Arch Linux.** + +### What is the LXQt Desktop? + +LXQt is a lightweight Linux desktop environment based on Qt technology. It is known to be lighter than all traditional desktop environments available today. Arguably it is faster and consumes fewer resources than its equivalents, such as Xfce and Mate desktops. + +LXQt desktop is available in other Linux distributions as one of the offerings. Fedora and Ubuntu provide an LXQt flavour as well. However, you can also install it in Arch Linux to enjoy the latest LXQt tech as a rolling release. + +### Install LXQt Desktop in Arch Linux + +#### Part 1: Install Arch Linux + +If you already have Arch Linux installed, you can skip this step and directly go to the install LXQt Desktop section below. + +For a faster Arch Linux installation, refer to [this guide for installing Arch via automated script][1]. For the legacy way of installation method, refer to the below steps. + +##### Download Arch Linux + +Download Arch Linux .iso from the below link. There are magnet and torrent links available. Once you download, write the ISO to a USB drive. And then boot from the drive. + +[Download Arch Linux][2] + +If you plan to install it as a virtual machine image via GNOME Boxes, virt-manager, you do not need to write it to a USB drive. + +##### Boot and Configure Partitions + +After you boot from the Arch Linux iso, you must run a series of commands to install the base system. + +First, run the below command to find out the device identifier. + +``` +fdisk -l +``` + +![fdisk -l before][3] + +Then with the device identifier, run the below command to start partitioning your disk. Make sure to change `/dev/sda` as per your system. + +``` +cfdisk /dev/sda +``` + +Select `label type = dos` in the next prompt. + +Select the free space and choose option NEW from the bottom. In this example, I will create three partitions as per below. + +``` +/dev/sda1 - 1G - for /boot/dev/sda2 - 5G - for root/dev/sda3 - 1G - for swap +``` + +![cfdisk][4] + +In the next screen provide partition size for the boot partition (for this example, I gave 1 GB). Select it as the primary partition. + +Repeat the same step for the main root partition of size 5GB. + +![Swap partition type change][5] + +Create a swap partition using the same steps with size 1G (you may change it as per your need). After you create the swap partition, make sure to choose Type at the bottom and mark it as a swap with the option “Linux Swap/Solaris”. + +![final partition list in cfdisk][6] + +Once done, write the changes to the disk using the Write option at the bottom. Make sure you take a backup before you write as this is a permanent change in your system. + +Run the below command to check before you proceed. You can see in this example, three partitions are listed. + +``` +fdisk -l +``` + +![final partition list in fdisk][7] + +Run the following commands in sequence to format and create an ext4 file system in the newly created partition above. Make sure you change the /dev/sda1 and /dev/sda2 as per your need. + +``` +mkfs.ext4 /dev/sda1mkfs.ext4 /dev/sda2mkswap /dev/sda3swapon /dev/sda3 +``` + +After completion, mount the system and create necessary directories. + +``` +mount /dev/sda2 /mntmkdir /mnt/boot /mnt/var /mnt/homemount /dev/sda1 /mnt/boot +``` + +Again, make sure you change /dev/sda1, /dev/sda2 and /dev/sda3 as per your system. + +![prepare file system][8] + +##### Install the base system + +I hope you are already connected to the internet. If not, try using a USB dongle or wired internet connection which Arch installer automatically configure and detect. If you do not have a wired connection available, follow [this guide][9] to configure a wireless or wifi network using Arch Linux installer. + +Run the below commands in sequence to install the base system in the mounted partition. The download size is approx 400 MB. + +``` +pacman -Syypacstrap /mnt base base-devel linux linux-firmware nano dhcpcd net-tools grub +``` + +![Install base system][10] + +Once complete, generate file system table without which you can’t boot the system. + +``` +genfstab -U /mnt >> /mnt/etc/fstab +``` + +##### Configure the base system + +Follow the below commands in sequence to configure the base system. This involves setting up your locale, language, add a login user, and setting up the internet. + +``` +arch-chroot /mntnano /etc/locale.gen +``` + +Uncomment the locale of your choice by removing # at the beginning. For this guide, I have chosen en_US.UTF-8 UTF-8. Press CTRL+O, Enter, and CTRL+X to exit from nano. + +![change locale][11] + +Generate the locale using: + +``` +locale-gen +``` + +Setup the language using the below command. + +``` +echo LANG=en_US.UTF-8 > /etc/locale.confexport LANG=en_US.UTF-8 +``` + +Setup the local time zone. + +``` +ln -s /usr/share/zoneinfo/America/New_York /etc/localtime +``` + +Again, you can choose them as per your need. You can list the local timezones via the below commands. + +``` +ls /usr/share/zoneinfo +ls /usr/share/zoneinfo/America +``` + +Setup the hardware clock, create a hostname, and enable the DHCP for the internet using the below commands in sequence. You can change `"arindam-pc"` to any hostname as per your desire. + +``` +hwclock --systohc --utcecho arindam-pc > /etc/hostnamesystemctl enable dhcpcd +``` + +The next step is to set up the root user password, create an admin user, and add the user in the sudoers file. + +Follow the below commands in sequence. Make sure to change the user name from `debugpoint` to something else as per your need. + +``` +passwd rootuseradd -m -g users -G wheel -s /bin/bash debugpointpasswd debugpoint +``` + +![create user][12] + +Open the sudoers file and add the below lines. + +``` +nano /etc/sudoers +``` + +Add below lines. As you already created the root user, the entry should be there. + +``` +root ALL=(ALL) ALLdebugpoint ALL=(ALL) ALL +``` + +![update sudoers file][13] + +Install grub, setup the initial ramdisk environment, unmount the system using the below commands in sequence. + +``` +grub-install /dev/sdagrub-mkconfig -o /boot/grub/grub.cfgmkinitcpio -p linuxexit +``` + +![configure grub][14] + +Then reboot your system. + +``` +umount /mnt/bootumount /mntreboot +``` + +You have now successfully installed the Arch Linux base system. It’s time to install the complete LXQt desktop. + +![Arch is installed][15] + +#### Part 2: Install LXQt Desktop in Arch Linux + +After reboot, choose Arch Linux from grub. In the Arch Linux prompt, start running the following commands in sequence. These commands install the Xorg server, display manager, LXQt desktop components, controller packages, and additional applications. + +For all the commands, use the default, i.e. press enter when asked. + +- **Install Xorg. Approx install size is 80 MB.** + +``` +sudo pacman -S --needed xorg +``` + +- **Install display manager, lxqt desktop. Approx install size is 100 MB.** + +``` +sudo pacman -S --needed lxqt xdg-utils ttf-freefont sddm +``` + +- **Install additional components (approx 80 MB)** + +``` +sudo pacman -S --needed libpulse libstatgrab libsysstat lm_sensors network-manager-applet oxygen-icons pavucontrol-qt +``` + +- **Install applications** + +This is just a reference. You can also install the ones you require. + +``` +sudo pacman -S --needed firefox vlc filezilla leafpad xscreensaver archlinux-wallpaper +``` + +Now it’s time to enable the display manager and network manager as a service. So that next time you log on, they can run automatically by systemd. + +``` +systemctl enable sddmsystemctl enable NetworkManager +``` + +Reboot the system using the reboot command. + +``` +reboot +``` + +You should see a nice login prompt on the LXQt desktop if all goes well. + +And you can now login using the user id and password which you just created. A Nice and superfast LXQt desktop would greet you after successful login. + +![LXQt Desktop in Arch Linux (version 1.2)][16] + +I hope this guide helps you create your own Arch Linux environment with a lightweight LXQt desktop from scratch. If you run into trouble, let me know using the comment box below. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/lxqt-arch-linux-install/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/archinstall-guide/ +[2]: https://www.archlinux.org/download/ +[3]: https://www.debugpoint.com/wp-content/uploads/2020/12/fdisk-l-before.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2020/12/cfdisk-1024x159.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2020/12/Swap-parition-type-change.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2020/12/final-partition-list-in-cfdisk-1024x178.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2020/12/final-partition-list-in-fdisk.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2020/12/prepare-file-system.jpg +[9]: https://www.debugpoint.com/2020/11/connect-wifi-terminal-linux/ +[10]: https://www.debugpoint.com/wp-content/uploads/2020/12/Install-base-system-1024x205.jpg +[11]: https://www.debugpoint.com/wp-content/uploads/2020/12/change-locale.jpg +[12]: https://www.debugpoint.com/wp-content/uploads/2020/12/create-user.jpg +[13]: https://www.debugpoint.com/wp-content/uploads/2020/12/update-sudoers-file.jpg +[14]: https://www.debugpoint.com/wp-content/uploads/2020/12/configure-grub-1024x639.jpg +[15]: https://www.debugpoint.com/wp-content/uploads/2020/12/Arch-is-installed.jpg +[16]: https://www.debugpoint.com/wp-content/uploads/2020/12/LXQt-Desktop-in-Arch-Linux-version-1.2-1024x639.jpg diff --git a/sources/tech/20221108.5 ⭐️⭐️ Titan Linux A Blend of Debian Stable and KDE Plasma.md b/sources/tech/20221108.5 ⭐️⭐️ Titan Linux A Blend of Debian Stable and KDE Plasma.md new file mode 100644 index 0000000000..cc7ca426c3 --- /dev/null +++ b/sources/tech/20221108.5 ⭐️⭐️ Titan Linux A Blend of Debian Stable and KDE Plasma.md @@ -0,0 +1,128 @@ +[#]: subject: "Titan Linux: A Blend of Debian Stable and KDE Plasma" +[#]: via: "https://www.debugpoint.com/titan-linux-review-2022/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Titan Linux: A Blend of Debian Stable and KDE Plasma +====== + +**We review Titan Linux – a rising star in the Linux distro space and bring Debian stable with KDE Plasma flavour with its unique tools.** + +### Titan Linux – What does it offer? + +Titan Linux is a Debian-stable based Linux distribution which features the KDE Plasma desktop. It is a fairly new distribution that aspires to be user-friendly and minimal. Developed by a two-member team, Titan Linux brings a unique experience to Debian’s experience by eliminating several packages and giving out-of-the-box hardware support. + +Moreover, it uses a different installer than Debian uses and brings some nifty in-house utilities. + +![Titan Linux Desktop][1] + +### Titan Linux Review – 2022 + +#### Download and Installation + +This review is based on the latest stable release of Titan Linux 1.2.1, “Cronus” Stable, bases on [Debian 11 bullseye][2]. + +There are no problems while downloading this distro via its torrents. Many budding distros don’t do well while providing download options – such as no server bandwidth, no torrent etc. However, the torrent speed was good, and the ISO of 2.5GB took a reasonable time to download. + +Let’s talk about the installation. + +First, the LIVE desktop gives you a shortcut to kick off the installer. The installer that Titan Linux uses is Calamares. It is not [Debian’s own graphical installer][3]. This is one of the significant advantages of using the popular Calamares for Debian. The installer is configured in a simple manner and should not be a problem for new users or advanced users. + +Second, the Calamares installer took around 4 minutes to install on average in both physical and virtual systems. After the installation is complete, the Grub is well configured, and I can boot into the desktop. + +#### Look and Feel + +Firstly, the desktop gives you a slightly different feel from a KDE Plasma desktop because of the dark colour palette and a somewhat different application menu. In addition, the Dragon Icons and cursors go well with its “Titan” themed desktop look. + +Second, the application menu is the [legacy KDE Plasma kick off][4], which gives you easy access to the applications and system settings. + +In addition, System Settings uses an alternative view than the traditional Plasma system settings. If you are a long-term KDE Plasma user, you may feel slightly different with these two subtle changes in this desktop. + +Other than that, a nice set of wallpapers will help you further customize your desktop. And finally, the bottom main taskbar is almost the same as the standard Plasma desktop. + +![The KDE Plasma kick off menu shows a legacy view][5] + +![System Settings in Titan Linux][6] + +#### Applications + +Firstly, the application list is more customized than the KDE Plasma desktop apps. A set of different and lightweight applications that gives a lightweight feel. + +Secondly, it is wise for the developers of this distro not to use the KDE Applications but instead use some of the traditional lightweight replacements. + +For example, instead of the KWiter text editor, you get the Featherpad text editor. However, the file manager is Dolphin from KDE Applications. The Gwenview is replaced by the LXImage image viewer from the LXQt desktop. + +Moreover, an exciting addition is the Titan Toolbox. It’s a collection of utilities that is very handy for new and advanced users. The Toolbox contains utilities to tweak the desktop, change repo, APT tools, hardware configuration, etc. YOu can see a glimpse of it in the below image. + +![A side-by-side view of two different options of Titan Toolbox][7] + +For example, the Extra Software option from the Toolbox gives you the below graphical menu items to perform several tasks. It is one of the selling points of this distribution. + +![One of the Titan Toolbox option - Extra Software][8] + +Another item from the Toolbox is my favourite: the Advanced options to manage Kernel and Grub, as you can see below. I must say, this is handy for all users. + +![Advanced Tools][9] + +#### Performance + +The performance metric is exciting, considering it is a KDE Plasma desktop. In a fresh install and idle state, it only uses 620 MB of RAM! And the CPU is at around 1%. + +Next, when I pass it through a heavy workload with Firefox, Dolphin file manager, text editor, terminal, VLC media player, and system settings, it uses 1.3 GB of RAM, and the CPU is at 2% to 3% on average. + +Finally, when I close all the applications on a heavy workload, the RAM consumption goes back to 676MB of RAM, and the CPU is at a 1% level. + +I must say, it is well-optimized. And surprisingly, KWin is performing better with the Debian base than the Ubuntu or Fedora base. + +It uses 10GB of disk space for a default installation. + +![Titan Linux in Idle State][10] + +![Titan Linux Performance in Heavy Workload][11] + +#### Bugs + +There are no bugs I encountered while reviewing this distribution. It is simply stable well, believing it is a new distribution. + +However, I found one weird behaviour while changing resolution in a virtual machine (see below), which I think is a KWin bug and has nothing to do with Titan Linux. + +![][12] + +### Closing Notes + +Having reviewed a large set of distributions over the years, I must say that Titan Linux gives you a stock Debian stable experience with a well-optimized KDE Plasma desktop. On top of that, the Titan toolbox is also a handy addition to helping users. + +If you are looking for a Debian stable distribution with a KDE Plasma desktop experience, definitely go for it. Thanks to Debian, you can easily use this distro for your daily use and productive work. + +You can download Titan Linux from the [official website][13]. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/titan-linux-review-2022/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/06/Titan-Linux-Desktop.jpg +[2]: https://www.debugpoint.com/2021/05/debian-11-features/ +[3]: https://www.debugpoint.com/2021/01/install-debian-buster/ +[4]: https://www.debugpoint.com/2021/02/legacy-kickoff-kde-plasma-5-21/ +[5]: https://www.debugpoint.com/wp-content/uploads/2022/06/The-KDE-Plasma-kick-off-menu-shows-a-legacy-view.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2022/06/System-Settings-in-Titan-Linux.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2022/06/A-side-by-side-view-of-two-different-options-of-Titan-Toolbox.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2022/06/One-of-the-Titan-Toolbox-option-Extra-Software.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2022/06/Advanced-Tools.jpg +[10]: https://www.debugpoint.com/wp-content/uploads/2022/06/Titan-Linux-in-Idle-State.jpg +[11]: https://www.debugpoint.com/wp-content/uploads/2022/06/Titan-Linux-Performance-in-Heavy-Workload.jpg +[12]: https://www.debugpoint.com/wp-content/uploads/2022/06/Titan-Linux-Resolution-problem.mp4 +[13]: https://techcafe757.wixsite.com/titanlinux diff --git a/sources/tech/20221109.0 ⭐️⭐️ How To Install Netdata Performance Monitoring Tool In Linux.md b/sources/tech/20221109.0 ⭐️⭐️ How To Install Netdata Performance Monitoring Tool In Linux.md new file mode 100644 index 0000000000..fa3ef80d30 --- /dev/null +++ b/sources/tech/20221109.0 ⭐️⭐️ How To Install Netdata Performance Monitoring Tool In Linux.md @@ -0,0 +1,537 @@ +[#]: subject: "How To Install Netdata Performance Monitoring Tool In Linux" +[#]: via: "https://ostechnix.com/netdata-real-time-performance-monitoring-tool-linux/" +[#]: author: "sk https://ostechnix.com/author/sk/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How To Install Netdata Performance Monitoring Tool In Linux +====== + +This guide explains **what is Netdata**, how to **install Netdata in Linux** and how to analyze and **monitor a Linux system performance and resource usage** with Netdata. + +### 1. What is Netdata? + +**NetData** is a distributed, real-time, performance and health monitoring tool for systems and applications. It provides unparalleled insights of everything happening on a system in real-time. You can view the results in a highly interactive web-dashboard. + +Using Netdata, you can get a clear idea of what is happening now, and what happened before in your systems and applications. + +Netdata runs on all physical and virtual servers, containers, even IoT/edge devices. + +You don't need to be an expert to deploy this tool in your Linux systems. Netdata just works fine out of the box with zero configuration, and zero dependencies. Just install this utility and sit back, Netdata will take care of the rest. + +Netdata has its own **built-in webserver** to display the result in graphical format. Netdata is quite fast and efficient, and it will immediately start to analyze the performance of your system in no time after installing it. + +Netdata is written using **C** programming language, so it is extremely light weight. It consumes less than 3% of a single core CPU usage and a 10-15MB of RAM. + +We can easily embed the Netdata charts on any existing web pages. It has a plugin API, so that you can monitor any application. + +Here is the list of things that will be monitored by Netdata utility in your Linux system. + +- CPU usage, +- RAM Usage, +- Swap memory usage, +- Kernel memory usage, +- Hard disks and its usage, +- Network interfaces, +- IPtables, +- Netfilter, +- DDoS protection, +- Processes, +- Applications, +- NFS server, +- Web server (Apache & Nginx), +- Database servers (MySQL), +- DHCP server, +- DNS server, +- Email serve,r +- Proxy server, +- Tomcat, +- PHP, +- SNP devices, +- And many more. + +Netdata is free, open source tool and it supports Linux, FreeBSD and Mac OS. + +### 2. Install Netdata In Linux + +Netdata can be installed on any Linux distributions that have **Bash** installed. There are two ways to install Netdata in Linux. + +We can **install Netdata using an automatic one-liner script** or **install Netdata from git** checkout. First, we will see how to install + +#### 2.1. Install Netdata using Automatic One-line Installation Script + +The best as well as the easiest way to install Netdata is to run the following one-liner command as normal user: + +``` +$ wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh && sh /tmp/netdata-kickstart.sh +``` + +If `wget` is not available, use `curl` instead: + +``` +$ curl https://my-netdata.io/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh +``` + +This method is fully automatic on any Linux and Unix distributions, such as Debian, Fedora, RHEL, CentOS, AlmaLinux, Rocky Linux, openSUSE and macOS etc. + +The automatic installation script will download and install everything needed to up and run Netdata. It will also enable automatic and nightly updates. + +If you don't like the auto-installer script method, you can follow the steps below to install Netdata from Git checkout. + +#### 2.2. Install Netdata from Git + +First, we need to install required dependencies. The prerequisites can be installed using automatic requirements installer script or manually using the package manager. + +##### 2.2.1. Install Prerequisites using Automatic Requirements Installer + +To install the necessary dependency packages for having a **basic Netdata installation** only, run: + +``` +$ curl -Ss 'https://raw.githubusercontent.com/netdata/netdata/master/packaging/installer/install-required-packages.sh' >/tmp/install-required-packages.sh && bash /tmp/install-required-packages.sh -i netdata +``` + +To install the necessary dependency packages for having a **full Netdata installation** to monitor everything, run: + +``` +$ curl -Ss 'https://raw.githubusercontent.com/netdata/netdata/master/packaging/installer/install-required-packages.sh' >/tmp/install-required-packages.sh && bash /tmp/install-required-packages.sh -i netdata-all +``` + +If you prefer manual prerequisites installation, follow the steps in the section below. + +##### 2.2.2. Install Prerequisites using Manually Package Manager + +Depending upon the Linux distribution, use any one of the following commands to install the necessary prerequisites using your distribution's default package manager. + +**Debian / Ubuntu:** + +``` +$ sudo apt-get install zlib1g-dev uuid-dev libuv1-dev liblz4-dev libssl-dev libelf-dev libmnl-dev libprotobuf-dev protobuf-compiler gcc g++ make git autoconf autoconf-archive autogen automake pkg-config curl python cmake +``` + +**Fedora:** + +``` +$ sudo dnf install zlib-devel libuuid-devel libuv-devel lz4-devel openssl-devel elfutils-libelf-devel libmnl-devel protobuf-devel protobuf-compiler gcc gcc-c++ make git autoconf autoconf-archive autogen automake pkgconfig curl findutils python cmake +``` + +**CentOS / Red Hat Enterprise Linux older versions:** + +``` +$ sudo yum install autoconf automake curl gcc gcc-c++ git libmnl-devel libuuid-devel openssl-devel libuv-devel lz4-devel elfutils-libelf-devel protobuf protobuf-devel protobuf-compiler make nc pkgconfig python zlib-devel cmake +``` + +**RHEL 8.x / CentOS 8.x / AlmaLinux 8.x. / Rocky Linux 8.x:** + +``` +# Enable config-manager +$ sudo dnf install -y 'dnf-command(config-manager)' + +# Enable PowerTools +$ sudo dnf config-manager --set-enabled powertools + +# Enable EPEL +$ sudo dnf install -y epel-release + +# Install Repo for libuv-devl (NEW) +$ sudo dnf install -y http://repo.okay.com.mx/centos/8/x86_64/release/okay-release-1-3.el8.noarch.rpm + +# Install Devel Packages +$ sudo dnf install autoconf automake curl gcc git cmake libuuid-devel openssl-devel libuv-devel lz4-devel make nc pkgconfig python3 zlib-devel +``` + +**openSUSE:** + +``` +$ sudo zypper install zlib-devel libuuid-devel libuv-devel liblz4-devel libopenssl-devel libelf-devel libmnl-devel protobuf-devel gcc gcc-c++ make git autoconf autoconf-archive autogen automake pkgconfig curl findutils python cmake +``` + +After installing the required dependencies, install NetData from Git checkout as shown below. + +##### 2.2.3. Install Netdata + +Git clone the Netdata repository: + +``` +$ git clone https://github.com/netdata/netdata.git --depth=100 --recursive +``` + +The above command will create a directory called **'netdata'**in the current working directory. + +Change to the 'netdata' directory: + +``` +$ cd netdata/ +``` + +Finally, install and start Netdata using command: + +``` +$ sudo ./netdata-installer.sh +``` + +**Sample output:** + +``` +^ + |.-. .-. .-. .-. .-. . netdata .-. .-. .-. .-. .-. .- + | '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' + +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+---> + + --- real-time performance monitoring, done right! --- + + You are about to build and install netdata to your system. + + The build process will use /tmp for + any temporary files. You can override this by setting $TMPDIR to a + writable directory where you can execute files. + + It will be installed at these locations: + + - the daemon at /usr/sbin/netdata + - config files in /etc/netdata + - web files in /usr/share/netdata + - plugins in /usr/libexec/netdata + - cache files in /var/cache/netdata + - db files in /var/lib/netdata + - log files in /var/log/netdata + - pid file at /var/run/netdata.pid + - logrotate file at /etc/logrotate.d/netdata + + This installer allows you to change the installation path. + Press Control-C and run the same command with --help for help. + + + NOTE: + Anonymous usage stats will be collected and sent to Netdata. + To opt-out, pass --disable-telemetry option to the installer or export + the environment variable DISABLE_TELEMETRY to a non-zero or non-empty value + (e.g: export DISABLE_TELEMETRY=1). + +Press ENTER to build and install netdata to your system > **## Press ENTER Key** + +[...] + +netdata by default listens on all IPs on port 19999, +so you can access it with: + +**http://this.machine.ip:19999/** + +To stop netdata run: + + systemctl stop netdata + +To start netdata run: + + systemctl start netdata + +Uninstall script copied to: /usr/libexec/netdata/netdata-uninstaller.sh + + --- Installing (but not enabling) the netdata updater tool --- +Update script is located at /usr/libexec/netdata/netdata-updater.sh + + --- Wrap up environment set up --- +Preparing .environment file +[/home/ostechnix/netdata]# chmod 0644 /etc/netdata/.environment + OK '' + +Setting netdata.tarball.checksum to 'new_installation' + + --- We are done! --- + + ^ + |.-. .-. .-. .-. .-. . netdata .-. .-. .-. .-. .-. .- + | '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' + +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+---> + + --- is installed and running now! --- + enjoy real-time performance and health monitoring... +``` + +![Install Netdata in Linux][1] + +Install Netdata in Linux + +Congratulations! Netdata has been installed and started. + +#### 2.3. Install Netdata using Package Manager + +Netdata is available in the default repositories of some Linux distributions. These packages might be bit outdated. + +**Alpine Linux:** + +To install Netdata in Alpine Linux, use **[apk][2]** package manager: + +``` +$ sudo apk add netdata +``` + +**Arch Linux:** + +The Netdata is available in the Arch Linux `**[community]**` repository. So, we can install it with [**pacman**][3] using command: + +``` +$ sudo pacman -S netdata +``` + +**Debian / Ubuntu:** + +``` +$ sudo apt install netdata +``` + +**Fedora:** + +``` +$ sudo dnf install netdata +``` + +**RHEL / CentOS / AlmaLinux / Rocky Linux:** + +In Enterprise Linux operating systems, you need to enable **`[EPEL]`** repository and then install Netdata. + +``` +$ sudo dnf install epel-release +``` + +``` +$ sudo dnf install netdata +``` + +**SUSE / openSUSE:** + +``` +$ sudo zypper install netdata +``` + +To know other installation methods, refer the [**official installation instructions page**][4]. + +### 3. Allow Netdata Default Port via Firewall or Router + +If your system stays behind any firewall or router, you must allow the default port **19999** to access the NetData web interface from any remote systems on the network,. + +**On Debian, Ubuntu:** + +``` +$ sudo ufw allow 19999 +``` + +**On Fedora, RHEL, CentOS, AlmaLinux and Rocky Linux:** + +``` +$ sudo firewall-cmd --permanent --add-port=19999/tcp +``` + +``` +$ sudo firewall-cmd --reload +``` + +### 4. Starting and Stopping Netdata Service + +To enable and start Netdata service on systems that use **Systemd**, run: + +``` +$ sudo systemctl enable netdata +``` + +``` +$ sudo systemctl start netdata +``` + +To stop Netdata service, run: + +``` +$ sudo systemctl stop netdata +``` + +To enable and start Netdata service on systems that use **Init**, run: + +``` +$ sudo service netdata start +``` + +``` +$ sudo chkconfig netdata on +``` + +To stop Netdata service: + +``` +$ sudo service netdata stop +``` + +### 5. Access Netdata via Web Browser + +Open your web browser, and navigate to **http://127.0.0.1:19999** or **http://localhost:19999/** or **http://ip-address:19999**. You will be pleased with Netdata dashboard as shown in the following screenshot. + +![Netdata Main Dashboard][5] + +Netdata Main Dashboard + +From the dashboard, you will find the complete statistics of your Linux system. Scroll down to view each section. You can also click on any section on the right corner to immediately jump to that particular section. + +### 6. Netdata Configuration + +As stated already, Netdata requires zero configuration. It works out of the box. + +The main configuration file of Netdata is located at **`/etc/netdata/netdata.conf`**. You can view it using any text editors to find most configuration options. + +You can also download and/or view Netdata default configuration file at any time by simply navigating to **http://localhost:19999/netdata.conf**. + +![Netdata Configuration File][6] + +Netdata Configuration File + +If you want to edit the Netdata configuration file, you can use `**edit-config**` script, which is the officially recommended way. + +``` +$ cd /etc/netdata +$ sudo ./edit-config netdata.conf +``` + +### 7. Netdata Metrics + +Netdata gathers thousands of metrics with zero configuration using **[300+ pre-installed collectors][7]**. These collectors will search your node in default locations and ports to find running applications and gather as many metrics as possible without you having to configure them individually. + +As I already stated, Most collectors will work without any configuration. However, you should know **[how collectors work][8]** and how to **[enable or configure collectors][9]** individually. + +### 8. Updating Netdata + +If you have installed Netdata using the Automatic one-liner installation script, Netdata will automatically update itself. + +If you have installed Netdata using your package manager, you can run the distribution-specific update command to update Netdata. For example in Arch Linux, just run the following command to update Netdata. If the updated version is available in the repository, it will be automatically installed. + +``` +$ sudo pacman -Syyu +``` + +If you have installed Netdata using Git, just go to the directory where you have cloned it (In our case it's netdata). + +``` +$ cd netdata +``` + +Pull the latest update: + +``` +$ git pull +``` + +Then, rebuild and update it using command: + +``` +$ sudo ./netdata-installer.sh +``` + +### 9. Uninstalling Netdata + +If you have installed Netdata from Git, go to the location where you have cloned Netdata: + +``` +$ cd netdata +``` + +Then, uninstall it using command: + +``` +$ sudo ./netdata-uninstaller.sh --force +``` + +If you have installed Netdata using the package manager, just use the appropriate command. For example in Arch Linux, the following command can be used to uninstall Netdata: + +``` +$ sudo pacman -Rns netdata +``` + +### 10. Frequently Asked Questions + +#### What is Netdata? + +Netdata is an Enterprise-grade, real-time infrastructure monitoring application. It is opensource and completely free. Netdata works on Linux, FreeBSD, and macOS. It also works on container platforms like Kubernetes clusters, and Docker. + +#### Which platforms are supported by Netdata? + +Netdata supports most Linux distributions (Ubuntu, Debian, CentOS, and more), container platforms (Kubernetes clusters, Docker), and many other operating systems (FreeBSD, macOS). + +#### Where can I find the Netdata main configuration file? + +Netdata main configuration file is located at **`/etc/netdata/netdata.conf`**. If you're not sure where to find it, simply open your web browser and point it **http://localhost:19999/netdata.conf**. + +#### How to download Netdata configuration file? + +Yes. After finding the location of the Netdata config file, use any one of the following commands to download Netdata configuration file. + +``` +wget -O /etc/netdata/netdata.conf http://localhost:19999/netdata.conf +``` + +Or + +``` +curl -o /etc/netdata/netdata.conf http://localhost:19999/netdata.conf +``` + +#### Who can use Netdata? + +Netdata can be used by any user who wants to view the real-time performance metrics of their Linux or Unix system. It is used by system administrators, DevOps engineers, and developers to collect everything. + +#### Is Netdata fast? + +Yes, it is amazingly fast. It is optimized to utilize 1% of the CPU and consumes a few MB of RAM. + +#### Is Netdata requires special system administration skills? + +Absolutely NOT. It requires **zero configuration** as well as **zero maintenance**. Just run it on your machine and Netdata does everything on its own. + +#### Can Netdata send notifications when something goes wrong? + +Yes! Netdata's health watchdog sends warning and critical alarms to your favorite platform to inform you of anomalies just seconds after they affect your node. + +#### Can I use Netdata to monitor my Cloud infrastructure? + +Yes! Netdata Cloud works with Netdata's free, open-source monitoring agent to monitor and troubleshoot every layer of your systems to find weaknesses before they turn into outages. + +Netdata Cloud provides: + +- Infrastructure level dashboards (each chart aggregates data from multiple nodes) +- Central dispatch of alert notifications, +- Custom dashboards editor, +- Intelligence assisted troubleshooting, to help surface the root cause of issues. + +### Conclusion + +In this guide, we looked at what is Netdata and different ways to install Netdata in Linux. We also looked at how to access the Netdata dashboard, update Netdata and uninstall it. + +Netdata is simple yet powerful real-time performance monitoring application. It requires zero configuration and works out of the box. If you ever looking for a easiest way to monitor your system performance, resource and application usage, Netdata is highly recommended. + +**Resources:** + +- [**NetData website**][10] +- [**NetData GitHub page**][11] + +-------------------------------------------------------------------------------- + +via: https://ostechnix.com/netdata-real-time-performance-monitoring-tool-linux/ + +作者:[sk][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://ostechnix.com/author/sk/ +[b]: https://github.com/lkxed +[1]: https://ostechnix.com/wp-content/uploads/2022/11/Install-Netdata-in-Linux.png +[2]: https://ostechnix.com/alpine-linux-apk-command-examples/ +[3]: https://ostechnix.com/getting-started-pacman/ +[4]: https://docs.netdata.cloud/packaging/installer/ +[5]: https://ostechnix.com/wp-content/uploads/2022/11/Netdata-Main-Dashboard.png +[6]: https://ostechnix.com/wp-content/uploads/2022/11/Netdata-Configuration-File.png +[7]: https://learn.netdata.cloud/docs/agent/collectors/collectors +[8]: https://learn.netdata.cloud/docs/collect/how-collectors-work +[9]: https://learn.netdata.cloud/docs/collect/enable-configure +[10]: https://netdata.firehol.org/ +[11]: https://github.com/firehol/netdata diff --git a/sources/tech/20221109.3 ⭐️⭐️ A Guide to systemd journal Maintenance [With Examples].md b/sources/tech/20221109.3 ⭐️⭐️ A Guide to systemd journal Maintenance [With Examples].md new file mode 100644 index 0000000000..1623dec544 --- /dev/null +++ b/sources/tech/20221109.3 ⭐️⭐️ A Guide to systemd journal Maintenance [With Examples].md @@ -0,0 +1,188 @@ +[#]: subject: "A Guide to systemd journal Maintenance [With Examples]" +[#]: via: "https://www.debugpoint.com/systemd-journald-clean/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +A Guide to systemd journal Maintenance [With Examples] +====== + +**Systemd comes with many built-in features to manage the system logs. In this guide, we explain how you can manage system journals, logs and take action on them such as rotating, archiving, and clear logs.****We also explain the manual systems journal clean method and using config file changes.** + +If your Linux distribution supports [systemd][1], then it collects logs from all processes, applications of the system every second which starts from the boot. All these logging events are managed by `journald` daemon of systemd. The journald collects all the logs (info, warnings, errors, etc) and stores them as binary data in the disk files.  + +As the logs remain in the disk and every second it is collected, it takes up huge disk space; especially for older systems, servers. For example, in one of my test systems which are running for around one year, the log file size is in GBs. + +If you manage multiple systems, servers, it is always recommended to properly manage journald logs for efficient operation. Let’s take a look at how you can manage the log files. + +### The systemd journal Maintenance + +Using the journalctl utility of systemd, you can query these logs, perform various operations on them. For example, viewing the log files from different boots, check for last warnings, errors from a specific process or applications. If you are unaware of these, I would suggest you quickly go through this tutorial – [“use journalctl to View and Analyze Systemd Logs [With Examples]][2]” before you follow this guide.  + +#### Where are the physical journal log files? + +The systemd’s journald daemon collects logs from every boot. That means, it classifies the log files as per the boot.  + +The logs are stored as binary in the path `/var/log/journal` with a folder as machine id. + +**For example:** + +![Screenshot of physical journal file -1][3] + +![Screenshot of physical journal files -2][4] + +Also, remember that based on system configuration, runtime journal files are stored at `/run/log/journal/`. And these are removed in each boot.  + +#### Can I manually delete the log files? + +You can, but don’t do it. Instead, follow the below instructions to clear the log files to free up disk space using journalctl utilities. + +#### How much disk space is used by systemd log files? + +Open up a terminal and run the below command. + +``` +journalctl --disk-usage +``` + +This should provide you with how much is actually used by the log files in your system. + +![journalctl disk usage command][5] + +If you have a graphical desktop environment, you can open the file manager and browse the path `/var/log/journal` and check the properties. + +#### systemd journal clean process + +The effective way of clearing the log files should be done by `journald.conf` a configuration files. Ideally, you should not manually delete the log files even if the journalctl provides the utility to do that. + +Let’s take a look at how you can delete it [manually][6], then I will explain the configuration changes in `journald.conf` so that you do not need to manually delete the files from time to time; Instead, the systemd takes care of it automatically based on your configuration.  + +##### Manual delete + +First, you have to `flush` and `rotate` the log files. Rotating is a way of marking the current active log files as an archive and creating a fresh logfile from this moment. The flush switch asks the journal daemon to flush any log data stored in `/run/log/journal/` into `/var/log/journal/`, if persistent storage is enabled. + +Then, after flushing and rotating, you need to run journalctl with`vacuum-size`, `vacuum-time`, and `vacuum-files` switches to force systemd to clear the logs.  + +**Example 1:** + +``` +sudo journalctl --flush --rotate +``` + +``` +sudo journalctl --vacuum-time=1s +``` + +The above set of commands removes all archived journal log files until the last second. This effectively clears everything. So, be careful while running the command.  + +![journal clean up - example][7] + +After clean up: + +![After clean up - journal space usage][8] + +You can also provide the following suffixes as per your need following the number. + +- s: seconds +- m: minutes +- h: hours +- days +- months +- weeks +- years + +**Example 2:** + +``` +sudo journalctl --flush --rotate +``` + +``` +sudo journalctl --vacuum-size=400M +``` + +This clears all archived journal log files and retains the last 400MB files. Remember this switch applies to only archived log files only, not on active journal files. You can also use suffixes as below. + +- K: KB +- M: MB +- G: GB + +**Example 3:** + +``` +sudo journalctl --flush --rotate +``` + +``` +sudo journalctl --vacuum-files=2 +``` + +The vacuum-files switch clears all the journal files below the number specified. So, in the above example, only the last 2 journal files are kept and everything else is removed. Again, this only works on the archived files. + +You can combine the switches if you want, but I would recommend not to. However, make sure to run with `--rotate` switch first. + +### Automatic delete using config files + +While the above methods are good and easy to use, it is recommended that you control the journal log file cleanup process using the journald configuration files which present at `/etc/systemd/journald.conf`.  + +The systemd provides many parameters for you to effectively manage the log files. By combining these parameters you can effectively limit the disk space used by the journal files. Let’s take a look. + +| **journald.conf parameter** | **Description** | **Example** | +| :- | :- | :- | +| SystemMaxUse | Specifies the maximum disk space that can be used by the journal in persistent storage | SystemMaxUse=500M | +| SystemKeepFree | Specifies the amount of space that the journal should leave free when adding journal entries to persistent storage. | SystemKeepFree=100M | +| SystemMaxFileSize | Controls how large individual journal files can grow to in persistent storage before being rotated. | SystemMaxFileSize=100M | +| RuntimeMaxUse | Specifies the maximum disk space that can be used in volatile storage (within the /run filesystem). | RuntimeMaxUse=100M | +| RuntimeKeepFree | Specifies the amount of space to be set aside for other uses when writing data to volatile storage (within the /run filesystem). | RuntimeMaxUse=100M | +| RuntimeMaxFileSize | Specifies the amount of space that an individual journal file can take up in volatile storage (within the /run filesystem) before being rotated. | RuntimeMaxFileSize=200M | + +If you add these values in a running system in `/etc/systemd/journald.conf` file, then you have to restart the journald after updating the file. To restart use the following command.  + +``` +sudo systemctl restart systemd-journald +``` + +### Verification of log files + +It is wiser to check the integrity of the log files after you clean up the files. To do that run the below command. The command shows the PASS, FAIL against the journal file. + +``` +journalctl --verify +``` + +![verify log files][9] + +### Closing Notes + +I hope this guide helps you to understand the basics of the systemd journal management process. With these, you can manage the disk space used by the log files in your system or servers by limiting the space, clearing old log files. These are just the guideline commands, you can combine these in multiple ways to achieve your system demands.  + +- [journalctl manual][10] +- [journald.conf manual][11] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/systemd-journald-clean/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.freedesktop.org/wiki/Software/systemd/ +[2]: https://www.debugpoint.com/2020/12/systemd-journalctl/ +[3]: https://www.debugpoint.com/wp-content/uploads/2021/01/Screenshot-of-physical-journal-file-1.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2021/01/Screenshot-of-physical-journal-files-2.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2021/01/journalctl-disk-usage-command.jpg +[6]: https://www.debugpoint.com#delete-using-journal-conf +[7]: https://www.debugpoint.com/wp-content/uploads/2021/01/journal-clean-up-example.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2021/01/After-clean-up-journal-space-usage.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2021/01/verify-log-files.png +[10]: https://www.freedesktop.org/software/systemd/man/journalctl.html +[11]: https://www.freedesktop.org/software/systemd/man/journald.conf.html diff --git a/sources/tech/20221109.4 ⭐️⭐️ How to use journalctl to View and Analyze Systemd Logs [With Examples].md b/sources/tech/20221109.4 ⭐️⭐️ How to use journalctl to View and Analyze Systemd Logs [With Examples].md new file mode 100644 index 0000000000..aa7d864ff8 --- /dev/null +++ b/sources/tech/20221109.4 ⭐️⭐️ How to use journalctl to View and Analyze Systemd Logs [With Examples].md @@ -0,0 +1,257 @@ +[#]: subject: "How to use journalctl to View and Analyze Systemd Logs [With Examples]" +[#]: via: "https://www.debugpoint.com/systemd-journalctl/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to use journalctl to View and Analyze Systemd Logs [With Examples] +====== + +**This guide explains the basics of the journalctl utility of [Systemd][1] and its various commands. You can use these commands for troubleshooting desktop and server logs in Linux. This is how you can use journalctl to view and analyze Systemd Logs with different examples.** + +### Introduction + +Many say that Systemd is not good, it is heavy on the system and it is a debated topic always. But you can not deny that it provides a well set of utilities to manage, troubleshoot a system. Imagine you end up with a broken system with no GUI. You probably messed up boot and GRUB as well. In those kinds of scenarios or in general – you can boot from a LIVE system, mount your Linux partition and explore the Systemd logs to find out about the problem. + +Systemd has three basic components as follows – + +- **systemd**: System and service manager for Linux operating systems. +- **systemctl**: Command to introspect and control the state of the systemd system and service manager. +- **systemd-analyze**: Provides system boot-up performance statistics and retrieve other state and tracing information from the system and service manager + +Apart from these three, there are additional services that systemd provides such as – journald, logind, networkd, etc. In this guide we will talk about the journald service of systemd. + +### journald – systemd journal daemon + +By design, systemd provides a centralized way of handing all operating system logs from processes, applications, etc. All these logging events are handled by journald daemon of systemd. The journald daemon collects all logs from everywhere of the Linux operating systems and stores themes as binary data in files. + +The advantages of centralized logging of events, system problems as binary data are many. For example, as the system logs are stored as binary and not text – you can translate in many ways such as text, JSON objects for various needs. Also, it is super easy to track down to a single event as the logs are stored sequentially via date/time manipulation of the logs. + +Remember the log files that journald collects are in thousands of lines and it gets updated for every event, every boot. So if you have a long time running Linux operating system – the journal logs size should in GBs. As the logs are in thousands, it’s better to filter with basic commands to find out more about the system problems. + +#### The journald Configuration File + +The configuration file of the journald is present in the below path. It contains various flags on how the logging happens. You can take a look at the file and make the changes necessary. But I would recommend not to modify this file unless you know what you are doing. + +``` +/etc/systemd/journald.conf +``` + +#### Where journald stores the binary log files + +The journald stores the logs in binary format. They are stored inside a directory under this path. + +``` +/var/log/journal +``` + +For example, in the below path there is a directory that contains all the system logs to date. + +![journalctl log file path][2] + +Do not use cat command or use nano or vi to open these files. They would not be displayed properly. + +### Use journalctl to View and Analyze Systemd Logs + +#### Basic journald command + +The basic command to view logs using journal daemon is – + +``` +journalctl +``` + +![journalctl][3] + +This gives you all the journal entries including errors, warnings, etc from all applications and processes. It shows the list with the oldest log at the top and current logs at the bottom. You need to keep pressing ENTER to scroll through it line by line. You can also use PAGE UP and PAGE DOWN keys to scroll. Press q to exit from this view. + +#### How to view journal entries for time zones + +By default, the journalctl shows the log time in the current system time zone. However, you can easily provide the timezone in your command to convert the same log to a different time zone. For example, to view the logs in UTC, use the below command. + +``` +journalctl --utc +``` + +![journalctl --utc][4] + +#### How to view only errors, warnings, etc in journal logs + +The logs that a system generates have different priorities. Some logs may be a warning which can be ignored or some may be critical errors. You might want to look at only errors, not warnings. That is also possible using the below command. + +To view emergency system messages use: + +``` +journalctl -p 0 +``` + +![journalctl -p 0][5] + +Error codes + +``` +0: emergency +1: alerts +2: critical +3: errors +4: warning +5: notice +6: info +7: debug +``` + +When you specify the error code, it shows all messages from that code and above. For example, if you specify the below command, it shows all messages with priority 2, 1 and 0 + +``` +journalctl -p 2 +``` + +#### How to view journal logs for a specific boot + +When you are running the journalctl command it shows the information from the current boot that is from the current session which you are running. But it is also possible to view information about past boots as well. + +Journal logs keep on updating in every reboot. The journald keeps track of the logs in different boots. To view, the boot-wise logs use the below command. + +``` +journalctl --list-boots +``` + +![journalctl list-boots][6] + +- The first number shows the unique journald boot track number which you can use in the next command to analyze that specific boot. +- The second number the boot ID which also you can specify in the commands. +- The next two date, time combinations are the duration of the logs stored in the respective file. This is super handy if you want to find out a log or error from a specific date, time. + +To view a specific boot number you the first number or the boot ID as below. + +``` +journalctl -b -45 +``` + +``` +journalctl -b 8bab42c7e82440f886a3f041a7c95b98 +``` + +![journalctl -b 45][7] + +You can also use `-x` switch which can add an explanation of the systemd error messages in your display. This is a lifesaver in certain situations. + +``` +journalctl -xb -p 3 +``` + +![journalctl -xb][8] + +#### How to view journal logs for a specific time, date duration + +The journalctl is powerful enough to provide “english” like argument in the command itself for time and date manipulation. + +You can use`--since` switch with a combination of `“yesterday”, “today”, “tomorrow”, or “now”.` + +Some of the examples of different commands below. You can modify them as per your need. They are self-explanatory. The date, time format in the below commands are `"YYYY-MM-DD HH:MM:SS"` + +``` +journalctl --since "2020-12-04 06:00:00" +``` + +``` +journalctl --since "2020-12-03" --until "2020-12-05 03:00:00" +``` + +``` +journalctl --since yesterday +``` + +``` +journalctl --since 09:00 --until "1 hour ago" +``` + +![journalctl --since 09:00 --until][9] + +You can combine the above with the error level switches as well. + +#### How to see Kernel specific journal logs + +The Linux Kernel messages can be extracted from journal logs as well. To view the Kernel messages from the current boot only use the below command. + +``` +journalctl -k +``` + +#### How to see journal logs for a service, PID + +You can filter out specific logs from a systemd service unit only from the journald logs. For example, to find out the logs from NetworkManager service use the below command. + +``` +journalctl -u NetworkManager.service +``` + +![journalctl NetworkManager service][10] + +If you do not know the service name, you can use the below command to list the systemd services in your system. + +``` +systemctl list-units --type=service +``` + +#### How to view journal logs for a user, group + +If you are analyzing server logs this command is helpful where multiple users are logged in. You can first find out about the user id using the below command from the user name. For example, to find out the id of user “`debugpoint`” – + +``` +id -u debugpoint +``` + +Then use that ID with `_UID` switch to view the logs generated by the user. + +``` +journalctl _UID=1000 --since today +``` + +![journalctl _UID][11] + +Similarly use `_GID` switch to find out the same for user groups. + +#### How to view journal logs for an executable + +You can also find out journald logs of a specific program or executable. For example, if you want to find out the messages of gnome-shell, you can run the below command. + +``` +journalctl /usr/bin/gnome-shell --since today +``` + +![journalctl gnome-shell][12] + +### Closing notes + +I hope this guide helps you to use journalctl to view analyze systemd logs on your Linux desktop or server troubleshooting. The systemd journal management extremely powerful if you know how to use the commands, it makes your life a bit easy during debugging time. All major mainstream Linux distribution uses Systemd these days. Ubuntu, Debian, Fedora, Arch – they all use systemd for their default OS offerings. In case if you are wondering about systemd-free Linux distributions, you might want to check out [MX-Linux][13], Gentoo, Slackware, Void Linux. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/systemd-journalctl/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://freedesktop.org/wiki/Software/systemd/ +[2]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-log-file-path.jpg +[3]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-utc.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-p-0.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-list-boots.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-b-45.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-xb.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-since-0900-until.jpg +[10]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-NetworkManager-service.jpg +[11]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-_UID.jpg +[12]: https://www.debugpoint.com/wp-content/uploads/2020/12/journalctl-gnome-shell.jpg +[13]: https://www.debugpoint.com/tag/mx-linux diff --git a/sources/tech/20221109.7 ⭐️⭐️ Why sysadmins should choose Awesome window manager on Linux.md b/sources/tech/20221109.7 ⭐️⭐️ Why sysadmins should choose Awesome window manager on Linux.md new file mode 100644 index 0000000000..465202d50e --- /dev/null +++ b/sources/tech/20221109.7 ⭐️⭐️ Why sysadmins should choose Awesome window manager on Linux.md @@ -0,0 +1,144 @@ +[#]: subject: "Why sysadmins should choose Awesome window manager on Linux" +[#]: via: "https://opensource.com/article/22/11/linux-awesome-window-manager" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Why sysadmins should choose Awesome window manager on Linux +====== + +The Awesome window manager takes a "tiling" approach, meaning that each window you launch takes up a fraction of your desktop according to the number of windows you have open. + +Awesome is a window manager for the [Linux desktop][1]. A "window manager" is a graphical interface that primarily (if not literally) just manages the drawing and arrangement of windows. In practice, even the [most rudimentary][2] of window managers actually provides a little more than just the ability to draw a window. Most also provide a pop-up menu so you can launch an application, some provide a dock or panel so you can switch between different applications you have running. They stop short at providing desktop conveniences such as drawing a wallpaper in the background of your screen, mounting and unmounting devices, providing a system tray, and so on. A window manager assumes you can use other applications to build a desktop experience to your own liking, and so it focuses on managing windows. The Awesome window manager takes a "tiling" approach, meaning that each window you launch takes up a fraction of your desktop according to the number of windows you have open. + +![Image of the Awesome desktop.][3] + +### My Linux desktop is the terminal + +When you're a [systems administrator][4], you tend to spend a lot of time in a terminal window. It's a direct and efficient interface to your local machine, to remote machines, the network, the Internet, and everything else, so it's usually the easiest and most sensible way to do a lot of things to a lot of computers at once. And when you spend all day in a terminal, you understandably start to question whether you actually need a desktop at all. + +To be perfectly honest, the answer's often no, at least for 80% of your tasks. The reality of modern computing, however, is that there are some applications that are just easier to use through a graphical interface. For instance, even though there are issue tracking systems, like the open source Bugzilla, that provide terminal commands as an interface, sometimes you're on a team that uses an issue tracker (usually it's not open source) that provides only a web application. Like it or not, you need a web browser to interact with the ticketing system. And even though you may use a perfectly reasonable markup language like [AsciiDoc][5], you're probably sent a word processor document sometimes and, while you could use [Pandoc][6] to convert the document into AsciiDoc and then back into an office document, that risks losing something in translation. Like it or not, you need an office suite. + +The bottom line is that, whether you like it or not, you need a desktop. Or at least a window manager. + +### Tiling windows + +Awesome understands your plight. With Awesome, your "primary" desktop can be your terminal. When you first launch it, your terminal window is full screen, just like the text console you really want to be greeted with upon login. When you really need web browser, though, you can launch it and Awesome makes room for it by splitting your screen in half. Your terminal is on one side, the web browser's on the other. + +If you need to open a third application, you can launch that and Awesome makes room for it by splitting your screen into thirds. + +![Image of Awesome tiles.][7] + +When you're finished with an application, Awesome adjusts your layout again until, eventually, you're back to a full-screen terminal, just the way you like it. + +### Lua configuration + +Awesome uses the [Lua][8] scripting language for configuration. Lua has a similar philosophy to Awesome. It's a simple language that's pretty intuitive once you understand a few basic concepts. + +The simplest concept, and yet the most important, is the Lua table construct. Lua stores information in what it calls a "table", and it means that most everything in Lua has a structured hierarchy. For instance, this creates a Lua table: + +``` +zombie = {} + +zombie.apocalypse = true +zombie.defeat = false +``` + +Now when you need to know whether there's an active zombie apocalypse, you can "call" the zombie table and query the `apocalypse` value: + +``` +> print(zombie.apocalypse) +true +``` + +Both the `apocalypse` and the `defeat` values are "children" of the `zombie` table, which makes them each distinct from the `apocalypse` and `defeat` values of the `alien` table. + +It's a simple system of data classification, and you see several tables used in the Awesome configuration: + +``` +-- Table of layouts +awful.layout.layouts = { + awful.layout.suit.floating, + awful.layout.suit.tile, + awful.layout.suit.tile.left, + awful.layout.suit.tile.bottom, + awful.layout.suit.tile.top, + awful.layout.suit.fair, + awful.layout.suit.fair.horizontal, + awful.layout.suit.spiral, + awful.layout.suit.spiral.dwindle, + awful.layout.suit.max, + awful.layout.suit.max.fullscreen, + awful.layout.suit.magnifier, + awful.layout.suit.corner.nw, +} +``` + +You may not know what options are available from reading the configuration file itself, but understanding that the options are grouped into Lua tables means you know what to look up in the Awesome documentation. + +Of course, if you don't feel like reading through the documentation, you can also just comment options out and see what changes. A comment in Lua are two dashes, as in the first line of this snippet: + +``` +-- Create a launcher widget and a main menu +myawesomemenu = { + { "hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end }, + { "manual", terminal .. " -e man awesome" }, + { "edit config", editor_cmd .. " " .. awesome.conffile }, + { "restart", awesome.restart }, + { "quit", function() awesome.quit() end }, +} +``` + +Lua is a consistent and logical language. Any amount of Lua you pick up from configuring Awesome is Lua you can use for real life Lua scripting. If you're ready to move up from basic Bash scripting, you might consider Lua. + +### Adjusting tiles + +While you're working in a split screen in Awesome, you might find the need to adjust the proportions. To do this graphically, right-click on the intersection the windows you want to adjust, and then drag all window borders to suit your preference. + +When you learn enough Lua to get really good at configuring Awesome, you can configure default preferences. + +### Floating windows + +Some applications never make sense as tiled windows. The Awesome configuration provided by your Linux distribution probably has a few examples set: + +``` +-- Floating clients. +class = { + "Blueman-manager", + "Kruler", + "MessageWin", + "Tor Browser", + "Wpa_gui"}, +}, +``` + +### Assemble your own Linux desktop + +Using a window manager instead of a desktop means you get to choose the components you use for everything else you want to do with your computer. You can launch KDE applications from the [Plasma Desktop][9], or use bits and pieces of [XFCE][10] (such as the panel, the network manager, and more), or you can eschew the desktop model entirely and use a particularly robust file manager and the terminal commands you know and love. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/linux-awesome-window-manager + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/20/5/linux-desktops +[2]: https://opensource.com/article/19/12/twm-linux-desktop +[3]: https://opensource.com/sites/default/files/2022-10/awesome-desktop.png +[4]: https://www.redhat.com/sysadmin/?intcmp=7013a000002qLH8AAM +[5]: https://opensource.com/article/22/8/drop-markdown-asciidoc +[6]: https://opensource.com/article/20/5/pandoc-cheat-sheet +[7]: https://opensource.com/sites/default/files/2022-10/awesome-tiles.png +[8]: https://opensource.com/article/22/11/lua-worth-learning +[9]: https://opensource.com/article/19/12/linux-kde-plasma +[10]: https://opensource.com/article/18/6/xfce-desktop diff --git a/sources/tech/20221110.2 ⭐️ How to Install Enlightenment Desktop in Arch Linux [Complete Guide].md b/sources/tech/20221110.2 ⭐️ How to Install Enlightenment Desktop in Arch Linux [Complete Guide].md new file mode 100644 index 0000000000..64574c5032 --- /dev/null +++ b/sources/tech/20221110.2 ⭐️ How to Install Enlightenment Desktop in Arch Linux [Complete Guide].md @@ -0,0 +1,308 @@ +[#]: subject: "How to Install Enlightenment Desktop in Arch Linux [Complete Guide]" +[#]: via: "https://www.debugpoint.com/enlightenment-arch-linux-install/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Install Enlightenment Desktop in Arch Linux [Complete Guide] +====== + +**This guide explains the steps you need to install Enlightenment Desktop in Arch Linux.** + +This guide has two parts. The first part deals with installing the base Arch system. The second part is installing the complete Enlightenment desktop environment on top of Arch Linux. + +### What is Enlightenment Desktop + +[Enlightenment][1] is one of the oldest window manager, compositor for X11 in Linux. It is more than a decade old and one of the first “eye-candy” desktop. It consists of core libraries called EFL (Enlightenment Foundation Libraries) which provides features such as widgets, networking, graphics and more. Enlightenment evolved over the years to be suitable for Mobiles, Wearables, TV UI and of course vanilla desktop environment. It provides a standard menu, icon driven desktop with its own native applications. With the help of a suitable display manager, it can be a full-fledged productive desktop. + +### Install Enlightenment Desktop in Arch Linux + +#### Part 1: Install Arch Linux + +If you have already Arch Linux installed, you can skip this step and directly go to the [installation of Enlightenment Desktop][2] section below. + +For a quick Arch Linux base installation, follow the automated archinstall guide, which is present in the below link. + +[Arch Installation with automated script (recommended)][3] + +if you prefer the older/legacy way of installing Arch, then follow the steps below. + +##### Download Arch Linux + +Download Arch Linux .iso from the below link. There are magnet and torrent links available. Once you download, write the ISO to a USB drive. And then boot from the drive. + +[Download Arch Linux][4] + +If you are planning to install it as a virtual machine image via GNOME Boxes, virt-manager – then you do not need to write it to a USB drive. + +##### Boot and Configure Partitions + +After you boot from the Arch Linux iso, you have to run a series of commands to install the base system. + +First, run the below command to find out the device identifier. + +``` +fdisk -l +``` + +![fdisk -l before][5] + +Then with the device identifier, run the below command to start partitioning your disk. Make sure to change `/dev/sda` as per your system. + +``` +cfdisk /dev/sda +``` + +Select `label type = dos` in the next prompt. + +Select the free space and choose option NEW from the bottom. In this example, I will create three partitions as per below. + +``` +/dev/sda1 - 1G - for /boot/dev/sda2 - 5G - for root/dev/sda3 - 1G - for swap +``` + +![cfdisk][6] + +In the next screen provide partition size for the boot partition (for this example, I gave 1 GB). Select it as the primary partition. + +Repeat the same step for the main root partition of size 5GB. + +![Swap partition type change][7] + +Create a swap partition using the same steps with size 1G (you may change it as per your need). After you create the swap partition, make sure to choose Type at the bottom and mark it as a swap with the option “Linux Swap/Solaris”. + +![final partition list in cfdisk][8] + +Once done, write the changes to the disk using the Write option at the bottom. Make sure you take a backup before you write as this is a permanent change in your system. + +Run the below command to check before you proceed. You can see in this example, three partitions are listed. + +``` +fdisk -l +``` + +![final partition list in fdisk][9] + +Run the following commands in sequence to format and create an ext4 file system in the newly created partition above. Make sure you change the /dev/sda1 and /dev/sda2 as per your need. + +``` +mkfs.ext4 /dev/sda1mkfs.ext4 /dev/sda2mkswap /dev/sda3swapon /dev/sda3 +``` + +After completion, mount the system and create necessary directories. + +``` +mount /dev/sda2 /mntmkdir /mnt/boot /mnt/var /mnt/homemount /dev/sda1 /mnt/boot +``` + +Again, make sure you change /dev/sda1, /dev/sda2 and /dev/sda3 as per your system. + +![prepare file system][10] + +##### Install the base system + +I hope you are already connected to the internet. If not, try using a USB dongle or wired internet connection, which Arch installer automatically configure and detect. If you do not have a wired connection available, follow [this guide][11] to configure a wireless or Wi-Fi network using Arch Linux installer. + +Run the below commands in sequence to install the base system in the mounted partition. The download size is approx 400 MB. + +``` +pacman -Syypacstrap /mnt base base-devel linux linux-firmware nano dhcpcd net-tools grub +``` + +![Install base system][12] + +Once complete, generate a file system table, without which you can’t boot the system. + +``` +genfstab -U /mnt >> /mnt/etc/fstab +``` + +##### Configure the base system + +Follow the below commands in sequence to configure the base system. This involves setting up your locale, language, add a login user, and setting up the internet. + +``` +arch-chroot /mntnano /etc/locale.gen +``` + +Uncomment the locale of your choice by removing # at the beginning. For this guide, I have chosen en_US.UTF-8 UTF-8. Press CTRL+O, Enter, and CTRL+X to exit from nano. + +![change locale][13] + +Generate the locale using: + +``` +locale-gen +``` + +Setup the language using the below command. + +``` +echo LANG=en_US.UTF-8 > /etc/locale.confexport LANG=en_US.UTF-8 +``` + +Setup the local time zone. + +``` +ln -s /usr/share/zoneinfo/America/New_York /etc/localtime +``` + +Again, you can choose them as per your need. You can list the local timezones via the below commands. + +``` +ls /usr/share/zoneinfo +ls /usr/share/zoneinfo/America +``` + +Set up the hardware clock, create a hostname, and enable the DHCP for the internet using the below commands in sequence. You can change `"arindam-pc"` to any hostname as per your desire. + +``` +hwclock --systohc --utcecho arindam-pc > /etc/hostnamesystemctl enable dhcpcd +``` + +The next step is to set up the root user password, create an admin user, and add the user in the sudoers file. + +Follow the below commands in sequence. Make sure to change the user name from `debugpoint` to something else as per your need. + +``` +passwd rootuseradd -m -g users -G wheel -s /bin/bash debugpointpasswd debugpoint +``` + +![create user][14] + +Open the sudoers file and add the below lines. + +``` +nano /etc/sudoers +``` + +Add below lines. As you already created the root user, the entry should be there. + +``` +root ALL=(ALL) ALLdebugpoint ALL=(ALL) ALL +``` + +![update sudoers file][15] + +Install grub, setup the initial ramdisk environment, unmount the system using the below commands in sequence. + +``` +grub-install /dev/sdagrub-mkconfig -o /boot/grub/grub.cfgmkinitcpio -p linuxexit +``` + +![configure grub][16] + +Then reboot your system. + +``` +umount /mnt/bootumount /mntreboot +``` + +You have now successfully installed the Arch Linux base system. It’s time to install the complete Enlightenment desktop. + +![Arch is installed][17] + +#### Part 2: Install Enlightenment Desktop in Arch Linux + +After reboot, choose Arch Linux from grub. In the Arch Linux prompt, start running the following commands in sequence. These commands install Xorg server, display manager, Enlightenment desktop components and EFL. + +For all the commands use default i.e. press enter when asked. + +- **Install Xorg. Approx install size is 80 MB.** + +``` +sudo pacman -S --needed xorg +``` + +- **Install display manager.** I have used lightdm for this guide. You can choose any alternative display manager of your choice. + +``` +sudo pacman -S --needed lightdm lightdm-gtk-greeter +``` + +- **Install desktop** + +The Enlightenment desktop requires the [Enlightenment Foundation Library][18] (EFL) and base [enlightenment][19] package. Both are in Arch community repo. You can install them using the below commands. + +``` +sudo pacman -S efl +``` + +![Installing EFL][20] + +``` +sudo pacman -S enlightenment +``` + +![Installing Enlightenment][21] + +Above two are enough for a basic desktop. If you need additional native applications of this desktop, you need to [set up AUR][22] and follow the [instruction here.][23] + +Make sure to install the terminal and some additional apps. + +``` +sudo pacman -S --needed terminology +sudo pacman -S --needed firefox vlc filezilla leafpad xscreensaver archlinux-wallpaper +``` + +Now it’s time to enable the display manager and network manager as service. So that next time you log on, they can run automatically by systemd. + +``` +systemctl enable lightdm +systemctl enable NetworkManager +``` + +Reboot the system using the reboot command. + +``` +reboot +``` + +If all goes well, you should see a login prompt. Login using the ID and password you created above. Then Enlightenment desktop require some initial setup. Follow the onscreen instructions. + +And after setup, you should see the nice Enlightenment Desktop. + +![Enlightenment Desktop in Arch Linux (version 0.25)][24] + +I hope this guide helps you create your own Arch Linux environment with Enlightenment desktop from scratch. If you run into trouble, let me know using the comment box below. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/enlightenment-arch-linux-install/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.enlightenment.org/ +[2]: https://www.debugpoint.com#install-enlightenment-desktop +[3]: https://www.debugpoint.com/archinstall-guide/ +[4]: https://www.archlinux.org/download/ +[5]: https://www.debugpoint.com/wp-content/uploads/2020/12/fdisk-l-before.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2020/12/cfdisk.jpg +[7]: https://www.debugpoint.com/wp-content/uploads/2020/12/Swap-parition-type-change.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2020/12/final-partition-list-in-cfdisk.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2020/12/final-partition-list-in-fdisk.jpg +[10]: https://www.debugpoint.com/wp-content/uploads/2020/12/prepare-file-system.jpg +[11]: https://www.debugpoint.com/2020/11/connect-wifi-terminal-linux/ +[12]: https://www.debugpoint.com/wp-content/uploads/2020/12/Install-base-system.jpg +[13]: https://www.debugpoint.com/wp-content/uploads/2020/12/change-locale.jpg +[14]: https://www.debugpoint.com/wp-content/uploads/2020/12/create-user.jpg +[15]: https://www.debugpoint.com/wp-content/uploads/2020/12/update-sudoers-file.jpg +[16]: https://www.debugpoint.com/wp-content/uploads/2020/12/configure-grub.jpg +[17]: https://www.debugpoint.com/wp-content/uploads/2020/12/Arch-is-installed.jpg +[18]: https://archlinux.org/packages/community/x86_64/efl/ +[19]: https://archlinux.org/packages/community/x86_64/enlightenment/ +[20]: https://www.debugpoint.com/wp-content/uploads/2021/09/Installing-EFL-2.png +[21]: https://www.debugpoint.com/wp-content/uploads/2021/09/Installing-Enlightenment.png +[22]: https://www.debugpoint.com/2021/01/install-yay-arch/ +[23]: https://wiki.archlinux.org/title/enlightenment#From_the_AUR +[24]: https://www.debugpoint.com/wp-content/uploads/2021/09/Enlightenment-Desktop-in-Arch-Linux-version-0.25.jpg diff --git a/sources/tech/20221110.3 ⭐️ How to Upgrade to Linux Mint 21 from Mint 20.3 [Complete Guide].md b/sources/tech/20221110.3 ⭐️ How to Upgrade to Linux Mint 21 from Mint 20.3 [Complete Guide].md new file mode 100644 index 0000000000..b4ef984259 --- /dev/null +++ b/sources/tech/20221110.3 ⭐️ How to Upgrade to Linux Mint 21 from Mint 20.3 [Complete Guide].md @@ -0,0 +1,116 @@ +[#]: subject: "How to Upgrade to Linux Mint 21 from Mint 20.3 [Complete Guide]" +[#]: via: "https://www.debugpoint.com/upgrade-linux-mint-21-from-20-3/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Upgrade to Linux Mint 21 from Mint 20.3 [Complete Guide] +====== + +**This guide gives you all the information you need to Upgrade to Linux Mint 21 (Vanessa) from Linux 20.3.** + +Linux Mint 21 Vanessa was recently released with the latest Ubuntu 22.04 base and other additional features. If you are running the earlier Linux Mint 20.3, now it is possible to do a major version upgrade using the graphical tool by Linux Mint. + +But before you upgrade, you need to do some housekeeping because major version upgrades always come with a fair amount of risk. + +That said, make sure of the following before performing the upgrade. + +Before you perform the upgrade, remember the followings: + +- The current version upgrade is only possible from Linux Mint 20.3 to Linux Mint 21 Vanessa. + +- What does this mean? If you are running Linux Mint 20.2 or Linux Mint 20.1, you can not directly upgrade to 21. Instead, you need to perform `sudo apt update` and `sudo apt upgrade` to reach 20.3. And then follow the steps. + +### Things to do before the Upgrade Attempt + +- Open the Update Manager and make sure your system is up to date until Linux Mint 20.3. +- Use TImeshift to create a system restore point after you apply all the pending updates in the above step. If something happens, you can always restore it to this point in time. +- Take a backup of all of your home, downloads, documents, pictures and videos folders. +- Disable any third-party PPA that you may have added. You can find those in the `System Settings > Software Sources > PPAs` or `Additional Repositories` tabs. +- Make sure you have a minimum of 10 GB to 15 GB of free disk space in the root file system. +- (Optional) [Prepare a LIVE USB][1] of Linux Mint 20.3 if you cannot boot it after a failed upgrade. It will help to restore via Timeshift. +- (Optional) Finally, do a fresh reboot before you follow the steps. +- Ensure you have a stable internet connection and have around 1.5 hours to give attention to the upgrade process. + +### Upgrade to Linux Mint 21 from Linux Mint 20.3 [Graphical Method] + +- Open a terminal window and run the following command to install [mintupgrade][2] utility. This is a GUI-based program which Linux Mint modified for major version upgrades. It makes the upgrade easier for general users who are not comfortable with the command prompt. + +``` +sudo apt install mintupgrade +``` + +- Now, from the command, run the program. + +``` +sudo mintupgrade +``` + +- You should see the following prompt, which tells you the ‘upgrade to Linux Mint 21’ is available. Click on Let’s Go. + +![Upgrade to Linux Mint 21 from 20.3 via mintupgrade tool][3] + +- The tool will verify your system for any problems and tell you to fix them. If you see a **FIX** button, click on that to resolve the error (after reading the details in the window). +- It will also give you a list of packages which require a downgrade. +- In the end, you should see a summary of the packages to be downloaded or removed. +- Press OK to start the upgrade process. + +![Final Upgrade summary][4] + +- The program first downloads the packages. Then start to upgrade each one of the packages. Wait for the process to finish for close to an hour (based on your standard internet speed). + +![Upgrading to Mint 21][5] + +- After the download and installation, you should see a successful upgrade prompt. + +![Successful Upgrade][6] + +- Now, reboot the system, and you should be greeted with brand new Linux Mint 21. + +### Things to remember during the Upgrade + +- Usually, the upgrade process is smooth and should not be an issue. It takes around 1 hour and 15 minutes for a base install. +- The upgrade process may seem stalled sometime up to ~10 minutes, and you may not see any visible progress on the screen other than the progress animation. +- So, you need to wait until it completes all the steps. Alternatively, you can also watch the status in the terminal window. +- If you end up with a broken upgrade system, you can boot from a LIVE Mint USB/CD and restore your system with Timeshift backup. + +If the upgrade fails, you may try for a new upgrade via this official [guide][7]. + +### Post Upgrade Steps + +- If you have disabled the third-party PPAs, enable them and do a system update check. You can find the third-party PPs at the `System Settings > Software Sources > PPAs` or `Additional Repositories` tabs. +- Verify whether your documents, pictures and videos are present. +- Also, check if your browser add-ons and extensions are working fine. +- For this version, you should also check whether your **Printer and Bluetooth**are working. Because Mint 21 introduces IPP (a new protocol for printing) and a new Bluetooth manager. +- Finally, you may want to check out the [Top 10 features of Linux Mint 21][8] before you start using it. + +### Wrapping Up + +It is always better to do a fresh installation if you can afford it. However, upgrades are also acceptable. + +I hope this guide helped you to do the Linux Mint upgrade. If you face any issues, let me know using the comment box below. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/upgrade-linux-mint-21-from-20-3/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/etcher-bootable-usb-linux/ +[2]: https://www.debugpoint.com/mint-upgrade-tool/ +[3]: https://www.debugpoint.com/wp-content/uploads/2022/08/Upgrade-to-Linux-Mint-21-from-20.3-via-mintupgrade-tool.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2022/08/Final-Upgrade-summary.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2022/08/Upgrading-to-Mint-21.gif +[6]: https://www.debugpoint.com/wp-content/uploads/2022/08/Successfull-Upgrade.jpg +[7]: https://community.linuxmint.com/tutorial/view/2 +[8]: https://www.debugpoint.com/linux-mint-21-features/ diff --git a/sources/tech/20221110.5 ⭐️⭐️ Audit your sharding database algorithm.md b/sources/tech/20221110.5 ⭐️⭐️ Audit your sharding database algorithm.md new file mode 100644 index 0000000000..dee2e4e3a7 --- /dev/null +++ b/sources/tech/20221110.5 ⭐️⭐️ Audit your sharding database algorithm.md @@ -0,0 +1,218 @@ +[#]: subject: "Audit your sharding database algorithm" +[#]: via: "https://opensource.com/article/22/11/audit-sharding-database" +[#]: author: "Yacine Si Tayeb, PhD https://opensource.com/users/y2so" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Audit your sharding database algorithm +====== + +This demonstration of ShardingSphere 5.2.0 elaborates on the implementation logic for auditing data sharding with specific SQL examples. + +Thanks to the [ShardingSphere community's][1] continuous review and feedback to develop features such as [data sharding][2] and read/write splitting, our team found that some users create many shards when using the data sharding feature. + +In such cases, there can be 1,000 physical tables corresponding to a sharding logical table, which disturbs users. + +For instance, a `SELECT * FROM t_order` statement will lead to a full-route, which is obviously not the case for [OLTP][3]. This SQL can be placed in another Proxy to avoid blocking other requests. + +However, if users are not familiar with Proxy or how to write a `where` condition and don't know that sharding is not supported in this condition, a full-route is still required. + +A full-route can lower the performance of Proxy and even result in the failure of a reasonable request. Imagine that there are 1,000 shards in a physical database. If they are executed in parallel, 1,000 connections are needed, and if in serial, the request can lead to a timeout. For this reason, community users asked whether the unreasonable request could be intercepted directly. + +Our team considered the issue for a while. One option is to simply block the full-route operation. Doing so requires a check in the code and adding a switch to the configuration file. On the other hand, if the user later needs to set a table to read-only or requires the update operation to carry a `limit`, does that mean the code and configuration change again? This approach obviously goes against the pluggable logic of Proxy. + +In response to the above problems, the recently released [Apache ShardingSphere 5.2.0][4] provides users with auditing for the SQL sharding function. The audit can either be an interception operation or a statistical operation. Similar to the sharding and unique key generation algorithms, the audit algorithm is plugin-oriented, user-defined, and configurable. + +Next, I will elaborate on the implementation logic for auditing data sharding with specific SQL examples. + +### Audit for sharding interface + +The entrance to Apache ShardingSphere's audit is in the `org.apache.shardingsphere.infra.executor.check.SQLCheckEngine` class, which will invoke the `check` method of the `SQLChecker` interface. Currently, the ShardingSphere audit contains an audit for permission (verify username and password) and an audit for sharding. + +This example focuses on the parent interface implemented in the `ShardingAuditChecker` of audit for sharding. + +![Audit for sharding design][5] + +You can learn its working principles quickly by viewing the `check` code of `org.apache.shardingsphere.sharding.checker.audit.ShardingAuditChecker`. + +``` +public interface ShardingAuditAlgorithm extends ShardingSphereAlgorithm {/** +     * Sharding audit algorithm SQL check. +     * +     * @param sqlStatementContext SQL statement context +     * @param parameters SQL parameters +     * @param grantee grantee +     * @param database database +     * @return SQL check result +     */ +    SQLCheckResult CHECK(SQLStatementContext sqlStatementContext, List parameters, Grantee grantee, ShardingSphereDatabase DATABASE); +} +``` + +This method obtains the audit strategies of all the sharding tables involved and invokes the audit algorithms configured in each sharding table audit strategy. An exception is displayed to the user if an audit algorithm fails to pass. + +Some users may wonder what `disableAuditNames` does here. The sharding audit also allows users to skip this process. In some cases, users may need to execute SQL that should have been blocked by the audit, and they are aware of the impact of this SQL. + +Users can utilize the `Hint: disableAuditNames` to skip audit interception, which will be described with practical examples later. The Proxy Administrators can configure `allowHintDisable` to control whether to allow users to skip this process. The default value is `true`, indicating that a Hint-based skip is permitted. + +### Audit for sharding algorithm + +The audit for sharding algorithm interface `org.apache.shardingsphere.sharding.spi.ShardingAuditAlgorithm` is inherited from SPI class `ShardingSphereAlgorithm`. It inherits `type` and `props` properties and defines its own `check` method. If you want to customize your audit algorithm, just implement the interface and add it to `INF.services`. + +![Implement audit for sharding][6] + +``` +public interface ShardingAuditAlgorithm extends ShardingSphereAlgorithm {/** +     * Sharding audit algorithm SQL check. +     * +     * @param sqlStatementContext SQL statement context +     * @param parameters SQL parameters +     * @param grantee grantee +     * @param database database +     * @return SQL check result +     */ +    SQLCheckResult CHECK(SQLStatementContext sqlStatementContext, List parameters, Grantee grantee, ShardingSphereDatabase DATABASE); +} +``` + +Apache ShardingSphere implements a general audit for sharding algorithm `org.apache.shardingsphere.sharding.algorithm.audit.DMLShardingConditionsShardingAuditAlgorithm`, namely the above-mentioned SQL statement that intercepts the full-route. + +The algorithm makes decisions by determining whether the sharding condition is `null`. Of course, it won't intercept broadcast tables and non-sharding tables. + +``` +public final class DMLShardingConditionsShardingAuditAlgorithm implements ShardingAuditAlgorithm { +    @Getter +    private Properties props; +    @Override +    public void init(final Properties props){ +        this.props = props;} +    @SuppressWarnings({"rawtypes","unchecked"}) +    @Override +    public SQLCheckResult CHECK(final SQLStatementContext sqlStatementContext, final List parameters, final Grantee grantee, final ShardingSphereDatabase DATABASE){IF(sqlStatementContext.getSqlStatement() instanceof DMLStatement){ +            ShardingRule rule =DATABASE.getRuleMetaData().getSingleRule(ShardingRule.class);IF(rule.isAllBroadcastTables(sqlStatementContext.getTablesContext().getTableNames())|| sqlStatementContext.getTablesContext().getTableNames().stream().noneMatch(rule::isShardingTable)){RETURNNEW SQLCheckResult(TRUE,"");} +            ShardingConditionEngine shardingConditionEngine = ShardingConditionEngineFactory.createShardingConditionEngine(sqlStatementContext,DATABASE, rule);IF(shardingConditionEngine.createShardingConditions(sqlStatementContext, parameters).isEmpty()){RETURNNEW SQLCheckResult(FALSE,"Not allow DML operation without sharding conditions");}}RETURNNEW SQLCheckResult(TRUE,"");} +    @Override +    public String getType(){RETURN"DML_SHARDING_CONDITIONS";}} +``` + +I'd like to introduce another audit for the sharding algorithm: `LimitRequiredShardingAuditAlgorithm`. This algorithm can intercept SQL without carrying a `limit` in the `update` and `delete` operations. + +As this algorithm is less universal, it is not currently integrated into Apache ShardingSphere. As you can see, it is very easy to implement a custom algorithm, which is why the audit for sharding framework is needed. Thanks to its plugin-oriented architecture, ShardingSphere boasts great scalability. + +``` +public final class LimitRequiredShardingAuditAlgorithm implements ShardingAuditAlgorithm { +    @Getter +    private Properties props; +    @Override +    public void init(final Properties props){ +        this.props = props;} +    @SuppressWarnings({"rawtypes","unchecked"}) +    @Override +    public SQLCheckResult CHECK(final SQLStatementContext sqlStatementContext, final List parameters, final Grantee grantee, final ShardingSphereDatabase DATABASE){IF(sqlStatementContext instanceof UpdateStatementContext && !((MySQLUpdateStatement) sqlStatementContext.getSqlStatement()).getLimit().isPresent()){RETURNNEW SQLCheckResult(FALSE,"Not allow update without limit");}IF(sqlStatementContext instanceof DeleteStatementContext && !((MySQLDeleteStatement) sqlStatementContext.getSqlStatement()).getLimit().isPresent()){RETURNNEW SQLCheckResult(FALSE,"Not allow delete without limit");}RETURNNEW SQLCheckResult(TRUE,"");} +    @Override +    public String getType(){RETURN"LIMIT_REQUIRED";}} +``` + +### Use audit for sharding + +Audit for sharding requires you to configure an audit strategy for logical tables. To help you get started quickly, its configuration is the same as that of the sharding algorithm and the sharding key value generator. + +There is an algorithm definition and strategy definition, and a default audit strategy is also supported. If the audit strategy is configured in the logical table, it affects only that logical table. + +If `defaultAuditStrategy` is configured in the logical table, it takes effect for all the logical tables under the sharding rule. `Auditors` are similar to `ShardingAlgorithms`, `auditStrategy` to `databaseStrategy`, and `defaultAuditStrategy` to `defaultDatabaseStrategy` or `defaultTableStrategy`. + +Please refer to the following example. Only the configuration of the audit for sharding is displayed. You must configure the sharding algorithm and data source yourself. + +``` +rules:- !SHARDINGTABLES: +      t_order: +        actualDataNodes: ds_${0..1}.t_order_${0..1} +        auditStrategy: +          auditorNames:- sharding_key_required_auditor +          allowHintDisable: TRUE +    defaultAuditStrategy: +      auditorNames:- sharding_key_required_auditor +      allowHintDisable: TRUE +    auditors: +      sharding_key_required_auditor:TYPE: DML_SHARDING_CONDITIONS +``` + +**Step 1**: Execute a query operation. An error is displayed as the audit strategy for intercepting the full-database route is configured. + +``` +mysql>SELECT*FROM t_order; +ERROR 13000(44000): SQLCHECK failed, error message: NOT allow DML operation WITHOUT sharding conditions +``` + +**Step 2**: Add `HINT`. The name of the `HINT` is `/* ShardingSphere hint: disableAuditNames */`,and `disableAuditNames` is followed by the `auditorsNames` configured in the preceding command. + +If multiple names exist, separate them with spaces such as`/* ShardingSphere hint: disableAuditNames=auditName1 auditName2*/`. After using `HINT`, you can see that the SQL operation is successfully executed. + +``` +mysql>/* ShardingSphere hint: disableAuditNames=sharding_key_required_auditor */SELECT*FROM t_order; ++----------+---------+------------+--------+| order_id | user_id | address_id |STATUS|+----------+---------+------------+--------+|30|20|10|20||32|22|10|20|+----------+---------+------------+--------+2ROWSINSET(0.01 sec) +``` + +**Note**: `HINT` requires you to modify the `server.yaml` configuration of Proxy. In addition, if you are using MySQL terminal to connect to Proxy directly, you need to add the `-c` property—otherwise, `HINT` comments will be filtered out of the MySQL terminal and will not be parsed by Proxy on the backend. + +``` +rules:- !SQL_PARSER +    sqlCommentParseEnabled: TRUE +    sqlStatementCache: +      initialCapacity: 2000 +      maximumSize: 65535 +    parseTreeCache: +      initialCapacity: 128 +      maximumSize: 1024 +props: +  proxy-hint-enabled: TRUE +mysql -uroot -proot -h127.0.0.1 -P3307  -c +``` + +### DistSQL with audit for sharding + +As you can see from the [release notes][7], Apache ShardingSphere 5.2.0 supports the following [DistSQL][8] with audit for sharding function: + +``` +CREATE SHARDING AUDITOR +ALTER SHARDING AUDITOR +SHOW SHARDING AUDIT ALGORITHMS +The following DistSQL will be supported IN future releases: + +DROP SHARDING AUDITOR +SHOW UNUSED SHARDING AUDIT ALGORITHMS +CREATE SHARDING TABLE RULE # including AUDIT_STRATEGY +``` + +This post introduced how audit for sharding works with specific examples. I believe you already have a basic understanding of this function and can use it whenever you need or use a custom algorithm. + +You are also welcome to submit general algorithms to the community. If you have any ideas to contribute or encounter issues with your ShardingSphere, feel free to post them on [GitHub][9]. + +This article originally appeared on [ShardingSphere 5.2.0: Audit for sharding intercepts unreasonable requests in multi-shards scenarios][10] and is republished with permission. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/audit-sharding-database + +作者:[Yacine Si Tayeb, PhD][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/y2so +[b]: https://github.com/lkxed +[1]: https://shardingsphere.apache.org/ +[2]: https://opensource.com/article/21/12/apache-shardingsphere +[3]: https://shardingsphere.apache.org/blog/en/material/2022_04_26_how_to_use_shardingsphere-proxy_in_real_production_scenarios_your_quick_start_guide/ +[4]: https://faun.pub/apache-shardingsphere-5-2-0-is-released-bringing-new-cloud-native-possibilities-8d674d964a93?source=your_stories_page------------------------------------- +[5]: https://opensource.com/sites/default/files/2022-10/Audit-for-sharding.png +[6]: https://opensource.com/sites/default/files/2022-10/implement-audit-algorithm_0.png +[7]: https://github.com/apache/shardingsphere/releases/tag/5.2.0 +[8]: https://shardingsphere.apache.org/document/5.1.0/en/concepts/distsql/ +[9]: https://github.com/apache/shardingsphere +[10]: https://blog.devgenius.io/shardingsphere-5-2-0-audit-for-sharding-intercepts-unreasonable-requests-in-multi-shards-scenarios-9a113312062b diff --git a/sources/tech/20221111.4 ⭐️⭐️ Drop swap for zram on Linux.md b/sources/tech/20221111.4 ⭐️⭐️ Drop swap for zram on Linux.md new file mode 100644 index 0000000000..df8dd3e3fa --- /dev/null +++ b/sources/tech/20221111.4 ⭐️⭐️ Drop swap for zram on Linux.md @@ -0,0 +1,191 @@ +[#]: subject: "Drop swap for zram on Linux" +[#]: via: "https://opensource.com/article/22/11/zram-swap-linux" +[#]: author: "David Both https://opensource.com/users/dboth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Drop swap for zram on Linux +====== + +Zram is a tool for creating an in-RAM compressed cache, specifically for use as swap space. + +I spend a lot of time playing (I mean working) on my computers, and I've found a lot of interesting things. One that has most recently come to my attention is the `zram0` device. I first noticed it when working on one of my Opensource.com articles several months ago. It showed up in the output from the `lsblk` command: + +``` +# lsblk +NAME          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS +sda             8:00 931.5G  0 disk +├─sda1          8:10   600M  0 part +[...] +zram0         252:00     8G  0 disk [SWAP] +``` + +It's identified as swap space, which is what first piqued my curiosity, so I did some exploration. Zram was originally called "compcache," which stands for "compressed cache." It turns out that zram is a tool for creating an in-RAM compressed cache, specifically for use as swap space. + +But Why? + +When I began researching zram, all I found were a couple of basic articles about using zram for swap space. At first, this seemed a bit counterintuitive to me. After all, if you're running out of RAM and you swap pages into a virtual drive in RAM, what's gained? + +I then found the Fedora Project wiki page that proposed the use of [Swap on zram][1]. The proposal says: "Swap is useful, except when it's slow. zram is a RAM drive that uses compression. Create a swap-on-zram during start-up. And no longer use swap partitions by default." + +The rest of the page is about details, benefits, side effects, and feedback. + +### Zram for swap space on Linux + +Using zram for swap space is intended to do the same thing as regular partition-based or file-based swap space. When memory pressure becomes too great, some of the least recently used data is moved to swap space. On average, it's compressed to about 50% of its original size, and placed in zram space in RAM. This is much faster than storing those memory pages on a hard drive and frees up the RAM it was using for other use. + +### Saving on swap + +I tried to find revised recommendations for how much swap or zram swap to configure. This led me back to a reassessment of swap, and my previous article, [What's the right amount of swap space for a modern Linux system?][2] As far as I can tell from the most current documentation for RHEL and Fedora, the recommended amount of swap space has not changed. That documentation, however, ignores the use of zram. + +However, the tables in that previous article still provide a good starting point for swap space allocation when using older releases of Linux that don't use zram or in cases where zram has been disabled. + +The documents I found for the Zram feature are inconsistent in terms of how zram is allocated with respect to RAM size, and the amount of space allocated to zram swap. + +Due to the lack of authoritative documentation, I performed some experiments to empirically determine the algorithm used to allocate zram swap. I used my own physical and virtual systems for this. The results are interesting and do not match any documentation I've so far found. + +The default size of zram is 8 GB on all systems large enough to support that, but it's typically reduced significantly on hosts with small amounts of RAM. On one virtual machine (VM) I use for testing, with access to 4 GB of RAM, the zram virtual swap space is allocated to 3.8 GB. One old Dell I have contains 8 GB of RAM, and the zram is set to 7.6 GB. When RAM is reduced to 2 GB, Zram is reduced to 1.9 GB. + +All physical and virtual hosts I have with more than 8 GB of RAM show exactly 8 GB of zram. This includes my primary workstation with 64 GB of RAM and other hosts with 16 GB or 32 GB of RAM. + +Based on these few data points, I can draw the conclusion that the current default settings are for 8 GB of zram at most, and for zram to be 95% of RAM on hosts with 8 GB or less. + +I have read a number of articles that mention other sizes for zram swap, even up to 100% of RAM, but those all seem to be theoretical rather than reality. + +Your distribution may be different, but here are the actual zram swap allocations for Fedora and similar distributions: + +- **RAM ⇐ 8 GB:** 0.95 × RAM +- **RAM > 8 GB:** 8 GB + +Be aware that the zram swap size algorithm is not based on any recommendations for the "best" swap size for any given real-world system or application. This zram swap allocation is a rather probabilistic approach to what should work well on a wide range of Linux hosts. However, the fact that the maximum zram swap size is configured for 8 GB and the fact that I have always recommended 8 GB as the maximum amount of traditional swap, I think I can say it's reflective of the optimum sizes for zram swap. + +### Managing zram swap + +Zram defaults are stored in the `/usr/lib/systemd/zram-generator.conf` configuration file. The following is from one of my test VMs with 5097 GB of RAM allocated. + +``` +# cat /usr/lib/systemd/zram-generator.conf +# This config file enables a /dev/zram0 device with the default settings: +# - size - same as available RAM or 8GB, whichever is less +# - compression - most likely lzo-rle +# +# To disable, uninstall zram-generator-defaults or create empty +# /etc/systemd/zram-generator.conf file. +[zram0]zram-size= min(ram, 8192) +``` + +You can change the default Zram swap size in the last line of the `zram-generator.conf` configuration file. I recommend against doing that, unless you can definitively show a reason for doing so, and test your results once you make any changes. Like many other configuration defaults in Linux, the zram ones have been well-tested and are appropriate for most use cases. + +### Monitor zram + +The zramctl utility can be used to view the current state of zram. + +``` +# zramctl +NAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT +/dev/zram0 lzo-rle       4.8G   4K   80B   12K       4[SWAP] +``` + +The traditional `swapon` command can also be used to view swap including zram used as swap: + +``` +# swapon --show +NAME       TYPE      SIZE USED PRIO +/dev/zram0 partition 4.8G   0B  100 +``` + +One thing to be aware of is that `zramctl` does not report on zram when it contains no data, so the results contain null output. Tools like `lsblk`, `swapon`, `top`, `free`, `htop`, and so on, do show zram even when it contains no data. + +### Deactivate zram + +The `swapoff -a` command turns off `zram` swap as well as traditional HDD or SSD storage used as swap. The `swapon -a` command does not show zram when it is empty. Use `zramctl /dev/zram0` instead. + +``` +# swapon --show# lsblk +NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS +sda             8:00  120G  0 disk +├─sda1          8:10    1G  0 part /boot/efi +├─sda2          8:20    1G  0 part /boot +└─sda3          8:30  118G  0 part +  ├─vg01-root 253:00   10G  0 lvm  / +  ├─vg01-swap 253:10    3G  0 lvm  [SWAP] +  ├─vg01-usr  253:10   30G  0 lvm  /usr +  ├─vg01-home 253:20   10G  0 lvm  /home +  ├─vg01-var  253:30   30G  0 lvm  /var +  └─vg01-tmp  253:40   10G  0 lvm  /tmp +sr0            11:01 1024M  0 rom +zram0         252:00    0B  0 disk +# zramctl## zramctl /dev/zram0 +NAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT +/dev/zram0 lzo-rle         0B   0B    0B    0B       4 +``` + +Note that `/dev/zram0` doesn't show up in these commands as swap space until it's being used for that purpose. This caused me some confusion until my experiments showed it to be the case. + +### Creating Zram Swap + +Zram itself has been around for about 20 years, but has only been in use as swap space on some distributions for the last year or two. The current Linux installation on some or all of your hosts may not have been created with zram for swap. If that's the case, it can be easily remedied. + +For Fedora 32, the last release prior to the default use of zram for swap, it only takes three easy commands. + +First, verify the presence of the `zram-swap.service` file, installed as part of the `zram` RPM package. + +``` +# systemctl status zram-swap +● zram-swap.service - Enable compressed swap in memory using zram +     Loaded: loaded (/usr/lib/systemd/system/zram-swap.service; disabled; vendor preset: disabled) +     Active: inactive (dead) +``` + +Next, install the `zram-generator-defaults` and `zram-generator` packages. + +``` +# dnf install zram-generator-defaults zram-generator +``` + +Enable and start the zram-swap service: + +``` +# systemctl enable zram-swap.service# systemctl start zram-swap.service +``` + +And then verify that `zram0` exists, and is being used as swap space: + +``` +# lsblk +NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT +sda             8:00  120G  0 disk +├─sda1          8:10    2G  0 part /boot +└─sda2          8:20  118G  0 part +  ├─vg01-root 253:00   10G  0 lvm  / +  ├─vg01-swap 253:10    3G  0 lvm  [SWAP] +  ├─vg01-usr  253:20   35G  0 lvm  /usr +  ├─vg01-tmp  253:30   15G  0 lvm  /tmp +  ├─vg01-var  253:40   35G  0 lvm  /var +  └─vg01-home 253:50   20G  0 lvm  /home +sr0            11:01 1024M  0 rom +zram0         252:00  7.5G  0 disk [SWAP] +``` + +### Improve swap with zram + +That's all there is to it. It was easy with Fedora. Different distributions will likely be just as easy, with some possible different details in the package names and commands. Give zram swap a try on your computer. In my next article, I'll demonstrate some further zram options. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/zram-swap-linux + +作者:[David Both][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/dboth +[b]: https://github.com/lkxed +[1]: https://fedoraproject.org/wiki/Changes/SwapOnZRAM +[2]: https://opensource.com/article/19/2/swap-space-poll diff --git a/sources/tech/20221114.0 ⭐️⭐️ Using Firewall With UFW in Ubuntu Linux [Beginner’s Guide].md b/sources/tech/20221114.0 ⭐️⭐️ Using Firewall With UFW in Ubuntu Linux [Beginner’s Guide].md new file mode 100644 index 0000000000..14aa6e1ce7 --- /dev/null +++ b/sources/tech/20221114.0 ⭐️⭐️ Using Firewall With UFW in Ubuntu Linux [Beginner’s Guide].md @@ -0,0 +1,337 @@ +[#]: subject: "Using Firewall With UFW in Ubuntu Linux [Beginner’s Guide]" +[#]: via: "https://itsfoss.com/ufw-ubuntu/" +[#]: author: "Abhishek Prakash https://itsfoss.com/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Using Firewall With UFW in Ubuntu Linux [Beginner’s Guide] +====== + +UFW (Uncomplicated Firewall) is a simple-to-use firewall utility with plenty of options for all kinds of users. + +It is actually an interface for iptables, which is the classic low-level tool (and harder to get comfortable with) to set up rules for your network. + +### Why should you use a Firewall? + +A firewall is a way to regulate the incoming and outgoing traffic on your network. This is crucial for servers, but it also makes a regular user’s system much safer, giving you control. If you are one of those people who like to keep things under control on an advanced level even on the desktop, you may consider setting up a firewall. + +In short, the firewall is a must for servers. On desktops, it is up to you if you want to set it up. + +### Setting up a firewall with UFW + +It is important to properly set up firewalls. An incorrect setup may leave the server inaccessible if you are doing it for a remote Linux system, like a cloud or VPS server. For example, you block all incoming traffic on the server you are accessing via SSH. Now you won’t be able to access the server via SSH. + +In this tutorial, I’ll go over configuring a firewall that suits your needs, giving you an overview of what can be done using this simple utility. This should be suitable for both [Ubuntu server and desktop users][1]. + +Please note that I’ll be using the command line method here. There is a GUI frontend called [Gufw][2] for desktop users but I won’t be covering it in this tutorial. There is a dedicated [guide to Gufw][3] if you want to use that. + +#### Install UFW + +If you are using Ubuntu, [UFW][4] should already be installed. If not, you can install it using the following command: + +``` +sudo apt install ufw +``` + +For other distributions, please use your package manager for installing UFW. + +To check that UFW is properly installed, enter: + +``` +ufw --version +``` + +If it is installed, you should see the version details: + +``` +[email protected]:~$ ufw --version +ufw 0.36.1 +Copyright 2008-2021 Canonical Ltd. +``` + +Great! So you have UFW on your system. Let’s see about using it now. + +**Note: You need to use sudo or be root to run (almost) all the ufw commands.** + +#### Check ufw status and rules + +UFW works by setting up rules for incoming and outgoing traffic. These rules consist of **allowing** and **denying** specific sources and destinations. + +You can check the firewall rules by using the following command: + +``` +sudo ufw status +``` + +This should give you the following output at this stage: + +``` +Status: inactive +``` + +The above command would have shown you the firewall rules if the firewall was enabled. By default, UFW is not enabled and doesn’t affect your network. We’ll take care of that in the next section. + +![check ufw status][5] + +But here’s the thing, you can see and modify the firewall rules even ufw is not enabled. + +``` +sudo ufw show added +``` + +And in my case, it showed this result: + +``` +[email protected]:~$ sudo ufw show added +Added user rules (see 'ufw status' for running firewall): +ufw allow 22/tcp +[email protected]:~$ +``` + +Now, I don’t remember if I added this rule manually or not. It’s not a fresh system. + +#### Default policies + +By default, UFW denies all incoming and allows all outgoing traffic. This behavior makes perfect sense for the average desktop user, since you want to be able to connect to various services (such as http/https to access web pages) and don’t want to have anyone connect to your machine. + +However, **if you are using a remote server, you must allow traffic on the SSH port** so that you can connect to the system remotely. + +You can either allow traffic on SSH default port 22: + +``` +sudo ufw allow 22 +``` + +In case you are using SSH on some other port, allow it at the service level: + +``` +sudo ufw allow ssh +``` + +Do note that the firewall is not active yet. This is a good thing. You can modify rules before you enable ufw so that essential services are not impacted. + +If you are going to use UFW a production server, please ensure to [allow ports through UFW][6] for the running services. + +For example, web servers usually use port 80, so use “sudo ufw allow 80”. You may also do it at service level “sudo ufw allow apache”. + +This onus lies on your side and it is your responsibility to ensure your server runs properly. + +For **desktop users**, you can go ahead with the default policies. + +``` +sudo ufw default deny incoming +sudo ufw default allow outgoing +``` + +#### Enable and disable UFW + +For UFW to work, you have to enable it: + +``` +sudo ufw enable +``` + +Doing so will start the firewall and schedule it to start every time you boot up. You receive the following message: + +``` +Firewall is active and enabled on system startup. +``` + +**Again**: _if you are connected to a machine via ssh, make sure ssh is allowed before enabling ufw by entering_**sudo ufw allow ssh**_._ + +If you want to turn UFW off, type in: + +``` +sudo ufw disable +``` + +You’ll get back: + +``` +Firewall stopped and disabled on system startup +``` + +#### Reload firewall for new rules + +If UFW is already enabled and you modify the firewall rules, you need to reload it before the changes take into effect. + +You can restart UFW by disabling it and enabling it again: + +``` +sudo ufw disable && sudo ufw enable +``` + +Or **reload** the rules: + +``` +sudo ufw reload +``` + +#### Reset to default firewall rules + +If at any time you screw up any of your rules and want to return to the default rules (that is, no exceptions for allowing incoming or denying outgoing traffic), you can start it afresh with: + +``` +sudo ufw reset +``` + +**_Keep in mind that this will delete all your firewall configs._** + +### Configuring firewall with UFW (more detailed view) + +Alright! So you have learned most of the basic ufw commands. At this stage, I would prefer to go a bit in more detail on the firewall rule configuration. + +#### Allow and deny by protocol and ports + +This is how you add new exceptions to your firewall; **allow** enables your machine to receive data from the specified service, while **deny** does the opposite + +By default, these commands will add rules for both **IP** and **IPv6**. If you’d like to modify this behavior, you’ll have to edit **/etc/default/ufw**. Change + +``` +IPV6=yes +``` + +to + +``` +IPV6=no +``` + +That being said, the basic commands are: + +``` +sudo ufw allow / +sudo ufw deny / +``` + +If the rule was successfully added, you’ll get back: + +``` +Rules updated +Rules updated (v6) +``` + +For example: + +``` +sudo ufw allow 80/tcp +sudo ufw deny 22 +sudo ufw deny 443/udp +``` + +**Note:**_if you don’t include a specific protocol, the rule will be applied for both **tcp** and **udp**._ + +If you enable(or, if already running, reload) UFW and check out its status, you can see that the new rules have been successfully applied. + +![UFW Ports][7] + +You can also allow/deny **port ranges**. For this type of rule, you must specify the protocol. For example: + +``` +sudo ufw allow 90:100/tcp +``` + +Will allow all services on ports 90 to 100 using the TCP protocol. You can reload and verify the status: + +![UFW Port Ranges][8] + +#### Allow and deny by services + +To make things easier, you can also add rules using the service name: + +``` +sudo ufw allow +sudo ufw deny +``` + +For example, to allow incoming ssh and block and incoming HTTP services: + +``` +sudo ufw allow ssh +sudo ufw deny http +``` + +While doing so, **UFW** will read the services from **/etc/services**. You can check out the list yourself: + +``` +less /etc/services +``` + +![List /etc/services][9] + +#### Add rules for applications + +Some apps provide specific named services for ease of use and might even utilize different ports. One such example is **ssh**. You can see a list of such apps that are present on your machine with the following: + +``` +sudo ufw app list +``` + +![UFW App List][10] + +In my case, the available applications are **CUPS** (a network printing system) and **OpenSSH**. + +To add a rule for an application, type: + +``` +sudo ufw allow +sudo ufw deny +``` + +For example: + +``` +sudo ufw allow OpenSSH +``` + +Reloading and checking the status, you should see that the rule has been added: + +![UFW Apps][11] + +### Conclusion + +This was just the tip of the iceberg firewall. There is so much more to firewalls in Linux that a book can be written on it. In fact, there is already an excellent book Linux Firewalls by Steve Suehring. + +[Linux Firewalls: Enhancing Security with nftables and Beyond: Enhancing Security with nftables and Beyond (4th Edition)][12] + +$49.99 + +[Buy on Amazon][12] + +We earn a commission if you make a purchase, at no additional cost to you. + + +11/26/2022 03:17 am GMT + +If you think setting up a firewall with UFW, you should try using iptables or nftables. Then you’ll realize how UFW uncomplicates the firewall configuration. + +I hope you liked this beginner’s guide to UFW. Let me know if you have questions or suggestions. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/ufw-ubuntu/ + +作者:[Abhishek Prakash][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/ubuntu-server-vs-desktop/ +[2]: http://gufw.org/ +[3]: https://itsfoss.com/set-up-firewall-gufw/ +[4]: https://help.ubuntu.com/community/UFW +[5]: https://itsfoss.com/wp-content/uploads/2022/11/check-ufw-status.png +[6]: https://learnubuntu.com/allow-port-firewall/ +[7]: https://itsfoss.com/wp-content/uploads/2019/03/ufw_ports.png +[8]: https://itsfoss.com/wp-content/uploads/2019/03/ufw_port_ranges-1.png +[9]: https://itsfoss.com/wp-content/uploads/2019/03/etc_services.png +[10]: https://itsfoss.com/wp-content/uploads/2019/03/ufw_app_list.png +[11]: https://itsfoss.com/wp-content/uploads/2019/03/ufw_apps.png +[12]: https://www.amazon.com/dp/0134000021?tag=AAWP_PLACEHOLDER_TRACKING_ID diff --git a/sources/tech/20221117.0 ⭐️⭐️ How to Install and Use htop in Linux.md b/sources/tech/20221117.0 ⭐️⭐️ How to Install and Use htop in Linux.md new file mode 100644 index 0000000000..b4c89ddb3c --- /dev/null +++ b/sources/tech/20221117.0 ⭐️⭐️ How to Install and Use htop in Linux.md @@ -0,0 +1,197 @@ +[#]: subject: "How to Install and Use htop in Linux" +[#]: via: "https://itsfoss.com/use-htop/" +[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Install and Use htop in Linux +====== + +Windows has its famous task manager. Linux has several GUI and [command line system monitors][1]. Every Linux system comes with a couple of them. + +On the command line, the top command is perhaps the goto command for checking the system resource utilization quickly. + +[Using top command][2] apart from viewing the processes could be tricky. And this is where htop tops top. Pun aside, htop is a top-like utility but with a better and user-friendly interface. + +In this guide, I will be showing you how you can install and use htop in Linux. + +### Install htop utility in Linux + +You won’t find htop pre-installed on the majority of Linux distributions but being one of the most popular utilities, you will find htop in default repositories of almost every Linux distro. + +So if your machine is powered by something that is based on Debian/Ubuntu, the following command should get your job done: + +``` +sudo apt install htop +``` + +Similarly, if you’re on Fedora, you can use the given command: + +``` +sudo dnf install htop +``` + +And there’s also a snap package available if you like to avoid building packages from the source: + +``` +sudo snap install htop +``` + +If you’re on something else or want to build from a source, you can always refer to [htop’s GitHub page][3] for detailed instructions. + +Once you’re done with the installation, you just have to use the htop command in the terminal, and it will reflect all the ongoing processes in your system: + +``` +htop +``` + +![install and use htop][4] + +In htop, there is a color coding for the individual section, so let’s have a look at what each color indicates while using htop. + +##### What different colors and statistics indicate in htop + +So let’s start with the CPU usage bar, as it utilizes the maximum number of colors. + +#### CPU usage bar + +![cpu process in htop][5] + +- **Green:** Resources consumed by user processes. +- **Blue:** Indicates low-priority threads. +- **Red:** CPU resources used by system (kernel) processes. +- **Aqua blue:** Indicates virtualized processes. + +#### Memory bar + +![memory bar in htop][6] + +- **Green:** Memory being utilized by system processes. +- **Blue:** Memory used by buffer pages. +- **Orange:** Memory allocated for cache pages. + +#### Statistics + +![task statistics in htop][7] + +- **1.86** is the average load for the last minute. +- **1.75** is the average load for the last 4 minutes. +- **1.47** is the average load for the last 15 minutes. + +- **Tasks: 166** shows there is a total of 166 ongoing processes. +- **1249 thr** indicates that those 166 processes are handled by 1249 threads. +- **1 running** indicates that from those 166 processes, only one task is in a state of running. +- **The load** average indicates the average system load over a period of time. Since my system is Hexa-Core, anything under 6.0 is ok. This number may exceed, such as 6.1, so the upcoming processes have to wait for ongoing tasks to be completed. +- **Uptime** is nothing but hours since you logged in. + +Now, let’s jump to the actual implementation part. + +### How to use htop in Linux + +As the htop is mainly used to check for system resources, let’s have a look at how you can sort the processes based on resource consumption. + +#### Sort processes based on Resource Consumption + +The easiest way to sort processes based on CPU and memory usage is to use your mouse pointer. Hover the cursor over the CPU or Memory section and click on any of those. + +And there you will see an icon of a triangle `△` and based on that you can sort the process based on highest to lowest resource consumption: + +But if you are dealing with remote servers, you might not have the privilege to use a mouse and in those cases, you can use keyboard shortcuts. + +Press **F6** and it will bring up every option available to sort the ongoing processes: + +![sort processes in htop using keyboard shortcut][8] + +You can use arrow keys to select a preferred sorting option and then press the Enter key, results should reflect as intended. + +#### Search for a specific process + +If you want to look for a specific process and its resource consumption, you can press **F3** and it will get you a search prompt as shown below: + +![search processes in htop][9] + +For example, I searched for htop, and it highlighted the process with light orange color. And you can press **F3** for the next result. + +#### Filter ongoing processes + +While searching may get you the intended results, I find the filtering process using keywords even more effective as it presents a list of processes. + +To filter processes, you have to press **F4** and type the name of the process. For example, I filtered processes related to gnome-boxes: + +![filter processes in htop][10] + +#### Kill process + +Once you made it to find the most resource-hungry and unnecessary process, you just have to press **F9**, and it will present you with termination signals: + +![kill process in htop][11] + +I can’t cover all 15 termination signals, we have a separate guide on [different termination signals][12], so you can refer to that guide if you intend to learn more about them. + +But I will recommend you use SIGTERM first, as it is the most efficient and friendly way to kill the process. + +#### Customize htop + +Here, my aim is to add a date and time and change the color scheme to monochrome. + +First, press **F2**, and it will being setup prompt allowing users to change how htop looks: + +![customize htop in ubuntu][13] + +First, hover to the `Colors` sections and press Enter and it will allow us to change the color scheme. From there, select the Monochrome option and press Enter to save changes: + +![change htop colors in linux][14] + +Now, go back to the setup option, and from there, use the left arrow key to explore available meters: + +![explore available meters in htop][15] + +As I intend to add the Date and time, I have to press Enter once I find the option for it. + +Here, it will allow you to place the date and time in any of the left and right columns and you can use the up and down arrow keys to change the order of columns. + +So I placed the date and time meter with the last styling option (you can change styles using the spacebar): + +![add date and time htop][16] + +Once you are done aligning the date and time meter, press the enter key to save changes and **F10** to close the setup prompt. + +### Wrapping Up + +In this guide, I explained how you can install the htop utility in different Linux distributions and how you can use some basic functionalities of htop to manage system resources efficiently. + +But htop can do a lot more and for that and to learn more, you can always refer to its man page, and we have a detailed guide on [how you can get the most out of the man page in Linux][17]. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/use-htop/ + +作者:[Sagar Sharma][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/sagar/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/linux-system-monitoring-tools/ +[2]: https://linuxhandbook.com/top-command/ +[3]: https://github.com/htop-dev/htop +[4]: https://itsfoss.com/wp-content/uploads/2022/11/install-and-use-htop.png +[5]: https://itsfoss.com/wp-content/uploads/2022/11/cpu-process-in-htop-1.png +[6]: https://itsfoss.com/wp-content/uploads/2022/11/memory-bar-in-htop.png +[7]: https://itsfoss.com/wp-content/uploads/2022/11/task-statistics-in-htop.png +[8]: https://itsfoss.com/wp-content/uploads/2022/11/sort-processes-in-htop-using-keyboard-shortcut.png +[9]: https://itsfoss.com/wp-content/uploads/2022/11/search-processes-in-htop.png +[10]: https://itsfoss.com/wp-content/uploads/2022/11/filter-processes-in-htop.png +[11]: https://itsfoss.com/wp-content/uploads/2022/11/kill-process-in-htop.png +[12]: https://linuxhandbook.com/termination-signals/ +[13]: https://itsfoss.com/wp-content/uploads/2022/11/customize-htop-in-ubuntu.png +[14]: https://itsfoss.com/wp-content/uploads/2022/11/change-htop-colors-in-linux.png +[15]: https://itsfoss.com/wp-content/uploads/2022/11/explore-available-meters-in-htop.png +[16]: https://itsfoss.com/wp-content/uploads/2022/11/add-date-and-time-htop.png +[17]: https://linuxhandbook.com/man-pages/ diff --git a/sources/tech/20221118.0 ⭐️⭐️ Fixing “Key is stored in legacy trusted.gpg keyring” Issue in Ubuntu.md b/sources/tech/20221118.0 ⭐️⭐️ Fixing “Key is stored in legacy trusted.gpg keyring” Issue in Ubuntu.md new file mode 100644 index 0000000000..45b626bd9d --- /dev/null +++ b/sources/tech/20221118.0 ⭐️⭐️ Fixing “Key is stored in legacy trusted.gpg keyring” Issue in Ubuntu.md @@ -0,0 +1,144 @@ +[#]: subject: "Fixing “Key is stored in legacy trusted.gpg keyring” Issue in Ubuntu" +[#]: via: "https://itsfoss.com/key-is-stored-in-legacy-trusted-gpg/" +[#]: author: "Abhishek Prakash https://itsfoss.com/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Fixing “Key is stored in legacy trusted.gpg keyring” Issue in Ubuntu +====== + +If you use a PPA or add an external repository in Ubuntu 22.04 and later versions, chances are that you will see a message like this: + +``` +W: https://packagecloud.io/slacktechnologies/slack/debian/dists/jessie/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details. +``` + +![ubuntu key is stored legacy][1] + +First thing first. It is not an error, it is a warning message. A warning does not stop the procedure. You can continue upgrading your system even if you see this warning message during an update. + +If you don’t like seeing the warning message, you can take some manual steps to get rid of it. + +There are two ways; the proper way and the quick and dirty way. Read both methods and see which one you feel comfortable with. + +### Method 1: Import the key [Proper but complicated way] + +First, list all the GPG keys added to your system. + +``` +sudo apt-key list +``` + +This will show a huge list of keys stored in your system. What you have to do here is to look for the keys associated with the warning message. + +``` +[email protected]:~$ sudo apt-key list +[sudo] password for abhishek: +Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)). +/etc/apt/trusted.gpg +-------------------- +pub rsa4096 2014-01-13 [SCEA] [expired: 2019-01-12] + 418A 7F2F B0E1 E6E7 EABF 6FE8 C2E7 3424 D590 97AB +uid [ expired] packagecloud ops (production key) <[email protected]> + +pub rsa4096 2016-02-18 [SCEA] + DB08 5A08 CA13 B8AC B917 E0F6 D938 EC0D 0386 51BD +uid [ unknown] https://packagecloud.io/slacktechnologies/slack (https://packagecloud.io/docs#gpg_signing) <[email protected]> +sub rsa4096 2016-02-18 [SEA] + +/etc/apt/trusted.gpg.d/audio-recorder-ubuntu-ppa.gpg +---------------------------------------------------- +pub rsa4096 2015-08-30 [SC] + 42EF 41ED 9813 B713 D4F1 F06D 5CF1 2638 ACF9 669F +uid [ unknown] Launchpad PPA for Team audio-recorder + +/etc/apt/trusted.gpg.d/danielrichter2007-ubuntu-grub-customizer.gpg +------------------------------------------------------------------- +pub rsa1024 2010-10-08 [SC] + 59DA D276 B942 642B 1BBD 0EAC A8AA 1FAA 3F05 5C03 +``` + +How do you do that? Read the message carefully. + +``` +W: https://packagecloud.io/slacktechnologies/slack/debian/dists/jessie/InRelease: Key is stored in legacy +``` + +In my case, the repository has keywords like packagecloud, slacktechnologies. It is shown at the top of the apt-key list output. You may have to scroll a bit in your case. + +In this rare case, the external repository added by Slack, has two GPG keys. One of them is expired and I’ll ignore it. You may not have such a situation. + +You should the last 8 characters (excluding the space) under the line after pub. + +``` +/etc/apt/trusted.gpg +-------------------- +pub rsa4096 2014-01-13 [SCEA] [expired: 2019-01-12] + 418A 7F2F B0E1 E6E7 EABF 6FE8 C2E7 3424 D590 97AB +uid [ expired] packagecloud ops (production key) <[email protected]> + +pub rsa4096 2016-02-18 [SCEA] + DB08 5A08 CA13 B8AC B917 E0F6 D938 EC0D 0386 51BD +uid [ unknown] https://packagecloud.io/slacktechnologies/slack (https://packagecloud.io/docs#gpg_signing) <[email protected]> +``` + +So from the line “DB08 5A08 CA13 B8AC B917 E0F6 D938 EC0D 0386 51BD”, I’ll take the last 8 characters “0386 51BD”, remove the space and then use it to import the GPG key in its dedicated file under the /etc/apt/trusted.gpg.d directory: + +``` +sudo apt-key export 038651BD | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/slack.gpg +``` + +I created a new file slack.gpg here, in case you didn’t notice it. I named it slack.gpg because it is associated with Slack application I installed earlier. The filename does not matter but it’s good for identification. + +If the command runs successfully, you won’t see any message. You can verify that by checking if the newly created gpg file exists or not. + +![import gpg key to trusted ubuntu][2] + +Run the update again and now you should not see the warning message anymore. + +### Method 2: Copy to the trusted.gpd.d directory [Quick and dirty way] + +If you don’t feel comfortable doing all the above stuff manually, well, you can ignore the warning message. I mean, ignoring it is always an option. + +Another option is to copy the /etc/apt/trusted.gpg file to /etc/apt/trusted.gpg.d directory. After all, Ubuntu only complains that it needs the GPG keys in /etc/apt/trusted.gpg.d directory. + +You’ll still have to use the terminal. Open it and use the following command: + +``` +sudo cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d +``` + +Now, if you run the update, you won’t see the “Key is stored in legacy trusted.gpg keyring” warning message anymore. + +![quick dirty way to fix apt key stored legacy][3] + +### Conclusion + +I have written a detailed article on [apt-key deprecation][4]. Apparently, that article had some readers confused and hence I wrote this one to give them direct steps for getting rid of the message. + +As I said before, it is a warning message and can be ignored for now. The onus to ‘fix’ this issue lies on the external software developers and Ubuntu developers. The external software developers should make sure that their GPG keys are no longer added in the /etc/apt/trusted.gpg file. + +The end users should not take the pain for their laziness. + +So, which method did you use to get rid of the ‘key is stored in legacy’ warning message? The first one or the second one? + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/key-is-stored-in-legacy-trusted-gpg/ + +作者:[Abhishek Prakash][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/wp-content/uploads/2022/11/ubuntu-key-is-stored-legacy.png +[2]: https://itsfoss.com/wp-content/uploads/2022/11/import-gpg-key-to-trusted-ubuntu.png +[3]: https://itsfoss.com/wp-content/uploads/2022/11/quick-dirty-way-to-fix-apt-key-stored-legacy.png +[4]: https://itsfoss.com/apt-key-deprecated/ diff --git a/sources/tech/20221119.0 ⭐️⭐️ 7 Reasons Why Cinnamon is a Fantastic (Yet Underrated) Linux Desktop Environment.md b/sources/tech/20221119.0 ⭐️⭐️ 7 Reasons Why Cinnamon is a Fantastic (Yet Underrated) Linux Desktop Environment.md new file mode 100644 index 0000000000..9a06dfdbc8 --- /dev/null +++ b/sources/tech/20221119.0 ⭐️⭐️ 7 Reasons Why Cinnamon is a Fantastic (Yet Underrated) Linux Desktop Environment.md @@ -0,0 +1,185 @@ +[#]: subject: "7 Reasons Why Cinnamon is a Fantastic (Yet Underrated) Linux Desktop Environment" +[#]: via: "https://itsfoss.com/why-cinnamon/" +[#]: author: "Ankush Das https://itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +7 Reasons Why Cinnamon is a Fantastic (Yet Underrated) Linux Desktop Environment +====== + +Linux Mint is one of my favorite distributions. The flagship (or default) Cinnamon desktop is why I like it so much. + +The user experience offered by Cinnamon desktop may not be mind-blowing or fancy. But, the desktop environment provides enough reasons for users to like it and easily work with it to get things done. + +At the end of the day, that’s what we want. A user interface that works as expected and does not get in the way. + +I think Cinnamon desktop does a few things right to give you an exciting experience. Let me mention some of those here. + +**If you did not know**, the Cinnamon desktop is a fork of the GNOME 3 created in **2011** by **Clement Lefebvre** (Linux Mint creator) with enhancements over the years. + +### 1. Familiar User Interface + +![linux mint 21 full][1] + +The primary objective of building Cinnamon was to keep the GNOME 2 desktop style alive. + +And that is why you get a familiar desktop layout compared to the most popular consumer desktop operating system, i.e., Windows. + +Of course, Windows 11 has evolved its usual layout with time. But, accessing a start menu, a taskbar, system icons in the tray, and a couple of window decorations make it easy to grasp. + +Whether you are a Windows user or a macOS user, the Cinnamon desktop layout should not feel challenging at all. + +![linux mint welcome][2] + +To help you further, the “**Welcome Screen**” in Linux Mint provides you with all the information quickly. + +### 2. Lightweight + +To get a comfortable experience with Cinnamon desktop (usually with Linux Mint), you have the following system requirements: + +- 4 GB RAM +- 100 GB of disk space +- 1024×768 resolution screen + +In the modern computing age, these specifications should suit almost everyone. So, you do not have to worry about needing an insane amount of memory or disk space to run a Linux distro powered by Cinnamon. + +Of course, you can try [installing Cinnamon desktop on Ubuntu][3]. + +But, for this article, we consider Linux Mint as the ideal use case. + +### 3. Fast Performance Without Sacrificing User Experience + +When we think about a lightweight desktop environment—we usually imagine a bland user interface that focuses on performance. + +![linux mint perf][4] + +With Cinnamon desktop, that is not the case. It does include subtle animations and features icons/themes that make up for a modern look, if not the best. + +It looks pleasing to the eyes with a minimal approach. + +Typically, I am a sucker for pretty user interfaces, but I can still live with Linux Mint’s straightforward user experience running it on a dual-monitor setup (**1440p + 1080p**). + +It may not be the best dual-monitor experience with Linux Mint Cinnamon edition (no dock/panel on the second screen for me). So, there is little room for improvement. + +### 4. Default Customization Options + +You might already know that KDE is probably the king when it comes to giving the ability to customize out-of-the-box. + +We have super useful guides if you are curious about going that way: + +- [KDE Customization Guide][5] +- [How to Properly Theme KDE Plasma [In-depth Guide]][6] +- [Best Gorgeous KDE Plasma Themes][7] + +But, for many users, it is **overwhelming**. + +I think Linux Mint gives the right amount of extra controls/customizations, which you also learn on its **Welcome Screen**. + +![cinnamon theme customize][8] + +Some of the elements that you can easily customize include: + +- Desktop color (accent) +- Light/Dark theme toggle +- Panel layout +- Icons, buttons, and mouse pointer. + +You can head to the system settings and navigate to “Themes” to find the essential tweaks. + +**Recommended Read:**[7 Ways to Customize Cinnamon Desktop on Linux][9] + +### 5. Official Add-ons to Spice Up Your Experience + +![cinnamon desklet][10] + +Linux Mint supports various add-ons to enhance your experience. These are all part of its [Cinnamon Spices][11] offering. They include: + +- Themes +- Extensions +- Applets +- Desklets + +Applets and Desklets are tiny programs that you can add on top of the panel (near the system tray) and the desktop, respectively. + +![applet cinnamon][12] + +You can manage system default applets or download more from the official repositories: + +![applets cinnamon][13] + +Similarly, you can add a Desklet from the available defaults or get a new one from the repositories. + +![desklet cinnamon][14] + +Plenty of valuable utilities to monitor system resources, check the weather, and more. + +In addition, you get access to various themes built by the community that could easily give you a look you always wanted. + +![cinnamon theme][15] + +To complement all the above spices, you can use extensions to make the panel transparent, add a watermark to your desktop, enable windows tiling, and add some exciting window animations. + +![linux mint extensions][16] + +### 6. Compatible and Seamless User Experience + +Why do I highlight the user experience again? + +The best part about Cinnamon desktop is that it evolves in a way that respects and supports all functionalities. + +For instance, if you want to install an app you enjoyed using on KDE Plasma, it should work the same way here. There’s nothing special with Cinnamon desktop that would break the experience. + +![gnome accounts cinnamon][17] + +Similarly, the desktop adds features that try to co-exist with services from other desktop environments. For instance, calendar events support using GNOME Online Accounts. + +### 7. Panel Customization + +![linux mint panel][18] + +The dock, taskbar, or panel comprises an integral part of the user interface. + +Yes, other desktop environments allow you to customize the same to some extent. With Cinnamon, you get a good amount of control to tweak it. + +I think you get all the essential options a user would want. + +### Wrapping Up + +GNOME and KDE Plasma are popular desktop environments. However, Cinnamon is not far off on essential parts to provide an optimal user experience. + +_What do you think of the Cinnamon desktop environment? Do you prefer to try it with Linux Mint? Share your thoughts in the comments section below._ + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/why-cinnamon/ + +作者:[Ankush Das][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/wp-content/uploads/2022/11/linux-mint-21-full.jpg +[2]: https://itsfoss.com/wp-content/uploads/2022/11/linux-mint-welcome.png +[3]: https://itsfoss.com/install-cinnamon-on-ubuntu/ +[4]: https://itsfoss.com/wp-content/uploads/2022/11/linux-mint-perf.png +[5]: https://itsfoss.com/kde-customization/ +[6]: https://itsfoss.com/properly-theme-kde-plasma/ +[7]: https://itsfoss.com/best-kde-plasma-themes/ +[8]: https://itsfoss.com/wp-content/uploads/2022/11/cinnamon-theme-customize.png +[9]: https://itsfoss.com/customize-cinnamon-desktop/ +[10]: https://itsfoss.com/wp-content/uploads/2022/11/cinnamon-desklet.png +[11]: https://cinnamon-spices.linuxmint.com +[12]: https://itsfoss.com/wp-content/uploads/2022/11/applet-cinnamon.png +[13]: https://itsfoss.com/wp-content/uploads/2022/11/applets-cinnamon.png +[14]: https://itsfoss.com/wp-content/uploads/2022/11/desklet-cinnamon.png +[15]: https://itsfoss.com/wp-content/uploads/2022/11/cinnamon-theme.png +[16]: https://itsfoss.com/wp-content/uploads/2022/11/linux-mint-extensions.png +[17]: https://itsfoss.com/wp-content/uploads/2022/11/gnome-accounts-cinnamon.png +[18]: https://itsfoss.com/wp-content/uploads/2022/11/linux-mint-panel.png diff --git a/sources/tech/20221121.0 ⭐️⭐️ How to Setup Python Development Environment in Ubuntu and Fedora.md b/sources/tech/20221121.0 ⭐️⭐️ How to Setup Python Development Environment in Ubuntu and Fedora.md new file mode 100644 index 0000000000..f7e578e4c6 --- /dev/null +++ b/sources/tech/20221121.0 ⭐️⭐️ How to Setup Python Development Environment in Ubuntu and Fedora.md @@ -0,0 +1,142 @@ +[#]: subject: "How to Setup Python Development Environment in Ubuntu and Fedora" +[#]: via: "https://www.debugpoint.com/setup-python-environment-ubuntu-fedora/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Setup Python Development Environment in Ubuntu and Fedora +====== + +**This article helps you with the basics and steps to setup your Python development environment in Ubuntu and Fedora.** + +[Python][1] became popular in the last couple of years due to its powerful libraries, easy syntax, and portability. It is being used currently almost every system across businesses. + +So, if you are trying to set up your Python box and wondering how to begin etc., then you are at the right place. Here, I tried to give you some steps to get started. + +### Setup Python Development Environment in Ubuntu and Fedora + +#### Python Versions + +If you are starting up Python development fresh, then it is recommended that you use the latest Python 3.x for your development, as Python 2.x is already out of support. Almost all the leading Linux distributions removed the dependency on Python 2. + +If you are running the latest distributions as of today for Fedora or Ubuntu, then you should have Python 3.x already installed and set as the default interpreter. For example, Fedora 37 and Ubuntu 22.04 LTS, which are currently available, have [Python 3.11][2] as the default Python shell. + +A quick way to find out what Python version you have is by running the below command from a terminal in both Ubuntu and Fedora. + +``` +python2 +``` + +``` +python3 +``` + +![python3][3] + +If you are running earlier versions of Ubuntu or Fedora, then you can install the latest Python 3.x using the below commands: + +**Ubuntu** + +``` +sudo apt install python3 +``` + +**Fedora** + +``` +sudo dnf install python3 +``` + +Also, run the below command to find out the path of your Python executable in the current system: + +``` +which python +``` + +#### Switching Versions as the default interpreter + +If your system has multiple Python versions installed – 2.x and 3.x and you want to switch between them, it is possible.  + +_If you have only one version installed, you can skip this section._ + +To switch, first, run python from the terminal to find out the default executable path. Ideally, it should be `/usr/bin/python`. Now, run below to find out the symbolic link to the executable. + +``` +ln -l /usr/bin/python +``` + +``` +lrwxrwxrwx 1 root root .... /usr/bin/pyhton -> python2 +``` + +Now check out the `$PATH` variable to determine the order of path concatenation which the system looks up for executables. + +``` +echo $PATH +``` + +![PATH-Variable][4] + +As you can see `/usr/local/bin`is preceding the `/usr/bin/` then you can create a soft symbolic link to `python3`. Then your interpreter should pick up the latest Python 3 instead of Python 2 while running the python command.  + +``` +ls -s /usr/bin/python3 /usr/local/bin/python +``` + +Now you should logout and log in again to clear any hash entries, or you can run `hash -r` to clear them out. + +Now you can run python from the terminal, and you should have the latest Python 3 picked up. + +#### Python IDE + +An integrated development environment (IDE) helps you write and compile and execute your code. There are [several free Python IDE available][5] – such as PyCharm, Eclipse, Eric, etc., which you can use. That would be another write-up on their pros and cons.  + +If you download Python from the official [python.org][1] website, Python accompanies a default development environment called IDLE. IDLE is good for starting up your system, and later you can decide to pick any of the best free Python IDE available. + +IDLE is not included in Ubuntu and Fedora along with python as default, you have to install it manually. Run the below commands from the terminal to manually install IDLE. + +**Ubuntu** + +``` +sudo apt install idle +``` + +**Fedora** + +``` +sudo dnf install python-tools +``` + +Once installed, you can launch IDLE from the command line idle or search from the application. + +![IDLE-environment`][6] + +Now, you can use IDLE to start your development. Most of the basic options you can find in the File menu of IDLE. + +I hope this guide explains what you should know before starting your Python development. Although this guide is primarily targeted to Ubuntu and Fedora, you can still follow the instructions for all Ubuntu and Fedora-based distributions as well. If you are facing problems with the Python environment setup, let me know in the comment section below.  + +[Next:Learn Bash base64 Encode and Decode With Examples][7] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/setup-python-environment-ubuntu-fedora/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.python.org/ +[2]: https://www.debugpoint.com/install-python-3-11-ubuntu/ +[3]: https://www.debugpoint.com/wp-content/uploads/2020/06/python3.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2020/06/PATH-Variable.png +[5]: https://www.debugpoint.com/5-best-python-ide-code-editor/ +[6]: https://www.debugpoint.com/wp-content/uploads/2020/06/IDLE-environment.png +[7]: https://www.debugpoint.com/bash-base64-encode-decode/ diff --git a/sources/tech/20221121.1 ⭐️⭐️ 7 Git tips for technical writers.md b/sources/tech/20221121.1 ⭐️⭐️ 7 Git tips for technical writers.md new file mode 100644 index 0000000000..60d1e2dd9f --- /dev/null +++ b/sources/tech/20221121.1 ⭐️⭐️ 7 Git tips for technical writers.md @@ -0,0 +1,131 @@ +[#]: subject: "7 Git tips for technical writers" +[#]: via: "https://opensource.com/article/22/11/git-tips-technical-writers" +[#]: author: "Maximilian Kolb https://opensource.com/users/kolb" +[#]: collector: "lkxed" +[#]: translator: "Donkey-Hao" +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +7 Git tips for technical writers +====== + +As a technical writer working for [ATIX][1], my tasks include creating and maintaining documentation for [Foreman][2] at [github.com/theforeman/foreman-documentation][3]. Git helps me track versions of content, and to collaborate with the open source community. It's an integral part of storing the results of my work, sharing it, and discussing improvements. My main tools include my browser, OpenSSH to connect to Foreman instances, [Vim][4] to edit source files, and Git to version content. + +This article focuses on recurring challenges when taking the first steps with Git and contributing to Foreman documentation. This is meant for intermediate Git users. + +### Prerequisites + +- You have installed and configured Git on your system. You must at least set your user name and email address. +- You have an account on [github.com][5]. GitHub isn't an open source project itself, but it's the site where many open source Git repositories are stored (including Foreman's documentation.) +- You have forked the [foreman-documentation][3] repository into your own account or organization (for example, _github.com/__My_User_Account__/foreman-documentation_. For more information, see [A step-by-step guide to Git][6] by Kedar Vijay Kulkarni. +- You have added your SSH public key to GitHub. This is necessary to push your changes to GitHub. For more information, see [A short introduction to GitHub][7] by Nicole C. Baratta. + +### Contributing to Foreman documentation + +Foreman is an open source project and thrives on community contributions. The project welcomes everyone and there are only a few requirements to make meaningful contributions. Requirements and conventions are documented in the [README.md][8] and [CONTRIBUTING.md][9] files. + +Here are some of the most frequent tasks when working on Foreman documentation. + +### I want to start working on Foreman documentation + +- Clone the repository from github.com:`$ git clone git@github.com:theforeman/foreman-documentation.git +$ cd foreman-documentation/` +- Rename the remote:`$ git remote rename origin upstream` +- Optional: Ensure that your local master branch is tracking the master branch from the **foreman-documentation** repository from the **theforeman** organization:`$ git status`This automatically starts you on the latest commit of the default branch, which in this case is **master**. +- If you do not have a fork of the repository in your own account or organization already, create one.Go to [github.com/theforeman/foreman-documentation][3] and click **Fork**. +- Add your fork to your repository.`$ git remote add github git@github.com:_My_User_Account_/foreman-documentation.git`Your local repository now has two remotes: `upstream` and `github`. + +### I want to extend the Foreman documentation + +For simple changes such as fixing a spelling mistake, you can create a pull request (PR) directly. + +- Create a branch named, for example, `fix_spelling`. The `git switch` command changes the currently checked out branch, and `-c` creates the branch:`$ git switch -c fix_spelling` +- Make your change. +- Add your change and commit:`$ git add guides/common/modules/abc.adoc +$ git commit -m "Fix spelling of existing"`I cannot emphasise the importance of good Git commit messages enough. A commit message tells contributors what you have done, and because it's preserved along with the rest of the codebase, it serves as a historical footnote when someone's looking back through code to determine what's happened over its lifespan. For more information on great git commit messages, see [The seven rules of a great Git commit message][10] by cbeams. +- Optional but recommended: View and verify the diff to the default branch. The default branch for **foreman-documentation** is called `master`, but other projects may name theirs differently (for example, `main`, `dev`, or `devel`.)`$ git diff master` +- Push your branch to Github. This publishes your change to your copy of the codebase.`$ git push --set-upstream github fix_spelling` +- Click on the link provided by Git in your terminal to create a pull request (PR).`remote: Create a pull request for 'fix_spelling' on Github by visiting: +remote:      https://github.com/_My_User_Account_/foreman-documentation/pull/new/fix_spelling` +- Add an explanation on _why_ the community should accept your change. This isn't necessary for a trivial PR, such as fixing a spelling mistake, but for major changes it's important. + +### I want to rebase my branch to master. + +- Ensure your local master branch tracks the master branch from [github.com/theforeman/foreman-documentation][3], not **foreman-documentation** in your own namespace:`$ git switch master`This should read `Your branch is up to date with 'upstream/master'`, with `upstream` being the name of your remote repository pointing to `github.com/theforeman/foreman-documentation`. You can review your remotes by running `git remote -v`. +- Fetch possible changes from your remote. The `git fetch` command downloads the tracked branch from your remote, and the `--all` option updates all branches simultaneously. This is necessary when working with additional branches. The `--prune` option removes references to branches that no longer exist.`$ git fetch --all --prune` +- Pull possible changes from `upstream/master` into your local `master` branch. The `git pull` command copies commits from the branch you're tracking into your current branch. This is used to "update" your local `master` branch to the latest state of the `master` branch in your remote (Github, in this case.)`$ git pull` +- Rebase your branch to "master".`$ git switch my_branch +$ git rebase -i master` + +### I have accidentally committed to master + +- Create a branch to save your work:`$ git switch -c my_feature` +- Switch back to the `master` branch:`$ git switch master` +- Drop the last commit on `master`:`$ git reset --soft HEAD~1` +- Switch back to `my_feature` branch and continue working:`$ git switch my_feature` + +### I want to reword my commit message + +- If you only have one commit on your branch, use `git amend` to change your last commit:`$ git commit --amend`This assumes that you don't have any other files added to your staging area (that is, you did not run `git add My_File` without also committing it.) +- Push your "change" to Github, using the `--force` option because the Git commit message is part of your existing commit, so you're changing the history on your branch.`$ git push --force` + +### I want to restructure multiple changes on a single branch + +- Use **e** to make actual changes to your commit. This interrupts your rebase! +- Use **f** to combine a commit with its parent. +- Use **d** to completely remove the commit from your branch. +- Move the lines to change the order of your changes.After successfully rebasing, your own commits are on top of the last commit from `master`. + +- Optional but strongly recommended: Fetch changes from Github.`$ git switch master +$ git fetch +$ git pull`This ensures that you directly incorporate any other changes into your branch in the order they've been merged to `master`. +- To restructure your work, rebase your branch and make changes as necessary. Rebasing to `master` means changing the parent commit of your first commit on your branch:`$ git rebase --interactive master`Replace the first word `pick` to modify the commit. + +### I want to copy a commit from another branch + +- Get the commit ID from a stable branch (for example, a branch named `3.3`), using the `-n` option to limit the number of commits.`$ git log -n 5 3.3` +- Replicate changes by cherry-picking commits to your branch. The `-x` option adds the commit ID to your commit message. This is only recommended when cherry-picking commits from a stable branch.`$ git switch My_Branch +$ git cherry-pick -x Commit_ID` + +### More tips + +At ATIX, we run a [GitLab][11] instance to share code, collaborate, and automate tests and builds internally. With the open source community surrounding the Foreman ecosystem, we rely on Github. + +I recommend that you always point the remote named `origin` in any Git repository to your _internal_ version control system. This prevents leaking information to external services when doing a `git push` based on pure muscle memory. + +Additionally, I recommend using a fixed naming scheme for remotes. I always name the remote pointing to my own GitLab instance `origin`, the open source project `upstream`, and my fork on Github `github`. + +For `foreman-documentation`, the repository has a relatively flat history. When working with a more complex structure, I tend to think of Git repositories in a very visual way with nodes (commits) pointing to nodes on lines (branches) that potentially intertwine. Graphical tools such as `gitk` or [Git Cola][12] can help visualize your Git history. Once you have fully grasped how Git works, you can move on to aliases, if you prefer the command line. + +Before a big rebase with a lot of expected merge conflicts, I recommend creating a "backup" branch that you can quickly view diffs against. Note that it's pretty hard to irreversibly delete commits, so play around in your local Git repository before making big changes. + +### Git for tech writers + +Git is a tremendous help for technical writers. Not only can you use Git to version your own content, but you can actively collaborate with others. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/git-tips-technical-writers + +作者:[Maximilian Kolb][a] +选题:[lkxed][b] +译者:[Donkey-Hao](https://github.com/Donkey-Hao) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/kolb +[b]: https://github.com/lkxed +[1]: https://atix.de/en/ +[2]: https://opensource.com/article/17/8/system-management-foreman +[3]: https://github.com/theforeman/foreman-documentation +[4]: https://opensource.com/resources/what-vim +[5]: https://github.com/ +[6]: https://opensource.com/article/18/1/step-step-guide-git +[7]: https://opensource.com/life/15/11/short-introduction-github +[8]: https://github.com/theforeman/foreman-documentation/blob/master/guides/README.md#contribution-guidelines +[9]: https://github.com/theforeman/foreman-documentation/blob/master/CONTRIBUTING.md#contributing-to-foreman-documentation +[10]: https://cbea.ms/git-commit/#seven-rules +[11]: https://about.gitlab.com/ +[12]: https://opensource.com/article/20/3/git-cola diff --git a/sources/tech/20221121.4 ⭐️⭐️ Using the Lesser Known File Tagging Feature in KDE’s Dolphin File Manager.md b/sources/tech/20221121.4 ⭐️⭐️ Using the Lesser Known File Tagging Feature in KDE’s Dolphin File Manager.md new file mode 100644 index 0000000000..07609577d4 --- /dev/null +++ b/sources/tech/20221121.4 ⭐️⭐️ Using the Lesser Known File Tagging Feature in KDE’s Dolphin File Manager.md @@ -0,0 +1,211 @@ +[#]: subject: "Using the Lesser Known File Tagging Feature in KDE’s Dolphin File Manager" +[#]: via: "https://itsfoss.com/file-tagging-kde/" +[#]: author: "Sreenath https://itsfoss.com/author/sreenath/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Using the Lesser Known File Tagging Feature in KDE’s Dolphin File Manager +====== + +[Dolphin][1] is the default file manager of the KDE Plasma Desktop Environment. It is considered as one of the most comprehensive and feature-rich file managers available for Linux distributions. + +Yes. It has tons of features and you may not be aware of all of them. One such feature is file tagging. + +File tagging is a way of organizing files or folder by applying tags to them. This tag can then be used to search for data, and sort the files accordingly. With this feature, you can tag files into categories irrespective of their location. This gives you a new way to organize your files. + +While there are dedicated tools like [Tagspaces][2] for this purpose, this feature comes baked into KDE’s Dolphin file manager. + +In this tutorial, I’ll show you how to use the file tagging feature in Dolphin. + +### Adding tags to files and folders in KDE + +There are two ways you can add tags: + +- Through the right-click menu +- Through the information panel + +Let’s see them one by one. + +#### Method 1: Adding tags through right-click context menu + +Select the file(s) and folders to which you want to add tags. Now press the right click. + +You need to select the “Add Tags” option and here, you can add the name of the tag, by pressing **Create New**. + +![create tags on the go using right click context menu][3] + +You need to enter the name of the new tag and press **OK**. + +![provide the name of the tag you like to use and press ok to add the tag][4] + +Once created, the tag will be visible the next time you try to tag a file. + +![add an existing tag to a file using right click context menu][5] + +**_Also, you can toggle the check box according to your need to add or remove a file/folder from a particular tag._** + +#### Method 2: Adding tags through the information panel + +Dolphin provides an information panel where you can view the details of a file/folder, including a small preview. + +This is turned off by default. But you can enable it by going to **Show Panel > Information** from the top right hamburger menu. + +![enable information panel in dolphin][6] + +Once this is checked, you will notice the new panel on the right side. Here, you can see the tags listed as an entry. + +![add tags using information panel][7] + +First, select the file/folder to which you want to add tags and then press **Add** on the information panel. Now, you can either create a new tag or add an existing tag to the respective file/folder, as shown in the above screenshot. Press **Save** once you are done. + +The same information panel will also show the tag information of the selected items if it has any. + +### Showing tag information of a file or folder + +As I mentioned above, the information panel lists the tags attached to the file/folder under selection. But there are more ways to list the tags. Those methods are detailed below. + +#### Method 1: Show the associated tags under file name + +On the default Icon View in Dolphin, you can get the tags associated with each item just beneath the name of that item. + +Select Show Additional Information > Tags from the hamburger menu in the top right corner. + +![showing assigned tags beneath each item][8] + +Once the box is checked, as shown in the above screenshot, you will notice that the tag information appears beneath the name of each item. + +#### Method 2: Show associated tags in list view + +Dolphin also provides a **Detailed** view. Here, the contents are listed with columns for each information. + +By default, tag data column is not shown. To add that, you can right-click anywhere on the top column, as shown in the screenshot below. Now, check the tag box. + +![see tag information in dolphin detailed list view][9] + +You will notice a new column, with tags of individual entries, is appeared. + +By clicking on the tag button (blue rectangle in the screenshot), you can sort the entries of the current location according to tags (alphabetical or reverse). + +### Listing all the files associated with a particular tag + +If you have many tags, you may want to list all the files and folders associated with a particular tag. + +For this, there is an entry called **Tags** on the sidebar. Clicking on this will list all the available tags that you have created. + +![all tags are listed on all tags section on side bar][10] + +Now, clicking on individual tag entries here will display the contents of that particular tag. + +Even more simple is that the tags are placed as a list on the sidebar itself. You can click on the entries to go to that particular list. + +### Searching for files with specific tags + +You can search by file names in Dolphin. That’s not new. But you may refine the search based on tags as well. + +For this, first press the search button on top right side. + +![select search icon to start a search][11] + +You will get a view for entering your search term. Here you can search in the current directory or in all files. + +Click on the **dropdown on right** as shown and select tags. Here you can filter your search by selecting the target tags. + +![perform searches using different crieteria and tags][12] + +### Sorting items according to tags + +In dolphin, you can start a sort operation based on tags (alphabetical or reverse). Also, you can sort the folders before files are mixed. + +To do this, click on the hamburger menu and select **sort by.** + +![sort entries according to tag][13] + +Here, you can select the **Tags** check box to sort**.** As shown in the above screenshot, you can specify the criteria also for the sorting. + +### Changing emblems of tags + +This is purely cosmetic and for those who have OCD about organizing files. You can change the emblem (icon) of a tag to be visually more distinguishable. + +In the above screenshots, you may have noticed that each tag appearing in the sidebar has different emblems. Right click on the name of the tag in sidebar and select **edit.** + +![edit a tag to change emblems][14] + +You can press the image button in the new dialog box to change the icon as shown below. + +![change emblem of tags][15] + +Note that the emblems will appear only on the sidebar. + +### Removing tags + +Don’t need a tag anymore? You can easily remove it. + +**_Note that removing tags does NOT remove the files associated with them._** + +To remove an existing tag, you can go to all tags in the sidebar. Right click on a tag and press **delete.** + +![delete a particular tag][16] + +That particular tag will be removed automatically from all the associated files/folders. + +### Buggy feature: Copy a tag as a directory + +On the **All tags** page, you can right-click and copy a particular tag and paste it to a location you like. This will paste all the entries with that particular tag into a separate folder. + +You should keep in mind that while copying, there will be some warning messages about missing files. You can skip them. Those warning messages are shown because a directory under the tag you copied may contain other files/directories, which essentially are not part of the tag you are copying. + +![warning message showing missing files][17] + +Here, some files inside the **Folders-One** directory are not part of the tag Tagger. So those files will not be copied. + +Also, another glitch that I found was if the copied tag contains files, the same files will be duplicated inside the tag. + +![duplicate files inside the tag because of copying tags inside system folders][18] + +It is an issue only if you are copying the tag within your system directories and will not be an issue if you are copying a tag to an outside storage like an external hard disk or USB device. + +### Wrapping Up + +Tags are indeed a great way to organize files, be they images or documents. Tagging feature can improve your productivity by enforcing neatness and order to your file storage and retrieval. + +It’s good to see KDE providing this as a built-in feature. I guess this is one of the many [differences between KDE and GNOME][19]. + +I feel I bit a bit more in detail as I wanted to give you all the required details. I hope you find it useful. + +If you know any other cool KDE features you love, do share them in the comments. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/file-tagging-kde/ + +作者:[Sreenath][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/sreenath/ +[b]: https://github.com/lkxed +[1]: https://apps.kde.org/en-gb/dolphin/ +[2]: https://www.tagspaces.org/ +[3]: https://itsfoss.com/wp-content/uploads/2022/11/create-tags-on-the-go-using-right-click-context-menu.png +[4]: https://itsfoss.com/wp-content/uploads/2022/11/provide-the-name-of-the-tag-you-like-to-use-and-press-ok-to-add-the-tag.png +[5]: https://itsfoss.com/wp-content/uploads/2022/11/add-an-existing-tag-to-a-file-using-right-click-context-menu.png +[6]: https://itsfoss.com/wp-content/uploads/2022/11/enable-information-panel-in-dolphin.png +[7]: https://itsfoss.com/wp-content/uploads/2022/11/add-tags-using-information-panel.png +[8]: https://itsfoss.com/wp-content/uploads/2022/11/showing-assigned-tags-beneath-each-item.png +[9]: https://itsfoss.com/wp-content/uploads/2022/11/see-tag-information-in-dolphin-detailed-list-view.png +[10]: https://itsfoss.com/wp-content/uploads/2022/11/all-tags-are-listed-on-all-tags-section-on-side-bar.png +[11]: https://itsfoss.com/wp-content/uploads/2022/11/select-search-icon-to-start-a-search.png +[12]: https://itsfoss.com/wp-content/uploads/2022/11/perform-searches-using-different-crieteria-and-tags.png +[13]: https://itsfoss.com/wp-content/uploads/2022/11/sort-entries-according-to-tag.png +[14]: https://itsfoss.com/wp-content/uploads/2022/11/edit-a-tag-to-change-emblems.png +[15]: https://itsfoss.com/wp-content/uploads/2022/11/change-emblem-of-tags.png +[16]: https://itsfoss.com/wp-content/uploads/2022/11/delete-a-particular-tag.png +[17]: https://itsfoss.com/wp-content/uploads/2022/11/warning-message-showing-missing-files.png +[18]: https://itsfoss.com/wp-content/uploads/2022/11/duplicate-files-inside-the-tag-because-of-copying-tags-inside-system-folders.png +[19]: https://itsfoss.com/kde-vs-gnome/ diff --git a/sources/tech/20221122.1 ⭐️ Anaconda Web UI preview image now public.md b/sources/tech/20221122.1 ⭐️ Anaconda Web UI preview image now public.md new file mode 100644 index 0000000000..7079d88bc2 --- /dev/null +++ b/sources/tech/20221122.1 ⭐️ Anaconda Web UI preview image now public.md @@ -0,0 +1,83 @@ +[#]: subject: "Anaconda Web UI preview image now public!" +[#]: via: "https://fedoramagazine.org/anaconda-web-ui-preview-image-now-public/" +[#]: author: "Jiří Konečný https://fedoramagazine.org/author/jkonecny/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Anaconda Web UI preview image now public! +====== + +We are excited to announce the first public preview image of the new Anaconda web interface!  Our vision is to reimagine and modernize our installer’s user experience (see our blog post [“Anaconda is getting a new suit”][1]). We are doing this by redesigning the user experience on all fronts to make it more easy and approachable for everyone to use. + +Today, we would like to introduce our [plans][2] for the public preview release, as our new project has already reached a point where core code functionality is already developed and the new interface can be used for real installations.  + +So, we’re giving you something to play with! 🙂 + +![Installation progress of the preview image][3] + +## Why public preview image? + +By giving you a working ISO as soon as we can, you have the opportunity to help us to define this new UI. This task allows us to rethink what we have and find new ways to overcome the challenges of the UI instead of re-creating what we had already. Please take this opportunity and reach us with your feedback to help us to create the best OS installer ever! + +Please let us know what you require from Anaconda. **What** featuresare important to you and **why** are these important? That will allow us to prioritize our focus on development and design. See below for[how to contact us][4]. + +## How to get public preview image? + +Download the Anaconda preview image [here][5].  + +Thanks a lot to the [Image Builder][6] team for providing us with a way to build ISO with the Fedora 37 Workstation GA content. We are planning to provide additional images with an updated installer to give you the newest features and fixes with the link above. There are no updates to the installation payload (installed system data) yet. We will announce important updates of the ISO image by sending mail to [anaconda-devel@lists.fedoraproject.org][7] with CC to [devel@lists.fedoraproject.org][8]. Please subscribe to either of these to get information about the news. This way we will be able to iterate on your feedback. + +## What you will get with the preview ISO + +The ISO will allow you to install the system and let you get a taste of the new UI, so you can provide us early feedback. However, it is pretty early in the development cycle. We advise you to not use this ISO to install critical infrastructure or machines where you have important data. + +Let’s go to the more interesting part of what you can do with the ISO: + +- Choose installation language +- Select your disks +- Automatically partition the disks. **BEWARE! This will erase everything on the selected disks.** +- Automatically install Fedora 37 GA Workstation system +- Basic review screen of your selections +- Installation progress screen +- Built-in help (on Installation destination screen only) + +### Known issues: + +- In the bootloader menu you’ll see “Install Fedora 38”, it’s expected because the installation environment is from Rawhide. However, the content installed will be Fedora 37 GA, so don’t worry. +- Virtual Box on Mac might have resolution issues. We are working on resolving this issue. +- Aspect ratio and window handling. We know we need to solve this better, feedback is welcome. + +## How to provide feedback? + +Your feedback is critical to have a project which you and we can be proud of, so please share it with us. To give us feedback: + +- Use our [GitHub repository discussions][9] +- Send mail to the [anaconda-devel@lists.fedoraproject.org][7] mailing list + +Please take your time to play with the UI and tell us what you think. What works great, what is not working and what you would like to have. Ideally, follow future updates and tell us if the situation is better or worse.  + +We are really counting on your feedback and we are thankful to have you all supporting us in this journey! + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/anaconda-web-ui-preview-image-now-public/ + +作者:[Jiří Konečný][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +[a]: https://fedoramagazine.org/author/jkonecny/ +[b]: https://github.com/lkxed +[1]: https://communityblog.fedoraproject.org/anaconda-is-getting-a-new-suit/ +[2]: https://fedoraproject.org/wiki/Changes/Anaconda_Web_UI_preview_image +[3]: https://lh3.googleusercontent.com/wYYvx8Cp5YJBLlMTWu4PCQlFsTQqs_ZflspDg7cjLyPE2lZUChhiJGKkdT3BcALPyiR0A04rR32S8YRoOfQHGLm22HaEQK6opM4cSUE_xchqmiowJPnDNCu7qsQSEg85ClJku_-ZSlwFoy3PQPhmactnKnHPjsEa9gS4tAqrINTfZ_Pj0Gg_jLJ4u1tNVw +[4]: https://fedoramagazine.org#provide-feedback +[5]: https://fedorapeople.org/groups/anaconda/webui_preview_image/x86_64/webui_latest_install.iso +[6]: https://github.com/osbuild/osbuild-composer +[7]: https://fedoramagazine.orgmailto:anaconda-devel@lists.fedoraproject.org +[8]: https://fedoramagazine.orgmailto:devel@lists.fedoraproject.org +[9]: https://github.com/rhinstaller/anaconda/discussions/new?category=web-ui diff --git a/sources/tech/20221123.0 ⭐️⭐️ apt remove vs apt purge What’s the Difference.md b/sources/tech/20221123.0 ⭐️⭐️ apt remove vs apt purge What’s the Difference.md new file mode 100644 index 0000000000..7eb690888a --- /dev/null +++ b/sources/tech/20221123.0 ⭐️⭐️ apt remove vs apt purge What’s the Difference.md @@ -0,0 +1,121 @@ +[#]: subject: "apt remove vs apt purge: What’s the Difference?" +[#]: via: "https://itsfoss.com/apt-remove/" +[#]: author: "Abhishek Prakash https://itsfoss.com/" +[#]: collector: "lkxed" +[#]: translator: "Tngze-G" +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +apt remove vs apt purge: What’s the Difference? +====== + +To [uninstall an application in the Ubuntu terminal][1], you can use: + +``` +sudo apt remove package_name +``` + +But in various forums, you may come across the suggestion to use the apt purge command for removing applications completely. + +This leaves you confused because using apt purge is quite similar to apt remove: + +``` +sudo apt purge package_name +``` + +So, why are there two similar commands for removing packages? What’s the difference between the two? Let me explain it to you with a few examples. + +### What’s the difference between apt-remove and apt-purge? + +Both apt-remove and apt-purge do the same thing and that is to uninstall a package. The apt-purge removes the package and purges any configuration files associated with it. That’s the only difference between the two. Neither command touches the application files under the home directory of the user. + +Have you ever removed an application and installed it again, only to notice that all your settings are in place? It’s because the apt remove command doesn’t remove the configuration files. + +#### See what’s being removed and what remains + +Let me share a practical example of removing the mplayer application using both apt remove and apt purge commands. The focus is on seeing what files remain after each operation. + +Here are the files associated with mplayer before removal. + +![mplayer before removal][2] + +Now, if I run the apt remove command. + +![apt uninstall package ubuntu][3] + +Here are the files that remain in the system: + +![files after mplayer removal][4] + +As you can see, there are mplayer files remaining in two locations: /etc and /home/abhishek. + +Now, if I install mplayer again and use apt purge to remove mplayer application this time. + +![apt purge command][5] + +Let’s look for files associated mplayer now. + +![files after mplayer removal][6] + +As you can see, the files from /etc directory no longer exists. + +But what about the files in the home directory? Should apt purge not remove it? + +The answer is negative. The apt commands do not touch the configuration files located under the home directory. They remain in the system unless you manually remove them. Those files are really small in size and hardly take disk space. + +Do note that not all applications create configuration files under /etc or home directory. + +#### The effect of using apt remove or apt purge + +A practical example I can think of is Discord. You [install Discord on Ubuntu][7] with deb file. Start using it by logging into your account. Remove discord and install it again using deb file. + +Now if you start Discord, you’ll notice that you are already logged into your account. Surprising, no? + +But this is a feature because some applications like Discord, VirtualBox provide you updates similarly. You remove the current version and install the newer one (even if you don’t see this process). Since the application configuration files are not touched, you are logged back in without additional effort. + +The apt remove command gives you the option to reuse an application with similar configuration that you used in the past. + +However, you may not always want it. If you configured an application in a bad way and want to start from scratch, the apt purge command is the way to go forward. + +#### Does apt purge perform a wild-card removal? + +When you purge a package, you’ll notice that it mentions removing package-name*. This indicates that it will remove all the packages with names starting from package-name. + +![apt purge wild card][8] + +I didn’t find a definite answer on this point in the documentation (i.e. man page). So, I did a little test on my own. I installed espeak and espeak-ng packages. The espeak* should expand to espeak-ng as well. + +But when espeak was pruged, the espeak-ng package was untouched. So there seems to be a mechanism that protects against such wild card expansions. + +### So, should you use apt remove or apt purge? + +Few people just get addicted to using apt purge. + +In my opinion, apt remove is what you should use most of the time. Use apt purge when you have to get rid of the custom configuration files. + +In both cases, you’ll have to remove the remaining configuration files from the user’s home directory and run apt autoremove to eliminate any leftover dependencies. + +Over to you now. Do you understand the difference between apt remove and apt purge better now? Which one do you prefer to use? + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/apt-remove/ + +作者:[Abhishek Prakash][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/apt-remove/ +[2]: https://itsfoss.com/wp-content/uploads/2022/11/mplayer-before-removal.png +[3]: https://itsfoss.com/wp-content/uploads/2022/11/apt-uninstall-package-ubuntu.png +[4]: https://itsfoss.com/wp-content/uploads/2022/11/files-after-mplayer-removal.png +[5]: https://itsfoss.com/wp-content/uploads/2022/11/apt-purge-command.png +[6]: https://itsfoss.com/wp-content/uploads/2022/11/files-after-apt-purge.png +[7]: https://itsfoss.com/install-discord-linux/ +[8]: https://itsfoss.com/wp-content/uploads/2022/11/apt-purge-wild-card.png diff --git a/sources/tech/20221123.1 ⭐️⭐️ Build an interactive timeline in React with this open source tool.md b/sources/tech/20221123.1 ⭐️⭐️ Build an interactive timeline in React with this open source tool.md new file mode 100644 index 0000000000..3c5449b6da --- /dev/null +++ b/sources/tech/20221123.1 ⭐️⭐️ Build an interactive timeline in React with this open source tool.md @@ -0,0 +1,54 @@ +[#]: subject: "Build an interactive timeline in React with this open source tool" +[#]: via: "https://opensource.com/article/22/11/react-timeline-planby" +[#]: author: "Karol Kozer https://opensource.com/users/karolkozer" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Build an interactive timeline in React with this open source tool +====== + +For several years, I worked in the TV online and video-on-demand (VOD) industry. While working on a scheduler web application, I realized that there were no good solutions for electronic program guides (EPG) and scheduling. Admittedly, this is a niche feature for most web developers, but it's a common requirement for TV applications. I've seen and analyzed a number of websites that have implemented their own EPG or timeline, and I often wondered why everyone seemed to be inventing their own solutions instead of working on a shared solution everyone could use. And that's when I started developing Planby. + +[Planby][1] is a React (JavaScript) component to help you create schedules, timelines, and electronic program guides (EPG) for online TV and video-on-demand (VOD) services, music and sporting events, and more. Planby uses a custom virtual view, allowing you to operate on a lot of data, and present it to your viewers in a friendly and useful way. + +Planby has a simple API that you can integrate with third party UI libraries. The component theme is customised to the needs of the application design. + +### Timeline performance + +The most significant thing when implementing a timeline feature is performance. You're potentially handling basically an endless stream of data across many many different channels. Applications can struggle with refreshing, moving, and scrolling. You want the user's interactions with the content to be fluid. + +There's also the potential for poor design. Sometimes, an app implements an EPG timeline in the form of a list that you must scroll vertically, meaning you must click on buttons to move left and right through time, which quickly becomes tiring. What's more, sometimes customization for interacting with an EPG (such as rating, choosing your favorite channels, reading right-to-left (RTL), and so on) aren't available at all, or when they are, they cause performance issues. + +Another problem I often face is that an app is too verbose in its data transfer. When an app requests data _while_ you scroll through the EPG, the timeline feels slow and can even crash. + +### What is Planby? + +This is where Planby comes in. Planby is built from scratch, using React and Typescript and a minimal amount of resources. It uses a custom virtual view, allowing you to operate on vast amounts of data. It displays programs and channels to the user, and automatically positions all elements according to hours and assigned channels. When a resource contains no content, Planby calculates the positioning so the time slots are properly aligned. + +Planby has a simple interface and includes all necessary features, such as a sidebar, the timeline itself, a pleasant layout, and live program refreshing. In addition, there's an optional feature allowing you to hide any element you don't want to include in the layout. + +Planby has a simple API that allows you as the developer to implement your own items along with your user preferences. You can use Planby's theme to develop new features, or you can make custom styles to fit in with your chosen design. You can easily integrate with other features, like a calendar, rating options, a list of user favorites, scroll, "now" buttons, a recording schedule, catch-up content, and much more. What's more, you can add custom global styles, including register-transfer level (RTL) functionality. + +And best of all, it uses the open source MIT licensed. + +### Try Planby + +If you would like to try Planby, or just to learn more about it, visit the [Git repository][1]. There, I've got some examples of what's possible and you can read the documentation for the details. The package is also available with `npm`. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/react-timeline-planby + +作者:[Karol Kozer][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/karolkozer +[b]: https://github.com/lkxed +[1]: https://github.com/karolkozer/planby diff --git a/sources/tech/20221124.0 ⭐️ 5 NeoVim GUI Editors You Could Try If You are Not a Total Terminal Junkie.md b/sources/tech/20221124.0 ⭐️ 5 NeoVim GUI Editors You Could Try If You are Not a Total Terminal Junkie.md new file mode 100644 index 0000000000..e8fcabb8c0 --- /dev/null +++ b/sources/tech/20221124.0 ⭐️ 5 NeoVim GUI Editors You Could Try If You are Not a Total Terminal Junkie.md @@ -0,0 +1,139 @@ +[#]: subject: "5 NeoVim GUI Editors You Could Try If You are Not a Total Terminal Junkie" +[#]: via: "https://itsfoss.com/neovim-gui-editors/" +[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +5 NeoVim GUI Editors You Could Try If You are Not a Total Terminal Junkie +====== + +Vim is awesome. NeoVim is newer and even more awesome. Both Vim and NeoVim are terminal-based text editors with similar features. + +If you are someone who is accustomed to using [GUI text editors like VS Code][1] and wish to have the similar functionality that NeoVim provides, you should explore GUI options. + +Although I know you can use NeoVim as an add-on for your current text editor, working directly with NeoVim is much more effective and convenient for managing plugins. + +There are a few different options available when choosing a NeoVim GUI, and I have put together a list of some of the best ones below. + +### 1. Neovide + +![neovide][2] + +**Key Features:** + +- Animated cursor +- Smooth scrolling +- Animated windows +- Blurred floating windows +- Emoji support + +[Neovide][3] aims to be a no-nonsense graphical user interface for NeoVim. + +While you won’t see many graphical elements, it only adds some GUI features, such as animations, using a library called Skulpin to render animations. + +And my favorite part of using Neovide is having an animated cursor and smooth scrolling. I mean, have a look at this: + +Looks cool. Right? + +### 2. Neovim Qt + +![neovim qt][4] + +**Key Features:** + +- Hover features +- Multiple GUI tabs +- Auto tab completion +- Cross-platform support + +As the name suggests, [Neovim Qt][5] is built with the Qt5 library, which you’ll often see being used by KDE. Nothing too fancy, adds some additional GUI features like multiple tabs, auto-tab completion, and more. + +So if you are already using Qt5 libraries and want a minimal GUI for NeoVim, this would work like a charm and save you some dependencies. + +**Recommended:**[Vim vs Nano: What Should You Choose?][6] + +### 3. Uivonim + +![uivonim][7] + +**Key Features:** + +- WebGL GPU rendering and multithreading +- Support for VSCode extensions +- Nyancat (ANSI-text program for classic cat animation) +- Hover and code actions + +[Uivonim][8] is a fork of Veonim (A simple IDE built on VSCode plugins and NeoVim) written in electron, making it the perfect choice if you switch from VSCode. + +And the only goal of uivonim is to provide a rich NeoVim experience that supports the latest features of NeoVim, including floating windows, built-in LSP, and more. You do not need to rely on VSCode extensions to get these features. + +[Uivonim][8] + +### 4. FVim + +![fvim][9] + +**Key Features:** + +- Detach windows (using `Ctrl+w and GE`). +- Custom popup menu entry icons. +- HiDPI support. +- GPU acceleration. + +[FVim][10] is a cross-platform GUI for NeoVim built with F# + Avalonia that comes with some groundbreaking features such as high-performance rendering (60FPS on 4K display). + +And I often use the detach window feature as I prefer to have separate windows for different text files. Also, if you are an advanced remote user, FVim won’t let you down either. + +### 5. Goneovim + +![goneovim][11] + +**Key Features:** + +- Support for a terminal with bash and zsh +- Minimap +- Animated cursor +- High DPI scaling +- External float window + +As its name suggests, [Goneovim][12] is written in GO and is a fork of Gonvim. And offers enough GUI features to get your job done such as an animated cursor, pixel scrolling, and more. + +And it does not compromise on getting you basic text editing features, such as drag-and-drop support for text files. + +**Useful Read**: [How to Install Latest Vim on Ubuntu Linux][13] + +### Wrapping Up + +This was my take on what are some good options when it comes to GUI for NeoVim and I hope you found what you were looking for. + +If I missed any of your favorites, let me know your thoughts in the comments. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/neovim-gui-editors/ + +作者:[Sagar Sharma][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/sagar/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/best-modern-open-source-code-editors-for-linux/ +[2]: https://itsfoss.com/wp-content/uploads/2022/11/neovide.png +[3]: https://neovide.dev/index.html +[4]: https://itsfoss.com/wp-content/uploads/2022/11/neovim-qt.png +[5]: https://github.com/equalsraf/neovim-qt +[6]: https://itsfoss.com/vim-vs-nano/ +[7]: https://itsfoss.com/wp-content/uploads/2022/11/uivonim.png +[8]: https://github.com/smolck/uivonim +[9]: https://itsfoss.com/wp-content/uploads/2022/11/fvim-1.png +[10]: https://github.com/yatli/fvim +[11]: https://itsfoss.com/wp-content/uploads/2022/11/goneovim-1.png +[12]: https://github.com/akiyosi/goneovim +[13]: https://itsfoss.com/install-latest-vim-ubuntu/ diff --git a/sources/tech/20221124.1 ⭐️ How to Merge PDF Files in Linux.md b/sources/tech/20221124.1 ⭐️ How to Merge PDF Files in Linux.md new file mode 100644 index 0000000000..6663b4731b --- /dev/null +++ b/sources/tech/20221124.1 ⭐️ How to Merge PDF Files in Linux.md @@ -0,0 +1,182 @@ +[#]: subject: "How to Merge PDF Files in Linux" +[#]: via: "https://itsfoss.com/merge-pdf-linux/" +[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Merge PDF Files in Linux +====== + +Got several PDFs on the same subject and now you want to combine them into a single PDF? + +Or perhaps you need to upload a single file consisting of different files? Many government and academic portals require that. + +As a Linux user, if you are in a situation where you need to merge PDFs, this tutorial will help you out. + +In this tutorial, I’ll share three methods of combining multiple PDF files: + +- Using PDF Tricks GUI tool +- Using LibreOffice (allows you to select pages as well) +- Using the ImageMagick command line tool (Can a Linux tutorial be completed without the terminal method?) + +You can read them all and pick the one that works best for you. + +### Method 1: Use PDF Tricks GUI tool to merge PDF in Linux + +After experimenting with several GUI tools, I found that the PDF Tricks was straightforward to use and easy to navigate. + +Furthermore, it includes additional functionality beyond only merging PDF files, including: + +- Compress PDFs. +- Split PDFs. +- Compress PDFs (into JPG, PNG, and text formats). + +It is available as a [Flatpak][1]. Please [ensure that your Linux system has Flatpak support enabled][2]. + +I am sharing the steps for enabling Flatpak on Ubuntu: + +``` +sudo apt install flatpak +flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo +``` + +Now, use the below command to install PDF Tricks in your system: + +``` +flatpak install flathub com.github.muriloventuroso.pdftricks +``` + +Once you are done with the installation, open the PDF Tricks application from the system menu. + +On the first run, you will get you a list of actions you can perform with this tool. To merge PDF files, go with the third option, obviously. + +![merge pdf files using in ubuntu][3] + +In the next step, click on **Add file** and select the files you want to merge: + +![choose files to merge][4] + +Once you select files, click on the **Merge** button: + +![click on merge button][5] + +And it will open the default file manager of your system. Here you can select where you want to save the merged file and what it should be named: + +![locate and name the merged pdf file][6] + +And that’s it. The combined pdf has been saved. + +And if you are looking for a tool, we have a list of the [best PDF readers that you can use to read and edit PDF files.][7] + +**Related read**: List of [PDF editors available for Linux][7]. + +### Method 2: Merge PDF Files using LibreOffice + +The awesome LibreOffice is capable of handling many PDF related tasks. You can even [edit PDF files with LibreOffice Draw tool][8] for adding a digital signature, adding text, and much more. + +The good thing is that you don’t need to install another application. LibreOffice is already installed on most distributions, if not all. + +Open the file manager and select the PDF files that you want to merge. + +**Right-click on selected files > Open With Other Application > LibreOffice Draw from there**, and it will open selected PDF files. + +And it will open every PDF file you selected in a separate LibreOffice Draw instance: + +![open pdf file in libreoffice][9] + +Now, you have to **select individual pages or entire PDF file** (using Ctrl + A) from the left preview bar and drop it to the preview bar of the file that you want to combine with: + +Once you are done with drag and drop, click on the 5th option from the top left, labeled as **Export Directly as PDF**: + +![export directly as pdf in libreoffice][10] + +And it will open a file manager from where you can locate and name the file: + +![save merged file from libreoffice][11] + +And that’s it! + +### Bonus Tip: Merge PDFs in the command line [For advanced users] + +What kind of Linux tutorial would it be if I didn’t include the command line method? To merge PDF files in the command line, you can use ImageMagick. + +ImageMagick is actually an image-related tool. PDF files are essentially images and this is why ImageMagick can work with them. + +You probably don’t even need to [install ImageMagick][12] as it is already installed in most distros by default. + +For example, I will be adding 3 PDF files named pdf-1.pdf, pdf-2.pdf, and pdf-3.pdf and will name the final merged PDF file output as MergedFile.pdf (how clever): + +``` +convert pdf-1.pdf pdf-2.pdf pdf-3.pdf MergedFile.pdf +``` + +#### Troubleshooting no images defined + +If you see a policy error like this: + +![convert im6.q16: attempt to perform an operation not allowed by the security policy `pdf' @ error constitute.c iscoderauthorized 421.][13] + +The problem is quite easy to solve. You just have to make minor changes in the ImageMagick policy file. + +Open the policy file for editing: + +``` +sudo nano /etc/ImageMagick-6/policy.xml +``` + +And look for the following line: + +``` + +``` + +Now, you have to change the `rights="none"` to `rights=read|write`: + +``` + +``` + +![change policy in imagemagick to merge pdf files][14] + +Save the changes, and now you can easily merge files using ImageMagick: + +![merge pdf files using imagemagick in linux terminal][15] + +### Wrapping Up + +Now you know several ways of combining PDF files in Linux. Chances are that the merged PDF file is big in size. If you have to upload the merged PDF file on a portal that has size restrictions, you can [compress the PDF file][16]. + +Let me know if you face any issues with above discussed methods. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/merge-pdf-linux/ + +作者:[Sagar Sharma][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/sagar/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/what-is-flatpak/ +[2]: https://itsfoss.com/flatpak-guide/ +[3]: https://itsfoss.com/wp-content/uploads/2022/11/merge-pdf-files-using-in-ubuntu-1.png +[4]: https://itsfoss.com/wp-content/uploads/2022/11/choose-files-to-merge.png +[5]: https://itsfoss.com/wp-content/uploads/2022/11/click-on-merge-button.png +[6]: https://itsfoss.com/wp-content/uploads/2022/11/locate-and-name-the-merged-pdf-file.png +[7]: https://itsfoss.com/pdf-editors-linux/ +[8]: https://itsfoss.com/edit-pdf-files-ubuntu-linux/ +[9]: https://itsfoss.com/wp-content/uploads/2022/11/open-pdf-file-in-libreoffice.png +[10]: https://itsfoss.com/wp-content/uploads/2022/11/export-directly-as-pdf-in-libreoffice.png +[11]: https://itsfoss.com/wp-content/uploads/2022/11/save-merged-file-from-libreoffice.png +[12]: https://itsfoss.com/install-imagemagick-ubuntu/ +[13]: https://itsfoss.com/wp-content/uploads/2022/11/convert-im6.q16-attempt-to-perform-an-operation-not-allowed-by-the-security-policy-pdf-@-error-constitute.c-iscoderauthorized-421.0a.png +[14]: https://itsfoss.com/wp-content/uploads/2022/11/change-policy-in-imagemagick-to-merge-pdf-files.png +[15]: https://itsfoss.com/wp-content/uploads/2022/11/merge-pdf-files-using-imagemagick-in-linux-terminal.png +[16]: https://itsfoss.com/compress-pdf-linux/ diff --git a/sources/tech/20221124.3 ⭐️⭐️ 10 Best Steam Games on Sale for Linux Users 🎮(November 2022).md b/sources/tech/20221124.3 ⭐️⭐️ 10 Best Steam Games on Sale for Linux Users 🎮(November 2022).md new file mode 100644 index 0000000000..fe0621e77e --- /dev/null +++ b/sources/tech/20221124.3 ⭐️⭐️ 10 Best Steam Games on Sale for Linux Users 🎮(November 2022).md @@ -0,0 +1,213 @@ +[#]: subject: "10 Best Steam Games on Sale for Linux Users 🎮(November 2022)" +[#]: via: "https://news.itsfoss.com/best-steam-games-linux-sale/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +10 Best Steam Games on Sale for Linux Users 🎮(November 2022) +====== + +[Gaming on Linux][1] has been evolving over the years, thanks to Steam's **Proton** and Wine and many other tools like **Bottles, Lutris, and Heroic Game Launcher**. + +This means even if a game is unavailable natively on Linux, you can still play some of them thanks to [Steam Play][2]. + +That's great. Now, you would need some great discounts on games to give them a try, right? + +Well, you are in luck; the yearly **Steam Autumn Sale** is live right now (until **29th November**), with offers on much of the catalog. + +I have picked a few games for Linux systems (even if they are not officially supported) that might pique your interest. + +Let's get started. 🎮 + +> 💡 This article will be updated regularly (monthly/quarterly) when there are discounts on games. + +**Note:** _Regional pricing can differ. The prices mentioned are in US dollars._ + +### 1. The Witcher 3: Wild Hunt + +![the witcher 3 wild hunt][3] + +**Steam Deck status**: _Verified_ ✔️ + +Follow the life of a Witcher as war rages on in the Northern Realms. + +This open-world RPG game takes you deep into the conflicts between humans and non-humans. + +It is set to receive a remastered release on 14th December with better visuals and various fixes, so hurry up and grab it. + +It's **80% off** on Steam right now at **$7.99.** + +[The Witcher 3: Wild Hunt][4] + +### 2. Kena: Bridge of Spirits + +![kena bridge of spirits][5] + +**Steam Deck status**: _Verified_ ✔️ + +This is a story-driven, action-adventure game that follows the journey of Kena, a young Spirit Guide searching for the sacred Mountain Shrine. + +This game offers fast-paced combat with exciting puzzles to solve along the way. + +It's **50% off** on Steam right now at **$19.99**. + +[Kena: Bridge of Spirits][6] + +### 3. Control + +![control][7] + +**Steam Deck status**: _Verified_ ✔️ + +It is a third-person action-adventure game that promises to keep you on your toes. + +You fight a 'corruptive presence' that has invaded the 'Federal Bureau of Control' using your powers. + +It's **75% off** on Steam right now at **$9.99** + +[Control][8] + +### 4. Carrion (Native Linux) + +![Carrion - Release Date Announcement Trailer][9] + +**Steam Deck status**: _Verified_ ✔️ + +Want to be the reason to scare others? + +Then Carrion is the game for you! + +It is a reverse horror game that lets you play as a creature of unknown origins, who is on the hunt, stalking and consuming those who imprisoned it. + +It's **60% off** on Steam right now at **$7.99.** + +[CARRION][10] + +### 5. Death Stranding + +![DEATH STRANDING DIRECTOR'S CUT PC - Launch Trailer - [ESRB] 4K][11] + +**Steam Deck status**: _Verified_ ✔️ + +One of Hideo Kojima's works, this game takes you on a journey through a future where a mysterious event called the 'Death Stranding' had opened a doorway between the living and the dead. + +It's **40% off** on Steam right now at **$23.99**. + +[DEATH STRANDING][12] + +### 6. Stray + +![stray][13] + +**Steam Deck status**: _Verified_ ✔️ + +In this game, you take on the role of a stray cat who has been separated from its family. + +Set in a Cyberpunk world filled with robots, you face various obstacles, puzzles, and adversaries along the way. + +It's **20% off** on Steam right now at **$23.99.** + +[Stray][14] + +### 7. Ghostwire: Tokyo + +![Ghostwire: Tokyo - Official Gameplay Deep Dive][15] + +**Steam Deck status**: _Playable_ 🟡 + +Set in Tokyo, it is an open-world horror game that lets you use an array of elemental abilities to solve the mystery behind the disappearance of the people of Tokyo. + +It's **60% off** on Steam right now at **$23.99**. + +[Ghostwire: Tokyo][16] + +### 8. Valheim (Native Linux) + +![valheim][17] + +**Steam Deck status**: _Verified_ ✔️ + +This is an exploration, building, and survival game for up to 10 players set in a procedurally-generated world inspired by Viking culture. + +It's **30% off** on Steam right now at **$13.99**. + +[Valheim][18] + +### 9. Scorn + +![scorn][19] + +**Steam Deck status**: _Unsupported_ 🚫 + +Not for the faint-hearted, this is a first-person horror adventure game set to give you nightmares! + +Designed in such a way that you will feel isolated and lost inside the game. It features different interconnected regions for you to explore. + +It's **20% off** on Steam right now at **$31.99**. + +[Scorn][20] + +### 10. Amnesia: Rebirth (Native Linux) + +![Amnesia: Rebirth : Gameplay Reveal Trailer][21] + +**Steam Deck status**: _Verified_ ✔️ + +This is also a first-person horror game that is not for the faint-hearted. + +It takes you on a terrifying journey through the Algerian desert to uncover your character's past, Tasi Trianon. + +It's **70% off** on Steam right now at **$8.99.** + +[Amnesia: Rebirth][22] + +**Game Over?** No, this list does not represent all the awesome games discounted on the Steam store for Linux. + +You will find massive discounts on several amazing titles, such as [Red Dead Redemption 2][23], [Cyberpunk 2077][24], [Euro Truck Simulator 2][25], and more. + +And if you like getting games at a discount, try the [Humble Bundle membership][26]. They give several PC games for free every month. Some, but not all, such games are also supported on Linux. + +_💬 These are just some of my best picks I want you to try. If you have suggestions, feel free to share them in the comments box below._ + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/best-steam-games-linux-sale/ + +作者:[Sourav Rudra][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/sourav/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/linux-gaming-guide/ +[2]: https://itsfoss.com/steam-play/ +[3]: https://news.itsfoss.com/content/images/2022/11/Witcher_3.jpg +[4]: https://store.steampowered.com/app/292030/The_Witcher_3_Wild_Hunt/ +[5]: https://news.itsfoss.com/content/images/2022/11/Kena.jpg +[6]: https://store.steampowered.com/app/1954200/Kena_Bridge_of_Spirits/ +[7]: https://news.itsfoss.com/content/images/2022/11/Control.jpg +[8]: https://store.steampowered.com/app/870780/Control_Ultimate_Edition/ +[9]: https://youtu.be/EbXBqae_iJI +[10]: https://store.steampowered.com/app/953490/CARRION/ +[11]: https://youtu.be/s2GUQcbz_8Q +[12]: https://store.steampowered.com/app/1850570/DEATH_STRANDING_DIRECTORS_CUT/ +[13]: https://news.itsfoss.com/content/images/2022/11/Stray.jpg +[14]: https://store.steampowered.com/app/1332010/Stray/ +[15]: https://youtu.be/vGScfDMeId8 +[16]: https://store.steampowered.com/app/1475810/Ghostwire_Tokyo/ +[17]: https://news.itsfoss.com/content/images/2022/11/Valheim.jpg +[18]: https://store.steampowered.com/app/892970/Valheim/ +[19]: https://news.itsfoss.com/content/images/2022/11/Scorn.jpg +[20]: https://store.steampowered.com/app/698670/Scorn/ +[21]: https://youtu.be/jChsLiRvWXw +[22]: https://store.steampowered.com/app/999220/Amnesia_Rebirth/ +[23]: https://store.steampowered.com/app/1174180/Red_Dead_Redemption_2/ +[24]: https://store.steampowered.com/app/1091500/Cyberpunk_2077/ +[25]: https://store.steampowered.com/app/227300/Euro_Truck_Simulator_2/ +[26]: https://www.humblebundle.com/membership?partner=itsfoss diff --git a/sources/tech/20221125.2 ⭐️ Rnote An Open-Source Drawing App for Notes and Annotation.md b/sources/tech/20221125.2 ⭐️ Rnote An Open-Source Drawing App for Notes and Annotation.md new file mode 100644 index 0000000000..e4284fe38c --- /dev/null +++ b/sources/tech/20221125.2 ⭐️ Rnote An Open-Source Drawing App for Notes and Annotation.md @@ -0,0 +1,108 @@ +[#]: subject: "Rnote: An Open-Source Drawing App for Notes and Annotation" +[#]: via: "https://itsfoss.com/rnote/" +[#]: author: "Ankush Das https://itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Rnote: An Open-Source Drawing App for Notes and Annotation +====== + +**_Brief:_**_Rnote allows you to take notes, draw, and annotate documents. Sounds like you need it? Let us explore more._ + +We have featured numerous note-taking applications, but options that support handwritten notes are a handful. + +Rnote is one such helpful application that lets you take handwritten notes and annotate documents/pictures. + +Of course, you need a drawing tablet or a setup with a stylus to use Rnote. + +### Rnote: Vector-based Drawing App for Sketching and Handwritten Notes + +![rnote screenshot][1] + +Rnote is an impressive open-source app written in Rust and GTK 4. + +It provides an adaptive UI focused on stylus input. It looks pretty minimal and yet offers some of the essential features that one would need for handwritten notes. + +Let me highlight some of the things it can do. + +**Recommended Read**: [**Best Note-Taking Apps for Linux Users**][2] + +### Features of Rnote + +![rnote settings][3] + +[Rnote][4] is a simple yet capable sketching/note-taking app. Some features include: + +- Supports pressure-sensitive stylus input with various stroke styles +- Add different shapes with the shape tool +- A selection tool to move, rotate, resize, and modify the content you add/draw. +- Document expand layouts +- Customizable page format +- Customizable background colors, patterns, and sizes +- Pen sound support for feedback +- Reconfigurable stylus button shortcuts +- Integrated workspace browser for quick media file access +- Drag and drop support +- Clipboard support +- Common page formats supported (A6, A5, US letter, etc) +- Import from PDF, bitmap, and SVG files. +- Native .rnote file to save/load documents. +- Export to SVG and PDF supported +- Autosave functionality +- Dark/Light mode + +The developers note that the native file format used by Rnote may not be stable enough for compatibility between newer versions of the application. + +So, it is best to export your work when you are done before upgrading Rnote to its latest version. + +In addition to its features, you get a good user experience with the available options. It does not feel overwhelming, and you can access all the tools quickly. + +Some customization is available to hide the scrollbars, change the cursor, and tweak the drawing cursor. + +You can also adjust the time interval for autosave to kick in, which should come in handy for various use cases. + +![rnote screenshot 1][5] + +### Installing Rnote on Linux + +Rnote is available as a Flatpak on [Flathub][6]. So, as long as you have [Flatpak enabled on your system][7], you can install it on any Linux distribution. + +You can find it in your software center (if Flatpak integration has been enabled) or type in the following command to get it installed: + +``` +flatpak install flathub com.github.flxzt.rnote +``` + +To explore more about Rnote, head to its [GitHub page][8]. + +### Wrapping Up + +Rnote is actively developed and making good progress with its feature set. If you like Rnote, you might want to look at [Xournal++][9], another app that enables you to take handwritten notes. + +_Do you know of any other exciting apps like Rnote? What do you think of Rnote? Share your thoughts in the comments down below._ + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/rnote/ + +作者:[Ankush Das][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/wp-content/uploads/2022/11/rnote-screenshot.png +[2]: https://itsfoss.com/note-taking-apps-linux/ +[3]: https://itsfoss.com/wp-content/uploads/2022/11/rnote-settings.png +[4]: https://rnote.flxzt.net +[5]: https://itsfoss.com/wp-content/uploads/2022/11/rnote-screenshot-1.png +[6]: https://flathub.org/apps/details/com.github.flxzt.rnote +[7]: https://itsfoss.com/flatpak-guide/ +[8]: https://github.com/flxzt/rnote +[9]: https://xournalpp.github.io diff --git a/sources/tech/20221125.3 ⭐️⭐️ Leaving Twitter for Mastodon Here are the 7 Best Mastodon Instances You Can Join.md b/sources/tech/20221125.3 ⭐️⭐️ Leaving Twitter for Mastodon Here are the 7 Best Mastodon Instances You Can Join.md new file mode 100644 index 0000000000..b0ec4f21e1 --- /dev/null +++ b/sources/tech/20221125.3 ⭐️⭐️ Leaving Twitter for Mastodon Here are the 7 Best Mastodon Instances You Can Join.md @@ -0,0 +1,170 @@ +[#]: subject: "Leaving Twitter for Mastodon? Here are the 7 Best Mastodon Instances You Can Join" +[#]: via: "https://itsfoss.com/best-mastodon-instances/" +[#]: author: "Ankush Das https://itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Leaving Twitter for Mastodon? Here are the 7 Best Mastodon Instances You Can Join +====== + +Leaving Twitter after Elon Musk’s takeover? Well, you are not alone. Many users have decided to leave Twitter for a different platform. + +Whether you entirely leave the platform or not is up to you. However, if you are looking for an alternative, **Mastodon** is the one you should pick. + +### What Is Mastodon? + +![x mastodon instances to join][1] + +Mastodon is a **decentralized open-source social media platform**. The highlights include the following: + +- It is an independent platform, not under the control of a single individual or a company. +- No algorithm that collects/analyzes the pattern of your usage. +- You get total control of the platform, which can be used to build a customized experience for your community. +- No ads. + +It primarily aims to be an open-source replacement to Twitter (considering posts were called “**toots**” similar to “**tweets**“) and the post layout can look a bit similar. Gradually it is evolving as an open-source social media platform all around. + +You can deploy Mastodon on your server (taking control of your data) or sign up on any available Mastodon instances (hosted by someone else). Every server is run by individuals and passionate users who dislike using platforms run by tech giants. + +We already had an article [explaining what Mastodon is][2] by a server admin if you wanted more in-depth details. + +### What Are Mastodon Servers or Instances? + +![itsfoss mastodon][3] + +Mastodon is an open-source social media software. + +Anyone can host it on their servers. Sometimes it is a group of individuals, an individual, or an entity. They are responsible to maintain and moderate it. + +Just think of it as “communities” instead of “servers” or an instance. There are many Mastodon communities run by a variety of people. You can join any available communities and interact with users across the Mastodon network. + +**You can always find servers** using [Mastodon’s official server portal][4]. + +If you are a user and want to use the platform to post stuff, follow other users, and engage with the community, you do not need to worry about how it all works. + +However, it is essential to choose the right community, as **every server has different rules, guidelines, and preferences**. + +To help you save time, I recommend some of the **best (or most popular) Mastodon servers** you can join for a good experience **in no particular order of ranking**. + +Unlike other social media platforms, Mastodon servers are mostly community-powered. So, we encourage you to donate/help the server administrators to continue enjoying the platform. + +### 1. Fosstodon + +![fosstodon][5] + +[Fosstodon][6] is the best Mastodon instance for **Linux users and open-source enthusiasts**. It is not one of the most popular options, but it is good. + +You can discuss anything you like as long as you follow its code of conduct; the focus is on free and open-source software. If you need like-minded users to discuss the same, Fosstodon is an excellent option. + +I have been a user of this server for a couple of years, and you will find engaging/valuable posts. + +### 2. Mstdn.social + +![mstdn social][7] + +[Mstdn.social][8] is one of the most exciting Mastodon server instances. The administrator of this instance (**stux**) is super active and welcoming. + +You can discuss anything here using the language of your choice, whether it is about technology, general stuff, or cute cat pictures. The admin regularly shares pictures of his cats; you might want to give him a follow just for that. + +### 3. Mas.to! + +![mas to][9] + +[Mas.to][10] is yet another interactive server where you can have fun posting various content. + +It features a good number of active users. So, you can always expect things to be engaging and active. You should not have any issues as long as you abide by the server rules. + +At the time of writing this, Mas.to temporarily stopped accepting new user registrations to increase the server capacity. You might want to keep an eye on this. + +### 4. Vivaldi Social + +![vivaldi mastodon][11] + +If you are not confident about relying on Mastodon servers run by individuals, you might want to opt to use [Vivaldi Social][12]. + +Built by the makers of [Vivaldi Browser][13]. + +It is good to see companies like Vivaldi promoting the adoption of open-source and decentralized tech through this instance. + +Sure, you will find Vivaldi’s branding replacing the Mastodon logo and posts by the Vivaldi team promoting their services occasionally, and that’s it. You will not find any advertisements. Also, it allows you to discuss anything in general, not restricted to a single language. + +### 5. Mastodon.art + +![mastodon art][14] + +[Mastodon.art][15] is a server that caters to all kinds of art (illustration, paintings, etc.). The server does not allow NFTs / Crypto Art. + +This server should be an excellent place to start if you want a feed full of creative stuff. At the time of writing this, Mastodon.art does not accept new sign-ups until the waitlist is cleared. You can check back in sometime to try creating an account with them. + +### 6. Techhub.social + +![techhub][16] + +[Techhub.social][17] aims to cater to users passionate about all technologies. + +Anyone can join the server if you follow the server rules. You do not have to be a tech geek to join the server, but the primary focus remains technology. + +### 7. Mastodon.lol + +![mastodon lol][18] + +[Mastodon.lol][19] is for you if you want a server that aims to welcome members of LBGTQ+, hackers, and a similar group of users. + +Just like a few other servers, Mastodon.lol is overwhelmed by new user registrations. However, the administration plans to re-open the registrations once new moderators have been added to the server. + +### Frequently Asked Questions (FAQ) + +- **Are Mastodon servers privacy-friendly?** + +Yes, Mastodon is designed in a way where no advanced algorithm collects any form of data to serve you advertisements.For the rest of the stuff, the server administrator has access to the data that you provide to them when signing up and other general statistics (number of posts, likes, IP address, email, etc). So, you may use [VPN services][20] or [Tor][21] and various other [privacy tools][22] to keep your identity anonymous.You might want to check the privacy policy for the server you intend to join. + +- **Does Mastodon allow NSFW content?** + +Some servers do, and some servers do not. You must read the rules and regulations of the server.A feature to mark content as sensitive gives users a warning before they try to see your post. + +- **What happens when a Mastodon server is no longer available?** + +Considering Mastodon servers are run by individuals, some may have hiccups.If you want to prepare for the d-day, you can always use the **account options to move to a different account (or from a different one).** You can find it under **Account → Account settings → Move to a different account (or from)**. + +- **Can I talk to my friends from another Mastodon server/instance?** + +No matter what server/instance you choose to join, you can talk to any user from any server/instance.The entire Mastodon network consists of all the servers out there. You do not need to join another server to be able to interact with another user. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/best-mastodon-instances/ + +作者:[Ankush Das][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/wp-content/uploads/2022/11/x-mastodon-instances-to-join.png +[2]: https://itsfoss.com/mastodon-open-source-alternative-twitter/ +[3]: https://itsfoss.com/wp-content/uploads/2022/11/itsfoss-mastodon.jpg +[4]: https://joinmastodon.org/servers +[5]: https://itsfoss.com/wp-content/uploads/2022/11/fosstodon.jpg +[6]: https://fosstodon.org/explore +[7]: https://itsfoss.com/wp-content/uploads/2022/11/mstdn-social.jpg +[8]: https://mstdn.social/about +[9]: https://itsfoss.com/wp-content/uploads/2022/11/mas-to.jpg +[10]: https://mas.to/about +[11]: https://itsfoss.com/wp-content/uploads/2022/11/vivaldi-mastodon.jpg +[12]: https://social.vivaldi.net/about +[13]: https://itsfoss.com/install-vivaldi-ubuntu-linux/ +[14]: https://itsfoss.com/wp-content/uploads/2022/11/mastodon-art.jpg +[15]: https://mastodon.art/about +[16]: https://itsfoss.com/wp-content/uploads/2022/11/techhub.png +[17]: https://techhub.social/about +[18]: https://itsfoss.com/wp-content/uploads/2022/11/mastodon-lol.jpg +[19]: https://mastodon.lol/about +[20]: https://itsfoss.com/best-vpn-linux/ +[21]: https://itsfoss.com/install-tar-browser-linux/ +[22]: https://itsfoss.com/privacy-tools/ diff --git a/sources/tech/20221126.0 ⭐️⭐️ Pop OS Review Reasons why its an all-rounder Linux distro.md b/sources/tech/20221126.0 ⭐️⭐️ Pop OS Review Reasons why its an all-rounder Linux distro.md new file mode 100644 index 0000000000..91ab28fcb9 --- /dev/null +++ b/sources/tech/20221126.0 ⭐️⭐️ Pop OS Review Reasons why its an all-rounder Linux distro.md @@ -0,0 +1,158 @@ +[#]: subject: "Pop OS Review: Reasons why its an all-rounder Linux distro" +[#]: via: "https://www.debugpoint.com/pop-os-review/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Pop OS Review: Reasons why its an all-rounder Linux distro +====== + +**Few reasons why System76’s Pop OS is the best all-rounder Ubuntu-based Linux distribution.** + +Pop!_OS is a Ubuntu Linux-based derivative developed and created by American computer manufacturer System76 for their lines of hardware devices. System76 sells high-end servers, desktops, laptops and other peripherals. And all of their runs on the Ubuntu variant Pop!_OS. + +Since its inception, the Pop!_OS team has had a different vision of the customized Ubuntu and the default desktop GNOME. + +![][1] + +![Pop OS 22.04 LTS Desktop][2] + +### Pop OS review + +#### Well configured GNOME + +Although, for the past few releases, there have been massive core design changes in the GNOME desktop to modernize itself, moving away from the GNOME 3.38 days. The recently released [GNOME 43][3] is a testament to that. Key changes include completing the GTK4 and libadwaita port, improving mutter changes and creating a newly designed user interface in [quick settings][4] and Files. + +But System76 still features a **customized version of GNOME** today to cater to their commercial needs and make it look more “professional”. And productive, too, while being a well-looking GNOME. + +A few vital built-in features of GNOME which I want to highlight here. + +The super-useful **Auto Tiling** in GNOME desktop work by default. Those who experienced tiling can never go back to non-tiling mode. It helps to efficiently organize your work with open windows and eventually saves time. The Pop!_OS auto-tiling takes care of it by default. + +Again, too much tiling of windows may create problems with smaller screens. To counter that, Pop!_OS also brings auto **stacking of window** features. It makes your windows remain on top of one another, and you can easily stack or unstack them with simple keyboard shortcuts. + +Talking about **Keyboard shortcuts**, the GNOME desktop in Pop!_OS is well coupled with keyboard shortcuts to move, resize windows, quickly search and launch applications. + +![Pop OS Tiling and other options for windows][5] + +#### Productivity Built-in + +![Workspace and Dock - is simple yet powerful][6] + +The **workspace** and the switcher are easy to use with a vertical menu. That gives you easy access whenever you want to look at your open workspaces and applications. The primary dock is well settled at the bottom with usable default shortcuts. + +The settings give you several customization options to change the dock’s behaviour and appearance. Built-in options include **“no dock”, “extended dock up to edges”, and “compact dock”**. All these options are available without needing to install any GNOME extension. + +The **global launcher** in Pop!_OS is a [KDE’s Krunner type search][7]. It can be kicked off with a super key at any time in your workflow. You can search for any app and launch it directly without visiting the application menu. + +![Pop OS Launcher][8] + +#### Perfect for Engineering Work + +The most important of any productive work system is how easy for you to install and remove applications. And not to mention the discovery of apps. + +Pop!_OS features its native app, **Pop!_Shop**, for software management. It is very nicely organized, with categories for all of your needs. + +Furthermore, Flatpak is installed, and **Flathub is added by default**. Basically, you don’t need a “things to do” guide for Pop!_OS. + +For core **engineering, machine learning, data science and AI** – Pop!_Shop has a separate section for discovery and installing software. With just one click, you can set up your engineering environment – without worrying about dependencies and other errors in Linux. + +The same applies to other engineering and science streams, such as Biotech, mobile app development, math modelling and media production. + +Pop!_OS get out of your way and enables your system in no time. + +In addition, thousands of Linux software are compatible with Pop!_OS since it supports deb files, Snap, Flatpak and AppImages. + +![Pop Shop categories][9] + +#### Tweaked to System76 Hardware + Dedicated NVIDIA Support + +It’s 2022, and we all have difficulties getting proper NVIDIA GPU support in Linux because NVIDIA is being NVIDIA. Pop!_OS features a separate installation ISO file, which includes a **proprietary NVIDIA driver** pre-packed so that you can be assured that things should work out of the box. No more following tutorials and running commands to install NVIDIA drivers. + +Furthermore, if you use **high-resolution laptops** or monitors, Pop!_OS has the best support via its settings. + +#### Gaming Ready and Hardware + +Pop!_OS is famous for default gaming support in Linux. Its Pop!_Shop allows you to install **Steam, game hub and Lutris** with just a click of a button. And your system is ready for gaming without worrying about dependencies and other problems. If you are using System76’s own hardware with NVIDIA GPU, you enjoy the full Linux gaming experience. + +For other high-end gaming laptops or desktops, I think Pop!_OS is the best Ubuntu-based Linux distro for gaming today, considering how easy to install and play. No doubt about it. + +#### Security and Privacy Aspects + +Pop!_OS supports **full disk encryption** via the installer. While installing Pop!_OS, it gives you the option to encrypt the entire disk! And you can enable a password to boot into Pop!_OS. + +It’s the only Linux distribution which allows full-disk encryption by default. Pop!_OS does not collect much of your usage data besides simple hardware and OS information. The firmware update is automatic via settings for System76 hardware. + +![Full-disk encryption in Pop OS - during installation][10] + +#### Roadmap and System76 Vision + +Being a distribution backed by a commercial entity has its advantage. For example, you get timely security, software and firmware updates. Although System76 steers Pop!_OS’s direction of its own needs, end users can use it for their own use and work. + +For example, two crucial decisions that System76 took related to Pop!_OS. First, it’s developing a **new Rust-based Linux desktop** environment ground up. The reason is to move away from GNOME desktops and probably to adopt a more modern programming framework for Linux desktops. + +Second, the Pop!_OS release schedule changed after its current release, [Pop!_OS 22.04 LTS][11]. Usually, it follows Ubuntu’s release cycle – twice a year. But from the release of Ubuntu 22.10 onwards, Pop!_OS breaking away from it and will release its own version with all the upstream changes. + +> [Oh No! There Won’t Be A Pop OS 22.10 Release][12] + +The timings of the new release are unknown. But my optimistic guess would be one Pop!_OS release yearly. Although the direction is changing, it matters significantly less for the more extensive user base who want their workstation to work out of the box with a stable Linux distro. + +### Summary + +To summarise, why Pop!_OS might be the most stable & usable Ubuntu-based distro today: + +- Auto Tiling and Auto Stacking by default +- Super useful Keyboard shortcuts +- Not too fancy, but productive GNOME workspace application menu. dock and tray +- Curated Pop Shop to easily install applications for your basic and advanced needs. +- NVIDIA support included in ISO file +- Gaming ready via Pop Shop +- Default support of Flatpak with Flathub and other app formats +- Automatic firmware updates +- Full disk encryption +- Well-defined future roadmap + +### Closing Notes + +I hope this Pop OS review gives you some perspective about this distro and its easy use for the average user base. In addition, it can be well placed as a [beginner Ubuntu-based Linux distro][13]. + +With all the friendship events between Ubuntu and Microsoft and its direction, we don’t know what may happen in a few years. With that in mind, if you or anyone ever gets too overwhelmed with which Linux to try, then try Pop!_OS. It should work out of the box. + +You can download Pop!_OS from the [official website][14]. + +[More Pop OS coverage][15] (all recent articles) + +[Next:How to use journalctl to View and Analyze Systemd Logs [With Examples]][16] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/pop-os-review/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/11/popreview.jpg +[2]: https://www.debugpoint.com/wp-content/uploads/2022/04/Pop-OS-22.04-LTS-Desktop.jpg +[3]: https://www.debugpoint.com/gnome-43/ +[4]: https://www.debugpoint.com/gnome-43-quick-settings/ +[5]: https://www.debugpoint.com/wp-content/uploads/2022/11/Pop-OS-Tiling-and-other-options-for-windows.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2022/11/Workspace-and-Dock-is-simple-yet-powerful.jpg +[7]: https://www.debugpoint.com/top-10-kde-plasma-tips-2021/ +[8]: https://www.debugpoint.com/wp-content/uploads/2021/06/Pop-OS-Launcher.png +[9]: https://www.debugpoint.com/wp-content/uploads/2022/11/Pop-Shop-categories.jpg +[10]: https://www.debugpoint.com/wp-content/uploads/2022/11/Full-disk-encryption-in-Pop-OS-during-installation.jpg +[11]: https://www.debugpoint.com/pop-os-22-04-lts/ +[12]: https://debugpointnews.com/no-pop-os-22-10/ +[13]: https://www.debugpoint.com/linux-distro-beginners/ +[14]: https://pop.system76.com/ +[15]: https://www.debugpoint.com/tag/pop-os +[16]: https://www.debugpoint.com/systemd-journalctl/ diff --git a/sources/tech/20221127.0 ⭐️ lnav Advanced Log File Viewer for Linux Desktops and Servers.md b/sources/tech/20221127.0 ⭐️ lnav Advanced Log File Viewer for Linux Desktops and Servers.md new file mode 100644 index 0000000000..ab3e8307ac --- /dev/null +++ b/sources/tech/20221127.0 ⭐️ lnav Advanced Log File Viewer for Linux Desktops and Servers.md @@ -0,0 +1,127 @@ +[#]: subject: "lnav: Advanced Log File Viewer for Linux Desktops and Servers" +[#]: via: "https://www.debugpoint.com/advanced-log-file-viewer-lnav-ubuntu-linux/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +lnav: Advanced Log File Viewer for Linux Desktops and Servers +====== + +**If you want to debug or troubleshoot any issues, you need an advanced log file viewer like lnav – which works wonders in the terminal for any Linux system.** + +### lnav: Log file viewer + +lnav can unzip all the compressed log files on the fly and merge them together for a nice display. The display is parsed and formatted based on the types of errors/warnings – this helps to quickly glance through the thousands of logs, especially in servers. + +While analysing the logs, timestamps are very important. So lnav merges multiple logs based on timestamps, which is very helpful for tracking down system issues. + +Most of the important log file format detection is built-in; see below: + +- Common Web Access Log format +- CUPS page_log +- Syslog +- Glog +- VMware ESXi/vCenter Logs +- dpkg.log +- uwsgi +- “Generic” – Any message that starts with a timestamp +- Strace +- sudo +- GZIP, BZIP + +That is not all; lnav is also capable of the below features, making it an important app for Linux systems. + +- Filter messages based on regular expression +- A timeline view of errors +- Pretty-Print view- helps to reformat +- Query Log using SQL +- A log is updated in real-time while being searched. +- Syntax highlight via regular expression (say you want to find out an IP address in the entire log) +- Tab completion of any word from the log which is displayed !! + +![lnav-running-in-ubutu][1] + +To view the screenshots of the above features and learn more, visit [this page.][2] + +### How to Install + +This program is available in official Ubuntu, Debian repo. Install it using the following command. + +``` +sudo apt install lnav +``` + +And for Fedora, RHEL users, use the below command: + +``` +sudo dnf install lnav +``` + +Also the developers provides an offline standalone executable which you don’t need to install. You can download the zip from the [GitHub release page][3] and execute as: + +``` +./lnav +``` + +**Note**: It’s also available for macOS which you can find in the above GitHub page. + +### lnav: How to use (Basics) + +The simple command syntax is: + +``` +lnav [options] [logfile1 logfile2 …] +``` + +If you run just lnav from the command, it shows all the logs from your system (/var/log/messages and /var/log/syslog) + +``` +lnav +``` + +To view any specific log file, provide it via the command line: + +``` +lnav /var/log/syslog +``` + +Add timestamp in your log output using -t parameter + +``` +lnav -t /var/log/syslog +``` + +Here are some of the key switches of lnav + +``` +-d file Write debug messages to the given file.-a Load all of the most recent log file types.-r Load older rotated log files as well.-t Prepend timestamps to the lines of data being read inon the standard input.-w file Write the contents of the standard input to this file.-c cmd Execute a command after the files have been loaded.-f path Execute the commands in the given file.-n Run without the curses UI. (headless mode) +``` + +![lnav running in Ubuntu 22.04][4] + +For further reading and exploration, visit the [official documentation][5]. + +[Next:How to Make LibreOffice Look Like Microsoft Office][6] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/advanced-log-file-viewer-lnav-ubuntu-linux/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2016/11/lnav-Running-in-Ubutu.png +[2]: http://lnav.org/features/ +[3]: https://github.com/tstack/lnav/releases/ +[4]: https://www.debugpoint.com/wp-content/uploads/2016/11/lnav-running-in-Ubuntu-22.04.jpg +[5]: https://docs.lnav.org/en/latest/intro.html +[6]: https://www.debugpoint.com/libreoffice-like-microsoft-office/ diff --git a/sources/tech/20221129.5 ⭐️⭐️ How to Set Up Pi-hole to Get an Ad-free Life.md b/sources/tech/20221129.5 ⭐️⭐️ How to Set Up Pi-hole to Get an Ad-free Life.md new file mode 100644 index 0000000000..0c8732bca5 --- /dev/null +++ b/sources/tech/20221129.5 ⭐️⭐️ How to Set Up Pi-hole to Get an Ad-free Life.md @@ -0,0 +1,262 @@ +[#]: subject: "How to Set Up Pi-hole to Get an Ad-free Life" +[#]: via: "https://itsfoss.com/setup-pi-hole/" +[#]: author: "Pratham Patel https://itsfoss.com/author/pratham/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Set Up Pi-hole to Get an Ad-free Life +====== + +Pi-hole is a DNS-based advertisement blocker. Unlike a Chrome or Firefox extension, a Pi-hole can block ads even on your TV! So let’s see how to install and take advantage of this amazing tool! + +### What is Pi-hole? + +Pi-hole is a DNS Server. It blocks advertisement serving domains. Set it up on a dedicated Raspberry Pi or some other computer and then use its IP address as the DNS of your device. If you use it as DNS of your router, you’ll get an ad-free experience on all connected devices, even your smart TVs and smartphones. + +Want more details? Let me explain. + +A DNS Server tells your computer what the IP address for `google.com` is. Without a _valid_ IP address, your computer can not communicate over the Internet to another computer. + +Pi-hole has a list of domains that must be blocked. Once a computer queries Pi-hole’s DNS Server for the IP address for a website like `adservice.google.com`, if it is a domain that must be blocked, then, Pi-hole will respond back with an invalid IP address (which is usually `0.0.0.0`). + +Since “0.0.0.0” is not a valid IP address, your computer can never talk to the `adservice.google.com` website. This results in the blocking of advertisements. + +Set it at the router level and you go ad-free for your entire home network–yes, even for your “smart” devices like TV, toaster and washing machine–instead of being limited to your browser. + +### Setting up Pi-hole + +Using something like this requires some level of experience with the Linux command line, time and patience. It’s more of a [DIY Raspberry Pi project][1] but you can also use it with a normal computer running [Pi-hole][2] in a container. + +So, I’ll be discussing two methods of installing Pi-hole: + +- Automated install on a Raspberry Pi device +- Using Docker or Podman to run Pi-hole in a container + +Let us cover the easier method first method. + +#### Method 1: Automated installation of Pi-hole (requires Raspberry Pi) + +The automated installation is the simplest installation method for installing Pi-hole. It has a few requirements. The picture below mentions OS and hardware support. + +![Pi-hole support for hardware and Operating System][3] + +As you can see above, Pi-hole supports most of the popular Linux distributions. From my personal experience, Pi-hole does not consume more than ~100 MB of RAM and only uses less than 1% of CPU. Meaning it can even run on a [Raspberry Pi Zero W][4]! + +Now that you know which hardware is supported, let us start with the installation steps! + +To install Pi-hole using the automated installation method, all you need to do is run the following command. I understand that running a bash script downloaded from the internet is not usual but this is the official installation method. + +``` +curl -sSL https://install.pi-hole.net | bash +``` + +Once you run the above command, the Pi-hole installer will start and begin to install necessary dependencies and then prompt you with the following screen, indicating that the installer has begun. + +![Pi-hole installer's initial screen][5] + +PS: You can use your mouse to interact with this command line installer ;) + +As depicted from the message shown below, Pi-hole is a free and open source software that mainly relies on donations made by normal folks like you and me. If you find Pi-hole to be useful, please consider donating. [Here is the hyperlink to Pi-hole’s donations so you don’t have to type the URL yourself][6] ;) + +![Pi-hole is a FOSS project. Please donate if it helped you.][7] + +Next up, you will be asked if the computer on which Pi-hole is being installed has a static IP address for your Local Area Network or not. Since your computers need to know about Pi-hole’s IP address beforehand, it is best that the assigned IP address does not change. For more information on how to achieve this, please consult your router’s manual; look for the part with “static/reserved IP address”. + +![The Pi-hole installer recommends that the IP address of your computer is a static IP address.][8] + +Once you have a static IP assigned to the computer running the Pi-hole, press continue. In the next step you will be asked to choose a DNS provider. This is the server that is asked for [DNS Resolution][9]. Some of the most popular DNS providers are listed for you to choose from. + +Generally, I would recommend that you use either the “Quad9 (filtered, ECS, DNSSEC)” option or the “OpenDNS (ECS, DNSSEC)” option or “Cloudflare (DNSSEC)” option. They are quite trusted and have good privacy policy (as opposed to Google’s DNS service). + +![Choosing an upstream DNS provider for the Pi-hole][10] + +Once you have selected a DNS provider, you will be asked for another choice. Here, you are asked to choose a “blocklist” that contains a list of websites to block. Pi-hole has a recommended blocklist and is asking if you want to use said blocklist. + +I have used this blocklist and it does a good job of blocking a _majority_ of advertisements so I highly recommend you say “Yes” to this prompt. + +![Choosing between using the default blocklist or no blocklist][11] + +If you want to monitor items like “Number of total DNS queries”, “Number of DNS queries blocked/passed”, etc, you can enable the Web UI to view this data. [This is what the Pi-hole Web UI looks like][12] (this is an older announcement and the Web UI may have changed by the time you read this article). + +Disabling or enabling the Pi-hole Web UI will not affect the functionality of Pi-hole itself. It is just another way to manage Pi-hole. + +![The Pi-hole installer needs user input regarding the availibility of a Web UI.][13] + +If you chose to install the Pi-hole Web UI, the installer will ask you to if you want to install the “lighttpd” web server. This is unnecessary if you already have a web server like Apache. But if you do not already have a web server installed already, I recommend you let the Pi-hole installer handle the installation and setup of the lighttpd web server. + +![Should the Pi-hole installer install 'lighttpd' web server or does the user already have a web server?][14] + +For the Pi-hole Web UI to show accurate statistics, the data needs to be logged. The next step is asking if you want to enable logging of queries. It logs items like which computer made a query for which domain name and if it was blocked or allowed, etc. + +If you have enabled the Pi-hole Web UI, I recommend that you enable this. + +![THe Pi-hole installer is asking if the user needs queries logged.][15] + +If you enabled query logging in the previous step, you will now be asked for the verbosity of logging. Choose the logging level that you are most comfortable with and proceed with the next step. + +![The Pi-hole installer is asking for verbosity of logs.][16] + +The installation is now complete! Pi-hole is up and running now. + +**But don’t close this window just yet!** If you have enabled the Pi-hole Web UI, you will be given a password that will be used to log in the Pi-hole Web UI. Please note this down. + +![The final screen of Pi-hole automated installation that shows you methods of accessing the Pi-hole Web UI and the randomly generated password][17] + +Once the installation finishes, you will be shown the methods for accessing Pi-hole. + +In my case, since the computer’s IP address is “192.168.122.191”, I will type the address `http://192.168.122.191/admin` in my web browser to access Pi-hole Web UI. + +Or, if I am already using “192.168.122.191” as my DNS server, I can simply type in `http://pi.hole/admin` to view it. + +#### Method 2: Install Pi-hole using Podman/Docker + +This is the recommended method: + +- If you want to deploy Pi-hole without much hassle and/or do not wish to interact with any installer prompts (it is only a 3-step process!) +- If you want to test Pi-hole without actually having to install it and without having your config files modified +- If you want a “reproducible” setup without having to configure everything exactly like before + +For this method, you must have either Podman or Docker installed. For this tutorial, I will be using Docker on Ubuntu 22.04 LTS. However, you can follow the steps on any Linux distribution. + +##### Step 1: Install Docker + +As discussed above, you must have Docker installed. If you don’t have it installed, we have covered the procedure about [installing Docker on Ubuntu][18]. + +##### Step 2: Create a docker-compose file + +The easiest way to get a container like Pi-hole up and running via Docker is by using the docker-compose file. + +You can create the docker-compose file anywhere you wish; its location does not matter. Below are the contents of the `docker-compose.yml` file: + +``` +version: '3' + +services: + pihole: + image: docker.io/pihole/pihole:latest + container_name: pihole-aditi + restart: unless-stopped + ports: + - '53:53/tcp' + volumes: + - './pi-hole/etc-pihole:/etc/pihole' + - './pi-hole/etc-dnsmasq.d:/etc/dnsmasq.d' + environment: + TZ: 'Asia/Kolkata' + WEBPASSWORD: 'your-password-here' +``` + +**Please replace the string `your-password-here` with a safe and strong password**. This is the password for the Pi-hole Web UI. + +##### Step 3: Starting the Pi-hole container + +We have a few prerequisites to satisfy before starting the Pi-hole container. + +The first pre-requisite is to create a few directories. Do so by running the following command in your terminal: + +``` +mkdir -vp pi-hole/etc-{pihole,dnsmasq.d} +``` + +These directories will store only the configuration files, so their size will not be greater than a few hundred MBs. These directories should be created in the same location as the `docker-compose.yml` file. + +**This next step is optional but if you are following this guide on Fedora or a RHEL-based distribution**, you need to open port 53 in your firewall. + +``` +sudo firewall-cmd --add-service=dns --permanent +sudo firewall-cmd --reload +``` + +Once this is done, we can start out Pi-hole container! Do so by running the following command: + +``` +docker-compose up -d +``` + +Executing the above command will automatically fetch the latest Pi-hole image and start a container for you. Logging into the Pi-hole Web UI is the same as the previous method. Either type in the IP address of your computer or the `pi.hole` address in your web browser followed by the `/admin` string. + +Both of the following methods are valid for accessing the Pi-hole Web UI: + +- `http:///admin` +- `http://pi.hole/admin` + +You now have Pi-hole installed on your comptuer using Docker! How cool is that?! + +### Setting up Pi-hole + +To start using Pi-hole, you must follow either of the following methods: + +- Add the computer’s IP address with Pi-hole installed as the DNS server for your router. This is the most recommended method since it enables blocking ads on tricky devices to configure. Please refer to your router’s manual on how this can be achieved. +- You can add the IP address of the computer hosting Pi-hole as the DNS server for every computer, phone or tablet on your network. This can be tedious but useful in cases where you wish to allow ads on particular devices. I do not recommend this unless you know what you are doing. + +Once you have followed either method 1 or method 2, you can check whether Pi-hole is working. + +``` +dig +short @ ads.google.com +``` + + The `dig` utility is helpful for looking up corresponding IP address for each domain name. In this command, you are querying our Pi-hole server to get the IP address of “ads.google.com” is. The website “ads.google.com” is used to serve ads. So, if you get back `0.0.0.0`, your Pi-hole is working! + +Below is the output from my computer: + +``` +$ dig +short @192.168.122.191 ads.google.com +0.0.0.0 +``` + +As you can see, the IP address I got back from Pi-hole is infact an invalid IP address. Meaning any communication to Google’s Ad servers is blocked. Yay! + +But let us also see if “google.com” is working. Where will we go to solve our future problems if it doesn’t work? So let’s see that too! + +You can run the same command as above but with “google.com” instead of “ads.google.com”. If the Pi-hole is working correctly, **we should get a** _**valid**_ **IP address in return**. Let’s see what happens on my computer. + +``` +$ dig +short @10.0.0.14 google.com +216.58.203.46 +``` + +As expected, “google.com” works but “ads.google.com” is blocked. Our Pi-hole server is working as intended. Perfect! + +### Conclusion + +It requires some effort and expertise to set up Pi-hole to get an ad-free internet experience. As you can see, it’s not entirely complicated. You need to be patience with such DIY projects. + +For a Raspberry Pi lover like me, using Pi-hole gives good practice for building projects with [amazing single-board computers][19]. + +I have tried giving all the proper steps but I understand if it doesn’t work for you. If you face any issues, please let me know in the comments and I’ll try to help you out. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/setup-pi-hole/ + +作者:[Pratham Patel][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/pratham/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/raspberry-pi-projects/ +[2]: https://pi-hole.net/ +[3]: https://itsfoss.com/wp-content/uploads/2022/11/image.png +[4]: https://itsfoss.com/raspberry-pi-zero-w/ +[5]: https://itsfoss.com/wp-content/uploads/2022/11/pihole-automated-install-01.png +[6]: https://pi-hole.net/donate/ +[7]: https://itsfoss.com/wp-content/uploads/2022/11/pihole-automated-install-02.png +[8]: https://itsfoss.com/wp-content/uploads/2022/11/pihole-automated-install-03.png +[9]: https://www.datadoghq.com/knowledge-center/dns-resolution/#how-does-dns-resolution-work +[10]: https://itsfoss.com/wp-content/uploads/2022/11/pihole-automated-install-04.png +[11]: https://itsfoss.com/wp-content/uploads/2022/11/pihole-automated-install-05.png +[12]: https://pi-hole.net/blog/2018/01/13/pi-hole-web-interface-the-next-generation/ +[13]: https://itsfoss.com/wp-content/uploads/2022/11/pihole-automated-install-06.png +[14]: https://itsfoss.com/wp-content/uploads/2022/11/pihole-automated-install-07.png +[15]: https://itsfoss.com/wp-content/uploads/2022/11/pihole-automated-install-08.png +[16]: https://itsfoss.com/wp-content/uploads/2022/11/pihole-automated-install-09.png +[17]: https://itsfoss.com/wp-content/uploads/2022/11/pihole-automated-install-10.png +[18]: https://linuxhandbook.com/install-docker-ubuntu/ +[19]: https://itsfoss.com/raspberry-pi-alternatives/ diff --git a/sources/tech/20221130.0 ⭐️⭐️ Terminator The Tiling Terminal Emulator for Linux Pros.md b/sources/tech/20221130.0 ⭐️⭐️ Terminator The Tiling Terminal Emulator for Linux Pros.md new file mode 100644 index 0000000000..421d0a199f --- /dev/null +++ b/sources/tech/20221130.0 ⭐️⭐️ Terminator The Tiling Terminal Emulator for Linux Pros.md @@ -0,0 +1,152 @@ +[#]: subject: "Terminator: The Tiling Terminal Emulator for Linux Pros" +[#]: via: "https://itsfoss.com/terminator/" +[#]: author: "Anuj Sharma https://itsfoss.com/author/anuj/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Terminator: The Tiling Terminal Emulator for Linux Pros +====== + +You might have seen some colleagues or YouTubers using a terminal window with multiple terminal sessions running in it. + +![gnu screen][1] + +Some pro Linux users do the multiple split pane with screen or [tmux commands][2]. These commands work in any terminal application but involve a steep learning curve. + +If you want multiple terminal sessions in the same application window without the complexity of the tmux or [screen commands][3], Terminator is your friend. + + No, not that terminator. This terminator 👇 + +![terminator htop neofetch cmatrix][4] + +The [terminal emulators][5] installed on your system may have multiple-tab support. On the other hand, Terminator supports multiple resizable terminal panels. + +It emulates something like a tiling window manager and tiles the terminal panel in a single window. + +In this article, I’ll show you how to install and use Terminator in Ubuntu and other Linux distributions. + +But before that, let’s have a quick look at the features Terminator offers. + +### Terminator gives you multiple terminal sessions in the same window + +[Terminator][6] is a GTK application based on GNOME Terminal that uses VTE3 (Virtual Terminal Emulator widget GTK3). + +Being an application based on GNOME Terminal it has some dependencies linked with the GNOME Desktop Environment. + +However, I found the application relatively lightweight, even with the GNOME dependencies. Perhaps it should not be a problem to use it on other desktop environments. + +From the outside, Terminator might look like any other terminal emulator. But the possibilities are endless with Terminator and I will show them to you in later sections. + +![terminator htop multiple][7] + +#### Features + +Let me summarize some of the main features of Terminator: + +- Terminals in tiling layout +- Supports multiple tabs +- Drag and drop terminal panel (great mouse support) +- Keyboard shortcuts akin to tiling window managers +- Saving layouts and profiles so one can get a quick head start +- Extensible through plugins + +### Installing Terminator + +Installing Terminator is as simple as installing any other package because it is available in the official repositories of all mainstream distributions you can name. + +For your convenience, I have listed the commands for some major distributions below. + +For Ubuntu and Debian based distributions, enter the below command to install Terminator: + +``` +sudo apt install terminator +``` + +For Fedora and Red Hat based distributions, use: + +``` +sudo dnf install terminator +``` + +For Arch and Manjaro based distributions, enter the below command to update and install Terminator: + +``` +sudo pacman -Syu terminator +``` + +Note: You might not get the latest version of Terminator in some of the Long term release distributions’ repos. + +One can also install Terminator using the Graphical Package Manager provided by your distribution. But, there is no fun in installing a Terminal Emulator from the GUI. + +### Using Terminator + +When you launch Terminator default window will look like a simple Terminal window. But, with some patience, it can work like a tiling window manager inside a single window. + +![terminator default window][8] + +Terminator allows you to use the mouse for creating new panes by splitting the present one horizontally and vertically. + +![terminator right click option][9] + +However, you’ll be a lot faster with keyboard shortcuts. It takes some time to get used to the keys but you’ll get there eventually. + +Here, I opened [htop][10] in the first panel as shown below. + +![terminator htop][11] + +To create a new terminal panel to the right, just enter `Ctrl + Shift + e` shortcut keys. Secondly, I have used [neofetch][12] in the right panel, as shown below. + +![terminator htop neofetch][13] + +Lastly, I created another panel below the one with neofetch using `Ctrl + Shift + o` shortcut keys and launched `cmatrix` here. It’s one of those useless but [amusing Linux commands][14]. + +![terminator htop neofetch cmatrix][15] + +Above is the final screenshot of what I did in this walkthrough. Now you understand why I said that Terminator creates a tiling window manager like environment in a single window. + +This tiling feature will come in handy if you need to open many terminals without installing a Tiling Window Manager. Terminator also supports tabs but the tiling feature is the USP of this application, in my opinion. + +Terminator is one of the few applications that come with great documentation. If you need more information, please take a look at its [documentation][16]. + +### Conclusion + +I believe all terminal emulators support tabbed interface. But you’ll have to switch between the tabs and it’s not convenient when you have to keep an eye on multiple sessions simultaneously. + +Terminator may not look as good as [Blackbox][17] or [GNOME Console][18]. But it has features that seasoned Linux users love. + +It serves a purpose that may not what every Linux user needs or wants. I leave it up to you to decide if it is worth your time. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/terminator/ + +作者:[Anuj Sharma][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/anuj/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/wp-content/uploads/2022/11/gnu-screen.webp +[2]: https://linuxhandbook.com/tmux/ +[3]: https://linuxhandbook.com/screen-command/ +[4]: https://itsfoss.com/wp-content/uploads/2022/11/terminator-htop-neofetch-cmatrix.png +[5]: https://itsfoss.com/linux-terminal-emulators/ +[6]: https://github.com/gnome-terminator/terminator +[7]: https://itsfoss.com/wp-content/uploads/2022/11/terminator-htop-multiple.png +[8]: https://itsfoss.com/wp-content/uploads/2022/11/terminator-default-window.png +[9]: https://itsfoss.com/wp-content/uploads/2022/11/terminator-right-click-option.png +[10]: https://itsfoss.com/use-htop/ +[11]: https://itsfoss.com/wp-content/uploads/2022/11/terminator-htop.png +[12]: https://itsfoss.com/using-neofetch/ +[13]: https://itsfoss.com/wp-content/uploads/2022/11/terminator-htop-neofetch.png +[14]: https://itsfoss.com/funny-linux-commands/ +[15]: https://itsfoss.com/wp-content/uploads/2022/11/terminator-htop-neofetch-cmatrix.png +[16]: https://gnome-terminator.readthedocs.io/en/latest/ +[17]: https://itsfoss.com/blackbox-terminal/ +[18]: https://itsfoss.com/gnome-console/ diff --git a/sources/tech/20221130.2 ⭐️⭐️⭐️ Build test scripts for your IoT platform.md b/sources/tech/20221130.2 ⭐️⭐️⭐️ Build test scripts for your IoT platform.md new file mode 100644 index 0000000000..e11e7d618c --- /dev/null +++ b/sources/tech/20221130.2 ⭐️⭐️⭐️ Build test scripts for your IoT platform.md @@ -0,0 +1,341 @@ +[#]: subject: "Build test scripts for your IoT platform" +[#]: via: "https://opensource.com/article/22/11/test-scripts-iot-jmeter" +[#]: author: "Chongyuan Yin https://opensource.com/users/chongyuanyin" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Build test scripts for your IoT platform +====== + +In [my previous article][1], I introduced the open source test tool JMeter and used a simple HTTP test as an example to demonstrate its capabilities. This article shows you how to build test scripts for complex test scenarios. + +The user interface displays a JMeter test script in the "tree" format. The saved test script (in the `.jmx` format) is [XML][2]. The JMeter script tree treats a test plan as the root node, and the test plan includes all test components. In the test plan, you can configure user-defined variables called by components throughout the entire test plan. Variables can also thread group behavior, library files used in the test, and so on. You can build rich test scenarios using various test components in the test plan. + +Test components in JMeter generally have the following categories: + +- Thread group +- Sampler +- Logic controller +- Listener +- Configuration element +- Assertion +- Timer +- Pre-processor +- Post-processor + +### Thread groups + +A thread group is the beginning point for all test plans (so all samplers and controllers must be placed under a thread group). A thread group can be regarded as a virtual user pool in which each thread is essentially a virtual user, and multiple virtual users perform the same batch of tasks simultaneously. Each thread is independent and doesn't affect the others. During the execution of one thread, the variable of the current thread doesn't affect the variable value of other threads. + +![Threaded groups][3] + +In this interface, the thread group can be configured in various ways. + +#### 1. Action to be taken after a sampler error + +The following configuration items control whether a test continues when an error is encountered: + +- **Continue**: Ignore errors and continue execution. +- **Start Next Thread Loop**: Ignore the error, terminate the current loop of the thread, and execute the next loop. +- **Stop Thread**: Stop executing the current thread without affecting the normal execution of other threads. +- **Stop Test**: Stop the entire thread after executing threads have finished the current sampling. +- **Stop Test Now**: The entire test execution stops immediately, even if it interrupts currently executing samplers. + +#### 2. Number of threads + +This is the number of concurrent (virtual) users. Each thread runs the test plan completely independently without interfering with any others. The test uses multiple threads to simulate concurrent access to the server. + +#### 3. Ramp-up period + +The Ramp-up time sets the time required to start all threads. For example, if the number of threads is set to 10 and the ramp-up time is set to 100 seconds, then JMeter uses 100 seconds to start and runs 10 threads (each thread begins 10 seconds after the previous thread was started). + +If the ramp-up value is set small and the number of threads is set large, there's a lot of stress on the server at the beginning of the test. + +#### 4. Loop count + +Sets the number of loops per thread in the thread group before ending. + +#### 5. Delay thread creation until needed + +By default, all threads are created when the test starts. If this option is checked, threads are created when they are needed. + +#### 6. Specify thread lifetime + +Control the execution time of thread groups. You can set the duration and startup delay (in seconds). + +### Samplers + +A sampler simulates user operations. It's a running unit that sends requests to the server and receives response data from the server. A sampler is a component inside a thread group, so it must be added to the thread group. JMeter natively supports a variety of samplers, including a TCP Sampler, HTTP Request, FTP Request, JDBC Request, Java Request, and so on. Each type of sampler sends different requests to the server according to the set parameters. + +#### TCP Sampler + +The TCP Sampler connects to the specified server over TCP/IP, sends a message to the server after the connection is successful, and then waits for the server to reply. + +![TCP sampler][4] + +The properties that can be set in the TCP Sampler are as follows: + +##### TCPClient classname + +This represents the implementation class that handles the request. By default, `org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl` is used, and plain text is used for transmission. In addition, JMeter also has built-in support for `BinaryTCPClientImpl` and `LengthPrefixedBinaryTCPClientImpl`. The former uses hexadecimal packets, and the latter adds a 2-byte length prefix to `BinaryTCPClientImpl`. + +You can also provide custom implementation classes by extending `org.apache.jmeter.protocol.tcp.sampler.TCPClient`. + +- **Re-use connection**: If enabled, this connection is always open; otherwise, it's closed after reading data. +- **Close Connection**: If enabled, this connection is closed after the TCP sampler has finished running. +- **Set No-Delay**: If enabled, the Nagle algorithm is disabled, and the sending of small packets is allowed. +- **SO_LINGER**: Controls whether to wait for data in the buffer to complete transmission before closing the connection. +- **End of line (EOL) byte value**: Determines the byte value at the end of the line. The EOL check is skipped if the specified value is greater than 127 or less than -128. For example, if a string returned by the server ends with a carriage return, you can set this option to 10. + +- Target server settings: **Server Name or IP** and **Port Number** specify the hostname or IP address and port number of the server application. +- Connection Options: Determines how you connect to the server. +- **Timeouts**: Set the connect timeout and response timeout. +- **Text to send**: Contains the payload you want to send. +- **Login configuration**: Sets the username and password used for the connection. + +#### HTTP Request Sampler + +The HTTP Sampler sends HTTP and HTTPS requests to the web server. + +![HTTP request sampler][5] + +Here are the settings available: + +- **Redirect Automatically**: Redirection is not treated as a separate request and is not recorded by JMeter. +- **Follow Redirects**: Each redirection is treated as a separate request and is recorded by JMeter. +- **Use KeepAlive**: If enabled, `Connection: keep-alive` is added to the request header when JMeter communicates with the target server. +- **Use multipart/form-data for POST**: If enabled, requests are sent using `multipart/form-data or application/x-www-form-urlencoded`. + +- **Name and comments** +- **Protocol**: Set the protocol to send the request to the target server, which can be HTTP, HTTPS, or FILE. The default is HTTP. +- **Server name or IP address**: The hostname or IP address of the target server to which the request is sent. +- **Port number**: The port number that the web service listens on. The default port is 80 for HTTP and 443 for HTTPS. +- **Request method**: The method for sending the request, commonly including GET, POST, DELETE, PUT, TRACE, HEAD, OPTIONS, and so on. +- **Path**: The target URL (excluding server address and port) to request. +- **Content encoding**: How to encode the request (applicable to POST, PUT, PATCH, and FILE). +- **Advanced request options**: A few extra options, including: +- **Parameters**: JMeter uses parameter key-value pairs to generate request parameters and send these request parameters in different ways depending on the request method. For example, for GET, DELETE requests, parameters are appended to the request URL. +- **Message body data**: If you want to pass parameters in JSON format, you must configure the Content-Type as `application/json` in the request header. +- **File upload**: Send a file in the request. The HTTP file upload behavior can be simulated in this way (usually). + +### Logic Controllers + +The JMeter Logic Controller controls the execution logic of components. The JMeter website explains it like this: "Logic Controllers determine the order in which Samplers are processed." + +The Logic Controller can control the execution order of the samplers. Therefore, the controller needs to be used together with the sampler. Except for the once_-_only controller, other logic controllers can be nested within each other. + +Logic controllers in JMeter are mainly divided into two categories. They can control the logical execution order of nodes during the execution of the test plan (a loop or conditional controller), or they can act in response to specific throughput or transaction count. + +#### Transaction Controller + +Sometimes, you want to count the overall response time of a group of related requests. In this case, you need to use a Transaction Controller. + +The Transaction Controller counts the sampler execution time of all child nodes under the controller. If multiple samplers are defined under the Transaction Controller, then the transaction is considered successful only when all samplers run successfully. + +Add a transaction controller using the contextual menu: + +![Image of available settings.][6] + +**Generate parent sample**: If enabled, the Transaction Controller is used as a parent sample for other samplers. Otherwise, the Transaction Controller is only used as an independent sample. + +![Generate parent sample option is enabled.][7] + +For example, the unchecked Summary Report is as follows: + +![Unchecked summary report][8] + +If checked, the Summary Report is as follows: + +![Checked summary report][9] + +**Include duration of timer**: If enabled, include a timer (a delay is added before and after the sampler runs). + +#### Once Only Controller + +The Once Only Controller, as its name implies, is a controller that executes only once. The request under the controller is executed only once during the loop execution process under the thread group. For tests that require a login, you can consider putting the login request in a Once Only Controller because the login request only needs to be executed once to establish a session. + +![Once-only controller][10] + +If you set the loop count to 2 and check the result tree after running, you can see that the `HTTP request 3` under the Once Only Controller is only executed once, and other requests are executed twice. + +![Loop count][11] + +### Listeners + +A listener is a series of components that process and visualize test result data. **View Results Tree**, **Graph Results**, and **Aggregate Report** are common listener components. + +#### View Results Tree + +This component displays the result, request content, response time, response code, and response content of each sampler in a tree structure. Viewing the information can assist in analyzing whether there is a problem. It provides various viewing formats and filtering methods and can also write the results to specified files for batch analysis and processing. + +![Results tree][12] + +### Configuration element + +Configuration element provides support for static data configuration. It can be defined at the test plan level, or at the thread group or sampler level, with different scopes for different levels. Configuration elements mainly include User Defined Variables, CSV Data Set Config, TCP Sampler Config, HTTP Cookie Manager, etc. + +#### User-Defined Variables + +![Enter variables in the User defined variables screen][13] + +By setting a series of variables, you cause a random selection of values to be used in the performance test. Variable names can be referenced within the scope, and variables can be referenced as `${variable name}`. + +In addition to the User Defined Variables component, variables can also be defined in other components, such as Test Plans and HTTP Requests: + +![Define a test plan][14] + +For example, a defined variable is referenced in an HTTP Request: + +![Defined variables can be used in settings][15] + +Viewing the execution results, you can see that the value of the variable has been obtained: + +![Viewing results][16] + +#### CSV Data Set Config + +During a performance test, you may need parameterized input, such as the username and password, in the login operation. When the amount of concurrency is relatively large, the data generation at runtime causes a heavy burden on the CPU and memory. The CSV Data Set Config can be used as the source of parameters required in this scenario. + +![CSV dataset][17] + +The descriptions of some parameters in the CSV Data Set Config: + +- **Variable name**: Defines the parameter name in the CSV file, which the script can reference as `${variable name}`. +- **Recycle on EOF**: If set to True, this allows looping again from the beginning when reaching the end of the CSV file. +- **Stop thread on EOF**: If set to True, this stops running after reading the last record in the CSV file. +- **Sharing mode**: Sets the mode shared between threads and thread groups. + +### Assertions + +The Assertion checks whether the request is returned as expected. Assertions are an important part of automated test scripts, so you should pay great attention to it. + +JMeter commonly used assertions include Response Assertion, JSON Assertion, Size Assertion, Duration Assertion, Beanshell Assertion, etc. Below I introduce the frequently-used JSON Assertion. + +#### JSON Assertion + +This is used to assert the content of the response in JSON format. A JSON Assertion is added on an HTTP Sampler in this example, as shown in the following image: + +![JSON assertion][18] + +The root of the JSON path is always called `$`, which can be represented by two different styles: dot-notation (`.`) or bracket-notation (`[]`). For example; `$.message[0].name` or `$['message'][0]['name']`. + +Here's an example of a request made to `https://www.google.com/doodles/json/2022/11`. The `$[0].name` value represents the 'name' part in the first array element in the response. + +![The name variable from the first array is used.][19] + +The `Additionally assert value` specifies that the `value of 'name'` is to be verified, and the `Expected value` is expected to be '2022-world-cup-opening-day'. + +Run the script and look at the results. You can see that the assertion has passed. + +![The results tree view shows that the assertion has passed.][20] + +Here are the possible conditions and how they're treated: + +- If a response result is not in JSON format, it's treated as a failure. +- If the JSON path cannot find the element, it fails. +- If the JSON path finds the element, but no conditions are set, it passes. +- If the JSON path finds an element that does not meet the conditions, it fails. +- If the JSON path finds the element that meets the conditions, it passes. +- If the JSON path returns an array, it iterates to determine whether any elements meet the conditions. If yes, it passes. If not, it fails. + +Go back to JSON Assertion and check the `Invert assertion.` + +![Invert assertion][21] + +Run the script, check the results, and you can see that the assertion failed: + +![Assertion failed][22] + +### Timers + +The pause time between requests in the performance test is called "thinking time." In the real world, the pause time can be spent on content search or reading, and the Timer simulates this pause. + +All timers in the same scope are executed before the samplers. + +If you want the timer to be applied to only one of the samplers, add the timer to the child node of the sampler. + +JMeter timers mainly include Constant Timer, Uniform Random Timer, Precise Throughput Timer, Constant Throughput Timer, Gaussian Random Timer, JSR223 Timer, Poisson Random Timer, Synchronizing Timer, and BeanShell Timer. + +#### Constant Timer + +A Constant Timer means that the interval between each request is a fixed value. + +![Constant timer][23] + +After configuring the thread delay to 100 and 1000, respectively, run the script: + +![Threaded delay][24] + +Check the data in the table, where #1 and #2 are the running results when the configuration is 100 milliseconds, and #4 and #5 are the running results when the configuration is 1000 milliseconds. You can see that the interval between #4 and #5 is significantly greater than that between #1 and #2: + +![Greater delay][25] + +#### Constant Throughput Timer + +The Constant Throughput Timer controls the execution of requests according to the specified throughput. + +![Constant throughput][26] + +Configure the target throughput as 120 (note that the unit is minutes), and then select **All active threads in current thread group (shared)** based on the calculated throughput: + +![Throughput][27] + +Run the script, check the results, and observe that the throughput is approximately 2/second (120/60). + +![Throughput][28] + +### Pre-processors and post-processors + +A pre-processor performs some operations before the sampler request. It's often used to modify parameters, set environment variables, or update variables. + +Similarly, a post-processor performs some operations after the sampler request. Sometimes, the response data needs to be used in subsequent requests, and you need to process the response data. For example, if the `jwt` token in the response is obtained and used for authentication in subsequent requests, the post-processor is used. + +### Using JMeter + +The above is the introduction to the main test components of JMeter, and now you can feel confident in starting your own tests. In another article, I will explain using the [MQTT plugin][29] in JMeter. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/11/test-scripts-iot-jmeter + +作者:[Chongyuan Yin][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/chongyuanyin +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/22/10/iot-test-jmeter +[2]: https://opensource.com/article/21/7/what-xml +[3]: https://opensource.com/sites/default/files/2022-11/1.png +[4]: https://opensource.com/sites/default/files/2022-11/2.png +[5]: https://opensource.com/sites/default/files/2022-11/3.png +[6]: https://opensource.com/sites/default/files/2022-11/4.webp +[7]: https://opensource.com/sites/default/files/2022-11/5.webp +[8]: https://opensource.com/sites/default/files/2022-11/6.png +[9]: https://opensource.com/sites/default/files/2022-11/7.png +[10]: https://opensource.com/sites/default/files/2022-11/8.png +[11]: https://opensource.com/sites/default/files/2022-11/9.png +[12]: https://opensource.com/sites/default/files/2022-11/10.png +[13]: https://opensource.com/sites/default/files/2022-11/11-2_1.webp +[14]: https://opensource.com/sites/default/files/2022-11/12-2.webp +[15]: https://opensource.com/sites/default/files/2022-11/14.webp +[16]: https://opensource.com/sites/default/files/2022-11/15-2.webp +[17]: https://opensource.com/sites/default/files/2022-11/16.png +[18]: https://opensource.com/sites/default/files/2022-11/17_0.png +[19]: https://opensource.com/sites/default/files/2022-11/18-2.webp +[20]: https://opensource.com/sites/default/files/2022-11/19-2.webp +[21]: https://opensource.com/sites/default/files/2022-11/20.png +[22]: https://opensource.com/sites/default/files/2022-11/21.png +[23]: https://opensource.com/sites/default/files/2022-11/22_0.png +[24]: https://opensource.com/sites/default/files/2022-11/23.png +[25]: https://opensource.com/sites/default/files/2022-11/24.png +[26]: https://opensource.com/sites/default/files/2022-11/25.png +[27]: https://opensource.com/sites/default/files/2022-11/26_0.png +[28]: https://opensource.com/sites/default/files/2022-11/27_0.png +[29]: https://github.com/emqx/mqtt-jmeter diff --git a/sources/tech/20221130.4 ⭐️⭐️ Exodia OS Emerging BSPWM-based Arch Linux for Pentesters.md b/sources/tech/20221130.4 ⭐️⭐️ Exodia OS Emerging BSPWM-based Arch Linux for Pentesters.md new file mode 100644 index 0000000000..d5ae7edc63 --- /dev/null +++ b/sources/tech/20221130.4 ⭐️⭐️ Exodia OS Emerging BSPWM-based Arch Linux for Pentesters.md @@ -0,0 +1,146 @@ +[#]: subject: "Exodia OS: Emerging BSPWM-based Arch Linux for Pentesters" +[#]: via: "https://www.debugpoint.com/exodia-os-first-look/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Exodia OS: Emerging BSPWM-based Arch Linux for Pentesters +====== + +**Meet Exodia OS, an Arch-Linux-based distribution in the making**, **for general and advanced usage. Here’s a first look.** + +![Exodia OS home edition][1] + +### Exodia OS: First Look + +A small team of Arch Linux enthusiasts from Egypt is developing Exodia OS based on BSP window manager (BSPWM). The primary use case of this distribution is to be a perfect distro for wire & wireless penetration testing by providing all the necessary tools by default (similar to Kali Linux). + +Exodia OS currently features three editions. The “wireless” edition brings 400+ pre-installed tools for both wire and wireless pen-testers. + +The “home” edition is primarily for daily use and general users. It features all the basic tools and apps for your general use. + +And finally, a third edition called the “predator” edition, specially designed for Acer Predator series Laptops. + +### Installation and first impression + +For this quick review, I did a test run in [Virtualbox][2] virtual machine with the “home” edition. + +The installation was pretty smooth with the Calamares installer. No surprise there. Because a well-customized Calamares hardly fails. After a successful boot, you get a nice login screen with a custom lightdm theme. + +![Exodia-OS login screen - home edition][3] + +In my personal opinion, all the window manager looks way better than desktop environments. And fast too. At its core, Exodia OS uses the BSPWM tiling window manager with custom themes preloaded. There are a total of 16 cool themes pre-loaded, which you can apply via theme chooser (CTRL+ALT+T). + +![Default BSPWM themes][4] + +### BSPWM and themes + +The 16 themes are combined with the context menu [jgmenu][5] and [rofi][6] launcher. When you change the theme, Exodia OS also changes the underlying rofi launcher and themes. + +The jgmenu is super productive with runtime search for applications and settings – which really saves time. In addition, you can browse thru the list of well-categorised apps. Furthermore, jgmneu is completely keyboard-driven, saving your workflow more time. + +![Dynamic search in jgmenu][7] + +![Rofi laucnher theme selector][8] + +![jgmenu looks stunning in BSPWM][9] + +Among all the themes, the top bar ([which is polybar][10]) is pre-selected with all the necessary items. And it’s clickable. The list of items which are available in the top bar: + +- Intelligent workspace switcher by app shortcuts +- Main menu launcher (jgmenu) +- Internet connection status (upload, download and network) +- Battery status, processor + +If you are playing music, a small section shows the artist’s name and playing controls. + +Also, you can see the update notifications. + +Furthermore, Exodia OS is configured to use tiling and floating windows while tiling. You can switch between them with keyboard combinations. + +![Exodia OS with Tiling in BSPWM][11] + +On another note, you can easily custom-make an awesome-looking Arch Linux box for yourself with jgmenu, dmenu, polybar and rofi! + +### Applications and sources + +The home edition is loaded with the application by default. This might be why an Arch distro’s ISO size is slightly over 3GB. However, most of the necessary apps are already installed. If you are a new user, you don’t need to go over the hassles of installing all those apps. + +Here’s a summary for the home edition: + +- Firefox web browser +- Thunar file manager +- Alacritty terminal +- Nitrogen wallpaper chooser +- Vim, Leafpad and Geany text editor +- GParted partition manager +- Timeshift backup tool +- Additional mix of GNOME and Xfce apps + +However, LibreOffice and the [desktop email client][12] are not installed. + +Furthermore, the “wireless” edition includes more applications in addition to the above list. Those are primarily for penetration testing. + +And the “predator” edition features special utilities such as PredatorSense to control CPU/GPU fans and the Keybaord RGB colour of these high-end Acer predator laptops. + +Exodia OS features a set of cool anime-flavoured wallpaper to beautify your Arch Linux further. + +### Performance + +Exodia OS consumes around 875 MB of memory at idle, and the CPU is at 7% average for all cores. And it may go higher from this baseline as you start launching for applications. + +![Exodia OS - performance (idle)][13] + +Most of the resources are consumed by the polybar, X11 and systems for several services. + +Being an Arch distro with the window manager, this metric might be slightly higher due to many pre-built customizations and processes. + +Overall, it should perform fast in recent hardware (not more than five years old). + +### Wrapping up + +Exodia OS is a newborn project and is still under development by a small team from Egypt. It seems the target audience is the security researchers who want a pre-built system with an Arch Linux base. Although, Debian-based Kali Linux is the “go-to” distro for anything related to security and hacking workflow. But Exodia OS might try to be the same with an Arch base. + +The good thing about being an Arch-based distro is – you get easy access to the largest repo with thousands of packages with rolling-release. Plus, the one and only [ArchWiki][14] and documentation. + +With that said, if you want to try it, test it in a [virtual machine][15] before installing it in the physical system. The LIVE medium has a user id `liveuser`, and the password is `exodia`. Also, make sure you know the key bindings of BSPWM before trying it out. The close window combination is `Super+Shift+C`. + +You can download all three editions of ISO files from the [official website][16]. + +Cheers. + +[Next:Download Firefox Browser: All Version Links and Details][17] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/exodia-os-first-look/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/11/Exodia-OS-home-edition.jpg +[2]: https://www.debugpoint.com/tag/virtualbox +[3]: https://www.debugpoint.com/wp-content/uploads/2022/11/Exodia-OS-login-screen-home-edition.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2022/11/Default-BSPWM-themes.jpg +[5]: https://jgmenu.github.io/screenshots.html +[6]: https://github.com/davatorium/rofi +[7]: https://www.debugpoint.com/wp-content/uploads/2022/11/Dynamic-search-in-jgmenu.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2022/11/Rofi-laucnher-theme-selector.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2022/11/jgmenu-looks-stunning-in-BSPWM.jpg +[10]: https://github.com/polybar/polybar +[11]: https://www.debugpoint.com/wp-content/uploads/2022/11/Exodia-OS-with-Tiling-in-BSPWM.jpg +[12]: https://www.debugpoint.com/best-email-client-linux-windows/ +[13]: https://www.debugpoint.com/wp-content/uploads/2022/11/Exodia-OS-performance-idle.jpg +[14]: https://wiki.archlinux.org/ +[15]: https://www.debugpoint.com/tag/virtual-machine +[16]: https://exodia-os.github.io/exodia-website/ +[17]: https://www.debugpoint.com/download-firefox/ diff --git a/sources/tech/20221201.1 ⭐️⭐️ 5 reasons I use the Dolphin file manager on Linux.md b/sources/tech/20221201.1 ⭐️⭐️ 5 reasons I use the Dolphin file manager on Linux.md new file mode 100644 index 0000000000..4a5fef54fb --- /dev/null +++ b/sources/tech/20221201.1 ⭐️⭐️ 5 reasons I use the Dolphin file manager on Linux.md @@ -0,0 +1,78 @@ +[#]: subject: "5 reasons I use the Dolphin file manager on Linux" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-dolphin" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +5 reasons I use the Dolphin file manager on Linux +====== + +Computers are basically fancy file cabinets, full of folders and files waiting to be referenced, cross-referenced, edited, updated, saved, copied, moved, renamed, and organized. Of course, the files and folders are only virtual, and so software developers came up with the modern "desktop" user interface. Your screen is the top of your "desk," which you can use as a surface for taking out files from their folders so you can review and work on them. The analogy seems almost quaint these days because computers are so much more than just a filing cabinet. And yet the model remains, for many of us, as the primary way we interact with data on our personal computers, which makes humble file manager software some of the most important applications you use. + +### Dolphin on Linux + +![Image of an open window in Dolphin.][1] + +The KDE Plasma Desktop provides Dolphin as its file manager. At first glance, it's a simple and almost minimal application. Don't let that fool you, though. There's a lot of potential in how you interact with the files on your computer, and Dolphin recognizes that. Here are five of my favorite Dolphin features. + +### 1. Fast launches + +Dolphin is quick to launch, and I don't mean that Dolphin itself launches quickly, but that the files you use within Dolphin can be opened quickly. A longtime KDE convention is that a single click of the mouse opens a file. That's admittedly counter-intuitive at first. After all, everybody knows you use a single click to select something and a double-click to open. But think about it. When you're selecting something, you're probably engaged in something relatively ponderous. You select files to then do something with them. The act of selection isn't the main action, it's the prep work for the action. There's no immediacy to selection. + +But when you open something, you've already made up your mind. You want the file opened so you can start working. There's immediacy to opening a file. + +If you look at it that way, it makes sense to require fewer clicks to open a file. So with Dolphin, by default at least, a single click opens a file in its default application. To select a file, you can either click on a **Selection** button overlaid over the icon, or click and drag to make a group selection. None of this is what you're used to, maybe, and it may seem unnatural, but after you've tried it you won't be able to tolerate a less efficient system. + +#### Faster launch (the other kind) + +This isn't a Dolphin feature specifically, but it deserves recognition. Thanks to the `kdeinit` subsystem of the KDE Plasma Desktop, Dolphin and many other KDE applications benefit from function pre-loading. Essentially, processes are launched by forking and loading a dynamic library containing a ''kdemain()'' function, which gives the typical KDE application a boost to launch time (I haven't timed it myself, but they say it's 2.5 times faster than without) and a reduction in memory consumption. + +### 2. Contextual actions + +One of the most basic and most common actions you do with a file manager is move and copy files. In fact, for many people, that's all a file manager is for. + +In Dolphin, when you drag-and-drop a file from one place to another, you're given a pop-up contextual menu so you can quickly choose whether you're copying, moving, or symlinking the file. If that slows you down, you can press a modifier key while dragging: **Shift** to move, **Ctrl** to copy, or **Ctrl+Shift** to link. It's fast, efficient, and friendly. + +![Image of a minimal Dophin window][2] + +### 3. Power of Qt + +The KDE Framework is based on the Qt framework, a famously flexible graphical toolkit. Not all KDE applications have the opportunity to take advantage of that, but Dolphin has several features that draw upon Qt's modular design. For instance, if you don't like the **Places** panel on the left of the window, you can move it to the right side of the window, or remove it entirely. Move the toolbar, remove the menu bar and status bar. Qt stops short of letting you redesign Dolphin entirely, but there's enough malleability for you to be able to change its layout to what works best for you. + +Here's my personal Dolphin configuration: + +![Image of drag and drop actions in Dolphin.][3] + +### 4. Plugins + +Dolphin isn't just Dolphin. It's Dolphin plus any number of plugins you choose to enable. There are plugins for several version control systems, including Git. There are lots of ways to interact with Git, and Dolphin adds one more way for convenience. I don't often think that I'm going to use Dolphin as my Git interface, but with Dolphin version control plugins enabled, it's too easy _not_ to use Dolphin as my Git interface. Nothing could be more natural than adding a file to staging, or adding a commit message, or even pushing to a remote repository, with the file manager that you're using to browse through the files anyway. + +### 5. Options + +They're not technically plugins because they're built along with the application, but Dolphin has a staggering number of optional features. You don't have to activate them all at once, but there's plenty of features in Dolphin for you to discover over years of use. For instance, there's an option to show a filter bar, which you can use as a kind of instant `find`command. You can use tabs in Dolphin, or split the Dolphin window into panes, you can enable expandable folders or choose to click into them, you can open archives as folders, you can choose to view thumbnail previews of certain files or deactivate them for other filetypes, and much more. + +### Dolphin and the modern Linux desktop + +Dolphin, like KDE, thrives on providing you, the user, options, by letting you decide what you want activated and what you want to ignore. Dolphin isn't the minimal lightweight file manager you compile and install on a [10-year old computer you've rescued from the bin][4] (although I've run it as a file manager for [Fluxbox][5] on some surprisingly old computers with success), it's the one you feature on your latest PC build. In short, Dolphin is the high tech desktop experience you'd expect from an advanced operating system like Linux. Dive in! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-dolphin + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/2022-09/dolphinwindow.png +[2]: https://opensource.com/sites/default/files/2022-09/dolphin-minimal.png +[3]: https://opensource.com/sites/default/files/2022-09/dolphin-drag-and-drop.png +[4]: https://opensource.com/article/19/7/how-make-old-computer-useful-again +[5]: https://opensource.com/article/19/12/fluxbox-linux-desktop diff --git a/sources/tech/20221201.4 ⭐️⭐️ Getting Nostalgic With the Historical Coherent Operating System.md b/sources/tech/20221201.4 ⭐️⭐️ Getting Nostalgic With the Historical Coherent Operating System.md new file mode 100644 index 0000000000..d4cf8dcba5 --- /dev/null +++ b/sources/tech/20221201.4 ⭐️⭐️ Getting Nostalgic With the Historical Coherent Operating System.md @@ -0,0 +1,85 @@ +[#]: subject: "Getting Nostalgic With the Historical Coherent Operating System" +[#]: via: "https://itsfoss.com/coherent-operating-system/" +[#]: author: "Bill Dyer http://www.dyrobooks.com/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Getting Nostalgic With the Historical Coherent Operating System +====== + +Here’s a blast from the past. Years ago, back in the early 1990s, there was an operating system called Coherent. The price wasn’t so bad – $99. A few years ago, it was made freely available. Coherent never claimed to be UNIX, but UNIX-like. I learned a lot with that OS. + +When the Mark Williams Company closed in 1995, Coherent was a closed-source product. In 2015, it was released under a 3-clause BSD License so, if you’re interested, you can grab a free copy of Coherent at [Internet Archive][1] or [here][2].  + +Here’s a little look-back at Coherent. + +### Coherent’s Requirements + +Coherent was able to run on most Intel-based PCs with Intel 8088, 286, 386, and 486 processors. Coherent version 3, the version I started on, required at least a 286, and Coherent version 4 needed a 386. The drives that were supported were MFM or RLL. + +![coherent v3.0 ad 1][3] + +Coherent 3.0 which was a clone of the AT&T V7 UNIX. It ran very well on a ‘386 and 20mb MFM drive. When Coherent 4.0 came out, I upgraded and also replaced the hard disk to a 40mb MFM unit. In both cases, Coherent ran on less than 10mb. Coherent 4 was closer to AT&T’s Sys5R4 UNIX. + +Coherent 3.0 was a 16-bit OS but Coherent 4.0 was a bigger upgrade, able to take advantage of 32-bit operations. It still had a handful of programs limited to 16-bit operations, but all in all, it was a good system. + +### Coherent’s Offerings + +For a small package, it was remarkably complete. Not only was it a standalone operating system, but came with a big box of goodies, such as a Bourne Shell, C compiler, assembler, debugger, DOS disk support, uucp, at least three editors, some games, mail, and around 200 of the most used and useful UNIX commands. + +![coherent v4.0 ad2][4] + +The shell had a few bugs and was missing some features, but it was sufficient for the small stuff I normally did with it. X Windows was available, but I don’t think it came with the basic system and, if I remember correctly, was a separate purchase. I remember having it and it worked, but it had a few problems, but the Mark Williams Company continually worked on it. + +### Using Coherent + +Having a small UNIX system on a personal PC at home was nice. I was well versed with DOS, but UNIX was the operating system in use where I worked at the time and I preferred it over DOS and Windows 3.1. Coherent wasn’t as powerful as UNIX but it was a good learning tool. With it, I learned much about system administration and got a massive amount of hands-on experience with the command line. + +Programming was fun, but since the C compiler only had small model support (64K of code and 64K of data), I was limited in what programs I could write. Some might laugh at the small model, but some nifty programs could be written with it. + +Using Coherent at home, I was a single user, using it mainly for the experience with the command line and to learn a bit about system administration. + +I really can’t recall how well Coherent handled networking; I never concerned myself with it. I don’t recall it having a lot of network support – it certainly didn’t have TCP/IP. However, it did have `uucp`. It took me some time to get it working right, but once that was done, it delivered all the Usenet news I could ever want. + +One might think that it wouldn’t do well in a large setting, such as a school, but I attended one college that actually had several Coherent workstations. They were used mainly as training stations for classes in operating systems. + +### The XWindows vs. TCP/IP Argument + +There are some arguments over whether or not the Mark Williams Company’s efforts on XWindows was wise, or if they should have concentrated on implementing a TCP/IP stack. To some, this is the main reason why the Mark Williams Company folded. + +The Mark Williams Company spent a lot of time and effort on getting X Windows to work. I don’t recall that they truly finished, but they had at least gone a long way toward completing it. It makes sense to me that they would focus on it – the goal was to make an affordable UNIX-like system and X was definitely considered a part of UNIX. + +A small company would have to choose its projects carefully. XWindows was chosen. Even Linux, in its early days, didn’t offer TCP/IP support at first – [KA9Q][5] was used for a short time, so I don’t think that the decision to focus on XWindows was unwise at all. + +### Conclusion + +Coherent just couldn’t keep up with the competition and the Mark Williams Company closed in 1995. I certainly don’t consider Coherent a failure in the slightest, however. It was an excellent UNIX option at the time and the efforts of the Mark Williams Company was quite impressive. + +I learned more about the command line and general system administration than I ever could have where I worked at the time. I once recommended Coherent to an individual who wanted to learn UNIX on her own. After a year with it, she hired on as a system administrator. The last I heard from her, she was the senior UNIX admin at a large site in the Midwest US. + +I’m right glad that I got to play with Coherent. I credit Coherent with being a key part in my education; it had a part in how my career developed and I went on to be a system administrator on different UNIX systems. + +At home, I would eventually settle on Linux – a decision I do not regret, but if you decide to play with it remember that it’s old – you will be experiencing a bit of history. If you would like to try out Coherent, you can run it through VirtualBox. Thorough setup instructions can be found at: [https://www.autometer.de/unix4fun/coherent/][6]. Not only does the page cover VirtualBox setup, but the page also contains a link to disk images and installation instructions – a one-stop site. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/coherent-operating-system/ + +作者:[Bill Dyer][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: http://www.dyrobooks.com/ +[b]: https://github.com/lkxed +[1]: https://archive.org/details/mwc-coherent-unix-clone +[2]: http://www.nesssoftware.com/home/mwc/source.php +[3]: https://itsfoss.com/wp-content/uploads/2022/11/coherent-v3.0-ad-1.jpg +[4]: https://itsfoss.com/wp-content/uploads/2022/11/coherent-1.jpg +[5]: http://www.ka9q.net/code/ka9qnos/ +[6]: https://www.autometer.de/unix4fun/coherent/ diff --git a/sources/tech/20221203.0 ⭐️⭐️ Feel like a Linux wizard with the Thunar file manager.md b/sources/tech/20221203.0 ⭐️⭐️ Feel like a Linux wizard with the Thunar file manager.md new file mode 100644 index 0000000000..7b7fb97fec --- /dev/null +++ b/sources/tech/20221203.0 ⭐️⭐️ Feel like a Linux wizard with the Thunar file manager.md @@ -0,0 +1,79 @@ +[#]: subject: "Feel like a Linux wizard with the Thunar file manager" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-thunar" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Feel like a Linux wizard with the Thunar file manager +====== + +Computers are fancy filing cabinets, full of virtual folders and files waiting to be referenced, cross-referenced, edited, updated, saved, copied, moved, renamed, and organized. In this article, I'll take a look at a file manager for your Linux system. + +The [XFCE desktop][1] is well-known and respected for its careful and methodical development cycle. It's actively maintained and has continued to evolve over the years, its focus tends to be on delivering a consistent experience with just the right amount of new features. It's a pleasure to use XFCE on everything from the old computer you've repurposed as a home server to the new PC you've just built and are too greedy to waste GPU cycles on fancy desktop effects. XFCE is a budget desktop that doesn't make you skimp on experience, and its file manager exemplifies that. + +### Linux Thunar file manager + +The Thunar file manager is a lightweight file manager based on the GTK toolkit. If you're running GNOME already, you have most of what you need to run Thunar already installed. If you're not running GNOME, you probably still have most of what you need to run Thunar, because much of what Thunar uses is part of a typical Linux install. + +The visual design of Thunar is, like much of XFCE, "normal." By that, I mean it's exactly what you'd expect from a file manager: the side pane on the left contains common places you use often, and the pane on the right lists the files and folders on your system. + +![Image of the Thunar file manager.][2] + +### Side pane + +The panel on the left contains the default folders of a conventional POSIX system: Desktop, Documents, Downloads, Music, Pictures, Videos, and so on. It also has a slot for removable devices, such as USB drives and SD cards. In addition, it has a place for Network locations, in the event that you interact with a remote computer or a file share. + +Most options in Thunar are provided through its main menu, and that includes the option to change the side pane to a tree view. This view displays common places in an expandable list so you can collapse an entry you're not using at the moment. + +![Image of a side panel in Thunar.][3] + +### Menu + +Much of Thunar's power is accessible through its menu bar. Sure, there's a right-click contextual menu, but you will find the most powerful functions in the main menu. From the menu, you can perform quick but meaningful actions. + +- **Invert selection**: Select one or more items, then go to the **Edit** menu and choose **Invert selection**. Everything you had selected is now unselected, and everything else in the directory is selected. +- **Select by pattern**: Select files based on some combination of characters appearing in their names. For instance, type in `jpg`to select all filesendingin**`*jpg`,** or**`*nix`** to select all files containing the contiguous letters `nix`. +- **Show hidden files**: Sometimes you need to see the files you normally want out of sight. +- **Open terminal here**: Open a terminal window with its working directory set to your location. +- **Make link**: Make a symlink (sometimes called an "alias" or "shortcut") of the selected file or folder. + +### Fast + +The beautiful thing about Thunar, aside from its straight-forward simplicity, is how it defaults to immediately performing the action you've requested. There are file managers out there (including my personal favorite) that, at least without advanced knowledge of special shortcuts, interrupt a process in the interest of verification or clarification. Thunar only pauses when it absolutely needs feedback from you. + +A great example is the **Make link** function in the **Edit** menu. In some file managers, when you create a symlink you're asked first whether or not you want to make a symlink, and then maybe what you'd like to name the symlink, and maybe even where you want the symlink to be created. All of that's really important information and results in a targeted and precise action. However, sometimes you don't need precision. Sometimes you just want speed, which is why Thunar just _makes the symlink_. No questions asked. When you tell it to create a symlink, it creates a symlink, with a name prefixed with "link to", in your current directory. If that's not what you wanted the symlink to be named, then you can rename it. If that's not where you want the symlink to exist, then you can relocate it. Your upfront investment is minimal, and you get results fast. + +### Bulk rename + +Possibly Thunar's greatest contribution to the desktop is its bulk renaming function. How many times have you come home from vacation with a hundred photos called some variation of `IMG_2022-01-04_10-55-12.JPG`, which you add to a thousand other photos with similarly meaningless names? There are lots of [photo managers][4] out there that can help you [organize, browse, and tag][5] those photos, but there's nothing like a descriptive name to start out with. With Thunar, you can select hundreds of files, right-click, and select **Rename** for a bulk renaming interface. + +![Image of Thunar's bulk rename window.][6] + +Imagine opening your `~/Pictures` folder and seeing hundreds of photos with meaningful names! You probably don't even dare, but with Thunar it's actually possible! + +### Runic magic + +It's unclear whether Thunar is the product of mortal programmers or the magical denizens of Asgard. There's a very high probability of the former, but there's also the likelihood that you'll feel like the latter when you use it. It's a humble and simple file manager with a powerful feature set. It may even be a worthy replacement for your existing GNOME file manager, or at the very least worthy of being included in your dock. Install Thunar and wield its power. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-thunar + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/19/12/xfce-linux-desktop +[2]: https://opensource.com/sites/default/files/2022-09/thunarfilemanager.png +[3]: https://opensource.com/sites/default/files/2022-09/thunar-side-panel.png +[4]: https://opensource.com/life/16/5/how-use-digikam-photo-management +[5]: https://opensource.com/life/16/4/how-use-darktable-digital-darkroom +[6]: https://opensource.com/sites/default/files/2022-09/thunar-bulk-rename.png diff --git a/sources/tech/20221204.0 ⭐️⭐️ Make your Linux computer feel faster with the Xfe file manager.md b/sources/tech/20221204.0 ⭐️⭐️ Make your Linux computer feel faster with the Xfe file manager.md new file mode 100644 index 0000000000..0b2541b075 --- /dev/null +++ b/sources/tech/20221204.0 ⭐️⭐️ Make your Linux computer feel faster with the Xfe file manager.md @@ -0,0 +1,91 @@ +[#]: subject: "Make your Linux computer feel faster with the Xfe file manager" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-xfe" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Make your Linux computer feel faster with the Xfe file manager +====== + +Computers are like filing cabinets, full of virtual folders and files waiting to be referenced, cross-referenced, edited, updated, saved, copied, moved, renamed, and organized. In this article, I'll look at a file manager for your Linux system. + +Back before NVMe drives and 12-core processors, applications could take seconds to launch. While that wait time is fine for a big application like LibreOffice or Blender, it's a little painful when it's a tiny application you use frequently. 2 seconds times 10 file manager windows in an hour, times 12 hours a day, is 4 whole minutes of wasted time. OK, I admit that's actually not that much when you do the math, but ask anybody and they'll tell you that it _felt_ like 4 hours. One way to make a computer, whether it's last year's model or something hot off the shelf, feel faster is to use "lightweight" applications. An application is usually considered lightweight when it's designed around minimal code libraries that don't demand much from your system's resources. + +The X File Explorer (Xfe) file manager is one of those applications. It's quick to launch, it doesn't feature fancy animations or effects, and it has few dependencies beyond some basic libraries, most of which are probably already on your Linux system. + +![Image of the XFE file manager.][1] + +### Install on Linux + +On Fedora, CentOS, Mageia, and similar, you can install Xfe from your software repository: + +``` +$ sudo dnf install xfe +``` + +On Debian, Elementary, Linux Mint, and similar: + +``` +$ sudo apt install xfe xfe-themes +``` + +Xfe is open source, so you can alternately just [download the source code][2] and [compile it yourself][3]. + +### Using Xfe + +The first thing you're likely to notice about Xfe is that by default it's a little top-heavy. There's a menu bar, and then not one but five toolbars along the top of the window. Those toolbars aren't hard coded in position, though, and you can choose which toolbar you actually need on screen at all times in the **View** menu. Personally, I keep the **Location** toolbar on and hide the rest. But I think all Xfe users are likely to have a favorite set of toolbars all their own, so when you first try Xfe give yourself time to see which toolbar you actually end up using. + +Here's a list of the toolbars and some of the important buttons they each contain: + +- **General**: Navigation buttons, view refresh, new file, new directory, copy, cut, paste, and other standard file manager actions. This could replace the menu bar, were there a way to hide the menu bar. +- **Tools**: Launch a new Xfe window as user or root, execute a command, launch a terminal. +- **Panel**: Split the Xfe window into two panes, two panes with panels, one pane with panel, or a single pane. +- **Location**: Enter a path for quick navigation. + +It's not just the toolbars that are configurable. You can hide most components of Xfe, including the side pane displaying your filesystem tree and the status bar. Xfe can look as minimal as its memory footprint: + +![Image of Xfe in a minimal style.][4] + +### Power menu + +The beautiful thing about Xfe's design is that you never sacrifice features regardless of your configuration. You can hide toolbars and panels, but you still have access to every option from the menu. + +From the **Panel** menu, for instance, you can filter files by regex strings, show hidden files, activate and deactivate thumbnails (the fewer things your computer has to render, the faster it can draw the screen), switch icon views between a list or detailed list, choose to ignore case, reverse the sort order, and more. + +There's even a menu for the **Trash**, so you can always get to the place you need to be to rescue something you've thrown out. + +### Two dots + +The feature I appreciate more than I'd expected I would is Xfe's inclusion of a meta folder with a name of just two dots. The `..` folder isn't really a folder. It's shorthand for going "up" in your directory tree. If you don't think of folders existing in a tree configuration, that might not make immediate sense, but in computing, you can express the hierarchy of data storage in the same way you might express a family tree. If the `penguins` folder contains the `emperor` and `rockhopper` folders, then you can think of the `penguin` directory as their "parent." + +![Image of a file system tree.][5] + +Computers use two dots as an instruction to move out of the current directory and "up" the tree. When you're in the `rockhopper` folder, two dots mean _ascend up_ to `penguins`. When you're in the `emperor` folder, two dots also mean _ascend up_ to `penguins`, because `emperor` and `rockhopper` are both "children" of the `penguins` directory. + +This two dot convention is common in Linux and in fact the entire Internet (you can test this out by appending `/..` to the end of the URL of this article. It won't get you very far due to restricted permissions, but it does successfully take you off this page, so wait until you're done reading!) Having access to two dots in every directory of Xfe is a familiar and convenient way to navigate. + +### Make it quick + +Running fast applications makes your computing faster. It's a secret that experienced Linux users have known for years, and it's one of the many reasons you often see Linux users with ancient computers. When you use a terminal and a handful of lightweight applications, even a computer from a decade ago doesn't feel slow. The Xfe file manager, whether you use it for speed or just because it's a reliable app that's got everything you need, is an excellent choice for a file manager. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-xfe + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/2022-09/xfefilemanager.png +[2]: https://sourceforge.net/projects/xfe/ +[3]: https://opensource.com/article/21/11/compiling-code +[4]: https://opensource.com/sites/default/files/2022-09/xfe-minimal.png +[5]: https://opensource.com/sites/default/files/2022-09/filesystem-tree.png diff --git a/sources/tech/20221205.4 ⭐️⭐️ True Lightweight Notepad for Ubuntu and Other Linux.md b/sources/tech/20221205.4 ⭐️⭐️ True Lightweight Notepad for Ubuntu and Other Linux.md new file mode 100644 index 0000000000..f11a34a66c --- /dev/null +++ b/sources/tech/20221205.4 ⭐️⭐️ True Lightweight Notepad for Ubuntu and Other Linux.md @@ -0,0 +1,220 @@ +[#]: subject: "True Lightweight Notepad for Ubuntu and Other Linux" +[#]: via: "https://www.debugpoint.com/lightweight-notepad-linux/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +True Lightweight Notepad for Ubuntu and Other Linux +====== + +**A current list of lightweight and resource-friendly basic GUI-based notepad(s) for Ubuntu and other Linux.** + +![][1] + +Linux is a popular operating system known for its speed, stability, and flexibility. One of the key features of Linux is the ability to customize and configure the system to suit your needs. This includes choosing the right applications and tools to use on your system. This tutorial will explore some of the best lightweight notepads for Linux. We will look at their features, pros, and cons and provide tips on choosing the right notepad for your needs. Whether you’re a student, programmer, or simply someone who likes to take notes, a good notepad is an essential tool for any Linux user. + +### Why this list? + +We highlighted some of the best Notepad++ replacements for Ubuntu and other Linux distros a few days back. Since Notepad++ is an advanced notepad, it may not fit the actual lightweight criteria. For example, if you want to take some quick notes and nothing else, then Notepad++ or code editors can be an overkill. + +Also, a thin resource footprint-based editor can be kept open for longer without worrying about memory and other things. + +In addition, many DebugPoint readers commented about the following editors in the [Notepad++ article][2]. Hence this special list. + +### Best lightweight notepad for Ubuntu and other distros + +#### 1. Mousepad + +The first on this list is the popular text editor – mousepad. It’s Xfce desktop’s default text editor developed with GTK. It’s simple and lightweight but has more settings and features, especially if you compare it with the leafpad in this list. + +You may call it a leafpad with some additional features. + +Key feature includes dark/light themes, tabbed editing support, font and plugin features. You can discover more such settings after installation and during usage. + +Here’s how it looks. + +![mousepad running in Ubuntu][3] + +Installing mousepad is easy since it is available in all the major Linux distro’s repo. + +For Ubuntu, Linux Mint and related distributions, use the following command to install. + +``` +sudo apt install mousepad +``` + +For Fedora Linux, use the following command: + +``` +sudo dnf install mousepad +``` + +And Arch Linux users can install it using the following command: + +``` +sudo pacman -S mousepad +``` + +#### 2. Featherpad + +[FeatherPad][4] is a lightweight Qt-based text editor for Ubuntu and other Linux distros that is independent of any desktop environment. Some key features include drag-and-drop support, including the ability to detach and attach tabs, virtual desktop awareness, and an optional permanent search bar with individual entries for each tab. + +In addition, it can instantly highlight found matches when searching, a docked window for text replacement and support for showing line numbers and jumping to specific lines. + +Furthermore, featherpad can detect text encoding, provide syntax highlighting for common programming languages, and support session management. It also has features like spell-checking with Hunspell, text zooming, printing, and auto-saving. + +Installing featherpad is easy. + +For Ubuntu and related distros you can install it using the following command from the terminal: + +``` +sudo apt install featherpad +``` + +For Fedora Linux, use the following command to install; + +``` +sudo dnf install featherpad +``` + +Arch Linux users can use the following to install: + +``` +sudo pacman -S featherpad +``` + +![featherpad running in Ubuntu][5] + +#### 3. Leafpad + +[Leafpad][6] is a simple and lightweight text editor for Linux based on GTK. It is designed to be fast, easy to use, and require minimal resources. Leafpad features a clean and intuitive user interface, with all the basic text editing tools you need, such as cut, copy, and paste, and support for undo and redo. Furthermore, it also includes support for syntax highlighting for several programming languages, making it a useful tool for programmers. + +Leafpad is a popular choice among Linux users due to its simplicity and efficiency. It is perhaps the exact replacement for the Windows Notepad application. It has all the basic features, including word wrap, line numbers, font selection and auto-indentation. + +Here’s how it looks. The most simple and lightweight notepad in this list. + +![leafpad - a simple notepad running in Ubuntu][7] + +But installing Leafpad is a little tricky in Ubuntu. Unfortunately, it’s unavailable in the Universe repo and only available as Snap and not Flatpak. + +However, you can get it from the Debian repo and install it in Ubuntu. + +Download the deb file from the Debian repo and install it using the following commands. + +``` +wget http://ftp.us.debian.org/debian/pool/main/l/leafpad/leafpad_0.8.18.1-5_amd64.deb +``` + +``` +sudo dpkg -i leafpad_0.8.18.1-5_amd64.deb +``` + +Fedora users can install it using the following command. + +``` +sudo dnf install leafpad +``` + +And Arch Linux users via below. + +``` +sudo pacman -S leafpad +``` + +#### 4. Beaver editor + +[Beaver][8] editor is a lightweight, fast-starting text editor with minimal dependencies. It is built on the GTK+2 library and does not require additional libraries to be installed, making it well-suited for use on older computers and in small Linux distributions. Beaver’s core features include basic functionality and syntax highlighting, and additional functionality can be added through plugins. Its interface is clean and efficient, and it includes high-quality Tango artwork. + +![Beaver editor running in Ubuntu][9] + +It’s a little older app, but it works fine. However, it is only available for Ubuntu and related distros at the moment. You can download the pre-compiled deb file and install it using the following command: + +``` +wget https://www.bristolwatch.com/debian/packages/beaver_amd64.deb +``` + +``` +sudo dpkg -i beaver_amd64.deb +``` + +#### 5. Gedit + +The [gedit text editor][10] is the default text editor for the GNOME desktop environment and is used by millions of people on various Linux distributions such as Ubuntu and Fedora. It is a part of the core GNOME applications and is intended to be a lightweight, general-purpose text editor. However, gedit also includes many productivity features through its settings and installed plugins, allowing it to compete with other popular text editors. + +That said, it has been “demoted” recently from its default editor tag on the GNOME desktop. The modern GTK4-based [gnome-text-editor][11] has replaced it. + +However, it’s one of the best editors, and you can expand it from a simple editor to a more advanced editor using plugins and [various tips][12]. + +![gedit text editor][13] + +To install it, use the following commands for Ubuntu and related distributions/ + +``` +sudo apt install gedit +``` + +For Fedora Linux users, use the following command. + +``` +sudo dnf install hgedit +``` + +Finally, Arch Linux users can use the following command to install it: + +``` +sudo pacman -S gedit +``` + +### Memory and resource comparison + +Since we are discussing the performance here, which is key to the comparison, we listed below the memory consumed by all the above apps in the latest Ubuntu install. + +As you can see, the Xfce’s mousepad is the most lightweight, whereas the gedit is the heavier. + +| **App name** | **memory consumed at idle in Ubuntu** | +| :- | :- | +| mousepad | 303 KB | +| featherpad | 1.7 MB | +| leafpad | 7.7 MB | +| beaver pad | 11.1 MB | +| gedit | 30.2 MB | + +### Wrapping Up + +In conclusion, a lightweight notepad for Linux is essential for every use case. Whether you need to take notes, write code, or edit text, a lightweight notepad can make your work faster, easier, and more efficient. The Linux operating system offers a wide range of notepad applications, each with its unique features and capabilities. + +This top list of lightweight Linux notepad(s) explored some apps, including Leafpad, Gedit, mousepad and others. + +No matter which notepad you choose, you can be sure it will provide the features you need to complete your work on your Linux system. + +Which one is your favourite? Let me know in the comment box. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/lightweight-notepad-linux/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/12/notepad-1head.jpg +[2]: https://www.debugpoint.com/notepad-replacement-ubuntu/ +[3]: https://www.debugpoint.com/wp-content/uploads/2022/12/mousepad-running-in-Ubuntu.jpg +[4]: https://github.com/tsujan/FeatherPad +[5]: https://www.debugpoint.com/wp-content/uploads/2022/12/featherpad-running-in-Ubuntu.jpg +[6]: http://tarot.freeshell.org/leafpad/v +[7]: https://www.debugpoint.com/wp-content/uploads/2022/12/leafpad-a-simple-notepad-running-in-Ubuntu.jpg +[8]: https://sourceforge.net/projects/beaver-editor/ +[9]: https://www.debugpoint.com/wp-content/uploads/2022/12/Beaver-editor-running-in-Ubuntu.jpg +[10]: https://wiki.gnome.org/Apps/Gedit +[11]: https://www.debugpoint.com/gnome-text-editor/ +[12]: https://www.debugpoint.com/gedit-features/ +[13]: https://www.debugpoint.com/wp-content/uploads/2022/12/gedit-text-editor.jpg diff --git a/sources/tech/20221206.0 ⭐️⭐️ Top 5 Live Streaming Applications for Ubuntu and Other Linux [2022 Edition].md b/sources/tech/20221206.0 ⭐️⭐️ Top 5 Live Streaming Applications for Ubuntu and Other Linux [2022 Edition].md new file mode 100644 index 0000000000..93ee5ab1e4 --- /dev/null +++ b/sources/tech/20221206.0 ⭐️⭐️ Top 5 Live Streaming Applications for Ubuntu and Other Linux [2022 Edition].md @@ -0,0 +1,185 @@ +[#]: subject: "Top 5 Live Streaming Applications for Ubuntu and Other Linux [2022 Edition]" +[#]: via: "https://www.debugpoint.com/live-streaming-applications-linux-2022/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Top 5 Live Streaming Applications for Ubuntu and Other Linux [2022 Edition] +====== + +**This post lists the top five live streaming applications for Ubuntu Linux with features, highlights, download details, and comparison.** + +It is the best time to incorporate online video content for your business. Why? Because research suggests that the global online video market is growing at a rate of ~20% per year. + +And thanks to some excellent software from developers, it has become easy for anyone to create video content and stream them over several popular platforms such as YouTube and Twitch. If you think about it, you see you are consuming more video content today while online than text-based content. + +So, in this post, we will list out some of the free software for Ubuntu and other Linux primarily that are easy to use for creating super interesting live streaming content for you and your businesses. + +### Top 5 Live Streaming Applications for Linux in 2022 + +#### OBS Studio + +The first free application in this list is OBS Studio (also known as Open Broadcaster Software). It is a live streaming application with screencasting capabilities available for Linux, Windows and macOS. + +OBS Studio is the best one on this list because several reasons. The encoding is built-in, and it supports RTMP broadcasting, multiple sources, webcams, green-screen, capture cards and your application windows. + +The user interface is reasonably straightforward and feature-rich. You can get help from third-party developed plugins to extend their functionalities, such as – mixing live tweets from Twitter on your streaming media while live streaming. However, OBS does not support multi-bitrate streaming. + +![OBS Studio - Live Streaming Applications for Linux][1] + +**How to Install** + +OBS Studio is available in all Linux Distribution’s official repositories. Detailed instruction for installations is present in the below link. + +[Download OBS Studio][2] + +More Information + +- [Home Page][3] +- [Documentation][4] + +#### VokoscreenNG + +The second application we would feature in this list is VokoscreenNG. It is a fork of the discontinued Vokoscreen project. The new application is entirely written in Qt with the GStreamer library. It can record your screen and accept multiple audio and video sources. VokoscreenNG’s toolbox is also quite impressive. It includes a magnifying glass, timer, system tray plugins that ease up your workflow. + +It is available for Linux and Windows for free. + +![vokoscreenNG - Live Streaming Applications for Linux][5] + +**How to Install** + +You can download the compressed executable from the below link for Linux systems. Once downloaded, extract them. Then execute the binary to launch the application. + +Remember, this application requires X11, PulseAudio and GStreamer plugins installed in your Linux system to work. If you use a modern Linux system with Wayland and Pipewire sound server (e.g. Fedora), this application may not work. + +[Download VokoscreenNG][6] + +**More Information** + +- [Home page][7] + +#### Restreamer + +The Restreamer application lets you live stream videos and screencasts directly to your website without any streaming provider. It is also possible to use popular streaming solutions, such as YouTube, Twitch, etc., with this application. + +This application is feature-rich and comes with a fair list of features. Here’s a quick peek at its features: + +- H.264 streaming support +- Built-in HTML5 video play +- Available for Linux, macOS, Windows and as Docker images +- Supports your own website plus YouTube, Twitchm, Facebook, Vimeo, Wowza and more +- Multiple video source support – [IP Camera][8], USB Cameram or any H.2645 streams +- Encoding and Audio source support +- Snapshots as form of JPEG support in regular interval +- Access stream status via JSON HTTP API for additional programming + +![Restreamer][9] + +**How to Install** + +The installation of Restreamer is a little tricky because it’s distributed via Docker images. You can find the instructions to install Linux, Windows, and macOS on the below link. + +[Download Restreamer][10] + +**More Information** + +- [Home Page][11] +- [Documentation][12] +- [Source Code][13] + +#### ffscreencast + +The ffscreencast is a command-line streaming application that uses the ffmpeg library. It leverages the power of ffmpeg and acts as a wrapper for it. Although it is available as a command line, you can use its powerful features, such as multiple sources and recordings devices, directly via the terminal. It supports multiple display setups as well. You can also overlay your camera feed on top of your desktop screencast. + +![Open Streaming Platform - - Live Streaming Applications for Linux][14] + +**How to Install** + +To install this application, you need to clone the git repo and then copy the contents to /bin directory for the global execution of the `ffscreencast` command. + +``` +git clone https://github.com/cytopia/ffscreencastcd ffscreencastsudo cp bin/ffscreencast /usr/local/bin +``` + +You can run this application with `ffscreencast` command from the terminal. + +[Source code & Home page][15] + +#### Open Streaming platforms + +The final application in this list is Open Streaming Platform (OSP), an open-source RTMP streamer software that can act as a self-hosted alternative to YouTube LIVE, Twitch.tv, etc. + +This application is feature-rich and powerful when used correctly. Because of the below essential features: + +- RTMP Streaming from an input source like Open Broadcast Software (OBS). +- Multiple Channels per User, allowing a single user to broadcast multiple streams simultaneously without needing multiple accounts. +- Video Stream Recording and On-Demand Playback. +- Manual Video Uploading of MP4s that are sourced outside of OSP +- Video Clipping – Create Shorter Videos of Notable Moments +- Real-Time Chat Moderation by Channel Owners (Banning/Unbanning) +- Admin-Controlled Adaptive Streaming +- Protected Channels – Allow Access only to the audience you want. +- Live Channels – Keep chatting and hang out when a stream isn’t on +- Webhooks – Connect OSP to other services via fully customizable HTTP requests, which will pass information +- Embed your stream or video directly into another web page easily +- Share channels or videos via Facebook or Twitter quickly +- Ability to Customize the UI as a Theme for your own personal look + +**How to Install** + +To install the Open Streaming Platform, follow the below page for detailed instructions. + +[Download Open Streaming Platform][16] + +**More Information** + +- [Home Page][17] +- [Source Code][18] +- [Documentation][19] + +### Closing Notes + +There are very few free and open-source live streaming applications available for Linux. However, several commercial live streaming applications are available, which may give you more options, quality, and support. But as I said, they may cost you some bucks. So, if you are new to the streaming world, you may want to get started with the above-listed free live streaming applications in Ubuntu or other Linux systems. I hope this article gives you ideas about which to use based on your need and get you started. + +Let me know your favourite live streaming software in the comment box below. + +Cheers. + +[Next:How to Create Ubuntu, Linux OS Bootable USB in Windows][20] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/live-streaming-applications-linux-2022/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/02/OBS-Studio.jpg +[2]: https://obsproject.com/wiki/install-instructions#linux +[3]: https://obsproject.com/ +[4]: https://obsproject.com/wiki/Home +[5]: https://www.debugpoint.com/wp-content/uploads/2022/02/vokoscreenNG.jpg +[6]: https://linuxecke.volkoh.de/vokoscreen/vokoscreen-download.html +[7]: https://linuxecke.volkoh.de/vokoscreen/vokoscreen.html +[8]: https://www.debugpoint.com/2018/08/onvifviewer-internet-camera-viewer-for-linux/ +[9]: https://www.debugpoint.com/wp-content/uploads/2022/02/Restreamer.jpg +[10]: https://datarhei.github.io/restreamer/docs/installation-index.html +[11]: https://datarhei.github.io/restreamer/ +[12]: https://datarhei.github.io/restreamer/docs/index.html +[13]: https://github.com/datarhei/restreamer +[14]: https://www.debugpoint.com/wp-content/uploads/2022/02/Open-Streaming-Platform-2048x1026.jpg +[15]: https://github.com/cytopia/ffscreencast +[16]: https://wiki.openstreamingplatform.com/Install/Standard +[17]: https://openstreamingplatform.com/ +[18]: https://gitlab.com/Deamos/flask-nginx-rtmp-manager +[19]: https://wiki.openstreamingplatform.com/ +[20]: https://www.debugpoint.com/how-to-create-ubuntu-linux-os-bootable-usb-in-windows/ diff --git a/sources/tech/20221206.3 ⭐️⭐️ A data scientist's guide to open source community analysis.md b/sources/tech/20221206.3 ⭐️⭐️ A data scientist's guide to open source community analysis.md new file mode 100644 index 0000000000..d1f530342f --- /dev/null +++ b/sources/tech/20221206.3 ⭐️⭐️ A data scientist's guide to open source community analysis.md @@ -0,0 +1,201 @@ +[#]: subject: "A data scientist's guide to open source community analysis" +[#]: via: "https://opensource.com/article/22/12/data-scientists-guide-open-source-community-analysis" +[#]: author: "Cali Dolfi https://opensource.com/users/cdolfi" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +A data scientist's guide to open source community analysis +====== + +In the golden age of data analysis, open source communities are not exempt from the frenzy around getting some big, fancy numbers onto presentation slides. Such information can bring even more value if you master the art of generating a well-analyzed question with proper execution. + +You might expect me, a [data scientist][1], to tell you that data analysis and automation will inform your community decisions. It's actually the opposite. Use data analysis to build on your existing open source community knowledge, incorporate others, and uncover potential biases and perspectives not considered. You might be an expert at implementing community events, while your colleague is a wiz at all things code. As each of you develops visualizations within the context of your own knowledge, you both can benefit from that information. + +Let's have a moment of realness. Everyone has a thousand and one things to keep up with, and it feels like there is never enough time in a day to do so. If getting an answer about your community takes hours, you won't do it regularly (or ever). Spending the time to create a fully developed visualization makes it feasible to keep up with different aspects of the communities you care about. + +With the ever-increasing pressure of being "data-driven," the treasure trove of information around open source communities can be a blessing and a curse. Using the methodology below, I will show you how to pick the needle out of the data haystack. + +### What is your perspective? + +When thinking about a metric, one of the first things you must consider is the perspective you want to provide. The following are a few concepts you could establish. + +**Informative vs. influencing action:** Is there an area of your community that is not understood? Are you taking that first step in getting there? Are you trying to decide on a particular direction? Are you measuring an existing initiative? + +**Exposing areas of improvement vs. highlighting strengths:** There are times when you are trying to hype up your community and show how great it is, especially when trying to demonstrate business impact or advocate for your project. When it comes to informing yourself and the community, you can often get the most value from your metrics by identifying shortcomings. Highlighting strengths is not a bad practice, but there is a time and place. Don't use metrics as a cheerleader inside your community to tell you how great everyone is; instead, share that with outsiders for recognition or promotion. + +**Community and business impact:** Numbers and data are the languages of many businesses. That can make it incredibly difficult to advocate for your community and truly show its value. Data can be a way to speak in their language and show what they want to see to get the rest of your messaging across. Another perspective is the impact on open source overall. How does your community impact others and the ecosystem? + +These are not always either/or perspectives. Proper framing will help in creating a more deliberate metric. + +![Data science and machine learning workflow][2] + +People often describe some version of this workflow when talking about general data science or machine learning work. I will focus on the first step, codifying problems and metrics, and briefly mention the second. From a data science perspective, this presentation can be considered a case study of this step. This step is sometimes overlooked, but your analysis's actual value starts here. You don't just wake up one day and know exactly what to look at. Begin with understanding what you want to know and what data you have to get you to the true goal of thoughtful execution of data analysis. + +### 3 data analysis use cases in open source + +Here are three different scenarios you might run into in your open source data analysis journey. + +#### Scenario 1: Current data analysis + +Suppose you are starting to go down the analysis path, and you already know what you're looking into is generally useful to you/your community. How can you improve? The idea here is to build off "traditional" open source community analysis. Suppose your data indicates you have had 120 total contributors over the project's lifetime. That's a value you can put on a slide, but you can't make decisions from it. Start taking incremental steps from just having a number to having insights. For example, you can break out the sample of total contributors into active versus drifting contributors (contributors who have not contributed in a set amount of time) from the same data. + +#### Scenario 2: Community campaign impact measurement + +![Goals and impacts][3] + +Consider meetups, conferences, or any community outreach initiative. How do you view your impacts and goals? These two steps actually feed into each other. Once you establish the campaign goals, determine what can be measured to detect the effect. That information helps set the campaign's goals. It's easy to fall into the trap of being vague rather than concrete with plans when a campaign begins. + +#### Scenario 3: Form new analysis areas to impact + +![New analysis areas][4] + +This situation occurs when you work from scratch in data analysis. The previous examples are different parts of this workflow. The workflow is a living cycle; you can always make improvements or extensions. From this concept, the following are the necessary steps you should work through. Later in this article, there will be three different examples of how this approach works in the real world. + +#### Step 1: Break down focus areas and perspectives + +First, consider a magic eight ball—the toy you can ask anything, shake, and get an answer. Think about your analysis area. If you could get any answer immediately, what would it be? + +Next, think about the data. From your magic eight-ball question, what data sources could have anything to do with the question or focus area? + +What questions could be answered in the data context to move you closer to your proposed magic eight-ball question? It's important to note that you must consider the assumptions made if you try to bring all the data together. + +#### Step 2: Convert a question to a metric + +Here is the process for each sub-question from the first step: + +- Select the specific data points needed. +- Determine visualization to get the goal analysis. +- Hypothesize the impacts of this information. + +Next, bring in the community to provide feedback and trigger an iterative development process. The collaborative portion of this can be where the real magic happens. The best ideas often come when bringing a concept to someone that inspires them in a way you or they would not have imagined. + +#### Step 3: Analysis in action + +This step is where you start working through the implications of the metric or visualization you have created. + +The first thing to consider is if this metric follows what is currently known about the community. + +- If **yes**: Are there assumptions made that catered to the results? +- If **no**: You want to investigate further whether this is potentially a data or calculation issue or if it is just a previously misunderstood part of the community. + +Once you have determined if your analysis is stable enough to make inferences on, you can start to implement community initiatives on the information. As you are taking in the analysis to determine the next best step, you should identify specific ways to measure the initiative's success. + +Now, observe these community initiatives informed by your metric. Determine if the impact is observable by your priorly established measurement of success. If not, consider the following: + +- Are you measuring the right thing? +- Does the initiative strategy need to change? + +### Example analysis area: New contributors + +#### What is my magic eight-ball question? + +- Do people have an experience that establishes them as consistent contributors? + +#### What data do I have that goes into the analysis area and magic eight-ball question? + +- What contributor activity exists for repos, including timestamps? + +Now that you have the information and a magic eight-ball question, break the analysis down into subparts and follow each of them to the end. This idea correlates with steps 2 and 3 above. + +**Sub-question 1:** "How are people coming into this project?" + +This question aims to see what new contributors are doing first. + +**Data:** GitHub data on first contributions over time (issues, PR, comments, etc.). + +![Chart of first time contributions per quarter][5] + +**Visualization:** Bar chart with first-time contributions broken down by quarter. + +**Potential extension:** After you talk with other community members, further examination breaks the information down by quarter and whether the contributor was a repeat or drive-by. You can see what people are doing when they come in and if that tells you anything about whether they will stick around. + +![Chart of drive-by contributions per quarter][6] + +**Potential actions informed by this information:** + +- Does the current documentation support contributors for the most common initial contribution? Could you support those contributors better, and would that help more of them stay? +- Is there a contribution area that is not common overall but is a good sign for a repeat contributor? Perhaps PR is a common area for repeat contributors, but most people don't work in that area. + +**Action items:** + +- Label "good first issues" consistently and link these issues to the contribution docs. +- Add a PR buddy to these. + +**Sub-question 2:** "Is our code base really dependent on drive-by contributors?" + +**Data:** Contribution data from GitHub. + +![Chart of contributor types over time][7] + +**Visualization:** "Total contributions: Broken down by contributions by drive-by and repeat contributor." + +**Potential actions informed by this information:** + +- Does this ratio achieve the program's goals? Is a lot of the work done by drive-by contributors? Is this an underutilized resource, and is the project not doing its part to bring them in? + +### Analysis: Lessons learned + +Number and data analysis are not "facts." They can say anything, and your internal skeptic should be very active when working with data. The iterative process is what will bring value. You don't want your analysis to be a "yes man." Take time to take a step back and evaluate the assumptions you've made. + +If a metric just points you in a direction to investigate, that is a huge win. You can't look at or think of everything. Rabbit holes can be a good thing, and conversation starters can bring you to a new place. + +Sometimes exactly what you want to measure is not there, but you might be able to get valuable details. You can't assume that you have all the puzzle pieces to get an exact answer to your original question. If you start to force an answer or solution, you can take yourself down a dangerous path led by assumptions. Leaving room for the direction or goal of analysis to change can lead you to a better place or insight than your original idea. + +Data is a tool. It is not the answer, but it can bring together insights and information that would not have been accessible otherwise. The methodology of breaking down what you want to know into manageable chunks and building on that is the most important part. + +Open source data analysis is a great example of the care you must take with all data science: + +- The nuance of the topic area is the most important. +- The process of working through "what to ask/answer" is often overlooked. +- Knowing what to ask can be the hardest part, and when you come up with something insightful and innovative, it's much more than whatever tool you choose. + +If you are a community member with no data science experience looking at where to start, I hope this information shows you how important and valuable you can be to this process. You bring the insights and perspectives of the community. If you are a data scientist or someone implementing the metrics or visualizations, you have to listen to the voices around you, even if you are also an active community member. More information on data science is listed at the end of this article. + +### Wrap up + +Use the above example as a framework for establishing data analysis of your own open source project. There are many questions to ask of your results, and knowing both the questions and their answers can lead your project in an exciting and fruitful direction. + +#### More on data science + +Consider the following sources for more information on data science and the technologies that provide it with data: + +- [What is data science?][8] +- [What is Python?][9] +- [How to become a data scientist][10] +- [Data scientist: A day in the life][11] +- [What is big data?][12] +- [Whitepaper: Data-intensive intelligent applications in a hybrid cloud blueprint][13] +- [MariaDB and MySQL cheat sheet][14] +- [Latest data science articles][15] + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/data-scientists-guide-open-source-community-analysis + +作者:[Cali Dolfi][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/cdolfi +[b]: https://github.com/lkxed +[1]: https://enterprisersproject.com/article/2022/9/data-scientist-day-life?intcmp=7013a000002qLH8AAM +[2]: https://opensource.com/sites/default/files/2022-11/datascience-machinelearning-workflow.jpg +[3]: https://opensource.com/sites/default/files/2022-11/goals-impact.png +[4]: https://opensource.com/sites/default/files/2022-11/new-analysis-areas.png +[5]: https://opensource.com/sites/default/files/2022-11/first-time-contributions-per-quarter.png +[6]: https://opensource.com/sites/default/files/2022-11/driveby-contributions-per-quarter.png +[7]: https://opensource.com/sites/default/files/2022-11/contributor-types-over-time.png +[8]: https://opensource.com/resources/data-science?intcmp=7013a000002CxqkAAC +[9]: https://opensource.com/resources/python?intcmp=7013a000002CxqkAAC +[10]: https://opensource.com/article/17/9/data-scientist?intcmp=7013a000002CxqkAAC +[11]: https://enterprisersproject.com/article/2022/9/data-scientist-day-life?intcmp=7013a000002CxqkAAC +[12]: https://opensource.com/resources/big-data?intcmp=7013a000002CxqkAAC +[13]: https://www.redhat.com/en/resources/data-intensive-applications-hybrid-cloud-blueprint-detail?intcmp=7013a000002CxqkAAC +[14]: https://opensource.com/downloads/mariadb-mysql-cheat-sheet?intcmp=7013a000002CxqkAAC +[15]: https://opensource.com/tags/data-science?intcmp=7013a000002CxqkAAC diff --git a/sources/tech/20221206.4 ⭐️⭐️⭐️ A 10-minute guide to the Linux ABI.md b/sources/tech/20221206.4 ⭐️⭐️⭐️ A 10-minute guide to the Linux ABI.md new file mode 100644 index 0000000000..eec93fd329 --- /dev/null +++ b/sources/tech/20221206.4 ⭐️⭐️⭐️ A 10-minute guide to the Linux ABI.md @@ -0,0 +1,151 @@ +[#]: subject: "A 10-minute guide to the Linux ABI" +[#]: via: "https://opensource.com/article/22/12/linux-abi" +[#]: author: "Alison Chaiken https://opensource.com/users/chaiken" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +A 10-minute guide to the Linux ABI +====== + +Many Linux enthusiasts are familiar with Linus Torvalds' [famous admonition][1], "we don't break user space," but perhaps not everyone who recognizes the phrase is certain about what it means. + +The "#1 rule" reminds developers about the stability of the applications' binary interface via which applications communicate with and configure the kernel. What follows is intended to familiarize readers with the concept of an ABI, describe why ABI stability matters, and discuss precisely what is included in Linux's stable ABI. The ongoing growth and evolution of Linux necessitate changes to the ABI, some of which have been controversial. + +### What is an ABI? + +ABI stands for Applications Binary Interface. One way to understand the concept of an ABI is to consider what it is not. Applications Programming Interfaces (APIs) are more familiar to many developers. Generally, the headers and documentation of libraries are considered to be their API, as are standards documents like those for [HTML5][2], for example. Programs that call into libraries or exchange string-formatted data must comply with the conventions described in the API or expect unwanted results. + +ABIs are similar to APIs in that they govern the interpretation of commands and exchange of binary data. For C programs, the ABI generally comprises the return types and parameter lists of functions, the layout of structs, and the meaning, ordering, and range of enumerated types. The Linux kernel remains, as of 2022, almost entirely a C program, so it must adhere to these specifications. + +"[The kernel syscall interface][3]" is described by [Section 2 of the Linux man pages][4] and includes the C versions of familiar functions like "mount" and "sync" that are callable from middleware applications. The binary layout of these functions is the first major part of Linux's ABI. In answer to the question, "What is in Linux's stable ABI?" many users and developers will respond with "the contents of sysfs (/sys) and procfs (/proc)." In fact, the [official Linux ABI documentation][5] concentrates mostly on these [virtual filesystems][6]. + +The preceding text focuses on how the Linux ABI is exercised by programs but fails to capture the equally important human aspect. As the figure below illustrates, the functionality of the ABI requires a joint, ongoing effort by the kernel community, C compilers (such as [GCC][7] or [clang][8]), the developers who create the userspace C library (most commonly [glibc][9]) that implements system calls, and binary applications, which much be laid out in accordance with the Executable and Linking Format ([ELF][10]). + +![Cooperation within the development community][11] + +### Why do we care about the ABI? + +The Linux ABI stability guarantee that comes from Torvalds himself enables Linux distros and individual users to update the kernel independently of the operating system. + +If Linux did not have a stable ABI, then every time the kernel needed patching to address a security problem, a large part of the operating system, if not the entirety, would need to be reinstalled. Obviously, the stability of the binary interface is a major contributing factor to Linux's usability and wide adoption. + +![Terminal output][12] + +As the second figure illustrates, both the kernel (in linux-libc-dev) and Glibc (in `libc6-dev`) provide bitmasks that define file permissions. Obviously the two sets of definitions must agree! The `apt` package manager identifies which software project provided each file. The potentially unstable part of Glibc's ABI is found in the `bits/` directory. + +For the most part, the Linux ABI stability guarantee works just fine. In keeping with [Conway's Law][13], vexing technical issues that arise in the course of development most frequently occur due to misunderstandings or disagreements between different software development communities that contribute to Linux. The interface between communities is easy to envision via Linux package-manager metadata, as shown in the image above. + +### Y2038: An example of an ABI break + +The Linux ABI is best understood by considering the example of the ongoing, [slow-motion][14] "Y2038" ABI break. In January 2038, 32-bit time counters will roll over to all zeroes, just like the odometer of an older vehicle. January 2038 sounds far away, but assuredly many IoT devices sold in 2022 will still be operational. Mundane products like [smart electrical meters][15] and [smart parking systems][16] installed this year may or may not have 32-bit processor architectures and may or may not support software updates. + +The Linux kernel has already moved to a 64-bit `time_t` opaque data type internally to represent later timepoints. The implication is that system calls like `time()` have already changed their function signature on 64-bit systems. The arduousness of these efforts is on ready display in kernel headers like [time_types.h][17], which includes new and "_old" versions of data structures. + +![Odometer rolling over][18] + +The Glibc project also [supports 64-bit time][19], so yay, we're done, right? Unfortunately, no, as a [discussion on the Debian mailing list][20] makes clear. Distros are faced with the unenviable choice of either providing two versions of all binary packages for 32-bit systems or two versions of installation media. In the latter case, users of 32-bit time will have to recompile their applications and reinstall. As always, proprietary applications will be a real headache. + +### What precisely is in the Linux stable ABI anyway? + +Understanding the stable ABI is a bit subtle. Consider that, while most of sysfs is stable ABI, the debug interfaces are guaranteed to be _un_stable since they expose kernel internals to userspace. In general, Linus Torvalds has pronounced that by "don't break userspace," he means to protect ordinary users who "just want it to work" rather than system programmers and kernel engineers, who should be able to read the kernel documentation and source code to figure out what has changed between releases. The distinction is illustrated in the figure below. + +![Stability guarantee][21] + +Ordinary users are unlikely to interact with unstable parts of the Linux ABI, but system programmers may do so inadvertently. All of sysfs (`/sys`) and procfs (`/proc`) are guaranteed stable except for `/sys/kernel/debug`. + +But what about other binary interfaces that are userspace-visible, including miscellaneous ABI bits like device files in `/dev`, the kernel log file (readable with the `dmesg` command), filesystem metadata, or "bootargs" provided on the kernel "command line" that are visible in a bootloader like GRUB or u-boot? Naturally, "it depends." + +### Mounting old filesystems + +Next to observing a Linux system hang during the boot sequence, having a filesystem fail to mount is the greatest disappointment. If the filesystem resides on an SSD belonging to a paying customer, the matter is grave indeed. Surely a Linux filesystem that mounts with an old kernel version will still mount when the kernel is upgraded, right? Actually, "[it depends][22]." + +In 2020 an aggrieved Linux developer [complained on the kernel's mailing list][23]: + +> The kernel already accepted this as a valid mountable filesystem format, without a single error or warning of any kind, and has done so stably for years. . . . I was generally under the impression that mounting existing root filesystems fell under the scope of the kernel<->userspace or kernel<->existing-system boundary, as defined by what the kernel accepts and existing userspace has used successfully, and that upgrading the kernel should work with existing userspace and systems. + +But there was a catch: The filesystems that failed to mount were created with a proprietary tool that relied on a flag that was defined but not used by the kernel. The flag did not appear in Linux's API header files or procfs/sysfs but was instead an [implementation detail][24]. Therefore, interpreting the flag in userspace code meant relying on "[undefined behavior][25]," a phrase that will make software developers almost universally shudder. When the kernel community improved its internal testing and started making new consistency checks, the "[man 2 mount][26]" system call suddenly began rejecting filesystems with the proprietary format. Since the format creator was decidedly a software developer, he got little sympathy from kernel filesystem maintainers. + +![Construction sign reading crews working in trees][27] + +### Threading the kernel dmesg log + +Is the format of files in `/dev` guaranteed stable or not? The [command dmesg][28] reads from the file `/dev/kmsg`. In 2018, a developer [made output to dmesg threaded][29], enabling the kernel "to print a series of printk() messages to consoles without being disturbed by concurrent printk() from interrupts and/or other threads." Sounds excellent! Threading was made possible by adding a thread ID to each line of the `/dev/kmsg` output. Readers following closely will realize that the addition changed the ABI of `/dev/kmsg`, meaning that applications that parse that file needed to change too. Since many distros didn't compile their kernels with the new feature enabled, most users of `/bin/dmesg` won't have noticed, but the change broke the [GDB debugger][30]'s ability to read the kernel log. + +Assuredly, astute readers will think users of GDB are out of luck because debuggers are developer tools. Actually, no, since the code that needed to be updated to support the new `/dev/kmsg` format was "[in-tree][31]," meaning part of the kernel's own Git source repository. The failure of programs within a single repo to work together is just an out-and-out bug for any sane project, and a [patch that made GDB work with threaded /dev/kmsg][32] was merged. + +### What about BPF programs? + +[BPF][33] is a powerful tool to monitor and even configure the running kernel dynamically. BPF's original purpose was to support on-the-fly network configuration by allowing sysadmins to modify packet filters from the command line instantly. [Alexei Starovoitov and others greatly extended BPF][34], giving it the power to trace arbitrary kernel functions. Tracing is clearly the domain of developers rather than ordinary users, so it is certainly not subject to any ABI guarantee (although the [bpf() system call][35] has the same stability promise as any other). On the other hand, BPF programs that create new functionality present the possibility of "[replacing kernel modules as the de-facto means of extending the kernel][36]." Kernel modules make devices, filesystems, crypto, networks, and the like work, and therefore clearly are a facility on which the "just want it to work" user relies. The problem arises that BFP programs have not traditionally been "in-tree" as most open-source kernel modules are. A proposal in spring 2022 to [provide support to the vast array of human interface devices (HIDs) like mice and keyboards via tiny BPF programs][37] rather than patches to device drivers brought the issue into sharp focus. + +A rather heated discussion followed, but the issue was apparently settled by [Torvalds' comments at Open Source Summit][38]: + +> He specified if you break 'real user space tools, that normal (non-kernel developers) users use,' then you need to fix it, regardless of whether it is using eBPF or not. + +A consensus appears to be forming that developers who expect their BPF programs to withstand kernel updates [will need to submit them to an as-yet unspecified place in the kernel source repository][39]. Stay tuned to find out what policy the kernel community adopts regarding BPF and ABI stability. + +### Conclusion + +The kernel ABI stability guarantee applies to procfs, sysfs, and the system call interface, with important exceptions. When "in-tree" code or userspace applications are "broken" by kernel changes, the offending patches are typically quickly reverted. When proprietary code relies on kernel implementation details that are incidentally accessible from userspace, it is not protected and garners little sympathy when it breaks. When, as with Y2038, there is no way to avoid an ABI break, the transition is made as thoughtfully and methodically as possible. Newer features like BPF programs present as-yet-unanswered questions about where exactly the ABI-stability border lies. + +##### Acknowledgments + +Thanks to [Akkana Peck][40], [Sarah R. Newman][41], and [Luke S. Crawford][42] for their helpful comments on early versions of this material. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-abi + +作者:[Alison Chaiken][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/chaiken +[b]: https://github.com/lkxed +[1]: https://lkml.org/lkml/2018/12/22/232 +[2]: https://www.w3.org/TR/2014/REC-html5-20141028/ +[3]: https://www.kernel.org/doc/html/v6.0/admin-guide/abi-stable.html#the-kernel-syscall-interface +[4]: https://www.man7.org/linux/man-pages/dir_section_2.html +[5]: https://www.kernel.org/doc/html/v6.0/admin-guide/abi.html +[6]: https://opensource.com/article/19/3/virtual-filesystems-linux +[7]: https://gcc.gnu.org/ +[8]: https://clang.llvm.org/get_started.html +[9]: https://www.gnu.org/software/libc/ +[10]: https://www.man7.org/linux/man-pages/man5/elf.5.html +[11]: https://opensource.com/sites/default/files/2022-11/1cooperation.png +[12]: https://opensource.com/sites/default/files/2022-12/better_apt-file-find_ABI-boundary.png +[13]: https://en.wikipedia.org/wiki/Conway's_law +[14]: https://www.phoronix.com/news/MTc2Mjg +[15]: https://www.lfenergy.org/projects/super-advanced-meter-sam/ +[16]: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7506899/ +[17]: https://github.com/torvalds/linux/blob/master/include/uapi/linux/time_types.h +[18]: https://opensource.com/sites/default/files/2022-11/3speedometerrollingover_0.jpg +[19]: https://www.phoronix.com/scan.php?page=news_item&px=Glibc-More-Y2038-Work +[20]: https://groups.google.com/g/linux.debian.ports.arm/c/_KBFSz4YRZs +[21]: https://opensource.com/sites/default/files/2022-11/4stability.png +[22]: https://lwn.net/Articles/833696/ +[23]: https://lwn.net/ml/linux-kernel/20201006050306.GA8098@localhost/ +[24]: https://en.wikipedia.org/wiki/Encapsulation_(computer_programming) +[25]: https://en.wikipedia.org/wiki/Undefined_behavior +[26]: https://www.man7.org/linux/man-pages/man2/mount.2.html +[27]: https://opensource.com/sites/default/files/2022-11/5crewworkingintrees.jpg +[28]: https://www.man7.org/linux/man-pages/man1/dmesg.1.html +[29]: https://lkml.org/lkml/2018/11/24/180 +[30]: https://sourceware.org/gdb/current/onlinedocs/gdb/ +[31]: https://unix.stackexchange.com/questions/208638/linux-kernel-meaning-of-source-tree-in-tree-and-out-of-tree +[32]: https://lore.kernel.org/all/20191011142500.2339-1-joel.colledge@linbit.com/ +[33]: https://opensource.com/article/19/8/introduction-bpftrace +[34]: https://lwn.net/Articles/740157/ +[35]: https://www.man7.org/linux/man-pages/man2/bpf.2.html +[36]: https://lwn.net/Articles/909095/ +[37]: https://lwn.net/ml/ksummit-discuss/CAO-hwJJxCteD_BHZTeqQ1f7gWOHoj+05qP8bmFsRYVfMc_3FxQ@mail.gmail.com/ +[38]: https://lwn.net/ml/ksummit-discuss/20220621110514.6ef174d0@rorschach.local.home/ +[39]: https://lwn.net/ml/ksummit-discuss/20220616125128.68151432@gandalf.local.home/ +[40]: https://shallowsky.com/blog/ +[41]: https://www.socallinuxexpo.org/scale/19x/presentations/live-patching-down-trenches-view +[42]: https://www.amazon.com/Book-Xen-Practical-System-Administrator/dp/1593271867 diff --git a/sources/tech/20221206.5 ⭐️ How the Linux Worker file manager can work for you.md b/sources/tech/20221206.5 ⭐️ How the Linux Worker file manager can work for you.md new file mode 100644 index 0000000000..5a8b4e8bea --- /dev/null +++ b/sources/tech/20221206.5 ⭐️ How the Linux Worker file manager can work for you.md @@ -0,0 +1,92 @@ +[#]: subject: "How the Linux Worker file manager can work for you" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-worker" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How the Linux Worker file manager can work for you +====== + +Computers are like filing cabinets, full of virtual folders and files waiting to be referenced, cross-referenced, edited, updated, saved, copied, moved, renamed, and organized. In this article, I'm taking a look at the Worker file manager for your Linux system. + +The Worker file manager dates back to 1999. That's the previous century, and a good seven years before I'd boot into Linux for the first time. Even so, it's still being updated today, but judiciously. Worker isn't an application where arbitrary changes get made, and using Worker today is a lot like using Worker 20 years ago, only better. + +![Image of the download directory in Worker.][1] + +### Install Worker on Linux + +Worker is written in C++ and uses only the basic X11 libraries for its GUI, plus a few extra libraries for extra functionality. You may be able to find Worker in your software repository. For example, on Debian, Elementary, Linux Mint, and similar: + +``` +$ sudo apt install worker +``` + +Worker is open source, so you can alternately just [download the source code][2] and [compile it yourself][3]. + +### Using Worker + +Worker is a two-panel, tabbed file manager. Most of the Worker window is occupied by these panels, listing the files and directories on your system. The panes function independently of one another, so what's displayed in the left pane has no relationship to what's in the right. That's by design. This isn't a column view of a hierarchy, these are two separate locations within a filesystem, and for that reason, you can easily copy or move a file from one pane to the other (which is, after all, probably half the reason you use a file manager at all.) + +To descend into a directory, double-click. To open a file in the default application defined for your system, double-click. All in all, there are a lot of intuitive and "obvious" interactions in Worker. It may look old-fashioned, but in the end, it's still just a file manager. What you might not be used to, though, is that Worker actions are largely based around the keyboard or on-screen buttons. To copy a file from one pane to the other, you can either press **F5** on your keyboard, or click the **F5 - Copy** button at the bottom of the Worker window. There are two panels, so the destination panel is always the one that isn't active. + +### Actions + +The most common actions are listed as buttons at the bottom of the Worker window. For example: + +- **$HOME** Changes active pane to your home directory +- **F4 - Edit**: Open a file in a text editor +- **F5 - Copy**: Copy active selection to inactive pane +- **F6 - Move**: Move active selection to inactive pane +- **F7 - New directory**: Make new directory in active pane +- **Duplicate**: Copy active selection to active pane + +You don't have to use the buttons, though. As the buttons indicate, there are many keyboard shortcuts defined, and even more capable of being assigned in your Working configuration. These are some of the actions I found myself using most: + +- **Tab**: Change active pane +- **Ctrl+Return**: Edit path of active pane +- **Home** and **End**: Jump to the first or last entry in a file list +- **Left Arrow**: Go to the parent directory +- **Right Arrow**: Go to the selected directory +- **Insert**: Change the selection state of the currently active entry +- **NumLock +**: Select all (like **Ctrl+A**) +- **NumLock -**: Select none +- **Return**: Double click +- **Alt+B**: Show bookmarks +- **Ctrl+Space**: Open contextual menu +- **Ctrl+S**: Filter by filename + +I was ambivalent about Worker until I started using the keyboard shortcuts. While it's nice that you can interact with Worker using a mouse, it's actually most effective as a viewport for the whims of your file management actions. Unlike controlling many graphical file managers with a keyboard, Worker's keyboard shortcuts are specific to very precise actions and fields. And because there are always two panes open, your actions always have a source and a target. + +It doesn't take long to get into the rhythm of Worker. First, you set up the location of the panes by pressing **Tab** to make one active, and **Ctrl+Return** to edit the path. Once you have each pane set, select the file you want to interact with, and press the keyboard shortcut for the action you want to invoke (**Return** to open, **F5** to copy, and so on.) It's a little like a visual version of a terminal. Admittedly, it's slower than a terminal, because it lacks tabbed completion, but if you're in the mood for visual confirmation of how you're moving about your system, Worker is a great option. + +### Buttons + +If you're not a fan of keyboard navigation, then there are plenty of options for using buttons instead. The buttons at the bottom of Worker are "banks" of buttons. Instead of showing all possible buttons, Worker displays just the most common actions. You can set how many buttons you want displayed (by default it's 4 rows, but I set it to 2). To "scroll" to the next bank of buttons, click the clock bar at the very bottom of the window. + +### Configuration + +Click the gear icon in the top left corner of the Worker window to view its configuration options. In the configuration window, you can adjust Worker's color scheme, fonts, mouse button actions, keyboard shortcuts, default applications, default actions for arbitrary file types, and much more. + +### Get to work + +Worker is a powerful file manager, with few dependencies and a streamlined code base. The features I've listed in this article are a fraction of what it's capable of doing. I haven't even mentioned Worker's Git integration, archive options, and interface for executing your own custom commands. What I'm trying to say is that Worker lives up to its name, so try it out and put it to work for you. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-worker + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/2022-10/worker.directory.downloadview.png +[2]: http://www.boomerangsworld.de/cms/worker/download.html +[3]: https://opensource.com/article/21/11/compiling-code diff --git a/sources/tech/20221206.6 ⭐️⭐️ LibreOffice vs FreeOffice Comparing Popular Free Office Suites.md b/sources/tech/20221206.6 ⭐️⭐️ LibreOffice vs FreeOffice Comparing Popular Free Office Suites.md new file mode 100644 index 0000000000..fd33812b3e --- /dev/null +++ b/sources/tech/20221206.6 ⭐️⭐️ LibreOffice vs FreeOffice Comparing Popular Free Office Suites.md @@ -0,0 +1,172 @@ +[#]: subject: "LibreOffice vs FreeOffice: Comparing Popular Free Office Suites" +[#]: via: "https://itsfoss.com/libreoffice-vs-freeoffice/" +[#]: author: "Ankush Das https://itsfoss.com/author/ankush/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +LibreOffice vs FreeOffice: Comparing Popular Free Office Suites +====== + +LibreOffice is undoubtedly an excellent open-source Microsoft Office alternative. It is backed by a vast open-source community and constantly evolves to keep up with modern office requirements. + +However, other options work well on Linux, so comparing tools should help you decide what you want. + +Here, I focus on comparing SoftMaker’s free offering, “FreeOffice” with LibreOffice, highlighting the differences you can expect when using them. + +### LibreOffice vs. FreeOffice: Background Information + +[LibreOffice][1] is an entirely free and open-source solution by The Document Foundation. It was created as a replacement for OpenOffice and evolved as a much more powerful alternative. + +[FreeOffice][2] is a free edition of [SoftMaker Office][3] with some feature restrictions. If you did not know, SoftMaker Office is a premium office suite available on multiple platforms, including Linux. + +_Note that FreeOffice is **not open-source**._ + +Now that you have a brief idea, let us talk about the distinctions. + +### Installation and Platform Availability + +If it is easy to install and available on multiple platforms, it is a good candidate for users. + +LibreOffice is available for **Linux, Windows, and macOS.** It is also available on mobile platforms such as [Collabora Office][4]. + +![libreoffice software center][5] + +You can easily install it through the software center, Flathub, and Snapcraft. + +FreeOffice is also available on **Linux, Windows, and macOS**. However, you cannot find it in your software center or Flathub/Snapcraft. + +You must head to its [official download page][6] and grab the **.deb/.rpm/.tgz** package to install it. + +![freeoffice linux download][7] + +A little inconvenient but doable. + +**You should not have an issue installing any of them. It is easy and usually hassle-free.** + +### User Experience + +![libreoffice home 2022][8] + +LibreOffice has improved its user experience over the years. It takes a simple and clean approach to make things aesthetically pleasing. + +Sure, it may not be a fancy user interface. But it keeps up with modern standards by a good margin. + +I believe that LibreOffice’s layout can use improvements, providing more clarity to the available tools/icons on the main screen. + +![libreoffice writer 2022][9] + +The screenshots above show how LibreOffice looks on Ubuntu 22.04 LTS. + +Unless you want a user interface similar to/close to Microsoft Office, it should be plenty good. + +SoftMaker’s FreeOffice gets an edge for its **variety of user interface options** and provides a modern user experience comparatively. + +![freeoffice layout][10] + +The user experience makes you feel right at home if you are a Windows-first user. Even if you are not a Windows user, it looks polished and provides a good experience for free. + +![freeoffice textmaker][11] + +### Features + +**LibreOffice gets an advantage here**, considering it provides a variety of programs and features for free. + +You get access to programs like: + +- Math (Scientific formula) +- Writer (Documents) +- Impress (Presentations) +- Draw (Drawings, Flow Charts, etc.) +- Calc (Spreadsheets) +- Base (Database) + +In contrast, FreeOffice suite is limited to: + +- Spreadsheets +- TextMaker +- Presentations + +Additionally, FreeOffice cuts back on features like Spell checking, synonym dictionaries, tabs, macros, and free technical support. You can only avail of these benefits with SoftMaker Office with a premium subscription. + +With LibreOffice, you can get free help from the community of fellow active users. And you get more features out of the box. + +**If you are an enterpris**e, you can opt for LibreOffice [professional support][12] that provides you with priority technical support and certification programs to provide your team with the necessary training to use/manage LibreOffice. + +In contrast, I could not find SoftMaker’s enterprise offering. You can use the same subscription to use it for your business but nothing special to support a range of devices at once. + +### File Format Compatibility + +![file format illustration][13] + +Both FreeOffice and LibreOffice handle Microsoft Office files (DOCS, XLSX, and PPTX) just fine. + +The differences arrive when it comes to the quality of compatibility. FreeOffice handles Microsoft Office files a tad bit better than LibreOffice, considering SoftMaker Office is famous for the same reason. + +Sure, LibreOffice has improved over the years, but some still like FreeOffice’s capability to open Microsoft Office files without much distortion. + +**Regarding the variety of file format extensions supported, FreeOffice falls short, and LibreOffice gets ahead with more file format support and additional programs like Math and Draw to handle them.** + +**Related Read**: [LibreOffice vs. OpenOffice: What’s the Difference?][14] + +### Updates + +![software update illustration][15] + +If you want a hassle-free experience and expect updates to fix any of the issues present with the current version, both provide maintenance software updates to take care of it. + +With SoftMaker’s FreeOffice, you get free service packs to fix bugs and issues. + +However, LibreOffice gets regular (and more frequent) updates comparatively. So, if something’s bothering you with FreeOffice, it may take a while to get it fixed. But LibreOffice should fix it quickly unless it is something big. + +### Licensing + +![license illustration][16] + +LibreOffice uses Mozilla Public License v2.0 as a free and open-source office suite. You can install it for any use case without restrictions on the number of installations/devices. + +FreeOffice is a proprietary solution. You can use it for personal or business use. However, you must register to get a free product key and continue using the product. + +You cannot use it for more than ten days without registering for a free license. Furthermore, with the same license, you can use it on up to 3 computers. + +### LibreOffice vs FreeOffice: What Should You Pick? + +LibreOffice is the ideal choice even if you do not care if it’s open source or not. You don’t have to register just to use it, it gets regular updates and it is present on all the major desktop operating systems. + +FreeOffice can be picked if you have an aversion to LibreOffice (some people don’t like its interface) and you need a slightly better MS Office compatibility with a good user experience. + +It is available free of cost but it is not open source. So that may also be a factor when choosing between FreeOffice and LibreOffice. Also keep in mind that FreeOffice has limited features compared to LibreOffice. You should keep that in mind as well. + +I believe I have given you enough points to + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/libreoffice-vs-freeoffice/ + +作者:[Ankush Das][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lkxed +[1]: https://www.libreoffice.org +[2]: https://www.freeoffice.com/en/ +[3]: https://itsfoss.com/softmaker-office/ +[4]: https://www.collaboraoffice.com +[5]: https://itsfoss.com/wp-content/uploads/2022/07/libreoffice-software-center.png +[6]: https://www.freeoffice.com/en/download/applications +[7]: https://itsfoss.com/wp-content/uploads/2022/12/freeoffice-linux-download.jpg +[8]: https://itsfoss.com/wp-content/uploads/2022/12/libreoffice-home-2022.png +[9]: https://itsfoss.com/wp-content/uploads/2022/12/libreoffice-writer-2022.png +[10]: https://itsfoss.com/wp-content/uploads/2022/12/freeoffice-layout.png +[11]: https://itsfoss.com/wp-content/uploads/2022/12/freeoffice-textmaker.png +[12]: https://www.documentfoundation.org/professional-support/ +[13]: https://itsfoss.com/wp-content/uploads/2022/07/file-format-illustration.jpg +[14]: https://itsfoss.com/libreoffice-vs-openoffice/ +[15]: https://itsfoss.com/wp-content/uploads/2022/07/software-update-illustration.jpg +[16]: https://itsfoss.com/wp-content/uploads/2022/12/license-illustration.jpg diff --git a/sources/tech/20221207.3 ⭐️⭐️ 16 reasons DDEV will be your new favorite development environment.md b/sources/tech/20221207.3 ⭐️⭐️ 16 reasons DDEV will be your new favorite development environment.md new file mode 100644 index 0000000000..efe5125083 --- /dev/null +++ b/sources/tech/20221207.3 ⭐️⭐️ 16 reasons DDEV will be your new favorite development environment.md @@ -0,0 +1,145 @@ +[#]: subject: "16 reasons DDEV will be your new favorite development environment" +[#]: via: "https://opensource.com/article/22/12/ddev" +[#]: author: "Randy Fay https://opensource.com/users/rfay" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +16 reasons DDEV will be your new favorite development environment +====== + +In 2022, you have a wide variety of local development environments to choose from, whether you're a designer, developer, tester, or any kind of open source contributor. Because most of the tools and platforms contributors use happen to run on many different operating systems, you probably even have the choice of constructing your own environment. I'm the maintainer of [DDEV][1], and here are 15 reasons I think you'll like it for your development environment. + +### 1. Cross-platform + +DDEV supports and tests, and has a fully automated test suite for Linux (amd64 and Arm), WSL2, Windows, and macOS (M1 and amd64.) + +Some tools require you to use one exact version of Docker (and they may even take the liberty of installing it themselves), DDEV works with versions of Docker that are a couple of years old, and keeps up with the latest versions, as well. Alternatively, you can use [Colima][2] or Docker installed inside WSL2. + +DDEV’s binaries are signed and notarized on macOS and Windows, so you never have to sneak around scary operating system warnings when installing and using DDEV. + +### 2. Performance + +The DDEV team believes that DDEV on macOS and Windows has [the best performance][3] you can get on any local development, both in terms of starting DDEV (10 to 20 seconds) and in terms of webserving. With no setup required at all, the [Mutagen feature][4] speeds up webserving by a factor of 10, at least. And of course on Linux (including WSL2) it's truly superb. + +### 3. Settings file management + +DDEV is happy to get you started quickly and easily, and even manage your settings files. You can use your own repository or follow one of the [quickstart guides][5] to create something new and you'll have a project going in no time. You can also [turn off settings file management][6] to fine-tune your team's approach when you need more customization. + +DDEV's configuration files aren't used when they're not being used in a DDEV context, so your project won't accidentally have DDEV settings if you mistakenly deploy them to production. If you have the same project setup for Lando _and_ DDEV, then the DDEV settings won't break Lando. + +### 4. Trusted HTTPS + +DDEV uses [mkcert][7] to allow you to conduct all your work using [locally trusted HTTPS][8], just like it will work in the real world. You don't have to click around scary browser warnings to view your project in development. + +### 5. Database snapshots + +DDEV has the `ddev snapshot` feature, allowing you to quickly capture the state of your [database][9] and then quickly restore to a different point. You can name snapshots for different branches of your project. It's far faster than traditional export and import. + +### 6. Simple single-binary installation without dependencies + +[DDEV][10] is written in [Go][11]. Because Go is a fairly new language, this can be a bit of a disadvantage in terms of community involvement, but it's a huge advantage for cross-platform support. Go does cross-platform builds with ease, and the resulting self-contained binary has no dependencies at all (aside from Docker.) There are no libraries to install, no DLLs to maintain. And responsiveness to commands is excellent! + +### 7. Xdebug step-debugging + +Lots of people have their first experience with a [real step-debugging environment][12] for the first time with DDEV because it's really, _really_ easy. Thanks to PHPStorm, there's no setup at all. With VSCode or [Codium][13], there's about 2 minutes of setup. There's no need for inserting print statements into code anymore! + +### 8. Explicit support for your CMS + +DDEV has built-in support for many popular content management systems (CMS) and platforms. "Explicit support" means that there's setting management, and an NGINX configuration customized for the specific platform you're using. Here's a partial list of what's supported: + +- Drupal +- Backdrop +- WordPress +- TYPO3 +- Magento +- Laravel +- Shopware + +### 9. Integration and add-ons + +While DDEV provides explicit support with optional settings management for your CMS of choice, many developers use other platforms, including Symfony, Moodle, Mautic, and so on. DDEV has explicit support for NodeJS, both for processing and as daemons. + +DDEV also features a library of supported, maintained, and tested add-ons for Redis, Solr, Memcached, Elasticsearch, Mongo, Varnish, and more. + +### 10. Gitpod + +Your local development environment doesn't even have to be local anymore. DDEV has full support for use in [Gitpod][14] so you can move your development into the cloud. + +### 11. No vendor lock-in + +There is absolutely no vendor lock-in in DDEV. The idea behind the DDEV platform is that DDEV can be plugged into a dev-to-deploy workflow as pieces of a puzzle that work for you. Mix and match! DDEV is an open source community project that works great with any hosting service you can use. + +### 12. Respect for your host computer + +DDEV doesn't assume you use your computer (or containers) only for DDEV. + +Too many local dev tools happily reconfigure your host computer without your full involvement. More than one of them edit your `/etc/exports` file, with no way for you to opt out. A couple of them actually overwrite your Docker installation with a different version at install time. DDEV tries to ensure that in the unlikely situation that anything needs to be changed on your computer, you're the one doing it, and you have options. + +For example, HTTPS support requires running `mkcert -install` one time. [NFS support][15] requires a bit of additional setup. Because nearly everything is run in a container, there's very little that needs to be done on the host computer in the first place. + +### 13. Community + +The DDEV community has been phenomenal through the years, contributing ideas, code, and shared support. There are [open collections][16] of DDEV services, tools, snippets, approaches, as well as [blogs and presentations][17] and more from users all around the world. + +The [DDEV Advisory Group][18] provides oversight, direction, and feedback for the project. Anyone is welcome to join. + +### 14. Open source + +DDEV is a small cog in the huge open source ecosystem. It couldn't even exist without the hundreds or thousands of projects that make up the Linux containers that run it, and of course, PHP itself is a fundamental upstream project. We love to contribute upstream and downstream to projects like: + +- **Docker**: DDEV is involved with the Docker project, because DDEV users are always pushing the limits. We participate heavily in Docker issue queues. +- **Mutagen**: When you edit code in containers, there's a lot of synchronization between your local host and the container environment that needs to happen. [Mutagen][19] helps bridge that gap for DDEV users. +- **mkcert**: The [mkcert][7] tool allows DDEV to provide trusted HTTPS in your local development environment. We've benefited enormously from it, and have contributed back tests and bug fixes. +- **Xdebug**: DDEV is great with [Xdebug][20], and of course, we hear right away when there are problems. We report our findings back to the Xdebug issue queue. +- **deb.sury.org PHP packages**: The Debian PHP packages (5.6 all the way through 8.2, at the time of writing) we use come from [deb.sury.org][21]. Because the DDEV community is an early consumer of those packages, we're often in that [issue queue][22] too. + +### 15. DDEV Keeps Up + +DDEV is always keeping up with the dependencieis you need. For example, at this writing, neither PHP 8.2.0 nor Drupal 10 have yet been released, but both have been supported in DDEV for months. + +### 16. Your own reason + +I'd love to hear what makes DDEV your favorite, and the DDEV team is always [listening][23] to hear what you want in the future. Of course, we also want to hear when things don't work the way you want or expect. Visit our [Git repository][10] to contribute! + +Note: This is an updated version of a [blog post][24] that originally appeared on ddev.com. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/ddev + +作者:[Randy Fay][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/rfay +[b]: https://github.com/lkxed +[1]: http://ddev.com/ +[2]: https://opensource.com/article/22/9/replacing-docker-desktop-mac-colima-use-ddev-first-impressions +[3]: https://ddev.com/ddev-local/docker-desktop-and-colima-benchmarking-on-macos +[4]: https://ddev.readthedocs.io/en/stable/users/install/performance/#mutagen +[5]: https://ddev.readthedocs.io/en/stable/users/cli-usage/#quickstart-guides +[6]: https://ddev.com/ddev-local/controlling-cms-settings-files-in-ddev-local/ +[7]: https://github.com/FiloSottile/mkcert +[8]: https://ddev.com/ddev-local/ddev-local-trusted-https-certificates/ +[9]: https://ddev.readthedocs.io/en/stable/users/basics/database_management/ +[10]: https://github.com/drud/ddev +[11]: https://opensource.com/article/17/6/getting-started-go +[12]: https://ddev.readthedocs.io/en/latest/users/debugging-profiling/step-debugging/ +[13]: https://opensource.com/article/20/6/open-source-alternatives-vs-code#vscodium +[14]: https://ddev.readthedocs.io/en/stable/users/install/ddev-installation/#gitpod +[15]: https://ddev.com/ddev-local/ddev-local-nfs-mounting-setup-macos/ +[16]: https://ddev.readthedocs.io/en/latest/users/extend/additional-services/ +[17]: https://github.com/drud/awesome-ddev +[18]: https://github.com/drud/ddev/discussions/categories/ddev-advisory-group +[19]: http://mutagen.io +[20]: https://xdebug.org/ +[21]: https://deb.sury.org/ +[22]: https://github.com/oerdnj/deb.sury.org/issues +[23]: https://ddev.readthedocs.io/en/stable/users/support/ +[24]: https://ddev.com/ddev-local/whats-so-different-about-ddev-local diff --git a/sources/tech/20221207.4 ⭐️ Why I use the Enlightenment file manager on Linux.md b/sources/tech/20221207.4 ⭐️ Why I use the Enlightenment file manager on Linux.md new file mode 100644 index 0000000000..2c249e99ff --- /dev/null +++ b/sources/tech/20221207.4 ⭐️ Why I use the Enlightenment file manager on Linux.md @@ -0,0 +1,87 @@ +[#]: subject: "Why I use the Enlightenment file manager on Linux" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-enlightenment" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Why I use the Enlightenment file manager on Linux +====== + +Computers are like filing cabinets, full of virtual folders and files waiting to be referenced, cross-referenced, edited, updated, saved, copied, moved, renamed, and organized. In this series, I'm taking a look at the Enlightenment file manager for your Linux system. + +The [Enlightenment desktop][1] is designed to be a modern implementation of what's considered a traditional UNIX desktop. There are certain elements that are considered to be characteristic of graphical UNIX, most of which were defined in the [by early desktops like CDE or twm][2]. Enlightenment implements things like a dock, an on-demand global contextual menu, flexible focus, virtual workspaces, but with an almost hyper-modern flair. Enlightenment is able to combine these elements with effects and animations because it's also its own compositor, and the EFL libraries that the desktop uses are specific to Enlightenment and maintained by the Enlightenment team. That's a long way of confessing that in this entry in [my file manager series][3], I'm looking at a file manager that's mostly inextricable from the desktop it supports. If you want to try Enlightenment's file manager, you have to try Enlightenment. Luckily, it's a pleasant experience, and a fun diversion from the usual desktops. + +### Install Enlightenment on Linux + +You can probably install Enlightenment from your distribution's repository. For example, on Fedora: + +``` +$ sudo dnf install enlightenment +``` + +On Debian and similar: + +``` +$ sudo apt install enlightenment +``` + +### File manager + +When you first log in to Enlightenment, you must make some choices about configuration. After setting your language and visual theme, you can open a file manager window by either double-clicking on the **Home** icon on the desktop, or by clicking on the desktop and choosing **Navigate**. + +![Image of the file manager for Enlightenment.][4] + +### Customizing the panel + +The left panel of the file manager displays common places in your file system. Not everyone considers the same places common, though, so you're free to change the bookmarks in the panel to suit your needs. + +Start by removing the items you don't need. For instance, maybe you don't need an icon for your Desktop in your side panel. To remove it, right-click on it and select **Delete**. You're asked for confirmation, and it's safe to accept. You're not deleting your actual desktop or the items on it, you're just removing the **Desktop** item from the side panel. You can remove any of the items from the left panel in this way. + +Next, add directories you frequent. You can add items by dragging and dropping icons from the right panel into the left. Once there, they're considered bookmarks for Enlightenment's file manager. These items don't carry over into other file managers or file choosers. This is a bookmarks panel specific to the Enlightenment file manager. + +### Customizing the view + +A file manager's main purpose is to help you manage files. Part of managing files is getting a good look at what you have, and there are three different views Enlightenment offers. To access the different views, right-click in an empty space in the file manager and choose **View Mode**. + +- **Custom Icons**: Place icons anywhere in the file manager window you please. +- **Grid**: Sort icons, aligned to a grid. +- **List**: Sort small icons as an itemized list. + +In addition to altering your view of the icons representing your files and folders, you can control how they're sorted. The default is to alphabetize directories first, and then files. You can right-click in an empty space in the file manager and select **Sorting** to choose between other options: + +- **Size**: This is particularly useful when you're trying to find files that are occupying too much space on your hard drive. +- **File extension**: Group files together by file type! +- **Modification time**: Make recent files easy find. + +Grouping files together by file extension is the real epiphany of the Enlightenment file manager. In most other file managers, the closest you can get to this feature is the ability to filter files by manually typing in the extension you're interested in. But with this feature, your files "cluster" together by a sort of genealogical affinity. It makes files really easy to find without giving any particular preference to any one group of file types. You just locate the group of files you're interested in, and then the single file you want to work on. + +### Keyboard navigation + +The Enlightenment file manager has good keyboard support. As long as the file manager is in focus, you can press any **Arrow** key to move between items in the right panel. Press **Return** to enter a directory or to open a file. + +You can use **Alt** and the **Left Arrow** key to move back to the previously visited directory. Use **Alt** and the **Up Arrow** key to move to your current directory's parent. + +### The Enlightenment experience + +Enlightenment is a fun and beautiful desktop, and its default file manager does everything you need a file manager to do. It's got the essential customization options, good support for keyboard navigation, and it fits the rest of the desktop perfectly. If you're in the mood for something different, then give Enlightenment a try. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-enlightenment + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/19/12/linux-enlightenment-desktop +[2]: https://opensource.com/article/20/5/linux-desktops#traditional +[3]: https://opensource.com/users/seth +[4]: https://opensource.com/sites/default/files/2022-10/enlightenment-file-manager.png diff --git a/sources/tech/20221208.3 ⭐️⭐️ Our favorite markup languages for documentation.md b/sources/tech/20221208.3 ⭐️⭐️ Our favorite markup languages for documentation.md new file mode 100644 index 0000000000..d11843ff36 --- /dev/null +++ b/sources/tech/20221208.3 ⭐️⭐️ Our favorite markup languages for documentation.md @@ -0,0 +1,173 @@ +[#]: subject: "Our favorite markup languages for documentation" +[#]: via: "https://opensource.com/article/22/12/markup-languages-documentation" +[#]: author: "Opensource.com https://opensource.com/users/admin" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Our favorite markup languages for documentation +====== + +Documentation is important for so many reasons. Readable documentation is even more so. In the world of open source software, documentation is how to use or contribute to an application. It's like the rulebook for a [game][1]. + +There are many different types of documentation: + +- Tutorials +- How-to guides +- Reference guides +- Software architecture +- Product manuals + +We asked some of the Opensource.com contributors about their technical documentation workflow, which markup language they preferred, and why they might use one over the other. Here's what they had to say. + +### AsciiDoc + +For the past several years, [Markdown][2] has been my standard language. But recently I decided to give [AsciiDoc][3] a try. The syntax is not difficult and [Gedit][4] on my Linux desktop supports it. I plan to stick with it for a while. + +—- [Alan Formy-Duval][5] + +In terms of low-syntax markup, I prefer AsciiDoc. I like it because its conversion process is consistent and predictable, with no surprise "flavor" variations to confuse things. I also love that it outputs to [Docbook][6], which is a markup-heavy syntax that I trust for longevity and flexibility. + +But the "right" choice tends to be what a project is already using. I wouldn't write in AsciiDoc if a project uses Strawberry-flavored Markdown. Well, to be fair, I might write in AsciiDoc and then convert it to Strawberry-flavored Markdown with Pandoc. + +I do think there is a time and place for Markdown. I do find it more readable than AsciiDoc. Links in AsciiDoc: + +``` +http://example.com[Example website] +``` + +Links in Markdown: + +``` +[Example.com](http://example.com) +``` + +The Markdown syntax is intuitive, delivering the information in the same way that I think most of us parse the same data when reading HTML ("Example website…oh, that's blue text, I'll roll over it to see where it goes…it goes to [example.com][7]"). + +In other words, when my audience is a human reader, I do often choose Markdown because its syntax is subtle but it's got enough of a syntax to make conversion possible, so it's still an OK storage format. + +AsciiDoc, as minimal as it is, just looks scarier. + +If my audience is a computer that's going to parse a file, I choose AsciiDoc. + +—- [Seth Kenlon][8] + +### reStructuredText + +I'm a big fan of [docs as code][9] and how it brings developer tools into the content workflows. It makes it easier to have efficient reviews and collaboration, especially if engineers are contributors. + +I'm also a bit of a markup connoisseur, having written whole books in AsciiDoc for O'Reilly, a lot of Markdown for various platforms, including a thousand posts on my blog. Currently, I'm a [reStructuredText][10] convert and maintain some of the tooling in that space. + +—- [Lorna Mitchell][11] + +Obligatory mention of reStructuredText. That's my go-to these days as I do a lot of Python programming. It's also been Python's standard for documentation source and code comments for ages. + +I like that it doesn't suffer quite so much from the proliferation of nonstandards that Markdown does. That said, I do use a lot of Sphinx features and extensions when working on more complex documentation. + +—- [Jeremy Stanley][12] + +### HTML + +I rarely use markup languages if I don't have to. + +I find HTML easier to use than other markup languages though. + +—- [Rikard Grossman-Nielsen][13] + +For me, there are various ways to make documentation. It depends on where the documentation is going to be whether on a website, as part of the software package, or something downloadable. + +For [Scribus][14], the internal documentation is in HTML, since an internal browser is used to access it. On a website, you might need to use a Wiki language. For something downloadable you might create a PDF or an EPUB. + +I tend to write the documentation in a plain text editor. I might use XHTML, so that I can then import these files into an EPUB maker like Sigil. And, of course, Scribus is my go-to app for making a PDF, though I would probably be importing a text file created with a text editor. Scribus has the advantage of including and precisely controlling placement of graphics. + +Markdown has never caught on with me, and I've never tried AsciiDoc. + +—- [Greg Pittman][15] + +I'm writing a lot of documentation in HTML right now, so I'll put in a plug for HTML. You can use HTML to create websites, or to create documentation. Note that the two are not really the same — when you're creating websites, most designers are concerned about presentation. But when you're writing documentation, tech writers should focus on content. + +When I write documentation in HTML, I stick to the tags and elements defined by HTML, and I don't worry about how it will look. In other words, I write documentation in "unstyled" HTML. I can always add a stylesheet later. So if I need to make some part of the text stronger (such as a warning) or add emphasis to a word or phrase, I might use the `` and `` tags, like this: + +``` +

Warning: Lasers! Do not look into laser with remaining eye.

+``` + +Or to provide a short code sample within the body of a paragraph, I might write: + +``` +

The puts function prints some text to the user.

+``` + +To format a block of code in a document, I use `
..
` like this: + +``` +void +print_array(int *array, int size) +  { +  for (int i = 0; i < size; i++) { +  printf("array[%d] = %d\n", i, array[i]); +  }} +``` + +The great thing about HTML is you can immediately view the results with any web browser. And any documentation you write in unstyled HTML can be made prettier later by adding a stylesheet. + +—- [Jim Hall][16] + +### Unexpected: LibreOffice + +Back in the 80s and 90s when I worked in System V Unix, SunOS, and eventually Solaris, I used the mm macros with `nroff,``troff` and finally `groff`. Read about MM using groff_mm (provided you have them installed.) + +MM isn't really a markup language, but it feels like one. It is a very semantic set of troff and groff macros. It has most things markup language users would expect—headings, numbered lists, and so on. + +My first Unix machine also had Writers' Workbench available on it, which was a boon for many in our organization who had to write technical reports but didn't particularly write in an "engaging manner". A few of its tools have made it to either BSD or Linux—style, diction, and look. + +I also recall a standard generalized markup language (SGML) tool that came with, or perhaps we bought for, Solaris in the very early 90s. I used this for awhile, which may explain why I don't mind typing in my own HTML. + +I've used Markdown a fair bit, but having said that, I should also be saying "which Markdown", because there are endless flavors and levels of features. I'm not a huge fan of Markdown because of that. I guess if I had a lot of Markdown to do I would probably try to gravitate toward some implementation of [CommonMark][17] because it actually has a formal definition. For example, [Pandoc][18] supports CommonMark (as well as several others). + +I started using AsciiDoc, which I much prefer to Markdown as it avoids the "which version are you using" conversation and provides many useful things. What has slowed me down in the past with respect to AsciiDoc is that for some time it seemed to require installing Asciidoctor—a Ruby toolchain which I was not anxious to install. But these days there are more implementations at least in my Linux distro. Curiously, Pandoc emits AsciiDoc but does not read it. + +Those of you laughing at me for not wanting a Ruby toolchain for AsciiDoc but being satisfied with a Haskell toolchain for Pandoc… I hear you. + +I blush to admit that I mostly use LibreOffice these days. + +—- [Chris Hermansen][19] + +### Document now! + +Documentation can be achieved through many different avenues, as the writers here have demonstrated. It's important to document how to use your code, especially in open source. This ensures that other people can use and contribute to your code properly. It's also wise to tell future users what your code is providing. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/markup-languages-documentation + +作者:[Opensource.com][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/admin +[b]: https://github.com/lkxed +[1]: https://opensource.comttps://opensource.com/life/16/11/software-documentation-tabletop-gaming +[2]: https://opensource.com/article/19/9/introduction-markdown +[3]: https://opensource.com/article/22/8/drop-markdown-asciidoc +[4]: https://opensource.com/%20https%3A//opensource.com/article/20/12/gedit +[5]: https://opensource.com/users/alanfdoss +[6]: https://opensource.com/article/17/9/docboo +[7]: http://example.com/ +[8]: https://opensource.com/users/seth +[9]: https://opensource.com/article/22/10/docs-as-code +[10]: https://opensource.com/article/19/11/document-python-sphinx +[11]: https://opensource.com/users/lornajane +[12]: https://opensource.com/users/fungi +[13]: https://opensource.com/users/rikardgn +[14]: https://opensource.com/article/21/12/desktop-publishing-scribus +[15]: https://opensource.com/users/greg-p +[16]: https://opensource.com/users/jim-hall +[17]: https://commonmark.org/ +[18]: https://opensource.com/downloads/pandoc-cheat-sheet +[19]: https://opensource.com/users/clhermansen diff --git a/sources/tech/20221208.4 ⭐️⭐️ Manage your file system from the Linux terminal.md b/sources/tech/20221208.4 ⭐️⭐️ Manage your file system from the Linux terminal.md new file mode 100644 index 0000000000..d03ef5902a --- /dev/null +++ b/sources/tech/20221208.4 ⭐️⭐️ Manage your file system from the Linux terminal.md @@ -0,0 +1,150 @@ +[#]: subject: "Manage your file system from the Linux terminal" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-nnn" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Manage your file system from the Linux terminal +====== + +I tend to enjoy lightweight applications. They're good for [low spec computers][1], for [remote shells][2], for the impatient user (OK, I admit, that's me), and for the systems we scrap together to fight the inevitable [zombie apocalypse][3]. In my search for a perfect blend of a lightweight application with all the modern conveniences we've learned from experience, I stumbled across a file manager called **nnn**. The nnn file manager exists in a terminal only, but it feels like a modern keyboard-driven application with intuitive actions and easy navigation. + +![Image of the nnn file manager.][4] + +### Install nnn + +On Linux, you may find nnn in your Linux distribution's software repository. For instance, on Debian: + +``` +$ sudo apt install nnn +``` + +If your repository doesn't have nnn available, you can download a package for your distribution from [OBS][5] or from the project [Git repository][6]. + +On macOS, use [Homebrew][7] or [MacPort][8]. + +### Using nnn + +Launch nnn from a terminal: + +``` +$ nnn +``` + +Your terminal is now the nnn interface, and by default it lists the contents of your current directory: + +``` +1 2 3 4 ~ +Desktop/ +Documents/ +Downloads/ +Music/ +Pictures/ +Public/ +Templates/ +Videos/4/8 2022-12-01 15:54 drwxr-xr-x 6B +``` + +At the top of the nnn interface are tabs (called a "context" in nnn terminology), numbered one to four. + +At the bottom of the nnn interface, there are ownership and permission details about your current selection. + +Use either the **Up** and **Down** arrow keys or the **k** and **j** keys (as in [Vim][9]) to change your selection. Use the **Right** arrow key, **Return**, or the **l** key to enter a directory or to open a file. Use the **Left** arrow key or **h** to back out of a directory. + +That's it for navigation. It's easier than any graphical file manager because there aren't any widgets that get in the way. There's no need to **Tab** over buttons, you just use the arrow keys or the QWERTY home row. + +### Open a file + +One of the reasons you use a file manager is to find a file and then open it. Your desktop already has default applications set, and nnn inherits this knowledge, so press `Return` or `Right` arrow to open a file in its default application. + +Should you need to open a file in something other than its default application, press `=` instead, and then type the name of the application in the prompt at the bottom of the nnn interface. + +### Copy a file + +To copy a file or any number of files, you must first select a file to copy, then navigate to its intended destination, and finally invoke the copy command. Thanks to nnn's context control (those are the numbers at the top of the screen, and you can think of them as tabs in a web browser), this is a quick process. + +- First, select the file you want to copy and press **Spacebar** to select the file. It's marked with a plus sign (**`+`**) to indicate its selected state. +- Press **`2`** to change to a new context. +- Navigate to the target directory and press **p** to copy. + +### Move a file + +Moving files is the same process as copying a file, but the keyboard shortcut for the action is **v**. + +### Selecting files + +There are a few ways to mark selections in nnn. The first is manual selection. You find a file you want to select, and then press **Spacebar** to mark it as selected. Press **Spacebar** again to deselect it. + +One selection doesn't cancel another, so you can select several files manually, but that can become tedious. Another way to select many files at once is to "mark in " and "mark out". To mark a selection, press `m` on the first file you want to select, and then use your arrow keys to move to the last file you want to select. Press `m` again to close the selection: + +``` +1 2 3 4 ~ ++Desktop/ ++Documents/ ++Downloads/ ++Music/ ++Pictures/ ++Public/ +Templates/ +Videos/6/8 [ +6 ] 2022-12-01 15:54 drwxr-xr-x 6B +``` + +Finally, the third way to select files is to press `a` to _select all_. Use **`A`** to invert the selection (in this case, to _select none_.) + +### Creating an archive + +To create an archive of a file or a selection of files, press `z`. At the bottom of the nnn interface, you're prompted to choose between your current item of your selection. Then you're prompted for a file name. Luckily, nnn is a smart application and derives its file type from the name you provide. If you name your archive `example.tar.xz` then nnn creates a TAR archive with lzma compression, but if you name it `example.zip` then it creates a ZIP file. + +You can verify the file type yourself by pressing the `f` key with your new archive selected: + +``` +File: /home/tux/Downloads/example.zip +  Size: 184707          Blocks: 368        IO Block: 4096   regular file +Device: fd00h/64768d    Inode: 17842380    Links: 1 +Access: (0664/-rw-rw-r--)  Uid: ( 1002/     tux)   Gid: ( 1002/     tux) +Context: unconfined_u:object_r:user_home_t:s0 +Access: 2022-09-20 15:12:09.770187616 +1200 +Modify: 2022-09-20 15:12:09.775187704 +1200 +Change: 2022-09-20 15:12:09.775187704 +1200 + Birth: 2022-09-20 15:12:09.770187616 +1200 +Zip archive data, at least v2.0 to extract +application/zip; charset=binary +``` + +### Cancel an action + +When you find yourself backed into a corner and need to press a panic button, use the **`Esc`** key. (This is likely to be the single most confusing keyboard shortcut for a longtime terminal user who's accustomed to **Ctrl+C**.) + +### Never close nnn + +To quit nnn, press **`Q`** at any time. + +It's a very capable file manager, with functions for symlinks, FIFO, bookmarks, batch renaming, and more. For a full list of what nnn can do, press the **`?`** key. + +The most clever feature is the shell function. Press **`!`** to open a shell over the nnn interface. You'll forget nnn is there, until you type `exit` and you find yourself back in the nnn interface. It's that easy to leave nnn open all the time, so you can always have quick access to the fastest lightweight file management you're likely to experience. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-nnn + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/19/7/how-make-old-computer-useful-again +[2]: https://www.redhat.com/sysadmin/access-remote-systems-ssh +[3]: https://opensource.com/zombie +[4]: https://opensource.com/sites/default/files/2022-10/nnn.filemanager.png +[5]: https://software.opensuse.org//download.html?project=home%3Astig124%3Annn&package=nnn +[6]: https://github.com/jarun/nnn/releases +[7]: https://opensource.com/article/20/6/homebrew-mac +[8]: https://opensource.com/article/20/11/macports +[9]: https://opensource.com/article/19/3/getting-started-vim diff --git a/sources/tech/20221208.7 ⭐️⭐️ Kumandar Linux Lightweight Debian & Xfce Spin with Windows 7 Look.md b/sources/tech/20221208.7 ⭐️⭐️ Kumandar Linux Lightweight Debian & Xfce Spin with Windows 7 Look.md new file mode 100644 index 0000000000..4e1eb3472c --- /dev/null +++ b/sources/tech/20221208.7 ⭐️⭐️ Kumandar Linux Lightweight Debian & Xfce Spin with Windows 7 Look.md @@ -0,0 +1,121 @@ +[#]: subject: "Kumandar Linux: Lightweight Debian & Xfce Spin with Windows 7 Look" +[#]: via: "https://www.debugpoint.com/kumandar-linux-alpha/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Kumandar Linux: Lightweight Debian & Xfce Spin with Windows 7 Look +====== + +**A new Linux distribution Kumandar Linux is under development (Alpha stage), and it makes switching to Linux easier with a default Windows 7 look.** + +![Kumandar Linux Desktop][1] + +Kumandar Linux is a new Linux distribution in the making coming from the Philippines. It is developed by Roy Hoejgaard and is currently in the Alpha stage. + +The name is a little unique, and as per the website: + +> “The name Kumander simply means Commander in English. It’s actually a homage to Commodore (my 1st computer – a VIC20 no less), but I didn’t think “Komodoro” sounded quite right. So Kumander it is.” + +Let’s take a look. + +### Kumandar Linux: A Quick First Look + +At first glance, it reminds you of the Windows 7 look, which is the default window manager GTK theme used here. Per the team, the drive to make this distro is to provide Linux users with a friendly user interface (which peaked in Windows 7 from Microsoft and went downhill after that). In addition to the look, it also promises a lightweight distro experience with Debian stable and Xfce desktop environment at the core. + +#### Installation + +Kumandar Linux uses Debian’s native installer with the branding changes only. It installs fine, and no surprises there. However, you can only launch the installation from the boot menu. There is no installation option from the LIVE medium. + +![Boot screen][2] + +![uses Debian installer][3] + +#### Login screen, Xfce desktop and components + +The login screen would remind you of the Windows 7 login screen. And when you log in, you should see a clean Xfce desktop in Kumandar Linux. + +It uses a natively developed Kumandar window manager theme, icon theme and the GTK2 theme. This includes the Xfce style as well. All of these blends nicely with the Xfce desktop to give you the following look. + +![Login screen][4] + +![Desktop look -2][5] + +The Xfce Panel is well configured to give you a perfect width, and the tray menu looks awesome. Usability-wise it is perfect with the default shortcuts and Xfce application menu. + +Default Sans font gives the final touch to make it look like Windows 7. The GTK2 theme really well built because of the animation on buttons during mouseover and desktop controls – they all look pleasant with the overall Windows 7 look. + +#### Applications + +All the necessary apps are pre-loaded in Kumandar Linux. That includes all the native Xfce apps. Furthermore, the developer also renamed some of the apps to make them feel like Windows apps. However, they are actually native Xfce apps. + +For example, the [default lightweight notepad][6] of Xfce desktop “mousepad” is changed to “Notepad” in the menu entry! + +Some of the key applications which are pre-loaded are the followings. These are in addition to the default Xfce apps. + +- Geany +- VSCodium +- Firefox +- GIMP +- Blender +- Inkscape +- LibreOffice +- Filezilla +- Putty +- Thunderbird email client +- Transmission torrent client +- Audacious and Ardour for audio work +- Parole music player + +![Kumandar Linux Running LibreOffice][7] + +Furthermore, the Synaptic package manager is there to install and uninstall apps. The list of pre-loaded applications, I believe, is almost complete for general use. And thanks to Debian stable, they should work fine. + +### Performance + +With all the customization and this theme, its performance is exceptionally well. I kept it running for almost 3 hours in Virtualbox. It consumes around 590 MB of memory which is really good. The CPU is in the 2% to 4% range. + +On top of that, if you run more apps, it may go up accordingly. But the baseline metric is impressive, and it might be one of the contenders on the [lightweight distro list][8] once it becomes a stable release. + +It uses only 6GB of disk space for the default installation. + +![Performance][9] + +### Wrapping Up + +The Kumandar Linux Alpha version looks promising, and I hope to see a stable release soon. For elders who want a familiar-looking distro to make a move to Linux for themselves, this might be a good “off the shelf” distro to start with. Because you probably do not need to configure anything or install any app. All the necessary configs and apps are done. + +And thanks to Debian-stable and Xfce desktop – the overall stability of the distro and desktop would be solid. Also, I believe this distro needs a 32-bit ISO, definitely. + +That being said, if you want to give it a try, download the ISO file from the [official website][10]. And let me know your opinion in the comment box. + +[Next:Mouse cursor is not visible in Fedora and Wayland [Fixed]][11] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/kumandar-linux-alpha/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/12/Kumandar-Linux-Desktop.jpg +[2]: https://www.debugpoint.com/wp-content/uploads/2022/12/Boot-scree.jpg +[3]: https://www.debugpoint.com/wp-content/uploads/2022/12/uses-Debian-installer.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2022/12/Login-screen.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2022/12/Desktop-look-2.jpg +[6]: https://www.debugpoint.com/lightweight-notepad-linux/ +[7]: https://www.debugpoint.com/wp-content/uploads/2022/12/Kumandar-Linux-Running-LibreOffice.jpg +[8]: https://www.debugpoint.com/lightweight-linux-distributions-2022/ +[9]: https://www.debugpoint.com/wp-content/uploads/2022/12/Performance.jpg +[10]: https://www.kumander.org/?route=download +[11]: https://www.debugpoint.com/cursor-not-visible-wayland/ + diff --git a/sources/tech/20221209.1 ⭐️⭐️ A Linux file manager for Emacs fans.md b/sources/tech/20221209.1 ⭐️⭐️ A Linux file manager for Emacs fans.md new file mode 100644 index 0000000000..a8460b53e5 --- /dev/null +++ b/sources/tech/20221209.1 ⭐️⭐️ A Linux file manager for Emacs fans.md @@ -0,0 +1,164 @@ +[#]: subject: "A Linux file manager for Emacs fans" +[#]: via: "https://opensource.com/article/22/10/linux-file-manager-dired" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +A Linux file manager for Emacs fans +====== + +In 2009, I was working hard at a startup in Pittsburgh, and in the late evenings of coding, I developed a GNU Emacs habit. The thing about Emacs is that it's just too versatile to close. Whether you're writing code, writing articles about open source, jotting down a task list, or even playing music, you can do it all from within Emacs. And every time you think you've found a task outside of Emacs, you discover an Emacs mode to prove you wrong. One of my favorite reasons to not close Emacs is its file manager, called directory editor or just Dired. + +### Install GNU Emacs + +Dired is included with Emacs, so there's no install process aside from installing Emacs itself. + +On Linux, you can find GNU Emacs in your distribution's software repository. On Fedora, CentOS, Mageia, and similar: + +``` +$ sudo dnf install emacs +``` + +On Debian, Linux Mint, Elementary, and similar: + +``` +$ sudo apt install emacs +``` + +On macOS, use [Homebrew][1] or [MacPort][2]. + +For Windows, use [Chocolatey][3]. + +![Image of dired file directory.][4] + +### File management with Dired + +Dired mode is a text-based file management system. It can run in the graphical version of Emacs or in the terminal version of Emacs, making it a flexible, lightweight, and approved for use during a [zombie apocalypse][5]. + +To launch it, press **Ctrl+X** and then **d**. You're prompted in the mini buffer (the field at the bottom of the Emacs window) for the directory you want to open. It defaults to your home directory (`~`). + +``` +/home/tux: +total used in directory 40 available 88.1 GiB +drwx------. 17 tux  tux  4096 Sep 20 15:15 . +drwxr-xr-x.  5 root root   42 Sep 14 05:29 .. +-rw-------.  1 tux  tux   938 Sep 20 15:28 .bash_history +-rw-r--r--.  1 tux  tux    18 Nov  6  2021 .bash_logout +-rw-r--r--.  1 tux  tux   141 Nov  6  2021 .bash_profile +-rw-r--r--.  1 tux  tux   492 Nov  6  2021 .bashrc +drwxr-xr-x. 16 tux  tux  4096 Sep 20 14:23 .cache +drwx------. 16 tux  tux  4096 Sep 20 14:51 .config +drwxr-xr-x.  2 tux  tux    59 Sep 20 15:01 Desktop +drwxr-xr-x.  2 tux  tux     6 Sep 15 15:54 Documents +drwxr-xr-x.  3 tux  tux   166 Sep 20 15:12 Downloads +-rw-r--r--.  1 tux  tux   334 Oct  5  2021 .emacs +drwx------.  2 tux  tux     6 Sep 20 14:25 .emacs.d +-rw-------.  1 tux  tux    33 Sep 20 15:15 .lesshst +drwx------.  4 tux  tux    32 Sep 15 15:54 .local +drwxr-xr-x.  6 tux  tux    81 Sep 15 16:03 .mozilla +drwxr-xr-x.  2 tux  tux     6 Sep 15 15:54 Music +drwxr-xr-x.  2 tux  tux    59 Sep 20 14:52 Pictures[...] +``` + +The file listing provided looks familiar to anyone accustomed to `ls -l` in a terminal. From left to right: + +- Identifies the entry as a directory, if applicable, and then lists the [file permissions][6] +- The number of hard links to the entry (for example, the `Desktop` entry has 1 hard link representing itself, and 1 file in it) +- User +- Group +- Disk space used, in bytes +- Time last modified +- File name + +### Navigation + +To navigate Dired, you can use either the arrow keys or [standard Emacs key bindings][7]. For this article, I use Emacs notation: **C-** for **Ctrl** and **M-** for **Alt** or **Meta**. + +- **C-p** or **Up** arrow: Previous entry in list +- **C-n** or **Down** arrow: Next entry in list +- **Enter** or **v**: Descend into the selected directory +- **^**: Move "up" the directory tree to the current directory's parent + +### Refreshing the view + +Dired doesn't redraw the screen for every action, so sometimes you may need to prompt it to refresh. Press **g** to redraw a Dired listing. + +### Open a file + +One of the reasons you use a file manager is to find a file and then open it. Emacs can't open every file type, but you might be surprised at just how much it can handle. Then again, not everything it can handle is necessarily useful to you. For instance, it's nice that Emacs _can_ open a JPEG but I rarely view a JPEG in Emacs, and I certainly don't use it to edit a JPEG. + +Assuming you're considering the types of files you find Emacs useful for, you can open them directly from Dired. That includes text files (Asciidoc, Markdown, HTML, CSS, Lua, Python, and so on) as well as compressed TAR archives. + +To close a file that you've opened, use the **C-x****C-k** Emacs binding to invoke the `kill-buffer` function. + +### Copy a file + +To copy a file from one directory to another, press **C** (that's the capital letter `C`, not the **Ctrl** key). You're prompted to provide a destination directory and file name in the mini buffer at the bottom of the Emacs window. + +### Move a file + +Moving a file is, confusingly, _renaming_ a file (the exact opposite terminology used in Linux, where renaming a file is actually _moving_ a file.) I've used Dired for years and I still fail to remember this linguistic quirk. + +To rename a file, whether you're renaming it back into its current directory or renaming it to some other directory, press **R** (capital `R`.) You're prompted to provide a destination directory and a new file name in the mini buffer at the bottom of the Emacs window. + +### Selecting files + +There are a few ways to mark selections in Dired. The first is to have your cursor on the same line as a file or directory entry. If your cursor is on the same line as an entry, then that entry is considered the implicit selection. Any action you take in Dired that targets a file targets that one. This includes, incidentally, "marking" a file as selected. + +To mark a file as selected, press **m** while your cursor is on its line. You can mark as many files as you want, and each one is considered selected. To deselect (unmark) a file, press the **u** key. + +Yet another way to select multiple lines at once is to use a specialized selection function. Dired has several, including `dired-mark-directories` to mark all directories in a list, `dired-mark-executables` to select all binary executables in a list, `dired-mark-files-regexp` to mark files containing a regex pattern, and more. If you're not a regular Emacs user, this is a considered advanced because it requires you to invoke Emacs functions, but here's how to do it and what to look for. + +Suppose you want to select all directories in a list: + +- Press **M-x** to activate the mini buffer prompt. +- Type `dired-mark-directories` and press **Return** on your keyboard. +- Look at the mini buffer. It tells you how many directories have been marked, and then it tells you that you can invoke this function again in the future with *******/** key combination. + +Any function in GNU Emacs that has a key binding associated with it reveals the keys to you after you've invoked it in its long form. + +### Creating an archive + +To create an archive of a file or a selection of files, press `c` (that's a lower-case `c`, not **Ctrl**). If you have nothing selected (or "marked" in Emacs terminology), then the current line is compressed. If you have files marked, then they're compressed into a single archive. In the mini buffer at the bottom of the Emacs window, you're prompted for a file name and path. Luckily, Emacs is a smart application and derives the target file type from the name you provide. If you name your archive `example.tar.xz`, then Emacs creates a TAR archive with lzma compression, but if you name it `example.zip` then it creates a ZIP file. + +### Cancel an action + +Should you accidentally invoke a function you don't want to finish, press **C-g** (that's Emacs notation for **Ctrl+G**.) Depending on where you are in the course of the function, you may have to press **C-g** in the mini buffer specifically to stop it from prompting you to continue. This is true for Emacs as a whole, so learn this valuable trick for Dired and carry it over to every mode you use. + +### Emacs is always open + +To quit Dired, you press **C-x****C-k** to kill the Dired buffer, just as you kill any Emacs buffer. + +To quit Emacs altogether, press **C-x****C-c**. + +Dired is a very capable file manager, and I've only covered the basics here. For a full list of what Dired can do, press they `h` key. + +I think Dired is probably most useful to those using or intending to use Emacs. I probably wouldn't choose it as a general-purpose file manager on a graphical system, because there are so many great alternatives already configured to work with the rest of the system when opening files. Of course, Emacs is infinitely configurable, so if you really enjoy Dired you can set it to do whatever you want it to do. + +For a headless system, though, I find that Dired makes a great file manager. Emacs is such a robust operating environment as it is, and Dired only adds to its versatility. With Emacs open, you have a built-in file manager, shell, multiplexer, text editor, and file previewer. You could very nearly use Emacs essentially as your login shell. + +Dired is a good text-based file manager, and well worth a look. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/10/linux-file-manager-dired + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/20/6/homebrew-mac +[2]: https://opensource.com/article/20/11/macports +[3]: https://opensource.com/article/20/3/chocolatey +[4]: https://opensource.com/sites/default/files/2022-10/dired.directory.png +[5]: https://opensource.com/zombie +[6]: https://www.redhat.com/sysadmin/suid-sgid-sticky-bit +[7]: https://opensource.com/article/20/1/emacs-cheat-sheet diff --git a/sources/tech/20221210.0 ⭐️ How to use the Linux file manager for GNOME 2.md b/sources/tech/20221210.0 ⭐️ How to use the Linux file manager for GNOME 2.md new file mode 100644 index 0000000000..f14b97ed3f --- /dev/null +++ b/sources/tech/20221210.0 ⭐️ How to use the Linux file manager for GNOME 2.md @@ -0,0 +1,74 @@ +[#]: subject: "How to use the Linux file manager for GNOME 2" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-caja" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to use the Linux file manager for GNOME 2 +====== + +Before GNOME 3 there was (unsurprisingly) GNOME 2, which had gained an ardent fanbase during its reign as one of the common default Linux desktops. The [Mate project][1] (named after the _yerba mate_ plant) began as an effort to continue the GNOME 2 desktop, at first using GTK 2 (the toolkit GNOME 2 was based upon) and later incorporating GTK 3. Today, Mate delivers a familiar desktop environment that looks and feels exactly like GNOME 2 did, using the GTK 3 toolkit. Part of that desktop is the Caja file manager, a simple but robust application that helps you sort and organize your data. + +### Install Caja + +Caja isn't exactly a stand-alone application. It's tightly coupled to the Mate desktop, so to try it you must install Mate. + +You may find Mate included in your Linux distribution's software repository, or you can download and install a distribution that ships Mate as its default desktop. Before you do, though, be aware that it's meant to provide a full desktop experience, so many Mate apps are installed along with the desktop. If you're running a different desktop, you may find yourself with redundant applications (two PDF readers, two media players, two file managers, and so on). To evaluate Caja without making major changes to your computer, install a Mate-based distribution in a virtual machine using [GNOME Boxes][2]. + +![Image of the ​Caja file manager.][3] + +### Clear layout + +The thing that you're likely to notice first about Caja is its clear and direct layout. There's a toolbar across the top of the Caja window with buttons for common tasks. I love this kind of design. Function isn't hidden away in a right-click menu, nor discoverable only after an action, nor buried in a menu. The "obvious" actions for the window are listed right across the top. + +Under the main toolbar is the location bar. This displays your current path, either as a series of buttons or as editable text. Use the **Edit** button to the left of the path to toggle whether it's editable or not. + +### Configurable + +For longtime users of GNOME 2 or Caja, the main toolbar can be redundant, especially once you know the keyboard shortcuts to invoke common actions. That's why the Caja interface is configurable. You can disable major components of the Caja window from the **View** menu, including: + +- Main toolbar +- Location bar +- Side panel +- Extra panel +- Status bar + +In short, you can make Caja as minimal as you want it to be. + +![Image of ​a minimal Caja layout.][4] + +### Tag your folders + +Some people are "visual" people. They like to organize files and folders according to how they perceive their data, rather than how the computer interprets it. For instance, if the two most significant folders for you are **Music** and **Work**, it can be hard to convince a computer that there's any relationship between those two. Alphabetically, there's a lot that should get started between the two, and the contents of each may be completely different (media files in one, spreadsheets in another). + +### Caja offers some assistance. + +With Caja, you can place directories manually within a window, and Caja remembers that placement. What's more, Caja has a variety of emblems available for you to use as visual labels. You can find them in the **Edit** menu, in **Backgrounds and Emblems**. Drag and drop them onto files and folders to help them stand apart. + +![Image of emblems in Caja.][5] + +### Caja + +As file managers go, Caja is one of the most inviting. It's configurable enough to appeal to many different use cases, and in those configuration options, you're likely to find a workflow that works for you. If you're a fan of GNOME 2, then you're sure to find Caja familiar, and if you've never used GNOME 2 then you might just find your new favorite desktop in Mate. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-caja + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/19/12/mate-linux-desktop +[2]: https://opensource.com/article/19/5/getting-started-gnome-boxes-virtualization +[3]: https://opensource.com/sites/default/files/2022-10/caja.file%20manager.png +[4]: https://opensource.com/sites/default/files/2022-10/caja-minimal-layout.png +[5]: https://opensource.com/sites/default/files/2022-10/caja-emblem.webp diff --git a/sources/tech/20221212.1 ⭐️⭐️ How to Install the Minimalist ArchBang Linux Distro.md b/sources/tech/20221212.1 ⭐️⭐️ How to Install the Minimalist ArchBang Linux Distro.md new file mode 100644 index 0000000000..2a0195401f --- /dev/null +++ b/sources/tech/20221212.1 ⭐️⭐️ How to Install the Minimalist ArchBang Linux Distro.md @@ -0,0 +1,301 @@ +[#]: subject: "How to Install the Minimalist ArchBang Linux Distro" +[#]: via: "https://itsfoss.com/install-archbang/" +[#]: author: "Sreenath https://itsfoss.com/author/sreenath/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Install the Minimalist ArchBang Linux Distro +====== + +ArchBang is a minimal and lightweight [Arch Linux based distribution][1]. It uses the i3 window manager. With its minimal nature, ArchBang can help you revive your old computer or low-end devices. + +There are two ways to install Arch Bang: + +- Using the guided installer script +- Following Arch wiki + +No prizes for guessing that using the guided installer script will be easier to follow. + +In this tutorial, I’ll show you the steps for installing ArchBang with its text-based installer script. + +Please [check if your computer has UEFI or the legacy BIOS system][2]. Some steps are different for them. + +I have performed the demo in a virtual machine. And hence the wifi configuration part is not there. Internet connection is not mandatory here; you can also install it offline. You can connect to wifi from within the system after successfully installing ArchBang. + +Also, this method will remove any other operating system installed on your disk. Please be mindful of that. + +### Download ArchBang Live ISO + +To install ArchBang, you need the live ISO first. + +You can go to their [official website and download the required ISO][3], as shown in the below screenshot. + +![go to archbang iso images to download the iso file from sourceforge][4] + +It brings you to their Sourceforge page. Download the ISO, which is approximately 1.2 GiB in size. + +### Create the Live USB of ArchBang + +Once downloaded, you should make a bootable USB of ArchBang. You can [use software like Balena Etcher][5] to create it. It’s quite simple to use. + +Plug in your USB, browse to the downloaded ISO file and then hit the Flash button. + +![etcher flash][6] + +### Using text-based ArchBang installer + +ArchBang live ISO will bring you to the default i3 desktop with conky running. + +![archbang live iso home screen][7] + +You have two methods to start the installation process: + +- Press **Super + I** (as per desktop conky) to start installation directly. +- Press **Super + T** to enter the terminal and use the command: `sudo abinstall` + +A terminal with several options will appear when you do the above step: + +![archbang installer][8] + +The above screenshot shows the main menu of ArchBang installer. You can select each section with the associated number. + +When you complete each category of the above installer, it will return to this menu and you can select the next category by pressing the corresponding number and Enter key. + +Also, the completed sections will be checked with an “x” mark. + +#### Step 1: Select / Set Partition + +On the new installer screen, enter “1” to start [partitioning the disk][9]. + +Inside this, select the **Default** option. The installer has several tools to partition the disk, like cfdisk, fdisk, parted, etc. I used fdisk to do the job. + +##### Partitioning for Non-UEFI system + +Once the tool is selected, it will ask to choose the storage device. In my case, it was `/dev/sda` . Select the appropriate choice in your context. + +To start partitioning, enter “n” for a new partition. After that, select **Primary Partition.** + +![creating partition for non uefi system][10] + +For [non-UEFI systems][2], you can create one single root partition for all purposes. So, accept all the default values for “First Sector” and “Last Sector”. Then, press “w” to write the changes. + +On the next screen, you have to choose your filesystem and swap method. In this tutorial, I am using the EXT4 file system and Swap to File as the swap method. + +So set those according to the screenshot. + +![format the disk and select ext4 partition][11] + +##### Partitioning for UEFI system + +For UEFI users, you need to have two partitions, one EFI, with a 550 MB space, and another main root partition with the rest of the space (Swap as a file setting). + +Press n and select **Primary Partition.** Then select the Partition number as 1. + +Accept the default value for “First sector”. Now enter “+550M” as the value for “Last Sector”. + +Once again, press “n” and select **Primary Partition**. Accept the default value for the first and last sectors. + +![create two partitions for efi system][12] + +Press “t” to change the type and select the partition number “1” or `/dev/sda1`, whose type is to be changed from “Linux” to “EFI”. + +Select the partition type as EFI, as shown below: + +![change type of smaller partition to efi][13] + +Press “w” to write the changes. Then it will ask for filesystem selection. Here, you need to select the larger partition as the root partition (/dev/sda2, that is option 2 in the below screenshot). + +![select larger partition for root partition in efi system][14] + +Select EXT4 filesystem. This will again ask for mounting EFI partition. + +![select efi partition][15] + +In this step, you need to select the EFI partition at `/dev/sda1` and choose the mount point as `/boot/efi` . This will ask for format. Give consent by pressing “y”. + +Also, don’t forget to choose the swap to file option. + +#### Step 2: Start ArchBang installation + +This is pretty simple. Select the Install ArchBang option from the main menu by pressing the corresponding number (2 in this case). It will start the installation process. + +![installing archbang progress bar][16] + +You should wait for some time to complete the installation. + +#### Step 3: Set Hostname + +Once installation is completed, Select the 3rd option on the main menu, which is for setting the hostname. You need to enter a hostname. + +![provide hostname and press enter][17] + +#### Step 4: Set Location + +Location/Time Zone is typically mentioned in Zone/City format. I used Asia/Kolkata as the time zone. + +The installer provides the list of available zones and cities; you need to enter the number corresponding to your choice. + +![set time zone info][18] + +Also, set your location the same way. + +#### Step 5: Set Hardware Clock + +You have two options; Set Hardware Clock to UTC or Local Time. + +![set hardware clock time][19] + +There are two time standards:** localtime** and Coordinated Universal Time (UTC). The localtime standard depends on the current time zone, while UTC is the global time standard and is independent of time zone values. + +Enter your choice and press Enter key. + +#### Step 6: Set Locale + +Usually, you set the locale to en_US, if you are unsure what to do. That should be fine for most English-speaking users. + +If you want to use the operating system in some other language like French, Spanish, Dutch etc, you can choose the appropriate locale from the list. + +![set locale][20] + +#### Step 7: Desktop Keyboard Layout + +Similarly, most users should be fine with US keyboard. If you have some other keyboard (like French, or Italian), enter the appropriate choice from the available ones. + +![set desktop keyboard layout][21] + +#### Step 8: Configure Bootloader + +In ArchBang, you get GRUB2, Syslinux, or Systemd for the bootloader. To make it simple, I am selecting GRUB2 from the choice. + +![select grub2 as bootloader][22] + +Now, it will ask you to specify the method to install GRUB. Select **Automatic** and press enter. + +![select automatic grub][23] + +#### Step 9: Set Root Password + +Now, you should enter the root password. Select “Root Password” from the main menu. + +![enter and confirm root password][24] + +Here, enter and confirm the root password. + +#### Step 10: Create a New User + +Using a system with only a Root User is not secure. So, you should create a new user. In this installer, select the 10th option. Here, you should type a user name, password and confirm the password. + +![create user and password][25] + +Once done, press Enter to go to the main menu. + +#### Step 11: Finish configuration + +At this stage, you have reviewed all the configurations needed. You can now make it to effect by entering the letter “d” as shown in the screenshot below: + +![enter d option to finish the installation][26] + +This will ask permission to reboot your system. + +![press y to reboot your system to new archbang][27] + +Entering “y” will reboot your system to the newly installed ArchBang system. + +### Post Installation Tweaks + +Once rebooted, you will land in the same console. Probably there is no [display manager][28] installed. Here you should enter the username and password and press enter. + +![login to archbang through tty][29] + +This will bring you to the i3WM. + +![installed archbang with i3wm][30] + +Once installed, you need to do a couple of update tasks. **Connect to the internet first**. + +Firstly, you need to update the Pacman keys and archlinux-keyring. + +To do the same, open a terminal by pressing **Super + T** and run the following commands one by one: + +``` +sudo pacman-key –init +sudo pacman-key –populate +sudo pacman -Syyu archlinux-keyring +``` + +This will update system packages and keyrings. Reboot your system. + +Now, you should install a display manager. I prefer LightDM display manager. So open a terminal and enter the following command to install it: + +``` +sudo pacman -S lightdm lightdm-gtk-greeter +``` + +Once installed, use the following command to start the Lightdm service: + +``` +sudo systemctl enable lightdm.service +``` + +You will get a good and minimal login screen from the next reboot. + +![lightdm login screen in archbang][31] + +You can now enjoy ArchBang Linux according to your liking. + +### Wrapping Up + +ArchBang brings a good Arch Linux experience coupled with a not-so-hard installer and i3WM as the window manager. + +I understand that using a text-based installer like this one could be intimidating for some users. But then, it is [one of the joys of the Arch Linux][32] domain. It feels like a challenge and when you successfully install it, it gives you a sense of accomplishment. + +I have tried to detail all the steps with the necessary explanation. Please let me know if you face any issues or if you have any questions. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/install-archbang/ + +作者:[Sreenath][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/sreenath/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/arch-based-linux-distros/ +[2]: https://itsfoss.com/check-uefi-or-bios/ +[3]: https://sourceforge.net/projects/archbang/files/ +[4]: https://itsfoss.com/wp-content/uploads/2022/12/go-to-archbang-iso-images-to-download-the-iso-file-from-sourceforge.png +[5]: https://itsfoss.com/install-etcher-linux/ +[6]: https://itsfoss.com/wp-content/uploads/2022/06/etcher-flash.png +[7]: https://itsfoss.com/wp-content/uploads/2022/12/archbang-live-iso-home-screen.webp +[8]: https://itsfoss.com/wp-content/uploads/2022/12/archbang-installer.png +[9]: https://itsfoss.com/partition-managers-linux/ +[10]: https://itsfoss.com/wp-content/uploads/2022/12/creating-partition-for-non-uefi-system.png +[11]: https://itsfoss.com/wp-content/uploads/2022/12/format-the-disk-and-select-ext4-partition.png +[12]: https://itsfoss.com/wp-content/uploads/2022/12/create-two-partitions-for-efi-system.png +[13]: https://itsfoss.com/wp-content/uploads/2022/12/change-type-of-smaller-partition-to_efi.png +[14]: https://itsfoss.com/wp-content/uploads/2022/12/select-larger-partition-for-root-partition-in-efi-system.png +[15]: https://itsfoss.com/wp-content/uploads/2022/12/select-efi-partition.png +[16]: https://itsfoss.com/wp-content/uploads/2022/12/installing-archbang-progress-bar.png +[17]: https://itsfoss.com/wp-content/uploads/2022/12/provide-hostname-and-press-enter.png +[18]: https://itsfoss.com/wp-content/uploads/2022/12/set-time-zone-info.png +[19]: https://itsfoss.com/wp-content/uploads/2022/12/set-hardware-clock-time.png +[20]: https://itsfoss.com/wp-content/uploads/2022/12/set-locale.png +[21]: https://itsfoss.com/wp-content/uploads/2022/12/set-desktop-keyboard-layout.png +[22]: https://itsfoss.com/wp-content/uploads/2022/12/select-grub2-as-bootloader.png +[23]: https://itsfoss.com/wp-content/uploads/2022/12/select-automatic-grub.png +[24]: https://itsfoss.com/wp-content/uploads/2022/12/enter-and-confirm-root-password.png +[25]: https://itsfoss.com/wp-content/uploads/2022/12/create-user-and-password.png +[26]: https://itsfoss.com/wp-content/uploads/2022/12/enter-d-option-to-finish-the-installation.png +[27]: https://itsfoss.com/wp-content/uploads/2022/12/press-y-to-reboot-your-system-to-new-archbang.png +[28]: https://itsfoss.com/display-manager/ +[29]: https://itsfoss.com/wp-content/uploads/2022/12/login-to-archbang-through-tty.png +[30]: https://itsfoss.com/wp-content/uploads/2022/12/installed-archbang-with-i3wm.png +[31]: https://itsfoss.com/wp-content/uploads/2022/12/lightdm-login-screen-in-archbang.png +[32]: https://itsfoss.com/why-arch-linux/ diff --git a/sources/tech/20221212.2 ⭐️⭐️ A sysadmin's guide to Carbonio.md b/sources/tech/20221212.2 ⭐️⭐️ A sysadmin's guide to Carbonio.md new file mode 100644 index 0000000000..aad2bc5ffa --- /dev/null +++ b/sources/tech/20221212.2 ⭐️⭐️ A sysadmin's guide to Carbonio.md @@ -0,0 +1,119 @@ +[#]: subject: "A sysadmin's guide to Carbonio" +[#]: via: "https://opensource.com/article/22/12/carbonio-community-edition-sysadmin" +[#]: author: "Arman Khosravi https://opensource.com/users/arman-khosravi" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +A sysadmin's guide to Carbonio +====== + +[Carbonio Community Edition (Carbonio CE)][1] is an open source no-cost email and collaboration platform by Zextras. It provides privacy for organizations seeking digital sovereignty by using on-premises self-hosted servers. Using self-hosted servers offers a deeper level of control over infrastructure and data. However, it requires more attention to server configurations and infrastructure management to guarantee data sovereignty. Tasks done by system administrators play an important role in this matter. This makes administrative tasks a crucial part of achieving digital sovereignty, therefore, an administrative console dedicated to such tasks becomes extremely valuable to facilitate sysadmins' everyday jobs. + +This is why Zextras launched the first release of its own admin panel for Carbonio CE on October 2022. For Carbonio CE system administrators, it is the first step toward the creation of an all-inclusive admin console. + +In this article, I go into detail about the Carbonio CE Admin Panel and take a deeper look into what it can accomplish. + +![Image of the Carbonio admin panel.][2] + +### What is the Carbonio CE Admin Panel? + +The Carbonio CE Admin Panel is designed to assist the Carbonio CE system administrators with the most repetitive and frequent tasks such as user management and domain configuration. It is a browser-based application that runs on a particular port and is available for system administrators to use in production environments as soon as Carbonio CE is installed. + +### Why do you need the admin panel? + +Everything done in Carbonio CE Admin Panel can be done through the command-line interface as well. This raises the question: why might system administrators prefer using the admin panel rather than the command-line interface? + +Using the admin panel has its own obvious advantages such as: + +- Making repetitive activities much easier to perform +- Saving system administrators' time monitoring servers +- Providing a much easier learning process for junior system administrators + +Even though using the admin panel makes administrative tasks easier to perform, there is more to using this native user interface for Carboino CE. In essence, the Carbonio CE Admin Panel gives you the ability to monitor and manage your organization server from a single centralized location. Even when you're far away, you may still access your admin panel to check the status of servers and carry out various administrative activities. + +### Creating and managing user accounts + +Managing users has always been one of the most, if not the most, performed action by sysadmins. Therefore it should be an essential part of every administrative GUI available for system administrators. Suppose you, as the system administrator of the company have received some request by users to edit some information on their account. For instance, giving them access to some features, or your company has hired new employees, or some employees have left the company. All these scenarios require a sysadmin to manage user accounts frequently. + +Using the Carbonio CE Admin Panel you can simply go to **Domains > select a domain > Accounts** and select any account to modify, or press the **+** button to add a new account. + +![Image of the accounts Carbonio adminpanel.][3] + +### Creating and managing mailing lists + +Besides creating user accounts, a system administrator is often required to create different mailing lists that reflect the organizational structure of the company. Using mailing lists, users can simply send emails to a group of users by inserting the list address instead of every user address one by one. + +Creating mailing lists in Carbonio CE is extremely easy using the admin panel. You need to go to **Domains > select a domain > Mailing List > press the + button**. You can now use the wizard that opens up to create a mailing list. + +![Image of the Carbonio admin panel mailing list.][4] + +The essential steps to follow are: + +- Insert the name +- Insert the mailing list address +- Press **NEXT** +- Insert the members +- Press **CREATE**. + +You can follow the same path to edit mail lists created before. + +### Creating and managing domains + +Managing domains is another task frequently done by system administrators. Similar to accounts, creating a domain is very easy in the Carbonio Admin Panel. You only need to go to **Domains > select a domain > under the details** and find different entries to monitor the status of the domain. To create a new domain simply click on the **CREATE** button on the top bar and select **Create New Domain** and insert the necessary information such as: + +- Domain name +- Maximum number of accounts and maximum email quota +- Mail server where the domain is hosted + +![Image of the Carbonio admin domains panel.][5] + +### Creating and managing mailstore servers + +The Carbonio CE Admin Panel allows system administrators to manage different servers present in the infrastructure and provide them with different tools to configure them. To monitor a new mailstore server you can go to **Mailstores > Servers List** and find all the available mailstore servers in your infrastructure in a list (when just one server is installed, only one server is shown in this area). + +Under **Server Details**, you can select any of the available servers in the list and select **Data Volumes** to show more details of the storage volumes attached to it. While multiple volumes can be mounted simultaneously, only one primary volume, one secondary volume, and one index volume can be designated as active. You can add new volumes using the **NEW VOLUME +** button in the same section. You can also change the volume properties simply by clicking on them to open their detail window. + +![Image of the Carbonio admin panel volumes.][6] + +### Creating and managing classes of service + +Another scenario that can be facilitated with the help of the admin panel is creating classes of service (COS). After the installation, a system administrator might need to create different classes (groups) and assign different properties to them. This way, later in the process each user or a group of users can be easily nominated to a class of service in order to have access to the features and properties assigned to that specific COS. + +![Image of the Carbonio admin panel COS features.][7] + +To create a COS simply click on the **CREATE** button and select **Create New COS** or alternatively go to **COS** on the left panel and click on **CREATE NEW COS +**. You can then insert the name of the COS and define the different services available to this specific class. + +To edit a COS, go to **COS** on the left panel and select a COS from the dropdown menu at top of the list. + +You can define settings like quotas, the mail servers that can host accounts from this COS, or enable features for this COS. You can also define features for general features like Mail, Calendar, and Contacts. Additional customizable options include Tagging, Out of Office Reply, Distribution List Folders, and so on. + +![Image of the Carbonio admin panel classes of service preferences.][8] + +### Conclusion + +In this article, you saw a few scenarios in which the Carbonio CE Admin Panel saves you time and effort. The admin panel is an evolution of classical administrative tools in a new and centralized interface that gives the possibility of accessing different functionalities and monitoring tools from the same location. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/carbonio-community-edition-sysadmin + +作者:[Arman Khosravi][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/arman-khosravi +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/22/3/open-source-collaboration-carbonio +[2]: https://opensource.com/sites/default/files/2022-11/carbonio_admin_panel.webp +[3]: https://opensource.com/sites/default/files/2022-11/accounts_carbonio_admin_panel.webp +[4]: https://opensource.com/sites/default/files/2022-11/mailing_list_carbonio_admin_panel.webp +[5]: https://opensource.com/sites/default/files/2022-11/domains_carbonio_admin_panel.webp +[6]: https://opensource.com/sites/default/files/2022-11/volumes_carbonio_admin_panel.webp +[7]: https://opensource.com/sites/default/files/2022-11/cos_features_carbonio_admin_panel.webp +[8]: https://opensource.com/sites/default/files/2022-11/cos_preferences_carbonio_admin_panel.webp diff --git a/sources/tech/20221213.1 ⭐️⭐️⭐️ Battle of the Texts and the Unicode Savior.md b/sources/tech/20221213.1 ⭐️⭐️⭐️ Battle of the Texts and the Unicode Savior.md new file mode 100644 index 0000000000..529dffde10 --- /dev/null +++ b/sources/tech/20221213.1 ⭐️⭐️⭐️ Battle of the Texts and the Unicode Savior.md @@ -0,0 +1,257 @@ +[#]: subject: "Battle of the Texts and the Unicode Savior" +[#]: via: "https://itsfoss.com/unicode-linux/" +[#]: author: "Sylvain Leroux https://www.yesik.it/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Battle of the Texts and the Unicode Savior +====== + +We all know how to type text on the keyboard. Don’t we? + +So, may I challenge you to type that text in your favorite text editor: + +![«Ayumi moved to Tokyo in 1993 to pursue her career» said Dmitrii][1] + +This text is challenging to type since it contains: + +- typographical signs not directly available on the keyboard, +- hiragana Japanese characters, +- the name of the Japanese capital written with a macron on top of the two letters “o” to comply with the Hepburn romanization standard, +- and finally, the first name Dmitrii written using the Cyrillic alphabet. + +No doubt, writing such a sentence on early computers would have been simply impossible. Because computers used limited character sets, unable to let coexist several writing systems. But today such limitations are lifted as we will see in this article. + +### How do computers store text? + +Computers stores characters as numbers. And they use tables to map those numbers to the glyph used to represent them. + +For a long time, computers stored each character as a number between 0 and 255 (which fits exactly one byte). But that was far from being sufficient to represent the whole set of characters used in human writing. So, the trick was to use a different correspondence table depending on where in the world you lived. + +Here is the [ISO 8859-15][2] correspondence table commonly used in France: + +![The ISO 8859-15 encoding][3] + +But if you lived in Russia, your computer would have probably used the [KOI8-R][4] or [Windows-1251][5] encoding instead. Let’s assume that later was used: + +![The Windows-1251 encoding is a popular choice to store text written using the Cyrillic alphabets][6] + +For numbers lower than 128, the two tables are identical. This range is corresponding to the [US-ASCII][7] standard, some kind of minimum-compatible set between characters tables. But beyond 128, the two tables are completely different. + +For example, according to Windows-1251, the string _“said Дмитрий”_ is stored as: + +``` +115 97 105 100 32 196 236 232 242 240 232 233 +``` + +To follow a common practice in computer sciences, those twelve numbers can be rewritten using the more compact hexadecimal notation: + +``` +73 61 69 64 20 c4 ec e8 f2 f0 e8 e9 +``` + +If Dmitrii sends me that file, and I open it I might end up seeing that: + +``` +said Äìèòðèé +``` + +The file _appears_ to be corrupted. But it isn’t. The data— that is the _numbers_–stored in that file don’t have changed. As I live in France, my computer has _assumed_ the file to be encoded as ISO8859-15. And it displayed the characters _of that table_ corresponding to the data. And not the character of the encoding table used when the text was originally written. + +To give you an example, take the character Д. It has the numeric code 196 (c4) according to Windows-1251. The only thing stored in the file is the number 196. But that same number corresponds to Ä according to ISO8859-15. So my computer wrongly believed it was the glyph intended to be displayed. + +![When the same text file is written then read again but using a different encoding][8] + +As a side note, you can still occasionally see an illustration of those issues on ill-configured websites or in email send by [mail user agents][9] making false assumptions about the character encoding used on the recipient’s computer. Such glitches are sometimes nicknamed [mojibake][10]. Hopefully, this is less and less frequent today. + +![Example of Mojibake on the website of a French movie distributor. The website name has been changed to preserve the innocent.][11] + +### Unicode comes to save to the day + +I explained encoding issues when exchanging files between different countries. But things were even worst since the encodings used by different manufacturers for the same country were not always the same. You can understand what I mean if you had to exchange files between Mac and PC in the 80s. + +Is it a coincidence or not, the [Unicode][12] project started in 1987, led by people of Xerox and … Apple. + +The goal of the project was to define a universal character set allowing to _simultaneously_ use any character used in human writing within the same text. The original Unicode project was limited to 65536 different characters (each character being represented using 16 bits— that is two bytes per character). A number that has proven to be insufficient. + +So, in 1996 Unicode has been extended to support up to 1 million different [code points][13]. Roughly speaking, a “code point” a number that identifies an entry in the Unicode character table. And one core job of the Unicode project is to make an inventory of all letters, symbols, punctuation marks and other characters that are (or were) used worldwide, and to assign to each of them a code point that will uniquely identify that character. + +This is a huge project: to give you some idea, the version 10 of Unicode, published in 2017, defines over 136,000 characters covering 139 modern and historic scripts. + +With such a large number of possibilities, a basic encoding would require 32 bits (that is 4 bytes) per character. But for text using mainly the characters in the US-ASCII range, 4 bytes per character means 4 times more storage required to save the data and 4 times more bandwidth to transmit them. + +![Encoding text as UTF-32 requires 4 bytes per character][14] + +So besides the [UTF-32][15] encoding, the Unicode consortium defined the more space-efficient [UTF-16][16] and [UTF-8][17] encodings, using respectively 16 and 8 bits. But how to store over 100,000 different values in only 8 bits? Well, you can’t. But the trick is to use one code value (8 bits in UTF-8, 16 in UTF-16) to store the most frequently used characters. And to use several code values for the least commonly used characters. So UTF-8 and UTF-16 are _variable length_ encoding. Even if this has drawbacks, UTF-8 is a good compromise between space and time efficiency. Not mentioning being backward compatible with most 1-byte pre-Unicode encoding, since UTF-8 was specifically designed so any valid US-ASCII file is also a valid UTF-8 file. In a sense, UTF-8 is a superset of US-ASCII. And today, there is no reason for not using the UTF-8 encoding. Unless of course if you write mostly with languages requiring multi-byte encodings or if you have to deal with legacy systems. + +I let you compare the UTF-16 and UTF-8 encoding of the same string on the illustrations below. Pay special attention to the UTF-8 encoding using one byte to store the characters of the Latin alphabet. But using two bytes to store characters of the Cyrillic alphabet. That is twice more space than when storing the same characters using the Windows-1251 Cyrillic encoding. + +![UTF-16 is a variable length encoding requiring 2 bytes to encode most characters. Some character still requires 4 bytes though (for example][18] + +![UTF-8 is a variable length encoding requiring 1, 2, 3 or 4 bytes per character][19] + +### And how does that help for typing text? + +Well… It doesn’t hurt to have some knowledge of the underlying mechanism to understand the capabilities and limitations of your computer. Especially we will talk about Unicode and hexadecimal a little later. But for now… a little bit more history. Just a little bit, I promise… + +… just enough to say starting in the 80s, computer keyboard used to have a [compose key][20] (sometimes labeled the “multi” key) next to the shift key. By pressing that key, you entered in “compose” mode. And once in that mode, you were able to enter characters not directly available on your keyboard by entering mnemonics instead. For example, in compose mode, typing RO produced the ® character (which is easy to remember as an R inside an O). + +![compose key on lk201 keyboard][21] + +It is now a rarity to see the compose key on modern keyboards. Probably because of the domination of PCs that don’t make use of it. But on Linux (and possibly on other systems?) you can emulate the compose key. This is something that can be configured in the GUI on many desktop environments using the “keyboard” control panel: But the exact procedure varies depending on your desktop environment or even depending its version. If you changed that setting, don’t hesitate to use the comment section to share the specific steps you’ve followed on your computer. + +As for myself, for now, I will assume you use the default Shift+AltGr combination to emulate the compose key. + +So, as a practical example, to enter the LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, you can type Shift+AltGr<< (you don’t have to maintain Shift+AltGr pressed when entering the mnemonic). If you managed to do that, I think you should be able to guess by yourself how to enter the _RIGHT-POINTING_ DOUBLE ANGLE QUOTATION MARK. + +As another example, try Shift+AltGr--- to produce an EM DASH. For that to work, you have to press the [hyphen-minus][22] key on the main keyboard, not the one you will find on your numeric keypad. + +Worth mentioning the “compose” key works in a non-GUI environment too. But depending if you use you use X11 or a text-only console, the supported compose key sequence are not the same. + +On the console, you can check the list of supported compose key by using the `dumpkeys` command: + +``` +dumpkeys --compose-only +``` + +On the GUI, compose key is implemented at Gtk/X11 level. For a list of all mnemonics supported by the Gtk, take a look at that page: [https://help.ubuntu.com/community/GtkComposeTable][23] + +### Is there a way to avoid relying on Gtk for character composition? + +Maybe I’m a purist, but I found somewhat unfortunate the compose key support being hard-coded in Gtk. After all, not all GUI applications are using that library. And I cannot add my own mnemonics without re-compiling the Gtk. + +Hopefully, there is support for character composition at X11-level too. Formerly, through the venerable [X Input Method (XIM)][24]. + +This will work at lower-level than Gtk-based character composition. But will allow a great amount of flexibility. And will work with many X11 applications. + +For example, let’s imagine I just want to add the --> composition to enter the → character (U+2192 RIGHTWARDS ARROW), I would create a `~/.XCompose` file containing those lines: + +``` +cat > ~/.XCompose << EOT +# Load default compose table for the current local +include "%L" + +# Custom definitions + : U2192 # RIGHTWARDS ARROW +EOT +``` + +Then you can test by starting a new X11 application, forcing libraries to use XIM as input method: + +``` +GTK_IM_MODULE="xim" QT_IM_MODULE="xim" xterm +``` + +The new compose sequence should be available in the application you launched. I encourage you to learn more about the compose file format by typing `man 5 compose`. + +To make XIM the default input method for all your applications, just add to your `~/.profile` file the following two lines. that change will be effective the next time you’ll open a session on your computer: + +``` +export GTK_IM_MODULE="xim" +export QT_IM_MODULE="xim" +``` + +It’s pretty cool, isn’t it? That way you can add all the compose sequences you might want. And there are already a couple of funny ones in the default XIM settings. Try for example to press composeLLAP. + +Well, I must mention two drawbacks though. XIM is relatively old and is probably only suitable for those of us who don’t regularly need multi-bytes input methods. Second, when using XIM as your input method, you no longer can enter Unicode characters by their code point using the Ctrl+Shift+u sequence. What? Wait a minute? I didn’t talk about that yet? So let’s do it now: + +### What if there is no compose key sequence for the character I need? + +The compose key is a nice tool to type some characters not available on the keyboard. But the default set of combinations is limited, and switching to XIM and defining a new compose sequence for a character you will need only once in a lifetime can be cumbersome. + +Does that prevent you to mix Japanese, Latin and Cyrillic characters in the same text? Certainly not, thanks to Unicode. For example, the name あゆみ is made of: + +- the [HIRAGANA LETTER A (U+3042)][25] +- the [HIRAGANA LETTER YU (U+3086)][26] +- and the [HIRAGANA LETTER MI (U+307F)][27] + +I mentioned above the official Unicode character names, following the convention to write them in all upper cases. After their name, you will find their Unicode code point, written between parenthesis, as a 16-bit hexadecimal number. Does that remind you something? + +Anyway, once you know the code point of a character, you can enter it using the following combination: + +- Ctrl+Shift+u, then XXXX (the _hexadecimal_ code point of the character you want) and finally Enter. + +As a shorthand, if you don’t release Ctrl+Shift while entering the code point, you won’t have to press Enter. + +Unfortunately, that feature is implemented at software library level rather than at X11 level. So the support may be variable among different applications. In LibreOffice, for example, you have to type the code point using the main keyboard. Whereas Gtk-based application will accept entry from the numeric keypad as well. + +Finally, when working at the console on my Debian system, there is a similar feature, but requiring instead to press Alt+XXXXX where XXXXX is the code point of the character you want, but written in _decimal_ this time. I wonder if this is Debian-specific or related to the fact I’m using the en_US.UTF-8 locale. If you have more information about that, I would be curious to read you in the comment section! + +| GUI | Console | Character | +| :- | :- | :- | +| Ctrl+Shift+u3042Enter | Alt+12354 | あ | +| Ctrl+Shift+u3086Enter | Alt+12422 | ゆ | +| Ctrl+Shift+u307FEnter | Alt+12415 | み | + +### Dead keys + +Last but not least, there is a simpler method to enter key combinations that do not rely (necessarily) on the compose key. + +Some keys on your keyboard were specifically designed to create a combination of characters. Those are called [dead keys][28]. Because when you press them once, nothing seems to happen. But they will silently modify the character produced by the next key you will press. This is a behavior inspired from mechanical typewriter: with them, pressing a dead key imprinted a character, but will not move the carriage. So the next keystroke will imprint another character at the same position. Visually resulting in a combination of the two pressed keys. + +We use that a lot in French. For example, to enter the letter “ë” I have to press the ¨ dead key followed by the e key. Similarly, Spanish people have the ~ dead key on their keyboard. And on the keyboard layout for Nordic languages, you can find the ° key. And I could continue that list for a very long time. + +![hungary dead keys][29] + +Obviously, not all dead keys are available on all keyboard. I fact, most dead keys are NOT available on your keyboard. For example, I assume very few of you— if any— have a dead key ­­­¯ to enter the macron (“flat accent”) used to write Tōkyō. + +For those dead keys that are not directly available on your keyboard, you need to resort to other solutions. The good news is we’ve already used those techniques. But this time we will use them to emulate dead keys. Not “ordinary” keys. + +So, a first option could be to generate the macron dead key by using Compose- (the hyphen-minus key available on your keyboard). Nothing appears. But if after that you press the o key it will finally produce “ō”. + +The list of dead keys that Gtk can produce using the compose mode can be found [here][30]. + +A different solution would use the Unicode COMBINING MACRON (U+0304) character. Followed by the letter o. I will leave the details up to you. But if you’re curious, you may discover this leads to a very subtlely different result, rather than really producing a LATIN SMALL LETTER O WITH MACRON. And if I wrote the end of the previous sentence in all uppercase, this is a hint guiding you toward a method to enter ō with fewer keystrokes than by using a Unicode combining character… But I let that to your sagacity. + +### Your turn to practice! + +So, did you get it all? Does that work on your computer? It’s your turn to try that: using the clues given above, and a little bit of practice, now you can enter the text of the challenge given in the beginning of this article. Do it, then copy-paste your text in the comment section below as proof of your success. + +There is nothing to win, except maybe the satisfaction of impressing your peers! + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/unicode-linux/ + +作者:[Sylvain Leroux][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.yesik.it/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/wp-content/uploads/2017/10//text-challenge.png +[2]: https://en.wikipedia.org/wiki/ISO/IEC_8859-15 +[3]: https://itsfoss.com/wp-content/uploads/2017/10//ISO_8859-15.png +[4]: https://en.wikipedia.org/wiki/KOI8-R +[5]: https://en.wikipedia.org/wiki/Windows-1251 +[6]: https://itsfoss.com/wp-content/uploads/2017/10//Windows-1251.png +[7]: https://en.wikipedia.org/wiki/ASCII +[8]: https://itsfoss.com/wp-content/uploads/2017/10//windows-1251-to-iso8859-15-encoding-decoding-error-example.png +[9]: https://en.wikipedia.org/wiki/Email_client +[10]: https://en.wikipedia.org/wiki/Mojibake +[11]: https://itsfoss.com/wp-content/uploads/2017/10/Mojibake-french-example.png +[12]: https://en.wikipedia.org/wiki/Unicode +[13]: https://en.wikipedia.org/wiki/Code_point +[14]: https://itsfoss.com/wp-content/uploads/2017/10//unicode-utf-32-encoding-example.png +[15]: https://en.wikipedia.org/wiki/UTF-32 +[16]: https://en.wikipedia.org/wiki/UTF-16 +[17]: https://en.wikipedia.org/wiki/UTF-8 +[18]: https://itsfoss.com/wp-content/uploads/2017/10//unicode-utf-16-encoding-example.png +[19]: https://itsfoss.com/wp-content/uploads/2017/10//unicode-utf-8-encoding-example.png +[20]: https://en.wikipedia.org/wiki/Compose_key +[21]: https://itsfoss.com/wp-content/uploads/2022/12/compose_key_on_lk201_keyboard.jpg +[22]: https://en.wikipedia.org/wiki/Hyphen-minus +[23]: https://help.ubuntu.com/community/GtkComposeTable +[24]: https://en.wikipedia.org/wiki/X_Input_Method +[25]: http://www.fileformat.info/info/unicode/char/3042/index.htm +[26]: http://www.fileformat.info/info/unicode/char/3086/index.htm +[27]: http://www.fileformat.info/info/unicode/char/307F/index.htm +[28]: https://en.wikipedia.org/wiki/Dead_key +[29]: https://itsfoss.com/wp-content/uploads/2022/12/hungary_dead_keys.png +[30]: https://help.ubuntu.com/community/GtkDeadKeyTable diff --git a/sources/tech/20221213.4 ⭐️⭐️ Use Django to send emails with SMTP.md b/sources/tech/20221213.4 ⭐️⭐️ Use Django to send emails with SMTP.md new file mode 100644 index 0000000000..7e6ab1dc0a --- /dev/null +++ b/sources/tech/20221213.4 ⭐️⭐️ Use Django to send emails with SMTP.md @@ -0,0 +1,300 @@ +[#]: subject: "Use Django to send emails with SMTP" +[#]: via: "https://opensource.com/article/22/12/django-send-emails-smtp" +[#]: author: "Sofiia Tarhonska https://opensource.com/users/sofiiatarhonska" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Use Django to send emails with SMTP +====== + +Numerous professions utilize simple mail transfer protocol (SMTP) to deliver emails to their end users. SMTP also retrieves messages, though that has not been its primary use case. Open source frameworks like Django, a Python-based web framework, allows more control for sending emails using functions and expressions. + +This article shows how to configure an SMTP server and send emails in Django using SMTP. + +### Project setup and overview + +Before proceeding, this tutorial requires a code editor (such as [VS Code or Codium][1]) on your preferred device. + +Start by creating a new directory using the command in the terminal: + +``` +mkdir exampledirectory +``` + +Then change into the directory using the command: + +``` +cd exampledirectory +``` + +Within the newly created directory, create a [virtual environment][2] using the built-in venv module in the command terminal: + +``` +python -m venv +``` + +This command creates a virtual environment within the folder created earlier. To activate it, use the following command in the terminal: + +On Linux and Mac: + +``` +source .virtenv/bin/activate +``` + +On Windows: + +``` +\Scripts\activate +``` + +### Creating a Django project + +After activating the virtual environment, proceed to install the Django package from [pip][3]: + +``` +pip install django +``` + +Create a new Django project: + +``` +python -m django startproject NewEmailProject +``` + +This command creates a project with the name `NewEmailProject`. To run the project, head to the project directory (`NewEmailProject`) and run the server: + +``` +python manage.py runserver +``` + +Open the link for the developmental server in a browser. You see the Django homepage with release notes. + +### Configuration for sending emails + +Next, open the `settings.py` file (in the `NewEmailProject` folder) to customize configurations for sending emails using Django. + +Scroll to the end of the code and update the file with the following code: + +``` +EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' +EMAIL_HOST = 'smtp.yourserver.com' +EMAIL_USE_TLS = False +EMAIL_PORT = 465 +EMAIL_USE_SSL = True +EMAIL_HOST_USER = 'your@djangoapp.com' +EMAIL_HOST_PASSWORD = 'your password' +``` + +Change the value of the `EMAIL_HOST` depending on your email client. Here are the acceptable values for common email clients: + +- **Gmail:**`smtp.gmail.com` +- **Outlook:**`smtp-mail.outlook.com` +- **Yahoo:**`smtp.mail.yahoo.com` + +You can change the `EMAIL_PORT` or leave 465 as the default. + +You can use the secure socket layer (SSL) and transport socket layer (TSL) interchangeably as they specify connection security. + +To figure out other custom configurations for your email server, check out the full [Django Project documentation][4]. + +### SMTP email backend + +The `EMAIL_BACKEND` expression helps determine the most suitable backend when sending emails through the Django SMTP server. This variable points to `smtp.EmailBackend`, which receives all the parameters needed for sending emails. It tells Django to send the email to the recipient email using SMTP and not to the console. + +### Sending emails with SMTP + +When the environment is set up and `settings.py` is updated, you can send emails in Django. You can use an HTML form that sends a post request of the necessary information needed for sending an email. + +Create a Django application for sending emails: + +``` +python manage.py startapp mail +``` + +Next, open the `settings.py` file and add the Django application (mail) to the `INSTALLED_APPS` list: + +``` +INSTALLED_APPS = [ +"django.contrib.admin", +"django.contrib.auth", +"django.contrib.contenttypes", +"django.contrib.sessions", +"django.contrib.messages", +"django.contrib.staticfiles", +"mail"] +``` + +### Send mail function + +In the mail application's `views.py` file, start by importing the `EmailMessage` and `get_connection` from `django.core.mail`: + +``` +from django.core.mail import EmailMessage, get_connection +``` + +The `EmailMessage` class is responsible for creating the email message itself. The `get_connection()` function returns an instance of the email backend specified in `EMAIL_BACKEND`. + +Now create a function that accepts a `POST` request, which contains form data submitted from the client side. Followed by the `get_connection()` functions parameters containing the email configurations created in the project `settings.py` file. + +Next, import the settings: + +``` +from django.conf import settings +``` + +This import allows access to the email configurations created in the `settings.py`. Next, create the variables: + +``` +subject, recipient_list, +``` + +Then you can `message`, and store the corresponding attributes used in the HTML form. The `email_from` variable contains the sender email, which is obtained from `EMAIL_HOST_USER` in the `settings.py` file. + +After the variables are processed, the `EmailMessage` class sends an email using the `sends()` method, and then closes the connection. The `send_email()` function renders the `home.html` file containing the email form. + +You can create a templates folder within your mail application and store the HTML files within that folder: + +``` +from django.core.mail import EmailMessage, get_connectionfrom django.conf import settingsdef send_email(request):   +   if request.method == "POST": +       with get_connection(   +           host=settings.EMAIL_HOST, +     port=settings.EMAIL_PORT,   +     username=settings.EMAIL_HOST_USER, +     password=settings.EMAIL_HOST_PASSWORD, +     use_tls=settings.EMAIL_USE_TLS   +       ) as connection:   +           subject = request.POST.get("subject")   +           email_from = settings.EMAIL_HOST_USER   +           recipient_list = [request.POST.get("email"), ]   +           message = request.POST.get("message")   +           EmailMessage(subject, message, email_from, recipient_list, connection=connection).send()   +  +   return render(request, 'home.html') +``` + +This is a bootstrap form for generating a message: + +``` +
+ {% csrf_token %} + 
+      +      +   
+   
+      +      +   
+   
+      +      +   
+   
+``` + +This form sends a post request to the `send_email()` function. This processes the form data and sends the email to the recipients. + +Now open the `urls.py` file in the `NewEmailProject` folder to create the homepage URL. Update the `urlpattern` list by adding the code `path("", send_email)` . + +### Sending email to multiple recipients + +To specify multiple recipients when sending the same email, create a new function called `send_emails` within the `views.py` file and modify the send function code: + +``` +def send_emails(request):   +    if request.method == "POST": +        with get_connection(   +              host=settings.EMAIL_HOST, +        port=settings.EMAIL_PORT,   +       username=settings.EMAIL_HOST_USER,   +       password=settings.EMAIL_HOST_PASSWORD,   +        use_tls=settings.EMAIL_USE_TLS +        ) as connection:   +            recipient_list = request.POST.get("email").split()   +            subject = request.POST.get("subject")   +            email_from = settings.EMAIL_HOST_USER   +            message = request.POST.get("message")   +            print(type(recipient_list)) +            EmailMessage(subject, message, email_from, recipient_list, connection=connection).send()   +  +    return render(request, 'send_emails.html') +``` + +For the `recipient_list` variable, I'm using the Python `split()` method to convert the recipients email string to list so that I can email all of them. + +Next, create another HTML file called `send_emails.html` in the templates folder and use the same form code for the `home.html` file within it. + +To specify multiple email recipients, use a space between each email address: + +``` +first@gmail.com second@gmail.com third@gmail.com +``` + +You should also update the `urlpattern` list by adding the code: + +``` +path("send-emails/", send_email) +``` + +### Sending HTML emails + +You can also send HTML emails with Django using a slightly modified version of the `send_email` function: + +``` +html_message = '''

this is an automated message

''' +msg = EmailMessage(subject, html_message, email_from,recipient_list, connection=connection) +msg.content_subtype = "html" +msg.send() +``` + +### Sending emails with attachment + +To include attachment to mails, create a variable and put it in the file path in a string like this: + +``` +attachment = "mail/templates/example.png" +``` + +Then, move the `EmailMessage` function to a variable and call the `attach_file` method followed by the `send` method: + +``` +msg = EmailMessage(subject, message, email_from, recipient_list, connection=connection) +msg.attach_file(attachment) +msg.send() +``` + +### Django email libraries + +This guide on sending emails in Django would not be complete if I didn't mention the email libraries that are available to users. Here are some noteworthy email libraries. + +- **Django mailer** is a Django app for queuing as it saves emails in a database and sends the mail out at a designated time. +- **Django templated email** aims to send templated emails. It offers features like configurable template naming and location, template inheritance, and adding recipients to the CC and BCC lists. +- **Anymail** allows the use of an email service provider (ESP). By using `django.core.mail`, it provides a sustained API that avoids tying your code to a single ESP. + +### Emailing with Django + +Sending emails in Django can sound daunting, but it's as simple as creating a virtual environment. You can add Django to the environment and create an email backend. Finally, you can set up an HTML template. Give it a try. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/django-send-emails-smtp + +作者:[Sofiia Tarhonska][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/sofiiatarhonska +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/20/6/open-source-alternatives-vs-code#vscodium +[2]: https://opensource.com/article/21/2/python-virtualenvwrapper +[3]: https://www.redhat.com/sysadmin/install-python-pip-linux +[4]: https://docs.djangoproject.com/en/3.2/ref/settings/#email-backend + diff --git a/sources/tech/20221213.5 ⭐️⭐️ Drupal 10 is worth a fresh look.md b/sources/tech/20221213.5 ⭐️⭐️ Drupal 10 is worth a fresh look.md new file mode 100644 index 0000000000..408b105756 --- /dev/null +++ b/sources/tech/20221213.5 ⭐️⭐️ Drupal 10 is worth a fresh look.md @@ -0,0 +1,79 @@ +[#]: subject: "Drupal 10 is worth a fresh look" +[#]: via: "https://opensource.com/article/22/12/drupal-10-fresh-look" +[#]: author: "Martin Anderson-Clutz https://opensource.com/users/mandclu" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Drupal 10 is worth a fresh look +====== + +The popular Drupal open source content management system (CMS) reaches a significant milestone when version 10 is released on December 14. Personally, I think Drupal X sounds way cooler, but so far, my calls to name it that haven't gotten much traction. I enlisted the help of my friend Aaron Judd of [Northern Commerce][1] to give us a sense of how cool Drupal X could look: + +![New Drupal 10 racing 10 logo][2] + +### What's a Drupal, anyway? + +Drupal is an open source CMS and development framework. While other CMS options focus on simple long-form content (think blogs) or entirely free-form content (like in Wix or Squarespace), Drupal has made a name for itself in handling more complex content architectures, in multiple languages, with robust content governance. Drupal sites (like this site, Opensource.com!) benefit from a strong role-based access control (RBAC) system, unlimited custom roles and workflows, and a powerful and extensible media library. + +Here's a rundown for anyone who hasn't kept tabs on what's coming in the newest major version. + +### A fresh face + +Most Drupal sites use custom themes to give them a unique look and feel. Still, the initial experience you have when installing a CMS matters. In Drupal, themes define the look and feel of a site, and you can use different themes for public and administrative experiences. Until recently, the Bartik and Seven themes had been the default face of Drupal for more than a decade. To put that in context, when Bartik was released, the most popular browser in the world was Internet Explorer 8. A lot has changed since then, particularly around best practices for building websites. + +In fact, a significant change in Drupal 10 will be the removal of support for Internet Explorer (IE), which is itself no longer supported by Microsoft and hasn't seen major updates since 2013. That may not sound like an improvement, but continued support for IE kept the community from adopting modern markup and styling. For example, thanks to being unencumbered by support for legacy browsers, Drupal 10 includes a new responsive grid layout that's so innovative it got a writeup in [CSS Tricks][3]. + +![Responsive grid configuration][4] + +The new faces of Drupal are two brand new themes: Olivero for visitors and Claro for admins. In addition to being fresh and modern designs, both were developed with accessibility as a top priority. + +### Improvements under the hood + +More than a decade ago, the Drupal community decided to "Get Off the Drupal Island." That meant adopting solutions shared across popular projects and frameworks instead of ones developed and maintained exclusively by the Drupal community. Today Drupal leverages a variety of projects and libraries whose names will be familiar to open source developers who have never touched Drupal: Symfony, Composer, CKEditor, Twig, Nightwatch, and more. + +That has brought a variety of powerful capabilities to Drupal and allowed it to contribute back to those solutions, benefitting a broader set of developers. It has also become a determining factor for the cadence of Drupal's major version releases. + +To illustrate, consider that Drupal 7 was released in early 2011. Drupal 8 was released almost five years later, towards the end of 2015. Drupal 9 was released in June of 2020, with a key motivator being the move to supported versions of underlying dependencies and removing deprecated code. And now, roughly two and half years later, we're already planning to release Drupal 10. This new major version will leverage updated versions of PHP, Symfony, and Composer, among others. + +### An all-new editor + +An upgrade of particular note is the move to CKEditor 5. Although notionally an incremental update, under the hood CKEditor 5 was completely rewritten, much the same as the transition from Drupal 7 to 8. In addition to a sleeker interface, CKEditor 5 has the potential for exciting new capabilities, such as real-time collaboration. Drupal's CKEditor integration for version 5 has already been augmented with a number of UI enhancements. For example, media placed within content can be configured using an overlaid toolbar ribbon instead of needing to launch a modal dialog to access these settings. Also, the styles dropdown now includes a preview of each type available. + +![Real-time collaboration][5] + +### A look ahead + +Earlier in 2022, Drupal creator and project lead Dries Buytaert announced a focus on "ambitious site builders." This means that while the community will continue to work on making the developer experience better in general, moving forward there is a particular focus on making it easier to create engaging experiences in Drupal without having to write code or use command-line tools. Three strategic initiatives embody this new focus: Automatic Updates, the Project Browser, and Recipes. + +**Automatic Updates** will reduce the total cost of ownership for Drupal sites and help them be more secure by ensuring they always have the latest core security patches. This will be a major benefit for site owners and Drupal development teams everywhere. However, judging by personal experience, Wednesday night pizza sales may take a hit (traditionally, the Drupal security team releases updates on the third Wednesday of the month). There is now a stable release of Automatic Updates as a contrib module. Work has begun to move this into Drupal core, so all Drupal sites will eventually be able to leverage this capability. + +The **[Project Browser][6]** makes Drupal sites easier to build, maintain, and evolve by allowing site builders to search and browse through a subset of Drupal's vast catalog of available modules, prefiltered to the site's Drupal version, for security, stability, and more. A site builder can select, download, and install a module without leaving the site's web interface. In fact, there's an "app store" like interface meant to promote the most popular modules available that are compatible with the current site's version of Drupal. While other CMS options have had similar offerings, this advancement means you don't need to sacrifice ease-of-use to take advantage of the power of Drupal. Also, all of the thousands of modules listed are 100% free. + +For many years Drupal has had a concept of distributions. These are opinionated versions of Drupal designed to meet specific use cases such as media publishing, fundraising, intranet portals, and more. While distributions have proven an excellent way to accelerate initial development, in practice, they have been known to require significant work to maintain and create extra work for site owners during maintenance. The **Recipes** initiative aims to make more granular, composable functionality available when building a site. Want to add a staff directory, events calendar, or locations map to your site? In the future, this will be as easy as installing a recipe and then customizing it to meet your site's specific needs. + +### It's an exciting time to try Drupal + +Drupal 10 is the culmination of work contributed by thousands of dedicated and talented community members worldwide. If you're not already using Drupal, we hope you'll try it out for your next project. There's a common saying among Drupalists: "Come for the code, stay for the community." + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/drupal-10-fresh-look + +作者:[Martin Anderson-Clutz][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/mandclu +[b]: https://github.com/lkxed +[1]: https://www.northern.co/ +[2]: https://opensource.com/sites/default/files/2022-12/DrupalX-RacerSticker-DrupalBlue-300ppi.png +[3]: https://css-tricks.com/an-auto-filling-css-grid-with-max-columns +[4]: https://opensource.com/sites/default/files/2022-11/responsive-grid-config.png +[5]: https://opensource.com/sites/default/files/2022-11/realtime-collaboration_0.gif +[6]: https://www.drupal.org/project/project_browser diff --git a/sources/tech/20221214.0 ⭐️⭐️ Experience Linux desktop nostalgia with Rox.md b/sources/tech/20221214.0 ⭐️⭐️ Experience Linux desktop nostalgia with Rox.md new file mode 100644 index 0000000000..301f8b485e --- /dev/null +++ b/sources/tech/20221214.0 ⭐️⭐️ Experience Linux desktop nostalgia with Rox.md @@ -0,0 +1,104 @@ +[#]: subject: "Experience Linux desktop nostalgia with Rox" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-rox" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Experience Linux desktop nostalgia with Rox +====== + +Rox-Filer is an open source file manager for Linux, once intended for the defunct Rox desktop but now a streamlined application for any window manager or desktop. There hasn't been much activity on the Rox project since 2014, and even then it is mostly in maintenance mode. And that's part of Rox-Filer's charm. In a way, Rox-Filer is a snapshot of an old desktop style that was progressive for its time but has given way to a more or less standardized, or at least conventional, interface. + +### Install Rox-Filer + +On Linux, your distribution's software repository may have Rox available for install. For instance, Debian packages it: + +``` +$ sudo apt install rox-filer +``` + +If your Linux distribution doesn't package Rox-Filer but you want to try it out, you can [compile from source][1] by downloading the [source code][2], installing its build dependencies, and then compiling: + +``` +$ sudo dnf install gtk2-devel libSM-devel \ +  shared-mime-info glade-libs xterm +$ wget https://codeload.github.com/rox-desktop/rox-filer/zip/refs/heads/master +$ unzip rox*zip +$ cd rox-filer-master +$ ./ROX-Filer/AppRun +``` + +### Configuring Rox + +The Rox file manager is based on the look and feel of RISC OS, an operating system developed by Acorn in Cambridge England (the same group responsible for the popular Arm microprocessor). Today, there's an [open source RISC OS][3] you can install on a Raspberry Pi, but for now, Rox is close enough. + +Rox has a simple layout. It has no menu bar, but there's a toolbar across the top, and the file panel is at the bottom. + +![Image of the Rox file manager.][4] + +As with the KDE Plasma Desktop, the default action of a single click in Rox is to open an item, whether it's a folder or a file. Unfortunately, no version of Rox, either packaged or compiled directly from the source, seems to be completely integrated with the mimetype definitions of the modern Linux desktop. For instance, Rox on CentOS renders an error when I click on even a basic text file, while the packaged version of Rox on Debian opens a plain text file but not a JPEG or archive file. You can fix this by setting a **Run Action** in the right-click context menu. + +![​Setting a run action in the Rox file manager.][5] + +Setting a run action can have broad definitions, so you don't have to set a separate run action for JPEG, PNG, WEBP, and all other image types, instead set the same run command for all mimetypes starting with `image`. + +Once you set that, you're ready to manage files with Rox. + +### Navigation + +You can navigate through your file system using the arrow icon in the top toolbar. The **Up** arrow takes you to the parent directory of your current location (in other words, the folder your current folder is in). To descend into a folder, click on it. + +### Refreshing the view + +Rox may not redraw the screen for every action, so sometimes you may need to prompt it to refresh. Click the **Circle** arrow in the Rox toolbar to refresh your current location's contents. + +### Copy or move a file + +There are two ways to copy or move a file in Rox. First, you can launch a second Rox window and drag and drop files from one window to the other. When you do, you're prompted to copy, move, or link the item you've dropped. + +Alternatively, you can right-click an item and open the **File** submenu from the context menu. In the **File** submenu, choose **Copy** and then enter the destination path for the item you want to move or copy. After you've confirmed that the file has successfully been copied to the target location, you can optionally select the item again, choosing **Delete** from the **File** menu. + +### Options + +You can customize some aspects of Rox by selecting **Options** from the right-click menu. This brings up a Rox configuration screen that's admittedly only partially relevant to Rox. The Rox options assume you're running a window manager, like [Windowmaker][6] which provides a traditional dock (or "pinboard" in Rox terminology). I wasn't able to get the pinboard options to work on [Fluxbox][7], my preferred window manager, or Windowmaker. In both cases, the window manager handled iconified windows, and I wasn't able to configure Rox to override the control. It's possible that I wasn't drastic enough in some of my configurations, but considering that Linux window managers are very capable of managing iconified windows, the pinboard mechanism of Rox isn't a vital feature (and probably not as flexible as the window manager's options). + +The other options, however, still work as expected. For instance, Rox by default resizes its window size to fit the contents of a folder. When you change from a directory containing twelve items to a directory containing just three, Rox shrinks its footprint. I find this jarring, so I chose the **Never automatically resize** option, forcing Rox to stay whatever size I set. + +### Window commands + +Some of my favorite features are four menu items hidden away at the bottom of the **Window** submenu in the right-click context menu. They are: + +- **Enter path**: Enter an arbitrary path and change directory to it. +- **Shell command**: Enter an arbitrary shell command and execute it. +- **Terminal here**: Open a terminal at your current location. +- **Switch to terminal**: Open a terminal at your current location, and close the Rox. + +I love options that allow for quick navigation or quick commands, so it's nice to have these close at hand. + +### Oldies + +Rox is a "blast from the past," whether or not you've ever used RISC OS or something like it. Rox represents a style of digital file management and even desktop configuration that just doesn't quite exist anymore. I've run Fluxbox, on and off again, at work and at home for the past decade, and I love manually configuring menus and configuration files. However, most of the Linux desktop has moved on from the conventions Rox relies upon. It's not impossible to make Rox fully functional, but it would take a lot of work, and most of what you'd be configuring are already provided by modern window managers and desktops. Even so, Rox is fun to use and experience. It's a great demonstration of how flexible a traditional Linux desktop setup was (and still can be, if you use only a window manager), and much of its charm is in its simplicity. I can't imagine a file manager today not having a dedicated move function, but Rox dares to force you to copy and delete instead. It's a different kind of file manager, and it might not be the one you use all day every day, but it's something you have to try if you miss, or literally missed, the "old days" of the Linux (or RISC OS) desktop. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-rox + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/21/11/compiling-code +[2]: https://sourceforge.net/projects/rox/files/rox/ +[3]: https://www.riscosopen.org/content/downloads +[4]: https://opensource.com/sites/default/files/2022-10/rox-filemanager.png +[5]: https://opensource.com/sites/default/files/2022-10/rox-menu-run.png +[6]: https://opensource.com/article/19/12/linux-window-maker-desktop +[7]: https://opensource.com/article/19/12/fluxbox-linux-desktop diff --git a/sources/tech/20221214.2 ⭐️⭐️ Best Screen Recorders for Wayland in Linux [Compared & Tested].md b/sources/tech/20221214.2 ⭐️⭐️ Best Screen Recorders for Wayland in Linux [Compared & Tested].md new file mode 100644 index 0000000000..a67e813001 --- /dev/null +++ b/sources/tech/20221214.2 ⭐️⭐️ Best Screen Recorders for Wayland in Linux [Compared & Tested].md @@ -0,0 +1,182 @@ +[#]: subject: "Best Screen Recorders for Wayland in Linux [Compared & Tested]" +[#]: via: "https://www.debugpoint.com/screen-recorders-linux-wayland/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Best Screen Recorders for Wayland in Linux [Compared & Tested] +====== + +**Here’s a list of screen recorders which work in Wayland currently in most modern Linux distributions.** + +![][1] + +Modern Wayland protocol is used by default in most frontrunner Linux distributions, such as Ubuntu and Fedora. However, this X.Org successor comes with work for the app developers to re-platform their app for Wayland because Wayland is more secure and follows modern standards. + +Linux legacy applications, those written with X.Org in mind, don’t work well in most cases unless it is modified. + +Screen recorder apps fall into that category. There are many popular screen recorders which were developed for X.Org – doesn’t work anymore in Wayland. + +However, few of them work. In this list, I will walk you through a few that I tested in the Wayland session. And they work well. + +### Best screen recorder apps for Wayland in Linux distros + +#### 1. Kooha + +The first on this list is Kooha, written in GTK and supports X11 and Wayland. It’s a fast and simple screen recorder for the GNOME desktop. This application is one of the best GNOME apps that provides hassle-free recording experiences. This utility supports hardware acceleration, a timer, multiple sources as input and many advanced features. Here’s a summary: + +- Option to select monitor for multiple displays or any window +- Hardware accelerated encoding (disabled by default; enable it via settings) +- Option to record the area of a screen +- Record mic and computer sound together +- Delay timer for records +- Option to choose the frame rate +- Support for WebM, mp4, gif, Mkv file types + +![Kooha - Best Screen Recoder for GNOME][2] + +![Kooha Settings][3] + +Installing Kooha is easy using Flatpak. [Set up your system for Flatpak & Flathub][4] and run the following command to install it. + +``` +flatpak install io.github.seadve.Kooha +``` + +We tested it in the latest Ubuntu 22.10 and Fedora 37 with Wayland session, it works flawlessly. + +**More details about Kooha** + +- [Home page][5] +- [Source code][6] + +#### 2. GNOME screen recorder + +The second in the list is GNOME Shell’s built-in screen recorder. It’s part of the GNOME’s new screenshot utility which you can launch by searching “screenshot” in the application menu. + +GNOME Screen recorder provides you option to record the entire screen or a rectangular portion. In addition, you have the option to record the cursor as well. + +However it only supports recording to webM format. And you can’t do a delayed start of your recording. + +You don’t need to install anything extra to use this. Since it comes by default with GNOME desktop. + +Use the keyboard shortcut `CTRL+SHIFT+ALT+R` to launch it. And select your option, then hit the record button. + +The recordings saved at ~/home/Videos/Screencasts. + +![GNOME Screen recorder][7] + +#### 3. OBS Studio + +The popular free and open-source streaming application OBS Studio recently started supporting Wayland. Although it is primarily used for live streaming, but it’s screen recording feature actually works in Wayland and you can use it. + +Since its a professional grade software, you can take advantage of it’s recording feature. In addition, you can also record the sound from the mic of your system while recording the screen. + +Installing OBS Studio is easy with Flatpak. [Set up your system for Flathub][4] and install it using the following command. + +``` +flatpak install com.obsproject.Studio +``` + +Note: OBS Studio need FFmpeg to run. We have a guide [here][8], if you want to install FFmpeg. + +After you launch OBS Studio, click on + sign under Sources to add source. Then select “Screen capture..”. And then click ok. + +![Screen capture option][9] + +![recording in OBS Studio in Wayland][10] + +After you stop the recording, it is saved at your ~/home directory. + +**More details about OBS Studio** + +- [Home page][11] +- [Source code][12] + +#### 4. vokoscreenNG + +The vokoscreenNG is a little different screen recording app which is totally underrated. It’s an old application and supports window capture, rectangular caption. In addition, it also support audio capture alongside screen, system tray control, magnifying glass, countdown, timer and many cool features. + +Recently, an experimental Wayland support introduced which you can try out. It works fairly well. Currently it supports webm, m4, mkv, mov and avi formats for Wayland. However, audio recording is not yet available for Wayland sessions. + +You can download the pre-compiled executable for Linux distros which require no installation from the below link. And run. + +[Download][13] + +![vokoscreenNG][14] + +**More details about vokoscreenNG** + +- [Home page][15] + +#### 5. Wayfarer + +The final screen recorder in this list is Wayfarer, based on GTK4. It currently supports all the modern protocols such as Wayland, Pipewire with wireplumber. It’s simple user interface supports screen recording with audio capture. You can also select a portion of your desktop or the entire screen for recording. + +Furthermore, you can select the frame rate, select mouse capture and have the ability to delay the recording. Currently it supports webm, mp4 and mkv formats. + +![Wayfarer screen recorder for Linux][16] + +However, it is currently available in Arch User repository (AUR) for Arch Linux. You can setup any AUR helper such as Yay and install it using the following command. + +``` +yay -S wayfarer-git +``` + +**More details about Wayfarer** + +[Home page & source code][17] + +### Other excellent screen recorders which are currently not working with Wayland + +Other than the above list, there are some excellent screen recorders available for X.Org which is currently broken in Wayland. As per my test in Ubuntu 22.10 and Fedora 37 wayland session, none of these works. You can only see a black screen in the recording file. I hope they get fixed in coming days and become compatible with Wayland. + +- [Peek][18] (may work with XWayland backend) +- [Simple screen recorder][19] +- [Blue Recorder][20] (supports Wayland but is currently broken) + +### Wrapping Up + +From my personal experience, Wayland is faster and better. Since many modern distros are moving towards Wayland, you must change your workflow with replacement apps. I hope this list of screen recorders in Wayland helps you pick the one that suits you best. + +Do let me know if you know of any other apps of a similar category which work with Wayland. + +[Next:Top 10 32-Bit Linux Distributions in 2022 [Compared]][21] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/screen-recorders-linux-wayland/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/12/wayrec.jpg +[2]: https://www.debugpoint.com/wp-content/uploads/2021/12/Kooha-Best-Screen-Recoder-for-GNOME.jpg +[3]: https://www.debugpoint.com/wp-content/uploads/2022/12/Kooha-Settings.jpg +[4]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[5]: https://apps.gnome.org/app/io.github.seadve.Kooha/ +[6]: https://github.com/SeaDve/Kooha +[7]: https://www.debugpoint.com/wp-content/uploads/2022/12/GNOME-Screen-recorder.jpg +[8]: https://www.debugpoint.com/install-ffmpeg-ubuntu/ +[9]: https://www.debugpoint.com/wp-content/uploads/2022/12/Screen-capture-option.jpg +[10]: https://www.debugpoint.com/wp-content/uploads/2022/12/recording-in-OBS-Studio-in-Wayland.jpg +[11]: https://obsproject.com/ +[12]: https://github.com/obsproject/obs-studio +[13]: https://linuxecke.volkoh.de/vokoscreen/vokoscreen-download.html +[14]: https://www.debugpoint.com/wp-content/uploads/2022/12/vokoscreenNG.jpg +[15]: https://linuxecke.volkoh.de/vokoscreen +[16]: https://www.debugpoint.com/wp-content/uploads/2022/12/Wayfarer-screen-recorder-for-Linux.jpg +[17]: https://github.com/stronnag/wayfarer +[18]: https://github.com/phw/peek +[19]: https://www.maartenbaert.be/simplescreenrecorder/ +[20]: https://github.com/xlmnxp/blue-recorder +[21]: https://www.debugpoint.com/32-bit-linux-distributions/ diff --git a/sources/tech/20221215.0 ⭐️⭐️ How to Switch from Debian Stable to Testing.md b/sources/tech/20221215.0 ⭐️⭐️ How to Switch from Debian Stable to Testing.md new file mode 100644 index 0000000000..3f0d190572 --- /dev/null +++ b/sources/tech/20221215.0 ⭐️⭐️ How to Switch from Debian Stable to Testing.md @@ -0,0 +1,159 @@ +[#]: subject: "How to Switch from Debian Stable to Testing" +[#]: via: "https://itsfoss.com/switch-debian-stable-testing/" +[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Switch from Debian Stable to Testing +====== + +If you are looking for the most stable Linux distribution, sure, Debian is the right choice. + +Especially if you are planning to use it on servers. + +But, on the desktop side, things are a bit different. I mean, you are given packages that are at least a year old and support for new-age hardware is even worse. + +So what do you do in those cases, Well, you can use Debian testing! + +But before jumping to the explanation part, let’s briefly understand Debian testing. + +### What is Debian Testing? + +Debian offers you 3 variants of Debian: + +- Debian stable (what you get by default from their homepage). +- Debian testing (has **newer packages** and breaks less often than Debian unstable). +- Debian unstable (has the most recent packages and is **considered the most fragile of all**). + +So Debian testing can be considered a sweet spot between stability and fresh packages. + +I’ve been playing around with Debian testing for some time and haven’t faced any issues. + +In fact, many Debian users prefer the testing variant over the stable version. Despite the name testing, it is pretty usable. + +But still, **I would recommend you to experiment with this on VM,** try using it with your primary tools and if things go well, you can apply those changes in the main system. + +### Switch from Debian stable to Debian testing + +**_Warning: You can not downgrade from Debian testing to Debian stable, as installer scripts and installation tools are only designed to replace the older version with the new one._** + +Also, I would recommend [using timeshift to create a backup][1] before applying the shown steps on your main machine. + +First, update the existing packages using the given command: + +``` +sudo apt update && sudo apt upgrade -y +``` + +Next, make a copy of original `sources.list` file: + +``` +sudo cp /etc/apt/sources.list sources.list.backup +``` + +Now, let’s start with the first step. + +#### Step 1: Edit sources.list file + +There are two ways of editing `sources.list` file. Either you can manually alter the current release name with `testing` or you can [use the sed command][2] to get your job done. + +And I’m going with a 2nd one to make the whole process easier. You just have to use the given command, and it will replace `bullseye` with `testing` for you: + +``` +sudo sed -i 's/bullseye/testing/g' /etc/apt/sources.list +``` + +Now, open your terminal and use the given command to open `sources.list` files: + +``` +sudo nano /etc/apt/sources.list +``` + +And comment out the lines having `security.debian.org` and anything that ends with `-updates` as shown below: + +![comment out security sources][3] + +If you are using nano as I do, you can press `Alt + /` to jump to the end of the line. And then you have to add the following line: + +``` +deb http://security.debian.org testing-security main +``` + +![2. add line to keep track of testing in debian][4] + +And [save the changes and exit from the nano][5] text editor. + +#### Step 2: Update the Repository and install new packages + +Now, update the repository index, and it will show you a massive update pending: + +``` +sudo apt update +``` + +![update repository in linux][6] + +Now, you can use the given command, and it will get you the most recent packages: + +``` +sudo apt upgrade +``` + +Sit back and relax as it is going to take a while. + +Once done, it will present you with the list of changes made as you switched from Debian stable to testing: + +![packages that are updated when switched to debian testing][7] + +You can read if you want or you can **just press q** to proceed further. + +Now, it will show you the message that some of the libraries installed on your system needs to restart. Press the **TAB** key, and it will select the **OK** option, and then press **Enter:** + +![libraries needs to be restarted after update][8] + +Next, it will ask you whether you want to restart services during the package upgrade. Here you have a choice. As I’m doing this for desktop usage only, I will go with `YES`: + +![restart services during package upgrades without asking?][9] + +Once done, you can reboot your system and then use the following command to have full effect from the changes you’ve just made: + +``` +sudo apt full-upgrade +``` + +Now, reboot your system, and you’ll have the most recent packages. Such as **I was running GNOME 43** when I got into the system: + +![running gnome 43 in debian][10] + +### Wrapping Up + +In this tutorial, I explained how you could switch from Debian stable to Debian testing. I hope this will be helpful to you. + +And if you face any issues or have any queries, let me know in the comments. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/switch-debian-stable-testing/ + +作者:[Sagar Sharma][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/sagar/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/backup-restore-linux-timeshift/ +[2]: https://linuxhandbook.com/sed-command-basics/ +[3]: https://itsfoss.com/wp-content/uploads/2022/11/comment-out-security-sources.gif +[4]: https://itsfoss.com/wp-content/uploads/2022/11/2.-add-line-to-keep-track-of-testing-in-debian.png +[5]: https://linuxhandbook.com/nano-save-exit/ +[6]: https://itsfoss.com/wp-content/uploads/2022/11/update-repository-in-linux.png +[7]: https://itsfoss.com/wp-content/uploads/2022/11/packages-that-are-updated-when-switched-to-debian-testing.png +[8]: https://itsfoss.com/wp-content/uploads/2022/11/libraries-needs-to-be-restarted-after-update.png +[9]: https://itsfoss.com/wp-content/uploads/2022/11/restart-services-during-package-upgrades-without-asking.png +[10]: https://itsfoss.com/wp-content/uploads/2022/11/running-gnome-43-in-debian.png diff --git a/sources/tech/20221215.1 ⭐️⭐️ Why Drupal is the future of content strategy.md b/sources/tech/20221215.1 ⭐️⭐️ Why Drupal is the future of content strategy.md new file mode 100644 index 0000000000..572d40c963 --- /dev/null +++ b/sources/tech/20221215.1 ⭐️⭐️ Why Drupal is the future of content strategy.md @@ -0,0 +1,90 @@ +[#]: subject: "Why Drupal is the future of content strategy" +[#]: via: "https://opensource.com/article/22/12/drupal-content-strategy" +[#]: author: "Suzanne Dergacheva https://opensource.com/users/pixelite" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Why Drupal is the future of content strategy +====== + +As a long-time advocate for open source and a contributor to Drupal, I spend a lot of time thinking about how organizations can leverage the platform. I've been thinking about Drupal's position in the larger digital ecosystem and how it compares to the other options on the market. And how Drupal can lean more on its strengths when planning out the strategy for a new project. + +### How Drupal fits into the digital landscape + +In 2022, putting a site online can be as fast as the time it takes to make a coffee. This is made possible because websites have many similar features and there's usually no need to build one from scratch. When I started my career, frameworks like Ruby on Rails were appealing because of their flexibility. But I quickly learned that the lack of standard solutions for common things like multilingual content, media management, and workflows, meant that each project required a huge investment in custom development. + +On the other hand, web builders that have emerged over the last ten years, like Wix and Squarespace offer the dream of "drag-and-drop" website construction and customizable templates. But in reality, their flexibility is very surface-level. They don't offer enough flexibility to build a solid content model, create an experience, or provide the level of content compliance that large organizations need. + +This is where Drupal stands out, providing both powerful functionality out-of-the-box, and the tools to build out custom functionality on top of that content. + +### Drupal, the content management system + +When I started using Drupal 15 years ago, it was described as a content management system. And it is, as it gives content editors the power to log in and manage content, rather than relying on a webmaster or a web developer to do it. + +But there was also the promise that site builders could update not just the content, but the content model. Site builders could extend Drupal using configuration instead of writing code. This set it apart from the frameworks that were out at the time. From years of teaching people Drupal, I can tell you that there's a certain amount of joy and empowerment that people get when they realize how much they can do through the Drupal admin UI. + +At its core, this is still Drupal's strength. You can control not just the content, but how content is organized. The fact that taxonomy and localization are baked into Drupal's content model, gives a huge advantage over other systems that have a more limited concept of content. + +### Drupal, the platform + +Shortly after adopting Drupal as our agency's technology of choice, I started calling it a platform. As an ambitious 20-something, I was keen to build more than nice-looking content-rich websites. The ambition was to create more powerful tools to organize the flow of information. This includes integrating Drupal with other systems to build functionality and workflows around your content. You can also create content synchronizations between a CRM and Drupal. Finally, you can search interfaces that allow you to search diverse content sources and filter content in new ways. + +The fact that Drupal is so adaptable to these architectures distinguishes it immediately from other CMSs. When talking to large organizations, teams of developers or IT leaders see the benefit of using a technology that is so flexible and adaptable to functional needs. + +### Drupal, the digital experience platform + +While these attributes are still very compelling, Drupal is now referred to as a digital experience platform (DXP). Its main difference from the proprietary DXPs of the world is that it's open. It doesn't ship with a stack of integrated technologies but rather lets you decide what your stack will be. Whether it's for marketing integrations or multi-channel experiences, you can decide how content feeds into and out of Drupal. This flexibility is one of Drupal's strengths. But it can be a challenge when pitching Drupal against other DXPs that come with a complete marketing toolset. + +Marketing folks often look for a packaged solution. And while an agency can package Drupal with a stack of tools, it's hard for Drupal to market this type of ready-to-go solution. + +### Drupal's strength as a content strategy platform + +So how does Drupal position itself when talking to marketers? Drupal's core strength is still its flexible content architecture. This means that it's an ideal platform for implementing a content strategy and content governance plan. These are two things that plenty of organizations are missing. They are also the two reasons for marketers to adopt a platform like Drupal. + +### Better content strategy with Drupal + +While Drupal can already be adapted to the content strategy of any organization, it doesn't mean that every Drupal website has a strong content strategy. Drupal implementers have to proactively make choices that prioritize the needs of content and content editors. This means doing things like: + +- Organizing content around user needs, not organizational structure +- Structuring content to be reusable, adaptable, personalized, translatable +- Integrating content with digital services by making content available via API +- Setting up tools so that content compliance is checked systematically + +Meanwhile, beyond the website, organizations need to use best practices to prioritize their content strategy practice. This means: + +- Empowering communicators and treating content editors as first-class users +- Sharing best practices for web publishing across the organization +- Creating a clear, actionable content governance plan +- Using tools like the digital asset management (DAM) tool that fosters content governance +- Creating a smooth flow of content and feedback between content experts and users + +With new expectations of platforms to handle personalization and faster cycles for re-branding or implementing a completely new marketing strategy, it's more important than ever for your website to be a tool to help your content strategy. If you're looking for ways to orient your practice around a strong content strategy, here are some places to start: + +- Get content editors involved in the process when launching a new web project +- Build [documentation][1] that's driven by content needs, not just technology. Use real content examples in your documentation and talk about the "why" of the content. +- Prioritize ongoing content governance rather than just relying on big projects to revamp your content every 3-5 years +- Invest in cleaning up legacy content instead of migrating content as-is when you do invest in a website redesign +- Invest in the content editor experience, something that Drupal facilitates and continues to invest in, but still takes active effort to do for each project + +To sum up, Drupal is already a CMS and a DXP. But this is beside the point. There is a need to leverage Drupal's capabilities towards creating a strong content strategy to really get the most out of the platform. + +_This article is based on the author's talk at DrupalCon Portland: [Future of content management: using Drupal as a content strategy platform][2]._ + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/drupal-content-strategy + +作者:[Suzanne Dergacheva][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/pixelite +[b]: https://github.com/lkxed +[1]: https://opensource.com/tags/documentation +[2]: https://www.youtube.com/watch?v=iexCIUuMWDU diff --git a/sources/tech/20221215.3 ⭐️⭐️ Enjoy two-panel file management on Linux with far2l.md b/sources/tech/20221215.3 ⭐️⭐️ Enjoy two-panel file management on Linux with far2l.md new file mode 100644 index 0000000000..53340252a5 --- /dev/null +++ b/sources/tech/20221215.3 ⭐️⭐️ Enjoy two-panel file management on Linux with far2l.md @@ -0,0 +1,148 @@ +[#]: subject: "Enjoy two-panel file management on Linux with far2l" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-far2l" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Enjoy two-panel file management on Linux with far2l +====== + +Far2l is a port of the Windows text-based file manager **Far**. And to be clear, that's a lower-case **L** (as in "Linux") not a number **1**. It runs in the terminal and is designed around a plug-in structure, enabling compatibility with SSH, WebDAV, NFS, and more. You can compile and run far2l on Linux, Mac, and BSD, or Far on Windows. + +### Install far2l + +Far2l is currently in beta, so you're unlikely to find it in your Linux distribution's software repository. However, you can [compile it from source][1] by downloading cloning its [Git repository][2]: + +``` +$ git clone --depth 1 https://github.com/elfmz/far2l.git +``` + +You can browse through the source code to see all of its different components. The main source files are in `utils/src`: + +``` +SharedResource.cpp +StackSerializer.cpp +StringConfig.cpp +StrPrintf.cpp +TestPath.cpp +Threaded.cpp +ThreadedWorkQueue.cpp +TimeUtils.cpp +TTYRawMode.cpp +utils.cpp +WideMB.cpp +ZombieControl.cpp +``` + +The file `ZombieControl.cpp` works to [mitigate a zombie apocalypse][3] (at least, in terms of processes), the file `ThreadedWorkQueue.cpp` helps speed processes along by using threading. Far2l isn't just built for extensibility, it's built responsibly! + +Assuming you've already prepared your system for compiling code, as described in the [compiling from source][1] article, you must also install some development libraries required by far2l. On Fedora, CentOS, OpenMandriva, and Mageia, the minimal list is: + +- wxGTK3-devel +- spdlog-devel +- xerces-c-devel +- uchardet-devel (your repository may not have this one, but there's a workaround) + +On Debian, the minimal list is: + +- libwxgtk3.0-gtk3-dev +- libuchardet-dev +- libspdlog-dev +- libxerces-c-dev + +Use [CMake][4] to prepare the makefiles: + +``` +$ mkdir build +$ cd !$ +$ cmake .. -DUSEUCD=no +``` + +The `-DUSECD=no` option is required only if you don't have the development libraries for `chardet` installed. If you do, then you can omit that option. + +Finally, compile the code and install far2l to a temporary location: + +``` +$ make -j$(nproc --all) +$ mkdir ~/far2l +$ make install DESTDIR=~/far2l +``` + +If you prefer to install it to your system instead of to a temporary directory, then omit the `DESTDIR=~/far2l` option. + +To launch far2l, invoke the binary stored in the `bin` subdirectory of your install path. For instance: + +``` +$ ~/far2l/local/bin/far2l +``` + +### Using far2l + +When you first launch far2l, it creates a configuration directory in `~/.config` and prompts you to choose what font you'd like to use. On my system, 16 pt font size was the default, and anything less than that was impossible to read. I used the open source Fantasque Mono Regular as my font, but any monospace font ought to work. + +Far2l is a two-panel file manager, meaning that the default view has a place to display two separate directories. At launch, both directories happen to be your home directory. To maximize the amount of screen space used for listing files, far2l uses two columns in each panel, and you can use the **Left** and **Right** arrows to change from one column to the other. + +In the right column, you can also use the **Right** arrow to move "down" the list of files by one screen. In the left column, use the **Left** arrow to move "up" the list of files by one screen. + +![Image of ​the far2l file manager.][5] + +This navigation takes some getting used to, especially if you're used to terminal file managers that only use the **Right** arrow to descend into a directory. However, once you get used to far2l's navigation, you're likely to appreciate the added speed you gain from this simple pagination. + +### Open a file or folder + +To open a folder, select a folder in your file list and press the **Return** key. This causes the active panel to change to a view of that directory. The inactive panel doesn't change, so it's not uncommon for far2l to always be showing two different directories at the same time. That's a feature of the two-panel file manager design, although it can take some getting used to if you're not in the habit of splitting windows. + +After you've moved into a directory, you can move back into its parent folder by selecting the double dots (`..`) at the top of the file listing and pressing **Return**. + +To open a file, select a folder in your file list and press the **Return** key. The file opens according to your desktop's mimetype preferences. + +### Panel and window navigation + +To move from one panel to another, press the **Tab** key. + +The fun thing about far2l is that its file listing is actually a layer over the top of your terminal. To hide the file listing temporarily, and to reveal it once it's gone, press **Ctrl+O** (that's the letter `O` not the digit zero). + +You can also adjust how much of your terminal the file panels take up. Press **Ctrl+Up** and **Ctrl+Down** to adjust the vertical size of the file panels. + +Make no mistake, though, you're not just suspending far2l when you access the terminal underneath. This isn't your usual terminal, it's a far2l terminal that interacts with the file manager and adds a few features to your standard terminal experience. For example, the [`find` command][6] gains graphical auto-completion. + +![Image of ​far2l responsive terminal.][7] + +### Copying and moving files + +All the usual file management functions are available within far2l are available with function keys. These are listed along the bottom of the far2l window. There are lots of options for some of the actions, which is either over-complex or really really powerful, depending on your preference. + +![Image of far21 move options.][8] + +### Exiting far2l + +To close far2l, type `exit far` into the command prompt at the bottom of the far2l window. + +### Far out + +Far2l is a dynamic and responsive text-based file manager. If you're a fan of classic two-panel file managers, then you'll feel at home with far2l. Far2l provides an interesting and novel interpretation of a terminal, and if you don't try far2l for its two-panel file management, you should at least try it for its terminal. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-far2l + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/21/11/compiling-code +[2]: https://github.com/elfmz/far2l +[3]: https://www.redhat.com/sysadmin/killing-zombies-linux-style +[4]: https://opensource.com/article/21/5/cmake +[5]: https://opensource.com/sites/default/files/2022-10/far2l.filemanager.png +[6]: https://www.redhat.com/sysadmin/linux-find-command +[7]: https://opensource.com/sites/default/files/2022-10/far2l-popup.png +[8]: https://opensource.com/sites/default/files/2022-10/far2l-move-options.png diff --git a/sources/tech/20221216.2 ⭐️⭐️ 5 reasons to love Linux GNOME Files.md b/sources/tech/20221216.2 ⭐️⭐️ 5 reasons to love Linux GNOME Files.md new file mode 100644 index 0000000000..fda0ea984f --- /dev/null +++ b/sources/tech/20221216.2 ⭐️⭐️ 5 reasons to love Linux GNOME Files.md @@ -0,0 +1,96 @@ +[#]: subject: "5 reasons to love Linux GNOME Files" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-gnome" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +5 reasons to love Linux GNOME Files +====== + +The GNOME desktop is a common default desktop for most Linux distributions and, as with most operating systems, you manage your data on GNOME with software called a file manager. GNOME promotes a simple and clear naming scheme for its applications, and so its file manager is called, simply, Files. Its intuitive interface is simple enough that you forget what operating system you're using altogether. You're just using a computer, managing files in the most obvious way. GNOME Files is a shining example of thoughtful, human-centric design, and it's an integral part of modern computing. These are my top five favorite things about GNOME Files, and why I love using it. + +### 1. Intuitive design + +![THe GNOME Files file manager is an intuitive and friendly application.][1] + +As long as you've managed files on a computer before, you basically already know how to use GNOME Files. Sure, everybody loves innovation, and everybody loves seeing new ideas that make the computer world a little more exciting. However, there's a time and a place for everything, and frankly sometimes the familiar just feels better. Good file management is like breathing. It's something you do without thinking about what you're doing. When it becomes difficult for any reason, it's disruptive and uncomfortable. + +GNOME Files doesn't have any surprises in store for you, at least not the kind that make you stop what you thought you were doing in order to recalculate and start again. And my favorite aspect of the "do it the way you think you should do it" design of GNOME Files is that there isn't only one way to accomplish a task. One thing I've learned from teaching people how to do things on computers is that everyone seems to have a slightly different workflow for even the simplest of tasks, so it's a relief that GNOME Files accounts for that. + +When you need to move a file, do you open a second window so you can drag and drop between the two? Or do you right-click and Cut the file and then navigate to the destination and Paste the file? Or do you drag the file onto a button or folder icon, blazing a trail through directories as they open for you? In GNOME Files, the "standard" assumptions usually apply (insofar as there are standard assumptions.) + +### 2. Space saver + +If you manage a lot of files for a lot of the time you're at your computer, you're probably familiar with just how much screen real estate a file manager can take up. Many file managers have lots of buttons across several toolbars, a menu bar, and a status bar, such that just one file manager window takes up a good portion of your screen. To make matters worse, many users prefer to open several folders, each in its own window, which takes even more space. + +GNOME Files tends to optimize space. What takes up three separate toolbars in other file managers is in a single toolbar in GNOME Files, and that toolbar is what would traditionally be the window title bar. In the top bar, there's a forward and back button, file path information, a view settings button, and a drop-down menu with access to common functions. + +![The GNOME Files toolbar has just the essential buttons, and in a compact space.][2] + +### 3. Other locations + +Not all operating systems or file managers make it so you can interact with your network as naturally as you can interact with your own computer. Linux has a long tradition of viewing the network as just another computer, and in fact, the name "GNOME" was an acronym for "GNU Network Object Model Environment." + +In GNOME Files, it's trivial to open a folder on a computer you're not sitting in front of. Whether it's a server in a data center or just your office desktop while you're relaxing in your lounge with a laptop, the **Other Locations** bookmark in the GNOME Files side panel allows you to access files as if they were on your hard drive. + +![It's easy to connect to remote systems through GNOME Files.][3] + +To use it, you enter the file sharing protocol you want to use, along with the username and IP address of the computer you want to access. The `ssh://` protocol is most common between Linux or Unix machines, while `smb://` is useful for an environment with [Windows machines][4], and `dav://` is useful for applications running on the Internet. Assuming the target computer is accessible over the protocol you're using, and that its [firewall is set correctly][5] to permit you to pass through it, you can interact with a remote system as naturally as though they were on your local machine. + +### 4. Preferences + +Most file managers have configuration options, and to be fair GNOME Files actually doesn't give you very many choices compared to others. However, the options that it does offer are, like the modes of working it offers its users, the "standard" ones. I'm misusing the word "standard" intentionally: There is no standard, and what feels standard to one person is niche to someone else. But if you like what you're experiencing with GNOME Files under normal circumstances, and you feel that you're its intended audience, then the configuration options it offers are in line with the experience it promotes. For example: + +- Sort folders before files +- Expand folders in _list view_ +- Show the **Create link** option in the contextual menu +- Show the **Delete Permanently** option in the contextual menu +- Adjust visible information beneath a filename in _icon view_ + +That's nearly all the options you're given, and in a way it's surface-level choices. But that's GNOME Files. If you want something with more options, there are several very good alternatives that may better fit your style of work. If you're looking for a file manager that just covers the most common use cases, then try GNOME Files. + +### 5. It's full of stars + +I love the concept of metadata, and I generally hate the way it's _not_ implemented. Metadata has the potential to be hugely useful in a pragmatic way, but it's usually relegated to specialized metadata editing applications, hidden from view and out of reach. GNOME Files humbly contributes to improving this situation with one simple feature: The gold star. + +In GNOME Files, you can star any file or folder. It's a bit of metadata so simple that it's almost silly to call it metadata, but in my experience, it makes a world of difference. Instead of desperately running [find][6] command to filter files by recent changes, or re-sorting a folder by modification time, or using [grep][7] to find that one string I just know is in an important file, I can star the files that are important to me. + +Making plans for the zombie apocalypse all day? Star it so you can find it tomorrow when you resume your important work. After it's over and the brain-eaters have been dealt with, un-star the folder and resume normal operation. It's simple. Maybe too simple for some. But I'm a heavy star-user, and it saves me several methods of searching and instead reduces "what was I working on?" to the click of a single button. + +### Install GNOME Files + +If you've downloaded a mainstream Linux distribution, then chances are good that you already have GNOME and GNOME Files installed. However, not all distributions default to GNOME, and even those that do often have different desktops available for download. The development name of GNOME Files is `nautilus`, so to find out whether you have GNOME Files installed, open a terminal and type `nautilus &` and then press **Return**. If you see this error, you don't have GNOME Files available: + +``` +bash: nautilus: command not found... +``` + +To install GNOME Files, you must install the GNOME desktop. If you're happy with your current desktop, though, that's probably not what you want to do. Instead, consider trying [PCManFM][8] or [Thunar][9]. + +If you're interested in GNOME, though, this is a great reason to try it. You can probably install GNOME from your distribution's repository or software center. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-gnome + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/2022-10/gnome-files.webp +[2]: https://opensource.com/sites/default/files/2022-10/gnome-files-toolbar.webp +[3]: https://opensource.com/sites/default/files/2022-10/gnome-files-connect.webp +[4]: https://opensource.com/article/21/4/share-files-linux-windows +[5]: https://www.redhat.com/sysadmin/secure-linux-network-firewall-cmd +[6]: https://opensource.com/article/21/9/linux-find-command +[7]: https://www.redhat.com/sysadmin/how-to-use-grep +[8]: http://linnk-to-pcmanfm-article +[9]: http://link-to-article diff --git a/sources/tech/20221218.0 ⭐️⭐️ Use my Groovy color wheel calculator.md b/sources/tech/20221218.0 ⭐️⭐️ Use my Groovy color wheel calculator.md new file mode 100644 index 0000000000..8b00c4240f --- /dev/null +++ b/sources/tech/20221218.0 ⭐️⭐️ Use my Groovy color wheel calculator.md @@ -0,0 +1,384 @@ +[#]: subject: "Use my Groovy color wheel calculator" +[#]: via: "https://opensource.com/article/22/12/groovy-color-wheel" +[#]: author: "Chris Hermansen https://opensource.com/users/clhermansen" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Use my Groovy color wheel calculator +====== + +Every so often, I find myself needing to calculate complementary colors. For example, I might be making a line graph in a web app or bar graphs for a report. When this happens, I want to use complementary colors to have the maximum "visual difference" between the lines or bars. + +Online calculators can be useful in calculating two or maybe three complementary colors, but sometimes I need a lot more–for instance, maybe 10 or 15. + +Many online resources explain how to do this and offer formulas, but I think it's high time for a Groovy color calculator. So please follow along. First, you might need to install Java and Groovy. + +### Install Java and Groovy + +Groovy is based on Java and requires a Java installation as well. Both a recent/decent version of Java and Groovy might be in your Linux distribution's repositories. Or you can install Groovy by following the instructions on the above link. + +A nice alternative for Linux users is [SDKMan][1], which can get multiple versions of Java, Groovy, and many other related tools. For this article, I'm using SDK's releases of: + +- Java: version 11.0.12-open of OpenJDK 11 +- Groovy: version 3.0.8 + +### Using a color wheel + +Before you start coding, look at a real color wheel. If you open [GIMP (the GNU Image Manipulation Program)][2] and look on the upper left-hand part of the screen, you'll see the controls to set the foreground and background colors, circled in red on the image below: + +![Controls to set foreground and background colors][3] + +If you click on the upper left square (the foreground color), a window will open that looks like this: + +![Set foreground color][4] + +If it doesn't quite look like that, click on the fourth from the left button on the top left row, which looks like a circle with a triangle inscribed in it. + +The ring around the triangle represents a nearly continuous range of colors. In the image above, starting from the triangle pointer (the black line that interrupts the circle on the left), the colors shade from blue into cyan into green, yellow, orange, red, magenta, violet, and back to blue. This is the color wheel. If you pick two colors opposite each other on that wheel, you will have two complementary colors. If you choose 17 colors evenly spaced around that wheel, you'll have 17 colors that are as distinct as possible. + +Make sure you have selected the **HSV** button in the top right of the window, then look at the sliders marked H, S, and V, respectively. These are **h**ue, **s**aturation, and **v**alue. When choosing contrasting colors, the hue is the interesting parameter. + +Its value runs from zero to 360 degrees; in the image above, it's 192.9 degrees. + +You can use this color wheel to calculate the complementary color to another manually–just add 180 to your color's value, giving you 372.9. Next, subtract 360, leaving 17.9 degrees. Type that 17.9 into the **H** box, replacing the 192.9, and poof, you have its complementary color: + +![Change foreground color][5] + +If you inspect the text box labeled **HTML notation** you'll see that the color you started with was **#0080a3,** and its complement is **#a33100**. Look at the fields marked **Current** and **Old** to see the two colors complementing each other. + +There is a most excellent and detailed [article on Wikipedia explaining HSL (hue, saturation, and lightness) and HSV (hue, saturation, and value) color models][6] and how to convert between them and the RGB standard most of us know. + +I'll automate this in Groovy. Because you might want to use this in various ways, create a **Color** class that provides constructors to create an instance of Color and then several methods to query the color of the instance in HSV and RGB. + +Here's the **Color** class, with an explanation following: + +``` +     1  /** +     2   *  This class based on the color transformation calculations +     3   *  in https://en.wikipedia.org/wiki/HSL_and_HSV +     4   * +     5   *  Once an instance of Color is created, it can be transformed +     6   *  between RGB triplets and HSV triplets and converted to and +     7   *  from hex codes. +     8   */ +        +     9  public class Color { +        +    10      /** +    11       * May as well keep the color as both RGB and HSL triplets +    12       * Keep each component as double to avoid as many rounding +    13       * errors as possible. +    14       */ +        +    15      private final Map rgb // keys 'r','g','b'; values 0-1,0-1,0-1 double +    16      private final Map hsv // keys 'h','s','v'; values 0-360,0-1,0-1 double +        +    17      /** +    18       * If constructor provided a single int, treat it as a 24-bit RGB representation +    19       * Throw exception if not a reasonable unsigned 24 bit value +    20       */ +        +    21      public Color(int color) { +    22          if (color < 0 || color > 0xffffff) { +    23              throw new IllegalArgumentException('color value must be between 0x000000 and 0xffffff') +    24          } else { +    25              this.rgb = [r: ((color & 0xff0000) >> 16) / 255d, g: ((color & 0x00ff00) >> 8) / 255d, b: (color & 0x0000ff) / 255d] +    26              this.hsv = rgb2hsv(this.rgb) +    27          } +    28      } +        +    29      /** +    30       * If constructor provided a Map, treat it as: +    31       * - RGB if map keys are 'r','g','b' +    32       *   - Integer and in range 0-255 ⇒ scale +    33       *   - Double and in range 0-1 ⇒ use as is +    34       * - HSV if map keys are 'h','s','v' +    35       *   - Integer and in range 0-360,0-100,0-100 ⇒ scale +    36       *   - Double and in range 0-360,0-1,0-1 ⇒ use as is +    37       * Throw exception if not according to above +    38       */ +        +    39      public Color(Map triplet) { +    40          def keySet = triplet.keySet() +    41          def types = triplet.values().collect { it.class } +    42          if (keySet == ['r','g','b'] as Set) { +    43              def minV = triplet.min { it.value }.value +    44              def maxV = triplet.max { it.value }.value +    45              if (types == [Integer,Integer,Integer] && 0 <= minV && maxV <= 255) { +    46                  this.rgb = [r: triplet.r / 255d, g: triplet.g / 255d, b: triplet.b / 255d] +    47                  this.hsv = rgb2hsv(this.rgb) +    48              } else if (types == [Double,Double,Double] && 0d <= minV && maxV <= 1d) { +    49                  this.rgb = triplet +    50                  this.hsv = rgb2hsv(this.rgb) +    51              } else { +    52                  throw new IllegalArgumentException('rgb triplet must have integer values between (0,0,0) and (255,255,255) or double values between (0,0,0) and (1,1,1)') +    53              } +    54          } else if (keySet == ['h','s','v'] as Set) { +    55              if (types == [Integer,Integer,Integer] && 0 <= triplet.h && triplet.h <= 360 +    56              && 0 <= triplet.s && triplet.s <= 100 && 0 <= triplet.v && triplet.v <= 100) { +    57                  this.hsv = [h: triplet.h as Double, s: triplet.s / 100d, v: triplet.v / 100d] +    58                  this.rgb = hsv2rgb(this.hsv) +    59              } else if (types == [Double,Double,Double] && 0d <= triplet.h && triplet.h <= 360d +    60              && 0d <= triplet.s && triplet.s <= 1d && 0d <= triplet.v && triplet.v <= 1d) { +    61                  this.hsv = triplet +    62                  this.rgb = hsv2rgb(this.hsv) +    63              } else { +    64                  throw new IllegalArgumentException('hsv triplet must have integer values between (0,0,0) and (360,100,100) or double values between (0,0,0) and (360,1,1)') +    65              } +    66          } else { +    67              throw new IllegalArgumentException('triplet must be a map with keys r,g,b or h,s,v') +    68          } +    69      } +        +    70      /** +    71       * Get the color representation as a 24 bit integer which can be +    72       * rendered in hex in the familiar HTML form. +    73       */ +        +    74      public int getHex() { +    75          (Math.round(this.rgb.r * 255d) << 16) + +    76          (Math.round(this.rgb.g * 255d) << 8) + +    77          Math.round(this.rgb.b * 255d) +    78      } +        +    79      /** +    80       * Get the color representation as a map with keys r,g,b +    81       * and the corresponding double values in the range 0-1 +    82       */ +        +    83      public Map getRgb() { +    84          this.rgb +    85      } +        +    86      /** +    87       * Get the color representation as a map with keys r,g,b +    88       * and the corresponding int values in the range 0-255 +    89       */ +        +    90      public Map getRgbI() { +    91          this.rgb.collectEntries {k, v -> [(k): Math.round(v*255d)]} +    92      } +        +    93      /** +    94       * Get the color representation as a map with keys h,s,v +    95       * and the corresponding double values in the ranges 0-360,0-1,0-1 +    96       */ +        +    97      public Map getHsv() { +    98          this.hsv +    99      } +        +   100      /** +   101       * Get the color representation as a map with keys h,s,v +   102       * and the corresponding int values in the ranges 0-360,0-100,0-100 +   103       */ +        +   104      public Map getHsvI() { +   105          [h: Math.round(this.hsv.h), s: Math.round(this.hsv.s*100d), v: Math.round(this.hsv.v*100d)] +   106      } +        +   107      /** +   108       * Internal routine to convert an RGB triple to an HSV triple +   109       * Follows the Wikipedia section https://en.wikipedia.org/wiki/HSL_and_HSV#Hue_and_chroma +   110       * (almost) - note that the algorithm given there does not adjust H for G < B +   111       */ +        +   112      private static def rgb2hsv(Map rgbTriplet) { +   113          def max = rgbTriplet.max { it.value } +   114          def min = rgbTriplet.min { it.value } +   115          double c = max.value - min.value +   116          if (c) { +   117              double h +   118              switch (max.key) { +   119              case 'r': h = ((60d * (rgbTriplet.g - rgbTriplet.b) / c) + 360d) % 360d; break +   120              case 'g': h = ((60d * (rgbTriplet.b - rgbTriplet.r) / c) + 120d) % 360d; break +   121              case 'b': h = ((60d * (rgbTriplet.r - rgbTriplet.g) / c) + 240d) % 360d; break +   122              } +   123              double v = max.value // hexcone model +   124              double s = max.value ? c / max.value : 0d +   125              [h: h, s: s, v: v] +   126          } else { +   127              [h: 0d, s: 0d, v: 0d] +   128          } +   129      } +        +   130      /** +   131       * Internal routine to convert an HSV triple to an RGB triple +   132       * Follows the Wikipedia section https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_RGB +   133       */ +        +   134      private static def hsv2rgb(Map hsvTriplet) { +   135          double c = hsvTriplet.v * hsvTriplet.s +   136          double hp = hsvTriplet.h / 60d +   137          double x = c * (1d - Math.abs(hp % 2d - 1d)) +   138          double m = hsvTriplet.v - c +   139          if (hp < 1d)      [r: c  + m, g: x  + m, b: 0d + m] +   140          else if (hp < 2d) [r: x  + m, g: c  + m, b: 0d + m] +   141          else if (hp < 3d) [r: 0d + m, g: c  + m, b: x  + m] +   142          else if (hp < 4d) [r: 0d + m, g: x  + m, b: c  + m] +   143          else if (hp < 5d) [r: x  + m, g: 0d + m, b: c  + m] +   144          else if (hp < 6d) [r: c  + m, g: 0d + m, b: x  + m] +   145      } +        +   146  } +``` + +The **Color** class definition, which begins on line 9 and ends on line 146, looks a lot like a Java class definition (at first glance, anyway) that would do the same thing. But this is Groovy, so you have no imports up at the beginning, just comments. Plus, the details illustrate some more Groovyness. + +Line 15 creates the private final variable **rgb** that contains the color value supplied to the class constructor. You'll keep this value as **Map** with keys `r`, `g`, and `b` to access the RGB values. Keep the values as double values between 0 and 1 so that 0 would indicate a hexadecimal value of **#00** or an integer value of 0 and 1 would mean a hexadecimal value of **#ff** or an integer value of 255. Use double to avoid accumulating rounding errors when converting inside the class. + +Similarly, line 16 creates the private final variable **hsv** that contains the same color value but in HSV format–also a **Map**, but with keys `h`, `s`, and `v` to access the HSV values, which will be kept as double values between 0 and 360 (hue) and 0 and 1 (saturation and value). + +Lines 21-28 define a **Color** constructor to be called when passing in an int argument. For example, you might use this as: + +``` +def blue = new Color(0x0000ff) +``` + +- On lines 22-23, check to make sure the argument passed to the constructor is in the allowable range for a 24-bit integer RGB constructor, and throw an exception if not. +- On line 25, initialize the **rgb** private variable as the desired RGB Map, using bit shifts and dividing each by a double value 255 to scale the numbers between 0 and 1. +- On line 26, convert the RGB triplet to HSV and assign it to the **hsv** private variable. + +Lines 39-69 define another **Color** constructor to be called when passing in either an RGB or HSV triple as a **Map**. You might use this as: + +``` +def green = new Color([r: 0, g: 255, b: 0]) +``` + +or + +``` +def cyan = new Color([h: 180, s: 100, v: 100]) +``` + +Or similarly with double values scaled between 0 and 1 instead of integers between 0 and 255 in the RGB case and between 0 and 360, 0 and 1, and 0 and 1 for hue, saturation, and value, respectively. + +This constructor looks complicated, and in a way, it is. It checks the **keySet()** of the map argument to decide whether it denotes an RGB or HSV tuple. It checks the class of the values passed in to determine whether the values are to be interpreted as integers or double values and, therefore, whether they are scaled into 0-1 (or 0-360 for hue). + +Arguments that can't be sorted out using this checking are deemed incorrect, and an exception is thrown. + +Worth noting is the handy streamlining provided by Groovy: + +``` +def types = triplet.values().collect { it.class } +``` + +This uses the **values()** method on the map to get the values as a **List** and then the **collect()** method on that **List** to get the class of each value so that they can later be checked against **[Integer,Integer,Integer]** or **[Double,Double,Double]** to ensure that arguments meet expectations. + +Here is another useful streamlining provided by Groovy: + +``` +def minV = triplet.min { it.value }.value +``` + +The **min()** method is defined on **Map**; it iterates over the **Map** and returns the **MapEntry**—a (key, value) pair—having the minimum value encountered. The **.value** on the end selects the value field from that **MapEntry**, which gives something to check against later to determine whether the values need to be normalized. + +Both rely on the Groovy Closure, similar to a Java lambda–a kind of anonymous procedure defined where it is called. For example, **collect()** takes a single **Closure** argument and passes it to each **MapEntry** encountered, known as the parameter within the closure body. Also, the various implementations of the Groovy Collection interface, including here **Map**, define the **collect()** and **min()** methods that iterate over the elements of the **Collection** and call the **Closure** argument. Finally, the syntax of Groovy supports compact and low-ceremony invocations of these various features. + +Lines 70-106 define five "getters" that return the color used to create the instance in one of five formats: + +- **getHex()** returns an int corresponding to a 24-bit HTML RGB color. +- **getRgb()** returns a **Map** with keys `r`, `g`, `b` and corresponding double values in the range 0-1. +- **getRgbI()** returns a **Map** with keys `r`, `g`, `b` and corresponding int values in the range 0-255. +- **getHsv()** returns a **Map** with keys `h`, `s`, `v` and corresponding double values in the range 0-360, 0-1 and 0-1, respectively. +- **getHsvI()** returns a **Map** with keys `h`, `s`, `v` and corresponding int values in the range 0-360, 0-100 and 0-100, respectively. + +Lines 112-129 define a static private (internal) method **rgb2hsv()** that converts an RGB triplet to an HSV triplet. This follows the algorithm described in the Wikipedia article [section on Hue and chroma][7], except that the algorithm there yields negative hue values when the green value is less than the blue value, so the version is modified slightly. This code isn't particularly Groovy other than using the **max()** and **min()****Map** methods and returning a **Map** instance declaratively without a return statement. + +This method is used by the two getter methods to return the **Color** instance value in the correct form. Since it doesn't refer to any instance fields, it is static. + +Similarly, lines 134-145 define another private (internal) method **hsv2rgb()**, that converts an HSV triplet to an RGB triplet, following the algorithm described in the Wikipedia article [section on HSV to RGB conversion][8]. The constructor uses this method to convert HSV triple arguments into RGB triples. Since it doesn't refer to any instance fields, it is static. + +That's it. Here's an example of how to use this class: + +``` +     1  def favBlue = new Color(0x0080a3) +        +     2  def favBlueRgb = favBlue.rgb +     3  def favBlueHsv = favBlue.hsv +        +     4  println "favBlue hex = ${sprintf('0x%06x',favBlue.hex)}" +     5  println "favBlue rgbt = ${favBlue.rgb}" +     6  println "favBlue hsvt = ${favBlue.hsv}" +        +     7  int spokeCount = 8 +     8  double dd = 360d / spokeCount +     9  double d = favBlue.hsv.h +    10  for (int spoke = 0; spoke < spokeCount; spoke++) { +    11      def color = new Color(h: d, s: favBlue.hsv.s, v: favBlue.hsv.v) +    12      println "spoke $spoke $d° hsv ${color.hsv}" +    13      println "    hex ${sprintf('0x%06x',color.hex)} hsvI ${color.hsvI} rgbI ${color.rgbI}" +    14      d = (d + dd) % 360d +    15  } +``` + +As my starting value, I've chosen the lighter blue from the [opensource.com][9] header **#0080a3**, and I'm printing a set of seven more colors that give maximum separation from the original blue. I call each position going around the color wheel a spoke and compute its position in degrees in the variable **d**, which is incremented each time through the loop by the number of degrees **dd** between each spoke. + +As long as `Color.groovy` and this test script are in the same directory, you can compile and run them as follows: + +``` +$ groovy test1Color.groovy +favBlue hex = 0x0080a3 +favBlue rgbt = [r:0.0, g:0.5019607843137255, b:0.6392156862745098] +favBlue hsvt = [h:192.88343558282207, s:1.0, v:0.6392156862745098] +spoke 0 192.88343558282207° hsv [h:192.88343558282207, s:1.0, v:0.6392156862745098] +    hex 0x0080a3 hsvI [h:193, s:100, v:64] rgbI [r:0, g:128, b:163] +spoke 1 237.88343558282207° hsv [h:237.88343558282207, s:1.0, v:0.6392156862745098] +    hex 0x0006a3 hsvI [h:238, s:100, v:64] rgbI [r:0, g:6, b:163] +spoke 2 282.8834355828221° hsv [h:282.8834355828221, s:1.0, v:0.6392156862745098] +    hex 0x7500a3 hsvI [h:283, s:100, v:64] rgbI [r:117, g:0, b:163] +spoke 3 327.8834355828221° hsv [h:327.8834355828221, s:1.0, v:0.6392156862745098] +    hex 0xa30057 hsvI [h:328, s:100, v:64] rgbI [r:163, g:0, b:87] +spoke 4 12.883435582822074° hsv [h:12.883435582822074, s:1.0, v:0.6392156862745098] +    hex 0xa32300 hsvI [h:13, s:100, v:64] rgbI [r:163, g:35, b:0] +spoke 5 57.883435582822074° hsv [h:57.883435582822074, s:1.0, v:0.6392156862745098] +    hex 0xa39d00 hsvI [h:58, s:100, v:64] rgbI [r:163, g:157, b:0] +spoke 6 102.88343558282207° hsv [h:102.88343558282207, s:1.0, v:0.6392156862745098] +    hex 0x2fa300 hsvI [h:103, s:100, v:64] rgbI [r:47, g:163, b:0] +spoke 7 147.88343558282207° hsv [h:147.88343558282207, s:1.0, v:0.6392156862745098] +    hex 0x00a34c hsvI [h:148, s:100, v:64] rgbI [r:0, g:163, b:76] +``` + +You can see the degree position of the spokes reflected in the HSV triple. I've also printed the hex RGB value and the int version of the RGB and HSV triples. + +I could have built this in Java. Had I done so, I probably would have created separate **RgbTriple** and **HsvTriple** helper classes because Java doesn't provide the declarative syntax for **Map**. That would have made finding the min and max values more verbose. So, as usual, the Java would have been more lengthy without improving readability. There would have been three constructors, though, which might be a more straightforward proposition. + +I could have used 0-1 for the hue as I did for saturation and value, but somehow I like 0-360 better. + +Finally, I could have added–and I may still do so one day–other conversions, such as HSL. + +### Wrap up + +Color wheels are useful in many situations and building one in Groovy is a great exercise to learn both how the wheel works and the, well, grooviness of Groovy. Take your time; the code above is long. However, you can build your own practical color calculator and learn a lot along the way. + +#### Groovy resources + +The Apache Groovy language site provides [a good tutorial-level overview][10] of working with Collection, particularly Map classes. This documentation is quite concise and easy to follow, at least partly because the facility it is documenting has been designed to be itself concise and easy to use! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/groovy-color-wheel + +作者:[Chris Hermansen][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/clhermansen +[b]: https://github.com/lkxed +[1]: https://sdkman.io/ +[2]: https://www.gimp.org/ +[3]: https://opensource.com/sites/default/files/2022-12/1controls.png +[4]: https://opensource.com/sites/default/files/2022-12/2foregroundcolor.png +[5]: https://opensource.com/sites/default/files/2022-12/3changeforegroundcolor_0.png +[6]: https://en.wikipedia.org/wiki/HSL_and_HSV +[7]: https://en.wikipedia.org/wiki/HSL_and_HSV#Hue_and_chroma +[8]: https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_RGB +[9]: https://opensource.com/ +[10]: https://groovy-lang.org/databases.html + diff --git a/sources/tech/20221219.0 ⭐️⭐️ Use Rexx for scripting in 2023.md b/sources/tech/20221219.0 ⭐️⭐️ Use Rexx for scripting in 2023.md new file mode 100644 index 0000000000..6ede79a4bf --- /dev/null +++ b/sources/tech/20221219.0 ⭐️⭐️ Use Rexx for scripting in 2023.md @@ -0,0 +1,169 @@ +[#]: subject: "Use Rexx for scripting in 2023" +[#]: via: "https://opensource.com/article/22/12/rexx-scripting" +[#]: author: "Howard Fosdick https://opensource.com/users/howtech" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Use Rexx for scripting in 2023 +====== + +In a [previous article][1], I showed how the Rexx scripting language is both powerful and easy to use. It uses specific techniques to reconcile these two goals that are often considered in conflict. + +This article walks you through two example Rexx scripts so you can get a feel for the language. Rexx purports to be highly capable yet easy to work with. + +### An example of a Rexx script + +The [LISP programming language][2] is famous for its overuse of parentheses. It can be a real challenge for programmers to ensure they're all matched up correctly. + +This short script reads a line of LISP code from the user and determines whether the parentheses in the input are properly matched. If the parentheses aren't properly balanced, the program displays a syntax error. + +Below are three sample interactions with the program. In the first, the LISP code I entered was correctly typed. But the next two contain mismatched parentheses that the Rexx script identifies: + +``` +Enter a line to analyze: +(SECOND (LAMBDA (LIS) (FIRST (CDR LIS)) )) +Parentheses are balanced + +Enter a line to analyze: +((EQSTR (CAR LIS1) (CAR LIS2)) +Syntax error: too many left parens, not balanced + +Enter a line to analyze: +(EQSTR (CAR LIS1) CAR LIS2)) +Syntax error: right paren before or without left paren +``` + +Here's the Rexx program: + +``` +counter = 0 /* counts parentheses */ + +say 'Enter a line to analyze:' /* prompts user for input */ +pull input_string /* reads line of user input */ + +length_of_string = length(input_string) + +/* process each character of the input line, one at a time */ + +do j = 1 to length_of_string while counter >= 0 + + character = substr(input_string,j,1) + if character = '(' then counter = counter + 1 + if character = ')' then counter = counter - 1 + +end + +/* display the appropriate message to the user */ + +if counter = 0 then + say 'Parentheses are balanced' +else if counter < 0 then + say 'Syntax error: right paren before or without left paren' +else + say 'Syntax error: too many left parens, not balanced' +``` + +First, the program prompts the user to enter a line of input with the `say` instruction. Then it reads it with a `pull` instruction. + +`The say` and `pull`  instructions are used for conversational input/output, or direct interaction with users. Rexx also supports character-oriented and line- or record- oriented I/O. + +Next, the script uses the `length` function to place the length of the input line into the variable `length_of_string`. + +The `do` loop processes each character from the input line, one at a time. It increments the `counter` each time it encounters a left parenthesis, and decrements it each time it recognizes a right parenthesis. + +If the `counter` ends up as zero after processing the entire input line, the program knows that any parentheses in the input line match up correctly. If the `counter` is not 0 after processing, the input line has mismatched parentheses. + +The final `if` statements display the proper message to the user. One could code these `if` statements in any number of styles, as per individual preference. (The main requirement is that whenever multiple statements are coded within a branch, they must be enclosed in a `do...end` group.) + +This program shows that Rexx is free-form and case-insensitive. It does not rely on reserved words, so you're free to use common words like `counter` or `character` to represent variables. + +The one key requirement Rexx does impose is that any function must immediately be followed by a left parenthesis. Examples in the program are the `length` and `substr` functions. Put a space between a function name and its following parenthesis, and Rexx won't recognize the function. + +Outside of a few minimal requirements like these, Rexx requires very little from the programmer in terms of syntax, special characters, or restrictive coding rules. + +Rexx programs look and read like pseudo-code. This makes them relatively easy to read and work with. + +### A real-world example of a Rexx script + +Here's a program from the real world: + +Les Koehler, a Rexx user, had a legacy accounting program that matched accounting records on hand against those that a vendor sent to him daily. The legacy program ran for several hours every day to process 25,000 records. It employed a sequential "walk the list" technique to match one set of records against the other. + +Les replaced the legacy program with a Rexx script. The Rexx script performs matching by using associative arrays: + +``` +/* Create an associative array reflecting */ +/* the values in the first list of names */ +/* by Les Koehler */ + +flag. = 0 /* Create array, set all items to 0 */ +do a = 1 to list_a.0 /* Process all existing records */ + aa = strip(list_a.a) /* Strip preceding/trailing blanks */ + flag.aa = 1 /* Mark each record with a 1 */ +end + +/* Try to match names in the second list */ +/* against those in the associative array */ + +m = 0 /* M counts number of missing names */ +do b = 1 to list_b.0 /* Look for matching name from LIST_B */ + bb = strip(list_b.b) /* Put LIST_B name into variable BB */ + if \ flag.bb then do /* If name isn't in FLAG array */ + m = m+1 /* add 1 to count of missing names */ + missing.m = bb /* add missing name to MISSING array */ + end +end + +missing.0 = m /* Save the count of unmatched names */ +``` + +Les was able to reduce processing time from several hours down to a matter of seconds. + +The first line of code (`flag. = 0`) creates a new array called `flag` and initializes every element in that array to `0`. + +The array `list_a` contains all the existing accounting records. Its first element (`list_a.0`) by convention contains the number of elements in the array. + +So the first `do` loop processes all elements in the array of existing records (`list_a`) and marks each of them as existing in the `flag` array. The statement `flag.aa = 1` marks the content-addressable item in the `flag` array as present. + +The second `do` loop peddles through each item in the set of new records, contained in the array called `list_b`. + +The `if` statement checks whether an item from the second array of records is marked present in the `flag` array. If not, the program increments the number of items present in the new list of accounting records that do not exist in the old list of records. And it puts the missing item into the `missing` array: `missing.m = bb`. + +The final statement (`missing.0 = m`) simply updates the number of items in the `missing` array, by convention stored in array position 0. + +### Rexx improvements + +Why is this Rexx program so fast compared to the legacy code it replaces? First, the associative arrays allow direct lookup of a new record against the old records. Direct access is much faster than the sequential "walk-the-list" technique it replaced. + +Secondly, all the array elements reside in memory. Once the files of the old and new accounting records have been initialized into the Rexx arrays, no further disk I/O is needed. Disk I/O is always orders of magnitude slower than memory access. + +A Rexx array expands as much as memory allows. This script takes advantage of modern computers with seemingly endless amounts of RAM, and frees the programmer from managing memory. + +### Conclusion + +I hope these two simple programs have shown how easy Rexx is to read, write, and maintain. Rexx is designed to put the burden of programming on the machine instead of the programmer. Yet the language still has plenty of power, due to the design techniques I've described in this series of articles. + +For free Rexx downloads, tools, tutorials, and more, visit [RexxInfo.org][3]. You can join the [Rexx Language Association][4] for free. + +_This article is dedicated to the memory of Les Koehler, who was active with Rexx and the Rexx community since their very earliest days._ + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/rexx-scripting + +作者:[Howard Fosdick][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/howtech +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/22/10/rexx-scripting-language +[2]: https://opensource.com/article/21/5/learn-lisp +[3]: http://www.RexxInfo.org +[4]: http://www.RexxLA.org diff --git a/sources/tech/20221219.1 ⭐️⭐️ How I use my old camera as a webcam with Linux.md b/sources/tech/20221219.1 ⭐️⭐️ How I use my old camera as a webcam with Linux.md new file mode 100644 index 0000000000..51a20186e9 --- /dev/null +++ b/sources/tech/20221219.1 ⭐️⭐️ How I use my old camera as a webcam with Linux.md @@ -0,0 +1,260 @@ +[#]: subject: "How I use my old camera as a webcam with Linux" +[#]: via: "https://opensource.com/article/22/12/old-camera-webcam-linux" +[#]: author: "Tom Oliver https://opensource.com/users/tomoliver" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How I use my old camera as a webcam with Linux +====== + +This year after largely abandoning my MacBook in favor of a NixOS machine, I started getting requests to "turn my camera on" when video calling people. This was a problem because I didn't have a webcam. I thought about buying one, but then I realized I had a perfectly good Canon EOS Rebel XS DSLR from 2008 lying around on my shelf. This camera has a mini-USB port, so naturally, I pondered: Did a DSLR, mini-USB port, and a desktop PC mean I could have a webcam? + +There's just one problem. My Canon EOS Rebel XS isn't capable of recording video. It can take some nice pictures, but that's about it. So that's the end of that. + +Or is it? + +There happens to be some amazing open source software called [gphoto2][1]. Once installed, it allows you to control various supported cameras from your computer and it takes photos and videos. + +### Supported cameras + +First, find out whether yours is supported: + +``` +$ gphoto2 --list-cameras +``` + +### Capture an image + +You can take a picture with it: + +``` +$ gphoto2 --capture-image-and-download +``` + +The shutter activates, and the image is saved to your current working directory. + +### Capture video + +I sensed the potential here, so despite the aforementioned lack of video functionality on my camera, I decided to try `gphoto2 --capture-movie`. Somehow, although my camera does not support video natively, gphoto2 still manages to spit out an MJPEG file! + +On my camera, I need to put it in "live-view" mode before gphoto2 records video. This consists of setting the camera to portrait mode and then pressing the **Set** button so that the viewfinder is off and the camera screen displays an image. Unfortunately, though, this isn't enough to be able to use it as a webcam. It still needs to get assigned a video device, such as `/dev/video0`. + +### Install ffmpeg and v4l2loopback + +Not surprisingly, there's an open source solution to this problem. First, use your package manager to install `gphoto2`, `ffmpeg`, and `mpv`. For example, on Fedora, CentOS, Mageia, and similar: + +``` +$ sudo dnf install gphoto2 ffmpeg mpv +``` + +On Debian, Linux Mint, and similar: + +``` +$ sudo apt install gphoto2 ffmpeg mpv +``` + +I use NixOS, so here's my configuration: + +``` +# configuration.nix +... +environment.systemPackages = with pkgs; [ +  ffmpeg +  gphoto2 +  mpv +... +``` + +Creating a virtual video device requires the `v4l2loopback` Linux kernel module. At the time of this writing, that capability is not included in the mainline kernel, so you must download and compile it yourself: + +``` +$ git clone https://github.com/umlaeute/v4l2loopback +$ cd v4l2loopback +$ make +$ sudo make install +$ sudo depmod -a +``` + +If you're using NixOS like me, you can just add the extra module package in `configuration.nix`: + +``` +[...] +boot.extraModulePackages = with config.boot.kernelPackages; +[ v4l2loopback.out ]; +boot.kernelModules = [ +  "v4l2loopback" +]; +boot.extraModprobeConfig = '' +  options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" +''; +[...] +``` + +On NixOS, run `sudo nixos-rebuild switch` and then reboot. + +### Create a video device + +Assuming your computer currently has no `/dev/video` device, you can create one on demand thanks to the `v4l2loopback`. + +Run this command to send data from `gphoto2` to `ffmpeg`, using a device such as `/dev/video0` device: + +``` +$ gphoto2 --stdout --capture-movie | + ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -f v4l2 /dev/video0 +``` + +You get output like this: + +``` +ffmpeg version 4.4.1 Copyright (c) 2000-2021 the FFmpeg developers +  built with gcc 11.3.0 (GCC) +  configuration: --disable-static ... +  libavutil      56. 70.100 / 56. 70.100 +  libavcodec     58.134.100 / 58.134.100 +  libavformat    58. 76.100 / 58. 76.100 +  libavdevice    58. 13.100 / 58. 13.100 +  libavfilter     7.110.100 /  7.110.100 +  libavresample   4.  0.  0 /  4.  0.  0 +  libswscale      5.  9.100 /  5.  9.100 +  libswresample   3.  9.100 /  3.  9.100 +  libpostproc    55.  9.100 / 55.  9.100 +Capturing preview frames as movie to 'stdout'. Press Ctrl-C to abort.[mjpeg @ 0x1dd0380] Format mjpeg detected only with low score of 25, misdetection possible! +Input #0, mjpeg, from 'pipe:': +  Duration: N/A, bitrate: N/A +  Stream #0:0: Video: mjpeg (Baseline), yuvj422p(pc, bt470bg/unknown/unknown), 768x512 ... +Stream mapping: +  Stream #0:0 -> #0:0 (mjpeg (native) -> rawvideo (native))[swscaler @ 0x1e27340] deprecated pixel format used, make sure you did set range correctly +Output #0, video4linux2,v4l2, to '/dev/video0': +  Metadata: +    encoder         : Lavf58.76.100 +  Stream #0:0: Video: rawvideo (I420 / 0x30323449) ... +    Metadata: +      encoder         : Lavc58.134.100 rawvideoframe=  289 fps= 23 q=-0.0 size=N/A time=00:00:11.56 bitrate=N/A speed=0.907x +``` + +To see the video feed from your webcam, use `mpv`: + +``` +$ mpv av://v4l2:/dev/video0 --profile=low-latency --untimed +``` + +![Streaming a live feed from the webcam][2] + +### Start your webcam automatically + +It's a bit annoying to execute a command every time you want to use your webcam. Luckily, you can run this command automatically at startup. I implement it as a `systemd` service: + +``` +# configuration.nix +... +  systemd.services.webcam = { +    enable = true; +    script = '' +      ${pkgs.gphoto2}/bin/gphoto2 --stdout --capture-movie | +        ${pkgs.ffmpeg}/bin/ffmpeg -i - \ +            -vcodec rawvideo -pix_fmt yuv420p -f v4l2  /dev/video0 +    ''; +wantedBy = [ "multi-user.target" ]; +  }; +... +``` + +On NixOS, run `sudo nixos-rebuild switch` and then reboot your computer. Your webcam is on and active. + +To check for any problems, you can use `systemctl status webcam`. This tells you the last time the service was run and provides a log of its previous output. It's useful for debugging. + +### Iterating to make it better + +It's tempting to stop here. However, considering the current global crises, it may be pertinent to wonder whether it's necessary to have a webcam on all the time. It strikes me as sub-optimal for two reasons: + +- It's a waste of electricity. +- There are privacy concerns associated with this kind of thing. + +My camera has a lens cap, so to be honest, the second point doesn't really bother me. I can always put the lens cap on when I'm not using the webcam. However, leaving a big power-hungry DSLR camera on all day (not to mention the CPU overhead required for decoding the video) isn't doing anything for my electricity bill. + +The ideal scenario: + +- I leave my camera plugged in to my computer all the time but switched off. +- When I want to use the webcam, I switch on the camera with its power button. +- My computer detects the camera and starts the systemd service. +- After finishing with the webcam, I switch it off again. + +To achieve this, you need to use a custom [udev rule][3]. + +A udev rule tells your computer to perform a certain task when it discovers that a device has become available. This could be an external hard drive or even a non-USB device. In this case, you need it to [recognize the camera through its USB connection][4]. + +First, specify what command to run when the udev rule is triggered. You can do that as a shell script (`systemctl restart webcam` should work). I run NixOS, so I just create a derivation (a Nix package) that restarts the systemd service: + +``` +# start-webcam.nix +with import { }; +writeShellScriptBin "start-webcam" '' +  systemctl restart webcam +  # debugging example +  # echo "hello" &> /home/tom/myfile.txt +  # If myfile.txt gets created then we know the udev rule has triggered properly'' +``` + +Next, actually define the udev rule. Find the device and vendor ID of the camera. Do this by using the `lsusb` command. That command is likely already installed on your distribution, but I don't use it often, so I just install it as needed using `nix-shell`: + +``` +$ nix-shell -p usbutils +``` + +Whether you already have it on your computer or you've just installed it, run `lsusb`: + +``` +$ lsusb +Bus 002 Device 008: ID 04a9:317b Canon, Inc. Canon Digital Camera[...] +``` + +In this output, the vendor ID is 04a9 and the device ID is 317b. That's enough to create the udev rule: + +``` +ACTION=="add", SUBSYSTEM=="usb", +ATTR{idVendor}=="04a9", +ATTR{idProduct}=="317b", +RUN+="/usr/local/bin/start-webcam.sh" +``` + +Alternatively, if you're using NixOS: + +``` +# configuration.nix[...]let +  startWebcam = import ./start-webcam.nix;[...] +services.udev.extraRules = '' +  ACTION=="add",  \ +  SUBSYSTEM=="usb", \ +  ATTR{idVendor}=="04a9", \ +  ATTR{idProduct}=="317b",  \ +  RUN+="${startWebcam}/bin/start-webcam"'';[...] +``` + +Finally, remove the **wantedBy = ["multi-user.target"];** line in your `start-webcam` systemd service. (If you leave it, then the service starts automatically when you next reboot, whether the camera is switched on or not.) + +### Reuse old technology + +I hope this article has made you think twice before chucking some of your old tech. Linux can breathe life back into technology, whether it's your [computer][5] or something simple like a digital camera or some other peripheral. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/old-camera-webcam-linux + +作者:[Tom Oliver][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/tomoliver +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/20/7/gphoto2-linux +[2]: https://opensource.com/sites/default/files/2022-12/streaming-webcam.png +[3]: https://opensource.com/article/18/11/udev +[4]: https://opensource.com/article/22/1/cameras-usb-ports-obs +[5]: https://opensource.com/article/22/4/how-linux-saves-earth + diff --git a/sources/tech/20221219.2 ⭐️⭐️ Discover the power of the Linux SpaceFM file manager.md b/sources/tech/20221219.2 ⭐️⭐️ Discover the power of the Linux SpaceFM file manager.md new file mode 100644 index 0000000000..d12b5b3c11 --- /dev/null +++ b/sources/tech/20221219.2 ⭐️⭐️ Discover the power of the Linux SpaceFM file manager.md @@ -0,0 +1,93 @@ +[#]: subject: "Discover the power of the Linux SpaceFM file manager" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-spacefm" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Discover the power of the Linux SpaceFM file manager +====== + +SpaceFM is a tabbed file manager for Linux using the GTK toolkit, so it fits right in on desktops like [GNOME][1], [Mate][2], [Cinnamon][3], and others. SpaceFM also features a built-in device manager system, so it's particularly good for window managers, like [Fluxbox][4] or [fvwm][5], which typically don't include a graphical device manager. If you're happy with the file managers on Linux, but you want to try one that's a little bit different in design, SpaceFM is worth a look. + +### Install SpaceFM + +On Linux, you're likely to find **SpaceFM** in your distribution's software repository. On Fedora, Mageia, OpenMandriva, and similar: + +``` +$ sudo dnf install spacefm +``` + +On Debian and Debian-based systems: + +``` +$ sudo apt install spacefm +``` + +### Panels + +I don't know why SpaceFM is called SpaceFM, but it could be because it makes a concerted effort to let you use every bit of space in its window for something useful. By default, SpaceFM is actually pretty simple, standard-issue file manager. It has a single panel listing your files, a toolbar, and a menu bar. + +![SpaceFM is typical in design. At first.][6] + +All the "usual" rules apply. + +- **Double-click** to open a directory or to open a file in its default application. +- **Right-click** for a contextual menu providing lots of standard options (copy, paste, rename, view properties, create a new folder, and so on). + +The way SpaceFM sets itself apart, though, is its panel system. SpaceFM displays one panel by default. That's the big file window listing your files. But it can have up to four panel views, plus a few bonus panels for some specific tasks. + +### Opening a new panel + +Instead of seeing one directory in your file manager, you can see two. To bring up another directory in its own pane, press **Ctrl+2** or go to the **View** menu and select **Panel 2**. Alternatively, click the second green dot icon from the left in the menu panel. + +With two panels, you can move files from one directory to another without opening a new file manager window, or you can browse two directories to compare their contents. + +But why settle for two panels? Maybe you'd rather see _three_ directories at once. To bring up a third directory in a dedicated pane, press **Ctrl+3** or go to the **View** menu and select **Panel 3**. Alternatively, click the third green dot icon from the left in the menu panel. This panel appears at the bottom of the SpaceFM window. + +With three panels open, you can move files between several directories, or sort files from a common "dumping ground" (like your Desktop or Downloads folder) into specific directories. + +Of course, once you've tried three panels you'll probably find yourself itching for a fourth. To open a fourth directory in its own pane, press **Ctrl+4** or go to the **View** menu and select **Panel 4**. Alternatively, click the fourth green dot icon from the left in the menu panel. This one opens next to Panel 3, splitting your SpaceFM window into even quarters. + +![SpaceFM can have up to four panels.][7] + +What about a _fifth_ panel? Well, actually SpaceFM stops at four panels. If you really do want a fifth panel, you have to open a new SpaceFM window. However, there are still more panels, used for information other than file listings, to explore. + +### Special panels + +The **View** menu reveals that in addition to file panels, there are additionally task-specific panels you can choose to display. This includes: + +- **Task manager**: Lists ongoing file manager processes. This isn't a general-purpose task manager, so to set nice values or detect a zombie apocalypse of undead PIDs, [htop or top][8] is still your utility of choice. +- **Bookmarks**: Links to common folders, such as Desktop, Documents, Downloads, and any location you want to keep handy. +- **Devices**: USB thumb drives and remote file systems. +- **File tree**: A view of your file system in order of directory inheritance. + +These panels open on the left side of SpaceFM, but they do stack. You can have bookmarks, devices, tasks, and a file tree open at once, although it helps to have a very tall SpaceFM window. + +### Make space for SpaceFM + +SpaceFM is a configurable multi-tasking file manager. It maximizes the information you can build into a single window, and it lets you decide what's important, and when. This article has focused on the panels of SpaceFM because those are, at least in my view, the most unique aspect of the application. However, there's a lot more to SpaceFM, including plugins, preferences, a design mode, keyboard shortcuts, and customization. This isn't a small application, even though it is a lightweight one. Spend some time with SpaceFM, because you never know what you'll discover. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-spacefm + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/19/12/gnome-linux-desktop +[2]: https://opensource.com/article/19/12/mate-linux-desktop +[3]: https://opensource.com/article/19/12/cinnamon-linux-desktop +[4]: https://opensource.com/article/19/12/fluxbox-linux-desktop +[5]: https://opensource.com/article/19/12/fvwm-linux-desktop +[6]: https://opensource.com/sites/default/files/2022-10/spacefm.webp +[7]: https://opensource.com/sites/default/files/2022-10/spacefm-panels.webp +[8]: https://opensource.com/life/16/2/open-source-tools-system-monitoring diff --git a/sources/tech/20221219.3 ⭐️⭐️ Fedora Media Writer World-Class LIVE USB Creator [Tutorial].md b/sources/tech/20221219.3 ⭐️⭐️ Fedora Media Writer World-Class LIVE USB Creator [Tutorial].md new file mode 100644 index 0000000000..1446699a97 --- /dev/null +++ b/sources/tech/20221219.3 ⭐️⭐️ Fedora Media Writer World-Class LIVE USB Creator [Tutorial].md @@ -0,0 +1,136 @@ +[#]: subject: "Fedora Media Writer: World-Class LIVE USB Creator [Tutorial]" +[#]: via: "https://www.debugpoint.com/fedora-media-writer/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Fedora Media Writer: World-Class LIVE USB Creator [Tutorial] +====== + +**A tutorial on installing and using Fedora Media Writer to create LIVE USB from Linux & Windows.** + +![Fedora Media Writer][1] + +### Fedora Media Writer + +The community and Fedora Linux team develop and maintain the [Fedora Media Writer app][2]. This application writes any ISO image to your flash drive (USB stick). In addition, Fedora Media Writer also has features to download the ISO file directly from the Fedora Mirrors, provided you have a stable internet connection. + +Moreover, it gives you a list of options for download – such as Official Editions, Emerging Editions, Spins and Fedora Labs images. + +Not only that, but you can also use this nifty utility to write any other ISO images to your flash drive. It need not be the Fedora ISO always. + +Although there are other popular utilities available for creating LIVE USBs, such as [Etcher][3], Ventoy, and Rufus – you can still give this utility a try, considering the team develops it from mainstream Fedora Linux with contributors. + +So, in summary, here are quick feature highlights of Fedora Media Writer. + +#### Features Summary of Fedora Media Writer + +- Available for Linux, Windows and macOS +- Directly download + write the images to a USB flash drive +- Official Editions (Workstation, IoT, Server) download +- Emerging Editions (Silverblue, Kinoite) download +- Spins (KDE Plasma, Xfce, etc) +- Labs (Fedora Astronomy, Robotic and other flavours) +- Available as Flatpak for Linux Distros +- Also, can write any other ISO images (non-Fedora) to a USB stick. +- Ability to format USB stick, restore flash drive +- Based on Qt + +### How to Install + +#### Linux + +Fedora Media Writer is available as Flatpak for Linux Distributions. To install it in any Linux (such as Fedora, Ubuntu, or Linux Mint) – [set up Flatpak by following this guide][4]. + +Then, click on the below link to install. This will launch the official Software application of your Linux Distro (such as Discover, GNOME Software). After installation, you can launch it via Application Menu. + +[Install Fedora Media Writer as Flatpak][5] + +#### Windows + +If you are a Windows user and planning to migrate to Linux (or Fedora), it is a perfect tool. You need to download the exe installer from GitHub (link below) and follow the onscreen instruction for installation. + +[Latest Installer for Windows (exe)][6] + +After installation, you can launch it from Start Menu. + +For macOS, you can get the dmg file in the above link. + +### How to use Fedora Media Writer to Create LIVE USB in Linux + +The first screen gives you two main options. The automatic download option is for downloading the ISO images on the fly. And the second option is to write the already downloaded ISO files from your disk directly. + +If you have already plugged in the USB, you should see it as the third option. The third option is to format and delete all the data from your USB stick and restore it to its factory settings. + +Furthermore, you can use this utility for just formatting your USB flash drive as well. You do not need any command or anything fancy. A point to note is that this option is only visible when your USB stick has data. If it’s already formatted, the tool can detect it and won’t show you the option to restore it!! 😲 + +#### Automatic Download and Write + +![Fedora Media Writer - First Screen][7] + +The automatic Download option gives you the following screen to download any Fedora ISO you want from mirrors. This is useful for many because it eliminates the hassles of separately downloading ISO files, verifying checksum, etc. + +![The automatic download options gives you these options][8] + +After choosing the distribution, the final screen gives you the option for version (Fedora 36, 35, etc.) and architecture (x86, ARM, etc.). Also, you should see the USB destination. Click on Download and Write to start the process. + +![The final Write screen of Fedora Media Writer][9] + +#### Write an existing ISO file from the disk. + +When you choose the ‘select iso file’ option, you can select the file from your system. After that, select the destination USB drive and click Write to start the process. + +![Direct ISO write via Fedora Media Writer][10] + +![Writing is in progress][11] + +![Writing Complete][12] + +After the write operation is finished, you can see a confirmation message shown above. It took standard time to write a 3GB~ ISO during my test, around 3 to 4 minutes. + +### Using Fedora Media Writer to Create LIVE USB in Windows, macOS + +The steps are the same to use this utility in Windows and macOS, as shown above for Linux. You can easily find the shortcuts after installation and launch in the same way. + +![Running in Windows 11][13] + +### Closing Notes + +I hope this guide helps you use Fedora Media Writer for your day to day USB writing work. Also, the good thing about this utility is that you can use it for formatting/restoring your USB stick. You do not require GParted or GNOME Disks anymore. + +It’s such a terrific utility for Linux, Windows and macOS users. + +Cheers. + +[Next:How to Get Xfce 4.18 in Xubuntu 22.04 and 22.10][14] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/fedora-media-writer/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/05/fmwhead2022.jpg +[2]: https://github.com/FedoraQt/MediaWriter +[3]: https://www.debugpoint.com/2021/01/etcher-bootable-usb-linux/ +[4]: https://flatpak.org/setup/ +[5]: https://dl.flathub.org/repo/appstream/org.fedoraproject.MediaWriter.flatpakref +[6]: https://github.com/FedoraQt/MediaWriter/releases/latest +[7]: https://www.debugpoint.com/wp-content/uploads/2022/05/Fedora-Media-Writer-First-Screen.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2022/05/The-automatic-download-options-gives-you-these-options.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2022/05/The-final-Write-screen-of-Fedora-Media-Writer.jpg +[10]: https://www.debugpoint.com/wp-content/uploads/2022/05/Direct-ISO-write-via-Fedora-Media-Writer.jpg +[11]: https://www.debugpoint.com/wp-content/uploads/2022/05/Writing-is-in-progress.jpg +[12]: https://www.debugpoint.com/wp-content/uploads/2022/05/Writing-Complete.jpg +[13]: https://www.debugpoint.com/wp-content/uploads/2022/05/Running-in-Windows-11.png +[14]: https://www.debugpoint.com/xfce-4-18-xubuntu-22-04/ diff --git a/sources/tech/20221220.0 ⭐️⭐️ Writing a Macro in LibreOffice Calc Getting Started.md b/sources/tech/20221220.0 ⭐️⭐️ Writing a Macro in LibreOffice Calc Getting Started.md new file mode 100644 index 0000000000..9ae1c0d10f --- /dev/null +++ b/sources/tech/20221220.0 ⭐️⭐️ Writing a Macro in LibreOffice Calc Getting Started.md @@ -0,0 +1,144 @@ +[#]: subject: "Writing a Macro in LibreOffice Calc: Getting Started" +[#]: via: "https://www.debugpoint.com/writing-a-macro-in-libreoffice-calc-getting-started/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Writing a Macro in LibreOffice Calc: Getting Started +====== + +**Planning to automate stuff in LibreOffice? Start writing your first LibreOffice Calc macro using this guide.** + +LibreOffice provides a way to write your macro to automate various repetitive tasks in your office application. You can use Python or basic for your macro development. This tutorial focuses on writing a macro in LibreOffice with a ‘Hello World’ macro in the Basic programming language. + +### Write your first macro in LibreOffice Calc + +### Macro Objective + +We are going to create a macro that would put the string ‘Hello World’ in the first cell of LibreOffice calc, i.e. the cell of row 1 and col A. + +### Creating the Macro + +- Open LibreOffice Calc from `Applications => Office => LibreOffice Calc`. + +![LibreOffice_1][1] + +- Go to the option from the menu: `Tools ==> Macros ==> Organize Macros ==> LibreOffice Basic`. Below ‘LibreOffice basic macros’ window will open. + +![LibreOffice_2][2] + +- Give your desired name in the macro name box and click New. You can use any name you want. For this tutorial, I have used hello_world. + +![LibreOffice_3][3] + +- Once you have clicked the New button, the macro editor will open. Here are some things to note in this window. This is the place where you should be writing your code, debugging your code, etc. You can see the macro’s name became the function name of your basic macro. + +![LibreOffice_4][4] + +- Now, it’s time to code the first macro. Let’s declare two variables of type objects. + +``` +dim document as object dim dispatcher as object +``` + +- Let’s assign two values to the above variables. + +``` +document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") +``` + +`ThisComponent` refers to the current document. + +In LibreOffice, everything you do, e.g. type, colour, insert, is “watched” by a controller. The controller then dispatches the changes to the document frame, i.e. the main window area of the Calc. So the document variable refers to the main area of Calc. + +The `createUnoService` creates an instance of the `DispatchHelper` service. This service will help us to dispatch the tasks from the macro to the frame. Almost all LibreOffice macro tasks can be executed using the dispatcher. + +- Now we will declare an array of properties. Properties are always in a name/value pair. Thus the name contains the property name, and the value contains the value of that property. + +``` +dim args1(0) as new com.sun.star.beans.PropertyValue +``` + +Our objective is to put ‘Hello World’ in the first Cell. To point to the first cell A1 and put a text, we would use two properties – `ToPoint` and `StringName`. + +Once we set the properties, it’s time to call the dispatch to send these to the document. So call the `executeDispatch` event of the dispatcher using two commands: `.uno:GoToCell`, and `.uno:EnterString`. + +``` +dim args2(0) as new com.sun.star.beans.PropertyValueargs1(0).Name = "ToPoint" args1(0).Value = "$A$1" args2(0).Name = "StringName" args2(0).Value = "Hello World!" +``` + +These commands tell the frame what needs to be executed and also pass the entire property array with values. + +![LibreOffice_5][5] + +Now put a message box to notify when the execution is completed. + +### Running the Macro + +- It’s time to run the macro. To run the macro, press `F5` or click Run Macro from the toolbar (see above). +- After execution, the message box would pop up. If you go back and check the Calc spreadsheet, you should see ‘Hello World!’ written in the first Cell. + +![LibreOffice_6][6] + +![LibreOffice_7][7] + +### Complete Code + +``` +REM ***** BASIC ***** +sub hello_world + + dim document as object + dim dispatcher as object + + document = ThisComponent.CurrentController.Frame + dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") + + dim args1(0) as new com.sun.star.beans.PropertyValue + dim args2(0) as new com.sun.star.beans.PropertyValue + + args1(0).Name = "ToPoint" + args1(0).Value = "$A$1" + dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1()) + + args2(0).Name = "StringName" + args2(0).Value = "Hello World!" + dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2()) + + msgbox "Completed!" +end sub +``` + +### Looking for Something Else? + +If you are looking for more LibreOffice macro tutorials Or wants to learn more about it, please follow the below link for a complete Macro Tutorials Index: + +[Macro tutorial index][8] + +[Next:How to Find Out Ubuntu Version: 6 Methods][9] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/writing-a-macro-in-libreoffice-calc-getting-started/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2015/02/LibreOffice_1_p.png +[2]: https://www.debugpoint.com/wp-content/uploads/2015/02/LibreOffice_2_p.png +[3]: https://www.debugpoint.com/wp-content/uploads/2015/02/LibreOffice_3_p.png +[4]: https://www.debugpoint.com/wp-content/uploads/2015/02/LibreOffice_4_p.png +[5]: https://www.debugpoint.com/wp-content/uploads/2015/02/LibreOffice_5_p.png +[6]: https://www.debugpoint.com/wp-content/uploads/2014/09/LibreOffice_6.png +[7]: https://www.debugpoint.com/wp-content/uploads/2015/02/LibreOffice_7_p.png +[8]: http://www.debugpoint.com/libreoffice-basic-macro-tutorial-index/ +[9]: https://www.debugpoint.com/find-ubuntu-version/ diff --git a/sources/tech/20221220.2 ⭐️⭐️ How I use Artipie, a PyPI repo.md b/sources/tech/20221220.2 ⭐️⭐️ How I use Artipie, a PyPI repo.md new file mode 100644 index 0000000000..e79f8ab4fa --- /dev/null +++ b/sources/tech/20221220.2 ⭐️⭐️ How I use Artipie, a PyPI repo.md @@ -0,0 +1,218 @@ +[#]: subject: "How I use Artipie, a PyPI repo" +[#]: via: "https://opensource.com/article/22/12/python-package-index-repository-artipie" +[#]: author: "Alena Gerasimova https://opensource.com/users/olena" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How I use Artipie, a PyPI repo +====== + +While developing with Python as a student, I found that I needed some private centralized storage. This was so I could store binary and text data files, as well as Python packages. I found the answer in [Artipie][1], an open source self-hosted software repository manager. + +At university, my colleagues and I conducted research and worked with a lot of data from experimental measurements. I used Python to process and visualize them. My university colleagues at the time were mathematicians and didn't have experience with software development techniques. They usually just passed data and code on a flash drive or over email. My efforts to introduce them to a versioning system like [Git][2] were unsuccessful. + +### Python repository + +Artipie supports the [PyPI][3] repository, making it compatible with both [twine][4] and [pip][5]. This means you can work with the Artipie Python repository exactly as you would when installing or publishing packages on the [PyPI][3] and [TestPyPI][6] repositories. + +To create your own Python repository, you can use the hosted instance of Artipie called [Artipie Central][7]. Once you sign in, you see a page with your repositories listed (which is empty to begin with) and a form to add a new repository. Choose a name for your new repository (for example, `mypython`), select "Python" as the repository type, and then click the **Add** button. + +Next, you see a page with repository settings in the [YAML][8] format: + +``` +--- +​repo: + type: pypi + storage: default + permissions: + olenagerasimova: + - upload + "*": + - download +``` + +The `type` mapping in the configuration sets the repository type. In this example, the Python repository is configured with the default Artipie Central storage. + +The `storage` mapping defines where all of the repository packages are stored. This can be any file system or S3 storage compatible location. Artipie Central has a preconfigured `default` storage that can be used for tests by anyone. + +The `permissions` mapping allows uploads for the user `olenagerasimova`, and allows anyone to download any package. + +To make sure this repository exists and works, open the [index page][9] in your browser. The packages list is displayed. If you've just created a new repository but have yet to upload a package, then the repository index page is blank. + +### Binary repository + +You can store any kind of file in Artipie. The storage type is called file or binary, and I use this as storage for experimental data. I use this as input for Python visualizations. A file repository can be created in Artipie Central the same way as a Python repository. You give it a name, choose the type **binary**, and then click the **Add** button. + +``` +--- +​repo: +  type: file +  storage: default +  permissions: +    olenagerasimova: +      - upload +      - download +    "*": +      - download +``` + +The settings are basically the same as for Python. Only the repository type differs. The binary repository, in this example, is called `data`. It contains three text files with some numbers: + +``` +​6 +3.5 +5 +4 +4.5 +3 +2.7 +5 +6 +3 +1.2 +3.2 +6 +``` + +The other two files take the same form (only the numbers are different.) To see the files yourself, open the links [one][10], [two][11], and [three][12] in your browser and download the files, or you can perform a GET request using `httpie`: + +``` +​httpie -a https://central.artipie.com/olenagerasimova/data/y1.dat > ./data/y1.da +``` + +These files were uploaded to the Artipie Central `data` repository with PUT requests: + +``` +​httpie -a olenagerasimova:*** PUT +https://central.artipie.com/olenagerasimova/data/y1.dat @data/y1.dat + +httpie -a olenagerasimova:*** PUT +https://central.artipie.com/olenagerasimova/data/y2.dat @data/y2.dat + +httpie -a olenagerasimova:*** PUT +https://central.artipie.com/olenagerasimova/data/y3.dat @data/y3.dat +``` + +As this binary repository API is very simple (HTTP `PUT` and `GET`requests), it's easy to write a piece of code in any language to upload and download the required files. + +### Python project + +The source code of an example Python project is available from my [GitHub repository][13]. The main idea of the example is to download three data files from Artipie Central, read the numbers into arrays, and use these arrays to draw a plot. Use pip to install the example package and run it: + +``` +​$ python3 -m pip install --index-url \ +https://central.artipie.com/olenagerasimova/pypi/ \ +pypiexample +$ python3 -m pypiexample +``` + +By setting the `--index-url` to the Artipie Central Python repository, pip downloads the packages from it rather than the PyPi repository that serves as the usual default. After running the commands, a polar plot with three curves, a visualization of the data files is displayed. + +To publish the package to the Artipie Central repository, build it with and use twine to upload it: + +``` +commandline +$ python setup.py sdist bdist_wheel + +$ twine upload --repository-url \ +https://central.artipie.com/olenagerasimova/pypi +-u olenagerasimova -p *** dist/* +``` + +That's how easy it is to set up a `files` repositories in Artipie Central, create a sample Python project, publish, and install it. You don't have to use Artipie Central, though. Artipie can be self-hosted, so you can run a repository on your own local network. + +### Run Artipie as a container + +Running Artipie as a container makes setup as easy as installing either Podman or Docker. Assuming you have one of these installed, open a terminal: + +``` +​$ podman run -it -p 8080:8080 -p 8086:8086 artipie/artipie:latest +​ +``` + +This starts a new container running the latest Artipie version. It also maps two ports. Your repositories are served on port 8080. The Artipie Rest API and Swagger documentation are provided on port 8086. A new image generates a default configuration, printing a list of running repositories, test credentials, and a link to the [Swagger][14] documentation to your console. + +You can also use the Artipie Rest API to see existing repositories: + +- Go to the Swagger documentation page at `http://localhost:8086/api/index-org.html`**.** +- In the **Select a definition** list, choose **Auth token** +- Generate and copy the authentication token for the user artipie with the password artipie +- Switch to the **Repositories** definition and click the **Authorize** button, and then paste in the token + +![Image of the Swagger documentation page,][15] + +Perform a GET request for `/api/v1/repository/list`. In response, you receive a JSON list with three default repositories: + +``` +​[ + "artipie/my-bin", + "artipie/my-docker", + "artipie/my-maven" +] +``` + +The Python repository isn't included in the default configuration. You can correct that by performing a PUT request to `/api/v1/repository/{user}/{repo}` from the  Swagger interface. In this case, `user` is the name of the default user (`artipie`) and `repo` is the name of the new repository. You can call your new Python repository `my-pypi`. Here's an example request body, containing a JSON object with the repository settings: + +``` +​{ + "repo": { + "type": "pypi", + "storage": "default", + "permissions": { + "*": [ + "download" + ], + "artipie": [ + "upload" + ] + } + } +} +``` + +All the JSON fields are the same as when you create a repository in the dashboard in YAML format. The type of our repository is `pypi`, the default storage is used, and anyone can download but only the user `artipie` can upload. + +Make a GET request to `/api/v1/repository/list` again to make sure your repository was created. Now, you have four repositories: + +``` +​[ + "artipie/my-bin", + "artipie/my-docker", + "artipie/my-maven", + "artipie/my-pypi" +] +``` + +You've created your own Artipie installation, containing several repositories! The Artipie image can run both on a personal computer or on a remote server inside a private network. You can use it to exchange packages within a company, group, or university. It's an easy way to set up your own software services, and it's not just for Python. Take some time to explore Artipie and see what it can make possible for you. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/python-package-index-repository-artipie + +作者:[Alena Gerasimova][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/olena +[b]: https://github.com/lkxed +[1]: https://github.com/artipie +[2]: https://opensource.com/tags/git +[3]: https://pypi.org/ +[4]: https://github.com/pypa/twine +[5]: https://pip.pypa.io/en/stable/ +[6]: https://test.pypi.org/ +[7]: https://central.artipie.com/signin +[8]: https://www.redhat.com/sysadmin/yaml-beginners +[9]: https://central.artipie.com/olenagerasimova/pypi +[10]: https://central.artipie.com/olenagerasimova/data/y1.dat +[11]: https://central.artipie.com/olenagerasimova/data/y2.dat +[12]: https://central.artipie.com/olenagerasimova/data/y3.dat +[13]: https://github.com/artipie/pypi-example +[14]: https://swagger.io/ +[15]: https://opensource.com/sites/default/files/2022-11/artipie-swagger.png diff --git a/sources/tech/20221220.3 ⭐️⭐️ Explore the features of the Linux Double Commander file manager.md b/sources/tech/20221220.3 ⭐️⭐️ Explore the features of the Linux Double Commander file manager.md new file mode 100644 index 0000000000..94d236bf17 --- /dev/null +++ b/sources/tech/20221220.3 ⭐️⭐️ Explore the features of the Linux Double Commander file manager.md @@ -0,0 +1,99 @@ +[#]: subject: "Explore the features of the Linux Double Commander file manager" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-double-commander" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Explore the features of the Linux Double Commander file manager +====== + +Double Commander is a graphical dual-pane file manager for Linux, in the tradition of [Midnight Commander][1] (`mc`). While Midnight Commander (like the DOS application **Norton Commander** before it) has its fans, its audience is limited by the fact that it only runs in a terminal window. Not everyone wants to use a "flat" interface embedded in a terminal to browse their file system, and so Double Commander provides a similar interface in a way that feels familiar to many desktop users. + +![Image of Double Commander's 2 panel view.][2] + +### Install Double Commander + +To install Double Commander, visit its [website][3] and download [a package][4]. It's not packaged for a specific Linux distribution, so just download an archive for your CPU architecture. + +If you only want to try it out, you can unarchive it and then launch it from your Downloads folder. + +To install it permanently, unarchive the package, move it into a location [in your path][5], and then symlink `doublecmd` to the executable in the source directory: + +``` +$ tar xvf doublecmd*tar.xz +$ mv doublecmd ~/.local/bin/doublecmd-X.Y.Z +$ ln -s ~/.local/bin/doublecmd-X.Y.Z/doublecmd ~~/.local/bin/doublecmd +``` + +### How to start Double Commander + +To start Double Commander, use the command `doublecmd`. + +Alternatively, you can add an entry for Double Commander in your application menu. First, create the file `~/.local/share/applications/doublecmd.desktop` and enter this text into it: + +``` +[Desktop Entry]Encoding=UTF-8Name=doublecmdGenericName=Double CommanderComment=doublecmdExec=../bin/doublecmdIcon=/usr/share/icons//Adwaita/scalable/apps/system-file-manager-symbolic.svgTerminal=falseType=ApplicationCategories=System;FileTools;Utility;Core;GTK;FileManager; +``` + +Now Double Commander appears in your desktop application menu. Note that this does not make Double Commander your default file manager. It only adds it as an application you can launch when you want to. + +### Two panels + +Dual-panel file management is a tradition within a subset of file managers, and to some users it's a little unsettling. If you think about it, though, most file management tasks involve a _source_ location and a _destination_ location. You might be used to a workflow that goes something like this: + +- Open a file manager and find a file you want to move. +- Open another file manager window and navigate to the folder you want to move the file into. +- Drag and drop the file from one window to the other. + +You might use a variation of this involving, for instance, a right-click to copy combined with some navigation and another right-click to paste. Either way, the ingredients are the same. You locate the source, you locate the destination, and then you make the transfer. + +Given that common factor, it makes sense that a file manager like Double Command has a persistent view of the source location and the destination location. At the very least, it saves you from having to open another window. + +### Double Commander interface + +Once you get used to the idea of two concurrent views in your file system, there are a lot more features to discover in Double Commander. + +- **Menu bar**: At the top of the window is a menu bar. That's pretty standard conceptually, but the menu entries are probably unlike any menu bar you've seen before: **File**, **Mark**, **Commands**, **Network**, **Tabs**, and more. These are task-specific menus, which is great because you can ignore an entire submenu you don't use. +- **Toolbar**: Under the menu bar, there are buttons for common tasks such as opening a terminal, copying a file, synchronizing two directories, and more. +- **Locations**: The location bar is situated just under the toolbar. It lists devices and file system locations, including your boot partition, optical media drive, virtual shared locations, the root directory, your home directory (listed as `~`), and more. +- **File list**: Most of the Double Commander window is occupied by the dual panel view of your file system. +- **Command**: My favorite feature of Double Commander is the single command field below the file list pane. This allows you to enter an arbitrary command to run within the active pane. This is great for the odd command you need to run in a directory that _no_ file manager expects you to run, and so no file manager has a function for. It's the brute force method of the plugin model: Provide a command line and let users run what they need to run whenever they need to run it. +- **Functions**: Along the very bottom of the Double Commander window, as with Midnight Commander, there's a list of common functions, each assigned to a Function key on your keyboard. + +### Using Double Commander + +Using Double Commander is a lot like using any file manager, except that Double Commander is focused on groups of actions. For instance, the **File** menu isn't an obligatory entry with just **New Window** and **New Tab**, it's full of useful functions, like creating a symlink or hard link, changing attributes, comparing contents, bulk renaming, splitting and combining files, and more. Double Commander is direct. It gets straight to the point, serving as a stand-in for all the commands you'd normally run in a terminal. + +### Graphical command interface + +More than any other file manager I've seen, Double Commander feels like it's meant to be a graphical interface for commands. You can map almost everything in its interface to a command or series of commands you're used to running in a terminal. + +Of course, the question then is whether you need a graphical command line. Why not just run the commands in a terminal? Interestingly, I had the opportunity to witness the value of this recently. There are times, as a support person for other computer users, when trying to get a user to navigate the terminal can be overwhelming. This is particularly true when your user is texting on an app on their mobile phone, and you're giving them commands to type into a terminal on their desktop. This introduces several opportunities for mistakes, and what was meant to be "the fast way" of doing something ends up taking an hour. + +It's counter-intuitive to a terminal user, and it's not even always true, but there are times when a graphical interface really is easier to give instructions for. Picture it: A zombie apocalypse rages outside your compound, and the file permissions of a vital file need to be changed in order to activate the firewall. "Open a terminal and type chmod a+x /usr/local/bin/foo…​no, that's `ch` as in _change_, `mod` as in _mode_ but without the _e_…​no, and then a space. Not between the `ch` and the `mod`, just after the `mod`. And then a space. It's `chmod` and _then_ a space. Not the word _space_, just press the spacebar. It's the really long key under your thumb…​" + +Or you could just say this: "Click on the file, now with that selected, go to the File menu up at the top and click on Change Attributes…​" + +Double Command's central feature is in its powerful features disguised as a non-threatening graphical file manager. Download and try it out for yourself. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-double-commander + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/22/12/linux-file-manager-midnight-commander +[2]: https://opensource.com/sites/default/files/2022-10/doublecmd-2panelview.png +[3]: https://doublecmd.sourceforge.io/ +[4]: https://github.com/doublecmd/doublecmd/releases +[5]: https://opensource.com/article/17/6/set-path-linux diff --git a/sources/tech/20221220.6 ⭐️ How to Update Pi-hole Easily.md b/sources/tech/20221220.6 ⭐️ How to Update Pi-hole Easily.md new file mode 100644 index 0000000000..a667eec761 --- /dev/null +++ b/sources/tech/20221220.6 ⭐️ How to Update Pi-hole Easily.md @@ -0,0 +1,177 @@ +[#]: subject: "How to Update Pi-hole Easily" +[#]: via: "https://itsfoss.com/update-pi-hole/" +[#]: author: "Abhishek Prakash https://itsfoss.com/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to Update Pi-hole Easily +====== + +Pi-hole is one of the most effective ad-blockers available for you to use. You can install it on your router or a dedicated system and get an ad-free experience for all the devices connected through it. + +In an earlier article, I discussed the [steps for installing Pi-hole][1]. But you must update it regularly to win the cat-and-mouse game between ad blockers and ad providers (Google, Facebook, etc). Another aspect is to patch a security vulnerability that might affect you negatively. + +The update method depends on the installation method. To recall, I discussed two methods: + +- **Method 1**: The existing Pi-hole installation was conducted using a script. The script was `curl -sSL https://install.pi-hole.net | bash` (or something similar). +- **Method 2**: You installed Pi-hole using either Podman or Docker as a container. + +I will cover how to update Pi-hole with both of these methods. + +### Method 1: Updating Pi-hole that was installed by a script + +You will not believe how easy this is. All you have to do is run the following command in your terminal! + +``` +pihole -up +``` + +Of course, you have to run this command on the device where you have installed Pi-hole. In other words, you may have to [SSH into your Raspberry Pi][2] or router to run the above-mentioned command. + +Doing so will update Pi-hole. Below is the output of running the `pihole -up` command on my computer: + +``` +$ pihole -up + [✓] Update local cache of available packages + [i] Existing PHP installation detected : PHP version 8.1.2-1ubuntu2.8 + [✓] Checking for git + [✓] Checking for iproute2 + [✓] Checking for dialog + [✓] Checking for ca-certificates + + [i] Checking for updates... + [i] Pi-hole Core: up to date + [i] Web Interface: up to date + [i] FTL: up to date + + [✓] Everything is up to date! +``` + +💡Though I haven’t encountered this myself, it is still a possibility that Pi-hole might require updates for _other_ packages (like PHP) be installed. So try and run the update command that is applicable for your package manager on a regular basis. Keeping other packages up-to-date is _just as important_ ;) + +#### Optional: Automate Pi-hole update with cron job + +This says that everything is up to date. But how can a normal person remember to keep everything up to date? Fret not! We can create a cron job to automatically update Pi-hole every day. + +But before we edit the cron job, let us find the absolute path of the `pihole` command. This can be done either using the `which` command or the `command` command. You only need to run either one of the two commands listed below: + +``` +command -v pihole +which pihole +``` + +Executing either of the commands listed above will give you the absolute path to the `pihole` command. In my case, the absolute path for the `pihole` command is `/usr/local/bin/pihole`. + +Next, we will edit the [cron job][3]. To edit cron jobs, type the following command in your terminal (please do **NOT** use `sudo`): + +``` +crontab -e +``` + +Doing so will open a file in either the `nano` editor or the `vim` editor. Next, _append_ the following lines to the currently opened file: + +``` +0 1 * * * /usr/local/bin/pihole -up +``` + +All you need to do now is to save and exit the editor. + +What we just did was that we made updating Pi-hole an automatic task. This will automatically run the `pihole up` command at 01:00 hours, every day. + +### Method 2: Update Pi-hole that was installed via Podman or Docker + +If you installed Pi-hole using either Podman or Docker, all you can do initially is to pull the image. + +⚠️ If you used a `docker-compose.yml` file to create your container, please have it handy because we need to delete the current container and create a new one. (No data or configuration will be changed if volumes are backed up properly or if bind mounts were used.) + +#### Step 1: Check if a newer image is available + +To check for updates, you can run either of the following commands based on what you use: + +``` +# command for Podman users +podman pull docker.io/pihole/pihole:latest + +# command for Docker users +docker pull docker.io/pihole/pihole:latest +``` + +If there is a newer version of the image, it will be fetched. If a newer version is not available, nothing extra will happen and you should try again later. + +#### Step 2: Stop and remove the container + +If a new image was downloaded, we can proceed further. Our next step should be to restart the container. To know which container to restart, we can check the output of the `docker ps` or `podman ps` command. + +``` +$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +73528d5ca4e8 docker.io/pihole/pihole:latest 14 hours ago Up 14 hours ago 53/tcp pihole-aditi +``` + +This shows that I have a container named `pihole-aditi`. Let’s stop and remove this container. This can be done with the following commands: + +``` +# command for Podman users +podman stop pihole-aditi +docker rm pihole-aditi + +# command for Docker users +docker stop pihole-aditi +docker rm pihole-aditi +``` + +#### Step 4: Create a new container + +I hope you took my warning seriously and have your `docker-compose.yml` file handy ;) + +Let’s re-create a new container. You can re-create your container using the following command: + +``` +docker-compose up -d +``` + +Please verify that the Pi-hole container is up and running using either the `podman ps` command or the `docker ps` command. + +#### Step 5: Remove old image(s) + +Once the Pi-hole container starts up with the updated image, we can remove the old image and free up disk, space. + +To remove **all the _unused_ images**, use the following command: + +``` +# command for Podman users +podman image prune + +# command for Docker users +docker image prune +``` + +Upon running the above command, **all the _unused_** **images** will be removed. **Please take caution with this command.** + +Done! That was all that we needed to do to update our Pi-hole container. + +### Conclusion + +This article goes over the two methods of updating Pi-hole based on the installation method initially used. I have also discussed setting up auto-updates for Pi-hole which was installed using the official script. There is no such option for the container method, unfortunately. + +Do let me know if you face any issues. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/update-pi-hole/ + +作者:[Abhishek Prakash][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/ +[b]: https://github.com/lkxed +[1]: https://itsfoss.com/setup-pi-hole/ +[2]: https://itsfoss.com/ssh-into-raspberry/ +[3]: https://itsfoss.com/cron-job/ diff --git a/sources/tech/20221221.0 ⭐️⭐️ EndeavourOS Your Search for Perfect Arch Distro Ends Here.md b/sources/tech/20221221.0 ⭐️⭐️ EndeavourOS Your Search for Perfect Arch Distro Ends Here.md new file mode 100644 index 0000000000..dddfcdca15 --- /dev/null +++ b/sources/tech/20221221.0 ⭐️⭐️ EndeavourOS Your Search for Perfect Arch Distro Ends Here.md @@ -0,0 +1,134 @@ +[#]: subject: "EndeavourOS: Your Search for Perfect Arch Distro Ends Here" +[#]: via: "https://www.debugpoint.com/endeavouros-review/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +EndeavourOS: Your Search for Perfect Arch Distro Ends Here +====== + +**We review the recent release of EndeavourOS “Cassini” and the distro overall.** + +Hundreds of Linux distributions pop up every year by individuals and small teams. They are mostly the direct derivatives of Debian, Ubuntu, Fedora or Arch Linux – with a few customizations. And no wonder majority of them die every year due to a lack of contributions, vision and persistence. + +Three years back, a small team of contributors started EndeavourOS to continue the discontinued Antergos project. And since then, it has become popular because of its simplicity of installation, user experience and features. + +![EndeavourOS with Xfce desktop][1] + +### EndeavourOS Review + +A lot went into developing the distribution, which is quite evident if you have ever tried it out. The motto of this distro is to be a “general purpose” Arch Linux distribution for the masses, discarding the Arch Linux installation fear for new users and the superiority of using Arch. + +If you ever tried EndeavourOS, you must have “felt” how “easy” things are to perform on a desktop for the end user, being an Arch distro. + +#### Installation and desktop options to choose from + +The installation is made super easy with the “one and only” Calamares installer. On top of that EndeavourOS team gave extra caution to provide you with most of the options during the installation steps. For example, the LIVE medium boots up directly without user intervention. And it launches the welcome screen. The welcome screen greets you with all the necessary options to install it in your system. + +![EndeavourOS Welcome Screen][2] + +By default, the ISO provides a lightweight Xfce desktop. However, EndeavourOS also provides you with all the desktop environments and window managers (the major ones – see below). And they are all tested to work fine. If you are connected to the internet during installation – you can install these via the Calamares installer. That means you do not need to reinstall them after the base Xfce setup. + +Furthermore, if you are a power user and want just a basic Arch Linux to install without any desktop – then that’s also possible. Just use the “No desktop” option during installation! + +Although Arch Linux recently created an automated script archinstall to make the installation easier, still faster and easier to get a base Arch Install via the EndeavourOS ISO. + +![EndeavourOS installer showing no desktop and other options][3] + +Furthermore, you have the option to choose between three options: GRUB, systemd-boot or “no bootloader” – this is one of the highlight features of the EndeavourOS “Cassini” release. In addition, you can also choose the packages you want to install (online mode only). For example, you might need a basic system to start with. Or, you might want to install some apps related to video/audio or development work. All of these you can select in this version. + +The installation is smooth and finished by detecting the other operating systems in my test machine. In this “Cassini” release, the team also swapped the mkinitcpio with [dracut][4] for better performance and less failure on boot-related issues. + +#### Flagship “Xfce” flavoured desktop experience + +After the first login, you are again greeted with the Welcome app with a list of items which you can do “after install”. A very thoughtful addition from the devs. This includes initial tasks of changing wallpaper, updating Arch mirrors, installing NVIDIA drivers, and more. Many Linux distributions bring a Welcome app, but this app is a complete package, IMO. + +![After install items in Welcome app][5] + +The default look is the best-customized Xfce desktop you can get. It has been customized to be presented as a well-looking distro, far from what default Xfce actually brings in. This includes the GRUB menu, login screen and desktop. + +The main Xfce menu is configured with more items, and the terminal is a little transparent and uses the Qogir icon theme. All of these changes are complemented with stunning wallpapers and Arc-Darker default Xfce theme. + +![EndeavourOS Cassini Desktop with Xfce 4.18][6] + +#### Performance + +The performance of Arch Linux is always better, despite the desktop environment. It always feels faster because it doesn’t bring bloated within. On top of that, the [Xfce desktop 4.18][7] brings in additional performance optimization in the “Cassini” release, which you can feel while browsing through the desktop. + +At idle, it uses around 700MB of memory and CPU at an average of 4%. This is the baseline. The resource usage may increase based on the number of apps you open. In my earlier reviews of EndeavourOS, the performance is always similar. + +Not only that, it uses only 4GB of disk space for the default Xfce installation. However, you may need to install additional heavy software such as LibreOffice, GIMP, or KDenlive, which would take more disk space. + +![EndeavourOS performance Cassini][8] + +#### How easy is it to perform day-to-day tasks in EndeavourOS + +One of the great features of EndeavourOS is some of the python-based GUI tools which make your life easy in Arch Linux. For example, you get notifications for updates from Arch and EndeavourOS repo, one-click software installation from AUR, and update mirrors and your system with one single click. You do not need to run any commands from the terminal. This is a big help for new users of Arch Linux. + +![One click installation of software][9] + +![Package cleaner and update manager][10] + +#### A unique way of handling the rolling release towards stability + +Arch Linux being a rolling release distro, tend to break things. For example, some systems may break during the monthly Kernel refresh of the Arch main repo. Due to its popularity and the developers’ proactiveness, you get notifications and a workaround related to the problem if things break. + +The recent GRUB issue in Arch Linux, which caused massive boot problems for users, is really [handled well][11] by the EndeavourOS team through proper communication to the users with a workaround. + +Hence, you are not really lost if you end up with an unstable system. + +In addition, the pacman configuration is customized with EndeavourOS-selected mirrors to ensure your experience is flawless. + +#### Official support for open-source hardware and ARM + +In this EndeavourOS “Cassini” release, the official support for Pinebook Pro laptops arrives. The team worked on top of Manjaro packages with the Pine64 team to provide exclusive Arch packages for you so that the laptop works out of the box. In addition, EndeavourOS ARM images are also available to download for Raspberry Pi 4. + +#### Community help + +One of the greatest benefits of EndeavourOS is community help – which is instant! This is mostly for its dedicated [Telegram channel][12], where you get responses to your any EndeavourOS problems within minutes. I have been to the channel, and the mods/contributors are friendly and helpful. + +Furthermore, you can also get help from the official forum and other social channels. + +### Wrapping Up + +While closing this EndeavourOS review of the [“Cassini” release,][13] I would say it’s one of the best-built distros and well-organized. The developers and the team have a clear roadmap to build a general-purpose Arch Linux distro. Also, the vision is clear with the ARM and Pinebook Pro supports and other initiatives. + +To summarise, a perfect distro for everyone who wants a longer-running, stable system in Arch Linux. + +You can download EndeavourOS from the [official website][14]. + +Cheers. + +[Next:Linux Mint Upgrade Tool: Usage Guide][15] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/endeavouros-review/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/12/Xubuntu-22.04-with-Xfce-4.18-Desktop-2.jpg +[2]: https://www.debugpoint.com/wp-content/uploads/2022/12/EndeavourOS-Welcome-Screen.jpg +[3]: https://www.debugpoint.com/wp-content/uploads/2022/12/EndeavourOS-installer-showing-22no-desktop22-and-other-options.jpg +[4]: https://wiki.archlinux.org/title/Dracut +[5]: https://www.debugpoint.com/wp-content/uploads/2022/12/After-install-items-in-Welcome-app.jpg +[6]: https://www.debugpoint.com/wp-content/uploads/2022/12/EndeavourOS-22Cassini22-Desktop-with-Xfce-4.18.jpg +[7]: https://www.debugpoint.com/xfce-4-18-features/ +[8]: https://www.debugpoint.com/wp-content/uploads/2022/12/EndeavourOS-performance-22Cassini22.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2022/12/One-click-installation-of-software.jpg +[10]: https://www.debugpoint.com/wp-content/uploads/2022/12/Package-cleaner-and-update-manager.jpg +[11]: https://endeavouros.com/news/full-transparency-on-the-grub-issue/ +[12]: https://endeavouros.com/community/ +[13]: https://endeavouros.com/news/cassini-packed-with-new-features-is-here/ +[14]: https://endeavouros.com/download/ +[15]: https://www.debugpoint.com/mint-upgrade-tool/ diff --git a/sources/tech/20221221.1 ⭐️ Debugging LibreOffice Basic Macro using Breakpoint and Watch.md b/sources/tech/20221221.1 ⭐️ Debugging LibreOffice Basic Macro using Breakpoint and Watch.md new file mode 100644 index 0000000000..89ec7eaf19 --- /dev/null +++ b/sources/tech/20221221.1 ⭐️ Debugging LibreOffice Basic Macro using Breakpoint and Watch.md @@ -0,0 +1,118 @@ +[#]: subject: "Debugging LibreOffice Basic Macro using Breakpoint and Watch" +[#]: via: "https://www.debugpoint.com/debugging-libreoffice-macro-basic-using-breakpoint-and-watch/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Debugging LibreOffice Basic Macro using Breakpoint and Watch +====== + +**A simple guide for you to learn how to debug LibreOffice basic macro using breakpoint and watch.** + +While writing complex macros to automate various tasks in LibreOffice, you definitely encounter errors. Some run-time errors are self-explanatory. But some of them are very generic. To debug those, you need to carefully put breakpoints and step through the code to see where the problem is in your code. + +Hence this tutorial. These techniques apply to all the macros written in Calc, Writer or Impress. And should be applied to OpenOffice macros as well. + +### Debug a LibreOffice Macro written in Basic + +It’s easier to demonstrate this concept using an example. + +#### Define + +Let’s define three variables which we would use for our exercise. + +``` +dim i, j, cnt +``` + +Define a `for` loop, which would execute from 1 to 10. Inside the loop, increment two variables as below. This is just for just this demo; however, you can put any logic you want. + +``` +for cnt = 1 to 10 + i = i + 1 + j = i + 1 +next cnt +``` + +#### Adding Breakpoint + +Now, we want to put two breakpoints in the statement `"for cnt = 1 to 10"` and `"j = i + 1"`. When you put a breakpoint inside your program, it runs in debug mode and holds the execution at the breakpoint. + +To put a breakpoint in a LibreOffice Basic macro, put the cursor in the statement. And then, press `F9` or press the below button from the toolbar. + +![Breakpoint toolbar button in LibreOffice Macro editor][1] + +Once you do that, you will see a red circle on the left side of the statement, which means a breakpoint has been added _to that statement_. See the below image. In addition, you can add multiple breakpoints as per your needs. + +![After adding breakpoints][2] + +If you want to remove a breakpoint from a statement, press `F9` again in the statement, OR you can `double-click` the red circle. + +#### Adding Watch + +Now, we would add a ‘watch’ to the variable `"cnt"`. + +When the program executes in debug mode, the watch helps monitor a variable’s value between program steps. To add a watch on `"cnt"`variable, select the variable and press `F7` or click the glass icon in the toolbar. + +![Watch button in the toolbar in LibreOffice Macro editor][3] + +Once you do that, you will see the variable added to the watch list at the bottom of the editor. + +![Watch section appears at the bottom of the editor][4] + +#### Execute by Step + +We are all set with tools. + +Run the program by pressing `F5`. As we already added breakpoints, you would see the execution halts at the first breakpoint with a little **yellow arrow**. + +![Execution halts at the breakpoint][5] + +Now you have two options. + +Press `F5` again to continue the execution of the program, and it will halt again at the next breakpoint.Press `F8` (step execution), which would execute step by step, and you can see the ‘watched’ variable `'cnt'` value is changing as below. + +Lets press `F8`. You can see the yellow arrow comes to the next statement, and the compiler waits. Now the fun part, if you take a closer look at the watch window, you can see the `'cnt'`variable’s value is 1. + +![Variable contents during execution][6] + +So this way, you can debug, add breakpoints and add watch any LibreOffice or OpenOffice macro using its editor. + +Furthermore, you can add many watch variables as you want and debug your program for successful execution. + +### Closing Notes + +Although the above example is specific to LibreOffice macros, the same concept applies to programming and debugging in general. I hope this article helps you to understand the basics of debugging, step execution and watch in programming and macros in LibreOffice. + +### Looking for Something Else? + +If you are looking for something else in LibreOffice macro tutorials Or wants to learn more about it, please follow the below link for the complete Macro Tutorials Index: + +[Macro Tutorial Index][7] + +[Next:How to Save and Open Tabs from Last Session in Web Browser][8] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/debugging-libreoffice-macro-basic-using-breakpoint-and-watch/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2014/09/LibreOffice_Debug_watch_BreakPoint_1.png +[2]: https://www.debugpoint.com/wp-content/uploads/2014/09/LibreOffice_Debug_watch_BreakPoint_2.png +[3]: https://www.debugpoint.com/wp-content/uploads/2014/09/LibreOffice_Debug_watch_BreakPoint_3.png +[4]: https://www.debugpoint.com/wp-content/uploads/2014/09/LibreOffice_Debug_watch_BreakPoint_4.png +[5]: https://www.debugpoint.com/wp-content/uploads/2014/09/LibreOffice_Debug_watch_BreakPoint_5.png +[6]: https://www.debugpoint.com/wp-content/uploads/2014/09/LibreOffice_Debug_watch_BreakPoint_6.png +[7]: http://www.debugpoint.com/libreoffice-basic-macro-tutorial-index/ +[8]: https://www.debugpoint.com/open-tabs-last-session-browser/ diff --git a/sources/tech/20221221.2 ⭐️⭐️ How to migrate your code from PHP 7.4 to 8.1.md b/sources/tech/20221221.2 ⭐️⭐️ How to migrate your code from PHP 7.4 to 8.1.md new file mode 100644 index 0000000000..fe2f579bb3 --- /dev/null +++ b/sources/tech/20221221.2 ⭐️⭐️ How to migrate your code from PHP 7.4 to 8.1.md @@ -0,0 +1,160 @@ +[#]: subject: "How to migrate your code from PHP 7.4 to 8.1" +[#]: via: "https://opensource.com/article/22/12/migrate-php-code" +[#]: author: "Paul Gilzow https://opensource.com/users/gilzow" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +How to migrate your code from PHP 7.4 to 8.1 +====== + +The end-of-life (EOL) for [PHP 7.4][1] was Monday, November 28, 2022. If you’re like me, that date snuck up much faster than anticipated. While your PHP 7.4 code isn’t going to immediately stop working, you do need to begin making plans for the future of this codebase. + +### What are your options? + +You could continue to remain on PHP 7.4, but there are several benefits to updating. The biggest are security risk and support. As we move farther and farther away from the EOL date, attackers will turn their focus to PHP 7.4 knowing that any vulnerabilities they discover will go unpatched in the majority of systems. Staying on PHP 7.4 drastically increases the risk of your site being compromised in the future. In a similar vein, finding support for issues you encounter with PHP 7.4 will become increasingly more difficult. In addition, you will most likely begin to encounter compatibility issues with third-party code/packages as they update their code to be compatible with later versions and drop support for 7.4. You’ll also be missing out on significant speed and performance improvements [introduced in 8.0][2] and further [improved in 8.1][3]. But upgrading all that legacy code is daunting! + +### Where to start? + +Luckily, PHP provides an [official migration guide][4] from PHP 7.4 to 8.0 to get you started (and an [8.0 to 8.1 migration guide][5] as well). Be sure to read through the Backward Incompatible Changes and Deprecated Features sections. While these guides are incredibly handy, you may very well have tens of thousands of lines of code to check, some of which you may have inherited. Luckily there are some options to help pinpoint potential problem areas in the migration. + +#### PHPCodeSniffer + PHPCompatibility sniffs + +[PHPCodeSniffer][6] (PCS) is a package for syntax checking of PHP Code. It checks your code against a collection of defined rules (aka “sniffs”) referred to as “standards”. PHPCodeSniffer ships with a collection of standards you can use including PEAR, PSR1, PSR2, PSR12, Squiz, and Zend. Luckily, you can write your own collection of sniffs to define any set of rules you like. + +> PHPCompability has entered the chat + +[PHPCompatibility][7] “is a set of sniffs for PHP CodeSniffer that checks for PHP cross-version compatibility” allowing you to test your codebase for compatibility with different versions of PHP, including PHP 8.0 and 8.1. This means you can use PHPCodeSniffer to scan your codebase, applying the rules from PHPCompability to sniff out any incompatibilities with PHP 8.1 that might be present. + +### Before I continue… + +While PHP8.2 was released on [December 8, 2022][8], and I encourage you to begin looking over the [official 8.1 to 8.2 migration guide][9] and begin making plans to upgrade, most of the checkers I mention in this article have not completed full support for 8.2 at this time. For those reasons, I’ll be focusing on migrating the code to PHP8.1, and not 8.2. + +In the process of writing this article, I discovered PHPCompatiblity has a [known issue][10] when checking for compatibility with PHP 8.0/8.1 where it will report issues that should be **Errors** as **Warnings**. The only workaround for now is to use the `develop` branch for PHPCompatibility instead of `master`. While they state it is stable, please be aware that in this article, I’m using the non-stable branch. You may want to weigh the pros and cons of using the `develop` branch before implementing it anywhere else than in a local development environment. While I found PCS+PHPCompatibility to be the most straightforward and comprehensive solution for checking for incompatible code, if you do not want to use a non-stable version of PCS, see the section at the end of the article about alternative options. + +For the purposes of this article, I’ll be using the [1.4.6 version of SimpleSAMLphp][11] to test for incompatibilities. This is a six-year-old version of the code base. I do this not to pick on SimpleSAMLphp, but because I wanted something that would _definitely_ have some errors. As it turns out, all of the platform.sh code I tested, as well as my own code was already compatible with PHP8.1 and required no changes. + +### Get started + +To get started, first clone your codebase, and then create a new branch. You’ll now need to decide if you want to install the dependencies and run the scans on your local machine or in a local development environment using something like [DDEV][12], [Lando][13], or [Docksal][14]. In this demo, I’m using DDEV. I suggest using a local development environment vs running directly on your local machine because while it’s not required to use the version of PHP you want to test against, for the best results, it is recommended you do so. If you don’t have PHP installed, or don’t have the target version installed, a local development environment allows you to create an ephemeral environment with exactly what you need without changing your machine. + +After setting up your environment for PHP 8.1, at a terminal prompt (in my case, I’ve run `ddev start` and once the containers are available, shell into the web app using `ddev ssh`), you need to add these new packages so you use them to test with. I’ll be adding them with composer, however, there are [multiple][15][ways][16] to [install][17][them][18] if you would prefer to do so differently. If your codebase isn’t already using composer, you’ll need to do [composer init][19] before continuing. + +Because you'll be using the develop branch of PHPCompatibility there are a couple of extra steps to do that aren’t in the regular installation instructions. First is that the develop branch of PHPCompatibility requires an alpha version of `phpcsstandards/phpcsutils`. Because it is marked as alpha, you'll need to let composer know this one package is OK to install even though it is below your minimum stability requirements. + +`$ composer require --dev phpcsstandards/phpcsutils:"^1.0@dev"` + +Next, install PHPCompatibility targeting the `develop` branch + +`$ composer require --dev phpcompatibility/php-compatibility:dev-develop` + +The `develop` branch also installs `dealerdirect/phpcodesniffer-composer-installer` so you don’t need to add it manually or direct PCS to this new standard. + +To verify our new standards are installed, you'll have PCS display the standards it is aware of. + +``` +$ phpcs -i +The installed coding standards are MySource, PEAR, PSR1, PSR2, PSR12, Squiz, Zend, PHPCompatibility, PHPCS23Utils and PHPCSUtils +``` + +Now that you know your standards are available, you can have PCS scan our code. To instruct PCS to use a specific standard, use the `--standard` option and tell it to use `PHPCompatibility`. However, you also need to tell PHPCompatibility which PHP version you want to test against. For that, use PCS’ `--runtime-set` option and pass it the key `testVersion` and value of `8.1`. + +Before you start the scan, the one issue remaining is that code you want to scan is in the root of the project (`.`) but the `vendor` directly is also in the project root. You don’t want the code in `vendor` scanned, as those aren’t packages you necessarily control. PCS allows you to tell it to not scan files/directories with the `--ignore` option. Finally, you want to see the progress as PCS parses the file so you'll pass in the `-p` option. + +Putting it all together: + +`$ phpcs -p . --standard=PHPCompatibility --runtime-set testVersion 8.1 --ignore=*/vendor/*` + +This kicks off PCS which will output its progress as it scans through your project’s code. `W` indicates **Warnings**, and `E` indicates **Errors**. At the end of the scan it will output: a full report with the file containing the issue, the line number where the issue occurs, whether the issue is a **Warning** or an **Error**, and the specific issue discovered. + +In general, **Errors** are things that will cause a fatal error in PHP 8.1 and will need to be fixed before you can migrate. **Warnings** can be things that have been deprecated in 8.0/8.1 but not yet removed or issues that PCS ran into while trying to parse the file. + +![asciicast][20] + +Given that the report might be long, and is output all at once into your terminal, there are [numerous options][21] for changing the information that is included in the report, as well as multiple reporting formats. + +As you begin to fix your code, you can rerun the report as many times as needed. However, at some point, you’ll need to test the code on an actual PHP8.1 environment with real data. If you’re using [Platform.sh][22], which is as easy as creating a branch, changing a single line in your configuration file, and pushing that branch to us. You can check out [this video][23] to see how easy it is! + +### There’s too much to fix! + +Now that you have a solid idea of what needs to be updated before you can migrate, you might be facing an incredible amount of work ahead of you. Luckily, you have some options to help you out. PCS ships with a code fixer called [PHP Code Beautifier and Fixer][24] (`phpcbf`). Running phpcbf is almost identical to running phpcs and most of the options are identical. The other option is [Rector][25]. Usage of these tools is beyond the scope of this article, but as with any automation, you’ll want to test and verify before promoting changes to production. + +### Alternative options + +If for any reason you don’t feel comfortable using a non-stable version of PCS, you do have other options for checking your code. + +#### Phan + +Phan is a static code analyzer for PHP. It offers multiple levels of analysis and allows for incrementally strengthening that analysis. + +“Static analysis needs to be introduced slowly if you want to avoid your team losing their minds.” + +Phan doesn’t target just compatibility with newer versions, it can highlight areas of code that will error in later versions. However, there are some caveats when using Phan for checking compatibility: + +- Slower than PCS+PHPCompatibility. +- Phan requires the [ast php extension][26] which is not available by default on Platform.sh (or in DDEV). You’ll need to install it in your local development environment and add it to your php.ini file. Alternatively, you can use the `--allow-polyfill-parser` option, but it is considerably slower. +- Phan’s default reporting output isn’t as easy to read as other options +- I came across an issue where if your code base sets a different `vendor` directory via composer’s `[config:vendor-dir](https://getcomposer.org/doc/06-config.md#vendor-dir)` option, it will error out stating it can’t find certain files in the `vendor` directory +- As mentioned, Phan analyzes much more than just PHP8.1 compatibility. While certainly a strength in other situations, if your goal is to migrate from 7.4 to 8.1 as quickly as possible, you will have to parse through errors that are unrelated to version compatibility. +- Requires you run it on the PHP version you want to target + +#### PHPStan + +Similar to Phan, PHPStan is a static code analyzer for PHP that promises to “find bugs without writing tests.” And a similar set of caveats apply: + +- Slower than either PCS or Phan +- Analyzes much more than just PHP8.1 compatibility so depending on your current codebase, you will have to possibly parse through a bunch of errors that are unrelated to version compatibility +- Requires you run it on the PHP version you want to target + +#### PHP Parallel Lint + +A very fast PHP linter that can lint your codebase for issues, but can also check for deprecations. While it is exceptionally fast, it is only a linter, and therefore can only surface deprecations that are thrown at compile time, not at runtime. In my example code, it only found 2 deprecations vs the 960 deprecations PCS uncovered. + +### Summary + +Code migrations, while never fun, are crucial to minimizing organizational risk. Platform.sh gives you the flexibility to test your code using the same data and configurations as your production site, but in a siloed environment. Combine this with the tools above, and you have everything you need for a strong, efficient code migration. + +_This article originally published on the [Platform.sh community site][27] and has been republished with permission._ + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/migrate-php-code + +作者:[Paul Gilzow][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/gilzow +[b]: https://github.com/lkxed +[1]: https://www.php.net/eol.php +[2]: https://platform.sh/blog/2020/php-80-feature-focus-just-in-time-compilation +[3]: https://platform.sh/blog/2021/php-81-lays-new-ground-at-platformsh +[4]: https://www.php.net/manual/en/migration80.php +[5]: https://www.php.net/manual/en/migration81.php +[6]: https://github.com/squizlabs/PHP_CodeSniffer +[7]: https://github.com/PHPCompatibility/PHPCompatibility +[8]: https://www.php.net/archive/2022.php#2022-12-08-1 +[9]: https://www.php.net/manual/en/migration82.php +[10]: https://github.com/PHPCompatibility/PHPCompatibility/issues/1344 +[11]: https://github.com/simplesamlphp/simplesamlphp/releases/tag/v1.14.6 +[12]: https://opensource.com/article/22/12/ddev +[13]: https://lando.dev/ +[14]: https://docksal.io/ +[15]: https://github.com/squizlabs/PHP_CodeSniffer#phive +[16]: https://github.com/squizlabs/PHP_CodeSniffer#git-clone +[17]: https://github.com/squizlabs/PHP_CodeSniffer#installation +[18]: https://github.com/PHPCompatibility/PHPCompatibility#installation-via-a-git-check-out-to-an-arbitrary-directory-method-2 +[19]: https://getcomposer.org/doc/03-cli.md#init +[20]: https://asciinema.org/a/MGKsC3RkNaWMcGtJGiyMHorWy.svg +[21]: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Reporting +[22]: https://platform.sh/ +[23]: https://www.youtube.com/watch?v=mAb8DO7Jp0Q +[24]: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Fixing-Errors-Automatically#using-the-php-code-beautifier-and-fixer +[25]: https://github.com/rectorphp/rector +[26]: https://github.com/nikic/php-ast +[27]: https://community.platform.sh/t/migrating-php-7-4-code-to-8-1-on-platform-sh/1156 diff --git a/sources/tech/20221221.4 ⭐️⭐️ My 4 favorite features of the 4pane file manager on Linux.md b/sources/tech/20221221.4 ⭐️⭐️ My 4 favorite features of the 4pane file manager on Linux.md new file mode 100644 index 0000000000..f64399c4eb --- /dev/null +++ b/sources/tech/20221221.4 ⭐️⭐️ My 4 favorite features of the 4pane file manager on Linux.md @@ -0,0 +1,100 @@ +[#]: subject: "My 4 favorite features of the 4pane file manager on Linux" +[#]: via: "https://opensource.com/article/22/12/linux-file-manager-4pane" +[#]: author: "Seth Kenlon https://opensource.com/users/seth" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +My 4 favorite features of the 4pane file manager on Linux +====== + +4Pane is a multi-pane file manager for Linux that allows for customized layout, and provides quick access to traditional desktop conveniences as well as common Linux tools. 4Pane aims for speed over visual effects, and places the way you want to work above all else. In honor of its name, I've got a list of my four favorite features of this fine file manager. + +### 1. Flexible interface + +![The 4Pane file manager is a fast multi-pane application for managing files.][1] + +The most prominent feature of the 4Pane window is the same as its name: there are four panes in the window by default. In a way, though, there's actually only two, or said another way, each of the two panes is divided into two columns. The column on the left is a directory tree of your current location (home, by default.) Files are never displayed in the left column. It's only a directory tree. + +The adjacent column displays the contents of the selected directory. When you double-click on a file, it opens in its default application. When you double-click on a directory, that directory is revealed in the left column and the right column displays its contents. + +This same model is duplicated in the other window pane. + +4Pane only has 4 panes by default, but it doesn't enforce that view. If you're overwhelmed by the four-pane view, click on the **View** menu and select **Unsplit panes**. This displays just one pane of two columns. It's a simplified view compared to what's possible, but it's a nice place to start while you're getting used to the column-style for browsing files. + +#### Splitting panes + +The advantage of a split view is that you don't have to open another window to drag and drop a file or folder from one location to another. This isn't the predominant model for file managers, but it's a popular subset. 4Pane is one of the few, in my experience, that recognizes that it's not always convenient to work laterally. If you prefer to have your second pane at the bottom of the window, go to the **View** menu and select **Split panes horizontally** (meaning that the _split_ is horizontal, so the panes are situated vertically to one another). + +![You can create horizontal splits in 4Pane.][2] + +### 2. Tooltip preview + +One of my favorite features of 4Pane is the tooltip preview. To activate this, click the photo icon in the top toolbar. With this active, all you have to do is roll your mouse over a file to see a preview of its contents in a tooltip. It may not be a feature you want active all the time. The tooltips can be distracting when you're just browsing files. However, if you're looking for something specific or if you're just not sure exactly what's in a directory, a quick wave of your mouse to get an overview of the contents of several files is satisfyingly efficient. + +### 3. Menu + +The menu bar of 4Pane isn't quite like most file manager menu bars you may be accustomed to. There's a menu dedicated to archiving actions, mounting devices, and popular Linux commands such as [grep][3] and [find][4]. + +For instance, in the **Archive** menu, you can choose to extract an archive or compressed file, create a new archive, add a file to an existing archive, compress a file, and more. I love [Ark][5] and similar utilities, but I also recognize how useful it is for a file manager to make those utilities unnecessary. Especially when you're on an [old computer][6], the fewer applications you have to launch, the better. + +Also impressive are the built-in front ends for `grep` and `find`. I'll admit that I probably won't use it often myself, but I never complain when a developer brings the power of Linux commands to users who aren't [yet] familiar with the terminal. + +![4Pane can run grep and locate commands to help you find your data.][7] + +The `locate` front end is probably the most useful of the bunch. It's fast and effective. There's just one field in the dialogue box, so it makes a file system search _fast_. + +For example, say you're searching for the file `Zombie-Apocalypse-Plan-B.txt` because Plan A fell through, but in the heat of the moment (what with zombies knocking down your door, and all) you can't remember where you saved it. Go to the **Tools** menu and select **locate**. Type `zombie` in the search field, click the `-i` box so that your system ignores capitalization, and click **OK**. This returns both `Zombie-Apocalypse-Plan-A.txt` and `Zombie-Apocalypse-Plan-B.txt`. + +Maybe that's good enough for you, or maybe you need a little more precision. In addition to `-i` for case insensitivity, you can click the `-r` option to leverage the power of [regex][8]. Type `zombie.B.` to narrow your search to a file starting with `zombie` and containing the letter `B` somewhere in the filename. + +Effective and fast. + +### 4. Undo + +Finally, my (other) very favorite feature of 4pane is the **Undo** button. When you right click on a file or folder and select **Delete**, the item is sent to a secret location (it's not actually secret, but it's out of sight and out of mind). The item isn't scrubbed from the hard drive until you close the 4pane window. Up until then, you can always click the **Undo** button in the top toolbar to reverse decisions you've come to regret. + +This is a separate action from sending a file to your system trash, so it _is_ meant to masquerade as an actual delete action. The difference is that it's a delayed delete. That may not suit you. Some users are disciplined enough to send files to the system trash, but others skip the trash. This feature is designed to protect you from yourself by delaying deletion until you close the window. I find it a reasonable and invaluable feature, and it's the one feature that I've already benefited from several times. + +### Install 4Pane on Linux + +If you're sold on 4Pane, or at least curious about it, then you should install it and try it out! On Linux, your distribution may package 4Pane in its software repository. If so, you can use your package manager to install. For example, on Fedora, Mageia, OpenMandriva, and similar: + +``` +$ sudo dnf install 4pane +``` + +On Debian and Debian-based systems: + +``` +$ sudo apt install 4pane +``` + +If your distribution doesn't carry 4Pane, you can download it from [4pane.co.uk][9]. + +Once installed, launch 4Pane from your application menu. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/linux-file-manager-4pane + +作者:[Seth Kenlon][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/2022-10/4pane.webp +[2]: https://opensource.com/sites/default/files/2022-10/4pane-split-horizontally.webp +[3]: https://opensource.com/article/21/3/grep-cheat-sheet +[4]: https://opensource.com/article/18/4/how-use-find-linux +[5]: https://opensource.com/article/22/2/archives-files-linux-ark-kde +[6]: https://opensource.com/article/19/7/how-make-old-computer-useful-again +[7]: https://opensource.com/sites/default/files/2022-10/4pane-grep.webp +[8]: https://opensource.com/article/18/5/getting-started-regular-expressions +[9]: http://www.4pane.co.uk/ diff --git a/sources/tech/20221222.0 ⭐️⭐️ 11 New Distros to look forward to in 2023.md b/sources/tech/20221222.0 ⭐️⭐️ 11 New Distros to look forward to in 2023.md new file mode 100644 index 0000000000..1999c6f859 --- /dev/null +++ b/sources/tech/20221222.0 ⭐️⭐️ 11 New Distros to look forward to in 2023.md @@ -0,0 +1,258 @@ +[#]: subject: "11 New Distros to look forward to in 2023" +[#]: via: "https://news.itsfoss.com/new-distros-2023/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +11 New Distros to look forward to in 2023 +====== + +What are you looking forward to in 2023? Try these distros! + +![11 New Distros to look forward to in 2023][1] + +It's time to say goodbye to 2022! 📆 + +There were many distro releases in 2022, some more extraordinary than others. + +With the trend shifting towards focusing more on the user experience and performance side of things, Linux distributions have significantly evolved over the past year. + +As for you, the end-user, you now have several options. You can try some [beginner-friendly options][2] or [distros for advanced users][3]. + +Here, I focus on new options that you can give a try. These distros may not necessarily replace the popular distributions available. But if you want to try something new and different, feel free to go through the list. + +So, what can you expect in 2023? 🤔 + +Well, to answer that. Allow me to take you on a distro journey! + +> 💡 New distributions may not be suitable for production use cases. Try these options if you have no issues taking a leap of faith to experiment. + +### 1. Vanilla OS + +![vanilla os][4] + +Vanilla OS is an Ubuntu-based distro that is the brainchild of Mirko Brombin, the creator of [Bottles][5]. + +It aims to provide a **clean, vanilla GNOME experience with on-demand immutability** and an exceptional first-time setup experience. + +You can check it out if you want something new and want to try out the on-demand immutability features that make Vanilla OS so unique. + +It is yet to receive a stable release (soon) and is set to receive many improvements in 2023. + +[Vanilla OS][6] + +### 2. XeroLinux + +![xeroxlinux][7] + +Steve a.k.a. TechXero, started [XeroLinux][8] as a passion project that was not meant to be a mainstream distro with all the bells and whistles. + +An **'eye-candy' version of Arch Linux** offers a pleasant out-of-the-box experience with a few exciting features. + +You can try this if you want a more accessible Arch Linux experience. + +**From January 2023**, XeroLinux will be switching to a monthly release schedule. So, you can expect plenty of updates in 2023! + +[XeroLinux][9] + +### 3. Crystal Linux + +![crystal linux][10] + +Crystal Linux is an upcoming Arch-based distro that wants to **provide an easy-to-use desktop experience coupled with modern Linux technologies**. + +In its current form, it may not be welcoming to newcomers, and people with experience using Linux are likelier to like it. + +So, for now, I would suggest users who are already familiar with Linux give Crystal Linux a try. + +I expect Crystal Linux to have a stable release sometime in 2023 with many features and improvements over the [beta version][11] that is available right now. + +[Crystal Linux][12] + +#### Recommended Read 📖 + +### 4. TUXEDO OS + +![tuxedo os][13] + +[TUXEDO OS][14] is an Ubuntu-based offering from TUXEDO Computers, a Linux-focused hardware manufacturer. + +It features the KDE Plasma desktop environment with extras like **TUXEDO Control Center** to fine-tune your hardware and **TUXEDO Tomte**, a configuration service for resolving driver/missing package issues. + +I suggest you try this if you want a **different KDE-powered experience**. + +Initially, it was only made available as a pre-installed operating system on TUXEDO laptops and computers. + +But later, it received a general use release back in September 2022 dubbed as 'TUXEDO OS 1'. It is set to receive plenty of updates in 2023. + +[TUXEDO OS][15] + +### 5. EuroLinux + +![euro linux][16] + +An RHEL-based distro with **enterprise perks** is what [EuroLinux][17] is. It provides stability and security in a solid package. + +Based on **RHEL 9**, it can provide seamless compatibility with other [RHEL-based server distros][18] such as Rocky Linux, CentOS, AlmaLinux, and more. + +It aims to lure in Windows and macOS users with a familiar user interface layout with its implementation of a translucent dock at the bottom of the screen. + +You should try this because the overall package is quite adequate and can cater to both Linux and Windows/macOS users. + +It is now available as stable release, with updates planned for 2023. + +[EuroLinux Desktop][19] + +### 6. Zinc + +![zinc][20] + +[Zinc][21] is an **Ubuntu-based distro** that has been tweaked to provide a unique experience. Existing Ubuntu users may be surprised to see what it has to offer. + +Based on the latest LTS release of **Xubuntu**, it uses the XFCE desktop environment with numerous improvements, such as integrated Linux AppImage support, deb-get package installer, BTRFS as the default file system, and more. + +This distro can be a viable alternative to replace your daily driver, provided it is set up correctly. + +It follows a stable release model, so you can expect significant updates in 2023! + +[Zinc][21] + +### 7. CachyOS + +![cachyos][22] + +[CachyOS][23] tries to make **Arch Linux a beginner-friendly affair** that anyone can use. It is popular because of its high level of customizability and also because it has the newest software. + +It aims to provide you with a fast and secure operating system that is easy to use. + +This OS is for users who want to experiment and try something new. + +CachyOS is a rolling-release distro, so you can expect it to receive a ton of updates in 2023. + +[CachyOS][23] + +### 8. risiOS + +![risios][24] + +In a sea of Arch and Ubuntu-based Linux distros, [risiOS][25] is a rare sight to see. + +Based on Fedora Linux, the project saw its beginnings in Seattle, USA. + +It uses the **GNOME desktop environment** to provide users with a highly customizable experience with a **customized ZSH version**. + +If you want to try a Fedora-based distro, this can be something new for you! + +risiOS gets a stable release with minor updates pushed in between. It has much more to give in 2023. + +[risiOS][25] + +### 9. Exodia OS + +![exodia os][26] + +Another Arch-based Linux distro!#$**? + +Yes. 🤭 Well, it looks like this year, we have had enough of Arch-based distros, which is not necessarily bad! + +Meet [Exodia OS][27], an Arch-based Linux distro that aims to be highly customizable for users in cybersecurity fields. + +Its feature set includes pre-installed **tools for all cybersecurity fields, TUI Apps, ElKowars wacky widgets (EWW), zsh, and more**. + +If you are a cybersecurity expert or an enthusiast, you can give this a try! + +They offer three releases for different use cases. You can expect them to keep pushing essential updates and feature additions in 2023. + +[Exodia OS][27] + +### 10. Kumandar Linux + +![kumander linux][28] + +At first glance, you would think that it is Windows 7, but if you look closer, you will find that it is [Kumandar Linux][29]. + +It is based on **Debian 11 and uses a customized version of XFCE**. + +The name stands for 'Commander' in English and pays homage to the developer's first computer, the [Commodore VIC20][30]. + +If you liked the Windows 7 experience but wanted the same thing on Linux. Then you can give this a try! + +Currently, only the early-release candidate has been released. But you can expect a stable release in 2023, hopefully! + +[Kumander][29] + +### 11. Ubuntu Unity + +![ubuntu unity][31] + +Declared as an official flavor of Ubuntu [earlier this year][32], Ubuntu Unity is a remix of Ubuntu. + +It features the **Unity desktop interface** used in Ubuntu from 2010-2017, which was dropped in favor of GNOME. + +The development has been in full swing, with the young lead developer pushing updates and feature additions. + +Users who want to try a different flavor of Ubuntu can give this a shot. It offers both LTS and non-LTS releases. + +[Ubuntu Unity][33] + +**So, wrapping up.** + +Even with this comprehensive list, I may have missed out on some. 🤔 + +But. + +Maybe a surprise release will take the headlines in 2023, or some existing distro will try something different. + +Until then. + +_💬 Do tell me what distribution you are excited about in 2023?_ + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/new-distros-2023/ + +作者:[Sourav Rudra][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/distros-to-look-forward-in-2023.png +[2]: https://itsfoss.com/best-linux-beginners/ +[3]: https://itsfoss.com/advanced-linux-distros/ +[4]: https://news.itsfoss.com/content/images/2022/12/Vanilla-OS-1.png +[5]: https://usebottles.com +[6]: https://vanillaos.org +[7]: https://news.itsfoss.com/content/images/2022/12/XeroLinux.jpg +[8]: https://itsfoss.com/xerolinux/ +[9]: https://xerolinux.xyz +[10]: https://news.itsfoss.com/content/images/2022/12/Crystal-Linux.jpg +[11]: https://git.getcryst.al/crystal +[12]: https://getcryst.al +[13]: https://news.itsfoss.com/content/images/2022/12/TuxedoOS.jpg +[14]: https://news.itsfoss.com/tuxedo-os/ +[15]: https://www.tuxedocomputers.com/en/TUXEDO-OS_1.tuxedo +[16]: https://news.itsfoss.com/content/images/2022/12/EuroLinux.jpg +[17]: https://news.itsfoss.com/eurolinux-desktop/ +[18]: https://itsfoss.com/rhel-based-server-distributions/ +[19]: https://en.euro-linux.com/eurolinux/desktop/ +[20]: https://news.itsfoss.com/content/images/2022/12/Zinc.png +[21]: https://teejeetech.com/tag/zinc/ +[22]: https://news.itsfoss.com/content/images/2022/12/CachyOS.jpg +[23]: https://cachyos.org +[24]: https://news.itsfoss.com/content/images/2022/12/risiOS.png +[25]: https://risi.io +[26]: https://news.itsfoss.com/content/images/2022/12/Exodia-OS.jpg +[27]: https://exodia-os.github.io/exodia-website/ +[28]: https://news.itsfoss.com/content/images/2022/12/Kumander-Linux.jpg +[29]: https://www.kumander.org +[30]: https://en.wikipedia.org/wiki/VIC-20 +[31]: https://news.itsfoss.com/content/images/2022/12/UbuntuUnity.jpg +[32]: https://news.itsfoss.com/unity-remix-official-flavor/ +[33]: https://ubuntuunity.org/ diff --git a/sources/tech/20221227.1 ⭐️⭐️ oh my zsh and powerlevel10k A Match Made in Heaven.md b/sources/tech/20221227.1 ⭐️⭐️ oh my zsh and powerlevel10k A Match Made in Heaven.md new file mode 100644 index 0000000000..4972b6f039 --- /dev/null +++ b/sources/tech/20221227.1 ⭐️⭐️ oh my zsh and powerlevel10k A Match Made in Heaven.md @@ -0,0 +1,222 @@ +[#]: subject: "oh my zsh and powerlevel10k: A Match Made in Heaven" +[#]: via: "https://www.debugpoint.com/oh-my-zsh-powerlevel10k/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +oh my zsh and powerlevel10k: A Match Made in Heaven +====== + +**A quick and simple guide to transforming your zsh terminal shell with oh my zsh and powerlevel10k theme to make it look cool in Ubuntu and other Linux distros.** + +![][1] + +The default shell in most of the Linux distributions is bash. Bash is solid and a legacy utility. However, it lacks some customizations, such as nice colours, cursor support, etc. + +You can use another shell, zsh to enjoy additional tweaks and help you to extend your Bash shell experience. + +This crisp guide explains how to install zsh, oh my zsh and apply the powerlevel10k theme. + +### oh my zsh and powerlevel10k: Installation and configuration guide + +#### 1. Installing zsh and changing the shell + +Open a terminal and install zsh using the following command applicable to your distribution. + +**_Ubuntu, Debian, Linux Mint and all related distro_** + +``` +sudo apt install zsh +``` + +_**Fedora**_ + +``` +sudo dnf install zsh +``` + +**_Arch_** + +``` +pacman -S zsh +``` + +After installation is complete, find out the zsh install path + +``` +whereis zsh +``` + +Then change the shell using the zsh executable path for the current user. + +``` +chsh -s /usr/bin/zsh +``` + +![change the shell for the current user][2] + +Close and open the terminal again. And you should see the first-time setup for zsh. Select option 2. And it will change the look of your shell prompt with a default theme, as shown below. + +![first time setup for zsh][3] + +#### 2. Install oh my zsh + +The oh my zsh is a set of scripts to customize zsh further. + +Firstly, we will install oh my zsh script by downloading it from GitHub. It would be best if you had wget and git package for that. [Install wget][4] & git using the following command if it’s not installed. + +``` +sudo apt install wget +sudo apt install git +``` + +Then install oh my zsh using the following command. + +``` +sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" +``` + +And you should see the oh my zsh theme is applied with a default theme robbyrussell to your terminal. + +![Install oh my zsh and default theme][5] + +The Oh my zsh also comes with additional themes, and you can install them [using this guide][6]. However, in this tutorial, I will talk about a specific theme, i.e. powerlevel10k. + +#### 3. Install powerlevel10k theme for oh my zsh + +Open a terminal and run the following command to clone powerlevel10k repo from GitHub and put the files in the config folder of oh my zsh. + +``` +git clone https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k +``` + +Open the `~/.zshrc` file in a text editor and set the `ZSH_THEME` variable to `"powerlevel10k/powerlevel10k"`. + +``` +cd ~ +``` + +``` +nano .zshrc +``` + +By default, it should be robbyrussell. Remove “robbyrussell” and add the below `"powerlevel10k/powerlevel10k"`. + +Your `~/.zshrc` file should look something like this after the change: + +`ZSH_THEME="powerlevel10k/powerlevel10k"` + +Save and close the file (CTRL+O, ENTER and CTRL+X). + +![change oh my zsh theme to powerlevel10k][7] + +Restart your terminal to launch the first-time wizard to set up the powerlevel10k theme. + +#### 4. First time set up for powerleve10k + +When you launch the terminal after the installation, the powerlevel10k prompts you with various questions to understand your Linux distro setup. So, press the key as per your need to customize your terminal as per your taste. Some example screenshots of questions are below to give you some idea. + +![powerlevel10k - wizard1][8] + +![powerlevel10k - wizard 2][9] + +And finally, you can save the file to enjoy the new look of your terminal. + +![After applying settings in powerlevel10k zsh theme][10] + +If you want to restart the configuration wizard again, run the following. You can do it as many times as you want. + +``` +p10k configure +``` + +This concludes the basic setup. If you want more, follow along. + +### More configuration (advanced usage) + +#### 5. Installing dracula GNOME Terminal theme + +If you are using GNOME desktop with the native terminal, you can try the stunning drakula theme. To do that, open a terminal and run the following command to download the theme. + +``` +git clone https://github.com/dracula/gnome-terminalcd gnome-terminal +``` + +Open GNOME Terminal and go to preferences. Add a new profile by clicking on the [+] and name it “drakula”. Then go to colours tab and uncheck ‘use colors from system theme’ option. + +![create a new profile for terminal][11] + +Go back to the terminal and run the following. When prompted, select the profile name which you just created as above. + +``` +./install.sh +``` + +![applying the drakula theme for gnome terminal][12] + +Once the installation is complete, go back to preferences and mark the drakula profile as default. + +#### 6. Autocomplete and syntax highlighting for zsh + +There are two community-developed plugins available for zsh, which you may want to try out. They are zsh-autosuggestions and zsh-syntax-highlighting. + +Open a terminal and run the following to download zsh-autosuggestions and put it inside the plugin folder. + +``` +git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions +``` + +Similarly, run the following for the syntax highlighting plugin. + +``` +git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting +``` + +Open the ~/.zshrc file via a text editor (use the following command), and find the plugins=(git) line. And replace it with the following: + +``` +nano ~/.zshrc +``` + +``` +plugins=(git zsh-autosuggestions zsh-syntax-highlighting) +``` + +Save & close the file using CTRL+O, ENTER and CTRL+X. + +Close and open your terminal; now, you should be able to use the auto-suggestions and syntax highlighting. + +### Wrapping Up + +That’s it! You should now have “Oh My Zsh” and the Powerlevel10k theme installed on your system. You can customize the appearance and behaviour of the Powerlevel10k theme by customizing further as per your need. + +Cheers. + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/oh-my-zsh-powerlevel10k/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2022/12/ohp10k.jpg +[2]: https://www.debugpoint.com/wp-content/uploads/2022/12/change-the-shell-for-the-current-user.jpg +[3]: https://www.debugpoint.com/wp-content/uploads/2022/12/first-time-setup-for-zsh.jpg +[4]: https://www.debugpoint.com/wget-not-found-error/ +[5]: https://www.debugpoint.com/wp-content/uploads/2022/12/Install-oh-my-zsh-and-default-theme.jpg +[6]: https://www.debugpoint.com/install-use-zsh/ +[7]: https://www.debugpoint.com/wp-content/uploads/2022/12/change-oh-my-zsh-theme-to-powerlevel10k.jpg +[8]: https://www.debugpoint.com/wp-content/uploads/2022/12/powerlevel10k-wizard1.jpg +[9]: https://www.debugpoint.com/wp-content/uploads/2022/12/powerlevel10k-wizard-2.jpg +[10]: https://www.debugpoint.com/wp-content/uploads/2022/12/After-applying-settings-in-powerlevel10k-zsh-theme.jpg +[11]: https://www.debugpoint.com/wp-content/uploads/2022/12/create-a-new-profile-for-terminal.jpg +[12]: https://www.debugpoint.com/wp-content/uploads/2022/12/applying-the-drakula-theme-for-gnome-terminal.jpg diff --git a/sources/tech/20221228.1 ⭐️⭐️ 11 tips for writing a good Git commit message.md b/sources/tech/20221228.1 ⭐️⭐️ 11 tips for writing a good Git commit message.md new file mode 100644 index 0000000000..ae6acb59d1 --- /dev/null +++ b/sources/tech/20221228.1 ⭐️⭐️ 11 tips for writing a good Git commit message.md @@ -0,0 +1,185 @@ +[#]: subject: "11 tips for writing a good Git commit message" +[#]: via: "https://opensource.com/article/22/12/git-commit-message" +[#]: author: "AmyJune Hineline https://opensource.com/users/amyjune" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +11 tips for writing a good Git commit message +====== + +Lately, I have been paying closer attention to the changelogs I get from products and services when updates are needed. Here are some examples: + +- Fixed some bugs. +- Made some accessibility improvements. +- We've made improvements and fixed bugs for a smoother ride. + +When I think about some of the first commit messages I made as a junior developer I have to hang my head in dismay: + +- Pointed and clicked around a bit and now things seem to work. +- Did what programmer X told me to do and now the banner is blue. + +This can be frustrating! I asked our community of contributors the following questions: + +- What makes a good Git commit message? +- What makes a bad one? +- What rules do you think a project should have around what a commit message contains? + +Here are their answers: + +### Great writing is key + +As with anything you write, you should think about who is going to read it. Then adapt the amount and depth of information accordingly. + +Improving your natural language and writing skills is essential for a healthy career in software development. It's not just code that counts. + +**—[Camilla Conte][1]** + +### Be descriptive and don't assume + +I spend a lot of my time collaborating in the [OpenStack][2] community, and its code reviewers have some fairly exacting standards compared to what I see from other projects "in the wild." + +I'll often spend far longer composing a solid commit message than I do writing the actual code implementation or fix. Sometimes commit messages can end up many times longer than the diffs they're explaining. + +To summarize some of the contributor guidance: + +- Describe why a change is being made, not just what is changing +- The first commit line is the most important (like the subject line of an email) +- Don't assume reviewers understand the original problem you're fixing +- Don't assume the reviewer has access to external web services or the site (summarize defect reports and other relevant discussions) +- Don't assume the code is self-evident and self-documenting (though there is no need to repeat points you also make in your code comments) +- Don't include information only relevant to earlier revisions of the change (we expect contributors to squash revisions together and edit their commit messages accordingly). + +There's a brief section on the topic in the OpenStack Contributors Guide: [https://docs.openstack.org/contributors/common/git.html#commit-messages][3] + +**—[Jeremy Stanley][4]** + +### Your future self will thank you + +I cannot agree more with Jeremy. +1000 + +Jeremy said, "describe why a change is being made, not just what's changing." + +Imagine you're someone else, in a faraway future, trying to work out this commit. + +Put yourself in other people's shoes, as the old saying goes. + +**—[Leigh Morresi][5]** + +### Use the bug ID + +I recommend adding the bug ID at the start of the commit message so that it's easier to track the commits at a later stage using the [`grep` command][6]. + +For example: + +``` +$ git commit -m "BZ#19xxxxx +``` + +To come up with thoughtful commits, consider the following: + +- Why have I made these changes? +- What effect have my changes made? +- Why was the change needed? +- What are the changes in reference to? + +**—[Agil Antony][7]** + +### Tell the whole story + +I like to imagine there is a hidden prefix to every commit message that reads "By applying this." + +A good commit message includes exactly what will happen and why. It is insufficient to merely have the work ticket reference because that decentralizes the information; Git is decentralized. As a software developer, I want to know why the proposed changes are being considered. What specific problem is being addressed? What alternate solutions were considered (and discarded)? What unexpected things were discovered during the creation of the changeset that influenced the current content? + +There's no prize for shortest commit message. Your future self and future colleagues will appreciate you going into depth to explain the problem and why this changeset is the answer. Harness those cooking blogs where there's a five-paragraph life story. Here, however, make the problem the subject of the life story. + +**—[Lisa Seelye][8]** + +### But don't be overly verbose + +A good git commit message contains information about what was done, and nothing else. For instance, if you needed to update the .gitignore, just say "updated .gitignore." Folks can dive into the commit itself for more details. It doesn't need to be verbose. + +A bad commit message is something like, "oh crap" or "try this". Granted, I've been guilty of this, but it doesn't help anyone if they need to look at commits at a glance. + +Rules are very subjective. They can differ from lead to lead and team to team. But at the very least, give some contextual information about the commit. Especially if it's a large one. No one has time to skim through 1000+ files with a heavy change history. + +**—[Miriam Goldman][9]** + +### Use present tense + +I like project manager-styled commit messages written in present and not future terms (for example, "add" instead of "added"). However, it's usually only possible if commits are frequent. There's only so much "how did I do it" you can remember when you're faced with a deadline. Yet, well-written commits not only help collaborators, but are also helpful to the committer in recollecting history. + +**—[Chris Okpada][10]** + +### Don't rely on links + +One thing I like to remind colleagues of is that you're not just explaining to the people who are going to decide whether to approve your commit. You're also explaining to future developers and users who have found this commit in a bisect or blame operation and are trying to understand its relevance. + +If the only context supplied is a link to some external system, and that far in the future the system it links to is no longer in use or has otherwise become inaccessible to that individual, your commit message has been rendered useless and may just as well be blank. + +All too often, I go digging in the Git history of some open source project, and find commit messages which are nothing more than a bug ID or a link to some company's internal and private defect tracker. + +Don't be that project! + +**—[Jeremy Stanley][4]** + +### Clear and concise changelogs + +As a release communications manager, I often read the entire release board. I also met with developers to discuss any areas that weren't clear yet. Then I tested the release early. After that, I would write a release post by sourcing the changelogs and corresponding revised or new content. + +The changelogs are personal reminders for developers, but also have corresponding issues and tickets for them. You should capitalize product names appropriately, use a spell checker, be consistent with punctuation, and sentence structure. The lead developer should proofread these as well. Your customers, that are developers, are reading these. What information should they know before running the update to better serve their customers? + +**—[Courtney Robertson][11]** + +### Be specific + +As a frequent release manager, I like messages that name the component a commit touches, and a brief description of what was changed. Also having a reference back to where the request for this work came from helps to tie fixes together long after we forgot about your clever branch name. + +- "fix fatal error" is not ideal. +- "ISS-304: Fix fatal error in Login Access Control function for users + with the Partner role" is better. +- "ISS-304: Login Access Control: fix fatal error in getPartnerId()" is + better still. + +I can look at the entire relationship between a Git commit, branch, merge commit, and inspect the individual lines and files that were changed. But I don't have that kind of time in the middle of a release. I want to be able to relate back to the source of this work in the project management tool, have some idea of which components are being changed, and in what way. + +**—[Ryan Price][12]** + +### Make it a habit + +My favorite commit that I'm guilty of is, "commit before I switch branches" because I have to work on something else more urgent. Sometimes, I need to commit my current work to a totally different project. My manager's strategy is to have us work as we normally do. But then when we rebase, he wants us to squash commits where it makes sense and write better messages. I can't say we always do this, but his method does make sense. + +I have a lot of "this is broken don't know why" type messages too (haha) where I try things but want to commit that attempt before I try something else in case method A was closer to fixing the issue than method B. Writing code is a hot mess. And I've been writing it for over 10 years. + +**—[RachieVee][13]** + +What commit message advice or tips do you live by? Let us know in the comments. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/22/12/git-commit-message + +作者:[AmyJune Hineline][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/amyjune +[b]: https://github.com/lkxed +[1]: https://opensource.com/users/spotlesstofu +[2]: https://opensource.com/resources/what-is-openstack +[3]: https://docs.openstack.org/contributors/common/git.html#commit-messages +[4]: https://opensource.com/users/fungi +[5]: https://opensource.com/users/dgtlmoon +[6]: https://opensource.com/downloads/grep-cheat-sheet +[7]: https://opensource.com/users/agantony +[8]: https://opensource.com/users/lisa +[9]: https://opensource.com/users/miriamgoldman +[10]: https://opensource.com/users/ojchris +[11]: https://opensource.com/users/courtneyrdev +[12]: https://opensource.com/users/liberatr +[13]: https://opensource.com/users/rachievee diff --git a/sources/tech/20230102.1 ⭐️ who Command in Linux Explanation with Examples.md b/sources/tech/20230102.1 ⭐️ who Command in Linux Explanation with Examples.md new file mode 100644 index 0000000000..3f04e64f41 --- /dev/null +++ b/sources/tech/20230102.1 ⭐️ who Command in Linux Explanation with Examples.md @@ -0,0 +1,138 @@ +[#]: subject: "who Command in Linux: Explanation with Examples" +[#]: via: "https://www.debugpoint.com/who-command-linux/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +who Command in Linux: Explanation with Examples +====== + +**Here’s a beginner’s guide on understanding who command in Linux with several examples.** + +_This article is part of the [Linux command][1] learning series._ + +### who command + +The “who” command in Linux is used to display information about users who are currently logged in to the system. It shows the user’s login name, the terminal from which the user is logged in, the time at which the user logged in, and the remote hostname (if applicable). + +#### Syntax + +Here is the basic syntax for the “who” command: + +``` +who [OPTION]... [ FILE | ARG1 ARG2 ] +``` + +### Example of various who command and switches + +By default, “who” reads the file `/var/run/utmp`, which contains information about users who are currently logged in. If no options are specified, it displays each user’s login name, terminal, and time of login. + +``` +who +``` + +It gives the following output. As you can see it shows the login name=debugpoint, terminal id tty2 and the date and time of the login. + +``` +debugpoint tty2 2023-01-01 11:22 (tty2) +``` + +![who command - default example][2] + +However, if you run the above command in a guest virtual machine, you should see the same but the terminal id would be the x11 server display name i.e. :0. + +``` +❯ whodebugpoint :0 2023-01-01 23:36 (:0) +``` + +To show the username of the current user and information, use below: + +``` +whoami +``` + +View the last system boot time using the -b option: + +``` +❯ who -bsystem boot 2023-01-01 23:36 +``` + +Display the count of users logged in the current system: + +``` +❯ who -qdebugpointusers=1 +``` + +All the above command when paired with -H option, you get a better info with a header line, like below: + +``` +who -H + +NAME LINE TIME COMMENT +debugpoint tty2 2023-01-01 11:22 (tty2) +``` + +If you want to display all the information related to who command in Linux, use the option -a: + +``` +who -aH + +NAME LINE TIME IDLE PID COMMENT EXIT +system boot 2023-01-01 11:19 +run-level 5 2023-01-01 11:19 +debugpoint + tty2 2023-01-01 11:22 13:26 2042 (tty2) +``` + +As always, you can save the output of the who command to any file using the redirect as below: + +``` +who > user_details.txt +``` + +#### Example summary of who command options + +Here are some who command examples and their explanation: + +Here are some options that can be used with the “who” command: + +- `-a`: Display the hostname, time of login, and processes for each user +- `-b`: Display the time of the last system boot +- `-d`: Display dead processes (processes that have terminated but have not been removed from the utmp file) +- `-H`: Display a header line +- `-l`: Display login processes in long format +- `-m`: Display only the name and line of the user who is logged in on the terminal specified by `ARG1 ARG2` +- `-q`: Display a count of logged in users +- `-u`: Display information about users who have processes that are not detached +- `-w`: Display information about users who are logged in, in the same format as the utmp file + +### Closing Notes + +I hope this article helps you to understand who command and its basics. You can also read the [who man pages][3] to learn more. Let me know if you have any questions. + +**This article is part of the [Linux command][1] learning series**. + +[Next:How to Force Auto Dark Mode in Chrome and Chromium][4] + +[_Using Mastodon? Follow us at floss.social/@debugpoint_][5] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/who-command-linux/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/category/linux-commands +[2]: https://www.debugpoint.com/wp-content/uploads/2023/01/who-command-default-example.jpg +[3]: https://man7.org/linux/man-pages/man1/who.1.html +[4]: https://www.debugpoint.com/chrome-dark-mode/ +[5]: https://floss.social/@debugpoint diff --git a/sources/tech/20230102.2 ⭐️ Colorblind Filters GNOME Extension to help Colorblind Users.md b/sources/tech/20230102.2 ⭐️ Colorblind Filters GNOME Extension to help Colorblind Users.md new file mode 100644 index 0000000000..cd48adc303 --- /dev/null +++ b/sources/tech/20230102.2 ⭐️ Colorblind Filters GNOME Extension to help Colorblind Users.md @@ -0,0 +1,106 @@ +[#]: subject: "Colorblind Filters: GNOME Extension to help Colorblind Users" +[#]: via: "https://www.debugpoint.com/colorblind-filters-gnome-extension/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Colorblind Filters: GNOME Extension to help Colorblind Users +====== + +**A nice GNOME Extension – Colorblind Filters, brings many options for color-blind users.** + +Accessibility is a critical aspect of computing and operating systems. It includes well-managed settings for vision impairment, color blind and many other health symptoms. Popular Linux desktop environments such as GNOME and KDE Plasma feature accessibility settings to help all those scenarios. + +Thanks to the GNOME Extensions ecosystem, a huge number of specialised extensions are available to aid those users. One of the extensions I came across is [“Colorblind Filters”][1]. + +### Colorblind Filters – GNOME Extension + +As per Wikipedia, _“Colour blindness usually involves the inability to distinguish between shades of red and green. There is no treatment for inherited colour blindness. If colour blindness is caused by another condition, treating the underlying cause can help.”_. + +So, it’s important that you have options to tweak settings on your Linux desktop. + +#### Set up extensions and flatpak + +First, make sure you have Flatpak and GNOME Extensions enabled. And the Extensions manager is installed. You may refer to this detailed guide on how to [set up flatpak][2] & enable [GNOME extensions][3], Or run the following commands (for Ubuntu, Linux Mint, etc.) from the terminal. + +``` +sudo apt install flatpaksudo apt install gnome-software-plugin-flatpakflatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakreporeboot +``` + +Fedora users, use the below commands. + +``` +sudo dnf install flatpaksudo dnf install gnome-software-plugin-flatpakflatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakreporeboot +``` + +Once done, install the Extension Manager: + +``` +flatpak install com.mattjakeman.ExtensionManager +``` + +#### Install the Extension + +Open the extension manager from the application menu. Search for “colorblind”. And install the extension (see the below image). + +![Install the extension][4] + +After installation, you can see a small eye icon on the system tray. You can click on it to enable the pre-defined color filters. + +![Colorblind Filters extension tray icon][5] + +Right-click on the eye icon for more settings. This extension brings all the necessary customizations for colorblind collections, simulations and additional options. The following options are currently available: + +- Protanopia +- Deuteranopia +- Tritanopia + +- Corrections & Simulations (with high contrast) + +- Channel mixer for GBR and BRG +- Lightness inversion +- Color Inversion + +- Additional tweaks + +![Colorblind Filters - options][6] + +Use the one that suits you best for your eye. + +### Wrapping Up + +I think Apple’s macOS and iOS have implemented better accessibility than Windows or Linux. However, Linux Desktops are not far behind with these apps and extensions. Also, there are specialized Linux distributions such as “[Accessible Coconut][7]“, which has been built for specialized needs. + +I hope Colorblind gnome extension helps you with your day-to-day usage of Linux and GNOME desktops. + +Cheers. + +[Next:Top 10 Linux Distributions for Windows Users in 2023][8] + +[_Using Mastodon? Follow us at floss.social/@debugpoint_][9] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/colorblind-filters-gnome-extension/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://extensions.gnome.org/extension/5589/colorblind-filters/ +[2]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/ +[3]: https://www.debugpoint.com/how-to-install-and-use-gnome-shell-extensions-in-ubuntu/ +[4]: https://www.debugpoint.com/wp-content/uploads/2023/01/Install-the-extension.jpg +[5]: https://www.debugpoint.com/wp-content/uploads/2023/01/Colorblind-Filters-extension-tray-icon.gif +[6]: https://www.debugpoint.com/wp-content/uploads/2023/01/Colorblind-Filters-options.jpg +[7]: https://www.debugpoint.com/accessible-coconut-linux-visually-impaired/ +[8]: https://www.debugpoint.com/best-linux-distributions-windows/ +[9]: https://floss.social/@debugpoint diff --git a/sources/tech/20230103.1 ⭐️⭐️ Document with BookStack, an open source Confluence alternative.md b/sources/tech/20230103.1 ⭐️⭐️ Document with BookStack, an open source Confluence alternative.md new file mode 100644 index 0000000000..0b63928629 --- /dev/null +++ b/sources/tech/20230103.1 ⭐️⭐️ Document with BookStack, an open source Confluence alternative.md @@ -0,0 +1,98 @@ +[#]: subject: "Document with BookStack, an open source Confluence alternative" +[#]: via: "https://opensource.com/article/23/1/bookstack-open-source-documentation" +[#]: author: "Dan Brown https://opensource.com/users/ssddanbrown" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Document with BookStack, an open source Confluence alternative +====== + +BookStack is an open source, web-based documentation system, that allows you to create a structured knowledge store for personal, team, or company use. BookStack focuses on ease-of-use and design to provide an experience suitable for an audience with, potentially, mixed skills in technology. It's built upon the PHP framework Laravel, with MySQL or MariaDB used as a datastore. + +I built BookStack after attempting to find a documentation or wiki system for my workplace. [Confluence][1] was the closest option to suit my requirements but the user-based pricing introduced a barrier. The closed nature of Confluence also raised questions to the longevity of the documentation I'd be building. In the end, I decided to build my own platform to suit my needs. I released it under the MIT license to give back to the open source community that I'd come to love and benefit from over the years. + +### Content hierarchy and organization options + +To keep things familiar and intuitive, BookStack makes use of real-world book terms to describe its organization structure. Documentation content is created as a "Page": + +- Pages belong to a specific "Book". +- Within a Book, Pages can optionally be grouped up into "Chapters". +- As your documentation grows, you can then use "Shelves" to categorize Books, with Books being able to be part of multiple shelves if needed. + +This structure sits at the heart of BookStack, and can often be the love-it-or-hate-it deciding aspect of whether BookStack is suitable for your use case. + +Upon this core hierarchy, BookStack also provides tagging, user favorites, and advanced search capabilities to ensure content remains discoverable. + +### Writing documentation + +The primary method of writing documentation in BookStack is through the use of its what-you-see-is-what-you-get (WYSIWYG) editor, which makes use of the open source [Tiny][2] project. This editor provides a range of content formats including: + +- Various header levels +- Code blocks +- Collapsible blocks +- Tables +- Images +- Links +- iFrame embeds +- Alert callouts +- Bullet, numbered and tasks lists +- Drawings (through intregration with the open source [diagrams.net][3]) + +If you prefer [Markdown][4], you can use the built-in Markdown editor, which provides a live preview and supports the same feature set as the WYSIWYG editor. If permission allows, you can even jump between these editor options depending on the page you're editing. + +### How your data is stored + +Documentation is stored within a [MySQL or MariaDB][5] database in a relatively simple HTML format, in addition to the original Markdown content if Markdown was used. A lot of design and development decisions have been made to keep this HTML format simplistic. It uses plain standard HTML elements where possible, to ensure raw documentation content remains open and portable. + +Uploaded images, attachments, and created drawings are saved on the local filesystem but can optionally be stored in an s3-compatible datastore like the open source [MinIO][6]. + +To keep your content accessible, there are built-in options to export content as PDF, HTML, plain text, or Markdown. For external consumption, there's a HTTP REST API and a webhook system. In terms of extension, a "logical theme system" allows running of custom PHP code upon a wide range of system events. + +### Ready for business + +BookStack comes with a range of features to support business environments. Support for a range of authentication options are built-in, including SAML2, OpenID Connect, and LDAP allowing easy single-sign-on usage with platforms such as [KeyCloak][7]. MFA options are available and can be mandated based upon role. An audit log provides full visibility of modification activities across an instance. + +A full role-based permission system provides administrators full control over create, view, update, and delete actions of system content. This allows per-role system defaults, with options to set custom permissions on a per-hierarchy item basis. + +### A community of support + +After being active for over 7 years, the community for BookStack has grown with various avenues for discussion and support. We now have: + +- [Our documentation site][8] +- [Video guides on YouTube][9] +- [A subreddit][10] +- [An active GitHub issues list][11] +- [Paid-for business support][12] + +If you want to play with BookStack, you can try it out [on our demo site][13]. To learn how to set up your own instance, visit the [installation page of our documentation][14]. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/23/1/bookstack-open-source-documentation + +作者:[Dan Brown][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/ssddanbrown +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/20/9/open-source-alternatives-confluence +[2]: https://github.com/tinymce/ +[3]: https://www.diagrams.net/ +[4]: https://opensource.com/article/19/9/introduction-markdown +[5]: https://opensource.com/downloads/mariadb-mysql-cheat-sheet +[6]: https://github.com/minio/ +[7]: https://www.keycloak.org/ +[8]: https://www.bookstackapp.com/docs/ +[9]: https://www.youtube.com/c/BookStackApp +[10]: https://www.reddit.com/r/bookstack +[11]: https://github.com/BookStackApp/BookStack/issues +[12]: https://www.bookstackapp.com/support +[13]: https://demo.bookstackapp.com/books/bookstack-demo-site/page/logging-in-to-the-demo-site +[14]: https://www.bookstackapp.com/docs/admin/installation/ diff --git a/sources/tech/20230103.3 ⭐️ Whereis Command in Linux and BSD with Examples.md b/sources/tech/20230103.3 ⭐️ Whereis Command in Linux and BSD with Examples.md new file mode 100644 index 0000000000..8c1d6978d0 --- /dev/null +++ b/sources/tech/20230103.3 ⭐️ Whereis Command in Linux and BSD with Examples.md @@ -0,0 +1,152 @@ +[#]: subject: "Whereis Command in Linux and BSD with Examples" +[#]: via: "https://www.debugpoint.com/whereis-command-linux/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Whereis Command in Linux and BSD with Examples +====== + +**Here’s a beginner’s guide on understanding whereis command in Linux & BSD with several examples.** + +![][1] + +_This article is part of the [Linux command][2] learning series._ + +### whereis command + +The `whereis` command is a command line program that helps you to find out the path or location of any binary executable, source file or manual page. + +Before we show you how to use `whereis` command, let’s look at the syntax. + +### Syntax + +Here’s the syntax for whereis command: + +``` +whereis [OPTIONS] FILE_NAME +``` + +The argument of whereis command is the program name or file name you want to search. The argument is mandatory. + +By default, it searches for the program in the path defined in environment variables such as HOME, USER, SHELL, etc. + +Let’s take a look at some examples. + +### Examples of whereis command in Linux and BSD + +A simple example of whereis command is below where I am trying to search firefox. In the output below, you can see the list of paths containing firefox files or executables displayed. + +``` +$ whereis firefox + +firefox: /usr/bin/firefox /usr/lib64/firefox /etc/firefox /usr/share/man/man1/firefox.1.gz +``` + +![Simple example of whereis command in Linux][3] + +The command with option -l displays the list of paths where it searches. For example: + +``` +$ whereis -l + +bin: /usr/bin +bin: /usr/sbin +bin: /usr/lib +bin: /usr/lib64 +bin: /etc +bin: /usr/games +bin: /usr/local/bin +bin: /usr/local/sbin +bin: /usr/local/etc +bin: /usr/local/lib +bin: /usr/local/games +``` + +If the whereis command doesn’t find anything, it only shows the argument’s name. For example, if I search nano in Linux where is it not installed, it outputs the following: + +``` +$ whereis nano +``` + +``` +nano: +``` + +You can always add multiple arguments if you want to search for more. For example below command searches for both bash and nano, and this is the output: + +``` +$ whereis bash nano + +bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz /usr/share/info/bash.info.gz +nano: /usr/bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz +``` + +You can also search for specific file types, such as binaries, using -b option. The following command only tells you the binary paths of nano. + +``` +$ whereis -b nano + +nano: /usr/bin/nano /usr/share/nano +``` + +Similarly, the -s option searches for source files, and the -m option searches for manual pages. + +``` +$ whereis -m nano + +nano: /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz +``` + +You can also combine the above options for a more extensive search. For example, the following command searches for nano and firefox binary, manual pages and for bash, only manual pages. + +``` +$ whereis -bm nano firefox -m bash + +nano: /usr/bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz +firefox-m: +bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz /usr/share/info/bash.info.gz +``` + +Here’s a summary of the options: + +| Option | Description | +| :- | :- | +| **-b** | Search only for binaries. | +| **-m** | Search only for manual sections. | +| **-s** | Search only for sources. | +| **-u** | Search for unusual entries. A file is said to be unusual if it does not have one entry of each requested type. Thus ‘whereis -m -u *’ asks for those files in the current directory which have no documentation. | +| **-B** | Change or otherwise limit the places where whereis searches for binaries. | +| **-M** | Change or otherwise limit the places where whereis searches for manual sections. | +| **-S** | Change or otherwise limit the places where whereis searches for sources. | +| **-f** | Terminate the last directory list and signals the start of file names, and must be used when any of the -B, -M, or -S options are used. | + +### Closing Notes + +I hope this article helps you to understand whereis command and its basics. You can also read the[whereis man pages][4] to learn more. Let me know if you have any questions. + +**This article is part of the [Linux command][2] learning series**. + +[_Using Mastodon? Follow us at floss.social/@debugpoint_][5] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/whereis-command-linux/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2023/01/whereis-head.jpg +[2]: https://www.debugpoint.com/category/linux-commands +[3]: https://www.debugpoint.com/wp-content/uploads/2023/01/Simple-example-of-whereis-command-in-Linux.jpg +[4]: https://linux.die.net/man/1/whereis +[5]: https://floss.social/@debugpoint diff --git a/sources/tech/20230104.0 ⭐️⭐️ Learn to code with my retro computer program.md b/sources/tech/20230104.0 ⭐️⭐️ Learn to code with my retro computer program.md new file mode 100644 index 0000000000..3bb59671ba --- /dev/null +++ b/sources/tech/20230104.0 ⭐️⭐️ Learn to code with my retro computer program.md @@ -0,0 +1,210 @@ +[#]: subject: "Learn to code with my retro computer program" +[#]: via: "https://opensource.com/article/23/1/learn-machine-language-retro-computer" +[#]: author: "Jim Hall https://opensource.com/users/jim-hall" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Learn to code with my retro computer program +====== + +I teach university courses part-time, including a class about general computing topics, open to all majors. This is an introductory course that teaches students about how technology works, to remove the mystery around computing. + +While not a computer science course, one section of this course covers computer programming. I usually talk about programming in very abstract terms, so I don't lose my audience. But this year, I wanted my students to do some "hands-on" programming in an "old school" way. At the same time, I wanted to keep it simple, so everyone could follow along. + +I like to structure my lessons to show how you got from "there" to "here." Ideally, I would let my students learn how to write a simple program. Then I would pick it up from there to show how modern programming allows developers to create more complex programs. I decided to try an unconventional approach — teach the students about the ultimate in low-level programming: machine language. + +### Machine language programming + +Early personal computers like the Apple II (1977), TRS-80 (1977), and IBM PC (1981) let users enter programs with a keyboard, and displayed results on a screen. But computers didn't always come with a screen and keyboard. + +The Altair 8800 and IMSAI 8080 (both made in 1975) required users to enter a program using "switches and lights" on a panel. You would enter an instruction in machine language, using a bank of switches, and the machine would light up the ones and zeros of each binary instruction using LEDs. + +![Image of an Altair 8800 Computer.][1] + +Programming these early machines required knowing the machine language instructions, called opcodes, short for operation codes, to perform basic operations like adding two numbers or storing a value into the computer's memory. I wanted to show my students how programmers would enter a series of instructions and memory addresses by hand, using the switches and lights. + +However, using an actual Altair 8800 would be too much overhead in this class. I needed something simple that any beginner-level student could grasp. Ideally, I hoped to find a simple "hobby" retro computer that worked similarly to the Altair 8800, but I couldn't find a suitable "Altair-like" device for less than $100. I found several "Altair" software emulators, but they faithfully reproduce the Altair 8800 opcodes, and that was too much for my needs. + +I decided to write my own "educational" retro computer. I call it the Toy CPU. You can find it on my [GitHub repository][2], including several releases to play with. Version 1 was an experimental prototype that ran on [FreeDOS][3]. Version 2 was an updated prototype that ran on Linux with [ncurses][4]. Version 3 is a FreeDOS program that runs in graphics mode. + +### Programming the Toy CPU + +The Toy CPU is a very simple retro computer. Sporting only 256 bytes of memory and a minimal instruction set, the Toy CPU aims for simplicity while replicating the "switches and lights" programming model. The interface mimics the Altair 8800, with a series of eight LEDs for the counter (the "line number" for the program), instruction, accumulator (internal memory used for temporary data), and status. + +When you start the Toy CPU, it simulates "booting" by clearing the memory. While the Toy CPU is starting up, it also displays `INI` ("initialize") in the status lights at the bottom-right of the screen. The `PWR` ("power") light indicates the Toy CPU has been turned on. + +![Image of start screen for the toy cpu.][5] + +When the Toy CPU is ready for you to enter a program, it indicates `INP` ("input" mode) via the status lights, and starts you at counter 0 in the program. Programs for the Toy CPU always start at counter 0. + +In "input" mode, use the up and down arrow keys to show the different program counters, and press Enter to edit the instruction at the current counter. When you enter "edit" mode, the Toy CPU shows `EDT` ("edit" mode) on the status lights. + +![Image of the toy CPU editing screen.][6] + +The Toy CPU has a cheat sheet that's "taped" to the front of the display. This lists the different opcodes the Toy CPU can process: + +- `00000000` (`STOP`): Stop program execution. +- `00000001` (`RIGHT`): Shift the bits in the accumulator to the right by one position. The value 00000010 becomes 00000001, and 00000001 becomes 00000000. +- `00000010` (`LEFT`): Shift the bits in the accumulator to the left by one position. The value 01000000 becomes 10000000, and 10000000 becomes 00000000. +- `00001111` (`NOT`): Binary NOT the accumulator. For example, the value 10001000 becomes 01110111. +- `00010001` (`AND`): Binary AND the accumulator with the value stored at an address. The address is stored in the next counter. +- `00010010` (`OR`): Binary OR the accumulator with the value stored at an address. +- `00010011` (`XOR`): Binary XOR (“exclusive or”) the accumulator with the value stored at an address. +- `00010100` (`LOAD`): Load (copy) the value from an address into the accumulator. +- `00010101` (`STORE`): Store (copy) the value in the accumulator into an address. +- `00010110` (`ADD`): Add the value stored at an address to the accumulator. +- `00010111` (`SUB`): Subtract the value stored at an address from the accumulator. +- `00011000` (`GOTO`): Go to (jump to) a counter address. +- `00011001` (`IFZERO`): If the accumulator is zero, go to (jump to) a counter address. +- `10000000` (`NOP`): No operation; safely ignored. + +When in "edit" mode, use the left and right arrow keys to select a bit in the opcode, and press `Space`to flip the value between off (0) and on (1). When you are done editing, press `Enter`to go back to "input" mode. + +![Image of the toy CPU input mode screen.][7] + +### A sample program + +I want to explore the Toy CPU by entering a short program that adds two values, and stores the result in the Toy's memory. Effectively, this performs the arithmetic operation **A+B=C**. To create this program, you only need a few opcodes: + +- `00010100` (`LOAD`): Load (copy) the value from an address into the accumulator. +- `00010110` (`ADD`): Add the value stored at an address to the accumulator. +- `00010101` (`STORE`): Store (copy) the value in the accumulator into an address. +- `00000000` (`STOP`): Stop program execution. + +The `LOAD`, `ADD`, and `STORE` instructions require a memory address, which will always be in the next counter location. For example, the first two instructions of the program are: + +``` +counter 0: 00010100 +counter 1: some memory address where the first value A is stored +``` + +The instruction in counter 0 is the `LOAD`operation, and the value in counter 1 is the memory address where you have stored some value. The two instructions together copy a value from memory into the Toy's accumulator, where you can work on the value. + +Having loaded a number **A** into the accumulator, you need to add the value **B** to it. You can do that with these two instructions: + +``` +counter 2: 00010110 +counter 3: a memory address where the second value B is stored +``` + +Say that you loaded the value 1 (**A**) into the accumulator, then added the value 3 (**B**) to it. The accumulator will now have the value 4. Now you need to copy the value 4 into another memory address (**C**) with these two instructions: + +``` +counter 4: 00010101 +counter 5: a memory address (C) where we can save the new value +``` + +Having added the two values together, you can now end the program with this instruction: + +``` +counter 6: 00000000 +``` + +Any instructions after counter 6 are available for the program to use as stored memory. That means you can use the memory at counter 7 for the value **A**, the memory in counter 8 for the value **B**, and the memory at counter 9 for the stored value **C**. You need to enter these separately into the Toy: + +``` +counter 7: 00000001 (1) +counter 8: 00000011 (3) +counter 9: 00000000 (0, will be overwritten later) +``` + +Having figured out all the instructions and the memory locations for **A**, **B**, and **C**, you can now enter the full program into the Toy. This program adds the values 1 and 3 to get 4: + +``` +counter 0: 00010100 +counter 1: 00000111 (7) +counter 2: 00010110 +counter 3: 00001000 (8) +counter 4: 00010101 +counter 5: 00001001 (9) +counter 6: 00000000 +counter 7: 00000001 (1) +counter 8: 00000011 (3) +counter 9: 00000000 (0, will be overwritten later) +``` + +To run the program, press the `R` key when in "input" mode. The Toy CPU will show `RUN` ("run" mode) in the status lights, and execute your program starting at counter 0. + +The Toy has a significant delay built into it, so you can watch the Toy execute each step in the program. You should see the counter move from 00000000 (0) to 00000110 (6) as the program progresses. After counter 1, the program loads the value 1 from memory location 7, and the accumulator updates to 00000001 (1). After counter 3, the program will add the value 3 and update the accumulator to show 00000100 (4). The accumulator will remain that way until the program stores the value into memory location 9 after counter 5 then ends at counter 6. + +![Image of the Toy in RUN mode.][8] + +### Exploring machine language programming + +You can use the Toy to create other programs and further explore machine language programming. Test your creativity by writing these programs in machine language. + +### A program to flash the lights on the accumulator + +Can you light up the right four bits on the accumulator, then the left four bits, then all of the bits? You can write this program in one of two ways: + +A straightforward approach would be to load three values from different memory addresses, like this: + +``` +counter 0: LOAD +counter 1: "right" +counter 2: LOAD +counter 3: "left" +counter 4: LOAD +counter 5: "all" +counter 6: STOP +counter 7: 00001111 ("right") +counter 8: 11110000 ("left") +counter 9: 11111111 ("all") +``` + +Another way to write this program is to experiment with the NOT and OR binary operations. This results in a smaller program: + +``` +counter 0: LOAD +counter 1: "right" +counter 2: NOT +counter 3: OR +counter 4: "right" +counter 5: STOP +counter 6: 00001111 ("right") +``` + +### Count down from a number + +You can use the Toy as a countdown timer. This program exercises the IFZERO test, which will jump the program to a new counter only if the accumulator is zero: + +``` +counter 0: LOAD +counter 1: "initial value" +counter 2: IFZERO (this is also the "start" of the countdown) +counter 3: "end" +counter 4: SUB +counter 5: "one" +counter 6: GOTO +counter 7: "start" +counter 8: STOP +counter 9: 00000111 ("initial value") +counter 10: 00000001 ("one") +``` + +The Toy CPU is a great way to learn about machine language. I used the Toy CPU in my introductory course, and the students said they found it difficult to write the first program, but writing the next one was much easier. The students also commented that writing programs in this way was actually fun, and they learned a lot about how computers actually work. The Toy CPU is educational and fun! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/23/1/learn-machine-language-retro-computer + +作者:[Jim Hall][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jim-hall +[b]: https://github.com/lkxed +[1]: https://opensource.com/sites/default/files/2022-12/MITS_Altair_8800_Computer_%281975%29.png +[2]: https://github.com/freedosproject/toycpu +[3]: https://opensource.com/downloads/guide-using-freedos +[4]: https://opensource.com/article/21/8/ncurses-linux +[5]: https://opensource.com/sites/default/files/2022-12/toycpu.png +[6]: https://opensource.com/sites/default/files/2022-12/edit0-load.png +[7]: https://opensource.com/sites/default/files/2022-12/input0-load.png +[8]: https://opensource.com/sites/default/files/2022-12/run-3.png diff --git a/sources/tech/20230105.1 ⭐️⭐️ 6 tips for building an effective DevOps culture.md b/sources/tech/20230105.1 ⭐️⭐️ 6 tips for building an effective DevOps culture.md new file mode 100644 index 0000000000..394c1d810e --- /dev/null +++ b/sources/tech/20230105.1 ⭐️⭐️ 6 tips for building an effective DevOps culture.md @@ -0,0 +1,101 @@ +[#]: subject: "6 tips for building an effective DevOps culture" +[#]: via: "https://opensource.com/article/23/1/tips-effective-devops-culture" +[#]: author: "Yauhen Zaremba https://opensource.com/users/yauhen-zaremba" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +6 tips for building an effective DevOps culture +====== + +Why would you want to build a [DevOps][1] culture? There are many benefits to the streamlined collaboration of the development and operations teams. A major goal is efficiency: Increasing the speed of new software deployments and reducing idle time for workers. Fostering trust between colleagues can improve employee satisfaction, produce new innovations, and positively impact profitability. + +[DevOps][2] is a broad philosophy with a range of interpretations. In other words, you can visit 40 companies and find 40,000 different ideas about using DevOps effectively in the workplace. This diversity of opinion is actually a good thing–so many perspectives are useful for building stronger teams. This guide will look at the top tips for encouraging better collaboration between colleagues within a DevOps culture. + +Each section offers a different aspect of DevOps culture and looks at ways to introduce it into your workforce. + +![DevOps includes collaboration, workflow, infosec, and iteration.][3] + +### Continuous development of processes + +This core tenet of DevOps culture sets it apart from many other types of workplace ethos. The DevOps philosophy says that it is essential to make mistakes because it shows you are trying out new ideas. + +The heart of DevOps culture is a commitment to evolving creativity. Practically, that means not yelling at your direct reports when test results show that things were better before they changed it. It means recognizing that progress is not linear and success is never a straight line. + +DevOps expert [Gene Kim][4] advocates for risk-taking and experimentation. This implies letting your team work on unusual tasks to find new insights. + +Should your organization be profit-driven? Can you allow your teams to try something new? I'm talking about something other than unrelated passion projects. Continuous process development means being open to upgrading present methods. Great sales leaders appreciate that results matter more than presenteeism, so it is always crucial to focus on how teams are working rather than how much. + +### Readily give feedback and actively seek it + +Increased trust between individuals is another key feature of a thriving DevOps culture. Whether your staff is learning how to build affiliate network contacts or trying to design their next [UX][5] survey, everyone should be open to feedback on their work. But this will never happen until your teammates respect each other's opinions and trust that feedback is given in a spirit of good intention. + +This culture may sound impossible to cultivate; indeed, some companies will struggle to achieve this more than others. Granted, a large part of the success of giving and receiving feedback depends on the personalities of your employees. It is possible to screen for this during the recruitment process. + +Before you expect staff to readily offer feedback to colleagues and seek it in the first place, you should lead by example. Members of the C-suite should be modeling this behavior, openly asking members of the company to pose probing questions about their strategic decisions, and providing balanced feedback. + +![DevOps is the intersection of development, quality assurance, and operations][6] + +### Always look for improvements + +Building on increased intellectual trust between colleagues, your team should look for ways to improve its work. The nature of DevOps means the software development team will be producing deployments more rapidly than with traditional approaches. + +However, this culture of openness to improvement can positively impact departments beyond development and operations. Ask yourself what other areas of your business could do with a burst of optimism. + +Be on the lookout for training and upskilling opportunities. Even if a training course is less salient than advertised, the chance to network with industry professionals and build contacts for the future can only enhance the diversity of ideas within your organization. + +### Save ideas for later development + +Part of your DevOps toolchain should be a heavily used account on [Git][7]. You can use Git as a common repository for scripts produced during software development and other related projects. Known as "version control," Git allows programmers to save iterations of their work and reuse or improve the work of others. + +You're aiming for the ability to keep hold of good ideas for future use. A certain pathway did not work out for specific reasons. However, just because that set of ideas was wrong for the time it was conceived does not mean it can never become helpful in the future. + +As the entire focus of DevOps rests on end-to-end ownership of software in production, saving iterations of developments truly supports this principle. You want to see an improved focus on and commitment to the software testing project at hand. + +A simple way to incorporate this is to request that developers include ideas for future work in the developer contract and final project report. Make sure tech services managers know they should ask for examples of side-branching ideas that cropped up during the build. The more minds aware of these little innovations, the more likely someone will remember one when needed. + +### Sit close together (physically or virtually) + +The goal is to share a common understanding of one another's job roles and how they interrelate. You can achieve this in a few simple ways, summarized by three words: Sit close together. Invite other teams to your meetings and share user feedback reports in their entirety. Have lunch together, plan virtual happy hours together, and generally make sure your colleagues are in close proximity. About 90% of teams with a mature DevOps protocol report a clear understanding of their responsibilities to other teams compared to only about 46% of workers in immature DevOps teams. + +Although it can be tempting to form cliques with like-minded folk and only hang out with staff hired to carry out the same tasks as you, this is terrible for the business as a whole. Whether you like it or not, all humans are multi-faceted and capable of contributing their unique talents to a whole host of scenarios. + +The idea of closer collaboration is to honor the ability of anyone to suggest improvements to the products or work processes going on around them. If you only ever sit at a distance from the other departments within the company, you will miss countless opportunities to share intelligent ideas. After all, you often learn best in the free flow of ideas during a conversation. + +### Commit to automation + +You should be looking to automate mundane and repetitive tasks in the name of efficiency and process acceleration. Every industry has boring–and quite frankly, silly–exercises carried out daily or weekly. + +Whether this is manually copying data from one page to another or typing out audio transcripts by hand, staff at every level should insist that machines take on such burdens where possible. The reality is automation technology advances every single year, and operational processes should, too. [Automation testing][8] is so crucial to DevOps that it is the second principle of the CALMS framework (the "C" of which stands for "culture"). + +How can you make this happen? Invite staff to openly express which aspects of their job they feel could be automated and then–here is the crucial part–support the facilities needed to automate them. That might mean a $600 annual subscription to a software program, a complete enterprise application modernization, or two days of developers' time to build a new tool to use in-house. + +Either way, you should assess the benefits of automation and consider how much time you could save for everyone. DevOps statistics continually indicate just how much better off modern companies are by integrating these beneficial principles year after year. + +### Explore new ways of working successfully + +A culture shift doesn't happen overnight. The sooner you start, though, the sooner you see results. In my experience, people embrace change when it's a genuine improvement on what has gone before. DevOps provides a framework for such improvements. Whether you're just getting started with DevOps in your organization or simply want to improve your existing culture, consider the above points and how they relate to your organization's future. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/23/1/tips-effective-devops-culture + +作者:[Yauhen Zaremba][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/yauhen-zaremba +[b]: https://github.com/lkxed +[1]: https://opensource.com/resources/devops +[2]: https://opensource.com/article/22/2/devops-documentation-maturity +[3]: https://opensource.com/sites/default/files/2022-12/devop.png +[4]: https://enterprisersproject.com/user/gene-kim +[5]: https://opensource.com/article/22/7/awesome-ux-cli-application +[6]: https://opensource.com/sites/default/files/2022-12/devop-venn.png +[7]: https://opensource.com/article/22/11/git-concepts +[8]: https://opensource.com/article/20/7/open-source-test-automation-frameworks diff --git a/sources/tech/20230106.0 ⭐️⭐️ Use time-series data to power your edge projects with open source tools.md b/sources/tech/20230106.0 ⭐️⭐️ Use time-series data to power your edge projects with open source tools.md new file mode 100644 index 0000000000..80c70c7b4b --- /dev/null +++ b/sources/tech/20230106.0 ⭐️⭐️ Use time-series data to power your edge projects with open source tools.md @@ -0,0 +1,123 @@ +[#]: subject: "Use time-series data to power your edge projects with open source tools" +[#]: via: "https://opensource.com/article/23/1/time-series-data-edge-open-source-tools" +[#]: author: "Zoe Steinkamp https://opensource.com/users/zoesteinkamp" +[#]: collector: "lkxed" +[#]: translator: " " +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Use time-series data to power your edge projects with open source tools +====== + +Gathering data as it changes over the passage of time is known as time-series data. Today, it has become a part of every industry and ecosystem. It is a large part of the growing IoT sector and will become a larger part of everyday people's lives. But time-series data and its requirements are hard to work with. This is because there are no tools that are purpose-built to work with time-series data. In this article, I go into detail about those problems and how InfluxData has been working to solve them for the past 10 years. + +### InfluxData + +InfluxData is an open source time-series database platform. You may know about the company through [InfluxDB][1], but you may not have known that it specialized in time-series databases. This is significant, because when managing time-series data, you deal with two issues — storage lifecycle and queries. + +When it comes to storage lifecycle, it's common for developers to initially collect and analyze highly detailed data. But developers want to store smaller, downsampled datasets that describe trends without taking up as much storage space. + +When querying a database, you don't want to query your data based on IDs. You want to query based on time ranges. One of the most common things to do with time-series data is to summarize it over a large period of time. This kind of query is slow when storing data in a typical relational database that uses rows and columns to describe the relationships of different data points. A database designed to process time-series data can handle queries exponentially faster. InfluxDB has its own built-in querying language: Flux. This is specifically built to query on time-series data sets. + +![Image of how Telegraf works.][2] + +### Data acquisition + +Data acquisition and data manipulation come out of the box with some awesome tools. InfluxData has over 12 client libraries that allow you to write and query data in the coding language of your choice. This is a great tool for custom use cases. The open source ingest agent, Telegraf, includes over 300 input and output plugins. If you're a developer, you can contribute your own plugin, as well. + +InfluxDB can also accept a CSV upload for small historical data sets, as well as batch imports for large data sets. + +``` +import math +bicycles3 = from(bucket: "smartcity") +    |> range(start:2021-03-01T00:00:00z, stop: 2021-04-01T00:00:00z) +    |> filter(fn: (r) => r._measurement == "city_IoT") +    |> filter(fn: (r) => r._field == "counter") +    |> filter(fn: (r) => r.source == "bicycle") +    |> filter(fn: (r) => r.neighborhood_id == "3") +    |> aggregateWindow(every: 1h, fn: mean, createEmpty:false) +bicycles4 = from(bucket: "smartcity") +    |> range(start:2021-03-01T00:00:00z, stop: 2021-04-01T00:00:00z) +    |> filter(fn: (r) => r._measurement == "city_IoT") +    |> filter(fn: (r) => r._field == "counter") +    |> filter(fn: (r) => r.source == "bicycle") +    |> filter(fn: (r) => r.neighborhood_id == "4") +    |> aggregateWindow(every: 1h, fn: mean, createEmpty:false)join(tables: {neighborhood_3: bicycles3, neighborhood_4: bicycles4}, on ["_time"], method: "inner") +    |> keep(columns: ["_time", "_value_neighborhood_3","_value_neighborhood_4"]) +    |> map(fn: (r) => ({ +        r with +        difference_value : math.abs(x: (r._value_neighborhood_3 - r._value_neighborhood_4)) +    })) +``` + +### Flux + +Flux is our internal querying language built from the ground up to handle time-series data. It's also the underlying powerhouse for a few of our tools, including tasks, alerts, and notifications. To dissect the flux query from above, you need to define a few things. For starters, a "bucket" is what we call a database. You configure your buckets and then add your data stream into them. The query calls the smartcity bucket, with the range of a specific day (a 24-hour period to be exact.) You can get all the data from the bucket, but most users include a data range. That's the most basic flux query you can do. + +Next, I add filters, which filter the data down to something more exact and manageable. For example, I filter for the count of bicycles in the neighborhood assigned to the id of 3. From there, I use aggregateWindow to get the mean for every hour. That means I expect to receive a table with 24 columns, one for every hour in the range. I do this exact same query for neighborhood 4 as well. Finally, I join the two tables and get the differences between bike usage in these two neighborhoods. + +This is great if you want to know what hours are high-traffic hours. Obviously, this is just a small example of the power of flux queries. But it gives a great example of some of the tools flux comes with. I also have a large amount of data analysis and statistics functions. But for that, I suggest checking out the Flux documentation. + +``` +import "influxdata/influxdb/tasks" +option task = {name: PB_downsample, every: 1h, offset: 10s} +from(bucket: "plantbuddy") +    |>range(start: tasks.lastSuccess(orTime: -task.every)) +    |>filter(fn: (r) => r["_measurement"] == "sensor_data") +    |>aggregateWindow(every: 10m, fn:last, createEmpty:false) +    |>yield(name: "last") +    |>to(bucket: "downsampled") +``` + +### Tasks + +An InfluxDB task is a scheduled Flux script that takes a stream of input data and modifies or analyzes it in some way. It then stores the modified data in a new bucket or performs other actions. Storing a smaller data set into a new bucket is called "downsampling," and it's a core feature of the database, and a core part of the time-series data lifecycle. + +You can see in the current task example that I've downsampled the data. I'm getting the last value for every 10-minute increment and storing that value in the downsampled bucket. The original data set might have had thousands of data points in those 10 minutes, but now the downsampled bucket only has 60 new values. One thing to note is that I'm also using the last success function in range. This tells InfluxDB to run this task from the last time it ran successfully, just in case it has failed for the past 2 hours, in which case it can go back three hours in time to the last successful run. This is great for built-in error handling. + +![Image of the checks and alerts notification system.][3] + +### Checks and alerts + +InfluxDB includes an alerting or checks and notification system. This system is very straightforward. You start with a check that looks at the data periodically for anomalies that you've defined. Normally, this is defined with thresholds. For example, any temperature value under 32° F gets assigned a value of `WARN`, and anything above 32° F gets assigned a value of `OK`, and anything below 0° F gets a value of `CRITICAL`. From there, your check can run as often as you deem necessary. There is a recorded history of your checks and the current status of each. You are not required to set up a notification when it's not needed. You can just reference your alert history as needed. + +Many people choose to set up their notifications. For that, you need to define a notification endpoint. For example, a chat application could make an HTTP call to receive your notifications. Then you define when you would like to receive notifications, for example you can have checks run every hour. You can run notifications every 24 hours. You can have your notification respond to a change in the value, for example `WARN` to `CRITICAL`, or when a value is `CRITICAL`, regardless of it changing from `OK` to `WARN`. This is a highly customizable system. The Flux code that's created from this system can also be edited. + +![Image of the new Edge feature.][4] + +### Edge + +To wrap up, I'd like to bring all the core features together, including a very special new feature that's recently been released. Edge to cloud is a very powerful tool that allows you to run the open source InfluxDB and locally store your data in case of connectivity issues. When connectivity is repaired, it streams the data to the InfluxData cloud platform. + +This is significant for edge devices and important data where any loss of data is detrimental. You define that you want a bucket to be replicated to the cloud, and then that bucket has a disk-backed queue to store the data locally. Then you define what your cloud bucket should replicate into. The data is stored locally until connected to the cloud. + +### InfluxDB and the IoT Edge + +Suppose you have a project where you want to [monitor the health of household plants][5] using IoT sensors attached to the plant. The project is set up using your laptop as the edge device. When your laptop is closed or otherwise off, it stores the data locally, and then streams it to my cloud bucket when reconnected. + +![Image showing how Plant buddy works.][6] + +One thing to notice is that this downsamples data on the local device before storing it in the replication bucket. Your plant's sensors provide a data point for every second. But it condenses the data to be an average of one minute so you have less data to store. In the cloud account, you might add some alerts and notifications that let you know when the plant's moisture is below a certain level and needs to be watered. There could also be visuals you could use on a website to tell users about their plants' health. + +Databases are the backbone of many applications. Working with time-stamped data in a time series database platform like InfluxDB saves developers time, and gives them access to a wide range of tools and services. The maintainers of InfluxDB love seeing what people are building within our open source community, so connect with us and share your projects and code with others! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/23/1/time-series-data-edge-open-source-tools + +作者:[Zoe Steinkamp][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/zoesteinkamp +[b]: https://github.com/lkxed +[1]: https://opensource.com/article/17/8/influxdb-time-series-database-stack +[2]: https://opensource.com/sites/default/files/2022-12/Telegraf.png +[3]: https://opensource.com/sites/default/files/2022-12/TimeSeriesChecks%26Alerts.png +[4]: https://opensource.com/sites/default/files/2022-12/TimSeriesEdge.png +[5]: https://opensource.com/article/22/5/plant-care +[6]: https://opensource.com/sites/default/files/2022-12/TimeSeriesplantbuddy.png diff --git a/sources/tech/20230107.0 ⭐️ Learn w Command in Linux & BSD with Examples.md b/sources/tech/20230107.0 ⭐️ Learn w Command in Linux & BSD with Examples.md new file mode 100644 index 0000000000..23ae40eb72 --- /dev/null +++ b/sources/tech/20230107.0 ⭐️ Learn w Command in Linux & BSD with Examples.md @@ -0,0 +1,115 @@ +[#]: subject: "Learn w Command in Linux & BSD with Examples" +[#]: via: "https://www.debugpoint.com/w-command-linux-examples/" +[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Learn w Command in Linux & BSD with Examples +====== + +**Here’s a beginner’s guide on understanding the w command in Linux & BSD with several examples.** + +![][1] + +_This article is part of the [Linux command][2] learning series._ + +### w command + +The `w` command is a utility in Linux that displays information about the users currently logged into the system and their processes. It shows who is logged on and what activities they are doing. That means it can show what processes they are running in their system. + +### Syntax + +Here is the basic syntax of the `w` command: + +``` +w [options] [username] +``` + +The `w` command takes an optional list of options, followed by an optional username. If a username is specified, `w` will only show information about processes owned by that user. + +### Examples of the w command and its usage + +Here are some examples of using the `w` command. + +When you run it with only w, it shows the following output. + +``` +$ w + 21:45:07 up 1 day, 12:48, 1 user, load average: 1.05, 0.85, 0.56 +USER TTY LOGIN@ IDLE JCPU PCPU WHAT +debugpoi tty2 Thu08 36:48m 0.03s 0.03s /usr/libexec/gnome-session-binary +``` + +![a basic output of w command in Linux][3] + +Explanation: The USER column gives you the username, followed by the terminal number, login date-time, IDLE time, CPU usage, and the process being executed by the user. + +- `USER` – Logged on user name in your Linux or BSD system. +- `TTY` – Terminal identifier number for the current session. +- `FROM` – Hostname or IP address of the user. +- `LOGIN@` – User logged in time. It sometimes shows dates based on your system settings. +- `IDLE` – Idle time elapsed since the user interacted with the terminal. +- `JCPU` – CPU time used by all the user processes for that session. +- `PCPU` – Time used by the process for the user, which is mentioned in the WHAT field. +- `WHAT` – Current process with arguments. + +Here’s another example of the w command with two users logged in a virtual machine environment. As you can see, two user names are shown with separate processes with process parameters currently running. + +![w command output for a demo multi-user environment][4] + +Let’s take a look at some options for this command. + +To show stop showing header, use the`-h` option. It’s identical to the `--no-header` switch. + +``` +$ w -h +``` + +The -f option toggles the visibility of FROM field in your output. + +``` +$ w -f +``` + +Use the `-s` option to print a short version of the output excluding JCPU, PCPU and LOGIN@ information. + +``` +$ w -s +``` + +To show a list of all processes owned by a specific user (for example, `debugpoint`): + +``` +$ w debugpoint +``` + +### Closing Notes + +I hope this article helps you to understand w command and its basics. You can also read the [w man pages][5] to learn more. Let me know if you have any questions. + +**This article is part of the [Linux command][2] learning series**. + +[_Using Mastodon? Follow us at floss.social/@debugpoint_][6] + +-------------------------------------------------------------------------------- + +via: https://www.debugpoint.com/w-command-linux-examples/ + +作者:[Arindam][a] +选题:[lkxed][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.debugpoint.com/author/admin1/ +[b]: https://github.com/lkxed +[1]: https://www.debugpoint.com/wp-content/uploads/2023/01/whead.jpg +[2]: https://www.debugpoint.com/category/linux-commands +[3]: https://www.debugpoint.com/wp-content/uploads/2023/01/a-basic-outout-of-w-command-in-Linux.jpg +[4]: https://www.debugpoint.com/wp-content/uploads/2023/01/w-command-output-for-a-demo-multi-user-environment.jpg +[5]: https://linux.die.net/man/1/w +[6]: https://floss.social/@debugpoint diff --git a/translated/talk/20220621 7 summer book recommendations from open source enthusiasts.md b/translated/talk/20220621 7 summer book recommendations from open source enthusiasts.md deleted file mode 100644 index 0c184ad03e..0000000000 --- a/translated/talk/20220621 7 summer book recommendations from open source enthusiasts.md +++ /dev/null @@ -1,173 +0,0 @@ -[#]: subject: "7 summer book recommendations from open source enthusiasts" -[#]: via: "https://opensource.com/article/22/6/2022-opensourcecom-summer-reading-list" -[#]: author: "Joshua Allen Holm https://opensource.com/users/holmja" -[#]: collector: "lkxed" -[#]: translator: "chai001125" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -来自开源爱好者的 7 本读物推荐 -====== -Opensource.com 社区的成员推荐这些书籍,涵盖了从有趣的悬疑小说到发人深省的非小说作品的各种类型,你一定能从中找到一本你想看的书! - -![Ceramic mug of tea or coffee with flowers and a book in front of a window][1] - -很高兴能为大家介绍 Opensource.com 的 2022 年暑期阅读清单。今年的榜单包含来自 Opensource.com 社区成员的 7 本精彩的读物推荐。你可以发现各种各样的书籍,涵盖从有趣舒适的谜团到探索发人深省主题的非小说类作品。我希望你能在这个榜单中找到感兴趣的书本。 - -请享受吧! - -![Book title 97 Things Every Java Programmer Should Know][4] - -**[《每个 Java 程序员都应该知道的 97 件事》:专家的集体智慧,作者:Kevlin Henney 和 Trisha Gee][5]** -(97 Things Every Java Programmer Should Know: Collective Wisdom from the Experts, edited by Kevlin Henney and Trisha Gee) - -*[由 Seth Kenlon 推荐][6]* - -这本书是由 73 位在软件行业工作的不同作者共同撰写。它的优秀之处在于它不仅仅适用于 Java 编程。当然,有些章节会涉及 Java,但是也还有一些其他话题,例如了解你的容器环境、如何更快更好地交付软件、以及无论使用哪种语言都不要隐藏适用于开发的工具。 - -更好的是,有些章节同样适用于生活中的问题。将问题和任务分成小的部分是解决任何问题的好建议;建立多元化的团队对所有合作者都很重要;由从散乱的一块块拼图到拼好的完成品中,得到拼图玩家的思想如何应用于不同的工作角色。 - -每章只有几页,总共有 97 个章节,你可以轻松跳过不适用于你自己的章节。无论你是一直在写 Java 代码、或者只是学过一点 Java,亦或是尚未开始学习 Java,对于对代码和软件开发过程感兴趣的极客来说,这都会是一本好书。 - -![Book title A City is Not a Computer][7] - -**[《城市不是计算机:其他的城市智能》,作者:Shannon Mattern][8]** -(A City is Not a Computer: Other Urban Intelligences, by Shannon Mattern) - -*[由 Scott Nesbitt 推荐][9]* - -如今,让一切变得智能已经成为一种 *时尚*:我们的手机、家用电器、手表、汽车,甚至是城市都变得智能化了。 - -对于城市的智能化,这意味着传感器变得无处不在,在我们开展业务时收集数据,并根据这些数据向我们推送信息(无论数据有用与否)。 - -这就引出了一个问题,将所有高科技技术嵌入到城市中是否会使得城市智能化呢?在《城市不是计算机》这本书中,作者 Shannon Mattern 认为并不是这样的。 - -城市智能化的目标之一是为市民提供服务和更好的城市参与感。Mattern 指出,但是实际上,智慧城市希望将技术专家的管理想法与公共服务相融合,从而将公民重新设置为‘消费者’和‘用户’,然而,这并不是在鼓励公民积极参与城市的生活和治理。 - -第二个问题是关于智慧城市收集的数据。我们不知道收集了什么数据,以及收集了多少数据。我们也不知道这些数据使用在什么地方,以及是谁使用的。收集的数据太多了,以至于处理数据的市政工作人员会不堪重负。他们无法处理所有数据,因此他们专注于短期容易实现的任务,而忽略了更深层次和更紧迫的问题。这绝对达不到在推广智慧城市时所承诺的目标:智慧城市将成为解决城市困境的良药。 - -《城市不是计算机》是一篇短小精悍、经过深入研究的、反对拥抱智慧城市的议论文。这本书让我们思考智慧城市的真正目的:要让百姓真正受益于城市智能化,并引发我们的思考:发展智慧城市是否必要呢。 - -![Book title git sync murder][10] - -**[《git sync 谋杀》,作者:Michael Warren Lucas][11]** -(git sync murder, by Michael Warren Lucas) - -*[由 Joshua Allen Holm 推荐][12]* - -Dale Whitehead 宁愿呆在家里,通过他的电脑终端与世界连接,尤其是在他参加的最后一次会议上发生的事情之后。在那次会议上,Dale 扮演了一个业余侦探的角色,要解决一桩谋杀案。你可以在本系列的第一本书《git commit 谋杀(git commit murder)》中阅读这个故事。 - -现在,Dale 回到家,并参加了另一个会议,他再次发现自己成为了侦探。在《git sync 谋杀(git sync murder)》中,Dale 参加了一个当地科技会议,会议上发现一具尸体。这是谋杀,还是只是一场意外?现在,Dale 是这些问题的“专家”,他发现自己被卷入了这件事,并要亲自去弄清楚到底发生了什么。再多说的话就剧透了,所以我能说《git sync 谋杀》这本书十分引人入胜,而且读起来很有趣。不必先阅读《git commit 谋杀(git commit murder)》,才能阅读《git sync 谋杀》,但我强烈推荐一起阅读该系列中的这两本书。 - -作者 Michael Warren Lucas 的“git 谋杀”系列非常适合喜欢悬疑小说的科技迷。Lucas 写过很多复杂的技术题材的书,这本书也延续了他的技术题材,《git sync 谋杀》这本书中的人物在会议活动上谈论技术话题。如果你因为新冠疫情,最近没有参加过会议,错过了参会体验的话,Lucas 将带你参加一个技术会议,其中还有一个谋杀之谜以待解决。Dale Whitehead 是一个有趣的业余侦探,我相信大多数 Opensource.com 的读者会喜欢和 Dale 一起参加技术会议,并充当侦探破解谜案的。 - -![Book title Kick Like a Girl][13] - -**[《像女孩一样踢球》, 作者:Melissa Di Donato Roos][14]**(Kick Like a Girl) - -*[由 Joshua Allen Holm 推荐][15]* - -没有人喜欢被孤立,当女孩 Francesca 想在公园里踢足球时,她也是这样。男孩们不会和她一起玩,因为她是女孩,所以她不高兴地回家了。她的母亲通过讲述有重要影响力的著名女性的故事来安慰她。《像女孩一样踢球》中详述的历史人物包括历史中来自许多不同领域的女性。读者将了解 Frida Kahlo、Madeleine Albright、Ada Lovelace、Rosa Parks、Amelia Earhart、Marie Curie、Valentina Tereshkova、Florence Nightingale 和 Malala Yousafzai 的故事。听完这些鼓舞人心的人物故事后,Francesca 回到公园,向男孩们发起了一场足球挑战。 - -《像女孩一样踢球》这本书的特色是作者 Melissa Di Donato Roos(SUSE(译注:SUSE是一家总部位于德国的软件公司,创立于1992年,以提供企业级Linux为主要业务)的 CEO)引人入胜的写作和 Ange Allen 的出色插图。这本书非常适合年轻读者,他们会喜欢押韵的文字和书中的彩色插图。Melissa Di Donato Roos 还写了另外两本童书,《美人鱼如何便便(How Do Mermaids Poo?)》和《魔盒(The Magic Box)》,这两本书也都值得一读。 - -![Book title Mine!][16] - -**[《这是我的!:所有权的潜规则如何控制着我们的生活》, 作者:Michael Heller 和 James Salzman][17]** -(Mine!: How the Hidden Rules of Ownership Control Our Lives) - -*[由 Bryan Behrenshausen 推荐][18]* - -作者 Michael Heller 和 James Salzman 在文章《这是我的!》中写道:“你对所有权的很多了解都是错误的”。这是一种被吸引到开源领域的人不得不接受所有权规则的对抗性邀请。这本书是为开源爱好者而写的,他们对代码、思想、各种知识产权的所有权的看法往往与主流观点和普遍接受的认知不同。在本书中,Heller 和 Salzman 列出了“所有权的隐藏规则”,这些规则管理着谁能控制对什么事物的访问。这些所有权规则是微妙的、强大的、有着深刻的历史惯例。这些所有权规则已经变得如此普遍,以至于看起来无可争议,这是因为“先到先得”或“种瓜得瓜,种豆得豆”的规则已经成为陈词滥调。然而,我们看到它们无处不在:在飞机上,为宝贵的腿部空间而战;在街道上,邻居们为铲好雪的停车位发生争执;在法庭上,陪审团决定谁能控制你的遗产和你的 DNA。在当下的数字时代,所有权的替代理论能否为重新思考基本权利创造空间?作者认为这是可以的。如果这是正确的,我们可能会回应:在未来,开源软件能否成为所有权运作的模型呢? - -![Book Title Not All Fairy Tales Have Happy Endings][19] - -**[并非所有童话故事都有幸福的结局:雪乐山公司(Sierra On-Line)的兴衰, 作者:Ken Williams][20]** -(Not All Fairy Tales Have Happy Endings: The Rise and Fall of Sierra On-Line) - -*[由 Joshua Allen Holm 推荐][21]* - -在 1980 年代和 1990 年代,雪乐山公司(Sierra On-Line)是计算机软件行业的巨头。这家由 Ken 和 Roberta Williams 创立的公司,出身并不起眼,但却发布了许多标志性的电脑游戏。King's Quest、Space Quest、Quest for Glory、Leisure Suit Larry 和 Gabriel Knight 只是该公司版权中的很小一部分。 - -《并非所有童话故事都有幸福的结局》这本书,涵盖了从雪乐山公司发布第一款游戏 [Mystery House][22],到该公司不幸地被 CUC International 收购以及后续的所有内容。Sierra 品牌在被收购后仍会存活了一段时间,但 Williams 创立的 Sierra 已不复存在。Ken Williams 以只有他能做到的方式,讲述了雪乐山公司的整个历史。Sierra 的历史叙述穿插在 Williams 提出的管理和计算机编程建议的章节之中。虽然 Ken Williams 在写这本书时,已经离开这个行业很多年了,但他的建议仍然非常重要。 - -虽然雪乐山公司已不复存在,但该公司对计算机游戏行业产生了持久的影响。对于任何对计算机软件历史感兴趣的人来说,《并非所有童话故事都有美好的结局》都是值得一读的。雪乐山公司在其鼎盛时期处于游戏开发的最前沿,从带领公司走过那个激动人心的岁月的 Ken Williams 身上,我们可以学到许多宝贵的经验。 - -![Book title The Soul of a New Machine][23] - -**[《新机器的灵魂》, 作者:Tracy Kidder][24]**(The Soul of a New Machine) - -*[由 Guarav Kamathe 推荐][25]* - -我是计算机历史的狂热读者。知道这些人们如此依赖(并且经常被认为是理所当然)的计算机是如何形成的,真是令人着迷!我是在 [Bryan Cantrill][27] 的博客文章中,第一次听说 [《新机器的灵魂》][26] (The Soul of a New Machine)这本书的。这是一本由 [Tracy Kidder][29] 编著的非小说类书籍,于 1981 年出版,作者Tracy Kidder也因此获得了 [普利策奖][30]。故事发生在 1970 年代,想象一下你是负责设计 [下一代计算机][31] 工程团队中的一员。故事的背景是在通用数据公司(Data General Corporation),该公司当时是一家小型计算机供应商,正在与美国数字设备公司(Digital Equipment Corporation,简称DEC)的 32 位 VAX 计算机相竞争。这本书概述了通用数据公司内部的两个都想尝试设计新机器的竞争团队,是如何发生不和的。接下来,细致地描绘了随之展开的事件。这本书深入地讲述了相关工程师的思想、他们的工作环境、他们在此过程中面临的技术挑战、他们是如何克服这些困难的、以及压力如何影响到了他们的个人生活等等。任何想知道计算机是怎么制造出来的人都应该阅读这本书。 - -以上就是2022年的推荐阅读书目。它提供了很多非常棒的选择,我相信 Opensource.com 的读者能得到数小时发人深省的阅读时光。想获取更多书籍推荐,请查看我们历年的阅读书目。 - -* [2021 年 Opensource.com 推荐阅读书目][32] -* [2020 年 Opensource.com 推荐阅读书目][33] -* [2019 年 Opensource.com 推荐阅读书目][34] -* [2018 年 Open Organization 推荐阅读书目][35] -* [2016 年 Opensource.com 推荐阅读书目][36] -* [2015 年 Opensource.com 推荐阅读书目][37] -* [2014 年 Opensource.com 推荐阅读书目][38] -* [2013 年 Opensource.com 推荐阅读书目][39] -* [2012 年 Opensource.com 推荐阅读书目][40] -* [2011 年 Opensource.com 推荐阅读书目][41] -* [2010 年 Opensource.com 推荐阅读书目][42] - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/22/6/2022-opensourcecom-summer-reading-list - -作者:[Joshua Allen Holm][a] -选题:[lkxed][b] -译者:[chai001125](https://github.com/chai001125) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/holmja -[b]: https://github.com/lkxed -[1]: https://opensource.com/sites/default/files/lead-images/tea-cup-mug-flowers-book-window.jpg -[2]: https://unsplash.com/@sixteenmilesout?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[3]: https://unsplash.com/s/photos/tea?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[4]: https://opensource.com/sites/default/files/2022-06/97_Things_Every_Java_Programmer_Should_Know_1.jpg -[5]: https://www.oreilly.com/library/view/97-things-every/9781491952689/ -[6]: https://opensource.com/users/seth -[7]: https://opensource.com/sites/default/files/2022-06/A_City_is_Not_a_Computer_0.jpg -[8]: https://press.princeton.edu/books/paperback/9780691208053/a-city-is-not-a-computer -[9]: https://opensource.com/users/scottnesbitt -[10]: https://opensource.com/sites/default/files/2022-06/git_sync_murder_0.jpg -[11]: https://mwl.io/fiction/crime#gsm -[12]: https://opensource.com/users/holmja -[13]: https://opensource.com/sites/default/files/2022-06/Kick_Like_a_Girl.jpg -[14]: https://innerwings.org/books/kick-like-a-girl -[15]: https://opensource.com/users/holmja -[16]: https://opensource.com/sites/default/files/2022-06/Mine.jpg -[17]: https://www.minethebook.com/ -[18]: https://opensource.com/users/bbehrens -[19]: https://opensource.com/sites/default/files/2022-06/Not_All_Fairy_Tales.jpg -[20]: https://kensbook.com/ -[21]: https://opensource.com/users/holmja -[22]: https://en.wikipedia.org/wiki/Mystery_House -[23]: https://opensource.com/sites/default/files/2022-06/The_Soul_of_a_New_Machine.jpg -[24]: https://www.hachettebookgroup.com/titles/tracy-kidder/the-soul-of-a-new-machine/9780316204552/ -[25]: https://opensource.com/users/gkamathe -[26]: https://en.wikipedia.org/wiki/The_Soul_of_a_New_Machine -[27]: https://en.wikipedia.org/wiki/Bryan_Cantrill -[28]: http://dtrace.org/blogs/bmc/2019/02/10/reflecting-on-the-soul-of-a-new-machine/ -[29]: https://en.wikipedia.org/wiki/Tracy_Kidder -[30]: https://www.pulitzer.org/winners/tracy-kidder -[31]: https://en.wikipedia.org/wiki/Data_General_Eclipse_MV/8000 -[32]: https://opensource.com/article/21/6/2021-opensourcecom-summer-reading-list -[33]: https://opensource.com/article/20/6/summer-reading-list -[34]: https://opensource.com/article/19/6/summer-reading-list -[35]: https://opensource.com/open-organization/18/6/summer-reading-2018 -[36]: https://opensource.com/life/16/6/2016-summer-reading-list -[37]: https://opensource.com/life/15/6/2015-summer-reading-list -[38]: https://opensource.com/life/14/6/annual-reading-list-2014 -[39]: https://opensource.com/life/13/6/summer-reading-list-2013 -[40]: https://opensource.com/life/12/7/your-2012-open-source-summer-reading -[41]: https://opensource.com/life/11/7/summer-reading-list -[42]: https://opensource.com/life/10/8/open-books-opensourcecom-summer-reading-list diff --git a/sources/tech/20211012 Create a timer on Linux.md b/translated/tech/20211012 Create a timer on Linux.md similarity index 56% rename from sources/tech/20211012 Create a timer on Linux.md rename to translated/tech/20211012 Create a timer on Linux.md index 2cbfa013aa..12934668ca 100644 --- a/sources/tech/20211012 Create a timer on Linux.md +++ b/translated/tech/20211012 Create a timer on Linux.md @@ -2,37 +2,38 @@ [#]: via: "https://opensource.com/article/21/10/linux-timers" [#]: author: "Stephan Avenwedde https://opensource.com/users/hansic99" [#]: collector: "lujun9972" -[#]: translator: " " +[#]: translator: "FigaroCao" [#]: reviewer: " " [#]: publisher: " " [#]: url: " " -Create a timer on Linux +在Linux中创建计时器 ====== -A tutorial showing how to create a POSIX-compliant interval timer. +这是一个演示如何创建POSIX兼容的间隔计时器的教程 + ![Team checklist][1] -The timing of certain events is a common task for a developer. Common scenarios for timers are watchdogs, cyclic execution of tasks, or scheduling events for a specific time. In this article, I show how to create a POSIX-compliant interval timer using [timer_create(...)][2]. +对开发人员来说,确定某些事件的时间是一项常见任务。 计时器的常见场景是监督任务的循环执行或在特定时间安排事件。 在这篇文章中,我将演示如何使用 [timer_create(...)][2]创建一个POSIX兼容的间隔计时器。 -You can download the source code for the following examples from [GitHub][3]. +你可以从[GitHub][3]下载下面样例的源代码。 -### Prepare Qt Creator +### 准备 Qt Creator -I used [Qt Creator][4] as the IDE for this example. To run and debug the example code in Qt Creator, clone the [GitHub][3] repository, open Qt Creator, and go to **File -> Open File or Project...** and choose the **CMakeLists.txt**: +我使用[Qt Creator][4]作为样例的IDE。为了在Qt Creator运行和调试样例代码,克隆[GitHub][3]仓库,打开Qt Creator,在**File -> Open File or Project...** 并选择 **CMakeLists.txt**: ![Qt Creator open project][5] -Open a project in Qt Creator (CC-BY-SA 4.0) +在Qt Creator中打开项目 (CC-BY-SA 4.0) -After selecting the toolchain, click on **Configure Project**. The project contains three independent examples (we will only cover two of them in this article). With the green-marked menu, switch between the configurations for each example and activate **Run in terminal** for each of them (see the yellow mark below). The currently active example for building and debugging can be selected over the **Debug** button on the bottom left corner (see the orange mark below): +选择工具链之后,点击 **Configure Project**。这个项目包括三个独立的样例(我们在这篇文章中将只会用到其中的两个)。使用绿色标记出来的菜单,可以在每个样例的配置之间切换,并为每个样例激活在终端运行**Run in terminal**(用黄色标记)。当前用于构建和调试的活动示例可以通过左下角的**Debug**按钮进行选择(参见下面的橙色标记)。 ![Project configuration][6] -Project configuration (CC-BY-SA 4.0) +项目配置 (CC-BY-SA 4.0) -### Threading timer +### 线程计时器 -Let's take a look at the _simple_threading_timer.c_ example. This is the simplest one: It shows how an interval timer is created, which calls the function **expired** on expiration. On each expiration, a new thread is created in which the function **expiration** is called. +让我们看看_simple_threading_timer.c_样例。这是最简单的一个。它展示了一个调用了超时函数**expired**的间隔计时器是如何被创建的。 ``` @@ -59,11 +60,11 @@ int main()     struct t_eventData eventData = { .myData = 0 }; -    /*  sigevent specifies behaviour on expiration  */ + /* sigevent指定了过期时要执行的操作 */     struct sigevent sev = { 0 }; -    /* specify start delay and interval -     * it_value and it_interval must not be zero */ + /* 指定启动延时时间和间隔时间 + * it_value和it_interval不能为零 */     struct itimerspec its = {   .it_value.tv_sec  = 1,                                 .it_value.tv_nsec = 0, @@ -77,7 +78,7 @@ int main()     sev.sigev_notify_function = &expired;     sev.sigev_value.sival_ptr = &eventData; -    /* create timer */ + /* 创建计时器 */     res = timer_create(CLOCK_REALTIME, &sev, &timerId);     if (res != 0){ @@ -85,7 +86,7 @@ int main()         [exit][10](-1);     } -    /* start timer */ + /* 启动计时器 */     res = timer_settime(timerId, 0, &its, NULL);     if (res != 0){ @@ -104,24 +105,24 @@ void expired(union sigval timer_data){ } ``` -The advantage of this approach is its small footprint, in terms of code and simple debugging. The disadvantage is the additional overhead due to the creation of a new thread on expiration and, consequently, the less deterministic behavior. +这种方法的优点是在代码和简单的调试方面占用空间小。缺点是由于到期时创建新线程而增加额外的开销和因此导致的不太确定的结果。 -### Interrupt Signal Timer +### 中断信号计时器 -Another possibility to be notified by an expired timer is based on a [kernel signal][12]. Instead of creating a new thread each time the timer expires, the kernel sends a signal to the process, the process is interrupted, and the corresponding signal handler is called. +超时计时器通知的另一种可能性是基于[内核信号][12]。 内核不是在每次计时器过期时创建一个新线程,而是向进程发送一个信号,进程被中断,并调用相应的信号处理程序。 -As the default action when receiving a signal is to terminate the process (see [signal][13] man page), we have to prepare Qt Creator in advance so that properly debugging is possible. +由于接收信号时的默认操作是终止进程(参考[信号][13]手册页),我们必须要提前准备Qt Creator,以便进行正确的调试。 -The default behavior of Qt Creator when the debuggee receives a signal is: +当被调试对象接收到一个信号时,Qt Creator的默认行为是: - * Interrupt execution and switch to the debugger context. - * Display a pop-up window that notifies the user about the reception of a signal. + * 中断执行并切换到调试器上下文。 + * 显示一个弹出窗口,通知用户接收到信号。 -Both actions are not wanted as the reception of a signal is part of our application. +这两种操作都不需要,因为信号的接收是我们应用程序的一部分。 -Qt Creator uses GDB in the background. In order to prevent GDB from stopping the execution when the process receives a signal, go to **Tools** -> **Options**, select **Debugger**, and navigate to **Locals & Expressions**. Add the following expression to _Debugging Helper Customization_: +Qt Creator在后台使用GDB。为了防止GDB在进程接收到信号时停止执行,在“工具”菜单**Tools** -> **Options**,选择 **Debugger**,并导航到**Locals & Expressions**。添加下面的表达式到_Debugging Helper Customization_: ``` @@ -130,23 +131,23 @@ Qt Creator uses GDB in the background. In order to prevent GDB from stopping the ![Signal no stop with error][14] -Sig 34 no stop with error (CC-BY-SA 4.0) +Sig 34 发生错误时未停止 (CC-BY-SA 4.0) -You can find more information about GDB signal handling in the [GDB documentation][15]. +你可以在[GDB documentation][15]找到更多关于GDB信号处理的信息。 -Next, we want to suppress the pop-up window that notifies us every time a signal is received when we stop in the signal handler: +接下来,当我们在信号处理程序中停止时,我们想要抑制每次接收到信号时通知我们的弹出窗口: ![Signal 34 pop up box][16] -Signal 34 pop-up box (CC-BY-SA 4.0) +Signal 34 弹出窗口 (CC-BY-SA 4.0) -To do so, navigate to the tab **GDB** and uncheck the marked checkbox: +为此,导航到**GDB**标签并取消勾选标记的复选框: ![Timer signal windows][17] -Timer signal windows (CC-BY-SA 4.0) +计时器信号窗口 (CC-BY-SA 4.0) -Now you can properly debug the _signal_interrupt_timer_. The actual implementation of the signal timer is a bit more complex: +现在你可以正确的调试_signal_interrupt_timer_。真正的信号计时器的实施会更复杂一些: ``` @@ -177,10 +178,10 @@ int main()     struct sigevent sev = { 0 };     struct t_eventData eventData = { .myData = 0 }; -    /* specifies the action when receiving a signal */ + /* 指定收到信号时的操作 */     struct sigaction sa = { 0 }; -    /* specify start delay and interval */ + /* 指定启动延时的时间和间隔时间 */     struct itimerspec its = {   .it_value.tv_sec  = 1,                                 .it_value.tv_nsec = 0,                                 .it_interval.tv_sec  = 1, @@ -193,7 +194,7 @@ int main()     sev.sigev_signo = SIGRTMIN;     sev.sigev_value.sival_ptr = &eventData; -    /* create timer */ + /* 创建计时器 */     res = timer_create(CLOCK_REALTIME, &sev, &timerId);     if ( res != 0){ @@ -201,22 +202,22 @@ int main()         [exit][10](-1);     } -    /* specifz signal and handler */ + /* 指定信号和处理程序 */     sa.sa_flags = SA_SIGINFO;     sa.sa_sigaction = handler; -    /* Initialize signal */ + /* 初始化信号 */     sigemptyset(&sa.sa_mask);     [printf][7]("Establishing handler for signal %d\n", SIGRTMIN); -    /* Register signal handler */ + /* 注册信号处理程序 */     if (sigaction(SIGRTMIN, &sa, NULL) == -1){         [fprintf][8](stderr, "Error sigaction: %s\n", [strerror][9](errno));         [exit][10](-1);     } -    /* start timer */ + /* 启动计时器 */     res = timer_settime(timerId, 0, &its, NULL);     if ( res != 0){ @@ -239,11 +240,11 @@ handler(int sig, siginfo_t *si, void *uc) } ``` -In contrast to the threading timer, we have to initialize the signal and register a signal handler. This approach is more performant as it won't cause the creation of additional threads. For this reason, the execution of the signal handler is also more deterministic. The drawback is clearly the extra configuration effort to debug this properly. +与线程计时器相反,我们必须初始化信号并注册一个信号处理程序。这种方法性能更好,因为它不会导致创建额外的线程。因此,信号处理程序的执行也更加确定。缺点显然是正确调试需要额外的配置工作。 -### Summary +### 总结 -Both methods described in this article are close-to-the-kernel implementations of timers. Even if the [timer_create(...)][2] function is part of the POSIX specification, it is not possible to compile the sample code on a FreeBSD system due to small differences in data structures. Besides this drawback, such an implementation gives you fine-grained control for general-purpose timing applications. +本文中描述的两种方法都是计时器的接近内核的实现。即使[timer_create(...)][2]函数是POSIX规范的一部分, 在FreeBSD系统上编译样例代码是不可能的,因为数据结构的差异很小。除了这个缺点之外,这种实现还为通用计时应用程序提供了细粒度控制。 -------------------------------------------------------------------------------- @@ -251,7 +252,7 @@ via: https://opensource.com/article/21/10/linux-timers 作者:[Stephan Avenwedde][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[FigaroCao](https://github.com/FigaroCao) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 diff --git a/translated/tech/20221230.0 ⭐️ An Open-Source Alternative to Google, Alexa, and Siri in Works for Home Assistant Platform.md b/translated/tech/20221230.0 ⭐️ An Open-Source Alternative to Google, Alexa, and Siri in Works for Home Assistant Platform.md new file mode 100644 index 0000000000..adba1b18db --- /dev/null +++ b/translated/tech/20221230.0 ⭐️ An Open-Source Alternative to Google, Alexa, and Siri in Works for Home Assistant Platform.md @@ -0,0 +1,80 @@ +[#]: subject: "An Open-Source Alternative to Google, Alexa, and Siri in Works for Home Assistant Platform" +[#]: via: "https://news.itsfoss.com/open-source-assistant/" +[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +Google、Alexa 和 Siri 的开源替代品 Home Assistant 平台 +====== + +一个开源助手可以取代谷歌、Alexa 和 Siri? + +![An Open-Source Alternative to Google, Alexa, and Siri in Works for Home Assistant Platform][1] + +**Home Assistant** 是一个开源的智能家居平台,专注于为用户提供本地控制和隐私。它可以从树莓派或甚至本地服务器上运行。 + +他们还有一个订阅服务,可以获得额外的功能,如支持 Alexa 和谷歌助理,它由一家名为 “[Nabu Casa][2]” 的公司管理。 + +> 💡 该公司由 Home Assistant 的创始人 [Paulus Schoutsen][3] 领导。 + +在上周的[博客][4]中,Paulus 宣布了**一个新的开源项目,旨在提供一个没有主动互联网连接的语音助手**或任何其他大型科技语音助手。 + +这是_一个对 Google、Alexa 和 Siri 的开源挑战者?_ 😲 + +让我们看看这到底是怎么回事。 + +**它是什么?:**这将是 Home Assistant 应用的一部分,将提供在本地运行语音命令的能力,以控制连接的智能设备。 + +Paulus 还断言,他们最重要的优先事项是支持不同的语言,他说: + +> 人们需要能够用自己的语言说话,因为对于智能家居的语音助手来说,这是最容易接受和唯一可以接受的语言。 + +为了推动这一努力,Rhasspy 的创造者 [Mike Hansen][5] 已经被拉来实现这一目标。 + +对于那些不知道的人来说,[Rhasspy][6] 是另一个开源软件,专门提供一个由其用户社区支持的完全离线的语音助手。 + +如果你问我,我觉得 Home Assistant 的这个功能将由 Rhasspy 提供,这是一件好事。 + +_为什么要重新发明已经存在的东西?最好是在它的基础上进行改进。_ + +**可以期待什么?:**最初,语音助手将不能做你可能期待的事情。因此,像进行网络搜索、打电话、玩语音游戏等,都是不可能的。 + +它所关注的反而是**语音助手应该有的基本功能**。这样做是为了确保他们面前的工作是可控的。 + +他们的目标是从几个动作开始,然后围绕它们建立语言模型。 + +在目前的状态下,Home Assistant 在其用户界面上支持 62 种不同的语言。他们计划用他们的语音助手增加对所有这些语言的支持。 + +**何时期待?:**他们已经开始了这方面的工作,为每种语言建立一个[意图匹配句子集合][7]。 + +这意味着社区可以通过将智能设备的命令改编成各自的母语来为语音助手的发展做出贡献。 + +他们的目标是在 **2023** 年的某个时候发布,并提到这将是“_语音年_”。 + +我认为一个可以离线工作的开源语音助手可以是一个非常有用的东西。它可以让你不受大科技公司的任何追踪。 + +💬 _还有一个额外的好处是,它的开发背后有一个庞大的社区,有什么理由不喜欢呢?_ + +-------------------------------------------------------------------------------- + +via: https://news.itsfoss.com/open-source-assistant/ + +作者:[Sourav Rudra][a] +选题:[lkxed][b] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://news.itsfoss.com/author/sourav/ +[b]: https://github.com/lkxed +[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/open-source-home-assistant-in-works.png +[2]: https://www.nabucasa.com +[3]: https://twitter.com/balloob +[4]: https://www.home-assistant.io/blog/2022/12/20/year-of-voice/ +[5]: https://synesthesiam.com +[6]: https://rhasspy.readthedocs.io +[7]: https://github.com/home-assistant/intents diff --git a/translated/tech/20230102.0 ⭐️ How to read and write files in Rust.md b/translated/tech/20230102.0 ⭐️ How to read and write files in Rust.md new file mode 100644 index 0000000000..4a0453ae31 --- /dev/null +++ b/translated/tech/20230102.0 ⭐️ How to read and write files in Rust.md @@ -0,0 +1,111 @@ +[#]: subject: "How to read and write files in Rust" +[#]: via: "https://opensource.com/article/23/1/read-write-files-rust" +[#]: author: "Stephan Avenwedde https://opensource.com/users/hansic99" +[#]: collector: "lkxed" +[#]: translator: "geekpi" +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " + +如何在 Rust 中读取和写入文件 +====== + +知道如何读写文件对各种用途都很有用。在 Rust 中,这项任务是通过标准库中的文件系统模块([std::fs][1])完成的。在这篇文章中,我将向你介绍如何使用这个模块。 + +为了演示这项任务,我准备了一些示例代码,也可以在 [GitHub][2] 上找到。 + +### 准备工作 + +在使用 Rust 时,失败的函数会返回 [Result][3] 类型。尤其是文件系统模块会返回专门的类型 [std::io::Result][4]。有了这些知识,你可以从 `main()` 函数中返回相同的类型: + +``` +fn main() -> std::io::Result<()> { +/* ...code comes here... */ +``` + +### Rust 文件写入 + +在 Rust 中执行文件的 I/O 操作是相对容易的。写入文件可以简化为一行: + +``` +use std::fs; +fs::write("favorite_websites.txt", b"opensource.com")?; +Ok(()) +``` + +使用错误传播操作符 `(?)`,错误信息被传递到调用函数中,随后可以处理错误。由于 `main()` 是调用栈中唯一的其他函数,如果写操作失败,错误信息将被传递到控制台输出。 + +[fs::write][5] 函数的语法是非常先进的。第一个参数是文件路径,它必须是 [std::path::Path][6] 类型。第二个参数是内容,它实际上是一个字节切片(`[u8]`)。Rust 将传递的参数转换为正确的类型。幸运的是,这些类型基本上是下面的例子中所处理的唯一类型。 + +使用文件描述符类型 [std::fs::File][7] 可以实现对写操作更简洁的访问: + +``` +let mut file = fs::File::create("favorite_websites.txt")?; +file.write_all(b"opensource.com\n")?; +Ok(()) +``` + +由于文件类型实现了 [Write][8] 特性,所以可以使用相关的方法来写入文件。然而,`create` 方法可以覆盖一个已经存在的文件。 + +为了获得对文件描述符的更多控制,必须使用 [std::fs::OpenOptions][9] 类型。这提供了类似于其他语言中的打开模式: + +``` +let mut file = fs::OpenOptions::new() + .append(true) + .open("favorite_websites.txt")?; + +file.write_all(b"sourceforge.net\n")?; +``` + +### Rust 文件读取 + +适用于写的东西也适用于读。读取也可以通过简单的一行代码来完成: + +``` +let websites = fs::read_to_string("favorite_websites.txt")?; +``` + +以上一行读取文件的内容并返回一个字符串。除了读取字符串,还有 [std::fs::read][10] 函数,如果文件包含二进制数据,该函数会将数据读成一个字节向量。 + +下一个例子显示了如何将文件的内容读入内存,随后逐行打印到控制台: + +``` +let file = fs::File::open("favorite_websites.txt")?; +let lines = io::BufReader::new(file).lines(); + +for line in lines { + if let Ok(_line) = line { + println!(">>> {}", _line); + } +} +``` + +### 总结 + +如果你已经熟悉了其他编程语言,你可能已经注意到没有 `close-` 函数(或类似的)来释放文件句柄。在 Rust 中,当相关变量超出作用域,文件句柄就会被释放。为了定义关闭行为,可以在文件表示的周围应用作用域 `({ })`。我建议你熟悉 [Read][11] 和 [Write][8] 特性,因为你可以在许多其他类型中找到这个特性的实现。 + + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/23/1/read-write-files-rust + +作者:[Stephan Avenwedde][a] +选题:[lkxed][b] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/hansic99 +[b]: https://github.com/lkxed +[1]: https://doc.rust-lang.org/std/fs/ +[2]: https://github.com/hANSIc99/rust_file_io +[3]: https://doc.rust-lang.org/std/result/enum.Result.html +[4]: https://doc.rust-lang.org/std/io/type.Result.html +[5]: https://doc.rust-lang.org/std/fs/fn.write.html +[6]: https://doc.rust-lang.org/std/path/struct.Path.html +[7]: https://doc.rust-lang.org/std/fs/struct.File.html +[8]: https://doc.rust-lang.org/std/io/trait.Write.html +[9]: https://doc.rust-lang.org/std/fs/struct.OpenOptions.html# +[10]: https://doc.rust-lang.org/std/fs/fn.read.html +[11]: https://doc.rust-lang.org/std/io/trait.Read.html