每日HackerNews RSS

一篇最近的文章,在Hacker News论坛上讨论了黑猩猩如何处理相互矛盾的证据,表明它们修正信念的能力是理性的一个关键标志——这与当前哲学、心理学和认知科学的观点一致。 讨论很快转向人类的理性,评论者质疑许多人是否始终表现出这种特质,并引用部落主义和基于身份的推理等因素,这些因素常常凌驾于逻辑之上。 几个人指出,非理性并非任何一个群体的独有特征,而是人类的常见倾向。 有趣的是,研究表明黑猩猩在理性决策方面可能*优于*人类,特别是它们会避免受到没有更强证据的他人影响。 这引发了进一步的猜测,关于黑猩猩可能如何处理像纽科姆问题这样的复杂哲学问题。 核心要点是对人类理性的假设提出了挑战,并与我们的灵长类亲戚进行了一次有趣的比较。

## .NET PDF 渲染解决方案的探索 为 C# 项目寻找一款良好且具有宽松许可的 PDF 渲染解决方案是一个持续的挑战。作者的研究表明,核心困难不在于*创建* PDF,而在于准确地布局和设置其内容——这项任务通常通过嵌入浏览器引擎来解决,但这并非理想方案。 理想的解决方案需要 DOM 表示、布局/样式功能、PDF 写入功能以及格式转换。虽然许多库存在于此过程的特定部分,但只有少数提供完整且具有宽松许可的软件包。 **QuestPDF** 脱颖而出,提供了一个现代且维护良好的库,尽管其许可结构具有独特性,允许重新分发 MIT 许可的代码,但存在商业限制。**MigraDoc** 与 **PDFSharp** 结合使用,成为最可行的选择,尽管在高级样式和大型报告的潜在内存问题方面存在局限性。 作者探索了许多其他库(如 iText、Aspose.PDF 和各种 HTML 到 PDF 转换器),但大多数由于许可或功能问题而未能满足要求。最终,缺乏一个真正全面的开源解决方案促使作者对创建“胶水代码”产生了兴趣,以便更好地集成现有的 .NET 库,从而更轻松地进行文档格式转换。

## C# 中寻找宽松许可的 PDF 库 - 摘要 一个 Hacker News 讨论集中在寻找一个好的、宽松许可的 C# PDF 库的困难上。发帖者寻求一个可以免费使用的、没有限制性许可的库,由此引发了一个漫长的、包含各种建议和经验的帖子。 许多用户抱怨 .NET 生态系统中缺乏强大的选择,一些人甚至诉诸调用外部进程(如 Python 脚本)或 API。虽然 Aspose.PDF 是一个商业选择,但它因价格昂贵、存在错误且支持较差而受到批评。iText 等替代方案也被考虑过,但定价存在问题。 讨论中提到了几个库,包括 MigraDoc(推荐用于简单的布局)、PdfSharpCore、PdfPig 和 YakPDF。然而,每个库都有其局限性——许可问题、功能不完整或依赖于其他依赖项。一些人提倡使用 Puppeteer 或 Playwright 等工具进行 HTML 到 PDF 的转换,但这会引入浏览器渲染不一致的问题。 最终,这次讨论凸显了一个常见痛点:在选择 PDF 库时,成本、功能、许可和维护之间的权衡,以及经常需要变通方法或妥协。

数百吨非法倾倒的垃圾——面积达60米 x 15米 x 10米——在牛津郡切尔韦尔河附近的一片田地被发现,引发了对潜在“生态灾难”的担忧。无人机拍摄的画面显示,这是一项高度有组织的操作,垃圾经过预先粉碎并整齐地堆放,表明可能涉及犯罪团伙。 倾倒规模前所未有,清理费用可能超过当地议会全年预算。人们的担忧集中在环境风险上:毒素渗入水道,分解引发火灾,以及对泰晤士河生态系统的整体破坏。 批评者,包括泰晤士河之友,指责环境署不作为和“无能”,声称自9月以来就已知晓该地点,但未采取任何干预措施。该机构表示正在进行调查,并已获得法院命令关闭该地点。最近的贵族委员会报告强调了有组织犯罪在全国范围内倾倒垃圾中的作用,并指出了环境署内部存在的问题,该机构的首席执行官对此表示异议。

## 驯服 C:构建一个安全且快速的 Grep 克隆 本文详细介绍了作者使用 C23 构建 `cgrep`,一个高性能 `grep` 克隆程序,同时主动避免常见的 C 陷阱,如内存泄漏和段错误。核心思想是通过一个自定义的 600 行头文件 `safe_c.h`,用 C++ 和 Rust 启发的现代安全特性来增强 C 的能力。 `safe_c.h` 引入了类似 RAII 风格的清理机制,使用 `[[cleanup]]` 属性(或兼容的替代方案),智能指针 (`UniquePtr`, `SharedPtr`) 用于自动内存管理,以及安全的字符串处理,使用 `StringView` 和 `Span` 来防止缓冲区溢出。它还包含 Result 类型以实现强大的错误处理,以及互斥锁包装器以防止死锁。 这些添加并没有牺牲性能;作者利用编译器内在函数,如 `LIKELY`/`UNLIKELY` 进行分支预测优化。结果是,一个 2,300 行的 `cgrep` 实现,其速度与传统的 C 一样快,但更安全且更易于维护,需要的手动内存管理调用也少得多。作者将在后续文章中详细介绍 `cgrep` 的设计和性能(声称在某些基准测试中,它优于 `ripgrep`,且内存占用更小)。最终,该项目展示了 C 的灵活性和可扩展性,证明了在合适的工具下,C 既可以强大*又*安全。

## fastmcpp:高性能C++ MCP实现 fastmcpp是Python库`fastmcp`的C++移植版本,处于测试阶段,提供模型上下文协议(MCP)的高性能实现。它支持工具、资源、提示,以及多种传输层,包括STDIO、HTTP/SSE和WebSocket。 该库为构建MCP服务器和客户端提供原生C++体验,依赖项极少(nlohmann/json,可选libcurl、cpp-httplib、easywsclient)。主要特性包括JSON-RPC协议处理、JSON Schema验证,以及用于请求/响应处理的中间件。 fastmcpp跨平台(Windows、Linux、macOS),需要C++17或更高版本以及CMake 3.20+。虽然核心MCP功能与Python参考实现一致,但C++测试套件目前较小。Python的`fastmcp`仍然是行为和API的权威来源。 示例程序展示了服务器和客户端的使用、工具集成以及中间件实现。开发正在积极进行中,欢迎通过GitHub贡献代码。([https://github.com/0xeb/fastmcpp](https://github.com/0xeb/fastmcpp))

## Chrome DevTools CDP 编辑器:摘要 Chrome DevTools 协议 (CDP) 允许开发者远程与 Chrome 浏览器交互,用于调试和自动化。为了简化此过程,DevTools 引入了一个新的 CDP 编辑器,旨在简化 CDP 命令的编写和发送。 此前,手动构建命令因复杂的语法和不断参考文档的需求而繁琐。新的编辑器通过**命令和参数的自动补全**解决了这个问题,减少了错误并节省了时间。它动态显示必需(红色)和可选(蓝色)参数,为字符串、数字、枚举、布尔值、数组和对象提供直观的输入字段。 主要功能包括**实时错误检查**、**带有文档链接的工具提示**以及**编辑和重新发送**以前使用的命令的能力。用户还可以轻松**将命令复制为 JSON 格式**。 该编辑器的目标是使 CDP 更易于访问,提高原型设计速度和整体开发者体验。鼓励用户在 Chrome Canary、Dev 或 Beta 渠道中尝试新功能并提供反馈。

## Chrome DevTools 协议命令编辑器发布 Chrome 最近发布了一个新的 DevTools 协议 (CDP) 命令编辑器,目前隐藏在实验标志之后(可通过 DevTools 设置访问)。这允许开发者直接编写 CDP 命令。 讨论强调了 Chrome 和 Firefox 开发工具的一个显著区别:CDP 拥有完整的文档、稳定的 API 和强大的工具,而 Firefox 的同等功能缺乏这些特性,通常需要逆向工程,并且容易因更新而损坏。 虽然 CDP 功能强大,但一些用户认为它不一致且文档编写不足,尽管它在一段时间内保持稳定。Puppeteer 和 Playwright 等工具是*基于* CDP 构建的,新的编辑器在这些框架缺乏特定功能或参数控制时很有用。用例包括高级调试、注入标头和自定义浏览器扩展(如 SteamOS 中使用的扩展)。 对话还涉及 Firefox 的替代方案以及由于隐私功能而跟踪浏览器使用情况的挑战。目前 Firefox 没有原生类似的工具,但有一些第三方选项可用。

“snarky”一词,意为讽刺或不敬,在过去25年中在美国和英国的受欢迎程度激增,其名词形式“snark”也随之流行。虽然人们常错误地将其与路易斯·卡罗尔的诗作联系起来,但它的起源实际上非常复杂。 通过词典追溯,“snark”最初在19世纪的苏格兰指的是打鼾或抱怨,与令人不快的词语“nark”有关。 “snarky”的首次记录用法出现在20世纪初的英国文学作品中,尤其是在E. Nesbit的作品中,她用它来表示“愤怒”或“无礼”。 这个词逐渐跨越大西洋,1915年出现在美国出版物中。 名词“snark”是一个更近期的发展,出现在20世纪80年代末。 它目前的流行可能源于它的发音——“sarcastic”(讽刺)和“snarl”(咆哮)的混合——以及当代社会中讽刺态度的增加。

一个黑客新闻的讨论探讨了“讽刺”作为一种沟通方式的起源和兴起。最初的帖子认为,讽刺随着互联网的出现,成为一种高效地传递智慧和归属感的方式,尤其是在注意力经济中。它是一种“压缩算法”,优先考虑快速、有影响力的“感觉”而非细致的论证——这种机制受到以互动为导向的平台奖励。 评论者将讽刺与愤世嫉俗区分开来,将其定义为“愤世嫉俗的理论”,而愤世嫉俗本身则是“自命不凡”。对话涉及了这个词的词源(尽管有假设,但与路易斯·卡罗尔的诗歌无关)及其英国起源。 许多用户分享了幽默的轶事和参考,突出了讽刺的文化存在——从 19 世纪的俚语到 90 年代的嘻哈音乐。最终,该帖子将讽刺定义为不仅仅是愤世嫉俗增加的产物,而是对现代在线沟通激励的回应。

## Castrol Honda 超级摩托车:复古游戏调试故事 最近发现一款1998年的PC摩托车竞速游戏《Castrol Honda 超级摩托车世界冠军》,在现代Windows 7上运行却出乎意料地困难。虽然它与较旧的系统如Windows 98和XP兼容,但在较新的操作系统上会崩溃或冻结。根本原因?在于游戏通过DirectInput枚举输入设备时存在缓冲区溢出。 这款游戏使用DirectX 5构建,试图列出所有连接的设备,包括现代主板的LED控制器,超过了其内部数组有限的8个设备容量。这会覆盖关键数据,导致崩溃。 一个巧妙的修复方案被实现为一个2KB的DLL shim,拦截DirectInputCreateA函数。该shim过滤设备枚举,只包含操纵杆/游戏控制器,或者在找到八个设备后停止枚举,从而防止溢出。作者细致地优化了shim以实现最小的尺寸,利用了`/NODEFAULTLIB`和`#[no_std]`等技术,甚至解决了链接器的一些问题,以最大限度地兼容旧版本的Windows。补丁已在GitHub上提供,为这款经典游戏注入了新的生命。

马尔科姆·考利是20世纪一位极具影响力的文学人物,以其发现和支持新人才的能力而闻名。20世纪30年代,他从《新共和国》杂志的编辑开始,推出了约翰·奇弗和阿尔弗雷德·卡津的职业生涯。后来,在维京出版社,他主导了威廉·福克纳的复兴,在巩固其在文学史上的地位并最终促成他获得诺贝尔奖方面发挥了关键作用。他还为杰克·凯鲁亚克的《在路上》的出版而努力,并指导肯·克西,帮助塑造了《飞越疯人院》。 考利的影响源于他对培养一种独特的*美国*文学传统的信念,使其超越了仅仅是英国文学的延伸。他旨在与广大读者建立联系,重视语境和作者的生活,以及文本分析——这与新兴的学术“新批评”形成对比。 尽管承认考利并非完美无缺(包括最初对斯大林主义俄罗斯的幼稚看法),传记作者杰拉尔德·霍华德强调了他持久的重要性。考利理解美国文学不断变化的格局,认识到平装书出版的力量以及批判权威从面向公众的评论家转移到大学学者的趋势。他最终寻求定义和庆祝美国写作的独特声音。

黑客新闻 新的 | 过去的 | 评论 | 提问 | 展示 | 工作 | 提交 登录 一位拯救福克纳的人 (theatlantic.com) 5 分,由 Hooke 1 天前发布 | 隐藏 | 过去的 | 收藏 | 1 条评论 Jtsummers 1 天前 [–] 标题:拯救福克纳的人 https://archive.is/ITNzv 回复 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:

## 双星号通配符 (**) 的意外历史 `**` 通配符用于递归文件匹配,并非原始 Unix 工具的一部分。它作为一个扩展出现,有着出乎意料的复杂历史。Zsh 在 1992 年左右率先引入了此功能,允许 `**` 进入子目录。十年后,KornShell (ksh93) 独立实现了类似的功能,并将其命名为“globstar”。有趣的是,ksh 的作者并不知道 zsh 的早期工作! Bash 在 2009 年采用了“globstar”,其设计深受 ksh93 的影响,将此模式带给庞大的用户群体。尽管缺乏 POSIX 标准化,`**` 已经超出了 shell 的范围,出现在 Ruby(2000 年代初)和 Python(Python 3.5 于 2015 年)等语言中,以及 Ant 等构建工具和 Git 等版本控制系统中。 每个实现都有细微的差别,但 `**` 通常匹配零个或多个目录。今天,它已成为一种被广泛接受的约定,展示了一个 shell 创新如何演变成一种跨语言的文件系统遍历工具。虽然 zsh 发明了它,ksh 命名了它,而 bash 则使其流行起来,但 `**` 证明了计算世界中实用的问题解决能力。

最近的 Hacker News 讨论围绕着 Unix shell(如 zsh 和 bash)中的“globstar” (``**``) 功能,用于递归 globbing(在子目录中查找文件)。许多评论者对它的存在感到惊讶,指出它在 90 年代和 2000 年代初期的旧 shell 环境中并不广为人知或启用——用户主要使用 bash、tcsh 或 ksh。 讨论涉及了关于 globstar 是否应该跟随符号链接的争论,目前的共识是*不*。一位用户指出,鉴于 POSIX 中硬链接目录的可能性,这个决定有些奇怪。有趣的是,一位评论员通过 PowerShell 了解了 globstar,并强调了它在该环境中的缺失。另一位分享了这个功能的令人惊讶的起源:Kleene 星,最初是在神经网络的背景下形式化的。

更多

联系我们 contact @ memedata.com