每日HackerNews RSS

请启用 JavaScript 并禁用任何广告拦截器。

## Zig 和 C++ 之间的互操作性 本文详细介绍了一种在 Zig 和 C++ 代码库之间实现无缝数据交换的策略,允许将一种语言的类型嵌入到另一种语言的结构体/类中。核心挑战是避免跨语言的完整类型定义,而是专注于大小和对齐方式。 该解决方案利用一个宏 `SIZED_OPAQUE`,它创建一个具有指定大小和对齐方式的不透明类型。Zig 和 C++ 都可以然后在编译时验证这些值,从而确保内存布局兼容性。这允许将 `std::shared_ptr` 之类的类型嵌入到 Zig 结构体中,并将 Zig 类型嵌入到 C++ 类中,而无需暴露内部细节。 数据传输依赖于指针和自定义函数来管理所有权(例如移动 `shared_ptr` 实例)。为了简化 C++ 代码处理不透明类型,引入了一个 `DEFINE_OPAQUE_CONCRETE` 宏。该宏生成在 Zig 使用的不透明指针与其具体的 C++ 对应项之间的转换函数,从而减少了冗长且容易出错的类型转换。这种方法提高了与共享指针和其他复杂 C++ 类型交互时的代码可读性和可维护性。 作者通过示例演示了这一点,包括嵌入 Zig 的 `std.http.Client` 和管理 `shared_ptr` 实例,强调了根据 Zig 优化级别调整不同类型大小的灵活性。

## 写作的未来:为了人类还是人工智能? 最近关于人工智能取代写作者的担忧正在转变——现在的担忧是人类将为人工智能写作。虽然人工智能可能很快就能处理大量的阅读工作,但通过写作来影响这些系统正变得至关重要。像泰勒·考文这样的专家已经开始适应,认识到网络内容实际上是为人工智能训练数据而写。 目标不再仅仅是搜索引擎优化,而是“聊天机器人优化”——清晰的结构、标题,甚至一点奉承可能是在人工智能那里获得关注的关键。这种转变是由影响超级人工智能的潜力所驱动的,格温恩认为现在的写作是一种重要的“投票”行为,可以决定未来,甚至可能确保一种数字复活的形式。 这个想法是,持续的网络存在和深思熟虑的内容可以塑造人工智能的发展,并确保一个体现人类价值观的未来——甚至允许在模拟的未来中存在一个重塑的自我。虽然这让一些人感到不安,但这个前景可以通过提高写作的赌注并提供一个新的、终极的读者来振兴写作。最终,写作的未来可能取决于拥抱这一新现实,即使读者不再是人类。

## 开源依赖困境 当你的应用程序(“FooApp”)依赖于一个开源库(“LibBar”),并且你发现一个影响生产环境的bug时,等待官方上游修复可能是不切实际的。常见的反应——更换库、内置、猴子补丁、变通方法或仅仅等待——都存在问题。更换成本高昂,内置会增加维护负担,猴子补丁会引入不稳定因素,变通方法掩盖了真正的问题,而等待则将依赖的便利性置于用户需求之上。 理想的解决方案是在不永久分离的情况下,临时维护依赖的修改版本。这需要一个结构化的流程:向官方上游报告问题,fork库,设置CI/CD,应用修复,内部部署,将修复作为pull request提出,最后,在官方修复发布后撤销你的更改。 关键在于,这个过程承认了企业应用开发和开源维护之间不同的激励机制。它强调与维护者积极沟通,并认识到需要工具来管理临时fork并跟踪最终的上游更改整合。归根结底,这是关于负责任地解决关键问题,同时为开源社区做出贡献。

## 依赖剔除工作流总结 一则Hacker News讨论围绕着处理项目依赖中的bug或必要变更的策略。核心模式,被称为“依赖剔除”,涉及**fork依赖,在本地应用修复,然后在你的项目中使用的你的fork。** 一位用户使用Git子模块,将依赖克隆到自己的仓库,应用修复,然后更新子模块URL指向他们的fork,直到上游pull request被接受。 另一位则采用基于Docker的方法,构建并直接将fork的依赖挂载到主构建过程中。 对话还涉及Python中缺乏Node.js的`patch-package`的直接替代品,以及主动使用这种方法以获得更好的依赖管理的优势,即使当前不需要。最终的共识是:**fork,修复,使用 – 并在上游解决问题后还原。**

## 创造的碎形本质 马库斯·斯特拉瑟认为,创造性工作并非一个从想法到执行的线性过程,而是一种递归的、嵌套式的探索。他将常常感受到的“最后阶段的修改”重新定义为并非润色,而是*在日益受限的参数下进行的更高分辨率探索*。 随着质量的提高,“可接受范围”——能够*提升*作品的改变范围——会急剧缩小。这与验证所需的时间(反馈延迟)相结合,形成了一种“精度税”,即努力与感知质量不成比例地增加。本质上,实现精炼需要指数级更精确的修改。 这种动态因媒介而异。音乐需要微观层面的精确,而散文则更宽容。生成式人工智能目前运行在“宽阔盆地”区域,容易接受粗略的改变,但真正的技巧在于驾驭那些接近最佳峰值的缩小范围。熟练的练习,例如音乐排练,*缓存*解决方案,减少实时探索。最终,创造性努力并非关于执行计划,而是对改进进行持续、嵌套式的搜索。

这个故事讲述了一个历经数十年的旅程,从最初的编程挫败到最终在Erlang中找到一种令人深满意足的方法。作者早期接触BASIC时,对像“X = X + 1”这样看似不合逻辑的代码感到困惑,觉得这不像“真正的”数学。多年来,他反复格式化和重建Linux系统,获得了实践经验,但缺乏概念基础。 一个转折点来自于竞技桥牌,一位工程师挑战他不用循环来求和,这让他发现了Prolog中递归的优雅。这感觉像是回归了真正的数学真理。然而,真正让他产生共鸣的是Erlang,一种来自瑞典的函数式编程语言。 Erlang能够促进进程之间简单直接的通信——通过“ping/pong”示例展示——揭示了一种构建分布式、容错系统的强大范式。这与传统方法的复杂性形成了鲜明对比。最终,Erlang提供了一种构建弹性系统(“让它崩溃”)的理念,这深深吸引了作者,使他放弃了桥牌,转而投身于这种强大的语言及其所体现的原则。他现在通过这个博客分享他的经验和知识。

## PhantomCollect:隐匿数据收集框架 PhantomCollect是一个基于Python的框架,专为安全测试和研究设计,能够从目标设备收集全面数据。它收集详细信息,包括**精确的GPS位置、IP地址、设备指纹(硬件、浏览器)、网络详情,甚至电池状态**,同时优先考虑隐匿性。 数据使用SQLite或JSON本地存储,并通过实时终端显示访问。高级用户可以使用Ngrok等工具公开数据,并可自定义端口选项。 主要功能包括**无外部依赖、仅本地数据存储以及透明的数据收集通知**。然而,开发者强调负责任和合乎道德的使用,明确指出该工具**仅用于授权测试**,用户负责遵守法律法规。它采用MIT许可,由安全研究员xsser01开发。

## PhantomCollect:开源网络数据收集 PhantomCollect 是一个全新的开源 Python 框架,用于收集详细的网站访问者数据。它由 xsser01 创建并在 Hacker News 上分享,允许用户启动一个本地服务器,自动收集诸如 IP 地址、位置、设备规格、浏览器指纹,甚至来自点击共享链接的任何人的传感器数据等信息。 创建者承认该项目最初是出于个人需求而创建,并强调其多功能性,使用方式完全取决于用户的意图。虽然一位评论者质疑该项目的目的,但 xsser01 强调了提供一个快速且谨慎的网络数据收集工具的目标,适用于各种场景。 该项目可在 GitHub 上找到 ([github.com/xsser01](https://github.com/xsser01))。

## Lepton EDA:一套免费开源的电子设计软件 Lepton EDA 是一套免费的电子设计自动化 (EDA) 软件,于 2016 年从 gEDA/gaf 项目分叉而来。它提供原理图绘制、网表生成(支持超过 30 种格式)以及物料清单生成和仿真等基本设计工具。该软件主要在 Linux 上开发,旨在推动开源硬件发展。 Lepton EDA 与 geda-gaf 具有向后兼容性,使用相同的符号和原理图文件格式。其主要组件包括 `lepton-schematic` 用于绘制原理图,`lepton-attrib` 用于编辑元件属性,以及 `lepton-netlist` 用于生成 PCB 布局输出。 可以通过源代码包或 Git 仓库进行安装,需要 Guile 等工具,以及可能需要的 GTK 库。用户可以通过问题追踪器参与贡献,并通过 Gitter 或 IRC 与开发者联系。该项目采用 GNU 公共许可证授权,鼓励协作和修改。提供全面的文档和维基百科以供支持。

黑客新闻 新 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 Lepton – GPL 电子设计自动化 (github.com/lepton-eda) 12 分,gjvc 2 天前 | 隐藏 | 过去 | 收藏 | 1 条评论 gjvc 2 天前 [–] 和 https://lepton-eda.github.io/reply 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:

软银已完全出售其对英伟达的股份,10月份出售了3210万股,价值58.3亿美元。此前,软银已于2019年完全退出英伟达,尽管其众多人工智能项目持续依赖英伟达的技术。 此次出售正值软银报告第二财季愿景基金获得190亿美元的收益,这得益于对OpenAI和PayPay的成功投资。在出售英伟达股份的同时,软银仍然深度投资于人工智能领域,例如价值5000亿美元的Stargate数据中心计划,严重依赖英伟达芯片。 此外,软银还出售了部分其对T-Mobile的股份,获得了91.7亿美元。此举表明软银正在利用成功的投资来资助进一步的人工智能开发和扩张。

## 虎甲虫:在没有事务的情况下构建正确的金融系统 虎甲虫是一个为正确性设计的金融交易数据库,但从单独正确的组件实现全系统正确性具有挑战性。本文探讨了在*没有*传统事务的情况下维持一致性,重点关注安全性和活性属性,例如“一致性”(账户在Postgres和虎甲虫中都存在)和“可追溯性”(正余额对应于有效账户)。 关键在于分离关注点:Postgres管理主数据(如账户持有人信息),而虎甲虫处理基于整数的交易本身。这允许扩展和独立的安全性/合规性。由于这些系统不共享事务,应用程序必须通过协调操作和重试来强制一致性。 一个关键的架构决策是指定一个**记录系统**(在本例中为虎甲虫——在虎甲虫中存在定义了全系统的存在)和一个**参考系统**(Postgres)。应用了**先写参考系统,后写记录系统**的原则。 为了处理潜在的故障,系统利用具有检查点(通过Resonate的分布式异步等待)的持久化执行。这要求所有操作都是**幂等的**——重复它们不会产生额外的效果。应用程序层编排这些幂等操作,解释子系统响应,并标记不一致之处以供操作员干预。 通过仔细选择记录系统,强制执行顺序,并利用持久化执行,开发人员即使在不依赖传统事务的情况下,也可以构建正确且可靠的金融系统。

## 黑客新闻讨论:“先写后读”规则 (tigerbeetle.com) 最近黑客新闻上围绕一篇博客文章展开讨论,该文章介绍了TigerBeetle提出的“先写后读”规则,旨在维护不同数据库管理系统之间的一致性。TigerBeetle的Joran对此规则的核心理念进行了阐述:**在从数据库读取数据*之前*,先提交写入操作到“记录系统”,** 从而确保结果的权威性。 然而,该规则引发了争论。一些人认为它含糊不清,质疑其实用性。另一些人则认为这是对诸如两阶段提交等概念的重新发明,而TigerBeetle团队澄清说,它与两阶段提交的不同之处在于,并非所有系统都需要参与暂存/提交过程。 讨论还涉及指定“记录系统”与“参考系统”的重要性。一个关键点是,该规则专门适用于对同一数据进行多系统读写的情况,强调操作顺序。团队认为该规则的名称具有记忆性,其优点超过了潜在的混淆,并强调了他们工作的精雕细琢,包括随附的艺术作品。

更多

联系我们 contact @ memedata.com