#115 example.com 改版原因

2026-10-10

example.com 是 IANA 保留的示例域名,主要用于技术文档、教程和配置示例,避免开发者使用真实业务域名。它并不是专门提供可用性检测的测试服务器。

近日,开发者 Oliver Dunk 因为关注到 example.com 改版,向 IANA 发邮件询问原因,收到了 IANA 副总裁 Kim Davies 的亲自回复。

此次改版的重点不是增加功能,而是减少数据传输。页面采用基础 HTML,将额外内容放到 JavaScript 文件中。由于 example.com 存在大量自动化访问,其中许多请求不会加载 JavaScript,这种设计可以减少总体流量,降低带宽开销。

-> % curl www.example.com
<!doctype html><html lang=en><head><meta charset=utf-8><link rel=icon href=data:,><meta name=viewport content="width=device-width,initial-scale=1"><title>Example Domain</title><style>html{color-scheme:light dark;background:light-dark(#eee,#222)}body{font:16px/1.6 system-ui,sans-serif;max-width:26em;margin:auto;padding:25vh 2em 2em;text-align:center}</style></head><body><p>This domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and monitoring purposes.</p><script src=/s.js></script></body></html>

一些系统使用 example.com 检测网络或 HTTP 服务是否正常,但这并非它的设计目的。它的核心价值是作为文档中的通用占位符,而不是保证持续可用的测试接口。提供网页只是额外的便利,并非其存在的必要条件。

#114 Headless CMS 清单

2026-09-25

Headless CMS(无头内容管理系统)是一种将内容管理与前端展示分离的 CMS 架构。它只负责内容的创建、编辑、存储、管理和分发,不负责页面渲染,也不限定前端技术栈。前端应用通过 REST API 或 GraphQL 获取内容,自行完成展示。

其核心优势是内容与展示解耦,同一份内容可以同时分发到网站、移动应用、小程序、桌面应用等多个终端。典型功能包括内容模型管理、富文本编辑、媒体资源管理、用户权限控制、工作流管理、多语言支持、版本管理和 API 分发。

Headless CMS 适合多端内容分发、企业官网、内容平台以及需要灵活定制前端的项目。常见开源项目包括 Directus、Strapi、Payload CMS 和 Sanity。

与 Directus 定位相近的 Headless CMS 知名开源项目:

项目 开发语言 GitHub Stars
Strapi TypeScript 73.4k
Payload CMS TypeScript 45.5k
Ghost JavaScript 55.6k
Wagtail Python 21k
KeystoneJS TypeScript 10k
Squidex C# 2.5k
Filament PHP 32k

项目简介(每个约 100 字):

  1. Strapi — GitHub。知名 Headless CMS,基于 Node.js,提供可视化内容模型、REST/GraphQL API、角色权限和插件扩展。适合企业官网、内容平台、移动应用后端。

  2. Payload CMS — GitHub。基于 TypeScript 和 Next.js 的全栈 CMS,采用代码优先模式定义数据模型,自动生成管理后台和 API。适合 Next.js 项目及需要深度定制业务逻辑的应用。

  3. Ghost — GitHub。专注于博客和专业内容出版的平台,内置文章管理、会员订阅、Newsletter 邮件发送及 Headless API。适合媒体网站、独立博客和付费内容业务。

  4. Wagtail — GitHub。基于 Django 的 Python CMS,提供丰富的内容编辑体验、权限管理、版本控制和 API。适合 Python 技术栈下的企业内容管理和大型网站。

  5. KeystoneJS — GitHub。TypeScript 开发的可编程 CMS 和后端框架,通过代码定义数据模型,自动生成 GraphQL API 和管理界面。适合开发者主导、需要灵活数据结构的业务系统。

  6. Squidex — GitHub。基于 ASP.NET Core 的 Headless CMS,提供结构化内容管理、REST API、GraphQL、版本控制和多语言支持。适合 .NET 技术栈及企业级内容管理。

  7. Filament — GitHub。基于 Laravel、Livewire 的后台管理 UI 框架,提供 CRUD、表单、数据表格、仪表盘等组件。适合快速开发企业内部管理系统,但它不是完整的 Headless CMS。

选型建议:

需求 优先考虑
已有 SQL 数据库,快速生成 API 和后台 Directus
内容管理、Headless CMS Strapi
Next.js 全栈应用 Payload
Laravel 管理后台 Filament
Python/Django 内容平台 Wagtail

我的判断:如果目标是寻找 Directus 的直接替代品,优先比较 Strapi、Payload、KeystoneJS;如果目标是寻找通用业务后台和 API 平台,则应该把 PocketBase、Supabase、Appwrite 纳入比较。两类产品的架构定位并不完全相同。

#113 Directus Headless CMS

2026-09-25

Directus 是一个开源的现代化后端数据平台,定位于 Headless CMS(无头内容管理系统)+ 自动化 API + 可视化数据管理后台。它可以直接连接现有 SQL 数据库,自动生成 REST、GraphQL API,并提供 Web 管理界面,无需从零开发数据管理后台。

#112 独立开发者 MVP 工具链

2026-09-07

微信推送的两种图片中展示了一个“独立开发者穷鬼套餐(2026版)”,我让 GPT 重新给我整理了一个版本:

一级类型 二级类型 工具 价格
项目管理 项目管理 GitHub Projects / Linear -
文档管理 Notion / 飞书 -
密码管理 Bitwarden -
AI 开发 AI 模型 Claude / GPT / Gemini $0–20/月
AI IDE VS Code + Cline / Roo Code -
UI 生成 Step1 / v0 -
设计素材 图标 Iconify -
图片素材 Unsplash / Pexels -
图片压缩 Squoosh / TinyPNG -
软件开发 代码托管 GitHub -
API 调试 Bruno -
前端开发 Vue / React -
UI 组件 Element Plus / shadcn/ui -
后端基础设施 BaaS Supabase -
Serverless Supabase Edge Functions / Cloudflare Workers -
身份认证 Supabase Auth -
数据库 PostgreSQL / Supabase -
对象存储 Cloudflare R2 -
KV / 缓存 Cloudflare KV / Upstash Redis -
邮件 Resend -
部署运维 DNS / CDN Cloudflare -
网站部署 Cloudflare Pages -
CI/CD GitHub Actions -
错误监控 Sentry -
日志分析 Axiom -
产品运营 数据分析 PostHog / Google Analytics -
热力图 / 录屏 Microsoft Clarity -
Feature Flag PostHog -
市场趋势 Appark -
商业化 支付 Stripe / Paddle 按交易收费
自动化 n8n / Make -
域名 Cloudflare / 阿里云 ~$10/年

程序主要运行在 Serverless / Edge 环境,依赖的数据库、KV 等服务也基本都是白嫖。

#111 AI 时代程序员的未来

2026-09-05

AI 写代码已经越来越强,但截至目前,并没有出现有些人预言的大规模程序员失业潮。美国 BLS 数据显示,2025 年软件开发者就业人数约 168.8 万,预测 2025—2035 年软件开发者就业仍预计增长约 10%。

原因并不复杂:AI降低的是软件开发成本,而不一定降低软件需求。 当一个功能从过去需要3个人做一个月,变成一个程序员借助AI几天完成,公司未必选择裁掉3个人,也可能选择同时开发更多功能、尝试更多产品、服务更多客户。过去因为“开发成本太高”而放弃的需求,现在可能都变得值得做。

真正值得警惕的是,AI正在改变程序员内部的就业结构。

斯坦福数字经济实验室 2026 年 8 月基于数百万名员工的 ADP 工资数据发现,整体就业尚未出现大规模 AI 替代,但 22—25 岁、处于 AI 高暴露职业的年轻人,就业水平已经比低暴露职业同龄人低约 19%;而有经验的劳动者没有出现类似幅度的缺口。软件开发者属于 AI 暴露程度最高的职业之一,其中 22—25 岁开发者下降尤其明显。

这意味着,AI首先冲击的可能不是35岁以上的老程序员,而是原本负责简单CRUD、改页面、接接口、补测试的初级岗位。

那么,新老程序员应该何去何从?

  • 新人不能再把“会写代码”当成核心竞争力。 AI已经可以承担大量基础编码工作,新人的价值必须从“执行任务”转向“理解问题”:

    • 学习计算机基础、数据库、网络、操作系统、工程规范,
    • 同时利用AI快速完成实现,并通过真实项目积累业务经验。
  • 老程序员也不能躺在经验上。 AI确实放大了经验的价值,但前提是你能够驾驭AI。

    • 未来更值钱的能力,是架构设计、复杂系统排障、业务理解、技术决策、风险控制,
    • 以及把模糊需求转化成可靠系统的能力。

所以,AI时代真正危险的不是“老程序员”,也不是“年轻程序员”,而是只会写代码、却不知道为什么写,以及不会利用AI提高生产力的人。

三年前大家问的是“AI什么时候替代程序员”。现在更应该问的是:当代码越来越便宜之后,你还能解决什么过去解决不了的问题?这才是新老程序员真正需要回答的问题。

#110 Google Workspace 的域名校验:一个正则黑名单引发的误伤

2026-08-28

注册 Google Workspace 时,作者输入公司域名后,却收到“请输入有效域名,而不是邮箱服务商”的提示。域名本身没有任何滥用记录,Google 官方也无法解释原因。联系客服后,经历了换浏览器、换设备、录屏、提交工程师等流程,最终得到的建议竟然是“换一个域名”。更离谱的是,社区中还有其他正常域名遭遇同样问题,甚至包括乌克兰经济部使用的 me.gov.ua。

#108 转载:布尔变量取名规则

2026-07-24

传说中,编程有两大难题,一个是缓存失效,另一个是变量起名。

其中,布尔变量尤其难起名。怎样才能贴切地表达,这个变量是表示"真"(true)和"伪"(false)的布尔值呢?

我最近读到一篇文章《布尔变量起名的艺术》,提出使用四个前缀就能给布尔变量正确起名,我觉得很有启发。

  1. is-:描述事物的状态,后面跟形容词,比如 isActive,isDeleted,isEmpty。
  2. has-:描述事物的所有权或包含关系,后面跟名词,比如 hasAccess,hasChildren,hasValidationErrors。
  3. can-:描述事物的能力或权限,比如 canEdit,canDelete,canRetry。
  4. should-:描述事物的意图或逻辑,比如 shouldRetry,shouldCacheResponse。

除了这四个前缀,起名还有另一条规则:永远不在布尔变量名中使用否定词。
比如,不使用 isDisabled,而要用 isEnabled = false。

#107 百度云 ICP 备案记录

2026-07-16
  • 原备案信息(阿里云 · 2019):备案名称「码厩Markjour」,备案号 鄂ICP备15002462号。
  • 迁移原因:不再使用虚拟主机,业务迁至百度云低成本主机,需在百度云重新提交接入/备案,备案名称变更为「码厩开发者笔记」。

初审被拒,原因:

  1. 应急联系电话校验:应急手机号不能与负责人手机号码相同,需提供另一位真实可联系人的号码(当年没有这个要求)。
  2. 前台菜单合规审核:初审要求网站不得出现“留言”和“给我写信”菜单,这算页面交互入口(推测当年备案时尚未增加这两个菜单)。
    • 这两个功能从没用过,暂时屏蔽前端入口以通过核验,后面再看如何处理。

初审通过之后,备案进入 “管局审核中-短信校验中” 状态。
几分钟之后就会收到工信部短信验证码,需要进入指定链接输入验证码、手机号、身份证后六位进行核验。
短信核验之后过一会儿,备案进入 “管局审核中-人工审核中” 状态。