Monthly Read Posts in June 2017

一种头像缓存策略

本来还以为有什么惊天地的策略…这不是很普通的策略嘛…

Move Safety

Read More

Use base::Bind With std::function

base::Bind()base::Callback 可以看作是对标准库 std::bind()std::function 的模拟;因为 chromium 项目早在 C++ 11 正式通过前就已经存在好多年了。

Read More

禁止程序多实例并存并且自动激活第一个实例

多实例检测非常常规,在程序启动时直接检查用来标记的内核对象是否存在即可,一般都是使用 Mutex

麻烦的点在于如何激活第一个实例,显示它的主窗口。

某直播姬一开始的想法是利用 Pipe 建立 IPC 通讯连接,然后后续实例通过发送消息,让主实例 activate 自己的窗口。

Read More

Monthly Read Posts in May 2017

http resumable download

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

Read More

修复 Breakpad 不能启用 Full Minidump

发布分支为 chrome-58 的 google-breakpad 存在无法启用 full minidump 的问题,表现症状是,一旦启用 MiniDumpWithFullMemory 标志,则输出的 dump 文件为 0 字节,但是整个 dump 生成流程没有任何其他异常,相关返回值甚至是 true

Read More

用 FFMpeg 生成视频缩略图

除了可以使用 ffmpeg 压制视频外,还能利用 ffmpeg 生成某个视频的缩略图。

利用命令行:

1
ffmpeg.exe -skip_frame nokey -i "some_video.mp4" -vsync 0 -vframes 9 -c:v mjpeg "output_dir\thumb_%d.jpg"

Read More

Monthly Read Posts in Apr 2017

The Cost of Conditional Moves and Branches

Conditional moves 指令并不一定能提升性能,有时候甚至会导致性能衰减。

Read More