近况
很久没更新博客了,我觉得回来水一篇,大家也不用考虑我会跑路了,博客域名续了10年,别问钱哪里来的,问就是免费报销的。
说回来,很久没写文了不是别的原因,就是因为没米赚没什么回报,而且说仅仅为了写文干什么没有动力,如果为了赚流量为什么不恰烂钱
所以说不如鸽了躺在床上,但是最近在写项目,顺便空闲时间给博客直接改造升级一波,然后顺手也写了篇博文总结下最近。
对于整个站点的优化
内部:
我对原来的sw.js切换成了官方的Service-Worker.js 然后官方的缓存策略还是很给力的,同时换了张4K背景图格式为WEBP,由原来的vercel拉去githubpage镜像资源改为了vercel也同步生成。
同时对老掉牙的Volantis版本升级到了5.8.x版本
外部:对英语字体换成了仿苏芙比字体,可以看到非常Cute,这个字体大家偷的时候注意下,不要用于商用,是仿的游戏人物手写,而且我是在b站up那里偷来的,很遗憾不支持中文哦。
虽然修改很少,但是Volantis爆改这样的配色这样的字体,你绝对没见过第二家。
一切的源头
正在上网的我收到了WinRar让我付费还是看广告的两难选项,我肯定是一个都不会选的,那么眼下我只能找其它免费的压缩软件了,由7zip bandzip很多优秀的产品,但是有没有想过bandzip也是付费的,7zip的界面过于复古,那么对于我这种既要又要的人,能不能有一个 开源 免费 可以换皮肤 支持多语言 又不那么臃肿的压缩软件呢,也许但是仍未被我发现,但是有没有可能我可以写,在这种原因驱动下我开始了NuCat压缩软件的开发。
工具与环境
这个很好选,按照习惯我直接选择 CMAKE+MSVC+VSCODE ,虽然是单平台开发,但是CMAKE可以很方便设置依赖 设置参数 同时可读性高,MSVC则是比较优秀的CPP编译器,VSCODE和VS开发CPP都还行,但是VS有时候容易抽风。
食材的选材
数据交换和数据储存肯定是Json格式,而对于界面和我的需求相呼应的选项肯定不是QT ,WIN UI 2/3 等等,这类不符合我像一天一老婆的习惯,而且本身我UI不是特别擅长,如果我有位朋友会写WEB,灵感不就来了吗,基于各种原因Webview来展示界面就是最佳选项,cpp上在win32可用webview有很多,但cef electron等等库都与我的小而美冲突,要小小的才可爱,于是我们可以敲定webview2作为核心技术,但是在开发中对com等等不太熟悉吧,根据onebot我们得出一切皆可one,那么肯定来说webview2作为可选引擎来进行封装的库是有的,可以切换浏览器内核,接口操作上比webview2提供的api好用,果然在我们的寻找中找到webview/webview这个项目,我将这个项目作为我们的webview,然后我们还剩一个问题就是说解压压缩怎么办,涉及算法而且各种格式兼容过于麻烦摆在我的选择只有两条,调用7zip的命令行或者sdk,但是调7zip命令行需要按照7zip,使用sdk又如webview2一样接口难以操作,我找到bit7z库提供了对7zip的动态库操作,这样我们就找到了我们所有需要的库。
编码的选择
一切都很规范 bit7z yyjson webview/webview都是支持utf8,但是存在一个问题我是针对WinX64进行开发,采用UTF16或者ANSI调用才能正常调用接口,所以我们大部分采用UTF8,少部分WIN API进行UTF8转UTF16操作,按照规范执行
内码:UTF8
外码:UTF16
开发体验
1.很久没有再次开发过WIN32 窗口程序了,上次是N年前了,我已经很久没开发过了,本次可以说我是傻瓜,因为WEBVIEW的com技术我没弄过,弄懂这个到放弃我直接换库了,还有就是无边框窗口保留阴影和窗口随意移动花费了很多时间,无边框会在上方有6px白边问题 主要是因为我想保留窗口阴影同时让他无边框,但是这样会存在6px非客户区 ,解决方法就是放弃阴影,然后用dwm api再绘出来,当然还有其它方案,比如自己用gdi绘阴影,但是确实只能说麻烦。
2.找罪受就来写这个,查资料没给我送走,webview/webview虽然说好于webview2体验,但是说它屏蔽大量操作,resize webview都做不到,没办法,我只能爆改他的代码了,体验非常的差