摘要:
intro 在github上找到一个挺好的source insight配色,看文章的意图是模仿sublime主题。 dark mode看起来还不错,但是加载之后会发现中文注释看不到,但是能够正确的拷贝出来,所以应该是source insight编码处理没有问题,而是由于配色和背景相同之类的原因导致的 阅读全文
摘要:
intro docker这个命令行工具本身通常是接触容器的第一关:示例中一般会使用docker来制作(build)镜像/运行(run)容器。但是docker这个可执行程序本身并没有太复杂的逻辑,它更多的是提供了一个类似于bash这种和人类用户更友好的命令/子命令,真正的workhorse是docke 阅读全文
摘要:
intro 由于每次vim都启动一个ycmd服务进程,并且端口地址是由vim客户端指定的(因为ycmd启动之后vim客户端需要连接过去),所以vim在指定端口的时候就需要给出一个当前没有使用中的端口。 那么如何获得一个未使用的端口呢? tsecer@harry: ps aux | fgrep ycm 阅读全文
摘要:
Intro UE的大部分content资产都放在了.PAK文件中,为了避免资产被破解,最好对文件进行加密。由于pak文件在运行时需要解密,所以运行时必然需要知道明文密码。或许是出于效率考虑,Unreal使用的是AES这种对称加密,也就是加密和解密使用的是相同的key。 如果把密码以明文的形式存储在文 阅读全文
摘要:
观察 为了让庞大代码库看起来更简洁一些,UE使用了不少C/C++黑魔法:宏。把一些重复或者繁琐的实现细节隐藏在了宏里面(例如最为常见且繁琐的GENERATED_BODY宏),尽管代码看起来更简洁,但也隐藏了一些(重要的)细节。 在看UE插件实现时,意外的看到IMPLEMENT_MODULE宏定义中, 阅读全文
摘要:
问题 尽管VS Code提供了在windows下通过ssh访问linux机器的各种便利,但是使用vim在linux环境下开发可以方便的使用从Unix系统中继承的强大工具集(例如grep命令),并且构建、部署也更加方便。加上vim丝滑的操作流,使得linux环境下vim开发依然有着很大的吸引力。 但是 阅读全文
摘要:
closure lexical scope 这篇文章虽然不长,但是厘清了一些基本的概念: 闭包的直观效果就是可以捕捉所在环境中的变量。 Closures are special functions that can capture the environment, i.e. variables wi 阅读全文
摘要:
问题 在UE的代码中,经常可以看到对于父类类型的引用,因为很多情况下都要先调用父类的同名函数。例如随便看下UE的部分代码,在实现自己序列化函数的时候先调用基类的序列化函数。 但是,尽管Super是一个非常顺数的功能(在行为树库behaviac数中也有super定义),但是C++并没有实现这种功能。这 阅读全文
摘要:
问题 C++的异常处理看起来是一个比较神奇的功能,能够在运行时穿越堆栈,从异常发生位置直达异常处理位置。通过gcc的代码可以看到,这个堆栈回溯的一个关键步骤是这个宏,其中又使用了gcc的内置指令__builtin_eh_return。网上关于__builtin_eh_return这个内置函数的资料较 阅读全文
摘要:
future/promise future提供了一个基于数据(future模板类型)的异步概念:对于一个类型T,可以在以后通过get接口获得这个类型T的变量。或者打个不太恰当的比方,当你获得一个future对象时,就获得了一个消费券(consumer):拿着这张券可以兑换(get)一个T类型的结果( 阅读全文