Merge branch 'LCTT:master' into optimize-java-serverless-functions-kubernetes

This commit is contained in:
cool-summer-021 2022-10-20 15:41:50 +08:00 committed by GitHub
commit e0acc16d87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 762 additions and 852 deletions

View File

@ -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]
> **<ruby>[每个 Java 程序员都应该知道的 97 件事:专家的集体智慧][5]<rt>97 Things Every Java Programmer Should Know: Collective Wisdom from the Experts</rt></ruby>》**
编辑Kevlin Henney 和 Trisha Gee
*[由 Seth Kenlon 推荐][6]*
这本书是由 73 位在软件行业工作的不同作者共同撰写。它的优秀之处在于它不仅仅适用于 Java 编程。当然,有些章节会涉及 Java但是也还有一些其他话题例如了解你的容器环境、如何更快更好地交付软件、以及不要隐藏你的开发工具这些适用于任何语言的开发。
更好的是,有些章节同样适用于生活中的问题。将问题和任务分成小的部分是解决任何问题的好建议;建立多样化的团队对所有合作者都很重要;由从散乱的一块块拼图到拼好的完成品,看起来像是拼图玩家的思路,也适用于不同的工作角色。
每章只有几页,总共有 97 个章节,你可以轻松跳过不适用于你自己的章节。无论你是一直在写 Java 代码、或者只是学过一点 Java亦或是尚未开始学习 Java对于对代码和软件开发过程感兴趣的极客来说这都会是一本好书。
### 《城市不是计算机:其他的城市智能》
![Book title A City is Not a Computer][7]
> **<ruby>[城市不是计算机:其他的城市智能][8]<rt>A City is Not a Computer: Other Urban Intelligences</rt></ruby>》**
作者Shannon Mattern
*[由 Scott Nesbitt 推荐][9]*
如今,让一切变得智能已经成为一种 *时尚*:我们的手机、家用电器、手表、汽车,甚至是城市都变得智能化了。
对于城市的智能化,这意味着传感器变得无处不在,在我们开展业务时收集数据,并根据这些数据向我们推送信息(无论数据有用与否)。
这就引出了一个问题,将所有高科技技术嵌入到城市中是否会使得城市智能化呢?在《城市不是计算机》这本书中,作者 Shannon Mattern 认为并不是这样的。
城市智能化的目标之一是为市民提供服务和更好的城市参与感。Mattern 指出,但是实际上,智慧城市“希望将技术专家的管理想法与公共服务相融合,从而将公民重新设置为‘消费者’和‘用户’”,然而,这并不是在鼓励公民积极参与城市的生活和治理。
第二个问题是关于智慧城市收集的数据。我们不知道收集了什么数据,以及收集了多少数据。我们也不知道这些数据使用在什么地方,以及是谁使用的。收集的数据太多了,以至于处理数据的市政工作人员会不堪重负。他们无法处理所有数据,因此他们专注于短期容易实现的任务,而忽略了更深层次和更紧迫的问题。这绝对达不到在推广智慧城市时所承诺的目标:智慧城市将成为解决城市困境的良药。
《城市不是计算机》是一本短小精悍、经过深入研究的、反对拥抱智慧城市的论证。这本书让我们思考智慧城市的真正目的:要让百姓真正受益于城市智能化,并引发我们的思考:发展智慧城市是否必要呢。
### 《git sync 谋杀案》
![Book title git sync murder][10]
> **<ruby>[git sync 谋杀案][11]<rt>git sync murder</rt></ruby>》**
作者Michael Warren Lucas
*[由 Joshua Allen Holm 推荐][12]*
Dale Whitehead 宁愿呆在家里通过他的电脑终端与世界连接尤其是在他参加的最后一次会议上发生的事情之后。在那次会议上Dale 扮演了一个业余侦探的角色,解决了一桩谋杀案。你可以在该系列的第一本书《<ruby>git commit 谋杀案<rt>git commit murder</rt></ruby>》中读到那个案件。
现在Dale 回到家,参加另一个会议,他再次发现自己成为了侦探。在《<ruby>git sync 谋杀案<rt>git sync murder</rt></ruby>》中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]
> **<ruby>[像女孩一样踢球][14]<rt>Kick Like a Girl</rt></ruby>》**
作者Melissa Di Donato Roos
*[由 Joshua Allen Holm 推荐][15]*
没有人喜欢被孤立,当女孩 Francesca 想在公园里踢足球时,她也是这样。男孩们不会和她一起玩,因为她是女孩,所以她不高兴地回家了。她的母亲安慰她,讲述了有重要影响力的著名女性的故事。《像女孩一样踢球》中详述的历史人物包括历史中来自许多不同领域的女性。读者将了解 Frida Kahlo、Madeleine Albright、<ruby>阿达·洛芙莱斯<rt>Ada Lovelace</rt></ruby>、Rosa Parks、Amelia Earhart、<ruby>玛丽·居里<rt>Marie Curie</rt></ruby>居里夫人、Valentina Tereshkova、<ruby>弗洛伦斯·南丁格尔<rt>Florence Nightingale</rt></ruby> 和 Malala Yousafzai 的故事。听完这些鼓舞人心的人物故事后Francesca 回到公园,向男孩们发起了一场足球挑战。
《像女孩一样踢球》这本书的特色是作者 Melissa Di Donato RoosSUSE 的 CEOLCTT 译注SUSE 是一家总部位于德国的软件公司,创立于 1992 年,以提供企业级 Linux 为主要业务)引人入胜的写作和 Ange Allen 的出色插图。这本书非常适合年轻读者他们会喜欢押韵的文字和书中的彩色插图。Melissa Di Donato Roos 还写了另外两本童书,《<ruby>美人鱼如何便便<rt>How Do Mermaids Poo?</rt></ruby>》和《<ruby>魔盒<rt>The Magic Box</rt></ruby>》,这两本书也都值得一读。
### 《这是我的!:所有权的潜规则如何控制着我们的生活》
![Book title Mine!][16]
> **<ruby>[这是我的!:所有权的潜规则如何控制着我们的生活][17]<rt>Mine!: How the Hidden Rules of Ownership Control Our Lives</rt></ruby>》**
作者Michael Heller 和 James Salzman
*[由 Bryan Behrenshausen 推荐][18]*
作者 Michael Heller 和 James Salzman 在文章《这是我的》中写道“你对所有权的很多了解都是错误的”。这是一种被吸引到开源领域的人不得不接受所有权规则的对抗性邀请。这本书肯定是为开源爱好者而写的他们对代码、思想、各种知识产权的所有权的看法往往与主流观点和普遍接受的认知不同。在本书中Heller 和 Salzman 列出了“所有权的隐藏规则”,这些规则管理着谁能控制对什么事物的访问。这些所有权规则是微妙的、强大的、有着深刻的历史惯例。这些所有权规则已经变得如此普遍,以至于看起来无可争议,这是因为“先到先得”或“种瓜得瓜,种豆得豆”的规则已经成为陈词滥调。然而,我们看到它们无处不在:在飞机上,为宝贵的腿部空间而战;在街道上,邻居们为铲好雪的停车位发生争执;在法庭上,陪审团决定谁能控制你的遗产和你的 DNA。在当下的数字时代所有权的替代理论能否为重新思考基本权利创造空间作者们认为这是可以的。如果这是正确的我们可能会回应在未来开源软件能否成为所有权运作的模型呢
### 《并非所有童话故事都有幸福的结局:雪乐山公司的兴衰》
![Book Title Not All Fairy Tales Have Happy Endings][19]
> **<ruby>[并非所有童话故事都有幸福的结局:雪乐山公司的兴衰][20]<rt>Not All Fairy Tales Have Happy Endings: The Rise and Fall of Sierra On-Line</rt></ruby>》**
作者Ken Williams
*[由 Joshua Allen Holm 推荐][21]*
在 1980 年代和 1990 年代,<ruby>雪乐山公司<rt>Sierra On-Line</rt></ruby>是计算机软件行业的巨头。这家由 Ken 和 Roberta Williams 夫妻创立的公司,出身并不起眼,但却发布了许多标志性的电脑游戏。《<ruby>国王密使<rt>King's Quest</rt></ruby>》、《<ruby>宇宙传奇<rt>Space Quest</rt></ruby>》、《<ruby>荣耀任务<rt>Quest for Glory</rt></ruby>》、《Leisure Suit Larry》 和 《<ruby>狩魔猎人<rt>Gabriel Knight</rt></ruby>》 只是该公司几个最大的专属系列中的很小一部分。
《并非所有童话故事都有幸福的结局》这本书,涵盖了从雪乐山公司发布第一款游戏 《<ruby>[神秘屋][22]<rt>Mystery House</rt></ruby>》,到该公司不幸地被 CUC 国际公司收购以及后续的所有内容。雪乐山品牌在被收购后仍存活了一段时间,但 Williams 创立的雪乐山已不复存在。Ken Williams 以一种只有他才能做到的方式,讲述了雪乐山公司的整个历史。雪乐山的历史叙述穿插了一些 Williams 提出的管理和计算机编程建议的章节。虽然 Ken Williams 在写这本书时,已经离开这个行业很多年了,但他的建议仍然非常重要。
虽然雪乐山公司已不复存在,但该公司对计算机游戏行业产生了持久的影响。对于任何对计算机软件历史感兴趣的人来说,《并非所有童话故事都有美好的结局》都是值得一读的。雪乐山公司在其鼎盛时期处于游戏开发的最前沿,从带领公司走过那个激动人心的岁月的 Ken Williams 身上,我们可以学到许多宝贵的经验。
### 《新机器的灵魂》
![Book title The Soul of a New Machine][23]
> **<ruby>[新机器的灵魂][24]<rt>The Soul of a New Machine</rt></ruby>》**
作者Tracy Kidder
*[由 Guarav Kamathe 推荐][25]*
我是计算机历史的狂热读者。知道这些人们如此依赖(并且经常被认为是理所当然)的计算机是如何形成的,真是令人着迷!我是在 [Bryan Cantrill][27] 的博客文章中,第一次听说 《[新机器的灵魂][26]》这本书的。这是一本由 [Tracy Kidder][29] 编著的非虚构书籍,于 1981 年出版,作者 Tracy Kidder也因此获得了 [普利策奖][30]。故事发生在 1970 年代,想象一下你是负责设计 [下一代计算机][31] 工程团队中的一员。故事的背景是在<ruby>通用数据公司<rt>Data General Corporation</rt></ruby>,该公司当时是一家小型计算机供应商,正在与美国<ruby>数字设备公司<rt>Digital Equipment Corporation</rt></ruby>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

View File

@ -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 和 elsePython 变得与任何其他平台一样好或一样坏。例如,采用一种面向对象的方法!许多 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/<name>')
def get(name):
pass
```
注意 @app.route 映射到 API /user/<name>,与之对应的函数的 get()
注意 `@app.route` 映射到 API `/user/<name>`,与之对应的函数的 `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 包含 UserRepositoryImplapp.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/) 荣誉推出

View File

@ -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 <ruby>软件应用<rt>Software</rt></ruby> 43 在 Xubuntu 22.10 的 Xfce 桌面下看起来很棒。如果你将其与 Xfce 原生外观和带有 CSD/SSD例如 <ruby>磁盘应用<rt>Disk</rt></ruby>)的 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/) 荣誉推出

View File

@ -1,38 +0,0 @@
[#]: subject: "Worlds 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: " "
Worlds 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 worlds 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 HFCLs 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 HFCLs 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 countrys 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

View File

@ -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 were 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/

View File

@ -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/

View File

@ -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, youll 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.
Its 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:
* Its 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
Lets 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, youll have to install it first.
You can use your distributions 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. Youll 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 wont 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

View File

@ -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 dont 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 accounts 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 systems 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/

View File

@ -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
======
Heres 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; its 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 Plasmas 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.
Its 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.
Heres 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, its 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. Its often easy to forget after you authenticate yourself as root.
Theres 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

View File

@ -2,7 +2,7 @@
[#]: via: "https://www.linuxtechi.com/static-ip-address-on-ubuntu-server/"
[#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "

View File

@ -2,7 +2,7 @@
[#]: via: "https://www.debugpoint.com/snake-game-linux-terminal/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "

View File

@ -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 RoosSUSE译注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

View File

@ -0,0 +1,145 @@
[#]: 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: " "
开源笔记软件Joplin背后的故事
======
Laurent Cozic与我坐下来讨论了Joplin是如何开始的以及这个开源笔记软件的下一步计划。
在这次采访中我见到了笔记软件Joplin的创建者Laurent Cozic。[Joplin][2]是[20i][3]奖励的赢家,所以我想了解是什么让它如此成功,以及他如何实现的。
**您能总结一下什么是Joplin吗**
[Joplin][4]是一个开源的笔记软件。它可以你捕获你的想法并从任何设备安全地访问它们。
**显然,还有很多其他的笔记应用,那么除了免费使用之外,它还有什么不同呢?**
对我们的许多用户来说,它是开源的这一事实是一个非常重要的方面,因为这意味着没有供应商对数据的封锁,而且数据可以很容易地被导出并以各种方式访问。
我们还关注用户的安全和数据隐私,特别是端到端加密同步功能,以及通过对应用的任何连接保持透明。我们还与安全研究人员合作,以保证软件更加安全。
最后Joplin可以通过几种不同的方式进行定制--通过插件可以添加新的功能和主题来定制应用程序的外观。我们还公开了一个数据API它允许第三方应用程序访问Joplin的数据。
**[[相关阅读5款Linux上的笔记应用]][5]**
**这是一个竞争非常激烈的市场,那么是什么激发了您创建它的想法?**
这是有原因的的。我从2016年开始研究它因为我不喜欢现有的商业记事应用程序笔记、附件或标签不能轻易被其他工具导出或操作。
这主要是由于供应商的封锁,另外还有供应商缺乏动力,因为他们没有动力帮助用户将他们的数据转移到其他应用程序。还有一个问题是,这些公司通常会以纯文本形式保存笔记,而这有可能造成数据隐私和安全方面的问题。
因此,我决定开始创建一个简单且具有同步功能的移动和终端应用程序,使我的笔记能够轻松地在我的设备上访问。之后又创建了桌面应用程序,项目从此开始发展。
![Chrome OS上Joplin的图片][6]
图片来自: (Opensource.com, CC BY-SA 4.0)
**编写Joplin花了多长时间呢?**
自2016年以来我一直在断断续续地工作但并不是专门去维护。不过在过去的两年里我更加专注于它。
**对于准备创建自己的开源应用的人,你有什么建议?**
挑选一个你自己使用的项目和你喜欢的技术来工作。
管理一个开源项目有时是很困难的,所以必须要有足够的兴趣去让它变得更有价值。那么我想 "早发布,多发布 "在这里也适用,这样你就可以衡量用户的兴趣,以及是否有必要花时间进一步开发这个项目。
**有多少人参与了Joplin的开发?**
有3-4人参与开发。目前我们还有6名学生在谷歌代码之夏(Google Summer of Code)项目中工作。
**许多人都创建开源项目但Joplin对您来说是一个巨大的成功。关于如何获得关注你能否给开发者提供一些建议?**
没有简单的公式,说实话,我不认为我可以在另一个项目中复制这种成功!你必须对你所做的事情充满热情,但同时也要严谨、有组织、稳步前进,确保代码质量保持高水平,并拥有大量的测试单元以防止倒退。
同时,对于你收到的用户反馈保持开放的态度,并在此基础上改进项目。
一旦你掌握了这些,剩下的可能就全靠运气了——如果你做的项目让很多人都感兴趣,事情可能会顺利进行!
**一旦你得到关注,但如果你没有传统的营销预算,你如何保持这种势头?**
我认为这是在于倾听项目周围的社区。举个例子来说我从未计划过建立一个论坛但有人在GitHub上提出了这个建议所以我创建了一个论坛它成为了一个分享想法、讨论功能、提供支持等很好的方式。社区也普遍欢迎新人这形成了一种良性循环。
除此以外,定期就项目进行沟通也很重要。
我们没有一个公开的路线图因为大多数功能的ETA通常是 "我不知道"但我试图就即将到来的功能、新版本等进行沟通。我们也会就重要的事件进行沟通特别是谷歌的代码之夏或者当我们有机会赢得像20i FOSS奖的时候。
最后,我们很快将在伦敦举行一次面对面的聚会,这是与社区和合作者保持联系的另一种方式。
**用户的反馈是如何影响路线图的?**
很明显贡献者们经常仅仅因为他们需要某个特性而从事某些工作。但除此之外我们还根据论坛和GitHub问题追踪器上的信息追踪对用户来说似乎最重要的功能。
例如移动应用程序现在具有很高的优先级因为我们经常从用户那里听到它的限制和问题是有效使用Joplin的一个问题。
![桌面使用Joplin的图片][8]
图片来自: (Opensource.com, CC BY-SA 4.0)
**您如何跟进开发和编写代码的最新进展?**
主要是通过阅读Hacker News!
**你有个人最喜欢的自由/开源软件可以推荐吗?**
在不太知名的项目中,[SpeedCrunch][9]作为一个计算器非常好。它有很多功能,而且很好的是它能保留以前所有计算的历史。
我还使用[KeepassXC][10]作为密码管理器。在过去的几年里,它一直在稳步改进。
最后,[Visual Studio Code][11]作为一个跨平台的文本编辑器非常棒。
**我原以为Joplin是以Janis的名字命名的但维基百科告诉我来自是Scoot Joplin。你为什么选择这个名字?**
我起初想把它命名为 "jot-it",但我想的这个名字已经被人取走了。
由于我那时经常听斯科特-乔普林的拉格泰姆音乐(我相当痴迷于此),我决定使用他的名字。
我认为产品名称的含义并不太重要,只要名称本身易于书写、发音、记忆,并与一些积极的东西(或至少没有消极的东西)有关。
我觉得"Joplin"符合所有条件。
**关于Joplin的计划您还有什么可以说的吗也许是对一个新功能的独家预告**
如前所述,我们非常希望在用户体验设计和新功能方面对移动应用进行改进。
我们也在考虑创建一个“插件商店”,以便更容易地浏览和安装插件。
**感谢Laurent — 祝Joplin的未来好运.**
*[这篇访谈最初发表在20i博客上已获得许可进行转载。][12]*
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/joplin-interview
作者:[Richard Chambers][a]
选题:[lkxed][b]
译者:[MareDevi](https://github.com/MareDevi)
校对:[校对者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/

View File

@ -0,0 +1,147 @@
[#]: 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: " "
[#]: publisher: " "
[#]: url: " "
解决 Linux 中的“Bash: Command Not Found”报错
======
_**本新手教程展示了在 Debian、Ubuntu 和其他的 Linux 发行版上如何解决 Bash: command not found 这一报错。**_
当你在 Linux 中使用命令时你希望得到终端输出的结果。但有时候你会遇到终端显示“未找到命令command not found”这一报错。
![][1]
对于这个问题,并没有直截了当且单一的解决方案。你必须自己做一些故障排除来解决这个报错。
老实说要解决它并不难。该报错信息已经给出了一些提示“bash: command not found”这说明你的 shell或者 Linux 系统)找不到你输入的那条命令。
shell或 Linux 系统)找不到命令,有三个可能的原因:
* 你将命令的名称拼错了
* 该命令还没有安装
* 该命令是一个可执行脚本,其位置未知
接下来我们会详细介绍“bash: command not found”这一报错的每一个原因。
### 解决“bash: command not found”报错
![][2]
#### 方法 1:再次检查命令名称有没有写错
每个人都会犯错误,尤其是在打字的时候。你输入的命令可能存在错别字(也就是你写错啦)。
你应该特别注意:
* 是否拼对了正确的命令名称
* 是否在命令与其选项之间加上了空格
* 是否在拼写中混淆了 1数字 1、I大写的 i和 l小写的 L
* 是否正确使用了大写字母或者小写字母
看看下面的示例,因为我写错了 ls 命令所以会导致“command not found”报错。
![][3]
所以,请再次仔细确认你输入得对不对。
#### 方法 2确保命令已安装在你的系统上
这是“命令未找到”错误的另一个常见原因。如果命令尚未安装,则无法运行该命令。
虽然在默认情况下,你的 Linux 发行版自带安装了大量命令,但是不会在系统中预装 _所有的_ 命令行工具。如果你尝试运行的命令不是一个流行的常用命令,那么你需要先安装它。
你可以使用发行版的软件包管理器来安装命令。
![You may have to install the missing command][4]
有时候,某一常用命令可能也不再能使用了,甚至你也不能够安装这个命令了。这种情况下,你需要找到一个替代的命令,来得到结果。
以现已弃用的 ipconfig 命令为例。网络上的旧教程依旧会让你使用 ipconfig 命令,来 [获取本机的 IP 地址][5] 和网络接口信息,但是,在较新的 Linux 版本中,你已经无法使用 ipconfig 了。ipconfig 命令已被 ifconfig 命令所取代。
![Some popular commands get discontinued over the time][1]
有时候,你的系统可能甚至找不到一些非常常见的命令。当你在 Docker 容器中运行 Linux 发行版时就通常如此。Docker 容器为了缩小操作系统映像的大小,容器中通常不包含那些常见的 Linux 命令。
这就是为什么使用 Docker 的用户会碰到 [ping命令未找到][6]ping command not found 等报错的原因。
![Docker containers often have only a few commands installed][7]
因此,这种情况下的解决方案是安装缺失的命令,或者是找到一个与缺失命令有同等功能的工具。
#### 方法 3检查命令是否是一个路径正确的可执行脚本
这是 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 新手时,很多事情可能会让你不知所措。但是,当你了解问题的根本原因时,你的知识会逐渐增加。
对于“未找到命令”command not found报错来说没有简单的解决方案。我提供给你了一些提示和要点我希望这对你的故障排除有帮助。
如果你仍然有疑问或需要帮助,请在评论区告诉我吧。
--------------------------------------------------------------------------------
via: https://itsfoss.com/bash-command-not-found/
作者:[Abhishek Prakash][a]
选题:[lujun9972][b]
译者:[chai001125](https://github.com/chai001125)
校对:[校对者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

View File

@ -0,0 +1,93 @@
[#]: 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: " "
如何在 Ubuntu Linux 上更新 Google Chrome
======
你设法在你的 Ubuntu 系统上安装了 Google Chrome 浏览器。现在你想知道如何让浏览器保持更新。
在 Windows 和 macOS 上,当 Chrome 上有可用更新时,你会在浏览器中收到通知,你可以从浏览器中点击更新选项。
Linux 中的情况有所不同。你不会从浏览器更新 Chrome。你要使用系统更新对其进行更新。
是的。当 Chrome 上有可用的新更新时Ubuntu 会通过系统更新工具通知你。
![当有新版本的 Chrome 可用时Ubuntu 会发送通知][1]
你只需单击立即安装按钮,在被要求时输入你的帐户密码并将 Chrome 更新到新版本。
让我告诉你为什么会在系统级别看到更新,以及如何在命令行中更新 Google Chrome。
### 方法 1使用系统更新更新谷歌浏览器
你最初是如何安装 Chrome 的?你从 [Chrome 网站][2]获得了 deb 安装程序文件,并使用它来[在 Ubuntu 上安装 Chrome][3]。
当你这样做时,谷歌会在你系统的源列表中添加一个仓库条目。这样,你的系统就会信任来自 Google 仓库的包。
![Google Chrome 存储库添加到 Ubuntu 系统][4]
对于添加到系统中的所有此类条目,包更新通过 Ubuntu 更新程序集中进行。
这就是为什么当 Google Chrome和其他已安装的应用有可用更新时你的 Ubuntu 系统会向你发送通知。
![Chrome 更新可通过系统更新与其他应用一起使用][5]
**单击“立即安装”按钮并在要求时输入你的密码**。很快,系统将安装所有可升级的软件包。
根据更新偏好,通知可能不是立即的。如果需要,你可以手动运行更新程序工具并查看适用于你的 Ubuntu 系统的更新。
![运行软件更新程序以查看你的系统有哪些可用更新][6]
### 方法 2在 Ubuntu 命令行中更新 Chrome
如果你更喜欢终端而不是图形界面,你也可以使用命令更新 Chrome。
打开终端,并依次运行以下命令:
```
sudo apt update
sudo apt --only-upgrade install google-chrome-stable
```
第一条命令更新包缓存,以便你的系统知道可以升级哪些包。
第二条命令[仅更新单个包][7],即 Google 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)
校对:[校对者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/

View File

@ -0,0 +1,81 @@
[#]: 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: " "
在 GNOME 文件中以 Root 身份打开文件的最简单方法
======
这是在 GNOME Files 中以 root 身份访问文件或目录的最简单方法。
![][1]
在 Windows 中,你通常可以在右键单击上下文菜单中以“以管理员身份打开”的方式打开文件或文件夹。
该功能是文件管理器的一部分,即适用于 Windows。它是 Windows 资源管理器的一部分。但是,它是由操作系统及其权限控制模块执行的。
在 Linux 发行版和文件管理器中,情况略有不同。不同的桌面有自己的处理方式。
由于以管理员(或 root身份修改文件和文件夹是有风险的并且可能导致系统损坏因此用户无法通过文件管理器的 GUI 轻松使用该功能。
例如KDE Plasma 的默认文件管理器 Dolphin 最近[添加了此功能][2],因此当需要 root 权限时,它会通过 PolicyKit KDE Agent (polkit) 窗口询问你,如下所示。而不是相反的方式。你想在文件管理器中通过 root 打开/执行一些东西。
值得一提的是,你不能使用 “sudo dolphin” 以 root 权限运行文件管理器本身。
![使用 Polkit 实现 KIO 后的 Dolphin root 访问权限][3]
在某种程度上,它挽救了许多不可预见的情况。但是高级用户总是可以通过终端使用 sudo 来完成他们的工作。
### GNOME Files (Nautilus) 和对文件、目录的 root 访问权限
话虽如此,[GNOME Files][4](又名 Nautilus有一种方法可以通过 root 打开文件和文件夹。
以下是方法。
* 打开 GNOME Files 或 Nautilus。
* 然后单击左侧窗格中的其他位置。
* 按 CTRL+L 调出地址栏。
* 在地址栏中,输入下面的内容并回车。
```
admin:///
```
* 它会要求输入管理员密码。当你成功验证自己,你就会以管理员身份打开系统。
* 现在,从这里开始,无论你做什么,它都是管理员或 root。
![以管理员身份输入位置地址][5]
![输入管理员密码][6]
![以 root 身份打开 GNOME Files][7]
但是,与往常一样,请小心你作为管理员所做的事情。在你以 root 身份验证自己之后,通常很容易忘记。
这些选项不容易看到总是有原因的,以防止你和许多新的 Linux 用户破坏他们的系统。
干杯。
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/gnome-files-root-access/
作者:[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/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