从 Scrapy 到自研:单人长期项目中的爬虫工程判断
对单人长期项目而言,工程问题往往不是“能不能做”,而是“能不能长期承受”。本文记录了我在使用 Scrapy 过程中逐步暴露的工程风险,以及最终选择自研爬虫框架、重新分配工程不确定性的判断过程。
共 9 篇,持续更新中
对单人长期项目而言,工程问题往往不是“能不能做”,而是“能不能长期承受”。本文记录了我在使用 Scrapy 过程中逐步暴露的工程风险,以及最终选择自研爬虫框架、重新分配工程不确定性的判断过程。
拆解 Next.js App Router 中 ISR 的真实工作方式,澄清“为什么数据更新了页面却没变”的根源。从内容型站点的视角理解 ISR 的设计假设、延迟与不一致的必然性。通过真实业务节奏,讨论何时应继续使用 ISR,何时过渡到 on-demand revalidate。
记录一套在群晖上自动申请、部署与续期 SSL 证书的方案:基于 acme.sh、ZeroSSL 与 Cloudflare DNS API,结合 Container Manager 和计划任务实现证书的长期自动化管理。
记录一个 Ant Design Vue 表单上传 Excel 文件时的前端校验方案:通过 xlsx 读取首个 Sheet 并统计数据行数,在文件选择阶段拦截超限内容。
记录一次 Next.js 博客 LCP 性能优化的探索:从 Vercel Speed Insights 发现 LCP 高达 6.2 秒,分析 banner 图片加载缓慢的根因,并深入研究 Next.js Image 组件 priority 属性的实现机制与实际效果。
使用 react-beautiful-dnd 实现表格拖拽排序时,拖拽行会因列宽丢失而发生收缩。本文介绍官方文档中给出的两种解决策略:适合固定列宽的 Fixed layouts,以及适合自适应列宽的 Dimension locking。
为 Next.js 博客集成 Fancybox 图片灯箱:支持缩放、全屏与 caption,借助自定义 Image 组件封装实现,同时开启 Next.js 图片优化,将 JPG 压缩为 WebP 格式。
在日常的开发工作中,经常需要处理文件下载场景。为了避免用户重复点击下载按钮,产生大量请求,本文使用了Vue指令生成一个通用方案处理该场景。
本文记录了在 PVE 虚拟化平台上安装 Ubuntu Server 系统的完整流程,包括虚拟机创建、系统安装与基础配置各阶段的关键步骤。