2023年5月

为了使复杂的摄像头设置标准化,你可以对 Linux 文件系统中摄像头的位置分配施加一些特殊规则。

 title=

如果在 Linux 上用多个摄像头 使用 OBS 进行直播,你可能会注意到摄像头会在开机时按照它们被检测到的顺序加载。通常情况下你不需要特别在意,但如果你有一个固定的直播设置和复杂的 OBS 模板,你需要知道现实世界中哪个摄像头将会显示在虚拟世界的哪个屏幕上。换句话说,你不希望今天将一个设备分配为“摄像头 A”,而明天它却成为“摄像头 B”。

为了使复杂的摄像头设置标准化,你可以对 Linux 文件系统中摄像头的位置分配施加一些特殊规则。

udev 子系统

在 Linux 上处理硬件外设的系统称为 udev。它检测和管理你接入计算机的所有设备。你可能没有意识到它的存在,因为它不会吸引太多注意力。尽管当你插入 USB 闪存驱动器以在桌面上打开它或连接打印机时,你肯定与它交互过。

硬件检测

假设你有两个 USB 摄像头:一个在电脑左侧,另一个在右侧。左侧摄像头拍摄近景,右侧摄像头拍摄远景,并且在直播过程中你需要切换两个摄像头。在 OBS 中,你将每个摄像头添加到 Sources 面板中,并直观地将它们命名为 “camLEFT” 和 “camRIGHT”。

设想一种最坏的场景,你有两个 相同的 摄像头:它们是同一品牌、同一型号。这是最坏的情况,因为当两个硬件设备完全相同时,它们几乎不可能有任何独特的 ID,以便你的电脑能够将它们区分开来。

不过,这个难题有解决办法,只需要一些简单的终端命令进行一些调查。

1、获取厂商和产品 ID

首先,将一个摄像头插入你想要它分配到的 USB 端口。然后输入以下命令:

$ lsusb
Bus 006 Device 002: ID 0951:1666 Kingston Technology DataTraveler G4
Bus 005 Device 003: ID 03f0:3817 Hewlett-Packard LaserJet P2015 series
Bus 003 Device 006: ID 045e:0779 Microsoft Corp. LifeCam HD-3000
Bus 003 Device 002: ID 8087:0025 Intel Corp. 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 046d:c216 Logitech, Inc. Dual Action Gamepad
Bus 001 Device 002: ID 048d:5702 Integrated Technology Express, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[...]

你通常可以专门搜索字符串 cam 以缩小结果范围,因为大多数(但不是所有)摄像头都会报告为 “camera”。

$ lsusb | grep -i cam
Bus 003 Device 006: ID 045e:0779 Microsoft Corp. LifeCam HD-3000

这里有很多信息。ID 被列为 045e:0779。第一个数字是供应商 ID,第二个数字是产品 ID。把它们写下来,因为稍后你会需要它们。

2、获取 USB 标识符

你还获取了摄像头的设备路径:总线 3,设备 6。在 Linux 中有一句话:“一切皆文件”,实际上,USB 设备被描述为以 /dev/bus/usb/ 开始,以总线(本例中为 003)和设备(本例中为 006)结尾的文件路径。查看 lsusb 输出中的总线和设备号。它们告诉你该摄像头位于 /dev/bus/usb/003/006

你可以使用 udevadm 命令获取此 USB 设备的内核代号:

$ sudo udevadm info --attribute-walk /dev/bus/usb/003/006 | grep "KERNEL="

   KERNEL=="3-6.2.1"

这个例子中的内核 USB 标识符是 3-6.2.1。把你系统中的标识符记下来,因为之后也会用到它。

3、为每个摄像头重复该过程

将另一个摄像头(如果你有多个摄像头,则为每个摄像头)连接到要分配给它的 USB 端口。这与你用于另一个摄像头的 USB 端口是不同的!

重复该过程,获取供应商和产品 ID(如果摄像头是相同的品牌和型号,则应与第一个摄像头相同)以及内核 USB 标识符。

$ lsusb | grep -i cam
Bus 001 Device 004: ID 045e:0779 Microsoft Corp. LifeCam HD-3000
$ sudo udevadm info --attribute-walk dev/bus/usb/001/004 | grep "KERNEL="

   KERNEL=="1-6"

在这个例子中,我已经确定我的摄像头连接到了 1-6 和 3-6.2.1(第一个是我的机器上的 USB 端口,另一个是插在我的机器上的显示器插口的集线器,这就是为什么一个比另一个更复杂的原因)。

编写一个 udev 规则

你已经有了所需的一切,因此现在可以编写一个规则,告诉 udev 在特定的 USB 端口找到一个摄像头时给它一个一致的标识符。

创建并打开一个名为 /etc/udev/rules.d/50-camera.conf 的文件,并输入这两个规则,使用适合你自己系统的厂商和产品 ID 和内核标识符:

SUBSYSTEM=="usb", KERNEL=="1-6", ATTR{idVendor}=="045e", ATTR{idProduct}=="0779", SYMLINK+="video100"

SUBSYSTEM=="usb", KERNEL=="3-6.2.1", ATTR{idVendor}=="045e", ATTR{idProduct}=="0779", SYMLINK+="video101"

这些规则告诉 udev,当在特定的 USB 位置找到与特定供应商和产品 ID 匹配的设备时,创建一个名为 video100video101 的符号链接(有时也称为“别名”)。符号链接大多是任意的。我使用较大的数字,这样它们就容易被发现,并且数字不能与现有设备冲突。如果实际上有超过 101 个摄像头连接到计算机上,请使用 video200video201 以确保安全(记得联系我!我很想了解 项目的情况)。

重启

重新启动计算机。你现在可以让摄像头保持连接在计算机上,但实际上这并不重要。一旦 udev 加载了规则,它就会遵循这些规则,无论设备是否在启动期间附加或稍后插入。

许多人说 Linux 从不需要重启,但是 udev 在引导期间加载其规则,而且此外,你想保证你的 udev 规则在重新启动时也起作用。

计算机重新启动后,请查看摄像头注册的 /dev/video 目录:

$ ls -1 /dev/video*
/dev/video0
/dev/video1
/dev/video100
/dev/video101
/dev/video2
/dev/video3

正如你所看到的,在 video100video101 有条目。今天,这些是指向 /dev/video2/dev/video3 的符号链接,但明天它们可能是指向 /dev/video1/dev/video2 或任何其他基于 Linux 检测和分配文件的组合。

 title=

你可以在 OBS 中使用这些符号链接,这样 camLEFT 始终是 camLEFT,camRIGHT 始终是 camRIGHT。

(题图:MJ/9bb70b6d-9f49-493a-8daf-5546d207781f)


via: https://opensource.com/article/22/1/cameras-usb-ports-obs

作者:Seth Kenlon 选题:lujun9972 译者:hanszhao80 校对:wxy

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

GNOME 的下一代照相应用程序 “ 快照 Snapshot ” 应用正式启用,用以替代现有的经典 “ 茄子 Cheese ” 工具。

GNOME Snapshot

一个新的应用程序已被接受进入 GNOME 的孵化器组:“ 快照 Snapshot ”。

“快照” 应用的第一个预览版本已经发布,这使它成为取代 “ 茄子 Cheese ” 应用的卓越候选者,“茄子” 应用是 Linux 用户当前使用的 GNOME 网络摄像头应用程序。

让我们快速看一下它。

? “孵化器” 组包含那些将成为 GNOME 核心和 GNOME 开发工具一部分的项目,这意味着 它可能会有一天被纳入 GNOME 的发布版本

? “快照” 应用是什么?

GNOME “快照” 应用程序的屏幕截图

正如我前面提到的那样,它是 GNOME 的一款照相应用程序。它是使用内存安全的 Rust 编程语言编写的,提供了非常简洁的功能集。

“快照” 应用的用户界面非常简洁,既适用于移动设备,也适用于传统的桌面/笔记本电脑。

功能方面,它几乎拥有你对此类应用程序的所有期望。

它有一个 “倒计时” 功能,允许你设置拍照或录像的定时器,并提供几个计时选项。

GNOME 快照应用程序上的倒计时计时器屏幕截图

此外,你可以通过进入偏好设置菜单,在这个应用程序中禁用相机快门的声音。

GNOME 快照应用程序的偏好设置菜单截图

“快照” 应用程序还带有一个相当不错的画廊视图,让你查看拍摄的照片/视频,并使用不同的程序共享或访问它们。

你觉得 “快照” 应用的功能很少吗?

我不知道你怎么看,但我觉得很少。

不过,有时候,简单更好。对于 GNOME 应用程序来说,通常是这样。

它不会很快取代 GNOME 现有的相机应用程序 “茄子”。但随着开发的进展,他们可能会添加一些令人兴奋的功能。

如果想要了解更多信息,可以关注 本周 GNOME 博客以查看 “快照” 应用和其他 GNOME 应用程序的开发更新。

? 获取 “快照” 应用

你可以从 Flathub 商店 获取该应用程序,并在 GitLab 上探索其源代码。

Snapshot(Flathub)

? 你觉得呢?“快照” 能否取代 “茄子” 成为你在 GNOME 上的默认相机应用程序?


via: https://news.itsfoss.com/gnome-snapshot/

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

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

Hugging Face 发布免费的代码生成 AI

AI 可以大幅削减开发成本,同时让编码员专注于更有创造性的任务。据研究,开发人员至少有一半的工作是在调试,而不是积极编程。人工智能初创公司 Hugging Face 和 ServiceNow 发布了 StarCoder,这是一个免费的代码生成 AI,与 GitHub Copilot 等类似。它在 80 多种编程语言以及 GitHub 资源库中的文本上进行训练,包括文档和编程笔记本。StarCoder 可以集成在 VSCode 中,并且像 ChatGPT 一样,可以遵循基本指令(例如,“创建一个应用程序的用户界面”)并回答关于代码的问题。

消息来源:Tech Crunch
老王点评:但是 AI 会让程序员从事更多更有创造性的工作吗?还是会让程序员更偷懒?

Gmail 开始在收件箱中间显示广告

在移动设备上,Gmail 会在你的收件箱的“更新”过滤器中显示广告。据用户报告,桌面版的 Gmail 近期开始在“推广”标签下的邮件列表中插入广告,和你接收到的推广邮件混在一起,不过它们至少没有显示在“主要”标签中。

消息来源:9to5google
老王点评:虽然很多人反对,但是我觉得还可以接受,毕竟“推广”标签本来就是各种软硬广告。

OpenAI 不再依赖 API 客户的数据来训练

OpenAI 称该公司不再用付费客户数据训练其人工智能大语言模型,“已经有一段时间没有训练了”。OpenAI 的服务条款已于 3 月 1 日悄然更新。OpenAI 的新隐私和数据保护只延伸到使用该公司 API 服务的客户,如微软、Salesforce 等,但可能会使用来自 API 以外的服务的内容,例如,输入到聊天工具 ChatGPT 的文本。

消息来源:CNBC
老王点评:免费的代价就是被用来训练。

Ubuntu 操作系统背后的团队已经公布了下一个版本的代号,令人兴奋的是,它是 “Mantic Minotaur”。

根据 Ubuntu 开发平台 Launchpad 的信息,Ubuntu 23.10 将被称为 “ Mantic Minotaur 预言牛头怪 ”。虽然这个名称可能没有任何深层含义,但它确实听起来很不错。(LCTT 译注:尬吹)

这个名称由两个单词组成:“Mantic” 和 “Minotaur”。“Mantic” 指占卜或预言,而 “Minotaur” 是希腊神话中的半人半牛的生物。虽然这两个单词的组合可能没有任何隐藏的含义,但它确实是一个有趣的代号。

过去,Ubuntu 发行版的代号通常具有神秘的涵义,或传递着版本发布的某种特定信息。然而,最近的几个版本的代号变得更加轻松、有趣和古怪。从“ Disco Dingo 迪斯科丁格狗 ”到“ Hirsute Hippo 有长发的河马 ”,这些代号之所以被选择,是因为它们有趣而好玩。

虽然“Mantic Minotaur”可能不符合哺乳类动物作为 Linux 发行版的吉祥物的模式,但并不是第一个用作 Ubuntu 发行版代号的神话生物。在过去,该团队也曾使用过一些其他的神话生物作为代号,例如“ Wily Werewolf 狡猾的狼人 ”和“ Jaunty Jackalope 神奇的沙漠兔角兽 ”。

Ubuntu 23.10 的预计发布日期为 2023 年 10 月 12 日。虽然该团队尚未透露该版本具体的更新内容,但我们可以猜测该版本将包含一个新的 Linux 内核和更新的图形驱动程序。此外,我们也可以期待看到 GNOME 45 和基于 Flutter 的安装程序进一步开发的草稿。

你对新的代号有什么想法?你对即将到来的版本有什么期待?请在评论中与我们分享。

(题图:MJ:/38b23fa4-f583-4b14-9b9e-478790bbdb49)


via: https://debugpointnews.com/ubuntu-23-10-codename/

作者:arindam 选题:lkxed 译者:wxy 校对:wxy

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

结合 Python、Pygwalker、Pandas 和 Jupyter Notebook,为你的数据提供一个动态的可视化界面。

开源工具在推动技术进步和使其更加普及方面发挥了重要作用。数据分析也不例外。随着数据变得越来越丰富和复杂,数据科学家 始终在寻找简化工作流程并创建交互式和吸引人的可视化的方式。PyGWalker 就是为解决此类问题而设计的。

PyGWalker(Graphic Walker 的 Python 绑定)将 Python Jupyter Notebook 的工作环境连接到 Graphic Walker,以创建开源数据可视化工具。你可以通过简单的拖放操作将 Pandas 数据帧 转化为精美的数据可视化。

Exploring data through a visual interface with Pygwalker

开始使用 PyGWalker

使用 pip 安装 PyGWalker:

$ python3 -m pip install pygwalker

导入 pygwalkerpandas 以在项目中使用它:

import pandas as pd
import pygwalker as pyg

将数据加载到 Pandas 数据报中并调用 PyGWalker:

df = pd.read_csv('./bike_sharing_dc.csv', parse_dates=['date'])
gwalker = pyg.walk(df)

你现在有一个图形用户界面来探索和可视化你的 Pandas 数据帧!

使用 Graphic Walker 探索数据

Graphic Walker 的主要功能之一是能够更改标记类型以创建不同类型的图表。例如,通过将标记类型更改为折线来创建折线图。

Line charts generated by Pygwalker

你还可以通过创建 concat 视图来比较不同的度量,该视图将多个度量添加到行和列中。

Comparing data in the Graphic Walker interface.

将维度放入行或列中,以创建一个 facet 视图,这个视图包含多个子视图,这些子视图由一个维度中的值分隔开。

The facets view in Graphic Walker.

数据 Data 选项卡中,你可以在表格中查看数据帧并配置分析和语义类型。

Table data in Graphic Walker.

使用 PyGWalker 进行数据探索

你可以使用 PyGWalker 将 Pandas 数据转换为高度可定制的图形图表。你也可以使用 PyGWalker 作为探索数据的强大工具,以发现潜在的模式、趋势和洞察力。

数据探索选项可以在“ 探索模式 Exploration Mode ”选项(工具栏中)中找到。它们可以设置为点模式刷模式

  • 点模式:通过将你的鼠标光标指向数据的一个特定部分来探索数据。
  • 刷模式:通过在数据范围周围画一个选择框来探索数据,然后拖动选择框来查看生成的报告。

试试看你的数据

你可以在这些云演示中试用 PyGWalker:Google ColabBinderGraphic Walker Online Demo

PyGWalker 是一个用于简化数据分析和可视化工作流程的优秀工具,特别是对于那些想要使用 Pandas 进行界面可视化的人。借助 PyGWalker 和 Graphic Walker,数据科学家可以在 Jupyter Notebook 中通过简单的拖放操作轻松创建令人惊叹的可视化效果。请查看 PyGWalker Git 仓库获取源代码。

对于寻求自动化数据探索和高级增强分析的开源解决方案的数据科学家,该项目还适用于 RATH,这是一种开源自动 EDA、人工智能支持的数据探索和可视化工具。你还可以查看 RATH Git 仓库 获取源代码和活跃的社区。

(题图:MJ/21c21716-b900-4466-98a9-51268960c9b8)


via: https://opensource.com/article/23/4/data-visualization-pygwalker-jupyter-notebook

作者:Bill Wang 选题:lkxed 译者:geekpi 校对:wxy

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

开源对于数据分析非常重要,它能为用户、社区成员和公司带来长远利益。

我曾经写过介绍 Cube 社区的文章,至今已过去了一年多。随着和社区会员以及其他供应商在一起工作,我更坚信开源对于数据分析工作是很有好处的。我也认为,需要不断思考开源为什么重要,以及开源是如何为人们带来长远利益的。

开源对于用户和客户的好处

我从 Cube 社区听说的第一件事就是:他们经常可以从与其他社区成员的交流中得到技术支持,这种支持往往好于使用需要付费的专有软件获得的支持。在很多开源社区中,我发现,社区成员很乐意帮助别人(特别是帮助新手),并且把这种帮助看作回报开源社区的方式。

在开源社区,你不需要获得许可就可以加入。一个好的开源社区不但服务于开发者,而且令人们感觉到有一种信任的文化,认为与他人在聊天室、论坛和问题跟踪工具进行开放式讨论是一件愉快的事。这对于诸如数据工程师或数据分析师之类的非开发者来说也很重要。

当然,借助开源软件,还可以直接查看代码、修复错误或为项目添加新功能。以 Cube 社区为例,对于 GraphQL 的支持就是我们去年的亮点,我们的社区成员为项目 贡献了这些功能

对一个活跃的社区来说,也是很有好处的。即使当供应商不能及时地发布修复版本,你仍然可以自行修改,并可以在等待官方修复版的这段时间内使用修改后的版本。社区成员和用户也不愿意被供应商的奇思妙想所束缚,而且使用开源软件时也不存在升级的压力。

开源社区在 GitLab、GitHub、Codeberg、YouTube 等各种地方留下了很多“面包屑”,这令衡量活跃程度和社区参与度更容易,也可以衡量社区参与和文化的水平。所以,即使在试用软件前,你也可以在做决定之前了解到它的社区(以及公司)的一些情况。

开源对公司的好处

没有其他办法比开源更能降低使用软件的障碍了。在早期,开源可以提高技术受众的认知度。早期的使用者往往后来会成为你的最忠实的粉丝。

早期的使用者也是加速产品发展的催化剂。他们对于产品的反馈和功能需求(例如对问题的追踪)能实现对真实用例的洞察。另外,很多开源爱好者可以合作开发(比如通过代码仓库)新功能和进行 BUG 修复。不用说,这对于创业早期的公司来说是很重要的,因为当时缺少开发和产品相关的资源。

你对社区的关注会令它发展壮大,并且呈现多样化趋势。多样化不仅体现在人数和地域方面。你需要来自新兴行业的用户或从事各种职业的用户。以 Cube 社区为例,在一年前我常常会跟一些开发者交流,但一年后与我交流得更多的是那些数据使用者和用户。

在良好的开源社区里,合作文化降低了准入门槛,不仅对于开发者,对于其他提问者、分享观点者或愿意作出非技术性贡献的人们来说都是如此。随着公司和社区的发展,你可以更好地接触到不同的观点。

对包括社区成员在内的广大人群来说,开源使合作变得更容易。例如,你需要跟其他贡献者在同一个数据库驱动或集成上进行合作,如果可以通过开源仓库进行合作,就很方便了。

关于社区

以上这些好处都降低了使用软件和协作开发的门槛。开源模型不仅对单个软件或公司有帮助,它还能令整个生态和行业加速发展。我希望在数据分析领域看到更多开源的公司和社区,同时希望人们持续关注开源产品。

(题图:MJ/50a877f5-e0e1-4f66-91bf-f1f60b4a9023)


via: https://opensource.com/article/22/9/open-source-data-analytics

作者:Ray Paik 选题:lkxed 译者:cool-summer-021 校对:wxy

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