分类: 开发

大型语言模型的编程语言选择:Ruby的意外崛起?

2025-03-22

大型语言模型(LLM)在代码生成方面表现出色,但其上下文窗口的限制使其难以处理大型代码库。文章探讨了LLM辅助编程的“效能”:用多少token表达一个程序。作者认为,Python比Go更适合LLM,因为其更简洁,能容纳更多功能在token限制内。 进一步推测,Ruby,以其简洁优雅著称,可能是LLM的理想语言,因为它能用更少的token表达更多功能。 尽管存在一些问题,如缺乏类型检查,但Ruby的“以人为本”设计使其成为LLM的潜在最佳选择,这颇具讽刺意味。

开发

GitHub代码建议应用限制

2025-03-22
GitHub代码建议应用限制

这篇文字列举了GitHub代码审查中,应用代码建议时可能遇到的各种限制,例如:代码无改动、Pull Request关闭或已合并、只查看部分改动、单行只能应用一个建议、应用已删除行建议不支持、建议已被应用或标记为已解决、来自待处理审核的建议无法应用、多行注释上的建议无法应用等。这些限制确保了代码审查过程的完整性和准确性。

开发

别害怕创建新类型:Go 和 C 的编程文化

2025-03-22

在软件开发中,许多程序员对创建新类型存在抵触心理。作者认为,这种现象源于对代码库“宏伟设计”的畏惧,以及对增加新概念的担忧。然而,作者指出,如果一系列值自然地组合在一起,那么创建新类型是提高代码可读性和可维护性的有效方法。作者以Go语言为例,说明了创建小型、专用类型(例如`CreateSubscriptionRequest`结构体)的益处,它可以简化数据在函数调用链中的传递。作者鼓励程序员克服对创建新类型的恐惧,并强调在C和Go的文化中,这种做法是普遍接受的,只要类型名称清晰地表明其用途即可。

开发

中心化授权系统:下一个IT共享平台?

2025-03-22
中心化授权系统:下一个IT共享平台?

本文探讨了中心化授权系统的优势和挑战。传统上,授权分散在各个应用中,效率低下且难以管理。中心化授权系统能带来标准化、降低成本和加强合规性等好处,但需要解决表达能力、性能、隔离性和集成性等难题。文章介绍了如何使用像Topaz和Aserto这样的开源和商业平台来克服这些挑战,最终实现一个高效、安全且易于管理的企业级授权系统。

在脚本中使用长选项

2025-03-22

许多命令行工具都支持短选项(-f)和长选项(--force)。短选项适用于交互式使用,而长选项更适合在脚本中使用。长选项更易于阅读和理解,提高了脚本的可维护性和可读性。例如,在Git命令中,使用`git switch --create release-{today} origin/main` 比 `git switch -c my-new-branch` 更清晰明了,尤其是在复杂的脚本中。

开发 长选项

Frink:一款兼具实用性和编程能力的计算工具

2025-03-21

Frink 是一款强大的计算工具和编程语言,旨在简化物理计算,确保答案正确,并提供真正实用的工具。它追踪所有计算中的单位(英尺、米、千克、瓦特等),允许混合使用不同单位,并帮助验证答案的合理性。Frink 还包含大量物理常数数据,免去了查找的麻烦,并支持多种语言、高级数学函数、单位转换、日期/时间数学、正则表达式和图形绘制等功能,甚至支持面向对象编程和调用 Java 代码。它可在多种操作系统和设备上运行,并通过 Java Web Start 自动更新。

开发 物理计算

MySQL每秒事务数与fsyncs数之谜

2025-03-21

本文探讨了MySQL每秒事务处理能力的理论值与实际值之间的差距。作者通过一个简单的基准测试发现,MySQL的实际写入速度远高于理论预测(基于fsync()系统调用的速度)。深入研究后发现,MySQL使用了组提交(group commit)技术批量写入WAL和binlog,以及文件系统和磁盘也可能进行了类似的批量操作,从而提高了效率。此外,作者还分析了倒排索引的性能,并解释了理论模型与实际性能差异的原因。

开发 fsync

编写你自己的x86操作系统:一本实践指南

2025-03-21

这是一本关于编写x86操作系统的实用指南,它循序渐进地讲解了从设置开发环境到实现多任务处理的整个过程。作者结合自身经验,详细介绍了每个步骤,并提供了大量的代码示例和进一步阅读的链接。本书涵盖了内存管理、中断处理、虚拟内存、文件系统以及系统调用等核心主题,适合有一定系统编程基础的读者学习。

开发

Ubuntu 或将默认采用 Rust 工具集

2025-03-21

Ubuntu计划在其25.10版本中将许多传统的GNU工具替换为Rust实现的工具,例如uutils项目中的工具。为了测试这些Rust工具的适用性,Canonical的工程副总裁Jon Seager发布了一个名为oxidizr的命令行工具,方便用户启用或禁用这些Rust工具。此举旨在提升Ubuntu系统的稳定性和安全性,并吸引更多开发者贡献代码。虽然社区反应褒贬不一,但此举无疑将对Rust的普及和Linux发行版的未来发展产生深远影响。

开发

Hyperbrowser MCP 服务器:网页抓取和数据提取利器

2025-03-21
Hyperbrowser MCP 服务器:网页抓取和数据提取利器

Hyperbrowser 推出了其模型上下文协议 (MCP) 服务器,这是一个强大的工具,能够抓取网页、提取结构化数据和爬取网页。它还简化了对通用浏览器代理的访问,例如 OpenAI 的 CUA、Anthropic 的 Claude 计算机使用和浏览器使用。该服务器支持多种功能,包括网页抓取、网页爬取、结构化数据提取、必应搜索和多种浏览器自动化功能。安装简便,只需运行 `npx hyperbrowser-mcp ` 并配置相应的配置文件即可。

开发

ClickHouse锁竞争:一年之痒的性能瓶颈

2025-03-21

Tinybird在高负载期间遇到了ClickHouse集群CPU利用率极低的难题,持续了一年之久。最终发现问题根源在于Context锁竞争。通过添加`ContextLockWaitMicroseconds`指标监控锁等待时间,并重构Context锁机制,将单全局互斥锁替换为读写互斥锁,显著提升了性能。文章还详细介绍了使用Clang线程安全分析工具排查和解决并发问题的过程,以及性能改进后的基准测试结果,最终实现了3倍的QPS提升和CPU利用率的显著提高。

开发

那些你可能读错的科技术语

2025-03-21

作为一名自学成才的独立开发者,我经常发现自己会错误地发音一些科技术语。这篇文章列举了一些常见的错误发音,例如,Asus应该发音为"AY-soos"而不是"AY-sis",Debian应该发音为"DEHB-eee-in"而不是"DEE-bee-inn"。文章还提供了使用Google搜索查找正确发音的方法,并附上了多个科技术语的正确发音示例,包括Atlassian, daemon, Gaussian, GIF, Gnome, GNU, JSON, Kernighan, LaTeX, Linus, Poisson, pypi, Qt, Redis, regex, repo, sudo, SUSE, SQL, SQLite, Ubuntu, Vite等。这些信息对于开发者和科技爱好者来说都非常有用。

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

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

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

开发

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

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

arXivLabs是一个实验性项目,允许协作者直接在arXiv网站上开发和分享新功能。参与者都认同arXiv的开放、社区、卓越和用户数据隐私的价值观。如果你有想法能提升arXiv社区价值,那就来了解arXivLabs吧!

开发

轻量级版本控制系统Game of Trees发布

2025-03-21

Game of Trees (Got)是一个轻量级、易于使用的版本控制系统,它优先考虑易用性和简洁性。目前仍在开发中,主要面向OpenBSD开发者,并使用Git存储版本化数据。Got尚未实现的功能可以使用Git补充,并且可以同时使用Got和Git操作同一个仓库。该软件采用BSD许可证,免费且可重复使用。

开发

Mathup:快速编写和阅读数学表达式的工具

2025-03-21

Mathup是一个轻量级的工具,可以将类AsciiMath的数学表达式转换成结构化的MathML。它比MathJax更快,因为它只解析和转换表达式,而渲染工作留给浏览器处理。Mathup支持多种数学符号和函数,包括分数、上下标、矩阵、张量等等,并提供丰富的自定义选项,例如字体、颜色和背景。开发者可以使用它在命令行、服务器或浏览器中快速编写和阅读数学表达式,提高效率并简化工作流程。

纯PHP编写的终端模拟器Screen:构建强大的文本UI

2025-03-21
纯PHP编写的终端模拟器Screen:构建强大的文本UI

Screen是一个用纯PHP编写的终端模拟器库,它能够在任何PHP应用程序中构建丰富的基于文本的用户界面。它最初是为了解决Laravel框架下的Solo项目中多进程文本界面(TUI)的ANSI转义码冲突问题而创建的。Screen通过创建一个虚拟终端缓冲区,安全地处理ANSI操作(光标移动、颜色更改、屏幕清除等),确保最终渲染的输出与预期一致。它支持Unicode、多字节字符、滚动和各种ANSI转义码功能,并提供全面的测试套件,包含独特的视觉比较系统,保证模拟的准确性。

开发 文本UI

Rust版RDP客户端:IronRDP安全高效的远程桌面方案

2025-03-21
Rust版RDP客户端:IronRDP安全高效的远程桌面方案

IronRDP项目提供了一套基于Rust的Microsoft远程桌面协议(RDP)实现,并着重强调安全性。它支持多种编解码器,包括无压缩原始位图、RLE、RDP 6.0位图压缩和RemoteFX。该项目包含一个完整的异步RDP客户端,并提供了阻塞式示例,方便开发者快速上手。此外,文档中还详细介绍了如何在服务器端启用RemoteFX以获得更好的图形体验。

开发

基于MLIR和E-Graph的Python表达式玩具编译器

2025-03-21
基于MLIR和E-Graph的Python表达式玩具编译器

本文介绍了一个基于MLIR和egglog库的Python表达式玩具编译器。该编译器利用E-Graph进行等式饱和和术语重写,对Python表达式进行优化,并将其编译成MLIR。编译器包含表达式模型、内置函数、Term IR、转换层、优化层以及MLIR代码生成和LLVM后端等多个模块。通过符号解释Python函数,将函数转换为IR表示,应用优化规则,最终生成高效的MLIR代码,并通过LLVM进行编译和执行。

开发 E-Graph

用PyTorch设计光学镜头的神经网络

2025-03-21

Torch Lens Maker是一个开源Python库,它利用PyTorch进行可微几何光学计算,目标是使用现代计算机代码和最先进的数值优化来设计复杂的光学系统(透镜、镜子等)。该库的核心是可微几何光学:在PyTorch中实现3D碰撞检测和光学定律。通过将光学元件视为神经网络层,并利用PyTorch的自动微分和优化算法,可以像训练神经网络一样设计镜头,从而利用现代机器学习工具的强大功能。该项目尚处于早期阶段,作者正在寻求资金支持以继续开发。

开发

从零开始:轮子重塑者的原则

2025-03-21

本文探讨了“轮子重塑者”的编程哲学。他们并非为了效率,而是为了学习、定制、创新和享受过程而从头编写代码。文章阐述了重塑轮子的四个理由:学习、特定需求、创新和乐趣。但作者也强调了谨慎的重要性,避免陷入无休止的细节中,并建议在重塑前仔细权衡利弊。此外,作者还分享了其个人经验,包括最小化第三方依赖、掌握平台内置功能、避免过度抽象以及开源分享代码等建议。

开发

函数式编程:折叠问题空间的艺术

2025-03-21

本文探讨了函数式编程(以Haskell为例)与命令式编程在解决复杂问题时的差异。命令式编程容易导致代码堆砌,如同在纸上画直线,而函数式编程则像折叠纸张,将问题空间巧妙地“折叠”,降低维度,最终以简洁的代码实现目标。文章以作者的实际经验为例,阐述了函数式编程如何通过构建小型模块并组合它们来创建丰富的生态系统,以及如何利用monad等特性实现代码的精妙组合,最终避免命令式编程中常见的代码膨胀和难以维护的问题。

开发

为什么数组索引应该从零开始?

2025-03-21

本文探讨了为什么计算机科学中数组索引应该从0开始,而不是1。作者通过数学推理和编程语言经验,论证了从0开始索引的优越性:它更符合数学逻辑,避免了边界条件处理的歧义,并使代码更简洁高效。文章还提及了历史上一些编程语言对索引选择的不同,以及由此带来的不便。

开发

AI赋能的代码开发工具大盘点

2025-03-21

从命令行工具到可视化平台,AI正在彻底改变软件开发流程。本文介绍了一系列令人兴奋的AI辅助编码工具,包括基于终端的AI编码助手(如aider chat, Kwaak, RA.Aid, CodeBuff),以及更高级的headless IDE(如SWE-Kit)和AI驱动的代码生成平台(如v0, Base44, bolt)。这些工具涵盖了从代码生成、代码理解到完整的软件构建流程,并支持多种编程语言和框架。无论你是经验丰富的开发者还是编码新手,都能从中找到合适的工具来提升效率和简化工作流程。

Manifest:一个简易的单文件微型后端

2025-03-21
Manifest:一个简易的单文件微型后端

Manifest是一个轻量级的、单文件的微型后端框架,旨在简化80%仅需基本后端功能的网站和应用的开发。它提供身份验证、验证、存储、图像调整大小、管理面板、动态端点、REST API、JS SDK和Webhook等核心功能,非常适合快速原型设计、微服务、CRUD密集型应用和无头CMS等场景。目前处于测试阶段,适合小型项目和MVP,不建议用于关键平台。

Calibre 8.0 重磅发布:Kobo 支持增强及更多新功能

2025-03-21

Calibre 8.0 版本重磅来袭!此版本大幅提升了对 Kobo 设备的支持,原生支持KEPUB格式的编辑、查看和转换,并自动将EPUB转换为KEPUB发送到Kobo设备。此外,新增连接文件夹功能,方便Chromebook用户使用;改进的ToC编辑器、macOS图标样式升级、以及大量bug修复,都为用户带来了更流畅的使用体验。7.x版本也带来诸多改进,包括新增音频叠加工具、PDF自动头尾检测与去除、大幅提升EPUB打开速度、全新神经网络语音引擎Piper等,显著增强了阅读体验和编辑效率。

开发

BCX:一款将BASIC代码转换为C/C++代码的免费开源工具

2025-03-21

BCX是一款免费开源的BASIC到C/C++编译器,它可以将你的BASIC源代码转换为高效的C/C++代码。它支持多种C/C++编译器,并包含大量示例程序和帮助文档,即使是初学者也能轻松上手。BCX自身也完全用BCX BASIC编写,并在i7处理器上仅用不到一秒钟就完成了38000多行代码的转换,展现了其高效性。对于想学习C/C++或寻求快速创建Windows桌面应用的开发者来说,BCX是一个理想的选择。

开发

Adélie Linux拯救了RISC-V编译:Milk-V Pioneer的意外贡献

2025-03-21

由于之前的编译基础设施问题,Adélie Linux的Zach van Rijn慷慨提供了Milk-V Pioneer机器,从而避免了放弃RISC-V仓库。这台机器进行了一次完整的全球重建,新的仓库已经上线。虽然性能与Cortex-A72相比有所差距,但大多数项目构建速度尚可接受。新仓库与LoongArch64仓库处于同一级别,均开启了测试功能。目前该方案仍在评估中,未来可能根据实际情况调整支持策略。

浏览器数据库:前端同步的未来?

2025-03-21
浏览器数据库:前端同步的未来?

作者Niki探讨了现代Web应用中数据同步的挑战。传统的XHR、fetch、REST和GraphQL等工具只能解决一次性数据获取问题,无法应对持续变化、请求失败和数据冲突等复杂情况。文章指出,构建一个运行在浏览器端的数据库,能够更有效地解决数据同步问题。这不仅能简化开发流程,提高效率,还能提供更可靠、高效的数据管理,最终让开发者更专注于业务逻辑,而非底层数据同步细节。作者以Roam Research为例,说明了无服务器架构的可行性,并认为同步引擎有潜力简化技术栈,将数据库和服务器整合,彻底改变前端开发模式。

1 2 132 133 134 136 138 139 140 213 214