分类: 开发

告别两周冲刺:探索ShapeUp、Plan>Build>Ship和GSD等高效产品开发方法

2025-02-16
告别两周冲刺:探索ShapeUp、Plan>Build>Ship和GSD等高效产品开发方法

厌倦了传统的Scrum两周冲刺?本文介绍了三种替代方案:ShapeUp、Plan>Build>Ship和GSD。ShapeUp强调6周开发周期,先进行充分的“Shaping”阶段,再进行“Betting table”决策,最后进入“Building”阶段,避免了短周期冲刺的仓促感。Plan>Build>Ship则是一种简化的瀑布模型,每个功能由特定团队负责,从规划到交付。GSD(Get Shit Done)由Shopify推广,强调高效执行,通过内部工具Vault跟踪项目进度,关注项目而非任务,促进团队协作。这三种方法各有特点,为产品团队提供了更多选择,帮助他们找到最适合自身情况的开发流程。

开发

在Qubes OS上实现GPU直通游戏:一个充满挑战的冒险

2025-02-15
在Qubes OS上实现GPU直通游戏:一个充满挑战的冒险

这篇指南详细介绍了如何在Qubes OS虚拟机管理器中实现GPU直通以进行游戏。过程复杂,需要对Linux系统、GRUB、IOMMU、以及Xen虚拟化技术有深入的了解。文章涵盖了硬件准备、IOMMU组的识别、GRUB配置修改以隐藏GPU、解决`max-ram-below-4g`参数问题、以及在虚拟机中安装和配置GPU驱动等步骤。对于Nvidia显卡,建议使用`nvidia-open`驱动。文章还讨论了Linux和Windows虚拟机的配置差异,以及使用VirtualGL和Vulkan解决潜在问题的方案。最后,文章还提供了自动化脚本,并列举了常见问题和解决方案。整个过程如同一个充满挑战的冒险,需要玩家付出大量的耐心和时间来调试和解决各种问题。

开发 GPU直通

开源媒体服务器Jellyfin:免费、隐私优先、社区驱动

2025-02-15
开源媒体服务器Jellyfin:免费、隐私优先、社区驱动

Jellyfin是一个完全开源的媒体服务器软件,基于GNU GPL许可证,这意味着你可以免费使用、学习、修改、构建和分发它。该项目完全依赖志愿者的贡献,无需任何费用,并且没有追踪、远程服务器或中央服务器收集你的数据,完全尊重你的隐私。Jellyfin的服务器和官方客户端永久免费下载,所有运营成本都依靠用户捐赠维持。

开发

3DBenchy模型进入公共领域

2025-02-15
3DBenchy模型进入公共领域

广受欢迎的3D打印模型3DBenchy已正式进入公共领域!此前,由于第三方报告导致Prusa Printables网站删除了所有衍生模型,引发争议。如今,版权所有者NTI集团与原作者Daniel Norée和前Creative Tools CEO Paulo Kiefe合作,将3DBenchy及其相关网站置于公共领域,用户可以自由下载和修改。此举弥补了之前的授权混乱,也避免了更多不必要的纠纷,为3D打印社区带来了好消息。

开发

AI 将如何颠覆软件工程?

2025-02-15

大型语言模型(LLM)正快速提升代码编写能力,引发了对纯AI软件工程师的探索。短期内,软件工程师应学习AI技术、提升自身地位并利用AI工具。中期来看,精通大型遗留代码库的维护和改进将成为更有价值的技能,因为LLM在处理复杂的、难以验证的、代码量庞大的项目上仍有局限性。长期而言,软件工程师的核心竞争力将转变为责任感和可信度,这是LLM难以具备的素质。最终,那些能够对AI系统进行监管和保证其输出结果可靠性的工程师将成为最后的堡垒。

开发

Firefox 音频白噪声:网站滥用 AudioContext 导致 CPU 和电池损耗

2025-02-15

作者发现 Firefox 浏览器中某些网站会产生恼人的音频白噪声,并导致 CPU 和电池过度消耗。经排查,罪魁祸首是网站滥用 WebAudio API 中的 AudioContext 对象。即使没有播放音频,许多网站也会创建并保持 AudioContext 处于活动状态,导致持续的资源浪费。Chrome 浏览器会自动暂停无用 AudioContext,但 Firefox 则不会,这使得作者不得不开发一个浏览器扩展来解决这个问题。该扩展自动暂停 AudioContext 并尝试在需要播放音频时恢复,从而节省了资源。

单元测试的真相:打破教条,拥抱更灵活的测试策略

2025-02-15

传统单元测试方法论常常陷入教条,导致大量无效测试和时间浪费。本文挑战了“单元”的概念,主张从用户视角出发,编写集成测试和端到端测试,而非死板地为每个类或方法编写单元测试。作者建议减少对代码隔离和mock的依赖,利用真实数据库和Docker等工具,提高测试效率和意义。同时,文章强调测试驱动开发(TDD)并非万能,软件架构设计应优先考虑非功能性需求。最终,作者指出,选择测试策略的关键在于权衡质量保证、重构能力和反馈速度。

开发

告别浏览器调试器:Swift 和 Xcode 开发体验

2025-02-15
告别浏览器调试器:Swift 和 Xcode 开发体验

作者尝试使用Swift和Xcode开发iOS应用,体验了与Web开发截然不同的流程。他发现Xcode虽然功能强大,但缺少像浏览器开发者工具那样方便易用的调试和原型设计能力。Swift和Xcode的整合度很高,但学习曲线陡峭,缺乏清晰的指引,使得开发过程充满挑战。作者对比了Swift和Web框架的优缺点,例如Swift的简洁性和缺乏HTML的默认样式,以及动画方面Swift的优势。最终,作者表达了对独立开发的热爱,认为这让他能够专注于创造力和学习,远离公司项目中常见的繁文缛节和无意义的会议。

开发

Upspin项目关闭:社区规模不足以支撑持续发展

2025-02-15

Upspin项目,一个旨在促进数据共享的分布式存储系统,由于社区规模不足,其核心基础设施——密钥服务器将于5月6日永久关闭。尽管Upspin在端到端加密和易用性方面表现出色,并拥有诸多改进提案,但维护成本与社区活跃度不成比例。开发者团队感谢所有参与者的贡献,并表示未来会考虑其他方案。

Schemesh:Lisp与Unix Shell的完美融合

2025-02-15
Schemesh:Lisp与Unix Shell的完美融合

Schemesh是一个交互式Shell,可以使用Lisp进行脚本编写。它旨在替代bash、zsh等传统Unix Shell,提供用户友好的交互式行编辑、自动补全和历史记录等功能。同时,它无缝集成了Chez Scheme驱动的完整Lisp REPL,方便用户处理复杂任务。Schemesh允许用户在Shell语法和Lisp语法之间无缝切换,并提供丰富的函数来管理Unix进程。对于复杂的脚本和编程任务,它用功能强大的Lisp REPL取代了传统Shell脚本语言,极大提高了效率和可靠性。

开发

Jill:Nand2Tetris平台上的全新函数式编程语言

2025-02-15
Jill:Nand2Tetris平台上的全新函数式编程语言

Jill 是一种为 Nand2Tetris 平台设计的函数式编程语言,作为原 Jack 高级语言的替代品。它与 Jack 使用相同的虚拟机指令集和底层 HACK 架构,并遵循类似的设计原则(牺牲易用性以换取易于实现),同时提供 Jack 面向对象、冗长风格的替代方案。Jill 的特性包括:一等函数、优化的尾递归、代数数据类型和模式匹配。它具有简洁的设计,只有类型、变量和函数三个主要概念。编译后,项目生成的 .vm 文件将位于 /bin 目录中。可以使用 `cargo run -- path_to_jill_project_root` 或 `jillc [path_to_jill_project_root]` 命令编译 Jill 代码。

开发 Nand2Tetris

激励胜于教育:解决代码质量问题的关键

2025-02-15
激励胜于教育:解决代码质量问题的关键

谷歌曾尝试通过食物颜色编码来引导员工健康饮食,却忽略了压力和时间等因素的影响。类似地,解决代码质量问题不能只关注教育工程师代码规范,而应关注激励机制。工程师写出糟糕代码并非因为缺乏知识,而是因为时间压力、任务繁重等因素导致他们选择快速完成任务而非追求高质量。因此,提升代码质量的关键在于改善工作环境、给予充足时间,并建立合理的激励机制,而非单纯地强调知识教育。

开发 激励机制

Darcs:友好的版本控制系统入门指南

2025-02-15

这是一本Darcs版本控制系统入门指南,通过简洁的例子讲解了Darcs的方方面面,包括安装、本地操作、创建仓库、处理更改、查看历史记录、冲突管理、分支、重写历史等。适合初学者快速上手,成为日常版本控制利器。

开发 Darcs

Synergetica:端到端基因电路设计桌面应用

2025-02-15
Synergetica:端到端基因电路设计桌面应用

Synergetica 是一款强大的基因电路设计桌面应用程序,提供端到端的流程,允许用户在一个平台上设计电路、运行模拟和生成 DNA 序列。它支持基于节点或代码的界面进行基因电路设计,交互式模拟蛋白质表达水平,并根据模拟确定的参数生成 DNA 序列。用户可以自定义电路,添加符合其需求的基因部件,并且可以在完全离线的情况下工作,确保完全的控制和隐私。

FlakeHub 提升 Nix 部署效率:无需评估即可获取存储路径

2025-02-15
FlakeHub 提升 Nix 部署效率:无需评估即可获取存储路径

Nix 的强大构建能力依赖于对存储路径的评估,这在资源受限的设备上代价高昂。FlakeHub 推出了“已解析存储路径”功能,允许用户无需使用 Nix 即可获取存储路径,并直接从 FlakeHub 缓存中提取,从而显著提升 NixOS、Home Manager 和 nix-darwin 配置的部署效率。通过 `fh` 命令行工具,用户可以轻松解析存储路径并应用配置,尤其在云环境和资源受限设备上优势明显。此功能与 FlakeHub 缓存配合使用,付费用户可享用私有 flakes 等高级功能。

开发

Rust 的所有权系统:避免内存错误的关键

2025-02-15
Rust 的所有权系统:避免内存错误的关键

Rust 通过其所有权系统和 RAII(资源获取即初始化)原则,在编译时防止内存管理错误。每个值只有一个所有者,所有权可在变量间转移,但同一时刻不能在多个位置可变地引用同一对象。代码示例展示了所有权转移机制:变量 `a` 的所有权转移给 `_b` 后,再次访问 `a` 会导致编译错误,确保了内存安全。这与传统的垃圾回收机制不同,Rust 通过编译时检查来保证内存安全,从而提高了程序的性能和可靠性。

开发

Linux内核维护者辞职:因“我们才是那道防线”言论

2025-02-15

Linux内核维护者Karol Herbst因对社区内“我们才是那道防线”(thin blue line)言论无法容忍而辞职。他认为这番话缺乏包容性,尤其在美国当前的政治环境下更是如此,并认为维护者应该为其言论负责。Herbst强调了他对开源社区包容性和尊重的坚定信念,并表示自己因维护工作的压力和倦怠而选择离开。

Kreuzberg:一款强大的本地文档文本提取Python库

2025-02-15
Kreuzberg:一款强大的本地文档文本提取Python库

Kreuzberg是一个强大的Python库,用于从各种文档中提取文本。它提供了一个统一的异步接口,支持PDF、图像、办公文档等多种格式。该库注重本地处理,无需依赖外部API或云服务,资源效率高,依赖项少,并支持批量处理。Kreuzberg还具有智能的PDF文本提取方法,先尝试直接提取文本,如果失败则自动回退到OCR。它提供了全面的错误处理和丰富的功能,例如异步/同步API、元数据提取和并发处理。

开发 文本提取

VS Code AI 调试扩展:LLM Debugger

2025-02-15
VS Code AI 调试扩展:LLM Debugger

LLM Debugger 是一款 VS Code 扩展,它利用大型语言模型 (LLM) 实现程序的主动调试。不同于传统仅分析静态代码的 LLM 调试方法,LLM Debugger 提供实时运行时上下文,包括变量值、函数行为、分支决策等,从而帮助 LLM 更快更准确地诊断错误。该扩展还能通过运行代码并捕获执行细节来生成合成数据,提供对程序行为的独特见解。它集成了实时调试信息、自动断点管理、运行时检查和调试操作等功能,并提供一个侧边栏面板显示 AI 调试会话的状态和 LLM 的建议。LLM Debugger 虽然是一个研究实验,但展示了结合实时调试数据和 LLM 功能如何彻底改变传统调试实践的潜力。

开发 AI 调试

Rust编写的高性能Ping工具Nping:实时可视化网络延迟

2025-02-15
Rust编写的高性能Ping工具Nping:实时可视化网络延迟

Nping是一款用Rust编写的强大Ping工具,它支持并发Ping多个地址,并提供实时数据更新和可视化图表显示。Nping不仅能显示最大、最小、平均延迟以及丢包率等关键指标,还支持IPv4和IPv6,以及根据平均延迟对多个地址的结果进行排序。此外,它还具有主机子命令,可以显示域名对应的IP地址详细信息,并支持自定义Ping次数和间隔。无论是网络管理员还是开发者,Nping都是一款提升网络诊断效率的利器。

开发 Ping

Create React App 进入维护模式,官方推荐使用框架

2025-02-15
Create React App 进入维护模式,官方推荐使用框架

React团队宣布Create React App (CRA) 进入维护模式,不再推荐用于新项目。CRA 曾简化了React应用的创建,但其在构建高性能生产应用方面存在局限性,例如缺乏内置的路由、数据获取和代码分割方案。官方建议开发者迁移到成熟的React框架,例如Next.js或React Router,这些框架提供了更好的性能和开发体验,并解决了CRA的许多痛点。对于现有CRA项目,官方提供了迁移指南。同时,官方也提供了使用Vite或Parcel构建自定义React应用的文档,方便有特殊需求的开发者。

Linux内核开发者Con Kolivas退出开源:桌面Linux的困境

2025-02-15

知名Linux内核开发者Con Kolivas,同时也是一名麻醉师,近日宣布退出Linux内核开发。他长期致力于提升Linux桌面性能,其补丁集对内核发展影响深远。然而,在这次采访中,他深入探讨了硬件和软件市场现状、Linux内核在桌面领域面临的挑战,以及促使他离开的原因。他的观点对于Linux用户和Windows用户都具有启发意义,揭示了Linux桌面系统发展道路上依然存在诸多挑战。

开发

Emacs Org Mode 的清单自动化:告别脚本,拥抱高效

2025-02-15

作者分享了他使用 Emacs Org Mode 和 org-checklist.el 插件管理重复性工作流程的经验。他更喜欢使用带复选框的清单而不是自动化脚本,因为清单更灵活,易于更新。org-checklist.el 插件能自动重置清单中的复选框,并记录执行时间,配合 Git 版本控制,实现高效的重复性任务管理,避免了冗余数据。

开发

用LLM和Google Places API探索科罗拉多斯普林斯最佳餐厅

2025-02-15
用LLM和Google Places API探索科罗拉多斯普林斯最佳餐厅

作者利用大型语言模型(LLM)和Google Places API,收集并分析了科罗拉多斯普林斯15公里范围内餐厅的数据,最终创建了一个排名列表。过程中,他克服了API注册的繁琐步骤和数据清洗的挑战,并尝试了不同的排名算法,最终选择了Wilson Score Interval方法。最终结果不仅提供了餐厅排名,还生成了餐厅位置的热力图,展现了科罗拉多斯普林斯美食的分布情况。

非密码学哈希函数:设计与评估

2025-02-15

本文深入探讨了非密码学哈希函数的设计和评估。作者通过分析FNV-1a、FNV-1、Murmur2和DJBX33A等常用函数在不同数据集(包含姓名、单词、IP地址和特意设计的偏置数据集)上的表现,揭示了哈希函数的均匀性、碰撞率和雪崩效应等关键特性。实验结果显示,Murmur2在雪崩效应方面表现出色,但其在均匀性方面并非总是最佳。文章强调了选择合适的哈希函数需考虑数据集特性,并对现有评估标准提出了质疑,认为单一的标准(如雪崩效应)不足以全面评估非密码学哈希函数的性能。

开发

AI辅助编程:效率提升与招聘难题

2025-02-15

作者分享了使用AI辅助编程的经验,提升了开发效率,并反思了当前软件工程师招聘的弊端。通过AI工具,作者完成了更复杂的代码,提高了代码质量,并减少了繁琐工作。然而,作者也指出,一些公司在面试中禁止使用AI,这忽略了工程师的系统性思维能力。作者认为,招聘应更注重工程师解决问题的能力和想象力,而非简单的代码记忆和检索能力。文章还讨论了在不同数据库中选择主键作为唯一标识符的策略,以及如何平衡开发效率和数据完整性。

开发

LLM代码生成闭环:未来程序员的生存之道?

2025-02-15
LLM代码生成闭环:未来程序员的生存之道?

Cursor等LLM驱动的开发工具的成功率只有40%,但这并不意味着它们没有未来。作者通过自身的经验,以及对Semgrep等代码安全工具的分析,阐述了LLM代码生成闭环的巨大潜力。这种闭环系统能够让LLM自行调试代码、生成单元测试,甚至编写Semgrep规则来检测漏洞。这将大大提高开发效率,并改变我们编写代码的方式,未来程序员或许需要掌握如何驾驭这些强大的模型。

(fly.io)
开发

VimLM:Vim编辑器中的本地LLM编码助手

2025-02-15
VimLM:Vim编辑器中的本地LLM编码助手

VimLM是一款基于本地LLM模型的Vim编码助手,类似于GitHub Copilot。它将上下文代码理解、总结和AI辅助集成到Vim工作流程中。支持多种MLX兼容模型,具有Vim原生用户体验,并支持离线运行,保证安全性。用户可以通过简单的快捷键与模型交互,进行代码转换、生成、总结等操作,并能处理复杂的上下文信息,包括当前文件、选定代码块、引用文件和项目目录结构。

开发 编码助手

Yash:一款追求极致POSIX兼容性的全新Shell

2025-02-15
Yash:一款追求极致POSIX兼容性的全新Shell

Yash是一个用C99编写的、追求极致POSIX兼容性的命令行Shell。它支持全局别名、数组、多种重定向方式、括号扩展、扩展通配符、分数运算等特性,并提供命令补全、命令预测等实用功能。Yash在GitHub上维护,已达到POSIX.1-2008标准的绝大部分要求,并定期发布维护更新。它可以在多种POSIX环境下编译运行,目前主要在Fedora、macOS和Cygwin上测试。安装后,用户可以通过配置文件自定义环境变量、别名、提示符等。

开发

Idris 中安全高效的 printf 实现

2025-02-14

本文介绍了如何在 Idris 语言中,利用依赖类型系统实现一个安全且高效的 printf 函数,无需借助不安全的宏或变长参数。作者通过巧妙地运用类型级编程,将格式字符串解析成数据结构,再根据数据结构动态生成函数类型签名,从而实现了类似 C 语言 printf 的功能,同时保证了内存安全和类型安全。文章还探讨了如何处理运行时格式字符串,并指出了该实现的一些不足之处,例如错误信息不够清晰等,预示着后续改进的方向。

1 2 159 160 161 163 165 166 167 213 214