介绍 Node.js是用于构建服务器端和网络应用程序的开源 JavaScript 运行时环境。该平台可在 Linux、macOS、FreeBSD 和 Windows 上运行。尽管您可以在命令行中运行 Node.js 应用程序,但本教程将重点介绍将它们作为服务运行。这意味着它们将在重启或失败时重新启动,并且可以安全地在生产环境中使用。 在本教程中,您将在单个 Ubuntu 20.04 服务器上设置生产就绪的 Node.js 环境。该服务器将运行由PM2管理的 Node.js 应用程序,并通过 Nginx 反向代理为用户提供对应用程序的安全访问。Nginx 服务器将使用Let’s Encrypt提供的免费证书提供 HTTPS 。 先决条件 本指南假设您具备以下条件: Ubuntu 20.04 服务器设置,如 Ubuntu 20.04 的初始服务器设置指南中所述。您应该有一个具有 sudo 权限和活动防火墙的非 root 用户。 一个域名指向你的服务器的公网IP。本教程将始终使用域名example.com。 已安装 Nginx,如如何在 Ubuntu 20.04 上安装 Nginx 中所述。 使用 Let’s Encrypt 证书配置 SSL 的 Nginx。如何在 Ubuntu 20.04 上使用 Let’s ..
Category : 教程系列
介绍 React是一个前端 JavaScript 库,可用于为您的应用程序创建交互式用户界面。 在本教程中,您将创建一个待办事项应用程序。您的应用程序将需要显示任务、添加新任务、将任务标记为完成并删除任务。这些操作将涉及CRUD(创建、读取、更新和删除)应用程序的四个方面。 这种类型的项目通常是用 Class 组件来完成的,但是这个应用程序会集成React Hooks。React Hooks 允许功能组件具有状态并使用生命周期方法,从而避免使用 Class 组件并拥有更多模块化和可读性的代码。 您可以在 CodeSandbox 上查看已完成的项目。 先决条件 要完成本教程,您需要: Node.js 安装在本地,您可以按照如何安装 Node.js 和创建本地开发环境来完成。 熟悉 React 会有所帮助,但不是必需的。您可以查看我们的How To Code in React.js系列。 第 1 步 – 启动 React 应用程序 首先,您需要创建一个新应用程序。在您的终端窗口中,导航到您希望新应用程序所在的位置并键入: npx create-react-app react-to-do 注意:在 React 16.8 之前,您必须安装 React 16.7 的 alpha 版本才能使用 React Hooks。在撰写本文时,Create React App将安装支持 Hooks 的最新稳定版 ..
介绍 数字在编程中极为常见。它们用于通过分配数字代码来表示诸如屏幕尺寸、地理位置、金钱和积分、视频中传递的时间、游戏头像的位置和颜色等内容。 能够在编程中有效地执行数学运算是一项需要培养的重要技能,因为您处理数字的频率很高。虽然对数学有高层次的理解肯定可以帮助你成为一个更好的程序员,但这不是先决条件。如果您没有数学背景,请尝试将数学视为实现您想要实现的目标的工具,并作为提高逻辑思维的一种方式。 我们将使用 Python 最常用的两种数字数据类型,整数和浮点数: 整数是整数,可以是正数、负数或 0 (…, -1, 0, 1, …)。 花车是实数,它们包含小数点(如9.0或-2.25)。 本教程将介绍可与 Python 中的数字数据类型一起使用的运算符。 运营商 一个操作者是一个符号或功能指示的操作。例如,在数学中,加号或 + 是表示加法的运算符。 在 Python 中,我们会看到一些从数学中带来的熟悉的运算符,但我们将使用的其他运算符是特定于计算机编程的。 这是 Python 中与数学相关的运算符的快速参考表。我们将在本教程中介绍以下所有操作。 手术 它返回什么 x + y 的总和x与y x – y x和的区别y -X 改变了符号 x +x 身份 x x * y x和的产品y x / y x 和 y 的商 x ..
介绍 Let’s Encrypt 是一个证书颁发机构 (CA),它提供了一种简单的方法来获取和安装免费的TLS/SSL 证书,从而在 Web 服务器上启用加密的 HTTPS。它通过提供软件客户端 Certbot 来简化流程,该客户端尝试自动执行大部分(如果不是全部)所需步骤。目前,获取和安装证书的整个过程在 Apache 和 Nginx 上都是完全自动化的。 在本教程中,您将使用 Certbot 在 Ubuntu 18.04 上为 Apache 获取免费 SSL 证书,并将您的证书设置为自动续订。 本教程将使用单独的 Apache 虚拟主机文件而不是默认配置文件。我们建议为每个域创建新的 Apache 虚拟主机文件,因为这有助于避免常见错误并将默认文件保留为后备配置。 先决条件 要学习本教程,您需要: 按照Ubuntu 18.04教程的初始服务器设置设置一个 Ubuntu 18.04 服务器,包括 sudo 非 root 用户和防火墙。 完全注册的域名。本教程将始终使用your_domain作为示例。你可以购买一个域名Namecheap,免费获得一个在Freenom,或使用你选择的域名注册商。 为您的服务器设置的以下两个 DNS 记录。您可以按照DigitalOcean DNS的介绍了解有关如何添加它们的详细信息。 your_domain指向您服务器的公共 IP 地址的 A 记录。 指向您服务器的公共 IP 地址的 A ..
介绍 Storybook是一个用户界面 (UI) 库,可用于记录组件。 注意:本文基于Storybook 简介,其中介绍了如何使用它来组织和构建 JavaScript 组件。 在本文中,您将使用 React 和 Storybook 构建一个交互式 UI 组件。 在本教程结束时,您将把故事书部署为一个独立的应用程序,作为风格指南。 先决条件 要完成本教程,您需要: Node.js 安装在本地,您可以按照如何安装 Node.js 和创建本地开发环境来完成。 本教程已通过 Node v14.4.0、npmv6.14.5、reactv16.13.1 和@storybook/reactv5.3.19 验证。 步骤 1 — 设置项目 首先,我们需要创建一个新的 React 项目,为此,我们将使用create-react-app这是一个很好的工具来搭建 React 应用程序。 npx create-react-app storybook-app 然后导航到新创建的项目目录: cd storybook-app 下一步是将storybook包安装到我们的项目中: npx -p @storybook/cli sb init 该命令可以自动从package.json文件中检测我们正在使用的框架并安装该框架的 Storybook 版本。 运行这两个命令后,我们可以@storybook/react通过打开package.json文件来验证是否安装了软件包来确认我们已经安装了依赖项,然后我们可以运行应用程序以及运行 Storybook。 npm start ..
介绍 pgAdmin是 PostgreSQL 及其相关数据库管理系统的开源管理和开发平台。它用 Python 和 jQuery 编写,支持 PostgreSQL 中的所有功能。您可以使用 pgAdmin 完成从编写基本 SQL 查询到监控数据库和配置高级数据库架构的所有工作。 在本教程中,我们将介绍在 Ubuntu 18.04 服务器上安装和配置最新版本的 pgAdmin、通过 Web 浏览器访问 pgAdmin 并将其连接到服务器上的 PostgreSQL 数据库的过程。 先决条件 要完成本教程,您需要: 运行 Ubuntu 18.04 的服务器。此服务器应具有具有 sudo 权限的非 root 用户,以及配置为ufw. 如需有关设置的帮助,请遵循我们的 Ubuntu 18.04 初始服务器设置指南。 安装在您的服务器上的 Apache Web 服务器。按照我们关于如何在 Ubuntu 18.04 上安装 Apache Web 服务器的指南在您的机器上进行配置。 PostgreSQL 安装在您的服务器上。您可以按照我们关于如何在 Ubuntu 18.04 上安装和使用 PostgreSQL ..
介绍 clip-path是一个非常有趣的属性,它允许真正剪切 SVG 元素、图像或任何 HTML 元素的可见部分。 使用 clip-path 定义基本形状 clip-path可以很容易地使用polygon、ellipse、circle或inset关键字中的任何一个来裁剪基本形状,这些关键字是CSS 排除模块的一部分。 多边形 Polygon 是所有可用形状中最灵活的,因为它允许您指定任意数量的点,有点像SVG path。提供的点是成对的 X 和 Y 坐标,可以是任何单位(例如:基于像素或百分比)。因为它是最灵活的,它也是最复杂的,您可能想要使用工具来定义您的点。 让我们用一个例子来说明。首先,您将看到我们的起始图像,然后是应用剪切路径的图像以获得三角形,然后是更复杂的 X 形,最后是星形: /* Triangle */ .polygon1 { -webkit-clip-path: polygon(50% 0%, 0% 100%, 100% 100%); clip-path: polygon(50% 0%, 0% 100%, 100% 100%); } /* X */ .polygon2 { -webkit-clip-path: polygon(20% 0%, 0% 20%, 30% 50%, 0% ..
介绍 JavaScript 中的函数式编程有利于代码的可读性、可维护性和可测试性。函数式编程思维中的一种工具是以数组处理风格进行编程。这需要将数组作为您的基本数据结构。然后,你的程序就变成了对数组元素的一系列操作。 这在很多情况下都很有用,例如使用将 AJAX 结果映射到 React 组件map,使用 删除无关数据filter,以及使用reduce。这些称为“Array Extras”的函数是对for循环的抽象。使用这些功能,您for无所不能,反之亦然。 在本教程中,您将通过在考虑看看开发的JavaScript函数式编程更深入的了解filter,map和reduce。 先决条件 要完成本教程,您将需要以下内容: 对 JavaScript 的有效理解。您可以查看如何在 JavaScript 中编码系列以获取更多信息。 了解如何for在 JavaScript 中构建和实现循环。该文章for在JavaScript中环路是一个伟大的地方开始。 Node.js 安装在本地,您可以按照如何安装 Node.js 并创建本地开发环境来完成。 步骤 1 — 迭代 forEach for循环用于遍历数组中的每一项。通常,沿途对每个项目都做一些事情。 一个例子是将数组中的每个字符串大写。 const strings = [‘arielle’, ‘are’, ‘you’, ‘there’]; const capitalizedStrings = []; for (let i = 0; i < strings.length; i += 1) { ..
介绍 替换字符串中的文本是 JavaScript 中的一项常见任务。在本文中,您将了解使用replace正则表达式替换文本。 注意:请 访问此配套教程,详细了解如何使用grep正则表达式在 Linux 中搜索文本模式。 先决条件 熟悉 Javascript 编程语言。访问我们的教程系列,如何在 Javascript 中编码,了解基础知识。 替换单个实例 通常 JavaScript 的String replace()函数只替换它在字符串中找到的第一个实例: 应用程序.js const myMessage = ‘this is the sentence to end all sentences’; const newMessage = myMessage.replace(‘sentence’, ‘message’); console.log(newMessage); // this is the message to end all sentences 在此示例中,仅sentence替换了第一个实例。 替换多个实例 如果您希望 JavaScript 替换所有实例,则必须使用使用/g运算符的正则表达式: 应用程序.js const myMessage = ..
作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。 介绍 在这个由两部分组成的教程中,您将学习如何使用systemd. 第一部分涵盖了一般的 Linux 服务管理概念,如init守护进程和运行级别。它以 .NET 中的服务管理演示结束systemd。在这里,您将检查targets,wants,requires,和unit文件。 第二部分提供了用于完成实用和常见systemd任务的分步教程。具体来说,您将配置 MySQL 数据库服务器以在崩溃或重新启动后自动启动。 注意:您也可以考虑阅读我们非常流行的使用systemctl来控制 systemd 服务和单元的教程。 先决条件 要完成本教程,您需要: 运行 CentOS 8 的服务器,包括具有 sudo 权限的非 root 用户。要设置所有这些,包括防火墙,您可以创建一个运行 CentOS 8 的 DigitalOcean Droplet,然后按照我们的初始服务器设置指南进行操作。 介绍服务管理守护进程 Linux 服务可以在很大程度上通过改变服务管理守护进程(也称为守护进程)处理它们的方式来实现自我修复init。 init是在机器启动并且内核加载到内存后在 Linux 系统中启动的第一个进程。其中,它决定用户进程或系统服务应如何加载、以何种顺序加载以及是否应自动启动。 随着 Linux 的发展,init守护进程的行为也在发展。最初,Linux 从 System V 开始,与initUnix 中使用的相同。从那以后,Linux 实现了 Upstartinit守护进程(由 Ubuntu 创建),现在是 systemdinit守护进程(首先由 Fedora 实现)。 大多数现代 Linux 发行版已逐渐从 ..