使用 GDM 设置来自定义 GNOME 中的登录屏幕

没错,即使是 GNOME 登录屏幕也可以自定义。这里有一个方便的实用工具,可以让事情变得更简单。

从停靠区到 GRUB 屏幕,GNOME 都可以根据你的喜好进行定制。

登录界面也在此列,因为一款名为 “ GDM 设置 GDM Settings ”的新工具可让你更改 GNOME 登录界面的外观并调整其功能。

你可以更改壁纸、主题、图标、时间格式、顶部面板项目等。你还可以在登录界面启用轻击功能(我喜欢这个)。

在本教程中,你将了解安装此工具的步骤以及如何使用它来更改 GDM 登录屏幕的各个方面。

不用说,你必须使用 GNOME 桌面环境和 GDM 显示管理器才能按照此处的说明进行操作。

? 以这种方式使用设置可能会产生问题。请使用 Timeshift 备份系统设置。如果你容易手忙脚乱,不喜欢排除故障,这篇文章就不适合你。

使用 GDM 设置工具进行调整

让我们首先看看你可以使用这个很棒的程序进行哪些更改。

1、更改 shell 主题、图标和壁纸

你可以更改登录屏幕的主题、图标和壁纸。这是一个例子。

要更改主题,你应该先下载它。可以从 GNOME Look 网站 获取一个。

接下来,确保主题位于 /usr/share/themes 中。存储在 ~/.themes 中的主题对 GDM 设置应用是不可见的。

在 GDM 设置应用中,转到 “ 外观 Appearance ” 选项卡并选择 “ 主题 Themes ”(Shell/图标/光标)。

GDM 主题设置

如果要设置壁纸,请将 “ 背景 Background ” 更改为 “ 图像 Image ”,然后从文件浏览器浏览图片。

更换壁纸

完成后,单击 “ 应用 Apply ”。这将要求输入密码。请在出现提示时提供。

你将收到注销通知以应用更改。注销后,更改将可见。

注销提示

? 你可以更改所有设置然后单击“应用”,或者每次设置后单击“应用”。如果按“应用”,则会提示你注销,每次都需要重新登录并再次打开该设置应用。

2、更改字体

在更改字体之前,你需要为所有用户在系统上安装该字体。

为了确保这一点,请将下载的自定义字体文件粘贴到 /usr/local/share/fonts,然后使用以下命令创建字体缓存:

fc-cache -f -v

现在,打开 GDM 设置并转到“ 字体 Fonts ”选项卡。在那里,你可以设置字体、抗锯齿设置等。

更改字体设置

你可以看到新字体现已设置为你的登录屏幕。

自定义字体

3、更改顶部面板的颜色

要更改顶部面板颜色,请转到侧栏中的 “ 顶部栏 Top Bar ” 选项。在 “ 调整 Tweaks ” 下,启用 “ 更改背景颜色 Change Background Color ” 按钮,然后设置所需的颜色。

更改顶部面板颜色设置

将顶部栏的文本颜色更改为适合你选择的背景的颜色也同样重要。

更改顶栏颜色

4、更改时间显示格式

使用下拉菜单将时钟更改为 24 小时或 12 小时格式。

更改时间显示格式设置

此外,你可以通过切换相应的按钮使秒在顶部栏上可见。

顶栏显示秒

5、启用登录屏幕轻击

在大多数发行版中,这是默认行为。即使在系统中启用了轻击,GNOME 登录界面也需要使用鼠标左键点击。

要更改此设置,请转到鼠标和触摸板部分并启用 “ 轻击 Tap to Click ” 按钮。

启用屏幕点击

在同一菜单上,你可以选择调整鼠标光标大小(如果你觉得它很小)。

更改鼠标光标大小

6、启用夜灯

你可以为 GDM 启用预定的夜灯。

转到 “ 显示 Display ”,打开 “ 夜灯 Night Light ” 按钮。现在,安排日落到日出或你选择的方便时间。

启用夜灯

7、添加徽标和欢迎消息

转到 “ 登录屏幕 Login Screen ” 选项卡,然后启用 “ 启用徽标 Enable Logo ” 按钮。这将为你提供一个浏览图像的按钮。

添加 logo

选择图像并按 “ 应用 Apply ”。

? 在我的系统显示器上,尺寸高达 128×128 像素的图像看起来是可以接受的,超出这个尺寸对我来说看起来很大。因此,请相应地选择尺寸。

应用图像后,要设置欢迎消息,请启用欢迎消息按钮,然后添加你想要显示的文本。

添加欢迎信息

当你选择用户输入密码时,将显示该消息。

登录屏幕欢迎消息

8、导出和导入设置

如果你想在其他系统上应用相同的设置,你可以导出设置并将其导入到运行 GDM 设置工具的其他系统上。

单击左上角的菜单,然后选择 “ 导出到文件 Export to file ”。

导出到文件

将文件命名为 “.ini” 并将其保存在安全的地方。你可以稍后导入。

命名文件

9、重置所有设置

不喜欢你所做的更改? 有一个简单的方法可以恢复默认值。

要重置调整,请单击左上角的菜单并选择 “ 重置设置 Reset settings ”。

重置设置

现在,按 “ 应用 Apply ”。它会询问你的密码。提供后,系统将提示你注销。

你可以看到,所有更改均已恢复。

10、更多设置

还有其他可用的调整,例如:

  1. 通过 “ 顶栏 Top Bar 电源 Power 显示电池百分比 Show Battery Percentage ”,在顶栏显示电池百分比。
  2. 通过 “ 登录屏幕 Login Screen 禁用用户列表 Disable User List ”,在登录屏幕上禁用或启用用户列表。
  3. 通过 “ 电源 Power ” 选项卡更改屏幕关闭时间、暂停时间和其他电源设置。

安装 GDM 设置工具

既然你知道该工具可以进行哪些调整,你可能想自己尝试一下。让我们看看如何安装它。

? 在 Ubuntu / Pop!_OS 上,GDM 设置工具对我不起作用。我在 Debian 12 Bookworm 上以 Flatpak 应用使用。

GDM 设置工具可以作为 Flatpak 安装。

flatpak install flathub io.github.realmazharhussain.GdmSettings

或者,它可以作为 AppImage 提供。

对于 Arch Linux 用户,请使用 AUR 中的任何 AUR 助手进行安装。

yay -S gdm-settings

结论

登录屏幕并不是每个人都可以定制的。除了“轻击”更改之外,大多数其他更改都只是外观更改。

总的来说,对于喜欢自定义设置的每个角落的人们来说,有这样的选择是件好事。

?️ 你是那些痴迷于定制的 Linux 用户之一吗? 你会尝试 GDM 设置工具吗?

(题图:DA/fb8961d0-852d-4d89-b5b2-d2912b38f6f8)


via: https://itsfoss.com/customize-gdm-login/

作者:Sreenath 选题:lujun9972 译者:geekpi 校对:wxy

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

硬核观察 #1254 得益于人工智能驱动的狂热,标普 500 指数创历史新高

#1 得益于人工智能驱动的狂热,标普 500 指数创历史新高

据《华盛顿邮报》报道,周五该指数创下历史收盘新高,“反映了在经济出奇稳定的背景下,一些大型科技公司的惊人涨幅”。该指数收于 4839.81 点,超过了 2022 年 1 月创下的收盘纪录。在过去的 12 个月里,该指数上涨了 21.83%。分析人士指出,华尔街的人工智能热潮可与上世纪 90 年代末的互联网热潮相媲美。科技公司,包括一些与人工智能工作密切相关的公司,领涨标普 500 指数。苹果、微软、Alphabet、亚马逊、英伟达、特斯拉和 Meta 这七家被称为 “七巨头” 的大型科技股在 2023 年平均上涨了 75%,占 2023 年底该指数总市值的 30%。

(插图:DA/843e9030-3972-41fd-963b-b86df6138af5)

消息来源:MSN

老王点评:终究还是要看高科技啊。

#2 龙架构为 Linux 6.8 提供初步 Rust 内核支持

在周五进行的 Linux 6.8 合并窗口中,龙芯提交的补丁提供了初步的 Rust 内核支持。该拉取请求已被合并到主线中。随着 Rust 编程语言开始适用于内核编程,看到更多的 Linux 内核架构支持 Rust 是个好消息。Linux 6.8 还拥有首个 Rust 编写的网络 PHY 驱动程序,以替代现有的 C 语言驱动程序。

(插图:DA/4f2de7bb-e8c2-4f71-beca-52cea4744c35)

消息来源:Phoronix

老王点评:这一次龙芯和龙架构走在了前列。

#3 NPM 用户每周下载 21 亿个过时软件包

开源软件可能会因为各种原因停止接受更新,废弃、归档和 “孤儿” 的 NPM 软件包可能包含未修补和/或未报告的漏洞。根据对 NPM 注册表中下载次数最多的前五万个软件包的统计分析,估计每周下载废弃软件包达 21 亿次。这五万个软件包中,约有 4100 个(8.2%)属于 “正式” 废弃的软件包。然而,如果将 “归档” 的软件包也算作 “废弃” 的话,受影响的软件包数量增至 6400 个(12.8%)。再加上无法访问链接的软件包,数量将达到 10,600 个(21.2%)。

(插图:DA/24c7d7a7-9bec-408c-a4dd-129c465bdd0a)

消息来源:SC 杂志

老王点评:开发者/维护者有责任向用户传达这种维护状态。

曾经,Lotus Notes 几乎能满足公司的一切需求

现在,它的功能分散在无数供应商之间。

技术的进步似乎是线性的,新的技术总是会取代旧的。从这个角度来看,新技术总是更好,因为我们假定新技术是基于旧技术,并对其进行了改进。

但当你年纪渐长,你就会开始意识到这并非总是如此。进步并不总是直线前进的。只要看看个人电脑是如何基本上取代之前笨重的大型机和微型机,然后再慢慢积累那些老系统的先进功能,如多用户支持、冗余和安全性等。

还有一些技术似乎走在了时代的前列,或者说成为业界老鸟们怀念的对象,因为它们提供了当今高科技世界所缺少的东西。

其中之一就是 Lotus Notes,提到它可能会让读者嗤之以鼻,因为它确实有不少缺点;例如,它的资源贪婪让一些用户将这个程序称为 “Notice Loads”。

不过,你几乎可以用 Lotus Notes(加上其 Domino 服务器后端)管理整个公司,许多公司也确实是这样做的。这个程序是电子邮件、数据库和工作流的奇特组合,允许公司在 Notes 里面设置定制的应用,并将它们部署给相关的工作人员群体。

笔者曾在一家广泛使用 Notes 的出版公司工作,我发现它在当时非常有用。它不仅提供了电子邮件,还提供了内部电话簿、联系人数据库、请假系统、公司手册等,所有这些都可以通过单个应用程序和单套凭证进行访问,而这远在单点登录成为风潮之前。

如今,即使不是全部,也是大部分,这些功能都通过独立的基于网络的应用程序提供,每个程序都需要不同的登录方式,因此你需要记住几十个不同的凭证,而且每个凭证都有不同的用户界面。因此,我想你当可以把网络浏览器看作是一个应用程序运行时,它是 Notes 的最终继承者。

如果你想了解 Notes 有多有用,可以参考笔者作为评论编辑,使用过的一个应用。我们的杂志(还记得纸质杂志吗?多么古老啊!)过去每个月的月刊都会刊登大约 30 页的产品评论,我们在 Notes 上建立了一个数据库来帮助跟踪所有内容。

过去,待评论的计算机套件运抵到出版商的办公室后,会给一个序列号,并由工作人员记录到仓库。作为评论编辑,我会在 Notes 上收到产品已到的通知,这样评论编辑就可以知道产品正在等待他们的指指点点,我也可以把它添加到目前正在制作的那期杂志的产品列表中。

出版商的内部摄影师(当时是九十年代,出版商比较有钱)可以看到同一张表格,因此他们知道该为该期杂志拍摄哪些产品。这个工作流程是在 Lotus Notes 上内部构建的。公司里的其他人也有许多类似的应用程序可以使用。

也许我对 Notes 的记忆有些美化,但我记得由于邮件信息链的会话视图,管理邮件变得非常容易,而后来我在一家使用 Outlook 的公司工作时,感觉真是大步后退。

然而,在新千年的时候,Notes 已经开始显得有点笨拙和过时,它的庞大用户群体也开始减少,因为企业开始转向微软 Exchange Server 和 Outlook 的组合,而后者在工作流程方面也许更容易与微软 Office 应用程序和 VBA 集成。

最终,IBM 在 1995 年收购了 Lotus,而在 2012 年,IBM 宣布将完全停用 Lotus 品牌,并于 2018 年将 Notes 出售给印度的软件公司 HCL Technologies。

该平台依然存在,HCL 去年发布了 Domino 14.0,正如 The Register 当时评论的那样,这说明了在该平台上构建的定制工作流程的 “粘性”。

有一家公司出版了 Lotus Notes 从诞生到现在的 详细历史,感兴趣的人可以去看看。

但 Notes 并不是所有还在使用的软件中最古老的。据说,为美国国防部(DoD)管理合同的美国国防合同管理机构(DCMA)有一个名为合同管理服务机械化(MOCAS)的程序,该程序于 1958 年推出,因此它的历史几乎是 Notes 的两倍。

(题图:DA/51b205bf-c1eb-4c58-8663-ff76a64162e2)


via: https://www.theregister.com/2024/01/19/remembering_lotus_notes/

作者:Dan Robinson 译者:ChatGPT 校对:wxy

使用 Kate 编写文档

Kate(KDE Advanced Text Editor)是一款自由开源的文本编辑器,适用于 Linux、Windows 和 macOS。

对于文档编写者来说,Kate 集成的 Git 功能可以帮助简化编写过程。你无需记住 Git 命令,也无需在每次更改文件或切换分支时在终端中输入它们。

本文重点为从事各种 Fedora 文档仓库的贡献者介绍 Kate 的主要功能。这些功能可以扩展到其他文档仓库。

将 Kate 与你的仓库一起使用的准备工作

  1. 将 SSH 密钥添加到 Pagure、GitLab 或 GitHub 上的帐户设置中。
    • 在 Pagure 上,转到 我的设置 My Settings SSH 密钥 SSH Keys 添加 SSH 密钥 Add SSH Key
    • 在 GitLab 上, 首选项 Preferences 用户设置 User Settings 添加 SSH 密钥 Add an SSH Key
    • 在 GitHub 上, 设置 Settings SSH 和 GPG 密钥 SSH and GPG keys 新的 SSH 密钥 New SSH key
  2. 复刻项目:转到上游仓库并选择 “ 复刻 Fork ” 按钮
  3. 克隆仓库
    • 在你的分叉仓库中,选择 “ 使用 SSH 克隆 Clone with SSH ”。
    • 接下来,将该链接复制到剪贴板并将其粘贴到终端中的 GIT URL 中。
    • 克隆仓库时,你可以指定新目录名称作为附加参数。$ git clone <GIT URL> 新目录
  4. 安装 Kate。如果你是 Linux 用户,请转到发行版的包管理器来安装 Kate。如果你使用 Fedora Linux,我们推荐 Fedora Linux RPM 版本或 Flatpak。

会话

Kate 文本编辑器中的会话功能可以将单独的项目分组在一起,并帮助你在单个视图中处理多个文档仓库。

要将仓库保存在会话中:

转到 “ 文件 File ” 下拉菜单 – 选择 “ 打开文件夹 Open folder ” – 选择克隆的目录。

从 “ 会话 Sessions ” 下拉菜单中 – 选择 “ 保存会话 Save session ” – 输入会话名称 – 按 “ 确定 OK ”。

在左侧窗格中,单击 “ 项目列表 project list ” 保存到新会话“Magazine”。下次打开 Kate 时,保存到会话中的克隆仓库将重新出现。

Sessions Menu

使用状态栏签出分支

使用 Kate 编辑器,你可以在状态栏和弹出屏幕上切换分支或创建新分支。

当前分支显示在状态栏的右下角。

要创建新分支,请选择 “Main” 分支。从弹出菜单中选择 “ 创建新分支 Create New Branch ” 并输入新分支名称。

Popup menu showing Create New branch

对 AsciiDoc 高亮显示的内置支持

具有 AsciiDoc 扩展名的文件将使用 asciidoc.xml 中的规则自动高亮显示。你不需要安装外部插件。

即时拼写检查

如果你希望在输入时自动进行拼写检查,请按 Ctrl + Shift + O。此组合键将打开和关闭拼写检查。

Git 工具视图

左侧窗格中的工具视图显示每个打开文件的 Git 状态。

Show diff

已暂存 Staged ” 表示文件已添加(与 Git 添加相同),并且如果你选择顶部的 “ 提交 Commit ” 按钮,文件将被提交。

已修改 Modified ” 显示尚未暂存的更改。

单击左侧面板顶部的 “ 提交 Commit ” 按钮以显示该提交的差异。这将在提交工具视图中打开选定的提交。如果你想查看提交中的所有更改,请右键单击并选择 “ 显示完整提交 Show Full Commit ”,添加一个提交消息。

Git “ 推送 Push ” 按钮在 “ 提交 Commit ” 按钮的右边。Git “ 拉取 Pull ” 按钮在 “ 推送 Push ” 按钮的右边。

选择 “ 刷新 Refresh ” 图标(圆圈箭头)以查看暂存文件和提交的情况。

集成终端

F4 或选择 “ 终端 Terminal ” 按钮可打开和关闭集成终端。

你可以通过集成终端使用构建脚本和 Vale linter,将你的写作提升到一个新的水平,确保文档质量。

步骤 1. 运行构建脚本

要在本地检查文档质量,你可以在集成终端中运行构建和预览脚本。构建和预览脚本可让你准确查看更改如何通过 Antora 静态站点生成器在文档页面中发布。

注意:检查 Fedora 文档仓库的 README 页面,为构建脚本和说明使用正确的文件名。下面是一个例子:

要构建和预览站点,请运行:

$ ./docsbuilder.sh -p

结果可访问 http://localhost:8080

要停止预览:

$ ./docsbuilder.sh -k
步骤 2. 对你的文本运行 Vale

Vale 是一个命令行工具,用于检查文本是否符合定义的样式指南。参考该 指南 在本地运行 Vale。

鸣谢

非常感谢 KDE 开发人员 Nicco,他的视频教程频道 “Nicco loves Linux” 给了我很多灵感。

本文使用的 Kate 版本为 23.08.3

上游文档

以下是本文使用的 Fedora 文档 Git 仓库:

(题图:DA/519568d2-a224-4075-a751-a1a8bc702079)


via: https://fedoramagazine.org/writing-docs-with-kate-and-git/

作者:Hank Lee 选题:lujun9972 译者:geekpi 校对:wxy

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

硬核观察 #1253 海尔要求开发者下架开源的家庭助理插件

#1 海尔要求开发者下架开源的家庭助理插件

海尔向一名德国开发人员发出了一份移除通知,要求他立即从 GitHub 平台上删除他为该公司家电产品开发的 家庭助理 Home Assistant 集成插件。“家庭助理”是一个开源的家庭自动化平台,用户可以通过一个集中的界面控制智能家居设备并使其自动化。除了便利性和成本外,该平台还提供了同类商业应用程序所不具备的卓越安全和隐私选项。在通知中,海尔声称“这些插件正在以未经授权的方式”使用其服务,对该公司“造成了重大经济损失”,侵犯了海尔的知识产权,要求开发者“立即停止和终止与开发和分发这些插件有关的所有非法活动”,以避免进一步的法律诉讼。

(插图:DA/8f1893ad-26f3-4a81-ba82-082d55411b91)

消息来源:Bleeping Computer

老王点评:愿开源开发者们不要为这种公司开发任何相关软件,以免惹火上身。大家知道那些家电厂商是支持开源软件的吗?

#2 ReiserFS 作者在狱中回应被内核移除

ReiserFS 文件系统作者 Hans Reiser 因谋杀妻子被判处监禁。去年底,他在狱中回复了一封长长的纸质信函,回应了内核的相关讨论,在信中对自己的罪行表示了道歉,称自己已经是不同的人了。他随后讨论了对 ReiserFS 的贬低以及他对 Reiser4 的希望,对曾使用 ReiserFS 的发行版 SUSE 没能在市场上取得成功而遗憾。在 Linux 6.6 中,ReiserFS 已被正式标记为“过时”,将在未来几年来从主线内核中移除。

(插图:DA/2746e103-ffc0-4bd8-a44e-71c5f68ebc0e)

消息来源:Phoronix

老王点评:可惜了。

#3 谷歌推出画圈即搜索的“画圈搜索”功能

谷歌最近推出的“ 画圈搜索 Circle To Search ”功能,可以让你在手机屏幕上圈出某样东西,然后点击一个按钮,即可通过谷歌搜索你圈出的东西。该功能将首先在谷歌和三星的五款手机上推出。它可以设备上的任何地方搜索,而无需打开谷歌应用。它也可以结合谷歌的“多重搜索”功能,你可以用圈出的图片和文字组合搜索。谷歌称,当你想知道 “为什么” 而不仅仅是 “是什么” 时,多重搜索就是你需要的工具。

(插图:DA/16af5a4f-cb25-4e9a-8c6a-c0b4dbb66a9c)

消息来源:The Verge

老王点评:看起来是有趣的功能,尤其是和 AI 结合起来的话会更有用。

Git 提交是差异、快照还是历史记录?

大家好!我一直在慢慢摸索如何解释 Git 中的各个核心理念(提交、分支、远程、暂存区),而提交这个概念却出奇地棘手。

要明白 Git 提交是如何实现的对我来说相当简单(这些都是确定的!我可以直接查看!),但是要弄清楚别人是怎么看待提交的却相当困难。所以,就像我最近一直在做的那样,我在 Mastodon 上问了一些问题。

大家是怎么看待 Git 提交的?

我进行了一个 非常不科学的调查,询问大家是怎么看待 Git 提交的:是快照、差异,还是所有之前提交的列表?(当然,把它看作这三者都是合理的,但我很好奇人们的 主要 观点)。这是调查结果:

结果是:

  • 51% 差异
  • 42% 快照
  • 4% 所有之前的提交的历史记录
  • 3% “其他”

我很惊讶差异和快照两个选项的比例如此接近。人们还提出了一些有趣但相互矛盾的观点,比如 “在我看来,提交是一个差异,但我认为它实际上是以快照的形式实现的” 和 “在我看来,提交是一个快照,但我认为它实际上是以差异的形式实现的”。关于提交的实际实现方式,我们稍后再详谈。

在我们进一步讨论之前:我们的说 “一个差异” 或 “一个快照” 都是什么意思?

什么是差异?

我说的“差异”可能相当明显:差异就是你在运行 git show COMMIT_ID 时得到的东西。例如,这是一个 rbspy 项目中的拼写错误修复:

diff --git a/src/ui/summary.rs b/src/ui/summary.rs
index 5c4ff9c..3ce9b3b 100644
--- a/src/ui/summary.rs
+++ b/src/ui/summary.rs
@@ -160,7 +160,7 @@ mod tests {
  ";

          let mut buf: Vec<u8> = Vec::new();
-        stats.write(&mut buf).expect("Callgrind write failed");
+        stats.write(&mut buf).expect("summary write failed");
          let actual = String::from_utf8(buf).expect("summary output not utf8");
          assert_eq!(actual, expected, "Unexpected summary output");
      }

你可以在 GitHub 上看到它: https://github.com/rbspy/rbspy/commit/24ad81d2439f9e63dd91cc1126ca1bb5d3a4da5b

什么是快照?

我说的 “快照” 是指 “当你运行 git checkout COMMIT_ID 时得到的所有文件”。

Git 通常将提交的文件列表称为 “树”(如“目录树”),你可以在 GitHub 上看到上述提交的所有文件:

https://github.com/rbspy/rbspy/tree/24ad81d2439f9e63dd91cc1126ca1bb5d3a4da5b(它是 /tree/ 而不是 /commit/

“Git 是如何实现的”真的是正确的解释方式吗?

我最常听到的关于学习 Git 的建议大概是 “只要学会 Git 在内部是如何表示事物的,一切都会变得清晰明了”。我显然非常喜欢这种观点(如果你花了一些时间阅读这个博客,你就会知道我 喜欢 思考事物在内部是如何实现的)。

但是作为一个学习 Git 的方法,它并没有我希望的那么成功!通常我会兴奋地开始解释 “好的,所以 Git 提交是一个快照,它有一个指向它的父提交的指针,然后一个分支是一个指向提交的指针,然后……”,但是我试图帮助的人会告诉我,他们并没有真正发现这个解释有多有用,他们仍然不明白。所以我一直在考虑其他方案。

但是让我们还是先谈谈内部实现吧。

Git 是如何在内部表示提交的 —— 快照

在内部,Git 将提交表示为快照(它存储每个文件当前版本的 “树”)。我在 在一个 Git 仓库中,你的文件在哪里? 中写过这个,但下面是一个非常快速的内部格式概述。

这是一个提交的表示方式:

$ git cat-file -p 24ad81d2439f9e63dd91cc1126ca1bb5d3a4da5b
tree e197a79bef523842c91ee06fa19a51446975ec35
parent 26707359cdf0c2db66eb1216bf7ff00eac782f65
author Adam Jensen <adam@acj.sh> 1672104452 -0500
committer Adam Jensen <adam@acj.sh> 1672104890 -0500

Fix typo in expectation message

以及,当我们查看这个树对象时,我们会看到这个提交中仓库根目录下每个文件/子目录的列表:

$ git cat-file -p e197a79bef523842c91ee06fa19a51446975ec35
040000 tree 2fcc102acd27df8f24ddc3867b6756ac554b33ef    .cargo
040000 tree 7714769e97c483edb052ea14e7500735c04713eb    .github
100644 blob ebb410eb8266a8d6fbde8a9ffaf5db54a5fc979a    .gitignore
100644 blob fa1edfb73ce93054fe32d4eb35a5c4bee68c5bf5    ARCHITECTURE.md
100644 blob 9c1883ee31f4fa8b6546a7226754cfc84ada5726    CODE_OF_CONDUCT.md
100644 blob 9fac1017cb65883554f821914fac3fb713008a34    CONTRIBUTORS.md
100644 blob b009175dbcbc186fb8066344c0e899c3104f43e5    Cargo.lock
100644 blob 94b87cd2940697288e4f18530c5933f3110b405b    Cargo.toml

这意味着检出一个 Git 提交总是很快的:对 Git 来说,检出昨天的提交和检出 100 万个提交之前的提交一样容易。Git 永远不需要重新应用 10000 个差异来确定当前状态,因为提交根本就不是以差异的形式存储的。

快照使用 packfile 进行压缩

我刚刚提到了 Git 提交是一个快照,但是,当有人说 “在我看来,提交是一个快照,但我认为它在实现上是一个差异” 时,这其实也是对的!Git 提交并不是以你可能习惯的差异的形式表示的(它们不是以与上一个提交的差异的形式存储在磁盘上的),但基本的直觉是,如果你要对一个 10,000 行的文件编辑 500 次,那么存储 500 份文件的效率会很低。

Git 有一个将文件以差异的形式存储的方法。这被称为 “packfile”,Git 会定期进行垃圾回收,将你的数据压缩成 packfile 以节省磁盘空间。当你 git clone 一个仓库时,Git 也会压缩数据。

这里,我没有足够的篇幅来完整地解释 packfile 是如何工作的(Aditya Mukerjee 的 《解压 Git packfile》是我最喜欢的解释它们是如何工作的文章)。不过,我可以在这里简单总结一下我对 deltas 工作原理的理解,以及它们与 diff 的区别:

  • 对象存储为 “原始文件” 和一个 “ 变化量 delta ” 的引用
  • 变化量是一系列例如 “读取第 0 到 100 字节,然后插入字节 ‘hello there’,然后读取第 120 到 200 字节” 的指令。它从原始文件中拼凑出新的文本。所以没有 “删除” 的概念,只有复制和添加。
  • 我认为变化量的层次较少:我不知道如何检查 Git 究竟要经过多少层变化量才能得到一个给定的对象,但我的印象是通常不会很多。可能少于 10 层?不过,我很想知道如何才能真正查出来。
  • 原始文件不一定来自上一个提交,它可以是任何东西。也许它甚至可以来自一个更晚的提交?我不确定。
  • 没有一个 “正确的” 算法来计算变化量,Git 只是有一些近似的启发式算法

当你查看差异时,实际上发生了一些奇怪的事情

当我们运行 git show SOME_COMMIT 来查看某个提交的差异时,实际上发生的事情有点反直觉。我的理解是:

  1. Git 会在 packfile 中查找并应用变化量来重建该提交和其父提交的树。
  2. Git 会对两个目录树(当前提交的目录树和父提交的目录树)进行差异比较。通常这很快,因为几乎所有的文件都是完全一样的,所以 git 只需比较相同文件的哈希值就可以了,几乎所有时候都不用做什么。
  3. 最后 Git 会展示差异

所以,Git 会将变化量转换为快照,然后计算差异。它感觉有点奇怪,因为它从一个类似差异的东西开始,最终得到另一个类似差异的东西,但是变化量和差异实际上是完全不同的,所以这是说得通的。

也就是说,我认为 Git 将提交存储为快照,而 packfile 只是一个实现细节,目的是节省磁盘空间并加快克隆速度。我其实从来没必要知道 packfile 是如何工作的,但它确实能帮助我理解 Git 是如何在不占用太多磁盘空间的情况下将提交快照化的。

一个 “错误的” Git 理解:提交是差异

我认为一个相当常见的,对 Git 的 “错误” 的理解是:

  • 提交是以基于上一个提交的差异的形式存储的(加上指向父提交的指针和作者和消息)。
  • 要获取提交的当前状态,Git 需要从头开始重新应用所有之前的提交。

这个理解当然是错误的(在现实中,提交是以快照的形式存储的,差异是从这些快照计算出来的),但是对我来说它似乎非常有用而且有意义!在考虑合并提交时会有一点奇怪,但是或许我们可以说这只是基于合并提交的第一个父提交的差异。

我认为这个错误的理解有的时候非常有用,而且对于日常 Git 使用来说它似乎并没有什么问题。我真的很喜欢它将我们最常使用的东西(差异)作为最基本的元素——它对我来说非常直观。

我也一直在思考一些其他有用但 “错误” 的 Git 理解,比如:

  • 提交信息可以被编辑(实际上不能,你只是复制了一个相同的提交然后给了它一个新的信息,旧的提交仍然存在)
  • 提交可以被移动到一个不同的基础上(类似地,它们是被复制了)

我认为有一系列非常有意义的、 “错误” 的对 Git 的理解,它们在很大程度上都受到 Git 用户界面的支持,并且在大多数情况下都不会产生什么问题。但是当你想要撤销一个更改或者出现问题时,它可能会变得混乱。

将提交视为差异的一些优势

就算我知道在 Git 中提交是快照,我可能大部分时间也都将它们视为差异,因为:

  • 大多时候我都在关注我正在做的 更改 —— 如果我只是改变了一行代码,显然我主要是在考虑那一行代码而不是整个代码库的当前状态
  • 点击 GitHub 上的 Git 提交或者使用 git show 时,你会看到差异,所以这只是我习惯看到的东西
  • 我经常使用变基,它就是关于重新应用差异的

将提交视为快照的一些优势

但是我有时也会将提交视为快照,因为:

  • Git 经常对文件的移动感到困惑:有时我移动了一个文件并编辑了它,Git 无法识别它是否被移动过,而是显示为 “删除了 old.py,添加了 new.py”。这是因为 Git 只存储快照,所以当它显示 “移动 old.py -> new.py” 时,只是猜测,因为 old.py 和 new.py 的内容相似。
  • 这种方式更容易理解 git checkout COMMIT_ID 在做什么(重新应用 10000 个提交的想法让我感到很有压力)
  • 合并提交在我看来更像是快照,因为合并的提交实际上可以是任何东西(它只是一个新的快照!)。它帮助我理解为什么在解决合并冲突时可以进行任意更改,以及为什么在解决冲突时要小心。

其他一些关于提交的理解

Mastodon 的一些回复中还提到了:

  • 有关提交的 “额外的” 带外信息,比如电子邮件、GitHub 拉取请求或者你和同事的对话
  • 将“差异”视为一个“之前的状态 + 之后的状态”
  • 以及,当然,很多人根据情况的不同以不同的方式看待提交

人们在谈论提交时使用的其他一些词可能不那么含糊:

  • “修订”(似乎更像是快照)
  • “补丁”(看起来更像是差异)

就到这里吧!

我很难了解人们对 Git 有哪些不同的理解。尤其棘手的是,尽管 “错误” 的理解往往非常有用,但人们却非常热衷于警惕 “错误” 的心智模式,所以人们不愿意分享他们 “错误” 的想法,生怕有什么 Git 解释者会站出来向他们解释为什么他们是错的。(这些 Git 解释者通常是出于善意的,但是无论如何它都会产生一种负面影响)

但是我学到了很多!我仍然不完全清楚该如何谈论提交,但是我们最终会弄清楚的。

感谢 Marco Rogers、Marie Flanagan 以及 Mastodon 上的所有人和我讨论 Git 提交。

(题图:DA/cc0cada9-4945-4248-8635-3f89dcebd6ef)


via: https://jvns.ca/blog/2024/01/05/do-we-think-of-git-commits-as-diffs--snapshots--or-histories/

作者:Julia Evans 选题:lujun9972 译者:Cubik65536 校对:wxy

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

硬核观察 #1252 扎克伯格的新目标是创造人工通用智能

#1 扎克伯格的新目标是创造人工通用智能

Meta 首席执行官 马克·扎克伯格 Mark Zuckerberg 又一次有了新的目标,就是创造一个人工通用智能(AGI)。虽然他还没有一个实现 AGI 的时间表,甚至没有一个确切的定义(当然,其他人也没有),但他希望能够实现这一目标。他合并了 Meta 内部的两个人工智能部门以改变局面。外部研究预测,Meta 的 H100 储备在 2023 年将达到 15 万个,这与微软的储备持平,至少是其他公司的三倍。扎克伯格表示,如果算上英伟达 A100 和其他人工智能芯片,到 2024 年底,Meta 将拥有近 60 万个 GPU 储备。

(插图:DA/85619bd5-7a44-4222-bb8b-53a77402a7c0)

消息来源:The Verge

老王点评:这次不准备公司改名了?我觉得他真是一个追赶热点的好手。

#2 搜索引擎在与 SEO 的战争中败北

低质量 SEO 网站与搜索引擎在搜索排名上展开了激烈的竞争,他们通过操纵 SEO 进入搜索前列,然后搜索引擎调整算法降低其排名。SEO 工程师会调整参数再次挫败搜索引擎的努力。研究人员分析了一年内谷歌、必应和 DuckDuckGo 上 7392 个商品评论术语的搜索结果,他们发现低质量的 SEO 网站占领了搜索结果前列,大多数情况下搜索引擎调整算法对抗 SEO 效果只能持续较短时间。

(插图:DA/da3987e6-9a49-4a00-88bd-81fd1b997870)

消息来源:404media

老王点评:到底是道高一尺,还是魔高一丈?

#3 红帽工程师开发利用 AI 识别构建错误的工具

每次构建 RPM 包都会产生数千行输出,这些输出被分割到多个日志文件中,而相关的错误信息可能出现在任何地方,这就像大海捞针。红帽工程师开发人员目前正在开发一个名为 “Log Detective” 的工具,训练一个人工智能模型来理解 RPM 的构建日志,用简单的语言解释故障,并给出修复建议。你根本不需要打开日志,就可以更容易找出构建失败的原因。

(插图:DA/96d08c7a-58aa-4dcb-9fa0-f52f49f7ee86)

消息来源:Phoronix

老王点评:这样的工具要是真有用的话,希望以后的系统日志都可以这样说人话。

free 命令示例

Linux 中的 free 命令可以帮助你深入了解系统内存(RAM)的使用情况等。下面介绍如何充分利用它。

free 命令是了解系统内存(RAM)消耗情况,以及是否启用了交换的最简单方法之一。

但问题是:如何使用 free 命令? 嗯,这非常简单,不需要任何复杂的步骤。

因此,在本教程中,我将引导你使用 free 命令,并附有示例和练习题供你练习。

Linux 中如何使用 free 命令

要使用 free 或任何其他命令,最好从命令语法开始,我将从相同的开始。

以下是 free 命令的语法:

free [选项]

有多个选项可以使用,以更改 free 命令的默认行为。

现在,让我分享一些 free 命令常用的选项:

选项 描述
-h 通过调整 KB、GB 等数据单位,以人类可读的形式打印信息。
-s 在给定的时间间隔后更新 free 输出。
-t 显示系统和交换内存的总量。
-g 以 GB 为单位显示数据。
-m 以 MB 为单位打印信息。
-k 以 KB 为单位显示输出。

但是如果执行不带选项的 free 命令会怎样呢? 你可以看到下面的内容:

这里,

  • total:表示存储总量。
  • used:显示系统已使用的存储空间。
  • free:可用于新进程的可用内存量。
  • shared:tmpfs(临时文件系统)使用的内存量。
  • buff/cache: 表示缓冲区和缓存使用的内存总和。
  • available:它估计有多少内存可用于启动新应用而无需交换。它是free 内存和可以立即使用的 buff/cache 的一部分的总和。

因此,如果你想要各种信息,只需输入不带选项的命令即可。

现在,让我们看一下 free 命令的一些示例。

1、以人类可读的形式显示信息

默认情况下,free 命令将以千字节为单位显示数据,这不是最易读的形式。

这就是 -h 选项发挥作用的地方,它以人类可读的形式(例如 KB 或 GB)打印值。

free -h

2、连续显示统计数据

一旦执行 free 命令,它只会显示执行该命令时的统计信息。例如,如果我在 12:45 执行 free 命令,那么它只会显示该时间的统计信息。

所以问题是:如何实现类似的行为,如显示实时统计数据的 htop?这不完全相同,但你可以使用 -s 标志以特定时间间隔刷新统计信息,如下所示:

free -s <秒>

例如,如果我想每秒刷新一次 free 命令,那么我将使用以下命令:

free -s 1
3、定义显示统计数据的次数

在前面的示例中,我解释了如何使用 free 命令连续显示统计信息,但你可能不希望它无休止地刷新,而只刷新几次。

为此,你可以使用 -c 标志,如下所示:

free -c <显示统计信息的次数>

假设我想查看统计数据 3 次,那么我将使用以下内容:

free -c 3

默认情况下,它将每秒刷新一次数据,但你可以使用 -s 标志来指定间隔时间:

free -c <显示统计数据的次数> -s <秒数>

例如,在这里,如果我想以 2 秒的间隔显示统计信息 3 次,那么我将使用以下命令:

free -c 3 -s 2

4、指定输出数据类型

虽然对于大多数用户来说,使用 -h 标志以人类可读的形式显示数据就可以完成工作,但是如果你想自己指定数据类型怎么办?

那么,你可以使用以下标志指定数据类型:

标志 描述
--kilo-k 以 KB 为单位显示内存。
--mega-m 以 MB 节为单位显示内存。
--giga-g 以 GB 为单位显示内存。
--tera 以 TB 为单位显示内存。

你可以通过以下方式使用上述标志:

free --<kilo/mega/giga/tera>

例如,如果我希望以 MB 为单位显示内存统计信息,那么我将使用以下命令:

free --mega

5、获取物理内存和交换内存的总和

默认情况下,可用内存将显示物理内存和交换内存的行,但是如果你想获得它们的总和怎么办?

好吧,你可以使用 -t 标志:

free -t

练习题 ?‍?

你可以练习以下一些问题,以更好地使用 free 命令:

  • 连续打印内存统计数据 3 次,中间间隔 3 秒。
  • 以人类可读的形式获取物理内存和交换内存的总和。
  • 重定向 free 命令的输出到文本文件中。
  • 如何从 free 命令的输出中只打印一列? (提示:使用 awk 命令 并指定列号)。

如果你对这些问题有任何疑问,你可以在此处发表评论。

总结

每个命令都会以某种方式派上用场。free 命令也有这样一个被低估的场景来获取有用的信息。

? 我希望你发现本指南有用! 请让我知道你对我接下来应该介绍什么内容的想法?

(题图:DA/07440245-cdb2-43ac-94d9-c4a394ced646)


via: https://itsfoss.com/free-command/

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

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

硬核观察 #1251 ChatGPT 几乎没有提升必应搜索市场份额

#1 ChatGPT 几乎没有提升必应搜索市场份额

微软去年 2 月在必应中整合了 AI 聊天功能时,看好微软的分析师宣称此举是 “iPhone 时刻”,可能会颠覆搜索市场,削弱谷歌的主导地位。但近一年之后,似乎没什么效果。根据 StatCounter 的数据,去年底必应的市场份额为 3.4%,自 ChatGPT 发布以来提升不到 1%,必应在美国的月活跃用户增加到了 440 万。但也不是完全没有意义,根据 SensorTower 的数据,在微软引入 ChatGPT 之前一个月,用户在必应上投入的时间比一年前减少了 33%,而引入 ChatGPT 的新必应至少扭转了下滑趋势,用户在必应上花费的时间增加了 84%。而谷歌仍以 91.6% 的市场份额称霸全球搜索市场。

(插图:DA/71f2a4aa-3f88-4004-a460-e6740c60635d)

消息来源:彭博社

老王点评:现在一些人已经厌倦了 AI 对话和生成的内容和图片了。

#2 谷歌明确警告 Chrome 隐身模式仍然会被跟踪

在谷歌准备解决一项指控其涉及 Chrome 隐身模式的隐私违规的集体诉讼案的同时,也更新了 Chrome 的隐身模式的警告,说明谷歌和其他公司运行的网站仍然可以在 Chrome 浏览器的半私人模式下收集你的数据。虽然熟悉技术的人已经知道,但许多人可能不明白隐身模式到底做了什么。在其金丝雀通道已经可以看到新的警告,“你已进入隐身状态。使用此设备的其他人无法看到你的活动,所以你可以更隐私地浏览网页。这不会改变你访问的网站和他们使用的服务(包括谷歌)如何收集数据。”而正式版的 Chrome 中的警告仍然是“你已进入隐身状态。现在你可以保持隐私地浏览,使用这个设备的其他人无法看到你的活动。”

(插图:DA/a26f5ff7-76b7-4e59-9be1-c5fe80763f80)

消息来源:Ars Technica

老王点评:作为一个广告公司,其隐身模式也必须在不伤害广告业务的前提下提供,而不像其它的浏览器不但提供真正的隐身,甚至还会提供链路和 IP 的保护。

#3 Rust 编写的 Linux 调度程序可提高游戏性能

Canonical 的 Linux 内核工程师 安德烈·里基 Andrea Righi 在假期尝试用 Rust 编写了一个 Linux 调度器,他“很震惊地发现,它不仅能工作,甚至在某些工作负载(如游戏)下的性能还超过了默认的 Linux 调度器(EEVDF)。”

(插图:DA/f5ce4793-c612-4ba6-86b4-14300cfd0ad0)

消息来源:Phoronix

老王点评:难道 Rust 不仅安全,而且在性能方面也有优势吗?这倒是个好消息。

Ubuntu 24.04 LTS 将获得长达 12 年的更新支持

Canonical 公布了将延长 Ubuntu LTS 的软件更新。而且,直到现在我们才知道……

距离我们期待已久的下一个 Ubuntu 长期支持版本(LTS)(Ubuntu 24.04 LTS “Noble Numbat ”) 的发布只有几个月的时间了。

不要忘记,Canonical 曾在去年 12 月初发布了 路线图,其中展示了桌面团队正在为 Ubuntu 24.04 所做的工作。即使是早期的 Ubuntu 23.10 版本也可以作为即将发布的 LTS 版本的有力指标。

然而,由于 Destination Linux 在 Ubuntu 峰会上与一位特邀嘉宾进行的采访,我们现在对 Ubuntu 24.04 版本有了更多了解

对 Ubuntu LTS 版本提供 12 年支持?

采访的嘉宾正是 Canonical 首席执行官 Mark Shuttleworth。他透露,Ubuntu 24.04 LTS 将获得 12 年的更新支持,并且对一些较旧的 LTS 版本也做出同样的承诺(未指定任何版本)。

Mark 提到:

我不想抢别人的风头,但基本来说,我们将为 24.04 提供 12 年的更新支持,而且我们还将为一些旧版本也提供 12 年的更新支持。

Mark 将其称为“白金级企业承诺”,与红帽企业版 Linux(RHEL)提供的相当。此外,他们不仅针对核心组件这样做,而且针对的是整个发行版大约 30,000 个源代码包。

他还补充道:

显然,这其中有一部分是 Ubuntu Pro 的功劳,但一个简单的事实是,你现在可以使用 Ubuntu 24.04,而且你将能够部署一些东西,因为你知道在接下来的 12 年里,你只需定期更新就可以了,而且这些东西会得到保障,一直都会得到维护。

很明显,为了获得这种长期支持,你必须注册 Ubuntu Pro。而且,考虑到 Pro 订阅对个人使用是免费的,这并不一定是件坏事。

如果你不选择 Ubuntu Pro,那么你将在 2029 年前获得五年的标准更新

早些时候,我们知道 Ubuntu 24.04 通过订阅可以获得长达 10 年的软件和安全更新,直到 2034 年 4 月。然而,现在随着新信息的出现,情况发生了变化。

现在,我们可以看到 Ubuntu 24.04 LTS 的支持至少到 2036 年 4 月,这对于 Linux 发行版来说是相当长的支持期。

如果你问我,我希望在 Ubuntu 官方博客上看到关于延长支持的公告,我们可以在其中获得有关哪些旧发行版将受到支持的详细信息。

我强烈建议你观看这篇 采访,因为它也包含一些有关人工智能的有趣信息!

如何获得延长支持?

如果你是一家企业,或者不喜欢在标准的五年支持期结束后更换 Ubuntu LTS 安装,那么购买 Ubuntu Pro 就是一个不错的选择

就目前情况而言,如果你是个人用户,你可以在最多五台计算机上免费订阅 Ubuntu Pro对于企业,你必须直接 联系 Canonical 获取定价。

Ubuntu Pro

? 12 年的软件更新支持听起来让你兴奋吗?在下面的评论中分享你的想法。

(题图:DA/905dc3a4-4d15-4f29-aab3-eda638bdc5bf)


via: https://news.itsfoss.com/ubuntu-24-04-lts-support/

作者:Sourav Rudra 选题:lujun9972 译者:geekpi 校对:wxy

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