2022年6月

Fedora 内核团队正在为 Linux 内核 5.18 进行最终集成。这个版本刚刚发布,很快就会出现在 Fedora 中。因此,Fedora 内核和 QA 团队组织了一个测试周,截止日期为 2022 年 6 月 12 日,星期日。 请参阅 维基页面 来获取你将要参与的测试镜像链接。继续阅读下文,可了解更多细节~

测试周是如何运作的?

测试周是一个人人都可以参与的活动。在测试周,任何人都可以为 Fedora 即将发布的版本查漏补缺,确保它最终能够运行良好。Fedora 社区成员会经常参与这个活动,我们同时也欢迎公众参加这些活动。如果你以前从未做过贡献,那么这是一个绝佳的上手机会。

要想做出贡献,你只需要能够执行以下操作即可:

  • 下载测试资料,包括一些大文件
  • 阅读并按照说明一步一步地进行操作

内核测试日的 维基页面 提供了很多关于测试内容和测试方法的有用信息。完成一些测试后,你可以在测试日的 Web 应用 上记录下你的测试结果。如果你在活动的当天或前后有空,请进行一些测试并报告你的结果。不知道该怎么做?没关系,我们有一份文件,其中提供了 所有步骤

希望能在测试日见到你,预祝测试愉快~


via: https://fedoramagazine.org/contribute-at-the-fedora-linux-37-test-week-for-kernel-5-18/

作者:Sumantro Mukherjee 选题:lkxed 译者:lkxed 校对:wxy

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

真“人工”智能:AI 购物创业公司的 AI 由廉价工人充当

一家 AI 购物创业公司 Nate 宣称可以在零售商的网站上自动填写购物者的联系信息和支付信息。这可以省去客户在手机上输入一两分钟数据的麻烦,为此,Nate 向购物者收取每笔交易 1 美元的费用。据消息人士透露,实际上该公司在 2021 年促成的大部分交易都是依靠在菲律宾雇佣的工人手动在零售商网站上输入数据。有时候,订单是在客户点击购买按钮的几个小时之后,才由“人工”智能下达。

消息来源:theInformation
老王点评:除了速度慢点,这其实是名副其实的“人工”智能嘛~

英特尔探索在 Z 级超算中使用 RISC-V 架构

英特尔和巴塞罗那超算中心宣布将投资 4 亿欧元,探索在 Zettascale 级(即超过 1 zettaflops 或超过一千 exaflops)超算中使用 RISC-V 架构。联合实验室将开发基于 RISC-V 架构的处理器,用于 AI 加速器、自主驾驶汽车和高性能计算。但这并不意味着英特尔会在其首批 Zettascale 级超算中使用基于 RISC-V 的 CPU,而只是表示该公司对 RISC-V 架构技术的投资,英特尔去年宣布到 2027 年时建造首台 Zettascale 级超算。

消息来源:TomsHardware
老王点评:前两天才刚刚 E 级超算登顶,过两年就要 Z 级了?!而且是在 RISC-V 上,看来 RISC-V 很有前景啊。前段时间,我在国内 RISV-V 初创公司赛昉科技的朋友还专门送了我一块他们的 RISC-V 板子 VisionFive,我过两天拍个开箱视频给大家。

Edge 浏览器的睡眠标签功能已节省 273PB 内存

微软 Edge 官方账号表示,在过去 28 天时间里,“睡眠标签”功能节省了超过 273PB(273000 TB)的内存。睡眠标签功能在超过 60 亿个标签中发挥了作用,每个标签节省了大约 40MB 的内存。睡眠标签在所有安装的 Edge 上都是默认启用的。它在闲置两小时后会自动让不活动的网页进入睡眠状态。

消息来源:Neowin
老王点评:这个功能是不错,不过没想到这个宣传可以将节省的内存加起来算,要这么算,不如 Chrome 出来说说过去一个月总计用了多少内存吧。

这篇快速指南是为了帮助你修复 “yay error: while loading shared libraries: libalpm.so.12” 错误。

如果你在系统中运行 Arch Linux 的时间比较长,那么由于其滚动发布性质以及你的硬件支持,程序可能会损坏。 如果你使用 AUR 助手 Yay,那么有时,由于其他软件包的多次安装升级,Yay 可能会损坏。

Yay 助手一般是非常稳定的,但有时它会被搞乱,在修复好之前,你不能使用它安装任何程序。而其中一个令人头疼的错误是这样的:

yay: error while loading shared libraries: libalpm.so.12: cannot open shared object file: No such file or directory

这个错误特别是在升级到 pacman 6.0 后出现的,因为共享库不兼容。

error while loading shared libraries - yay

如何解决 “yay: error while loading shared libraries: libalpm.so.12”

这个错误只能通过完全卸载 yay 来解决,包括它的依赖。然后重新安装 yay

没有其他方法来解决这个错误。

我们已经有一个 如何安装 Yay 的指南,然而,以下是修复的步骤。

从 AUR 克隆 yay 仓库并构建。在终端窗口中依次运行以下命令。

cd /tmp
git clone 'https://aur.archlinux.org/yay.git'
cd /tmp/yay
makepkg -si
cd ~
rm -rf /tmp/yay/

安装完成后,你可以尝试运行给你带来这个错误的命令。然后就好了。如果你仍然有这个错误,请在下面的评论区告诉我。

很多人都遇到了这个问题,网络上有 几个讨论。以上是解决这个错误的唯一办法。而且我在任何地方都找不到这个问题的确切根源,除了它是在 pacman 6.0 更新后开始的。


via: https://www.debugpoint.com/2021/07/yay-error-libalpm-so-12/

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

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

想象一下,你坐在河边,河岸上如茵绿草,不远处湍急河流;午后的阳光慵懒惬意,使人陷入冥想哲思,不觉开始思考眼前的河流是否真实存在。诚然,几米外确实有河水奔流而下。不过,我们所称为“河流”的存在究竟是什么呢?毕竟,河水奔流不息,一直处于变化之中。似乎,“河流”这个词无法指代任何固定不变的事物。

2009 年,Clojure 的创始人 里奇·希基 Rich Hickey 发表了 一场精彩的演讲,探讨了为什么上文那样的哲学窘境会给面向对象程序的编程范式带来难题。他认为,人们看待计算机程序中的对象与看待河流的逻辑是一样的:我们想象对象是固定不变的,即使对象的许多或者说全部的属性都无时无刻不处于变化之中。所以,这种逻辑并不正确,我们无法区分在不同状态下同一对象实例的不同之处。程序中没有明确的时间的概念。人们只是单纯地用着同一个名字,以期在引用对象时,对象能够处于预期的状态中。这样,我们也就难免会遇到 故障 bug

希基总结道,这一难题的应对办法就是人们应该将世界建模成作用于不可变数据的 进程 process 的集合,而不是可变的对象的集合。换句话说,我们应把每个对象看作一条“河流”,因果相连。总结说来,你应该使用 Clojure 等函数式语言。

作者在远足途中思考面向对象程序设计的本体论问题。

自从希基发表演讲之后,人们对函数式编程语言的兴趣不断提升,主流的面向对象编程语言也大多都采用了函数式编程语言。尽管如此,大多数程序员依旧沿用自己的老一套,继续将对象实例化,不断改变其状态。这些人长此以往,很难做到用不同的视角看待编程。

我曾经想写一篇关于 Simula 的文章,大概会写到我们今天所熟知的面向对象的理念是何时又是如何应用到程序语言之中的。但是,我觉得写当初的 Simula 与如今的面向对象程序设计的 迥然不同之处,会更有趣一些,这我敢打包票。毕竟,我们现在熟知的面向对象程序设计还未完全成型。Simula 有两个主要版本:Simula I 和 Simula 67。Simula 67 为世界带来了 class 类的继承 class hierarchy 以及 虚拟方法 virtual method ;但 Simula I 是一个初稿,它实验了如何能够将数据和进程捆绑起来的其他设想。Simula I 的模型不是希基提出的函数式模型,不过这一模型关注的是随时间展开的 进程,而非有着隐藏状态的对象之间的相互作用。如果 Simula 67 采用了 Simula I 的理念,那么我们如今所知的面向对象程序设计可能会大有不同——这类偶然性启示我们,不要想着现在的程序设计范式会一直占据主导地位。

从 Simula 0 到 Simula 67

Simula 是由两位挪威人 克里斯汀·尼加德 Kristen Nygaard 奥利-约翰·达尔 Ole-Johan Dahl 创建的。

20 世纪 50 年代末,尼加德受雇于 挪威防务科学研究中心 Norwegian Defense Research Establishment (NDRE),该研究中心隶属于挪威军方。在那里,他负责设计 蒙特卡洛模拟方法 Monte Carlo simulations ,用于核反应堆设计与操作研究。最初,那些模拟实验是由人工完成的;后来,实验在 Ferranti Mercury 电脑 [1] 上编入程序运行。尼加德随后发现,将这些模拟实验输入电脑需要一种更有效的方式。

尼加德设计的这种模拟实验就是人们所知的“ 离散事件模型 discrete event model ”,这种模拟记录了一系列事件随着时间改变系统状态的进程。但是问题的关键在于模拟可以从一个事件跳跃到另一个事件中,因为事件是离散的,事件之间的系统不存在任何变化。根据尼加德和达尔在 1966 年发表的一篇关于 Simula 的论文,这种模型被迅速应用于“神经网络、通信系统、交通流量、生产系统、管理系统、社会系统等” [2] 领域的分析。因此,尼加德认为,其他人描述模拟实验时,可能也需要更高层级的模型。于是他开始物色人才,帮助他完成他称之为“ 模拟语言 Simulation Language ”或者“ 蒙特卡洛编译器 Monte Carlo Compiler ”的项目 [3]

达尔当时也受雇于挪威防务科学研究中心,专攻语言设计,此时也加入了尼加德的项目,扮演“沃兹尼亚克”的角色(LCTT 译注:指苹果公司联合创始人斯蒂夫·盖瑞·沃兹尼亚克)。在接下来一年左右的时间,尼加德和达尔携手开发了 Simula 0 语言。 [4] 这一语言的早期版本仅仅是在 ALGOL 60 基础上进行的较小拓展,当时也只是打算将其用作预处理程序而已。当时的语言要比后来的编程语言抽象得多,其基本语言结构是“ 车站 stations ”与“ 乘客 customers ”,这些结构可以用于针对具体某些离散事件网络建立模型。尼加德和达尔给出了一个模拟飞机离港的例子。 [5] 但是尼加德和达尔最后想出了一个更加通用的语言结构,可以同时表示“车站”和“乘客”,也可以为更广泛的模拟建立模型。这是两个主要的概括,它改变了 Simula 作为 ALGOL 专属包的定位,使其转变为通用编程语言。

Simula I 没有“ 车站 stations ”和“ 乘客 customers ”的语言结构,但它可以通过使用“ 进程 process ”再现这些结构。(LCTT 译注:此处使用的“进程”,与当前计算机中用来指代一个已执行程序的实体的概念不同,大致上,你可以将本文中所说的“进程”理解为一种“对象”。)一个进程包含大量数据属性,这些属性与作为进程的 操作规程 的单个行为相联系。你可能会把进程当作是只有单个方法的对象,比如 run() 之类的。不过,这种类比并不全面,因为每个进程的操作规程都可以随时暂停、随时恢复,因为这种操作规程属于 协程 coroutine 的一种。Simula I 程序会将系统建立为一套进程的模型,在概念上这些进程并行运行。实际上,一个时间点上能称为“当前进程”的只有一个进程。但是,一旦某个进程暂停运行,那么下一个进程就会自动接替它的位置。随着模拟的运行,Simula 会保持一个 “ 事件通知 event notices ” 的时间线,跟踪记录每个进程恢复的时间。为了恢复暂停运行的进程,Simula 需要记录多个 调用栈 call stacks 的情况。这就意味着 Simula 无法再作为 ALGOL 的预处理程序了,因为 ALGOL 只有一个 调用栈 call stacks 。于是,尼加德和达尔下定决心,开始编写自己的编译器。

尼加德和达尔在介绍该系统的论文中,借助图示,通过模拟一个可用机器数量有限的工厂,阐明了其用法。 [6] 在该案例中,进程就好比订单:通过寻找可用的机器,订单得以发出;如果没有可用的机器,订单就会搁置;而一旦有机器空出来,订单就会执行下去。有一个订单进程的定义,用来实例化若干种不同的订单实例,不过这些实例并未调用任何方法。该程序的主体仅仅是创建进程,并使其运行。

历史上第一个 Simula I 编译器发布于 1965 年。尼加德和达尔在离开挪威防务科学研究中心之后,就进入了 挪威计算机中心 Norwegian Computer Center 工作,Simula I 也是在这里日渐流行起来的。当时,Simula I 在 UNIVAC 公司的计算机和 Burroughs 公司的 B5500 计算机上均可执行。 [7] 尼加德和达尔两人与一家名为 ASEA 的瑞典公司达成了咨询协议,运用 Simula 模拟加工车间。但是,尼加德和达尔随后就意识到 Simula 也可以写一些和模拟完全不搭边的程序。

奥斯陆大学 University of Oslo 教授 斯坦因·克罗达尔 Stein Krogdahl 曾写过关于 Simula 的发展史,称“真正能够促使新开发的通用语言快速发展的催化剂”就是 一篇题为 《记录处理》 Record Handling 的论文,作者是英国计算机科学家 查尔斯·安东尼·理查德·霍尔 C.A.R. Hoare [8] 假如你现在读霍尔的这篇论文,你就不会怀疑这句话。当人们谈及面向对象语言的发展史时,一定会经常提起霍尔的大名。以下内容摘自霍尔的《记录处理》一文:

该方案设想,在程序执行期间,计算机内部存在任意数量的记录,每条记录都代表着程序员在过去、现在或未来所需的某个对象。程序对现有记录的数量保持动态控制,并可以根据当前任务的要求创建新的记录或删除现有记录。

计算机中的每条记录都必须属于数量有限但互不重合的记录类型中的一类;程序员可以根据需要声明尽可能多的记录类型,并借助标识符为各个类型命名。记录类型的命名可能是普通词汇,比如“牛”、“桌子”以及“房子”,同时,归属于这些类型的记录分别代表一头“牛”、一张“桌子”以及一座“房子”。

霍尔在这片论文中并未提到子类的概念,但是达尔由衷地感谢霍尔,是他引导了两人发现了这一概念。 [9] 尼加德和达尔注意到 Simula I 的进程通常具有相同的元素,所以引入父类来执行共同元素就会非常方便。这也强化了“进程”这一概念本身可以用作父类的可能性,也就是说,并非每种类型都必须用作只有单个操作规程的进程。这就是 Simula 语言迈向通用化的第二次飞跃,此时,Simula 67 真正成为了通用编程语言。正是如此变化让尼加德和达尔短暂地萌生了给 Simula 改名的想法,想让人们意识到 Simula 不仅仅可以用作模拟。 [10] 不过,考虑到 “Simula”这个名字的知名度已经很高了,另取名字恐怕会带来不小的麻烦。

1967 年,尼加德和达尔与 控制数据公司 Control Data 签署协议,着手开发Simula 的新版本:Simula 67。同年六月份的一场会议中,来自控制数据公司、奥斯陆大学以及挪威计算机中心的代表与尼加德和达尔两人会面,意在为这门新语言制定标准与规范。最终,会议发布了 《Simula 67 通用基础语言》,确定了该语言的发展方向。

Simula 67 编译器的开发由若干家供应商负责。 Simula 用户协会 The Association of Simula Users (ASU)也随后成立,并于每年举办年会。不久,Simula 67 的用户就遍及了 23 个国家。 [11]

21 世纪的 Simula 语言

人们至今还记得 Simula,是因为后来那些取代它的编程语言都受到了它的巨大影响。到了今天,你很难找到还在使用 Simula 写程序的人,但是这并不意味着 Simula 已经从这个世界上消失了。得益于 GNU cim,人们在今天依然能够编写和运行 Simula 程序。

cim 编译器遵循 1986 年修订后的 Simula 标准,基本上也就是 Simula 67 版本。你可以用它编写类、子类以及虚拟方法,就像是在使用 Simula 67 一样。所以,用 Python 或 Ruby 轻松写出短短几行面向对象的程序,你照样也可以用 cim 写出来:

! dogs.sim ;
Begin
    Class Dog;
        ! The cim compiler requires virtual procedures to be fully specified ;
        Virtual: Procedure bark Is Procedure bark;;
    Begin
        Procedure bark;
        Begin
            OutText("Woof!");
            OutImage;           ! Outputs a newline ;
        End;
    End;

    Dog Class Chihuahua;        ! Chihuahua is "prefixed" by Dog ;
    Begin
        Procedure bark;
        Begin
            OutText("Yap yap yap yap yap yap");
            OutImage;
        End;
    End;

    Ref (Dog) d;
    d :- new Chihuahua;         ! :- is the reference assignment operator ;
    d.bark;
End;

你可以按照下面代码执行程序的编译与运行:

$ cim dogs.sim
Compiling dogs.sim:
gcc -g -O2 -c dogs.c
gcc -g -O2 -o dogs dogs.o -L/usr/local/lib -lcim
$ ./dogs
Yap yap yap yap yap yap

(你可能会注意到,cim 先将 Simula 语言编译为 C 语言,然后传递给 C 语言编译器。)

这就是 1967 年的面向对象程序设计,除了语法方面的不同,和 2019 年的面向对象程序设计并无本质区别。如果你同意我的这一观点,你也就懂得了为什么人们会认为 Simula 在历史上是那么的重要。

不过,我更想介绍一下 Simula I 的核心概念——进程模型。Simula 67 保留了进程模型,不过只有在使用 Process 类 和 Simulation 块的时候才能调用。

为了表现出进程是如何运行的,我决定模拟下述场景。想象一下,有这么一座住满了村民的村庄,村庄的旁边有条小河边,小河里有很多的鱼。但是,村里的村民却只有一条鱼竿。村民们胃口很大,每隔一个小时就饿了。他们一饿,就会拿着鱼竿去钓鱼。如果一位村民正在等鱼竿,另一位村民自然也用不了。这样一来,村民们就会为了钓鱼排起长长的队伍。假如村民要等五、六分钟才能钓到一条鱼,那么这样等下去,村民们的身体状况就会变得越来越差。再假如,一位村民已经到了骨瘦如柴的地步,最后他可能就会饿死。

这个例子多少有些奇怪,虽然我也不说不出来为什么我脑袋里最先想到的是这样的故事,但是就这样吧。我们把村民们当作 Simula 的各个进程,观察在有着四个村民的村庄里,一天的模拟时间内会发生什么。

完整程序可以通过此处 GitHub Gist 的链接获取。

我把输出结果的最后几行放在了下面。我们来看看一天里最后几个小时发生了什么:

1299.45: 王五饿了,要了鱼竿。
1299.45: 王五正在钓鱼。
1311.39: 王五钓到了一条鱼。
1328.96: 赵六饿了,要了鱼竿。
1328.96: 赵六正在钓鱼。
1331.25: 李四饿了,要了鱼竿。
1340.44: 赵六钓到了一条鱼。
1340.44: 李四饿着肚子等着鱼竿。
1340.44: 李四在等鱼竿的时候饿死了。
1369.21: 王五饿了,要了鱼竿。
1369.21: 王五正在钓鱼。
1379.33: 王五钓到了一条鱼。
1409.59: 赵六饿了,要了鱼竿。
1409.59: 赵六正在钓鱼。
1419.98: 赵六钓到了一条鱼。
1427.53: 王五饿了,要了鱼竿。
1427.53: 王五正在钓鱼。
1437.52: 王五钓到了一条鱼。

可怜的李四最后饿死了,但是他比张三要长寿,因为张三还没到上午 7 点就饿死了。赵六和王五现在一定过得很好,因为需要鱼竿的就只剩下他们两个了。

这里,我要说明,这个程序最重要的部分只是创建了进程(四个村民),并让它们运行下去。各个进程操作对象(鱼竿)的方式与我们今天对对象的操作方式相同。但是程序的主体部分并没有调用任何方法,也没有修改进程的任何属性。进程本身具有内部状态,但是这种内部状态的改变只有进程自身才能做到。

在这个程序中,仍然有一些字段发生了变化,这类程序设计无法直接解决纯函数式编程所能解决的问题。但是正如克罗达尔所注意到的那样,“这一机制引导进行模拟的程序员为底层系统建立模型,生成一系列进程,每个进程表示了系统内的自然事件顺序。” [12] 我们不是主要从名词或行动者(对其他对象做事的对象)的角度来思考正在进行的进程。我们可以将程序的总控制权交予 Simula 的事件通知系统,克罗达尔称其为 “ 时间管理器 time manager ”。因此,尽管我们仍然在适当地改变进程,但是没有任何进程可以假设其他进程的状态。每个进程只能间接地与其他进程进行交互。

这种模式如何用以编写编译器、HTTP 服务器以及其他内容,尚且无法确定。(另外,如果你在 Unity 游戏引擎上编写过游戏,就会发现两者十分相似。)我也承认,尽管我们有了“时间管理器”,但这可能并不完全是希基的意思,他说我们在程序中需要一个明确的时间概念。(我认为,希基想要的类似于 阿达·洛芙莱斯 Ada Lovelace 用于区分一个变量随时间变化产生的不同数值的上标符号。)尽管如此,我们可以发现,面向对象程序设计前期的设计方式与我们今天所习惯的面向对象程序设计并非完全一致,我觉得这一点很有意思。我们可能会理所当然地认为,面向对象程序设计的方式千篇一律,即程序就是对事件的一长串记录:某个对象以特定顺序对其他对象产生作用。Simula I 的进程系统表明,面向对象程序设计的方式不止一种。仔细想一下,函数式语言或许是更好的设计方式,但是 Simula I 的发展告诉我们,现代面向对象程序设计被取代也很正常。

如果你喜欢这篇文章,欢迎关注推特 @TwoBitHistory,也可通过 RSS feed 订阅,获取最新文章(每四周更新一篇)。


  1. Jan Rune Holmevik, “The History of Simula,” accessed January 31, 2019, http://campus.hesge.ch/daehne/2004-2005/langages/simula.htm. ↩︎
  2. Ole-Johan Dahl and Kristen Nygaard, “SIMULA—An ALGOL-Based Simulation Langauge,” Communications of the ACM 9, no. 9 (September 1966): 671, accessed January 31, 2019, http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.384&rep=rep1&type=pdf. ↩︎
  3. Stein Krogdahl, “The Birth of Simula,” 2, accessed January 31, 2019, http://heim.ifi.uio.no/~steinkr/papers/HiNC1-webversion-simula.pdf. ↩︎
  4. 出处同上。 ↩︎
  5. Ole-Johan Dahl and Kristen Nygaard, “The Development of the Simula Languages,” ACM SIGPLAN Notices 13, no. 8 (August 1978): 248, accessed January 31, 2019, https://hannemyr.com/cache/knojd_acm78.pdf. ↩︎
  6. Dahl and Nygaard (1966), 676. ↩︎
  7. Dahl and Nygaard (1978), 257. ↩︎
  8. Krogdahl, 3. ↩︎
  9. Ole-Johan Dahl, “The Birth of Object-Orientation: The Simula Languages,” 3, accessed January 31, 2019, http://www.olejohandahl.info/old/birth-of-oo.pdf. ↩︎
  10. Dahl and Nygaard (1978), 265. ↩︎
  11. Holmevik. ↩︎
  12. Krogdahl, 4. ↩︎

via: https://twobithistory.org/2019/01/31/simula.html

作者:Two-Bit History 选题:lujun9972 译者:aREversez 校对:校对者ID

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

Linux Mint 接管了 Timeshift 备份/恢复工具的开发。你可以在它新的 GitHub 仓库中找到它。

linux mint

Timeshift 可以说是 备份和恢复 Linux 系统的最佳工具

Linux Mint 也利用它帮助用户在系统更新时更方便地创建快照,确保快捷无碍的操作。

当然,这不是 Linux Mint 可能比 Ubuntu 更好的唯一原因

不幸的是,Timeshift 背后的开发者(Tony George)计划把注意力集中在其他项目上,将不再继续维护这个项目。

Linux Mint 团队联系了这位开发者,并愿意为这个项目提供任何可能的帮助。最终,它们接管了 Timeshift 的开发。

所以,现在 Linux Mint 团队会对 Timeshift 的发布和修复,以及任何与之相关的开发工作负责。

将 Timeshift 调整成 XApp

Linux Mint 倾向于将某些应用作为“XApp”来维护,以确保它们能在各种不同的桌面环境下工作,不会依赖于某个特殊的桌面。

考虑到他们计划将 Timeshift 调整成一个XApp,你可以期待该工具在很长一段时间内维持当前的外观和功能,而不用顾虑你的桌面环境是什么。

不像一些 GNOME 应用程序,为了获得最好的体验,它们通常会变成 GNOME 专用的应用程序。

Timeshift 是一个必不可少的备份/恢复工具。所以,Linux Mint 接管 Timeshift 的开发并作为一个 XApp 来维护的计划听上去相当完美!

如果你想知道的话,那不妨告诉你,Timeshift 的迁移已经在 Launchpad 上完成了。

新的 GitHub仓库(由 Linux Mint 复刻的)可以给你提供这个应用的更多细节以及它最近的开发活动。

你也可以在 最近每月发布的博文 中查阅官方对此的声明。

结语

作为 Timeshift 的维护者,Linux Mint 希望在不久的将来带来更多的新特性和改进。

你如何看待 Linux Mint 将 Timeshift 接管为一款 XApp?欢迎在下方的评论区内分享你的想法。


via: https://news.itsfoss.com/linux-mint-timeshift/

作者:Ankush Das 选题:lkxed 译者:hadisi1993 校对:校对者ID

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

AI 机器船“五月花”号航行五周后到达了北美

一艘曾试图追溯 1620 年“五月花”号海上航行的无人驾驶的机器船,在五周之后,从英国到达了美国马萨诸塞州的普利茅斯岩。IBM 负责该项目的的一位主管说,“构成自主系统的技术工作得非常完美,毫无瑕疵”,但是“在机械上,我们确实遇到了问题”。这并不是它的第一次航行,去年它曾经因为故障而折返,而今年的航程也出现过一些故障,不过,好歹是到达了目的地。

消息来源:apnews
老王点评:AI 在帮助自动驾驶机器了解其周围环境和自我驾驶方面越来越好,但当硬件出现问题时,大多数机器人没办法自己解决。不过,我在想,如果有一天他们连硬件故障也能解决的话……

谷歌研究在 Chromium 上安全使用 C++

谷歌 Chrome 安全团队在最近的一篇博文中说,“C++ 允许编写高性能的应用程序,但这是有代价的,安全……”。虽然如此,他们讨论了使用堆扫描技术来提高 C++ 的内存安全的历程,并提出了一些思路,基本的想法是把明确释放的内存放入隔离区,只有在达到一定的安全条件时才让它可用。在微软改用基于 Chromium 的浏览器之前,也曾在其浏览器中推出了这种缓解措施的版本。

消息来源:谷歌
老王点评:我倒是觉得,这或许给浏览器漏洞又打开了一道大门,为什么不用内存安全的语言呢。

让区块链管理能源使其不再浪费能源

区块链技术最被人诟病地方之一是其能源浪费,大多数区块链需要计算机反复进行无意义的计算。明显的解决方案是将区块链建立在有用的计算之上,该解决方案必须难以计算,但容易验证。本周发布的一篇论文提供了一种选择。优化问题在计算方面是出了名的昂贵,但解决方案的质量相对容易评估。这里被优化的系统是小型电网,在能源分配中存在需要优化的地方:供应与需求相匹配,找出最经济的发电源组合。随着能源市场逐渐分散化,管理复杂性也在相应增加,而小型子电网可以通过区块链的计算优化进行自我管理。

消息来源:Arstechnica
老王点评:这倒是一个有趣而值得探索的道路,不但可以部分解决能源浪费问题,而且有助于利用区块链的其它去中心化特性。