分类: 开发

Windows 11 Dev 预览版 26200.5516:语义搜索增强与更多改进

2025-03-29
Windows 11 Dev 预览版 26200.5516:语义搜索增强与更多改进

最新的 Windows 11 Insider Preview Build 26200.5516 为 Dev 频道带来诸多改进,其中最引人注目的是对 AMD 和 Intel 驱动的 Copilot+ PC 的 Windows 搜索进行了增强。借助语义索引,用户现在可以使用自然语言进行搜索,例如“日落时的桥梁”,查找文档、图片和设置,即使离线也能工作。此外,该版本还引入了讲述人语音回顾功能,方便用户查看和复制讲述人播报的内容;改进了意外重启的 UI;引入了 Copilot 的 Win+C 快捷键和按住说话功能;以及 Click to Do 的改进和 Windows 共享功能的增强。一些已知问题将在未来更新中修复。

Grammarly 扩展程序冲突导致网站布局错乱

2025-03-29
Grammarly 扩展程序冲突导致网站布局错乱

一位网站建设者发现Grammarly浏览器扩展程序在其网站上造成了布局问题。Grammarly注入的样式表会覆盖网站自身的样式,特别是它使用了与网站相同的自定义属性`--rem`,导致网站的流体排版系统失效。作者尝试使用变异观察器和自定义属性`--🤡`修复了问题,并呼吁Grammarly改进其扩展程序的设计,避免与其他网站的样式冲突。

OpenBSD系统调用write()的底层实现探秘

2025-03-29

本文深入探讨了OpenBSD操作系统中`write()`系统调用的底层实现机制。从用户空间的`write()`调用开始,层层深入,追踪数据在内核空间的流转过程,详细阐述了从系统调用到最终数据写入NVMe硬盘的完整路径。文章揭示了内核中一系列函数调用,包括`mi_syscall`、`sys_write`、`dofilewritev`、`vn_write`、`ffs_write`、`uiomove`、`bdwrite`、`syncer`、`bwrite`、`ufs_strategy`、`spec_strategy`、`sdstrategy`以及最终的NVMe驱动程序,展现了数据在不同抽象层次间的转换与传递,以及缓存机制、DMA传输等关键技术细节。

开发

构建跨平台加密搜索引擎:浏览器端存储挑战与解决方案

2025-03-29
构建跨平台加密搜索引擎:浏览器端存储挑战与解决方案

本文探讨了构建跨平台加密搜索引擎的首要技术难题:如何在浏览器端安全高效地存储数据。作者比较了LocalStorage、IndexedDB和FileSystem API三种方案,最终选择FileSystem API,因为它提供了类似文件系统的接口,性能更好,且与其他平台的存储方式更一致。文章详细介绍了如何使用Rust和web-sys库操作FileSystem API,并实现了AES-GCM加密层,确保数据安全。最后,作者构建了一个统一的File Trait,方便管理加密和未加密文件。

用Git Hook追踪代码修改时间,提升开发效率

2025-03-29

本文介绍了一种利用Git Hook追踪代码修改时间的方法,以更客观地衡量开发效率。作者通过记录从创建分支到合并分支的时间,排除思考时间,更精准地反映实际编码时间。这种方法有助于团队发现并解决代码维护效率低下的问题,例如某个组件的维护时间过长,或者AI辅助工具带来的效率提升。最终目标是通过数据驱动,而非主观估计,来优化开发流程,减少熵增,提升团队生产力。

开发 Git Hook

Postgres 语言工具链:提升开发者体验的SQL神器

2025-03-29
Postgres 语言工具链:提升开发者体验的SQL神器

一个名为libpg_query的项目,旨在为Postgres开发提供一套完整的工具链,并基于Postgres自身的解析器libpg_query,确保100%的语法兼容性。该工具链采用服务器-客户端架构,支持多种接口,包括LSP、CLI、HTTP API和WebAssembly模块。目前已实现自动完成、语法错误高亮、类型检查和代码风格检查等功能,未来计划进一步完善这些核心功能,并构建更强大易用的基础设施。

开发

超越面向对象:编程语言的子类型演进

2025-03-29

本文探讨了编程语言设计中子类型的关键作用。作者从自身开发的编程语言经历出发,阐述了子类型并非仅限于面向对象编程中的类继承,而是一种更基础的概念:类型X是类型Y的子类型,意味着X值可用于任何期望Y值的地方。文章深入浅出地解释了即使在注重性能的低级语言中,子类型也至关重要,它能帮助编译器静态检查空值、别名等问题,从而提高代码可靠性,并最终促进编程语言的演进。

开发 子类型

Elixir BEAM虚拟机中的忙碌等待:性能优化还是资源浪费?

2025-03-29

一项Go、Elixir和Node.js的基准测试发现,Elixir在BEAM虚拟机上运行时CPU利用率很高,但响应速度依然出色。研究表明,BEAM的忙碌等待机制是罪魁祸首,它是一种为了最大化响应速度的优化策略。虽然忙碌等待会导致操作系统报告的CPU利用率失真,但在专用硬件上运行HTTP工作负载时,启用忙碌等待是有意义的;而在与其他软件共享内核的系统或云端的突发性能实例上,则应禁用忙碌等待,以避免影响其他进程的性能。

开发 忙碌等待

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

2025-03-29
arXivLabs:与社区协作的实验性项目

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

开发

无需 Mock 的单元测试:一种新的测试方法

2025-03-29

本文介绍了一种新型的单元测试方法,无需使用 mocks 或 spies,即可实现快速、可靠且易于维护的测试。该方法的核心在于结合使用基于状态的测试和一种名为“Nullables”的新型基础设施技术。“Nullables”并非测试替身,而是带有“关闭”开关的生产代码,允许测试在不依赖外部系统或状态的情况下运行。虽然这种方法需要修改生产代码,但它避免了传统方法的诸多缺点,如测试脆弱、难以重构等,并带来了显著的性能提升。文章详细解释了该方法的各个模式和技巧,包括 Narrow Tests、State-Based Tests、Overlapping Sociable Tests 等,并提供了丰富的代码示例和多种应用场景,非常适合开发者学习和实践。

开发 Nullables

如何在Oracle云上自托管几乎免费的开源TURN服务器

2025-03-28
如何在Oracle云上自托管几乎免费的开源TURN服务器

本文介绍了如何在Oracle云的免费层上自托管一个几乎免费的开源TURN服务器,以替代依赖第三方服务的WebRTC实现。文章详细描述了创建子网、安全列表、实例配置、安装Nginx、Certbot、PeerJS服务器和Coturn服务器的步骤,并讲解了如何配置iptables规则和使用coturn-credential-api进行身份验证,最终实现对WebRTC通信的完全控制,避免依赖Google等大型公司的服务器,增强隐私和安全性。

Swiftly 1.0发布:简化Swift工具链管理

2025-03-28
Swiftly 1.0发布:简化Swift工具链管理

Swiftly 1.0正式发布!这是一个Swift版本管理器,旨在简化Swift工具链的安装、管理和更新。它支持macOS和多种Linux发行版,允许开发者轻松安装不同版本的Swift,并在Xcode之外使用Swift。Swiftly自身也用Swift编写,并能自动更新。它支持安装稳定版、夜间快照版和旧版本,方便开发者在不同版本之间切换,并能通过`.swift-version`文件在团队中统一版本。总之,Swiftly让Swift开发更加便捷高效。

开发

RDNA3 GPU上的FP32矩阵乘法优化:超越rocBLAS 60%

2025-03-28
RDNA3 GPU上的FP32矩阵乘法优化:超越rocBLAS 60%

本文详细介绍了如何在AMD RDNA3 GPU上编写优化的FP32矩阵乘法,其性能比rocBLAS快60%。作者通过迭代的方式,逐步优化了8个不同的内核,从简单的朴素实现到最终利用指令集级优化,大幅提升了性能。优化策略包括LDS平铺、寄存器平铺、全局内存双缓冲、LDS利用率优化以及指令集级VALU利用率优化和循环展开等。最终实现的内核性能超过了rocBLAS,达到了近50 TFLOPS。

开发 RDNA3

FreeBSD 基金会为开发者提供 Framework 笔记本电脑用于改进 FreeBSD 体验

2025-03-28

FreeBSD 基金会为 FreeBSD 项目开发者提供了 Framework 笔记本电脑,以改进 FreeBSD 在笔记本电脑上的体验。一位开发者分享了其安装和配置 FreeBSD 14.2 的过程,包括安装操作系统、配置图形驱动程序以及遇到的问题,例如屏幕边框安装和 Wayland 桌面环境的兼容性问题。尽管在 Wayland 上运行 KDE Plasma 6 遇到了一些挑战,但这为进一步改进 FreeBSD 的桌面体验提供了宝贵的经验。

SignalBot 安全性和功能详解

2025-03-28

SignalBot 是一款免费的、基于 Signal 的通知机器人,采用强安全措施,不存储消息或元数据,但建议避免用于敏感数据。它提供通用的 Webhook API,支持纯文本和表情符号通知(Markdown 支持即将推出),可用于个人或群组通知。 想要自定义通知格式或特定集成?请联系开发者!

Hexi:轻量级C++23二进制数据处理库

2025-03-28
Hexi:轻量级C++23二进制数据处理库

Hexi是一个轻量级的C++23仅包含头文件的库,用于安全地处理来自任意来源(主要为网络)的二进制数据。它介于手动从网络缓冲区复制字节和完整的序列化库之间。Hexi的设计目标是易用性、处理不受信任数据时的安全性、合理的灵活性和将开销降至最低。它支持自定义容器,包括非连续容器,并提供异常处理和边界检查以确保安全。Hexi还包含一些额外的功能,例如用于处理二进制文件、静态大小缓冲区和动态大小缓冲区的缓冲区类型,以及一个线程局部块分配器。

GitHub CI流水线磁盘I/O瓶颈分析

2025-03-28
GitHub CI流水线磁盘I/O瓶颈分析

本文探讨了GitHub CI流水线中容易被忽视的磁盘I/O瓶颈问题。作者通过iostat和fio工具监控和测试了不同runner的磁盘性能,发现默认的ubuntu-22.04 runner存在带宽限制,导致依赖安装速度受限。文章详细分析了缓存下载、解压以及大量小文件写入对磁盘I/O的影响,并建议使用fio工具进行基准测试,比较不同runner的磁盘性能,最终指出Depot即将推出的Ultra Runner将显著提升磁盘I/O性能。

开发 磁盘I/O

Rust 实现的现代 XML 处理器 Xee:重燃 XML 之火

2025-03-28

作者历时两年,使用 Rust 语言开发了一个名为 Xee 的 XML 执行引擎,它支持现代版本的 XPath 和 XSLT。Xee 不仅仅是一个库,更是一个完整的编程语言实现,包含命令行工具和 Rust 库,旨在为日渐式微的 XML 技术带来新的活力。文章详细介绍了 Xee 的架构、实现细节以及 XML 的历史和现状,并呼吁开发者贡献力量,共同完善这个项目。

开发 XPath

使用Zig构建静态链接的Go可执行文件

2025-03-28

本文介绍如何使用Zig创建一个静态链接的Go可执行文件,该文件调用CGO依赖项。作者首先创建了一个Zig静态库,然后编写了一个简单的Go程序来调用Zig库中的函数。最终通过`go build`命令和一些额外的标志,成功构建了一个不依赖动态链接库的静态可执行文件,实现了更好的可移植性和安全性。

开发

Windows 下使用 clang-cl 编译 Node.js 的实践

2025-03-28

作者近期尝试在 Windows 系统上使用 clang-cl 编译 Node.js,成功解决了编译过程中的若干问题。文章详细介绍了安装必要的 Visual Studio 组件(包括 C++ Clang 编译器和 MSBuild 支持)、配置 ccache 缓存工具以及最终编译 Node.js 的步骤。作者还分享了在安装过程中遇到的问题以及解决方法,例如重新安装 Visual Studio 组件和调整 ccache 的路径。这篇文章为 Windows 用户提供了一个宝贵的实践指南,帮助他们使用 clang-cl 编译 Node.js,并摆脱了对 MSVC 的依赖。

开发 clang-cl

分解阶乘为大因数:一个古老猜想的最新进展

2025-03-28
分解阶乘为大因数:一个古老猜想的最新进展

一篇新论文研究了将阶乘分解为尽可能大因数的问题。Erdős等人曾提出一个关于此问题的猜想,但由于证明丢失而成为未解之谜。本文通过巧妙地利用素数定理和近似分解的方法,给出了新的上下界,部分解决了这个长期悬而未决的问题,并为完全解决剩余部分提供了新的思路。

开发

如何撰写程序员爱读的博客文章

2025-03-28
如何撰写程序员爱读的博客文章

一位开发者因博客文章无人问津而放弃写作。作者Michael Lynch分享了他九年博客写作经验,指出开发者博客常见的错误:冗长、缺乏重点、目标受众不明确等。他建议在文章开头就明确目标读者和文章益处,并考虑扩大受众范围。此外,他还强调了规划读者阅读路径的重要性,建议选择易于被读者发现的文章主题,并通过图片、标题等提升文章的可读性和吸引力。

开发

开源许可证:自由与责任的博弈

2025-03-28
开源许可证:自由与责任的博弈

本文作者以其维护的Windows窗口管理器komorebi为例,探讨了开源许可证的局限性。komorebi采用非OSI认证的Komorebi许可证,却拥有12.6万下载量和1.06万星标,并吸引了众多贡献者。作者认为,分享代码不应以牺牲个人自由为代价,开源许可证不应强制要求放弃拒绝参与邪恶行为(如种族灭绝)的权利。作者呼吁开发者摆脱教条,根据实际情况选择许可证,并分享实践经验,共同推动开源社区发展。

开发

6502架构下超小型Forth语言实现

2025-03-28
6502架构下超小型Forth语言实现

本文介绍了一个针对6502 8位CPU的极小化Forth语言实现,其大小仅为数百字节。作者比较了两种不同的内部解释器模型:直接线程代码(DTC)和最小线程代码(MTC),最终选择了DTC以实现更小的代码尺寸。该项目旨在验证标准DTC与MTC变体,并关注代码大小而非性能。最终实现的Forth包含了核心词法单元,并通过`my_hello_world.FORTH`程序进行了测试,展示了其功能。

开发 Forth语言

Kafka 4.0 的 AOT 缓存:启动速度提升 59%

2025-03-28

本文介绍了如何利用 Java 的 AOT (Ahead-of-Time) 编译技术提升 Apache Kafka 4.0 的启动速度。通过创建 AOT 缓存文件,作者成功将 Kafka 的启动时间从 690 毫秒缩短到 285 毫秒,提升了 59%。过程中,作者也遇到并解决了 JMX 冲突的问题,最终成功创建并应用 AOT 缓存,取得了显著的性能提升。

开发 AOT 编译

学龄前儿童的分类能力超乎想象

2025-03-28
学龄前儿童的分类能力超乎想象

蒙特利尔大学的一项研究发现,3到5岁的孩子在对玩具进行分类时,展现出超出预期的推理能力。他们不仅能进行简单的二元分类,还能根据多种标准创建多个类别,甚至在分类过程中自行调整标准,体现出复杂的数学推理能力。这项研究挑战了以往对儿童认知发展的认知,并为早期教育提供了新的启示。

开发

AI编程时代:代码学习的未来?

2025-03-28
AI编程时代:代码学习的未来?

Replit CEO的一条“无需学习编码”的推文引发热议。作者结合自身15年编程经验,探讨了AI编程工具兴起下代码学习的未来。他认为,虽然AI辅助编程效率很高,但过度依赖AI会降低对代码的理解,使程序员受制于AI厂商。他建议初学者应打好编程基础,掌握核心知识,才能在AI时代保持竞争力。AI工具能提高效率,但不能取代扎实的编程功底。

开发 代码学习

告别传统调试器:IntelliJ IDEA 的 Run to Cursor 和 Quick Evaluate Expression 功能

2025-03-28

作者厌倦了传统调试器的繁琐,尤其是gdb和lldb在原生代码调试中的无力感。他发现IntelliJ IDEA的“Run to Cursor”和“Quick Evaluate Expression”功能组合,可以将调试器转变为强大的REPL环境。通过“Run to Cursor”将程序运行到光标所在行,再用“Quick Evaluate Expression”在当前栈帧中评估表达式,甚至可以输入新的代码并执行,实现了高效的代码探索和实验。这种方式摒弃了传统的单行命令交互,而是利用编辑器的二维文本界面,提供代码补全等特性,极大提升了调试效率。

开发

Python 架构实战:驾驭复杂性

2025-03-28

两位 MADE.com 工程师,Harry 和 Bob,联手撰写了一本关于 Python 应用架构的实践指南。他们结合自身在构建大型电商系统的经验,深入浅出地讲解了领域驱动设计(DDD)、测试驱动开发(TDD)以及事件驱动架构等核心概念,并辅以大量的 Python 代码示例,帮助读者应对复杂业务场景下的软件开发挑战。本书尤其适合有一定 Python 开发经验,并希望提升架构能力的工程师阅读。

开发

10分钟搞定一个自定义PHPStan规则:让代码检查更有趣

2025-03-28
10分钟搞定一个自定义PHPStan规则:让代码检查更有趣

本文介绍了如何快速创建自定义PHPStan规则来提升代码质量。作者通过一个简单的例子,演示了如何在10分钟内编写一个规则来检查`userId`参数的类型是否缺失。这个方法强调了实用性和趣味性,即使规则不完美也能带来价值,并鼓励读者根据自身需求创建个性化的规则,最终提升代码可维护性和安全性。

1 2 126 127 128 130 132 133 134 213 214