2022年10月

通过图形界面和命令行两种方法,了解如何在 VSCode 中搜索和安装扩展。

微软的 Visual Studio Code(VSCode)可能是最流行的 开源代码编辑器,仅次于 Vim(当然)。

VSCode 通过提供几乎所有类似 IDE 的功能,提供了令人惊叹的“开箱即用”体验。 但总有一些事情是你希望 VSCode 能够另外做到的。正所谓“邻家芳草绿,隔岸风景好” : )

你可以在 Visual Studio Code 市场 Marketplace 找到 VSCode 扩展插件。在 VSCode 市场上发布的扩展插件在发布之前会进行病毒扫描,所以这些扩展可以 信任

在 VSCode 中安装扩展插件

你不需要访问 VSCode 市场 Marketplace 网站就可以安装扩展插件。也就是说,你可以直接从 VSCode 本身安装和管理扩展插件。

我希望你已经在你使用的操作系统(比如 在 Linux)上 安装了 VSCode。

打开 VSCode,最左侧是活动栏。活动栏上的最后一个按钮就是“扩展”按钮。点击它之后你会看到大量可安装的扩展。

访问 VSCode 中的扩展选项卡

你也可以按快捷键组合 Ctrl + Shift + X 来启动扩展栏的侧面面板。

如果你还没有安装任何扩展的话,你会看到 VSCode 市场上最流行的扩展列表。

找到并安装某个扩展(图形界面方法)

现在是时候尝试一下 Linux 人谈论的 vim 了(鼓动的语气); )

开玩笑啦。让我们安装一些对我们初学者更友好,可以轻松使用而且无需太多练习的扩展吧。

从最流行的扩展列表中单击 “Visual Studio IntelliCode” (①)扩展。

如何安装 Visual Studio IntelliCode 等扩展

点击 “ 安装 Install ” 按钮(②)即可安装 “Visual Studio IntelliCode” 扩展。这个扩展会在你编写代码时为你提供 AI 预测的建议。

安装后,你可以充分利用此扩展。试试用你喜欢的编程语言输入一段代码,然后看看 AI 的自动完成功能是否顺利运行而且没有拖慢你的工作进程。

在 Visual Studio Code 中管理已安装的扩展

如果你不喜欢某个已安装的扩展插件,你只需单击 “ 卸载 Uninstall ” 按钮(②)即可完全删除不需要的扩展插件。

如果你安装了多个扩展插件,并且你觉得其中某个扩展插件给你带来了问题——比如说突然崩溃;你只需点击 “ 禁用 Disable ” 按钮(①)即可禁用一个(或多个)扩展插件,并检查扩展插件 是否在起作用,或者它是扩展插件 ,还是完全不同的东西。

考虑到扩展删除和重新安装需要很长时间,当你安装了多个扩展时,禁用扩展会很方便。

另外方法:使用终端安装扩展

你知道你可以从终端安装 VSCode 扩展吗?不过,现在你知道了!

要从你的终端安装扩展程序,你需要知道扩展程序名称和发布者名称,再按照 发布者名称.扩展程序名称 的顺序找到它。比如说,如果你想安装 “Visual Studio IntelliCode” 这个扩展(前面提到的),它的名称就是 VisualStudioExptTeam.vscodeintellicode

要找出扩展用于标识的唯一名称(ID),首先要在你的浏览器中 访问 VSCode 市场

VSCode 市场的截图

然后搜索某个扩展,在本教程中,我将以安装 “Visual Studio IntelliCode” 这个扩展为例。下一步,打开你要安装的扩展程序的页面。

搜索Visual Studio IntelliCode并打开扩展网页

打开扩展程序的网页后,你将看到一个代码块。下面的截图突出标示了扩展程序的 ID。

VSCode 扩展的 ID

一旦你有了想要安装的扩展的 ID —— 在这种情况下是 VisualStudioExptTeam.vscodeintellicode,你可以通过在终端中运行以下命令来继续。

code --install-extension VisualStudioExptTeam.vscodeintellicode

与图形界面一样,命令行界面也允许你安装、禁用、删除和管理扩展。

可以通过运行以下命令查看已安装的所有扩展的列表。

code --list-extensions

要禁用单个扩展,请运行以下命令:

code --disable-extension <在这里输入扩展的ID>

如果要禁用所有扩展,可以运行以下命令:

code --disable-extensions

上述命令将禁用 所有 已安装的扩展。这将帮助你判断导致问题的是插件,还是 VSCode 本身。

现在,如果你想完全删除任何某个扩展,请运行以下命令:

code --uninstall-extension <在这里输入扩展的ID>

总结

我发现使用 VSCode 安装扩展要容易得多。毕竟,它直接在我编辑器左边的侧栏中。

一旦你对 VSCode 的操作得心应手,也许可以看看这篇文章,VSCode 实用快捷键 可能会帮助你提高工作效率!

写代码顺利,新朋友! : )


via: https://itsfoss.com/install-vs-code-extensions/

作者:Pratham Patel 选题:lujun9972 译者:泠知落汐 校对:wxy

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

Figma 是一个流行的界面设计工具。你可以免费开始使用,也可以选择高级订阅计划以供进阶使用。

这是一个令人印象深刻的平台,许多专业人士都依赖它。然而,在 2021 年,Figma 通过施加某些限制改变了其免费计划。虽然这使一些用户寻找替代品,但对许多人来说仍然是可接受的。

不幸的是,在 2022 年,Adobe 宣布以 200 亿美元收购 Figma 让许多用户望而却步。因此,每个人都开始寻找免费且可能开源的替代品。

为了帮助你,我们决定编一份 Figma 的自由开源的替代品清单,你可以试试。

注意:提到的替代品不一定是 Figma 的完全替代品。我们建议你尝试一下,看看它们是否符合你的要求。

1、Penpot

主要亮点:

  • 自托管选择。
  • 使用 SVG 作为原生格式。
  • 基于网页。
  • 跨平台。

Penpot 很快被公认为可靠的免费和开源 Figma 替代品。

即使它处于测试阶段,在写这篇文章时,用户似乎喜欢它提供的东西。我不是一个设计专家,但这个工具的用户体验似乎令人印象深刻。

Penpot 的独特之处在于它使用 SVG 作为其原生格式,这很罕见,但也为设计师提供了巨大的好处。

penpot screenshot

你可以期待具有 Figma 的基本功能,因为开发人员提到该工具的原始灵感是 Figma,他们旨在提供熟悉的用户体验,而不给你的设计冒险增加障碍。

前往其官方网站或 GitHub 页面探索更多信息。

Penpot

2、Quant UX

主要亮点:

  • 原型设计和测试。
  • 无需注册即可获得有限访问权限。
  • 定期添加新的测试版功能。
  • 自托管选择。

Quant UX 是一种原型设计工具,你可以在其中测试你的设计并获得它们的实际体验。

你可以为安卓手机、iPhone 或台式机创建自定义原型,或选择任何可用的屏幕尺寸。

这也是你会发现它不断添加功能的地方,其中一些处于测试阶段。它更专注于通过让你导入设计或创建简单的模型来测试事物。

它允许你无需注册即可访问一些内容,但要使所有功能正常工作,你需要注册一个帐户。在其 GitHub 页面 上探索更多信息。

Quant UX

3、Plasmic

主要亮点:

  • 自由开源。
  • 拖放功能。
  • 它支持从 Figma 导入设计。

Plasmic 是用于构建网页的卓越设计工具。如果你使用 Figma 进行网页设计,这可能是一个可供选择的工具。

它免费提供大部分功能,当你选择高级计划时,可以为团队解锁更多扩展版本历史记录、分析和其他特殊功能。它不仅限于设计网页,还支持 A/B 测试来实验和改进网站的用户交互。

无论你使用的是 开源 CMS 还是 Jamstack 站点,Plasmic 几乎都支持集成。前往其官方网站或 GitHub 页面 了解更多信息。

Plasmic

4、Wireflow

wireflow userflow

主要亮点:

  • 免费使用。
  • 没有付费选项。
  • 它没有被积极维护。

Wireflow 作为用户流原型工具是一个有趣的产品,它完全免费使用,没有付费选项。

此外,你无需注册帐户。从其官方网站开始,与他人合作规划你的项目并进行头脑风暴。

不幸的是,它自 2021 年以来没有看到任何最近的开发活动。但是,它仍然活跃并且仍然是一个自由开源的解决方案。你可以查看其 GitHub 页面 了解更多信息。

Wireflow

5、Akira UX

akira ux 2020

主要亮点:

  • 尚处于早期开发中的应用。
  • 专注于成为原生 Linux UX 应用。

Akira UX 是一个令人兴奋的项目,旨在带来一个原生 Linux 设计程序,该程序可以与一些基于 Web 的解决方案一样工作。

Akira 的项目负责人加入了 Mozilla Thunderbird 担任产品设计经理。因此,截至目前,该项目还没有被积极地开发。但是,作为一个自由开源项目,任何人都可以负责它并致力于相同的愿景。

它目前提供了可以测试的早期开发版本。你可以在 Flathub 的 beta 渠道中找到它,并按照其 GitHub 页面说明 进行安装。

Akira UX

总结

用自由开源的解决方案取代 Figma 并不容易。但是,如果你不关心 Figma 的所有功能,我们的一些建议应该可以帮助你完成工作。

你知道有什么其他自由开源的 Figma 替代品吗?请在下面的评论中告诉我你的想法


via: https://itsfoss.com/figma-alternatives/

作者:Ankush Das 选题:lkxed 译者:geekpi 校对:wxy

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

Debian 确定了处理非自由固件的方案

现在越来越多的设备拥有开源的 Linux 驱动,但却需要闭源的固件来实现功能,Debian 开发者一直在考虑对非自由固件采取最新的立场。在 Debian 社区前一段时间发起的投票中,方案 5 获胜:“改变安装程序中的非自由固件的社会契约(SC),采用单个安装程序”。即在 Debian 的官方介质中包含非自由固件,并在《Debian 社会契约》的第 5 点的末尾增加以下一句话以说明:“Debian 官方介质可以包括原本不属于 Debian 系统的固件,以使 Debian 能够在需要此类固件的硬件上使用。”

消息来源:Phoronix
老王点评:连这么“顽固”的 Debian 社区都不得不向现实低头。

System76 的 COSMIC 桌面将不使用 GTK

System76 一直在开发他们自己的 COSMIC 桌面,准备用在他们的 Pop!\_OS Linux 发行版上。在这个用 Rust 编写的桌面环境中,他们决定不再使用 GTK 工具包,而是使用 Iced-Rs 作为 Rust 原生的多平台图形工具包。Iced 是一个原生的 Rust GUI 工具包,他们在 GTK 和 Iced 中开发了各种 COSMIC 小程序以供比较。System76 称,“与 GTK 相比,Iced 的最新开发版本有一个非常灵活、有表现力和直观的 API。它在 Rust 中感觉非常自然。”

消息来源:Phoronix
老王点评:采用 Rust 开发的桌面环境,非常期待。

openEuler 发布 22.09 创新版,实现鸿蒙欧拉互联互通

该版本是 openEuler 社区捐赠后的首个创新版本,全量代码达 6.7 亿行,新增代码 2012 万行,其中内核新增原创代码 4.8 万行。1265 名开发者参与了该版本贡献,相较于上一个版本,参与版本贡献的开发者数量新增 63%。此版本新增了支持申威的 SW-64、龙芯的龙架构的系统镜像。此外,还通过集成实时内核的方式,实现了欧拉与鸿蒙的互联互通。

消息来源:openEuler
老王点评:虽然创新版本半年推出一个,但是其积累的进步将在 LTS 版本中保留下来。不过,大部分 Linux 个人用户可能对欧拉没什么使用体验。

本教程将展示如何在 Ubuntu 中使用 MTP 访问安卓设备以及如何访问 SD 卡内容。

MTP,即 媒体传输协议 media transfer protocol ,是图片传输协议的扩展,它在安卓 6.0(棉花糖)版本中实现。在更新了安卓 6.0 之后,你无法将安卓设备用作典型的大容量存储设备,以便让你直接插入并在文件管理器(例如 Thunar 或 GNOME Files)中查看内部存储内容和 SD 卡内容。这是由于操作系统无法确定 MTP 设备,而且还没有实现支持的设备列表。

在 Ubuntu、Linux Mint 中访问 Android 设备的步骤

使用以下命令为启用 MTP 的设备 mtpfs 安装 libmtp FUSE 文件系统:

sudo apt install go-mtpfs
sudo apt install libmtp
sudo apt install mtpfs mtp-tools

使用 USB 线缆将你的安卓设备插入 Ubuntu。

在你的安卓设备上,在主屏幕下拉,然后单击 “触摸获得更多选项Touch for more options”。

在下面的菜单中,选择“ 传输文件(MTP) Transfer File (MTP) ”选项:

MTP Option1

MTP Option2

在终端中运行以下命令查找设备 ID 等。你可以在设备的命令输出中看到 VIDPID。记下这两个数字(在下图中高亮显示):

mtp-detect

mtp-detect Command Output

使用以下命令使用文本编辑器打开安卓规则文件:

sudo gedit /etc/udev/rules.d/51-android.rules

如果你使用的是未安装 gedit 的最新 Ubuntu,请使用以下命令:

sudo gnome-text-editor /etc/udev/rules.d/51-android.rules

51-android.rules 文件中使用你设备的 VID 和 PID 输入以下行(你在上面的步骤中记下):

SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e82", MODE="0666"

保存并关闭文件。

运行以下命令通过 systemd 重启设备管理器:

sudo service udev restart

访问内容的后续步骤

接下来的步骤主要用于访问你的 Android 设备的外部 SD 卡的内容。

我必须这样做,因为文件管理器没有显示 SD 卡的内容。不过,这不是一个解决方案,但它是一种临时方案,根据这个 Google 论坛帖子,它适用于大多数用户,并且适用于我的带有闪迪 SD 卡的摩托罗拉 G 2nd Gen:

  • 在 Ubuntu 中安全删除你连接的设备。
  • 关闭设备。从设备中取出 SD 卡。
  • 在没有 SD 卡的情况下打开设备。
  • 再次关闭设备。
  • 将 SD 卡重新插入并再次打开设备。

重启你的 Ubuntu 机器并插入你的安卓设备。

现在你可以看到你的安卓设备的内部存储和 SD 卡的内容。

MTP Device Contents in Ubuntu

总结

上述在 Ubuntu 中访问安卓设备内容的教程在旧版和新版 Ubuntu 中的安卓设备(三星、一加和摩托罗拉)上都可以使用。如果你在访问内容时遇到困难,可以试试这些步骤,它可能会起作用。在我看来,MTP 与老式的即插即用方案相比非常慢。


via: https://www.debugpoint.com/how-to-access-android-devices-internal-storage-and-sd-card-in-ubuntu-linux-mint-using-media-transfer-protocol-mtp/

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

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

Julia 是一门高度抽象的动态编程语言。虽然它是一门能够开发所有程序的通用语言,但它有几个特点,非常适用于科学计算和数值计算。Python 在 1990 年初作为一种简单的面向对象的程序语言出现,如今已经有了显著的发展。本文将从它们在神经网络和机器学习的性能表现上进行讨论。

Julia 的架构以动态语言中的 参数多态性 parametric polymorphism 多重派发 multiple dispatch 的编程范式为主要特色。它允许使用或不使用 消息传递接口 message passing interface (MPI)或内置的 “OpenMP 式” 线程进行并发、并行和分布式计算,以及直接调用 C 和 FORTRAN 库而无需额外的代码。Julia 使用 即时 just-in-time (JIT)编译器,Julia 社区将其称为 “ 即时预编译 just-ahead-of-time (JAOT)”,因为它在运行之前默认将所有代码编译为机器码。

与 Python 不同,Julia 是专为统计学和机器学习而设计的。Julia 可以快速的完成线性代数的运算,但 Python 很慢。这是因为 Python 从来都不是为了适应机器学习用到的矩阵和方程而设计的。Python 本身并不差,特别是 Numpy,但在没有使用包的情况下,Julia 更像是为数学量身定制的。相比 Python,Julia 的运算符更像 R,这是一个显著的优势。大部分的线性代数运算可以用更少的时间和精力去完成。

众所周知,近年来 Python 在机器学习和数据科学领域占据主导地位。因为在 Python 中我们可以使用各种各样的第三方库来帮助我们编写机器学习的代码。虽然 Python 有这么多优势,但仍有一个主要的缺点——它是一门解释性语言,速度非常慢。现在是数据时代,数据越多我们处理它的时间就越长,这也是 Julia 出现的理由。

到目前为止,有关 Julia 的研究工作都集中在高性能或者 Julia 的科学计算能力等主题上。但在这里,我们将讨论 Julia 不仅能够有效地处理复杂的科学计算,还能够处理基于商业的问题,以及像 Python 一样处理机器学习和神经网络。

实验目标与实验设计

Julia 像 Python 一样简洁,但却像 C 一样是一门编译语言。首先我们来测试 Julia 要比 Python 快多少。为此,我们先在一些简单的程序上测试它们,然后来到我们实验的重点,测试它们的机器学习和深度学习能力。

Julia 和 Python 都提供了许多库和开源的基准测试工具。为了在 Julia 中进行基准测试和计算时间,我们使用了 CPUTimetime 库;对于 Python,我们同样使用了 time 模块。

矩阵乘法

一开始我们尝试了简单的算术运算,但由于这些运算不会产生太大的时间差异,我们决定比较矩阵乘法的时间差异。我们创建了两个 (10 * 10) 的随机浮点数矩阵,并对它们施以点积。众所周知,Python 有一个 Numpy 库,常被用于计算矩阵和向量。而 Julia 也有一个 LinearAlgebra 库,常用于计算矩阵和向量。因此我们分别比较了各自使用和不使用库的矩阵乘法的耗时。本文用到的所有源码已经放在了 GitHub 存储库。下面给出了用 Julia 编写的 10×10 矩阵乘法程序:

@time LinearAlgebra.mul!(c,x,y)
 
function MM()
x = rand(Float64,(10,10))
y = rand(Float64,(10,10))
c = zeros(10,10)
 
for i in range(1,10)
for j in range(1,10)
for k in range(1,10)
c[i,j] += x[i,k]*y[k,j]
end
end
end
end
@time MM
 
0.000001 seconds
MM (generic function with 1 method)

Julia 使用库耗时 0.000017 秒,使用循环耗时 0.000001 秒。

使用 Python 编写相同的矩阵乘法程序如下。 从结果可以发现,与不使用库相比,使用库的程序花费的时间更少:

import numpy as np
import time as t
x = np.random.rand(10,10)
y = np.random.rand(10,10)
start = t.time()
z = np.dot(x, y)
print(“Time = “,t.time()-start)
Time = 0.001316070556640625
 
import random
import time as t
l = 0
h= 10
cols = 10
rows= 10
 
choices = list (map(float, range(l,h)))
x = [random.choices (choices , k=cols) for _ in range(rows)]
y = [random.choices (choices , k=cols) for _ in range(rows)]
 
result = [([0]*cols) for i in range (rows)]
 
start = t.time()
 
for i in range(len(x)):
for j in range(len(y[0])):
for k in range(len(result)):
result[i][j] += x[i][k] * y[k][j]
 
print(result)
print(“Time = “, t.time()-start)
 
Time = 0.0015912055969238281

Python 使用库耗时 0.0013 秒,使用循环耗时 0.0015 秒。

线性搜索

我们进行的下一个实验是对十万个随机生成的数字进行线性搜索。这里使用了两种方法,一种是使用 for 循环,另一种是使用运算符。我们使用 1 到 1000 的整数执行了 1000 次搜索,正如你在下面的输出中看到的那样,我们还打印了我们在数据集中找到了多少个整数。下面给出了使用循环和使用 IN 运算符的时间。这里我们使用了 CPU 3 次运行时间的中位数。

使用 Julia 编写的程序和运行结果如下:

(LCTT 译注:此处原文缺失 Julia 代码)

使用 Python 编写的程序和运行结果如下:

import numpy as np
import time as t
x = np.random.rand(10,10)
y = np.random.rand(10,10)
start = t.time()
z = np.dot(x, y)
print(“Time = “,t.time()-start)
Time = 0.001316070556640625
 
import random
import time as t
l = 0
h= 10
cols = 10
rows= 10
 
choices = list (map(float, range(l,h)))
x = [random.choices (choices , k=cols) for _ in range(rows)]
y = [random.choices (choices , k=cols) for _ in range(rows)]
 
result = [([0]*cols) for i in range (rows)]
 
start = t.time()
 
for i in range(len(x)):
for j in range(len(y[0])):
for k in range(len(result)):
result[i][j] += x[i][k] * y[k][j]
 
print(result)
print(“Time = “, t.time()-start)
 
Time = 0.0015912055969238281
FOR_SEARCH:
Elapsed CPU time: 16.420260511 seconds
matches: 550
Elapsed CPU time: 16.140975079 seconds
matches: 550
Elapsed CPU time: 16.49639576 seconds
matches: 550

IN:
Elapsed CPU time: 6.446583343 seconds
matches: 550
Elapsed CPU time: 6.216615487 seconds
matches: 550
Elapsed CPU time: 6.296716556 seconds
matches: 550

从以上结果来看,在 Julia 中使用循环和运算符并不会产生显著的时间差异。但是在 Python 中循环几乎比运算符 IN 多花了三倍的时间。有趣的是,在这两种情况下,Julia 都比 Python 快得多。

线性回归

下一个实验是测试机器学习算法。我们选择了以一种最常见和最简单的机器学习算法,使用简单数据集的线性回归。我们使用了一个包含 237 条数据的数据集 “Head Brain”,数据集的两列分别为 “HeadSize” 和 “BrainWeight”。接下来,我们使用 “head size” 数据去计算 “brain weight”。在 Python 和 Julia 中我们都没有使用第三方库,而是从零实现了线性回归算法。

Julia:

GC.gc()
@CPUtime begin
linear_reg()
end
elapsed CPU time: 0.000718 seconds

Python:

gc.collect()
start = process_time()
linear_reg()
end = process_time()

print(end-start)
elapsed time: 0.007180344000000005

上面给出了 Julia 和 Python 所花费的时间。

逻辑回归

接下来,我们使用两种语言的库对最常见的机器学习算法(即逻辑回归)进行了实验。对于 Python 我们使用最常见的库 sklearn;对于 Julia,我们使用 GLM 库。我们在这里用到的数据集是有关银行客户的信息,其中包含 10,000 个数据条目。目标变量是一个二元变量,区分消费者是否继续使用银行账户。

下面给出了 Julia 进行逻辑回归所花费的时间:

@time log_rec()
0.027746 seconds (3.32 k allocations: 10.947 MiB)

下面给出了 Python 进行逻辑回归所花费的时间:

gc.collect()
start = process_time()
LogReg()
end = process_time()
print(end-start)

Accuracy : 0.8068
0.34901400000000005

神经网络

在各种程序和数据集上测试这两种语言后,我们在神经网络上使用 MNIST 数据集继续测试它们。该数据集包含从零到九的手绘数字的灰度图像。每张图像为 28×28 像素。每个像素值表示该像素的亮度或暗度,该值是包含 0 到 255 之间的整数。该数据还包含一个标签列,该列表示在相关图像中绘制的数字。

Figure 1: Example of MNIST data set

图 1 是 MNIST 数据集的示例。

对两种语言我们都建立了一个简单的神经网络来测试它们耗费的时间。神经网络的结构如下:

Input ---> Hidden layer ---> Output

该神经网络包含了一个输入层、隐层还有输出层。为了避免神经网络的复杂度过高,我们对数据集没有进行任何的预处理工作。在 Julia 和 Python 中我们都进行了40次训练并比较它们的时间差异。

Figure 2: Julia takes 5.76 seconds in a neural network

在 Julia 中,Flux 库通常被用于建立神经网络;在 Python 中我们常使用 Keras 库。图 2 展示了 Julia 在神经网络上的耗时。图 3 展示了 Python 的神经网络经过了若干次训练的耗时。

Figure 3: Python takes 110.3 seconds in a neural network

这个结果展示了 Julia 和 Python 在处理神经网络时存在巨大的时间差异。

表 1 总结了此次实验的测试结果并计算了 Julia 和 Python 时间差异的百分比。

实验Julia(秒)Python(秒)时间差(%)
矩阵乘法(不使用库)0.0000010.001599.9
矩阵乘法(使用库)0.0000170.001398.69
线性搜索(使用循环)0.4216.497.43
线性搜索(使用 IN 操作符)0.436.293.06
线性回归0.0007180.0071890
逻辑回归0.0250.3490192.83
神经网络5.76110.394.77

我们进行的所有实验都表明,随着程序复杂性以及数据集大小的增加,Julia 和 Python 之间的执行时间差异也会增加。由这个结果我们可以推断,Julia 是一门更适合机器学习和神经网络的编程语言。


via: https://www.opensourceforu.com/2022/09/julia-and-python-which-language-is-quicker/

作者:B Thangaraju 选题:lkxed 译者:Return7g 校对:wxy

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

对开源仓库的攻击越来越频繁了。

根据近日的研究,由于越来越多的企业使用开源代码仓库来开发他们的软件及解决方案,网络犯罪分子正在借此获利。根据软件供应链管理服务提供商 Sonatype 最近所做的研究,在最近三年里,受感染的软件包、以及对这些软件平台的 仿冒攻击 typosquatting assaults 和类似的黑客攻击的频率大幅增加。

该企业在过去三年中发现了大约 95000 个有害软件包,以及超过 55000 个最近才使用他们的存储库防火墙公布出来的危险软件包。届时,这个数字在三年内平均增长了 700%。

该企业称,他们的存储库防火墙将通过融合行为分析和自动策略执行的方式,不断发现并阻止有害软件包及潜在的易受攻击的组件。此外,它还使用了人工智能对每个新发布的开源软件进行评估,看它是否会带来一些安全风险。而且该企业断言,由于开源代码的迅速增加,人工分析已变得几乎不可能。

然而,这与企业是否在它的最终产品中包含受感染的恶意组件无关。该公司声称,如果那些恶意组件已经被下载到他们的端点上,就已经太晚了。

“恶意网络攻击的数量、频率、严重性和复杂性还在增长。但企业不能,也不应该仅为保护自身而避免使用开源代码。” Fox 补充说:“但他们可以使用预防性的工具,例如 Sonatype 防火墙来保证开发人员的工作进度和软件供应链的安全。”


via: https://www.opensourceforu.com/2022/09/attacks-on-open-source-software-are-on-the-rise/

作者:Laveesh Kocher 选题:lkxed 译者:自由的铁矿 校对:wxy

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