Merge pull request #2 from LCTT/master

update
This commit is contained in:
littlebirdnest 2022-09-19 07:54:16 +08:00 committed by GitHub
commit 0c08f814c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 1587 additions and 187 deletions

View File

@ -0,0 +1,107 @@
[#]: subject: (5 useful Moodle plugins to engage students)
[#]: via: (https://opensource.com/article/21/3/moodle-plugins)
[#]: author: (Sergey Zarubin https://opensource.com/users/sergey-zarubin)
[#]: collector: (lujun9972)
[#]: translator: (MareDevi)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-15042-1.html)
5 款可以吸引学生的有用的 Moodle 插件
======
> 使用插件来赋予你的在线学习平台新的功能来激励学生。
![](https://img.linux.net.cn/data/attachment/album/202209/18/165423pkiq74kwzokqzoq7.jpg)
无论在哪里,优秀的在线学习平台对于教育都非常重要。教师们需要一种途径来开办课堂,学生们需要一个友好的用户界面来促进学习,而管理者也需要一种方法来监控教育系统的有效性。
Moodle 是一个开源的软件包,允许你创建一个带有互动在线课程的私人网站。它可以帮助人们进行虚拟的在线聚会,互相教授和学习,并在此过程中保持井井有条。
Moodle 的独特之处在于它的该可用性,利用第三方解决方案可以显著提高可用性。如果你访问 [Moodle 插件目录][2],你将会找到超过 1,700 种由开源社区开发的插件。
面对如此多的选择,为你的学员挑选出最好的插件可能是一个挑战。为了帮助你开始,这里是我挑选出来的五大插件,你可以将其添加到你的在线学习平台。
### Level up!
![Level up Moodle 插件][3]
> **[Level up! 官网](https://levelup.plus/)**
激励和吸引学习者是教育工作者最困难的任务之一。[Level up! 插件][4] 允许你将学习体验游戏化,将积分分配给完成任务的学生,并显示进度和等级提升。这会鼓励你的学生在健康的氛围中竞争,并成为一个很好的学习者。
另外,你可以完全控制学生所获得的积分,并且他们可以在达到一定等级的时候解锁内容。所有的这些功能都是免费提供的。如果你考虑付费,你可以购买一些额外的功能,如个人奖励和团队排行榜。
### BigBlueButton
![BigBlueButton Moodle 插件][5]
> **[BigBlueButton 官网](https://bigbluebutton.org/)**
[BigBlueButton][6] 可能是最知名的 Moodle 插件。这个开源的视频会议解决方案使得教育者能够让学生远程参与实时在线课程和小组协作活动。它提供了一些重要的功能,例如:实时屏幕共享、音视频通话、聊天,发送表情和分组讨论室。这款插件还可以让你记录你的直播课程。
BigBlueButton 让你能够在任何课程中创建多个活动链接、限制你的学生在你加入之前加入会话、创建自定义欢迎消息、管理你的录音等等。总而言之BigBlueButton 拥有你教授和参与在线课程所需要的一切。
### ONLYOFFICE
![ONLYOFFICE Moodle 插件][7]
> **[ONLYOFFICE 官网](https://www.onlyoffice.com/)**
[ONLYOFFICE 插件][8] 允许学习者和教育者在他们的浏览器中直接创建和编辑文本文档、电子表格和演示文档。无需安装任何额外的应用程序,他们就可以处理附在课程中的 .docx、.xlsx、.pptx、.txt 和 .csv 文件;打开 .pdf 文件进行查看;并应用复杂格式和对象,包括自动形状、表格、图表、方程式等等。
此外ONLYFFICE 使得实时共同编辑文件成为可能,这意味着几个用户可以同时在同一个文件上工作。不同的权限(完全访问、评论、审查、只读和填表)使你更容易灵活地管理对文档的访问。
### Global Chat
![Global Chat Moodle 插件][9]
> **[Global Chat 官网](https://moodle.org/plugins/block_gchat)**
[Global Chat 插件][10] 允许教育者和学习者通过 Moodle 进行实时交流。该插件提供了你课程中所有用户的列表,当你点击一个用户的名字时,它会在页面底部打开一个聊天窗口,以便你们进行交流。
有了这个易于使用的工具,你不需要打开一个单独的窗口来开始在线对话。你可以在网页之间转换,而你的对话将始终保持开放。
### Custom certificate
![Custom certificate Moodle 插件][11]
> **[Custom certificate 官网](https://moodle.org/plugins/mod_customcert)**
另一个吸引学生的有效方法是提供证书作为完成课程的奖励。颁发结业证书的承诺有助于保持学生的进度和对培训的承诺。
[Custom certificate 插件][12] 允许你在你的网页浏览器中生成完全可定制的 PDF 证书。重要的是,该插件与 GDPR 要求兼容,而且证书有独特的验证码,所以你可以用它们进行真实认证。
### 更多丰富的 Moodle 插件
这些是我最喜欢的五个 Moodle 插件。你可以通过在 Moodle.org 上 [注册一个账户][13] 来试用它们,或者你可以托管你自己的插件(或者与你的系统管理员或 IT 人员商量,为你设置一个托管环境)。
如果这些插件不符合你的学习目标,可以看看其他可用的插件。如果你找到一个好的插件,请留下评论并告诉大家。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/3/moodle-plugins
作者:[Sergey Zarubin][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/sergey-zarubin
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/read_book_guide_tutorial_teacher_student_apaper.png?itok=_GOufk6N (阅读书籍的人和数字拷贝)
[2]: https://moodle.org/plugins/
[3]: https://opensource.com/sites/default/files/uploads/gamification.png (Level up Moodle 插件)
[4]: https://moodle.org/plugins/block_xp
[5]: https://opensource.com/sites/default/files/uploads/bigbluebutton.png (BigBlueButton Moodle 插件)
[6]: https://moodle.org/plugins/mod_bigbluebuttonbn
[7]: https://opensource.com/sites/default/files/uploads/onlyoffice_editors.png (ONLYOFFICE Moodle 插件)
[8]: https://github.com/logicexpertise/moodle-mod_onlyoffice
[9]: https://opensource.com/sites/default/files/uploads/global_chat.png (Global Chat Moodle 插件)
[10]: https://moodle.org/plugins/block_gchat
[11]: https://opensource.com/sites/default/files/uploads/certificate.png (Custom certificate Moodle 插件)
[12]: https://moodle.org/plugins/mod_customcert
[13]: https://moodle.com/getstarted/

View File

@ -3,33 +3,30 @@
[#]: author: "Alan Smithee https://opensource.com/users/alansmithee"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15045-1.html"
在家庭实验室中规划 OTA 更新需要了解的 3 件事
规划 OTA 更新需要了解的 3 件事
======
在开始编写应用之前,为手机、物联网设备和边缘计算定义无线更新计划。
![Why and how to handle exceptions in Python Flask][1]
> 在开始编写应用之前,为手机、物联网设备和边缘计算定义无线更新计划。
图片来自 Unsplash.comCC0 协议
过去对系统的更新相对简单。当开发人员需要修改他们已经分发给公众的东西时,会发布一个更新程序供人们运行。用户将运行更新程序,允许用新文件替换旧文件并添加新文件。然而,即使有了这些“相对简单”的更新,也有一个问题。当用户安装好的系统处于意外状态时会发生什么?升级中断时会发生什么?当各种设备都在线时,这些问题同样重要,有时需要重要的安全更新。今天的许多更新都是通过无线、<ruby>空中下载技术<rt>over-the-air</rt></ruby>OTA的方式提供的连接不良、信号突然丢失或断电的可能性可能会对应该是次要更新的内容造成灾难性的影响。这些是你在计划提供 OTA 更新时需要考虑的三大策略。
过去对系统的更新相对简单。当开发人员需要修改他们已经分发给公众的东西时,会发布一个更新程序供人们运行。用户将运行更新程序,允许用新文件替换旧文件并添加新文件。然而,即使有了这些“相对简单”的更新,也有一个问题。当用户的安装处于意外状态时会发生什么?升级中断时会发生什么?当各种设备都在线时,这些问题同样重要,有时需要重要的安全更新。今天的许多更新都是通过无线、空中下载技术 (OTA) 的方式提供的,连接不良、信号突然丢失或断电的可能性可能会对应该是次要更新的内容造成灾难性的影响。这些是你在计划提供 OTA 更新时需要考虑的三大策略。
### 1、验证
### 1. 验证
TCP 协议内置了很多验证功能,因此当你 [向设备发送数据包][2] 时通常可以确信每个数据包都已完好无损地收到。但是TCP 无法报告它不知道的错误,因此由你来验证以下内容:
TCP 协议内置了很多验证功能,因此当你[向设备发送数据包][2]时通常可以确信每个数据包都已完好无损地收到。但是TCP 无法报告它不知道的错误,因此由你来验证以下内容:
* 你是否已发送更新所需的所有文件?设备无法接收最初未发送的内容。
* 你是否已发送更新所需的所有文件?设备无法接收没有发送的内容。
* 收到的文件和你发送的文件一样吗?至少,检查 SHA 和以验证文件完整性。
* 如果可能,请使用[数字签名][3]确保文件来自受信任的来源。
* 如果可能,请使用 [数字签名][3] 确保文件来自受信任的来源。
* 在允许更新开始之前,你必须验证设备能够应用更新。在提交更新之前检查权限和电池状态,并确保你的更新过程覆盖任何意外的用户事件,例如计划的重新启动或休眠。
* 最后,你必须验证声称已成功完成的更新是否已实际完成。在将更新正式标记为系统已完成之前,请检查目标设备上的文件位置和完整性。
### 2. 回退和故障状态
### 2回退和故障状态
更新的最坏情况是设备处于损坏状态,以至于它甚至不能继续中止的更新。在这种情况下,更新程序文件存在于目标设备上,但该过程已被中断。这可能会使设备处于未知状态,其中一些文件已被更新版本替换,而其他文件尚未被触及。在最坏的情况下,已更新的文件与尚未更新的文件不兼容,因此设备无法按预期运行。
更新的最坏情况是设备处于损坏状态,以至于它甚至不能继续中止的更新。在这种情况下,更新程序文件存在于目标设备上,但该过程已被中断。这可能会使设备处于未知状态,其中一些文件已被更新版本替换,而其他文件尚未被替换。在最坏的情况下,已更新的文件与尚未更新的文件不兼容,因此设备无法按预期运行。
有一些策略可以解决这个问题。初始更新步骤可能是安装专用于完成更新的特殊引导镜像或环境,并在系统上设置“标志”以确认更新正在进行中。这样可以确保即使设备在更新过程中突然断电,更新过程也会在下次启动时重新启动。仅在验证更新后才删除表示更新成功的标志。
@ -37,15 +34,15 @@ TCP 协议内置了很多验证功能,因此当你[向设备发送数据包][2
但是,在更新被授予启动权限之前,用户(如果有的话)应该能够延迟或忽略更新。
### 3. 附加更新
### 3附加更新
在许多边缘和物联网设备中,目标设备的底层是不可变的。更新只会添加到系统的已知状态。 [Fedora Silverblue][4] 之类的项目正在证明这种模式可以在许多市场上发挥作用,因此这种奢侈可能会变得司空见惯。不过,在那之前,成功应用更新的一部分是了解你将要影响的环境。
在许多边缘和物联网设备中,目标设备的底层是不可变的。更新只会添加到系统的已知状态。 [Fedora Silverblue][4] 之类的项目正在证明这种模式可以在许多领域发挥作用,因此这种奢侈的做法可能会变得司空见惯。不过,在那之前,成功应用更新的一部分是了解你将要影响的环境。
不过,你不需要不可变的核心来应用附加更新。你可以构建一个使用相同概念的系统,将更新作为添加库或包的一种方式,而无需修改旧版本。作为此类更新的最后一步,具有更新路径的可执行文件是你所做的唯一实际修订。
不过,你不需要不可变的核心来应用附加更新。你可以构建一个使用相同概念的系统,将更新作为添加库或包的一种方式,而无需修改旧版本。作为此类更新的最后一步,具有更新路径的可执行文件是你所做的唯一实际修订。
### OTA 更新
世界越来越无线化。对于手机、物联网设备和[边缘计算][5]OTA 更新通常是唯一的选择。实施 OTA 更新策略需要仔细规划并仔细考虑不可能的情况。你最了解的目标设备,因此请在开始编码之前规划好你的更新架构
世界越来越无线化。对于手机、物联网设备和 [边缘计算][5]OTA 更新通常是唯一的选择。实施 OTA 更新策略需要仔细规划并仔细考虑不可能的情况。你最了解的目标设备,因此请在开始编码之前规划好你的更新架构
--------------------------------------------------------------------------------
@ -54,7 +51,7 @@ via: https://opensource.com/article/22/9/plan-ota-updates-edge
作者:[Alan Smithee][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,42 @@
[#]: subject: "A Project For An Open Source 3D-Printed VR Headgear From Europe"
[#]: via: "https://www.opensourceforu.com/2022/09/a-project-for-an-open-source-3d-printed-vr-headgear-from-europe/"
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
[#]: collector: "lkxed"
[#]: translator: "zjsoftceo"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15044-1.html"
来自欧洲的一个开源 3D 打印 VR 头盔项目
======
![](https://www.opensourceforu.com/wp-content/uploads/2022/09/virtual-reality-4-1536x864.jpg)
> 三家欧洲企业创建了一个 6 GHz WiFi 6E 无线开源虚拟现实头盔。
捷克 3D 打印专家 Prusa Research 公司正在与模拟器开发商 Vrgineers 和英国的 Somnium Space 合作开发 Somnium VR ONE 头盔。这款产品可以连接或者独立使用,旨在尽可能地开放,来改变虚拟现实市场中受限的供应。
由于 Android 11 操作系统是一个开源的操作系统,其源代码是公开的,因此它将在不受限制的商业许可下出售。其中央处理单元是高通骁龙 XR2 CPU支持 microSD 存储卡,并拥有 8GB 的LPDDR5 内存和 512GB UFS 闪存。
它采用新的 6 GHz 的 WiFi 6E 高带宽无线协议,而不是目前拥挤的 5GHz 和 2.4GHz WiFi频率以实现更高的带宽和低延迟连接。它包括两个 3.2 英寸 2880RGB * 2880 快速液晶屏幕,具有 120 度水平视野和 100 度垂直视野。
它具有两个用于外部小工具的 USB-C 10 Gbit/s 链路,和一个 USB-C USB2.0 电池组USB3.2 Gen2。Somnium Space 与布拉格的 VRgineers 合作,在线销售电子产品和独有的镜头,使用户能够 3D 打印自己的头盔,此外,也会提供完整的头盔。
该企业于 2012 年在布拉格成立,已经拥有 700 多名员工。开源的 Prusa i3 design 是世界上使用最广泛的 3D 打印机,每月从布拉格直接向 160 多个国家运送超过 10000 台 Original Prusa 打印机。
<ruby>合成训练环境<rt>Synthetic Training Environments</rt></ruby>STE是由捷克共和国的模拟器开发商 VRgineers 向企业和政府客户提供的。它创造了被称为 XTAL 的专业 8K 头盔,该头盔被 NASA、空客防务与航天公司和 BAE Systems 公司使用,目前在布拉格、布尔诺和拉斯维加斯拥有一支由 50 名专家组成的国际团队。
总部位于伦敦的 Somnium Space 是一个建立在区块链上的开放、社交和永久虚拟现实平台。由于其独特的 NFT 的去中心化经济,用户可以拥有、交易和交换数字商品而无需获得授权。它已经与高通公司和 Ultraleap 公司在 Lynx R-1 上进行了合作这是一个独立的增强现实AR头盔设计。
--------------------------------------------------------------------------------
via: https://www.opensourceforu.com/2022/09/a-project-for-an-open-source-3d-printed-vr-headgear-from-europe/
作者:[Laveesh Kocher][a]
选题:[lkxed][b]
译者:[zjoftceo](https://github.com/zjsoftceo)
校对:[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

@ -3,31 +3,32 @@
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
[#]: collector: "lkxed"
[#]: translator: "littlebirdnest"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15041-1.html"
Torvalds 为自己的Apple M2 Macbook定制Fedora Linux
Torvalds 为自己的 Apple M2 Macbook 专门修改了 Fedora Linux
======
Linus Torvalds 让 Fedora Linux Workstation 36 成功运行在 Apple Macbook Air M2 。666
> Linus Torvalds 让 Fedora Linux Workstation 36 成功运行在 Apple Macbook Air M2 上。666
![Wow! Torvalds Modified Fedora Linux to Run on his Apple M2 Macbook][1]
Linus Torvalds 喜欢写代码和修复代码。当然,这是他的技术专长。
如果你了解过他就是那个买不起UNIX转头就创造了Linux的家伙
如果你知道的话,他就是那个因为买不起 UNIX转头就创造了 Linux 的家伙。
出于类似的原因,他还在 BitKeeper 不再免费使用后构建了 Git
出于类似的原因,他还在 BitKeeper 不再免费使用后构建了 Git
即使在今天,他仍继续着他的开源精神和“没有我解决不了的问题”的态度。
即使在今天,他仍继续着他的动手精神和“没有我解决不了的问题”的态度。
他设法在他的 Apple Macbook Air M2 上运行 Fedora Linux 36 Workstation 版本。
他设法在他的 Apple Macbook Air M2 上运行 Fedora Linux 36 Workstation 版本。
**注意**据 Asahi Linux 的 Hector Martin 告知Linus Torvalds 似乎在这里使用了[Leif 的工具包](https://github.com/leifliddy/asahi-fedora-builder)。所以,你想多了,他并没有从头开始做所有事情来让它发挥作用。
**注意**从 Asahi Linux 的 Hector Martin 那里得知Linus Torvalds 似乎在这里使用了 [Leif 的工具包](https://github.com/leifliddy/asahi-fedora-builder)。所以,你可能想多了,他并没有从头开始做所有事情来让它发挥作用。
![GIF][3]
多亏了ZDNet 对Torvalds的采访我们才发现了这一激动人心的考验。
多亏了 ZDNet 对 Torvalds [采访](https://linux.cn/article-15039-1.html),我们才发现了这一激动人心的考验。
### Apple M2 芯片上的 Fedora Linux
@ -35,37 +36,39 @@ Apple Macbook Air 是一款出色的笔记本电脑。但是,它不能完全
然而Linus Torvalds 似乎是使 Linux 运行在苹果电脑上的天才。
尽管苹果基于 ARM 的 M2 芯片没有 Fedora 端口,但他还是做到了。
尽管苹果基于 ARM 的 M2 芯片没有 Fedora 移植,但他还是做到了。
请注意,这并不意味着您可以立即在 Macbook Air M2 上运行 Fedora Linux。它只适合像 Torvalds 这样的 Linux 创始人才能使其工作。
请注意,这并不意味着你可以立即在 Macbook Air M2 上运行 Fedora Linux。它只适合像 Torvalds 这样的 Linux 高手才能使其工作。
他说,即使没有图形加速和 GNOME 桌面环境中缺少某些图形效果(例如屏幕变暗),这种体验也很出色。
他说,即使没有图形加速和在 GNOME 桌面环境中缺少某些图形效果(例如屏幕调光),这种体验也很出色。
> 我喜欢这种方式,它使显示更加迅捷。我可能也会在我的其他机器上关掉这些。
事实上,总的来说,这是一项令人兴奋的成就!
### Apple 芯片 上Linux 的现状
### Apple 芯片上 Linux 的现状
不仅是 Linus Torvalds而且每个人都对 Apple M1/M2 芯片的性能印象深刻。
事实上,他利用 Macbook Air M2 发布了**Linux Kernel 5.19**
事实上,他利用 Macbook Air M2 发布了 **Linux 内核 5.19**
[Linus Torvalds 使用 Apple MacBook 硬件发布 Linux Kernel 5.19](https://news.itsfoss.com/linux-kernel-5-19-release/)
> **[Linus Torvalds 使用 Apple MacBook 硬件发布 Linux Kernel 5.19](https://news.itsfoss.com/linux-kernel-5-19-release/)**
尽管我们很想尝试一下,但 Apple 的 M2 还没有为 Linux 做好准备。
幸运的是,像[Asahi Linux](https://asahilinux.org/)这样的项目一直在不断改进对 Apple 芯片的支持。他们还设法使[Linux 在最新的 Apple M2 芯片上运行](https://asahilinux.org/2022/07/july-2022-release/)。
幸运的是,像 [Asahi Linux](https://asahilinux.org/) 这样的项目一直在不断改进对 Apple 芯片的支持。他们还设法使 [Linux 在最新的 Apple M2 芯片上运行](https://asahilinux.org/2022/07/july-2022-release/)。
而且,在 Linux 创造者的努力下,我们应该很快就能在 Macbook 上看到完整的 Linux 体验。
到目前为止,可以使其与 Asahi Linux 一起使用,但对于大多数用户来说,它仍然无法取代它作为日常办公系统。
到目前为止,可以使其与 Asahi Linux 一起使用,但对于大多数用户来说,它仍然无法取代它作为日常办公系统。
#### 推荐阅读📖
#### 推荐阅读 📖
有兴趣了解更多关于 Torvalds 的知识吗?我们这里有一个有趣的收藏👇
[Linus Torvalds关于 Linux 创造者的 20 个事实](https://itsfoss.com/linus-torvalds-facts/)
> **[Linus Torvalds关于 Linux 创造者的 20 个事实](https://itsfoss.com/linus-torvalds-facts/)**
*💬您如何看待在 Apple 硬件上运行的 Fedora Linux您希望特定发行版在 Apple M1/M2 驱动的设备上运行吗?那会是什么*
*💬 你如何看待在 Apple 硬件上运行的 Fedora Linux你希望某个发行版可以在 Apple M1/M2 驱动的设备上运行吗?是哪个发行版*
--------------------------------------------------------------------------------
@ -73,8 +76,8 @@ via: https://news.itsfoss.com/fedora-apple-torvalds/
作者:[Ankush Das][a]
选题:[lkxed][b]
译者:[littlebirdnest](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
译者:[littlebirdnest](https://github.com/littlebirdnest)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -0,0 +1,86 @@
[#]: 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: " "
[#]: 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,192 @@
[#]: 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,105 +0,0 @@
[#]: subject: (5 useful Moodle plugins to engage students)
[#]: via: (https://opensource.com/article/21/3/moodle-plugins)
[#]: author: (Sergey Zarubin https://opensource.com/users/sergey-zarubin)
[#]: collector: (lujun9972)
[#]: translator: (MareDevi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
5 useful Moodle plugins to engage students
======
Use plugins to give your e-learning platform new capabilities that
motivate students.
![Person reading a book and digital copy][1]
A good e-learning platform is important for education all over the world. Teachers need a way to hold classes, students need a friendly user interface to facilitate learning, and administrators need a way to monitor the educational system's effectiveness.
Moodle is an open source software package that allows you to create a private website with interactive online courses. It's helping people gather virtually, teach and learn from one another, and stay organized while doing it.
What makes Moodle unique is its high usability that can significantly increase with third-party solutions. If you visit the [Moodle plugins directory][2], you'll find over 1,700 plugins developed by the open source community.
Picking the best plugins for your learners might be a challenge with so many choices. To help get you started, here my top five plugins to add to your e-learning platform.
### Level up!
![Level up Moodle plugin][3]
Level up! Source: <https://levelup.plus/>
Motivating and engaging learners is one of the most difficult tasks for educators. The [Level up plugin][4] allows you to gamify the learning experience by attributing points to students for completing actions and allowing them to show progress and level up. This encourages your students to compete in a healthy atmosphere and be better learners.
What's more, you can take total control over the points your students earn, and they can unlock content when they reach a certain level. All of these features are available for free. If you are ready to pay, you can buy some extra functionality, such as individual rewards and team leaderboards.
### BigBlueButton
![BigBlueButton Moodle plugin][5]
BigBlueButton. Source: <https://bigbluebutton.org/>
[BigBlueButton][6] is probably the most well-known Moodle plugin. This open source videoconferencing solution allows educators to engage remote students with live online classes and group collaboration activities. It offers important features such as real-time screen sharing, audio and video calls, chat, emojis, and breakout rooms. This plugin also allows you to record your live sessions.
BigBlueButton enables you to create multiple activity links within any course, restrict your students from joining a session until you join, create a custom welcome message, manage your recordings, and more. All in all, BigBlueButton has everything you need to teach and participate in online classes.
### ONLYOFFICE
![ONLYOFFICE Moodle plugin][7]
ONLYOFFICE. Source: <https://www.onlyoffice.com/>
The [ONLYOFFICE plugin][8] allows learners and educators to create and edit text documents, spreadsheets, and presentations right in their browser. Without installing any additional apps, they can work with .docx, .xlsx, .pptx, .txt, and .csv files attached to their courses; open .pdf files for viewing; and apply advanced formatting and objects including autoshapes, tables, charts, equations, and more.
Moreover, ONLYFFICE makes it possible to co-edit documents in real time, which means several users can simultaneously work on the same document. Different permission rights (full access, commenting, reviewing, read-only, and form filling) make it easier to manage access to your documents flexibly.
### Global Chat
![Global Chat Moodle plugin][9]
Global Chat. Source: <https://moodle.org/plugins/block_gchat>
The [Global Chat plugin][10] allows educators and learners to communicate in real time via Moodle. The plugin provides a list of all the users in your courses, and when you click a user's name, it opens a chat window at the bottom of the page so that you can communicate.
With this easy-to-use tool, you don't need to open a separate window to start an online conversation. You can change between web pages, and your conversations will always remain open.
### Custom certificate
![Custom certificate Moodle plugin][11]
Custom certificate. Source: <https://moodle.org/plugins/mod_customcert>
Another effective way to engage students is to offer certificates as a reward for course completion. The promise of a completion certificate helps keep students on track and committed to their training.
The [Custom certificate plugin][12] allows you to generate fully customizable PDF certificates in your web browser. Importantly, the plugin is compatible with GDPR requirements, and the certificates have unique verification codes, so you can use them for authentic accreditation.
### Oodles of Moodle plugins
These are my top five favorite Moodle plugins. You can try them out by [signing up for an account][13] on Moodle.org, or you can host your own installation (or talk to your systems administrator or IT staff to set one up for you).
If these plugins aren't the right options for your learning goals, take a look at the many other plugins available. If you find a good one, leave a comment and tell everyone about it!
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/3/moodle-plugins
作者:[Sergey Zarubin][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/sergey-zarubin
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/read_book_guide_tutorial_teacher_student_apaper.png?itok=_GOufk6N (Person reading a book and digital copy)
[2]: https://moodle.org/plugins/
[3]: https://opensource.com/sites/default/files/uploads/gamification.png (Level up Moodle plugin)
[4]: https://moodle.org/plugins/block_xp
[5]: https://opensource.com/sites/default/files/uploads/bigbluebutton.png (BigBlueButton Moodle plugin)
[6]: https://moodle.org/plugins/mod_bigbluebuttonbn
[7]: https://opensource.com/sites/default/files/uploads/onlyoffice_editors.png (ONLYOFFICE Moodle plugin)
[8]: https://github.com/logicexpertise/moodle-mod_onlyoffice
[9]: https://opensource.com/sites/default/files/uploads/global_chat.png (Global Chat Moodle plugin)
[10]: https://moodle.org/plugins/block_gchat
[11]: https://opensource.com/sites/default/files/uploads/certificate.png (Custom certificate Moodle plugin)
[12]: https://moodle.org/plugins/mod_customcert
[13]: https://moodle.com/getstarted/

View File

@ -2,7 +2,7 @@
[#]: via: "https://www.opensourceforu.com/2022/09/python-microservices-using-flask-on-kubernetes/"
[#]: author: "Krishna Mohan Koyya https://www.opensourceforu.com/author/krishna-mohan-koyya/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: translator: "MjSeven"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "

View File

@ -0,0 +1,137 @@
[#]: subject: "A Complete Guide to Cloud Service Architectures"
[#]: via: "https://www.opensourceforu.com/2022/09/a-complete-guide-to-cloud-service-architectures/"
[#]: author: "Mir H.S. Quadri https://www.opensourceforu.com/author/shah-quadri/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
A Complete Guide to Cloud Service Architectures
======
*In its roughly 16 years of evolution, cloud computing has evolved to become a technology that is used by almost everyone who uses the Internet. It can be used as a service to support various types of business and consumer requirements. Therefore, multiple service architectures are being used in cloud computing to customise the technology as per modern day needs. This article provides a complete guide to all the service architectures being used today.*
While the idea of having a network of computers collaborating across the world has existed since the early 1960s, the formal conceptualisation of it occurred in 2006 when Eric Schmidt, the then CEO of Google, introduced the term cloud computing in its modern day context.
Cloud computing can be simply understood as a network of remote servers across the world, sharing data and collaborating over the Internet to provide services to businesses and customers. Albeit an arbitrary definition, it does cover the core idea behind cloud computing. The primary motivating factor for such a technology was to create more stickability in data, i.e., to make data more easily accessible across the devices whilst reducing the risks of data loss. If a user x has data in only one server, the chances of permanent data loss for x are higher given that all it takes is one server outage. That is equivalent to the proverbial putting all your eggs in one basket method, which is never a good idea especially when you are dealing with data that can be critical for businesses and consumers. But if you replicate the data of x in multiple servers across the globe, it will have two major benefits. For one, x will still be able to access his/her data even if a server is facing an outage. Second, the cloud can provide x with access to its data from a server that is available closest to it with the least amount of load. This makes data faster and more easily accessible across different devices for x.
In its roughly 16 years of evolution, cloud computing has gone from being something used simply for backing up photos to becoming the backbone of the Internet. Almost every app today, from Microsoft Office to Asana and Todoist, makes use of cloud computing for real-time access and sharing of data. Almost any app that you can think of uses cloud computing. Everything from Gmail and YouTube, to Instagram and even WhatsApp, uses cloud computing in the background to provide fast, easy, and reliable access to data.
The companies that provide cloud computing services are called cloud service providers. Amazon, Google, Microsoft, Salesforce, Cloud9, etc, all provide cloud as a service in both B2B and B2C contexts.
In the early days, cloud service providers generally offered only three types of services to their customers:
* Software as a Service (SaaS)
* Platform as a Service (PaaS)
* Infrastructure as a Service (IaaS)
However, as the industry requirements have evolved with new technologies such as blockchain and AI coming into the picture, cloud service providers have come up with new models to better serve the varying requirements of their customers. In this article, we are going to go through all the cloud computing service models currently being used in the market.
### The architecture of a cloud
Now that we have an idea of what cloud computing is and how it evolved into becoming a 445 billion dollar industry, let us try to understand the cloud from a technical perspective. A generalised architecture of a cloud can be conceptualised as consisting of two major components — the front-end and the back-end.
![Figure 1: The architecture of a cloud (Courtesy: TechVidvan)][1]
The front-end contains the client infrastructure, i.e., the device and the user interface of the application used for communicating with the cloud. In a real-world context, your smartphone and the Google Drive app are the front-end client infrastructure that can be used for accessing the Google cloud.
The back-end contains the cloud infrastructure, i.e., all the mechanisms and machinery required to run a cloud computing service. The servers, virtual machines, services and storage are all provided by the cloud infrastructure, as shown in ure 1. Lets quickly go through each component of the back-end in order to get a complete picture.
* Application: The back-end of whatever app the user or business uses to interact with the cloud via the Internet.
* Service: The infrastructure for the type of service that the cloud provides. We are going to go into detail about all the different types of services in this article.
* Runtime: The provision of runtime and execution made available to the virtual machines.
* Storage: The acquisition and management of user/business data with the flexibility of scaling.
* Infrastructure: The hardware and software required to run the cloud.
* Security and management: Putting security mechanisms in place to protect user/business data as well as managing individual units of the cloud architecture to avoid overload and service outages.
### Software as a Service (SaaS)
Software as a Service is a cloud computing model that provides software and applications as a service over the Internet. A good example of this is Google Drive or Google Workspace. All the apps available in Google Drive such as docs, sheets, slides, forms, etc, can be accessed online using a Web browser and saved automatically to the cloud. You can access the latest version of your documents through any device. All you need to do is login to your account. This is the benefit of having the Software as a Service model. Instead of having to install anything to your device locally or using your local storage space, you can directly access the software application in the cloud thus removing a lot of the liabilities that come with localised software. SaaS often follows the pay as you go model, i.e., you pay for the services you need. You can always purchase more storage and/or features by paying more or downgrade your package as per your requirements.
#### Benefits of SaaS
1. SaaS is highly scalable, thanks to the pay as you go model. You can increase/decrease storage and/or the features of the apps as and how you need to.
2. It is considerably cost-effective given the features it provides such as real-time access through any device with any operating system.
3. It involves low effort at the customer-end. No installations or confusing steps are required to initialise the software. You can use it from the comfort of your browser and/or app.
4. Software updates automatically without you having to install it or wait for installation at your end.
### Platform as a Service (PaaS)
Not every tech startup has the required resources to maintain their own infrastructure to run their apps on the cloud. In many cases, companies (especially startups) prefer to have their app hosted on the cloud without having to handle all the backend infrastructure. It is in situations such as these where a Platform as a Service model comes into play. Companies such as Heroku cloud offer PaaS architecture-based cloud solutions for companies and individuals to host and run their apps in the cloud without having any direct contact with the hardware infrastructure. Like SaaS, this model also provides flexibility in choosing only the services you require along with scalability and security from an infrastructural perspective.
#### Benefits of PaaS
1. No hassle of handling the cloud infrastructure. You outsource that to the company that hosts your app in their cloud. This helps you focus solely on your app development life cycle.
2. PaaS is scalable. You can increase or decrease your storage requirements, add-on services, etc, as per your requirements.
3. The only security parameters you set are for your own app. The cloud security is dealt with by your cloud service provider.
4. It is time- and cost-effective for companies and individuals looking to host their apps in the cloud, especially startups that cannot afford to build their own infrastructure.
### Infrastructure as a Service (IaaS)
Infrastructure as a Service goes one step deeper than PaaS, providing customers with even more autonomy. In an IaaS model, the cloud service provider gives you control over the underlying infrastructure of the cloud. Simply put, you get to design your own cloud environment customised to your companys requirements all the way from dedicated servers and virtual machines, to operating systems running on the servers, setting bandwidths, creating your own security protocols, and pretty much everything else that goes into creating a cloud infrastructure. Amazon AWS and Google Compute Engine are great examples of IaaS models. Given the autonomy over the hardware that this model provides, it is also referred to as Hardware as a Service (HaaS).
#### Benefits of IaaS
1. Granular flexibility in the pay as you go model. You get to decide how many VMs you want to run and for how long. You can even pay by the hour.
2. Highly scalable, given that it follows the pay as you go model to its core.
3. Complete autonomy and control over everything in the infrastructure without the hassle of maintaining the servers physically at your company location.
4. Most companies guarantee uptime, security and 24/7 on-site customer support, which can be essential for enterprises.
### Storage as a Service (StaaS)
Google Drive, OneDrive, Dropbox, and iCloud are some of the big names in the industry providing Storage as a Service to their customers. StaaS is as simple as it sounds. If all you require is storage in the cloud that is accessible to you in real-time through any of your devices, then the StaaS model is the one to choose. Many companies and individuals make use of this service model to back up their data.
#### Benefits of StaaS
1. Access your data in its most updated form in real-time with the help of built-in version control systems.
2. Access your data through any type of device with any operating system.
3. Back-up your data in real-time as and how you create, edit, and delete your files.
4. Scale your storage as and how you require. StaaS follows the pay as you go model.
### Anything/Everything as a Service (XaaS)
A hybrid version of the IaaS, PaaS, SaaS, and StaaS, is what is being called the Anything/Everything as a Service model, and is quickly gaining traction in the cloud community. It is possible for a customer to have requirements that are so varied that they might be a mishmash of all the different models. In such a scenario, complete autonomy is provided to customers to select the services from different tiers to create their own custom pay as you go model. This has the benefit of giving complete freedom to the customer to use the cloud on their own terms.
#### Benefits of XaaS
1. Choose what you like, how you like and as you like.
2. Pay only for exactly what you need without having to pay for any base fee predicated on a tier system.
3. Select your infrastructure, platform, and functionality on a granular level.
4. If used appropriately, XaaS can be the most time-, cost- and work-effective method of hosting your application on the cloud.
### Function as a Service (FaaS)
In certain cases, companies or individuals require the benefits of PaaS without having to use all its functionality. For example, trigger-based systems such as cron jobs only require a piece of code or a function to run on a serverless system to achieve a particular objective. For instance, a customer may want to create a website traffic monitoring system that sends a notification the moment a certain number of page downloads occur. In such a case, the customer requirements are simply to run a piece of code in the cloud that keeps checking for a trigger to execute. Using a PaaS model can be a costly solution. This is where Function as a Service comes in. Many companies such as Heroku offer FaaS to their customers to host only a specific piece of code or function that is reactionary and only activates upon a trigger.
#### Benefits of FaaS
1. You only pay for the number of executions of the code. You are generally not charged for hosting your code unless it is computationally expensive.
2. It removes all the liability of PaaS while giving you all its benefits.
3. You are not responsible for the underlying infrastructure in any way. Therefore, you can simply upload your code without having to worry about any maintenance of the virtual machines.
4. FaaS provides you with the ability to be agile, i.e., to write functional code.
### Blockchain Platform as a Service (BPaaS)
Blockchain has taken the tech industry by storm in recent years. It is one of the most in-demand technologies right now, surpassed marginally by AI and data science related technologies. What makes blockchain so attractive is its open-ledger architecture providing security, scalability, and transparency. These features are necessary for many applications such as banking, electoral systems, and even social media. With such wide-ranging applications, it becomes necessary to be able to host such products on the cloud with a model that specifically caters to the needs of this technology. This is where BPaaS comes into the picture. Many companies today, including big names such as Amazon AWS and Microsoft Azure, are providing BPaaS solutions for customers specifically looking to host blockchain based apps in the cloud.
#### Benefits of BPaaS
1. It caters to the specific needs of the blockchain industry such as support for custom languages used for writing smart contracts.
2. Supports integrations with pre-eminent blockchains such as Ethereum by providing API bridges.
3. Supports custom databases used in the application life cycle of blockchain technologies.
4. It has all the goodness of the cloud with the pay as you go feature, scalability, security, and ease of access.
--------------------------------------------------------------------------------
via: https://www.opensourceforu.com/2022/09/a-complete-guide-to-cloud-service-architectures/
作者:[Mir H.S. Quadri][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/shah-quadri/
[b]: https://github.com/lkxed
[1]: https://www.opensourceforu.com/wp-content/uploads/2022/08/Figure-1-The-architecture-of-a-cloud-2.jpg

View File

@ -0,0 +1,75 @@
[#]: subject: "Developing Low Latency Applications in the Cloud with AI and ML"
[#]: via: "https://www.opensourceforu.com/2022/09/developing-low-latency-applications-in-the-cloud-with-ai-and-ml/"
[#]: author: "Bala Kalavala https://www.opensourceforu.com/author/bala-kalavala/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Developing Low Latency Applications in the Cloud with AI and ML
======
*This article looks at the key considerations that are critical to the success of delivering low latency applications in the cloud. It also outlines how to build an interactive low latency application.*
“Productivity is never an accident. It is always the result of a commitment to excellence, intelligent planning, and focused effort,” said Paul J. Meyer, motivational speaker.
This was meant in the context of humans. With the evolution of technology and machines taking over mundane repetitive tasks from humans, this statement applies to machines as well today. Acceleration in the pace of change has led users to believe its about time technology delivers instant response to requests, especially in the interactive world of entertainment (such as online video games like World of Warcraft or Fortress, where hundreds of users participate simultaneously in voice conversations).
Edge computing has been around a long time; however, what it means to different industries and organisations has evolved over time differently. Cloud native computing has brought yet another meaning to the edge as a resource belonging to cloud service providers that can be leveraged on demand. Persistent efforts in the field of artificial intelligence (AI) over the last 50+ years have made it evolve from a scalable efficiency model to a scalable learning model by combining it with machine learning (ML).
The Internet of Things (IoT) has led to yet another increase in the demand for edge computing. The massive data that connected devices create by communicating with each other over the Internet needs to be processed efficiently in order to be used properly. This has led to demand for low latency applications in the cloud.
### Business considerations of low latency applications
While designing an application, business considerations must be the topmost priority in ensuring successful deployment of the solution. Here are the key business considerations that are critical to the success of delivering low latency applications.
* Localised real-time data processing will be efficient and deliver faster data driven decisions with the use of AI and ML.
* Security at the edge, as well as data encryption at rest and in transit, along with site key management for private and public key encryption will enable always encrypted communication.
* Low operational costs with agility, as bandwidth and throughput concerns typically are addressed with solutions that cost significant resources financially or otherwise.
* Optimal affordable storage at the edge and also at the hub as connected devices generate large amounts of data on a daily basis. Data analysis must be optimised at every point.
### Technical considerations of low latency applications
A lack of understanding or planning of technical considerations leads to the vast majority of project failures. Lets look at some critical technical considerations that are important in the design and development of low latency applications.
* Infrastructure deployment and configuration management for the edge can be challenging. Hardware and software stack decisions must be made carefully ensuring the deployed architecture meets the expected performance considerations.
* Edge network visibility must be built beyond real-time traffic monitoring to include predictive and proactive analytics, leveraging AI and ML to create insights into edge performance.
* Connectivity at the edge for set application configurations should be designed for latency, bandwidth, throughput, and quality of service to ensure that typical outer edge communication issues with centralised and distributed systems are managed. Evolution of 5G has made this journey a little smoother.
### A low latency application for an interactive experience
Now that we are through with the fundamentals, lets look at how a low latency application is built in an example use case. The application we are going to build is an interactive experience where the human and machine interaction is expected to occur in real-time or, at least, the human interacting with the machine must not feel a lag in response. One could argue that we already have this in Alexa, Google Assistant, etc. Yes, we do for end consumers for specific search-based responses. Lets look at a reference architecture for an interactive experience application that an organisation tailors for its own end users.
![Figure 1: Low latency reference architecture for interactive experience][1]
An interactive experience application requires near-real-time responses. This can be done by applying a multichannel framework at the experience layer to build the organisations brand image. End user personalisation in a fragmented communication allows for quick consumption and processing of data, limiting any latency aspects in the last step (commonly known as last mile delivery of content). Machine learning models are built with ONNX Runtime, thats built on the Open Neural Network Exchange (ONNX) open standard which has a JavaScript library. Later, the data required is serialised with open source tools like MLeap or equivalents of it, which is deserialised back for MLeap runtime to power real-time API services in the omnichannel experience layer and beyond.
The middle services layer is designed with an omnichannel framework, where end user focused data is precomputed with the support of ML learnings using open source tools like Spark, Scikit-learn or TensorFlow.
The data is then exported to MLeapBundle, which can be deployed at the edge data centre. This approach reduces any network latency concerns typical data centre connectivity will have, allowing for enterprise grade processing power for real-time machine learning.
The final step in request processing is to interface with core and third party systems of the organisation for the data necessary in experience analytics. This data runs in a typical data centre or in cloud native services. The end-to-end low latency application can be developed using proven open source tools.
The technical architecture shown in Figure 2 is a reference implementation of a low latency application that could be developed for an interactive experience for various common use cases. Each of the open source tools selected has many alternatives as well. Depending on the capability and functional need of the solution, the appropriate tools may be swapped to build the right-sized implementation. Links to each of the tools used, with a brief on their purpose, are given in the References at the end of this article.
![Figure 2: Low latency technical architecture for interactive experience][2]
Most popular cloud service providers are embracing advancements in low latency solutions. They either offer a cloud native offering thats wrapped around familiar open source tools (e.g., Apache Spark) or they build their own, providing developers the opportunity to select the right tools that are cost-effective, but meet the expectations of low latency and good performance.
Deploying a scalable low latency solution that meets the needs of an organisation can enable it to deliver better products and services to its customers. Though there is considerable effort involved in deploying scalable low latency solutions the right way, the investment and risks are worth it.
--------------------------------------------------------------------------------
via: https://www.opensourceforu.com/2022/09/developing-low-latency-applications-in-the-cloud-with-ai-and-ml/
作者:[Bala Kalavala][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/bala-kalavala/
[b]: https://github.com/lkxed
[1]: https://www.opensourceforu.com/wp-content/uploads/2022/08/Figure-1-Low-latency-reference-architecture-for-interactive-experience.jpg
[2]: https://www.opensourceforu.com/wp-content/uploads/2022/08/Figure-2-Low-latency-technical-architecture.jpg

View File

@ -0,0 +1,153 @@
[#]: subject: "Fix the apt-key deprecation error in Linux"
[#]: via: "https://opensource.com/article/22/9/deprecated-linux-apt-key"
[#]: author: "Chris Hermansen https://opensource.com/users/clhermansen"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Fix the apt-key deprecation error in Linux
======
Follow these steps and you can run apt update with no warnings or errors related to deprecated key configurations.
This morning, after returning home from a mini vacation, I decided to run `apt update` and `apt upgrade` from the command line just to see whether there had been any updates while I was offline. After issuing the update command, something didn't seem quite right; I was seeing messages along the lines of:
```
W: https://updates.example.com/desktop/apt/dists/xenial/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
```
True, it's just a warning, but still there's that scary word, deprecation, which usually means it's going away soon. So I thought I should take a look. Based on what I found, I thought my experience would be worth sharing.
It turns out that I have older configurations for some repositories, artifacts of installation processes from "back in the day," that needed adjustment. Taking my prompt from the warning message, I ran `man apt-key` at the command line, which provided several interesting bits of information. Near the beginning of the man page:
```
apt-key is used to manage the list of keys used by apt to authenticate packages. Packages which have been authenticated using these keys are considered trusted.
Use of apt-key is deprecated, except for the use of apt-key del in maintainer scripts to remove existing keys from the main keyring. If such usage of apt-key is desired, the additional installation of the GNU Privacy Guard suite (packaged in gnupg) is required.
apt-key(8) will last be available in Debian 11 and Ubuntu 22.04.
```
Last available in "Debian 11 and Ubuntu 22.04" is pretty much *right now* for me. Time to fix this!
### Fixing the apt-key deprecation error
Further on in the man page, there's the deprecation section mentioned in the warning from apt update:
```
DEPRECATION
Except for using apt-key del in maintainer scripts, the use of apt-key is deprecated. This section shows how to replace the existing use of apt-key.
If your existing use of apt-key add looks like this:
wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -
Then you can directly replace this with (though note the recommendation below):
wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/trusted.gpg.d/myrepo.asc
Make sure to use the "asc" extension for ASCII armored keys and the "gpg" extension for the binary OpenPGP format (also known as "GPG key public ring"). The binary OpenPGP format works for all apt versions, while the ASCII armored format works for apt version >= 1.4.
Recommended: Instead of placing keys into the /etc/apt/trusted.gpg.d directory, you can place them anywhere on your filesystem by using the Signed-By option in your sources.list and pointing to the filename of the key. See sources.list(5) for details. Since APT 2.4, /etc/apt/keyrings is provided as the recommended location for keys not managed by packages. When using a deb822-style sources.list, and with apt version >= 2.4, the Signed-By option can also be used to include the full ASCII armored keyring directly in the sources.list without an additional file.
```
If you, like me, have keys from non-repository stuff added with `apt-key`, then here are the steps to transition:
1. Determine which keys are in `apt-key keyring /etc/apt/trusted.gpg`
2. Remove them
3. Find and install replacements in `/etc/apt/trusted.gpg.d/` or in `/etc/apt/keyrings/`
### 1. Finding old keys
The command `apt-key list` shows the keys in `/etc/apt/trusted.gpg` :
```
$ sudo apt-key list
[sudo] password:
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
/etc/apt/trusted.gpg
--------------------
pub   rsa4096 2017-04-05 [SC]
      DBE4 6B52 81D0 C816 F630  E889 D980 A174 57F6 FB86
uid           [ unknown] Example <support@example.com>
sub   rsa4096 2017-04-05 [E]
pub   rsa4096 2016-04-12 [SC]
      EB4C 1BFD 4F04 2F6D DDCC  EC91 7721 F63B D38B 4796
uid           [ unknown] Google Inc. (Linux Packages Signing Authority) <linux-packages-keymaster@google.com>
sub   rsa4096 2021-10-26 [S] [expires: 2024-10-25]
[...]
```
Also shown afterward are the keys held in files in the `/etc/apt/trusted.gpg.d` folder.
**[[ Related read How to import your existing SSH keys into your GPG key ]][2]**
### 2. Removing old keys
The group of quartets of hex digits, for example `DBEA 6B52...FB86`, is the identifier required to delete the unwanted keys:
```
$ sudo apt-key del "DBEA 6B52 81D0 C816 F630  E889 D980 A174 57F6 FB86"
```
This gets rid of the Example key. That's literally just an example, and in reality you'd get rid of keys that actually exist. For instance, I ran the same command for each of the real keys on my system, including keys for Google, Signal, and Ascensio. Keys on your system will vary, depending on what you have installed.
### 3. Adding keys
Getting the replacement keys is dependent on the application. For example, Open Whisper offers its key and an explanation of what to do to install it, which I decided not to follow as it puts the key in `/usr/share/keyrings`. Instead, I did this:
```
$ wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg
$ sudo mv signal-desktop-keyring.gpg /etc/apt/trusted.gpg.d/
$ sudo chown root:root /etc/apt/trusted.gpg.d/signal-desktop-keyring.gpg
$ sudo chmod ugo+r /etc/apt/trusted.gpg.d/signal-desktop-keyring.gpg
$ sudo chmod go-w /etc/apt/trusted.gpg.d/signal-desktop-keyring.gpg
```
Ascencio also offers instructions for installing OnlyOffice that include dealing with the GPG key. Again I modified their instructions to suit my needs:
```
$ gpg --no-default-keyring --keyring gnupg-ring:~/onlyoffice.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5
$ sudo mv onlyoffice.gpg /etc/apt/trusted.gpg.d/
$ sudo chown root:root /etc/apt/trusted.gpg.d/onlyoffice.gpg
$ sudo chmod ugo+r /etc/apt/trusted.gpg.d/onlyoffice.gpg
$ sudo chmod go-w /etc/apt/trusted.gpg.d/onlyoffice.gpg
```
As for the Google key, it is managed (correctly, it appears) through the `.deb` package, and so a simple reinstall with `dpkg -i` was all that was needed. Finally, I ended up with this:
```
$ ls -l /etc/apt/trusted.gpg.d
total 24
-rw-r--r-- 1 root root 7821 Sep  2 10:55 google-chrome.gpg
-rw-r--r-- 1 root root 2279 Sep  2 08:27 onlyoffice.gpg
-rw-r--r-- 1 root root 2223 Sep  2 08:02 signal-desktop-keyring.gpg
-rw-r--r-- 1 root root 2794 Mar 26  2021 ubuntu-keyring-2012-cdimage.gpg
-rw-r--r-- 1 root root 1733 Mar 26  2021 ubuntu-keyring-2018-archive.gpg
```
### Expired keys
The last problem key I had was from an outdated installation of QGIS. The key had expired, and I'd set it up to be managed by `apt-key`. I ended up following their instructions to the letter, both for installing a new key in `/etc/apt/keryings` and their suggested format for the `/etc/apt/sources.list.d/qgis.sources` installation configuration.
**[[ Download the Linux cheat sheets for apt or dnf ]][3]**
### Linux system maintenance
Now you can run `apt update` with no warnings or errors related to deprecated key configurations. We `apt` users just need to remember to adjust any old installation instructions that depend on `apt-key`. Instead of using `apt-key`, you must instead install a key to `/etc/apt/trusted.gpg.d/` or `/etc/apt/keyrings/`, using `gpg` as needed.
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/deprecated-linux-apt-key
作者:[Chris Hermansen][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/clhermansen
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/mistake_bug_fix_find_error.png
[2]: https://opensource.com/article/19/4/gpg-subkeys-ssh-multiples
[3]: https://opensource.com/downloads/apt-cheat-sheet

View File

@ -0,0 +1,322 @@
[#]: subject: "How to Install Kubernetes Cluster on Debian 11 with Kubeadm"
[#]: via: "https://www.linuxtechi.com/install-kubernetes-cluster-on-debian/"
[#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
How to Install Kubernetes Cluster on Debian 11 with Kubeadm
======
Are you looking for an easy guide for installing Kubernetes Cluster on Debian 11 (Bullseye)?
The step-by-step guide on this page will demonstrate you how to install Kubernetes cluster on Debian 11 with Kubeadm utility.
Kubernetes (k8s) cluster contains master and worker nodes which are used to run containerized applications. Master node works as control plan and worker nodes offers environment for actual workload.
##### Prerequisites
* Minimal Installed Debian 11
* 2 CPU / vCPU
* 2 GB RAM
* 20 GB free disk space
* Sudo User with Admin rights
* Stable Internet Connectivity
##### Lab Setup
For the demonstration, I am using three Debian 11 systems with following details,
* Master Node (k8s-master) 192.168.1.236
* Worker Node 1 (k8s-worker1) 192.168.1.237
* Worker Node 2 (k8s-worker2) 192.168.1.238
Without any further delay, lets jump into the installation steps.
### 1 ) Set Host Name and update /etc/hosts file
Use hostnamectl command to set the hostname on master and worker nodes.
```
$ sudo hostnamectl set-hostname "k8s-master"       // Run on master node
$ sudo hostnamectl set-hostname "k8s-worker1"      // Run on 1st worker node
$ sudo hostnamectl set-hostname "k8s-worker2"      // Run on 2nd worker node
```
Add the following entries in /etc/hosts file on all the nodes,
```
192.168.1.236       k8s-master
192.168.1.237       k8s-worker1
192.168.1.238       k8s-worker2
```
### 2) Disable Swap on all nodes
For kubelet to work smoothly, it is recommended to disable swap. Run following commands on master and worker nodes to turn off swap.
```
$ sudo swapoff -a
$ sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
```
### 3) Configure Firewall Rules for Kubernetes Cluster
In case, OS firewall is enabled on your debian systems then allow following ports on master and worker nodes respectively.
On Master node, run
```
$ sudo ufw allow 6443/tcp
$ sudo ufw allow 2379/tcp
$ sudo ufw allow 2380/tcp
$ sudo ufw allow 10250/tcp
$ sudo ufw allow 10251/tcp
$ sudo ufw allow 10252/tcp
$ sudo ufw allow 10255/tcp
$ sudo ufw reload
```
On Worker Nodes,
```
$ sudo ufw allow 10250/tcp
$ sudo ufw allow 30000:32767/tcp
$ sudo ufw reload
```
Note: If firewall is disabled on your Debian 11 systems, then you can skip this step.
### 4) Install Containerd run time on all nodes
Containerd is the industry standard container run time, we must install containerd on all master and worker nodes.
Before installing containerd, set the following kernel parameters on all the nodes.
```
$ cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
$ sudo modprobe overlay
$ sudo modprobe br_netfilter
$ cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
```
To make above changes into the effect, run
```
$ sudo sysctl --system
```
Now, install conatinerd by running following apt command on all the nodes.
```
$ sudo apt  update
$ sudo apt -y install containerd
```
Configure containerd so that it works with Kubernetes, run beneath command on all the nodes
```
$ containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
```
Set cgroupdriver to systemd on all the nodes,
Edit the file /etc/containerd/config.toml and look for the section [plugins.”io.containerd.grpc.v1.cri”.containerd.runtimes.runc.options] and add SystemdCgroup = true
```
$ sudo vi /etc/containerd/config.toml
```
![systemdCgroup-true-containerd-config-toml][1]
Save and close the file.
Restart and enable containerd service on all the nodes,
```
$ sudo systemctl restart containerd
$ sudo systemctl enable containerd
```
### 5) Enable Kubernetes Apt Repository
Enable Kubernetes apt repository on all the nodes, run
```
$ sudo apt install gnupg gnupg2 curl software-properties-common -y
$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/cgoogle.gpg
$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
```
### 6) Install Kubelet, Kubectl and Kubeadm on all nodes
Run the following apt commands on all the nodes to install Kubernetes cluster components like kubelet, kubectl and Kubeadm.
```
$ sudo apt update
$ sudo apt install kubelet kubeadm kubectl -y
$ sudo apt-mark hold kubelet kubeadm kubectl
```
### 7) Create Kubernetes Cluster with Kubeadm
Now, we are all set to create Kubernetes cluster, run following command only from master node,
```
$ sudo kubeadm init --control-plane-endpoint=k8s-master
```
Output,
![Kubernetes-Control-Plane-Initialization-Debian11][2]
Above output confirms that control plane has been initialized successfully. In the output, we have commands for regular user for interacting with the cluster and also the command to join any worker node to this cluster.
To start interacting with cluster, run following commands on master node,
```
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
```
Run following kubectl command to get nodes and cluster information,
```
$ kubectl get nodes
$ kubectl cluster-info
```
Output of above commands,
![Nodes-Cluster-Info-Kubectl][3]
Join both the worker nodes to the cluster by running Kubeadm join command.
Note: Copy the exact command from the output of kubeadm init command. In my case, following is the command
```
$ sudo kubeadm join k8s-master:6443 --token ta622t.enl212euq7z87mgj \
  --discovery-token-ca-cert-hash sha256:2be58f54458d0e788c96b8841f811069019161f9a3dd8502a38c773e5c6ead17
```
Output from Worker Node 1,
![Worker-Node1-Join-Kunernetes-Cluster][4]
Output from Worker Nod 2 ,
![Worker-Node2-Join-Kubernetes-Cluster][5]
Check the nodes status by running following command from master node,
```
$ kubectl get nodes
NAME          STATUS     ROLES           AGE     VERSION
k8s-master    NotReady   control-plane   23m     v1.25.0
k8s-worker1   NotReady   <none>          9m27s   v1.25.0
k8s-worker2   NotReady   <none>          2m19s   v1.25.0
$
```
To make nodes status ready, we must install POD network addons like Calico or flannel.
### 8) Install Calico Pod Network Addon
On the master node, run beneath command to install calico,
```
$ kubectl apply -f https://projectcalico.docs.tigera.io/manifests/calico.yaml
```
Output,
![Install-calico-pod-network-addon-debian11][6]
Allow Calico ports in OS firewall, run beneath ufw commands on all the nodes,
```
$ sudo ufw allow 179/tcp
$ sudo ufw allow 4789/udp
$ sudo ufw allow 51820/udp
$ sudo ufw allow 51821/udp
$ sudo ufw allow 4789/udp
$ sudo ufw reload
```
Verify the status of Calico pods, run
```
$ kubectl get pods -n kube-system
```
![Calico-Pods-Status-Kuberenetes-Debian11][7]
Perfect, now check nodes status again,
![Nodes-status-after-calico-Installation][8]
Great, output above confirms that master and worker nodes are in ready status. Now, this cluster is ready for the workload.
### 9) Test Kubernetes Cluster Installation
To test Kubernetes cluster installation, lets try to deploy nginx based application via deployment. Run beneath commands,
```
$ kubectl create deployment nginx-app --image=nginx --replicas 2
$ kubectl expose deployment nginx-app --name=nginx-web-svc --type NodePort --port 80 --target-port 80
$ kubectl describe svc nginx-web-svc
```
Output of above commands,
![Nginx-Based-App-Kubernetes-Cluster-Debian11][9]
Try to access the nginx based application using following curl command along with the nodeport 30036.
Note : In the curl command we can use either of worker nodes hostname.
```
$ curl http://k8s-worker1:30036
```
![Access-Nginx-Based-App-via-NodePort-Kubernetes-Debian11][10]
Above commands output confirm that we are able to access our nginx based application.
Thats all from this guide, I hope you have found it informative and able to install Kubernetes cluster on Debian 11 smoothly. Kindly do post your queries and feedback in below comments section.
--------------------------------------------------------------------------------
via: https://www.linuxtechi.com/install-kubernetes-cluster-on-debian/
作者:[Pradeep Kumar][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [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/systemdCgroup-true-containerd-config-toml.png
[2]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Kubernetes-Control-Plane-Initialization-Debian11.png
[3]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Nodes-Cluster-Info-Kubectl.png
[4]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Worker-Node1-Join-Kunernetes-Cluster.png
[5]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Worker-Node2-Join-Kubernetes-Cluster.png
[6]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Install-calico-pod-network-addon-debian11.png
[7]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Calico-Pods-Status-Kuberenetes-Debian11.png
[8]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Nodes-status-after-calico-Installation.png
[9]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Nginx-Based-App-Kubernetes-Cluster-Debian11.png
[10]: https://www.linuxtechi.com/wp-content/uploads/2022/09/Access-Nginx-Based-App-via-NodePort-Kubernetes-Debian11.png

View File

@ -0,0 +1,357 @@
[#]: subject: "Using Python and NetworkManager to control the network"
[#]: via: "https://fedoramagazine.org/using-python-and-networkmanager-to-control-the-network/"
[#]: author: "Beniamino Galvani https://fedoramagazine.org/author/bengal/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Using Python and NetworkManager to control the network
======
![][1]
Photo by [Taylor Vick][2] on [Unsplash][3]
[NetworkManager][4] is the default network management service on Fedora and several other Linux distributions. Its main purpose is to take care of things like setting up interfaces, adding addresses and routes to them and configuring other network related aspects of the system, such as DNS.
There are other tools that offer similar functionality. However one of the advantages of NetworkManager is that it offers a powerful API. Using this API, other applications can inspect, monitor and change the networking state of the system.
This article first introduces the API of NetworkManager and presents how to use it from a Python program. In the second part it shows some practical examples: how to connect to a wireless network or to add an IP address to an interface programmatically via NetworkManager.
### The API
NetworkManager provides a D-Bus API.[D-Bus][5] is a message bus system that allows processes to talk to each other; using D-Bus, a process that wants to offer some services can register on the bus with a well-known name (for example, “org.freedesktop.NetworkManager”) and expose some objects, each identified by a path. Using *d-feet*, a graphical tool to inspect D-Bus objects, we can see the object tree exposed by the NetworkManager service:
![][6]
Each object has properties, methods and signals, grouped into different interfaces. For example, the following is a simplified view of the interfaces for the second device object:
![][7]
We see that there are different interfaces; the *org.freedesktop.NetworkManager.Device* interface contains some properties common to all devices, like the state, the MTU and IP configurations. Since this device is Ethernet, it also has a *org.freedesktop.NetworkManager.Device.Wired* D-Bus interface containing other properties such as the link speed.
The full documentation for the [D-Bus API of NetworkManager is here.][8]
A client can connect to the NetworkManager service using the well-known name and perform operations on the exposed objects. For example, it can invoke methods, access properties or receive notifications via signals. In this way, it can control almost every aspect of network configuration. In fact, all the tools that interact with NetworkManager nmcli, nmtui, GNOME control center, the KDE applet, Cockpit use this API.
### libnm
When developing a program, it can be convenient to automatically instantiate objects from the objects available on D-Bus and keep their properties synchronized; or to be able to have method calls on those objects automatically dispatched to the corresponding D-Bus method. Such objects are usually called *proxies* and are used to hide the complexity of D-Bus communication from the developer.
For this purpose, the NetworkManager project provides a library called **libnm**, written in C and based on GNOMEs GLib and GObject. The library provides C language bindings for functionality provided by NetworkManager. Being a GLib library, it is usable from other languages as well via GObject introspection, as explained below.
The library maps fairly closely to the D-Bus API of NetworkManager. It wraps remote D-Bus objects as native GObjects, and D-Bus signals and properties to GObject signals and properties. Furthermore, it provides helpful accessors and utility functions.
### Overview of libnm objects
The diagram below shows the most important objects in libnm and their relationship:
![][9]
*NMClient* caches all the objects instantiated from D-Bus. The object is typically created at the beginning at the program and provides a way to access other objects.
A *NMDevice* represents a network interface, physical (as Ethernet, Infiniband, Wi-Fi, etc.) or virtual (as a bridge or a IP tunnel). Each device type supported by NetworkManager has a dedicated subclass that implements type-specific properties and methods. For example, a[NMDeviceWifi][10] has properties related to the wireless configuration and to access points found during the scan, while a[NMDeviceVlan][11] has properties describing its VLAN-id and the parent device.
*NMClient* also provides a list of *NMRemoteConnection* objects. *NMRemoteConnection* is one of the two implementations of the *NMConnection* interface. A *connection* (or *connection profile*) contains all the configuration needed to connect to a specific network.
The difference between a *NMRemoteConnection* and a *NMSimpleConnection* is that the former is a proxy for a connection existing on D-Bus while the latter is not. In particular, *NMSimpleConnection* can be instantiated when a new blank connection object is required. This is useful for, example, when adding a new connection to NetworkManager.
The last object in the diagram is *NMActiveConnection*. This represents an active connection to a specific network using settings from a *NMRemoteConnection*.
### GObject introspection
[GObject introspection][12] is a layer that acts as a bridge between a C library using GObject and programming language runtimes such as JavaScript, Python, Perl, Java, Lua, .NET, Scheme, etc.
When the library is built, sources are scanned to generate introspection metadata describing, in a language-agnostic way, all the constants, types, functions, signals, etc. exported by the library. The resulting metadata is used to automatically generate bindings to call into the C library from other languages.
One form of metadata is a GObject Introspection Repository (GIR) XML file. GIRs are mostly used by languages that generate bindings at compile time. The GIR can be translated into a machine-readable format called Typelib that is optimized for fast access and lower memory footprint; for this reason it is mostly used by languages that generate bindings at runtime.
[This page][13] lists all the introspection bindings for other languages. For a Python example we will use [PyGObject][14] which is included in the *python3-gobject* RPM on Fedora.
### A basic example
Lets start with a simple Python program that prints information about the system:
```
import gi
gi.require_version("NM", "1.0")
from gi.repository import GLib, NM
client = NM.Client.new(None)
print("version:", client.get_version())
```
At the beginning we import the introspection module and then the Glib and NM modules. Since there could be multiple versions of the NM module in the system, we make certain to load the right one. Then we create a client object and print the version of NetworkManager.
Next, we want to get a list of devices and print some of their properties:
```
devices = client.get_devices()
print("devices:")
for device in devices:
print(" - name:", device.get_iface());
print(" type:", device.get_type_description())
print(" state:", device.get_state().value_nick)
```
The device state is an enum of type *NMDeviceState* and we use value_nick to get its description. The output is something like:
```
version: 1.41.0
devices:
- name: lo
type: loopback
state: unmanaged
- name: enp1s0
type: ethernet
state: activated
- name: wlp4s0
type: wifi
state: activated
```
In the libnm documentation we see that the[NMDevice][15] object has a get_ip4_config() method which returns a NMIPConfig object and provides access to addresses, routes and other parameters currently set on the device. We can print them with:
```
ip4 = device.get_ip4_config()
if ip4 is not None:
print(" addresses:")
for a in ip4.get_addresses():
print(" - {}/{}".format(a.get_address(),
a.get_prefix()))
print(" routes:")
for r in ip4.get_routes():
print(" - {}/{} via {}".format(r.get_dest(),
r.get_prefix(),
r.get_next_hop()))
```
From this, the output for enp1s0 becomes:
```
- name: enp1s0
type: ethernet
state: activated
addresses:
- 192.168.122.191/24
- 172.26.1.1/16
routes:
- 172.26.0.0/16 via None
- 192.168.122.0/24 via None
- 0.0.0.0/0 via 192.168.122.1
```
### Connecting to a Wi-Fi network
Now that we have mastered the basics, lets try something more advanced. Suppose we are in the range of a wireless network and we want to connect to it.
As mentioned before, a connection profile describes all the settings required to connect to a specific network. Conceptually, well need to perform two different operations: first insert a new connection profile into NetworkManagers configuration and second activate it. Fortunately, the API provides method [nm_client_add_and_activate_connection_async()][16] that does everything in a single step. When calling the method we need to pass at least the following parameters:
* the NMConnection we want to add, containing all the needed properties;
* the device to activate the connection on;
* the callback function to invoke when the method completes asynchronously.
We can construct the connection with:
```
def create_connection():
connection = NM.SimpleConnection.new()
ssid = GLib.Bytes.new("Home".encode("utf-8"))
s_con = NM.SettingConnection.new()
s_con.set_property(NM.SETTING_CONNECTION_ID,
"my-wifi-connection")
s_con.set_property(NM.SETTING_CONNECTION_TYPE,
"802-11-wireless")
s_wifi = NM.SettingWireless.new()
s_wifi.set_property(NM.SETTING_WIRELESS_SSID, ssid)
s_wifi.set_property(NM.SETTING_WIRELESS_MODE,
"infrastructure")
s_wsec = NM.SettingWirelessSecurity.new()
s_wsec.set_property(NM.SETTING_WIRELESS_SECURITY_KEY_MGMT,
"wpa-psk")
s_wsec.set_property(NM.SETTING_WIRELESS_SECURITY_PSK,
"z!q9at#0b1")
s_ip4 = NM.SettingIP4Config.new()
s_ip4.set_property(NM.SETTING_IP_CONFIG_METHOD, "auto")
s_ip6 = NM.SettingIP6Config.new()
s_ip6.set_property(NM.SETTING_IP_CONFIG_METHOD, "auto")
connection.add_setting(s_con)
connection.add_setting(s_wifi)
connection.add_setting(s_wsec)
connection.add_setting(s_ip4)
connection.add_setting(s_ip6)
return connection
```
The function creates a new *NMSimpleConnection* and sets all the needed properties. All the properties are grouped into *settings*. In particular, the *NMSettingConnection* setting contains general properties such as the profile name and its type. *NMSettingWireless* indicates the wireless network name (SSID) and that we want to operate in “infrastructure” mode, that is, as a wireless client. The wireless security setting specifies the authentication mechanism and a password. We set both IPv4 and IPv6 to “auto” so that the interface gets addresses via DHCP and IPv6 autoconfiguration.
All the properties supported by NetworkManager are described in the *nm-settings* man page and in the “Connection and Setting API Reference”[section][17] of the libnm documentation.
To find a suitable interface, we loop through all devices on the system and return the first Wi-Fi device.
```
def find_wifi_device(client):
for device in client.get_devices():
if device.get_device_type() == NM.DeviceType.WIFI:
return device
return None
```
What is missing now is a callback function, but its easier if we look at it later. We can proceed invoking the add_and_activate_connection_async() method:
```
import gi
gi.require_version("NM", "1.0")
from gi.repository import GLib, NM
# other functions here...
main_loop = GLib.MainLoop()
client = NM.Client.new(None)
connection = create_connection()
device = find_wifi_device(client)
client.add_and_activate_connection_async(
connection, device, None, None, add_and_activate_cb, None
)
main_loop.run()
```
To support multiple asynchronous operations without blocking execution of the whole program, libnm uses an[event loop][18] mechanism. For an introduction to event loops in GLib see [this tutorial][19]. The call to main_loop.run() waits until there are events (such as the callback for our method invocation, or any update from D-Bus). Event processing continues until the main loop is explicitly terminated. This happens in the callback:
```
def add_and_activate_cb(client, result, data):
try:
ac = client.add_and_activate_connection_finish(result)
print("ActiveConnection {}".format(ac.get_path()))
print("State {}".format(ac.get_state().value_nick))
except Exception as e:
print("Error:", e)
main_loop.quit()
```
Here, we use client.add_and_activate_connection_finish() to get the result for the asynchronous method. The result is a *NMActiveConnection* object and we print its D-Bus path and state.
Note that the callback is invoked as soon as the active connection is created. It may still be attempting to connect. In other words, when the callback runs we dont have a guarantee that the activation completed successfully. If we want to ensure that, we would need to monitor the active connection state until it changes to *activated* (or to *deactivated* in case of failure). In this example, we just print that the activation started, or why it failed, and then we quit the main loop; after that, the main_loop.run() call will end and our program will terminate.
### Adding an address to a device
Once there is a connection active on a device, we might decide that we want to configure an additional IP address on it.
There are different ways to do that. One way would be to modify the profile and activate it again similar to what we saw in the previous example. Another way is by changing the runtime configuration of the device without updating the profile on disk.
To do that, we use the[reapply()][20] method. It requires at least the following parameters:
* the NMDevice on which to apply the new configuration;
* the NMConnection containing the configuration.
Since we only want to change the IP address and leave everything else unchanged, we first need to retrieve the current configuration of the device (also called the “*applied connection”*). Then we update it with the static address and reapply it to the device.
The applied connection, not surprisingly, can be queried with method[get_applied_connection()][21] of the NMDevice. Note that the method also returns a version id that can be useful during the reapply to avoid race conditions with other clients. For simplicity we are not going to use it.
In this example we suppose that we already know the name of the device we want to update:
```
import gi
import socket
gi.require_version("NM", "1.0")
from gi.repository import GLib, NM
# other functions here...
main_loop = GLib.MainLoop()
client = NM.Client.new(None)
device = client.get_device_by_iface("enp1s0")
device.get_applied_connection_async(0, None, get_applied_cb, None)
main_loop.run()
```
The callback function retrieves the applied connection from the result, changes the IPv4 configuration and reapplies it:
```
def get_applied_cb(device, result, data):
(connection, v) = device.get_applied_connection_finish(result)
s_ip4 = connection.get_setting_ip4_config()
s_ip4.add_address(NM.IPAddress.new(socket.AF_INET,
"172.25.12.1",
24))
device.reapply_async(connection, 0, 0, None, reapply_cb, None)
```
Omitting exception handling for brevity, the reapply callback is as simple as:
```
def reapply_cb(device, result, data):
device.reapply_finish(result)
main_loop.quit()
```
When the program quits, we will see the new address configured on the interface.
### Conclusion
This article introduced the D-Bus and libnm API of NetworkManager and presented some practical examples of its usage. Hopefully it will be useful when you need to develop your next project that involves networking!
Besides the examples presented here, the NetworkManager git tree includes [many others][22] for different programming languages. To stay up-to-date with the news from NetworkManager world, follow the [blog][23].
### References
* [NetworkManager documentation][24]
* [PyGObject documentation][25]
* [Notes on GMainLoop and GMainContext][26]
* [Notes on NetworkManager D-Bus API][27]
--------------------------------------------------------------------------------
via: https://fedoramagazine.org/using-python-and-networkmanager-to-control-the-network/
作者:[Beniamino Galvani][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://fedoramagazine.org/author/bengal/
[b]: https://github.com/lkxed
[1]: https://fedoramagazine.org/wp-content/uploads/2022/08/python_and_networkmanager-816x345.jpg
[2]: https://unsplash.com/es/@tvick?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
[3]: https://unsplash.com/s/photos/computer-network?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
[4]: https://networkmanager.dev/
[5]: https://www.freedesktop.org/wiki/Software/dbus/
[6]: https://fedoramagazine.org/wp-content/uploads/2022/08/d-feet-objects.png
[7]: https://fedoramagazine.org/wp-content/uploads/2022/08/dev.png
[8]: https://networkmanager.dev/docs/api/latest/
[9]: https://fedoramagazine.org/wp-content/uploads/2022/08/libnm.png
[10]: https://networkmanager.dev/docs/libnm/latest/NMDeviceWifi.html
[11]: https://networkmanager.dev/docs/libnm/latest/NMDeviceVlan.html
[12]: https://gi.readthedocs.io/en/latest/
[13]: https://gi.readthedocs.io/en/latest/users.html
[14]: https://pygobject.readthedocs.io/en/latest/
[15]: https://networkmanager.dev/docs/libnm/latest/NMDevice.html
[16]: https://networkmanager.dev/docs/libnm/latest/NMClient.html#nm-client-add-and-activate-connection-async
[17]: https://networkmanager.dev/docs/libnm/latest/ch03.html
[18]: https://en.wikipedia.org/wiki/Event_loop
[19]: https://developer.gnome.org/documentation/tutorials/main-contexts.html
[20]: https://networkmanager.dev/docs/libnm/latest/NMDevice.html#nm-device-reapply-async
[21]: https://networkmanager.dev/docs/libnm/latest/NMDevice.html#nm-device-get-applied-connection-async
[22]: https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/tree/1.40.0/examples
[23]: https://networkmanager.dev/blog/
[24]: https://networkmanager.dev/docs/developers/
[25]: https://pygobject.readthedocs.io/en/latest/
[26]: https://developer.gnome.org/documentation/tutorials/main-contexts.html
[27]: https://networkmanager.dev/blog/notes-on-dbus/

View File

@ -0,0 +1,71 @@
[#]: subject: "What is OpenRAN?"
[#]: via: "https://opensource.com/article/22/9/open-radio-access-networks"
[#]: author: "Stephan Avenwedde https://opensource.com/users/hansic99"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
What is OpenRAN?
======
Open Radio Access Network defines open standards between the various components of radio access networks.
![4 open music players compared: VLC, QMMP, Clementine, and Amarok][1]
Image by: Opensource.com
If you own and use a smartphone capable of connecting to arbitrary computers all over the world, then you are a user of Radio Access Networks (RAN). A RAN is provided by your cellular provider, and it handles wireless connections between your smartphone and your communication provider.
While your smartphone may be running an open source operating system (Android) and the server you try to access is probably running Linux, there's a lot of proprietary technology in between to make the connection happen. While you may have a basic understanding of how networking works locally, this knowledge stops when you plug a SIM card into your smartphone in order to make a connection with a cell tower possible. In fact, the majority of software and hardware components in and around a cell tower are still closed source, which of course has some drawbacks. This is where OpenRAN comes into play.
The OpenRAN initiative (shorthand for Open Radio Access Network) was started by the [O-Ran Alliance][2], a worldwide community of mobile operators, vendors, and research and academic institutions. The initiative aims to define open standards between the various components of radio access networks. Interoperability between components of different manufacturers was not possible. Until now.
### Radio Access Network
But what exactly is a RAN? In a nutshell, a RAN establishes a wireless connection to devices (smartphones, for example) and connects them to the core network of the communication company. In the context of a RAN, devices are denoted as User Equipment (UE).
The tasks of a RAN can be summarized as follows:
* Authentication of UE
* The handover of UE to another RAN (if the UE is moving)
* Forwarding the data between the UE and the core network
* Provision of the data for accounting functions (billing of services or the transmitted data)
* Control of access to the various services
### OpenRAN
RAN usually consists of proprietary components. OpenRAN defines functional units and interfaces between them:
* Radio Unit (RU): The RU is connected to the antenna and sends, receives, amplifies, and digitizes radio signals.
* Distributed Unit (DU): Handles the [PHY][3], [MAC][4] and [RLC][5] layer.
* Centralised Unit (CU): Handles the [RRC][6] and [PDCP][7] layer.
* RAN Intelligent Controller (RIC): Control and optimization of RAN elements and resources.
Units are connected to each other by standardized, open interfaces. Furthermore, if the units can be virtualized and deployed in the cloud or on an [edge device][8], then it's called a **vRAN** (virtual Radio Access Network). The basic principle of vRAN is to decouple the hardware from the software by using a software-based virtualization layer. Using a vRAN improves flexibility in terms of scalability and the underlying hardware.
### OpenRAN for everyone
By the definition of functional units and the interfaces between them, OpenRAN enables interoperability of components from different manufacturers. This reduces the dependency for cellular providers of specific vendors and makes communication infrastructure more flexible and resilient. As a side-effect, using clearly defined functional units and interfaces drives innovation and competition. With vRAN, the use of standard hardware is possible. With all these advantages, OpenRAN is a prime example of how open source benefits everyone.
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/open-radio-access-networks
作者:[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/osdc-lead-stereo-radio-music.png
[2]: https://www.o-ran.org/
[3]: https://en.wikipedia.org/wiki/Physical_layer#PHY
[4]: https://en.wikipedia.org/wiki/Medium_access_control
[5]: https://en.wikipedia.org/wiki/Radio_Link_Control
[6]: https://en.wikipedia.org/wiki/Radio_Resource_Control
[7]: https://en.wikipedia.org/wiki/Packet_Data_Convergence_Protocol
[8]: https://www.redhat.com/en/topics/edge-computing/what-is-edge-computing?intcmp=7013a000002qLH8AAM

View File

@ -1,37 +0,0 @@
[#]: subject: "A Project For An Open Source 3D-Printed VR Headgear From Europe"
[#]: via: "https://www.opensourceforu.com/2022/09/a-project-for-an-open-source-3d-printed-vr-headgear-from-europe/"
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
[#]: collector: "lkxed"
[#]: translator: "zjsoftceo"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
来自欧洲的一个开源3D打印VR头盔项目
======
*一个6GHz WiFi 6E无线开源虚拟现实耳机已由三家欧洲企业创建。*
在索姆尼姆VR ONE头盔上捷克3D打印专家普鲁萨研究公司正在与英国的索姆空间和模拟器创造者Vrgineers合作。这旨在通过尽可能开放来改变虚拟现实市场中受限的供应并且可以连接或者独立。
由于Android 11操作系统是一个开源的操作系统其源代码是公开的因此它将在不受限制的商业许可下可以出售。高通骁龙XR2 CPU将成为其中央处理单元它将支持微型SD存储卡并具有8GB的LPDDR5 RAM和512GB的UFS闪存。
它将采用新的WiFi 6E高带宽无线协议而不是目前拥挤的5GHz和2.4GHz WiFi频率以实现更高的带宽和低延迟连接。它将包括两个3.2英寸2880RGB * 2880LCD屏幕具有120度水平视野FoV和100度垂直FoV。
它将具有两个用于外部小工具的USB-C 10 Gbit/s 链路和一个USB-C USB2.0 电池组USB3.2 Gen2。Somnium Space将在线销售电子产品和独特镜头使用户能够与布拉格的VRgineers合作3D打印自己的头显,还将提供完全构造耳机。
该企业于2012年在布拉格成立已经拥有700多名员工。开源的Prusa i3设计是世界上使用最广泛的开源3D打印机每个月从布拉格直接运送到160多个国家超过10000台原始的Prusa 3D打印机。
合成训练环境STE是由捷克共和国的模拟器开发商Vrgineers向企业和政府客户提供。它创造了被称为XTAL的专业8K头盔该头盔被NASA空中客车防务与航天和BAE系统公司使用目前在布拉格布尔诺和拉斯维加斯拥有一支由50名专家组成的国际团队。
基于伦敦的一个基于区块链的开放、社交和永久虚拟现实平台被称为Somnium Space。由于其独特的分散式NFT经济用户可以拥有交易和交换数字商品而无需获得授权。它已经与Lynx合作开发Lynx R-1高通公司和Ultraleap一个独立的增强现实AR耳机设计。
--------------------------------------------------------------------------------
via: https://www.opensourceforu.com/2022/09/a-project-for-an-open-source-3d-printed-vr-headgear-from-europe/
作者:[Laveesh Kocher][a]
选题:[lkxed][b]
译者:[zjoftceo](https://github.com/zjsoftceo)
校对:[校对者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