
-
Self-Hosting Aptabase on a Mac Mini - A Troubleshooting Guide
I recently went looking for an analytics tool for an app I’m developing. There are plenty of options out there, but most are either too heavyweight or raise privacy concerns. After some research, Aptabase caught my eye — it’s privacy-first, uses no unique user identifiers, fully complies with GDPR/CCPA, comes with a clean and intuitive dashboard, and offers over 10 SDKs covering most major frameworks. Best of all, it supports self-hosting, so your data stays entirely under your control.
The official self-hosting repository makes it look simple — just clone, tweak a few configs, run
docker compose up -d, and you’re done. But the actual deployment process had quite a few gotchas, and many others in the Issues have run into similar problems. Here’s what I learned, hoping it saves you some trouble. -
在 Mac Mini 上 Self-Host Aptabase 的踩坑记录
最近在为自己开发的 App 寻找数据统计工具。市面上的选择不少,但大部分要么太重,要么在隐私方面让人不太放心。调研了一圈之后,Aptabase 吸引了我的注意 —— 它主打隐私优先,不使用任何用户唯一标识符,完全符合 GDPR、CCPA 等法规要求,而且自带的 Dashboard 简洁直观,提供了超过 10 种 SDK,基本覆盖了主流的开发框架。更重要的是,它支持 Self-Host,数据完全掌握在自己手里。
官方提供了 Self-Hosting 仓库,看起来很简单 ——clone 下来、改改配置、
docker compose up -d就完事了。但实际部署过程中还是踩了不少坑,Issue 里也有很多人遇到了类似的问题。这里把我的经历整理出来,希望能帮到后来人。 -
2022 年读的一些书
最近一年读了不少书和杂志,有电子版也有实体书,收获还是蛮多的,主要偏技术一些,希望 23 年能扩宽一下阅读范围。
技术书籍
技术书籍偏 C++ 以及一些底层的技术,英文为主。 选英文版主要原因有两个吧,一是有些书没有中文版,即便有,翻译的也很晦涩难懂,我倒不怪罪译者的水平,技术书籍确实比较难翻译得平易近人。(打比方说我比较敬仰的 C++ 骨灰级程序员 侯捷老师 的技术水平肯定是一流的,但是翻译的书也是很晦涩,可读性比较..)
- Effective Modern C++

Scott Meyer 著作,每次读都会有新的收获,技术点讲的非常的细,比如关于 std::move 和 universal reference 就花了一章来介绍,各种想不到的 case. C++ 真的是了解的越多,就发现不了解的更多。 建议阅读英文版。
- Effective Modern C++
-
Blog 托管到 Cloudflare Pages
Blog 此前一直是跑在自己的东京服务器上,这个服务器上跑着我的 blog 以及一些自用的服务,因为更新并不频繁,所以直接起了本地的 hexo server,然后 nginx 反向代理一下,当然还反代了其他的几个服务。
但是最近考虑把服务器给退掉,所以 blog 的托管就成了一个问题。简单做了下调研,国内的云厂商基本都有,但是麻烦的是域名和备案。做了一些调研,最终考虑托管到 Cloudflare Pages 上,有以下几个优势:
-
LLVM 工具系列 - Address Sanitizer 实现原理 (2)
上篇文章 「Address Sanitizer 基本原理介绍及案例分析」里我们简单地介绍了一下 Address Sanitizer 基础的工作原理,这里我们再继续深挖一下深层次的原理。
从上篇文章中我们也了解到,对一个内存地址的读 和 写操作:
1
2*address = ...; // 写操作
... = *address; // 读操作 -
C++ Postfix Completion VSCode 插件
元旦假期无聊做了一个 VSCode 的插件,主要功能是对一些常用的场景进行补全,具体介绍可跳转到 GitHub 源码 或者 VSCode 扩展市场 VSCode extension Marketplace 浏览。
使用 case 如下图:
-
C++ Lambda 本质 & 变量捕获
C++ 11 引入 lambda 之后,可以很方便地在 C++ 中使用匿名函数,这篇文章主要聊聊其背后的实现原理以及有反直觉的变量捕获机制。在阅读本文之前,需要读者对 C++ lambda 有一个简单的了解。
C++ Lambda 的函数结构
1
[capture_list](parameter_list) -> return_type {function_body}
其中,capture_list 表示捕获列表,parameter_list 表示函数参数列表,return_type 表示函数返回类型,function_body 表示函数体。下面是一个简单的 Lambda 函数示例,这里定义一个计算面积的名为 area 的 lambda。
