分类: 开发

TB Tilde:LLVM 的颠覆性替代方案?

2025-01-24

Yasser 开发的 TB Tilde 是一款旨在替代 LLVM 的编译器后端库。它声称在编译速度和体积方面都优于 LLVM,预处理器速度是 Clang 的两倍。TB Tilde 采用“节点海”IR,拥有简单的类型系统和线程安全模块,支持 JIT 和 AOT 编译,甚至可以直接输出链接的可执行文件。目前,项目正积极开发中,计划在 2024 年 3 月实现 Cuik 编译器在 Windows 系统上的自托管,并逐步完善优化器。

开发 TB Tilde

用经典机器学习对抗愚笨的LLM搜索评判员

2025-01-24
用经典机器学习对抗愚笨的LLM搜索评判员

作者尝试用本地LLM作为搜索相关性评判员,代替昂贵的OpenAI服务。单个LLM判断结果不够准确,文章提出将多个LLM针对产品不同属性(名称、分类、描述等)的判断结果,结合传统机器学习方法(例如决策树)进行整合,提高最终判断的准确性。实验结果表明,这种方法在一定程度上能够预测人类的偏好,并能帮助理解人类标注背后的逻辑,为搜索引擎优化提供参考。

开发

自制编程语言Bolt:从零到LLVM编译器的旅程

2025-01-24
自制编程语言Bolt:从零到LLVM编译器的旅程

作者分享了其构建名为Bolt的Java风格并发面向对象编程语言的经验。这篇文章是系列文章的第一篇,介绍了构建编译器的动机、编译器的原理以及Bolt语言的特点,例如支持对象、类、继承、方法重写、并发和泛型等高级特性。作者将编译过程比作电报员将语音转换为摩尔斯码的过程,生动形象地解释了词法分析、语法分析、类型检查和代码生成等步骤。文章还探讨了静态类型和动态类型的优缺点以及LLVM在编译器中的作用。最终,Bolt编译器将代码编译成LLVM中间表示,再转换为机器码,并包含两个类型检查阶段以确保并发安全。

开发

150行Python代码构建全文搜索引擎

2025-01-24

本文介绍了如何用不到150行Python代码构建一个全文搜索引擎。作者首先下载了英文维基百科的摘要数据,然后使用倒排索引和词频-逆文档频率(TF-IDF)算法对数据进行索引和排序。整个过程包括数据准备、分词、过滤、索引构建以及搜索功能的实现,并解释了每个步骤的原理。最终实现了一个可以快速搜索和排序数百万文档的搜索引擎,虽然简化,但充分展现了全文搜索引擎的核心机制。

开发

Vim之死与新生:Bram Moolenaar逝世后Vim项目的延续

2025-01-24

Vim创始人Bram Moolenaar的离世给Vim社区带来了冲击,但其维护者们迅速重组,保证了项目的延续。Christian Brabandt接手维护,带领团队应对网站升级、安全漏洞修复等挑战,并逐步推进新功能开发,如XDG目录支持和Wayland支持。虽然面临一些争议,例如Tree-sitter集成,但Vim社区依然活跃,并持续为项目贡献力量。

开发

PostgreSQL中使用ColBERT重排序增强向量搜索

2025-01-24
PostgreSQL中使用ColBERT重排序增强向量搜索

传统的向量搜索依赖句子嵌入,但会丢失细粒度信息。ColBERT通过使用token级别的多向量表示文本,保留更多细微信息,提高搜索精度。然而,token级别的后期交互计算成本高。本文介绍了一种结合句子级向量搜索和ColBERT token级重排序的方法,利用PostgreSQL扩展VectorChord和pgvector实现。该方法先用句子嵌入进行快速检索,再用ColBERT对结果进行重排序,有效提升了搜索效果,在多个BEIR数据集上取得了显著改进。

开发 ColBERT

Arch Linux 极简配置指南:快速上手

2025-01-24

本指南提供一系列简洁实用的教程,帮助 Arch Linux 新用户快速搭建一个功能完备的工作环境。它并非照搬 ArchWiki 的冗长内容,而是以 i3 窗口管理器为核心,循序渐进地讲解网络连接、显示设置、USB 使用、复制粘贴等基本操作,让用户快速上手。指南还涵盖了多媒体控制、壁纸设置等实用技巧,并提供反馈渠道,方便用户参与改进。

AI不会终结软件行业:别听那些骗子

2025-01-24
AI不会终结软件行业:别听那些骗子

近期,许多人声称AI将取代软件开发者。但作者认为这是无稽之谈,软件开发的黄金时代才刚刚开始。AI工具虽然提升了开发效率(Jevons悖论),但这会解锁更多项目,而非减少工作岗位。即使AI能胜任部分工作,但软件开发并非只是写代码,它还包含沟通、设计、系统架构等,这些都需要人类参与。此外,AI的计算成本和应用范围限制了其取代人类的可能性。总而言之,AI将加速技术进步,带来经济增长,创造更多机会,软件开发者需要做的,是拥抱AI,学习新的工具和方法,不断提升自身技能。

开发

Linux 6.14内核支持新笔记本电脑上的微软Copilot键

2025-01-24

Linux 6.14内核新增对微软Copilot键的支持,该键常见于预装Windows的新款笔记本电脑上,用于启动微软Copilot AI助手或其他聊天软件。此更新通过修改atkbd键盘驱动程序,将F23键映射到Copilot快捷键(Meta+Shift+F23),解决了此前Linux系统无法识别该键的问题。此外,Linux 6.14还增强了游戏手柄支持,并对输入子系统进行了其他改进。

开发

告别bcachefs:一位用户的无奈之选

2025-01-23

Steinar Gunderson在使用了一年bcachefs文件系统后,最终决定迁移到XFS。原因在于他对bcachefs的未来发展缺乏信心。虽然bcachefs具有压缩和混合SSD/HDD的优势,但其开发者Kent Overstreet的强势态度、对Debian等发行版的敌意以及诸多未修复的bug(包括灾难性数据丢失bug)让他无法忍受。Gunderson表示,报告bug的经历非常糟糕,开发者更关注与Debian的争论而非解决问题。最终,他选择回归稳定可靠的XFS,放弃了bcachefs带来的压缩优势,但这对他来说是值得的。

开发

GitHub:表面稳定分形抖动技术

2025-01-23
GitHub:表面稳定分形抖动技术

Rune Skovbo Johansen 开发了一种新颖的表面稳定分形抖动技术,该技术使3D场景中的抖动图案能够粘附在表面上,并保持其在屏幕上的大小和间距相对恒定,即使表面移动也如此。该GitHub项目包含Unity示例项目、着色器和纹理源文件,并详细介绍了抖动参数和全局选项,例如径向补偿和量化层。该技术通过动态添加或删除点来实现,并提供不同大小的3D纹理以供选择。该项目采用MPL-2.0许可证,鼓励社区共享改进。

开发 抖动技术

Polars vs Pandas: 数据处理利器大比拼

2025-01-23
Polars vs Pandas: 数据处理利器大比拼

本书对标Pandas,详细对比了Polars数据处理库的特性。作者认为Polars更直观、高效,并通过大量示例展示了Polars的优势,涵盖索引、方法链、性能、数据重塑、时间序列和扩展性等方面。Polars在许多操作中都显著快于Pandas,且代码更简洁易懂。本书适合有一定数据处理经验的读者,尤其熟悉Pandas的读者能更快上手。

开发

告别繁琐,单命令唤醒你的设备:WOL工具「wol」

2025-01-23
告别繁琐,单命令唤醒你的设备:WOL工具「wol」

「wol」是一个强大的Wake-On-LAN (WOL) 工具,它可以通过命令行界面或网页界面轻松唤醒你的网络设备。它支持配置多个设备,并提供简洁易用的列表查看和一键唤醒功能。无论你是通过CLI命令还是图形化界面,都能高效地管理和唤醒你的电脑或服务器。此外,它还支持Docker部署,方便快捷。

开发 Wake-On-LAN

追求无bug编码:小团队和初创公司的可行之道

2025-01-23
追求无bug编码:小团队和初创公司的可行之道

一位资深程序员分享了其在Telegram和多个项目中坚持“无bug编码”的经验。他认为,虽然追求完美代码看似低效,但长远来看,它能避免后期维护的巨额成本和团队倦怠。文中以自身经历和项目案例论证,指出在注重产品速度的同时,更应注重代码质量和可维护性,从而实现高效开发和高质量产品。

开发

浏览器端AI视频制作工具包开源

2025-01-23
浏览器端AI视频制作工具包开源

一个名为video-starter-kit的开源项目,提供了一个基于浏览器的AI视频制作工具包。它使用Next.js、Remotion和fal.ai,集成了Minimax、Hunyuan和LTX等AI模型,支持浏览器原生视频处理、多片段合成、音频轨道集成、语音合成以及扩展视频时长处理等功能。开发者可直接使用其提供的UI组件和TypeScript支持快速构建AI视频应用。

开发 AI视频

llama.vim: 基于LLM的Vim代码补全插件

2025-01-23
llama.vim: 基于LLM的Vim代码补全插件

llama.vim是一款强大的Vim插件,利用本地运行的LLM模型提供代码和文本的智能补全功能。它支持多种LLM模型,并通过巧妙的上下文管理机制,即使在低端硬件上也能高效运行。插件易于安装和配置,并提供多种选项自定义补全体验,极大地提升了编程效率。

开发 Vim插件

TMSU:基于标签的虚拟文件系统,告别文件系统层次结构的烦恼

2025-01-23

TMSU 是一款用于文件标记的工具,它提供了一个简单的命令行工具来应用标签,以及一个虚拟文件系统,允许你从任何其他程序中获得基于标签的视图。TMSU 不会更改你的文件,它维护自己的数据库,并基于你设置的标签提供额外的视图。你可以使用命令行工具标记和查询文件,并挂载和浏览虚拟文件系统。它支持基本的逻辑运算符,允许你进行复杂的查询。此外,TMSU 还提供了一个虚拟文件系统,允许你通过创建和删除目录来管理标签。

文件系统:比你想象的更危险

2025-01-23

一次Deconstruct 2019的演讲揭示了文件系统中令人震惊的事实:从文件API的不一致和难以正确使用,到文件系统本身存在的严重bug以及磁盘的高错误率,数据损坏无处不在。演讲者深入探讨了文件写入的原子性问题,以及各种文件系统模式(如ext3/ext4的data=journal, ordered, writeback)的差异带来的挑战。即使是经验丰富的程序员,也难以避免犯错,导致数据丢失或损坏。演讲者还分析了流行的数据库和版本控制系统中存在的错误,并建议使用数据库替代文件来提高数据可靠性。

Bunster:将Shell脚本编译成静态二进制文件

2025-01-23
Bunster:将Shell脚本编译成静态二进制文件

Bunster项目旨在将shell脚本编译成高效的静态二进制文件,提升脚本的可移植性和安全性。它并非简单地打包脚本,而是利用Go语言编译器将脚本转换成原生机器码,从而实现跨平台运行(目前仅支持Unix)。Bunster支持Bash脚本,并计划未来支持更多shell,并添加模块系统、静态资源嵌入、密码和过期锁等功能。项目目前处于早期开发阶段,但已实现许多核心功能,并遵循SemVer版本控制。

开发 静态编译

libmodulor:面向业务的TypeScript应用开发库

2025-01-23
libmodulor:面向业务的TypeScript应用开发库

libmodulor是一个面向业务的TypeScript库,旨在加速构建高质量应用。它采用分层架构(UseCase、App、Product、Target),强调类型安全和端到端测试。开发者可以使用自己偏好的数据库、前端框架、服务器和工具,libmodulor提供高层级原语,避免样板代码和供应商锁定。目前仍处于积极开发阶段,但已在试点项目中使用。

构建小型AI应用的七个教训

2025-01-23
构建小型AI应用的七个教训

作者在过去一年中构建了一个AI助手,总结了七个关键经验。首先,他发现“扩展性”问题比预期更早出现。其次,AI编程是一个随机过程,需要大量实验调整提示、微调、偏好调整和超参数。数据质量至关重要,构建高质量数据集和处理流程耗时巨大。模型评估也同样重要,简单的验证集难以覆盖真实场景的边缘情况。信任和质量是首要问题,持续的实验和评估必不可少。训练流程是核心知识产权,不断迭代优化。最后,作者建议不要过度依赖AI库,因为它们可能存在实现不完整或生态系统集成差的问题,直接基于底层抽象进行开发更可靠。

开发

微软安全扫描器破坏单次使用链接的隐性规范

2025-01-23
微软安全扫描器破坏单次使用链接的隐性规范

博主Bert Hubert发现微软等电子邮件安全扫描器会访问邮件中的链接并执行其中的JavaScript代码,包括发送POST请求。这打破了长期以来POST请求不应产生副作用的规范,导致单次使用登录链接失效。文章探讨了这一问题对网站开发的影响,并呼吁大型科技公司在改变网络规范时应更加透明。

Xcode 16 的本地包依赖性问题迫使开发者使用双编辑器

2025-01-23
Xcode 16 的本地包依赖性问题迫使开发者使用双编辑器

开发者Christian Tietze在使用Xcode 16开发Swift Package时遇到了严重问题。Xcode 16改变了引用本地包的方式,导致文件操作、测试运行等功能失效。为了解决这个问题,他不得不同时使用Xcode和Emacs,用Xcode编译运行应用项目,用Emacs编辑和测试Swift Package。这篇文章吐槽了Xcode 16的糟糕更新,以及苹果公司强制升级软件的策略,并建议开发者学习使用备用编辑器。

开发 Swift Package

深入浅出压缩算法:从DEFLATE到ZSTD

2025-01-23

作者在实现MonKafka的过程中,深入研究了Kafka支持的四种压缩算法:GZIP、Snappy、LZ4和ZSTD。文章详细解释了这些算法的原理,包括无损压缩、有损压缩、游程编码、Lempel-Ziv算法、霍夫曼编码等,并深入剖析了DEFLATE算法的实现细节,包括LZ77、霍夫曼编码、哈希表等。此外,文章还比较了Snappy、LZ4和ZSTD算法的性能,并简要介绍了算术编码和FSE算法。最终,作者总结了压缩算法的核心思想:去除数据冗余,降低熵,提取信息。

开发 DEFLATE ZSTD

使用OpenTelemetry调试Next.js的React服务器组件

2025-01-23
使用OpenTelemetry调试Next.js的React服务器组件

React服务器组件(RSC)提升了性能,但调试变得困难。本文介绍如何使用OpenTelemetry这个强大的可观测性框架来追踪Next.js应用中RSC的活动。OpenTelemetry能追踪请求、收集指标和聚合日志,帮助开发者洞察服务器端组件的执行情况,包括生命周期事件、数据获取操作和渲染性能。文章还提供了一个实际案例,展示了如何使用OpenTelemetry来优化一个加载大量GitHub API数据的页面,并说明了如何安装必要的包、创建instrumentation.js文件以及配置数据发送目标。此外,文章还讲解了如何创建自定义Span来获取更细粒度的洞察力。

开发

Bun 1.2:全栈JavaScript运行时的重大更新

2025-01-23

Bun 1.2 版本对全栈 JavaScript 和 TypeScript 应用程序的构建和测试工具包进行了重大更新。此版本增加了对 Node.js 的兼容性,内置了 S3 对象存储 API (Bun.s3) 和 Postgres 客户端 (Bun.sql),并改进了 bun install 命令,使其使用基于文本的锁文件 bun.lock。此外,Bun 1.2 还显著提升了 Express 的速度,并添加了对 node:http2、node:dgram、node:cluster 和 node:zlib 等 Node.js 模块的支持,以及对使用 V8 API 的 C++ 插件的改进。

(bun.sh)
开发

Rust 实时安全分析器:RTSan-Standalone-rs

2025-01-23

本文介绍了 `rtsan-standalone-rs`,一个用于 Rust 的实时安全分析器。它基于 LLVM 的 RealtimeSanitizer (RTSan),能够检测实时编程中难以发现的违规行为,例如内存分配。作者克服了 RTSan 原本仅支持 C++ 的限制,创建了这个易于使用的 Rust 包装器,并详细解释了其实现原理和使用方法,包括 `nonblocking`、`blocking` 和 `no_sanitize_realtime` 宏的使用。该库有助于开发者编写更安全可靠的实时程序,避免因内存分配等操作导致的计时故障。

开发

帕累托法则在科技界的误用:80%的努力只换来20%的产品?

2025-01-23
帕累托法则在科技界的误用:80%的努力只换来20%的产品?

游戏开发中,“垂直切片”的理念强调完整性,而科技界流行的“最小可行产品”(MVP)却只追求快速迭代。作者认为,过度强调帕累托法则(20%的努力产生80%的结果),导致许多科技产品停留在粗糙的MVP阶段,缺乏最终的打磨和完善,用户体验大打折扣。这不仅体现在许多应用和软件上,甚至也影响了人工智能领域,例如自动驾驶和图像生成等,这些技术虽然初具雏形,但距离实用化仍有很大差距。作者呼吁科技界应该转变观念,重视产品的完整性和用户体验,而非仅仅追求快速迭代和融资。

开发 MVP

无需Edge浏览器或API密钥,Python调用微软Edge语音合成服务

2025-01-23
无需Edge浏览器或API密钥,Python调用微软Edge语音合成服务

edge-tts是一个Python库,允许开发者直接在Python代码中或使用命令行工具`edge-tts`和`edge-playback`调用微软Edge的在线文本转语音服务,无需安装Edge浏览器或Windows系统,也无需API密钥。该库支持多种语言和语音,并允许自定义语音速度、音量和音调。开发者可以使用pip安装,并通过简单的命令行参数或Python API进行操作。

开发

System Informer:你的系统资源监控和调试利器

2025-01-23

System Informer是一款免费、强大的多功能工具,可帮助你监控系统资源、调试软件和检测恶意软件。它提供图表和统计数据,让你快速追踪资源占用过高的进程;支持搜索文件句柄和DLL;查看详细的系统活动概览、磁盘和网络使用情况;甚至可以创建、编辑和控制服务。此外,它还支持GPU使用情况监控、堆栈跟踪以及亮暗主题切换,是系统管理员和程序员的得力助手。

1 2 178 179 180 182 184 185 186 213 214