2020年9月

在问题导致关键的微服务瘫痪之前,使用 GraphQL 的监控功能帮助你及早发现问题。

微服务和 GraphQL 就像面包和黄油一样,是一个很好的组合。它们本身都很棒,结合起来就更棒了。了解你的微服务的健康状况是很重要的,因为它们运行着重要的服务。如果等到某个关键的服务崩溃了才诊断问题,那是很愚蠢的。让 GraphQL 帮助你及早发现问题并不需要花费太多精力。

 title=

常规的健康检查可以让你观察和测试你的服务,在问题影响到你的业务、客户或项目之前,尽早得到通知。说起来很简单,但健康检查到底要做什么呢?

以下是我在设计服务检查时考虑的因素:

服务器健康检查的要求:

  1. 我需要了解我的微服务的可用性状态。
  2. 我希望能够管理服务器的负载。
  3. 我希望对我的微服务进行端到端(e2e)测试。
  4. 我应该能够预测中断。

 title=

做服务器健康检查的方法

进行健康检查可能比较棘手,因为理论上,你可以检查的东西几乎是无穷无尽的。我喜欢从小处着手,运行最基本的测试:ping 测试。这只是测试运行应用的服务器是否可用。然后,我加强测试以评估特定问题,思考服务器中最重要的元素。我想到那些如果突然消失的话将是灾难性的事情。

  1. **Ping 检查:**Ping 是最简单的监控类型。它只是检查你的应用是否在线。
  2. **脚本化浏览器:**脚本化浏览器比较高级。像 Selenium 这样的浏览器自动化工具可以让你实现自定义的监控规则集。
  3. **API 测试:**API 测试用于监控 API 端点。这是 ping 检查模型的高级版本,你可以根据 API 响应来定义监控计划。

使用 GraphQL 进行健康检查

在一个典型的基于 REST 的微服务中,你需要从头开始构建健康检查功能。这是一个时间密集型的过程,但使用 GraphQL 就不用担心了。

根据它的网站称:

“GraphQL 是一种用于 API 的查询语言,也是一种用现有数据完成这些查询的运行时环境。GraphQL 为你的 API 中的数据提供了一个完整的、可理解的描述,让客户有能力精确地仅查询他们所需要的东西,让 API 更容易随着时间的推移而进化,并实现强大的开发者工具。”

当你启动一个 GraphQL 微服务时,你还可以获得监控微服务的运行状况的供给。这是一个隐藏的宝贝。

正如我上面提到的,你可以用 GraphQL 端点执行 API 测试以及 ping 检查。

Apollo GraphQL 服务器提供了一个默认的端点,它可以返回有关你的微服务和服务器健康的信息。它不是很复杂:如果服务器正在运行,它就会返回状态码 200。

默认端点是 <server-host>/.well-known/apollo/server-health。

 title=

高级健康检查

在某些情况下,基本的健康检查可能不足以确保系统的完整性。例如,紧密耦合的系统需要更多的业务逻辑来确保系统的健康。

Apollo GraphQL 在定义服务器的同时,通过声明一个 onHealthCheck 函数来有效地管理这种情况。

* Defining the Apollo Server */
const apollo = new ApolloServer({
  playground: process.env.NODE_ENV !== 'production',
  typeDefs: gqlSchema,
  resolvers: resolver,
  onHealthCheck: () => {
    return new Promise((resolve, reject) => {
      // Replace the `true` in this conditional with more specific checks!
      if (true) {
        resolve();
      } else {
        reject();
      }
    });
  }
});

当你定义一个 onHealthCheck 方法时,它返回一个 promise,如果服务器准备好了,它就会返回 resolve,如果有错误,它就会返回 reject。

GraphQL 让监控 API 变得更容易。此外,在你的服务器基础架构中使用它可以使代码变得可扩展。如果你想尝试采用 GraphQL 作为你的新基础设施定义,请参见我的 GitHub 仓库中的示例代码和配置。


via: https://opensource.com/article/20/8/microservices-graphql

作者:Rigin Oommen 选题:lujun9972 译者:geekpi 校对:wxy

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

Debian 项目曾讨论永久禁止 Linus Torvalds 出席会议

众所周知,Linux 作者以脾气暴躁和言语粗鲁著称,他对此也进行过反思。本周泄露出来的 253 封发表于 2014 年的 Debian 项目内部非公开讨论邮件显示,他在 DebConf 会议上的言行引发了争议,一部分人认为他违反了社区行为准则,应当永久禁止他出席未来的会议。在几乎不参与开源社区的人提出非常强烈的担忧之后,各种社区行为准则已经涌入了一些高知名度的项目。

来源:solidot

拍一拍:我们要 Linus,不要无用的彬彬有礼和政治正确。

微软准备发布“删除 Adobe Flash Player 的更新”

微软计划在 12 月开始在其应用中禁用 Flash Player,其中包括 IE 和传统版本的 Edge。在明年 1 月份,搭载 Chromium 的 Edge 版本也将屏蔽该软件。微软会发布一个“删除 Adobe Flash Player 的更新”来从 Windows 中永久删除它,这个更新将在 2020 年秋季提供下载。Adobe 将在年底抛弃 Flash Player。

来源:softpedia

拍一拍:我们不要中国特供版。

腾讯微博将于 9 月 28 日停服

腾讯微博首页显示,由于业务调整,届时用户将无法登陆。用户如有需要,可在停止服务前备份相关信息。2014 年 11 月 4 日,网易微博宣布将正式关闭。搜狐微博也于 2014 年 11 月,进入“半放弃”状态。只剩新浪微博存活下来,微博与新浪微博已经划上了等号。

来源:新浪科技

拍一拍:俱往矣。包括新浪微博,其实也在艰难求存,被人诟病不已。

使用“优化”和它的用户主题扩展来改变你的 Linux UI。

GNOME 是一个相当简单和精简的 Linux 图形用户界面(GUI),很多用户喜欢它的简约外观。虽然它基本上是开箱即用的,但你可以根据自己的喜好来定制 GNOME 。有了 GNOME “优化” 和用户主题扩展,你可以改变顶部栏、窗口标题栏、图标、光标和许多其他 UI 选项的外观。

开始使用

在你改变你的 GNOME 主题之前,你必须安装 “ 优化 Tweaks ” 并启用用户主题扩展。

安装 GNOME “优化”

你可以在 GNOME “软件”中找到“优化”,只需点击一个按钮就可以快速安装。

 title=

如果你喜欢命令行,请使用你的软件包管理器。例如,在 Fedora 或 CentOS 上:

$ sudo dnf install gnome-tweaks

在 Debian 或类似的发行版:

$ sudo apt install gnome-tweaks

启用用户主题

要启用用户主题扩展,启动“优化”并选择“ 扩展 Extensions ”。找到 “用户主题User themes”,点击滑块启用。

 title=

获取主题

现在你已经完成了这些预先条件,你已经准备好寻找和下载一些主题了。一个寻找新主题的好网站是 GNOME-Look.org。

在页面的左侧有一个主题类别的列表。当你找到一个你想要的主题,你需要下载它。我直接把 .tar 文件下载到我的家目录下的 .themes 目录(你可能需要先创建这个目录)。

$ mkdir ~/.themes

如果你想让所有用户都能使用这个主题,请把它放在 /usr/share/themes 中。

$ tar xvf theme_archive.tar.xz

下载后,解压压缩包。你可以删除 .tar.xz 文件以节省一些磁盘空间。

应用主题

要应用你的新主题,在“优化”中进入“ 外观 Appearance ”。在这里,你可以为你的桌面的每个方面选择不同的选项。

 title=

多样性是生活的调剂品

自从第一个图形界面面市以来,能够用不同的墙纸、颜色、字体等个性化电脑桌面一直是一个受欢迎的功能。GNOME “优化”和用户主题扩展可以在所有 GNU/Linux 操作系统上的 GNOME 桌面环境中实现这种自定义。而且开源社区还在持续提供广泛的主题、图标、字体和壁纸,任何人都可以下载、尝试和定制。

你最喜欢的 GNOME 主题是什么,你为什么喜欢它们?请在评论中分享。


via: https://opensource.com/article/20/8/gnome-themes

作者:Alan Formy-Duval 选题:lujun9972 译者:geekpi 校对:wxy

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

开源法规之所以独特,是因为它对成功的要求比较特殊。一起来了解开源组织的律师如何帮助其雇主达成目标。

我是 红帽公司 ( Red Hat ) 的一名开源律师,我工作中的一个重要部分是向其他公司(包括其内部法律顾问)提供有关红帽公司如何采用完全开源的开发模式来构建企业级产品的信息,并回答他们有关开源许可的一般问题。在听了红帽公司的成功经验之后,这些律师与我对话的话题常常转变为其所在组织如何发展成为更具开源意识和能力的组织,他们也经常询问我如何改善他们的做法,以便更熟练地为其组织的雇员提供开源法律咨询。

在本文和下一篇文章中,我想阐述一下针对这些话题我通常对企业内部法律顾问是怎么说的。如果你不是内部法律顾问,而是在软件领域为客户提供法律服务的律师事务所,你可能还会发现此信息也很有用。(如果你正在考虑上法学院并成为一名开源律师,则应在进入开源律师职业之前阅读 Luis Villa 的出色文章《在入坑成为开源律师之前先要知道的那些事儿》)

我的观点基于我在各种工程实践、产品管理和律师职位上的个人经验,并且这种经验可能非常独特。我的非典型背景意味着我能通过与大多数律师不同的视角看世界。因此,下面介绍的想法可能不是传统做法,但是在我的实践中它们对我很有帮助,希望对你也有所帮助。

一、与开源组织保持联系

许多开源组织对开源律师来说特别有用,其中不少组织对开源许可协议的观点和解释具有可以衡量的影响。可以考虑加入一些著名组织,例如 开源促进组织 ( Open Source Initiative ) (OSI)、 软件自由保护组织 ( Software Freedom Conservancy ) 、 软件自由法律中心 ( Software Freedom Law Center ) 、 自由软件基金会 ( Free Software Foundation ) (FSF)、 欧洲自由软件基金会 ( Free Software Foundation Europe ) 和 Linux 基金会 ( Linux Foundation ) 。还有许多有用的邮件列表值得追踪甚至参与,例如 OSI 有关许可协议讨论和许可协议审查的邮件列表。

参加这些组织和列表将帮助你了解在落实开源法规时可能遇到的无数独特问题,比如社区如何解释开源许可协议文本里的各种术语。没有什么判例法可以指导你,但是有很多人乐于帮助你回答问题,这些资源是最好的指导来源。这也许是落实开源法规的非常独特而令人惊奇的一个方面——开发社区的开放性与法律社区提供观点和建议的开放性相匹配。你只要问就行啦!

二、采用业务经理的思维方式,并找到实现目标的途径

产品经理最终要对产品或服务的全周期负责,其中当然也包括让其产品或服务进入市场。由于我的职业生涯的大部分时间都花在服务产品管理型组织上,所以我的思路是无论如何要寻找一条途径,将可行的产品或服务推向市场。我鼓励所有律师都采用这种思维方式,因为产品和服务是所有企业的命脉。

因此,在发现问题并为面临风险的客户提供建议的法律实践中,我一直采用的方法是始终以寻找通向“YES”的途径为目标,尤其是当我的分析影响产品/服务开发和发布时。在为企业内部评估法律问题时,我的团队或我有时可能会认为风险过高。在这种情况下,请继续鼓励每个人都致力于去解决问题,因为以我的经验,解决方案最终会以一种意想不到的方式呈现出来。

确保利用你的所有资源,包括你的软件开发客户(参见下文),因为它们可以成为解决问题(通常使用技术来解决问题)的创造性方法的绝佳来源。我对这种方法感到非常高兴,我的客户似乎也对此感到满意。我鼓励所有律师考虑这种做法。

可悲的是,内部法律顾问出于自我保护总是很容易说“NO”,并消除可能对企业造成任何风险的因素。我总是发现这种回应是站不住脚的。所有商业交易都有风险。作为法律顾问,你必须了解这些风险并将其呈现给你的客户,以便他们做出有根据的业务决策。在存在任何风险时简单地说“NO”,而没有提供任何缓解风险的其他情境或途径,对组织的长期成功不利。企业需要提供产品和服务才能生存,你应该尽可能地帮助它找到通向“YES”的道路。当然,在某些情况下,你可以负有道德责任地说“NO”,但首先请穷尽所有合理的选择。

三、与开发人员建立积极关系

与你的软件开发客户建立积极关系绝对至关重要。融洽和信任是加强这些关系的两种重要方法。

1、融洽

你作为开源律师的成功通常是与软件开发人员建立积极关系的直接结果。在许多情况下,你的软件开发人员是你的法律建议的直接或间接接受者,他们将寻求你的指导和咨询。不幸的是,许多软件开发人员对律师持怀疑态度,并经常将律师视为其开发和发布软件能力的障碍。克服这种弊端的最好方法是与客户建立融洽的关系。对于大多数人来说,操作方式有所不同,但是这里有一些建议。

对客户的工作表现出兴趣:对他们项目的细节、项目的工作方式、底层的编程语言、它如何与其他系统连接以及如何使公司受益感到好奇。在确定法律风险和减轻风险的方法时,其中一些答案将在你的法律分析中很有用,但是更重要的是,这为与客户保持积极的关系打下了坚实的基础。

让你的客户清楚,你正在努力寻找通向“YES”的途径:让你的客户知道你对他们项目的某些方面感到担忧,但随后提出减轻这些担忧的想法。向他们保证,与他们一起找到解决方案,而不是成为障碍。但是这里面不能夸大其词。

参与一个开源项目:如果你具有软件开发经验,则尤其应当如此。即使你没有这样的经验,也可以通过多种方式参与,例如帮助编制文档或进行社区拓展。或仅仅是为了更多地了解他们的工作,要求参加他们的进度会议。这也让你可以按需实时提供顾问服务,以便团队可以在此过程的早期进行纠正。

2、信任

你的软件开发人员在其开源社区中非常活跃,并且是了解当前影响开源软件和开发问题的最佳资源。当你与当地的律师协会或国家层面的法律组织等保持联系,以了解最新法律进展时,你还应该与各种软件开发资源进行定期沟通,并就各种事项征求他们的意见(例如,对于此许可协议应用于某项目,社区的观点是什么?)。

四、关系造就成功

开源法规之所以独特,是因为其对成功的不寻常要求,其成功即是与其他开源律师、开源组织的联系以及与客户的深厚和互相尊重的关系。成功是这些关系的直接成果。

在本系列的第二部分中,我将探讨为什么给你的组织找到“开放”之路并开发可扩展的解决方案是如此重要,并告诉你如何去做。


作者简介:Jeffrey R. Kaufman 是全球领先的开源软件解决方案供应商 红帽公司 ( Red Hat ) 开源法务团队的资深商务法律顾问,还担任 北卡罗来纳大学 ( University of North Carolina ) 的兼职法律教授。在任职红帽公司之前,Jeffrey 曾担任 高通公司 ( Qualcomm ) 的专利和开源法律顾问。

译者简介:薛亮,集慧智佳知识产权咨询公司互联网事业部总监,擅长专利分析、专利布局、竞争对手跟踪、FTO 分析、开源软件知识产权风险分析,致力于为互联网企业、高科技公司提供知识产权咨询服务。

矿业公司淡水河谷通过区块链完成首次铁矿石销售

这笔与南京钢铁公司的交易涉及从马来西亚 Teluk Rubiah 海运码头向中国运送 17.6 万吨材料。淡水河谷表示,交易中确保了端到端的安全性和透明度,所有利益相关者都能实时看到文件。该交易的信用证是通过区块链平台 Contour 签发的。在其他房地产领域,巴西完成了有史以来第一笔完全通过区块链技术进行的交易。

来源:ZDNet

拍一拍:这是走向销售数字化的重要里程碑。

瑞士楚格州将从明年开始接受用比特币纳税

楚格州自称是 Crypto Valley,它宣布明年 2 月允许企业或个人用比特币或以太坊支付最高 10 万瑞士法郎的税款。楚格州的财政负责人 Heinz Taennler 在声明中表示他们不会有任何风险,比特币或以太坊的款项会自动转换为瑞士官方货币,因此他们收到的始终是瑞士法郎。

来源:solidot

拍一拍:比特币和区块链在不知不觉中攻城略地啊。

火狐浏览器将增加新的由下载驱动的保护功能

火狐将阻止从沙盒 iframe 发起的自动下载,使得恶意网页更难启动自动下载并在用户的电脑上植入带有恶意软件的文件。这种类型的攻击被称为“ 飞车下载 drive-by download ”,已经存在了 20 年,通常发生在用户访问一个包含攻击者放置的恶意代码的网站时。Chrome 已有类似功能, Safari 则在计划中。

来源:ZDNet

拍一拍:毕竟正常的网页很少会通过 iframe 自动发起下载。

使用 Termux 和 Flask 在你的移动设备上创建、开发和运行一个网页应用。

学习和使用 Python 是很有趣的。由于它越来越受欢迎,有越来越多的方式可以让计算世界比现在更好。

想象一下,只需一个 Android 移动设备和开源工具,就可以构建和运行一个 Python 应用,无论是开发一个命令行工具从互联网上获取你最喜欢的文章,还是启动一个直接在掌上设备运行的网页服务器,所有这些都可以实现。这将完全改变你对移动设备的看法,将它从一个仅仅让你消费内容的设备变成一个帮助你发挥创造力的设备。

在本文中,我将演示运行和测试一个简单的 Python 应用所需的所有的工具、软件包、步骤和各种零零散散的东西。我使用 Flask 框架来创建一个简单的 “Hello, World!” 应用,并在一个简单而强大的网页服务器上运行。最棒的是,这一切都发生在手机上。不需要笔记本或台式机。

在 Android 上安装 Termux

首先,安装 Termux 应用程序。Termux 是一个强大的终端仿真器,它提供了所有最流行的 Linux 命令,加上数百个额外的包,以便于安装。它不需要任何特殊的权限,你可以使用默认的 Google Play 商店或开源应用仓库 F-Droid 来安装。

安装 Termux 后,启动它并使用 Termux 的 pkg 命令执行一些必要的软件安装。

订阅附加仓库 root-repo:

$ pkg install root-repo

执行更新,使所有安装的软件达到最新状态。

$ pkg update

最后,安装 Python:

$ pkg install python

安装和自动配置完成后,就可以构建你的应用了。

在 Android 上构建一个 Android 应用

现在你已经安装了一个终端,你可以在很大程度上像使用另一台 Linux 电脑一样使用你的 Android 手机。这很好地展示了终端到底有多强大。

首先创建一个项目目录:

$ mkdir Source
$ cd Source

接下来,创建一个 Python 虚拟环境。这是 Python 开发者的常见做法,它有助于让你的 Python 项目独立于你的开发系统(在本例中是你的手机)。在你的虚拟环境中,你将能够安装特定于你应用的 Python 模块。

$ python -m venv venv

激活你的新虚拟环境(注意,开头的两个点用空格隔开)

$ . ./venv/bin/activate
(env)$

请注意你的 shell 提示符现在以 (env) 开头,表示你在虚拟环境中。

现在使用 pip 安装 Flask Python 模块。

(env) $ pip install flask

在 Android 上写 Python 代码

你已经准备好了。现在你需要为你的应用编写代码。

要做到这一点,你需要有经典文本编辑器的经验。我使用的是 vi。如果你不熟悉 vi,请安装并试用 vimtutor,它(如其名称所暗示的)可以教你如何使用这个编辑器。如果你有其他你喜欢的编辑器,如 jove、jed、joe 或 emacs,你可以安装并使用其中一个。

现在,由于这个演示程序非常简单,你也可以直接使用 shell 的 heredoc 功能,它允许你直接在提示符中输入文本。

(env)$ cat << EOF >> hello_world.py
> from flask import Flask
> app = Flask(__name__)
>
> @app.route('/')
> def hello_world():
>     return 'Hello, World!'
> EOF
(env)$

这只有六行代码,但有了它,你可以导入 Flask,创建一个应用,并将传入流量路由到名为 hello_world 的函数。

现在你已经准备好了网页服务器的代码。现在是时候设置一些环境变量,并在你的手机上启动一个网页服务器了。

(env) $ export FLASK_APP=hello_world.py
(env) $ export FLASK_ENV=development
(evn) $ python hello_world.py

启动应用后,你会看到这条消息:

serving Flask app… running on http://127.0.0.1:5000/

这表明你现在在 localhost(也就是你的设备)上运行着一个微型网页服务器。该服务器正在监听来自 5000 端口的请求。

打开你的手机浏览器并进入到 http://localhost:5000,查看你的网页应用。

你并没有损害手机的安全性。你只运行了一个本地服务器,这意味着你的手机不接受来自外部世界的请求。只有你可以访问你的 Flask 服务器。

为了让别人看到你的服务器,你可以在 run 命令中加入 --host=0.0.0.0 来禁用 Flask 的调试模式。这会打开你的手机上的端口,所以要谨慎使用。

(env) $ export FLASK_ENV=””
(env) $ flask run –host=0.0.0.0

按 Ctrl+C 停止服务器(使用特殊的 Termux 键来作为 Ctrl 键)。

决定下一步怎么做

你的手机可能不是一个严肃的网页应用的理想服务器平台,但这个例子证明了可能性是无限的。你可能会在 Android 手机上编程,只是因为这是一种方便的实践方式,或者因为你有一个令人兴奋的本地化网页应用的新想法,或者你只是碰巧使用 Flask 应用来完成自己的日常任务。正如爱因斯坦曾经说过的“想象力比知识更重要”,对于任何一个新手编码者,或者一个经验丰富的 Linux 或 Android 爱好者来说,这是一个有趣的小项目。它可以扩展到无穷的层次,所以让你的好奇心接手,并做出一些令人兴奋的东西!


via: https://opensource.com/article/20/8/python-android-mobile

作者:Phani Adabala 选题:lujun9972 译者:geekpi 校对:wxy

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