2020年7月15日
今日开始是税期,流动性开始紧张,同事说这两天央行就会放水。
2020年7月17日
除了大办公室,旁边的两个小房间,一个是交易室,另一个是结算室。交易室做交易拿出来成交单,然后将成交单交给结算室,结算室拿出来审批单、划款单等交给运营管理部做审批和划账。
今天银保监突然接管6家保险公司,办公室里突然说那些二级资本债完蛋了。主要是因为一旦被接管,他们的债就会没人要,就很难出手了。
去Google Test的Github下载最新的Release的zip。解压。
打开Developer Prompt For VS 2019,cd进解压出来的文件夹(见上图)里的googletest子目录,执行:
1 | cmake . |
会自动侦测出是在VS环境,生成sln文件。打开sln。
gtest实际上就两个lib文件,一个用于Debug,一个用于Release。打开sln之后,下图里的Debug生成一次,改成Release再生成一次:
这个神秘的bug从VS2012开始到2019都还有。其他可能的后果不知道,但是会直接导致加载解决方案的时候之前打开的标签页显示错误。按照Stack Overflow的Tim Hall的解决办法,先关掉VS,把解决方案根目录下的.vs文件夹内的.suo文件删掉,再打开解决方案,就不会报错了。
抛弃以前的键盘的原因:服役了很久的罗技键鼠套装,甚至鼠标都不知道飞到哪里去了。服役年龄长带来的问题:
所以看知乎的建议,买了个达尔优的87键茶轴。初步体验感觉不错:
总而言之,109块买到一个这样的键盘,确实是小确幸。
auto是复制,auto*是指针,auto&是引用。该写*就写,不能偷懒。
copy-and-swap是为了赋值操作符和move构造器能够更优雅(而且稳定)地完成工作而出现的。**Rule Of Three**要求自己定义的类如果提供了以下其中之一,就要提供全部:
C++11就成了**Rule Of Five**:
废话不多说,直接写比较成熟的方案,来自于Stack Overflow:
1 | class AClass{ |
核心就是这个swap方法,用到了ADL——为了满足ADL所以要写成friend,更深入的原因看这个。
有了swap之后,就可以把移动构造器写成这样:
1 | AClass::AClass(AClass&& another) noexcept : AClass() { |
需要调用默认构造器来先把this给设置好,再swap。
clangd最大的特点是需要一个json格式的compilation database,通过这个文件才能让其他的lint、智能补全之类的功能正常运作。关于如何生成“compilation_database.json”,官方有针对不同的build工具对应的文档。
类似CMake这类的高级工具自然是不需要其他插件,它内置了这个功能。对于其他类型的构建工具,比如Makefile,就要借助额外的工具来生成这个文件了。
这里使用的是scan-build工具来辅助,这东西是用python来写的,所以要用pip安装:
1 | pip install scan-build |
而调用的命令的名字是intercept-build,结合make的调用方法是:
1 | intercept-build make |
其实就是在正常的make命令前面加个intercept-build就可以了。
今天用linux下的vscode,通过gdb和lldb做debug,在单点调试的时候总是会在new一个对象的时候报错,表示找不到libstdc+±v3之类的文件在哪,没法debug。解决这个问题的办法之一是把/usr/lib/libstdc++.so.6的debug symbol给strip了,debug的时候就不会尝试去解析标准库了,问题就解决。
由于strip会导致很多应用崩掉,所以建议在tty下面做这个:
1 | sudo strip /usr/lib/libstdc++.so.6 |
解决方案来源于stackexchange。第二种方法没有成功,不知为何。
不要想着骚操作。基本参考维基教科书:CMake入门。然而因为这个教科书已经停止更新了,所以参考CMake官方网站的教程CMake Tutorial。
天才第一步,“Hello world”。写一个输出hello world的main.cc
(这里用的是谷歌代码规范的命名规则)。然后同目录放一个包含以下内容的CMakeLists.txt:
1 | # 指示要求的cmake最低版本 |
1 | ./ |
warning
在这个目录下 cmake .
,cmake就会输出一个包含makefile的build文件夹,在build文件夹里make,就会输出可执行文件helloworld。这种叫做In-source build(虽然实际上已经有点out-source的感觉了)。
不建议直接 cmake .
,这样会导致与源代码无关的编译文件污染源代码目录。无论什么时候都应该新建目录用于编译。
为了不污染源代码,应该新建build目录再编译。
1 | ./ |
今天想看看markdown怎么实现在页面内跳来跳去。虽然是没有onenote那么方便可以在不同笔记本之间跳来跳去,但是页面内跳转也是很切实的需要。
其实这是基于html的特性,来源于stackoverflow。首先要用a标签来设置一个anchor(锚点):
1 | <a name="后面要用到的名字">可能是一些要显示的文字</a> |
然后就可以在后文中使用markdown语法来跳回来了:
1 | [回到上边](#后面要用到的名字) |
评论里说用id=也可以,尽可以试试。