分类: 开发

浏览器渲染引擎的无限边界测试

2025-08-08
浏览器渲染引擎的无限边界测试

作者通过在CSS中使用`calc(infinity * 1px)`设置元素的宽度和高度,测试了不同浏览器渲染引擎处理无限值的边界。测试结果显示Chrome和Safari浏览器将值限制在约33,554,400像素,而Firefox Nightly则表现出异常,高度被限制在文本行高,宽度则达到数百万像素,但布局宽度只有其一半。进一步测试字体大小和行高后,这种差异依然存在,Firefox的渲染结果与其他浏览器大相径庭。作者对这些异常现象的成因进行了推测,并希望读者提供解释。

开发 无限值

用Bluesky打造无后端博客评论系统

2025-08-08
用Bluesky打造无后端博客评论系统

厌倦了传统笨重的评论系统?作者巧妙地利用去中心化社交平台Bluesky的AT协议,构建了一个轻量级、无后端维护的博客评论系统。通过Bluesky的API,将博客文章发布到Bluesky,并利用其帖子URI获取评论,实现了富文本支持、身份验证和跨平台对话等功能。无需管理数据库和用户账户,有效解决了传统评论系统的痛点,提升了用户体验,并增强了博客的可扩展性和独立性。

开发 博客评论

Immich开发团队遇到的那些令人抓狂的Bug

2025-08-08
Immich开发团队遇到的那些令人抓狂的Bug

Immich团队在开发过程中遭遇了一系列令人头疼的“诅咒级”问题:从Zitadel脚本引擎不支持命名捕获组,到EXIF图像元数据尺寸与实际尺寸不符;从YAML空格的非直观处理,到Windows隐藏文件的访问限制;从Bash脚本中的回车符问题,到Cloudflare Workers中Fetch请求的HTTP默认协议;从移动设备GPS数据被静默删除,到PostgreSQL NOTIFY的交易机制导致性能问题;从npm脚本的低效健康检查,到JavaScript日期对象的索引混乱;再到bcrypt密码长度限制、Node.js的兼容性问题、PostgreSQL参数数量限制以及TypeORM删除操作的副作用等等。这些问题充分体现了软件开发中隐藏的陷阱与挑战,也为开发者们提供了宝贵的经验教训。

开发 Immich

从自我怀疑到软件开发之路:一位学员的 Makers 预备课程周记

2025-08-08

一位学员分享了她在 Makers 预备课程第四周的经历,从简历撰写中引发的自我怀疑,到逐渐掌握测试驱动开发 (TDD) 并进行个人项目,展现了她在软件开发学习过程中的成长与挑战。她坦诚地分享了自身经历,包括疾病康复和学业转变,并最终坚定地追求软件工程师的梦想。文章也展现了她对编程的热情,以及通过学习 Go 语言开发文字冒险游戏来巩固知识的努力。

开发

在家搭建高可用性Proxmox虚拟环境:自动化安装与配置

2025-08-08
在家搭建高可用性Proxmox虚拟环境:自动化安装与配置

作者为了提升家庭服务器的灵活性和可靠性,选择在Minisforum UM880 Plus迷你电脑上搭建Proxmox虚拟环境。文章详细描述了整个过程,包括安装加密的Debian系统、配置桥接网络、以及使用Ansible自动化安装和配置Proxmox的过程。作者还分享了在安装过程中遇到的问题,例如Proxmox安装导致系统无法启动,并提供了解决方案。最终,作者成功搭建了一个可自动化的Proxmox虚拟环境,为未来的Kubernetes学习和实验提供了坚实的基础。

开发

Postgres扩展:构建自定义内存表访问方法

2025-08-08

本文讲述了作者如何构建一个自定义的PostgreSQL表访问方法,实现一个简单的内存存储引擎。作者从构建一个debug版本的PostgreSQL开始,逐步实现了表访问方法API的各个函数,最终实现了创建表、插入数据和查询数据的完整功能。过程中作者遇到了许多挑战,例如调试和理解PostgreSQL内部机制,并通过日志记录和逐步调试解决了这些问题。这是一个极佳的PostgreSQL扩展开发案例,为其他开发者提供了宝贵的经验和参考。

开发 扩展开发

在Arm架构桌面系统上运行x86_64程序的尝试

2025-08-07
在Arm架构桌面系统上运行x86_64程序的尝试

作者尝试在基于Ampere Altra的AArch64桌面系统上运行x86_64程序。通过FEX-emu模拟器,成功运行了Steam和Factorio等程序,但性能表现不佳,Geekbench 6的单核和多核得分分别仅为459和4110。作者尝试优化FEX-emu配置,并通过替换Ninja构建工具的x86_64版本为aarch64版本提升了构建速度。最终,作者认为x86_64模拟在Arm架构桌面系统上的实用性有限,主要用于运行一些旧游戏。

抛弃Monad:拥抱自然变换

2025-08-07

这篇文章挑战了函数式编程中Monad的过度使用。作者认为Monad的概念过于抽象,建议直接使用构成Monad的自然变换来进行编程。文章以Я语言为例,解释了如何利用自然变换组合不同的Functor,并比较了这种方法与Monad Transformer的异同,最终主张用更灵活、更底层的自然变换来代替Monad,从而实现更简洁、更强大的程序设计。

开发 自然变换

Stasher:无需账户的极简安全秘密共享工具

2025-08-07
Stasher:无需账户的极简安全秘密共享工具

Stasher 是一款命令行工具,用于安全、短暂地共享秘密,无需账户和后端。它采用 AES-256-GCM 加密,一次性使用后自动销毁,并提供完整的供应链透明性,包括加密签名、SLSA v1 证明和 Rekor 透明度日志。Stasher 的所有代码都是公开的,确保了其安全性与可验证性。即使是极度注重安全的 paranoid 用户,也能安心使用。

开发 秘密共享

Splatshop:高效编辑海量高斯点云模型

2025-08-07

Splatshop是一个全新工具箱,实现了对包含高达一亿个基元的3D高斯点云模型的交互式编辑(选择、删除、绘制、变换等)。它巧妙地结合了精确渲染和快速渲染方法,在保证实时性能的同时实现了精准编辑。该工具箱还支持VR头显,是首个支持VR的大规模3D高斯点云模型编辑器,朝着“高斯点云PS”迈进了一大步。

开发 高斯点云

AI辅助编程:1.5年经验总结与反思

2025-08-07
AI辅助编程:1.5年经验总结与反思

作者分享了1.5年来使用AI辅助编程的经验。AI在处理重复性代码、代码重构和简单任务方面表现出色,但对于复杂问题和全新开发,AI反而会引入错误和低效的抽象。CLI界面比IDE更有效,因为它能保持开发者对代码的控制。AI在设计和写作方面也有帮助,但“vibe coding”(完全依赖AI生成代码)不可取,会产生大量技术债务和安全漏洞。作者认为AI的真正受益者并非开发者,而是管理者和客户,它能帮助他们更有效地沟通和协作。AI的未来充满希望,但公司不应将其作为裁员的借口。

开发

Gemini CLI GitHub Actions:你的AI代码队友来了!

2025-08-07
Gemini CLI GitHub Actions:你的AI代码队友来了!

谷歌推出Gemini CLI GitHub Actions,一个免费的AI编码助手,能自动化处理GitHub上的问题和Pull Request。它可以智能地分类和优先处理问题,快速审查代码变更,甚至根据你的指令完成代码编写、测试等任务。只需在issue或pull request中@gemini-cli,就能获得AI的协助。目前处于beta阶段,全球开发者均可使用。

开发 Gemini CLI

编程中的防抖动技术:高效处理用户输入

2025-08-07
编程中的防抖动技术:高效处理用户输入

在编程中,防抖动(Debouncing)技术用于处理频繁发生的事件,例如用户连续输入。它会忽略在特定时间间隔内过于密集的操作,并将它们合并为一次调用,从而避免UI卡顿。例如,在用户输入搜索关键词时,防抖动可以等待用户停止输入一段时间后再执行搜索,提高效率并改善用户体验。这与节流(Throttling)技术类似,但节流限制的是连续操作的频率,而防抖动则等待一段时间后再执行操作。

Zig单元测试调试技巧:结合打印调试和调试器

2025-08-07

本文介绍了改进Zig单元测试调试的技巧,结合了打印调试和调试器。作者首先解决了打印调试输出冗余的问题,通过`errdefer`在测试失败时才打印信息,减少干扰。然后,利用`build.zig`脚本在构建过程中运行调试器,方便调试测试二进制文件。最后,作者通过条件编译,结合构建选项`-Ddebugger`,实现了在需要时才启用调试器断点功能,避免了调试器干扰正常测试流程。这套方法有效地提高了Zig单元测试的调试效率。

开发

Plush 解释器超越 CPython:斐波那契数列优化之旅

2025-08-07
Plush 解释器超越 CPython:斐波那契数列优化之旅

作者通过优化其玩具编程语言 Plush 的解释器,在斐波那契数列微基准测试中超越了 CPython。文章详细描述了优化过程,包括合并指令、利用 Linux perf 工具分析性能瓶颈,以及通过代码修补和指令融合等技术提升执行效率。最终,Plush 解释器在该基准测试中的速度提升近一倍,但这并未影响其并行光线追踪程序的性能,暗示了微基准测试的局限性。

突破排序障碍:全新算法刷新最短路径查找速度

2025-08-07
突破排序障碍:全新算法刷新最短路径查找速度

计算机科学领域一个标志性难题——寻找网络中从特定起点到所有其他点的最短路径,几十年来受限于“排序障碍”。最近,清华大学的段然及其团队突破了这一障碍,设计出一种新型算法,其速度超越所有基于排序的算法。该算法巧妙地运用集群策略和Bellman-Ford算法,避免了逐点排序,从而实现了显著的性能提升,为最短路径问题的研究开辟了新的篇章。

comptime.ts:TypeScript编译时计算利器

2025-08-07
comptime.ts:TypeScript编译时计算利器

comptime.ts是一个简洁的TypeScript编译器,它能够在编译时高效地执行标记为`comptime`的表达式。这使得开发者可以将计算从运行时转移到编译时,从而优化代码。它支持多种场景,例如计算常量、生成静态内容以及优化性能关键代码。通过Vite、Bun或命令行接口,开发者可以方便地使用comptime.ts,提升开发效率。需要注意的是,comptime表达式必须是JSON可序列化的,并且复杂的表达式可能会增加构建时间。

开发

工程心理学课堂上的ChatGPT滥用:团队合作的挑战

2025-08-07

一位工程心理学专业的学生发现,他的小组成员在课程项目中过度依赖ChatGPT,直接将AI生成的文本复制粘贴到项目提案中,导致内容与项目需求不符,质量低下。这不仅增加了这位学生的工作量,也让他对团队合作失去了动力。他认为适度使用ChatGPT获取灵感可以接受,但直接照搬AI生成的内容,而不进行评估和理解,是不可取的。

开发

Herbie:提升浮点运算精度的利器

2025-08-07

Herbie项目致力于提高浮点运算的精度。历经数年发展,Herbie已发布多个版本,不断改进算法、提升速度,并增加了浏览器界面和插件支持多种编程语言(如Rust和Haskell)。近期,Herbie在Hamming基准测试套件上取得了显著的精度提升,并新增了可插拔编译目标的平台API。Herbie团队还积极参与学术研究,发表论文并进行多次学术演讲,分享其研究成果和未来规划。

开发 Herbie项目

超越动态数组:高效稳定的Segment Array数据结构

2025-08-07
超越动态数组:高效稳定的Segment Array数据结构

本文介绍了一种名为Segment Array的高效数据结构,它结合了动态数组的灵活性、稳定指针的优势以及与arena allocator的良好兼容性。不同于动态数组在扩容时移动元素,Segment Array通过预分配多个固定大小的段来存储数据,避免了内存碎片和指针失效的问题。每个段的大小是前一个段的两倍,仅在需要时分配新的段,实现了O(1)的平均时间复杂度。作者提供了C语言实现,并详细解释了其内部机制,包括高效的索引计算方法和与泛型的结合。Segment Array特别适用于需要在arena allocator环境下进行高效动态内存管理的场景,例如构建性能分析器。

开发

深入Rust GPU驱动Tyr:VkCube案例解析

2025-08-07
深入Rust GPU驱动Tyr:VkCube案例解析

本文是深入探讨Rust编写的Linux内核GPU驱动Tyr系列文章的第二篇,Tyr支持基于Arm Mali CSF的GPU。文章以VkCube应用为例,详细解释了用户模式驱动(UMD)和内核模式驱动(KMD)的工作原理,以及如何将VkCube的工作负载描述给GPU。文章简要介绍了Tyr提供的API,并将其与Panthor(同硬件的C驱动)进行了比较。重点阐述了KMD的关键作用,包括内存分配、作业提交和硬件调度,以及Tyr提供的简洁API,包括设备信息查询、内存管理、组创建和管理、作业提交以及平铺堆管理等功能。

开发 GPU驱动

Google Gemini 2.5加持的代码助手Jules正式发布

2025-08-07
Google Gemini 2.5加持的代码助手Jules正式发布

Google的代码助手Jules正式脱离测试阶段,面向公众开放,并由Gemini 2.5提供技术支持。在测试期间,数千名开发者完成了数万个任务,贡献了超过14万个公开共享的代码改进。基于开发者反馈,Jules改进了用户界面,修复了数百个bug,并新增了复用先前设置以加快新任务运行速度、GitHub问题集成和多模态支持等功能。现在,Jules利用Gemini 2.5 Pro的先进思维能力来制定编码计划,从而生成更高质量的代码。Google还为Jules引入了新的分层定价体系,Google AI Pro和Ultra用户将获得更高的使用限额。

开发

Litestar:一个被低估的Python Web框架

2025-08-07

Litestar是一个轻量级、异步优先的Python Web框架,它在大型项目中也表现出色。与FastAPI等流行框架相比,Litestar更注重代码可扩展性,避免了循环导入等问题,并通过其独特的路由装饰器机制简化了多文件应用的开发。此外,Litestar对Pydantic、SQLAlchemy以及Advanced Alchemy库的良好集成,显著提高了开发效率,尤其在处理数据库交互时,其自动生成DTO和Repository的特性非常便捷。总而言之,Litestar是一个值得关注的Python Web框架,尤其适合那些重视代码可维护性和可扩展性的开发者。

开发 Litestar

arXivLabs:与社区协作的实验性项目

2025-08-07
arXivLabs:与社区协作的实验性项目

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

开发

Emacs 的 Claude 代码 IDE:将强大的 AI 集成到你的工作流程中

2025-08-07
Emacs 的 Claude 代码 IDE:将强大的 AI 集成到你的工作流程中

Claude Code IDE for Emacs 通过模型上下文协议 (MCP) 与 Claude Code CLI 原生集成。它不仅仅是一个简单的终端包装器,而是一个在 Claude 和 Emacs 之间建立双向桥梁的工具,使 Claude 能够理解和利用 Emacs 的强大功能,例如 LSP、项目管理和自定义 Elisp 函数。这将 Claude 转换为一个真正了解 Emacs 的 AI 助手,它可以在你的现有工作流程中工作,并与你的整个 Emacs 生态系统进行交互。该 IDE 支持项目自动检测、会话管理、终端集成、文件操作工具、诊断集成(Flycheck 和 Flymake)、高级差异视图和选项卡栏支持等功能。通过 MCP 工具集成,Claude 可以访问和利用 Emacs 的各种功能,例如 LSP 集成、Tree-sitter 语法树分析、Imenu 符号导航和项目集成。开发者还可以创建自定义 MCP 工具,扩展 Claude 的功能。

开发

Baseten 如何在 GPT-OSS-120B 上实现 SOTA 性能

2025-08-07
Baseten 如何在 GPT-OSS-120B 上实现 SOTA 性能

Baseten 作为 OpenAI 首个开源 LLM 的发布合作伙伴,在 GPT-OSS-120B 发布当天就实现了领先的性能。文章详细介绍了 Baseten 如何通过灵活的推理栈、多框架测试(TensorRT-LLM、vLLM 和 SGLang)、Hopper 和 Blackwell GPU 架构支持以及各种性能优化(例如 KV 缓存感知路由和 Eagle 预测解码)等步骤,在发布当天就达到业界领先的延迟和吞吐量。他们优先选择张量并行来优化延迟,并利用了 TensorRT-LLM 的 MoE 后端。Baseten 的工程师们不仅快速解决了兼容性问题,还在不断优化模型配置,并积极回馈开源社区。未来,他们还将探索预测解码等技术来进一步提升性能。

开发

程序员的私藏宝藏:我的点文件(dotfiles) 为什么迟迟不敢公开?

2025-08-06
程序员的私藏宝藏:我的点文件(dotfiles) 为什么迟迟不敢公开?

作者热爱点文件(dotfiles)——用于配置软件和操作系统的配置文件,并乐于分享经验和代码。然而,他却犹豫着是否公开自己的点文件仓库,里面包含了zsh、tmux、neovim、vscode配置,Homebrew包列表,Stylus CSS规则等,并使用GNU Stow进行管理。他认为这些个性化配置过于私密,虽然很酷,但分享仍然让他感到不适。这引发了一个关于程序员个性化配置与开源分享之间取舍的思考。

开发

Automerge 3.0:内存使用量降低 10 倍以上!

2025-08-06

Automerge 3.0 版本发布,其核心改进是内存使用量显著降低,最高可达 10 倍以上!这得益于运行时使用压缩表示,解决了之前版本中处理长历史文档时内存占用过大的问题。例如,处理巨著《白鲸记》时,内存占用从 700MB 降低到 1.3MB。此外,Automerge 3.0 还简化了 API,特别是文本处理方面,提升了整体性能和可靠性。现有用户可轻松升级,新用户也可尝试使用。

开发 Automerge

GitHub代码建议应用限制

2025-08-06
GitHub代码建议应用限制

GitHub代码审查中,批量应用代码建议功能存在诸多限制,例如:代码无改动、PR已关闭、查看代码片段、单行多建议、删除行、已应用或已解决的建议、待审核建议、多行注释以及PR排队合并或系统繁忙等情况均无法应用建议。

开发

Ventoy构建过程:一个跨平台启动工具的幕后

2025-08-06
Ventoy构建过程:一个跨平台启动工具的幕后

Ventoy是一个用于创建多启动USB的开源工具,其构建过程涉及大量的交叉编译工作。这段代码片段展现了Ventoy构建脚本的一部分,涵盖了x86, ARM64, MIPS64等多种架构,以及BusyBox、cryptsetup、FUSE等多种工具的构建和集成。该过程需要预先下载部分依赖库,并根据不同的目标架构和操作系统进行相应的配置和编译。最终,Ventoy将生成支持多种启动方式的镜像文件,方便用户在各种硬件平台上使用。

开发 多启动
1 2 28 29 30 32 34 35 36 213 214