分类: 开发

Tidewave Web:在浏览器中运行的AI编码助手

2025-08-20

Dashbit推出Tidewave Web,一个直接在浏览器中与Rails和Phoenix Web应用程序一起运行的AI编码代理。它具有页面和代码上下文感知能力,无需在工具之间切换。Tidewave可以直接访问UI状态,执行代码,查询数据库,监控日志等。用户可以通过点击检查器提出改进建议,Tidewave会自动构建功能并进行浏览器测试。目前支持Rails和Phoenix框架,未来将支持React、Django等更多框架。Tidewave改变了传统的AI编码方式,实现了开发者、代理和Web应用之间的共享上下文,提升了开发效率。

开发 Rails/Phoenix

抛弃Lisp自定义REPL:拥抱原生REPL与实用工具

2025-08-20

作者痛斥Lisp自定义REPL(如CIEL)的弊端,认为其牺牲了原生REPL的强大功能和可定制性,例如REPL原生命令、实现调试器以及使用实现API进行自定义的能力。文章详细介绍了如何通过Trivial Toplevel库和rlwrap等工具增强原生REPL,包括自定义提示符、命令、读取器语法以及利用ASDF管理依赖等。作者提倡利用原生REPL结合实用工具,打造高效且个性化的Lisp开发环境,而非依赖“预烘焙”的自定义REPL。

开发

BusyBee:.NET 的高性能后台任务处理库

2025-08-20
BusyBee:.NET 的高性能后台任务处理库

BusyBee 是一个基于原生通道构建的高性能 .NET 后台任务处理库。它提供了一个简单、可配置且可观察的解决方案,用于处理后台任务,具有内置的 OpenTelemetry 支持和灵活的队列管理。你可以轻松配置无界或有界队列、设置全局或单个任务超时、并行处理任务,以及使用丰富的上下文信息。BusyBee 还支持 OpenTelemetry 集成,方便监控和分析任务性能,并提供错误和超时处理机制。

用YAML和Python构建最简单的语义层

2025-08-20
用YAML和Python构建最简单的语义层

本文介绍了如何使用YAML文件和Python脚本来构建一个简单的语义层,并用其查询2000万条纽约出租车记录。通过这个实践案例,读者可以了解语义层在何时能解决实际问题,何时又显得过于复杂。文章还比较了语义层与传统数据库的区别,并探讨了语义层在数据治理、缓存、安全访问控制和LLM集成方面的优势。

开发 语义层

高效的滑动窗口聚合:一种改进的FIFO数据结构

2025-08-20

本文介绍了一种改进的FIFO数据结构,能够在恒定时间内进行滑动窗口聚合。传统方法基于双栈结构,但效率低下。作者提出了一种新的方法,通过巧妙地维护“摄取列表”和“排出列表”及其对应的运行乘积和后缀乘积,实现了对任意幺半群结构的聚合操作,并保证了最坏情况下的常数时间复杂度。这种方法避免了传统方法中大量的复制和冗余操作,在实际应用中具有显著优势。文章还附带了Python代码实现,方便读者理解和应用。

(pvk.ca)
开发

高效协同文本编辑算法:CRDTs 的一种实现

2025-08-20

本文介绍了一种基于CRDTs的协同文本编辑算法,它类似于Yjs和Automerge等流行库的方法。该算法为每个字符分配唯一标识符(站点ID和时钟),并使用基于树的索引和计数器来排序字符。删除字符时,将其标识符添加到已删除集合中(墓碑)。通过合并连续插入、连续存储块和基于范围的删除集表示等优化,算法效率得以提升,即使是大量文本粘贴或同时编辑,也能保持高效。

开发

现代CI系统过于复杂:是时候融合构建系统和CI系统了?

2025-08-20

本文探讨了现代持续集成(CI)平台的复杂性问题。作者认为,当前的CI系统(如GitHub Actions和GitLab CI)功能过于强大,已经发展成为复杂的构建系统,导致构建和CI系统逻辑碎片化,效率低下。作者建议将CI功能集成到构建系统中,并以Mozilla的Taskcluster为例,展示了一种更强大的、基于任务图的CI平台设计理念。这种设计能够统一构建和CI流程,提高效率,降低复杂性。然而,作者也指出,这种融合需要更高级的构建系统和更广泛的行业采用,短期内可能难以实现。

开发 Taskcluster

OpenSSH 的“醉酒主教”算法:可视化密钥指纹

2025-08-20

OpenSSH 使用一种名为“醉酒主教”的算法来可视化公钥指纹,该算法基于随机艺术,通过将密钥哈希值转换成主教在棋盘上的移动轨迹,最终生成一个 ASCII 艺术图案。这使得用户可以直观地识别密钥是否被篡改。该功能由 VisualHostKey 选项控制,可以通过修改配置文件或命令行参数启用。本文还介绍了使用 Factor 编程语言实现该算法的代码细节。

Rails 应用图表神器:rails_charts gem

2025-08-20
Rails 应用图表神器:rails_charts gem

还在为在 Ruby on Rails 应用中创建漂亮的图表而烦恼吗?rails_charts gem 闪亮登场!它基于 Apache eCharts 库,只需几行代码就能生成各种类型的图表,例如折线图、柱状图、饼图等。该 gem 简化了界面,并提供了一些辅助方法,让图表创建变得轻而易举。它支持丰富的自定义选项,例如宽度、高度、主题、样式等,甚至可以自定义 tooltip 等 JavaScript 函数。快来试试吧!

OS Yamato:一个基于禅意的短暂数字空间

2025-08-20
OS Yamato:一个基于禅意的短暂数字空间

OS Yamato是一个新上线的操作系统,它颠覆了传统数字空间无限存储的理念。它倡导一种“短暂性”的美学,数据(笔记、照片、消息等)会在一段时间后自动消失,鼓励用户专注于当下,珍视珍贵的瞬间。系统采用Vue 3和AWS Amplify构建,并巧妙地将天气融入用户体验,让用户的数字记忆更具诗意。

Haskell库type-machine:模拟结构化子类型

2025-08-20

Haskell程序员常常为数据建模而苦恼,尤其是在处理具有许多字段的记录类型时。本文介绍了一个名为type-machine的Haskell库,它利用Template Haskell,通过类型转换器和Is类型类,模拟结构化子类型,从而简化记录类型操作,提高代码效率。该库提供了一系列函数,例如pick、omit、record等,方便用户操作记录类型的字段,并通过基准测试证明了其性能优势。

用算法生成像素风太空侵略者

2025-08-20
用算法生成像素风太空侵略者

作者用JavaScript和矢量图形技术创建了一个交互式太空侵略者生成器。文章详细描述了生成过程,从手绘像素图到矢量多边形,再到最终的像素化图像,并解释了其中涉及的算法和技术细节,例如使用OKLCH颜色空间生成颜色,以及利用Anime.js制作动画。整个过程充满趣味性,并附带了交互式动画,读者可以亲身体验生成过程。

开发

高效的Monorepo开发环境指南

2025-08-20
高效的Monorepo开发环境指南

这份指南详细介绍了在一个基于Turborepo的monorepo项目中进行开发、测试和提交代码的最佳实践。它涵盖了使用pnpm快速定位、安装和创建新React组件的方法,以及如何利用Vitest进行精准测试,并通过ESLint和TypeScript确保代码质量。指南强调了在提交代码前运行代码检查和测试的重要性,并提供了清晰的PR标题格式规范。

开发 Turborepo pnpm

D2 0.7.1发布:支持ASCII输出

2025-08-19
D2 0.7.1发布:支持ASCII输出

D2绘图工具最新版本0.7.1增加了ASCII输出功能,支持将图表渲染为文本格式。此功能尤其适用于代码注释中的小型图表,增强代码可读性。用户可通过Vim扩展或命令行参数`--ascii-mode=standard`来使用此功能,但需注意该功能目前仍处于alpha阶段,可能存在一些bug。

开发 ASCII渲染

Figma 的多人协作编辑:一个简化版的 CRDT 实现

2025-08-19
Figma 的多人协作编辑:一个简化版的 CRDT 实现

Figma 四年前开始构建多人协作功能,最初并未采用流行的 Operational Transform (OT) 算法,而是选择构建更简单的自定义系统。这源于他们快速迭代的需求和对 OT 复杂性的顾虑。文章详细阐述了 Figma 多人协作系统的架构,包括客户端/服务器架构、WebSocket 通信、离线编辑能力以及数据同步机制。虽然受到 CRDT (Conflict-free Replicated Data Type) 的启发,但 Figma 的实现并非严格遵循 CRDT 的规范,而是利用其思想,结合中心化服务器的优势,构建了一个更高效、更简洁的系统。文章还对 OT 和 CRDT 进行了对比,并深入探讨了 Figma 数据结构的设计以及如何处理一些边缘情况。

开发

Emacs下的视频剪辑神器:video-trimmer-mode

2025-08-19
Emacs下的视频剪辑神器:video-trimmer-mode

开发者Marcin Borkowski的博客文章激发了作者创建Emacs插件video-trimmer-mode的灵感。这个轻量级插件利用ffmpeg进行视频剪辑,代码量仅约300行,方便快捷地处理视频片段。作者将其代码托管在Emacs配置仓库中,并鼓励用户支持其独立开发工作。

开发

Positron:下一代开源数据科学IDE

2025-08-19
Positron:下一代开源数据科学IDE

Posit PBC发布了免费的下一代数据科学集成开发环境(IDE)Positron。它整合了数据探索和生产工作,支持Python和R语言,并具有交互式笔记本、绘图工具、数据应用工作流程等功能。Positron基于Code OSS构建,支持VSIX扩展,并提供Positron Assistant AI助手,简化数据科学工作流程。

开发

Guile-Swayer:用Guile脚本掌控Sway/i3窗口管理器

2025-08-19
Guile-Swayer:用Guile脚本掌控Sway/i3窗口管理器

厌倦了Sway/i3的配置限制?Guile-Swayer项目提供了一个强大的解决方案,它允许你使用Guile脚本语言来完全掌控Sway/i3窗口管理器。作者从StumpWM迁移到Wayland后,开发了这个项目,实现了类似StumpWM的灵活性和可定制性。Guile-Swayer允许你绑定按键执行Guile代码、订阅Sway事件并做出响应、获取Sway信息等等。它还包含一些模块,例如workspace-grid实现网格化工作空间,workspace-groups实现跨显示器的工作空间分组,以及which-key提供类似Emacs的按键提示功能。通过Guile-Swayer,你可以打造一个高度个性化且高效的窗口管理环境。

开发

巧妙利用注意力机制提升大型语言模型提示词效果

2025-08-19
巧妙利用注意力机制提升大型语言模型提示词效果

本文探讨了大型语言模型(LLM)的注意力机制,以及如何通过精心设计的提示词来更好地利用该机制。文章指出,LLM并非像人类一样从左到右顺序阅读,而是同时权衡所有词元之间的关系。因此,提示词的结构比具体的用词更重要。文章通过两个例子比较了结构化和非结构化提示词的效果,并解释了注意力机制的工作原理:计算每个词对其他词的影响程度,生成输出。文章还提出了几种提高提示词效果的启发式方法,例如:将最重要的信息放在最前面,使用结构化的提示词,使用角色扮演,避免含糊不清的描述等。最后,文章强调了高效提示词的重要性,因为它可以节省工程师的时间,提高工作效率,并降低成本。

开发

代码审查建议应用限制

2025-08-19
代码审查建议应用限制

本文列举了GitHub代码审查中应用建议时可能遇到的各种限制,例如代码未修改、拉取请求已关闭、只查看部分更改、每行只能应用一个建议、应用于已删除行、建议已应用或标记为已解决、来自待处理审查的建议、多行注释以及拉取请求已排队合并等情况,并提示部分操作当前不可用。

开发

从Arc到Dia再到Zen Browser:我的浏览器寻觅之旅

2025-08-19
从Arc到Dia再到Zen Browser:我的浏览器寻觅之旅

我曾是Arc浏览器的忠实用户,它强大的键盘快捷键和多用户配置文件让我爱不释手。然而,其开发商The Browser Company却转向了AI浏览器Dia,放弃了Arc的许多优秀特性。Dia虽然融入了AI功能,但牺牲了易用性和隐私,让我不得不寻找替代品。Firefox虽然功能强大,但用户体验欠佳。最终,我找到了Zen Browser,它基于Firefox,却拥有Arc般简洁流畅的用户界面和强大的自定义功能,并解决了Firefox的多用户配置文件管理问题,成为我的新宠。我甚至认为Mozilla应该将Zen Browser团队纳入麾下,改进Firefox的用户体验。

开发

用Vim宏高效处理Beancount账目:一个极客的记账故事

2025-08-19

作者是一位Vim高手,为了处理纷繁复杂的个人财务数据,他放弃了笨拙的电子表格,选择使用Beancount——一个基于文本的记账工具。面对不同格式的银行对账单和大量未分类的内部转账记录,他巧妙地运用Vim宏,实现了自动化处理。文章详细描述了宏的编写过程,以及在处理过程中遇到的问题和解决方法,展现了作者精湛的Vim技巧和解决问题的创造性思维。最终,他将杂乱无章的财务数据整理成清晰易懂的Beancount账目,效率显著提升。

开发 Beancount

《多处理器编程艺术》的致命缺陷:忽略了futex

2025-08-19

作者对一本广受好评的多处理器编程教材《多处理器编程艺术》进行了批判性评价。文章的核心观点是该书忽略了futex这一现代并发编程的关键技术,导致书中内容过时且缺乏实用性。futex作为一种高效的互斥锁实现机制,显著提升了并发性能,已广泛应用于Linux、Windows和macOS等操作系统中。作者详细解释了futex的工作原理,并通过代码示例演示了如何基于futex构建高性能的互斥锁,包括自旋锁、非递归互斥锁和递归互斥锁。作者认为,该书未能涵盖futex等关键技术,使其缺乏实用价值,难以满足现代并发编程的实际需求。

树莓派Pico上的复古PC模拟器:Pico-286

2025-08-19
树莓派Pico上的复古PC模拟器:Pico-286

Pico-286项目令人惊叹地将80年代末90年代初的经典PC系统模拟到了树莓派Pico上。这个轻量级的项目不仅能让你体验复古计算的乐趣,还能学习底层系统模拟的知识。它支持多种Intel CPU(最高到286)、多种经典外设(如声卡、显示卡)、以及多种图形和文本模式。Pico-286甚至能模拟出老式显示器产生的色彩伪影效果!该项目开源且跨平台,可在树莓派Pico、Windows和Linux上运行。

开发

PyPI 通过域名过期检查增强账户安全

2025-08-19
PyPI 通过域名过期检查增强账户安全

为了防止域名复活攻击(一种供应链攻击,攻击者购买过期域名以接管 PyPI 帐户),PyPI 现在检查域名是否过期。此举通过取消验证与过期域名关联的电子邮件地址来增强帐户安全性,自 2025 年 6 月初以来,已取消验证超过 1800 个电子邮件地址。虽然并非完美解决方案,但这有效地堵塞了一个主要的攻击途径。建议用户添加第二个经过验证的邮箱地址以增强安全性。

巧妙利用snprintf避免缓冲区溢出

2025-08-19
巧妙利用snprintf避免缓冲区溢出

本文介绍了`snprintf`函数的一个鲜为人知的特性:它可以先探测格式化字符串所需的缓冲区大小,避免缓冲区溢出。通过两次调用`snprintf`,第一次传入`NULL`和0来获取所需大小,第二次再分配相应大小的缓冲区并进行格式化,有效地解决了手动计算缓冲区大小的繁琐和风险。作者还推荐了一个轻量级的头文件库,方便开发者使用。

开发 snprintf

释放WSL磁盘空间:手动和自动压缩指南

2025-08-19
释放WSL磁盘空间:手动和自动压缩指南

Windows Subsystem for Linux (WSL) 的虚拟磁盘会随着使用逐渐膨胀,占用大量磁盘空间。本文提供手动和自动两种方法来压缩 WSL 虚拟硬盘 (VHDX),释放宝贵的磁盘空间。手动方法详细讲解了使用 PowerShell 和 DiskPart 命令逐步压缩的过程;自动方法则通过提供一个 PowerShell 脚本,实现自动化压缩,只需一键运行即可完成。无论你选择哪种方法,都能有效解决 WSL 磁盘空间不足的问题,保持系统高效运行。

开发

告别代码补全噩梦:左到右编程范式

2025-08-19
告别代码补全噩梦:左到右编程范式

本文批判了Python等语言中声明式编程的低效性,例如列表推导式难以获得代码补全提示。作者提出,理想的编程方式应该是“左到右”的,程序在输入过程中始终保持有效状态,从而方便代码补全和错误检查。文章对比了Rust、Python和JavaScript代码示例,说明左到右编程如何提高代码可读性和开发效率,并最终倡导设计良好的API接口以提升开发体验。

开发

RainViewer API 服务迁移指南

2025-08-18
RainViewer API 服务迁移指南

历经十年风雨,RainViewer创始人Oleksii Schastlyvyi宣布将于2025年限制其API服务的运行。文章并非营销,而是为长期支持RainViewer的开发者社区提供迁移指南,介绍了五个可替代的API服务:Rainbow.ai(与RainViewer最相似,提供过去和现在的雷达数据瓦片)、OpenWeatherMap(开发者友好型,提供全面数据)、Meteoblue(高精度,尤其在欧洲)、Tomorrow.io(结合卫星数据,全球覆盖)和Xweather(专业级精度,数据来自Vaisala)。文章根据不同需求(技术匹配、预算、全球覆盖等)提供了迁移策略建议,并表达了对开发者社区的感谢。

FFmpeg汇编语言入门教程

2025-08-18
FFmpeg汇编语言入门教程

本教程将带你进入FFmpeg汇编语言编程的世界,开启一段充满挑战和成就感的编程之旅。你需要具备C语言(特别是指针)和高中数学基础。教程包含课程和作业(即将上传),学习结束后,你将能够为FFmpeg项目贡献代码。Discord服务器提供答疑:https://discord.com/invite/Ks5MhUhqfB

开发
1 2 21 22 23 25 27 28 29 213 214