Category : 教程系列

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

Read more

作者选择Open Sourcing Mental Illness接受捐赠,作为Write for DOnations计划的一部分。 介绍 使用Vue.js创建 Web 应用程序时,最佳做法是使用小型模块化代码块构建应用程序。这不仅使您的应用程序的各个部分保持专注,而且随着应用程序的复杂性增加,它也使应用程序更容易更新。由于从Vue CLI生成的应用程序需要构建步骤,因此您可以访问单文件组件(SFC) 以将模块化引入您的应用程序。SFC 具有.vue扩展名并包含 HTML <template>、<script>和<style>标签,并且可以在其他组件中实现。 SFC 为开发人员提供了一种方法,可以为他们的每个组件创建自己的HTML标签,然后在他们的应用程序中使用它们。与<p>HTML 标签将在浏览器中呈现段落并保持非呈现功能相同的方式,组件标签将呈现 SFC 放置在 Vue 模板中的任何位置。 在本教程中,您将创建一个 SFC 并用于props向下传递数据并slots在标签之间注入内容。在本教程结束时,您将对 SFC 是什么以及如何实现代码重用有一个大致的了解。 先决条件 14.16.0您的计算机上安装了Node.js版本或更高版本。要在 macOS 或 Ubuntu 20.04 上安装它,请按照如何在 macOS 上安装 Node.js 和创建本地开发环境中的步骤或如何在 Ubuntu 20.04 上安装 Node.js 的使用 PPA部分进行安装 Vue CLI 安装在您的机器上并生成了一个新项目。由于本教程使用 Vue 3 Composition API,因此请确保3.x (Preview)在生成应用程序时选择该选项。此项目的名称将是sfc-project,它将充当根目录。 您还需要具备 JavaScript、HTML 和 ..

Read more

介绍 模式是应用程序中的独立窗口,最常见的是作为对话框。它们是用于提供信息或要求确认的常见用户界面模式。 在本教程中,您将学习如何在 React 项目中实现模态组件。您将创建一个Dashboard组件来管理状态和一个按钮来访问模态。您还将开发一个Modal组件来构建一个模态和一个关闭按钮。单击按钮后,您的项目将显示并关闭模态。 先决条件 要完成本教程,您需要: 在开始本教程之前对 React 有一个基本的了解。您可以通过阅读如何在 React.js系列中编码来了解有关 React 的更多信息。 第 1 步 – 启动Dashboard组件 仪表板是您显示模态的地方。要开始您的仪表板,请将 React 实例和Component对象导入到您的Dashboard.js文件中。声明一个Dashboard组件并设置您的状态: 仪表板.js import React, { Component } from “react”; class Dashboard extends Component { constructor() { super(); this.state = { show: false }; this.showModal = this.showModal.bind(this); this.hideModal = this.hideModal.bind(this); } showModal = () => { ..

Read more

介绍 Redux是 JavaScript 应用程序的可预测状态容器。如果您对 Redux 不熟悉,我们建议您查看我们对 Redux 的介绍。 在本文中,您将学习如何在 React Native 应用程序中使用 Redux 持久化用户数据。该应用程序是一个模拟社交网络,HomeScreen显示已连接好友的数量,并FriendsScreen显示要添加的潜在好友列表。您将使用 Redux 在两个屏幕之间共享状态。 先决条件 要完成本教程,您需要: Node.js 的本地开发环境。遵循如何安装 Node.js 并创建本地开发环境。 熟悉设置环境以创建新的 React Native 项目并使用 iOS 或 Android 模拟器可能会有所帮助。 本教程基于如何在 React Native 中使用带有 React 导航的路由中涵盖的主题。建议您阅读本教程以了解有关该项目如何工作的更多背景信息,但这不是必需的。 本教程已通过 Node v14.7.0、npmv6.14.7、reactv16.13.1、react-nativev0.63.2、@react-navigation/nativev5.7.3、@react-navigation/stackv5.9.0、reduxv4.0.5 和react-reduxv7.2.1 验证。 步骤 1 — 设置项目和安装 Redux 本教程将使用如何在 React Native 中使用带有 React 导航的路由中的代码的修改版本。首先,克隆MySocialNetwork: git clone https://github.com/do-community/MySocialNetwork.git ..

Read more

介绍 在 JavaScript 中,可以使用Base64对字符串进行编码和解码。 在本文中,您将了解现代 Web 浏览器中可用的btoa和atobJavaScript 函数。 先决条件 要阅读本文,您需要: 理解 JavaScript 中的字符串。您可以查阅如何在 JavaScript 中使用字符串以了解更多信息。 了解使用or可用的函数WindowWorkerGlobalScope。 了解开发者控制台。您可以查阅如何使用 JavaScript 开发人员控制台以了解更多信息。 使用 Base64 编码和解码字符串 btoa()和atob()是两个 Base64 辅助函数,它们是 HTML 规范的核心部分,可在所有现代浏览器中使用。 注意:这些函数的命名参考了用于将二进制转换为 ASCII (btoa) 和将 ASCII 转换为二进制 (atob) 的旧 Unix 命令。但是,“这些函数的输入和输出都是Unicode字符串”。 btoa() 接受一个字符串并将其编码为 Base64。 假设您有一个字符串”Hello World!”,并希望将其编码为 Base64。在浏览器的 Web 开发人员控制台中,定义字符串、对其进行编码并显示编码后的字符串: // Define the string var decodedStringBtoA = ‘Hello World!’; // ..

Read more

作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 Python 包括许多内置函数——这些是全局 Python 函数,可以从任何 Python 代码调用,而无需导入其他模块。例如,您始终可以调用print内置函数来输出文本。 几个内置函数(all、any、max和min其中)将值的可迭代对象作为它们的参数并返回单个值。一个可迭代对象是一个可以“迭代”的 Python 对象,也就是说,它将按顺序返回项目,以便您可以在for循环中使用它。例如,当您想要确定列表中的所有或任何元素是否满足特定条件,或者查找列表中的最大或最小元素时,内置函数非常有用。 在本教程中,您将使用内置的功能all,any,max,和min。 先决条件 为了充分利用本教程,建议您拥有: 对 Python 3 编程有一定的了解。您可以查看我们的How To Code in Python 3系列教程以了解背景知识。 Python 交互式控制台,如果您想尝试本教程中的示例代码,可以使用如何使用Python 交互式控制台教程。 使用 all 内置函数all检查迭代中的每个元素是否都是True。例如: all([True, True]) 如果您运行前面的代码,您将收到以下输出: OutputTrue 在第一个示例中,您调用all并为其提供一个包含两个元素(两个True布尔值)的列表。由于迭代中的每个元素都是True,因此输出是True。 all将返回False在给定的迭代,如果一个或多个元素是False: all([True, False, True]) 如果您运行前面的代码,您将收到以下输出: OutputFalse 您all使用包含三个元素(包括一个False布尔值)的列表进行调用。由于可迭代对象中的一个元素是False,因此调用的输出all是False。 值得注意的是,一旦遇到迭代中的第一个条目,就all停止迭代并立即返回。因此,如果您想检查可能相互建立的连续条件,但在一个条件为 时立即返回,这会很有用。FalseFalseallFalse 需要注意的一个特殊情况是何时all给出一个空的可迭代对象: all([]) 如果您运行前面的代码,您将收到以下输出: OutputTrue 当您给出all一个空的可迭代对象(例如,像 的空列表all([]))时,其返回值为True。因此,如果迭代中的每个元素都为 True 或有 0 ..

Read more

作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 Flask 是一个使用 Python 语言构建 Web 应用程序的框架,SQLite 是一个数据库引擎,可以与 Python 一起使用来存储应用程序数据。在本教程中,您将修改使用 Flask 和 SQLite 构建的具有一对多关系的应用程序中的项目。 本教程是如何使用 Flask 和 SQLite 的一对多数据库关系的延续。遵循它之后,您已经成功地创建了一个 Flask 应用程序来管理待办事项、在列表中组织项目并将新项目添加到数据库中。在本教程中,您将添加将待办事项标记为已完成、编辑和删除项目以及向数据库添加新列表的功能。在本教程结束时,您的应用程序将包含编辑和删除按钮以及已完成待办事项的删除线。 先决条件 在开始遵循本指南之前,您需要: 本地 Python 3 编程环境,请遵循如何为 Python 3系列安装和设置本地编程环境中的分发教程。在本教程中,我们将调用我们的项目目录flask_todo。 (可选)在第 1 步中,您可以选择克隆我们将在本教程中处理的待办事项应用程序。但是,您可以选择学习如何使用 Flask 和 SQLite 的一对多数据库关系。您可以从此页面访问最终代码。 了解基本的 Flask 概念,例如创建路由、呈现 HTML 模板和连接到 SQLite 数据库。如果您不熟悉这些概念,请查看如何在 Python 3 中使用 Flask 制作 Web 应用程序和如何在 Python ..

Read more

该系列的一部分: 如何使用 HTML 构建网站 本教程系列将指导您使用 HTML(用于在 Web 浏览器中显示文档的标准标记语言)创建和进一步自定义该网站。不需要有任何编码经验,但如果您想重新创建演示网站,我们建议您从本系列的开头开始。 在本系列结束时,您应该有一个准备好部署到云的网站,并且基本熟悉 HTML。了解如何编写 HTML 将为学习其他前端 Web 开发技能(例如 CSS 和 JavaScript)奠定坚实的基础。 在本教程中,我们将逐步介绍使用 HTML 向网页添加网站图标所涉及的步骤。您可以将任何喜欢的图像用于收藏夹图标,但请记住,鉴于收藏夹图标的尺寸较小,简单、对比度高的图像通常效果最佳。您还可以通过favicon.cc 等网站生成自定义图标。 网站图标是位于网页标题左侧的浏览器选项卡中的小图像。下图说明了收藏夹图标的位置。 要将网站图标添加到您的站点,请在您的项目目录中创建一个名为images(如果您还没有)的文件夹,并将所需的网站图标图像保存在该文件夹中。如果您没有图像,请下载我们在演示网站上托管的Sammy the Shark 图像。(有关如何使用 HTML 向网页添加图像的复习,请访问本教程系列前面的教程HTML 图像。 接下来,将<link>元素(在下面突出显示)添加到元素index.html正下方的文件中<title>。你的代码现在应该是这样的: … <title> Sammy’s First Website </title> <link rel=”shortcut icon” type=”image/jpg” href=”Favicon_Image_Location”/> … 确保替换Favicon_Image_Location为您的网站图标图像的相对文件路径。保存index.html文件并在 Web 浏览器中重新加载它。您的浏览器选项卡现在应该包含一个网站图标图像。 您现在应该知道如何使用 HTML 将网站图标图像添加�..

Read more

作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 BGP(边界网关协议)是负责在互联网上路由数据包的核心协议之一,因此当它出错时,可能会发生重大中断。例如,在 2019 年,一家小型 ISP 进行了 BGP 错误配置,不幸的是,该错误配置向上游传播并导致 Cloudflare 和 AWS 的大部分离线超过一个小时。此外,一年前发生了 BGP 劫持,目的是拦截流向知名加密货币钱包提供商的流量并窃取毫无戒心的客户的资金。 BGPalerter是一种开源 BGP 网络监控工具,可以提供有关 BGP 活动的实时警报,包括路由可见性和新路由公告,以及潜在的恶意活动,例如路由劫持或路由泄漏。 注意: BGPalerter 自动摄取公开可用的网络路由信息,这意味着它不必具有任何级别的特权访问或集成到您希望监控的网络中。所有监控都完全符合《计算机滥用法》、《计算机欺诈和滥用法》以及其他类似法律。但是,建议负责任地向受影响的网络运营商披露任何相关调查结果。 在本教程中,您将安装和配置 BGPalerter 以监控重要网络是否存在潜在的可疑活动。 先决条件 要完成本教程,您需要: 按照 Ubuntu 18.04 的初始服务器设置(包括 sudo 非 root 用户)设置的 Ubuntu 18.04 服务器。 您希望监控的一个或多个网络或设备,例如: 您维护的服务器 您的公司网络 您当地的 ISP 对于每个设备或网络,您需要确定其所属的单个 IP 地址、IP 地址范围或自治系统编号。这在步骤 1 中有介绍。 准备好这些后,以非 root ..

Read more

作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。 介绍 Luigi是一个Python包,用于管理长时间运行的批处理,即批量项目的数据处理作业的自动运行。Luigi 允许您将数据处理作业定义为一组相关任务。例如,任务 B 取决于任务 A 的输出。任务 D 取决于任务 B 和任务 C 的输出。Luigi 自动计算出它需要运行哪些任务来完成请求的作业。 总的来说,Luigi 提供了一个框架来开发和管理数据处理管道。它最初是由Spotify开发的,他们用它来管理需要从各种来源获取和处理数据的任务集合。在 Luigi 中,Spotify 的开发人员构建了功能来帮助满足他们的批处理需求,包括故障处理、自动解决任务之间依赖关系的能力以及任务处理的可视化。Spotify 使用 Luigi 来支持批处理作业,包括向用户提供音乐推荐、填充内部仪表板以及计算热门歌曲列表。 在本教程中,您将构建一个数据处理管道来分析古腾堡计划中最流行的书籍中最常用的词。为此,您将使用 Luigi 包构建管道。您将使用 Luigi 任务、目标、依赖项和参数来构建您的管道。 先决条件 要完成本教程,您将需要以下内容: 使用具有sudo特权的非 root 用户设置的 Ubuntu 服务器。按照使用 Ubuntu 20.04指南进行初始服务器设置。 Python 3.6 或更高版本并virtualenv已安装。按照如何在 Ubuntu 20.04 上安装 Python 3 和设置本地编程环境来配置 Python 并安装virtualenv. 您将在本教程中设置环境和项目文件夹。 第 1 步 — ..

Read more