Fix 使用 GDB 调试 Clang 编译的程序时标准库类型始终显示 incomplete type

现象描述

系统是 Linux mint 18,其实就是 ubuntu 16.04 LTS,所用的 clang 版本是 apt 默认的 3.8;gdb 使用系统自带。

Read More

Monthly Read Posts in Aug 2017

How to Feel Progress

一篇讲述如何自我管理的 post

核心内容大概就是:

  • Making progress in meaningful work.

Read More

Controlled Type Injection in C++

之前实现 kbase 的 ENSURE 宏支持如下用法

1
2
3
4
5
// Throw a std::runtime_error when condition is violated.
ENSURE(RAISE, cond)(var).Require();

// Throw a MyException when condition is violated.
ENSURE(RAISE, cond)(var).Require<MyException>();

Read More

GetEnvironmentVariable, API 设计的反面教材

本次 post 的主角 GetEnvironmentVariableW() 用于获取某个环境变量的值,它的文档可以参见这里,看的时候记得仔细研究一下返回值细节。

Read More

Monthly Read Posts in June 2017

Starting a tech startup with C++

又名,Facebook 开源项目宣传广告。

不过实话说,以 Facebook 写 C++ 那部分代码的恣意姿态,如果团队的平均水平够不到中上的槛,弄不好项目还没发布自己就先挂了。

Read More

利用 Job 内核对象实现父进程关闭时自动结束所有子进程

投稿工具的压制功能一直来都有一个问题:如果主进程被强行结束了(例如利用任务管理器),那么创建的 ffmpeg 压制进程仍然会继续运行。

因为 ffmpeg 是以二进制的方式部署的,因此不存在修改它的代码,自己和主进程建立 IPC 监控的方式。

至于采用远线程注入的方式来强行 HACK,我一直对这种无视客观规律的霸道方式都不太感冒,毕竟我们又不是做安全软件。

Read More

Send Specific Cookie in URLFetcher

使用 URLFetcher 作为网络请求的基础组件有一个优势:如果 server 的 response header 指明了 set-cookie,那么 URLFetcher 在发出下一个请求时会自动往 request header 中设置 cookie。

Read More