介绍 在 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!’; // ..
Category : 教程系列
作者选择了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 ..
作者选择了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 ..
该系列的一部分: 如何使用 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 将网站图标图像添加�..
作者选择了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 ..
作为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 步 — ..
该系列的一部分: 如何使用 HTML 构建网站 本教程系列将指导您使用 HTML(用于在 Web 浏览器中显示文档的标准标记语言)创建和进一步自定义该网站。不需要有任何编码经验,但如果您想重新创建演示网站,我们建议您从本系列的开头开始。 在本系列结束时,您应该有一个准备好部署到云的网站,并且基本熟悉 HTML。了解如何编写 HTML 将为学习其他前端 Web 开发技能(例如 CSS 和 JavaScript)奠定坚实的基础。 本教程将教您 HTML 中内联级元素和块级元素之间的区别,以及它们如何影响一段内容在页面上的位置。 在 HTML 文档中排列元素时,了解这些元素如何占用网页空间非常重要。某些元素在网页上占用的空间可能比它们包含的内容多得多。了解不同元素类型的行为将帮助您预测它们如何影响页面上其他元素的位置。 一般来说,有两种不同类型的元素——行内级元素和块级元素——它们的间距默认行为彼此不同。下面,我们将描述这些元素的默认设置如何确定它们在网页上的位置以及相对于附近元素的位置。 内联级元素 内联元素是水平宽度由它们包含的内容的宽度决定的元素。我们在上一个教程中介绍的<strong>元素和<em>元素都是内联元素的示例。 我们可以使用 Firefox 的 Web Developer Inspector 来检查网页上 HTML 元素的大小。(如果您使用的是 Chrome,则可以改用 Developer Inspect Elements 工具,但本教程将提供有关 Firefox 的 Web Developer 工具的说明。) 返回到index.html您在浏览器中加载的文件。如果您需要重新加载它并且不记得如何加载,请参阅上一教程中的在浏览器中加载 HTML 文件的说明。 然后导航到顶部菜单栏中的工具菜单项并选择“Web Developer/Inspector”。选择此菜单项将打开 Inspector 界面,允许您检查网页的 HTML 和 CSS。接下来,将光标悬停在 ..
介绍 当您第一次创建新的 Ubuntu 20.04 服务器时,您应该执行一些重要的配置步骤作为基本设置的一部分。这些步骤将提高服务器的安全性和可用性,并为您的后续操作奠定坚实的基础。 步骤 1 — 以 root 身份登录 要登录您的服务器,您需要知道您服务器的公共 IP 地址。您还需要密码或(如果您安装了用于身份验证的 SSH 密钥)root用户帐户的私钥。如果您还没有登录到您的服务器,您可能需要遵循我们关于如何使用 SSH 连接到 Droplets 的指南,其中详细介绍了此过程。 如果您还没有连接到您的服务器,现在以root用户身份使用以下命令登录(用您服务器的公共 IP 地址替换该命令的突出显示部分): ssh root@your_server_ip 如果出现有关主机真实性的警告,请接受。如果您使用密码验证,请提供您的root密码以登录。如果您使用受密码保护的 SSH 密钥,则每次会话第一次使用密钥时,系统可能会提示您输入密码。如果这是您第一次使用密码登录服务器,系统可能还会提示您更改root密码。 关于根 在根用户是在具有非常广泛的特权Linux环境中管理用户。由于root帐户具有更高的权限,因此不鼓励您定期使用它。这是因为root帐户固有的部分权力是能够进行非常具有破坏性的更改,即使是偶然的。 下一步是设置一个新的用户帐户,以减少日常使用的权限。稍后,我们将教您如何仅在需要时获得更多权限。 步骤 2 — 创建新用户 以root身份登录后,我们准备添加新用户帐户。将来,我们将使用这个新帐户而不是root登录。 此示例创建了一个名为sammy的新用户,但您应该将其替换为您喜欢的用户名: adduser sammy 您将被问到几个问题,首先是帐户密码。 输入一个强密码,并可以根据需要填写任何附加信息。这不是必需的,您可以点击ENTER任何您想跳过的字段。 步骤 3 — 授予管理权限 现在,我们有一个具有常规帐户权限的新用户帐户。但是,我们有时可能需要执行管理任务。 为了避免退出我们的普通用户并以root帐户重新登录,我们可以为我们的普通帐户设置所谓的超级用户或root权限。这将允许我们的普通用户通过sudo在每个命令之前放置单词来运行具有管理权限的命令。 要将这些权限添加到我们的新用户,我们需要将该用户添加到sudo组。默认情况下,在 Ubuntu 20.04 上,允许属于sudo组的用户使用该sudo命令。 以root身份运行此命令将您的新用户添加到sudo组(用您的新用户替换突出显示的用户名): usermod -aG sudo ..
作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。 介绍 网络抓取是从网络自动收集数据的过程。该过程通常会部署一个“爬虫”,它会自动浏览网页并从选定页面中抓取数据。您可能想要抓取数据的原因有很多。首先,它通过消除手动数据收集过程使数据收集速度更快。当需要或需要数据收集但网站不提供 API 时,抓取也是一种解决方案。 在本教程中,您将使用Node.js和Puppeteer构建一个 Web 抓取应用程序。随着您的进步,您的应用程序将变得越来越复杂。首先,您将编写应用程序以打开Chromium并加载一个设计为网络抓取沙箱的特殊网站:books.toscrape.com。在接下来的两个步骤中,您将在 books.toscrape 的单个页面上抓取所有书籍,然后在多个页面上抓取所有书籍。在剩余的步骤中,您将按图书类别过滤抓取,然后将数据保存为 JSON 文件。 警告:网络抓取的道德和合法性非常复杂且不断发展。它们还因您的位置、数据位置和相关网站而异。本教程抓取了一个特殊的网站,books.toscrape.com,该网站专门设计用于测试刮刀应用程序。抓取任何其他域不在本教程的范围内。 先决条件 Node.js 安装在您的开发机器上。本教程在 Node.js 版本 12.18.3 和 npm 版本 6.14.6 上进行了测试。您可以按照本指南在MacOS或Ubuntu 18.04安装Node.js的,或者您也可以按照本指南以使用PPA在Ubuntu 18.04安装Node.js的。 第 1 步 – 设置网络爬虫 安装 Node.js 后,您可以开始设置您的网络爬虫。首先,您将创建一个项目根目录,然后安装所需的依赖项。本教程只需要一个依赖项,您将使用 Node.js 的默认包管理器npm安装它。npm 预装了 Node.js,所以你不需要安装它。 为这个项目创建一个文件夹,然后移动到里面: mkdir book-scraper cd book-scraper 您将从该目录运行所有后续命令。 我们需要使用 npm 或节点包管理器安装一个包。首先初始化 npm 以创建一个packages.json文件,该文件将管理您项目的依赖项和元数据。 为您的项目初始化 npm: npm init ..
使用 Ansible Workshop Kit 材料自动化服务器设置 此研讨会工具包旨在帮助技术受众熟悉配置管理概念以及如何使用 Ansible 来自动化服务器基础架构设置。 目的是为演讲者提供一套完整的资源来主持活动并就 Ansible 进行介绍性演讲。这包括: 幻灯片和演讲者笔记,包括用于运行可选现场演示的简短演示视频和命令。本次演讲大约持续 50 分钟。 一个包含演示应用程序代码和必要的 Ansible 脚本的GitHub 存储库,用于将该应用程序部署到 Ubuntu 服务器。 本教程将引导用户在远程服务器上部署Travellist演示 Laravel应用程序。 本教程旨在通过额外的细节和说明来补充谈话演示。它还可以作为寻求使用 Ansible 将 Laravel 应用程序部署到远程 Ubuntu 服务器的读者的参考。 介绍 由于现代应用程序环境的一次性特性,服务器自动化现在在系统管理中发挥着重要作用。Ansible等配置管理工具通常用于通过为新服务器建立标准程序来简化服务器设置自动化的过程。这有利于减少与手动设置相关的人为错误。 Ansible 提供了一个简化的架构,不需要在节点上安装特殊的软件。它还提供了一组强大的功能和内置模块,有助于编写自动化脚本。 本教程旨在配合使用 Ansible Workshop Kit 自动设置服务器的幻灯片和演讲者笔记,将向您展示如何设置清单文件并执行一组配置脚本以完全自动化设置远程 LEMP 服务器的过程(大号inux下,(ë)Nginx的,中号ariaDB和P HP-FPM)在Ubuntu 18.04和部署演示Laravel应用到这个系统。 注意:本材料旨在演示如何使用剧本通过 Ansible 自动设置服务器。尽管我们的演示包含在 LEMP 服务器上运行的 Laravel 应用程序,但我们鼓励读者修改和调整包含的设置以满足自己的需求。 先决条件 要学习本教程,您需要: 一个 Ansible 控制节点:一台安装了 Ansible ..