MoreRSS

site iconGrey Li | 李辉修改

编程和写作爱好者,出版多本Flask开发相关书籍
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Grey Li | 李辉的 RSS 预览

2025 年总结

2026-03-04 22:54:54

我还能做些什么?终于写完书的那段时间,在下班回家的路上,我经常想到这个问题。用这少得可怜的时间和精力,我还能做些什么?冷风吹着沸腾了一天的脑袋,双脚麻木地踩着脚踏,我想不清楚。

我渐渐明白这几年为什么那么疲惫,一方面这是跳入了以工作为中心的现代生活结构所带来的必然结果,另一方面是因为我还想要同时保有我自己的理想世界,所以我要在工作的同时兼顾开源项目、社区建设、阅读写作、学习音乐和语言……但是我显然没有那么多时间和精力,所以总是感觉疲惫。

新书出版以后,我觉得不能再这样下去,所以在「我该做些什么」这个方向上做了很多思考和调整。今年可以算是「改变之年」。

放弃

今年放弃了一些东西。我开始更多地问自己:你真的想做这件事情吗?

  • 退出了 PyCon China 组委会,不再参与 PyCon China 大会筹备。在退出之前,从零创建并维护至今的官方 Twitter 账号 @PyConChina 达成了 1000 关注,算是我的最后一个里程碑。
  • 退出了 Pallets 团队,不再参与 Flask 维护,同时也不再参与其他扩展的维护。更多的精力可以放在 APIFlask 上,今年也发布了 APIFlask 3.0 版本。新书《Flask 从入门到进阶》算是我在 Flask 这个领域探索的收尾。
  • 减少微信在生活里的比重。解散了 HelloFlask 微信群,同时也退出了很多群。删除了一些微信好友,大多是过往的同学。我们已经变成全然陌生的人,不想维系刻舟求剑的感情。
  • 减少网络社交。清空了 Twitter 关注,把想关注的人放到了 List。Twitter 的设计变得糟糕,社交氛围也很奇怪,不想参与其中。也不再频繁关注朋友圈,只在用的时候看看。我的朋友,虽然没有给你点赞,但是我依然爱你 :P
  • 最近还在考虑取消第三本书的合同,不知道要不要赔违约金……

关闭这些通道以后,感觉轻松多了。有一阵子每天只是上班,下班了就玩游戏,然后早早睡觉。原来现代人只有遵从这种「正确」的生活方式才能维持身心健康。但是我不会放弃自己的志业,只是现在还没有做好准备对工作说不。

重来

今年还做了一些推倒重来,或者说不愿意放弃的事情:

  • 年初第一次申请美签被拒。一千块申请费用打水漂的同时你还完全不知道为什么被拒,但是我并没有放弃,又重新跑到北京第二次申请才终于拿到签证。
  • 九月第一次体验打官司。在经历了上诉、开庭和调解阶段后,却因为忘记补交诉讼程序调整产生的诉费而被自动撤诉。于是又重新开始第二次立案,目前还没有立案成功。
  • 圣诞节和瑶在香港玩的时候弄丢了 Switch,同时丢掉的还有一些卡带以及所有的游戏存档和照片。回来后重新买了 Switch2 和丢失的卡带。重新通关了马里奥惊奇,这段时间在从头开始玩塞尔达王国之泪和 P5R。王国之泪第二次玩反而探索了很多之前没有发现的地方。
  • 重新调整了代码厨房的发展方向。本来的长期方向是让代码厨房剥离我,成为一个独立的品牌,做大做强。但是慢慢发现,我才是那个最愿意投入心力去建设的人。我一旦忙于工作和其他事情,那么代码厨房就接近停滞,所以不如回到起点吧。本来很多人就是被我吸引过来,那就让代码厨房回到我的身边好了。现在我把代码厨房当作是我自己创建和维护的小社区。

太执着(有时也许是偏执)并不总是好事,你会感觉很累,好事多磨定律并不总是有效,而有些事情就是很难被正确地解决。新的一年还是要多多练习放弃,也练习拒绝,练习做一个「坏人」,多考虑自己的身心健康。

探索

虽然不多, 但今年也有一些新的探索。主要是这三部分:

工作

年初体验了第一次升职(Senior -> Principal)。但在这一年里最大的成就并不是在程序员角色的本职工作上,反而是在演艺事业上——年底做了部门年会的导演。花了整整一个月时间,策划和设计了一出舞台剧。和四十几个同事一起,以时空之旅作为主题,用穿越到过去的几个关键故事作为结构,呈现了这个部门过去十年的历程。舞台剧在公司附近的一个剧场上演,我在下面看着表演,听着大家的笑声和欢呼声,很有成就感也很幸福。这让我想起大学时的那次课堂展示

在策划的过程中发挥了各种创意,比如让老板穿上机长的衣服,发布一台时空引擎——实际上是一个加了发光灯牌的空气净化器:

让同事穿上美人鱼的服装,演绎金斧子和银斧子的桥段:

把剧场设定为一个时光机,给每个人分发机票作为时空旅行的入场券。机票上有每个人的名字和“航空里程”(加入公司的时长)

设计了各种宣传海报(借用了许立志《搬运工》里的一句诗,虽然语境的转换有些讽刺)。最近还做了 DVD,用来送给所有人作为纪念:

代码厨房社区

在代码厨房社区的建设上,下半年继续在 PyCon China 2025 办了线下代码厨房开源松(第七次开源松)。同时策划了两个很受欢迎的社区活动,分别是「2025 开发者精神状态调查」和「流浪记事本计划」活动。前者是一个现场用圆形贴纸投票的实时问卷调查,后者是一个活动当天在整个会场随机传递的留言记事本。

写作

年底发布了拖延五年的新书《Flask 从入门到进阶》,并且拿到了 Armin Ronacher(Flask 作者)的推荐语:

另外三月还第一次去了美国。用微软提供的赞助在西雅图玩了一周,参加了微软 MVP 峰会,也体验了很多新鲜事物。详见这篇西雅图和微软 MVP 峰会游记

明年做些什么?

2026 年没有新的年度目标,因为去年的还没有完成……这次只有两个大致的方向:

一个是让身心更健康。在慢性疲劳里挣扎会让人失去对生活的热爱。想要恢复健康,想要掌控自己的身体和思绪。为了这个目标,除了开始运动,我会放弃和调整之前的很多计划。停下不重要的事情,重新对未来进行排序,也继续思考自己到底想做些什么。

另一个是重建生活秩序。我会过更多的离线生活,花更多的时间独处和陪家人。尝试对一切都全身心地沉浸。回到书、音乐和电影里,回到科学、艺术和自然里。交新的朋友,和老朋友见面。勇敢行动,勇敢表达自己。

最后,因为囤积了太多游戏和书,新年设置了两个和消费相关的年度挑战:

  • 一年不买新游戏挑战
  • 一年不买新书挑战

防止遇到非常想玩的新游戏和想看的书,同时设置一个豁免规则:通关五个已有的游戏就能买一个新游戏,书也同理。

希望新的一年可以开心玩游戏和看书。

回响计划:读者故事收集

2025-12-06 10:47:46

不管你是我的书和文章的读者,我的演讲和播客的听众,还是我的项目和活动的参与者,我都很想听听关于你与这些“作品”之间的故事。作为这一个人生阶段的回望,我想知道我过去这些年创作的内容和读者建立了怎样的连接,又产生了哪些影响。期待听到你的回响。

如果你愿意分享的话,可以通过下面的方式投稿:

  • 发送邮件到 [email protected]。投稿可能会被公开(邮箱地址不会),你可以留一个喜欢的署名
  • 如果不希望故事被公开,请发送邮件到 [email protected]

不一定非得是惊心动魄的故事,也可以是简单的、甚至有点好笑的日常连接,比如:

《Flask Web 开发实战》买来后一直没有看,后来用来垫显示器了。这本书厚实又稳重,陪我度过了三年的工作时光。

《Flask 从入门到进阶》正式发售

2025-11-23 22:25:36

经过五年的写(拖)作(延),我的新书《Flask 从入门到进阶》终于出版了!作为《Flask Web 开发实战》的全新升级版,新版本在原书的基础上进行了大量更新和调整,以便适应当下的技术栈。目前已经有现货可以购买:

至此我在 Flask 这条人生支线的探索也算圆满了。我从大二自学 Python 和 Flask,毕业前开始写作《Flask Web 开发实战》,这本书出版的同时也成为了 Flask 的维护者,并且为大量相关项目贡献代码。从 2018 年出版到现在,一共重印了 14 次,累计售出 2 万本(包括电子书)。收获了很多好评,在豆瓣上评分也保持在 9 分左右:

到现在终于完成了新版本,而且还拿到了 Armin Ronacher(Flask 作者)的推荐语:

Great resources make great developers, and it’s wonderful to see Flask supported by such high-quality education materials.

感谢一直关注这本书并持续催更的朋友!这本书的完成是我们共同努力的结果 :D

本书主要特色

这本书换了一个新书名,出于一个有点滑稽的原因。书名从《Flask Web 开发实战:入门、进阶与原理解析》变成了《Flask 从入门到进阶:Python Web 开发工程化实践》。不过新的副书名也能更好的概括这本书的特点:以学习 Flask Web 开发作为脉络,你能通过这本书掌握相对完整的 Python Web 工程化实践。从 HTTP 原理到数据库 ORM,从单元测试到代码风格再到性能优化,从 Web 程序开发到 Web API 开发,最后再到不同的部署方式。如果想要深入了解框架,最后还有一章源码解析。同时用两个示例程序串起来各种不同的知识点,比如 Flask 项目的组织方式和技巧,以及 Flask 开发中各类功能的实现。

访问这本书的主页查看详细介绍和章节目录:https://helloflask.com/book/4/

新版本主要变化

下面是一些具体内容上的变化:

版本升级

旧版本 新版本
Flask 1.x Flask 3.x
Python 2.7, 3.6+ Python 3.9+
Bootstrap 4.x Bootstrap 5.x
SQLAlchemy 1.x SQLAlchemy 2.x

技术栈更新

旧版本 新版本
Pipenv PDM
Flask-Mail Flask-Mailman
Flake8 Ruff
Open Iconic Bootstrap Icon
Flask-Moment + Moment.js Day.js
jQuery Vanilla JS
AJAX with jQuery Fetch API
Flask for Web API APIFlask
云平台部署 Docker 部署

示例程序上做了比较大的调整,删掉了旧版本的 SayHelloTodoismCatChat,保留两个程序并做了比较大的重构:

旧版本 新版本
Bluelog Greybook
Albumy Moments
helloflask/demos helloflask/examples

新版本计划是想做一些删减,比如从 700 页减到 500 页,毕竟一本厚书还是让人蛮有压力的。虽然删掉了两个章节,但是写到最后又快到了 700 页,实际的厚度比旧版本还要厚一点点。大概不知不觉又加了很多内容进来。

面向的读者群

本书面向的读者群如下:

  • 了解 Python 基本语法,想要自己动手开发网站的编程爱好者
  • 熟悉 Python,想要从事 Python Web 开发的后端工程师、运维工程师和爬虫工程师
  • 想要从 Django 等其他 Python Web 框架转向 Flask 的 Python 工程师

本书不包含对 Python 的基础知识介绍,所以读者需要事先对 Python 基本语法有一定的了解。另外,Web 开发不可避免的会涉及到一些 HTML、CSS 和 JavaScript 知识,如果你不熟悉这些,可以通过 MDN 提供的 Web 开发入门教程学习,简单了解即可。

推荐语

Great resources make great developers, and it’s wonderful to see Flask supported by such high-quality education materials.

—— Armin Ronacher(Flask 作者,Sentry Platform 副总裁)

作为一名对 Python 充满热忱的软件工程师,一名乐于帮助他人、回馈社区的布道者,Grey 对技术准确性、阅读体验感的无限追求都体现在这本新作中,我相信每一名读者都能在字里行间感受到他的诚意。

—— 管俊(《DevOps 实践指南(第 2 版)》译者,戴尔中国卓越研发集团 DevOps 架构师)

这本书内容翔实,推荐给想要系统学习 Flask 的人。不要漏掉书中的小知识点哦。

—— Hsiaoming Yang(Typlog 创始人,Authlib 作者)

关于作者

我是李辉(Grey Li),Flask & APIFlask 的维护者,Flask 开发团队(Pallets Team)成员, HelloFlask 社区和代码厨房社区创建者,微软 Python 方向最有价值专家(MVP)。目前就职于戴尔中国卓越研发集团,担任首席软件工程师。

我热衷于开源软件的应用和推广,为 Flask 等开源项目贡献过大量代码。也曾在 PyCon China、PyCon US、COSCUP、COSCon、CommunityOverCode 等技术大会担任演讲嘉宾。你可以在 GitHub 上看到我的开源项目。

如果你想了解我的新作品或其他动态,可以关注我的 Twitter 和微信公众号,或是加入我的邮件通讯列表

勘误、分享和评价

在阅读过程中如果发现了排版或内容上的错误,欢迎通过下面的方式提交勘误。我会在后续重印时进行修正。感谢反馈!

如果你觉得这本书还不错,欢迎分享到社交网络,或是告诉你的同事和朋友。也欢迎在本书的豆瓣页面标记和评价。

《Flask 从入门到进阶》签名版预售

2025-10-17 18:58:36

五年了,终于等到这一天。《Flask Web 开发实战》的全新升级版《Flask 从入门到进阶:Python Web 开发工程化实践》将于下个月正式发售。和上一版一样,先来预售作者签名版。

签名版

签名版的价格和上一版保持一致,依然是 109。付款方式和详细说明可以访问预售页面查看:

https://helloflask.com/book/4/signed/

签名版除了送 2 张 Flask 贴纸,还会额外送一张我的名片,可以用来当书签或者飞着玩。具体发货时间取决于正式发售时间,虽然不能完全保证,但我会尽量让签名书第一批发出。

新书名

你也许好奇为什么要换一个新书名,而不是作为第 2 版出版,即《Flask Web 开发实战(第 2 版)》。我设想了一些合理解释:因为内容变动比较多,换个更贴切的书名;在副书名里加一个 Python 关键字,更容易被别人搜索到……但背后实际的乌龙是:管理书号的工作人员在录入系统时打错了名字,把《Flask Web 开发实战》写成了《Flash Web 开发实战》。

按照出版规定,如果我想作为原书第 2 版来出版,那么新书名就只能叫《Flash Web 开发实战(第 2 版)》了。诸位应该也不想学 Flash Web 吧?

《Flask 入门教程》第 4 版发布

2025-10-13 21:12:29

即将出版的新书(预计将于本月底发售)变成了一个超强 deadline,它提及的所有东西都要在发售前成为现实。比如写进书里但其实还不存在的 APIFlask 3.0.0 版本,以及这个可以被当作先导材料的《Flask 入门教程》。

面向 Flask 2.x 的旧版本当然没法作为先导材料,所以断断续续花了 26 个小时完成了第 4 版的更新。新版本主要有下面这些变动:

  • 优化全书的内容和措辞
  • 增加对 uv 的介绍
  • 升级到 SQLAlchemy 2.x
  • 针对 Flask 3.1.x 进行内容更新
  • Python 支持版本调整为 3.9+
  • 增加对蓝本、工厂函数的介绍

另外正式加了一章介绍为什么以及如何为本书付费,取代了主页上自愿点击的「付费支持¥10」按钮。考虑到整本书内容完全公开,所以没法阻止读者逃票,但至少我已经克服了「伸手要钱」的羞耻。对于在工作之外挤出的这些时间,我需要一些正反馈。这样可以让自己更认真维护下去,也不会产生怨念。不仅是获得收入,有时还会收到读者的附言感谢,这给我的生活里带来了很多随机的开心时刻。

写新版本的过程中有时也会想,现在跟 AI 说一句「帮我用 Flask 写一个 Watchlist 程序」就大概能实现的程序,还有人愿意来读教程吗?我想至少,在通过教程来学习编程可以让你说一句「我真厉害」,而不仅仅是一句「AI 真厉害」。

另外这个教程最早是在 2019 年发布的,六年过去了,部署章节介绍的 PythonAnywhere 的 UI 和功能基本没有任何改变。我只需要更新 Python 版本选择那个页面的图片,其他部分不需要任何改动。有一种值得托付终生的感觉。希望可以做出来有这样品质的产品和作品。

最后附上相关链接:

邮箱服务中断乌龙

2025-08-26 19:09:03

七月底,因为 SendGrid 不再提供免费额度,我开始寻找替代服务。在给 greyli.com 这个域名配置新的邮件服务 DNS 的时候,某些原因一直没成功。尝试过程中手贱把已有的几条邮件相关的 MX 和 CNAME 记录给暂停了。

一个月后的今天,发现注册某个服务总是收不到验证码,这时才发现我当时是把 [email protected] 的邮箱服务的 MX 记录给暂停了。整整一个月没法收到邮件,我太蠢了。

如果哪位朋友在这一个月内(2025/7/25 – 2025/8/26)给我发了邮件,请不要恨我,我只是没有看到。如果可以的话,麻烦再重新发一遍吧。