自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 资源 (1)
  • 收藏
  • 关注

原创 Electron 应用实现截图并编辑功能

Electron 应用如何实现截屏功能,有两种思路,作为一个框架是否可以通过框架实现截屏,另一种就是 javaScript 结合 html 中画布功能实现截屏。在初步思考之后,本文优先探索使用 Electron 实现截屏功能。作为一个成熟的框架,如果能够完成截屏,那自然是已经考虑了各种会出现的问题。Electron 想要截屏还是要用到 desktopCapturer API。这个 API 也是用来实现录屏。

2023-08-12 16:02:58 1727 1

原创 Electron 和 Angular 项目升级

问题分为 Angular 升级带来的问题,Electron 升级带来的问题,包括 Angular 升级引起第三方模块不兼容的问题。还有一些 css 样式可能会变化,以及一些 TypeScript 语法问题。框架升级是一件非常麻烦的事,特别是跨许多大版本升级,需要注意的事项很多,如果项目很大,升级后需要完整测试。

2023-06-20 23:47:34 1264

原创 Angular4 中 ckeditor5 插件的使用

首先,还是先安装 ckeditor5-angular 和 ckeditor5-build-decoupled-document 插件。,按步骤创建之后下载。将下载的压缩文件解压,找到 \build\ckeditor.js 文件,替换到项目\node_modules@ckeditor\ckeditor5-build-decoupled-document\build 文件夹下。此时项目中使用的 ckeditor5 插件里的功能与在线构建的功能一样。

2023-02-12 17:23:22 1037

原创 Angular 4.0.0 之后 Angular、Node.js、TypeScript 版本依赖关系

Angular 4.0.0 之后 Angular、Node.js、TypeScript 版本依赖关系

2022-12-29 23:44:41 2056

原创 基于 Python 与 mxget 的音乐下载器

基于 Python 与 mxget 的音乐下载器需求实现一个音乐下载小工具,搜索歌曲名或演唱者名找到相关联的几首歌曲,选择序号,下载歌曲。支持下载歌词、选择下载路径、选择下载平台。环境Windows 10Python 3.8mxget 1.1.2PySide6 6.2.1mxget通过命令行在线搜索你喜欢的音乐,下载并试听。这里是它的 Github 地址 Github:mxget,有详细的使用说明,我这里就不多介绍了。不过这个 repository 是它的 Go 语言实现。至于

2021-11-08 00:09:51 876

原创 Python: 生成带用户昵称的头像

Python: 生成带用户昵称的头像需求新建用户后,根据用户输入的昵称生成图片。(例:注册"钉钉"用户后,头像根据输入的名字生成)开发环境Windows 10Python 3.8Pillow 8.1.2实现蛇皮皮蛋:Python创建文字图片(居中)/多图片合并(PIL),参考这篇文章,实现了新建一个图片,并把文字渲染到图片上。代码如下:import cv2import numpy as npfrom PIL import ImageFont, ImageDraw, Image

2021-09-12 06:22:47 1487

原创 获取 WebUploader 上传文件夹时的文件夹的绝对路径

实现 WebUploader 拖拽文件夹,获取文件夹绝对路径需求项目中用到了 WebUploader 插件,用于文件上传。WebUploader 提供了文件上传,但是不支持文件夹上传。虽然可以拖拽文件夹,但是 WebUploader帮助解析成文件。要求能够拖拽文件夹,并且获取文件夹的绝对路径,而不是文件夹下的各文件路径。实现WebUploader 的 官方文档 并未说明上传文件夹的情况。虽然没有说明,可以合理推测,文件夹绝对路径应该可以获取。先实例化一个 WebUploader 控件,如下,结合

2021-06-27 22:05:09 1646 3

原创 判断字符串是否符合 Windows/Linux 目录规则

Windows / Linux 路径 check最近项目中有一个需求,需要对获取的字符串绝对路径检查是否符合路径规则,比如 Windows 中需要以盘符开始,其中不能有一些特殊字符,在修改文件夹名或文件名会提示这些特殊字符,有 9 个:\/:*?"<>|。为什么不能包括这些字符呢?这里不做探究,可以看下这篇文章:点击实现先看下代码,再结合具体代码来理解过程。def check_path(path): """ 检查 Windows path 是否符合规则 """ loca

2021-06-20 19:27:09 682

原创 Python 与 FTP 服务器 -- ftputil 模块

Python 与 FTP 服务器 – ftputil 模块,文件上传下载Cre: 2021/02/22Mod: 2021/03/17前一篇文章分析了用 Python 内置的模块 ftplib 实现上传下载等功能,本篇文章就来看看另一个高水平的 FTP 库 ———— ftputil。它的官网:ftputil。项目需求与分析在之前 ftplib 的文章已经分析过,而且已经说明在本次文章中要处理一些其他问题,不再详述。点击ftplib查看。ftputilftputil 是第三方模块,是 ftpl

2021-06-06 20:31:13 2179 3

原创 Python 与 FTP 服务器 -- ftplib 模块

Python 与 FTP 服务器 – ftplib、ftputil 模块,文件上传下载(界面可视化)Datetime: 2021/02/22项目需求:已建立 FTP 服务器,通过 ip、用户名、密码连接后,上传与下载文件,要求能上传或下载多个文件或多个文件夹。Python 与 ftp 服务器相关的有两个模块:ftplib 和 ftputil。ftplib 是 Python 内置模块,无需下载安装,直接导入即可使用,不过功能较少,像 os 中 isdir、isfile、makedirs 等方法都没有,

2021-05-30 14:51:52 1765

原创 Python: 二进制字节流数据的读取操作 -- bytes 与 bitstring

Python: 二进制字节流数据的读取操作 – bytes 与 bitstring最近项目有个需求,需要对二进制文件读取内容,操作读取到的字节流数据,主要是查找与切片获取内容。这要求有两个标志,一个开始,一个结束,获取中间的内容。Python 的 bytes 内置了一些方法,但是却不完美。在调查后,了解到 bitstring 这个第三方包,在对字节流数据的处理上,似乎更合适。bytesbytes:一种字符序列的类型。通过比较 dir(str) 与 dir(bytes) 可知,两者的属性与方法很相似,

2021-05-23 16:00:12 25078 5

原创 Maya Python 查询引用文件中的编码问题 -- 中文乱码

Maya Python 查询引用文件中的编码问题 – 中文乱码Datetime: 2020/01/27最近在做一个功能,查询 Maya 文件中引用的其他文件。Maya 官方文档提供的方法之一是用 Python 命令来查询引用的文件。后来又使用直接读取文件获取引用文件的方法。详情可以之前的两篇文章。本文主要来说说这之间遇到的一些编码问题,编码的问题一般就是中文乱码的问题。Maya Python 命令获取引用文件因为 Maya 安装目录下的 Python(mayapy.exe)版本为 Python 2.

2021-05-16 22:19:03 1800 1

原创 查询 maya 文件中的引用文件路径 -- 直接读取文件内容获取路径

查询 maya 文件中的引用文件路径 – 直接读取文件内容获取路径Datetime: 2021‎年‎1‎月‎14‎日 ‎星期四,‏‎下午 6:43:31之前查询 maya 文件中的引用文件路径,采用的是 maya Python 命令的方式。存在一些问题:Maya 客户端:目前了解到,以上方法,必须安装 Maya。版本不全匹配:Maya 版本很多,所以文件版本也不统一。以上方法要求 Maya 软件版本不低于文件版本(创建文件的 Maya 版本)。文件类型单一:由于需要打开文件获取文件的版本,以上查

2021-05-09 22:47:23 3992

原创 查询 maya 文件中引用文件的路径 -- 通过 mayapy.exe 及 maya Python 命令获取路径

Python 查询 maya 文件的引用节点及引用文件的路径环境Maya 2017 & 2018Python 3.6VS Code实现需求:给定一个 maya 文件,查询这个 maya 文件引用了哪些文件,返回引用的文件路径。首先,需要使用 maya 软件自带的 mayapy.exe 解释器来执行 maya 包的 Python 命令,如:cmds 的相关命令,maya 中的 Python 为 Python 2,但是开发环境使用的是 Python 3.6,所以需要变通一下。通过 su

2021-05-02 23:27:50 3601 10

原创 Effective Python -- 第 8 章 部署(下)

第 8 章 部署(下)第 57 条:考虑用 pdb 实现交互调试编写程序的时候,总会遇到代码中的 bug。print 函数可以帮我们追查到很多问题的来源。针对具体用例编写测试,也是一种隔离可疑代码并寻找错误根源的好办法。但是这些手段未必总是能查到问题的根源。如果要使用更为强大的调试工具,那就请试试 Python 内置的交互调试器(interactive debugger)。这种调试器能够检视程序状态、打印局部变量,并能够以步进的方式来执行程序中的每一条语句。在其他大部分编程语言中,先必须告诉调试器应

2021-04-25 20:54:56 128 1

原创 Effective Python -- 第 8 章 部署(上)

第 8 章 部署(上)第 54 条:考虑用模块级别的代码来配置不同的部署环境所谓部署环境(deployment environment)就是程序在运行的时候所用的一套配置。每个程序至少都会有一种部署环境,这就是生产环境(production environment,产品环境)。制作程序的首要目标,就是为了能在生产环境中运行它,并产生某种成效。但是,在编写和修改程序代码的过程中,却必须要在开发程序所用的那台电脑上面运行它。而这套开发环境的配置方式,可能与生产环境有很大区别。例如,可能会在 Linux 工

2021-04-18 23:36:29 105

原创 Effective Python -- 第 7 章 协作开发(下)

第 7 章 协作开发(下)第 52 条:用适当的方式打破循环依赖关系在和他人协作时,难免会写出相互依赖的模块。而有的时候,即使自己一个人开发程序,也仍然会写出相互依赖的代码。例如,GUI(图形用户界面)程序要显示一个对话框,请用户来选择文档的保存地点。程序可以在事件处理器(event handler)里,把需要显示在对话框中的数据,通过参数传递过去。而对话框那边,也需要读取一些全局状态,例如,它要根据用户的配置信息(user preferences,用户偏好)来决定如何把自身正确地渲染出来。下面定义

2021-04-11 22:11:26 175

原创 Effective Python -- 第 7 章 协作开发(上)

第 7 章 协作开发(上)第 49 条:为每个函数、类和模块编写文档字符串由于 Python 是一门动态语言,所以文档显得极其重要。Python 对文档提供了内置的支持,使得开发者可以把文档与代码块关联起来。与其他许多编程语言不同,Python 程序在运行的时候,能够直接访问源代码中的文档信息。例如,在为函数编写了 def 语句之后,可以紧接着提供 docstring,以便将一段开发文档与该函数关联起来:def palindrome(word): """Return True if the

2021-04-04 23:29:03 136

原创 Effective Python -- 第 6 章 内置模块(下)

第 6 章 内置模块(下)第 45 条:应该用 datetime 模块来处理本地时间,而不是用 time 模块-协调世界时(Coordinated Universal Time,UTC)是一种标准的时间表述方式,它与时区无关。有些计算机,用某一时刻与 UNIX 时间原点之间相差的秒数,来表示那个时刻所对应的时间,对于这些计算机来说,UTC 是一种非常好的计时方式。但是对于普通人来说,使用 UTC 来描述时间,却不太合适,因为我们通常都是根据当前所在的地点来描述时间的。我们会说“正午”( noon)或“早

2021-03-28 17:54:02 231

原创 Effective Python -- 第 6 章 内置模块(上)

第 6 章 内置模块(上)第 42 条:用 functools.wraps 定义函数修饰器Python 用特殊的语法来表示修饰器(decorator),这些修饰器可以用来修饰函数。对于受到封装的原函数来说,修饰器能够在那个函数执行之前以及执行完毕之后,分别运行一些附加代码。这使得开发者可以在修饰器里面访问并修改原函数的参数及返回值,以实现约束语义(enforce semantics)、调试程序、注册函数等目标。例如,要打印某个函数在受到调用时所接收的参数以及该函数的返回值。对于包含一系列函数调用的递归

2021-03-21 21:14:03 122

原创 Effective Python -- 第 5 章 并发与并行(下)

第 5 章 并发与并行(下)第 39 条:用 Queue 来协调各线程之间的工作如果 Python 程序同时要执行许多事务,那么开发者经常需要协调这些事务。而在各种协调方式中,较为高效的一种,则是采用函数管线。管线的工作原理,与制造业中的组装生产线(assembly line)相似。管线分为许多首尾相连的阶段(phase,环节),每个阶段都由一种具体的函数来负责。程序总是把待处理的新部件添加到管线的开端。每一种函数都可以在它所负责的那个阶段内,并发地处理位于该阶段的部件。等负责本阶段的那个函数,把某个

2021-03-14 22:38:38 234

原创 Effective Python -- 第 5 章 并发与并行(上)

第 5 章 并发与并行(上)第 36 条:用 subprocess 模块来管理子进程Python 提供了一些非常健壮的程序库,用来运行并管理子进程,这使得 Python 语言能够很好地将命令行实用程序(command-line utility)等工具黏合起来。现有的 shell 脚本一般都会越写越复杂,在这种情况下,为了使程序代码更易读懂且更易维护,很自然地就会考虑用 Python 改写。由 Python 所启动的多个子进程,是可以平行运作的,这使得我们能够在 Python 程序里充分利用电脑中的全部

2021-03-07 17:04:03 229

原创 Effective Python -- 第 4 章 元类及属性(下)

第 4 章 元类及属性(下)第 32 条:用 __getattr__、__getattribute__ 和 __setattr__ 实现按需生成的属性Python 语言提供了一些挂钩,使得开发者很容易就能编写出通用的代码,以便将多个系统黏合起来。例如,我们要把数据库的行(row)表示为 Python 对象。由于数据库有自己的一套结构(schema),所以在操作与行相对应的对象时,必须知道这个数据库的结构。然而,把 Python 对象与数据库相连接的这些代码,却不需要知道行的结构,所以,这部分代码应该写得

2021-02-28 22:37:35 145

原创 Effective Python -- 第 4 章 元类及属性(上)

第 4 章 元类及属性(上)第 29 条:用纯属性取代 get 和 set 方法从其他语言转入 Python 的开发者,可能会在类中明确地实现 getter(获取器)和 setter(设置器)方法。class OldResistor(object): def __init__(self, ohms): self._ohms = ohms def get_ohms(self): return self._ohms def set_ohms(se

2021-02-21 22:05:46 126

原创 Effective Python -- 第 3 章 类与继承(下)

第 3 章 类与继承(下)第 25 条: 用 super 初始化父类初始化父类的传统方式,是在子类里用子类实例直接调用父类的 __init__ 方法。class MyBaseClass(object): def __init__(self, value): self.value = valueclass MyChildClass(MyBaseClass): def __init__(self): MyBaseClass.__init__(self,

2021-02-14 23:48:12 181 1

原创 Effective Python -- 第 3 章 类与继承(上)

第 3 章 类与继承(上)第 22 条:尽量用辅助类来维护程序的状态,而不要用字典和元组Python 内置的字典类型可以很好地保存某个对象在其生命周期里的动态内部状态。所谓动态(dynamic),是指这些待保存的信息,其标识符无法提前获知。例如,要把许多学生的成绩记录下来,但这些学生的名字,事先并不知道。于是,可以定义一个类,把学生名字全部保存到字典里面,这样就不用把每个学生都表示成对象了,也无需在每个对象中预设一个存放其名字的属性。class SimpleGradebook(object):

2021-02-07 23:47:40 218

原创 Effective Python -- 第 2 章 函数(下)

第 2 章 函数(下)第 18 条:用数量可变的位置参数减少视觉杂讯令函数接受可选的位置参数(由于这种参数习惯上写为 *args,所以又称为 star args,星号参数),能够使代码更加清晰,并能减少视觉杂讯(visual noise)。例如,要定义 log 函数。以便把某些调试信息打印出来。加入该函数的参数个数固定不变,那它就必须接受一段信息及一份有待打印值的列表。def log(message, values): if not values: print(message

2021-01-31 23:58:36 178 1

原创 Effective Python -- 第 2 章 函数(上)

第 2 章 函数(上)第 14 条:尽量用异常来表示特殊情况,而不要返回 None编写工具函数(utility function)时,Python 程序员喜欢给 None 这个返回值赋予特殊意义。这么做有时是合理的。例如,要编写辅助函数,计算两数相除的商。在除数为 0 的情况下,计算结果是没有明确含义的(undefined,未定义的),所以似乎应该返回 None。def divide(a, b): try: return a / b except ZeroDivisio

2021-01-24 23:55:51 240

原创 Effective Python -- 第 1 章 用 Pythonic 方式来思考(下)

第 1 章 用 Pythonic 方式来思考(下)第 7 条:用列表推导式来取代 map 和 filterPython 提供了一种精炼的写法,可以根据一份列表来制作另外一份。这种表达式称为 list comprehension(列表推导)。例如,要用列表中每个元素的平方值构建另一份列表。如果采用列表推导来实现,那就同时指定制作新列表时所要迭代的输入序列,以及计算新列表中每个元素的值时所用的表达式。a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]squares = [x**2 f

2021-01-17 23:21:22 216 3

原创 Effective Python -- 第 1 章 用 Pythonic 方式来思考(上)

第 1 章 用 Pythonic 方式来思考(上)该系列文章为图书 《Effective Python:编写高质量 Python 代码的 59 个有效方法》(英文名称为 《Effective Python: 59 Specific Ways to Write Better Python》)的内容总结,侵删。第 1 条:确认自己所用的 Python 版本很多电脑都预装了多个版本的标准 CPython 运行时环境(似乎并不是,Windows 不预装,Ubuntu 16 预装 Python 2,Ubunt

2021-01-11 00:01:30 236

原创 基于 Django 的藏头诗生成

基于 Django 的藏头诗生成环境Windows 10Python 3.7Django 3.0PyCharm 2019具体实现配置方面的东西在这里就不再赘述,请看之前的一篇文章,连接为:基于Django的Web端垃圾分类查询获取数据的核心代码如下:import jsonimport urllib.requestfrom urllib.parse import quotedef search(request): keyword = request.GET.get('ke

2020-12-20 23:57:47 416 2

原创 数据可视化:pyecharts 的几个实例

数据可视化:pyecharts 的几个实例Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。官方文档:https://pyecharts.org/#/基本图表 Pie:饼图from pyecharts import options as optsfrom pyecharts.charts import Page, Pie#

2020-12-12 23:56:05 3649

原创 操作系统一些基础知识

操作系统一些基础知识进、线程进程(Process)是系统进行资源分配和调度的基本单位,线程(Thread)是 CPU 调度和分派的基本单位。线程依赖于进程而存在,一个进程至少有一个线程。进程有自己的独立地址空间,线程共享所属进程的地址空间。进程是拥有系统资源的一个独立单位,而线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),和其他线程共享本进程的相关资源如内存、I/O、cpu等。在进程切换时,涉及到整个当前进程CPU环境的保存环境的设置以及新被调度

2020-12-09 22:49:29 67

原创 计算机网络的一些常见知识点

传输层:TCP 和 UDP1、三次握手。暂略。2、四次挥手。暂略。3、tcp 与 udp 区别。TCP 协议是面向连接;UDP 协议采用无连接,即 UDP 发送数据之前不需要建立连接。TCP 协议可靠;UDP 协议不可靠,UDP 接收方收到报文后,不需要给出任何确认。TCP 只支持点对点通信;UDP 支持一对一、一对多、多对一、多对多。TCP 是面向字节流的;UDP 是面向报文的。面向字节流是指发送数据时以字节为单位,一个数据包可以拆分成若干组进行发送,而 UDP 一个报文只能一次发完。

2020-12-06 22:54:48 118

原创 Git 基础与分支

Git 基础与分支Git Pro 中文版Git 基础获取 Git 仓库有两种获取 Git 项目仓库的方式:将尚未进行版本控制的本地目录转换为 Git 仓库;从其它服务器 克隆 一个已存在的 Git 仓库。Git 初始化仓库。# 创建本地 Git 仓库,即初始化,进入该项目目录中。git init# 之后可以使用 git remote add <url> 连接远程仓库。通过 git fetch 或 git pull 获取远程仓库数据。# 克隆现有远程仓库(直接获取 Gi

2020-12-01 23:45:53 242

原创 一些基础的排序和查找算法(Python)

一些基础的排序和查找算法(Python)排序print("### 复杂度比较" "\n" "排序法 平均时间复杂度 最好时间 最差时间 稳定度 空间复杂度" "\n" "0冒泡排序 O(n^2) O(n) O(n^2) 稳定 O(1)" "\n" "1选择排序 O(n^2) O(n^2) O(n^2) 不稳定 O(1)" "\n" "2快速排

2020-11-29 22:24:12 92

原创 Python 高级编程(第2版)-- 第14章 有用的设计模式

有用的设计模式创建型模式(creational patterns):这些模式用于生成具有特定行为的对象。结构型模式(structural patterns):这些模式有助于为特定用例构建代码。行为模式(behavioral patterns):这些模式有助于分配责任和封装行为。创建型模式创建型模式处理对象实例化机制。这样的模式可以定义如何创建对象实例或者甚至如何构造类的方式。编译型语言(如 C 或 C ++)在运行时难以生成需要的类型。但是在运行时创建新类型在 Python 中是相当简单的。

2020-11-26 23:29:32 169

原创 Python 高级编程(第2版)-- 第13章 并发

并发并发(concurrency)和其表现形式之一——并行处理(parallel processing)——是软件工程领域最广泛的话题之一。为什么在应用程序中需要并发,什么时候使用它,以及在 Python 中你可以使用的最重要的并发模型。多线程(multithreading)。多进程(multiprocessing)。异步编程(asynchronous programming)。为什么需要并发并发不是应用程序实现的问题,而只是程序,算法或问题的属性。并行只是并发问题的可能的方法之一。如果两

2020-11-24 22:04:17 132 1

原创 Python 高级编程(第2版)--第12章 优化——一些强大的技术

优化——一些强大的技术优化是一个迭代过程,在这个过程中,并不是每次迭代都会有更好的结果。主要先决条件是通过测试验证并且正常工作的代码。应该始终专注于优化当前的应用程序的瓶颈。总之,一些性能问题只是由某些有质量缺陷的代码或应用程序的使用上下文引起的。例如,以下问题可能会降低应用程序的运行速度。基本内置类型的使用不当。太复杂。硬件资源使用模式与执行环境不匹配。过于长时间的等待来自第三方 API 或后台服务的响应。在应用程序的时间关键部分做太多。可以通过以下非算法方法优化你的程序。

2020-11-21 22:47:26 236

原创 Redis 部分基础知识

# Redis简介Redis 与其他 key - value 缓存产品有以下三个特点:Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。Redis 支持数据的备份,即 master-slave 模式的数据备份。Redis 优势:性能极高。丰富的数据类型。原子 – Redis 的所有操作都是原子性的,意思就是要么成

2020-11-20 22:40:03 151

基于Django的Web端垃圾分类查询的源代码文件

本份文件是我的个人博客《基于Django的Web端垃圾分类查询》的具体实现代码,为方便访客获取源文件,现上传文件于此。

2020-12-05

空空如也

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

TA关注的人

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