Category : 教程系列

介绍 如果您想快速构建静态网站或博客,Jekyll 可能是一个很好的解决方案。一个用 Ruby 编写的开源静态站点生成器,Jekyll 允许快速执行命令,帮助管理您的站点,从初始到生产部署,所有这些都来自您的命令行。Jekyll 具有博客感知能力,优先考虑类别、帖子和布局,并提供一系列可用于导入以前博客内容的导入器。如果您需要经常离线工作,更喜欢使用轻量级编辑器而不是 Web 表单进行内容维护,或者希望使用版本控制来跟踪对您网站的更改,Jekyll 可以为您提供实现目标所需的一切。 在本教程中,我们将使用自动生成的内容在 Ubuntu 20.04 上安装 Jekyll 开发站点。安装 Jekyll 后,您将能够主要使用 Markdown 文件和一些 Jekyll 命令来创建个人站点或博客。 先决条件 要学习本教程,您需要: 具有 sudo 权限的非 root 用户的 Ubuntu 20.04 服务器:您可以在我们的Ubuntu 20.04 初始服务器设置指南中了解有关如何设置具有这些权限的用户的更多信息。 完成此先决条件后,您就可以安装 Jekyll 及其依赖项了。 步骤 1 — 安装 Jekyll 我们将首先更新我们的包列表,以确保我们拥有最新版本的包及其依赖项的最新信息: sudo apt update 接下来,让我们安装makeandbuild-essential以便 Jekyll 的库编译,并供 Ruby 及其开发库使用。我们在y此处包含标志以确认是的,我们要安装软件包并避免提示确认。 sudo apt -y install ..

Read more

介绍 谷歌地图是谷歌提供的地图服务,支持多种配置设置。将 Google 地图添加到您的应用程序可以为用户提供比街道地址或坐标集更多的上下文信息。 Angular Google Maps是为 Angular 应用程序提供工具以利用 Google Maps API 的组件。 在本教程中,您将使用该@agm/core库并创建带有标记的地图。 先决条件 要完成本教程,您需要: Node.js 安装在本地,您可以按照如何安装 Node.js 和创建本地开发环境来完成。 熟悉设置 Angular 项目和使用 Angular 组件可能会有所帮助。 一个Google Maps JavaScript API Key。 这将需要一个 Google 帐户。 登录 Google Cloud Platform Console。 创建一个新项目。 为项目启用 Google Maps JavaScript API。 并为 API 密钥创建凭据。 注意:为避免在使用 Google Maps API 时出现“仅用于开发目的”消息,您需要提供有效的信用卡并与 Google Cloud 项目的结算帐户相关联,但本教程不需要这样做。 ..

Read more

介绍 在本文中,您将学习如何使用 CSS,position: relative并position: absolute通过大量演示和学习辅助工具。 CSSposition有时被认为是一个高级主题,因为它可以做一些出乎意料的事情。好吧,不要让“专家”吓倒您,让您不再追求卓越的 CSS 能力!一旦你掌握了一些基本的想法,这是一个非常容易理解的话题。 渲染流程 理解相对/绝对定位的一个重要概念是渲染流。 一般的想法是 HTML 元素都占用一些空间。您的浏览器的渲染引擎总是以类似网格的方式渲染所有内容,从左上角开始,依次向右下角移动,直到完成所有 HTML 内容的放置。 如果您曾经有过缓慢的互联网连接,并且看到网页上的大型内容会向右和向下推动所有内容,那么这实际上是“渲染流”的作用。 您可以使用 CSS 更改此默认行为position。 CSS 位置 CSSposition有时被认为是一种高级技能,因为它不像font-size或margin等那样直观,因为它改变了浏览器的自然“渲染流程”。 这些是 CSS 的可能值position: .foo { position: static; /* position: relative; position: absolute; position: sticky; position: fixed; */ } 今天我们只看一下position: absolute,position: relative因为它们可能是最通用的,一旦您对它们充满信心,它们就会为您带来很多里程。 相对定位 当你创建一个 HTML 元素时position: relative,它会保持在布局的“流程中”,但你可以移动它! .green-square { position: relative; top: 25px; left: ..

Read more

介绍 GraphQL 是一种 API 查询语言和运行时,用于使用现有数据完成这些查询。GraphQL 为您的 API 中的数据提供了完整且易于理解的描述,并让客户能够准确地询问他们需要什么,仅此而已。 随着时间的推移,它简化了不断发展的 API,并启用了强大的开发人员工具。在本指南中,我们将了解 GraphQL 的优点和缺点,以便您可以自行决定它是否适合您的项目。 如果你正在寻找一个GraphQL安装指南,我们使用覆盖教程GraphQL与Ruby on Rails的和GraphQL用Node.js的。 精确数据获取 GraphQL 精确数据获取功能的重要性和实用性怎么强调都不为过。使用 GraphQL,您可以向您的 API 发送查询并准确获取您需要的内容,不多也不少。真的就是这么简单。如果将此功能与 REST 的传统直观性质进行比较,您就会明白这是对我们最初做事方式的重大改进。 GraphQL 通过根据客户端应用程序的需求对数据进行选择性处理,最大限度地减少了在线传输的数据量。因此,移动客户端可以获取更少的信息,因为与 Web 应用程序的大屏幕相比,小屏幕上可能不需要这些信息。 因此,与返回固定数据结构的多个端点不同,GraphQL 服务器只公开一个端点并准确响应客户端请求的数据。 考虑一种情况,您要调用具有两个资源(艺术家及其曲目)的 API 端点。 为了能够请求特定艺术家或他们的音乐曲目,您将拥有这样的 API 结构: METHOD /api/:resource:/:id: 使用传统的 REST 模式,如果我们想使用提供的 API 查找每个艺术家的列表,我们必须像这样向根资源端点发出 GET 请求: GET /api/artists 如果我们想从艺术家列表中查询单个艺术家怎么办?然后我们必须像这样将资源 ID 附加到端点: GET /api/artists/1 本质上,我们必须调用两个不同的端点来获取所需的数据。使用 GraphQL,每个请求都可以在一个端点上执行,所采取的操作和返回的数据都在查询本身中定义。假设我们想要获得艺术家的曲目和持续时间,使用 GraphQL,我们将有一个这样的查询: GET ..

Read more

HTTP Cookies — 也称为网络 cookie、浏览器 cookie或简称cookie — 是从网络服务器发送到用户浏览器的小块数据。 尽管这取决于网站或应用程序使用 cookie 的方式,但用户的 Web 浏览器通常会存储从服务器发送的 cookie,以作为即使在用户离开给定网站后也能保留有关用户的持久信息的一种方式。cookie 可能保存的信息类型的示例包括用户的登录信息、他们放入购物车的物品或他们的用户设置和偏好。 Cookie 由名称和值组成。例如,用于会话管理的 cookie 可能具有类似 的名称usr_session,服务器可能会自动生成唯一的会话 ID 作为该 cookie 的值。此外,cookie 可以有选择地拥有一个或多个额外的名称-值对,用于定义某些属性,例如 cookie 的到期时间或各种安..

Read more

介绍 在基于云的环境中,有多种方法可以扩展和保护Django应用程序。通过水平扩展并运行应用程序的多个副本,您可以构建一个容错性更强、可用性更高的系统,同时还增加其吞吐量,以便可以同时处理请求。水平缩放一个Django应用程序的一种方法是提供额外的应用服务器运行你的Django应用程序和WSGI HTTP服务器(如Gunicorn或uWSGI)。要在这组应用服务器之间路由和分发传入请求,您可以使用负载均衡器和反向代理,如Nginx. Nginx 还可以缓存静态内容并终止传输层安全(TLS) 连接,用于为您的应用程序提供 HTTPS 和安全连接。 在 Docker容器内运行 Django 应用程序和 Nginx 代理可确保这些组件的行为方式相同,而不管它们部署到何种环境中。此外,容器提供了许多有助于打包和配置应用程序的功能。 在本教程中,您将通过配置两个应用程序服务器来水平扩展容器化的 Django 和 Gunicorn Polls应用程序,每个应用程序服务器都运行一个 Django 和 Gunicorn 应用程序容器的副本。 您还将通过预配和配置将运行 Nginx 反向代理容器和Certbot客户端容器的第三个代理服务器来启用 HTTPS 。Certbot 将从Let’s Encrypt证书颁发机构为 Nginx 提供 TLS 证书。这将确保您的站点获得SSL Labs的高安全评级。该代理服务器将接收您应用程序的所有外部请求,并位于两个上游Django 应用程序服务器的前面。最后,您将通过限制对代理服务器的外部访问来强化这个分布式系统。 先决条件 要学习本教程,您需要: 三台 Ubuntu 18.04 服务器: 两台服务器将是应用程序服务器,用于运行您的 Django 和 Gunicorn 应用程序。 一台服务器将作为代理服务器,用于运行 Nginx 和 Certbot。 所有人都应该有一个具有sudo特权的非 root 用户和一个活动的防火墙。有关如何设置这些的指导,请参阅此初始服务器设置指南。 Docker ..

Read more

该系列的一部分: MongoDB 安全性:确保数据安全的最佳实践 MongoDB,也称为Mongo,是许多现代 Web 应用程序中使用的文档数据库。与任何数据库管理系统一样,负责管理 Mongo 数据库的人员必须遵守推荐的安全最佳实践,以防止数据在发生灾难时丢失并防止其落入恶意行为者之手。 本系列概念文章对 MongoDB 的内置安全功能进行了高级概述,同时还重点介绍了一些通用的数据库安全最佳实践。 授权和身份验证是两个对于理解数据库安全性至关重要的概念。这两个概念很相似,但重要的是要了解它们是什么以及是什么使它们不同。身份验证是确认用户或客户是否真实身份的过程。另一方面,授权涉及为给定用户或用户组设置规则,以定义他们可以执行哪些操作以及他们可以访问哪些资源。 验证 MongoDB 具有多种允许您对用户进行身份验证的机制,默认机制是它的Salted Challenge Response Authentication Mechanism (SCRAM)。SCRAM 涉及 MongoDB 读取和验证用户根据用户名、密码和身份验证数据库的组合提供的凭据,所有这些都为给定的 MongoDB 实例所知。如果任何用户的凭据与 Mongo 数据库所期望的不匹配,数据库将不会对用户进行身份验证,并且在他们提供正确的用户名、密码和身份验证数据库之前,他们将无法获得访问权限。 您还可以使用文本文件作为一组连接的 MongoDB 实例(例如副本集或分片集群)的共享密码。这种方法称为keyfile authentication,被认为是一种最低限度的安全形式,最适合测试或开发环境,如 MongoDB 文档所建议的那样。 对于实现分片或复制的生产环境,MongoDB 文档建议使用另一种身份验证机制:x.509 身份验证。这涉及将有效的 x.509 证书(自签名或从第三方证书颁发机构获得)分发给预期的集群成员或客户端。但是,它们与密钥文件不同,因为每台机器都有自己专用的 x.509 证书。这意味着一台机器的证书仅用于验证该机器。向数据库服务器提供被盗 x.509 证书的客户端将无法进行身份验证。 x.509 身份验证利用了一个称为相互身份验证的概念。这意味着当客户端或集群成员向服务器验证自己时,服务器同样向客户端或集群成员验证自己。如果客户端或集群成员尝试使用无效的 x.509 证书连接到数据库服务器,则会阻止这样做,因为相互身份验证将失败。 授权 MongoDB 通过称为基于角色的访问控制的计算机安全概念来管理授权。每当您创建 MongoDB 用户时,您都可以选择为他们提供一个或多个角色。角色定义用户拥有哪些权限,包括他们可以对给定的数据库、集合、集合集或集群执行哪些操作。当您为用户分配角色时,该用户将获得该角色的所有权限。 MongoDB 附带了许多提供常用权限的内置角色。其中一些可用于每个数据库,但大多数仅可用于admin数据库,因为它们旨在提供强大的管理权限。例如,您可以为用户分配readWrite任何数据库上的角色,这意味着您可以读取和修改系统上任何数据库中保存的数据,只要您授予用户对其的readWrite角色即可。但是,该readWriteAnyDatabase角色(允许用户读取和修改除localand之外的任何数据库上的数据config)仅在admin数据库中可用,因为它提供了更广泛的系统权限。 除了内置角色,Mongo 还允许您定义自定义角色,让您更好地控制用户可以访问系统上的资源。与用户一样,角色被添加到特定的数据库中。除了在admin数据库中创建的角色(可以包括对系统中任何数据库的权限)之外,用户定义的角色的权限仅适用于创建该角色的数据库。话虽如此,一个角色可以在其定义中包含一个或多个现有角色,并且一个角色可以从同一数据库中的其他角色继承权限。 ..

Read more

作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。 介绍 随着开发人员工具迁移到云端,云 IDE(集成开发环境)平台的创建和采用正在增长。云 IDE 允许开发团队之间实时协作,在统一的开发环境中工作,最大限度地减少不兼容性并提高生产力。可以通过 Web 浏览器访问,各种类型的现代设备都可以使用云 IDE。 code-server是在远程服务器上运行的Microsoft Visual Studio Code,可直接从浏览器访问。Visual Studio Code 是一个现代代码编辑器,具有集成的 Git 支持、代码调试器、智能自动完成以及可自定义和可扩展的功能。这意味着您可以使用运行不同操作系统的各种设备,并始终拥有一致的开发环境。 在本教程中,您将在 Ubuntu 18.04 机器上设置代码服务器云 IDE 平台并将其公开在您的域中,并使用免费的Let’s Encrypt TLS 证书进行保护。最后,您将在 Ubuntu 18.04 服务器上运行 Microsoft Visual Studio Code,在您的域中可用并受密码保护。 先决条件 运行 Ubuntu 18.04 的服务器,具有至少 2GB RAM、root 访问权限和 sudo、非 root 帐户。您可以按照此初始服务器设置指南进行设置。 您的服务器上安装了 Nginx。有关如何执行此操作的指南,请完成如何在 Ubuntu 18.04 上安装 Nginx 的步骤 1 ..

Read more

MariaDB 是一个开源的关系数据库管理系统。与其他关系数据库一样,MariaDB 将数据存储在由行和列组成的表中。用户可以使用结构化查询语言(通常称为SQL)来定义、操作、控制和查询数据。 MariaDB 是MySQL 的一个分支,因此两者共享许多功能和设计选择。有趣的是,MariaDB 的首席开发人员是 MySQL 的原作者 Michael Widenius,而 MariaDB 以 Widenius 的小女儿 Maria 的名字命名,类似于 MySQL 以他的大女儿 My 的名字命名。 有关 MariaDB 的更多教育资源,请访问: 如何安装 MariaDB 了解关系数据库 我们的 MariaDB 教育资源的完整列表可以在我们的MariaDB 标签页..

Read more

作者选择了技术多样性基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 Prisma是 Node.js 和 TypeScript 的开源 ORM。它由三个主要工具组成: Prisma Client:自动生成的类型安全的查询构建器。 Prisma Migrate:强大的数据建模和迁移系统。 Prisma Studio:用于查看和编辑数据库中数据的 GUI。 注意: Prisma Migrate 目前处于预览阶段。您可以通过Prisma 路线图跟踪开发。 这些工具旨在提高应用程序开发人员在其数据库工作流中的工作效率。Prisma 的最大好处之一是它提供的抽象级别:应用程序开发人员在使用 Prisma 时可以以更直观的方式推理他们的数据,而不是弄清楚复杂的 SQL 查询或模式迁移。 在本教程中,您将使用 Prisma 和PostgreSQL数据库在TypeScript 中为小型博客应用程序构建 REST API 。您将使用Docker在本地设置 PostgreSQL 数据库,并使用Express实现 REST API 路由。在本教程结束时,您将在您的机器上本地运行一个 Web 服务器,该服务器可以响应各种 HTTP 请求并在数据库中读写数据。 先决条件 本教程假设如下: 您的机器上安装了Node.js v10或更高版本。您可以使用如何安装 Node.js 和为您的操作系统创建本地开发环境指南之一来进行设置。 Docker安装在您的机器上(运行 PostgreSQL 数据库)。您可以通过Docker 网站在 macOS ..

Read more