pyqt5 && python打包

最近需要给之前的命令行程序写一个界面,使用Qt-designer拖界面还是比较方便的,其中一个比较麻烦的问题就是实时输出日志的问题,直接使用os.popen会导致窗口进程直接卡死,需要使用qt提供的Qprocess来处理,然而最终还是有问题;才发现是python的缓存问题,直接运行可以使用-u解决,但是pyinstaller打包不支持unbuffered,最终使用了py2exe pyqt5 高分屏支持 os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1" Qprocess子进程 为了防止大批量的任务导致窗口进程卡死,需要使用qt实现的qprocess来调用,使用os.popen 和 subprocess都是会出问题的 self.process = QtCore.QProcess() self.textEdit.clear() self.process.start(command) 系统命令实时日志获取 因为python缓冲区的问题,误以为是qt这部分的问题 # process 部分 self.process.readyRead.connect(self.dataReady) # 输出槽函数 def dataReady(self): cursor = self.textEdit.textCursor() cursor.movePosition(cursor.End) text = self.process.readAll() cursor.insertText(str(text)) self.textEdit.ensureCursorVisible() print(text) 打包 使用了好几个打包成exe的工具,发现基本都没办法很好的支持unbuffered,不关闭缓存就无法正常地实时获取运行的日志,pyinstaller, cxfreeze 直接打包还可以,但是不支持,还是py2exe好用 pyinstaller # 其他程序没有二进制依赖可以不加--paths pyinstaller --paths C:\Users\firer\.virtualenvs\compress_images-8VD5V_Md\Lib\site-packages\PyQt5\Qt\bin -F -w .\image_compress_ui.py cxfreeze 需要打包的文件夹创建setup.py(任意名字都可以) import sys from cx_Freeze import setup, Executable include_files = [] build_exe_options = {'packages': ['PIL'], 'excludes': [], 'include_files':include_files } base = None if sys....

2021-01-12 · 1 分钟 · Me

ventoy iso启动

这个工具写入u盘后可以直接启动iso镜像,以后就不用反复地格盘了,平时也可以正常当u盘使用,配合wepe工具箱应该很不错 类似功能的听说还有yumi

2021-01-06 · 1 分钟 · Me

超大量用户数据去重

之前统计系统到需要亿级的用户设备id去重,统计新增用户,直接使用clickhouse join由于笛卡尔积的原因导致效率偏低,早有听闻hbase rowkey的效率比较高,就想到了使用它来进行去重,把需要去重的键值连起来,每条数据查重理论上复杂度为1,当成一个比较大的redis来使用。 使用起来效果非常惊人,Result[] get(List<Get> var1) 这个函数提供了大量rowkey的查询,10万条数据几乎不到1s的时间,使用java进行求差集的效率也很不错,整体每天的数据批量去重只需要几秒钟就能完成 如果时间差距过大,采取每天轮询的方式还是很不错的,保证每个批次的数据量不会太大,降低hbase的数据吞吐压力,曾经尝试每次查询200万的数据都是没有问题,只是数据传输的时间会长一些 当然也可以用来redis来做这个处理,但是redis可能持久化存储这么多数据是一件比较麻烦的事情,而hbase本来就有海量存储的这个属性,不得不说比hive快了好多

2021-01-06 · 1 分钟 · Me

calibre-web的部署

最近开始准备书单开始读书,需要一个管理系统来管理书籍,看到这个效果还不错,也支持在线阅读和格式转换,可以说是相当完善了,发送到kindle的功能比较实用 docker-compose 找到technosoft2000/calibre-web的镜像并使用docker-compose进行部署 version:"3"services:calibre-web:image:technosoft2000/calibre-web:latestcontainer_name:calibre_webenvironment:- APP_REPO="https://github.com/firer1946/calibre-web.git"- AMAZON_KG_URL="https://github.com/Technosoft2000/docker-calibre-web/releases/download/kindlegen/kindlegen_linux_2.6_i386_v2_9.tar.gz"- CALIBRE_INSTALLER_SOURCE_CODE_URL="https://raw.githubusercontent.com/kovidgoyal/calibre/master/setup/linux-installer.py"volumes:- {{calibre_web.config_dir}}:/config- {{calibre_web.books_dir}}:/booksports:- {{calibre_web.port}}:8083restart:unless-stopped{{calibre_web.config_dir}}修改为自己的配置文件夹,需要权限修改为777,chmod -R 777 <文件夹>,不然无法上传书籍 {{calibre_web.books_dir}} 主要是存放书籍的目录 {{calibre_web.port}} 开放端口 网络不好的话最好把AMAZON_KG_URL,CALIBRE_INSTALLER_SOURCE_CODE_URL的文件手动下载下来,使用ansible部署还是比较方便的 中文化修改 通过technosoft2000的镜像部署下来发现下载和推送到kindle的中文书籍都是拼音,原来是存储的时候使用了拼音作为文件名,所以在下载和发邮件的部分做了一些魔改,具体修改见仓库,由于只是针对中文下的修改,所以就不提pr了 效果如下:

2021-01-04 · 1 分钟 · Me

start

2021,开始重新写blogs,简单记录一下,使用什么工具不重要,只要是快速开始写起来就很好,gridea还是比较方便的,相当于本地的静态站点生成器,同步到github pages 对应的仓库即可

2021-01-04 · 1 分钟 · Me