Merge pull request #1 from LCTT/master

同步
This commit is contained in:
MareDevi 2022-09-29 08:01:16 +08:00 committed by GitHub
commit 34369c6af6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
89 changed files with 9326 additions and 2313 deletions

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1 @@
blank_issues_enabled: true

18
.github/ISSUE_TEMPLATE/questions.yml vendored Normal file
View File

@ -0,0 +1,18 @@
name: Ask Questions | 提问
description: Please describe your problem. | 请描述您的问题。
labels: ["question"]
assignees: []
body:
- type: markdown
attributes:
value: |
Please answer these questions before you submit the desired feature. | 请在您提交期望的功能之前,回答以下这些问题
- type: textarea
attributes:
label: Your Questions
description: Please describe your problem. | 请描述您的问题。
placeholder: I have a question...
validations:
required: true

67
.github/ISSUE_TEMPLATE/topics.yml vendored Normal file
View File

@ -0,0 +1,67 @@
name: 推荐选题
description: 推荐一个选题
title: "[推荐类型] 文章日期 文章标题"
labels: []
assignees:
- lkxed
body:
- type: markdown
attributes:
value: |
标题请使用 **`[推荐类型] 文章日期 文章标题`** 格式,选题类型、文章日期和文章标题中间有一个 **空格**。
完整示例:
- [推荐选题] 20220823 The Lost Art of the Makefile
- [推荐选题] 20220905 Linus Torvalds Uses Apple MacBook Hardware to Release Linux Kernel 5.19
- type: input
id: url
attributes:
label: 原文链接地址
description: 填写原文章的链接地址
placeholder: https://......
validations:
required: true
- type: dropdown
id: terms
attributes:
label: 版权协议
description: 填写原文章的版权协议
multiple: false
options:
- CC-SA-BY
- 其它公域许可证
- 已获取作者授权
validations:
required: true
- type: dropdown
id: difficulty
attributes:
label: 文章难度
description: 选择文章的难度
multiple: false
options:
- 困难
- 一般
- 容易
validations:
required: true
- type: dropdown
id: category
attributes:
label: 文章分类
description: 选择文章的分类
multiple: false
options:
- 新闻news
- 观点talk
- 技术tech
validations:
required: true
- type: textarea
id: reason
attributes:
label: 推荐理由
description: 填写你的推荐理由
placeholder:
validations:
required: false

View File

@ -0,0 +1,189 @@
[#]: subject: "20 Facts About Linus Torvalds, the Creator of Linux and Git"
[#]: via: "https://itsfoss.com/linus-torvalds-facts/"
[#]: author: "Abhishek Prakash https://itsfoss.com/"
[#]: collector: "lkxed"
[#]: translator: "gpchn"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15063-1.html"
关于 Linux 和 Git 的创造者 Linus Torvalds 的 20 件趣事
======
> 一些已知的、或鲜为人知的事情 —— 这里有 20 件关于 Linux 内核创造者 Linus Torvalds 的趣事。
![Linus TorvaldsLinux 和 Git 的创造者][1]
[Linus Benedict Torvalds][2](林纳斯·本纳第克特·托瓦兹),在 1991 年还是一名攻读硕士的芬兰学生时,他开发了一个类 Unix 操作系统。从那时起,它引发了一场革命:今天,它为大多数 Web 服务器、许多嵌入式设备和 [500 强超级计算机][3] 中的每一台提供支持。
我已经写过一些鲜为人知的 [关于 Linux 的事实][4],但这篇文章不是关于 Linux 的而是关于它的创造者Linus Torvalds。
通过阅读他的传记《<ruby>[只是为了好玩][5]<rt>Just for Fun</rt></ruby>》,我了解了有关 Torvalds 的许多事情。如果你有兴趣,你也可以 [订购一本传记][6]。(这是一个 [受益推荐][7] 链接。)
### 关于 Linus Torvalds 的 20 个有趣事实
你可能已经知道一些关于 Linus 的事情,但是通过阅读这篇文章,你很有可能会了解一些关于他的新趣事。
#### 1、以诺贝尔奖获得者的名字命名
Linus Benedict Torvalds 于 1969 年 12 月 28 日出生于赫尔辛基。他来自一个记者家庭。他的父亲 [Nils Torvalds][11] 是芬兰政治家,可能是未来参加选举的总统候选人。
他的名字来自于诺贝尔化学与和平奖的双奖获得者 [Linus Pauling][12] 的名字。
#### 2、世界上所有的 Torvalds 都是亲戚
虽然你可能会找到几个名字为 Linus 的人,但你不会找到很多姓 Torvalds 的人 —— 因为“正确”的拼写实际上是 Torvald没有 s。他的祖父将名字从 Torvald 改为 Torvalds并在末尾添加了一个“s”。于是Torvalds 王朝(如果我可以这么称呼它的话)开始了。
由于这是一个不寻常的姓氏,所以世界上只有不到 30 个 Torvalds而且他们都是亲戚这是 Linus Torvalds 在他的传记中说的。
![年轻的 Linus Torvalds 和他的记者妹妹 Sara Torvalds][13]
#### 3、他的第一台电脑是 Commodore Vic 20
10 岁时Linus 开始在他外祖父的 Commodore Vic 20 上使用 BASIC 编写程序。这使他发现自己对计算机和编程的热爱。
#### 4、Linus Torwalds 少尉
尽管他更喜欢花时间在电脑上而不是体育活动上,但他必须参加强制性的军事训练。他的军衔是少尉。
#### 5、因为他没有钱购买 UNIX他创造了 Linux
1991 年初,出于对 [MS-DOS][14] 和 [MINIX][15] 不满意Torvalds 想购买一套 UNIX 系统。对我们来说幸运的是,他没有足够的钱。因此,他决定从头开始制作自己的 UNIX 复制品。
#### 6、Linux 可以被称为 Freax
1991 年 9 月Linus 发布了 Linux代表 “Linus's MINIX”并鼓励他的同好们使用其源代码进行更广泛的分发。
Linus 认为 Linux 这个名字太自负了。他想把它改成 Freax基于 free、freak 和 MINIX但他的朋友 Lemmarke 已经在 FTP 服务器上创建了一个名为 Linux 的目录。因此Linux 的名称才得以沿用下来。LCTT 译注:这个故事和我听到的不同。)
#### 7、Linux 是他在大学的主要项目
《Linux一种便携式操作系统》是他的硕士论文题目。
#### 8、他娶了他的学生
1993 年,他在赫尔辛基大学任教时,给学生们布置了一份写电子邮件的作业。是的,当时撰写电子邮件没那么简单。
一位名叫 Tove Monni 的女学生完成了这项任务,给他发送一封电子邮件,并邀请他出去约会。他接受了,三年后,他们三个女儿中的第一个出生了。
我应该说他开创了网恋的潮流吗?嗯……不!让我们就此打住 ;)
![Linus Torvalds 和他的妻子 Tove Monni Torvalds][16]
#### 9、Linus 有一颗以他的名字命名的小行星
他的名字获得了无数荣誉,包括一颗名为 [9793 Torvalds][17] 的小行星。
#### 10、Linus 不得不为 Linux 的商标而战
Linux 是 Linus Torvalds 的注册商标。Torvalds 最初并不关心这个商标,但在 1994 年 8 月William R. Della Croce, Jr. 注册了 Linux 商标,并开始向 Linux 开发人员索要版税。作为回应Torvalds 起诉了他,并于 1997 年解决了此案。
#### 11、史蒂夫·乔布斯希望他为苹果公司的 macOS 工作
2000 年,苹果公司的创始人 [史蒂夫·乔布斯邀请他为苹果公司的 macOS 工作][19]。Linus 拒绝了这个报酬丰厚的提议,并继续致力于开发 Linux 内核。
#### 12、Linus 还创建了 Git
大多数人都知道 Linus Torvalds 创建 Linux 内核,但他还创建了 [Git][20],这是一个广泛用于全世界的软件开发的版本控制系统。
直到 2005 年,(当时)专有服务 [BitKeeper][21] 还用于 Linux 内核的开发。而当 Bitkeeper 关闭其免费服务时Linus Torvalds 自己创建了 Git因为其他版本控制系统都不能满足他的需求。
#### 13、如今 Linus 几乎不编程
尽管 Linus 全职从事 Linux 内核工作但他几乎不再为它编写任何代码。事实上Linux 内核中的大部分代码都来自世界各地的贡献者。他在内核维护人员的帮助下,确保每个版本发布都能顺利进行。
#### 14、Torvalds 讨厌 C++
Linus Torvalds 极其 [不喜欢 C++ 编程语言][22],并对此直言不讳。他开玩笑说 Linux 内核的编译速度都比 C++ 程序快。
#### 15、即使是 Linus Torvalds 也发现 Linux 难以安装(现在你可以自我感觉良好了)
几年前Linus 说过 [他发现 Debian 难以安装][23]。众所周知,他 [在他的主要工作站上使用 Fedora][24]。
#### 16、他喜欢水肺潜水
Linus Torvalds 喜欢水肺潜水。他甚至创造了一种供水肺潜水员使用的潜水记录工具 [Subsurface][25]。你会惊讶地发现,有时他甚至会在论坛上回答一些普通问题。
![穿着潜水装备的 Linus Torvalds][26]
#### 17、满嘴脏话的 Torvalds 改善了他的行为
Torvalds 以在 Linux 内核邮件列表中使用 [轻度脏话][27] 而闻名,这遭到了一些业内人士的批评。但是,很难批评他对 “[F**k you, NVIDIA][28]” 的玩笑,因为它促使英伟达为 Linux 内核提供了更好的适配。
2018 年,[Torvalds 暂时离开了 Linux 内核开发,以改善他的行为][29]。这是在他签署有争议的 [Linux 内核开发人员行为准则][30] 之前完成的。
![Linus Torvalds 对英伟达的中指:去你的!英伟达][31]
#### 18、他太害羞了不敢在公共场合讲话
Linus 对公开演讲感到不舒服。他不怎么参加活动。而当他必须参加时,他更喜欢坐下来接受主持人的采访。这是他最喜欢的公开演讲方式。
#### 19、他不是社交媒体爱好者
[Google Plus][32] 是他使用过的唯一社交媒体平台。他甚至在空闲时花了一些时间 [点评了小组件][33]。Google Plus 现已停用了,因此他没有其他社交媒体帐户。
#### 20、Torvalds 定居在美国
Linus 于 1997 年移居美国,并与他的妻子 Tove 和他们的三个女儿在那里定居。他于 2010 年成为美国公民。目前,作为 [Linux 基金会][34] 的成员,他全职从事 Linux 内核工作。
很难说 Linus Torvalds 的净资产是多少,或者 Linus Torvalds 的收入是多少,因为这些信息从未公开过。
![Tove 和 Linus Torvalds 和他们的女儿 Patricia、Daniela 和 Celeste][35]
如果你有兴趣了解更多有关 Linus Torvalds 早期生活的信息,我建议你阅读他的传记,书名为 《<ruby>[只是为了好玩][5]<rt>Just for Fun</rt></ruby>》。
*免责声明:这里的一些图片来源于互联网,我没有图像的版权,我也不打算用这篇文章侵犯 Torvalds 家族的隐私。*
--------------------------------------------------------------------------------
via: https://itsfoss.com/linus-torvalds-facts/
作者:[Abhishek Prakash][a]
选题:[lkxed][b]
译者:[gpchn](https://github.com/gpchn)
校对:[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/2017/12/Linus-Torvalds-featured-800x450.png
[2]: https://en.wikipedia.org/wiki/Linus_Torvalds
[3]: https://itsfoss.com/linux-runs-top-supercomputers/
[4]: https://itsfoss.com/facts-linux-kernel/
[5]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[6]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[7]: https://itsfoss.com/affiliate-policy/
[8]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[9]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[10]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[11]: https://en.wikipedia.org/wiki/Nils_Torvalds
[12]: https://en.wikipedia.org/wiki/Linus_Pauling
[13]: https://itsfoss.com/wp-content/uploads/2017/12/Linus_and_sara_Torvalds.jpg
[14]: https://en.wikipedia.org/wiki/MS-DOS
[15]: https://www.minix3.org/
[16]: https://itsfoss.com/wp-content/uploads/2017/12/Linus_torvalds-wife-800x533.jpg
[17]: http://enacademic.com/dic.nsf/enwiki/1928421
[18]: https://youtu.be/eE-ovSOQK0Y
[19]: https://www.macrumors.com/2012/03/22/steve-jobs-tried-to-hire-linux-creator-linus-torvalds-to-work-on-os-x/
[20]: https://en.wikipedia.org/wiki/Git
[21]: https://www.bitkeeper.org/
[22]: https://lwn.net/Articles/249460/
[23]: https://www.youtube.com/watch?v=qHGTs1NSB1s
[24]: https://plus.google.com/+LinusTorvalds/posts/Wh3qTjMMbLC
[25]: https://subsurface-divelog.org/
[26]: https://itsfoss.com/wp-content/uploads/2017/12/Linus_Torvalds_in_SCUBA_gear.jpg
[27]: https://www.theregister.co.uk/2016/08/26/linus_torvalds_calls_own_lawyers_nasty_festering_disease/
[28]: https://www.youtube.com/watch?v=_36yNWw_07g
[29]: https://itsfoss.com/torvalds-takes-a-break-from-linux/
[30]: https://itsfoss.com/linux-code-of-conduct/
[31]: https://itsfoss.com/wp-content/uploads/2012/09/Linus-Torvalds-Fuck-You-Nvidia.jpg
[32]: https://plus.google.com/+LinusTorvalds
[33]: https://plus.google.com/collection/4lfbIE
[34]: https://www.linuxfoundation.org/
[35]: https://itsfoss.com/wp-content/uploads/2017/12/patriciatorvalds.jpg
[36]: https://opensource.com/life/15/8/patricia-torvalds-interview
[37]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[38]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[39]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[40]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID

View File

@ -0,0 +1,68 @@
[#]: collector: (lujun9972)
[#]: translator: (MareDevi)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-15081-1.html)
[#]: subject: (How open source builds distributed trust)
[#]: via: (https://opensource.com/article/21/1/open-source-distributed-trust)
[#]: author: (Mike Bursell https://opensource.com/users/mikecamel)
开源如何构建分布式信任
======
> 对开源的信任是一个正反馈循环。
![信任][1]
这是我即将在 [Wiley][2] 出版的《<ruby>计算和云计算中的信任<rt>Trust in Computing and the Cloud</rt></ruby>》一书中经过编辑的节选,也是我之前写的一篇文章<ruby>[《信任与选择开源》][3]<rt>Trust & choosing open source</rt></ruby>的延伸。
在那篇文章中,我提出了一个问题。当我们说 “我相信开放源码软件” 时,我们在做什么?作为回答,我认为,我们正在做的是确定有足够多的编写和测试该软件的人与我有类似的要求,而且他们的专业知识加在一起,使我使用该软件的风险可以接受。我同时也介绍了 “<ruby>分布式信任<rt>distributed trust</rt></ruby>” 的概念。
在社区内分布信任的概念是亚里士多德提出的 “<ruby>人群智慧理论<rt>wisdom of the crowd theory</rt></ruby>” 的应用,其中的假设是,许多人的意见通常比一个人或少数人的意见更有明智。虽然在某些情况下,最简单的形式显然是错误的 —— 最明显的例子是民众对极权主义政权的支持 —— 但这一原则可以为建立某些信息提供一个非常有效的机制。
我们称这种集体经验的提炼为“分布式信任”,它通过互联网上的许多机制收集。如 TripAdvisor 或 Glassdoor记录了关于组织或其提供的服务的信息还有像 UrbanSitter 或 LinkedIn允许用户添加关于特定人的信息例如见 LinkedIn 的推荐和技能与个人档案中的认可部分)。从这些例子中可以获得的利益因网络效应而大大增加,因为随着成员数量的增加,成员之间可能的联系数量也成倍增加。
分布式信任的例子还包括像 Twitter 这样的平台一个账户的追随者数量可以被视为衡量其声誉甚至是衡量其可信度的标准我们应该以强烈的怀疑态度去看待这种计算。事实上Twitter 认为它必须解决拥有大量追随者的账户的社会力量问题,并建立了一个为 “验证账户” 机制,让人们知道 “一个具有公共利益的账户是真实的”。但是有趣的是,该公司不得不暂停这项服务,因为用户对 “验证” 的确切含义或暗示的期望出现了问题:这就是不同群体之间对内容理解不同的典型案例。
那么,开源的相关性在哪里呢?开源的社区方面实际上就是建立分布式信任的一个驱动力。因为一旦你成为一个开源项目周围社区的一部分,你就会承担一个或多个角色,一旦你说你 “信任” 一个开源项目,你就会开始信任这些角色(见我之前的文章)。例如,架构师、设计师、开发人员、审查人员、技术写作、测试人员、部署人员、错误报告者或错误修复者。你对一个项目的参与越多,你就越是社区的一部分,久而久之,这就可以成为一个 “<ruby>实践社区<rt>community of practice</rt></ruby>”。
Jean Lave 和 Etienne Wenger 在<ruby>[《情境学习:正当的外围参与》][4]<rt>Situated Learning: Legitimate Peripheral Participation</rt></ruby>一书中提出了实践社区的概念,团体在成员热情分享和参与共同活动的过程中演变成社区,导致他们的技能和知识共同提高。这里的核心概念是:当参与者围绕实践社区进行学习时,他们同时也成为社区的成员。
> “正当的的外围参与既指在实践中知识技能身份的发展,也指实践社区的再生产和转化。”
Wenger 在 <ruby>[《实践社区:学习、意义和身份》][5]<rt>Communities of Practice: Learning, Meaning, and Identity</rt></ruby> 中进一步探讨了实践社区的概念:它们如何形成、对其健康的要求,以及它们如何鼓励学习。他认为,意义的可协商性(“我们为什么要一起工作,我们要实现什么?”)是实践社区的核心,并指出,如果没有个人的参与、想象力和一致性,实践社区将不会有活力。
我们可以把这一点与我们对分布式信任如何建立和构建的看法结合起来:当你意识到你对开源的影响可以与其他人的影响相同时,你对社区成员的分布式信任关系就变得不那么具有传递性(第二或第三手甚至更遥远),而是更加直接。你明白,你对你所运行的软件的创建、维护、需求和质量所能产生的影响,可以与所有其他以前匿名的贡献者一样,你现在正在与他们形成一个实践社区,或者你正在加入他们的现有实践社区。然后,你就会成为一个信任关系网络的一部分,这个网络是分布式的,但与你购买和操作专利软件时的经历相差不大。
这个过程并不会停止:因为开源项目的一个共同属性是“交叉授粉”,即一个项目的开发者也在其他项目上工作。由于多个开源项目之间的网络效应,使得对其他项目的重用和依赖性上升,导致整个项目的吸收量增加。
这就很容易理解为什么许多开源贡献者会成为开源爱好者或传道者,不仅仅是为单个项目,而是为整个开源项目。事实上,斯坦福大学社会学家 [Mark Granovetter][6] 的工作表明,社区内太多的强关系会导致小团体和停滞不前,但弱关系会使思想和趋势在社区内流动。这种对其他项目和围绕它们存在的社区的认识,以及想法在项目间的灵活性,导致分布式信任能够被扩展(尽管保证比较弱),超越贡献者在他们有直接经验的项目中所经历的直接或短链间接关系,并向其他项目扩展,因为外部观察或外围参与显示贡献者之间存在类似关系。
简单地说,参与开源项目并通过参与建立信任关系的行为会导致对类似的开源项目或只是对其他类似的开源项目产生更强的分布式信任。
这对我们每个人来说意味着什么?它意味着我们越是参与开源,我们对开源的信任度就越高,而其他人对开源的参与度也会相应提高,从而对开源的信任度也会提高。对开源的信任不仅仅是一个网络效应:它是一个正反馈循环!
* * *
_本文最初发表于 [Alice, Eve, and Bob][7]经作者许可转载。_
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/1/open-source-distributed-trust
作者:[Mike Bursell][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/mikecamel
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_trust.png?itok=KMfi0Rdo (Trust)
[2]: https://wiley.com/
[3]: https://aliceevebob.com/2019/06/18/trust-choosing-open-source/
[4]: https://books.google.com/books/about/Situated_Learning.html?id=CAVIOrW3vYAC
[5]: https://books.google.com/books?id=Jb8mAAAAQBAJ&dq=Communities%20of%20Practice:%20Learning,%20meaning%20and%20identity&lr=
[6]: https://en.wikipedia.org/wiki/Mark_Granovetter
[7]: https://aliceevebob.com/2020/11/17/how-open-source-builds-distributed-trust/

View File

@ -0,0 +1,161 @@
[#]: subject: (Why FreeDOS has 16 colors)
[#]: via: (https://opensource.com/article/21/6/freedos-sixteen-colors)
[#]: author: (Jim Hall https://opensource.com/users/jim-hall)
[#]: collector: (lujun9972)
[#]: translator: (gpchn)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-15054-1.html)
FreeDOS 的 16 种颜色的由来
======
> 为什么文本只能使用这些有限的颜色显示,为什么 FreeDOS 使用这些颜色和阴影,而不是其他颜色?答案就像技术中的许多事情一样,历史原因。
![](https://img.linux.net.cn/data/attachment/album/202209/21/171602vhhj99xkxshxbbvk.jpg)
如果你仔细了解过 FreeDOS你可能已经注意到文本使用有限的颜色范围 —— 16 种文本颜色和 8 种背景颜色。这类似于 Linux 显示文本颜色的方式 —— 你或许能够在 Linux 终端中更改 _文本颜色_,但你仍然只能使用 16 种文本颜色和 8 种背景颜色。
![终端颜色][2]
*DOS 文本有 16 种颜色和 8 种背景颜色(吉姆·霍尔,[CC-BY SA 4.0][3]*
为什么文本只能使用这些有限的颜色显示,为什么 FreeDOS 使用这些颜色和阴影,而不是其他颜色?
答案就像技术中的许多事情一样,历史原因。
### PC 色彩的由来
为了解释为什么文本只有 16 种颜色,让我给你讲一个关于第一台 IBM 个人计算机的故事。这个故事的部分内容可能有些杜撰,但基本内容已经足够接近。
IBM 于 1981 年发布了<ruby>个人计算机<rt>Personal Computer</rt></ruby> 5150“IBM PC”。该 PC 使用了一个简单的监视器屏幕,以绿色显示文本。由于此显示器仅适用于一种颜色,因此被称为 <ruby>单色<rt>monochrome</rt></ruby>“IBM 5151 单色显示器”,搭载 IBM <ruby>单色显示适配器<rt>Monochrome Display Adapter</rt></ruby>,即 MDA
同年IBM 发布了 PC 的更新版本,带来了惊人的技术成就 —— 颜色!新的 IBM 5153 彩色显示器依赖于新的 IBM <ruby>彩色图形适配器<rt>Color Graphics Adapter</rt></ruby>CGA。正是由于这个原始的 CGA所有的 DOS 文本都继承了它们的颜色。
但在我们讨论那一部分之前,我们首先需要了解一些关于颜色的东西。当我们谈论计算机屏幕上的颜色时,我们谈论的是混合 _三原色_(红色、绿色和蓝色)的不同值。你可以将不同级别(“亮度”)的红光、绿光和蓝光混合在一起,以创建几乎任何颜色。混合红色和蓝色光,你会得到洋红色。混合蓝色和绿色,你会得到青色或浅绿色。均匀地混合所有颜色,你会得到白色。没有任何浅色,你会看到黑色(没有颜色)。
![三原色][4]
*混合红色、绿色和蓝色光以获得不同的颜色(吉姆·霍尔,[CC-BY SA 4.0][3]*
IBM 5153 彩色显示器通过在<ruby>阴极射线管<rt>cathode ray tube</rt></ruby>CRT上点亮微小的红色、绿色和蓝色光点来向用户呈现颜色。这些小点排列得非常紧密并以红色、绿色和蓝色的三色点组成一个“像素”的模式排列。通过控制同时点亮哪些荧光点IBM 5153 彩色显示器可以显示不同颜色的像素。
![CRT 像素][5]
*每个红色、绿色和蓝色三元组都是一个像素(吉姆·霍尔,[CC-BY SA 4.0][3]*
顺便说一句,即使是现代显示器也使用这种红色、绿色和蓝色点的组合来表示颜色。现代计算机的不同之处在于,每个像素都使用红色、绿色和蓝色 LED 灯(通常并排排列),而不是微小的荧光点。计算机可以打开或关闭每个 LED 灯,以混合每个像素中的红色、绿色和蓝色。
![液晶像素][6]
*每个红色、绿色和蓝色三元组都是一个像素(吉姆·霍尔,[CC-BY SA 4.0][3]*
### 定义 CGA 颜色
IBM 工程师意识到他们可以通过混合红色、绿色和蓝色像素来显示多种颜色。在最简单的情况下,你可以假设单个像素中的每个红色、绿色和蓝色点要么“开”,要么“关”。正如任何计算机程序员都会告诉你的那样,你可以将“开”和“关”表示为二进制 —— 11 = 开)和 00 = 关)。
用 1 或 0 表示红色、绿色和蓝色意味着你可以组合多达八种颜色,从 000红色、绿色和蓝色都关闭到 111红色、绿色和蓝色都打开。请注意位模式类似于“RGB”因此 RGB=001 是蓝色的只有蓝色是打开的RGB=011 是青色的(绿色和蓝色都打开了):
| 颜色 | 代码 | 名称 |
| --- | --- | --- |
| <span style="background-color:black;"> </span> | 000 | 黑 |
| <span style="background-color:blue;"> </span> | 001 | 蓝 |
| <span style="background-color:green;"> </span> | 010 | 绿 |
| <span style="background-color:cyan;"> </span> | 011 | 青 |
| <span style="background-color:red;"> </span> | 100 | 红 |
| <span style="background-color:magenta;"> </span> | 101 | 洋红 |
| <span style="background-color:yellow;"> </span> | 110 | 黄 |
| <span style="background-color:white;"> </span> | 111 | 白 |
但这只是最简单的情况。一位特别聪明的 IBM 工程师意识到,只需再添加一点,你就可以将颜色数量从 8 种颜色增加到 16 种。因此,我们可以使用像 iRGB 这样的位模式,而不是像 RGB 这样的位模式。我们将把这个额外的“i”位称为“强度”位因为如果我们将“强度”位设置为 1那么我们将在全亮度下点亮红色、绿色和蓝色如果“强度”位为 0关闭我们可以使用一些中级亮度。
有了这个简单的修复程序,现在 CGA 可以显示 16 种颜色为了简单起见IBM 工程师将高强度颜色称为常规颜色名称的“明亮”版本。因此,“红色”与“亮红色”配对,“洋红色”与“亮洋红色”配对。
| 颜色 | 代码 | 名称 | 颜色 | 代码 | 名称 |
| :----: | :----: | :----: | :----: | :----: | :----: |
| <span style="background-color:#000;"> </span> | 0000 | 黑 | <span style="background-color:#000;"> </span> | 1000 | 亮黑 |
| <span style="background-color:#007;"> </span> | 0001 | 蓝 | <span style="background-color:#00F;"> </span> | 1001 | 亮蓝 |
| <span style="background-color:#070;"> </span> | 0010 | 绿 | <span style="background-color:#0F0;"> </span> | 1010 | 亮绿 |
| <span style="background-color:#077;"> </span> | 0011 | 青 | <span style="background-color:#0FF;"> </span> | 1011 | 亮青 |
| <span style="background-color:#700;"> </span> | 0100 | 红 | <span style="background-color:#F00;"> </span> | 1100 | 亮红 |
| <span style="background-color:#707;"> </span> | 0101 | 洋红 | <span style="background-color:#F0F;"> </span> | 1101 | 亮洋红 |
| <span style="background-color:#770;"> </span> | 0110 | 黄 | <span style="background-color:#FF0;"> </span> | 1110 | 亮黄 |
| <span style="background-color:#777;"> </span> | 0111 | 白 | <span style="background-color:#FFF;"> </span> | 1111 | 亮白 |
哦不,等等!这实际上不是十六种颜色。如果你注意到 iRGB=0000黑色和 iRGB=1000亮黑色它们都是相同的 _黑色_。没有颜色可以“亮”,所以它们都是普通的黑色。这意味着我们只有 15 种颜色,而不是我们希望的 16 种颜色。
但 IBM 有聪明的工程师为他们工作,他们意识到如何解决这个问题以获得 16 种颜色。IBM 实际上没有实现直接的 RGB 到 iRGB而是实现了 _类_ iRGB 方案。随着这一变化IBM 为每个光点设置了四个亮度级别完全关闭、三分之一亮度、三分之二亮度和全亮度。如果“亮度”位被关闭那么每个红色、绿色和蓝色光点将以三分之二的亮度点亮。如果你打开“亮度”位RGB 颜色中的所有 0 都将以三分之一的亮度点亮,而所有 1 都将以全亮度点亮。
让我用另一种方式向你描述这一点,使用 Web 颜色代码表示。如果你熟悉 HTML 颜色,你可能知道你可以使用 `#RGB` 表示颜色,其中 RGB 表示红色、绿色和蓝色值的组合,每个值都在十六进制值 0 到 F 之间。因此,使用 IBM 修改后的 iRGB 定义iRGB=0001 是 #00a蓝色iRGB=1001 是 #55f亮蓝色因为对于高亮度颜色RGB=001 中的所有零点都以三分之一的亮度点亮0 到 F 刻度上的“5”左右RGB=001 中的所有零点都以三分之二的亮度点亮0 到 F刻度上的“A”
| 颜色 | 代码 | 名称 | 颜色 | 代码 | 名称 |
| :----: | :----: | :----: | :----: | :----: | :----: |
| <span style="background-color:#000;"> </span> | 0000 | 黑 | <span style="background-color:#555;"> </span> | 1000 | 亮黑 |
| <span style="background-color:#00A;"> </span> | 0001 | 蓝 | <span style="background-color:#55F;"> </span> | 1001 | 亮蓝 |
| <span style="background-color:#0A0;"> </span> | 0010 | 绿 | <span style="background-color:#5F5;"> </span> | 1010 | 亮绿 |
| <span style="background-color:#0AA;"> </span> | 0011 | 青 | <span style="background-color:#5FF;"> </span> | 1011 | 亮青 |
| <span style="background-color:#A00;"> </span> | 0100 | 红 | <span style="background-color:#F55;"> </span> | 1100 | 亮红 |
| <span style="background-color:#A0A;"> </span> | 0101 | 洋红 | <span style="background-color:#F5F;"> </span> | 1101 | 亮洋红 |
| <span style="background-color:#AA0;"> </span> | 0110 | 黄 | <span style="background-color:#FF5;"> </span> | 1110 | 亮黄 |
| <span style="background-color:#AAA;"> </span> | 0111 | 白 | <span style="background-color:#FFF;"> </span> | 1111 | 亮白 |
有了这些颜色,我们终于完成了!我们拥有从 iRGB=0000黑色到 iRGB=1111亮白色以及介于两者之间的所有颜色的全光谱。就像彩虹般的颜色这很漂亮。
除了……不,等等,这里有问题!我们实际上还不能复制彩虹的所有颜色。我们在小学学到的方便的助记符是 ROYGBIV它可以帮助我们记住彩虹的颜色有红色、橙色、黄色、绿色、蓝色、靛蓝和紫色。我们修改后的 iRGB 配色方案包括红色、黄色、绿色和蓝色——我们可以将其“伪造”为靛蓝和紫色,但是我们缺少橙色。遭了!
![彩虹][7]
*一条美丽的彩虹——不幸的是它含有橙色。([Paweł Fijałkowski][8],公共)*
为了解决这个问题,聪明的 IBM 工程师对 RGB=110 做了最后的修复。高强度颜色iRGB=1110以全亮度点亮红色和绿色荧光粉点以产生黄色但是在低亮度颜色iRGB=0110他们以三分之二的亮度点亮红色以三分之一的亮度点亮绿色。这将 iRGB=0110 变成了橙色——尽管它后来被称为“棕色”,因为 IBM 不得不在某处弄乱标准名称。
| 颜色 | 代码 | 名称 | 颜色 | 代码 | 名称 |
| :----: | :----: | :----: | :----: | :----: | :----: |
| <span style="background-color:#000;"> </span> | 0000 | 黑 | <span style="background-color:#555;"> </span> | 1000 | 亮黑 |
| <span style="background-color:#00A;"> </span> | 0001 | 蓝 | <span style="background-color:#55F;"> </span> | 1001 | 亮蓝 |
| <span style="background-color:#0A0;"> </span> | 0010 | 绿 | <span style="background-color:#5F5;"> </span> | 1010 | 亮绿 |
| <span style="background-color:#0AA;"> </span> | 0011 | 青 | <span style="background-color:#5FF;"> </span> | 1011 | 亮青 |
| <span style="background-color:#A00;"> </span> | 0100 | 红 | <span style="background-color:#F55;"> </span> | 1100 | 亮红 |
| <span style="background-color:#A0A;"> </span> | 0101 | 洋红 | <span style="background-color:#F5F;"> </span> | 1101 | 亮洋红 |
| <span style="background-color:#A50;"> </span> | **0110** | **棕** | <span style="background-color:#FF5;"> </span> | 1110 | 黄 |
| <span style="background-color:#AAA;"> </span> | 0111 | 白 | <span style="background-color:#FFF;"> </span> | 1111 | 亮白 |
这就是 CGA 以及扩展的 DOS 获得十六种颜色的方式!如果你好奇,这也是为什么会有“亮黑色”的原因,即使它只是一种灰色阴影。
### 表示颜色(位和字节)
但是你可能想知道:为什么 DOS 可以显示 16 种文本颜色,却只能显示 8 种背景颜色?为此,我们需要快速了解计算机如何将颜色信息传递给 CGA 卡。
简而言之CGA 卡希望将每个字符的文本颜色和背景颜色编码在一个字节数据包中,一共八位。那么八位是从哪里来的呢?
我们刚刚了解了 iRGB四位如何生成十六种颜色。文本颜色使用 iRGB 四位背景颜色仅限于八种低强度颜色RGB三位加起来只有七位。丢失的第八位在哪里
最后一个位可能是为 DOS 时代最重要的用户界面元素保留的 —— 闪烁文本。虽然闪烁的文本在如今可能很烦人,但在整个 1980 年代初期,闪烁的文本是表示错误消息等关键信息的友好方式。
将这个“闪烁”位添加到三个背景颜色位RGB和四个文本颜色位iRGB中会产生八个位或一个字节计算机喜欢以完整字节为单位进行计数这使其成为将颜色和闪烁信息传输到计算机的便捷方式。
因此,表示颜色(和闪烁)的完整字节是 `Bbbbffff`,其中 `ffff` 是文本颜色的 iRGB 位模式(从 0 到 15`bbb` 是低强度的 RGB 位模式背景颜色(从 0 到 7`B` 是“闪烁”位。
十六种文本颜色和八种背景颜色的限制一直持续到今天。当然DOS 坚持使用这种颜色组合,但即使是像 GNOME 终端这样的 Linux 终端仿真器也仍然受限于 16 种文本颜色和 8 种背景颜色。当然Linux 终端可能允许你更改使用的特定颜色,但你仍然限于十六种文本颜色和八种背景颜色。为此,你要感谢 DOS 和最初的 IBM PC。别客气
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/6/freedos-sixteen-colors
作者:[Jim Hall][a]
选题:[lujun9972][b]
译者:[gpchn](https://github.com/gpchn)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/jim-hall
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/1980s-computer-yearbook.png?itok=eGOYEKK- (Person typing on a 1980's computer)
[2]: https://opensource.com/sites/default/files/uploads/16colors.png (DOS text comes in 16 colors and 8 background colors)
[3]: https://creativecommons.org/licenses/by-sa/4.0/
[4]: https://opensource.com/sites/default/files/uploads/rgb.svg_.png (Mix red, green, and blue light to get different colors)
[5]: https://opensource.com/sites/default/files/uploads/crt.svg_.png (Each red, green, and blue triad is a single pixel)
[6]: https://opensource.com/sites/default/files/uploads/lcd.svg_.png (Each red, green, and blue triad is a single pixel)
[7]: https://opensource.com/sites/default/files/uploads/rainbow.jpg (A beautiful rainbow - which unfortunately contains orange )
[8]: https://www.pexels.com/photo/landscape-photography-of-field-with-wind-mill-with-rainbow-1253748/

View File

@ -3,44 +3,43 @@
[#]: author: "Joël Krähemann https://opensource.com/users/joel2001k"
[#]: collector: "lkxed"
[#]: translator: "Donkey-Hao"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: " wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15065-1.html"
Boost the power of C with these open source libraries
使用开源库 GObject 和 libsoup 提升 C 语言编程能力
======
GObject and libsoup do a lot of work for you, so you can turn your attention to inventing amazing applications in C.
![Why and how to handle exceptions in Python Flask][1]
Image by: Image from Unsplash.com, Creative Commons Zero
![](https://img.linux.net.cn/data/attachment/album/202209/24/145218s1s1xk6s1mm2kg1x.jpg)
The [GLib Object System (GObject)][2] is a library providing a flexible and extensible object-oriented framework for C. In this article, I demonstrate using the 2.4 version of the library.
> 开源库 GObject 和 libsoup 做了很多工作,因此你可以专注于使用 C 语言开发神奇的应用。
<ruby>[GLib 对象系统][2]<rt>Object System</rt></ruby>GObject是一个为 C 语言提供灵活且可扩展的面向对象框架的库。在这篇文章中,我将使用该库的 2.4 版本进行演示。
The GObject libraries extend the ANSI C standard, with typedefs for common types such as:
GObject 库继承了 ANSI C 标准,拥有一些常见的数据类型,例如:
* gchar: a character type
* guchar: an unsigned character type
* gunichar: a fixed 32 bit width unichar type
* gboolean: a boolean type
* gint8, gint16, gint32, gint64: 8, 16, 32, and 64 bit integers
* guint8, guint16, guint32, guint64: unsigned 8, 16, 32, and 64 bit integers
* gfloat: an IEEE Standard 754 single precision floating point number
* gdouble: an IEEE Standard 754 double precision floating point number
* gpointer: a generic pointer type
* `gchar`:字符型
* `guchar`:无符号字符型
* `gunichar`32 位定宽 Unicode 字符型
* `gboolean`:布尔型
* `gint8`、`gint16`、`gint32`、`gint64`:有符号 8、16、32 和 64 位整数
* `guint8`、`guint16`、`guint32`、`guint64`:无符号 8、16、32 和 64 位整数
* `gfloat`IEEE 754 标准单精度浮点数
* `gdouble`IEEE 754 标准双精度浮点数
* `gpointer`:泛指针
### Function pointers
### 函数指针
GObject also introduces a type and object system with classes and interfaces. This is possible because the ANSI C language understands function pointers.
GObject 库还引入了类和接口的类型和对象体系。之所以可以,是因为 ANSI C 语言可以理解函数指针。
To declare a function pointer, you can do this:
你可以这样做来声明函数指针:
```c
```
void (*my_callback)(gpointer data);
```
But first, you need to assign the `my_callback` variable:
首先,你需要给变量 `my_callback` 赋值:
```c
```
void my_callback_func(gpointer data)
{
  //do something
@ -49,21 +48,21 @@ void my_callback_func(gpointer data)
my_callback = my_callback_func;
```
The function pointer `my_callback` can be invoked like this:
函数指针 `my_callback` 可以这样来调用:
```c
```
gpointer data;
data = g_malloc(512 * sizeof(gint16));
my_callback(data);
```
### Object classes
### 对象类
The GObject base class consists of 2 structs (`GObject` and `GObjectClass` ) which you inherit to implement your very own objects.
`GObject` 基类由 2 个结构(`GObject` 和 `GObjectClass`)组成,你可以继承它们以实现你自己的对象。
You embed GObject and GObjectClass as the first struct field:
你需要在结构体中先嵌入 `GObject``GObjectClass`
```c
```
struct _MyObject
{
  GObject gobject;
@ -79,11 +78,11 @@ struct _MyObjectClass
GType my_object_get_type(void);
```
The objects implementation contains fields, which might be exposed as properties. GObject provides a solution to private fields, too. This is actually a struct in the C source file, instead of the header file. The class usually contains function pointers only.
对象的实现包含了公有成员。GObject 也提供了私有成员的方法。这实际上是 C 源文件中的一个结构,而不是在头文件。该类通常只包含函数指针。
An interface cant be derived from another interface and is implemented as following:
一个接口不能派生自另一个接口,比如:
```c
```
struct _MyInterface
{
  GInterface ginterface;
@ -91,9 +90,9 @@ struct _MyInterface
};
```
Properties are accessed by `g_object_get()` and `g_object_set()` function calls. To get a property, you must provide the return location of the specific type. Its recommended that you initialize the return location first:
通过调用 `g_object_get()``g_object_set()` 函数来访问属性。若要获取属性,你必须提供特定类型的返回位置。建议先初始化返回位置:
```c
```
gchar *str
str = NULL;
@ -103,19 +102,21 @@ g_object_get(gobject,
  NULL);
```
Or you might want to set the property:
或者你想要设置属性:
```c
```
g_object_set(gobject,
  "my-name", "Anderson",
  NULL);
```
### The libsoup HTTP library
### libsoup HTTP 库
The `libsoup` project provides an HTTP client and server library for GNOME. It uses GObjects and the glib main loop to integrate with GNOME applications, and also has a synchronous API for use in command-line tools. First, create a `libsoup` session with an authentication callback specified. You can also make use of cookies.
`libsoup` 项目为 GNOME 提供了 HTTP 客服端和服务端使用的库。它使用 GObjects 和 glib 主循环与集成到 GNOME 应用,并且还具有用于命令行的同步 API。
```c
首先,创建一个特定身份验证回调的 `libsoup` 会话。你也可以使用 cookie。
```
SoupSession *soup_session;
SoupCookieJar *jar;
@ -131,9 +132,9 @@ g_signal_connect(soup_session, "authenticate",
  G_CALLBACK(my_authenticate_callback), NULL);
```
Then you can create a HTTP GET request like the following:
然后你可以像这样创建一个 HTTP GET 请求:
```c
```
SoupMessage *msg;
SoupMessageHeaders *response_headers;
SoupMessageBody *response_body;
@ -176,11 +177,11 @@ if(status == 200){
}
```
The authentication callback is called as the web server asks for authentication.
当网络服务器进行身份认证时,会调用身份认证回调函数。
Heres a function signature:
这是一个函数签名:
```c
```
#define MY_AUTHENTICATE_LOGIN "my-username"
#define MY_AUTHENTICATE_PASSWORD "my-password"
@ -197,13 +198,13 @@ void my_authenticate_callback(SoupSession *session,
}
```
### A libsoup server
### 一个 libsoup 服务器
For basic HTTP authentication to work, you must specify a callback and server context path. Then you add a handler with another callback.
想要基础的 HTTP 身份认证能够运行,你需要指定回调函数和服务器上下文路径。然后再添加一个带有另一个回调的处理程序。
This example listens to any IPv4 address on localhost port 8080:
下面这个例子展示了在 8080 端口监听任何 IPv4 地址的消息:
```c
```
SoupServer *soup_server;
SoupAuthDomain *auth_domain;
GSocket *ip4_socket;
@ -245,11 +246,11 @@ soup_server_listen_socket(soup_server,
  ip4_socket, 0, &error);
```
In this example code, there are two callbacks. One handles authentication, and the other handles the request itself.
示例代码中,有两个回调函数。一个处理身份认证,另一个处理对它的请求。
Suppose you want a web server to allow a login with the credentials username **my-username** and the password **my-password**, and to set a session cookie with a random unique user ID (UUID) string.
假设你想要网页服务器允许用户名为 `my-username` 和口令为 `my-password` 的凭证登录,并且用一个随机且唯一的用户 ID 字符串设置会话 cookie。
```c
```
gboolean my_xmlrpc_server_auth_callback(SoupAuthDomain *domain,
  SoupMessage *msg,
  const char *username,
@ -284,9 +285,9 @@ gboolean my_xmlrpc_server_auth_callback(SoupAuthDomain *domain,
}
```
A handler for the context path **my-xmlrpc**:
对上下文路径 `my-xmlrpc` 进行处理的函数:
```c
```
void my_xmlrpc_server_callback(SoupServer *soup_server,
  SoupMessage *msg,
  const char *path,
@ -300,9 +301,9 @@ void my_xmlrpc_server_callback(SoupServer *soup_server,
}
```
### A more powerful C
### 更加强大的 C 语言
I hope my examples show how the GObject and libsoup projects give C a very real boost. Libraries like these extend C in a literal sense, and by doing so they make C more approachable. They do a lot of work for you, so you can turn your attention to inventing amazing applications in the simple, direct, and timeless C language.
希望我的示例展现了 GObject 和 libsoup 项目给 C 语言带来了真正的提升。像这样在字面意义上扩展 C 语言,可以使 C 语言更易于使用。它们已经为你做了许多工作,这样你可以专注于用 C 语言开发简单、直接的应用程序了。
--------------------------------------------------------------------------------
@ -311,7 +312,7 @@ via: https://opensource.com/article/22/5/libsoup-gobject-c
作者:[Joël Krähemann][a]
选题:[lkxed][b]
译者:[Donkey-Hao](https://github.com/Donkey-Hao)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -0,0 +1,140 @@
[#]: subject: "Rufus for Linux? Here Are the Best Live USB Creating Tools"
[#]: via: "https://itsfoss.com/live-usb-creator-linux/"
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
[#]: collector: "lkxed"
[#]: translator: "alfred-hong"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15052-1.html"
U 盘启动盘创建工具 Rufus 在 Linux 上不能使用?这里有 6 个替代品
======
![](https://img.linux.net.cn/data/attachment/album/202209/20/232656q7qc9vc9r6hn6bz9.jpg)
Rufus 一个用来创建启动盘的开源工具。它可以按照你的需求进行调整,用起来很简单。不仅用起来很方便,而且制作启动盘的速度也出奇的快。
遗憾的是Rufus 不能在 Linux 上使用,它只能在 Windows 上使用。因此大多数在 Windows 上使用过 Rufus 的人,都会在 Linux 上寻找替代软件。
如果你也是这样,不用着急,我们有一些优秀的替代软件,可以满足不同的使用条件。
我们来看看一些关于 Rufus 的替代软件:
### 6 款最佳的 Linux 启动盘创建工具
列出的所有替代软件都是开源的,并且在 Linux 发行版运行很好。
**注意:** *下列软件无任何特定排序*
#### 1、balenaEtcher
![balena etcher 2022][1]
balenaEtcher或 Etcher对于多平台Windows、 MacOS用户是一个很好的选择也包括 Linux 用户。
此软件没有任何高级选项。因此十分容易使用。只需要选择 ISO镜像文件然后选中目标 U 盘进行写入即可。
它是完全开源的,并在写入完成后检验你的 U 盘。此外,它还自动选择你插入的 U 盘,以避免你不小心选择了硬盘进行格式化。
你可以参考这本 [便捷手册][2] 来在 Linux 上安装它。
> **[balenaEtcher][3]**
#### 2、Fedora Media Writer
![fedora media writer][4]
Fedora Media Writer 是专门用来帮助用户创建 Fedora Linux 启动盘的软件。如果你还没有 ISO 文件,它还能为你下载 ISO。
当其它的 U 盘启动盘创建软件导致你不能格式化你的 U 盘时,它也是一个优秀的 U 盘启动盘修复程序。
不用担心,你也可以选择 Fedora Linux 之外的其他镜像来创建启动盘。
你可以在 Flathub 找到任何 Linux 发行版可用的最新的 [Flatpak][5] 软件包。如果你是新手请参考这篇 [Flatpak 指导][6]
> **[Fedora Media Writer][7]**
#### 3、Startup Disk Creator
![startup disk creator][8]
如果你使用的是 Ubuntu 系统,在系统上已经预装了一个 U 盘启动盘制作软件,即 Startup Disk Creator。
你可以用它选择任何需要的 ISO 文件(最好是 Ubuntu 的任何版本),并选择 USB 设备进行下一步。
当你确认操作后,它就会写入数据来完成制作启动盘。
#### 4、SUSE Studio Imagewriter
![imagewriter suse][9]
SUSE Studio Imagewriter 是一个简单的启动盘制作软件。
我没有在 Ubuntu 软件中心找到它,但是在 Manjaro 的社区仓库和 AUR 中可以找到。如果它可以适配你的 Linux 发行版,你可以试试它。
> **[SUSE Studio Imagewriter][10]**
#### 5、UNetbootin
![unetbootin][11]
UNetbootin 是一个支持 Linux、Windows 和 macOS 的 U 盘启动制作软件。有少量的几个可以调整的选项,比如你可以查看所有可用的驱动器,还可以选择一个发行版来自动下载 ISO 文件。
它与上面的软件不同,它并不是指定用在某些 Linux 发行版。因此,它支持各种各种各样的发行版和系统程序。
> **[UNetbootin][12]**
#### 6、Ventoy
![ventoy screenshot 2022][13]
Ventoy 是一个有趣的 USB 启动盘解决方案,你只需要复制粘贴镜像文件到 U 盘即可。
你仅仅需要在 U 盘上安装 Venoy它会在其上建立两个分区。其中一个用来存储 ISO 镜像,你只需要将镜像文件粘贴到 U 盘即制作成功。
有趣的是你还可以使用它来 [引导多个系统][14]。
它可在 Windows 和 Linux 上使用。
> **[Ventoy][15]**
### 总结
如果你需要在 U 盘上放多个 Linux 发行版而不是反复格式化它Ventoy 似乎是上面所有选项中最好的选择。
为了简单起见特定于发行版的工具是个很好的选择例如Ubuntu 的 Startup Disk Creator 和 Fedora 的 Fedora Media Writer。
SUSE Studio Imagewriter 也不错,但可不能不是最方便的。
如果你没有任何特定的偏好balenaEtcher 应该是最直接的选择UNetbootin 是它的一个合适的替代软件。
你最偏爱哪个 U 盘启动盘创建软件?在下面的评论区中让我了解你的想法。
--------------------------------------------------------------------------------
via: https://itsfoss.com/live-usb-creator-linux/
作者:[Ankush Das][a]
选题:[lkxed][b]
译者:[alfred-hong](https://github.com/alfred-hong)
校对:[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/06/balena-etcher-2022-800x537.png
[2]: https://itsfoss.com/install-etcher-linux/
[3]: https://www.balena.io/etcher/
[4]: https://itsfoss.com/wp-content/uploads/2022/06/fedora-media-writer.png
[5]: https://itsfoss.com/what-is-flatpak/
[6]: https://itsfoss.com/flatpak-guide/
[7]: https://flathub.org/apps/details/org.fedoraproject.MediaWriter
[8]: https://itsfoss.com/wp-content/uploads/2022/06/startup-disk-creator.png
[9]: https://itsfoss.com/wp-content/uploads/2022/06/imagewriter-suse.png
[10]: https://software.opensuse.org/package/imagewriter
[11]: https://itsfoss.com/wp-content/uploads/2022/06/unetbootin.png
[12]: https://unetbootin.github.io/
[13]: https://itsfoss.com/wp-content/uploads/2022/06/ventoy-screenshot-2022.png
[14]: https://itsfoss.com/multiple-linux-one-usb/
[15]: https://www.ventoy.net/

View File

@ -3,21 +3,20 @@
[#]: author: "Mark Meyer https://opensource.com/users/ofosos"
[#]: collector: "lkxed"
[#]: translator: "MjSeven"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15061-1.html"
将你的 Python 脚本转换为命令行程序
======
使用 Python 中的 scaffold 和 click 库,你可以将一个简单的实用程序升级为一个成熟的命令行界面工具。
![Python 吉祥物和 Linux 的吉祥物企鹅][1]
> 使用 Python 中的 `scaffold``click` 库,你可以将一个简单的实用程序升级为一个成熟的命令行界面工具。
Image by: Opensource.com
![](https://img.linux.net.cn/data/attachment/album/202209/23/093712jyayyed8x7d8d8yd.jpg)
在我的职业生涯中,我写过、用过和看到过很多松散的脚本。一些人需要半自动化的任务,于是它们诞生了。一段时间后,它们变得越来越大。它们在一生中可能转手很多次。我常常希望这些脚本提供更多的命令行**类似工具**的感觉。但是,从一次性脚本到合适的工具,真正提高质量水平有多难呢?事实证明这在 Python 中并不难。
在我的职业生涯中,我写过、用过和看到过很多随意的脚本。一些人需要半自动化完成任务,于是它们诞生了。一段时间后,它们变得越来越大。它们在一生中可能转手很多次。我常常希望这些脚本提供更多的**命令行工具**的感觉。但是,从一次性脚本到合适的工具,真正提高质量水平有多难呢?事实证明这在 Python 中并不难。
### Scaffolding
### 搭建骨架脚本
在本文中,我将从一小段 Python 代码开始。我将把它应用到 `scaffold` 模块中,并使用 `click` 库扩展它以接受命令行参数。
@ -68,7 +67,7 @@ if __name__ == '__main__':
    rotoscope()
```
本文的所有非内联代码示例,你都可以在 [https://codeberg.org/ofosos/rotoscope][2] 中找到特定版本的代码。该仓库中的每个提交都描述了本文操作过程中一些有意义的步骤。
本文所有没有在这里插入显示的代码示例,你都可以在 [https://codeberg.org/ofosos/rotoscope][2] 中找到特定版本的代码。该仓库中的每个提交都描述了本文操作过程中一些有意义的步骤。
这个片段做了几件事:
@ -78,7 +77,7 @@ if __name__ == '__main__':
作为一个示例,它很简单,但它会让你理解这个过程。
### 使用 pyscaffold 创建应用程序
### 使用 Pyscaffold 创建应用程序
首先,你需要安装 `scaffold`、`click` 和 `tox` [Python 库][3]。
@ -86,14 +85,14 @@ if __name__ == '__main__':
$ python3 -m pip install scaffold click tox
```
安装 `scaffold` 后,切换到示例 `rotoscope` 项目所在的目录,然后执行以下命令:
安装 `scaffold` 后,切换到示例 `rotoscope` 项目所在的目录,然后执行以下命令:
```
$ putup rotoscope -p rotoscope \
--force --no-skeleton -n rotoscope \
-d 'Move some files around.' -l GLWT \
-u http://codeberg.org/ofosos/rotoscope \
--save-config --pre-commit --markdown
--force --no-skeleton -n rotoscope \
-d 'Move some files around.' -l GLWT \
-u http://codeberg.org/ofosos/rotoscope \
--save-config --pre-commit --markdown
```
Pyscaffold 会重写我的 `README.md`,所以从 Git 恢复它:
@ -102,17 +101,13 @@ Pyscaffold 会重写我的 `README.md`,所以从 Git 恢复它:
$ git checkout README.md
```
Pyscaffold 在文档中说明了如何设置一个完整的示例项目我不会在这里介绍你之后可以探索。除此之外Pyscaffold 还可以在项目中为你提供持续集成CI模板
Pyscaffold 在文档中说明了如何设置一个完整的示例项目我不会在这里介绍你之后可以探索。除此之外Pyscaffold 还可以在项目中为你提供持续集成CI模板
* 打包: 你的项目现在启用了 PyPi所以你可以将其上传到一个仓库并从那里安装它。
* 文档: 你的项目现在有了一个完整的文档文件夹层次结构,它基于 Sphinx包括一个 readthedocs.org 构建器。
* 测试: 你的项目现在可以与 tox 一起使用,测试文件夹包含运行基于 pytest 的测试所需的所有样板文件。
* 依赖管理: 打包和测试基础结构都需要一种管理依赖关系的方法。`setup.cfg` 文件解决了这个问题,它包含所有依赖项。
* 预提交钩子: 包含 Python 源代码格式工具 "black" 和 Python 风格检查器 "flake8"。
* 预提交钩子: 包括 Python 源代码格式工具 black 和 Python 风格检查器 flake8。
查看测试文件夹并在项目目录中运行 `tox` 命令,它会立即输出一个错误:打包基础设施无法找到相关库。
@ -133,11 +128,11 @@ console_scripts =
就是这样,你可以从 Pyscaffold 免费获得所有打包、测试和文档设置。你还获得了一个预提交钩子来保证(大部分情况下)你按照设定规则提交。
### CLI 工具
### CLI 工具
现在,一些值会硬编码到脚本中,它们作为命令[参数][4]会更方便。例如,将 `INCOMING` 常量作为命令行参数会更好。
现在,一些值会硬编码到脚本中,它们作为命令 [参数][4] 会更方便。例如,将 `INCOMING` 常量作为命令行参数会更好。
首先,导入 [click][5] 库,使用 click 提供的命令装饰器对 `rotoscope()` 方法进行装饰,并添加一个 Click 传递给 `rotoscope` 函数的参数。Click 提供了一组验证器因此要向参数添加一个路径验证器。Click 还方便地使用函数的内嵌字符串作为命令行文档的一部分。所以你最终会得到以下方法签名:
首先,导入 [click][5] 库,使用 Click 提供的命令装饰器对 `rotoscope()` 方法进行装饰,并添加一个 Click 传递给 `rotoscope` 函数的参数。Click 提供了一组验证器因此要向参数添加一个路径验证器。Click 还方便地使用函数的内嵌字符串作为命令行文档的一部分。所以你最终会得到以下方法签名:
```
@click.command()
@ -151,7 +146,7 @@ def rotoscope(incoming):
主函数会调用 `rotoscope()`,它现在是一个 Click 命令,不需要传递任何参数。
选项也可以使用[环境变量][6]自动填充。例如,将 `ARCHIVE` 常量改为一个选项:
选项也可以使用 [环境变量][6] 自动填充。例如,将 `ARCHIVE` 常量改为一个选项:
```
@click.option('archive', '--archive', default='/Users/mark/archive', envvar='ROTO_ARCHIVE', type=click.Path())
@ -165,9 +160,9 @@ Click 可以做更多的事情,它有彩色的控制台输出、提示和子
### 测试
Click 对使用 CLI 运行器[运行端到端测试][7]提供了一些建议。你可以用它来实现一个完整的测试(在[示例项目][8]中,测试在 `tests` 文件夹中。)
Click 对使用 CLI 运行器 [运行端到端测试][7] 提供了一些建议。你可以用它来实现一个完整的测试(在 [示例项目][8] 中,测试在 `tests` 文件夹中。)
测试位于测试类的一个方法中。大多数约定与我在任何其他 Python 项目中使用的非常接近,但有一些细节,因为 rotoscope 使用 `click`。在 `test` 方法中,我创建了一个 `CliRunner`。测试使用它在一个隔离的文件系统中运行此命令。然后测试在隔离的文件系统中创建 `incoming``archive` 目录和一个虚拟的 `incoming/test.txt` 文件,然后它调用 CliRunner就像你调用命令行应用程序一样。运行完成后测试会检查隔离的文件系统并验证 `incoming` 为空,并且 `archive` 包含两个文件(最新链接和存档文件)。
测试位于测试类的一个方法中。大多数约定与我在其他 Python 项目中使用的非常接近,但有一些细节,因为 rotoscope 使用 `click`。在 `test` 方法中,我创建了一个 `CliRunner`。测试使用它在一个隔离的文件系统中运行此命令。然后测试在隔离的文件系统中创建 `incoming``archive` 目录和一个虚拟的 `incoming/test.txt` 文件,然后它调用 CliRunner就像你调用命令行应用程序一样。运行完成后测试会检查隔离的文件系统并验证 `incoming` 为空,并且 `archive` 包含两个文件(最新链接和存档文件)。
```
from os import listdir, mkdir
@ -196,9 +191,9 @@ class TestRotoscope:
要在控制台上执行这些测试,在项目的根目录中运行 `tox`
在执行测试期间,我在代码中发现了一个错误。当我进行 Click 转换时rotoscope 只是取消了最新文件的链接,无论它是否存在。测试从一个新的文件系统(不是我的主文件夹)开始,很快就失败了。我可以通过在一个很好的隔离和自动化测试环境中运行来防止这种错误。这将避免很多“它在我的机器上正常工作”的问题。
在执行测试期间,我在代码中发现了一个错误。当我进行 Click 转换时,`rotoscope` 只是取消了最新文件的链接,无论它是否存在。测试从一个新的文件系统(不是我的主文件夹)开始,很快就失败了。我可以通过在一个很好的隔离和自动化测试环境中运行来防止这种错误。这将避免很多“它在我的机器上正常工作”的问题。
### Scaffolding 和模块
### 搭建骨架脚本和模块
本文到此结束,我们可以使用 `scaffold``click` 完成一些高级操作。有很多方法可以升级一个普通的 Python 脚本,甚至可以将你的简单实用程序变成成熟的 CLI 工具。
@ -209,7 +204,7 @@ via: https://opensource.com/article/22/7/bootstrap-python-command-line-applicati
作者:[Mark Meyer][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

@ -0,0 +1,143 @@
[#]: subject: "Manage containers on Fedora Linux with Podman Desktop"
[#]: via: "https://fedoramagazine.org/manage-containers-on-fedora-linux-with-podman-desktop/"
[#]: author: "Mehdi Haghgoo https://fedoramagazine.org/author/powergame/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15058-1.html"
使用 Podman Desktop 在 Fedora Linux 上管理容器
======
![][1]
> Podman Desktop 是一个开源 GUI 应用,用于在 Linux、macOS 和 Windows 上管理容器。
从历史上看,开发人员一直使用 Docker Desktop 对容器进行图形化管理。这适用于那些安装了 Docker Daemon 和 Docker CLI 的人。然而,对于那些使用无守护进程的 Podman 工具的人来说,虽然有一些 Podman 前端,如 [Pods][2]、[Podman desktop companion][3] 和 [Cockpit][4],但没有官方应用。现在不是这种情况了。有了 Podman Desktop
本文将讨论由红帽和其他开源贡献者开发的 Podman Desktop 的特性、安装和使用。
### 安装
要在 Fedora Linux 上安装 Podman Desktop请访问 [podman-desktop.io][5],然后单击 “Download for Linux” 按钮。你将看到两个选项Flatpak 和 zip。在这个例子中我们使用的是 Flatpak。单击 “Flatpak” 链接后,通过双击文件在 GNOME 软件中打开它(如果你使用的是 GNOME。你也可以通过终端安装它
```
flatpak install podman-desktop-X.X.X.flatpak
```
在上面的命令中,将 X.X.X 替换为你下载的特定版本。如果你下载了 zip 文件,那么解压缩存档,然后启动 Podman Desktop 应用的二进制文件。你还可以通过进入 GitHub 上项目的 [发布][6] 页找到预发布版本。
### 特性
Podman Desktop 仍处于早期阶段。然而,它支持许多常见的容器操作,如创建容器镜像、运行容器等。此外,你可以在 “<ruby>首选项<rt>Preferences</rt></ruby>” 的 “<ruby>扩展<rt>Extensions</rt></ruby>” 部分下找到 Podman 扩展,你可以使用它来管理 macOS 和 Windows 上的 Podman 虚拟机。
此外Podman Desktop 支持 Docker Desktop 扩展。你可以在 “<ruby>首选项<rt>Preferences</rt></ruby>” 下的 “Docker Desktop Extensions” 安装此类扩展。应用窗口有两个窗格。左侧窄窗格显示应用的不同功能,右侧窗格是内容区域,它将根据左侧选择的内容显示相关信息。
![Podman Desktop 0.0.6 在 Fedora 36 上运行][7]
### 演示
为了全面了解 Podman Desktop 的功能,我们将从 Dockerfile 创建一个镜像并将其推送到注册中心,然后拉取并运行它,这一切都在 Podman Desktop 中完成。
#### 构建镜像
第一步是通过在命令行中输入以下行来创建一个简单的 Dockerfile
```
cat <<EOF>>Dockerfile
FROM docker.io/library/httpd:2.4
COPY . /var/www/html
WORKDIR /var/www/html
CMD ["httpd", "-D", "FOREGROUND"]
EOF
```
现在,点击 “<ruby>镜像<rt>Images</rt></ruby>” 并按下 “<ruby>构建镜像<rt>Build Image</rt></ruby>” 按钮。你将被带到一个新页面以指定 Dockerfile、构建上下文和镜像名称。在 Containerfile 路径下,单击并浏览以选择你的 Dockerfile。在镜像名称下输入镜像的名称。如果要将镜像推送到容器注册中心那么可以以 `example.com/username/repo:tag` 形式指定完全限定的镜像名称FQIN。在此示例中我输入 `quay.io/codezombie/demo-httpd:latest`,因为我在 `quay.io` 上有一个名为 `demo-httpd` 的公共仓库。你可以按照类似的格式来指定容器注册中心Quay、Docker Hub、GitHub Container Registry 等)的 FQIN。现在按下 “<ruby>构建<rt>Build</rt></ruby>” 按钮并等待构建完成。
#### 推送镜像
构建完成后,就该推送镜像了。所以,我们需要在 Podman Desktop 中配置一个注册中心。进入 “<ruby>首选项<rt>Preferences</rt></ruby>” -> “<ruby>注册中心<rt>Registries</rt></ruby>” 并按下 “<ruby>添加注册中心<rt>Add registry</rt></ruby>” 按钮。
![添加注册中心对话框][8]
在 “<ruby>添加注册中心<rt>Add registry</rt></ruby>” 对话框中,输入你的注册中心服务器地址和用户凭据,然后单击 “<ruby>添加注册中心<rt>Add registry</rt></ruby>”。
现在,回到镜像列表中我的镜像,并按下上传图标将其推送到仓库。当你将鼠标悬停在设置中添加的注册中心名称开头的镜像名称上时(此演示中的 `quay.io`),镜像名称旁边会出现一个推送按钮。
![将鼠标悬停在镜像名称上时出现的按钮][9]
![镜像通过 Podman Desktop 推送到仓库][10]
镜像被推送后,任何有权访问镜像仓库的人都可以拉取它。由于我的镜像仓库是公开的,因此你可以轻松地将其拉入 Podman Desktop。
#### 拉取镜像
因此,为确保一切正常,请在本地删除此镜像并将其拉入 Podman Desktop。在列表中找到镜像并按删除图标将其删除。删除镜像后单击 “<ruby>拉取镜像<rt>Pull Image</rt></ruby>” 按钮。在 “<ruby>要拉取的镜像<rt>Image to Pull</rt></ruby>” 输入完全限定名称,然后按 “<ruby>拉取镜像<rt>Pull Image</rt></ruby>”。
![Our container image is successfully pulled][11]
#### 创建一个容器
作为 Podman Desktop 演示的最后一部分,让我们从镜像中启动一个容器并检查结果。转到 “<ruby>容器<rt>Containers</rt></ruby>” 并按 “<ruby>创建容器<rt>Create Container</rt></ruby>”。这将打开一个包含两个选项的对话框:“<ruby>从 Containerfile/Dockerfile<rt>From Containerfile/Dockerfile</rt></ruby>” 和 “<ruby>从已有镜像<rt>From existing image</rt></ruby>”。按下 “<ruby>从已有镜像<rt>From existing image</rt></ruby>”。这将进入镜像列表。在那里,选择我们要拉取的镜像。
![在 Podman Desktop 中创建容器][12]
现在,我们从列表中选择我们最近拉取的镜像,然后按它前面的 “<ruby>运行<rt>Play</rt></ruby>” 按钮。在出现的对话框中,我输入 `demo-web` 作为容器名,输入 `8000` 作为端口映射,然后按下 “<ruby>启动容器<rt>Start Container</rt></ruby>”。
![Container configuration][13]
容器开始运行,我们可以通过运行以下命令检查 Apache 服务器的默认页面:
```
curl http://localhost:8000
```
![可以工作!][14]
你还应该能够在容器列表中看到正在运行的容器,其状态已更改为 “<ruby>运行中<rt>Running</rt></ruby>”。在那里,你会在容器前面找到可用的操作。例如,你可以单击终端图标打开 TTY 进入到容器中!
![][15]
### 接下来是什么
Podman Desktop 还很年轻,处于 [积极开发][16] 中。 GitHub 上有一个项目 [路线图][17],其中列出了令人兴奋的按需功能,包括:
* Kubernetes 集成
* 支持 Pod
* 任务管理器
* 卷支持
* 支持 Docker Compose
* Kind 支持
--------------------------------------------------------------------------------
via: https://fedoramagazine.org/manage-containers-on-fedora-linux-with-podman-desktop/
作者:[Mehdi Haghgoo][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://fedoramagazine.org/author/powergame/
[b]: https://github.com/lkxed
[1]: https://fedoramagazine.org/wp-content/uploads/2022/09/podman-desktop-on-fedora-816x345.jpg
[2]: https://github.com/marhkb/pods
[3]: https://github.com/iongion/podman-desktop-companion
[4]: https://github.com/cockpit-project/cockpit/
[5]: https://podman-desktop.io/
[6]: https://github.com/containers/podman-desktop/releases/
[7]: https://fedoramagazine.org/wp-content/uploads/2022/08/pd.png
[8]: https://fedoramagazine.org/wp-content/uploads/2022/08/registry.png
[9]: https://fedoramagazine.org/wp-content/uploads/2022/08/image.png
[10]: https://fedoramagazine.org/wp-content/uploads/2022/08/Screenshot-from-2022-08-27-23-51-38.png
[11]: https://fedoramagazine.org/wp-content/uploads/2022/08/image-2.png
[12]: https://fedoramagazine.org/wp-content/uploads/2022/08/image-3.png
[13]: https://fedoramagazine.org/wp-content/uploads/2022/08/image-5.png
[14]: https://fedoramagazine.org/wp-content/uploads/2022/08/image-6.png
[15]: https://fedoramagazine.org/wp-content/uploads/2022/09/image-2-1024x393.png
[16]: https://github.com/containers/podman-desktop
[17]: https://github.com/orgs/containers/projects/2

View File

@ -3,21 +3,24 @@
[#]: author: "Amit Shingala https://www.opensourceforu.com/author/amit-shingala/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15060-1.html"
准备好迎接 AIOps 时代
======
*随着技术的进步,企业,无论大小,都必须将自己转变为数字公司。转型不再是“选择”的问题;相反,它是关于“如何”推进过渡。这就是 AIOps 的用武之地。*
将组织转变为数字公司会遇到很多挑战。缺乏专门的 IT 技能、组织变革管理、不断变化的客户需求和混合环境只是其中的一小部分。企业需要增强其 IT 运营 (ITOps) 以应对这些挑战并满足客户期望。
![](https://img.linux.net.cn/data/attachment/album/202209/23/083440mxyb6e388ze2sbbs.jpg)
> 随着技术的进步,企业,无论大小,都必须将自己转变为数字公司。转型不再是“选择”的问题;相反,它是关于“如何”推进过渡。这就是 AIOps 的用武之地。
将组织转变为数字公司会遇到很多挑战。缺乏专门的 IT 技能、组织变革管理、不断变化的客户需求和混合环境只是其中的一小部分。企业需要增强其 IT 运营ITOps以应对这些挑战并满足客户期望。
### 数字化转型AIOps 之路
未来ITOps 将结合算法和人工智能,使 IT 系统的性能变得透明,并帮助他们提供无缝体验。
#### Gartner“AIOps 对 IT 运营的长期影响将是变革性的。”
> “AIOps 对 IT 运营的长期影响将是变革性的。” —— Gartner
AIOps 对于成功的数字化转型至关重要,可以帮助系统以现代业务所需的速度运行。反过来,这将确定公司获得和保持市场领先地位的速度。
@ -31,7 +34,7 @@ AIOps 结合人工智能和机器学习来分析 IT 运营的数据。这是将
AIOps 平台使用大数据。他们从各种 IT 运营和设备收集数据以自动识别和实时响应问题同时仍提供传统的历史分析。然后AIOps 使用机器学习对组合的 IT 数据执行综合分析。
结果是自动化驱动的洞察力驱使持续改进和修复。 AIOps 支持基本 IT 功能的持续集成和部署 (CI/CD)
结果是自动化驱动的洞察力驱使持续改进和修复。AIOps 支持基本 IT 功能的持续集成和部署 CI/CD
### AIOps 的范围是什么?
@ -52,13 +55,13 @@ AIOps 平台使用大数据。他们从各种 IT 运营和设备收集数据,
随着应用和 IT 环境的扩展,它们会产生大量数据。 IT 运营团队因无法管理的数据而筋疲力尽。但是,人工智能可以处理大量数据。随着数据量的扩大,将人工智能纳入 IT 流程的机会要大得多。
异常检测、分类和预测都可以通过使用机器学习和深度学习模型来完成,这些模型擅长分析海量数据并提供分析。 AIOps 的许多功能可帮助公司通过交互式仪表盘提供良好的用户体验。
异常检测、分类和预测都可以通过使用机器学习和深度学习模型来完成这些模型擅长分析海量数据并提供分析。AIOps 的许多功能可帮助公司通过交互式仪表盘提供良好的用户体验。
实施 AIOps 的企业报告了诸如无缝体验、更低的运营费用、更快的客户服务、更短的平均解决时间和更少的停机时间等好处。 AIOps 通过基于预测分析做出坚定的决策来支持 IT 运营。
### 最后一点
AIOps 是 IT 运营分析 (ITOA) 的下一步。 人工智能、认知技能和 RPA机器人流程自动化用于在基础设施或 IT 运营问题成为问题之前自动修复它们。 自我修复系统是 AIOps 的最终目标。
AIOps 是 IT 运营分析ITOA的下一步。 人工智能、认知技能和 RPA机器人流程自动化用于在基础设施或 IT 运营问题成为问题之前自动修复它们。 自我修复系统是 AIOps 的最终目标。
--------------------------------------------------------------------------------
@ -67,7 +70,7 @@ via: https://www.opensourceforu.com/2022/09/get-ready-to-embrace-the-aiops-era/
作者:[Amit Shingala][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

@ -0,0 +1,123 @@
[#]: subject: "Komikku: A Free and Open-Source Manga Reader for Linux"
[#]: via: "https://itsfoss.com/komikku-manga-reader/"
[#]: author: "Anuj Sharma https://itsfoss.com/author/anuj/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15078-1.html"
Komikku: 一个自由开源的 Linux 日漫阅读器
======
喜欢阅读漫画书吗?有 [大量可用于 Linux 的漫画阅读器][1]。
但是,为<ruby>日漫<rt>Manga</rt></ruby>量身定做的东西呢?
我想我找到了一个适合阅读漫画的完美应用,它可以管理它们,也可以下载它们进行离线使用。我最近发现的这个应用叫做 **Kommiku**
让我提一下这个应用的主要亮点,并帮助你在 Linux 上开始使用它。
### Komikku: 一个 Linux 专用的日漫阅读器
![Komikku UI][2]
Komikku 是一个开源的日漫阅读器,且仅有 Linux 应用。
它主要是为配合 GNOME 桌面环境而定制的,但你也可以在运行 [其他桌面环境][3] 的 Linux 发行版上使用它。
许多 PDF 或 [电子书阅读器][4],如 Bookworm、Calibre 和 Foliate 都支持漫画书格式。
然而Komikku 用户会有更多的功能,以获得阅读漫画的良好体验。
![Komikku 在线服务器列表][5]
例如Komikku 可在线和离线观看日漫。此外,你可以从支持的服务器上下载它。
### Komikku 的特点
![komikku reader][6]
Komikku 的一些最佳功能包括:
* 从几十个支持的服务器进行在线阅读。
* 离线阅读已下载的日漫。
* 按类别组织你的日漫库。
* 从右到左、从左到右、垂直和网络漫画阅读模式。
* 几种类型的导航(键盘方向键、通过鼠标左右滑动或点击(触摸板/触摸屏)、滚轮和滑动手势(触摸板和触摸屏)。
* 自动更新漫画。
* 自动下载新章节。
* 阅读历史。
* 浅色和深色主题。
* 自适应设计(能够从桌面工作站扩展到移动电话)。
* 键盘快捷键。
![Komikku 紧凑视图][7]
### 安装
Komikku 可在 [Flathub][8] 上找到。因此,你可以把它安装在任何 Linux 发行版上。
不过,你需要 [在你的系统上设置 Flatpak 并启用 Flathub 仓库][9]。
当你在系统上设置了 Flatpak你可以通过软件中心搜索它或者从你的终端安装它。
![从 GNOME 软件中安装 Komikku][10]
要使用终端安装 Komikku请输入以下命令
```
flatpak install flathub info.febvre.Komikku
```
Komikku 的原生包也可用于 Arch Linux 和 Fedora 等发行版。以下是安装它们的命令:
对于 Arch Linux在 AUR 中可用):
```
yay -Syu komikku
```
对于 Fedora在官方仓库中可用
```
sudo dnf install komikku
```
在其 [GitLab 页面][11]上可以查看 Komikku 的源代码以及从源代码构建它的说明。可以前往其官方网页了解更多信息。
> **[下载 Komikku][12]**
### 总结
我发现 Komikku 非常直观干净。我注意到在线服务器并不总是工作,经常有一些小故障,但管理离线漫画和将你的藏品分类是毫不费力的。
所有这些都要感谢 **Valéry Febvre**Komikku 的开发者),我们有了另一个有用的 Linux 应用。如果你喜欢这个应用,你可以考虑向该项目捐款。
*你使用哪种漫画书阅读器?你会尝试 Komikku 吗?请在下面的评论中告诉我你的想法*。
--------------------------------------------------------------------------------
via: https://itsfoss.com/komikku-manga-reader/
作者:[Anuj 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/anuj/
[b]: https://github.com/lkxed
[1]: https://itsfoss.com/best-comic-book-reader-linux/
[2]: https://itsfoss.com/wp-content/uploads/2022/09/komikku-library.png
[3]: https://itsfoss.com/best-linux-desktop-environments/
[4]: https://itsfoss.com/best-ebook-readers-linux/
[5]: https://itsfoss.com/wp-content/uploads/2022/09/komikku-online-servers.png
[6]: https://itsfoss.com/wp-content/uploads/2022/09/komikku-reader.png
[7]: https://itsfoss.com/wp-content/uploads/2022/09/komikku-mobile-view.png
[8]: https://flathub.org/apps/details/info.febvre.Komikku
[9]: https://itsfoss.com/flatpak-guide/
[10]: https://itsfoss.com/wp-content/uploads/2022/09/install-komikku-gnome-software.png
[11]: https://gitlab.com/valos/Komikku
[12]: https://valos.gitlab.io/Komikku/

View File

@ -0,0 +1,143 @@
[#]: subject: "Connect to WiFi Using Terminal in Arch Linux and Other Distros"
[#]: via: "https://www.debugpoint.com/connect-wifi-terminal-linux/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15067-1.html"
在 Arch Linux 和其他发行版中使用终端连接到 WiFi
======
![](https://img.linux.net.cn/data/attachment/album/202209/24/185145fcas1rje3f8pr8sa.jpg)
> 本快速指南介绍了在 Arch Linux 和其他发行版中使用终端设置和连接 WiFi 所需的步骤。
本指南非常适合没有 GUI 只有终端且没有其他有线互联网连接可用的情况。这些步骤可帮助你手动检测无线网卡和设备,并通过终端密码验证连接到 WiFi 热点。
本指南使用 [iwd][1]Net Wireless Daemon通过终端连接到 WiFi。
### 在 Arch Linux 和其他发行版中使用终端连接到 WiFi
#### 1、设置 iwd
`iwd` 包有三个主要模块:
- `iwctl`:无线客户端
- `iwd`:守护进程
- `iwmon`:监控工具
在终端中输入:
```
iwctl
```
![iwctl 提示符][2]
如果找不到该命令,那么需要从 [此处][3] 下载安装包。
从任何其他具有互联网连接的系统/笔记本电脑获取帮助,以通过安装 USB 下载和安装软件包。
或者,如果你有一个可连接互联网的 USB 网卡,那么将其插入你的系统。并通过以下命令安装。
USB 网卡应该可以在 Arch 和当今大多数 Linux 系统中开箱即用,连接到互联网。
**Arch**
```
pacman -S iwd
```
**Debian、Ubuntu 和其他类似发行版:**
```
sudo apt-get install iwd
```
**Fedora**
```
sudo dnf install iwd
```
如果你看到了 `iwctl` 提示符(如下所示),那么继续下一步。
#### 2、配置
运行以下命令以获取系统的**无线设备名称**。
```
device list
```
![iwctl 设备列表][4]
要**获取 WiFi 网络列表**,请运行以下命令。在以下命令和所有其他命令中将 `wlan0` 替换为你的设备名称。
```
station wlan0 get-networks
```
![iwctl 可用网络][5]
该命令为你提供具有安全类型和信号强度的可用 WiFi 网络列表。
#### 3、连接
要**连接到 WiFi 网络**,请使用上述 `get-networks` 命令中的 WiFi 接入点名称运行以下命令。
```
station wlan0 connect
```
出现提示时输入你的 WiFi 密码。
![使用 iwctl 连接到 WiFi][6]
如果一切顺利,你现在可以连接到互联网。
### 使用指南
如下所示,你可以使用简单的 `ping` 命令检查连接。`ping` 回复成功的数据包传输表示连接稳定。
```
ping -c 3 google.com
```
你还可以使用以下命令检查连接状态。
```
station wlan0 show
```
`iwd``/var/lib/iwd` 中保存 `.psk` 后缀的配置文件,其中带有你的接入点名称。此文件包含使用你的 WiFi 网络的密码和 SSID 生成的哈希文件。
`CTRL+D` 退出 `iwctl` 提示符。
### 总结
我希望本指南可以帮助你通过终端连接到互联网。当你没有其他方式连接到 WiFi 时,这会有所帮助。例如,如果你在独立系统(不是 VM中安装 Arch Linux那么需要连接到互联网以通过终端使用 `pacman` 下载软件包。
如果你遇到任何问题,请在下面的评论栏中指出错误消息。
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/connect-wifi-terminal-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://wiki.archlinux.org/index.php/Iwd
[2]: https://www.debugpoint.com/wp-content/uploads/2020/11/iwctl-Prompt.jpg
[3]: https://www.archlinux.org/packages/?name=iwd
[4]: https://www.debugpoint.com/wp-content/uploads/2020/11/iwctl-device-list-2.jpg
[5]: https://www.debugpoint.com/wp-content/uploads/2020/11/iwctl-available-networks.jpg
[6]: https://www.debugpoint.com/wp-content/uploads/2020/11/connect-to-WiFi-using-iwctl.jpg

View File

@ -3,29 +3,28 @@
[#]: author: "David Both https://opensource.com/users/dboth"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15080-1.html"
我如何使用 Live USB 设备恢复我的 Linux 系统
我如何使用现场 USB 设备恢复我的 Linux 系统
======
Fedora Live USB 发行版为引导和进入恢复模式提供了有效的解决方案。
![USB 驱动器][1]
![](https://img.linux.net.cn/data/attachment/album/202209/28/121226rh7vq7qhwhqzh76m.jpg)
图片来源:[Markus Winkler][2] 发布于 [Unsplash][3]
> Fedora 现场 USB 发行版为引导和进入恢复模式提供了有效的解决方案。
我的家庭实验室里有十几台物理计算机以及更多的虚拟机。我使用这些系统中的大多数进行测试和实验。我经常写关于使用自动化来简化系统管理任务的文章。我还在多个地方写过,我从自己的错误中学到的东西比几乎任何其他方式都多。
我的家庭实验室里有十几台物理计算机以及更多的虚拟机。这些系统中的大多数是我用来进行测试和实验。我经常写使用自动化来简化系统管理任务的文章。我还在多个地方写过,我从自己的错误中学到的东西比几乎任何其他方式都多。
在过去的几周里,我学到了很多东西。
我给自己制造了一个大问题。作为系统管理员多年,写了数百篇关于 Linux 的文章和五本书,我应该知道得更清楚。话又说回来,我们都会犯错,这是一个重要的教训:你永远不会因为有经验而不犯错。
我给自己制造了一个大麻烦。作为多年的系统管理员,我写了数百篇关于 Linux 的文章和五本书,我应该对 Linux 更了解。话又说回来,我们都会犯错,这是一个重要的教训:你永远不会因为有经验而不犯错。
我不打算讨论我的错误的细节。告诉你这是一个错误就足够了,在我做之前我应该多考虑一下我在做什么。此外,细节并不是重点。经验不能让你免于犯下的每一个错误,但它可以帮助你恢复。这就是本文要讨论的内容:使用 Live USB 发行版启动并进入恢复模式。
我不打算讨论我的错误的细节。告诉你这是一个错误就足够了,在我做之前我应该多考虑一下我在做什么。此外,细节并不是重点。经验不能让你免于犯下的每一个错误,但它可以帮助你恢复。这就是本文要讨论的内容:使用现场 USB 发行版启动并进入恢复模式。
### 问题
首先,我创建了问题,这本质上是 `/etc/default/grub` 文件的错误配置。接下来,我使用 Ansible 将错误配置的文件分发到我所有的物理计算机并运行 `grub2-mkconfig`。全部 12 个。这真的,真的很快。
首先,我制造了问题,这本质上是 `/etc/default/grub` 文件的错误配置。接下来,我使用 Ansible 将错误配置的文件分发到我所有的物理计算机并运行 `grub2-mkconfig`。全部 12 个。这真的,真的很快。
除了两台之外,所有的都无法启动。它们在 Linux 启动的早期阶段崩溃,出现各种无法定位 `/root` 文件系统的错误。
@ -33,11 +32,11 @@ Fedora Live USB 发行版为引导和进入恢复模式提供了有效的解决
### Fedora 恢复模式
解决此问题的唯一方法是找到进入恢复模式的方法。当一切都失败时Fedora 提供了一个非常酷的工具:用于安装 Fedora 新实例的同一个 Live USB 驱动器。
解决此问题的唯一方法是找到进入恢复模式的方法。当一切都失败时Fedora 提供了一个非常酷的工具:用于安装 Fedora 新实例的<ruby>现场 USB<rt>Live USB</rt></ruby> 驱动器。
将 BIOS 设置为从 Live USB 设备启动后,我启动到 Fedora 36 Xfce live 用户桌面。我在桌面上打开了两个相邻的终端会话,并在两者中都切换到了 root 权限。
将 BIOS 设置为从现场 USB 设备启动后,我启动到 Fedora 36 Xfce 的<ruby>现场<rt>live</rt></ruby>用户桌面。我在桌面上打开了两个相邻的终端会话,并在两者中都切换到了 root 权限。
我在一个运行了 `lsblk` 以供参考。我使用结果来识别 `/` 根分区以及 `boot``efi` 分区。我使用了我的一台虚拟机,如下所示。在这种情况下没有 `efi` 分区,因为此 VM 不使用 UEFI。
我在其中一个运行了 `lsblk` 以供参考。我使用结果来识别 `/` 根分区以及 `boot``efi` 分区。我使用了我的一台虚拟机,如下所示。在这种情况下没有 `efi` 分区,因为此 VM 不使用 UEFI。
```
# lsblk
@ -61,63 +60,50 @@ sr0 11:0 1 1.6G 0 rom /run/initramfs/live
zram0 252:0 0 8G 0 disk [SWAP]
```
`/dev/sda1` 分区很容易识别为 `/boot`,根分区也很明显。
`/dev/sda1` 分区很容易识别为 `/boot`,根`/`分区也很明显。
在另一个终端会话中,我执行了一系列步骤来恢复我的系统。特定的卷组名称和设备分区(例如 `/dev/sda1`)因系统而异。此处显示的命令特定于我的情况。
目标是使用 Live USB 引导并完成启动,然后仅在镜像目录中挂载必要的文件系统,并运行 `chroot` 命令在 chroot 镜像目录中运行 Linux。这种方法绕过损坏的 GRUB或其他配置文件。但是它提供了一个完整的运行系统其中安装了所有原始文件系统以进行恢复既是所需工具的来源也是要进行更改的目标。
目标是使用现场 USB 引导并完成启动,然后仅在镜像目录中挂载必要的文件系统,并运行 `chroot` 命令在 chroot 镜像目录中运行 Linux。这种方法绕过损坏的 GRUB或其他配置文件。但是它提供了一个完整的运行系统其中安装了所有原始文件系统以进行恢复既是所需工具的来源也是要进行更改的目标。
以下是步骤和相关命令:
1. 创建目录 `/mnt/sysimage` 以提供 `chroot` 目录的位置。
2. 将根分区挂载到 `/mnt/sysimage`
```
# mount /dev/mapper/vg01-root /mnt/sysimage
```
```
# mount /dev/mapper/vg01-root /mnt/sysimage
```
3. 将 `/mnt/sysimage` 设为你的工作目录:
```
# cd /mnt/sysimage
```
```
# cd /mnt/sysimage
```
4. 挂载 `/boot``/boot/efi` 文件系统。
5. 挂载其他主要文件系统。此步骤不需要像 `/home``/tmp` 这样的文件系统:
```
# mount /dev/mapper/vg01-usr usr
```
# mount /dev/mapper/vg01-usr usr
# mount /dev/mapper/vg01-var var
```
6. 绑定已挂载的重要文件系统,它们必须在已经 chroot 的系统和原始的现场系统之间共享,而后者仍然在外部运行:
```
# mount --bind /sys sys
# mount /dev/mapper/vg01-var var
```
# mount --bind /proc proc
```
7. 一定要最后操作 `/dev` 目录,否则其他文件系统不能挂载:
```
# mount --bind /dev dev
```
8. chroot 到系统镜像:
```
# chroot /mnt/sysimage
```
6. 挂载重要但已挂载的文件系统,它们必须在已经 chroot 的系统和原始 Live 系统之间共享,而后者仍然在外面运行:
```
# mount --bind /sys sys
# mount --bind /proc proc
```
7. 一定要最后操作 `/dev` 目录,否则其他文件系统不会挂载:
```
# mount --bind /dev dev
```
8. chroot 系统镜像:
```
# chroot /mnt/sysimage
```
系统现在已经准备好了,无论你需要做什么,都可以把它恢复到一个工作状态。然而,有一次我能够在这种状态下运行我的服务器数天,直到我能够研究和测试真正的修复方法。我并不推荐这样做,但在紧急情况下,当有任务需要启动和运行时,这可能是一个选择。
系统现在已经准备好了,无论你需要做什么,都可以把它恢复到一个工作状态。然而,有一次我能够在这种状态下运行我的服务器数天,直到我能够研究测试出真正的修复方法。我并不推荐这样做,但在紧急情况下,当有任务需要启动和运行时,这可能是一个选择。
### 解决方案
当我让每个系统进入恢复模式,修复就很容易了。因为我的系统现在就像成功启动一样工作,我只需对 `/etc/default/grub``/etc/fstab` 进行必要的更改并运行 `grub2-mkconfig > boot/grub2/grub.cfg ` 命令。我使用 `exit` 命令退出 chroot然后重启主机。
当我让每个系统进入恢复模式,修复就很容易了。因为我的系统现在就像成功启动一样工作,我只需对 `/etc/default/grub``/etc/fstab` 进行必要的更改并运行 `grub2-mkconfig > boot/grub2/grub.cfg` 命令。我使用 `exit` 命令退出 chroot 环境,然后重启主机。
当然,我无法自动从我的意外事故中恢复过来。我必须在每台主机上手动执行整个过程,这是使用自动化快速和容易地传播我自己的错误的一点报应。
@ -142,7 +128,7 @@ via: https://opensource.com/article/22/9/recover-linux-system-live-usb
作者:[David Both][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

@ -0,0 +1,275 @@
[#]: subject: "11 Interesting Firefox Add-ons to Improve Your Browsing Experience"
[#]: via: "https://itsfoss.com/firefox-add-ons/"
[#]: author: "Pratham Patel https://itsfoss.com/author/pratham/"
[#]: collector: "lkxed"
[#]: translator: "gpchn"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15046-1.html"
11 个有趣的 Firefox 浏览器扩展,改善你的浏览体验
======
1[](https://img.linux.net.cn/data/attachment/album/202209/19/142052i277yjgyy11zzrdu.jpg)
我想我们都同意Firefox 是 [Linux 的最佳浏览器][1] 之一。
而且锦上添花的是,你可以用一些扩展来提高你的浏览体验! 也许甚至可以将 Facebook 隔离在容器中?😉
在我推荐一些优秀的 Firefox 浏览器扩展之前,让我给你一些提示。
### 安装 Firefox 扩展前须知
我们都知道的一件事是 [盲目地安装浏览器扩展可能是极其有害的][2]。那么如何确定浏览器扩展是否可以安全使用?
由于本文是关于 Firefox 扩展的,我们将重点放在 Firefox 的*市场*(获取扩展的官方渠道)。
虽然没有什么是 100% 安全的,但有几件事可以检查:
![一个理想的可以安全使用的 Firefox 扩展][3]
* [扩展的徽章][4]寻找“推荐”或“By Firefox”徽章忽略包含警告徽章/图标的扩展。
* 菜单和评论:虽然仅此一项并不能提供太多保证,但这是你可以在其他方面考虑的一件事。此外,关注评论的数量可以帮助你了解它在用户中是否足够受欢迎。
* [扩展的权限][5]:某些扩展需要诸如“访问浏览器标签页”、“导航时访问浏览器动作”等权限。记下这一点并确定你对哪些权限的舒适程度。
* 最后更新日期:有时,即使是优秀的、知名的扩展也不会更新。这没关系,但对于像密码管理器、广告拦截器这样的扩展来说,这很重要。应始终谨慎使用超过 2 个月没更新的扩展。
* 扩展发布者:始终确保扩展的发布者是你信任的人,或者已经发布了你信任的扩展。
话虽如此,让我们来看看一些可以改善你的网络浏览体验的扩展。
另请阅读:
> **[9 个开源扩展可改善你的 Mozilla Firefox 体验][6]**
### 1、Facebook Container
![Facebook Container][7]
**主要亮点:**
* 由 Mozilla Firefox 团队制作
* 平均评分为 4.5 星3,500 多条评论)
* 定期更新
每个人都讨厌 Facebook但很少有人愿意从自己的网站上删除 Facebook 的跟踪元素。所以 Mozilla 引用了一个灭霸的片段 —— “好吧,我自己做”,并为 Firefox 用户创建了这个扩展。
顾名思义,为 Facebook 创建了一个隔离容器(与 Docker 无关)。所有与 Facebook 相关的东西都发生在这个孤立的容器中。 这最终使社交媒体巨头更难追踪你。
> **[安装 Facebook Container][8]**
### 2、uBlock Origin
![ublock origin firefox 1][9]
**主要亮点:**
* Mozilla 推荐的扩展
* 4.8 星的平均评分14,000 多条评论)
* 定期更新
uBlock Origin 是 Firefox 最知名和最受信任的“广告拦截”扩展之一。是的,它主要用于屏蔽广告,但因为它的基本任务是屏蔽你的网络浏览器中的元素,所以它可以屏蔽很多项目。广告,是的,还有网络跟踪器、加密货币矿工、弹出窗口等。
虽然它的权限可能看起来有点过分,但这背后是有原因的。该扩展需要“*在导航期间访问浏览器活动*”和“*访问所有网站的数据*”等权限,以便它可以评估每个查询并阻止那些看起来有害或无用的查询。
> **[安装uBlock Origin][10]**
### 3、Bitwarden
![Bitwarden 演示][11]
**主要亮点:**
* Mozilla 推荐的扩展
* 平均评分为 4.8 星6000 多条评论)
Bitwarden 应该是每个人的首选密码管理器。它为移动端、网页端和 PC 端提供免费同步支持,还可以安全地存储笔记,帮助生成用户名**和**密码、自动填充用户信息等等。最重要的是,[它使用 GPL-3.0 许可证][12]。谁不喜欢自由开源软件?
Bitwarden 拥有*我会在密码管理器中寻找*的一切。如果你想升级到高级版,只需 10 美元。 我强烈推荐这个 Firefox 扩展!
> **[安装 Bitwarden][13]**
### 4、LanguageTool
![LanguageTool 扩展使用演示][14]
**主要亮点:**
* Mozilla 推荐的扩展
* 平均评分为 4.7 星2900 多条评论)
* 定期更新
你是否想要 [Grammarly][15] 的开源替代品?虽然我在使用 Grammarly 时没有任何问题但我真正喜欢和首选的是自由开源软件。LanguageTool 是一款出色的工具可用于检查拼写错误等语法不一致、使用不同的拼写color 与 colour、常见的混淆词then 与 than你还可以使用它获得同义词库。
根据我使用此扩展的经验,它几乎可以在所有文本上可靠地工作。毫无问题。该扩展最大的两个特点如下:
* 支持超过 25 种语言。支持的语言列在“关于此扩展程序”部分的底部。
* 使用此扩展无需注册!
> **[安装 LanguageTool][16]**
### 5、Tranquikity Reader
![firefox tanquility][17]
想象一下,你正在阅读互联网上的一篇文章,网页顶部和底部有两个横幅广告,整个右侧都是广告,底部的广告横幅是自动播放的视频。你打开广告拦截器,但视频继续播放。有时横幅中没有广告,但它们仍然占用了宝贵的屏幕空间。你是否感觉很烦恼?
别担心Firefox 的 **Tranquility Reader** 扩展可以解决这个问题。此扩展程序删除了“额外的”元素,如照片、视频、广告、社交媒体共享按钮等。它为你提供了一个干净的 UI只有文本因此你可以专注于阅读。
Tranquility Reader 扩展具有以下统计信息:
* Mozilla 推荐的扩展
* 平均评分为 4.6 星200 条评论)
* 不经常更新但积极维护
> **[安装 Tranquility][18]**
### 6、Enhancer for YouTube
![Enhancer for YouTube 一项功能的演示][19]
**主要亮点:**
* Mozilla 推荐的扩展
* 平均 4.7 星评级9,000 多条评论)
它是 Firefox 中众多 Youtube 增强扩展之一。它为 YouTube 播放器添加了一些按钮,允许进行更多的自定义。你可以获得诸如更改分辨率、控制播放速度、使用鼠标滚轮控制音频音量等功能。
你可以在其 [官方网页][20] 上找到有关该扩展程序的更多信息。
> **[安装 Enhancer for YouTube][21]**
### 7、Tomato Clock
![Tomato Clock][22]
当你上网时,跟踪你的时间、生产力和理智是至关重要的。尤其是当你正在研究一个主题并陷入困境时,你应该休息一下,但你会过于投入,以至于你可能会忘记时间。
Tomato Clock 扩展正如它的名字,它是一个时钟定时器。一个“番茄”有 25 分钟长,根据你对屏幕上显示的内容的心理投入而感觉或长或短。完成 25 分钟后,你将收到一个浏览器通知,通知你时间的流逝。
**主要亮点:**
* Mozilla 推荐的扩展
* 它的平均评分为 4.5 星300 多条评论)
* 使用 GPL v3.0 许可证
> **[安装 Tomato Clock][23]**
### 8、Search by Image
![演示 Firefox 的图片搜索扩展的“捕获”功能][24]
**关键亮点:**
* Mozilla 推荐的扩展
* 平均评分为 4.6 星1,100 多个评论)
* 对你上传的媒体采用了合理的 [隐私政策][26]
当你搜索“红色兰博基尼”一词时,你会得到红色兰博基尼的图片。但是,如果你不知道它是什么车呢?这个扩展允许你使用图像而不是文字术语来搜索图像,并显示类似的结果或该图像的来源地。
你可以通过以下方式选择图片进行搜索:
* 选择 URL这使你可以直接点击显示在网页上的图像。
* 网页截图:选择网页上的一个特定区域,以便进行反向图像搜索。
* 本地图片:从计算机的本地驱动器(而不是网页)上传一个现有的图像。
* URL粘贴图像的 URL 以进行反向图像搜索。
> **[安装 Search by Image][27]**
### 9、Dictionary Anywhere
![Dictionary Anywhere 扩展显示所选单词的含义][28]
**主要亮点:**
* Mozilla 推荐的扩展
* 平均 4.3 星评级260 条评论)
* 不定期更新
有一个无障碍的字典从来都不是一件坏事!当然,我已经被 macOS 的“压感查询”功能宠坏了。当我使用 Linux 时Firefox 的 Dictionary Anywhere 扩展确实弥补了这一点。我需要做的就是双击一个词,然后定义就会弹出来!
目前,支持的语言只有英语、西班牙语、德语和法语。请注意,这个扩展不能在 Firefox 的阅读模式下工作。这是因为脚本不允许在这种模式下执行。
一个小瑕疵是,这使得在一个可编辑的文本中“双击并选择整个单词”变得略微恼人。这是为方便性付出的一个小代价。
此外,如果你想要一个积极维护的扩展,这将使你失望。
> **[下载 Dictionary Anywhere][29]**
### 10、Vimium-FF
![vimium FF][30]
**主要亮点:**
* 平均评分 4.8 星400 多条评论)
* 实验性扩展
如果你是 Vim 用户,我就不需要向你解释了,自己去试试吧!你会回来感谢我的。
对于那些不知道这个扩展做什么的人,它允许你仅使用 Vim 样式的键在 Firefox 中导航。按 `J` 键向下滚动、`K` 键向上滚动、`X` 键关闭当前选项卡、`T` 键打开一个新选项卡,以及各种其他键盘快捷键。
虽然这个扩展有“**实验性**”标志,但在过去一两年的使用经验中,我没有遇到任何问题。
> **[下载 Vimium-FF][31]**
### 11、FireShot
![fireshot][32]
FireShot 是一个非常简单的 Firefox 扩展,它允许你将完整的网页截图并保存为长图或 PDF 文件,最重要的是,你还可以在截图上注释(哈哈哈)!但是注释功能只能在 Windows 上使用,真是太可惜了!
它**没有 Firefox 的“推荐”徽章**。 因此,你可以在决定使用它之前在其附加页面上探索更多有关它的信息。
> **[下载 FireShot][33]**
### 总结
本文涵盖了各种 Firefox 扩展,我认为这些扩展应该有助于改善你的 Web 浏览体验。
你最喜欢的 Firefox 扩展是什么? 在下面的评论中让我知道你的想法。
--------------------------------------------------------------------------------
via: https://itsfoss.com/firefox-add-ons/
作者:[Pratham Patel][a]
选题:[lkxed][b]
译者:[gpchn](https://github.com/gpchn)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/pratham/
[b]: https://github.com/lkxed
[1]: https://itsfoss.com/best-browsers-ubuntu-linux/
[2]: https://www.bleepingcomputer.com/news/security/chrome-extensions-with-14-million-installs-steal-browsing-data/
[3]: https://itsfoss.com/wp-content/uploads/2022/09/bitwarden-firefox-add-on.jpg
[4]: https://support.mozilla.org/en-US/kb/add-on-badges
[5]: https://support.mozilla.org/en-US/kb/permission-request-messages-firefox-extensions
[6]: https://itsfoss.com/best-firefox-add-ons/
[7]: https://itsfoss.com/wp-content/uploads/2022/09/facebook-container.jpg
[8]: https://addons.mozilla.org/en-US/firefox/addon/facebook-container/
[9]: https://itsfoss.com/wp-content/uploads/2022/09/ublockorigin-firefox-1.jpg
[10]: https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/
[11]: https://itsfoss.com/wp-content/uploads/2022/09/03-bitwarden.webp
[12]: https://github.com/bitwarden/clients/blob/master/LICENSE.txt
[13]: https://addons.mozilla.org/en-US/firefox/addon/bitwarden-password-manager/
[14]: https://itsfoss.com/wp-content/uploads/2022/09/04-languagetool.webp
[15]: https://www.grammarly.com/
[16]: https://addons.mozilla.org/en-US/firefox/addon/languagetool/
[17]: https://itsfoss.com/wp-content/uploads/2022/09/firefox-tanquility.jpg
[18]: https://addons.mozilla.org/en-US/firefox/addon/tranquility-1/
[19]: https://itsfoss.com/wp-content/uploads/2022/09/06-enhancer-for-yt.webp
[20]: https://www.mrfdev.com/how-to-use-enhancer-for-youtube
[21]: https://addons.mozilla.org/en-GB/firefox/addon/enhancer-for-youtube
[22]: https://itsfoss.com/wp-content/uploads/2022/09/tomato-time-management.jpg
[23]: https://addons.mozilla.org/en-US/firefox/addon/tomato-clock/
[24]: https://itsfoss.com/wp-content/uploads/2022/09/08-src-by-img.webp
[25]: https://addons.mozilla.org/en-US/firefox/addon/search_by_image/privacy/
[26]: https://addons.mozilla.org/en-US/firefox/addon/search_by_image/privacy/
[27]: https://addons.mozilla.org/en-US/firefox/addon/search_by_image/
[28]: https://itsfoss.com/wp-content/uploads/2022/09/09-dict-anywhere.webp
[29]: https://addons.mozilla.org/en-GB/firefox/addon/dictionary-anyvhere/
[30]: https://itsfoss.com/wp-content/uploads/2022/01/vimium-firefox.png
[31]: https://addons.mozilla.org/en-GB/firefox/addon/vimium-ff/
[32]: https://itsfoss.com/wp-content/uploads/2022/09/fireshot.jpg
[33]: https://addons.mozilla.org/en-GB/firefox/addon/fireshot/

View File

@ -3,17 +3,18 @@
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15053-1.html"
CubyText一个正在开发中的快速的跨平台开源知识管理应用
CubyText一个正在开发中的快速的跨平台开源知识管理应用
======
CubyText 是一个迷人的个人项目,你可以分叉或尝试作为一个知识管理应用。
> CubyText 是一个迷人的个人项目,你可以分叉或尝试作为一个知识管理应用。
![CubyText 是一个正在开发中的快速的跨平台开源知识管理应用][1]
有很多开源应用可以帮助你记下并组织你的想法/研究或知识。
有很多开源应用可以帮助你记下并组织你的想法研究或知识。
如果你不记得它们,请允许我分享其中的几个:
@ -22,35 +23,37 @@ CubyText 是一个迷人的个人项目,你可以分叉或尝试作为一个
当然,你还可以探索一些最适合这项工作的笔记应用:
[这里是我们为你找到的最好的 Linux 笔记应用][4]
> **[这里是我们为你找到的最好的 Linux 笔记应用][4]**
但是,我看到了 **Vincent Chan** 的个人项目,它提供了类似于 Notion 的外观,专注于成为一种快速且私密的选择。
> 💡 请注意,开发者并不打算将其作为任何商业项目的替代品。它是一个实验性的应用程序,以满足他的要求。不要指望它能取代你最喜欢的任何应用程序。
### CubyText实验性知识管理应用
![cuby text][6]
[CubyText][7] 是一款免费开源的**跨平台**知识管理应用,还处于早期开发阶段。
[CubyText][7] 是一款自由开源的**跨平台**知识管理应用,还处于早期开发阶段。
📢 *该项目的第一个版本于昨天9 月 12 日)上线。所以,它是新的。*
*📢 该项目的第一个版本于 9 月 12 日上线。所以,它是真的新啊。*
你可以在 Linux、macOS 和 Windows 上试用它。 **.deb** 文件可用于 Linux。
该项目的有趣之处在于其类似于 Notion 的用户界面与块编辑器的概念。开发者为这个工具建立了一个[块编辑器][8],以便能够组织内容。
该项目的有趣之处在于其类似于 Notion 的用户界面与块编辑器的概念。开发者为这个工具建立了一个 [块编辑器][8],以便能够组织内容。
![cuby text][9]
因此,你在此处添加的任何内容都是按块组织的。它支持带有 markdown 标记的富文本,因此你可以轻松地增强你的笔记。
因此,你在此处添加的任何内容都是按块组织的。它支持带有 Markdown 标记的富文本,因此你可以轻松地增强你的笔记。
此外,你可以添加选项卡以快速创建更多笔记以及一目了然地了解信息。你还可以在上面的截图中注意到待办事项列表。
看起来很有趣,对吧?
如果你好奇,请前往它的 [GitHub 页面][10]并为你的平台下载适当的包进行测试。
如果你好奇,请前往它的 [GitHub 页面][10] 并为你的平台下载适当的包进行测试。
[CubyText][11]
> **[CubyText][11]**
💬 *你如何看待 CubyText 这个个人项目?你想要这样的东西来代替你的笔记知识管理应用吗?*
*💬 你如何看待 CubyText 这个个人项目?你想要这样的东西来代替你的笔记知识管理应用吗?*
--------------------------------------------------------------------------------
@ -59,7 +62,7 @@ via: https://news.itsfoss.com/cubytext-experimental-project/
作者:[Ankush Das][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

@ -0,0 +1,39 @@
[#]: subject: "Google Uses Fully Homomorphic Open Source Duality-Led Encryption Library"
[#]: via: "https://www.opensourceforu.com/2022/09/google-uses-fully-homomorphic-open-source-duality-led-encryption-library/"
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
[#]: collector: "lkxed"
[#]: translator: "littlebirdnest"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15048-1.html"
谷歌使用 Duality 主导的完全同态开源加密库
======
![](https://www.opensourceforu.com/wp-content/uploads/2022/09/google-3-1536x1123.jpg)
> 合作伙伴关系的增长加速了 FHE 市场的采用。
据 Duality 技术公司的新闻稿,谷歌已将其在 GitHub 上开源的使用 XLS SDK 开发的开源项目完全同态加密FHE转译器与领先的开源<ruby>完全同态加密<rt>fully homomorphic encryption</rt></ruby>库 OpenFHE 合并。通过使加密知识更简单、更容易接近,开发者对 FHE 的采用将增加。
这类称为 FHE 的加密技术不同于更常见的加密技术,因为它可以直接对加密数据进行计算,而无需密钥。一个由知名密码学家组成的社区创建了 OpenFHE这是一个根深于后量子开源晶格密码学的加密库。
该库旨在实现最佳可用性、增强的 API、模块化、跨平台可移植性以及与硬件结合时的项目加速器。开发人员可以通过将 OpenFHE 与谷歌的转译器结合起来,使用高级代码来操作加密数据,例如经常用于未加密数据的 C++,而不需要学习密码学。
谷歌的转译器简化了使用 FHE 驱动的应用程序的过程,而无需目前从头开始构建 FHE 所需的广泛的软件开发专业知识。这填补了软件设计人员和开发人员偶尔遇到的空白,他们希望从 FHE 的功能中受益,而不必经历那具有挑战性的学习曲线。
Duality 公司的密码学研究高级主管兼首席科学家 Yuriy Polyakov 补充说:“我们的团队通过我们的 OpenFHE 库达成了重要的里程碑,它已迅速成为当今许多技术领导者的选择,例如谷歌。谷歌转译器为那些非 FHE 专家的应用开发者社区提供了 OpenFHE 同态加密的最新技术。”
--------------------------------------------------------------------------------
via: https://www.opensourceforu.com/2022/09/google-uses-fully-homomorphic-open-source-duality-led-encryption-library/
作者:[Laveesh Kocher][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.opensourceforu.com/author/laveesh-kocher/
[b]: https://github.com/lkxed

View File

@ -0,0 +1,175 @@
[#]: subject: "Install Linux Mint with Windows 11 Dual Boot [Complete Guide]"
[#]: via: "https://www.debugpoint.com/linux-mint-install-windows/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: "gpchn"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15073-1.html"
使用 Windows 11 双引导安装 Linux Mint
======
![](https://img.linux.net.cn/data/attachment/album/202209/26/115222iqlvc0w020m37mc3.jpg)
> 将 Linux Mint 与 Windows 11或 Windows 10同时安装并制作双引导系统的完整指南。
如果你是新 Linux 用户,想在不删除 OEM 安装的 Windows 的情况下安装 Linux Mint请遵循本指南。完成下面描述的步骤后你应该拥有一个双引导系统你可以在其中学习和在 Linux 系统中完成工作,而无需引导 Windows。
### 1、开始之前你需要什么
启动到你的 Windows 系统并从官方网站下载 Linux Mint ISO 文件。 ISO 文件是 Linux Mint 的安装镜像,我们将在本指南中使用它。
在官网图1下载 Cinnamon 桌面版的 ISO适合所有人
> **[下载链接][1]**
![图 1从官网下载 Linux Mint][2]
下载后,将 U 盘插入你的系统。然后使用 Rufus 或 [Etcher][3] 将上面下载的 .ISO 文件写入该 USB 驱动器。
### 2、准备一个分区来安装 Linux Mint
正常情况下Windows 笔记本电脑通常配备 C 盘和 D 盘。C 盘是安装 Windows 的地方。对于新的笔记本电脑D 驱动器通常是空的(任何后续驱动器,如 E 等)。现在,你有两个选项可供选择:一是 **缩小 C 盘** 为额外的 Linux 安装腾出空间。第二个是**使用其他驱动器/分区**,例如 D 盘或 E盘。
选择你希望的方法。
如果你选择使用 D 盘或 E 盘用于 Linux 系统,请确保先禁用 BitLocker然后再禁用现代 OEM 安装的 Windows 笔记本电脑附带的所有其他功能。
* 从开始菜单打开 Windows PowerShell 并键入以下命令(图 2以禁用 BitLocker。根据你的目标驱动程序更改驱动器号这里我使用了驱动器 E
```
manage-bde -off E
```
![图 2禁用 Windows 驱动器中的 BitLocker 以安装 Linux][4]
如果你选择缩小 C 盘(或任何其他驱动器),请从开始菜单打开“<ruby>磁盘管理<rt>Disk Management</rt></ruby>”,它将显示你的整个磁盘布局。
* 右键单击​​并在要缩小的驱动器上选择“<ruby>缩小卷<rt>Shrink Volume</rt></ruby>”(图 3以便为 Linux Mint 腾出位置。
![图 3磁盘分区中的压缩卷选项示例][5]
* 在下一个窗口中,在“<ruby>输入要缩小的空间量(以 MB 为单位)<rt>Enter the amount of space to shrink in MB</rt></ruby>”下以 MB 为单位提供你的分区大小(图 4。显然它应该小于或等于“<ruby>可用空间大小<rt>Size of available space</rt></ruby>”中提到的值。因此,对于 100 GB 的分区,给出 100*1024=102400 MB。
* 完成后,单击“<ruby>缩小<rt>Shrink</rt></ruby>”。
![图 4输入 Linux 分区的大小][6]
现在,你应该会看到一个“<ruby>未分配空间<rt>Unallocated Space</rt></ruby>”,如下所示(图 5。右键单击它并选择“<ruby>新建简单卷<rt>New Simple Volume</rt></ruby>”。
![图 5创建未分配空间][7]
* 此向导将使用文件系统准备和格式化分区。注意:你可以在 Windows 本身中或在 Linux Mint 安装期间执行此操作。Linux Mint 安装程序也为你提供了创建文件系统表和准备分区的选项,我建议你在这里做。
* 在接下来的一系列屏幕中(图 6、7 和 8以 MB 为单位给出分区大小,分配驱动器号(例如 D、E、F和文件系统为 fat32。
![图 6新建简单卷向导-page1][8]
![图 7新建简单卷向导-page2][9]
![图 8新建简单卷向导-page3][10]
* 最后,你应该会看到你的分区已准备好安装 Linux Mint。你应该在 Mint 安装期间按照以下步骤选择此选项。
![图 9安装 Linux 的最终分区][11]
* 作为预防措施,**记下分区大小**(你刚刚在图 9 中作为示例创建的分区)以便在安装程序中快速识别它。
### 3、在 BIOS 中禁用安全启动
插入 USB 驱动器并重新启动系统。
* 开机时,反复按相应的功能键进入 BIOS。你的笔记本电脑型号的按键可能不同。下面是主要笔记本电脑品牌的参考。
| 笔记本厂商 | 进入 BIOS 的功能键 |
| :- | :- |
| 宏碁 | `F2``DEL` |
| 华硕 | PC 使用 `F2`,主板是 `F2``DEL` |
| 戴尔 | `F2``F12` |
| 惠普 | `ESC``F10` |
| Lenovo | `F2``Fn + F2` |
| Lenovo台式机 | F1` |
| LenovoThinkPad | `Enter + F1` |
| 微星 | `DEL` |
| 微软 Surface 平板 | 按住音量增加键 |
| ORIGIN PC | `F2` |
| 三星 | `F2` |
| 索尼 | `F1`、`F2` 或 `F3` |
| 东芝 | `F2` |
* 你应该禁用 BIOS 安全设置并确保将启动设备优先级设置为 U 盘。
* 然后按 `F10` 保存并退出。
### 4、安装 Linux Mint
如果一切顺利,你应该会看到一个安装 Linux Mint 的菜单。选择 “Start Linux Mint……” 选项。
![图 10Linux Mint GRUB 菜单启动安装][12]
片刻之后,你应该会看到 Linux Mint Live 桌面。在桌面上,你应该会看到一个安装 Linux Mint 的图标以启动安装。
在下一组屏幕中,选择你的语言、键盘布局、选择安装多媒体编解码器并点击继续按钮。
在安装类型窗口中,选择 “<ruby>其他<rt>Something Else</rt></ruby>” 选项。
在下一个窗口(图 11仔细选择以下内容
![图11选择 Windows 11 安装 Linux Mint 的目标分区][13]
* 在“<ruby>设备<rt>Device</rt></ruby>”下,选择刚刚创建的分区;你可以通过我之前提到的要记下的分区大小来识别它。
* 然后点击“<ruby>更改<rt>Change</rt></ruby>”,在编辑分区窗口中,选择 Ext4 作为文件系统,选择格式化分区选项和挂载点为 `/`
* 单击“<ruby>确定<rt>OK</rt></ruby>”,然后为你的系统选择“<ruby>引导加载程序<rt> boot loader</rt></ruby>”;理想情况下,它应该是下拉列表中的第一个条目。
* 仔细检查更改。因为一旦你点击立即安装,你的磁盘将被格式化,并且无法恢复。当你认为一切准备就绪,请单击“<ruby>立即安装<rt>Install Now</rt></ruby>”。
在以下屏幕中,选择你的位置,输入你的姓名并创建用于登录系统的用户 ID 和密码。安装应该开始(图 12
![图 12安装中][14]
安装完成后(图 13取出 U 盘并重新启动系统。
![图 13安装完成][15]
如果一切顺利,在成功安装为双引导系统后,你应该会看到带有 Windows 11 和 Linux Mint 的 GRUB。
现在你可以使用 [Linux Mint][16] 并体验快速而出色的 Linux 发行版。
### 总结
在本教程中,我向你展示了如何在装有 OEM 的 Windows 的笔记本电脑或台式机中使用 Linux Mint 创建一个简单的双启动系统。这些步骤包括分区、创建可引导 USB、格式化和安装。
尽管上述说明适用于 Linux Mint 21 Vanessa但是它现在应该可以用于所有其他出色的 [Linux 发行版][17]。
如果你遵循本指南,请在下面的评论框中告诉我你的安装情况。
如果你成功了,欢迎来到自由世界!
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/linux-mint-install-windows/
作者:[Arindam][a]
选题:[lkxed][b]
译者:[gpchn](https://github.com/gpchn)
校对:[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.linuxmint.com/download.php
[2]: https://www.debugpoint.com/wp-content/uploads/2022/09/Download-Linux-Mint-from-the-official-website.jpg
[3]: https://www.debugpoint.com/etcher-bootable-usb-linux/
[4]: https://www.debugpoint.com/wp-content/uploads/2022/09/Disable-BitLocker-in-Windows-Drives-to-install-Linux.jpg
[5]: https://www.debugpoint.com/wp-content/uploads/2022/09/Example-of-Shrink-Volume-option-in-Disk-Partition-1024x453.jpg
[6]: https://www.debugpoint.com/wp-content/uploads/2022/09/Enter-the-size-of-your-Linux-Partition.jpg
[7]: https://www.debugpoint.com/wp-content/uploads/2022/09/Unallocated-space-is-created.jpg
[8]: https://www.debugpoint.com/wp-content/uploads/2022/09/New-Simple-Volume-Wizard-page1.jpg
[9]: https://www.debugpoint.com/wp-content/uploads/2022/09/New-Simple-Volume-Wizard-page2.jpg
[10]: https://www.debugpoint.com/wp-content/uploads/2022/09/New-Simple-Volume-Wizard-page3.jpg
[11]: https://www.debugpoint.com/wp-content/uploads/2022/09/Final-partition-for-installing-Linux.jpg
[12]: https://www.debugpoint.com/wp-content/uploads/2022/09/Linux-Mint-GRUB-Menu-to-kick-off-installation.jpg
[13]: https://www.debugpoint.com/wp-content/uploads/2022/09/Choose-the-target-partition-to-install-Linux-Mint-with-Windows-11.jpg
[14]: https://www.debugpoint.com/wp-content/uploads/2022/09/Installation-is-in-progress.jpg
[15]: https://www.debugpoint.com/wp-content/uploads/2022/09/Installation-is-complete.jpg
[16]: https://www.debugpoint.com/linux-mint
[17]: https://www.debugpoint.com/category/distributions
[18]: https://www.debugpoint.com/install-java-17-ubuntu-mint/

View File

@ -3,27 +3,28 @@
[#]: author: "Dr Kumar Gaurav https://www.opensourceforu.com/author/dr-gaurav-kumar/"
[#]: collector: "lkxed"
[#]: translator: "misitebao"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15050-1.html"
# 帮助在云端部署人工智能AI和机器学习ML应用程序的平台
帮助在云端部署 AI 和 ML 应用程序的平台
======
_人工智能和机器学习正在影响当今几乎每个行业。本文重点介绍了这些技术在我们日常生活中的各种使用方式以及一些开源云平台如何实现其部署。_
![](https://www.opensourceforu.com/wp-content/uploads/2022/08/AI-ML-infographics.jpg)
人工智能 (AI) 的目标是构建能够模仿人类认知的机器和自动化系统。在全球范围内,人工智能正在以多种方式改变着社会、政治和经济。人工智能应用的例子包括谷歌帮助 (Google Help)、Siri、Alexa 和 Tesla (特斯拉) 等自动驾驶汽车
> 人工智能AI和机器学习ML正在影响当今几乎每个行业。本文重点介绍了这些技术在我们日常生活中的各种使用方式以及一些开源云平台如何实现其部署
如今,人工智能正被广泛使用,以有效的方式解决各行各业的难题。它被用于医疗保健行业,以做出比人类更准确、更快速的诊断。医生可以使用人工智能来诊断疾病,并在患者病情恶化时收到警报
<ruby>人工智能<rt>artificial intelligence</rt></ruby>AI的目标是构建能够模仿人类认知的机器和自动化系统。在全球范围内 AI 正在以各种方式改变着社会、政治和经济。 AI 应用的例子包括<ruby>谷歌帮助<rt>Google Help</rt></ruby>、Siri、Alexa 和特斯拉等自动驾驶汽车
数据安全对每个企业都至关重要,网络攻击的数量也在不断增加。使用人工智能,可以提高数据的安全性。这方面的一个例子是集成智能机器人来识别软件错误和网络攻击
如今, AI 正被广泛使用,以有效的方式解决各行各业的难题。它被用于医疗保健行业,以做出比人类更准确、更快速的诊断。医生可以使用 AI 来诊断疾病,并在患者病情恶化时得到提醒
推特 (Twitter)、WhatsApp、Facebook (脸书) 和 Snapchat 只是使用 AI 算法存储和管理数十亿个人资料的社交媒体平台中的一小部分。人工智能可以整理和筛选大量数据,以找到最新趋势、标签和各种各样人的需求。
数据安全对每个企业都至关重要,网络攻击的数量也在不断增加。使用 AI ,可以提高数据的安全性。这方面的一个例子是集成智能机器人来识别软件错误和网络攻击。
Twitter、WhatsApp、Facebook 和 Snapchat 只是使用 AI 算法存储和管理数十亿个人资料的社交媒体平台中的一小部分。 AI 可以整理和筛选大量数据,以找到最新趋势、标签和各种各样人的需求。
![Figure 1: Key applications of machine learning][1]
旅游业越来越依赖人工智能,因为后者可以帮助完成各种与旅行相关的任务,包括为消费者预订酒店、航班和最佳路线。为了提供更好、更快的客户服务,由人工智能驱动的聊天机器人正被用于旅游业。
表 1: 机器学习的工具和框架
旅游业越来越依赖 AI ,因为后者可以帮助完成各种与旅行相关的任务,包括为消费者预订酒店、航班和最佳路线。为了提供更好、更快的客户服务,由 AI 驱动的聊天机器人正被用于旅游业。
| 工具/平台 | 链接 |
| :------------ | :------------------------------------- |
@ -46,19 +47,21 @@ _人工智能和机器学习正在影响当今几乎每个行业。本文重点
| Dopamine | https://github.com/google/dopamine |
| FlairNLP | https://github.com/flairNLP/flair |
*表 1: ML 的工具和框架*
### 不同领域的机器学习
让软件应用程序和小工具自行响应和开发的所有技术和工具都称为机器学习 (ML)。多亏了机器学习技术,人工智能可以在没有真正被明确编程来执行所需操作的情况下进行学习。ML 算法不依赖于预定义的计算机指令,而是从样本输入中学习一个模式,然后完全基于学习到的模式来预测和执行任务。如果不能选择严格的算法机器学习可以成为救命稻草。它将通过分析以前的程序来选择新程序然后将其付诸实施。ML 为技术进步和以前在各种行业中无法想象的技术扫清了道路。如今,它被用于各种尖端技术 — 从预测算法到互联网电视直播。
让软件应用程序和小工具自行响应和发展的所有技术和工具都称为<ruby>机器学习<rt>machine learning</rt></ruby>ML。多亏了 ML 技术, AI 可以在没有真正被明确编程来执行所需操作的情况下进行学习。ML 算法不依赖于预定义的计算机指令,而是从样本输入中学习一个模式,然后完全基于学习到的模式来预测和执行任务。如果没有严格的算法可供选择, ML 可以成为救命稻草。它将通过分析以前的处理方式来选择新处理方式然后将其付诸实施。ML 为各种行业的技术进步和以前无法想象的技术扫清了道路。如今,它被用于各种尖端技术 — 从预测算法到互联网电视直播。
一个值得注意的 ML 和 AI 技术是图像识别,它是一种对数字图像中的特征或项进行分类和检测的方法。分类和人脸识别是使用这种方法完成的。
![Figure 2: Streamlit cloud for machine learning][2]
在推荐系统中使用机器学习是其最广泛使用和知名的应用之一。在当今的电子商务世界中,产品推荐是一种利用强大的机器学习技术的突出工具。网站使用人工智能和机器学习来跟踪过去的购买、搜索趋势和购物车历史,然后根据这些数据生成产品推荐。
将 ML 用于推荐系统是其最广泛使用和知名的应用之一。在当今的电子商务世界中,产品推荐是一种利用强大的 ML 技术的代表性工具。网站使用 AI 和 ML 来跟踪过去的购买、搜索趋势和购物车历史,然后根据这些数据生成产品推荐。
在医疗保健行业中使用机器学习算法引起了很多兴趣。通过使用 ML 算法,可以跨多个医院部门预测急诊室等待时间。员工轮班的详细信息、患者数据以及科室讨论和急诊室布局的记录都用于帮助创建算法。机器学习算法可用于检测疾病、计划治疗和预测。
在医疗保健行业中使用 ML 算法引起了很多兴趣。通过使用 ML 算法,可以跨多个医院部门预测急诊室等待时间。员工轮班的详细信息、患者数据以及科室讨论和急诊室布局的记录都用于帮助创建算法。 ML 算法可用于检测疾病、计划治疗和预测。
**用于机器学习的云平台的主要特点**:
**用于 ML 的云平台的主要特点**
- 算法或特征提取
- 关联规则挖掘
@ -80,21 +83,25 @@ _人工智能和机器学习正在影响当今几乎每个行业。本文重点
AI 和 ML 的应用可以部署在云平台上。如今,许多云服务提供商使程序员能够构建模型以在其领域内进行有效的决策。
这些基于云的平台与预先训练的机器学习和深度学习模型集成在一起,无需任何编码或最少的脚本即可在这些模型上部署应用程序。
这些基于云的平台与预先训练的 ML 和<ruby>深度学习<rt>deep learning</rt></ruby>DL模型集成在一起无需任何编码或用少量的脚本即可在这些模型上部署应用程序。
![Figure 3: Categories of ML deployments in Streamlit][3]
**Streamlit:** Streamlit 让数据科学家和机器学习专家能够访问各种机器学习模型。它是开源的并且与云部署兼容。ML 模型可以在几分钟内准备好与数据集一起使用
#### Streamlit
Streamlit 提供一系列机器学习模型和多个类别的源代码,包括自然语言处理、地理、教育、计算机视觉等。
Streamlit 让数据科学家和 ML 专家能够访问各种 ML 模型。它是开源的并且与云部署兼容。ML 模型可以在几分钟内准备好与数据集一起使用
Streamlit 提供一系列 ML 模型和多个类别的源代码,包括自然语言处理、地理、教育、计算机视觉等。
![Figure 4: Hugging Face for machine learning][4]
**Hugging Face:** 这是另一个平台,为各种类别的 ML 和 AI 提供预先训练的模型和架 构。许多企业巨头都在使用这个平台,包括 Facebook AI、微软、谷歌 AI、亚马逊网络服务和 Grammarly。
#### Hugging Face
这是另一个平台,为各种类别的 ML 和 AI 提供预先训练的模型和架构。许多企业巨头都在使用这个平台,包括 Facebook AI、微软、谷歌 AI、亚马逊网络服务和 Grammarly。
Hugging Face 中提供了许多预训练和部署就绪的模型,用于不同的应用程序,包括自然语言处理和计算机视觉。
使用 Hugging Face 中的 ML 模型可以执行以下任务:
使用 Hugging Face 中的 ML 模型可以执行以下任务
- 音频到音频处理
- 自动语音识别
@ -125,7 +132,7 @@ via: https://www.opensourceforu.com/2022/09/platforms-that-help-deploy-ai-and-ml
作者:[Dr Kumar Gaurav][a]
选题:[lkxed][b]
译者:[Misite Bao](https://github.com/misitebao)
校对:[校对者 ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux 中国](https://linux.cn/) 荣誉推出

View File

@ -0,0 +1,95 @@
[#]: subject: "This Flutter-based Unofficial Software Center Might Replace Ubuntu's Official App"
[#]: via: "https://news.itsfoss.com/unofficial-flutter-ubuntu-software/"
[#]: author: "Sagar Sharma https://news.itsfoss.com/author/sagar/"
[#]: collector: "lkxed"
[#]: translator: "littlebirdnest"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15056-1.html"
这个基于 Flutter 的非官方软件中心可能会取代 Ubuntu 的官方应用
======
> Canonical 是否计划用这个基于 Flutter 的应用程序取代 Ubuntu 软件中心?也许是,也许不是。
![](https://news.itsfoss.com/content/images/size/w2000/2022/09/ubuntu-unofficial-flutter-store.jpg)
Ubuntu 通常被认为 [是最适合初学者的发行版之一](https://itsfoss.com/best-linux-beginners/)但默认的软件中心GNOME <ruby>软件中心<rt>Software Center</rt></ruby>)需要更多的打磨才能使其成为令人愉悦的体验。
为什么?嗯,它很慢而且占用资源很多,所以大多数用户不会费心使用它,或者使用感受很糟糕。
是的,多年来它可能有所改善,但仍远非良好的体验。
它看起来像是来自 Canonical 的贡献者,而其他人已经联手为 Ubuntu 软件中心开发一个轻量级、基于 Flutter 的替代方案!
等等,它 **不是官方替代品**。但是,我想知道它是否打算很快取代 Ubuntu 软件中心?🤔
### 🆕 使用 Flutter 制作的 “Ubuntu 软件”
![ubuntu software built with flutter][3]
这个使用 Flutter 实现的 “<ruby>Ubuntu 软件<rt>Ubuntu Software</rt></ruby>”旨在实现轻量级、自适应和快速,提供比传统软件更好的用户体验。
但首要因素必须是可用性,对吧?因为最后,你只是为了安装软件。而且,你想快速完成,没有任何麻烦。
当我在我的系统上尝试它时,我注意到“**我的应用程序**”下有一个单独的 “Snaps” 和 “Deb 包”部分:
![separate section for deb and snap packages in ubuntu software][4]
这应该便于处理单个应用程序中的不同包。毕竟,这是我一直想要的!
轻松安装/管理应用程序的统一体验,是不是要求太多了? 🤷
但是应用信息和安装页面呢?好吧,它已经过重新设计,带有微妙的动画以增强体验。
![app info section in unofficial ubuntu software][5]
自适应布局简直就是锦上添花。这有点类似于 elementary OS 7 为我们准备的:
> **[elementary OS 7 准备添加响应式应用程序,并移植到 GTK 4](https://news.itsfoss.com/elementary-os-7-dev-updates/)**
所以,它看起来像是对未来的一个深思熟虑的实现,对吧?
![adaptive layout in unofficial ubuntu software center][8]
### 它会取代 Ubuntu 软件吗?
虽然项目贡献者将其标记为 Ubuntu 软件中心的非官方替代品,但我认为它更像是一个尝试作为替代品的实验。
考虑到负责 Ubuntu 上 Flutter 的高级工程师 @Canonical [JP Nurmi](https://twitter.com/jpnurmi) 参与其中,这将是一件值得期待的*事情*。
我们现在唯一能做的就是“预测”。随着事情的发展,这似乎有更多的机会成为官方的。
### 想尝试这个基于 Flutter 的商店吗?
你可以前往它的 [GitHub 页面](https://github.com/ubuntu-flutter-community/software) 并按照构建说明让它运行。请注意,截至目前,它正在大力开发中。
> **[下载 Ubuntu 软件](https://github.com/ubuntu-flutter-community/software)**
对于正在积极开发的东西来说,它的效果相当好。
*💬 我希望当前的软件中心被取代。你怎么看?在下面的评论中让我知道你的想法!*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/unofficial-flutter-ubuntu-software/
作者:[Sagar Sharma][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/sagar/
[b]: https://github.com/lkxed
[1]: https://news.itsfoss.com/content/images/size/w1200/2022/09/ubuntu-unofficial-flutter-store.jpg
[2]: https://itsfoss.com/best-linux-beginners/
[3]: https://news.itsfoss.com/content/images/2022/09/unofficial-ubuntu-software-1.png
[4]: https://news.itsfoss.com/content/images/2022/09/snap-and-deb-section-1.png
[5]: https://news.itsfoss.com/content/images/2022/09/kdenline-in-ubuntu-software.png
[6]: https://news.itsfoss.com/elementary-os-7-dev-updates/
[8]: https://news.itsfoss.com/content/images/2022/09/responsive-design-of-ubuntu-software.png
[9]: https://twitter.com/jpnurmi
[10]: https://github.com/ubuntu-flutter-community/software
[11]: https://github.com/ubuntu-flutter-community/software

View File

@ -0,0 +1,89 @@
[#]: subject: "Penpot is a Solid Open-Source Figma Alternative to Look Out for!"
[#]: via: "https://news.itsfoss.com/penpot-figma-alternative/"
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
[#]: collector: "lkxed"
[#]: translator: "littlebirdnest"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15049-1.html"
一个值得关注的开源软件 Penpot 将成为 Figma 可靠的替代品!
======
> Penpot 是一个自由开源的解决方案,能够替代 Figma 或类似的设计工具。你怎么看?
![Penpot is a Solid Open-Source Figma Alternative to Look Out for!][1]
Adobe 以高达 **200 亿美元的价格收购了流行的设计工具** [Figma](https://www.figma.com/)。
像往常一样,大型科技公司通过收购企业来消除竞争。因此,这并不完全是一个令人兴奋的消息。
但是,**令人兴奋**的是,我们遇到了一个自由开源的设计工具,它从 Figma 中获得灵感并且做得更好!
### Penpot正在开发中的自由开源的设计工具
![Penpot UI][3]
[Penpot][4] Penpot 是一个正在积极开发的开源项目。将近两年前,它在 ProductHunt 上推出,目前处于测试阶段。
**Penpot 值得关注的地方:**
- 自由开源(当然)。
- 可以选择自托管。
- 跨平台。
- 使用 SVG 作为原生格式。
- 基于 Web。
- 具有行业标准功能(受 Figma 启发)。
你可以观看其官方视频以了解其基础知识:
![Penpot for Beginners][6]
Penpot 的主要亮点是使用 SVG 作为其原生格式。使用 SVG 文件,你可以获得与许多矢量图形编辑工具很好的兼容性。
因此,你保存下来的文件,同样可以被其他的图片编辑软件打开,而不会被其专有的格式锁定在一个特定的软件上。
Penpot 为你提供绝对最佳的开放标准。
Penpot 的 CEOPablo Ruiz-Múzquiz 提到了更多:
> 如果你在存储层面上采用 SVG开放标准支持 Web移动互联网等你马上就可以将你所有的 Penpot 设计与你的代码库整合起来。由于采用了 SVG 而不是另一种封闭的格式你可以对设计本身的实际表现进行修改。这为设计师和开发人员打开了巨大的机会之门。另外SVG 意味着我们免费地就为低代码提供了支持。你可以在 Penpot 中选择任何元素并查看它的 SVG和 CSS形式知道它实际上是什么无需翻译。这给设计师和开发人员之间带来了更值得信赖的关系并允许前端开发人员尝试他们的设计技能。
所以,使用 SVG 作为原生格式有很多优势!
目前,该项目处于测试阶段,且在项目中有大量熟练的贡献者不断改进。
**这可以让它变成 Figma 最有用的开源替代品,让设计工具突破了大型技术公司。**
你可以自行托管它或使用云应用程序对其进行测试。在其官方网站上注册以学习和试验它。
你还可以查看其 [GitHub 页面](https://github.com/penpot/penpot) 以探索更多信息。
> **[Penpot](https://penpot.app/)**
这也让我想起了 [Akira](https://github.com/akiraux/Akira),它的目标是成为一个用于 UI 和 UX 设计的原生 Linux 应用程序。它仍处于早期开发阶段,但当涉及 Linux 或开源计划时,这种努力总是受到赞赏。
*💬 你如何看待 Penpot 作为 Figma 的开源替代品?*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/penpot-figma-alternative/
作者:[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/09/penpot-opensource-figma-ft.jpg
[2]: https://www.figma.com/
[3]: https://news.itsfoss.com/content/images/2022/09/penpot-screenshot.jpg
[4]: https://penpot.app/
[5]: https://www.producthunt.com/products/penpot?utm_source=badge-featured&utm_medium=badge#penpot
[6]: https://youtu.be/JozESuPcVpg
[7]: https://github.com/penpot/penpot
[8]: https://penpot.app/
[9]: https://github.com/akiraux/Akira

View File

@ -0,0 +1,55 @@
[#]: subject: "AMDs Open Source Vulkan Graphics Drivers Now Enable Ray Tracing"
[#]: via: "https://www.opensourceforu.com/2022/09/amds-open-source-vulkan-graphics-drivers-now-enable-ray-tracing/"
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
[#]: collector: "lkxed"
[#]: translator: "littlebirdnest"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15064-1.html"
AMD 的开源图形驱动程序 Vulkan 现在支持光线追踪
======
![](https://www.opensourceforu.com/wp-content/uploads/2022/09/AMD-Ryzen-Zen-CPUs_Next-Gen-1536x842.jpg)
> RDNA 2 GPU 的 Linux 用户可以使用 AMD 的 AMDVLK GPUOpen 开源 Vulkan 驱动程序。
用于 Radeon RX 6000 GPU 的 AMDVLK GPUOpen 图形驱动程序在过去一周改进了对 64 位光线追踪的支持。这涵盖了支持 RDNA 2 图形的 APU 以及桌面/移动 GPU。所有平台上的所有 AMD Vulkan 驱动程序现在都支持硬件光线追踪,包括 Mesa3D RADV、AMDVLK GPUOpen 和 AMDGPU-PRO。
GPU 光线追踪库GPURT的基础是一个 C++ 接口。根据其用法和依赖关系,公共接口被拆分为各种头文件。用户可以在官方的 GitHub 仓库上了解更多信息,它还包括了 RDNA 2 GPURT 的结构细分。最新的 AMDVLK GPUOpen v-2022.Q3.4 信息如下:
**更新和新功能:**
- 扩展 Navi2x 的 64 位光线追踪功能。
- 将 Vulkan 标头升级到版本 1.3.225
- 游戏性能优化,包括《荣耀战魂》和《奇点灰烬》
**已解决的问题:**
- `dEQP-VK.api.copy_and_blit.*.resolve_image.whole_copy_before_resolving_transfer.*` 新版本 CTS 失败。
- dEQP-VK.pipeline.creation 缓存控件有一个 CTS 警告。
- Ubuntu 22.04 上的 Firefox 损坏
- VulkanInfo 崩溃,管道缓存已停用
- RX 6800 上的 RGP 测试套件故障
新的改进包括 GPU 光线追踪库GPURT它将包括使用 HLSL 之类的着色器在光线追踪中看到的边界体积层次BVH的构造和排序处理。这个库将提供一个标准库来改进图形渲染并引入更多的统一性。DirectX 12 DXR 也将与新库一起使用。
对 GPU 光线追踪GPURT库的描述为“一个静态库源代码交付为支持 DXRDirectX 12和 Vulkan® RT API 的 AMD 驱动程序提供与光线追踪相关的功能。” 该公司的平台抽象库用于构建库PAL
用户可参考最新 AMDVLK GPUOpen v-2022.Q3.4 升级的安装说明。用户在更新任何软件、硬件或驱动程序之前应备份所有相关数据,以免丢失重要文件。
为了让最新的 Linux 驱动程序为 AMD、Intel 和 NVIDIA 技术做好准备,已经投入了大量工作,这些技术都是在今年第一季度推出的。
--------------------------------------------------------------------------------
via: https://www.opensourceforu.com/2022/09/amds-open-source-vulkan-graphics-drivers-now-enable-ray-tracing/
作者:[Laveesh Kocher][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.opensourceforu.com/author/laveesh-kocher/
[b]: https://github.com/lkxed

View File

@ -0,0 +1,88 @@
[#]: subject: "GNOME Files Introduces Most-Requested Feature: New File Menu"
[#]: via: "https://www.debugpoint.com/gnome-files-new-file-document/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: "littlebirdnest"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15057-1.html"
GNOME “文件”引入最受欢迎的功能:“新建文件”菜单
======
> 这是 GNOME “文件”中的“新建文件”功能,它为你提供了一种创建文档和文件的新方法。让我们看一看。
无需在后端进行更多调整。通过“<ruby>文件<rt>Files</rt></ruby>”(又名 Nautilus中的上下文菜单创建新文档/新文件的最令人期待的功能终于到来了。
作为 [谷歌编程之夏 2022](https://debugpointnews.com/gsoc-2022/) 的一部分,(由 Ignacy Kuchciński 开发的)这个新功能最近经过审查并合并到 “文件” 的主分支中。
### 它看起来如何
当你右键单击文件时,上下文菜单有一个新选项“<ruby>新建文件<rt>New File</rt></ruby>”。
![New File Option in Files Context Menu][2]
GNOME “文件”中的“<ruby>新建文件<rt>New File</rt></ruby>”选项启动一个操作窗口,如下图所示。
![GNOME Files New File Action Dialog][3]
当它启动上述对话框时,会在后台发生一些事情。
你可能知道你可以在主目录中创建一个带有模板的 `Template` 文件夹以便轻松访问常用的文档类型。因此GNOME “文件” 会检查你是否有该目录。
如果当前存在一个带有模板的 `Template` 目录,你能通过那些文档类型的列表以创建新文档。
![GNOME Files New File Template Dialog (when some templates present)][4]
如果你没有任何模板很可能GNOME “文件”会扫描你的系统并根据系统中已安装的应用程序显示常见文件类型的列表。
例如文本编辑器、LibreOffice 文档类型(电子表格、演示文稿)等。
这里还发生了一些其他事情。当你为新文档选择文件类型时,系统会选择默认的文件扩展名。这是文件名文本框中的受保护标签。
此外,如果你没有安装任何模板或任何应用程序,则根本不会显示“新建文件”菜单选项。
### 未来路线图
开发人员还提出了未来对该功能的增强,更大程度地扩展其功能。
当没有可用的模板时,对话框将如下所示。它将允许你通过选择应用程序来创建文件,包括空白文件。
此外,你可以直接启动软件来安装一些可以帮助你创建相应文件类型的应用程序。
由于这个功能比较复杂,可能会在以后开发。目前还没有时间表。
### 这在“文件” v43 中可用(通过 GNOME 43
但是在我看来这种变化需要一些额外的设计审查。我觉得它不完整。例如当你有模板时你无法创建标准文档类型文本、LibreOffice 文档)—— 这两个对话框是互斥的。另外,我发现了一些小 BUG。
尽管该功能目前 [已获得批准和合并](https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/914),但由于日程冲突,它无法进入 [GNOME 43候选版本](https://www.debugpoint.com/gnome-43/)。
希望在经过一轮良好的审查和测试后,你可以在明年的 GNOME 44 版本中获得此功能。
### 总结
总的来说,这是一个优雅的功能,我认为如今没有任何其他文件管理器具有这种先进的设计。一旦这个“文件”的“新建文件”功能被完全实现,它将会是其出色功能集的一个很好的补充。
那么,你喜欢这个新设计吗?请在评论框中告诉我。
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/gnome-files-new-file-document/
作者:[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://debugpointnews.com/gsoc-2022/
[2]: https://www.debugpoint.com/wp-content/uploads/2022/09/New-File-Option-in-Files-Context-Menu.jpg
[3]: https://www.debugpoint.com/wp-content/uploads/2022/09/GNOME-Files-New-Document-Action-Dialog.jpg
[4]: https://www.debugpoint.com/wp-content/uploads/2022/09/GNOME-Files-New-Document-Template-Dialog.jpg
[5]: https://www.debugpoint.com/wp-content/uploads/2022/09/Long-term-vision-with-additional-features.jpg
[6]: https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/914
[7]: https://www.debugpoint.com/gnome-43/

View File

@ -0,0 +1,108 @@
[#]: subject: "LibreOffice is Available for $8.99 on Mac App Store: Here's Why!"
[#]: via: "https://news.itsfoss.com/libreoffice-mac-os-store/"
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
[#]: collector: "lkxed"
[#]: translator: "cool-summer-021"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15075-1.html"
为什么 LibreOffice 在 Mac 应用商店卖 8.99 美元?
======
> 如今Mac 应用商店正在售卖 LibreOffice。难道它不是免费的吗我们来了解一下个中缘由。
![LibreOffice is Available for $8.99 on Mac App Store: Here's Why!][1]
LibreOffice 是一个自由、开源、跨平台的办公套件。
所以它一直是 [微软 Office 的最佳免费替代品][2]。
如果事实的确如此, **我现在怎么会在这里讨论 LibreOffice 的购买呢?**
### 文档基金会计划向市场推出这个项目以筹集资金,
如今文档基金会正在努力改进营销策略,鼓励人们支持 LibreOffice 的发展。
当然,发布企业版是他们能做到的最好方式之一。
但是,能否通过提供相似的服务,把这种机会扩展到终端用户呢?
**最方便的办法** 是像 Mac 应用商店那样,通过专有渠道销售 LibreOffice。
最近,文档基金会 [宣布][4] 在 Mac 应用商店销售 LibreOffice他们是这么说的
> 跟以前的情况相比,文档基金会在 Mac 应用商店发布软件的举措是一次变革,这是一种新的市场策略:文档基金会专注于社区版的发布,而属于相关生态系统的公司专注于针对企业用户的、长期提供支持服务以及能够带来价值增值的版本。
很多用户信赖并依靠的是自己平台的官方应用商店。因此,在他们的官方应用商店销售 LibreOffice 能起到方便用户的作用。你可以自动将 LibreOffice 更新为最新版本,而无需每次更新时下载相应的版本。
![libreoffice mac app store][5]
为了享受从 Mac 应用商店下载 LibreOffice 的便利,你需要一次性付费购买。
它在 Mac 应用商店的卖价是 **8.99 美元**
> 你仍然可以在 [LibreOffice 网站][6] 上免费下载 Mac 版 LibreOffice。
#### Mac 应用商店不是已经可以下载了吗?
![mac app store collabora][7]
嗯,是,也不是。
Collabora Office基于 LibreOffice 的企业版)在 Mac 应用商店售价是 **8.99 美元**
它基于 LibreOffice并不完全是 LibreOffice 的社区版本。所以现在,文档基金会在 Mac 应用商店推出了社区版。
他们也在告示中提到:
> “我们感谢 Collabora 公司长期以来在 Mac 应用商店对 LibreOffice 的支持”
>
> -- Italo VignoliLibreOffice 市场营销团队
LCTT 校注:也就是说,文档基金会在 Mac 应用商店推出的 LibreOffice 是无商业支持的社区版,和具有商业支持的、基于企业版定制的 Collabora Office 的售价一样。因此,这种行为可看作是文档基金会的某种自愿募捐方式 —— 如果不愿意捐助,你可以继续下载免费版本。)
#### 这笔费用对 LibreOffice 有何帮助?
截至目前LibreOffice 已成为一个大型开源项目。很多 Linux 发行版中默认自带 LibreOffice这并不奇怪一些教育机构也决定使用 LibreOffice从而取代微软 Office。
当然,它可能在某种意义上并不完美。但是它正在不断取得进步,能满足用户关于文档、表格或演示文稿方面的基本功能。
所以,收取的费用将用于项目的支持工作,可以覆盖项目的维护成本和远期用于支付贡献者和文档基金会工作人员的相关费用。
### 微软应用商店也会推出 LibreOffice 吗?
![][8]
微软应用商店现在并不直接提供 LibreOffice。
在微软应用商店,你可以以 14.99 美元的价格购买 Collabora Office。但是文档基金会还没有发布官方的社区版。
还有 [Allo Office][9],以前被称为 LibreOffice Vanilla。
也许在它登陆 Mac 应用商店之后,他们可能会把它引入微软商店。
💬 *对于在 Mac 应用商店购买 LibreOffice你怎么看*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/libreoffice-mac-os-store/
作者:[Ankush Das][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://news.itsfoss.com/author/ankush/
[b]: https://github.com/lkxed
[1]: https://news.itsfoss.com/content/images/size/w1200/2022/09/libreoffice-mac-app-store.png
[2]: https://itsfoss.com/best-free-open-source-alternatives-microsoft-office/
[3]: https://itsfoss.com/best-free-open-source-alternatives-microsoft-office/
[4]: https://blog.documentfoundation.org/blog/2022/09/19/the-document-foundation-releases-libreoffice-on-apples-mac-app-store/
[5]: https://news.itsfoss.com/content/images/2022/09/libreoffice-mac-1.jpg
[6]: https://www.libreoffice.org/download/download-libreoffice/
[7]: https://news.itsfoss.com/content/images/2022/09/collabora-mac.webp
[8]: https://news.itsfoss.com/content/images/2022/09/collabora-windows.jpg
[9]: https://apps.microsoft.com/store/detail/allooffice/9MWJQ9TX63F9

View File

@ -0,0 +1,77 @@
[#]: subject: "Wow! Rust-based Redox OS Gets an Anonymous Donation of $390,000 in Cryptocurrency"
[#]: via: "https://news.itsfoss.com/redox-os-anonymous-donation/"
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
[#]: collector: "lkxed"
[#]: translator: "littlebirdnest"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15069-1.html"
哇!基于 Rust 的 Redox OS 获得 390,000 美元的加密货币匿名捐赠
======
> Redox OS 刚刚获得了大量匿名捐款。它将用于什么?令人兴奋的事情!
![Wow! Rust-based Redox OS Gets an Anonymous Donation of $390,000 in Cryptocurrency][1]
[Redox OS][2] 是一个用 Rust 编写的类 Unix 操作系统。
该项目由 Jeremy Soller 于 2015 年发起,他被公认为 [System76][3] 的首席工程师及[Pop!_OS][4] 的维护者。
我们还介绍了它今年早些时候的最后一个版本:[基于 Rust 的 Redox OS 0.7.0 推出增强硬件支持](https://news.itsfoss.com/redox-os-0-7-0-release/)。
虽然这些更新包括的改进可以让它在更多硬件上启动,但它可能不是大多数用户的日常驱动程序的替代品。
然而,这是一个令人兴奋的项目,值得关注。
**而在收到匿名捐款后,事情变得更加精彩**。
🤯 刚刚有人向 Redux OS 的捐赠地址发送了 **299 个以太坊**,相当于近 **39 万美元**(加密货币市场涨跌不定)。
嗯,那是一大笔钱!
![A Video from YouTube][7]
根据 Jeremy 的最新推文,他还没有立即决定如何处理它。
> 一位匿名捐赠者刚刚向 @redox_os 捐赠地址发送了 299 以太(相当于 393,000 美元) 。这个地址和交易都是公开的。我不知道如何处理这种规模的捐赠但在进行一些研究后很快就会有更多细节。https://t.co/f3yBDghWSh
>
但是,对推文的回复给了我们一些很好的建议。
一些人建议将其捐赠给负责 Rust 语言的人,还有一些人建议用这笔钱来赞助学习 Rust 和 OS 开发。
他肯定可以使用它来扩展 Redox OS 或其他任何需要该资源的东西。
归根结底,对于想要更多基于 Rust 的东西的人来说,无论 Jeremy 选择做什么,这都可能间接成为一件好事。
或者,也许买一辆带有 Redox OS 标志的布加迪?好吧,一些推特用户对这一事件有过搞笑的回复!😂
> 这不是开源项目第一次收到大量的加密货币捐赠。Apache 软件基金会在 2018 年收到了价值 100 万美元的比特币。
当 Jeremy 决定分享有关捐赠的更多细节以及他打算如何处理时,我将更新这篇文章。
💬 *你如何看待匿名捐赠给 Redox OS如果你得到那笔捐款你会怎么做在下面的评论框中让我们知道你的想法。*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/redox-os-anonymous-donation/
作者:[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/09/donor-sends-ether-to-redux-os.png
[2]: https://www.redox-os.org/
[3]: https://system76.com/
[4]: https://pop.system76.com/
[5]: https://news.itsfoss.com/redox-os-0-7-0-release/
[7]: https://tenor.com/embed/17544086
[8]: https://twitter.com/redox_os?ref_src=twsrc%5Etfw
[9]: https://t.co/f3yBDghWSh
[13]: https://news.apache.org/foundation/entry/the-apache-software-foundation-receives

View File

@ -0,0 +1,213 @@
[#]: subject: "GNOME 43: Top New Features and Release Wiki"
[#]: via: "https://www.debugpoint.com/gnome-43/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: "wxy"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15071-1.html"
GNOME 43 发布,标志性的版本
======
> 对 GNOME 43 桌面环境的各种功能的介绍,以及它给你的日常需求和工作流程带来的变化和影响。
![通过 GNOME OS 运行的 GNOME 43][1]
这篇文章总结了所有关于 GNOME 43 的必要信息包括功能、发布时间表等等。GNOME 43 版本可能是自 GNOME 40 以来在功能和对你的工作流程影响最大的一个版本。
主要的变化包括更新的 Shell 和更快的性能,内含了 GTK4 和 libadwaita 的转换,翻新的文件应用和 Web 应用的奇妙变化。
所有这些必要的变化都是早该进行的,并将改变你在 GNOME 桌面上的传统工作流程,使你的工作效率更高。
### 时间表
GNOME 43 于 2022 年 9 月 21 日 [正式发布][2]。
* GNOME 43 测试版2022 年 8 月 31 日
* GNOME 43 候选版2022 年 9 月 4 日
* GNOME 43 最终版2022 年 9 月 21 日
### GNOME 43 的功能
#### 1、核心 Shell 的变化
* 终于,得益于 Wayland 最近的工作GNOME 有了对高分辨率的滚轮支持。所以,如果你有一个高分辨率的显示器,用一个高级的鼠标(比如罗技 MX Master 3来滚动应该成为了一种享受。
* 除了上述情况GNOME 43 中的<ruby>直接扫描输出<rt>direct scanout</rt></ruby> 支持将有助于多显示器环境。
* 服务器端的窗口装饰得到了基本的颜色支持。
* Shell 还实现了一个功能,当焦点改变时,通知会消失,并不等待超时。
* 和每个版本一样,你在整个桌面上会体验到更好的动画性能,改进了网格和概览导航以及关键的更新,这给你带来了顺滑的体验。
这些就是核心变化的关键总结。现在,让我们来谈谈快速设置。
#### 2、新的快速设置菜单
系统托盘中的快速设置完全改变了。快速设置项目和菜单现在采用药丸状的切换按钮,用鲜艳的颜色来显示系统中正在发生的事情。该菜单也是动态的,并支持层叠的菜单项目。此外,你可以在快速设置中选择音频设备。
这里有一个快速演示,更多的屏幕截图和文章,请阅读:[GNOME 43 快速设置][3]。
![GNOME 43 的快速设置演示][4]
#### 3. 文件应用
GNOME <ruby>文件应用<rt>Files</rt></ruby>在 GNOME 43 版本中增加了很多功能。这个应用程序的改进清单非常巨大。文件管理器是任何桌面环境中使用最多的应用程序。因此,文件应用中的变化对整个用户群的影响最大。
这是 GTK4 版的文件应用第一次亮相(它在 GNOME 42 发布时还没有准备好),它将会彻底改变你的工作流程。
我将尝试用一个简短的列表来解释其中的大部分内容。否则,这将是一篇冗长的文章。我将单独推送另一篇关于文件应用的功能的文章。
##### 自适应侧边栏
可以让你访问导航、收藏夹、网络驱动器等的文件应用侧边栏是响应式的。当文件应用窗口的大小达到一定程度时,它会 [自动隐藏][5] 自己。如果你工作时有很多打开的窗口,而且显示器较小,那么这是一个熟悉而方便的功能。
另一个令人兴奋的功能是,当侧边栏完全隐藏时,在左上方会出现一个图标,点击可使其可见。
![自动隐藏侧边栏的文件应用 43][6]
##### 徽章
很久以前GNOME 中就有了徽章,后来它们消失了。因此,徽章在 GNOME 43 中以文件和目录旁边的小图标的形象卷土重来。这些图标代表着类型,如符号链接、只读等。此外,这些图标会根据你的主题改变它们的颜色,而且一个文件也可以有多个图标。
![GNOME 43 中的徽章][7]
##### 橡皮筋选择
接下来是期待已久的橡皮筋选择功能,它 [终于到来了][8]。现在你可以通过拖动选择机制来选择文件和文件夹。这是用户要求最多的功能之一。
![橡皮筋选择功能][9]
##### GtkColumnView 代替了 GtkTreeView
当你把鼠标放在列视图中的项目上时,你会看到一个焦点行,这是 GNOME 43 文件应用的另一个关键功能。但是它在 [树形视图不能显示][10],可能计划在下一次迭代中实现。
![GtkColumnView 启用了焦点行][11]
##### 重新设计的属性窗口,具有交互式的权限和可执行文件检测功能
通过采用 GTK4属性窗口 [完全改变了][12]。该窗口现在更加简洁,设计合理,只在需要的时候显示必要的项目。
此外,属性对话框可以确定文件类型并提供合适的选项。例如,如果你查看一个 Shell 脚本或文本文件的属性,你会得到一个选项,使其可执行。相反,图像文件的属性不会给你一个可执行的选项。
![智能属性窗口][13]
##### 标签式视图的改进
文件的标签式视图得到了一些 [额外的更新][14]。最值得注意的是,当拖动文件到标签时,可以适当地聚焦,在当前聚焦的标签之后创建标签,等等。
##### 重新设计的右键菜单
对文件或文件夹的主要右键菜单进行了分组。首先,打开选项被归入一个子菜单中。其次,复制/粘贴/剪切选项被合并到一个组中。最后,垃圾箱、重命名和压缩选项被归为一组。
此外,“<ruby>在终端打开<rt>Open in terminal</rt></ruby>”的选项对所有文件和文件夹都可用。然而仍然缺失一个“创建新文件”的选项这是我在这个版本中所期望的LCTT 译者:预计 GNOME 44 文件应用将出现此功能)
![各种上下文菜单][15]
##### 其他变化
文件应用中其他醒目的变化是垃圾箱图标,以及其他位置(网络驱动器、磁盘)在右键菜单中有了属性菜单。
最后,文件应用的偏好窗口被重新设计,以显示更多的基本项目。重新设计后,普通用户可以很容易地找到适当的文件设置。
#### 4、Web 应用
让我们抽出一些时间来谈谈我们心爱的 Epiphany又称 GNOME Web是 GNOME 桌面上基于 WebKit 的原生网页浏览器。
这些更新早就应该开始了,并且终于从这个版本开始出现了。
首先GNOME Web 现在支持 WebExtension API。它可以让你在网络中下载和安装火狐和谷歌浏览器的扩展。以下是做法
* 从 Firefox 附加组件或谷歌 Chrome 扩展页面下载任何扩展文件xpi 或 crx 文件)。
* 点击汉堡菜单,选择<ruby>扩展程序<rt>Extensions</rt></ruby>
* 最后,点击<ruby>添加<rt>Add</rt></ruby>来安装它们。
WebExtension 的支持是使 Web 应用尽快可用的关键步骤。
其次,可以使用火狐浏览器同步选项,让你通过火狐浏览器账户登录 Web 应用,同步书签和其他浏览器项目。
![使用火狐账户登录 Web 应用][16]
Web 应用中其他值得注意的变化包括对 “查看源代码” 的支持、GTK4 的移植工作和一个更新的 PDF 库PDF.js 2.13.216)。
Web 应用中仍然缺少的一个关键组件是 [通过 GStreamer 支持WebRTC][17]。一旦这个功能出现,它将是一个适合日常使用的浏览器。
希望有一天,我们都有一个体面的非火狐、非 Chromium 的替代浏览器。
#### 5、设置应用
<ruby>设置应用<rt>Settings</rt></ruby> 的窗口中,大部分改进和视觉微调在这个版本中出现。重要的变化包括警报中的 “狗叫声” 在经过长时间的 [有趣的对话][18] 后现在已经消失。
此外,引入了一个新的设备安全面板,日期和时间面板中的时区地图也修改了。
设置窗口的侧边栏也是响应式的,并为你提供自动隐藏功能,如上图所示的文件应用一样。
#### 6、软件应用
GNOME <ruby>软件应用<rt>Software</rt></ruby> 有两个关键的变化。这些变化使你可以在一个页面上查看应用程序的更多信息。
首先,一个新“该作者的其他应用程序”部分,为你提供了一个由当前应用程序的作者编写的应用程序列表。这有助于发现并告诉你应用作者有多受欢迎。
其次GNOME 43 软件应用现在在一个单独的窗口中为你提供了 Flatpak 应用程序所需的详细权限列表。因此,你可以在安装它们之前确认该应用程序所需权限。
另一个关键的视觉变化是在应用程序概览主页面上新增了 “适用于 Fedora/任何发行版”部分,这需要配置。
![软件应用中的开发者的其他应用程序部分][19]
#### 7、气候变化墙纸
我不确定这个功能是否有了。因为我找不到它,但我听说过它。所以,我想我应该在这里提到它。
这个功能是GNOME 43 带来了一张背景墙纸,显示了全球温度在几十年间是如何从 [海洋条纹][20] 上升的。该墙纸包含了垂直的彩色编码条,表示低和高的温度。我认为这是一个很好的提示,也是提高人们认识的努力。这是它在 GitLab 中的 [提交][21]。
此外,还有几张新的 [白天和黑夜][22] 的新鲜壁纸。
这就是我可以找到并总结的所有基本变化。除了这些GNOME 43 还有大量的错误修复、性能改进和代码清理。
Fedora 37 将在发布时采用 GNOME 43它的某些部分应该在 10 月发布的 Ubuntu 22.10 中出现。
### 总结
GNOME 43 是一个标志性的版本因为它改变了几个基本的设计影响了数百万用户的工作流程。快速设置的转变是非常棒的而且早该如此了。此外文件应用、Web 应用和设置应用的必要改变将提高你的工作效率。
此外,新功能的到来,同时保持了设计准则和美学的理念。一个好的用户界面需要一个深思熟虑的过程,而开发者在这个版本中做了完美的工作。
所以,差不多就是这样了。这就是 GNOME 43 的内容。如果你打算得到这个更新并想从 KDE 跳到 GNOME请告诉我
🗨️请在下面的评论区让我知道你最喜欢的功能。
举杯~
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/gnome-43/
作者:[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/08/GNOME-43-Running-via-GNOME-OS.jpg
[2]: https://debugpointnews.com/gnome-43-release/
[3]: https://www.debugpoint.com/gnome-43-quick-settings/
[4]: https://www.debugpoint.com/?attachment_id=10682
[5]: https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/877
[6]: https://www.debugpoint.com/?attachment_id=10684
[7]: https://www.debugpoint.com/?attachment_id=10685
[8]: https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/817
[9]: https://www.debugpoint.com/wp-content/uploads/2022/08/Rubberband-Selection-Feature.gif
[10]: https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/817
[11]: https://www.debugpoint.com/wp-content/uploads/2022/08/GtkColumnView-enables-row-focus.gif
[12]: https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/745
[13]: https://www.debugpoint.com/wp-content/uploads/2022/08/Intelligent-properties-window.jpg
[14]: https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/595
[15]: https://www.debugpoint.com/?attachment_id=10689
[16]: https://www.debugpoint.com/wp-content/uploads/2022/08/Login-to-Web-using-Firefox-account.jpg
[17]: https://twitter.com/_philn_/status/1490391956970684422
[18]: https://discourse.gnome.org/t/dog-barking-error-message-sound/9529/2
[19]: https://www.debugpoint.com/wp-content/uploads/2022/08/Other-APPS-by-developer-section-in-Software.jpg
[20]: https://showyourstripes.info/s/globe/
[21]: https://gitlab.gnome.org/GNOME/gnome-backgrounds/-/commit/a142d5c88702112fae3b64a6d90d10488150d8c1
[22]: https://www.debugpoint.com/custom-light-dark-wallpaper-gnome/

View File

@ -0,0 +1,100 @@
[#]: subject: "Audacity 3.2 Released With VST3 Plugins and Apple Silicon Support"
[#]: via: "https://news.itsfoss.com/audacity-3-2-release/"
[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/"
[#]: collector: "lkxed"
[#]: translator: "littlebirdnest"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15079-1.html"
Audacity 3.2 发布,增加了 VST3 插件和 Apple 芯片支持
======
> Audacity 的新更新带来了一些重要功能,例如 VST3 插件支持和新效果按钮。
![Audacity 3.2 Released With VST3 Plugins and Apple Silicon Support][1]
Audacity 3.2 来了,这是这个最流行的自由开源音频编辑和录制工具之一的小版本更新。
[此版本是在之前的主要版本 Audacity 3.0][2] 发布一年多之后发布的。
[即使在去年引起争议][3] 之后,它仍然是目前最好的 Linux 音频编辑器之一。
此版本有许多新增功能,例如对**VST3 插件的支持、对 Apple 芯片、FFMPEG 5.0 的支持**等等。
让我们快速了解一下 Audacity 的新功能。
### Audacity 3.2:有什么新功能?
这是一个小版本更新,带来了重大的变化和补充。
一些主要亮点包括:
- 支持 VST3 插件。
- Apple 芯片支持。
- FFMPEG 5.0。
- VST3、LV2、音频单元和 LADSPA 的实时功能。
- 用于实时效果的专用按钮。
- 删除对 Linux 系统的 JACK 要求。
- 对用户界面的各种调整。
### 新的效果按钮
![audacity 3.2 effects button][6]
Audacity 的界面中添加了一个专用的实时效果按钮,使用户可以轻松地即时下载和应用效果。
[你可以访问官方维基][7] 了解有关此功能的更多信息。
### VST3 插件支持
Audacity 3.2 还引入了对 VST3 插件的支持,这使用户能够利用 VST3 的高级音频处理功能,包括高效利用 CPU、更好地处理 MIDI、支持 MIDI I/O 等等。
### 将音频上传到云端
![audacity 3.2 share audio button][8]
在 Audacity 中加入的另一个令人兴奋的功能是,可以选择直接从应用程序中分享音频到 Audacity 的新云音频平台 [audio.com][9]。
### FFMPEG 5.0
Audacity 现在也支持了 FFMPEG 5.0;这确保了用户可以利用最新的开源音频/视频库套件。
### 苹果芯片支持
此版本还为基于 arm64 架构的 Apple 芯片带来了 macOS 支持。
### 下载 Audacity 3.2
[你可以通过其官方网站][10]、[GitHub 发布区][11]、[Flathub][12] 或 [Snap][13] 下载最新的 Audacity 版本。
> **[Audacity 3.2 下载][10]**
💬 *你会尝试 Audacity 3.2 吗我认为对VST3插件的支持应该是一个改变游戏规则的因素你怎么看在下面的评论部分分享它*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/audacity-3-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/09/audacity-3-2-release.jpg
[2]: https://news.itsfoss.com/audacity-3-0-release/
[3]: https://news.itsfoss.com/audacity-fiasco-fork/
[4]: https://itsfoss.com/best-audio-editors-linux/
[6]: https://news.itsfoss.com/content/images/2022/09/Audacity_3.2_effects_button.gif
[7]: https://support.audacityteam.org/audio-editing/using-realtime-effects
[8]: https://news.itsfoss.com/content/images/2022/09/Audacity_3.2_share_audio_button.png
[9]: https://audio.com/
[10]: https://www.audacityteam.org/download/
[11]: https://github.com/audacity/audacity/releases
[12]: https://flathub.org/apps/details/org.audacityteam.Audacity
[13]: https://snapcraft.io/audacity
[14]: https://www.audacityteam.org/download/

View File

@ -0,0 +1,39 @@
[#]: subject: "Lawmakers Proposes A New Bill To Protect Open Source Software"
[#]: via: "https://www.opensourceforu.com/2022/09/lawmakers-proposes-a-new-bill-to-protect-open-source-software/"
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
[#]: collector: "lkxed"
[#]: translator: "littlebirdnest"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15072-1.html"
美国立法者提出一项保护开源软件的新法案
======
![](https://www.opensourceforu.com/wp-content/uploads/2022/09/law-4-1536x1025.jpeg)
> 美国的《保护开源软件法案》将责成管理和预算办公室提供有关如何安全使用开源软件的说明。
美国立法者周四提出了一项要求美国网络安全和基础设施安全局CISA需创建风险框架以提高开源软件安全性的措施。为了降低依赖开源代码的系统风险各机构将利用该框架CISA 将决定关键基础设施所有者和运营商是否也可以自愿使用它。
大多数系统依赖于免费提供的并由社区维护的开源软件来构建网站和应用程序;最大的用户之一是美国联邦政府。该立法由美国国土安全委员会主席兼高级成员、俄亥俄州共和党参议员 Sens. Rob Portman、R-Ohio 和 Gary Peters D-Mich 在一次听证会后提出,以回应在开源代码中发现的影响美国联邦系统和全球数百万其他系统的严重、广泛的 Log4j 漏洞。
“这一事件对联邦系统和关键基础设施公司——包括银行、医院和公用事业公司——构成了严重威胁,美国人每天都依赖这些公司提供基本服务,”彼得斯在公告中说。“这项明智的两党立法将有助于保护开源软件,并进一步加强我们的网络安全防御,防止网络犯罪分子和外国对手对全国网络发起的不断的攻击。”
这项《保护开源软件法》还要求美国管理和预算办公室为各机构发布关于保护开源软件的指南,在 CISA 网络安全咨询委员会中设立一个软件安全小组委员会,并要求 CISA 聘请开源软件专家协助处理网络事件。
在此之前Peters 和 Portman 的提议已获得美国参议院一致通过并签署成为法律,以加强州和地方政府的网络防御,并迫使关键基础设施的所有者和运营商向 CISA 报告重大网络攻击和勒索软件付款。
--------------------------------------------------------------------------------
via: https://www.opensourceforu.com/2022/09/lawmakers-proposes-a-new-bill-to-protect-open-source-software/
作者:[Laveesh Kocher][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.opensourceforu.com/author/laveesh-kocher/
[b]: https://github.com/lkxed

View File

@ -0,0 +1,114 @@
[#]: subject: "systemd is Now Available in WSL"
[#]: via: "https://news.itsfoss.com/systemd-wsl/"
[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/"
[#]: collector: "lkxed"
[#]: translator: "vvvbbbcz"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15068-1.html"
systemd 已可用于 WSL
======
> 微软的 WSL 现已支持 systemd为用户提供了更好的体验。你可阅读此文了解更多。
![systemd 已可用于 WSL][1]
WSL<ruby>Windows 的 Linux 子系统<rt>Windows Subsystem for Linux</rt></ruby>)终于拥有了对 systemd 的支持,这是在 systemd 的创建者加入微软的几个月后实现的。
> **[更多 Linux 开发者们加入微软systemd 的创建者也加入这一行列][2]**
而这已通过微软和 Cannonical 的合作成为可能。
> **如果你好奇 systemd 是什么**
>
> systemd 是一套 Linux 系统的基本组成模块。它提供了一个系统和服务管理器,作为 PID 1 运行,并启动系统的其他部分。
>
> 来自systemd.io
它作为一个初始化系统,启动并维持用户空间其他服务的正常运行。
让我们看看它是如何被引入 WSL 的。
### systemd 增强 WSL 的体验
![WSL: 与 Cannonical 合作以支持 systemd][4]
在 WSL 中引入 systemd主要是为改善 Windows 机器上的 Linux 工作流程。
像 Debian、Ubuntu、Fedora 等,都是默认运行 systemd 的。因此,这项整合将使这些发行版的用户更方便地在 WSL 上做更多工作。
很多关键的 Linux 程序也是靠 systemd 实现的。例如 snap、microk8s 和 LXD 都依赖它。
即使我们有 [不含 systemd 的发行版][5] 可用,它们也并不适合所有人。因此,在 WSL 上添加对 systemd 的支持是很有意义的。
systemd 的存在也使得在 Windows 中使用更多工具来测试和运行成为可能,从而带来更好的 WSL 体验。
### 它是如何实现的
WSL 背后的团队必须修改其架构,它们让 WSL 的初始化进程在 Linux 发行版中以 systemd 的一个子进程启动。
正如其 [官方公告][7] 所述,这样做使得 WSL 初始化程序能够为 Windows 和 Linux 子系统之间的通讯提供必要的基础。
它们还做了额外的修改,通过防止 systemd 保持 WSL 实例的活动以确保系统的干净关机。
你亦可访问他们的 [官方文档][8] 以了解更多。
### 在 WSL 上使用 systemd
> 现有的 WSL 用户必须在他们的系统上手动启用 systemd以防止由于 systemd 的引入而导致的启动问题。
首先,你必须确保你的系统运行的是 **0.67.6** 或更高版本的 WSL。
你可以通过以下命令检查你的 WSL 版本。
```
wsl --version
```
如果你正在运行旧版本,你可以通过 <ruby>微软应用商店<rt>Microsoft Store</rt></ruby> 或者以下命令更新它。
```
wsl --update
```
此外,如果你不是 <ruby>Windows 预览体验成员<rt>Windows Insider</rt></ruby>,你可以到 [WSL 发行页面][9] 下载它来体验。
为了让 systemd 在你的系统上运行,你需要修改 [wsl.conf][10] 这个文件以确保 systemd 在启动时运行。
`wsl.conf` 添加以下几行以使 WSL 在启动时运行 systemd
```
[boot]
systemd=true
```
最后,重启你的 WSL 实例以见证更改。
随着对 systemd 的支持,微软在 WSL 的发展又前进了一大步,这将使得 WSL 吸引更多用户。
*💬 是否对 WSL 支持 systemd 感到兴奋?或是你更喜欢无 systemd 的发行版?*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/systemd-wsl/
作者:[Sourav Rudra][a]
选题:[lkxed][b]
译者:[vvvbbbcz](https://github.com/vvvbbbcz)
校对:[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/09/systemd-now-available-on-wsl.png
[2]: https://news.itsfoss.com/systemd-creator-microsoft/
[3]: https://news.itsfoss.com/systemd-creator-microsoft/
[4]: https://youtu.be/Ja3qikzd-as
[5]: https://itsfoss.com/systemd-free-distros/
[6]: https://itsfoss.com/systemd-free-distros/
[7]: https://devblogs.microsoft.com/commandline/systemd-support-is-now-available-in-wsl/
[8]: https://learn.microsoft.com/en-in/windows/wsl/
[9]: https://github.com/microsoft/WSL/releases
[10]: https://learn.microsoft.com/en-in/windows/wsl/wsl-config#wslconf

View File

@ -0,0 +1,102 @@
[#]: subject: "UbuntuDDE Remix 22.04 LTS Released!"
[#]: via: "https://news.itsfoss.com/ubuntudde-remix-22-04-released/"
[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/"
[#]: collector: "lkxed"
[#]: translator: "littlebirdnest"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15076-1.html"
UbuntuDDE Remix 22.04 LTS 发布!
======
> UbuntuDDE 22.04 LTS 发布,带有 Linux 内核 5.15、深度应用商店及一些升级。
![UbuntuDDE Remix 22.04 LTS Released!][1]
UbuntuDDE Remix 是一个在 Ubuntu 之上集成深度桌面环境DDE的发行版。不想尝试深度发行版但喜欢其用户界面的用户可以尝试一下。
它以 [Ubuntu 22.04 LTS](https://news.itsfoss.com/ubuntu-22-04-release/) 为基础,这是一次主要版本升级。
让我们看看他们能提供什么。
### UbuntuDDE Remix 22.04 的新内容
他们通过这个发行版为 Ubuntu 添加了许多新东西,例如 “全局搜索栏”、基于 GTK 的应用程序的升级版本、新壁纸、深度应用程序商店等等。
让我们看看 UbuntuDDE Remix 22.04 带来的一些关键变化。
### DDE 全局搜索
![ubuntudde remix 22.04 grand search][4]
他们称之为 “DDE 全局搜索”,这是一个快速应用启动器。
这使用户能够快速搜索任何内容,无论是应用程序、文件、文件夹,甚至是简单的网络搜索。它由键盘快捷键(`Shift + Space`)激活。
### Linux 内核 5.15
该发行版还具有 Linux 内核 5.15,它为各种功能打开了大门,例如对英特尔 Alder Lake CPU 的增强支持、对 NTFS3 驱动程序的改进、改进的苹果 M1 支持等等。
我们之前介绍了此 Linux 内核版本的亮点,你可以 [查看它][5] 以获取更多信息:
### 重新设计的新安装程序
![ubuntudde remix 22.04 installer][7]
UbuntuDDE Remix 上的安装程序似乎从 [Qt 安装程序框架][8] 的书中吸取了一些经验,在 Calamares 安装程序中提供了基于 Qt 的样式,并有一个非常熟悉的布局,可以毫不费力地安装发行版的所有常规选项。
### 新壁纸
![ubuntudde remix 22.04 new wallpapers][9]
该版本还包括许多新壁纸供你使用。
### 🛠️ 其他变化
你可以期待它附带的明显的深度应用程序和好东西。一些值得一提的包括:
- 预装深度应用商店
- LibreOffice 7.3.6.2
- 通过 OTA 更新定期进行软件更新
- 包含升级的基于 DTK 的应用程序如深度音乐、深度终端、Boot Maker、系统监视器等
### 下载 UbuntuDDE 混音 22.04
你可以前往官方 [下载页面下载][10] UbuntuDDE Remix 22.04 的 ISO 文件。
> **[UbuntuDDE Remix 22.04][10]**
如果你正在寻找一个现场 USB 创建工具来安装 UbuntuDDE Remix请阅读本指南以轻松创建一个
> **[在 Linux 上使用 Rufus这是一些最好的现场 USB 创建工具][12]**
请注意,它不是 Ubuntu 的官方版本(因此是 “Remix”但可以马上尝试深度桌面看起来很令人兴奋。
*💬 你怎么看?你想在 Ubuntu 上体验深度桌面吗?*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/ubuntudde-remix-22-04-released/
作者:[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/09/ubunturemixdde-22-04-lts.png
[2]: https://news.itsfoss.com/ubuntu-22-04-release/
[3]: https://news.itsfoss.com/content/images/2022/09/UbuntuDDE_Remix_22.04_Desktop.png
[4]: https://news.itsfoss.com/content/images/2022/09/UbuntuDDE_Remix_22.04_Grand-Search.png
[5]: https://news.itsfoss.com/linux-kernel-5-15-release/
[7]: https://news.itsfoss.com/content/images/2022/09/UbuntuDDE_Remix_22.04_Installer.png
[8]: https://doc.qt.io/qtinstallerframework/ifw-overview.html
[9]: https://news.itsfoss.com/content/images/2022/09/UbuntuDDE_Remix_22.04_New_Wallpapers.png
[10]: https://ubuntudde.com/download/
[11]: https://bit.ly/ubuntudde-22-04-fosshost
[12]: https://itsfoss.com/live-usb-creator-linux/
[14]: https://www.humblebundle.com/books/linux-no-starch-press-books?partner=itsfoss

View File

@ -1,94 +0,0 @@
[#]: subject: "This Flutter-based Unofficial Software Center Might Replace Ubuntu's Official App"
[#]: via: "https://news.itsfoss.com/unofficial-flutter-ubuntu-software/"
[#]: author: "Sagar Sharma https://news.itsfoss.com/author/sagar/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
This Flutter-based Unofficial Software Center Might Replace Ubuntu's Official App
======
Is Canonical planning to replace the Ubuntu software center with a flutter-based app? Maybe, or maybe not.
![This Flutter-based Unofficial Software Center Might Replace Ubuntu's Official App][1]
Ubuntu is often considered [one of the best distros for beginners][2], but the default software center (GNOME Software Center) needs more polishing to make it a pleasing experience.
Why? Well, it's slow and heavy on resources, so most users do not bother using it or just have a bad time with it.
Yes, it may have improved over the years, but it is still far from a good experience.
And it looks like contributors from Canonical, and others have teamed up together to work on with a lightweight, flutter-based alternative for the Ubuntu software center!
Hold on, it is **not an official replacement**. But, I wonder if it is meant to replace Ubuntu Software Center soon? 🤔
### 🆕 Ubuntu Software Made With Flutter
![ubuntu software built with flutter][3]
This implementation of Ubuntu software using Flutter aims to be lightweight, adaptive, and fast, providing a better user experience than the traditional one.
But the prime factor must be usability, right? Because in the end, you're just going to install the software. And, you want to do it quickly without any hassle.
When I tried it on my system, I noticed that there is a separate section for Snaps and Deb packages under "**My apps**":
![separate section for deb and snap packages in ubuntu software][4]
This should be convenient for dealing with different packages within a single app. After all, this is what I always wanted!
A unified experience to easily install/manage applications, too much to ask? 🤷
But what about the app info and installation page? Well, it has been redesigned for good with subtle animations to enhance the experience.
![app info section in unofficial ubuntu software][5]
And the adaptive layout works as a cherry on the cake. This is somewhat similar to what elementary OS 7 has in store for us:
[elementary OS 7 Gears Up to Add Responsive Apps and Port to GTK 4][6]
So, it looks like a thoughtful implementation for the future, right?
![adaptive layout in unofficial ubuntu software center][8]
### Is It Going to Replace Ubuntu Software?
While the project contributors mark it as an unofficial alternative to Ubuntu Software, I think it is more of an experiment gearing up as a replacement.
Considering [J-P Nurmi][9], *Senior Engineer @ Canonical* responsible for Flutter on Ubuntu is involved, this is going to be something exciting.
The only thing we can now do here is "predict". But, it looks like there are more chances of this being official, as things get better with the development.
**Want to try the flutter-based implementation?**
You can head to its [GitHub page][10] and follow the build instructions to get it running. Note that it is under heavy development as of now.
[Download Ubuntu Software][11]
It works pretty well for something that is in active development.
*💬 And I hope this replaces by the current software center. What do you think about that? Let me know your thoughts in the comments below!*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/unofficial-flutter-ubuntu-software/
作者:[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://news.itsfoss.com/author/sagar/
[b]: https://github.com/lkxed
[1]: https://news.itsfoss.com/content/images/size/w1200/2022/09/ubuntu-unofficial-flutter-store.jpg
[2]: https://itsfoss.com/best-linux-beginners/
[3]: https://news.itsfoss.com/content/images/2022/09/unofficial-ubuntu-software-1.png
[4]: https://news.itsfoss.com/content/images/2022/09/snap-and-deb-section-1.png
[5]: https://news.itsfoss.com/content/images/2022/09/kdenline-in-ubuntu-software.png
[6]: https://news.itsfoss.com/elementary-os-7-dev-updates/
[8]: https://news.itsfoss.com/content/images/2022/09/responsive-design-of-ubuntu-software.png
[9]: https://twitter.com/jpnurmi
[10]: https://github.com/ubuntu-flutter-community/software
[11]: https://github.com/ubuntu-flutter-community/software

View File

@ -1,86 +0,0 @@
[#]: subject: "Penpot is a Solid Open-Source Figma Alternative to Look Out for!"
[#]: via: "https://news.itsfoss.com/penpot-figma-alternative/"
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
[#]: collector: "lkxed"
[#]: translator: "zjsoftceo"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Penpot is a Solid Open-Source Figma Alternative to Look Out for!
======
Penpot is a free and open-source solution as an alternative to Figma and similar design tools. What do you think?
![Penpot is a Solid Open-Source Figma Alternative to Look Out for!][1]
Adobe is acquiring the popular design tool [Figma][2] for a whopping **$20 billion**.
As usual, it is the big tech eliminating the competition by acquiring businesses. So, not entirely a piece of exciting news.
But, **what's exciting** is we came across a free and open-source design tool that gets its inspiration from Figma and does a few things better!
### Penpot: Free & Open-Source Design Tool in Development
![Penpot UI][3]
[Penpot][4] is an open-source project in active development. It is in its beta phase following its launch on [ProductHunt][5] nearly two years ago.
**Here's what makes Penpot interesting:**
* Free and open-source (of course).
* Option to Self-host.
* Cross-platform.
* Using SVG as the native format.
* Web-based.
* Featuring industry-standard features (inspired by Figma).
You can watch its official video to know the basics of it:
![Penpot for Beginners][6]
The major highlight of Penpot is the use of SVG as its native format. With SVG files, you get compatibility with many vector graphics editing tools.
So you do not get locked down with a proprietary file format that can be accessed using a particular application.
Penpot gives you the absolute best of open standards.
The **CEO of Penpot,***Pablo Ruiz-Múzquiz*, mentions more about it:
So, using SVG as the native format has a lot of advantages!
At the moment, the project is in its beta stage and constantly improving with plenty of skilled contributors in the project.
**This can turn out to be the most useful open-source alternative to Figma, breaking out of big tech for design tools.**
You can self-host it or use the cloud app to test it out. Sign up at its official website to learn and experiment with it.
You can also check out its [GitHub page][7] to explore more.
[Penpot][8]
This also reminds me of [Akira][9], which aimed to be a native Linux app for UI and UX design. It is still in its early development stage, but such efforts are always appreciated when it involves Linux or the open-source initiative.
*💬 What do you think about Penpot as an open-source alternative to Figma?*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/penpot-figma-alternative/
作者:[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/w1200/2022/09/penpot-opensource-figma-ft.jpg
[2]: https://www.figma.com/
[3]: https://news.itsfoss.com/content/images/2022/09/penpot-screenshot.jpg
[4]: https://penpot.app/
[5]: https://www.producthunt.com/products/penpot?utm_source=badge-featured&utm_medium=badge#penpot
[6]: https://youtu.be/JozESuPcVpg
[7]: https://github.com/penpot/penpot
[8]: https://penpot.app/
[9]: https://github.com/akiraux/Akira

View File

@ -0,0 +1,71 @@
[#]: subject: "Loongson is Getting Ready for LoongArch Linux Laptops"
[#]: via: "https://news.itsfoss.com/loongson-loongarch-linux-laptops/"
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Loongson is Getting Ready for LoongArch Linux Laptops
======
The Chinese manufacturer is working on a Linux laptop series based on LoongArch processors.
![Loongson is Getting Ready for LoongArch Linux Laptops][1]
Don't confuse it with Arch Linux :)
**LoongArch is a CPU architecture by Loongson Technology.**
Recently, Loongson added the initial support for LoongArch CPU architecture in [Linux Kernel 5.19][2].
If you are curious, **LoongArch has similar attributes to RISC-V**. You can also call it a new RISC ISA (Instruction Set Architecture).
Want more technical details? The Linux Kernel's [documentation][3] is your friend.
While it is not popular, a new CPU architecture support is always welcome and opens up various opportunities with new hardware.
### Chinese Manufacturer Gearing Up for Linux Laptops
It seems like Loongson Technology, the computer hardware manufacturer responsible for the LoongArch CPU architecture, is preparing new Linux laptops featuring the same.
![[LoongArch] Unbox THE NEWEST LOONGSON LAPTOP —— Loongson 3A5000][4]
**What this means**: You will soon get to see LoongArch laptops running Linux out-of-the-box.
Of course, considering it as a Chinese vendor, it is unlikely to be available everywhere. But you never know, right?
Lenovo and Huawei are some of the most prominent Chinese manufacturers producing Linux laptops. Considering the market for Linux laptops is not as crowded, Loongson coming up with its product offering sounds good.
[13 Places to Buy Linux Laptops in 2021][5]
**Loongson adding a driver to Linux:**They are adding code to the Linux Kernel, i.e., in the form of an ACPI-based "**loongson-laptop**" driver, as spotted by [Phoronix][7]. This could be a part of the upcoming [Linux 6.0 release][8].
The code addition also mentions that some are derived from Thinkpad's ACPI configuration, which should not be surprising.
**Joining the RISC-V race early**: Considering much hope for RISC-V computers as the next major leap in computing, I think Loongson wants to compete in that space, preparing its similar CPU architecture for the real world.
Loongson is not famous for its laptops or their performance in them. So, it will be interesting to see how it unfolds shortly.
💬 *What do you think about LoongArch Linux laptops? Let me know your thoughts in the comments.*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/loongson-loongarch-linux-laptops/
作者:[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/w1200/2022/09/loongsoon-loongarch-linux-laptops.jpg
[2]: https://news.itsfoss.com/linux-kernel-5-19-release/
[3]: https://docs.kernel.org/loongarch/introduction.html
[4]: https://youtu.be/a5KZRvSgzUc
[5]: https://itsfoss.com/get-linux-laptops/
[7]: https://www.phoronix.com/news/Loongson-LoongArch-Laptop-Prep
[8]: https://news.itsfoss.com/linux-kernel-6-0-reveal/

View File

@ -0,0 +1,95 @@
[#]: subject: "A Modular Chromebook Launched by Framework and Google"
[#]: via: "https://news.itsfoss.com/chromebook-framework/"
[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
A Modular Chromebook Launched by Framework and Google
======
The first modular Chromebook ever? Built by Framework in collaboration with Google. Check this out.
![A Modular Chromebook Launched by Framework and Google][1]
[Framework][2] has launched a Chromebook in collaboration with Google; the main focus of their products has always been to provide repairable and modular laptops.
With the launch of this laptop, they have implemented the same formula as their previous laptops, but with a touch of Google in the form of ChromeOS.
Let's see what they have on offer.
### Framework Laptop Chromebook Edition
![framework laptop chromebook edition][3]
The laptop runs ChromeOS and is a user-serviceable laptop with a very high degree of modularity.
It is based on the existing '[Framework Laptop][4],' with a milled aluminum chassis, that can comfortably house all the parts and keeps the weight in check at 1.3 kg.
Users can choose from a host of different options, such as switching out memory and storage or the ability to choose which ports they want and where they want those.
![framework laptop chromebook edition repairability][5]
You can choose from a variety of RAM options ranging from 8 GB to 64 GB, in terms of storage, users can install up to a 1 TB NVMe SSD and an additional SSD of either 250 GB or 1 TB capacity. The default configuration comes with 256 GB of storage.
Being a modular laptop, you can choose your ports, like USB-C, USB-A, HDMI, or Ethernet, and have them on any side you want.
![port selection framework][6]
By providing these user-friendly modularities and using post-consumer recycled materials, Framework offers a very sustainable product compared to its competitors.
![framework laptop chromebook edition pcr materials][7]
Regarding privacy, the Chromebook has two hardware privacy switches that cut power from the camera and the microphones to disable any access.
![framework laptop chromebook edition hardware privacy switches][8]
#### Specifications
The Framework Laptop Chromebook Edition is powered by a **12-core Intel i5-1240P**, which can turbo up to 4.4 GHz; it also features Intel's Iris Xe graphics for running graphical workloads.
Other notable highlights include:
* 13.5-inch display (2256x1504) with 100% sRGB support and a 3:2 aspect ratio.
* 55Wh battery.
* Set of 80dB Stereo 2W Speakers.
* Backlight keyboard with 1.5 mm key travel.
* Support for WiFi 6E.
* 1080p 60FPS webcam.
#### Availability & Pricing
The laptop is up for pre-order starting at **$999** on their [official website][9]; it is currently limited to buyers from the US and Canada only.
[Framework Chromebook][10]
They are expecting shipments to begin in early December and are offering a fully-refundable **$100 deposit to pre-book** the laptop.
Framework seems to have taken the right step in attracting users to its product by offering a specific ChromeOS version of its existing laptop, especially after Google has seemingly stopped any further development on their ChromeOS laptops, the Pixelbook series.
💬 *What do you think? Can this be a viable alternative compared to the other Chromebooks in the market?*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/chromebook-framework/
作者:[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/09/framework-chromebook-laptop.jpg
[2]: https://frame.work/
[3]: https://news.itsfoss.com/content/images/2022/09/framework_laptop_chromebook_edition.png
[4]: https://frame.work/products/laptop-12-gen-intel
[5]: https://news.itsfoss.com/content/images/2022/09/framework_laptop_chromebook_edition_repairability.png
[6]: https://news.itsfoss.com/content/images/2022/09/expansion-cards.jpg
[7]: https://news.itsfoss.com/content/images/2022/09/framework_laptop_chromebook_edition_pcr_materials.png
[8]: https://news.itsfoss.com/content/images/2022/09/framework_laptop_chromebook_edition_privacy.png
[9]: https://frame.work/products/laptop-chromebook-12-gen-intel
[10]: https://frame.work/products/laptop-chromebook-12-gen-intel

View File

@ -0,0 +1,36 @@
[#]: subject: "Attacks On Open Source Software Are On The Rise"
[#]: via: "https://www.opensourceforu.com/2022/09/attacks-on-open-source-software-are-on-the-rise/"
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Attacks On Open Source Software Are On The Rise
======
*Attacks on open source repositories are becoming more frequent.*
According to recent research, cybercriminals are profiting from the fact that more businesses are using open source code repositories to develop their software solutions. According to a recent research from software supply chain management service provider Sonatype, the frequency of infected packages, typosquatting assaults on such platforms, and similar hacks has increased dramatically over the past three years.
The organisation discovered about 95,000 harmful packages over the course of the last three years and over 55,000 dangerous packages that were only recently published by employing their repository Firewall. By then, it had increased by an average of 700% in 36 months.
The business claims that it continuously finds and blocks harmful packages as well as potentially vulnerable components by fusing behavioural analysis with automated policy enforcement. Additionally, it employs AI to assess each piece of freshly published open source software to see if it poses any security risks. It asserts that manual analysis has become nearly impossible as a result of the significant increase in open source.
Furthermore, it is irrelevant whether the business includes the malicious component in the finished product or not. The corporation claims that if it is downloaded on their endpoints(opens in new tab), it is already too late.
“The volume, frequency, severity, and sophistication of malicious cyberattacks continue to increase. Organizations cantand shouldntavoid the use of open source(opens in new tab) just to protect themselves,” Fox added. “But they can use preventative toolssuch as the Sonatype Firewallto keep developers on track and software supply chains secure.”
--------------------------------------------------------------------------------
via: https://www.opensourceforu.com/2022/09/attacks-on-open-source-software-are-on-the-rise/
作者:[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

@ -0,0 +1,40 @@
[#]: subject: "Google Unveils An Open Source C++ And Python Library, TensorStore"
[#]: via: "https://www.opensourceforu.com/2022/09/google-unveils-an-open-source-c-and-python-library-tensorstore/"
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Google Unveils An Open Source C++ And Python Library, TensorStore
======
*TensorStore, an open source software library written in C++ and Python for the storage and manipulation of n-dimensional data.*
Multidimensional datasets that span a single broad coordinate system are used in a variety of contemporary computer science and machine learning applications. Examples include forecasting the weather using air measurements over a grid of locations or predicting medical imaging outcomes using multi-channel image intensity values from a 2D or 3D scan. These datasets can be difficult to work with since users frequently wish to run studies on multiple workstations at once and may receive and write data at unpredictable intervals and varied scales. Under these conditions, even a single dataset might require petabytes of storage.
Googles TensorStore has already been used to solve fundamental engineering issues in scientific computing related to the administration and processing of big datasets in neuroscience. To solve the issue of storing and manipulating n-dimensional data, Google Research created the open source TensorStore C++ and Python software package. Numerous storage systems, including local and network filesystems, Google Cloud Storage, etc. are supported by this module. It provides a uniform API that can read and write a variety of array types. The library offers read/writeback caching, transactions, and a robust atomicity, isolation, consistency, and durability (ACID) guarantee. Concurrency that is optimistic guarantees secure access from several processes and systems.
TensorStore offers a straightforward Python API that can be used to load and manipulate huge arrays of data. Due to the fact that no actual data is read or maintained in memory until the specific slice is needed, arbitrary large underlying datasets can be loaded and edited without having to store the entire dataset in memory. The syntax for indexing and manipulation, which is much the same as that used for NumPy operations, makes this possible. TensorStore also supports virtual views, broadcasting, alignment, and other advanced indexing features (data type conversion, downsampling, lazily on-the-fly generated arrays).
Processing and analysing large numerical datasets requires a lot of processing power. Typically, this is done by parallelizing activities among a large number of CPU or accelerator cores dispersed across multiple devices. Since reading and writing to TensorStore does not become a bottleneck during computation, one of TensorStores key goals has been to enable simultaneous processing of specific datasets while maintaining good performance (by preventing corruption or inconsistencies resulting from concurrent access patterns).
Additionally, TensorStore includes an asynchronous API that enables read or write operations to go concurrently. The application also does various operations and customisable in-memory caching at the same time (which decreases slower storage system interactions for frequently accessed data). When multiple machines are accessing the same dataset, optimistic concurrency protects the security of parallel operations. Without significantly reducing performance, it maintains compatibility with a number of underlying storage layers. In order to make TensorStore distributed computing compatible with many existing data processing workflows, TensorStore has also been integrated with parallel computing frameworks like Apache Beam and Dask.
PaLM and other advanced big language models are among the exciting TensorStore application cases. With their hundreds of billions of parameters, these neural networks push the boundaries of computing infrastructure while displaying unexpected ability in producing and understanding plain language. During this training process, accuracy in reading and writing the model parameters provides a challenge. Despite the fact that training is distributed across many workstations, it is required to regularly store parameters to a single checkpoint on a long-term storage system without causing the training process to lag. TensorStore has already been used to resolve these problems. Large-scale (“multipod”) models trained using JAX have been connected to checkpoints using this framework, which has been integrated with frameworks like T5X and Pathways.
An other fascinating application is brain mapping. The goal of synapse-resolution connectomics is to map the complex network of individual synapses in the brains of both animals and people. Petabyte-sized datasets are required for this, which are created by imaging the brain at a very high resolution with fields of view as small as a millimetre or more. Current datasets, however, present major storage, manipulation, and processing challenges because they require millions of gigabytes to store, modify, and process data inside a coordinate system. TensorStore has been utilised to handle the computational challenges provided by some of the biggest and most well-known connectomic datasets, with Google Cloud Storage acting as the underlying object storage system.
--------------------------------------------------------------------------------
via: https://www.opensourceforu.com/2022/09/google-unveils-an-open-source-c-and-python-library-tensorstore/
作者:[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

@ -0,0 +1,132 @@
[#]: subject: "ONLYOFFICE 7.2 Introduces Plugin Marketplace, Live Viewer, and More"
[#]: via: "https://news.itsfoss.com/onlyoffice-7-2-release/"
[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
ONLYOFFICE 7.2 Introduces Plugin Marketplace, Live Viewer, and More
======
ONLYOFFICE 7.2 includes essential upgrades with usability improvements and interesting features.
![ONLYOFFICE 7.2 Introduces Plugin Marketplace, Live Viewer, and More][1]
ONLYOFFICE is an open-source office suite that offers a lot of utility in a relatively small package.
This follows the previous major release of [ONLYOFFICE 7.1][2] and offers quite a few improvements.
Let's see what is on offer.
### ONLYOFFICE 7.2 Docs: What's New?
![ONLYOFFICE Docs 7.2 — what's new?][3]
ONLYOFFICE 7.2 introduces many improvements to Docs and a few enhancements to the spreadsheet editor.
Some of the key highlights include:
* Live Viewer
* Plugin Marketplace
* New Interface Theme
* Ligature Support
* Spreadsheet Improvements
#### Live Viewer
![onlyoffice 7.2 live viewer][4]
This feature lets users view changes made to a document by other collaborators in real-time.
Do note that this feature is only made available to server users.
![][5]
![][6]
#### Plugin Marketplace
![onlyoffice 7.2 plugin marketplace][7]
ONLYOFFICE 7.2 features a dedicated marketplace for getting plugins; this makes it very straightforward for users to install and remove plugins.
#### Ligature Support
![onlyoffice 7.2 ligature support][8]
Ligature allows merging multiple symbols into one. It has been added with ONLYOFFICE 7.2, which results in new language support, including Hindi, Bengali, Portuguese and more.
#### Usability Improvements
![onlyoffice 7.2 new theme][9]
Usability improvements to ONLYOFFICE include a new interface theme named 'Dark Contrast', the ability to switch to dark or light mode according to the system theme.
Additionally, you will find a bunch of new interface languages, such as Portuguese, Basque, Malay, etc., made possible due to the support for ligatures.
#### Spreadsheet Improvements
![onlyoffice 7.2 spreadsheet improvements][12]
A quick switcher option has been added to let users switch their diagrams or charts between rows and columns.
The 1904 date system has also been added, with the ability to share a link to a data range with other users.
Another significant addition is the ability to insert a spreadsheet into a text document or presentation.
![onlyoffice 7.2 insert spreadsheet][13]
#### Other Refinements
![Introducing ONLYOFFICE 7.2: Detailed feature overview][14]
There are several other enhancements. Some of them include:
* Updated search/replace tool
* New hotkeys for paste special
* Ability to rename files via title in the editors.
* Support for PPSX presentations for viewing.
* More intuitive advanced settings.
You can learn more about this release by reading the [full changelog][15].
### Download ONLYOFFICE 7.2
ONLYOFFICE 7.2 is available for various platforms, you can head to its [downloads page][16] to find options for Docker, Windows, AWS Cloud, and more.
[Download ONLYOFFICE 7.2][17]
If you want it for personal use, you can head to its [free ONLYDESKTOP apps][18] section to download it for your desktop or mobile device. It is available for Windows, Linux, and macOS.
*💬 What do you think of ONLYOFFICE 7.2? Do the improvements sound good to you?*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/onlyoffice-7-2-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/09/onlyoffice-7-2-release.png
[2]: https://news.itsfoss.com/onlyoffice-7-1-release/
[3]: https://youtu.be/wF0qB78hRo8
[4]: https://news.itsfoss.com/content/images/2022/09/ONLYOFFICE-7.2_Live_Viewer.gif
[5]: http://proton.go2cloud.org/aff_c?offer_id=15&aff_id=1173
[6]: http://proton.go2cloud.org/aff_c?offer_id=15&aff_id=1173
[7]: https://news.itsfoss.com/content/images/2022/09/ONLYOFFICE-7.2_Plugin_Manager-1.png
[8]: https://news.itsfoss.com/content/images/2022/09/ONLYOFFICE-7.2_Ligatures-1.png
[9]: https://news.itsfoss.com/content/images/2022/09/ONLYOFFICE-7.2_New_Theme-1.png
[12]: https://news.itsfoss.com/content/images/2022/09/ONLYOFFICE-7.2_LinktoRange-1.png
[13]: https://news.itsfoss.com/content/images/2022/09/ONLYOFFICE-7.2_Insert_Spreadsheet.gif
[14]: https://youtu.be/Aul3xxZeAdc
[15]: https://github.com/ONLYOFFICE/DocumentServer/blob/master/CHANGELOG.md#720
[16]: https://www.onlyoffice.com/download-docs.aspx
[17]: https://www.onlyoffice.com/download-desktop.aspx#desktop
[18]: https://www.onlyoffice.com/download-desktop.aspx#desktop

View File

@ -0,0 +1,90 @@
[#]: subject: "System76 Won't Release Pop!_OS 22.10 Linux Distro: Here's Why!"
[#]: via: "https://news.itsfoss.com/no-pop-os-21-10/"
[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
System76 Won't Release Pop!_OS 22.10 Linux Distro: Here's Why!
======
There will be no Pop!_OS 22.10. So, you can't get your hands on GNOME 43.. Here's why!
![System76 Won't Release Pop!_OS 22.10 Linux Distro: Here's Why!][1]
Pop!_OS is an Ubuntu-based distro that offers a polished user experience alongside a robust software suite.
Pop!_OS releases are usually worth the wait for their latest tech stack and useful tweaks they bring in with their desktop environment experience.
But, you will not be getting a Pop!_OS 22.10 release.
[System76][2] wants to focus on developing its own Rust-based COSMIC desktop environment ditching GNOME for future releases. 😲
**In case you did not know**, here is our older coverage on the COSMIC desktop for Pop!_OS to provide clarity:
[Oh, Wow! Pop!_OS Linux Devs Are Creating a New Rust-based Desktop Environment][3]
### No Pop!_OS 22.10 Release
A new Pop!_OS release usually comes just after Ubuntu's new release for both the LTS and non-LTS versions.
Without Pop!_OS 22.10, some users might be disappointed not to get their hands on GNOME 43 experience on Pop!_OS.
Thanks to [OMG!Ubuntu!][5] for spotting this on a [Reddit comment][6] by Pop!_OS developer **Michael Murphy**.
Michael mentions:
> We are going to focus our development time onto the Rust implementation of COSMIC instead of 22.10. It takes a lot of effort to support multiple releases of Ubuntu, and the 6 month release cycle really eats into development time and stability of the product.
👏 I believe that is an excellent decision. Last year, when they announced their plans for a Rust-based built-from-scratch desktop environment, I always wondered how they could pull it off.
It is a huge task to make something from the ground up and reach the expectation of users who already have a great experience on Pop!_OS with a GNOME-based desktop.
### COSMIC Desktop Environment
![pop os cosmic de early build][9]
It would be interesting to see more developments in the COSMIC desktop environment. The last time we tried it (or saw the mockups), it sparked excitement among the users even when they were just starting out.
Technically, it has been in development since 2021, with a Pop!_OS release coming in 2023.
It is written in the [Rust][10] programming language following the freedesktop [interoperability specifications][11], and to completely remove any dependence on GNOME and its shell extensions.
We had previously covered the early preview build of the COSMIC desktop environment, you can check that out here:
[I Tried System76s New Rust-based COSMIC Desktop!][12]
### Why Is This a Good Thing?
The LTS releases for Pop!_OS already receive regular package updates and kernel upgrades more than Ubuntu, so you have nothing to worry about not getting a 22.10 version release.
Instead, we should look forward to Pop!_OS's next major upgrade where they properly introduce the Rust-COSMIC desktop environment.
*💬 What do you think about this decision? Are you excited to see what's in store with future Pop!_OS releases?*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/no-pop-os-21-10/
作者:[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/09/no-pop-os-22-10-release.png
[2]: https://system76.com/
[3]: https://news.itsfoss.com/pop-os-cosmic-rust/
[4]: https://news.itsfoss.com/pop-os-cosmic-rust/
[5]: https://www.omgubuntu.co.uk/2022/09/excited-for-pop_os-22-10-dont-be
[6]: https://www.reddit.com/r/pop_os/comments/xifwt6/comment/ip3l425/
[7]: http://proton.go2cloud.org/aff_c?offer_id=15&aff_id=1173
[8]: http://proton.go2cloud.org/aff_c?offer_id=15&aff_id=1173
[9]: https://news.itsfoss.com/content/images/2022/09/pop_os_cosmic_early_build.png
[10]: https://www.rust-lang.org/
[11]: https://www.freedesktop.org/wiki/Specifications/
[12]: https://news.itsfoss.com/system76-rust-cosmic-desktop/

View File

@ -1,192 +0,0 @@
[#]: subject: "20 Facts About Linus Torvalds, the Creator of Linux and Git"
[#]: via: "https://itsfoss.com/linus-torvalds-facts/"
[#]: author: "Abhishek Prakash https://itsfoss.com/"
[#]: collector: "lkxed"
[#]: translator: "gpchn"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
20 Facts About Linus Torvalds, the Creator of Linux and Git
======
*Brief: Some known, some lesser known here are 20 facts about the Linus Torvalds, creator of the Linux kernel.*
![Linus Torvalds, creator of Linux and Git][1]
[Linus Torvalds][2], a Finnish student, developed a Unix-like operating system while he was doing his masters in the year 1991. Since then, its sparked a revolution: today it powers most of the web, many embedded devices and every one of the [top 500 supercomputers][3].
Ive already written about some less known [facts about Linux][4]. This article is not about Linux. Its about its creator, Linus Torvalds.
I learned a number of things about Torvalds by reading his biography [Just for Fun][5]. If youre interested, you can [order a copy of the biography from Amazon][6]. (This is an [affiliate][7] link.)
### 20 Interesting facts about Linus Torvalds
Youll probably already know some of these facts about Linus but the chances are that youll learn some new facts about him by reading this.
#### 1. Named after a Nobel prize winner
Linus Benedict Torvalds was born on December 28th 1969 in Helsinki. He comes from a family of journalists. His father [Nils Torvalds][11] is a Finnish politician and a likely candidate for president in future elections.
He was named after [Linus Pauling][12], a double Nobel prize winner in Chemistry and Peace.
#### 2. All the Torvalds in the world are relatives
While you may find several people with the name Linus, you wont find many people with the name Torvalds because the correct spelling is actually Torvald (without the s). His grandfather changed his name from Torvald to Torvalds, adding an s at the end. And thus the Torvalds dynasty (if I can call it that) began.
Since its such an unusual surname, there are hardly 30 Torvalds in the world and theyre all relatives, claims Linus Torvalds in his biography.
![Linus Torvalds with sister Sara Torvalds][13]
#### 3. Commodore Vic 20 was his first computer
At the age of 10, Linus started writing programs in BASIC on his maternal grandfathers Commodore Vic 20. This is when he discovered his love for computers and programming.
#### 4. Second Lieutenant Linus Torvalds
Though he preferred to spend time on computers rather than in athletic activities, he had to attend compulsory military training. He held the rank of Second Lieutenant.
#### 5. He created Linux because he didnt have money for UNIX
In early 1991, unhappy with [MS-DOS][14] and [MINIX][15], Torvalds wanted to buy a UNIX system. Luckily for us, he didnt have enough money. So he decided to make his own clone of UNIX, from scratch.
#### 6. Linux could have been called Freax
In September 91, Linus announced Linux (standing for Linuss MINIX) and encouraged his colleagues to use its source code for wider distribution.
Linus thought that the name Linux was too egotistical. He wanted to change it to Freax (based on free, freak and MINIX), but his friend Lemmarke had already created a directory called Linux on his FTP server. And thus the name Linux continued.
#### 7. Linux was his main project at University
“Linux: A Portable Operating System” was the title of his thesis for his M.Sc.
#### 8. He married his student
In 1993, when he was teaching at the University of Helsinki, he gave the task of composing email as homework to the students. Yeah, composing emails were a big deal back then.
A female student named Tove Monni completed the task by sending him an email asking him out on a date. He accepted and three years later the first of their three daughters was born.
Shall I say he started the internet dating trend? Hmm … nah! Lets leave it there ;)
![Linus Torvalds with his wife Tove Monni Torvalds][16]
#### 9. Linus has an asteroid named after him
He has numerous awards to his name, including an asteroid named [9793 Torvalds][17].
#### 10. Linus had to battle for the trademark of Linux
Linux is a trademark registered with Linus Torvalds. Torvalds didnt care about the trademark initially, but in August 1994, a William R. Della Croce, Jr. registered the Linux trademark and started demanding royalties from Linux developers. Torvalds sued him in return and in 1997, the case was settled.
![Who is Linus Torvalds? Know about him in 2 minutes!][18]
#### 11. Steve Jobs wanted him to work on Apples macOS
In 2000, Apples founder [Steve Jobs invited him to work on Apples macOS][19]. Linus refused the lucrative offer and continued to work on the Linux kernel.
#### 12. Linus also created Git
Most people know Linus Torvalds for creating the Linux kernel. But he also created [Git][20], a version control system that is extensively used in software development worldwide.
Till 2005, (then) proprietary service [BitKeeper][21] was used for Linux kernel development. When Bitkeeper shut down its free service, Linus Torvalds created Git on his own because none of the other version control systems met his needs.
#### 13. Linus hardly codes these days
Though Linus works full time on the Linux kernel, he hardly writes any code for it anymore. In fact, most of the code in the Linux kernel is by contributors from around the world. He ensures that things go fine at each release with the help of kernel maintainers.
#### 14. Torvalds hates C++
Linus Torvalds has a strong [dislike for the C++ programming language][22]. He has been very vocal about it. He jokes that the Linux kernel compiles faster than a C++ program.
#### 15. Even Linus Torvalds found Linux difficult to install (you can feel good about yourself now)
A few years ago, Linus told that [he found Debian difficult to install][23]. He is [known to be using Fedora][24] on his main workstation.
#### 16. He loves scuba diving
Linus Torvalds loves scuba diving. He even created [Subsurface][25], a dive logging tool for scuba divers. Youll be surprised that sometimes he even answers general questions on its forum.
![Linus Torvalds in Scuba Gear][26]
#### 17. The foul-mouthed Torvalds has improved his behavior
Torvalds is known for using [mild expletives][27] on the Linux kernel mailing list. This has been criticized by some in the industry. However, it would be difficult to criticize his banter of “[F**k you, NVIDIA][28]” as it prompted better support for the Linux kernel from NVIDIA.
In 2018, [Torvalds took a break from Linux kernel development to improve his behavior][29]. This was done just before he signed the controversial [code of conduct for Linux kernel developers][30].
![Linus Torvalds Middle finger to Nvidia : Fuck You Nvidia][31]
#### 18. He is too shy to speak in public
Linus doesnt feel comfortable with public speaking. He doesnt attend many events. And when he does, he prefers to sit down and be interviewed by the host. This is his favorite way of doing a public talk.
#### 19. Not a social media buff
[Google Plus][32] is the only social media platform he has used. He even spent some time [reviewing gadgets][33] there in his free time. Google Plus is now discontinued so he has no other social media accounts.
#### 20. Torvalds is settled in the USA
Linus moved to the US in 1997 and settled there with his wife Tove and their three daughters. He became a US citizen in 2010. At present, he works full-time on the Linux kernel as part of the [Linux Foundation][34].
Its difficult to say what the net worth of Linus Torvalds is or how much Linus Torvalds earns because this information has never been made public.
![Tove and Linus Torvalds with their daughters Patricia, Daniela and Celeste][35]
Picture credit: [opensource.com][36]
If youre interested in learning more about the early life of Linus Torvalds, I recommend reading his biography entitled [Just for Fun][37].
*Disclaimer: Some of the images here have been taken from the internet. I do not own the copyright to the images. I also do not intend to invade the privacy of the Torvalds family with this article.*
--------------------------------------------------------------------------------
via: https://itsfoss.com/linus-torvalds-facts/
作者:[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/2017/12/Linus-Torvalds-featured-800x450.png
[2]: https://en.wikipedia.org/wiki/Linus_Torvalds
[3]: https://itsfoss.com/linux-runs-top-supercomputers/
[4]: https://itsfoss.com/facts-linux-kernel/
[5]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[6]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[7]: https://itsfoss.com/affiliate-policy/
[8]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[9]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[10]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[11]: https://en.wikipedia.org/wiki/Nils_Torvalds
[12]: https://en.wikipedia.org/wiki/Linus_Pauling
[13]: https://itsfoss.com/wp-content/uploads/2017/12/Linus_and_sara_Torvalds.jpg
[14]: https://en.wikipedia.org/wiki/MS-DOS
[15]: https://www.minix3.org/
[16]: https://itsfoss.com/wp-content/uploads/2017/12/Linus_torvalds-wife-800x533.jpg
[17]: http://enacademic.com/dic.nsf/enwiki/1928421
[18]: https://youtu.be/eE-ovSOQK0Y
[19]: https://www.macrumors.com/2012/03/22/steve-jobs-tried-to-hire-linux-creator-linus-torvalds-to-work-on-os-x/
[20]: https://en.wikipedia.org/wiki/Git
[21]: https://www.bitkeeper.org/
[22]: https://lwn.net/Articles/249460/
[23]: https://www.youtube.com/watch?v=qHGTs1NSB1s
[24]: https://plus.google.com/+LinusTorvalds/posts/Wh3qTjMMbLC
[25]: https://subsurface-divelog.org/
[26]: https://itsfoss.com/wp-content/uploads/2017/12/Linus_Torvalds_in_SCUBA_gear.jpg
[27]: https://www.theregister.co.uk/2016/08/26/linus_torvalds_calls_own_lawyers_nasty_festering_disease/
[28]: https://www.youtube.com/watch?v=_36yNWw_07g
[29]: https://itsfoss.com/torvalds-takes-a-break-from-linux/
[30]: https://itsfoss.com/linux-code-of-conduct/
[31]: https://itsfoss.com/wp-content/uploads/2012/09/Linus-Torvalds-Fuck-You-Nvidia.jpg
[32]: https://plus.google.com/+LinusTorvalds
[33]: https://plus.google.com/collection/4lfbIE
[34]: https://www.linuxfoundation.org/
[35]: https://itsfoss.com/wp-content/uploads/2017/12/patriciatorvalds.jpg
[36]: https://opensource.com/life/15/8/patricia-torvalds-interview
[37]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[38]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[39]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID
[40]: https://www.amazon.com/dp/0066620732?tag=AAWP_PLACEHOLDER_TRACKING_ID

View File

@ -1,263 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (aREversez)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (The Real Novelty of the ARPANET)
[#]: via: (https://twobithistory.org/2021/02/07/arpanet.html)
[#]: author: (Two-Bit History https://twobithistory.org)
The Real Novelty of the ARPANET
======
If you run an image search for the word “ARPANET,” you will find lots of maps showing how the [government research network][1] expanded steadily across the country throughout the late 60s and early 70s. Im guessing that most people reading or hearing about the ARPANET for the first time encounter one of these maps.
Obviously, the maps are interesting—its hard to believe that there were once so few networked computers that their locations could all be conveyed with what is really pretty lo-fi cartography. (Were talking 1960s overhead projector diagrams here. You know the vibe.) But the problem with the maps, drawn as they are with bold lines stretching across the continent, is that they reinforce the idea that the ARPANETs paramount achievement was connecting computers across the vast distances of the United States for the first time.
Today, the internet is a lifeline that keeps us tethered to each other even as an airborne virus has us all locked up indoors. So its easy to imagine that, if the ARPANET was the first draft of the internet, then surely the world that existed before it was entirely disconnected, since thats where wed be without the internet today, right? The ARPANET must have been a big deal because it connected people via computers when that hadnt before been possible.
That view doesnt get the history quite right. It also undersells what made the ARPANET such a breakthrough.
### The Debut
The Washington Hilton stands near the top of a small rise about a mile and a half northeast of the National Mall. Its two white-painted modern facades sweep out in broad semicircles like the wings of a bird. The New York Times, reporting on the hotels completion in 1965, remarked that the building looks “like a sea gull perched on a hilltop nest.”[1][2]
The hotel hides its most famous feature below ground. Underneath the driveway roundabout is an enormous ovoid event space known as the International Ballroom, which was for many years the largest pillar-less ballroom in DC. In 1967, the Doors played a concert there. In 1968, Jimi Hendrix also played a concert there. In 1972, a somewhat more sedate act took over the ballroom to put on the inaugural International Conference on Computing Communication, where a promising research project known as the ARPANET was demonstrated publicly for the first time.
The 1972 ICCC, which took place from October 24th to 26th, was attended by about 800 people.[2][3] It brought together all of the leading researchers in the nascent field of computer networking. According to internet pioneer Bob Kahn, “if somebody had dropped a bomb on the Washington Hilton, it would have destroyed almost all of the networking community in the US at that point.”[3][4]
Not all of the attendees were computer scientists, however. An advertisement for the conference claimed it would be “user-focused” and geared toward “lawyers, medical men, economists, and government men as well as engineers and communicators.”[4][5] Some of the conferences sessions were highly technical, such as the session titled “Data Network Design Problems I” and its sequel session, “Data Network Design Problems II.” But most of the sessions were, as promised, focused on the potential social and economic impacts of computer networking. One session, eerily prescient today, sought to foster a discussion about how the legal system could act proactively “to safeguard the right of privacy in the computer data bank.”[5][6]
The ARPANET demonstration was intended as a side attraction of sorts for the attendees. Between sessions, which were held either in the International Ballroom or elsewhere on the lower level of the hotel, attendees were free to wander into the Georgetown Ballroom (a smaller ballroom/conference room down the hall from the big one),[6][7] where there were 40 terminals from a variety of manufacturers set up to access the ARPANET.[7][8] These terminals were dumb terminals—they only handled input and output and could do no computation on their own. (In fact, in 1972, its likely that all of these terminals were hardcopy terminals, i.e. teletype machines.) The terminals were all hooked up to a computer known as a Terminal Interface Message Processor or TIP, which sat on a raised platform in the middle of the room. The TIP was a kind of archaic router specially designed to connect dumb terminals to the ARPANET. Using the terminals and the TIP, the ICCC attendees could experiment with logging on and accessing some of the computers at the 29 host sites then comprising the ARPANET.[8][9]
To exhibit the networks capabilities, researchers at the host sites across the country had collaborated to prepare 19 simple “scenarios” for users to experiment with. These scenarios were compiled into [a booklet][10] that was handed to conference attendees as they tentatively approached the maze of wiring and terminals.[9][11] The scenarios were meant to prove that the new technology worked but also that it was useful, because so far the ARPANET was “a highway system without cars,” and its Pentagon funders hoped that a public demonstration would excite more interest in the network.[10][12]
The scenarios thus showed off a diverse selection of the software that could be accessed over the ARPANET: There were programming language interpreters, one for a Lisp-based language at MIT and another for a numerical computing environment called Speakeasy hosted at UCLA; there were games, including a chess program and an implementation of Conways Game of Life; and—perhaps most popular among the conference attendees—there were several AI chat programs, including the famous ELIZA chat program developed at MIT by Joseph Weizenbaum.
The researchers who had prepared the scenarios were careful to list each command that users were expected to enter at their terminals. This was especially important because the sequence of commands used to connect to any given ARPANET host could vary depending on the host in question. To experiment with the AI chess program hosted on the MIT Artificial Intelligence Laboratorys PDP-10 minicomputer, for instance, conference attendees were instructed to enter the following:
_`[LF]`, `[SP]`, and `[CR]` below stand for the line feed, space, and carriage return keys respectively. Ive explained each command after `//`, but this syntax was not used for the annotations in the original._
```
@r [LF] // Reset the TIP
@e [SP] r [LF] // "Echo remote" setting, host echoes characters rather than TIP
@L [SP] 134 [LF] // Connect to host number 134
:login [SP] iccXXX [CR] // Login to the MIT AI Lab's system, where "XXX" should be user's initials
:chess [CR] // Start chess program
```
If conference attendees were successfully able to enter those commands, their reward was the opportunity to play around with some of the most cutting-edge chess software available at the time, where the layout of the board was represented like this:
```
BR BN BB BQ BK BB BN BR
BP BP BP BP ** BP BP BP
-- ** -- ** -- ** -- **
** -- ** -- BP -- ** --
-- ** -- ** WP ** -- **
** -- ** -- ** -- ** --
WP WP WP WP -- WP WP WP
WR WN WB WQ WK WB WN WR
```
In contrast, to connect to UCLAs IBM System/360 and run the Speakeasy numerical computing environment, conference attendees had to enter the following:
```
@r [LF] // Reset the TIP
@t [SP] o [SP] L [LF] // "Transmit on line feed" setting
@i [SP] L [LF] // "Insert line feed" setting, i.e. send line feed with each carriage return
@L [SP] 65 [LF] // Connect to host number 65
tso // Connect to IBM Time-Sharing Option system
logon [SP] icX [CR] // Log in with username, where "X" should be a freely chosen digit
iccc [CR] // This is the password (so secure!)
speakez [CR] // Start Speakeasy
```
Successfully running that gauntlet gave attendees the power to multiply and transpose and do other operations on matrices as quickly as they could input them at their terminal:
```
:+! a=m*transpose(m);a [CR]
:+! eigenvals(a) [CR]
```
Many of the attendees were impressed by the demonstration, but not for the reasons that we, from our present-day vantage point, might assume. The key piece of context hard to keep in mind today is that, in 1972, being able to use a computer remotely, even from a different city, was not new. Teletype devices had been used to talk to distant computers for decades already. Almost a full five years before the ICCC, Bill Gates was in a Seattle high school using a teletype to run his first BASIC programs on a General Electric computer housed elsewhere in the city. Merely logging in to a host computer and running a few commands or playing a text-based game was routine. The software on display here was pretty neat, but the two scenarios Ive told you about so far could ostensibly have been experienced without going over the ARPANET.
Of course, something new was happening under the hood. The lawyers, policy-makers, and economists at the ICCC might have been enamored with the clever chess program and the chat bots, but the networking experts would have been more interested in two other scenarios that did a better job of demonstrating what the ARPANET project had achieved.
The first of these scenarios involved a program called `NETWRK` running on MITs ITS operating system. The `NETWRK` command was the entrypoint for several subcommands that could report various aspects of the ARPANETs operating status. The `SURVEY` subcommand reported which hosts on the network were functioning and available (they all fit on a single list), while the `SUMMARY.OF.SURVEY` subcommand aggregated the results of past `SURVEY` runs to report an “up percentage” for each host as well as how long, on average, it took for each host to respond to messages. The output of the `SUMMARY.OF.SURVEY` subcommand was a table that looked like this:
```
--HOST-- -#- -%-UP- -RESP-
UCLA-NMC 001 097% 00.80
SRI-ARC 002 068% 01.23
UCSB-75 003 059% 00.63
...
```
The host number field, as you can see, has room for no more than three digits (ha!). Other `NETWRK` subcommands allowed users to look at summary of survey results over a longer historical period or to examine the log of survey results for a single host.
The second of these scenarios featured a piece of software called the SRI-ARC Online System being developed at Stanford. This was a fancy piece of software with lots of functionality (it was the software system that Douglas Engelbart demoed in the “Mother of All Demos”), but one of the many things it could do was make use of what was essentially a file hosting service run on the host at UC Santa Barbara. From a terminal at the Washington Hilton, conference attendees could copy a file created at Stanford onto the host at UCSB simply by running a `copy` command and answering a few of the computers questions:
_`[ESC]`, `[SP]`, and `[CR]` below stand for the escape, space, and carriage return keys respectively. The words in parentheses are prompts printed by the computer. The escape key is used to autocomplete the filename on the third line. The file being copied here is called `<system>sample.txt;1`, where the trailing one indicates the files version number and `<system>` indicates the directory. This was a convention for filenames used by the TENEX operating system._[11][13]
```
@copy
(TO/FROM UCSB) to
(FILE) <system>sample [ESC] .TXT;1 [CR]
(CREATE/REPLACE) create
```
These two scenarios might not look all that different from the first two, but they were remarkable. They were remarkable because they made it clear that, on the ARPANET, humans could talk to computers but computers could also talk to _each other._ The `SURVEY` results collected at MIT werent collected by a human regularly logging in to each machine to check if it was up—they were collected by a program that knew how to talk to the other machines on the network. Likewise, the file transfer from Stanford to UCSB didnt involve any humans sitting at terminals at either Stanford or UCSB—the user at a terminal in Washington DC was able to get the two computers to talk each other merely by invoking a piece of software. Even more, it didnt matter which of the 40 terminals in the Ballroom you were sitting at, because you could view the MIT network monitoring statistics or store files at UCSB using any of the terminals with almost the same sequence of commands.
This is what was totally new about the ARPANET. The ICCC demonstration didnt just involve a human communicating with a distant computer. It wasnt just a demonstration of remote I/O. It was a demonstration of software remotely communicating with other software, something nobody had seen before.
To really appreciate why it was this aspect of the ARPANET project that was important and not the wires-across-the-country, physical connection thing that the host maps suggest (the wires were leased phone lines anyhow and were already there!), consider that, before the ARPANET project began in 1966, the ARPA offices in the Pentagon had a terminal room. Inside it were three terminals. Each connected to a different computer; one computer was at MIT, one was at UC Berkeley, and another was in Santa Monica.[12][14] It was convenient for the ARPA staff that they could use these three computers even from Washington DC. But what was inconvenient for them was that they had to buy and maintain terminals from three different manufacturers, remember three different login procedures, and familiarize themselves with three different computing environments in order to use the computers. The terminals might have been right next to each other, but they were merely extensions of the host computing systems on the other end of the wire and operated as differently as the computers did. Communicating with a distant computer was possible before the ARPANET; the problem was that the heterogeneity of computing systems limited how sophisticated the communication could be.
### Come Together, Right Now
So what Im trying to drive home here is that there is an important distinction between statement A, “the ARPANET connected people in different locations via computers for the first time,” and statement B, “the ARPANET connected computer systems to each other for the first time.” That might seem like splitting hairs, but statement A elides some illuminating history in a way that statement B does not.
To begin with, the historian Joy Lisi Rankin has shown that people were socializing in cyberspace well before the ARPANET came along. In _A Peoples History of Computing in the United States_, she describes several different digital communities that existed across the country on time-sharing networks prior to or apart from the ARPANET. These time-sharing networks were not, technically speaking, computer networks, since they consisted of a single mainframe computer running computations in a basement somewhere for many dumb terminals, like some portly chthonic creature with tentacles sprawling across the country. But they nevertheless enabled most of the social behavior now connoted by the word “network” in a post-Facebook world. For example, on the Kiewit Network, which was an extension of the Dartmouth Time-Sharing System to colleges and high schools across the Northeast, high school students collaboratively maintained a “gossip file” that allowed them to keep track of the exciting goings-on at other schools, “creating social connections from Connecticut to Maine.”[13][15] Meanwhile, women at Mount Holyoke College corresponded with men at Dartmouth over the network, perhaps to arrange dates or keep in touch with boyfriends.[14][16] This was all happening in the 1960s. Rankin argues that by ignoring these early time-sharing networks we impoverish our understanding of how American digital culture developed over the last 50 years, leaving room for a “Silicon Valley mythology” that credits everything to the individual genius of a select few founding fathers.
As for the ARPANET itself, if we recognize that the key challenge was connecting the computer _systems_ and not just the physical computers, then that might change what we choose to emphasize when we tell the story of the innovations that made the ARPANET possible. The ARPANET was the first ever packet-switched network, and lots of impressive engineering went into making that happen. I think its a mistake, though, to say that the ARPANET was a breakthrough because it was the first packet-switched network and then leave it at that. The ARPANET was meant to make it easier for computer scientists across the country to collaborate; that project was as much about figuring out how different operating systems and programs written in different languages would interface with each other than it was about figuring out how to efficiently ferry data back and forth between Massachusetts and California. So the ARPANET was the first packet-switched network, but it was also an amazing standards success story—something I find especially interesting given [how][17] [many][18] [times][19] Ive written about failed standards on this blog.
Inventing the protocols for the ARPANET was an afterthought even at the time, so naturally the job fell to a group made up largely of graduate students. This group, later known as the Network Working Group, met for the first time at UC Santa Barbara in August of 1968.[15][20] There were 12 people present at that first meeting, most of whom were representatives from the four universities that were to be the first host sites on the ARPANET when the equipment was ready.[16][21] Steve Crocker, then a graduate student at UCLA, attended; he told me over a Zoom call that it was all young guys at that first meeting, and that Elmer Shapiro, who chaired the meeting, was probably the oldest one there at around 38. ARPA had not put anyone in charge of figuring out how the computers would communicate once they were connected, but it was obvious that some coordination was necessary. As the group continued to meet, Crocker kept expecting some “legitimate adult” with more experience and authority to fly out from the East Coast to take over, but that never happened. The Network Working Group had ARPAs tacit approval—all those meetings involved lots of long road trips, and ARPA money covered the travel expenses—so they were it.[17][22]
The Network Working Group faced a huge challenge. Nobody had ever sat down to connect computer systems together in a general-purpose way; that flew against all of the assumptions that prevailed in computing in the late 1960s:
> The typical mainframe of the period behaved as if it were the only computer in the universe. There was no obvious or easy way to engage two diverse machines in even the minimal communication needed to move bits back and forth. You could connect machines, but once connected, what would they say to each other? In those days a computer interacted with devices that were attached to it, like a monarch communicating with his subjects. Everything connected to the main computer performed a specific task, and each peripheral device was presumed to be ready at all times for a fetch-my-slippers type command…. Computers were strictly designed for this kind of interaction; they send instructions to subordinate card readers, terminals, and tape units, and they initiate all dialogues. But if another device in effect tapped the computer on the shoulder with a signal and said, “Hi, Im a computer too,” the receiving machine would be stumped.[18][23]
As a result, the Network Working Groups progress was initially slow.[19][24] The group did not settle on an “official” specification for any protocol until June, 1970, nearly two years after the groups first meeting.[20][25]
But by the time the ARPANET was to be shown off at the 1972 ICCC, all the key protocols were in place. A scenario like the chess scenario exercised many of them. When a user ran the command `@e r`, short for `@echo remote`, that instructed the TIP to make use of a facility in the new TELNET virtual teletype protocol to inform the remote host that it should echo the users input. When a user then ran the command `@L 134`, short for `@login 134`, that caused the TIP to invoke the Initial Connection Protocol with host 134, which in turn would cause the remote host to allocate all the necessary resources for the connection and drop the user into a TELNET session. (The file transfer scenario I described may well have made use of the File Transfer Protocol, though that protocol was only ready shortly before the conference.[21][26]) All of these protocols were known as “level three” protocols, and below them were the host-to-host protocol at level two (which defined the basic format for the messages the hosts should expect from each other), and the host-to-IMP protocol at level one (which defined how hosts communicated with the routing equipment they were linked to). Incredibly, the protocols all worked.
In my view, the Network Working Group was able to get everything together in time and just generally excel at its task because it adopted an open and informal approach to standardization, as exemplified by the famous Request for Comments (RFC) series of documents. These documents, originally circulated among the members of the Network Working Group by snail mail, were a way of keeping in touch between meetings and soliciting feedback to ideas. The “Request for Comments” framing was suggested by Steve Crocker, who authored the first RFC and supervised the RFC mailing list in the early years, in an attempt to emphasize the open-ended and collaborative nature of what the group was trying to do. That framing, and the availability of the documents themselves, made the protocol design process into a melting pot of contributions and riffs on other peoples contributions where the best ideas could emerge without anyone losing face. The RFC process was a smashing success and is still used to specify internet standards today, half a century later.
Its this legacy of the Network Working Group that I think we should highlight when we talk about ARPANETs impact. Though today one of the most magical things about the internet is that it can connect us with people on the other side of the planet, its only slightly facetious to say that that technology has been with us since the 19th century. Physical distance was conquered well before the ARPANET by the telegraph. The kind of distance conquered by the ARPANET was instead the logical distance between the operating systems, character codes, programming languages, and organizational policies employed at each host site. Implementing the first packet-switched network was of course a major feat of engineering that should also be mentioned, but the problem of agreeing on standards to connect computers that had never been designed to play nice with each other was the harder of the two big problems involved in building the ARPANET—and its solution was the most miraculous part of the ARPANET story.
In 1981, ARPA issued a “Completion Report” reviewing the first decade of the ARPANETs history. In a section with the belabored title, “Technical Aspects of the Effort Which Were Successful and Aspects of the Effort Which Did Not Materialize as Originally Envisaged,” the authors wrote:
> Possibly the most difficult task undertaken in the development of the ARPANET was the attempt—which proved successful—to make a number of independent host computer systems of varying manufacture, and varying operating systems within a single manufactured type, communicate with each other despite their diverse characteristics.[22][27]
There you have it from no less a source than the federal government of the United States.
_If you enjoyed this post, more like it come out every four weeks! Follow [@TwoBitHistory][28] on Twitter or subscribe to the [RSS feed][29] to make sure you know when a new post is out._
_Previously on TwoBitHistory…_
> It's been too long, I know, but I finally got around to writing a new post. This one is about how REST APIs should really be known as FIOH APIs instead (Fuck It, Overload HTTP):<https://t.co/xjMZVZgsEz>
>
> — TwoBitHistory (@TwoBitHistory) [June 28, 2020][30]
1. “Hilton Hotel Opens in Capital Today.” _The New York Times_, 20 March 1965, <https://www.nytimes.com/1965/03/20/archives/hilton-hotel-opens-in-capital-today.html?searchResultPosition=1>. Accessed 7 Feb. 2021. [↩︎][31]
2. James Pelkey. _Entrepreneurial Capitalism and Innovation: A History of Computer Communications 1968-1988,_ Chapter 4, Section 12, 2007, <http://www.historyofcomputercommunications.info/Book/4/4.12-ICCC%20Demonstration71-72.html>. Accessed 7 Feb. 2021. [↩︎][32]
3. Katie Hafner and Matthew Lyon. _Where Wizards Stay Up Late: The Origins of the Internet_. New York, Simon &amp; Schuster, 1996, p. 178. [↩︎][33]
4. “International Conference on Computer Communication.” _Computer_, vol. 5, no. 4, 1972, p. c2, <https://www.computer.org/csdl/magazine/co/1972/04/01641562/13rRUxNmPIA>. Accessed 7 Feb. 2021. [↩︎][34]
5. “Program for the International Conference on Computer Communication.” _The Papers of Clay T. Whitehead_, Box 42, <https://d3so5znv45ku4h.cloudfront.net/Box+042/013_Speech-International+Conference+on+Computer+Communications,+Washington,+DC,+October+24,+1972.pdf>. Accessed 7 Feb. 2021. [↩︎][35]
6. Its actually not clear to me which room was used for the ARPANET demonstration. Lots of sources talk about a “ballroom,” but the Washington Hilton seems to consider the room with the name “Georgetown” more of a meeting room. So perhaps the demonstration was in the International Ballroom instead. But RFC 372 alludes to a booking of the “Georgetown Ballroom” for the demonstration. A floorplan of the Washington Hilton can be found [here][36]. [↩︎][37]
7. Hafner, p. 179. [↩︎][38]
8. ibid., p. 178. [↩︎][39]
9. Bob Metcalfe. “Scenarios for Using the ARPANET.” _Collections-Computer History Museum_, <https://www.computerhistory.org/collections/catalog/102784024>. Accessed 7 Feb. 2021. [↩︎][40]
10. Hafner, p. 176. [↩︎][41]
11. Robert H. Thomas. “Planning for ACCAT Remote Site Operations.” BBN Report No. 3677, October 1977, <https://apps.dtic.mil/sti/pdfs/ADA046366.pdf>. Accessed 7 Feb. 2021. [↩︎][42]
12. Hafner, p. 12. [↩︎][43]
13. Joy Lisi Rankin. _A Peoples History of Computing in the United States_. Cambridge, MA, Harvard University Press, 2018, p. 84. [↩︎][44]
14. Rankin, p. 93. [↩︎][45]
15. Steve Crocker. Personal interview. 17 Dec. 2020. [↩︎][46]
16. Crocker sent me the minutes for this meeting. The document lists everyone who attended. [↩︎][47]
17. Steve Crocker. Personal interview. [↩︎][48]
18. Hafner, p. 146. [↩︎][49]
19. “Completion Report / A History of the ARPANET: The First Decade.” BBN Report No. 4799, April 1981, <https://walden-family.com/bbn/arpanet-completion-report.pdf>, p. II-13. [↩︎][50]
20. Im referring here to RFC 54, “Official Protocol Proffering.” [↩︎][51]
21. Hafner, p. 175. [↩︎][52]
22. “Completion Report / A History of the ARPANET: The First Decade,” p. II-29. [↩︎][53]
--------------------------------------------------------------------------------
via: https://twobithistory.org/2021/02/07/arpanet.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]: https://en.wikipedia.org/wiki/ARPANET
[2]: tmp.pnPpRrCI3S#fn:1
[3]: tmp.pnPpRrCI3S#fn:2
[4]: tmp.pnPpRrCI3S#fn:3
[5]: tmp.pnPpRrCI3S#fn:4
[6]: tmp.pnPpRrCI3S#fn:5
[7]: tmp.pnPpRrCI3S#fn:6
[8]: tmp.pnPpRrCI3S#fn:7
[9]: tmp.pnPpRrCI3S#fn:8
[10]: https://archive.computerhistory.org/resources/access/text/2019/07/102784024-05-001-acc.pdf
[11]: tmp.pnPpRrCI3S#fn:9
[12]: tmp.pnPpRrCI3S#fn:10
[13]: tmp.pnPpRrCI3S#fn:11
[14]: tmp.pnPpRrCI3S#fn:12
[15]: tmp.pnPpRrCI3S#fn:13
[16]: tmp.pnPpRrCI3S#fn:14
[17]: https://twobithistory.org/2018/05/27/semantic-web.html
[18]: https://twobithistory.org/2018/12/18/rss.html
[19]: https://twobithistory.org/2020/01/05/foaf.html
[20]: tmp.pnPpRrCI3S#fn:15
[21]: tmp.pnPpRrCI3S#fn:16
[22]: tmp.pnPpRrCI3S#fn:17
[23]: tmp.pnPpRrCI3S#fn:18
[24]: tmp.pnPpRrCI3S#fn:19
[25]: tmp.pnPpRrCI3S#fn:20
[26]: tmp.pnPpRrCI3S#fn:21
[27]: tmp.pnPpRrCI3S#fn:22
[28]: https://twitter.com/TwoBitHistory
[29]: https://twobithistory.org/feed.xml
[30]: https://twitter.com/TwoBitHistory/status/1277259930555363329?ref_src=twsrc%5Etfw
[31]: tmp.pnPpRrCI3S#fnref:1
[32]: tmp.pnPpRrCI3S#fnref:2
[33]: tmp.pnPpRrCI3S#fnref:3
[34]: tmp.pnPpRrCI3S#fnref:4
[35]: tmp.pnPpRrCI3S#fnref:5
[36]: https://www3.hilton.com/resources/media/hi/DCAWHHH/en_US/pdf/DCAWH.Floorplans.Apr25.pdf
[37]: tmp.pnPpRrCI3S#fnref:6
[38]: tmp.pnPpRrCI3S#fnref:7
[39]: tmp.pnPpRrCI3S#fnref:8
[40]: tmp.pnPpRrCI3S#fnref:9
[41]: tmp.pnPpRrCI3S#fnref:10
[42]: tmp.pnPpRrCI3S#fnref:11
[43]: tmp.pnPpRrCI3S#fnref:12
[44]: tmp.pnPpRrCI3S#fnref:13
[45]: tmp.pnPpRrCI3S#fnref:14
[46]: tmp.pnPpRrCI3S#fnref:15
[47]: tmp.pnPpRrCI3S#fnref:16
[48]: tmp.pnPpRrCI3S#fnref:17
[49]: tmp.pnPpRrCI3S#fnref:18
[50]: tmp.pnPpRrCI3S#fnref:19
[51]: tmp.pnPpRrCI3S#fnref:20
[52]: tmp.pnPpRrCI3S#fnref:21
[53]: tmp.pnPpRrCI3S#fnref:22

View File

@ -0,0 +1,94 @@
[#]: subject: "I got my first pull request merged!"
[#]: via: "https://opensource.com/article/22/9/first-pull-request-merged"
[#]: author: "Oluwaseun https://opensource.com/users/jhhornn"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
I got my first pull request merged!
======
Experience the joy that contributing to open source brings.
![Dandelion zoomed in][1]
Image by: Photo by Rob Tiller, CC BY-SA 4.0
Words cannot express my joy when I got the notification about the merge below, and I owe it to my current engineering school, [AltSchool Africa][2].
![successful merge message][3]
Before this, I had been introduced to open source many times, told about its importance in the tech space, and even attended open source conferences (e.g., OSCAFest). I had all the instant excitement to start, but imposter syndrome set in on opening GitHub to create something.
Fast forward to Monday, the 8th of August, 2022, when I watched Bolaji's video on contributing to open source. I felt pumped again, but I wanted to apply what I learned, so I noted some steps.
The steps:
1. I made up my mind I was going to contribute to a project.
2. I was focused on a site ([good first issue][4]) to pick my first project from, which I filtered to suit my skill level. I kept opening the next page till I found one.
3. I made sure I was equipped with the required [Git and GitHub][5] knowledge to complete the project.
### The project
After long hours searching for projects, I finally found one titled, [Ensure no missing alt attributes][6]. I was to give descriptive alt values to images from the site. Alt values in images help to improve the accessibility of the site such that screen readers can provide a detailed description of the image to, say, a visually impaired person. Easy right? Yes, but if I didn't make up my mind to get the first contribution, I wouldn't find it, and open source would continue to be a myth to me.
I was still pumped until I discovered it was from [MDN][7]. Wait, MDN? As in Mozilla developer? Will they merge my contribution even with how seemingly easy it looks? [Imposter syndrome][8] set in.
Upon checking the issue, I saw that people were already contributing. I summoned my courage and started reading about it. Taking my time to read and understand the project and how I needed to approach the issue was another challenge I had to overcome.
The project is as easy as you try to understand it.
So, I picked two images to begin with. I gave alt values to them, committed my changes, then made a pull request. The time between when I made the pull request and when I got the approval mail was full of self-doubts. Should I close the pull request? This is MDN. Well, it's not coding... What if I don't get merged? I might never contribute again. All it took to clear all of the doubts were the emails I got from my reviewer below:
![Email of approved pull request][9]
![mail showing that pull request has been merged][10]
![congratulatory mail on contributing and merging of pull request][11]
I was indeed delighted, and this inspired me to check for more. It gave me the courage I needed to request additional issues to solve.
![Mail of issue assignment][12]
### Summary
A few lessons I'd love you to take home from this article are:
* Open source is for all. Do you see that typo on that site you just visited? You helping to correct it is a way of contributing.
* No skillset is too small. A basic understanding of HTML was what I needed to contribute.
* Only you can stop yourself from contributing.
* The first contribution is all you need to get the ball rolling.
I hope you have been able to pick something from my story and apply it today. This is another space I'd like to keep contributing to, so see you in my next article, and happy open sourcing!
*[This article originally appeared on I got my first Pull Request merged! and is republished with permission.][13]*
Image by: (Awosise Oluwaseun, CC BY-SA 4.0)
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/first-pull-request-merged
作者:[Oluwaseun][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/jhhornn
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/dandelion_zoom.jpg
[2]: https://www.altschoolafrica.com/
[3]: https://opensource.com/sites/default/files/2022-09/successfulmerge.png
[4]: https://goodfirstissues.com/
[5]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models
[6]: https://github.com/mdn/content/issues/19334
[7]: https://developer.mozilla.org/en-US/
[8]: https://opensource.com/article/20/9/imposter-syndrome
[9]: https://opensource.com/sites/default/files/2022-09/approved.png
[10]: https://opensource.com/sites/default/files/2022-09/merged_0.png
[11]: https://opensource.com/sites/default/files/2022-09/thanks.png
[12]: https://opensource.com/sites/default/files/2022-09/next.png
[13]: https://dev.to/jhhornn/i-got-my-first-pull-request-merged-3ei9

View File

@ -0,0 +1,85 @@
[#]: subject: "Security buzzwords to avoid and what to say instead"
[#]: via: "https://opensource.com/article/22/9/security-buzzword-alternatives"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Security buzzwords to avoid and what to say instead
======
Consider these thoughtful approaches to define what security really means in your open source project.
![Lock][1]
Image by: JanBaby, via Pixabay CC0.
Technology is a little famous for coming up with "buzzwords." Other industries do it, too, of course. "Story-driven" and "rules light" tabletop games are a big thing right now, "deconstructed" burgers and burritos are a big deal in fine dining. The problem with buzzwords in tech, though, is that they potentially actually affect your life. When somebody calls an application "secure," to influence you to use their product, there's an implicit promise being made. "Secure" must mean that something's secure. It's safe for you to use and trust. The problem is, the word "secure" can actually refer to any number of things, and the tech industry often uses it as such a general term that it becomes meaningless.
Because "secure" can mean both so much and so little, it's important to use the word "secure" carefully. In fact, it's often best not to use the word at all, and instead, just say what you actually mean.
### When "secure" means encrypted
Sometimes "secure" is imprecise shorthand for *encrypted*. In this context, "secure" refers to some degree of difficulty for outside observers to eavesdrop on your data.
**Don't say this:** "This website is resilient and secure."
That sounds pretty good! You're probably imagining a website that has several options for 2-factor authentication, zero-knowledge data storage, and steadfast anonymity policies.
**Say this instead:** "This website has a 99% uptime guarantee, and its traffic is encrypted and verifiable with SSL."
Not only is the intent of the promise clear now, it also explains how "secure" is achieved (it uses SSL) and what the scope of "secure" is.
Note that there's explicitly no promise here about privacy or anonymity.
### When "secure" means restricted access
Sometimes the term "secure" refers to application or device access. Without clarification, "secure" could mean anything from the useless *security by obscurity* model, to a simple htaccess password, to biometric scanners.
**Don't say this:** "We've secured the system for your protection."
**Say this instead:** "Our system uses 2-factor authentication."
### When "secure" means data storage
The term "secure" can also refer to the way your data is stored on a server or a device.
**Don't say this:** "This device stores your data with security in mind."
**Say this instead:** "This device uses full disk encryption to protect your data."
When remote storage is involved, "secure" may instead refer to who has access to stored data.
**Don't say this:** "Your data is secure."
**Say this instead:** "Your data is encrypted using PGP, and only you have the private key."
### When "secure" means privacy
These days, the term "privacy" is almost as broad and imprecise as "security." On one hand, you might think that "secure" must mean "private," but that's true only when "secure" has been defined. Is something private because it has a password barrier to entry? Or is something private because it's been encrypted and only you have the keys? Or is it private because the vendor storing your data knows nothing about you (aside from an IP address?) It's not enough to declare "privacy" any more than it is to declare "security" without qualification.
**Don't say this:** "Your data is secure with us."
**Say this instead:** "Your data is encrypted with PGP, and only you have the private key. We require no personal data from you, and can only identify you by your IP address."
Some sites make claims about how long IP addresses are retained in logs, and promises about never surrendering data to authorities without warrants, and so on. Those are beyond the scope of technological "security," and have everything to do with trust, so don't confuse them for technical specifications.
### Say what you mean
Technology is a complex topic with a lot of potential for confusion. Communication is important, and while shorthand and jargon can be useful in some settings, generally it's better to be precise. When you're proud of the "security" of your project, don't generalize it with a broad term. Make it clear to others what you're doing to protect your users, and make it equally clear what you consider out of scope, and communicate these things often. "Security" is a great feature, but it's a broad one, so don't be afraid to brag about the specifics.
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/security-buzzword-alternatives
作者:[Seth Kenlon][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/security-lock-password.jpg

View File

@ -0,0 +1,140 @@
[#]: 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: " "
[#]: 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,67 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (Veryzzj)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (How I prioritize tasks on my to-do list)
[#]: via: (https://opensource.com/article/21/1/prioritize-tasks)
[#]: author: (Kevin Sonney https://opensource.com/users/ksonney)
How I prioritize tasks on my to-do list
======
Use the Eisenhower Matrix to better organize and prioritize your to-do
lists.
![Team checklist and to dos][1]
In prior years, this annual series covered individual apps. This year, we are looking at all-in-one solutions in addition to strategies to help in 2021. Welcome to day 4 of 21 Days of Productivity in 2021. In this article, I'll examine a strategy for prioritizing tasks on a to-do list. To find the open source tool that suits your routine, check out [this list][2]. 
It is easy to add things to a task or to-do list. Almost too easy, really. And once on the list, the challenge becomes figuring out what to do first. Do we do the thing at the top of the list? Is the top of the list the most important thing? How do we figure out what the most important thing is?
![To-do list][3]
To-do. Today? Tomorrow? Who knows? (Kevin Sonney, [CC BY-SA 4.0][4])
[Much like email][5], we can prioritize tasks based on a couple of things, and this lets us figure out what needs to be done first and what can wait until later.
I use a method commonly known as the _Eisenhower Matrix_ since it was taken from a quote by US President Dwight D. Eisenhower. Draw a box split horizontally and vertically. Label the columns "Urgent" and "Not Urgent," and the rows "Important" and "Not Important."
![Eisenhower matrix][6]
An Eisenhower Matrix. (Kevin Sonney, [CC BY-SA 4.0][4])
You can typically put all of the things on a to-do list in one of the boxes. But how do we know what to put where? Urgency and importance are often subjective. So the first step is to decide what is important to you. My family (including my pets), my work, and my hobbies are all important. If something on my to-do list isn't related to those three things, I can immediately put it into the "Not Important" row.
Urgency is a little more cut and dry. Is it something that needs to be done today or tomorrow? Then it is probably "Urgent." Does it have a deadline that is approaching, but there are days/weeks/months until that time, or perhaps it doesn't have a deadline at all? Certainly "Not Urgent."
Now we can translate the boxes into priorities. "Urgent/Important" is the highest priority (i.e., Priority 1) and needs to be done first. "Not Urgent/Important" comes next (Priority 2), then "Urgent/Not Important" (Priority 3), and finally "Not Urgent/Not Important" (Priority 4 or no priority at all).
Notice that "Urgent/Not Important" is third, not second. This is because people spend a lot of time on things that are important because they are urgent, not because they are _actually_ important. When I look at these, I ask myself some questions. Are these tasks that need to be done by me specifically? Are these tasks I can ask other people to do? Are they important and urgent for someone else? Does that change their importance for me? Maybe they need to be re-classified, or perhaps they are things I can ask someone else to do and remove them from my list.
![After prioritizing][7]
After prioritizing. (Kevin Sonney, [CC BY-SA 4.0][4])
There is a single question to ask about the items in the "Not Urgent/Not Important" box, and that is "Do these need to even be on my list at all?" In all honesty, we often clog up our to-do lists with things that are not urgent or important, and we can remove them from our list altogether. I know it is hard to admit that "This is never going to get done," but after I accept that, it is a relief to take that item off my list and not worry about it anymore.
After all that, it is pretty easy to look at my list and say, "This is what I need to work on now," and get it done, which is what my to-do list is for: Providing guidance and focus to my day.
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/1/prioritize-tasks
作者:[Kevin Sonney][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/ksonney
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf (Team checklist and to dos)
[2]: https://opensource.com/article/20/5/alternatives-list
[3]: https://opensource.com/sites/default/files/pictures/to-do-list.png (To-do list)
[4]: https://creativecommons.org/licenses/by-sa/4.0/
[5]: https://opensource.com/article/21/1/email-rules
[6]: https://opensource.com/sites/default/files/pictures/eisenhower-matrix.png (Eisenhower matrix)
[7]: https://opensource.com/sites/default/files/pictures/after-prioritizing.png (After prioritizing)

View File

@ -2,7 +2,7 @@
[#]: via: "https://opensource.com/article/21/6/java-serverless-functions"
[#]: author: "Daniel Oh https://opensource.com/users/daniel-oh"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: translator: "cool-summer-021"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "

View File

@ -1,137 +0,0 @@
[#]: subject: "Rufus for Linux? Here Are the Best Live USB Creating Tools"
[#]: via: "https://itsfoss.com/live-usb-creator-linux/"
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
[#]: collector: "lkxed"
[#]: translator: "alfred-hong"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Rufus for Linux? Here Are the Best Live USB Creating Tools
======
Rufus is an open-source utility to create bootable USB drives. It is straightforward to use, with available options to tweak as per your requirements. Not just the ease of use, it is also incredibly fast to make bootable USB drives.
Unfortunately, Rufus is not available for Linux, it is only exclusive to Windows. So, most of us who have used it on Windows, look for Rufus alternatives on Linux.
If you are in the same boat, fret not, we have some excellent alternatives for various use-cases.
Let us explore some Rufus alternatives for Linux:
### 6 Best Live USB Creation Tools for Linux
All the options listed are entirely open-source and work perfectly fine with Linux distributions.
**Note:** *The list is in no particular order of ranking.*
#### 1. BalenaEtcher
![balena etcher 2022][1]
BalenaEtcher or Etcher is a good option for multiple platforms (Windows, macOS), including Linux users.
You do not get any advanced options here. Hence, it is pleasantly easy to use. Simply select the ISO (image file) and proceed to flash it on the target USB drive.
It is completely open-source and validates your drive after the process. Furthermore, it auto-selects connected USB drives to avoid choosing any hard disk if you accidentally wipe it.
You can refer to our [handy guide][2] to install it on Linux.
[BalenaEtcher][3]
#### 2. Fedora Media Writer
![fedora media writer][4]
Fedora Media Writer is particularly known to help you create live USB for Fedora Linux distribution. It can download the ISO file for you if you do not have it already.
It is also an excellent utility to fix your USB drive if you cannot format it for an issue caused by other bootable USB creation tools.
Fret not, you can also select a custom image (apart from Fedora Linux) to create a bootable USB.
You can find the [Flatpak][5] package on Flathub for the latest version on any Linux distribution. Refer to our [Flatpak guide][6] if youre new to this.
[Fedora Media Writer][7]
#### 3. Startup Disk Creator
![startup disk creator][8]
If you are using Ubuntu on your system, you already have a bootable USB creator pre-installed, i.e., Startup Disk Creator.
You can use it to select the desired ISO file (preferably any Ubuntu version) and choose the target USB device to proceed.
Once you confirm the action, it will proceed with writing the data to complete the bootable drive.
#### 4. SUSE Studio Imagewriter
![imagewriter suse][9]
SUSE Studio Imagewriter is a simple live USB creator.
I did not find it in the software center for Ubuntu, but it was available in the community repositories (Manjaro) and AUR. So, you can take a look at it if it is available for your Linux distribution.
[SUSE Studio Imagewriter][10]
#### 5. UNetbootin
![unetbootin][11]
UNetbootin is a live USB creator that supports Linux, Windows, and macOS. You get a few options to tweak, in case you want to explore all the available drives, and can also select a distribution to download the ISO file automatically.
It is not specific for any Linux distribution, unlike some options above. So, it supports a wide variety of distributions and system utilities.
[UNetbootin][12]
#### 6. Ventoy
![ventoy screenshot 2022][13]
Ventoy is an interesting bootable USB solution that lets you simply copy-paste the image to create a live USB drive.
You only have to install Ventoy to the USB drive, which makes two separate partitions. One of the partitions is used to store ISO images that you can simply paste into the USB drive to make it bootable.
Interestingly, you can also use it to [create multiboot USB][14].
It is available for Windows and Linux.
[Ventoy][15]
### Wrapping Up
Ventoy seems like an exciting choice among the options above if you need multiple Linux distributions on your USB drive without needing to repeatedly flash it.
For simplicity, distro-specific tools can be a good pick, like Startup Disk Creator for Ubuntu, and Fedora Image Writer for Fedora Linux.
SUSE Image Studio is an interesting option, but may not be the most convenient one.
If you do not have any specific preferences, BalenaEtcher should be a straightforward option, with UNetbootin as a suitable alternative to it.
What do you prefer to create a bootable USB drive? Let me know your thoughts in the comments below.
--------------------------------------------------------------------------------
via: https://itsfoss.com/live-usb-creator-linux/
作者:[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/06/balena-etcher-2022-800x537.png
[2]: https://itsfoss.com/install-etcher-linux/
[3]: https://www.balena.io/etcher/
[4]: https://itsfoss.com/wp-content/uploads/2022/06/fedora-media-writer.png
[5]: https://itsfoss.com/what-is-flatpak/
[6]: https://itsfoss.com/flatpak-guide/
[7]: https://flathub.org/apps/details/org.fedoraproject.MediaWriter
[8]: https://itsfoss.com/wp-content/uploads/2022/06/startup-disk-creator.png
[9]: https://itsfoss.com/wp-content/uploads/2022/06/imagewriter-suse.png
[10]: https://software.opensuse.org/package/imagewriter
[11]: https://itsfoss.com/wp-content/uploads/2022/06/unetbootin.png
[12]: https://unetbootin.github.io/
[13]: https://itsfoss.com/wp-content/uploads/2022/06/ventoy-screenshot-2022.png
[14]: https://itsfoss.com/multiple-linux-one-usb/
[15]: https://www.ventoy.net/

View File

@ -1,123 +0,0 @@
[#]: subject: "Komikku: A Free and Open-Source Manga Reader for Linux"
[#]: via: "https://itsfoss.com/komikku-manga-reader/"
[#]: author: "Anuj Sharma https://itsfoss.com/author/anuj/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Komikku: A Free and Open-Source Manga Reader for Linux
======
Love reading comic books? There are [plenty of comic book readers available for Linux][1].
But what about something tailored for Japanese comic books (Manga)?
I think I came across the perfect app suitable for reading Manga, organizing them, and downloading them for offline use as well. The app I discovered recently is called **Kommiku**.
Let me mention the key highlights of this app and help you get started with it on Linux.
### Komikku: A Linux-only Manga Reader
![Komikku UI][2]
Komikku is an open-source manga reader available as a Linux-only application.
Primarily, it is tailored to go well with the GNOME desktop environment, but you can use it on Linux distributions running [other desktop environments][3].
Many PDF or [E-book readers][4] like Bookworm, Calibre, and Foliate support the Comic book format.
However, Komikku users get more features to have a good experience for reading manga.
![Komikku online servers list][5]
For instance, Komikku can be used to view Manga online and offline. Furthermore, you can download it from supported servers.
### Features of Komikku
![komikku reader][6]
Some of the best functionalities of Komikku include:
* Online reading from dozens of supported servers.
* Offline reading of downloaded comics.
* Categories to organize your library.
* RTL, LTR, Vertical and Webtoon reading modes.
* Several types of navigation (Keyboard arrow keys, right and left navigation layout via mouse click or tapping (touchpad/touch screen), scroll wheel, and swipe gestures (touchpad and touchscreen).
* Automatic update of comics.
* Automatic download of new chapters.
* Reading history.
* Light and dark themes.
* Adaptive design (able to scale from desktop workstations to mobile phones).
* Keyboard shortcuts.
![Komikku compact view][7]
### Installation
Komikku is available on [Flathub][8]. So, you can get it installed on any Linux distribution.
However, you need to [set up Flatpak and enable Flathub repo on your system][9].
Once you have Flatpak set up on your system, you can search for it through the software center or install it from your terminal.
![Installing Komikku from GNOME Software][10]
To install Komikku using the terminal, type the following command
```
flatpak install flathub info.febvre.Komikku
```
Native packages for Komikku are also available for distributions like Arch Linux and Fedora. Here are the commands to get them installed:
For Arch Linux (available in AUR):
```
yay -Syu komikku
```
For Fedora (available in official repos):
```
sudo dnf install komikku
```
Check out Komikkus source code and the instructions to build it from the source on its [GitLab page][11]. Head to its official webpage to know more about it.
[Download Komikku][12]
### Conclusion
I found Komikku to be very intuitive and clean. Noted that the online servers do not always work, one can expect some hiccups, but managing offline comics and sorting your collection into categories is effortless.
All thanks to **Valéry Febvre**(developer of Komikku) we have another useful Linux app. You can consider donating to the project if you like the application.
*Which comic book reader do you use? Will you give Komikku a try? Kindly let me know your thoughts in the comments below.*
--------------------------------------------------------------------------------
via: https://itsfoss.com/komikku-manga-reader/
作者:[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/best-comic-book-reader-linux/
[2]: https://itsfoss.com/wp-content/uploads/2022/09/komikku-library.png
[3]: https://itsfoss.com/best-linux-desktop-environments/
[4]: https://itsfoss.com/best-ebook-readers-linux/
[5]: https://itsfoss.com/wp-content/uploads/2022/09/komikku-online-servers.png
[6]: https://itsfoss.com/wp-content/uploads/2022/09/komikku-reader.png
[7]: https://itsfoss.com/wp-content/uploads/2022/09/komikku-mobile-view.png
[8]: https://flathub.org/apps/details/info.febvre.Komikku
[9]: https://itsfoss.com/flatpak-guide/
[10]: https://itsfoss.com/wp-content/uploads/2022/09/install-komikku-gnome-software.png
[11]: https://gitlab.com/valos/Komikku
[12]: https://valos.gitlab.io/Komikku/

View File

@ -1,140 +0,0 @@
[#]: subject: "Connect to WiFi Using Terminal in Arch Linux and Other Distros"
[#]: via: "https://www.debugpoint.com/connect-wifi-terminal-linux/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Connect to WiFi Using Terminal in Arch Linux and Other Distros
======
This quick guide explains the steps you need to set up and connect to WiFi using a terminal in Arch Linux and other distros.
This guide is ideal for those scenarios where you are stuck with a terminal without any GUI, and no other wired internet connectivity is available. These steps help you to manually detect the wireless card, and device and connect to the WiFi hotspot with password authentication via terminal.
This guide uses [iwd][1] (Net Wireless Daemon) to connect to WiFi via a terminal.
### Connect to WiFi Using Terminal in Arch Linux and Other Distros
#### 1. Setup iwd
The `iwd` package comes with three main modules:
**iwctl** : The wireless client**iwd**: The Daemon**iwmon** : Monitoring tool
On the terminal type
```
iwctl
```
![iwctl Prompt][2]
If you get a command not found, then you need to download the package from [here][3].
So get help from any other system/laptop with an internet connection to download and install the package via mounting the USB.
Alternatively, if you have a USB dongle with the internet, then plugin that into your system. And install via the below commands.
The USB dongle should work out of the box in Arch and most Linux systems today to connect to the internet.
**Arch**
```
pacman -S iwd
```
**Debian, Ubuntu, and other similar distributions**
```
sudo apt-get install iwd
```
**Fedora**
```
sudo dnf install iwd
```
If you get an `iwctl` prompt (like below), then proceed to the next step.
#### 2. Configure
Run the below command to get your systems **wireless device name**.
```
device list
```
![iwctl device list][4]
To **get the list of WiFi networks**, run the below command. Replace `wlan0` with your device name on the below command and all the following commands.
```
station wlan0 get-networks
```
![iwctl available networks][5]
The command gives you the list of available WiFi network with security type and signal strength.
#### Connect
To **connect to the WiFi networ**k, run the below command with the WiFi access point name from the above “get-networks” command.
```
station wlan0 connect
```
Enter your WiFi password when prompted.
![connect to WiFi using iwctl][6]
If all, goes well you should be connected to the internet.
### Usage Guides
* You can check the connection using a simple ping command as follows. The ping replies successful packet transfers for a stable connection.
```
ping -c 3 google.com
```
* You can also check the status of the connection using the below command.
```
station wlan0 show
```
* The iwd keeps the configuration file at `/var/lib/iwd` as a `.psk` file with your access point name.
* This file contains a hash file that is generated using the password and SSID of your WiFi network.
* Press `CTRL+D` to leave from the `iwctl` prompt.
### Wrapping Up
I hope this guide helps you to connect to the internet via the terminal. This helps when you have no other way to connect to WiFi. For example, if you are installing Arch Linux in a stand-alone system (not a VM), you need to connect to the internet to download packages via a terminal using `pacman`.
If you face any trouble, mention the error messages in the comment box below.
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/connect-wifi-terminal-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://wiki.archlinux.org/index.php/Iwd
[2]: https://www.debugpoint.com/wp-content/uploads/2020/11/iwctl-Prompt.jpg
[3]: https://www.archlinux.org/packages/?name=iwd
[4]: https://www.debugpoint.com/wp-content/uploads/2020/11/iwctl-device-list-2.jpg
[5]: https://www.debugpoint.com/wp-content/uploads/2020/11/iwctl-available-networks.jpg
[6]: https://www.debugpoint.com/wp-content/uploads/2020/11/connect-to-WiFi-using-iwctl.jpg

View File

@ -1,89 +0,0 @@
[#]: subject: "3 steps to protect your home network"
[#]: via: "https://opensource.com/article/22/9/protect-home-network"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
3 steps to protect your home network
======
Who has access to your home network? With the Internet of Things (IoT) commonplace, there are sometimes more services running on your home network than you realize. Protect it from unwanted traffic.
The typical setup for Internet connectivity today is for your home to have a **router**, usually a little physical box located somewhere in your house, that acts as a gateway to the rest of the world. The router creates a local network, and you connect your devices to it, including your computer, mobile, TV, game console, and anything else that needs to connect to the Internet or to each other. It's deceptively easy to think of this setup as there being two "sides" of your router: On one side there's the Internet, and on the other, your devices. That's an awful colloquial, though, because in reality there's an entire worldwide *network of computers* on one side of your router, and your digital life on the other. When you use the Internet directly, you're logging onto a shared area of somebody else's computer. When you're not using the Internet, it doesn't go away, and there are lots of scripts and programs out there designed to visit millions upon millions of routers in an attempt to find open ports or services. With the Internet of Things (IoT) commonplace, there are sometimes more services running on your home network than you realize. Here are three steps you can take to audit and protect your home network from unwanted traffic.
### 1. Think about protocol
Part of your router's job is to keep the Internet separate from your home network. But when you access the Internet, you invite some portion of the Internet into your home. You're making an exception to the general rule that the Internet should stay off your network.
On many websites, what's allowed through your router is just text. When you visit your favorite blog site to read up on the latest tech news, for instance, you're downloading a page or two of text. You read the text, and then move on. That's a simple one-to-one transaction.
However, the HTTPS protocol is robust and the applications running on the Internet are full of variety. When you visit Opensource.com, for instance, you're not just downloading text. You get graphics, and maybe a cheat sheet or ebook. You're also downloading cookies in the background, which helps site administrators understand who visits the site, which has led to improved mobile support, a new design for greater accessibility, and content that readers enjoy. You may not think about cookies or traffic analysis as something you interact with when you're on the Internet, but it's something that gets "snuck" into page interactions because the HTTPS protocol is designed to be broad and, in many ways, high trust. When you visit a website over HTTPS (that is, in a web browser), you're implicitly agreeing to automatic downloads of files that you're probably not conscious of, but that you trust are useful and unobtrusive. For a model of file sharing designed for less trust, you might try the [Gemini][3] or [Gopher][4] space.
You make a similar agreement when you join a video conference. Not only are you downloading text on the page, cookies for traffic monitoring, but also a video and audio feed.
Some sites are designed for even more. There are sites designed to allow people to share their computer screen, and sometimes even the control of their computer. In the best case scenario, this helps a remote technician repair a problem on someone's computer, but in practice users can be tricked into visiting sites only to have financial credentials and personal data stolen.
You'd rightfully be suspicious if a website offering text articles required you to grant it permission to look through your webcam while you read. You should cultivate the same level of suspicion when an appliance requires Internet access. When you connect a device to your network, it's important to consider what implicit agreement you're making. A device designed to control lighting in your house shouldn't *require* Internet access to function, but many do, and many don't make it clear what permissions you're granting that device. Many IoT devices *want* access to the Internet so that you can access the device over the Internet while you're away from home. That's part of the appeal of a "smart home". However, it's impossible to know what code many of these devices run. When possible, use open source and trusted software, such as [Home Assistant][5] to interface with your living space.
### 2. Create a guest network
Many modern routers make it trivial to create a second network (usually called a "guest network" in the configuration panels) for your home. You probably don't feel like you need a second network, but actually a guest network can be useful to have around. Its eponymous and most obvious use case is that a guest network provides people visiting your house access to the Internet without you telling them your network password. In the foyer of my house, I have a sign identifying the guest network name and password. Anyone who visits can join that network for access to the Internet.
The other use case is for IoT, edge devices, and my home lab. When I purchased "programmable" Christmas lights last year, I was surprised to find that in order to connect to the lights, they had to be connected to the Internet. OF course, the $50 lights from a nameless factory didn't come with source code included, or any way to interface or inspect with the firmware embedded in the power brick, and so I wasn't confident in what I was agreeing to by connecting them to the Internet. They've been permanently relegated to my guest network.
Every router vendor is different, so there's no single instruction on how to create a "sandboxed" guest network on yours. Generally, you access your home router through a web browser. Your router's address is sometimes printed on the bottom of the router, and it begins with either 192.168 or 10.
Navigate to your router's address and log in with the credentials you were provided when you got your Internet service. It's often as simple as `admin` with a numeric password (sometimes, this password is printed on the router, too). If you don't know the login, call your Internet provider and ask for details.
In the graphical interface, find the panel for "Guest network." This option is in the **Advanced** configuration of my router, but it could be somewhere else on yours, and it may not even be called "Guest network" (or it may not even be an option.)
![Creating a guest network][7]
Image by: (Opensource.com, CC BY-SA 4.0)
It may take a lot of clicking around and reading. If you find that you have the option, then you can set up a guest network for visitors, including people walking through your front door and applications running on a lightbulb.
### 3. Firewall your firewall
Your router probably has a firewall running by default. A firewall keeps unwanted traffic off your network, usually by limiting incoming packets to HTTP and HTTPS (web browser traffic) and a few other utility protocols, and by rejecting traffic you didn't initiate. You can verify that a firewall is running by logging onto your router and looking for "Firewall" or "Security" settings.
However, many devices can run firewalls of there own. This is important because a network is a *network* because devices connect to one another. Placing firewalls "between" devices is like locking a door to a room inside your house. Guests may roam the halls, but without the right key they're not invited into your office.
On Linux, you can configure your firewall using [firewalld][8] interface and the [firewall-cmd][9] command. On other operating systems, the firewall is sometimes in a control panel labeled as "security" or "sharing" (and sometimes both.) Most default firewall settings allow only outgoing traffic (that's the traffic you initiate by, for instance, opening a browser and navigating to a website) and incoming traffic that's responding to your requests (that's the web data responding to your navigation). Incoming traffic that you didn't initiate is blocked.
You can customize this setup as needed, should you want to allow specific traffic, such as an [SSH connection][10], a [VNC connection][11], or a [game server][12] host.
### Monitor your network
These techniques help build up your awareness of what's happening around you. The next step is to [monitor your network][13]. You can start simple, for instance by running [Fail2ban][14] on a test server on your guest network. Take a look at logs, if your router provides them. You don't have to know everything about TCP/IP and packets and other advanced subjects to see that the Internet is a busy and noisy place, and seeing that for yourself is great inspiration to take precautions when you set up a new device, whether it's IoT, mobile, a desktop or laptop, a game console, or a [Raspberry Pi][15], in your home.
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/protect-home-network
作者:[Seth Kenlon][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/wfh_work_home_laptop_work.png
[2]: https://opensource.com/article/20/1/open-source-networking
[3]: https://opensource.com/article/20/10/gemini-internet-protocol
[4]: https://opensource.com/article/16/12/yearbook-compute-its-1989#gopher
[5]: https://opensource.com/article/20/12/home-assistant
[6]: https://opensource.com/article/20/11/wireless-protocol-home-automation
[7]: https://opensource.com/sites/default/files/2022-08/router-guest-network.jpg
[8]: https://opensource.com/article/19/7/make-linux-stronger-firewalls
[9]: https://www.redhat.com/sysadmin/secure-linux-network-firewall-cmd
[10]: https://www.redhat.com/sysadmin/access-remote-systems-ssh
[11]: https://www.redhat.com/sysadmin/accessing-remote-desktops
[12]: https://opensource.com/article/18/5/maptool
[13]: https://opensource.com/article/19/2/network-monitoring-tools
[14]: https://www.redhat.com/sysadmin/protect-systems-fail2ban
[15]: https://opensource.com/article/22/3/raspberry-pi-projects-2022

View File

@ -1,88 +0,0 @@
[#]: subject: "How I switched from Docker Desktop to Colima"
[#]: via: "https://opensource.com/article/22/9/docker-desktop-colima"
[#]: author: "Michael Anello https://opensource.com/users/ultimike"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
How I switched from Docker Desktop to Colima
======
Colima is a Docker Desktop alternative for macOS and Linux that's now supported by DDEV.
![Getting started with Perlbrew][1]
Image by: freephotocc via Pixabay CC0
[DDEV][2] is an open source tool that makes it simple to get local PHP development environments up and running within minutes. Its powerful and flexible as a result of its per-project environment configurations, which can be extended, version controlled, and shared. In short, DDEV aims to allow development teams to use containers in their workflow without the complexities of bespoke configuration.
DDEV replaces more traditional AMP stack solutions (WAMP, MAMP, XAMPP, and so on) with a flexible, modern, container-based solution. Because it uses containers, DDEV allows each project to use any set of applications, versions of web servers, database servers, search index servers, and other types of software.
In March 2022, the DDEV team [announced support for C][3][olima][4], an open source Docker Desktop replacement for macOS and Linux. [Colima][5] is open source, and by all reports its got [performance gains][6] over its alternative, so using Colima seems like a no-brainer.
### Migrating to Colima
First off, Colima is *almost* a drop-in replacement for Docker Desktop. I say *almost* because some reconfiguration is required when using it for an existing DDEV project. Specifically, databases must be reimported. The fix is to first export your database, then start Colima, then import it. Easy.
Colima requires that either the Docker or [Podman][7] command is installed. On Linux, it also requires Lima.
Docker is installed by default with Docker Desktop for macOS, but its also available as a stand-alone command. If you want to go 100% pure Colima, you can uninstall Docker Desktop for macOS, and install and configure the Docker client independently. [Full installation instructions can be found on the DDEV docs site][8].
![An image of the container technology stack.][9]
Image by: (Mike Anello,CC BY-SA 4.0)
If you choose to keep using both Colima and Docker Desktop, then when issuing docker commands from the command line, you must first specify which container you want to work with. More on this in the next section.
### Install Colima on macOS
I currently have some local projects using Docker, and some using Colima. Once I understood the basics, its not too difficult to switch between them.
1. To get started, install Colima using Homebrew `brew install colima`
2. ddev poweroff (just to be safe)
3. Next, start Colima with `colima start `--cpu` 4 `--memory` 4.` The --cpu and --memory options only have to be done once. After the first time, only `colima start` is necessary.
4. If youre a DDEV user like me, then you can spin up a fresh Drupal 9 site with the usual `ddev` commands (ddev config, ddev start, and so on.) Its recommended to enable DDEVs mutagen functionality to maximize performance.
### Switching between a Colima and Docker Desktop
If youre not ready to switch to Colima wholesale yet, its possible to have both Colima and Docker Desktop installed.
1. First, poweroff ddev:ddev poweroff
2. Then stop Colima: `colima stop`
3. Now run `docker context use `default`` to tell the Docker client which container you want to work with. The name default refers to Docker Desktop for Mac. When `colima start` is run, it automatically switches Docker to the `colima` context.
4. To continue with the default (Docker Desktop) context, use the `ddev start` command.
Technically, starting and stopping Colima isnt necessary, but the `ddev poweroff` command when switching between two contexts is.
Recent versions of Colima revert the Docker context back to `default` when Colima is stopped, so the `docker context use default` command is no longer necessary. Regardless, I still use `docker context show` to verify that either the `default` (Docker Desktop for Mac) or `colima` context is in use. Basically, the term `context` refers to which container provider the Docker client routes commands to.
### Try Colima
Overall, Im liking what I see so far. I havent run into any issues, and Colima-based sites seem a bit snappier (especially when DDEVs Mutagen functionality is enabled). I definitely foresee myself migrating project sites to Colima over the next few weeks.
*This article originally appeared on the* [DrupalEasy blog][10] *and is republished with permission.*
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/docker-desktop-colima
作者:[Michael Anello][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/ultimike
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/coffee_cafe_brew_laptop_desktop.jpg
[2]: https://github.com/drud/ddev
[3]: https://ddev.com/ddev-local/docker-desktop-alternatives-arrive-for-ddev-colima/
[4]: https://ddev.com/ddev-local/docker-desktop-alternatives-arrive-for-ddev-colima/
[5]: https://github.com/abiosoft/colima
[6]: https://ddev.com/ddev-local/docker-desktop-and-colima-benchmarking-on-macos/
[7]: https://opensource.com/article/22/2/start-running-containers
[8]: https://ddev.readthedocs.io/en/stable/users/docker_installation/#macos-installation-colima
[9]: https://opensource.com/sites/default/files/2022-09/docker-desktop-colima.png
[10]: https://www.drupaleasy.com/news

View File

@ -2,7 +2,7 @@
[#]: via: "https://ostechnix.com/prevent-command-arguments-with-sudo/"
[#]: author: "sk https://ostechnix.com/author/sk/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: translator: "Donkey-Hao"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
@ -94,7 +94,7 @@ via: https://ostechnix.com/prevent-command-arguments-with-sudo/
作者:[sk][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
译者:[Donkey-Hao](https://github.com/Donkey-Hao)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -0,0 +1,323 @@
[#]: subject: "How To Find Default Gateway IP Address In Linux And Unix From Commandline"
[#]: via: "https://ostechnix.com/find-default-gateway-linux/"
[#]: author: "sk https://ostechnix.com/author/sk/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
How To Find Default Gateway IP Address In Linux And Unix From Commandline
======
5 Ways To Find Gateway Or Router IP Address In Linux
A **gateway** is a node or a router that allows two or more hosts with different IP addresses to communicate with each other when connected to the same router. Without gateway, devices connected on the same router wont be able to communicate with each other. To put this another way, the gateway acts as an access point to pass network data from a local network to a remote network. In this guide, we will see all the possible ways to **find default gateway in Linux** and **Unix** from commandline.
#### Contents
1. Find Default Gateway In Linux 2. 1. Find Default Gateway Using ip Command 3. 2. Display Default Gateway IP Address Using route Command 4. 3. View Gateway IP Address Using netstat Command 5. 4. Print Default Gateway IP Address Or Router IP Address Using routel Command 6. 5. Find Gateway From Ethernet Configuration Files
7. Conclusion
### Find Default Gateway In Linux
There are various commandline tools are available to view the gateway IP address in Linux. The most commonly used tools are: **ip**, **ss**, and **netcat**. We will see how check the default gateway using each tool with examples.
#### 1. Find Default Gateway Using ip Command
The **ip** command is used to show and manipulate routing, network devices, interfaces and tunnels in Linux.
To find the default gateway or Router IP address, simply run:
```
$ ip route
```
Or,
```
$ ip r
```
Or,
```
$ ip route show
```
**Sample output:**
```
default via 192.168.1.101 dev eth0 proto static metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.20 metric 100
```
Did you see the line **"default via 192.168.1.101"** in the above output? This is the default gateway. So my default gateway is **192.168.1.101**.
You can use **-4** with `ip route` command to **display the IPv4 gateway** only:
```
$ ip -4 route
```
And, use `-6` to **display the IPv6 gateway** only:
```
$ ip -6 route
```
As you noticed in the output, the IP address and the subnet details are also shown. If you want to display ONLY the default gateway and exclude all other details from the output, you can use `awk` command with `ip route` like below.
To find the default gateway IP address using `ip route` and `grep`, run:
To print Gateway IP address with `ip route` and `awk` commands, run:
```
$ ip route | awk '/^default/{print $3}'
```
Or,
```
$ ip route show default | awk '{print $3}'
```
This will list only the gateway.
**Sample output:**
```
192.168.1.101
```
![Find Default Gateway Using ip Command][1]
You can also use **[grep][2]** command with `ip route` to filter the default gateway.
```
$ ip route | grep default
default via 192.168.1.101 dev eth0 proto static metric 100
```
The `ip route` is the recommended command to find the default gateway IP address in latest Linux distributions. However, some of you may still be using the legacy tools like **route** and `netstat`. Old habits die hard, right? The following sections explains how to determine the gateway in Linux using `route` and `netstat` commands.
#### 2. Display Default Gateway IP Address Using route Command
The **route** command is used to show and manipulate routing table in older Linux distributions, for example RHEL 6, CentOS 6.
If you're using those older Linux distributions, you can use the `route` command to display the default gateway.
Please note that the `route` tool is deprecated and replaced with `ip route` command in the latest Linux distributions. If you still want to use `route` for any reason, you need to install it.
First, we need to check which package provides `route` command. To do so, run the following command on your RHEL-based system:
```
$ dnf provides route
```
**Sample output:**
```
net-tools-2.0-0.52.20160912git.el8.x86_64 : Basic networking tools
Repo : @System
Matched from:
Filename : /usr/sbin/route
net-tools-2.0-0.52.20160912git.el8.x86_64 : Basic networking tools
Repo : baseos
Matched from:
Filename : /usr/sbin/route
```
As you can see in the above output, the net-tools package provides the `route` command. So, let us install it using command:
```
$ sudo dnf install net-tools
```
Now, run `route` command with `-n` flag to display the gateway IP address or router IP address in your Linux system:
```
$ route -n
```
**Sample output:**
```
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.101 0.0.0.0 UG 100 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
```
![Display Default Gateway IP Address Using route Command][3]
As you see in the above output, the gateway IP address is 192.168.1.101. You will also see the two letters **"UG"** under Flags section. The letter **"U"** indicates the interface is **UP** and **G** stands for Gateway.
#### 3. View Gateway IP Address Using netstat Command
**Netstat** prints information about the Linux networking subsystem. Using netstat tool, we can print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships in Linux and Unix systems.
Netstat is part of net-tools package, so make sure you've installed it in your Linux system. The following commands install net-tools package in RHEL-based systems:
```
$ sudo dnf install net-tools
```
To print the default gateway IP address using `netstat` command, run:
```
$ netstat -rn
```
**Sample output:**
```
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.101 0.0.0.0 UG 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
```
![View Gateway IP Address Using netstat Command][4]
The `netstat` command's output is same as `route` command's output. As per the above output, the gateway IP address is 192.168.1.101 and the UG stands the NIC associated to gateway is UP and G indicates Gateway,
Please note that `netstat` is also deprecated and it is recommended to use **"ss"** command instead of netstat.
#### 4. Print Default Gateway IP Address Or Router IP Address Using routel Command
The **routel** is a script to list routes with pretty output format. The routel script will list routes in a format that some might consider easier to interpret then the `ip route` list equivalent.
The routel script is also the part of net-tools package.
To print the default gateway or router IP address, run routel script without any flags like below:
```
$ routel
```
**Sample output:**
```
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
127.0.0.0/ 8 local 127.0.0.1 kernel host lo local
127.0.0.1 local 127.0.0.1 kernel host lo local
127.255.255.255 broadcast 127.0.0.1 kernel link lo local
172.17.0.1 local 172.17.0.1 kernel hostdocker0 local
172.17.255.255 broadcast 172.17.0.1 kernel linkdocker0 local
192.168.1.20 local 192.168.1.20 kernel host eth0 local
192.168.1.255 broadcast 192.168.1.20 kernel link eth0 local
::1 kernel lo
::/ 96 unreachable lo
::ffff:0.0.0.0/ 96 unreachable lo
2002:a00::/ 24 unreachable lo
2002:7f00::/ 24 unreachable lo
2002:a9fe::/ 32 unreachable lo
2002:ac10::/ 28 unreachable lo
2002:c0a8::/ 32 unreachable lo
2002:e000::/ 19 unreachable lo
3ffe:ffff::/ 32 unreachable lo
fe80::/ 64 kernel eth0
::1 local kernel lo local
fe80::d085:cff:fec7:c1c3 local kernel eth0 local
```
![Print Default Gateway IP Address Or Router IP Address Using routel Command][5]
To print only the default gateway, run routel with `grep` like below:
```
$ routel | grep default
default 192.168.1.101 static eth0
```
#### 5. Find Gateway From Ethernet Configuration Files
If you have **[configured static IP address in your Linux or Unix][6]** system, you can view the default gateway or router IP address by looking at the network configuration files.
In RPM-based systems like Fedora, RHEL, CentOS, AlmaLinux and Rocky Linux, the network interface card (shortly **NIC**) configuration are stored under **/etc/sysconfig/network-scripts/** directory.
Find the name of the network card:
```
# ip link show
```
**Sample output:**
```
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether d2:85:0c:c7:c1:c3 brd ff:ff:ff:ff:ff:ff link-netnsid 0
```
The network card name is **eth0**. So let us open the network card configuration of this NIC card file:
```
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
```
**Sample output:**
```
DEVICE=eth0
ONBOOT=yes
UUID=eb6b6a7c-37f5-11ed-a59a-a0e70bdf3dfb
BOOTPROTO=none
IPADDR=192.168.1.20
NETMASK=255.255.255.0
GATEWAY=192.168.1.101
DNS1=8.8.8.8
```
As you see above, the gateway IP is `192.168.1.101`.
In Debian, Ubuntu and its derivatives, all network configuration files are stored under **/etc/network/** directory.
```
$ cat /etc/network/interfaces
```
**Sample output:**
```
auto ens18
iface ens18 inet static
address 192.168.1.150
netmask 255.255.255.0
gateway 192.168.1.101
dns-nameservers 8.8.8.8
```
Please note that this method should work only if the IP address is configured manually. For DHCP-enabled network, you need to follow the previous 4 methods.
### Conclusion
In this guide, we listed 5 different ways to find default gateway in Linux and Unix operating systems. We also have included sample commands to display the gateway/router IP address in each method. Hope this helps.
--------------------------------------------------------------------------------
via: https://ostechnix.com/find-default-gateway-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/09/Find-Default-Gateway-Using-ip-Command.png
[2]: https://ostechnix.com/the-grep-command-tutorial-with-examples-for-beginners/
[3]: https://ostechnix.com/wp-content/uploads/2022/09/Display-Default-Gateway-IP-Address-Using-route-Command.png
[4]: https://ostechnix.com/wp-content/uploads/2022/09/View-Gateway-IP-Address-Using-netstat-Command.png
[5]: https://ostechnix.com/wp-content/uploads/2022/09/Print-Default-Gateway-IP-Address-Or-Router-IP-Address-Using-routel-Command.png
[6]: https://ostechnix.com/configure-static-ip-address-linux-unix/

View File

@ -0,0 +1,190 @@
[#]: subject: "How to Install Cockpit Web Console on Ubuntu 22.04"
[#]: via: "https://www.linuxtechi.com/how-to-install-cockpit-on-ubuntu/"
[#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
How to Install Cockpit Web Console on Ubuntu 22.04
======
In this guide, we examine how to install Cockpit on Ubuntu 22.04 LTS (Jammy Jellyfish) step-by-step.
Cockpit is a free and opensource web-based graphical server management tool that allows administrators and Linux users to easily manage and configure their Linux servers/PCs from a browser. It targets new Linux users or those who want an easy way to manage their servers on a graphical interface without the hassle of working on the command-line.
Cockpit is easy to install and simple to use. At a glance, it allows you to perform the following tasks.
* Keep tabs of system metrics and performance
* Create and manage users
* Browse and search system logs
* Inspect and interact with systemd-based services
* Access the terminal and run commands
* Inspect systems hardware
* Create and manage virtual machines
* Upgrade software packages to their latest versions
* Configure Firewall & and many more.
### 1) Update Local Package Index
To start off, log into your server and refresh the local package index as follows.
```
$ sudo apt update
```
### 2) Install Cockpit Web Console
The Cockpit web console packages are provided by the official Ubuntu repositories. You can verify this by running the following command.
```
$ apt search cockpit
```
So, install Cockpit using the APT package manager as shown.
```
$ sudo apt install cockpit -y
```
The command installs the Cockpit web console alongside other additional packages, libraries, and dependencies.
![Apt-Command-Install-Cockpit-Ubuntu-22-04][1]
Once installed, you can verify if cockpit is installed by running the following command:
```
$ apt -qq list cockpit
OR
$ dpkg -l cockpit
```
From the output below, we can see that Cockpit version 264-1 has been installed.
![Check-Cockpit-WebConsole-Version-Ubuntu][2]
In case, you planning to manage kvm virtual machines with cockpit then install following package
```
$ sudo apt install cockpit-machines -y
```
### 3) Install Cockpit Support for Podman
By default, Cockpit does not provide support for podman. If you wish to administer and manage podman containers using Cockpit, install the cockpit-podman package which provides support for podman.
```
$ sudo apt install cockpit-podman y
```
![Install-Cockpit-Podman-Support-Ubuntu-22-04][3]
### 4) Start Cockpit Web Console Service
Unlike other services or daemons, Cockpit does not start automatically once installed. Therefore, start the Cockpit systemd service as shown.
```
$ sudo systemctl start cockpit
```
Next, verify that the Cockpit service is running as follows.
```
$ sudo systemctl status cockpit
```
The output confirms that the Cockpit service is up and running.
![Cockpit-Service-Status-Ubuntu-22-04][4]
Cockpit listens on TCP port 9090. You can verify this is the case by running the following ss command.
```
$ ss -tunlpe | grep cockpit
```
![Socket-Connection-Cockpit-Ubuntu-22-04][5]
If the firewall is enabled on your Ubuntu 22.04 system, then allow 9090/tcp port so its web console can be accessed from outside
```
$ sudo ufw allow 9090/tcp
$ sudo ufw reload
```
![Allow-cockpit-console-port-ubuntu-22-04][6]
### 5) Access Cockpit Web Console
Cockpit is now fully installed and the only thing remaining is to access it and use it to manage your server.
To access Cockpit Web console, browse the following address.
https://server-ip:9090
You will get a warning that the website you are accessing is not private and that you could fall victim to hackers. Do not fret, as this happens since the server is encrypted by a self-signed SSL certificate which is not recognized by CA.
To get around this issue, simply click Advanced
![Cockpit-WebConsole-URL-Ubuntu-22-04][7]
Then click on Proceed to server-ip link.
![Accept-Certificate-Cockpit-WebConsole][8]
Thereafter, the following login page will appear. Be sure to provide your username and password and click Log In.
![Cockpit-Login-Page-Ubuntu-22-04][9]
This ushers you to the Cockpit dashboard. The Overview page provides your systems metrics at a glance. You will see details on CPU and memory usage, health status, and system information.
To perform the administrative task, click on Turn on administrative access, it will prompt you to enter your users password.
The left sidebar provides various options that you can view.
![Cockpit-Dashboard-Ubuntu-22-04][10]
For example, you can click on Networking to view information about bandwidth statistics, network interfaces as well as network logs.
![View-Network-Statistics-from-Cockpit-WebConsole][11]
You can also click Services to get information about all the system services.
![System-Services-Status-Cockpit-WebConsole-Ubuntu-22-04][12]
To view and install software updates, click on Software Updates
![Software-Updates-Cockpit-WebConsole-Ubuntu-22-04][13]
In my case all the software updates are already installed, thats why I am getting the status as System is up to date
##### Conclusion
And thats it. In this guide, we have successfully installed Cockpit on Ubuntu 22.04. All the best as you enjoy managing your system.
--------------------------------------------------------------------------------
via: https://www.linuxtechi.com/how-to-install-cockpit-on-ubuntu/
作者:[Pradeep Kumar][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.linuxtechi.com/author/pradeep/
[b]: https://github.com/lkxed
[1]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Apt-Command-Install-Cockpit-Ubuntu-22-04.png
[2]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Check-Cockpit-WebConsole-Version-Ubuntu.png
[3]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Install-Cockpit-Podman-Support-Ubuntu-22-04.png
[4]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Cockpit-Service-Status-Ubuntu-22-04.png
[5]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Socket-Connection-Cockpit-Ubuntu-22-04.png
[6]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Allow-cockpit-console-port-ubuntu-22-04.png
[7]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Cockpit-WebConsole-URL-Ubuntu-22-04.png
[8]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Accept-Certificate-Cockpit-WebConsole.png
[9]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Cockpit-Login-Page-Ubuntu-22-04.png
[10]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Cockpit-Dashboard-Ubuntu-22-04.png
[11]: https://www.linuxtechi.com/wp-content/uploads/2022/09/View-Network-Statistics-from-Cockpit-WebConsole.png
[12]: https://www.linuxtechi.com/wp-content/uploads/2022/09/System-Services-Status-Cockpit-WebConsole-Ubuntu-22-04.png
[13]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Software-Updates-Cockpit-WebConsole-Ubuntu-22-04.png

View File

@ -0,0 +1,185 @@
[#]: subject: "PyLint: The good, the bad, and the ugly"
[#]: via: "https://opensource.com/article/22/9/pylint-good-bad-ugly"
[#]: author: "Moshe Zadka https://opensource.com/users/moshez"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
PyLint: The good, the bad, and the ugly
======
Get the most out of PyLint.
![Python programming language logo with question marks][1]
Image by: Opensource.com
Hot take: PyLint is actually good!
"PyLint can save your life" is an exaggeration, but not as much as you might think! PyLint can keep you from really really hard to find and complicated bugs. At worst, it can save you the time of a test run. At best, it can help you avoid complicated production mistakes.
### The good
I'm embarrassed to say how common this can be. Naming tests is perpetually *weird*: Nothing cares about the name, and there's often not a natural name to be found. For instance, look at this code:
```
def test_add_small():
    # Math, am I right?
    assert 1 + 1 == 3
   
def test_add_large():
    assert 5 + 6 == 11
   
def test_add_small():
    assert 1 + 10 == 11
```
The test works:
```
collected 2 items                                                                        
test.py ..
2 passed
```
In reality, these files can be hundreds of lines long, and the person adding the new test might not be aware of all the names. Unless someone is looking at test output carefully, everything looks fine.
Worst of all, the *addition of the overriding test*, the *breakage of the overridden test*, and the *problem that results in prod* might be separated by days, months, or even years.
### PyLint finds it
But like a good friend, PyLint is there for you.
```
test.py:8:0: E0102: function already defined line 1
     (function-redefined)
```
### The bad
Like a 90s sitcom, the more you get into PyLint, the more it becomes problematic. This is completely reasonable code for an inventory modeling program:
```
"""Inventory abstractions"""
import attrs
@attrs.define
class Laptop:
    """A laptop"""
    ident: str
    cpu: str
```
It seems that PyLint has opinions (probably formed in the 90s) and is not afraid to state them as facts:
```
$ pylint laptop.py | sed -n '/^laptop/s/[^ ]*: //p'
R0903: Too few public methods (0/2) (too-few-public-methods)
```
### The ugly
Ever wanted to add your own unvetted opinion to a tool used by millions? PyLint has 12 million monthly downloads.
> "People will just disable the whole check if it's too picky." —PyLint issue 6987, July 3rd, 2022
The attitude it takes towards adding a test with potentially many false positives is...*"eh."*
### Making it work for you
PyLint is fine, but you need to interact with it carefully. Here are the three things I recommend to make PyLint work for you.
#### 1. Pin it
Pin the PyLint version you use to avoid any surprises!
In your `.toml` file:
```
[project.optional-dependencies]
pylint = ["pylint"]
```
In your code:
```
from unittest import mock
```
This corresponds with code like this:
```
# noxfile.py
...
@nox.session(python=VERSIONS[-1])
def refresh_deps(session):
    """Refresh the requirements-*.txt files"""
    session.install("pip-tools")
    for deps in [..., "pylint"]:
        session.run(
            "pip-compile",
            "--extra",
            deps,
            "pyproject.toml",
            "--output-file",
            f"requirements-{deps}.txt",
        )
```
#### 2. Default deny
Disable all checks. Then enable ones that you think have a high value-to-false-positive ratio. (Not just false-negative-to-false-positive ratio!)
```
# noxfile.py
...
@nox.session(python="3.10")
def lint(session):
    files = ["src/", "noxfile.py"]
    session.install("-r", "requirements-pylint.txt")
    session.install("-e", ".")
    session.run(
        "pylint",
        "--disable=all",
        *(f"--enable={checker}" for checker in checkers)
        "src",
    )
```
#### 3. Checkers
These are some of the ones I like. Enforce consistency in the project, avoid some obvious mistakes.
```
checkers = [
    "missing-class-docstring",
    "missing-function-docstring",
    "missing-module-docstring",
    "function-redefined",
]
```
### Using PyLint
You can take just the good parts of PyLint. Run it in CI to keep consistency, and use the highest value checkers.
Lose the bad parts: Default deny checkers.
Avoid the ugly parts: Pin the version to avoid surprises.
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/pylint-good-bad-ugly
作者:[Moshe Zadka][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/moshez
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/python_programming_question.png

View File

@ -0,0 +1,96 @@
[#]: subject: "6 Python interpreters to try in 2022"
[#]: via: "https://opensource.com/article/22/9/python-interpreters-2022"
[#]: author: "Stephan Avenwedde https://opensource.com/users/hansic99"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
6 Python interpreters to try in 2022
======
It could be interesting to see how your code behaves on another interpreter than what you're used to.
![Hands on a keyboard with a Python book][1]
Image by: WOCinTech Chat. Modified by Opensource.com. CC BY-SA 4.0
Python, one of the most popular programming languages, requires an interpreter to execute the instructions defined by the Python code. In contrast to other languages, which compile directly into machine code, its up to the interpreter to read Python code and translate its instructions for the CPU performing the related actions. There are several interpreters out there, and in this article, Ill take a look at a few of them.
### Primer to interpreters
When talking about the Python interpreter, its usually the `/usr/bin/python` binary being referred to. That lets you execute a `.py` file.
However, interpreting is just one task. Before a line of Python code is actually executed on the CPU, these four steps are involved:
1. Lexing - The human-made source code is converted into a sequence of logical entities, the so called lexical tokens.
2. Parsing - In the parser, the lexical tokens are checked in regards of syntax and grammar. The output of the parser is an abstract syntax tree (AST).
3. Compiling - Based on the AST, the compiler creates Python bytecode. The bytecode consists of very basic, platform independent instructions.
4. Interpreting - The interpreter takes the bytecode and performs the specified operations.
As you can see, a lot of steps are required before any real action is taken. It makes sense to take a closer look at the different interpreters.
### 1. CPython
[CPython][2] is the reference implementation of Python and the default on many systems. As the name suggests, CPython is written in C.
As a result, it is possible to [write extensions in C][3] and therefore make the widley used C based library code available to Python. CPython is available on a wide range of platforms including ARM, iOS, and RISC. However, as the reference implementation of the language, CPython is carefully optimized and not focused on speed.
### 2. Pyston
[Pyston][4] is a fork of the CPython interpreter which implements performance optimizations. The project describes itself as a replacement of the standard CPython interpreter for large, real-world applications with a speedup potential up to 30%. Due to the lack of compatible binary packages, Pyston packages must be recompiled during the download process.
### 3. PyPy
[PyPy][5] is a [Just-in-time (JIT)][6] compiler for Python which is written in RPython, a statically typed subset of Python. In contrast to the CPython interpreter, PyPy compiles to machine code which can be directly executed by the CPU. PyPy is the playground for Python developers where they can experiment with new features more easily.
PyPy is faster than the reference CPython implementation. Because of the nature of JIT compiler, only applications that have been running for a long time benefit from caching.  PyPy can act as a replacement for CPython. There is a drawback, though. C-extension modules are mostly supported, but they run slower than a Python one. PyPy extension modules are written in Python (not C) and so the JIT compiler is able to optimized them. As long as your application isn't dependent on incompatible modules, PyPy is a great replacement for CPython. There is a dedicated page on the project website which describes the differences to CPython in detail: [Diffrences between PyPy and CPython][7]
### 4. RustPython
As the name suggest, [RustPython][8] is a Python interpreter written in Rust. Although the Rust programming language is quite new, it has been gaining popularity and is a candidate to be a successor of C and C++. By default, RustPython behaves like the interpreter of CPython but it also has a JIT compiler which can be enabled optionally. Another nice feature is that the Rust toolchain allows you to directly compile to [WebAssembly][9] and also allows you to run the interpreter completely in the browser. A demo of it can be found at [rustpython.github.com/demo][10].
### 5. Stackless Python
[Stackless Python][11] describes itself as an enhanced version of the Python programming language. The project is basically a fork of the CPython interpreter which adds microthreads, channels and a scheduler to the language. Microthreads allow you to structure your code into tasklets which let you run your code in parallel. This approach is comparable to using green threads of the [greenlet][12] module. Channels can be used for bidirectional communication between tasklets. A famous user of Stackless Python is the MMORPG [Eve Online][13].
### 6. Micro Python
[MicroPython][14] is the way to go if you target micro controllers. It is a lean implementation that only requires 16kB of RAM and 256kB of space. Due to the embedded environment which it is intended for, MicroPythons standard library is only a subset of CPythons extensive STL. For developing and testing or as a lightweight alternative, MicroPython also runs on ordinary x86 and x64 machines. MicroPython is available for Linux, Windows, as well as many microcontrollers.
### Performance
By design, Python is an inherently slow language. Depending on the task, there are significant performance differences between the interpreters. To get an overview of which interpreter is the best pick for a certain task, refer to [pybenchmarks.org][15]. An alternative to using an interpreter is to compile Python binary code directly into machine code. [Nuitka][16], for example, is one of those projects which can compile Python code to C code and from C to machine code. The C code is then compiled to machine code using an ordinary C compiler. The topic of Python compilers is quite comprehensive and worth a separate article.
### Summary
Python is a wonderful language for rapid prototyping and automating tasks. Additionally, it is easy to learn and well suited for beginners. If you usually stick with CPython, it could be interesting to see how your code behaves on another interpreter. If you use Fedora, you can easily test a few other interpreters as the package manager already provides the right binaries. Check out [fedora.developer.org][17] for more information.
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/python-interpreters-2022
作者:[Stephan Avenwedde][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/hansic99
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/python-programming-code-keyboard.png
[2]: https://github.com/python/cpython#general-information
[3]: https://opensource.com/article/21/4/cython
[4]: https://github.com/pyston/pyston
[5]: https://foss.heptapod.net/pypy/pypy
[6]: https://en.wikipedia.org/wiki/Just-in-time_compilation
[7]: https://doc.pypy.org/en/latest/cpython_differences.html
[8]: https://github.com/RustPython/RustPython
[9]: https://opensource.com/article/21/3/webassembly-firefox
[10]: https://rustpython.github.io/demo/
[11]: https://github.com/stackless-dev/stackless
[12]: https://pypi.org/project/greenlet/
[13]: https://www.eveonline.com/
[14]: https://micropython.org
[15]: https://pybenchmarks.org/
[16]: https://github.com/Nuitka/Nuitka
[17]: https://developer.fedoraproject.org/tech/languages/python/multiple-pythons.html

View File

@ -0,0 +1,166 @@
[#]: 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 its 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 Garudas 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 doesnt 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. **Its 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 Linuxs 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 its 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.
Its 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 doesnt provide a Firefox web browser by default. It includes the **[customized LibreWolf-based FireDragon web browser][9]**, 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 Garudas 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 users 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, its 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

View File

@ -0,0 +1,75 @@
[#]: subject: "My favorite open source alternatives to Notion"
[#]: via: "https://opensource.com/article/22/9/open-source-alternatives-notion"
[#]: author: "Amar Gandhi https://opensource.com/users/amar1723"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
My favorite open source alternatives to Notion
======
There are lots of useful open source note-taking tools out there. Standard Notes and Trilium are designed with your data as the top priority.
![Opensource.com notebook and pen, CC sticker][1]
If you have notes to yourself scattered throughout your hard drive, you might need a notes application to collect and organize your personal reminders. A notes system can help you track ideas, important tasks, and works in progress. A popular application that isn't open source is Notion, but here are two options that respect your privacy and data.
### Standard Notes
Standard Notes is an open source (AGPL 3.0 license) notes application featuring a password manager, a to-do list, and, of course, a great system for writing and storing notes.
One of the most important things about taking notes is finding them again, so organization is critical. Standard Notes uses an intuitive and natural tagging system to help you organize your content. You assign hashtags to each note to classify it.
Standard Notes is extensible through plug-ins. There are plug-ins for LaTeX, Markdown, code snippets, spreadsheets, and more. There's even an option to publish to a blogging platform, should you want to make some of your notes public.
![Standard Notes][2]
Image by: (Amir Gandhi, CC BY-SA 4.0)
Standard Notes also boasts numerous backup options, including email and cloud services. Furthermore, Standard Notes can work on any platform, including Linux, Windows, macOS, and Chrome OS.
#### Self-hosting Standard Notes
Standard Notes can be self-hosted. The developers provide a script that runs the application in a container, making it to run almost anywhere. If you've yet to explore containers, then you can get up to speed with Opensource.com's [introduction to running applications in containers][3].
Another option is to use the hosted version provided by Standard Notes.
The development of Standard Notes can be followed on its [Git repository][4].
### Trilium
Trilium is a notes application that visually resembles Notion in many ways. It can handle various data types, including images, tables, to-do lists, highlighting, mind maps, flowcharts, family trees, code blocks, and more.
Trilium has several mechanisms to help you organize both your thoughts and your notes. You can view a history of recent changes, a global map of all your notes, note categories, or you can search for notes and contents.
![Trilium demo][5]
Image by: (Amir Gandhi, CC BY-SA 4.0)
You can install Trilium as a [Flatpak][6] from [Flathub][7], or you can install it on your own server as a container. Alternatively, you can use Trilium's hosted instance.
### Take note
There are plenty of useful note-taking applications in the open source world, and both Standard Notes and Trilium are designed with your data as the top priority. You can import and export data from these applications, so it's safe to try them out. You'll always have access to your data, so give Standard Notes or Trilium a try.
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/open-source-alternatives-notion
作者:[Amar Gandhi][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/amar1723
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/notebook_pen_cc_anniversary_desk.png
[2]: https://opensource.com/sites/default/files/2022-09/StdNotes.png
[3]: https://opensource.com/article/22/2/start-running-containers
[4]: https://github.com/standardnotes/standalone
[5]: https://opensource.com/sites/default/files/2022-09/trilium.png
[6]: https://opensource.com/article/21/11/install-flatpak-linux
[7]: https://flathub.org/apps/details/com.github.zadam.trilium

View File

@ -0,0 +1,169 @@
[#]: subject: "5 Git configurations I make on Linux"
[#]: via: "https://opensource.com/article/22/9/git-configuration-linux"
[#]: author: "Alan Formy-Duval https://opensource.com/users/alanfdoss"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
5 Git configurations I make on Linux
======
This is a simple guide to quickly get started working with Git and a few of its many configuration options.
![Linux keys on the keyboard for a desktop computer][1]
Setting up Git on Linux is simple, but here are the five things I do to get the perfect configuration:
1. [Create global configuration][2]
2. [Set default name][3]
3. [Set default email address][4]
4. [Set default branch name][5]
5. [Set default editor][6]
I manage my code, shell scripts, and documentation versioning using Git. This means that for each new project I start, the first step is to create a directory for its content and make it into a Git repository:
```
$ mkdir newproject
$ cd newproject
$ git init
```
There are certain general settings that I always want. Not many, but enough that I don't want to have to repeat the configuration each time. I like to take advantage of the *global* configuration capability of Git.
Git offers the `git config` command for manual configuration but this is a lot of work with certain caveats. For example, a common item to set is your email address. You can set it by running `git config user.email` followed by your email address. However, this will only take effect if you are in an existing Git directory:
```
$ git config user.email alan@opensource.com
fatal: not in a git directory
```
Plus, when this command is run within a Git repository, it only configures that specific one. The process must be repeated for new repositories. I can avoid this repetition by setting it globally. The *--global* option will instruct Git to write the email address to the global configuration file; `~/.gitconfig`, even creating it if necessary:
> Remember, the tilde (~) character represents your home directory. In my case that is /home/alan.
```
$ git config --global user.email alan@opensource.com
$ cat ~/.gitconfig
[user]
        email = alan@opensource.com
```
The downside here is if you have a large list of preferred settings, you will have a lot of commands to enter. This is time-consuming and prone to human error. Git provides an even more efficient and convenient way to directly edit your global configuration file—that is the first item on my list!
### 1. Create global configuration
If you have just started using Git, you may not have this file at all. Not to worry, let's skip the searching and get started. Just use the `--edit` option:
```
$ git config --global --edit
```
If no file is found, Git will generate one with the following content and open it in your shell environment's default editor:
```
# This is Git's per-user configuration file.
[user]
# Please adapt and uncomment the following lines:
#       name = Alan
#       email = alan@hopper
~
~
~
"~/.gitconfig" 5L, 155B                                     1,1           All
```
Now that we have opened the editor and Git has created the global configuration file behind the scenes, we can continue with the rest of the settings.
### 2. Set default name
Name is the first directive in the file, so let's start with that. The command line to set mine is `git config --global user.name "Alan Formy-Duval"`. Instead of running this command, just edit the *name* directive in the configuration file:
```
name = Alan Formy-Duval
```
### 3. Set default email address
The email address is the second directive, so let's update it. By default, Git uses your system-provided name and email address. If this is incorrect or you prefer something different, you can specify it in the configuration file. In fact, if you have not configured them, Git will let you know with a friendly message the first time you commit:
```
Committer: Alan <alan@hopper>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate....
```
The command line to set mine is`git config --global user.email`**["alan@opensource.com"][7]**. Instead, edit the *email* directive in the configuration file and provide your preferred address:
```
email = alan@opensource.com
```
The last two settings that I like to set are the default branch name and the default editor. These directives will need to be added while you are still in the editor.
### 4. Set default branch name
There is currently a trend to move away from the usage of the word *master* as the default branch name. As a matter of fact, Git will highlight this trend with a friendly message upon initialization of a new repository:
```
$ git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint:   git config --global init.defaultBranch <name>
```
This directive, named *defaultBranch*, needs to be located in a new section named *init*. It is now generally accepted that many coders use the word *main* for their default branch. This is what I like to use. Add this section followed by the directive to the configuration:
```
[init]
            defaultBranch = main
```
### 5. Set default editor
The fifth setting that I like to set is the default editor. This refers to the editor that Git will present for typing your commit message each time you commit changes to your repository. Everyone has a preference whether it is [nano][8], [emacs][9], [vi][10], or something else. I'm happy with vi. So, to set your editor, add a *core* section that includes the *editor* directive:
```
[core]
            editor = vi
```
That's the last one. Exit the editor. Git saves the global configuration file in your home directory. If you run the editing command again, you will see all of the content. Notice that the configuration file is a plain text file, so it can also be viewed using text tools such as the [cat command][11]. This is how mine appears:
```
$ cat ~/.gitconfig
[user]
        email = alan@opensource.com
        name = Alan Formy-Duval
[core]
        editor = vi
[init]
        defaultBranch = main
```
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/git-configuration-linux
作者:[Alan Formy-Duval][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/alanfdoss
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/linux_keyboard_desktop.png
[2]: https://opensource.com/article/22/9/git-configuration-linux#create-global-configuration
[3]: https://opensource.com/article/22/9/git-configuration-linux#set-default-name
[4]: https://opensource.com/article/22/9/git-configuration-linux#set-default-email-address
[5]: https://opensource.com/article/22/9/git-configuration-linux#set-default-branch-name
[6]: https://opensource.com/article/22/9/git-configuration-linux#set-default-editor
[7]: https://opensource.com/mailto:alan@opensource.com
[8]: https://opensource.com/article/20/12/gnu-nano
[9]: https://opensource.com/resources/what-emacs
[10]: https://opensource.com/article/19/3/getting-started-vim
[11]: https://opensource.com/article/19/2/getting-started-cat-command

View File

@ -0,0 +1,187 @@
[#]: subject: "Ansible Register Variable"
[#]: via: "https://ostechnix.com/ansible-register/"
[#]: author: "Karthick https://ostechnix.com/author/karthick/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Ansible Register Variable
======
This guide explains **what is Ansible register** and how to **capture a task output in Ansible using the register** variables in Linux.
#### Contents
1. Introduction To Ansible Register Variable
2. Register The Output
3. Accessing Individual Attributes
4. Decision Making Using Control Statement
5. Writing Register Output To A File
6. Iterate And Register
7. Conclusion
### Introduction To Ansible Register Variable
**Register** is used to capture the output of any task and store it in a variable. This variable can later be used along with print, loops, conditionals etc.
When you run a task in **[Ansible][1]**, the entire output of the task will not be printed to stdout(Terminal). If you wish to see the output of the task, then you have to store it in the register variable and then later print it.
In ansible, **[debug module][2]** is used to print the output to the terminal. You can also create a decision-based task by combining the register attributes with the conditional statement(when).
In the upcoming sections, you will learn how to register the output, understand the structure of the register output, print the output to stdout, Write output to a file and use register with when statement.
### Register The Output
Let's see how to use the register module through a use case. On my Ubuntu managed node, I need to check whether the virtualenv package is installed. If the package is not installed I will install it.
Create a new **[playbook][3]** and add the following play definition. Modify the play definition parameters as per your requirements.
```
- name: Test playbook - ansible register
hosts: ubuntu.anslab.com
gather_facts: False
become: True
```
I have the following task which will use the shell module to run the `"which virtualenv"` command. The output of this task is captured in the register variable named **"virtualenv_output"**. You can name this variable as per your wish.
In the second task, the register variable "`virtualenv_output` " will be printed using the debug module.
```
tasks:
- name: First Task - Using shell module to check if virtualenv is present or not
ansible.builtin.shell:
cmd: which virtualenv
register: virtualenv_output
ignore_errors: True
- name: Second Task - Print the full output
ansible.builtin.debug:
var: virtualenv_output
```
**Heads Up:** Using the **apt** module, you can simplify this task. But for demonstration purposes, I am using the **shell** module.
Check if there is any syntax error before submitting the playbook by running the following command.
```
$ ansible-playbook --syntax-check
```
Run the following command to submit the playbook.
```
$ ansible-playbook
```
In the below output, you can see the output of the first task. The output will be in `JSON` format. Depending upon the module and the task, the output will vary.
![Register The Output][4]
A few important attributes in the output will help you to write further logic in the playbook.
1. Failed - Return "True" if the task is failed and "False" if successfully executed.
2. Rc - The return code of the command submitted through the shell module.
3. Stderr, `Stderr`_line - Error messages.
4. Stdout, `Stdout`_lines - Stdout messages.
### Accessing Individual Attributes
Take a look at the below task. Instead of printing the entire output of the register variable, I am just trying to print the return code.
```
- name: Just checking the exit code
ansible.builtin.debug:
msg: "{{ virtualenv_output.rc }}"
```
In the below output, you can see only the return code is printed instead of the full output.
![Print Only Return Code][5]
Alternative to the **dot** notation, you can also access the attributes using the **python dictionary** notation.
```
- name: Just checking the exit code - Python dict way
ansible.builtin.debug:
msg: "{{ virtualenv_output['rc'] }}"
```
### Decision Making Using Control Statement
Lets build further logic based on the return code from the first task. If the return code is 1, then the task is said to be failed meaning there is no virtualenv package in my managed node.
Take a look at the below task where I am using the apt module to install the **"python3-virtualenv"** package. This task will only run when if the return code of the register variable is not equal to zero. Again I am registering this task output to the variable called **"virtualevn_install_output"**.
```
- name: Install the package based on the return code
ansible.builtin.apt:
pkg: python3-virtualenv
state: present
when: virtualenv_output.rc != 0
register: virtualenv_install_output
```
### Writing Register Output To A File
Instead of using the debug module to print the output to stdout(Terminal), you can write the output to a file. There are many modules to do this task but here I am using the **copy** module and storing the content of the register variable in the file `virtualenv_output`.
```
- name: Reroute the output to a file
ansible.builtin.copy:
content: "{{virtualenv_install_output}}"
dest: "/home/vagrant/virtualenv_output"
```
![Writing Register Output To A File][6]
### Iterate And Register
Take a look at the below task where I am using the **shell** module to remove some dummy files I manually created. Using **loop**, I am iterating through the list of files and passing it as the argument to the shell module.
The result of each iteration will be appended to the register variable **removed_output**.
```
- name: Using loops
ansible.builtin.shell:
cmd: rm -f "{{item}}"
register: removed_output
loop:
- test_file.txt
- abc.txt
- name: Print the removed output
ansible.builtin.debug:
msg:
- Return code for {{removed_output.results.0.item}} is {{removed_output.results.0.rc}}
- Return code for {{removed_output.results.1.item}} is {{removed_output.results.1.rc}}
```
![Iterate And Register][7]
### Conclusion
In this article, we have discussed what is ansible register variable and how to register the task output. We also discussed how to use the attributes from the register variable along with a conditional statement to create the condition-based task. Finally, we have seen how the output is appended to the register variable when you run a task iteratively.
--------------------------------------------------------------------------------
via: https://ostechnix.com/ansible-register/
作者:[Karthick][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/karthick/
[b]: https://github.com/lkxed
[1]: https://ostechnix.com/introduction-to-ansible-automation-platform/
[2]: https://ostechnix.com/ansible-debug-module/
[3]: https://ostechnix.com/ansible-playbooks/
[4]: https://ostechnix.com/wp-content/uploads/2022/09/Register-The-Output.png
[5]: https://ostechnix.com/wp-content/uploads/2022/09/Print-Only-Return-Code.png
[6]: https://ostechnix.com/wp-content/uploads/2022/09/Writing-Register-Output-To-A-File.png
[7]: https://ostechnix.com/wp-content/uploads/2022/09/Iterate-And-Register.png

View File

@ -0,0 +1,125 @@
[#]: subject: "EuroLinux Desktop is an RHEL-based Distro With Enterprise Perks"
[#]: via: "https://news.itsfoss.com/eurolinux-desktop/"
[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
EuroLinux Desktop is an RHEL-based Distro With Enterprise Perks
======
EuroLinux Desktop is an interesting RHEL-based distribution that offers stability, security, and a nice user interface. Let's take a look.
![EuroLinux Desktop is an RHEL-based Distro With Enterprise Perks][1]
EuroLinux Desktop is a Linux distro that aims to provide a well-rounded package for Windows and macOS users.
You might be aware that EuroLinux is a Polish company focused on providing server-based distro since 2013 meant to cater to enterprises.
But looks like they are introducing a **Red Hat Enterprise Linux 9-based** desktop-focused distribution. 🤯
As per their [announcement][2]:
> EuroLinux Desktop is a modern operating system that combines the aesthetic and functionality of Windows and macOS with the reliability and security of Enterprise Linux distributions.
Sounds exciting! So, what do we know about it?
### What's Special?
EuroLinux Desktop is based on RHEL 9, which enables it to serve you with server-level stability and security alongside a decent desktop experience.
It worked fine on as a virtual machine setup. You can test it on your spare computer before trying it out as a daily driver.
This enables it to provide seamless compatibility with other [RHEL-based server distros][3] such as CentOS, Rocky Linux, AlmaLinux, and more.
#### Targets Windows And macOS users
![eurolinux desktop screenshot][4]
EuroLinux Desktop 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. It also provides users with various customization options to play with.
Multitasking is very simple, thanks to the thoughtful implementation of the GNOME window manager.
![eurolinux desktop multitasking window][5]
All of this is made possible by using the [GNOME desktop environment][6] as a solid foundation to build upon and a few tweaks by their team.
#### Extensive Media Codec Support
![eurolinux desktop media player][7]
EuroLinux Desktop also supports a vast number of media file formats that enables you to play the most common audio and video files, such as .mp3, .mp4, .avi, .flac, and more.
You can use the included Totem video player to play any media files.
#### LibreOffice Suite
![eurolinux desktop libreoffice][8]
The complete LibreOffice suite is included with the distro to give users a very useful set of tools to make your work a bit easier.
#### GNOME Software Center
![eurolinux_desktop_software_center][11]
Of course, it comes equipped with the GNOME Software Center, and Flathub repository enabled, which should let you install any application you want.
It also supports AppImages. So, you should be fine for the most part.
### Who Is It Aimed At?
Being an RHEL-based desktop OS, it may not be easy to recommend this distro to every user.
For example, users familiar with Ubuntu might struggle with executing terminal commands for troubleshooting on EuroLinux.
But on the other hand, it might appeal to users who are coming from a Windows or a macOS system and want to try Linux for the first time.
Sure, it may not be one of the best Linux distributions for beginners yet. But, it should be a refreshing option as more users get to try it.
[Best Linux Distributions That are Most Suitable for Beginners][12]
It also has a lot of things to offer for use in public administration and educational institutions, such as a **10-year software life cycle**, an update management system, technical support, and more.
EuroLinux Desktop also has something for gamers, it supports software like Steam, Lutris, Wine, and more.
### Get Started With EuroLinux Desktop
The overall package seems adequate as it can cater to both Linux users and Windows/macOS users.
You can download the ISO file for EuroLinux Desktop from the button below.
To know more about the release, visit the [official product webpage][14].
😲 *The ISO file size is massive (6.8 GB). You're in for an adventure!*
[Download EuroLinux Desktop][15]
💬 *Will you be trying out EuroLinux Desktop? Are you willing to switch from Windows or macOS to an RHEL-based desktop distro?*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/eurolinux-desktop/
作者:[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/09/eurolinux-desktop.png
[2]: https://en.euro-linux.com/blog/eurolinux-desktop/
[3]: https://itsfoss.com/rhel-based-server-distributions/
[4]: https://news.itsfoss.com/content/images/2022/09/eurolinuxdesktop_home.jpg
[5]: https://news.itsfoss.com/content/images/2022/09/eurolinux_desktop_multitasking.png
[6]: https://www.gnome.org/
[7]: https://news.itsfoss.com/content/images/2022/09/eurolinuxdesktop_media.jpg
[8]: https://news.itsfoss.com/content/images/2022/09/eurolinuxdesktop_libre.jpg
[11]: https://news.itsfoss.com/content/images/2022/09/eurolinux_desktop_software_center.png
[12]: https://itsfoss.com/best-linux-beginners/
[14]: https://en.euro-linux.com/eurolinux/desktop/
[15]: https://dn.euro-linux.com/ELD-9-x86_64-latest.iso
[16]: https://www.humblebundle.com/books/linux-no-starch-press-books?partner=itsfoss

View File

@ -0,0 +1,157 @@
[#]: 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.
There are multiple software available to create virtual machines, e.g. [Virtual Box][2], KVM, Hyper-V, VM Ware player, and GNOME Boxes.
But honestly, most of them are complex to use and sometimes not stable enough. [GNOME Boxes][3] 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, for Ubuntu, Linux Mint, Kubuntu, and other distributions, you can simply run below 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 to use this version. First, set up your system to use Flatpak using [this guide][4], 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][5]
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 wont get that much of disk space as free even if your virtual machine doesnt use the entire allocated space.
![Allocate resources for your virtual machine][6]
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`.
Dont 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][7]
After you complete the installation, you should be seeing 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 systems 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][8]
You can also check how much memory, and CPU your virtual machine uses from the properties window.
Note that you can adjust the memory and other items of your existing virtual machines using properties.
![System properties][9]
### Troubleshooting
Here are some of the common errors or issues which you may face while using GNOME Boxes.
##### 1. Resolution problems in virtual machines
If your virtual machine is having low resolution, which is incompatible with your host system, then you have to install the below items. 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, sharing files via public folders, etc.
Once installed, reboot the guest system; Or you can log off and re-login once after reboot, you should be seeing the proper resolution.
##### 2. GNOME Boxes dont start a virtual machine in Ubuntu 18.04 based distributions
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 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 below command to add your username to the KVM group.
```
sudo usermod -a -G kvm <your account name>
```
### Wrapping Up
In this article, you have see 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 with 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://wiki.gnome.org/Apps/Boxes
[4]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/
[5]: https://www.debugpoint.com/wp-content/uploads/2020/05/Create-Virtual-Machine.png
[6]: https://www.debugpoint.com/wp-content/uploads/2020/05/Allocate-resources-for-your-virtual-machine.png
[7]: https://www.debugpoint.com/wp-content/uploads/2020/05/Virtual-machine-partition.png
[8]: https://www.debugpoint.com/wp-content/uploads/2020/05/Context-menu-in-installed-virtual-machine.png
[9]: https://www.debugpoint.com/wp-content/uploads/2020/05/System-properties.png

View File

@ -0,0 +1,229 @@
[#]: subject: "11 Gorgeous KDE Plasma Themes to Make Your Linux Desktop Even More Beautiful"
[#]: via: "https://itsfoss.com/best-kde-plasma-themes/"
[#]: author: "sreenath https://itsfoss.com/author/sreenath/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
11 Gorgeous KDE Plasma Themes to Make Your Linux Desktop Even More Beautiful
======
One of the most powerful features of the [KDE Plasma desktop is its fantastic potential for customization][1].
Speaking of customization, changing the theme is perhaps its most common and most visual aspect.
Not that the default Breeze theme is bad looking. Its just that you can give it an entirely different look with a new theme and icon set.
![Default KDE Plasma Theme Breeze][2]
Let me help you with that. Ill share some beautiful KDE Plasma themes you can choose from. Ill also show the steps for installing the chosen themes later in this article.
### Best KDE Plasma Themes
Please note that this is not a ranking list. Theme at number 3 should not be considered better than the one at number 7 or 8.
### 1. Sweet
Sweet is one of the most popular KDE themes out there. This theme, only available in dark mode, gives an aesthetic look to your system.
![Sweet Theme][3]
It can be **installed through KDE system settings**. It also has a dedicated icon pack, called Candy Icons, which also gets installed automatically, if you install it through System Settings.
[Sweet Theme][4]
### 2. Materia KDE
Materia is another popular theme liked by many desktop users. It has a polished and elegant look. Available in three variants, Materia, Materia Light, and Materia Dark.
![Materia Dark][5]
Materia Light is a pure white theme and Materia dark offers a complete dark experience. At the same time, Materia Theme gives a blend of both Dark and White.
This theme also **can be installed through KDE system settings**.
[Materia KDE][6]
### 3. Nordic
Nordic theme has a separate fan base among dark theme lovers. It is created around the Nord color palette, which is both comfortable for the eyes and elegant to watch.
![Nordic KDE][7]
Created by the same [developer of Sweet theme][8], it can be **installed from KDE System Settings**.
[Nordic][9]
### 4. WhiteSur
WhiteSur, developed by Vinceliuice, is a theme, aimed at MacOS theme lovers. It achieves a great similarity to MacOS appearance, which can be further enhanced with KDE Panel, Latte Dock etc.
![WhiteSur][10]
It provides an icon pack, which adds more aesthetics to the look and feel. This popular theme also provides both dark and light variants.
[WhiteSur][11]
### 5. Layan
Layan theme is available for both light and dark variants. And this is one of those themes, that provides rounded corners and looks neat and polished.
![Layan][12]
Layan uses Tela Circle icons and is **available to install from system settings**.
[Layan][13]
### 6. Qogir
Available in both light and dark variants, Qogir is a minimal theme, which can make your system look neat and cool.
![Qogir][14]
It has a very similar look to what appears on Budgie desktop. You can simply install the Qogir theme and its associated icon pack **from system settings**.
[Qogir][15]
### 7. Fluent Round
This theme can create a look and feel of the latest Windows 11 if you are a fan of that OS. Keeping this similarity aside, the Fluent theme is literally a great theme, available in both light/dark variants.
![Fluent KDE Theme][16]
It provides a polished look to your system, together with a dedicated dark/light icon package.
[Fluent Round][17]
### 8. Orchis
Orchis is quite popular among GNOME GTK theming and it is available for KDE also. Orchis has both light/dark. If you are **installing it through system settings**, the Tela Icon pack will also be installed, which you can change anytime from system settings.
![Orchis KDE Theme][18]
As in GNOME, this material-inspired theme improves the polishness of your desktop.
[Orchis][19]
### 9. Iridescent Round
If you are a fan of cyberpunk themes or futuristic themes, this can be a good option. The default wallpaper, which gets **installed through system settings**, looks artistic and gives a nerd vibe to your desktop.
![Iridescent Round][20]
It can create a visual experience if used with some cool plasma widgets and icon sets.
[Iridescent Round][21]
### 10. Nova Papilio
A rounded light theme centered around purple color. The theme is visually pleasing if you like light themes and extremely rounded corners.
![Nova Papilio][22]
The theme can be **installed from the system settings**.
[Nova Papilio][23]
### 11. WinSur Dark
As the name suggests, it has certain visual elements from Windows and macOS themes.
![Winsur Dark][24]
It has light/dark versions and you can **find it in system settings**. The theme has rounded corners and quite a polished look. But from my personal experience, it may make the display a bit congested on small displays.
[WinSur Dark][25]
#### Honorable Mentions
Listing themes, particularly in the case of a DE-like KDE Plasma can be a difficult task. Because there is a huge number of themes available. The above list gives a starting point, to those who dont want to spend time browsing for good looking themes.
Apart from this list, there are certain themes, like [Ant-Dark][26], [Aritim Dark][27], [Dracula][28], etc. that can also provide some nice visual experience to users.
### How to use these themes
Coming to the theme, there are a couple of methods to theme your KDE Plasma desktop. You can find it in brief below. It is a bit different from [theming GNOME desktop environment][29].
#### Install Theme from Settings
This is the most common and easiest method. Head on to KDE Settings. Select Appearance and click on Global Themes. Now, you can search for themes from the button as shown in the screenshots below.
![Download new global themes from KDE Plasma system settings][30]
You will get a comprehensive list of themes. Here, you can view the results with sort options. Once you found a theme, click on it and press install.
![List of available themes in KDE plasma system settings][31]
In most cases, this will apply a corresponding plasma theme and icons.
#### Apply Theme From Downloaded Theme Files
In some cases, you may find an interesting theme on some websites and unavailable in the KDE store. In this case, you need to download and extract the file. Once done, place the global theme folder of the downloaded theme in `~/.local/share/plasma/look-and-feel/` and Plasma Theme folder of the downloaded theme in `~/.local/share/plasma/desktoptheme/`.
![KDE Plasma themes folder in file manager][32]
Now head on to the settings and you will find the theme listed under the Appearance section.
#### Install Theme through Package Managers
This is a limited option. There are some themes, which found their way to the official repositories of your distribution. You can search for these themes and install them with your package manager. For example, in Ubuntu, you can install the Materia-KDE theme by running:
```
sudo apt install materia-kde
```
As said above, only a limited number of themes will be available here, that too varies with distributions. **Once installed, you can change the theme from System Settings > Appearance**.
### Wrapping Up
So, I listed some of my favorite KDE Plasma themes. I also demonstrated the steps for changing the themes.
Do you find some interesting theme here? Do you have some other favorite KDE theme that you would like to share with us in the comment section?
--------------------------------------------------------------------------------
via: https://itsfoss.com/best-kde-plasma-themes/
作者:[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/kde-customization/
[2]: https://itsfoss.com/wp-content/uploads/2022/09/breeze.webp
[3]: https://itsfoss.com/wp-content/uploads/2022/09/sweet-theme.webp
[4]: https://store.kde.org/s/KDE%20Store/p/1294729
[5]: https://itsfoss.com/wp-content/uploads/2022/09/materia-dark.png
[6]: https://www.pling.com/p/1462622
[7]: https://itsfoss.com/wp-content/uploads/2022/09/nordic-kde.png
[8]: https://github.com/EliverLara/Nordic
[9]: https://www.pling.com/p/1267246
[10]: https://itsfoss.com/wp-content/uploads/2022/09/whitesur.webp
[11]: https://www.pling.com/p/1400424
[12]: https://itsfoss.com/wp-content/uploads/2022/09/layan.webp
[13]: https://www.pling.com/p/1325241
[14]: https://itsfoss.com/wp-content/uploads/2022/09/qogir.png
[15]: https://www.pling.com/p/1675755
[16]: https://itsfoss.com/wp-content/uploads/2022/09/fluent-kde-theme.webp
[17]: https://www.pling.com/p/1631673
[18]: https://itsfoss.com/wp-content/uploads/2022/09/orchis-kde-theme.png
[19]: https://www.pling.com/p/1458927
[20]: https://itsfoss.com/wp-content/uploads/2022/09/iridescent-round.webp
[21]: https://www.pling.com/p/1640906
[22]: https://itsfoss.com/wp-content/uploads/2022/09/nova_papilio.webp
[23]: https://www.pling.com/p/1663528
[24]: https://itsfoss.com/wp-content/uploads/2022/09/winsur-dark.webp
[25]: https://www.pling.com/p/1373646
[26]: https://www.pling.com/p/1464332
[27]: https://www.pling.com/p/1281836
[28]: https://www.pling.com/p/1370871
[29]: https://itsfoss.com/install-switch-themes-gnome-shell/
[30]: https://itsfoss.com/wp-content/uploads/2022/09/download-new-global-themes-from-kde-plasma-system-settings.webp
[31]: https://itsfoss.com/wp-content/uploads/2022/09/list-of-available-themes-in-kde-plasma-system-settings.webp
[32]: https://itsfoss.com/wp-content/uploads/2022/09/kde-plasma-themes-folder-in-file-manager.png

View File

@ -0,0 +1,164 @@
[#]: subject: "Customize Xfce Desktop for Modern Look and Productivity"
[#]: via: "https://www.debugpoint.com/customize-xfce-modern-look-2020-edition/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Customize Xfce Desktop for Modern Look and Productivity
======
You can customize the super lightweight Xfce desktop for a modern look and improve productivity by tweaking various settings. In this guide, we explain the steps to configure a basic Xfce desktop installation (for example Xubuntu) entirely and make it look modern while being productive.
Xfce is a fast and lightweight desktop built on the GTK toolkit. It uses Xfwm (Xfce Window Manager), providing complete customization options via visual settings. Although the actual configuration files are hidden from the general users. Currently, Xfce is going through a process of porting the GTK2 components to GTK3 with the current stable and upcoming release.
This guide is prepared on Xfce 4.14 in Xubuntu 20.10 release. But overall, it is applicable for all Xfce desktops available for multiple Linux distributions such as Manjaro, Fedora, Arch, etc.
![Xfce Desktop - Before Customization][1]
### Customize Xfce Desktop Look and Productivity
##### Panels
Panels are the core component of the Xfce desktop. When you first boot up Xfce, the top panel is the go-to section for all your needs. It contains the application launcher menu, system tray with notifications, and a list of opened applications. Xfce (Xubuntu) comes with the great Whisker Menu, which already gives you a modern look.
So for this customization guide, first, I will add a new panel at the bottom and then eventually delete the top one. Now, if you wish, you can keep the top panel Or move it to the left or right from the Panel properties. Totally as per your taste.
* Right-click on the top panel and open `Panel -> Panel Preferences`. Click on the green + icon to create a new Panel.
![Panel Preferences][2]
![Add New Panel option][3]
Ideally, the default Panel is Panel 0, and the new one should be Panel 1. You will see a blank Panel is created on the desktop.
![New Panel][4]
**Drag the panel** to the **bottom** of the screen via the handle.
On the **Display tab**of the Panel Preference Window:
* Set Auto-hide the panel to Always.
* Check the Lock Panel.
On the **Appearance** Tab, you can choose the Background Style of the Panel. You can choose Opacity as well. For this guide, I will keep
* Background as None.
* Icon Adjust size automatically = Yes
* Opacity (Enter and Leave) = 100
Lets start adding some **applets**. Go to the Items tab and click on the green + icon to start adding some Xfce Applets.
You can add as many items as you want. For this guide, I have added the below items.
* Whisker Menu application menu
* Window Menu List of open applications
* Places File manager
* Notes quick sticky pad
* Screenshot
* Indicator Plugin
* Clock with date and time
* Action buttons to show log out, shutdown
* Show Desktop
Once done, press close.
To add some **additional applications**, you can open the application menu and right-click on any application. Then click **Add to Panel** and choose Panel 1 (for this example).
For example, I have added some additional applications to Panel 1 as below.
* Firefox
* Thunderbird
* LibreOffice Calc
* GIMP
Again, this is completely as per your taste. You can customize the new Panel as you wish.
When you are done, right-click on the top panel and open Panel Preferences. Select Panel 0 and click the “-” red icon to delete the top panel. Be cautious, as it will remove the default Xfce panel altogether. And before removing the Panel, make sure the newly created Panel 1 is visible.
##### Icons
You can change the default icon theme of Xfce. The [xfce-look.org][5] provides hundreds of GTK themes and icons. Download your favourite icon theme, and extract them. Then copy the top icon theme folder to `/usr/share/icons`. Or, you can create a folder `.icons` under your home directory and copy the icons folder.
Then you can open the **Appearance** Window and change the icon via the icon tab.
For this example, I have used the Uniform+ icon set, which looks very nice and comes with many application-specific icon sets. Its a big download (around 300mb+); you can get it from the below link.
[Download Uniform+ Icon set for Xfce][6]
##### Wallpaper
The Xfce-look.org has plenty of Xfce wallpaper with the Xfce mascot to choose from. Like the orange one which I have used for this tutorial. You can download it from [here][7].
##### Dock
There are some Docks which you can directly install in Xfce instead of Panels. I have not included a dock for this guide because you can customize it just fine without installing some additional applications and compromising more performance.
However, Docks are always looked better than panels. For example, if you really want, you can download DockBarX for Xfce and add it to your desktop. To install DockBarX, use the below PPA and commands in Ubuntu-based systems.
```
sudo add-apt-repository ppa:xuzhen666/dockbarxsudo apt-get updatesudo apt-get install dockbarx
```
```
sudo apt-get install xfce4-dockbarx-plugin
```
```
sudo apt-get install dockbarx-themes-extra
```
After applying all the above customization, your desktop should look like this if all goes well.
![Xfce Desktop after Customization][8]
### Settings Changes for Productivity
Now, coming to some tweaks of Xfce, which I prefer to do. These are specific small settings changes for your desktop which make your life easy and you can become more productive.
**Configure Whisker Menu to launch with Left Super Key**
It is handy when you can just open the application key via the left super key or right super key. To configure the Whisker Menu to launch with the left super key, open Window Manager and go to Keyboard. Add Superkey with xfce4-whisker-menu and press ok.
**Switch categories by Hovering Mouse**
Open Whisker menu settings. Go to the behaviour tab and check the Switch categories by hovering over the option.
**Add Battery and network data transfer indicator**
There is two additional panel applet available which you can add to your panel. They are Battery indicators and network data transfer. They give you a visual representation of battery status with % and upload/download data speed for the network.
![Xfce Customization Dark Mode][9]
### Wrapping Up
Again, the above outlined Xfce desktop look changes are just an idea for configuring your desktop. There are hundreds of settings available in Xfce, which you can easily change via settings as per your need and workflow. This is what makes Xfce a great alternative GTK desktop to GNOME.
Thats it. You can now enjoy a completely different [Xfce][10] desktop.
Let me know in the comment box below if you face any difficulties configuring the Xfce desktop and have any questions.
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/customize-xfce-modern-look-2020-edition/
作者:[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/2020/11/Xfce-Desktop-Before-Customization-1024x576.jpg
[2]: https://www.debugpoint.com/wp-content/uploads/2020/11/Panel-Preferences.jpg
[3]: https://www.debugpoint.com/wp-content/uploads/2020/11/Add-New-Panel-option.jpg
[4]: https://www.debugpoint.com/wp-content/uploads/2020/11/New-Panel.jpg
[5]: https://www.xfce-look.org/browse/cat/
[6]: https://www.xfce-look.org/p/1012468/
[7]: https://www.xfce-look.org/p/1351819/
[8]: https://www.debugpoint.com/wp-content/uploads/2020/11/Xfce-Desktop-after-Customization.jpg
[9]: https://www.debugpoint.com/wp-content/uploads/2020/11/Xfce-Customization-Dark-Mode.jpg
[10]: https://www.debugpoint.com/tag/xfce

View File

@ -0,0 +1,287 @@
[#]: subject: "How To Enable RPM Fusion Repository In Fedora, RHEL, AlmaLinux, Rocky Linux"
[#]: via: "https://ostechnix.com/how-to-enable-rpm-fusion-repository-in-fedora-rhel/"
[#]: author: "sk https://ostechnix.com/author/sk/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
How To Enable RPM Fusion Repository In Fedora, RHEL, AlmaLinux, Rocky Linux
======
Install RPM Fusion Repository In Fedora, RHEL, AlmaLinux, Rocky Linux
In this brief guide, we will see **what is RPM Fusion repository**, why should we **install RPM Fusion repository**, and finally how to **enable RPM Fusion repository** in Fedora, RHEL, and its clones like CentOS, AlmaLinux and Rocky Linux distributions.
#### Contents
1. What is RPM Fusion Repository?
2. 1. Enable RPM Fusion Repository In Fedora Linux 3. 1.1. List Repositories In Fedora
4. 2. Enable RPM Fusion Repository In RHEL 5. 2.1. List Installed Repositories In RHEL-based Systems
6. Conclusion
### What is RPM Fusion Repository?
Fedora project strictly adheres the Fedora [licensing policies][1]. It excludes some packages from the official repositories for the following reasons:
* If a package is propriety, it can't be included in Fedora;
* If a package is closed-source, it can't be included in Fedora;
* If a package is legally encumbered, it cannot be included in Fedora;
* If package violates United States laws (specifically, Federal or applicable state laws), it cannot be included in Fedora.
Any package that fails to meet the aforementioned policies will not be included in the official repositories of Fedora and RHEL. This is why some third party repositories, which have liberal licensing policies, are created. One such repository is **RPM Fusion**.
RPM Fusion is a community-maintained, third-party software repository that provides packages that the Fedora project and Red Hat can't ship due to legal and various other reasons as stated earlier.
The RPM Fusion is a must have to install the necessary multimedia codecs, proprietary software and drivers in Fedora, RHEL and its clones like CentOS, AlmaLinux and Rocky Linux etc.
RPM Fusion has two repositories namely `"free"` and `"nonfree"`. The `free` repository contains the packages that are Open Source as defined by Fedora licensing guidelines. The `nonfree` repository contains redistributable packages that are not Open Source and packages that are not free for commercial purpose.
You can add both repos and use them simultaneously on your personal system. There won't be any conflicts between the packages in the `free` and `nonfree` repos. If you're interested in running only free packages, just add the `free` repo and install the `nonfree` repo later.
### 1. Enable RPM Fusion Repository In Fedora Linux
To enable both the `free` and the `nonfree` RPM Fusion repositories on your Fedora system, run:
```
$ sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
```
**Sample output:**
```
Last metadata expiration check: 1:51:10 ago on Thursday 29 April 2021 02:10:14 PM.
rpmfusion-free-release-34.noarch.rpm 5.5 kB/s | 11 kB 00:02
rpmfusion-nonfree-release-34.noarch.rpm 6.6 kB/s | 11 kB 00:01
Dependencies resolved.
Package Architecture Version Repository Size
Installing:
rpmfusion-free-release noarch 34-1 @commandline 11 k
rpmfusion-nonfree-release noarch 34-1 @commandline 11 k
Transaction Summary
Install 2 Packages
Total size: 23 k
Installed size: 11 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : rpmfusion-nonfree-release-34-1.noarch 1/2
Installing : rpmfusion-free-release-34-1.noarch 2/2
Verifying : rpmfusion-free-release-34-1.noarch 1/2
Verifying : rpmfusion-nonfree-release-34-1.noarch 2/2
Installed:
rpmfusion-free-release-34-1.noarch rpmfusion-nonfree-release-34-1.noarch
Complete!
```
![Enable RPM Fusion Repository In Fedora Linux][2]
Like I already mentioned, you can install only the `free` repo like below:
```
$ sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
```
To enable only the non-free RPM Fusion repository, do:
```
$ sudo dnf install https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
```
**On Fedora Silverblue:**
To add and enable `free` and `nonfree` RPM Fusion repositories on a Fedora Silverblue machine, run:
```
$ sudo rpm-ostree install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
```
Well, RPM Fusion repository is installed and enabled. Let us go ahead and see if RPM Fusion is enabled or not.
#### 1.1. List Repositories In Fedora
To **[find the list of installed repositories][3]** in Fedora, run:
```
$ dnf repolist
```
**Sample output:**
```
repo id repo name
fedora Fedora 34 - x86_64
fedora-cisco-openh264 Fedora 34 openh264 (From Cisco) - x86_64
fedora-modular Fedora Modular 34 - x86_64
rpmfusion-free RPM Fusion for Fedora 34 - Free
rpmfusion-free-updates RPM Fusion for Fedora 34 - Free - Updates
rpmfusion-nonfree RPM Fusion for Fedora 34 - Nonfree
rpmfusion-nonfree-updates RPM Fusion for Fedora 34 - Nonfree - Updates
updates Fedora 34 - x86_64 - Updates
updates-modular Fedora Modular 34 - x86_64 - Updates
```
If you want to list only the enabled repositories, the command would be:
```
$ dnf repolist enabled
```
The first time you attempt to install packages from the RPM Fusion repositories, the `dnf` utility prompts you to confirm the signature of the repositories. Type **y** and hit ENTER to confirm it.
```
[...]
warning: /var/cache/dnf/rpmfusion-free-27856ae4f82a6a42/packages/ffmpeg-4.4-2.fc34.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID d651ff2e: NOKEY
RPM Fusion for Fedora 34 - Free 1.6 MB/s | 1.7 kB 00:00
Importing GPG key 0xD651FF2E:
Userid : "RPM Fusion free repository for Fedora (2020) rpmfusion-buildsys@lists.rpmfusion.org"
Fingerprint: E9A4 91A3 DE24 7814 E7E0 67EA E06F 8ECD D651 FF2E
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-34
Is this ok [y/N]: y
[...]
```
### 2. Enable RPM Fusion Repository In RHEL
In RHEL and its clones like CentOS, AlmaLinux, Rocky Linux etc., you must enable **[EPEL]** repository before enabling RPM Fusion repository.
To install EPEL repository in Red Hat Enterprise Linux system, run:
```
$ sudo dnf install --nogpgcheck https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E %rhel).noarch.rpm
```
After enabling the EPEL repository, run the following command to enable RPM Fusion repository in RHEL and its compatible clones CentOS, AlmaLinux and Rocky Linux:
```
$ sudo dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm
```
**Sample output:**
```
Last metadata expiration check: 0:09:07 ago on Friday 23 September 2022 11:41:49 AM UTC.
rpmfusion-free-release-8.noarch.rpm 861 B/s | 11 kB 00:12
rpmfusion-nonfree-release-8.noarch.rpm 877 B/s | 11 kB 00:12
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
rpmfusion-free-release noarch 8-0.1 @commandline 11 k
rpmfusion-nonfree-release noarch 8-0.1 @commandline 11 k
Transaction Summary
================================================================================
Install 2 Packages
Total size: 22 k
Installed size: 7.6 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : rpmfusion-free-release-8-0.1.noarch 1/2
Installing : rpmfusion-nonfree-release-8-0.1.noarch 2/2
Verifying : rpmfusion-free-release-8-0.1.noarch 1/2
Verifying : rpmfusion-nonfree-release-8-0.1.noarch 2/2
Installed:
rpmfusion-free-release-8-0.1.noarch rpmfusion-nonfree-release-8-0.1.noarch
Complete!
```
![Enable RPM Fusion Repository In RHEL, CentOS, AlmaLinux, Rocky Linux][4]
If you are using CentOS Steam 8, you need to enable **[PowerTools]** repository as well.
```
$ sudo dnf config-manager --enable powertools
```
CentOS 8 (older version) used a case sensitive name for the **PowerTools** repository:
```
$ sudo dnf config-manager --enable PowerTools
```
On RHEL 8, you should enable subscription:
```
$ sudo subscription-manager repos --enable "codeready-builder-for-rhel-8-$(uname -m)-rpms"
```
In RHEL 7 and its compatible clones like CentOS 7, run the following command to enable EPEL and RPM Fusion repositories:
```
$ sudo yum localinstall --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm
```
#### 2.1. List Installed Repositories In RHEL-based Systems
You can view the [list of the installed repositories][5] at any time using the following commands:
```
$ dnf repolist
```
Or,
```
$ yum repolist
```
**Sample output:**
```
repo id repo name
appstream AlmaLinux 8 - AppStream
baseos AlmaLinux 8 - BaseOS
docker-ce-stable Docker CE Stable - x86_64
epel Extra Packages for Enterprise Linux 8 - x86_64
epel-modular Extra Packages for Enterprise Linux Modular 8 - x86_64
extras AlmaLinux 8 - Extras
rpmfusion-free-updates RPM Fusion for EL 8 - Free - Updates
rpmfusion-nonfree-updates RPM Fusion for EL 8 - Nonfree - Updates
```
![List Installed Repositories In RHEL, CentOS, AlmaLinux, Rocky Linux][6]
### Conclusion
That's it. You know now how to **enable RPM Fusion repository RPM-based systems** such as Fedora, RHEL, CentOS, AlmaLinux, and Rocky Linux. Enabling RPM Fusion in a newly installed system is mandatory as it provides a lots of unofficial packages that are not included in the official repositories.
**Resource:**
* [RPM Fusion Configuration][7]
--------------------------------------------------------------------------------
via: https://ostechnix.com/how-to-enable-rpm-fusion-repository-in-fedora-rhel/
作者:[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://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/
[2]: https://ostechnix.com/wp-content/uploads/2021/04/Enable-RPM-Fusion-repository-in-Fedora-Linux.png
[3]: https://ostechnix.com/find-list-installed-repositories-commandline-linux/
[4]: https://ostechnix.com/wp-content/uploads/2022/09/Enable-RPM-Fusion-repository-in-RHEL-CentOS-AlmaLinux-Rocky-Linux.png
[5]: https://ostechnix.com/find-list-installed-repositories-commandline-linux/
[6]: https://ostechnix.com/wp-content/uploads/2022/09/List-Installed-Repositories-In-RHEL-CentOS-AlmaLinux-Rocky-Linux.png
[7]: https://rpmfusion.org/Configuration

View File

@ -0,0 +1,695 @@
[#]: subject: "How to build a dynamic distributed database with DistSQL"
[#]: via: "https://opensource.com/article/22/9/dynamic-distributed-database-distsql"
[#]: author: "Raigor Jiang https://opensource.com/users/raigor"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
How to build a dynamic distributed database with DistSQL
======
Take a look at a data sharding scenario in which DistSQL's flexibility allows you to create a distributed database.
Distributed databases are common for many reasons. They increase reliability, redundancy, and performance. Apache ShardingSphere is an open source framework that enables you to transform any database into a distributed database. Since the release of ShardingSphere 5.0.0, DistSQL (Distributed SQL) has provided dynamic management for the ShardingSphere ecosystem.
In this article, I demonstrate a data sharding scenario in which DistSQL's flexibility allows you to create a distributed database. At the same time, I show some syntax sugar to simplify operating procedures, allowing your potential users to choose their preferred syntax.
A series of DistSQL statements are run through practical cases to give you a complete set of practical DistSQL sharding management methods, which create and maintain distributed databases through dynamic management.
![Diagram of database sharding management options][2]
Image by:
(Jiang Longtao, CC BY-SA 4.0)
### What is sharding?
In database terminology, *sharding* is the process of partitioning a table into separate entities. While the table data is directly related, it often exists on different physical database nodes or, at the very least, within separate logical partitions.
### Practical case example
To follow along with this example, you must have these components in place, either in your lab or in your mind as you read this article:
* Two sharding tables: t_order and t_order_item.
* For both tables, database shards are carried out with the user_id field, and table shards with the order_id field.
* The number of shards is two databases times three tables.
![Apache ShardingSphere databases][3]
Image by: (Jiang Longtao, CC BY-SA 4.0)
### Set up the environment
1. Prepare a database (MySQL, MariaDB, PostgreSQL, or openGauss) instance for access. Create two new databases: **demo_ds_0** and **demo_ds_1**.
2. Deploy [Apache ShardingSphere-Proxy 5.1.2][4] and [Apache ZooKeeper][5]. ZooKeeper acts as a governance center and stores ShardingSphere metadata information.
3. Configure `server.yaml` in the Proxy conf directory as follows:
```
mode:
  type: Cluster
  repository:
    type: ZooKeeper
    props:
      namespace: governance_ds
      server-lists: localhost:2181 #ZooKeeper address
      retryIntervalMilliseconds: 500
      timeToLiveSeconds: 60
      maxRetries: 3
      operationTimeoutMilliseconds: 500
  overwrite: falserules:
 - !AUTHORITY
    users:
     - root@%:root
```
4. Start ShardingSphere-Proxy and connect it to Proxy using a client, for example:
```
$ mysql -h 127.0.0.1 -P 3307 -u root -p
```
5. Create a distributed database:
```
CREATE DATABASE sharding_db;USE sharding_db;
```
#### Add storage resources
Next, add storage resources corresponding to the database:
```
ADD RESOURCE ds_0 (
    HOST=127.0.0.1,
    PORT=3306,
    DB=demo_ds_0,
    USER=root,
    PASSWORD=123456
), ds_1(
    HOST=127.0.0.1,
    PORT=3306,
    DB=demo_ds_1,
    USER=root,
    PASSWORD=123456
);
```
View the storage resources:
```
mysql> SHOW DATABASE RESOURCES\G;
******** 1. row ***************************
         name: ds_1
         type: MySQL
         host: 127.0.0.1
         port: 3306
           db: demo_ds_1
          -- Omit partial attributes
******** 2. row ***************************
         name: ds_0
         type: MySQL
         host: 127.0.0.1
         port: 3306
           db: demo_ds_0
          -- Omit partial attributes
```
Adding the optional `\G` switch to the query statement makes the output format easy to read.
### Create sharding rules
ShardingSphere's sharding rules support regular sharding and automatic sharding. Both sharding methods have the same effect. The difference is that the configuration of automatic sharding is more concise, while regular sharding is more flexible and independent.
Refer to the following links for more details on automatic sharding:
* [Intro to DistSQL-An Open Source and More Powerful SQL][6]
* [AutoTable: Your Butler-Like Sharding Configuration Tool][7]
Next, it's time to adopt regular sharding and use the **INLINE** expression algorithm to implement the sharding scenarios described in the requirements.
### Primary key generator
The primary key generator creates a secure and unique primary key for a data table in a distributed scenario. For details, refer to the document [Distributed Primary Key][8]*.*
1. Create a primary key generator:
```
CREATE SHARDING KEY GENERATOR snowflake_key_generator (
TYPE(NAME=SNOWFLAKE)
);
```
2. Query the primary key generator:
```
mysql> SHOW SHARDING KEY GENERATORS;
+-------------------------+-----------+-------+
| name                    | type      | props |
+-------------------------+-----------+-------+
| snowflake_key_generator | snowflake | {}    |
+-------------------------+-----------+-------+
1 row in set (0.01 sec)
```
### Sharding algorithm
1. Create a database sharding algorithm used by **t_order** and **t_order_item** in common:
```
-- Modulo 2 based on user_id in database sharding
CREATE SHARDING ALGORITHM database_inline (
TYPE(NAME=INLINE,PROPERTIES("algorithm-expression"="ds_${user_id % 2}"))
);
```
2. Create different table shards algorithms for **t_order** and **t_order_item:**
```
-- Modulo 3 based on order_id in table sharding
CREATE SHARDING ALGORITHM t_order_inline (
TYPE(NAME=INLINE,PROPERTIES("algorithm-expression"="t_order_${order_id % 3}"))
);
CREATE SHARDING ALGORITHM t_order_item_inline (
TYPE(NAME=INLINE,PROPERTIES("algorithm-expression"="t_order_item_${order_id % 3}"))
);
```
3. Query the sharding algorithm:
```
mysql> SHOW SHARDING ALGORITHMS;
+---------------------+--------+---------------------------------------------------+
| name                | type   | props                                             |
+---------------------+--------+---------------------------------------------------+
| database_inline     | inline | algorithm-expression=ds_${user_id % 2}            |
| t_order_inline      | inline | algorithm-expression=t_order_${order_id % 3}      |
| t_order_item_inline | inline | algorithm-expression=t_order_item_${order_id % 3} |
+---------------------+--------+---------------------------------------------------+
3 rows in set (0.00 sec)
```
### Create a default sharding strategy
The [sharding strategy][9] consists of a sharding key and sharding algorithm, which in this case is **databaseStrategy** and **tableStrategy**. Because **t_order** and **t_order_item** have the same database sharding field and sharding algorithm, create a default strategy to be used by all shard tables with no sharding strategy configured.
1. Create a default database sharding strategy:
```
CREATE DEFAULT SHARDING DATABASE STRATEGY (
TYPE=STANDARD,SHARDING_COLUMN=user_id,SHARDING_ALGORITHM=database_inline
);
```
2. Query default strategy:
```
mysql> SHOW DEFAULT SHARDING STRATEGY\G;
*************************** 1. row ***************************
                    name: TABLE
                    type: NONE
         sharding_column:
 sharding_algorithm_name:
 sharding_algorithm_type:
sharding_algorithm_props:
*************************** 2. row ***************************
                    name: DATABASE
                    type: STANDARD
         sharding_column: user_id
 sharding_algorithm_name: database_inline
 sharding_algorithm_type: inline
sharding_algorithm_props: {algorithm-expression=ds_${user_id % 2}}
2 rows in set (0.00 sec)
```
You have not configured the default table sharding strategy, so the default strategy of **TABLE** is **NONE**.
### Set sharding rules
The primary key generator and sharding algorithm are both ready. Now you can create sharding rules. The method I demonstrate below is a little complicated and involves multiple steps. In the next section, I'll show you how to create sharding rules in just one step, but for now, witness how it's typically done.
First, define **t_order**:
```
CREATE SHARDING TABLE RULE t_order (
DATANODES("ds_${0..1}.t_order_${0..2}"),
TABLE_STRATEGY(TYPE=STANDARD,SHARDING_COLUMN=order_id,SHARDING_ALGORITHM=t_order_inline),
KEY_GENERATE_STRATEGY(COLUMN=order_id,KEY_GENERATOR=snowflake_key_generator)
);
```
Here is an explanation of the values found above:
* DATANODES specifies the data nodes of shard tables.
* TABLE_STRATEGY specifies the table strategy, among which SHARDING_ALGORITHM uses created sharding algorithm t_order_inline.
* KEY_GENERATE_STRATEGY specifies the primary key generation strategy of the table. Skip this configuration if primary key generation is not required.
Next, define **t_order_item**:
```
CREATE SHARDING TABLE RULE t_order_item (
DATANODES("ds_${0..1}.t_order_item_${0..2}"),
TABLE_STRATEGY(TYPE=STANDARD,SHARDING_COLUMN=order_id,SHARDING_ALGORITHM=t_order_item_inline),
KEY_GENERATE_STRATEGY(COLUMN=order_item_id,KEY_GENERATOR=snowflake_key_generator)
);
```
Query the sharding rules to verify what you've created:
```
mysql> SHOW SHARDING TABLE RULES\G;
************************** 1. row ***************************
                           table: t_order
               actual_data_nodes: ds_${0..1}.t_order_${0..2}
             actual_data_sources:
          database_strategy_type: STANDARD
        database_sharding_column: user_id
database_sharding_algorithm_type: inline
database_sharding_algorithm_props: algorithm-expression=ds_${user_id % 2}
              table_strategy_type: STANDARD
            table_sharding_column: order_id
    table_sharding_algorithm_type: inline
   table_sharding_algorithm_props: algorithm-expression=t_order_${order_id % 3}
              key_generate_column: order_id
               key_generator_type: snowflake
              key_generator_props:
*************************** 2. row ***************************
                            table: t_order_item
                actual_data_nodes: ds_${0..1}.t_order_item_${0..2}
              actual_data_sources:
           database_strategy_type: STANDARD
         database_sharding_column: user_id
 database_sharding_algorithm_type: inline
database_sharding_algorithm_props: algorithm-expression=ds_${user_id % 2}
              table_strategy_type: STANDARD
            table_sharding_column: order_id
    table_sharding_algorithm_type: inline
   table_sharding_algorithm_props: algorithm-expression=t_order_item_${order_id % 3}
              key_generate_column: order_item_id
               key_generator_type: snowflake
              key_generator_props:
2 rows in set (0.00 sec)
```
This looks right so far. You have now configured the sharding rules for **t_order** and **t_order_item**.
You can skip the steps for creating the primary key generator, sharding algorithm, and default strategy, and complete the sharding rules in one step. Here's how to make it easier.
### Sharding rule syntax
For instance, if you want to add a shard table called **t_order_detail**, you can create sharding rules as follows:
```
CREATE SHARDING TABLE RULE t_order_detail (
DATANODES("ds_${0..1}.t_order_detail_${0..1}"),
DATABASE_STRATEGY(TYPE=STANDARD,SHARDING_COLUMN=user_id,SHARDING_ALGORITHM(TYPE(NAME=INLINE,PROPERTIES("algorithm-expression"="ds_${user_id % 2}")))),
TABLE_STRATEGY(TYPE=STANDARD,SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME=INLINE,PROPERTIES("algorithm-expression"="t_order_detail_${order_id % 3}")))),
KEY_GENERATE_STRATEGY(COLUMN=detail_id,TYPE(NAME=snowflake))
);
```
This statement specifies a database sharding strategy, table strategy, and primary key generation strategy, but it doesn't use existing algorithms. The DistSQL engine automatically uses the input expression to create an algorithm for the sharding rules of **t_order_detail**.
Now there's a primary key generator:
```
mysql> SHOW SHARDING KEY GENERATORS;
+--------------------------+-----------+-------+
| name                     | type      | props |
+--------------------------+-----------+-------+
| snowflake_key_generator  | snowflake | {}    |
| t_order_detail_snowflake | snowflake | {}    |
+--------------------------+-----------+-------+
2 rows in set (0.00 sec)
```
Display the sharding algorithm:
```
mysql> SHOW SHARDING ALGORITHMS;
+--------------------------------+--------+-----------------------------------------------------+
| name                           | type   | props                                               |
+--------------------------------+--------+-----------------------------------------------------+
| database_inline                | inline | algorithm-expression=ds_${user_id % 2}              |
| t_order_inline                 | inline | algorithm-expression=t_order_${order_id % 3}        |
| t_order_item_inline            | inline | algorithm-expression=t_order_item_${order_id % 3}   |
| t_order_detail_database_inline | inline | algorithm-expression=ds_${user_id % 2}              |
| t_order_detail_table_inline    | inline | algorithm-expression=t_order_detail_${order_id % 3} |
+--------------------------------+--------+-----------------------------------------------------+
5 rows in set (0.00 sec)
```
And finally, the sharding rules:
```
mysql> SHOW SHARDING TABLE RULES\G;
*************************** 1. row ***************************
                            table: t_order
                actual_data_nodes: ds_${0..1}.t_order_${0..2}
              actual_data_sources:
           database_strategy_type: STANDARD
         database_sharding_column: user_id
 database_sharding_algorithm_type: inline
database_sharding_algorithm_props: algorithm-expression=ds_${user_id % 2}
              table_strategy_type: STANDARD
            table_sharding_column: order_id
    table_sharding_algorithm_type: inline
   table_sharding_algorithm_props: algorithm-expression=t_order_${order_id % 3}
              key_generate_column: order_id
               key_generator_type: snowflake
              key_generator_props:
*************************** 2. row ***************************
                            table: t_order_item
                actual_data_nodes: ds_${0..1}.t_order_item_${0..2}
              actual_data_sources:
           database_strategy_type: STANDARD
         database_sharding_column: user_id
 database_sharding_algorithm_type: inline
database_sharding_algorithm_props: algorithm-expression=ds_${user_id % 2}
              table_strategy_type: STANDARD
            table_sharding_column: order_id
    table_sharding_algorithm_type: inline
   table_sharding_algorithm_props: algorithm-expression=t_order_item_${order_id % 3}
              key_generate_column: order_item_id
               key_generator_type: snowflake
              key_generator_props:
*************************** 3. row ***************************
                            table: t_order_detail
                actual_data_nodes: ds_${0..1}.t_order_detail_${0..1}
              actual_data_sources:
           database_strategy_type: STANDARD
         database_sharding_column: user_id
 database_sharding_algorithm_type: inline
database_sharding_algorithm_props: algorithm-expression=ds_${user_id % 2}
              table_strategy_type: STANDARD
            table_sharding_column: order_id
    table_sharding_algorithm_type: inline
   table_sharding_algorithm_props: algorithm-expression=t_order_detail_${order_id % 3}
              key_generate_column: detail_id
               key_generator_type: snowflake
              key_generator_props:
3 rows in set (0.01 sec)
```
In the `CREATE SHARDING TABLE RULE` statement, **DATABASE_STRATEGY**, **TABLE_STRATEGY**, and **KEY_GENERATE_STRATEGY** can reuse existing algorithms.
Alternatively, they can be defined quickly through syntax. The difference is that additional algorithm objects are created.
### Configuration and verification
Once you have created the configuration verification rules, you can verify them in the following ways.
1. Check node distribution:
DistSQL provides `SHOW SHARDING TABLE NODES` for checking node distribution, and users can quickly learn the distribution of shard tables:
```
mysql> SHOW SHARDING TABLE NODES;
+----------------+------------------------------------------------------------------------------------------------------------------------------+
| name           | nodes                                                                                                                        |
+----------------+------------------------------------------------------------------------------------------------------------------------------+
| t_order        | ds_0.t_order_0, ds_0.t_order_1, ds_0.t_order_2, ds_1.t_order_0, ds_1.t_order_1, ds_1.t_order_2                               |
| t_order_item   | ds_0.t_order_item_0, ds_0.t_order_item_1, ds_0.t_order_item_2, ds_1.t_order_item_0, ds_1.t_order_item_1, ds_1.t_order_item_2 |
| t_order_detail | ds_0.t_order_detail_0, ds_0.t_order_detail_1, ds_1.t_order_detail_0, ds_1.t_order_detail_1                                   |
+----------------+------------------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.01 sec)
mysql> SHOW SHARDING TABLE NODES t_order_item;
+--------------+------------------------------------------------------------------------------------------------------------------------------+
| name         | nodes                                                                                                                        |
+--------------+------------------------------------------------------------------------------------------------------------------------------+
| t_order_item | ds_0.t_order_item_0, ds_0.t_order_item_1, ds_0.t_order_item_2, ds_1.t_order_item_0, ds_1.t_order_item_1, ds_1.t_order_item_2 |
+--------------+------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
```
You can see that the node distribution of the shard table is consistent with what is described in the requirement.
### SQL preview
Previewing SQL is also an easy way to verify configurations. Its syntax is `PREVIEW SQL`. First, make a query with no shard key, with all routes:
```
mysql> PREVIEW SELECT * FROM t_order;
+------------------+---------------------------------------------------------------------------------------------+
| data_source_name | actual_sql                                                                                  |
+------------------+---------------------------------------------------------------------------------------------+
| ds_0             | SELECT * FROM t_order_0 UNION ALL SELECT * FROM t_order_1 UNION ALL SELECT * FROM t_order_2 |
| ds_1             | SELECT * FROM t_order_0 UNION ALL SELECT * FROM t_order_1 UNION ALL SELECT * FROM t_order_2 |
+------------------+---------------------------------------------------------------------------------------------+
2 rows in set (0.13 sec)
mysql> PREVIEW SELECT * FROM t_order_item;
+------------------+------------------------------------------------------------------------------------------------------------+
| data_source_name | actual_sql                                                                                                 |
+------------------+------------------------------------------------------------------------------------------------------------+
| ds_0             | SELECT * FROM t_order_item_0 UNION ALL SELECT * FROM t_order_item_1 UNION ALL SELECT * FROM t_order_item_2 |
| ds_1             | SELECT * FROM t_order_item_0 UNION ALL SELECT * FROM t_order_item_1 UNION ALL SELECT * FROM t_order_item_2 |
+------------------+------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
```
Now specify **user_id** in a query with a single database route:
```
mysql> PREVIEW SELECT * FROM t_order WHERE user_id = 1;
+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| data_source_name | actual_sql                                                                                                                                        |
+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| ds_1             | SELECT * FROM t_order_0 WHERE user_id = 1 UNION ALL SELECT * FROM t_order_1 WHERE user_id = 1 UNION ALL SELECT * FROM t_order_2 WHERE user_id = 1 |
+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.14 sec)
mysql> PREVIEW SELECT * FROM t_order_item WHERE user_id = 2;
+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| data_source_name | actual_sql                                                                                                                                                       |
+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ds_0             | SELECT * FROM t_order_item_0 WHERE user_id = 2 UNION ALL SELECT * FROM t_order_item_1 WHERE user_id = 2 UNION ALL SELECT * FROM t_order_item_2 WHERE user_id = 2 |
+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
```
Specify **user_id** and **order_id** with a single table route:
```
mysql> PREVIEW SELECT * FROM t_order WHERE user_id = 1 AND order_id = 1;
+------------------+------------------------------------------------------------+
| data_source_name | actual_sql                                                 |
+------------------+------------------------------------------------------------+
| ds_1             | SELECT * FROM t_order_1 WHERE user_id = 1 AND order_id = 1 |
+------------------+------------------------------------------------------------+
1 row in set (0.04 sec)
mysql> PREVIEW SELECT * FROM t_order_item WHERE user_id = 2 AND order_id = 5;
+------------------+-----------------------------------------------------------------+
| data_source_name | actual_sql                                                      |
+------------------+-----------------------------------------------------------------+
| ds_0             | SELECT * FROM t_order_item_2 WHERE user_id = 2 AND order_id = 5 |
+------------------+-----------------------------------------------------------------+
1 row in set (0.01 sec)
```
Single-table routes scan the fewest shard tables and offer the highest efficiency.
### Query unused resources
During system maintenance, algorithms or storage resources that are no longer in use may need to be released, or resources that need to be released may have been referenced and cannot be deleted. DistSQL's `SHOW UNUSED RESOURCES` command can solve these problems:
```
mysql> ADD RESOURCE ds_2 (
    ->     HOST=127.0.0.1,
    ->     PORT=3306,
    ->     DB=demo_ds_2,
    ->     USER=root,
    ->     PASSWORD=123456
    -> );
Query OK, 0 rows affected (0.07 sec)
mysql> SHOW UNUSED RESOURCES\G;
*************************** 1. row ***************************
                           name: ds_2
                           type: MySQL
                           host: 127.0.0.1
                           port: 3306
                             db: demo_ds_2
connection_timeout_milliseconds: 30000
      idle_timeout_milliseconds: 60000
      max_lifetime_milliseconds: 2100000
                  max_pool_size: 50
                  min_pool_size: 1
                      read_only: false
               other_attributes: {"dataSourceProperties":{"cacheServerConfiguration":"true","elideSetAutoCommits":"true","useServerPrepStmts":"true","cachePrepStmts":"true","useSSL":"false","rewriteBatchedStatements":"true","cacheResultSetMetadata":"false","useLocalSessionState":"true","maintainTimeStats":"false","prepStmtCacheSize":"200000","tinyInt1isBit":"false","prepStmtCacheSqlLimit":"2048","serverTimezone":"UTC","netTimeoutForStreamingResults":"0","zeroDateTimeBehavior":"round"},"healthCheckProperties":{},"initializationFailTimeout":1,"validationTimeout":5000,"leakDetectionThreshold":0,"poolName":"HikariPool-8","registerMbeans":false,"allowPoolSuspension":false,"autoCommit":true,"isolateInternalQueries":false}
1 row in set (0.03 sec)
```
#### Query unused primary key generator
DistSQL can also display unused sharding key generators with the `SHOW UNUSED SHARDING KEY GENERATORS` :
```
mysql> SHOW SHARDING KEY GENERATORS;
+--------------------------+-----------+-------+
| name                     | type      | props |
+--------------------------+-----------+-------+
| snowflake_key_generator  | snowflake | {}    |
| t_order_detail_snowflake | snowflake | {}    |
+--------------------------+-----------+-------+
2 rows in set (0.00 sec)
mysql> SHOW UNUSED SHARDING KEY GENERATORS;
Empty set (0.01 sec)
mysql> CREATE SHARDING KEY GENERATOR useless (
    -> TYPE(NAME=SNOWFLAKE)
    -> );
Query OK, 0 rows affected (0.04 sec)
mysql> SHOW UNUSED SHARDING KEY GENERATORS;
+---------+-----------+-------+
| name    | type      | props |
+---------+-----------+-------+
| useless | snowflake |       |
+---------+-----------+-------+
1 row in set (0.01 sec)
```
#### Query unused sharding algorithm
DistSQL can reveal unused sharding algorithms with (you guessed it) the `SHOW UNUSED SHARDING ALGORITHMS` command:
```
mysql> SHOW SHARDING ALGORITHMS;
+--------------------------------+--------+-----------------------------------------------------+
| name                           | type   | props                                               |
+--------------------------------+--------+-----------------------------------------------------+
| database_inline                | inline | algorithm-expression=ds_${user_id % 2}              |
| t_order_inline                 | inline | algorithm-expression=t_order_${order_id % 3}        |
| t_order_item_inline            | inline | algorithm-expression=t_order_item_${order_id % 3}   |
| t_order_detail_database_inline | inline | algorithm-expression=ds_${user_id % 2}              |
| t_order_detail_table_inline    | inline | algorithm-expression=t_order_detail_${order_id % 3} |
+--------------------------------+--------+-----------------------------------------------------+
5 rows in set (0.00 sec)
mysql> CREATE SHARDING ALGORITHM useless (
    -> TYPE(NAME=INLINE,PROPERTIES("algorithm-expression"="ds_${user_id % 2}"))
    -> );
Query OK, 0 rows affected (0.04 sec)
mysql> SHOW UNUSED SHARDING ALGORITHMS;
+---------+--------+----------------------------------------+
| name    | type   | props                                  |
+---------+--------+----------------------------------------+
| useless | inline | algorithm-expression=ds_${user_id % 2} |
+---------+--------+----------------------------------------+
1 row in set (0.00 sec)
```
#### Query rules that use the target storage resources
You can also see used resources within rules with `SHOW RULES USED RESOURCE`. All rules that use a resource can be queried, not limited to the sharding rule.
```
mysql> DROP RESOURCE ds_0;
ERROR 1101 (C1101): Resource [ds_0] is still used by [ShardingRule].
mysql> SHOW RULES USED RESOURCE ds_0;
+----------+----------------+
| type     | name           |
+----------+----------------+
| sharding | t_order        |
| sharding | t_order_item   |
| sharding | t_order_detail |
+----------+----------------+
3 rows in set (0.00 sec)
```
#### Query sharding rules that use the target primary key generator
You can find sharding rules using a key generator with `SHOW SHARDING TABLE RULES USED KEY GENERATOR` :
```
mysql> SHOW SHARDING KEY GENERATORS;
+--------------------------+-----------+-------+
| name                     | type      | props |
+--------------------------+-----------+-------+
| snowflake_key_generator  | snowflake | {}    |
| t_order_detail_snowflake | snowflake | {}    |
| useless                  | snowflake | {}    |
+--------------------------+-----------+-------+
3 rows in set (0.00 sec)
mysql> DROP SHARDING KEY GENERATOR snowflake_key_generator;
ERROR 1121 (C1121): Sharding key generator `[snowflake_key_generator]` in database `sharding_db` are still in used.
mysql> SHOW SHARDING TABLE RULES USED KEY GENERATOR snowflake_key_generator;
+-------+--------------+
| type  | name         |
+-------+--------------+
| table | t_order      |
| table | t_order_item |
+-------+--------------+
2 rows in set (0.00 sec)
```
#### Query sharding rules that use the target algorithm
Show sharding rules using a target algorithm with `SHOW SHARDING TABLE RULES USED ALGORITHM` :
```
mysql> SHOW SHARDING ALGORITHMS;
+--------------------------------+--------+-----------------------------------------------------+
| name                           | type   | props                                               |
+--------------------------------+--------+-----------------------------------------------------+
| database_inline                | inline | algorithm-expression=ds_${user_id % 2}              |
| t_order_inline                 | inline | algorithm-expression=t_order_${order_id % 3}        |
| t_order_item_inline            | inline | algorithm-expression=t_order_item_${order_id % 3}   |
| t_order_detail_database_inline | inline | algorithm-expression=ds_${user_id % 2}              |
| t_order_detail_table_inline    | inline | algorithm-expression=t_order_detail_${order_id % 3} |
| useless                        | inline | algorithm-expression=ds_${user_id % 2}              |
+--------------------------------+--------+-----------------------------------------------------+
6 rows in set (0.00 sec)
mysql> DROP SHARDING ALGORITHM t_order_detail_table_inline;
ERROR 1116 (C1116): Sharding algorithms `[t_order_detail_table_inline]` in database `sharding_db` are still in used.
mysql> SHOW SHARDING TABLE RULES USED ALGORITHM t_order_detail_table_inline;
+-------+----------------+
| type  | name           |
+-------+----------------+
| table | t_order_detail |
+-------+----------------+
1 row in set (0.00 sec)
```
### Make sharding better
DistSQL provides a flexible syntax to help simplify operations. In addition to the **INLINE** algorithm, DistSQL supports standard sharding, compound sharding, HINT sharding, and custom sharding algorithms.
If you have any questions or suggestions about [Apache ShardingSphere][10], please feel free to post them on [ShardingSphereGitHub][11].
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/dynamic-distributed-database-distsql
作者:[Raigor Jiang][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/raigor
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/BIZ_darwincloud_520x292_0311LL.png
[2]: https://opensource.com/sites/default/files/2022-09/1sharding.png
[3]: https://opensource.com/sites/default/files/2022-09/2shardingsphere.png
[4]: https://shardingsphere.apache.org/document/5.1.2/en/overview/
[5]: https://zookeeper.apache.org/
[6]: https://medium.com/nerd-for-tech/intro-to-distsql-an-open-source-more-powerful-sql-bada4099211?source=your_stories_page-------------------------------------
[7]: https://medium.com/geekculture/autotable-your-butler-like-sharding-configuration-tool-9a45dbb7e285
[8]: https://shardingsphere.apache.org/document/current/en/features/sharding/concept/#distributed-primary-key
[9]: https://shardingsphere.apache.org/document/5.1.2/en/features/sharding/concept/sharding/
[10]: https://shardingsphere.apache.org/
[11]: https://github.com/apache/shardingsphere

View File

@ -0,0 +1,87 @@
[#]: subject: "Install JDBC on Linux in 3 steps"
[#]: via: "https://opensource.com/article/22/9/install-jdbc-linux"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Install JDBC on Linux in 3 steps
======
Install Java, install JDBC with Maven, and install the database. Then you're ready to interact with databases in your Java code.
![What is your favorite open source Java IDE?][1]
Image by: Pixabay. CC0.
When you write an application, it's common to require data storage. Sometimes you're storing assets your application needs to function, and other times you're storing user data, including preferences and save data. One way to store data is in a database, and in order to communicate between your code and a database, you need a database binding or connector for your language. For Java, a common database connector is JDBC (Java database connectivity.)
### 1. Install Java
Of course, to develop with Java you must also have Java installed. I recommend [SDKman][2] for Linux, macOS, and WSL or Cygwin. For Windows, you can download OpenJDK from [developers.redhat.com][3].
### 2. Install JDBC with Maven
JDBC is an API, imported into your code with the statement `import java.sql.*`, but for it to be useful you must have a database driver and a database installed for it to interact with. The database driver you use and the database you want to communicate with must match: to interact with MySQL, you need a MySQL driver, to interact with SQLite3, you must have the SQLite3 driver, and so on.
For this article, I use [PostgreSQL][4], but all the major databases, including [MariaDB][5] and [SQLite3][6], have JDBC drivers.
You can download JDBC for PostgreSQL from [jdbc.postgresql.org][7]. I use [Maven][8] to manage Java dependencies, so I include it in `pom.xml` (adjusting the version number for what's current on [Maven Central][9]):
```
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.5.0</version>
</dependency>
```
### 3. Install the database
You have to install the database you want to connect to through JDBC. There are several very good open source databases, but I had to choose one for this article, so I chose PostgreSQL.
To install PostgreSQL on Linux, use your software repository. On Fedora, CentOS, Mageia, and similar:
```
$ sudo dnf install postgresql postgresql-server
```
On Debian, Linux Mint, Elementary, and similar:
```
$ sudo apt install postgresql postgresql-contrib
```
### Database connectivity
If you're not using PostgreSQL, the same general process applies:
1. Install Java.
2. Find the JDBC driver for your database of choice and include it in your `pom.xml` file.
3. Install the database (server and client) on your development OS.
Three steps and you're ready to start writing code.
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/install-jdbc-linux
作者:[Seth Kenlon][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/java-coffee-mug.jpg
[2]: https://opensource.com/article/22/3/manage-java-versions-sdkman
[3]: https://developers.redhat.com/products/openjdk/download?intcmp=7013a000002qLH8AAM
[4]: http://LINK-TO-POSTGRESQL-INTRO-ARTICLE
[5]: https://www.redhat.com/sysadmin/mysql-mariadb-introduction
[6]: https://opensource.com/article/21/2/sqlite3-cheat-sheet
[7]: https://jdbc.postgresql.org/download.html
[8]: https://opensource.com/article/22/3/maven-manage-java-dependencies
[9]: https://mvnrepository.com/artifact/org.postgresql/postgresql

View File

@ -0,0 +1,285 @@
[#]: subject: "Drop your database for PostgreSQL"
[#]: via: "https://opensource.com/article/22/9/drop-your-database-for-postgresql"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Drop your database for PostgreSQL
======
Postgres is one of the most flexible databases available, and it's open source.
Databases are tools to store information in an organized but flexible way. A spreadsheet is essentially a database, but the constraints of a graphical application render most spreadsheet applications useless to programmers. With [Edge][3] and IoT devices becoming significant target platforms, developers need powerful but lightweight solutions for storing, processing, and querying large amounts of data. One of my favourite combinations is the PostgreSQL database and [Lua bindings][4], but the possibilities are endless. Whatever language you use, Postgres is a great choice for a database, but you need to know some basics before adopting it.
### Install Postgres
To install PostgreSQL on Linux, use your software repository. On Fedora, CentOS, Mageia, and similar:
```
$ sudo dnf install postgresql postgresql-server
```
On Debian, Linux Mint, Elementary, and similar:
```
$ sudo apt install postgresql postgresql-contrib
```
On macOS and Windows, download an installer from [postgresql.org][5].
### Setting up Postgres
Most distributions install the Postgres database without *starting* it, but provide you with a script or [systemd service][6] to help it start reliably. However, before you start PostgreSQL, you must create a database cluster.
#### Fedora
On Fedora, CentOS, or similar, there's a Postgres setup script provided in the Postgres package. Run this script for easy configuration:
```
$ sudo /usr/bin/postgresql-setup --initdb
[sudo] password:
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
```
#### Debian
On Debian-based distributions, setup is performed automatically by `apt` during installation.
#### Everything else
Finally, if you're running something else, then you can just use the toolchain provided by Postgres itself. The `initdb` command creates a database cluster, but you must run it as the `postgres` user, an identity you may temporarily assume using `sudo` :
```
$ sudo -u postgres \
"initdb -D /var/lib/pgsql/data \
--locale en_US.UTF-8 --auth md5 --pwprompt"
```
### Start Postgres
Now that a cluster exists, start the Postgres server using either the command provided to you in the output of `initdb` or with systemd:
```
$ sudo systemctl start postgresql
```
### Creating a database user
To create a Postgres user, use the `createuser` command. The `postgres` user is the superuser of the Postgres install,
```
$ sudo -u postgres createuser --interactive --password bogus
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
Password:
```
### Create a database
To create a new database, use the `createdb` command. In this example, I create the database `exampledb` and assign ownership of it to the user `bogus` :
```
$ createdb exampledb --owner bogus
```
### Interacting with PostgreSQL
You can interact with a PostgreSQL database using the `psql` command. This command provides an interactive shell so you can view and update your databases. To connect to a database, specify the user and database you want to use:
```
$ psql --user bogus exampledb
psql (XX.Y)
Type "help" for help.
exampledb=>
```
### Create a table
Databases contain tables, which can be visualized as a spreadsheet. There's a series of rows (called *records* in a database) and columns. The intersection of a row and a column is called a *field*.
The Structured Query Language (SQL) is named after what it provides: A method to inquire about the contents of a database in a predictable and consistent syntax to receive useful results.
Currently, your database is empty, devoid of any tables. You can create a table with the `CREATE` query. It's useful to combine this with the `IF NOT EXISTS` statement, which prevents PostgreSQL from clobbering an existing table.
Before you createa table, think about what kind of data (the "data type" in SQL terminology) you anticipate the table to contain. In this example, I create a table with one column for a unique identifier and one column for some arbitrary text up to nine characters.
```
exampledb=> CREATE TABLE IF NOT EXISTS my_sample_table(
exampledb(> id SERIAL,
exampledb(> wordlist VARCHAR(9) NOT NULL
);
```
The `SERIAL` keyword isn't actually a data type. It's [special notation in PostgreSQL][7] that creates an auto-incrementing integer field. The `VARCHAR` keyword is a data type indicating a variable number of characters within a limit. In this code, I've specified a maximum of 9 characters. There are lots of data types in PostgreSQL, so refer to the project documentation for a list of options.
### Insert data
You can populate your new table with some sample data by using the `INSERT` SQL keyword:
```
exampledb=> INSERT INTO my_sample_table (wordlist) VALUES ('Alice');
INSERT 0 1
```
Your data entry fails, should you attempt to put more than 9 characters into the `wordlist` field:
```
exampledb=> INSERT INTO my_sample_table (WORDLIST) VALUES ('Alexandria');
ERROR:  VALUE too long FOR TYPE CHARACTER VARYING(9)
```
### Alter a table or column
When you need to change a field definition, you use the `ALTER` SQL keyword. For instance, should you decide that a nine character limit for `wordlist`, you can increase its allowance by setting its data type:
```
exampledb=> ALTER TABLE my_sample_table
ALTER COLUMN wordlist SET DATA TYPE VARCHAR(10);
ALTER TABLE
exampledb=> INSERT INTO my_sample_table (WORDLIST) VALUES ('Alexandria');
INSERT 0 1
```
### View data in a table
SQL is a query language, so you view the contents of a database through queries. Queries can be simple, or it can involve joining complex relationships between several different tables. To see everything in a table, use the `SELECT` keyword on `*` (an asterisk is a wildcard):
```
exampledb=> SELECT * FROM my_sample_table;
 id |  wordlist
\----+------------
  1 | Alice
  2 | Bob
  3 | Alexandria
(3 ROWS)
```
### More data
PostgreSQL can handle a lot of data, but as with any database the key to success is how you design your database for storage and what you do with the data once you've got it stored. A relatively large public data set can be found on [OECD.org][8], and using this you can try some advanced database techniques.
First, download the data as comma-separated values (CSV) and save the file as `land-cover.csv` in your `Downloads` folder.
Browse the data in a text editor or spreadsheet application to get an idea of what columns there are, and what kind of data each column contains. Look at the data carefully and keep an eye out for exceptions to an apparent rule. For instance, the `COU` column, containing a country code such as `AUS` for Australia and `GRC` for Greece, tends to be 3 characters until the oddity `BRIICS`.
Once you understand the data you're working with, you can prepare a Postgres database:
```
$ createdb landcoverdb --owner bogus
$ psql --user bogus landcoverdb
landcoverdb=> create table land_cover(
country_code varchar(6),
country_name varchar(76),
small_subnational_region_code varchar(5),
small_subnational_region_name varchar(14),
large_subnational_region_code varchar(17),
large_subnational_region_name varchar(44),
measure_code varchar(13),
measure_name varchar(29),
land_cover_class_code varchar(17),
land_cover_class_name varchar(19),
year_code integer,
year_value integer,
unit_code varchar(3),
unit_name varchar(17),
power_code integer,
power_name varchar(9),
reference_period_code varchar(1),
reference_period_name varchar(1),
value float(8),
flag_codes varchar(1),
flag_names varchar(1));
```
### Importing data
Postgres can import CSV data directly using the special metacommand `\copy` :
```
landcoverdb=> \copy land_cover from '~/land-cover.csv' with csv header delimiter ','
COPY 22113
```
That's 22,113 records imported. Seems like a good start!
### Querying data
A broad `SELECT` statement to see all columns of all 22,113 records is possible, and Postgres very nicely pipes the output to a screen pager so you can scroll through the output at a leisurely pace. However, using advanced SQL you can get some useful views of what's otherwise some pretty raw data.
```
landcoverdb=> SELECT
    lcm.country_name,
    lcm.year_value,
    SUM(lcm.value) sum_value
FROM land_cover lcm
JOIN (
    SELECT
        country_name,
        large_subnational_region_name,
        small_subnational_region_name,
        MAX(year_value) max_year_value
    FROM land_cover
    GROUP BY country_name,
        large_subnational_region_name,
        small_subnational_region_name
) AS lcmyv
ON
    lcm.country_name = lcmyv.country_name AND
    lcm.large_subnational_region_name = lcmyv.large_subnational_region_name AND
    lcm.small_subnational_region_name = lcmyv.small_subnational_region_name AND
    lcm.year_value = lcmyv.max_year_value
GROUP BY lcm.country_name,
    lcm.large_subnational_region_name,
    lcm.small_subnational_region_name,
    lcm.year_value
ORDER BY country_name,
    year_value;
```
Here's some sample output:
```
\---------------+------------+------------
 Afghanistan    |       2019 |  743.48425
 Albania        |       2019 |  128.82532
 Algeria        |       2019 |  2417.3281
 American Samoa |       2019 |   100.2007
 Andorra        |       2019 |  100.45613
 Angola         |       2019 |  1354.2192
 Anguilla       |       2019 | 100.078514
 Antarctica     |       2019 |  12561.907
[...]
```
SQL is a rich langauge, and so it's beyond the scope of this article. Read through the SQL code and see if you can modify it to provide a different set of data.
### Open database
PostgreSQL is one of the great open source databases. With it, you can design repositories for structured data, and then use SQL to view it in different ways so you can gain fresh perspectives on that data. Postgres integrates with many languages, including Python, Lua, Groovy, Java, and more, so regardless of your toolset, you can probably make use of this excellent database.
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/drop-your-database-for-postgresql
作者:[Seth Kenlon][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/lenovo-thinkpad-laptop-concentration-focus-windows-office.png
[2]: https://creativecommons.org/licenses/by/3.0/us/
[3]: https://www.redhat.com/en/topics/edge-computing/what-is-edge-computing?intcmp=7013a000002qLH8AAM
[4]: https://github.com/arcapos/luapgsql
[5]: https://www.postgresql.org/download/
[6]: https://opensource.com/article/21/4/sysadmins-love-systemd
[7]: https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-SERIAL
[8]: https://stats.oecd.org/Index.aspx?DataSetCode=LAND_COVER

View File

@ -0,0 +1,105 @@
[#]: subject: "Wolfi is a Linux Un(distro) Built for Software Supply Chain Security"
[#]: via: "https://news.itsfoss.com/wolfi-linux-undistro/"
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Wolfi is a Linux Un(distro) Built for Software Supply Chain Security
======
Wolfi is a Linux undistro that focuses on resolving security issues with the software supply chain. Explore more here.
![Wolfi is a Linux Un(distro) Built for Software Supply Chain Security][1]
The software supply chain includes everything that goes into developing, building, storing, and running it and its dependencies.
As per the [State of the Software Supply Chain 2021 report][2], between 2020 and 2021 alone, attacks on the software supply chain increased by a shocking **650%**.
![][3]
That's a staggering percentage. 🤯
So, everyone in the industry, ranging from code platforms like [GitHub][4] to tech giants like Google, has been putting their best efforts into coming up with various initiatives to enhance the security of the software supply chain.
One of the examples include:
[Google Sponsors $1 Million to Fund Secure Open Source Program by The Linux Foundation][5]
📢 To join the efforts, [Chainguard][7], a security firm specializing in open-source software and cloud-native development, has introduced a **Linux distro designed to secure the software supply chain**.
💡 They call it an "**Undistro**" because it is not a full-fledged Linux distribution to run on bare metal.
Instead, it is a **container-focused Linux distribution**. So, let me tell you more about it.
### Wolfi: A Container-specific Linux Distribution
The worlds smallest Octopus is named Wolfi, which inspired them to use the same to represent minimalism to flexibility for this Linux distribution.
Wolfi aims to address issues with containers, which are mainly used to build and ship software.
Furthermore, Chainguard mentions that there are several issues with running containers; some include:
* Running vulnerable container images.
* Distributions used in container lag behind upstream versions.
* Container images include more software than needed, increasing the attack surface.
* Not designed to meet compliance requirements or standards like [SLSA][8].
So, Wolfi is a distro that aims to solve these problems by being a solution **designed for container/cloud-native environments**while **minimizing dependencies** as much as possible.
It provides a secure foundation that reduces the effort/time to review and mitigate security vulnerabilities while increasing productivity.
Chainguard explains this as follows:
> Building a new, container-specific distribution offers the chance to vastly simplify things by dropping support for traditional distribution features that are now irrelevant (like packaging Linux itself!), and other things like SBOMs become simpler when we can build them in from the start. We can also embrace the immutable nature of containers and avoid package updates altogether, instead preferring to rebuild from scratch with new versions.
### Key Features of Wolfi
To achieve its purpose, Wolfi has a few key highlights for you to encourage using it:
* Provides a high-quality, build-time SBOM as standard for all packages.
* Packages are designed to be granular and independent, to support minimal images.
* Uses the proven and reliable APK package format.
* Fully declarative and reproducible build system.
* Designed to support glibc and musl.
If you are not familiar with the securing software supply chain, this might go over your head.
![Securing your software supply chain][11]
So, I suggest looking at [Wikipedia][12] to understand the terms. The video above should also help you learn more.
### Try Wolfi
To try Chainguard images using the Wolfi undistro, you can head to its [GitHub page][13] to find all the technical instructions.
[Try Wolfi][14]
💬 *What do you think about Wolfi? Do you think it will solve the problem of securing the software supply chain? Let us know your thoughts in the comments.*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/wolfi-linux-undistro/
作者:[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/w1200/2022/09/wolfi-distro-software-supply-chain-security.png
[2]: https://www.sonatype.com/resources/state-of-the-software-supply-chain-2021
[3]: https://news.itsfoss.com/content/images/2022/09/software-chain-attacks.jpg
[4]: https://news.itsfoss.com/gitlab-open-source-tool-malicious-code/
[5]: https://news.itsfoss.com/google-sos-sponsor/
[7]: https://www.chainguard.dev/
[8]: https://slsa.dev/
[11]: https://youtu.be/Dg-hD4HHKT8
[12]: https://en.wikipedia.org/wiki/Software_supply_chain
[13]: https://github.com/chainguard-images/
[14]: https://github.com/chainguard-images/
[15]: https://www.humblebundle.com/books/linux-no-starch-press-books?partner=itsfoss

View File

@ -0,0 +1,122 @@
[#]: subject: "How to Setup Internet in CentOS, RHEL, Rocky Linux Minimal Install"
[#]: via: "https://www.debugpoint.com/setup-internet-minimal-install-server/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
How to Setup Internet in CentOS, RHEL, Rocky Linux Minimal Install
======
Setting up the internet or network is super easy in a minimal server install. This guide will explain how to setup the internet or network in CentOS, RHEL, and Rocky Linux minimal install.
Once you install the minimal install of any server distributions, you will not have any GUI or desktop environment to setup your network or internet. Hence it is essential to know how you can setup internet when you only have access to the terminal. The NetworkManager utility provides necessary tools armed with systemd services to do the job. Heres how.
### Setup Internet in CentOS, RHEL, Rocky Linux Minimal Install
* After you have completed the server installation, boot into the server terminal. Ideally, you should be prompted with a terminal. Login using a root or admin account.
* Firstly, try to check the state of the network interface and details using [nmcli][1]. The `nmcli` is a command-line tool for controlling the NetworkManager service. Use the following command to check.
```
nmcli device status
```
This would display the device name, status etc.
![nmcli device status][2]
* Run the tool `nmtui` to configure the network interface.
* The nmtui is part of the NetworkManager tool, which gives you a friendly UI to configure the network.
* This is part of the `NetworkManager-tui` package and should be installed by default when you have completed the minimal server installation.
```
nmtui
```
* Click on Edit a connection in the nmtui window.
![nmtui - Select options][3]
* Select the interface name
![Select Interface to Edit][4]
* In the Edit Connection window, choose Automatic for IPv4 and IPv6. And select Automatically Connect. Press ok once done.
![nmtui - Edit Connection][5]
* Restart the NetworkManager service via the [systemd systemctl][6] using the following command.
```
systemctl restart NetworkManager
```
* If all goes well, you should be connected to the network and internet with minimal installation of CentOS, RHEL, and Rocky Linux servers. Provided your network has internet connectivity. You can use ping to verify whether it is working.
![setup internet minimal server - CentOS Rocky Linux RHEL][7]
### Additional Tip: Setup Static IP in minimal server
When you set the network configuration as automatic, the interface dynamically assigns the IP when you connect to the internet. In some situations where you are setting up a local area network (LAN), you may want to assign static IP to your network interface. Its super easy.
Open the network configuration script for your network. Change the highlighted part for your own device.
```
vi /etc/sysconfig/network-scripts/ifcfg-ens3
```
In the above file, add the IP address you desire with the property IPADDR. Save the file.
```
IPADDR=192.168.0.55
```
Add the gateway for your network in `/etc/sysconfig/network`.
```
NETWORKING=yes
HOSTNAME=debugpoint
GATEWAY=10.1.1.1
```
Add any public DNS server in `resolv.conf` located at `/etc/resolv.conf`.
nameserver 8.8.8.8nameserver 8.8.4.4
And restart the network service.
```
systemctl restart NetworkManager
```
This will complete the setup of the static IP. You can also check the IP details using `ip addr` command.
### Wrapping Up
I hope this guide helps you to setup the network, internet, and static IP in your minimal install server. Let me know in the comment section if you may have any questions.
[Next: XeroLinux Review: Stunning Linux Distribution with Arch and KDE Plasma][8]
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/setup-internet-minimal-install-server/
作者:[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://linux.die.net/man/1/nmcli
[2]: https://www.debugpoint.com/wp-content/uploads/2021/06/nmcli-device-status.jpg
[3]: https://www.debugpoint.com/wp-content/uploads/2021/06/nmtui-Select-options.jpg
[4]: https://www.debugpoint.com/wp-content/uploads/2021/06/Select-Interface-to-Edit.jpg
[5]: https://www.debugpoint.com/wp-content/uploads/2021/06/nmtui-Edit-Connection.jpg
[6]: https://www.debugpoint.com/2020/12/systemd-systemctl-service/
[7]: https://www.debugpoint.com/wp-content/uploads/2021/06/setup-internet-minimal-server-CentOS-Rocky-Linux-RHEL.jpg
[8]: https://www.debugpoint.com/xerolinux-review/

View File

@ -0,0 +1,101 @@
[#]: subject: "Speech Recognition to Text in Linux, Ubuntu using Google Docs"
[#]: via: "https://www.debugpoint.com/speech-recognition-to-text-in-linux-ubuntu-using-google-docs/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Speech Recognition to Text in Linux, Ubuntu using Google Docs
======
This is how you can convert speech to text in Linux systems, including Ubuntu.
There is not much speech recognition software available in Linux systems, including native desktop apps. There are some apps available that use IBM Watson and other APIs to convert speech to text, but they are not user-friendly and require an advanced level of user interactions, e.g. a little bit of programming or scripting in respective languages.
However, not many users know that Google Docs provides an advanced level of Speech Recognition using its own AI technologies, which can be accessed via Chrome in Google Docs.
Any user can use this feature to convert speech to text, requiring no advanced level of computer knowledge. The best thing about this feature of Google Docs is you can use it in any Ubuntu derivatives or any Linux distribution where Chrome is available.
Lets take a look at how you can enable it in Ubuntu.
### How to convert speech to text
The prerequisites are that you should have Chrome installed in your system and a Google account. If you dont have Chrome installed, you can visit [this link][1] and download/install Chrome.
Also, if you dont have a Google account, you can create one using [this link][2] for free.
#### Step 1
Open [https://docs.google.com][3] from Chrome and create a blank document.
![Create an empty doc][4]
#### Step 2
After the blank document is loaded, click `Tools > Voice typing` from the menu.
![Enable Voice Typing][5]
#### Step 3
On the left-hand side, you can see a microphone icon. Click the microphone icon, and for the first time, Chrome would ask to allow microphone access via browser. Click Allow.
![Click the mic][6]
![Allow Docs to access Mic][7]
By default, it uses your system language as the detecting language of voice while converting it into text; however, you can change it to any language you want per the available list of languages. So far, more than 60+ languages are supported and recognized in Google Docs while converting them to text.
#### Step 4
After you click allow, the microphone icon will turn orange, and now its ready to accept or recognize your voice. Start speaking anything you want, and voila! You will see your speech is being converted to text and written in the document.
![Voice to Text In action][8]
Thats it. You have successfully converted voice to text in Ubuntu via Google Chrome and Google docs.
This amazing feature is available for all Linux users for free. Drop a comment below using the comment box if you are aware of other apps that can convert voice to text in Linux. Also, let me know whether you found this helpful article.
### Troubleshooting
If the above feature is not working in your browser, make sure to check out the following.
* Open the Settings window (in GNOME desktop in Ubuntu or another distro).
* Go to `Privacy > Microphone`.
* And make sure its enabled.
![Check Microphone settings in Ubuntu][9]
### Wrapping Up
Although, there is a cloud-based solutions available recently, such as Amazon Polly and others. But they come with a steep price. Plus requires a bit of useful knowledge as well.
Whereas Google Chromes built-in speech recognition feature is simple and easy to use. It can get the job done for average users, although its a little slow.
That said, I hope this guide helps you to convert voice to text and do let me know in the comment box if you know of such an application which does the same for free.
[Next: How to Setup Internet in CentOS, RHEL, Rocky Linux Minimal Install][10]
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/speech-recognition-to-text-in-linux-ubuntu-using-google-docs/
作者:[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.google.com/chrome
[2]: https://accounts.google.com
[3]: https://docs.google.com
[4]: https://www.debugpoint.com/wp-content/uploads/2018/07/Create-an-empty-doc.png
[5]: https://www.debugpoint.com/wp-content/uploads/2018/07/Enable-Voice-Typing.png
[6]: https://www.debugpoint.com/wp-content/uploads/2018/07/Click-the-mic.png
[7]: https://www.debugpoint.com/wp-content/uploads/2018/07/Allow-Docs-to-access-Mic.png
[8]: https://www.debugpoint.com/wp-content/uploads/2018/07/Voice-to-Text-In-action.png
[9]: https://www.debugpoint.com/wp-content/uploads/2018/07/Check-Microphone-settings-in-Ubuntu.jpg
[10]: https://www.debugpoint.com/setup-internet-minimal-install-server/

View File

@ -0,0 +1,439 @@
[#]: subject: "165+ JavaScript terms you need to know"
[#]: via: "https://opensource.com/article/22/9/javascript-glossary"
[#]: author: "Sachin Samal https://opensource.com/users/sacsam005"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
165+ JavaScript terms you need to know
======
Keep this JavaScript glossary bookmarked to reference variables, methods, strings, and more.
![Javascript code close-up with neon graphic overlay][1]
Photo by Jen Wike Huger
JavaScript is a rich language, with sometimes a seemingly overwhelming number of libraries and frameworks. With so many options available, it's sometimes useful to just look at the language itself and keep in mind its core components. This glossary covers the core JavaScript language, syntax, and functions.
### JavaScript variables
`var` : The most used variable. Can be reassigned but only accessed within a function, meaning function scope. Variables defined with `var` move to the top when code is executed.
`const` : Cannot be reassigned and not accessible before they appear within the code, meaning block scope.
`let` : Similar to `const` with block scope, however, the `let` variable can be reassigned but not re-declared.
#### Data types
Numbers: `var age = 33`
Variables: `var a`
Text (strings): `var a = "Sachin"`
Operations: `var b = 4 + 5 + 6`
True or false statements: `var a = true`
Constant numbers: `const PI = 3.14`
Objects: `var fullName = {firstName:"Sachin", lastName: "Samal"}`
#### Objects
This is a simple example of objects in JavaScript. This object describe the variable `car`, and includes *keys* or *properties* such as `make`, `model`, and `year` are the object's property names. Each property has a value, such as `Nissan`, `Altima`, and `2022`. A JavaScript object is a collection of properties with values, and it functions as a method.
```
var car = {
make:"Nissan",
model:"Altima",
year:2022,
};
```
#### Comparison operators
`==` : Is equal to
`===` : Is equal value and equal type
`!=` : Is not equal
`!==` : Is not equal value or not equal type
`>` : Is greater than
`<` : Is less than
`>=` : Is greater than or equal to
`<=` : Is less than or equal to
`?` : Ternary operator
#### Logical operators
`&&` : Logical AND
`||` : Logical OR
`!` : Logical NOT
#### Output data
`alert()` : Output data in an alert box in the browser window
`confirm()` : Open up a yes/no dialog and return true/false depending on user click
`console.log()` : Write information to the browser console. Good for debugging.
`document.write()` : Write directly to the HTML document
`prompt()` : Create a dialog for user input
### Array methods
Array: An object that can hold multiple values at once.
`concat()` : Join several arrays into one
`indexOf()` : Return the primitive value of the specified object
`join()` : Combine elements of an array into a single string and return the string
`lastIndexOf()` : Give the last position at which a given element appears in an array
`pop()` : Remove the last element of an array
`push()` : Add a new element at the end
`reverse()` : Sort elements in descending order
`shift()` : Remove the first element of an array
`slice()` : Pull a copy of a portion of an array into a new array
`splice()` : Add positions and elements in a specified way
`toString()` : Convert elements to strings
`unshift()` : Add a new element to the beginning
`valueOf()` : Return the first position at which a given element appears in an array
### JavaScript loops
Loops: Perform specific tasks repeatedly under applied conditions.
```
for (before loop; condition for loop; execute after loop) {
// what to do during the loop
}
```
`for` : Creates a conditional loop
`while` : Sets up conditions under which a loop executes at least once, as long as the specified condition is evaluated as true
`do while` : Similar to the `while` loop, it executes at least once and performs a check at the end to see if the condition is met. If it is, then it executes again
`break` : Stop and exit the cycle at certain conditions
`continue` : Skip parts of the cycle if certain conditions are met
### if-else statements
An `if` statement executes the code within brackets as long as the condition in parentheses is true. Failing that, an optional `else` statement is executed instead.
```
if (condition) {
// do this if condition is met
} else {
// do this if condition is not met
}
```
### Strings
#### String methods
`charAt()` : Return a character at a specified position inside a string
`charCodeAt()` : Give the Unicode of the character at that position
`concat()` : Concatenate (join) two or more strings into one
`fromCharCode()` : Return a string created from the specified sequence of UTF-16 code units
`indexOf()` : Provide the position of the first occurrence of a specified text within a string
`lastIndexOf()` : Same as `indexOf()` but with the last occurrence, searching backwards
`match()` : Retrieve the matches of a string against a search pattern
`replace()` : Find and replace specified text in a string
`search()` : Execute a search for a matching text and return its position
`slice()` : Extract a section of a string and return it as a new string
`split()` : Split a string object into an array of strings at a specified position
`substr()` : Extract a substring depended on a specified number of characters, similar to `slice()`
`substring()` : Can't accept negative indices, also similar to `slice()`
`toLowerCase()` : Convert strings to lower case
`toUpperCase()` : Convert strings to upper case
`valueOf()` : Return the primitive value (that has no properties or methods) of a string object
#### Number methods
`toExponential()` : Return a string with a rounded number written as exponential notation
`toFixed()` : Return the string of a number with a specified number of decimals
`toPrecision()` : String of a number written with a specified length
`toString()` : Return a number as a string
`valueOf()` : Return a number as a number
#### Math methods
`abs(a)` : Return the absolute (positive) value of `a`
`acos(x)` : Arccosine of `x`, in radians
`asin(x)` : Arcsine of `x`, in radians
`atan(x)` : Arctangent of `x` as a numeric value
`atan2(y,x)` : Arctangent of the quotient of its arguments
`ceil(a)` : Value of a rounded up to its nearest integer
`cos(a)` : Cosine of `a` (`x` is in radians)
`exp(a)` : Value of Ex
`floor(a)` : Value of a rounded down to its nearest integer
`log(a)` : Natural logarithm (base E) of `a`
`max(a,b,c…,z)` : Return the number with the highest value
`min(a,b,c…,z)` : Return the number with the lowest value
`pow(a,b)` : `a` to the power of `b`
`random()` : Return a random number between 0 and 1
`round(a)` : Value of `a` rounded to its nearest integer
`sin(a)` : Sine of `a` (`a` is in radians)
`sqrt(a)` : Square root of `a`
`tan(a)` : Tangent of an angle
### Dealing with dates in JavaScript
#### Set dates
`Date()` : Create a new date object with the current date and time
`Date(2022, 6, 22, 4, 22, 11, 0)` : Create a custom date object. The numbers represent year, month, day, hour, minutes, seconds, milliseconds. You can omit anything except for year and month.
`Date("2022-07-29")` : Date declaration as a string
#### Pull date and time values
`getDate()` : Day of the month as a number (1-31)
`getDay()` : Weekday as a number (0-6)
`getFullYear()` : Year as a four-digit number (yyyy)
`getHours()` : Hour (0-23)
`getMilliseconds()` : Millisecond (0-999)
`getMinutes()` : Minute (0-59)
`getMonth()` : Month as a number (0-11)
`getSeconds()` : Second (0-59)
`getTime()` : Milliseconds since January 1, 1970
`getUTCDate()` : Day (date) of the month in the specified date according to universal time (also available for day, month, full year, hours, minutes, etc.)
`parse` : Parse a string representation of a date and return the number of milliseconds since January 1, 1970
#### Set part of a date
`setDate()` : Set the day as a number (1-31)
`setFullYear()` : Set the year (optionally month and day)
`setHours()` : Set the hour (0-23)
`setMilliseconds()` : Set milliseconds (0-999)
`setMinutes()` : Set the minutes (0-59)
`setMonth()` : Set the month (0-11)
`setSeconds()` : Set the seconds (0-59)
`setTime()` : Set the time (milliseconds since January 1, 1970)
`setUTCDate()` : Set the day of the month for a specified date according to universal time (also available for day, month, full year, hours, minutes, etc.)
### Dom mode
#### Node methods
`appendChild()` : Add a new child node to an element as the last child node
`cloneNode()` : Clone an HTML element
`compareDocumentPosition()` : Compare the document position of two elements
`getFeature()` : Return an object which implements the APIs of a specified feature
`hasAttributes()` : Return **true** if an element has any attributes, otherwise **false**
`hasChildNodes()` : Return **true** if an element has any child nodes, otherwise **false**
`insertBefore()` : Insert a new child node before a specified, existing child node
`isDefaultNamespace()` : Return **true** if a specified `namespaceURI` is the default, otherwise **false**
`isEqualNode()` : Check if two elements are equal
`isSameNode()` : Check if two elements are the same node
`isSupported()` : Return **true** if a specified feature is supported on the element
`lookupNamespaceURI()` : Return the `namespaceURI` associated with a given node
`normalize()` : Join adjacent text nodes and removes empty text nodes in an element
`removeChild()` : Remove a child node from an element
`replaceChild()` : Replace a child node in an element
#### Element methods
`getAttribute()` : Return the specified attribute value of an element node
`getAttributeNS()` : Return string value of the attribute with the specified namespace and name
`getAttributeNode()` : Get the specified attribute node
`getAttributeNodeNS()` : Return the attribute node for the attribute with the given namespace and name
`getElementsByTagName()` : Provide a collection of all child elements with the specified tag name
`getElementsByTagNameNS()` : Return a live HTMLCollection of elements with a certain tag name belonging to the given namespace
`hasAttribute()` : Return **true** if an element has any attributes, otherwise **false**
`hasAttributeNS()` : Provide a true/false value indicating whether the current element in a given namespace has the specified attribute
`removeAttribute()` : Remove a specified attribute from an element
`lookupPrefix()` : Return a `DOMString` containing the prefix for a given `namespaceURI`, if present
`removeAttributeNS()` : Remove the specified attribute from an element within a certain namespace
`removeAttributeNode()` : Take away a specified attribute node and return the removed node
`setAttribute()` : Set or change the specified attribute to a specified value
`setAttributeNS()` : Add a new attribute or changes the value of an attribute with the given namespace and name
`setAttributeNode()` : Set or change the specified attribute node
`setAttributeNodeNS()` : Add a new namespaced attribute node to an element
### JavaScript events
#### Mouse
`onclick` : User clicks on an element
`oncontextmenu` : User right-clicks on an element to open a context menu
`ondblclick` : User double-clicks on an element
`onmousedown` : User presses a mouse button over an element
`onmouseenter` : Pointer moves onto an element
`onmouseleave` : Pointer moves out of an element
`onmousemove` : Pointer moves while it is over an element
`onmouseover` : Pointer moves onto an element or one of its children
`setInterval()` : Call a function or evaluates an expression at
`oninput` : User input on an element
`onmouseup` : User releases a mouse button while over an element
`onmouseout` : User moves the mouse pointer out of an element or one of its children
`onerror` : Happens when an error occurs while loading an external file
`onloadeddata` : Media data is loaded
`onloadedmetadata` : Metadata (like dimensions and duration) is loaded
`onloadstart` : Browser starts looking for specified media
`onpause` : Media is paused either by the user or automatically
`onplay` : Media is started or is no longer paused
`onplaying` : Media is playing after having been paused or stopped for buffering
`onprogress` : Browser is in the process of downloading the media
`onratechange` : Media play speed changes
`onseeked` : User finishes moving/skipping to a new position in the media
`onseeking` : User starts moving/skipping
`onstalled` : Browser tries to load the media, but it is not available
`onsuspend` — Browser is intentionally not loading media
`ontimeupdate` : Play position has changed (e.g., because of fast forward)
`onvolumechange` : Media volume has changed (including mute)
`onwaiting` : Media paused but expected to resume (for example, buffering)
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/javascript-glossary
作者:[Sachin Samal][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/sacsam005
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/code_javascript.jpg

View File

@ -0,0 +1,102 @@
[#]: subject: "Get change alerts from any website with this open source tool"
[#]: via: "https://opensource.com/article/22/9/changedetection-io-open-source-website-changes"
[#]: author: "Leigh Morresi https://opensource.com/users/dgtlmoon"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Get change alerts from any website with this open source tool
======
Use changedetection.io to get alerts when a website makes changes or updates.
![Browser of things][1]
The year was 2020, and news about COVID-19 came flooding in so quickly that everyone felt completely overwhelmed with similar news articles providing updates with varying degrees of accuracy.
But all I needed to know was when my official government guidelines changed. In the end, that's all that mattered to me.
Whether the concern is a pandemic or just the latest tech news, keeping ahead of changes in website content can be critical.
The [changedetection.io][2] project provides a simple yet highly capable, open source solution for website change detection and notification. It's easy to set up, and it can notify over 70 (and counting) different notification systems, such as Matrix, Mattermost, [Nextcloud][3], [Signal][4], [Zulip][5], [Home Assistant][6], email, and more. It also notifies proprietary applications like Discord, Office365, Reddit, Telegram, and many others.
But [changedetection.io][7] isn't just limited to watching web page content. You can also monitor XML and JSON feeds, and it will build an RSS feed of the websites that changed.
Thanks to its built-in JSON simple storage system, there's no need to set up complicated databases to receive and store information. You can [run it as a Docker image][8] or install it with `pip`. The project has an [extensive wiki help section][9], and most common questions are covered there.
For sites using complex JavaScript, you can connect your changedetection.io installation to a Chromium or Chrome browser with the built-in [Playwright content fetcher][10].
Once running, access the application in your browser (`http://localhost:5000`, by default). You can set a password in the **Settings** section if your computer can be reached from an outside network.
![change detection watch list][11]
Submit the URL of a page you want to monitor. There are several settings related to how the page is filtered. For example, you more than likely do not want to know when a company's stock price listed in their site footer has changed, but you may want to know when they post a news article to their blog.
### Monitor a site
Imagine you want to add your favorite website, Opensource.com, to be monitored. You only want to know when the main call-out article contains the word "python" and you want to be notified over Matrix.
To do this, begin with the **visual-selector** tool. (This requires the **playwright** browser interface to be connected.)
![Find an element to monitor][12]
The **visual-selector** tool automatically calculates the best Xpath or CSS filter to target the content. Otherwise, you would get a lot of noise from the daily page updates.
Next, visit the **Filters & Triggers** tab.
![Filters and triggers][13]
In **CSS/JSON/XPATH Filter** field (the blue circle), you can see the automatically generated CSS filter from the previous step.
There are several useful filters available, such as **Remove elements** (good for removing noisy elements), **Ignore text, Trigger/wait for text,** and **Block change-detection if text matches** (used for waiting for some text to disappear, like "sold out").
In **Trigger/wait for text** (the red circle), type in the keyword you want to monitor for. (That's "python" in this example.)
The final step is in the **Notifications** tab, where you configure where you want to receive your notification. Below I added a Matrix room as the notification target, using the Matrix API.
![Notifications tab][14]
The notification URL is in the format of `matrixs://username:password@matrix.org/#/room/#room-name:matrix.org`
However, [t2Bot][15] format is also supported. Here are more [Matrix notification options][16].
And that's it! Now you'll receive a message over Matrix whenever the content changes.
### There's more
There's so much more to changedetection.io. If you prefer calling a custom JSON API, you don't have to use an API for notifications (use `jsons://` ). You can also create a custom HTTP request (POST and GET), execute JavaScript before checking (perhaps to pre-fill a username and password login field), and many more interesting features, with more to come.
Stop browsing the web and start watching the web instead!
Image by: (Leigh Morresi, CC BY-SA 4.0)
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/changedetection-io-open-source-website-changes
作者:[Leigh Morresi][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/dgtlmoon
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/browser_desktop_website_checklist_metrics.png
[2]: https://github.com/dgtlmoon/changedetection.io
[3]: https://opensource.com/tags/nextcloud
[4]: https://opensource.com/article/19/10/secure-private-messaging
[5]: https://opensource.com/article/22/3/open-source-chat-zulip
[6]: https://opensource.com/article/20/11/home-assistant
[7]: https://github.com/dgtlmoon/changedetection.io
[8]: https://github.com/dgtlmoon/changedetection.io#docker
[9]: https://github.com/dgtlmoon/changedetection.io/wiki
[10]: https://github.com/dgtlmoon/changedetection.io/wiki/Playwright-content-fetcher
[11]: https://opensource.com/sites/default/files/2022-09/screenshot.png
[12]: https://opensource.com/sites/default/files/2022-09/changedetect-osdc.png
[13]: https://opensource.com/sites/default/files/2022-09/changedetect-filters-triggers.webp
[14]: https://opensource.com/sites/default/files/2022-09/step3-notification-matrix.png
[15]: https://t2bot.io/
[16]: https://github.com/caronc/apprise/wiki/Notify_matrix

View File

@ -0,0 +1,176 @@
[#]: subject: "How to Migrate to Fedora Linux from Ubuntu [Beginners Guide]"
[#]: via: "https://www.debugpoint.com/migrate-to-fedora-from-ubuntu/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
How to Migrate to Fedora Linux from Ubuntu [Beginners Guide]
======
Heres a quick model on how to migrate to Fedora from the Ubuntu desktop, for good & save yourself from “snap drama”.
[Ubuntu][1] and [Fedora][2] are both great Linux operating systems.
They are used by millions of users every day and are available for desktops, servers, and cloud deployments. Fedora is sponsored by Red Hat and developed by the community, whereas Ubuntu development is managed by Canonical.
They follow a separate release schedule and have a different package management process. Otherwise, they are the same if you think of them as just a Linux distribution. So that said, it is not that difficult to migrate to Fedora for a long-term Ubuntu user. And use Fedora as a daily driver.
![KDE Plasma 5.21 in Fedora 34][3]
The objective of this guide is for desktop migration.
That means if you have been using Ubuntu on your Laptop/desktop for some time and never had a chance to try out the Fedora Linux workstation, then this article is for you.
Server migration to Fedora from Ubuntu Sever is an entirely different topic and requires an advanced assessment before you try. Server migration is not covered in this guide.
### Steps to migrate to Fedora from Ubuntu
#### Housekeeping
* I assume that you have adequate disk space and partition ready where you want to install Fedora Linux. Also, if you want to completely get rid of Ubuntu, you can install Fedora in the same partition easily.
* Make sure you take backups of your data from the Ubuntu installation. I would suggest you review your files in `/home` directory. Verify what backup you need to take in Documents, Pictures, Download directories.
* Write down the applications you additionally installed so that you can re-install them in your Fedora system. You can easily open GNOME Software (if you are using GNOME) and get a list of manually installed applications.
* Also, keep a note about the list of GNOME Extensions you use (if you are using GNOME).
* Write down the partitions of your disks and decide in which partition you want to install Fedora Linux. The easiest way to do this is using the GParted tool. Install it in Ubuntu using `sudo apt install gparted`. And get a list of partitions.
* Alternatively, run the following command from the terminal to get the partition list.
```
sudo lsblk -o name,mountpoint,label,size,uuid
```
* Like the Ubuntu desktop installer, Fedora also comes with Workstation editions (GNOME) for desktop installs. It also gives you a dedicated installer featuring all popular desktops. For example, if you prefer KDE Plasma, you get the Fedora KDE Plasma Spin.
* If you are all done with the housekeeping mentioned above, its time to download the ISO file for Fedora. So, download Fedora Workstation (GNOME) or Spin (like the different flavours with desktops) as per your need from the below link.
[download fedora workstation edition (gnome)][4]
[download fedora spins][5]
* Once downloaded, write the iso in USB using GNOME disk utility or use [Etcher][6] for easy and flawless LIVE USB preparation. Also, you may want to try [Fedora Media Writer][7] which is a nice ISO creator, by the way.
#### Installation steps and differences
* The main installation is handled by different utilities by Fedora and Ubuntu. Hence if you are first time in Fedora, it would be a little tricky.
* Ubuntu uses the Ubiquity installer, and Fedora uses the Anaconda installer program. In my experience, the Ubiquity is fairly simple, and Anaconda is a little confusing on the disk partition section. But once you get to use Anaconda, it will be seamless for you.
* Start booting from the Fedora LIVE USB you created and boot into the live system desktop. After that, click on the install to the hard disk to start the installation.
* In the Anaconda installer, after selecting the language, click on the SYSTEM installation destination. This is a very important and the only complex step.
![Choose destination][8]
* Select disk and configuration as custom. This is easier than Blivet-GUI (based on my experience over the years).
![Select disk and configuration][9]
* Click on the “+” sign and give your partition size after selecting the partition format.
![Create partition][10]
![Provide the mountpoint and size][11]
![Verify and accept changes][12]
![Begin Installation][13]
* Click on begin installation to start the installation process and reboot when finished.
* Once you boot into the Fedora system, you are good to go. If you are already familiar with your desktop environment, such as GNOME or KDE Plasma, etc, then you would not feel the difference whether you are using Fedora or Ubuntu.
* The account creation, such as user name, password and other settings, is available the first time boot after the installation. This is another difference when you compare it with the Ubuntu installation.
### Important Commands
Fedora and Ubuntu are both Linux distributions. But their package manager is different.
Ubuntu uses an **apt** package manager, and Fedora uses **dnf**. Hence you need to know the basic terminal commands for daily usage. Heres a quick comparison for you so that you know what are the different commands for dnf.
| Function | Fedora Usage | Ubuntu Usage |
| :- | :- | :- |
| Update system | sudo dnf update | sudo apt update |
| Upgrade system | sudo dnf upgrade | sudo apt upgrade |
| Install a package | sudo dnf install <package> | sudo apt install <package> |
| Remove a package | sudo dnf remove <package> | sudo apt remove <package> |
| Search a package | dnf search <package> | apt-cache search <package> |
### Restricted repository in Fedora
Like Ubuntu restricted repository, you also can have the same in Fedora using a repository called RPMFusion. You can enable this repo to access restricted packages, including the non-free version of several packages such as 3D graphics drivers, etc.
This is how you can enable it using the following commands. For detailed instructions, refer to [this guide][14].
```
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-release-$(rpm -E %fedora).noarch.rpm
```
### Distribution differences
Another fact you should be aware of while using Fedora.
Unlike Ubuntu, **Fedora doesnt come with a long-term support release**. So, you get a new Fedora major version twice a year on the “April-May” and “Oct-Nov” timeframe.
This is one of the main advantages of Fedora, you get updated latest upstream Linux Kernel and other packages twice a year. Stability-wise, Fedora is well stable unless you have a completely different setup/hardware box.
The upgrade process of Fedora is very [straightforward and stre][15]amlined. And most cases, you can keep on updating your existing installation, year after year, without any major problems.
### Help in Communities
From the user base, it is a well-known fact that Ubuntu has a more extensive user base across desktops, servers, and other flavors. Hence the free support channels are also full of reasonable solutions and fixes.
But Fedora also has a huge forum with always active members to help you when stuck with any issues while using Fedora. Using the following link, you can create a topic and get help anytime.
[https://ask.fedoraproject.org/][16]
So, thats some of the essential items you need to know to migrate to Fedora from Ubuntu Linux.
### Closing Notes
I hope this essential guide helps you to jump the ship from Ubuntu to Fedora.
If you are a beginner or an average Linux user, you can quickly start with Fedora and do your necessary work. And once you are comfortable using dnf and other commands, navigating around problems in Fedora will be effortless.
In my personal experience, Fedora can be used as a daily driver for many years without any sudden surprises. The upgrades are painless with a stable package base with the best vanilla GNOME experience.
Cheers.
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/migrate-to-fedora-from-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://ubuntu.com
[2]: https://getfedora.org
[3]: https://www.debugpoint.com/wp-content/uploads/2021/04/KDE-Plasma-5.21-in-Fedora-34.png
[4]: https://getfedora.org/en/workstation/download/
[5]: https://spins.fedoraproject.org/
[6]: https://www.debugpoint.com/2021/01/etcher-bootable-usb-linux/
[7]: https://www.debugpoint.com/fedora-media-writer/
[8]: https://www.debugpoint.com/wp-content/uploads/2021/04/Choose-destination.jpg
[9]: https://www.debugpoint.com/wp-content/uploads/2021/04/Select-disk-and-configuration.jpg
[10]: https://www.debugpoint.com/wp-content/uploads/2021/04/Create-partition.jpg
[11]: https://www.debugpoint.com/wp-content/uploads/2021/04/Provide-the-mountpoint-and-size.jpg
[12]: https://www.debugpoint.com/wp-content/uploads/2021/04/Verify-and-accept-changes.jpg
[13]: https://www.debugpoint.com/wp-content/uploads/2021/04/Begin-Installation.jpg
[14]: https://www.debugpoint.com/2020/07/enable-rpm-fusion-fedora-rhel-centos/
[15]: https://www.debugpoint.com/upgrade-fedora-36-from-fedora-35/
[16]: https://ask.fedoraproject.org/

View File

@ -1,36 +0,0 @@
[#]: subject: "Google Uses Fully Homomorphic Open Source Duality-Led Encryption Library"
[#]: via: "https://www.opensourceforu.com/2022/09/google-uses-fully-homomorphic-open-source-duality-led-encryption-library/"
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
[#]: collector: "lkxed"
[#]: translator: "littlebirdnest"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
谷歌使用完全同态开源对偶主导的加密库
======
合作伙伴关系的增长加速了 FHE 市场的采用
根据 Duality Technologies 的新闻稿谷歌将其使用Github上开源的 XLS和SDK 开发的开源项目,完全同态加密 (FHE) 转译器与领先的开源全同态加密库 OpenFHE 合并。让开发人员适应FHE将使密码学知识更简单、更易于理解。
一类称为 FHE 的加密技术不同于更常见的加密技术,因为它可以直接对加密数据进行计算,而无需密钥。一个由知名密码学家组成的社区创建了 OpenFHE这是一个根深于后量子开源晶格密码学的加密库。
该库旨在实现最佳可用性、增强的 API、模块化、跨平台可移植性以及与硬件结合时的项目加速器。开发人员可以使用高级代码例如 C++)操作加密数据,而 C++ 经常用于未加密的数据,通过将 OpenFHE 与 Google 的 Transpiler 相结合,就无需学习密码学。
Google 的转译器 简化了使用 FHE 驱动的应用程序的过程,而无需目前从头开始构建 FHE 所需的广泛的软件开发专业知识。这填补了软件设计人员和开发人员偶尔遇到的空白,他们希望从 FHE 的功能中受益,而不必经历那具有挑战性的学习曲线。
Duality 密码学研究高级主管兼首席科学家 Yuriy Polyakov 补充说:“我们的团队通过我们的 OpenFHE 库实现了重要的里程碑它已迅速成为当今许多技术领导者的选择例如谷歌。Google 转译器为那些非同态加密FHE 专家比如,为应用程序的社区开发人员提供了对 OpenFHE 同态加密的最新技术。”
--------------------------------------------------------------------------------
via: https://www.opensourceforu.com/2022/09/google-uses-fully-homomorphic-open-source-duality-led-encryption-library/
作者:[Laveesh Kocher][a]
选题:[lkxed][b]
译者:[littlebirdnest](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

@ -0,0 +1,36 @@
[#]: subject: "Kubernetes To Soon Support Confidential Computing"
[#]: via: "https://www.opensourceforu.com/2022/09/kubernetes-to-soon-support-confidential-computing/"
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
[#]: collector: "lkxed"
[#]: translator: "littlebirdnest"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Kubernetes 即将支持机密计算
======
*Constellation 是第一个始终加密的 kubernetes (K8S)。这是指 K8S您的所有工作负载和控制平面都被完全屏蔽您可以使用加密证书远程确认这一点。*
Constellation Kubernetes 引擎使用秘密计算和机密虚拟机,将 Kubernetes 集群与云架构的其余部分隔离开来。因此,无论是在静态还是在内存中,数据总是被加密,并创建了一个机密上下文。根据创建 Constellation 的公司 Edgeless Systems 的说法,由于它为在公共云上运行的数据和工作流增加了安全性和保密性,因此机密计算是云计算的未来。
Kubernetes 节点使用 Constellation 在私有虚拟机中运行。根据 Edgeless Systems 的说法,机密机器是安全飞地的演变,它将机密计算的三个原则——运行时加密、隔离和远程证明——扩展到整个虚拟系统。机密虚拟机 (TDX) 使用底层硬件对私有计算的特殊支持,例如 AMD 安全加密虚拟化 (AEM)、SEV-安全嵌套分页 (SEV-SNP) 和英特尔信任域扩展。此外ARM 去年还发布了名为 Realms 的新 V9 架构。此设计包括私有 VM 功能。
Constellation 尝试在集群级别提供证明或通过加密证书进行验证以及“始终在线”加密。Fedora CoreOS 构建在一个不可变的文件系统之上,面向容器,被 Constellation 中的机密 VMS 使用。Constellation 还利用 Sigstore 来保护 DevOps 信任链。
使用秘密计算时,性能可能会令人担忧。是的,加密会影响性能,但 AMD 和微软的联合基准测试发现,这只会导致 2% 到 8% 之间的微小性能损失。Edgeless Systems 声称 Constellation 将在繁重的工作负载下表现类似。
鉴于 Constellation 已通过 CNCF 认证并且可与包括 GCP 和 Azure 在内的所有主要云互操作,这应保证其与其他 Kubernetes 工作负载和工具的互操作性。
--------------------------------------------------------------------------------
via: https://www.opensourceforu.com/2022/09/kubernetes-to-soon-support-confidential-computing/
作者:[Laveesh Kocher][a]
选题:[lkxed][b]
译者:[littlebirdnest](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

@ -0,0 +1,255 @@
[#]: collector: (lujun9972)
[#]: translator: (aREversez)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (The Real Novelty of the ARPANET)
[#]: via: (https://twobithistory.org/2021/02/07/arpanet.html)
[#]: author: (Two-Bit History https://twobithistory.org)
ARPANET 的真正创新之处
======
如果你在搜索引擎中输入“ARPANET”搜索相关图片你会看到许多地图的图片上面是上世纪六十年代末七十年代初 [美国政府创建的研究网络][1],该网络不断延伸扩展,横跨了整个美国。我猜很多人第一次了解到 ARPANET 的时候都看过这种地图。
可以说,这些地图很有意思,毕竟我们很难想象过去连接网络的计算机是那么少,就连如此低保真的图片都可以表示出美国全部机器的所在位置(这里的低保真指的是高射投影仪成像技术,而不是大家熟知的 lo-fi 氛围音乐。不过这些地图是有问题的。地图上加粗的线条连接着大陆各地强化了人们的一种观念ARPANET 最大的贡献就是首次将横跨美国东西两地的电脑连接了起来。
今天,即便是在病毒肆虐、人们困居家中的情况下,网络也能把我们联系起来,可谓是我们的生命线。所以,如果认为 ARPANET 是最早的互联网那么在那之前世界必然相互隔绝毕竟那时还没有今天的互联网对吧ARPANET 首次通过计算机将人们连接起来,一定是一件惊天动地的大事。
但是,这一观点却与历史事实不符,而且它也没有进一步解释 ARPANET 的重要性。
### 初露锋芒
华盛顿希尔顿酒店坐落于国家广场东北方向约 2.4 千米处的一座小山丘山顶附近。酒店左右两侧白色的现代化立面分别向外延展出半个圆形活像一只飞鸟的双翼。1965 年,酒店竣工之后,纽约时报报道称这座建筑物就像“一只栖息在山顶巢穴上的海鸥”[1][2]。
不过这家酒店最有名的特点却深藏在地下。在车道交汇处下方有着一个巨大的蛋形活动场地这就是人们熟知的国际宴会厅多年来一直是华盛顿特区最大的无柱宴会厅。1967 年大门乐队在此举办了一场音乐会。1968 年,“吉他之神”吉米·亨德里克斯也在此举办了一场音乐会。到了 1972 年,国际宴会厅隐去了以往的喧嚣,举办了首届国际计算机通信会议。在这场大会上,研究项目 ARPANET 首次公开亮相。
1972 年的国际计算机通信会议举办时间为 10 月 24-26 日,与会人数约八百人[2][3]。在这场大会上,计算机网络这一新兴领域的领袖人物齐聚一堂。因特网的先驱鲍勃·卡恩称,“如果有人在华盛顿希尔顿酒店上方丢了一颗炸弹,那么美国的整个网络研究领域将会毁于一旦”[3][4]。
当然,不是所有的与会人员都是计算机科学家。根据当时的宣传广告,这场大会将会聚焦用户,照顾到“律师、医务人员、经济学家、政府工作者、工程师以及通信员等从业人员”[4][5]。虽然大会的部分议题非常专业,比如“数据网络设计问题(一)”与“数据网络设计问题(二)”,但是正如宣传广告所承诺的,大部分会议的主要关注点还是计算机网络给经济社会带来的潜在影响。其中甚至有一场会议以惊人的先见之明探讨了如何积极利用法律制度“保护计算机数据库中的隐私权益”[5][6]。
展示 ARPANET 的目的在于尽可能地吸引与会者的关注。各场会议在国际宴会厅或酒店更下一层的其他地方举行,会议休息期间,与会者可以自由进入乔治敦宴会厅(在国际宴会厅走廊尽头的一个较小的宴会厅,也可以说是会议室)[6][7],那里放置着 40 台由不同制造商生产的终端,用以访问 ARPANET [7][8]。这些终端属于哑终端,也就是说,只能用来输入命令、输出结果,本身无法进行计算。事实上,因为是 1972 年所以这些终端可能都是硬拷贝终端即电传打字机。哑终端与一台被称为“终端接口信息处理机”TIP的计算机相连接后者放置在宴会厅中间的一个高台上。TIP 是早期的一种路由器,哑终端可通过 TIP 连接到 ARPANET。有了终端和 TIPICCC 与会者可以尝试登录和访问组成 ARPANET 的 29 个主机站的计算机 [8][9]。
为了展示网络的性能,美国全国各主机站的研究员们通力合作,准备了 19 个简易的“情景”,供用户测试使用。他们还出了 [一份小册子][10],将这些情景收录其中。如果与会人员打算进入这个满是电线与哑终端的房间,就会得到这样一本小册子 [9][11]。通过这些情景,研究员不仅要证明网络这项新技术的可行性,还要证明其实用性,因为 ARPANET 那时还只是“一条没有汽车驶过的公路”。此外,来自国防部的投资者们也希望,公开展示 ARPANET 可以进一步激发人们对网络的兴趣 [10][12]。
因此,这些情景充分展示了在 ARPANET 网络上可以使用的软件的丰富性有程序语言解释器其中一个是麻省理工学院MIT Lisp 语言的解释器,另一个是加州大学洛杉矶分校的数值计算环境 Speakeasy 项目的解释器;还有一些游戏,包括国际象棋和 <ruby>康威生命游戏<rt>Conway's Game of Life</rt></ruby>;以及最受与会者欢迎的几个人工智能聊天程序,包括由 MIT 的计算机科学家约瑟夫·魏泽堡开发的著名聊天程序伊莉莎。
设置情景的研究人员小心翼翼地列出了他们想让用户在终端机上输入的每一条命令。这点很重要,因为用于连接 ARPANET 主机的命令序列可能会因为主机的不同而发生变化。比如,为了能在 MIT 人工智能实验室的 PDP-10 微型电脑上测试人工智能国际象棋程序,与会者需要按照指示输入以下命令:
在下方代码块中, _`[LF]`、`[SP]` 以及 `[CR]` 分别代表换行、空格以及回车键。我在每行的 `//` 符号后面都解释了当前一行命令的含义,不过当时的小册子本来是没有使用这一符号的。
```
@r [LF] // 重置 TIP
@e [SP] r [LF] // “远程回显”设置, 主机回显字符TIP 不回显
@L [SP] 134 [LF] // 连接 134 号主机
:login [SP] iccXXX [CR] // 登录 MIT 人工智能实验室的系统“XXX”代表用户名首字母缩写
:chess [CR] // 启动国际象棋程序
```
如果与会者输入了上述命令,那么他就可以体验当时最先进的国际象棋程序,其棋盘布局如下:
```
BR BN BB BQ BK BB BN BR
BP BP BP BP ** BP BP BP
-- ** -- ** -- ** -- **
** -- ** -- BP -- ** --
-- ** -- ** WP ** -- **
** -- ** -- ** -- ** --
WP WP WP WP -- WP WP WP
WR WN WB WQ WK WB WN WR
```
与之不同的是,如果要连接加州大学洛杉矶分校的 IBM System/360 机器,运行 Speakeasy 数值计算环境,与会者需要输入以下命令:
```
@r [LF] // 重置 TIP
@t [SP] o [SP] L [LF] // “传递换行”设置
@i [SP] L [LF] // “插入换行”设置,即回车时发送换行符。
@L [SP] 65 [LF] // 连接 65 号主机
tso // 连接 IBM 分时可选软件系统
logon [SP] icX [CR] // 输入用户名进行登录“X”可为任意数字
iccc [CR] // 输入密码(够安全!)
speakez [CR] // 启动 Speakeasy
```
输入上述命令后,与会者可以在终端中对矩阵进行乘法、转置以及其他运算,如下所示:
```
:+! a=m*transpose(m);a [CR]
:+! eigenvals(a) [CR]
```
当时,这场演示给许多人都留下了深刻的印象,但原因并不是我们所想的那样,毕竟我们有的只是后见之明。今天的人们总是记不住,在 1972 年,即便身处两个不同的城市,远程登录使用计算机也已经不是一件新鲜事儿了。在那之前的数十年,电传打字机就已经用于与相隔很远的计算机传递信息了。在 ICCC 第一届大会之前,差不多整整五年,在西雅图的一所高中,比尔·盖茨使用电传打字机,在该市其他地方的通用电气计算机上运行了他的第一个 BASIC 程序。在当时,登录远程计算机,运行几行命令或者玩一些文字游戏,只不过是家常便饭。因此,虽说上文提到的软件的确很不错,但是即便没有 ARPANET我刚刚介绍的两个情景勉强也是可以实现的。
当然ARPANET 一定带来了新的东西。参加本次大会的律师、政治家与经济学家关注更多的可能是国际象棋游戏与聊天机器人,但是网络专家们可能对另外两个情景更感兴趣,因为它们将 ARPANET 的作用更好地展示了出来。
在其中一个情景下MIT <ruby>非兼容分时系统<rt>ITS</rt></ruby> 上运行了一个名为 `NETWRK` 的程序。`NETWRK` 命令下有若干个子命令,输入这些子命令就能得到 ARPANET 各方面的运行状态。`SURVEY` 子命令可以列出 ARPANET 上面运行的主机与空闲的主机,放入一个列表中;`SUMMARY.OF.SURVEY` 子命令对 `SURVEY` 子命令的运行结果进行统计,得出每台主机的“正常运行比率”,以及每台主机响应消息的平均时间。`SUMMARY.OF.SURVEY` 子命令以表格的形式输出结果,如下所示:
```
--HOST-- -#- -%-UP- -RESP-
UCLA-NMC 001 097% 00.80
SRI-ARC 002 068% 01.23
UCSB-75 003 059% 00.63
...
```
可以看到,主机编号的占位不超过三个数字。其他 `NETWRK` 子命令能够查看较长时间内查询结果的概要,或者检查单个主机查询结果的日志。
第二个情景用到了斯坦福大学开发的一款软件——SRI-ARC 联机系统。这款软件功能齐全,非常优秀。美国发明家道格拉斯·恩格尔巴特在 <ruby>所有演示之母<rt>Mother of All Demos</rt></ruby> 上演示的正是 SRI-ARC 联机系统。这款软件可以在加州大学圣芭芭拉分校的主机上运行本质上属于文件托管的服务。使用华盛顿希尔顿酒店的终端,用户就可以将斯坦福大学主机上创建的文件复制到加州大学圣芭芭拉分校的主机上。操作也很简单,只需执行 `copy` 命令,然后回答计算机的下列问题:
_在下方的代码块中`[ESC]`、`[SP]` 与 `[CR]` 分别代表退出、空格与回车键;圆括号中的文字是计算机打印出的提示信息;第三行中的退出键用于自动补全文件名。此处复制的文件是 `<system>sample.txt;1`,其中文件名末尾的数字 1 代表文件的版本号,`<system>` 表示文件路径。这种文件名是 TENEX 操作系统上面的惯用写法。_[11][13]
```
@copy
(TO/FROM UCSB) to
(FILE) <system>sample [ESC] .TXT;1 [CR]
(CREATE/REPLACE) create
```
这两个情景看起来好像和最初提及的两个情景没有太大区别,但是此二者却意义非凡。因为它们证明了,在 ARPANET 上面,不仅人们可以与计算机进行交流,计算机与计算机也可以 _相互_ 交流。保存在 MIT 的 `SURVEY` 命令的结果并非由人类定期登录并检查每台机器的运行状态收集而来,而是由一款能在网络上与其他机器进行交流的软件收集得到的。同样的道理,在斯坦福大学与加州大学圣芭芭拉分校之间传输文件的情景下,也没有人守在两所大学的终端旁边,特区的终端用户仅仅使用了一款软件,就能让其他两地的计算机连接起来。此外,这一点无关乎你使用的是宴会厅里的哪一台电脑,因为只要输入同样的命令序列,就能在任意一台电脑上浏览 MIT 的网络监视数据,或者在加州大学圣芭芭拉分校的计算机上储存文件。
这才是 ARPANET 的全新之处。本次国际计算机通信会议演示的不仅仅是人与远程电脑之间的交互,也不仅仅是远程输入输出的操作,更是一个软件与其他软件之间的远程通讯,这一点才是史无前例的。
为什么这一点才是最重要的,而不是地图上画着的那些贯穿整个美国、实际连接起来的电线呢(这些线是租赁的电话线,而且它们以前就在那了!)?要知道,早在 1966 年 ARPANET 项目启动之前,美国国防部的高级研究计划署打造了一间终端室,里面有三台终端。三台终端分别连接着位于 MIT、加州大学伯克利分校以及圣塔莫尼卡三地的计算机 [12][14]。对于高级研究计划署的工作人员来说,即便他们身处华盛顿特区,使用这三台计算机也非常方便。不过,这其中也有不便之处:工作人员必须购买和维护来自三家不同制造商的终端,牢记三种不同的登录步骤,熟悉三种不同的计算环境。虽然这三台终端机可能就放在一起,但是它们只是电线另一端主机系统的延申,而且操作也和那些计算机一样各不相同。所以说,在 ARPANET 项目诞生之前,远程连接计算机进行通讯就已经实现了,但问题是不同的计算系统阻碍了通讯朝着更加先进复杂的方向发展。
### 此刻,集合起来
因此我想说的是说法一ARPANET 首次通过计算机将不同地方的人们连接了起来与说法二ARPANET 首次将多个计算机系统彼此连接了起来)之间有着云泥之别。听起来似乎有些吹毛求疵,咬文嚼字,但是相较于说法二,说法一忽略了一些重要的历史发展阶段。
首先历史学家乔伊·利西·兰金Joy Lisi Rankin指出早在 ARPANET 诞生之前人们就已经在网络空间中进行交流了。在《美国人民的计算机历史》_A Peoples History of Computing in the United States_一书中兰金介绍了多个覆盖全国的数字社区这些社区运行在早于 ARPANET 的分时网络上面。从技术层面讲分时网络并不属于计算机网络因为它仅仅由一台大型主机构成。这种计算机放置在地下室中为多台哑终端提供计算颇像一只又黑又胖的奇怪生物触手向外伸展着遍及整个美国。不过在分时网络时代被后社交媒体时代称为“网络”的大部分社会行为应有尽有。例如Kiewit 网络是达特茅斯分时系统的延申应用,服务于美国东北部的各个大学和高中。在 Kiewit 网络上,高中生们共同维护着一个“<ruby>八卦文件<rt>gossip file</rt></ruby>”,用来记录其他学校发生的趣闻趣事,“在康涅狄格州和缅因州之间建立起了社交联系” [13][15]。同时,曼荷莲女子学院的女生通过网络与达特茅斯学院的男生进行交流,或者是安排约会,或者是与男朋友保持联系 [14][16]。这些事实都发生在上世纪六十年代。兰金认为,如果忽视了早期的分时网络,我们对美国过去 50 年数字文化发展的认识必然是贫瘠的:我们眼里可能只有所谓的“<ruby>硅谷神话<rt>Silicon Valley mythology</rt></ruby>”,认为计算机领域的所有发展都要归功于少数的几位天才,或者说互联网科技巨头的创始人。
回到 ARPANET如果我们能意识到真正的困难是计算机 _系统_ 的联通,而非机器本身的连接,那么在探讨 ARPANET 的创新点时我们就会更加倾向于第二种说法。ARPANET 是第一个包交换网络涉及到许多重要的技术应用。但是如果仅仅因为这项优势就说它是一项突破我觉得这种说法本身就是错的。ARPANET 旨在促进全美计算机科学家之间的合作目的是要弄明白不同的操作系统与不同语言编写的软件如何配合使用而非如何在麻省和加州之间实现高效的数据传输。因此ARPANET 不仅是第一个包交换网络,它还是一项非常成功且优秀的标准。在我看来,后者更有意思,毕竟我在博客上曾经写过许多颇有瑕疵的标准:[语义网][17]、[RSS][18] 与 [FOAF ][19]。
ARPANET 项目初期没有考虑到网络协议,协议的制定是后来的事情了。因此,这项工作自然落到了主要由研究生组成的组织——<ruby>国际网络工作组<rt>Network Working Group</rt></ruby> 身上。该组织的首次会议于 1968 年在加州大学圣芭芭拉分校举办 [15][20]。当时只有 12 人参会,大部分都是来自上述四所大学的代表 [16][21]。来自加州大学洛杉矶分校的研究生史蒂夫·克罗克Steve Crocker参加了这场会议。他告诉我工作组首次会议的参会者清一色都是年轻人最年长的可能要数会议主席埃尔默·夏皮罗Elmer Shapiro他当年 38 岁左右。高级研究计划署没有安排负责研究计算机连接之后如何进行通信的人员,但是很明显它需要提供一定的协助。随着工作组会议的陆续开展,克罗克一直期望着更有经验与威望的“法定成年人”从东海岸飞过来接手这项工作,但是期望终究还是落空了。在高级研究计划署的默许之下,工作组举办了多场会议,其中包括很多长途旅行,差旅费由计划署报销,这些就是计划署给与工作组的全部协助了 [17][22]。
当时,国际网络工作组面临着巨大的挑战。组内成员都没有使用通用方式连接计算机系统的经验,而且这本来就与上世纪六十年代末计算机领域盛行的全部观点相悖:
> 那个时候的主机就像是全世界唯一的一台计算机。即便是最简短的交流会话,两台主机也无法轻易做到。并不是说机器没办法相互连接,只是连接之后,两台计算机又能做些什么呢?当时,计算机和与其相连的其他设备之间的通讯,就像帝王与群臣之间的对话一般。连接到主机的设备各自执行着自己的任务,每台外围设备都保持着常备不懈的状态,等待着上司的命令。当时的计算机就是严格按照这类交流需求设计出来的;它们向读卡器、终端与磁带机等下属设备发号施令,发起所有会话。但是,如果一台计算机拍了拍另一台计算机的肩膀,说道,“你好,我也是一台计算机”,那么另一台计算机可就傻眼了,什么也回答不上来 [18][23]。
于是,工作组的最初进展比较缓慢 [19][24]。直到 1970 年 6 月,也就是首次会议将近两年之后,工作组才为网络协议选定了一套官方规范 [20][25]。
到了 1972 年,在国际计算机通信会议上展示 ARPANET 的时候,所有的协议已经准备到位了。会议期间,这些协议运用到了国际象棋等情景之中。用户运行 `@e r` 命令(`@echo remote` 命令的缩写形式),可以指示 TIP 使用新远程登录虚拟终端协议提供的服务,通知远程主机回显用户输入的内容。接着,用户运行 `@L 134` 命令(`@login 134` 命令的缩写形式),让 TIP 在 134 号主机上调用<ruby>初始连接协议<rt>Initial Connection Protocol</rt></ruby>,该协议指示远程主机分配出连接所需的全部必要资源,并将用户带入远程登录会话中。上述文件传输的情景也许用到了 <ruby>文件传输协议<rt>File Transfer Protocol</rt></ruby>,而该协议恰好是在大会举办前夕才刚刚完成的 [21][26]。所有这些协议都是“三层”协议,其下的第二层是主机到主机层协议,定义了主机之间可以相互发送和接收的信息的基本格式;第一层是主机到接口通信处理机协议,定义了主机如何与连接的远程设备进行通信。令人感到不可思议的是,这些协议都能正常运行。
在我看来,网络工作组之所以能够在大会举办之前做好万全的准备,顺利且出色地完成任务,在于他们采用了开放且非正式的标准化方法,其中一个典型的例子就是著名的 Request for CommentsRFC系列文档。RFC 文档最初通过传统邮件供工作组成员进行传阅让成员们在没有举办会议的时候也能保持联系同时收集成员反馈汇集各方智慧。RFC 框架是克罗克提出的,他写出了第一篇 RFC 文档,并在早期负责管理 RFC 的邮寄列表。他这样做是为了强调工作组开放协作的活动本质。有了这套框架以及触手可及的文档ARPANET 的协议设计过程成了一个大熔炉每个人都可以贡献出自己的力量步步推进精益求精让最棒的想法脱颖而出使得每一位贡献者都值得尊敬。总而言之RFC 获得了巨大成功,并且直至今天,长达半个世纪之后,它依旧是网络标准的“说明书”。
因此,说起 ARPANET 的影响力,我认为不得不强调的一点正是工作组留下的这一成果。今天,互联网可以把世界各地的人们连接起来,这也是它最神奇的属性之一。不过如果说这项技术到了上世纪才开始使用,那可就有些滑稽可笑了。要知道,在 ARPANET 出现之前,人们就已经通过电报打破了现实距离的限制。而 ARPANET 打破的应该是各个主机站点因使用不同的操作系统、字符编码、程序语言以及组织策略而在逻辑层面产生的差异限制。当然,不得不提的是,将第一个包交换网络投入使用在技术方面绝对是一大壮举。不过,在建立 ARPANET 网络过程中遇到的两大难题中,更为复杂的一项则是制定统一的标准并用以连接原本无法相互协作的计算机。而这一难题的解决方案,也成了 ARPANET 整个建立与发展历史中最为神奇的一个章节。
1981 年,高级研究计划署发表了一份“完工报告”,回顾了 ARPANET 项目的第一个十年。在《付出收获了回报的技术方面以及付出未能实现最初设想的技术方面》这一冗长的小标题下,作者们写道:
> 或许,在 ARPANET 的开发过程中,最艰难的一项任务就是,尽管主机制造商各不相同,或者同一制造商下操作系统各不相同,我们仍需在众多的独立主机系统之间实现通讯交流。好在这项任务后来取得了成功 [22][27]。
你可以从美国联邦政府获得相关信息。
_如果你喜欢这篇文章欢迎关注推特 [@TwoBitHistory][28],也可通过 [RSS feed][29] 订阅获取最新文章。_
1. “Hilton Hotel Opens in Capital Today.” _The New York Times_, 20 March 1965, <https://www.nytimes.com/1965/03/20/archives/hilton-hotel-opens-in-capital-today.html?searchResultPosition=1>. Accessed 7 Feb. 2021. [↩︎][31]
2. James Pelkey. _Entrepreneurial Capitalism and Innovation: A History of Computer Communications 1968-1988,_ Chapter 4, Section 12, 2007, <http://www.historyofcomputercommunications.info/Book/4/4.12-ICCC%20Demonstration71-72.html>. Accessed 7 Feb. 2021. [↩︎][32]
3. Katie Hafner and Matthew Lyon. _Where Wizards Stay Up Late: The Origins of the Internet_. New York, Simon &amp; Schuster, 1996, p. 178. [↩︎][33]
4. “International Conference on Computer Communication.” _Computer_, vol. 5, no. 4, 1972, p. c2, <https://www.computer.org/csdl/magazine/co/1972/04/01641562/13rRUxNmPIA>. Accessed 7 Feb. 2021. [↩︎][34]
5. “Program for the International Conference on Computer Communication.” _The Papers of Clay T. Whitehead_, Box 42, <https://d3so5znv45ku4h.cloudfront.net/Box+042/013_Speech-International+Conference+on+Computer+Communications,+Washington,+DC,+October+24,+1972.pdf>. Accessed 7 Feb. 2021. [↩︎][35]
6. 我其实并不清楚 ARPANET 是在哪个房间展示的。很多地方都提到了“宴会厅”,但是华盛顿希尔顿酒店更习惯于叫它“乔治敦”,而不是把它当成一间会议室。因此,或许这场展示是在国际宴会厅举办的。但是 RFC 372 号文件又提到了预定“乔治敦”作为展示场地一事。华盛顿希尔顿酒店的楼层平面图可以点击 [此处][36] 查看。 [↩︎][37]
7. Hafner, p. 179. [↩︎][38]
8. ibid., p. 178. [↩︎][39]
9. Bob Metcalfe. “Scenarios for Using the ARPANET.” _Collections-Computer History Museum_, <https://www.computerhistory.org/collections/catalog/102784024>. Accessed 7 Feb. 2021. [↩︎][40]
10. Hafner, p. 176. [↩︎][41]
11. Robert H. Thomas. “Planning for ACCAT Remote Site Operations.” BBN Report No. 3677, October 1977, <https://apps.dtic.mil/sti/pdfs/ADA046366.pdf>. Accessed 7 Feb. 2021. [↩︎][42]
12. Hafner, p. 12. [↩︎][43]
13. Joy Lisi Rankin. _A Peoples History of Computing in the United States_. Cambridge, MA, Harvard University Press, 2018, p. 84. [↩︎][44]
14. Rankin, p. 93. [↩︎][45]
15. Steve Crocker. Personal interview. 17 Dec. 2020. [↩︎][46]
16. 克罗克将会议记录文件发给了我,文件列出了所有的参会者。[↩︎][47]
17. Steve Crocker. Personal interview. [↩︎][48]
18. Hafner, p. 146. [↩︎][49]
19. “Completion Report / A History of the ARPANET: The First Decade.” BBN Report No. 4799, April 1981, <https://walden-family.com/bbn/arpanet-completion-report.pdf>, p. II-13. [↩︎][50]
20. 这里我指的是 RFC 54 号文件中的“官方协议”。[↩︎][51]
21. Hafner, p. 175. [↩︎][52]
22. “Completion Report / A History of the ARPANET: The First Decade,” p. II-29. [↩︎][53]
--------------------------------------------------------------------------------
via: https://twobithistory.org/2021/02/07/arpanet.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]: https://en.wikipedia.org/wiki/ARPANET
[2]: tmp.pnPpRrCI3S#fn:1
[3]: tmp.pnPpRrCI3S#fn:2
[4]: tmp.pnPpRrCI3S#fn:3
[5]: tmp.pnPpRrCI3S#fn:4
[6]: tmp.pnPpRrCI3S#fn:5
[7]: tmp.pnPpRrCI3S#fn:6
[8]: tmp.pnPpRrCI3S#fn:7
[9]: tmp.pnPpRrCI3S#fn:8
[10]: https://archive.computerhistory.org/resources/access/text/2019/07/102784024-05-001-acc.pdf
[11]: tmp.pnPpRrCI3S#fn:9
[12]: tmp.pnPpRrCI3S#fn:10
[13]: tmp.pnPpRrCI3S#fn:11
[14]: tmp.pnPpRrCI3S#fn:12
[15]: tmp.pnPpRrCI3S#fn:13
[16]: tmp.pnPpRrCI3S#fn:14
[17]: https://twobithistory.org/2018/05/27/semantic-web.html
[18]: https://twobithistory.org/2018/12/18/rss.html
[19]: https://twobithistory.org/2020/01/05/foaf.html
[20]: tmp.pnPpRrCI3S#fn:15
[21]: tmp.pnPpRrCI3S#fn:16
[22]: tmp.pnPpRrCI3S#fn:17
[23]: tmp.pnPpRrCI3S#fn:18
[24]: tmp.pnPpRrCI3S#fn:19
[25]: tmp.pnPpRrCI3S#fn:20
[26]: tmp.pnPpRrCI3S#fn:21
[27]: tmp.pnPpRrCI3S#fn:22
[28]: https://twitter.com/TwoBitHistory
[29]: https://twobithistory.org/feed.xml
[30]: https://twitter.com/TwoBitHistory/status/1277259930555363329?ref_src=twsrc%5Etfw
[31]: tmp.pnPpRrCI3S#fnref:1
[32]: tmp.pnPpRrCI3S#fnref:2
[33]: tmp.pnPpRrCI3S#fnref:3
[34]: tmp.pnPpRrCI3S#fnref:4
[35]: tmp.pnPpRrCI3S#fnref:5
[36]: https://www3.hilton.com/resources/media/hi/DCAWHHH/en_US/pdf/DCAWH.Floorplans.Apr25.pdf
[37]: tmp.pnPpRrCI3S#fnref:6
[38]: tmp.pnPpRrCI3S#fnref:7
[39]: tmp.pnPpRrCI3S#fnref:8
[40]: tmp.pnPpRrCI3S#fnref:9
[41]: tmp.pnPpRrCI3S#fnref:10
[42]: tmp.pnPpRrCI3S#fnref:11
[43]: tmp.pnPpRrCI3S#fnref:12
[44]: tmp.pnPpRrCI3S#fnref:13
[45]: tmp.pnPpRrCI3S#fnref:14
[46]: tmp.pnPpRrCI3S#fnref:15
[47]: tmp.pnPpRrCI3S#fnref:16
[48]: tmp.pnPpRrCI3S#fnref:17
[49]: tmp.pnPpRrCI3S#fnref:18
[50]: tmp.pnPpRrCI3S#fnref:19
[51]: tmp.pnPpRrCI3S#fnref:20
[52]: tmp.pnPpRrCI3S#fnref:21
[53]: tmp.pnPpRrCI3S#fnref:22

View File

@ -0,0 +1,67 @@
[#]: collector: "lujun9972"
[#]: translator: "Veryzzj"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: subject: "How I prioritize tasks on my to-do list"
[#]: via: "https://opensource.com/article/21/1/prioritize-tasks"
[#]: author: "Kevin Sonney https://opensource.com/users/ksonney"
如何确定待办事项上任务的优先级
======
使用艾森豪威尔矩阵更好地安排你的待办事项的优先次序。
![Team checklist and to dos][1]
在前几年这个年度系列涵盖了单个应用程序。今年除了策略之外我们还将着眼于一体式解决方案以在2021提供帮助。欢迎来到2021年“21天生产力”活动的第4天。在本文中将研究一种在待办事项上确定任务优先级的策略。想要找到适合你日常工作的开源工具请查看[此列表][2]。
把事情添加到任务或待办事项中很容易。几乎太容易了。而一旦列入清单,挑战就变成了弄清楚先做什么。我们要做清单首位的事情吗?清单首位的事情是最重要的吗?如何弄清楚最重要的事是什么?
![To-do list][3]
要做的事。今天明天谁知道呢Kevin Sonney, [CC BY-SA 4.0][4]
[与电子邮件一样][5],我们可以根据一些事情来确定任务的优先级,这可以让我们弄清楚什么事情需要先做,什么可以等到以后再做。
我使用一种被称为_艾森豪威尔矩阵_ 的方法,它取自美国总统 Dwight D. Eisenhower 的一句话。画一个水平和垂直分割的方框。在列上标明“紧急”和“不紧急”,在行上标明“重要”和“不重要”。
![Eisenhower matrix][6]
 一个艾森豪威尔矩阵。Kevin Sonney, [CC BY-SA 4.0][4]
你可以把待办事项上的任务放在其中一个框里。但如何知道一个任务应该放在哪里?紧迫性和重要性往往是主观的。因此,第一步就是决定什么对你来说是重要的。我的家庭(包括宠物)、工作和爱好都很重要。如果待办事项上的东西与这三件事无关,我可以立即把它放到 “不重要”行。
紧迫性是一个比较简单的问题。一件事需要在今天或明天完成吗?那么它可能是“紧急的”。一件事是否有一个即将到来的最后期限,但离那个时间还有几天/几周/几个月,或者它根本就没有最后期限?当然是“不急的”。
现在我们可以将这些框转化为优先级。“紧急/重要”是最高优先级(即第一优先级),需要首先完成。接下来是“不紧急/重要”优先级2然后是“紧急/不重要”优先级3最后是“不紧急/不重要”优先级4或根本没有优先级
请注意,"紧急/不重要 "是第三位,而不是第二位。这是因为,人们花了很多时间在那些看似重要的事情上,只是因为它们比较紧急,实际上这些事并不是重要的。当我看到这类事项时,我会问自己一些问题。 这些任务需要我具体完成吗?这些任务我可以要求其他人去做吗?它们对其他人来说是否重要和紧急?而这是否改变了它们对我的重要性?也许它们需要重新分类,或者我可以要求别人完成,并将它们从我的清单中删除。
![After prioritizing][7]
确定优先级后。 Kevin Sonney, [CC BY-SA 4.0][4]
对于”不紧急/不重要“框中的事项,有一个问题要问,那就是“这些事情到底需不需要放在我的清单上?”说实话,我们经常用那些不紧急或不重要的事情来填满待办事项清单,但其实完全可以将它们从清单上删除。我知道承认“这事永远不会完成”是很难的,但在接受这个事实后,把这个事情从清单上删除并且不用再为它担心,是一种解脱。
经过这一切,看着清单很容易说出:“这是我现在需要做的事情。“然后完成它。这就是待办事项的作用:为一天提供指导和重点。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/1/prioritize-tasks
作者:[Kevin Sonney][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/ksonney
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf "Team checklist and to dos"
[2]: https://opensource.com/article/20/5/alternatives-list
[3]: https://opensource.com/sites/default/files/pictures/to-do-list.png "To-do list"
[4]: https://creativecommons.org/licenses/by-sa/4.0/
[5]: https://opensource.com/article/21/1/email-rules
[6]: https://opensource.com/sites/default/files/pictures/eisenhower-matrix.png "Eisenhower matrix"
[7]: https://opensource.com/sites/default/files/pictures/after-prioritizing.png "After prioritizing"

View File

@ -1,67 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (MareDevi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (How open source builds distributed trust)
[#]: via: (https://opensource.com/article/21/1/open-source-distributed-trust)
[#]: author: (Mike Bursell https://opensource.com/users/mikecamel)
开源如何构建分布式信任
======
对开源的信任是一个积极的反馈循环。
![信任][1]
这是我即将为[Wiley][2]出版的《计算和云计算中的信任》Trust in Computing and the Cloud一书中经过编辑的节选也是我之前写的一篇文章[_《信任与选择开源》_][3](_Trust &amp; choosing open source_)的延伸。
在那篇文章中,我提出了一个问题。当我们说 "我相信开放源码软件 "时,我们在做什么?作为回答,我认为,我们正在做的是确定有足够多的编写和测试该软件的人与我有类似的要求,而且他们的专业知识加在一起,使我使用该软件的风险可以接受。我同时也介绍了 "分布式信任 "的概念。
在社区内分配信任的概念是亚里士多德提出的“人群智慧理论”的应用,其中的假设是,许多人的意见通常比一个人或少数人的意见更有明智。虽然在某些情况下,最简单的形式显然是错误的——最明显的例子是民众对极权主义政权的支持——但这一原则可以提供一个非常有效的机制来建立某些信息。
我们称这种集体经验的提炼为“分布式信任”它通过互联网上的许多机制收集。如TripAdvisor或Glassdoor记录了关于组织或其提供的服务的信息,还有像UrbanSitter或LinkedIn允许用户添加关于特定人的信息例如见LinkedIn的推荐和技能与个人档案中的认可部分。从这些例子中可以获得的利益因网络效应而大大增加因为随着成员数量的增加成员之间可能的联系数量也成倍增加。
分布式信任的例子还包括像Twitter这样的平台一个账户的追随者数量可以被视为衡量其声誉甚至是衡量其可信度的标准我们应该以强烈的怀疑态度去看待这种计算。 事实上Twitter认为它必须解决拥有大量追随者的账户的社会力量问题并建立了一个为 "验证账户 "机制,让人们知道 "一个具有公共利益的账户是真实的"。但是有趣的是,该公司不得不暂停这项服务,因为用户对 "验证 "的确切含义或暗示的期望出现了问题:这就是不同群体之间对内容理解不同的典型案例。
那么,开源的相关性在哪里呢?开源的社区方面实际上就是建立分布式信任的一个驱动力。因为一旦你成为一个开源项目周围社区的一部分,你就会承担一个或多个角色,一旦你说你 "信任 "一个开源项目你就会开始信任这些角色见我之前的文章。例如建筑师、设计师、开发人员、审查员、技术作家、测试员、部署员、错误报告者或错误修复者。你对一个项目的参与越多你就越是社区的一部分久而久之这就可以成为一个“实践社区”community of practice
Jean Lave和Etienne Wenger在[_《情境学习正当的外围参与》_][4](_Situated Learning: Legitimate Peripheral Participation_)一书中提出了实践社区的概念,团体在成员热情分享和参与共同活动的过程中演变成社区,导致他们的技能和知识共同提高。这里的核心概念是:当参与者在实践社区周围学习时,他们同时也成为社区的成员。
> “正当的的外围参与既指在实践中知识,技能,身份的发展,也指实践社区的再生产和转化。”
Wenger在[_《实践社区学习、意义和身份》_][5]_Communities of Practice: Learning, Meaning, and Identity_中进一步探讨了实践社区的概念:它们如何形成、对其健康的要求,以及它们如何鼓励学习。他认为,意义的可协商性("我们为什么要一起工作,我们要实现什么?")是实践社区的核心,并指出,如果没有个人的参与、想象力和一致性,实践社区将不会有活力。
我们可以把这一点与我们对分布式信任如何建立和构建的看法结合起来:当你意识到你对开源的影响可以与其他人的影响相同时,你对社区成员的分布式信任关系就变得不那么具有传递性(第二或第三手甚至更遥远),而是更加直接。你明白,你对你所运行的软件的创建、维护、需求和质量所能产生的影响,可以与所有其他以前匿名的贡献者一样,你现在正在与他们形成一个实践社区,或者你正在加入他们的现有实践社区。然后,你就会成为一个信任关系网络的一部分,这个网络是分布式的,但与你购买和操作专利软件时的经历相差不大。
这个过程并不会停止:因为开源项目的一个共同属性是“交叉授粉”,即一个项目的开发者也在其他项目上工作。由于多个开源项目之间的网络效应,使得对其他项目的重用和依赖性上升,导致整个项目的吸收量增加。
这就很容易理解为什么许多开源贡献者会成为开源爱好者或传道者,不仅仅是为单个项目,而是为整个开源项目。事实上,斯坦福大学社会学家[Mark Granovetter][6]的工作表明,社区内太多的强关系会导致小团体和停滞不前,但弱关系会使思想和趋势在社区内流动。这种对其他项目和围绕它们存在的社区的认识,以及想法在项目间的灵活性,导致分布式信任能够被扩展(尽管保证比较弱),超越贡献者在他们有直接经验的项目中所经历的直接或短链间接关系,并向其他项目扩展,因为外部观察或外围参与显示贡献者之间存在类似关系。
简单地说,参与开源项目并通过参与建立信任关系的行为会导致对类似的开源项目或只是对其他类似的开源项目产生更强的分布式信任。
这对我们每个人来说意味着什么?它意味着我们越是参与开源,我们对开源的信任度就越高,而其他人对开源的参与度也会相应提高,从而对开源的信任度也会提高。对开源的信任不仅仅是一个网络效应:它是一个积极的反馈循环!
* * *
_本文最初发表于[Alice, Eve, and Bob][7]经作者许可转载。_
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/1/open-source-distributed-trust
作者:[Mike Bursell][a]
选题:[lujun9972][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/mikecamel
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_trust.png?itok=KMfi0Rdo (Trust)
[2]: https://wiley.com/
[3]: https://aliceevebob.com/2019/06/18/trust-choosing-open-source/
[4]: https://books.google.com/books/about/Situated_Learning.html?id=CAVIOrW3vYAC
[5]: https://books.google.com/books?id=Jb8mAAAAQBAJ&dq=Communities%20of%20Practice:%20Learning,%20meaning%20and%20identity&lr=
[6]: https://en.wikipedia.org/wiki/Mark_Granovetter
[7]: https://aliceevebob.com/2020/11/17/how-open-source-builds-distributed-trust/

View File

@ -1,165 +0,0 @@
[#]: subject: (Why FreeDOS has 16 colors)
[#]: via: (https://opensource.com/article/21/6/freedos-sixteen-colors)
[#]: author: (Jim Hall https://opensource.com/users/jim-hall)
[#]: collector: (lujun9972)
[#]: translator: (gpchn)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
为什么 FreeDOS 有 16 种颜色
======
为什么文本只能使用这些有限的颜色显示,为什么 FreeDOS 使用这些颜色和阴影,而不是其他颜色?
答案就像技术中的许多事情一样,因为历史。
![在 1980 年代计算机上打字][1]
如果您仔细了解过 FreeDOS您可能已经注意到文本有有限的颜色范围——16 种文本颜色和 8 种背景颜色。这类似于 Linux 显示文本颜色的方式——您或许能够在 Linux 终端中更改 _文本颜色_,但您仍然只能使用 16 种文本颜色和 8 种背景颜色。
![终端颜色][2]
DOS 文本有 16 种颜色和 8 种背景颜色
(吉姆·霍尔,[CC-BY SA 4.0][3]
为什么文本只能使用这些有限的颜色显示,为什么 FreeDOS 使用这些颜色和阴影,而不是其他颜色?
答案就像技术中的许多事情一样,因为历史。
### PC 色彩的由来
为了解释为什么文本只有十六种颜色,让我给你讲一个关于第一台 IBM 个人计算机的故事。这个故事的部分内容可能有些杜撰,但基本内容已经足够接近。
IBM 于 1981 年发布了个人计算机 5150“IBM PC”。该 PC 使用了一个简单的监视器屏幕,以绿色显示文本。由于此显示器仅适用于一种颜色,因此被称为 _monochrome_“IBM 5151 单色显示器”,搭载 IBM Monochrome Display Adapter 卡或“MDA”
同年IBM 发布了 PC 的更新版本,具有惊人的技术成就——颜色!新的 IBM 5153 彩色显示器依赖于新的 IBM 彩色图形适配器或“CGA”。正是由于这个原始的 CGA所有的 DOS 文本都继承了它们的颜色。
但在我们讨论那一部分之前,我们首先需要了解一些关于颜色的东西。当我们谈论计算机屏幕上的颜色时,我们谈论的是混合 _三原色_(红色、绿色和蓝色)的不同值。您可以将不同级别(或“亮度”)的红光、绿光和蓝光混合在一起,以创建几乎任何颜色。混合红色和蓝色光,你会得到洋红色。混合蓝色和绿色,你会得到青色或浅绿色。均匀地混合所有颜色,你会得到白色。没有任何浅色,您会看到黑色(没有颜色)。
![三原色][4]
混合红色、绿色和蓝色光以获得不同的颜色
(吉姆·霍尔,[CC-BY SA 4.0][3]
IBM 5153 彩色显示器通过在阴极射线管“CRT”上点亮微小的红色、绿色和蓝色光点来向用户呈现颜色。这些小点排列得非常紧密并以红色、绿色和蓝色的三色点组成一个“像素”的模式排列。通过控制同时点亮哪些荧光点IBM 5153 彩色显示器可以显示不同颜色的像素。
![CRT 像素][5]
每个红色、绿色和蓝色三元组都是一个像素
(吉姆·霍尔,[CC-BY SA 4.0][3]
顺便说一句,即使是现代显示器也使用这种红色、绿色和蓝色点的组合来表示颜色。现代计算机的不同之处在于,每个像素都使用红色、绿色和蓝色 LED 灯(通常并排排列),而不是微小的荧光点。计算机可以打开或关闭每个 LED 灯,以混合每个像素中的红色、绿色和蓝色。
![液晶像素][6]
每个红色、绿色和蓝色三元组都是一个像素
(吉姆·霍尔,[CC-BY SA 4.0][3]
### 定义 CGA 颜色
IBM 工程师意识到他们可以通过混合红色、绿色和蓝色像素来显示多种颜色。在最简单的情况下您可以假设单个像素中的每个红色、绿色和蓝色点要么“开”要么“关”。正如任何计算机程序员都会告诉你的那样你可以将“on”和“off”表示为二进制——11=on和00=off
用1或0表示红色、绿色和蓝色意味着您可以组合多达八种颜色从 000红色、绿色和蓝色都关闭到 111红色、绿色和蓝色都打开。请注意位模式类似于“RGB”因此 RGB=001 是蓝色的只有蓝色是打开的RGB=011 是青色的(绿色和蓝色都打开了):
| |
| :----: |
| 000 Black |
| 001 Blue |
| 010 Green |
| 011 Cyan |
| 100 Red |
| 101 Magenta |
| 110 Yellow |
| 111 White |
但这只是最简单的情况。一位特别聪明的 IBM 工程师意识到,只需再添加一点,您就可以将颜色数量从 8 种颜色增加到 16 种。因此,我们可以使用像 iRGB 这样的位模式,而不是像 RGB 这样的位模式。我们将把这个额外的“i”位称为“强度”位因为如果我们将“强度”位设置为 1那么我们将在全亮度下点亮红色、绿色和蓝色如果“强度”位为 0关闭我们可以使用一些中级亮度。
有了这个简单的修复程序,现在 CGA 可以显示 16 种颜色为了简单起见IBM 工程师将高强度颜色称为常规颜色名称的“明亮”版本。因此,“红色”与“亮红色”配对,“洋红色”与“亮洋红色”配对。
| | |
| :----: | :----: |
| 0000 Black | 1000 Bright Black |
| 0001 Blue | 1001 Bright Blue |
| 0010 Green | 1010 Bright Green |
| 0011 Cyan | 1011 Bright Cyan |
| 0100 Red | 1100 Bright Red |
| 0101 Magenta | 1101 Bright Magenta |
| 0110 Yellow | 1110 Bright Yellow |
| 0111 White | 1111 Bright White |
哦不,等等!这实际上不是十六种颜色。如果您注意到 iRGB=0000黑色和 iRGB=1000亮黑色它们都是相同的_黑色_。没有颜色可以“亮”所以它们都是普通的黑色。这意味着我们只有 15 种颜色而不是我们希望的16种颜色。
但 IBM 有聪明的工程师为他们工作,他们意识到如何解决这个问题以获得 16 种颜色。IBM 实际上没有实现直接的 RGB 到 iRGB而是实现了_类_ iRGB 方案。随着这一变化IBM 为每个光点设置了四个亮度级别完全关闭、三分之一亮度、三分之二亮度和全亮度。如果“亮度”位被关闭那么每个红色、绿色和蓝色光点将以三分之二的亮度点亮。如果您打开“亮度”位RGB 颜色中的所有 0 都将以三分之一的亮度点亮,而所有 1 都将以全亮度点亮。
让我用另一种方式向您描述这一点,使用 Web 颜色代码表示。如果您熟悉 HTML 颜色,您可能知道您可以使用 #RGB 表示颜色,其中 RGB 表示红色、绿色和蓝色值的组合,每个值都在十六进制值 0 到 F 之间。因此,使用 IBM 修改后的 iRGB 定义iRGB=0001 是 #00a蓝色iRGB=1001 是 #55f亮蓝色因为对于高亮度颜色RGB=001 中的所有零点都以三分之一的亮度点亮0 到 F 刻度上的“5”左右RGB=001 中的所有零点都以三分之二的亮度点亮0 到 F刻度上的“A”
| | |
| :----: | :----: |
| 0000 Black | 1000 Bright Black |
| 0001 Blue | 1001 Bright Blue |
| 0010 Green | 1010 Bright Green |
| 0011 Cyan | 1011 Bright Cyan |
| 0100 Red | 1100 Bright Red |
| 0101 Magenta | 1101 Bright Magenta |
| 0110 Yellow | 1110 Bright Yellow |
| 0111 White | 1111 Bright White |
有了这些颜色,我们终于完成了!我们拥有从 iRGB=0000黑色到 iRGB=1111亮白色以及介于两者之间的所有颜色的全光谱。 就像彩虹般的颜色,这很漂亮。
除了……不,等等,这里有问题!我们实际上还不能复制彩虹的所有颜色。我们在小学学到的方便的助记符是 ROYGBIV它可以帮助我们记住彩虹的颜色有红色、橙色、黄色、绿色、蓝色、靛蓝和紫色。我们修改后的 iRGB 配色方案包括红色、黄色、绿色和蓝色——我们可以将其“伪造”为靛蓝和紫色,但是我们缺少橙色。遭了!
![彩虹][7]
一条美丽的彩虹——不幸的是它含有橙色。
[Paweł Fijałkowski][8],公共)
为了解决这个问题,聪明的 IBM 工程师对 RGB=110 做了最后的修复。高强度颜色(iRGB=1110) 以全亮度点亮红色和绿色荧光粉点以产生黄色但是在低亮度颜色iRGB=0110他们以三分之二的亮度点亮红色以三分之一的亮度点亮绿色。这将 iRGB=0110 变成了橙色——尽管它后来被称为“棕色”,因为 IBM 不得不在某处弄乱标准名称。
| | |
| :----: | :----: |
| 0000 Black | 1000 Bright Black |
| 0001 Blue | 1001 Bright Blue |
| 0010 Green | 1010 Bright Green |
| 0011 Cyan | 1011 Bright Cyan |
| 0100 Red | 1100 Bright Red |
| 0101 Magenta | 1101 Bright Magenta |
| 0110 Brown | 1110 Yellow |
| 0111 White | 1111 Bright White |
这就是 CGA 以及扩展的 DOS 获得十六种颜色的方式!如果您好奇,这也是为什么会有“亮黑色”的原因,即使它只是一种灰色阴影。
### 表示颜色bit 和 byte
但是你可能想知道:为什么 DOS 可以显示 16 种文本颜色,却只能显示 8 种背景颜色?为此,我们需要快速了解计算机如何将颜色信息传递给 CGA 卡。
简而言之CGA 卡希望将每个字符的文本颜色和背景颜色编码在一个字节数据包中,一共八位。那么八位是从哪里来的呢?
我们刚刚了解了 iRGB四位如何生成十六种颜色。文本颜色使用 iRGB 四位背景颜色仅限于八种低强度颜色RGB三位加起来只有七位。丢失的第八位在哪里
最后一点可能是为 DOS 时代最重要的用户界面元素保留的——闪烁文本。虽然今天闪烁的文本可能很烦人,但在整个 1980 年代初期,闪烁的文本是表示错误消息等关键信息的友好方式。
将这个“闪烁”位添加到三个背景颜色位 (RGB) 和四个文本颜色位 (iRGB) 中会产生八个位或一个字节!计算机喜欢以完整字节为单位进行计数,这使其成为将颜色(和闪烁)信息传输到计算机的便捷方式。
因此表示颜色和闪烁的完整字节是“Bbbbffff”其中“ffff”是文本颜色的 iRGB 位模式(从 0 到 15“bbb”是低强度的 RGB 位模式背景颜色(从 0 到 7`B` 是“闪烁”位。
十六种文本颜色和八种背景颜色的限制一直持续到今天。当然DOS 坚持使用这种颜色组合,但即使是像 GNOME 终端这样的 Linux 终端仿真器也仍然受限于 16 种文本颜色和 8 种背景颜色。当然Linux 终端可能允许您更改使用的特定颜色,但您仍然限于十六种文本颜色和八种背景颜色。为此,您要感谢 DOS 和最初的 IBM PC。别客气
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/6/freedos-sixteen-colors
作者:[Jim Hall][a]
选题:[lujun9972][b]
译者:[gpchn](https://github.com/gpchn)
校对:[校对者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/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/1980s-computer-yearbook.png?itok=eGOYEKK- (Person typing on a 1980's computer)
[2]: https://opensource.com/sites/default/files/uploads/16colors.png (DOS text comes in 16 colors and 8 background colors)
[3]: https://creativecommons.org/licenses/by-sa/4.0/
[4]: https://opensource.com/sites/default/files/uploads/rgb.svg_.png (Mix red, green, and blue light to get different colors)
[5]: https://opensource.com/sites/default/files/uploads/crt.svg_.png (Each red, green, and blue triad is a single pixel)
[6]: https://opensource.com/sites/default/files/uploads/lcd.svg_.png (Each red, green, and blue triad is a single pixel)
[7]: https://opensource.com/sites/default/files/uploads/rainbow.jpg (A beautiful rainbow - which unfortunately contains orange )
[8]: https://www.pexels.com/photo/landscape-photography-of-field-with-wind-mill-with-rainbow-1253748/

View File

@ -1,142 +0,0 @@
[#]: subject: "Manage containers on Fedora Linux with Podman Desktop"
[#]: via: "https://fedoramagazine.org/manage-containers-on-fedora-linux-with-podman-desktop/"
[#]: author: "Mehdi Haghgoo https://fedoramagazine.org/author/powergame/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
使用 Podman Desktop 在 Fedora Linux 上管理容器
======
![][1]
Podman Desktop 是一个开源 GUI 应用,用于在 Linux、macOS 和 Windows 上管理容器。
从历史上看,开发人员一直使用 Docker Desktop 对容器进行图形化管理。这适用于那些安装了 Docker Daemon 和 Docker CLI 的人。然而,对于那些使用 Podman daemon-less 工具的人来说,虽然有一些 Podman 前端,如 [Pods][2]、[Podman desktop companion][3] 和 [Cockpit][4],但没有官方应用。现在不是这种情况了。有了 Podman Desktop
本文将讨论由 Red Hat 和其他开源贡献者开发的 Podman Desktop 的特性、安装和使用。
### 安装
要在 Fedora Linux 上安装 Podman Desktop请访问 [podman-desktop.io][5],然后单击 *Download for Linux* 按钮。你将看到两个选项Flatpak 和 zip。在这个例子中我们使用的是 Flatpak。单击 *Flatpak* 后,通过双击文件在 GNOME 软件中打开它(如果你使用的是 GNOME。你也可以通过终端安装它
```
flatpak install podman-desktop-X.X.X.flatpak
```
在上面的命令中,将 X.X.X 替换为你下载的特定版本。如果你下载了 zip 文件,则、那么解压缩存档,然后启动 *Podman Desktop* 应用的二进制文件。你还可以通过进入 GitHub 上项目的[发布][6]页找到预发布版本。
### 特性
Podman Desktop 仍处于早期阶段。然而,它支持许多常见的容器操作,如创建容器镜像、运行容器等。此外,你可以在“首选项”的“扩展目录”下找到 Podman 扩展,你可以使用它来管理 macOS 和 Windows 上的 Podman 虚拟机。此外Podman Desktop 支持 Docker Desktop 扩展。
你可以在“首选项”下的 “Docker Desktop Extensions” 安装此类扩展。应用窗口有两个窗格。左侧窄窗格显示应用的不同功能,右侧窗格是内容区域,它将根据左侧选择的内容显示相关信息。
![Podman Desktop 0.0.6 在 Fedora 36 上运行][7]
### 演示
为了全面了解 Podman Desktop 的功能,我们将从 Dockerfile 创建一个镜像并将其推送到注册表,然后拉取并运行它,这一切都在 Podman Desktop 中完成。
#### 构建镜像
第一步是通过在命令行中输入以下行来创建一个简单的 Dockerfile
```
cat <<EOF>>Dockerfile
FROM docker.io/library/httpd:2.4
COPY . /var/www/html
WORKDIR /var/www/html
CMD ["httpd", "-D", "FOREGROUND"]
EOF
```
现在,点击“镜像”并按下“构建镜像”按钮。你将被带到一个新页面以指定 Dockerfile、构建上下文和镜像名称。在 Containerfile 路径下,单击并浏览以选择你的 Dockerfile。在镜像名称下输入镜像的名称。如果要将镜像推送到容器注册表那么可以以 example.com/username/repo:tag 形式指定完全限定的镜像名称 (FQIN)。在此示例中,我输入 quay.io/codezombie/demo-httpd:latest因为我在 quay.io 上有一个名为 demo-httpd 的公共仓库。你可以按照类似的格式来指定容器注册表Quay、Docker Hub、GitHub Container Registry 等)的 FQIN。现在按*构建*并等待构建完成。
#### 推送镜像
构建完成后,就该推送镜像了。所以,我们需要在 Podman Desktop 中配置一个注册表。进入 Preferences->Registries 并按 *Add registry*
![Add Registry 对话框][8]
在 “Add Registry” 对话框中,输入你的注册表服务器地址和用户凭据,然后单击 “ADD REGISTRY”。
现在,我回到镜像列表中的镜像,并按下上传图标将其推送到仓库。当你将鼠标悬停在设置中添加的注册表名称开头的镜像名称上时(此演示中的 quay.io镜像名称旁边会出现一个推送按钮。
![将鼠标悬停在镜像名称上时出现的按钮][9]
![镜像通过 Podman Desktop 推送到仓库][10]
图像被推送后,任何有权访问镜像仓库的人都可以拉取它。由于我的镜像仓库是公开的,因此你可以轻松地将其拉入 Podman Desktop。
#### 拉取镜像
因此,为确保一切正常,请在本地删除此镜像并将其拉入 Podman Desktop。在列表中找到图像并按*删除*图标将其删除。删除图像后,单击 *Pull Image* 按钮。在 *Image to Pull* 输入完全限定名称,然后按 *Pull image*
![Our container image is successfully pulled][11]
#### 创建一个容器
作为 Podman Desktop 演示的最后一部分,让我们从镜像中启动一个容器并检查结果。我转到 *Containers* 并按 *Create Container*。这将打开一个包含两个选项的对话框:*From Containerfile/Dockerfile* 和 *From existing image*。按下 *From existing image*。这将进入镜像列表。在那里,选择我们要拉取的图像。
![在 Podman Desktop 中创建容器][12]
现在,我们从列表中选择我们最近拉取的图像,然后按它前面的 *Play* 按钮。在出现的对话框中,我输入 demo-web 作为*容器名*,输入 8000 作为*端口映射*,然后按下 *Start Container*
![Container configuration][13]
容器开始运行,我们可以通过运行以下命令检查 Apache 服务器的默认页面:
```
curl http://localhost:8000
```
![可以工作!][14]
你还应该能够在容器列表中看到正在运行的容器,其状态已更改为 *Running*。在那里,你会在容器前面找到可用的操作。例如,你可以单击终端图标打开 TTY 进入到容器中!
![][15]
### 接下来是什么
Podman Desktop 还很年轻,处于[积极开发][16]中。 GitHub 上有一个项目[路线图][17],其中列出了令人兴奋的按需功能,包括:
* Kubernetes 集成
* 支持 Pod
* 任务管理器
* 卷支持
* 支持 Docker Compose
* Kind 支持
--------------------------------------------------------------------------------
via: https://fedoramagazine.org/manage-containers-on-fedora-linux-with-podman-desktop/
作者:[Mehdi Haghgoo][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://fedoramagazine.org/author/powergame/
[b]: https://github.com/lkxed
[1]: https://fedoramagazine.org/wp-content/uploads/2022/09/podman-desktop-on-fedora-816x345.jpg
[2]: https://github.com/marhkb/pods
[3]: https://github.com/iongion/podman-desktop-companion
[4]: https://github.com/cockpit-project/cockpit/
[5]: https://podman-desktop.io/
[6]: https://github.com/containers/podman-desktop/releases/
[7]: https://fedoramagazine.org/wp-content/uploads/2022/08/pd.png
[8]: https://fedoramagazine.org/wp-content/uploads/2022/08/registry.png
[9]: https://fedoramagazine.org/wp-content/uploads/2022/08/image.png
[10]: https://fedoramagazine.org/wp-content/uploads/2022/08/Screenshot-from-2022-08-27-23-51-38.png
[11]: https://fedoramagazine.org/wp-content/uploads/2022/08/image-2.png
[12]: https://fedoramagazine.org/wp-content/uploads/2022/08/image-3.png
[13]: https://fedoramagazine.org/wp-content/uploads/2022/08/image-5.png
[14]: https://fedoramagazine.org/wp-content/uploads/2022/08/image-6.png
[15]: https://fedoramagazine.org/wp-content/uploads/2022/09/image-2-1024x393.png
[16]: https://github.com/containers/podman-desktop
[17]: https://github.com/orgs/containers/projects/2

View File

@ -1,271 +0,0 @@
[#]: subject: "11 Interesting Firefox Add-ons to Improve Your Browsing Experience"
[#]: via: "https://itsfoss.com/firefox-add-ons/"
[#]: author: "Pratham Patel https://itsfoss.com/author/pratham/"
[#]: collector: "lkxed"
[#]: translator: "gpchn"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
11个有趣的火狐浏览器扩展改善您的浏览体验
======
我想我们都同意Firefox 是 [Linux的最佳浏览器][1] 之一。
而且锦上添花的是,您可以用一些扩展来提高您的浏览体验! 甚至可以隔离 Facebook ?😉
在我推荐一些优秀的的火狐浏览器扩展之前,让我给您一些提示。
### 安装 Firefox 扩展前须知
我们都知道的一件事是 [盲目地安装浏览器扩展可能是极其有害的][2]。那么如何确定浏览器扩展是否可以安全使用?
由于本文是关于 Firefox 扩展的,我们将重点放在 Firefox 的 *marketplace*(获取扩展的官方渠道)。
虽然没有什么是 100% 安全的,但有几件事可以检查:
![一个理想的可以安全使用的 Firefox 插件][3]
* [扩展徽章][4]:寻找“推荐”或“火狐”徽章;忽略包含警告徽章/图标的附加组件。
* 菜单和评论:虽然仅此一项并不能提供太多保证,但这是您可以在其他方面考虑的一件事。此外,关注评论数量可以帮助您了解它在用户中是否足够受欢迎。
* [附加组件权限][5]:某些附加组件需要诸如“访问浏览器选项卡”、“在导航期间访问浏览器活动”等权限。记下这一点并确定您对哪些权限的舒适程度用过的。
* 最后更新日期:有时,即使是优秀的、知名的扩展也不会更新。这没关系,但对于像密码管理器、广告拦截器这样的东西来说,这很重要。应始终谨慎使用超过 2 个月的插件。
* 附加组件发布者:始终确保附加组件的发布者是您信任的人,或者已经发布了您已经信任的附加组件。
话虽如此,让我们来看看一些可以改善您的网络浏览体验的扩展。
**另请阅读**[9 个开源插件可改善您的 Mozilla Firefox 体验][6]
### 1. Facebook Container
![Facebook Container][7]
**主要亮点:**
* 由 Mozilla Firefox 团队制作
* 平均评分为 4.5 星3,500 多条评论)
* 定期更新
每个人都讨厌 Facebook但很少有人愿意从自己的网站上删除 Facebook 的跟踪元素。 所以 Mozilla 引用了一个灭霸的片段 —— “好吧,我自己做”,并为 Firefox 用户创建了这个插件。
顾名思义,为 Facebook 创建了一个隔离容器(与 Docker 无关)。 所有与 Facebook 相关的东西都发生在这个孤立的容器中。 这最终使社交媒体巨头更难追踪您。
[安装 Facebook Container][8]
### 2. uBlock Origin
![ublock origin firefox 1][9]
**主要亮点:**
* Mozilla 推荐扩展
* 4.8 星的平均评分14,000 多条评论)
* 定期更新
uBlock Origin 是 Firefox 最知名和最受信任的“广告拦截”插件之一。 是的,它主要用于屏蔽广告,但因为它的基本任务是屏蔽您的网络浏览器中的元素,所以它可以屏蔽很多项目。 广告,是的,还有网络跟踪器、加密货币矿工、弹出窗口等。
虽然它的权限可能看起来有点过分,但它背后是有原因的。 该插件需要“*在导航期间访问浏览器活动*”和“*访问所有网站的数据*”等权限,以便它可以评估每个查询并阻止那些看起来有害或无用的查询。
[安装uBlock Origin][10]
### 3. Bitwarden
![Bitwarden 演示][11]
**主要亮点:**
* Mozilla 推荐扩展
* 平均评分为 4.8 星6000 多条评论)
Bitwarden 应该是每个人的首选密码管理器。它为移动端、网页端和pc端提供免费同步支持还可以安全地存储笔记帮助生成用户名**和**密码,自动填充用户信息等等。最重要的是,[它使用 GPL-3.0 许可证][12]。谁不喜欢免费和开源软件?
Bitwarden 拥有*我会在密码管理器中寻找*的一切。如果您想升级到高级版,只需 10 美元。 我强烈推荐这个 Firefox 插件!
[安装 Bitwarden][13]
### 4. LanguageTool
![LanguageTool 插件使用演示][14]
**主要亮点:**
* Mozilla 推荐扩展
* 平均评分为 4.7 星2900 多条评论)
* 定期更新
您是否想要 [Grammarly][15] 的开源替代品?虽然我在使用 Grammarly 时没有任何问题但我真正喜欢和喜欢的是免费和开源软件。LanguageTool 是一款出色的工具可用于检查拼写错误等语法不一致、使用不同的拼写color 与 colour、常见的混淆词then 与 than您还可以使用它获得同义词库。
根据我使用此插件的经验,它几乎可以在所有文本上可靠地工作。毫无问题。该插件最大的两个特点如下:
* 支持超过 25 种语言。支持的语言列在“关于此扩展程序”部分的底部。
* 使用此插件无需注册!
[安装 LanguageTool][16]
### 5. Tranquikity Reader
![firefox tanquility][17]
想象一下,您正在阅读互联网上的一篇文章,网页顶部和底部有两个横幅广告,整个右侧都是广告,底部的广告横幅是自动播放的视频。您打开广告拦截器,但视频继续播放。有时横幅中没有广告,但它们仍然占用了宝贵的屏幕空间。您是否感觉很烦恼?
别担心Firefox 的 **Tranquility Reader** 插件可以解决这个问题。此扩展程序删除了“额外”元素,如照片、视频、广告、社交媒体共享按钮等。它为您提供了一个干净的 UI只有文本因此您可以专注于阅读。
Tranquility Reader 插件具有以下统计信息:
* Mozilla 推荐扩展
* 平均评分为 4.6 星200 条评论)
* 不经常更新但积极维护
[安装Tranquility][18]
### 6. Enhancer for YouTube
![Enhancer for YouTube 一项功能的演示][19]
**主要亮点:**
* Mozilla 推荐扩展
* 平均 4.7 星评级9,000 多条评论)
它是 Firefox 中众多 Youtube 增强插件之一。它为 YouTube 播放器添加了一些按钮,允许进行更多的自定义。 您可以获得诸如更改分辨率、控制播放速度、使用鼠标滚轮控制音频音量等功能。
您可以在其 [官方网页][20] 上找到有关该扩展程序的更多信息。
[安装 Enhancer for YouTube][21]
### 7. Tomato Clock
![Tomato Clock][22]
当您上网时,跟踪您的时间、生产力和理智是至关重要的。尤其是当您正在研究一个主题并陷入困境时,您应该休息一下,但您会过于投入,以至于您可能会忘记时间。
Tomato Clock 插件正如它的名字,它是一个时钟定时器。一个“番茄”有 25 分钟长,根据您对屏幕上显示的内容的心理投入,感觉是长是短。完成 25 分钟后,您将收到一个浏览器通知,通知您时间的流逝。
**主要亮点:**
* Mozilla 推荐扩展
* 它的平均评分为 4.5 星300 多条评论)
* 使用 GPL v3.0 许可证
[安装 Tomato Clock][23]
### 8.
![演示Firefox的图片搜索插件的“捕获”功能。][24] 。
**关键亮点:**
* Mozilla 推荐扩展
* 平均评分为4.6星1,100多个评论
* 对您上传的媒体有值得尊重的 [隐私][25][政策][26]
当您搜索“红色兰博基尼”一词时,您会得到红色兰博基尼的图片。但是,如果您不知道它是什么车呢?这个插件允许您使用图像而不是文字术语来搜索图像,并显示类似的结果或该图像的来源地。
您可以通过以下方式选择图片进行搜索。
* 点击URL这使您可以直接点击显示在网页上的图像。
* 网页截图:选择网页上的一个特定区域,以便进行反向图像搜索。
* 本地图片:从计算机的本地驱动器(而不是网页)上传一个现有的图像。
* URL粘贴图像的URL以进行反向图像搜索。
[安装 Search by Image][27]
### 9. Dictionary Anywhere
Dictionary Anywhere 插件显示所选单词的含义。
**主要亮点:**
* Mozilla 推荐扩展
* 平均4.3星评级260 条评论)
* 不定期更新
有一个无障碍的字典从来都不是一件坏事! 当然,我已经被 macOS 的“强制触摸查询”功能宠坏了。当我使用 Linux 时Firefox 的 Dictionary Anywhere 插件确实弥补了这一点。我需要做的就是双击一个词,然后定义就会弹出来
目前,支持的语言只有英语、西班牙语、德语和法语。请注意,这个扩展不会在 Firefox 的阅读模式下工作。这是因为脚本不允许在这种模式下执行。
一个小瑕疵是,这使得在一个可编辑的文本中“双击并选择整个单词”变得略微恼人。这是为方便性付出的一个小代价。
此外,如果您想要一个积极维护的扩展,这将使您失望。
[下载 Dictionary Anywhere][29]
### 10. Vimium-FF
![vimium FF][30]
**主要亮点:**
* 平均评分 4.8 星400 多条评论)
* 实验性扩展
如果您是 Vim 用户,我就不需要向您解释了,自己去试试吧!您以后会感谢我的。
对于那些不知道这个插件做什么的人,它允许您仅使用 Vim 样式的键在 Firefox 中导航。按 J 下键滚动K 键向上滚动X 键关闭当前选项卡T 键打开一个新选项卡,以及各种其他键盘快捷键。
虽然这个附加组件有“**Experimental**”标志,但在过去一两年的使用经验中,我没有遇到任何问题。
[下载 Vimium-FF][31]
### 11. FireShot
![fireshot][32]
FireShot 是一个非常简单的 Firefox 插件,它允许您将完整的网页截图并保存为长图或 PDF 文件,最重要的是,您还可以在截图上注释(哈哈哈)!但是注释只能在 Windows 上使用,真是太可惜了!
它**没有 Firefox 的“推荐”徽章**。 因此,您可以在决定使用它之前在其附加页面上探索更多有关它的信息。
[下载 FireShot][33]
### 总结
本文涵盖了广泛的 Firefox 插件,我认为这些插件应该有助于改善您的 Web 浏览体验。
您最喜欢的 Firefox 扩展是什么? 在下面的评论中让我知道您的想法。
--------------------------------------------------------------------------------
via: https://itsfoss.com/firefox-add-ons/
作者:[Pratham Patel][a]
选题:[lkxed][b]
译者:[gpchn](https://github.com/gpchn)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/pratham/
[b]: https://github.com/lkxed
[1]: https://itsfoss.com/best-browsers-ubuntu-linux/
[2]: https://www.bleepingcomputer.com/news/security/chrome-extensions-with-14-million-installs-steal-browsing-data/
[3]: https://itsfoss.com/wp-content/uploads/2022/09/bitwarden-firefox-add-on.jpg
[4]: https://support.mozilla.org/en-US/kb/add-on-badges
[5]: https://support.mozilla.org/en-US/kb/permission-request-messages-firefox-extensions
[6]: https://itsfoss.com/best-firefox-add-ons/
[7]: https://itsfoss.com/wp-content/uploads/2022/09/facebook-container.jpg
[8]: https://addons.mozilla.org/en-US/firefox/addon/facebook-container/
[9]: https://itsfoss.com/wp-content/uploads/2022/09/ublockorigin-firefox-1.jpg
[10]: https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/
[11]: https://itsfoss.com/wp-content/uploads/2022/09/03-bitwarden.webp
[12]: https://github.com/bitwarden/clients/blob/master/LICENSE.txt
[13]: https://addons.mozilla.org/en-US/firefox/addon/bitwarden-password-manager/
[14]: https://itsfoss.com/wp-content/uploads/2022/09/04-languagetool.webp
[15]: https://www.grammarly.com/
[16]: https://addons.mozilla.org/en-US/firefox/addon/languagetool/
[17]: https://itsfoss.com/wp-content/uploads/2022/09/firefox-tanquility.jpg
[18]: https://addons.mozilla.org/en-US/firefox/addon/tranquility-1/
[19]: https://itsfoss.com/wp-content/uploads/2022/09/06-enhancer-for-yt.webp
[20]: https://www.mrfdev.com/how-to-use-enhancer-for-youtube
[21]: https://addons.mozilla.org/en-GB/firefox/addon/enhancer-for-youtube
[22]: https://itsfoss.com/wp-content/uploads/2022/09/tomato-time-management.jpg
[23]: https://addons.mozilla.org/en-US/firefox/addon/tomato-clock/
[24]: https://itsfoss.com/wp-content/uploads/2022/09/08-src-by-img.webp
[25]: https://addons.mozilla.org/en-US/firefox/addon/search_by_image/privacy/
[26]: https://addons.mozilla.org/en-US/firefox/addon/search_by_image/privacy/
[27]: https://addons.mozilla.org/en-US/firefox/addon/search_by_image/
[28]: https://itsfoss.com/wp-content/uploads/2022/09/09-dict-anywhere.webp
[29]: https://addons.mozilla.org/en-GB/firefox/addon/dictionary-anyvhere/
[30]: https://itsfoss.com/wp-content/uploads/2022/01/vimium-firefox.png
[31]: https://addons.mozilla.org/en-GB/firefox/addon/vimium-ff/
[32]: https://itsfoss.com/wp-content/uploads/2022/09/fireshot.jpg
[33]: https://addons.mozilla.org/en-GB/firefox/addon/fireshot/

View File

@ -0,0 +1,90 @@
[#]: subject: "3 steps to protect your home network"
[#]: via: "https://opensource.com/article/22/9/protect-home-network"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lkxed"
[#]: translator: "PeterPan0106"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
保护家庭网络三部曲
======
都有谁可以访问你的家庭网络随着物联网IoT的普及有时在运行在你家庭网络上的服务比你想象的更多。我们应当设法保护它免受不需要的访问。
今天,互联网连接的典型结构是家里有一个**路由器**,通常是一个位于你家某个地方的小盒子,它充当了通往互联网世界的网关。路由器创建了一个本地网络,你将你的设备连接到这个本地网络,包括你的电脑、手机、电视、游戏机,以及其他任何需要连接到互联网或相互连接的设备。我们很容易将路由器当作一个分界线,一边是互联网而另一边是你的设备。但这是一个可怕的误解,因为在现实中,你的路由器的一边是整个*计算机网络世界*另一边是你的数字生活。当你直接使用互联网时你是在访问别人的计算机网络的共享区域。当你不使用互联网时它却并没有消失有很多脚本和程序被设计用以访问数以百万计的路由器试图找到开放的端口或服务。随着物联网IoT的普及有时在运行在你家庭网络上的服务比你想象的更多。通过以下三个步骤你可以审计并保护你的家庭网络免受不必要的访问和攻击。
### 1. 协议先行
路由器的部分工作是将互联网与你的家庭网络分开。但当你访问互联网时,你邀请互联网的某些部分进入你的家庭。这意味着你创建了一个例外规则,绕过了阻止互联网进入你的本地网络的一般规则。
在许多网站上,你的路由器仅允许文本内容的访问。例如,当你访问你最喜欢的博客网站,阅读最新的科技新闻时,你下载了几页文字。你阅读文本,然后继续前进。这是一个简单的一对一的连接。
然而HTTPS协议是强大的在互联网上运行的应用程序也充满了多样性。例如当你访问Opensource.com时你不只是在下载文本。你会得到图形也许还有脚本或电子书。你还在后台下载cookies这有助于网站管理员了解谁在访问网站、加强对移动设备的支持、为更好的可访问性提供新设计并了解读者喜欢的内容。当你网上冲浪时你可能不会想到cookies或流量分析是与你交互的东西它是被“藏入”页面交互的东西因为HTTPS协议的设计是广泛而通用的在多数场景被高度信任。当你通过HTTPS访问一个网站时或者说在一个网络浏览器中你可能在不知情的情况下默认同意自动下载文件但你认为这些文件是有用的和不引人注目的。对于一种旨在减少信任的文件共享模式你可以尝试[Gemini][3]或[Gopher][4]协议。
当你加入一个视频会议时你也使用了类似的协议。你不仅要下载页面上的文字、用于流量监控的cookies还要下载视频和音频材料。
有些网站的设计甚至更进一步,它们被设计成允许用户分享其电脑屏幕,有时甚至是对他们电脑的控制。这样设计的初衷是有助于远程技术人员修复电脑上的问题,但在现实中,用户可能被欺骗访问这一网站,导致财务凭证和个人数据被盗。
如果一个提供文字文章的网站要求你允许它在你阅读时调用网络摄像头,你理应高度警惕。当一个设备需要访问互联网时,你也应当保持同样的谨慎和警惕。当你把一个设备连接到网络时,重要的是要关注你同意了何种隐性协议。一个旨在控制你房子里的照明的设备不应该*要求*互联网接入,但事实上许多设备需要并且没有明确说明你授予该设备什么权限。许多物联网设备都*希望*接入互联网,这样你就可以在离家时通过互联网访问该设备。这也是"智慧家庭"的部分吸引力。然而,我们不可能知道所有设备运行的是什么代码。在可能的情况下,使用开放源码和值得信赖的软件,如[Home Assistant][5]来与你的物联网设备对接。
### 2. 创建访客网络
许多现代路由器可以为你的家庭创建第二个网络(通常在配置面板中称为 "访客网络")。你可能觉得你不需要访客网络,但实际上,访客网络是十分有意义的。它旨在为访问你房子的人提供互联网访问,而你不需要告诉他们你的私人网络密码。例如在我家的门厅里,我有一个牌子标明了访客网络的名称和密码。任何来访的人都可以加入该网络以访问互联网。
另一方面可以用于物联网、边缘设备和家庭实验室的应用。当我去年购买 "可编程 "的圣诞灯时我惊讶地发现为了连接这些灯它们必须连接到互联网。当然这些来自无名工厂的50美元的灯没有附带源代码也没有任何方法可以与嵌入在适配器中的固件进行交互或检查所以我对我同意将它们连接到我的本地网络有一定的顾虑。它们已经被永久地归入了我的访客网络。
每个路由器供应商都是不同的,所以没有关于如何在你的路由器上创建一个 "沙盒 "访客网络的通用指令。一般来说你通过一个网络浏览器访问你的家庭路由器。你的路由器的地址有时印在路由器的底部它以192.168或10开头。
访问路由器地址,用你配置互联网服务时使用的凭证登录。这通常是简单的 "admin "和一个数字密码(有时,这个密码也印在路由器上)。如果你不知道登录方式,请致电给你的互联网供应商或者制造商咨询。
在图形界面中,找到 "访客网络 "的面板。这个选项在我的路由器的**高级**配置中,但它可能在你的路由器的其他地方,它甚至可能不叫 "访客网络"(或者它甚至可能不是一个选项)。具体情况因厂商而异。
![创建访客网络][7]
Image by: (Opensource.com, CC BY-SA 4.0)
这可能需要耐心的寻找。如果你发现你的设备有这个选择,那么你可以为访客建立一个访客网络,包括在不受信任的灯泡上运行的应用程序。
### 3. 配置防火墙
你的路由器可能已经存在一个默认运行的防火墙。防火墙将不需要的流量挡在你的网络之外通常是将传入的数据包限制在HTTP和HTTPS网络浏览器流量以及其他一些常用的协议上并拒绝不是你发起的请求。你可以通过登录你的路由器并寻找 "防火墙 "或 "安全 "设置来检查防火墙是否正在运行。
然而,许多设备可以运行它们自己的防火墙。网络之所以被称为*网络*是因为在网络上的设备互相能进行连接。在设备之间设置防火墙,就像在你的房子里锁上一扇门。客人可以在大厅里游荡,但如果没有合适的钥匙,他们就不会被邀请进入你的私人办公室。
在Linux上你可以使用[firewalld][8]接口和[firewall-cmd][9]命令来配置你的防火墙。在其他操作系统上,防火墙有时在一个标有 "安全 "或 "共享 "的控制面板中(有时两者都有)。 大多数默认的防火墙设置只允许出站流量(即你通过打开浏览器并导航到一个网站而启动的流量)和响应你的请求的入站流量(即响应你的导航的网络数据)。不是由你发起的传入流量会被阻止。
你可以根据需要配置相关规则以允许特定的流量,例如[SSH连接][10][VNC连接][11],或[游戏服务器][12]主机。
### 监控你的网络
These techniques help build up your awareness of what's happening around you. The next step is to [monitor your network][13]. You can start simple, for instance by running [Fail2ban][14] on a test server on your guest network. Take a look at logs, if your router provides them. You don't have to know everything about TCP/IP and packets and other advanced subjects to see that the Internet is a busy and noisy place, and seeing that for yourself is great inspiration to take precautions when you set up a new device, whether it's IoT, mobile, a desktop or laptop, a game console, or a [Raspberry Pi][15], in your home.
这些技巧有助于建立起你对周围发生的事情的认识。下一步是[监控你的网络][13]。你可以从简单的开始,例如在你的访客网络的测试服务器上运行[Fail2ban][14]。看一下日志如果你的路由器提供日志的话。你不必对TCP/IP和数据包以及其他进阶知识了如指掌就可以看到互联网是一个繁忙而嘈杂的地方当你在家里安装一个新设备时无论是物联网、移动设备、台式机或笔记本电脑、游戏机甚至是[树莓派][15],而亲身体会到这一点对你采取预防措施有很大启发。
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/protect-home-network
作者:[Seth Kenlon][a]
选题:[lkxed][b]
译者:[PeterPan0106](https://github.com/PeterPan0106)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/wfh_work_home_laptop_work.png
[2]: https://opensource.com/article/20/1/open-source-networking
[3]: https://opensource.com/article/20/10/gemini-internet-protocol
[4]: https://opensource.com/article/16/12/yearbook-compute-its-1989#gopher
[5]: https://opensource.com/article/20/12/home-assistant
[6]: https://opensource.com/article/20/11/wireless-protocol-home-automation
[7]: https://opensource.com/sites/default/files/2022-08/router-guest-network.jpg
[8]: https://opensource.com/article/19/7/make-linux-stronger-firewalls
[9]: https://www.redhat.com/sysadmin/secure-linux-network-firewall-cmd
[10]: https://www.redhat.com/sysadmin/access-remote-systems-ssh
[11]: https://www.redhat.com/sysadmin/accessing-remote-desktops
[12]: https://opensource.com/article/18/5/maptool
[13]: https://opensource.com/article/19/2/network-monitoring-tools
[14]: https://www.redhat.com/sysadmin/protect-systems-fail2ban
[15]: https://opensource.com/article/22/3/raspberry-pi-projects-2022

View File

@ -1,161 +0,0 @@
[#]: subject: "Install Linux Mint with Windows 11 Dual Boot [Complete Guide]"
[#]: via: "https://www.debugpoint.com/linux-mint-install-windows/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: "gpchn"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
使用 Windows 11 双引导安装 Linux Mint [完整指南]
======
将 Linux Mint 与 Windows 11或 Windows 10同时安装并制作双引导系统的完整指南。
如果您是新的 Linux 用户,尝试在不删除 OEM 安装的 Windows 的情况下安装 Linux Mint请遵循本指南。完成下面描述的步骤后您应该拥有一个双引导系统您可以在其中学习和在 Linux 系统中完成工作,而无需引导 Windows。
### 1. 开始之前您需要什么?
启动到您的 Windows 系统并从官方网站下载 Linux Mint ISO 文件。 ISO 文件是 Linux Mint 的安装映像,我们将在本指南中使用它。
* 在官网图1下载 Cinnamon 桌面版的 ISO适合大家
* [下载链接][1]
![图1从官网下载Linux Mint][2]
* 下载后,将 U 盘插入您的系统。然后使用 Rufus 或 [Etcher][3] 将上面下载的 .ISO 文件写入该 USB 驱动器。
### 2.准备一个分区来安装Linux Mint
理想情况下Windows 笔记本电脑通常配备 C 盘和 D 盘。 C 盘是安装 Windows 的地方。对于新的笔记本电脑D 驱动器通常是空的(任何后续驱动器,如 E 等)。现在,您有两个选项可供选择:一是**缩小 C 盘** 为额外的 Linux 安装腾出空间。第二个是**使用其他驱动器/分区**,例如 D 盘或 E盘。
选择您希望的方法。
* 如果您选择使用 D 盘或 E 盘进行 Linux 安装,请确保先禁用 BitLocker然后再禁用现代 OEM 安装的 Windows 笔记本电脑附带的所有其他功能。 * 从开始菜单打开 Windows PowerShell 并键入以下命令(图 2以禁用 BitLocker。根据您的目标驱动程序更改驱动器号这里我使用了驱动器 E
```
manage-bde -off E
```
![图2禁用 Windows 驱动器中的 BitLocker 以安装 Linux][4]
* 现在,如果您选择缩小 C 盘(或任何其他驱动器),请从开始菜单打开“磁盘管理”,它将显示您的整个磁盘布局。
* 右键单击并在要缩小的驱动器上选择“Shrink Volume”图 3以便为 Linux Mint 腾出位置。
* 在下一个窗口中,在“输入要缩小的空间量(以 MB 为单位)”下以 MB 为单位提供您的分区大小(图 4。显然它应该小于或等于“可用空间大小”中提到的值。因此对于 100 GB 的分区,给出 100*1024=102400 MB。
* 完成后,单击收缩。
![磁盘分区中的压缩卷选项示例][5]
![图4输入 Linux 分区的大小][6]
* 现在,您应该会看到一个“未分配空间”,如下所示(图 5。右键单击它并选择“新建简单卷”。
* 此向导将使用文件系统准备和格式化分区。注意:您可以在 Windows 本身中或在 Linux Mint 安装期间执行此操作。 Linux Mint 安装程序还为您提供了创建文件系统表和准备分区的选项。我建议您在这里做。
* 在接下来的一系列屏幕中(图 6,7 和 8以 MB 为单位给出分区大小,分配驱动器号(例如 D、E、F和文件系统为 fat32。
* 最后,您应该会看到您的分区已准备好安装 Linux Mint。您应该在 Mint 安装期间按照以下步骤选择此选项。
* 作为预防措施,记下分区大小(您刚刚在图 9 中作为示例创建)以便在安装程序中快速识别它。
![图5创建未分配空间][7]
![图6新建简单卷向导-page1][8]
![图7新建简单卷向导-page2][9]
![图8新建简单卷向导-page3][10]
![图9安装Linux的最终分区][11]
### 3. 在 BIOS 中禁用安全启动
* 插入 USB 驱动器并重新启动系统。
* 开机时反复按相应的功能键进入BIOS。您的笔记本电脑型号的密钥可能不同。这是主要笔记本电脑品牌的参考。
* 您应该禁用安全 BIOS 并确保将启动设备优先级设置为 U 盘。
* 然后按 F10 保存并退出。
| Laptop OEM | Function key to enter BIOS |
| :- | :- |
| Acer | F2 or DEL |
| ASUS | F2 for all PCs, F2 or DEL for motherboards |
| Dell | F2 or F12 |
| HP | ESC or F10 |
| Lenovo | F2 or Fn + F2 |
| Lenovo (Desktops) | F1 |
| Lenovo (ThinkPads) | Enter + F1. |
| MSI | DEL for motherboards and PCs |
| Microsoft Surface Tablets | Press and hold the volume up button. |
| Origin PC | F2 |
| Samsung | F2 |
| Sony | F1, F2, or F3 |
| Toshiba | F2 |
### 4. 安装 Linux Mint
如果一切顺利,您应该会看到一个安装 Linux Mint 的菜单。选择“启动 Linux Mint……”选项。
![图 10Linux Mint GRUB 菜单启动安装][12]
* 片刻之后,您应该会看到 Linux Mint Live 桌面。在桌面上,您应该会看到一个安装 Linux Mint 的图标以启动安装。
* 在下一组屏幕中,选择您的语言、键盘布局、选择安装多媒体编解码器并点击继续按钮。
* 在安装类型窗口中,选择其他选项。
* 在下一个窗口(图 11仔细选择以下内容
* 在设备下,选择刚刚创建的分区;您可以通过我之前提到的要记下的尺寸来识别它。
* 然后点击更改在编辑分区窗口中选择Ext4作为文件系统选择格式化分区选项和挂载点为“/”。
* 单击确定,然后为您的系统选择引导加载程序;理想情况下,它应该是下拉列表中的第一个条目。
* 仔细检查更改。因为一旦您点击立即安装,您的磁盘将被格式化,并且无法恢复。当您认为一切准备就绪,请单击立即安装。
![图11选择Windows 11安装Linux Mint的目标分区][13]
在以下屏幕中,选择您的位置,输入您的姓名并创建用于登录系统的用户 ID 和密码。安装应该开始(图 12
安装完成后(图 13取出 U 盘并重新启动系统。
![图12安装中][14]
![图13安装完成][15]
如果一切顺利,在成功安装为双引导系统后,您应该会看到带有 Windows 11 和 Linux Mint 的 GRUB。
现在您可以继续使用 [Linux Mint][16] 并体验快速而出色的 Linux 发行版。
### 总结
在本教程中,我向您展示了如何在装有 OEM 的 Windows 的笔记本电脑或台式机中使用 Linux Mint 创建一个简单的双启动系统。这些步骤包括分区、创建可引导 USB、格式化和安装。
尽管上述说明适用于 Linux Mint 21 Vanessa但是它现在应该可以与所有其他出色的 [Linux 发行版][17] 一起正常工作。
如果您遵循本指南,请在下面的评论框中告诉我您的安装情况。
如果您成功了,欢迎来到自由!
[下一篇:如何在 Ubuntu 22.04、22.10、Linux Mint 21 中安装 Java 17][18]
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/linux-mint-install-windows/
作者:[Arindam][a]
选题:[lkxed][b]
译者:[gpchn](https://github.com/gpchn)
校对:[校对者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.linuxmint.com/download.php
[2]: https://www.debugpoint.com/wp-content/uploads/2022/09/Download-Linux-Mint-from-the-official-website.jpg
[3]: https://www.debugpoint.com/etcher-bootable-usb-linux/
[4]: https://www.debugpoint.com/wp-content/uploads/2022/09/Disable-BitLocker-in-Windows-Drives-to-install-Linux.jpg
[5]: https://www.debugpoint.com/wp-content/uploads/2022/09/Example-of-Shrink-Volume-option-in-Disk-Partition-1024x453.jpg
[6]: https://www.debugpoint.com/wp-content/uploads/2022/09/Enter-the-size-of-your-Linux-Partition.jpg
[7]: https://www.debugpoint.com/wp-content/uploads/2022/09/Unallocated-space-is-created.jpg
[8]: https://www.debugpoint.com/wp-content/uploads/2022/09/New-Simple-Volume-Wizard-page1.jpg
[9]: https://www.debugpoint.com/wp-content/uploads/2022/09/New-Simple-Volume-Wizard-page2.jpg
[10]: https://www.debugpoint.com/wp-content/uploads/2022/09/New-Simple-Volume-Wizard-page3.jpg
[11]: https://www.debugpoint.com/wp-content/uploads/2022/09/Final-partition-for-installing-Linux.jpg
[12]: https://www.debugpoint.com/wp-content/uploads/2022/09/Linux-Mint-GRUB-Menu-to-kick-off-installation.jpg
[13]: https://www.debugpoint.com/wp-content/uploads/2022/09/Choose-the-target-partition-to-install-Linux-Mint-with-Windows-11.jpg
[14]: https://www.debugpoint.com/wp-content/uploads/2022/09/Installation-is-in-progress.jpg
[15]: https://www.debugpoint.com/wp-content/uploads/2022/09/Installation-is-complete.jpg
[16]: https://www.debugpoint.com/linux-mint
[17]: https://www.debugpoint.com/category/distributions
[18]: https://www.debugpoint.com/install-java-17-ubuntu-mint/

View File

@ -0,0 +1,88 @@
[#]: subject: "How I switched from Docker Desktop to Colima"
[#]: via: "https://opensource.com/article/22/9/docker-desktop-colima"
[#]: author: "Michael Anello https://opensource.com/users/ultimike"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
我如何从 Docker Desktop 切换到 Colima
======
Colima 是 macOS 和 Linux 的 Docker 桌面替代品,它现在由 DDEV 支持。
![Getting started with Perlbrew][1]
图片来源freephotocc 在 Pixabay CC0 下发布
[DDEV][2] 是一个开源工具,可以在几分钟内轻松启动和运行本地 PHP 开发环境。由于其每个项目的环境配置可以扩展、版本控制和共享所以它很强大和灵活。简而言之DDEV 旨在允许开发团队在其工作流程中使用容器,而无需复杂的定制配置。
DDEV 用灵活、现代、基于容器的解决方案取代了更传统的 AMP 栈解决方案WAMP、MAMP、XAMPP 等。因为它使用容器DDEV 允许每个项目使用任何一组应用、Web 服务器版本、数据库服务器、搜索索引服务器和其他类型的软件。
2022 年 3 月DDEV 团队[宣布支持 Colima][3],这是 macOS 和 Linux 的开源 Docker 桌面替代品。 [Colima][5] 是开源的,据所有报告显示,它比其替代方案获得了[性能提升][6],所以使用 Colima 似乎是一个没有问题的选择。。
### 迁移到 Colima
首先Colima *几乎*是 Docker Desktop 的替代品。我说*几乎*是因为在将它用于现有的 DDEV 项目时需要重新配置。具体来说,必须重新导入数据库。解决方法是先导出数据库,然后启动 Colima然后再导入。很简单。
Colima 要求安装 Docker 或 [Podman][7] 命令。在 Linux 上,它还需要 Lima。
Docker 默认随 Docker Desktop for macOS 一起安装,但它也可以作为独立命令使用。如果你想要 100% 纯 Colima你可以卸载 Docker Desktop for macOS并独立安装和配置 Docker 客户端。[完整的安装说明可以在 DDEV 文档站点上找到][8]。
![容器技术栈图片。][9]
图片来源Mike AnelloCC BY-SA 4.0
如果你选择继续使用 Colima 和 Docker Desktop那么在命令行执行 docker 命令时,你必须首先指定要使用的容器。下一节将对此进行更多介绍。
### 在 macOS 上安装 Colima
我目前有一些使用 Docker 的本地项目,还有一些使用 Colima。当我了解了基础知识在它们之间切换就不难了。
1. 开始使用 Homebrew `brew install colima` 安装 Colima
2. ddev poweroff为了安全起见
3. 接下来,使用 `colima start --cpu 4 --memory 4` 启动 Colima --cpu 和 --memory 选项只需执行一次。第一次之后,只需要 `colima start`
4. 如果你像我一样是 DDEV 用户,那么你可以使用常用的 `ddev` 命令ddev config、ddev start 等)启动一个全新的 Drupal 9 站点。建议启用 DDEV 的 mutagen 功能以最大化性能。
### 在 Colima 和 Docker Desktop 之间切换
如果你还没有准备好使用 Colima你可以同时安装 Colima 和 Docker Desktop。
1. 首先关闭 ddevddev poweroff
2. 然后停止Colima`colima stop`
3. 现在运行 `docker context use default` 告诉 Docker 客户端你要使用哪个容器。默认名称是 Docker Desktop for Mac。当 `colima start` 运行时,它会自动将 Docker 切换到 `colima` 上下文。
4. 要继续使用默认Docker Desktop上下文请使用 `ddev start` 命令。
从技术上讲,启动和停止 Colima 不是必需的,但是在两个上下文之间切换时的 `ddev poweroff` 命令是必要的。
Colima 停止时,最新版本的 Colima 会将 Docker 上下文恢复为 `default`,因此不再需要 `docker context use default` 命令。无论如何,我仍然使用 `docker context show` 来验证 `default`Docker Desktop for Mac`colima` 上下文是否正在使用。基本上,术语 `context` 指的是 Docker 客户端将命令发送到哪个容器提供者。
### 尝试 Colima
总的来说,我喜欢我目前所看到的。我没有遇到任何问题,而且基于 Colima 的网站看起来更快些(尤其是在启用 DDEV 的 Mutagen 功能时)。我肯定会预见自己在未来几周内将项目网站迁移到 Colima。
*本文最初出现发布在 [DrupalEasy 博客][10]并经许可重新发布。*
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/docker-desktop-colima
作者:[Michael Anello][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/ultimike
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/coffee_cafe_brew_laptop_desktop.jpg
[2]: https://github.com/drud/ddev
[3]: https://ddev.com/ddev-local/docker-desktop-alternatives-arrive-for-ddev-colima/
[5]: https://github.com/abiosoft/colima
[6]: https://ddev.com/ddev-local/docker-desktop-and-colima-benchmarking-on-macos/
[7]: https://opensource.com/article/22/2/start-running-containers
[8]: https://ddev.readthedocs.io/en/stable/users/docker_installation/#macos-installation-colima
[9]: https://opensource.com/sites/default/files/2022-09/docker-desktop-colima.png
[10]: https://www.drupaleasy.com/news

View File

@ -0,0 +1,180 @@
[#]: subject: "3 ways to use the Linux inxi command"
[#]: via: "https://opensource.com/article/22/9/linux-inxi-command"
[#]: author: "Don Watkins https://opensource.com/users/don-watkins"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Linux inxi 命令的 3 种使用方法
======
我在 Linux 上使用 inxi 来检查我的笔记本电脑电池、CPU 信息,甚至天气。
![Coding on a computer][1]
当我在查询有关笔记本电脑电池健康状况的信息时,我偶然发现了 `inxi`。它是一个命令行系统信息工具,可提供有关你的 Linux 计算机(无论是笔记本电脑、台式机还是服务器)的大量信息。
`inxi` 命令使用 GPLv3 [许可][2],许多 Linux 发行版都包含它。根据它的 Git 存储库“inxi 努力支持最广泛的操作系统和硬件,从最简单的消费台式机到最先进的专业硬件和服务器。”
文档很完善,并且该项目在线维护了完整的[手册页][3]。安装后,你可以使用 `man inxi` 命令访问系统上的手册页。
### 在 Linux 上安装 inxi
通常,你可以从发行版的软件仓库或应用中心安装 `inxi`。例如,在 Fedora、CentOS、Mageia 或类似发行版上:
```
$ sudo dnf install inxi
```
在 Debian、Elementary、Linux Mint 或类似发行版上:
```
$ sudo apt install inxi
```
你可以在[此处][4]找到有关 Linux 发行版安装选项的更多信息。
### 在 Linux 上使用 inxi 的 3 种方法
当你安装了 `inxi`,你可以探索它的所有选项。有许多选项可帮助你了解有关系统的更多信息。最基本的命令提供了系统的基本概览:
```
$ inxi -b
System:
Host: pop-os Kernel: 5.19.0-76051900-generic x86_64 bits: 64
Desktop: GNOME 42.3.1 Distro: Pop!_OS 22.04 LTS
Machine:
Type: Laptop System: HP product: Dev One Notebook PC v: N/A
serial: <superuser required>
Mobo: HP model: 8A78 v: KBC Version 01.03 serial: <superuser required>
UEFI: Insyde v: F.05 date: 06/14/2022
Battery:
ID-1: BATT charge: 50.6 Wh (96.9%) condition: 52.2/53.2 Wh (98.0%)
CPU:
Info: 8-core AMD Ryzen 7 PRO 5850U with Radeon Graphics [MT MCP]
speed (MHz): avg: 915 min/max: 400/4507
Graphics:
Device-1: AMD Cezanne driver: amdgpu v: kernel
Device-2: Quanta HP HD Camera type: USB driver: uvcvideo
Display: x11 server: X.Org v: 1.21.1.3 driver: X: loaded: amdgpu,ati
unloaded: fbdev,modesetting,radeon,vesa gpu: amdgpu
resolution: 1920x1080~60Hz
OpenGL:
renderer: AMD RENOIR (LLVM 13.0.1 DRM 3.47 5.19.0-76051900-generic)
v: 4.6 Mesa 22.0.5
Network:
Device-1: Realtek RTL8822CE 802.11ac PCIe Wireless Network Adapter
driver: rtw_8822ce
Drives:
Local Storage: total: 953.87 GiB used: 75.44 GiB (7.9%)
Info:
Processes: 347 Uptime: 15m Memory: 14.96 GiB used: 2.91 GiB (19.4%)
Shell: Bash inxi: 3.3.13
```
### 1. 显示电池状态
你可以使用 `-B` 选项检查电池健康状况。结果显示系统电池 ID、充电情况和其他信息
```
$ inxi -B
Battery:
ID-1: BATT charge: 44.3 Wh (85.2%) condition: 52.0/53.2 Wh (97.7%)
```
### 2. 显示 CPU 信息
使用 `-C` 选项了解有关 CPU 的更多信息:
```
$ inxi -C
CPU:
Info: 8-core model: AMD Ryzen 7 PRO 5850U with Radeon Graphics bits: 64
type: MT MCP cache: L2: 4 MiB
Speed (MHz): avg: 400 min/max: 400/4507 cores: 1: 400 2: 400 3: 400
4: 400 5: 400 6: 400 7: 400 8: 400 9: 400 10: 400 11: 400 12: 400 13: 400
14: 400 15: 400 16: 400
```
`inxi` 的输出默认使用彩色文本。你可以根据需要使用“颜色开关”进行更改以提高可读性。
命令选项是 `-c` 后跟 0 到 42 之间的任意数字以适合你的习惯。
```
$ inxi -c 42
```
以下是使用颜色 5 和 7 的几个不同选项的示例:
![inxi -c 5 command][5]
该软件可以使用 Linux 系统中的传感器显示硬件温度、风扇速度和有关系统的其他信息。输入 `inxi -s` 并读取以下结果:
![inxi -s][6]
### 3. 组合选项
如果支持,你可以组合 `inxi` 的选项以获得复杂的输出。例如,`inxi -S` 提供系统信息,`-v` 提供详细输出。将两者结合起来可以得到以下结果:
```
$ inxi -S
System:
Host: pop-os Kernel: 5.19.0-76051900-generic x86_64 bits: 64
Desktop: GNOME 42.3.1 Distro: Pop!_OS 22.04 LTS
$ inxi -Sv
CPU: 8-core AMD Ryzen 7 PRO 5850U with Radeon Graphics (-MT MCP-)
speed/min/max: 634/400/4507 MHz Kernel: 5.19.0-76051900-generic x86_64
Up: 20m Mem: 3084.2/15318.5 MiB (20.1%) Storage: 953.87 GiB (7.9% used)
Procs: 346 Shell: Bash inxi: 3.3.13
```
### 额外功能:查看天气
`inxi` 可以收集到的信息并不只有你的电脑。使用 `-w` 选项,你还可以获取你所在地区的天气信息:
```
$ inxi -w
Weather:
Report: temperature: 14 C (57 F) conditions: Clear sky
Locale: Wellington, G2, NZL
current time: Tue 30 Aug 2022 16:28:14 (Pacific/Auckland)
Source: WeatherBit.io
```
你可以通过指定你想要的城市和国家以及 `-W` 来获取世界其他地区的天气信息:
```
$ inxi -W rome,italy
Weather:
Report: temperature: 20 C (68 F) conditions: Clear sky
Locale: Rome, Italy current time: Tue 30 Aug 2022 06:29:52
Source: WeatherBit.io
```
### 总结
有许多很棒的工具可以收集有关你的计算机的信息。 我根据机器、桌面或我的心情使用不同的。 你最喜欢的系统信息工具是什么?
图片来源Don WatkinsCC BY-SA 4.0
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/linux-inxi-command
作者:[Don Watkins][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/don-watkins
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/code_computer_laptop_hack_work.png
[2]: https://github.com/smxi/inxi/blob/master/LICENSE.txt
[3]: https://smxi.org/docs/inxi-man.htm
[4]: https://smxi.org/docs/inxi-installation.htm#inxi-repo-install
[5]: https://opensource.com/sites/default/files/2022-09/inxi-c5.png
[6]: https://opensource.com/sites/default/files/2022-09/inxi-s.png

View File

@ -0,0 +1,107 @@
[#]: subject: "Atoms is a GUI Tool to Let You Manage Linux Chroot Environments Easily"
[#]: via: "https://itsfoss.com/atoms-chroot-tool/"
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Atoms 是一个可以让你轻松管理 Linux Chroot 环境的 GUI 工具
======
chroot 环境为你在 Linux 中进行测试提供了隔离。你无需费心创建虚拟机。相反,如果你想测试应用或其他东西,请创建一个允许你选择不同根目录的 chroot 环境。
因此,使用 chroot你可以在不让应用访问系统其余部分的情况下进行测试。你安装的任何应用或你尝试的任何东西都会被限制在该目录中并且不会影响操作系统的功能。
chroot 有它的好处,这就是为什么它是为各种用户(尤其是系统管理员)测试事物的便捷方式。
不幸的是,所有这些都通过 Linux 终端运行。如果你可以有一个图形用户界面来让事情变得简单一些呢?这就是“**Atoms**”的用武之地。
### Atoms管理 Linux Chroot 的 GUI
![atoms][1]
Atoms 是一个 GUI 工具,它可以方便地创建和管理 Linux chroot 环境。
它还支持与 [Distrobox][2] 的集成。因此,你还可以使用 Atoms 管理容器。
但是,开发人员提到该工具不提供与 Podman 的无缝集成,并解释其用途:“*它的目的只是允许用户在新环境中打开 shell无论是 chroot 还是容器。”*
如果你正在寻找这样的东西,你可能需要试试 [pods][3]。
### Atoms 的特性
![atoms options][4]
Atoms 是一个简单的 GUI 程序,可让你为多个受支持的 Linux 发行版创建 chroot 环境。
让我重点介绍支持的发行版及其提供的功能:
* 浏览创建的 chroot(s) 文件。
* 能够选择要暴露的挂载点。
* 访问控制台。
* 支持的 Linux 发行版包括 Ubuntu、Alpine Linux、Fedora、Rocky Linux、Gentoo、AlmaLinux、OpenSUSE、Debian 和 CentOS。
It is incredibly easy to use. Creating an atom from within the app is a one-click process.
它非常易于使用。从应用中创建 atom 只需一键。
你所要做的就是为 atom 命名,然后从可用选项列表中选择 Linux 发行版Ubuntu 作为上面截图中的选择)。它会在几分钟内下载镜像并为你设置 chroot 环境,如下所示。
![atom config][5]
完成后,你可以访问选项启动控制台以管理 chroot 环境或自定义/删除它。
![atoms option][6]
要访问控制台,请转到另一个选项卡菜单。非常无缝的体验,并且运行良好,至少对于我测试过的 Ubuntu 而言。
![atoms console][7]
此外,你可以分离控制台以将其作为单独的窗口进行访问。
![atoms detach console][8]
### 在 Linux 上安装 Atom
你可以使用 [Flathub][9] 上提供的 Flatpak 包在任何 Linux 发行版上安装 Atoms。如果你是 Linux 新手,请遵循我们的 [Flatpak 指南][10]。
**注意:** 最新的稳定版本 **1.0.2** 只能通过 Flathub 获得。
要探索其源代码和其他详细信息,请访问其 [GitHub 页面][11]。
### 总结
Linux 命令行功能强大,你几乎可以使用这些命令执行任何操作。但并不是每个人都对它感到满意,因此像 Atoms 这样的工具通过提供 GUI 使其更加方便。
Atoms 并不是唯一的一种。还有 [Grub Customizer][12] 可以更轻松地更改 [Grub][13] 配置,这可以通过命令行完成。
我相信还有更多这样的工具。
*你如何看待使用像 Atom 这样的 GUI 程序来管理 Chroot 环境?在下面的评论中分享你的想法。*
--------------------------------------------------------------------------------
via: https://itsfoss.com/atoms-chroot-tool/
作者:[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/wp-content/uploads/2022/09/atoms.png
[2]: https://itsfoss.com/distrobox/
[3]: https://github.com/marhkb/pods
[4]: https://itsfoss.com/wp-content/uploads/2022/09/atoms-options.png
[5]: https://itsfoss.com/wp-content/uploads/2022/09/atom-config.png
[6]: https://itsfoss.com/wp-content/uploads/2022/09/atoms-option.png
[7]: https://itsfoss.com/wp-content/uploads/2022/09/atoms-console.png
[8]: https://itsfoss.com/wp-content/uploads/2022/09/atoms-detach-console.png
[9]: https://flathub.org/apps/details/pm.mirko.Atoms
[10]: https://itsfoss.com/flatpak-guide/
[11]: https://github.com/AtomsDevs/Atoms
[12]: https://itsfoss.com/grub-customizer-ubuntu/
[13]: https://itsfoss.com/what-is-grub/

View File

@ -0,0 +1,114 @@
[#]: subject: "How to Access Android Devices Internal Storage and SD Card in Ubuntu, Linux Mint using Media Transfer Protocol (MTP)"
[#]: via: "https://www.debugpoint.com/how-to-access-android-devices-internal-storage-and-sd-card-in-ubuntu-linux-mint-using-media-transfer-protocol-mtp/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
如何使用媒体传输协议 (MTP) 在 Ubuntu、Linux Mint 中访问 Android 设备的内部存储和 SD 卡
======
**本教程将展示如何在 Ubuntu 中使用 MTP 访问 android 设备以及如何访问 SD 卡内容。**
MTP即[媒体传输协议][1],是图片传输协议的扩展,它在 Android marshmallow 版本中实现。 marshmallow 更新后,你无法将 android 设备用作典型的大容量存储设备,这可以让你直接插入并在文件管理器(例如 Thunar 或 GNOME Files中查看内部存储内容和 SD 卡内容。这是由于操作系统无法确定 MTP 设备,而且还没有实现支持的设备列表。
### 在 Ubuntu、Linux Mint 中访问 Android 设备的步骤
* 使用以下命令为启用 MTP 的设备 [mtpfs][3] 安装 [libmtp][2]、FUSE 文件系统。
```
sudo apt install go-mtpfs
sudo apt install libmtp
sudo apt install mtpfs mtp-tools
```
* 使用以下命令在 `/media` 中创建一个目录并更改写入权限。
```
sudo mkdir /media/MTPdevice
sudo chmod 775 /media/MTPdevice
sudo mtpfs -o allow_other /media/MTPdevice
```
* 在 Ubuntu 中使用 USB 线缆插入你的 Android 设备。
* 在你的 Android 设备上,在主屏幕下拉,然后单击 “Touch for more options”。
* 在下面的菜单中选择“Transfer File (MTP)”选项。
![MTP Option1][4]
![MTP Option2][5]
* 在终端中运行以下命令查找设备 ID 等。你可以在设备的命令输出中看到 VID 和 PID。记下这两个数字在下图中高亮显示
```
mtp-detect
```
![mtp-detect Command Output][6]
* 使用以下命令使用文本编辑器打开 android 规则文件。
```
sudo gedit /etc/udev/rules.d/51-android.rules
```
* 如果你使用的是未安装 gedit 的最新 Ubuntu请使用以下命令。
```
sudo gnome-text-editor /etc/udev/rules.d/51-android.rules
```
* 在 `51-android.rules` 文件中使用你设备的 VID 和 PID 输入以下行(你在上面的步骤中记下)。
* 保存并关闭文件。
```
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e82", MODE="0666"
```
* 运行以下命令通过 [systemd][7] 重启设备管理器。
```
sudo service udev restart
```
### 访问内容的后续步骤
* 接下来的步骤主要需要访问你的 Android 设备的外部 SD 卡的内容。
* 我必须这样做,因为文件管理器没有显示 SD 卡的内容。不过,这不是一个解决方案,但它是一种临时方案,根据这个 [Google 论坛帖子][8],它适用于大多数用户,并且适用于我的带有闪迪 SD 卡的摩托罗拉 G 2nd Gen。
* 在 Ubuntu 中安全删除你连接的设备。
* 关闭设备。从设备中取出 SD 卡。
* 在没有 SD 卡的情况下打开设备。
* 再次关闭设备。
* 将 SD 卡重新插入并再次打开设备。
* 重启你的 Ubuntu 机器并插入你的安卓设备。
* 现在你可以看到你的安卓设备的内部存储和 SD 卡的内容。
![MTP Device Contents in Ubuntu][9]
### 总结
上述在 Ubuntu 中访问安卓设备内容的教程在旧版和新版 Ubuntu 中的安卓设备三星、一加和摩托罗拉上都可以使用。如果你在访问内容时遇到困难可以试试这些步骤它可能会起作用。在我看来MTP 与老式的即插即用方案相比非常慢。
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/how-to-access-android-devices-internal-storage-and-sd-card-in-ubuntu-linux-mint-using-media-transfer-protocol-mtp/
作者:[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://en.wikipedia.org/wiki/Media_Transfer_Protocol
[2]: https://sourceforge.net/projects/libmtp/
[3]: https://launchpad.net/ubuntu/+source/mtpfs
[4]: https://www.debugpoint.com/wp-content/uploads/2016/03/MTP-Option1.png
[5]: https://www.debugpoint.com/wp-content/uploads/2016/03/MTP-Option2.png
[6]: https://www.debugpoint.com/wp-content/uploads/2016/03/mtp-detect.png
[7]: https://www.debugpoint.com/systemd-systemctl-service/
[8]: https://productforums.google.com/forum/#!topic/nexus/11d21gbWyQo;context-place=topicsearchin/nexus/category$3Aconnecting-to-networks-and-devices%7Csort:relevance%7Cspell:false
[9]: https://www.debugpoint.com/wp-content/uploads/2016/03/MTP-Device-Contents-in-Ubuntu.png

View File

@ -0,0 +1,175 @@
[#]: subject: "4 Simple Steps to Clean Your Ubuntu System"
[#]: via: "https://www.debugpoint.com/4-simple-steps-clean-ubuntu-system-linux/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: "Donkey-Hao"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
清理 Ubuntu 系统的 4 个简单步骤
======
现在,试试看这 4 个简单的步骤,来清理你的 Ubuntu 系统吧。
这份精简指南将告诉你如何清理 Ubuntu 系统以及如何释放一些磁盘空间。
如果你的 Ubuntu 系统已经运行了至少一年,尽管系统是最新的,你仍然可能会觉得你的 Ubuntu 系统运行缓慢且滞后。
在过去,因为你想试验某一应用程序,或是在看到了它的好评推荐之后,而安装了许多应用程序,但你并没有删除它们。下面这些方法可以帮助你找出一些可以释放的隐藏磁盘空间。
### 清理 Ubuntu 系统的步骤
#### 1. 清理 Apt 缓存
Apt 缓存(apt cache)是 Ubuntu 系统保存你下载过的所有文件的地方,以供你之后可以查看它。大多数用户不会去清理 Apt 缓存,而它却可能会占用数百兆字节。
打开终端,并运行以下命令,可以得到你的 Apt 缓存有多少:
```
du -sh /var/cache/apt/archives
```
![][1]
如果你的 Ubuntu 系统已经安装了很久的话,你将看到这个数字非常大。运行以下命令来清理 Apt 缓存。
```
sudo apt-get clean
```
#### 2. 删除无用的内核
如果你已经运行 Ubuntu 系统超过了一年,那么你安装多个内核的可能性很高。如果你的硬件是最新的,并且与 Linux 兼容而没有太多配置,你可以删除旧的内核,保留最新的内核。
在终端运行以下命令来删除旧的内核:
```
sudo apt-get autoremove --purge
```
![Autoremove Purge][2]
#### 3. 删除旧的应用程序和软件包
如果你是一个喜欢尝试 Linux 应用程序的人,那么你的系统中肯定有一些不再需要的没用的应用程序。
现在,你可能已经忘记了你安装过的应用程序名称。不过你可以在终端运行以下命令来查看你最近安装的内容:
你会得到通过 `apt` 命令安装的应用程序和软件包的列表:
```
history | grep "apt-get install"
```
![List of apt installed app History][3]
你将得到最近安装的应用程序列表:
```
grep " install " /var/log/dpkg.log.1
```
```
zgrep " install " /var/log/dpkg.log.2.gz
```
你可以运行以下命令来删除应用程序和软件包:
```
sudo apt remove app1 package1
```
#### 4. 使用系统清理应用
有大量免费和原生系统 [清理应用][4] 可以使用。但是,我认为 [BleachBit][5] 是清理系统最好的一个应用,因为它经久不衰。
使用以下命令安装 BleachBit 或通过应用商店安装。
```
sudo apt install bleachbit
```
安装后,打开 BleachBit并运行扫描。它会向你显示浏览器占用的所有缓存文件、临时文件、垃圾等你只需单击一个按钮即可清理它。
![][6]
### 额外提示
#### 清理 Flatpak 软件包
Flatpak 这一应用程序和运行时(runtime)会占用大量磁盘空间。因为在设计上Flatpak 的可执行文件结合了运行时。尽管运行时可以在相关应用程序之间共享,但许多未使用的剩余运行时可能会占用你的磁盘空间。
删除一些未使用的 Flatpak 包最直接的方法是下面的命令。在终端运行这一命令。
```
flatpak uninstall --unused
```
可以参考 [这篇文章][7] 了解有关 Flatpak 包的更多信息。
#### 清理未使用的 Snap 项目
如果你使用 Ubuntu 系统,那么你很有可能使用的是 Snap 软件包。随着时间的推移Snap 会积累不相关的运行时和文件。你可以使用以下脚本来清理一些没用的 snap 运行时。
将下面的脚本复制到一个新文件中,并将其命名为 `clean_snap.sh`
然后使用 `chmod +x clean_snap.sh` 命令来赋予它可执行权限,并通过 `./clean_snap.sh` 运行
```
#!/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
```
可以参考 [这篇文章][8] 了解有关清理 Snap 包的更多信息。
#### 额外提示
你还可以使用以下命令来手动搜索大文件。
```
find /home -type f -exec du -h {} + | sort -hr | head -20
```
例如,运行以下命令,你会得到根目录 `/` 中的前 20 个大文件。现在你可以查看大文件,并使用文件管理器手动删除它们。请注意删除文件时要非常小心。尽量不要涉及 `/home` 目录以外的任何内容。
![Find Large files in Linux][9]
### 总结
这样就完成了。如果你按照上述步骤操作,你一定能够释放 Ubuntu 系统中的一些空间,现在你的系统有剩余空间了。你可以按照这些措施来清理 Ubuntu 系统。不要忘记使用最新的软件包,使你的系统保持到最新。
🗨️ 如果你认为使用上述的技巧可以释放一些磁盘空间,并使得你的 Ubuntu 更快了,请在下方评论区留言。你通常又是使用什么命令来清理你的 Ubuntu 系统?
快留言告诉我吧。
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/4-simple-steps-clean-ubuntu-system-linux/
作者:[Arindam][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://www.debugpoint.com/author/admin1/
[b]: https://github.com/lkxed
[1]: https://www.debugpoint.com/wp-content/uploads/2018/07/apt-cache.png
[2]: https://www.debugpoint.com/wp-content/uploads/2018/07/Autoremove-Purge-1024x218.png
[3]: https://www.debugpoint.com/wp-content/uploads/2018/07/List-of-apt-installed-app-History.png
[4]: https://www.debugpoint.com/2017/02/stacer-is-a-system-monitoring-and-clean-up-utility-for-ubuntu/
[5]: https://www.bleachbit.org
[6]: https://www.debugpoint.com/wp-content/uploads/2018/07/BleachBit-Clean-your-system.png
[7]: https://www.debugpoint.com/clean-up-flatpak/
[8]: https://www.debugpoint.com/clean-up-snap/
[9]: https://www.debugpoint.com/wp-content/uploads/2018/07/Find-Large-files-in-Linux-1024x612.png
[10]: https://www.debugpoint.com/gnome-43/

View File

@ -0,0 +1,157 @@
[#]: subject: "5 Free and Open-Source Figma Alternatives"
[#]: via: "https://itsfoss.com/figma-alternatives/"
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
5 个免费和开源的 Figma 替代品
======
Figma 是一个流行的界面设计工具。你可以免费开始使用,也可以选择高级订阅计划以供进阶使用。
这是一个令人印象深刻的平台,许多专业人士都依赖它。然而,在 2021 年,[Figma][1] 通过施加某些限制改变了其免费计划。虽然这使一些用户寻找替代品,但对许多人来说仍然是可控的。
不幸的是,在 2022 年,**Adobe 宣布以 200 亿美元收购 Figma** 让许多用户望而却步。因此,每个人都开始寻找免费且可能开源的替代品。
为了帮助你,我们决定编一份 Figma 的免费和开源替代品清单,你可以试试。
**注意:**提到的替代品不一定是 Figma 的完全替代品。我们建议你尝试一下,看看它们是否符合你的要求。
### 1. Penpot
![A Video from YouTube][2]
**主要亮点:**
* 自托管选择。
* 使用 SVG 作为原生格式。
* 基于网络。
* 跨平台。
Penpot 很快被公认为可靠的免费和开源 Figma 替代品。
即使它处于测试阶段,在写这篇文章时,用户似乎喜欢它提供的东西。我不是一个设计专家,但这个工具的用户体验似乎令人印象深刻。
Penpot 的独特之处在于它使用 SVG 作为其原生格式,这很罕见,但也为设计师提供了巨大的好处。
![penpot screenshot][3]
你可以期待 Figma 的基本功能,因为开发人员提到该工具的原始灵感是 Figma他们旨在提供熟悉的用户体验而不给你的设计冒险增加障碍。
前往其官方网站或 GitHub 页面探索更多信息。
[Penpot][4]
### 2. Quant UX
![A Video from YouTube][5]
**主要亮点:**
* 原型设计和测试。
* 无需注册即可获得有限访问权限。
* 定期添加新的测试版功能。
* 自托管选择。
Quant UX 是一种原型设计工具,你可以在其中测试你的设计并获得有关它们的见解。
你可以为 Android 手机、iPhone 或台式机创建自定义原型或选择任何可用的屏幕尺寸。
这也是你会发现不断添加功能的地方,其中一些处于测试阶段。它更专注于通过让你导入设计或创建简单的模型来测试事物。
它允许你无需注册即可访问一些内容,但要使所有功能正常工作,你需要注册一个帐户。在其 [GitHub 页面][6]上探索更多信息。
[Quant UX][7]
### 3. Plasmic
![A Video from YouTube][8]
**主要亮点:**
* 免费和开源。
* 拖放功能。
* 它支持从 Figma 导入设计。
Plasmic 是用于构建网页的卓越设计工具。如果你使用 Figma 进行网页设计,这可能是一个可供选择的工具。
当你选择高级计划时,它免费提供大部分功能,并为团队解锁更多扩展版本历史记录、分析和其他特殊功能。它不仅限于设计网页,还支持 A/B 测试来实验和改进网站的用户交互。
无论你使用的是[开源 CMS][9] 还是 Jamstack 站点Plasmic 几乎都支持集成。前往其官方网站或 [GitHub 页面][10]了解更多信息。
[Plasmic][11]
### 4. Wireflow
![wireflow userflow][12]
**主要亮点:**
* 免费使用。
* 没有付费选项。
* 它没有被积极维护。
Wireflow 作为用户流原型工具是一个有趣的产品,它完全免费使用,没有付费选项。
此外,你无需注册帐户。从其官方网站开始,与他人合作规划你的项目并进行头脑风暴。
不幸的是,它自 2021 年以来没有看到任何最近的开发活动。但是,它仍然活跃并且仍然是一个免费和开源的解决方案。你可以查看其 [GitHub 页面][13]了解更多信息。
[Wireflow][14]
### 5. Akira UX
![akira ux 2020][15]
**主要亮点:**
* 早期开发中的应用。
* 专注于成为原生 Linux UX 应用。
[Akira UX][16] 是一个令人兴奋的项目,旨在带来一个原生 Linux 设计程序,该程序可以与一些基于 Web 的解决方案一样工作。
Akira 的项目负责人加入了 Mozilla Thunderbird 担任产品设计经理。因此,截至目前,该项目还没有被积极地开发。但是,作为一个免费的开源项目,任何人都可以负责它并致力于相同的愿景。
它目前是你可以测试的早期开发版本。你可以在 Flathub 的 beta 渠道中找到它,并按照其 [GitHub 页面说明][17]进行安装。
[Akira UX][18]
### 总结
用免费和开源的解决方案取代 Figma 并不容易。但是,如果你不关心 Figma 的所有功能,我们的一些建议应该可以帮助你完成工作。
*你知道有什么其他免费和开源的 Figma 替代品吗?请在下面的评论中告诉我你的想法*。
--------------------------------------------------------------------------------
via: https://itsfoss.com/figma-alternatives/
作者:[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://www.figma.com/
[2]: https://youtu.be/JozESuPcVpg
[3]: https://itsfoss.com/wp-content/uploads/2022/09/penpot-screenshot.jpg
[4]: https://penpot.app/
[5]: https://youtu.be/eGDTAJlB-uI
[6]: https://github.com/KlausSchaefers/quant-ux
[7]: https://quant-ux.com/
[8]: https://youtu.be/sXXpe5jjnRs
[9]: https://itsfoss.com/open-source-cms/
[10]: https://github.com/plasmicapp/plasmic
[11]: https://www.plasmic.app/
[12]: https://itsfoss.com/wp-content/uploads/2022/09/wireflow-userflow-800x570.jpg
[13]: https://github.com/vanila-io/wireflow
[14]: https://wireflow.co/
[15]: https://itsfoss.com/wp-content/uploads/2022/09/akira-ux-2020.png
[16]: https://itsfoss.com/akira-design-tool/
[17]: https://github.com/akiraux/Akira
[18]: https://github.com/akiraux/Akira