Category : 教程系列

作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。 介绍 即使云服务越来越流行,运行原生应用程序的需求仍然存在。 通过使用noVNC和TigerVNC,您可以在Docker容器内运行本机应用程序并使用 Web 浏览器远程访问它们。此外,您可以在系统资源多于本地可用资源的服务器上运行您的应用程序,这可以在运行大型应用程序时提供更高的灵活性。 在本教程中,您将使用 Docker容器化电子邮件客户端Mozilla Thunderbird。之后,您将保护它并使用Caddy Web 服务器提供远程访问。 完成后,您只需使用网络浏览器即可从任何设备访问 Thunderbird。或者,您还可以使用WebDAV从本地访问文件。您还将拥有一个可以在任何地方运行的完全独立的 Docker 映像。 先决条件 在开始本指南之前,您需要具备以下条件: 一台至少有 2GB RAM 和 4GB 磁盘空间的 Debian 9 服务器。 具有sudo特权的非 root 用户。 在您的服务器上设置 Docker。您可以按照如何在 Debian 9 上安装和使用 Docker 进行操作。 第 1 步 – 创建supervisord配置 现在您的服务器正在运行并安装了 Docker,您可以开始配置应用程序的容器了。由于您的容器由多个组件组成,您需要使用进程管理器来启动和监控它们。在这里,您将使用supervisord. supervisord是一个用 Python 编写的进程管理器,通常用于编排复杂的容器。 首先,创建并输入一个thunderbird为您的容器命名的目录: mkdir ~/thunderbird cd ~/thunderbird 现在创建并打开一个名为supervisord.confusingnano或您喜欢的编辑器的文件: nano ..

Read more

介绍 Python 是最流行和最容易学习的语言之一,这就是为什么它通常是您首先学习的语言之一。让我们看看如何在 Visual Studio Code 中使用和运行 Python。 在本教程中,您将安装 Python 扩展,然后使用智能感知和快捷方式来运行您的 Python 代码。 先决条件 Python 安装在您的机器上并设置了本地开发环境。您可以通过我们的教程如何为 Python 3 安装和设置本地编程环境来完成这两个任务。 通过访问官方下载页面在您的计算机上安装 Visual Studio Code 。 第 1 步 – 从内置终端运行 Python 安装 Python 并设置本地编程环境后,打开 Visual Studio Code。 在 Visual Studio Code 中,通过转到File -> Open并选择目录来打开您正在工作的目录。之后,您将在左侧的资源管理器窗口中看到您的文件夹打开。 打开目录后,您可以.py使用一些代码创建第一个 Python 文件(扩展名)以进行打印”Hello World”。 保存文件。 现在您已Hello World准备好代码,我们可以使用 Visual Studio Code 中的内置终端来运行它。如果尚未打开,您可以通过查看->终端或使用快捷方式打开它CTRL + ..

Read more

介绍 在本指南中,您将在 Ubuntu 20.04 上使用 Flask 微框架构建 Python 应用程序。本文的大部分内容将是关于如何设置Gunicorn 应用服务器以及如何启动应用程序以及如何配置Nginx作为前端反向代理。 先决条件 在开始本指南之前,您应该: 安装了 Ubuntu 20.04 的服务器和具有 sudo 权限的非 root 用户。按照我们的初始服务器设置指南获取指导。 按照如何在 Ubuntu 20.04 上安装 Nginx 的步骤 1 和 2安装 Nginx。 配置为指向您的服务器的域名。你可以购买一个Namecheap或免费获得一个上Freenom。您可以按照有关域和 DNS的相关文档了解如何将域指向 DigitalOcean 。请务必创建以下 DNS 记录: your_domain指向您服务器的公共 IP 地址的 A 记录。 指向您服务器的公共 IP 地址的 A 记录。www.your_domain 熟悉 WSGI 规范,Gunicorn 服务器将使用该规范与您的 Flask 应用程序进行通信。这个讨论更详细地涵盖了 WSGI。 步骤 1 ..

Read more

介绍 当您第一次开始使用全新的 Linux 服务器时,添加和删除用户通常是您需要做的第一件事。在本指南中,我们将介绍如何sudo在 CentOS 8 服务器上创建用户帐户、分配权限和删除用户。 先决条件 本教程假设您以非root sudo用户身份登录 CentOS 8 服务器。如果您改为以root身份登录,则可以删除sudo以下所有命令的部分,但无论哪种方式,它们都可以工作。 添加用户 在本教程中,我们将与用户一起工作sammy。请使用您选择的用户名。 您可以通过键入以下内容来添加新用户: sudo adduser sammy 接下来,您需要为您的用户提供一个密码,以便他们可以登录。为此,请使用以下passwd命令: sudo passwd sammy 系统将提示您输入密码两次以进行确认。现在您的新用户已设置完毕并可以使用了! 注意:如果您的 SSH 服务器不允许基于密码的身份验证,您将无法使用新用户名进行连接。有关为新用户设置基于密钥的 SSH 身份验证的详细信息,请参见使用 CentOS 8进行初始服务器设置的第 5 步。 向用户授予 Sudo 权限 如果您的新用户应该能够以root(管理)权限执行命令,您将需要授予他们访问sudo. 我们可以通过将用户添加到轮组(sudo默认情况下可以访问其所有成员)来做到这一点。 使用以下usermod命令将您的用户添加到wheel组: sudo usermod -aG wheel sammy 现在您的新用户能够以管理权限执行命令。为此sudo,请在要以管理员身份执行的命令前附加: sudo some_command 系统将提示您输入用户帐户的密码(不是root密码)。一旦提交了正确的密码,您输入的命令将以root权限执行。 使用 Sudo 权限管理用户 虽然您可以使用 向组中添加和删除用户usermod,但该命令无法显示哪些用户是组的成员。 要查看哪些用户属于该wheel组(并因此具有sudo权限),您可以使用该lid命令。lid通常用于显示用户属于哪个组,但使用该-g标志,您可以反转它并显示哪些用户属于一个组: sudo ..

Read more

介绍 虽然许多用户需要像 MySQL 这样的数据库系统的功能,但仅从 MySQL 命令行客户端与系统交互需要熟悉 SQL 语言,因此它可能不是某些人的首选界面。 phpMyAdmin 的创建是为了让用户可以通过一个直观的 Web 界面与 MySQL 交互,与 PHP 开发环境一起运行。在本指南中,我们将讨论如何在 Nginx 服务器上安装 phpMyAdmin,以及如何配置服务器以提高安全性。 注意:使用 phpMyAdmin 等软件时有一些重要的安全注意事项,因为它运行在数据库服务器上,它处理数据库凭据,并使用户能够轻松地对您的数据库执行任意 SQL 查询。因为 phpMyAdmin 是一个广泛部署的 PHP 应用程序,所以它经常成为攻击的目标。我们将介绍您可以在本教程中采取的一些安全措施,以便您做出明智的决定。 先决条件 在开始使用本指南之前,您需要准备好以下内容: 运行 LEMP(Linux、Nginx、MySQL 和 PHP)堆栈的 Ubuntu 18.04 服务器,使用 保护ufw,如Ubuntu 18.04的初始服务器设置指南中所述。如果您还没有设置您的服务器,您可以按照在 Ubuntu 18.04上安装 LEMP 堆栈的指南进行操作。 以具有sudo特权的非 root 用户身份访问此服务器。 由于 phpMyAdmin 使用 MySQL 凭据处理身份验证,因此强烈建议安装 SSL/TLS 证书以启用服务器和客户端之间的加密流量。如果您没有使用有效证书配置的现有域,您可以按照本指南使用 Ubuntu 18.04 ..

Read more

介绍 Python 是一种灵活且通用的编程语言,可用于许多用例,在脚本编写、自动化、数据分析、机器学习和后端开发方面具有优势。首次发布于 1991 年,其名称的灵感来自英国喜剧团体 Monty Python,开发团队希望让 Python 成为一种使用起来很有趣的语言。快速设置,并以相对简单的风格编写,对错误有即时反馈,Python 是初学者和经验丰富的开发人员的绝佳选择。Python 3 是该语言的最新版本,被认为是 Python 的未来。 本教程将使用 Python 3 编程环境设置您的 Ubuntu 18.04 服务器。在服务器上编程具有许多优势,并支持跨开发项目的协作。本教程的一般原则将适用于任何 Debian Linux 发行版。 先决条件 为了完成本教程,您应该拥有一个sudo在 Ubuntu 18.04 服务器上具有特权的非 root 用户。要了解如何实现此设置,请遵循我们的手动初始服务器设置指南或运行我们的自动化脚本。 如果您还不熟悉终端环境,您可能会发现文章“ Linux 终端简介”有助于更好地了解终端。 设置好服务器和用户后,您就可以开始了。 第 1 步 – 设置 Python 3 Ubuntu 18.04 和其他版本的 Debian Linux 预装了 Python 3 和 Python 2。为了确保我们的版本是最新的更新,让我们更新,并与升级系统apt命令与Ubuntu的工作一个先进适用的P ackaging牛逼OOL: sudo ..

Read more

介绍 随着 React 16.8 的发布,您现在可以在 React 应用程序中使用许多有用的钩子。16.8 中引入的内置 Hook 之一是useMemo. 这个钩子有可能提高你的应用程序的性能。 本文将探讨在 React 中重新渲染是如何工作的,为什么这是 React 应用程序的一个重要考虑因素,以及useMemo钩子如何利用它来提高应用程序的性能。您还将了解何时useMemo会导致性能问题。 先决条件 要完成本教程,您需要: 在开始本教程之前对 React 有一个基本的了解。您可以通过阅读如何在 React.js系列中编码来了解有关 React 的更多信息。 引用相等和昂贵的操作 有两个问题useMemo需要解决: 指称平等 计算成本高的操作 在组件的生命周期中,React 会在进行更新时重新渲染组件。当 React 检查组件中的任何更改时,由于 JavaScript 处理相等性和浅层比较的方式,它可能会检测到意外或意外的更改。React 应用程序中的这种更改将导致它不必要地重新渲染。 此外,如果重新渲染是一项昂贵的操作,例如 long for loop,则可能会损害性能。昂贵的操作在时间、内存或处理方面都可能是昂贵的。除了潜在的技术问题外,这可能会导致用户体验不佳。 如果一个部分重新渲染,它会重新渲染整个组件树。 因此,React 发布了memo解决这个问题的想法。 理解记忆 Memoization是一种优化技术,它传递一个复杂的函数来进行记忆。在记忆中,当随后传入相同的参数时,结果会被“记住”。 如果我们有一个函数计算1 + 1,它将返回2。但是如果它使用记忆化,下次我们1通过函数运行‘s 时,它不会将它们相加;它只会记住答案是2不执行添加功能。 从官方React 文档中,useMemo的签名如下所示: const memoizedValue = React.useMemo(() => ..

Read more

可折叠小部件是创建可以收缩和扩展的内容部分的流行方式。有很多不同的实现。在这里,多亏了复选框输入元素、标签元素和:checked伪选择器,我们将能够创建这样的小部件,而无需额外的 JavaScript。 这是我们可折叠的外观: 这是它的 HTML 标记: <div class=”wrap-collabsible”> <input id=”collapsible” class=”toggle” type=”checkbox”> <label for=”collapsible” class=”lbl-toggle”>More Info</label> <div class=”collapsible-content”> <div class=”content-inner”> <p> QUnit is by calling one of the object that are embedded in JavaScript, and faster JavaScript program could also used with its elegant, well documented, and functional programming using JS, HTML pages Modernizr is ..

Read more

介绍 随着软件开发职业的发展,除了编写有效的代码之外,可能会出现其他问题。在 Web 开发领域,不仅要构建功能性软件,还要使其具有高性能,以便在使用最少的资源的同时无缝提供所需的体验,这变得很重要。 通常,这将是一项相当大的任务,因为如果没有工具来模拟和测量各种参数,就无法对应用程序的资源消耗属性进行预测。 在本文中,您将探索以下工具之一:Chrome 开发人员工具。具体来说,您将检查审计和性能选项卡在评估 Web 应用程序和发现性能问题方面的便利性。 为了使其成为实际的考试,您将测试各种技术以找出网站上的性能问题并解决它们。本教程探索Scotch.io网站,但这些步骤可以应用于任何网站。 先决条件 为了学习本教程,您的计算机上安装了Google Chrome 浏览器。 步骤 1 — 准备浏览器 在提高网站或 Web 应用程序的性能时,需要考虑两个主要方面: 负载性能 运行时性能 本教程将更多地关注负载性能。加载性能是指页面在加载时的性能。主要目标是确定影响应用程序速度和整体用户体验的性能问题。 要开始测试负载性能,您将首先设置审计。 COMMAND + SHIFT + N在 macOS 或CTRL + SHIFT + NWindows 或 Linux 上,启动您的 Chrome 浏览器并在隐身模式下打开一个标签页。隐身浏览器打开后,导航到您要测试的网站。 接下来,通过COMMAND + OPTION + I在 macOS、CTRL + SHIFT + IWindows 或 Linux 上按打开 DevTools ..

Read more

可以使用该int()方法将字符串转换为整数。 如果您的字符串没有小数位,您很可能希望使用该int()方法将其转换为整数。 让我们使用用户sammy跟踪每天编写的代码行的示例。我们可能想用数学操作这些值来为用户提供更有趣的反馈,但这些值目前存储在字符串中: lines_yesterday = “50” lines_today = “108” lines_more = lines_today – lines_yesterday print(lines_more) OutputTypeError: unsupported operand type(s) for -: ‘str’ and ‘str’ 因为这两个数值存储在字符串中,所以我们收到一个错误。-减法操作数不是两个字符串值的有效操作数。 让我们修改代码以包含int()将字符串转换为整数的方法,并允许我们对这些最初是字符串的值进行数学运算。 lines_yesterday = “50” lines_today = “108” lines_more = int(lines_today) – int(lines_yesterday) print(lines_more) Output58 该变量lines_more自动是一个整数,它等于58本例中的数值。 如果您想了解有关转换 Python 数据类型的更多信息,请查看如何在 Python 3 中转换数据类型以及我们的如何在 Python 3 中编�..

Read more