每日HackerNews RSS

## 哈萨克斯坦的塞米亚尔卡:一个重要的青铜时代中心 塞米亚尔卡遗址位于哈萨克斯坦的额尔齐斯河沿岸,是一项重要的考古发现,占地40-140公顷,年代可追溯到晚期青铜时代(公元前1600-1100年)。初步调查显示,通过卫星图像和现场考察,发现了绵延1公里的广泛的矩形土方工程。 出土文物表明文化融合,主要属于阿列克谢耶夫卡-萨加里文化,并受到切尔卡斯库尔文化的影响。重要的是,塞米亚尔卡显示出大量现场锡青铜生产的证据——对于一个草原聚落来说,这非常罕见——利用当地开采的矿石。地球物理勘探揭示了土方工程内部的结构化布局,表明存在居住结构和一个潜在的公共中心建筑。 该遗址的规模及其对河流交通的控制表明它是一个重要的区域中心,可能是哈萨克斯坦北部草原上最大的“原始城市”。由DREAM项目资助的持续挖掘旨在进一步了解其建筑布局、冶金工艺以及在更广泛的区域网络和经济中的作用。塞米亚尔卡挑战了人们对半游牧草原社区及其金属加工能力的先入之见。

黑客新闻 新 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 哈萨克草原上的一个主要城市?调查塞米亚尔卡的青铜时代遗产 (cambridge.org) 11点 由 1659447091 1小时前 | 隐藏 | 过去 | 收藏 | 讨论 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请YC | 联系方式 搜索:

## EDN.C:一个快速、零拷贝的EDN读取器 EDN.C是一个用C11编写的高性能EDN(可扩展数据表示法)读取器,旨在实现速度和效率。EDN是一种功能强大、可扩展的数据格式,类似于JSON,提供更丰富的数据类型,如关键字、符号、集合和带标签的字面量,用于自定义数据处理。 **主要特点:** * **性能:** 利用SIMD加速(NEON、SSE4.2、WebAssembly SIMD128)实现快速解析。 * **零拷贝:** 通过直接引用输入数据来最小化内存分配。 * **可扩展性:** 支持带标签的字面量,通过读取器函数进行自定义数据转换。 * **全面支持:** 处理所有核心EDN数据类型和可选的Clojure扩展(命名空间、元数据、扩展字符、比例等 – 编译时可配置)。 * **内存安全:** 使用竞技场分配器进行高效的内存管理。 * **跨平台:** 适用于macOS、Linux、Windows和WebAssembly。 * **经过充分测试:** 包含340多个测试。 **用法:** EDN.C提供了一个简单的API,用于读取和解析EDN数据。它可以作为静态库集成到项目中,也可以通过直接包含源代码来实现。 命令行工具也可用于解析和美化打印EDN文件。 **适用于:** 配置文件、函数式编程环境中的数据交换以及需要快速灵活的数据解析的应用程序。 更多详细信息、构建说明和示例可在[GitHub仓库](https://github.com/DotFox/edn.c)中找到。

黑客新闻 新的 | 过去的 | 评论 | 提问 | 展示 | 工作 | 提交 登录 用 C11 编写的快速 EDN(可扩展数据表示法)读取器,具有 SIMD 加速 (github.com/dotfox) 39 分,由 delaguardo 1 小时前发布 | 隐藏 | 过去的 | 收藏 | 2 条评论 Jeaye 2 分钟前 | 下一个 [–] 太棒了。感谢您制作并使用 MIT 许可。我认为它有潜力取代 jank 中的词法分析器。明年我会进行一些基准测试,拭目以待!回复 medv 56 分钟前 | 上一个 [–] 一个非常令人印象深刻的实现,具有 SIMD 和 WASM!回复 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:

## CIS531:从零开始构建编译器 CIS531是一门面向硕士级别的编译器设计课程,侧重于实际实现。学生将为一种不断发展的语言构建编译器,从简单的算术开始,逐步扩展到包含函数、递归和堆分配——最终生成x86-64汇编代码。 该课程使用Racket编程语言(易于学习,并提供相关资源),并参考Jeremy Siek的《编译原理基础》(可选购买)。项目涉及增量开发,每个阶段都建立在上一阶段的基础上,并具有全面的测试。 **课程的主要特点:** * **五个项目:** 逐步构建一个编译器,从栈解释器到支持函数和lambda表达式的语言。 * **强调测试:** 每个项目都包含一个强大的测试套件,以确保正确性。 * **清晰的结构:** 明确的项目结构,提供用于passes、IR定义、解释器和测试的代码。 * **独特的方案:** 专注于一种实用且函数式的方案,牺牲一些典型的编译器特性(如内存安全和寄存器分配),以实现快速开发和清晰度。 该课程旨在提供有益的体验,让学生能够构建一个功能齐全的编译器,并有可能通过添加类型检查或更高级的优化等功能来扩展它。资源和项目详情请访问[https://kmicinski.com/cis531-f25](https://kmicinski.com/cis531-f25)。

Hacker News 新闻 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 用五个项目构建一个编译器 (kmicinski.com) 26 分,作者 azhenley 2 小时前 | 隐藏 | 过去 | 收藏 | 2 评论 AdityaSanthosh 10 分钟前 [–] 你好,看起来是个有趣的课程。我本科期间没有学过编译器(我是电子专业的学生),但我一直是一名程序员,学过 C 和一些底层语言。这门课程需要任何先修的编译器知识吗?回复 ktimespi 7 分钟前 | 父评论 [–] 唯一的先决条件可能是 Racket,以便跟随本书。 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:

客户端挑战:您的浏览器已禁用 JavaScript。请启用 JavaScript 以继续。网站的必要部分无法加载。这可能是由于浏览器扩展、网络问题或浏览器设置造成的。请检查您的连接,禁用任何广告拦截器,或尝试使用不同的浏览器。

这次黑客新闻的讨论围绕着一项最近的说法,即美国国际开发署(USAID)停摆导致数十万人的死亡。最初的帖子质疑哈佛大学是否应该利用其捐赠基金来应对此类危机。 用户迅速辩论了这一说法的有效性,其中一人链接到FactCheck.org的一篇文章,揭穿了埃隆·马斯克对美国国际开发署内部腐败的指控——据报道,他曾向唐纳德·特朗普提出这些指控。 几位评论员表示支持哈佛大学的立场,引用了提供的证据,而另一些人则认为责任在于受影响国家的政府,将这一说法称为“情感勒索”。 对话还涉及黑客新闻上的自动标题编辑,以及对报道中死亡事件责任归属的一般性分歧。

客户端挑战:您的浏览器已禁用 JavaScript。请启用 JavaScript 以继续。网站的必要部分无法加载。这可能是由于浏览器扩展、网络问题或浏览器设置造成的。请检查您的连接,禁用任何广告拦截器,或尝试使用不同的浏览器。

海龟新闻新 | 过去 | 评论 | 提问 | 展示 | 工作 | 提交登录利用地球磁场学习位置:研究 (unc.edu)10 分,由 hhs 1 小时前发布 | 隐藏 | 过去 | 收藏 | 1 条评论 FridayoLeary 18 分钟前 [–] 我想知道地球磁场反转时会发生什么。 大规模死亡?“令人惊叹的是,海龟可以获取大量无形信息,用于以我们难以想象的方式导航。”我们永远无法与自然竞争,但我发现这句话很有趣。他们实际上制造了一种设备来帮助模拟海龟导航。GPS 已成为生活的一部分。人类可以检测并发现了几乎所有光谱的部分。 指南针已经存在了几个世纪。我绝不是对这项发现不屑一顾。我只是觉得我们所取得的成就令人惊叹。回复 指南 | 常见问题解答 | 列表 | API | 安全 | 法律 | 申请 YC | 联系方式 搜索:

启用 JavaScript 和 Cookie 以继续。

## Supabase-Test:简化的 RLS 测试 一个新的框架 **supabase-test** 旨在简化 Supabase 行级别安全 (RLS) 策略的测试。它为每个测试用例创建快速、隔离的 Postgres 数据库,无需复杂的全局 fixtures 或模拟身份验证。 主要功能包括测试后自动回滚、通过 `.setContext()` 进行身份验证模拟的本地 RLS 测试,以及灵活的数据填充选项(SQL、CSV、JSON、JS)。该框架与流行的测试运行器(如 Jest 和 Mocha)兼容,并与 CI/CD 管道(如 GitHub Actions)集成良好。 创建者 LaunchQL 提供了示例项目和教程来帮助用户入门:[https://launchql.com/learn/supabase](https://launchql.com/learn/supabase)。该包可在 npm 上获取:[https://www.npmjs.com/package/supabase-test](https://www.npmjs.com/package/supabase-test),源代码在 GitHub 上:[https://github.com/launchql/supabase-test-suite](https://github.com/launchql/supabase-test-suite)。

最近的研究探索了激光在微米和纳米尺度上的令人兴奋的潜力,特别是利用生物材料和新型纳米材料,如碳点(CDs)。生物激光利用维生素、蛋白质(GFP)甚至细胞内结构等成分,为生物医学应用(包括生物检测和成像)提供生物相容性光源。与此同时,在利用各种来源(包括天然产物)衍生的荧光纳米粒子——碳点作为激光增益介质方面也取得了显著进展。 这些碳点表现出可调发射、高光致发光,甚至在溶液和固态形式下都能产生激光,有时会受到等离子体结构的增强。激光的产生机制包括放大自发辐射和在无序介质中的随机激光。研究人员正在研究控制碳点性质的方法,以实现特定波长(包括减少光毒性的红光)和提高稳定性。该领域受益于对随机激光基本原理的理解,以及探索创新的制造技术,如喷墨打印,以制造这些微型激光器件。这些进展为传感、治疗和先进光学技术领域的应用铺平了道路。

黑客新闻 新 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 随机:花生仁掺杂桦叶衍生的碳点产生的激光 (degruyterbrill.com) 7点 由 PaulHoule 1小时前 | 隐藏 | 过去 | 收藏 | 讨论 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请YC | 联系 搜索:

一个黑客新闻的讨论围绕着一篇2016年的文章,该文章详细介绍了硬盘振动,突出了这些机电设备难以置信的精度。用户对这项技术感到惊叹,注意到大规模生产的硬盘实现了看似不可能的速度和可靠性。 对话延伸到诸如内置振动隔离(以及为什么难以实现)等话题,以及一个关于声音影响硬盘性能的幽默轶事——提到了一个以发现晦涩系统性能问题而闻名的专家。 硬盘技术的最新进展也被讨论,包括新的26TB HAMR驱动器,利用激光加热进行写入。还有对早期硬盘(20MB!)的怀旧反思,以及关于难以访问原始文章的说明,并提供了一个指向Wayback Machine存档的链接。

## 对面向对象编程的细致观察 最近关于OOP的讨论促使了这次探索,旨在提供一个平衡的视角,超越简单的赞扬或批评。核心问题在于对“OOP”本身的共识缺乏,范围从艾伦·凯的最初愿景到与此大相径庭的行业实现。本文将分别剖析OOP的关键概念,评估其优缺点。 **核心思想考察:** 类(对象的蓝图,但原型提供了一种替代方案)、方法语法(捆绑数据和行为,有助于IDE但可能造成不平衡)、信息隐藏(保护不变性,但可能导致样板代码)、封装(捆绑数据和函数,可能降低小对象性能)、接口(促进灵活性和多态性)、后期绑定/动态分派(以性能为代价实现运行时灵活性)、继承(方便但容易被滥用和僵化)以及开放递归(允许对象部分相互依赖)。 作者认为许多广为宣传的“最佳实践”——例如严格的私有性或小对象——并非普遍有益,而是存在权衡。最终,OOP不是一个单一的实体,而是一系列思想的集合。单独理解这些思想能够让我们更明智地决定何时以及如何应用它们,认识到通常存在替代方案,并且根据具体情况可能更合适。

## 面向对象编程的五十道阴影 - Hacker News 讨论总结 最近一篇名为“面向对象编程的五十道阴影”的文章引发了 Hacker News 的讨论,深入探讨了面向对象编程的核心原则和历史演变。 讨论挑战了传统的理解,质疑类和继承是否真的是面向对象编程的基础,一些人认为核心在于**接口和封装**。 许多评论者强调了 **William Cook 的文章**,强调接口的重要性,并指出最初的 Simula 67 语言是面向对象编程的基础,而现代语言如 C++、Java 和 Smalltalk 实现了其模型的变体。 关于 **继承** 的价值存在争论,许多人认为它经常被滥用,并且最好用 **组合和多态** 代替。 讨论还涉及 **消息传递**(Smalltalk 首创)的重要性以及部署实践对其有效性的影响。 最终,许多参与者对面向对象编程的 *实践* 方式感到沮丧,引用了 **贫血领域模型** 和过度使用框架等问题,并提倡替代方法,如 **数据导向设计** 和函数式编程。 讨论强调了回归面向对象编程基本原则的愿望,去除不必要的复杂性。

## 数据导向优化:摘要 本文详细介绍了一种实用的性能优化方法,强调以数据为中心的心态。作者基于编译器和向量化代码的经验,提倡在尝试算法改进之前,理解数据在程序中*如何*流动。 核心过程包含五个关键步骤:**1. 剖析(Profile):** 识别瓶颈——通常往往不在最初预期的位置。**2. 算法特化(Specialize the Algorithm):** 通过将算法调整到正在处理的特定数据,超越通用实现,做到“减少工作量”。**3. 提高缓存友好性(Make it Cache Friendly):** 优化数据访问模式,以实现时间和空间局部性,可能对不常访问的数据使用流式存储,并重构数据布局以提高缓存利用率。**4. 利用SIMD(Make it SIMD):** 利用单指令多数据(SIMD)指令进行核心内的并行处理,可能借助编译器自动向量化。**5. 实现并行化(Make it Parallel):** 利用多核处理器并行化独立的数据流,同时注意伪共享问题。 作者强调,过早优化不如*不恰当*粒度的优化更具危害。虽然系统语言(C/C++/Rust)提供最大的控制权,但优化原则适用于所有语言,尽管效果各不相同。最终,性能提升源于有效地管理和转换数据,认识到所有编程本质上都涉及数据操作。

## 字节优先于 FLOPS:性能调优总结 最近 Hacker News 上的一场讨论围绕着一篇博客文章展开,该文章认为性能瓶颈通常在于计算密集型(FLOPS)操作*之前*的数据处理。作者认为,“平坦”的性能剖析——时间分布均匀——通常比具有明显热点的剖析*更难*优化,这表明存在更深层次、更根本的问题,例如低效的内存管理或复杂的对象交互。 评论者分享了有价值的性能分析工具,如 KDAB Hotspot 和 KDE Heaptrack,用于可视化性能数据并识别内存分配问题。讨论强调了内存布局(AoA、SoA、AoSoA)和缓存优化的重要性,可能需要针对特定平台的调整,以使数据与缓存行大小对齐。 虽然 SIMD 优化通常被考虑,但作者强调,解决数据访问模式——确保高效的内存重用并最大限度地减少缓存缺失——可以带来显著的收益。最终,平坦的剖析可能表明一个系统过于复杂,需要大量重构,而不仅仅是简单的热点优化。

更多

联系我们 contact @ memedata.com