2022年6月

智能手机将在三年内扼杀单反相机

索尼半导体解决方案 CEO 在会议上称,手机的静止图像预计将在 2024 年超过可换镜头相机的图像质量。这包括无反光镜相机,以及现代基本上放弃的老式单反相机。智能手机摄像技术远未达到技术天花板,预计将继续其成像技术的演变,而对大多数人来说,独立的相机是多余的。索尼在全球手机图像传感器市场上占有 42% 的份额。

消息来源:techradar
老王点评:确实,我有多久没拿出来相机了?除了给它的电池充一下电?没想到打败相机的不是更先进的相机,却是手机。同样已经被或即将被手机消灭的设备有哪些呢?

苹果称其应用商店阻止了价值 15 亿美元的欺诈交易

根据苹果两年来发布的预防欺诈分析报告称,苹果在 2020 年和 2021 年各阻止了 15 亿美元的欺诈交易。并且,苹果还成功地打击了各类有问题的应用程序,它在 2020 年和 2021 年分别阻止了 100 万和 160 万个应用。苹果还因欺诈活动终止了 80 万个开发者账户,因类似理由拒绝了 15 万个账户。

消息来源:9to5mac
老王点评:不得不说,苹果在商店的管理上还是下了不少功夫,相对安卓商店,无论是谷歌的还是第三方的,我更信任苹果商店。

360 万台 MySQL 服务器暴露于互联网上

网络安全研究组织扫描发现,有近 360 万台 MySQL 服务器在使用默认的 3306 号 TCP 端口暴露在互联网上。其中 IPv4 地址约 230 万台,IPv6 地址约 130 台。按国家划分,这些可以轻松访问的 IPv4 MySQL 服务器数量如下:美国(74 万)、中国(30 万)、波兰(21 万)和德国(17 万)。而对于 IPv6 则是:美国(46 万)、荷兰(30 万)、新加坡(22 万)和德国(17 万)。不知道什么原因,没有统计到中国 IPv6 的 MySQL 服务器。

消息来源:shadowserver
老王点评:我只能说这些都是自找的,连最最起码安全措施都没有。

Murena 是一个与 e 基金会有关的新品牌,该品牌专注于提供隐私友好的 /e/OS 及新的智能手机和云服务。

murena

/e/OS 是一个流行的、注重隐私的移动操作系统,是谷歌安卓的替代品之一。

这个复刻自 Lineage OS 的操作系统消除了任何与谷歌有关的依赖性,并鼓励你在使用中不要直接依赖任何谷歌的服务。

取而代之的是,它提供一些解决方案作为替代品,为你提供一个隐私友好的生态系统。

为了精简其产品,负责该操作系统的 e 基金会宣布了一个新的品牌 “Murena”,其中包括了一些以该操作系统为核心的新功能和一个新的智能手机。

Murena 和 e 基金会

e 基金会作为一个致力于 /e/OS 的非营利组织将继续存在。因此,可以说这不是一次品牌重塑。

然而,Murena 作为一个新的创业公司,似乎是一个独立的商业实体,将专注于鼓励主流用户尝试 /e/OS,并促进支持该操作系统的智能手机的使用。

对该公司,/e/OS 的创建者提及:

/e/OS 1.0 有什么新内容?

随着该操作系统的最新升级发布,他们的目标是让事情变得更容易理解,在提高使用便利性的同时,仍然考虑到隐私。

此外,还随同本次更新推出了新的应用程序商店(App Lounge)和新的隐私工具(Advanced Privacy)。

App Lounge:这个新的应用程序安装程序可以让你安装许多开源应用程序和 PWA( 渐进式网页应用 Progress Web App )。在你安装之前,它还会告知你每个应用程序中已有的跟踪器。

我相信一个量身定做的应用商店的存在将有助于消除新用户是否应该尝试用 /e/OS 安装 Play Store 或 F-Droid 的困惑。

除此之外,Advanced Privacy 工具将有助于限制用户在安装第三方应用程序后暴露的数据。

如果你想远离科技巨头,你还会发现 Murena 云服务可以用作私人电子邮件账户服务和云存储。该电子邮件服务提供的功能可以隐藏你的原始电子邮件地址。

Murena One

首款 Murena 品牌的智能手机将于 6 月下旬推出,并将向美国、加拿大、欧洲、英国和瑞士等地的用户发货。

这款智能手机将采用 6.5 英寸显示屏,配备 2500 万像素的前置摄像头,后置摄像头设置有三个传感器,分别是 4800 万像素、800 万像素和 500 万像素。

我们不太确定是什么处理器,但它提到了是一个八核芯片,加上 4GB 的内存。所有这些都由 4500 毫安时的电池供电。

除了它的第一款智能手机,你还可以从它的官方网站上购买 Fairphone 和 Teracube 的智能手机,这些手机预装了 /e/OS。

总结

你可以在其官方网站上了解更多关于新的 /e/OS 升级、云服务和可用的智能手机的信息。

Murena

该智能手机的定价还没有在新闻发布会上披露。所以,我们建议你如果有兴趣,可以关注一下。


via: https://news.itsfoss.com/murena-e-os/

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

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

了解使用数组和切片在 Go 中存储数据的优缺点,以及为什么其中一个更好。

在本系列的第四篇文章中,我将解释 Go 数组和切片,包括如何使用它们,以及为什么你通常要选择其中一个而不是另一个。

数组

数组是编程语言中最流行的数据结构之一,主要原因有两个:一是简单易懂,二是可以存储许多不同类型的数据。

你可以声明一个名为 anArray 的 Go 数组,该数组存储四个整数,如下所示:

anArray := [4]int{-1, 2, 0, -4}

数组的大小应该在它的类型之前声明,而类型应该在声明元素之前定义。len() 函数可以帮助你得到任何数组的长度。上面数组的大小是 4。

如果你熟悉其他编程语言,你可能会尝试使用 for 循环来遍历数组。Go 当然也支持 for 循环,不过,正如你将在下面看到的,Go 的 range 关键字可以让你更优雅地遍历数组或切片。

最后,你也可以定义一个二维数组,如下:

twoD := [3][3]int{
  {1, 2, 3},
  {6, 7, 8},
  {10, 11, 12}}

arrays.go 源文件中包含了 Go 数组的示例代码。其中最重要的部分是:

for i := 0; i < len(twoD); i++ {
  k := twoD[i]
  for j := 0; j < len(k); j++ {
    fmt.Print(k[j], " ")
  }
  fmt.Println()
}

for _, a := range twoD {
  for _, j := range a {
    fmt.Print(j, " ")
  }
  fmt.Println()
}

通过上述代码,我们知道了如何使用 for 循环和 range 关键字迭代数组的元素。arrays.go 的其余代码则展示了如何将数组作为参数传递给函数。

以下是 arrays.go 的输出:

$ go run arrays.go
Before change(): [-1 2 0 -4]
After change(): [-1 2 0 -4]
1 2 3
6 7 8
10 11 12
1 2 3
6 7 8
10 11 12

这个输出告诉我们:对函数内的数组所做的更改,会在函数退出后丢失。

数组的缺点

Go 数组有很多缺点,你应该重新考虑是否要在 Go 项目中使用它们。

首先,数组定义之后,大小就无法改变,这意味着 Go 数组不是动态的。简而言之,如果你需要将一个元素添加到一个没有剩余空间的数组中,你将需要创建一个更大的数组,并将旧数组的所有元素复制到新数组中。

其次,当你将数组作为参数传递给函数时,实际上是传递了数组的副本,这意味着你对函数内部的数组所做的任何更改,都将在函数退出后丢失。

最后,将大数组传递给函数可能会很慢,主要是因为 Go 必须创建数组的副本。

以上这些问题的解决方案,就是使用 Go 切片。

切片

Go 切片与 Go 数组类似,但是它没有后者的缺点。

首先,你可以使用 append() 函数将元素添加到现有切片中。此外,Go 切片在内部使用数组实现,这意味着 Go 中每个切片都有一个底层数组。

切片具有 capacity 属性和 length 属性,它们并不总是相同的。切片的长度与元素个数相同的数组的长度相同,可以使用 len() 函数得到。切片的容量是当前为切片分配的空间,可以使用 cap() 函数得到。

由于切片的大小是动态的,如果切片空间不足(也就是说,当你尝试再向切片中添加一个元素时,底层数组的长度恰好与容量相等),Go 会自动将它的当前容量加倍,使其空间能够容纳更多元素,然后将请求的元素添加到底层数组中。

此外,切片是通过引用传递给函数的,这意味着实际传递给函数的是切片变量的内存地址,这样一来,你对函数内部的切片所做的任何修改,都不会在函数退出后丢失。因此,将大切片传递给函数,要比将具有相同数量元素的数组传递给同一函数快得多。这是因为 Go 不必拷贝切片 —— 它只需传递切片变量的内存地址。

slice.go 源文件中有 Go 切片的代码示例,其中包含以下代码:

package main

import (
  "fmt"
)

func negative(x []int) {
  for i, k := range x {
    x[i] = -k
  }
}

func printSlice(x []int) {
  for _, number := range x {
    fmt.Printf("%d ", number)
  }
  fmt.Println()
}

func main() {
  s := []int{0, 14, 5, 0, 7, 19}
  printSlice(s)
  negative(s)
  printSlice(s)

  fmt.Printf("Before. Cap: %d, length: %d\n", cap(s), len(s))
  s = append(s, -100)
  fmt.Printf("After. Cap: %d, length: %d\n", cap(s), len(s))
  printSlice(s)

  anotherSlice := make([]int, 4)
  fmt.Printf("A new slice with 4 elements: ")
  printSlice(anotherSlice)
}

切片和数组在定义方式上的最大区别就在于:你不需要指定切片的大小。实际上,切片的大小取决于你要放入其中的元素数量。此外,append() 函数允许你将元素添加到现有切片 —— 请注意,即使切片的容量允许你将元素添加到该切片,它的长度也不会被修改,除非你调用 append()。上述代码中的 printSlice() 函数是一个辅助函数,用于打印切片中的所有元素,而 negative() 函数将切片中的每个元素都变为各自的相反数。

运行 slice.go 将得到以下输出:

$ go run slice.go
0 14 5 0 7 19
0 -14 -5 0 -7 -19
Before. Cap: 6, length: 6
After. Cap: 12, length: 7
0 -14 -5 0 -7 -19 -100
A new slice with 4 elements: 0 0 0 0

请注意,当你创建一个新切片,并为给定数量的元素分配内存空间时,Go 会自动地将所有元素都初始化为其类型的零值,在本例中为 0(int 类型的零值)。

使用切片来引用数组

Go 允许你使用 [:] 语法,使用切片来引用现有的数组。在这种情况下,你对切片所做的任何更改都将传播到数组中 —— 详见 refArray.go。请记住,使用 [:] 不会创建数组的副本,它只是对数组的引用。

refArray.go 中最有趣的部分是:

func main() {
  anArray := [5]int{-1, 2, -3, 4, -5}
  refAnArray := anArray[:]

  fmt.Println("Array:", anArray)
  printSlice(refAnArray)
  negative(refAnArray)
  fmt.Println("Array:", anArray)
}

运行 refArray.go,输出如下:

$ go run refArray.go
Array: [-1 2 -3 4 -5]
-1 2 -3 4 -5
Array: [1 -2 3 -4 5]

我们可以发现:对 anArray 数组的切片引用进行了操作后,它本身也被改变了。

总结

尽管 Go 提供了数组和切片两种类型,你很可能还是会使用切片,因为它们比 Go 数组更加通用、强大。只有少数情况需要使用数组而不是切片,特别是当你完全确定元素的数量固定不变时。

你可以在 GitHub 上找到 arrays.goslice.gorefArray.go 的源代码。

如果你有任何问题或反馈,请在下方发表评论或在 Twitter 上与我联系。


via: https://opensource.com/article/18/7/introduction-go-arrays-and-slices

作者:Mihalis Tsoukalos 选题:lkxed 译者:lkxed 校对:wxy

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

为纪念全球无障碍意识日,让我们了解一下 NVDA 开源屏幕阅读器,以及你该如何参与其中,为所有网络用户提高无障碍性。

屏幕阅读器是辅助技术软件的一个专门领域,它可以阅读并说出计算机屏幕上的内容。完全没有视力的人只是视力障碍者的一小部分,屏幕阅读器软件可以帮助所有群体。屏幕阅读器大多特定于操作系统,供有视觉障碍的人和无障碍培训师使用,以及想要测试网站或应用的无障碍访问程度的开发人员和无障碍顾问。

如何使用 NVDA 屏幕阅读器

WebAIM 屏幕阅读器用户调查 始于 2009 年,一直持续到 2021 年。在第一次调查中,最常用的屏幕阅读器是 JAWS,占 74%。它是微软 Windows 的商业产品,并且是长期的市场领导者。NVDA 当时是一个相对较新的 Windows 开源屏幕阅读器,仅占 8%。快进到 2021 年,JAWS 占 53.7%,NVDA 占 30.7%。

你可以从 NVAccess 网站 下载最新版本的 NVDA。为什么我要使用 NVDA 并将它推荐给我使用微软 Windows 的客户?嗯,它是开源的、速度快、功能强大、易于安装、支持多种语言、可以作为便携式应用运行、拥有庞大的用户群,并且有定期发布新版本的周期。

NVDA 已被翻译成 55 种语言,并在 175 个不同的国家/地区使用。还有一个活跃的开发者社区,拥有自己的 社区插件网站。你选择安装的任何附加组件都将取决于你的需求,并且有很多可供选择,包括常见视频会议平台的扩展。

与所有屏幕阅读器一样,NVDA 有很多组合键需要学习。熟练使用任何屏幕阅读器都需要培训和练习。

Image of NVDA welcome screen

向熟悉计算机和会使用键盘的人教授 NVDA 并不太难。向一个完全初学者教授基本的计算机技能(没有鼠标、触摸板和键盘技能)和使用 NVDA 是一个更大的挑战。个人的学习方式和偏好不同。此外,如果人们只想浏览网页和使用电子邮件,他们可能不需要学习如何做所有事情。NVDA 教程和资源的一个很好的链接来源是 无障碍中心

当你掌握了使用键盘命令操作 NVDA,它就会变得更容易,但是还有一个菜单驱动的系统可以完成许多配置任务。

Image of NVDA menu

测试无障碍性

多年来,屏幕阅读器用户无法访问某些网站一直是个问题,尽管美国残疾人法案(ADA)等残疾人平等立法仍然存在。NVDA 在有视力的社区中的一个很好的用途是用于网站无障碍性测试。NVDA 可以免费下载,并且通过运行便携式版本,网站开发人员甚至不需要安装它。运行 NVDA,关闭显示器或闭上眼睛,看看你在浏览网站或应用时的表现如何。

NVDA 也可用于测试(通常被忽略的)正确 标记 PDF 文档以实现无障碍性 任务。

有几个指南专注于使用 NVDA 进行无障碍性测试。我可以推荐 使用 NVDA 测试网页 和使用 NVDA 评估 Web 无障碍性


via: https://opensource.com/article/22/5/open-source-screen-reader-windows-nvda

作者:Peter Cheer 选题:lkxed 译者:geekpi 校对:wxy

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

计划释放数以亿计的 IPv4 地址

上世纪 80 年代做出的将几个 IPv4 地址范围作为特殊保留的决定,导致了大量的地址资源被浪费。在亚太地区互联网运营技术会议上,Let's Encrypt 的联合创始人 Seth 提议,如果将 240/4、0/8、127/8、225/8-232/8 等范围作为普通的单播号码资源供网络使用,将增加约 4.19 亿个 IPv4 地址。

消息来源:itnews
老王点评:虽然很多地方都在往 IPv6 迁移了,但是谁会嫌 IPv4 地址多呢?另外,我觉得当年美国那些大学、机构动辄几个 A、B 类地址,是不是也该回收一下?

Safari 浏览器成为唯二用户数突破 10 亿的浏览器之一

根据一份新的报告,Safari 的市场份额为 19%,用户数首次超过 10 亿,成为第二个用户数超过 10 亿的浏览器。第一当然是 Chrome,它的用户数远多于其它浏览器,达到了 33 亿之多。而第三名则是 Edge 浏览器,用户数 2 亿。Firefox 则没有机会名列三甲。

顺便说一句,Chrome 和 Edge 都刚刚推出了 102 版,在一周后 Firefox 推出了 101 版。版本号都跑的挺快。

消息来源:arstechnica
老王点评:虽然 Safari 也备受批评,但作为唯一一个没有在世界上最流行的移动操作系统安卓上使用、也没有在最流行的桌面操作系统 Windows 上使用的主要浏览器,这还是非常令人印象深刻的。

微软 Office 软件被发现一个已在野利用的零日漏洞

这个已经流传了一段时间的漏洞被称为 “Follina”,它使用 Office 来检索一个 HTML 文件,而该文件反过来利用微软支持诊断工具(MSDT)来运行一些代码。更糟糕的是,即使在禁用宏的情况下,它也能工作。虽然最初的攻击只在打开恶意文件的用户账户级别上运行代码,但这种访问为更多提升权限的攻击打开了大门。

消息来源:theregister
老王点评:即使打开一个本身没有什么恶意代码的 Word 文档都有可能被利用,因为恶意代码在远程的一个页面上。所以,只要是打开来路不明的 Word 文档就处于风险之中了。

这是一篇如何从源码编译 GNOME 的快速指南,包括 Shell、mutter 和一些原生应用。

在编译之前,你需要确保一些事情,因为以下编译直接来自 Gitlab 的主分支,其中包含一些开发包。

通常,你可以选择在任何 Linux 发行版中编译。但是我建议使用 Fedora Rawhide(Fedora 的开发分支,用于将来的发布)。

另外,请勿在稳定系统中尝试此操作。因为操作可能出错,所以你可能最终得到损坏的系统。

总而言之,你需要以下内容来从源码编译 GNOME。

  • 测试环境(虚拟机 或测试系统)。
  • Fedora Rawhide 发行版(推荐,从此处下载)。
  • 确保你的发行版是最新的。
  • 你已登录 X.org 会话。

我不建议你在 Wayland 会话中进行编译,因为你会遇到问题。

从源码编译 GNOME

GNOME 桌面是一个基于其功能的软件包集合。Linux 发行版的桌面组件工作于窗口管理器和 shell 之下。

因此,对于 GNOME,我将首先编译 mutter – 它是 GNOME Shell 的窗口管理器。然后进行 GNOME Shell 的编译。最后,我将编译一些原生应用。

我将使用 meson 构建系统进行编译。meson 是一个漂亮的构建系统,快速且用户友好。

编译 mutter

打开终端并安装 GNOME Shell 和 mutter 所需的软件包。

sudo dnf build-dep mutter gnome-shell

在主目录(或你想要的任何地方)中创建演示目录。

cd ~
mkdir demo
cd demo

从 Gitlab 克隆 mutter 的主分支。

git clone https://gitlab.gnome.org/GNOME/mutter

进入克隆目录,然后使用以下 meson 命令来准备构建文件。默认情况下,meson 使用 /usr/local 用于构建文件。但是,你也可以使用前缀开关将输出重定向到特定文件夹(如下所示)。

cd mutter
meson _build --prefix=/usr

Compile Mutter for GNOME

使用以下命令在构建完成时,将 mutter 安装在到系统中。

sudo ninja install -C _build

编译 GNOME Shell

GNOME Shell 和其他软件包的编译方法类似。首先,从 GitLab 克隆 GNOME Shell 主仓库,然后进行编译和安装。你可以按照下面的命令依次进行。

在 GNOME Shell 中,你需要两个依赖项。它们是 asciidocsassc 。请在构建 GNOME Shell 之前安装它们。

sudo dnf install asciidoc
sudo dnf install sassc

安装完这些依赖项后,按照下面的命令来构建和安装 GNOME Shell。在运行这个命令之前,请确保你回到 demo 文件夹(我在第一步创建的)。

git clone https://gitlab.gnome.org/GNOME/gnome-shellcd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build

运行 GNOME Shell

编译完成后,你可以尝试重新启动 GNOME Shell 来查看来自主分支的变化。

在重启之前,正如我之前提到的,确保你处于 X.Org 会话中。按 ALT+F2 并输入 r。然后按回车键。这个命令将重启 GNOME Shell。

Restart GNOME Shell (X11)

恭喜你! 你已经成功地编译了 GNOME Shell 和 Mutter。

现在,是时候编译一些 GNOME 原生应用了。

编译 GNOME 原生应用

这些步骤对于 GNOME 或任何应用的所有源码都是一样的。你需要改变仓库的名字。因此,这里有一些编译必要的 GNOME 原生应用的命令示例。

Files(Nautilus)

git clone https://gitlab.gnome.org/GNOME/nautilus/cd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build

GNOME 软件商店

git clone https://gitlab.gnome.org/GNOME/gnome-software/cd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build

GNOME 控制中心

git clone https://gitlab.gnome.org/GNOME/gnome-control-center/cd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build

FAQ

  1. 使用上述步骤,你可以编译任何源码分支。不仅仅是 GNOME。
  2. GitLab 服务器有时很慢,克隆一个仓库可能需要较长的时间。如果 git clone 失败,我建议你再试一次。

结束语

我希望这个小小的高级教程能够帮助你在新的 GNOME 功能出现在 GNOME 每日构建系统之前尝试它。既然你编译了,你也可以为测试新的 GNOME 功能做出贡献,并在 GitLab 问题页面上报告任何特定包的 bug 或问题。

这篇文章是开源应用编译系列的第一篇文章。请继续关注更多开源应用的编译文章。

另外,请让我在下面的评论栏中知道你的评论、建议,或者你在使用这些说明时遇到的任何错误。

干杯。


via: https://www.debugpoint.com/2022/05/compile-gnome-source/

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

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