分类: 开发

告别YAML地狱:KSON,一个为人类设计的配置语言

2025-09-18
告别YAML地狱:KSON,一个为人类设计的配置语言

厌倦了YAML配置文件的无尽烦恼?本文讲述了一个程序员从YAML的甜蜜陷阱坠入痛苦深渊的故事,并介绍了KSON——一个致力于提升配置体验的开源项目。KSON 兼容JSON和YAML,并增加了许多人性化设计,例如对缩进的容错处理和强大的代码编辑器支持,力图将配置过程变成一种享受,而非噩梦。

开发 KSON

Geizhals慷慨捐赠,助力Perl 5核心维护基金

2025-09-18
Geizhals慷慨捐赠,助力Perl 5核心维护基金

Geizhals Preisvergleich,一家成立于1997年的德国价格比较网站,近日向Perl和Raku基金会捐赠了1万美元,用于支持Perl 5核心维护基金。作为一家依靠Perl技术发展壮大的公司,Geizhals此举体现了其对开源社区的回馈和对Perl语言长期稳定性的重视。Perl 5核心维护基金主要用于修复各种bug,确保Perl的稳定性和安全性,这对依赖Perl的众多组织和个人至关重要。

开发

AI辅助编程:掌控工作单元的重要性

2025-09-18

在AI辅助编程中,取得良好效果的关键并非AI的智能程度,而是对上下文管理的精确性。文章指出,将任务分解成合适的“工作单元”至关重要。过小的单元会造成效率低下,过大的单元则会因上下文丢失导致错误累积。最佳的“工作单元”应具备清晰的业务价值,例如用户故事,方便人工审查和错误修正,并能有效降低AI错误率的累积效应。作者介绍了StoryMachine项目,旨在探索更有效的“工作单元”定义,以提升AI辅助编程的效率和准确性,最终目标是让AI辅助开发变得更轻松、更有效率。

开发

KDE Plasma桌面环境:令人惊艳的Linux桌面体验

2025-09-18

博主近期将游戏电脑的桌面环境切换至KDE Plasma,起初是为了方便妻子使用,但使用后却意外发现其功能完善且速度惊人。KDE Plasma的网络小程序提供了丰富的网络信息,集成的截图工具功能强大,系统设置中的窗口规则功能方便自定义应用程序窗口行为。此外,KDE Plasma还拥有许多预集成工具,例如Flatpak权限配置、硬件信息查看以及防止休眠的功能,这些功能在Windows和macOS系统中通常需要额外安装软件才能实现。虽然启动时遇到过小问题,但总体而言,博主对KDE Plasma的体验非常满意,认为这是他多年来在Linux上使用过的最佳桌面环境。

开发

告别远程办公电脑休眠:一个简单的systemd-inhibit技巧

2025-09-18
告别远程办公电脑休眠:一个简单的systemd-inhibit技巧

远程办公时,电脑休眠中断SSH会话令人抓狂。作者巧妙地利用`systemd-inhibit`命令结合bash别名,创建了`block`和`unblock`两个命令。`block`命令启动一个后台进程,阻止系统休眠;`unblock`命令则终止该进程,允许系统休眠。无需复杂配置,只需在`.bashrc`或`.zshrc`中添加两行别名即可轻松解决问题,提高效率。

开发

快速傅里叶变换(FFT)算法详解:Cooley-Tukey算法

2025-09-18

本文深入探讨了快速傅里叶变换(FFT)算法,特别是Cooley-Tukey算法。作者首先介绍了离散傅里叶变换(DFT)的定义,指出其朴素算法的时间复杂度为O(n^2)。然后,作者详细推导了Cooley-Tukey算法,该算法通过将DFT分解为更小的DFT来降低时间复杂度,当输入长度为2的幂时,复杂度可降至O(n log n)。文章还包含一个交互式可视化工具,用于演示Cooley-Tukey算法的工作原理,并纠正了人们常将FFT与DFT混淆的错误用法。

开发 Cooley-Tukey DFT

C编程实践笔记:追求纯净、速度与正确性

2025-09-18

本文是一篇关于C编程实践的笔记,涵盖了代码风格、函数命名、变量命名、代码格式、注释以及一些C语言技巧(例如二进制位计数、循环展开等)。作者强调追求代码的纯净性、速度和正确性,并分享了对头文件、编译器、以及一些编程理念(如GOTO语句的合理使用)的实用经验。文章旨在提升C程序员的代码质量和效率。

开发

告别CSS类:一个无类网站的构建历程

2025-09-18
告别CSS类:一个无类网站的构建历程

作者在之前的文章中倡导尽量使用浏览器内置元素,这次他将此理念付诸实践,彻底摒弃了其个人网站中的所有CSS类。他尝试通过更精细的默认样式、嵌套选择器、:where()和:has()等现代CSS特性,以及自定义元素和属性来替代CSS类,以实现更简洁、语义化更强的代码。虽然这需要更仔细的规划,且并非适用于所有项目,但这项实验让作者对CSS类的必要性产生了质疑,并对其未来的工作产生了深远影响。

开发

Chez Scheme 程序调试指南:从入门到进阶

2025-09-18

本文是Chez Scheme程序调试指南,作者R. Kent Dybvig从程序错误的类型、错误信息的理解、代码简化、打印调试信息等基本方法入手,逐步讲解如何高效地调试Scheme程序。文章还介绍了高级调试技巧,例如使用Chez Scheme的代码追踪器和调试器,帮助程序员深入理解程序运行过程,找出隐藏的bug。无论你是Scheme新手还是经验丰富的程序员,都能从本文中受益匪浅。

开发

pnpm 更新:延迟依赖更新和高级依赖查找

2025-09-18
pnpm 更新:延迟依赖更新和高级依赖查找

pnpm 最新版本引入了两个重要特性:首先,新增 `minimumReleaseAge` 设置,以延迟安装新发布的依赖项,降低安全风险;其次,支持使用查找函数(finder functions)在 `.pnpmfile.cjs` 中定义自定义查找规则,通过 `pnpm list` 或 `pnpm why` 命令结合 `--find-by` 参数,更精细地查找依赖项,例如根据 peerDependencies 查找特定版本的 React。此外,此版本还修复了一些 bug,例如 Node.js 24 版本的弃用警告和 Ctrl-C 终止进程的退出码问题。

开发

网站Cookie策略详解

2025-09-18
网站Cookie策略详解

该网站使用两种类型的Cookie:必要的Cookie,用于网站的基本功能;评论Cookie,用于追踪用户在多个会话中的评论活动,包括用户名、邮箱和网址。必要的Cookie存储用户Cookie同意偏好,有效期为30天;评论Cookie为会话Cookie,会话结束后失效。

开发

手动解码GZIP:一次Deflate算法的深入探索

2025-09-18

作者尝试手动解码用GZIP压缩的字符串“TOBEORNOTTOBEORTOBEORNOT”,深入剖析Deflate算法。文章详细解释了GZIP数据结构,包括魔数、压缩方法、时间戳等字段,并重点讲解了Deflate压缩的核心——LZ77算法。LZ77算法通过字符和复制指令(长度和距离)编码,有效减少数据长度。作者通过手动解析压缩数据,一步步还原了原始字符串,最终得出结论:位编码比字节编码更有效地压缩数据,但手动解码过程较为复杂。

开发 Deflate LZ77

npm 包恶意劫持事件:@ctrl/tinycolor 受影响

2025-09-18
npm 包恶意劫持事件:@ctrl/tinycolor 受影响

一个恶意 GitHub Actions 工作流被推送到一个共享仓库中,窃取了一个具有广泛发布权限的 npm token。攻击者随后利用该 token 发布了 20 个恶意软件包,其中包括 @ctrl/tinycolor。作者的 GitHub 账户和 @ctrl/tinycolor 仓库未被直接入侵。攻击者通过一个共享仓库中的 GitHub Actions secret 窃取了 npm token,并发布了恶意软件包版本。GitHub 和 npm 安全团队迅速做出响应,取消发布了恶意版本,作者也发布了干净的版本以清除缓存。作者计划迁移到 npm 的 Trusted Publishing (OIDC) 以消除静态 token,并加强安全措施,例如限制每个仓库的 npm token 的权限。

开发

Blender之父Ton Roosendaal卸任CEO

2025-09-18

Blender开源3D软件的创始人兼CEO Ton Roosendaal宣布将于2026年1月1日卸任。他将担任新成立的Blender基金会监事会成员。现任COO Francesco Siddi将接任CEO,其他新董事会成员还包括Sergey Sharybin(开发主管)、Dalai Felinto(产品主管)和Fiona Cohen(运营主管)。Roosendaal表示,自2019年以来,他们一直在为此做准备,并对团队充满信心,能够将Blender项目带入下一个十年。

开发 CEO离职

会面哈希:一种具有优异负载均衡能力的分布式哈希算法

2025-09-18

会面哈希算法是一种用于解决分布式哈希表问题的算法,该问题在分布式系统中非常常见。它通过为每个键生成一个服务器优先级列表,并选择列表中的第一个服务器来实现负载均衡。与一致性哈希相比,会面哈希具有更好的负载均衡性能,但查找时间复杂度为O(N)。在小型到中型分布式缓存系统中,会面哈希是一个不错的选择,但在大型系统中添加服务器需要谨慎处理以维护“首选”不变性。

libxml2 主要维护者宣布卸任

2025-09-18
libxml2 主要维护者宣布卸任

libxml2 的主要维护者 Nick Wellnhofer 宣布卸任,这意味着该项目目前基本上处于无人维护状态。他将在 2025 年底之前修复 2.15 版本中的回归问题。消息一出,引发了社区的广泛感谢和担忧,许多开发者表达了对 libxml2 长期维护的感谢,并有人表示愿意接手维护工作,但同时也提出了技术问题,希望与前任维护者沟通解决。

开发 libxml2

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

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

arXivLabs是一个全新的平台,允许开发者和研究人员直接在arXiv网站上开发和分享新的功能。该项目秉承开放、社区、卓越和用户数据隐私的价值观,致力于为arXiv社区创造更多价值。如果你也有好的想法,不妨加入arXivLabs,共同构建更好的arXiv!

开发

Rust 编写高性能虚拟机监控程序速成课程

2025-09-18

这是一门为期一天的课程,旨在快速学习虚拟机监控程序的内部工作原理以及编写用于高性能模糊测试的虚拟机监控程序的技术。课程涵盖硬件辅助虚拟化技术的基础知识,例如 VMCS/VMCB、访客-主机世界切换、EPT/NPT,以及有用的功能和技术,例如用于虚拟机自省的异常拦截以进行模糊测试。课程由讲座和动手练习组成,使用本目录中的材料以及Hypervisor-101-in-Rust/hypervisor目录下的源代码。

Wasm 3.0 发布:GC、64位地址空间等重大更新

2025-09-18
Wasm 3.0 发布:GC、64位地址空间等重大更新

经过三年发展,WebAssembly (Wasm) 3.0 标准正式发布!此次更新包含诸多重大特性,例如支持64位地址空间,扩展内存地址空间至16EB;允许多个内存实例,提升了大型应用和数据处理能力;引入了垃圾回收机制(GC),大幅简化高阶语言编译到Wasm的过程;增加了类型化引用,提升了类型安全性和效率;以及尾调用、异常处理、改进的向量指令等。这些更新使得Wasm更适合编译高阶语言,例如Java、OCaml等,进一步扩展了其应用范围。

开发

C# 14 的空条件赋值运算符:告别冗余的 if 语句

2025-09-18
C# 14 的空条件赋值运算符:告别冗余的 if 语句

C# 14即将推出的一项令人兴奋的新特性是空条件赋值运算符。它能够优雅地解决长期以来困扰C#开发者的NullReferenceException问题。以往需要使用多个if语句来检查空值,现在只需一行代码即可完成赋值操作,显著简化代码并提高可读性。例如,`config?.Settings?.RetryPolicy = new ExponentialBackoffRetryPolicy();` 就能代替之前的多行if判断。虽然该运算符不支持自增自减运算符,并且过度使用可能降低可读性,但它仍然是C# 14中一项非常有价值的改进,值得开发者们在.NET 10发布后积极尝试。

ClickHouse在超高核心数Intel Xeon处理器上的性能优化

2025-09-17
ClickHouse在超高核心数Intel Xeon处理器上的性能优化

Intel最新的处理器拥有数百个核心,为ClickHouse等分析型数据库带来了巨大机遇和挑战。来自Intel上海的工程师们通过系统地分析ClickHouse在超高核心数服务器上的性能,识别并优化了五个关键瓶颈:锁竞争、内存优化、并行化不足、SIMD指令利用和伪共享。通过减少锁的持有时间、改进内存分配器、并行化串行阶段、使用更智能的SIMD算法以及优化内存布局,他们显著提升了ClickHouse在超高核心数系统上的可扩展性,部分查询速度提升达10倍,整体性能提升达10%。这项工作突显了在超高核心数时代,数据库优化需要从算法和内存布局等多个层面进行改进。

UUIDv47:数据库友好型UUID,兼顾排序和API兼容性

2025-09-17
UUIDv47:数据库友好型UUID,兼顾排序和API兼容性

UUIDv47是一个巧妙的方案,它在数据库中存储可排序的UUIDv7,但在API接口层对外呈现为UUIDv4。其核心是使用SipHash-2-4算法对UUIDv7的时间戳字段进行密钥掩码,保证了数据库的排序效率和API的兼容性。该库提供C语言实现,易于集成,并具有密钥恢复抗性,保证了安全性。

开发

代数类型并不可怕:用集合论视角轻松理解产品类型和求和类型

2025-09-17

本文用通俗易懂的语言解释了代数类型,并用集合论的视角将类型视为值集合。它深入浅出地讲解了产品类型(类似于结构体或类)和求和类型(例如可选类型或结果类型),并比较了使用代数类型和面向对象方法(继承或访问者模式)实现解释器时的优劣。作者认为,代数类型更简洁、更易于理解和维护,避免了不必要的复杂性,最终得出结论:产品类型和求和类型是组合类型的两种基本方式,大多数编程任务都可以通过这两种方式来建模。

微软:软件供应链中的“坏演员”?

2025-09-17
微软:软件供应链中的“坏演员”?

本文作者回顾了从IE浏览器到npm的软件供应链安全问题,指出微软在维护npm安全方面做得不够,导致恶意软件泛滥,威胁软件开发公司。作者认为,npm的postinstall脚本存在严重安全漏洞,易于被利用发起攻击,而微软作为npm的所有者,却没有采取有效措施。这使得软件开发变得不再有趣,而是充满风险的苦差事。文章呼吁业界共同努力,构建安全的软件供应链。

开发

开源项目DataTables遭遇域名劫持攻击

2025-09-17

DataTables.net网站遭遇了一次严重的域名劫持攻击,导致网站、论坛和CDN服务中断。攻击者通过精心设计的钓鱼邮件和伪造身份信息,成功将域名转移到自己名下。尽管服务器和代码未受损,但此次事件对DataTables用户造成重大影响。作者已采取措施修复问题,并呼吁用户使用子资源完整性(SRI)等安全措施。

开发

Stategraph:将Terraform状态管理视为分布式系统问题

2025-09-17
Stategraph:将Terraform状态管理视为分布式系统问题

Terraform长期以来使用文件系统语义来解决分布式系统问题,导致状态管理效率低下。Stategraph项目通过将Terraform状态视为一个有向无环图,并利用图数据库的特性,实现了子图隔离、精确锁机制和增量刷新。这有效解决了锁竞争、刷新缓慢等问题,极大提升了并发吞吐量,让大型团队协同工作成为可能。Stategraph 使用 PostgreSQL 作为后端,并兼容现有的 Terraform 工作流程,无需修改配置即可迁移。

开发

Tabby:一款强大的终端模拟器和SSH客户端

2025-09-17
Tabby:一款强大的终端模拟器和SSH客户端

Tabby(前身为Terminus)是一款功能强大的终端模拟器,集成了SSH、Telnet、串口客户端以及连接管理器。它支持Windows、macOS和Linux,具有主题、颜色方案、自定义快捷键、分屏、标签页记忆等功能,并支持PowerShell、WSL、Git-Bash等多种shell。此外,Tabby还提供插件扩展,例如Docker连接、命令快速发送、输出保存等,甚至集成了AI助手,提升效率。Tabby是一款功能丰富的替代品,适用于各种开发和运维场景。

开发 SSH客户端

Fedora 43 Beta发布:焕新升级,体验未来

2025-09-17
Fedora 43 Beta发布:焕新升级,体验未来

Fedora 43 Beta版发布,带来安装程序改进、系统工具更新和编程语言升级。Anaconda WebUI成为默认安装界面,DNF升级至5.0版本,并移除模块化包支持,简化安装流程。核心开发工具也得到更新,包括GCC 15.2、glibc 2.42、LLVM 21等。Python升级至3.14,Go升级至1.25,并加入Idris 2和Hare编程语言支持。数据库方面,PostgreSQL升级至18,MySQL默认版本为8.4。此外,GNOME全面转向Wayland,并对字体渲染进行优化。一些旧组件已被移除,例如gold链接器和旧版Python RPM宏。

开发

从零构建Docker容器:揭秘mount namespace的奥秘

2025-09-17
从零构建Docker容器:揭秘mount namespace的奥秘

本文深入浅出地讲解了如何使用Linux原生工具(unshare, mount, pivot_root)构建一个简易Docker容器。文章重点阐述了mount namespace在容器隔离中的核心作用,以及其他命名空间(PID, cgroup, UTS, network)的补充作用。通过逐步的实践操作,读者将理解mount namespace如何隔离mount table,以及mount propagation机制如何影响命名空间间的交互。最终,读者将能够使用标准Linux命令创建功能齐全的Docker风格容器。

C++:老当益壮的编程语言?

2025-09-17
C++:老当益壮的编程语言?

本文反驳了关于C++复杂、过时、不安全等常见批评。作者认为,C++的复杂性可以通过避免过度优化和专注于编写易读代码来克服;C++经过40多年的发展,不断更新迭代,而非过时;C++的不安全性可以通过使用智能指针等工具来缓解,而且所有语言都存在安全风险;C++的学习曲线虽然陡峭,但对于系统编程和游戏开发等领域来说,学习C++的长期收益大于短期成本。作者最后指出,C++仍然是当今最广泛使用的编程语言之一,广泛应用于各种领域,并且将继续保持其重要地位。

开发
1 2 3 4 6 8 9 10 213 214