作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 防火墙可以说是抵御网络攻击的最重要的防线之一。从头开始配置防火墙的能力是一种授权技能,使管理员能够控制他们的网络。 Packet Filter (PF)是一个著名的防火墙应用程序,由安全驱动的OpenBSD项目在上游维护。它更准确地表示为包过滤工具,因此得名,并以其简单的语法、用户友好性和广泛的功能而闻名。默认情况下,PF 是有状态的防火墙,将有关连接的信息存储在状态表中,可出于分析目的访问该表。PF 是 FreeBSD 基础系统的一部分,并得到了强大的开发人员社区的支持。尽管 FreeBSD 和 OpenBSD 版本的 PF 在内核架构方面存在差异,但通常它们的语法是相似的。根据它们的复杂性,可以修改通用规则集,以相对较少的工作量来处理任一分布。 在本教程中,您将在带有 PF 的 FreeBSD 12.1 服务器上从头开始构建防火墙。您将设计可用作未来项目模板的基本规则集。您还将探索 PF 的一些高级功能,例如数据包卫生、暴力预防、监控和日志记录以及其他第三方工具。 先决条件 在开始本教程之前,您需要以下内容: 1G FreeBSD 12.1 服务器(ZFS或UFS)。您可以使用我们的如何开始使用 FreeBSD 教程来将您的服务器设置为您喜欢的配置。 FreeBSD 默认没有启用防火墙——定制是 FreeBSD 精神的标志。因此,当您第一次启动服务器时,您需要在配置 PF 时进行临时保护。如果您使用的是 DigitalOcean,则可以在启动服务器后立即启用云防火墙。有关配置云防火墙的说明,请参阅 DigitalOcean 的防火墙快速入门。如果您使用其他云提供商,请在开始之前确定获得即时保护的最快途径。无论您选择哪种方法,您的临时防火墙都必须只允许入站 SSH 流量,并且可以允许所有类型的出站流量。 第 1 步 – 建立您的初步规则集 您将通过起草初步规则集开始本教程,该规则集提供基本保护和从 Internet 访问关键服务的权限。此时,您有一个正在运行的 FreeBSD ..
Category : 教程系列
介绍 在数学上,运算是对一个或多个称为操作数映射到输出值的值的计算。的操作者是映射到的操作数的输出值符号或标志。 一元运算是只有一个操作数的运算。该操作数出现在运算符之前或之后。 一元运算符比标准的 JavaScript 函数调用更有效。此外,一元运算符不能被覆盖,因此它们的功能是有保证的。 操作员 解释 一元加 ( +) 尝试将操作数转换为数字 一元否定 ( -) 尝试将操作数转换为数字并在之后取反 增量 ( ++) 在其操作数上加一 递减 ( –) 从其操作数减一 逻辑非 ( !) 转换为布尔值然后否定它 按位非 ( ~) 反转操作数中的所有位并返回一个数字 typeof 返回一个字符串,它是操作数的类型 delete 删除数组的特定索引或对象的特定属性 void 丢弃表达式的返回值。 在本文中,您将了解 JavaScript 中的所有一元运算符。 先决条件 如果你想跟随这篇文章,你需要: 对 JavaScript数据类型、变量、对象和函数有一定的了解。 一元加 ( +) 一元加号运算符 ( +) 在其操作数之前并计算其操作数,但如果尚未将其转换为数字,则会尝试将其转换为数字。 它可以将数字、布尔值(true和false)的所有字符串表示形式转换null为数字。数字将包括整数、浮点数、十六进制、科学(指数)表示法和Infinity. 如果操作数无法转换为数字,则一元加运算符将返回NaN。 这里有些例子: ..
介绍 创建动态且可重用的代码很重要。Don’t-Repeat-Yourself 规则或 DRY 是在 TypeScript 中编写代码时要遵循的重要原则。使用 TypeScript 别名将帮助您完成此任务。 在本教程中,您将重构使用字符串文字来包含别名的代码。您将能够使用和理解 TypeScript 别名。 先决条件 要成功完成本教程,您需要具备以下条件: 您的机器上安装了最新版本的 TypeScript。此如何设置新的 TypeScript 项目教程可以帮助您完成此操作。 对字符串字面量的理解。此文章打字稿字符串文字类型是一个伟大的地方开始。 第 1 步 – 使用字符串文字 字符串文字允许我们使用字符串作为类型。创建一个名为的变量pet,而不是将其设置为与字符串等传统类型相等,而是将其分配’cat’为类型: let pet: ‘cat’; 由于petis 的类型’cat’,它只需要 的值’cat’。任何其他值都会导致error: pet = ‘cat’; // Ok pet = ‘dog’; // Compiler error 在上面的代码片段中,赋值pet给’dog’会导致错误,因为 的唯一有效值pet是’cat’。 与联合类型一起使用时,字符串文字变得更加强大。联合类型用于定义可以是多种类型的值。对于联合类型,|字符用于分隔不同的可能类型: let pet: ‘cat’ | ‘dog’; 该pet变量现在可以采用’cat’或’dog’作为值。分配pet给任何其他字符串值将导致错误: pet = ‘cat’; // ..
介绍 Anaconda 是 Python 和 R 编程语言的开源包管理器、环境管理器和发行版。它通常用于数据科学、机器学习、大规模数据处理、科学计算和预测分析。 Anaconda 提供 1,000 多个数据科学包的集合,提供免费和付费企业版。Anaconda 发行版附带conda命令行实用程序。您可以conda通过阅读Anaconda官方文档了解更多关于Anaconda 的信息。 本教程将指导您在 Ubuntu 20.04 服务器上安装 Python 3 版本的 Anaconda。 先决条件 在您开始阅读本指南之前,您应该在您的服务器上设置一个具有 sudo 权限的非 root 用户。 您可以通过完成我们的Ubuntu 20.04 初始服务器设置指南来实现此先决条件。 安装蟒蛇 安装 Anaconda 的最佳方法是下载最新的 Anaconda 安装程序 bash 脚本,验证它,然后运行它。 在Anaconda 下载页面找到适用于 Python 3 的Anaconda的最新版本。在撰写本文时,最新版本是 2020.02,但如果可用,您应该使用更高的稳定版本。 接下来,切换到/tmp服务器上的目录。这是一个下载临时项目的好目录,比如 Anaconda bash 脚本,运行它后我们就不需要了。 cd /tmp 使用curl下载您从巨蟒网站复制的链接。我们将把它输出到一个叫作anaconda.sh快速使用的文件中。 curl https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh –output anaconda.sh ..
介绍 通常,应用程序需要能够与外部 API 和数据库进行交互。随之而来的问题是,在等待某些请求和操作完成时,处理以与编写顺序不同的顺序运行的代码。 在本文中,您将探索Dart(尤其是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 验证。 理解异步代码 使用同步代码,当我们向外部 API 发送信息请求时,需要一些时间才能得到响应。我们的机器将等待它完成,停止可能与初始请求无关的事情。问题是我们不希望我们的脚本在每次需要一段时间时停止运行,但我们也不希望它过早运行依赖于返回数据的任何东西,尽管请求成功,这可能会导致错误。 两全其美的方式是设置我们的逻辑,让我们的机器在等待请求返回时提前工作,而只让依赖于该请求的代码在可用时运行。 我们的应用程序的数据很可能是四种形式之一,具体取决于它们是否已经可用以及它们是否是单一的。 这个例子将探索 Futures 和 Streams。 设置项目 为 Flutter 设置环境后,您可以运行以下命令来创建新应用程序: flutter create flutter_futures_example 导航到新的项目目录: cd flutter_futures_example 使用flutter create将生成一个演示应用程序,该应用程序将显示单击按钮的次数。 ..
介绍 UTF-8 是网络上最常见的字符编码。您可以使用<meta charset>HTML5 中的标签设置 UTF-8 编码和其他格式。 先决条件 HTML5 的一般知识。要全面了解 HTML5 标记语言,请浏览我们的系列“如何用 HTML 构建网站”。 使用<meta charset>HTML 标签设置 UTF-8 <head>文档开始标记之后的第一个元素应该是<meta charset>定义使用的字符集的标记。UTF-8 字符集是现代网络的正确选择。这是它的标记: <meta charset=”UTF-8″> 这就是charset定义在 HTML5 中的工作方式 结论 <meta charset> 只是 HTML5 中众多常见标签之一。 要更全面地了解 HTML5 标记语言,请浏览我们的系列,如何用 HTML 构�..
介绍 像许多计算机语言一样,SQL 允许使用各种通配符。通配符是特殊的占位符,可以表示一个或多个其他字符或值。这是 SQL 中的一个方便功能,因为它允许您在不知道其中保存的确切值的情况下搜索数据库中的数据。 本指南将介绍如何使用 SQL 的指定通配符查询数据。 先决条件 为了遵循本指南,您需要一台运行某种类型的使用 SQL 的关系数据库管理系统 (RDBMS) 的计算机。本指南中的说明和示例已使用以下环境进行验证: 运行 Ubuntu 20.04 的服务器,具有管理权限的非 root 用户和使用 UFW 配置的防火墙,如我们的 Ubuntu 20.04 初始服务器设置指南中所述。 在服务器上安装并保护 MySQL,如如何在 Ubuntu 20.04 上安装 MySQL 中所述。本指南已使用非 root MySQL 用户进行验证,该用户使用步骤 3中描述的过程创建。 注意:请注意,许多 RDBMS 使用自己独特的 SQL 实现。尽管本教程中概述的命令适用于大多数 RDBMS,但如果您在 MySQL 以外的系统上测试它们,则确切的语法或输出可能会有所不同。 您还需要一个加载了一些示例数据的数据库和表,您可以练习使用通配符。如果您没有这个,您可以阅读以下连接到 MySQL 和设置示例数据库部分,以了解有关如何创建本指南将在整个示例中使用的数据库和表的详细信息。 连接到 MySQL 并设置示例数据库 如果您的 SQL 数据库系统在远程服务器上运行,请从本地计算机通过 SSH 连接到您的服务器: ..
介绍 TensorFlow是一个开源机器学习软件库,用于训练神经网络。以有状态数据流图的形式表示,图中的每个节点代表神经网络对多维数组执行的操作。这些多维数组通常被称为“张量”,因此得名 TensorFlow。 在本教程中,您将使用virtualenv. 这种方法隔离了 TensorFlow 安装并快速启动和运行。完成安装后,您将通过导入 Tensorflow 来验证您的安装,以确保没有错误。 先决条件 在开始本教程之前,您需要具备以下条件: 按照Ubuntu 20.04 初始服务器设置指南设置一台至少具有4GB RAM的 Ubuntu 20.04 服务器,包括 sudo 非 root 用户和防火墙。 Python 3.8 或更高版本并virtualenv已安装。按照如何在 Ubuntu 20.04 上安装 Python 3来配置 Python 和virtualenv. 步骤 1 — 创建编程环境 在这一步中,我们将创建一个虚拟环境,以便在不影响其他编程项目的情况下将 TensorFlow 安装到其中。如果您已经设置了一个干净的编程环境,请跳过此步骤。 首先,创建一个项目目录。我们将tf-demo出于演示目的而调用它,但请选择一个对您有意义的目录名称: mkdir ~/tf-demo 导航到您新创建的tf-demo目录: cd ~/tf-demo 然后创建一个名为 的新虚拟环境tensorflow-dev,例如。运行以下命令创建环境: python3 -m venv tensorflow-dev 这将创建一个新tensorflow-dev目录,其中将包含您在此环境激活时安装的所有软件包。它还包括pip一个独立版本的 Python。 现在激活您的虚拟环境: source ..
介绍 该WebView插件允许您在 Flutter 应用程序中显示网页。 在本教程中,您将创建一个Widget可在整个应用程序中用于WebView从任何地方启动的自定义。 先决条件 要完成本教程,您需要: 下载并安装Flutter。 下载并安装Android Studio 或 Visual Studio Code。 建议为您的代码编辑器安装插件: Flutter和Dart为 Android Studio 安装的插件。 Flutter 为 Visual Studio Code 安装的扩展。 本教程通过 Flutter v1.22.2、Android SDK v30.0.2、Android Studio v4.1 验证。 步骤 1 — 设置项目 为 Flutter 设置环境后,您可以运行以下命令来创建新应用程序: flutter create flutter_webview_example 导航到新的项目目录: cd flutter_webview_example 使用flutter create将生成一个演示应用程序,该应用程序将显示单击按钮的次数。 pubspec.yaml在您的代码编辑器中打开并添加以下插件: pubspec.yaml dependencies: flutter: sdk: flutter webview_flutter: ..
介绍 Firewalld 是一个可用于许多 Linux 发行版的防火墙管理解决方案,它充当 Linux 内核提供的 iptables 包过滤系统的前端。在本指南中,我们将介绍如何为您的服务器设置防火墙,并向您展示使用firewall-cmd管理工具管理防火墙的基础知识(如果您更愿意使用iptablesCentOS,请遵循本指南)。 注意:您可能正在使用比撰写本文时可用的更新版本的 firewalld,或者您的服务器设置与本指南中使用的示例服务器略有不同。本指南中解释的某些命令的行为可能因您的特定配置而异。 Firewalld 的基本概念 在我们开始讨论如何实际使用该firewall-cmd实用程序来管理您的防火墙配置之前,我们应该熟悉该工具引入的一些基本概念。 区域 该firewalld守护程序管理使用实体被称为“区”的规则组。区域基本上是一组规则,根据您在计算机连接到的网络中的信任级别来决定应该允许哪些流量。网络接口被分配了一个区域来规定防火墙应该允许的行为。 对于可能经常在网络之间移动的计算机(如笔记本电脑),这种灵活性提供了一种根据环境更改规则的好方法。在公共 WiFi 网络上运行时,您可能制定了严格的规则来禁止大部分流量,同时在连接到家庭网络时允许更宽松的限制。对于服务器来说,这些区域并不是那么重要,因为网络环境很少发生变化(如果有的话)。 无论您的网络环境多么动态,熟悉每个预定义区域背后的一般思想仍然很有用firewalld。按照从最不信任到最受信任的顺序,其中的预定义区域firewalld是: drop:最低级别的信任。所有传入连接都被丢弃而没有回复,只有传出连接是可能的。 block : 与上面类似,但不是简单地丢弃连接,传入的请求会被一个icmp-host-prohibitedoricmp6-adm-prohibited消息拒绝。 public:代表公共的、不受信任的网络。您不信任其他计算机,但可能会根据具体情况允许选定的传入连接。 external:在您使用防火墙作为网关的情况下的外部网络。它配置为 NAT 伪装,以便您的内部网络保持私密但可访问。 internal:外部区域的另一侧,用于网关的内部部分。这些计算机相当值得信赖,并且可以使用一些附加服务。 dmz:用于位于 DMZ 中的计算机(无法访问网络其余部分的隔离计算机)。只允许某些传入连接。 work:用于工作机器。信任网络中的大多数计算机。可能会允许更多的服务。 home:家庭环境。这通常意味着您信任大多数其他计算机,并且将接受更多服务。 信任:信任网络中的所有机器。最开放的可用选项,应谨慎使用。 要使用防火墙,我们可以创建规则并更改区域的属性,然后将我们的网络接口分配给最合适的区域。 规则永久性 在 firewalld 中,规则可以被指定为永久的或即时的。如果添加或修改规则,默认情况下会修改当前运行的防火墙的行为。在下次启动时,修改将被丢弃并应用旧规则。 大多数firewall-cmd操作都可以使用该–permanent标志来指示应将非临时防火墙作为目标。这将影响在启动时重新加载的规则集。这种分离意味着您可以在活动防火墙实例中测试规则,然后在出现问题时重新加载。您还可以使用该–permanent标志随着时间的推移构建一整套规则,这些规则将在发出重新加载命令时立即应用。 安装并启用您的防火墙以在启动时启动 firewalld 在某些 Linux 发行版上默认安装,包括 CentOS 7 的许多映像。 但是,您可能需要自己安装 firewalld: sudo yum install firewalld ..