【HN中文日报】科技前沿速递:AI颠覆职场?新分词器PK老牌!还有你意想不到的骚操作!

意外富翁 · 8个月前 · News · 43 · 0

今天 Hacker News 社区聊了啥? NO.20250630

这期日报信息量爆炸!从AI如何重塑入门级职位,到新一代分词器 TokenDagger 如何挑战 OpenAI 的 Tiktoken,再到如何用蜂窝塔搭建廉价雷达,内容涵盖软件、硬件、AI等多个领域。想知道如何用俄语键盘防御勒索病毒?或者了解历时40年完成的文字冒险游戏?还有更多意想不到的科技新进展等你来探索!快来一探究竟吧!

Hacker News 中文精选


TokenDagger:高性能的 OpenAI Tiktoken 实现

TokenDagger 是一个旨在提供比 OpenAI 的 Tiktoken 更快的分词器实现的项目。它使用 Rust 编写,并提供了 Python 绑定,目标是提供更高的性能,尤其是在处理大量文本时。

TokenDagger 的核心是用 Rust 编写的,这使得它能够利用 Rust 的性能优势,例如内存安全和并发性。该项目还提供了 Python 绑定,方便 Python 开发者使用。通过使用 pyo3 库,TokenDagger 可以在 Python 环境中无缝集成,允许开发者在 Python 代码中直接调用 Rust 编写的分词器。该项目包含构建信息和配置,例如 build_tokendagger.pypyproject.tomlsetup.py,用于简化编译和安装过程。

TokenDagger 仓库包含性能基准测试数据,如 throughput_llama_1024mb.jsonthroughput_llama_1024mb.svg,展示了其在处理大型 LLaMA 模型文本时的吞吐量。这些数据可用于评估 TokenDagger 在实际应用中的性能表现。项目结构清晰,包括 src 目录存放 Rust 源代码,extern 目录存放外部依赖,tests 目录包含测试用例,以及 tokendagger 目录存放 Python 绑定相关代码。Makefile 文件简化了构建过程,可以通过简单的命令编译和测试项目。

该项目还包含一些辅助文件,如 .gitignore 用于排除不必要的文件,LICENSE 声明了项目的开源许可,以及 README.md 提供了项目介绍和使用说明。TokenDagger 的目标是成为一个高性能、易于使用的分词器,为自然语言处理任务提供更快的处理速度。


Ensō 新版本公测:更简洁、更注重隐私的写作体验

Ensō 发布了新版本的公开测试版,重点在于简化用户界面、提升可访问性以及增强用户隐私保护,旨在提供更专注的写作环境。 新版本在 UI 设计、主题选择、隐私保护等方面都进行了改进,力求打造一款让用户感到舒适和高质量的写作工具。

新版本遵循 "MISS (Make It Stupid Simple)" 原则,致力于移除干扰,让用户专注于写作本身。大部分 UI 元素被移动到应用程序菜单栏,方便用户发现和使用快捷键。 新版本提供了 5 个半主题,这些主题都经过精心设计,考虑了不同光照条件下的可访问性,甚至包括专为 OLED 屏幕设计的夜间写作模式。 其中一个亮点是 "Coffeeshop Mode™",这个模式可以隐藏屏幕上的文字,防止他人窥视,特别适合在公共场所写作。

此外,新版本还进行了一些小的改进,例如可以切换自动更正、自动大写和拼写检查,以及控制文本大小。 新的文本渲染引擎也带来了更好的排版控制和更流畅的写作体验。 Ensō 现在默认通过 AppStore 发布,但也保留了 Gumroad 上的旧版本作为备份,但不会再维护。

在隐私方面,新版本完全取消了数据分析,不会收集任何用户数据。 开发者认为,通过用户直接反馈已经能够充分了解用户的使用习惯和需求。 未来,Ensō 还会增加个性化设置和 RTL 语言支持。 总之,新版本的 Ensō 旨在提供一个更简洁、更专注、更注重隐私的写作环境,让用户能够享受写作的乐趣。


历时 40 年完成的文字冒险游戏:《幻影阴谋》现已可玩

Scott Andrew 分享了他历时 40 年完成的文字冒险游戏《幻影阴谋》。这款游戏最初的灵感来源于 Infocom 的文字冒险游戏系列,作者在 1984 年左右开始使用 BASIC 语言在 Atari 800 电脑上编写。由于当时电脑内存的限制,以及后来作者兴趣的转移,游戏未能完成。

多年以后,作者在 2018 年发现了 Inform 7 这种现代编程语言,可以用来创建文字冒险游戏。在疫情期间,作者重新拾起了当年的笔记,使用 Inform 7 重制了这款游戏。新版本在原有的基础上进行了一些修改,包括移除了一些房间,修改了结局,并加入了一些自传性质的元素。现在,这款游戏终于完成了,玩家可以在网页浏览器上免费游玩。作者表示,完成这款游戏让他感到既高兴又伤感,就像是放下了心中的一块石头。

评论区观点

  • Verb Synonyms: 有评论建议作者可以考虑添加更多的动词同义词,以使游戏解析器不那么严格,提升玩家体验。
  • 共同回忆: 许多评论者表示,在 80 年代编写自己的文字冒险游戏是很常见的现象,引起了大家的回忆和共鸣。
  • 游戏体验: 有玩家试玩后表示游戏很有趣,文笔也很好。
  • 幽默元素: 有玩家表示游戏中的幽默元素很棒。
  • 其他: 还有评论者对作者表示祝贺,并开玩笑地询问游戏是否由乔治·R·R·马丁所写。

Gridfinity:模块化开源网格存储系统

Gridfinity 是一种模块化、开源的网格存储系统,旨在提高工作效率、组织性和安全性,它几乎 100% 可以 3D 打印,并且完全免费。该系统基于 42x42x7mm 的倍数设计,允许用户根据自己的需求定制存储解决方案。

Gridfinity 的起源可以追溯到 Alexander Chappels 的 Assortment System,并受到了 Zack Freedman 的启发。Freedman 最初发布 Gridfinity 的设计,鼓励社区进行扩展和适配。现在,Gridfinity 已经发展成为一个蓬勃发展的社区,用户不断地根据自己的需求进行调整和改进。

你可以使用在线生成器快速开始使用 Gridfinity,例如 Perplexing Labs' Gridfinity Generator 和 gridfinitygenerator.com,它们允许你输入尺寸来生成自定义的收纳盒、底板和盖子。Gridfinity 旨在成为你车间的终极模块化存储系统,帮助你保持高效、有序和安全。

社区成员分享了各种 Gridfinity 的使用技巧和替代方案。有人推荐使用厕纸卷或废弃纸板来制作收纳盒的壁,以节省耗材。也有人推荐了其他类似的开源或非开源的模块化存储系统,例如 Honeycomb Storage Wall 和 Cargo modular storage system。

一些用户最初对 Gridfinity 的用途感到困惑,误以为是电池存储方案,建议在主页上添加图片以更清晰地展示其用途。还有用户分享了使用 OpenSCAD 定制 Gridfinity 的经验,例如精确匹配抽屉尺寸和添加磁铁。

当然,也有一些用户认为制作 Gridfinity 需要投入大量时间和精力,因此选择使用纸板和胶水等更简单的方式来制作收纳系统。总的来说,Gridfinity 提供了一种灵活且可定制的存储解决方案,但用户可以根据自己的需求和资源选择最适合自己的方案。


计算空间的新突破:大幅压缩计算所需空间

本文介绍了计算机科学领域的一项突破性研究,该研究颠覆了关于计算空间和时间之间权衡的传统认知。这项新成果表明,解决一个问题所需的时间和空间之间存在着意想不到的联系,为未来的计算发展开辟了新的可能性。

过去50年来,理论学家们普遍认为,如果解决一个问题需要 t 步,那么至少需要 t 比特的内存。然而,麻省理工学院的计算机科学家 Ryan Williams 发现,任何可以在时间 t 内解决的问题,只需要大约 √t 比特的内存。这意味着,一个100步的计算可以用大约10比特来压缩和解决,这与之前的理论预期大相径庭。

这项突破的关键在于“归约”的概念,即将一个问题转化为另一个在数学上等价的问题。通过巧妙地重用空间,可以将必要的信息压缩到平方根数量的比特中。密歇根大学的计算机科学家 Mahdi Cheraghchi 认为,这项研究是朝着正确方向迈出的一步,为我们如何更有效地利用内存提供了新的思路。

这项研究表明,真正的限制可能不是我们有多少内存,而是我们如何明智地使用它。随着计算机的不断缩小,我们对计算效率的理论理解也在不断发展,这为未来的计算技术带来了巨大的潜力。


优化 DER 序列化中的整数长度计算

本文讨论了优化 DER 序列化中整数长度计算的问题,重点介绍了作者如何利用 Claude (一个 AI 模型) 来改进代码,并最终发现 LLVM 编译器的一个潜在优化点。

文章首先介绍了 DER 编码的类型-长度-值 (TLV) 结构,以及在序列化时预先计算长度的必要性。作者最初的 rust-asn1 库通过预留空间并在之后调整缓冲区的方式处理长度,但这种方法在处理大 TLV 时效率较低。为了优化整数类型的长度计算,作者最初尝试使用位操作来避免循环,但生成的汇编代码仍然不够理想。令人惊讶的是,Claude 提供了一个更优化的方案,并通过 Alive2 形式验证工具验证了其正确性。作者随后在 LLVM 提交了一个 bug 报告,指出了这个潜在的优化机会。更进一步,作者甚至尝试让 Claude 基于测试用例直接生成 LLVM 优化代码。

总而言之,这篇文章展示了 AI 在代码优化方面的潜力,即使在编译器优化这种复杂领域也能提供有价值的帮助。作者通过实际案例,说明了如何利用 AI 工具来发现和解决性能瓶颈,并为开源项目做出贡献。


使用 ESP32 和 Arduino 自制国际空间站追踪器

这个开源项目教你如何用低成本的 ESP32 和 Arduino 开发板,制作一个能实时显示国际空间站位置的追踪器。它使用一块 2.8 英寸的 CYD (Cheap Yellow Display) 屏幕,总成本大约 20 美元。

这个项目是一个很好的学习案例,涵盖了 ESP32/Arduino 开发的多个方面,比如使用 LVGL 进行图形界面编程,连接 Wi-Fi,从 RESTful API 获取数据,解析 JSON 数据,以及触摸屏交互。作者提到,这个项目非常适合作为 STEM 课堂上的空间主题项目。追踪器通过 Wi-Fi 连接到 "Where The ISS At" API,实时更新国际空间站的经纬度和 UTC 时间。用户可以通过触摸屏点击 ISS 图标来显示关于空间站的随机知识。此外,屏幕亮度会自动调节以节省电量,触摸交互会恢复到全亮度。

硬件方面,作者推荐在 Amazon 上购买 CYD,并建议选择带有电阻式触摸屏和 2.8 英寸屏幕的版本,型号为 "ESP32-2432S028R"。编译代码需要配置 Arduino IDE,安装所需的库,并将 User_Setup.hlv_conf.h 文件复制到相应的库文件夹中。

由于没有评论内容,这里就不进行评论分析了。


Ask HN: 大家都在做什么 (2025年6月)

这篇文章是 Hacker News 上的一个提问,询问大家目前正在进行的项目和工作。涵盖了从个人 side project 到大型应用的各种开发工作,展示了技术社区的活力和创造力。

文章中大家分享的项目非常多样化。有人在做一个众筹平台,用于检测食品中的内分泌干扰物,关注食品安全;有人在开发在线寄明信片服务,可以直接在 Google 地图上圈出房屋;还有人在构建一个小型编程语言 Mochi,专注于以统一和轻量级的方式查询结构化数据。此外,还有人致力于构建美国复古印刷广告的物理和数字档案,使用 Lucee、MySQL 和 OpenAI 来存储图像和分析元数据。也有开发者在制作一个简单的四轨录音机原型,旨在为孩子提供一个简单易用的音乐创作工具。甚至有人在开发 Nest 恒温器的开源版本,以及空域防御模拟器,帮助人们了解空域防御。

评论区里,开发者们分享了各自正在进行的项目,涵盖了食品安全、编程语言、复古广告、音乐创作、智能家居和空域防御等多个领域,展现了技术社区的多元化和创新精神。

  • 食品安全: @cjflog 正在开发一个名为 Laboratory.love 的众筹平台,旨在让用户众筹对特定食品进行独立检测,以检测其中的内分泌干扰物。
  • 在线服务: @AutoAPI 正在添加对信件的支持,其服务允许用户通过在 Google 地图上圈出房屋来在线发送明信片。
  • 编程语言: @tamnd 正在构建一种名为 Mochi 的小型编程语言,专注于以统一和轻量级的方式查询结构化数据。
  • 数据存档: @rorylaitila 正在构建美国复古印刷广告的物理和数字档案,并使用 OpenAI 分析图像和提取元数据。
  • 音乐工具: @supplied_demand 正在构建一个简单的四轨录音机原型,旨在为孩子提供一个简单易用的音乐创作工具。
  • 智能家居: @z3ugma 正在开发 Nest 恒温器的开源版本,旨在替代 Google 即将停止支持的旧版本。
  • 空域防御模拟器: @possiblelion 开发了一款空域防御模拟器,旨在帮助人们了解空域防御。
  • Flask 入门: @Lazy4676 正在使用 Flask 框架构建一个简单的应用,用于检查链接在 Reddit 和 Hacker News 上的反向链接。
  • 面试准备: @RonSkufca 正在阅读《Beyond Cracking the Coding Interview》一书,以提高自己的编程技能。

这些项目都很有趣,也反映了开发者们不同的兴趣和关注点。


让虚拟机“认为”它有 CPU 风扇

这篇文章介绍了如何让虚拟机(VM)“认为”它拥有 CPU 风扇,即使实际上并没有。这主要是为了绕过某些恶意软件的检测,这些恶意软件会检查是否存在某些硬件组件来判断自身是否运行在虚拟机中,从而避免被安全研究人员分析。

文章作者首先解释了恶意软件为何要进行这种检测,以及检测 CPU 风扇存在与否的一种常见方法,即通过 WMI 查询 Win32_Fan 类。然后,作者深入探讨了计算机如何知道自身拥有 CPU 风扇,答案是读取 SMBIOS 数据。具体来说,Win32_Fan 实例是由 cimwin32.dll 提供的,而该 DLL 会读取 SMBIOS 数据(特别是类型 27 的条目)来获取风扇设备信息。

作者原本想通过 DLL 劫持来修改 cimwin32.dll,但后来决定采用更优雅的方式:直接修改 Xen 虚拟机管理程序中的 SMBIOS 数据。文章详细介绍了如何使用 dmidecode 工具来转储 SMBIOS 数据,并解释了如何在 Xen 中设置自定义 SMBIOS 数据,包括创建包含 SMBIOS 数据的 smbios.bin 文件,并在 Xen 域配置文件中设置 smbios_firmware 选项。

然而,作者遇到了一个问题:Xen 默认情况下只允许覆盖某些类型的 SMBIOS 结构(类型 0、1、2、3、11、22、39),而类型 27 不在其中。作者找到了一个针对 Xen 的补丁,可以允许覆盖所有类型的 SMBIOS 结构,但这个补丁之前被拒绝了。尽管如此,作者还是应用了这个补丁并重新编译了 Xen。

在应用补丁后,作者仍然无法通过 WMI 查询到 CPU 风扇。经过进一步调查,作者发现 Win32_Fan 类需要同时定义类型 27(冷却设备)和类型 28(温度探针)的 SMBIOS 数据。因此,作者又添加了类型 28 的 SMBIOS 数据,最终成功让虚拟机“认为”它拥有 CPU 风扇。

总而言之,这篇文章深入探讨了虚拟机反检测技术,并提供了一个具体的解决方案,即通过修改 Xen 虚拟机管理程序中的 SMBIOS 数据来模拟 CPU 风扇的存在。

由于没有评论内容,因此无法进行评论分析。


使用 Common Lisp 进行 Windows 程序的交叉编译

本文介绍了如何从 Linux 环境下,使用 Common Lisp 交叉编译出能在 Windows 上运行的程序。主要内容涵盖了 C 代码的交叉编译、Windows 版 SBCL 的安装与配置(通过 Wine)、在 Linux Emacs 中使用 Wine SBCL 作为 REPL、加载 DLL 文件以及生成 .exe 可执行文件等步骤。

首先,文章展示了如何使用 mingw-w64 工具链在 Linux 上交叉编译 C 代码,并使用 Wine 运行生成的 Windows 可执行文件。 接着,详细介绍了如何配置 Raylib 库的交叉编译,生成 DLL 文件,并将其链接到 C 代码中。 然后,指导读者下载并安装 Windows 版本的 SBCL,并使用 Wine 运行,验证其 Windows 环境的特性。 此外,还讨论了 SBCL 如何处理 Linux 和 Windows 之间的文件路径差异,并推荐使用 filepaths 库来简化路径处理。

更进一步,文章介绍了如何利用 vend 工具管理 Common Lisp 的依赖,并配置 Emacs 中的 Sly 或 Slime,以便使用 Wine 运行的 SBCL 作为 REPL 环境,从而在 Linux 下进行 Windows 程序的交互式开发。 最后,文章讲解了如何在 Common Lisp 中加载 Windows DLL 文件,并提供了一个 build.lisp 脚本示例,用于生成 Windows 可执行文件。 需要注意的是,Windows 版本的 SBCL 似乎不支持核心压缩,因此生成的可执行文件会比 Linux 版本大。

评论区有用户提到 Lucid Common Lisp,这表明 Common Lisp 社区对跨平台开发一直保持着关注,并存在多种实现方案。


2.5 万美元汽车的消亡:原因何在?

这篇文章探讨了为什么曾经触手可及的 2.5 万美元以下的汽车在美国市场上越来越稀缺,甚至濒临灭绝。文章分析了汽车制造商的利润策略、市场供需关系以及经销商的角色,揭示了这一现象背后的复杂原因。

文章指出,福特 Maverick 的案例就是一个缩影。这款原本定位为经济型皮卡的车型,由于需求旺盛,经销商大幅加价,导致消费者难以以合理的价格购得。同时,福特也提高了新款 Maverick 的零售价,四年内上涨了 41%。数据显示,2025 年 2 月,售价低于 2.5 万美元的新车销量占比仅为 4.8%,远低于 2019 年同期的 23%。

文章进一步分析,汽车制造商更倾向于生产利润率更高的豪华车型,而非经济型汽车。尽管经济型汽车和豪华车在工程、设计、营销以及排放和碰撞标准等方面存在相似的固定成本,但豪华车能带来更高的利润。此外,美国汽车品牌逐渐放弃了经济型汽车市场,转而专注于利润更高的车型。

经销商在美国汽车销售中扮演着重要角色。与欧洲市场不同,美国消费者更倾向于直接从经销商处购买现车,而非预订。这使得经销商能够囤积高价车型,减少经济型汽车的供应,从而推高价格。此外,经销商也更倾向于销售高配车型,因为这些车型利润更高。

总而言之,2.5 万美元汽车的消亡是多种因素共同作用的结果,包括汽车制造商的利润策略、市场供需关系以及经销商的行为。消费者在选择汽车时,面临的选择越来越少,议价能力也越来越弱。


Lume Health:用光照追踪改善你的昼夜节律

Lume Health 推出了一款旨在通过追踪日光来改善用户昼夜节律的应用。该应用通过监测用户接收到的光照量,帮助用户调整生活习惯,以平衡激素水平,提升能量、专注力和睡眠质量。

该应用的核心功能是测量用户全天的昼夜节律健康状况,并帮助用户养成习惯来平衡激素。现代生活方式导致人们长时间待在室内,远离自然光照,这款应用旨在帮助用户重新与自然节律连接。Lume Health 还计划推出一款可穿戴设备,通过分析汗液来实时监测用户的激素水平,从而提供更深入的健康洞察。目前,该应用已在 TestFlight 上提供下载,并计划很快推出 Android 版本。

评论区对 Lume Health 的产品表示了兴趣,并提出了一些问题和建议。有人询问如何加入使用,是需要加入等待列表还是可以直接通过 TestFlight 下载。还有人质疑“大多数人没有获得足够光照”的说法,询问其依据和光照追踪方式。此外,有用户建议增加暗黑主题,并优化日历切换的交互方式。也有开发者表示对 Android 版本的期待。还有人分享了自己在建筑光照领域的工作经验,并表示愿意合作,帮助 Lume Health 将其技术应用于办公空间改造。这些评论反映了用户对 Lume Health 产品的关注和期望,同时也为产品的改进提供了有价值的反馈。


超声波牙刷:无痛检测隐藏的牙龈问题

这篇文章介绍了一种新型超声波牙刷,旨在提供一种更舒适、更有效的牙龈疾病筛查方法,替代传统的手动牙周探查。这项技术利用小型化的超声波换能器,能够深入到口腔后部的臼齿和前臼齿,提供高分辨率的牙龈图像。

传统的牙周探查使用金属器械,可能会引起不适,并且难以检测到早期牙龈疾病。而这种新型超声波牙刷通过发射声波并分析其反射,可以无创地评估牙龈的健康状况。研究人员设计了一种微型化的牙刷状换能器,它比传统的超声波设备更小,更容易在口腔内操作。为了克服小型化带来的分辨率限制,该设备采用更高的频率,从而生成更清晰的图像。

为了验证其准确性,研究人员在猪牙组织上进行了实验,将超声波牙刷的测量结果与手动探查的结果进行了比较。结果显示,两种方法测得的数据在统计学上具有显著的一致性,证明了超声波牙刷在监测牙龈健康方面的可靠性。研究人员表示,这款牙刷的设计充分考虑了临床牙科的实际需求,具有体积小、精度高、易于使用的优点。他们计划在未来的研究中,将该设备应用于患者,以便在牙龈线以下进行成像,从而更早地诊断和治疗牙龈疾病,减少患者的痛苦,并帮助他们保持健康的笑容。

总的来说,这项技术为牙龈疾病的早期检测提供了一种有前景的解决方案,有望改善口腔健康护理的体验和效果。


重温 Knuth 的“过早优化”论文

本文回顾了 Knuth 关于过早优化的著名引言,并分析了其原始论文的上下文。文章强调,Knuth 并非反对所有优化,而是反对在没有充分了解代码性能瓶颈的情况下,将时间浪费在非关键部分的优化上。

Knuth 的论文实际上探讨了在结构化编程的早期,为了性能而使用 goto 语句的必要性。他使用了一个多重集的例子,展示了使用数组和 goto 语句实现的 insert 函数,并将其与基于 map 的方法进行了比较。尽管基于 map 的方法在理论上是 O(log n),但 Knuth 指出,对于较小的数据集(小于约 300 个元素),数组的性能实际上更好,因为数组访问速度更快。

文章进一步解释了 Knuth 如何逐步改进 insert 函数,首先通过消除循环后的额外检查,然后通过乐观地插入元素来简化循环条件,最后通过展开循环来提高性能。Knuth 认为,即使是 12% 的性能提升,在工程领域也是值得考虑的,尤其是在编写高质量程序时。

然而,Knuth 也警告说,对效率的盲目追求会导致滥用。程序员可能会花费大量时间来优化非关键代码,从而对调试和维护产生负面影响。因此,他建议在优化之前,首先要识别出关键代码,并使用测量工具来验证优化的效果。

总而言之,Knuth 的观点是,我们应该避免过早优化,但在关键代码中,我们不应该放弃任何提高性能的机会。关键在于要明智地选择优化的时机和方法,并始终以代码的可读性和可维护性为重。


利用蜂窝塔作为廉价雷达系统

本文讨论了如何将现有的蜂窝塔基础设施改造为低成本的雷达系统,用于港口和海域的监控。这个方案的核心在于利用蜂窝塔发射的信号,通过分析其反射来探测和追踪水面上的船只。

这项技术利用了现有的蜂窝网络,无需额外建设昂贵的专用雷达设施,从而大大降低了成本。通过软件算法对蜂窝信号的反射进行处理,可以识别船只的大小、速度和方向。这种方法特别适用于预算有限的小型港口或需要大范围监控的区域。此外,由于蜂窝塔已经广泛分布,因此可以实现对水域的全面覆盖。研究人员展示了该系统在实际环境中的可行性,证明了其在港口安全和环境监测方面的潜力。该技术的应用不仅限于港口,还可以扩展到内河航运、渔业管理等领域。通过对现有资源的创新利用,这项技术为水域监控提供了一种经济高效的解决方案。未来,随着算法的不断优化和硬件成本的进一步降低,这种基于蜂窝塔的雷达系统有望得到更广泛的应用。


NativeJIT:C++ 表达式到 x64 JIT 的转换

NativeJIT 是一个项目,它能将 C++ 表达式即时编译 (JIT) 成 x64 机器码。 简单来说,就是让 C++ 代码可以动态地生成并执行机器码,从而优化性能。

这个库的核心功能在于它允许开发者在运行时,根据需要生成特定的机器码,这在某些场景下可以带来显著的性能提升,例如在需要处理大量数据或者执行复杂计算时。NativeJIT 通过解析 C++ 表达式,然后将其转换为 x64 指令,最终实现代码的即时编译和执行。该项目使用 MIT 许可证, 意味着可以自由地使用和修改它。目前在 GitHub 上有 1.2k 的 star 和 85 个 fork,说明它在开发者社区中具有一定的关注度。该项目还包括 Issues、Pull requests、Actions、Projects 和 Security 等功能,方便用户进行问题反馈、代码贡献和安全检查。

由于没有评论内容,这里就不进行评论分析了。


AI 崛起与入门级职位减少的关联

这篇文章探讨了自 ChatGPT 发布以来,入门级职位数量下降了三分之一的现象,并分析了这一下降与人工智能工具日益普及之间的联系。

文章指出,越来越多的公司开始采用 AI 工具来自动化一些原本由入门级员工负责的任务,例如数据录入、客户服务和内容创作。这种自动化趋势导致对入门级员工的需求减少,从而导致职位数量下降。文章还强调,一些行业受到的影响比其他行业更大,例如客户服务和行政支持等。同时,文章也提到,虽然 AI 可能会取代一些入门级职位,但它也可能创造新的就业机会,尤其是在 AI 开发、维护和培训等领域。因此,对于求职者来说,提升技能,学习如何与 AI 工具协同工作至关重要,以便在不断变化的就业市场中保持竞争力。此外,教育机构和政府也需要采取措施,帮助人们适应 AI 驱动的就业市场,例如提供相关的培训项目和技能提升课程。

由于文章没有评论区,这里就不做评论分析了。


《曼斯菲尔德庄园》:简·奥斯汀最受争议也最深刻的小说

这篇文章探讨了简·奥斯汀的小说《曼斯菲尔德庄园》,认为它是奥斯汀最勇敢但也最容易被误解的作品。文章深入分析了小说的情节和人物,揭示了其中隐藏的深刻主题。

文章指出,《曼斯菲尔德庄园》并非如表面看起来那样简单,它触及了许多复杂的社会问题,例如阶级、财富和道德。主人公范妮·普莱斯并非一个软弱无能的形象,而是一个在充满压力的环境中努力保持自我的坚强女性。小说通过范妮的视角,批判了当时英国社会的虚伪和道德沦丧。亨利·克劳福德和玛丽·克劳福德代表了追求享乐和不顾道德底线的价值观,而埃德蒙·伯特伦则代表了传统的道德观念,但他最终也未能完全摆脱社会的影响。

文章还强调了小说中偶然性所起的作用。如果亨利·克劳福德没有因为虚荣心而追求茱莉亚,他就不会与她私奔,从而失去赢得范妮的机会。如果亨利没有与茱莉亚私奔,玛丽就不会向埃德蒙暴露她的道德缺陷,他们可能很快就会结婚。这些偶然事件凸显了人生的不确定性和道德选择的重要性。

评论区对《曼斯菲尔德庄园》的评价褒贬不一。有人认为范妮是一个软弱的角色,难以产生共鸣;但也有人认为她是一个内向、受欺负的女性,她的行为是适应环境的结果。还有人指出,小说中涉及的加勒比财富与奴隶制有关,埃德蒙应该更加关注他家族的财富来源。另外,有评论提到电影《大都会》中也曾出现过关于《曼斯菲尔德庄园》的讨论。这些评论展现了读者对《曼斯菲尔德庄园》的多样化解读,也反映了小说本身的复杂性和深刻性。


Python 数据类中使用仅限关键字参数的最佳实践

这篇文章讨论了在 Python 数据类中使用 kw_only=True 的好处,以确保代码的可维护性和向后兼容性。通过强制使用关键字参数,可以避免因字段重新排序或删除而导致的意外破坏,并允许子类添加必需字段。

文章指出,Python 的数据类是构建主要用于保存或处理数据的类的绝佳特性,可以替代字典,因为它们允许添加方法、动态属性和子类。 相比手动构建类,数据类无需自定义 __init__() 来重新分配属性,并提供 __eq__() 等开箱即用的方法。文章强调,为了保持数据类的可维护性,始终使用 kw_only=True 来构造它们至关重要。

文章解释了使用 kw_only=True 的两个主要原因:首先,它允许重新排列数据类中的字段,而不会破坏调用者的代码。 强制调用者使用关键字参数可以避免因位置参数导致的潜在问题。 其次,它允许子类添加必需字段, 赋予子类更大的灵活性,可以自行决定哪些字段必须由调用者提供,哪些字段具有默认值。文章还提到 Python 兼容性问题,kw_only 标志是在 Python 3.10 中引入的,因此如果需要支持旧版本,则需要采取一些兼容性处理措施。

评论区对这篇文章展开了热烈的讨论。有人提到了使用 KW_ONLY 哨兵类型注解来显式指定哪些参数需要是仅限关键字参数。也有人认为,当变量名已经匹配时(例如 fn(x=x, y=y, z=z)),仅限关键字参数会变得繁琐,并希望 Python 能够拥有 JavaScript 的简写属性语法。还有人批评 aws Boto3 库在大量调用中使用了这种方式,导致文档和 IDE 提供的帮助信息不足。

有人提问是否还有必要使用数据类而不是 pedantic 基类模型。另一些人则希望看到更多关于 slots=True 的讨论。还有人询问,除了数据类之外,是否还有其他方法可以在函数中强制执行参数行为。有人认为,对于所有 Python 函数/方法都可以采用强制使用关键字参数的方式,但这样做可能会使 API 的使用变得非常麻烦。他们建议,只有在参数数量超过 4-5 个,或者参数足够相似以至于强制使用关键字参数可以提高调用代码的可读性时,才应该强制使用关键字参数。最后,有人指出,虽然强制使用关键字参数可以防止未来的破坏性更改,但将其添加到现有项目中也可能会导致破坏性更改。


3D 打印与电子元件融合:开启“Printegrated Circuits”时代

这篇文章主要探讨了将电子元件直接集成到 3D 打印物体的技术,预示着 "Printegrated Circuits"(打印电路)时代的到来。这种技术有望彻底改变电子产品的制造方式,实现更复杂、更个性化的设备生产。

文章指出,传统的电子产品制造流程复杂且耗时,需要将各个组件分别制造,然后组装在一起。而 "Printegrated Circuits" 技术则可以将电子元件,如传感器、电路等,直接在 3D 打印过程中嵌入到物体内部。这意味着可以一次性制造出功能完整的智能物体,无需后续的组装步骤。

这种技术的应用前景非常广阔,例如,可以用于制造定制化的医疗设备、智能服装、以及各种物联网设备。想象一下,你可以根据自己的身体数据,3D 打印出一个带有传感器的鞋子,实时监测你的运动状态。或者,你可以打印出一个可以监测环境数据的智能盆栽。

此外,"Printegrated Circuits" 技术还可以降低电子产品的生产成本,并提高生产效率。由于减少了组装环节,可以节省大量的人力和时间。同时,这种技术还可以实现更复杂的设计,制造出传统方法难以实现的产品。

目前,这项技术还处于发展初期,面临着一些挑战,例如,如何选择合适的 3D 打印材料和电子元件,如何保证打印过程的精度和可靠性,以及如何解决散热问题等。但是,随着技术的不断进步,相信这些问题都将得到解决。

总而言之,"Printegrated Circuits" 技术代表着电子产品制造领域的一个重要发展方向。它有望推动 3D 打印技术和电子技术的融合,为我们带来更加智能、个性化的产品。


通过收费来结识人?

本文讨论了作者如何通过向人们收取咨询费,并将收入捐赠给教育慈善机构,从而更有效地与他人建立联系。作者分享了他从免费提供咨询到收费咨询的转变,以及这种转变如何帮助他结识了许多有趣的人,并为慈善事业筹集了资金。

作者提到,尽管他的博客和Twitter很受欢迎,但他很少收到人们主动联系他聊天或见面的请求。然而,自从他开始收费咨询后,情况发生了改变,许多人主动联系他,希望与他交流关于数据库趋势、程序员如何成功以及开发者营销等话题。作者认为,收费咨询让人们更愿意占用他的时间,因为这让他们觉得有一个合理的理由来打扰一个网络陌生人。此外,将收入捐赠给慈善机构也让人们更乐意参与。

作者也承认,收费咨询存在一些问题,例如可能会让那些最需要帮助的人无法获得他的咨询。为了解决这个问题,他表示仍然会根据自己的时间安排,为那些不捐款的人提供免费咨询。此外,在他30岁生日时,他还为所有捐款至少30美元的人提供咨询,这进一步推动了该计划的发展。

总的来说,作者认为“教育聊天”项目比他想象的更成功,他通过这个项目结识了许多了不起的人,并为慈善事业做出了贡献。

评论区对此展开了热烈的讨论,一些人分享了他们类似的经历。

  • @rpastuszak 分享了自己通过 "Say Hi" 页面结识 200 多人的经验,并表示也有人建议他收费咨询。但他担心收费会阻止那些经济困难的学生和有趣的人与他联系。
  • @wodenokoto 提到了一个类似的视频,视频中有人在 "免费拥抱" 的人旁边摆摊 "付费拥抱",结果反而吸引了更多人。
  • @BlackFly 认为,收费咨询创造了一种期望,让人们更愿意提出问题。当咨询是免费的时,人们可能会犹豫,因为他们不确定对方是否会回答他们的问题。
  • @jpalomaki 引用了《魔鬼经济学》中的一个例子,说明收费有时会适得其反。
  • @poisonborz 认为,作者的成功是因为他已经是一位受欢迎的学者和作家,而且收入用于慈善事业。
  • @Almondsetat 认为,拥有大量的浏览量和容易找到的电子邮件地址,但却没有人联系是很不寻常的。
  • @thenthenthen 分享了自己在小型非营利组织举办研讨会的经历,有人专门为了与他聊天而参加研讨会,即使他们收取了少量费用。

这些评论提供了不同的视角,表明收费咨询的效果可能因人而异,并受到多种因素的影响,例如个人的知名度、咨询的目的以及收费的金额。


追踪反作弊更新的技术方法

本文深入探讨了追踪反作弊系统(尤其是EasyAntiCheat)更新的技术方法,为逆向工程和安全研究人员提供了宝贵的思路。文章详细介绍了如何通过分析CDN链接、解密模块以及提取嵌入式文件来追踪反作弊系统的更新。

文章首先介绍了EasyAntiCheat (EAC) 的更新追踪方法。在被Epic Games收购之前,EAC使用自己的CDN,可以通过https://download.eac-cdn.com/api/v1/games/{game_id}/client/{system}/download/?uuid=1239688链接来下载更新。收购后,EAC切换到EpicGames CDN,链接结构变为https://modules-cdn.eac-prod.on.epicgames.com/modules/{product_id}/{deployment_id}/{system}

下载的模块通常是加密或压缩的,具有很高的熵值。文章揭示了EAC模块的解密算法,展示了如何通过逆向工程找到解密算法并编写POC来解密二进制文件。解密后的文件仍然受到VMProtect的保护,需要进一步解包才能进行分析。文章介绍了使用LoadLibraryA加载库进行解包的方法,并指出解包后的.data段包含加密的PE头,其中存储着驱动程序和内部模块。

文章还详细介绍了如何提取嵌入式文件。通过搜索加密的PE头(MZ0x4D5A),并结合数据结构EncryptedModule的特点,可以找到并提取加密的模块。文章提供了一段代码示例,展示了如何利用零填充来定位和提取加密的驱动程序。

总的来说,文章为追踪反作弊系统的更新提供了一个全面的技术指南,涵盖了CDN分析、模块解密、文件解包和嵌入式文件提取等多个方面。这些技术对于安全研究人员和游戏开发者来说都具有重要的参考价值。


Go 语言的快速进程内事件分发器:kelindar/event

kelindar/event 是一个用 Go 编写的轻量级库,它提供了一个简单的内部事件总线,用于在应用程序的不同组件之间进行快速的进程内事件分发。这个库特别适合那些需要高性能、低延迟的事件驱动架构的 Go 应用。

该库的核心优势在于其简洁的设计和高效的实现,允许开发者轻松地定义和发布事件,并注册相应的事件处理程序。它避免了使用外部消息队列或复杂的中间件,从而减少了开销和依赖性。kelindar/event 的 API 简单易懂,使得开发者能够快速上手并将其集成到现有的 Go 项目中。

通过使用 kelindar/event,开发者可以构建松耦合的应用程序,其中不同的组件可以通过事件进行通信,而无需直接依赖于彼此。这种架构提高了代码的可维护性和可测试性,并允许更容易地扩展和修改应用程序的功能。此外,由于事件处理是异步的,因此可以提高应用程序的响应能力和整体性能。

该项目使用 MIT 许可证,允许在各种项目中使用,无论是开源的还是商业的。目前项目有 381 个 Stars 和 5 个 Forks,表明它在 Go 社区中具有一定的受欢迎程度。

总而言之,kelindar/event 为 Go 开发者提供了一个简单而强大的工具,用于构建事件驱动的应用程序,它具有高性能、低延迟和易于使用的特点。对于那些希望在 Go 应用中实现内部事件总线的开发者来说,这是一个值得考虑的选择。


形式真的决定功能吗?

本文探讨了哈佛大学教授 L. Mahadevan 如何运用数学和物理学来探索常见现象的形态与功能,例如莫比乌斯带、大脑褶皱和白蚁丘。

Mahadevan 长期以来对一些不常被提出的问题很感兴趣,例如惰性物体(如莫比乌斯带)的平衡形状,以及驱动生物系统(如形态发生或社会性昆虫群落)的复杂因素。他与 Steven Strogatz 在 The Joy of Why 节目中分享了他研究这些问题的灵感,以及凝胶、石膏和 LED 灯如何帮助揭示生物系统中的形态和功能。他还提出了一些关于噪声随机过程如何成为我们对几何直觉的基础的观点。Mahadevan 认为,生物学中宏观层面的东西特别吸引他,他试图理解如何从各个组成部分中获得复杂的行为、形状、流动、感知、认知和功能。他尤其感兴趣的是,是否存在可以解释、引导或量化复杂性的方法。

节目中还讨论了大脑褶皱的问题,Mahadevan 早期的研究关注纸张的折叠或褶皱,而现在他则思考大脑的折叠,例如雪貂的大脑,以此来研究其他生物。他解释说,最初的灵感来自于观察手掌上的皱纹。当柔软的系统出现时,这些奇异的结构是如何形成的?大脑内部和外部的褶皱,以及褶皱之间的脑回,似乎都是有趣的奇异结构。大约 15 年前,他们开始研究其中一个褶皱的形成,并用凝胶进行实验,然后将类似的想法用于解释大脑中的钙化或脑回形成。

目前没有评论内容可以分析。


探索尿素的自发形成机制

这篇文章介绍了苏黎世联邦理工学院(ETH Zurich)的最新研究,揭示了尿素如何在没有酶的参与下自发形成。这项研究对于理解生命起源以及在地球早期可能存在的化学反应具有重要意义。

研究人员发现,尿素的自发形成并非像之前认为的那样需要复杂的催化剂。相反,简单的分子,如氨和二氧化碳,在适当的条件下就能反应生成尿素。他们通过实验和计算机模拟,详细研究了这一反应的机制,发现关键在于特定中间体的形成和稳定。

这项研究不仅挑战了传统的化学认知,也为未来的研究开辟了新的方向。例如,它可以帮助我们更好地理解早期地球上的生命起源,以及在其他星球上是否存在类似的化学反应。此外,这项发现也可能对工业生产尿素产生影响,例如开发更高效、更环保的生产方法。研究人员强调,虽然这项研究取得了重要进展,但仍有许多问题需要进一步探索,例如,在不同的环境条件下,尿素的自发形成速率会有什么变化?

这项研究对于化学、生物学和天文学等多个领域都具有重要意义。它不仅加深了我们对生命起源的理解,也为未来的科学研究提供了新的思路和方向。总而言之,这项研究揭示了尿素自发形成的秘密,为我们探索生命起源和化学反应的奥秘打开了一扇新的大门。


Medley Interlisp 项目:复兴历史软件系统

本文介绍了 Medley Interlisp 项目,旨在恢复、保护和发展 Interlisp,使其能在现代操作系统和硬件环境中使用,并在保留其历史价值的同时,选择性地添加现代功能。该项目面临着独特的软件恢复问题,并希望为类似的历史软件恢复项目创建蓝图。

Medley Interlisp 项目由 Interlisp 的最初开发者于 2020 年创立,目前注册为 InterlispOrg Inc.,是一个美国 501(c)(3) 非营利组织。该项目旨在复兴 Interlisp,这是一种主要在 20 世纪 70 年代和 80 年代在 Xerox Palo Alto 研究中心 (PARC) 开发的软件开发环境。Interlisp 是 LISP 的高级实现,LISP 是一种早期的编程语言,与 20 世纪 50 年代和 60 年代的 Fortran、COBOL 和 ALGOL 并列。

该项目的主要目标包括:使 Medley Interlisp 易于在所有常见的现代操作系统上运行;扩展 Medley Interlisp 与现代计算机外围设备(如现代计算机鼠标、键盘和显示器)的兼容性;实施结构性更改,以简化 Medley Interlisp 和现代操作系统之间的互操作性;继续开发 Medley,包括修复错误、将 Common Lisp 兼容性更新到 ANSI Common Lisp 标准,以及完成最初停止开发时代码库中剩余的未完成功能;编辑一份关于 Interlisp 的综合书目,并使其对研究人员有用;最重要的是,保留 Medley Interlisp 作为具有开创性的历史系统的价值,以供历史和计算研究之用。

Interlisp 在其生命周期中,为人工智能、计算语言学、图形用户界面、超文本和其他早期计算领域中的软件研究提供了支持,强调了有助于以研究为中心的开发周期的能力,而不是按规范进行编程。它对快速原型设计的偏爱是其他软件开发环境所缺乏的,即使在今天也是如此。Interlisp 的独特之处在于其集成了 DWIM(Do-What-I-Mean)系统、History 包和 UNDO 功能等创新特性。DWIM 系统能够自动纠正简单的编程错误,History 包则记录用户的操作历史,并允许用户检查和重新提交操作,而 UNDO 功能则可以撤销操作,甚至可以撤销整个编辑会话。


使用 Depot API 大规模安全构建非信任容器镜像

本文介绍了如何使用 Depot API 为多租户 SaaS 平台设置和管理隔离的构建环境,重点在于安全地构建非信任容器镜像。文章通过 Go 语言示例,展示了如何创建隔离的项目缓存、报告构建指标以及获取客户工作负载的构建日志。

文章首先概述了 Depot 核心 API 基于 buf.build,同时支持 Connect 和 gRPC 协议,并能自动生成多种语言的客户端库。接着,详细介绍了如何使用 Go 客户端创建和管理用户隔离的构建环境,包括为新用户创建项目和项目范围的 token。文章给出了创建项目、删除项目和重置项目缓存的 Go 代码示例,并解释了如何设置项目区域、缓存配额以及构建器大小等参数,以实现灵活的构建性能。

此外,文章还介绍了如何使用分页的 ListBuilds API 请求来获取构建指标,例如构建持续时间(Build Duration)和缓存节省时间(Saved Duration),以及缓存步骤(Cached Steps)和总步骤(Total Steps)的数量。这些指标可以用于客户分析。文章最后提到了获取详细构建步骤的方法,但由于内容截断,具体细节未完全展示。

总而言之,Depot API 提供了一套强大的工具,可以帮助开发者在多租户环境中安全、高效地构建和管理容器镜像,并提供丰富的构建指标用于监控和分析。


通过安装俄语键盘来防御勒索软件攻击

本文讨论了一个有趣的防御勒索软件的技巧:由于许多勒索软件会检查系统语言设置,如果检测到俄语或乌克兰语等虚拟键盘,就会停止安装。这个方法源于网络犯罪分子为了避免当地执法部门的审查,通常会避免攻击独联体国家(前苏联卫星国)的目标。

文章指出,包括 DarkSide 在内的许多勒索软件都内置了禁止安装的语言列表,这些语言主要来自与克里姆林宫关系友好的前苏联卫星国。通过检测这些语言的存在,恶意软件可以判断是否应该继续安装。虽然安装这些语言并不能保证完全免受所有恶意软件的侵害,但对于某些特定类型的勒索软件,这可能是一种简单且免费的预防措施。

网络犯罪分子可能会改变策略,不再进行语言检查,但这会增加他们的风险。俄罗斯的网络犯罪分子使用这种检查来确保他们只攻击俄罗斯境外的受害者,以获得法律上的保护。安全专家 Allison Nixon 认为,如果足够多的人使用这种方法,可能会在短期内保护一些人,更重要的是,可能会迫使犯罪分子改变策略,从而增加他们的运营成本。

虽然 Mandiant 分析的 DarkSide 的一个最新版本没有执行系统语言检查,但安装一个西里尔键盘或更改特定的注册表项仍然可能足以让恶意软件认为你是俄罗斯人,从而避免攻击。


已复制到剪贴板

评论 0 条

暂无评论,来种下第一颗种子。