2020年6月

值此周年纪念之际,来通过这些深度文章和实践项目了解下 Kubernetes。

在云原生的成长期,开发者们发现在一个小型的、原子化的、精简的 Linux 镜像里编写应用程序很方便,这些镜像与它们所运行的服务器共享资源。从技术上讲,这些基于内核命名空间的小环境定义被称为容器。随着容器的激增,系统管理员们很快意识到,开发一个不仅能帮助他们管理容器,还能帮助他们管理下面的虚拟化基础设施的工具变得至关重要。于是,Kubernetes 应运而生。

Kubernetes 是一个可扩展开源平台,用于管理容器。它可以帮助管理员和开发者们围绕容器管理工作负载、服务和进程。它促进了声明式配置,更容易实现自动化。在它相对较短的生命周期中,它已经催生了一个迅速成长的生态系统,其中包括来自大量公司和项目的服务、支持和工具。

如果你想对这项重要的云技术有更多的了解,这里有一些能帮忙你更深入学习的文章。还有 5 个项目可以帮你把学到的东西付诸实践。

遏制容器乱象

2016 年,我们发布了《使用 Kubernetes 遏制容器乱象》,这是一篇由 Terry Ryan 写的关于 Kubernetes 的介绍性文章,讲述了 Kubernetes 如何帮助管理员和架构师们努力应对容器。如果你想找一篇从底层介绍容器是做什么的以及 Kubernetes 是如何实现容器管理的,那么你应该先读下本文。本文适合零基础的读者,解释了所有重要的概念,因此你能迅速了解相关技术。

如果想进阶了解内核层面发生的一些神奇的事情,请阅读 Jessica Cherry 对 Kubernetes 命名空间的解释。

延伸阅读:

Kubernetes:为什么它很重要?

Kubernetes 提供了 基础设施即服务 Infrastructure-as-a-Service (IaaS)解决方案(类似 OpenStack)的便利和一个完整的 平台即服务 Platform as a Service (PaaS)。它为你提供了管理基础设施的抽象能力,以及在裸金属基础层面进行故障排除所需的工具。如果你执着于使用单一的裸金属服务器,你可能需要阅读下 Tim Potter 写的《你为什么需要 Kubernetes》。他的文章对比了 IaaS 和 PaaS,解释了为什么 Kubernetes 如此广泛地被使用。你可能并不是一定需要 Kubernetes 或容器,但是重要的是知道什么情况下需要。

延伸阅读:

在树莓派上运行 Kubernetes

熟悉 Kubernetes 的最好方法莫过于自己运行它。不幸的是,不是每个人都有一个云服务基层设施(或者有足够的钱来租用一个)可供其支配。而幸运的是,Chris Collins 提供了《在树莓派上运行 Kubernetes》的教程。结合他的另外几篇关于《Cloud-init》和《Cloud-init 服务》的教程(也是在树莓派上运行),你可以搭建任何你想要的家庭实验室,这样你就可以学习如何管理属于自己的开放混合云。

Kubernetes 命令

一旦你运行起 Kubernetes 后,可以看看 Jessica Cherry 的文章和附带的备忘清单,这个清单列出了所有的基本的 Kubernetes 命令。在她的文章中,她解释了 kubectl 命令的语法,简单讲述了每个命令和子命令是用来做什么的。

有趣的 Kubernetes 项目

没有什么比拥有技术却不知道该怎么用它更令人沮丧的了。例如,在你的办公桌上有一个树莓派是一回事,但是决定它的 CPU 应该用来做什么工作却完全是另一回事。我们发布了很多教程,来指导你完成你的 Kubernetes 之路的探索:

最重要的,花点时间来熟悉容器和 Kubernetes。不论你先把容器化的应用放到服务器、云上还是桌面,它们都是能帮助你理解的重要的范例,因为它们是一个强大的构造,可以让 Linux 的应用变得更好、更健壮、鲁棒性更好、更简单。一定要投入精力去学习它们,你不会后悔的。


via: https://opensource.com/article/20/6/kubernetes-anniversary

作者:Seth Kenlon 选题:lujun9972 译者:lxbwolf 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我所参与的开源项目遵循的是一种这样的理念,我把它描述为 “先讨论,再编码”。我认为一般来说这是开发软件的好方法,我想花一点时间来谈谈这种方法的好处。

避免伤害感情

先讨论你想做的改变最重要的原因是避免伤害感情。我经常看到一个贡献者闭门造车地提交了一个 PR,却发现他的努力工作被拒绝了。这可能有一堆原因:PR 太大了,PR 没有遵循本地风格,PR 修复了一个对项目不重要的问题或者最近间接修复了的问题,等等。

这些问题的根本原因都是缺乏沟通。“先讨论,再编码” 理念的目标不是阻碍你或给你带来挫折,而是确保一个功能第一次就能正确落地,而不至于产生大量的维护债务。无论是改动的作者,还是审查者,当一个改动突然出现时,并暗示说 “好吧,我已经做完了,你要做的就是合并它,对吧?”,先讨论可以让他们不必背负伤害感情的情绪负担。

讨论应该如何进行?

每一个新功能或错误修复都应该在工作开始前与项目的维护者讨论。私下试验是可以的,但不要在没有讨论之前就发送修改。

对于简单的改动,“讨论” 的定义可以只是 GitHub 议题中的一个设计草图。如果你的 PR 修复了一个 bug,你应该链接到它修复的 bug。如果没有,你应该先提出一个 bug,等待维护者确认后再发送 PR。这可能看起来有点落后 —— 谁不希望一个 bug 被修复呢 —— 但考虑到这个 bug 可能是对软件工作方式的误解,也可能是一个更大问题的症状,这需要进一步调查。

对于比较复杂的改动,尤其是功能请求,我建议在发送代码之前,先分发一份设计文档并达成一致。这不一定是一个完整的文档,发一个议题,带个草图可能就足够了,但关键是在用代码搞定之前,先用文字达成一致。

在任何情况下,你都不应该继续发送你的代码,直到维护者同意你的方法是他们所满意的。拉取请求是日常生活,而不仅仅是为了赶着过节。

代码审查,而不是由委员会设计

代码审查不是争论设计的地方。这有两个原因。首先,大多数代码审查工具都不适合长长的评论会话,GitHub 的 PR 界面在这方面非常糟糕,Gerrit 比较好,但很少有管理员团队会维护 Gerrit 实例。更重要的是,在代码审查阶段就出现了分歧,说明大家对如何实现这个变化并没有达成一致。


讨论你想写的代码,然后再写你所讨论的代码。请不要反其道而行之。


via: https://dave.cheney.net/2019/02/18/talk-then-code

作者:Dave Cheney 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Facebook 的 TransCoder AI 可在 Java、Python 和 C++ 之间转换代码

该系统可以将代码从一种高级编程语言(如 C++、Java 和 Python)转换为另一种。它采用了一种无监督的学习方法,从而在没有标签的情况下在数据集中找到未检测到的模式,比基于规则数据集的模型要高效得多。无论使用哪种编程语言,神经编译器都可以将代表相同指令的代码段映射到相同代码段。这是 AI 从以下位置转换代码时获得的结果的准确性水平:C++ to Java: 74.8%;C++ to Python: 67.2%;Java to C++: 91.6%;Java to Python: 68.7%;Python to Java: 56.1%;Python to C++: 57.8%。

来源:开源中国

硬核老王点评:离编程由 AI 完成越来越近了。程序员们失业的时间可能不远了——尤其是初级的程序员。

DebConf20 将于 8 月 23 - 29 在线上举行

今年的会议原定在海法举行,所以现在整个日程表被推后一年。换句话说,虽然 2020 年的会议将在线上举行,但 2021 年的会议地点将在海法举行,随后是 2022 年的科索沃和 2023 年的印度高知。

来源: softpedia

硬核老王点评:我觉得,即便全球疫情会减缓,各类技术大会或许也应该认真考虑将来的大会都在线上举行的问题。

Linus Torvalds 宣布庞大的 Linux 内核 5.8

虽然 5.8 并没有什么特别的亮点,但这是一个庞大的版本,主要是因为更新中发生了大量的变化,包括一些有关驱动程序的变化。Torvalds 表示,这是 4.9 以来最大的版本之一。5.8 的第一个候选版本(rc1)已经发布,有超过 14000 个文件被修改,14000 个非合并提交,以及大约 80 万行新内容。“从 rc1 开始,它就和 4.9 不相上下了,在提交数量上,4.9 是我们最大的版本。是的,5.8-rc1 比 4.9-rc1 少了几个提交,但在很多方面,它是一个更全面的版本,”Torvalds 解释说,“4.9 内核被人为地放大了,部分原因是该版本中合并了 greybus 子系统,但也因为 4.8 有一个较长的 rc 系列,因此有更多的积压开发。在 5.8 中,我们并没有发现这类使版本变大的迹象,只是单纯的有很多开发成果在里面。”

来源:softpedia

硬核老王点评:Linux 内核已经是最复杂、最庞大的软件工程之一了,不知道巨大化之后的未来会是怎么样的,怀念早些年的小内核。

AppImage 在自足的环境中分发应用, 它适用于任何 Linux 发行版。

管理 Linux 机器(尤其是远程机器)的一个重要分就是管理和安装软件。当本地应用程序出现问题时,或者文件系统上的某些文件损坏需要修复时,你通常会希望推送更新,而不必走很多路坐在物理屏幕前。正如我在 Pluralsight 课程《Linux 系统维护和故障排除》中所解释的那样,许多问题当然可以通过 Bash 脚本解决,但是仍有很多情况下,除了老式的二进制文件外,没有其他选择。

想象一下,你的某些远程系统需要安装新的应用程序,这样使用这些计算机的团队成员就能够执行某些业务。能够利用 Debian 或 RPM 之类的主要 Linux 仓库系统的集成和自动化,可以使你的管理任务变得更加容易。

正如 Linus Torvalds 永不厌倦地提醒我们的那样,太多的 Linux 软件管理系统的问题是 Linux 软件管理系统太多了。多年来,应用开发甚至是 Linux 的采用都变得愈加复杂起来,因为你为了提供你的软件(比如,放到 Debian 仓库)而投入的所有时间和工作,对于你想让它们进入 RPM 系统并没有什么帮助,对于 SUSE 的 Zypper 管理器也一样,没有什么帮助。

解决软件孤岛问题的一种有前途的方案是分发具有自足环境的应用,它们可以在任何 Linux 发行版上运行。在这个年轻且不断发展的领域中,选择之一是 AppImage

使用 AppImage

我全面投入到了 AppImage。就像我提到的其他软件包管理系统一样,如果你需要的话,有很多复杂的功能可以使用。但是,从本质上讲,AppImage 非常简单。AppImage 不像大多数其他包管理器一样通过仓库工作,它使用单个、独立的文件,可以直接发送或通过网站共享。

下面是个展示它的美妙之处的例子。当我在用 AppImage 时,我在一个技术论坛上看到了一个很老的讨论,它让我找到了一个同样久远且废弃的 GitHub 项目以及相关的 YAML 和配方文件。它们旨在自动构建准备生成 AppImage 包所需的相当复杂的基础架构。尽管该基础架构全部是在 5 年前的 Ubuntu 版本上构建的,但是当我将它们放在一起并运行 appimagetool 命令时,它创建了一个 AppImage 文件,它可在我当前的桌面上无缝运行。我不认为有很多有五年历史的 GitHub 复杂项目可以使用其他技术运行,而无需认真重做。

但是这里我我不会介绍这个案例。相反,我将用一个简单的 Hello World 程序向你展示它是如何工作的。首先,请确保本地已安装 AppStream 包。

对于基于 Debian 的系统,运行:

$ sudo apt install appstream

对于 RPM 系统,请使用:

$ sudo dnf install appstream

克隆这篇文章中提及的 Git 仓库,我会基于它示例:

$ git clone <https://github.com/boolean-world/appimage-resources>
$ cd appimage-resources
$ ls hello-world-appimage

接下来,使用 cd 进入 Git 新创建的目录。这里有两个目录。请使用 hello-world-appimage。另一个是更复杂的项目,你也应该考虑尝试一下。

Linux GUI 系统会读取 helloworld.desktop 文件来知道如何呈现桌面图标。事实证明,当前的这个文件会在以后给你带来点麻烦,因此请进行一些小修改:添加 Categories= 这行并为其赋予值 GNOME。不要忘记最后的分号:

$ nano hello-world-appimage/helloworld.desktop
        add Categories=GNOME;

AppImage GitHub 项目下载 appimagetool 预编译的二进制文件。访问 GitHub 的原因之一:那里有很多出色的文档和资源。下载二进制文件后,使文件可执行,并将 hello-world-appimage 目录传给它。但是首先,你需要告诉它你想要的架构。由于某些原因,一个名字以 x86\_64 结尾的工具都不能自行确定是否该使用 x86\_64 来构建应用程序(我不知道这是怎么回事)。

$ wget <https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage>
$ chmod +x appimagetool-x86_64.AppImage
$ ARCH=x86_64 ./appimagetool-x86_64.AppImage hello-world-appimage

如果你没有看到任何错误消息,那么表示完成了,请运行:

$ ls
$ ./hello-world-appimage-x86_64.AppImage

总结

AppImage 是软件包管理的非常有效的选择。当你探索它时,我想你会发现它是 Linux 发行版默认软件包系统的很好的替代品。


via: https://opensource.com/article/20/6/appimages

作者:David Clinton 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

推出于 2011 年的 GNOME 3,其 GNOME Shell 迎来了社区的赞扬的同时,也招致了一些人的反对。很多用户和开发者都很喜欢原来的 GNOME 界面,以至于有几个小组复刻了它,其中的一个小组 —— Linux Mint 团队创建了 Cinnamon 桌面环境)。

Cinnamon 桌面成为了 Linux Mint 的标志型产品。多年来,Cinnamon 一直是 Linux Mint 的代名词。在过去的几年里,随着 Cinnamon 的普及,这种情况略有改变。现在其他发行版也开始提供 Cinnamon 桌面环境,Manjaro 就是这样一个例子。

几个月前,我们向大家介绍了一个新 Ubuntu 变体,它提供了开箱即用的 Cinnamon 桌面体验,今天就让我们来深入了解一下 Ubuntu Cinnamon Remix

为什么是 Ubuntu Cinnamon Remix 而不是 Linux Mint?

的确,Linux Mint 是基于 Ubuntu 的,很多 Linux Mint 的用户都会有这样的疑问:既然 Linux Mint 已经如此成熟,而且用户体验也大致相同,那么换成 Ubuntu 有什么意义吗?

Ubuntu Cinnamon Remix 与 Linux Mint 有很多小的区别,但有一个关键的区别是 Linux 爱好者不能忽视的。

Linux Mint 是基于 “LTS”(长期支持)版本的 Ubuntu,这意味着它一直落后于 Canonical 的 6 个月的更新节奏。Ubuntu Cinnamon Remix 则可以得益于较新的内核以及其他 6 个月周期内的功能升级和较新的软件。

另一个关键的区别是,Ubuntu Cinnamon Remix 将 “继承” Snap 支持,而 Linux Mint 则拥抱 FlatPak。Ubuntu Cinnamon Remix 使用 Ubuntu 软件中心而不是 Mint 软件管理器。

我是 Cinnamon 的忠实粉丝,所以我选择了评测这款 Ubuntu 和 Cinnamon 的混合版,在这里我分享一下我的体验。

体验 Ubuntu Cinnamon Remix

只要有机会,我总会提到 Calamares 安装程序有多快,感谢 Ubuntu Cinnamon Remix 团队如此选择。

新安装的 Ubuntu Cinnamon Remix 会消耗大约 750 MB 的内存。这与 Linux Mint Cinnamon 非常相似。

美丽的 Kimmo 主题和橙色调的 Ubuntu 壁纸也给我留下了深刻的印象,看来这是一个非常细致的努力的结果。

足够让你开始的工具

和其他 Ubuntu 发行版一样,Ubuntu Cinnamon Remix 也包含了一些重要的生产力工具,下面是其中一些:

  • 火狐浏览器
  • Thunderbird - 电子邮件客户端
  • LibreOffice套件
  • Celluloid - 多媒体播放器
  • GIMP - 图像处理软件
  • Synaptic 软件包管理器
  • Gnome 软件中心
  • Gparted - 分区管理器

使用 Ubuntu Cinnamon Remix 作为我的主要平台已经有几天了,它满足了我的高期望。Ubuntu 稳定如磐石,速度非常快,在日常工作中我没有遇到任何问题。

给 Linux Mint 爱好者的 Ubuntu

你是否热衷于 Ubuntu Cinnamon,却习惯了 Linux Mint 主题?点击下面的内容,看看如何获得一个完整的 Linux Mint 主题包,以及如何配置它来保持 Ubuntu 的传统。

给 Ubuntu Cinnamon Remix 以真正的 Mint 感受:

首先你必须下载并解压以下内容,通过终端很容易完成。

获取 Linux Mint-X 图标包:

wget http://packages.linuxmint.com/pool/main/m/mint-x-icons/mint-x-icons_1.5.5_all.deb

获取 Linux Mint-Y 图标包:

wget http://packages.linuxmint.com/pool/main/m/mint-y-icons/mint-y-icons_1.3.9_all.deb

获取 Linux Mint 主题:

wget http://packages.linuxmint.com/pool/main/m/mint-themes/mint-themes_1.8.4_all.deb

安装下载的软件包:

sudo dpkg -i ./mint-x-icons_1.5.5_all.deb ./mint-y-icons_1.3.9_all.deb ./mint-themes_1.8.4_all.deb

完成后,点击左下角的菜单按钮,输入 “themes”。你也可以在系统设置中找到“主题”功能。

打开后更换 kimmo 图标和主题,如下图所示。Linux Mint 默认的“绿色”是普通的 Mint-Y,而橙色是 Ubuntu 的最佳选择。

为 Cinnamon 迷们准备的美食

让我们承认吧,审美很重要。Cinnamon 拥有简洁优雅的外观、易于阅读的字体和漂亮的色彩对比主题。Cinnamon 提供了一个整洁的桌面,只需进入系统设置下的桌面菜单,即可轻松配置桌面图标。你也可以选择桌面图标只显示在主显示器上、只显示在副显示器上,或者同时显示在两个显示器上。这也适用于超过两台显示器的设置。

桌面组件和小程序是一种小型的、单一用途的应用程序,可以分别添加到你的桌面或面板上。在众多的应用程序中,最常用的是 CPU 或资源监控器、天气小程序、便签和日历。

Cinnamon 控制中心集中提供许多桌面配置选项。通过访问 “主题” 部分,你可以选择桌面基本方案和图标、窗口边框、鼠标指针和控件外观。字体对桌面的整体外观有很大的影响,而 Cinnamon 让改变字体比以往任何时候都要容易。

Cinnamon 控制中心配置对新用户来说也足够简单,相比之下,KDE Plasma 会因为大量的配置选项而导致新用户感到困惑。

Cinnamon 面板包含用于启动程序的菜单、基本的系统托盘和应用程序选择器。面板的配置很简单,添加新的程序启动器只需在主菜单中找到你要添加的程序,右击图标,选择 “添加到面板” 即可。你也可以将启动程序图标添加到桌面,以及 Cinnamon 的 “收藏夹” 启动栏中。如果你不喜欢面板上图标的顺序,只需在面板栏上点击右键,进入面板的 “编辑” 模式,重新排列图标即可。

结论

无论你是决定给你的桌面 “加点料”,还是考虑从 Windows 迁移到 Linux,Cinnamon 社区都为你制作了大量的香料。

传统而又优雅,可定制而又简单,Ubuntu Cinnamon Remix 是一个有趣的项目,前途无量,对于喜欢 Ubuntu 的 Cinnamon 桌面爱好者来说,这可能是一个不二之选。

你觉得 Ubuntu Cinnamon Remix 怎么样?你已经使用过它了吗?


via: https://itsfoss.com/ubuntu-cinnamon-remix-review/

作者:Dimitrios Savvopoulos 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

微软预计两个月内发布首款 Android 手机

2019 年底微软公布了其首款 Android 智能手机 Surface Duo 的消息。新的信息显示,该公司可能会在未来两个月内的某个时间点内打包发售该设备。Surface Duo 的主要亮点是双屏形态,当时公布的是采用高通骁龙 855 处理器。目前更具体的配置和价格尚未公布。

来源:softpedia

硬核老王点评:连微软都要推出安卓手机了,不知道 Windows 怎么想。

微软公布 Windows Terminal 2.0 路线图

计划中的主要功能包括:设置界面;命令面板;选项卡撕除;可点击的链接;滚动锁定;无限回滚;窗格管理;会话还原;Quake 模式等。根据微软提供的时间表,Windows Terminal 1.1 预计于 7 月 31 日发布。每四周将交付一个新的版本。明年四月底,2.0 的发布候选版本将会推出。最终版本的发布暂定于 2021 年 5 月 31 日。

来源:开源中国

硬核老王点评:虽然从特性上看,Windows Terminal 还不能说是最佳,但是感觉来势汹汹啊。巨头就是巨头,一旦“疯”起来,连自己都害怕。(PS., 为什么微软新闻这么多……)

JetBrains 2020 年开发者生态报告

该报告基于 34,000 多个开发人员的反馈,其中,来自中国、美国和印度则分别占比 20%、19% 和 17%。主要亮点:就受欢迎程度而言,Java 高居第一位,但在使用人数上,JavaScript 则名列榜首。Go、Kotlin 和 Python 是开发人员计划采用或迁移到的前三种语言。开发人员在业余时间追求的主要爱好是编程。使用最多的操作系统是 Windows(60%)、Linux(50%)和 macOS(44%)。69% 的正在做后端开发,57% 的为前端开发。大多数开发人员没有宠物,但爱猫爱狗的人占了均匀比例。

来源:开源中国

硬核老王点评:调查报告中槽点比较多啊,请大家开喷~