2023年2月

Planby 是一个 JavaScript 组件,用于帮助创建流媒体服务、音乐和体育赛事等的时间表、时间线和电子节目指南(EPG)。

几年来,我在电视在线和视频点播(VOD)行业工作。在开发一个调度器网络应用时,我意识到在电子节目指南(EPG)和调度方面没有好的解决方案。诚然,对于大多数网络开发者来说,这是一个小众的功能,但对于电视应用来说,这是一个常见的需求。我看到并分析了许多网站实现了他们自己的 EPG 或时间表,我经常想,为什么每个人似乎都在发明他们自己的解决方案,而不是致力于开发一个大家都能使用的共享解决方案。这就是我开始开发 Planby 的时候。

Planby 是一个 React(JavaScript)组件,帮助你为在线电视和视频点播(VOD)服务、音乐和体育赛事等创建计划、时间线和电子节目指南(EPG)。Planby 使用自定义的虚拟视图,允许你对大量的数据进行操作,并以友好和有用的方式呈现给你的观众。

Planby 有一个简单的 API,你可以与第三方 UI 库集成。组件的主题是根据应用设计的需要定制的。

时间线性能

实现时间线功能时,最重要的是性能。你有可能在许多不同频道处理无穷无尽的数据流。应用可能不断地在刷新、移动和滚动。你希望用户与内容的互动是流畅的。

还有一个潜在的问题是设计不当。有时,一个应用以列表的形式实现 EPG 时间线,你必须垂直滚动,这意味着你必须点击按钮在时间上左右移动,这很快就会变得很累。更重要的是,有时与 EPG 互动的自定义功能(如评级、选择你最喜欢的频道、从右到左(RTL)阅读等)根本无法使用,或者即便它们可用,也会导致性能问题。

我经常面临的另一个问题是,应用的数据传输过于冗长。当一个应用在你滚动浏览 EPG 的时候请求数据,时间线会感觉很慢,甚至会崩溃。

什么是 Planby?

这就是 Planby 的作用。Planby 是从头开始建立的,使用 React 和 Typescript 以及少量的资源。它使用一个自定义的虚拟视图,允许你对大量的数据进行操作。它向用户显示节目和频道,并根据时间和指定频道自动定位所有元素。当一个资源不包含任何内容时,Planby 会计算定位,使时间段正确对齐。

Planby 有一个简单的界面,包括所有必要的功能,如侧边栏、时间轴本身、愉快的布局和实时节目刷新。此外,还有一个可选的功能,允许你隐藏任何你不想包括在布局中的元素。

Planby 有一个简单的 API,允许你作为开发者实现你自己的项目以及用户的偏好。你可以使用 Planby 的主题来开发新的功能,也可以制作自定义的样式来配合你选择的设计。你可以很容易地整合其他功能,如日历、评级选项、用户最喜欢的列表、滚动、“现在” 按钮、录制计划、追播内容等等。更重要的是,你可以添加自定义的全局样式,包括 RTL 功能。

最重要的是,它在 MIT 许可下开源。

尝试 Planby

如果你想尝试一下 Planby,或者只是想了解一下它,请访问 Git 仓库。在那里,我已经有了一些例子,你可以阅读文档了解详情。该软件包也可以通过 npm 获得。


via: https://opensource.com/article/22/11/react-timeline-planby

作者:Karol Kozer 选题:lkxed 译者:geekpi 校对:wxy

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

Ubuntu 各特色版已同意停止使用 Flatpak 作为其操作系统的默认打包系统,而选择替代的打包管理器。

这是一个令人惊讶的举动,Canonical 宣布,所有官方的 Ubuntu 特色版将不会默认支持 Flatpak。这个决定是在与所有官方 Ubuntu 特色版的团队/维护者达成一致后做出的。这一变化计划从 2023 年 4 月发布的 “Lunar Lobster” 开始,该版本将在几周后发布。

Ubuntu 官方特色版将停止默认安装 Flatpak

基于 Ubuntu 的官方特色版(Kubuntu、Lubuntu、Xubuntu 等)将不再将 Flatpak 作为其默认的打包解决方案,而选择其他方案,如 Snap 和本地 deb 格式。这样做是为了 “在尊重现有用户个性化他们自己的体验方式的同时,改善新用户开箱即用的 Ubuntu 体验”。

虽然这个决定得到了 Canonical 的支持,为了提供更好的用户体验,阻止软件包生态系统的碎片化,并给用户一个稳定的应用产品的选择。但显然,有几个问题冒了出来。

为什么是现在?Flatpak 和 Snap 都已经存在多年了。Flatpak 正变得越来越流行,它作为一种包格式在积极开发和维护,一些现代功化的功能也正在开发中,比如即将出现的 “经过验证的应用程序”。而同时,由于 Snap 的 “启动时间慢”,以及被 Canonical 的封闭服务器所控制等其他原因,它在桌面应用部署领域无法得到很大普及。

Ubuntu 发行版本身从来没有默认提供过 Flatpak。但是特色版的维护者应该有选择自己的产品的自由,并在 Ubuntu 基础上进行创新。这也是成为一个特色版的主要原因,而不只是一个不同的桌面环境。

给用户造成的困难

虽然你总是可以手动安装 Flatpak 并配置 Flathub,但显然,这可能会给用户带来一些问题。我相信这个公告是彻底阻止 Flatpak 安装方式的第一步。

还记得 Firefox Snap 的情况吗?要删除 Firefox Snap,你必须做复杂的命令行操作,才能安装 deb 版本。这些对于普通的 Ubuntu 用户来说是非常复杂的。此外,一些流行的桌面应用程序在发布后会立即推出 Flatpak 软件包。对于许多流行的 Linux 桌面应用程序来说,有时甚至没有提供 Snap 软件包。

我相信让用户来决定哪种打包格式是容易和遵循的。Canonical 应该通过解决 Snap 的核心问题、应用程序的可用性和闭门造车的性质来自行改进 Snap,而不是强行做出决定。此外,在为一个社区贡献的发行版推送决定之前,应该与特色版维护者一起发起投票,以获得来自社区的反馈。

结束语

如果我们曾经从历史中吸取教训的话,它永远不会以好的方式结束。也就是说,这一变化将从 2023 年 4 月 23 日 Ubuntu 23.04 “Lunar Lobster” 发布时开始。

让我用 Ubuntu 的座右铭来结束这篇文章,在这一举措之后,这听起来很奇怪:

“Ubuntu 是一个古老的非洲语单词,意思是‘ 以人道善待他人 Humanity to Others ’。它经常被描述为提醒我们,‘群在故我在’。我们把 Ubuntu 的精神带到了计算机和软件的世界里。Ubuntu 发行版代表了世界软件社区与世界分享的最好的东西。”

—— 关于 Ubuntu

新闻引自 Joey @ OMG! Ubuntu!discourse


via: https://debugpointnews.com/ubuntu-flavours-flatpak/

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

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

美国版权局撤销了 AI 生成的图像的版权

之前,我们 报道(#770) 过一本名为《黎明的扎丽亚》的使用 AI 创作的漫画书获得了美国版权注册。但美国版权局在周二发出的一份信中说,该书作者有权为她撰写和编排的书籍部分获得版权,但不包括她使用 Midjourney 制作的图像。这是美国法院或机构首次就用人工智能创作的作品的版权保护范围作出的决定之一。美国版权局将重新签发 《黎明的扎利亚》 的注册,以忽略那些 “不是人类创作的产物” 的图像。

消息来源:路透社
老王点评:漫画书失去了图像版权还剩下什么?确实,AI 创作的图像、文字,版权如何确定是一个新的复杂问题,需要研究。

苹果公司努力将免刺血糖监测带入苹果手表

这个项目据说已经开发了很长时间,始于 2010 年,当时生病的乔布斯收购了一家血糖监测初创公司。该项目现在处于 “概念验证阶段”,剩下的最后一个障碍是要把它做得更小。该技术使用激光来测量皮肤下的葡萄糖浓度,以前该设备有桌面大小,但据说已经发展到了 iPhone 大小的可穿戴原型的地步。据称该技术不仅能用于监测,还可以提醒前期患者。

消息来源:Engadget
老王点评:即便是不差钱的大公司,真正做出突破也非常困难。但是这才是大公司存在的意义,而不是卖菜。

ChatGPT 式搜索比传统搜索的成本大 10 倍不止

ChatGPT 式的搜索引擎将涉及到每次你运行搜索时启动一个巨大的以人脑为模型的神经网络,产生大量的文本,并且可能还查询搜索索引以获取事实信息。所有这些额外的处理都将花费更多的钱。Alphabet 的董事长说,ChatGPT 式的搜索“成本可能是标准关键词搜索的 10 倍”。而摩根士丹利估计“类似 ChatGPT 的人工智能以 50 个字的答案来处理它收到的一半查询,那么谷歌每年的成本将增加 60 亿美元。”

消息来源:Ars Technica
老王点评:值得注意是的,微软必应的市场份额只有 3%,而谷歌有 93%,那么对于微软来说可以接受的成本增加,对于谷歌来说可能就是比较大的问题了。

BitTorrent 客户端 Transmission 4.0 版本已经发布,带来了急需的功能升级和改进。

时隔两年,Transmission 4.0升级版来了

BitTorrent 是一种流行的 HTTP 的替代方式,用于在互联网上分享或下载文件。你可能知道,有许多各具特色的 BitTorrent 客户端。

Transmission 就是这样一个开源的、轻量级的 BitTorrent 客户端。

该应用程序的上一个稳定版本是近两年前发布的。虽然在此期间没有看到新的版本,但该项目仍在积极开发中。

Transmission 4.0 有什么新内容?

新版本带来了大量的新功能和改进。这包括 IPv6 封锁、BitTorrent v2支持、改版的网络客户端等等。

以下是一些重要的亮点:

对 BitTorrent v2 和混合 Torrent 的支持

BitTorrent v2 是现有 BitTorrent 协议的更新版本,带来了一些有用的技术进步。

另一方面,混合 Torrent 确保了与旧版 BitTorrent v1 的向后兼容性。

请注意,这个版本只能让你使用 v2 和混合 Torrent。而要创建 v2 和混合 Torrent ,你需要等待下一个版本。

默认跟踪器的使用

用户现在应该发现,通过设置默认的跟踪器,可以更容易地公布或请求公开的 Torrent。

IPv6 封锁列表

现在包括对 IPv6 封锁的支持。

如果你遇到网络问题而想默认使用 IPv4,这很有用。

在某些情况下,VPN 用户可能也喜欢这个功能,因为许多 VPN 服务器可能不能很好地支持 IPv6,这可能导致数据泄露。

新的隐私友好功能

用户有时喜欢在创建 Torrent 时不包括用户身份或相关信息。

有一个新的选项正是为了这个目的而添加的,它排除了这些细节信息。

?️其他变化和改进

除了上面列出的变化外,考虑到他们已经开发了一年多,还有大量的改进!

其中一些值得注意的改进包括:

  • 更好的资源利用。
  • 将代码从 C 语言迁移到 C++ 语言。
  • 在创建新 Torrent 时能够指定片断大小。
  • 支持 Qt 6。
  • 基于 GTKMM 的 GTK 客户端。
  • 更好的网络客户端用户界面,包括对移动屏幕的支持。
  • 支持 macOS 苹果芯片。

你可以前往其 GitHub 发布区 了解完整的发布说明。

下载 Transmission 4.0

官方资源库和 Flathub 还没有最新的版本可用。

因此,你必须从其 官方下载页面GitHub 发布部分 下载并解压 tar.xz 文件。

然后,从源码构建它以获得安装。

Transmission 4.0

你可以在同一页上找到其他平台的软件包。


via: https://news.itsfoss.com/transmission-4-release/

作者:Rishabh Moharir 选题:lkxed 译者:wxy 校对:wxy

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

探索 Tcl 的基本语言结构,包括用户输入、输出、变量、条件评估、循环和简单函数。

我的 Tcl 之旅始于最近需要将一个困难的基于 Java 的命令行配置工具自动化。我使用 Ansible 做了一些自动化编程,偶尔也会使用 expect 模块。坦率地说,我发现这个模块的作用有限,原因包括:难以对相同的提示进行排序,难以捕捉到额外步骤的值,控制逻辑的灵活性有限,等等。有时你可以用 shell 模块来代替。但有时你会遇到那种特立独行、过于复杂的命令行程序,似乎无法实现自动化。

就我而言,我正在自动安装我公司的一个程序。最后的配置步骤只能通过命令行来完成,通过几个不规范的、重复的提示和需要捕捉的数据输出。好在传统的 Expect 是唯一的答案。要使用 Expect 的基本功能,并不需要对 Tcl 有很深的了解,但你了解的越多,你就能从它那里得到更多的力量。这是后续文章的话题。现在,我探讨一下 Tcl 的基本语言结构,包括用户输入、输出、变量、条件判断、循环和简单函数。

安装 Tcl

在 Linux 系统上,我使用这个:

# dnf install tcl
# which tclsh
/bin/tclsh

在 macOS 上,你可以使用 Homebrew 来安装最新的 Tcl:

$ brew install tcl-tk
$ which tclsh
/usr/local/bin/tclsh

在 Tcl 中猜数字

从创建基本的可执行脚本 numgame.tcl 开始:

$ touch numgame.tcl
$ chmod 755 numgame.tcl

接着在你的文件中开始编码,标题是通常的 #!:

#!/usr/bin/tclsh

这里有一些关于 Tcl 的简单介绍,以便与本文一起追踪。

第一点是,Tcl 处理的都是字符串。变量通常被当作字符串处理,但可以自动切换类型和内部表示(这一点你通常无法看到)。函数可以把它们的字符串参数解释为数字(expr),并且只通过值传递。字符串通常使用双引号或大括号来划分。双引号允许变量扩展和转义序列,而大括号则完全没有扩展。

第二点是 Tcl 语句可以用分号隔开,但通常不这样。语句行可以用反斜杠字符来分割,然而,典型的做法是将多行语句放在大括号内,以避免需要这样做。大括号只是更简单,下面的代码格式也反映了这一点。大括号允许对字符串进行延迟求值。在 Tcl 进行变量替换之前,值被传递给函数。

最后,Tcl 使用方括号进行命令替换。方括号之间的任何东西都会被送到 Tcl 解释器的一个新的递归调用中进行求值。这对于在表达式中间调用函数或为函数生成参数是很方便的。

过程

虽然在这个游戏中没有必要,但我先举一个在 Tcl 中定义函数的例子,你可以在以后使用:

proc used_time {start} {
    return [expr [clock seconds] - $start]
}

使用 proc 将其设定为一个函数(或过程)定义。接下来是函数的名称。然后是一个包含参数的列表;在本例中是一个参数 {start} ,然后是函数主体。注意,主体的大括号在这一行开始,它不能在下面一行。该函数返回一个值。返回值是一个复合求值(方括号),它从读取系统时钟 [clock seconds] 开始,并进行数学运算以减去 $start 参数。

设置、逻辑和完成

你可以在这个游戏的其余部分增加更多的细节,进行一些初始设置,对玩家的猜测进行迭代,然后在完成后打印结果:

set num [expr round(rand()*100)]
set starttime [clock seconds]
set guess -1
set count 0

puts "Guess a number between 1 and 100"

while { $guess != $num } {
    incr count
    puts -nonewline "==> "
    flush stdout
    gets stdin guess

    if { $guess < $num } {
        puts "Too small, try again"
    } elseif { $guess > $num } {
        puts "Too large, try again"
    } else {
        puts "That's right!"
    }
}

set used [used_time $starttime]

puts "You guessed value $num after $count tries and $used elapsed seconds"

前面的 set 语句建立变量。前两个求值表达式用于识别 1 到 100 之间的随机数,下一个保存系统时钟启动时间。

putsgets 命令用于来自玩家的输出和输入。我使用的 puts 暗示输出是标准输出。gets 需要定义输入通道,所以这段代码指定 stdin 作为用户的终端输入源。

puts 省略行末终止符时,需要 flush stdout 命令,因为 Tcl 缓冲了输出,在需要下一个 I/O 之前可能不会被显示。

从这里开始,while 语句说明了循环控制结构和条件逻辑,需要给玩家反馈并最终结束循环。

最后的 set 命令调用我们的函数来计算游戏的耗时秒数,接着是收集到的统计数字来结束游戏。

玩吧!

$ ./numgame.tcl
Guess a number between 1 and 100
==> 100
Too large, try again
==> 50
Too large, try again
==> 25
Too large, try again
==> 12
Too large, try again
==> 6
Too large, try again
==> 3
That's right!
You guessed value 3 after 6 tries and 20 elapsed seconds

继续学习

当我开始这个练习时,我怀疑回到 90 年代末的流行语言对我有多大的帮助。一路走来,我发现 Tcl 有几处让我非常喜欢的地方,我最喜欢的是方括号内的命令求值。与其他许多过度使用复杂闭包结构的语言相比,它似乎更容易阅读和使用。我以为它是一种 已消亡的语言,但实际上它仍在蓬勃发展,并在多个平台上得到支持。我学到了一些新的技能,并对这种古老的语言有了新的认识。

https://www.tcl-lang.org 上查看官方网站。你可以找到最新的源代码、二进制发行版、论坛、文档,以及仍在进行的会议信息的参考。


via: https://opensource.com/article/23/2/learn-tcl-writing-simple-game

作者:James Farrell 选题:lkxed 译者:geekpi 校对:wxy

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

Linus Torvalds 公开批评提交内核补丁的开发者

在看到一位开发者提交到内核邮件列表的补丁信息后,Linus Torvalds 将该合并请求拉出来公开批评。在那个合并请求中,“整个提交信息基本上就是一行简短的日志”。他用了一大段话批评,“……如果你不屑于解释为什么有这个合并请求,那么这个合并请求绝对是有问题的垃圾。……”他说,“再次重申,如果你不能解释一个合并请求,那么就不要做。”

消息来源:Phoronix
老王点评:内核社区的开发者们不都已经“接受”过 Linux 开发礼仪的熏陶了么?

Linux 6.3 引入 IPv4 BIG TCP 以提高高速网络性能

自去年以来,Linux 内核已在 IPv6 上支持了 BIG TCP,以允许更大的 TSO/GRO 数据包大小。这为 IPv6 的性能带来了显著的提升,尤其是在 25~100+ Gbit 的网络空间,同时也带来了更低的延迟。随着 Linux 6.3 的推出,类似的优势也在 IPv4 领域得到体现。

消息来源:Phoronix
老王点评:从基准测试数据看,这对于高速网络的性能提升相当可观。

AI 写作正在影响出版业

截至 2 月中旬,亚马逊的 Kindle 商店中有 200 多本电子书将 ChatGPT 列为作者或共同作者,这包括《如何使用 ChatGPT 写作和创建内容》、《家庭作业的力量》和诗集《宇宙的回声》。而且这个数字每天都在上升。亚马逊上甚至出现了一个新的子类型:关于使用 ChatGPT 的书籍,完全由 ChatGPT 撰写。

而另外一则 消息 显示,科幻杂志《Clarkesworld》正在暂停提交短篇小说。去年年底以来,他们的短篇小说的投稿量大增,但大部分写作似乎来自人类依靠人工智能工具抽出的文本。

消息来源:路透社
老王点评:新世界的大门开了一个门缝,一些不太起眼的地方开始发生了变化。