2021年6月

微软推出 AI “结对编程”

微软周二宣布了一个人工智能系统 GitHub Copilot,可以像结对编程一样,为软件开发人员推荐代码。微软在 OpenAI 的帮助下开发了它,利用了上传到 GitHub 以及其他网站的源代码。它依靠的是许多编程语言的大量代码和庞大的 Azure 云计算能力。

该工具查看当前文件中的现有代码和注释,以及光标的位置,并提供可以添加的一个或多个代码行。随着程序员接受或拒绝建议,该模型会随着时间的推移进行学习并变得更加复杂。GitHub 的数百名开发者在编码时整天都在使用 Copilot 功能,他们中的大多数人都接受了建议,而没有关闭该功能。

这样发展下去,早晚一天编程都不需要人参与了,程序员在积极挖自己职业发展的墙角啊。

edX 被以 8 亿美元卖给营利性在线课程供应商

当麻省理工学院和哈佛大学在近十年前创办 edX 时,它被吹捧为营利性在线课程供应商的非营利性替代者。今天,这两所大学宣布,他们正以 8 亿美元的价格将 edX 出售给一个营利性供应商 2U。edX 称,全球疫情是导致出售的一个因素。edX 仍然拥有 3500 万用户和 3000 多门课程。

2U 是一家所谓的在线项目管理公司,帮助传统学院启动和运行在线学位课程,它说将把 edX 作为一个独立的子公司来运营,其结构将是一个公共福利公司。这意味着它将是营利性的。

别人都是因为疫情而发展起来,偏偏 edX 却被出售。

日本“富岳”在四项超级计算机世界排名中实现“三连冠”

日本的“富岳”(富士山的别称)在超级计算机 TOP500、HPCG、HPL-AI、Graph500 等榜单中连续三期排名世界第一。这些榜单都是用来判断超级计算机性能的评价指标,每年 6 月与 11 月更新两次,每一个代表性能的一个方面,比如数据处理性能、系统软件性能、浮点性能,或者科学工程计算的性能等。

在最新发布的 TOP500 榜单中,富岳每秒可以计算 44.201 TFlop,是排名第二的美国橡树岭国家实验室超算“Summit”(14.86 TFlop)的约 3 倍。我国的“神威·太湖之光”超级计算机位列第四,每秒可以计算 9.30146 TFlop。TOP500 榜单中,中国超级计算机共 192 台(上一次 221 台),美国为 122 台(上一次 113 台)。

超算榜单并不是目标,真正将超算落实到实际应用中才是最重要的。

Python 开发者已经发布了 Python 3.10.0 的三个测试版本。现在,你可以在 Fedora Linux 中试用最新的版本尽早用 3.10 测试你的 Python 代码,为 10 月份的 3.10.0 最终版本做好准备。

在 Fedora Linux 上安装 Python 3.10

如果你运行 Fedora Linux,你可以用 dnf 从官方仓库安装 Python 3.10:

$ sudo dnf install python3.10

你可能需要启用 updates-testing 仓库来获得最新的预发布版本:

$ sudo dnf install --enablerepo=updates-testing python3.10

随着更多的测试版和候选版 发布,Fedora 包将得到更新。不需要编译你自己的 Python 开发版本,只要安装它就可以获得最新。从第一个测试版开始,Python 开发者不会再增加新的功能了。你已经可以享受所有的新东西了。

用 Python 3.10 测试你的项目

运行 python3.10 命令来使用 Python 3.10,或者用 内置的 venv 模块 tox 或用 pipenvpoetry 创建虚拟环境。下面是一个使用 tox 的例子:

$ git clone https://github.com/benjaminp/six.git
Cloning into 'six'...
$ cd six/
$ tox -e py310
py310 run-test: commands[0] | python -m pytest -rfsxX
================== test session starts ===================
platform linux -- Python 3.10.0b3, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
collected 200 items

test_six.py ...................................... [ 19%]
.................................................. [ 44%]
.................................................. [ 69%]
.................................................. [ 94%]
............                                       [100%]

================== 200 passed in 0.43s ===================
________________________ summary _________________________
  py310: commands succeeded
  congratulations :)

如果你在 Fedora Linux 上发现了 Python 3.10 的问题,请 在 Fedora 的 bugzilla 上提交 bug 报告 或在 Python 的问题追踪 上提交。如果你不确定这是否是 Python 的问题,你可以 通过电子邮件或 IRC 直接联系 Fedora 的 Python 维护者

Python 3.10 中的新内容

参见 Python 3.10 的全部新闻列表。例如,你可以尝试一下 结构模式匹配

$ python3.10
Python 3.10.0b3 (default, Jun 17 2021, 00:00:00)
[GCC 10.3.1 20210422 (Red Hat 10.3.1-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> point = (3, 10)
>>> match point:
...     case (0, 0):
...         print("Origin")
...     case (0, y):
...         print(f"Y={y}")
...     case (x, 0):
...         print(f"X={x}")
...     case (x, y):
...         print(f"X={x}, Y={y}")
...     case _:
...         raise ValueError("Not a point")
...
X=3, Y=10
>>> x
3
>>> y
10

敬请期待 Fedora Linux 35 中的 python3 —— Python 3.10


via: https://fedoramagazine.org/python-3-10-beta-in-fedora-linux/

作者:Miro Hrončok 选题:lujun9972 译者:geekpi 校对:wxy

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

家庭自动化是一个令人兴奋的技术分支。现在开始用开源工具为你的家庭自动化设计一套解决方案吧。

 title=

行动起来吧。科技的关键是让生活更加美好。

当然,“更好”的标准因人而异,取决于他们在特定时刻的需求。尽管如此,技术具有影响许多不同阶段生活的独特能力。对一些人来说,科技提供了一个轻松的下午娱乐,而对另一些人来说,它提供导航帮助、改善医疗保健或更精确的科学研究。

有趣的是,为一个目的开发的技术很少与用于另一个目的的技术完全无关。例如,运动相机的进步使得一个人可以记录她们在滑雪场上的滑雪过程,也可以使得人体摄像头来帮助防止警察侵犯人权。3D 打印的进步可以让一个人可以制作超级英雄的动作手办,也使得志愿者可以为体弱者制造氧气呼吸机成为可能。技术很重要,它影响着我们所有人。

开源的工作之一是确保每个人都能获得技术进步,无论种族、性别、国籍、身体能力、宗教信仰或财富如何。可悲的是,有些公司将技术视为一种工具来获取有关其客户(即你和我!)的数据,即使这些客户为该技术的研究和开发提供资金。不过,这不是开源的目标,开源项目保护其用户。

是的,家庭自动化是一种现代便利,它正在变得一天比一天好。但这是你的家。开源家庭自动化可以让生活变得更轻松,更像是所有科幻书籍和电影中承诺的未来。但它也可以改善那些身体能力与电器制造商计划不同的人的生活。一个简单的 Python 脚本对一个用户来说可能只是带来了一些便利,而对其他人来说却可能会改变生活。

家庭自动化是一个令人兴奋和有趣的技术分支。 借助这本 电子书,立即开始设计你的家庭自动化解决方案,然后与他人分享你的创新,让每个人都能受益。

这就是开源的真正意义所在:可以帮助世界上的所有人。


via: https://opensource.com/article/21/6/home-automation-ebook

作者:Alan Smithee 选题:lujun9972 译者:zepoch 校对:wxy

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

DuckDuckGo 成为美国、加拿大、澳大利亚的第二大移动搜索引擎

DuckDuckGo 发布公告称,在过去的 12 个月里,其应用程序被下载了 5000 多万次,比以前所有年份的总和还要多,其月度搜索流量增加了 55%,在许多国家的移动搜索引擎中成长为第二名。DuckDuckGo 说,“我们不跟踪我们的用户,所以我们不能确定我们有多少用户,但根据市场份额的估计、下载量和国家调查,我们相信有 7000 万至 1 亿 DuckDuckGo 用户。”

DuckDuckGo 现在每年的收入超过 1 亿美元。2020 年底,他们还获得了超过 1 亿美元的投资。

然而,我没有使用过它,不是我不想用……

使用虚拟机来隐藏勒索软件攻击正变得越来越流行

2020 年初,安全研究人员发现,一个勒索软件团伙想出了一个创新的招数,允许它在受感染主机的虚拟机内运行其有效载荷,作为绕过安全软件的技术解决方案。勒索软件团伙在受感染主机上有了一个小的立足点之后可以下载和安装虚拟机软件,启动一个虚拟机实例共享主机的存储空间,然后从虚拟机内继续加密受害者的文件。在执行过程中,主机的反病毒软件无法到达并检测到勒索软件。一年后,这种技术已经在地下网络犯罪中传播,现在被多个勒索软件运营商使用。

没想到虚拟化还被运用到这个方面,不过这也并非无迹可查。

GitHub 漏洞赏金激增超过 150 万美元大关

GitHub 表示,2020 年是漏洞披露方面“最繁忙的一年”。GitHub 安全漏洞赏金计划已经运作了 7 年,而在过去的一年里,发放了超过 50 万美元的奖励,使支付的总金额超过 150 万美元。GitHub 的计划范围包括众多 GitHub 拥有的域名和目标,研究人员每份报告可获得高达 3 万美元。GitHub 的安全漏洞赏金计划在安全港原则下运作,遵守负责任的披露政策的漏洞赏金猎人受到保护,不会因其研究而产生任何潜在的法律后果。

做个白帽子挣赏金真香,可惜 20 年前没有这样的环境。

开源开发的理念使得 Anvil 的整个解决方案更加有用且值得信赖。

 title=

Anvil 团队最近开源了 Anvil App Server, 一个用于托管完全用 Python 构建的 Web 程序的运行时引擎。

社区的反应十分积极,我们 Anvil 团队已经将许多反馈纳入了我们的 下一个版本。但是我们不断被问到的问题是,“为什么你们选择开源这个产品的核心呢?”

我们为何创造 Anvil

Anvil 是一个可以使得构建 Web 应用更加简单的工具。我们让你们有能力仅使用一种语言—— Python —— 就可以来构建你的整个应用。

在 Anvil 之前,如果你想要构建一个 Web app,你需要写很多代码,用很多的技术,比如 HTML、Javascript、CSS、Python、SQL、React、Redux、Bootstrap、Sass、Webpack 等。这需要花费很长时间来学习。对于一个简单的应用便是这样子;相信我,一般的应用其实 更加复杂

 title=

是的。对于一个简单的 web 应用便是需要如此多的技术。

但即使如此,你还没有完成!你需要了解有关 Git 和云托管提供商的所有信息、如何保护(很有可能是)Linux 操作系统、如何调整数据库,然后随时待命以保持其运行。一直如此。

因此,我们开发出了 Anvil,这是一个在线 IDE,你可以在用 拖放编辑器 来设计你的 UI 界面,用 Python 编写你的 逻辑,然后 Anvil 会负责其余的工作。我们将所有的繁杂的技术栈进行了替换,只用 Python 就行啦!

简单的 Web 托管很重要,但还不够

Anvil 还可以为你托管你的应用程序。为什么不呢?部署 Web 应用程序非常复杂,因此运行我们自己的云托管服务是提供我们所需的简单性的唯一方法。在 Anvil 编辑器中构建一个应用程序,单击按钮,它就在网上发布了。

但我们不断听到有人说,“那太好了,但是……”

  • “我需要在没有可靠互联网接入的海外平台上运行这个应用。”
  • “我想要将我的应用程序嵌入到我售出的 IoT 设备中”
  • "如果我把我的宝都压到你的 Anvil 上,我怎么能确定十年后我的应用仍然能够运行呢?”

这些都是很好的观点!云服务并不是适合所有人的解决方案。如果我们想为这些用户提供服务,就必须有一些方法让他们把自己的应用从 Anvil 中取出来,在本地运行,由他们自己完全控制。

开源是一个逃生舱,而不是弹射座椅

在会议上,我们有时会被问到,“我可以将它导出为 Flask+JS 的应用程序吗?” 当然,我们可以将 Anvil 项目分别导出为 Python 和 JavaScript —— 我们可以生成一个服务器包,将客户端中的 Python 编译为 Javascript,然后生成一个经典的 Web 应用程序。但它会有严重的缺点,因为:代码生成是一个弹射座椅。

 title=

生成的代码聊胜于无;至少你可以编辑它!但是在你编辑该代码的那一刻,你就失去了生成它的系统的所有好处。如果你使用 Anvil 是因为它的 拖放编辑器运行在浏览器中的 Python,那么你为什么必须使用 vim 和 Javascript 才能在本地托管你的应用程序?

我们相信 逃生舱,而不是弹射座椅。所以我们选择了一个正确的方式——我们 开源了 Anvil 的运行引擎,这与在我们的托管服务中为你的应用程序提供服务的代码相同。这是一个独立的应用程序;你可以使用文本编辑器编辑代码并在本地运行。但是你也可以将它直接用 git 推回到我们的在线 IDE。这不是弹射座椅;没有爆炸性的转变。这是一个逃生舱;你可以爬出来,做你需要做的事情,然后再爬回来。

如果它开源了,它还可靠吗

开源中的一个看似矛盾的是,它的免费可用性是它的优势,但有时也会产生不稳定的感觉。毕竟,如果你不收费,你如何保持这个平台的长期健康运行?

我们正在做我们一直在做的事情 —— 提供一个开发工具,使构建 Web 应用程序变得非常简单,尽管你使用 Anvil 构建的应用程序 100% 是你的。我们为 Anvil 应用程序提供托管,并为 企业客户 提供整个现场开发和托管平台。这使我们能够提供免费计划,以便每个人都可以将 Anvil 用于业余爱好或教育目的,或者开始构建某些东西并查看它的发展。

得到的多,失去的少

开源我们的运行引擎并没有减少我们的业务 —— 它使我们的在线 IDE 在今天和未来变得更有用、更值得信赖。我们为需要它的人开放了 Anvil App Server 的源代码,并提供最终的安全保障。对于我们的用户来说,这是正确的举措 —— 现在他们可以放心地进行构建,因为他们知道开源代码 就在那里,如果他们需要的话。

如果我们的开发理念与你产生共鸣,何不亲自尝试 Anvil?


这篇文章改编自 Why We Open Sourced the Anvil App Server,经许可重复使用。


via: https://opensource.com/article/20/7/why-open-source

作者:Meredydd Luff 选题:lujun9972 译者:zepoch 校对:wxy

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

dust 命令是用 Rust 编写的对 du 命令的一个更直观实现。

如果你在 Linux 命令行上工作,你会熟悉 du 命令。了解像 du 这样的命令,可以快速返回磁盘使用情况,是命令行使程序员更有效率的方法之一。然而,如果你正在寻找一种方法来节省更多的时间,使你的生活更加容易,看看 dust,它是用 Rust 重写的 du,具有更多的直观性。

简而言之,dust 是一个提供文件类型和元数据的工具。如果你在一个目录中运行了 dust,它将以几种方式报告该目录的磁盘利用率。它提供了一个信息量很大的图表,告诉你哪个文件夹使用的磁盘空间最大。如果有嵌套的文件夹,你可以看到每个文件夹使用的空间百分比。

安装 dust

你可以使用 Rust 的 Cargo 包管理器安装 dust

$ cargo install du-dust

另外,你可以在 Linux 上的软件库中找到它,在 macOS 上,可以使用 MacPortsHomebrew

探索 dust

在一个目录中执行 dust 命令,会返回一个图表,以树状格式显示其内容和每个项目所占的百分比。

$ dust
 5.7M   ┌── exa                                                           │                                                ██ │   2%
 5.9M   ├── tokei                                                         │                                                ██ │   2%
 6.1M   ├── dust                                                          │                                                ██ │   2%
 6.2M   ├── tldr                                                          │                                                ██ │   2%
 9.4M   ├── fd                                                            │                                                ██ │   4%
 2.9M   │ ┌── exa                                                         │                                              ░░░█ │   1%
  15M   │ ├── rustdoc                                                     │                                              ░███ │   6%
  18M   ├─┴ bin                                                           │                                              ████ │   7%
  27M   ├── rg                                                            │                                            ██████ │  11%
 1.3M   │     ┌── libz-sys-1.1.3.crate                                    │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█ │   0%
 1.4M   │     ├── libgit2-sys-0.12.19+1.1.0.crate                         │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█ │   1%
 4.5M   │   ┌─┴ github.com-1ecc6299db9ec823                               │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█ │   2%
 4.5M   │ ┌─┴ cache                                                       │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█ │   2%
 1.0M   │ │   ┌── git2-0.13.18                                            │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   0%
 1.4M   │ │   ├── exa-0.10.1                                              │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 1.5M   │ │   │ ┌── src                                                   │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 2.2M   │ │   ├─┴ idna-0.2.3                                              │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 1.2M   │ │   │       ┌── linux                                           │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   0%
 1.6M   │ │   │     ┌─┴ linux_like                                        │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 2.6M   │ │   │   ┌─┴ unix                                                │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 3.1M   │ │   │ ┌─┴ src                                                   │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 3.1M   │ │   ├─┴ libc-0.2.94                                             │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 1.2M   │ │   │     ┌── test                                              │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   0%
 2.6M   │ │   │   ┌─┴ zlib-ng                                             │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 904K   │ │   │   │   ┌── vstudio                                         │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   0%
 2.0M   │ │   │   │ ┌─┴ contrib                                           │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 3.4M   │ │   │   ├─┴ zlib                                                │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 6.1M   │ │   │ ┌─┴ src                                                   │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓██ │   2%
 6.1M   │ │   ├─┴ libz-sys-1.1.3                                          │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓██ │   2%
 1.6M   │ │   │     ┌── pcre                                              │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 2.5M   │ │   │   ┌─┴ deps                                                │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 3.8M   │ │   │   ├── src                                                 │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 7.4M   │ │   │ ┌─┴ libgit2                                               │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓██ │   3%
 7.6M   │ │   ├─┴ libgit2-sys-0.12.19+1.1.0                               │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓██ │   3%
  26M   │ │ ┌─┴ github.com-1ecc6299db9ec823                               │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██████ │  10%
  26M   │ ├─┴ src                                                         │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██████ │  10%
 932K   │ │   ┌── .cache                                                  │               ░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█ │   0%
  11M   │ │   │     ┌── pack-c3e3a51a17096a3078196f3f014e02e5da6285aa.idx │               ░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓███ │   4%
 135M   │ │   │     ├── pack-c3e3a51a17096a3078196f3f014e02e5da6285aa.pack│               ░░░░░░▓▓███████████████████████████ │  53%
 147M   │ │   │   ┌─┴ pack                                                │               ░░░░░░█████████████████████████████ │  57%
 147M   │ │   │ ┌─┴ objects                                               │               ░░░░░░█████████████████████████████ │  57%
 147M   │ │   ├─┴ .git                                                    │               ░░░░░░█████████████████████████████ │  57%
 147M   │ │ ┌─┴ github.com-1ecc6299db9ec823                               │               ░░░░░░█████████████████████████████ │  57%
 147M   │ ├─┴ index                                                       │               ░░░░░░█████████████████████████████ │  57%
 178M   ├─┴ registry                                                      │               ███████████████████████████████████ │  69%
 257M ┌─┴ .                                                               │██████████████████████████████████████████████████ │ 100%
$

dust 应用于一个特定的目录:

$ dust ~/Work/

 title=

-r 选项以相反的顺序显示输出,“根”在底部:

$ dust -r ~/Work/

使用 dust -d 3 会返回三层的子目录和它们的磁盘利用率:

$ dust -d 3 ~/Work/wildfly/jaxrs/target/classes
 4.0K     ┌── jaxrs.xml                                                           │                                         █ │   1%
 4.0K   ┌─┴ subsystem-templates                                                   │                                         █ │   1%
 4.0K   │   ┌── org.jboss.as.controller.transform.ExtensionTransformerRegistration│                                         █ │   1%
 4.0K   │   ├── org.jboss.as.controller.Extension                                 │                                         █ │   1%
 8.0K   │ ┌─┴ services                                                            │                                         █ │   2%
 8.0K   ├─┴ META-INF                                                              │                                         █ │   2%
 4.0K   │ ┌── jboss-as-jaxrs_1_0.xsd                                              │                                        ░█ │   1%
 8.0K   │ ├── jboss-as-jaxrs_2_0.xsd                                              │                                        ░█ │   2%
  12K   ├─┴ schema                                                                │                                        ██ │   3%
 408K   │   ┌── as                                                                │  ████████████████████████████████████████ │  94%
 408K   │ ┌─┴ jboss                                                               │  ████████████████████████████████████████ │  94%
 408K   ├─┴ org                                                                   │  ████████████████████████████████████████ │  94%
 432K ┌─┴ classes                                                                 │██████████████████████████████████████████ │ 100%
$

总结

dust 的魅力在于它是一个小而简单的、易于理解的命令。它使用颜色方案来表示最大的子目录,使你的目录易于可视化。这是一个受欢迎的项目,欢迎大家来贡献。

你是否使用或考虑使用 dust?如果是,请在下面的评论中告诉我们你的想法。


via: https://opensource.com/article/21/6/dust-linux

作者:Sudeshna Sur 选题:lujun9972 译者:geekpi 校对:wxy

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