分类 技术 下的文章

安装、配置和运行 HAProxy,在几个网络或应用服务器之间分配网络流量。

 title=

不是只有在一个大型公司工作才需要使用负载平衡器。你可能是一个业余爱好者,用几台树莓派电脑自我托管一个网站。也许你是一个小企业的服务器管理员;也许你确实在一家大公司工作。无论你的情况如何,你都可以使用 HAProxy 负载平衡器来管理你的流量。

HAProxy 被称为“世界上最快和使用最广泛的软件负载平衡器”。它包含了许多可以使你的应用程序更加安全可靠的功能,包括内置的速率限制、异常检测、连接排队、健康检查以及详细的日志和指标。学习本教程中所涉及的基本技能和概念,将有助于你使用 HAProxy 建立一个更强大的、远为强大的基础设施。

为什么需要一个负载平衡器?

负载平衡器是一种在几个网络或应用服务器之间轻松分配连接的方法。事实上,HAProxy 可以平衡任何类型的传输控制协议(TCP)流量,包括 RDP、FTP、WebSockets 或数据库连接。分散负载的能力意味着你不需要因为你的网站流量比谷歌大就购买一个拥有几十万 G 内存的大型网络服务器。

负载平衡器还为你提供了灵活性。也许你现有的网络服务器不够强大,无法满足一年中繁忙时期的峰值需求,你想增加一个,但只是暂时的。也许你想增加一些冗余,以防一个服务器出现故障。有了 HAProxy,你可以在需要时向后端池添加更多的服务器,在不需要时删除它们。

你还可以根据情况将请求路由到不同的服务器。例如,你可能想用几个缓存服务器(如 Varnish)来处理你的静态内容,但把任何需要动态内容的东西,如 API 端点,路由到一个更强大的机器。

在这篇文章中,我将通过设置一个非常基本的 HAProxy 环境,使用 HTTPS 来监听安全端口 443,并利用几个后端 Web 服务器。它甚至会将所有进入预定义 URL(如 /api/)的流量发送到不同的服务器或服务器池。

安装 HAProxy

要开始安装,请启动一个新的 CentOS 8 服务器或实例,并使系统达到最新状态:

$ sudo yum update -y

这通常会持续一段时间。在等待的时候给自己拿杯咖啡。

这个安装有两部分:第一部分是安装 yum 版本的 HAProxy,第二部分是编译和安装你的二进制文件,用最新的版本覆盖以前的 HAProxy。用 yum 安装,在生成 systemd 启动脚本等方面做了很多繁重的工作,所以运行 yum install,然后从源代码编译,用最新的版本覆盖 HAProxy 二进制:

$ sudo yum install -y haproxy

启用 HAProxy 服务:

$ sudo systemctl enable haproxy

要升级到最新版本(版本 2.2,截至本文写作为止),请编译源代码。许多人认为从源代码编译和安装一个程序需要很高的技术能力,但这是一个相当简单的过程。首先,使用 yum 安装一些提供编译代码工具的软件包:

$ sudo yum install dnf-plugins-core
$ sudo yum config-manager --set-enabled PowerTools
$ sudo yum install -y git ca-certificates gcc glibc-devel \
    lua-devel pcre-devel openssl-devel systemd-devel \
    make curl zlib-devel 

使用 git 获得最新的源代码,并改变到 haproxy 目录:

$ git clone http://git.haproxy.org/git/ haproxy
$ cd haproxy

运行以下三个命令来构建和安装具有集成了 Prometheus 支持的 HAProxy:

$ make TARGET=linux-glibc USE_LUA=1 USE_OPENSSL=1 USE_PCRE=1 \
    PCREDIR= USE_ZLIB=1 USE_SYSTEMD=1 \
    EXTRA_OBJS="contrib/prometheus-exporter/service-prometheus.o"

$ sudo make PREFIX=/usr install # 安装到 /usr/sbin/haproxy

通过查询版本来测试它:

$ haproxy -v

你应该看到以下输出:

HA-Proxy version 2.2.4-b16390-23 2020/10/09 - https://haproxy.org/

创建后端服务器

HAProxy 并不直接提供任何流量,这是后端服务器的工作,它们通常是网络或应用服务器。在这个练习中,我使用一个叫做 Ncat 的工具,它是网络领域的“瑞士军刀”,用来创建一些极其简单的服务器。安装它:

$ sudo yum install nc -y

如果你的系统启用了 SELinux,你需要启用端口 8404,这是用于访问 HAProxy 统计页面的端口(下面有解释),以及你的后端服务器的端口:

$ sudo dnf install policycoreutils-python-utils
$ sudo semanage port -a -t http_port_t  -p tcp 8404
$ sudo semanage port -a -t http_port_t  -p tcp 10080
$ sudo semanage port -a -t http_port_t  -p tcp 10081
$ sudo semanage port -a -t http_port_t  -p tcp 10082

创建两个 Ncat 网络服务器和一个 API 服务器:

$ while true ;
do
nc -l -p 10080 -c 'echo -e "HTTP/1.1 200 OK\n\n This is Server ONE"' ;
done &

$ while true ;
do
nc -l -p 10081 -c 'echo -e "HTTP/1.1 200 OK\n\n This is Server TWO"' ;
done &

$ while true ;
do
nc -l -p 10082 -c 'echo -e "HTTP/1.1 200 OK\nContent-Type: application/json\n\n { \"Message\" :\"Hello, World!\" }"' ;
done &

这些简单的服务器打印出一条信息(如“This is Server ONE”),并运行到服务器停止为止。在现实环境中,你会使用实际的网络和应用程序服务器。

修改 HAProxy 的配置文件

HAProxy 的配置文件是 /etc/haproxy/haproxy.cfg。你在这里进行修改以定义你的负载平衡器。这个 基本配置 将让你从一个工作的服务器开始:

global
    log         127.0.0.1 local2
    user        haproxy
    group       haproxy

defaults 
    mode                    http
    log                     global
    option                  httplog

frontend main
    bind *:80
        
    default_backend web
    use_backend api if { path_beg -i /api/ }
    
    #-------------------------
    # SSL termination - HAProxy handles the encryption.
    #    To use it, put your PEM file in /etc/haproxy/certs  
    #    then edit and uncomment the bind line (75)
    #-------------------------
    # bind *:443 ssl crt /etc/haproxy/certs/haproxy.pem ssl-min-ver TLSv1.2
    # redirect scheme https if !{ ssl_fc }

#-----------------------------
# Enable stats at http://test.local:8404/stats
#-----------------------------

frontend stats
    bind *:8404
    stats enable
    stats uri /stats
#-----------------------------
# round robin balancing between the various backends
#-----------------------------

backend web
    server web1 127.0.0.1:10080 check
    server web2 127.0.0.1:10081 check

#-----------------------------

# API backend for serving up API content
#-----------------------------
backend api
    server api1 127.0.0.1:10082 check

重启并重新加载 HAProxy

HAProxy 可能还没有运行,所以发出命令 sudo systemctl restart haproxy 来启动(或重新启动)它。“重启” 的方法在非生产情况下是很好的,但是一旦你开始运行,你要养成使用 sudo systemctl reload haproxy 的习惯,以避免服务中断,即使你的配置中出现了错误。

例如,当你对 /etc/haproxy/haproxy.cfg 进行修改后,你需要用 sudo systemctl reload haproxy 来重新加载守护进程,使修改生效。如果有错误,它会让你知道,但继续用以前的配置运行。用 sudo systemctl status haproxy 检查 HAProxy 的状态。

如果它没有报告任何错误,你就有一个正在运行的服务器。在服务器上用 curl 测试,在命令行输入 curl http://localhost/。如果你看到 “This is Server ONE”,那就说明一切都成功了!运行 curl 几次,看着它在你的后端池中循环,然后看看当你输入 curl http://localhost/api/ 时会发生什么。在 URL 的末尾添加 /api/ 将把所有的流量发送到你池子里的第三个服务器。至此,你就有了一个正常运作的负载平衡器

检查你的统计资料

你可能已经注意到,配置中定义了一个叫做 stats 的前端,它的监听端口是 8404:

frontend stats
    bind *:8404
    stats uri /stats
    stats enable

在你的浏览器中,加载 http://localhost:8404/stats。阅读 HAProxy 的博客 学习 HAProxy 的统计页面,了解你在这里可以做什么。

一个强大的负载平衡器

虽然我只介绍了 HAProxy 的几个功能,但你现在有了一个服务器,它可以监听 80 和 443 端口,将 HTTP 流量重定向到 HTTPS,在几个后端服务器之间平衡流量,甚至将匹配特定 URL 模式的流量发送到不同的后端服务器。你还解锁了非常强大的 HAProxy 统计页面,让你对你的系统有一个很好的概览。

这个练习可能看起来很简单,不要搞错了,你刚刚建立和配置了一个非常强大的负载均衡器,能够处理大量的流量。

为了你方便,我把本文中的所有命令放在了 GitHub Gist 中。


via: https://opensource.com/article/20/11/load-balancing-haproxy

作者:Jim O'Connell 选题:lujun9972 译者:wxy 校对:wxy

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

不同的 Linux 系统以不同的方式处理辅助技术。 这里是一些对视觉、听觉、打字等有用的设置。

 title=

当我在 20 世纪 90 年代开始使用 Linux 时,我已经 40 多岁了, 无障碍性 accessibility 不是我非常关注的问题。然而现在,当我快到 70 岁时,我的需求已经改变了。几年前,我从 System76 购买了一个全新的 Darter Pro,它的默认分辨率是 1920x1080,而且也是高 DPI。系统附带了 Pop!\_OS,我发现我必须修改它才能看到显示屏上的图标和文字。谢天谢地,桌面上的 Linux 已经变得比 90 年代更容易使用了。

我需要辅助技术,特别是在视觉和听觉方面。还有一些我不使用的领域,但对需要帮助打字、指点、点击和手势的人来说是有用的。

不同的系统,如 Gnome、KDE、LXDE、XFCE 和其他系统,对这些辅助技术的处理方式不同。这些辅助性的调整大多可以通过 “ 设置 Settings ” 对话框或键盘快捷键来实现。

文字显示

我需要帮助来显示较大的文字,在我的 Linux Mint Cinnamon 桌面上,我使用这些设置:

 title=

我还发现 Gnome “ 优化 Tweaks ” 可以让我对桌面体验的文字显示大小进行微调。我把我的显示器的分辨率从默认的 1920x1080 调整到更舒适的 1600x900。以下是我的布局设置:

 title=

键盘支持

我不需要键盘支持,但它们是现成支持的,如下图所示:

 title=

更多无障碍选项

在 Fedora 35 上,无障碍访问也是熟悉的。打开 “ 设置 Settings ” 菜单,选择让 “ 总是显示无障碍菜单 Always show Accessibility Menu ” 图标在桌面上可见。我通常会切换 “ 大字体 Large Text ”,除非我在一个大显示器上。还有许多其他选项,包括 “ 缩放 Zoom ”、“ 屏幕阅读器 Screen Reader ” 和 “ 声音键 Sound Keys ”。这里有一些:

 title=

当在 Fedora 的 “ 设置 Settings ” 菜单中启用了 “ 无障碍菜单 Accessibility Menu ”,就很容易从右上角的图标中切换其他功能:

 title=

有一些 Linux 发行版是专门为需要无障碍支持的人设计的。Accessible Coconut 就是这样一个发行版。Coconut 基于 Ubuntu Mate 20.04,并默认启用了屏幕阅读器。它装载了 Ubuntu Mate 的默认应用。Accessible Coconut 是 Zendalona 的作品,该公司专门开发自由开源的无障碍应用。他们所有的应用都是以 GPL 2.0 许可证发布的,包括 iBus-Braille。该发行版包括屏幕阅读器、各种语言的打印阅读、六键输入、打字辅导、放大器、电子书扬声器等等。

 title=

Gnome 无障碍套件 是一个开源软件库,是 Gnome 项目的一部分,为实现无障碍功能提供 API。你可以通过访问他们的维基来参与 Gnome 无障碍团队。KDE 也有一个 无障碍项目 和一个支持该项目的 应用 列表。你可以通过访问他们的 维基 来参与 KDE 无障碍项目。XFCE 也为用户提供了相关资源。Fedora 项目维基 也有一个可以安装在操作系统上的无障碍应用的列表。

Linux 适合所有人

自 20 世纪 90 年代以来,Linux 已经有了长足的进步,其中一个很大的进步就是对无障碍的支持。很高兴知道随着 Linux 用户的不断变化,操作系统也可以和我们一起变化,并做出许多不同的支持选项。


via: https://opensource.com/article/22/1/linux-accessibility-settings

作者:Don Watkins 选题:lujun9972 译者:geekpi 校对:wxy

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

它不是每个人的理想选择,但作为一个 Linux 爱好者,我喜欢用它做实验。

当 Pine64 在 2019 年发布 PinePhone 时,没有人能够预见它将对移动 Linux、桌面 Linux 和隐私产生巨大的影响。

作为 少数专为运行桌面 Linux 而设计的手机 之一,它具有低端安卓手机的所有功能,同时又具有笔记本电脑的多功能性。不幸的是,桌面 Linux 就是这样:它是为台式机设计的,而不是为手机设计的。

幸运的是,由于 GNOME、KDE、Pine64 和众多 Linux 社区的惊人力量,全新的桌面环境、应用程序和发行版应运而生。其中一些比较知名的包括 Plasma Mobile、Phosh、Megapixels 和Mobian。

有了这些所有关键的部分,Pine64 需要做的就是销售 PinePhone,他们确实也卖出了 PinePhone。每一轮社区版(每个都预装了不同的发行版)的预购都收到了数千份订单,其中之一就是我的。

自从我在 2020 年 12 月收到我的设备后,PinePhone 一直是我日常生活中的重要组成部分,我在 2021 年全年都把它作为我的日常设备。以下是我使用它的经验。

它的性能就像糖浆一样

PinePhone 采用了全志 a64 系统芯片,它的功率只够完成最基本的手机任务。即使是简单的事情,如打开火狐浏览器,也需要将近 20 秒的时间,这无疑要“归功于”它仅有的 4 个核心。这与现代中高端安卓手机形成鲜明对比,所有这些手机都有至少 2GHz 的 8 核处理器。

幸运的是,社区再次介入,对数以千计的小型软件实施了优化。虽然性能仍然不如安卓系统的竞争对手,但这确实意味着 PinePhone 对于大多数手机任务来说是非常适用了,甚至在通过附带的底座使用外部显示器时,也可以使用一些面向桌面的应用程序。

即使它在这里和那里可能会有一点卡顿,PinePhone 在大多数情况下都有足够的能力。但是电池呢?它真的能续航一整天吗?

电池续航……没问题

虽然我很想说,由于 PinePhone 的低功耗组件,电池续航想必是超棒的。但不幸的是,情况并非如此,即使在实施了所有节电改进措施后也是如此。

经过一夜的充电,我通常在早上阅读新闻,然后在午餐时间再读一些。尽管这相当于不到一个小时的屏幕开启时间,但电池仍然持续下降约 35%,使我在下午只剩下 65%。幸运的是,这并不是一个大问题,尤其是调制解调器的深度睡眠功能工作得很好。

补充一句,几乎所有的移动电话都会将其调制解调器放入深度睡眠模式,这基本上是关闭一切除了接收电话和短信所需的功能。然后,当你接到一个电话时,调制解调器会唤醒自己和 SoC,然后开始响铃。

根据我的经验,PinePhone 上深度睡眠的实施绝对很棒,没有错过任何一个电话。因此,考虑到其糟糕的开屏续航时间,PinePhone 的关屏续航相当惊人。我在最少使用的情况下,电池寿命一直能保持在 60 小时以上,这是我的 Galaxy S20 FE 无法比拟的。

不要期望有什么漂亮的照片

PinePhone 仅有的 500 万像素后置摄像头和更小的 200 万像素前置摄像头,不要指望能拍出专业级别的照片。甚至许多 USB 网络摄像头也能提供更好的图像质量,以及更多的常规功能。见鬼,PinePhone 的摄像头甚至不能够拍摄视频!

它所做的少量后期处理确实有助于提升一点照片质量,尽管还不足以让它们适合发到社交媒体上。作为比较,这里是用 iPhone 4S(2011 年)和 PinePhone(2019 年)拍摄的同一张照片。

iPhone 4SPinePhone
iPhone 4SPinePhone

在古老的 SoC、普普通通的电池续航和可怜的相机之间,很明显 PinePhone 的硬件绝对不是它的强项。但软件能拯救它吗?

桌面环境还是移动环境?

在这个移动 Linux 的世界里,主要有三种桌面环境领域,它们是:

在我日常使用 PinePhone 的过程中,我大约花了 4 个月的时间使用每个环境。在这段时间里,我发现它们的功能、问题和成熟度各有不同,我会在这里讨论这些问题。

Plasma Mobile

图片来源:KDE Plasma Mobile

早在 2015 年 Plasma 5 发布之后,Plasma Mobile 已经默默地在后台开发了近 7 年。从最初的发布到 PinePhone 的发布,Plasma Mobile 背后的团队成功地创造了一个相当可用的移动桌面环境。

然而,随着 PinePhone 的发布,这一切都改变了。困扰 Plasma Mobile 的许多错误已经被解决了,而且也在改进用户界面方面付出了巨大的努力。

作为一个 KDE 项目,Plasma Mobile 广泛使用了 Kirigami,这导致了一个极其一致和移动友好的应用生态系统。此外,许多先前就有的 KDE 应用程序也能完美地扩展到该平台。

由于 Maui 项目刚刚发布了他们的 Maui Shell,这个应用生态系统得到了进一步的扩展(更多信息即将发布)。由于他们强大的实用程序套件,Plasma Mobile 是一个真正的安卓替代品。

然而,这并不是说 Plasma Mobile 是完美的。即使到了 2022 年,仍有一些残余的错误和问题。然而,这被其成熟的应用生态系统、对手势的广泛使用和对移动体验的专注所抵消。

Phosh

PinePhone 上的 Phosh 截屏

Phosh 主要由 Purism 开发,是相当于 Plasma Mobile 的 GTK。它最初是为 Librem 5 打造的,自 2018 年以来一直在开发。由于只有 4 年的历史,你可能会认为 Phosh 是不成熟的,但这与事实相差甚远。

事实上,在超过 3 个月的时间里,我从未遇到过 Phosh 的崩溃,相比之下,Plasma Mobile 没几天崩溃一次。当然,由于建立在 GTK 和其他 Gnome 技术之上,Phosh 有许多可用的应用程序。一些流行的应用程序可以完美地工作,包括:

  • Firefox
  • Geary
  • Headlines(Reddit 应用程序)
  • Megapixels(相机应用)
  • Gnome 地图

此外,许多为 Plasma Mobile 设计的应用程序也能完美运行,尽管它们使用 Kirigami。不幸的是,虽然有许多 GTK 应用程序,但它们并不像 Kirigami 应用程序一样适合各种环境,所以开发者必须专门使他们的应用程序与 Phosh 和 PinePhone 兼容。

此外,GTK 主要是一个面向桌面的 UI 工具包,这意味着诸如手势等功能,甚至让应用程序能够适应屏幕的功能,充其量是零散的,最糟糕的是不存在。

不过幸运的是,Purism 在默认的 Gnome 应用程序中投入了大量的工作,这些应用程序都是完全可用的,而且速度很快。

总的来说,Phosh 是非常可靠的,特别是对于台式机和笔记本电脑上的 Gnome 用户。然而,它也因为缺乏核心的移动功能和优化的应用程序而受到阻碍。

Lomiri

Lomiri on the PinePhone

我怀疑你是否听说过它,因为它最近才改了名字。它以前被称为 Unity 8,是 Ubuntu Touch 操作系统的默认桌面环境。它也可以在 Manjaro ARM 上使用。

由于使用 Qt Quick 构建,它可能是 PinePhone 最成熟的桌面环境。它很好地利用了手势来实现核心系统功能,并且有大量专门为它制作的应用程序。

然而,它的缺点是只能在 Ubuntu Touch 上使用,因为没有一个应用程序被移植到 Manjaro。因此,它的用户受制于 Ubuntu Touch 的“锁定”风格,类似于安卓和 iOS。

虽然这对典型的用户来说可能是件好事,但 PinePhone 的用户一般都是喜欢控制自己设备的手工爱好者,而 Ubuntu Touch 则使其变得更加困难。

操作系统

与任何以 Linux 为主的设备一样,它有大量的发行版和操作系统可用。在写这篇文章的时候,Pine64 维基列出了 21 个单独的操作系统,它们的完整度各有不同。

然而,在这些不同的操作系统中,有四个我在 PinePhone 上有很好的体验:

  • Manjaro ARM
  • Mobian
  • SailfishOS
  • Ubuntu Touch

虽然我不打算详细介绍它们,但它们都是很好的选择,对于大多数任务来说都是完美的功能。除了 SailfishOS 之外,它们都是开源的,而 SailfishOS 大部分是开源的。

关于安卓应用程序的说明

正如你现在可能已经猜到的,应用程序的支持可能有点问题。即使看到 PinePhone 上有近 400 个确认可以使用的应用程序,但与安卓和 iOS 的数百万个应用程序相比,这也是相形见绌。

幸运的是,有一些方法可以解决这个问题,最简单的是使用兼容层来模拟安卓应用。在这方面,Anbox 已经成为几年来的首选。

Anbox

如果说 WINE 是 Windows 的兼容层,那么 Anbox 对 Android 也是如此。安装后,或打开它,因为它预装在许多发行版中,就像运行一个命令来安装一个 APK 文件一样简单。

从这里开始,该应用程序的行为就像任何 Linux 应用程序一样,尽管在性能上有很大的影响。

最近,有一群人决定解决这个问题,创建了一个名为 Waydroid 的新项目。

Waydroid

Waydroid 是为 PinePhone 开发的安卓模拟器的最新尝试,即使在这个早期阶段,它看起来也非常有发展前景。由于安卓应用可以直接在硬件上运行,它的性能相当惊人,特别是与 Anbox 相比。

因此,许多极为流行的应用程序都能完美运行,如 F-Droid 和 Aurora 商店。

此外,通过 Waydroid 安装的应用程序被很好地整合到 Linux 中,它们能够像其他应用程序一样被打开和关闭。

我对 PinePhone 的总体看法

在我使用它的过程中,我花时间使用了几乎所有可用于它的不同操作系统,以及每个桌面环境。正如我之前所说,它的性能一般都很差,尽管 Lomiri 和 Plasma Mobile 足够流畅。

我不经常拍照,所以相机的使用频率很低。然而,当我拍摄照片时,它们通常够用了,即使相片质量并不特别高。

总的来说,我认为 PinePhone 的最大弱点实际上是它的电池续航。这是因为即使只是打开它查看一下时间,也会唤醒调制解调器,导致电池迅速耗尽,除非我尽量不打开它。

幸运的是,我总是确保随身携带一块备用电池,我可以通过取下后盖换入。此外,我还可以插入一张 SD 卡,用作额外的存储空间或测试新的操作系统。

正如预期的,PinePhone 并不防水,但我发现在雨中使用它似乎没有任何损害,尽管你的经历可能有所不同。当我在室内时,我经常发现自己会借助它附带的底座来使用它的外部显示器。

在这种设置下,我对 PinePhone 作为一台笔记本电脑的能力感到惊讶。我经常发现自己可以在 LibreOffice 中编辑文件,甚至有一次还能用 Kdenlive 编辑了一段视频!

总的来说,即使有一些不足,我与 PinePhone 相处的这一年也很顺利,我从来没有发现自己对安卓的渴望。

获得 PinePhone

如果你想获得一台 PinePhone,下面有一个按钮,可以带你到 Pine64 的网站。在写这篇文章的时候,有两种型号可供选择,一种是 16GB 的存储空间和 2GB 的内存。另一个型号有 32GB 的存储空间和 3GB 的内存。(LCTT 译注:应该是不向中国发货的。)

本评论中使用的型号是 3GB 版本,价格为 199 美元。2GB 型号的价格为 149 美元。

我们只希望即将推出的 PinePhone Pro 能以其更强大的硬件保持这种积极的趋势!


via: https://news.itsfoss.com/pinephone-review/

作者:Jacob Crume 选题:lujun9972 译者:wxy 校对:wxy

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

应用中的语音识别不仅仅是一个有趣的技巧,而且是一个重要的无障碍功能。

 title=

计算机的主要功能之一是解析数据。有些数据比其他数据更容易解析,而语音输入仍然是一项进展中的工作。不过,近年来该领域已经有了许多改进,其中之一就是 DeepSpeech,这是 Mozilla 的一个项目,Mozilla 是维护 Firefox 浏览器的基金会。DeepSpeech 是一个语音到文本的命令和库,使其对需要将语音输入转化为文本的用户和希望为其应用提供语音输入的开发者都很有用。

安装 DeepSpeech

DeepSpeech 是开源的,使用 Mozilla 公共许可证(MPL)发布。你可以从其 GitHub 页面下载源码。

要安装,首先为 Python 创建一个虚拟环境:

$ python3 -m pip install deepspeech --user

DeepSpeech 依靠的是机器学习。你可以自己训练它,但最简单的是在刚开始时下载预训练的模型文件。

$ mkdir DeepSpeech
$ cd Deepspeech
$ curl -LO \
  https://github.com/mozilla/DeepSpeech/releases/download/vX.Y.Z/deepspeech-X.Y.Z-models.pbmm
$ curl -LO \
  https://github.com/mozilla/DeepSpeech/releases/download/vX.Y.Z/deepspeech-X.Y.Z-models.scorer

用户应用

通过 DeepSpeech,你可以将语音的录音转录成书面文字。你可以从在最佳条件下干净录制的语音中得到最好的结果。然而,在紧要关头,你可以尝试任何录音,你可能会得到一些你需要手动转录的东西。

为了测试,你可以录制一个包含简单短语的音频文件:“This is a test. Hello world, this is a test”。将音频保存为一个 .wav 文件,名为 hello-test.wav

在你的 DeepSpeech 文件夹中,通过提供模型文件、评分器文件和你的音频启动一个转录:

$ deepspeech --model deepspeech*pbmm \
  --scorer deepspeech*scorer \
  --audio hello-test.wav

输出到标准输出(你的终端):

this is a test hello world this is a test

你可以通过使用 --json 选项获得 JSON 格式的输出:

$ deepspeech --model deepspeech*pbmm \
  -- json
  --scorer deepspeech*scorer \
  --audio hello-test.wav

这就把每个词和时间戳一起渲染出来:

{
  "transcripts": [
    {
      "confidence": -42.7990608215332,
      "words": [
        {
          "word": "this",
          "start_time": 2.54,
          "duration": 0.12
        },
        {
          "word": "is",
          "start_time": 2.74,
          "duration": 0.1
        },
        {
          "word": "a",
          "start_time": 2.94,
          "duration": 0.04
        },
        {
          "word": "test",
          "start_time": 3.06,
          "duration": 0.74
        },
[...]

开发者

DeepSpeech 不仅仅是一个转录预先录制的音频的命令。你也可以用它来实时处理音频流。GitHub 仓库 DeepSpeech-examples 中有 JavaScript、Python、C# 和用于 Android 的 Java 等各种代码。

大部分困难的工作已经完成,所以集成 DeepSpeech 通常只是引用 DeepSpeech 库,并知道如何从主机设备上获得音频(你通常通过 Linux 上的 /dev 文件系统或 Android 和其他平台上的 SDK 来完成。)

语音识别

作为一个开发者,为你的应用启用语音识别不只是一个有趣的技巧,而是一个重要的无障碍功能,它使你的应用更容易被有行动问题的人、低视力的人和长期多任务处理的人使用。作为用户,DeepSpeech 是一个有用的转录工具,可以将音频文件转换为文本。无论你的使用情况如何,请尝试 DeepSpeech,看看它能为你做什么。


via: https://opensource.com/article/22/1/voice-text-mozilla-deepspeech

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

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

当你不知道从哪里开始时,这五个工具可以帮助你找到用户的 IT 问题的源头。

 title=

作为系统管理员,我每天都面临着需要快速解决的问题,用户和管理人员期望事情能够顺利地进行。在我管理的这样的一个大型环境中,几乎不可能从头到尾了解所有的系统和产品,所以我必须使用创造性的技术来找到问题的根源,并(希望可以)提出解决方案。

这是我 20 多年来的日常经验!每天上班时,我从不知道会发生什么。因此,我有一些快速而简陋的技巧,当一个问题落在我的身上,而我又不知道从哪里开始时,我一般就会采用这些技巧。

但等一下!在你直接打开命令行之前,请花一些时间与你的用户交谈。是的,这可能很乏味,但他们可能会有一些好的信息给你。请记住,用户可能没有你那么多的经验,你需要对他们说的东西进行一些解释。试着清楚地了解正在发生什么和应该发生什么,然后用技术语言自己描述故障。请注意,大多数用户并不阅读他们面前的屏幕上的内容;这很可悲,但却是事实。确保你和用户都阅读了所有的文字,以收集尽可能多的信息。一旦你收集到了这些信息,就打开命令行,使用这五个工具。

Telnet

让我从一个经典开始。Telnet 是 SSH 的前身,在过去,它在 Unix 系统上用来连接到远程终端,就像 SSH 一样,但它没有加密。Telnet 在诊断网络连接问题方面有一个非常巧妙和宝贵的技巧:你可以 Telnet 到不是专属于它 TCP 端口(23/TCP)。要做到这一点,可以像平时一样使用 Telnet,但在末尾加上 TCP 端口(例如 telnet localhost 80),以连接到一个网络服务器。这可以让你能够检查一个服务器,看看服务是否正在运行,或者防火墙是否阻挡了它。因此,在没有应用程序客户端,甚至没有登录应用程序的情况下,你可以检查 TCP 端口是否有反应。如果你知道怎么做,有时你可以通过在 Telnet 提示符手动输入并获得响应以检查。网络服务器和邮件服务器是你可以这样做的两个例子。

 title=

Tcpdump

tcpdump 工具可以让你检查网络上正在传输的数据。大多数网络协议都相当简单,如果你把 tcpdump 和一个像 Wireshark 这样的工具结合起来,你会得到一个简单而好用的方法来浏览你所捕获的流量。在如下的例子中,我在下面的窗口中检查数据包,在上面的窗口连接到 TCP 3260 端口。

 title=

这张截图显示了在现实世界中使用 Wireshark 查看 iSCSI 协议的情况;在这种情况下,我能够确定我们的 QNAP 网络附加存储的配置方式有问题。

 title=

find

如果你不知道从哪里开始,find 命令就是最好的工具。在其最简单的形式中,你可以用它来“寻找”文件。例如,如果我想在所有的目录中进行递归搜索,得到一个 conf 文件的列表,我可以输入:

find . -name '*.conf'.

 title=

但是,find 的一个隐藏的宝藏是,你可以用它对它找到的每个项目执行一个命令。例如,如果我想得到每个文件的长列表,我可以输入;

find . -name '*.conf' -exec ls -las {}\;

 title=

一旦你掌握了这种技术,你就可以用各种创造性的方法来寻找、搜索和以特定方式执行程序。

strace

我是在 Solaris 上认识 strace 这个概念的,在那里它被称为 truss。今天,它仍然像多年前一样有用。strace 允许你在进程实时运行时检查它在做什么。使用它很简单,只要使用命令 ps -ef,找到你感兴趣的进程 ID。用 strace -p <进程 ID> 启动 strace,它会开始打印出一大堆东西,一开始看起来像垃圾信息。但如果你仔细观察,你会看到你认识的文字,如 OPENCLOSE 这样的词和文件名。如果你想弄清楚一个程序为什么不工作,这可以引导你走向正确的方向。

grep

把最好的留到最后:grep。这个工具是如此有用和强大,以至于我很难想出一个简洁的方法来描述它。简单地说,它是一个搜索工具,但它的搜索方式使它如此强大。在问题分析中,我通常会用 grep 搜索一堆日志来寻找一些东西。一个叫 zgrep 的配套命令可以对压缩文件做同样的事情。在下面的例子中,我使用 zgrep bancroft /var/log/* 在所有的日志文件中进行 grep,以查看我在系统中的工作情况。我使用 zgrep 是因为该目录中有压缩文件。

 title=

使用 grep 的另一个好方法是将其他工具的输出通过管道输送到它里面;这样,它就可以作为一种过滤器来使用。在下面的例子中,我列出了 auth 文件,并通过使用 cat auth.log |grep bancroft 来搜索我的登录信息,看看我都做了什么。这也可以写成 grep bancroft auth.log,但我这里用管道(|)来证明这一点。

 title=

其他需要考虑的工具

你可以用这些工具做更多的事情,但我希望这个简单的介绍能给你一个窗口,让你了解如何用它们来解决你遇到的讨厌的问题。另一个值得你注意的工具是 Nmap,我没有包括它,因为它是如此全面,需要一整篇文章(或更多)来解释它。最后,我建议学习一些白帽和黑客技术;在试图找出问题的根源时,它们可能非常有益,因为它们可以帮助你收集对决策至关重要的信息。


via: https://opensource.com/article/20/1/ops-hacks-sysadmins

作者:Stephen Bancroft 选题:lujun9972 译者:wxy 校对:wxy

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

Linux 命令行以生产力强而闻名。它也是一个可以获得一些乐趣的地方!

 title=

去年 11 月,我们分享了一篇文章《7 个好玩的 Linux 命令》,并请读者们告诉我们推荐的“好玩”的 Linux 命令是什么,以及为什么?

一些读者在下面分享了他们的最爱:


这是我的最爱:

  • 当然得有 cowsay
  • fortune,我最喜欢的 “黑科技” 是让用户连接时的 motd 成为一个幽默的格言。
  • sl,在你的终端上的蒸汽机车。
  • xsnow,另一个 XWindow 黑科技,这个命令可以在你的工作区降雪,并堆积在打开的窗口上。
  • GNOME 复活节彩蛋,在 GNOME 2 中,按下 Alt+F2(打开运行对话框)并输入 free the fish,就可以在你的根窗口中释放 “Wanda the Fish”。如果你点击 Wanda,它就会四处游荡,窜来窜去(一段时间)。

~Dave Neary


我的一天从这些开始:

fortunecowsaylolcat

 title=

紧接着是 curl wttr.in

 title=

现在我们可以喝咖啡了 ;-)

~Tomasz Waraksa


cmatrix ,因为每当这个时候,你就会觉得自己被插入了机器。

~Gary Smith


telnet towel.blinkenlights.nl

这并不完全是 Linux 特有的,但它还挺棒的。

~John 'Warthog9' Hawley


Xroach 是 20 世纪 90 年代你的窗口管理器的一个很酷的附加功能。当时它与 Tab Window Manager (TWM)和 F Virtual Window Manager (FVWM)一起使用时非常有趣,但我已经多年没有使用它了。当你运行 Xroach 时,它添加了小蟑螂并“住”在你的窗口下。当你移动一个窗口或关闭它时,蟑螂就会窜到另一个窗口下躲起来或跑出屏幕。这只是其中一种使桌面更有趣的小方法。

看起来有一个 Xroach 的现代移植,我得找个时间试试。

~Jim Hall


我在 90 年代末担任过计算机科学的助教,我们的计算机实验室里有 Sun Sparc 工作站。有时学生会在实验室时间里走开而不锁屏。每隔一段时间,我就会在他们不注意的时候在终端上执行 xroach &; clear

XRoach 是个好东西。蟑螂躲在窗口下,在屏幕上窜来窜去,当你移动一个窗口时,又躲在另一个窗口下。

~Ann Marie Fred


我最喜欢的一个是 hollywood,在 这里 了解下。

只需运行它并开始随意按键,你就会让星巴克的每个人都相信你正在摧毁美国。

~Clint Byrum

Jim Hall 对此回应道:

这真是太棒了! 这让我想起了 Hacker Typer。它是一个网站而不是一个终端程序。只要调出网站,然后敲击键盘。不管你输入什么,Hacker Typer 的输出都似乎是真正的工作。:-)

为了回应 Clint Byrum(和 Jim Hall 的回应)带来的乐趣:

这两个我都喜欢! 请欣赏这篇关于 Hollywood 黑科技的 博文。我最爱之一。

~Greg Scott


你最喜欢的“有趣的” Linux 命令是什么?请在下面的评论中分享你的。


via: https://opensource.com/article/22/1/fun-linux-commands

作者:Opensource.com 选题:lujun9972 译者:geekpi 校对:wxy

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