一、记录日志

1.1、panic恐慌(异常)记录跟踪

调用堆栈,如果有源代码信息时,则记录文件路径、行、列、堆栈;否则仅记录堆栈。

window系统,调用win32接口弹出模态框窗口提醒。

1.2、链路追踪日志,输出到文件和控制台配置

文件:文件数目、文件前缀/后缀名、文件收集各目标日志最小级别(红色标注)

 

控制台:从环境变量(LAPCE_LOG)加载各目标日志最小级别(蓝色标注)

注册链路追踪:输出到文件、控制台

控制台,环境变量LAPCE_LOG设置如:

二、加载特殊字体

字体特性时,加载字体字节数组,然后写到系统字体中。

三、标准输入非终端,获取环境本机变量值

判断当前操作系统,如:window,通过powershell,输出解析

powershell输出环境变量效果:

拆分每行(\n),然后等号(=),再拆分Name、value,然后通过 std::env::set_var 设置。

四、命令行参数

4.1、wait

对应中说明:lapce源码学习-编译调试 - 攀攀 - 博客园 (cnblogs.com)

4.2、new 是否在打开新窗口

否:判断是否有已打开窗口,有则打开目录或者文件(对应行、列)

   LocalSocket通信另外进程,写入 打开目录或者文件;通过channel异步读取 打开成功返回 received 则返回 true;等待超时或者false则返回错误。

  为什么不是LocalSocket写入后,直接LocalSocket读取等待,而是用了channel实现。是因为channel读取可设置超时时间,channel没有么?

 

另外进程接收“打开目录或者文件”消息的处理代码:线程LocalSocket监听后,channel 触发信号 create_effect 打开。 

循环监听,写入要“打开目录或者文件”,回写 received。

是:启动窗口时,打开目录或者文件

五、代码高亮配置加载

5.1、语法解析,tree-sitter grammars文件更新最新版本;加载成功触发代码高亮配置加载。

  用途:是用于定义编程语言的抽象语法树(AST)的规则。这些语法文件通过解析源代码生成AST,并且可以支持多种编程语言,如Python、TypeScript等。它们主要关注于如何从源代码中提取结构信息,以便进行语法分析和进一步处理。

 代码流程:判断创建目录、调用接口反序列后根据version文件与响应中字段对比判断版本是否一致、下载压缩包、解压压缩包、删除压缩包、回写version文件版本号

5.2、查询,tree-sitter queries文件更新最新版本;加载成功触发代码高亮配置加载。

  用途:树查询是基于Tree-sitter语法树的一种模式匹配系统。它允许开发者定义特定的模式来查找和高亮显示源代码中的特定部分,例如代码块、变量名或函数调用等。

  代码流程:判断创建目录、调用接口反序列后根据version文件与响应中字段对比判断版本是否一致、下载压缩包、解压压缩包、删除压缩包、回写version文件版本号




思考总结:两者就保存目录不一样,其他流程都一致(通知配置更新、文件更新),感觉这块代码重复太多。

六、程序更新

window:删除升级残余的备份文件.bak

线程,获取更新最新版本信息



界面操作命令,触发更新:用上面最新版本号判断是否需要更新、更新进度信号(影响菜单显示)、下载文件、解压替换文件、重启程序

window:与上面备份文件.bak删除对应,用下面文件替换程序文件



重启程序,window:cmd下命令执行 杀死进程、启动进程

进度信号(影响菜单显示),true:显示正在更新+禁用菜单、false:显示重启+RestartToUpdate操作(对应上面触发更新操作)

posted @ 2024-07-28 19:10 攀攀 阅读(43) 评论(0) 推荐(0) 编辑
摘要: rust 与 .net C# 对照 阅读全文
posted @ 2024-06-30 18:10 攀攀 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 一、需求背景:浏览器有些页面没有对文本输入框内容的前后空白字符做Trim处理,避免操作时不注意复制剪切文本有空白字符,能够后台监控自动处理掉。二、剪贴板知识点:监控函数,如、绑定:setClipboardViewer 函数 (winuser.h) - Win32 apps | Microsoft L 阅读全文
posted @ 2023-12-30 02:28 攀攀 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 一、分组百分比(分组后,内部筛选条件数据占比) Query:分组聚合、计算指标(隐藏显示)、计算脚本 二、大盘百分比(分组后数在分组之前所有数据中占比) 使用Transform功能2.1、Query 配置分组聚合、总数聚合。 A:选择分组字段、筛选条件、count聚合 B:筛选条件、count聚合、 阅读全文
posted @ 2023-11-11 23:51 攀攀 阅读(880) 评论(0) 推荐(0) 编辑
摘要: 一、Azure EventHub1.1、消费客户端负载均衡 引用包:Azure.Messaging.EventHubs;EventHubConsumerClient简单消费;不能持久化保存所有权\检查点,做负载均衡;需要自定义实现 EventProcessor<TPartition>,如通过Redi 阅读全文
posted @ 2023-10-01 10:51 攀攀 阅读(55) 评论(0) 推荐(0) 编辑
摘要: master分支调试1、报错:`#![feature]` may not be used on the stable release channel 2、Channel切换到nightly,报错:the trait bound `file_type::FileType: std::sealed::S 阅读全文
posted @ 2023-09-30 22:50 攀攀 阅读(136) 评论(2) 推荐(0) 编辑
摘要: 一、RecyclableMemoryStreamManager 源码地址:https://github.com/Microsoft/Microsoft.IO.RecyclableMemoryStream小对象池和大对象池管理、RecyclableMemoryStream创建、各场景的ETW消息\事件 阅读全文
posted @ 2022-12-03 18:31 攀攀 阅读(594) 评论(0) 推荐(3) 编辑
摘要: 一、window下rust安装 1.1、安装rust前提,必须vs安装“使用 C++ 的桌面开发” 打开“Visual Studio Installer”安装管理器,添加勾选安装“使用 C++ 的桌面开发” 1.2、在 Windows 上安装 rustup 下载地址:https://www.rust 阅读全文
posted @ 2022-11-06 14:41 攀攀 阅读(3163) 评论(0) 推荐(0) 编辑
摘要: NetCore 跨平台客户端方案,采用Electron/MAUI + Blazor(AntDesgin blazor),一步步配置、开发使用以及其中遇到问题。 阅读全文
posted @ 2022-10-16 14:50 攀攀 阅读(1627) 评论(2) 推荐(3) 编辑
摘要: 一、文件夹\项目结构 1.1、文件夹 net6.0:针对.net 6.0 项目模板 net6.0pack:针对net6.0打包 1.2、项目结构 Web\WebApi多项目、各层项目、单元测试项目 目标:制作Web\WebApi两个项目模板 二、模板参数 2.1、template\net6.0\.t 阅读全文
posted @ 2022-10-15 23:44 攀攀 阅读(394) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示