Blog | zi's Blog
OpenFreeMap:一个把地图瓦片托管做轻的开源项目

OpenFreeMap 是一个基于 OpenStreetMap 数据的开源地图托管项目,提供免费公共实例、可自托管的生产配置和每周更新的全球矢量瓦片下载。本文从使用方式、技术设计、适用场景和限制几个角度介绍它。

VSCode 生成中文 Git 提交信息

VSCode 里用 GitHub Copilot 生成 commit message 很方便,但默认结果经常中英文混杂、格式不稳定。本文记录一套我在项目中使用的中文提交信息配置,让自动生成内容更统一、更适合中文团队协作。

Radiant:一个开源 Shader 素材站

最近看到有人推荐 **Radiant**,点进去之后会发现,这不是一个单纯拿来欣赏的 shader 展示站,而是一个更偏实用的视觉效果素材库。

PE 签名的"盲区":如何合法嵌入自定义数据

在 Windows 平台上,数字签名是验证软件可信度的重要机制。然而,在某些场景下,开发者需要向已签名的 PE 文件中嵌入额外信息(如配置数据、版本标识等),同时又不能破坏原有的数...

FFmpeg 播放器音画同步与 Seek 策略深度解析

FFmpeg 播放器音画同步与 Seek 策略深度解析

自动定时刷新页面 bookmarklet

这是在我开发中遇到的一个问题,在测试环境中,我需要从外部系统的一个接口定时抓取数据,这个系统需要登录才能访问,登陆后如果一定时间没有操作则会自动退出登陆状态。为此,我需要一个简单的...

MicroBin - 让分享更简单

高效的文件分享工具至关重要。今天,我想向大家推荐一个出色的在线文件分享工具 —— **Microbin**。

FFmpeg 7 在 Windows 7 上不能运行的问题

我们的项目中 FFmpeg 升级到了版本 7.0,结果有用户反馈在 Windows7 系统上出现访问错误(0xc0000005)。

从 Blob URL 到自适应流媒体

在线流媒体技术演进:从 Blob URL 到自适应流媒体

在 WinMain 中获取 argv, argc

在 Windows 桌面程序开发中,一般的程序入口是 _tWinMain

C++ directory iterator 异常处理

C++ 标准库 遍历文件夹时偶尔出现异常

新 VPS 服务器配置指南:从零搭建高性能安全环境

搞了这么多年开发,我发现很多人拿到新 VPS 后都是一顿瞎操作,要么安全性不够,要么性能太差。其实配置服务器也是有套路的,掌握了这套流程后,基本上 10 分钟就能搞定一台生产级服务...

现代 C++ 进化论:构建支持动态参数的自动注册工厂

在传统的 C++ 开发中,对象工厂模式往往伴随着臃肿的 switch-case 语句。每当新增一个派生类,开发者就不得不修改工厂源码。本文将带你利用 C++11 的高级特性——变长...

C++ Throttle 的一个简单的实现

说到 Throttle,在网页前端中运用得较多,比如页面滚动、即时搜索的输入事件,这类事件触发非常频繁,如果每次都进行业务操作,消耗会非常大。这时采用 Throttle 进行限流,...

自定义 html range 控件样式

当将 HTML input 元素的 type 定义成 range 时,其形式类似 Windows 的 Trackbar,或者俗称 Slider,一般是这个样子:

使用 Cloudflare Worker 实现访问统计

最近在装修博客页面过程中,想在页面上放类似 Github 项目上流行的 Badge,显示页面访问量。由于站点采用的 Nextjs + Vercel 的静态博客方案,一般来说需要使用...

std::async 为什么阻塞

在桌面开发中,有时希望能减少某些 IO 操作对界面造成的影响,此前常用的办法是创建一个线程:

WS_POPUP 最大化如何不遮挡任务栏

在桌面开发时,我们有时会创建样式为 的窗口,然后自绘标题栏。当窗口最大化时,会覆盖整个屏幕,盖住了任务栏,这通常不是我们想要的效果。

现代 C++ 进化论:利用宏+元组实现全自动静态反射

我在项目中遇到一个经典问题:需要将 C++ 结构体自动序列化为 JSON。我记得当时查了半天资料,发现 Java 和 C# 中这简直就是一行代码的事,但 C++ 却需要手动编写每个...

C++面试题基础:高频考题深度解析

最近我帮几个朋友准备C++面试,发现很多题目都是反复出现的经典问题。我整理了一份包含33道高频面试题的完整解析,希望能帮到正在准备面试的你。