视觉宪法
设计以暖象牙纸色、墨色和单一蓝色构成。空白负责组织,线条负责分隔,字体负责层级。没有卡片墙、渐变、发光效果、无意义网格或借古典物件制造的怀旧。
古典感来自比例、克制、可读性与时间感,而不是物件拟态。首页只保留一个正式抽象对象,其余图形只有在拥有真实数据和清楚含义时才出现。
首页标题“什么仍然属于人?”与抽象图形共同构成站点的设计命题。它不计入问题索引,也不表示作者已经发表了相应论证。
Pareto 图形
首页图形使用以下概念模型:
C(r) = {(x,y) | x ≥ 0, y ≥ 0, (x/a)^p + (y/b)^p ≤ r^p}
U(x,y) = x^α · y^(1-α)
内层边界表示能力扩张前的可行域,外层边界表示扩张后的可行域,等价值曲线表示不同目标权重,蓝色切点表示仍需由人承担的价值选择。它表达的是“能力扩大后,值得做什么仍需判断”,不是经验数据或预测模型。
确定性参数
概念参数固定为 a = 1.00、b = 0.76、p = 1.70、内层 r = 0.72、外层 r = 1.00 与 α = 0.58。它们只控制概念几何的比例,不来自测量。
当前 SVG 使用 720 × 520 的固定 viewBox。外层主曲线、内层曲线与两条等价值曲线均以写入源码的 Bézier 路径呈现,蓝色点固定为 (397, 133),半径为 5。页面加载时没有随机数、采样或动画,因此相同版本在每次构建中得到相同图形。SVG 是上述概念模型的固定视觉转写,不声称蓝点是由真实观测求得的最优解。
字体与许可
拉丁衬线使用 Source Serif 4,无衬线使用 IBM Plex Sans,等宽文字使用 IBM Plex Mono。中文分别回退到 Noto Serif SC 与 Noto Sans SC。字体文件随站点构建,不依赖页面加载时的第三方字体请求。各字体沿用其上游开源许可。
技术路线
站点以 Astro 生成静态 HTML,正文以 Markdown 为主,内容字段由 Astro Content Collections 与 Zod 校验。需要交互式文章时才引入 MDX。搜索使用构建时生成的独立 JSON 索引,由搜索页在浏览器中读取和匹配;查询不发送给第三方搜索服务。
发布链路使用 Cloudflare Workers Static Assets。私有 GitHub 仓库的 main 分支通过 Workers Builds 执行完整校验并部署;正式地址为 https://ethanhbzhou.com,www 以 301 跳转到 apex。普通页面、目录、元数据、修订记录、RSS 与站内链接不需要数据库,也不依赖客户端 JavaScript 才能阅读。
应用安装包由 Cloudflare R2 分发,地址为 dl.ethanhbzhou.com。每个构建以版本号定址,与它的 SHA-256 校验和一同发布,且发布后不再改写,因此一个下载地址始终指向同一份字节。一个很小的 Cloudflare Worker 只负责 /dl/:记录一次请求,然后跳转到文件。其余所有路径都直接由静态资源提供、根本不会进入它,因此即使 Worker 或它的数据库不可用,站点仍然完整可读。
如果以后开放私密反馈、留言或审核评论,提交接口会复用同一个 Worker;若仅靠审核不足以挡住垃圾提交,再引入 Turnstile 过滤。
数据与隐私
站点有且只有一个数据库。它记录对下载接口的请求:日期、产品与版本、网络报告的国家,以及请求是否来自爬虫。不存储 IP 地址、Cookie,也不存储任何能把两次请求关联到同一个人的标识。它计的是请求数——不是人数,也不是完成的下载数,因为下载可以开始后中断。任何取自它的数字,只能按它本来的含义描述。
阅读页面不会向这个数据库写入任何东西:记录下载的 Worker 在页面请求上根本不会被调用。但这不等于一次访问在任何地方都不留痕迹。Cloudflare 承载本站,会保留该域名的聚合流量指标,以及 Worker 调用的短期日志。它们属于托管平台而不属于本站,只要还托管在上面就无法关闭。
这个累计数显示在对应的产品页上,标注为「自某日起的下载请求数」,且只在大于零时出现。它在页面加载之后才取回,不是阅读的前提:Worker 不可用时,那一行就不出现而已。之所以公开,是因为一个产品有人试用,是关于这个产品的证据,不是关于你的证据——这也正是它从不被写成「多少人」的原因。
站点没有公开评论,也没有本站自己的访问统计。Cloudflare Web Analytics 只是可选方案;只有在单独配置并更新本页后,才会视为启用。
未来反馈表单会默认私密,允许匿名,联系方式可选。公开评论必须逐篇开启并经过审核,评论数量不表示认可,也不会影响核心文章的加载。