Category : 教程系列

介绍 我仍然记得最终能够在 node 中编写更大应用程序的后端部分的满足感,我相信你们中的许多人也这样做了。 然后?我们需要确保我们的应用程序按照我们期望的方式运行,强烈建议的方法之一是软件测试。每当向系统添加新功能时,软件测试都非常有用:已经设置了可以使用单个命令运行的测试环境有助于确定新功能是否引入了新错误。 过去,我们致力于使用 JSON Web Tokens 和 Passport进行Node API 身份验证。 在本教程中,我们将使用 Node.js 编写一个简单的 RESTful API,并使用Mocha和Chai编写针对它的测试。我们将在书店上测试 CRUD 操作。 像往常一样,您可以在整个教程中逐步构建应用程序,也可以直接在github上获取它。 Mocha:测试环境 Mocha是 Node.js 的 javascript 框架,它允许异步测试。假设它提供了一个环境,我们可以在其中使用我们最喜欢的断言库来测试代码。 . Mocha 有很多很棒的功能,网站显示了一个很长的列表,但这里是我最喜欢的: 简单的异步支持,包括承诺。 异步测试超时支持。 before, after, before each, after each hooks(对于清理每次测试的环境非常有用!)。 使用任何你想要的断言库,我们教程中的 Chai。 Chai:断言库 因此,使用 Mocha 我们实际上拥有进行测试的环境,但是例如,我们如何测试 HTTP 调用?此外,在给定定义的输入的情况下,我们如何测试 GET 请求是否实际返回了我们期望的 JSON 文件?我们需要一个断言库,这就是为什么 mocha 是不够的。 所以这里是Chai,当前教程的断言库: Chai ..

Read more

作者选择了技术多样性基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 层叠样式表,更广为人知的名称是 CSS,是一种用于 Web 视觉样式和设计的语言。CSS 在 Web 上有着悠久的历史,其最初的想法可以追溯到 1994 年。从那时起,CSS 已成为一种功能丰富的语言,能够布置网页、创建复杂的动画等等。 由于 CSS 是 Web 的样式语言,因此了解它的工作原理以及如何使用它是 Web 开发的基础。为了有效地使用超文本标记语言 (HTML)和JavaScript,理解它特别有价值。本教程将重点介绍将 CSS 应用于 HTML、级联和特殊性,这些是 CSS 的基础方面,并将为您在 Web 项目中有效使用 CSS 做好准备。 CSS 不是传统的编程语言。虽然它确实具有其他编程语言中的一些功能,例如变量和数学,但 CSS 完全依赖于 HTML 来工作。CSS 的目的是为 HTML 提供可视化修改。CSS 语言更像是浏览器的待办事项列表:您对浏览器说,这是我希望您找到的事情列表。一旦浏览器找到这些东西,CSS 就会指示浏览器浏览子集列表并对这些东西进行更改。 浏览器毫无疑问地从上到下遵循这个指令列表,编写 CSS 时需要牢记这一点。级联样式表的级联部分说明浏览器如何读取列表。由于浏览器是公正的,它会在遇到它们时更改样式。如果 CSS 说让一些 HTML 元素变成红色,然后在 CSS 后面说让这些元素变成蓝色,结果就是蓝色。 将样式应用到元素有点复杂,因为有很多方法可以告诉浏览器在 HTML 中查找元素。HTML 中的每个元素都有一组属性,可用于查找特定元素。由于浏览器从上到下公正地读取指令的级联,提供的指令必须是具体的。这称为特殊性,开发人员必须为浏览器编写精确的标准,以找到他们希望应用样式的确切元素。 ..

Read more

作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。 介绍 SQLite是一个免费的跨平台数据库管理系统。它因其效率和与许多不同编程语言接口的能力而广受欢迎。 在本教程中,您将在 Ubuntu 20.04 上安装 SQLite。然后,您将创建一个数据库、从中读取数据、插入项目、删除项目以及从单独的表中连接项目。 注意:本教程包括安装和使用 SQLite 的实用说明。它不涉及更大的概念问题和生产问题,例如何时应该或不应该考虑使用 SQLite 数据库。有关流行的关系数据库及其比较方式的出色概述,请查看我们的文章SQLite 与 MySQL 与 PostgreSQL:关系数据库管理系统的比较。 此外,许多语言保持与 SQLite 的集成。有关在 Python 代码中使用 SQLite 的说明,请查看我们的教程,如何sqlite3在 Python 3 中使用模块。 先决条件 要完成本教程,您需要: 运行 Ubuntu 20.04 的本地机器或服务器。要设置服务器,包括非 root sudo 用户和防火墙,您可以创建一个运行 Ubuntu 20.04 的 DigitalOcean Droplet,然后按照我们的初始服务器设置指南进行操作。 步骤 1 — 在 Ubuntu 20.04 上安装 SQLite 要在 Ubuntu 上安装 SQLite ..

Read more

介绍 状态管理涉及跟踪整个应用程序中的状态变化。 该provider软件包是满足状态管理需求的一种解决方案。 在本文中,您将学习如何应用provider到示例 Flutter 应用程序来管理用户帐户信息的状态。 先决条件 要完成本教程,您需要: 下载并安装Flutter。 下载并安装Android Studio 或 Visual Studio Code。 建议为您的代码编辑器安装插件: Flutter和Dart为 Android Studio 安装的插件。 Flutter 为 Visual Studio Code 安装的扩展。 熟悉导航和路线将是有益的,但不是必需的。 熟悉表单状态也将是有益的,但不是必需的。 本教程通过 Flutter v2.0.6、Android SDK v31.0.2、Android Studio v4.1 验证。 了解问题 考虑这样一种情况,您希望构建一个应用程序,该应用程序使用用户的一些数据(例如他们的姓名)自定义其某些屏幕。在屏幕之间传递数据的正常方法很快就会变成一堆乱七八糟的回调、未使用的数据和不必要的重建小部件。对于像 React 这样的前端库,这是一个常见的问题,称为道具钻取。 如果我们想从这些小部件中的任何一个向上传递数据,那么您需要使用更多未使用的回调进一步膨胀每个中间小部件。对于大多数小功能,这可能会使它们几乎不值得付出努力。 对我们来说幸运的是,该provider包允许我们将数据存储在更高的小部件中,就像我们在任何地方初始化我们的MaterialApp,然后直接从子小部件访问和更改它,无论嵌套如何,也无需重建中间的所有内容。 步骤 1 — 设置项目 为 Flutter 设置环境后,您可以运行以下命令来创建新应用程序: flutter create flutter_provider_example 导航到新的项目目录: cd flutter_provider_example ..

Read more

介绍 动画可以成就或破坏应用程序的用户体验。您可以使用标准CSS3手动创建CSS 动画,但此解决方案需要大量维护和配置。或者,您可以使用Animate.css,它将自己描述为“一个随时可用的跨浏览器动画库”。这些“只需加水”动画为您的所有动画需求提供了快速有效的解决方案。 在本教程中,我们将使用 Javascript 构建一个小型待办事项列表应用程序,然后为各种元素设置动画。为了演示 Animate.css 如何改进您的工作流程,我们将首先使用标准 CSS3 为一个元素设置动画,然后重构我们的代码以使用 Animate.css。然后,我们将从 Animate.css 的广泛库中添加几个额外的动画。 先决条件 要完成本教程,您需要: 您选择的代码编辑器,例如nano或Visual Studio Code 网络浏览器 熟悉 HTML 基础知识。您可以查看我们的教程系列如何使用 HTML 构建网站以获取介绍。 第 1 步 – 创建基础应用程序 在我们探索如何使用 Animate.css 库之前,让我们构建一个小的待办事项列表应用程序。这将为我们提供一些风格元素。然后我们将fadeIn使用标准 CSS3编写动画。 首先,为此项目创建一个新文件夹: mkdir animate-css-example 然后在里面导航: cd animate-css-example 我们要在这里创建三个文件:index.html,app.js,和style.css。 使用nano或您首选的代码编辑器创建第一个文件index.html: nano index.html 添加以下内容以定义一个简短的 HTML 文档,其中包含指向我们的 CSS 和 Javascript 文件的链接: ./animate-css-example/index.html <!DOCTYPE html> <html lang=”en”> ..

Read more

介绍 一些最引人注目的优势systemd是涉及进程和系统日志记录的优势。使用其他工具时,日志通常分散在整个系统中,由不同的守护进程和进程处理,并且当它们跨越多个应用程序时可能很难解释。systemd试图通过提供用于记录所有内核和用户空间进程的集中管理解决方案来解决这些问题。收集和管理这些日志的系统称为日志。 日志是通过journald守护进程实现的,它处理内核、initrd、服务等产生的所有消息。在本指南中,我们将讨论如何使用该journalctl实用程序,该实用程序可用于访问和操作其中保存的数据日记。 大概的概念 systemd日志背后的推动力之一是集中管理日志,而不管消息来自何处。由于大部分引导过程和服务管理由该systemd过程处理,因此标准化收集和访问日志的方式是有意义的。该journald守护进程从方便和动态操纵二进制格式的所有可用的资源,并将它们存储收集数据。 这为我们提供了许多显着的优势。通过使用单个实用程序与数据交互,管理员能够根据需要动态显示日志数据。这可以像查看 3 次启动前的启动数据一样简单,或者按顺序组合来自两个相关服务的日志条目以调试通信问题。 以二进制格式存储日志数据还意味着可以根据您当前的需要以任意输出格式显示数据。例如,对于日常日志管理,您可能习惯于以标准syslog格式查看日志,但如果您决定稍后绘制服务中断的图表,则可以将每个条目作为 JSON 对象输出,使其可用于您的图表服务。由于数据不是以纯文本形式写入磁盘,因此当您需要不同的按需格式时无需进行转换。 该systemd杂志可以与现有的用于syslog实现,或者它可以取代syslog的功能,根据您的需要。虽然该systemd日志将涵盖大多数管理员的日志记录需求,但它也可以补充现有的日志记录机制。例如,您可能有一个中央syslog服务器,用于从多个服务器编译数据,但您也可能希望将单个系统上多个服务的日志与日志交错systemd。您可以通过结合这些技术来实现这两项。 设置系统时间 使用二进制日志进行日志记录的好处之一是能够随意查看 UTC 或本地时间的日志记录。默认情况下,systemd将以当地时间显示结果。 正因为如此,在我们开始使用期刊之前,我们将确保时区设置正确。该systemd套件实际上带有一个名为的工具timedatectl,可以帮助解决这个问题。 首先,查看list-timezones选项可用的时区: timedatectl list-timezones 这将列出您系统上可用的时区。当您找到与您的服务器位置匹配的服务器时,您可以使用以下set-timezone选项进行设置: sudo timedatectl set-timezone zone 要确保您的机器现在使用正确的时间,请timedatectl单独使用该命令或与该status选项一起使用。显示将相同: timedatectl status Output Local time: Fri 2021-07-09 14:44:30 EDT Universal time: Fri 2021-07-09 18:44:30 UTC RTC time: Fri 2021-07-09 18:44:31 Time zone: America/New_York (EDT, -0400) System clock synchronized: yes ..

Read more

介绍 Django是一个功能齐全的 Python Web 框架,用于开发动态网站和应用程序。使用 Django,您可以快速创建 Python Web 应用程序并依靠该框架来完成大量繁重的工作。 在本指南中,您将在 Ubuntu 20.04 服务器上启动并运行 Django。安装后,您将启动一个新项目以用作站点的基础。 不同的方法 有多种安装 Django 的方法,具体取决于您的需要以及您希望如何配置开发环境。这些具有不同的优势,一种方法可能比其他方法更适合您的特定情况。 一些不同的方法包括: 从包全局安装:官方 Ubuntu 存储库包含可以使用传统apt包管理器安装的 Django 包。这很简单,但不如其他一些方法灵活。此外,存储库中包含的版本可能落后于项目提供的官方版本。 pip在虚拟环境中安装:您可以使用venv和 等工具为您的项目创建一个独立的环境virtualenv。虚拟环境允许您在项目目录中安装 Django 以及其他每个项目的自定义和包,而不会影响更大的系统。这通常是使用 Django 的最实用和推荐的方法。 安装开发版本git:如果您希望安装最新的开发版本而不是稳定版本,您可以从 Git 存储库获取代码。这是获取最新功能/修复所必需的,并且可以在您的虚拟环境中完成。然而,开发版本没有与更稳定版本相同的稳定性保证。 先决条件 在开始之前,您应该在 Ubuntu 20.04 服务器上拥有一个具有 sudo 权限的非 root 用户。要进行设置,请遵循我们的Ubuntu 20.04 初始服务器设置指南。 从包全局安装 如果您希望使用 Ubuntu 存储库安装 Django,该过程非常简单。 首先,使用以下命令更新您的本地包索引apt: sudo apt update 接下来,检查您安装了哪个版本的 Python。默认情况下,20.04 ..

Read more

介绍 默认情况下,每次应用程序发生变化时,Angular 2+ 都会对所有组件(从上到下)执行更改检测。用户事件或从网络请求接收到的数据可能会发生变化。 变更检测非常高效,但随着应用程序变得越来越复杂和组件数量增加,变更检测将不得不执行越来越多的工作。 一种解决方案是OnPush对特定组件使用变更检测策略。这将指示 Angular 仅在将新引用传递给这些组件及其子树时对这些组件及其子树运行更改检测,而不是在数据发生变异时。 在本文中,您将了解ChangeDetectionStrategy和ChangeDetectorRef。 先决条件 如果你想跟随这篇文章,你需要: 熟悉 Angular组件可能会有所帮助。 这篇文章还参考了RxJS 库和熟悉,BehaviorSubject也Observable可能有帮助。 探索一个ChangeDetectionStrategy例子 让我们检查一个带有子组件的示例组件,该组件显示水生生物列表并允许用户向列表中添加新生物: app.component.ts import { Component } from ‘@angular/core’; @Component({ selector: ‘app-root’, templateUrl: ‘./app.component.html’ }) export class AppComponent { aquaticCreatures = [‘shark’, ‘dolphin’, ‘octopus’]; addAquaticCreature(newAquaticCreature) { this.aquaticCreatures.push(newAquaticCreature); } } 模板将类似于: 应用程序组件.html <input #inputAquaticCreature type=”text” placeholder=”Enter a new creature”> <button (click)=”addAquaticCreature(inputAquaticCreature.value)”>Add ..

Read more

介绍 Linux 以在大多数发行版中提供大量成熟、有用的命令行实用程序而闻名。通常,系统管理员可以使用内置工具完成大部分工作,而无需安装其他软件。 在本指南中,我们将讨论如何使用netcat实用程序。这个多功能命令可以帮助您监控、测试和跨网络连接发送数据。 Netcat 几乎可以在任何现代 Linux 发行版上使用。Ubuntu 附带了 netcat 的 BSD 变体,这就是我们将在本指南中使用的。其他版本可能以不同方式运行或提供其他选项。 一般语法 默认情况下,netcat 通过启动与远程主机的 TCP 连接来运行。 最基本的语法是: netcat [options] host port 这将尝试在指定的端口号上启动到已定义主机的 TCP 连接。它的功能类似于旧的 Linuxtelnet命令。请记住,您的连接是完全未加密的。 如果您想发送 UDP 数据包而不是启动 TCP 连接,您可以使用以下-u选项: netcat -u host port 您可以通过在第一个和最后一个之间放置一个破折号来指定一系列端口: netcat host startport-endport 这通常与一些附加标志一起使用。 在大多数系统上,我们可以使用netcat或nc互换使用。它们是同一命令的别名。 如何使用 Netcat 进行端口扫描 netcat 最常见的用途之一是作为端口扫描器。 尽管 netcat 可能不是最复杂的工具(在大多数情况下 nmap 是更好的选择),但它可以执行简单的端口扫描以轻松识别开放端口。 如上所述,我们通过指定要扫描的端口范围以及-z执行扫描而不是尝试启动连接的选项来完成此操作。 例如,我们可以通过发出以下命令来扫描最多 1000 ..

Read more

该系列的一部分: 如何使用 HTML 构建网站 本教程系列将指导您使用 HTML(用于在 Web 浏览器中显示文档的标准标记语言)创建和进一步自定义该网站。不需要有任何编码经验,但如果您想重新创建演示网站,我们建议您从本系列的开头开始。 在本系列结束时,您应该有一个准备好部署到云的网站,并且基本熟悉 HTML。了解如何编写 HTML 将为学习其他前端 Web 开发技能(例如 CSS 和 JavaScript)奠定坚实的基础。 本教程将向您介绍一个基本的 HTML 文档,并教您如何在浏览器中查看 HTML 文档的源代码。 HTML 用于用指令标记文档,这些指令告诉浏览器如何显示和解释文档的内容。例如,HTML 可以告诉浏览器哪些文本内容应该被解释为标题,哪些文本内容应该被解释为段落。HTML 还用于添加图像以及为文本和图像分配链接。这些指令是通过 HTML 标签传达的,这些标签是这样写的:<tagname>. 许多(尽管不是全部)标签使用开始标签和结束标签来环绕它们用于修改的内容。 为了了解这些标签是如何使用的,让我们检查一段 HTML 代码。下面的 HTML 代码显示了如何使用 HTML 标记来构建文本以及添加链接和图像。如果您没有立即理解标签,请不要担心 – 我们将在下一个教程中学习这些标签。 <h1>Sammy’s Sample HTML</h1> <p>This code is an example of how HTML is written.</p> <p>It uses HTML tags ..

Read more