2023年3月

用树莓派取代食品售货机上的投币箱是一个天才之举。

作为在公共图书馆工作的教育工作者,我一直在关注 树莓派 的有趣用途。在我看来,得克萨斯州达拉斯市的 问答售货机 Trivia Vending Machine 项目是这些神奇设备最具创意和最有趣的用途之一。使用树莓派取代食品售货机上的投币箱是 Greg Needel 和他的团队的一个天才之作。这个想法的潜在用途是深远的。请观看下面这个 YouTube 短视频,了解问答自动售货机的运行情况。

最初的问答售货机专注于科学问题,但你可以制作一个问答售货机来回答任何问题:历史、公民、文学等等。如果你鼓励学生写自己的问题,并回答对方的问题,那将是最有吸引力的用途。请考虑这样:自动售货机可以不发放食物,而是发放当地企业的优惠券。我谋生的方式之一是教吉他课,我很乐意捐出一节吉他课作为问答售货机的优惠券。然而,学生必须积累适当数量的积分才能获得我的一堂吉他课。

把你的想象力再延伸一点。是否有可能让学生解决逻辑谜题,以便从自动售货机获得食物(或优惠券)?是的,这并不难创造。也许是数独谜题、Wordle、KenKen、Sokoban 或任何其他谜题。学生可以用触摸屏玩这些谜题。国际象棋怎么样?当然,学生可以通过解决象棋谜题来获得食物(或优惠券)。

你是否注意到视频中原来的问答售货机又大又重? 设计一个更小的,可能是滚动手推车大小的三分之一,这可以在学校、图书馆、博物馆和创客嘉年华之间更容易运输。

问答售货机的内部由步进电机组成。你可以在网上购买二手的。在网络上搜索“二手自动售货机电机”会出现 Vending WorldVendMedic 网站。

如果你是创客空间的成员,请向其他成员介绍问答售货机。这是一个开放的发明,没有专利,所以任何人都可以制造它。(谢谢你,Greg Needel)我想为这样的设备编写代码并不太难。如果有人可以创建此类代码的 GitHub 仓库,以及可能附带的一些解释性截屏,那就太好了。

虽然问答售货机没有在红牛创意大赛中获奖,但这项发明还是值得获奖的。应该有人找到 Greg Needel 并给他一个合适的奖品。该奖项应该是什么样子的?可能是 2.5 万或 5 万美金的样子。我为 Greg Needel 和他的创意团队欢呼三声。他们把树莓派带到了这种计算机的发明者所希望的方向:修理工的快乐。大胆、美丽、开放。你还能要求更多吗?

最后一件事。问答售货机是几年前使用早期的树莓派型号制作的。当前的树莓派速度更快,响应更快。因此,你在上述视频中注意到的任何交互延迟在今天的树莓派上已不复存在。

哦,我非常想要一块糖果。我砸吧砸吧嘴。提醒我,我需要赚取多少积分才能获得士力架?不惜一切代价,我会不惜一切代价。


via: https://opensource.com/article/23/3/raspberry-pi-trivia-vending-machine

作者:Phil Shapiro 选题:lkxed 译者:geekpi 校对:wxy

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

你正在寻找 Linux 上最好的 EPUB 阅读器?这里是为你准备的最好的自由开源的 EPUB 阅读器。

你是一位热衷于阅读电子书的 Linux 用户吗?如果,是的,你必然知道在 Linux 发行版上的默认文档阅读器不能满足你作为一名书虫的所有要求。

EPUB 是一种广泛使用的开放电子书格式,大多数的电子书阅读器都支持。值得庆幸的是,在 Ubuntu 软件中心和其它存储库中有一些 EPUB 阅读器应用程序,你可以自由下载它们。.

但是,请记住,仅有几个好用的阅读器。并不是有很多!

在这篇文章中,我们将讨论在 Ubuntu Linux 上的最好的 EPUB 阅读器,这将增强你的阅读体验。我们也将探讨它们的特色功能和优点,以便你可以选择一个适合你的应用程序。

但是,在此之前,你认为在一个 “令人满意的” EPUB 阅读器中,应该有哪些功能呢?

在一款 EPUB 阅读器中所应该有的功能

  • 用户界面:一款好的 EPUB 阅读器应该有一个简单易懂的用户界面,它会使导航和自定义你的阅读体验变得简单。你并不是在阅读一本实体书,因此,对于 “实体书” 的阅读体验来说,用户界面是极其重要的!
  • 自定义:拥有自定义字体大小、字体类型、背景颜色和其它设置的能力,它们将增强你的阅读体验。
  • 书架:书架是一种很方便的特色功能,它允许你组织你的 EPUB 文件和保持追踪你的阅读进度。
  • 注释:在你的 EPUB 文件中,高亮显示、下划线和添加注释是一种很重要的特色功能,它会帮助你记住重点。
  • 同步:如果你在多台设备上阅读 EPUB 文件,同步你的阅读进度和书签是非常重要的,可以避免丢失你的追踪进度.

现在,让我们看看为 Ubuntu 和其它的 Linux 发行版提供的最好的 EPUB 阅读器,它们都涉及上述所有的特色功能。

在 Ubuntu 和其它 Linux 发行版上的最好的 EPUB 阅读器

Calibre

在这份列表上的第一款阅读器是 Calibre ,它是最好的和最完善的电子书管理解决方案。它是一款功能强大的 EPUB 阅读器,也提供电子书管理工具。它在用户中是一种流行的选择,因为它有丰富的特色功能集,包括:转换 EPUB 文件到不同的格式、编辑 EPUB 文件,甚至创建你自己的 EPUB 文件的功能。Calibre 也有一个用户友好的界面,允许你自定义你的阅读体验。

Calibre welcome wizard

Calibre 正在持续更新,每个月都会有大量的特色功能和增强的功能。它的开发活动是非常活跃的,它是这份列表中最好的一个。

功能摘要:

  • 支持多种电子书设备(基于安卓、iOS 的设备)
  • EPUB 阅读器和管理器
  • 为你的电子书库评级和标记
  • 从互联网获取电子书的元数据
  • 从流行的新闻源处阅读新闻,并制作电子书!
  • 使用自动转换器来上传电子书到 Kindle 和其它的阅读器(当然,也可以下载)
  • 内置可购买电子书的浏览器

Calibre main window

Uploading books to Calibre

你可以从其官方网站下载 Calibre 。或者,你可以为你的 Linux 发行版 设置 Flatpak & Flathub ,并单击下面的按钮(或使用命令)来安装:

使用 Flatpak 来安装 Calibre
flatpak install com.calibre_ebook.calibre

针对其它的下载选项(Windows、macOS 和原生的 Linux 软件包),请访问 这个网页

Foliate

我们在先前的 最佳的 Ubuntu 应用程序(第 3 部分) 系列中介绍了 Foliate 。它是一款轻量现代的 EPUB 阅读器,它提供了一系列的自定义选项。它是基于 GTK4 的,并且与 GNOME 桌面环境无缝集成。它有一个平滑且易于导航的界面,并且有自定义字体大小、字体类型和行距的功能。

Foliate main window and settings

Foliate 也包含:一种针对夜间阅读的深色模式,一个调整内置颜色温度的选项,用以减少眼睛疲劳。

功能摘要:

  • 沉浸式视图,主顶部工具条在阅读时自动隐藏
  • 列入目录视图,支持从主要的电子书网站直接下载
  • 多屏视图 – 双页面视图和滚动视图
  • 自定义字体和行距
  • 内置亮度控制,仅应用于应用程序本身!
  • 阅读进度滑块
  • 支持书签和注释
  • 在书中搜索
  • 快速字典查找

Foliate reader view

Foliate library view

下载 Okular 的最好方式是使用 Flatpak 来下载。针对你的系统设置 Flatpak & Flathub ,并使用下面的链接(或使用下面提到的命令)来安装它:

使用 Flatpak 来安装 Foliate
flatpak install com.github.johnfactotum.Foliate

要学习更多关于 Foliate 的信息,访问官方 网站

Okular

KDE 自带的文档阅读器是 Okular ,它也支持 EPUB 文件。它是一款功能丰富的应用程序,它提供了一系列自定义选项,包括:字体大小、字体类型和背景颜色。Okular 也有内置注释功能,你可以使用它来注释你的 EPUB 文件。它也支持很多文件格式:

  • EPUB
  • PDF
  • DjVU
  • 图形文件: JPEG 、PNG 、GIF 、Tiff 、WebP
  • 漫画文件: CBR 和 CBZ

不过,你不能使用 Okular 来管理收藏或下载电子书。

Okular

你可以在 Ubuntu 及其相关发行版中安装 Okular :

sudo apt install okular

针对 Fedora 及其相关发行版:

sudo dnf install okular

如果你更喜欢 Flatpak ,将你的系统设置为 Flatpak ,并使用下面的链接(或使用下面提到的命令)来安装 Flatpak:

使用 Flatpak 格式安装 Okular
flatpak install org.kde.okular

Bookworm

在这份列表上的下一个 EPUB 阅读器是 Bookwork ,在我看来,它完全被低估了。它确实是一款 elementary OS 的应用程序,但是,对于所有的 Linux 发行版来说都是可以安装的。

它有简洁的界面,并提供一系列自定义选项,包括字体大小、字体类型和背景颜色。Bookworm 也允许你将你的 EPUB 文件组织到集合中,并保持追踪你的阅读进度。

Bookworm library view

另外,你可以使用一个内置的标签编辑器和评分系列来轻松地管理你的 EPUB 书籍。此外,它也支持注释、搜索、章节和键盘导航。

不可缺少的是,它支持 EPUB 、MOBI 、PDF 、EB2 、CBR 和 CBZ 文件。

Bookworm EPUB reader view

安装是很容易的。如果你是一名 elementary OS 用户,你可以在 应用中心 AppCenter 中搜索 “bookworm” 。

针对 Ubuntu 及其相关发行版,你可以使用下面的 PPA 来安装它:

sudo add-apt-repository ppa:bookworm-team/bookwormsudo 
apt-get update
sudo apt-get install com.github.babluboy.bookworm

如果你更喜欢 Flatpak ,将你的系统设置为 Flathub 和 Flatpak ,并使用下面的链接来安装它:

flatpak install com.github.babluboy.bookworm

要学习更多的信息,访问官方 网站

FBReader

在这份最好的 EPUB 阅读器列表中最后一款应用程序是 FBReader 。在你继续阅读之前,注意:它在 2015 年以前是开源软件。但是,它现在是闭源软件,不过,有一个开发者 SDK 是可用的。

它是一款流行的多功能的 EPUB 阅读器,所有的 Linux 发行版都可以获取使用。它有一个简单且用户友好的界面,允许你自定义你的阅读体验。FBReader 也支持各种电子书格式,包括:EPUB 、MOBI 、FB2 和 HTML 。它也提供一种书架特色功能,允许你组织你的电子书和保持追踪你的阅读进度。

FBRedaer 也支持在你的设备之间云同步你的库。

FBReader

在 Linux 上安装 FBReader 是有一些难度的,因为它只提供 Snap 软件包。你可以在 针对 Snap 设置你的系统 后,使用 snap 来安装它,如下所示。

sudo snap install fbreader

要学习更多关于 FBReader 的信息,访问官方 网站

在 Linux 上的更多的 EPUB 阅读器

Koodo reader

它是一个相当新的自由及开源的 EPUB 阅读器,带有大量的特色功能。并且它也看起来极好。唯一的问题是,它是使用 Javascript 、HTML 和 TypeScript 构建的。因此,它不是原生的应用程序,但是它是很快的。你可能会想尝试一下。在 Linux 上,Koodo reader 提供 AppImage 、本机的 deb 和 RPM 文件。

你可以 在这里下载 ,这里是一些截屏。

Koodo EPUB reader

Koodo - reader view

Koodo options

这里还有另外的两个 EPUB 阅读器,但是,不幸的是,它们已经不再继续开发了。

EPUB 阅读器的对比表

为使你更容易地选择适合你所需要的 EPUB 阅读器,我们创建了一个比较表,着重强调了上述 EPUB 阅读器的关键特色功能。

EPUB 阅读器用户界面自定义书架注释同步
Calibre✔️✔️✔️✔️✔️
Foliate✔️✔️✔️✔️
Bookworm✔️✔️✔️❌(受限)
Okular✔️✔️❌(受限)
FBReader✔️✔️✔️✔️✔️

去哪里获取免费的电子书?

很多网站为你提供来自著名作者的大量漫画和小说的收藏。最好的网站是 “Project Gutenberg” 。你可以下载来自所有分类中的 60,000 多本电子书。

使用下面的链接访问网站。在你下载电子书后,你可以使用上述任意的 EPUB 阅读器来制作和享受你的个人电子书收藏。

Project Gutenberg

你也可以尝试精选免费电子书的 standard ebooks。

Standard eBooks

总结

总而言之,在 Linux 上有几个可用的 EPUB 阅读器,它们提供大量的特色功能来增强你的阅读体验。如果你正在寻找一个功能丰富的 EPUB 阅读器,Calibre 是一个极好的选择,它也可以作为一个电子书管理器工具。Foliate 和 Bookworm 是一个轻量的现代的应用程序,非常适合那些看重自定义选项的人。

我希望通过上述的比较和详细的描述,你现在可以为你自己选择最好的 EPUB 阅读器了。


via: https://www.debugpoint.com/epub-readers-linux/

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

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

俄罗斯开发者被阻止向“自由及开源软件”贡献

最近有两起俄罗斯开发者被阻止贡献 FOSS 代码的事件。在 Linux 内核邮件列表上,俄罗斯芯片制造商贝加尔电子公司的 Sergey Semin 的贡献被拒绝了,“我们对接受来自贵组织生产的硬件或与之相关的补丁感到不舒服。”另外一件也是针对俄罗斯开发者的,他的 GitHub 账户已被封锁。他开发的 “一个管理和配置支持智能平台管理界面的设备的工具”,ipmitool,被标记为只读“存档”。原因是他为俄罗斯芯片制造商 Yadro 工作,该公司正在研发 RISC-V 芯片,被列入了乌克兰的战争与制裁数据库。

消息来源:The Register
老王点评:GitHub 倒也罢了,那毕竟是一家美国公司。Linux 内核,FOSS ?!呵呵。

现代汽车承诺在汽车中保留实体按钮

这是一个源于安全考虑的决定,现代汽车公司的设计主管说,“对我来说,与安全有关的按钮必须是一个硬键,……很容易感知和感觉到它”。但未来的情况可能会发生变化。特别是,当自动驾驶成为主流时,该公司可能会更多地考虑使用触摸控制。“当涉及到 4 级自动驾驶时,那么我们将拥有一切软键。”

消息来源:The Drive
老王点评:现在有些汽车你都找不到什么按键和旋钮,真当自己的软件系统万无一失吗?

甲骨文公司宣布推出 Java 20

这个有 27 年历史的语言的最新版本包括数以千计的性能、稳定性和安全性方面的改进,并对 Java 开发工具包提出了 7 项增强建议。甲骨文公司在过去的五年中,每六个月推出一个新的 Java 版本,并说它是这个开源项目的最大贡献者,在 Java 开发组织中排名第一。Java 的开发分为六个项目,分别针对性能和功能的不同方面,如使其更加简洁和不容易出错、改善启动时间和性能、实现大规模并行等等。今年 9 月将发布的 Java 21 将是每两年一个的 LTS 版本。

消息来源:Silicon Angle
老王点评:Java 是不错,就是被当成下金蛋的母鸡了。

数据库管理员(DBA)的职责是什么?

在依赖 Postgres 作为主要数据库管理系统的现代 IT 组织中,Postgres DevOps DBA 发挥着关键作用。Postgres DevOps DBA 的角色涉及许多职责、技能和任务。其中一些包括:管理数据库设计和架构、基础设施管理、确保高可用性、安全性以及执行日常维护任务(调整、备份和恢复以及监控)。

本文总结了当今企业环境中 Postgres DevOps DBA 的常见职责和技能。

数据库设计和架构

Postgres DevOps DBA 的两个主要职责是数据库设计和架构。该角色必须对应用的数据存储要求和涉及的业务逻辑有更深入的了解。这些知识包括设计和创建数据库模式和表。它还意味着配置索引和其他数据库对象以优化查询性能,并选择使用正确的 Postgres 版本。该角色必须确保数据库的设计具有可扩展性和可维护性,同时考虑到未来的增长和数据保留需求。

性能调优

另一个关键的职责是性能调优。Postgres DevOps DBA 必须能够通过监控数据库性能指标和分析查询性能来识别和解决性能问题。该角色还必须对数据库有深入的了解,并能够对其进行配置以获得最佳性能,包括优化查询和索引、调整内存设置以及识别和解决性能瓶颈。

备份与恢复

备份和恢复也是职责的关键。DBA 必须对备份和恢复解决方案有深入的了解,并且必须设计和实施备份策略,以确保在数据丢失的情况下始终可以恢复数据。他们还必须验证恢复过程并实施高可用性和灾难恢复解决方案,以最大限度地减少停机时间和数据丢失。

安全

安全是另一个重要的职责。DBA 通过实施访问控制、加密和其他安全措施来保护数据,从而确保数据库安全。他们还必须了解最新的安全趋势和最佳实践,并加以实施以防范潜在威胁。

基础设施管理

基础设施管理也是一项重要职责。这些 DBA 必须管理硬件、网络和存储基础设施,并提供基础设施以支持 Postgres。他们还必须针对性能和可用性配置基础架构,并根据需要扩展基础架构以适应数据增长。

自动化和脚本

该角色必须能够使用 Ansible、Terraform 和 Kubernetes 等工具自动执行重复性任务,例如备份、监控和修补。他们还必须熟悉自动化最佳实践,以确保高效且有效地自动化任务。自动化减少了人为错误的可能性,提高了效率,并允许 DBA 专注于更复杂的任务。

监控和配置警报

监控数据库和基础设施并设置警报以通知他们问题非常重要。该角色还必须采取主动措施来防止停机和数据丢失,使用 Nagios、Zabbix 和 Prometheus 等监控工具来检测潜在问题。

合作

除了这些技术职责外,PostgreSQL DevOps DBA 还必须与其他 IT 团队(例如开发人员、运维人员和安全人员)协作,以将数据库集成到更大的 IT 生态系统中。DBA 还必须记录他们的工作,并及时了解 Postgres 和 DevOps 的最新趋势和最佳实践。这涉及与利益相关者合作以收集需求、确定优先级并使数据库与组织的更广泛目标保持一致。

总结

总之,Postgres DevOps DBA 在依赖 Postgres 作为主要数据库管理系统的现代 IT 组织中发挥着关键作用。你当前的技能和期望如何匹配此列表?作为现代数据库环境中的 DBA,你是否走在正确的道路上?


via: https://opensource.com/article/23/3/postgres-devops-dba

作者:Doug Ortiz 选题:lkxed 译者:geekpi 校对:校对者ID

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

我用 gphoto2 给我的旧单反相机带来了新的生命,把它变成了 Linux 电脑的网络摄像头。

今年,在我基本上放弃了 MacBook,转而使用 NixOS 机器之后,我开始在与人进行视频通话时被要求“打开摄像头”。这是一个问题,因为我没有网络摄像头。我考虑购买一个,但后来我意识到我有一台完好无损的 2008 年产的佳能 EOS Rebel XS 数码单反相机放在书架上。这台相机有一个 mini-USB 接口,所以我自然而然地思考:一台数码单反相机、一个 mini-USB 接口和一台台式电脑,是否意味着我能拥有一个网络摄像头?

只有一个问题。我的佳能 EOS Rebel XS 不能录制视频。它可以拍摄一些漂亮的照片,仅此而已。所以这结束了?

还是有别的办法?

恰好有一个叫做 gphoto2 的神奇的开源软件。一旦安装,它允许你从计算机控制各种支持的相机,并拍摄照片和视频。

支持的相机

首先,了解你的设备是否得到支持:

$ gphoto2 --list-cameras

拍摄图像

你可以用它拍照:

$ gphoto2 --capture-image-and-download

快门触发,图像会保存到你当前的工作目录中。

录制视频

我意识到了这里的潜力,所以尽管我的相机没有视频功能,我还是决定尝试 gphoto2 --capture-movie 命令。不知怎么,尽管我的相机不支持视频功能,gphoto2 仍然能够生成一个 MJPEG 文件!

在我的相机上,我需要将其置于“实时预览”模式下,然后 gphoto2 才能录制视频。这包括将相机设置为纵向模式,然后按下 “ 设置 Set ” 按钮,使取景器关闭,相机屏幕显示图像。不幸的是,这还不足以将其用作网络摄像头。它仍然需要分配一个视频设备,例如 /dev/video0

安装 ffmpeg 和 v4l2loopback

毫不奇怪,有一个开源的解决方案来解决这个问题。首先,使用你的包管理器安装 gphoto2ffmpegmpv。例如,在 Fedora 、CentOS 、Mageia 和类似的 Linux 发行版上:

$ sudo dnf install gphoto2 ffmpeg mpv

在 Debian、Linux Mint 及其类似发行版:

$ sudo apt install gphoto2 ffmpeg mpv

我使用的是 NixOS,这是我的配置文件:

# configuration.nix
...
environment.systemPackages = with pkgs; [
  ffmpeg
  gphoto2
  mpv
...  
]

创建虚拟视频设备需要使用 v4l2loopback Linux 内核模块。在撰写本文时,该功能未包含在主线内核中,因此你需要自己下载和编译它:

$ git clone https://github.com/umlaeute/v4l2loopback
$ cd v4l2loopback
$ make
$ sudo make install
$ sudo depmod -a

如果你像我一样使用 NixOS ,你可以在 configuration.nix 中添加额外的模块包:

[...]
boot.extraModulePackages = with config.boot.kernelPackages;
[ v4l2loopback.out ];
boot.kernelModules = [
  "v4l2loopback"
];
boot.extraModprobeConfig = ''
  options v4l2loopback exclusive_caps=1 card_label="Virtual Camera"
'';
[...]

在 NixOS 上, 运行 sudo nixos-rebuild switch,然后重启。

创建一个视频设备

假设你的计算机当前没有 /dev/video 设备,你可以借助 v4l2loopback 在需要时创建一个。

运行以下命令,将 gphoto2 中的数据发送到 ffmpeg,使用设备如 /dev/video0 设备:

$ gphoto2 --stdout --capture-movie |
 ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -f v4l2 /dev/video0

你得到的输出是这样的:

ffmpeg version 4.4.1 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 11.3.0 (GCC)
  configuration: --disable-static ...
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
Capturing preview frames as movie to 'stdout'. Press Ctrl-C to abort.[mjpeg @ 0x1dd0380] Format mjpeg detected only with low score of 25, misdetection possible!
Input #0, mjpeg, from 'pipe:':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: mjpeg (Baseline), yuvj422p(pc, bt470bg/unknown/unknown), 768x512 ...
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg (native) -> rawvideo (native))[swscaler @ 0x1e27340] deprecated pixel format used, make sure you did set range correctly
Output #0, video4linux2,v4l2, to '/dev/video0':
  Metadata:
    encoder         : Lavf58.76.100
  Stream #0:0: Video: rawvideo (I420 / 0x30323449) ...
    Metadata:
      encoder         : Lavc58.134.100 rawvideoframe=  289 fps= 23 q=-0.0 size=N/A time=00:00:11.56 bitrate=N/A speed=0.907x

要查看来自网络摄像头的视频,请使用 mpv 命令:

$ mpv av://v4l2:/dev/video0 --profile=low-latency --untimed

Streaming a live feed from the webcam

自动启动你的网络摄像头

每次想使用网络摄像头时都需要执行一次命令有点麻烦。幸运的是,你可以在启动时自动运行此命令。我将其实现为一个 systemd 服务:

# configuration.nix
...
  systemd.services.webcam = {
    enable = true;
    script = ''
      ${pkgs.gphoto2}/bin/gphoto2 --stdout --capture-movie |
        ${pkgs.ffmpeg}/bin/ffmpeg -i - \
            -vcodec rawvideo -pix_fmt yuv420p -f v4l2  /dev/video0
    '';
wantedBy = [ "multi-user.target" ];
  };
...

在 NixOS 上,运行 sudo nixos-rebuild switch,然后重新启动你的计算机。你的网络摄像头已经开启并处于活动状态。

要检查是否存在任何问题,可以使用 systemctl status webcam 命令。它会告诉你服务最后一次运行的时间,并提供其以前输出的日志。这对于调试非常有用。

迭代以使其变得更好

止步于此也许很诱人。但是,考虑到当前的全球危机,我们可能需要思考是否有必要一直开着网络摄像头。这让我感到不太理想,原因如下:

  • 这浪费电。
  • 这类事情涉及隐私问题。

我的摄像头有一个镜头盖,所以说实话,第二个原因并不真的让我感到困扰。当我不使用网络摄像头时,我总是可以把镜头盖上。然而,让一个耗电量大的单反相机整天开着(更不用说需要解码视频所需的 CPU 开销),对我的电费并没有任何好处。

理想情况是:

  • 我一直把相机插在电脑上,但是关闭的。
  • 当我想使用网络摄像头时,我按下相机的电源按钮将其打开。
  • 我的计算机会检测到相机并启动 systemd 服务。
  • 使用网络摄像头完成后,我再次将其关闭。

为了实现这一点,你需要使用一个自定义的 udev 规则。

udev 规则可以告诉你的计算机,当它发现某个设备已经可用时执行某个任务。这可以是外部硬盘甚至是非 USB 设备。在这种情况下,你需要通过其 USB 连接识别相机。

首先,指定 udev 规则被触发时要运行的命令。你可以用一个 shell 脚本来完成(systemctl restart webcam 应该可以工作)。我运行的是 NixOS,所以我只需要创建一个派生包(一个 Nix 包),它会重新启动 systemd 服务:

# start-webcam.nix
with import <nixpkgs> { };
writeShellScriptBin "start-webcam" ''
  systemctl restart webcam
  # debugging example
  # echo "hello" &> /home/tom/myfile.txt
  # If myfile.txt gets created then we know the udev rule has triggered properly''

接下来,实际定义 udev 规则。查找摄像头的设备和厂商 ID。使用 lsusb 命令可以完成此操作。该命令可能已经安装在你的发行版上,但我不经常使用它,因此我只需要根据需要使用 nix-shell 安装它:

$ nix-shell -p usbutils

无论你的计算机上已经安装了它,还是刚刚安装,请运行 lsusb

$ lsusb
Bus 002 Device 008: ID 04a9:317b Canon, Inc. Canon Digital Camera[...]

在此输出中,厂商 ID 为 04a9,设备 ID 为 317b。这已足以创建 udev 规则:

ACTION=="add", SUBSYSTEM=="usb",
ATTR{idVendor}=="04a9",
ATTR{idProduct}=="317b",
RUN+="/usr/local/bin/start-webcam.sh"

或者,如果你使用的是 NixOS:

# configuration.nix[...]let
  startWebcam = import ./start-webcam.nix;[...]
services.udev.extraRules = ''
  ACTION=="add",  \
  SUBSYSTEM=="usb", \
  ATTR{idVendor}=="04a9", \
  ATTR{idProduct}=="317b",  \
  RUN+="${startWebcam}/bin/start-webcam"'';[...]

最后,在你的 start-webcam systemd 服务中删除 wantedBy = ["multi-user.target"]; 这一行。(如果保留它,则无论相机是否开启,该服务都会在下次重启时自动启动。)

重复使用旧技术

我希望这篇文章能让你在放弃一些旧技术之前三思而后行。Linux 可以为技术注入活力,无论是你的电脑还是数码相机或其他外围设备等简单的东西。


via: https://opensource.com/article/22/12/old-camera-webcam-linux

作者:Tom Oliver 选题:lkxed 译者:Pabloxllwe 校对:wxy

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

以众包的方式在家用电脑上运行大语言模型

BigScience 项目最近公布了 BLOOM,这是一个支持 46 种自然语言和 13 种计算机语言的 1760 亿个参数的模型,参数数量和性能与 GPT-3 相当。但它需要超过 350GB 的加速器内存,甚至需要更多的优化调整。他们开发了名为 Petal 的框架,可以以众包的方式在家用电脑上运行大语言模型。参与者可以运行客户端和服务器端,可以调整模型,子模块在训练后可以发布在模型中心,以便其他人可以利用它们进行推理或额外的训练。

消息来源:Mark Tech Post
老王点评:果然这种众包式的 AI 模型出现了,这可以有效避免 AI 被垄断。

谷歌将某多多应用标记为恶意程序

谷歌周一出于安全理由从其官方应用商店下架了某多多应用,将其标记为恶意程序。谷歌说,“这个应用的非谷歌商店版本被发现含有恶意软件,已经通过谷歌商店保护进行防范”。安卓内的安全机制将阻止用户安装它。对于已经安装的该应用的用户,谷歌建议用户卸载。当然,由于众所周知的原因,该应用主要出现在谷歌应用商店之外的厂商商店中。在这之前,多个中国安全研究人员披露该应用包含有恶意功能,居然利用零日漏洞提权来阻止卸载并监视用户。

消息来源:Tech Crunch
老王点评:这种眼睛里面不揉沙子的,还得是谷歌。

生成式人工智能的下一个领域是视频

几个月来,像 DALL-E 和稳定扩散这样的服务一直在创造美丽的、引人注目的、有时令人不安的图片。现在,一家名为 Runway AI 的初创公司正在使用 AI 生成视频,该系统可以通过用户的几句话提示生成简短的视频片段。目前已经可以在几分钟内生成几秒钟长度的视频。

消息来源:彭博社
老王点评:逼真的图像已经可以生成,那生成视频所需的就是更多的资源。将来全 AI 创作的视频、电影,指日可待。