分类: 开发

告别向量数据库?用Parquet和Polars高效处理文本嵌入

2025-02-24
告别向量数据库?用Parquet和Polars高效处理文本嵌入

本文介绍了一种无需向量数据库即可高效处理文本嵌入的方法。作者利用Parquet文件存储包含Magic: The Gathering卡牌嵌入及其元数据的表格数据,并使用Polars库进行快速相似性搜索和数据过滤。Polars的零拷贝特性和对嵌套数据的良好支持,使得该方法在速度和效率上均优于传统的CSV或Pickle方法,即使在对数据集进行过滤的情况下也能保持极高的性能。作者还比较了其他存储方法,如CSV、Pickle和NumPy,并指出Parquet结合Polars是处理中等规模文本嵌入的最佳选择,仅在处理超大规模数据时才需考虑向量数据库。

开发

Neut:一种具有静态内存管理的函数式编程语言

2025-02-24

Neut 是一种具有静态内存管理的函数式编程语言,它巧妙地结合了全 λ 演算支持、可预测的自动内存管理以及无需类型系统注解等特性。不同于传统的垃圾回收机制,Neut 采用类型导向的方法处理资源,通过将类型转换为可丢弃/复制值的函数,编译器确保每个变量只使用一次。即使需要复制数据,Neut 也通过模态逻辑中的 T-necessity 运算符来避免不必要的开销,类似于 Rust 中的借用机制。此外,Neut 还支持 LLVM IR 和二进制编译,并内置了 LSP 服务器、代码格式化工具以及类似脚本语言的快速原型设计体验。其模块系统也别具特色,使用 tarball 的摘要来区分模块,并利用版本信息定义模块标识。

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

2025-02-24
arXivLabs:与社区协作者共建实验性项目

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

开发

随机微积分入门:从离散到连续的随机世界

2025-02-24

本文用通俗易懂的方式介绍随机微积分,从帕斯卡三角形和二项分布出发,逐步引出布朗运动和伊藤积分的概念。文章深入浅出地解释了布朗运动的物理意义和数学推导,并介绍了伊藤引理和随机微分方程,最后还探讨了斯特拉托诺维奇微积分。文中包含丰富的图表和代码示例,适合对随机微积分感兴趣的读者入门学习。

DOS 3.3 SYS.COM 命令的隐藏Bug:NetDrive 磁盘镜像损坏之谜

2025-02-24

本文讲述了作者追踪一个DOS 3.3系统命令`SYS.COM`的Bug的故事。该命令用于将引导加载程序复制到磁盘,但在与NetDrive虚拟磁盘镜像一起使用时会导致镜像损坏。通过仔细分析,作者发现`SYS.COM`在使用通用IOCTL调用获取磁盘参数时,没有检查返回代码。当调用失败(例如NetDrive驱动程序不支持该功能)时,`SYS.COM`会错误地写入垃圾数据到磁盘的引导扇区,从而破坏磁盘镜像。该Bug只在某些类型的磁盘镜像(例如硬盘镜像)上出现,因为DOS会尝试获取磁盘几何信息,而软盘镜像则不会。作者最终定位了Bug的根源,并解释了其出现的原因和条件。

开发

Ente:自托管Google Photos替代品,掌控你的隐私

2025-02-24
Ente:自托管Google Photos替代品,掌控你的隐私

本文介绍了Ente,一个开源的Google Photos替代品,并详细讲解了如何在Kubernetes集群中部署其服务器端和使用GitHub Pages托管前端。文章涵盖了部署所需的代码、配置文件以及数据库(Cloudnative-PG)的设置,并解释了如何从AWS Parameter Store获取密钥。虽然技术性较强,但对于希望掌控自身隐私并熟悉Kubernetes的用户而言,这是一个极佳的方案。文中还包括了使用GitHub Actions构建自定义Docker镜像的步骤以及使用Terraform管理GitHub仓库的示例。

开发

Emacs 30.1 重磅发布:原生编译、Android 支持及更多改进

2025-02-24
Emacs 30.1 重磅发布:原生编译、Android 支持及更多改进

Emacs 30.1 版本重磅发布,带来了大量新特性和改进。最引人注目的是原生编译默认启用,显著提升了性能;Emacs 现在正式支持 Android 系统,并针对触摸屏进行了优化。此外,还包含内置 JSON 解析器、改进的 minibuffer 完成、增强的 Org 模式 URI 协议支持以及诸多其它提升用户体验的功能。这个版本是 Emacs 的一个巨大飞跃,值得所有用户升级体验。

开发 原生编译

Rust进军Linux内核:进展缓慢引发的争议

2025-02-24
Rust进军Linux内核:进展缓慢引发的争议

Rust,一种比C语言更安全的现代编程语言,其融入Linux内核的进程远比预期缓慢。尽管2022年Linus Torvalds批准了支持Rust代码的请求,但由于老牌内核开发者对学习新语言的抗拒以及技术之外的阻碍,进展一直停滞不前。近期,Asahi Linux项目负责人Hector Martin因Rust代码的整合难题而辞职,引发了激烈的讨论。Torvalds虽然认可Rust的必要性,但也强调不会强制开发者使用,最终的解决方案或许不会非黑即白。

开发

从零构建BitTorrent客户端:一个周末项目

2025-02-24

本文介绍了一个构建BitTorrent客户端的周末项目。文章详细解释了BitTorrent协议的工作原理,包括寻找种子、解析.torrent文件(Bencode编码)、从追踪器获取对等节点、与对等节点进行握手、以及下载文件片段等步骤。作者使用了Go语言,并提供了一些关键代码片段,例如Bencode解析器、追踪器请求构建器、消息解析器和并发下载管理。文章还讨论了Bitfield、块请求和流水线等技术细节,并强调了并发处理和状态管理的重要性。虽然文章省略了一些代码细节,但它为读者提供了一个清晰的构建BitTorrent客户端的路线图。

开发

开源多物理场仿真工具openCFS:二十年磨一剑

2025-02-24

openCFS是一款基于有限元法的开源多物理场建模与仿真工具,历经二十年研发,其核心技术已广泛应用于科研和工业领域。它支持多种物理场及其耦合、非一致网格技术和结构优化等先进功能,并具备灵活的数据交换、可脚本化的XML输入和强大的内置第三方库。用户可通过丰富的示例文档、测试套件和大学课程学习资料快速上手。活跃的社区和EnSimTech公司的商业支持,进一步确保了openCFS的持续发展和应用。

为什么 target="_blank" 需要下划线?

2025-02-24

你是否好奇为什么在链接中使用 `target="_blank"` 打开新标签页需要下划线?这要追溯到 HTML5 之前,那时开发者使用 `` 创建类似单页应用的功能,将窗口分割成多个框架,每个框架都有唯一的 ID。点击链接时,浏览器需要知道将内容加载到哪个框架中,`target` 属性就派上用场了。`_blank` 并非框架名称,而是告诉浏览器在新窗口(当时浏览器不支持标签页)中打开链接,下划线表示这是一个特殊值而非框架名称。现在 `` 已被弃用,但 `_blank` 的用法沿袭至今。

JSON:Unix系统中机器可读输出的最佳实践

2025-02-24

作者通过在Postfix邮件队列中删除邮件的经历,阐述了使用JSON作为机器可读输出格式的优势。JSON并非完美,但其在Unix系统中拥有诸多实用优点:清晰易懂、兼容性强、工具支持丰富,且易于转换为其他格式。作者认为,对于新程序,仅使用JSON作为机器可读输出格式是最便捷的选择,避免了自定义格式设计的复杂性,并促进了Unix程序间的互操作性。

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

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

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

开发

OBS Studio与Fedora Flatpak之争:握手言和

2025-02-24
OBS Studio与Fedora Flatpak之争:握手言和

OBS Studio团队和Fedora Linux开发者之间围绕Fedora Flatpak版本的OBS Studio引发的冲突已得到解决。最初的法律威胁使得情况一度紧张,但双方最终进行了对话。双方达成了共识,OBS Studio团队不再要求移除IP或重新命名Fedora Flatpak提供的OBS Studio应用程序。未来,双方将继续合作解决一些技术问题,例如Qt运行时回归、错误报告机制以及一些与硬件加速、X11回退和插件相关的问题。

开发

OpenAI承认:即使是最先进的AI模型也无法取代人类程序员

2025-02-24
OpenAI承认:即使是最先进的AI模型也无法取代人类程序员

OpenAI的一篇新论文揭示,即使是最先进的大型语言模型(LLM),例如GPT-4和Claude 3.5,也无法胜任大多数软件工程任务。研究人员使用一个新的基准测试SWE-Lancer,包含1400多个Upwork上的软件工程任务进行评估。结果显示,这些模型只能解决一些表面的问题,无法找到大型项目中的bug或根本原因。虽然LLM速度很快,但其准确性和可靠性不足以取代人类程序员,这与OpenAI CEO Sam Altman的预测形成对比。

开发

高效滑动窗口算法:用函数式队列实现O(n)时间复杂度

2025-02-24

本文介绍了一种利用函数式编程技巧高效解决滑动窗口问题的算法。通过构建基于两个堆栈的函数式队列,并利用幺半群的特性,算法能够在O(n)时间内计算滑动窗口的各种统计量,例如最大值、最小值或总和。文中详细讲解了幺半群注释栈和队列的实现,并给出了具体的代码示例,最后提出了几个相关的算法挑战。

开发 滑动窗口

LeetArxiv: 基于论文的LeetCode,将Arxiv论文转换为可实践的编程指南

2025-02-24
LeetArxiv: 基于论文的LeetCode,将Arxiv论文转换为可实践的编程指南

LeetArxiv是一个面向希望从事研究工作的程序员的平台,它提供基于Arxiv论文的每周实践编程指南。以一篇关于AAN离散余弦变换的论文为例,LeetArxiv提供了一个分步骤的C语言实现,并讲解了其优化过程。该论文总结了1981年一篇关于快速DCT-SQ图像方案的论文中的优化方法,涵盖了DCT-II的推导、AAN方法的流程图及代码实现,并解释了其优化的原理:减少耗时的余弦计算,利用对称性,预计算常量以及并行计算的可能性。

FlashMLA:Hopper GPU上的高效MLA解码内核

2025-02-24
FlashMLA:Hopper GPU上的高效MLA解码内核

FlashMLA是一个针对Hopper GPU优化的高效MLA解码内核,专为可变长度序列服务而设计。它在H800 SXM5上实现了高达3000 GB/s的内存受限配置和580 TFLOPS的计算受限配置的性能(使用CUDA 12.6)。FlashMLA支持BF16精度和64块大小的分页kvcache。其灵感来自FlashAttention 2&3和cutlass项目。

震惊!我发现了一个排序函数的BUG!

2025-02-24
震惊!我发现了一个排序函数的BUG!

作者讲述了他多年编程生涯中一个令人难以置信的经历:他发现了一个JavaScript内置`sort()`函数的bug!这个bug导致排序结果错误,困扰了他许久。最终,他向Code Studio团队报告了这个bug,并得到了迅速的回应和修复。这个故事生动地说明了,即使是看似完美的系统软件,也可能存在bug,而程序员应具备怀疑一切的精神,并且要坚持不懈地寻找问题的根源,而不是盲目地归咎于编译器或系统。

开发 sort函数

突破线性时间算法的限制:亚线性时间算法的崛起

2025-02-24

长期以来,线性时间算法被视为解决问题的最高标准。然而,随着海量数据集的出现,亚线性时间算法的研究越来越受到关注。亚线性时间算法只读取极小部分输入数据,这听起来很不可思议。虽然对于一些问题存在确定的亚线性时间算法,但大多数情况下算法需要随机化并给出近似解。近年来,研究人员在各种问题上取得了突破,包括经典优化问题和属性测试。利用诸如Szemeredi正则引理和低秩矩阵逼近等技术,亚线性时间算法正逐渐展现其潜力,但该领域仍有许多未解之谜等待探索。

Rust分布式任务调度器HyperQueue中的一个奇葩Bug

2025-02-24

作者在Rust编写的分布式任务调度器HyperQueue中发现了一个奇特的bug:任务在运行一段时间后会被终止,尤其当任务睡眠时间超过10秒时。通过`git bisect`定位到问题代码,发现是将进程创建操作移到`tokio::task::spawn_blocking`中导致的。原因是`PR_SET_PDEATHSIG`设置的父进程死亡信号,在`spawn_blocking`后,目标变成了工作线程,而该线程会在几秒钟空闲后被`tokio`回收,从而导致任务收到`SIGTERM`信号被终止。最终,作者通过回滚代码修复了bug,并补充了相关测试用例。

开发 HyperQueue

告别Disqus,用Mastodon打造博客评论系统

2025-02-23

作者厌倦了Disqus的广告和追踪,决定寻找替代方案。最终选择利用Mastodon的API构建一个基于Mastodon的评论系统。文章详细描述了整个过程,包括获取Mastodon post ID,编写JavaScript代码从API获取评论数据,生成HTML并嵌入到静态网站中,以及处理媒体附件和黑名单功能等。作者还分享了其静态网站生成器的工作原理以及如何将Mastodon post ID嵌入HTML。这是一个关于如何利用开源技术构建个性化博客评论系统的实用指南。

开发

基于Google翻译的欧洲词汇翻译地图

2025-02-23
基于Google翻译的欧洲词汇翻译地图

这是一个简单的网页工具,利用Google翻译API将英文单词翻译成多种欧洲语言。用户输入一个或两个英文单词,即可查看翻译结果。该项目灵感来源于Reddit用户Bezbojnicul的词源地图,使用D3.js、Natural Earth地图数据和Google翻译API构建。需要注意的是,翻译结果可能不准确,且翻译数据已停止更新(约2014年)。

开发 翻译工具

mdq:Markdown 的 jq,轻松解析 Markdown 文档

2025-02-23
mdq:Markdown 的 jq,轻松解析 Markdown 文档

mdq 是一款类似于 jq 用于 JSON 的命令行工具,旨在简化 Markdown 文档的解析。它允许用户轻松提取文档的特定部分,例如 GitHub PR 中的待办事项清单。mdq 支持多种选择器,涵盖标题、列表、链接、图片、代码块等元素,并支持正则表达式匹配。其语法设计与 Markdown 语法相似,易于上手。通过管道操作符,用户可以轻松组合多个过滤器,实现复杂的文档解析任务。

开发

Clojure:一个小众语言的强大之处

2025-02-23
Clojure:一个小众语言的强大之处

本文探讨了Clojure编程语言的优势,一家名为Gaiwan的Clojure咨询公司分享了他们选择Clojure的原因。他们认为Clojure拥有高效的开发效率、出色的长期可维护性以及积极的思想文化。文章重点介绍了Clojure的交互式开发、稳定性、信息系统知识表示能力、函数式编程风格、并发处理机制、局部推理能力、易于测试性以及积极的招聘效应等方面。此外,文章还强调了Clojure的灵活性和与Java的互操作性。总而言之,Clojure虽小众,但其独特的优势使其在特定领域具有极强的竞争力。

开发

利用AI代理和SQD数据湖解锁链上数据的潜力

2025-02-23
利用AI代理和SQD数据湖解锁链上数据的潜力

Subsquid推出了一个新的ElizaOS插件,它利用SQD数据湖为AI代理提供链上数据。该插件提供ERC20转账和Uniswap交换解码事件作为提供者和操作。代理可以使用自然语言查询数据,并以JSON、CSV和Parquet格式导出结果。这篇文章展示了一个名为Cryo的CLI工具的简化版本,它使用该插件来提取链上数据,并讨论了未来改进的可能性,例如多链支持和改进的查询体验。

WhiteSur:为Linux GTK桌面打造macOS风格主题

2025-02-23
WhiteSur:为Linux GTK桌面打造macOS风格主题

WhiteSur是一个让你的Linux GTK桌面拥有macOS般外观的主题。它提供丰富的自定义选项,包括颜色、不透明度、窗口控制按钮样式、Nautilus样式以及Gnome Shell扩展的调整。安装简单,只需运行安装脚本,即可轻松改变你的桌面风格。此外,它还支持对GDM和Firefox主题的自定义,并提供针对Flatpak应用的主题修复方案,即使是Libadwaita也能够应用主题。想体验macOS般流畅的Linux桌面吗?WhiteSur值得一试!

PropRise 寻找创始工程师:构建百万级房产数据平台

2025-02-23
PropRise 寻找创始工程师:构建百万级房产数据平台

PropRise 正在寻找一位经验丰富的全栈工程师作为创始工程师,负责构建和维护其快速增长的平台。该平台处理数百万条房产记录,需要构建强大的后端数据系统和用户友好的前端界面。候选人需要具备全栈开发经验、可扩展数据密集型系统构建能力以及快速迭代和部署的能力。公司使用Typescript、Next.js、React、Postgres和GCP等技术栈。这是一个充满挑战和机遇的职位,适合那些喜欢快速迭代、解决复杂问题并对AI和数据质量充满热情的工程师。

开发

Directus:无需迁移的实时API和应用管理面板

2025-02-23
Directus:无需迁移的实时API和应用管理面板

Directus是一个用于管理SQL数据库内容的实时API和应用程序面板。它可以快速地在任何SQL数据库之上构建一个Node.js API,支持PostgreSQL、MySQL等多种数据库,无需迁移。Directus提供本地部署、内部部署和云服务三种方式,并具有高度的可扩展性和易于使用的无代码Vue.js应用。其商业模式为:年营收或融资额低于500万美元的组织可免费使用;超过500万美元的组织则需要商业许可证。

开发
1 2 152 153 154 156 158 159 160 213 214