2020年9月

你家的智能咖啡机可能会被黑

安全公司 Avast 的研究员 Martin Hron 发现 Smarter 公司的联网智能咖啡机与智能手机应用之间的连接是没有加密的,没有身份验证,没有代码验证,最新的固件就储存在手机应用,可以很容易导出进行逆向工程。利用这些漏洞,他能触发咖啡机打开燃烧器,出水,启动磨豆机,显示勒索信息,让咖啡机重复发出哔哔的声音。唯一阻止这一切混乱的方法是拔掉电源插头。

来源:solidot

拍一拍:越来越多的智能产品,可是安全却没有跟上,这有可能带来意想不到的负面后果。

Emacs 开发者讨论如何构建更“现代”的 Emacs

开发者认为需要做一些“看得见”的改变让现有的功能更容易接近用户。比如采用更中心化的方法管理颜色主题。改变键盘按键与鼠标绑定方式。Emacs 原作者 Richard Stallman 认为改变基本按键绑定去模仿较新的编辑器是不可取的,将创造一个 Emacs 用户永远不会切换过去的新编辑器。鼠标行为的情况与之类似。Stallman 建议提供一个“重组模式”。他指出现有的鼠标行为是源自 1990 年左右的 X Windows 标准。他不想太仓促,但现在是时候去更新了。

来源:solidot

拍一拍:在讨论了如何让 Emacs 再次流行起来之后,正在准备 Emacs 28 的开发者又热烈讨论如何构建更“现代”的 Emacs。

EdX 的“Linux 入门”免费课程注册人数突破一百万

该课程帮助学生使用图形界面和命令行在主要的 Linux 发行系列中学习 Linux 知识。该课程不需要任何知识或经验,因此对于有兴趣从事 IT 行业的个人来说,该课程是受欢迎的第一步。edX 创始人表示,“这是 Linux 基金会的第一个产品,是我们有史以来最受欢迎的十大课程之一。”

来源:Linux 基金会

拍一拍:可喜可贺,Linux 的普及了这么多人了!

对华为、中兴的禁令意味着无线运营商建设 5G 服务的选择减少了。

随着运营商竞相建设他们的 5G 网络,由于美国联邦政府的压力,在美国购买所需设备的选择比其他国家少,这可能会减缓部署。

在 2018 年的《国防授权法案》中,总部位于中国的华为和中兴通讯都被禁止向美国政府提供设备,此后不久又全面禁止进口。这极大地改变了竞争格局,并引发了美国 5G 的形态可能因此而改变的问题。

Gartner 的分析师 Michael Porowski 表示,虽然还不完全清楚,但运营商可以在哪里购买 5G 设备的限制有可能会减缓部署速度。

他说:”供应商数量仍然很多:爱立信、诺基亚、三星。中兴和华为都是更经济的选择。如果它们可用,你可能会看到更快的采用速度。”

451 Research 的研究总监 Christian Renaud 表示,业界普遍认为,华为设备既成熟又价格低廉,而在没有华为的情况下,运营商也没有明确的替代方案。

他说:“目前,会有采用诺基亚或爱立信标准的运营商。(而且)现在判断谁最成熟还为时过早,因为部署是如此有限。”

这种争论在运营商本身的覆盖地图上可以得到证实。虽然他们很快就大肆宣传 5G 服务在美国的许多市场上已经有了,但实际的地理覆盖范围大多局限于大城市核心区的公共场所。简而言之,大部分地区的 5G 部署还没有到来。

部署缓慢是有充分理由的。5G 接入点的部署密度要远高于上一代的无线技术,这使得该过程更加复杂且耗时。还有一个问题是,目前可用的 5G 用户设备数量还很少。

Renaud 说:“这就好比说,在有人发明汽车之前,说‘我已经有了这条八车道的高速公路’。”

设备供应商目前的部分目标是通过私有部署来展示 5G 的潜力,这些部署将该技术用做 信号隧道 backhaul ,用于支持物联网和其他针对单个企业的链接场景。

Renaud 说:“(设备供应商)都在大力推动私有部署这一块,然后他们可以利用这一点说:你看,我可以用在布鲁克林造船厂或某个私有部署的 5G 网络中,所以,如果可以的话……,它可以用于支持人们观看 YouTube。”

对中国的禁令的一个不幸结果可能是供应商为满足 5G 要求而遵循的规范的分裂。Renaud 称,如果非中国供应商必须为允许华为和中兴的市场制作一个版本,而为不允许华为和中兴的地方制作不同的版本,这可能会给他们带来新的麻烦。

他说:“这将把成本负担转移到设备制造商身上,来试图支持不同的运营商实施。我们会造成非技术性的壁垒。”而这些,反过来又会导致客户体验受到影响。

但是,5G 已经通过开放无线接入网技术拥抱了更高的互操作性的趋势,它将 5G 栈各层之间的软件接口标准化。运营商和设备商都接受了这一推动,使得互操作性更有可能,这可能会在未来吸引更多的参与者。

当然,即便是普遍的互操作性,设备制造商仍然会试图建立客户依赖性。他说“在试图锁定客户的供应商和试图保持供应商中立的客户之间,总是会有一场拉锯战。这不会有很大的改变。(但是)我们显然已经看到了试图更加开放的动向。”


via: https://www.networkworld.com/article/3575408/huawei-ban-could-complicate-5g-deployment.html

作者:Jon Gold 选题:lujun9972 译者:geekpi 校对:wxy

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

超越单行的 awk 脚本,学习如何做邮件合并和字数统计。

awk 是 Unix 和 Linux 用户工具箱中最古老的工具之一。awk 由 Alfred Aho、Peter Weinberger 和 Brian Kernighan(即工具名称中的 A、W 和 K)在 20 世纪 70 年代创建,用于复杂的文本流处理。它是流编辑器 sed 的配套工具,后者是为逐行处理文本文件而设计的。awk 支持更复杂的结构化程序,是一门完整的编程语言。

本文将介绍如何使用 awk 完成更多结构化的复杂任务,包括一个简单的邮件合并程序。

awk 的程序结构

awk 脚本是由 {}(大括号)包围的功能块组成,其中有两个特殊的功能块,BEGINEND,它们在处理第一行输入流之前和最后一行处理之后执行。在这两者之间,块的格式为:

模式 { 动作语句 }

当输入缓冲区中的行与模式匹配时,每个块都会执行。如果没有包含模式,则函数块在输入流的每一行都会执行。

另外,以下语法可以用于在 awk 中定义可以从任何块中调用的函数。

function 函数名(参数列表) { 语句 }

这种模式匹配块和函数的组合允许开发者结构化的 awk 程序,以便重用和提高可读性。

awk 如何处理文本流

awk 每次从输入文件或流中一行一行地读取文本,并使用字段分隔符将其解析成若干字段。在 awk 的术语中,当前的缓冲区是一个记录。有一些特殊的变量会影响 awk 读取和处理文件的方式:

  • FS 字段分隔符 field separator )。默认情况下,这是任何空格字符(空格或制表符)。
  • RS 记录分隔符 record separator )。默认情况下是一个新行(n)。
  • NF 字段数 number of fields )。当 awk 解析一行时,这个变量被设置为被解析出字段数。
  • $0: 当前记录。
  • $1$2$3 等:当前记录的第一、第二、第三等字段。
  • NR 记录数 number of records )。迄今已被 awk 脚本解析的记录数。

影响 awk 行为的变量还有很多,但知道这些已经足够开始了。

单行 awk 脚本

对于一个如此强大的工具来说,有趣的是,awk 的大部分用法都是基本的单行脚本。也许最常见的 awk 程序是打印 CSV 文件、日志文件等输入行中的选定字段。例如,下面的单行脚本从 /etc/passwd 中打印出一个用户名列表:

awk -F":" '{print $1 }' /etc/passwd

如上所述,$1 是当前记录中的第一个字段。-F 选项将 FS 变量设置为字符 :

字段分隔符也可以在 BEGIN 函数块中设置:

awk 'BEGIN { FS=":" } {print $1 }' /etc/passwd

在下面的例子中,每一个 shell 不是 /sbin/nologin 的用户都可以通过在该块前面加上匹配模式来打印出来:

awk 'BEGIN { FS=":" } ! /\/sbin\/nologin/ {print $1 }' /etc/passwd

awk 进阶:邮件合并

现在你已经掌握了一些基础知识,尝试用一个更具有结构化的例子来深入了解 awk:创建邮件合并。

邮件合并使用两个文件,其中一个文件(在本例中称为 email_template.txt)包含了你要发送的电子邮件的模板:

From: Program committee <[email protected]>
To: {firstname} {lastname} <{email}>
Subject: Your presentation proposal

Dear {firstname},

Thank you for your presentation proposal:
  {title}

We are pleased to inform you that your proposal has been successful! We
will contact you shortly with further information about the event
schedule.

Thank you,
The Program Committee

而另一个则是一个 CSV 文件(名为 proposals.csv),里面有你要发送邮件的人:

firstname,lastname,email,title
Harry,Potter,[email protected],"Defeating your nemesis in 3 easy steps"
Jack,Reacher,[email protected],"Hand-to-hand combat for beginners"
Mickey,Mouse,[email protected],"Surviving public speaking with a squeaky voice"
Santa,Claus,[email protected],"Efficient list-making"

你要读取 CSV 文件,替换第一个文件中的相关字段(跳过第一行),然后把结果写到一个叫 acceptanceN.txt 的文件中,每解析一行就递增文件名中的 N

awk 程序写在一个叫 mail_merge.awk 的文件中。在 awk 脚本中的语句用 ; 分隔。第一个任务是设置字段分隔符变量和其他几个脚本需要的变量。你还需要读取并丢弃 CSV 中的第一行,否则会创建一个以 Dear firstname 开头的文件。要做到这一点,请使用特殊函数 getline,并在读取后将记录计数器重置为 0。

BEGIN {
  FS=",";
  template="email_template.txt";
  output="acceptance";
  getline;
  NR=0;
}

主要功能非常简单:每处理一行,就为各种字段设置一个变量 —— firstnamelastnameemailtitle。模板文件被逐行读取,并使用函数 sub 将任何出现的特殊字符序列替换为相关变量的值。然后将该行以及所做的任何替换输出到输出文件中。

由于每行都要处理模板文件和不同的输出文件,所以在处理下一条记录之前,需要清理和关闭这些文件的文件句柄。

{
        # 从输入文件中读取关联字段
        firstname=$1;
        lastname=$2;
        email=$3;
        title=$4;

        # 设置输出文件名
        outfile=(output NR ".txt");

        # 从模板中读取一行,替换特定字段,
        # 并打印结果到输出文件。
        while ( (getline ln &lt; template) &gt; 0 )
        {
                sub(/{firstname}/,firstname,ln);
                sub(/{lastname}/,lastname,ln);
                sub(/{email}/,email,ln);
                sub(/{title}/,title,ln);
                print(ln) &gt; outfile;
        }

        # 关闭模板和输出文件,继续下一条记录
        close(outfile);
        close(template);
}

你已经完成了! 在命令行上运行该脚本:

awk -f mail_merge.awk proposals.csv

awk -f mail_merge.awk < proposals.csv

你会在当前目录下发现生成的文本文件。

awk 进阶:字频计数

awk 中最强大的功能之一是关联数组,在大多数编程语言中,数组条目通常由数字索引,但在 awk 中,数组由一个键字符串进行引用。你可以从上一节的文件 proposals.txt 中存储一个条目。例如,在一个单一的关联数组中,像这样:

        proposer["firstname"]=$1;
        proposer["lastname"]=$2;
        proposer["email"]=$3;
        proposer["title"]=$4;

这使得文本处理变得非常容易。一个使用了这个概念的简单的程序就是词频计数器。你可以解析一个文件,在每一行中分解出单词(忽略标点符号),对行中的每个单词进行递增计数器,然后输出文本中出现的前 20 个单词。

首先,在一个名为 wordcount.awk 的文件中,将字段分隔符设置为包含空格和标点符号的正则表达式:

BEGIN {
        # ignore 1 or more consecutive occurrences of the characters
        # in the character group below
        FS="[ .,:;()<>{}@!\"'\t]+";
}

接下来,主循环函数将遍历每个字段,忽略任何空字段(如果行末有标点符号,则会出现这种情况),并递增行中单词数:

{
        for (i = 1; i &lt;= NF; i++) {
                if ($i != "") {
                        words[$i]++;
                }
        }
}

最后,处理完文本后,使用 END 函数打印数组的内容,然后利用 awk 的能力,将输出的内容用管道输入 shell 命令,进行数字排序,并打印出 20 个最常出现的单词。

END {
        sort_head = "sort -k2 -nr | head -n 20";
        for (word in words) {
                printf "%s\t%d\n", word, words[word] | sort_head;
        }
        close (sort_head);
}

在这篇文章的早期草稿上运行这个脚本,会产生这样的输出:

[[email protected]]$ awk -f wordcount.awk < awk_article.txt
the     79
awk     41
a       39
and     33
of      32
in      27
to      26
is      25
line    23
for     23
will    22
file    21
we      16
We      15
with    12
which   12
by      12
this    11
output  11
function        11

下一步是什么?

如果你想了解更多关于 awk 编程的知识,我强烈推荐 Dale Dougherty 和 Arnold Robbins 所著的《Sed 和 awk》这本书。

awk 编程进阶的关键之一是掌握“扩展正则表达式”。awk 为你可能已经熟悉的 sed 正则表达式语法提供了几个强大的补充。

另一个学习 awk 的好资源是 GNU awk 用户指南。它有一个完整的 awk 内置函数库的参考资料,以及很多简单和复杂的 awk 脚本的例子。


via: https://opensource.com/article/19/10/advanced-awk

作者:Dave Neary 选题:lujun9972 译者:wxy 校对:wxy

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

一个无聊的开发者创造了“DOS 的 Linux 子系统”

墨尔本的一位软件工程师正在通过创建一个 DOS 用户迄今为止所缺乏的工具来消磨城市的封锁时间:一个类似于 Windows 10 用户所享受的集成 Linux 环境。Linux 不但能够从 DOS 命令行启动,而且还可以在 Linux 运行后继续执行 DOS。Linux 会在自己的启动过程中完整地留下第一兆字节的内存(DOS 所在的地方),所以只需跳回正确的地方继续执行 DOS 即可。

来源:itnews

拍一拍:确实“无聊”,不过这种无聊的探索精神值得鼓励。

福布斯:微软更新 Edge 新功能挑战 Chrome

现在将可以直接在 Edge 浏览器内部直接从地址栏搜索工作文件了。另一个与工作相关的微软 Edge 更新也即将推出,让 IT 管理员管理用户设备上特定的与工作相关的应用,以及管理用户在 Edge 中的工作配置环境中进行的浏览。以及,对微软端点 DLP 原生策略的支持、即将推出的 Sleeping Tabs 可将内存使用率提高 26%,CPU 使用率减少 29% 等。

来源:forbes

拍一拍:微软希望吸引更多的企业用户使用更新后的 Edge 浏览器。

JetBrains:世界上最大的 Java 程序员集中地在亚洲和德国

Java 开发者最集中的地方是亚洲,有 250 万开发者使用它作为主要语言。JetBrains 认为,这可能是由于在中国和印度等国家雇佣离岸开发人员来构建 Android 应用是很常见的。使用 Java 作为主要语言的开发者比例最高的六个国家是:中国、韩国、印度、德国、西班牙和巴西。

来源:jetbrains

拍一拍:不管你喜欢不喜欢,Java 依然那么流行。

Nextcloud 是开源软件,我们不提供托管服务,但我们却能从根本上简化注册体验。

我们一直有个列表,上面有几十个 Nextcloud 提供商,然而我听到的最常见的问题,即使是我的技术方面的朋友,也是:

”嗨,Jan,你推荐哪个 Nextcloud 提供商?”

当然,这也是可以理解的。如果你有一长串的供应商,你怎么选择?托管商在附近?名字可爱?标志最大?

每一个使用服务器的去中心化开源解决方案都在努力解决这些:

  • Mastodon 有 joinmastodon.org 来选择社区,但很明显主实例是 mastodon.social。
  • Diaspora 有joindiaspora.com,它也是主实例。
  • Matrix 有 matrix.to,还有一个在 Element.io 的应用(多平台)。
  • WordPress 有 wordpress.com。我不确定是否有提供商能接近它的知名度。
  • PeerTube 有一堆实例,都有不同的技术细节。
  • Pixelfed 在beta.joinpixelfed.org 有一个早期版本的实例选择器,以及在 pixelfed.social 有一个大型实例。
  • 还有更多的去中心化开源应用的例子,这里列出了如何通过终端访问它、设置 Rust 实现、或使其在网络打印机上运行。

这就导致了一些问题:

  • ? 人们不知道该选哪个,有 错失恐惧症 Fear Of Missing Out (FOMO),然后根本不选。这就是选择的悖论!
  • ? 网络并不是真正的去中心化,因为大多数人都在少数服务器上,或者主要是只有一台服务器。

Nextcloud 不存在这些问题。

我们的解决方案:简单注册

这是它是如何工作的:

当你下载我们的手机或桌面应用时,你首先看到的是“登录”或“使用供应商注册”的选择。这是任何专有应用都会做的事情:

 title=

选择“注册”可打开应用中的简易注册页面

 title=

你输入你的电子邮件地址,然后点击“注册”。

输入密码,就可以了! ?

”等一下,这怎么这么简单?“

我知道,对吧?✨

事实上,它甚至比很多集中式的应用更简单,在那里你需要输入你的全名和电话号码,然后点击谷歌的验证码。

这基本上可以归结为:

我们为你选择

而不是面对一个无法判断什么适合你供应商的名单,我们只向你展示一个选择。就好像我是你的朋友一样,我回答了那个关于我推荐哪家供应商的问题。

很好!?

澄清一下:你可以修改供应商,但默认的应该很适合你。目前,它只是地理位置上离你最近的提供商。

除此之外,我们对通过简单注册列出的提供商有一些要求,以确保无论你选择哪一个提供商都能获得良好的用户体验:

  • ? 2 GB 的免费存储空间,而且不仅仅是试用期。
  • ? 一套核心应用。文件、日历、联系人、邮件、通话、任务、笔记。有些供应商甚至提供更多。
  • ? 最新版本,让你始终保持最新的功能、修复和安全更新。

除此之外,我们还提出了一个尊重隐私的流程。当你点击“注册”时,你的邮件不会发送给我们,而是直接发送给你选择的供应商,这将无缝过渡到他们的设置步骤,在那里你选择一个密码。这意味着在 Nextcloud 不会有任何数据泄露给我们,我们甚至不知道你选择的是哪家提供商!

因此,虽然我们提供这项服务,而且它超级容易使用,但我们只做绝对最低限度的数据处理,以连接你与你的理想供应商。

去中心化项目需要简单的注册方式

很多开源软件项目可以从简单注册这样的体验中受益。我们在最初发布的时候写过有关它的文章,我们希望这篇文章能澄清使它成功的设计决策,以便它能被更多项目采用。

去中心化是赋能,但只有当人们即使不知道服务器是什么也能简单注册时,才是真正的革命。

当然,现在也还不完美。比如,如果你已经在 Nextcloud 实例上有了账户,任何一个应用的登录过程都会要求你输入一个服务器地址,而很多人根本不知道那是什么。比如在很多邮件应用中,在这一步会有一个最受欢迎的供应商列表,底部有一个“自定义服务器”的条目。这也可能是一种可能性,但同样带来了系统过于集中的风险,或者让人们对选择什么感到困惑。

所以,我们不断尝试为所有 Nextcloud 桌面和移动应用改进这一点,比如 Nextcloud Talk 或者所有优秀的社区开发的应用。在 Android 上,我们与 DAVx5(Android 上的日历和联系人同步)紧密集成,而且,对于其他 Android 应用,还有一个单点登录库。不幸的是,在 iOS 上,就没有那么容易了,因为应用必须来自同一个开发者才能共享凭证。

如果你想合作解决类似这些有趣的挑战,来加入我们的 Nextcloud 设计团队吧


via: https://opensource.com/article/20/9/decentralization-signup

作者:Jan C. Borchardt 选题:lujun9972 译者:geekpi 校对:wxy

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

eDEX-UI 是一个很酷的科幻电影式的终端仿真器,看起来很酷,有大量包括系统监控在内的选项。让我们来快速看看它提供了什么。

你可能已经知道了大量有趣的 Linux 命令。但你知道当谈到 Linux 命令行时,还有什么有趣的东西吗?那就是终端本身。

是的,终端仿真器(俗称终端)也可以很有趣。还记得 80 年代和 90 年代初的酷炫复古的终端,给你一个复古的终端吗?

那一款深受 《 创:战纪 TRON Legacy 》 电影特效启发的养眼终端感觉怎么样?

在本文中,让我们来看看一款神奇的跨平台终端模拟器,注意口水!

eDEX-UI: 一个很酷的终端仿真器

eDEX-UI 是一款开源的跨平台终端仿真器,它为你呈现了一个科幻风格的外观和一些有用的功能。

它最初的灵感来自于 DEX UI 项目,但该项目已经不再维护。

尽管 eDEX-UI 的重点是外观和未来主义主题的终端,但它也可以作为一个 Linux 系统监控工具。怎么说呢?因为当你在终端中工作时,它可以在侧边栏中显示系统的统计信息。事实上,其开发者提到,他的目标是将其改进为一个可用的系统管理工具。

让我们来看看它还提供了什么,以及如何让它安装到你的电脑上。

eDEX-UI 的特点

eDEX-UI 本质上是一个终端仿真器。你可以像普通终端一样使用它来运行命令和其他任何你可以在终端中做的事情。

它以全屏方式运行,侧边栏和底部面板可以监控系统和网络的统计信息。此外,还有一个用于触摸设备的虚拟键盘。

我做了一个简短的视频,我建议你观看这个视频,看看这个很酷的终端模拟器运行起来是什么样子。播放视频时要打开声音(相信我)。

eDEX-UI 的特点:

  • 多标签
  • 对 curses 的支持
  • 目录查看器,显示当前工作目录的内容
  • 显示系统信息,包括主板信息、网络状态、IP、网络带宽使用情况、CPU 使用情况、CPU 温度、RAM 使用情况等
  • 自定义选项,以改变主题、键盘布局、CSS 注入
  • 可选的声音效果,让你有一种黑客的感觉
  • 跨平台支持(Windows、macOS 和 Linux)

在 Linux 上安装 eDEX

如前所述,它支持所有主要平台,包括 Windows、macOS,当然还有 Linux。

要在 Linux 发行版上安装它,你可以从它的 GitHub 发布部分中抓取 AppImage 文件,或者在包括 AUR 在内的可用资源库中找到它。如果你不知道,我建议你去看一下我们关于在 Linux 中使用 AppImage 的指南。

你可以访问它的 GitHub 页面,如果你喜欢它,可以随时星标他们的仓库。

我对 eDEX-UI 的体验

因为它的科幻风格的外观,我喜欢这个终端仿真器。但是,我发现它对系统资源的消耗相当大。我没有检查我的 Linux 系统的 CPU 温度,但 CPU 消耗肯定很高。

所以,如果你需要它运行在后台或单独的工作空间中(像我这样),你可能要注意这一点。除此以外,它是一个令人印象深刻的工具,拥有目录查看器和系统资源监控等有用的选项。

顺便说一句,如果你想模拟黑客来娱乐一下客人和孩子们,那么可以试试好莱坞工具

你觉得 eDEX-UI 怎么样?你是想试一试,还是觉得太幼稚/过于复杂?


via: https://itsfoss.com/edex-ui-sci-fi-terminal/

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

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