Category : 教程系列

作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 根据StackOverflow 2020 开发人员调查,React是最受欢迎的JavaScript框架之一,其原因有很多,例如使用Virtual DOM有效更改 Web 应用程序视图,使用可重用、可组合和有状态的组件来提高可扩展性,以及更多的。初学者 React 开发人员通常需要将他们的知识用于实际应用程序的经验。本教程将通过向您展示如何在React中使用React Hooks、使用useState()和进行 API 调用来为您提供这种体验。 本文将讨论使用Unsplash API使用 React 构建照片搜索应用程序的分步过程。Unsplash 是目前最常用和最流行的照片搜索引擎之一,在构建项目和应用程序时可以成为一个很好的数据提供者。 在本教程结束时,您将拥有一个使用 React Hooks 查询 Unsplash API 的工作应用程序。该项目还可以充当样板,因为您可以重用相同的编程逻辑,并将其用作构建涉及 API 调用的其他项目的基础。您的照片搜索应用程序将包括一个搜索栏和呈现的结果,如下所示: 如果您想查看完整代码,请查看DigitalOcean 社区 GitHub 存储库。 先决条件 为了遵循本指南: 您将需要一个免费的 Unsplash 帐户,您可以在Unsplash 官方网站上获得该帐户。 你需要一个运行Node.js的开发环境;本教程在 Node.js 版本 10.20.1 和 npm 版本 6.14.4 上进行了测试。要在 macOS 或 Ubuntu 18.04 上安装它,请按照如何在 macOS ..

Read more

介绍 选择正确的字体可以为网站增加巨大价值并增强用户体验。然而,正确的字体加载策略可能有点挑战。这就是为什么 Gatsby 为您的所有字体加载需求提供了几种对开发人员友好的解决方案。 在本文中,您将了解将字体加载到项目中的三种不同方法:Typography.js、Fontsource 和手动管理自托管文件。 先决条件 如果你想跟随这篇文章,你需要: Node.js 安装在本地,您可以按照如何安装 Node.js 并创建本地开发环境来完成 本教程希望您从现有的 Gatsby 项目进行构建。在如何设置您的第一个 Gatsby 网站中创建的 Gatsby 开始满足此要求。 本教程已通过 Node v15.13.0、npmv7.8.0、gatsbyv3.2.1 和reactv17.0.1 验证。 Typography,js 部分已通过gatsby-plugin-typographyv3.2.0、react-typographyv0.16.19、typographyv0.16.19 和typography-theme-lawtonv0.16.19 验证。Fontsource 部分已通过@fontsource/rubikv4.2.2验证。 使用 Typography.js Typography.js是一个工具包,用于为您的项目加载和配置 Web 字体。 gatsby-plugin-typography将还需要包括同行的依赖typography和react-typography。 打开您的终端窗口并导航到您的项目目录并运行以下命令: npm install typography react-typography gatsby-plugin-typography 注意:在修改的时候,与最新版本的React、gatsby-plugin-typography、 和存在依赖树冲突react-typography。 可以使用该–legacy-peer-deps标志来解决此错误。 接下来,gatsby-config.js使用代码编辑器打开文件并添加以下新代码行: gatsby-config.js module.exports = { // … plugins: [ // … ..

Read more

作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 在Apache Web服务器使用虚拟主机上的单个实例管理多个域。同样,PHP-FPM使用守护进程在单个实例上管理多个 PHP 版本。您可以一起使用 Apache 和 PHP-FPM 来托管多个 PHP Web 应用程序,每个应用程序都使用不同版本的 PHP,都在同一服务器上,并且都在同一时间。这很有用,因为不同的应用程序可能需要不同版本的 PHP,但某些服务器堆栈,如定期配置的 LAMP 堆栈,只能管理一个。与将每个应用程序托管在自己的实例上相比,将 Apache 与 PHP-FPM 相结合也是一种更具成本效益的解决方案。 PHP-FPM也提供配置选项,stderr以及stdout日志记录,紧急重新启动和适应过程产卵,这是重载的网站是有用的。事实上,将 Apache 与 PHP-FPM 结合使用是托管 PHP 应用程序的最佳堆栈之一,尤其是在性能方面。 在本教程中,您将在单个实例上设置两个 PHP 站点。每个站点将使用自己的域,每个域将部署自己的 PHP 版本。第一个,site1.your_domain将部署 PHP 7.0。第二个,site2.your_domain将部署 PHP 7.2。 先决条件 按照 Debian 10的初始服务器设置设置一台至少具有 1GB RAM 的 Debian 10 服务器,包括 sudo 非 root 用户和防火墙。 按照如何在 ..

Read more

介绍 在编程中,计数器是保存根据可定制规则递增的值的变量。它们有很多用途,例如通过存储循环已执行的次数来帮助密切关注循环。尽管在编程语言中经常使用计数器,但传统上并没有将计数器包含在级联样式表 (CSS)的语法中。在现代 CSS 出现之前,出于样式目的跟踪页面上的元素要么在标记中手动完成,要么通过使用JavaScript进行统计。但是现在,CSS 有一个得到很好支持的 counter 属性,可以在没有 JavaScript 的情况下跟踪增量。 在本教程中,您将通过使用 CSS 计数器section对超文本标记语言 (HTML) 文档中的table元素进行编号并计算元素中的行数来了解 CSS 计数器的基础知识。 先决条件 保存在本地计算机上的 HTML 文件index.html,您可以从您选择的 Web 浏览器访问该文件。要开始使用,请查看我们的如何设置 HTML 项目教程,并按照如何使用和理解 HTML 元素获取有关如何在浏览器中查看 HTML 的说明。如果您不熟悉 HTML,请尝试整个如何在 HTML 中构建网站系列。 对页面的部分进行编号 为了演示计数器如何在 CSS 中工作,您将首先使用样式表将一个数字附加到sectionHTML 中的多个元素。使用计数器,您将使每个新部分的数字递增 1。 首先,使用您选择的文本编辑器打开您的index.html文件。在本教程中,您将使用nano: nano index.html 打开文件后,添加以下 HTML 以创建您网站的语义结构,在我们的示例中是爬行动物的信息表: 索引.html <!DOCTYPE html> <html> <head> <meta charset=”utf-8″> <title>Introduction to CSS Counters</title> ..

Read more

介绍 Node.js是一个用于通用编程的 JavaScript 平台,允许用户快速构建网络应用程序。通过在前端和后端利用 JavaScript,Node.js 使开发更加一致和集成。 在本指南中,我们将向您展示如何在 Ubuntu 18.04 服务器上开始使用 Node.js。 先决条件 本指南假设您使用的是 Ubuntu 18.04。在开始之前,您应该在系统上设置一个具有 sudo 权限的非 root 用户帐户。您可以按照Ubuntu 18.04的初始服务器设置教程学习如何执行此操作。 为 Ubuntu 安装发行稳定版 Ubuntu 18.04 在其默认存储库中包含一个 Node.js 版本,可用于提供跨多个系统的一致体验。在撰写本文时,存储库中的版本为 8.10.0。这不会是最新版本,但它应该是稳定的并且足以快速试验该语言。 要获得此版本,您可以使用apt包管理器。通过键入以下内容刷新本地包索引: sudo apt update 从存储库安装 Node.js: sudo apt install nodejs 如果存储库中的包满足您的需求,这就是您设置 Node.js 所需要做的全部工作。在大多数情况下,您还需要安装npmNode.js 包管理器。您可以通过键入: sudo apt install npm 这将允许您安装模块和包以与 Node.js 一起使用。 由于与另一个包冲突,Ubuntu 存储库中的可执行文件被调用nodejs而不是node. 在运行软件时请记住这一点。 要在这些初始步骤后检查您安装的 Node.js ..

Read more

基础设施即服务 (IaaS) 是通过 Internet 按需交付计算资源,包括网络、存储和其他基础设施组件。作为云计算的一种,IaaS 使用户无需维护物理服务器,同时还为他们提供了根据需要配置和扩展资源的灵活性。 IaaS 云提供商通常承担低级别的基础设施管理职责,例如安全性、数据分区和备份。与云计算的平台即服务 (PaaS) 和软件即服务 (SaaS)类别不同,用户可以控制他们实际使用的基础设施组件以及他们与该基础设施一起使用的软件和工具,如操作系统或开发工具。 对于希望利用云的优势并拥有可以监督他们希望使用的基础设施的安装、配置和管理的系统管理员的企业来说,IaaS 是一种流行的选择。IaaS 也被开发人员、研究人员和其他希望自定义其计算环境的底层基础设施的人使用 有关 IaaS 的更多教育资源,请访问: 云计算概论 云课程简介 在我们的基础设施页面上可以找到我们关于基础设施的教育资源的完�..

Read more

在使用 JavaScript 时,我们会处理很多条件,这里有 5 个提示,可让您编写更好/更清晰的条件。 1. 对多个条件使用 Array.includes 让我们看一下下面的例子: // condition function test(fruit) { if (fruit == ‘apple’ || fruit == ‘strawberry’) { console.log(‘red’); } } 乍一看,上面的例子看起来不错。但是,如果我们得到更多的红色水果,比如说cherry和cranberries呢?我们会用更多来扩展声明||吗? 我们可以使用(Array.includes)重写上面的条件Array.includes function test(fruit) { // extract conditions to array const redFruits = [‘apple’, ‘strawberry’, ‘cherry’, ‘cranberries’]; if (redFruits.includes(fruit)) { console.log(‘red’); } } 我们将red fruits(条件)提取 到一个数组中。通过这样做,代码看起来更整洁。 2. 少嵌套,早返回 让我们扩展前面的示例以包含另外两个条件: ..

Read more

介绍 关系数据库管理系统是许多网站和应用程序的关键组件。它们提供了一种结构化的方式来存储、组织和访问信息。 PostgreSQL,也称为 Postgres,是一种关系数据库管理系统,它提供了结构化查询语言(也称为 SQL)的实现。它被许多流行的项目所使用,无论大小,都符合标准,并且具有许多高级功能,例如可靠的事务和无读锁的并发性。 按照本指南,您将在 CentOS 8 服务器上安装最新版本的 PostgreSQL。 先决条件 要完成本教程,您需要一台运行 CentOS 8 的服务器。该服务器应具有具有管理权限的非 root 用户和配置为firewalld. 要进行设置,请参阅我们的 CentOS 8 初始服务器设置指南。 第 1 步 – 安装 PostgreSQL PostgreSQL 可从 CentOS 8 的默认AppStream软件存储库中获得,并且您可以安装多个版本。您可以通过启用与您要安装的版本一致的适当的包和依赖项集合来在这些版本之间进行选择,每个集合称为一个模块流。 在 CentOS 8 的默认包管理器 DNF 中,模块是 RPM 包的特殊集合,它们共同构成了一个更大的应用程序。这旨在使安装包及其依赖项对用户更加直观。 postgresql使用以下dnf命令列出模块的可用流: dnf module list postgresql Outputpostgresql 9.6 client, server [d] PostgreSQL server and client module ..

Read more

介绍 ng-container 是 Angular 2+ 中可用的元素,可以充当结构指令的宿主。 在本文中,您将探索可以使用ng-container. 先决条件 如果你想跟随这篇文章,你需要: 熟悉DOM的结构。要了解更多信息,请查看了解 DOM教程系列。 熟悉 Angular模板和结构指令也可能有所帮助。 使用ng-container以避免多余的元素 在 Angular 中,您不能在一个元素上使用多个模板绑定。 此示例组合*ngIf和*ngFor结构指令不会编译: Invalid Example<div *ngIf=”todos” *ngFor=”let todo of todos”> {{ todo.content }} </div> 尝试编译此代码将导致以下错误: Invalid Example OutputCan’t have multiple template bindings on one element. Use only one attribute prefixed with * 一种解决方法是分离模板绑定并创建一个包装器: Valid Example<div *ngIf=”todos”> <div *ngFor=”let todo of ..

Read more

介绍 我们可以使用 Python 内置函数map()将函数应用于可迭代对象(如列表或字典)中的每个项目,并返回一个新的迭代器以检索结果。map()返回一个映射对象(一个迭代器),我们可以在程序的其他部分使用它。我们还可以将 map 对象传递给list()函数或其他序列类型,以创建一个可迭代对象。 该map()函数的语法如下: map(function, iterable, [iterable 2, iterable 3, …]) 该函数没有使用for循环,而是map()提供了一种将函数应用于可迭代对象中的每个项目的方法。因此,它通常可以提高性能,因为它一次只应用一个项目,而不是将项目的副本复制到另一个可迭代对象中。这在处理大型数据集的程序中特别有用。map()还可以通过一次从每个可迭代对象向函数发送一个项目,将多个可迭代对象作为函数的参数。 在本教程中,我们将回顾使用 的三种不同方式map():使用lambda函数、使用用户定义的函数,最后使用使用多个可迭代参数的内置函数。 使用 Lambda 函数 的第一个参数map()是一个函数,我们用它来应用于每个项目。Python 为我们传入的可迭代对象中的每个项目调用一次该函数map(),并返回映射对象中被操作的项目。对于第一个函数参数,我们可以传递用户定义的函数,也可以使用lambda函数,尤其是当表达式不太复杂时。 map()with lambda 函数的语法如下: map(lambda item: item[] expression, iterable) 使用如下所示的列表,我们可以lambda使用要应用于列表中的每个项目的表达式来实现一个函数: numbers = [10, 15, 21, 33, 42, 55] 要对我们的每个数字应用表达式,我们可以使用map()和lambda: mapped_numbers = list(map(lambda x: x * 2 + 3, numbers)) 在这里,我们将列表中的一个项目声明为x。然后我们添加我们的表达式。我们将数字列表作为 的可迭代对象传入map()。 为了立即接收结果,我们打印一个map对象列表: print(mapped_numbers) Output[23, ..

Read more