每日HackerNews RSS

## WACLI:WhatsApp 命令行界面 WACLI 是一个基于 whatsmeow 构建的第三方 CLI 工具,提供本地 WhatsApp 消息历史同步、离线搜索以及消息/联系人管理功能。它利用 WhatsApp Web 协议,与 WhatsApp 无关联。 主要功能包括:同步消息(首次认证通过二维码,然后持续同步)、搜索消息历史(包括表情反应和媒体)、发送文本和文件(可覆盖文件名)以及管理群组。 可以通过 Homebrew 或本地构建进行安装。数据默认存储在 `~/.wacli` 目录。 “历史回填”功能尝试检索较早的消息,需要您的主设备在线,但属于尽力而为,可能无法返回完整历史。 WACLI 提供人类可读和 JSON 输出选项,并受到 `whatsapp-cli` 项目的启发。详细设计说明可在 `docs/spec.md` 中找到。

对不起。

## 多租户系统中的API密钥设计 这篇博文详细介绍了作者为具有数据库分片的多租户系统设计API密钥的过程。最初,作者希望超越简单的“身份验证字符串”来更好地理解API密钥的功能,并探索了各种将API请求高效路由到正确数据库分片的方法。 传统方法包括对API密钥进行哈希处理,并将它们映射到中央“元分片”中的帐户ID。虽然可行,但这感觉是多余的。考虑的替代方案包括为公司分配唯一的 前缀,以及使用Base-62/70编码哈希值以创建更短、可映射的字符串。然而,性能测试揭示了编码方法中BigInt操作效率低下。 最终,作者采用了SHAKE256哈希算法(SHA3的一种变体)。这种“海绵”算法允许生成固定大小的输出,从而降低计算成本和索引大小,同时保持强大的安全性。哈希值的10字符base64url编码在性能、抗碰撞性和索引效率之间提供了平衡。 这次经历强调了彻底测试、挑战假设以及理解底层技术(如B树索引和哈希算法)的重要性。最终的解决方案提供了一个功能性的API密钥系统和宝贵的经验教训。

## Hacker News 讨论:API 密钥设计 一篇由 vjay15 撰写的关于 API 密钥设计的博客文章,在 Hacker News 上引发了热烈讨论。作者研究了各种方法,从简单的随机字符串配合数据库查找,到结合校验和和前缀以进行安全扫描。 核心争论集中在复杂性上。许多评论者认为该设计过于复杂,提倡使用简单、随机生成的密钥存储(哈希)在数据库中——他们认为这是一个足够好的解决方案。有人对校验和的实用性表示担忧,认为它主要帮助秘密扫描,而非性能优化。 有人提出了 JWT 等替代方案,但遭到了关于增加复杂性(令牌刷新)和错误实施可能带来的安全风险的反驳。 几位用户强调了*不要*自行编写加密算法,并利用成熟库的重要性。 最终,这场讨论突出了 API 密钥设计中安全、性能和可维护性之间的权衡,一个反复出现的主题是“保持简单”。作者,一位初级开发者,将这些反馈视为宝贵的学习经验。

## 亚马逊收购Globalstar并扩展卫星网络 - 摘要 亚马逊计划收购Globalstar,旨在加强其Project Kuiper卫星网络。此举引发了对卫星通信行业可行性的讨论,评论员指出一个反复出现的模式:最初的失败,随后是成功的第二代所有权。 对话强调了该业务的资本密集型特性,最初的公司往往无法收回启动成本,但后续所有者可以成功。人们对卫星星座的长期盈利能力表示担忧,一些人认为它们只适用于军事/社会化用途或作为频谱博彩。另一些人认为,在陆地基础设施服务不足的地区,仍然存在利基市场。 一个关键的争论集中在太空碎片和凯斯勒综合症的潜在风险,以及大量卫星对天文观测的影响。讨论还涉及向服务型经济日益发展的趋势,以及科技巨头扩展到国防领域的潜力。最终,此次收购标志着亚马逊致力于与传统ISP和SpaceX竞争,以提供全球连接。

## Enlightenment E16 与一个20年的Bug 作者是一位长期使用轻量级Enlightenment E16窗口管理器(最初于1997年发布)的用户,详细描述了他修复一个罕见、存在十多年的bug的经历。在使用Atril处理PDF时,桌面冻结,最终追溯到imlib2字体渲染中的一个缺陷——具体来说,是牛顿算法在截断长窗口标题时的错误实现。 这个bug在将标题拟合到有限空间时导致无限循环,牛顿方法中缺少关键的迭代限制。作者通过限制迭代次数、向下取整以防止除以零以及确保终止来解决了这个问题。 这次经历突出了现代软件与稳定但老化的系统之间的权衡。虽然较新的软件会引入新的bug和供应链漏洞(例如XZ Utils后门),但维护较旧的代码库可以实现直接控制和降低bug率——前提是有专门的维护者。作者提倡自给自足的好处以及像E16这样维护良好、"老旧"软件的稳定性。

对不起。

## PCBWay 评测 & BurgerDisk 项目更新 最近,PCBWay 提供了赞助来评测他们的服务,用于 BurgerDisk 项目。作者最初犹豫不决,因为重视独立性。 之前曾使用 PCBWay 制作 BurgerDisk 的早期版本,他们接受了赞助,认为该服务对原型制作来说价格实惠——5 片双层 PCB 大约 12 美元。 他们之前切换到 JLCPCB 是因为支付选项,但 PCBWay 现在提供了更方便的替代方案。 虽然 JLCPCB 的自动化 BOM 功能很有用,但作者强调可能会出现错误(例如缺少接地层)。 PCBWay 更手动的方式,在制造前进行审核,感觉更安全,即使速度较慢。 作者通过订购一个全尺寸 SD 卡模块进行了测试,该模块在 AliExpress 上无法找到带有必要电平转换器的版本。 PCBWay 对开源的支持是一个主要吸引力,为 Kicad 设计提供 10% 的项目贡献,并提供“分享 & 销售”平台,方便开源制造。 20 个 SD 模块的成本为 75 美元(每个 3.75 美元),略高于 JLCPCB,但额外的质量控制和社区支持是合理的——PCBWay 大力捐赠给 Kicad 等项目。 总体而言,体验是积极的,尤其欣赏人工审核流程。

对不起。

## Agile 的衰落:回顾 本文认为,“Agile”尽管被广泛采用,但实际上是为解决一个早已被解决的问题而存在的——这个问题的解决方案早在几十年前的软件工程实践中就已存在。作者认为,《Agile 宣言》提供了一些含糊的原则,这些原则常常以缺乏具体定义的“真正的 Agile”为借口进行辩护。 关键在于,迭代开发、客户参与和原型设计这些核心理念,早在 1970 年就被温斯顿·罗伊斯等工程师所倡导,比《宣言》早了 25 多年。Agile 主要通过它*不是什么*来定义自己——瀑布模型——而瀑布模型本身已经被理解为存在局限性。 大型语言模型 (LLMs) 的兴起现在正在推动回归全面的文档和规范,证明了详细的规划实际上可以*产生*可用的软件——这直接与 Agile 优先考虑“可用的软件而非全面的文档”相矛盾。最终,作者认为 Agile 只是对现有思想的重新包装,它的时代已经过去,并倡导回归健全的规范和设计实践。

安杰伊·奥德日沃沃克最近发表的论文提出,所有初等函数都可以仅使用函数 *E(x,y) = exp x - log y*、变量和常数1来表达,他称之为“EML项”。虽然这一说法在网上引起了兴奋,但其有效性取决于“初等函数”的定义。 奥德日沃沃克使用一组包含36个特定符号的定义来定义“初等”,在他的定义下,他的定理成立,并接受对标准对数的修改。然而,传统的数学定义,源于19世纪李ouville等数学家的工作,包括代数函数和任意多项式根。 该论文的核心论点在于证明EML项具有“可解的单调群”,这是科瓦斯基拓扑伽罗瓦理论中的一个概念。然而,作者认为这不足以支撑他的结论。具体来说,EML项*无法*表示像一般五次方程的根这样的函数,而这需要一个不可解的单调群。因此,可以用EML项表达的函数类别是标准初等函数的严格子集,这意味着该论文的广泛主张在传统的数学理解下并不成立。

## 最佳锻炼时间以优化健康 最新研究表明,最佳锻炼时间并非一成不变,而是应与您的自然生物钟相协调。一项针对40多岁和50多岁成年人的研究发现,“早起者”从早晨锻炼中获益最多,而“夜猫子”则在晚上锻炼时效果更佳。 将锻炼与您的生理类型(您自然的清醒偏好)相匹配,可以改善血压、健身水平、睡眠质量和代谢指标。研究人员认为,这是由于内部时钟对全天激素水平和能量的影响。 专家强调一致性是关键,提倡设定小而可实现的目标。虽然健身房正在适应以提供灵活的时间,但优先进行规律的运动比严格的时间安排更重要。建议结合有氧运动和力量训练,例如靠墙深蹲或平板支撑,以促进整体健康。 进一步的研究仍在进行中,但研究结果支持根据个体的生物节律来调整锻炼计划。

对不起。

一件令人难以置信的杰作。每个阶段都可作为独立的艺术品,同时又作为动态变化的艺术,以及玩家在其中移动的游戏。它真正实现了艺术与游戏的融合。作为一款平台跳跃游戏,目标很简单,就是收集物品并到达门,但由于视觉上并不总是清晰明了,你需要超越操作层面的思考,这使得它既具有挑战性又充满乐趣,我非常喜欢。这是一款令人难以置信的、令人满意的游戏和艺术体验喵~!(=✧ω✧=)

对不起。

## 依赖冷却时间的问题及上传队列的必要性 最近提出的“依赖冷却时间”——延迟采用新包版本——作为防御供应链攻击的手段正在获得关注,但其根本上存在缺陷。虽然看似有效(大多数攻击在几天内就能被检测到),但冷却时间依赖于首先被他人入侵才能识别恶意发布,本质上是建立在别人的不幸之上。 这种方法成本高昂,需要在多个包管理器和项目中进行广泛配置,而且并非万无一失——很容易通过单独安装来规避。更好的解决方案是集中式的“上传队列”,在新包发布后(但在分发之前)将其保留一段时间,用于自动安全扫描、公开差异审查,甚至可选的beta测试。 这借鉴了Debian成功的系统,将发布与分发分离,消除了搭便车问题。上传队列还能降低泄露发布凭证的影响,并提前通知更新。资金可以来自现有的包索引赞助者,或通过为商业发布提供付费加速审查。最终,像上传队列这样的集体、集中式方法比依赖于个体、被动的冷却时间更安全、更高效、更合乎道德。尤其是在LLM兴起的情况下,markdown文件实际上是可执行代码,这增加了供应链攻击的脆弱性,这一点至关重要。

## 依赖冷却期与软件供应链 最近的讨论围绕“依赖冷却期”——在新的软件包发布广泛传播之前实施的延迟。反对冷却期的核心论点是,它们依赖于其他人来“测试”新版本,本质上是利用他们可能暴露于漏洞的风险。 然而,许多评论员认为这种说法不准确。他们认为冷却期并非为了逃避责任,而是关于合理的风险评估——优先考虑稳定性,并为自动化工具和研究人员提供安全扫描的时间。上传队列,一个相关概念,被视为一种更结构化的方法,可能允许选择加入的早期访问以进行测试。 人们对软件包管理器增加的复杂性和攻击者可能利用该系统的可能性表示担忧。另一些人指出,仅仅延迟更新并不能解决问题,因为漏洞可能在发布很久之后才被发现。最终,这场争论凸显了开源生态系统中快速创新与安全之间的紧张关系,以及需要一种平衡的方法,考虑到不同的风险承受能力和组织需求。许多人认为,冷却期、上传队列和改进的审计实践相结合是最佳的前进方向。

更多

联系我们 contact @ memedata.com