2023年1月

在本指南中,你将学习如何在 virt-manager 的 KVM、QEMU 和 libvirt 的主机和客户机之间共享文件夹。

virt-manager 应用或软件包使用 libvirt 库来提供虚拟机管理服务。它有一个桌面界面,有助于创建、删除和管理多个虚拟机。

virt-manager 桌面界面及其组件为各种个人和商业场景提供了灵活的虚拟机管理服务。它是一个自由开源的应用,主要用于 KVM 虚拟机。然而,它也可以支持其他管理程序,如 Xen 和 LXC。

在之前的文章中,我解释了 如何使用 virt-manager 创建虚拟机。这篇文章介绍了如何在客户机和主机之间无缝访问文件和文件夹。

关于 virtiofs 的说明

共享文件和文件夹是由名为 virtiofs 的 libvirt 共享文件系统提供的。它提供了访问主机上的目录树的所有功能和参数。由于大多数 virt-manager 虚拟机的配置都被翻译成 XML,所以共享文件/文件夹也可以通过 XML 文件来指定。

在 virt-manager中共享文件夹

首先,确保你的客户机关闭了电源。在 virt-manager GUI 中,选择虚拟机,点击“ 打开 Open ”,弹出控制台设置。

打开设置

点击工具条上显示虚拟硬件细节的图标。然后点击左边面板上的“ 内存 Memory ”。

选择选项 “ 启用共享内存 Enable shared memory ”。点击应用。

启用共享内存选项

然后点击底部的 “ 添加硬件 Add hardware ”。

点击添加硬件

在添加新硬件的窗口中,从左边的面板上选择 “ 文件系统 File system ”。

然后在 “ 细节 Details ” 标签中选择 “ 驱动程序 Driver ” 为 “virtiofs”。点击 “ 浏览 Browse > 浏览本地 browse local ”,选择你想在客户机内访问的主机路径

在目标路径中,输入你想要的任何名字。这只是一个文件标签,将在挂载时使用。

所以,如果我想访问 Pictures/Screenshots 文件夹(/home/debugpoint/Pictures/Screenshots),示例设置可以是这样:

添加一个新的文件系统硬件

下面是上述配置的 XML 设置。你可以在 XML 标签中找到它。

<filesystem type="mount" accessmode="passthrough">
  <driver type="virtiofs"/>
  <binary path="/usr/libexec/virtiofsd"/>
  <source dir="/home/debugpoint/Pictures/Screenshots"/>
  <target dir="mount_tag_pictures"/>
  <alias name="fs1"/>
  <address type="pci" domain="0x0000" bus="0x08" slot="0x00" function="0x0"/>
</filesystem>

点击 “ 完成 Finish ”。在 virt-manager 主窗口中,右键点击虚拟机,点击运行,启动虚拟机。确保点击“ 显示图形控制台 show the graphical console ”(如果虚拟机没有显示,点击工具条上的监视器图标)。

在客户机中,创建一个你想挂载主机文件夹的文件夹。在这个例子中,我使用了 /mnt/pictures

sudo mkdir /mnt/pictures

最后,使用你在上述步骤中创建的标签将主机文件夹挂载到这个新文件夹。使用下面的命令在终端做这件事。确保根据你的系统改变下面命令中的标签和文件夹名称。

sudo mount -t virtiofs mount_tag_pictures /mnt/pictures

现在你可以在 virt-manager 中的主机和客户机之间的无缝地浏览文件夹和添加/删除项目。

从 virt-manager 客户机访问主机文件

总结

我希望这个方案能帮助你从客户机上访问主机文件和文件夹。记住,你的用户 ID,也就是用来启动 virt-manager 应用的用户,应该有同样的权限来访问主机文件夹。

如果你遇到任何错误,上述指南帮助了你,请在下面留言。


via: https://www.debugpoint.com/share-folder-virt-manager/

作者:Arindam 选题:lkxed 译者:geekpi 校对:wxy

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

20 世纪 70 年代末期,计算机突然成为了某种普罗大众能够买回家的商品;而此前的几十年间,它一直只是听命于企业级霸主的神秘而笨重的机器。少数狂热的爱好者注意到了它是多么的吸引人,并争相购买了属于自己的计算机。对更多的人而言,微型计算机的到来引发了对未来的无助焦虑。同时期的杂志上的一则广告承诺,家用计算机将“让您的孩子在学校享有不公平的优势”。广告中展示了一位打着领带,身着时髦的西装外套的男孩子急切地举手回答问题,而在他的身后,他的那些显得不那么聪明的同学们闷闷不乐地望着他。这则广告以及其它类似的广告在暗示:世界正在疾速改变,而如果你不立即学习如何使用这些令人生畏的新设备之一,你和你的家人就会被时代所抛弃。

在英国,这些焦虑转化为政府高层对国家竞争力的担忧。从各种意义上,20 世纪 70 年代对英国来说都是平平无奇的十年,通胀与失业率高企。与此同时,一系列的罢工让伦敦陷于一次又一次的停电中。一篇 1979 年的政府报告担心:没有跟上计算机技术浪潮将“为我们糟糕的工业表现平添又一个影响因素” [1] 。英国似乎已经在计算机技术的角逐中落后了 —— 所有的大型的计算机公司都是美国的,而集成电路则在日本和中国台湾制造。

由英国政府建立的公共服务广播公司英国广播公司(BBC)作出了一个大胆的举动,决定通过帮助英国人战胜他们对计算机的反感,来解决英国的国家竞争力问题。BBC 发起了 “ 计算机认知计划 Computer Literacy Project ”,该计划包括多个教育方向的努力:几部电视连续剧、一些相关书籍、一个支持团队网络以及一款名为 BBC Micro 的特别定制的微型计算机。该项目是如此成功,以致于 1983 年 《BYTE》杂志的一位编辑写道:“与美国相比,英国人对微型计算机感兴趣的比例更高。” [2] 这位编辑惊讶于在英国举办的 第五届个人计算机世界展 Fifth Personal Computer World Show 的人数比参加当年的西海岸计算机展的人数更多。超过六分之一的英国人观看了由该计划制作的第一部电视连续剧,并最终售出了 150 万台 BBC Micro 微型计算机。 [3]

去年,一份包含了由计算机认知计划制作的每一部电视连续剧和所有出版资料的 档案 被发布在了互联网上。我抱着极大的兴趣观看了这些电视连续剧,并试图想象在 20 世纪 80 年代早期学习计算机使用是什么样子。但事实证明,更有趣的是计算机是如何被教授的。今天,我们仍然担心技术发展使人们落伍。富有的科技企业家与政府花费大量的资金试图教孩子们“编码”。我们拥有诸如 Codecademy 这样的网站,通过新技术的运用进行交互式编程教学。我们可能假定这种方式比 80 年代的呆板的电视连续剧更高效,不过真的是这样吗?

计算机认知计划

1975 年发布的 Altair 8800 拉开了微型计算机革命的大幕。不到两年,Apple II、TRS-80 以及 Commodore PET 也都相继发布。全新的计算机的销量爆发式增长。1978 年,BBC 在一部名为 《 芯片来了 Now the Chips Are Down 》(LCTT 译注:对于非英国区域的读者,可以在 这里 观看该纪录片)的纪录片中探讨了这些新机器必将会带来的剧烈的社会变革。

该纪录片充满担忧。在前 5 分钟内,解说员提到这种微电子器件将“彻底改变我们的生活方式”。随着诡异的合成音乐的播放,屏幕上绿色的电脉冲围绕着放大后的芯片起舞,解说员进一步说,这种芯片“正是日本放弃造船业的原因,也将成为我们的孩子们长大后失业的原因”。该纪录片继续探讨了机器人如何用于汽车自动化组装,以及欧洲的手表业如何在与美国的电子表行业竞争中败下阵来。它指责英国政府在应对未来的大规模失业的准备上做得不够。

该纪录片据信可能在英国议会上展示过。 [4] 包括工业署和人力服务委员会在内的一些政府代表,开始对尝试提高英国公众对计算机的认识感兴趣。人力服务委员会为来自 BBC 的教育部门提供了资助,让他们的一个团队到日本、美国以及其他国家进行了实地考察。该研究团队完成了一份报告,历数了微电子技术在工业制造、劳动关系与办公室工作等领域的哪些方面将发生重大改变。70 年代末,BBC 决定制作一部十集电视连续剧,帮助普通英国人“学习如何使用和控制计算机,避免产生被计算机支配的感受” [5] 。这一努力最终成为了一个与 “ 成人认知计划 Adult Literacy Project ” 相似的多媒体项目。成人认知计划是 BBC 此前进行的一项工作,包括一部电视连续剧以及补充课程,帮助两百万人提高他们的阅读能力。

计算机认知计划背后的制作方热衷于以“实操”示例为特色的电视连续剧。这样如果观众拥有一台微型计算机在家里,他们就可以亲自动手尝试。这些例子必须使用 BASIC 语言,因为这是在几乎所有的微型计算机上都使用的编程语言(实际是整个 交互界面 shell )。但是制作者面临一个棘手的问题:微型计算机制造商均拥有他们自己的 BASIC 方言,因此不论他们选择哪一种方言,他们都不可避免地疏远大部分的观众。唯一切实可行的方案是创造一种全新的 BASIC 方言 —— BBC BASIC,以及与之配合使用的微型计算机。英国公众可以购买这种全新的微型计算机,并依照示例操作,而不需要担心软硬件上的差异带来的问题。

BBC 的电视制作人与节目主持人并不具备自行制造微型计算机的能力,因此他们汇总了一份他们预期的计算机的规范,并邀请英国的微型计算机公司推出满足该规范要求的新机器。这份规范要求提供一种相对更强劲的计算机,因为 BBC 的制作方认为相应的设备应当能够运行真实有用的应用程序。计算机认知计划的技术顾问还建议:如果必须要教授全体国人一种 BASIC 方言的话,那么最好选择表现良好的方言(他们可能没有确切地这样说,不过我认为这就是他们的真实想法)。BBS BASIC 通过允许递归调用与局部变量弥补了一些 BASIC 语言的常见缺点。 [6]

BBC 最终决定由一家位于剑桥的名为 Acorn Computers 的公司制造 BBC Micro 计算机。在选择 Acorn 公司的时候,BBC 没有接受来自 Clive Sinclair 的申请,他经营着一家 Sinclair Research 公司。1980 年,Sinclair 公司通过 Sinclair ZX80 为英国开拓了微型计算机的大众市场。虽然 Sinclair 公司的新产品 ZX81 更便宜,但是性能不足以满足 BBC 的要求。而 Acorn 的新型计算机(内部被称为 Proton)的原型机更加昂贵,但是性能更好,更具备扩展性。BBC 对此印象深刻。该型号的计算机从未以 “Proton” 的名字上市或销售过,因为它在 1981 年 12 月以 “BBC Micro” 的名字发布了。BBC Micro 又被亲切地称为 “The Beeb”,你可以以 235 英磅的价格购得其 16k 内存的版本,或者以 335 英磅的价格获得其 32k 内存的版本。

到了 1980 年,Acorn 在英国计算机行业逐渐衰微,但是 BBC Micro 帮助 Acorn 公司创立了其遗留至今的宝贵遗产。时至今日,世界范围内最流行的微处理器指令集是 ARM 架构,“ARM” 如今代表的是 “ 先进 RISC 架构设备 Advanced RISC Machine ”,然而最初它代表的是 “ Acorn RISC 架构设备 Acorn RISC Machine ”。ARM 架构背后的 ARM 控股公司就是 Acorn 公司在 1990 年之后的延续。

Picture of the BBC Micro.

BBC Micro 的一幅差劲的图片,我摄于美国加州山景城的 计算机历史博物馆 Computer History Museum

《计算机程序》电视连续剧

作为计算机认知计划的一部分,他们最终制作了十几部不同的电视连续剧。第一部作品是一部名为 《计算机程序The Computer Programme》 的十集电视连续剧。该连续剧在 1982 年初播出了十周。每周晚上有一百万人收看该节目,还有 25 万人在每周日与周一的下午收看该节目的重播。

该电视节目由两名主持人主持:Chris Serle 和 Ian McNaught-Davis。Serle 扮演初学者,而 McNaught-Davis 扮演专家,他具有专业的大型计算机编程经验。这是一个启发性的方式,有些 略显笨拙的过渡 —— Serle 经常直接从与 McNaught-Davis 的对话中,过渡到面向镜头的边走边说的讲述,此时你不禁会疑惑 McNaught-Davis 是否还站在画面之外。不过这意味着 Serle 可以表达观众肯定会有的关注 —— 他可能会惊恐地看着满屏的 BASIC 语言,并提出类似“这些美元符号是什么意思”的问题。在节目中的某些时刻,Serle 与 McNaught-Davis 会坐在计算机前进行事实上的结对编程。McNaught-Davis 会在各个地方留下一些线索,而 Serle 则试图将它们弄清楚。如果这一节目仅仅由一个无所不知的讲述者主持,那么它的亲和力就会差很多。

该节目也在努力展示计算在普通人生活中的实际应用。到 80 年代早期,家用电脑已经开始与年轻男孩和电子游戏联系在一起。计算机认知计划的制作方试图避免采访“令人印象深刻的、有能力的年轻人”,因为这可能会“加剧老年观众的焦虑”,而该节目正打算吸引这一人群对计算感兴趣 [7] 。在该系列的第一集中,该节目的 “现场” 记者 Gill Nevill 采访了一位女性,她购买了一台 Commodore PET 计算机用于辅助管理她的糖果店。这位名叫 Phyllis 的女性受访者看上去大约 60 多岁,但她在使用 PET 完成她的会计工作上没有任何问题,甚至已经开始使用 PET 为其他企业做计算机工作,这听上去像是一个有前途的自由职业的开端。Phyllis 说她并不介意计算机工作逐步取代她的糖果店生意,因为她更喜欢计算机工作。这次采访要是换成对一名青少年的采访,介绍了他是如何修改 《Breakout)》 电子游戏,以使之运行更快并更具挑战性,不过这就几乎鼓舞不了任何人。另一方面,如果普罗大众中的 Phyllis 都会使用计算机,那么你当然也可以。

虽然该节目以大量的 BASIC 编程为特色,不过它实际想要教给观众的是,计算机通常是如何工作的。该节目通过类比的方法解释了其中的一般原则。在第二集中,有一个关于 Jacquard 织机(LCTT 译注:中文网络译为雅卡尔提布机)的延伸讨论,主要是两个方面:其一,它揭示了计算机并不仅仅基于昨天发明的神秘技术 —— 计算的一些基本原则可以上溯到两百年前,就跟你可以在卡片上打孔来控制纺织机的想法一样简单;其二,经线与纬线的交织用来证明二元选择(即纬线是从上方还是下方穿过经线)在不断重复时足以产生巨大变化。当然,节目接下来继续讨论信息是如何使用二进制存储的。

在该节目中接下来是一个蒸汽管风琴的章节,该管风琴能够演奏编码在一卷长长的、分段的打孔卡片的音乐。这个类比用以解释 BASIC 中的 子程序 subroutine 。Serle 与 McNaught-Davis 将整卷的打孔卡片摊开在演播室的地板上,然后指出看上去像是重复的副歌的分段。McNaught-Davis 解释说,如果你将这些重复的卡片分段剪下,并以某种方式添加一条指令,回到第一次播放该副歌的最初的分段,这就是子程序。这是一个绝妙的解释,它在人们的脑海中的印象非常深刻。

我仅仅摘录了一些例子,不过我认为,总的来看该节目尤为擅长通过解释计算机实现功能所依赖的原理,使计算机不再神秘。这一节目本可以专注于 BASIC 教学,不过它并没有这样做。这被证明是一个相当明智的选择。在 1983 年写就的一篇回忆文章中,计算机认知计划的总制作人 John Radcliffe 如是写道:

如果计算机将如我们所相信的那样重要,对这一新主题的真正理解对每个人都很重要,也许与文字读写能力同等重要。不管是在我们这里还是在美国,在计算机认知的主要路线上的早期思路均集中于编程上。然而随着我们思想的发展,尽管我们意识到“动手”体验在个人计算机上的价值,但我们开始降低对编程的重视,而更多的强调广泛的理解,将微型计算机与大型计算机联系起来,鼓励人们获取一系列应用程序与高级语言的经验,并将这些经验同现实世界中的工业与商业活动中的经验联系起来……。我们相信,一旦人们掌握了这些最简单的原则,它们将可以进一步深入该主题。

后来,Radcliffe 又以类似的口吻写道:

围绕着这一系列节目的主要阐释目标有很多争论。一些人认为,在使用微型计算机上的实际细节上给予建议,对本项目而言尤为重要。但我们的结论是,如果该系列节目要拥有可持续性的教育价值,它就必须通过对计算原理的解释,成为进入真实计算世界的一种方式。这需要通过对微型计算机上的室内演示,通过类比方式解释其中的原则,以及通过电影说明实际应用的真实例子来实现。不仅仅是微型计算机,小型机以及大型机也将被展示。

我喜爱这一连续剧,尤其是其中关于小型机与大型机的部分。计算机认知计划背后的制作方旨在帮助英国人找准定位:计算身处何处又去向何方?计算机现在能做什么,未来又能做什么?学习一些 BASIC 语言是回答这些问题的一个部分,但是仅仅理解 BASIC 语言似乎不足以使人们认知计算机。

如今的计算机认知

如果你现在搜索“学习编码”,你看到的排在第一的是指向 Codecademy 网站的链接。如果要说存在一个“计算机认知计划”的现代替代品 —— 具有相同的影响与目标,那就是 Codecademy。

学习编码 learn to code ” 是 Codecademy 的口号。我认为我不是第一个指出这一点的人 —— 事实上我可能在某个地方读过这句话,只是现在拿来用而已。但是这里使用的是 “ 编码 code ” 而非 “ 编程 program ”,这说明了一些问题。这表明你学习的重要内容是如何读懂代码,如何阅读满屏的 Python 代码的意思,而不是目光呆滞、不知所云。我能够理解为什么对于普通人而言,这似乎是成为专业程序员的主要障碍。专业程序员整日盯着布满编程术语的计算机屏幕,如果我想要成为一个专业程序员,我最好确保我能够理解这些天书一样的字符。但是理解语法并不是成为程序员的最大的挑战。在更大的障碍面前,它很快将变成微不足道。仅仅以掌握一门编程语言的语法为目标,你可能能够 阅读 代码,但是无法做到 编写 代码以解决全新的问题。

我最近学习了 Codecademy 的 《编程基础》 课程。如果你对编程感兴趣(而不是对网页开发或者数据科学),并且没有任何编程经验,这是 Codecademy 推荐你学习的课程。里面有几节关于计算机科学史的课时,不过都是流于表面而没有深入研究。(感谢上帝,一位高尚的互联网秩序义务维护者 指出了其中存在的一个特别恶劣的错误)。该课程的主要目的是教授你编程语言的通用结构要素:变量、函数、控制流、循环等。换句话说,该课程聚焦于为了让你理解天书般的代码中的模式,而所需要知道的内容。

公平地看,Codecademy 也提供了其他内容深入的课程。但是即使是如 《计算机科学之路》 这样的课程也几乎只仅仅专注于编程以及程序中表达的概念。有人可能会反驳说这才是重点 —— Codecademy 的主要特点就是提供给你一些交互式的、带有自动反馈的编程课程。在有限的自动化课程中能够灌输给学员的内容只有这么多,因此学员的脑海里也没有更多的空间容纳更多其他的内容。但是负责启动计算机认知计划的 BBC 的制作人也面临同样的问题。他们意识到受限于他们的传播媒介,“通过电视节目所能获得的学习内容的容量也是受限的” [8] 。虽然在他们所能传达的信息总量上存在相似的限制,但是 BBC 的制作人选择强调在学习 BASIC 语言上的一般原则。难道 Codecademy 就不能将其中一两节交互式可视化的课时替换为编织经线与纬线的 Jacquard 织机的案例吗?

我一直在大声鼓吹 “一般原则”,因此让我再解释下我认为的一般原则是什么,以及为什么它们如此重要。J. Clark Scott 出了一本有关计算机的书,书名为 《 但是它怎么知道? But How Do It Know? 》。这个书名来自书的序言里的一则笑话:一个店员向人群推销保温瓶,说保温瓶可以让热食始终是热的,冷食始终是冷的。一名听众对这个新发明感到惊讶,问道,但是它怎么知道(根据你给它的食物类型的不同选择做相应的事情呢)?笑点在于保温瓶当然不能感知食物的温度然后据此做出决定 —— 保温瓶仅仅制作成保证冷食必然保持冷的,热食必然保持热的就可以了。人们也以(笑话中的那个听众)一样的方式看待计算机,相信计算机就是数字大脑,能够基于提供给它们的代码 “选择” 做一件事或者另一件事。但是了解一些有关计算机如何工作的知识,哪怕是很初级水平的理解,也能让(人们理解中的)计算机摆脱(做判断的)侏儒。这就是为什么 Jacquard 织机是一个很好的有助理解的例子。一开始它似乎是一种难以置信的设备,它读取打孔卡片,然后以某种方式“知道”编织正确的样式。现实是显而易见的:每一行孔都对应一根线,而一行中有孔的地方对应着提起的线。理解了这些虽然不会有助于你用计算机完成新的事情,但是将使你自信于你不是在跟某些神秘事物打交道。我们应当尽快将这种自信的感受传授给初学者。

唉,可能真正的问题是没有人想要了解 Jacquard 织机。根据 Codecademy 如何强调他们教授的专业应用来判断,很多人开始使用 Codecademy 可能是因为他们相信这有助于 “提升” 他们的职业水平。他们没有来由地相信,首要的问题是理解编程的专业术语,因此他们才想要 “学习编码”。他们想要在他们所拥用的。每天晚上晚餐与就寝之间的一两个小时里尽快完成这件事。Codecademy 毕竟只是一门投其所好的生意,而非一些有关 18 世纪就发明了的机器的间接说明。

另一方面,计算机认知计划是供职于 BBC 的一群制作人与公务员所认为的,将计算机的使用教给国民的最好的方式。我承认,因为这一群人教会大众他们无法以己之力所能求得的事物,而赞美这一群人的建议多少有点精英主义。但我情不自禁认为他们做对了。许多人使用 BBC Micro 第一次学会了使用计算机,他们中的很多人进而成为了成功的软件开发者或游戏设计师。正如我曾经所说的,我怀疑在计算机已经变得相对简单的时代里,学习使用计算机是一个巨大的优势。不过或许这群人所拥有的另一个优势在于有像 《计算机程序》 这样的尽己所能不仅仅教授编程,而且教授计算机是为什么又是如何运行程序的节目。在看完 《计算机程序》 之后,你可能并不能理解计算机屏幕上的所有天书般的编程术语,但是实际上你也并不需要,因为你知道无论 “代码” 是什么样子,计算机总是在重复做基础的事情。在完成了 Codecademy 上的一到两个课程之后,你可能能够感受一些天书般的编程术语,但是对你来说,一台计算机仍然只是一台能够以某种方式将天书般的字符转化为运行的软件的魔法机器。但这并不是计算机认知。


  1. Robert Albury and David Allen, Microelectronics, report (1979). ↩︎
  2. Gregg Williams, “Microcomputing, British Style”, Byte Magazine, 40, January 1983, accessed on March 31, 2019, https://archive.org/stream/byte-magazine-1983-01/1983_01_BYTE_08-01_Looking_Ahead#page/n41/mode/2up. ↩︎
  3. John Radcliffe, “Toward Computer Literacy,” Computer Literacy Project Achive, 42, accessed March 31, 2019, https://computer-literacy-project.pilots.bbcconnectedstudio.co.uk/media/Towards Computer Literacy.pdf. ↩︎
  4. David Allen, “About the Computer Literacy Project,” Computer Literacy Project Archive, accessed March 31, 2019, https://computer-literacy-project.pilots.bbcconnectedstudio.co.uk/history. ↩︎
  5. ibid. ↩︎
  6. Williams, 51. ↩︎
  7. Radcliffe, 11. ↩︎
  8. Radcliffe, 5. ↩︎

via: https://twobithistory.org/2019/03/31/bbc-micro.html

作者:Two-Bit History 选题:lujun9972 译者:CanYellow 校对:wxy

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

C++ 之父认为 Rust 的安全性并不优于 C++

C++ 之父 Bjarne 最近发布了一篇文章,号召认真思考 “安全” 问题;然后做一些明智的事情。Bjarne 对 NSA 关于软件内存安全的报告做出了回应,因为该报告将 C 和 C++ 排除在安全之外。Bjarne 不认为报告中任何一种 “安全” 语言的选择在他所关心的使用范围内比 C++ 优越。他认为,在 NSA 的文件中,“‘安全’仅限于内存安全,而忽略了语言可能(以及将)被用来违反某种形式的安全和保障的十几种其他方式。”

消息来源:Slashdot
老王点评:确实,安全缺陷本来不是 C++ 或者大部分流行的编程语言的一部分,编程的人才是安全漏洞的引入者。问题是,Rust 可以通过语言本身的机制来避免这些本可以避免的安全漏洞。

OpenAI 说 GPT-4 的 100 万亿参数数量是“胡说”

OpenAI 的 CEO 澄清了一些关于 GPT-4 的流言。他说 GPT-4 的发布没有确定的时间框架,“它会在某个时间点出现,当我们有信心能够安全和负责任地完成它时”。并称那张比较了 GPT-3(1750 亿)和 GPT-4(100 万亿)中的参数数量的图表“完全是胡说”。而对于通用人工智能(AGI),他说,“人们在乞求失望,他们会失望的……我们没有一个真正的 AGI。”他也认为 ChatGPT 将杀死谷歌的预测是错误的,“我确实认为搜索有一个变化,可能会在某个时候到来 —— 但变化短期内不会像人们想象的那样剧烈。”

消息来源:The Verge
老王点评:看到 OpenAI 的创始人还如此清醒,这很好。我也为我之前传播的那张错误的参数对比图道歉。

GitHub 将停止支持 Subversion

GitHub 宣布将于 2024 年 1 月 8 日停止支持 Subversion(SVN)。GitHub 是在 2010 年的愚人节这天宣布支持 Subversion 版本控制系统(一度被视为玩笑),当时集中式版本控制系统是主流,分布式版本控制系统如 Git 还是一个新人,还没有迹象显示它将统治世界。通过在 GitHub 后端原生支持 Subversion,GitHub 让用户能更容易迁移到 Git。今天 Git 在开发者中的使用比例高达 94%,Subversion 的使用比例越来越少。

消息来源:Solidot
老王点评:谁能想到,当年流行的 Subversion 等版本控制系统都被 Git 所取代了。想想,Linus 真是天命之子啊。

我请社区的开源从业者分享了他们关于编写有用的 Git 提交信息的建议。

最近,当需要更新时,我一直在密切关注从产品和服务获得的变更日志。以下是一些示例:

  • 修复了一些错误。
  • 进行了一些可访问性改进。
  • 我们已经进行了改进,并修复了错误,以实现更顺畅地运行。

当我想到我还是一名初级开发人员写的一些首次提交信息时,我不得不沮丧地垂下头:

  • 用鼠标点了一下,现在一切似乎都正常了。
  • 执行了程序员 X 告诉我的操作,现在横幅是蓝色的。

这可真令人沮丧!我向我们的贡献者们提出了以下问题:

  • 什么是好的 Git 提交信息?
  • 什么是坏的 Git 提交信息?
  • 你认为一个项目应该有哪些关于提交信息所写内容的规则?

以下是他们的答案:

易阅读的文笔是关键

与你写任何东西一样,你应该考虑谁会阅读它。然后相应地调整信息的数量和深度。

提高你的自然语言和写作技能对于软件开发的职业生涯顺利发展至关重要。重要的不仅仅是代码。

—— Camilla Conte

具有描述性,不要假设

我在 OpenStack 社区中花了很多时间合作,与我在像“野外”的其他随意的项目中看到的相比,它的代码审查者有一些相当严格的标准。

我花在撰写一条可靠的提交信息的时间,往往要比编写实际的代码实现或修复程序的时间长得多。有时,提交信息可能会比它们解释的代码变化长很多倍。

总结一些贡献者指导:

  • 描述为什么要做出改变,而不仅仅是改变了什么
  • 第一个提交行是最重要的(就像电子邮件的主题行)
  • 不要假设审查者了解你正在修复的原始问题
  • 不要假设审查者可以访问外部 Web 服务或网站(总结缺陷报告和其他相关讨论)
  • 不要假设代码是不言自明的和自我说明的(尽管没有必要重复你在代码注释中也提出的观点)
  • 不要只包含与更改的早期修订相关的信息(我们希望贡献者将修订压扁在一起,并相应地编辑其提交信息)。

《OpenStack 贡献者指南》中有一个关于该主题的 简短章节

—— Jeremy Stanley

未来的你会感谢自己

我非常同意 Jeremy 的观点。+1000。

Jeremy 说:“描述为什么要做出改变,而不仅仅是改变了什么。”

想象一下,你是旁观者,在遥远的未来试图理解这个提交。

正如老话所说,设身处地为他人着想。

—— Leigh Morresi

使用 bug ID

我建议在提交信息的开头添加 bug ID,这样在以后使用 grep 命令 跟踪提交信息时就会更方便。

例如:

$ git commit -m "BZ#19xxxxx

要写出深思熟虑的提交,请考虑以下事项:

  • 我为什么要做这些更改?
  • 我的更改产生了什么影响?
  • 为什么有更改的必要?
  • 更改的依据是什么?

—— Agil Antony

讲述整个故事

我喜欢想象每个提交信息都有一个隐藏的前缀,上面写着 “By applying this(通过应用这个)”。

一个好的提交信息包括将要发生的事情以及原因。仅仅有工单作参考是不够的,因为这分散了信息;Git 是去中心化的。作为一名软件开发人员,我想知道为什么当前要考虑做出更改。正在解决的具体问题是什么?考虑(并放弃)了哪些替代解决方案?在创建变更集的过程中发现了哪些影响当前内容的意外情况?

缩短提交信息没有什么好处。你未来的自己和未来的同事会感激你深入地解释了问题,以及为什么这个变更集是解决方案。认真学习和利用那些内容丰富的“烹饪”博客。然而,在此,仅仅是把生活经验替换成了项目的问题罢了(LCTT 译注:意思是要认真学习和模仿优秀、详细的提交信息)。

—— Lisa Seelye

但不要过于冗长

一个好的 Git 提交信息包含有关所做操作的信息,而不要包含其他信息。例如,如果你需要更新 .gitignore,只需写 “更新了 .gitignore” 即可。人们可以自行深入到提交本身中了解更多细节。它不需要冗长。

糟糕的提交信息类似于“哦,糟糕”或“试试这个”。当然,我也曾经犯过这样的错误,但这对于任何需要一目了然地查看提交信息的人来说都没有任何帮助。

提交信息的规则非常主观。他们可能因领导和团队而异。但至少要提供一些有关提交的上下文信息。特别是如果它是一个大的更改。没有人有时间浏览 1000 多个具有大量更改历史的文件。

—— Miriam Goldman

使用现在时

我喜欢项目经理风格的提交信息,用现在时而不是将来时的术语编写(例如,“添加” 而不是“已添加”)。然而,这通常只有在频繁提交时才有可能。当你面临最后期限时,你能记住的只有“我是如何做的”而已。然而,写得好的提交不仅有助于合作者,而且有助于提交者回忆历史。

—— Chris Okpada

不要依赖链接

我想提醒同事们的一件事是,你不仅仅是向给你的提交作批准的人解释。你还要向未来的开发人员和用户解释,他们在使用 bisect 或 blame 定位问题时发现了这个提交,并试图了解其相关性。

如果提供的唯一的上下文是指向某个外部系统的链接,并且在未来很长一段时间内,它所链接的系统不再使用,或者该用户无法访问,那么你的提交信息将变得无用,可能还不如空白。

我经常去挖掘一些开源项目的 Git 历史,发现有些提交信息无非就是一个 Bug ID,或者是某个公司内部的和专用的缺陷跟踪器的链接。

不要依赖链接!

—— Jeremy Stanley

清晰简洁的变更日志

作为一名发布沟通经理,我会经常阅读整个发布版块。我还会与开发人员会面,讨论任何尚未明确的领域。然后我提前测试了版本。之后,我将通过寻找变更日志和相应的修订或新内容来撰写发布文章。

变更日志是开发人员的个人提醒,但也有相应的提议和工单。你应该适当地将产品名称大写,使用拼写检查器,与标点符号和句子结构保持一致。首席开发人员也应该校对这些。你的客户,即开发人员,正在阅读这些内容。在运行更新之前,他们应该了解哪些信息能更好地为客户服务?

—— Courtney Robertson

具体一点

作为一个经常性的发布经理,我喜欢带有组件名称的提交的信息,以及对更改内容的简要描述。在我们忘记了你聪明的分支名称之后,还可以参考一下这项工作的请求来自何处,这有助于将修复程序联系在一起。

  • “修复致命错误”并不是理想的提交。
  • “ISS-304: 修复具有合作伙伴角色的用户在登录访问控制功能中的致命错误”更好。
  • “ISS-304: 登录访问控制:修复 getPartnerId() 的致命错误”也更好。

我可以查看 Git 提交、分支、合并提交之间的整个关系,并检查更改的各个行和文件。但我在发布过程中没有这样的时间。我希望能够在项目管理工具回溯这项工作的源头,了解哪些组件正在被更改,以及以何种方式进行更改。

—— Ryan Price

让它成为一种习惯

我最喜欢犯的错误是“在我切换分支之前提交”,因为我必须处理其他更紧急的事情。有时候,我需要把我目前的工作提交给一个完全不同的项目。我的经理的策略是让我们像平时一样工作。但当我们变基时,他希望我们在有意义的地方压扁提交,并编写更好的信息。我不能说我们总是这样做,但他的方法确实有道理。

我也有很多“这个坏了,不知道为什么”类型的信息(哈哈),我尝试了一些东西,但想在尝试其他东西之前提交该尝试,以防方法 A 比方法 B 更接近解决问题。我已经写了 10 多年了。

—— RachieVee

你的提交信息建议或提示是什么?让我们在评论中知道。


via: https://opensource.com/article/22/12/git-commit-message

作者:AmyJune Hineline 选题:lkxed 译者:ZhangZhanhaoxiang 校对:wxy

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

遇见 Wordbook:一个 GNOME 桌面的离线词典应用。

我们大多在谷歌、DDG 或其他搜索引擎上搜索单词信息,如含义、同义词、反义词等。

由于今天几乎每个人都有一个连接互联网的手机,在谷歌上搜索可能更容易。

但对于离线使用,在没有互联网连接的情况下,你可以尝试 Wordbook

Wordbook:离线词典应用

这个应用在本质上是非常基础的,但它的能力足以完成工作。Wordbook 目前支持一个英英字典。在其核心部分,它使用 Open English WordNet 数据库 进行定义。Open English Wordnet 是 Princeton Wordnet项目 的一个开源复刻。

Wordbook 应用还可以使用 eSpeak – 一个自由开源的语音合成器来发音。

Wordbook - 英译英词典应用

然而,在第一次运行时,它需要一次性上网,以下载离线数据。仅此而已。其他值得注意的功能包括实时搜索、双击搜索和带有 HTML 标记的自定义定义。

Wordbook 是一个 GNOME 应用,使用现代的 GTK4 和 libadwaita 构建。因此,它与 GNOME 桌面的浅色和深色主题整合得很好。你也可以使用 Wordbook 的随机单词功能来学习新单词以增加你的词汇量。

安装

你可以很容易地从 Flathub 将其作为 Flatpak 应用安装。为 Flatpak 和 Flathub 设置你的系统,然后从终端使用以下命令安装它:

flatpak install com.github.fushinari.Wordbook

安装后,你可以在应用菜单中找到它。

结束语

我希望你在学校或商业工作中使用这个小小的应用。如果你在写论文和较长的段落,离线特性是很方便的。

你知道其他 Linux 的离线字典吗?请在评论栏里告诉我们。


via: https://www.debugpoint.com/wordbook-offline-dictionary/

作者:Arindam 选题:lkxed 译者:geekpi 校对:wxy

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

谷歌请回创始人帮助谷歌以打赢 AI 之战

上个月,谷歌的创始人拉里·佩奇和谢尔盖·布林与该公司高管举行了几次会议,以应对 ChatGPT 对该公司的搜索业务的挑战。对谷歌来说,ChatGPT 看起来似乎可以提供一种在互联网上搜索信息的新方法。这两位创始人自从 2019 年离开谷歌的日常工作后,就没有在该公司呆过多少时间,他们审查了谷歌的人工智能产品战略,批准了将更多聊天机器人功能纳入谷歌搜索引擎的计划并提出了想法。

消息来源:《纽约时报》
老王点评:当年靠着搜索变成了一家独大,如今却有可能被 AI 掀翻。

苹果开源了 40 年的 Lisa 操作系统

作为苹果 Lisa 电脑发布四十周年庆典的一部分,苹果通过计算机历史博物馆公开了 Lisa OS 3.1 操作系统的源代码,它采用了苹果学术许可证协议,包括 26MB 源代码,超过 1300 个源文件。苹果 Lisa 发布于 1983 年 1 月 19 日,其名字来自于乔布斯的女儿。它是一款基于鼠标 GUI 的商用计算机,但由于太过昂贵而在商业上失败,苹果于 1985 年终止了该项目。但它为之后的 Macintosh 奠定了基础。

消息来源:计算机历史博物馆
老王点评:欢迎苹果公司将古老的操作系统“文物”放入博物馆。

美科技公司反对对科技算法提起诉讼

在美国最高法院关于 YouTube 算法的一个关键案件中,众多企业、互联网用户、学者甚至人权专家为大科技公司的责任盾牌辩护,他们认为,如果将人工智能驱动的推荐引擎排除在联邦法律保护之外,会对开放的互联网造成全面的改变。他们表示美国联邦法律《通信礼仪法》第 230 条对网络的基本功能至关重要,该法条被用来保护所有网站使其免受第三方内容的诉讼。他们认为,允许对科技行业算法提起诉讼的裁决,可能会甚至导致未来对非算法形式的推荐提起诉讼,并可能对个别互联网用户提起有针对性的诉讼。

消息来源:CNN
老王点评:算法有罪吗?有意的算法作恶应该被惩处吗?无意的算法错误应该被惩罚吗?黑盒式的 AI 决策的责任该由谁承担?这个信息时代打破了很多既有认知。

回音

  • 受到批评后,CNET 暂停 了用 AI 辅助(#883) 撰写文章,并辩称,“我们不是秘密的做,而是悄悄的做。”