Category : 教程系列

介绍 套接字是一种在服务器上运行的程序之间或在不同服务器上运行的程序之间启用进程间通信的方法。服务器之间的通信依赖于网络套接字,它使用 Internet 协议 (IP) 来封装和处理发送和接收数据。 客户端和服务器上的网络套接字都由它们的套接字地址引用。地址是传输协议(如传输控制协议 (TCP) 或用户数据报协议 (UDP))、IP 地址和端口号的唯一组合。 在本教程中,您将了解以下用于进程间通信的不同类型的套接字: 流套接字,使用 TCP 作为其底层传输协议 数据报套接字,使用 UDP 作为其底层传输协议 Unix 域套接字,它使用本地文件而不是网络接口和 IP 数据包来发送和接收数据。 在本教程的每个部分中,您还将学习如何枚举 Linux 系统上的相应套接字类型。您将使用各种命令行工具检查每种类型的套接字。 先决条件 本教程中的示例在 Ubuntu 20.04 服务器上进行了验证。您可以在本地计算机或远程服务器上使用大多数现代 Linux 发行版来学习本教程,只要您安装了发行版所需的每个工具的等效版本。 要开始使用 Ubuntu 20.04,您需要一台已按照我们的 Ubuntu 20.04 初始服务器设置指南进行配置的服务器。 您还需要一些其他包来检查系统上的套接字。使用以下apt update命令确保您的本地包缓存是最新的: sudo apt update 然后使用以下命令安装所需的软件包: sudo apt install iproute2 netcat-openbsd socat 该iproute2包包含ss实用程序,我们将使用它来检查套接字。我们将使用该netcat-openbsd包来安装 netcat。注意netcatnc在命令行调用时缩写为。最后,我们将使用该socat包来创建示例套接字。 什么是流套接字? 流套接字是面向连接的,这意味着发送到网络套接字和从网络套接字接收的数据包由主机操作系统传递,以便应用程序进行处理。基于网络的流套接字通常使用传输控制协议 (TCP) ..

Read more

介绍 在本文中,我们将讨论如何使用 VueJs 处理文件上传。我们将创建一个图像上传器,允许用户通过拖放或选择文件对话框上传单个或多个图像文件。 然后我们将上传选定的图像并相应地显示它们。我们还将学习过滤上传文件类型,例如,我们只允许图像,不允许文件类型如 PDF。 源代码:https : //github.com/chybie/file-upload-vue 演示:https : //vue-file-upload-1126b.firebaseapp.com/ 文件上传 UI 和 API 文件上传由两部分组成:UI(前端)和API(后端)。我们将使用VueJs来处理 UI 部分。我们需要一个后端应用程序来接受上传的文件。您可以按照后端教程或下载并运行这些服务器端应用程序之一来处理后端的文件上传:- 使用 Hapi.js 上传文件:https://scotch.io/bar-talk/handling-file-uploads-with-hapi-js,或 使用 Express + Multer 上传文件:https://scotch.io/tutorials/express-file-uploads-with-multer,或 切换到您选择的任何云解决方案(Amazon S3、Google Drive 等)。 在本文中,我们将使用带有 Hapi.js 的文件上传作为我们的后端。我们还将学习在前端启用虚假上传的技巧。 使用 Vue-Cli 设置项目 我们将使用vue-cli来搭建 Vue.js 项目。我们将使用webpack-simple项目模板。 # install cli npm install vue-cli -g # then create project, with sass # follow ..

Read more

MongoDB,也称为Mongo,是一个开源文档数据库,用于许多现代 Web 应用程序。它被归类为NoSQL数据库,因为它不依赖于传统的基于表的关系数据库结构。 相反,Mongo 使用具有动态模式的类 JSON 文档。这意味着,与关系数据库不同,MongoDB 在向数据库添加数据之前不需要预定义的模式。您可以随时根据需要随时更改架构,而无需使用更新的架构设置新数据库。 更多与 MongoDB 相关的教育资源,请访问: 如何安装 MongoDB NoSQL 数据库管理系统和模型的比较 可以在我们的MongoDB 标记页面上找到我们关于 MongoDB 的教育资源的完�..

Read more

介绍 PostgreSQL或 Postgres 是一种关系数据库管理系统,它提供了SQL查询语言的实现。它符合标准并具有许多高级功能,例如可靠的事务和没有读锁的并发。 本指南演示了如何在 Ubuntu 20.04 服务器上快速启动并运行 Postgres,从安装 PostgreSQL 到设置新用户和数据库。如果您更喜欢有关安装和管理 PostgreSQL 数据库的更深入的教程,请参阅如何在 Ubuntu 20.04 上安装和使用 PostgreSQL。 先决条件 要学习本教程,您需要一台 Ubuntu 20.04 服务器,该服务器已按照我们的 Ubuntu 20.04 初始服务器设置指南进行配置。完成本必备教程后,您的服务器应该有一个具有 sudo 权限的非root用户和一个基本防火墙。 第 1 步 – 安装 PostgreSQL 要安装 PostgreSQL,首先刷新服务器的本地包索引: sudo apt update 然后,安装 Postgres 包以及-contrib添加一些附加实用程序和功能的包: sudo apt install postgresql postgresql-contrib 步骤 2 — 使用 PostgreSQL 角色和数据库 默认情况下,Postgres 使用称为“角色”的概念来处理身份验证和授权。在某些方面,它们类似于常规的 Unix ..

Read more

介绍 在 JavaScript 中,您经常会处理存储在数组中的数据。一个常见的任务是搜索数组以查找它是否包含满足特定搜索条件的值(或多个值)。根据手头的任务,您可能对用于确认的布尔值、数组中值位置的索引或包含所有搜索结果的单独数组感兴趣。 在 ECMAScript 6 之前,您可能会使用for循环来遍历数组中的所有项目并对每个项目执行操作。现在有几个内置的实用方法可以解决一些在数组中搜索值的常见任务。 在本文中,您将了解Array.includes(),Array.indexOf,Array.find(),和Array.filter。 先决条件 如果你想跟随这篇文章,你需要: 熟悉JavaScript 数组。 使用 includes() 如果值存在于数组中,则该includes()方法返回 atrue或 a false。 这是基本语法: arr.includes(valueToFind[, fromIndex]); 第一个参数valueToFind是要在数组中匹配的值。第二个参数fromIndex是可选的,用于设置开始比较的索引。默认为0,因此搜索整个数组。 这是鳄鱼事实的示例数组: const alligatorFacts = [“thick scales”, 80, “4 foot tail”, “rounded snout”, 80]; 然后使用includes()检查字符串是否”thick scales”存在于数组中: alligatorFacts.includes(“thick scales”); 此代码将返回true,因为该字符串存在于数组中。 如果您要添加一个fromIndex参数以便在 之后进行比较”thick scales”,它将返回false: alligatorFacts.includes(“thick scales”, 1); 现在,有一些重要的事情需要注意。此.includes()方法使用严格比较。 alligatorFacts.includes(80); 此代码将返回,true因为数值80在数组中。 alligatorFacts.includes(’80’); 此代码将返回,false因为字符串值’80’不在数组中。 includes() 对于您只需要知道数组中是否存在某个值的用例很有帮助。 使用 ..

Read more

介绍 在localStorage和sessionStorage对象,Web存储API的一部分,是在本地保存键/值对两个伟大的工具。使用localStorage和sessionStorage用于存储是使用 cookie 的替代方案,并且有一些优点: 数据仅保存在本地,服务器无法读取,从而消除了 cookie 存在的安全问题。 它允许保存更多数据(大多数浏览器为 10mb)。 语法很简单。 它也受所有现代浏览器的支持,因此您现在可以毫无问题地使用它。Cookie 仍然有用,尤其是在涉及身份验证时,但有时使用 CookielocalStorage或sessionStorage可能是更好的选择。 先决条件 要完成本教程,您将需要以下内容: 您的机器上安装了最新版本的 Node。要安装 Node,请按照此如何安装 Node.js教程中概述的步骤操作。 对 JavaScript 编码的基本了解,您可以在此如何在 JavaScript 中编码系列中找到。 第 1 步 – 理解localStoragevssessionStorage localStorage并且sessionStorage几乎相同并且具有相同的 API。与 不同的是,sessionStorage数据仅保留到窗口或选项卡关闭为止。使用localStorage,数据会一直保留,直到用户手动清除浏览器缓存或您的 Web 应用程序清除数据。本教程具有localStorage,但语法sessionStorage相同。 有了这些知识,您现在可以在localStorage. 步骤 2 — 创建、读取和更新条目 您可以localStorage使用setItem()方法为对象创建条目。该setItem()方法采用两个参数,即key和 对应的值: let key = ‘Item 1’; localStorage.setItem(key, ‘Value’); 要读取条目,请使用getItem()方法。该getItem()方法需要一个参数,该参数必须是键。此函数将相应的值作为字符串返回: let myItem = localStorage.getItem(key); 此代码设置myItem等于’Value’,这是 的对应值key。 ..

Read more

作者选择了技术多样性基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 表格在网络上有着悠久而复杂的历史。在 CSS 出现之前,<table>元素是在 Web 上创建丰富设计布局的唯一可能途径。但是创建布局<table>并不是它的预期用途或理想用途。现在有了更好的布局选项,开发人员可以使用该<table>元素按预期显示表格数据,就像电子表格一样。这允许语义 HTML,或使用符合其预期含义的 HTML 元素。 格式良好的 HTML 为浏览器提供信息,并允许浏览器为用户提供最佳界面。虽然本教程将重点介绍表格样式的视觉方面,但有效的表格 HTML 可确保所有用户(包括视力正常、视力不正常和有其他情况的用户)都能够导航和理解表格信息。<table>按预期使用元素可以大大提高 CSS 设计的可访问性。 在本教程中,您将运行一个<table>元素样式示例。本教程的前半部分将重点介绍常见的表格布局,该布局主要使用浏览器的默认表格元素样式。浏览器默认值是使用 CSS 的起点,因此了解它们是什么很重要。后半部分将重构表格以对每个部分使用独特的样式。在本教程结束时,您将构建一个表格,该表格具有不同的 x 轴和 y 轴表格标题样式、交替的行颜色、表格的清晰标题和突出显示的数据点,如下图所示: 先决条件 了解 CSS 的级联和特异性功能,您可以通过阅读如何使用级联和特异性将 CSS 样式应用到 HTML 中获得。 类型选择器、组合器选择器和选择器组的知识,您可以在如何选择 HTML 元素以使用 CSS 设置样式中找到这些知识。 保存在本地计算机上的空 HTML 文件index.html,您可以从文本编辑器和选择的 Web 浏览器访问该文件。要开始使用,请查看我们的如何设置 HTML 项目教程,并按照如何使用和理解 HTML 元素获取有关如何在浏览器中查看 HTML 的说明。如果您不熟悉 HTML,请尝试整个如何在 HTML 中构建网站系列。 设置<table>HTML 在您可以设置样式之前<table>,您需要使用一个。一个元素中可以存在很多可能的<table>元素。该<table>元素是 ..

Read more

介绍 Web 应用程序经常需要处理来自用户的传入请求数据。此有效负载可以采用查询字符串、表单数据和 JSON 对象的形式。Flask与任何其他 Web 框架一样,允许您访问请求数据。 在本教程中,您将使用三个接受查询字符串、表单数据或 JSON 对象的路由构建一个 Flask 应用程序。 先决条件 要完成本教程,您需要: 该项目需要在本地环境中安装 Python。 该项目将使用Pipenv,这是一个生产就绪的工具,旨在将所有打包世界中最好的东西带到 Python 世界。它将 Pipfile、pip 和virtualenv整合到一个命令中。 测试 API 端点需要下载并安装Postman 之类的工具。 本教程已通过 Pipenv v2020.11.15、Python v3.9.0 和 Flask v1.1.2 验证。 设置项目 为了演示使用请求的不同方式,您需要创建一个 Flask 应用程序。尽管示例应用程序对视图函数和路由使用了简化的结构,但您在本教程中学到的知识可以应用于任何组织视图的方法,例如基于类的视图、蓝图或 Flask-Via 等扩展。 首先,您需要创建一个项目目录。打开终端并运行以下命令: mkdir flask_request_example 然后,导航到新目录: cd flask_request_example 接下来,安装烧瓶。打开终端并运行以下命令: pipenv install Flask 该pipenv命令将为该项目创建一个 virtualenv、一个 Pipfile、installflask和一个 Pipfile.lock。 要激活项目的 virtualenv,请运行以下命令: ..

Read more

LEMP 是指通常一起用于为 Web 应用程序提供服务的开源软件的集合。术语LEMP是一个表示的结构的首字母缩写大号inux下操作系统与nginx的(显着的发动机-X ,因此È的缩写)网络服务器,与存储在网站上的数据中号ySQL数据库和通过处理的动态内容P生命值。 LEMP 堆栈代表了一种配置 Web 服务器的方法,并在 Web 上的许多高度扩展的应用程序中使用。 要了解有关 LEMP 的更多信息,我们的教程如何在 Ubuntu 20.04 上安装 Linux、Nginx、MySQL、PHP(LEMP 堆栈)共享更多信息并指导您在 Web 服务器上安装 LEMP..

Read more

作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 Python 的argparse标准库模块是一种工具,可帮助您通过 Python 代码编写命令行界面 (CLI)。您可能已经熟悉 CLI:诸如git、ls、grep和 之类的程序find都公开了命令行界面,允许您使用特定的输入和选项调用底层程序。argparse允许你调用类似于你怎么可能调用命令行参数自定义的Python代码git,ls,grep,或者find使用命令行。如果您希望允许其他开发人员从命令行运行您的代码,您可能会发现这很有用。 在本教程中,您将使用 Python 的argparse标准库模块公开的一些实用程序。您将编写接受位置和可选参数的命令行接口来控制底层程序的行为。您还将通过提供可以显示给使用您的 CLI 的其他开发人员的帮助文本来自行记录 CLI。 在本教程中,您将为跟踪虚构水族馆中的鱼的程序编写命令行界面。 先决条件 为了充分利用本教程,我们建议您: 对 Python 3 编程有一定的了解。您可以查看我们的How To Code in Python 3系列教程以了解背景知识。 编写接受位置参数的命令行程序 您可以使用该argparse模块编写接受位置参数的命令行界面。位置参数(与可选参数相反,我们将在后续部分中探讨)通常用于指定程序所需的输入。 让我们考虑一个示例 CLI,它打印由位置tank参数标识的水族箱中的鱼。 要创建 CLI,请使用文本编辑器打开一个文件: nano aquarium.py 然后,添加以下 Python 代码: 水族馆.py import argparse tank_to_fish = { “tank_a”: “shark, tuna, herring”, “tank_b”: “cod, flounder”, } ..

Read more