2021年5月

探索一些未被充分利用但仍然有用的 Python 特性。

 title=

这是 Python 3.x 首发特性系列文章的第二篇。Python 3.1 于 2009 年首次发布,尽管它已经发布了很长时间,但它引入的许多特性都没有被充分利用,而且相当酷。下面是其中的三个。

千位数格式化

在格式化大数时,通常是每三位数放置逗号,使数字更易读(例如,1,048,576 比 1048576 更容易读)。从 Python 3.1 开始,可以在使用字符串格式化函数时直接完成:

"2 to the 20th power is {:,d}".format(2**20)
'2 to the 20th power is 1,048,576'

,d 格式符表示数字必须用逗号格式化。

Counter 类

collections.Counter 类是标准库模块 collections 的一部分,是 Python 中的一个秘密超级武器。它经常在 Python 的面试题的简单解答中首次遇到,但它的价值并不限于此。

例如,在 Humpty Dumpty 的歌 的前八行中找出五个最常见的字母:

hd_song = """
In winter, when the fields are white,
I sing this song for your delight.

In Spring, when woods are getting green,
I'll try and tell you what I mean.

In Summer, when the days are long,
Perhaps you'll understand the song.

In Autumn, when the leaves are brown,
Take pen and ink, and write it down.
"""
import collections

collections.Counter(hd_song.lower().replace(' ', '')).most_common(5)
[('e', 29), ('n', 27), ('i', 18), ('t', 18), ('r', 15)]

执行软件包

Python 允许使用 -m 标志来从命令行执行模块。甚至一些标准库模块在被执行时也会做一些有用的事情;例如,python -m cgi 是一个 CGI 脚本,用来调试网络服务器的 CGI 配置。

然而,直到 Python 3.1,都不可能像这样执行 软件包。从 Python 3.1 开始,python -m package 将执行软件包中的 __main__ 模块。这是一个放调试脚本或命令的好地方,这些脚本主要是用工具执行的,不需要很短。

Python 3.0 在 11 年前就已经发布了,但是在这个版本中首次出现的一些功能是很酷的,而且没有得到充分利用。如果你还没使用,那么将它们添加到你的工具箱中。


via: https://opensource.com/article/21/5/python-31-features

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

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

大家好,我是小白,今天的硬核观察由我来为大家播报。

老王在接下来的几天,有事需要外出,无法为大家播报硬核观察,所以就由我来替代他,为大家制作硬核观察。

腾讯开源代码安全指南

腾讯在 5 月 18 日在 Github 账号 Tencent 下开源了一个名为 SecGuide 的仓库,其中为腾讯整理的不同编程语言的安全指南,帮助开发者了解自己代码中存在的问题,减少出现安全风险的可能。

腾讯在Github 上参与开源、为社区作出贡献是一件值得鼓励的事情。不过,也希望能够有更多的腾讯内部的开发者、外部的开发者共同来贡献这个安全指南,这样才能真正体现开源社区的价值。而不是仅仅是开源出来就没有了下文。安全面临的问题总是在不断的更新,而我们的安全指南,也应该常看常新。

亚马逊购买了米高梅电影制作公司


美国的云计算、电商巨头亚马逊支付了90亿美元购买了经典电影制作公司米高梅。该公司曾制作了我们熟悉的动画《猫和老鼠》、也是 007 系列电影、古墓丽影、霍比特人等一系列经典电影背后的制作公司。

亚马逊和经典电影公司看起来毫无关联。但其实背后是亚马逊的 Prime Video 近年来持续获得增长的重要一个部分。亚马逊通过购买电影公司,来为自己的 Prime Video 输送血液,让自己影视业务变得愈加红火,并通过自己的电商等业务,让电影的业务可以扩展到电影和电视以外的领域。

迪拜发布了自己的数字货币

在过去的一年里,数字货币占尽了风头。但另一方面,也需要注意到,各个国家开始加强了对于数字货币的管控和关注。而迪拜就在最近发布了其自己的数字货币 DubaiCoin。DubaiCoin 将会很快可以用于在线下商店和线上的网站来购买商品和服务,且迪拜政府有打算使用 DubaiCoin 来替代其法币,让其政府成为世界上第一个由区块链驱动的政府。

区块链的技术应用在更多的领域是一件大好事,但能否真正落地,走出一条自己的路,还需要且看。委内瑞拉就曾想要使用自己的数字货币 Petro 来偿还债务,不知道黄金之城迪拜能否走通这条道路。

Java 仍是开发企业应用程序最流行的语言之一。那么,为什么 无服务器 serverless 开发人员对它望而却步?

 title=

几十年来,企业已经在各类平台上开发了关键业务应用程序,包括物理服务器、虚拟机和云环境。这些应用程序在各行各业都有一个共同点,那就是无论需求如何,它们都需要持续可用(24x7x365),保证稳定性、可靠性和性能。因此,即使实际资源利用率低于 50%,每个企业都必须付出高额成本维护基础架构(如 CPU、内存、磁盘、网络等)。

无服务器架构是为了帮助解决这些问题而产生的。无服务器允许开发人员按需构建和运行应用程序,保证高可用性,不必在多云和混合云环境中管理服务器。在幕后,无服务器拓扑中仍有很多服务器,但它们是从应用程序开发中抽象出来的。相反,云提供商使用无服务器进行资源管理,例如配置、维护、联网和扩展服务器实例。

由于其高效性,无服务器开发模式现在是一些企业的需求,这些企业希望按需启动服务,而不是一直运行服务。

许多新建的开源项目用来在 Kubernetes 集群上通过 Linux 容器包来管理无服务器应用程序。CNCF 的《交互式无服务器全景》 是一份关于开源项目、工具、框架和公共云平台的指南,帮助 DevOps 团队处理无服务器应用程序。

 title=

开发人员可以编写代码,然后将其快速部署到各种无服务器环境中。然后,无服务器应用程序响应需求,并根据需要自动伸缩扩展。

你可能想知道什么编程语言和运行环境最适合无服务器应用程序开发,以便与上图中的技术集成。这个问题不只一个答案,但是让我们退一步来讨论在企业生产环境中开发业务应用程序最流行的应用程序运行环境:Java。

Developer Economics 称,截至 2020 年第三季度,仍有 800 多万家企业开发人员在使用 Java 来实现其业务需求。然而,根据 2020 年的一项调查,Java(占比 6%)显然不是有前瞻意识的开发人员的首选,他们使用当前云服务做开发。

 title=

来自 NewRelic 无服务器基准报告的数据(Daniel Oh, CC BY-SA 4.0

资源使用、响应时间和延迟在无服务器开发中至关重要。公有云提供商提供的无服务器产品通常是按需计量的,只有在无服务器应用程序启动时,才会通过事件驱动的执行模式收费。因此,当无服务器应用程序闲置或缩减为零时,企业无需支付任何费用。

带有容器的 Java 状态

在这种背景下,你可能会问:“既然现有业务应用程序很可能是在 Java 技术上开发的,那么开发人员为什么不尝试使用 Java 栈进行无服务器应用程序开发呢?

隐藏的真相是:很难在新的不可变更的基础设施(例如 Kubernetes 这样的容器平台)中优化 Java 应用程序。

 title=

该图描述了 Java 进程与竞争的语言、框架(如 Node.jsGo)之间内存资源使用的差异。Java HotSpot 占用资源最大,其中包括每个 Java 虚拟机 Java Virtual Machine (JVM)实例分配的堆内存。中间显示了 Node.js 每个进程要比 Java 小得多。最后,Go 是一种流行的云服务编程语言,因为它的内存消耗最低。

如你所见,当你在这张图从左到右走,你会看到更密的节点。这就是开发人员在云、容器和 Kubernetes 上编写无服务器应用程序时回避 Java(包括 Spring Boot,一种顽固的微服务 Java 框架)的原因。

下一步是什么?

企业可以通过实现无服务器应用程序获得明显的好处,但是资源密度问题导致他们避免使用 Java 堆栈在 Kubernetes 上开发无服务器应用程序开发。但是选择其他语言会给全球数百万 Java 开发人员带来学习负担。因此,在本系列的下一篇文章中,我将指导你如何开始使用 Java 无服务器函数,而不是使用其他语言。


via: https://opensource.com/article/21/5/what-serverless-java

作者:Daniel Oh 选题:lujun9972 译者:DCOLIVERSUN 校对:wxy

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

控制你自己的数据,使未经授权的用户无法访问它。

 title=

用户完全有权利关心他们数据的安全和保障。当你在计算机上创建数据时,希望对其进行独家控制是合理的。

有许多方法保护你的文件。在文件系统层面,你可以 加密你的硬盘只是加密一个文件。不过,一个好的办公套件为你提供了更多的选择,我收集了五种我用开源软件保护文件的方法。

5 种保护你的文件的方法

1、将文件保存在安全的云存储服务中

自托管一个开源的内容管理系统(CMS)平台可以让你完全控制你的数据。你的所有数据都留在你的服务器上,你可以控制谁可以访问它。

选项: NextcloudownCloudPydioSeafile

所有这些都提供了存储、同步和共享文件和文件夹、管理内容、文件版本等功能。它们可以很容易地取代 Dropbox、Google Drive 和其他专有的云存储,不用将你的数据放在你不拥有、不维护、不管理的服务器上。

上面列出的开源的自托管方式符合 GDPR 和其他保护用户数据的国际法规。它们提供备份和数据恢复选项、审计和监控工具、权限管理和数据加密。

 title=

Pydio 细胞中的审计控制。(来源:Pydio.com)

2、启用静态、传输和端到端的加密功能

我们经常笼统地谈论数据加密,但在加密文件时有几个方面需要考虑:

  • 通过静态加密(或磁盘加密),你可以保护存储在你的基础设施内或硬盘上的数据。
  • 在使用 HTTPS 等协议时,传输加密会保护流量形式的数据。它可以保护你的数据在从一个地方移动到另一个地方时不被拦截和转换。当你把文件上传到你的云端时,这很重要。
  • 端到端加密(E2EE)通过在一端加密,在另一端解密来保护数据。除非有解密密钥,否则任何第三方都无法读取你的文件,即使他们干扰了这个过程并获得了这个文件的权限。

选项: CryptPad、ownCloud、ONLYOFFICE 工作区、Nextcloud 和 Seafile

ownCloud、ONLYOFFICE 工作区、Nextcloud 和 Seafile 支持所有三层的加密。但它们在实现端到端加密的方式上有所不同。

  • 在 ownCloud 中,有一个 E2EE 插件,允许你对文件夹共享进行加密。
  • 在 Nextcloud 中,桌面客户端有一个文件夹级别的选项。
  • Seafile 通过创建加密库来提供客户端的 E2EE。
  • ONLYOFFICE 工作区 不仅允许你在存储和共享文件时对其进行加密,而且还允许你在“私人房间”中实时安全地共同编辑文件。加密数据是自动生成和传输的,并且是自己加密的 —— 你不需要保留或记住任何密码。
  • 正如其名称所示,CryptPad 是完全私有的。所有的内容都是由你的浏览器进行加密和解密的。这意味着文件、聊天记录和文件在你登录的会话之外是无法阅读的。即使是服务管理员也无法得到你的信息。

 title=

加密的 CryptPad 存储。(来源:Cryptpad.fr)

3、使用数字签名

数字签名可以让你验证你是文件内容的原作者,并且没有对其进行过修改。

选项: LibreOffice Writer、ONLYOFFICE 桌面编辑器、OpenESignForms 和 SignServer

LibreOfficeONLYOFFICE 套件提供了一个对文件数字签名的集成工具。你可以添加一个在文档文本中可见的签名行,并允许你向其他用户请求签名。

一旦你应用了数字签名,任何人都不能编辑该文件。如果有人修改文档,签名就会失效,这样你就会知道内容被修改了。

在 ONLYOFFICE 中,你可以在 LibreOffice 中签名 OOXML 文件(例如,DOCX、XLSX、PPTX)作为 ODF 和 PDF。如果你试图在 LibreOffice 中签名一个 OOXML 文件,该签名将被标记为“只有部分文件被签署”。

 title=

ONLYOFFICE 中的数字签名。 (来源:ONLYOFFICE帮助中心)

SignServerOpen eSignForms 是免费的电子签名服务,如果你不需要在编辑器中直接签名文件,你可以使用它们。这两个工具都可以让你处理文档,SignServer 还可以让你签名包括 Java 在内的代码,并应用时间戳。

4、添加水印

水印可避免你的内容在未经授权的情况下被重新分发,并保护你的文件可能包含的任何机密信息。

选项:Nextcloud 中的 Collabora Online 或 ONLYOFFICE Docs

当与 Nextcloud 集成时,ONLYOFFICE DocsCollabora 允许你在文件、电子表格和演示文稿中嵌入水印。要激活水印功能,必须以管理员身份登录你的 Nextcloud 实例,并在解决方案的设置页面上进入安全视图设置

你可以使用占位符将默认的水印替换成你自己的文本。在打开文件时,水印将针对每个用户单独显示。你也可以定义组来区分将看到水印的用户,并选择必须显示水印的共享类型。

 title=

水印 (Ksenia Fedoruk, CC BY-SA 4.0)

你也可以在 LibreOffice 和 ONLYOFFICE 桌面应用程序中的文档中插入水印。然而,在这种情况下,它只是一个放置在主文本层下的文本或图像,任何人都可以轻易地删除它。

5、用密码保护文件

密码保护允许你安全地存储和交换本地文件。如果有人访问你的桌面或通过电子邮件或其他方法得到受保护的文件,他们不知道密码就无法打开它。

选项: Apache OpenOffice、LibreOffice 和 ONLYOFFICE 桌面编辑器

所有这三种解决方案都提供了为你的敏感文件设置密码的能力。

如果一个受保护的文档对你很重要,强烈建议你使用密码管理器保存密码或记住它,因为 LibreOffice、ONLYOFFICE 和 OpenOffice 不提供密码恢复选项。因此,如果你忘记或丢失了密码,就没有办法恢复或重置密码并打开文件。

你的数据属于你

使用这些方法中的一种或多种来保护你的文件,以保持更安全的在线活动。现在是 21 世纪,计算机太先进了,不能冒险把你的数据交给你无法控制的服务。使用开源,掌握你的数字生活的所有权。

你最喜欢的安全使用文档的工具是什么?请在评论中分享它们。


via: https://opensource.com/article/21/4/secure-documents-open-source

作者:Ksenia Fedoruk 选题:lujun9972 译者:wxy 校对:wxy

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

微软使用 GPT-3 让你可以用自然语言编码

微软现在正在其无代码/低代码的 Power Apps 服务中使用 OpenAI 的大规模 GPT-3 自然语言模型,将口语文本翻译成其最近发布的 Power Fx 语言的代码。当然,你不可能在只使用自然语言的情况下开发出一个大应用,目前只是将一些低代码开发进一步转变成无代码开发。

低代码/无代码开发只能用在某些不那么严肃的领域,我认为它甚至不能起到比脚本语言更大的作用。但是这个尝试是好的,毕竟不是每个领域都需要专业程序员。

Google 正式在其设备上推送 Fuchsia OS

发布于 2018 年的第一代 Nest Hub 正在陆续收到更新,将其原本以 Linux 内核为基础的 Cast OS 替代为 Fuchsia OS。这个更新不会带来任何功能上的变化,体验也不会和之前有什么不同,因为其上运行都是 Flutter 应用,用户甚至有可能不会知道自己的设备已经切换到了 Fuchsia OS。

谷歌从 2016 年就宣布开发 Fuchsia OS,如今才能真正部署到用户设备上,可见即便是开发了 Android 的谷歌,从头开始创造一个操作系统也没那么容易。

微软将很快发布“下一代 Windows”

微软 CEO 萨蒂亚·纳德拉在今天上午的 Build 主题演讲中预告了这一消息,透露了他近几个月一直在测试“下一代 Windows”。微软上周证实,其最初为双屏设备打造的操作系统 Windows 10X 将不再继续独立开发。

这个所谓的“下一代 Windows” 可能是又一个新的 Windows 世代,莫非会像网友们建议的那样,直接叫“Windows”?

在企业互联网场景中,一般情况下最广泛使用的基于 Linux 的操作系统是 Red Hat Enterprise Linux(RHEL),它主要用于服务器,但也可以用作工作站。Fedora linux 其实也是工作站系统的一个很好的选择,它提供了许多在企业环境中工作的特性,使管理成为一项简单的任务。

当你的工作网络中有许多机器时,你需要一种以集中方式管理用户和机器的方法。FreeIPA 活动目录 Active Directory 就是用于这个任务的技术。它们允许系统管理员使用网络中所有实体的目录来管理大量的机器。

Fedora 中的活动目录

活动目录在公司环境中非常常见。Fedora 和 RHEL 通过使用 SSSD ( 系统安全服务守护进程 System Security Services Daemon )与 FreeIPA 或活动目录等服务很好地集成。SSSD 是一种访问远程目录和身份验证机制的系统服务。使用此软件的计算机能够使用远程凭据进行身份验证,并访问该目录网络中可用的其他服务。

要加入域网络,你需要域管理员的权限才能添加计算机。可以通过在域凭据上设置特殊权限或代表你对该计算机进行预配置。Fedora Linux 有一个在安装时配置机器的选项,叫做 企业登录 Enterprise Login 。如果你的计算机网络自动配置为企业域网络,那么你可以直接使用域凭据登录。

如果你的配置不是自动的,或者你已经安装了 Fedora Linux,你可以通过以下几个配置步骤加入一个活动目录域:

  1. 设置此计算机的 DNS。要连接到目录服务,首先需要能够解析目录域名。如果你的网络使用 DHCP 设置正确的 DNS,则可以跳过此步骤。
  2. 更改你的计算机名称,以反映它将是新域的一部分。编辑文件 /etc/hostname,并将机器名更改为 machinename.my_domain
  3. 通过执行以下命令加入域:sudo realm join my_domain -v( 用域名称替换 my_domain)。

运行此命令后,系统将请求允许加入该域中新计算机的用户的凭据。如果进程中没有错误,则机器将成为域的一部分。

现在,此计算机已成为你的域的一部分,你可以:

  • 使用域用户名登录到计算机
  • 获取 kerberos 票据以访问域网络中的不同服务
  • 访问其他服务,具体取决于域的配置方式

使用 Fleet Commander 管理 Fedora Linux

现在这台计算机已经是你的域的一部分了,你可以使用活动目录的域管理员工具来管理它。由于你的计算机没有运行 Windows,因此你只能进行身份验证以及访问网络和目录服务。无法在此计算机上设置与桌面相关的配置。

幸运的是,Fedora 有个工具叫 Fleet Commander

创建配置

Fleet Commander 是一个管理工具,允许你为网络中的所有 Fedora Linux 机器设置桌面配置文件。

这意味着,你可以简单地为 GNOME 桌面、Firefox、Chrome、LibreOffice 和其他支持的软件设置任何配置,然后在登录到选定的用户/组/计算机时以细粒度的方式应用该配置。

要使用这个工具首先安装 fleet-commander-admin 软件包:

sudo dnf install fleet-commander-admin

然后,用浏览器访问 http://localhost:9090 来登录。在左边的菜单中,点击 “Fleet Commander”。

Fleet Commander 有一个工具,可以使用“实时会话”机制直观地设置配置概要文件。它运行一个虚拟机,作为基本机器的模板。你需要手动进行所需的配置更改。然后检查所有配置更改,选择要添加到配置文件中的更改,然后部署它。

管理客户端

在每个 Fedora Linux 或 RHEL 机器中,你都需要安装 Fleet Commander 客户端服务。此服务在用户登录时激活。它在域中搜索应用于当前用户/计算机的配置文件,并应用这个配置。

安装 fleet-commander-client

sudo dnf install fleet-commander-client

软件将自动检测机器是否是域的一部分。当用户登录时,它将使用应用于该用户的配置文件来设置会话。


via: https://fedoramagazine.org/join-fedora-linux-enterprise-domain/

作者:ogutierrez 选题:lujun9972 译者:Chao-zhi 校对:wxy

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