给软件开发者准备的优质简报,每日阅读 10分钟


DeepSeek v4

1708 pointsLinkComment(1324)Share

DeepSeek API 首次调用指南

  • 兼容性说明:DeepSeek API采用与OpenAI/Anthropic兼容的API格式,可直接使用对应SDK或兼容软件进行访问
  • 接入配置:OpenAI格式端点为https://api.deepseek.com,Anthropic格式端点为https://api.deepseek.com/anthropic,API密钥需从platform.deepseek.com/api_keys申请
  • 可用模型deepseek-v4-flashdeepseek-v4-pro为当前主要模型,deepseek-chatdeepseek-reasoner将于2026年7月24日停用
  • 模型对应关系deepseek-chat对应deepseek-v4-flash的非思考模式,deepseek-reasoner对应deepseek-v4-flash的思考模式
  • 调用方式:通过POST请求访问/chat/completions端点,携带Bearer Token认证,可设置thinking参数启用思考模式、reasoning_effort控制推理强度、stream参数切换流式/非流式响应

I Cancelled Claude: Token Issues, Declining Quality, and Poor Support

570 pointsLinkComment(338)Share

我为何取消Claude订阅:Token问题、质量下降与糟糕的客户支持

  • 作者最初对Claude Code体验良好(速度快、Token额度合理、质量高),但约三周后问题频发,热情迅速消退
  • 客户支持质量极差:提交工单后收到自动化的模板回复,问题未被实际解决,工单便被自动关闭并附带"不再监控"的通知
  • 代码质量下降:Claude Opus被指出使用了懒省事的变通方案(如在通用文件中注入代码而非直接在JSX中修正),甚至模型自身也承认"那是偷懒的做法",作者认为这种解决方案连初级开发者都不应采用
  • Token限额管理混乱:每周窗口突然变更,还出现了官方文档中未记录的神秘月度额度警告,且两小时后警告又自动消失,令用户困惑
  • 对话缓存机制存在缺陷:长时间间歇后对话缓存消失,模型重新加载代码库,导致用户为同一内容重复消耗Token
  • 尽管作者认同Anthropic的理念、肯定产品的许多功能并实现了显著的生产力提升,但最终因无法同时处理大量新客户导致的服务问题取消了订阅

Arch Linux Now Has a Bit-for-Bit Reproducible Docker Image

342 pointsLinkComment(116)Share

Arch Linux 推出位对位可重现 Docker 镜像

  • Arch Linux 现已推出位对位(bit-for-bit)可重现 Docker 镜像,使用新的 "repro" 标签在 Docker Hub 上分发,这是继 WSL 镜像实现可重现性之后的又一重要里程碑
  • 由于可重现性要求镜像中必须剥离 pacman 密钥,用户首次使用前需运行 pacman-key --init && pacman-key --populate archlinux 重新生成密钥环;Distrobox 用户可通过 --pre-init-hooks 参数自动化此步骤
  • 可重现性通过多次构建的摘要一致性(digest equality)以及使用 diffoci 工具比较构建结果来验证
  • 主要技术实现包括:在 Dockerfile 中设置 SOURCE_DATE_EPOCH 并在 org.opencontainers.image.created 标签中遵循该值、移除 var/cache/ldconfig/aux-cache 辅助缓存文件以消除非确定性、使用 --source-date-epoch--rewrite-timestamp 选项规范化时间戳
  • 该镜像构建复用 WSL 镜像的确定性 rootFS 构建系统,详细技术文档公开在 Arch Linux GitLab 仓库的 REPRO.md 文件中,作者未来还计划建立自动化重建服务以定期验证可重现性

I'm done making desktop applications (2009)

112 pointsLinkComment(115)Share

我为何放弃桌面应用程序开发

  • 核心发现:作者Patrick McKenzie在开发和销售桌面版"Bingo Card Creator"三年后推出网页版,发现后者在意编写便捷性、功能完善度、销售转化、支持负担和营销推广等方面全面超越前者,从博弈论角度看网页版"严格支配"桌面版,实际销量以近2:1的比例超越桌面版
  • 转化率对比:共享软件销售漏斗存在17个可能导致用户流失的关键环节(从搜索引擎检索到完成购买的整个过程中,下载后找不到文件、安装需要JRE升级、重启后忘记用途、无法找到注册方式等任一环节失败即导致流失),典型转化率低于1%;网页应用访客试用转化率(22%-26%)高于桌面版(18%-22%),试用到购买的转化率(2.32%)约为桌面版(1.35%)的两倍
  • 广告成本优势:AdWords广告成本方面网页版每次成交约9美元,桌面版约20美元——成本降低超50%使作者能够竞标高流量头部关键词,获取更大市场份额;作者坦承这对Google是利好消息
  • 支持负担与盗版问题:最近50位客户中桌面版产生15次支持请求,网页版仅3次;主因是网页版不存在安装问题、注册码遗失、旧版本分散于各下载站等问题;此外网页版从根本上消除了盗版——客户端无法独立运行,必须连接服务器才能使用
  • 数据驱动决策:网页应用支持用户行为分析工具(如Mixpanel),作者借此发现"Baby Shower"是最常用词汇、增加功能反而导致销量下降等反直觉事实,并能按用户价值分层定制体验(如为新手隐藏复杂选项、向不同层级用户推送针对性优惠)
  • 快速迭代能力:借助A/B测试框架,网页版可在分钟级别内部署和获取数据——作者在7周内发布了67次更新,而桌面版新版本触达半数用户需要数月;但作者同时承认个人偏好桌面应用,Excel在几乎所有方面都优于Google Docs

Spinel: Ruby AOT Native Compiler

269 pointsLinkComment(78)Share

Spinel:Ruby AOT编译器

  • 由Ruby之父松本行弘(matz)开发,使用Prism解析器将Ruby源码解析为AST文本,经全程序类型推断后生成优化C代码,再由标准C编译器编译为独立原生可执行文件,运行时仅依赖libc和libm
  • 基准测试显示平均比miniruby快约11.6倍,计算密集型任务提升尤为显著:Conway生命游戏86.7倍、ackermann函数74.8倍、mandelbrot分形58.1倍、递归fibonacci 34.2倍
  • 编译器后端spinel_codegen.rb(约21,109行)完全使用Ruby子集编写,实现真正的自举:先用CRuby引导生成首个原生编译器,再由原生编译器编译自身验证一致性(gen2.c == gen3.c)
  • 支持丰富的Ruby核心特性:类继承与mixin、代码块(yield/proc/lambda)、异常处理、正则表达式(内置NFA引擎)、Fiber协程(基于ucontext_t)、Bigint大整数运算(按需链接)以及Symbol专用类型与优化
  • 包含多项编译时优化:小类自动提升为C结构体栈分配消除GC开销、字符串链式连接合并为单次内存分配、循环不变长度提取、死代码消除、方法内联、Bigint除法采用O(n log²n)分治算法
  • 存在明确限制:不支持eval、元编程(send/method_missing/define_method)、多线程、多字节编码(假设UTF-8/ASCII);开发历史经历了从C版本到Ruby版本再到自举Ruby子集的三次重大重写

Sabotaging projects by overthinking, scope creep, and structural diffing

284 pointsLinkComment(67)Share

过度思考、范围蠕变与结构化diff的陷阱

  • 项目创意通常走向两条路:直接动手完成,或陷入"寻找先例"的研究漩涡——后者导致既未解决原始问题,也失去了创作的乐趣;核心原因是成功标准不够清晰,当标准模糊时(如"我想学语言设计"vs"我想替代现有工具"),容易在众多分支问题上迷失方向
  • 作者以周末木工的shelf项目为例:与朋友边喝咖啡边设计、用剩余材料、凭眼力打磨——核心成功标准是"和朋友一起做木工",因此不会陷入过度优化;对比之下,为Emacs构建diff工具时,4小时研究先例后突然意识到自己的原始需求其实只需4小时就能自己实现
  • 范围蠕变守恒定律:任何编程速度的提升都会被相应的不必要功能和偏离所抵消;作者用Nucleo库实现模糊搜索时,意外陷入锚点功能(^foo匹配路径segment开头),花数小时设计复杂的数据结构后,突然意识到自己从未真正需要这个功能,果断丢弃所有相关代码
  • 深层原因是内心评判者(恐惧失败)在压制创作冲动,让人无法享受"通过做事来学习"的乐趣,只能停留在"通过阅读来学习";作者建议拥抱"内心那个20岁的自己",即使事后证明是"明显坏主意",也比只停留在考虑阶段更有收获
  • 语义diff工具各有缺陷:difftastic基于tree-sitter但会漏匹配实体(如PendingClick结构体显示为删除+新增而非重命名)、不支持Python有意义缩进变化;Gumtree学术基础好但匹配质量差;semanticdiff.com最成熟但只有VSCode插件和web服务;mergiraf文档清晰但算法(Gumtree)有根本局限;autochrome用动态规划做Clojure专用方案
  • 作者计划用Rust构建tree-sitter实体提取框架,先用简单贪心匹配实现命令行渲染,最终目标是在Emacs中复现Magit风格的实体级diff工作流——查看高层次的类型/函数增删改,逐个展开查看文本diff,并在同一界面内完成编辑
← 2026-04-23 2026-04-24 ...