#1117 软件工程定律

2026-04-24

根据lawsofsoftwareengineering.com网站的分类体系,这些软件工程定律可以分为以下七大类别:

一、架构(Architecture)

  1. 康威定律(Conway's Law):组织设计的系统会反映其沟通结构
  2. 盖尔定律(Gall's Law):能工作的复杂系统必然从能工作的简单系统演变而来
  3. CAP定理:分布式系统只能保证一致性、可用性、分区容错性中的两个
  4. 海勒姆定律(Hyrum's Law):API用户足够多时,所有可观察行为都会被依赖
  5. 分布式系统八个错误假设:新分布式系统设计者常犯的八个错误假设
  6. 复杂系统变更定律:改变复杂系统时总会遇到意外
  7. 系统膨胀定律:小型成功系统往往被过度工程化的臃肿替代品取代

二、团队(Teams)

  1. 邓巴数(Dunbar's Number):一个人能维持约150个稳定关系
  2. 布鲁克斯定律(Brooks's Law):为延期项目增加人力只会让它更晚
  3. 团队规模与生产率:个人生产率随团队规模增大而降低
  4. 1%规则:总参与人数的平方根完成50%的工作
  5. 技术管理悖论:懂技术的人不管理,管理的人不懂技术
  6. 彼得原理(Peter Principle):员工会晋升到不胜任的层级
  7. 巴士因子(Bus Factor):项目陷入严重困境所需的最小团队成员损失数
  8. 无能晋升定律:公司倾向于提拔无能员工到管理层以限制其破坏

三、规划(Planning)

  1. 帕金森定律(Parkinson's Law):工作会填满所有可用时间
  2. 90-90规则:前90%代码占前90%时间,剩余10%占另外90%
  3. 侯世达定律(Hofstadter's Law):事情总比预期花更长时间
  4. 扎温斯基定律(Zawinski's Law):每个程序都会膨胀到能读邮件
  5. 古德哈特定律(Goodhart's Law):指标成为目标后就不再是好指标

四、质量(Quality)

  1. 过早优化:过早优化是万恶之源
  2. 童子军规则:离开时让代码比来时更好
  3. 破窗理论:不要留下未修复的破窗(坏设计、错误决策、差代码)
  4. 技术债务:开发软件时拖慢我们的一切
  5. 林纳斯定律(Linus's Law):足够多的眼睛能让所有bug变浅显
  6. 调试难度定律:调试比写代码难两倍
  7. 测试金字塔:项目应有大量快速单元测试、较少集成测试、少量UI测试
  8. 测试衰减定律:重复运行相同测试效果会随时间降低
  9. 软件演化定律:反映现实世界的软件必须演化,且演化有可预测限制

五、扩展(Scale)

  1. 阿姆达尔定律(Amdahl's Law):并行化加速受限于不可并行工作比例
  2. 古斯塔夫森定律(Gustafson's Law):通过增加问题规模可在并行处理中获得显著加速
  3. 梅特卡夫定律(Metcalfe's Law):网络价值与用户数平方成正比
  4. 测量重要性:任何需要量化的东西都能以某种方式测量,这比不测量好
  5. 墨菲定律(Murphy's Law):可能出错的事情总会出错

六、设计(Design)

  1. YAGNI原则:除非必要,不要添加功能
  2. 抽象泄漏定律:所有非平凡抽象在某种程度上都会泄漏
  3. 本质复杂性:每个应用都有固有不可减少的复杂性,只能转移不能消除
  4. 单一事实来源原则:每条知识必须有单一、明确、权威的表示
  5. KISS原则:设计和系统应尽可能简单
  6. SOLID原则:增强软件设计的五个主要指导原则
  7. 迪米特法则(Law of Demeter):对象只应与直接朋友交互,不与陌生人交互
  8. 最小惊讶原则:软件和接口应以最不令用户和其他开发者惊讶的方式行为
  9. 鲁棒性原则:对自己要保守,对他人要宽容

七、决策(Decisions)

  1. 斯特金定律(Sturgeon's Law):90%的东西都是垃圾
  2. 邓宁-克鲁格效应(Dunning-Kruger Effect):对某事了解越少,往往越自信
  3. 汉隆剃刀(Hanlon's Razor):不要归因于恶意,如果愚蠢或粗心能充分解释
  4. 奥卡姆剃刀(Occam's Razor):最简单的解释往往最准确
  5. 沉没成本谬误:因已投入时间或精力而坚持选择,即使放弃更有益
  6. 地图不是疆域:我们对现实的表征不等于现实本身
  7. 确认偏误:倾向于支持现有信念或想法的信息
  8. 阿马拉定律(Amara's Law):我们倾向于高估技术短期影响,低估长期影响
  9. 路径依赖:某物使用时间越长,继续使用的可能性越大
  10. 分治法:将复杂问题分解为最基本模块,然后从那里构建
  11. 逆向思维:通过考虑相反结果并反向工作来解决问题
  12. 帕累托法则(Pareto Principle):80%的问题来自20%的原因
  13. 坎宁安定律(Cunningham's Law):在互联网上获得正确答案的最佳方式不是提问,而是发布错误答案

这56条定律涵盖了软件工程从架构设计到团队管理、从项目规划到质量保证的全方位智慧,为开发者提供了系统性的指导框架。

#1116 黄金交易

2026-04-22

国际金价单位:美元/盎司
国内金价单位:人民币/克

1 盎司 = 31.1035 克
1 美元 = 6.82 人民币

31.1035 / 6.82 = 4.56

所以,转换系数是:国际金价 / 4.56 = 国内金价

比如国际金价目前是:4756 美元/盎司,
速算成国内金价:4756 / 4.56 = 1042 人民币

对照表(按照当前汇率 6.82 计算)

国际金价 国内金价
4200.00 921.05
4250.00 932.02
4300.00 942.98
4350.00 953.95
4400.00 964.91
4450.00 975.88
4500.00 986.84
4550.00 997.81
4600.00 1008.77
4650.00 1019.74
4700.00 1030.70
4750.00 1041.67
4800.00 1052.63
4850.00 1063.60
4900.00 1074.56
4950.00 1085.53
5000.00 1096.49
5050.00 1107.46
5100.00 1118.42
5150.00 1129.39
5200.00 1140.35
5250.00 1151.32

#1115 随机字符串碰撞概率分析

2026-04-21

在设计邀请码、一次性授权码等场景时,通常会使用较短的随机字符串。

随机字符串越短,用户输入越方便,但碰撞风险也会显著上升。因此,长度设计本质上是在“可用性”和“唯一性”之间做平衡。

假定采用一个 Base32 字符集(A-Z 2-7),分析在每天生成 10,000 个随机字符串时,不同长度下的碰撞风险。

#1114 国际形势判断:美国与台湾

2026-04-19

美国和中国既是竞争对手,也是合作伙伴。两国在科技、产业、金融、安全和地缘政治领域存在激烈竞争,但又在贸易、供应链、全球市场和国际治理方面深度绑定。

美国面临的问题

美国当前面临的最大风险,不是某一场局部冲突,而是同时陷入多个战略方向的长期消耗。过去几年,美国持续向乌克兰和以色列提供军事援助,在欧洲、中东和印太之间不断调配资源。虽然美国依然拥有全球最强的军事实力,但其武器库存、军工产能、财政压力和政治共识并不是无限的。

如果美国进一步卷入伊朗问题,中东方向将需要投入更多航母、防空系统、远程导弹和后勤保障力量。长期来看,美国可能因为多线作战而逐渐失去集中力量的能力,这意味着其在西太平洋可用于威慑中国的资源会被削弱。

很多人认为美国正在走向衰败,但更准确地说,美国只是从冷战后绝对主导地位转向相对收缩。长期介入欧洲、中东和亚洲事务,再加上财政压力、政治分裂、产业空心化以及军工补充能力下降,使美国越来越难同时维持多个方向的压倒性优势。

中国统一的机会

对中国而言,统一台湾虽然重要,但并不是当前最优先的目标。短期内,中国主动发起全面军事行动的概率并不高,因为跨海登陆成本巨大,更重要的是,战争还可能冲击出口、金融、能源和科技领域,打断经济发展进程。

因此,中国更现实的选择,是采取长期施压和逐步收紧的方式,包括军事威慑、外交孤立、经济影响以及削弱美国地区影响力。与此同时,中国会把重点放在产业链自主、科技突破、军事实力提升、人民币国际化和全球影响力扩张上。

从战略角度看,中国最优选择不是抢时间,而是争取时间。只要美国继续陷入多线消耗,而中国能够保持经济、科技和军力增长,未来在台湾问题上就会拥有更大的主动权和更低的成本。

#1113 一种廉价技术栈方案

2026-04-18

博客文章 Steve Hanov's Blog 《How I run multiple $10K MRR companies on a $20/month tech stack》介绍,他运行多个月收入1万美元公司的技术栈以极简和高性价比为核心,每月总成本控制在20美元左右。在极低成本下实现高可用的创业项目,避免过早引入复杂架构和巨额云账单。
PS:其实没有计算一次性购买 GPU 的费用,以及开发工具 GitHub Copilot 的月费。

以下是其技术栈的详细总结:

类型 选型 价格 说明
服务器 Linode / DigitalOcean $5–$10/月 选用廉价可靠的虚拟私有服务器。单台服务器(1GB RAM)足以支撑初期业务,并通过swap文件扩展内存。
后端语言 Go 免费 静态编译为单一二进制文件,部署简单(直接scp到服务器),性能高、内存占用低,且易于LLM理解和维护。
本地AI推理 VLLM(RTX 3090 GPU) 一次性投资约$900 利用本地GPU进行批量AI任务(如文档分析),配合Ollama快速测试模型,Transformer Lab进行微调。
LLM服务 OpenRouter 按请求付费(未透露) 统一接入Claude、ChatGPT等前沿模型,提供OpenAI兼容接口,并支持自动故障转移(如某服务宕机时切换至其他模型)。
开发工具 GitHub Copilot(VS Code) 约$60/月 按请求计费而非按token,可长时间运行复杂代码重构任务而成本固定(约$0.04/请求),性价比高于专用AI IDE。
数据库 SQLite 免费 单文件数据库,启用WAL(Write-Ahead Logging)后支持高并发读写,性能优于远程PostgreSQL,适合初创业务。
部署方式 scp(安全复制) 免费 将Go编译的二进制文件直接复制到VPS运行,无需容器化或复杂CI/CD,简化运维。
前端建议 htmx 免费 博客评论中推荐使用htmx实现轻量级前端交互,避免重型框架。

PS:需要执行 AI 任务的时候,线上服务调用作者本地机器进行 GPU 计算(可能是搞了一个 VPN)。
PS:开启 WAL 模式之后,SQLite 的并发性能会有很大提升。(SQLite WAL 模式

自研库:

类型 说明
身份验证库 smhanov/auth 自研的轻量级认证库,直接集成SQLite等数据库,支持用户注册、会话管理、密码重置及第三方登录(Google、Facebook、X、SAML)。
AI代理工具 smhanov/laconic 针对受限上下文窗口(如8K)优化的代理研究工具,通过“分页”机制管理LLM上下文,保留关键信息以处理长对话。
LLM抽象层 smhanov/llmhub 将本地或云端的LLM统一抽象为简单的provider/endpoint/apikey组合,简化文本和图像IO的调用。

#1112 维基新闻即将关闭

2026-04-17

维基媒体基金会决定,自2026年5月4日起将所有维基新闻网站切换为唯读模式,实现“软关闭”。这个已有22年历史的协作新闻项目将无法再编辑或发布新内容。此前公众咨询中支持保留的声音占多数,但主导工作组已悄然解散,该决定在社群内引发争议,并创下关闭正式维基项目的先例。部分编者正探讨将内容迁移至站外以延续更新。

我偶尔会打开 wikinews 看一看,现在知道要关闭了,还是觉得有点可惜。

#1111 新中国的四部宪法

2026-04-10

这几个职务就任时间有偏差,不能完全对齐,差不多看看就行。

时期 党最高领导 军委主席 国家主席 总理
1949–1954 毛泽东(党主席) 毛泽东 毛泽东(中央人民政府主席) 周恩来(政务院)
1954–1959 毛泽东 毛泽东 毛泽东 周恩来
1959–1968 毛泽东 毛泽东 刘少奇 周恩来
1968–1976 毛泽东 毛泽东 无(职位取消) 周恩来
1976–1978 华国锋(党主席) 华国锋 华国锋
1978–1981 华国锋 华国锋 华国锋
1981–1982 胡耀邦(党主席) 邓小平 赵紫阳
1982–1987 胡耀邦(总书记) 邓小平 李先念 赵紫阳
1987–1992 赵紫阳 邓小平 → 江泽民 杨尚昆 李鹏
1992–1997 江泽民 江泽民 江泽民 李鹏
1997–2002 江泽民 江泽民 江泽民 朱镕基
2002–2007 胡锦涛 江泽民 → 胡锦涛 胡锦涛 温家宝
2007–2012 胡锦涛 胡锦涛 胡锦涛 温家宝
2012–2017 习近平 习近平 习近平 李克强
2017–2022 习近平 习近平 习近平 李克强
2022–2027 习近平 习近平 习近平 李强
2027–2032

PS:

  1. 第一部宪法是 1954 年制定,被称之为五四宪法。
    1949 年,依照临时宪法性质文件《中国人民政治协商会议共同纲领》建国。
  2. 第二部宪法是文革后期制定,被称之为七五宪法。
    这部文革宪法撤销了国家主席、副主席职务。不用懂法,也应该猜到这部宪法绝对超烂,不可能有任何法治精神。
  3. 第三部宪法是文革结束之后 1978 年制定,修复部分国家机构功能,比如恢复司法机关。
    应该算是快速结束动乱的一步过渡宪法。
  4. 第四部宪法(现行宪法)是改革开放之后,1982 年制定,恢复了国家主席职务,重建国家治理体系。
    1. 1988年宪法修正案:承认私营经济是公有制经济的补充,允许土地使用权依法转让
    2. 1993年宪法修正案:明确“国家实行社会主义市场经济”(从计划经济转型)
    3. 1999年宪法修正案:依法治国,建设社会主义法治国家 / 确立非公有制经济的重要组成部分地位
    4. 2004年宪法修正案:国家尊重和保障人权 / 产权制度正式入宪
    5. 2018年宪法修正案:取消国家主席任期限制 / 国家监察委员会
  5. 胡耀邦总书记 1987 年辞职之后于 1989/04 年因心脏病去逝,享年 74 岁。
  6. 李克强总理 2023 年 3 月卸任,当年 10 月因心脏病去世,享年 68 岁。