分类: 开发

arXivLabs:社区协作实验项目

2025-06-15
arXivLabs:社区协作实验项目

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

开发

Python核心开发者峰会:JIT、虚拟线程与未来展望

2025-06-15
Python核心开发者峰会:JIT、虚拟线程与未来展望

一年一度的Python核心开发者峰会带来了诸多令人兴奋的议题。Meta工程师探讨了可插拔JIT编译器的可能性,希望通过提供新的API接口,简化JIT的开发流程。来自Java的经验启发了对Python虚拟线程的讨论,旨在提升并发性能。此外,关于空值合并运算符、AI辅助编程工具以及“worse is better”开发理念的讨论,也引发了开发者们的热烈探讨。最后,开发者们呼吁关注内存性能的基准测试,并对T-strings的类型系统未来发展方向进行了深入思考。

开发

macOS Tahoe取消个性化App图标?教你恢复!

2025-06-15
macOS Tahoe取消个性化App图标?教你恢复!

macOS 26 Tahoe系统将Dock中的个性化App图标替换成了iOS风格的圆角矩形图标,让许多用户感到失望。本文提供了一种方法,无论是普通用户还是开发者,都能恢复App图标的个性化形状。对于用户来说,只需替换应用程序包内的.icns文件即可;对于开发者,则可以通过设置NSApplication.shared.dockTile.contentView来在运行时更改图标。赶快动手,让你的Dock重回往日精彩吧!

开发 App图标

从SQL Server到Key-Value存储:一次数据库重构的惨痛教训

2025-06-15

一个资深开发者讲述了其在一家公司参与数据库重构的经历。原系统使用SQL Server,业务逻辑嵌在复杂的存储过程中,导致性能瓶颈和宕机频发。重构后,团队选择使用简单的Key-Value存储,但由于数据模型不匹配和缺乏事务支持,反而导致I/O操作激增,性能下降,并额外引入了复杂的检查点机制。最终,这次重构并没有解决原有的问题,反而带来了新的挑战。这篇文章以幽默的笔触,反思了技术选型和架构设计的重要性,以及过度简化带来的负面影响。

从零开始编译C程序:一个老司机的血泪史

2025-06-14

作者讲述了其在Mac系统上编译C/C++程序的经验,从安装编译器到处理依赖项,再到解决链接错误,一步步展现了编译过程的挑战与技巧。文中涵盖了使用`apt-get`、`brew`安装依赖,利用`Makefile`、`./configure`脚本构建程序,以及处理编译警告和链接错误等方面的内容。作者还分享了使用环境变量`CPPFLAGS`和`LDLIBS`传递编译器和链接器参数的方法,以及利用`make`命令单独编译目标文件等技巧。最后,作者总结道,即使不写C程序,理解C程序的构建过程对于解决实际问题也大有裨益。

开发

系统编程的本质:低级编程与系统设计的解耦

2025-06-14

本文探讨了“系统编程”这一术语的演变。作者认为,“系统编程”混淆了低级编程(处理机器的实现细节)和系统设计(创建和管理复杂的相互操作组件)这两个概念。从70年代对汇编语言的改进到90年代脚本语言的兴起,再到如今各种语言的性能提升,系统编程的边界日益模糊。作者主张将“系统编程”重新定义为“低级编程”,而将系统设计作为独立的领域。他认为,函数式编程原则在系统设计中具有重要价值,并建议在计算机教育中将低级编程和系统设计分开教学,以促进两者之间的互相借鉴。

开发

Rocky Linux 10发布:RHEL替代品间的分化日益加剧

2025-06-14
Rocky Linux 10发布:RHEL替代品间的分化日益加剧

Rocky Linux 10正式发布,支持RISC-V架构,但放弃了对旧款Raspberry Pi的支持。与5月发布的AlmaLinux 10和RHEL 10相比,Rocky Linux 10在硬件和软件方面都存在细微差异。最显著的区别在于对CPU的支持:RHEL 10和Rocky Linux 10要求x86-64-v3架构,而AlmaLinux 10还支持x86-64-v2。此外,RHEL 10独有的AI助手“Lightspeed”并未集成到Rocky Linux 10中。虽然在外观和功能上,三者几乎相同,但Rocky Linux 10在硬件兼容性、AI功能以及商业支持方面正逐渐与其他RHEL替代品拉开差距,凸显出各自独特的市场定位。

开发

无libc编程:用strace调试Linux系统调用

2025-06-14

作者最近尝试在没有libc的情况下编写软件,以深入理解Linux系统调用和内部机制。他构建了一个极简shell、贪吃蛇游戏、纯ARM64汇编HTTP服务器和线程实现,并大量使用strace进行调试。文章详细介绍了strace的各种选项和标志,例如追踪子进程、打印详细结构信息、保存日志、选择性追踪系统调用以及模拟系统调用错误等高级用法,对于学习Linux系统编程和调试技巧非常有帮助。

开发

Argparse 的互斥组嵌套限制:一个令人沮丧的难题

2025-06-14

Python 的 argparse 模块用于处理命令行参数,其互斥组功能允许用户仅选择一组选项中的一个。然而,当涉及到多个互斥选项组的嵌套时,argparse 存在限制。例如,一个程序有多个超时设置,用户既可以调整超时值,也可以完全禁用超时。argparse 不支持将一个'禁用超时'选项与多个超时设置选项组合成互斥组,这使得配置变得复杂且不直观。虽然可以在常规组内嵌套互斥组,但反之则不行,并且官方文档也明确指出不支持此功能。这给开发者带来了不便,需要手动检查用户是否使用了特定的开关,增加了代码复杂性。

Lisp中的真相预言机:一个关于类型理论、Curry-Howard同构和call/cc的奇特故事

2025-06-14

本文尝试在Lisp中编写一个“真相预言机”,一个能够判断任意数学命题真假的程序。作者介绍了Curry-Howard同构,解释了逻辑证明如何对应于类型化函数式编程中的表达式。通过巧妙运用Racket的call/cc函数(与皮尔士定律同构),作者试图实现一个与排中律同构的程序。然而,实验结果出乎意料:预言机总是返回假,直到尝试访问一个不可能存在的类型值时才返回真。这揭示了经典逻辑与构造性逻辑的差异,以及call/cc函数非正常的控制流机制。最终,作者用一个“恶魔的交易”比喻解释了这种奇特的现象,展现了call/cc函数背后的时间旅行般的机制。

开发

每天用短信给自己发送天气预报

2025-06-14

厌倦了每天早上打开天气应用?作者尝试了两种方法:首先,他使用Zapier创建了一个自动化流程,每天早上7点左右收到天气短信。但由于无法自定义发送时间且依赖第三方服务,他决定自己动手。于是,他使用TypeScript、Twilio和GitHub Actions创建了一个更灵活的系统。他使用Open-Meteo API获取天气数据,Twilio发送短信,GitHub Actions每天早上6:45(考虑时区差异)触发任务。虽然自定义短信总结不如Zapier详细,但他实现了可控性和成本效益,并计划改进短信总结的细节。

开发

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

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

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

开发

Netflix的统一数据架构:一次建模,到处复用

2025-06-14
Netflix的统一数据架构:一次建模,到处复用

Netflix内容激增,导致支撑系统的复杂性急剧上升。为了解决数据模型重复、术语不一致和数据质量问题,Netflix构建了统一数据架构UDA。UDA是一个知识图谱,它允许团队一次性定义模型,并在所有系统中一致地复用这些定义。UDA使用内部元模型Upper,将领域模型转换为各种技术数据结构(如GraphQL、Avro、SQL),并实现数据在不同容器之间自动移动和转换,极大地提高了效率和数据一致性。PDM和Sphere是两个利用UDA的生产系统,它们分别管理权威参考数据和提供自助式运营报告。

开发 数据架构

从量化交易到脑机接口:一位工程师的2025年学习计划

2025-06-14

一位拥有多年量化交易和软件开发经验的工程师,决定转型进入脑机接口(BCI)领域。他制定了一个为期12-24个月的学习计划,涵盖硬件基础、系统应用和高级主题,包括自学、实践项目和社区学习。计划分为三个阶段:第一阶段学习核心硬件基础,例如搭建数字时钟和放大生物电信号;第二阶段构建模拟/数字收音机和基于FPGA的信号处理原型;第三阶段探索闭环神经刺激或植入物无线数据传输等高级课题。他希望通过这个计划,最终在学术界、创业公司或行业内找到BCI相关的工作。

开发 学习计划

混合整数线性规划 (MILP) 的最新进展

2025-06-14

混合整数线性规划 (MILP) 凭借现代求解器的效率提升,已成为运筹学的重要基石。如今,求解器可在几秒钟内找到十年前无法解决的问题的全局最优解。其多功能性使其在交通运输、物流、供应链管理、收益管理、金融、电信和制造业等众多领域取得成功。尽管MILP已取得令人瞩目的成就,但仍面临许多挑战,并且该领域仍然非常活跃。本文概述了MILP求解方法取得的最重要成果,重点关注计算方面和最新的实际性能改进,并强调了报告计算实验的研究。文章将综述分为三个主要部分,分别介绍分支切割法、Dantzig-Wolfe分解和Benders分解。最后,文章重点介绍了MILP研究中持续存在的挑战和未来的机遇。

开发 MILP

如何写出最糟糕的Python代码

2025-06-14
如何写出最糟糕的Python代码

本文是一篇幽默的教程,教你如何写出难以理解、令人抓狂的Python代码。文章通过一系列反面例子,例如使用神秘的变量名(如`data1`、`temp`),以及复杂的嵌套循环等,展示了如何编写让人崩溃的代码。作者旨在以此警示读者,编写清晰易懂的代码的重要性,避免留下难以维护的技术债务。

开发

Linux内核6.16修复核心转储漏洞:告别“愚蠢”的API

2025-06-14

Linux内核6.16版本对核心转储处理机制进行了重大改进,修复了长期存在的安全漏洞。以往的API设计存在诸多缺陷,例如核心转储处理程序以root权限运行,容易成为攻击目标,且存在竞争条件导致漏洞。新的改进方案引入了pidfd机制,确保处理程序操作的是正确的崩溃进程,并允许处理程序绑定到socket接收核心转储,降低权限提升风险,从而有效防范攻击。

开发 核心转储

后处理与体积光照:用光线步进法在React Three Fiber中绘制逼真的光束

2025-06-14
后处理与体积光照:用光线步进法在React Three Fiber中绘制逼真的光束

本文深入探讨了如何在React Three Fiber中结合后处理和体积光线步进法实现逼真的体积光照效果。作者首先介绍了不同坐标系之间的转换,然后详细讲解了如何从屏幕空间重建三维光线,并利用深度缓冲区优化性能。文章还涵盖了光线形状设计、阴影映射以及光散射等高级技巧,最终实现具有阴影和雾效的动态体积光照效果。多个演示场景展示了该技术的应用,例如拱门和太空场景,并讨论了多光源和全方向阴影的实现方法。

Go 语言的绿茶垃圾回收器:提升性能的内存感知算法

2025-06-14
Go 语言的绿茶垃圾回收器:提升性能的内存感知算法

Go 团队正在开发一个名为“绿茶”的实验性垃圾回收器,旨在解决传统垃圾回收算法在多核系统和非一致性内存架构下的性能瓶颈。绿茶通过扫描连续的内存块而不是单个对象来改进空间局部性和时间局部性,显著降低了垃圾回收的 CPU 开销。初步评估显示,在某些 GC 密集型工作负载下,绿茶可将 GC CPU 成本降低 10-50%。未来,绿茶还将探索 SIMD 加速和集中器网络等优化方向,进一步提升性能。

开发

用Claude直接写博客:自定义MCP服务器

2025-06-14
用Claude直接写博客:自定义MCP服务器

作者用三天时间构建了一个自定义的模型上下文协议(MCP)服务器,将Claude直接连接到WordPress博客。该服务器能够处理WordPress REST API的复杂性,让Claude可以创建格式正确的HTML博客文章、自动管理类别和标签,甚至检索博客信息。作者认为,这实现了AI辅助内容创作的巨大飞跃,并保持了编辑控制。

开发

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

2025-06-14
arXivLabs:与社区协作者合作的实验项目

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

开发

Zig实现的Bitcask风格键值存储:FileDB

2025-06-14
Zig实现的Bitcask风格键值存储:FileDB

FileDB是一个用Zig语言编写的,受Bitcask启发的键值存储数据库。它采用日志结构的哈希表存储元数据,并以追加模式打开磁盘文件写入数据,实现高吞吐量。通过定期合并文件和同步数据,保证数据持久性。其Redis兼容客户端的基准测试显示,读取速度高达每秒10万次请求以上,写入速度也十分出色。

sandboxfs:一个夭折的Bazel macOS沙盒加速方案

2025-06-13
sandboxfs:一个夭折的Bazel macOS沙盒加速方案

谷歌工程师曾尝试通过sandboxfs项目提升Bazel在macOS上的沙盒性能。sandboxfs利用用户态文件系统,以更快的速度创建虚拟文件层次结构,替代Bazel原有的符号链接方式。然而,由于macOS的符号链接性能并非主要瓶颈,以及项目本身的实现问题和macOS生态变化等原因,sandboxfs最终被放弃。尽管如此,作者仍然认为其核心思想——高效创建沙盒——对解决Bazel在macOS上的沙盒性能问题依然具有价值。

开发

用Python实现Datalog:一种比SQL更强大的关系数据库语言

2025-06-13
用Python实现Datalog:一种比SQL更强大的关系数据库语言

本文介绍了如何使用Python实现Datalog,一种比SQL更强大的关系数据库语言。Datalog是Prolog的一个子集,它不是图灵完备的,但非常擅长建模关系。文章详细解释了Datalog的基本概念,包括谓词、事实、规则和变量,并提供了一个简单的Python实现,包括Naïve Evaluation算法。通过这个实现,你可以创建和查询Datalog程序,并体验到这种简洁而强大的关系建模方式。

开发

MUMPS编程语言:医疗数据库的幕后英雄

2025-06-13

MUMPS,一种诞生于上世纪60年代的编程语言,最初用于管理麻省总医院的病历。其独特的集成式数据库特性使其成为美国医疗信息系统和电子病历的主导数据库,为超过78%的美国患者提供服务。MUMPS 的发展历程充满了创新和挑战,从PDP-7上的早期版本到如今的开源实现和商业产品,它见证了计算机技术的飞速发展,并持续为医疗行业提供着关键支持。

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

2025-06-13
arXivLabs:与社区合作的实验性项目

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

开发

Bloxi:基于Simulink的AI辅助建模工具

2025-06-13
Bloxi:基于Simulink的AI辅助建模工具

一位帝国理工学院的航空工程系学生开发了一款名为Bloxi的AI辅助建模工具,它能够将自然语言描述转换为Simulink控制系统模型。Bloxi利用多模态大语言模型,结合Simulink模型的逐步构建和实时调试功能,显著提高了建模效率。该工具目前已开源,旨在帮助工程师们减少繁琐的建模工作,提升生产力。

探秘字符串中元音检测的最快方法

2025-06-13
探秘字符串中元音检测的最快方法

作者探究了在字符串中检测元音的最快方法,尝试了11种不同的方法,包括循环、集合、正则表达式、递归等。令人惊讶的是,基准测试结果显示,正则表达式方法在各种字符串长度下都表现出极快的速度,这得益于CPython的优化正则表达式引擎。而对于较短的字符串,简单的循环方法速度最快。作者深入分析了字节码和正则表达式的内部实现,解释了正则表达式方法高效的原因。最终结论是,除非处理海量字符串,否则选择易于维护的方法即可。

开发

逃离软件巨头:构建更自由、更安全的计算环境

2025-06-13

面对昂贵、不可靠且缓慢的现代软件,作者提出了一种另类方案:选择用户量较少、更新频率低、易于修改且易于分叉的软件。他以自身经验为例,详细阐述了如何通过选择Lua和LÖVE游戏引擎等工具,构建小型、自给自足的软件生态系统,并鼓励读者通过分叉和修改现有软件来满足自身需求,最终获得更自由、更安全的计算体验。这是一种回归简单、专注于实用性的软件开发哲学,挑战了传统软件开发模式的弊端。

开发

超越Hindley-Milner:立足代数子类型推断的Cubiml编译器教程

2025-06-13

本文介绍了一个名为Cubiml的编译器教程,它基于一种名为“三次二元合一”的改进型代数子类型推断系统。该系统克服了传统的Hindley-Milner系统在子类型支持方面的不足,并提供更强大、更直观的类型推断。教程以逐步的代码示例讲解Cubiml的实现,涵盖布尔值、条件语句、记录、函数、let绑定、递归let绑定、互递归以及case类型匹配等特性,最终目标是构建一个无需手动类型标注即可进行类型检查的编译器。

开发
1 2 60 61 62 64 66 67 68 213 214