自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 vs code颜色设置

vs code 使用体验不错。但使用dark主题时,高亮相同内容的颜色看不清楚,于是我想修改。但它的颜色设置是通过改json配置实现的,上网上查了下。特此记录。参考vscode颜色配置页面设置方法File->Preferences->Settings,添加下面的设置 "editor.selectionHighlight": true, "workbench.colorCustomizations": { "editorCursor.background"

2020-05-27 14:58:38 123

原创 计算二维空间点到线段距离

计算二维空间点到线距离,如下图,求p1到线段p2p3的距离按行列式计算三角形面积可得Δ=0.5∗∣1x1y11x2y21x3y3∣=0.5∗∣1x1y10x2−x1y2−y10x3−x1y3−y1∣=0.5∗[(x2−x1)∗(y3−y1)−(y2−y1)∗(x3−x1)]\Delta = 0.5*\begin{vmatrix}1 & x_1 & y_1 \\1 & x_2 & y_2 \\1 & x_3 & y_3 \\\end{vmatri

2020-05-10 13:15:46 183

原创 Eigen性能测试

我在代码里使用了 Eigen,发现程序很慢,于是我用性能分析器分析,eigen竟然耗时一半有余。。。而且最耗时的是Eigen::Vector3d对象的创建 / 销毁 / normalize() / 赋值 等最最基本的操作,我感觉眼睛有点发黑。于是赶紧上网查这是怎么回事,网上给出解释,Eigen做了很多检查,在release模式的时候,就不检查了。舒了一大口气。网友同时指出,使用宏 EIGEN...

2020-04-28 08:54:24 233 2

原创 根据角度求椭圆上坐标

计算椭圆上坐标 分两步,求离心角和根据离心角求椭圆上坐标。椭圆方程椭圆方程是x2a2+y2b2=(xa)2+(yb)2=(cos(t))2+(sin(t))2=1\frac{x^2}{a^2} + \frac{y^2}{b^2} = \left(\frac{x}{a}\right)^2+\left(\frac{y}{b}\right)^2=\left(cos\left(t\right)\r...

2020-04-25 11:41:08 584 1

原创 alienware 17r5 重装 win10

我的alienware 17r5 自买上起,无线网速就是龟速。开个网页都费劲,终于受不了。上网查了好多办法,都解决不了。这个本子标榜网速的 killer 网卡,真是让我开了眼界。无奈之下,咨询售后,给出建议,重装系统,不要恢复那种。够彻底。然后我就开始装系统之旅,真真涨知识。alienware 使用 uefi+gpt 的方案,之前我都用的 mbr 。头次用,说下重点步骤以下重点说步骤:...

2020-04-05 00:34:08 197

原创 chromium 设置标签栏字体大小

使用4k屏,网页内容可以放大,但标签栏字体太小。修改方式,打开文件 .config/google-chrome/Default/Preference找到两个项default_fixed_font_size和default_fixed_font_size,修改为自己需要的数值。同时,可以再添加一项minimum_font_size4k屏上,我将默认字体大小设置为24。...

2020-03-20 16:55:42 320

原创 ubuntu 18.04 安装 wine5.0

在linux上,缺少软件是个大问题。只能再次尝试wine。这次不再用apt 安装,apt只提供到1.6,版本太低了。云官网查,稳定版已经更新到5.0了,非稳定版更新到5.4。我决定装稳定版。按官网操作会有问题,到最后一步,会有如下问题,The following packages have unmet dependencies: winehq-stable : Depends: win...

2020-03-19 15:25:04 1342

原创 double commander 添加 到 ubuntu dock 任务栏

double commander 是仿照 total commander 的文件管理神器。而且跨平台。切换回 ubuntu 后,我第一时间装上了double commander。但我无论怎么尝试,都 无法将 double commander 添加到 dock 。尝试了网上的手写 .desktop 文件,能添加到 dock ,但是点击后 double commander 不运行。[Desk...

2020-03-14 11:38:52 68

原创 DoubleCommander设置

一直听说total commander是神器,尝试过,后来没再用。后来要反复操作多个文件夹,于是又尝试total comander,但它是商业软件。在网上找很久,找到了开源软件 double commander,简直是total commander的翻版。于是,果断地使用了total commander。使用上非常相似。但下载的时候注意,有两个版本,一个是正常版本,一个是qt5-dark版。...

2020-03-03 16:33:16 235

原创 cmake 中使用 protobuf 生成文件

protobuf 提供了自动生成文件的功能,我直接看的cmake文件,里面没说函数说明,我没有全部弄明白,但可以正常使用:add_library(myTarget ${src})protobuf_generate( TARGET myTarget EXPORT_MACRO myExports PROTOC_OUT_DIR ${CMAKE_CURRENT_SOURCE_...

2020-02-14 20:28:52 528

原创 解决QtCreator Unable to create a debugging engine

今天用qtcreator,遇到一个神奇的bug上网查看,大多数是说没有安装 windows debugger,这个过程详见 qt5 下载 及 qtcreator集成msvc2017 x64 。但我明确设定了windows debugger (cdb.exe),为什么还是提示这个错误呢?又仔细测试很多遍简单例子 (只有一个main.cpp),终于发现,原来是Kits设错了,见下图qtcre...

2019-11-17 15:08:53 1294

原创 ssh 连接报错:debug1: expecting SSH2_MSG_KEX_ECDH_REPLY

今天在笔记本上配置项目。但ssh key怎么也连不上使用ssh -vT git@git.github.com找到了错误debug1: expecting SSH2_MSG_KEX_ECDH_REPLY网上有两种解决方案修改MTU,改小数值,尝试后无效偶然发现一个帖子,修改/etc/ssh/ssh_config,试验有效解决办法:按如下内容,修改/etc/ssh/ssh_conf...

2019-10-27 16:36:16 322

原创 cmake qt5

项目使用cmake构建,用到了qt5,这里记录下。qt5的cmake配置脚本cmake_policy(VERSION 3.9)project(Demo VERSION 0.1)cmake_minimum_required(VERSION 3.9)set(CMAKE_CXX_STANDARD 11)set(CMAKE_INCLUDE_CURRENT_DIR ON)set(CMAKE...

2019-09-27 21:43:51 158

转载 CMake 默认编译、链接选项

CMake 默认编译、链接选项转自链接cmake_minimum_required(VERSION 3.2)message(STATUS "CMAKE_C_FLAGS = " ${CMAKE_C_FLAGS})message(STATUS "CMAKE_C_FLAGS_DEBUG = " ${CMAKE_C_FLAGS_DEBUG})message(STATUS "CMAKE_C_FL...

2019-09-19 22:10:05 817

原创 VTK 二维字体渲染

最近乃至了VTK,去官网下载了最新的realse 8.2.0。编译成功后,开始写实现代码,参考网上的实现得到以下代码 double pts[][3] = {{0,0,0}, {1,0,0}, {0,1,0}}; vtkSmartPointer<vtkPoints> points = vtkPoints::New(); vtkSmartPointer<vt...

2019-08-01 22:18:34 217

原创 坐标系转换

今天一项工作要处理坐标变换,简单研究了下,原理如下:图中,世界坐标系是(X,Y,Z)(X, Y, Z)(X,Y,Z),局部坐标系是(X′,Y′,Z′)(X', Y', Z')(X′,Y′,Z′),局部坐标系原点O′O'O′。要转换的点是PPP。OP=x∗i+y∗j+z∗kOO′=a∗i+b∗j+c∗kOP =x*i+...

2019-07-23 16:32:41 60

原创 vs2017 编译 assimp x64

工作中,需要用到assimp,之前编译过的。但这次换vs2017编译assimp x64后,出现问题。BlendDNA: Did not find a field named `flags` in structure上网查了很久,就是一句,换新新版本。然后我上assimp官网,最新的是assimp 4.1.0,我用的就是4.1.0,还以为是库停更了。赶紧上github上搜下,发现库在持...

2019-07-09 17:07:44 908

原创 vs2017 编译 ogre x64

在windows上要用ogre。之前是vs2015版本,编译好的,直接用了。这次上官网看只有vs2017_x64版本的,下载试用,发现建立 Ogre::Root的时候就错了。只能自己编译了。我编译的是ogre 1.10.11 版本。ogre 经常修改 API,如果某个版本代码工作正常,最好不要换版本,否则要修改非常久。。。说下编译的坑:坑一:编译x64版本的不要让ogre自动下载依...

2019-07-09 17:02:27 604

原创 C++嵌套类使用注意事项

想在代码里通过嵌套类作为迭代器,访问外层类的数据。主要是为了避免在头文件中包含STL头文件,编译时间伤不起然后出现了神奇的bug,简化后代码如下:class A {public: class B { public: explicit B(void):idx(3){} B(const B&b) { idx = ...

2019-06-04 21:43:50 544

原创 git 配置多个ssh key

最近多个项目需要为不同的git配置不同的ssh key。以添加多个github的ssh key为例。创建多个ssh key创建一个ssh key$ ssh-keygen -t rsa -C "2email@github.com” -f ~/.ssh/id_rsa_personal创建第二个ssh key,命令相同,但有一点不同$ ssh-keygen -t rsa -C "1emai...

2019-05-21 19:44:15 183

转载 C++ 测试驱动开发

看到一篇非常好的C++测试驱动开发文章,这里转载下。测试驱动开发(TDD)背景及综述测试驱动开发是 Kent 提出的一种新的软件开发流程,现在已广为人知,这种开发方法依赖于极短重复的开发周期,面对开发需求,开发人员要先开发代码测试用例,这些代码实现的测试用例定义了工程要实现的需求,然后去开发代码快速测试通过这这些用例,这个时候的代码是相对比较粗糙的,只是为了通过这个测试,测试通过以后,这些测试...

2019-05-18 09:10:27 228

原创 CMAKE_MODULE_PATH 与 CMAKE_PREFIX_PATH

两个cmake参数很像,查看了官方文档CMAKE_PREFIX_PATH是以分号分隔的列表,供find_package(), find_program(), find_library(), find_file()和find_path()使用,初始为空,由用户设定CMAKE_PREFIX_PATH 官方链接CMAKE_MODULE_PATH是以分号分隔的列表,供include()或 find_...

2019-05-15 18:12:50 3967

原创 cmake+gtest

项目中想用google test,项目也是用cmake管理的。于是想用cmake 添加gtestset(CMAKE_PREFIX_PATH "/path/to/gtest/install/path/cmake/path" ${CMAKE_PREFIX_PATH}) enable_testing() set(GTEST_ROOT "/path/to/gtest...

2019-05-15 18:08:05 2558

原创 boost.log遇到问题及解决办法

尝试将 Boost.log v2 集成到代码里,在win10+vs2017. 编译 x64版本。c2672问题测试代码如下:#include <boost/thread/mutex.hpp>#include <boost/core/null_deleter.hpp>#include <boost/log/common.hpp>#include &lt...

2019-05-14 22:28:30 380

原创 boost LNK2005 重定义错误

开发的库使用了boost库,然后出现如下错误:libboost_system-vc141-mt-gd-x64-1_68.lib(error_code.obj) : error LNK2005: "class boost::system::error_category const & __cdecl boost::system::detail::generic_category_ncx(v...

2019-05-14 16:19:34 647

原创 vs2017 编译 动态 x64 boost

下载Boost我下载了最新的1.70版本解压到英文目录${path},最好路径中也没有空格生成编译项目从“开始菜单”中,找到适用于vs2017 的x64本机命令工具进入到````${path}```执行bootstrap.bat配置编译参数打开project-config.jam文件,设定vs2017的toolset,其中的cl.exe目录应该是固定的。注意vs2015的V...

2019-05-14 14:18:37 341

原创 boost.log教程:设计介绍

boost的设计图如下:这个图流程比较清晰,但数据细节上不够,我重新画了一个Boost.log设计与log4j相似:用Logger输入数据,输入的数据配合设置的属性即为log recordLog record经过过滤和format到达最终的sink,输出到console/文件等位置Logger和sink不绑定,数据输入后完全根据规则经logging core分配到对应的sink...

2019-05-13 12:37:42 252

原创 boost.log教程:formatting

常用formatting默认不设置formatter,所有添加的attribut都不会在log record中出现添加时间戳的formatingvoid init(){ logging::add_file_log // 等价于设置了file_sink,也可以手工分别建frontend_sink和backen_sink ( keywords::file_na...

2019-05-13 11:33:35 535

原创 boost.log教程:filter

filterfileter添加条件BOOST_LOG_ATTRIBUTE_KEYWORD(line_id, "LineID", unsigned int)BOOST_LOG_ATTRIBUTE_KEYWORD(severity, "Severity", severity_level)BOOST_LOG_ATTRIBUTE_KEYWORD(tag_attr, "Tag", std::stri...

2019-05-13 11:26:14 237

原创 boost.log教程:core facilities

Logging recordslogging record中的所有信息,包括message text,都会被filters, formatters 和 sinks处理。logging record特性:不能复制,只能被移动boost::move()。它由logging core在filter之后创建,此时内容为空,随后attribute value会由attribute生成并添加到log ...

2019-05-13 11:23:44 219

原创 boost.log 教程:sink

直接使用trivial logging 很多时候无法满足需求,比如有时想定义些特定的标签,写到特定的文件,这时就要用到sink。sink应该只在应用程序的开始设置如果没有设定sink,系统会生成默认的,是输出到console,但如果用户自己指定了,那么默认的sink不再生效使用file sink简单示例:void init(){ logging::add_file_lo...

2019-05-12 15:42:27 716

原创 boost.log教程:loggers

logger是用户接触最多的类可分为无保护和线程安全两类,线程安全的以_mt结尾logger有窄字符和宽字符的,宽字符的以w开头,如wlogger_mtlogger类可复制,可创建的,可作为自定义类的成员boost.log提供多种logger,参见网页直接使用如下即可:#include <boost/log/trivial.hpp>int main(int, ch...

2019-05-12 10:36:05 776

原创 Boost.log 教程:attribute

attribute说明:attribute是函数,attribute_value是attribute产生的值,如TimeStamp可用于之后的filtering和formatting分global、thread-specified和logger-specified 3类,第一类最常用所有已有值都在attrs::xxx可使用logging::add_common_attributes(...

2019-05-11 23:41:18 315

原创 C++ 部分warning的解决办法

C++的warning可以不管理,但遇到极特殊的情况,可能会出bug,比如double转int。本贴记录一些C++ warning的解决办法Deprecated implicitely-declared copy constructor如果定义了析构函数,那么会提示此warning,提供复制构造函数可解决此问题。解决办法:class A{public: A(){} A(cons...

2019-05-07 16:04:51 439

原创 CMAKE 变量管理

变量分类CMake的变量有其作用域,分全局作用域和局部作用域。局部作用域变化:1.在切换目录(即CMakeLists.txt变化)2.调用函数时变化3.macro不改变作用域。局部变量设置变量set(<variable> <value>... [PARENT_SCOPE])如set(<var "ABC" PARENT_SCOPE) # PAREN...

2019-05-05 15:59:57 1588

原创 CMAKE_INSTALL_PREFIX无效的解决方案

今天写一段cmake脚本,使用了变量CMAKE_INSTALL_PREFIX,命令如下:SET(CMAKE_INSTALL_PREFIX <path> )但无论怎么调整这行代码的位置,就是不好使,CMAKE_INSTALL_PREFIX还是指向默认目录。于是google查找,最终找到了解决方案帖子大致意思:直接使用set命令,访问的变量是基于PROJECT命令,这样的变量可能...

2019-05-02 14:24:10 3066

原创 qt5 下载 及 qtcreator集成msvc2017 x64

下载qt 5.12路径下载 qtcreator路径qt release路径

2019-04-26 19:19:44 2125

转载 在uml中表示signal和event

原因工作中要表达复杂的signal/slot关系,想用uml表达,于是在网上找。中文没找到,google后找到的帖子,大意如下:同步的当函数调用处理异步的最好单独设计signal类表示原文链接原文EventsAn event is the specification of a significant occurrence that has a location in time ...

2019-03-13 10:21:19 755

原创 visual studio code 输出到“调试控制台”而不是“终端”

visual studio code每次debug,默认会显示“终端窗口”,但终端窗口会添加很多附属信息,比如启动的程序、参数等等。但visual studio code的“调试控制台”就很好,每次只显示本次调试的结果。经过上网查找及尝试,最终发现了解决办法,在launch.json中对应配置中,添加一行:"console":"none"“console”的值选项包括:选项输...

2019-03-06 09:50:22 38022 25

转载 rapidjson使用事项

深度复制值Document d;v2.CopyFrom(d, a); // 把整个document复制至v2,d不变rapidjson为了最大化性能,大量使用了浅拷贝,使用之前一定要了解清楚。如果采用了浅拷贝,特别要注意局部对象的使用,以防止对象已被析构了,却还在被使用。输出rapidjson解析错误信息#include "rapidjson/document.h"#include...

2018-11-14 10:34:53 1834

提示
确定要删除当前文章?
取消 删除