2021年11月

使用 Python 或 Bash 将动态数据插入 Jekyll 静态网站中,并且避免创建一个 API 后端。

 title=

静态网站生成器 Jekyll 使用 _config.yml 进行配置。这些配置都是 Jekyll 特有的。但你也可以在这些文件中 用我们自己的内容定义变量,并在整个网站中使用它们。在本文中,我将重点介绍动态创建 Jekyll 配置文件的一些优势。

在我的本地笔记本电脑上,我使用以下命令来服务我的 Jekyll 网站进行测试:

bundle exec jekyll serve --incremental --config _config.yml

结合多个配置文件

在本地测试中,有时需要覆盖配置选项。我的网站的 当前 \_config.yml 有以下设置:

# Jekyll Configuration

# Site Settings
url: "https://notes.ayushsharma.in"
website_url: "https://notes.ayushsharma.in/"
title: ayush sharma's notes ☕ + ? + ?️
email: [email protected]
images-path: /static/images/
videos-path: /static/videos/
js-path: /static/js/
baseurl: "" # the subpath of your site, e.g. /blog

由于本地的 jekyll serve URL 是 http://localhost:4000,上面定义的 URL 就不能用了。我可以创建一个 _config.yml 的副本 _config-local.yml 并替换所有的值。但还有一个更简单的选择。

Jekyll 允许指定多个配置文件,后面的声明覆盖前面的声明。这意味着我可以用以下代码定义一个新的 _config-local.yml

url:""

然后我可以把上述文件和我的主 _config.yml 结合起来,像这样:

bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml

通过合并这两个文件,这个 jekyll serveurl 的最终值将是空白。这就把我网站中定义的所有 URL 变成了相对的 URL,并使它们在我的本地笔记本电脑上工作。

C结合动态配置文件

一个简单的例子,假设你想在你的网站上显示当前日期。它的 bash 命令是:

> date '+%A, %d %B %Y'
Saturday, 16 October 2021

我知道我也可以 使用 Jekyll 的 \_config.yml 的自定义内容。我将上述日期输出到一个新的 Jekyll 配置文件中。

my_date=`date '+%A, %d %B %Y'`; echo 'my_date: "'$my_date'"' > _config-data.yml

现在 _config-data.yml 包含:

my_date: "Saturday, 16 October 2021"

我可以把我的新配置文件和其他文件结合起来,在我的网站上使用 my_date 变量。

bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml,_config-data.yml

在运行上述命令时,{{ site.my_date }} 输出其配置的值。

结论

上面的例子很简单,但可能性是无穷的。Bash、Python 和其他编程语言可以动态地生成 Jekyll 配置文件。然后我可以在 buildserve 过程中结合这些文件。

对于 findmymastodon.com我使用 Python 来获取 Mastodon 的用户统计数据。然后我把这些写进一个新的 \_config-data.yml 文件(目前是手动)。最后,主页和其他页面从配置文件中显示这些。这样,我就可以利用一个动态的后台,并且仍然保持我所喜欢的所有静态网站的优点。

我希望这能为你自己的静态网站激发一些想法。Jamstack 对于静态网站是很好的,但你可以避免为动态内容创建整个 API 后台。为什么不使用一个构建作业来创建带有更新内容的配置文件呢?这可能不适合每一种情况,但少一个 API 意味着更少的基础设施移动部件。

我希望这能在你的下一个静态网站项目中给你一些帮助。继续阅读,并祝你编码愉快。

这篇文章最初发布在 作者的网站 上,并经授权转载。


via: https://opensource.com/article/21/11/jekyll-config-files

作者:Ayush Sharma 选题:lujun9972 译者:geekpi 校对:wxy

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

成功利用内核漏洞以实现提权的安全研究人员将获得 31,337 美元至 50,337 美元的奖金。

谷歌的平台大量使用了 Linux,尤其是在安卓及其庞大的服务器方面。多年来,谷歌一直青睐开源项目和计划。

最近,这家科技巨头赞助了 100 万美元,用于资助 Linux 基金会开展的一个以安全为重点的开源项目,更多细节参见我们 原来的报道

而现在,谷歌将在未来三个月内将赏金奖励增加两倍,以奖励那些致力于寻找有助于实现提权(即,当攻击者利用一个错误/缺陷获得管理员权限)的内核漏洞的安全研究人员。

毫无疑问,总会有某种形式的错误和缺陷困扰着内核的安全和开发。幸运的是,来自各个组织和个人的数百名安全研究人员致力于改善其安全状态,这就是为什么这些漏洞不一定会在野外被利用。

谷歌在奖励安全研究人员方面有着良好的记录,但它在接下来的三个月里加大了力度,宣布了 **31,377 美元的基本奖励,最高可达 50,377 美元。

计划细节和奖励

这些漏洞利用可以针对目前已修补的漏洞和未修补的新漏洞,以及采用新的技术。

31,337 美元 的基本奖励用于利用已公开了补丁的漏洞进行提权的技术。如果发现未修补的漏洞或新的利用技术,奖励可高达 50,337 美元

此外,该计划还可以与 Android VRP 和“补丁奖励”计划一起使用。这意味着,如果该漏洞在安卓系统上发挥作用,除了这个计划之外,你还可以获得高达 25 万美元的奖励。

如果你希望了解更多关于安卓系统的信息,你可以在他们的 官方门户网站 上了解。

增加的奖励将在未来三个月内开放,也就是说,直到 2022 年 1 月 31 日。

安全研究人员可以通过他们的 官方博文 来设置实验室环境,并在他们的 GitHub 官方网页 上阅读更多关于要求的内容。

总结

这项计划是谷歌的一项出色的举措。毫无疑问,它将吸引并惠及许多安全专家和研究人员。

不要忘记,Linux 内核的安全状况将最终受益。


via: https://news.itsfoss.com/google-linux-kernel-bounty/

作者:Rishabh Moharir 选题:lujun9972 译者:wxy 校对:wxy

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

CentOS Stream 结出了第一个果实:RHEL 9 Beta

虽然许多 CentOS 用户对 CentOS 成为 RHEL 的上游感到不满,但 RHEL 9 表明新的 CentOS 模式已经实现了红帽公司对它的期望。RHEL 9 发布了第一个测试版,它基于 Linux 5.14 内核,支持四种架构:英特尔/AMD 64 位、ARM 64 位等等。红帽公司最近取消了注册 RHEL 测试版的要求。如果你有任何种类的红帽账户(包括免费的红帽开发者计划),你就可以无限制地获得红帽测试订阅。当然,以前的 CentOS 用户现在有 RHEL 克隆的 Rocky Linux 和 AlmaLinux,或者也可以转向 CloudLinux 来支持 CentOS 8。

老王点评:虽然 CentOS 落幕,CentOS Stream 成了 RHEL 的上游,这给了许多类 CentOS 发行版一个新机会,但是 CentOS Stream/RHEL 的这个新模式也许也能获得成功。

自托管的 GitLab 服务器被利用发动 DDoS 攻击

Google 安全工程师发现了 这次 DDoS 攻击,攻击流量一度超过 1 Tbps。该漏洞位于 ExifTool 库内,它被用于移除上传到 Web 服务器中的图像元数据。GitLab 已在今年 4 月将其修复,但不是所有自托管服务器打上了补丁。有大约 6 万 GitLab 自托管服务器联网,而其中一半的服务器没有打上该补丁。利用该漏洞的概念验证代码在今年 6 月公布,而攻击也是始于 6 月。

老王点评:漏洞披露机制虽然推动厂商会加速解决安全问题,但是也给存在潜在缺陷的产品带来了更大的攻击面。

微软为 Excel 增加新的自定义数据类型支持

Excel 在历史上一直是用来组织文本和数字的,但几年来,微软一直在努力提高 Excel 支持的数据类型。去年,它推出了动态数组和数组公式,并通过链接数据类型支持股票、地理和 Wolfram 等数据。为此,微软推出了几个新的 JavaScript API,允许开发者使用 更多的数据类型

老王点评:作为世界上使用最多的“编程语言”,Excel 能进一步支持各种丰富的数据类型,这应该是微软在无代码产品方面的重要动作。

如果你 在 Ubuntu 上运行 Java 程序 ,使用 Eclipse、Maven 或 Netbeans 等等,你将需要将 JAVA_HOME 环境变量设置为正确的路径。否则,你的系统将会向你控诉 “java\_home 环境变量没有设置”。

在这篇初学者教程中,我将向你展示在 Ubuntu 上正确地设置 JAVA_HOME 变量的步骤。这些步骤应该也适用于大多数的其它的 Linux 发行版。

设置过程包含这些步骤:

  • 确保已安装 Java 开发工具包(JDK)。
  • 查找 JDK 可执行文件的正确的位置。
  • 设置 JAVA_HOME 环境变量,并永久更改它。

步骤 1: 核查 JDK 是否已经安装

核查 Java 开发工具包(JDK)是否已经安装在你的 Linux 系统上的最简单的方法是运行这个命令:

javac --version

上面的命令将核查 Java 编译器的版本。如果已经安装了 Java 编译器,它将显示 Java 版本:

Java Compiler is installed

如果上面的命令显示像这样未找到 javac 命令的错误信息,你得先安装 JDK :

Java Compiler is not installed

如果在你的系统上并没有安装 Java 编译器,使用这条命令来安装 Java 开发工具包 (JDK):

sudo apt install default-jdk

这将在你当前的 Ubuntu 版本中安装默认的 Java 版本。如果你需要一些其它版本的 Java 版本,那么你必须 在 Ubuntu 中安装 Java 时 具体指出它的版本。

在你确保 Java 编译器存在于你的系统之中后,接下来就到了查找其位置的时候了。

步骤 2: 获取 JDK 可执行文件(Java 编译器)的位置

可执行文件通常位于 /usr/lib/jvm 目录之中。但我不会让你来玩一个猜谜游戏,让我们来找出 Java 可执行文件的路径。

使用 which 命令 来获取 Java 编译器可执行文件的位置:

which javac

在这里的问题是,它给出的位置实际上是一个 符号链接 。你将需要按照下图执行几次:

最简单的方法是直接使用下面这条命令跟随符号链接来以获取实际的可执行文件:

readlink -f `which java`

readlink 命令会跟随一个符号链接。我在 which java 的外侧使用 readlink 将会使用 which java 的输出来替换要检查的符号链接,这被称之为命令替换。因此,在这个实例中,上面的命令大体上相当于 readlink -f /usr/bin/java

在我的示例中,可执行文件的位置是 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 。对你来说可能会不一样。在你的系统中,复制上述命令所获取的正确的路径。你知道,你可以 在 Ubuntu 的终端中复制和粘贴

步骤 3: 设置 JAVA\_HOME 变量

现在,你已经获取了位置,使用它来设置 JAVA_HOME 环境变量:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin/java

核查 JAVA_HOME 目录的值:

echo $JAVA_HOME

尝试在同一个终端中运行你的 Java 程序或工程,并查看它是否工作。

这尚未结束。你刚刚声明的 JAVA_HOME 环境变量是临时的。如果你关闭这个终端或开始一个新的会话,它将会再次变成空的。

为了“永久地”设置 JAVA_HOME 变量,你应该将其添加到你的家目录中的 .bashrc 文件中。

你可以 在 Linux 终端中使用 Nano 编辑器来编辑文件。 如果你不想使用它,并想采取一种简单的复制和粘贴的方法,使用下面的命令:

首先备份你的 .bashrc 文件(以防万一你把它弄坏了,你还可以将其再恢复回来):

cp ~/.bashrc ~/.bashrc.bak

接下来,使用 echo 命令来追加 在这一节开头使用的 export 命令。你应该适当地更改下面的命令,以便其正确地使用你的系统所显示的路径

echo "export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin/java" >> ~/.bashrc

验证它已经被正确地添加到文件的结尾处:

tail -3 ~/.bashrc

上面的 tail 命令 将显示所具体指定文件的最后 3 行。

这里是上面的三个命令的全部的输出:

现在,即使你退出会话或重新启动系统,JAVA_HOME 环境变量都仍将设置为你所具体指定的值。这就是你所想要的,对吧?

注意,如果你将来更改默认的 Java 版本,你将需要更改 JAVA_HOME 环境变量的值并将其指向正确的可执行文件的路径。

我希望这篇教程不仅会帮助你设置 JAVA_HOME 环境变量,也会教会你如何完成这项工作。

如果你仍然面临难题或者有一些疑问或建议,请在评论区告诉我。


via: https://itsfoss.com/set-java-home-ubuntu/

作者:Abhishek Prakash 选题:lujun9972 译者:robsean 校对:wxy

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

这是一篇快速提示,旨在给 Ubuntu 的新用户解释构建基础包是什么、它的用处和安装步骤。

在 Ubuntu 中安装构建基础包(build-essential),只需要在终端中简单输入这个命令:

sudo apt update && sudo apt install build-essential

但围绕它有几个问题,你可能想知道答案:

  • 什么是构建基础包?
  • 它包含什么内容?
  • 为什么要安装它(如果安装的话)?
  • 如何安装它?
  • 如何删除它?

什么是 Ubuntu 中的构建基础包?

构建基础包(build-essential)实际上是属于 Debian 的。在它里面其实并不是一个软件。它包含了创建一个 Debian 包(.deb)所需的软件包列表。这些软件包包括 libcgccg++makedpkg-dev 等。构建基础包包含这些所需的软件包作为依赖,所以当你安装它时,你只需一个命令就能安装所有这些软件包。

请不要认为构建基础包是一个可以在一个命令中神奇地安装从 Ruby 到 Go 的所有开发工具的超级软件包。它包含一些开发工具,但不是全部。

你为什么要安装构建基础包?

它用来从应用的源代码创建 DEB 包。一个普通用户不会每天都去创建 DEB 包,对吗?

然而,有些用户可能会使用他们的 Ubuntu Linux 系统进行软件开发。如果你想 在 Ubuntu 中运行 c 程序,你需要 gcc 编译器。如果你想 在 Ubuntu 中运行 C++ 程序,你需要 g++ 编译器。如果你要使用一个不寻常的、只能从源代码中获得的软件,你的系统会抛出 “make 命令未找到的错误”,因为你需要先安装 make 工具。

当然,所有这些都可以单独安装。然而,利用构建基础包的优势,一次性安装所有这些开发工具要容易得多。这就是你得到的好处。

这就像 ubuntu-restricted-extras 包允许你一次安装几个媒体编解码器

现在你知道了这个包的好处,让我们看看如何安装它。

在 Ubuntu Linux 中安装构建基础包

在 Ubuntu 中按 Ctrl+Alt+T 快捷键打开终端,输入以下命令:

sudo apt update

使用 sudo 命令,你会被要求输入你的账户密码。当你输入时,屏幕上没有任何显示。这没问题。这在大多数 Linux 系统中都是这样的。盲打输入你的密码,然后按回车键。

apt update 命令刷新了本地软件包的缓存。这对于一个新安装的 Ubuntu 来说是必不可少的。

之后,运行下面的命令来安装构建基础包:

sudo apt install build-essential

它应该显示所有要安装的软件包。当要求确认时按 Y

等待安装完成。就好了。

从 Ubuntu 中删除构建基础包

保留这些开发工具不会损害你的系统。但如果你的磁盘空间不足,你可以考虑删除它。

在 Ubuntu 中,由于有 apt remove 命令,删除软件很容易:

sudo apt remove build-essential

运行 autoremove 命令来删除剩余的依赖包也是一个好主意:

sudo apt autoremove

你现在知道了所有关于构建基础包的基础(双关语)。请享受它吧~


via: https://itsfoss.com/build-essential-ubuntu/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

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

在元宇宙中做 PPT 和 Excel

目前最热的流行词某过于“元宇宙”了。除了连名字都改成 “Meta” 的 Facebook 之外,微软也在积极 拥抱元宇宙,它正在调整其标志性的软件产品,以创建一个更加企业化的元宇宙版本。第一个产品是具有数字化身功能的聊天和会议程序 Teams,该版本正在进行测试,将于 2022 年上半年推出。用户也能在这个空间中使用 PowerPoint 和 Excel。当然,除了这些企业级需求外,微软也会将其游戏产品搬到元宇宙里面。

老王点评:哪怕是在虚拟世界,你也得工作。

用超级计算机应对人类抗生素耐药性

像红霉素这样的抗生素曾经起到了巨大作用,但是随着抗生素的滥用,很多细菌都对抗生素产生了耐药性。据估计,每年约有 70 万人死于抗生素耐药细菌,而这一数字预计将上升至数百万。朴茨茅斯大学研究团队的 一项研究 通过重新设计现有抗生素来克服细菌耐药性机制,利用超级计算机来对抗细菌的进化能力,最终解决耐药性问题。该团队已经证明,他们的最佳候选药物(尚未进行临床试验)对测试菌株的活性是红霉素和克拉霉素的 56 倍。其候选药物对世卫清单上排名前三的细菌依然有效,而这三种细菌已经对红霉素和克拉霉素产生耐药性。

老王点评:有人曾经问超级计算机有什么用?这就是超级计算机的用处之一。

小偷机器人正在窃取你的 2FA 代码

诈骗者使用了一种机器人,通过电话 冒充苹果支付、贝宝、亚马逊、Coinbase 和各种银行的来电,欺骗受害者输入其 2FA 代码。电话中说,“有人试图使用你的账户消费。需要验证你的身份以阻止转账”。并说:“为了保护你的账户,请输入我们现在发给你的移动设备的代码。”在输入一串六位数字后,该声音说:"谢谢你,你的账户已经得到保护……。你现在可以挂断了。”以前往往需要黑客直接与受害者对话,在电话中假装是银行或相关支付机构,而这些机器人大大降低了绕过多因素认证的门槛。

老王点评:真是科技助长坏人。无论如何,你的多因素认证代码不要给任何人,除非是你主动进行的操作。