文章归档
按时间归档的全部文章。
国内服务器如何通过 Cloudflare Worker 实现 Google 登录
以我开源的 google-oauth-relay 为例,介绍国内服务器如何通过 Cloudflare Worker 中转 Google 登录所需的后端请求。
Nginx Proxy Manager 可视化配置 Nginx:搭配 Dozzle 和 NginxPulse 查看日志
基于 Docker Compose 部署 Nginx Proxy Manager、Dozzle 和 NginxPulse,使用 NPM 网页界面可视化配置 Nginx,并分别查看 Docker 日志和 Nginx 访问日志。
IndexNow 是什么?Next.js 博客接入搜索引擎主动推送
介绍 IndexNow 的工作原理、适用场景,以及如何在 Next.js 与 Vercel 部署流程中自动提交站点 URL,加快搜索引擎发现新内容。
使用 QStash 实现 FCM 定时推送通知
介绍如何使用 QStash 延时消息能力为 Firebase Cloud Messaging 实现定时推送通知,适用于 Cloudflare Workers、Vercel、Node.js 等 Serverless 场景。
利用 Cloudflare Worker 保持 Supabase 一直处于活跃状态
介绍如何使用 Cloudflare Workers 和 Cron Triggers 定时访问 Supabase,避免免费项目在低流量阶段进入自动暂停状态。
Next.js 16 中优雅地使用 SVG
在 Next.js 16 中用 @svgr/webpack 将 SVG 作为 React 组件导入,并掌握尺寸、颜色以及 mask / defs ID 冲突的处理方式。
Flutter Dio 并发请求 Token 刷新处理方案
介绍 Flutter 使用 Dio 时,如何在高并发请求下只触发一次 Token 刷新,并通过 Completer 挂起等待中的请求队列。
用 Cloudflare Workers 搭建 FCM 推送中转服务
介绍如何借助 Cloudflare Workers 与 Hono 搭建可用的 FCM 推送中转服务,并通过 OAuth 鉴权与 KV 缓存提升部署效率和可用性。
Zustand + IndexedDB 实战:打造可离线的前端状态管理
介绍如何使用 Zustand 结合 IndexedDB 实现可离线的前端状态管理,兼顾数据持久化能力与用户体验。
不用额外 State:Tailwind CSS 实现可编辑标题
使用 Tailwind CSS 的交互能力实现无额外状态管理的可编辑标题,减少前端状态冗余并提升交互体验。
博客迁移实录:从 Hugo 到 Next.js + Tailwind CSS
记录博客从 Hugo 迁移到 Next.js 与 Tailwind CSS 的原因、实施步骤,以及部署和发布链路中的实际取舍。
Koa 跨域 Set-Cookie 不生效?CORS 场景排查与解决
分析 Koa 在跨域场景下 Set-Cookie 不生效的常见原因,并给出浏览器、服务端与代理层的完整排查思路。
Flutter App CI/CD 实战:用 GitHub Actions 自动构建与发布
结合 GitHub Actions 打造 Flutter 应用的自动构建、签名与分发流程,减少手动发布成本并提升交付效率。
Vue 3 自定义指令实战:封装通用 v-loading
通过 Vue 3 自定义指令实现通用 v-loading 效果,提升页面交互一致性和业务复用效率。
用 Docker 部署 MinIO:搭建自己的对象存储服务
使用 Docker 部署单机版 MinIO,并结合预签名上传接口实现更灵活的对象存储能力,适合图片与文件上传场景。
移动端适配方案对比:REM 和 VW 到底怎么选
对比移动端常见的 REM 与 VW 适配方案,梳理核心原理、优缺点与适用场景,帮助你根据项目特点做选择。
Flutter Deeplink 接入实战:从链接直达 App 页面
介绍 Flutter 中 Deeplink 的接入方式、路由处理流程,以及从链接唤起 App 并跳转指定页面的关键细节。
Flutter Dio 封装实践:统一请求、解析与错误处理
总结一套更清晰的 Flutter Dio 封装方式,让请求、数据解析和错误处理保持统一,便于团队维护与扩展。
FCM 迁移 HTTP v1 API:鉴权、发送与避坑
记录 Firebase Cloud Messaging 从旧版接口迁移到 HTTP v1 API 的关键步骤、鉴权方式,以及迁移过程中常见的报错与处理方式。
Vite + React + TypeScript 实战:从零搭建组件库
记录使用 Vite、React、TypeScript 与 Tailwind CSS 构建组件库的流程与打包要点,适合搭建可发布的前端组件库。
Chrome 扩展如何只在指定路由注入 content.js
解决 Chrome 扩展在 SPA 场景下无法按子路由精确注入 content.js 的问题,适合需要按页面状态动态执行脚本的场景。
Hyper-V 虚拟机 AMD GPU 直通实战
记录在 Hyper-V 中为虚拟机配置 AMD GPU 直通的步骤、限制条件与排错经验,适合需要提升图形性能的场景。
OpenCV 滑块验证码识别:模板匹配实战
基于 OpenCV 模板匹配分析滑块验证码的定位思路与实现流程,适合了解图像识别在自动化场景中的应用。
Windows 编译 PaddleOCR DLL:给 Python 调用的完整流程
记录在 Windows 平台将 PaddleOCR 编译为 DLL,并供 Python 调用时的关键步骤、依赖处理与注意事项。
Tesseract 5.0 LSTM 训练实战:优化字体并提升识别率
介绍 Tesseract 5.0 的 LSTM 训练流程,并分享字体优化、数据准备和识别率提升的实践经验。
YOLOv8 自定义目标检测训练实战
总结 YOLOv8 自定义目标检测模型的训练流程、数据准备与推理实践,帮助你更快完成自己的检测任务。
Tailwind CSS 动态生成 animation-delay 实用类
利用 Tailwind CSS 的 matchUtilities 动态生成 animation-delay 实用类,让动画配置更灵活、组件复用更自然。
PyInstaller 打包 OCR:构建静态版 Tesseract 可执行程序
记录如何通过 vcpkg 构建静态版 Tesseract,并配合 PyInstaller 一起分发,解决桌面 OCR 工具依赖复杂、部署麻烦的问题。
Vue 3 封装移动端消息对话框组件:支持 Promise 调用
介绍如何在 Vue 3 中封装支持 Promise 调用的移动端消息对话框组件,提升交互一致性和组件复用性。
Vue 3 + Element Plus 封装阿里云 OSS 上传组件
基于 Vue 3 和 Element Plus 封装阿里云 OSS 上传组件,简化前端上传流程并提升业务复用效率。
Promise Pool 实战:优雅控制异步并发数量
通过 Promise Pool 控制异步任务并发数量,避免请求拥塞、资源争抢和瞬时流量过高的问题,适合上传和批量请求场景。
JavaScript 懒加载实战:图片与动画的性能优化方案
介绍图片与动画懒加载的常见实现方式,帮助你在不牺牲体验的前提下优化页面性能。
Ubuntu 开发环境初始化脚本:一键安装 Git、Docker 和 Nginx
用脚本快速完成 Ubuntu 开发环境初始化,包括软件源替换、Git、Docker 与 Nginx 等基础依赖安装。
Fetch 请求封装实战:打造轻量级前端请求库
从请求封装思路出发,基于原生 Fetch 构建更轻量的前端请求工具,减少依赖体积并统一请求处理逻辑。
前端开发常用 JavaScript 方法整理
整理前端开发中常用的 JavaScript 方法与处理思路,适合作为日常编码时的高频参考清单。
GitHub Webhook 自动部署 Hugo 博客到服务器
介绍如何通过 GitHub Webhook 实现静态博客自动部署到自有服务器,减少手动发布成本并提升更新效率。
Git 提交前自动格式化:Husky + lint-staged 实战
通过 Husky、lint-staged、ESLint 与 Prettier 在提交前自动格式化代码,减少多人协作中的风格分歧和无效 diff。
移动端 VW 适配实战:用 PostCSS 实现自适应布局
介绍如何通过 postcss-px-to-viewport 将 px 转换为 vw,完成移动端页面的自适应布局,并补充配置思路与实践注意事项。