Mongodb存储文件的方法
MongoDB是一种面向文档的数据库管理系统,用C++等语言撰写而成,以解决应用程序开发社区中的大量现实问题。MongoDB由MongoDB Inc.于2007年10月开发,2009年2月首度推出,现以服务器端公共许可分发。
参考链接
- Mongodb的文件存储GridFs,by 勤勤恳恳.
VS2017配置GLUT开发环境
最近需要做一个红外图像处理软件,在VS2017上使用OpenGL GLUT开发,采用Rapidcsv读取传递的CSV数据。具体代码如下:
1 | int main(int argc, char *argv[]) |
参考链接
- 在Visual Studio 2017上配置Glut,by 凯鲁嘎吉.
- C++中创建二维数组的四种方法,by BQW_.
- Rapidcsv,by d99kris.
- bitmap,by ArashPartow.
- C++中4种方式把字符串和数字连接起来,by 帅东.
- string赋值操作,by zxy131072.
- Bitmap Fonts and Orthogonal Projections,by Lighthouse3d.
- C++11 std::to_string(double) - No trailing zeros,by stackoverflow.
- How to write openGl offscreen data in to JPG image,by codeproject.
VC6环境下OpenGL配置
最近调试一个使用VC6开发环境,使用OpenGL编写的遗留程序。记录一下VC6开发环境下GLUT库的配置。
参考链接
- (一)VC6.0写第一个OpenGL程序,by wang_liang.
- OpenGL开发:官方GLUT库的环境配置,by heguorui.
支持Windows7的Nodejs最高版本
目前最新的Nodejs LTS已不再支持Windows7。如需在Windows7上安装Nodejs,需安装12.19.1或之前的版本。
参考链接
- windows安装Node JS及配置,by 兰若惜.
使用Electron和Vuejs创建桌面应用程序的方法
最近遇到一个奇特的需求,要求构建一个评估系统,分为前后端。它的前端是桌面应用程序,后端也是桌面应用程序。前后端之间的通信是通过前端导出一个数据包文件,然后交给后端导入完成的。由于熟悉Nodejs前后端开发,我选择Electron加Vuejs的解决方案。具体的技术选型如下:
- 前端:electron+vuejs+indexedDB+localForage,前端程序需要存储数据,但数据量会比较小,通常使用indexedDB就足够了。
- 后端:electron+vuejs+sqlite3+sequlize,后端程序会汇总前端程序导出的数据包,并做一些统计查询,存储数据量大,读写效率要求高。因此选择sqlite3数据库,可随electron打包到一起安装。
技术简介
Electron简介
Electron(原名为Atom Shell)是GitHub开发的一个开源框架。它允许使用Node.js(作为后端)和Chromium(作为前端)完成桌面GUI应用程序的开发。Electron现已被多个开源Web应用程序用于前端与后端的开发,著名项目包括GitHub的Atom和微软的Visual Studio Code。
一个基础的Electron包含三个文件:package.json(元数据)、main.js(代码)和index.html(图形用户界面)。框架由Electron可执行文件(Windows中为electron.exe、macOS中为electron.app、Linux中为electron)提供。开发者可以自行添加标志、自定义图标、重命名或编辑Electron可执行文件。
vuejs简介
Vue.js是一款流行的JavaScript前端框架,旨在更好地组织与简化Web开发。Vue所关注的核心是MVC模式中的视图层,同时,它也能方便地获取数据更新,并通过组件内部特定的方法实现视图与模型的交互。
Vuejs适合开发单页应用程序。
indexedDB数据库简介
IndexedDB 是一种底层 API,用于在客户端存储大量的结构化数据(也包括文件/二进制大型对象(blobs))。该 API 使用索引实现对数据的高性能搜索。虽然 Web Storage 在存储较少量的数据很有用,但对于存储更大量的结构化数据来说力不从心。而 IndexedDB 提供了这种场景的解决方案。
IndexedDB 是一个事务型数据库系统,类似于基于 SQL 的 RDBMS。 然而,不像 RDBMS 使用固定列表,IndexedDB 是一个基于 JavaScript 的面向对象数据库。IndexedDB 允许您存储和检索用键索引的对象;可以存储结构化克隆算法支持的任何对象。您只需要指定数据库模式,打开与数据库的连接,然后检索和更新一系列事务。
indexedDB的API不够友好,建议使用localForage,支持类Storage API语法的客户端数据存储polyfill,支持回退到Storage和Web SQL
项目构建过程
构建Vuejs项目
使用如下命令构建Vuejs项目脚手架:
1 | npm install -g @vue/cli |
构建Electron项目
在上一节创建Vuejs项目的基础上,使用如下命令为Vuejs项目添加Electron支持,从而生成桌面应用程序:
1 | vue add electron-builder |
构建Sqlite3数据库
使用如下命令为项目添加Sqlite3数据库支持:
1 | npm install sequelize --save --registry https://registry.npm.taobao.org |
构建32位安装程序
使用如下命令构建32位Electron安装程序:
1 | npm run electron:build -- --ia32 |
或者
1 | yarn electron:build --ia32 |
问题备注
Electron构建程序下载依赖包失败
请参考 Electron:运行npm run build构建环境失败解决方案。
Electron makensis构建失败
当遇到如下错误时, 解决方法很简单,打包项目路径不能包含中文路径。
1 | .electron-builder\Cache\nsis\nsis-3.0.3.2\Bin\makensis.exe exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE |
Electron Vuejs显示空白页
请参考Blank screen on builds, but works fine on serve。
支持平台
electron支持macOS、Windows、Linux。在Windows平台,electron仅支持 Windows 7 或更高版本, 旧版操作系统已不再支持(并且无法运行).
参考链接
- Create an Electron application with Vue and Vuetify,by bromix.
- Electron:运行npm run build构建环境失败解决方案,by 请给我一杯冰可乐.
- How to build app for Windows 32bit version?,by nklayman.
- 支持平台,by electronjs.
- Electron应用数据库选型暨indexedDB扫盲,by shenlvmeng.
- LOCALFORAGE,by localforage.
- IndexedDB,by mozilla.
- 浏览器数据库 IndexedDB 入门教程,by ruanyifeng.
- electron集成sqlite3,win10上折腾了2天,by 兴哥.
- Electron笔记,by 小羽信息.
- Blank screen on builds, but works fine on serve,by Vue CLI Plugin Electron Builder.
- Remove menubar from Electron app,by stackoverflow.
Simulink仿真视频教程记录
看了吴菁老师的几个Simulink教学视频,很不错,记录一下。
参考链接
- 使用Simulink和Stateflow快速实现飞行器的设计仿真,by 吴菁.
- 使用Simulink 和Stateflow完成建模、仿真和飞行控制设计,by 吴菁.
- 使用 MATLAB 和 Simulink 让控制系统的开发更轻松,by 吴菁.
- 四旋翼飞行器的建模仿真和控制,by 吴菁.
游戏开发的基本概念
Cesium支持GLTF动画研究
Cesium在很早之前就支持GLTF模型动画,例如:
1 | var czml = [ |
这种方法存在一定局限性,只能支持全局动画,不能控制动画的起止。但最近版本中,Cesium进行了一定改进,可以支持在一定程度上控制GLTF动画了。示例代码如下:
1 | var czml = [ |
这段示例代码的原理还有待分析,我将launchvehicle.glb导入blender 2.90中,但并没有看到上述代码中的三段动画。按照链接Model Articulations “Number” variable的说法,这三段动画是通过GLTF扩展实现。
参考链接
- Model Articulations “Number” variable,by cesium.
- glTF 2.0 Quick Reference Guide ,by KhronosGroup.
- glTF,by KhronosGroup.
- Cesium Model Articulations,by cesium.
Cesium去掉黑色星空背景并透明的方法
为了使Cesium与整个网页的背景融合,需要去掉Cesium的黑色星空背景,具体方法如下:
1 | viewer.scene.skyBox.destroy(); |
参考链接
- Scene Background Transparent,by cesium dev.