肖恩技术周刊(第 62 期):不纯粹工程
周刊内容: 对一周内阅读的资讯或技术内容精品(个人向)进行总结,分类大致包含“业界资讯”、“技术博客”、“开源项目”和“学习资源”等。
更新时间: 周一
历史收录: 技术周刊合集
订阅方式: 微信公众号“肖恩聊技术”,除周刊外还有更多原创技术博文,欢迎关注👏🏻~
编程工作可以分为两种截然不同的类型。第一种是 纯粹工程 (pure engineering),它的目标是尽可能完美地解决一个技术问题。开源项目常常属于这一类:某个工程师想写出最棒的 HTTP 请求库,或是打造他心目中理想的游戏引擎。第二种是 不纯粹工程 (impure engineering),它的目标是尽可能高效地解决一个现实世界的问题。科技公司的付费工作大多如此:工程师们被要求在截止日期前,尽其所能地交付某个项目或功能。
在纯粹的软件工程中,你所做的事情更接近艺术或研究。说它像艺术,是因为工程师被一种审美意识所驱动(比如,什么样的库或游戏引擎才算得上好)。说它像研究,是因为它是开放式的:工程师一旦找到了一个解决方案,他可以永远地测试和修改下去,不断尝试(也通常会不断放弃)新的方法。
不纯粹的软件工程则更像是水管工或建筑工。工程师的审美必须服从于他人的需求(通常是雇主的需求)。他们是在为别人的问题构建解决方案。既然是别人的问题,就必须按时完成,而这就意味着妥协。
业界资讯
npm 的 debug 和 chalk 包遭到入侵
2025年9月8日,npm上18个流行的JavaScript包(如debug
和chalk
)被恶意代码篡改,每周下载量超20亿次。这些包被注入恶意代码后,会在客户端执行,拦截和篡改与加密货币和Web3相关的网络请求及钱包交互,将资金和批准重定向到攻击者控制的账户,用户却毫无察觉。
恶意代码通过混淆技术隐藏功能,注入浏览器后挂钩fetch
、XMLHttpRequest
和钱包API,监控敏感数据并篡改目标地址,使用“相似地址”减少察觉。即使用户界面显示正确,实际交易已被篡改。
攻击者通过伪造的npm支持邮件(support [at] npmjs [dot] help
)进行钓鱼攻击。维护者在得知被攻击后开始清理受影响的包。Aikido系统还检测到另一个包[email protected]
被相同攻击者篡改。
修复建议包括检查使用的包版本、清理npm缓存、重新安装包,并使用Aikido SafeChain等工具防止类似攻击。
最轻的 iPhone 亮相,还有这些惊喜:Apple 发布会看点回顾
2025年9月10日凌晨,Apple召开新品发布会,推出iPhone 17系列、Apple Watch系列及AirPods Pro 3等新品。iPhone 17系列包括基础款iPhone 17、轻薄的iPhone Air和旗舰iPhone 17 Pro系列,均配备A19系列芯片,支持更高刷新率屏幕与更好影像系统,容量与续航显著提升。Apple Watch系列更新至Series 11、Ultra 3和SE 3,新增5G蜂窝、双向卫星通信、高血压提醒等功能,续航与健康监测能力增强。AirPods Pro 3则在音质、降噪、佩戴体验及健康监测方面全面升级,新增实时翻译功能。此外,Apple还发布了多款新配件,如MagSafe保护壳、防护边框和MagSafe电池等,进一步丰富了产品生态。此次发布会展现了Apple在技术创新和用户体验提升方面的持续努力,为消费者带来了更多选择和惊喜。
佳文共赏
对 Cloudflare 创始人兼CEO马修・普林斯有关互联网历史与流量付费的采访
本文是Stratechery对Cloudflare创始人兼CEO马修·普林斯的访谈,主要围绕Cloudflare的创立历程、业务模式以及互联网内容分发的未来展开。普林斯分享了他从法律专业转向技术领域的经历,以及如何在哈佛商学院期间构思出Cloudflare的创意。Cloudflare最初通过提供免费服务吸引用户,逐步拓展到企业级市场,并在网络安全和内容分发领域占据重要地位。普林斯还探讨了AI对传统互联网商业模式的影响,尤其是谷歌创建的基于流量的商业模式,并试图通过Cloudflare的力量为内容创作者创造新的商业模式。访谈还涉及了Cloudflare在内容分发、网络安全、AI技术应用等方面的现状和未来展望,以及普林斯对AI时代内容创作者如何获得合理回报的思考。
使用智能体为智能体编写高效工具
文章探讨了为人工智能代理编写工具的方法,以提升其解决现实任务的能力。工具是代理与系统间的桥梁,需为代理设计。编写工具时,应先构建原型并本地测试,接着通过复杂任务评估工具表现,分析代理的困难点和工具调用指标,最后与代理合作优化工具。有效工具的编写需遵循几大原则:选择合适的工具实现,避免简单包装现有功能;为工具命名以明确功能边界;返回对代理有意义的上下文信息;优化工具响应以提高标记效率;精心设计工具描述和规范。未来,随着代理能力的提升,工具开发需适应非确定性模式,通过系统化评估驱动方法持续改进。
技术博客
你的大客户可能是最大的瓶颈
文章讲述了在多租户系统中,如何解决“最大客户可能成为最大瓶颈”的问题。作者所在的公司Trieve在引入最大客户后,发现新客户的大量文档上传导致系统处理管道堵塞,其他客户的文档索引请求被延迟数小时。这揭示了多租户系统中的“嘈杂邻居”问题,即一个贪婪的租户可能会耗尽所有资源,导致其他租户无法获得服务。
为了解决这个问题,作者提出了公平排队(Fair Queueing)的解决方案。传统的先进先出(FIFO)队列只关心谁先到达,而不考虑谁最需要服务。公平排队则通过为每个客户分配独立队列,并通过轮询调度器轮流处理每个客户的消息,确保每个客户都能得到服务,防止饥饿现象。
作者构建了一个名为Broccoli的系统来实现公平排队。其核心架构包括两个主要组件:每个客户的专用队列和一个轮询调度器。这种设计的优点是完全自平衡的,忙碌的客户保持在轮转中,安静的客户自动退出,每个客户都能公平地获得处理时间,无论他们排队的工作量有多大。
类型检查不是解决方案
文章质疑编程行业对类型检查的痴迷,认为这可能是掩盖架构错误的复杂工具。类型检查被视作大型程序可维护性的关键,但实际上,它只是我们创造的不必要的复杂性的证明。软件行业普遍认为类型检查可以捕获错误、使重构更安全,但这些观点是基于当前构建软件的方式。作者指出,类型检查的需求并非规模的自然结果,而是不良架构选择的症状。
作者认为,函数调用作为现代编程的基础抽象,带有隐藏的负担,不适合分布式、基于时间的系统。相比之下,电子工程师设计的系统复杂度更高,但不依赖复杂的类型系统,而是通过严格隔离、明确的时序约束和简单接口来管理复杂性。
作者呼吁重新审视这些假设,探索更好的架构选择,如真正的隔离,使系统更容易理解。
开源项目
Nano Banana 提示词合集
gemini - 2.5 - flash - image(也被称作 Nano Banana)生成的精选图像和提示词合集。
自学计算机科学
TeachYourselfCS 的中文翻译。
工具推荐
西游记取经路线图
跟随唐僧师徒四人的传奇西行之路,体验八十一难的奇幻冒险。
摸摸鱼计时器
一款藏在 macOS 菜单栏里的小工具,每天自动统计摸鱼时间,帮你心里有数、偶尔自省、持续进步!