分类: 开发

Go语言JSON、XML和YAML解析器的安全风险

2025-06-21
Go语言JSON、XML和YAML解析器的安全风险

Go语言的JSON、XML和YAML解析器存在安全风险,攻击者可利用其意外行为绕过身份验证、规避授权控制并窃取敏感数据。文章分析了三种攻击场景:(1)意外数据编解码:解析器可能暴露开发者意图保密的数据;(2)解析器差异:不同解析器处理相同输入的差异可能导致攻击者绕过安全控制;(3)数据格式混淆:解析器处理跨格式有效载荷的方式可能产生可利用的结果。文章还提供了具体的安全配置建议,包括使用`DisallowUnknownFields`和自定义函数来弥补Go标准库的安全漏洞。

开发

增强型顶点块下降法:实时物理模拟的突破

2025-06-21

研究人员提出了一种名为增强型顶点块下降法(AVBD)的全新物理模拟方法,它在保证无条件稳定性和高度并行化的同时,显著提升了收敛速度和对复杂约束的处理能力。AVBD能够高效处理刚体堆叠、摩擦、关节约束以及刚柔体交互等复杂场景,并在GPU上实现了实时性能,即使面对数百万个物体间的碰撞和交互也能保持稳定。与现有方法相比,AVBD在性能、收敛性和稳定性方面展现出显著优势,并提供了一个在线2D演示。

开发

Chromium构建系统迁移至Siso

2025-06-21

谷歌Chrome构建基础设施团队宣布Chromium构建系统将从Ninja迁移到Siso。Siso是Ninja的替代品,原生支持远程执行。外部开发者只需继续使用autoninja构建,它会在下次运行gn clean后自动使用Siso。如果遇到问题,可以在args.gn中设置use_siso=false来切换回Ninja。Ninja将在9月底停止支持,Reclient也将移除。

开发 Siso

巴黎惊魂:一次生产数据库的级联删除事故

2025-06-21
巴黎惊魂:一次生产数据库的级联删除事故

一位软件工程师在巴黎一家房地产初创公司Joe AI工作时,由于在生产数据库上进行操作,意外地删除了一条用户记录,导致级联删除触发,从而丢失了三个月的重要数据。尽管通过升级Supabase付费计划恢复了部分数据,但这起事故凸显了在生产环境中直接操作数据库的风险,以及缺乏完善备份机制的严重后果。最终,这次事故促使团队改进开发流程,建立本地Supabase实例,提升了开发效率,并强调了从错误中学习的重要性。

深入浅出伽罗瓦域:面向计算机科学家的抽象代数教程

2025-06-21

本系列教程将循序渐进地讲解抽象代数,特别是伽罗瓦域(有限域)及其在计算机科学中的应用。作者认为现有资源要么过于简化,要么过于晦涩,难以被计算机科学家理解。本教程将采用循序渐进、实践结合的方式,并辅以Rust代码示例,帮助读者掌握抽象代数的概念和应用,例如Reed-Solomon码、AES加密等。教程目标是易于理解和学习,而非追求代码优化。

开发 伽罗瓦域

AtomicOS:一款注重安全的教学用操作系统

2025-06-21
AtomicOS:一款注重安全的教学用操作系统

AtomicOS是一个从零开始构建的,以安全为首要目标的教育性操作系统。它采用确定性编程语言Tempo,并实现了真正的内存保护、加密和完整内存管理单元(MMU),包括AES-128加密、SHA-256哈希等高级安全特性。虽然目前功能有限,例如缺乏网络栈、文件系统和驱动程序,但其设计理念和安全实现值得学习和借鉴。该项目开源,但要求署名和变更披露。

开发

arXivLabs:与社区协作者共建arXiv新功能

2025-06-20
arXivLabs:与社区协作者共建arXiv新功能

arXivLabs是一个全新的合作框架,允许开发者直接在arXiv网站上开发和分享新功能。参与其中的个人和组织都认同arXiv的开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,只与坚持这些价值观的合作伙伴合作。你有提升arXiv社区价值的想法吗?了解更多关于arXivLabs的信息吧!

开发

大型语言模型加剧了代码库利用率低下的问题

2025-06-20

代码库利用率低下的问题由来已久,原因包括编写代码比阅读文档更有趣、Dunning-Kruger效应导致我们低估了库的复杂性以及公司内部项目与库竞争等。大型语言模型(LLM)的出现加剧了这个问题。LLM的“vibe coding”虽然高效有趣,但其输出质量往往不如经过实战检验的库。LLM生成的代码容易受到提示词的影响,而库的创建者对问题理解更深入,能更好地利用LLM生成高质量代码。然而,过度依赖LLM生成代码反而可能被视为创新,导致公司激励机制扭曲,进一步加剧了这个问题。因此,对于复杂的编程问题,我们应该优先选择使用成熟的库,而不是直接使用LLM生成代码。

开发

Lean 中的备忘录化动态规划证明

2025-06-20
Lean 中的备忘录化动态规划证明

本文介绍了如何在 Lean 编程语言中使用备忘录化技术解决动态规划问题,并通过依赖类型对其正确性进行验证。作者首先提出了一个经典的动态规划问题——Bytelandian 金币问题,然后给出了一个使用 HashMap 的备忘录化解法,并解释了直接证明其正确性的困难。随后,文章引入了子类型和依赖对的概念,并利用它们构建了一个新的 Memoization 表 PropMap,该表不仅存储计算结果,还存储了其正确性的证明。最终,作者通过在算法中嵌入证明的方式,实现了算法的正确性验证,并给出了一个简单的最终证明。

开发

arXivLabs:与社区协作者一起进行实验性项目

2025-06-20
arXivLabs:与社区协作者一起进行实验性项目

arXivLabs是一个框架,允许协作者直接在我们网站上开发和分享新的arXiv功能。与arXivLabs合作的个人和组织都认同并接受了我们关于开放性、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,并且只与遵守这些价值观的合作伙伴合作。有想法可以为arXiv社区增值吗?了解更多关于arXivLabs的信息。

开发

YouTube反广告拦截新招:伪造缓冲,如何反制?

2025-06-20

YouTube近期推出新一轮反广告拦截措施,其中一种是“伪造缓冲”,在视频开始时人为制造长时间缓冲,其时长与广告时长成正比。博主发现,这是由于YouTube的InnerTube API在广告拦截情况下,会向GVS(Google Video Services)请求返回包含延时信息的视频流。博主通过修改uBlock Origin过滤器,在JSON请求中添加`isInlinePlaybackNoAd: true`属性,成功规避了该问题,但YouTube也使用了锁定脚本阻止此方法,博主通过hook Object.assign方法实现了新的规避方案。

开发

HashiCorp弃用HCP Vault Secrets服务

2025-06-20
HashiCorp弃用HCP Vault Secrets服务

HashiCorp宣布将于2025年8月27日停止HCP Vault Secrets服务(按需付费用户)。该公司将把HCP Vault Secrets的易用性经验应用到HCP Vault Dedicated中。现有用户应迁移到HCP Vault Dedicated或Vault Community。 2025年6月30日停止销售,现有用户可在生命周期结束前添加新的HCP Vault Secrets应用程序。Flex合同客户不受影响。

开发 Vault

Nxtscape:一款开源的赋能型浏览器,你的AI生产力助手

2025-06-20
Nxtscape:一款开源的赋能型浏览器,你的AI生产力助手

Nxtscape是一款基于Chromium的开源浏览器,旨在成为隐私优先的替代方案。它允许用户本地运行Manus之类的代理,通过AI助手提升生产力。不同于Chrome等封闭源浏览器,Nxtscape将AI功能置于本地,保护用户隐私。其目标是重新构想浏览器,解决现有浏览器中存在的痛点,例如多标签管理混乱、繁琐的表单填写等。Nxtscape计划集成MCP商店,并内置AI广告拦截器。该项目开源且社区驱动,用户可以参与开发和改进。

开发

告别数据科学的生产化噩梦:Marimo和Bauplan的Pythonic解决方案

2025-06-20
告别数据科学的生产化噩梦:Marimo和Bauplan的Pythonic解决方案

将机器学习模型从原型部署到生产环境一直是数据科学家的痛点。传统方法要么依赖脆弱易碎的Jupyter Notebook,要么需要耗时且昂贵的DevOps介入。本文介绍了Marimo和Bauplan这一对Pythonic工具组合,它们通过将整个流程保持在Python环境中,实现了从原型到生产的无缝衔接。Marimo是一个现代化的开源Notebook,兼具Jupyter的灵活性与脚本的可维护性;Bauplan则是一个云数据平台,支持Pythonic工作流,内置数据版本控制和声明式环境。通过这两个工具,数据科学家可以直接将Notebook中的代码部署到生产环境,无需复杂的代码重构或跨团队协作,极大地简化了生产流程,提高了效率。

开发

Rust编写最小自动微分引擎

2025-06-20
Rust编写最小自动微分引擎

这是一个用Rust编写的最小自动微分引擎。该引擎可以训练一个小型多层感知器来学习XOR函数,并能将单个感知器的计算图渲染到graph.html文件中。其核心是Scalar结构体,存储值、梯度和描述生成它的操作的Edge。运算符重载和辅助函数构建一个有向无环图,缓存每个边的局部导数。backward()函数从输出节点开始递归地传播梯度,累积到用Scalar::new_grad创建的叶节点中。计算图可以通过plot::dump_graph可视化。

开发

Klong:简洁的数组编程语言

2025-06-20

Klong 是一种简洁的数组编程语言,类似于 K 语言,但去除了歧义。它使用数学符号进行编程,对熟悉 K 或 APL 的用户来说可能略显简单,而对于新手则可能带来挑战。Klong 提供了丰富的文档,包括参考手册、入门指南和快速参考,以及 Klong 与 K 的差异比较。它用纯 ANSI C 编写,易于编译和安装,并提供了一个名为 KlongPy 的矢量化版本。

开发 Klong

Phoenix.new:基于Elixir的在线编码Agent,加速实时应用开发

2025-06-20
Phoenix.new:基于Elixir的在线编码Agent,加速实时应用开发

Phoenix框架的创建者Chris McCord发布了Phoenix.new,一个基于Elixir的在线编码Agent。它在一个隔离的虚拟机中运行,提供root shell访问权限,让Agent可以安装软件包、运行程序,并与应用程序进行交互。Phoenix.new集成了浏览器,可以进行前端测试和交互。它能自动部署应用,并与Github集成,极大简化了开发流程,甚至可以根据数据库模式生成应用。作者认为,这代表了开发流程的重大变革,未来开发可能更多地依赖于Agent在CI环境中的工作。

(fly.io)
开发

AI赋能PostgreSQL数据库探索工具:cursor

2025-06-20
AI赋能PostgreSQL数据库探索工具:cursor

cursor是一款利用AI技术,在几秒钟内探索PostgreSQL数据库的本地桌面应用程序。它能够根据数据库模式生成智能查询,支持任何PostgreSQL数据库,并允许用户使用自己的OpenAI密钥。目前,用户需要自行编译安装,但预编译版本即将推出。

ts-ssh: 基于 Tailscale 的强大 SSH/SCP 命令行工具

2025-06-20
ts-ssh: 基于 Tailscale 的强大 SSH/SCP 命令行工具

ts-ssh 是一款强大的命令行工具,它利用 Tailscale 网络提供简化的 SSH 和 SCP 功能。无需完整的 Tailscale 守护进程,即可实现多主机操作、批量命令执行和真正的 tmux 集成。开发者团队可通过它快速可靠地访问 Tailscale 基础设施。它支持多种身份验证方法、交互式 SSH 会话、安全的主机密钥验证以及直接的 SCP 传输。此外,它还具有强大的多主机操作功能,例如批量命令执行、并发命令执行和多主机文件分发。ts-ssh 支持跨平台使用,并提供多种语言支持。

开发 SCP

AI代码生成工具的陷阱:忽视底层架构的隐患

2025-06-20
AI代码生成工具的陷阱:忽视底层架构的隐患

本文探讨了在软件工程中盲目使用敏捷方法和AI代码生成工具的风险。作者指出,目前的敏捷方法过度关注功能开发速度,忽略了系统维护和架构的底层工作,而AI代码生成工具擅长快速生成表面功能,却无法解决底层架构问题。这如同盖房子只顾装修,不顾地基,最终导致系统崩溃。作者呼吁企业领导者重视工程的底层工作,避免因追求短期效益而牺牲长期稳定性,并建议学习技术会计方法来更好地理解和管理工程团队。

开发

GNU Makefiles最佳实践指南

2025-06-20

本文档详细阐述了编写高效、可维护和可移植GNU Makefiles的最佳实践。它涵盖了Makefile的结构、变量的使用、规则和目标的定义、以及处理大型项目和并行构建的策略。文章强调了使用自动变量、避免常见的错误,并提供了处理各种场景(如清理任务、依赖管理和多文件处理)的技巧。最终目标是帮助开发者编写清晰易懂,且易于维护的Makefile,提高开发效率。

开发

Wayland时代来临:残障人士的Linux桌面未来

2025-06-20

随着X11的逐渐淘汰,Wayland成为Linux桌面的未来。这对依赖辅助技术的残障人士来说是一个巨大的挑战,因为Wayland的早期版本存在严重的可用性问题。然而,情况正在好转。GNOME积极改进Wayland的辅助功能支持,Orca等屏幕阅读器也获得了显著提升。虽然一些问题仍然存在,例如headless GUI的支持不足和Compositor兼容性问题,但开发者们正努力解决这些问题,并构建一个更易访问的Wayland生态系统。这篇文章呼吁开发者和社区共同努力,确保Wayland的未来不会遗弃残障人士。

开发

加速Rust编译:从8分钟到10分钟的秘密

2025-06-20

Rust编译速度慢是众所周知的,但本文作者认为大多数Rust项目编译速度都远低于预期。以rust-analyzer为例,其20万行代码及百万行依赖项的CI流程在GitHub Actions上仅需8分钟。作者详细阐述了如何优化rust-analyzer的构建时间,包括利用CI缓存、拆分CI任务、禁用增量编译和调试信息、减少依赖项、使用`cargo build -Z timings`进行性能分析,以及精心设计代码以避免泛型代码在crate边界上的过度实例化等策略。文章强调了构建时间对开发效率的影响,并建议定期优化构建时间,将大型Rust项目的CI时间控制在合理范围内,例如10分钟左右。

开发

JavaScript:让网页变得糟糕的“进步”

2025-06-20
JavaScript:让网页变得糟糕的“进步”

这篇文章批判了现代Web开发中过度依赖JavaScript框架的现象。作者认为,为了追求类似原生App的体验,开发者过度使用复杂的框架和工具,导致网站加载缓慢、维护困难,并损害了用户体验和SEO。文章指出,许多网站的功能可以用更简洁的代码实现,过度复杂的架构反而降低了效率。作者呼吁开发者回归简洁,优先考虑用户体验和性能,而不是一味追求技术上的炫技。

开发

Makefile 指南:征服令人困惑的构建系统

2025-06-20

这篇指南深入浅出地讲解了 Makefile 的使用,帮助开发者摆脱 Makefile 中隐藏规则和神秘符号的困扰。文章从 Makefile 的基本概念出发,逐步讲解了其语法、变量、函数以及高级用法,并辅以丰富的示例代码,读者可自行运行验证。此外,指南还提供了一个适用于中等规模项目的 Makefile 模板,方便开发者快速上手。

开发

高频交易平台QFEX招募资深后端工程师

2025-06-20
高频交易平台QFEX招募资深后端工程师

QFEX,一家处理数十亿美元每日交易量的金融科技公司,正在寻找一位资深后端工程师加入其创始团队。该职位需要候选人具备高性能语言(如C++)的经验,以及构建和运行高流量实时生产系统的经验(3年以上)。候选人需要设计容错、低延迟、高可用性服务,建立CI/CD和监控流程,并引领技术方向。理想候选人应具备金融科技或低延迟交易经验,熟悉Kubernetes或基础设施即代码,并具有极强的责任心和决策能力。

开发

Rust编写的Linux兼容内核Asterinas:挑战传统内核设计

2025-06-20

来自中国南方科技大学的研究人员开发了一个名为Asterinas的新型Linux内核,它使用Rust语言并采用“framekernel”架构。该架构结合了单内核和微内核的优点,将需要使用Rust不安全特性的代码封装在一个库中,其余内核服务则使用安全抽象开发。这提高了内核安全性,同时保留了单内核的高性能。Asterinas的目标是创建一个具有小型可形式化验证的TCB的系统,同时具有Linux ABI兼容性和简单的共享内存架构。目前,Asterinas支持x86和RISC-V架构,并正在积极开发中,未来计划扩展对更多架构的支持,并将其应用于云计算领域。

开发 framekernel

网络协议中的管道化陷阱:SMTP 的教训

2025-06-20

本文探讨了网络协议中“管道化”(pipelining)技术的风险。在一些文本协议(如SMTP)中,客户端可能发送多个请求而无需等待响应。然而,服务器端实现不当可能导致问题。例如,服务器可能依赖于隐式状态机,导致在处理多个同时到达的请求时出现混乱,从而错误地接受或拒绝邮件。文章分析了这种潜在问题的根源,并引用RFC 2920中关于管道化死锁的讨论,提醒开发者需谨慎处理管道化,避免因状态管理不当或缓冲区问题导致错误。

开发 管道化

Hurl:命令行HTTP请求测试工具

2025-06-20
Hurl:命令行HTTP请求测试工具

Hurl 是一款强大的命令行工具,使用简单的纯文本格式定义和运行 HTTP 请求。它支持请求链式调用、值捕获以及对响应头和正文进行查询评估,可用于数据获取和 HTTP 会话测试,兼容 REST、SOAP、GraphQL 等多种 API。Hurl 使用 Rust 编写,轻量快速,并集成 libcurl,支持多种报告格式,方便集成 CI/CD 流程。

开发
1 2 55 56 57 59 61 62 63 213 214