红宝石(Ruby)史话
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/21/113443k7kzkkmmi17o9hmb.jpg">Media</a>尽管我很难说清楚为什么,但 Ruby 一直是我最喜爱的一门编程语言。如果用音乐来类比的话,Python 给我的感觉像是朋克摇滚punk rock,简单、直接,但略显单调,而 Ruby 则像是爵士乐,从根本上赋予了程序员表达自我的自由,虽然这可能会让代码变复杂,编写出来的程序对其他人来说不直观。Ruby 社区一直将灵活表达freedom of expression视为其核心价值。可我不认同这对于 Ruby 的开发和普及是最重要的。创建一门编程语言也许是为了更高的性能,也许是为了在抽象上节省更多的时间,可 Ruby 就有趣在它并不关心这些,从它诞生之初,它的目标就是让程序员更快乐。松本·行弘松本·行弘Yukihiro Matsumoto,亦称为 “Matz”,于 1990 年毕业于筑波大学。筑波是东京东北方向上的一个小城市,是科学研究与技术开发的中心之一。筑波大学以其 STEM 计划广为流传。松本·行弘在筑波大学的信息科学专业学习过,且专攻编程语言。他也在 Ikuo Nakata 的编程语言实验室工作过。(LCTT 译注:STEM 是科学Science、技术Technology、工程Engineering、数学Mathematics四门学科英文首字母的缩写。)松本从 1993 年开始制作 Ruby,那时他才刚毕业几年。他制作 Ruby 的起因是觉得那时的脚本语言缺乏一些特性。他在使用 Perl 的时候觉得这门语言过于“玩具”,此外 Python 也有点弱,用他自己的话说:我那时就知道 Python 了,但我…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/21/113443k7kzkkmmi17o9hmb.jpg">Media</a>尽管我很难说清楚为什么,但 Ruby 一直是我最喜爱的一门编程语言。如果用音乐来类比的话,Python 给我的感觉像是朋克摇滚punk rock,简单、直接,但略显单调,而 Ruby 则像是爵士乐,从根本上赋予了程序员表达自我的自由,虽然这可能会让代码变复杂,编写出来的程序对其他人来说不直观。Ruby 社区一直将灵活表达freedom of expression视为其核心价值。可我不认同这对于 Ruby 的开发和普及是最重要的。创建一门编程语言也许是为了更高的性能,也许是为了在抽象上节省更多的时间,可 Ruby 就有趣在它并不关心这些,从它诞生之初,它的目标就是让程序员更快乐。松本·行弘松本·行弘Yukihiro Matsumoto,亦称为 “Matz”,于 1990 年毕业于筑波大学。筑波是东京东北方向上的一个小城市,是科学研究与技术开发的中心之一。筑波大学以其 STEM 计划广为流传。松本·行弘在筑波大学的信息科学专业学习过,且专攻编程语言。他也在 Ikuo Nakata 的编程语言实验室工作过。(LCTT 译注:STEM 是科学Science、技术Technology、工程Engineering、数学Mathematics四门学科英文首字母的缩写。)松本从 1993 年开始制作 Ruby,那时他才刚毕业几年。他制作 Ruby 的起因是觉得那时的脚本语言缺乏一些特性。他在使用 Perl 的时候觉得这门语言过于“玩具”,此外 Python 也有点弱,用他自己的话说:我那时就知道 Python 了,但我…
如何从命令行同时移动多种文件类型
如果你曾遇到这样的情况,我知道在类 Unix 系统中从命令行执行该操作的一个简单方法。Media
via https://linux.cn/article-10464-1.html
如果你曾遇到这样的情况,我知道在类 Unix 系统中从命令行执行该操作的一个简单方法。Media
via https://linux.cn/article-10464-1.html
如何从命令行同时移动多种文件类型
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/21/224428kbq6nvvn3aq5ab1a.png">Media</a>前几天,我想知道如何将多个文件类型从一个目录移动(不复制)到另一个目录。我已经知道如何<a href="https://www.ostechnix.com/find-copy-certain-type-files-one-directory-another-linux/">查找并将某些类型的文件从一个目录复制到另一个目录</a>。但是,我不知道如何同时移动多种文件类型。如果你曾遇到这样的情况,我知道在类 Unix 系统中从命令行执行该操作的一个简单方法。同时移动多种文件类型想象一下这种场景,你在名为 dir1 的目录中有多种类型的文件,例如 .pdf、 .doc、 .mp3、 .mp4、 .txt 等等。我们来看看 dir1 的内容:<pre class="prettyprint linenums">$ ls dir1file.txt image.jpg mydoc.doc personal.pdf song.mp3 video.mp4</pre>你希望将某些文件类型(不是所有文件类型)移动到另一个位置。例如,假设你想将 .doc、 .pdf 和 .txt 文件一次性移动到名为 dir2 的另一个目录中。要同时将 .doc、 .pdf 和 .txt 文件从 dir1 移动到 dir2,命令是:<pre class="prettyprint linenums">$ mv dir1/*.{doc,pdf,txt} dir2/</pre>很容易,不是吗?现在让我们来查看一下 dir2 的内容:<pre class="prettyprint linenums">$ ls dir2/file.txt mydoc.doc personal.pdf</pre>看到了吗?只有 .doc、 .pdf 和 .txt 从 dir1 移到了 dir2。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/21/224605ecyxoo1cf5yfoydf.gif">Media</a>在上面的命令中,你可以在花括号内添加任意数量的文件类型,以将它们移动到不同的目录中。它在 Bash 上非常适合我。另一种移动多种文件类型的方法是转到源目录,在我们的例子中即为 dir1:<pre class="prettyprint linenums">$ cd ~/dir1</pre>将你选择的文件类型移动到目的地(即 dir2&…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/21/224428kbq6nvvn3aq5ab1a.png">Media</a>前几天,我想知道如何将多个文件类型从一个目录移动(不复制)到另一个目录。我已经知道如何<a href="https://www.ostechnix.com/find-copy-certain-type-files-one-directory-another-linux/">查找并将某些类型的文件从一个目录复制到另一个目录</a>。但是,我不知道如何同时移动多种文件类型。如果你曾遇到这样的情况,我知道在类 Unix 系统中从命令行执行该操作的一个简单方法。同时移动多种文件类型想象一下这种场景,你在名为 dir1 的目录中有多种类型的文件,例如 .pdf、 .doc、 .mp3、 .mp4、 .txt 等等。我们来看看 dir1 的内容:<pre class="prettyprint linenums">$ ls dir1file.txt image.jpg mydoc.doc personal.pdf song.mp3 video.mp4</pre>你希望将某些文件类型(不是所有文件类型)移动到另一个位置。例如,假设你想将 .doc、 .pdf 和 .txt 文件一次性移动到名为 dir2 的另一个目录中。要同时将 .doc、 .pdf 和 .txt 文件从 dir1 移动到 dir2,命令是:<pre class="prettyprint linenums">$ mv dir1/*.{doc,pdf,txt} dir2/</pre>很容易,不是吗?现在让我们来查看一下 dir2 的内容:<pre class="prettyprint linenums">$ ls dir2/file.txt mydoc.doc personal.pdf</pre>看到了吗?只有 .doc、 .pdf 和 .txt 从 dir1 移到了 dir2。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/21/224605ecyxoo1cf5yfoydf.gif">Media</a>在上面的命令中,你可以在花括号内添加任意数量的文件类型,以将它们移动到不同的目录中。它在 Bash 上非常适合我。另一种移动多种文件类型的方法是转到源目录,在我们的例子中即为 dir1:<pre class="prettyprint linenums">$ cd ~/dir1</pre>将你选择的文件类型移动到目的地(即 dir2&…
Linux 工具:点的含义
Paul Brown 解释了 Linux shell 命令中那个不起眼的“点”的各种意思和用法。Media
via https://linux.cn/article-10465-1.html
Paul Brown 解释了 Linux shell 命令中那个不起眼的“点”的各种意思和用法。Media
via https://linux.cn/article-10465-1.html
Linux 工具:点的含义
Paul Brown 解释了 Linux shell 命令中那个不起眼的“点”的各种意思和用法。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/22/000250f1x67c4ec3kxicp1.jpg">Media</a>在现实情况中,使用 shell 命令编写的单行命令或脚本可能会令人很困惑。你使用的很多工具的名称与它们的实际功能相差甚远(grep、tee 和 awk,还有吗?),而当你将两个或更多个组合起来时,所组成的 “句子” 看起来更像某种外星人的天书。因此,上面说的这些对于你并无帮助,因为你用来编写一连串的指令所使用的符号根据你使用的场景有着不同的意义。位置、位置、位置就拿这个不起眼的点(.)来说吧。当它放在一个需要一个目录名称的命令的参数处时,表示“当前目录”:<pre class="prettyprint linenums">find . -name "*.jpg"</pre>意思就是“在当前目录(包括子目录)中寻找以 .jpg 结尾的文件”。ls . 和 cd . 结果也如你想的那样,它们分别列举和“进入”到当前目录,虽然在这两种情况下这个点都是多余的。而一个紧接着另一个的两个点呢,在同样的场景下(即当你的命令期望一个文件目录的时候)表示“当前目录的父目录”。如果你当前在 /home/your_directory 下并且运行:<pre class="prettyprint linenums">cd ..</pre>你就会进入到 /home。所以,你可能认为这仍然适合“点代表附近目录”的叙述,并且毫不复杂,对吧?那下面这样会怎样呢?如果你在一个文件或目录的开头加上点,它表示这个文件或目录会被隐藏:<pre class="prettyprint linenums">$ touch somedir/file01.txt somedir/file02.txt…
Paul Brown 解释了 Linux shell 命令中那个不起眼的“点”的各种意思和用法。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/22/000250f1x67c4ec3kxicp1.jpg">Media</a>在现实情况中,使用 shell 命令编写的单行命令或脚本可能会令人很困惑。你使用的很多工具的名称与它们的实际功能相差甚远(grep、tee 和 awk,还有吗?),而当你将两个或更多个组合起来时,所组成的 “句子” 看起来更像某种外星人的天书。因此,上面说的这些对于你并无帮助,因为你用来编写一连串的指令所使用的符号根据你使用的场景有着不同的意义。位置、位置、位置就拿这个不起眼的点(.)来说吧。当它放在一个需要一个目录名称的命令的参数处时,表示“当前目录”:<pre class="prettyprint linenums">find . -name "*.jpg"</pre>意思就是“在当前目录(包括子目录)中寻找以 .jpg 结尾的文件”。ls . 和 cd . 结果也如你想的那样,它们分别列举和“进入”到当前目录,虽然在这两种情况下这个点都是多余的。而一个紧接着另一个的两个点呢,在同样的场景下(即当你的命令期望一个文件目录的时候)表示“当前目录的父目录”。如果你当前在 /home/your_directory 下并且运行:<pre class="prettyprint linenums">cd ..</pre>你就会进入到 /home。所以,你可能认为这仍然适合“点代表附近目录”的叙述,并且毫不复杂,对吧?那下面这样会怎样呢?如果你在一个文件或目录的开头加上点,它表示这个文件或目录会被隐藏:<pre class="prettyprint linenums">$ touch somedir/file01.txt somedir/file02.txt…
用 rcm 管理隐藏文件
许多 GNU/Linux 程序的一个特点是有个易于编辑的配置文件。这些配置文件经常隐藏在用户的主目录中。Media
via https://linux.cn/article-10466-1.html
许多 GNU/Linux 程序的一个特点是有个易于编辑的配置文件。这些配置文件经常隐藏在用户的主目录中。Media
via https://linux.cn/article-10466-1.html
用 rcm 管理隐藏文件
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/22/104627m4y4jfa8z5ny6kzk.jpg">Media</a>许多 GNU/Linux 程序的一个特点是有个易于编辑的配置文件。几乎所有常见的自由软件都将配置设置保存在纯文本文件中,通常采用结构化格式,如 JSON、YAML 或<a href="https://en.wikipedia.org/wiki/INI_file">“类似 ini”</a> 的文件中。这些配置文件经常隐藏在用户的主目录中。但是,基本的 ls 不会显示它们。UNIX 标准要求以点开头的任何文件或目录名称都被视为“隐藏”,除非用户特意要求,否则不会列在目录列表中。例如,要使用 ls 列出所有文件,要传递 -a 选项。随着时间的推移,这些配置文件会有很多定制配置,管理它们变得越来越具有挑战性。不仅如此,在多台计算机之间保持同步是大型组织所面临的共同挑战。最后,许多用户也对其独特的配置感到自豪,并希望以简单的方式与朋友分享。这就是用到 rcm 介入的地方。rcm 是一个 “rc” 文件管理套件(“rc” 是命名配置文件的另一种约定,它已被某些 GNU/Linux 程序采用,如 screen 或 bash)。 rcm 提供了一套命令来管理和列出它跟踪的文件。使用 dnf 安装 rcm。开始使用默认情况下,rcm 使用 ~/.dotfiles 来存储它管理的所有隐藏文件。一个被管理的隐藏文件实际保存在 ~/.dotfiles 目录中,而它的符号链接会放在文件原本的位置。例如,如果 ~/.bashrc 由 rcm 所管理,那么详细列表将如下所示。<pre class="prettyprint linenums">[link@localhost ~]$ ls -l ~/.bashrclrwxrwxrwx. 1 link link 27 Dec 16 05:19 .bashrc -> /home/link/.dotfiles/bashrc[link@localhost ~]$</pre>rcm 包含 4 &…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/22/104627m4y4jfa8z5ny6kzk.jpg">Media</a>许多 GNU/Linux 程序的一个特点是有个易于编辑的配置文件。几乎所有常见的自由软件都将配置设置保存在纯文本文件中,通常采用结构化格式,如 JSON、YAML 或<a href="https://en.wikipedia.org/wiki/INI_file">“类似 ini”</a> 的文件中。这些配置文件经常隐藏在用户的主目录中。但是,基本的 ls 不会显示它们。UNIX 标准要求以点开头的任何文件或目录名称都被视为“隐藏”,除非用户特意要求,否则不会列在目录列表中。例如,要使用 ls 列出所有文件,要传递 -a 选项。随着时间的推移,这些配置文件会有很多定制配置,管理它们变得越来越具有挑战性。不仅如此,在多台计算机之间保持同步是大型组织所面临的共同挑战。最后,许多用户也对其独特的配置感到自豪,并希望以简单的方式与朋友分享。这就是用到 rcm 介入的地方。rcm 是一个 “rc” 文件管理套件(“rc” 是命名配置文件的另一种约定,它已被某些 GNU/Linux 程序采用,如 screen 或 bash)。 rcm 提供了一套命令来管理和列出它跟踪的文件。使用 dnf 安装 rcm。开始使用默认情况下,rcm 使用 ~/.dotfiles 来存储它管理的所有隐藏文件。一个被管理的隐藏文件实际保存在 ~/.dotfiles 目录中,而它的符号链接会放在文件原本的位置。例如,如果 ~/.bashrc 由 rcm 所管理,那么详细列表将如下所示。<pre class="prettyprint linenums">[link@localhost ~]$ ls -l ~/.bashrclrwxrwxrwx. 1 link link 27 Dec 16 05:19 .bashrc -> /home/link/.dotfiles/bashrc[link@localhost ~]$</pre>rcm 包含 4 &…
s-tui:在 Linux 中监控 CPU 温度、频率、功率和使用率的终端工具
它其实是一个压力测试的终端 UI,可以帮助管理员通过颜色查看 CPU 温度。Media
via https://linux.cn/article-10467-1.html
它其实是一个压力测试的终端 UI,可以帮助管理员通过颜色查看 CPU 温度。Media
via https://linux.cn/article-10467-1.html
s-tui:在 Linux 中监控 CPU 温度、频率、功率和使用率的终端工具
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/22/234445t2ozz2p3lp393l7i.jpg">Media</a>一般每个 Linux 管理员都会使用 <a href="https://www.2daygeek.com/view-check-cpu-hard-disk-temperature-linux/">lm_sensors 监控 CPU 温度</a>。lm_sensors (Linux 监控传感器)是一个自由开源程序,它提供了监控温度、电压和风扇的驱动和工具。如果你正在找替代的 CLI 工具,我会建议你尝试 s-tui。它其实是一个压力测试的终端 UI,可以帮助管理员通过颜色查看 CPU 温度。s-tui 是什么s-tui 是一个用于监控计算机的终端 UI。s-tui 可以在终端以图形方式监控 CPU 温度、频率、功率和使用率。此外,它还显示由发热量限制引起的性能下降,它需要很少的资源并且不需要 X 服务器。它是用 Python 编写的,需要 root 权限才能使用它。s-tui 是一个独立的程序,可以开箱即用,并且不需要配置文件就可以使用其基本功能。s-tui 使用 psutil 来探测你的一些硬件信息。如果不支持你的一些硬件,你可能看不到所有信息。以 root 身份运行 s-tui 时,当压测所有 CPU 核心时,可以将 CPU 发挥到最大睿频频率。它在后台使用 Stress 压力测试工具,通过对系统施加某些类型的计算压力来检查其组件的温度是否超过其可接受的范围。只要计算机稳定并且其组件的温度不超过其可接受的范围,PC 超频就没问题。有几个程序可以通过压力测试得到系统的稳定性,从而评估超频水平。如何在 Linux 中安装 s-tui它是用 Python 写的,pip 是在…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/22/234445t2ozz2p3lp393l7i.jpg">Media</a>一般每个 Linux 管理员都会使用 <a href="https://www.2daygeek.com/view-check-cpu-hard-disk-temperature-linux/">lm_sensors 监控 CPU 温度</a>。lm_sensors (Linux 监控传感器)是一个自由开源程序,它提供了监控温度、电压和风扇的驱动和工具。如果你正在找替代的 CLI 工具,我会建议你尝试 s-tui。它其实是一个压力测试的终端 UI,可以帮助管理员通过颜色查看 CPU 温度。s-tui 是什么s-tui 是一个用于监控计算机的终端 UI。s-tui 可以在终端以图形方式监控 CPU 温度、频率、功率和使用率。此外,它还显示由发热量限制引起的性能下降,它需要很少的资源并且不需要 X 服务器。它是用 Python 编写的,需要 root 权限才能使用它。s-tui 是一个独立的程序,可以开箱即用,并且不需要配置文件就可以使用其基本功能。s-tui 使用 psutil 来探测你的一些硬件信息。如果不支持你的一些硬件,你可能看不到所有信息。以 root 身份运行 s-tui 时,当压测所有 CPU 核心时,可以将 CPU 发挥到最大睿频频率。它在后台使用 Stress 压力测试工具,通过对系统施加某些类型的计算压力来检查其组件的温度是否超过其可接受的范围。只要计算机稳定并且其组件的温度不超过其可接受的范围,PC 超频就没问题。有几个程序可以通过压力测试得到系统的稳定性,从而评估超频水平。如何在 Linux 中安装 s-tui它是用 Python 写的,pip 是在…
软件 bug 的生命周期
从发现软件故障到解决它们,这里讲述是开发团队如何压制软件 bug。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/23/002319dwfsgwpp7mhr7fg4.jpg">Media</a>1947 年,发现了第一个计算机 bug —— 被困在计算机继电器中的飞蛾。要是所有的 bug 都能如此简单地发现就好了。随着软件变得越来越复杂,测试和调试的过程也变得更加复杂。如今,软件 bug 的生命周期可能会很长,尽管正确的技术和业务流程可能会有所帮助。对于开源软件,开发人员使用严格的工单服务和协作来查找和解决 bug。确认计算机 bug在测试过程中,发现的 bug 会报告给开发团队。质量保证测试人员尽可能详细地描述 bug ,报告他们的系统状态、他们正在进行的过程以及 bug 是如何表现出来的。尽管如此,一些 bug 从未得到确认;它们可能会在测试中报告,但永远无法在可控环境中重现。在这种情况下,它们可能得不到解决,而是被关闭。有些计算机 bug 可能很难确认,因为使用的平台种类繁多,用户行为也非常多。有些 bug 只是间歇性地或在非常特殊的情况下发生的,而另一些 bug 可能会出现在随机的情况下。许多人使用开源软件并与之交互,许多 bug 和问题可能是不可重复的,或者可能没有得到充分的描述。不过,由于每个用户和开发人员也都扮演质量保证测试人员的角色,至少在一定程度上,bug 还是很有可能会发现的。确认 bug 后A…
从发现软件故障到解决它们,这里讲述是开发团队如何压制软件 bug。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/23/002319dwfsgwpp7mhr7fg4.jpg">Media</a>1947 年,发现了第一个计算机 bug —— 被困在计算机继电器中的飞蛾。要是所有的 bug 都能如此简单地发现就好了。随着软件变得越来越复杂,测试和调试的过程也变得更加复杂。如今,软件 bug 的生命周期可能会很长,尽管正确的技术和业务流程可能会有所帮助。对于开源软件,开发人员使用严格的工单服务和协作来查找和解决 bug。确认计算机 bug在测试过程中,发现的 bug 会报告给开发团队。质量保证测试人员尽可能详细地描述 bug ,报告他们的系统状态、他们正在进行的过程以及 bug 是如何表现出来的。尽管如此,一些 bug 从未得到确认;它们可能会在测试中报告,但永远无法在可控环境中重现。在这种情况下,它们可能得不到解决,而是被关闭。有些计算机 bug 可能很难确认,因为使用的平台种类繁多,用户行为也非常多。有些 bug 只是间歇性地或在非常特殊的情况下发生的,而另一些 bug 可能会出现在随机的情况下。许多人使用开源软件并与之交互,许多 bug 和问题可能是不可重复的,或者可能没有得到充分的描述。不过,由于每个用户和开发人员也都扮演质量保证测试人员的角色,至少在一定程度上,bug 还是很有可能会发现的。确认 bug 后A…
你(多半)不需要 Kubernetes
这也许是一个不太受欢迎的观点,但大多数主流公司最好不要再使用 k8s 了。Media
via https://linux.cn/article-10469-1.html
这也许是一个不太受欢迎的观点,但大多数主流公司最好不要再使用 k8s 了。Media
via https://linux.cn/article-10469-1.html
你(多半)不需要 Kubernetes
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/23/010935ah4tgomzmamntzhi.jpg">Media</a>这也许是一个不太受欢迎的观点,但大多数主流公司最好不要再使用 k8s 了。你知道那个古老的“以程序员技能写 Hello world ”笑话吗?—— 从一个新手程序员的 <code>printf("hello, world\n")</code> 语句开始,最后结束于高级软件架构工程师令人费解的 Java OOP 模式设计。使用 k8s 就有点像这样。新手系统管理员:<code>./binary</code>有经验的系统管理员:在 EC2 上的 <code>./binary</code>DevOp:在 EC2 上自部署的 CI 管道运行 <code>./binary</code>高级云编排工程师:在 EC2 上通过 k8s 编排的自部署 CI 管道运行 <code>./binary</code>¯\\_(ツ)_/¯这不意味着 Kubernetes 或者任何这样的东西本身都是<em>坏的</em>,就像 Java 或者 OOP 设计本身并不是坏的一样,但是,在很多情况下,它们被严重地误用,就像在一个 hello world 的程序中可怕地误用 Java 面向对象设计模式一样。对大多数公司而言,系统运维从根本上来说并不十分复杂,此时在这上面应用 k8s 起效甚微。复杂性本质上来说创造了工作,我十分怀疑使用 k8s 对大多数使用者来说是省时的这一说法。这就好像花一天时间来写一个脚本,用来自动完成一些你一个月进行一次,每次只花 10 分钟完成的工作。这不是一个好的时间投资(特别是你可能会在未来由于扩展或调试这个脚本而进一步投入的更多时间)。你的部署大概应该<em>需要</em>自动化 – 以免你 <a href="https://dougseven.com/2014/04/17/knightmare-a-devops-cautionary-tale/">最终像 Knightmare</a> 那样 —— 但 k8s 通常Ö…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/23/010935ah4tgomzmamntzhi.jpg">Media</a>这也许是一个不太受欢迎的观点,但大多数主流公司最好不要再使用 k8s 了。你知道那个古老的“以程序员技能写 Hello world ”笑话吗?—— 从一个新手程序员的 <code>printf("hello, world\n")</code> 语句开始,最后结束于高级软件架构工程师令人费解的 Java OOP 模式设计。使用 k8s 就有点像这样。新手系统管理员:<code>./binary</code>有经验的系统管理员:在 EC2 上的 <code>./binary</code>DevOp:在 EC2 上自部署的 CI 管道运行 <code>./binary</code>高级云编排工程师:在 EC2 上通过 k8s 编排的自部署 CI 管道运行 <code>./binary</code>¯\\_(ツ)_/¯这不意味着 Kubernetes 或者任何这样的东西本身都是<em>坏的</em>,就像 Java 或者 OOP 设计本身并不是坏的一样,但是,在很多情况下,它们被严重地误用,就像在一个 hello world 的程序中可怕地误用 Java 面向对象设计模式一样。对大多数公司而言,系统运维从根本上来说并不十分复杂,此时在这上面应用 k8s 起效甚微。复杂性本质上来说创造了工作,我十分怀疑使用 k8s 对大多数使用者来说是省时的这一说法。这就好像花一天时间来写一个脚本,用来自动完成一些你一个月进行一次,每次只花 10 分钟完成的工作。这不是一个好的时间投资(特别是你可能会在未来由于扩展或调试这个脚本而进一步投入的更多时间)。你的部署大概应该<em>需要</em>自动化 – 以免你 <a href="https://dougseven.com/2014/04/17/knightmare-a-devops-cautionary-tale/">最终像 Knightmare</a> 那样 —— 但 k8s 通常Ö…
如何构建一台网络引导服务器(四)
在本系列教程中所构建的网络引导服务器有一个很重要的限制,那就是所提供的操作系统镜像是只读的。一些使用场景或许要求终端用户能够修改操作系统镜像。Media
via https://linux.cn/article-10470-1.html
在本系列教程中所构建的网络引导服务器有一个很重要的限制,那就是所提供的操作系统镜像是只读的。一些使用场景或许要求终端用户能够修改操作系统镜像。Media
via https://linux.cn/article-10470-1.html
如何构建一台网络引导服务器(四)
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/23/222618djzymxhxdrwjrqrd.jpg">Media</a>在本系列教程中所构建的网络引导服务器有一个很重要的限制,那就是所提供的操作系统镜像是只读的。一些使用场景或许要求终端用户能够修改操作系统镜像。例如,一些教师或许希望学生能够安装和配置一些像 MariaDB 和 Node.js 这样的包来做为他们课程练习的一部分。可写镜像的另外的好处是,终端用户“私人定制”的操作系统,在下次不同的工作站上使用时能够“跟着”他们。修改 Bootmenu 应用程序以使用 HTTPS为 bootmenu 应用程序创建一个自签名的证书:<pre class="prettyprint linenums">$ sudo -i# MY_NAME=$(</etc/hostname)# MY_TLSD=/opt/bootmenu/tls# mkdir $MY_TLSD# openssl req -newkey rsa:2048 -nodes -keyout $MY_TLSD/$MY_NAME.key -x509 -days 3650 -out $MY_TLSD/$MY_NAME.pem</pre>验证你的证书的值。确保 Subject 行中 CN 的值与你的 iPXE 客户端连接你的网络引导服务器所使用的 DNS 名字是相匹配的:<pre class="prettyprint linenums"># openssl x509 -text -noout -in $MY_TLSD/$MY_NAME.pem</pre>接下来,更新 bootmenu 应用程序去监听 HTTPS 端口和新创建的证书及密钥:<pre class="prettyprint linenums"># sed -i "s#listen => .*#listen => ['https://$MY_NAME:443?cert=$MY_TLSD/$MY_NAME.pem\&key=$MY_TLSD/$MY_NAME.key\&ciphers=AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA'],#" /opt/bootmenu/bootmenu.conf</pre>注意 <a href="http://ipxe.org/crypto">iPXE 当前支持的</a> 加密算法是有限制的。GnuTLS 要求 “CAPDACREAD_SEARCH” 能力,因此将它添加到 bootmenu 应用程序的 systemd 服务:<pre class="prettyprint linenums"># sed -i '/^AmbientCapabilities=/ s/$/ CAP_DAC_READ_SEARCH/' /etc/systemd/system/bootmenu.service# sed -i 's/Serves iPXE Menus over HTTP/Serves iPXE Menus over HTTPS/' /etc/systemd/system/bootmenu.service# systemctl daemon-reload</pre>现在,在防火墙中为 bootmenu 服务添加一个例外规则并重启动该服务:<pre class="prettyprint linenums"># MY_SUBNET=192.0.2.0# MY_PREFIX=24# firewall-cmd --add-rich-rule="rule family='ipv4' source address='$MY_SUBNET/$MY_PREFIX' service name='https' accept"# firewall…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/23/222618djzymxhxdrwjrqrd.jpg">Media</a>在本系列教程中所构建的网络引导服务器有一个很重要的限制,那就是所提供的操作系统镜像是只读的。一些使用场景或许要求终端用户能够修改操作系统镜像。例如,一些教师或许希望学生能够安装和配置一些像 MariaDB 和 Node.js 这样的包来做为他们课程练习的一部分。可写镜像的另外的好处是,终端用户“私人定制”的操作系统,在下次不同的工作站上使用时能够“跟着”他们。修改 Bootmenu 应用程序以使用 HTTPS为 bootmenu 应用程序创建一个自签名的证书:<pre class="prettyprint linenums">$ sudo -i# MY_NAME=$(</etc/hostname)# MY_TLSD=/opt/bootmenu/tls# mkdir $MY_TLSD# openssl req -newkey rsa:2048 -nodes -keyout $MY_TLSD/$MY_NAME.key -x509 -days 3650 -out $MY_TLSD/$MY_NAME.pem</pre>验证你的证书的值。确保 Subject 行中 CN 的值与你的 iPXE 客户端连接你的网络引导服务器所使用的 DNS 名字是相匹配的:<pre class="prettyprint linenums"># openssl x509 -text -noout -in $MY_TLSD/$MY_NAME.pem</pre>接下来,更新 bootmenu 应用程序去监听 HTTPS 端口和新创建的证书及密钥:<pre class="prettyprint linenums"># sed -i "s#listen => .*#listen => ['https://$MY_NAME:443?cert=$MY_TLSD/$MY_NAME.pem\&key=$MY_TLSD/$MY_NAME.key\&ciphers=AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA'],#" /opt/bootmenu/bootmenu.conf</pre>注意 <a href="http://ipxe.org/crypto">iPXE 当前支持的</a> 加密算法是有限制的。GnuTLS 要求 “CAPDACREAD_SEARCH” 能力,因此将它添加到 bootmenu 应用程序的 systemd 服务:<pre class="prettyprint linenums"># sed -i '/^AmbientCapabilities=/ s/$/ CAP_DAC_READ_SEARCH/' /etc/systemd/system/bootmenu.service# sed -i 's/Serves iPXE Menus over HTTP/Serves iPXE Menus over HTTPS/' /etc/systemd/system/bootmenu.service# systemctl daemon-reload</pre>现在,在防火墙中为 bootmenu 服务添加一个例外规则并重启动该服务:<pre class="prettyprint linenums"># MY_SUBNET=192.0.2.0# MY_PREFIX=24# firewall-cmd --add-rich-rule="rule family='ipv4' source address='$MY_SUBNET/$MY_PREFIX' service name='https' accept"# firewall…
Pelican 入门:一个 Python 静态网站生成器
Pelican 是那些想要自我托管简单网站或博客的 Python 用户的绝佳选择。Media
via https://linux.cn/article-10471-1.html
Pelican 是那些想要自我托管简单网站或博客的 Python 用户的绝佳选择。Media
via https://linux.cn/article-10471-1.html
Pelican 入门:一个 Python 静态网站生成器
Pelican 是那些想要自我托管简单网站或博客的 Python 用户的绝佳选择。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/23/232503d2jfzedsq2xxer2s.png">Media</a>如果你想创建一个自定义网站或博客,有很多选择。许多提供商可以托管你的网站并为你完成大部分工作。(WordPress 是一个非常受欢迎的选项。)但是使用托管方式,你会失去一些灵活性。作为一名软件开发人员,我更喜欢管理我自己的服务器,并在我的网站如何运行方面保持更多的自由。然而,管理 Web 服务器需要大量的工作。安装它并获得一个简单的应用程序来提供内容是非常容易的。但是,维护安全补丁和更新是非常耗时得。如果你只想提供静态网页,那么拥有一个 Web 服务器和一系列应用程序可能会得不偿失。手动创建 HTML 页面也不是一个好选择。这是静态网站生成器的用武之地。这些应用程序使用模板来创建所需的静态页面,并将它们与关联的元数据交叉链接。(例如,所有显示的页面都带有公共标签或关键词。)静态网站生成器可以帮助你使用导航区域、页眉和页脚等元素创建一个具有公共外观的网站。我使用 <a href="https://opensource.com/resources/python">Pyhton</a> 已经很多年了,所以,当我第一次开始寻找生成静态 HTML 页面的东西时,我想要用 Python 编写的东西。主要原因是我经常想要了解应用程序如何工作的内部细节,而使用一种我已经…
Pelican 是那些想要自我托管简单网站或博客的 Python 用户的绝佳选择。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/23/232503d2jfzedsq2xxer2s.png">Media</a>如果你想创建一个自定义网站或博客,有很多选择。许多提供商可以托管你的网站并为你完成大部分工作。(WordPress 是一个非常受欢迎的选项。)但是使用托管方式,你会失去一些灵活性。作为一名软件开发人员,我更喜欢管理我自己的服务器,并在我的网站如何运行方面保持更多的自由。然而,管理 Web 服务器需要大量的工作。安装它并获得一个简单的应用程序来提供内容是非常容易的。但是,维护安全补丁和更新是非常耗时得。如果你只想提供静态网页,那么拥有一个 Web 服务器和一系列应用程序可能会得不偿失。手动创建 HTML 页面也不是一个好选择。这是静态网站生成器的用武之地。这些应用程序使用模板来创建所需的静态页面,并将它们与关联的元数据交叉链接。(例如,所有显示的页面都带有公共标签或关键词。)静态网站生成器可以帮助你使用导航区域、页眉和页脚等元素创建一个具有公共外观的网站。我使用 <a href="https://opensource.com/resources/python">Pyhton</a> 已经很多年了,所以,当我第一次开始寻找生成静态 HTML 页面的东西时,我想要用 Python 编写的东西。主要原因是我经常想要了解应用程序如何工作的内部细节,而使用一种我已经…
关于团队敏捷开发实践的 6 个常见问题
专家回答了敏捷实践如何帮助团队更有效的 6 个常见问题。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/23/234907hdxbo21xxq8qovv7.png">Media</a>”有问题么?“你可能听过演讲者在演讲结束的时候提出这个问题。这是演讲中最重要的部分 —— 毕竟,你不仅仅是听讲座, 而是参加讨论和社群交流。最近,我有机会听到我的同伴 Red Hatters 给当地一所大学的一群技术型学生做一个名为 “<a href="http://zijemeit.cz/sessions/agile-in-practice/">敏捷实践</a>” 的讲座。讲座中有软件工程师 Tomas Tomecek 和敏捷开发的从业者 Fernando Colleone 、Pavel Najman 合作解释了敏捷开发方法的基础,并展示最佳实践在日常活动中的应用。知道了学生们参加这个课程是为了了解什么是敏捷实践以及如何将其应用于项目,我想知道学生们的问题会与我作为敏捷从业者在 Red Hat 每天听到的问题相比有什么不同。结果学生的疑问和我的同事们如出一辙。这些问题都直指敏捷实践的核心。1、完美的团队规模是多大?学生们想知道一个小团队和一个大团队的规模是多少。这个问题与任何曾经合作过做项目的人都是相关的。根据 Tomas 作为技术领导的经验,12 个人从事的项目被认为是一个大型团队。现实中,团队规模通常与生产力没有直接关系。在有些时候,在一个地方或同一个时区的小团队也许会比一个成员分布在满世界的大团队更具有生产力。最终,该讲座建议理想௚…
专家回答了敏捷实践如何帮助团队更有效的 6 个常见问题。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/23/234907hdxbo21xxq8qovv7.png">Media</a>”有问题么?“你可能听过演讲者在演讲结束的时候提出这个问题。这是演讲中最重要的部分 —— 毕竟,你不仅仅是听讲座, 而是参加讨论和社群交流。最近,我有机会听到我的同伴 Red Hatters 给当地一所大学的一群技术型学生做一个名为 “<a href="http://zijemeit.cz/sessions/agile-in-practice/">敏捷实践</a>” 的讲座。讲座中有软件工程师 Tomas Tomecek 和敏捷开发的从业者 Fernando Colleone 、Pavel Najman 合作解释了敏捷开发方法的基础,并展示最佳实践在日常活动中的应用。知道了学生们参加这个课程是为了了解什么是敏捷实践以及如何将其应用于项目,我想知道学生们的问题会与我作为敏捷从业者在 Red Hat 每天听到的问题相比有什么不同。结果学生的疑问和我的同事们如出一辙。这些问题都直指敏捷实践的核心。1、完美的团队规模是多大?学生们想知道一个小团队和一个大团队的规模是多少。这个问题与任何曾经合作过做项目的人都是相关的。根据 Tomas 作为技术领导的经验,12 个人从事的项目被认为是一个大型团队。现实中,团队规模通常与生产力没有直接关系。在有些时候,在一个地方或同一个时区的小团队也许会比一个成员分布在满世界的大团队更具有生产力。最终,该讲座建议理想௚…
Arch-Audit:一款在 Arch Linux 上检查易受攻击的软件包的工具
Arch-audit 是一个类似于 Arch Linux 的 pkg-audit 工具。它使用了令人称赞的 Arch 安全小组收集的数据。Media
via https://linux.cn/article-10473-1.html
Arch-audit 是一个类似于 Arch Linux 的 pkg-audit 工具。它使用了令人称赞的 Arch 安全小组收集的数据。Media
via https://linux.cn/article-10473-1.html