diff --git a/工作日志/2020年9月9日-sm2界面.md b/工作日志/2020年9月9日-sm2界面.md deleted file mode 100644 index 70162b69..00000000 --- a/工作日志/2020年9月9日-sm2界面.md +++ /dev/null @@ -1,66 +0,0 @@ -# 桌面应用程序开发 - -## 技术范式 - -> 1. 选择合适的技术范式。√====>electron -> 2. 对技术细节进行学习了解√====>javascript,nodejs,electron -> 3. 寻找开源的模板代码搭建框架 -> 4. 根据任务需求进行快速开发 - -### C++ QT开发 - -### Python PyQT开发 -卡掉,因为是C项目,用python的qt反而多此一举。 -### JAVA SWING开发 -理由同上。可以用C++,与原生的代码结合较好。 -### nodeJS Electron桌面开发 - -easy-window小程序。 -> 显然我觉得HTML桌面应用程序开发是最简单的,能够实现极其好看的界面。 - -## 2 开发步骤 -### 熟悉工程代码√ -* 源代码使用代码库:qt,openssl √ -* 使用qtCreator对代码进行编译调试 -* 源代码暴露的接口√ -* cmake编译工具+gcc√ -### 使用nodejs封装C/C++接口√ -* 使用napi封装借口√ -* node-gyp编译测试接口√ -* cmake-js编译测试√ - -### 使用electron呈现界面 -* 数据渲染模板应用√(template_js,arttemplate,jsrender,juicer选择了第一个数据渲染方式) -* 前端页面布局设计√ (选定了库,上传到了gitee,非常好用以后可以借鉴) -* 对页面布局进行调整和优化√(主要包括添加图标,修改颜色,添加标题) -* electron开发和调试(菜单栏和应用进程)√(使用vscode和webtool工具对electron应用进行了调试) - -### 根据需求规范工程 - -* 将工程上传到gitee√ -* 根据新的需求,修改函数借口。增加返回的message√ -* 对sm2函数的明明进行规范,test->encrypt√ - - -### 工程部署,使用nodejs封装工具发布。 - -* 使用electron-package对工程进行打包√ -* 使用electron-build或者electron-asar对工程进行发布。创建安装程序。√ - - -## 3 解决的bug问题 - -### append之后页面刷新元素消失的问题 - -* 因为在button周围由form标签,导致提交后页面刷新,之前的数据消失。 - -* [参考文献](https://blog.csdn.net/muyi_amen/article/details/79086281?utm_source=blogxgwz4&utm_medium=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase) - -### template_js无法加载模板渲染数据的问题 - -* 相似的库太多了,导致下载成了template.js和template-js - -### Message传递参数的问题 - -* 因为长度并不能自适应,同一个接口函数需要调用两次,第一次获取缓冲区长度,第二次将值复制到缓冲区。 -* github的issue真的是个解决问题的好地方。segmentfault和stackoverflow也非常好用。 \ No newline at end of file diff --git a/工作日志/2020年9月9日-无人机+sm2界面.md b/工作日志/2020年9月9日-无人机+sm2界面.md new file mode 100644 index 00000000..9a64225e --- /dev/null +++ b/工作日志/2020年9月9日-无人机+sm2界面.md @@ -0,0 +1,169 @@ +# 桌面应用程序开发 + +----------------------------------------- +第一阶段技术栈选择 + +## 技术范式 + +> 1. 选择合适的技术范式。√====>electron +> 2. 对技术细节进行学习了解√====>javascript,nodejs,electron +> 3. 寻找开源的模板代码搭建框架 +> 4. 根据任务需求进行快速开发 + +### C++ QT开发 + +### Python PyQT开发 +卡掉,因为是C项目,用python的qt反而多此一举。 +### JAVA SWING开发 +理由同上。可以用C++,与原生的代码结合较好。 +### nodeJS Electron桌面开发 + +easy-window小程序。 +> 显然我觉得HTML桌面应用程序开发是最简单的,能够实现极其好看的界面。 + +## 2 开发步骤 +### 熟悉工程代码√ +* 源代码使用代码库:qt,openssl √ +* 使用qtCreator对代码进行编译调试 +* 源代码暴露的接口√ +* cmake编译工具+gcc√ +### 使用nodejs封装C/C++接口√ +* 使用napi封装借口√ +* node-gyp编译测试接口√ +* cmake-js编译测试√ + +### 使用electron呈现界面 +* 数据渲染模板应用√(template_js,arttemplate,jsrender,juicer选择了第一个数据渲染方式) +* 前端页面布局设计√ (选定了库,上传到了gitee,非常好用以后可以借鉴) +* 对页面布局进行调整和优化√(主要包括添加图标,修改颜色,添加标题) +* electron开发和调试(菜单栏和应用进程)√(使用vscode和webtool工具对electron应用进行了调试) + +### 根据需求规范工程 + +* 将工程上传到gitee√ +* 根据新的需求,修改函数借口。增加返回的message√ +* 对sm2函数的明明进行规范,test->encrypt√ + + +### 工程部署,使用nodejs封装工具发布。 + +* 使用electron-package对工程进行打包√ +* 使用electron-build或者electron-asar对工程进行发布。创建安装程序。√ + + +## 3 解决的bug问题 + +### append之后页面刷新元素消失的问题 + +* 因为在button周围由form标签,导致提交后页面刷新,之前的数据消失。 + +* [参考文献](https://blog.csdn.net/muyi_amen/article/details/79086281?utm_source=blogxgwz4&utm_medium=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase) + +### template_js无法加载模板渲染数据的问题 + +* 相似的库太多了,导致下载成了template.js和template-js + +### Message传递参数的问题 + +* 因为长度并不能自适应,同一个接口函数需要调用两次,第一次获取缓冲区长度,第二次将值复制到缓冲区。 +* github的issue真的是个解决问题的好地方。segmentfault和stackoverflow也非常好用。 + + +----------------------------------------------------- +第二阶段 接口封装 + +## 1 接口封装 +```c++ + +//函数声明 +//签密函数 +void signcryption(string plaintext, bool *flag_signcrytion, string *ciphertext, + double *time_signcrytion); +//解签密函数 +void unsigncryption(string ciphertext, bool *flag_unsigncrytion, string *plaintext, + double *time_unsigncrytion, bool *flag_replay_attack, bool *flag_tamper_attack, string *timestamp); +//密文截获函数 +void intercept_cipher(string ciphertext, bool *flag_intercept, string *intercepted_ciphertext); +//密文篡改攻击函数 +void tamper_attack(string intercepted_ciphertext, bool *flag_do_tamper, string *ciphertext_new); +//消息重放攻击函数 +void replay_attack(string intercepted_ciphertext, bool *flag_do_replay, string *ciphertext); +``` + +## 2 接口测试 +* 使用nodejs封装了C++的接口,并使用addon_test对接口进行了测试。 + + +------------------------------------------------------ +第三阶段 界面优化和文档 + +## 1 主要内容 + +1. 添加题目√ +2. 修改成表格显示数据√ +3. 修改按钮的相对文职√ +4. 字体的大小和对其√ +5. 字体、字号√ +6. 表格的分布与自动换行√ +7. cmake编译调试√ +8. 公钥私钥的生成页面√ +9. 复习bootstrap√ +10. 修改配色方案√ +11. 修改背景√ +12. 色块转换与动态效果,添加动画√ +13. 图形标注,loading和其他图标√ +14. 功能实现,逻辑测试√ +15. 设置透明度√ +16. 设置美化界面显示的内容(表格和文字)√ +17. 模态框、警示框,用来显示异常信息√ +18. 使用collaspe动态显示图标内容× +19. 尝试使用jQuery简化js代码√ + +## 2 bug调试 + +段错误 +### 可能的原因 + +* 未初始化的指针和空指针 +* 堆栈内存溢出 + +### 解决办法 +* 联调 +* 堆栈扩充 +* 其他办法(代码空间释放) + +### 错误分析 + +* 结论1: + * unsigned调用比出错 + * 随着调用内容的减少,出错后裔 + * 由于堆栈溢出内容减少,出错后裔 +* 结论2: + * sign与unsign 具有相似性 + * sign无论调用多少次都不会出问题 + * unsgin只要调用1次就一定会报错 + * 问题一定处在代码内,而不是由于执行次数过多导致内存溢出。unsigned本身存在不贵的可能性 + * 在unsgin中,存在,在某种特殊条件下,会触发的段错误 +* 方法: + * nodejs的napi接口中出现问题 + * cmakejs编译选项调整出现问题 + * unsign函数本身出现问题 + +### 最终结果 +* 使用为自己在nodejs调用接口中,使用了较小的数组,导致数组长度溢出,引发了段错误。 +* 段错误很难定位,因为它报错的地方和犯错的地方,往往不在同一个地方。 +* 记住段错误,一定是引用了错误地址的数据造成的 + * 如在静态数据区写数据 + * 在不属于自己的内存段写数据。随机指针写数据,空指针写数据,溢出的数组写数据。 + + +------------------------------------------------------- +第四阶段 无人机元素和花里胡哨 + +## 1 要求 + +* 添加无人机元素。背景就改成动态的模拟空间的无人机飞行的网络图 +* 各个card改成半透明黑色背景,数据使用白色内容进行显示。 +* 可以动态修改card,collaspe的应用到位。 +* 添加一个card表示执行过程中的状态转换图。使用js代码修改使其能够动态地添加到状态转换图当中。执行过的步骤,执行中的步骤,未执行的步骤,使用不同的状态标注,像是打卡系统当前的执行流程,或者地铁站的线路点亮过程。 +* 添加一个card表示无人机当前的飞行状态。胡乱显示就好。主要包括无人机飞行的各个参数,无人机飞行的速度仪表盘,无人机的横向视角和纵向视角。参考下载的地图。 \ No newline at end of file