自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

终日而思,不如须臾之所学也

  • 博客(34)
  • 收藏
  • 关注

原创 用 Python 撸一个 Web 服务器-第9章:项目总结

本教程带大家一起实现了一个 Todo List 程序,包含基础的增删改查功能,和用户登录认证。这也是 Web 开发中最常见的需求。我画了一张思维导图,帮助你从宏观的角度来概览 Todo List 程序,加深你对 Web 开发的理解。Todo List项目整体思路参考MVC设计模式。有意设计utils/目录专门用来存储一些工具方法,这些工具方法通常比较独立,尽量不从外部模块导入依赖,其他模块需要某个工具方法时从utils/目录下导入即可使用,这样就避免了循环导入的问题。

2024-06-07 10:32:14 195

原创 用 Python 撸一个 Web 服务器-第8章:用户管理

而对于 todo 的删除、修改、查询操作,只有 todo 的创建者才有权限,所以不仅要验证用户是否登录,还要验证操作的 todo 是否属于当前登录用户。我们当然可以将验证操作都放到视图函数中,但仔细观察,你会发现对 todo 的所有操作有一个共同点,都需要验证用户是否登录。方法传入原始密码,得到的是加密后的字符串,可以将其存储到文件中,这个字符串无法解密。在进行密码验证时,并不需要对文件中存储的加密密码进行解密,只要对原始密码使用同样的方法进行加密,然后比较两个加密后的字符串是否相等即可。

2024-06-07 10:30:41 344

原创 用 Python 撸一个 Web 服务器-第7章:重构——更好的组织代码

通过前几章的学习,我们完成了 Todo List 程序的 todo 管理部分,实现了对 todo 的增、删、改、查基本操作,这也是几乎所有 Web 程序都具备的功能。我们当然可以按照目前的思路继续来实现用户管理部分,在models.py中编写用户相关的模型,在templates/目录下新建用户相关 HTML,在中编写用户相关的视图函数。但是,随着新功能的加入,把不同功能的代码都写在相同的文件中必然会引起代码的混乱。为实现易维护、易扩展的代码,我们需要对项目的目录结构进行重构。

2024-06-07 10:29:49 524

原创 用 Python 撸一个 Web 服务器-第6章:完善 Todo List 应用

这一章,我们来完成 todo 管理功能的剩余部分:新增、修改和删除功能。

2024-06-07 10:28:38 812

原创 用 Python 撸一个 Web 服务器-第5章:处理静态资源

视图函数就能够处理多种类型的静态文件,而不需给 CSS、JavaScript 等静态资源都单独编写一个视图函数。视图函数来专门处理静态文件,它不只能够处理 CSS 类型文件,还支持 JavaScript 文件和图片。现在 Todo List 程序已经有了处理静态资源的能力,接下来再给 Todo List 程序添加一个网页图标。由于我们实现的模板引擎不支持直接将 CSS 嵌入在 HTML 中的写法,所以要将 CSS 独立出来。目录,专门用来存储 CSS、JavaScript、图片等静态文件,在。

2024-06-07 10:27:48 833

原创 用 Python 撸一个 Web 服务器-第4章:动态渲染数据

上一章中为了尽快让 Todo List 程序跑起来,并没有完全按照MVC模式编写程序。这一章就让我们一起实现一个完整的MVC模式 Todo List 程序首页。

2024-06-07 10:26:48 792

原创 用 Python 撸一个 Web 服务器-第3章:使用 MVC 构建程序

我们将要编写的 Todo List 程序包含四个页面,分别是注册页面、登录页面、首页、编辑页面。以下分别为四个页面的截图。注册页面:注册登录页面:登录首页:首页编辑页面:编辑程序页面非常简洁,甚至有些 Low。但这足够我们学习开发 Web 服务器程序原理,页面样式的问题并不是我们本次学习的重点,所以读者不必纠结于此。Todo List 程序功能大概分为两个部分,一部分是 todo 管理,包含增删改查基础功能;另一部分是用户管理,包含注册和登录功能。

2024-06-07 10:25:46 755

原创 用 Python 撸一个 Web 服务器-第2章:Hello World

如果不写这行代码,那么在程序运行完成后需要马上重启程序时,由于上次的端口还在占用,会导致程序抛出异常,端口需要在间隔一段时间后才会被释放允许使用。改成多线程版本以后,服务器每接收到一个客户端连接,就将其交给一个新的子线程来处理,主线程继续执行到下一轮循环等待新的客户端连接。无限循环,在处理完一个客户端连接对象以后程序马上执行到下一次循环,开始等待新的客户端连接,这样就实现了服务器程序永久运行。会阻塞程序,等待客户端的连接,一旦有客户端连接上来,它会分别返回客户端连接对象和客户端的地址。

2024-06-07 10:24:26 581

原创 用 Python 撸一个 Web 服务器-第1章:Web 开发简介

Web 开发技术一直在高速发展,各种新奇概念与框架层出不穷,尤其在 Web 前端领域,几年前还是 jQuery 的天下,而如今在 Vue、React 等框架面前也显得廉颇老矣。不过,虽然各种框架技术日新月异,但 Web 开发的核心概念与本质依旧不曾改变,本教程将通过一个 Todo List 应用带你探索 Web 开发基本原理,只有真正明白了 Web 开发的核心基础,才能更轻松的应对新框架与技术。我们常见的软件种类有桌面软件、移动 APP以及网页应用等,Web 开发通常就是在开发网页应用。

2024-06-07 10:22:39 1162

原创 Windows快速安装Rust

Rust 速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。

2024-04-22 10:48:07 362

原创 微信小程序抓包|逆向

【代码】微信小程序抓包|逆向。

2023-10-16 16:23:18 1021 3

原创 使用 Phoenix LiveView 构建 Instagram (8)

使用PETAL(Phoenix、Elixir、TailwindCSS、AlpineJS、LiveView)技术栈构建一个简化版的Instagram Web应用程序more在第 7 部分中,我们在顶部标题导航菜单中添加了搜索功能,在这部分中,我们将研究书签功能,并在以下内容向我们的主页添加新帖子时通知用户。您可以赶上Instagram 克隆 GitHub Repo。当我们尝试创建未选择图像的新帖子时,让我们处理错误,为此,我们需要在内部的保存句柄函数中正确进行模式匹配因为我们用来Ecto.Multi。

2023-09-01 10:26:09 111

原创 使用 Phoenix LiveView 构建 Instagram (7)

当参数不为空时,我们将发送一条带有搜索参数的消息,以在父 LiveView 中运行搜索,这样我们就可以在搜索时显示加载指示器,每次表单更改时,我们都必须重置我们的分配,设置。就是这样,现在你有了一个功能齐全的搜索输入,还有很多事情要做,很多可以添加的功能,但我们已经走了很长一段路,我们有一个值得我们自豪的大应用程序,直到下一个时间。我们必须发送消息,因为如果我们尝试在标头导航组件套接字中执行此操作,则分配首先同时发生,因此如果我们这样做,我们将无法在搜索时以及在组件,我们无法将。以在搜索时显示加载指示器。

2023-09-01 10:25:05 2175

原创 使用 Phoenix LiveView 构建 Instagram (6)

我们正在检查用户是否登录以获取以下列表并将其传递给分配提要函数以返回分配了提要的套接字,我们在句柄参数函数中执行此操作。在第 5 部分中,我们添加了 show-post 页面,在这部分中,我们将在主页上进行工作。当我们喜欢帖子或评论时,我们需要处理从 Like 组件发送的消息,我们还必须处理用钩子触发的事件以加载更多帖子,更新。我们使用与显示页面上使用的相同的表单来添加新评论,并且循环遍历帖子评论和临时评论,以便在添加新评论时能够更新评论。

2023-09-01 10:24:11 72

原创 使用 Phoenix LiveView 构建 Instagram (5)

使用PETAL(Phoenix、Elixir、TailwindCSS、AlpineJS、LiveView)技术栈构建一个简化版的Instagram Web应用程序more在第 4 部分中,我们添加了个人资料帖子部分和帖子页面,在这部分中,我们将处理显示帖子页面。您可以赶上Instagram 克隆 GitHub Repo。让我们首先为显示页面添加基本模板,打开打开。

2023-09-01 10:23:29 55

原创 使用 Phoenix LiveView 构建 Instagram (4)

在第 3 部分中,我们添加了个人资料页面以及关注和显示帐户的功能,在这部分中,我们将处理用户的帖子。我们添加了一个事件处理函数,该函数将在模板中使用 javascript 挂钩触发,如果不是最后一页,它将加载更多页面。我们将每个新页面附加到 posts div 中,底部有一个空的 div,每次可见时都会触发事件来加载更多页面。我们正在对 URL ID 进行解码,因为在我们的个人资料模板中,当我们发布帖子时,一切都保持不变,我们只需分配页面并设置每页的限制,然后在我们的。在文件夹中创建我们的实时视图文件。

2023-09-01 10:22:36 50

原创 使用 Phoenix LiveView 构建 Instagram (3)

使用PETAL(Phoenix、Elixir、TailwindCSS、AlpineJS、LiveView)技术栈构建一个简化版的Instagram Web应用程序more在第 2 部分中,我们添加了编辑帐户和上传用户头像的功能,在这部分中,我们将处理用户的个人资料。您可以赶上Instagram 克隆 GitHub Repo。首先,我们需要路由,在根范围下打开添加以下路由:browser然后让我们在在里面添加以下内容里面打开第 56 行的导航标题,我们需要找到用户名参数传递给我们的实时视图的用户,打开。

2023-09-01 10:21:20 92

原创 使用 Phoenix LiveView 构建 Instagram (2)

使用PETAL(Phoenix、Elixir、TailwindCSS、AlpineJS、LiveView)技术栈构建一个简化版的Instagram Web应用程序more在第 1 部分中,我们已完成所有设置并准备好基本布局,让我们开始处理用户设置。您可以赶上Instagram 克隆 GitHub Repo。让我们首先创建路由,打开然后我们需要创建这些 liveview 文件,在该文件夹内创建一个名为user_liveunder 的文件夹。

2023-09-01 10:20:00 64

原创 使用 Phoenix LiveView 构建 Instagram (1)

使用PETAL(Phoenix、Elixir、TailwindCSS、AlpineJS、LiveView)技术栈构建一个简化版的Instagram Web应用程序more更好的学习方法是亲自动手构建东西,让我们使用很棒的 PETAL(Phoenix、Elixir、TailwindCSS、AlpineJS、LiveView)堆栈构建一个简化版的 Instagram Web 应用程序,并深入了解函数式的黑暗世界编程和最热门的孩子在凤凰框架与LiveView。

2023-09-01 10:18:35 89

原创 编程免费学习资源

(内含丰富的笔记以及各类教程)(网络上其他的都是较旧版本的)(目前在线最全的中文文档了)(这个很新,也很全)

2023-07-28 21:12:07 396

原创 面向对象代码的几点建议

总的来说,写好面向对象风格的代码需要对面向对象编程的思想有深入的理解,同时需要不断的实践和改进。要写出高质量的面向对象代码,需要不断地学习和思考,从中总结出一套适合自己的编程规范和模式。TDD可以帮助我们更好地组织代码,设计更好的接口和类,并且保证代码的质量和可维护性。如果一个类仅仅使用了另一个类的一小部分功能,就不应该将整个类作为参数传递给它,而应该仅传递需要的参数。应避免在代码中出现硬编码的实现,而是使用接口或抽象类来定义通用的规范。应尽可能的避免修改已有的代码,而是通过扩展来实现功能的增加。

2023-03-08 20:49:05 90

原创 函数式编程的几点建议

总的来说,写好函数式风格的代码需要对函数式编程的思想有深入的理解和实践,同时需要不断地学习和尝试新的技术和方法。要写出高质量的函数式代码,需要注意代码的可读性、可维护性和性能,并且应该遵循函数式编程的一些通用原则和惯例。因此,应该尽可能地使用有意义的变量名和函数名,并且避免使用过于复杂的表达式或语句。高阶函数指接受函数作为参数或返回函数作为结果的函数。高阶函数可以提高代码的抽象度和复用性,并且是函数式编程的核心特性之一。递归是函数式编程中常用的一种方法,可以简化许多复杂的算法和数据结构操作。

2023-03-08 20:45:27 131

原创 关于ArchLinux系统中某些软件无法输入中文的问题

通过编辑/etc/environment或/etc/profile添加以下三个环境变量即可解决FCITX在所有软件的中文输入问题或者只能解决命令行不能输入中文的问题。或者比如像我的虽然是被注释掉的,在最下面添加以下两个也可以。一般安装的时候都会选安装中文,如果不确定,最好检查一下)(P.S.建议添加在用户变量里面,不用一个一个去改对应的软件配置)那么其他不管怎么设置都是无法输入中文的,要么直接在。里面,或者直接添加在程序的运行shell脚本里面。设置好上面的两个语言配置,用下面的命令更新一下。

2022-12-18 18:15:30 3110

原创 ArchLinux安装MySQL(MariaDB)-10.9.4-MariaDB-2022.12最新版

2022年Arch安装最新版MySQL安装重设密码,使用最新版10.9.4-MariaDB安装MySQL

2022-12-05 15:46:45 809

原创 MySQL、Redis、MongoDB等安装【Docker版】

在原生系统上安装软件和环境很麻烦,总是缺这个那个,而且开发和部署环境不一致也会导致问题,部署也麻烦。所以本文介绍用Docker来方便的安装需要的软件和环境。

2022-10-28 22:22:49 585

原创 SQL学习笔记

检索数据检索不同的值检索出不同的值,使用distinct,而且必须放在列的前面,作用于后面所有的列select distinct vend_id from Products;限制结果使用MySQL、MariaDB、PostgreSQL或者SQLite,需要使用LIMIT子句select prod_name from Products limit 5;LIMIT 5指示MySQL等DBMS返回不超过5行的数据为了得到后面的5行数据,需要指定从哪儿开始以及检索的行数,像这样:select pr

2022-09-18 16:20:25 560

原创 kubernetes学习笔记

kubectl get - 列出资源kubectl describe - 显示有关资源的详细信息kubectl logs - 打印 pod 和其中容器的日志kubectl exec - 在 pod 中的容器上执行命令Service 通过一组 Pod 路由通信。Service 是一种抽象,它允许 Pod 死亡并在 Kubernetes 中复制,而不会影响应用程序。在依赖的 Pod (如应用程序中的前端和后端组件)之间进行发现和路由是由Kubernetes Service 处理的。Service 匹

2022-03-20 13:14:33 664

原创 CentOS 7.7安装Erlang和Elixir

安装之前,先看一下它们的简要说明ErlangErlang是一种开源编程语言,用于构建对高可用性有要求的大规模可扩展的软实时系统。它通常用于电信,银行,电子商务,计算机电话和即时消息中。Erlang的runtime系统具有对并发,分发和容错的内置支持。它是在爱立信计算机科学实验室设计的。ElixirElixir是一种动态的功能语言,旨在用于构建可伸缩和可维护的应用程序。Elixir利用了以运行低延迟,分布式和容错系统而著称的Erlang VM,同时也成功地用于Web开发和嵌入式软件领域。现在开始在C

2022-01-27 23:59:40 659

原创 安装JMeter插件---JMeter插件管理器

获取插件最简单方法是安装插件管理器。然后只需单击复选框即可安装任何需要的插件。打开https://jmeter-plugins.org/get/下载后将其放入jmeter的lib/ext目录,然后重新启动JMeter。官网:https://jmeter-plugins.org/install/Install/...

2022-01-27 20:47:13 1376

原创 pytest学习常用三方模块或库

pip 安装可以使用镜像来加速,例如:pip install 模块名 -i https://pypi.douban.com/simple镜像也可以自行选择自己喜欢的,这里演示用 豆瓣源失败重跑插件pytest-rerunfailures支持:Python3.6-3.10pip install pytest-rerunfailures测试结果生成HTML报告插件 pytest-html支持:Python3.6-3.9pip install pytest-html重复执行用例插件pyt.

2022-01-27 20:26:44 9672

原创 Jmeter安装和环境配置

官网下载Binaries下的zip包JMETER_HOME解压后的文件夹位置,路径最好是英文,比如D:\qa\jmeter只要上面的配置正确,下面的复制粘贴就行了CLASSPATH%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%jorphan.jar;Path%JMETER_HOME%\bin...

2022-01-26 16:54:49 239

原创 MySQL、Redis、MongoDB安装

MySQL安装MySQL安装官网文档:https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/MySQL 安装URLwget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.debsudo dpkg -i 刚下载的.deb文件使用以下命令从 MySQL APT 存储库更新包信息(此步骤是必须的)sudo apt-get updatesudo apt-get ins.

2022-01-26 12:40:29 379

原创 MySQL连接访问的一些问题

1130错误:更改要登录用户的host为“%”update user set host = '%' where user ='root';刷新MySQL的系统权限相关表flush privileges;1251错误:在mysql中先更改加密方式,指令如下:ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;然后再更改密码,由于加密规则更改,所以需要重新设置密码;ALTER USER .

2022-01-25 22:28:49 906

原创 Ubuntu上MySQL、MongoDB、Redis的安装

*********************************************MySQL安装*********************************************MySQL安装官网文档:https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/--------------------------------------------使用系统为Ubuntu18.04MySQL5.7 apt安装要18.04,因

2022-01-25 22:23:37 868

Elixir in Action, 2nd Edition 免积分下载

Elixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir in Action, 2nd EditionElixir

2022-05-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除