Miguel Grinberg Blog

Miguel Grinberg,软件工程师、《Flask Mega-Tutorial》作者,撰写关于 Python、Flask、Web 开发与微控制器的技术博客。

我不做“反向半人马”:拒绝审核AI生成的代码垃圾

知名开源开发者Miguel Grinberg分享了他拒绝成为“反向半人马”(即被AI操控的审核者)的决定。面对大量由LLM生成的低质量PR,他修改了贡献指南,要求先通过Issue沟通,直接关闭无人工参与痕迹的自动提交。文章探讨了开源社区在AI时代的困境,以及开发者对机器生成代码泛滥的疲惫与反思。
评论点赞收藏64 天前

Bitwarden如何加密和解密密钥

作者结合Vaultwarden自托管实践与Bitwarden CLI供应链攻击事件,深入解析了Bitwarden的加密机制。文章详细拆解了主密钥生成、PBKDF2密钥派生、HKDF扩展以及AES-CBC加密流程,并提供了完整的Python解密代码,适合对密码学原理和开源安全工具有兴趣的技术读者。
评论点赞收藏108 天前

SQLAlchemy 2实战:第三章 一对多关系详解

本文是SQLAlchemy 2实战教程的第三章,详细讲解了一对多关系的数据库设计与实现。内容涵盖何时需要建立关系表、外键约束、SQLAlchemy ORM中relationship对象的定义与双向导航、数据导入脚本的重构以及基于关系的查询操作。
评论点赞收藏135 天前

SQLAlchemy 2 实战:第一章 数据库表

本文是《SQLAlchemy 2 in Practice》系列的第二章,详细讲解了 SQLAlchemy 2.0 中数据库表的基础用法。内容涵盖 SQLAlchemy Core 与 ORM 的区别、Engine 对象的创建与配置、使用 DeclarativeBase 定义 Model 类、数据库 Metadata 及命名规范、Session 的生命周期管理(包括 flush、commit、rollback)以及一个完整的从 CSV 导入数据到数据库的示例应用。
评论点赞收藏142 天前

SQLAlchemy 2 实战:第一章 数据库环境配置

这是一篇关于 SQLAlchemy 2.0 实战教程的第一章,主要介绍如何为 Python 项目配置数据库环境。内容涵盖了创建虚拟环境、安装 SQLAlchemy,并详细指导了 SQLite、MySQL(通过 Docker)和 PostgreSQL(通过 Docker)的安装与配置步骤,最后讲解了 SQLAlchemy 的数据库连接 URL 格式。
评论点赞收藏148 天前

SQLAlchemy 2 实战指南:前言与导读

Flask作者Miguel Grinberg发布其付费书籍《SQLAlchemy 2 in Practice》的前言及目录。文章介绍了编写该书的背景,旨在解决开发者在数据库和ORM使用上的痛点,并概述了将通过系列文章逐步发布的实战项目内容(复古电脑店数据库构建)。
评论点赞收藏154 天前

如何自建邮件服务器:从0到1的完整实操指南

作者出于去大平台依赖的考虑,详细记录了自建邮件服务器的全过程。文章从架构设计、VPS选择、DNS配置、Postfix部署到DKIM/SPF/DMARC设置,提供了具体的命令行和Docker操作指南,并分析了ISP端口封锁等常见坑点。
评论点赞收藏159 天前

CPython源码中引入LLM代码引发的署名与政策争议

作者发现CPython仓库中存在由Claude Code提交的代码,对此表示失望。文章批评了将AI工具列为共同作者的署名方式,认为开发者应承担全部责任,并呼吁CPython项目明确AI使用政策,提高透明度。
评论点赞收藏166 天前

我的课程网站迁移到新平台

知名Python技术博主Miguel Grinberg宣布因Teachable平台费用暴涨及AI对课程需求影响,决定自建基于Flask的课程平台。文章详细说明了账户迁移方法、支付网关Dodo Payments的选择理由(自动处理税务),并提供了新用户优惠码。
评论点赞收藏179 天前

Bash 中的日期算术运算实战

作者因在NAS的备份脚本中需处理日期计算,深入讲解了Bash中的数值运算与GNU date命令的高级用法。文章涵盖了日期格式化、相对时间偏移、时间差计算以及结合seq命令实现按周备份轮换等实战技巧,提供了大量可直接复用的代码片段和工程细节。
评论点赞收藏190 天前

如何在网站中快速添加交互式地图

作者分享使用Leaflet库和OpenStreetMap数据,通过少量HTML和JavaScript代码,无需注册任何服务即可在网站上快速集成免费、开源的交互式地图。文章提供了详细的三步实现教程,包括引入依赖、添加地图容器、编写渲染逻辑,并附带了切换卫星图层和标记点的完整代码示例,以及获取地理坐标的实用技巧。
评论点赞收藏197 天前

无需Token或隐藏字段的CSRF保护方案

作者为Microdot框架实现CSRF保护时,发现基于Sec-Fetch-Site头的现代防御方法。文章详细分析了该方法的原理、浏览器兼容性、Origin头回退方案,以及OWASP标准更新过程中的争议,提供了具体的工程实现细节和代码链接。
评论点赞收藏237 天前

如何安全地在环境变量中存储密钥

作者结合近期npm供应链攻击事件,分享了个人保护环境变量的方法:本地开发使用密码管理器(如Bitwarden)配合CLI脚本动态注入密钥,避免持久化存储;云端部署则倾向于最小权限和避免使用密钥。文章深入探讨了可信发布机制的风险,并对GitHub Actions的安全性表达了担忧,提供了具体的工程实践和反面案例。
评论点赞收藏243 天前

Python 3.14 发布了,它有多快?

作者对刚发布的Python 3.14进行了全面的性能基准测试,涵盖单线程与多线程场景下的斐波那契数列计算和冒泡排序。测试对比了CPython各版本、PyPy、Node.js及Rust,并重点评估了3.13/3.14引入的JIT和Free-threading(无GIL)解释器的实际表现。结论指出3.14整体速度提升显著,JIT在当前测试中收益有限,而Free-threading在多核CPU密集型任务中表现优异,PyPy依然极速。
评论点赞收藏310 天前

Flask超级教程第一部分:Hello World

Miguel Grinberg发布的2024版Flask入门教程第一章。内容涵盖Python环境配置、虚拟环境最佳实践、Flask安装及基础项目结构搭建,通过Hello World应用演示路由和视图函数。
评论点赞收藏366 天前

MicroPython 性能基准测试:从微控制器到笔记本的速度鸿沟

作者基于EuroPython会议上的观众提问,对MicroPython在多种微控制器(ESP8266, Pico W, Pico 2W, ESP32-S3)及常规计算机上的性能进行了实际基准测试。文章提供了详细的递归斐波那契数列和冒泡排序代码对比,揭示了不同硬件在栈溢出风险和计算速度上的显著差异,并指出微控制器与计算机的性能鸿沟及使用场景的根本区别。
评论点赞收藏380 天前

为何生成式AI编程工具与智能体对我无效

知名技术博主Miguel Grinberg分享了他不使用生成式AI编程工具的个人经验。他认为AI代码并未提高他的工作效率,因为审查和理解AI生成的代码所花费的时间与手写代码相当,且他需对代码质量负全责。文章对比了AI与实习生的区别,指出AI缺乏学习能力,并质疑AI作为生产力倍增器的说法,认为这往往是以牺牲代码质量为代价的。
评论点赞收藏425 天前

2025年搭建React与Flask项目实战指南

作者Miguel Grinberg更新了其经典React+Flask项目搭建教程。主要变化是用Vite替代已停止维护的create-react-app,并详细演示了前端Vite与后端Flask的配置、API代理设置及前后端集成代码。
评论点赞收藏440 天前

Flask超级教程第三部分:Web表单

Flask Mega-Tutorial系列的第三章,详细讲解如何使用Flask-WTF扩展处理Web表单。内容包括配置SECRET_KEY、定义LoginForm类、编写Jinja2模板渲染表单、以及通过视图函数接收和验证POST请求数据。这是构建用户登录功能的基础教程。
评论点赞收藏464 天前

《快速Python手册》第四版评测:适合初学者的现代Python速成指南

Miguel Grinberg 对 Naomi Ceder 所著的《The Quick Python Book》第四版进行详细评测。文章分析了书籍结构、目标受众及优缺点,指出其适合有编程基础的初学者快速上手,涵盖了现代Python特性、数据应用及PEP8规范。作者特别提到书中推荐新手使用Google Colab而非本地安装的观点,并指出了书中缺乏异步编程和Web应用开发的不足,同时评价了书中关于生成式AI代码生成的内容。
评论点赞收藏534 天前

Flask动态表单实现指南:原生与Flask-WTF方案对比

文章详细讲解了在Flask中实现动态增减表单字段(如无限添加电话号码)的两种方案:原生Flask处理与Flask-WTF扩展处理。重点分析了前端JavaScript动态生成DOM与后端WTForms FieldList机制的对接难点,特别是字段命名规则和CSRF保护,提供了完整的代码示例和GitHub仓库链接。
评论点赞收藏562 天前

使用 SQLAlchemy 实现数据静态加密

本文详细演示了如何在 SQLAlchemy 2 中通过自定义 TypeDecorator 实现数据库列的透明加密。作者提供了完整的代码实现,利用 Fernet 算法在数据写入和读取时自动加解密,并讨论了适用场景(如敏感数据)及限制(如无法索引搜索)。
评论点赞收藏572 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。