http resumable download

虽然之前写直播姬自动更新时实现过续传下载,但是功能规范上并没有太完备;而这篇文章很好的补充了几个断点续传中,严格实现会遇到的几个 key points。

例如:不应当假设资源一定支持续传,要首先使用 request header range 检查目标资源是否支持续传,支持 range 的 http resonse code 是 206。

另外,两次断点下载期间,资源可能发生变化,需要在请求时同时附带上 EtagLast-modified 记录,由服务器确定资源是否变化。

Why Exceptions Should be Exceptional

文章从性能角度阐述了为什么不能将 exception 机制作为 routine control flow。

但是个人认为这个切入角度不好,因为很容易给人一种异常机制开销大的错觉,导致读者之后避开使用异常。

异常处理一直都是一个大麻烦,相比 error code handling 不够直观,没有足够的经验很难控制好,加上某些语言自身特性导致固有复杂度暴涨(例如 C++)。

shared-ptr

文章大部分的内容(除了 aliasing)其实 Effective Modern C++ 里都有…

Magical Captureless Lambdas

核心总结出来就是一句话:Captureless lambdas 能够自动转换为对应的 C-Style 函数指针,而在 MSVC 里,implicit cast 能够自动处理不同的 calling convention

Leaky Closures Captureless Lambdas

An entity that is mentioned or used but is not ODR-used within the lambda body, does not need to be captured in the capture list.

Informally, an object is odr-used if its address is taken, or a reference is bound to it.

Lambdas Callbacks

又名:如何用 capturing lambdas 作为 c-style callbacks

Combining Static and Dynamic Polymorphism with C++ Template Mixins
C++ Mixins - Reuse through inheritance is good when done the right way

Mixins pattern in C++ 快速导读

The Very Real Mess of Virtual Functions

十足标题党

并且个人认为,作者试图解决一个前提错误的问题。

文中以 Init()UnInit() 为例阐述观点,然而,这正好说明了为什么如无必要不应该使用 two-phase initialization

文中试图实现的机制不就是 ctor 和 dtor 所做的么……

而对于其他可能需要子类调用父类虚函数的场景,我认为,non-vitual-interface idiom已经足够了。

BTW:就工程领域而言,可能对 GUI 框架来说,文中的一些套路还是有用的;不过因为个人在这方面没有什么经验,因此持保留意见