2020年3月

可能很多同学注意到了,我们的公众号文章前一段时间悄悄的变化了一些版式,最明显的就说各级标题从原来的渐变色条状变成了如今的样式:居中,无底色,以图标做分隔。喏,就是这样的:

这是一个示例的一级标题哈

这里可能有细心的同学会发现,这个图标是会动的,而且是一个“俄罗斯方块”游戏。是的,其实这个图标的原型来自于我之前给 Linux 中国设计的新徽标——当时还举办过徽标征集大赛,只是后来大家都觉得老的徽标更适应,所以没有更换。

不过我个人是挺喜欢这个样式的,所以这里就将它引入进来做标题图标了。

最初是将一个静态的 PNG 图片放到这里的,大家可以注意到开始有几天的公众号文章里面是用的静态的图标;然后几天后,我突然有了一些童心,觉得既然是模仿“俄罗斯方块”游戏的风格,为什么不能动起来呢?

说实在的,老王我是真没有动画基础,哦不,连美工基础都没有。虽然我能用一些软件拼凑出一些简单的洋葱头动画,但是要做到比较复杂和较多的帧数,那么动画 GIF 文件就会比较大。

正好我还会一点点 AI,于是用 AI 重新绘制了这个图标,并导出了 SVG 文件——我知道,这是纯文本的。然后我就可以用我心爱的文本编辑器(你猜是什么编辑器)打开直接修改代码了。

用编辑器打开后,啊哦,这里的数字都很不精确啊——不,很精确啊,都保留了小数点后好多位呢。有点强迫症的我给它们归并到一个比较舒服的整数和倍数上。

然后,怎么动起来呢?没学过,只能现去网上学习 SVG 动画的指令,一边看着别人做的极炫的动画流口水,一边反复地试错。

终于,能自己动了。但是又发现,这动画真是一帧一个状态啊,怎么计算呢?这个时候感觉自己的脑力不够了,于是就找张纸开始画分镜头图,反反复复地画了好几张。这是最终定稿的一张,就这也经过了大量涂改。

然后,最终的 SVG 代码大概是这样的:

虽然我还想加入一些更有趣的变化,比如旋转方向什么的,但是会搞得太复杂了。总之,这是老王第一次做 SVG 动画,肯定有很多浅陋之处,贻笑大方了。

最后,说一句,分镜头真的很痛苦,要一个个数据计算,一个数据错了,后面全错了。

顺便,这个 SVG 文件可以在这里下载: https://linux.cn/static/image/common/linux-logo-2019-t.svg

转换文本的大小写可能非常繁琐,尤其是当你要避免无意间的拼写错误时。幸运的是,Linux 提供了一些命令,可以使工作变得非常容易。

有很多方法可以在 Linux 命令行中将文本从小写更改为大写,反之亦然。实际上,有一组这样的命令可以选择。这篇文章检验了一些最佳的命令来完成这项工作,以及你该如何让它们正常工作。

使用 tr

tr(translate)命令是在命令行或脚本中最容易使用的命令之一。如果你要确定要一串大写字符串,你只需将它传给 tr,如下所示:

$ echo Hello There | tr [:lower:] [:upper:]
HELLO THERE

下面是一个在脚本中使用这个命令的例子,当你要确保添加到文件中的所有文本都使用大写形式以保持一致性时(LCTT 译注:这里输入部门名称作为示例):

#!/bin/bash

echo -n "Enter department name: "
read dept
echo $dept | tr [:lower:] [:upper:] >> depts

将顺序切换为 [:upper:] [:lower:] 会产生相反的效果,将所有大写的部门名称都转换为小写:

echo $dept | tr [:upper:] [:lower:] >> depts

同样,你可以使用 sed 命令的 A-Za-z 字符串完成相同的操作:

echo $dept | tr a-z A-Z >> depts

毫无疑问,反转 a-zA-Z 字符串的顺序将产生相反的效果,将文本全部变为小写。

使用 awk

awk 命令可让你使用它的 touppertolower 选项执行相同的操作。上例脚本中的命令可以用这种方式代替:

echo $dept | awk '{print toupper($0)}' >> depts

相反操作(切换为小写)如下所示:

echo $dept | awk '{print tolower($0)}' >> depts

使用 sed

sed(stream editor)命令也可用于切换大小写。它与上面显示的两个命令中的第一个具有相同的效果。

echo $dept | sed 's/[a-z]/\U&/g' >> depts

从大写字母切换到小写字母只需将行尾附近的 U 替换为 L

echo $dept | sed 's/[A-Z]/\L&/g' >> depts

操作文件中的文本

awksed 都能更改整个文件的文本大小写。因此,你发现你的老板需要所有部门名称的小写么?没问题。只需带上文件名运行以下命令:

$ awk '{print tolower($0)}' depts
finance
billing
bookkeeping

如果要覆盖 depts 文件,而不仅仅是以小写形式显示,则需要执行以下操作:

$ awk '{print tolower($0)}' depts > depts-
$ mv depts- depts

但是,使用 sed 进行更改,你可以避免最后一步,因为 sed 可以“原地”编辑文件,如下所示,文件完整,但文本全部小写:

$ sed 's/[A-Z]/\L&/g' depts

仅将首字母转换为大写

要仅将字符串中单词的首字母转换为大写,那么可以执行以下操作:

$ echo design \& engineering| sed -e "s/\b\(.\)/\u\1/g"
Design & Engineering

该命令将确保首字母大写,但不会更改其余字母。

确保只有首字母大写

当要更改文本以使只有首字母大写时,这更具挑战性。假设你正在处理一个工作人员姓名列表,并且希望以正常的“名 姓”方式对其格式化。

使用 sed

你可以使用更复杂的 sed 命令来确保以下结果:

$ echo design \& ENGINEERING | sed 's/\b\([[:alpha:]]\)\([[:alpha:]]*\)\b/\u\1\L\2/g'
Design & Engineering

使用 Python

如果你已安装 Python,你可以运行这样的命令,它还可以设置文本格式,以便每个单词只有首字母大写,并且它可能比上面显示的 sed 命令更易于解析:

$ echo -n "design & engineering" | python3 -c "import sys; print(sys.stdin.read().title())"
Design & Engineering

有多种方法可以在大小写之间更改文本格式。哪种方法效果最好取决于你要处理的是单个字符串还是整个文件,以及想要的最终结果。


via: https://www.networkworld.com/article/3529409/converting-between-uppercase-and-lowercase-on-the-linux-command-line.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:geekpi 校对:wxy

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

Signal 作为一款私人通信应用,正在变得愈发流行。而我们下面要介绍开源应用 Session 则是 Signal 的一个 复刻 fork ,它的一大亮点是并不需要提供手机号码即可以开始使用。

Session:一款真正意义上的私人通信应用

对于私人通信服务来说,有没有既能保护通信安全性,又尊重用户跨平台隐私的集大成者呢?很多注重个人隐私的用户似乎都在寻找这个问题的答案。

最近,我留意到 Loki 基金会开发的一款叫做 Session 的开源通信应用。从技术上来说,Session 是另一款开源、加密的通信应用 Signal 的一个复刻。

在本文中,我会讲述我自己使用 Session 的体验,以及 Session 的一些主要功能。

Session 在这个领域中算是一款比较新的应用了,因此我还会在文章的最后提到它的一些不足之处。

Session 的一些主要功能

接下来我会重点介绍 Session 的主要功能,可以供你参考这款应用是否值得使用。

Session 的使用过程中不需要提供手机号码

在 Signal 或者其它类似的通信应用中,用户都需要提供手机号码才得以成功注册。注重隐私的用户们都认为这样的做法会潜藏着巨大的安全隐患。

而使用 Session 则简单得多。在 PC 或手机上安装应用之后,只需要点击“ 创建账号 Create Account ”,无须提供手机号码,它就会生成一个类似 05652245af9a8bfee4f5a8138fd5c….. 这样的随机且唯一的 Session ID。

此后,把 Session ID 分享给想要添加的联系人就可以了。Session 还支持二维码,其他人可以通过扫描二维码添加你的 Session ID 为好友。

Session 使用了区块链等加密技术

Session ID

区块链有所了解的用户都很期待区块链能为普罗大众做出什么有实际意义的应用,而 Session 可以算得上其中一个。尽管 Session 的核心是基于区块链的,但普通用户在使用时并不需要真正弄懂区块链。

如果你好奇它的工作原理,可以参考这篇官方的博客文章,里面有相关的解释。

跨平台支持

这样严格保护隐私的应用,是否能在不同平台上使用?

答案是肯定的。首先,它支持 Linux 和 Android 平台,同时也支持 Windows/Mac/iOS 平台。因此跨平台、跨设备的消息同步是没有问题的。

包含基本隐私选项

毫无疑问,基本的隐私功能是必须有的,这是作为一个以安全为卖点的应用所必备的体验。

最基本的选项包括:

  • 消息有效期:你可以控制一条消息在接收者阅读前的保留时长
  • 已读回执:消息发送者可以知晓你已经阅读该消息

Session 使用去中心化网络保护你的元数据

尽管 Session 不使用 端对端 peer-to-peer 技术,但它也不使用中心化的服务器。

Session 采用了去中心化的架构实现消息的传输和路由。如果你不熟悉这方面的内容,可以关注 Session 的官方博客,尝试了解中心化网络和去中心化网络的区别,以及它的实际工作原理。

同时,这样的网络架构还有助于保护诸如与 IP 地址相关的信息等元数据。

其它功能

除了专注于隐私之外,Session 也支持群聊、语音消息、发送附件等通信应用的基本功能。

在 Linux 上安装 Session

官方下载页面中可以下载到对应的 .AppImage 文件。如果你不了解这个文件的使用方法,可以查阅我们的相关文章

另外,你也可以在它的 Github 发布页面 获取到对应的 .deb 安装文件。

我使用 Session 的体验

我在各种平台上都试用过 Session,其中在 PC 上我使用了 Pop!\_OS 19.10 的 .AppImage 文件运行这个应用。

总的来说,使用的体验很不错,用户界面也没有出现问题。

在设置中备份了密码(也称为 种子 seed )后,可以很方便地恢复账号。

当然,我也发现了一些需要改进的地方:

  • 在接受好友请求时会出现延迟
  • 设备间连接的方式不太直观
  • 当你在不同的设备上使用同一个 Session ID 向同一个人回复消息时,对方会收到两个不同的对话

总结

当然,最完美的事物是不存在的。我也会一直使用 Session 并考虑它发展的方向,这是一个注重隐私的用户应该做的事情。

欢迎在评论区发表你的看法。


via: https://itsfoss.com/session-messenger/

作者:Ankush Das 选题:lujun9972 译者:HankChow 校对:wxy

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

这个 Android 应用可在掌中计算许多高级数学函数。

移动电话每天都在变得越来越强大,因此毫不奇怪它们可以击败不太久前的大多数计算机。这也意味着移动手机上的工具每天都在变得越来越强大。

之前,我写过一篇 两款 Linux 桌面端可用的科学计算器,我接着将介绍 Calculator N+,这是一款很棒的适用于 Android 设备的计算机代数系统(CAS)应用,采用 GPL v3.0 许可证下。

Calculator N+ 被认为是“适用于 Android 的强大计算器”,但这是一个谦虚的说法。它不仅可以以任意精度工作,还可以显示根数和分数等很多功能。

寻找多项式根?可以。分解因数?可以。导数、积分和极限?可以。数论(模算术、组合学、素因数分解)?可以。

你还可以求解方程系统、简化表达式(包括三角函数)、转换单位,只要你想到的,它都能做!

 title=

其结果以 LaTeX 输出。左上方的菜单提供了许多强大的功能,只需触摸一下即可使用。同样在该菜单中,你将找到该应用所有功能的帮助文件。在屏幕的右上角,你可以在精确表示法和十进制表示法之间切换。最后,点击屏幕底部的蓝色栏,即可访问应用中的所有函数库。不过要小心!如果你不是数学家、物理学家或工程师,那么这么长的列表会看上去很吓人。

所有这些功能都来自 Symja 库,这是另一个出色的 GPL 3 项目。

这两个项目都处于积极开发中,并且每个版本都在不断完善。特别是,Calculator N+ 的 v3.4.6 在用户界面(UI)品质方面取得了重大飞跃。虽然还是存在一些不够好的地方,但是要在智能手机的小巧的用户界面中发挥如此强大的功能是一项艰巨的任务,我认为应用开发人员正在很好地解决其剩余的问题。对他们表示敬意!

如果你是老师、学生或在理工科领域工作,请试试 Calculator N+。它是免费、无广告、开源的,并可以满足你所有的数学需求。(当然,除了数学考试期间,为防止作弊绝对不允许使用智能手机。)

可以在 Google Play 商店找到 Calculator N+,也可以使用 GitHub 页面上的说明从源代码构建

如果你知道用于科学或工程的其他有用的开源应用,请在评论中告知我们。


via: https://opensource.com/article/19/11/calculator-n-mobile

作者:Ricardo Berlasso 选题:lujun9972 译者:geekpi 校对:wxy

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

Linux 与 Windows 10 相比的一个优势是它更安全,但是 Linux 系统并不是绝对可靠的, 美国国家标准技术研究院 National Institute of Standards and Technology (NIST)的 国家漏洞数据库 National Vulnerability Database (NVD)的最新数据似乎证实了这一点。

Windows 中的安全缺陷更少

根据其数据,在 1999 - 2019 年期间,Debian Linux 是所有操作系统中带有安全漏洞最多的一个。在此期间,在 Debian Linux 中报告了 3067 个漏洞,在 Ubuntu 中报告了 2007 个漏洞。另一方面,Windows 7 受到了 1283 个漏洞的困扰,在 Windows 10 中才发现了 1111 个漏洞。

从历史上看,Windows 并不是为安全而设计的,但是从 Windows XP 开始微软更加重视 Windows 的安全性,在 Windows XP 中就包括了各种安全功能和强大的防火墙。为了应对日益增长的安全性问题,微软还开始给 Windows 更新更多的安全性和隐私功能,但是 Windows 的一个主要目标仍然是为大多数个人和商用计算机提供了动力。

另外,对于更早的 Windows 7 而言这个数字实际上要低于 Windows 10。例如,在 2019 年,Windows 7 中发现了 250 个安全缺陷,而 Windows 10 中发现了 357 个安全缺陷。

重要的是要知道,计算机上的许多漏洞都是由硬件组件(例如芯片组和驱动程序)引起的,而不是由操作系统本身引起的。 许多 Windows 漏洞都是针对企业的,因此,某些漏洞可能不会对最终用户造成不良影响。

不过,值得注意的是,Debian Linux 表示其社区通常会在几天内修复该漏洞。另一方面,Windows 用户有时必须等待一个月。

整体微软产品线安全缺陷最多

但是回溯这整整 20 年来看,这些数据所描述的景象更加完整。在查看整个公司的产品时,微软产品的安全缺陷比任何其他公司都要多。自 1999 年以来,微软产品总共发现了 6814 个漏洞。以下是前 5 名:

  1. 微软:6814 个安全缺陷
  2. 甲骨文:6115 个安全缺陷
  3. IBM:4679 个安全缺陷
  4. 谷歌:4572 个安全缺陷
  5. 苹果:4512 个安全缺陷

Android 的安全缺陷数量持续霸榜

近年来,在所有技术产品中,安全缺陷数量逐年保持稳定高位的是谷歌的 Android 操作系统。根据该数据报告,Android 在 2019 年、2017 年和 2016 年是所有操作系统中安全缺陷最多的一个。只有在 2018 年,Android 才从冠军席位上临时掉下来一次,当年 Debian GNU/Linux 的安全缺陷更多。在 2019 年,Android 凭借着 414 个安全缺陷位居榜首,而 Debian Linux 以 360 个安全缺陷“夺得”亚军,而 Windows 10/Windows Server 2016&2019 以 357 个安全缺陷“屈居”季军。

以下是历年来安全缺陷最多的产品:

也许最令人担忧的趋势是,随着操作系统和其他软件产品变得越来越复杂,漏洞在最近 20 年中才有所增加。1999 年,仅报告了 894 个技术漏洞。而在 2019 年报告了 12174 个技术漏洞,增长了 14 倍以上。

不过,对此数据的解读,Android 发言人发表了以下声明:

“我们致力于提高透明度,并每月发布有关 Android 中已解决的问题的公共安全公告,以加强生态系统的安全性。我们不同意这样的观点,即衡量操作系统中已解决的安全问题的数量来表示平台的安全性。这实际上是 Android 生态系统按预期工作的开放性的结果。”

Ref:softpedia.comfastcompany.comwindowslatest.com

这些主意都用到了有关的开源技巧。

人们可以做些什么来拯救地球?这个问题可能会让人感到压抑,因为有时我们感觉个人可以做的贡献太少了。但是作为地球公民,我们从来不是一个人。所以,我向我们的作家社区征集了一些开源软件或硬件可以帮助改变现状的方法。以下是他们的回复。

九种利用开源的方法来拯救地球的方式

1、在你的终端禁用闪烁的光标

这听起来可能有点傻,但是那个无关紧要的闪烁的光标可能导致每小时两瓦特的额外电力开销。如果要禁用光标闪烁,可以通过更改终端设置: 编辑 Edit > 偏好设置 Preferences > 光标 Cursor > 光标闪烁 Cursor blinking > 禁用 Disabled

由 Mars Toktonaliev 推荐

2、减少有关动物产品和加工食物的消费

这样做的一种方法是在你的手机中添加这些开源的 App:Daily Dozen、OpenFoodFacts、OpenVegeMap 和 Food Restrictions。这些 App 可以帮助你准备一份健康的素食饮食计划,为你找到素食主义者和严格素食主义者可以就餐的餐厅,还可以帮助你把你的饮食需求告诉别人,即使他们不和你讲同一种语言。如果想要了解更多有关这些的 App 的信息,你可以阅读《4 款“吃草”的开源应用》。

由 Joshua Allen Holm 推荐

3、让旧电脑重焕新生

怎么做?当然是用 Linux。通过给那些自己得不到新电脑的人创造一台新电脑来传递爱心,同时也可以避免让这台电脑进到垃圾填埋场。可以在 The Asian Penguins 看看我们是怎么做的。

由 Stu Keroff 推荐

4、在你不使用设备时关闭它们

你可以使用带有主插座和控制插座的“智能插座板”。把你的电脑连接到主插座上,这样的话当你打开电脑时所有你连接到控制插座上的设备如显示器,打印机等也都会打开。一个更简单的、技术含量更低的方法是使用一个带有计时器的插座板。我在家里就是用的这个。你可以用计时器上的开关设定一个定时开关电源的时间表。这样可以在没有人在家时自动关闭网络打印机。或者以我的用了六年的笔记本电脑为例,我通过一个交替使用外接电源(插座打开)和使用电脑电池(插座关闭)的电源计划延长了电脑电池的寿命。

由 Jim Hall 推荐

5、减少供暖通风系统(HVAC)的使用

在夏天,透过窗户的阳光可以为室内提供很多热量。使用 Home Assistant 可以基于一天中的时间的,甚至是基于太阳高度角自动调节窗帘和遮阳棚。

由 Michael Hrivnak 推荐

6、出门就把恒温器关闭或调低

如果你的家用恒温器具有“离开”功能,你很容易忘记在出门时启用它。借助自动化,任何连接到网络的恒温器都可以在你不在家时自动节省能量。Stataway 就是一个这样项目。它通过调用你的手机的 GPS 坐标来决定是将你的恒温器设置为“在家”还是“离开”。

由 Michael Hrivnak 推荐

7、为未来储蓄算力

我有一个主意:创建一个可以读取可选的能量阵列(如风能或太阳能)的输出的脚本。这个脚本应该将计算集群中的服务器从睡眠模式更改为激活模式,直到过量的电能(超出可以储存的部分)被用尽。然后在高产能时段使用这些过量的电能来进行需要大量计算的项目,比如渲染。这个过程本质应该是免费的,因为使用的能量无法被储存起来挪作它用。我相信现有的监控、能量管理和服务器阵列工具一定可以实现这个功能。那么剩下的只是一些整合上的问题,就可以让整个系统工作起来。

由 Terry Hancock 推荐

8、关掉你的灯

根据 人工夜空亮度图集 World Atlas of Artificial Night Sky Brightness 的说法,光污染影响了全世界超过 80% 的人口。这一结论在 2016 年(遵循 CC-NC 4.0 协议)发表在公开访问的期刊《 科学进展 Science Advances 》上。关闭外部照明是一个可以使野生生物、人类健康受益并让我们享受夜晚的天空的快速途径,而且可以减少能量消耗。访问 darksky.org 来查看更多减少外部照明影响的方法。

由 Michael Hrivnak 推荐

9、减少你的 CPU 数量

就我个人而言,我记得我以前有很多在地下室运行的电脑作为我的 IT 游乐场/实验室。我现在对于能源消耗更加注意了,所以确实大大地减少了我的 CPU 数量。我现在更喜欢利用虚拟机、区域和容器等技术。另外,我很高兴有小型电脑和 SoC 电脑这种东西,比如树莓派,因为我可以用一台这样的电脑做很多事情,比如运行一个 DNS 或者 Web 服务器,而无需使整个屋子变热并积累昂贵的电费账单。

P.S. 这些电脑都运行于 Linux、FreeBSD,或者 Raspbian 系统!

由 Alan Formy-Duvall 推荐


via: https://opensource.com/article/19/4/save-planet

作者:Jen Wike Huger 选题:lujun9972 译者:MFGJT 校对:wxy

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