分类: 开发

黑客新闻:DirectX和Flash的异常处理之争

2025-05-21

一个团队在使用`SetUnhandledExceptionFilter`处理未处理异常时遇到了难题:Direct3D和Flash也在安装自己的异常过滤器,导致团队的异常处理机制失效。为了解决这个问题,他们采取了一种大胆的策略:通过代码修改,直接禁用`SetUnhandledExceptionFilter`函数,确保自己的异常处理程序能够生效。文章详细介绍了代码修改的过程,包括获取函数地址、验证函数开头指令以及使用`VirtualProtect`和`FlushInstructionCache`等API进行代码替换。最终,他们成功解决了问题,使异常报告机制恢复正常。

开发

多项式乘法、卷积和信号处理的优雅联系

2025-05-21

这篇文章探讨了多项式乘法、卷积和它们之间的联系。文章首先用表格和图形化的方式解释了多项式乘法,指出其本质是卷积运算。随后,文章介绍了离散信号和系统,以及线性时不变系统。文中指出,任何信号都可以分解成一系列缩放和平移的单位脉冲,而线性时不变系统的响应可以通过卷积计算得到。文章最后简要介绍了卷积的性质和傅里叶变换的关系,指出卷积的傅里叶变换等于其操作数的傅里叶变换的乘积,这使得卷积运算可以高效地实现。

开发

Clojure Web 开发:框架 vs. 库的哲学思考

2025-05-21

本文深入探讨了 Clojure Web 开发中框架与库的抉择。作者认为,流行的 Web 框架如同工业自动化,固化了架构和思维模式,而 Clojure 社区更偏好灵活的库组合。文章以 Ring 和 Jetty 为例,讲解了构建 Clojure Web 应用的基本原理,包括请求处理、中间件和路由机制,并推荐了多种入门资源和成熟的 Web 栈,帮助开发者在 Clojure 生态中找到适合自己的路径。

开发

Rust中的未初始化缓冲区处理新方法:Buffer Trait

2025-05-21

Rust 社区长期以来面临着未初始化缓冲区处理的难题。John Nunley 和 Alex Saveau 提出了一种新方法,使用 Buffer trait 来解决这个问题。该 trait 允许安全地读取未初始化缓冲区,并为 `&mut [T]` 和 `&mut [MaybeUninit]` 提供了实现。此外,它还支持利用 Vec 的剩余容量,并封装了不安全的 `Vec::set_len` 调用。该方法已集成到 rustix 1.0 中,并发布为独立库 buffer-trait,未来可能成为 Rust 标准库的一部分。

开发 缓冲区

Final Cut Pro 插件 TitleBridge 系统需求及隐私政策

2025-05-21
Final Cut Pro 插件 TitleBridge 系统需求及隐私政策

TitleBridge 是一款 Final Cut Pro 插件,其主要功能是……(此处需根据原文补充功能描述)。它需要 macOS 系统(配备 Apple Silicon M1 芯片或更高版本处理器)以及 Final Cut Pro 11.1 或更高版本。Apple Silicon 芯片并非强制要求,但推荐使用,以便利用 Final Cut Pro 的音频转字幕功能。插件本身不会自动收集或发送任何用户信息。用户可以通过页面底部的评论表单寻求技术支持,但需注意评论将公开可见,避免包含任何私人信息。支持人员将通过用户的 GitHub 账号私下联系,以确定最佳的沟通方式解决问题。

开发

llm-d:Kubernetes原生分布式推理平台

2025-05-21
llm-d:Kubernetes原生分布式推理平台

llm-d是一个基于Kubernetes的原生分布式推理服务栈,旨在高效、经济地服务大型语言模型。它利用最新的分布式推理优化技术,例如KV缓存感知路由和解耦服务,并与Inference Gateway(IGW)中的Kubernetes操作工具集成。llm-d构建于vLLM、Kubernetes和Inference Gateway等开源技术之上,具有可定制的调度、解耦服务和缓存等特性,并计划实现基于硬件、工作负载和流量的自动扩展。用户可以通过Helm chart轻松安装,并可单独使用其组件进行实验。

你的代码有多值钱?一个重写实验告诉你答案

2025-05-21
你的代码有多值钱?一个重写实验告诉你答案

作者通过一个亲身经历的案例,论证了软件开发中代码的价值被高估的观点。他带领团队花了六个月时间开发了一个Web门户,后来仅用两周时间就独自重写了这个项目。这并非因为他编程技术高超,而是因为真正的价值在于团队协作、业务逻辑和设计,而非代码本身。代码可以被丢弃并重新编写,而团队经验和设计理念才是核心资产。这篇文章引发了对软件开发成本和价值的深入思考,并鼓励读者尝试类似的实验。

开发 代码价值

软件工程:发现的艺术,而非纯粹的工程

2025-05-20
软件工程:发现的艺术,而非纯粹的工程

软件工程并非简单的工程实践,它更像是一门艺术,充满了发现的乐趣。文章以早期电脑动画为例,阐述了对底层技术的深刻理解如何催生出意想不到的创意,并指出软件开发中,愿景和工程的相互作用是双向的,而非线性的。作者批判了过度依赖抽象层和黑盒思维的弊端,认为这会限制创造力和创新。同样的道理也适用于软件组织,过分强调团队自主性而忽略团队间的协作,会导致整体效率低下。作者呼吁回归对底层技术的理解,从而激发真正的创新。

开发

ZLinq:对LINQ的极致优化与扩展

2025-05-20
ZLinq:对LINQ的极致优化与扩展

ZLinq是一个针对.NET平台的LINQ库,它通过巧妙的架构设计和优化策略,大幅提升了LINQ的性能。它引入了`IValueEnumerator`接口,用`TryGetNext`替代传统的`MoveNext`和`Current`,减少了方法调用次数。此外,它还支持`Span`和SIMD操作,并为树状结构(如JSON和Unity的GameObject)提供了LINQ支持。ZLinq的优化目标是减少内存分配和方法调用,从而提高处理速度,尤其在处理大型数据集或对性能要求较高的场景下更显优势。

开发

告别Ubuntu,Kalvad选择Alpine和FreeBSD:一次操作系统迁移的深度解析

2025-05-20
告别Ubuntu,Kalvad选择Alpine和FreeBSD:一次操作系统迁移的深度解析

Kalvad公司最近完成了其服务器操作系统的重大迁移,从Ubuntu转向了Alpine Linux和FreeBSD。这篇文章详细阐述了他们做出这一选择的理由,包括对各种操作系统的性能、安全性和资源利用效率的深入评估。他们选择Alpine Linux用于无状态服务,FreeBSD用于需要高吞吐量和可靠性的服务,并重点介绍了ZFS文件系统、PF防火墙和pkg包管理器的优势。虽然迁移过程中也遇到了一些挑战,例如软件更新和工具兼容性问题,但Kalvad团队最终认为,FreeBSD和Alpine Linux带来的好处远远超过了这些不足,显著提升了系统的稳定性、效率和安全性。

深入探秘:硬盘文件究竟藏在哪里?

2025-05-20

本文作者通过巧妙的实验,揭开了硬盘文件存储的秘密。他以一个简单的文本文件为例,利用Linux系统工具,一步步追踪文件在硬盘上的物理位置,并最终成功解析了inode结构,将抽象的比特数据转化为可理解的文件信息。整个过程充满悬念,如同侦探破案般引人入胜,最终证明了硬盘和内存不过是“一堆比特”的观点。

开发 inode

基于GeoJSON的时区匹配服务器

2025-05-20
基于GeoJSON的时区匹配服务器

这个项目构建了一个简单的PHP服务器,用于根据经纬度坐标匹配时区。它利用Timezone Boundary Builder项目生成的GeoJSON数据,创建一个高效的数据库,快速定位地理位置对应的时区。服务器采用“域矩形”进行快速筛选,再使用“缠绕数”算法精确匹配。用户只需发送经纬度坐标,即可获得标准的TZ时区标识符。项目开源,采用MIT许可证。

开发 GeoJSON

LaTeX排版字体探索:七种优秀免费字体的比较

2025-05-20

本文作者Lino Ferreira分享了他最喜欢的七种LaTeX字体,并详细比较了它们的优缺点。从经典的Bembo到现代的Libertine,每种字体都配有历史背景、设计理念和LaTeX使用示例。文章还探讨了serif字体和sans-serif字体的搭配,以及OpenType和Type 1字体的区别,为LaTeX用户选择字体提供了宝贵的参考。

开发

Litestream:SQLite 的全新升级,支持快速点查恢复和轻量级只读副本

2025-05-20
Litestream:SQLite 的全新升级,支持快速点查恢复和轻量级只读副本

Litestream,一个开源工具,让全栈应用能够可靠地从对象存储中恢复数据并运行在SQLite之上。文章介绍了Litestream自发布以来的最大变化:采用LiteFS中的技术,实现了更快的点查恢复(PITR),利用对象存储的CAS(Compare-and-Swap)功能简化了复制管理,并引入了基于VFS的轻量级只读副本。这些改进提升了Litestream的可靠性和易用性,尤其是在处理大量数据库时,以及为LLM代码的编写提供更强大的回滚和分支能力。

(fly.io)
开发

Red编程语言:全栈开发的终极利器?

2025-05-20
Red编程语言:全栈开发的终极利器?

Red 是一种新一代编程语言,受 REBOL 启发,目标是成为全球首个全栈语言。它具备简洁易懂的语法、强大的宏系统和丰富的内置数据类型,支持多种编程范式(函数式、命令式、反应式和符号式),并可编译成小于 1MB 的独立可执行文件。Red 支持并发和并行编程,能够进行底层系统编程,并提供跨平台的原生 GUI 系统。它旨在成为一个“语言构建工具包”,允许开发者使用统一的语法完成从系统编程到高级脚本编写等各种任务,最终实现“一处编写,处处运行”的全栈开发梦想。

开发 Red

嵌入式音频DSP开发的效率革命

2025-05-20
嵌入式音频DSP开发的效率革命

嵌入式音频DSP开发一直以来都因其漫长的迭代周期、跨平台移植的复杂性以及缺乏实时配置和可见性而效率低下。传统的开发流程需要工程师反复编写、编译和测试代码,才能微调音频参数,这不仅耗时,而且难以进行A/B对比。此外,跨平台移植也十分困难,因为音频算法通常针对特定处理器架构进行优化,难以直接迁移到新的平台。本文介绍了一种新的开发平台,它通过提供图形化音频工具、模块化设计和实时工具来显著缩短开发周期,并实现跨平台复用,将开发时间缩短了10倍。该平台隐藏了字长、字节序和缓存等底层细节,使相同的音频图能够在ARM、Xtensa或RISC-V等不同架构上运行而无需更改代码。

Adobe Creative Cloud涨价:AI功能升级,价格也水涨船高

2025-05-20
Adobe Creative Cloud涨价:AI功能升级,价格也水涨船高

Adobe宣布北美地区Creative Cloud All Apps计划将更名为Creative Cloud Pro,并涨价。新计划增加了生成式AI功能,包括无限的图像生成信用额度和4000个用于视频和音频的AI信用额度。个人年度订阅价格将从59.99美元涨至69.99美元,月度订阅价格将从89.99美元涨至104.99美元。同时,Adobe还推出了价格更低的Creative Cloud Standard计划,但AI功能受限。此举引发部分用户不满,Adobe的策略能否成功仍有待观察。

开发

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

2025-05-20
arXivLabs:与社区协作的实验性项目

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

开发

Juvio:让Jupyter Notebook更易于复现和版本控制

2025-05-20
Juvio:让Jupyter Notebook更易于复现和版本控制

Juvio 是一款用于 Jupyter Notebook 的工具,它解决了依赖管理和版本控制的难题。通过在 Notebook 中内联声明依赖项,Juvio 自动设置临时的虚拟环境,确保 Notebook 始终使用正确的包版本运行。它将 Notebook 转换为脚本风格的格式,方便 Git 版本控制,并保证可复现性,无需额外的锁文件或需求文件。Juvio 支持使用 `%juvio install` 命令直接在 Notebook 中安装包,并遵循 PEP 723 标准。

开发

Starina:将虚拟机作为库的微内核操作系统

2025-05-20
Starina:将虚拟机作为库的微内核操作系统

本文介绍了Starina操作系统中一种创新的Linux兼容性方案:将虚拟机监控器(VMM)作为库集成到应用程序中。不同于传统的独立进程式VMM,Starina的`starina_linux::Command` API允许开发者以类似于`std::process::Command`的方式运行Linux程序,并通过虚拟文件系统(virtio_fs)与虚拟机进行交互。这种设计简化了开发流程,并有潜力实现比原生Linux环境更快的启动速度。目前,该方案已支持基本的文件I/O操作,未来将扩展网络、持久化存储等功能,并进一步提升容器化体验。

开发

Clojure中的依赖类型编程:Deputy系统

2025-05-20

Deputy是一个基于Clojure的实验性依赖类型编程语言,支持归纳数据类型。它探索了Lisp风格的REPL驱动交互式开发工作流对类型检查的影响。作为Clojure库实现,程序员可以在类型层级编程的同时仍然使用宿主语言Clojure的功能,实现依赖类型计算,其中类型计算可以依赖于值,从而实现强大的编程模式。尽管类型具有丰富的动态语义,类型检查仍然是纯编译时操作。

开发

Codex: 一个有潜力的GitHub助手,但仍需改进

2025-05-20
Codex: 一个有潜力的GitHub助手,但仍需改进

Codex是一个基于OpenAI模型的GitHub集成工具,允许用户通过自然语言提交代码修改任务。其优势在于能够并行处理多个任务,并通过熟悉的聊天界面跟踪进度。然而,目前Codex还存在一些不足,例如错误处理不完善,难以处理大型重构任务,以及无法访问网络等。作者认为,随着模型改进和功能完善,Codex有望成为高效的开发助手,但目前更适合处理小型、简单的维护任务。

开发

GPU驱动的前向渲染:27000条斯坦福龙,10000盏灯,60FPS!

2025-05-20
GPU驱动的前向渲染:27000条斯坦福龙,10000盏灯,60FPS!

这篇文章介绍了一个基于GPU驱动的集群着色前向渲染器,它能够在GTX 1070显卡上以超过60FPS的帧率渲染27000条斯坦福龙和10000盏光源。作者通过将实体数据保存在连续的GPU缓冲区中,并利用间接多绘制调用减少绘制调用次数来实现高性能。此外,文章还详细介绍了剔除、缓冲区管理以及集群着色等技术细节,并展示了相应的优化策略,例如使用原子计数器和选票进行高效的缓冲区压缩。最终,作者实现了极高的渲染性能,并在文中提供了具体的性能数据和代码示例,为读者提供了宝贵的经验和参考。

开发 集群着色

生产环境测试:及早发现问题,快速修复故障

2025-05-20

本文介绍了一种名为“生产环境测试”(或“生产测试”)的策略,它通过在生产环境中运行自动化测试来及早发现问题。这些测试通常每分钟运行一次,能够迅速检测到回归问题,从而在客户发现问题之前进行修复。文章详细阐述了生产测试的优势、设计考量以及实施细节,包括如何选择合适的测试案例、处理假数据以及避免误报等。作者强调生产测试并非健康检查的替代,两者应结合使用,以提高系统的可靠性和可观察性。

开发 生产测试

AI代理:API开发的全新DX标准

2025-05-20
AI代理:API开发的全新DX标准

大型语言模型驱动的AI代理正逐渐成为不知疲倦的初级开发人员。它们可以解读API文档、发出请求、解析错误并反复尝试,直到成功。然而,API的开发者体验(DX)至关重要。如果AI代理因文档不完善或错误信息模糊而停滞,那么人类开发者也会遇到同样的问题。通过改进API文档、提供清晰详细的错误信息以及保持一致性,可以显著提升开发者体验,并使AI代理更高效地工作。这不仅能改善人类开发者的使用体验,还能通过AI代理作为自动化测试工具,提前发现问题。

开发

Jwno:一款基于Janet的Windows窗口管理器

2025-05-20

Jwno是一款高度可定制的Windows 10/11窗口管理器,使用Janet语言开发。它引入了“魔法括号”功能,可以精细控制窗口布局。该项目目前仍在开发中,文档尚未完善,但已提供安装指南、交互式教程和参考索引等资源,并附带示例图片展示其在管理Emacs、Sonic Pi等程序时的效果。

开发

RepoRoulette:GitHub 仓库随机采样工具

2025-05-20
RepoRoulette:GitHub 仓库随机采样工具

RepoRoulette是一个强大的GitHub仓库随机采样工具,提供三种不同的采样方法:基于ID采样、基于时间采样和基于BigQuery采样。基于ID采样直接从GitHub的ID空间随机抽取,速度快但命中率低;基于时间采样选择特定时间段内更新的仓库,允许根据star数和编程语言等属性过滤;基于BigQuery采样利用Google BigQuery的公共GitHub数据集,功能强大但需要GCP账号和付费。RepoRoulette适用于学术研究、学习资源获取、数据科学、趋势分析和安全研究等多种场景。

开发 数据采样

Astra:一款快速可靠的JS转EXE编译器

2025-05-20
Astra:一款快速可靠的JS转EXE编译器

Astra是一款基于npm的快速、可靠且易于使用的JavaScript到可执行文件(.exe)编译器。它拥有美观的命令行界面,由esbuild驱动,编译速度极快,支持ESM应用(对Node.js SEA的限制有变通方案),并能生成包含所有依赖项的单个可执行文件。此外,它还支持自定义元数据(图标、名称、版本等)和内置压缩功能,从而减小最终可执行文件的大小。Astra可以通过npm、yarn或pnpm全局安装,也可以仅安装在单个项目中。

开发 exe

llm-d:Kubernetes原生高性能分布式LLM推理框架

2025-05-20

llm-d是一个Kubernetes原生高性能分布式大型语言模型(LLM)推理框架,它为大规模服务LLM提供了一条清晰的路径,在大多数硬件加速器上,针对大多数模型,它具有最快的时间价值和具有竞争力的性价比。llm-d利用最新的分布式推理优化(例如,缓存感知路由和解耦服务),并与推理网关(IGW)中的Kubernetes操作工具共同设计和集成,使用户能够通过模块化、高性能的端到端服务解决方案来运行生成式AI部署。与传统的扩展方式不同,llm-d针对LLM推理的独特特性,例如高成本、非均匀请求,进行了优化,实现了更优的性能。通过缓存感知路由、任务分解和自适应扩展等技术,llm-d显著提升了吞吐量和效率,降低了延迟,并支持多种服务质量要求。

开发

在TI-84+ CE计算器上运行OCaml程序

2025-05-20

本文讲述了作者如何将OCaml程序编译到TI-84+ CE计算器上运行的历程。作者利用Js_of_ocaml,一个原本用于将OCaml编译成JavaScript的工具,巧妙地将其改造成一个生成C代码的后端。由于TI-84+ CE的资源限制,作者自行编写了一个简单的垃圾回收器,并通过编写必要的C函数来实现与计算器硬件的交互。最终,作者成功运行了一个简单的OCaml程序,展现了其方法的可行性。

开发
1 2 81 82 83 85 87 88 89 213 214