2021年6月

Linux、Python 的 Freenode IRC 频道也被关闭了

在 Freenode IRC 服务器管理权被某韩国王室继承人夺走之后,开源社区的 IRC 频道纷纷主动搬走或被迫关闭了其在 Freenode 上的频道。运行了 22 年之久的 ##linux 频道已经被 Freenode 查封,同样被查封的还有 #Python 频道。这些著名的 IRC 频道已经搬迁到了由前 Freenode 工作人员新建立 Libera.Chat 上。此外,FSF 和 GNU 也已经决定将 IRC 频道迁移到 Libera.Chat。

Freenode 是个好东西,但服务器的域名是其中最不重要的部分。

DeepMind 认为增强学习足以实现通用 AI

现在的 AI 系统只能在受限环境下解决特定问题。DeepMind 发表的论文认为,通用 AI 能通过一个简单而强有力的原则去实现:奖励最大化和试错足以发展出与智能相关的行为。AI 的一个分支 强化学习 reinforcement learning 就是基于奖励最大化的。DeepMind 的研究人员认为大自然就是如此运作的,复杂有机物不存在自上而下的智能设计,数十亿年的自然选择和随机突变过滤出适合生存和繁殖的生命形式。能更好处理挑战和适应环境的生命生存和繁衍,其余则销声匿迹。这种简单而有效的机制演化出生命的各种能力和技能。

如果通用 AI 有了显著进展,这个世界或将完全不同了。

祝融号发回自拍照

祝融号火星车行驶至着陆平台南向约 10 米处,释放安装在车底部的分离相机,之后火星车退至着陆平台附近。分离相机拍摄了火星车移动过程和火星车与着陆平台的合影。图像通过无线信号传送到火星车,再由火星车通过环绕器中继传回地面。全分辨率图像,包括着陆点的360全景图,可以在 CNSA 的官方网站上找到。

下回谁给祝融号送个自拍杆吧 :smile:

Code Blocks 是一个用 C++ 编写的开源 IDE,非常适合 C、C++ 和 Fortran 开发。它是跨平台的,可以在 Linux、macOS 和 Windows 上运行。

Code Blocks 是轻量级和快速的。它支持工作区、多目标项目、工作区内的项目间依赖关系。

你可以得到语法高亮、代码折叠、标签式界面、类浏览器、智能缩进等功能。你还可以通过插件扩展 IDE 的功能。

在本教程中,你将学习如何在基于 Ubuntu 的 Linux 发行版上安装 Code Blocks。

注意

Code Blocks 也可以在 Ubuntu 软件中心找到。然而,从 Ubuntu 21.04 开始,从 Ubuntu 软件中心以图形方式安装 Code Blocks 会安装一个 codeblocks-common 软件包,而不是图形化 IDE。因而你不能看到安装在你系统上的 Code Blocks 以运行。由于这个原因,我建议采取终端的方式在 Ubuntu 上安装 Code Blocks。

在基于 Ubuntu 的 Linux 发行版上安装 Code Blocks

Code Blocks IDE 在所有 Ubuntu 版本的 universe 库中都有。虽然它通常是默认启用的,但先启用 universe 仓库也无妨:

sudo add-apt-repository universe

更新软件包缓存,这样系统就能知道新添加的仓库中的额外软件包的可用性:

sudo apt update

最后,你可以使用 apt install 命令在基于 Ubuntu 的发行版上安装 Code Blocks:

sudo apt install codeblocks

建议你也安装额外的插件,以便从 Code Blocks IDE 中获得更多。你可以使用 codeblocks-contrib 包来安装它们:

sudo apt install codeblocks-contrib

如何使用 Code Blocks

在系统菜单中搜索 “Code Blocks”。这是在 Ubuntu 默认的 GNOME 版本中的样子:

当你第一次启动 Code Blocks 时,它会寻找你系统中所有可用的编译器,并将其添加到路径中,这样你就不用自己去配置它了。

在我的例子中,我的 Ubuntu 系统上已经安装了 gcc,Code Blocks 很好地识别了它。

Code Blocks 的用户界面绝对不够现代,但请记住,这个 IDE 是轻量级的,它几乎消耗不到 50MB 的内存。

如果你曾经使用过像 Eclipse 这样的其他 IDE,你就不会觉得使用 Code Block 有什么困难。你可以写你的代码并把它们组织在项目中。

构建、运行并构建和运行按钮一起放在顶部。

当你运行代码时,它会打开一个新的终端窗口来显示输出。

这就是你需要的关于 Code Blocks 的最少信息。剩下的留给你,你可以通过浏览它的 维基用户手册 来进一步探索它。

拥有一个 IDE 可以使 在 Linux 上运行 C 或 C++ 程序 更容易。Eclipse 是一个很好的 IDE,但它比 Code Blocks 要消耗更多的系统资源。当然,最后,重要的是你的选择。


via: https://itsfoss.com/install-code-blocks-ubuntu/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

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

创建一个 API(应用程序接口),我们所要做的远远不止是让它能“正常工作”。

 title=

如果你正在构建基于 C/S 模型的应用程序,那么你需要一个应用程序接口(API)。API 就是一种非常清晰而又明确的定义,它是一个 进程 process 与另一个进程之间明确定义的边界。Web 应用中我们常见的边界定义就是 REST/JSON API。

虽然很多开发者可能主要关注在如何让 API 正常工作(或功能正常),但却还有一些“非功能性”的要求也是需要他们注意的。所有的 API 必须具备 的 4 个非功能性的要求是:

  • 安全
  • 文档
  • 验证
  • 测试

安全

在软件开发中,安全是最基本的要求。对于 API 开发者来说,API 的安全性主要包含以下 4 个方面:

  1. HTTPS/SSL 证书
  2. 跨域资源共享
  3. 身份认证与 JSON Web 令牌
  4. 授权与作用域

1、HTTPS/SSL 证书

Web 应用的黄金标准是使用 SSL 证书的 HTTPS 协议。Let's Encrypt 可以帮你达到这一目的。Let's Encrypt 来自于非营利性的互联网安全研究小组(ISRG),它是一个免费的、自动化的、开放的证书颁发机构。

Let's Encrypt 的软件会为你的域(LCTT 译注:包含域名、IP 等信息)生成中央授权证书。而正是这些证书确保了从你的 API 到客户端的数据载荷是点对点加密的。

Let's Encrypt 支持证书管理的多种部署方案。我们可以通过查看 文档 来找出最适合自己需要的方案。

2、跨域资源共享

跨域资源共享 Cross-origin resource sharing (CORS)是一个针对浏览器的安全策略预检。如果你的 API 服务器与发出请求的客户端不在同一个域中,那么你就要处理 CORS。例如,如果你的服务器运行在 api.domain-a.com 并且接到一个来自 domain-b.com 的客户端的请求,那么 CORS 就会(让浏览器)发送一个 HTTP 预检请求,以便查看你的 API 服务是否会接受来自此客户域的客户端请求。

来自 MDN 的定义

“跨域资源共享(CORS)是一种基于 HTTP 头的机制,这种机制允许服务器标记除自身源外的其他任何来源(域、方案或端口)。而对于这些被服务器标识的源,浏览器应该允许我们从它们加载资源。”

 title=

(MDN文档CC-BY-SA 2.5)

另外,有很多用于 Node.js 的辅助库来 帮助 API 开发者处理 CORS

3、身份认证与 JSON Web 令牌

有多种方法可以验证你的 API 中的认证用户,但最好的方法之一是使用 JSON Web 令牌(JWT),而这些令牌使用各种知名的加密库进行签名。

当客户端登录时,身份管理服务会向客户端提供一个 JWT。然后,客户端可以使用这个令牌向 API 发出请求,API 收到请求后,从服务器读取公钥或私密信息来验证这个令牌。

有一些现有的库,可以帮助我们对令牌进行验证,包括 jsonwebtoken。关于 JWT 的更多信息,以及各种语言中对其的支持库,请查看 JWT.io

import jwt from 'jsonwebtoken'

export default function (req, res, next) {
    // req.headers.authorization Bearer token
    const token = extractToken(req)
    jwt.verify(token, SECRET, { algorithms: ['HS256'] }, (err, decoded) => {
        if (err) { next(err) }
        req.session = decoded
        next()
    })
}

4、授权与作用域

认证(或身份验证)很重要,但授权同样很重要。也就是说,经过验证的客户端是否有权限让服务器执行某个请求呢?这就是作用域的价值所在。当身份管理服务器对客户端进行身份认证,且创建 JWT 令牌时,身份管理服务会给当前客户提供一个作用域,这个作用域将会决定当前经过验证的客户的 API 请求能否被服务器执行。这样也就免去了服务器对访问控制列表的一些不必要的查询。

作用域是一个文本块(通常以空格分隔),用于描述一个 API 端点的访问能力。一般来说,作用域被分为资源与动作。这种模式对 REST/JSON API 很有效,因为它们有相似的 RESOURCE:ACTION 结构。(例如,ARTICLE:WRITEARTICLE:READ,其中 ARTICLE 是资源,READWRITE 是动作)。

作用域的划分让我们的 API 能够专注于功能的实现,而不是去考虑各种角色和用户。身份访问管理服务可以将不同的角色和用户分配不同的权限范围,然后再将这些不同的作用域提供给不同的 JWT 验证中的客户。

总结

当我们开发和部署 API 时,安全应该一直是最重要的要求之一。虽然安全性是一个比较宽泛的话题,但如果能解决上面四个方面的问题,这对于你的 API 来说,在生产环境中将会表现得更好。

文档

有什么能比没有文档更糟糕?过期的文档。

开发者对文档真的是又爱又恨。尽管如此,文档仍然是 API 定义是否完善的一个关键部分。开发者需要从文档中知道如何使用这些 API,且你创建的文档对于开发者如何更好地使用 API 也有着非常巨大的作用。

创建 API 文档,我们需要关注下面三个方面:

  1. 开发者入门文档(自述文件/基本介绍)
  2. 技术参考(规范/说明书)
  3. 使用方法(入门和其他指南)

1、入门文档

在构建 API 服务的时候,你需要明确一些事情,比如:这个 API 是做什么的?如何建立开发者环境?如何测试该服务?如何提交问题?如何部署它?

通常我们可以通过自述(README)文件来回答上面的这些问题,自述文件一般放在你的代码库中,用于为开发者提供使用你项目的最基本的起点和说明。

自述文件应该包含:

  • API 的描述
  • 技术参考与指南的链接
  • 如何以开发者的身份设置你的项目
  • 如何测试这个项目
  • 如何部署这个项目
  • 依赖管理
  • 代码贡献指南
  • 行为准则
  • 许可证
  • 致谢

你的自述文件应该简明扼要;你不必解释每一个方面,但要提供足够的信息,以便开发者在熟悉你的项目后可以进一步深入研究。

2、技术参考

在 REST/JSON API 中, 每一个具体的 端点 endpoint 都对应一个特定的功能,都需要一个具体的说明文档,这非常重要。文档中会定义 API 的描述,输入和可能的输出,并为各种客户端提供使用示例。

OpenAPI 是一个创建 REST/JSON 文档的标准, 它可以指导你完成编写 API 文档所需的各种细节。OpenAPI 还可以为你的 API 生成演示文档。

3、使用方法

对于 API 的用户来说,仅仅只有技术说明是不够的。他们还需要知道如何在一些特定的情况和场景下来使用这些 API,而大多数的潜在用户可能希望通过你的 API 来解决他们所遇到的问题。

向用户介绍 API 的一个好的方法是利用一个“开始”页面。“开始”页面可以通过一个简单的用例引导用户,让他们迅速了解你的 API 能给他们能带来的益处。

总结

对于任何完善的 API,文档都是一个很关键的组成部分。当你在创建文档时,你需要关注 API 文档中的如何入门、技术参考以及如何快速开始等三个方面,这样你的 API 才算是一个完善的 API。

验证

API 开发过程中经常被忽视的一个点就是验证。它是一个验证来自外部来源的输入的过程。这些来源可以是客户端发送过来的 JSON 数据,或者是你请求别人的服务收到的响应数据。我们不仅仅要检查这些数据的类型,还要确保这些数据确实是我们要的数据,这样可以消除很多潜在的问题。了解你的边界以及你能控制的和不能控制的东西,对于 API 的数据验证来说是一个很重要的方面。

最好的策略是在进入数据逻辑处理之前,在你能控制的边界的边缘处进行数据的验证。当客户端向你的 API 发送数据时,你需要对该数据做出任何处理之前应用你的验证,比如:确保 Email 是真实的邮件地址、日期数据有正确的格式、字符串符合长度要求。

这种简单的检查可以为你的应用增加安全性和一致性。还有,当你从某个服务接收数据时,比如数据库或缓存,你需要重新验证这些数据,以确保返回的结果符合你的数据检查。

你可以自己手写这些校验逻辑,当然也可以用像 LodashRamda 这样的函数库,它们对于一些小的数据对象非常有用。像 JoiYupZod 这样的验证库效果会更好,因为它们包含了一些常见的验证方法,可以节省你的时间和精力。除此,它们还能创建一个可读性强的模式。如果你需要看看与语言无关的东西,请看 JSON Schema

总结

数据验证虽然并不显眼和突出(LCTT 译注:跟 API 的功能实现以及其他几个方面比),但它可以帮你节省大量的时间。如果不做验证,这些时间将可能被用于故障排除和编写数据迁移脚本。真的不要相信你的客户端会发送干净的数据给你,也不要让验证不通过的数据渗入到你的业务逻辑或持久数据存储中去。花点时间验证你的 API 收到的数据和请求到的响应数据,虽然在前期你可能会感到一些挫折和不适,但这总比你在后期花大量时间去做各种数据收紧管制、故障排除等要容易得多。

测试

测试是软件开发中的最佳实践,它应该是最主要的非功能性的要求。对于包括 API 在内的任何项目,确定测试策略都是一个挑战,因为你自始至终都要掌握各种约束,以便相应的来制定你的测试策略。

集成测试 Integration testing 是测试 API 的最有效的方法之一。在集成测试模式中,开发团队会创建一个测试集用来覆盖应用流程中的某些部分,从一个点到另一个点。一个好的集成测试流程包括测试 API 的入口点以及模拟请求到服务端的响应。搞定这两点,你就覆盖了整个逻辑,包括从 API 请求的开始到模拟服务器的响应,并返回数据给 API。

虽然使用的是模拟,但这种方法让能我们专注于代码逻辑层,而不需要去依赖后端服务和展示逻辑来进行测试。没有依赖的测试会更加可靠、更容易实现自动化,且更容易被接入持续集成管道流。

集成测试的实施中,我会用 TapeTest-serverFetch-mock。这些库让我们能够从 API 的请求到数据的响应进行隔离测试,使用 Fetch-mock 还可以将出站请求捕获到持久层。

总结

虽然其他的各种测试和类型检查对 API 也都有很好的益处,但集成测试在流程效率、构建和管理时间方面却有着更大的优势。使用 Fetch-mock 这样的工具,可以在服务边界提供一个干净的模拟场景。

专注于基础

不管是设计和构建应用程序还是 API,都要确保包含上面的四个基本要素。它们并不是我们唯一需要考虑的非功能性需求,其他的还包括应用监控、日志和 API 管理等。即便如此,安全、文档、验证和测试这四个基本点,对于构建任何使用场景下的完善 API 都是至关重要的关注点。


via: https://opensource.com/article/21/5/successful-apis

作者:Tom Wilson 选题:lujun9972 译者:ywxgod 校对:wxy

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

加密货币矿工滥用迫使 Docker Hub 取消免费构建服务

本周,Docker Hub 宣布其自动构建服务不再提供给免费用户。那些滥用的加密货币矿工们在这些免费云计算平台上肆虐。这不仅让 Docker Hub 额外付出很多成本,而且还降低了他们的付费客户的性能。该公司试图通过删除大约一万个账户来解决这个问题,但这些滥用的矿工们接下来又成群结队地返回。因此,在提供免费构建服务七年之后,Docker 公司将于 6 月 18 日停止免费构建服务。

之前是利用 GitHub Action,现在又盯上了 Docker Hub 的自动构建,这些无耻的小偷们滥用了开源世界的免费服务。

我不反对花自己钱去挖矿,但是这种利用别人的免费服务或盗用别人的计算机挖矿就是一种盗窃行为。

7 年之久的 Linux 特权升级漏洞的补丁发布

Polkit 是一个包含在几乎所有现代 Linux 发行版中的 Linux 系统服务,它为非特权进程与特权进程的通信提供了一种有组织的方式,七年来它一直隐藏着一个重大的安全漏洞。该漏洞允许非特权用户通过少数的标准命令行工具获得管理权限的 Shell。任何使用 systemd 的 Linux 发行版均受影响,包括最新的 RHEL 8 和 Ubuntu 20.04。

请尽快升级系统。

84 亿:史上最大的密码清单在网上公布

有人在网上的黑客论坛提交了一个 100GB 的文本文件,其中包含 84 亿个密码,很可能是从以前的数据泄露和安全漏洞中汇编的。上传者声称,所有密码的长度都在 6 到 20 个字符之间,并删除了所有非 ASCII 字符和空白字符。这个名为 RockYou2021 的集合包含了“众多泄露事件汇编(COMB)” 所有 32 亿个密码,以及其他已披露数据库的密码。由于全球在线用户只有 47 亿人,RockYou2021 可能包含了世界上近三分之二人口的密码。你可以通过 CyberNews 的泄漏密码检查器来检查你的密码是否已经被泄露。

几乎可以肯定你的密码已经泄露,你需要的密码之外的保护,比如双因子认证。

毫无疑问,微软的 VS Code是最好的开源代码编辑器之一。它与传说中的 Vim 不同,VS Code 不需要你是一个快捷键大师(LCTT 译注:以下都指键盘快捷键),开发者们对它大部分的功能都及其熟悉,且推崇备至。

但这并不意味着你不能成为快捷键大师,或者说你在 VS Code 中不应该使用快捷键。

在敲代码的时候,你可能需要用鼠标去执行其他的动作,比如在 VS Code 编辑器中切换终端,而此时你的代码流程会被打断,这是不是很讨厌?如果是的,那么你应该立即熟记下面这些 VS Code 有用的快捷键。

它不仅能帮助你摆脱鼠标,还能使你的生产力和工作效率得到提高。

那么,让我们来了解一下如何通过使用快捷键快速进行代码导航来进行快速编码。

有用的 VS Code 快捷键

免责声明。下面的这些快捷键是我在 VS Code 的使用中发现的较为有用的,你可以根据你的需要来发现更多有用的快捷键。

下面我还给出了 MacOS 用户的键盘快捷键。

1、显示所有命令

Windows/LinuxmacOS
CTRL + SHIFT + PF1SHIFT + ⌘ + PF1

我们从最有用的快捷键开始,这个快捷键能打开命令面板(列表),它提供了对 VS Code 所有功能的访问。

命令面板

这是一个非常重要的 VS Code 快捷键,因为即使你忘记了或不想记起其他任何快捷键,但你记得这个,那么你仍然可以使用命令面板进行各种操作,如创建新文件、打开设置、改变主题,还可以查看所有快捷键。

2、垂直和水平拆分 VS Code 编辑器

Windows/LinuxmacOS
CTRL + \⌘ + \

为了提高效率,但你又没有安装多个显示器,那么你可以通过水平或垂直分割 VS Code 的编辑器来一次查看多个文件的代码。

分割 VS Code 编辑区

要在多个编辑区间切换焦点,你可以使用数字键或箭头键。

Windows/LinuxmacOS
CTRL + 1/2/3⌘ + 1/2/3
CTRL + K CTRL + ←/⌘ + K ⌘ + ←/

3、切换集成终端

Windows/LinuxmacOS
CTRL + `⌘ + `

VS Code 中的集成终端是一个非常方便的功能,它可以让你在不切换窗口的情况下快速执行任务。要在编辑器中显示/隐藏终端,下面的快捷键会非常方便。

集成终端

但是,如果你跟我一样觉得 CTRL + 在键盘的角落位置而比较难按到,你可以打开命令面板执行View: Toggle Terminal` 命令来切换终端。

使用命令面板切换终端

4、转到文件

Windows/LinuxmacOS
CTRL + P⌘ + P

随着项目的壮大,查找文件可能会变得困难。因此,我建议,即使你使用鼠标,这个命令也能为你节省很多搜索和导航到版本库中的文件的时间。

转到文件

5、转到行

Windows/LinuxmacOS
CTRL + G^ + G

当你找到文件,你可能需要去到文件中指定的行增加或编辑代码,而如果这个文件包含了数千行代码,那么滚动代码将会浪费你大量的时间。而 CTRL + G^ + G 快捷键能让你快速的去掉指定的行。

转到行

另外,你也可以使用上面的转到文件的快捷键,在输入框中输入冒号 : 加行号,结果就跟转到行是一样的。

6、在整个项目中搜索

Windows/LinuxmacOS
CTRL + SHIFT + F⌘ + SHIFT + F

很可能你需要在整个项目中搜索一个文本、变量或函数,在这种情况下,上面的命令就非常方便,它会在侧边栏显示一个搜索输入框。

在项目中搜索

我们还可以在搜索的时候添加一些过滤器,比如使用 ALT+C 来启用大写匹配,ALT+W 用于匹配整个单词,ALT+R 用于启用正则表达式。

7、禅模式

Windows/LinuxmacOS
CTRL + K Z⌘ + K Z

想要在不受干扰的环境中工作以保持更专注? 你可以试试禅模式(先按下 CTRL + K,再按下 Z),它会隐藏所有 UI(状态栏、活动栏、面板和侧边栏)并仅在全屏上显示编辑器。

禅模式

要启用禅模式,你可以使用上面的快捷键或者打开命令面板执行 View: Toggle Zen Mode,要退出禅模式,你可以按两次 Esc 键。

8、将选择添加到下一次匹配中

Windows/LinuxmacOS
CTRL + D⌘ + D

这条命令能让你选择所选文本的下一个出现的地方,从而进行编辑。如果下一个匹配出现的位置与第一个相离较远,那这将会很方便处理。

查找下一个匹配

9、切换行注释

Windows/LinuxmacOS
CTRL + /⌘ + /

将光标移到行的开头,然后添加双斜杠进行注释,这种麻烦的操作我们可以用上面的快捷键来代替了。

注释代码

甚至,如果你想注释多行代码,你可以先通过 SHIFT+UP/Down 快捷键来选中多行,然后按 CTRL+/ 快捷键进行注释。

10、转到文件的开头或结尾

Windows/LinuxmacOS
CTRL + HOME/END⌘ + ↑/

如果你迷失在文件的中间位置,该命令可以让你快速达到文件的起点或终点。

11、代码折叠或打开

Windows/LinuxmacOS
CTRL + SHIFT + [/]⌥ + ⌘ + [/]

这也是最有用的快捷键之一,它可以帮助你折叠/取消折叠一个区域的代码。通过这种方式,你可以隐藏不必要的代码,每次只查看所需的部分代码,以便更加专注和快速编码。

折叠一块代码

12、窥视执行

Windows/LinuxmacOS
CTRL + SHIFT + F12⌘ + SHIFT + F12

这个快捷键最有可能的作用是帮助你进行代码分析,或修复 bug 时了解函数和变量的运行情况。

窥视执行

13、删除当前行

Windows/LinuxmacOS
CTRL + SHIFT + KSHIFT + ⌘ + K

这是一条可以快速执行,选中当前行并按删除/退格键,这两个任务的简单命令。

14、查找与替换

Windows/LinuxmacOS
CTRL + F⌘ + F
CTRL + H⌥ + ⌘ + F

用一个新的文本替换文件中所有出现的该文本的最好方法是什么?如果你手动一个一个的通过滚动代码来处理,且如果需要替换的地方又很多,那么你可能会花费大量的时间。

查找与替换

而使用查找和替换功能我们能在几秒内完成相同的任务。你可以用两个快捷键来打开它,其中一个实际上是打开用于查找文本的输入框,另一个用于输入新的文本。

15、VS Code 的全部键盘快捷键

Windows/LinuxmacOS
CTRL + K CTRL + S⌘ + K ⌘ + S

最后,如果你还在为记住上述所有的快捷键而苦恼,你大可不必。因为你可以使用上面的快捷键查看编辑器所有可用的命令。

快捷键

你还可以根据自己的喜好编辑命令的绑定键。

想要为 VS Code 添加更多快捷键?

如果你想对 VS Code 的快捷键有完整的了解,你可以查看 VS Code 的 文档

或者,如果你想在纸上将所有快捷键打印出来慢慢看,下面这些是各个系统对应的快捷键速查表: LinuxmacOSWindows


via: https://itsfoss.com/vs-code-shortcuts/

作者:Sarvottam Kumar 选题:lujun9972 译者:ywxgod 校对:wxy

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

了解 BHM 对他们意味着什么,什么影响了他们的职业生涯,为想要进入科技领域的少数族群提供资源,等等。

 title=

为了纪念 BHM,我收集了一些我最喜欢的技术专家和开源贡献者的意见。这四位正在为下一代铺路,同时也在为他们在科技行业所做的工作铺路。了解 BHM 对他们意味着什么,是什么影响了他们的职业生涯,为想要进入科技领域的少数族群提供资源,等等。

Tameika Reed,Women In Linux 创始人

自 Women In Linux 发起以来,Tameika 一直致力于探索基础设施、网络安全、DevOps 和物联网领域的职业生涯,并致力于领导力和持续技能的培养。作为一个自学成才的系统管理员,Tameika 相信学习技术的最好方法就是深入其中。为了给女性一个全面的角度来看技术,Tameika 每周都会举办一次线上会议来探讨 Hyperledger、Kubernetes、微服务和高性能计算等 Linux 常规之外的技术。Tameika 的职业生涯包括与 OSCon、LISA 2018、Seagl、HashiCorp EU 2019 不同的会议以及各种当地活动进行会议发言。

Michael Scott Winslow,Comcast 公司核心应用与平台总监

“我是一个父亲、丈夫、兄弟、儿子。我出生在一个小家庭,所以我很乐于把朋友们变成一个大家庭。当我把我的名字附在某件事上时,我就非常希望它能成功,所以我很在意我参与的事情。噢,在我的职业生涯中我已经做了数十年的软件开发。我解决问题,和别人合作一起帮助解决大问题,我带领、引导和指导年轻的软件工程师的同时观察我想要学习的人。”

Bryan Liles,VMware 资深工程师

“我正在和我们的团队一起重新思考开发人员如何与 Kubernetes 进行交互。当我不工作的时候,我就制造机器人和在社区里努力激励下一代的软件工程师。”

Mutale Nkonde,AI For the People(AFP)首席执行官

AFP 是一家非营利性的创意机构。在创办非营利组织之前,Nkonde 从事人工智能治理工作。在此期间,她是向美国众议院提出《算法和深度伪造算法法案》以及《无生物识别障碍住房法案》的团队成员之一。Nkonde 的职业生涯中最开始是做广播记者,曾在英国广播公司(BBC)、美国有线电视新闻网(CNN)和美国广播公司(ABC)工作。她还广泛从事种族和科技方面的写作,并在哈佛大学和斯坦福大学获得奖学金。

是什么影响了你选择技术领域的职业?

当我回到大学的时候,我害怕电脑。我害怕电脑是因为我从大学辍学了。之后我又回去了,我就把尽我所能学习作为自己的任务。这是我至今的座右铭,学习永不停止。— Tameika Reed

我不会拐弯抹角,我小时候是个极客!在我 10 岁的时候,我就从印刷杂志上读到的代码开始每天写 GW-BASIC。在我上高中的时候,我给了自己一点喘息的时间来享受生活,但是当到了为大学选择专业的时候,这是一个很容易做出的选择。我留在了科技行业,这得感谢我一路走来遇到的了不起的导师和同事。— Michael Scott Winslow

我从中学就开始写软件了。我喜欢告诉电脑去做事情并看到结果。长大后,我很快就意识到,拥有一份让我满意、收入高的工作才是正确的选择。— Bryan Liles

我想知道为什么科技公司雇佣的黑人女性这么少。 — Mutale Nkonde

在开源技术领域有没有某个特别的人给了你启发?

我从很多其他人和项目中得到启发。比如我喜欢看到其他人来到 Women In Linux,并确定他们想去哪里。我试着让人们从更全面的角度来看科技,这样他们就可以决定自己喜欢什么。说自己想在科技行业工作很容易,但要入手并坚持下去很难。你不必仅仅是一个程序员,你也可以成为一个云计算架构师。— Tameika Reed

Kelsey HightowerBryan Liles 和 Kim Scott 激励了我。他们是如此真实!他们说的都是我每天的感受和经历。做好你的工作!别抱怨了!承认你的行为,并明白你是如何促成你的处境的!Gene Kim 也给了我很大的启发。作为 DevOps 运动的领导者,我看到自己在追随和模仿他做的很多事情。 — Michael Scott Winslow

不,我没有看到我想要的灵感,所以我努力成为 20 年前那个给我启发的人。 — Bryan Liles

太多了!我最喜欢的一个是:Dorothy Vaughan,她是美国第一个为 IBM 沃森电脑编程的人。她的故事被记录在电影《Hidden Figures》中。 — Mutale Nkonde

你有什么特别的资源可以推荐给那些想要加入科技行业的少数人吗?

有,我建议你在 Twitter 上交一些朋友,然后提问。以下是我在科技界关注和欣赏的一些人: — Tameika Reed

受重视的新人训练营确实缩短了人们加入科技行业的时间。我遇到过几位经过培训的专业人士,他们都比 4 年制学校的同行更出色。我认为我们可以真正开始尊重人们创造的成果,而不是技术的熟练。 — Michael Scott Winslow

我不确定我能推荐什么具体的东西。科技是一个很大的整体,所以没有一个简单的答案。我的建议是选择你认为会感兴趣的东西,并努力成为这个方面的专家。从问为什么开始,而不是怎么做,并且开始理解事物是如何一起运作的。 — Bryan Liles

这取决于他们想做什么工作。对于那些在科技和社会公正的交汇处工作的人,我推荐 Safiya Noble 的《Algorithms of Oppression》一书。 —Mutale Nkonde

你对有色人种将科技作为他们的职业有什么建议?

我建议你学习自己的技能。你将是一个永远的学习者。总会有人或事挡在你的路上,你的反应和行动将取决于你自己。永远不要拒绝第一个提议,要知道自己的价值。我看技术就像看艺术一样。发展需要时间,所以要对自己有耐心,拔掉插头说不也没关系。 — Tameika Reed

作为一个有点像行业保护者一样的人,我不想要不适合技术的人。所以要真正判断自己是否适合科技。你是一个能解决问题的人吗?你是否理性多于感性?你是否经常发现自己在创造过程?如果是这样,无论你的背景如何,我认为你都可以在科技行业找到一个家。— Michael Scott Winslow

事情不会那么简单。你的进步会因为你的族群而减慢。你必须更努力工作。把逆境当作动力。你要比周围的人准备的更充分,这样当机会出现时你就能够应对它。找一个与你相似的人的网络,私下发泄不满,公开展示实力。你属于这里,你就能成功。 — Bryan Liles

除了为一家公司工作,也在发展公共利益技术领域,我们的工作中心是技术如何影响真实的人。许多领导这项工作的人是有色人种妇女,黑人妇女正在取得巨大的进步。— Mutale Nkonde

BHM 对你来说意味着什么?

意味着永不停止,为你永远不会忘记。 —Tameika Reed

BHM 对我来说意味着关注塔斯克基飞行队而不是奴隶制。强调我们如何为历史做出贡献,而不是如何成为历史的受害者。我希望人们理解我们的骄傲来自哪里,而不是我们的愤怒。在我们的人民身上发生了很多非常糟糕的事情,但我们还站在这里。坚强!— Michael Scott Winslow

BHM 是一个反思被遗忘的美国黑人历史的日子。我把它当作是感谢我的祖先所做的牺牲的时刻。— Bryan Liles

这是一个集中体现全球黑人所作贡献的时刻。我喜欢它,这是我一年中最喜欢的时间之一。 — Mutale Nkonde


via: https://opensource.com/article/20/2/careers-tech-minorities

作者:Shilla Saebi 选题:lujun9972 译者:M4Xrun 校对:wxy

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