2021年1月

Fedora 率先停用了 Chromium 的谷歌数据同步 API

前段时间,谷歌宣布“经过慎重的调查和考虑,将于 3 月 15 日限制第三方浏览器对谷歌私有数据同步 API 的调用”。这一消息引来了开源社区的强烈反对,这意味着许多基于 Chromium 开发的浏览器将不能使用谷歌账户登录进行数据同步。有开发者表示,“除了强迫用户转投谷歌浏览器,该公司没有任何其它理由去这么做!”

对此,Fedora 项目予以了回应,发布了禁用谷歌数据同步功能的 Chromium 版本。并鼓励用户转投自由开源的 Mozilla Firefox。

已经垄断了浏览器市场份额的 Chrome,越来越露出了獠牙,不过,我觉得,谷歌还是想想怎么在产品能力上别被微软 Edge 超过吧。而另外一方面,Mozilla Firefox 才是自由开源软件世界的指望。

GNOME 40 Alpha 版发布

就如我们之前知道的,在这个版本号时代,GNOME 也觉得自己的版本号太小了,于是 GNOME 从 3.38 一下跳到了 GNOME 40。

GNOME 40.0 计划在今年 3 月底推出,今天刚刚发布了 Alpha 版本,带来了许多新变化。但是由于这次变化太多了,所以像 Ubuntu 21.04 等最近将要发布的发行版不会马上跟进,至少会等到下个版本才能使用 GNOME 40。

在 GNOME 40 中,最重要的变化有:

  • 集成了刚刚发布不久的 GTK 4
  • GNOME Shell 使用 GPU 渲染大多数阴影
  • 对 XWayland 的修复和改进

除此以外,还有一个需要注意的变化是,由于 Google 更改了关于开源项目 API 密钥的服务条款,GNOME 的 Web 浏览器 Epiphany 已经禁用了安全浏览钓鱼保护功能。

开源磁盘分区工具 GParted 1.2 开始支持 exFAT 文件系统

著名的 GUI 的磁盘分区工具 GParted 日前发布了最新的 1.2 版,在这个版本中增加了 exFAT 的支持。说实话,我是没想到居然现在才增加对 exFAT 的支持。因为,不但微软早就提供了 exFAT 驱动代码,而且从 Linux 内核 5.7 开始,由三星提供的 exFAT 驱动取代了微软提供的驱动程序之后,这个驱动的表现也越来越好了。

记笔记很重要,而纯文本是一种简单、中性的方式。这里有三个工具,你可以在不失去纯文本的简易和便携性的前提下,给你的笔记加点东西。

 title=

在前几年,这个年度系列涵盖了单个的应用。今年,我们除了关注 2021 年的策略外,还将关注一体化解决方案。欢迎来到 2021 年 21 天生产力的第五天。

纯文本是最具弹性的文档格式。纯文本文档体积小,可以在机器之间快速传输,并且可以在任意设备上阅读。因此,在纯文本文档中做笔记是很有意义的。

然而,纯文本也仅是纯文本。我们生活在一个富文本世界中,我们仍然需要标题、列表以及区分一个章节和另一个章节的方法。幸运的是,我们有几种方法可以添加这些元素,而不需要在纯文本文档中添加复杂的标记。

Markdown

 title=

Markdown (Kevin Sonney, CC BY-SA 4.0

由 Aaron Schwartz 和 John Gruber 创建的 Markdown,是我如今每天使用最多的格式。从读写 README 文件、文档、记笔记,甚至源代码注释,Markdown 让我可以在不牺牲轻松阅读文档的能力的情况下添加格式。

此外,Markdown 还有几个“扩展版本”,以允许那些不属于原始设计的项目。特别是,GitHub 风格的 Markdown 由于其在同名的源码控制网站中的使用而异常流行。

许多文件编辑器都支持 Markdown 高亮显示,不需要额外的附加组件或工作。

AsciiDoc

 title=

AsciiDoc (Kevin Sonney, CC BY-SA 4.0

由 Stuart Rackham 创建的 AsciiDoc 是向纯文本文档添加富文本元素的另一种方式。AsciiDoc 有许多生成文档、书籍和论文的功能。然而,这并不意味着它不能被用来做笔记。有很多环境(特别是在教育和研究领域),能够快速将笔记转换为更“正式”的格式是很有帮助的。

AsciiDoc 也有很多工具可以将文本转换为其他格式进行协作。还有一些附加组件可以从不同的源导入数据,并将其放入最终的文档中,或者处理特殊的格式,如 MathML 或 LaTeX。

Org 模式

 title=

ORG-Mode (Kevin Sonney, CC BY-SA 4.0

说到文本格式,我不能不提 Org 模式。它最初是为 GNU Emacs 设计的,现在已经成为笔记、待办事项、文档等常用的纯文本格式之一。Org 模式可以在包括 Vim 在内的众多文本编辑器中编写和使用。Org 模式简单、易学,是我最喜欢的笔记文本格式之一。

最后,选择 Markdown、AsciiDoc 或 Org 模式作为纯文本笔记,是确保它们可以在任何地方被阅读和更新的一种方式。如果你和我一样,你会发现自己在做纸质笔记的时候,也会使用同样的语法!


via: https://opensource.com/article/21/1/plain-text

作者:Kevin Sonney 选题:lujun9972 译者:geekpi 校对:wxy

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

如果某些事情不得不重复做三遍,尝试使其自动化。

 title=

之前写过关于社区管理员的工作,如果你问 10 位社区管理员,你会得到 12 个不同的答案。不过,大多数情况下,你做的是社区需要你在任何特定时刻做的事情。而且很多事情可能是重复的。

当我还是系统管理员时,我遵循一个规则:如果某些事必须做三遍,我会尝试使其自动化。当然,如今,使用诸如 Ansible 这样的强大工具,就有了一整套科学的方法。

我每天或每周要做的一些事情涉及在一些地方查找内容,然后生成信息的摘要或报告,然后发布到别处。这样的任务是自动化的理想选择。这些并不是什么 难事,当我与同事共享其中一些脚本时,总是至少有一个能证明这是有用的。

在 GitHub 上,我有几个每周都要使用的脚本。它们都不是很复杂,但每次都为我节省几分钟。其中一些是用 Perl 写的,因为我快 50 岁了(这些是我早些年写的)。有些是用 Python 写的,因为几年前,我决定要学习 Python。

以下是概述:

tshirts.py

这个简单的 tshirts.py 脚本会根据你要定制的活动 T 恤的数量,然后告诉你尺寸分布是什么。它将这些尺寸分布在一条正态曲线(也称为 “钟形曲线”)上,以我的经验,这和一个正常的会议观众的实际需求非常吻合。如果在美国使用,则可能需要将脚本中的值调整的稍大一些;如果在欧洲使用,则可能需要将脚本中的值稍稍缩小一些。你的情况也许不同。

用法:

[rbowen@sasha:community-tools/scripts]$ ./tshirts.py                                                                                                                                                          
How many shirts? 300
For a total of 300 shirts, order:

30.0 small
72.0 medium
96.0 large
72.0 xl
30.0 2xl

followers.py

followers.py 脚本为我提供了我关心的 Twitter 账号的关注者数量。

该脚本只有 14 行,没什么复杂的,但是它可能节省我十分钟的加载网页和查找数字的时间。

你需要编辑 feed 数组以添加你关心的帐户:

feeds = [
        'centosproject',
        'centos'
        ];

注意:如果你在英语国家以外的地方运行它,则可能无法正常工作,因为它只是一个简单的屏幕抓取脚本,它读取 HTML 并查找其中包含的特定信息。因此,当输出使用其他语言时,正则表达式可能不匹配。

用法:

[rbowen@sasha:community-tools/scripts]$ ./followers.py                                                                                                                                                                          
centosproject: 11,479 Followers
centos: 18,155 Followers

get\_meetups

get\_meetups 脚本S 另一种类别的脚本 —— API脚本。这个特定的脚本使用 meetup.com 网站的 API 来寻找在特定区域和时间范围内特定主题的聚会,以便我可以将它报告给我的社区。你所依赖的许多服务都提供了 API,因此你的脚本可以查找信息,而无需手动查找网页。学习如何使用这些 API 既令人沮丧又耗时,但是最终将获得可以节省大量时间的技能。

免责声明:meetup.com 已于 2019 年 8 月更改了他们的 API,我还没有将这个脚本更新到新的API,所以它现在实际上并没有工作。在接下来的几周内请关注此版本的修复版本。

centos-announcements.pl

centos-announcements.pl 脚本要复杂得多,而且对我的用例来说非常特殊,但你可能有类似的情况。在本例中该脚本查看邮件列表存档(centos-announce 邮件列表),并查找具有特定格式的邮件,然后生成这些邮件的报告。报告有两种不同的格式:一种用于我的每月新闻通讯,另一种用于安排 Twitter 信息(借助于 Hootsuite)。

我使用 Hootsuite 为 Twitter 安排内容,它们具有便捷的 CSV(逗号分隔值)格式,你可以一次批量安排整整一周的推文。从各种数据源(比如:邮件列表、博客、其他网页)自动生成 CSV 格式可以节省大量时间。但是请注意,这可能只应该用于初稿,然后你可以对其进行检查和编辑,以便最终不会自动发布你不想要内容的推文。

reporting.pl

reporting.pl 脚本也是相当特定的,以满足我的特殊需求,但是这个概念本身是通用的。我每月向 CentOS SIG(特殊兴趣小组)发送邮件,这些邮件计划在给定的月份报告。该脚本只是告诉我本月有哪些 SIG,并记录需要发送给他们的电子邮件。

但是,因以下两个原因,实际上并未发送该电子邮件。第一,我希望在消息发送之前对其进行编辑。第二,虽然发送电子邮件的脚本在过去很有效,但如今,很可能被当做垃圾邮件而被过滤。

总结

在这个存储库中还有一些其他脚本,这些脚本或多或少是针对我的特定需求的,但是我希望其中至少有一个脚本对你有用,并且希望这些脚本的多样性能激励你去自动化一些你自己的东西。我也希望看到你的自动化脚本存储库;在评论中链接他们!


via: https://opensource.com/article/20/3/automating-community-management-python

作者:Rich Bowen 选题:lujun9972 译者:stevenzdg988 校对:wxy

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

大家好,《新闻拍一拍》栏目已经运行了将近 9 个月了,从今天开始,这个栏目将改名为《硬核观察》。新的栏目将近距离观察开源领域和互联网技术界的新动向,并由 “Linux 中国”开源社区的创始人,也就是我 —— 硬核老王来发表辛辣点评(吐槽)。

虽然我是一名从业二十多年的互联网老兵,但是,我的观点也可能会有失偏颇,所掌握的知识也或有谬误。因此,如果有讲的不对的地方,大家尽管群嘲我~~

那么,请大家跟着我来看看今天有什么值得点评(吐槽)的事情吧。

Cookie 要被废弃,谷歌找到了更好给你推送精准广告的方法

几十年来,Cookie 一直是大多数广告商在网上锁定用户的主要方式。面对美国和欧洲对在线数据的隐私保护力度的提高,苹果和 Mozilla 等致力于使广告商更难追踪在线个人用户数据。而这招致了像谷歌、Facebook 等主要依赖数字广告收入的公司的强烈反对。

面对高达 3300 亿美元的互联网广告市场,谷歌一直在寻找一种既能保护隐私而又可以跟踪用户偏好的方式,以替代 Cookie,这就是他们在研究、测试的 联合组群学习 Federated Learning of Cohorts (FLoC)技术,这是谷歌 Chrome 浏览器内的一个浏览器扩展 API。

据谷歌说,FLoC 会使用机器学习算法来分析用户数据,然后根据个人访问的网站创建一个由数千人组成的群体。从浏览器本地收集的数据永远不会被共享。相反,共享的来自更广泛数千人群体数据,然后用于精准的定向广告。

然而,我认为,FLoC 和 Cookie 技术没有本质区别,只是在去隐私化方面做的更好一些罢了,本质上还是广告商的立场。

《自然》杂志评选出改变科学的 10 个计算机代码项目

如今的科学研究已经大量的依赖于计算机硬件和软件。近日,《自然》(Nature)杂志评选出了这几十年来改变科学研究的 10 个关键的计算机项目

  • 语言先驱:Fortran 编译器(1957 年)
  • 信号处理器:快速傅立叶变换 FFT(1965 年)
  • 分子编目:生物数据库(1965 年)
  • 预测领先者:大气环流模式(1969 年)
  • 数字运算机:BLAS(1979 年)
  • 显微镜必备:NIH Image(1987 年)
  • 序列搜索器:BLAST(1990 年)
  • 预印本平台:arXiv.org(1991 年)
  • 数据浏览器:IPython Notebook (2011 年)
  • 快速学习器:AlexNet(2012 年)

原本是用于科学研究的计算机及互联网已经遍及我们的生活各个角落。但作为一个互联网技术人员,我觉得如果是由计算机和互联网从业人员来评选 10 个最重要的计算机代码项目,可能和这个名单会相差很多。

Mozilla 希望让社区接管 MDN 后续的维护工作

在去年底 Mozilla 的大裁员中,很多非常有价值的项目要么被裁员,要么被分家出去。这其中除了 Rust 语言、Servo 浏览器引擎之外,还有一个非常重要的项目团队也被整个裁撤了,这就是 Mozilla 开发者网络(MDN)。对于 Web 开发者来说,MDN 文档是非常有用而权威的资源。Mozilla 随后将所有的 MDN 文档都放到了 Github 上。

现在,Mozilla 宣布成立 Open Web Docs 组织(OWD)来让社区接手该文档的维护。OWD 得到了微软、谷歌等的支持,包括资金的支持。

当然,这个项目也非常欢迎个人贡献者参与和成为支持者。大家感兴趣的可以去看看,有钱的出钱,有力的出力,哪怕只是几美金。

本文是 Python 之禅特别系列的一部分,重点此篇着眼于第七、八、九条原则:可读性、特殊情况和实用性。

 title=

软件开发是一门充满了取舍的学科。每一个选择,都有一个同样合理但相反的选择。将一个方法私有化?你在鼓励复制粘贴。将一个方法公开?你在过早地对一个接口做出承诺。

软件开发者每时每刻都在做艰难的选择。虽然 Python 之禅 中的所有原则都在一定程度上涵盖了权衡,但下面的原则对一些权衡进行了最艰难、最冷酷的审视。

可读性很重要 Readability counts

从某种意义上说,这一中间原则确实是整个 Python 之禅的中心。这条原则与编写高效的程序无关。在大多数情况下,它甚至与编写健壮的程序也无关。它讲的是编写出别人能读懂的程序

阅读代码,就其本质而言,发生在代码被添加到系统中之后。通常,它会发生在很久很久以后。忽略可读性是最简单的选择,因为它对现在没有伤害。无论添加新代码的原因是什么,它都会对现在造成影响,无论是一个令人痛苦的 bug 还是一个被强烈要求的功能。

如果面对巨大的压力,把可读性扔到一边,只管“解决问题”,而 Python 之禅提醒我们:可读性很重要。编写代码让它适合阅读,无论是对自己还是他人,都是一种慈悲。

特殊情况不足以违反规则 Special cases aren't special enough to break the rules

总是有各种借口:这个 bug 特别麻烦,先简单处理一下吧;这个功能特别紧急,别管美观了;这种情况下所涉及的领域规则特别复杂,嵌套深点也没关系。

一旦我们对特例的借口妥协,大坝就会破裂,就丧失了原则;事情就会演变成一个疯狂麦克斯的荒诞症,每个程序员都会为自己试图找到最好的借口。

纪律需要承诺。只有当事情艰辛、有强烈的诱惑时,才是对一个软件开发人员的考验。总是有合理的借口来破坏规则,这就是为什么必须坚守规矩的原因。纪律就是向例外说不的艺术。没有任何解释可以改变这一点。

虽然,实用性胜过纯洁性 Although, practicality beats purity

“如果你只想着击打、弹跳、撞击、触碰敌人,你将无法真正打倒他。” —— 《宫本武藏:水之卷

归根结底,软件开发是一门实用的学科。它的目标是解决真实的人所面临的实际问题。实用性比纯粹性更重要:首先,我们必须解决问题。如果我们只考虑可读性、简单性或美观性,我们将无法真正解决问题

正如宫本武藏所说的,每一次代码修改的首要目标应该是解决问题。这个问题需要我们心心念念地去解决它。如果我们不以解决问题为目标,只想着 Python 之禅,我们就辜负了这些原则。这是 Python 之禅所固有的另一种矛盾。


via: https://opensource.com/article/19/12/zen-python-trade-offs

作者:Moshe Zadka 选题:lujun9972 译者:wxy 校对:wxy

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

测算网站的文本和背景之间的对比度,以确保站点易于阅读。

如果希望人们发现你的网站实用,那么他们需要能够阅读它。为文本选择的颜色可能会影响网站的可读性。不幸的是,网页设计中的一种流行趋势是在打印输出文本时使用低对比度的颜色,就像在白色背景上的灰色文本。对于 Web 设计师来说,这也许看起来很酷,但对于许多阅读它的人来说确实很困难。

W3C 提供了《 Web 内容可访问性指南 Web Content Accessibility Guidelines 》,其中包括帮助 Web 设计人员选择易于区分文本和背景色的指导。z这就是所谓的“ 对比度 contrast ratio ”。 W3C 定义的对比度需要进行一些计算:给定两种颜色,首先计算每种颜色的相对亮度,然后计算对比度。对比度在 1 到 21 的范围内(通常写为 1:1 到 21:1)。对比度越高,文本在背景下的突出程度就越高。例如,白色背景上的黑色文本非常醒目,对比度为 21:1。对比度为 1:1 的白色背景上的白色文本不可读。

W3C 说,正文 的对比度至少应为 4.5:1,标题至少应为 3:1。但这似乎是最低限度的要求。W3C 还建议正文至少 7:1,标题至少 4.5:1。

计算对比度可能比较麻烦,因此最好将其自动化。我已经用这个方便的 Bash 脚本做到了这一点。通常,脚本执行以下操作:

  1. 获取文本颜色和背景颜色
  2. 计算相对亮度
  3. 计算对比度

获取颜色

你可能知道显示器上的每种颜色都可以用红色、绿色和蓝色(R、G 和 B)来表示。要计算颜色的相对亮度,脚本需要知道颜色的红、绿和蓝的各个分量。理想情况下,脚本会将这些信息读取为单独的 R、G 和 B 值。 Web 设计人员可能知道他们喜欢的颜色的特定 RGB 代码,但是大多数人不知道不同颜色的 RGB 值。作为一种替代的方法是,大多数人通过 “red” 或 “gold” 或 “maroon” 之类的名称来引用颜色。

幸运的是,GNOME 的 Zenity 工具有一个颜色选择器应用程序,可让你使用不同的方法选择颜色,然后用可预测的格式 rgb(R,G,B) 返回 RGB 值。使用 Zenity 可以轻松获得颜色值:

color=$( zenity --title 'Set text color' --color-selection --color='black' )

如果用户(意外地)单击 “Cancel(取消)” 按钮,脚本将假定一种颜色:

if [ $? -ne 0 ] ; then
        echo '** color canceled .. assume black'
        color='rgb(0,0,0)'
fi

脚本对背景颜色值也执行了类似的操作,将其设置为 $background

计算相对亮度

一旦你在 $color 中设置了前景色,并在 $background 中设置了背景色,下一步就是计算每种颜色的相对亮度。 W3C 提供了一个算法 用以计算颜色的相对亮度。

对于 sRGB 色彩空间,一种颜色的相对亮度定义为:

L = 0.2126 * R + 0.7152 * G + 0.0722 * B

R、G 和 B 定义为:

if R sRGB​ <= 0.03928 then R = R sRGB​/12.92

else R = ((R sRGB​+0.055)/1.055) 2.4

if G sRGB​ <= 0.03928 then G = G sRGB​/12.92

else G = ((G sRGB​+0.055)/1.055) 2.4

if B sRGB​ <= 0.03928 then B = B sRGB​/12.92

else B = ((B sRGB​+0.055)/1.055) 2.4

R sRGB​、G sRGB​ 和 B sRGB​ 定义为:

R sRGB​ = R 8bit​/255

G sRGB​ = G 8bit​/255

B sRGB​ = B 8bit​/255

由于 Zenity 以 rgb(R,G,B) 的格式返回颜色值,因此脚本可以轻松拉取分隔开的 R、B 和 G 的值以计算相对亮度。AWK 可以使用逗号作为字段分隔符(-F,),并使用 substr() 字符串函数从 rgb(R,G,B) 中提取所要的颜色值:

R=$( echo $color | awk -F, '{print substr($1,5)}' )
G=$( echo $color | awk -F, '{print $2}' )
B=$( echo $color | awk -F, '{n=length($3); print substr($3,1,n-1)}' )

有关使用 AWK 提取和显示数据的更多信息,查看 AWK 备忘表

最好使用 BC 计算器来计算最终的相对亮度。BC 支持计算中所需的简单 if-then-else,这使得这一过程变得简单。但是由于 BC 无法使用非整数指数直接计算乘幂,因此需要使用自然对数替代它做一些额外的数学运算:

echo "scale=4
rsrgb=$R/255
gsrgb=$G/255
bsrgb=$B/255
if ( rsrgb <= 0.03928 ) r = rsrgb/12.92 else r = e( 2.4 * l((rsrgb+0.055)/1.055) )
if ( gsrgb <= 0.03928 ) g = gsrgb/12.92 else g = e( 2.4 * l((gsrgb+0.055)/1.055) )
if ( bsrgb <= 0.03928 ) b = bsrgb/12.92 else b = e( 2.4 * l((bsrgb+0.055)/1.055) )
0.2126 * r + 0.7152 * g + 0.0722 * b" | bc -l

这会将一些指令传递给 BC,包括作为相对亮度公式一部分的 if-then-else 语句。接下来 BC 打印出最终值。

计算对比度

利用文本颜色和背景颜色的相对亮度,脚本就可以计算对比度了。 W3C 确定对比度 是使用以下公式:

(L1 + 0.05) / (L2 + 0.05),这里的 L1 是颜色较浅的相对亮度, L2 是颜色较深的相对亮度。

给定两个相对亮度值 $r1$r2,使用 BC 计算器很容易计算对比度:

echo "scale=2
if ( $r1 > $r2 ) { l1=$r1; l2=$r2 } else { l1=$r2; l2=$r1 }
(l1 + 0.05) / (l2 + 0.05)" | bc

使用 if-then-else 语句确定哪个值($r1$r2)是较浅还是较深的颜色。BC 执行结果计算并打印结果,脚本可以将其存储在变量中。

最终脚本

通过以上内容,我们可以将所有内容整合到一个最终脚本。 我使用 Zenity 在文本框中显示最终结果:

#!/bin/sh
# script to calculate contrast ratio of colors

# read color and background color:
# zenity returns values like 'rgb(255,140,0)' and 'rgb(255,255,255)'

color=$( zenity --title 'Set text color' --color-selection --color='black' )
if [ $? -ne 0 ] ; then
        echo '** color canceled .. assume black'
        color='rgb(0,0,0)'
fi

background=$( zenity --title 'Set background color' --color-selection --color='white' )
if [ $? -ne 0 ] ; then
        echo '** background canceled .. assume white'
        background='rgb(255,255,255)'
fi

# compute relative luminance:

function luminance()
{
        R=$( echo $1 | awk -F, '{print substr($1,5)}' )
        G=$( echo $1 | awk -F, '{print $2}' )
        B=$( echo $1 | awk -F, '{n=length($3); print substr($3,1,n-1)}' )

        echo "scale=4
rsrgb=$R/255
gsrgb=$G/255
bsrgb=$B/255
if ( rsrgb <= 0.03928 ) r = rsrgb/12.92 else r = e( 2.4 * l((rsrgb+0.055)/1.055) )
if ( gsrgb <= 0.03928 ) g = gsrgb/12.92 else g = e( 2.4 * l((gsrgb+0.055)/1.055) )
if ( bsrgb <= 0.03928 ) b = bsrgb/12.92 else b = e( 2.4 * l((bsrgb+0.055)/1.055) )
0.2126 * r + 0.7152 * g + 0.0722 * b" | bc -l
}

lum1=$( luminance $color )
lum2=$( luminance $background )

# compute contrast

function contrast()
{
        echo "scale=2
if ( $1 > $2 ) { l1=$1; l2=$2 } else { l1=$2; l2=$1 }
(l1 + 0.05) / (l2 + 0.05)" | bc
}

rel=$( contrast $lum1 $lum2 )

# print results

( cat<<EOF
Color is $color on $background

Contrast ratio is $rel
Contrast ratios can range from 1 to 21 (commonly written 1:1 to 21:1).

EOF

if [ ${rel%.*} -ge 4 ] ; then
        echo "Ok for body text"
else
        echo "Not good for body text"
fi
if [ ${rel%.*} -ge 3 ] ; then
        echo "Ok for title text"
else
        echo "Not good for title text"
fi

cat<<EOF

W3C 说明:

1.4.3 对比度(最小值):文本和文本图像的视觉呈现方式的对比度至少为 4.5:1,但以下情况除外:(AA 级)

    大文本:大文本和大文本图像的对比度至少为 3:1;

    附带说明:作为非活动用户界面组件一部分,纯装饰的,任何人都不可见或图片的一部分包含特定的其他可视内容的文本或文本图像没有对比度要求。

    小示意图:徽标或商标名称中的文本没有最低对比度要求。

1.4.6 对比度(增强):文本和文本图像的视觉表示具有至少 7:1 的对比度,但以下情况除外:(AAA 级)

    大文本:大文本和大文本图像的对比度至少为 4.5:1;

    附带说明:作为非活动用户界面组件一部分,纯装饰的,任何人都不可见或图片的一部分包含特定的其他可视内容的文本或文本图像没有对比度要求。
 
    小示意图:徽标或商标名称中的文本没有最低对比度要求。
EOF
) | zenity --text-info --title='Relative Luminance' --width=800 --height=600

最后,我希望提供有关 W3C 建议的参考信息,以提醒自己。

Zenity 颜色选择器完成了所有解释颜色的艰苦工作,用户可以通过单击色轮或输入值来选择颜色。 Zenity 接受网站上使用的标准十六进制颜色值,例如 #000000#000rgb(0,0,0)(所有这些均为黑色)。这是白色背景上的黑色文本的示例计算:

Zenity 还识别标准的颜色名称,如“cadetblue”、“orange”或“gold”。在Zenity 中输入颜色名称,然后点击 Tab 键,Zenity 会将颜色名称转换为十六进制颜色值,如以下示例中对金色背景上的黑色文本的计算:


via: https://opensource.com/article/19/2/make-websites-more-readable-shell-script

作者:Jim Hall 选题:lujun9972 译者:stevenzdg988 校对:wxy

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