参考链接
- 深度强化学习中实验环境-开源平台框架汇总,by 小小何先生.
- 强化学习实验环境 I (MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2),by AITBOOK.
在玩FlightGear的过程中,可能需要将视景分角度投影到不同显示器上,或者在一个显示器窗口上投影不同角度的视景。下面记录该需求实现方法。
在FGDATA文件夹根目录下创建camera-views.xml文件夹,写入如下内容:
1 | <?xml version="1.0"?> |
在FGDATA文件夹根目录下找到defaults.xml配置文件,修改如下配置内容,加入camera-views.xml配置文件。
1 | <rendering include="camera-views.xml"> |
在FGDATA文件夹根目录下创建camera-views.xml文件夹,写入如下内容:
1 | <?xml version="1.0"?> |
在FGDATA文件夹根目录下找到defaults.xml配置文件,修改如下配置内容,加入camera-views.xml配置文件。
1 | <rendering include="camera-views.xml"> |
GNU Privacy Guard(GnuPG或GPG)是一个密码学软件,用于加密、签名通信内容及管理非对称密码学的密钥。GnuPG是自由软件,遵循IETF订定的OpenPGP技术标准设计,并与PGP保持兼容。
对于 Windows 的用户:
如果您使用 Windows, 下载 Gpg4win并运行其安装包。
为了验证签名,您需要在 Windows 命令行(“cmd.exe”)中输入一些命令。
对于 macOS 的用户:
如果您正在使用 macOS,您可以安装 GPGTools。
为了验证签名,您需要在(“应用程序”下的)终端中输入一些命令
对于 GNU/Linux 的用户:
如果你使用 GNU/Linux,那么可能在你的系统中已经安装了 GnuPG,因为大多数 Linux 发行版都预装了它。
GnuPG使用非对称密码体制算法生成一对密钥对,其中公钥可公开,私钥必须保密。
1 | gpg --gen-key |
验证下载文件的第一步是与任何提供文件下载的人建立信任。出于此,需要下载这个文件的公钥,并且验证公钥的拥有者是否是他或者她自称的。
在下载完文件拥有者的公钥后,使用 gpg 命令导入公钥到你的 keyring 中:
1 | gpg --import signing-key.asc |
记录各类Office使用技巧,以备使用。
做科研的小伙伴们在使用matlab绘制飞行器轨迹时,总是感叹大牛绘制的图美观大方,而自己绘制的图则简陋到了极点。但现在有了flypath3d,导师再也不用担心我的绘图了。
flypath3d打包了一个免费的Matlab软件,用于导弹和空中目标轨迹的3D可视化,为计算机仿真提供了可视参考。 由于其多功能性和易用性,该软件可以帮助产生有吸引力的演示文稿,以用于各种科学或公共宣传目的。该软件可免费用于科学和教育用途。 您也可以出于任何目的修改和/或分发此软件。 但是,使用包装时,请记住引用该论文。
该包由使用“ package_setup”命令安装在Matlab环境中的几个M代码文件组成。 它提供了通过放置连续的对象来构造复杂的3D场景的功能,这些对象实际上在布局中起到了构建块的作用。
下载flypath3d软件包并将其解压缩到目标目录。 接下来执行配置脚本:
1 | package_setup |
这样,flypath3d就安装好了,可以开始使用它了。
MongoDB是一种NoSQL类型数据库,与关系型数据库相比,它具有很强的灵活性,无需类似Sequelize这样的ORM库,即可直接访问。例如,使用nodejs访问MongoDB:
1 | const { MongoClient } = require("mongodb"); |
尽管MongoDB很灵活,但在设计其数据模型时,为了确保数据组织的一致性,应遵循一下原则:
请参考以下代码:
1 | var departments = await dbConnect.collection("departments").find({}, { |
记录Hexo使用过程的一些经验。
请参考Asset Folders。
请参考Hexo博客Next主题站内搜索模块相关,解决搜索无效、一直loading的问题。
| Hexo 版本 | 最低兼容 Node.js 版本 |
|---|---|
| 6.0+ | 12.13.0 |
| 5.0+ | 10.13.0 |
| 4.1 - 4.2 | 8.10 |
| 4.0 | 8.6 |
| 3.3 - 3.9 | 6.9 |
| 3.2 - 3.3 | 0.12 |
| 3.0 - 3.1 | 0.10 or iojs |
| 0.0.1 - 2.8 | 0.10 |
在使用Vuejs开发的过程中,遇到了一些技术问题,在此记录一下。
作为响应式的开发框架,vuejs组件的data选项中元素将会被修改。vuejs将使用 ES5 的 Object.defineProperty函数修改 data 选项中的元素,使之成为响应式对象。 注意,在保存这些对象时,应该去掉其多余的用于响应的属性,可以采用如下代码:
1 | observeProp=JSON.parse(JSON.stringify(observeProp)) |
注意Array.forEach方法通常情况下不会改变数据元素的值。
vue实例方法:vm.$set、vm.$del、vm.$nextTick等,挂在Vue.prototype上的方法。
全局API: Vue.directive、Vue.filter、Vue.component等,挂在Vue构造函数上的方法。
1 | npm i -D element-theme-dark |
具体请参考:
当前桌面GUI程序开发有很多框架,都有各自的优缺点。结合自身需求,最终选择QT Widgets进行桌面GUI程序开发。
当前QT GUI开发有两种方案,一种是使用QT Widgets技术,另一种是使用QT Quick技术。如果从技术成熟度和开发效率角度考虑,可以考虑采用QT Widgets技术进行传统桌面程序开发。
QT有很多版本,各个版本之间可能不兼容,应根据需求选择合适的版本。常用的QT LTS版本有:
Qt6 在 Win 平台将只支持 Win10 及其以上。嵌入式类应用最好用QT 4.8版本。支持Win XP最好选择QT 5.6.3 版本。
windeployqt是一个用于将Qt部署到Windows的小工具。这个工具可以在 QTDIR/bin/windeployqt下面找到。它需要在命令行环境下使用。
windeployqt以一个.exe或者一个含有.exe的文件夹作为参数。它会扫描可执行文件以寻找这个可执行文件的依赖。如果使用–qmldir选项传递目录,windeployqt会使用qmlimportscanner工具来扫描文件夹中的QML文件以获取QML导入的依赖。被扫描出来的依赖将会被复制到这个可执行文件夹中。
对于Windows桌面应用程序,编译器所需要的运行时文件也会被复制到部署文件夹中。
有时候应用程序可能会需要额外的第三方库(例如,数据库相关的库),这些库不会被windeployqt添加,需要手动添加。
1 | windeployqt musicplayer1.exe |
多人协作开发,需要将别人开发的代码合并。这时使用git patch命令合并是最方便。下面介绍这种方法。
- 什么是patch? 简单来讲,patch中存储的是你对代码的修改
- 什么是生成patch? 生成patch就是记录你对代码的修改并将其保存在patch文件中
- 什么是打patch? 打patch就是将patch文件中对代码的修改,应用到源代码,从而把对代码的修改应用到code中。
1 | $ git format-patch HEAD^ #生成最近的1次commit的patch |
检查patch/diff是否能正常打入:
1 | git apply --check 【path/to/xxx.patch】 |
打入patch/diff:
1 | git apply 【path/to/xxx.patch】 |
TortoiseGit是一个Git版本控制客户端,作为Microsoft Windows的外壳扩展实现。它在GNU通用公共许可协议下作为自由软件发布。使用TortoiseGit 的 Create Patch Serial和 Apply Patch Serial两个菜单可以很方便的产生和应用补丁。