分类: 开发

深度学习框架中高效索引:Torch、TensorFlow与Einops的比较

2025-09-24

本文比较了PyTorch、TensorFlow和Einops在实现高效数组索引方面的不同方法。通过对比`torch.gather`、`torch.take_along_dim`、`torch.index_select`、`torch.take`,`tf.gather`、`tf.gather_nd`以及Einops的`einx.get_at`,展示了它们在处理不同维度和批量索引时的灵活性和效率差异,为开发者选择最优方案提供了参考。

开发 数组索引

Fortran胜过Python?教工程系学生科学计算的意外发现

2025-09-24
Fortran胜过Python?教工程系学生科学计算的意外发现

一位教授十年来一直用Python教授工程系学生科学计算入门课程,但最近他开始质疑Python是否适合入门。他发现,强类型语言Fortran可能提供更好的学习体验,尤其是在数值线性代数方面。Python的灵活性虽然带来便利,但也导致学生在语法和索引等方面犯错,例如困惑于numpy库的使用、缩进错误以及0-based索引带来的“off-by-one”错误。相比之下,Fortran的强类型特性和显式的循环结构能帮助学生更清晰地理解算法,减少错误。文章以Jacobi迭代法和QR分解法为例,比较了Python和Fortran的代码实现,论证了Fortran在教学方面的潜在优势,尽管Python的生态系统更为庞大,应用范围更广。

开发

KAIST编程语言入门教材更新

2025-09-24

韩国科学技术院(KAIST)的洪在民和柳淑英教授编写了一本名为《编程语言导论》的教材,现已更新至最新版本。该书涵盖编程语言的基础概念,包括语法、语义、类型系统和解释器/类型检查器的实现。作者鼓励任何想学习或教授编程语言基础知识的人使用此书,并感谢所有为本书做出贡献的师生和助教。最新版本修复了排版错误,并减少了页边距。

开发 KAIST

Podman Desktop下载量突破300万!

2025-09-24
Podman Desktop下载量突破300万!

Podman Desktop,一款用于管理容器和Kubernetes的桌面应用,下载量突破了300万!这得益于庞大的社区支持和持续的改进,包括更流畅的Kubernetes工作流程、更好的Docker兼容性以及日常易用性改进。Podman Desktop还加入了CNCF Sandbox项目,并受到越来越多的企业采用。团队感谢用户反馈并承诺持续改进,为开发者提供更便捷的容器和Kubernetes管理体验。

Vterm 项目更新日志:持续的性能和功能改进

2025-09-24

Vterm 项目的开发者 Tom Szilagyi 近期进行了多次提交,涵盖了性能优化、错误修复和新功能添加等方面。这些更新包括 GPU 性能优化、修复 signedness bug,添加新的命令行选项,以及改进字符渲染和下划线显示等。 持续的代码改进提升了 Vterm 的稳定性和效率。

Rust的原子操作fetch_max:一次编译器优化的深度探索

2025-09-24
Rust的原子操作fetch_max:一次编译器优化的深度探索

一次工程师面试中,候选人使用Rust一行代码解决了经典的并发编程问题——跨多个生产者线程跟踪最大值。这引发了作者的好奇:Rust的`fetch_max`是如何工作的?文章深入探讨了从Rust代码到汇编代码的编译过程,揭示了宏、LLVM中间表示、编译器内建函数以及目标架构的层层优化。在x86-64架构下,`fetch_max`最终被编译成一个compare-and-swap (CAS)循环;而在ARM架构下,则直接使用硬件的原子max指令。这篇文章展示了现代编译器的强大功能,以及其在实现高抽象度编程时的底层细节。

开发

Val Town 重写 TypeScript 集成:告别卡顿,拥抱流畅

2025-09-24
Val Town 重写 TypeScript 集成:告别卡顿,拥抱流畅

Val Town 彻底重写了其在线编辑器的 TypeScript 集成,将之前的基于 Web Worker 的客户端实现替换为基于云端容器的 Deno 语言服务器。此举解决了旧系统中 NPM 包导入缓慢、TypeScript 与 Deno 不兼容等问题,实现了 100ms 的保存即部署速度。新系统利用 Cloudflare Containers 保证了用户工作负载的隔离和资源限制,并开源了所有代码,为开发者提供了更流畅、高效的 TypeScript 开发体验。

开发

突破性进展:亚线性空间零知识证明

2025-09-24
突破性进展:亚线性空间零知识证明

研究人员开发了一种名为SSZKP的亚线性空间零知识证明系统,其Rust实现利用KZG/BN254,仅需O(√T)内存即可处理长度为T的轨迹。该系统通过分块IFFT和流式累加器实现亚线性空间,并使用标准KZG承诺,无需缓冲整个多项式。这为构建可扩展的零知识系统提供了一种高效的方案,并包含了完整的证明者和验证者CLI工具以及端到端测试脚本。

开发

AI时代编程语言的未来:流行度终结?

2025-09-24
AI时代编程语言的未来:流行度终结?

2023年编程语言排行榜出炉,Python继续领跑,但AI的崛起正在颠覆编程语言的格局。AI辅助编程工具如ChatGPT和Cursor的出现,降低了程序员对特定语言的依赖,甚至使语言本身的流行度变得模糊。程序员不再纠结于语法细节,而是更关注程序架构和算法设计。这将导致新语言的诞生变得更加困难,编程语言的流行度可能如同铁路轨距一样变得不再重要。未来的程序员更需要的是扎实的计算机科学基础,而非熟练掌握某一门语言。

开发

隐藏的webshell:相同MD5哈希的PHP文件

2025-09-24
隐藏的webshell:相同MD5哈希的PHP文件

两个PHP文件拥有相同的MD5哈希值,但其中一个文件是webshell(网络后门)。攻击者利用这种方法绕过缓存的webshell检测机制。hexdump显示两个文件存在细微差异,这使得它们具有相同的MD5哈希值,但功能却截然不同。这提醒我们,仅依赖MD5哈希值进行安全检测是不够的,需要更全面的安全策略。

Ghostty 的嵌入式终端模拟器库 libghostty 正式启动

2025-09-24

Ghostty 项目发布了 libghostty,一个可嵌入任何应用的现代化、高速终端模拟器库。首个发布的 libghostty-vt 库是一个零依赖库,提供解析终端序列和维护终端状态的 API,直接提取自 Ghostty 的核心代码,无需 libc!目前 Zig API 可供测试,C API 即将推出。libghostty 的目标是解决现有终端模拟器实现普遍存在的缺陷,例如不完整、有 bug 和速度慢等问题,为开发者提供一个稳定、可复用的解决方案。未来,libghostty 将扩展更多功能,例如输入处理、GPU 渲染等。

开发 嵌入式库

三个C++编译器漏洞引发的血案:深藏不露的模板元编程陷阱

2025-09-23
三个C++编译器漏洞引发的血案:深藏不露的模板元编程陷阱

资深工程师Michael Gibson在使用C++ SDK时,发现一个由三个鲜为人知的特性组合而成的clang++编译器漏洞。为了在C++ SDK中实现REACHABLE断言,他们巧妙地利用了静态初始化、非类型模板参数和匿名命名空间。然而,clang++ 17及以上版本的新优化流程对这种组合产生了冲突,导致符号重复数据删除错误。这个案例揭示了在复杂软件系统中,由多个罕见特性组合而成的隐蔽漏洞的风险,也突出了自动化测试在发现此类问题的巨大价值。

Zig胜过Rust:构建命令行工具的实用选择

2025-09-23
Zig胜过Rust:构建命令行工具的实用选择

本文深入探讨了在构建命令行界面时,Zig相较于Rust的实际优势。作者通过一个简单的笔记管理CLI工具的例子,比较了两种语言在内存管理上的差异。Rust的借用检查器虽然保证了内存安全,但在处理简单的CLI工具时,其复杂性和仪式感却显得过于繁琐。而Zig则提供了更直接的内存管理方式,结合其`defer`语句和`allocator`,开发者可以更容易地编写高效且安全的代码,同时减少了编译器带来的额外负担。作者认为,对于小型CLI工具而言,Zig的轻量级、快速和直接的特性使其更具实用性,虽然内存安全重要,但代码可维护性和开发效率同样关键。

开发

告别JavaScript疲劳:基于HTMX的模块化SSR框架MESH

2025-09-23

在Web开发领域,'JavaScript疲劳'和'框架疲劳'成为热门话题。作者尝试使用HTMX,一种以HTML属性声明式地构建网页的技术,来解决这个问题。然而,HTMX缺乏结构,因此作者创建了MESH框架,它采用'一个组件一个端点'的模型,结合Go和Web Components,实现了模块化服务器端渲染和客户端水化。虽然过程中遇到HTMX无法跨越Shadow DOM边界的问题,作者通过一些技巧解决了这个问题,并最终实现了基于SSE的实时协作功能。最终,作者甚至去除了HTMX,用更简洁的JS代码实现了相同的功能,并反思了HTMX的默认行为和未来发展方向。

开发

苹果WebKit引擎的Web标准参与度深度分析

2025-09-23
苹果WebKit引擎的Web标准参与度深度分析

本文深入分析了苹果WebKit引擎在Web标准制定中的参与度,通过数据图表揭示了苹果在关键Web API(如Web MIDI、Web USB、Web Bluetooth)上的滞后和缺乏合作的态度。作者指出,苹果经常以“隐私和安全”为由拒绝或延迟这些功能的实现,但并未提供充分的证据支持其说法,反而数据显示苹果更多的是在追赶其他浏览器,而非积极参与协同设计。这篇文章质疑了苹果在Web标准领域的参与度,并暗示其行为可能与保护其App Store的商业利益有关。

开发

oLLM:在消费级显卡上运行超大上下文LLM

2025-09-23
oLLM:在消费级显卡上运行超大上下文LLM

oLLM是一个轻量级的Python库,允许在配备8GB VRAM的消费级GPU(例如200美元的Nvidia 3060 Ti)上运行具有10万上下文的大型语言模型(LLM),例如gpt-oss-20B和qwen3-next-80B。它通过将层权重和KV缓存卸载到SSD,并使用FlashAttention-2和分块MLP等技术来实现这一目标,无需量化。oLLM支持多种LLM模型,并提供了易于使用的API,方便用户进行大规模文本处理任务,例如分析合同、总结医疗文献和处理大型日志文件。

开发 低资源

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

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

arXivLabs是一个实验性项目,允许开发者直接在arXiv网站上开发和分享新的功能。参与其中的个人和组织都认同arXiv的开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,只与遵守这些价值观的合作伙伴合作。如果你有想法能为arXiv社区增值,那就来了解一下arXivLabs吧!

开发

警惕!受感染的qBittorrent Docker镜像暗藏挖矿程序

2025-09-23

作者在迁移服务器时发现一个hotio/qbittorrent Docker容器内运行着可疑进程netservlet,该进程消耗大量CPU资源。调查发现,netservlet是一个隐蔽的加密货币矿工,可能为XMRig或其变种,通过分析核心转储文件,发现了与加密货币挖矿相关的字符串,例如cryptonight、ethash_calculate_dag_item等,以及矿池地址auto.c3pool.org:19999。这提醒我们,不要轻信随机的Docker镜像,要经常监控系统资源并审核主机和容器,以防范安全风险。

开发

StringZilla v4:CUDA 加速的 SIMD 字符串处理库

2025-09-23
StringZilla v4:CUDA 加速的 SIMD 字符串处理库

StringZilla v4 发布了!这个 SIMD-first 字符串处理库现在支持 CUDA,这意味着它不仅在 CPU 上速度飞快,在 GPU 上也一样!v4 版本新增了多种功能,包括 GPU 加速的动态规划算法、多种哈希函数(包括一个基于 AES 的新函数)、以及使用 52 位整数进行生物序列指纹识别。基准测试显示,StringZilla v4 在 Levenshtein 距离计算上达到了 500 多 GCUPS 的惊人速度,比其他一些库快了数十倍甚至上百倍。该库采用 Apache 2.0 开源许可证,可免费用于商业用途。

开发 GPU 加速

YAML:来自地狱的配置文件?

2025-09-23

本文作者痛斥YAML配置文件的复杂性,认为其所谓的“人友好”实则隐藏着诸多陷阱。文章以多个示例详细解释了YAML不同版本间的差异、难以预测的解析结果以及潜在的安全风险,例如sexagesimal数字、标签、布尔值解析等问题。作者建议使用更简单易用的 TOML 或通过生成 JSON 来规避 YAML 的风险,并推荐了 Nix 和 Python 等更强大的替代方案。

开发

将小型函数式语言编译到LLVM:一个简单的计算器示例

2025-09-23

本文介绍了将一个小型函数式语言编译到LLVM的过程。作者从一个简单的计算器语言入手,逐步构建了词法分析器、语法分析器和LLVM代码生成器。文章详细解释了每个步骤,包括使用megaparsec库进行解析、使用llvm-hs-pure和llvm-hs-pretty库生成LLVM IR代码,以及最终编译运行的过程。通过这个例子,读者可以学习到如何将函数式语言特性(例如模式匹配)转换为LLVM IR,以及如何使用LLVM进行代码生成和编译。

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

2025-09-23
arXivLabs:社区协作的实验性项目

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

开发

程序员的猫屎与自我救赎

2025-09-23
程序员的猫屎与自我救赎

一位程序员在酒吧目睹同事吃下裹着薄荷糖的猫屎后陷入沉思。他开始反思自己多年来在编程工作中遇到的各种“猫屎”问题:无意义的代码修改、繁琐的流程、以及自己过去对他人缺乏耐心和理解。他意识到自己曾以掌握的专业知识为傲,甚至以此评判他人,而如今却感到疲惫和迷茫。文章探讨了程序员在职业生涯中面临的困境以及如何保持热情和创造力,最终以他寻求AI辅助解决问题并反思自身态度结尾,展现出一种自我救赎的历程。

开发

无需云服务!用Python和Whisper模型构建本地语音转录系统

2025-09-23
无需云服务!用Python和Whisper模型构建本地语音转录系统

厌倦了将敏感音频上传到云端转录服务的风险?本文介绍如何使用Python和OpenAI的Whisper模型构建一个本地语音转录系统。只需10分钟,即可在本地电脑上以96%的准确率完成转录,无需支付任何费用,并且完全保护隐私。文章详细介绍了安装FFmpeg、设置Python环境以及使用Whisper模型进行转录的步骤,并提供了批量处理音频文件和生成字幕文件的方法。此外,还介绍了使用speech_recognition库的替代方案以及常见问题的解决方法。

开发

RubyGems与Bundler安全事件:一位财务主管的解释

2025-09-23
RubyGems与Bundler安全事件:一位财务主管的解释

Ruby Central 董事会成员兼财务主管 MINASWAN 就最近围绕 RubyGems 和 Bundler 安全性的争议发表声明。他解释了由于缺乏沟通和时间压力,董事会采取了暂时撤销部分维护者权限的决定,以确保系统安全并避免资金中断。他承认沟通不畅,并对由此造成的恐慌和混乱表示歉意,同时强调此举是为了保障 Ruby 生态系统的稳定和安全。

开发 Bundler

重新思考软件开发的最小工作单元

2025-09-23

本文探讨了软件开发中“工作单元”的最佳实践。作者认为,一个好的工作单元应该具备可分解性、可验证性、独立性和可优先级排序等特性,类似于用户故事,但更强调其在整个软件生命周期中的作用。作者指出,清晰定义工作单元能够提高团队效率,减少不必要的复杂性,并最终提升客户价值。文章还批判了单纯依靠代码生成量来衡量AI辅助开发效率的做法,主张以客户价值为导向,评估工作单元的实际效益。

开发 工作单元

httpjail:为Claude Code等AI代理构建精细化HTTP过滤工具

2025-09-23

随着AI代理功能越来越强大,其安全风险也日益突出。httpjail应运而生,它是一个精细化的HTTP(S)过滤工具,通过JavaScript表达式或自定义脚本规则,对AI代理的网络请求进行严格控制,有效防止数据泄露、恶意操作等风险。httpjail支持两种模式:强模式(基于Linux命名空间和nftables)和弱模式(基于环境变量),并提供TLS拦截功能,保障HTTPS流量的安全。即使在强模式下,也存在潜在的逃逸风险,但httpjail仍然为AI代理的安全使用提供了重要的保障。

开发 HTTP过滤

测试胜过算法:软件工程师的求职宝典

2025-09-23

一位资深工程师指出,求职者过度关注数据结构与算法(DSA)而忽略了测试的重要性。虽然DSA是编程基础,但实际工作中很少需要从头实现复杂的算法。作者建议学习基础数据结构和算法,理解时间复杂度,并熟练运用Python内置数据结构。更重要的是,掌握测试技能,这在实际工作中至关重要,且能让你在面试中脱颖而出。与其死磕LeetCode,不如提升测试能力,编写高质量代码。

开发

Notion 3.0:AI 智能体赋能,告别繁琐工作

2025-09-23
Notion 3.0:AI 智能体赋能,告别繁琐工作

Notion 3.0 重磅发布,核心功能是Notion AI智能体。它能像人类一样在Notion中创建文档、构建数据库、跨工具搜索信息以及执行多步骤工作流。你可以自定义你的AI智能体,赋予其个性化指令和工作上下文。未来还将推出自定义智能体功能,让你拥有一个自动化不同工作流程的AI团队。此外,Notion 3.0还增加了数据库行权限、新的AI连接器以及更多MCP集成等功能。

开发

基于g++的GNU接口层(GIL)实现

2025-09-23
基于g++的GNU接口层(GIL)实现

这个仓库提供了一个基于g++的GNU接口层(GIL)和标准库的实现。它包含一个简单的“Hello, world!” C++程序示例,以及一些其他的例子,例如计算器和归并排序。运行程序需要使用g++编译器,并且需要注意路径设置。该项目展示了一种非传统的C++编程方式,利用自定义的标准库实现。

开发 g++
2 4 5 6 7 8 9 213 214