分类: 开发

Bun:为什么包安装速度比npm快7倍?

2025-09-11

Bun包管理器以其惊人的速度而闻名,平均比npm快7倍,比pnpm快4倍,比yarn快17倍。这并非巧合,Bun将包安装视为系统编程问题,而非JavaScript问题。它通过最小化系统调用、将清单缓存为二进制文件、优化tarball提取、利用操作系统原生的文件复制以及跨CPU核心扩展等方式,显著提升了速度。文章深入探讨了Bun如何利用Zig语言和操作系统特性,绕过Node.js的线程池和事件循环等限制,从而实现飞速的包安装体验。

开发

W3C杰出贡献者Gregg Kellogg逝世

2025-09-11

W3C宣布了令人悲痛的消息:杰出的W3C特邀专家Gregg Kellogg于上周六去世。Kellogg先生多年来为W3C做出了巨大贡献,尤其是在JSON-LD工作组中担任联合主席,并领导多个数据相关的社区小组。他参与撰写了9项已发布的W3C推荐以及其他规范,并为这些规范提供了开源实现和测试套件。JSON-LD的成功离不开他的贡献。W3C将举办纪念活动,以缅怀这位友善而富有才华的成员。

开发

C++20模块:编译速度提升与实践经验分享

2025-09-11

本文作者分享了在实际项目中使用C++20模块的经验,包括构建系统选择(Bazel、XMake、Build2等)、编译速度提升(25%-45%),以及与PCH的区别。作者还探讨了C++20模块的适用场景、成本(代码重构、编译器稳定性、代码补全支持等)、模块包装器(export-using和extern "C++"两种风格)以及混合使用import和#include的技巧。文章最后列举了C++20模块的未来改进方向,例如改进构建系统、提升代码智能感知、解决跨平台问题等,并指出AI在模块转换工具开发中的潜力。

开发

Piramidal招募后端工程师,助力神经数据平台

2025-09-11
Piramidal招募后端工程师,助力神经数据平台

Piramidal公司招聘一名软件工程师,负责其神经数据旗舰平台的基础设施和后端系统建设及维护。理想候选人应具备3年以上产品驱动型公司工作经验,精通Python和其他后端语言、容器化和编排技术(如Kubernetes)、关系型数据库(如Postgres/MySQL)以及Web技术(如JavaScript、React)。该职位需要与机器学习工程师紧密合作,迭代应用最新的模型,并与产品团队和内部客户合作,理解他们的需求并提供有效的解决方案。Piramidal致力于利用技术最大限度地发挥人类潜能,其使命核心是支持认知自由。

开发

pgEdge 将核心组件开源,拥抱 PostgreSQL 生态

2025-09-11

pgEdge,一家专注于分布式 PostgreSQL 的公司,宣布将其核心组件,包括 Spock 复制引擎、Snowflake 序列生成器和 Lolor 大对象逻辑复制扩展,全部重新授权为 PostgreSQL 许可证,正式开源!此举标志着 pgEdge 对开源的承诺,并期待为 PostgreSQL 生态系统贡献更多力量。开发者现在可以在 GitHub 上访问这些组件的源代码,并参与其开发。同时,pgEdge 也提供云端、容器和虚拟机等多种部署方式,方便用户使用。

开发

五年磨一剑:组件库Reshaped开源

2025-09-11
五年磨一剑:组件库Reshaped开源

开发者历经五年打造的组件库Reshaped正式开源!起初,它作为个人项目,旨在解决React和Figma组件库的痛点。如今,Reshaped涵盖了80%的Web核心设计实践,并兼顾设计与工程的一致性。作者先将React包免费,如今开源全部代码,希望促进设计和工程领域的最佳实践交流,并计划未来推出更高级的付费组件。

开发

纯工程与不纯工程:两种工程师的冲突与AI的介入

2025-09-11

本文探讨了软件工程中的“纯工程”与“不纯工程”两种不同类型的工作。纯工程追求技术完美,类似艺术或研究;不纯工程注重效率,更像实际应用。大型科技公司需要两者,但如今更注重不纯工程,这导致一些专注于纯工程的工程师难以适应,与不纯工程工程师发生冲突。AI辅助开发对不纯工程更有帮助,因为它能处理不那么新颖、时间紧迫的问题,而纯工程则更依赖工程师自身的专业知识。文章强调,两种工程类型都需要高超的技能,只是侧重点不同。

代码库问答基准数据集:Deep Code Bench

2025-09-11
代码库问答基准数据集:Deep Code Bench

Qodo团队发布了Deep Code Bench,一个基于大型复杂代码库中真实问题的全新基准数据集。该数据集包含从代码拉取请求中提取的真实问题和答案,旨在更好地评估代码检索系统的性能。与现有基准不同,Deep Code Bench 的问题需要跨多个文件进行检索,更贴近真实的开发场景。研究人员使用了大型语言模型生成问题和答案,并采用了事实召回机制进行评估,最终结果表明Qodo的深度研究代理在事实召回率上表现最佳。

深入浅出tz数据库:定制你的专属时区

2025-09-11
深入浅出tz数据库:定制你的专属时区

作者在使用Ruby时遇到了时区问题,由此发现了tz数据库。这篇文章深入浅出地讲解了tz数据库的工作原理,包括其核心组件:zic编译器、zdump工具以及时区源文件。作者通过在Alpine Docker镜像中创建一个名为Hi_No_Kuni/Konoha的虚拟时区,生动地演示了如何自定义时区规则,并用实际案例验证了结果。这篇文章不仅适合开发者学习,也让读者了解了时区背后的复杂性和规范性。

开发 tz数据库

openSUSE 6.17+内核禁用BCacheFS文件系统

2025-09-11

openSUSE团队宣布将在6.17及更高版本的内核中禁用BCacheFS文件系统。这是因为BCacheFS从6.17版本开始由外部维护,openSUSE团队将不再维护和移植下游补丁。目前6.16及之前的版本不受影响。用户需要按照BCacheFS上游的建议安装和使用该文件系统,也可以自行准备KMP。一旦BCacheFS维护者恢复上游维护,openSUSE将重新启用该功能。

开发 BCacheFS

大型项目中使用LLM的编码工作流程

2025-09-11
大型项目中使用LLM的编码工作流程

本文介绍了作者在超过10000行代码的大型项目中成功使用大型语言模型(LLM)的经验。作者发现,直接让LLM生成整个系统不可行,容易导致混乱和错误。作者提出了一种结构化的工作流程:首先手动编写设计文档和架构文件,然后将LLM用作代码生成和转换工具,每次迭代只处理一个小任务,并进行系统性的代码审查和更正,不断更新文档并记录编码规范。通过这种方式,作者成功地避免了LLM在大型项目中失效的问题,并保持了项目的可维护性和一致性。

开发

Dotter:Rust编写的强大点文件管理器和模板引擎

2025-09-11
Dotter:Rust编写的强大点文件管理器和模板引擎

Dotter是一个用Rust编写的点文件管理器和模板引擎,旨在简化点文件的管理和部署。它解决了手动管理点文件带来的诸多不便,例如难以追踪文件来源、在新机器上繁琐的设置以及不同机器间配置差异的处理。Dotter通过灵活的配置和自动模板化或符号链接功能,实现点文件的自动化管理。它支持Homebrew、AUR和Scoop安装,也提供二进制文件和Cargo安装方式。Dotter还提供丰富的命令行选项和钩子函数,方便用户自定义工作流程。

开发

基数排序战胜哈希表:大型唯一值计数的性能之战

2025-09-11
基数排序战胜哈希表:大型唯一值计数的性能之战

在计数大型数组中大部分唯一的uint64值这一问题上,基数排序在经过调优后,速度通常快于哈希表。基数排序通过高效利用内存带宽,以及巧妙地将哈希操作与排序过程融合,在处理超过1MB的数据时,速度提升可达1.5倍,甚至比Rust标准库中的Swiss Table哈希表快4倍。然而,基数排序在数据分布不均匀时性能会下降,这时可以采用可逆哈希函数预处理数据,从而保持其高效性。文章还比较了两种方法在不同数据大小和访问频率下的性能差异,并探讨了其在实际应用中的选择策略。

开发

Clojure优雅解决表达式问题

2025-09-11
Clojure优雅解决表达式问题

Chris Houser在Strange Loop大会上分享了Clojure解决表达式问题的两种方法:多方法和协议。演讲深入探讨了每种方法的优缺点,并展示了如何在Clojure中实现。Houser是《The Joy of Clojure》的合著者,也是Clojure的核心贡献者,他的演讲为Clojure的灵活性和表达能力提供了有力证明。

开发 多方法

AI编码助手大规模宕机:依赖风险与未来反思

2025-09-11
AI编码助手大规模宕机:依赖风险与未来反思

Anthropic的Claude Code等AI编码助手近期大规模宕机,暴露了软件开发对AI工具的高度依赖。一些开发者转向其他AI工具或甚至Stack Overflow,突显了过度依赖AI带来的风险。所谓的“氛围编码”(vibe coding)——使用自然语言生成代码而不理解底层操作——导致了严重的错误,例如Google Gemini CLI破坏用户文件和Replit AI服务删除生产数据库等事故。此次宕机事件提醒开发者,过度依赖AI工具可能导致严重后果,也引发了人们对工作生活平衡的反思。

开发

TailGuard:将WireGuard连接到Tailscale的Docker容器应用

2025-09-11
TailGuard:将WireGuard连接到Tailscale的Docker容器应用

TailGuard是一个简单的Docker容器应用,它允许将现有的WireGuard服务器连接到Tailscale网络,即使运行WireGuard的设备被锁定或不支持Tailscale二进制文件。它通过在VPS上运行一个容器,将WireGuard连接桥接到Tailscale网络,简化了密钥管理,并方便在设备之间切换。用户只需下载WireGuard配置,运行Docker命令即可连接。该应用支持自定义配置参数,并提供IPv6网络支持,方便用户连接到Tailscale网络和WireGuard网络。

开发

C++中的多重分发:挑战与解决方案

2025-09-11

本文探讨了在C++中实现多重分发的挑战。多重分发允许根据多个对象的运行时类型动态选择函数,这在处理不同类型对象间的交互时非常有用,例如计算不同形状的相交。文章比较了多种方法,包括访问者模式和暴力if-else检查,分析了它们的优缺点,最终指出访问者模式虽然高效,但侵入性强,难以维护;而暴力方法虽然易于维护,但代码冗余且效率低。文章还简述了C++标准化尝试中关于多重分发的提案,并预告后续文章将探讨其他编程语言中如何实现多重分发。

开发

arXivLabs:与社区协作者一起进行实验性项目

2025-09-11
arXivLabs:与社区协作者一起进行实验性项目

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

开发

告别图形界面!命令行桌面环境Desktop-TUI来袭

2025-09-11
告别图形界面!命令行桌面环境Desktop-TUI来袭

Desktop-TUI是一个无需图形界面的桌面环境,类似tmux,通过解析快捷键文件启动应用程序和命令。它支持窗口移动、大小调整、平铺选项更改,并能处理应用程序错误和GNU应用崩溃。用户可选择文件或文件夹作为应用程序或命令参数。目前使用ncurses作为后端,颜色显示存在问题,未来计划使用Crossterm。安装方式:`cargo install desktop-tui`,运行方式:`cargo run -- `。快捷键文件使用TOML格式,例如helix.toml,定义了应用程序名称、执行命令、参数等信息。

开发

JiraTUI:命令行下的Jira任务管理神器

2025-09-11

JiraTUI是一个强大的命令行工具,让Jira任务管理更便捷高效。它允许你直接在终端创建Jira任务,轻松设置标题、描述和优先级等细节,节省了在图形界面中跳转的时间。此外,JiraTUI还支持在终端中管理任务评论,方便团队沟通协作,确保任务进展信息清晰透明。

开发

在MicroHs上实现一个轻量级DataFrame库

2025-09-11

作者在2015年尝试使用Frege(一种运行在JVM上的Haskell方言)进行Android开发,由此开始了他的函数式编程之旅。如今,他致力于将自己的DataFrame库与GHC解耦,使其可在MicroHs上运行。文章详细介绍了如何在没有GADTs、类型族或反射的情况下,用Haskell 2010标准实现DataFrame的核心功能,包括构造、简单的表达式、filterWhere、derive和Markdown渲染。实验表明,虽然代码冗长,但功能完全可用,并且这种可移植性允许在MicroHs(用于小型CLI或嵌入式环境)和GHC(用于速度和生态系统访问)之间进行选择。MicroHs的二进制文件大小约为GHC的100倍,但速度约慢5-10倍,对于许多数据整理任务来说,这是一个不错的权衡。

KDE发布首个alpha版Linux发行版:KDE Linux

2025-09-11

KDE项目在Akademy 2025上发布了KDE Linux的alpha版本,这是一个由KDE项目构建的发行版,旨在提供一个包含KDE所有最佳功能的完整Linux系统。它基于Arch Linux,但使用了KDE Builder编译和Flatpak安装软件,而不是pacman。KDE Linux的目标是为家用、商用和OEM安装提供一个操作系统,但目前仍处于早期alpha阶段,存在许多不足之处。未来计划包括发布测试版、爱好者版和稳定版三个版本,并最终考虑一个退出计划,将系统迁移到另一个发行版。

开发

在终端运行任何GUI应用:term.everything❗

2025-09-11
在终端运行任何GUI应用:term.everything❗

想象一下,在终端里玩游戏、看电影!term.everything❗是一个基于Wayland的终端GUI运行器,它能将GUI程序渲染到终端中显示。其质量取决于终端分辨率,支持kitty或iterm2等高分辨率终端。虽然还在测试阶段,部分应用可能无法正常运行,但它已经能运行Doom等游戏了。该项目使用TypeScript和Bun构建,部分代码使用C++编写。

Mux:为开发者打造的视频基础设施

2025-09-11
Mux:为开发者打造的视频基础设施

Mux 致力于通过解决开发者在构建视频应用时面临的难题(视频编码和流媒体传输、视频监控等)来实现视频技术的民主化。团队成员来自Google、YouTube、Twitch等公司,拥有丰富的经验,并由顶级风投支持。Mux 提供Mux Video和Mux Data等服务,已服务于Reddit、Vimeo、Robinhood等众多知名公司,旨在构建一个更优质的视频生态。

开发

arXivLabs:与社区协作者一起进行实验性项目

2025-09-10
arXivLabs:与社区协作者一起进行实验性项目

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

开发

程序员的代码共感:一种感官体验

2025-09-10
程序员的代码共感:一种感官体验

作者描述了不同编程语言带来的不同身体感受:C语言的嵌套括号像在走钢丝,函数式编程像在地下洞穴爬行,编写固件像精准而受限的操作。使用Copilot和TypeScript则像飞行,而回到无类型的Python则像醉酒。作者认为这种代码共感虽然微弱,但普遍存在,并影响着代码理解和系统设计。虽然这种感觉可能无法直接提升编程效率,但它在理解创业公司运作模式时却非常有用,帮助作者识别关键部分和缺失的连接。作者最后提出,或许优秀的代码编辑器应该借鉴优秀工程师的这种感官直觉,改善代码显示方式,提升编程体验。

PKM软件的遗漏:如何让知识永不过时?

2025-09-10
PKM软件的遗漏:如何让知识永不过时?

作者使用Obsidian、Things等多种PKM软件管理大量数字信息,但发现这些软件缺乏一个关键功能:帮助用户重新接触已捕获但被遗忘的信息。文章指出,即使简单的数据库查询也能实现此功能,例如显示超过六个月未处理的任务。作者呼吁PKM软件开发者添加此类功能,例如类似Spotify首页的推荐机制,让用户重新接触旧笔记、任务等,避免信息成为“知识黑洞”。

开发 PKM

git-down:高效下载Git仓库目录

2025-09-10
git-down:高效下载Git仓库目录

还在为下载Git仓库单个目录而烦恼吗?git-down来了!它能用一条简单命令下载Git仓库的单个或多个目录,无需克隆整个仓库。支持GitHub、BitBucket、GitLab和SourceForge等平台,并提供快捷方式简化操作。与繁琐的下载压缩包、浅克隆再移动文件相比,git-down显著提升了效率,节省了时间。虽然需要自行编译安装(需要Rust环境),但其高效便捷性使其成为Git用户的利器。

开发

语义换行:让你的文本更易读写

2025-09-10
语义换行:让你的文本更易读写

本文介绍了语义换行(SemBr)规范,一种通过在每个重要的思想单元后添加换行符来改进文本结构的方法。SemBr 规范建议在句末、独立子句后添加换行符,并在列表前、链接前后等处使用换行符,以提高文本的可读性和可编辑性。这种方法不会改变渲染后的输出,但能显著提升编写、编辑和阅读源代码的效率。作者还讨论了 SemBr 在不同轻量级标记语言中的应用,以及如何将现有文本迁移到 SemBr 规范。

开发 写作规范

从Bash到Go:构建CLI工具的实践指南

2025-09-10
从Bash到Go:构建CLI工具的实践指南

本文是Bash程序员Go语言学习系列的第二部分,重点介绍如何使用Go构建命令行工具。文章从一个简单的“hello world”程序开始,逐步讲解如何编写测试、处理输入输出、使用io.Writer接口、避免全局变量陷阱,以及如何利用选项模式和flag包处理命令行参数和标志。最终,文章演示了一个更实用的CLI工具:统计输入文本中重复行的个数。

开发
1 2 6 7 8 10 12 13 14 213 214