- 博客(58)
- 收藏
- 关注
原创 pywinauto uia模式下切换选项卡不生效的解决方案
然后,可以使用LegacyIAccessible 属性的State 值,如果为0x100004说明被选中,如果这个不准确,可以对UIA_TabControl(选项卡组)检查LegacyIAccessible.Name值,被选中后,选项卡组的LegacyIAccessible.Name会变成已选中tab的名称。通过 select()会报空指针异常,但是texts()却能正确打印,有两种方式解决qt的tab无法正常通过select切换。2.通过invoke方法,element.invoke()点击指定选项卡。
2024-03-28 18:36:28 272
原创 Vue 给V-SHOW增加 高度Transition的最完美解决方案
说明:核心:设置block+v-if是不会渲染节点的,所以没法通过这样的方式实现,需要自己手动修改下,v-if时onMounted是不会拿到组件的高度的,这里就不演示了,有通过max-Height来实现的,但前提是maxHeight要和元素实际场景的高度差不多一致,适合元素固定渲染高度的场景,否则会卡一下。核心:设置block+hidden可以使得元素不可见,但是有具体的高度,但是,会占用文档流,所以需要使用absolute绝对定位使其脱离文档流避免影响页面布局。一、获取display:none的元素高度。
2024-01-28 17:16:14 341
原创 FastAPI使用loguru时,出现重复日志打印的解决方案
在uvicorn中有多个logger,分别是uvicorn、uvicorn.error、uvicorn.access。其实大家可以做个实验,我们发送请求,请求的日志是通过uvicorn.access这个logger打印的,但它却并不会出现打印三次的情况。可以看到,uvicorn.access的propagate是false,其他都为true,所以会出现日志传播,而正如上面所说,propagate可以控制日志传播。其实问题已经解决,确实是这个参数的问题。
2023-12-24 02:15:31 1502
转载 解决Naive UI使用了固定列和scroll-x后,数据表格撑开容器
具体的原因是min-width:auto,导致出现撑开的问题,因为flex伸展是取的剩余空间,此时width大于容器空间,剩余空间是负的,自然就出问题了,我们将min-width设置为0,或者width设置为0,就可以强制将整个控件的空间占为己用。顶部的蓝色为30vw宽度的容器,下方是一个Naive UI的标签页,里面放了一个数据表格。可以看到,整个标签页Tab和上方最简单的30vw容器的尺寸是一致、计算正确的。而此时我们容器设置的max-width :100 %,并不起作用。
2023-12-15 22:22:34 1753
原创 Naive UI 搭配Tailwind CSS 出现按钮变白,样式冲突,不兼容的解决
Naive UI 搭配Tailwind CSS 出现按钮变白,样式冲突,不兼容的解决,按钮底色变成白色、按钮涟漪出现绿边、字体异常等Preflight
2023-12-12 11:15:30 2088
原创 Vue在Computed计算属性下,获取Promise then的返回值无效为空
原因:Promise是异步的,如果业务逻辑不放在then内部,那么可能时机无法拿到then内返回的变量。解决方案:Vueuse库提供了异步计算属性的钩子,使用Vueuse库的computedAsync即可。建议异步操作还是放在Store的Action里面,通过async/await方式串行化执行。
2023-12-06 20:08:23 1556
原创 PaddleOCR 运行退出0xC0000409,不显示错误信息
在一台老的电脑上去运行PaddleOCR 时,发现程序输出ppocr DEBUG: Namespace后,返回错误码0xC0000409执行到ocr就闪退,不提示。说明我的cudnn 环境变量配置的不对。原因:PaddleOCR 吞了输出。
2023-11-22 17:12:34 256
原创 Go的优雅退出
【代码】Go的优雅退出。如果不使用stop,则ctrl+c不能强制退出,假设收尾工作存在死锁等行为,则无法通过Ctrl+C杀掉进程。
2023-11-13 23:06:21 1002
原创 cgo与调用c的回调函数指针
但是结构体指针不能传unsafe.pointer,可直接声明C.STRUCTXXX,是指针就传* C.STRUCTXXXX。一、构造包装函数(callOnMeGo_cgo),这里通过cgo编写一个自己的c函数,满足要调用库的callback格式就可以。③. 是否出现了释放不该释放的内容,比如说,回调传过来的结构体,通过var声明后,就进入到了Go的GC范围内,不要去C.free。的函数声明,可以放到函数体外面去,便于查看。如果只需要结构体某些字段,可以直接在这里提取后转发过去,省略了Go语言中操作的步骤。
2023-11-13 22:17:13 414
原创 JPA Buddy快速创建update、find、count、delete、exists方法
JPA Buddy快速创建update、find、count、delete、exists方法,JPA默认提供的CrudRepository\JpaRepository提供的方法比较少,一般我们会手写一些方法,这里我们选择通过JPA Buddy快速生成,之前文章中讲到了JPA Buddy原本是IDEA收费插件,无比强大;现在被Jetbrains收购后,变成了IDEA Ultimate自带的免费插件。通过JPA Buddy可以快速创建一些方法,开发效率简直太高了!
2023-11-13 00:48:45 414
原创 Spring Data JPA 实现集成实体对象数据库的创建、修改时间字段自动更新
注意,需要两个注解,MappedSuperclass代表是基础实体,不会创建数据库表,EntityListeners注解启用监听器,我们需要使用的是AuditingEntityListener这个监听器。原因::JSR 317规范指出,对实体类的生命周期操作,不应该通过EntityManager或Query注解实现,所以Audit无法捕获Query注解产生的更新。同时,CreatedDate、LastModifiedDate代表会在创建和修改时更新时间字段,包括创建时间和修改时间。
2023-11-13 00:28:41 791
原创 Spring Data JPA 项目配置与QueryDSL集成
QueryDSL需要单独引入。Spring JPA针对QueryDSL有比较好的兼容性,可以实现优雅的SQL构建。JPA Buddy的使用、安装、生成实体类,Querydsl配置、APT和JPAQuery工厂
2023-11-09 02:26:11 440
原创 Spring Data JPA 使用 AuditingEntityListener @Query注解对update语句中,更新时间不生效
JSR 317规范指出,对实体类的生命周期操作,不应该通过EntityManager或Query注解实现,所以Audit无法捕获Query注解产生的更新。解决方法是,不通过update更新数据库,使用set重新赋值后save,可以正常更新修改时间。AuditingEntityListener 不能监听Query注解 Update。
2023-11-06 18:55:00 210
原创 解决Java对接LDAP AD域登录出现Unprocessed Continuation Reference(s)错误
如果是使用Spring LDAP,则ldapTemplate.setIgnorePartialResultException(true)忽略这个报错。出现该错误的原因,主要是因为Java namingx的库,默认选项是未设置跟随,389返回的是AD域条目的引用,需要进行引用跟随。解决方法分为两种,第一类不使用全局目录服务的端口389和636,而是使用真实端口。原生LDAP登录:Context.REFERRAL设置为follow。把代码中的端口389改到3268。把代码中的端口636改到3269。
2023-11-06 16:02:34 543
原创 带过期时间的localstorage封装
localstorage原本是不带过期时间的,xijs提供了一个带过期时间封装的store工具,但是用起来因为文档基本等于没有,所以干脆直接封装一个用,其中ttl是过期时间,以毫秒计算。
2023-10-27 00:37:26 167
原创 Vite区分生产环境和开发环境部署后找不到 index.html的说明
不要使用vite build production此类,这是会引用到production/index.html 自然找不到了。使用cross-env,统一使用同一个部署,只是API接口不同。
2023-10-26 10:19:59 219
原创 现代化前端 Mock 数据的方案(MSW+faker.js)
目前前端模拟数据除了通过一些接口调试工具来mock以外,偶尔使用express、nest之类,主要是用mock.js和better-mock,这两个本质是一个东西,后者是因为前者不维护而诞生出的一个分支,支持typescript。本文主要讲另外一种方式,就是通过msw和faker.js实现模拟。msw全称Mock Service Worker,是通过Worker实现的mock。本方式相对来说比较新,也比较优雅。
2023-10-22 00:59:54 565
原创 Vue 3使用 Iconify 作为图标库与图标离线加载的方法、 Icones 开源在线图标浏览库的使用
之前一直naive-ui搭配使用的是xicons,后来发现Iconify支持的图标合集更多,因此转而使用Iconify。与FontAwesome不同的是,Iconify配合Icones相当于是一个合集,Iconify提供了快捷引入图标的方式,而Icones是一个大的图标库,收集了大量MIT协议、Apache 2.0开源的图标文件。Iconify 支持的框架很多,本文以 Vue 3 作为介绍。
2023-10-20 15:49:16 9382 2
原创 Apache Common CLI 使用方法
Apache Common CLI 用于开发命令行工具,可以实现命令参数的解析。本文章讲解了common cli的api,接口、使用案例,包括formatter打印帮助信息、DefaultParser 等
2023-10-12 19:35:09 174
原创 通过Vcpkg直接安装Qt静态链接免编译的方式
Vcpkg支持自动编译Qt静态链接版,大约只需要30min左右,解决编译困扰和配置环境带来的各种影响。支持Qt5、Qt6、自己编译不需要配置perl、python等编译速度快,问题少。解决designer.exe报错问题。配置Qt version
2023-09-18 01:58:30 6168 3
原创 解决Qt VS Tools扩展加载预编译Qt库 提示版本不匹配
提示qmake error:no value for QT_INSTALL_PREFIX/src原因:qt路径编译时,是硬编码到qmake里的,所以如果挪动了qt的目录,或者是下载其他人预编译的qt库,就会有该提示。解决方案:qmake同级别路径新建qt.conf文件。以下代码填入:然后重启Visual Studio再添加即可。
2023-09-17 21:54:47 3556 3
原创 Go工具库Lancet的使用-Slice的条件过滤和删除
Go语言的切片相当于弹性数组,但是Slice自带的方法不多,进行Slice各类操作时,可以使用Lancet库提供的一些方法,增强Slice的功能。Lancet还提供UniqueBy去重逻辑、Unique直接去重,非常好用。按指定条件删除Slice中的元素。按指定条件过滤出Slice的元素。
2023-09-11 18:17:09 153
原创 Gin中间件的异常处理和非协程的全局异常处理
Gin统一异常处理中,自己中间件的异常不能通过这个Recovery中间件去捕获,无法返回我们希望给用户返回的500错误,不像是Spring可以全部捕获到,是因为有goroutine的存在,所以需要单独处理中间件的异常。注意异常后Abort不再过后续的中间件,浪费请求资源了。
2023-09-04 10:24:52 198
原创 解决Go处理JSON出现斜杠和[]byte的json变成base64
base64是go特性使然,string()直接转就行,但会带上斜杆。通过RawMesage可以解决斜杠问题。
2023-08-08 18:17:01 656
原创 Sanic 使用 Loguru 替换默认的 LOGGING
Sanic 默认是通过 LOGGING来记录日志的,目前日志记录多半使用Loguru,且Loguru支持LOGGING接口,因此我们选择将LOGGING用Loguru替代。说明,Access Log未作特别处理,感觉也用不到,如果你需要记录访问日志建议用别的方式实现,如nginx。app内需要使用日志时,可以直接使用sanic.log下的logger,正常打印即可。上面的handlers是我自己根目录下的logger.py,自己的路径自己替换下。原理:注册InterceptHandler,接管日志打印。
2023-07-25 20:34:31 281
原创 Python 高性能Web开发 - Sanic学习路线
其中,Sanic支持异步,是后起之秀,性能极强,使用简单,官方文档详细,在大量生产环境中已经落地,进行Web开发时,建议主学Sanic+Flask两大框架,即可满足使用。sanic+redis 实现redis并发锁,实现threading.lock互斥锁、rlock可重入锁。sanic集成loguru日志框架实现日志记录。sanic+orm+cache集成缓存使用。sanic集成orm实现数据增删改查。1.了解如何创建Sanic APP。1.了解如何创建蓝图实现模块划分。2.了解如何启动Sanic应用。
2023-06-30 18:27:04 206
原创 Go库推荐
完全配置解决方案viper。HTTP请求库Resty。校验包validator。分布式任务队列aysnq。权限模型库casbin。创建CLI库cobra。字节开源的JSON库。
2023-06-26 17:22:48 85
原创 RobotFramewrok 执行Pybot时无法读取txt用例suite的解决方案
最新版RF,默认只解析robot用例,但是又支持参数传递扩展名,所以只需要修改一下pybot.bat内容即可,测试最新rf 6.x版本支持。可以正常执行txt和robot格式用例了。
2023-06-05 16:30:29 157
原创 IDEA Swing设计器 生成以后 进行打包无法运行的解决方案
通过Swing默认设计器+Apache shade进行打包,会发现提示Exception in thread "main" java.awt.IllegalComponentStateException: contentPane cannot be set to null。原因是GUI默认生成的二进制文件+forms_rt依赖导致。4.可以看到已经生成了setUp。1.修改默认生成Java源代码。2.增加forms_rt的依赖。3.重新package即可。
2023-05-24 17:59:30 563
原创 Robot Framework + Playwright 自封装关键字的实现思路
Robot Framework是目前比较强大的自动化测试框架。实际上,官方对于Pytest+Playwright讲解内容较多,但是涉及到Robot Framework的内容较少,要么就是主要利用了Playwright库实现,步骤都在用例里。
2023-05-10 22:54:01 708
原创 中后台业务Playwright iframe 获取不到
因为后台管理系统默认会进入第一个页面,当我们点击菜单进入其他页面时,上一个iframe还没来得及销毁,且因为我们点击左侧菜单的元素,元素本身是稳定的(Playwright的优雅等待实在是不会浪费1秒钟)就进入下一个操作了,这时候iframe的状态是不会影响我们进入新的菜单的,但会影响到我们后续针对进入菜单后执行的业务操作。一般我们针对元素操作,是通过frame来的,如果你只是用playwright的自带初级locator,当然framelocator也可以用于定位元素,不过功能上不太强大。
2023-05-10 19:46:23 642
原创 Python3 装饰器进阶——装饰器修饰类方法,并且装饰器调用另一个类方法
目前网络上的教法涉及到调用类内方法比较少,其实核心是在于wrapper和func需要同时传入self。
2023-05-08 21:38:25 147
原创 Playwright基础学习——脚本执行
注意:为了兼容异步和同步,如果传回Promise,将会等待Promise执行完成有数据才会返回数值,所以可以在非async中正常用Promise脚本。page.evaluate()是基础的方法,传入一个 EvaluationArgument 实现传参。
2023-04-11 16:12:34 951
原创 Playwright基础学习——定位器
Locator是Playwright的精华所在。在Playwright以前,做Web自动化基本上都是用helium+selenium的组合,helium提供了很多好用的方法, 诸如模糊搜索、高亮等,然而在Playwright中,这些都是原生实现了。出于工程性的考虑,本处不再介绍get_role等使用较少的方法。
2023-04-11 15:33:23 2505
原创 Playwright基础学习——页面
在Playwright中,没有Element这个概念,只有Page的概念,Page不仅仅指的是某个页面,例如页面间的跳转等,还包含了所有元素、事件的概念,所以我们包括定位元素、页面转向,都是基于Page操作的。
2023-04-11 14:56:56 749
原创 Playwright基础学习——安装
Pw一般通过pytest执行测试,但实际项目中,会涉及到其他自动化测试框架,Pw允许用户自己选择框架,比如RF等,但会失去一些pytest的优势,不过整体而言,pw仍然要比selenium优势较大,后续应该都会慢慢考虑使用playwright实现自动化。与Selenium不同的是,Pw需要使用定制版的浏览器,所以安装时请注意,官方会通过微软CDN自动下载,也支持配置外网代理下载,如果微软CDN在工作环境禁用,申请外网权限后,可以通过搭建一个跳板机进行代理下载。声明:本博客内容均为自主学习记录,非专业文章。
2023-04-11 14:10:34 1009
fastapi官网离线文档对应0.110.2版本
2024-04-20
Garnet数据库Redis平替1.4.0版本,使用netsdk8.0编译
2024-04-13
vue dev-tools离线安装包 chrome版本 6.6.1
2024-04-13
make 3.81 for windows
2023-12-26
graalvm jdk 17 社区版22.3.1 windows版 native image 镜像
2023-03-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人