分类: 开发

AI评估的常见问题与解答:来自700多名工程师和产品经理的经验总结

2025-07-03
AI评估的常见问题与解答:来自700多名工程师和产品经理的经验总结

本文总结了作者在教授700多名工程师和产品经理AI评估课程中遇到的常见问题。文章涵盖了RAG是否已死、模型选择、标注工具、评估方法、合成数据生成、以及评估工具的不足等方面。作者强调了错误分析的重要性,建议使用二元评估而非李克特量表,并分享了构建自定义标注工具、选择合适的文档块大小以及评估RAG系统的最佳实践。此外,文章还讨论了护栏与评估器的区别、最小可行评估设置、代理工作流程的评估方法以及CI/CD与生产监控中评估的不同之处。

开发 错误分析

JavaScript 函数声明的三个选择:函数声明、函数表达式和箭头函数

2025-07-03
JavaScript 函数声明的三个选择:函数声明、函数表达式和箭头函数

本文深入探讨了 JavaScript 中三种函数声明方式:函数声明、函数表达式和箭头函数的差异和适用场景。函数声明具有提升特性;函数表达式可以命名,但其名称不会绑定到作用域;箭头函数简洁,但缺乏`this`绑定、构造函数功能和生成器功能。选择哪种函数声明取决于是否使用`this`关键字、是否需要生成器功能以及代码可读性等因素。文章最后提供了一个流程图,帮助开发者根据具体情况选择合适的函数声明方式。

开发

AI时代程序员的未来:焦虑与希望并存

2025-07-03
AI时代程序员的未来:焦虑与希望并存

一位年轻程序员的焦虑引发了对AI时代程序员职业前景的思考。作者以自身28年科技行业经验,回应了AI带来的冲击和失业焦虑。他认为AI并非取代程序员,而是成为辅助工具,让人们专注于创造性工作。未来程序员需要成为“上下文大师”,善于引导AI,并持续学习,避免思维惰性。程序员的价值在于解决问题、批判性思维和运用人类独有的创造力,这些是AI无法取代的。

开发

大型语言模型:代码生成提速,但理解代码依然是瓶颈

2025-07-03
大型语言模型:代码生成提速,但理解代码依然是瓶颈

大型语言模型(LLM)的出现使得代码生成速度大幅提升,然而,这并没有解决软件工程中的真正瓶颈:代码审查、知识转移、测试、调试以及团队协作。文章指出,LLM降低了编写代码的成本,但理解、测试和信任代码的成本却更高了。LLM生成的代码可能难以理解、违反既有规范或引入意想不到的副作用,这反而增加了审查和维护的难度。最终,软件工程仍然依赖于团队间的信任、共享上下文和细致的代码审查,这些才是提升效率的关键。

开发

LLM 编译器:代码生成的未来?

2025-07-03

作者设想了一种新的软件开发模式:将大型语言模型(LLM)作为编译器。不再直接编写代码,而是向LLM提供上下文(需求、测试用例等),LLM 迭代生成代码并自动集成,工程师只需关注上下文和测试结果。这将降低开发门槛,提高开发效率,并可能彻底改变软件工程。虽然LLM 的输出并非完全可预测,但通过测试和迭代可以保证其可靠性。这种模式的核心是将代码视为中间层,最终目标是交付功能而非完美代码。

开发

Go缓存库的演变:从Ristretto到Otter v2

2025-07-03

本文探讨了Go语言缓存库的演变历程。早期Go缓存库普遍存在并发性和性能瓶颈。Ristretto出现后,凭借其高吞吐量和良好的命中率一度成为主流,但其设计缺陷逐渐暴露,导致命中率下降,并且在特定负载下表现不佳。Theine和Otter v1随后出现,试图改进Ristretto的不足,但各有优缺点。最终,作者开发了Otter v2,它吸收了前代的经验教训,并借鉴了Java的Caffeine库,实现了高吞吐量、高命中率以及丰富的功能,成为目前Go语言缓存库的佼佼者。

神秘的Higgs-Bugson:一个关于NFS和Kerberos的内核级Bug追踪

2025-07-03
神秘的Higgs-Bugson:一个关于NFS和Kerberos的内核级Bug追踪

工程师们遭遇了一个难以重现的bug,它导致关键的交易数据系统Gord出现文件复制失败(-EACCES)。禁用Kerberos后,问题消失,指向身份验证问题。调查发现,内核通过rpc_gssd守护进程获取Kerberos凭据,但日志没有异常。经过长时间的测试,包括编写一个内存内伪文件系统和使用bpftrace进行内核跟踪,最终定位到问题:由于NFS服务器负载过高导致的请求重传,内核在处理带有相同XID但不同GSS序列号的请求和响应时,出现校验和不匹配,从而导致错误。工程师修复了内核,避免了因序列号不匹配导致的立即重传。

D语言的十个令人惊艳的特性

2025-07-03

本文以初学者友好的方式,介绍了D编程语言的十个令人着迷的特性。从提升开发效率的小技巧到影响深远的主要特性,例如自动构造函数、契约式设计、编译时函数执行(CTFE)以及内置单元测试等,文章都进行了清晰的阐述。D语言强大的元编程能力也得到了重点提及,其灵活性和建模能力在静态编译语言中鲜有匹敌。文章还涵盖了D语言的一些独特的语法特性,例如美元运算符、括号省略以及统一函数调用语法(UFCS),这些特性极大地提高了代码的可读性和效率。此外,D语言还支持作用域和选择性导入,以及内置的文档生成器,进一步提升了代码的可维护性和可读性。总而言之,D语言以其独特而强大的特性组合,为开发者提供了高效且便捷的编程体验。

开发

别再构建AI智能体了!

2025-07-03
别再构建AI智能体了!

本文作者Hugo,一位指导Netflix、Meta和美国空军等团队构建大型语言模型(LLM)系统的专家,指出许多团队在构建LLM系统时过早地转向构建AI智能体,导致系统复杂且难以调试。他认为,在大多数情况下,更简单的流程,例如链式调用、并行处理、路由和协调器-工作器模式,比复杂的AI智能体更有效。只有在需要记忆、委托和规划的动态工作流程中,AI智能体才是合适的工具。作者还分享了五个LLM工作流程模式,并强调了构建可观察且易于控制的系统的必要性。

Gmailtail: 命令行Gmail监控工具

2025-07-03
Gmailtail: 命令行Gmail监控工具

Gmailtail是一个命令行工具,用于实时监控Gmail邮箱,并将邮件信息输出为JSON格式。它支持灵活的过滤条件(发件人、主题、标签、附件等)、多种输出格式(JSON、JSON Lines、紧凑格式)、OAuth2和服务账户认证,以及断点续传等功能。用户可通过简单的命令行参数或YAML配置文件自定义监控规则,方便自动化、监控和与其他工具集成。

开发

巧妙的异或:解开那些看似棘手的面试题

2025-07-03

本文揭秘了利用位运算符XOR解决一系列常见面试题的技巧。XOR运算具有独特的性质:相同数字异或结果为0,不同数字异或结果为1,且运算顺序不影响结果。利用这些性质,可以巧妙地找出数组中缺失的数字、重复的数字,甚至两个缺失或重复的数字,而无需使用复杂的算法或数据结构。文章以循序渐进的方式讲解了XOR技巧的应用,并提供了相应的代码示例,为读者提供了一种高效且简洁的解题思路。

开发

Rails:开源的奇迹与对一代框架的影响

2025-07-02
Rails:开源的奇迹与对一代框架的影响

Ruby on Rails凭借MIT开源许可证,自由灵活的设计以及强大的社区支持,在2004年横空出世,彻底改变了Web框架的格局。其“约定优于配置”的理念,ActiveRecord ORM,以及强大的脚手架工具,极大地提升了开发效率,并深刻影响了后来的Laravel、Django和Phoenix等框架。Rails的成功证明了开源软件不仅可以与商业软件竞争,甚至可以超越它们,其开源模式也为其他框架树立了典范,并持续推动着Web开发的进步。

开发

IntyBASIC:为Intellivision打造的BASIC编译器,重燃复古游戏开发热情

2025-07-02
IntyBASIC:为Intellivision打造的BASIC编译器,重燃复古游戏开发热情

受到为Intellivision开发游戏的启发,作者于2013年10月开始开发IntyBASIC,一款针对Intellivision的BASIC编译器。该编译器将BASIC源代码转换为CP1610汇编代码,并支持Intellivision的视频和声音功能。IntyBASIC的成功催生了大量新的Intellivision游戏和自制游戏,甚至举办了编程大赛。作者还撰写了两本相关书籍,分享游戏开发经验和技巧,涵盖从基础到高级的编程技术,并附带完整的游戏源代码。

开发 Intellivision

可视化聊天机器人对话流编辑器

2025-07-02
可视化聊天机器人对话流编辑器

一款基于浏览器的可视化工具,用于创建和编辑聊天机器人的对话流程。你可以用它设计、测试和导出为JSON格式的对话流。该工具支持添加节点、编辑内容、测试流程、导入导出JSON文件等功能,最终导出的JSON文件可用于任何聊天机器人应用中。安装方式有三种:作为开发依赖安装、添加到项目脚本或全局安装。

开发 对话流

别再说“点击这里”了!——更有效的链接文本撰写指南

2025-07-02

W3C 发布了一份关于如何撰写更有效链接文本的指南。指南指出,避免使用“点击这里”等机械性语句,而应使用简洁明了、语义丰富的文本,例如直接点明链接内容,而非操作步骤。文章还介绍了 W3C QA Tips 项目,这是一个提供 Web 开发者和设计师实用技巧的资源,包含如何提交自己的技巧和技巧索引。

开发 链接文本

跨平台AmigaE编程语言Portabl E发布

2025-07-02

Portabl E是AmigaE编程语言的跨平台重制版,它在原版基础上进行了诸多改进。最新版本r6b已发布,支持AmigaOS4、AROS、MorphOS,并提供对AmigaOS3、Linux和Windows的基本支持。下载需输入用户名“user”和密码“password”。该项目还提供示例代码、截图、预编译程序以及文档、论坛和邮件列表等资源,方便开发者学习和交流。

开发 AmigaE

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

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

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

开发

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

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

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

开发

构建个人AI代码工厂:修复输入而非输出

2025-07-02
构建个人AI代码工厂:修复输入而非输出

作者描述了其构建个人AI代码工厂的经验,该工厂利用Claude、o3、Sonnet等AI模型协同工作。核心思想是“修复输入而非输出”:遇到问题不直接修改代码,而是调整计划、提示词或代理组合。工厂通过计划(o3生成)、执行(Sonnet执行)、验证(o3和Sonnet验证)三个步骤迭代改进,并利用Git worktree实现并行开发。作者还分享了扩展工厂的方法,例如构建特定任务的代理、统一代码风格等,最终目标是构建一个能自主生成、验证和改进代码的AI系统。

开发

Spegel:用LLM重写网页的终端浏览器

2025-07-02
Spegel:用LLM重写网页的终端浏览器

Spegel是一个概念验证项目,它是一个终端浏览器,能够将HTML网页内容通过大型语言模型(LLM)处理,并以Markdown格式直接在终端渲染。开发者利用周末时间完成,并借助Gemini 2.5 Pro Lite的快速推理能力提升了实用性。Spegel允许用户自定义提示词,个性化地浏览网页内容,例如提取食谱的关键信息。它虽然不支持POST请求,但通过处理提示词和视图,提供了更简洁、更符合用户需求的浏览体验。

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

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

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

开发

使用LSP服务器实现代码编辑器与GUI的实时双向编辑

2025-07-02
使用LSP服务器实现代码编辑器与GUI的实时双向编辑

一位程序员利用LSP服务器构建了一个小型概念验证系统,实现了现代代码编辑器与GUI之间的实时双向编辑。该系统允许用户在代码编辑器中修改代码,GUI界面实时更新;反之亦然。这解决了现有代码CAD系统中实时更新和兼容自定义编辑器的问题,为代码CAD领域带来了新的可能性。虽然该项目目前仅为概念验证,但它展示了LSP服务器在构建更强大的代码CAD系统方面的潜力。

Claude用汇编语言绘制分形图

2025-07-02
Claude用汇编语言绘制分形图

作者突发奇想,让Claude AI生成一段x86汇编代码,绘制曼德勃罗集分形图。最初生成的代码无法编译运行,作者利用Claude Code,通过迭代式的调试和修改,最终成功在Docker容器中编译并运行代码,生成了令人满意的ASCII艺术分形图。整个过程展现了Claude Code强大的代码理解和调试能力。

开发

Discord机器人:拯救友谊的线上聚会神器

2025-07-01

2022年,朋友们散落在世界各地,疫情期间,为了保持联系,他们尝试各种方法。最初的Signal群聊因信息过多而混乱不堪,难以协调游戏时间。作者于是开发了一个Discord机器人,当有人加入语音频道时,机器人会在文本频道发送通知。这个简单的机器人不仅解决了信息混乱的问题,还意外地促进了朋友间的日常交流,成为他们线上聚会的“信号灯”。如今,他们几乎每天都在Discord上聊天,甚至举办年度“Discord Wrapped”活动,分享数据和回忆。

开发 线上聚会

抽象边界即优化边界:提升抽象层级以优化数据库查询

2025-07-01
抽象边界即优化边界:提升抽象层级以优化数据库查询

N+1查询问题源于应用代码针对集合中的每个元素发送一个SQL查询。文章提出,通过提升抽象边界,而非降低,可以解决此问题。例如,将ORM集成到语言中,就能制定重写规则,将N个查询合并成一个。这与Haskell使用重写规则优化列表操作类似,因为Haskell的声明式特性使底层操作语义对程序员透明,便于优化。因此,提升抽象边界也提升了优化边界。

不止一次的发现:Prolly Trees 的多次独立发明

2025-07-01
不止一次的发现:Prolly Trees 的多次独立发明

Prolly Trees 这种数据结构并非单一团队的发明,而是至少四次独立发现的典型案例。从 2009 年 Avery Pennarun 在 bup 项目中的应用,到 2015 年 Noms 的正式命名,再到 2019 年 Inria 的 Merkle Search Trees 和 2020 年 DePaul 大学的 Content-Defined Merkle Trees,都展现了相同的数据结构在不同场景下的独立诞生。这体现了科学发现中“多重发现”的普遍性,也揭示了技术发展中“需求驱动”的重要性。文章作者,DoltHub 团队,以自身在 Prolly Trees 应用上的经验,探讨了这一现象及其对未来技术发展的影响。

开发 Prolly Trees

YouTube翻译拦截器开源项目

2025-07-01
YouTube翻译拦截器开源项目

这是一个开源的YouTube附加组件,可以阻止YouTube自动翻译视频。它确保视频标题和描述保持原文,并将音频轨道默认设置为原版,提供真实的观看体验。该插件支持保留视频标题原文、使用原声轨道(包括短视频)、阻止描述翻译以及选择字幕语言(如果不可用则自动禁用字幕,始终忽略自动生成的字幕)。

开发

Pluto:Lua 的增强版编程语言

2025-07-01
Pluto:Lua 的增强版编程语言

Pluto 是一种增强型的 Lua 方言,专注于通用编程。它拥有更快的开发速度,扩展的标准库,并引入了 switch 语句、复合运算符、三元表达式等新语法。虽然与 Lua 5.4 兼容,但新关键字可能与现有标识符冲突,此时可以使用兼容模式。Pluto 可执行 Lua 字节码,大多数 Pluto 特性生成的字节码与 Lua 兼容。其详细文档、工具和改进内容均可在开源网站上找到,用户可在浏览器中使用交互式游乐场或下载预编译二进制文件。

开发

Rust CLI 工具开发:利用类型系统提升命令行界面的优雅性

2025-07-01
Rust CLI 工具开发:利用类型系统提升命令行界面的优雅性

本文探讨了在 Rust 中使用 clap 库构建命令行界面 (CLI) 的最佳实践。作者倡导利用 Rust 的类型系统来定义 CLI 接口,而不是使用传统的基于字符串解析的方法。这种类型驱动的方法具有诸多优势:提高代码可维护性和可读性,减少测试工作量并支持更完善的单元测试,以及更方便地进行语义化版本控制。文章详细介绍了 clap 的 derive 特性和 env 特性,并通过具体的示例展示了如何使用类型定义命令行参数和环境变量,最终构建出更健壮、更易于维护的 CLI 工具。

开发
1 2 48 49 50 52 54 55 56 213 214