2025-01-20 Hacker News Top Stories #
- TikTok 在美国遭遇停用,原因是联邦法律禁止该短视频应用程序在美国运行。
- 亚马逊的 AI 爬虫使得 Git 服务器不稳定,作者尝试了多种方法来阻止爬虫,但仍然无法解决问题。
- VS Code Pets 是一个可以在你的 VS Code 窗口中添加小宠物的扩展程序,旨在提升你的工作效率和编程乐趣。
- 卡尔曼滤波器是一种强大的工具,用于在不确定性条件下估计和预测系统状态,广泛应用于目标跟踪、导航和控制等领域。
- Forgejo 是一个自托管的轻量级软件开发平台,旨在提供一个易于安装和低维护的解决方案,帮助用户高效完成软件开发工作。
- Unix Spell 命令的诞生是在 1970 年代,当时 Unix 的创造者 Ken Thompson 和 Dennis Ritchie 为获得 AT&T 的资金支持,将 Unix 推销为专利部门的文本处理系统。
- Haskell 是一种函数式编程语言,但它也可以被认为是一种伟大的过程语言,具有类型系统和惰性求值,非常适合于编写高级别的代码和安全的代码。
- Bluesky 是一个基于开源协议 AT Protocol 的社交媒体平台,它允许任何人在其上构建应用程序,用户可以合作进行验证和内容管理。
- Yek 是一个快速的 Rust 基础工具,用于读取存储库或目录中的基于文本的文件,将其分成块,并序列化它们以供大型语言模型(LLM)消费。
- 这是一篇关于软件测试的在线书籍,名为"The Fuzzing Book",介绍了软件测试的各种技术,特别是模糊测试(Fuzzing)
TikTok goes dark in the US #
https://techcrunch.com/2025/01/18/tiktok-goes-dark-in-the-u-s/
TikTok 在美国遭遇停用,原因是联邦法律禁止该短视频应用程序在美国运行。该应用程序在星期六晚上停止服务,但在星期日中午开始恢复。TikTok 用户在星期六晚上 10:30 分左右收到了一条关于停用的消息,该应用程序也从苹果和谷歌应用商店中消失。然而,一些用户仍然可以通过网络访问 TikTok。
TikTok 发布了一条消息,称由于美国的法律禁令,该应用程序将暂时停止服务。该消息还提到,这可能只是暂时的停用,TikTok 表示将与新任总统合作寻找解决方案。TikTok 之前曾警告称,如果拜登政府不明确表示不会执行禁令,该应用程序将在星期五停止服务。
美国国会通过了一项法律,要求 TikTok 的母公司字节跳动出售该应用程序,否则将在美国禁止使用。该法律的通过是由于人们担心中国可能会通过 TikTok 进行监视和宣传。拜登政府签署了该法律,但新任总统表示将与 TikTok 合作寻找解决方案。
TikTok 表示将与新任总统合作寻找解决方案,并呼吁用户保持关注。该应用程序的停用引发了人们的广泛关注,许多用户正在寻找替代的短视频应用程序。TikTok 的母公司字节跳动表示不愿意出售该应用程序,但新任总统表示将与公司进行谈判,以寻找解决方案。
TikTok 的停用也引发了人们对其他中国应用程序的担忧,一些应用程序已经被美国政府列入了黑名单。TikTok 的停用对美国的科技行业产生了重大影响,许多公司正在关注这一事件的发展。TikTok 的未来仍然不确定,但该应用程序的停用已经引发了人们的广泛关注和讨论。
HN 热度 1150 points | 评论 2346 comments | 作者:mfiguiere | 21 hours ago #
https://news.ycombinator.com/item?id=42753396
- 美国限制 TikTok 的外国所有权是为了保护国家安全和利益
- 美国的行为可能是出于保护国内企业和行业的考虑
- 其他国家也可能会对美国企业采取类似的措施
- 美国的行为可能被视为双重标准,因为美国企业在其他国家也拥有巨大的影响力
- 限制 TikTok 的所有权可能是为了防止其被用作宣传工具或影响美国政治
- 美国的行为可能会被视为对言论自由和国际贸易的限制
- “灰色地带冲突"是一个模糊的概念,难以定义,但可能与国家安全和地缘政治有关
- 美国的行为可能是出于对中国和其他国家的战略竞争和对抗考虑
- 限制 TikTok 的所有权可能会对美国的国际形象和贸易关系产生影响
Amazon’s AI crawler is making my Git server unstable #
https://xeiaso.net/notes/2025/amazon-crawler/
这个网页是一篇博客文章,作者在文章中表达了对亚马逊 AI 爬虫对其 Git 服务器造成的影响的不满。作者表示,亚马逊的爬虫正在不断地访问其 Git 服务器,导致服务器不稳定,作者已经尝试了多种方法来阻止爬虫,包括配置 robots.txt 文件和添加 nginx 配置,但仍然无法阻止爬虫的访问。
作者表示,亚马逊的爬虫使用了各种手段来躲避检测,包括更改用户代理和使用住宅 IP 地址作为代理,作者认为这是不合理的,并希望亚马逊能够将其 Git 服务器添加到其爬虫的黑名单中。作者还表示,如果无法阻止爬虫的访问,可能需要关闭其 Git 服务器对公众的访问,这将对其造成不便。
在文章中,作者还提到了自己尝试开发一个名为 Anubis 的代理服务器来保护其 Git 服务器,Anubis 可以进行工作量证明检查,以确保只有合法的请求才能访问 Git 服务器。作者表示,Anubis 仍然处于开发阶段,但已经可以使用,读者可以访问其 Git 服务器来了解更多信息。
总的来说,这篇文章反映了作者对亚马逊 AI 爬虫造成的影响的不满和无奈,作者希望亚马逊能够采取措施来解决这个问题,并保护其 Git 服务器的稳定性。
HN 热度 588 points | 评论 236 comments | 作者:OptionOfT | 1 day ago #
https://news.ycombinator.com/item?id=42750420
- 发送律师函可能是解决问题的有效方法
- 检查 IP 地址和 User-Agent 字符串可以帮助确定是否是 Amazon 的爬虫
- robots.txt 文件可能不被所有爬虫尊重,需要采取其他措施
- 使用 DNS 查找可以帮助验证 Amazon 爬虫的身份
- 禁止某些 IP 地址或 ASN 可能是解决问题的有效方法
- 对于滥用资源的爬虫,需要采取措施限制其访问
- 使用 QoS 桶和 ASN 限制可以帮助控制爬虫的流量
- 需要采取措施验证 Amazon 的身份并防止伪造
- 发送 Cease and Desist 函可能是解决问题的最后手段
- 采取技术手段如 IP 封禁、ASN 限制等可能是解决问题的有效方法
VS Code Pets #
https://github.com/tonybaloney/vscode-pets
**VS Code Pets 插件概述 **
VS Code Pets 是一个可以在你的 VS Code 窗口中添加小宠物(如无聊的小猫、热情的小狗、顽皮的蛇、橡胶鸭子以及 Clippy 📎)的扩展程序,旨在提升你的工作效率和编程乐趣。
安装方法 #
你可以通过以下几种方式安装此扩展:
-
从 VS Code 市场直接安装。
-
在 VS Code 中打开扩展面板(Windows/Linux:Ctrl+Shift+X;MacOS:Cmd (⌘)+Shift+X),搜索 “vscode-pets” 并点击安装。
-
使用 VS Code 快速打开功能(Windows/Linux:Ctrl+P;MacOS:Cmd (⌘)+P),粘贴以下命令并按回车:
ext install tonybaloney.vscode-pets
使用 VS Code Pets #
安装完成后,你可以开始享受与这些可爱像素宠物的互动。具体操作如下:
- 打开命令面板(Windows/Linux:Ctrl+Shift+P;MacOS:Cmd (⌘)+Shift+P)。
- 运行 “开始宠物编码会话” 命令(
vscode-pets.start
)即可在 VS Code 中看到小猫的出现。
你可以查看文档以了解更多可能的功能和操作。
翻译支持 #
如果你希望帮助翻译,可以访问 Crowdin 项目,该项目会自动与仓库同步。你也可以在讨论区请求新增语言支持。
贡献者名单 #
本插件的宠物动画和设计由多位创作者提供支持,包括:
- 小猫的动画由 seethingswarm 设计。
- 小狗的媒体资源由 NVPH Studio 设计。
- 森林主题由 edermunizz 设计。
- 城堡资产使用了 GuttyKreum 的艺术作品。
- Clippy、Rocky、Zappy、橡胶鸭子、蛇、鸟等的媒体资源由 Marc Duiker 创建。
- 其他宠物(如狐狸、海龟和马等)的动画和资源由不同的创作者设计。
感谢 #
特别感谢所有参与本项目的贡献者。通过这个插件,你可以为自己的编程环境增添乐趣,提高生产力。
HN 热度 513 points | 评论 127 comments | 作者:vortex_ape | 1 day ago #
https://news.ycombinator.com/item?id=42750195
- 公司内部可以通过一些无害的恶作剧来提高员工的安全意识和警惕性
- 但在现代企业环境中,这种行为可能会被视为违反安全政策,甚至导致解雇
- 有些公司内部会通过一些有趣的方式来提醒员工锁定电脑,例如设置假的更新界面或更换桌面背景
- 公司文化和团队氛围会影响员工之间的互动和安全意识,某些公司可能会容忍或鼓励这种行为
- 过度严格的安全政策可能会导致员工之间的不信任和缺乏沟通
- 在某些情况下,通过一些轻松的方式来提醒员工安全意识可能比严格的政策更有效
- 公司应该找到合适的平衡点来确保安全意识和员工之间的信任和沟通
Kalman Filter Tutorial #
https://www.kalmanfilter.net/default.aspx
Kalman Filter 算法是一种强大的工具,用于在不确定性条件下估计和预测系统状态,广泛应用于目标跟踪、导航和控制等领域。尽管 Kalman Filter 的概念相对简单,但许多资源对该主题的解释过于复杂,缺乏实际例子和说明,使得学习者难以理解。
本网页提供了一个在线教程,通过数值例子和直观解释,使 Kalman Filter 更容易理解。教程涵盖了单变量(一维)和多变量(多维)Kalman Filter 的介绍。随着时间的推移,作者收到了许多读者的请求,要求增加更高级的话题,如非线性 Kalman Filter(扩展 Kalman Filter 和无香料 Kalman Filter)、传感器融合和实际实现指南。
作者基于在线教程的内容,撰写了一本书,涵盖了从基础到高级主题的内容,包括理论概念和实际应用。书中采用了直观的写作风格,优先考虑思想的清晰度而非数学严谨性,并从哲学角度出发,逐步深入量化分析。书中包含了许多示例,包括 14 个完全解决的数值例子,附有性能图表和表格。这些例子以逻辑的节奏进展,逐步构建,帮助读者深入理解 Kalman Filter。
Kalman Filter 的基本思想是估计系统的隐藏状态,即系统的真实状态,但这些状态无法直接测量。例如,GPS 接收器可以估计位置和速度,但这些状态是隐藏的,需要通过测量信号的到达时间来估计。然而,测量信号存在随机错误或不确定性,称为测量噪声。此外,目标运动不总是符合运动方程,存在外部因素如风、气流和飞行员操作,导致动态模型存在误差或不确定性,称为过程噪声。
Kalman Filter 的目标是提供一个准确的状态估计,即使存在测量噪声和过程噪声。它通过预测未来状态来实现这一目标,使用过去的估计值和动态模型。Kalman Filter 的预测要求是理解跟踪和预测算法的必要性。例如,跟踪雷达需要预测目标的未来位置,以便在下一次跟踪周期中定位目标。然而,雷达测量存在不确定性,需要使用 Kalman Filter 来估计目标的隐藏状态。
本书分为四个部分,第一部分介绍了 Kalman Filter 的基础概念,使用八个数值例子,帮助读者理解 Kalman Filter 的基本思想。第二部分介绍了 Kalman Filter 的矩阵表示,涵盖了多变量 Kalman Filter 和动态系统建模。第三部分专注于非线性 Kalman Filter,包括扩展 Kalman Filter 和无香料 Kalman Filter。第四部分提供了实际实现指南,包括传感器融合、变量测量不确定性、缺失测量值处理、异常值处理和 Kalman Filter 设计过程。
HN 热度 342 points | 评论 68 comments | 作者:ColinWright | 1 day ago #
https://news.ycombinator.com/item?id=42751690
- 要真正理解卡尔曼滤波器,需要先学习最小二乘法、递归最小二乘法和信息滤波器等相关理论。
- 卡尔曼滤波器可以看作是递归最小二乘法的一种高效实现。
- 没有数学严谨性就无法真正理解数学概念,需要通过学习代数、微积分和估计理论等来获得真正的理解。
- 可以通过阅读科普文章和实验来获得对数学概念的初步理解和直觉,但需要进一步学习和严谨的数学推导来深化理解。
- 在学习数学概念时,需要同时掌握手摇和严谨的两种理解方式,前者可以帮助建立直觉,后者可以提供深入的理解。
- 即使没有深入的数学知识,也可以通过实验和实践来获得对某些概念的初步理解和应用能力,但需要在以后学习中进一步深化理解。
Forgejo: A self-hosted lightweight software forge #
Forgejo 是一个自托管的轻量级软件开发平台,旨在提供一个易于安装和低维护的解决方案,帮助用户高效完成软件开发工作。它由 Codeberg e.V. 组织支持,这是一家民主的非营利组织,保证 Forgejo 始终是自由软件。
Forgejo 的主要特点: #
- ** 自托管 **:用户可以选择在 Codeberg 上创建账户,或者下载 Forgejo 自行托管项目,掌握软件开发的主动权。
- ** 简化的软件项目管理 **:Forgejo 强调易用性,旨在提升协作与生产力。
- ** 替代 GitHub**:Forgejo 提供一个与 GitHub 类似的环境,使用户能够顺利过渡到一个更自由、可控的平台,摆脱专有软件的束缚。
- ** 易于安装与维护 **:用户无需具备专业技能即可轻松控制自己的服务器,Forgejo 的安装和维护都相对简单。
- ** 轻量高效 **:尽管拥有丰富的功能,Forgejo 却占用极少的服务器资源,比其他类似平台消耗的资源少得多。
- **100% 免费软件 **:Forgejo 保证始终是自由与开源软件,并且在其项目开发中只使用自由软件。
未来愿景: #
Forgejo 希望通过创新推动软件开发平台的发展,促进分散化平台的协作开发。
#
HN 热度 336 points | 评论 245 comments | 作者:thunderbong | 21 hours ago #
https://news.ycombinator.com/item?id=42753523
- Forgejo 是一个自托管的轻量级软件 forge,作为 Gitea 的分支,采用非营利组织管理,所有功能都可以免费使用。
- Gitea 创建公司后开始提供商业功能,之前的社区贡献者变成了免费劳动力。
- Forgejo 与 Gitea 相比,没有 premium upsells,所有功能都可以免费使用,并且采用 GPL 协议。 -Forgejo 的设计类似于旧版 GitHub,界面和功能与 Gitea 相似。 -Forgejo 的开发者通过翻译、可访问性和单元测试等方式改进了软件,并添加了新的功能,如资产配额、wiki 搜索等。 -Forgejo 不进行商业化运营,仅接受捐款和补助。
- Gitea 的商业化运营使得社区贡献者感到不满,Forgejo 的出现是为了提供一个真正的开源和免费的软件 forge。 -Forgejo 的命名来源于埃斯佩兰托语,意为“锻造场”或“forge”。 -Forgejo 的开发者认为 Gitea 的商业化运营违背了开源精神,Forgejo 的出现是为了恢复开源的本质。 -Forgejo 的社区认为 Gitea 的商业化运营使得社区贡献者变成了免费劳动力,Forgejo 的出现是为了保护社区贡献者的权益。
How Unix spell ran in 64kb RAM #
https://blog.codingconfessions.com/p/how-unix-spell-ran-in-64kb-ram
Unix Spell 命令的诞生是在 1970 年代,当时 Unix 的创造者 Ken Thompson 和 Dennis Ritchie 为获得 AT&T 的资金支持,将 Unix 推销为专利部门的文本处理系统。自然地,一个文本处理系统需要一个拼写检查器。第一个 Unix Spell 命令版本由 Steve Johnson 在 1975 年编写,这是一个原型。尽管它工作正常,但由于实现简单,准确性不高,且由于需要在磁盘上查找字典,速度也很慢。
后来,Douglas McIlroy 接手了该项目,目标是提高工具的准确性和性能。他从两个方面入手:开发一个词干提取算法来减少单词到其词干,以及创建一个紧凑的词典,包含这些词干;设计一个紧凑的数据结构,以便在内存中加载词典,实现快速查找。词干提取算法通过迭代删除单词的共同前缀和后缀,直到没有可删除的后缀为止,如果单词仍然不在词典中,则标记为拼写错误。这个算法虽然不是 100% 准确,但在当时被认为是可接受的。
为了实现快速查找,Douglas McIlroy 首先使用了一个 Bloom 过滤器,这可能是其首次在生产环境中的应用。Bloom 过滤器由 Dennis Ritchie 实现。通过调整 Bloom 过滤器的参数,使其具有非常低的假阳性率,从而可以跳过实际的词典查找。然而,当词典增长到 30,000 个单词时,Bloom 过滤器的方法变得不切实际,于是引入了创新性的哈希压缩技术。
他们计算出,27 位哈希码可以保持可接受的低碰撞概率,但仍需要压缩。McIlroy 的解决方案是存储已排序的哈希码之间的差异,发现这些差异遵循几何分布。使用 Golomb 编码(一种为几何分布设计的压缩方案),他实现了每个单词 13.60 位的压缩率,接近理论最小值 13.57 位。最后,为了加速查找,他将压缩数据分割,通过牺牲少量内存(最终大小约为每个单词 14 位),换取了显著提高的性能。
整个过程展示了在严格的资源限制下,如何通过分析问题的基本原理、利用数学洞察力和设计优雅的解决方案来实现高效的数据压缩和快速查找。Unix Spell 命令的故事不仅是一段历史趣闻,更是对工程设计和问题解决能力的见证。
HN 热度 228 points | 评论 43 comments | 作者:madmax108 | 1 day ago #
https://news.ycombinator.com/item?id=42752604
- Unix 系统的拼写检查功能可以使用外部内存来实现,通过对文档和字典进行排序和合并来找出错误的单词。
- 早期的拼写检查算法可能不够准确和慢,因为需要在磁盘上进行字典查找。
- 使用 Bloom 过滤器可以提高拼写检查的效率和准确性。
- 有些人尝试使用硬件拼写检查器,例如连接在键盘和电脑之间的设备,可以实时检查拼写错误。
- Unix 系统的管道和命令可以用来构建一个简单的拼写检查器。
- 早期的电脑由于内存和磁盘容量有限,需要使用外部内存算法来处理大数据。
Haskell: A Great Procedural Language #
https://entropicthoughts.com/haskell-procedural-programming
Haskell 是一种函数式编程语言,常被认为是世界上最好的过程式编程语言。这个说法乍一看似乎有些荒谬,但实际上,它揭示了 Haskell 处理副作用的独特方式。在 Haskell 中,副作用是第一类值,可以存储在变量或数据结构中以备后用。例如,randomRIO
函数可以生成一个随机整数,但它不会立即执行,而是返回一个封装了副作用的对象。
这个对象可以被执行以产生随机整数,但它本身并不是一个整数,而是一组获取整数的指令。这种方式与 JavaScript 中的 Promise 类似,Promise 也是对副作用的封装。Haskell 中的 do
块常被用来执行副作用,但实际上它并不是什么魔法,而是使用两个运算符:*>
和 >>=
。*>
运算符用于组合两个副作用,返回第二个副作用的结果,而 >>=
运算符则用于将第一个副作用的结果传递给第二个副作用。
通过使用这些运算符,Haskell 程序员可以以过程式的方式编写代码,而不需要使用 do
块。这种方式使得 Haskell 成为了一种非常强大的过程式编程语言。另外,Haskell 中的类型系统也非常强大,允许程序员使用泛型类型和类型变量来编写灵活的代码。总的来说,Haskell 是一种独特的编程语言,它结合了函数式和过程式编程的优点,使得它成为了一种非常强大的工具。
Haskell 的这种处理副作用的方式使得它非常适合于编写高级别的代码,例如操作系统和编译器。同时,Haskell 的强大类型系统也使得它非常适合于编写安全的代码,例如密码学和安全协议。总的来说,Haskell 是一种非常强大的编程语言,它有着广泛的应用前景。
在 Haskell 中,副作用不仅仅是指输入输出操作,还包括了其他类型的副作用,例如异常和内存分配。Haskell 的类型系统可以帮助程序员追踪这些副作用,并确保代码的安全性和正确性。同时,Haskell 的函数式编程模型也使得它非常适合于并行编程和分布式编程。
综上所述,Haskell 是一种非常强大的编程语言,它结合了函数式和过程式编程的优点,使得它成为了一种非常强大的工具。它的独特的处理副作用的方式和强大的类型系统使得它非常适合于编写高级别的代码和安全的代码。同时,它的函数式编程模型也使得它非常适合于并行编程和分布式编程。
HN 热度 222 points | 评论 167 comments | 作者:kqr | 19 hours ago #
https://news.ycombinator.com/item?id=42754098
- Haskell 的类型系统很难掌握,需要大量的练习和经验来开发出对其的直觉。
- 使用
>>=
和>>
等运算符可能会让人感到困惑,do 表示法可能更容易理解。 - Haskell 的类型系统和惰性求值可以减少对宏的需求。
- Rust 的借用检查器可以防止某些类型的错误,但也可能会让人感到沮丧和难以使用。
- Rust 的静态分析有局限性,无法涵盖所有情况,需要更多的工具和文档来帮助开发者。
- Rust 的设计理念可能会与现有的系统和需求相冲突,需要找到平衡点来使其更实用。
We need to protect the protocol that runs Bluesky #
当前的网页是一篇文章,讨论了社交媒体的未来和保护互联网协议的重要性。作者认为,当前的社交媒体平台由少数大亨控制,导致了在线世界的不稳定和不确定性。例如,马克·扎克伯格(Mark Zuckerberg)最近宣布终止第三方事实核查,这是他最新的一次政策转变。
文章指出,社交媒体的所有权模式是问题的根源。这种模式优先考虑单一的集中控制和股东回报,导致了数字环境的不断变化,人们可能会在一瞬间失去通信渠道和生计。作者认为,互联网不需要这样。Bluesky 是一个新的社交媒体平台,它采用了不同的结构,基于开源协议 AT Protocol。这种协议允许任何人在其上构建应用程序,用户可以合作进行验证和内容管理。
Bluesky 的哲学核心是将社会媒体治理分散到社区和个人层面。作者认为,这种方法可以解决当前社交媒体面临的许多问题,例如宣传、激进化和网络欺凌。然而,Bluesky 仍面临挑战,包括缺乏盈利模式和对风险投资的依赖。为了确保 Bluesky 的长期发展,作者提出了创建一个非营利基金会来管理和保护 AT Protocol,建立冗余服务器,并促进基于该技术的生态系统发展。
文章最后指出,保护互联网协议和确保社交媒体的去中心化是非常重要的。作者呼吁人们采取行动,支持 Bluesky 和其他类似的项目,共同建设一个更加健康和稳定的在线世界。通过这样做,我们可以重新掌控自己的社交生活,创造一个更加独立、创新和本地化的在线对话空间。
HN 热度 176 points | 评论 230 comments | 作者:srameshc | 1 day ago #
https://news.ycombinator.com/item?id=42752703
- Bluesky 的协议是开源的,采用双重许可证(MIT 和 Apache-2.0),这意味着即使 Bluesky 公司决定改变许可证,社区也可以继续使用当前版本的协议。
- Mastodon 的发现功能不佳,很难找到新的人和话题关注。
- Bluesky 的发现功能更自然和容易使用。
- Mastodon 的算法和 moderation 机制存在问题。
- Bluesky 的 opt-in 算法和 moderation 机制更为合理。
- Nostr 协议具有去中心化和不可审查的特点,且有多种客户端支持。
- Mastodon 的实例管理员可以随意封禁用户,而 Nostr 协议则不允许这样做。
- Bluesky 和 Mastodon 的用户数量相似,但 Bluesky 更加吸引非技术人群。
- Mastodon 的入门门槛较高,需要选择实例和客户端,这可能是非技术人群不愿使用的原因。
Yek: Serialize your code repo (or part of it) to feed into any LLM #
https://github.com/bodo-run/yek
yek 是一个快速的 Rust 基础工具,用于读取存储库或目录中的基于文本的文件,将其分成块,并序列化它们以供大型语言模型(LLM)消费。默认情况下,该工具使用 .gitignore
规则跳过不需要的文件,使用 Git 历史记录来推断哪些文件重要,并推断出其他忽略模式(二进制、大小等)。它将内容分成块,基于近似的“令牌”计数或字节大小,并自动检测输出是否被管道化,如果是,则流式传输内容而不是写入文件。
yek 支持在单个命令中处理多个目录,并可以通过 yek.toml
文件进行配置。该工具的名称“yek”在波斯语中意为“一”。当在一个目录中运行 yek 时,它将产生一个文件并将其写入临时目录,文件内容包括目录中所有文件的内容,按照重要性排序。yek 将更重要的文件放在输出的最后,这对 LLM 消费有用,因为 LLM 倾向于关注上下文中后出现的内容。
要安装 yek,可以使用 Unix-like 系统(macOS、Linux)的安装脚本,也可以在 Windows 中使用 PowerShell 安装脚本。或者,可以从源代码构建。安装 Rust,克隆存储库,然后运行 make macos
或 make linux
构建工具,最后将其添加到 PATH 中。
yek 的使用方法很简单,可以直接在目录中运行 yek
命令来序列化整个存储库。它将所有文件分成 10MB 的块,并将文件写入临时目录。也可以使用选项来指定最大块大小、输出目录等。例如,可以使用 yek --max-size 128K --tokens src/
命令来限制最大块大小为 128K 令牌,并仅处理 src
目录。
yek 的配置文件 yek.toml
可以用于添加自定义忽略模式、定义文件优先级规则、添加二进制文件扩展名等。配置文件可以放在项目根目录中,也可以通过 --config
选项指定自定义路径。配置文件中的设置可以覆盖默认行为,例如添加忽略模式、定义优先级规则、配置 Git 基础优先级提升等。
yek 的性能很快,使用 Rust 编写,能够快速处理大量文件。它适用于需要快速序列化存储库或目录中的文件以供 LLM 消费的场景。
HN 热度 176 points | 评论 68 comments | 作者:mohsen1 | 22 hours ago #
https://news.ycombinator.com/item?id=42753302
- 未来编码的趋势是使用 AI 工具来完成编码工作,开发者将更多地关注代码组织和架构设计
- 代码的可读性和组织性将变得更加重要,因为 AI 工具需要高质量的代码来工作
- 即使 AI 工具可以生成代码,开发者仍然需要对代码进行审查和修改,以确保代码的质量和正确性
- 使用 AI 工具可以提高开发效率,但也需要开发者具备一定的知识和经验来正确地使用这些工具
- 手写代码的价值可能会降低,但开发者的经验和知识仍然是宝贵的资产
- 开发者需要学会如何与 AI 工具合作,才能在未来保持竞争力
- 代码组织和架构设计的重要性将进一步提高,因为 AI 工具需要高质量的代码来工作
- AI 工具可能会改变开发者的工作方式,但不会取代开发者的创造力和解决问题的能力
The Fuzzing Book #
该网页是一个关于软件测试的在线书籍,名为"The Fuzzing Book”。这本书介绍了软件测试的各种技术,特别是模糊测试(Fuzzing),并提供了大量的代码示例和交互式笔记本。
这本书分为六个部分,涵盖了从基础的软件测试介绍到高级的模糊测试技术等内容。第一部分介绍了软件测试的基础知识,包括测试的定义、测试的重要性和测试的类型等。第二部分介绍了模糊测试的基础知识,包括模糊测试的定义、模糊测试的类型和模糊测试的工具等。
第三部分介绍了语法模糊测试,包括如何使用语法来生成测试用例和如何使用语法来优化测试用例等。第四部分介绍了语义模糊测试,包括如何使用语义来生成测试用例和如何使用语义来优化测试用例等。第五部分介绍了领域特定的模糊测试,包括如何使用模糊测试来测试特定的软件系统和如何使用模糊测试来发现特定的软件错误等。
第六部分介绍了如何管理模糊测试,包括如何选择合适的模糊测试工具、如何设计模糊测试用例和如何评估模糊测试结果等。书中还提供了大量的代码示例和交互式笔记本,读者可以使用这些资源来实践和深入了解模糊测试的技术。
这本书的作者是一组经验丰富的软件测试专家,他们在书中分享了自己的经验和知识,帮助读者了解软件测试的基础知识和模糊测试的高级技术。书中还提供了许多实用的建议和最佳实践,帮助读者在实际工作中应用模糊测试技术。总的来说,这本书是软件测试领域的一本优秀资源,适合于软件测试的初学者和高级读者。
HN 热度 160 points | 评论 5 comments | 作者:chautumn | 13 hours ago #
https://news.ycombinator.com/item?id=42756286
- Fuzzing 是一种测试技术,可以用来发现软件中的 bug 和安全漏洞
- Fuzzing 可以自动化地测试软件,减少手动测试的工作量
- Fuzzing 可以用来测试编译器的正确性和安全性
- Fuzzing 书籍《The Fuzzing Book》是一份很好的资源,提供了 fuzzing 的基础知识和实践经验
- Fuzzing 可以用来发现软件中的安全漏洞和 bug,例如 Netscape Navigator 中的 2000 多个 bug
- Fuzzing 可以用来测试 API 和黑盒测试,例如 Fireblocks 的 API 黑盒测试
- Fuzzing 可以帮助人们重新思考软件的底层系统架构和代码的交互,以及对“bug”的理解