编译期判断是否存在某个成员函数

之前在某篇文章描述了一个实际上不是那么好用的检查某个模板类型参数是否存在某个函数的方法。

这次会介绍一个相对有用的,在编译期检查某个类是否存在给定成员函数的做法,并且可以根据检查的结果执行不同的代码。

Read More

自动开始安装 Inno Setup 打包的安装程序

有时候我们希望用户执行安装程序后,跳过路径选择等一系列确认,自动开始安装,已尽可能减少等待时间。

最明显的例子就是,用户在已经安装程序的情况下,下载了新版的安装包,需要执行更新操作。因为安装路径、设置选项等信息早在用户首次安装时就已经确定,升级安装过程中完全可以跳过。

某科学的直播姬在加入自动更新功能的同时,就需要安装包具备上述能力。

Read More

自动将 non-capturing lambda 转换为函数指针

在开发某科学的直播姬的过程中,经常需要在 obs-studio 处理源之后紧接着做一些事情,例如针对大图片源做自动放缩等。

obs-studio 采用一个专有的 graphics rendering thread 来渲染各种 visualizable sources,并且允许你根据需求,注册各种底层源操作事件的回调函数(obs-studio 自己称之为 signal handler)。

Read More

Monthly Read Posts in Dec 2016

C++ Performance: Common Wisdoms and Common “Wisdoms”

The post discusses some oftenly-argued performance related aspects of C++.

Read More

利用 chromium net 库的 URLRequest 实现支持断点续传的 URLDownloader

最近因为要实现某直播姬的自动更新功能,于是就要求客户端能够自动下载安装包,所以就要实现一个简单的支持续传的下载功能。

因为用了 chromium 的框架,所以自然是基于 chromium net lib 去实现;稍微翻了一下源码目录,最后决定在 net::URLRequest 的基础上自己封装一个 URLDownloader

Read More

Monthly Read Posts in Nov 2016

Stack Frame Layout on X86-64

Main observations

Read More

避免使用 breakpad 时调试模式下某些错误跳过调试器自动引发崩溃处理

现象

某个小朋友(虽然和我同年同届…)写代码时不注意,出现未知错误,但是即使调试器启用所有断点选项,也并没有断在出现错误的地方,而是直接进入了我写的 crash handler。

Read More