互联网
文章平均质量分 78
afeiqiang
这个作者很懒,什么都没留下…
展开
-
electron 自动更新之路总结( 下)客户端 autoUpdate
要说 electron 的自动更新有多难,上篇的版本管理服务器只是开胃菜。真正难啃的是这篇。全文分成 electron 14,electron-updater, electron-builder 三部分。electron 14为什么要用 14 版本?因为低于 14 版本用不了 electron-builder 的 NSIS 打包。并且需要把 nodeJs 升级到 12 版本以上。从低版本过来的朋友会发现好多报错,因为 14 做了一篮子改变,改的改删的删, 具体看Electron 14.0.0 |..原创 2021-12-31 18:25:17 · 3924 阅读 · 0 评论 -
electron 自动更新之路总结(上)版本管理服务器
花了我将近一个星期才最终把 electron 自动更新走通,其中无数卧槽。整体方案是 electron 14 + electron-release-server + electron-updater + electron-builder. 现做个总结,分上下两部分,上部分讲服务器,下部分讲客户端+electron-updater以及如何打包。electron-release-server官网地址GitHub - ArekSredzki/electron-release-server: A full.原创 2021-12-31 16:41:25 · 2764 阅读 · 6 评论 -
win32 打印机任务管理的 node 模块 (3)详解Win32 Spooler API 获取打印机列表及状态
上篇讲了如何写一个 node addon,这篇开始讲述如何调用 Win32 Spooler API 实现打印的完整功能。项目的代码在 https://gitee.com/csling/win32-printer,用 c++ 编写。下面一步一步来讲解。代码结构主要文件 2 个:win32_printer.cc : 定义 node 的接口,接受参数和返回数据结构win32_printer.h:接口的具体实现,调用 Win32 Spooler API 管理打印任务。如何定义 node 接口,传参.原创 2021-05-21 00:00:29 · 1928 阅读 · 0 评论 -
Linux 添加中文字体终极方法
系统缺少中文字体的情况下,代码使用中文字体便会乱码。检查系统中是否存在字体,查看 /usr/share/fonts 。分两种情况:一、当不存在该目录,运行以下命令安装 fontconfigyum -y install fontconfig完了之后有目录了,而且里面自带了 DejaVuSans 字体。看名字很容易误以为是宋体,其实不是,并没有中文字体在里面。二、有 fonts 目录,但里面没有中文字体。首先在电脑中找到字体文件,windows 在C:\windows\fonts 下面,macO原创 2021-04-30 22:43:42 · 1209 阅读 · 2 评论 -
从零开始写 win32 打印机任务管理的 node 模块 (2)node-addon-api
千里之行,从写一个 node addon 开始。因为需要一个执行 Win32 API 的项目开展实验和测试。容易混淆的 3 个概念:c++ addons api, N-API, node-addon-api. 简单地说,c++ addons api 表示最底层 api,直接从它来写会非常复杂。N-API 在这前者之上做了一层抽象,解决了不同版本兼容的问题,但也还是很复杂,基于c 的实现。而 node-addon-api 是N-API 的 C++封装,用起来相对容易很多。所以我们选择了 node-addon-原创 2021-01-13 16:51:05 · 564 阅读 · 0 评论 -
从零开始写 win32 打印机任务管理的 node 模块 (1)为什么要重复造轮子?
搜索打印文件的 node 模块找到有@thiagoelg/node-printer,node-native-printer 等等。简单的打印任务是可以胜任的,但要做到精准的控制就力不从心了。需解决多打印机连续打印的场景,必须做到: 打印机查询:打印机列表,包含状态、打印任务 任务管理:打印、查询、取消 状态监控:状态改变回调(事件订阅模式) 只考虑在 win 平台上的实现,所以用了 Win32 Spooler + ndoe 实现此前调研过几个模块也分别列出来..原创 2021-01-10 17:03:08 · 895 阅读 · 0 评论 -
javascript 数组下标你真的用对了吗?猜猜是什么数据类型
学过 c 或者 Java 的人都惯性地认为,JavaScript 的数组下表应该是整型。难道不是吗?还真不是。JavaScript 就是这么与众不同。有一次项目里写了这样一段代码:// arr 是一个数组for (const i in arr){ if (i === 0){ // do something } else { // something else }}结果 if 里的代码一直没有执行。非常的迷惑。于是试着用 typeof i原创 2020-10-02 22:08:49 · 1226 阅读 · 0 评论 -
pip 替换为国内源(清华源,阿里源)
默认的官方源速度非常慢,装软件费时费力,有时甚至超时失败。修改为国内源(清华源,阿里源)的方法:临时的方法pip install XXX -i https://pypi.tuna.tsinghua.edu.cn/simple清华源pip install XXX -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com阿里源XXX为要安装的包全局方法毕竟每次都写这段参数非常麻...原创 2020-08-27 13:06:49 · 38086 阅读 · 3 评论 -
kafka 延时消息处理
你一定遇到过这种情况,接收到消息时并不符合马上处理的条件(例如频率限制),但是又不能丢掉,于是先存起来,过一阵子再来处理。系统应该怎么设计呢?可能你会想到数据库,用一个字段来标记执行的状态,或者设置一个等待的时间戳,不管是哪种都需要反复地从数据库存取,还要考虑出异常情况状态的维护。 作为一款优秀的消息处理服务,kafka 具有完善的事务管理,状态管理和灾难恢复功能。只要我们稍加变通一下,kafka 也能作为延迟消息处理的解决方案,而且实现上比用数据库简单得多。 以下代码均在 sp...原创 2020-08-10 01:45:04 · 14808 阅读 · 13 评论