这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
《Python编程实战》12.2 动态页面与浏览器自动化
先跑通一个 JS 渲染的本地动态页,看清「静态解析抓不到」的真相,再用内嵌 JSON 与底层 API 两条替代路线实测拿到数据;浏览器自动化(Playwright / Selenium)本机未安装,只给伪代码、选型对比与等待策略,并划清与反爬的边界。
posts
这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
先跑通一个 JS 渲染的本地动态页,看清「静态解析抓不到」的真相,再用内嵌 JSON 与底层 API 两条替代路线实测拿到数据;浏览器自动化(Playwright / Selenium)本机未安装,只给伪代码、选型对比与等待策略,并划清与反爬的边界。
从 requests 2.34.2 与 httpx 0.28.1 的取舍讲起,实测连接复用、超时分层与重试策略,再用 http.server 起本地假站点,跑通 BeautifulSoup 4.15.0 + lxml 6.1.3 的 CSS 选择器与 XPath,并处理中文乱码与 httpx 系统代理两个真坑。
一个消费者太慢,无限制起 goroutine 又会打爆下游。本节用固定数量的 worker pool 消费任务队列,把「生成 → 加工 → 汇总」串成 pipeline,实测 4 并发与无限制并发的耗时差异,并给出 TaskAPI 批量关闭到期任务的完整实现。
上一节的扫描器自己关任务,职责太杂。本节把到期任务投递进 channel 队列,讲清有缓冲与无缓冲的差别、close 之后还能不能读、谁负责关闭、select 如何同时等三路输入,并给 TaskAPI 接上第一版任务队列,为下一节的 worker pool 铺路。
TaskAPI 一直串行处理任务,一旦要定时扫描到期任务就会阻塞主流程。本节引入 goroutine:用 go 关键字把到期扫描放到后台,实测它的启动成本与内存开销,讲清主 goroutine 返回即进程结束这个经典陷阱,并给出一份后台扫描器。
本附录按报错原文索引《Cocos 游戏开发入门》的高频问题,每条给「现象 / 原因 / 修法」:固定步长累积器丢步跳步、window 变量 undefined 因 ES module 被 file:// 拦、Playwright 截图全白、纹理跨域污染 canvas、DPR 坐标错位、tsc 报 cc 无导出成员、YAML 里 @ 开头列表项、Hugo REF_NOT_FOUND 与围栏未闭合。
本附录固定《Cocos 游戏开发入门》的环境口径:Node 26.5.0 的安装与校验、npm 与 pnpm 的源切换、/tmp/cocosbook 工作目录的 package.json 与依赖清单、tsconfig / vitest / vite 三份配置全文、Node 26 的可擦除语法约束、Playwright 安装与截图脚本,以及断网时的零网络复现步骤与一分钟自检。
本附录速查 Cocos Creator 3.8.8 工程结构:assets、library、temp、build、settings 的职责,.scene、.prefab、.meta 与 settings/v2/packages/*.json 的角色,并给出接入 @cocos/creator-types 做离线类型检查、用 cc.d.ts 反查 API 的方法,以及哪些需编辑器、哪些可命令行复现。
本附录是全书 mini2d 运行时的 API 速查表:按模块列出 TimeSource、realTime、FakeTime、Clock、Color、rgba、DrawCommand、Renderer、RecordingRenderer、CanvasRenderer 与 Game 的真实类型签名,并给出「假时钟推进固定步数 + 记录式渲染器断言绘制指令序列」的确定性测试写法,方便随手回查。
本节把图集里的一格格精灵接成会动的帧动画:用时间轴把已播放秒数换算成帧索引,实现单次、循环与乒乓三种播放模式,把帧率与播放速度解耦,并加入事件帧回调;再用纯 TypeScript 写出 FramePlayer,最后对照 Cocos Creator 3.8 的 Animation、AnimationClip 与 AnimationState。
本节把 9.2 的混合检索封装成 recall(query) 工具注册进 ToolRegistry,让 Agent 在循环里自己决定何时回忆。用假模型脚本化「用户提问 → 调用 recall → 拿到记忆 → 给出回答」并真跑打印轨迹,最后对比记忆即工具与自动注入在自主性和确定性上的取舍。
HybridIndex 显式持有 records、BM25 与 VectorStore,不依赖上节 REPL 变量。两条路径都仍主要反映词面,只演示融合结构。标题重排 bonus 是手工规则,需要验证是否真的改善排序;词面与哈希融合不意味着语义模型。返回排名不能作为事实或答案质量分数。
本节用标准库展示固定维数、归一化、索引和余弦相似度,避免让核心项目依赖 NumPy。HashingEmbedder 不具备训练出的语义理解。VectorStore 检查维数、有限数值和重复 id;search 计算余弦,未归一化输入也能比较。空索引返回空,k 必须为正;排序同分时保持插入次序。
本文系统梳理 HarmonyOS NEXT 与兼容 AOSP 旧版鸿蒙的本质差异、四层系统架构与 Stage 模型核心概念,对比元服务与传统应用的取舍,给出 API 9 至 API 15 的版本演进对照,并逐步完成 DevEco Studio 5.0.3.900 安装、SDK 组件管理、ohpm 与 hvigor 工具链配置、首个工程目录逐文件解读、模拟器创建与自动签名,最后附常见坑清单。
Zig 通过 C ABI 绑定可无缝调用 SQLite 和 PostgreSQL,配合参数化查询防注入、连接池设计与事务封装,构建安全高效的数据库访问层。本文系统讲解 SQLite CRUD、PostgreSQL 连接池、轻量 ORM 结构体映射、迁移脚本设计与连接生命周期管理。
Zig 标准库内置了现代密码学原语模块 std.crypto,涵盖对称加密、AEAD、哈希、密钥派生、随机数生成等能力。本文系统讲解 AES-GCM 与 ChaCha20Poly1305 加解密、mbedtls-zig TLS 1.3 握手、Argon2/Scrypt 密钥派生、安全随机数生成与密码学最佳实践,帮助开发者构建安全可靠的 Zig 应用。
系统级编程离不开调试与性能分析。本文系统讲解 Zig 程序在 Debug/ReleaseSafe/ReleaseFast 模式下的调试体验差异、GDB 与 LLDB 断点步进、zig-gdb pretty printers、基于 perf 的采样分析与火焰图、Valgrind memcheck 内存错误定位,以及 std.log 日志级别与崩溃堆栈回溯的实用技巧。
深入讲解 Supabase 平台架构与 PostgreSQL 边缘函数的实战方案。涵盖 Supabase 核心组件(PostgREST、Realtime、Storage、Auth)的整体架构、Row Level Security 策略与认证体系的联动设计、Deno 边缘函数的编写与部署、Database Webhooks 触发机制、pgvector 向量检索集成、Realtime 实时订阅的实现原理,以及结合自动生成的 REST API 进行前后端开发的全栈实践。
Zig 0.11+ 引入 build.zig.zon 进行声明式依赖管理,配合 zig fetch 下载缓存、路径依赖与版本锁定,形成现代包管理方案。本文系统讲解 Zon 文件格式、git/tarball 依赖获取、常用第三方库选型、本地包开发流程与 zyg 包管理器,帮助开发者高效管理 Zig 项目依赖。
深入讲解 PostgreSQL 事件触发器(Event Trigger)的底层机制与生产级审计日志实现方案。涵盖 DDL 事件触发器的完整生命周期(ddl_command_start、ddl_command_end、sql_drop、table_rewrite)、自定义审计表记录结构化变更日志、登录审计与 row_security 强制审计、表结构变更追踪策略、pgAudit 扩展的企业级审计能力,以及面向合规要求的完整审计体系设计。