arXivLabs:与社区协作者共建arXiv新功能
arXivLabs是一个实验性框架,允许合作者直接在arXiv网站上开发和分享新功能。参与者(个人或组织)都认同arXiv的开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,只与遵守这些价值观的合作伙伴合作。如果你有想法为arXiv社区增值,不妨了解一下arXivLabs。
arXivLabs是一个实验性框架,允许合作者直接在arXiv网站上开发和分享新功能。参与者(个人或组织)都认同arXiv的开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,只与遵守这些价值观的合作伙伴合作。如果你有想法为arXiv社区增值,不妨了解一下arXivLabs。
2024年9月底,飓风海伦袭击佛罗里达州。大学停课,人们忙着加固房屋,而我却在逆向工程Waffle House的网站。我利用其Next.js网站中隐藏的JSON数据,构建了一个实时追踪Waffle House门店关闭情况的网站,以此辅助评估飓风灾情。这个网站意外走红,吸引了大量关注,甚至引起了Waffle House官方和知名评论员Frank Luntz的注意。最终,由于商标问题,我不得不下线网站,但这段经历充满了乐趣和意外。
Tesseral是一个面向B2B SaaS业务软件的开源身份验证基础设施,提供多租户、API优先的云端服务,兼容任何技术栈。开发者可使用托管服务console.tesseral.com或自行部署。它集成了用户管理所需的一切功能,包括可定制的登录页面、B2B多租户支持、用户模拟、自助服务配置、多种登录方式(魔法链接、社交登录、SAML、SCIM)、基于角色的访问控制(RBAC)、多因素身份验证(MFA)、密码密钥/WebAuthn、身份验证器应用(TOTP)、API密钥管理、用户邀请和Webhook等。Tesseral提供多种SDK,支持React、Flask等框架,简化了前端和后端集成流程。
Wetlands是一个轻量级的Python库,用于简化Conda环境的管理。它能够按需创建Conda环境,安装依赖项,并在其中执行任意代码,有效避免依赖冲突,非常适合构建插件系统或集成外部模块。Wetlands 使用 pixi 或 micromamba 来快速处理 Conda 环境。通过简单的API,开发者可以创建、启动环境,导入模块,执行函数,最后清理环境。这使得在Python项目中管理依赖变得更加容易和高效。
Google Project Zero 的 Mateusz Jurczyk 花了两年时间深入研究 Windows 注册表,并发现了 53 个 CVE。他的研究揭示了注册表作为本地提权攻击面的复杂性,以及其在 C 语言中编写的大量旧代码导致的安全问题。研究涵盖了多种漏洞类型,包括内存损坏、信息泄露和逻辑错误,并分析了利用这些漏洞的不同入口点,例如注册表加载、应用蜂巢和直接系统调用。研究还强调了注册表的自修复机制如何影响安全审计,以及难以明确区分严格格式要求和约定带来的挑战。最后,文章总结了各种漏洞的利用方法,并探讨了注册表 fuzzing 的策略和难点。
本文作者,一位经验丰富的软件工程师,论述了过度依赖大型语言模型(LLM)可能导致软件工程能力下降的风险。作者指出,LLM虽然能快速生成代码,但却存在输出错误、无法理解上下文、增加技术债务以及扼杀工程师创造力和批判性思维等问题。他援引Peter Naur和Fred Brooks的观点,强调程序设计不仅是编写代码,更重要的是构建程序理论和控制程序熵。作者认为,LLM无法替代人类工程师的深层思考和解决问题的能力,过度依赖LLM最终只会导致成本增加和项目失败。
微软正将Windows更新功能扩展到所有需要更新的第三方应用程序。开发者现在可以注册参与“Windows更新编排平台”的私有预览,该平台未来将支持任何应用程序或驱动程序的更新。虽然主要面向企业应用,但也将向所有应用或管理工具开放。此举将允许应用程序开发者利用基于用户活动、电池状态甚至可持续能源时间的计划更新,并直接连接到Windows更新通知,并将更新记录列在Windows更新的应用更新历史中。微软将支持MSIX/APPX打包的应用,甚至是一些自定义的Win32应用。
Leaning Technologies 宣布发布 CheerpJ 4.1,该版本比预期提前支持 Java 17(预览版),并提升了 Java 11 的稳定性,同时优化了性能、网络栈和移动端兼容性。CheerpJ 是一个基于 WebAssembly 的 JVM,允许在浏览器中直接运行未修改的 Java 字节码,支持大型 Swing/AWT 应用和 Java 库的集成(Library Mode)。CheerpJ 4.1 还引入了对 JNI WebAssembly 模块的支持,使得运行如 Minecraft 等依赖原生代码的 Java 应用成为可能。未来 CheerpJ 5.0 将带来稳定的 Java 17 支持和 NPM 支持等更多功能。
大型语言模型(LLM)彻底改变了代码编写方式,其便捷性甚至超过了互联网的出现。然而,这并未改变代码理解比编写更难的根本事实,每行代码都意味着技术债务。LLM的引入使得说服团队放弃旧的测试套件、技术决策变得更难,就像让幼儿放弃安抚奶嘴一样。LLM容易编写新的功能,导致代码库变得庞大且难以维护,这与追求“不重复自己”(DRY)原则相悖。高效的工程团队依赖于对工具链的深入专业知识,而LLM降低了编写代码的成本,导致代码库生态多样性爆炸式增长。未来,LLM或许能帮助我们改进代码可读性和推理能力,但目前,它带来的挑战不容忽视。
这篇文章揭示了JavaScript中日期解析的奇特之处:`2025/05/28`和`2025-05-28`在JavaScript中表示不同的日期。这源于浏览器对日期字符串解析的长期不一致。文章追溯了从2009年ES5标准发布以来,不同浏览器(Chrome、Firefox、Safari)对日期字符串解析的演变过程,以及它们对ISO 8601标准不同程度的实现和对标准理解的偏差。最终,`2025-05-28`这类日期格式会被解释为UTC时间,而其他格式则被解释为本地时间,造成了混乱。文章最后介绍了即将推出的JavaScript Temporal API,它将解决这个问题,强制要求提供时区信息。
LIEF库新增了强大的API,用于创建DWARF调试信息文件,并提供了Ghidra和BinaryNinja插件,方便将逆向工程分析结果导出为DWARF格式。DWARF格式不仅用于存储原始源码调试信息,也适合存储逆向工程得到的结构、函数名等信息,实现不同逆向工程工具间的互通。该API支持Python、Rust和C++,并利用LLVM的DWARF后端生成最终文件。插件能够导出函数、变量等信息,甚至包括栈变量的偏移量,极大方便了协同逆向分析和代码理解。
网站使用JavaScript的“工作证明”系统来对抗激进的LLM和网络爬虫,例如Xe Iaso的Anubis。但LLM爬虫可能利用被入侵的机器获得大量CPU时间来解决这些挑战。然而,LLM爬虫面临着恶意环境:难以区分真正的“工作证明”和恶意JavaScript代码,可能导致CPU被用于挖矿或其他恶意活动。LLM爬虫试图识别“工作证明”系统,但这如同与狡猾的对手博弈,因为对方有动机伪装自己。最终,这变成了一场LLM爬虫与网站之间的军备竞赛,双方不断调整策略,试图在保护自身利益的同时,最大限度地利用资源。
一位软件开发者分享了他对使用笔记本进行思考和解决问题的独到见解。他认为,比起直接在电脑上写代码,先在笔记本上手写思考、画图,能更好地理清思路,找到解决问题的关键。这种方法能帮助他将模糊的想法转化为具体的方案,发现代码中的漏洞和设计缺陷,并留下宝贵的思考过程记录,方便日后查阅。对他而言,笔记本是比代码编辑器更重要的工具。
Anza Technology发布了Alpenglow共识协议的参考实现,包括一个可在本地集群运行的6节点示例,节点间通过UDP通信。该实现还提供了一个模拟二进制目标,用于模拟Alpenglow协议的各个部分,特别是Rotor的弹性以及Alpenglow整体的延迟和带宽需求。模拟运行需要下载公共ping数据集。此外,还提供了微基准测试和测试套件。安全问题请直接联系quentin (at) anza (dot) xyz。
本文探讨了构建和维护单体仓库(monorepo)的挑战与机遇。作者指出,单体仓库并非银弹,盲目追求大型科技公司的成功经验是危险的。成功的关键在于明确目标,例如提升代码一致性、组织凝聚力及工具共享效率。文章详细阐述了在单体仓库环境下,源码管理(git的局限性及替代方案)、构建系统(单语言策略优先)、测试策略(O(change)而非O(repo))以及持续集成/持续交付(CI/CD)流程的优化方法。作者强调,在单体仓库中,需谨慎处理生成的代码和服务部署的异步性,避免因原子性承诺的错觉而造成事故。最终,作者认为,单体仓库虽有挑战,但若能坚持不懈地改进工具和流程,其收益是值得的。
本文介绍了 `pg_test_fsync` 工具,用于快速测试磁盘或云存储的写入性能,尤其适用于数据库WAL日志等低延迟写入场景。作者使用该工具测试了消费级三星990 Pro SSD和企业级Micron 7400 SSD,结果显示企业级SSD由于具有控制器DRAM缓存和电力损耗保护功能,其同步写入速度显著高于消费级SSD。测试还发现,`fdatasync` 比 `fsync` 或 `O_SYNC` 速度更快,但即使是`fdatasync`,单个8kB写入也需要1.6毫秒。文章最后提醒,多个小写入会导致性能下降,批量写入可以提高效率。
2015年,作者开发PoE供电的嵌入式x86电脑遇到难题:系统需要23W才能启动,而标准PoE只提供15.4W。尝试修改BIOS失败后,作者巧妙地利用UEFI应用程序,在操作系统启动前发送LLDP数据包,成功协商更高的PoE+供电。这个名为PoePwrNegotiator的UEFI应用,用C语言编写,现已开源,为类似项目的开发者提供了宝贵的经验。
一张未经优化的英雄图可能比你的整个网页预算还重!这篇文章教你如何快速掌握图片压缩技巧,提升网站速度和SEO。文章讲解了无损和有损压缩的区别、关键指标(质量、分辨率、文件大小)、常用格式(JPEG、PNG、WebP、AVIF)以及使用SlimImg工具进行压缩的步骤。通过图片压缩,电商网站案例显示,平均页面大小减少了68%,转化率提升了38%。
本文深入探讨了Diffie-Hellman密钥交换中为何选择椭圆曲线。作者从群论出发,解释了为什么像“怪兽群”这样的其他群不适合用于Diffie-Hellman。通过深入研究群对象和范畴论,作者揭示了椭圆曲线并非随意选择,而是几乎唯一的选择,甚至有限域Diffie-Hellman也可以视为一种特殊的椭圆曲线。
LLM 0.26版本发布,带来了自项目启动以来最重大的更新——工具支持。开发者现在可以使用LLM命令行工具和Python库,为来自OpenAI、Anthropic、Gemini和Ollama的本地模型提供访问任何可表示为Python函数的工具的权限。文章详细介绍了如何安装和使用工具插件,以及如何通过命令行或Python API运行工具,并提供了多个模型(包括OpenAI、Anthropic、Gemini和Qwen-3)的示例演示。LLM不仅支持内置工具,还支持自定义工具插件,例如用于数学计算的simpleeval、用于JavaScript执行的quickjs和用于SQLite数据库查询的sqlite等。通过工具支持,LLM可以克服其在数学计算等方面的不足,显著扩展其功能,为构建更强大的AI应用提供了可能性。
本文介绍了作者改进 APT 包管理器求解器的方法。最初,手动安装的包被视为固定事实,自动安装的包为可选单元子句。然而,允许删除手动安装包后,求解器出现错误:它可能不必要地删除手动安装的包。作者通过在求解前假设所有可选单元子句,然后在求解过程中逐步撤销假设来解决此问题。这种方法虽然不是全局最优解,但在实践中能有效解决依赖性问题,避免了指数级复杂度的全局搜索。
作者在Hacker News爆款文章中分享了使用WebGL和着色器在GPU上运行GPT-2的经历。文章深入探讨了通用GPU编程的起源和发展,对比了传统的图形API(如OpenGL)和计算API(如CUDA和OpenCL)的差异。作者巧妙地利用纹理和帧缓冲区作为数据总线,将片段着色器作为计算内核,实现了矩阵乘法和GELU激活函数等神经网络操作。尽管这种方法在共享内存、纹理大小和精度等方面存在限制,但这篇文章依然为我们展现了GPU编程的魅力和可能性,以及将图形处理技术应用于通用计算的创新尝试。
这个C语言程序高效地计算给定位数的右截断素数数量。它使用自定义哈希表进行快速素数查找,并使用primesieve库进行高性能素数生成。右截断素数是指一个素数,当其最右边的数字被连续移除时,会产生一系列素数。程序可以计算1到19位数的右截断素数,并给出运行时间。例如,对于8位数,它找到了5个8位右截断素数,以及总共83个右截断素数。
Glasskube公司工程师Philip分享了他们将技术文档框架从Docusaurus迁移到Starlight的经验。文章详细比较了两个框架在设计、SEO、开发者体验、构建速度和扩展性等方面的差异。Docusaurus基于React,构建速度较慢,定制性受限;Starlight基于Astro,构建速度更快,并支持Tailwind CSS,但缺乏Mermaid集成和营销页面支持。Glasskube最终选择Starlight,因为它提供了更好的开发者体验和更现代化的外观,尽管存在一些不足。文章还分享了他们撰写技术文档的经验,包括文档结构、用户行为分析以及写作风格等方面,强调简洁明了的重要性。
这是一份不同寻常的早期公司创始工程师职位,需要你将一半时间投入研究,一半时间投入工程。理想候选人具备两方面的经验,但只要你拥有扎实的量化背景和强烈的学习意愿,即使缺乏研究经验也可以申请。我们要求你精通Web开发(Javascript,Node.js)和Python。工作具有开放性,需要你适应不确定性,并从失败的实验中学习。你将拥有高度的自主权,享受解决问题的自由和挑战。
作者认为,对于工程师而言,对所用技术的浅层理解就足够了。深入理解数据库索引、大型语言模型等技术,能帮助工程师做出更明智的决策,例如选择合适的模型进行JSON输出,并避免因小模型的局限性而导致错误。作者建议,与其深入研究某一领域,不如广泛了解多个领域,这样才能更好地适应新的技术趋势。学习新技术时,应注重理解其背后的基本原理,并能用通俗易懂的语言解释给其他人,同时利用大型语言模型进行事实核查,以确保理解的准确性。
Xata构建了一个Model Context Protocol (MCP)服务器,它允许AI模型安全地与工具和API实时交互。为了避免手工编写每个工具,Xata利用现有的OpenAPI规范自动生成MCP服务器,并使用Kubb代码生成工具进行定制。通过这个方法,Xata将OpenAPI规范作为单一事实来源,快速开发并保持一致性。文章详细介绍了迁移到Kubb、自定义生成器以及使用Next.js构建MCP服务器的过程,最终实现了高效的AI集成。
PyCon 2025上,Meta的Pyrefly和Astral的ty两款基于Rust的新一代Python类型检查器首次亮相。Pyrefly旨在更快、更便携、功能更强大,并积极参与开源社区。ty则强调“渐进保证”,即移除类型注解不应导致类型错误。两者都使用Ruff进行AST解析,并支持命令行和IDE集成。性能测试显示ty普遍更快,但在类型推断和错误处理方面各有千秋。Pyrefly更积极地进行类型推断,可能捕捉更多错误,但可能也引入更多误报;ty则更保守,但更注重代码兼容性。两者都处于早期alpha阶段,未来发展值得期待。
arXivLabs是一个框架,允许协作者直接在arXiv网站上开发和共享新的arXiv功能。参与arXivLabs的个人和组织都秉持着开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,并且只与遵守这些价值观的合作伙伴合作。如果您有想法可以为arXiv社区增值,请了解更多关于arXivLabs的信息。
Malai 0.2.5 版本新增了共享本地 TCP 服务的功能,允许用户安全地将本地运行的任何 TCP 服务(例如 SSH、Postgres、Redis 等)暴露给外部网络。用户只需使用简单的命令即可共享端口,并通过 `malai tcp-bridge` 命令在其他机器上连接。此外,Malai 还新增了 `malai folder` 命令,用于共享本地文件夹。这一更新为开发者和团队协作提供了更便捷安全的方式,例如远程调试、共享数据库或游戏服务器等。