The First Idempotency Key5 days agohttps://hatchet.run/blog/first-idempotency-key作者调查了幂等键的第一个实例,幂等键是确保重复API消息被忽略的唯一标识符。Claude AI最初声称Stripe在2011年左右引入了幂等键,但后来撤回,指出Stripe大约在2015年普及了该头部。早期的概念包括Amazon EC2的ClientToken和2005年使用唯一POST URL的POST Once Exactly规范。像OASIS ebXML和WS-ReliableMessaging这样的传输级标准也旨在通过消息去重实现恰好一次处理。更多...
Why Do React Hooks Rely on Call Order? — overreacted6 days agohttps://overreacted.io/why-do-hooks-rely-on-call-order/React Hooks rely on persistent call index between re-renders to give state variables stable identity.Alternative proposals like keyed state cause name clashes, especially when custom Hooks are used.Custom Hooks are central to Hooks, but some alternatives prevent extracting them or force extra wrappers.The diamond problem (two Hooks using the same underlying Hook) is naturally resolved by call order.更多...
Optimized for Change — overreacted6 days agohttps://overreacted.io/optimized-for-change/优秀的API设计注重可记忆性、无歧义性,并鼓励编写可读、正确且高性能的代码。第一阶设计方面(如可读性)很重要,但代码和需求会随时间演变。第二阶设计则预判使用API的代码将如何变化,包括移动、复制、重命名、统一、拆解、添加临时方案、优化、废弃以及调试等操作。优秀的API不仅能帮助开发者顺利成功,还能通过针对变更进行优化,使其长期保持成功状态。
The “Bug-O” Notation — overreacted6 days agohttps://overreacted.io/the-bug-o-notation/Bug-O 表示法衡量的是,随着代码库的增长,API 或代码结构在多大程度上拖慢了调试速度,类似于算法中的大 O 表示法。没有结构的命令式 DOM 操作会导致 O(n!) 的 Bug-O,因为代码路径的组合爆炸,使得调试几乎不可能。通过渲染前重置状态,可以改善 Bug-O,将复杂度降低到 O(n),其中 n 是渲染代码路径的数量。像 React 这样的库通过强制组件边界并始终从头重新创建 UI 来帮助降低调试轨迹到 O(树高度)。更多...
<antirez>6 days agohttp://antirez.com/news/107作者花费数天时间反复设计新模块和Redis数据类型的API,强调为程序员设计的用户界面至关重要。程序员用户界面(API、库、命令行工具等)每天都被使用,并塑造了对系统的认知;简洁性至关重要。反复设计以找到简单的界面并非完美主义,而是对设计空间的探索,由感知引导而非严格规则。良好简洁的用户界面能够学习通用概念(微量营养素),而非过时的临时知识(垃圾食品)。更多...
Designing APIs for Agents20 days agohttps://www.freestyle.sh/blog/opinion/designing-apis-for-agents为人类设计的API优先考虑最少使用模式、良好默认值以及易于上手、无需大量文档阅读的SDK。为智能体设计的API优先考虑清晰和明确性,因为智能体可以阅读大量文档并快速生成大量代码。对智能体而言,默认值是不好的,因为它们可以根据文档明确填写所有字段,从而减少误解和错误。错误对智能体来说并非坏事;它们提供了澄清API行为的机会,这与人类相反,后者应尽量减少初次使用时的错误。更多...
Good APIs Age Slowlya month agohttps://yusufaytas.com/good-apis-age-slowly最初令人印象深刻的 API 往往会导致后续维护困难;应信任持久性而非初始的优雅。API 的第一个版本常被高估,因为它在真实世界依赖关系出现前,只会在简单环境中被评判。关键的 API 设计问题涉及边界:尽早决定什么是公开的、什么是私有的,以避免意外的依赖。初始时尽可能少地暴露,因为以后添加比在他人依赖后移除更容易。更多...