如何构建一台网络引导服务器(四)
<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
Arch-Audit:一款在 Arch Linux 上检查易受攻击的软件包的工具
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/24/194257itv2aa72qvkrkbhh.jpg">Media</a>我们必须经常更新我们的系统以减少宕机时间和问题。每月给系统打一次补丁,60 天一次或者最多 90 天一次,这是 Linux 管理员的例行任务之一。这是忙碌的工作计划,我们不能在不到一个月内做到这一点,因为它涉及到多种活动和环境。基本上,基础设施会一同提供测试、开发、 QA 环境(即各个分段和产品)。最初,我们会在测试环境中部署补丁,相应的团队将监视系统一周,然后他们将给出一份或好或坏的状态的报告。如果成功的话,我们将会在其他环境中继续测试,若正常运行,那么最后我们会给生产服务器打上补丁。许多组织会对整个系统打上补丁,我的意思是全系统更新,对于典型基础设施这是一种常规修补计划。某些基础设施中可能只有生产环境,因此,我们不应该做全系统更新,而是应该使用安全修补程序来使系统更加稳定和安全。由于 Arch Linux 及其衍生的发行版属于滚动更新版本,因此可以认为它们始终是最新的,因为它使用上游软件包的最新版本。在某些情况下,如果要单独更新安全修补程序,则必须使用 arch-audit 工具来标识和修复安全修补程序。漏洞是什么?漏洞是软件程序或硬件组件(固件)中的安全漏洞。这是一个可以让它容易受到攻…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/24/194257itv2aa72qvkrkbhh.jpg">Media</a>我们必须经常更新我们的系统以减少宕机时间和问题。每月给系统打一次补丁,60 天一次或者最多 90 天一次,这是 Linux 管理员的例行任务之一。这是忙碌的工作计划,我们不能在不到一个月内做到这一点,因为它涉及到多种活动和环境。基本上,基础设施会一同提供测试、开发、 QA 环境(即各个分段和产品)。最初,我们会在测试环境中部署补丁,相应的团队将监视系统一周,然后他们将给出一份或好或坏的状态的报告。如果成功的话,我们将会在其他环境中继续测试,若正常运行,那么最后我们会给生产服务器打上补丁。许多组织会对整个系统打上补丁,我的意思是全系统更新,对于典型基础设施这是一种常规修补计划。某些基础设施中可能只有生产环境,因此,我们不应该做全系统更新,而是应该使用安全修补程序来使系统更加稳定和安全。由于 Arch Linux 及其衍生的发行版属于滚动更新版本,因此可以认为它们始终是最新的,因为它使用上游软件包的最新版本。在某些情况下,如果要单独更新安全修补程序,则必须使用 arch-audit 工具来标识和修复安全修补程序。漏洞是什么?漏洞是软件程序或硬件组件(固件)中的安全漏洞。这是一个可以让它容易受到攻…
用这个吃豆人游戏在你的终端中玩街机
想要重现你最喜欢的街机游戏的魔力么?今天的命令行玩具将带你回到过去。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/24/204422nrfobzm0oscvj20s.png">Media</a>欢迎来到今天的 Linux 命令行玩具日历。如果这是你第一次访问该系列,你会问什么是命令行玩具。基本上,它们是游戏和简单的消遣,可以帮助你在终端玩得开心。有些是新的,有些是古老的经典。我们希望你喜欢。今天的玩具,MyMan,是经典街机游戏<a href="https://en.wikipedia.org/wiki/Pac-Man">吃豆人</a>Pac-Man(你不会认为这是<a href="https://wiki.archlinux.org/index.php/pacman">类似命名的</a> Linux 包管理器对吧?)的有趣克隆。 如果你和我一样,为了在吃豆人游戏中取得高分,你过去在其中花费了很多时间,那么有机会的话,你应该试试这个。MyMan 并不是 Linux 终端上唯一的吃豆人克隆版,但是我选择介绍它,因为 1)我喜欢它与原版一致的视觉风格,2)它为我的 Linux 发行版打包了,因此安装很容易。但是你也应该看看其他的克隆。这是<a href="https://github.com/YoctoForBeaglebone/pacman4console">另一个</a>看起来可能不错的,但我没有尝试过。由于 MyMan 已为 Fedora 打包,因此安装非常简单:<pre class="prettyprint linenums">$ dnf install myman</pre>MyMan 在 MIT 许可下可用,你可以在 <a href="https://myman.sourceforge.io/">SourceForge</a> 上查看源代码。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/24/204436w75azcy1egq15ba7.gif">Media</a>你有特别喜欢的命令行小玩具需要我介绍的吗?这个系列要介绍的小玩具大部分已经有了落实,但还预留了几个空位置。如…
想要重现你最喜欢的街机游戏的魔力么?今天的命令行玩具将带你回到过去。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/24/204422nrfobzm0oscvj20s.png">Media</a>欢迎来到今天的 Linux 命令行玩具日历。如果这是你第一次访问该系列,你会问什么是命令行玩具。基本上,它们是游戏和简单的消遣,可以帮助你在终端玩得开心。有些是新的,有些是古老的经典。我们希望你喜欢。今天的玩具,MyMan,是经典街机游戏<a href="https://en.wikipedia.org/wiki/Pac-Man">吃豆人</a>Pac-Man(你不会认为这是<a href="https://wiki.archlinux.org/index.php/pacman">类似命名的</a> Linux 包管理器对吧?)的有趣克隆。 如果你和我一样,为了在吃豆人游戏中取得高分,你过去在其中花费了很多时间,那么有机会的话,你应该试试这个。MyMan 并不是 Linux 终端上唯一的吃豆人克隆版,但是我选择介绍它,因为 1)我喜欢它与原版一致的视觉风格,2)它为我的 Linux 发行版打包了,因此安装很容易。但是你也应该看看其他的克隆。这是<a href="https://github.com/YoctoForBeaglebone/pacman4console">另一个</a>看起来可能不错的,但我没有尝试过。由于 MyMan 已为 Fedora 打包,因此安装非常简单:<pre class="prettyprint linenums">$ dnf install myman</pre>MyMan 在 MIT 许可下可用,你可以在 <a href="https://myman.sourceforge.io/">SourceForge</a> 上查看源代码。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/24/204436w75azcy1egq15ba7.gif">Media</a>你有特别喜欢的命令行小玩具需要我介绍的吗?这个系列要介绍的小玩具大部分已经有了落实,但还预留了几个空位置。如…
DevSecOps 提升安全性的五种方式
安全必须进化以跟上当今的应用开发和部署方式。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/25/001721dx7b7dmdnua2p2w2.jpg">Media</a>对于我们是否需要扩展 DevOps 以确实提升安全性,我们一直都有争议。毕竟,我们认为,DevOps 一直是一系列的新实践的简写,使用新工具(通常是开源的)并且在这之上构建更多的协作文化。为什么 <a href="https://opensource.com/article/18/5/steps-apply-devops-culture-beyond-it">DevBizOps</a> 不能更好地满足商业的需求?或者说 DevChatOps 强调的是更快更好的沟通?然而,如 <a href="https://www.devsecopsdays.com/articles/its-just-a-name">John Willis</a> 在今年(LCTT 译注:此处是 2018 年)的早些时候写的关于他对 <a href="https://opensource.com/article/18/4/devsecops">DevSecOps</a> 术语的理解,“我希望,有一天我们能在任何地方都不再使用 DevSecOps 这个词,安全会是所有关于服务交付的讨论中理所应当的部分。在那一天到来前,在这一点上,我的一般性结论是,这个词只是三个新的特性而已。更重要的是,我们作为一个产业,在信息安全方面并没有做的很好,而这个名称切实地区分出了问题的状况。”所以,为什么我们在<a href="https://opensource.com/article/18/6/where-cycle-security-devops">信息安全</a>方面做的不好,在 DevSecOps 的语境下安全做的好又是什么意思呢?尽管(也可能是因为)庞大的复杂行业的单点产品解决了特定方面的问题,但我们可以说是从未做好过信息安全。我们仍然可以在这个时代把工作做得足够好,以此来防范威胁,这些威胁主要集中在一个范…
安全必须进化以跟上当今的应用开发和部署方式。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/25/001721dx7b7dmdnua2p2w2.jpg">Media</a>对于我们是否需要扩展 DevOps 以确实提升安全性,我们一直都有争议。毕竟,我们认为,DevOps 一直是一系列的新实践的简写,使用新工具(通常是开源的)并且在这之上构建更多的协作文化。为什么 <a href="https://opensource.com/article/18/5/steps-apply-devops-culture-beyond-it">DevBizOps</a> 不能更好地满足商业的需求?或者说 DevChatOps 强调的是更快更好的沟通?然而,如 <a href="https://www.devsecopsdays.com/articles/its-just-a-name">John Willis</a> 在今年(LCTT 译注:此处是 2018 年)的早些时候写的关于他对 <a href="https://opensource.com/article/18/4/devsecops">DevSecOps</a> 术语的理解,“我希望,有一天我们能在任何地方都不再使用 DevSecOps 这个词,安全会是所有关于服务交付的讨论中理所应当的部分。在那一天到来前,在这一点上,我的一般性结论是,这个词只是三个新的特性而已。更重要的是,我们作为一个产业,在信息安全方面并没有做的很好,而这个名称切实地区分出了问题的状况。”所以,为什么我们在<a href="https://opensource.com/article/18/6/where-cycle-security-devops">信息安全</a>方面做的不好,在 DevSecOps 的语境下安全做的好又是什么意思呢?尽管(也可能是因为)庞大的复杂行业的单点产品解决了特定方面的问题,但我们可以说是从未做好过信息安全。我们仍然可以在这个时代把工作做得足够好,以此来防范威胁,这些威胁主要集中在一个范…
开始使用 Joplin 吧,一款开源笔记应用
了解开源工具如何帮助你在 2019 年提高工作效率。先从 Joplin 开始。Media
via https://linux.cn/article-10476-1.html
了解开源工具如何帮助你在 2019 年提高工作效率。先从 Joplin 开始。Media
via https://linux.cn/article-10476-1.html
开始使用 Joplin 吧,一款开源笔记应用
了解开源工具如何帮助你在 2019 年提高工作效率。先从 Joplin 开始。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/25/222700zorvrx36r7qx29if.jpg">Media</a>每年年初似乎都有疯狂的冲动想提高工作效率。新年的决心,渴望开启新的一年,当然,“抛弃旧的,拥抱新的”的态度促成了这一切。通常这时的建议严重偏向闭源和专有软件,但事实上并不用这样。这是我挑选出的 19 个新的(或者对你而言新的)开源项目来帮助你在 2019 年更有效率。Joplin在生产力工具领域,笔记应用<strong>非常</strong>方便。是的,你可以使用开源 <a href="http://nixnote.org/NixNote-Home/">NixNote</a> 访问 <a href="https://evernote.com/">Evernote</a> 笔记,但它仍然与 Evernote 服务器相关联,并且仍然依赖于第三方的安全性。虽然你<strong>可以</strong>从 NixNote 导出 Evernote 笔记,但可选格式只有 NixNote XML 或 PDF。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/25/222706hb4szknsqxxlqg4j.png">Media</a><em>Joplin 的图形界面</em>看看 <a href="https://joplin.cozic.net/">Joplin</a>。Joplin 是一个 NodeJS 应用,它在本地运行和存储笔记,它允许你加密笔记并支持多种同步方法。Joplin 可在 Windows、Mac 和 Linux 上作为控制台应用或图形应用运行。Joplin 还有适用于 Android 和 iOS 的移动应用,这意味着你可以随身携带笔记而不会有任何麻烦。Joplin 甚至允许你使用 Markdown、HTML 或纯文本格式笔记。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/25/222710a996ahdwa9ah6zn3.png">Media</a><em>Joplin 的 Android 应用</em>关于 Joplin 很棒的一件事是它支持两种类型笔记:普通笔记和待办事项笔记。普通笔记是你所想的包含文本的文档。另一个&#…
了解开源工具如何帮助你在 2019 年提高工作效率。先从 Joplin 开始。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/25/222700zorvrx36r7qx29if.jpg">Media</a>每年年初似乎都有疯狂的冲动想提高工作效率。新年的决心,渴望开启新的一年,当然,“抛弃旧的,拥抱新的”的态度促成了这一切。通常这时的建议严重偏向闭源和专有软件,但事实上并不用这样。这是我挑选出的 19 个新的(或者对你而言新的)开源项目来帮助你在 2019 年更有效率。Joplin在生产力工具领域,笔记应用<strong>非常</strong>方便。是的,你可以使用开源 <a href="http://nixnote.org/NixNote-Home/">NixNote</a> 访问 <a href="https://evernote.com/">Evernote</a> 笔记,但它仍然与 Evernote 服务器相关联,并且仍然依赖于第三方的安全性。虽然你<strong>可以</strong>从 NixNote 导出 Evernote 笔记,但可选格式只有 NixNote XML 或 PDF。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/25/222706hb4szknsqxxlqg4j.png">Media</a><em>Joplin 的图形界面</em>看看 <a href="https://joplin.cozic.net/">Joplin</a>。Joplin 是一个 NodeJS 应用,它在本地运行和存储笔记,它允许你加密笔记并支持多种同步方法。Joplin 可在 Windows、Mac 和 Linux 上作为控制台应用或图形应用运行。Joplin 还有适用于 Android 和 iOS 的移动应用,这意味着你可以随身携带笔记而不会有任何麻烦。Joplin 甚至允许你使用 Markdown、HTML 或纯文本格式笔记。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/25/222710a996ahdwa9ah6zn3.png">Media</a><em>Joplin 的 Android 应用</em>关于 Joplin 很棒的一件事是它支持两种类型笔记:普通笔记和待办事项笔记。普通笔记是你所想的包含文本的文档。另一个&#…
Bash 5.0 发布及其新功能
第五个版本侧重于新的 shell 变量和许多重大漏洞修复。它还引入了一些新功能,以及一些与 bash-4.4 不兼容的更改。Media
via https://linux.cn/article-10477-1.html
第五个版本侧重于新的 shell 变量和许多重大漏洞修复。它还引入了一些新功能,以及一些与 bash-4.4 不兼容的更改。Media
via https://linux.cn/article-10477-1.html
Bash 5.0 发布及其新功能
<a href="https://lists.gnu.org/archive/html/bug-bash/2019-01/msg00063.html">邮件列表</a>证实最近发布了 Bash-5.0。而且,令人兴奋的是它还有新的功能和变量。如果你一直在使用 Bash 4.4.XX,那么你一定会喜欢 <a href="https://www.gnu.org/software/bash/">Bash</a> 的第五个主要版本。第五个版本侧重于新的 shell 变量和许多重大漏洞修复。它还引入了一些新功能,以及一些与 bash-4.4 不兼容的更改。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/25/230317onqpffzzlnx5pax9.jpg">Bash logo</a>新功能怎么样?在邮件列表解释了此版本中修复的 bug:此版本修复了 bash-4.4 中的几个主要错误,并引入了几个新功能。最重要的 bug 修复是对 nameref 变量的解析以及通过模糊测试发现的许多潜在的内存越界错误。在为了符合 Posix 标准解释而不进行单词拆分的上下文中,对 $@ 和 $* 的展开做了许多改变,另外还有解决极端情况中 Posix 一致性的修改。它还引入了一些新功能。根据其发布说明,最值得注意的新功能是几个新的 shell 变量:BASH_ARGV0、EPOCHSECONDS 和 EPOCHREALTIME。内置命令 history 可以删除指定范围的条目,并能将负数理解为从历史末端开始的偏移量。有一个选项允许局部变量继承前一个范围内具有相同名称的变量的值。有一个新的 shell 选项,在启用它时,会导致 shell 只尝试一次扩展关联数组下标(这在算术表达式中使用时会出现问题)。globasciiranges 这个 shell 选项现在默认启用。可以在配置时默认关闭它。Bash-4.4 和 Bash-5.0 之间有哪些变化?其更新日志提到了不…
<a href="https://lists.gnu.org/archive/html/bug-bash/2019-01/msg00063.html">邮件列表</a>证实最近发布了 Bash-5.0。而且,令人兴奋的是它还有新的功能和变量。如果你一直在使用 Bash 4.4.XX,那么你一定会喜欢 <a href="https://www.gnu.org/software/bash/">Bash</a> 的第五个主要版本。第五个版本侧重于新的 shell 变量和许多重大漏洞修复。它还引入了一些新功能,以及一些与 bash-4.4 不兼容的更改。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/25/230317onqpffzzlnx5pax9.jpg">Bash logo</a>新功能怎么样?在邮件列表解释了此版本中修复的 bug:此版本修复了 bash-4.4 中的几个主要错误,并引入了几个新功能。最重要的 bug 修复是对 nameref 变量的解析以及通过模糊测试发现的许多潜在的内存越界错误。在为了符合 Posix 标准解释而不进行单词拆分的上下文中,对 $@ 和 $* 的展开做了许多改变,另外还有解决极端情况中 Posix 一致性的修改。它还引入了一些新功能。根据其发布说明,最值得注意的新功能是几个新的 shell 变量:BASH_ARGV0、EPOCHSECONDS 和 EPOCHREALTIME。内置命令 history 可以删除指定范围的条目,并能将负数理解为从历史末端开始的偏移量。有一个选项允许局部变量继承前一个范围内具有相同名称的变量的值。有一个新的 shell 选项,在启用它时,会导致 shell 只尝试一次扩展关联数组下标(这在算术表达式中使用时会出现问题)。globasciiranges 这个 shell 选项现在默认启用。可以在配置时默认关闭它。Bash-4.4 和 Bash-5.0 之间有哪些变化?其更新日志提到了不…
计算机实验室之树莓派:课程 2 OK02
OK02 课程构建于 OK01 课程的基础上,通过不停地打开和关闭 OK 或 ACT LED 指示灯来实现闪烁。Media
via https://linux.cn/article-10478-1.html
OK02 课程构建于 OK01 课程的基础上,通过不停地打开和关闭 OK 或 ACT LED 指示灯来实现闪烁。Media
via https://linux.cn/article-10478-1.html
计算机实验室之树莓派:课程 2 OK02
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/26/120026xuuxhsb00kqsubkk.jpg">Media</a>OK02 课程构建于 OK01 课程的基础上,通过不停地打开和关闭 OK 或 ACT LED 指示灯来实现闪烁。假设你已经有了 <a href="https://linux.cn/article-10458-1.html">课程 1:OK01</a> 操作系统的代码,它将是这一节课的基础。1、等待等待是操作系统开发中非常有用的部分。操作系统经常发现自己无事可做,以及必须要延迟。在这个例子中,我们希望通过等待,让 LED 灯打开、关闭的闪烁可以看到。如果你只是打开和关闭它,你将看到这个视觉效果,因为计算机每秒种可以打开和关闭它好几千次(LCTT 译注:视觉暂留效应会使你难以发觉它的闪烁)。在后面的课程中,我们将看到精确的等待,但是现在,我们只要简单地去消耗时间就足够了。<pre class="prettyprint linenums">mov r2,#0x3F0000wait1$:sub r2,#1cmp r2,#0bne wait1$</pre>sub reg,#val 从寄存器 reg 中的值上减去数字 valcmp reg,#val 将寄存器中的值与数字 val 进行比较。如果最后的比较结果是不相等,那么执行后缀了 ne 的 b 命令。上面是一个很常见的产生延迟的代码片段,由于每个树莓派基本上是相同的,所以产生的延迟大致也是相同的。它的工作原理是,使用一个 mov 命令将值 3F000016 推入到寄存器 r2 中,然后将这个值减 1,直到这个值减到 0 为止。在这里使用了三个新命令 sub、 cmp 和 bne。sub 是减法命令,它只是简单地从第一个参数中的值减去第二个参数中的值。cmp 是个很有趣的…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/26/120026xuuxhsb00kqsubkk.jpg">Media</a>OK02 课程构建于 OK01 课程的基础上,通过不停地打开和关闭 OK 或 ACT LED 指示灯来实现闪烁。假设你已经有了 <a href="https://linux.cn/article-10458-1.html">课程 1:OK01</a> 操作系统的代码,它将是这一节课的基础。1、等待等待是操作系统开发中非常有用的部分。操作系统经常发现自己无事可做,以及必须要延迟。在这个例子中,我们希望通过等待,让 LED 灯打开、关闭的闪烁可以看到。如果你只是打开和关闭它,你将看到这个视觉效果,因为计算机每秒种可以打开和关闭它好几千次(LCTT 译注:视觉暂留效应会使你难以发觉它的闪烁)。在后面的课程中,我们将看到精确的等待,但是现在,我们只要简单地去消耗时间就足够了。<pre class="prettyprint linenums">mov r2,#0x3F0000wait1$:sub r2,#1cmp r2,#0bne wait1$</pre>sub reg,#val 从寄存器 reg 中的值上减去数字 valcmp reg,#val 将寄存器中的值与数字 val 进行比较。如果最后的比较结果是不相等,那么执行后缀了 ne 的 b 命令。上面是一个很常见的产生延迟的代码片段,由于每个树莓派基本上是相同的,所以产生的延迟大致也是相同的。它的工作原理是,使用一个 mov 命令将值 3F000016 推入到寄存器 r2 中,然后将这个值减 1,直到这个值减到 0 为止。在这里使用了三个新命令 sub、 cmp 和 bne。sub 是减法命令,它只是简单地从第一个参数中的值减去第二个参数中的值。cmp 是个很有趣的…
Fedora 28 服务器版的模块化
Fedora 的模块化从两个方面解决了这个问题。Fedora 仍将根据其传统政策发布标准版本。但是,它还将提供一组模块给出流行软件的限定替代版本。Media
via https://linux.cn/article-10479-1.html
Fedora 的模块化从两个方面解决了这个问题。Fedora 仍将根据其传统政策发布标准版本。但是,它还将提供一组模块给出流行软件的限定替代版本。Media
via https://linux.cn/article-10479-1.html
Fedora 28 服务器版的模块化
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/26/155921x1ju12dpxi0mz4aj.jpg">Media</a>什么是模块化所有开源发行版都面临的一个经典难题是“太快/太慢”的问题。用户安装操作系统是为了能够使用其应用程序。像 Fedora 这样的全面的发行版在大量可用软件方面有其优势和劣势。虽然有用户想要的软件包,但可能无法使用其所需的版本。以下是模块化Modularity如何帮助解决该问题。对于某些用户,Fedora 有时升级得太快。其快速发布周期以及尽可能提供最新稳定软件的愿望可能导致与应用程序的兼容性下降。如果因为 Fedora 将 Web 框架升级为不兼容的版本而导致用户无法运行 Web 应用程序,则会非常令人沮丧。对“太快”问题的经典回答是“Fedora 应该有一个 LTS 版本。”然而,这种方法只能解决问题的一半,并使这个难题的另一面变得更糟。有时候 Fedora 对某些用户而言又升级速度太慢。例如,Fedora 的发布可能与其它想要的软件的发布时间不匹配。一旦 Fedora 版本宣布稳定,打包者必须遵守 <a href="https://fedoraproject.org/wiki/Updates_Policy#Stable_Releases">稳定更新政策</a> 并且不能在系统中引入不兼容的更改。Fedora 的模块化从两个方面解决了这个问题。Fedora 仍将根据其传统政策发布标准版本。但是,它还将提供一组模块给出流行软件的限定替代版本。那些处于“太快”阵营的人仍然可以享受 Fedora 的新内核和其它通用平台增强功能。此外,他们仍然可以访问支持其应…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/26/155921x1ju12dpxi0mz4aj.jpg">Media</a>什么是模块化所有开源发行版都面临的一个经典难题是“太快/太慢”的问题。用户安装操作系统是为了能够使用其应用程序。像 Fedora 这样的全面的发行版在大量可用软件方面有其优势和劣势。虽然有用户想要的软件包,但可能无法使用其所需的版本。以下是模块化Modularity如何帮助解决该问题。对于某些用户,Fedora 有时升级得太快。其快速发布周期以及尽可能提供最新稳定软件的愿望可能导致与应用程序的兼容性下降。如果因为 Fedora 将 Web 框架升级为不兼容的版本而导致用户无法运行 Web 应用程序,则会非常令人沮丧。对“太快”问题的经典回答是“Fedora 应该有一个 LTS 版本。”然而,这种方法只能解决问题的一半,并使这个难题的另一面变得更糟。有时候 Fedora 对某些用户而言又升级速度太慢。例如,Fedora 的发布可能与其它想要的软件的发布时间不匹配。一旦 Fedora 版本宣布稳定,打包者必须遵守 <a href="https://fedoraproject.org/wiki/Updates_Policy#Stable_Releases">稳定更新政策</a> 并且不能在系统中引入不兼容的更改。Fedora 的模块化从两个方面解决了这个问题。Fedora 仍将根据其传统政策发布标准版本。但是,它还将提供一组模块给出流行软件的限定替代版本。那些处于“太快”阵营的人仍然可以享受 Fedora 的新内核和其它通用平台增强功能。此外,他们仍然可以访问支持其应…
tmux:适用于重度命令行 Linux 用户的终端复用器
它允许用户在单个窗口中创建或启用多个终端(垂直或水平),当你处理不同的问题时,可以在单个窗口中轻松访问和控制它们。Media
via https://linux.cn/article-10480-1.html
它允许用户在单个窗口中创建或启用多个终端(垂直或水平),当你处理不同的问题时,可以在单个窗口中轻松访问和控制它们。Media
via https://linux.cn/article-10480-1.html
tmux:适用于重度命令行 Linux 用户的终端复用器
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/27/115721l0rp0cn3ptq1u91c.jpg">Media</a>tmux 是终端复用器terminal multiplexer的缩写,它允许用户在单个窗口中创建或启用多个终端(垂直或水平),当你处理不同的问题时,可以在单个窗口中轻松访问和控制它们。它使用客户端-服务器模型,允许在用户之间共享会话,也可以将终端连接到 tmux 会话。我们可以根据需要轻松移动或重新排列虚拟控制台。终端会话可以从一个虚拟控制台自由切换到另一个。tmux 依赖于 libevent 和 ncurses 库。tmux 在屏幕底部提供了一个状态行,它显示当前 tmux 会话的有关信息,例如当前窗口编号、窗口名称、用户名、主机名、当前时间和日期。启动 tmux 时,它会在一个单独窗口上创建一个新的会话,并将其显示在屏幕上。它允许用户在同一个会话中创建任意数量的窗口。许多人说它类似于 screen,但我不这么认为,因为它提供了许多配置选项。<strong>注意:</strong> Ctrl+b 是 tmux 中的默认命令前缀,因此,要在 tmux 中执行任何操作,你必须先输入该前缀然后输入所需的选项。tmux 特性创建任意数量的窗口在一个窗口中创建任意数量的窗格它允许垂直和水平分割分离并重新连接窗口客户端-服务器架构,这允许用户之间共享会话tmux 提供许多配置技巧<strong>建议阅读:</strong><a href="https://www.2daygeek.com/tmate-instantly-share-your-terminal-session-to-anyone-in-seconds/">tmate - 马上与其他人分享你的终端会话</a><a href="https:/…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/27/115721l0rp0cn3ptq1u91c.jpg">Media</a>tmux 是终端复用器terminal multiplexer的缩写,它允许用户在单个窗口中创建或启用多个终端(垂直或水平),当你处理不同的问题时,可以在单个窗口中轻松访问和控制它们。它使用客户端-服务器模型,允许在用户之间共享会话,也可以将终端连接到 tmux 会话。我们可以根据需要轻松移动或重新排列虚拟控制台。终端会话可以从一个虚拟控制台自由切换到另一个。tmux 依赖于 libevent 和 ncurses 库。tmux 在屏幕底部提供了一个状态行,它显示当前 tmux 会话的有关信息,例如当前窗口编号、窗口名称、用户名、主机名、当前时间和日期。启动 tmux 时,它会在一个单独窗口上创建一个新的会话,并将其显示在屏幕上。它允许用户在同一个会话中创建任意数量的窗口。许多人说它类似于 screen,但我不这么认为,因为它提供了许多配置选项。<strong>注意:</strong> Ctrl+b 是 tmux 中的默认命令前缀,因此,要在 tmux 中执行任何操作,你必须先输入该前缀然后输入所需的选项。tmux 特性创建任意数量的窗口在一个窗口中创建任意数量的窗格它允许垂直和水平分割分离并重新连接窗口客户端-服务器架构,这允许用户之间共享会话tmux 提供许多配置技巧<strong>建议阅读:</strong><a href="https://www.2daygeek.com/tmate-instantly-share-your-terminal-session-to-anyone-in-seconds/">tmate - 马上与其他人分享你的终端会话</a><a href="https:/…