## 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密钥系统和宝贵的经验教训。
## 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 等项目。 总体而言,体验是积极的,尤其欣赏人工审核流程。
## 最佳锻炼时间以优化健康
最新研究表明,最佳锻炼时间并非一成不变,而是应与您的自然生物钟相协调。一项针对40多岁和50多岁成年人的研究发现,“早起者”从早晨锻炼中获益最多,而“夜猫子”则在晚上锻炼时效果更佳。
将锻炼与您的生理类型(您自然的清醒偏好)相匹配,可以改善血压、健身水平、睡眠质量和代谢指标。研究人员认为,这是由于内部时钟对全天激素水平和能量的影响。
专家强调一致性是关键,提倡设定小而可实现的目标。虽然健身房正在适应以提供灵活的时间,但优先进行规律的运动比严格的时间安排更重要。建议结合有氧运动和力量训练,例如靠墙深蹲或平板支撑,以促进整体健康。 进一步的研究仍在进行中,但研究结果支持根据个体的生物节律来调整锻炼计划。
## 依赖冷却时间的问题及上传队列的必要性
最近提出的“依赖冷却时间”——延迟采用新包版本——作为防御供应链攻击的手段正在获得关注,但其根本上存在缺陷。虽然看似有效(大多数攻击在几天内就能被检测到),但冷却时间依赖于首先被他人入侵才能识别恶意发布,本质上是建立在别人的不幸之上。
这种方法成本高昂,需要在多个包管理器和项目中进行广泛配置,而且并非万无一失——很容易通过单独安装来规避。更好的解决方案是集中式的“上传队列”,在新包发布后(但在分发之前)将其保留一段时间,用于自动安全扫描、公开差异审查,甚至可选的beta测试。
这借鉴了Debian成功的系统,将发布与分发分离,消除了搭便车问题。上传队列还能降低泄露发布凭证的影响,并提前通知更新。资金可以来自现有的包索引赞助者,或通过为商业发布提供付费加速审查。最终,像上传队列这样的集体、集中式方法比依赖于个体、被动的冷却时间更安全、更高效、更合乎道德。尤其是在LLM兴起的情况下,markdown文件实际上是可执行代码,这增加了供应链攻击的脆弱性,这一点至关重要。