Category : 教程系列

介绍 本文将教你如何在 React 中渲染数组,以及在组件中渲染不同元素时使用的最佳实践。 使用像 JavaScript 这样的现代 Web 语言的优势之一是您可以快速自动生成 HTML 块。 对数组或对象使用循环之类的东西意味着您只需为每个项目编写一次 HTML。更好的是,任何未来的编辑都只需应用一次。 渲染多个元素 要在 React 中渲染多个 JSX 元素,您可以使用.map()方法遍历数组并返回单个元素。 下面,您遍历reptiles数组并li为数组中的每个项目返回一个元素。当您想为数组中的每个项目显示单个元素时,可以使用此方法: function ReptileListItems() { const reptiles = [“alligator”, “snake”, “lizard”]; return reptiles.map((reptile) => <li>{reptile}</li>); } 输出将如下所示: Output- alligator – snake – lizard 在下一个示例中,您将检查为什么要向key由数组呈现的元素列表添加唯一项。 渲染组件内的元素集合 在此示例中,您将遍历一个数组并创建一系列列表项组件,就像前面的示例一样。 首先,更新代码以使用<ol>组件来保存<li>项目。该<ol>组件将创建项目的有序列表: function ReptileList() { const reptiles = [“alligator”, “snake”, “lizard”]; return ..

Read more

本教程的早期版本由Justin Ellingwood编写。 介绍 在存储任何关键数据时,单点故障是非常危险的。虽然许多数据库和其他软件允许您在单个应用程序的上下文中分散数据,但其他系统可以在文件系统级别上运行,以确保数据在写入磁盘时被复制到另一个位置。 GlusterFS是一个网络附加存储文件系统,允许您将多台机器的存储资源池化。反过来,这使您可以将分布在多台计算机中的多个存储设备视为一个功能更强大的单元。GlusterFS 还让您可以自由地创建不同类型的存储配置,其中许多在功能上类似于RAID级别。例如,您可以跨集群中的不同节点对数据进行条带化,或者您可以实施冗余以提高数据可用性。 目标 在本指南中,您将创建一个冗余集群存储阵列,也称为分布式文件系统,或者 GlusterFS 文档中提到的可信存储池。这将提供类似于网络上的镜像 RAID 配置的功能:每个独立服务器将包含自己的数据副本,允许您的应用程序访问任一副本,从而帮助分配读取负载。 这个冗余的 GlusterFS 集群将由两台 Ubuntu 18.04 服务器组成。这将类似于具有镜像 RAID的NAS服务器。然后,您将从配置为 GlusterFS 客户端的第三个 Ubuntu 18.04 服务器访问集群。 关于安全运行 GlusterFS 的注意事项 当您将数据添加到 GlusterFS 卷时,该数据会同步到托管该卷的存储池中的每台机器。默认情况下,节点之间的通信未加密,这意味着存在被恶意行为者拦截的风险。 因此,如果您打算在生产中使用 GlusterFS,建议您在隔离网络上运行它。例如,您可以将其设置为在虚拟私有云(VPC) 中运行或在每个节点之间运行 VPN。 如果您计划在 DigitalOcean 上部署 GlusterFS,您可以通过将您的服务器基础设施添加到 DigitalOcean 虚拟私有云来在隔离网络中进行设置。有关如何设置的详细信息,请参阅我们的VPC 产品文档。 先决条件 要学习本教程,您需要三台运行 Ubuntu 18.04 的服务器。每个服务器都应该有一个具有管理权限的非 root 用户,以及一个配置有 UFW 的防火墙。要进行设置,请按照我们针对 Ubuntu 18.04 的初始服务器设置指南进行操作。 注意:如目标部分所述,本教程将引导您配置两台 Ubuntu ..

Read more

介绍 从经典forloop到forEach()方法,各种技术和方法被用于在 JavaScript 中迭代数据集。最流行的方法之一是.map()方法。.map()通过对父数组中的每个项目调用特定函数来创建一个数组。.map()是一种非变异方法,它创建一个新数组,而不是变异方法,变异方法只对调用数组进行更改。 这种方法在处理数组时有很多用途。在本教程中,您将了解.map()JavaScript中四个值得注意的用法:调用数组元素的函数、将字符串转换为数组、在 JavaScript 库中呈现列表以及重新格式化数组对象。 先决条件 本教程不需要任何编码,但如果您有兴趣跟随示例,您可以使用Node.js REPL或浏览器开发人员工具。 要在本地安装 Node.js,您可以按照如何安装 Node.js 和创建本地开发环境中的步骤操作。 Chrome DevTools可通过下载并安装最新版本的Google Chrome 来获得。 第 1 步 – 对数组中的每一项调用函数 .map()接受回调函数作为其参数之一,该函数的一个重要参数是该函数正在处理的项目的当前值。这是一个必需的参数。使用此参数,您可以修改数组中的每一项并创建一个新函数。 下面是一个例子: const sweetArray = [2, 3, 4, 5, 35] const sweeterArray = sweetArray.map(sweetItem => { return sweetItem * 2 }) console.log(sweeterArray) 此输出记录到控制台: Output[ 4, 6, 8, 10, 70 ] 这可以进一步简化以使其更清晰: // ..

Read more

本教程的早期版本由Melissa Anderson编写。 介绍 MongoDB也称为Mongo,是现代 Web 应用程序中常用的开源文档数据库。默认情况下,它只允许源自安装它的同一服务器上的连接。如果要远程管理 MongoDB 或将其连接到单独的应用程序服务器,则需要对默认配置进行一些更改。 在本教程中,您将配置 MongoDB 安装以安全地允许从受信任的远程计算机进行访问。为此,您将更新防火墙规则以提供对 MongoDB 正在侦听连接的端口的远程计算机访问,然后更新其配置文件以更改其 IP 绑定设置。然后,作为最后一步,您将测试远程计算机是否能够成功连接到数据库。 先决条件 要完成本教程,您需要: 运行 Ubuntu 18.04 的服务器。此服务器应具有非 root 管理用户和使用 UFW 配置的防火墙。按照我们针对 Ubuntu 18.04 的初始服务器设置指南进行设置。 MongoDB 安装在您的服务器上。本教程假设您已安装MongoDB 4.4或更新版本。您可以按照我们关于如何在 Ubuntu 18.04 上安装 MongoDB 的教程安装此版本。 用于访问 MongoDB 实例的第二台计算机。为简单起见,本教程假设这台机器是另一台 Ubuntu 18.04 服务器,具有非 root 管理用户和按照我们的 Ubuntu 18.04 初始服务器设置指南配置的 UFW 防火墙。但是,步骤 1 和 2 描述了在数据库服务器上启用远程连接的实际过程,无论远程机器运行的是什么操作系统,它们都将起作用。 最后,虽然不需要完成本教程,但我们强烈建议您通过为数据库创建管理用户帐户并启用身份验证来保护您的 MongoDB ..

Read more

作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 在有很多功能的情况下,与软件交互可能是一项艰巨的任务。在某些情况下,执行类似操作需要重复步骤,例如每次执行操作时导航菜单或填写表单。聊天机器人是一种虚拟助手,可帮助软件系统的用户访问信息或执行操作,而无需经过漫长的过程。这些助手中的许多都是对话式的,这提供了一种更自然的与系统交互的方式。 要创建对话式聊天机器人,您可以使用Dialogflow 等平台来帮助您在高层次上设计聊天机器人。或者,您可以使用spaCy 之类的库自己构建一个,它是一种快速且强大的基于 Python 的自然语言处理 (NLP) 库。spaCy 提供了有用的功能,例如确定单词在语句中所属的词性、查找两个语句在含义上的相似程度等。 在本教程中,您将创建一个聊天机器人,它不仅可以帮助用户简化与软件系统的交互,而且还足够智能,可以用自然语言(本教程中的美式英语)与用户进行交流。聊天机器人将使用OpenWeather API告诉用户世界上任何一个城市的当前天气情况,但您可以实现聊天机器人以使用另一个 API 处理用例。 先决条件 在开始之前,您将需要以下内容: 安装了 Python 3 并设置了编程环境。您可以使用如何安装 Python 3 和设置本地编程环境教程之一为您的机器完成此操作。 OpenWeather 的 API 密钥。访问OpenWeather 网站以创建一个帐户。请务必确认您的电子邮件地址。注册成功后,访问API 密钥页面,查看自动为您的账户创建的 API 密钥。此键应为字母数字字符序列。 本教程假设您已经熟悉Python — 如果您想提高对 Python 的了解,请查看我们的How To Code in Python 3系列。本教程不需要自然语言处理的先见之明。 第 1 步 – 设置您的环境 在这一步中,您将安装spaCy帮助您的聊天机器人理解用户句子的库。 按照先决条件设置 Python 后,您将拥有一个虚拟环境。让我们激活那个环境。 确保您位于设置环境的目录中,然后运行以下命令: ..

Read more

介绍 Neo4j是一个记录数据节点之间关系的图数据库,而传统的关系数据库使用行和列来存储和构建数据。由于每个节点都存储对其连接的所有其他节点的引用,因此 Neo4j 可以以最小的开销编码和查询复杂的关系。 先决条件 要遵循本教程,您将需要以下内容: 按照Ubuntu 20.04 初始服务器设置指南设置了一台 Ubuntu 20.04 服务器,包括启用 sudo 的非root用户和防火墙。 步骤 1 — 安装 Neo4j 官方 Ubuntu 软件包存储库不包含 Neo4j 数据库引擎的副本。要从 Neo4j 安装上游支持的包,我们将添加一个指向 Neo4j 存储库的新包源,添加来自 Neo4j 的 GPG 密钥以确保下载有效,然后安装包。 首先,更新您现有的软件包列表: sudo apt update 接下来,安装一些必备软件包,这将允许apt使用 HTTPS 连接安装软件包。您的系统可能已经默认安装了这些软件包,但无论如何运行以下命令是安全的。 sudo apt install apt-transport-https ca-certificates curl software-properties-common 现在将官方 Neo4j 包存储库的 GPG 密钥添加到您的系统。此密钥将确保您可以信任从上游存储库安装的 Neo4j 包。运行以下命令安装密钥: curl -fsSL ..

Read more

本教程的先前版本由Hazel Virdó 编写 介绍 MySQL是一个开源数据库管理系统,通常作为流行的LAMP(Linux、Apache、MySQL、PHP/Python/Perl)堆栈的一部分安装。它使用关系数据库和 SQL(结构化查询语言)来管理其数据。 安装的简短版本很简单:更新您的软件包索引,安装mysql-server软件包,然后运行包含的安全脚本。 sudo apt update sudo apt install mysql-server sudo mysql_secure_installation 本教程将解释如何在 Ubuntu 18.04 服务器上安装 MySQL 5.7 版。但是,如果您希望将现有 MySQL 安装更新到 5.7 版,则可以改为阅读此 MySQL 5.7 更新指南。 先决条件 要学习本教程,您需要: 按照此初始服务器设置指南设置一台 Ubuntu 18.04 服务器,包括具有特权和防火墙的非root用户sudo。 第 1 步 – 安装 MySQL 在 Ubuntu 18.04 上,默认情况下,APT 包存储库中仅包含最新版本的 MySQL。在撰写本文时,这是 MySQL 5.7 要安装它,请使用以下命令更新服务器上的包索引apt: sudo apt update 然后安装默认包: ..

Read more

介绍 您过去可能使用过position带有relative和absolute值的 CSS属性。现代 Web 浏览器现在支持该sticky值。它允许您在滚动到达某个点时使元素粘住。 一个元素position: sticky将表现得像一个相对定位的元素,直到它到达一个指定的点,然后开始表现得像一个静态定位的元素。 在本文中,您将创建一个示例,用于position: sticky了解其行为和功能。 先决条件 如果你想跟随这篇文章,你需要: 了解CSS 属性和值。 一个代码编辑器。 支持position: sticky. 使用 position: sticky 考虑一个div将成为弹性容器的容器。嵌套在里面的将是 4 个额外的div元素,它们将是 flex 项目。4个div元素将包含图像shark-1,shark-2,shark-3,和shark-4。 在您的代码编辑器中,使用以下标记: <div class=”container”> <div class=”item shark-1″> <img src=”/images/punk.png” width=”100″ alt=”Sammy the Shark with a punk theme.”> </div> <div class=”item shark-2″> <img src=”/images/pony.png” width=”100″ alt=”Sammy the Shark with a magical pony theme.”> ..

Read more

作者选择Open Sourcing Mental Illness接受捐赠,作为Write for DOnations计划的一部分。 介绍 说到软件开发,堆栈有两端。堆栈是用于软件运行的技术集合。Vue.js是渐进式用户界面框架,是前端的一部分,是用户直接与之交互的堆栈部分。此前端也称为客户端,包含用户浏览器中呈现的所有内容。技术,比如HTML,JavaScript的,和CSS都呈现在客户端。相比之下,后端通常通过Java、Kotlin或.NET等技术与数据或服务器交互. 的应用是数据本身,和接口(前端)是无法有效显示数据给用户为他们交互的一种方式。在软件开发的开始阶段,您不需要后端即可开始。在某些情况下,后端甚至尚未创建。在这种情况下,您可以创建自己的本地数据来构建您的界面。使用Node环境和变量,您可以在每个环境中切换不同的数据集,或者通过网络调用在本地数据和“实时”数据之间切换。如果您还没有数据,那么拥有一个模拟数据层会很有用,因为它会在后端准备好之前提供数据来测试您的前端。 在本教程结束时,您将创建多个 Node 环境并使用 Node 环境变量切换这些数据集。为了说明这些概念,您将创建许多 Vue 组件来跨环境可视化这些数据。 先决条件 要完成本教程,您需要: 10.6.0您的计算机上安装了Node.js 版本或更高版本。要在 macOS 或 Ubuntu 18.04 上安装它,请按照如何在 macOS 上安装 Node.js 和创建本地开发环境或如何在 Ubuntu 18.04 上安装 Node.js 的使用 PPA 安装部分中的步骤进行操作。 Vue CLI 安装在您的机器上并生成了一个新项目。为此,请按照如何使用 Vue CLI 生成 Vue.js 单页应用程序的步骤 1 和 2进行操作。 您还需要具备 JavaScript、HTML 和 CSS 的基本知识,您可以在我们的如何使用 HTML 构建网站系列、如何使用 CSS ..

Read more

介绍 Python 内置filter()函数可用于从现有的可迭代对象(如列表或字典)创建一个新的迭代器,该迭代器将使用我们提供的函数有效地过滤掉元素。一个可迭代对象是一个可以“迭代”的 Python 对象,也就是说,它将按顺序返回项目,以便我们可以在for循环中使用它。 该filter()函数的基本语法是: filter(function, iterable) 这将返回一个过滤器对象,它是一个可迭代的。我们可以使用像这样的函数list()来列出过滤器对象中返回的所有项目。 该filter()函数提供了一种过滤值的方法,通常比列表理解更有效,尤其是当我们开始处理更大的数据集时。例如,列表推导将创建一个新列表,这将增加该处理的运行时间。这意味着在我们的列表推导式完成其表达式后,我们将在内存中拥有两个列表。但是,filter()将创建一个简单的对象,该对象包含对原始列表的引用、提供的函数以及原始列表中的位置的索引,这将占用较少的内存。 在本教程中,我们将回顾四种不同的使用方式filter():使用两种不同的可迭代结构、使用lambda函数和未定义函数。 使用filter()与功能 的第一个参数filter()是一个函数,我们用它来决定是包含还是过滤掉每个项目。该函数为作为第二个参数传递的迭代中的每个项目调用一次,每次返回时False,该值都会被删除。由于这个参数是一个函数,我们可以传递一个普通函数,也可以使用lambda函数,特别是当表达式不太复杂时。 以下是lambdawith的语法filter(): filter(lambda item: item[] expression, iterable) 使用列表,如下所示,我们可以将lambda函数与表达式合并,我们希望根据该表达式评估列表中的每个项目: creature_names = [‘Sammy’, ‘Ashley’, ‘Jo’, ‘Olly’, ‘Jackie’, ‘Charlie’] 要过滤此列表以查找以元音开头的水族馆生物的名称,我们可以运行以下lambda函数: print(list(filter(lambda x: x[0].lower() in ‘aeiou’, creature_names))) 在这里,我们将列表中的一个项目声明为x。然后我们将表达式设置为访问每个字符串的第一个字符(或字符“零”),因此x[0]. 降低每个名称的大小写可确保将字母与表达式中的字符串匹配’aeiou’。 最后我们传递了 iterable creature_names。像上一节一样,我们应用list()结果以从迭代器filter()返回创建一个列表。 输出如下: Output[‘Ashley’, ‘Olly’] 使用我们定义的函数可以实现相同的结果: creature_names = [‘Sammy’, ‘Ashley’, ‘Jo’, ‘Olly’, ‘Jackie’, ‘Charlie’] def names_vowels(x): return ..

Read more