Category : 教程系列

作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。 介绍 即使云服务越来越流行,运行原生应用程序的需求仍然存在。 通过使用noVNC和TigerVNC,您可以在Docker容器内运行本机应用程序并使用 Web 浏览器远程访问它们。此外,您可以在系统资源多于本地可用资源的服务器上运行您的应用程序,这可以在运行大型应用程序时提供更高的灵活性。 在本教程中,您将使用 Docker容器化电子邮件客户端Mozilla Thunderbird。之后,您将保护它并使用Caddy Web 服务器提供远程访问。 完成后,您只需使用网络浏览器即可从任何设备访问 Thunderbird。或者,您还可以使用WebDAV从本地访问文件。您还将拥有一个可以在任何地方运行的完全独立的 Docker 映像。 先决条件 在开始本指南之前,您需要具备以下条件: 一台 Ubuntu 20.04 服务器,至少有 2GB RAM 和 4GB 磁盘空间。 具有sudo特权的非 root 用户。 在您的服务器上设置 Docker。您可以按照如何在 Ubuntu 20.04 上安装和使用 Docker 进行操作。 第 1 步 – 创建supervisord配置 现在您的服务器正在运行并安装了 Docker,您可以开始配置应用程序的容器了。由于您的容器由多个组件组成,您需要使用进程管理器来启动和监控它们。在这里,您将使用supervisord. supervisord是一个用 Python 编写的进程管理器,通常用于编排复杂的容器。 首先,创建并输入一个thunderbird为您的容器命名的目录: mkdir ~/thunderbird cd ~/thunderbird 现在创建并打开一个名为supervisord.confusingnano或您喜欢的编辑器的文件: nano ..

Read more

作者选择Creative Commons接受捐赠,作为Write for DOnations计划的一部分。 介绍 作为JavaScript Web 开发人员,异步代码使您能够运行代码的某些部分,而其他部分仍在等待数据或解析。这意味着您的应用程序的重要部分在呈现之前不必等待不太重要的部分。使用异步代码,您还可以通过请求和显示新信息来更新您的应用程序,即使在后台处理长函数和请求时,也可以为用户提供流畅的体验。 在React开发中,异步编程提出了独特的问题。例如,当您使用 React函数式组件时,异步函数可以创建无限循环。当一个组件加载时,它可以启动一个异步函数,当异步函数解析时,它可以触发重新渲染,这将导致组件调用异步函数。本教程将解释如何使用一个名为useEffect的特殊Hook来避免这种情况,它只会在特定数据更改时运行函数。这将让您有意识地运行异步代码,而不是在每个渲染周期上运行。 异步代码不仅限于对新数据的请求。React 有一个内置系统用于延迟加载组件,或者仅在用户需要时加载它们。当与Create React App 中的默认webpack配置结合使用时,您可以拆分代码,将大型应用程序减少为可以根据需要加载的较小部分。React 有一个特殊的组件,它会在浏览器加载新组件时显示占位符。在 React 的未来版本中,您将能够使用在嵌套组件中加载数据而不会阻塞渲染。SuspenseSuspense 在本教程中,您将通过创建一个应用程序来处理 React 中的异步数据,该应用程序显示有关河流的信息并使用setTimeout. 在本教程结束时,您将能够使用useEffectHook加载异步数据。如果组件在数据解析之前卸载,您还可以安全地更新页面而不会产生错误。最后,您将使用代码拆分将大型应用程序拆分为较小的部分。 先决条件 你需要一个运行Node.js的开发环境;本教程在 Node.js 版本 10.20.1 和 npm 版本 6.14.4 上进行了测试。要在 macOS 或 Ubuntu 18.04 上安装它,请按照如何在 macOS 上安装 Node.js 和创建本地开发环境或如何在 Ubuntu 18.04 上安装 Node.js 的使用 PPA 安装部分中的步骤进行操作。 使用Create React App设置的 React 开发环境,删除了非必要的样板。要进行设置,请按照如何管理 React 类组件上的状态教程的步骤 ..

Read more

LAMP 是指一组开源软件,它们通常一起用于为 Web 应用程序提供服务。术语LAMP是一个表示的结构的首字母缩写大号inux下操作系统与甲帕什Web服务器,与存储在网站上的数据中号ySQL数据库和通过处理的动态内容P HP。 LAMP 堆栈代表了一种配置 Web 服务器的方法,并在 Web 上的许多大型应用程序中使用。 要了解有关 LAMP 的更多信息,请访问我们 关于 LAMP 堆栈的综合教�..

Read more

介绍 该vue-meta库提供了一个 Vue 插件,允许您从组件级别控制应用程序的元数据。 为搜索引擎优化 (SEO) 管理 Web 应用程序的元数据很重要,但是在使用单页 Web 应用程序 (SPA) 时,这通常是一项繁琐的任务。本vue-router教程中已经部分介绍了动态元数据。 在本文中,您将探索该vue-meta插件如何以简洁、合乎逻辑的方式为您处理此问题,同时为您提供对应用程序元数据的更多控制。 先决条件 如果你想跟随这篇文章,你需要: 对<head>, <title>,有一定的了解<meta>。 对设置 Vue.js 项目有一定的了解。 本教程已通过 Node v15.8.0、npmv7.5.4、Vue v12.6.11 和vue-metav2.4.0 验证。 使用 vue-meta 首先,要使用vue-meta,请打开您的终端并导航到您现有的 Vue 项目目录。然后,运行以下命令: npm install [email protected] 接下来,使用您的代码编辑器,打开main.js文件并引导插件: 源代码/main.js import Vue from ‘vue’ import VueMeta from ‘vue-meta’ import App from ‘App.vue’ Vue.use(VueMeta) new Vue({ render: h => ..

Read more

该系列的一部分: 如何编写 Ansible Playbooks Ansible 是一种现代配置管理工具,不需要在远程节点上使用代理软件,仅使用 SSH 和 Python 在托管服务器上进行通信和执行命令。本系列将带您了解可用于编写服务器自动化剧本的主要 Ansible 功能。最后,我们将看到一个实际示例,说明如何创建剧本以自动设置远程 Nginx Web 服务器并向其部署静态 HTML 网站。 自动安装所需的系统包是 Ansible playbook 中的一项常见操作任务,因为典型的应用程序堆栈需要来自不同来源的软件。 该apt模块管理基于 Debian 的操作系统(如 Ubuntu)上的系统包,Ubuntu 是本指南中我们在远程节点上使用的发行版。以下剧本将更新apt缓存,然后确保 Vim 安装在远程节点上。 playbook-09.yml在您的ansible-practice目录中创建一个名为的新文件: nano ~/ansible-practice/playbook-09.yml 然后将以下行添加到新的剧本文件中: ~/ansible-practice/playbook-09.yml — – hosts: all become: yes tasks: – name: Update apt cache and make sure Vim is installed apt: name: vim update_cache: ..

Read more

本教程的先前版本由Justin Ellingwood和Namo编写 介绍 虚拟专用网络或 VPN 允许您在流量通过不受信任的网络(例如咖啡店、会议或机场的网络)时安全地加密流量。 Internet Key Exchange v2或 IKEv2 是一种允许在服务器和客户端之间建立直接 IPSec 隧道的协议。在 IKEv2 VPN 实施中,IPSec 为网络流量提供加密。IKEv2 在某些平台(OS X 10.11+、iOS 9.1+ 和 Windows 10)上原生支持,无需额外的应用程序,它可以非常顺利地处理客户端问题。 在本教程中,您将在 Ubuntu 20.04 服务器上使用StrongSwan设置 IKEv2 VPN服务器。然后,您将学习如何使用 Windows、macOS、Ubuntu、iOS 和 Android 客户端连接到它。 先决条件 要完成本教程,您需要: 按照Ubuntu 20.04 初始服务器设置指南配置的一台 Ubuntu 20.04 服务器,包括sudo非 root 用户和防火墙。 步骤 1 — 安装 StrongSwan 首先,我们将安装 StrongSwan,这是一个开源 IPSec 守护程序,我们将其配置为我们的 VPN ..

Read more

介绍 验证器用于确保表单中的值满足某些要求。它们可用于Angular 应用程序中的模板驱动表单或响应式表单。 有几种内置的验证喜欢required,email,pattern,和minLength。还可以开发自定义验证器来解决内置验证器未处理的功能。 例如,电话号码验证器将包含一个输入字段,除非该值是十位数长,否则不会被视为有效。 以下是电话号码输入字段的屏幕截图,该字段提供了一个九位数长的无效号码: 这是一个电话号码输入字段的屏幕截图,该字段提供了一个十位数长的有效号码: 在本教程中,您将为 Angular 应用程序中的电话号码输入字段构建一个自定义验证器。 先决条件 要完成本教程,您需要: Node.js 安装在本地,您可以按照如何安装 Node.js 和创建本地开发环境来完成。 对设置 Angular 项目有一定的了解。 本教程已通过 Node v15.2.1、npmv6.14.8、@angular/corev11.0.0 和@angular/formsv11.0.0 验证。 设置项目 出于本教程的目的,您将从使用@angular/cli. npx @angular/cli new angular-custom-validation-example –style=css –routing=false –skip-tests 注意:或者,您可以全局安装 @angular/cli. 这将配置一个新的 Angular 项目,其样式设置为“CSS”(与“Sass”、Less 或“Stylus”相反),没有路由,并跳过测试。 导航到新创建的项目目录: cd angular-custom-validation-example 此时,您将拥有一个新的 Angular 项目。 在模板驱动的表单中使用验证器 指令用于模板驱动表单中的验证。对于此示例,您将phone-number-validator使用@angular/cli. 首先,打开终端并使用@angular/cli作为开发依赖项安装的包来生成新指令: ./node_modules/@angular/cli/bin/ng generate directive phone-number-validator 这将创建phone-number-validator.directive.ts和phone-number-validator.directive.spec.ts。它还将添加PhoneNumberValidatorDirective到app.module.ts. 接下来,phone-number-validator.directive.ts在您的代码编辑器中打开。添加Validator,AbstractControl和NG_VALIDATORS: src/app/phone-number-validator.directive.ts ..

Read more

介绍 Velero是 Kubernetes 集群的便捷备份工具,可将 Kubernetes 对象压缩并备份到对象存储。它还使用您的云提供商的块存储快照功能为您的集群的 Persistent Volume 拍摄快照,然后可以将您的集群的对象和 Persistent Volume 恢复到以前的状态。 该DigitalOcean Velero插件可以让你用DigitalOcean块存储到快照您持久卷,和空间来备份你的Kubernetes对象。在 DigitalOcean 上运行 Kubernetes 集群时,这允许您快速备份集群的状态并在灾难发生时恢复它。 在本教程中,我们将velero在本地机器上设置和配置命令行工具,并将服务器组件部署到我们的 Kubernetes 集群中。然后,我们将部署一个使用 Persistent Volume 进行日志记录的示例 Nginx 应用程序,然后模拟灾难恢复场景。 先决条件 在开始本教程之前,您应该准备好以下内容: 在本地计算机上: 该kubectl命令行工具,配置为连接到群集。您可以kubectl在官方 Kubernetes 文档 中阅读有关安装和配置的更多信息。 该git命令行实用程序。您可以git在 Git 入门 中了解如何安装。 在您的 DigitalOcean 帐户中: 甲DigitalOcean Kubernetes群集或群集Kubernetes(版本1.7.5上DigitalOcean液滴或更高版本)。 在集群内部运行的 DNS 服务器。如果您使用的是 DigitalOcean Kubernetes,则默认情况下它正在运行。要了解有关配置 Kubernetes DNS 服务的更多信息,请参阅Kuberentes 官方文档中的自定义 DNS 服务。 DigitalOcean Space ..

Read more

介绍 React Navigation是用于在React Native应用程序中进行路由和导航的流行库。 该库有助于解决在多个屏幕之间导航并在它们之间共享数据的问题。 在本教程结束时,您将拥有一个基本的社交网络。它将显示用户拥有的连接数,并提供一种与其他朋友联系的方式。您将使用此示例应用程序探索如何使用 浏览移动应用程序屏幕react-navigation。 先决条件 要完成本教程,您需要: Node.js 的本地开发环境。遵循如何安装 Node.js 并创建本地开发环境。 熟悉设置环境以创建新的 React Native 项目并使用 iOS 或 Android 模拟器可能会有所帮助。 注意:如果您react-navigation过去使用过,您可能会遇到一些差异。您可以查阅有关从 3.x迁移和从 4.x 迁移的指南的文档。 本教程已通过 Node v14.7.0、npmv6.14.7、reactv16.13.1、react-nativev0.63.2、@react-navigation/nativev5.7.3 和@react-navigation/stackv5.9.0 验证。 第 1 步 – 创建一个新的 React Native 应用程序 首先,通过在终端中输入以下命令来创建一个新的 React Native 应用程序: npx react-native init MySocialNetwork –version 0.63.2 然后,导航到新目录: cd MySocialNetwork 并启动 iOS 应用程序: npm ..

Read more

介绍 Git 等版本控制系统对于现代软件开发最佳实践至关重要。版本控制允许您在源代码级别跟踪您的软件。您可以跟踪更改、恢复到之前的阶段以及分支以创建文件和目录的替代版本。 许多软件项目的文件都保存在 Git 存储库中,GitHub、GitLab 和 Bitbucket 等平台有助于促进软件开发项目的共享和协作。 在本指南中,我们将介绍如何在 Ubuntu 20.04 服务器上安装和配置 Git。我们将介绍如何以两种不同的方式安装软件:通过内置包管理器和通过源。根据您的特定需求,这些方法中的每一种都有自己的好处。 先决条件 您将需要具有非 root 超级用户帐户的 Ubuntu 20.04 服务器。 要进行设置,您可以按照我们的 Ubuntu 20.04 初始服务器设置指南进行操作。 设置好服务器和用户后,您就可以开始了。 使用默认包安装 Git 如果您想使用 Git 快速启动和运行,如果您更喜欢广泛使用的稳定版本,或者您不想寻找最新的可用功能,那么使用默认包安装的选项是最好的选择。如果您正在寻找最新版本,您应该跳转到有关从源安装的部分。 Git 可能已经安装在您的 Ubuntu 20.04 服务器中。您可以使用以下命令在您的服务器上确认这种情况: git –version 如果您收到类似于以下内容的输出,则表示已安装 Git。 Outputgit version 2.25.1 如果您是这种情况,那么您可以继续设置 Git,或者如果您需要更新的版本,您可以阅读下一节关于如何从源安装。 但是,如果您没有得到 Git 版本号的输出,您可以使用 Ubuntu 默认包管理器 APT 安装它。 首先,使用 apt 包管理工具更新本地包索引。 ..

Read more