C++ is fine, it's you that suck

这篇主要内容是吐槽,干货不多。

曾经我以为只要是我设计的代码结构里,基本不会碰到需要 multiple inheritance 的情况,更不用说需要 virtual inheritance,结果没想到这周就被啪啪啪打脸了。

起因在于我要为底层的 obs properties 体系设计一个 wrapper,为上层提供类似的等价物。

Read More

在 Windows 10 上获取正确的系统版本

大约从 Windows 8 开始,微软开始觉得大家之前那种不同系统版本给不同的代码的方式太不和谐了,怎么可以搞 discrimination 呢?要和谐,要有爱!于是把常用的 GetVersionEx() 给标记成了 deprecated,并且建议大家使用另外一套更加政治正确的 version verification API。

Read More

闲扯 KAdBlockEngine

几天前给 KAdBlockEngine 加上了 README 之后,这个 repo 算是正式的结了。

对别人来说,这只是一个很普通的 repo;但是对我而言,却意义重大。

Read More

避免在类设计上混合 Owner 及 View 语义

这个论断来自于前段时间重构 pickle 时的想法。

The Big Picture

Pickle 是一个二进制序列化设施,内部维护一块 buffer 用以保存被序列化的二进制数据,语义上看,一个 Pickle 对象对内部 buffer 具有无争议的 resource owner 语义。

Read More

Wicked Data Type Promotion

昨天在给 KAdBlockEngineAdFilter 加上序列化/反序列化的支持时,意外的又一次被 data type promotion 坑了,导致一晚上的时间都在 debug…

Read More

Template Type Constraints And Type Traits

模板参数类型约束在 C++ 中一直以来大概得算不上不下的一个处境。

因为非运行时(编译期)的优势,对于参数类型约束的需求不像 C# 那样紧迫;但是同时又因为实例化完成的时期过早,编译器对于模板代码的处理并不能上升到一个精确的语义层次,导致的后果就是模板相关的代码的出错信息一直在井喷,而且相当一部分的错误信息完全没有卵用。

Read More

为什么我反对使用 git flow

如果论知名度,git flow 绝对是现在数一数二的 git 协作模型。甚至直到不久之前,我也在用这个模型作为我在 github 上的几个项目的工作流。

Read More