分类: 开发

sd: 比sed和awk更快的命令行查找替换工具

2025-09-02
sd: 比sed和awk更快的命令行查找替换工具

sd是一个直观的命令行查找和替换工具,它比sed和awk更快更易用。它采用JavaScript和Python熟悉的正则表达式语法,支持字符串字面量模式,避免了繁琐的转义字符。sd的语法简洁易读,默认设置也更符合日常使用习惯。它在处理大型文件(例如1.5GB的JSON文件)时速度优势显著,比sed快2.35倍甚至11.93倍。sd支持就地修改文件、预览更改、跨项目查找替换等功能,并提供了丰富的正则表达式功能,包括捕获组和命名捕获组。安装sd可以使用cargo或各种包管理器。

开发

Firefox 推出增强隐私、专注和移动浏览体验的新工具

2025-09-02

Firefox 发布了多项新功能,提升用户隐私、专注度和移动浏览体验。Android 版新增自动锁定私密标签功能,保障隐私安全;语言翻译功能扩展至日语、中文、韩语等更多语言;iOS 版则加入更智能的密码建议和更简洁的界面设计,以及升级后的暗黑模式,带来更清晰、更舒适的浏览体验。

开发 移动浏览

超小型Erlang/Elixir运行时:GRiSP家族闪亮登场

2025-09-02
超小型Erlang/Elixir运行时:GRiSP家族闪亮登场

GRiSP家族推出了三个基于Erlang/Elixir的实时运行时系统,分别针对不同需求:Metal针对微控制器,仅需16MB RAM;Alloy基于精简的Buildroot Linux,支持多VM实例和核心绑定;Forge则基于Yocto,提供高度可定制性和长期支持。它们都具备快速启动、安全可靠、直接启动BEAM等优势,为边缘计算和实时应用提供了一种全新的选择。

开发 Erlang/Elixir

Next.js 的日志噩梦:一场与生产环境日志的斗争

2025-09-02
Next.js 的日志噩梦:一场与生产环境日志的斗争

作者在尝试为 Next.js 服务添加生产环境日志时遭遇了一系列挑战。Next.js 的中间件机制限制重重,AsyncLocalStorage 也无法跨越渲染上下文,导致页面和布局组件中的日志无法正常输出。作者尝试了各种方法,包括自定义服务器,最终发现 Next.js 的设计限制了日志功能的实现。与 SvelteKit 的对比更突显了 Next.js 在日志处理方面的不足,以及其 GitHub issue tracker 的低效。作者表达了对 Next.js 的不满,并考虑在未来项目中寻求替代方案。

开发

软件项目中的“温跃层”:真相的障碍

2025-09-02

本文探讨了大型IT项目中常见的“真相温跃层”现象:项目信息在组织结构中存在阻碍,下层员工了解真实进度,上层则过于乐观。这种现象源于缺乏客观度量、工程师的乐观主义、管理层不愿传递坏消息以及高层奖励好消息惩罚坏消息的机制。作者用自身经历和案例佐证了这一现象,并强调打破“真相温跃层”需要下层员工勇敢说实话,上层管理者奖励诚实,避免不切实际的项目时间表。

开发

程序员的座右铭:守护用户、数据和真相

2025-09-02

作者在街上看到拉丁语座右铭“Primum non nocere”(首要的是不造成伤害)后,受到启发,为程序员群体创作了一条新的座右铭:“Tuere usorem, data, veritatem”(守护用户、数据和真相)。这强调了程序员应以用户体验为核心,保护数据安全,并坚守真相,避免技术被用于造假。作者希望大家对此提出意见和建议。

SpatialStudio 新增 write_string 函数

2025-09-02
SpatialStudio 新增 write_string 函数

SpatialStudio,一个空间视频编辑工具,近期更新增加了write_string函数。该函数的加入极大增强了SpatialStudio的功能,开发者Daniel Habib在GitHub上分享了相关代码,并鼓励用户体验这一新功能。目前,SpatialStudio的视频已获得超过200次的观看。

OpenBSD添加树莓派5支持,但存在已知问题

2025-09-02

OpenBSD的最新更新为树莓派5 Model B的RAMDISK添加了支持。然而,目前存在一些已知问题,例如:无法从PCIe存储HAT启动(由于缺少U-Boot支持)、树莓派5 Model B "d0"主板的WiFi无法工作以及主动冷却风扇由于缺少pwm/clock驱动而无法工作。开发团队正在努力解决这些问题。

开发 RAMDISK

Linux内核32位支持的终结?

2025-09-02

在2025年欧洲开源峰会上,Linux内核架构维护者Arnd Bergmann发表演讲,讨论了移除32位系统支持的可能性。虽然桌面和服务器系统早已过渡到64位,但嵌入式系统中仍有大量32位设备。Bergmann指出,虽然内核仍在添加一些32位板的支持,但64位板的支持数量已大幅超过32位。他认为,移除32位支持是一个循序渐进的过程,需要考虑现有硬件和软件的支持情况,并通过分析用户数量来决定何时移除对特定架构的支持。此外,演讲还讨论了高内存支持、year-2038问题、大端支持等与32位支持相关的挑战和解决方案。最终,Bergmann表示,内核将至少保留十年对armv7系统的支持,而其他32位架构的支持可能会逐渐消失。

开发 32位系统

Three.js中模拟箔纸贴纸的自定义着色器

2025-09-02
Three.js中模拟箔纸贴纸的自定义着色器

本文介绍了如何使用Three.js创建一个模拟箔纸贴纸外观的自定义着色器,该着色器具有角度相关的彩虹色和闪闪发光的金属薄片。通过模拟薄膜干涉和程序噪声,该着色器实时渲染出逼真的全息效果,包括角度变化的彩虹色和随机分布的金属薄片高光,从而在浏览器中实现高品质的箔纸贴纸效果。文章详细讲解了顶点着色器和片段着色器代码,并提供了交互式演示。

开发 箔纸贴纸

Ripple: 一个融合React、Solid和Svelte优点的新型UI框架

2025-09-02
Ripple: 一个融合React、Solid和Svelte优点的新型UI框架

Ripple是一个还在早期开发阶段的TypeScript UI框架,它结合了React、Solid和Svelte的优点。开发者旨在创建一个JS/TS优先的框架,拥有独特的.ripple扩展名和超集语言,提升开发者体验,并与LLM良好兼容。它内置了响应式状态管理、组件化架构、类似JSX的语法和优秀的性能。目前仍存在许多bug,但其创新理念值得关注,例如$前缀的自动响应式变量和对象属性、untrack函数用于控制响应式行为、reactive数组和effect函数等。

开发

WinBoat:在Linux上运行Windows应用的利器

2025-09-02
WinBoat:在Linux上运行Windows应用的利器

WinBoat是一个Beta版软件,允许你在Linux系统上运行Windows应用程序,并提供无缝集成体验。它拥有简洁的界面,自动化安装流程,支持运行几乎所有Windows应用程序,并提供完整的Windows桌面访问和文件系统集成。WinBoat对系统资源有一定的要求,包括RAM、CPU、存储空间和特定的软件依赖,例如KVM、Docker和FreeRDP。该项目开源,欢迎贡献代码和反馈。

开发

Android 应用开发者需验证身份,否则2026年后将无法在认证设备上运行

2025-09-02
Android 应用开发者需验证身份,否则2026年后将无法在认证设备上运行

一个名为`FreeDroidWarn`的开源库可以帮助Android开发者告知用户,Google将于2026/2027年强制要求开发者验证身份,否则应用将无法在认证的Android设备上运行。该库会在应用启动时显示警告对话框,开发者无需提供个人信息即可集成该库。开发者可以选择在应用更新时显示此警告。该库采用GPLv3许可证。

ABC编程语言:简单易学,功能强大的替代BASIC方案

2025-09-01

ABC编程语言诞生于对编程任务分析的基础上,旨在替代BASIC,成为个人计算的交互式编程语言和环境。其特点是易于学习和使用,即使对于编程新手也能快速上手。它拥有强大的功能,包括简洁的五个数据类型、强大的类型检查、无限制的数值范围以及对自顶向下编程的支持。ABC环境也同样出色,无需文件管理,程序和变量在注销后依然保留,用户界面一致且提供撤销机制。总之,ABC语言以其简洁性和强大的功能,为程序员提供了一种高效的编程体验。

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

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

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

开发

Turso数据库:1GB的奇异错误与LLN的传奇修复

2025-09-01
Turso数据库:1GB的奇异错误与LLN的传奇修复

Rust编写的SQLite替代品Turso在测试中遇到奇异问题:数据库超过1GB时,SQLite会报告数据损坏,但数据实际上完好无损。经调查发现,这是因为SQLite在数据库超过1GB时会插入一个特殊页面,而Turso缺失了这一步骤。Turso团队成员Nikita,一位代码能力超群的工程师(甚至怀疑是LLM或外星人),凭借其惊人的知识储备,迅速找到了问题的根源并修复了bug。这再次印证了优秀的测试和文档的重要性,也展现了LLM在代码理解和问题排查方面的潜力。

开发

用ChatGPT开发Swift应用:从惊艳到崩溃

2025-09-01
用ChatGPT开发Swift应用:从惊艳到崩溃

作者尝试使用ChatGPT-5开发一个Swift应用,初期进展顺利,ChatGPT能够根据自然语言指令生成代码并修改UI。然而,在测试阶段问题频出:搜索功能失效、添加节目到库失败,且ChatGPT的修改导致越来越多的错误和未经请求的UI变化。最终,应用无法编译,作者与ChatGPT陷入死循环,不得不放弃。此经历说明,尽管ChatGPT能辅助开发,但其可靠性和准确性仍需提升,尤其是在复杂项目的开发中,人工干预和代码审查至关重要。

开发

20条高效学习知识的黄金法则

2025-09-01
20条高效学习知识的黄金法则

本文作者Piotr Wozniak总结了20条高效学习知识的法则,强调理解的重要性,建议先建立整体认知再记忆细节,并遵循最小信息原则,运用图像、记忆技巧、以及避免集合和枚举等方法。文章以大量实例说明如何将复杂知识转化为易于记忆的简洁形式,并强调避免干扰、优化措辞、个性化学习、利用情感状态、提供上下文线索、以及知识冗余的积极作用。最后,文章还建议提供来源、日期标记和优先级排序,以确保学习效率和知识的长期保留。

开发

Swift 6 中令人困惑的 @isolated(any) 属性:你需要了解的那些事

2025-09-01
Swift 6 中令人困惑的 @isolated(any) 属性:你需要了解的那些事

Swift 6 引入的 `@isolated(any)` 属性,用于描述异步函数的隔离性,初看令人困惑。它总是需要一个参数,但这个参数却不能变化。文章解释了其引入原因:为了解决异步函数在调度时隔离信息丢失的问题,`@isolated(any)` 属性允许访问函数的隔离属性,从而进行更智能的调度,特别是在处理 `Task` 和 `TaskGroup` 时,保证了 MainActor 上任务的执行顺序。虽然多数情况下可以忽略它,但在处理异步函数的隔离性和调度时,了解 `@isolated(any)` 对于编写高效、可靠的并发代码至关重要。

开发 异步函数

ZFS 文件系统加密备份工具:zfsbackrest

2025-09-01
ZFS 文件系统加密备份工具:zfsbackrest

zfsbackrest 是一个使用 pgbackrest 风格为 ZFS 文件系统创建加密备份的实验性工具。它需要 age 工具来生成加密密钥,加密是强制的。该工具支持全量、差异和增量备份,并能清理过期和孤立的备份。恢复备份需要 age 身份文件(私钥)。zfsbackrest 利用 zfs 快照进行备份和恢复,不会直接修改 zfs 数据集。

开发

Bear笔记软件开源许可证变更:从MIT到Elastic License

2025-09-01
Bear笔记软件开源许可证变更:从MIT到Elastic License

Bear笔记软件的开发者Herman宣布将软件的开源许可证从MIT改为Elastic License。这一改变源于一些人利用开源代码创建竞争服务,损害了开发者的利益。Elastic License与MIT许可证几乎相同,但增加了禁止将软件作为托管或管理服务提供的限制。开发者表示,在AI辅助编程的时代,这种“免费搭车”式的竞争日益严重,此举是为了保护自身利益和平台的长期发展。

轻量级Node.js NuGet服务器:10秒搭建私有包仓库

2025-09-01
轻量级Node.js NuGet服务器:10秒搭建私有包仓库

这是一个基于Node.js的轻量级NuGet服务器,它实现了NuGet v3 API的核心功能,支持包发布、查询和下载。无需数据库,直接使用文件系统存储包文件和nuspec,安装方便快捷,10秒即可运行。内建现代化的浏览器UI,支持多包上传、用户账户管理、API密码重置等功能,并提供Docker镜像。兼容dotnet restore和标准NuGet客户端,也支持通过curl等工具进行HTTP POST方式发布包。

程序员音乐人用Git管理音乐项目

2025-09-01

一位既是音乐人又是软件工程师的作者,发现可以使用版本控制工具Git来管理音乐制作项目。不再需要创建大量的项目文件副本(例如my-cool-song-new-vocals-brighter-mix-4.rpp),而是使用Git来追踪项目的不同版本,方便管理和回溯。作者详细介绍了在Windows系统下使用Git bash初始化仓库、创建.gitignore文件忽略不需要版本控制的文件,以及使用Git GUI工具查看不同版本的过程。虽然Git不适合管理大型二进制文件(如WAV),但对于只管理主项目文件的情况已经足够。作者还提出利用GitHub作为备份和TODO列表管理工具的可能性,让音乐项目拥有一个可随时随地访问和更新的在线“网站”。

开发

掌握AI辅助开发:Vibe Coding 资源中心

2025-09-01
掌握AI辅助开发:Vibe Coding 资源中心

这个资源中心提供全面的Vibe Coding 教程,涵盖从零基础到资深开发者所需的一切。通过循序渐进的教程、实际案例和专家指导,学习传统和简化版的 Vibe Coding 方法。十年工程经验积累,内容免费且全面,适合初创公司创始人、独立开发者和初级开发者。

开发

Go并发编程:如何在保持顺序的同时提升速度

2025-09-01
Go并发编程:如何在保持顺序的同时提升速度

Go语言的并发能力令人印象深刻,但并发处理会打乱数据的自然顺序。本文探讨了如何在Go中实现高性能的并发有序映射。作者提出了三种方法:基于replyTo通道的方法、基于sync.Cond的轮询方法和基于权限传递链的方法。通过基准测试,作者发现权限传递链方法在性能和内存效率方面表现最佳,且易于扩展和复用,尤其是在结合对象池避免内存分配后。该方法通过巧妙地利用通道实现高效的点对点信号传递,避免了“惊群效应”,实现了并发和有序性的完美平衡。

Go语言事件溯源工具库Chronicle:类型安全且实用的现代事件溯源

2025-09-01
Go语言事件溯源工具库Chronicle:类型安全且实用的现代事件溯源

Chronicle是一个用Go语言编写的现代事件溯源工具库,它以实用性和类型安全为设计理念。通过嵌入aggregate.Base结构体简化聚合根的版本控制,并利用sum type确保类型安全。Chronicle支持多种事件日志存储后端(内存、SQLite、PostgreSQL等),并提供乐观并发控制、快照机制、事件元数据、事件转换器等高级特性,有效应对高并发、数据安全和性能挑战。

开发

CocoaPods Trunk 将于 2026 年 12 月停止接受新的 Podspec

2025-09-01

CocoaPods 团队宣布,计划于 2026 年 12 月 2 日将 CocoaPods Trunk 转变为只读模式,届时将不再接受新的 Podspec。此举旨在提升安全性,并简化维护。团队将分阶段发出通知,并在 2026 年 11 月进行测试运行。此更改不会影响现有构建,但依赖 CocoaPods Trunk 更新的开发者需要寻找替代方案。

Nim 语言:被低估的系统编程语言

2025-09-01

Nim 是一种兼具高性能和易用性的系统编程语言,它结合了 Python 的简洁性和 C++ 的强大功能。文章作者基于自身经验,对 Nim 的优势和不足进行了深入分析。Nim 支持多种编译目标,拥有优秀的元编程能力,其内存管理模型在 Nim 2 中已从追踪式垃圾回收器转变为 ORC/ARC,性能媲美 C++、Rust 等语言。然而,Nim 的工具链尚需改进,调试体验也有待提升。总而言之,Nim 是一门值得关注的系统编程语言,其简洁性、灵活性与性能使其成为开发各种应用的理想选择。

开发

摆脱谷歌Authenticator:命令行生成TOTP码

2025-09-01
摆脱谷歌Authenticator:命令行生成TOTP码

作者为了摆脱谷歌服务,尝试将手机上的谷歌应用精简到仅剩地图和Authenticator(用于TOTP)。为了在命令行生成TOTP码,作者尝试使用oathtool,但迁移过程较为繁琐。文章详细介绍了从谷歌Authenticator导出QR码,使用qrtool解码,再利用Python脚本otpauth_migrate提取密钥,最后用oathtool生成TOTP码的完整步骤,并提供了一个Bash脚本简化操作。文章最后也讨论了密钥存储的安全性问题。

开发

PHP双向信号观察者模式:从发射器的视角重新定义事件驱动

2025-09-01
PHP双向信号观察者模式:从发射器的视角重新定义事件驱动

传统的观察者模式通常以观察者为中心,事件发生后观察者被动响应。本文介绍的PHP Observer包则颠覆了这种模式,将视角转移到事件的发射器上。发射器发出信号(事件、计划、询问、命令等),观察者可以返回反向信号影响发射器的流程,实现双向通信。这使得系统能够更灵活地处理复杂的业务流程,例如根据库存情况取消订单,或根据用户输入动态调整配置。该包提供七种信号类型,并支持错误处理和可观测性。

1 2 12 13 14 16 18 19 20 213 214