从神经多样性视角看待我在 C 语言上的开源之旅

我了解到,如果你能找到适合你的方法,不管老师和其他学生怎么说,你都可以学到任何你感兴趣的开源技能。

我生于 1982 年,以人类的年岁计算,这只过去了 40 年(在写这篇文章的时候)。然而就计算机发展而言,那已经是很久以前了。十岁的时候,我得到了我的第一台电脑,一台 Commodare 64 计算机。后来,我买了一台 Amiga,到了13岁的时候,我买了一台 “IBM 兼容” 机(那时,大家都这么称呼它)。

高中的时候,我用图形计算器做了很多基本的编程。高二的时候,我学习了基本的 C 语言编程,然后到了高三,我开始做更高级的 C 语言编程,开始应用库、指针和图形界面。

我从编程学生成为老师的旅程

在我的大学时代,我学习了 Java,所以 Java 成为了我的主要语言。我还为一种叫做个人数据助理(PDA)的设备编写了一些 C# 语言的程序,这是现代智能手机的前身。因为 Java 语言是面向对象的、跨平台的,并且使得 GUI 编程变得容易,我想以后我的大部分编程工作都会用 Java 来完成。

在大学里,我也发现自己有教学的天赋,所以我帮助别人编程,而当我选修计算机科学时,他们也帮助我学习数学。在大学后期,我选修了一些 C 语言编程的课程,目的是学习基本的嵌入式编程和测量仪器的控制。

30 岁之后,我用 C 语言作为教学工具,教高中生学习用 C 语言编程。我还用 Fritzing 教高中生如何编写 Arduino 程序。我对 C 语言编程的兴趣在去年再次被唤醒,当时我找到了一份工作,帮助大学生学习计算机科目中的差异。

我如何接触 C 语言和其他语言进行编程

每个人学习的方式都不一样。作为一个患有 阿斯伯格综合症 Asperger's 和多动症(ADHD)的 神经多样性 neurodiverse 人士,我的学习过程有时与其他人很不一样。当然,每个人都有不同的学习风格,尽管神经多样性人士可能比其他人更喜欢某种学习风格。

我倾向于用图片和文字来思考。就我个人而言,我需要一步一步地解码事物,一步一步地理解它们。这使得 C 语言适合我的学习风格。当我学习代码的时候,我通过学习观察一行行的代码,比如我面前的 # include <stdio.h> ,逐渐将代码合并到我的大脑中。根据我在互联网上获取的对其他神经多样性人群的描述,他们中的一些人似乎也有这种学习风格。我们“内化代码”。

有些自闭症人士在记忆大段代码方面比我强得多,但过程似乎是一样的。在理解诸如结构、指针、指针的指针、矩阵和向量之类的概念时,用图片来思考是很有帮助的,比如在编程教程和书籍中可以找到的那些。

我喜欢使用 C 语言来理解工作是如何在较低的级别上完成的,例如 文件输入和输出(I/O)、网络编程等等。这并不意味着我不喜欢处理字符串操作或创建数组等任务的库。我也喜欢用 Java 语言创建数组和向量的简单性。然而,对于创建用户界面,尽管我已经在 C 语言中看过这样的代码,但是我更喜欢使用图形化编辑器,比如 Netbeans 和类似的编辑器。

我理想中用于创建应用程序的 C 语言 GUI 开源工具

如果我想象一个理想的用 C 语言创建 GUI 的开源工具,它将类似于 Netbeans,例如,通过拖放来创建 GTK 接口。还可以在按钮上绑定 C 语言函数,等等,来使它们执行操作。也许有这样一个工具。我承认我没怎么仔细查找过。

为什么我鼓励年轻的神经多样性的人学习 C语言

游戏行业 是一个很大的产业。一些研究表明,神经多样性的孩子可能比其他孩子更专注于游戏。我会告诉一个神经多样性的高中生或大学生,如果你学习 C 语言,你可能会学到一些基础知识,例如,为显卡编写高效的驱动程序,或者编写高效的文件 I/O 例程来优化他们最喜欢的游戏。我还要诚实地说,学习需要时间和精力,但是值得付出努力。一旦你学会了它,你就可以更好地控制硬件一类的东西。

对于学习 C 语言,我建议一个神经多样性的孩子安装一个初学者友好的 Linux 发行版,然后在网上找到一些教程。我还建议一步一步地分解事物,并给它们绘制图表,例如,指针。我这样做是为了更好地理解这个概念,这对我很有效。

最后,这就是它的意义所在: 不管老师和其他学生怎么说,找到一种适合你的学习方法,用它来学习你感兴趣的开源技能。这是可以做到的,任何人都可以做到。

(题图:DA/f0d98968-4c13-4395-8414-3690bc20b0ae)


via: https://opensource.com/article/22/5/my-journey-c-neurodiverse-perspective

作者:Rikard Grossman-Nielsen 选题:lkxed 译者:CanYellow 校对:wxy

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

Linux 用户也将被蓝屏死机的恐怖所支配!

现在,蓝屏死机的恐怖也将笼罩在 Linux 用户头上。

多年来,“ 蓝屏死机 Blue-Screen-Of-Death ”(BSOD)已经成了 Windows 操作系统的代名词,一旦系统出现重大错误,Windows 就会展示蓝色的错误页面。

我自己也常常遇到一些看似随机的问题,这些问题会导致 Windows 蓝屏死机。有时候,显示的错误代码能提供一些帮助,但更多的时候,它们只是让我更加感到困惑。

而现在,随着 systemd v255 的发布,我们也将在 Linux 上见到这个熟悉的“朋友”。让我带你了解一下:

一个模拟的蓝屏死机页面(并非 Linux 上可能出现的样子)

发生的事情:systemd 开始加入一个称为 systemd-bsod新实验性组件。依据 提交记录,它用于显示与引发系统启动失败相关的蓝屏错误消息

类似于 Windows,这个功能还会展示一个二维码,用户可以扫描获取到故障相关的信息。

? 只有在错误级别达到 LOG_EMERG 时,才会显示错误信息。

这很重要吗?

当然重要。因为,对于装备了 systemd 的 Linux 发行版在发生崩溃或拒绝启动的情况下,它展示错误代码的方式过于令人费解,尤其对于新手来说

有了蓝屏死机系统后,用户用不着还要在各大论坛和文章里寻求解答。他们现在的问题解决方式将更加直观,更贴近他们的习惯。

考虑到大部分 热门的 Linux 发行版 都基于 systemd,这个改变应该会受到许多用户的欢迎。

关于 systemd 255 版本的其它改变,这里有一些主要的亮点:

  • 针对启动服务的方法进行了全面的重构
  • seccomp 已开始支持 64 位龙架构 微处理器架构。
  • System V 服务脚本 的支持已被取消,未来版本将完全移除此项支持。
  • 如果在执行重启操作时发现 /run/nextroot/ 目录下存在新的根文件系统,systemctl 将会自动执行 soft-reboot 操作。
  • 改善了在 systemd 上对 TPM2 支持 的众多方面。

我强烈建议你查看 官方的更新日志,了解更多关于新的 systemd 版本的信息。这个新版本将于 2024 年上半年 出现在许多即将发布的 Linux 发行版中。

尽管我们中的许多人都熟知那个围绕 systemd 已经酝酿多时的 争议,我仍然很好奇,当蓝屏死机的功能未来不久推出时,会引起怎样的反响。

有一点可以肯定,我们一定会开怀大笑,因为将有一大堆 Linux 蓝屏死机的段子图片问世 ?

? 我迫不及待地想看 Linux 蓝屏死机的段子图片,你呢?

(题图:DA/18062133-604c-41e6-b234-67c58d0770a5)


via: https://news.itsfoss.com/bsod-linux/

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

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

硬核观察 #1209 开机启动显示的徽标中可隐藏恶意代码

#1 开机启动显示的徽标中可隐藏恶意代码

研究人员发现了大量与开机时 UEFI 显示的徽标图像处理有关的漏洞。恶意代码可以通过附加到镜像中的方式在不被察觉的情况下被安装,目前的安全启动机制都无法阻止这种攻击。这个名为 “LogoFAIL” 攻击是由二十几个新发现的漏洞组成的,这些漏洞已经在负责启动运行 Windows 或 Linux 的现代设备的 UEFI 中潜伏了数年甚至数十年,几乎涵盖了整个 x64 和 ARM CPU 生态系统。首先是 UEFI 供应商 AMI、Insyde 和 Phoenix;然后是联想、戴尔和惠普等设备制造商;以及英特尔和 AMD 等 CPU 制造商。LogoFAIL 攻击的是徽标,特别是硬件销售商的徽标,这些徽标会在 UEFI 仍在运行时,在启动时显示在设备屏幕上。这种新的固件攻击几乎影响所有 Windows 和 Linux 设备。

(插图:DA/19aebc9b-a8da-4d5f-a331-c2e8afa300a0)

消息来源:Ars Technica

老王点评:真是想象力丰富,没想到开机显示的徽标也可以隐藏恶意代码。

#2 谷歌 Gemini 的早期印象并不好

谷歌本周发布了新的生成式人工智能模型 Gemini,该模型将为包括 Bard 在内的一系列产品和服务提供支持。谷歌对 Gemini 的卓越架构和能力大加吹捧,声称该模型的性能达到或超过了 GPT-4 等其他领先的生成式人工智能模型。但又传闻证据表明并非如此。比如,有人发现该模型未能正确理解基本事实,会弄错 2023 年奥斯卡奖得主。翻译似乎也不是 Gemini Pro 的强项。即便谷歌拥有搜索和新闻网站,但 Gemini Pro 似乎不愿意对可能引起争议的新闻话题发表评论,而是告诉用户……自己谷歌一下。此外,其广泛传播的演示视频被指造假、基准测试有选择性前提。

(插图:DA/ab59690d-fd51-452c-8bca-50c6b93955c4)

消息来源:Tech Crunch

老王点评:LLM 好不好,数据没有用,用户反馈才是真的。这句话不只是对 Gemini 说的。

#3 Fedora 40 新增直接启动统一内核镜像的功能

Fedora 40 正在将其对统一内核镜像(UKI)支持推进到下一阶段,将支持直接从 EFI SHIM 启动 UKI 文件的能力,而无需通过 GRUB 等传统的引导加载器。UKI 将带来更好的 UEFI 安全启动支持,更好地支持 TPM 测量和保密计算,以及更强大的启动过程。

(插图:MJ/a99ba7c8-2e9d-43f8-b16e-fbb11f6ae4df)

消息来源:Phoronix

老王点评:可能是我过于守旧了,我既不喜欢 systemd,也不喜欢 UKI、TPM 和安全启动。

解读那些令人困惑 Git 术语

我正在一步步解释 Git 的方方面面。在使用 Git 近 15 年后,我已经非常习惯于 Git 的特性,很容易忘记它令人困惑的地方。

因此,我在 Mastodon 上进行了调查:

你有觉得哪些 Git 术语很让人困惑吗?我计划写篇博客,来解读 Git 中一些奇怪的术语,如:“分离的 HEAD 状态”,“快速前移”,“索引/暂存区/已暂存”,“比 origin/main 提前 1 个提交”等等。

我收到了许多有洞见的答案,我在这里试图概述其中的一部分。下面是这些术语的列表:

  • HEAD 和 “heads”
  • “分离的 HEAD 状态”
  • 在合并或变基时的 “ours” 和 “theirs”
  • “你的分支已经与 'origin/main' 同步”
  • HEAD^HEAD~HEAD^^HEAD~~HEAD^2HEAD~2
  • .....
  • “可以快速前移”
  • “引用”、“符号引用”
  • refspecs
  • “tree-ish”
  • “索引”、“暂存的”、“已缓存的”
  • “重置”、“还原”、“恢复”
  • “未跟踪的文件”、“追踪远程分支”、“跟踪远程分支”
  • 检出
  • reflog
  • 合并、变基和遴选
  • rebase –onto
  • 提交
  • 更多复杂的术语

我已经尽力讲解了这些术语,但它们几乎覆盖了 Git 的每一个主要特性,这对一篇博客而言显然过于繁重,所以在某些地方可能会有一些粗糙。

HEAD 和 “heads”

有些人表示他们对 HEADrefs/heads/main 这些术语感到困惑,因为听起来像是一些复杂的技术内部实现。

以下是一个快速概述:

  • “heads” 就是 “分支”。在 Git 内部,分支存储在一个名为 .git/refs/heads 的目录中。(从技术上讲,官方 Git 术语表 中明确表示分支是所有的提交,而 head 只是最近的提交,但这只是同一事物的两种不同思考方式)
  • HEAD 是当前的分支,它被存储在 .git/HEAD 中。

我认为,“head 是一个分支,HEAD 是当前的分支” 或许是 Git 中最奇怪的术语选择,但已经设定好了,想要更清晰的命名方案已经为时已晚,我们继续。

“HEAD 是当前的分支” 有一些重要的例外情况,我们将在下面讨论。

“分离的 HEAD 状态”

你可能已经看到过这条信息:

$ git checkout v0.1
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

[...]

(消息译文:你处于 “分离 HEAD” 的状态。你可以四处看看,进行试验性的更改并提交,你可以通过切换回一个分支来丢弃这个状态下做出的任何提交。)

这条信息的实质是:

  • 在 Git 中,通常你有一个已经检出的 “当前分支”,例如 main
  • 存放当前分支的地方被称为 HEAD
  • 你做出的任何新提交都会被添加到你的当前分支,如果你运行 git merge other_branch,这也会影响你的当前分支。
  • 但是,HEAD 不一定必须是一个分支!它也可以是一个提交 ID。
  • Git 会称这种状态(HEAD 是提交 ID 而不是分支)为 “分离的 HEAD 状态”
  • 例如,你可以通过检出一个标签来进入分离的 HEAD 状态,因为标签不是分支
  • 如果你没有当前分支,一系列事情就断链了:
    • git pull 根本就无法工作(因为它的全部目的就是更新你的当前分支)
    • 除非以特殊方式使用 git push,否则它也无法工作
    • git commitgit mergegit rebasegit cherry-pick 仍然可以工作,但它们会留下“孤儿”提交,这些提交没有连接到任何分支,因此找到这些提交会很困难
  • 你可以通过创建一个新的分支或切换到一个现有的分支来退出分离的 HEAD 状态

在合并或变基中的 “ours” 和 “theirs”

遇到合并冲突时,你可以运行 git checkout --ours file.txt 来选择 “ours” 版本中的 file.txt。但问题是,什么是 “ours”,什么是 “theirs” 呢?

我总感觉此类术语混淆不清,也因此从未用过 git checkout --ours,但我还是查找相关资料试图理清。

在合并的过程中,这是如何运作的:当前分支是 “ours”,你要合并进来的分支是 “theirs”,这样看来似乎很合理。

$ git checkout merge-into-ours # 当前分支是 “ours”
$ git merge from-theirs # 我们正要合并的分支是 “theirs”

而在变基的过程中就刚好相反 —— 当前分支是 “theirs”,我们正在变基到的目标分支是 “ours”,如下:

$ git checkout theirs # 当前分支是 “theirs”
$ git rebase ours # 我们正在变基到的目标分支是 “ours”

我以为之所以会如此,因为在操作过程中,git rebase main 其实是将当前分支合并到 main (它类似于 git checkout main; git merge current_branch),尽管如此我仍然觉得此类术语会造成混淆。

这个精巧的小网站 对 “ours” 和 “theirs” 的术语进行了解释。

人们也提到,VSCode 将 “ours”/“theirs” 称作 “当前的更改”/“收到的更改”,同样会引起混淆。

“你的分支已经与 origin/main 同步”

此信息貌似很直白 —— 你的 main 分支已经与源端同步!

但它实际上有些误导。可能会让你以为这意味着你的 main 分支已经是最新的,其实不然。它真正的含义是 —— 如果你最后一次运行 git fetchgit pull 是五天前,那么你的 main 分支就是与五天前的所有更改同步。

因此,如果你没有意识到这一点,它对你的安全感其实是一种误导。

我认为 Git 理论上可以给出一个更有用的信息,像是“与五天前上一次获取的源端 main 是同步的”,因为最新一次获取的时间是在 reflog 中记录的,但它没有这么做。

HEAD^HEAD~HEAD^^HEAD~~HEAD^2HEAD~2

我早就清楚 HEAD^ 代表前一次提交,但我很长一段时间都困惑于 HEAD~HEAD^ 之间的区别。

我查询资料,得到了如下的对应关系:

  • HEAD^HEAD~ 是同一件事情(指向前 1 个提交)
  • HEAD^^^HEAD~~~HEAD~3 是同一件事情(指向前 3 个提交)
  • HEAD^3 指向提交的第三个父提交,它与 HEAD~3 是不同的

这看起来有些奇怪,为什么 HEAD~HEAD^ 是同一个概念?以及,“第三个父提交”是什么?难道就是父提交的父提交的父提交?(剧透:并非如此)让我们一起深入探讨一下!

大部分提交只有一个父提交。但是合并提交有多个父提交 - 因为它们合并了两个或更多的提交。在 Git 中,HEAD^ 意味着 “HEAD 提交的父提交”。但是如果 HEAD 是一个合并提交,那 HEAD^ 又代表怎么回事呢?

答案是,HEAD^ 指向的是合并提交的第一个父提交,HEAD^2 是第二个父提交,HEAD^3 是第三个父提交,等等。

但我猜他们也需要一个方式来表示“前三个提交”,所以 HEAD^3 是当前提交的第三个父提交(如果当前提交是一个合并提交,可能会有很多父提交),而 HEAD~3 是父提交的父提交的父提交。

我想,从我们之前对合并提交 “ours”/“theirs” 的讨论来看,HEAD^ 是 “ours”,HEAD^2 是 “theirs”。

.....

这是两个命令:

  • git log main..test
  • git log main...test

我从没用过 ..... 这两个命令,所以我得查一下 man git-range-diff。我的理解是比如这样一个情况:

A - B main
  \
    C - D test
  • main..test 对应的是提交 C 和 D
  • test..main 对应的是提交 B
  • main...test 对应的是提交 B,C,和 D

更有挑战的是,git diff 显然也支持 .....,但它们在 git log 中的意思完全不同?我的理解如下:

  • git log test..main 显示在 main 而不在 test 的更改,但是 git log test...main 则会显示 两边 的改动。
  • git diff test..main 显示 test 变动 main 变动(它比较 BD),而 git diff test...main 会比较 AD(它只会给你显示一边的差异)。

有关这个的更多讨论可以参考 这篇博客文章

“可以快速前移”

git status 中,我们会经常遇到如下的信息:

$ git status
On branch main
Your branch is behind 'origin/main' by 2 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

(消息译文:你现在处于 main 分支上。你的分支比 origin/main 分支落后了 2 个提交,可以进行快速前进。 (使用 git pull 命令可以更新你的本地分支))

但“快速前移” 到底是何意?本质上,它在告诉我们这两个分支基本如下图所示(最新的提交在右侧):

main:        A - B - C
origin/main: A - B - C - D - E

或者,从另一个角度理解就是:

A - B - C - D - E (origin/main)
        |
        main

这里,origin/main 仅仅多出了 2 个 main 不存在的提交,因此我们可以轻松地让 main 更新至最新 —— 我们所需要做的就是添加上那 2 个提交。事实上,这几乎不可能出错 —— 不存在合并冲突。快速前进式合并是个非常棒的事情!这是合并两个分支最简单的方式。

运行完 git pull 之后,你会得到如下状态:

main:        A - B - C - D - E
origin/main: A - B - C - D - E

下面这个例子展示了一种不能快速前进的状态。

A - B - C - X  (main)
        |
        - - D - E  (origin/main)

此时,main 分支上有一个 origin/main 分支上无的提交(X),所以无法执行快速前移。在此种情况,git status 就会如此显示:

$ git status
Your branch and 'origin/main' have diverged,
and have 1 and 2 different commits each, respectively.

(你的分支和 origin/main 分支已经产生了分歧,其中各有 1 个和 2 个不同的提交。)

“引用”、“符号引用”

在使用 Git 时,“引用” 一词可能会使人混淆。实际上,Git 中被称为 “引用” 的实例至少有三种:

  • 分支和标签,例如 mainv0.2
  • HEAD,代表当前活跃的分支
  • 诸如 HEAD^^^ 这样的表达式,Git 会将其解析成一个提交 ID。确切说,这可能并非 “引用”,我想 Git 将其称作 “版本参数”,但我个人并未使用过这个术语。

个人而言,“符号引用” 这个术语颇为奇特,因为我觉得我只使用过 HEAD(即当前分支)作为符号引用。而 HEAD 在 Git 中占据核心位置,多数 Git 核心命令的行为都基于 HEAD 的值,因此我不太确定将其泛化成一个概念的实际意义。

refspecs

.git/config 配置 Git 远程仓库时,你可能会看到这样的代码 +refs/heads/main:refs/remotes/origin/main

[remote "origin"]
    url = git@github.com:jvns/pandas-cookbook
    fetch = +refs/heads/main:refs/remotes/origin/main

我对这段代码的含义并不十分清楚,我通常只是在使用 git clonegit remote add 配置远程仓库时采用默认配置,并没有动机去深究或改变。

“tree-ish”

git checkout 的手册页中,我们可以看到:

git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <pathspec>...

那么这里的 tree-ish 是什么意思呢?其实当你执行 git checkout THING . 时,THING 可以是以下的任一种:

  • 一个提交 ID(如 182cd3f
  • 对一个提交 ID 的引用(如 mainHEAD^^v0.3.2
  • 一个位于提交内的子目录(如 main:./docs
  • 可能就这些?

对我个人来说,“提交内的目录”这个功能我从未使用过,从我的视角看,tree-ish 可以解读为“提交或对提交的引用”。

“索引”、“暂存”、“缓存”

这些术语都指向的是同一样东西(文件 .git/index,当你执行 git add 时,你的变动会在这里被暂存):

  • git diff --cached
  • git rm --cached
  • git diff --staged
  • 文件 .git/index

尽管它们都是指向同一个文件,但在实际使用中,这些术语的应用方式有所不同:

  • 很显然,--index--cached 并不总是表示同一种意思。我自己从未使用 --index,所以具体细节我就不展开讨论了,但是你可以在 Junio Hamano(Git 的主管维护者)的博客文章 中找到详细解释。
  • “索引” 会包含未跟踪的文件(我猜可能是对性能的考虑),但你通常不会把未跟踪的文件考虑在“暂存区”内。

“重置”、“还原”、“恢复”

许多人提到,“ 重置 reset ”、“ 还原 revert ” 和 “ 恢复 restore ” 这三个词非常相似,易使人混淆。

我认为这部分的困惑来自以下原因:

  • git reset --hardgit restore . 单独使用时,基本上达到的效果是一样的。然而,git reset --hard COMMITgit restore --source COMMIT . 相互之间是完全不同的。
  • 相应的手册页没有给出特别有帮助的描述:
    • git reset: “重置当前 HEAD 到指定的状态”
    • git revert: “还原某些现有的提交”
    • git restore: “恢复工作树文件”

虽然这些简短的描述为你详细说明了哪个名词受到了影响(“当前 HEAD”,“某些提交”,“工作树文件”),但它们都预设了你已经知道在这种语境中,“重置”、“还原”和“恢复”的准确含义。

以下是对它们各自功能的简要说明:

  • 重置 —— git revert COMMIT: 在你当前的分支上,创建一个新的提交,该提交是 COMMIT 的“反向”操作(如果 COMMIT 添加了 3 行,那么新的提交就会删除这 3 行)。
  • 还原 —— git reset --hard COMMIT: 强行将当前分支回退到 COMMIT 所在的状态,抹去自 COMMIT 以来的所有更改。这是一个高风险的操作。
  • 恢复 —— git restore --source=COMMIT PATH: 将 PATH 中的所有文件回退到 COMMIT 当时的状态,而不扰乱其他文件或提交历史。

“未跟踪的文件”、“远程跟踪分支”、“跟踪远程分支”

在 Git 中,“跟踪” 这个词以三种相关但不同的方式使用:

  • 未跟踪的文件 Untracked files ”:在 git status 命令的输出中可以看到。这里,“未跟踪” 意味着这些文件不受 Git 管理,不会被计入提交。
  • 远程跟踪分支 remote tracking branch ” 例如 origin/main。此处的“远程跟踪分支”是一个本地引用,旨在记住上次执行 git pullgit fetch 时,远程 originmain 分支的状态。
  • 我们经常看到类似 “分支 foo 被设置为跟踪 origin 上的远程分支 bar ”这样的提示。

即使“未跟踪的文件”和“远程跟踪分支”都用到了“跟踪”这个词,但是它们所在的上下文完全不同,所以没有太多混淆。但是,对于以下两种方式的“跟踪”使用,我觉得可能会产生些许困扰:

  • main 是一个跟踪远程的分支
  • origin/main 是一个远程跟踪分支

然而,在 Git 中,“跟踪远程的分支” 和 “远程跟踪分支” 是不同的事物,理解它们之间的区别非常关键!下面是对这两者区别的一个简单概述:

  • main 是一个分支。你可以在它上面做提交,进行合并等操作。在 .git/config 中,它通常被配置为 “追踪” 远程的 main 分支,这样你就可以用 git pullgit push 来同步和上传更改。
  • origin/main 则并不是一个分支,而是一个“远程跟踪分支”,这并不是一种真正的分支(这有些抱歉)。你不能在此基础上做提交。只有通过运行 git pullgit fetch 获取远程 main 的最新状态,才能更新它。

我以前没有深入思考过这种模糊的地方,但我认为很容易看出为什么它会让人感到困惑。

签出

签出做了两个完全无关的事情:

  • git checkout BRANCH 用于切换分支
  • git checkout file.txt 用于撤销对 file.txt 的未暂存修改

这是众所周知的混淆点,因此 Git 实际上已经将这两个功能分离到了 git switchgit restore(尽管你还是可以使用 checkout,就像我一样,在不愿丢弃 15 年对 git checkout 肌肉记忆的情况下)。

再者,即使用了 15 年,我仍然记不住 git checkout main file.txt 用于从 main 分支恢复 file.txt 版本的命令参数。

我觉得有时你可能需要在 checkout 命令后面加上--,帮助区分哪个参数是分支名,哪个是路径,但我并未这么使用过,也不确定何时需要这样做。

参考日志(reflog)

有很多人把 reflog 读作 re-flog,而不是 ref-log。由于本文已经足够长,我这里不会深入讨论参考日志,但值得注意的是:

  • 在 Git 中,“参考” 是一个泛指分支、标签和 HEAD 的术语
  • 参考日志(“reflog”)则为你提供了一个参考历次记录的历史追踪
  • 它是从一些极端困境中拯救出来的利器,比如说你不小心删除了重要的分支
  • 我觉得参考日志是 Git 用户界面中最难懂的部分,我总是试图避免使用它。

合并 vs 变基 vs 遴选

有许多人提及他们常常对于合并和变基的区别感到迷惑,并且不理解变基中的“ base ”指的是什么。

我会在这里尽量简要的进行描述,但是这些一句话的解释最终可能并不那么明了,因为每个人使用合并和变基创建工作流程时的方式差别挺大,要真正理解合并和变基,你必须理解工作流程。此外,有图示会更好理解。不过这个话题可能需要一篇独立的博客文章来完整讨论,所以我不打算深入这个问题。

  • 合并会创建一个新的提交,用来融合两个分支
  • 变基则会逐个地把当前分支上的提交复制到目标分支
  • 遴选跟变基类似,但是语法完全不同(一个显著的差异是变基是从当前分支复制提交,而遴选则会把提交复制到当前分支)

rebase --onto

git rebase 中,存在一个被称为 --onto 的选项。这一直让我感到困惑,因为 git rebase main 的核心功能就是将当前分支变基 main 运行上。那么,额外的 --onto 参数又是怎么回事呢?

我进行了一番查找,--onto 显然解决了一个我几乎没有或者说从未遇到过的问题,但我还是会记录下我对它的理解。

A - B - C (main)
      \
      D - E - F - G (mybranch)
          |
          otherbranch

设想一下,出于某种原因,我只想把提交 FG 变基到 main 上。我相信这应该是某些 Git 工作流中会经常遇到的场景。

显然,你可以运行 git rebase --onto main otherbranch mybranch 来完成这个操作。对我来说,在这个语法中记住 3 个不同的分支名顺序似乎是不可能的(三个分支名,对我来说实在太多了),但由于我从很多人那里听说过,我想它一定有它的用途。

提交

有人提到他们对 Git 中的提交作为一词双义(既作为动词也作为名词)的用法感到困惑。

例如:

  • 动词:“别忘了经常提交”
  • 名词:“main 分支上最新的提交”

我觉得大多数人应该能很快适应这个双关的用法,但是在 SQL 数据库中的“提交”用法与 Git 是有所不同,我认为在 SQL 数据库中,“提交”只是作为一个动词(你使用 COMMIT 来结束一个事务),并不作为名词。

此外,在 Git 中,你可以从以下三个不同的角度去考虑一个 Git 提交:

  1. 表示当前每个文件状态的快照
  2. 与父提交的差异
  3. 记录所有先前提交的历史

这些理解都是不错的:不同的命令在所有的这些情况下都会使用提交。例如,git show 将提交视为一个差异,git log 把提交看作是历史,git restore 则将提交理解为一个快照。

然而,Git 的术语并无太多助于你理解一个给定的命令正在如何使用提交。

更多令人困惑的术语

以下是更多让人觉得混淆的术语。我对许多这些术语的意思并不十分清楚。

我自己也不是很理解的东西:

  • git pickaxe (也许这是 git log -Sgit log -G,它们用于搜索以前提交的差异?)
  • 子模块(我知道的全部就是它们并不以我想要的方向工作)
  • Git 稀疏检出中的 “cone mode” (没有任何关于这个的概念,但有人提到过)

人们提及觉得混淆,但我在这篇已经 3000 字的文章中略过的东西:

  • blob、tree
  • “合并” 的方向
  • “origin”、“upstream”,“downstream”
  • pushpull 并不是对立面
  • fetchpull 的关系(pull = fetch + merge)
  • git porcelain
  • 子树
  • 工作树
  • 暂存
  • “master” 或者 “main” (听起来它在 Git 内部有特殊含义,但其实并没有)
  • 何时需要使用 origin main(如 git push origin main)vs origin/main

人们提及感到困惑的 Github 术语:

  • 拉取请求 pull request ” (与 Gitlab 中的 “ 合并请求 merge request ” 相比,人们似乎认为后者更清晰)
  • “压扁并合并” 和 “变基并合并” 的作用 (在昨天我从未听说过 git merge --squash,我一直以为 “压扁并合并” 是 Github 的特殊功能)

确实是 “每个 Git 术语”

我惊讶地发现,几乎 Git 的每个其他核心特性都被至少一人提及为某种方式中的困惑。我对听到更多我错过的混淆的 Git 术语的例子也有兴趣。

关于这个,有另一篇很棒的 2012 年的文章叫做《最困惑的 Git 术语》。它更多的讨论的是 Git 术语与 CVS 和 Subversion 术语的关联。

如果我要选出我觉得最令人困惑的 3 个 Git 术语,我现在会选:

  • head 是一个分支,HEAD 是当前分支
  • “远程跟踪分支” 和 “跟踪远程的分支” 是不同的事物
  • “索引”、“暂存的”、“已缓存的” 全部指的同一件事

就这样了!

在写这些的过程中,我学到了不少东西。我了解到了一些新的关于Git的事实,但更重要的是,现在我对于别人说Git的所有功能和特性都引起困惑有了更深的理解。

许多问题我之前根本没考虑过,比如我从来没有意识到,在讨论分支时,“跟踪”这个词的用法是多么地特别。

另外,尽管我已经尽力做到准确无误,但由于我涉猎到了一些我从未深入探讨过的Git的角落,所以可能还是出现了一些错误。

(题图:DALL-E/A/e1e5b964-5f32-41bb-811e-8978fb8556d4)


via: https://jvns.ca/blog/2023/11/01/confusing-git-terminology/

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

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

硬核观察 #1208 LVFS 已为 Linux 用户提供超过 1 亿次固件更新

#1 LVFS 已为 Linux 用户提供超过 1 亿次固件更新

Linux 厂商固件服务(LVFS)是与 Linux 固件更新工具 fwupd 搭配使用的服务,目前该服务已提供了超过 1 亿次固件更新!而大约一年半前,LVFS 的下载次数为 5200 万次。fwupd/LVFS 使得在 Linux 下更新大量系统固件和设备/外设固件变得异常简单。在广泛支持 LVFS 之前,Linux 用户更新设备固件往往是一件令人望而生畏的苦差事,他们经常需要启动到 Windows 或借助 FreeDOS 进行系统 BIOS 更新,或者干脆不更新固件。

消息来源:Phoronix

老王点评:很棒的工作!

#2 openSUSE 新徽标投票还剩一周时间

openSUSE 项目一直在进行品牌重塑,以更好地区分该社区开源项目和 SUSE 本身。目前,openSUSE 项目正在进行徽标设计大赛,调查投票只剩下不到一周的时间。新徽标将在公布后的过渡期内与现有的 Geeko 徽标一起使用。

投票地址

消息来源:Phoronix

老王点评:openSUSE 的粉丝们,你投票了吗?

#3 “逻辑量子比特”数量突破记录

量子计算机能完成多复杂的计算取决于它所包含的量子比特的数量。最近,IBM 和 Atom Computing 公司推出了拥有 1000 多个量子比特的设备,几乎是以前最大量子计算机的三倍,但这并没有立即带来计算能力的大幅提升,因为更大的量子计算机往往也会出现更多错误。逻辑量子比特是通过量子纠缠相互连接的量子比特组,与标准量子比特不同,逻辑量子比特能够更好地进行计算而不受错误的影响。波士顿的量子计算初创公司 QuEra 专注于增加逻辑量子比特的数量,研究人员现在能够一次制作多达 48 个逻辑量子比特,这比之前创造的逻辑量子比特数量多出 10 倍以上。

消息来源:New Scientist

老王点评:虽然现在 AI 很火,但是要是一旦量子计算突破,那带来的颠覆性更大。

回音

  • systemd 255 发布了稳定版,并附带了 systemd-bsod 作为 “蓝屏死机” 服务,能够在 Linux 上全屏显示错误信息。

一款外观时尚的用于管理个人财务的 Linux 应用

Linux桌面的完美应用,用于轻松管理财务!

个人财务如果管理得当,对于财务状况大有裨益。许多人意识到这一点后,开始采取积极措施来保持财务状况良好。

由于这一点,我们最近看到了个人财务管理应用的崛起,这些应用凭借提供的功能已经引起了广泛关注。

但是,许多现有的应用都是专有的,这导致人们对于他们的财务数据可能如何处理产生了不确定性,尤其是如果它们同步到云中。

幸运的是,我们有一些出色的开源选择。通过这次初步了解,我们将看到其中一款,“Denaro”,一款适用于Linux的个人财务管理应用

Denaro:概览 ⭐

用 C# 编写的 Denaro 是一款整洁的小应用,可轻松管理你的财务。它是完全开源的,依赖社区的贡献来推动其发展。

其中一些关键功能包括:

  • 轻松筛选交易
  • 导入/导出功能
  • 多账户支持
初次印象 ?‍?

我使用 Flathub 商店提供的可用包安装了 Denaro ,它与我搭载 GNOME 42 的系统集成良好

该应用程序是以 GNOME 为基础设计的,并针对默认的 Adwaita 主题进行了优化。

第一次启动时,我被问候了“下午好!”并提供了创建新账户或打开现有账户的选项。

? 请注意,账户是存储在本地的,而不是在任何云服务上。

我选择创建一个新账户,然后我看到了快速设置向导

我输入了账户名称,并将位置设置为“ 文档 Documents ”,我没有添加密码,但如果你想更好地保护信息,密码也是可选用的。 ?

设置完所有这些后,我可以选择账户类型,我可以选择 支票 Checking 储蓄 Savings 商业 Business ,我选择了储蓄。

我还可以设置默认交易类型,并设置交易提醒阈值

Denaro 很好地读取了我系统的信息,自动将货币设置为印度卢比(INR)的 ₹

然后,我继续填充 Denaro 的一些重要交易,并通过创建新组将它们分组,如下所示。

你可以通过单击侧栏中“ + 新建 + New ”按钮旁边的“ 分组 Groups ”标题来访问它。你还可以为其提供描述标记颜色

完成分组后,我开始在 Denaro 中输入一些重要的交易

我设置了 金额 Amount ,选择了交易类型( 收入 Income / 支出 Expense ),设置了 日期 Date 重复间隔 Repeat Interval ,以便它自动记账,因为那是固定费用。

接下来,我将其添加到一个组中,如下所示。燃油费用进入了“旅行”组。

该应用还为你提供了向交易添加注释并上传收据的选项。如果你问我,这是一个不错的功能。

在完成数据输入后,我看到了一个主屏幕,其中充满了我输入的所有交易,中间有有用的可视化图表(下文更多介绍)。

我可以通过取消选中特定的类别和组来排序信息,甚至可以使用提供的搜索栏搜索特定的交易。

如果你想知道;如何添加新交易?

你看到下面那个大大的蓝色按钮,上面写着“ + 新建 + New ”,你可以使用它来创建新交易。

猫税/分期付款是我从不轻视的费用。 ?

至于数据如何可视化,Denaro 展示了四种不同的可视化视图,包括一个图表、一个图形和两个饼图。

Denaro 还具有多账户功能,你可以创建多个账户,甚至可以使用“ 转账 Transfer ”功能在它们之间转移资金

通过单击“ 操作 Actions ”按钮并单击“ 转账 Transfer Money ”来访问它。

引起我的另一个注意的是Denaro 上的货币换算器。它列出了所有主要货币,并有一个便捷的“切换”按钮来更改换算的目标。

总的来说,这是一个令人印象深刻的个人财务管理应用程序

从我的体验来看,用户体验非常直观,大多数用户应该能够轻松使用它。

? 下载 Denaro

你可以从 Flathub 商店Snap StoreAUR 获取 Denaro 的最新版本。

Denaro(Flathub)

关于源代码,你可以访问其 GitHub 仓库

? 你是如何管理个人财务的?你喜欢使用像 Denaro 这样的应用程序吗?请在下方评论中告诉我。


via: https://news.itsfoss.com/denaro/

作者:Sourav Rudra 选题:lujun9972 译者:GlassFoxowo-Dev 校对:wxy

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

硬核观察 #1207 Firefox 面临被踢出兼容性要求名单

#1 Firefox 面临被踢出兼容性要求名单

美国网页设计系统(USWDS)提供了一套全面的标准,为美国政府的众多网站建设者提供指导。它为开发人员提供的文档借鉴了英国同行的 “2% 规则”: “根据 analytics.usa.gov 的观察,我们正式支持任何使用率超过 2% 的浏览器。”而根据该网站前九十天的流量,Firefox 浏览器的市场份额仅为 2.2%。如果低于 2% 的阈值,那么 USWDS 可以不再要求政府网站的开发者继续兼容 Firefox。这将有可能进而影响到企业,越来越多的网站将不再兼容 Firefox。

消息来源:Slashdot

老王点评:除了让 Firefox 用户去访问一下这个观察网站,我们还能做什么?

#2 Facebook 停止发送 PGP 加密邮件

2015 年,在斯诺登事件后,Facebook 宣布将允许用户以加密方式接收该公司的邮件。开启该功能后,Facebook 发送给用户的所有电子邮件(主要是点赞通知和私人信息)都将使用已有几十年历史的 PGP 技术进行加密。据 Facebook 称,八年后的今天,由于使用率较低,Facebook 将取消这项功能。该功能已于周二废弃。Facebook 拒绝说明究竟有多少用户仍在使用加密电子邮件功能。

消息来源:Tech Crunch

老王点评:作为在国内早期推广过 PGP/GPG 加密邮件的人,我只能说,绝大部分人都觉得邮件的加密和签名是无谓的麻烦,叹息。

#3 中国成为世界上第一个在水下部署商业数据中心的国家

据《中国日报》报道,我国开始在三亚市沿海的水下组装部署商业数据中心。第一个模块已经下水安装,按照计划,他们将在约 35 米深的水下基地安装 100 个水密存储模块,每个模块重达 1,300 吨,这将建立一个可同时运行近 600 万台计算机的数据中心。这些模块将产生大量热量,而这些热量会被周围的海水自然冷却。预计仅此一项就可节省 1.22 亿千瓦时的电力。该水下数据中心计划将于 2025 年投入使用,这些模块的使用寿命长达 25 年。

消息来源:Interesting Engineering

老王点评:微软也做过类似尝试,但没有进一步发展,希望我们的尝试能成功。

Godot 4.2 发布:让开源游戏引擎更上一层楼

Godot 的又一次更新,其中包含了一些有用的更改,以更接近 Unreal、Unity 等专有引擎。

Godot,社区最喜欢的 Unreal 和 Unity 等专有游戏引擎的替代品,有一个新的重大更新!

Godot 4.2 “闪亮登场”,全面更新大量内容。它继续沿着 Godot 4.0 版本 铺平的道路,并在此基础上进行构建。

拿上你的饮料,让我来重点介绍一下这次发布的优点。☕

Godot 4.2:有什么新内容?

Godot 4.2 版本有很多新东西。但是,我们将关注关键亮点

  • Linux 上的官方 ARM 支持
  • 编辑器改进
  • 更多版本控制友好
  • 增强的图块地图
  • 多人游戏/网络的改进
  • 更好的导航系统
Linux 上的官方 ARM 支持

尽管可以在 Linux 上为基于 ARM 的设备手动构建 Godot,但从来没有针对 Linux 的官方 ARM 构建

然而,随着 Godot 4.2 的发布,这种情况发生了变化。他们在下载页面上提供了 32 位和 64 位版本的 Godot for ARM

请记住,这是一项实验性工作,因此可能会出现错误和问题。

编辑器改进

Godot 的编辑器方面有很多改进。

如上面的截图所示,第一个是代码编辑器中的新添加项,名为“ 创建代码区域 Create Code Region ”。它允许你将脚本分解为命名块,然后可以将其最小化以减少混乱。

Godot 的另一个新功能是能够在编辑器视口中单独扩展方框图形的每一侧。以前,这仅限于中心点和对称范围。

项目管理器也进行了更新,改进了一般项目导入工作流程,并重新排列了按钮。

更多版本控制友好

Godot 4.2 修复了在“就绪”期间更改场景或重命名节点会导致崩溃的问题,还修复了与重命名/移动文件相关的各种问题。

开发人员还补充道:

此外,场景中资源 ID 偶尔更改的一些情况已得到解决(GH-65011)。仍有改进的空间,但这已经使 4.2 的版本控制更加友好。

增强的图块地图

除了 Godot 的图块/图块地图系统的主要性能优化之外,还有一项新功能允许你在将图块/图块图案放置在任何地方时旋转或翻转它们

多人游戏/网络的改进

此版本还具有高级多人游戏系统的改进。“MultiplayerSynchronizer” 节点现在支持同步变换组件、子资源属性和其他类型的索引数据。

还有针对拒绝服务漏洞的安全修复,该漏洞之前在 Godot 4.0.4 RC1 版本中已披露。

? 开发人员建议用户升级到 Godot 4.0.4、4.1.2 或 4.2 以避免出现问题。

更好的导航系统

Godot 4.2 带来了 2D 导航网格烘焙,它可以处理物理体、网格实例、普通多边形等。

此外,添加了对 2D 和 3D 导航网格烘焙的多线程支持,以提高性能并减少卡顿。

?️ 其他更改和改进

还有许多其他值得注意的变化:

  • 改进了 GDExtension 系统。
  • 支持 AMD 的 FSR 2.2 技术。
  • 图形构建节点的重大修改
  • 适用于 Linux、Windows 和 macOS 的原生文件选择对话框。
  • 现在可以为附加组件和资产指定不同的安装文件夹
  • 修复了 Steam 输入问题,该问题导致某些游戏手柄事件被处理两次。

有关此版本的更多详细信息,你可以通过 官方发行说明 了解。

? 下载Godot 4.2

前往 官方网站 获取 Linux 版 Godot 的最新版本。对于其他软件包,你还可以参考其 GitHub 仓库

Godot 4.2(GitHub)

? 你对此版本有何看法? 已经试过这个精彩的开源游戏引擎了吗? 在评论中告诉我们!


via: https://news.itsfoss.com/godot-4-2/

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

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

开源开发者如何致富:搏一搏,单车变摩托

有一个热门话题,正在全国范围上火热进行中,那就是开放原子开源大赛。

你是否曾想象过,当你全身心投入到热爱的开源项目中,还能拥有可能赚取高达 80 万、甚至更多的荣誉奖金!现实就在眼前,开放原子开源大赛已经强势启动,正等待着你的积极参与。

这场比赛是由开放原子开源基金会主导发起,众多政府单位和知名企业也参与其中,充分体现开源共享、共建共治的原则。比赛吸引了各行各业跨界的参赛者,为他们提供 30 多个多元化、实战性十足的赛题,奖池高达 80 万,好像还有可能破纪录突破到 100 万呢!这场比赛可以说是诚意十足,规模硕大,揭示了国家对推动开源事业发展的坚定支持。

你不知道这个大赛吗?

那让我为你详细介绍一下这次比赛背后的故事。首先,它由开放原子开源基金会发起,与众多开源组织、企事业单位、高等院校、科研院所、行业组织、投融资机构等联手寻找最新技术的尖兵,以此刺激更多产业链生态上下游的协同发展。承办单位包括开放原子开源基金会、央视网、江苏省工业和信息化厅、无锡市人民政府、江苏软件产业人才发展基金会、苏州工业园区、无锡高新区等。这再一次证明,这次大赛的实力和影响力与众不同。而更加重要的是,这场比赛体现了国家对国内开源实践的大力鼓励和支持。

比赛的赛题十分繁多,可选的面广。预计有 60 个以上的赛题,基本涵盖了国内外所有的主流技术。这使得参赛选手可以根据个人实际兴趣,有针对性地选择竞赛项目,并以此来提升自己的综合实践能力。这不仅能将优秀的开源人才科学、有趣地筛选出来,而且让比赛充满了竞技性和挑战性。

本次大赛分为基础软件赛、工业软件赛、新兴及应用赛和算法赛四大类:

  • 基础软件赛:包括能够对硬件进行调度和管理、为应用软件提供运行支撑的系统软件,和支撑软件开发、运行、维护、管理,以及和网络连接或组成相关的支撑软件,例如操作系统、数据库、中间件、编程语言及编译器、办公软件、开发测试工具等。
  • 工业软件赛:主要面向在工业领域辅助进行工业设计、生产、通讯、控制的软件或功能模块,例如计算机辅助设计(CAD)、计算机辅助工程/工业仿真(CAE)、计算机辅助制造(CAM)、电子设计自动化(EDA)、工业生产管理系统等。
  • 新兴及应用赛:重点关注近年来随着科技不断发展而出现的新兴技术及创新应用,例如人工智能、云计算、区块链、大数据、虚拟现实、RISC-V 等。
  • 算法赛:对特定类型的计算问题设定目标,征集高效高质量的算法方案。

参赛选手可以选择最符合兴趣的赛道,参赛项目多样化,自由度极高。下面介绍其中一些你可能感兴趣的赛道:

openInula 前端框架生态与 AI 创新挑战赛

openInula 是一款用于构建用户界面的 JavaScript 前端框架,作为各类前端应用与上游生态组件的底层基础,支持开发者高效地构建高质量的 Web 应用。

分为两大主题:生态构建与 AI 赋能。参赛者可以利用 openInula 框架的 User API 或内核模块,设计并开发各种生态组件。也可以基于 openInula 框架,利用大语言模型,设计并实现 AI 辅助工具。

  • 奖金:¥35万
  • 已报名团队数:0

点此查看赛题详情

面向 RISC-V 架构的 AI 开发框架构建与优化大赛

针对 RISC-V 架构的 AI 开发框架尚处于起步阶段,尚未涌现出一个经过专门构建和优化的 AI 开发框架,能够充分发挥 RISC-V 的独特优势。本赛题要求开发者能够基于 openKylin 开源操作系统和 RISC-V 硬件平台。参赛者需要适配运行一款以上主流 AI 框架,并基于此框架运行有代表性的 AI 模型,或者开发 AI 应用软件。如果能够针对 RISC-V 对框架进行优化,则属于加分项。

  • 奖金:¥50万
  • 已报名团队数:5

点此查看赛题详情

基于 Pika 的 Serverless KV DB

为了达成 Serverless 的能力,Pika 社区需要做一系列的开发工作,技术挑战赛题目参考方向如下:参赛者可以从分布式、云原生、Pika 核心功能、生态工具、质量工程等方面挑选一个或多个题目进行参赛。

  • 奖金:¥50万
  • 已报名团队数:90

点此查看赛题详情

OpenAnolis 孵化机密计算和机密容器的创新项目

赛题要求参与者能够理解当前机密计算技术,并结合当前机密计算领域最新的前沿技术 Device TEE,基于 SPDM 规范定义的消息协议实现 CPU TEE 绑定协议和代码,编写 SPDM for CPU TEE 的绑定协议规范草案,未来提交到开源社区和标准组织,最终进行产品落地。

  • 奖金:¥15万
  • 已报名团队数:23

点此查看赛题详情

CAE 开源工业软件评注创新赛

本题目提供 7 个 CAE 软件,请任选 1 个参与比赛。初赛任务包括:

  1. 开源代码评注:在公开技术论坛、公众号等渠道发布所选开源项目的技术博客,可以围绕项目代码各个方面持续发布多篇技术博客,内容要求为原创。
  2. 项目创新应用研究:在 AtomGit 上传基于所选开源项目的创新研究成果,体现所选开源 CAE 软件的创新应用潜力,展示本项目与实际行业需求相关的价值能力等。

  3. 奖金:¥15万

  4. 已报名团队数:25

点此查看赛题详情

基于 OpenHarmony 的国产 DDC 低代码开发平台

本赛题旨在推动 Node-RED 低代码开发工具在国产 DDC 设备上的集成,实现国内基于 OpenHarmony 系统的工业领域应用生态快速发展。本赛题要求参赛者基于 OpenHarmony 操作系统移植 Node-RED 低代码开发平台。

  • 奖金:¥30万
  • 已报名团队数:0

点此查看赛题详情

除此之外,还有很多赛道尚未结束报名,大家可以看看有没有适合你的赛道:

点此查看所有赛题

那些愿意接受挑战的读者们,你们现在就有机会报名参赛。所有参赛者均无门槛,无费用,无限制,无论你在何处,全球任何组织或者个人都能报名。

赛题是由各大厂商提供的,他们极其青睐能解决这些问题的你们。参与比赛不仅是一次技术提升的过程,更是一次远程的技术面试,为你们直接开启头部企业的实习、就业终面机会,这是你们展示才华,收获就业机会的舞台。

除此之外,比赛还提供了多种奖励和福利,赛道多样,奖金丰厚,最高可获得80万的奖金。

比赛过程中,你将有机会获得开源社区导师的指导,提升技能,并获取开源项目全方位的技术支持和共享。如果你的项目表现优秀,你甚至还有可能获得项目投融资支持、地方政府项目落地扶持,以及商业化的支持。

因此,如果你对自己的技术有信心,真的应该参加这次大赛,或许是这样一种机会,能让你将自己的技术转化为实践,同时也能积极影响到国家的发展。你可能会成为那个深藏不露的技术高手,利用这次机会摆脱打工人的命运,改变自己的生活,冲击更高的技术领域。你也有可能是一位新手,但这次大赛将会是你获取最新行业发展动态、提升技能、提高职业发展的极好机会。所以,无论你现在处于哪个阶段,都不要犹豫,现在就参与这次大赛,享受这次难得的机会,也许这正是你一直在寻找的机会。

(题图:MJ/010c5eac-745c-4abb-955d-d293aa5f4529,尾图:MJ/f1033fc0-997a-4a61-b389-1555b2ed5892)

注重隐私的五大网络浏览器

这是你可以试用的一些最佳的隐私友好型网络浏览器!

对大多数互联网用户来说,网络浏览器应用是他们最常接触的工具。不论其在桌面或移动设备上工作,无论平台如何,总会用到网络浏览器。

通过浏览器,我们可以访问云存储、银行服务、社交媒体、电商平台,以及无数其他服务。

因此,选择一个尊重隐私,并能提供安全网络体验的浏览器对你来说至关重要。

下面我将为你重点展示一些在你选择的任何设备上可以使用的、最佳的注重隐私的浏览器。

LibreWolf

LibreWolf 是 Firefox 的一个分支版本,它开箱即用地提供了隐私增强功能。

LibreWolf 不只是一个配置稍有不同的 Firefox。它完全清除了所有的遥测、DRM 保护,并在安全方面进行了各种改进。

比如说,每当你关闭浏览器时,它会自动删除浏览和下载历史。此外,你也可以根据 文档 调整这种行为并根据自己的喜好进行自定义。

再者,你还能得到像 DuckDuckGo 和 Qwant 这样的 隐私友好搜索引擎。同时,uBlock Origin 的扩展功能在该浏览器中默认就开启了。

它不仅能提供私密和安全的体验,LibreWolf 还去掉了一些可能会分散用户注意力的 Firefox 元素,例如一个更清爽的新标签页和 Firefox 同步功能。

亮点:

  • 这是专门为了隐私定制的版本
  • 可以根据需要调整定制选项
  • 默认禁用 Firefox Sync 同步功能
  • 仅支持桌面平台(Linux、Windows 和 macOS)

Brave

Brave 是基于 Chromium 的知名版本。它以提供了飞快的网页用户体验而备受赞誉。

Brave 提供了大量以隐私为中心的设置,如:无需创建账户就能安全同步浏览器数据。该浏览器有效地阻止了跟踪器,给你带来了私密网络体验。

你还能获得一些附加功能,如奖励系统(用于选择性广告)和加密钱包。

虽然这个浏览器支持跨平台使用,但对于 Linux 系统,其安装过程与其他式有所不同。你可以参考我们的教程寻找帮助:

在 Ubuntu 上安装 Brave 浏览器

亮点:

  • 快速的网页浏览体验
  • 与 Chrome 相似的用户体验
  • 提供安全的浏览器同步选项
  • 提供了额外的功能,如加密钱包等
  • 支持 Linux、安卓、iOS、Windows 和 macOS

Firefox

Mozilla Firefox 是无数隐私爱好者的首选浏览器。

它有很多隐私保护功能,包括有阻止跟踪、设定不同 DNS 的能力。

Firefox 提供了独特的用户体验,整合了 νρη、电子邮件别名、Pocket 等实用功能,以及一个 Firefox 账户可以方便地同步所有你的浏览器数据。

使用 Firefox,你可以自定义用户界面,并通过 JavaScript 文件调整体验。如果你并不打算使用 Firefox,但仍希望提升隐私保护,你可以查看 GitHub 上的 arkenfox 配置

如果你在 Firefox 和 Brave 之间感到困惑,我们的比较文章可以帮你深入了解、从而做出选择:

Brave vs. Firefox:你的私人网络体验的终极浏览器选择

亮点:

  • 考虑到可用性而设计出的以隐私为核心的功能
  • 整合了 Firefox 同步和 Pocket 功能
  • 支持 Linux、Windows、安卓、iOS 和 macOS 等平台

Tor 浏览器

Tor 浏览器 是注重隐私的用户的最佳选择。

因为它基于 Firefox,所以你基本能获取同样的体验,同时进行了一些改动以更高级别提升安全特性和隐私。

与 LibreWolf 不同的是,Tor 浏览器让你能使用 Tor 网络,这可能会影响你的网络体验,但对隐私方面的提升很大。你可以通过浏览 洋葱网站 来保证隐私。

如同 Brave,Tor 浏览器在 Linux 系统上的安装可能有点复杂。如果你是 Linux 用户,你可以参考我们的教程:

在 Ubuntu 上安装 Tor 浏览器

亮点:

  • 严格的隐私保护,尽管这可能降低可用性
  • 连接 Tor 网络
  • 支持 Linux、Windows、安卓 和 macOS 等平台

Mullvad 浏览器

Mullvad 是最好的 νρη 服务 之一。Mullvad 浏览器 的开发是与 Tor 项目合作完成的,其特点是专门为使用 νρη 而非 Tor 网络而定制。

你也可以在 Mullvad 浏览器上结合使用其它的 νρη 服务。该浏览器内置了 uBlock Origin 和 NoScript 等扩展,提供他们所追求的私密体验。此外,浏览器并不支持 Firefox 同步。

虽然你不能移除这些扩展,但他们并不推荐你添加更多扩展。

亮点:

  • 专为 νρη 使用而定制
  • 预先安装了不能被移除的扩展
  • 只支持桌面平台(Linux、Windows 和 macOS)

总结

随着网络的不断发展且需要处理各种问题,依赖于一个重视隐私的浏览器变得更加方便。

在上述提及的浏览器中,Firefox 和 Brave 是大多数人的首选。但如果你寻求更严格的保护和更多的配置,那么 LibreWolf 应该会符合你的需求。

当然,使用像 Tor 浏览器、LibreWolf 和 Mullvad 这样特别定制的浏览器,你将失去在移动设备上使用它们的灵活性。因此,你可以为你的智能手机选择一个单独的浏览器,或者选择一个支持你所有设备的浏览器。

? 你最喜欢的是哪款注重隐私的网络浏览器呢?请在下方评论让我们知道!如果你对列表中的某些条目有异议,也可以优雅地表达你的看法。

(题图:MJ/acc47c46-8923-482f-92f6-523516b2f450)


via: https://itsfoss.com/privacy-web-browsers/

作者:Ankush Das 选题:lujun9972 译者:ChatGPT 校对:wxy

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