分类: 开发

Zig语言中的运行时可调整大小的结构体

2025-07-27

本文探讨了在Zig编程语言中实现“运行时可调整大小的结构体”的概念。作者指出,Zig标准库中的集合类型主要基于编译时已知长度的数组和运行时长度未知的指针。然而,对于结构体中包含不同类型且长度在运行时确定的情况,现有方法较为繁琐,需要手动计算大小、分配内存、以及处理对齐问题。作者提出了一种基于编译时元编程的方案,利用`ResizableArray`和`ResizableStruct`这两个结构体,实现了运行时可调整大小的结构体,从而简化了操作并避免了潜在的错误。该方案的核心在于利用编译时信息自动计算偏移量和大小,并提供`init`、`get`、`resize`和`deinit`四个方法来管理内存。作者已将最小化实现发布到GitHub,并鼓励社区反馈和改进。

开发

用LVM缓存RAID 1阵列,打造高速可靠存储

2025-07-27

本文介绍了如何使用Linux逻辑卷管理器(LVM)缓存RAID 1阵列,以实现高速、可靠的数据存储。作者面临着需要大量存储空间但只有部分数据频繁访问的挑战,传统SSD+HDD方案已不再适用。文章详细阐述了如何使用LVM创建缓存卷,以及如何在HDD上配置RAID 1以保证数据冗余,并比较了其他缓存方案如bcache和EnhanceIO。最终,作者成功搭建了一个由SSD缓存和RAID 1 HDD阵列组成的存储系统,显著提升了数据访问速度,并确保了数据安全。

用Scala构建高效的倒排索引:多线程并行处理

2025-07-26
用Scala构建高效的倒排索引:多线程并行处理

本文介绍了如何使用Scala构建一个高效的倒排索引,用于快速查找文档。作者首先解释了倒排索引的工作原理,然后逐步实现了一个`InvertedIndex`类,可以添加单词和查找包含特定单词的文档。为了提高效率,作者还使用了多线程并行处理,将文件分成多个组,并行生成索引,最后合并结果。文章还讨论了文本处理的细节,例如去除停用词和词干提取。

开发

CSS 属性 font-size-adjust 的误解与正确用法

2025-07-26

本文挑战了 CSS 属性 `font-size-adjust` 的普遍误解。作者指出,`font-size` 指定的是字形周围方框的大小,而非字形本身大小,不同字体字形大小差异很大。`font-size-adjust`并非仅仅用于字体回退,而是能使页面上不同字体大小更一致,作者建议将其设置为 `ex-height 0.53`,以使不同字体大小更统一,提升页面排版一致性。

开发

别再用AI偷懒了!你的老板一眼就能看穿

2025-07-26

一位经验丰富的专业人士表达了对员工过度依赖AI写作的担忧。他拥有深厚的阅读和写作功底,并长期接触各种大型语言模型,因此能轻易辨别AI生成的文本。他认为,过度依赖AI会降低工作效率,并剥夺了员工在写作过程中学习和思考的机会,最终提交的工作质量也会大打折扣。他鼓励员工多花时间精雕细琢,用自己的语言和思考表达观点,展现个人价值。

开发 职场效率

《PF宝典》第四版来袭:与现代互联网同步

2025-07-26

历经八年,备受期待的《PF宝典》第四版终于开启预售!作者Peter Hansteen解释了此次更新的原因:为了适应现代互联网环境,特别是OpenBSD 7.8和FreeBSD 14-STABLE系统。新版内容更新,但结构和章节标题与旧版相似,并更侧重于FreeBSD。此次更新还得到了Max Stucchi和Tom Smyth等人的协助,历经多次会议和教程打磨而成。第四版将重点关注OpenBSD和FreeBSD的PF,并将在2025年下半年上市,届时还将在EuroBSDcon 2025上进行相关教程。

开发 PF

单一Rust代码库征服各大GPU平台:跨平台GPU计算的里程碑

2025-07-26

一个令人兴奋的项目实现了使用单一Rust代码库在所有主要GPU平台(NVIDIA CUDA,AMD/Intel/NVIDIA Vulkan,Apple Metal,Windows DirectX 12,浏览器WebGPU以及CPU备用)上运行计算逻辑的壮举。该项目巧妙地利用Rust的特性,例如`#![no_std]`、条件编译、Newtypes、Enums和Traits,实现了跨平台的通用性,并通过`cargo`构建系统和测试框架,简化了开发流程。虽然仍存在一些挑战,例如编译器后端集成和调试体验,但这标志着Rust在跨平台GPU计算领域迈出了重要一步。

开发

别让Pydantic侵入你的领域层

2025-07-26

本文探讨了在构建大型应用时,如何避免Pydantic模型侵入领域层,保持代码简洁和可测试性。作者指出,Pydantic虽然方便,但在领域层使用会造成紧耦合。文章介绍了使用Dacite库将Pydantic BaseModel转换为纯Python dataclass的方法,并通过一个例子展示了如何在应用层、领域层和基础设施层之间清晰地分离关注点,最终实现更易维护和测试的架构。

开发

X-Forwarded-For 头部字段:信任危机与安全策略

2025-07-26
X-Forwarded-For 头部字段:信任危机与安全策略

X-Forwarded-For (XFF) HTTP 头部字段用于追踪客户端请求的来源IP地址,尤其在经过多个代理服务器、负载均衡器等中间件时尤为重要。然而,XFF 并非绝对可靠,恶意用户可以伪造该字段。文章深入探讨了XFF 的工作机制、用途(用户认证、负载均衡、数据本地化等)、安全风险(伪造、无效IP地址、注入攻击等)以及如何安全地使用XFF,包括使用受信代理列表或计数方法识别真实客户端IP,并推荐使用更安全的Forwarded 头部字段替代XFF。

开发 XFF

从拆解录音机到AI:一位程序员的成长之路

2025-07-26

作者从小就对电子产品充满好奇,三岁时便开始拆解录音机。从早期的BASIC编程到后来的HTML、JavaScript、PAWN、LSL,再到如今的各种编程领域,作者的编程之路充满了探索与挑战。他曾创建虚拟世界的游戏服务器,也曾为现实生活开发应用,并在创业过程中学习到商业知识的重要性。虽然经历过两次倦怠期,但他对编程的热情从未消退,并认为编程是探索世界、满足好奇心的最佳方式。

自动生成Favicon神器:告别繁琐图标制作

2025-07-26
自动生成Favicon神器:告别繁琐图标制作

还在为网站Favicon的制作而烦恼吗?这款基于MCP协议的服务器端工具,可以自动从PNG图片或URL生成完整的Favicon图标集,包括各种尺寸的图标、Apple触控图标以及manifest.json文件。只需简单的几行命令,即可轻松拥有专业级的网站图标,支持从本地PNG文件或网络URL生成,省时省力,极大提升开发效率。

开发 图标生成

在安卓手机上运行postmarketOS和Phosh,无需root或刷机

2025-07-26
在安卓手机上运行postmarketOS和Phosh,无需root或刷机

本文介绍了一种在安卓手机上运行postmarketOS和Phosh桌面环境的非常规方法,无需root或刷写自定义ROM。作者利用Termux和proot在安卓系统中创建一个Alpine Linux环境,然后将其转换为postmarketOS,并安装轻量级的Phosh桌面环境。虽然此方法并非完美,存在一些功能限制,例如中文输入需要借助安卓系统自带键盘,但它为安卓用户提供了一种体验移动Linux系统的便捷途径。

开发 Phosh

Claude Code 的子代理:高效任务管理的利器

2025-07-26
Claude Code 的子代理:高效任务管理的利器

Claude Code 推出了子代理功能,这是一种专业的 AI 助手,可以处理特定类型的任务。每个子代理拥有独立的上下文、自定义系统提示和工具权限,从而更高效地解决问题。子代理可以根据任务需求进行配置,并能重复使用,提高团队协作效率。创建子代理非常简单,只需使用 `/agents` 命令即可创建、编辑或删除。通过合理利用子代理,可以显著提升 Claude Code 的任务处理效率和准确性。

开发

游戏车辆编程:从概念到代码

2025-07-26
游戏车辆编程:从概念到代码

本文深入探讨了游戏车辆编程的原理和实践。作者从自身经验出发,讲述了如何从简单的牛顿模型迭代到更真实的物理模拟,并重点讲解了引擎、轮胎和底盘三个核心组件的建模方法。文章详细解释了轮胎的纵向力和横向力,以及它们如何相互影响,并介绍了Pacejka魔术公式等实用工具。最终,作者提供了一个伪代码示例,展示了如何将这些组件集成到游戏物理引擎中,并强调了模拟真实感和游戏体验之间的平衡。

开发 车辆模拟

编程学习营RC面对AI浪潮:拥抱还是抵制?

2025-07-26
编程学习营RC面对AI浪潮:拥抱还是抵制?

编程学习营RC,一个为程序员提供6-12周集训和招聘服务的机构,正积极应对AI浪潮带来的冲击。他们并未简单地拥抱或抵制AI,而是通过与3000多名校友的深入交流,探索AI对程序员个人和职业发展的影响。结果发现,程序员对AI的接受程度差异巨大,这取决于经验、编程类型和项目规模等因素。RC总结出三点核心建议:在能力边缘工作,保持严谨,并慷慨地学习,鼓励在AI工具使用上保持开放心态,并注重人际交流与合作。最终,RC强调,学习的关键在于主动参与和深刻理解,AI工具应被视为辅助而非替代品,程序员应始终保持自主性和批判性思维。

开发

C语言中的泛型容器:vec实现

2025-07-26

本文介绍了在C语言中实现类型和边界安全的泛型容器“vec”的方法。vec实质上是一个可调整大小的数组,通过`realloc`实现动态增长。文章详细讲解了vec的实现细节,包括`vec_push`函数的实现,以及如何处理内存分配错误。此外,作者还探讨了两种改进的接口:`vec_push_cap`和`vec_push_auto`,以提高性能,并讨论了边界安全性的问题,以及如何通过宏`vec2array`与传统的C数组进行互操作。

开发

Tattoy 终端模拟器支持动画光标

2025-07-26
Tattoy 终端模拟器支持动画光标

Tattoy 终端模拟器现在支持动画光标!它使用了与 Ghostty 相同的格式,通过自定义着色器渲染光标。虽然 Tattoy 使用基于 UTF8 文本的“像素”(“▀”和“▄”)渲染,与 Ghostty 的像素渲染有所不同,可能会损失一些细节,但也能产生令人愉悦的像素化效果。开发过程中,透明抗锯齿边缘的支持是一个挑战,最终通过创建一个终端的像素化版本并进行后处理来解决。目前在大型终端上可能存在一些延迟,未来将通过性能改进和潜在的完全接管光标渲染来优化。

开发 动画光标

MIT 6.001课程:从Scheme到Python的转变

2025-07-26
MIT 6.001课程:从Scheme到Python的转变

麻省理工学院的入门编程课程6.001从Scheme转向Python,这反映了编程范式的转变。80年代,编程注重简洁高效的代码,类似于理解透彻的电子元件。但如今,程序员更多地与庞大复杂的库打交道,需要进行大量的测试和调试才能理解其行为。6.001的改革以机器人为中心,强调系统鲁棒性,而Python的选择可能仅仅是因为其拥有现成的机器人接口库。

开发

Tailwind Plus 推出全新 Elements 库,赋能无 JavaScript 框架的交互式 UI

2025-07-26
Tailwind Plus 推出全新 Elements 库,赋能无 JavaScript 框架的交互式 UI

Tailwind Plus 宣布其所有 UI 模块现在都支持无 JavaScript 框架的交互式体验。这得益于新发布的 @tailwindplus/elements 库,它提供了一套可复用的无头自定义元素,涵盖下拉菜单、命令面板、对话框等功能。这些元素完全兼容 HTML,并可通过实用程序类或自定义 CSS 进行样式定制,极大简化了开发流程,无需再为每个 UI 组件编写复杂的 JavaScript 代码。此更新现已面向所有 Tailwind Plus 用户开放。

Eleventy抛弃Luxon,自研RFC 9557日期解析库

2025-07-26
Eleventy抛弃Luxon,自研RFC 9557日期解析库

为了减小Eleventy在客户端运行时的体积,并为未来原生Temporal API的支持做准备,Eleventy团队决定放弃Luxon日期解析库,转而使用自己开发的RFC 9557兼容的日期解析库。新库体积更小,精度更高,并与Temporal API和Luxon的输出结果保持一致,虽然与Luxon相比存在少量breaking changes,但最终能简化维护并提升性能。

开发

现代 CSS:单页应用的终结者?

2025-07-26
现代 CSS:单页应用的终结者?

本文批判了过度使用单页应用(SPA)的趋势。作者指出,现代浏览器已经具备原生 CSS 过渡动画能力(View Transitions API 和 Speculation Rules),可以实现流畅的页面跳转,无需依赖大量的 JavaScript 代码。SPA 常常带来性能问题,例如缓慢的加载速度、不一致的滚动行为和SEO优化难题。作者建议开发者回归 HTML 和 CSS,充分利用浏览器原生功能,构建更快速、高效、SEO 友好的多页应用(MPA),避免为了追求“应用感”而牺牲性能和可维护性。

开发

Red Bull F1官网性能分析:潜力巨大,但仍有提升空间

2025-07-25
Red Bull F1官网性能分析:潜力巨大,但仍有提升空间

本文是针对F1官网加载性能的系列文章的第三篇,对Red Bull Racing的官网进行了深入分析。尽管Red Bull官网的加载速度已经比2019年版本快得多,但仍存在一些可以优化的地方。文章指出,减少不必要的内联代码、优化图片(特别是使用AVIF格式代替WebP格式)、以及改进图片加载方式等,可以显著提升网站性能。通过这些优化,Red Bull官网的加载速度将得到进一步提升。

Zig 语言标准库文档的 MCP 服务器

2025-07-25
Zig 语言标准库文档的 MCP 服务器

一个名为 zig-mcp 的 Model Context Protocol (MCP) 服务器,提供 Zig 编程语言标准库和内置函数的最新文档。它直接读取标准库源码文件(与 ziglang.org 的官方自动文档类似),但输出 Markdown 而不是 HTML,从而减少了标记数量。支持 Node.js 和 Bun,并提供命令行工具方便版本控制和更新管理,包含手动、每日和启动时三种更新策略。

开发

使用 SQL 查询 Apple 健康数据的 MCP 服务器

2025-07-25
使用 SQL 查询 Apple 健康数据的 MCP 服务器

一个名为`@neiltron/apple-health-mcp`的项目利用DuckDB数据库,通过MCP协议提供了一个用SQL查询Apple Health数据的服务器。它支持自然语言查询、SQL查询执行、自动化报告生成,并具有高效的数据加载、智能缓存等功能。用户需要先使用Simple Health Export CSV app导出Apple Health数据,然后配置MCP客户端指向数据目录即可。该项目开源,并欢迎贡献代码。

开发 Apple Health

tree 命令的 JSON 输出改进与陷阱

2025-07-25
tree 命令的 JSON 输出改进与陷阱

tree 命令的 2.0 版本增加了通过文件描述符 3 输出未缩进 JSON 的功能(目前仅限 Linux)。然而,这一功能的初始实现存在问题,因为它假设了用户环境中存在特定的文件描述符。这导致了严重的兼容性问题,因此在 2.0.2 版本中,该功能被修改为仅在设置环境变量 STDDATA_FD 时才启用。这个故事突出了在软件开发中避免假设用户环境的必要性,同时也展示了 tree 命令如何通过 STDDATA_FD 环境变量灵活地输出结构化数据,并可以用 nushell 进行进一步处理。

vi编辑器规范详解:命令行模式与文本输入模式的深入解读

2025-07-25

本文档详细阐述了vi编辑器的规范,深入探讨了命令模式和文本输入模式下的各种命令及其行为。从初始化到各种光标移动、文本编辑、查找替换等操作,都进行了细致的描述,并对历史实现中的差异和POSIX标准的规定做了对比说明。对于开发人员和vi用户而言,这无疑是一份宝贵的参考指南,帮助理解vi编辑器底层机制和规范细节。

开发 vi编辑器

Kiro:亚马逊的AI驱动开发IDE,改变开发流程

2025-07-25
Kiro:亚马逊的AI驱动开发IDE,改变开发流程

亚马逊社区建设者计划成员抢先体验了其新型AI驱动开发IDE——Kiro。Kiro并非简单的代码补全工具,而是能够理解并执行复杂多步骤项目的“代理IDE”。作者通过构建网站、贡献开源项目以及开发内部工具等案例,展示了Kiro如何显著提升开发效率。Kiro的核心在于“规范驱动开发”,需要开发者前期投入更多时间明确需求和架构,但之后可让Kiro自主执行大部分代码编写工作。虽然Kiro仍存在局限性,例如在处理复杂问题时可能需要人工干预,但这标志着软件开发方式的根本转变:从编写代码转向指导AI。

Modernish:让你的Shell脚本更现代化

2025-07-25
Modernish:让你的Shell脚本更现代化

厌倦了令人头疼的shell脚本编写?Modernish是一个纯shell编写的库,它提供更安全可靠的变量和命令扩展、更强大的循环迭代等特性,让你的shell脚本更现代化、易于维护和移植。它无需安装新的二进制文件,可以直接集成到你的脚本中,适用于各种Unix-like系统。

开发 Modernish

tsbro:浏览器端TypeScript,无需构建工具

2025-07-25
tsbro:浏览器端TypeScript,无需构建工具

tsbro是一个新库,旨在简化浏览器中TypeScript的使用。它绕过浏览器的导入系统,使用同步XHR获取TypeScript代码,用swc wasm编译成JavaScript,并将其转换为CJS以支持同步require。这样,开发者无需构建步骤即可在浏览器中直接运行TypeScript代码,并使用例如Preact等外部库,非常适合快速原型开发或PoC。目前,tsbro的不足之处在于堆栈跟踪难以阅读,以及需要手动创建环境声明文件。

开发 swc
1 2 35 36 37 39 41 42 43 213 214